{"version":3,"file":"static/js/main.bc9355c7.js","mappings":"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A,YACA,aACA,eACA,eACA,wBACA,cACA,YACA,cACA,WACA,oBACA,YACA,gBACA,aACA,cACA,cACA,OACA,iBACAA,KAAK,KAET,IAAK,SACH,MAAO,CACL,KACA,sBACA,SACA,OACA,gBACA,WACA,gBACA,cACA,cACA,YACA,aACA,eACA,cACA,qBACA,OACA,iBACAA,KAAK,KAET,IAAK,eACH,MAAO,CACL,KACA,sBACA,SACA,QACA,gBACA,WACA,gBACA,cACA,cACA,YACA,aACA,eACA,cACA,qBACA,OACA,iBACAA,KAAK,KAET,IAAK,WACH,MAAO,CACL,KACA,sBACA,SACA,OACA,gBACA,WACA,gBACA,cACA,gBACA,YACA,aACA,eACA,cACA,OACA,iBACAA,KAAK,KAET,IAAK,WACH,MAAO,CACL,KACA,sBACA,SACA,QACA,gBACA,WACA,gBACA,OACA,cACA,iBACA,YACA,gBACA,aACA,aACA,eACA,eACAA,KAAK,KAET,IAAK,cACH,MAAO,CAAC,KAAM,OAAQ,mBAAoB,aAAc,iBAAiBA,KAAK,KAEhF,IAAK,OACH,MAAO,CACL,KACA,sBACA,OACA,QACA,gBACA,WACA,cACA,WACA,UACA,SACA,aACAA,KAAK,KAET,IAAK,SACH,MAAO,CACL,KACA,sBACA,SACA,WACA,gBACA,WACA,gBACA,cACA,gBACA,YACA,aACA,eACA,cACA,QACAA,KAAK,KAET,IAAK,WACH,MAAO,CACL,KACA,QACA,UACA,oBACA,SACA,YACA,gBACA,cACA,gBACA,cACA,sBACA,aACA,eACA,YACA,eACAA,KAAK,KAET,QACE,OAEN,EAEM6nJ,GAAmB,SAACp/K,GAA6B,SAAAtG,OAAQuwE,GAAmBjqE,GAAI,KAAAtG,OAAIsG,EAAIqD,GAAE,EAEnF2c,GAAyB,SAAChgB,GAAgC,IAADq/K,EACpE,OAAuD,QAAhDA,EAAC/qL,aAAa64I,QAAQusC,WAA0B,IAAA2F,EAAAA,EAAI,IAAI34K,SAAS04K,GAAiBp/K,GAC3F,EAEaigB,GAAsB,SAACjgB,GAAgC,IAADs/K,EACjEhrL,aAA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AChDrqe,EAAQqqe,aAAe,IAAIvrzB,IAAI,CAC3B,WACA,cACA,eACA,eACA,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,YACFx5B,KAAI,SAAU4hC,GAAO,MAAO,CAACA,EAAItG,cAAesG,EAAM,KACxD84U,EAAQoqe,eAAiB,IAAItrzB,IAAI,CAC7B,gBACA,gBACA,gBACA,gBACA,cACA,WACA,gBACA,kBACA,WACA,cACA,WACA,oBACA,gBACA,eACA,mBACA,YACA,aACA,WACA,eACA,oBACA,eACA,cACA,cACA,mBACA,YACA,aACA,aACA,sBACA,mBACA,eACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,OACA,OACA,cACA,YACA,qBACA,mBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,UACA,aACA,mBACA,mBACA,cACFx5B,KAAI,SAAU4hC,GAAO,MAAO,CAACA,EAAItG,cAAesG,EAAM,yCCrGxD,IAAI8pJ,EAAYl5L,MAAQA,KAAKk5L,UAAa,WAStC,OARAA,EAAWvsJ,OAAOwsJ,QAAU,SAAS7nJ,GACjC,IAAK,IAAI90C,EAAG+T,EAAI,EAAGkkB,EAAIj0B,UAAUyC,OAAQsN,EAAIkkB,EAAGlkB,IAE5C,IAAK,IAAIs3F,KADTrrG,EAAIgE,UAAU+P,GACOo8B,OAAO9pB,UAAU8lJ,eAAe7qK,KAAKtB,EAAGqrG,KACzDv2D,EAAEu2D,GAAKrrG,EAAEqrG,IAEjB,OAAOv2D,CACX,EACO4nJ,EAAS34L,MAAMP,KAAMQ,UAChC,EACI0ie,EAAmBlje,MAAQA,KAAKkje,kBAAqBv2b,OAAOivG,OAAU,SAAS1qG,EAAGx0C,EAAGy9L,EAAGgpS,QAC7Ej9d,IAAPi9d,IAAkBA,EAAKhpS,GAC3B,IAAIipS,EAAOz2b,OAAOC,yBAAyBlwC,EAAGy9L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E,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAA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AC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,KAAK,UAAU,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,eAAe,CAAC,EAAE,YAAY,CAAC,EAAE,yBAAyB,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,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zD,EAAW,YAAY,WACpC,OAAOnp2B,KAAK0g2B,MAAM+L,UAAUzs2B,KAAK6mO,IACnC,IAEAsioB,EAAUtm1B,UAAUwq1B,QAAU,WAC5B,OAAOrt2B,KAAK+r2B,WAAW1o2B,OAAOrD,KAAKot2B,WACrC,EAEAjE,EAAUtm1B,UAAU6sK,MAAQ,WAC1B,OAAOk8O,EAAM67L,OAAOznmB,KAAKqt2B,UAAW,OAAOxlvB,aAC7C,EAEArhD,EAAO0hT,QAAUihf,aCjEjB3iyB,EAAO0hT,QAAU,CACf05e,QAAS,CACPl5wB,KAAM,EACN1gB,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAIN85xB,IAAK,CACHrhP,IAAK,EACLz4iB,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA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","sources":["assets/icons/ClapFilled.svg","assets/icons/ClapOutlined.svg","assets/icons/ClapOutlinedBlack.svg","assets/icons/ClapOutlinedWhite.svg","assets/icons/DownCaret/DownCaret.svg","assets/icons/ExternalLink.svg","assets/icons/FJ/logo-rounded.svg","assets/icons/GetFeedbackWhite.svg","assets/icons/Info.svg","assets/icons/LeftArrow.svg","assets/icons/LinkedIn.svg","assets/icons/Menu/MenuNavy.svg","assets/icons/RightArrow.svg","assets/icons/Salesforce.svg","assets/icons/Sidebar/FJLogo-CompanyName.svg","assets/icons/Sidebar/FJLogo.svg","assets/icons/StarFilledYellow.svg","assets/icons/StarOutline.svg","assets/icons/chorus.svg","assets/icons/chorusThumbnail.svg","assets/icons/clari.svg","assets/icons/edit-drive.svg","assets/icons/gong.svg","assets/icons/gongThumbnail.svg","assets/icons/lighBlueSparkles.svg","assets/img/empty-content.svg","assets/img/salesloft.svg","assets/img/zoom.svg","App.tsx","components/Auth/LinkedinLogin.tsx","components/Auth/Login.tsx","components/Classroom/ArchiveBanner.tsx","components/Common/AuthorCreatedBy.tsx","components/Common/AuthorDisplay.tsx","components/Common/AvatarList.tsx","components/Common/BreadcrumbBar.tsx","components/Common/Button.tsx","components/Common/Cards.tsx","components/Common/CertificateField.tsx","components/Common/Clickable.tsx","components/Common/CollapsibleWrapper.tsx","components/Common/ConfettiModal.tsx","components/Common/ConnectLinkedin.tsx","components/Common/ContentTypeSelect.tsx","components/Common/CopyToClipboard.tsx","components/Common/DateFilter.tsx","components/Common/DropDown.tsx","components/Common/EmptyContent.tsx","components/Common/FJCKEditor.tsx","components/Common/FJNavbar.tsx","components/Common/FJQueryBuilder.tsx","components/Common/FeatureDisabled.tsx","components/Common/FeedSideNavbar.tsx","components/Common/Filter/AutoCompleteFilter.tsx","components/Common/Filter/BaseFilter.tsx","components/Common/FjAvatar.tsx","components/Common/FjContentField.tsx","components/Common/FjDrawer.tsx","components/Common/FjFilter.tsx","components/Common/FjInput.tsx","components/Common/FjPopover.tsx","components/Common/FjProgress.tsx","components/Common/FloatingPanel.tsx","components/Common/FormContainerModal.tsx","components/Common/GroupFilter.tsx","components/Common/GroupSelect.tsx","components/Common/HTMLExpandablePreview.tsx","components/Common/IFrame.tsx","components/Common/Icons.ts","components/Common/Input.tsx","components/Common/LearningContentFilter.tsx","components/Common/Link.tsx","components/Common/Lists.ts","components/Common/Loader.tsx","components/Common/MSDocRenderer.tsx","components/Common/ManagerFilter.tsx","components/Common/Modals.tsx","components/Common/PDFRenderer.tsx","components/Common/PageLayout.tsx","components/Common/PillsList.tsx","components/Common/RubricCard.tsx","components/Common/Select/GoogleLocationAutocomplete.tsx","components/Common/Select/LocationSelect.tsx","components/Common/Select/MultiSelect.tsx","components/Common/Select/SearchBox.tsx","components/Common/Select/Select.tsx","components/Common/SharedConfirmDialog.tsx","components/Common/Styles.tsx","components/Common/Switch.tsx","components/Common/Tab.tsx","components/Common/Table.tsx","assets/icons/building.svg","components/Common/Tag.tsx","components/Common/Text.tsx","components/Common/UserList.tsx","components/Common/ViewWrapper.tsx","components/Content/LearningObjectPreviewCard.tsx","components/Content/LearningPathViewContentCard.tsx","components/Course/AdminModuleCompletionsForm.tsx","components/Course/CoursePreview.tsx","components/Course/CourseSubmoduleList.tsx","components/Course/CourseSubmodulePreviewCard.tsx","components/CourseAuthoring/ModuleForm.tsx","components/CourseAuthoring/RubricAuthoringForm.tsx","components/CourseAuthoring/RubricForm.tsx","components/CourseAuthoring/SubmoduleForm.tsx","components/CourseAuthoring/SubmoduleTag.tsx","components/Feed/AddContentToContentContainerForm.tsx","components/Feed/AddGroupsToChildContentsField.tsx","components/Feed/AddToContentModal.tsx","components/Feed/AddToQueueForm.tsx","components/Feed/AnalyticsSummaryCard.tsx","components/Feed/AssetForm.tsx","components/Feed/AssetSummary.tsx","components/Feed/AutomationRuleForm.tsx","components/Feed/Banner.tsx","components/Feed/CalriIntegrationForm.tsx","components/Feed/CoachingMomentTriggerForm.tsx","components/Feed/ContentMenu.tsx","components/Feed/ContentTag.tsx","components/Feed/ContentTitle.tsx","components/Feed/CopyClipboardModal.tsx","components/Feed/CustomMetadataFields.tsx","components/Feed/DateInfoPopover.tsx","components/Feed/DealRoomAnalyticsModal.tsx","components/Feed/DeleteDialog.tsx","components/Feed/EditDriveFileModal.tsx","components/Feed/ExpirationDateField.tsx","components/Feed/FeedCard.tsx","components/Feed/FeedComments.tsx","components/Feed/FeedNavbar.tsx","components/Feed/FeedPostForm.tsx","components/Feed/FeedPostList.tsx","components/Feed/GradingStatus.tsx","components/Feed/IntegratedCrmIcon.tsx","components/Feed/LibraryCardHorizontal.tsx","components/Feed/MilestoneForm.tsx","components/Feed/MilestoneModals.tsx","components/Feed/Notifications.tsx","components/Feed/PostAnalyticsModal.tsx","components/Feed/PostCommentForm.tsx","components/Feed/PromptForm.tsx","components/Feed/Queue.tsx","components/Feed/QueueDrawer.tsx","components/Feed/QueueModal.tsx","components/Feed/RespondToPrompt.tsx","components/Feed/SalesloftClassroomThumbnail.tsx","components/Feed/SearchFeedContent.tsx","components/Feed/SfMetadataFormFields.tsx","components/Feed/ShareCourseForm.tsx","components/Feed/SharedContentAssetViewModal.tsx","components/Feed/SharedContentModal.tsx","components/Feed/SharedContentSessions.tsx","components/Feed/SharedContentTable.tsx","components/Feed/SharedLinkModal.tsx","components/Feed/TeamProgressModal.tsx","components/Feed/TemplateAuthoringModal.tsx","components/Feed/TemplateModal.tsx","components/Feed/TranscriptView.tsx","components/Feed/URLPreview.tsx","components/Feed/UserCheckboxGroup.tsx","components/Feed/UserManagementAndProvisioning.tsx","components/Feed/UserSelect.tsx","components/Feed/VideoModalForm.tsx","components/Feed/VideoRecorder.tsx","components/Feed/ViewSwitcher.tsx","components/Feed/ViewsSummaryTable.tsx","components/Icons/Drag.tsx","components/Icons/Loading.tsx","components/Icons/Trophy.tsx","components/Learn/ContentProgressAggregate.tsx","components/Learn/ContentProgressDetails.tsx","components/Learn/GradebookTable.tsx","components/Learn/LiveSessionAttendanceModal.tsx","components/Learn/TaskModal.tsx","components/LearningPath/FeedTaskForm.tsx","components/LearningPath/LearningPathContentModal.tsx","components/LearningPath/LearningPathNavigation.tsx","components/LearningPath/LearningPathPreview.tsx","components/Library/AppearsIn.tsx","components/Library/AuthorAndTitle.tsx","components/Library/BulkEditForm.tsx","components/Library/BulkEditPopup.tsx","components/Library/CallAttendeeInfo.tsx","components/Library/FeedContentImageCard.tsx","components/Library/LibraryActions.tsx","components/Library/LibraryCard.tsx","components/Library/LibraryCardHero.tsx","components/Library/LibraryCardOverlay.tsx","components/Library/LibraryCardRow.tsx","components/Library/LibraryStats.tsx","components/Page/ContentWrapper.tsx","components/Page/Page.tsx","components/Profile/ProfileEditForm.tsx","components/Profile/ProfilePictureForm.tsx","components/Search/AIGeneratedSummary.tsx","components/Sortable/SortableContainerWrapper.tsx","components/Sortable/SortableModuleList.tsx","components/Sortable/SubmoduleTagTitle.tsx","components/Team/CreateGroupForm.tsx","components/Team/InviteTeammate.tsx","constants/app.ts","constants/badges.ts","constants/colors.ts","constants/delimiters.tsx","constants/navigation.ts","constants/oppTemplatePosts.ts","constants/pronouns.ts","constants/regex.ts","constants/video.ts","hoc/AppNavigation.tsx","hoc/ContentWidth.tsx","hoc/ErrorBoundry.tsx","hoc/FjRoute.tsx","hoc/Loading.tsx","hoc/MetaData.tsx","hoc/Notification.tsx","hoc/ScriptsLoadingWrapper.tsx","hooks/useStickyBottom.tsx","index.tsx","models/Asset.ts","models/Assignment.ts","models/AssignmentSubmission.ts","models/Author.ts","models/AutomationRule.ts","models/Call.ts","models/Certificate.ts","models/CoachingMoment.ts","models/CoachingMomentTrigger.tsx","models/Company.ts","models/Config.ts","models/Course.ts","models/DataObject.ts","models/DealRoom.ts","models/Document.ts","models/ExternalAcademy.tsx","models/Favouritable.tsx","models/FeedComment.ts","models/FeedPlaylist.ts","models/FeedPost.tsx","models/FeedTag.ts","models/FeedTask.ts","models/FjEvent.ts","models/Group.ts","models/Hub.ts","models/IntegratedClariOrganization.ts","models/IntegratedScimOrganization.ts","models/IntegratedSsoOrganization.ts","models/LearningPath.ts","models/LiveSession.ts","models/LxpObject.ts","models/MenuOptions.ts","models/Milestone.ts","models/Module.ts","models/Notification.ts","models/Page.ts","models/Prompt.ts","models/Question.ts","models/QueueItem.ts","models/Rubric.ts","models/SessionToken.ts","models/SfOpportunity.tsx","models/SharedContent.ts","models/StudentAnswer.ts","models/Submodule.tsx","models/Template.ts","models/User.ts","models/UserCertificate.ts","models/enums/KeyCodes.ts","models/enums/MethodTypes.ts","models/enums/PostType.ts","models/enums/Role.ts","network/APIProvider.ts","network/FlockjayProvider.ts","network/NoAuthProvider.ts","network/Route.ts","pages/CourseAuthoring.tsx","pages/DealRoomView.tsx","pages/NotFound.tsx","pages/PageView.tsx","pages/SharedContent.tsx","pages/public/common.tsx","pages/public/publicFooter.tsx","serviceWorker.ts","store/AppStateStore.tsx","store/DataStore.ts","../node_modules/@tanstack/query-core/src/utils.ts","../node_modules/@tanstack/query-core/src/notifyManager.ts","../node_modules/@tanstack/query-core/src/subscribable.ts","../node_modules/@tanstack/query-core/src/focusManager.ts","../node_modules/@tanstack/query-core/src/onlineManager.ts","../node_modules/@tanstack/query-core/src/retryer.ts","../node_modules/@tanstack/query-core/src/removable.ts","../node_modules/@tanstack/query-core/src/query.ts","../node_modules/@tanstack/query-core/src/queryCache.ts","../node_modules/@tanstack/query-core/src/mutation.ts","../node_modules/@tanstack/query-core/src/mutationCache.ts","../node_modules/@tanstack/query-core/src/infiniteQueryBehavior.ts","../node_modules/@tanstack/query-core/src/queryClient.ts","store/QueryClient.ts","store/ScrollStore.ts","utils/Analytics.ts","utils/Auth.ts","utils/S3Upload.ts","utils/Tracker.tsx","utils/chart.ts","utils/content.tsx","utils/debounce.ts","utils/fileOperation.ts","utils/format.ts","utils/getMenuContext.tsx","utils/renameFile.ts","utils/token.ts","utils/urlParams.ts","utils/validation.ts","../node_modules/@ant-design/colors/dist/index.esm.js","../node_modules/@ant-design/icons/es/utils.js","../node_modules/@ant-design/icons/es/components/IconBase.js","../node_modules/@ant-design/icons/es/components/twoTonePrimaryColor.js","../node_modules/@ant-design/icons/es/components/AntdIcon.js","../node_modules/@ant-design/icons/es/components/Context.js","../node_modules/@ant-design/icons-svg/es/asn/CheckCircleFilled.js","../node_modules/@ant-design/icons/es/icons/CheckCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/CheckCircleOutlined.js","../node_modules/@ant-design/icons/es/icons/CheckCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CheckOutlined.js","../node_modules/@ant-design/icons/es/icons/CheckOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CloseCircleFilled.js","../node_modules/@ant-design/icons/es/icons/CloseCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/CloseCircleOutlined.js","../node_modules/@ant-design/icons/es/icons/CloseCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CloseOutlined.js","../node_modules/@ant-design/icons/es/icons/CloseOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DownOutlined.js","../node_modules/@ant-design/icons/es/icons/DownOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/EllipsisOutlined.js","../node_modules/@ant-design/icons/es/icons/EllipsisOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/ExclamationCircleFilled.js","../node_modules/@ant-design/icons/es/icons/ExclamationCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/ExclamationCircleOutlined.js","../node_modules/@ant-design/icons/es/icons/ExclamationCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/EyeOutlined.js","../node_modules/@ant-design/icons/es/icons/EyeOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/FileOutlined.js","../node_modules/@ant-design/icons/es/icons/FileOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/HolderOutlined.js","../node_modules/@ant-design/icons/es/icons/HolderOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/InfoCircleFilled.js","../node_modules/@ant-design/icons/es/icons/InfoCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/InfoCircleOutlined.js","../node_modules/@ant-design/icons/es/icons/InfoCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/LeftOutlined.js","../node_modules/@ant-design/icons/es/icons/LeftOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/LoadingOutlined.js","../node_modules/@ant-design/icons/es/icons/LoadingOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/PlusOutlined.js","../node_modules/@ant-design/icons/es/icons/PlusOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/RightOutlined.js","../node_modules/@ant-design/icons/es/icons/RightOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/SearchOutlined.js","../node_modules/@ant-design/icons/es/icons/SearchOutlined.js","../node_modules/@ant-design/plots/es/components/column/index.js","../node_modules/@ant-design/plots/es/errorBoundary/index.js","../node_modules/@ant-design/plots/es/utils/render.js","../node_modules/@ant-design/plots/es/utils/createNode.js","../node_modules/@ant-design/plots/es/utils/utils.js","../node_modules/@ant-design/plots/es/hooks/useChart.js","../node_modules/react-content-loader/src/shared/uid.ts","../node_modules/react-content-loader/src/web/Svg.tsx","../node_modules/react-content-loader/src/web/ContentLoader.tsx","../node_modules/react-content-loader/src/web/presets/FacebookStyle.tsx","../node_modules/@ant-design/plots/es/utils/createLoading.js","../node_modules/@ant-design/plots/es/utils/getChart.js","../node_modules/@antv/event-emitter/src/index.ts","../node_modules/@antv/g-base/src/abstract/base.ts","../node_modules/d3-timer/src/timer.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/value.js","../node_modules/@antv/g-base/src/util/color.ts","../node_modules/@antv/g-base/src/animate/timeline.ts","../node_modules/@antv/g-base/src/event/event-contoller.ts","../node_modules/@antv/g-base/src/abstract/canvas.ts","../node_modules/@antv/g-base/src/abstract/container.ts","../node_modules/@antv/g-base/src/abstract/element.ts","../node_modules/@antv/g-base/src/abstract/group.ts","../node_modules/@antv/g-base/src/abstract/shape.ts","../node_modules/d3-ease/src/linear.js","../node_modules/d3-ease/src/quad.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-ease/src/poly.js","../node_modules/d3-ease/src/sin.js","../node_modules/d3-ease/src/math.js","../node_modules/d3-ease/src/exp.js","../node_modules/d3-ease/src/circle.js","../node_modules/d3-ease/src/bounce.js","../node_modules/d3-ease/src/back.js","../node_modules/d3-ease/src/elastic.js","../node_modules/@antv/g-base/src/animate/register.ts","../node_modules/@antv/g-base/src/bbox/register.ts","../node_modules/@antv/g-base/src/bbox/rect.ts","../node_modules/@antv/g-base/src/bbox/circle.ts","../node_modules/@antv/g-base/src/bbox/util.ts","../node_modules/@antv/g-base/src/bbox/path.ts","../node_modules/@antv/g-base/src/bbox/index.ts","../node_modules/@antv/g-base/src/bbox/polyline.ts","../node_modules/@antv/g-base/src/bbox/polygon.ts","../node_modules/@antv/g-base/src/bbox/text.ts","../node_modules/@antv/g-base/src/bbox/line.ts","../node_modules/@antv/g-base/src/bbox/ellipse.ts","../node_modules/@antv/g-base/src/event/graph-event.ts","../node_modules/@antv/g-base/src/index.ts","../node_modules/@antv/g-base/src/util/matrix.ts","../node_modules/@antv/g-base/src/util/offscreen.ts","../node_modules/@antv/g-base/src/util/path.ts","../node_modules/@antv/g-base/src/util/text.ts","../node_modules/@antv/g-base/src/util/util.ts","../node_modules/@antv/g-math/src/util.ts","../node_modules/@antv/g-math/src/line.ts","../node_modules/@antv/g-math/src/bezier.ts","../node_modules/@antv/g-math/src/quadratic.ts","../node_modules/@antv/g-math/src/cubic.ts","../node_modules/@antv/g-math/src/ellipse.ts","../node_modules/@antv/g-math/src/arc.ts","../node_modules/@antv/g-math/src/segments.ts","../node_modules/@antv/g-math/src/polyline.ts","../node_modules/@antv/g2/src/constant.ts","../node_modules/@antv/dom-util/src/create-dom.ts","../node_modules/@antv/g2/src/engine/index.ts","../node_modules/@antv/dom-util/src/modify-css.ts","../node_modules/@antv/g2/src/util/dom.ts","../node_modules/@antv/g2/src/base.ts","../node_modules/@antv/adjust/src/adjusts/adjust.ts","../node_modules/@antv/adjust/src/constant.ts","../node_modules/@antv/adjust/src/factory.ts","../node_modules/@antv/adjust/node_modules/tslib/tslib.es6.js","../node_modules/@antv/adjust/src/adjusts/dodge.ts","../node_modules/@antv/adjust/src/adjusts/jitter.ts","../node_modules/@antv/adjust/src/adjusts/stack.ts","../node_modules/@antv/adjust/src/adjusts/symmetric.ts","../node_modules/@antv/adjust/src/index.ts","../node_modules/@antv/attr/src/attributes/base.ts","../node_modules/@antv/color-util/src/index.ts","../node_modules/@antv/attr/src/attributes/color.ts","../node_modules/@antv/attr/src/attributes/opacity.ts","../node_modules/@antv/attr/src/attributes/position.ts","../node_modules/@antv/attr/src/attributes/shape.ts","../node_modules/@antv/attr/src/attributes/size.ts","../node_modules/@antv/scale/src/tick-method/register.ts","../node_modules/@antv/scale/src/base.ts","../node_modules/@antv/scale/src/category/base.ts","../node_modules/fecha/src/fecha.ts","../node_modules/@antv/scale/src/util/time.ts","../node_modules/@antv/scale/src/util/bisector.ts","../node_modules/@antv/scale/src/category/time.ts","../node_modules/@antv/scale/src/continuous/base.ts","../node_modules/@antv/scale/src/continuous/linear.ts","../node_modules/@antv/scale/src/util/math.ts","../node_modules/@antv/scale/src/continuous/log.ts","../node_modules/@antv/scale/src/continuous/pow.ts","../node_modules/@antv/scale/src/continuous/time.ts","../node_modules/@antv/scale/src/continuous/quantize.ts","../node_modules/@antv/scale/src/continuous/quantile.ts","../node_modules/@antv/scale/src/factory.ts","../node_modules/@antv/scale/src/identity/index.ts","../node_modules/@antv/scale/src/tick-method/cat.ts","../node_modules/@antv/scale/src/util/d3-linear.ts","../node_modules/@antv/scale/src/util/interval.ts","../node_modules/@antv/scale/src/util/strict-limit.ts","../node_modules/@antv/scale/src/util/pretty-number.ts","../node_modules/@antv/scale/src/util/extended.ts","../node_modules/@antv/scale/src/util/pretty.ts","../node_modules/@antv/scale/src/tick-method/quantile.ts","../node_modules/@antv/scale/src/tick-method/time-pretty.ts","../node_modules/@antv/scale/src/tick-method/index.ts","../node_modules/@antv/scale/src/tick-method/time-cat.ts","../node_modules/@antv/scale/src/tick-method/linear.ts","../node_modules/@antv/scale/src/tick-method/r-prettry.ts","../node_modules/@antv/scale/src/tick-method/time.ts","../node_modules/@antv/scale/src/tick-method/log.ts","../node_modules/@antv/scale/src/tick-method/pow.ts","../node_modules/@antv/scale/src/tick-method/d3-linear.ts","../node_modules/@antv/scale/src/index.ts","../node_modules/@antv/attr/src/factory.ts","../node_modules/@antv/attr/src/index.ts","../node_modules/gl-matrix/esm/vec3.js","../node_modules/@antv/coord/src/coord/base.ts","../node_modules/@antv/coord/src/coord/cartesian.ts","../node_modules/@antv/coord/src/coord/helix.ts","../node_modules/@antv/coord/src/coord/polar.ts","../node_modules/@antv/coord/src/factory.ts","../node_modules/@antv/component/src/util/event.ts","../node_modules/@antv/coord/src/index.ts","../node_modules/@antv/component/src/util/matrix.ts","../node_modules/@antv/component/src/util/util.ts","../node_modules/@antv/component/src/abstract/component.ts","../node_modules/@antv/component/src/abstract/group-component.ts","../node_modules/@antv/component/src/util/text.ts","../node_modules/@antv/component/src/util/label.ts","../node_modules/@antv/component/src/util/graphic.ts","../node_modules/@antv/component/src/util/theme.ts","../node_modules/@antv/component/src/annotation/line.ts","../node_modules/@antv/component/src/annotation/text.ts","../node_modules/@antv/component/src/annotation/arc.ts","../node_modules/@antv/component/src/annotation/region.ts","../node_modules/@antv/component/src/annotation/image.ts","../node_modules/@antv/component/src/annotation/data-marker.ts","../node_modules/@antv/component/src/annotation/data-region.ts","../node_modules/@antv/component/src/annotation/region-filter.ts","../node_modules/@antv/component/src/annotation/shape.ts","../node_modules/@antv/dom-util/src/get-style.ts","../node_modules/@antv/dom-util/src/get-outer-width.ts","../node_modules/@antv/dom-util/src/get-width.ts","../node_modules/@antv/dom-util/src/get-outer-height.ts","../node_modules/@antv/dom-util/src/get-height.ts","../node_modules/@antv/component/src/abstract/html-component.ts","../node_modules/@antv/component/src/annotation/html.ts","../node_modules/@antv/component/src/util/state.ts","../node_modules/@antv/component/src/axis/base.ts","../node_modules/@antv/component/src/axis/overlap/auto-ellipsis.ts","../node_modules/@antv/component/src/axis/overlap/auto-hide.ts","../node_modules/@antv/component/src/axis/overlap/auto-rotate.ts","../node_modules/@antv/component/src/axis/line.ts","../node_modules/@antv/component/src/axis/circle.ts","../node_modules/@antv/component/src/crosshair/base.ts","../node_modules/@antv/component/src/crosshair/line.ts","../node_modules/@antv/component/src/crosshair/circle.ts","../node_modules/@antv/component/src/crosshair/css-const.ts","../node_modules/@antv/component/src/crosshair/html-theme.ts","../node_modules/@antv/component/src/crosshair/html.ts","../node_modules/@antv/component/src/grid/base.ts","../node_modules/@antv/component/src/grid/circle.ts","../node_modules/@antv/component/src/grid/line.ts","../node_modules/@antv/component/src/legend/base.ts","../node_modules/@antv/component/src/legend/category.ts","../node_modules/@antv/component/src/legend/continuous.ts","../node_modules/@antv/component/src/tooltip/css-const.ts","../node_modules/@antv/component/src/tooltip/html-theme.ts","../node_modules/@antv/component/src/tooltip/html.ts","../node_modules/@antv/component/src/util/align.ts","../node_modules/@antv/component/src/trend/constant.ts","../node_modules/@antv/component/src/trend/path.ts","../node_modules/@antv/component/src/trend/trend.ts","../node_modules/@antv/component/src/slider/handler.ts","../node_modules/@antv/component/src/slider/constant.ts","../node_modules/@antv/component/src/slider/slider.ts","../node_modules/@antv/dom-util/src/add-event-listener.ts","../node_modules/@antv/component/src/scrollbar/scrollbar.ts","../node_modules/@antv/g2/src/dependents.ts","../node_modules/@antv/g2/src/util/graphics.ts","../node_modules/@antv/g2/src/util/helper.ts","../node_modules/@antv/g2/src/util/bbox.ts","../node_modules/@antv/g2/src/util/coordinate.ts","../node_modules/@antv/g2/src/util/scale.ts","../node_modules/@antv/g2/src/util/axis.ts","../node_modules/@antv/g2/src/facet/facet.ts","../node_modules/@antv/g2/src/facet/index.ts","../node_modules/@antv/g2/src/interaction/action/base.ts","../node_modules/@antv/g2/src/interaction/action/callback.ts","../node_modules/@antv/g2/src/interaction/action/register.ts","../node_modules/@antv/g2/src/geometry/shape/util/path.ts","../node_modules/@antv/g2/src/interaction/action/util.ts","../node_modules/@antv/g2/src/interaction/context.ts","../node_modules/@antv/g2/src/interaction/interaction.ts","../node_modules/@antv/g2/src/interaction/grammar-interaction.ts","../node_modules/@antv/g2/src/interaction/index.ts","../node_modules/@antv/g2/src/theme/util/create-by-style-sheet.ts","../node_modules/@antv/g2/src/theme/style-sheet/light.ts","../node_modules/@antv/g2/src/theme/util/create-theme.ts","../node_modules/@antv/g2/src/theme/index.ts","../node_modules/@antv/g2/src/util/tooltip.ts","../node_modules/@antv/g2/src/util/padding.ts","../node_modules/@antv/g2/src/chart/controller/index.ts","../node_modules/@antv/g2/src/chart/controller/coordinate.ts","../node_modules/@antv/g2/src/chart/event.ts","../node_modules/@antv/g2/src/chart/layout/index.ts","../node_modules/@antv/g2/src/chart/util/scale-pool.ts","../node_modules/@antv/g2/src/chart/layout/padding-cal.ts","../node_modules/@antv/g2/src/chart/layout/auto.ts","../node_modules/@antv/g2/src/chart/util/sync-view-padding.ts","../node_modules/@antv/g2/src/chart/view.ts","../node_modules/@antv/g2/src/chart/chart.ts","../node_modules/@antv/g2/src/chart/controller/base.ts","../node_modules/@antv/g2/src/chart/controller/tooltip.ts","../node_modules/@antv/g2/src/animate/animation/index.ts","../node_modules/@antv/g2/src/animate/index.ts","../node_modules/@antv/g2/src/geometry/shape/constant.ts","../node_modules/@antv/g2/src/geometry/element/index.ts","../node_modules/@antv/g2/src/geometry/label/index.ts","../node_modules/@antv/g2/src/geometry/shape/base.ts","../node_modules/@antv/g2/src/geometry/util/is-model-change.ts","../node_modules/@antv/g2/src/geometry/util/parse-fields.ts","../node_modules/@antv/g2/src/geometry/util/diff.ts","../node_modules/@antv/g2/src/geometry/base.ts","../node_modules/@antv/g2/src/geometry/util/group-data.ts","../node_modules/@antv/g2/src/util/transform.ts","../node_modules/@antv/g2/src/geometry/label/util/index.ts","../node_modules/@antv/g2/src/component/update-label.ts","../node_modules/@antv/g2/src/component/labels.ts","../node_modules/@antv/g2/src/geometry/label/base.ts","../node_modules/@antv/g2/src/util/attr.ts","../node_modules/@antv/g2/src/util/marker.ts","../node_modules/@antv/g2/src/util/legend.ts","../node_modules/@antv/g2/src/geometry/shape/util/get-path-points.ts","../node_modules/@antv/g2/src/geometry/shape/util/get-style.ts","../node_modules/@antv/g2/src/geometry/shape/util/split-points.ts","../node_modules/@antv/g2/src/geometry/shape/line/util.ts","../node_modules/@antv/g2/src/geometry/shape/line/index.ts","../node_modules/@antv/g2/src/core.ts","../node_modules/@antv/g2/src/theme/style-sheet/dark.ts","../node_modules/@antv/g-canvas/src/util/util.ts","../node_modules/@antv/g-canvas/src/util/parse.ts","../node_modules/@antv/g-canvas/src/util/arc-params.ts","../node_modules/@antv/g-canvas/src/util/arrow.ts","../node_modules/@antv/g-canvas/src/util/draw.ts","../node_modules/@antv/g-canvas/src/group.ts","../node_modules/@antv/g-canvas/src/shape/base.ts","../node_modules/@antv/g-canvas/src/shape/circle.ts","../node_modules/@antv/g-canvas/src/shape/ellipse.ts","../node_modules/@antv/g-canvas/src/shape/image.ts","../node_modules/@antv/g-canvas/src/util/in-stroke/line.ts","../node_modules/@antv/g-canvas/src/shape/line.ts","../node_modules/@antv/g-canvas/src/shape/marker.ts","../node_modules/@antv/g-canvas/src/util/in-path/point-in-path.ts","../node_modules/@antv/g-canvas/src/util/in-path/polygon.ts","../node_modules/@antv/g-canvas/src/util/in-stroke/arc.ts","../node_modules/@antv/g-canvas/src/util/path.ts","../node_modules/@antv/g-canvas/src/shape/path.ts","../node_modules/@antv/g-canvas/src/util/in-stroke/polyline.ts","../node_modules/@antv/g-canvas/src/shape/polygon.ts","../node_modules/@antv/g-canvas/src/shape/polyline.ts","../node_modules/@antv/g-canvas/src/shape/rect.ts","../node_modules/@antv/g-canvas/src/util/in-stroke/rect-radius.ts","../node_modules/@antv/g-canvas/src/util/in-stroke/rect.ts","../node_modules/@antv/g-canvas/src/shape/text.ts","../node_modules/@antv/g-canvas/src/util/hit.ts","../node_modules/@antv/g-canvas/src/canvas.ts","../node_modules/@antv/g-canvas/src/index.ts","../node_modules/@antv/g-svg/src/constant.ts","../node_modules/@antv/g-svg/src/util/dom.ts","../node_modules/@antv/g-svg/src/util/svg.ts","../node_modules/@antv/g-svg/src/util/draw.ts","../node_modules/@antv/g-svg/src/group.ts","../node_modules/@antv/g-svg/src/shape/base.ts","../node_modules/@antv/g-svg/src/shape/circle.ts","../node_modules/@antv/g-svg/src/shape/dom.ts","../node_modules/@antv/g-svg/src/shape/ellipse.ts","../node_modules/@antv/g-svg/src/shape/image.ts","../node_modules/@antv/g-svg/src/shape/line.ts","../node_modules/@antv/g-svg/src/shape/marker/symbols.ts","../node_modules/@antv/g-svg/src/shape/marker/index.ts","../node_modules/@antv/g-svg/src/shape/path.ts","../node_modules/@antv/g-svg/src/shape/polygon.ts","../node_modules/@antv/g-svg/src/shape/polyline.ts","../node_modules/@antv/g-svg/src/shape/rect.ts","../node_modules/@antv/g-svg/src/util/format.ts","../node_modules/@antv/g-svg/src/shape/text.ts","../node_modules/@antv/g-svg/src/defs/gradient.ts","../node_modules/@antv/g-svg/src/defs/shadow.ts","../node_modules/@antv/g-svg/src/defs/arrow.ts","../node_modules/@antv/g-svg/src/defs/clip.ts","../node_modules/@antv/g-svg/src/defs/pattern.ts","../node_modules/@antv/g-svg/src/defs/index.ts","../node_modules/@antv/g-svg/src/canvas.ts","../node_modules/@antv/g-svg/src/index.ts","../node_modules/@antv/g2/src/geometry/path.ts","../node_modules/@antv/g2/src/geometry/shape/area/util.ts","../node_modules/@antv/g2/src/geometry/shape/area/index.ts","../node_modules/@antv/g2/src/geometry/area.ts","../node_modules/@antv/g2/src/geometry/shape/edge/index.ts","../node_modules/@antv/g2/src/geometry/edge.ts","../node_modules/@antv/g2/src/geometry/heatmap.ts","../node_modules/@antv/g2/src/geometry/shape/interval/util.ts","../node_modules/@antv/g2/src/geometry/shape/interval/index.ts","../node_modules/@antv/g2/src/geometry/util/shape-size.ts","../node_modules/@antv/g2/src/geometry/interval.ts","../node_modules/@antv/g2/src/geometry/line.ts","../node_modules/@antv/g2/src/geometry/shape/point/util.ts","../node_modules/@antv/g2/src/geometry/shape/point/index.ts","../node_modules/@antv/g2/src/geometry/point.ts","../node_modules/@antv/g2/src/geometry/shape/polygon/index.ts","../node_modules/@antv/g2/src/geometry/polygon.ts","../node_modules/@antv/g2/src/geometry/shape/schema/index.ts","../node_modules/@antv/g2/src/geometry/schema.ts","../node_modules/@antv/g2/src/geometry/shape/violin/index.ts","../node_modules/@antv/g2/src/geometry/violin.ts","../node_modules/@antv/g2/src/geometry/shape/edge/util.ts","../node_modules/@antv/g2/src/geometry/shape/area/line.ts","../node_modules/@antv/g2/src/geometry/shape/area/smooth.ts","../node_modules/@antv/g2/src/geometry/shape/area/smooth-line.ts","../node_modules/@antv/g2/src/geometry/shape/edge/arc.ts","../node_modules/@antv/g2/src/geometry/shape/edge/smooth.ts","../node_modules/@antv/g2/src/geometry/shape/edge/vhv.ts","../node_modules/@antv/g2/src/geometry/shape/interval/funnel.ts","../node_modules/@antv/g2/src/geometry/shape/interval/hollow-rect.ts","../node_modules/@antv/g2/src/geometry/shape/interval/line.ts","../node_modules/@antv/g2/src/geometry/shape/interval/pyramid.ts","../node_modules/@antv/g2/src/geometry/shape/interval/tick.ts","../node_modules/@antv/g2/src/geometry/shape/line/step.ts","../node_modules/@antv/g2/src/geometry/shape/schema/box.ts","../node_modules/@antv/g2/src/geometry/shape/schema/candle.ts","../node_modules/@antv/g2/src/geometry/shape/polygon/square.ts","../node_modules/@antv/g2/src/geometry/shape/point/hollow.ts","../node_modules/@antv/g2/src/geometry/shape/point/image.ts","../node_modules/@antv/g2/src/geometry/shape/point/solid.ts","../node_modules/@antv/g2/src/geometry/shape/violin/smooth.ts","../node_modules/@antv/g2/src/geometry/shape/violin/hollow.ts","../node_modules/@antv/g2/src/geometry/label/interval.ts","../node_modules/@antv/g2/src/geometry/label/polar.ts","../node_modules/@antv/g2/src/geometry/label/pie.ts","../node_modules/@antv/g2/src/geometry/label/layout/pie/util.ts","../node_modules/@antv/g2/src/geometry/label/layout/pie/outer.ts","../node_modules/@antv/g2/src/geometry/label/layout/pie/spider.ts","../node_modules/@antv/g2/src/geometry/label/layout/overlap.ts","../node_modules/@antv/g2/src/util/collision-detect.ts","../node_modules/@antv/g2/src/geometry/label/util/createWorker.ts","../node_modules/@antv/g2/src/geometry/label/layout/worker/hide-overlap.ts","../node_modules/@antv/g2/src/geometry/label/layout/hide-overlap.ts","../node_modules/@antv/g2/src/util/color.ts","../node_modules/@antv/g2/src/util/context.ts","../node_modules/@antv/g2/src/geometry/label/layout/interval/adjust-position.ts","../node_modules/@antv/g2/src/geometry/label/layout/point/adjust-position.ts","../node_modules/@antv/g2/src/geometry/label/layout/path/adjust-position.ts","../node_modules/@antv/g2/src/util/text.ts","../node_modules/@antv/g2/src/animate/animation/util.ts","../node_modules/@antv/g2/src/animate/animation/sector-path-update.ts","../node_modules/@antv/g2/src/animate/animation/zoom.ts","../node_modules/@antv/g2/src/util/facet.ts","../node_modules/@antv/g2/src/facet/circle.ts","../node_modules/@antv/g2/src/facet/list.ts","../node_modules/@antv/g2/src/facet/matrix.ts","../node_modules/@antv/g2/src/facet/mirror.ts","../node_modules/@antv/g2/src/facet/rect.ts","../node_modules/@antv/g2/src/facet/tree.ts","../node_modules/@antv/g2/src/util/stat.ts","../node_modules/@antv/g2/src/util/annotation.ts","../node_modules/@antv/g2/src/chart/controller/annotation.ts","../node_modules/@antv/g2/src/util/grid.ts","../node_modules/@antv/g2/src/chart/controller/axis.ts","../node_modules/@antv/g2/src/util/direction.ts","../node_modules/@antv/g2/src/chart/controller/legend.ts","../node_modules/@antv/g2/src/chart/controller/slider.ts","../node_modules/@antv/g2/src/chart/controller/scrollbar.ts","../node_modules/@antv/g2/src/interaction/action/active-region.ts","../node_modules/@antv/g2/src/interaction/action/component/tooltip/geometry.ts","../node_modules/@antv/g2/src/interaction/action/component/tooltip/sibling.ts","../node_modules/@antv/g2/src/interaction/action/component/tooltip/ellipsis-text.ts","../node_modules/@antv/g2/src/interaction/action/element/state-base.ts","../node_modules/@antv/g2/src/interaction/action/element/state.ts","../node_modules/@antv/g2/src/interaction/action/element/active.ts","../node_modules/@antv/g2/src/interaction/action/element/link-by-color.ts","../node_modules/@antv/g2/src/interaction/action/element/range-state.ts","../node_modules/@antv/g2/src/interaction/action/element/range-active.ts","../node_modules/@antv/g2/src/interaction/action/element/single-state.ts","../node_modules/@antv/g2/src/interaction/action/element/single-active.ts","../node_modules/@antv/g2/src/interaction/action/element/highlight-util.ts","../node_modules/@antv/g2/src/interaction/action/element/highlight.ts","../node_modules/@antv/g2/src/interaction/action/element/highlight-by-color.ts","../node_modules/@antv/g2/src/interaction/action/element/highlight-by-x.ts","../node_modules/@antv/g2/src/interaction/action/element/range-highlight.ts","../node_modules/@antv/g2/src/interaction/action/element/single-highlight.ts","../node_modules/@antv/g2/src/interaction/action/element/range-selected.ts","../node_modules/@antv/g2/src/interaction/action/element/selected.ts","../node_modules/@antv/g2/src/interaction/action/element/single-selected.ts","../node_modules/@antv/g2/src/interaction/action/component/list-state.ts","../node_modules/@antv/g2/src/interaction/action/component/list-active.ts","../node_modules/@antv/g2/src/interaction/action/component/list-highlight-util.ts","../node_modules/@antv/g2/src/interaction/action/component/list-highlight.ts","../node_modules/@antv/g2/src/interaction/action/component/list-selected.ts","../node_modules/@antv/g2/src/interaction/action/component/list-unchecked.ts","../node_modules/@antv/g2/src/interaction/action/component/list-checked.ts","../node_modules/@antv/g2/src/interaction/action/component/list-focus.ts","../node_modules/@antv/g2/src/interaction/action/component/list-radio.ts","../node_modules/@antv/g2/src/interaction/action/mask/base.ts","../node_modules/@antv/g2/src/interaction/action/mask/circle.ts","../node_modules/@antv/g2/src/interaction/action/mask/rect.ts","../node_modules/@antv/g2/src/interaction/action/mask/dim-rect.ts","../node_modules/@antv/g2/src/interaction/action/mask/path.ts","../node_modules/@antv/g2/src/interaction/action/mask/smooth-path.ts","../node_modules/@antv/g2/src/interaction/action/mask/multiple/base.ts","../node_modules/@antv/g2/src/interaction/action/mask/multiple/rect.ts","../node_modules/@antv/g2/src/interaction/action/mask/multiple/dim-rect.ts","../node_modules/@antv/g2/src/interaction/action/mask/multiple/circle.ts","../node_modules/@antv/g2/src/interaction/action/mask/multiple/path.ts","../node_modules/@antv/g2/src/interaction/action/mask/multiple/smooth-path.ts","../node_modules/@antv/g2/src/interaction/action/cursor.ts","../node_modules/@antv/g2/src/interaction/action/data/filter.ts","../node_modules/@antv/g2/src/interaction/action/data/range-filter.ts","../node_modules/@antv/g2/src/interaction/action/data/sibling-filter.ts","../node_modules/@antv/g2/src/interaction/action/element/filter.ts","../node_modules/@antv/g2/src/interaction/action/element/sibling-filter.ts","../node_modules/@antv/g2/src/interaction/action/view/button.ts","../node_modules/@antv/g2/src/interaction/action/view/drag.ts","../node_modules/@antv/g2/src/interaction/action/view/move.ts","../node_modules/@antv/g2/src/interaction/action/view/scale-transform.ts","../node_modules/@antv/g2/src/interaction/action/view/scale-translate.ts","../node_modules/@antv/g2/src/interaction/action/view/scale-zoom.ts","../node_modules/@antv/g2/src/interaction/action/view/mousewheel-scroll.ts","../node_modules/@antv/g2/src/interaction/action/component/axis/axis-description.ts","../node_modules/@antv/g2/src/index.ts","../node_modules/@antv/g2/src/geometry/label/layout/pie/distribute.ts","../node_modules/@antv/g2/src/geometry/label/layout/limit-in-shape.ts","../node_modules/@antv/g2/src/geometry/label/layout/limit-in-canvas.ts","../node_modules/@antv/g2/src/geometry/label/layout/limit-in-plot.ts","../node_modules/@antv/g2/src/geometry/label/layout/adjust-color.ts","../node_modules/@antv/g2/src/geometry/label/layout/interval/hide-overlap.ts","../node_modules/@antv/g2/src/animate/animation/fade.ts","../node_modules/@antv/g2/src/animate/animation/grow-in.ts","../node_modules/@antv/g2/src/animate/animation/scale-in.ts","../node_modules/@antv/g2/src/animate/animation/wave-in.ts","../node_modules/@antv/g2/src/animate/animation/position-update.ts","../node_modules/@antv/g2/src/animate/animation/path-in.ts","../node_modules/@antv/g2plot/src/constant.ts","../node_modules/@antv/g2plot/src/utils/invariant.ts","../node_modules/@antv/g2plot/src/utils/pick.ts","../node_modules/@antv/g2plot/src/utils/data.ts","../node_modules/@antv/g2plot/src/utils/deep-assign.ts","../node_modules/@antv/g2plot/src/utils/context.ts","../node_modules/@antv/g2plot/src/utils/dom.ts","../node_modules/@antv/g2plot/src/utils/flow.ts","../node_modules/@antv/g2plot/src/utils/geometry.ts","../node_modules/@antv/g2plot/src/utils/label.ts","../node_modules/@antv/g2plot/src/utils/measure-text.ts","../node_modules/@antv/g2plot/src/utils/number.ts","../node_modules/@antv/g2plot/src/utils/padding.ts","../node_modules/@antv/g2plot/src/utils/path.ts","../node_modules/@antv/g2plot/src/utils/kebab-case.ts","../node_modules/@antv/g2plot/src/utils/statistic.ts","../node_modules/@antv/g2plot/src/utils/template.ts","../node_modules/@antv/g2plot/src/utils/view.ts","../node_modules/@antv/g2plot/src/utils/pattern/util.ts","../node_modules/@antv/g2plot/src/utils/pattern/dot.ts","../node_modules/@antv/g2plot/src/utils/pattern/line.ts","../node_modules/@antv/g2plot/src/utils/pattern/square.ts","../node_modules/@antv/g2plot/src/utils/pattern/index.ts","../node_modules/@antv/g2plot/src/adaptor/pattern.ts","../node_modules/@antv/g2plot/src/adaptor/common.ts","../node_modules/@antv/g2plot/src/core/global.ts","../node_modules/@antv/g2plot/src/core/locale.ts","../node_modules/@antv/g2plot/src/utils/tooltip.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/base.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/area.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/edge.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/interval.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/line.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/point.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/polygon.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/schema.ts","../node_modules/@antv/g2plot/src/core/plot.ts","../node_modules/@antv/g2plot/src/utils/transform/percent.ts","../node_modules/@antv/g2plot/src/plots/line/adaptor.ts","../node_modules/@antv/g2plot/src/plots/area/adaptor.ts","../node_modules/@antv/g2plot/src/plots/area/constants.ts","../node_modules/@antv/g2plot/src/plots/area/index.ts","../node_modules/@antv/g2plot/src/interactions/actions/reset-button.ts","../node_modules/@antv/g2plot/src/interactions/brush.ts","../node_modules/@antv/g2plot/src/adaptor/brush.ts","../node_modules/@antv/g2plot/src/adaptor/connected-area.ts","../node_modules/@antv/g2plot/src/utils/conversion.ts","../node_modules/@antv/g2plot/src/adaptor/conversion-tag.ts","../node_modules/@antv/g2plot/src/plots/column/adaptor.ts","../node_modules/@antv/g2plot/src/plots/bar/adaptor.ts","../node_modules/@antv/g2plot/src/plots/bar/constants.ts","../node_modules/@antv/g2plot/src/plots/bar/index.ts","../node_modules/@antv/g2plot/src/plots/column/constants.ts","../node_modules/@antv/g2plot/src/plots/column/index.ts","../node_modules/@antv/g2plot/src/plots/funnel/constant.ts","../node_modules/@antv/g2plot/src/plots/funnel/geometries/common.ts","../node_modules/@antv/g2plot/src/plots/funnel/geometries/basic.ts","../node_modules/@antv/g2plot/src/plots/funnel/geometries/compare.ts","../node_modules/@antv/g2plot/src/plots/funnel/geometries/dynamic-height.ts","../node_modules/@antv/g2plot/src/plots/funnel/geometries/facet.ts","../node_modules/@antv/g2plot/src/plots/funnel/interactions/funnel-conversion-tag.ts","../node_modules/@antv/g2plot/src/plots/funnel/interactions/index.ts","../node_modules/@antv/g2plot/src/plots/funnel/adaptor.ts","../node_modules/@antv/g2plot/src/plots/funnel/index.ts","../node_modules/@antv/g2plot/src/plots/gauge/constants.ts","../node_modules/@antv/g2plot/src/plots/gauge/utils.ts","../node_modules/@antv/g2plot/src/plots/gauge/adaptor.ts","../node_modules/@antv/g2plot/src/plots/gauge/shapes/indicator.ts","../node_modules/@antv/g2plot/src/plots/gauge/shapes/meter-gauge.ts","../node_modules/@antv/g2plot/src/plots/gauge/index.ts","../node_modules/@antv/g2plot/src/utils/transform/histogram.ts","../node_modules/@antv/g2plot/src/plots/histogram/constant.ts","../node_modules/@antv/g2plot/src/plots/histogram/adaptor.ts","../node_modules/@antv/g2plot/src/plots/histogram/index.ts","../node_modules/@antv/g2plot/src/plots/line/constants.ts","../node_modules/@antv/g2plot/src/plots/line/interactions/marker-active.ts","../node_modules/@antv/g2plot/src/plots/line/interactions/index.ts","../node_modules/@antv/g2plot/src/plots/line/index.ts","../node_modules/@antv/g2plot/src/plots/pie/contants.ts","../node_modules/@antv/g2plot/src/utils/matrix.ts","../node_modules/@antv/g2plot/src/plots/pie/interactions/actions/legend-active.ts","../node_modules/@antv/g2plot/src/plots/pie/interactions/actions/statistic-active.ts","../node_modules/@antv/g2plot/src/plots/pie/interactions/util.ts","../node_modules/@antv/g2plot/src/plots/pie/interactions/index.ts","../node_modules/@antv/g2plot/src/plots/pie/utils.ts","../node_modules/@antv/g2plot/src/plots/pie/adaptor.ts","../node_modules/@antv/g2plot/src/plots/pie/index.ts","../node_modules/@antv/g2plot/src/plots/progress/constants.ts","../node_modules/@antv/g2plot/src/plots/progress/utils.ts","../node_modules/@antv/g2plot/src/plots/progress/adaptor.ts","../node_modules/@antv/g2plot/src/plots/progress/index.ts","../node_modules/@antv/g2plot/src/plots/ring-progress/adaptor.ts","../node_modules/@antv/g2plot/src/plots/ring-progress/constants.ts","../node_modules/@antv/g2plot/src/plots/ring-progress/index.ts","../node_modules/@antv/g2plot/src/plots/scatter/util.ts","../node_modules/@antv/g2plot/src/plots/scatter/adaptor.ts","../node_modules/@antv/g2plot/src/plots/scatter/constant.ts","../node_modules/@antv/g2plot/src/interactions/drag-move.ts","../node_modules/@antv/g2plot/src/plots/scatter/index.ts","../node_modules/@antv/g2plot/src/plots/stock/constant.ts","../node_modules/@antv/g2plot/src/plots/stock/utils.ts","../node_modules/@antv/g2plot/src/plots/stock/adaptor.ts","../node_modules/@antv/g2plot/src/plots/stock/index.ts","../node_modules/@antv/g2plot/src/plots/tiny-line/utils.ts","../node_modules/@antv/g2plot/src/plots/tiny-line/constants.ts","../node_modules/@antv/g2plot/src/plots/tiny-area/adaptor.ts","../node_modules/@antv/g2plot/src/plots/tiny-area/constants.ts","../node_modules/@antv/g2plot/src/plots/tiny-area/index.ts","../node_modules/@antv/g2plot/src/plots/tiny-column/adaptor.ts","../node_modules/@antv/g2plot/src/plots/tiny-column/constants.ts","../node_modules/@antv/g2plot/src/plots/tiny-column/index.ts","../node_modules/@antv/g2plot/src/plots/tiny-line/adaptor.ts","../node_modules/@antv/g2plot/src/plots/tiny-line/index.ts","../node_modules/@antv/g2plot/src/plots/mix/utils.ts","../node_modules/@antv/g2plot/src/plots/mix/adaptor.ts","../node_modules/@antv/g2plot/src/plots/mix/interactions/association.ts","../node_modules/@antv/g2plot/src/plots/mix/interactions/utils.ts","../node_modules/@antv/g2plot/src/plots/mix/index.ts","../node_modules/@antv/g2plot/src/lab.ts","../node_modules/@antv/g2plot/src/plots/bidirectional-bar/constant.ts","../node_modules/@antv/g2plot/src/plots/bidirectional-bar/utils.ts","../node_modules/@antv/g2plot/src/plots/bidirectional-bar/adaptor.ts","../node_modules/@antv/g2plot/src/plots/bidirectional-bar/index.ts","../node_modules/@antv/g2plot/src/plots/box/constant.ts","../node_modules/@antv/g2plot/src/plots/box/utils.ts","../node_modules/@antv/g2plot/src/plots/box/adaptor.ts","../node_modules/@antv/g2plot/src/plots/box/index.ts","../node_modules/@antv/g2plot/src/plots/bullet/utils.ts","../node_modules/@antv/g2plot/src/plots/bullet/adaptor.ts","../node_modules/@antv/g2plot/src/plots/bullet/constant.ts","../node_modules/@antv/g2plot/src/utils/transform/chord.ts","../node_modules/@antv/g2plot/src/plots/bullet/index.ts","../node_modules/@antv/g2plot/src/plots/chord/constant.ts","../node_modules/@antv/g2plot/src/plots/chord/adaptor.ts","../node_modules/@antv/g2plot/src/plots/chord/index.ts","../node_modules/@antv/g2plot/src/plots/circle-packing/constant.ts","../node_modules/@antv/g2plot/src/interactions/actions/drill-down.ts","../node_modules/d3-hierarchy/src/pack/enclose.js","../node_modules/d3-hierarchy/src/array.js","../node_modules/d3-hierarchy/src/pack/siblings.js","../node_modules/d3-hierarchy/src/accessors.js","../node_modules/d3-hierarchy/src/constant.js","../node_modules/d3-hierarchy/src/pack/index.js","../node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/d3-hierarchy/src/hierarchy/iterator.js","../node_modules/d3-hierarchy/src/hierarchy/index.js","../node_modules/d3-hierarchy/src/hierarchy/each.js","../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../node_modules/d3-hierarchy/src/hierarchy/find.js","../node_modules/d3-hierarchy/src/hierarchy/sum.js","../node_modules/d3-hierarchy/src/hierarchy/sort.js","../node_modules/d3-hierarchy/src/hierarchy/path.js","../node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../node_modules/d3-hierarchy/src/hierarchy/descendants.js","../node_modules/d3-hierarchy/src/hierarchy/leaves.js","../node_modules/d3-hierarchy/src/hierarchy/links.js","../node_modules/@antv/g2plot/src/utils/hierarchy/util.ts","../node_modules/@antv/g2plot/src/utils/hierarchy/pack.ts","../node_modules/@antv/g2plot/src/plots/circle-packing/utils.ts","../node_modules/@antv/g2plot/src/plots/circle-packing/adaptor.ts","../node_modules/@antv/g2plot/src/interactions/drill-down.ts","../node_modules/@antv/g2plot/src/plots/circle-packing/index.ts","../node_modules/@antv/g2plot/src/plots/dual-axes/types.ts","../node_modules/@antv/g2plot/src/plots/dual-axes/constant.ts","../node_modules/@antv/g2plot/src/plots/dual-axes/util/option.ts","../node_modules/@antv/g2plot/src/plots/dual-axes/util/legend.ts","../node_modules/@antv/g2plot/src/plots/dual-axes/util/render-sider.ts","../node_modules/@antv/g2plot/src/plots/dual-axes/adaptor.ts","../node_modules/@antv/g2plot/src/plots/dual-axes/util/geometry.ts","../node_modules/@antv/g2plot/src/plots/dual-axes/index.ts","../node_modules/@antv/g2plot/src/plots/facet/adaptor.ts","../node_modules/@antv/g2plot/src/plots/facet/utils.ts","../node_modules/@antv/g2plot/src/plots/facet/constant.ts","../node_modules/@antv/g2plot/src/plots/facet/index.ts","../node_modules/@antv/g2plot/src/plots/heatmap/adaptor.ts","../node_modules/@antv/g2plot/src/plots/heatmap/constant.ts","../node_modules/@antv/g2plot/src/plots/heatmap/shapes/circle.ts","../node_modules/@antv/g2plot/src/plots/heatmap/shapes/square.ts","../node_modules/@antv/g2plot/src/plots/heatmap/index.ts","../node_modules/@antv/g2plot/src/plots/liquid/utils.ts","../node_modules/@antv/g2plot/src/plots/liquid/adaptor.ts","../node_modules/@antv/g2plot/src/plots/liquid/constants.ts","../node_modules/@antv/g2plot/src/plots/liquid/shapes/liquid.ts","../node_modules/@antv/g2plot/src/plots/liquid/index.ts","../node_modules/@antv/g2plot/src/plots/radar/adaptor.ts","../node_modules/@antv/g2plot/src/plots/radar/interactions/radar-tooltip-action.ts","../node_modules/@antv/g2plot/src/plots/radar/interactions/index.ts","../node_modules/@antv/g2plot/src/plots/radar/index.ts","../node_modules/@antv/g2plot/src/plots/radial-bar/utils.ts","../node_modules/@antv/g2plot/src/plots/radial-bar/adaptor.ts","../node_modules/@antv/g2plot/src/plots/radial-bar/constant.ts","../node_modules/@antv/g2plot/src/plots/radial-bar/index.ts","../node_modules/@antv/g2plot/src/plots/rose/adaptor.ts","../node_modules/@antv/g2plot/src/plots/rose/constant.ts","../node_modules/@antv/g2plot/src/plots/sankey/constant.ts","../node_modules/@antv/g2plot/src/plots/rose/index.ts","../node_modules/@antv/g2plot/src/plots/sankey/circle.ts","../node_modules/@antv/g2plot/src/plots/sankey/sankey/align.ts","../node_modules/@antv/g2plot/src/plots/sankey/sankey/helper.ts","../node_modules/@antv/g2plot/src/plots/sankey/sankey/sankey.ts","../node_modules/@antv/g2plot/src/plots/sankey/layout.ts","../node_modules/@antv/g2plot/src/plots/sankey/helper.ts","../node_modules/@antv/g2plot/src/plots/sankey/adaptor.ts","../node_modules/@antv/g2plot/src/plots/sankey/interactions/actions/node-drag.ts","../node_modules/@antv/g2plot/src/plots/sankey/interactions/node-draggable.ts","../node_modules/@antv/g2plot/src/plots/sankey/index.ts","../node_modules/@antv/g2plot/src/plots/sunburst/constant.ts","../node_modules/d3-hierarchy/src/treemap/round.js","../node_modules/d3-hierarchy/src/treemap/dice.js","../node_modules/d3-hierarchy/src/partition.js","../node_modules/@antv/g2plot/src/utils/hierarchy/partition.ts","../node_modules/d3-hierarchy/src/cluster.js","../node_modules/d3-hierarchy/src/stratify.js","../node_modules/d3-hierarchy/src/tree.js","../node_modules/d3-hierarchy/src/treemap/slice.js","../node_modules/d3-hierarchy/src/treemap/squarify.js","../node_modules/d3-hierarchy/src/treemap/index.js","../node_modules/d3-hierarchy/src/treemap/binary.js","../node_modules/d3-hierarchy/src/treemap/sliceDice.js","../node_modules/d3-hierarchy/src/treemap/resquarify.js","../node_modules/@antv/g2plot/src/utils/hierarchy/treemap.ts","../node_modules/@antv/g2plot/src/plots/sunburst/utils.ts","../node_modules/@antv/g2plot/src/plots/sunburst/adaptor.ts","../node_modules/@antv/g2plot/src/plots/sunburst/index.ts","../node_modules/@antv/g2plot/src/plots/treemap/utils.ts","../node_modules/@antv/g2plot/src/plots/treemap/adaptor.ts","../node_modules/@antv/g2plot/src/plots/treemap/constant.ts","../node_modules/@antv/g2plot/src/plots/venn/constant.ts","../node_modules/@antv/g2plot/src/plots/treemap/index.ts","../node_modules/@antv/g2plot/src/plots/venn/interactions/util.ts","../node_modules/@antv/g2plot/src/plots/venn/interactions/actions/active.ts","../node_modules/@antv/g2plot/src/plots/venn/interactions/actions/highlight.ts","../node_modules/@antv/g2plot/src/plots/venn/interactions/actions/selected.ts","../node_modules/@antv/g2plot/src/plots/venn/interactions/index.ts","../node_modules/@antv/g2plot/src/plots/venn/label.ts","../node_modules/@antv/g2plot/node_modules/@antv/path-util/src/parse-path-string.ts","../node_modules/@antv/g2plot/node_modules/@antv/path-util/src/process/arc-2-cubic.ts","../node_modules/@antv/g2plot/src/plots/venn/shape.ts","../node_modules/@antv/g2plot/src/utils/color/blend.ts","../node_modules/@antv/g2plot/src/plots/venn/layout/circleintersection.ts","../node_modules/@antv/g2plot/src/plots/venn/layout/diagram.ts","../node_modules/@antv/g2plot/src/plots/venn/layout/layout.ts","../node_modules/@antv/g2plot/src/plots/venn/utils.ts","../node_modules/@antv/g2plot/src/plots/venn/adaptor.ts","../node_modules/@antv/g2plot/src/plots/venn/index.ts","../node_modules/@antv/g2plot/src/plots/violin/constant.ts","../node_modules/@antv/g2plot/src/utils/transform/quantile.ts","../node_modules/@antv/g2plot/src/plots/violin/utils.ts","../node_modules/@antv/g2plot/src/plots/violin/adaptor.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/violin.ts","../node_modules/@antv/g2plot/src/plots/violin/index.ts","../node_modules/@antv/g2plot/src/plots/waterfall/constant.ts","../node_modules/@antv/g2plot/src/plots/waterfall/utils.ts","../node_modules/@antv/g2plot/src/plots/waterfall/adaptor.ts","../node_modules/@antv/g2plot/src/plots/waterfall/shape.ts","../node_modules/@antv/g2plot/src/plots/waterfall/index.ts","../node_modules/@antv/g2plot/src/plots/word-cloud/constant.ts","../node_modules/@antv/g2plot/src/utils/transform/word-cloud.ts","../node_modules/@antv/g2plot/src/plots/word-cloud/utils.ts","../node_modules/@antv/g2plot/src/plots/word-cloud/adaptor.ts","../node_modules/@antv/g2plot/src/plots/word-cloud/shapes/word-cloud.ts","../node_modules/@antv/g2plot/src/plots/word-cloud/index.ts","../node_modules/@antv/g2plot/src/plugin/index.ts","../node_modules/@antv/g2plot/src/index.ts","../node_modules/@antv/g2plot/src/locales/en_US.ts","../node_modules/@antv/g2plot/src/locales/zh_CN.ts","../node_modules/@antv/matrix-util/src/ext.ts","../node_modules/@antv/path-util/src/parse-path.ts","../node_modules/@antv/path-util/src/catmull-rom-2-bezier.ts","../node_modules/@antv/path-util/src/parse-path-string.ts","../node_modules/@antv/path-util/src/path-2-absolute.ts","../node_modules/@antv/path-util/src/process/arc-2-cubic.ts","../node_modules/@antv/path-util/src/get-arc-params.ts","../node_modules/@antv/path-util/src/path-2-segments.ts","../node_modules/@antv/path-util/src/point-in-polygon.ts","../node_modules/@antv/path-util/src/get-line-intersect.ts","../node_modules/@antv/path-util/src/is-polygons-intersect.ts","../node_modules/@antv/util/src/is-array-like.ts","../node_modules/@antv/util/src/contains.ts","../node_modules/@antv/util/src/filter.ts","../node_modules/@antv/util/src/difference.ts","../node_modules/@antv/util/src/is-type.ts","../node_modules/@antv/util/src/is-function.ts","../node_modules/@antv/util/src/is-nil.ts","../node_modules/@antv/util/src/is-array.ts","../node_modules/@antv/util/src/is-object.ts","../node_modules/@antv/util/src/each.ts","../node_modules/@antv/util/src/keys.ts","../node_modules/@antv/util/src/is-match.ts","../node_modules/@antv/util/src/is-object-like.ts","../node_modules/@antv/util/src/is-plain-object.ts","../node_modules/@antv/util/src/find.ts","../node_modules/@antv/util/src/find-index.ts","../node_modules/@antv/util/src/first-value.ts","../node_modules/@antv/util/src/flatten.ts","../node_modules/@antv/util/src/flatten-deep.ts","../node_modules/@antv/util/src/max.ts","../node_modules/@antv/util/src/min.ts","../node_modules/@antv/util/src/get-range.ts","../node_modules/@antv/util/src/pull.ts","../node_modules/@antv/util/src/pull-at.ts","../node_modules/@antv/util/src/reduce.ts","../node_modules/@antv/util/src/remove.ts","../node_modules/@antv/util/src/is-string.ts","../node_modules/@antv/util/src/sort-by.ts","../node_modules/@antv/util/src/uniq.ts","../node_modules/@antv/util/src/values-of-key.ts","../node_modules/@antv/util/src/head.ts","../node_modules/@antv/util/src/last.ts","../node_modules/@antv/util/src/every.ts","../node_modules/@antv/util/src/some.ts","../node_modules/@antv/util/src/group-by.ts","../node_modules/@antv/util/src/group-to-map.ts","../node_modules/@antv/util/src/group.ts","../node_modules/@antv/util/src/clamp.ts","../node_modules/@antv/util/src/fixed-base.ts","../node_modules/@antv/util/src/is-number.ts","../node_modules/@antv/util/src/is-integer.ts","../node_modules/@antv/util/src/is-number-equal.ts","../node_modules/@antv/util/src/is-positive.ts","../node_modules/@antv/util/src/max-by.ts","../node_modules/@antv/util/src/min-by.ts","../node_modules/@antv/util/src/mod.ts","../node_modules/@antv/util/src/to-degree.ts","../node_modules/@antv/util/src/to-radian.ts","../node_modules/@antv/util/src/for-in.ts","../node_modules/@antv/util/src/has-key.ts","../node_modules/@antv/util/src/has.ts","../node_modules/@antv/util/src/values.ts","../node_modules/@antv/util/src/to-string.ts","../node_modules/@antv/util/src/lower-case.ts","../node_modules/@antv/util/src/substitute.ts","../node_modules/@antv/util/src/upper-first.ts","../node_modules/@antv/util/src/get-type.ts","../node_modules/@antv/util/src/is-boolean.ts","../node_modules/@antv/util/src/is-date.ts","../node_modules/@antv/util/src/is-null.ts","../node_modules/@antv/util/src/is-prototype.ts","../node_modules/@antv/util/src/is-undefined.ts","../node_modules/@antv/util/src/is-element.ts","../node_modules/@antv/util/src/request-animation-frame.ts","../node_modules/@antv/util/src/clear-animation-frame.ts","../node_modules/@antv/util/src/clone.ts","../node_modules/@antv/util/src/debounce.ts","../node_modules/@antv/util/src/memoize.ts","../node_modules/@antv/util/src/deep-mix.ts","../node_modules/@antv/util/src/index-of.ts","../node_modules/@antv/util/src/is-empty.ts","../node_modules/@antv/util/src/is-equal.ts","../node_modules/@antv/util/src/map.ts","../node_modules/@antv/util/src/map-values.ts","../node_modules/@antv/util/src/mix.ts","../node_modules/@antv/util/src/get.ts","../node_modules/@antv/util/src/set.ts","../node_modules/@antv/util/src/pick.ts","../node_modules/@antv/util/src/omit.ts","../node_modules/@antv/util/src/throttle.ts","../node_modules/@antv/util/src/to-array.ts","../node_modules/@antv/util/src/unique-id.ts","../node_modules/@antv/util/src/noop.ts","../node_modules/@antv/util/src/size.ts","../node_modules/@antv/util/src/measure-text-width.ts","../node_modules/@antv/util/src/get-ellipsis-text.ts","../node_modules/@antv/util/src/cache.ts","../CKEditor/webpack/universalModuleDefinition","../CKEditor/node_modules/prop-types/factoryWithThrowingShims.js","../CKEditor/node_modules/prop-types/index.js","../CKEditor/node_modules/prop-types/lib/ReactPropTypesSecret.js","../CKEditor/external umd {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","../CKEditor/webpack/bootstrap","../CKEditor/webpack/runtime/compat get default export","../CKEditor/webpack/runtime/define property getters","../CKEditor/webpack/runtime/hasOwnProperty shorthand","../CKEditor/webpack/runtime/make namespace object","../CKEditor/node_modules/@ckeditor/ckeditor5-utils/src/uid.js","../CKEditor/node_modules/@ckeditor/ckeditor5-watchdog/src/watchdog.js","../CKEditor/node_modules/@ckeditor/ckeditor5-watchdog/src/utils/getsubnodes.js","../CKEditor/node_modules/@ckeditor/ckeditor5-watchdog/src/utils/areconnectedthroughproperties.js","../CKEditor/node_modules/lodash-es/isObject.js","../CKEditor/node_modules/lodash-es/_freeGlobal.js","../CKEditor/node_modules/lodash-es/_root.js","../CKEditor/node_modules/lodash-es/now.js","../CKEditor/node_modules/lodash-es/_trimmedEndIndex.js","../CKEditor/node_modules/lodash-es/_baseTrim.js","../CKEditor/node_modules/lodash-es/_Symbol.js","../CKEditor/node_modules/lodash-es/_getRawTag.js","../CKEditor/node_modules/lodash-es/_objectToString.js","../CKEditor/node_modules/lodash-es/_baseGetTag.js","../CKEditor/node_modules/lodash-es/isObjectLike.js","../CKEditor/node_modules/lodash-es/isSymbol.js","../CKEditor/node_modules/lodash-es/toNumber.js","../CKEditor/node_modules/lodash-es/debounce.js","../CKEditor/node_modules/lodash-es/throttle.js","../CKEditor/node_modules/lodash-es/_listCacheClear.js","../CKEditor/node_modules/lodash-es/eq.js","../CKEditor/node_modules/lodash-es/_assocIndexOf.js","../CKEditor/node_modules/lodash-es/_listCacheDelete.js","../CKEditor/node_modules/lodash-es/_listCacheGet.js","../CKEditor/node_modules/lodash-es/_listCacheHas.js","../CKEditor/node_modules/lodash-es/_listCacheSet.js","../CKEditor/node_modules/lodash-es/_ListCache.js","../CKEditor/node_modules/lodash-es/_stackClear.js","../CKEditor/node_modules/lodash-es/_stackDelete.js","../CKEditor/node_modules/lodash-es/_stackGet.js","../CKEditor/node_modules/lodash-es/_stackHas.js","../CKEditor/node_modules/lodash-es/isFunction.js","../CKEditor/node_modules/lodash-es/_coreJsData.js","../CKEditor/node_modules/lodash-es/_isMasked.js","../CKEditor/node_modules/lodash-es/_toSource.js","../CKEditor/node_modules/lodash-es/_baseIsNative.js","../CKEditor/node_modules/lodash-es/_getValue.js","../CKEditor/node_modules/lodash-es/_getNative.js","../CKEditor/node_modules/lodash-es/_Map.js","../CKEditor/node_modules/lodash-es/_nativeCreate.js","../CKEditor/node_modules/lodash-es/_hashClear.js","../CKEditor/node_modules/lodash-es/_hashDelete.js","../CKEditor/node_modules/lodash-es/_hashGet.js","../CKEditor/node_modules/lodash-es/_hashHas.js","../CKEditor/node_modules/lodash-es/_hashSet.js","../CKEditor/node_modules/lodash-es/_Hash.js","../CKEditor/node_modules/lodash-es/_mapCacheClear.js","../CKEditor/node_modules/lodash-es/_isKeyable.js","../CKEditor/node_modules/lodash-es/_getMapData.js","../CKEditor/node_modules/lodash-es/_mapCacheDelete.js","../CKEditor/node_modules/lodash-es/_mapCacheGet.js","../CKEditor/node_modules/lodash-es/_mapCacheHas.js","../CKEditor/node_modules/lodash-es/_mapCacheSet.js","../CKEditor/node_modules/lodash-es/_MapCache.js","../CKEditor/node_modules/lodash-es/_stackSet.js","../CKEditor/node_modules/lodash-es/_Stack.js","../CKEditor/node_modules/lodash-es/_arrayEach.js","../CKEditor/node_modules/lodash-es/_defineProperty.js","../CKEditor/node_modules/lodash-es/_baseAssignValue.js","../CKEditor/node_modules/lodash-es/_assignValue.js","../CKEditor/node_modules/lodash-es/_copyObject.js","../CKEditor/node_modules/lodash-es/_baseTimes.js","../CKEditor/node_modules/lodash-es/_baseIsArguments.js","../CKEditor/node_modules/lodash-es/isArguments.js","../CKEditor/node_modules/lodash-es/isArray.js","../CKEditor/node_modules/lodash-es/stubFalse.js","../CKEditor/node_modules/lodash-es/isBuffer.js","../CKEditor/node_modules/lodash-es/_isIndex.js","../CKEditor/node_modules/lodash-es/isLength.js","../CKEditor/node_modules/lodash-es/_baseIsTypedArray.js","../CKEditor/node_modules/lodash-es/_baseUnary.js","../CKEditor/node_modules/lodash-es/_nodeUtil.js","../CKEditor/node_modules/lodash-es/isTypedArray.js","../CKEditor/node_modules/lodash-es/_arrayLikeKeys.js","../CKEditor/node_modules/lodash-es/_isPrototype.js","../CKEditor/node_modules/lodash-es/_overArg.js","../CKEditor/node_modules/lodash-es/_nativeKeys.js","../CKEditor/node_modules/lodash-es/_baseKeys.js","../CKEditor/node_modules/lodash-es/isArrayLike.js","../CKEditor/node_modules/lodash-es/keys.js","../CKEditor/node_modules/lodash-es/_baseAssign.js","../CKEditor/node_modules/lodash-es/_nativeKeysIn.js","../CKEditor/node_modules/lodash-es/_baseKeysIn.js","../CKEditor/node_modules/lodash-es/keysIn.js","../CKEditor/node_modules/lodash-es/_baseAssignIn.js","../CKEditor/node_modules/lodash-es/_cloneBuffer.js","../CKEditor/node_modules/lodash-es/_copyArray.js","../CKEditor/node_modules/lodash-es/_arrayFilter.js","../CKEditor/node_modules/lodash-es/stubArray.js","../CKEditor/node_modules/lodash-es/_getSymbols.js","../CKEditor/node_modules/lodash-es/_copySymbols.js","../CKEditor/node_modules/lodash-es/_arrayPush.js","../CKEditor/node_modules/lodash-es/_getPrototype.js","../CKEditor/node_modules/lodash-es/_getSymbolsIn.js","../CKEditor/node_modules/lodash-es/_copySymbolsIn.js","../CKEditor/node_modules/lodash-es/_baseGetAllKeys.js","../CKEditor/node_modules/lodash-es/_getAllKeys.js","../CKEditor/node_modules/lodash-es/_getAllKeysIn.js","../CKEditor/node_modules/lodash-es/_DataView.js","../CKEditor/node_modules/lodash-es/_Promise.js","../CKEditor/node_modules/lodash-es/_Set.js","../CKEditor/node_modules/lodash-es/_WeakMap.js","../CKEditor/node_modules/lodash-es/_getTag.js","../CKEditor/node_modules/lodash-es/_initCloneArray.js","../CKEditor/node_modules/lodash-es/_Uint8Array.js","../CKEditor/node_modules/lodash-es/_cloneArrayBuffer.js","../CKEditor/node_modules/lodash-es/_cloneDataView.js","../CKEditor/node_modules/lodash-es/_cloneRegExp.js","../CKEditor/node_modules/lodash-es/_cloneSymbol.js","../CKEditor/node_modules/lodash-es/_cloneTypedArray.js","../CKEditor/node_modules/lodash-es/_initCloneByTag.js","../CKEditor/node_modules/lodash-es/_baseCreate.js","../CKEditor/node_modules/lodash-es/_initCloneObject.js","../CKEditor/node_modules/lodash-es/_baseIsMap.js","../CKEditor/node_modules/lodash-es/isMap.js","../CKEditor/node_modules/lodash-es/_baseIsSet.js","../CKEditor/node_modules/lodash-es/isSet.js","../CKEditor/node_modules/lodash-es/_baseClone.js","../CKEditor/node_modules/lodash-es/cloneDeepWith.js","../CKEditor/node_modules/lodash-es/isPlainObject.js","../CKEditor/node_modules/lodash-es/isElement.js","../CKEditor/node_modules/@ckeditor/ckeditor5-watchdog/src/editorwatchdog.js","../CKEditor/node_modules/@ckeditor/ckeditor5-watchdog/src/contextwatchdog.js","../CKEditor/src/ckeditorcontext.tsx","../CKEditor/src/ckeditor.tsx","../node_modules/@ctrl/tinycolor/dist/module/conversion.js","../node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","../node_modules/@ctrl/tinycolor/dist/module/format-input.js","../node_modules/@ctrl/tinycolor/dist/module/util.js","../node_modules/@loomhq/loom-embed/src/common.ts","../node_modules/@loomhq/loom-embed/src/validate.ts","../node_modules/@loomhq/loom-embed/src/oembed.ts","../node_modules/@rc-component/portal/es/Context.js","../node_modules/@rc-component/portal/es/useDom.js","../node_modules/@rc-component/portal/es/useScrollLocker.js","../node_modules/@rc-component/portal/es/util.js","../node_modules/@rc-component/portal/es/mock.js","../node_modules/@rc-component/portal/es/Portal.js","../node_modules/@rc-component/portal/es/index.js","../node_modules/@react-awesome-query-builder/core/esm/utils/uuid.js","../node_modules/@react-awesome-query-builder/core/esm/utils/stuff.js","../node_modules/@react-awesome-query-builder/core/esm/config/default.js","../node_modules/@react-awesome-query-builder/core/esm/utils/listValues.js","../node_modules/@react-awesome-query-builder/core/esm/utils/treeUtils.js","../node_modules/@react-awesome-query-builder/core/esm/import/tree.js","../node_modules/@react-awesome-query-builder/core/esm/import/jsonLogic.js","../node_modules/@react-awesome-query-builder/core/esm/utils/export.js","../node_modules/@react-awesome-query-builder/core/esm/export/spel.js","../node_modules/@react-awesome-query-builder/core/esm/import/spel.js","../node_modules/@react-awesome-query-builder/core/esm/utils/defaultUtils.js","../node_modules/@react-awesome-query-builder/core/esm/utils/validation.js","../node_modules/@react-awesome-query-builder/core/esm/utils/funcUtils.js","../node_modules/@react-awesome-query-builder/core/esm/utils/ruleUtils.js","../node_modules/@react-awesome-query-builder/core/esm/utils/jsonLogic.js","../node_modules/@react-awesome-query-builder/core/esm/utils/configSerialize.js","../node_modules/@react-awesome-query-builder/core/esm/utils/configUtils.js","../node_modules/@react-awesome-query-builder/core/esm/export/queryBuilder.js","../node_modules/@react-awesome-query-builder/core/esm/export/jsonLogic.js","../node_modules/@react-awesome-query-builder/core/esm/export/mongoDb.js","../node_modules/@react-awesome-query-builder/core/esm/export/sql.js","../node_modules/@react-awesome-query-builder/core/esm/export/queryString.js","../node_modules/@react-awesome-query-builder/core/esm/export/elasticSearch.js","../node_modules/@react-awesome-query-builder/core/esm/utils/autocomplete.js","../node_modules/@react-awesome-query-builder/core/esm/config/funcs.js","../node_modules/@react-awesome-query-builder/core/esm/config/ctx.js","../node_modules/@react-awesome-query-builder/core/esm/config/index.js","../node_modules/@react-awesome-query-builder/core/esm/stores/constants.js","../node_modules/@react-awesome-query-builder/core/esm/stores/tree.js","../node_modules/@react-awesome-query-builder/core/esm/actions/tree.js","../node_modules/@react-awesome-query-builder/core/esm/actions/group.js","../node_modules/@react-awesome-query-builder/core/esm/actions/rule.js","../node_modules/@react-awesome-query-builder/core/esm/index.js","../node_modules/@react-awesome-query-builder/ui/esm/stores/tree.js","../node_modules/@react-awesome-query-builder/ui/esm/stores/context.js","../node_modules/redux/es/redux.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/components/connectAdvanced.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/connect/wrapMapToProps.js","../node_modules/react-redux/es/connect/mapDispatchToProps.js","../node_modules/react-redux/es/utils/bindActionCreators.js","../node_modules/react-redux/es/connect/mapStateToProps.js","../node_modules/react-redux/es/connect/mergeProps.js","../node_modules/react-redux/es/connect/selectorFactory.js","../node_modules/react-redux/es/connect/connect.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/index.js","../node_modules/@react-awesome-query-builder/ui/esm/stores/constants.js","../node_modules/@react-awesome-query-builder/ui/esm/actions/drag.js","../node_modules/@react-awesome-query-builder/ui/esm/actions/index.js","../node_modules/@react-awesome-query-builder/ui/esm/utils/configUtils.js","../node_modules/@react-awesome-query-builder/ui/esm/utils/stuff.js","../node_modules/@react-awesome-query-builder/ui/esm/utils/validation.js","../node_modules/@react-awesome-query-builder/ui/esm/utils/reactUtils.js","../node_modules/@react-awesome-query-builder/ui/esm/components/Query.js","../node_modules/@react-awesome-query-builder/ui/esm/components/QueryContainer.js","../node_modules/@react-awesome-query-builder/ui/esm/components/containers/RuleContainer.js","../node_modules/@react-awesome-query-builder/ui/esm/components/containers/SortableContainer.js","../node_modules/@react-awesome-query-builder/ui/esm/components/containers/Draggable.js","../node_modules/@react-awesome-query-builder/ui/esm/components/rule/Operator.js","../node_modules/@react-awesome-query-builder/ui/esm/components/utils.js","../node_modules/@react-awesome-query-builder/ui/esm/components/rule/OperatorWrapper.js","../node_modules/@react-awesome-query-builder/ui/esm/components/rule/Field.js","../node_modules/@react-awesome-query-builder/ui/esm/components/rule/FuncSelect.js","../node_modules/@react-awesome-query-builder/ui/esm/components/rule/WidgetFactory.js","../node_modules/@react-awesome-query-builder/ui/esm/components/rule/Widget.js","../node_modules/@react-awesome-query-builder/ui/esm/components/rule/FuncWidget.js","../node_modules/@react-awesome-query-builder/ui/esm/components/rule/FieldWrapper.js","../node_modules/@react-awesome-query-builder/ui/esm/components/rule/OperatorOptions.js","../node_modules/@react-awesome-query-builder/ui/esm/components/item/Rule.js","../node_modules/@react-awesome-query-builder/ui/esm/components/containers/GroupContainer.js","../node_modules/@react-awesome-query-builder/ui/esm/components/item/GroupActions.js","../node_modules/@react-awesome-query-builder/ui/esm/components/item/Group.js","../node_modules/@react-awesome-query-builder/ui/esm/components/item/RuleGroupActions.js","../node_modules/@react-awesome-query-builder/ui/esm/components/item/RuleGroup.js","../node_modules/@react-awesome-query-builder/ui/esm/components/item/RuleGroupExtActions.js","../node_modules/@react-awesome-query-builder/ui/esm/components/item/RuleGroupExt.js","../node_modules/@react-awesome-query-builder/ui/esm/components/item/SwitchGroupActions.js","../node_modules/@react-awesome-query-builder/ui/esm/components/item/SwitchGroup.js","../node_modules/@react-awesome-query-builder/ui/esm/components/item/CaseGroup.js","../node_modules/@react-awesome-query-builder/ui/esm/components/item/Item.js","../node_modules/@react-awesome-query-builder/ui/esm/components/Builder.js","../node_modules/@react-awesome-query-builder/ui/esm/components/rule/ValueField.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/value/VanillaBoolean.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/value/VanillaText.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/value/VanillaTextArea.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/value/VanillaDate.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/value/VanillaTime.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/value/VanillaDateTime.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/value/VanillaMultiSelect.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/value/VanillaSelect.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/value/VanillaNumber.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/value/VanillaSlider.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/core/VanillaFieldSelect.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/core/VanillaConjs.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/core/VanillaButton.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/core/VanillaIcon.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/core/VanillaButtonGroup.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/core/VanillaValueSources.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/core/VanillaSwitch.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/core/vanillaConfirm.js","../node_modules/@react-awesome-query-builder/ui/esm/components/widgets/vanilla/index.js","../node_modules/@react-awesome-query-builder/ui/esm/components/operators/Proximity.js","../node_modules/@react-awesome-query-builder/ui/esm/config/index.js","../node_modules/@react-awesome-query-builder/ui/esm/hooks/useListValuesAutocomplete.js","../node_modules/@react-awesome-query-builder/ui/esm/utils/index.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/moment/DatePicker.js","../node_modules/antd/es/calendar/Header.js","../node_modules/antd/es/calendar/generateCalendar.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/moment/Calendar.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/moment/TimePicker.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/value/Date.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/value/DateTime.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/value/Time.js","../node_modules/@react-awesome-query-builder/antd/esm/utils/domUtils.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/value/Select.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/value/Text.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/value/TextArea.js","../node_modules/@ant-design/icons-svg/es/asn/UpOutlined.js","../node_modules/@ant-design/icons/es/icons/UpOutlined.js","../node_modules/rc-input-number/es/utils/supportUtil.js","../node_modules/rc-input-number/es/utils/numberUtil.js","../node_modules/rc-input-number/es/utils/MiniDecimal.js","../node_modules/rc-input-number/es/StepHandler.js","../node_modules/rc-input-number/es/InputNumber.js","../node_modules/rc-input-number/es/hooks/useCursor.js","../node_modules/rc-input-number/es/hooks/useFrame.js","../node_modules/rc-input-number/es/index.js","../node_modules/antd/es/input-number/index.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/value/Number.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/value/Slider.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/value/Range.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/value/Boolean.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/value/MultiSelect.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/value/Autocomplete.js","../node_modules/rc-tree-select/es/LegacyContext.js","../node_modules/rc-tree-select/es/TreeSelectContext.js","../node_modules/rc-tree-select/es/utils/valueUtil.js","../node_modules/rc-tree-select/es/OptionList.js","../node_modules/rc-tree-select/es/TreeNode.js","../node_modules/rc-tree-select/es/utils/strategyUtil.js","../node_modules/rc-tree-select/es/utils/legacyUtil.js","../node_modules/rc-tree-select/es/hooks/useTreeData.js","../node_modules/rc-tree-select/es/hooks/useRefFunc.js","../node_modules/rc-tree-select/es/TreeSelect.js","../node_modules/rc-tree-select/es/hooks/useDataEntities.js","../node_modules/rc-tree-select/es/hooks/useFilterTreeData.js","../node_modules/rc-tree-select/es/hooks/useCheckedKeys.js","../node_modules/rc-tree-select/es/hooks/useCache.js","../node_modules/rc-tree-select/es/index.js","../node_modules/antd/es/tree-select/index.js","../node_modules/@react-awesome-query-builder/antd/esm/utils/stuff.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/value/TreeSelect.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/core/FieldSelect.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/core/FieldDropdown.js","../node_modules/rc-cascader/es/context.js","../node_modules/rc-cascader/es/utils/commonUtil.js","../node_modules/rc-cascader/es/utils/treeUtil.js","../node_modules/rc-cascader/es/hooks/useRefFunc.js","../node_modules/rc-cascader/es/hooks/useSearchOptions.js","../node_modules/rc-cascader/es/OptionList/Checkbox.js","../node_modules/rc-cascader/es/OptionList/Column.js","../node_modules/rc-cascader/es/OptionList/useActive.js","../node_modules/rc-cascader/es/OptionList/useKeyboard.js","../node_modules/rc-cascader/es/OptionList/index.js","../node_modules/rc-cascader/es/Cascader.js","../node_modules/rc-cascader/es/hooks/useEntities.js","../node_modules/rc-cascader/es/hooks/useSearchConfig.js","../node_modules/rc-cascader/es/hooks/useMissingValues.js","../node_modules/rc-cascader/es/hooks/useDisplayValues.js","../node_modules/rc-cascader/es/index.js","../node_modules/antd/es/cascader/index.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/core/FieldCascader.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/core/FieldTreeSelect.js","../node_modules/@ant-design/icons-svg/es/asn/PlusCircleOutlined.js","../node_modules/@ant-design/icons/es/icons/PlusCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DeleteFilled.js","../node_modules/@ant-design/icons/es/icons/DeleteFilled.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/core/Icon.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/core/Button.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/core/ButtonGroup.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/core/Conjs.js","../node_modules/@ant-design/icons-svg/es/asn/LockFilled.js","../node_modules/@ant-design/icons/es/icons/LockFilled.js","../node_modules/@ant-design/icons-svg/es/asn/UnlockOutlined.js","../node_modules/@ant-design/icons/es/icons/UnlockOutlined.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/core/ValueSources.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/core/confirm.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/index.js","../node_modules/@react-awesome-query-builder/antd/esm/widgets/core/Switch.js","../node_modules/@react-awesome-query-builder/antd/esm/config/index.js","../node_modules/@supercharge/promise-pool/dist/contracts.js","../node_modules/@supercharge/promise-pool/dist/index.js","../node_modules/@supercharge/promise-pool/dist/promise-pool-error.js","../node_modules/@supercharge/promise-pool/dist/promise-pool-executor.js","../node_modules/@supercharge/promise-pool/dist/promise-pool.js","../node_modules/@supercharge/promise-pool/dist/return-value.js","../node_modules/@supercharge/promise-pool/dist/stop-the-promise-pool-error.js","../node_modules/@supercharge/promise-pool/dist/validation-error.js","../node_modules/compare-versions/src/index.ts","../node_modules/react-easy-crop/node_modules/tslib/tslib.es6.js","../node_modules/src/helpers.ts","../node_modules/src/Cropper.tsx","../node_modules/antd-img-crop/dist/antd-img-crop.esm.js","../node_modules/antd/es/version/index.js","../node_modules/antd/es/_util/colors.js","../node_modules/antd/es/_util/getDataOrAriaProps.js","../node_modules/antd/es/_util/hooks/useFlexGapSupport.js","../node_modules/antd/es/_util/hooks/useForceUpdate.js","../node_modules/antd/es/_util/motion.js","../node_modules/antd/es/_util/placements.js","../node_modules/antd/es/_util/reactNode.js","../node_modules/antd/es/_util/responsiveObserve.js","../node_modules/antd/es/_util/statusUtils.js","../node_modules/antd/es/_util/styleChecker.js","../node_modules/antd/es/_util/type.js","../node_modules/antd/es/_util/raf.js","../node_modules/antd/es/_util/wave.js","../node_modules/antd/es/_util/throttleByAnimationFrame.js","../node_modules/antd/es/affix/utils.js","../node_modules/antd/es/affix/index.js","../node_modules/antd/es/alert/ErrorBoundary.js","../node_modules/antd/es/alert/index.js","../node_modules/antd/es/auto-complete/index.js","../node_modules/antd/es/avatar/SizeContext.js","../node_modules/antd/es/avatar/avatar.js","../node_modules/antd/es/avatar/group.js","../node_modules/antd/es/avatar/index.js","../node_modules/antd/es/badge/utils.js","../node_modules/antd/es/badge/Ribbon.js","../node_modules/antd/es/badge/SingleNumber.js","../node_modules/antd/es/badge/ScrollNumber.js","../node_modules/antd/es/badge/index.js","../node_modules/antd/es/breadcrumb/BreadcrumbItem.js","../node_modules/antd/es/breadcrumb/BreadcrumbSeparator.js","../node_modules/antd/es/breadcrumb/Breadcrumb.js","../node_modules/antd/es/breadcrumb/index.js","../node_modules/antd/es/button/button-group.js","../node_modules/antd/es/button/LoadingIcon.js","../node_modules/antd/es/button/button.js","../node_modules/antd/es/button/index.js","../node_modules/antd/es/calendar/locale/en_US.js","../node_modules/@ant-design/react-slick/es/initial-state.js","../node_modules/@ant-design/react-slick/es/utils/innerSliderUtils.js","../node_modules/@ant-design/react-slick/es/track.js","../node_modules/@ant-design/react-slick/es/dots.js","../node_modules/@ant-design/react-slick/es/arrows.js","../node_modules/@ant-design/react-slick/es/inner-slider.js","../node_modules/@ant-design/react-slick/es/default-props.js","../node_modules/@ant-design/react-slick/es/index.js","../node_modules/@ant-design/react-slick/es/slider.js","../node_modules/antd/es/carousel/index.js","../node_modules/antd/es/checkbox/Group.js","../node_modules/antd/es/checkbox/Checkbox.js","../node_modules/antd/es/checkbox/index.js","../node_modules/antd/es/col/index.js","../node_modules/rc-collapse/es/PanelContent.js","../node_modules/rc-collapse/es/Panel.js","../node_modules/rc-collapse/es/Collapse.js","../node_modules/rc-collapse/es/index.js","../node_modules/antd/es/collapse/Collapse.js","../node_modules/antd/es/collapse/CollapsePanel.js","../node_modules/antd/es/collapse/index.js","../node_modules/antd/es/config-provider/DisabledContext.js","../node_modules/antd/es/config-provider/SizeContext.js","../node_modules/antd/es/config-provider/context.js","../node_modules/antd/es/config-provider/defaultRenderEmpty.js","../node_modules/antd/es/locale-provider/index.js","../node_modules/@ctrl/tinycolor/dist/module/index.js","../node_modules/antd/es/config-provider/cssVariables.js","../node_modules/antd/es/config-provider/index.js","../node_modules/@ant-design/icons-svg/es/asn/CalendarOutlined.js","../node_modules/@ant-design/icons/es/icons/CalendarOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/ClockCircleOutlined.js","../node_modules/@ant-design/icons/es/icons/ClockCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/SwapRightOutlined.js","../node_modules/@ant-design/icons/es/icons/SwapRightOutlined.js","../node_modules/antd/es/date-picker/util.js","../node_modules/antd/es/date-picker/generatePicker/generateRangePicker.js","../node_modules/antd/es/date-picker/generatePicker/generateSinglePicker.js","../node_modules/antd/es/date-picker/generatePicker/index.js","../node_modules/antd/es/date-picker/PickerButton.js","../node_modules/antd/es/date-picker/PickerTag.js","../node_modules/antd/node_modules/rc-picker/es/generate/moment.js","../node_modules/antd/es/date-picker/index.js","../node_modules/antd/node_modules/rc-picker/es/locale/en_US.js","../node_modules/antd/es/date-picker/locale/en_US.js","../node_modules/antd/es/divider/index.js","../node_modules/rc-drawer/es/DrawerPanel.js","../node_modules/rc-drawer/es/context.js","../node_modules/rc-drawer/es/util.js","../node_modules/rc-drawer/es/DrawerPopup.js","../node_modules/rc-drawer/es/Drawer.js","../node_modules/rc-drawer/es/index.js","../node_modules/antd/es/drawer/index.js","../node_modules/antd/es/dropdown/dropdown-button.js","../node_modules/antd/es/dropdown/dropdown.js","../node_modules/antd/es/dropdown/index.js","../node_modules/antd/es/empty/empty.js","../node_modules/antd/es/empty/simple.js","../node_modules/antd/es/empty/index.js","../node_modules/antd/es/form/context.js","../node_modules/antd/es/form/hooks/useDebounce.js","../node_modules/antd/es/form/ErrorList.js","../node_modules/compute-scroll-into-view/src/index.ts","../node_modules/scroll-into-view-if-needed/es/index.js","../node_modules/antd/es/form/util.js","../node_modules/antd/es/form/hooks/useForm.js","../node_modules/antd/es/form/Form.js","../node_modules/antd/es/form/hooks/useFormItemStatus.js","../node_modules/@ant-design/icons-svg/es/asn/QuestionCircleOutlined.js","../node_modules/@ant-design/icons/es/icons/QuestionCircleOutlined.js","../node_modules/antd/es/form/FormItemLabel.js","../node_modules/antd/es/form/FormItemInput.js","../node_modules/antd/es/form/FormItem/ItemHolder.js","../node_modules/antd/es/form/FormItem/index.js","../node_modules/antd/es/form/hooks/useFrameState.js","../node_modules/antd/es/form/hooks/useItemRef.js","../node_modules/antd/es/form/FormList.js","../node_modules/antd/es/form/index.js","../node_modules/antd/es/form/hooks/useFormInstance.js","../node_modules/antd/es/grid/RowContext.js","../node_modules/antd/es/grid/col.js","../node_modules/antd/es/grid/hooks/useBreakpoint.js","../node_modules/antd/es/grid/row.js","../node_modules/rc-image/es/PreviewGroup.js","../node_modules/rc-image/es/Operations.js","../node_modules/rc-image/es/previewConfig.js","../node_modules/rc-image/es/hooks/useImageTransform.js","../node_modules/rc-image/es/getFixScaleEleTransPosition.js","../node_modules/rc-image/es/Preview.js","../node_modules/rc-image/es/Image.js","../node_modules/rc-image/es/index.js","../node_modules/@ant-design/icons-svg/es/asn/RotateLeftOutlined.js","../node_modules/@ant-design/icons/es/icons/RotateLeftOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/RotateRightOutlined.js","../node_modules/@ant-design/icons/es/icons/RotateRightOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/ZoomInOutlined.js","../node_modules/@ant-design/icons/es/icons/ZoomInOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/ZoomOutOutlined.js","../node_modules/@ant-design/icons/es/icons/ZoomOutOutlined.js","../node_modules/antd/es/image/PreviewGroup.js","../node_modules/antd/es/image/index.js","../node_modules/rc-input/es/utils/commonUtils.js","../node_modules/rc-input/es/BaseInput.js","../node_modules/rc-input/es/Input.js","../node_modules/rc-input/es/index.js","../node_modules/antd/es/input/Input.js","../node_modules/antd/es/input/utils.js","../node_modules/rc-textarea/es/calculateNodeHeight.js","../node_modules/rc-textarea/es/ResizableTextArea.js","../node_modules/rc-textarea/es/index.js","../node_modules/antd/es/input/ClearableLabeledInput.js","../node_modules/antd/es/input/TextArea.js","../node_modules/antd/es/input/hooks/useRemovePasswordTimeout.js","../node_modules/antd/es/input/Group.js","../node_modules/@ant-design/icons-svg/es/asn/EyeInvisibleOutlined.js","../node_modules/@ant-design/icons/es/icons/EyeInvisibleOutlined.js","../node_modules/antd/es/input/Password.js","../node_modules/antd/es/input/Search.js","../node_modules/antd/es/input/index.js","../node_modules/@ant-design/icons-svg/es/asn/BarsOutlined.js","../node_modules/@ant-design/icons/es/icons/BarsOutlined.js","../node_modules/antd/es/_util/isNumeric.js","../node_modules/antd/es/layout/Sider.js","../node_modules/antd/es/layout/index.js","../node_modules/antd/es/layout/layout.js","../node_modules/antd/es/locale-provider/default.js","../node_modules/antd/es/locale-provider/LocaleReceiver.js","../node_modules/antd/es/locale-provider/context.js","../node_modules/antd/es/locale/default.js","../node_modules/antd/es/locale/en_US.js","../node_modules/antd/es/menu/OverrideContext.js","../node_modules/antd/es/menu/MenuDivider.js","../node_modules/antd/es/menu/MenuContext.js","../node_modules/antd/es/menu/MenuItem.js","../node_modules/antd/es/menu/SubMenu.js","../node_modules/antd/es/menu/hooks/useItems.js","../node_modules/antd/es/menu/index.js","../node_modules/antd/es/message/index.js","../node_modules/antd/es/message/hooks/useMessage.js","../node_modules/antd/es/_util/ActionButton.js","../node_modules/antd/es/modal/Modal.js","../node_modules/antd/es/modal/ConfirmDialog.js","../node_modules/antd/es/modal/destroyFns.js","../node_modules/antd/es/modal/confirm.js","../node_modules/antd/es/modal/useModal/HookModal.js","../node_modules/antd/es/modal/useModal/index.js","../node_modules/antd/es/_util/hooks/usePatchElement.js","../node_modules/antd/es/modal/index.js","../node_modules/antd/es/modal/locale.js","../node_modules/antd/es/notification/index.js","../node_modules/antd/es/notification/hooks/useNotification.js","../node_modules/antd/es/_util/getRenderPropValue.js","../node_modules/antd/es/popover/index.js","../node_modules/rc-progress/es/common.js","../node_modules/rc-progress/es/hooks/useId.js","../node_modules/rc-progress/es/Circle.js","../node_modules/antd/es/progress/utils.js","../node_modules/antd/es/progress/Circle.js","../node_modules/antd/es/progress/Line.js","../node_modules/antd/es/progress/Steps.js","../node_modules/antd/es/progress/progress.js","../node_modules/antd/es/progress/index.js","../node_modules/antd/es/radio/context.js","../node_modules/antd/es/radio/group.js","../node_modules/antd/es/radio/index.js","../node_modules/antd/es/radio/radio.js","../node_modules/antd/es/radio/radioButton.js","../node_modules/antd/es/row/index.js","../node_modules/antd/es/select/index.js","../node_modules/antd/es/select/utils/iconUtil.js","../node_modules/rc-slider/es/context.js","../node_modules/rc-slider/es/util.js","../node_modules/rc-slider/es/Handles/Handle.js","../node_modules/rc-slider/es/Handles/index.js","../node_modules/rc-slider/es/hooks/useDrag.js","../node_modules/rc-slider/es/Tracks/Track.js","../node_modules/rc-slider/es/Tracks/index.js","../node_modules/rc-slider/es/Marks/Mark.js","../node_modules/rc-slider/es/Marks/index.js","../node_modules/rc-slider/es/Steps/Dot.js","../node_modules/rc-slider/es/Steps/index.js","../node_modules/rc-slider/es/Slider.js","../node_modules/rc-slider/es/hooks/useOffset.js","../node_modules/rc-slider/es/index.js","../node_modules/antd/es/slider/SliderTooltip.js","../node_modules/antd/es/slider/index.js","../node_modules/antd/es/space/Compact.js","../node_modules/antd/es/space/Item.js","../node_modules/antd/es/space/index.js","../node_modules/rc-switch/es/index.js","../node_modules/antd/es/switch/index.js","../node_modules/rc-table/es/sugar/ColumnGroup.js","../node_modules/rc-table/es/sugar/Column.js","../node_modules/rc-table/es/utils/valueUtil.js","../node_modules/rc-table/es/context/StickyContext.js","../node_modules/rc-table/es/context/HoverContext.js","../node_modules/rc-table/es/ContextSelector/index.js","../node_modules/rc-table/es/context/BodyContext.js","../node_modules/rc-table/es/context/PerfContext.js","../node_modules/rc-table/es/Cell/index.js","../node_modules/rc-table/es/context/TableContext.js","../node_modules/rc-table/es/utils/fixUtil.js","../node_modules/rc-table/es/Header/HeaderRow.js","../node_modules/rc-table/es/Header/Header.js","../node_modules/rc-table/es/context/ExpandedRowContext.js","../node_modules/rc-table/es/Body/ExpandedRow.js","../node_modules/rc-table/es/context/ResizeContext.js","../node_modules/rc-table/es/Body/BodyRow.js","../node_modules/rc-table/es/hooks/useFlattenRecords.js","../node_modules/rc-table/es/Body/MeasureCell.js","../node_modules/rc-table/es/Body/MeasureRow.js","../node_modules/rc-table/es/Body/index.js","../node_modules/rc-table/es/utils/legacyUtil.js","../node_modules/rc-table/es/constant.js","../node_modules/rc-table/es/hooks/useColumns.js","../node_modules/rc-table/es/hooks/useFrame.js","../node_modules/rc-table/es/hooks/useStickyOffsets.js","../node_modules/rc-table/es/ColGroup.js","../node_modules/rc-table/es/Panel/index.js","../node_modules/rc-table/es/Footer/SummaryContext.js","../node_modules/rc-table/es/Footer/Row.js","../node_modules/rc-table/es/Footer/Summary.js","../node_modules/rc-table/es/Footer/Cell.js","../node_modules/rc-table/es/Footer/index.js","../node_modules/rc-table/es/utils/expandUtil.js","../node_modules/rc-table/es/stickyScrollBar.js","../node_modules/rc-table/es/hooks/useSticky.js","../node_modules/rc-table/es/FixedHolder/index.js","../node_modules/rc-table/es/Table.js","../node_modules/rc-table/es/index.js","../node_modules/@ant-design/icons-svg/es/asn/DoubleLeftOutlined.js","../node_modules/@ant-design/icons/es/icons/DoubleLeftOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DoubleRightOutlined.js","../node_modules/@ant-design/icons/es/icons/DoubleRightOutlined.js","../node_modules/rc-pagination/es/Pager.js","../node_modules/rc-pagination/es/KeyCode.js","../node_modules/rc-pagination/es/Options.js","../node_modules/rc-pagination/es/Pagination.js","../node_modules/rc-pagination/es/locale/zh_CN.js","../node_modules/antd/es/pagination/Select.js","../node_modules/antd/es/pagination/Pagination.js","../node_modules/antd/es/pagination/index.js","../node_modules/antd/es/spin/index.js","../node_modules/antd/es/_util/getScroll.js","../node_modules/antd/es/_util/scrollTo.js","../node_modules/antd/es/_util/easings.js","../node_modules/antd/es/table/Column.js","../node_modules/antd/es/table/ColumnGroup.js","../node_modules/antd/es/table/ExpandIcon.js","../node_modules/antd/es/table/util.js","../node_modules/@ant-design/icons-svg/es/asn/FilterFilled.js","../node_modules/@ant-design/icons/es/icons/FilterFilled.js","../node_modules/antd/es/tree/utils/dropIndicator.js","../node_modules/antd/es/tree/Tree.js","../node_modules/@ant-design/icons-svg/es/asn/FolderOpenOutlined.js","../node_modules/@ant-design/icons/es/icons/FolderOpenOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/FolderOutlined.js","../node_modules/@ant-design/icons/es/icons/FolderOutlined.js","../node_modules/antd/es/tree/utils/dictUtil.js","../node_modules/antd/es/tree/DirectoryTree.js","../node_modules/antd/es/tree/index.js","../node_modules/antd/es/table/hooks/useFilter/FilterSearch.js","../node_modules/antd/es/table/hooks/useFilter/FilterWrapper.js","../node_modules/antd/es/table/hooks/useFilter/FilterDropdown.js","../node_modules/antd/es/_util/hooks/useSyncState.js","../node_modules/antd/es/table/hooks/useFilter/index.js","../node_modules/antd/es/table/hooks/usePagination.js","../node_modules/antd/es/table/hooks/useSelection.js","../node_modules/@ant-design/icons-svg/es/asn/CaretDownOutlined.js","../node_modules/@ant-design/icons/es/icons/CaretDownOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CaretUpOutlined.js","../node_modules/@ant-design/icons/es/icons/CaretUpOutlined.js","../node_modules/antd/es/table/hooks/useSorter.js","../node_modules/antd/es/table/hooks/useTitleColumns.js","../node_modules/antd/es/table/Table.js","../node_modules/antd/es/table/hooks/useLazyKVMap.js","../node_modules/antd/es/table/index.js","../node_modules/rc-tabs/es/TabContext.js","../node_modules/rc-tabs/es/TabPanelList/TabPane.js","../node_modules/rc-tabs/es/TabPanelList/index.js","../node_modules/rc-tabs/es/hooks/useOffsets.js","../node_modules/rc-tabs/es/hooks/useSyncState.js","../node_modules/rc-tabs/es/hooks/useTouchMove.js","../node_modules/rc-tabs/es/hooks/useUpdate.js","../node_modules/rc-tabs/es/hooks/useVisibleRange.js","../node_modules/rc-tabs/es/util.js","../node_modules/rc-tabs/es/TabNavList/AddButton.js","../node_modules/rc-tabs/es/TabNavList/ExtraContent.js","../node_modules/rc-tabs/es/TabNavList/OperationNode.js","../node_modules/rc-tabs/es/TabNavList/TabNode.js","../node_modules/rc-tabs/es/TabNavList/index.js","../node_modules/rc-tabs/es/TabNavList/Wrapper.js","../node_modules/rc-tabs/es/Tabs.js","../node_modules/rc-tabs/es/hooks/useAnimateConfig.js","../node_modules/rc-tabs/es/index.js","../node_modules/antd/es/tabs/hooks/useAnimateConfig.js","../node_modules/antd/es/tabs/hooks/useLegacyItems.js","../node_modules/antd/es/tabs/TabPane.js","../node_modules/antd/es/tabs/index.js","../node_modules/antd/es/tag/CheckableTag.js","../node_modules/antd/es/tag/index.js","../node_modules/antd/es/time-picker/locale/en_US.js","../node_modules/rc-tooltip/es/Popup.js","../node_modules/rc-tooltip/es/Tooltip.js","../node_modules/rc-tooltip/es/index.js","../node_modules/antd/es/tooltip/index.js","../node_modules/@ant-design/icons-svg/es/asn/CaretDownFilled.js","../node_modules/@ant-design/icons/es/icons/CaretDownFilled.js","../node_modules/@ant-design/icons-svg/es/asn/MinusSquareOutlined.js","../node_modules/@ant-design/icons/es/icons/MinusSquareOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/PlusSquareOutlined.js","../node_modules/@ant-design/icons/es/icons/PlusSquareOutlined.js","../node_modules/antd/es/tree/utils/iconUtil.js","../node_modules/@ant-design/icons-svg/es/asn/CopyOutlined.js","../node_modules/@ant-design/icons/es/icons/CopyOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/EditOutlined.js","../node_modules/@ant-design/icons/es/icons/EditOutlined.js","../node_modules/antd/es/_util/transButton.js","../node_modules/@ant-design/icons-svg/es/asn/EnterOutlined.js","../node_modules/@ant-design/icons/es/icons/EnterOutlined.js","../node_modules/antd/es/typography/Editable.js","../node_modules/antd/es/typography/hooks/useMergedConfig.js","../node_modules/antd/es/typography/hooks/useUpdatedEffect.js","../node_modules/antd/es/typography/Typography.js","../node_modules/antd/es/typography/Base/Ellipsis.js","../node_modules/antd/es/typography/Base/EllipsisTooltip.js","../node_modules/antd/es/typography/Base/index.js","../node_modules/antd/es/typography/Link.js","../node_modules/antd/es/typography/Paragraph.js","../node_modules/antd/es/typography/Text.js","../node_modules/antd/es/typography/Title.js","../node_modules/antd/es/typography/index.js","../node_modules/rc-upload/es/request.js","../node_modules/rc-upload/es/uid.js","../node_modules/rc-upload/es/attr-accept.js","../node_modules/rc-upload/es/traverseFileTree.js","../node_modules/rc-upload/es/AjaxUploader.js","../node_modules/rc-upload/es/Upload.js","../node_modules/rc-upload/es/index.js","../node_modules/@ant-design/icons-svg/es/asn/FileTwoTone.js","../node_modules/@ant-design/icons/es/icons/FileTwoTone.js","../node_modules/@ant-design/icons-svg/es/asn/PaperClipOutlined.js","../node_modules/@ant-design/icons/es/icons/PaperClipOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/PictureTwoTone.js","../node_modules/@ant-design/icons/es/icons/PictureTwoTone.js","../node_modules/antd/es/upload/utils.js","../node_modules/@ant-design/icons-svg/es/asn/DeleteOutlined.js","../node_modules/@ant-design/icons/es/icons/DeleteOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DownloadOutlined.js","../node_modules/@ant-design/icons/es/icons/DownloadOutlined.js","../node_modules/antd/es/upload/UploadList/ListItem.js","../node_modules/antd/es/upload/UploadList/index.js","../node_modules/antd/es/upload/Upload.js","../node_modules/antd/es/upload/Dragger.js","../node_modules/antd/es/upload/index.js","../node_modules/antd/node_modules/rc-picker/es/PanelContext.js","../node_modules/antd/node_modules/rc-picker/es/panels/Header.js","../node_modules/antd/node_modules/rc-picker/es/panels/DecadePanel/DecadeHeader.js","../node_modules/antd/node_modules/rc-picker/es/utils/timeUtil.js","../node_modules/antd/node_modules/rc-picker/es/panels/PanelBody.js","../node_modules/antd/node_modules/rc-picker/es/panels/DecadePanel/DecadeBody.js","../node_modules/antd/node_modules/rc-picker/es/utils/uiUtil.js","../node_modules/antd/node_modules/rc-picker/es/panels/DecadePanel/index.js","../node_modules/antd/node_modules/rc-picker/es/utils/dateUtil.js","../node_modules/antd/node_modules/rc-picker/es/panels/TimePanel/TimeHeader.js","../node_modules/antd/node_modules/rc-picker/es/panels/TimePanel/TimeUnitColumn.js","../node_modules/antd/node_modules/rc-picker/es/utils/miscUtil.js","../node_modules/antd/node_modules/rc-picker/es/panels/TimePanel/TimeBody.js","../node_modules/antd/node_modules/rc-picker/es/panels/TimePanel/index.js","../node_modules/antd/node_modules/rc-picker/es/RangeContext.js","../node_modules/antd/node_modules/rc-picker/es/hooks/useCellClassName.js","../node_modules/antd/node_modules/rc-picker/es/panels/DatePanel/DateBody.js","../node_modules/antd/node_modules/rc-picker/es/panels/DatePanel/DateHeader.js","../node_modules/antd/node_modules/rc-picker/es/panels/DatePanel/index.js","../node_modules/antd/node_modules/rc-picker/es/panels/DatetimePanel/index.js","../node_modules/antd/node_modules/rc-picker/es/panels/WeekPanel/index.js","../node_modules/antd/node_modules/rc-picker/es/panels/MonthPanel/MonthHeader.js","../node_modules/antd/node_modules/rc-picker/es/panels/MonthPanel/MonthBody.js","../node_modules/antd/node_modules/rc-picker/es/panels/MonthPanel/index.js","../node_modules/antd/node_modules/rc-picker/es/panels/QuarterPanel/QuarterHeader.js","../node_modules/antd/node_modules/rc-picker/es/panels/QuarterPanel/QuarterBody.js","../node_modules/antd/node_modules/rc-picker/es/panels/QuarterPanel/index.js","../node_modules/antd/node_modules/rc-picker/es/panels/YearPanel/YearHeader.js","../node_modules/antd/node_modules/rc-picker/es/panels/YearPanel/YearBody.js","../node_modules/antd/node_modules/rc-picker/es/panels/YearPanel/index.js","../node_modules/antd/node_modules/rc-picker/es/utils/getExtraFooter.js","../node_modules/antd/node_modules/rc-picker/es/utils/getRanges.js","../node_modules/antd/node_modules/rc-picker/es/PickerPanel.js","../node_modules/antd/node_modules/rc-picker/es/PickerTrigger.js","../node_modules/antd/node_modules/rc-picker/es/hooks/usePickerInput.js","../node_modules/antd/node_modules/rc-picker/es/hooks/useTextValueMapping.js","../node_modules/antd/node_modules/rc-picker/es/hooks/useValueTexts.js","../node_modules/antd/node_modules/rc-picker/es/hooks/useHoverValue.js","../node_modules/antd/node_modules/rc-picker/es/Picker.js","../node_modules/antd/node_modules/rc-picker/es/hooks/useRangeViewDates.js","../node_modules/antd/node_modules/rc-picker/es/RangePicker.js","../node_modules/antd/node_modules/rc-picker/es/hooks/useRangeDisabled.js","../node_modules/antd/node_modules/rc-picker/es/index.js","../node_modules/asn1.js/lib/asn1.js","../node_modules/asn1.js/lib/asn1/api.js","../node_modules/asn1.js/lib/asn1/base/buffer.js","../node_modules/asn1.js/lib/asn1/base/index.js","../node_modules/asn1.js/lib/asn1/base/node.js","../node_modules/asn1.js/lib/asn1/base/reporter.js","../node_modules/asn1.js/lib/asn1/constants/der.js","../node_modules/asn1.js/lib/asn1/constants/index.js","../node_modules/asn1.js/lib/asn1/decoders/der.js","../node_modules/asn1.js/lib/asn1/decoders/index.js","../node_modules/asn1.js/lib/asn1/decoders/pem.js","../node_modules/asn1.js/lib/asn1/encoders/der.js","../node_modules/asn1.js/lib/asn1/encoders/index.js","../node_modules/asn1.js/lib/asn1/encoders/pem.js","../node_modules/axios-retry/node_modules/is-retry-allowed/index.js","../node_modules/base64-js/index.js","../node_modules/bn.js/lib/bn.js","../node_modules/brorand/index.js","../node_modules/browserify-aes/aes.js","../node_modules/browserify-aes/authCipher.js","../node_modules/browserify-aes/browser.js","../node_modules/browserify-aes/decrypter.js","../node_modules/browserify-aes/encrypter.js","../node_modules/browserify-aes/ghash.js","../node_modules/browserify-aes/incr32.js","../node_modules/browserify-aes/modes/cbc.js","../node_modules/browserify-aes/modes/cfb.js","../node_modules/browserify-aes/modes/cfb1.js","../node_modules/browserify-aes/modes/cfb8.js","../node_modules/browserify-aes/modes/ctr.js","../node_modules/browserify-aes/modes/ecb.js","../node_modules/browserify-aes/modes/index.js","../node_modules/browserify-aes/modes/ofb.js","../node_modules/browserify-aes/streamCipher.js","../node_modules/browserify-cipher/browser.js","../node_modules/browserify-des/index.js","../node_modules/browserify-des/modes.js","../node_modules/browserify-rsa/index.js","../node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js","../node_modules/browserify-sign/algos.js","../node_modules/browserify-sign/browser/index.js","../node_modules/browserify-sign/browser/sign.js","../node_modules/browserify-sign/browser/verify.js","../node_modules/browserify-sign/node_modules/bn.js/lib/bn.js","../node_modules/buffer-xor/index.js","../node_modules/buffer/index.js","../node_modules/chop-lines/index.js","../node_modules/cipher-base/index.js","../ClassicEditor/webpack/universalModuleDefinition","../ClassicEditor/node_modules/color-convert/conversions.js","../ClassicEditor/node_modules/color-convert/index.js","../ClassicEditor/node_modules/color-convert/route.js","../ClassicEditor/node_modules/color-name/index.js","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-audio/theme/audio.css","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-audio/theme/audioresize.css","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-audio/theme/audiostyle.css","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-audio/theme/audiouploadicon.css","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-audio/theme/audiouploadloader.css","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-audio/theme/audiouploadprogress.css","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/video.css","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/videoinsert.css","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/videoinsertformrowview.css","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/videoresize.css","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/videostyle.css","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/videouploadicon.css","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/videouploadloader.css","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/videouploadprogress.css","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@phudak/ckeditor5-emoji/theme/charactergrid.css","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@phudak/ckeditor5-emoji/theme/characterinfo.css","../ClassicEditor/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@phudak/ckeditor5-emoji/theme/emoji-characters.css","../ClassicEditor/ckeditor5-basic-styles/theme/code.css","../ClassicEditor/ckeditor5-block-quote/theme/blockquote.css","../ClassicEditor/theme/emoji.css","../ClassicEditor/ckeditor5-clipboard/theme/clipboard.css","../ClassicEditor/ckeditor5-editor-classic/theme/classiceditor.css","../ClassicEditor/ckeditor5-engine/theme/placeholder.css","../ClassicEditor/ckeditor5-engine/theme/renderer.css","../ClassicEditor/ckeditor5-font/theme/fontsize.css","../ClassicEditor/ckeditor5-heading/theme/heading.css","../ClassicEditor/ckeditor5-html-embed/theme/htmlembed.css","../ClassicEditor/ckeditor5-image/theme/image.css","../ClassicEditor/ckeditor5-image/theme/imagecaption.css","../ClassicEditor/ckeditor5-image/theme/imageinsert.css","../ClassicEditor/ckeditor5-image/theme/imageinsertformrowview.css","../ClassicEditor/ckeditor5-image/theme/imageresize.css","../ClassicEditor/ckeditor5-image/theme/imagestyle.css","../ClassicEditor/ckeditor5-image/theme/imageuploadicon.css","../ClassicEditor/ckeditor5-image/theme/imageuploadloader.css","../ClassicEditor/ckeditor5-image/theme/imageuploadprogress.css","../ClassicEditor/ckeditor5-image/theme/textalternativeform.css","../ClassicEditor/ckeditor5-link/theme/link.css","../ClassicEditor/ckeditor5-link/theme/linkactions.css","../ClassicEditor/ckeditor5-link/theme/linkform.css","../ClassicEditor/ckeditor5-link/theme/linkimage.css","../ClassicEditor/ckeditor5-list/theme/collapsible.css","../ClassicEditor/ckeditor5-list/theme/documentlist.css","../ClassicEditor/ckeditor5-list/theme/list.css","../ClassicEditor/ckeditor5-list/theme/listproperties.css","../ClassicEditor/ckeditor5-list/theme/liststyles.css","../ClassicEditor/ckeditor5-list/theme/todolist.css","../ClassicEditor/ckeditor5-media-embed/theme/mediaembed.css","../ClassicEditor/ckeditor5-media-embed/theme/mediaembedediting.css","../ClassicEditor/ckeditor5-media-embed/theme/mediaform.css","../ClassicEditor/ckeditor5-mention/theme/mention.css","../ClassicEditor/ckeditor5-mention/theme/mentionui.css","../ClassicEditor/ckeditor5-table/theme/colorinput.css","../ClassicEditor/ckeditor5-table/theme/form.css","../ClassicEditor/ckeditor5-table/theme/formrow.css","../ClassicEditor/ckeditor5-table/theme/inserttable.css","../ClassicEditor/ckeditor5-table/theme/table.css","../ClassicEditor/ckeditor5-table/theme/tablecaption.css","../ClassicEditor/ckeditor5-table/theme/tablecellproperties.css","../ClassicEditor/ckeditor5-table/theme/tablecolumnresize.css","../ClassicEditor/ckeditor5-table/theme/tableediting.css","../ClassicEditor/ckeditor5-table/theme/tableform.css","../ClassicEditor/ckeditor5-table/theme/tableproperties.css","../ClassicEditor/ckeditor5-table/theme/tableselection.css","../ClassicEditor/ckeditor5-ui/theme/components/button/button.css","../ClassicEditor/ckeditor5-ui/theme/components/button/switchbutton.css","../ClassicEditor/ckeditor5-ui/theme/components/colorgrid/colorgrid.css","../ClassicEditor/ckeditor5-ui/theme/components/colorpicker/colorpicker.css","../ClassicEditor/ckeditor5-ui/theme/components/colorselector/colorselector.css","../ClassicEditor/ckeditor5-ui/theme/components/dropdown/dropdown.css","../ClassicEditor/ckeditor5-ui/theme/components/dropdown/listdropdown.css","../ClassicEditor/ckeditor5-ui/theme/components/dropdown/splitbutton.css","../ClassicEditor/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css","../ClassicEditor/ckeditor5-ui/theme/components/editorui/editorui.css","../ClassicEditor/ckeditor5-ui/theme/components/formheader/formheader.css","../ClassicEditor/ckeditor5-ui/theme/components/icon/icon.css","../ClassicEditor/ckeditor5-ui/theme/components/input/input.css","../ClassicEditor/ckeditor5-ui/theme/components/label/label.css","../ClassicEditor/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css","../ClassicEditor/ckeditor5-ui/theme/components/list/list.css","../ClassicEditor/ckeditor5-ui/theme/components/panel/balloonpanel.css","../ClassicEditor/ckeditor5-ui/theme/components/panel/balloonrotator.css","../ClassicEditor/ckeditor5-ui/theme/components/panel/fakepanel.css","../ClassicEditor/ckeditor5-ui/theme/components/panel/stickypanel.css","../ClassicEditor/ckeditor5-ui/theme/components/responsive-form/responsiveform.css","../ClassicEditor/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css","../ClassicEditor/ckeditor5-ui/theme/components/toolbar/toolbar.css","../ClassicEditor/ckeditor5-ui/theme/components/tooltip/tooltip.css","../ClassicEditor/ckeditor5-ui/theme/globals/globals.css","../ClassicEditor/ckeditor5-widget/theme/widget.css","../ClassicEditor/ckeditor5-widget/theme/widgetresize.css","../ClassicEditor/ckeditor5-widget/theme/widgettypearound.css","../ClassicEditor/node_modules/css-loader/dist/runtime/api.js","../ClassicEditor/node_modules/css-loader/dist/runtime/cssWithMappingToString.js","../ClassicEditor/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","../ClassicEditor/webpack/bootstrap","../ClassicEditor/webpack/runtime/compat get default export","../ClassicEditor/webpack/runtime/define property getters","../ClassicEditor/webpack/runtime/global","../ClassicEditor/webpack/runtime/hasOwnProperty shorthand","../ClassicEditor/webpack/runtime/nonce","../ClassicEditor/ckeditor5-ui/src/bindings/clickoutsidehandler.ts","../ClassicEditor/ckeditor5-engine/src/conversion/conversion.ts","../ClassicEditor/ckeditor5-enter/src/utils.ts","../ClassicEditor/ckeditor5-ui/src/bindings/csstransitiondisablermixin.ts","../ClassicEditor/ckeditor5-ui/src/bindings/submithandler.ts","../ClassicEditor/ckeditor5-ui/src/bindings/addkeyboardhandlingforgrid.ts","../ClassicEditor/ckeditor5-utils/src/env.ts","../ClassicEditor/ckeditor5-utils/src/fastdiff.ts","../ClassicEditor/ckeditor5-utils/src/diff.ts","../ClassicEditor/ckeditor5-utils/src/spy.ts","../ClassicEditor/ckeditor5-utils/src/eventinfo.ts","../ClassicEditor/ckeditor5-utils/src/uid.ts","../ClassicEditor/ckeditor5-utils/src/priorities.ts","../ClassicEditor/ckeditor5-utils/src/inserttopriorityarray.ts","../ClassicEditor/ckeditor5-utils/src/ckeditorerror.ts","../ClassicEditor/ckeditor5-utils/src/version.ts","../ClassicEditor/ckeditor5-utils/src/emittermixin.ts","../ClassicEditor/javascript/node_modules/lodash-es/isObject.js","../ClassicEditor/ckeditor5-utils/src/observablemixin.ts","../ClassicEditor/ckeditor5-utils/src/elementreplacer.ts","../ClassicEditor/ckeditor5-utils/src/count.ts","../ClassicEditor/ckeditor5-utils/src/comparearrays.ts","../ClassicEditor/ckeditor5-utils/src/isiterable.ts","../ClassicEditor/javascript/node_modules/lodash-es/_freeGlobal.js","../ClassicEditor/javascript/node_modules/lodash-es/_root.js","../ClassicEditor/javascript/node_modules/lodash-es/_Symbol.js","../ClassicEditor/javascript/node_modules/lodash-es/_getRawTag.js","../ClassicEditor/javascript/node_modules/lodash-es/_objectToString.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseGetTag.js","../ClassicEditor/javascript/node_modules/lodash-es/isArray.js","../ClassicEditor/javascript/node_modules/lodash-es/isObjectLike.js","../ClassicEditor/javascript/node_modules/lodash-es/isString.js","../ClassicEditor/ckeditor5-utils/src/dom/createelement.ts","../ClassicEditor/javascript/node_modules/lodash-es/_overArg.js","../ClassicEditor/javascript/node_modules/lodash-es/_getPrototype.js","../ClassicEditor/javascript/node_modules/lodash-es/isPlainObject.js","../ClassicEditor/javascript/node_modules/lodash-es/_listCacheClear.js","../ClassicEditor/javascript/node_modules/lodash-es/eq.js","../ClassicEditor/javascript/node_modules/lodash-es/_assocIndexOf.js","../ClassicEditor/javascript/node_modules/lodash-es/_listCacheDelete.js","../ClassicEditor/javascript/node_modules/lodash-es/_listCacheGet.js","../ClassicEditor/javascript/node_modules/lodash-es/_listCacheHas.js","../ClassicEditor/javascript/node_modules/lodash-es/_listCacheSet.js","../ClassicEditor/javascript/node_modules/lodash-es/_ListCache.js","../ClassicEditor/javascript/node_modules/lodash-es/_stackClear.js","../ClassicEditor/javascript/node_modules/lodash-es/_stackDelete.js","../ClassicEditor/javascript/node_modules/lodash-es/_stackGet.js","../ClassicEditor/javascript/node_modules/lodash-es/_stackHas.js","../ClassicEditor/javascript/node_modules/lodash-es/isFunction.js","../ClassicEditor/javascript/node_modules/lodash-es/_coreJsData.js","../ClassicEditor/javascript/node_modules/lodash-es/_isMasked.js","../ClassicEditor/javascript/node_modules/lodash-es/_toSource.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseIsNative.js","../ClassicEditor/javascript/node_modules/lodash-es/_getValue.js","../ClassicEditor/javascript/node_modules/lodash-es/_getNative.js","../ClassicEditor/javascript/node_modules/lodash-es/_Map.js","../ClassicEditor/javascript/node_modules/lodash-es/_nativeCreate.js","../ClassicEditor/javascript/node_modules/lodash-es/_hashClear.js","../ClassicEditor/javascript/node_modules/lodash-es/_hashDelete.js","../ClassicEditor/javascript/node_modules/lodash-es/_hashGet.js","../ClassicEditor/javascript/node_modules/lodash-es/_hashHas.js","../ClassicEditor/javascript/node_modules/lodash-es/_hashSet.js","../ClassicEditor/javascript/node_modules/lodash-es/_Hash.js","../ClassicEditor/javascript/node_modules/lodash-es/_mapCacheClear.js","../ClassicEditor/javascript/node_modules/lodash-es/_isKeyable.js","../ClassicEditor/javascript/node_modules/lodash-es/_getMapData.js","../ClassicEditor/javascript/node_modules/lodash-es/_mapCacheDelete.js","../ClassicEditor/javascript/node_modules/lodash-es/_mapCacheGet.js","../ClassicEditor/javascript/node_modules/lodash-es/_mapCacheHas.js","../ClassicEditor/javascript/node_modules/lodash-es/_mapCacheSet.js","../ClassicEditor/javascript/node_modules/lodash-es/_MapCache.js","../ClassicEditor/javascript/node_modules/lodash-es/_stackSet.js","../ClassicEditor/javascript/node_modules/lodash-es/_Stack.js","../ClassicEditor/javascript/node_modules/lodash-es/_arrayEach.js","../ClassicEditor/javascript/node_modules/lodash-es/_defineProperty.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseAssignValue.js","../ClassicEditor/javascript/node_modules/lodash-es/_assignValue.js","../ClassicEditor/javascript/node_modules/lodash-es/_copyObject.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseTimes.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseIsArguments.js","../ClassicEditor/javascript/node_modules/lodash-es/isArguments.js","../ClassicEditor/javascript/node_modules/lodash-es/stubFalse.js","../ClassicEditor/javascript/node_modules/lodash-es/isBuffer.js","../ClassicEditor/javascript/node_modules/lodash-es/_isIndex.js","../ClassicEditor/javascript/node_modules/lodash-es/isLength.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseIsTypedArray.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseUnary.js","../ClassicEditor/javascript/node_modules/lodash-es/_nodeUtil.js","../ClassicEditor/javascript/node_modules/lodash-es/isTypedArray.js","../ClassicEditor/javascript/node_modules/lodash-es/_arrayLikeKeys.js","../ClassicEditor/javascript/node_modules/lodash-es/_isPrototype.js","../ClassicEditor/javascript/node_modules/lodash-es/_nativeKeys.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseKeys.js","../ClassicEditor/javascript/node_modules/lodash-es/isArrayLike.js","../ClassicEditor/javascript/node_modules/lodash-es/keys.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseAssign.js","../ClassicEditor/javascript/node_modules/lodash-es/_nativeKeysIn.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseKeysIn.js","../ClassicEditor/javascript/node_modules/lodash-es/keysIn.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseAssignIn.js","../ClassicEditor/javascript/node_modules/lodash-es/_cloneBuffer.js","../ClassicEditor/javascript/node_modules/lodash-es/_copyArray.js","../ClassicEditor/javascript/node_modules/lodash-es/_arrayFilter.js","../ClassicEditor/javascript/node_modules/lodash-es/stubArray.js","../ClassicEditor/javascript/node_modules/lodash-es/_getSymbols.js","../ClassicEditor/javascript/node_modules/lodash-es/_copySymbols.js","../ClassicEditor/javascript/node_modules/lodash-es/_arrayPush.js","../ClassicEditor/javascript/node_modules/lodash-es/_getSymbolsIn.js","../ClassicEditor/javascript/node_modules/lodash-es/_copySymbolsIn.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseGetAllKeys.js","../ClassicEditor/javascript/node_modules/lodash-es/_getAllKeys.js","../ClassicEditor/javascript/node_modules/lodash-es/_getAllKeysIn.js","../ClassicEditor/javascript/node_modules/lodash-es/_DataView.js","../ClassicEditor/javascript/node_modules/lodash-es/_Promise.js","../ClassicEditor/javascript/node_modules/lodash-es/_Set.js","../ClassicEditor/javascript/node_modules/lodash-es/_WeakMap.js","../ClassicEditor/javascript/node_modules/lodash-es/_getTag.js","../ClassicEditor/javascript/node_modules/lodash-es/_initCloneArray.js","../ClassicEditor/javascript/node_modules/lodash-es/_Uint8Array.js","../ClassicEditor/javascript/node_modules/lodash-es/_cloneArrayBuffer.js","../ClassicEditor/javascript/node_modules/lodash-es/_cloneDataView.js","../ClassicEditor/javascript/node_modules/lodash-es/_cloneRegExp.js","../ClassicEditor/javascript/node_modules/lodash-es/_cloneSymbol.js","../ClassicEditor/javascript/node_modules/lodash-es/_cloneTypedArray.js","../ClassicEditor/javascript/node_modules/lodash-es/_initCloneByTag.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseCreate.js","../ClassicEditor/javascript/node_modules/lodash-es/_initCloneObject.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseIsMap.js","../ClassicEditor/javascript/node_modules/lodash-es/isMap.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseIsSet.js","../ClassicEditor/javascript/node_modules/lodash-es/isSet.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseClone.js","../ClassicEditor/javascript/node_modules/lodash-es/cloneDeepWith.js","../ClassicEditor/javascript/node_modules/lodash-es/isElement.js","../ClassicEditor/ckeditor5-utils/src/config.ts","../ClassicEditor/ckeditor5-utils/src/dom/isnode.ts","../ClassicEditor/ckeditor5-utils/src/dom/iswindow.ts","../ClassicEditor/ckeditor5-utils/src/dom/emittermixin.ts","../ClassicEditor/ckeditor5-utils/src/dom/global.ts","../ClassicEditor/ckeditor5-utils/src/dom/findclosestscrollableancestor.ts","../ClassicEditor/ckeditor5-utils/src/dom/isrange.ts","../ClassicEditor/ckeditor5-utils/src/dom/getborderwidths.ts","../ClassicEditor/ckeditor5-utils/src/dom/istext.ts","../ClassicEditor/ckeditor5-utils/src/dom/rect.ts","../ClassicEditor/ckeditor5-utils/src/dom/resizeobserver.ts","../ClassicEditor/ckeditor5-utils/src/dom/setdatainelement.ts","../ClassicEditor/ckeditor5-utils/src/dom/tounit.ts","../ClassicEditor/ckeditor5-utils/src/dom/indexof.ts","../ClassicEditor/ckeditor5-utils/src/dom/insertat.ts","../ClassicEditor/ckeditor5-utils/src/dom/iscomment.ts","../ClassicEditor/ckeditor5-utils/src/dom/isvisible.ts","../ClassicEditor/ckeditor5-utils/src/dom/position.ts","../ClassicEditor/ckeditor5-utils/src/dom/getpositionedancestor.ts","../ClassicEditor/ckeditor5-utils/src/dom/remove.ts","../ClassicEditor/ckeditor5-utils/src/dom/scroll.ts","../ClassicEditor/ckeditor5-utils/src/keyboard.ts","../ClassicEditor/ckeditor5-utils/src/toarray.ts","../ClassicEditor/ckeditor5-utils/src/translation-service.ts","../ClassicEditor/ckeditor5-utils/src/language.ts","../ClassicEditor/ckeditor5-utils/src/locale.ts","../ClassicEditor/ckeditor5-utils/src/collection.ts","../ClassicEditor/ckeditor5-utils/src/first.ts","../ClassicEditor/ckeditor5-utils/src/focustracker.ts","../ClassicEditor/ckeditor5-utils/src/keystrokehandler.ts","../ClassicEditor/ckeditor5-utils/src/tomap.ts","../ClassicEditor/ckeditor5-utils/src/objecttomap.ts","../ClassicEditor/ckeditor5-utils/src/delay.ts","../ClassicEditor/ckeditor5-utils/src/unicode.ts","../ClassicEditor/ckeditor5-ui/src/viewcollection.ts","../ClassicEditor/ckeditor5-ui/theme/globals/globals.css?236e","../ClassicEditor/ckeditor5-ui/src/view.ts","../ClassicEditor/ckeditor5-ui/src/template.ts","../ClassicEditor/ckeditor5-ui/src/editorui/bodycollection.ts","../ClassicEditor/ckeditor5-ui/theme/components/icon/icon.css?00c8","../ClassicEditor/ckeditor5-ui/src/icon/iconview.ts","../ClassicEditor/ckeditor5-ui/theme/components/button/button.css?de94","../ClassicEditor/ckeditor5-ui/src/button/buttonview.ts","../ClassicEditor/ckeditor5-ui/theme/components/button/switchbutton.css?7bcd","../ClassicEditor/ckeditor5-ui/src/button/switchbuttonview.ts","../ClassicEditor/ckeditor5-ui/src/colorgrid/utils.ts","../ClassicEditor/ckeditor5-ui/src/colorgrid/colortileview.ts","../ClassicEditor/ckeditor5-ui/theme/icons/color-tile-check.svg","../ClassicEditor/ckeditor5-ui/theme/components/colorgrid/colorgrid.css?94cc","../ClassicEditor/ckeditor5-ui/src/colorgrid/colorgridview.ts","../ClassicEditor/javascript/node_modules/color-parse/index.mjs","../ClassicEditor/ckeditor5-ui/src/colorpicker/utils.ts","../ClassicEditor/javascript/node_modules/lodash-es/now.js","../ClassicEditor/javascript/node_modules/lodash-es/_trimmedEndIndex.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseTrim.js","../ClassicEditor/javascript/node_modules/lodash-es/isSymbol.js","../ClassicEditor/javascript/node_modules/lodash-es/toNumber.js","../ClassicEditor/javascript/node_modules/lodash-es/debounce.js","../ClassicEditor/ckeditor5-ui/theme/components/label/label.css?fd5a","../ClassicEditor/ckeditor5-ui/src/label/labelview.ts","../ClassicEditor/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css?dcc2","../ClassicEditor/ckeditor5-ui/src/labeledfield/labeledfieldview.ts","../ClassicEditor/ckeditor5-ui/theme/components/input/input.css?d15d","../ClassicEditor/ckeditor5-ui/src/input/inputview.ts","../ClassicEditor/ckeditor5-ui/src/inputtext/inputtextview.ts","../ClassicEditor/ckeditor5-ui/src/dropdown/dropdownpanelview.ts","../ClassicEditor/ckeditor5-ui/theme/components/dropdown/dropdown.css?a927","../ClassicEditor/ckeditor5-ui/src/dropdown/dropdownview.ts","../ClassicEditor/ckeditor5-ui/theme/icons/dropdown-arrow.svg","../ClassicEditor/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.ts","../ClassicEditor/ckeditor5-ui/src/focuscycler.ts","../ClassicEditor/ckeditor5-ui/src/toolbar/toolbarseparatorview.ts","../ClassicEditor/ckeditor5-ui/src/toolbar/toolbarlinebreakview.ts","../ClassicEditor/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.ts","../ClassicEditor/ckeditor5-core/src/plugin.ts","../ClassicEditor/ckeditor5-core/src/command.ts","../ClassicEditor/ckeditor5-core/src/multicommand.ts","../ClassicEditor/ckeditor5-core/src/plugincollection.ts","../ClassicEditor/ckeditor5-core/src/context.ts","../ClassicEditor/ckeditor5-core/src/contextplugin.ts","../ClassicEditor/ckeditor5-core/src/editingkeystrokehandler.ts","../ClassicEditor/ckeditor5-engine/theme/placeholder.css?e2af","../ClassicEditor/ckeditor5-engine/src/view/placeholder.ts","../ClassicEditor/ckeditor5-engine/src/view/typecheckable.ts","../ClassicEditor/javascript/node_modules/lodash-es/clone.js","../ClassicEditor/ckeditor5-engine/src/view/node.ts","../ClassicEditor/ckeditor5-engine/src/view/text.ts","../ClassicEditor/ckeditor5-engine/src/view/textproxy.ts","../ClassicEditor/ckeditor5-engine/src/view/matcher.ts","../ClassicEditor/javascript/node_modules/lodash-es/_isKey.js","../ClassicEditor/javascript/node_modules/lodash-es/memoize.js","../ClassicEditor/javascript/node_modules/lodash-es/_memoizeCapped.js","../ClassicEditor/javascript/node_modules/lodash-es/_stringToPath.js","../ClassicEditor/javascript/node_modules/lodash-es/_arrayMap.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseToString.js","../ClassicEditor/javascript/node_modules/lodash-es/toString.js","../ClassicEditor/javascript/node_modules/lodash-es/_castPath.js","../ClassicEditor/javascript/node_modules/lodash-es/last.js","../ClassicEditor/javascript/node_modules/lodash-es/_toKey.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseGet.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseSlice.js","../ClassicEditor/javascript/node_modules/lodash-es/_parent.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseUnset.js","../ClassicEditor/javascript/node_modules/lodash-es/unset.js","../ClassicEditor/javascript/node_modules/lodash-es/get.js","../ClassicEditor/javascript/node_modules/lodash-es/_assignMergeValue.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseFor.js","../ClassicEditor/javascript/node_modules/lodash-es/_createBaseFor.js","../ClassicEditor/javascript/node_modules/lodash-es/isArrayLikeObject.js","../ClassicEditor/javascript/node_modules/lodash-es/_safeGet.js","../ClassicEditor/javascript/node_modules/lodash-es/toPlainObject.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseMergeDeep.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseMerge.js","../ClassicEditor/javascript/node_modules/lodash-es/identity.js","../ClassicEditor/javascript/node_modules/lodash-es/_apply.js","../ClassicEditor/javascript/node_modules/lodash-es/_overRest.js","../ClassicEditor/javascript/node_modules/lodash-es/constant.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseSetToString.js","../ClassicEditor/javascript/node_modules/lodash-es/_shortOut.js","../ClassicEditor/javascript/node_modules/lodash-es/_setToString.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseRest.js","../ClassicEditor/javascript/node_modules/lodash-es/_isIterateeCall.js","../ClassicEditor/javascript/node_modules/lodash-es/_createAssigner.js","../ClassicEditor/javascript/node_modules/lodash-es/merge.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseSet.js","../ClassicEditor/javascript/node_modules/lodash-es/set.js","../ClassicEditor/ckeditor5-engine/src/view/stylesmap.ts","../ClassicEditor/ckeditor5-engine/src/view/element.ts","../ClassicEditor/ckeditor5-engine/src/view/containerelement.ts","../ClassicEditor/ckeditor5-engine/src/view/editableelement.ts","../ClassicEditor/ckeditor5-engine/src/view/rooteditableelement.ts","../ClassicEditor/ckeditor5-engine/src/view/treewalker.ts","../ClassicEditor/ckeditor5-engine/src/view/position.ts","../ClassicEditor/ckeditor5-engine/src/view/range.ts","../ClassicEditor/ckeditor5-engine/src/view/selection.ts","../ClassicEditor/ckeditor5-engine/src/view/documentselection.ts","../ClassicEditor/ckeditor5-engine/src/view/observer/bubblingeventinfo.ts","../ClassicEditor/ckeditor5-engine/src/view/observer/bubblingemittermixin.ts","../ClassicEditor/ckeditor5-engine/src/view/document.ts","../ClassicEditor/ckeditor5-engine/src/view/attributeelement.ts","../ClassicEditor/ckeditor5-engine/src/view/emptyelement.ts","../ClassicEditor/ckeditor5-engine/src/view/uielement.ts","../ClassicEditor/ckeditor5-engine/src/view/rawelement.ts","../ClassicEditor/ckeditor5-engine/src/view/documentfragment.ts","../ClassicEditor/ckeditor5-engine/src/view/downcastwriter.ts","../ClassicEditor/ckeditor5-engine/src/view/filler.ts","../ClassicEditor/ckeditor5-engine/theme/renderer.css?dd62","../ClassicEditor/ckeditor5-engine/src/view/renderer.ts","../ClassicEditor/ckeditor5-engine/src/view/domconverter.ts","../ClassicEditor/ckeditor5-utils/src/dom/isvalidattributename.ts","../ClassicEditor/ckeditor5-utils/src/dom/getancestors.ts","../ClassicEditor/ckeditor5-engine/src/view/observer/observer.ts","../ClassicEditor/javascript/node_modules/lodash-es/assignIn.js","../ClassicEditor/ckeditor5-engine/src/view/observer/domeventdata.ts","../ClassicEditor/ckeditor5-engine/src/view/observer/domeventobserver.ts","../ClassicEditor/ckeditor5-engine/src/view/observer/keyobserver.ts","../ClassicEditor/ckeditor5-engine/src/view/observer/fakeselectionobserver.ts","../ClassicEditor/javascript/node_modules/lodash-es/_setCacheAdd.js","../ClassicEditor/javascript/node_modules/lodash-es/_setCacheHas.js","../ClassicEditor/javascript/node_modules/lodash-es/_SetCache.js","../ClassicEditor/javascript/node_modules/lodash-es/_arraySome.js","../ClassicEditor/javascript/node_modules/lodash-es/_cacheHas.js","../ClassicEditor/javascript/node_modules/lodash-es/_equalArrays.js","../ClassicEditor/javascript/node_modules/lodash-es/_mapToArray.js","../ClassicEditor/javascript/node_modules/lodash-es/_setToArray.js","../ClassicEditor/javascript/node_modules/lodash-es/_equalByTag.js","../ClassicEditor/javascript/node_modules/lodash-es/_equalObjects.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseIsEqualDeep.js","../ClassicEditor/javascript/node_modules/lodash-es/_baseIsEqual.js","../ClassicEditor/javascript/node_modules/lodash-es/isEqualWith.js","../ClassicEditor/ckeditor5-engine/src/view/observer/mutationobserver.ts","../ClassicEditor/ckeditor5-engine/src/view/observer/focusobserver.ts","../ClassicEditor/ckeditor5-engine/src/view/observer/selectionobserver.ts","../ClassicEditor/ckeditor5-engine/src/view/observer/compositionobserver.ts","../ClassicEditor/ckeditor5-engine/src/view/datatransfer.ts","../ClassicEditor/ckeditor5-engine/src/view/observer/inputobserver.ts","../ClassicEditor/ckeditor5-engine/src/view/observer/arrowkeysobserver.ts","../ClassicEditor/ckeditor5-engine/src/view/observer/tabobserver.ts","../ClassicEditor/javascript/node_modules/lodash-es/cloneDeep.js","../ClassicEditor/ckeditor5-engine/src/view/view.ts","../ClassicEditor/ckeditor5-engine/src/model/typecheckable.ts","../ClassicEditor/ckeditor5-engine/src/model/node.ts","../ClassicEditor/ckeditor5-engine/src/model/nodelist.ts","../ClassicEditor/ckeditor5-utils/src/splicearray.ts","../ClassicEditor/ckeditor5-engine/src/model/text.ts","../ClassicEditor/ckeditor5-engine/src/model/textproxy.ts","../ClassicEditor/ckeditor5-engine/src/model/element.ts","../ClassicEditor/ckeditor5-engine/src/model/treewalker.ts","../ClassicEditor/ckeditor5-engine/src/model/position.ts","../ClassicEditor/ckeditor5-engine/src/model/range.ts","../ClassicEditor/ckeditor5-engine/src/conversion/mapper.ts","../ClassicEditor/ckeditor5-engine/src/conversion/modelconsumable.ts","../ClassicEditor/ckeditor5-engine/src/conversion/downcastdispatcher.ts","../ClassicEditor/ckeditor5-engine/src/model/selection.ts","../ClassicEditor/ckeditor5-engine/src/model/liverange.ts","../ClassicEditor/ckeditor5-engine/src/model/documentselection.ts","../ClassicEditor/ckeditor5-engine/src/conversion/conversionhelpers.ts","../ClassicEditor/ckeditor5-engine/src/conversion/downcasthelpers.ts","../ClassicEditor/ckeditor5-engine/src/model/utils/autoparagraphing.ts","../ClassicEditor/ckeditor5-engine/src/conversion/upcasthelpers.ts","../ClassicEditor/ckeditor5-engine/src/model/utils/selection-post-fixer.ts","../ClassicEditor/ckeditor5-engine/src/controller/editingcontroller.ts","../ClassicEditor/ckeditor5-engine/src/conversion/viewconsumable.ts","../ClassicEditor/ckeditor5-engine/src/model/schema.ts","../ClassicEditor/ckeditor5-engine/src/conversion/upcastdispatcher.ts","../ClassicEditor/ckeditor5-engine/src/dataprocessor/basichtmlwriter.ts","../ClassicEditor/ckeditor5-engine/src/dataprocessor/htmldataprocessor.ts","../ClassicEditor/ckeditor5-engine/src/controller/datacontroller.ts","../ClassicEditor/ckeditor5-engine/src/model/operation/operation.ts","../ClassicEditor/ckeditor5-engine/src/model/operation/utils.ts","../ClassicEditor/ckeditor5-engine/src/model/operation/moveoperation.ts","../ClassicEditor/ckeditor5-engine/src/model/operation/insertoperation.ts","../ClassicEditor/ckeditor5-engine/src/model/operation/splitoperation.ts","../ClassicEditor/ckeditor5-engine/src/model/operation/mergeoperation.ts","../ClassicEditor/ckeditor5-engine/src/model/operation/markeroperation.ts","../ClassicEditor/javascript/node_modules/lodash-es/isEqual.js","../ClassicEditor/ckeditor5-engine/src/model/operation/attributeoperation.ts","../ClassicEditor/ckeditor5-engine/src/model/operation/nooperation.ts","../ClassicEditor/ckeditor5-engine/src/model/operation/renameoperation.ts","../ClassicEditor/ckeditor5-engine/src/model/operation/rootattributeoperation.ts","../ClassicEditor/ckeditor5-engine/src/model/operation/rootoperation.ts","../ClassicEditor/ckeditor5-engine/src/model/operation/operationfactory.ts","../ClassicEditor/ckeditor5-engine/src/model/operation/transform.ts","../ClassicEditor/ckeditor5-engine/src/model/liveposition.ts","../ClassicEditor/ckeditor5-engine/src/model/batch.ts","../ClassicEditor/ckeditor5-engine/src/model/differ.ts","../ClassicEditor/ckeditor5-engine/src/model/history.ts","../ClassicEditor/ckeditor5-engine/src/model/rootelement.ts","../ClassicEditor/ckeditor5-engine/src/model/document.ts","../ClassicEditor/ckeditor5-engine/src/model/markercollection.ts","../ClassicEditor/ckeditor5-engine/src/model/operation/detachoperation.ts","../ClassicEditor/ckeditor5-engine/src/model/documentfragment.ts","../ClassicEditor/ckeditor5-engine/src/model/writer.ts","../ClassicEditor/ckeditor5-engine/src/model/utils/deletecontent.ts","../ClassicEditor/ckeditor5-engine/src/model/utils/getselectedcontent.ts","../ClassicEditor/ckeditor5-engine/src/model/utils/insertcontent.ts","../ClassicEditor/ckeditor5-engine/src/model/utils/findoptimalinsertionrange.ts","../ClassicEditor/ckeditor5-engine/src/model/utils/insertobject.ts","../ClassicEditor/ckeditor5-engine/src/model/utils/modifyselection.ts","../ClassicEditor/ckeditor5-engine/src/model/model.ts","../ClassicEditor/ckeditor5-engine/src/view/observer/clickobserver.ts","../ClassicEditor/ckeditor5-engine/src/view/observer/mouseobserver.ts","../ClassicEditor/ckeditor5-engine/src/view/upcastwriter.ts","../ClassicEditor/ckeditor5-engine/src/view/styles/utils.ts","../ClassicEditor/ckeditor5-engine/src/view/styles/background.ts","../ClassicEditor/ckeditor5-engine/src/view/styles/border.ts","../ClassicEditor/ckeditor5-engine/src/view/styles/margin.ts","../ClassicEditor/ckeditor5-engine/src/view/styles/padding.ts","../ClassicEditor/ckeditor5-core/src/commandcollection.ts","../ClassicEditor/ckeditor5-core/src/editor/editor.ts","../ClassicEditor/ckeditor5-core/src/editor/utils/dataapimixin.ts","../ClassicEditor/ckeditor5-core/src/editor/utils/elementapimixin.ts","../ClassicEditor/ckeditor5-core/src/pendingactions.ts","../ClassicEditor/ckeditor5-core/theme/icons/cancel.svg","../ClassicEditor/ckeditor5-core/theme/icons/check.svg","../ClassicEditor/ckeditor5-core/theme/icons/eraser.svg","../ClassicEditor/ckeditor5-core/theme/icons/object-left.svg","../ClassicEditor/ckeditor5-core/theme/icons/object-center.svg","../ClassicEditor/ckeditor5-core/theme/icons/object-right.svg","../ClassicEditor/ckeditor5-core/theme/icons/object-full-width.svg","../ClassicEditor/ckeditor5-core/theme/icons/object-size-full.svg","../ClassicEditor/ckeditor5-core/theme/icons/object-size-large.svg","../ClassicEditor/ckeditor5-core/theme/icons/object-size-small.svg","../ClassicEditor/ckeditor5-core/theme/icons/object-size-medium.svg","../ClassicEditor/ckeditor5-core/src/index.ts","../ClassicEditor/ckeditor5-core/theme/icons/bold.svg","../ClassicEditor/ckeditor5-core/theme/icons/caption.svg","../ClassicEditor/ckeditor5-core/theme/icons/cog.svg","../ClassicEditor/ckeditor5-core/theme/icons/image.svg","../ClassicEditor/ckeditor5-core/theme/icons/low-vision.svg","../ClassicEditor/ckeditor5-core/theme/icons/importexport.svg","../ClassicEditor/ckeditor5-core/theme/icons/paragraph.svg","../ClassicEditor/ckeditor5-core/theme/icons/plus.svg","../ClassicEditor/ckeditor5-core/theme/icons/text.svg","../ClassicEditor/ckeditor5-core/theme/icons/align-bottom.svg","../ClassicEditor/ckeditor5-core/theme/icons/align-middle.svg","../ClassicEditor/ckeditor5-core/theme/icons/align-top.svg","../ClassicEditor/ckeditor5-core/theme/icons/align-left.svg","../ClassicEditor/ckeditor5-core/theme/icons/align-center.svg","../ClassicEditor/ckeditor5-core/theme/icons/align-right.svg","../ClassicEditor/ckeditor5-core/theme/icons/align-justify.svg","../ClassicEditor/ckeditor5-core/theme/icons/object-inline-left.svg","../ClassicEditor/ckeditor5-core/theme/icons/object-inline-right.svg","../ClassicEditor/ckeditor5-core/theme/icons/object-inline.svg","../ClassicEditor/ckeditor5-core/theme/icons/pencil.svg","../ClassicEditor/ckeditor5-core/theme/icons/pilcrow.svg","../ClassicEditor/ckeditor5-core/theme/icons/quote.svg","../ClassicEditor/ckeditor5-core/theme/icons/three-vertical-dots.svg","../ClassicEditor/ckeditor5-ui/theme/components/toolbar/toolbar.css?10d7","../ClassicEditor/ckeditor5-ui/src/toolbar/toolbarview.ts","../ClassicEditor/ckeditor5-ui/src/bindings/preventdefault.ts","../ClassicEditor/ckeditor5-ui/theme/components/list/list.css?fdbc","../ClassicEditor/ckeditor5-ui/src/list/listview.ts","../ClassicEditor/ckeditor5-ui/src/list/listitemview.ts","../ClassicEditor/ckeditor5-ui/src/list/listseparatorview.ts","../ClassicEditor/ckeditor5-ui/theme/components/dropdown/splitbutton.css?a37f","../ClassicEditor/ckeditor5-ui/src/dropdown/button/splitbuttonview.ts","../ClassicEditor/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css?31da","../ClassicEditor/ckeditor5-ui/theme/components/dropdown/listdropdown.css?ae60","../ClassicEditor/ckeditor5-ui/src/dropdown/utils.ts","../ClassicEditor/ckeditor5-ui/src/labeledfield/utils.ts","../ClassicEditor/javascript/node_modules/vanilla-colorful/lib/utils/math.js","../ClassicEditor/javascript/node_modules/vanilla-colorful/lib/utils/convert.js","../ClassicEditor/javascript/node_modules/vanilla-colorful/lib/utils/compare.js","../ClassicEditor/javascript/node_modules/vanilla-colorful/lib/utils/dom.js","../ClassicEditor/javascript/node_modules/vanilla-colorful/lib/components/slider.js","../ClassicEditor/javascript/node_modules/vanilla-colorful/lib/components/hue.js","../ClassicEditor/javascript/node_modules/vanilla-colorful/lib/components/saturation.js","../ClassicEditor/javascript/node_modules/vanilla-colorful/lib/components/color-picker.js","../ClassicEditor/javascript/node_modules/vanilla-colorful/lib/styles/color-picker.js","../ClassicEditor/javascript/node_modules/vanilla-colorful/lib/styles/hue.js","../ClassicEditor/javascript/node_modules/vanilla-colorful/lib/styles/saturation.js","../ClassicEditor/javascript/node_modules/vanilla-colorful/lib/entrypoints/hex.js","../ClassicEditor/javascript/node_modules/vanilla-colorful/hex-color-picker.js","../ClassicEditor/ckeditor5-ui/theme/components/colorpicker/colorpicker.css?2b84","../ClassicEditor/ckeditor5-ui/src/colorpicker/colorpickerview.ts","../ClassicEditor/ckeditor5-ui/src/colorselector/documentcolorcollection.ts","../ClassicEditor/ckeditor5-ui/theme/icons/color-palette.svg","../ClassicEditor/ckeditor5-ui/src/colorselector/colorgridsfragmentview.ts","../ClassicEditor/ckeditor5-ui/src/colorselector/colorpickerfragmentview.ts","../ClassicEditor/ckeditor5-ui/theme/components/colorselector/colorselector.css?c433","../ClassicEditor/ckeditor5-ui/src/colorselector/colorselectorview.ts","../ClassicEditor/ckeditor5-ui/src/componentfactory.ts","../ClassicEditor/ckeditor5-ui/theme/components/panel/balloonpanel.css?69dc","../ClassicEditor/ckeditor5-ui/src/panel/balloon/balloonpanelview.ts","../ClassicEditor/ckeditor5-ui/theme/components/tooltip/tooltip.css?c7bf","../ClassicEditor/ckeditor5-ui/src/tooltipmanager.ts","../ClassicEditor/javascript/node_modules/lodash-es/throttle.js","../ClassicEditor/ckeditor5-ui/src/editorui/poweredby.ts","../ClassicEditor/ckeditor5-utils/src/verifylicense.ts","../ClassicEditor/ckeditor5-ui/theme/icons/project-logo.svg","../ClassicEditor/ckeditor5-ui/src/editorui/editorui.ts","../ClassicEditor/ckeditor5-ui/theme/components/editorui/editorui.css?e51b","../ClassicEditor/ckeditor5-ui/src/editorui/editoruiview.ts","../ClassicEditor/ckeditor5-ui/src/editorui/boxed/boxededitoruiview.ts","../ClassicEditor/ckeditor5-ui/src/editableui/editableuiview.ts","../ClassicEditor/ckeditor5-ui/src/editableui/inline/inlineeditableuiview.ts","../ClassicEditor/ckeditor5-ui/theme/components/formheader/formheader.css?322e","../ClassicEditor/ckeditor5-ui/src/formheader/formheaderview.ts","../ClassicEditor/ckeditor5-ui/src/notification/notification.ts","../ClassicEditor/ckeditor5-ui/src/model.ts","../ClassicEditor/ckeditor5-ui/theme/components/panel/balloonrotator.css?580a","../ClassicEditor/ckeditor5-ui/theme/components/panel/fakepanel.css?9740","../ClassicEditor/ckeditor5-ui/src/panel/balloon/contextualballoon.ts","../ClassicEditor/ckeditor5-ui/theme/icons/previous-arrow.svg","../ClassicEditor/ckeditor5-ui/theme/icons/next-arrow.svg","../ClassicEditor/ckeditor5-ui/theme/components/panel/stickypanel.css?4553","../ClassicEditor/ckeditor5-ui/src/panel/sticky/stickypanelview.ts","../ClassicEditor/ckeditor5-utils/src/dom/getscrollableancestors.ts","../ClassicEditor/ckeditor5-utils/src/dom/getelementsintersectionrect.ts","../ClassicEditor/ckeditor5-ui/src/toolbar/balloon/balloontoolbar.ts","../ClassicEditor/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css?edd0","../ClassicEditor/ckeditor5-ui/src/toolbar/block/blockbuttonview.ts","../ClassicEditor/ckeditor5-ui/src/toolbar/block/blocktoolbar.ts","../ClassicEditor/ckeditor5-editor-classic/src/classiceditorui.ts","../ClassicEditor/ckeditor5-editor-classic/theme/classiceditor.css?1fa4","../ClassicEditor/ckeditor5-editor-classic/src/classiceditoruiview.ts","../ClassicEditor/ckeditor5-watchdog/src/watchdog.ts","../ClassicEditor/ckeditor5-watchdog/src/utils/getsubnodes.ts","../ClassicEditor/ckeditor5-watchdog/src/utils/areconnectedthroughproperties.ts","../ClassicEditor/ckeditor5-watchdog/src/editorwatchdog.ts","../ClassicEditor/ckeditor5-watchdog/src/contextwatchdog.ts","../ClassicEditor/ckeditor5-editor-classic/src/classiceditor.ts","../ClassicEditor/ckeditor5-utils/src/dom/getdatafromelement.ts","../ClassicEditor/ckeditor5-core/src/editor/utils/attachtoform.ts","../ClassicEditor/ckeditor5-clipboard/src/clipboardobserver.ts","../ClassicEditor/ckeditor5-clipboard/src/utils/viewtoplaintext.ts","../ClassicEditor/ckeditor5-clipboard/src/clipboardpipeline.ts","../ClassicEditor/ckeditor5-clipboard/src/utils/plaintexttohtml.ts","../ClassicEditor/ckeditor5-clipboard/src/utils/normalizeclipboarddata.ts","../ClassicEditor/ckeditor5-typing/src/utils/changebuffer.ts","../ClassicEditor/ckeditor5-typing/src/inserttextcommand.ts","../ClassicEditor/ckeditor5-typing/src/inserttextobserver.ts","../ClassicEditor/ckeditor5-typing/src/input.ts","../ClassicEditor/ckeditor5-typing/src/deletecommand.ts","../ClassicEditor/ckeditor5-typing/src/deleteobserver.ts","../ClassicEditor/ckeditor5-typing/src/delete.ts","../ClassicEditor/ckeditor5-typing/src/typing.ts","../ClassicEditor/ckeditor5-typing/src/utils/getlasttextline.ts","../ClassicEditor/ckeditor5-typing/src/textwatcher.ts","../ClassicEditor/ckeditor5-typing/src/twostepcaretmovement.ts","../ClassicEditor/javascript/node_modules/lodash-es/escapeRegExp.js","../ClassicEditor/ckeditor5-typing/src/texttransformation.ts","../ClassicEditor/ckeditor5-typing/src/utils/findattributerange.ts","../ClassicEditor/ckeditor5-enter/src/entercommand.ts","../ClassicEditor/ckeditor5-enter/src/enterobserver.ts","../ClassicEditor/ckeditor5-enter/src/enter.ts","../ClassicEditor/ckeditor5-enter/src/shiftentercommand.ts","../ClassicEditor/ckeditor5-enter/src/shiftenter.ts","../ClassicEditor/ckeditor5-widget/src/highlightstack.ts","../ClassicEditor/ckeditor5-widget/theme/icons/drag-handle.svg","../ClassicEditor/ckeditor5-widget/src/utils.ts","../ClassicEditor/ckeditor5-widget/src/widgettypearound/utils.ts","../ClassicEditor/ckeditor5-widget/theme/widgettypearound.css?6f95","../ClassicEditor/ckeditor5-widget/src/widgettypearound/widgettypearound.ts","../ClassicEditor/ckeditor5-widget/theme/icons/return-arrow.svg","../ClassicEditor/ckeditor5-widget/src/verticalnavigation.ts","../ClassicEditor/ckeditor5-widget/theme/widget.css?85b1","../ClassicEditor/ckeditor5-widget/src/widget.ts","../ClassicEditor/ckeditor5-widget/src/widgettoolbarrepository.ts","../ClassicEditor/ckeditor5-widget/src/widgetresize/resizerstate.ts","../ClassicEditor/ckeditor5-widget/src/widgetresize/sizeview.ts","../ClassicEditor/ckeditor5-widget/src/widgetresize/resizer.ts","../ClassicEditor/ckeditor5-widget/theme/widgetresize.css?8599","../ClassicEditor/ckeditor5-widget/src/widgetresize.ts","../ClassicEditor/ckeditor5-clipboard/theme/clipboard.css?ab7a","../ClassicEditor/ckeditor5-clipboard/src/dragdrop.ts","../ClassicEditor/ckeditor5-clipboard/src/pasteplaintext.ts","../ClassicEditor/ckeditor5-clipboard/src/clipboard.ts","../ClassicEditor/ckeditor5-clipboard/src/lineview.ts","../ClassicEditor/ckeditor5-select-all/src/selectallcommand.ts","../ClassicEditor/ckeditor5-select-all/src/selectallediting.ts","../ClassicEditor/ckeditor5-select-all/src/selectallui.ts","../ClassicEditor/ckeditor5-select-all/theme/icons/select-all.svg","../ClassicEditor/ckeditor5-select-all/src/selectall.ts","../ClassicEditor/ckeditor5-undo/src/basecommand.ts","../ClassicEditor/ckeditor5-undo/src/undocommand.ts","../ClassicEditor/ckeditor5-undo/src/redocommand.ts","../ClassicEditor/ckeditor5-undo/src/undoediting.ts","../ClassicEditor/ckeditor5-undo/theme/icons/undo.svg","../ClassicEditor/ckeditor5-undo/theme/icons/redo.svg","../ClassicEditor/ckeditor5-undo/src/undoui.ts","../ClassicEditor/ckeditor5-undo/src/undo.ts","../ClassicEditor/ckeditor5-upload/src/filereader.ts","../ClassicEditor/ckeditor5-upload/src/filerepository.ts","../ClassicEditor/ckeditor5-upload/src/ui/filedialogbuttonview.ts","../ClassicEditor/ckeditor5-adapter-ckfinder/src/utils.ts","../ClassicEditor/ckeditor5-adapter-ckfinder/src/uploadadapter.ts","../ClassicEditor/ckeditor5-autoformat/src/blockautoformatediting.ts","../ClassicEditor/ckeditor5-autoformat/src/inlineautoformatediting.ts","../ClassicEditor/ckeditor5-autoformat/src/autoformat.ts","../ClassicEditor/ckeditor5-basic-styles/src/attributecommand.ts","../ClassicEditor/ckeditor5-basic-styles/src/bold/boldediting.ts","../ClassicEditor/ckeditor5-basic-styles/src/bold/boldui.ts","../ClassicEditor/ckeditor5-basic-styles/theme/code.css?985e","../ClassicEditor/ckeditor5-basic-styles/src/italic/italicediting.ts","../ClassicEditor/ckeditor5-basic-styles/src/italic/italicui.ts","../ClassicEditor/ckeditor5-basic-styles/theme/icons/italic.svg","../ClassicEditor/ckeditor5-block-quote/src/blockquotecommand.ts","../ClassicEditor/ckeditor5-block-quote/src/blockquoteediting.ts","../ClassicEditor/ckeditor5-block-quote/theme/blockquote.css?5a6d","../ClassicEditor/ckeditor5-block-quote/src/blockquoteui.ts","../ClassicEditor/ckeditor5-ckfinder/src/ckfinderui.ts","../ClassicEditor/ckeditor5-ckfinder/theme/icons/browse-files.svg","../ClassicEditor/ckeditor5-ckfinder/src/ckfindercommand.ts","../ClassicEditor/ckeditor5-ckfinder/src/ckfinderediting.ts","../ClassicEditor/ckeditor5-easy-image/src/cloudservicesuploadadapter.ts","../ClassicEditor/ckeditor5-paragraph/src/paragraphcommand.ts","../ClassicEditor/ckeditor5-paragraph/src/insertparagraphcommand.ts","../ClassicEditor/ckeditor5-paragraph/src/paragraph.ts","../ClassicEditor/ckeditor5-heading/src/headingcommand.ts","../ClassicEditor/ckeditor5-heading/src/headingediting.ts","../ClassicEditor/ckeditor5-heading/theme/heading.css?c486","../ClassicEditor/ckeditor5-heading/src/headingui.ts","../ClassicEditor/ckeditor5-heading/src/utils.ts","../ClassicEditor/ckeditor5-image/src/image/utils.ts","../ClassicEditor/ckeditor5-image/src/imageutils.ts","../ClassicEditor/ckeditor5-image/src/autoimage.ts","../ClassicEditor/ckeditor5-image/src/imagetextalternative/imagetextalternativecommand.ts","../ClassicEditor/ckeditor5-image/src/imagetextalternative/imagetextalternativeediting.ts","../ClassicEditor/ckeditor5-image/theme/textalternativeform.css?1540","../ClassicEditor/ckeditor5-ui/theme/components/responsive-form/responsiveform.css?643e","../ClassicEditor/ckeditor5-image/src/imagetextalternative/ui/textalternativeformview.ts","../ClassicEditor/ckeditor5-image/src/image/ui/utils.ts","../ClassicEditor/ckeditor5-image/src/imagetextalternative/imagetextalternativeui.ts","../ClassicEditor/ckeditor5-image/src/imagetextalternative.ts","../ClassicEditor/ckeditor5-image/src/image/converters.ts","../ClassicEditor/ckeditor5-image/src/image/imageloadobserver.ts","../ClassicEditor/ckeditor5-image/src/image/insertimagecommand.ts","../ClassicEditor/ckeditor5-image/src/image/replaceimagesourcecommand.ts","../ClassicEditor/ckeditor5-image/src/image/imageediting.ts","../ClassicEditor/ckeditor5-image/src/image/imagetypecommand.ts","../ClassicEditor/ckeditor5-image/src/image/imageblockediting.ts","../ClassicEditor/ckeditor5-image/theme/image.css?c23e","../ClassicEditor/ckeditor5-image/src/imageblock.ts","../ClassicEditor/ckeditor5-image/src/image/imageinlineediting.ts","../ClassicEditor/ckeditor5-image/src/imageinline.ts","../ClassicEditor/ckeditor5-image/src/imagecaption/imagecaptionutils.ts","../ClassicEditor/ckeditor5-image/src/imagecaption/toggleimagecaptioncommand.ts","../ClassicEditor/ckeditor5-image/src/imagecaption/imagecaptionediting.ts","../ClassicEditor/ckeditor5-image/src/imagecaption/imagecaptionui.ts","../ClassicEditor/ckeditor5-image/theme/imagecaption.css?fbd1","../ClassicEditor/ckeditor5-image/src/imageupload/mimeTypes.ts","../ClassicEditor/ckeditor5-image/src/imageupload/utils.ts","../ClassicEditor/ckeditor5-image/src/imageupload/imageuploadui.ts","../ClassicEditor/ckeditor5-image/theme/icons/upload-media.svg","../ClassicEditor/ckeditor5-image/theme/imageuploadprogress.css?3fdd","../ClassicEditor/ckeditor5-image/theme/imageuploadicon.css?e799","../ClassicEditor/ckeditor5-image/theme/imageuploadloader.css?4493","../ClassicEditor/ckeditor5-image/src/imageupload/imageuploadprogress.ts","../ClassicEditor/ckeditor5-image/src/imageupload/uploadimagecommand.ts","../ClassicEditor/ckeditor5-image/src/imageupload/imageuploadediting.ts","../ClassicEditor/node_modules/@flockjay/ckeditor5-file-upload/src/mimeTypes.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-file-upload/src/utils.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-file-upload/src/fileuploadcommand.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-file-upload/src/fileuploadediting.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-file-upload/src/fileuploadui.js","../ClassicEditor/node_modules/raw-loader/dist/node_modules/@flockjay/ckeditor5-file-upload/theme/icons/fileupload.svg","../ClassicEditor/node_modules/@flockjay/ckeditor5-file-upload/fileupload.js","../ClassicEditor/ckeditor5-image/theme/imageinsertformrowview.css?4e22","../ClassicEditor/ckeditor5-image/theme/imageinsert.css?2858","../ClassicEditor/ckeditor5-image/src/imageresize/resizeimagecommand.ts","../ClassicEditor/ckeditor5-image/src/imageresize/imageresizehandles.ts","../ClassicEditor/ckeditor5-image/theme/imageresize.css?f537","../ClassicEditor/ckeditor5-image/src/imagestyle/imagestylecommand.ts","../ClassicEditor/ckeditor5-image/src/imagestyle/utils.ts","../ClassicEditor/ckeditor5-image/src/imagestyle/converters.ts","../ClassicEditor/ckeditor5-image/src/imagestyle/imagestyleediting.ts","../ClassicEditor/ckeditor5-image/theme/imagestyle.css?bc8e","../ClassicEditor/ckeditor5-image/src/imagestyle/imagestyleui.ts","../ClassicEditor/ckeditor5-indent/src/indentediting.ts","../ClassicEditor/ckeditor5-indent/theme/icons/indent.svg","../ClassicEditor/ckeditor5-indent/theme/icons/outdent.svg","../ClassicEditor/ckeditor5-indent/src/indentui.ts","../ClassicEditor/ckeditor5-indent/src/indentblockcommand.ts","../ClassicEditor/ckeditor5-indent/src/indentcommandbehavior/indentusingoffset.ts","../ClassicEditor/ckeditor5-indent/src/indentcommandbehavior/indentusingclasses.ts","../ClassicEditor/ckeditor5-indent/src/indentblock.ts","../ClassicEditor/ckeditor5-link/src/utils/automaticdecorators.ts","../ClassicEditor/javascript/node_modules/lodash-es/_castSlice.js","../ClassicEditor/javascript/node_modules/lodash-es/_hasUnicode.js","../ClassicEditor/javascript/node_modules/lodash-es/_asciiToArray.js","../ClassicEditor/javascript/node_modules/lodash-es/_unicodeToArray.js","../ClassicEditor/javascript/node_modules/lodash-es/_stringToArray.js","../ClassicEditor/javascript/node_modules/lodash-es/upperFirst.js","../ClassicEditor/javascript/node_modules/lodash-es/_createCaseFirst.js","../ClassicEditor/ckeditor5-link/src/utils.ts","../ClassicEditor/ckeditor5-link/src/linkcommand.ts","../ClassicEditor/ckeditor5-link/src/unlinkcommand.ts","../ClassicEditor/ckeditor5-link/src/utils/manualdecorator.ts","../ClassicEditor/ckeditor5-link/theme/link.css?2bbb","../ClassicEditor/ckeditor5-link/src/linkediting.ts","../ClassicEditor/ckeditor5-typing/src/utils/inlinehighlight.ts","../ClassicEditor/ckeditor5-link/theme/linkform.css?91e4","../ClassicEditor/ckeditor5-link/src/ui/linkformview.ts","../ClassicEditor/ckeditor5-link/theme/linkactions.css?bbc6","../ClassicEditor/ckeditor5-link/src/ui/linkactionsview.ts","../ClassicEditor/ckeditor5-link/theme/icons/unlink.svg","../ClassicEditor/ckeditor5-link/theme/icons/link.svg","../ClassicEditor/ckeditor5-link/src/linkui.ts","../ClassicEditor/ckeditor5-link/src/autolink.ts","../ClassicEditor/ckeditor5-link/src/linkimageediting.ts","../ClassicEditor/ckeditor5-link/src/linkimageui.ts","../ClassicEditor/ckeditor5-link/theme/linkimage.css?4624","../ClassicEditor/ckeditor5-list/src/documentlist/utils/listwalker.ts","../ClassicEditor/ckeditor5-list/theme/documentlist.css?2655","../ClassicEditor/ckeditor5-list/theme/list.css?89de","../ClassicEditor/ckeditor5-list/src/list/utils.ts","../ClassicEditor/ckeditor5-list/src/documentlistproperties/utils/style.ts","../ClassicEditor/ckeditor5-list/src/list/listui.ts","../ClassicEditor/ckeditor5-list/theme/icons/numberedlist.svg","../ClassicEditor/ckeditor5-list/theme/icons/bulletedlist.svg","../ClassicEditor/ckeditor5-list/theme/collapsible.css?bc89","../ClassicEditor/ckeditor5-list/theme/listproperties.css?617f","../ClassicEditor/ckeditor5-list/theme/liststyles.css?4e4d","../ClassicEditor/ckeditor5-list/src/list/indentcommand.ts","../ClassicEditor/ckeditor5-list/src/list/listcommand.ts","../ClassicEditor/ckeditor5-list/src/list/listutils.ts","../ClassicEditor/ckeditor5-list/src/list/converters.ts","../ClassicEditor/ckeditor5-list/src/list/listediting.ts","../ClassicEditor/ckeditor5-list/src/todolist/todolistediting.ts","../ClassicEditor/ckeditor5-list/theme/todolist.css?b9a9","../ClassicEditor/ckeditor5-media-embed/src/converters.ts","../ClassicEditor/ckeditor5-media-embed/src/utils.ts","../ClassicEditor/ckeditor5-media-embed/src/mediaembedcommand.ts","../ClassicEditor/ckeditor5-media-embed/src/mediaregistry.ts","../ClassicEditor/ckeditor5-media-embed/theme/icons/media-placeholder.svg","../ClassicEditor/ckeditor5-media-embed/theme/mediaembedediting.css?5708","../ClassicEditor/ckeditor5-media-embed/src/mediaembedediting.ts","../ClassicEditor/ckeditor5-media-embed/src/automediaembed.ts","../ClassicEditor/ckeditor5-media-embed/theme/mediaform.css?2610","../ClassicEditor/ckeditor5-media-embed/src/ui/mediaformview.ts","../ClassicEditor/ckeditor5-media-embed/src/mediaembedui.ts","../ClassicEditor/ckeditor5-media-embed/theme/icons/media.svg","../ClassicEditor/ckeditor5-media-embed/theme/mediaembed.css?9783","../ClassicEditor/ckeditor5-paste-from-office/src/filters/list.ts","../ClassicEditor/ckeditor5-paste-from-office/src/filters/image.ts","../ClassicEditor/ckeditor5-paste-from-office/src/normalizers/mswordnormalizer.ts","../ClassicEditor/ckeditor5-paste-from-office/src/filters/table.ts","../ClassicEditor/ckeditor5-paste-from-office/src/filters/br.ts","../ClassicEditor/ckeditor5-paste-from-office/src/normalizers/googledocsnormalizer.ts","../ClassicEditor/ckeditor5-paste-from-office/src/filters/removeboldwrapper.ts","../ClassicEditor/ckeditor5-paste-from-office/src/normalizers/googlesheetsnormalizer.ts","../ClassicEditor/ckeditor5-paste-from-office/src/filters/removegooglesheetstag.ts","../ClassicEditor/ckeditor5-paste-from-office/src/filters/removexmlns.ts","../ClassicEditor/ckeditor5-paste-from-office/src/filters/removeinvalidtablewidth.ts","../ClassicEditor/ckeditor5-paste-from-office/src/filters/removestyleblock.ts","../ClassicEditor/ckeditor5-paste-from-office/src/filters/space.ts","../ClassicEditor/ckeditor5-paste-from-office/src/filters/parse.ts","../ClassicEditor/ckeditor5-table/src/converters/tableproperties.ts","../ClassicEditor/ckeditor5-table/src/utils/common.ts","../ClassicEditor/ckeditor5-table/src/converters/upcasttable.ts","../ClassicEditor/ckeditor5-table/src/tablewalker.ts","../ClassicEditor/ckeditor5-table/src/converters/downcast.ts","../ClassicEditor/ckeditor5-table/src/commands/inserttablecommand.ts","../ClassicEditor/ckeditor5-table/src/commands/insertrowcommand.ts","../ClassicEditor/ckeditor5-table/src/commands/insertcolumncommand.ts","../ClassicEditor/ckeditor5-table/src/commands/splitcellcommand.ts","../ClassicEditor/ckeditor5-table/src/utils/structure.ts","../ClassicEditor/ckeditor5-table/src/commands/mergecellcommand.ts","../ClassicEditor/ckeditor5-table/src/commands/removerowcommand.ts","../ClassicEditor/ckeditor5-table/src/commands/removecolumncommand.ts","../ClassicEditor/ckeditor5-table/src/commands/setheaderrowcommand.ts","../ClassicEditor/ckeditor5-table/src/commands/setheadercolumncommand.ts","../ClassicEditor/ckeditor5-table/src/tableutils.ts","../ClassicEditor/ckeditor5-table/src/commands/mergecellscommand.ts","../ClassicEditor/ckeditor5-table/src/commands/selectrowcommand.ts","../ClassicEditor/ckeditor5-table/src/commands/selectcolumncommand.ts","../ClassicEditor/ckeditor5-table/src/converters/table-layout-post-fixer.ts","../ClassicEditor/ckeditor5-table/src/converters/table-cell-paragraph-post-fixer.ts","../ClassicEditor/ckeditor5-table/src/converters/table-cell-refresh-handler.ts","../ClassicEditor/ckeditor5-table/theme/tableediting.css?f65e","../ClassicEditor/ckeditor5-table/src/tableediting.ts","../ClassicEditor/ckeditor5-table/src/converters/table-headings-refresh-handler.ts","../ClassicEditor/ckeditor5-table/theme/inserttable.css?466f","../ClassicEditor/ckeditor5-table/src/ui/inserttableview.ts","../ClassicEditor/ckeditor5-table/src/tableui.ts","../ClassicEditor/ckeditor5-table/theme/icons/table.svg","../ClassicEditor/ckeditor5-table/theme/icons/table-column.svg","../ClassicEditor/ckeditor5-table/theme/icons/table-row.svg","../ClassicEditor/ckeditor5-table/theme/icons/table-merge-cell.svg","../ClassicEditor/ckeditor5-table/theme/tableselection.css?ee02","../ClassicEditor/ckeditor5-table/src/tableselection.ts","../ClassicEditor/ckeditor5-table/src/tableclipboard.ts","../ClassicEditor/ckeditor5-table/src/tablekeyboard.ts","../ClassicEditor/ckeditor5-table/src/tablemouse/mouseeventsobserver.ts","../ClassicEditor/ckeditor5-table/src/tablemouse.ts","../ClassicEditor/ckeditor5-table/theme/table.css?fded","../ClassicEditor/ckeditor5-table/src/utils/ui/widget.ts","../ClassicEditor/ckeditor5-table/theme/colorinput.css?2edd","../ClassicEditor/ckeditor5-table/src/ui/colorinputview.ts","../ClassicEditor/ckeditor5-table/src/utils/ui/table-properties.ts","../ClassicEditor/ckeditor5-table/theme/formrow.css?813a","../ClassicEditor/ckeditor5-table/src/ui/formrowview.ts","../ClassicEditor/ckeditor5-table/theme/form.css?6b23","../ClassicEditor/ckeditor5-table/theme/tableform.css?6102","../ClassicEditor/ckeditor5-table/theme/tablecellproperties.css?e7e9","../ClassicEditor/ckeditor5-table/src/tablecellproperties/ui/tablecellpropertiesview.ts","../ClassicEditor/ckeditor5-table/src/utils/ui/contextualballoon.ts","../ClassicEditor/ckeditor5-table/src/utils/table-properties.ts","../ClassicEditor/ckeditor5-table/src/tablecellproperties/tablecellpropertiesui.ts","../ClassicEditor/ckeditor5-table/theme/icons/table-cell-properties.svg","../ClassicEditor/ckeditor5-table/src/tablecellproperties/commands/tablecellpropertycommand.ts","../ClassicEditor/ckeditor5-table/src/tablecellwidth/commands/tablecellwidthcommand.ts","../ClassicEditor/ckeditor5-table/src/tablecellwidth/tablecellwidthediting.ts","../ClassicEditor/ckeditor5-table/src/tablecellproperties/commands/tablecellpaddingcommand.ts","../ClassicEditor/ckeditor5-table/src/tablecellproperties/commands/tablecellheightcommand.ts","../ClassicEditor/ckeditor5-table/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.ts","../ClassicEditor/ckeditor5-table/src/tablecellproperties/commands/tablecellverticalalignmentcommand.ts","../ClassicEditor/ckeditor5-table/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.ts","../ClassicEditor/ckeditor5-table/src/tablecellproperties/commands/tablecellborderstylecommand.ts","../ClassicEditor/ckeditor5-table/src/tablecellproperties/commands/tablecellbordercolorcommand.ts","../ClassicEditor/ckeditor5-table/src/tablecellproperties/commands/tablecellborderwidthcommand.ts","../ClassicEditor/ckeditor5-table/src/tablecellproperties/tablecellpropertiesediting.ts","../ClassicEditor/ckeditor5-table/src/tableproperties/commands/tablepropertycommand.ts","../ClassicEditor/ckeditor5-table/src/tableproperties/commands/tablebackgroundcolorcommand.ts","../ClassicEditor/ckeditor5-table/src/tableproperties/commands/tablebordercolorcommand.ts","../ClassicEditor/ckeditor5-table/src/tableproperties/commands/tableborderstylecommand.ts","../ClassicEditor/ckeditor5-table/src/tableproperties/commands/tableborderwidthcommand.ts","../ClassicEditor/ckeditor5-table/src/tableproperties/commands/tablewidthcommand.ts","../ClassicEditor/ckeditor5-table/src/tableproperties/commands/tableheightcommand.ts","../ClassicEditor/ckeditor5-table/src/tableproperties/commands/tablealignmentcommand.ts","../ClassicEditor/ckeditor5-table/src/tableproperties/tablepropertiesediting.ts","../ClassicEditor/ckeditor5-table/theme/tableproperties.css?fbdb","../ClassicEditor/ckeditor5-table/src/tableproperties/ui/tablepropertiesview.ts","../ClassicEditor/ckeditor5-table/theme/icons/table-properties.svg","../ClassicEditor/ckeditor5-table/src/tableproperties/tablepropertiesui.ts","../ClassicEditor/ckeditor5-table/src/converters/table-caption-post-fixer.ts","../ClassicEditor/ckeditor5-table/src/tablecaption/utils.ts","../ClassicEditor/ckeditor5-table/src/tablecaption/toggletablecaptioncommand.ts","../ClassicEditor/ckeditor5-table/src/tablecaption/tablecaptionediting.ts","../ClassicEditor/ckeditor5-table/src/tablecaption/tablecaptionui.ts","../ClassicEditor/ckeditor5-table/theme/tablecaption.css?327b","../ClassicEditor/ckeditor5-table/src/tablecolumnresize/constants.ts","../ClassicEditor/ckeditor5-table/src/tablecolumnresize/utils.ts","../ClassicEditor/ckeditor5-table/src/tablecolumnresize/tablewidthscommand.ts","../ClassicEditor/ckeditor5-table/src/tablecolumnresize/tablecolumnresizeediting.ts","../ClassicEditor/ckeditor5-table/src/tablecolumnresize/converters.ts","../ClassicEditor/ckeditor5-table/theme/tablecolumnresize.css?00bf","../ClassicEditor/ckeditor5-cloud-services/src/token/token.ts","../ClassicEditor/ckeditor5-cloud-services/src/uploadgateway/fileuploader.ts","../ClassicEditor/ckeditor5-cloud-services/src/uploadgateway/uploadgateway.ts","../ClassicEditor/ckeditor5-cloud-services/src/cloudservicescore.ts","../ClassicEditor/ckeditor5-html-embed/src/htmlembedcommand.ts","../ClassicEditor/ckeditor5-html-embed/theme/htmlembed.css?ac38","../ClassicEditor/ckeditor5-html-embed/src/htmlembedediting.ts","../ClassicEditor/ckeditor5-html-embed/src/htmlembedui.ts","../ClassicEditor/ckeditor5-html-embed/theme/icons/html.svg","../ClassicEditor/ckeditor5-mention/src/mentioncommand.ts","../ClassicEditor/ckeditor5-mention/src/mentionediting.ts","../ClassicEditor/ckeditor5-mention/theme/mentionui.css?153b","../ClassicEditor/ckeditor5-mention/src/ui/mentionsview.ts","../ClassicEditor/ckeditor5-mention/src/ui/domwrapperview.ts","../ClassicEditor/ckeditor5-mention/src/ui/mentionlistitemview.ts","../ClassicEditor/ckeditor5-mention/src/mentionui.ts","../ClassicEditor/ckeditor5-mention/theme/mention.css?c371","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/video/utils.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoutils.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/video/converters.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/video/videoloadobserver.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/video/insertvideocommand.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/video/videoediting.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/video/videotypecommand.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/video/videoblockediting.js","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/video.css","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoblock.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/video/videoinlineediting.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoinline.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoupload/utils.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoupload/videouploadui.js","../ClassicEditor/node_modules/raw-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/icons/video.svg","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoupload/uploadvideocommand.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoupload/videouploadediting.js","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/videouploadprogress.css","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/videouploadicon.css","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/videouploadloader.css","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoupload/videouploadprogress.js","../ClassicEditor/node_modules/raw-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/icons/video_placeholder.svg","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoupload.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoresize/resizevideocommand.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoresize/videoresizeediting.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoresize/videoresizehandles.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoresize/videoresizebuttons.js","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/videoresize.css","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videostyle/videostylecommand.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videostyle/utils.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videostyle/converters.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videostyle/videostyleediting.js","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/videostyle.css","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videostyle/videostyleui.js","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/videoinsertformrowview.css","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoinsert/ui/videoinsertformrowview.js","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-video/theme/videoinsert.css","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoinsert/ui/videoinsertpanelview.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoinsert/utils.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoinsert/videoinsertui.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audio/utils.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audio/audioloadobserver.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audio/converters.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audio/audioinsertcommand.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audio/audioediting.js","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-audio/theme/audio.css","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audioupload/utils.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audioupload/audiouploadui.js","../ClassicEditor/node_modules/raw-loader/dist/node_modules/@flockjay/ckeditor5-audio/theme/icons/audio.svg","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audioupload/uploadaudiocommand.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audioupload/audiouploadediting.js","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-audio/theme/audiouploadprogress.css","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-audio/theme/audiouploadicon.css","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-audio/theme/audiouploadloader.css","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audioupload/audiouploadprogress.js","../ClassicEditor/node_modules/raw-loader/dist/node_modules/@flockjay/ckeditor5-audio/theme/icons/audio_placeholder.svg","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-audio/theme/audioresize.css","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audioresize/audioresizecommand.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audioresize/audioresizeediting.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audioresize/audioresizehandles.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audioresize/audioresizebuttons.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audiostyle/audiostylecommand.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audiostyle/converters.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audiostyle/utils.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audiostyle/audiostyleediting.js","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@flockjay/ckeditor5-audio/theme/audiostyle.css","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audiostyle/audiostyleui.js","../ClassicEditor/node_modules/@phudak/ckeditor5-emoji/src/ui/emojicharactersnavigationview.js","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@phudak/ckeditor5-emoji/theme/charactergrid.css","../ClassicEditor/node_modules/@phudak/ckeditor5-emoji/src/ui/charactergridview.js","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@phudak/ckeditor5-emoji/theme/characterinfo.css","../ClassicEditor/node_modules/@phudak/ckeditor5-emoji/src/ui/characterinfoview.js","../ClassicEditor/node_modules/style-loader/dist/node_modules/css-loader/dist/node_modules/postcss-loader/dist/node_modules/@phudak/ckeditor5-emoji/theme/emoji-characters.css","../ClassicEditor/node_modules/@phudak/ckeditor5-emoji/src/emoji.js","../ClassicEditor/theme/emoji.css?34df","../ClassicEditor/ckeditor5-alignment/src/utils.ts","../ClassicEditor/ckeditor5-alignment/src/alignmentcommand.ts","../ClassicEditor/ckeditor5-alignment/src/alignmentediting.ts","../ClassicEditor/ckeditor5-alignment/src/alignmentui.ts","../ClassicEditor/ckeditor5-font/src/fontcommand.ts","../ClassicEditor/ckeditor5-font/src/utils.ts","../ClassicEditor/ckeditor5-font/src/fontfamily/fontfamilycommand.ts","../ClassicEditor/ckeditor5-font/src/fontfamily/utils.ts","../ClassicEditor/ckeditor5-font/src/fontfamily/fontfamilyediting.ts","../ClassicEditor/ckeditor5-font/src/fontfamily/fontfamilyui.ts","../ClassicEditor/ckeditor5-font/theme/icons/font-family.svg","../ClassicEditor/ckeditor5-font/src/fontsize/fontsizecommand.ts","../ClassicEditor/ckeditor5-font/src/fontsize/utils.ts","../ClassicEditor/ckeditor5-font/src/fontsize/fontsizeediting.ts","../ClassicEditor/ckeditor5-font/theme/fontsize.css?2aea","../ClassicEditor/ckeditor5-font/src/fontsize/fontsizeui.ts","../ClassicEditor/ckeditor5-font/theme/icons/font-size.svg","../ClassicEditor/ckeditor5-font/src/fontcolor/fontcolorcommand.ts","../ClassicEditor/ckeditor5-font/src/fontcolor/fontcolorediting.ts","../ClassicEditor/ckeditor5-font/src/ui/colorui.ts","../ClassicEditor/ckeditor5-font/src/fontcolor/fontcolorui.ts","../ClassicEditor/ckeditor5-font/theme/icons/font-color.svg","../ClassicEditor/ckeditor5-font/src/fontbackgroundcolor/fontbackgroundcolorcommand.ts","../ClassicEditor/ckeditor5-font/src/fontbackgroundcolor/fontbackgroundcolorediting.ts","../ClassicEditor/ckeditor5-font/src/fontbackgroundcolor/fontbackgroundcolorui.ts","../ClassicEditor/ckeditor5-font/theme/icons/font-background.svg","../ClassicEditor/src/ckeditor.ts","../ClassicEditor/ckeditor5-alignment/src/alignment.ts","../ClassicEditor/ckeditor5-essentials/src/essentials.ts","../ClassicEditor/ckeditor5-basic-styles/src/bold.ts","../ClassicEditor/ckeditor5-basic-styles/src/italic.ts","../ClassicEditor/ckeditor5-block-quote/src/blockquote.ts","../ClassicEditor/ckeditor5-ckfinder/src/ckfinder.ts","../ClassicEditor/ckeditor5-cloud-services/src/cloudservices.ts","../ClassicEditor/ckeditor5-easy-image/src/easyimage.ts","../ClassicEditor/ckeditor5-heading/src/heading.ts","../ClassicEditor/ckeditor5-font/src/fontfamily.ts","../ClassicEditor/ckeditor5-font/src/fontsize.ts","../ClassicEditor/ckeditor5-font/src/fontcolor.ts","../ClassicEditor/ckeditor5-font/src/fontbackgroundcolor.ts","../ClassicEditor/ckeditor5-image/src/image.ts","../ClassicEditor/ckeditor5-image/src/imagecaption.ts","../ClassicEditor/ckeditor5-image/src/imagestyle.ts","../ClassicEditor/ckeditor5-image/src/imagetoolbar.ts","../ClassicEditor/ckeditor5-image/src/imageupload.ts","../ClassicEditor/ckeditor5-image/src/imageresize/imageresizeediting.ts","../ClassicEditor/ckeditor5-link/src/linkimage.ts","../ClassicEditor/ckeditor5-indent/src/indent.ts","../ClassicEditor/ckeditor5-link/src/link.ts","../ClassicEditor/ckeditor5-list/src/list.ts","../ClassicEditor/ckeditor5-media-embed/src/mediaembed.ts","../ClassicEditor/ckeditor5-paste-from-office/src/pastefromoffice.ts","../ClassicEditor/ckeditor5-table/src/table.ts","../ClassicEditor/ckeditor5-table/src/tabletoolbar.ts","../ClassicEditor/ckeditor5-table/src/tableproperties.ts","../ClassicEditor/ckeditor5-table/src/tablecellproperties.ts","../ClassicEditor/ckeditor5-table/src/tablecolumnresize.ts","../ClassicEditor/ckeditor5-table/src/tablecaption.ts","../ClassicEditor/ckeditor5-html-embed/src/htmlembed.ts","../ClassicEditor/ckeditor5-mention/src/mention.ts","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videotoolbar.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/video.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoresize.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videostyle.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-video/src/videoinsert.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audiotoolbar.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audio.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audioupload.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audioresize.js","../ClassicEditor/node_modules/@flockjay/ckeditor5-audio/src/audiostyle.js","../ClassicEditor/node_modules/raw-loader/dist/node_modules/@phudak/ckeditor5-emoji/theme/icons/emoji-icon.svg","../ClassicEditor/node_modules/@phudak/ckeditor5-emoji/src/emoji-people.js","../ClassicEditor/node_modules/@phudak/ckeditor5-emoji/src/emoji-nature.js","../ClassicEditor/node_modules/@phudak/ckeditor5-emoji/src/emoji-places.js","../ClassicEditor/node_modules/@phudak/ckeditor5-emoji/src/emoji-food.js","../ClassicEditor/node_modules/@phudak/ckeditor5-emoji/src/emoji-activity.js","../ClassicEditor/node_modules/@phudak/ckeditor5-emoji/src/emoji-objects.js","../ClassicEditor/node_modules/@phudak/ckeditor5-emoji/src/emoji-symbols.js","../ClassicEditor/node_modules/@phudak/ckeditor5-emoji/src/emoji-flags.js","../node_modules/classnames/index.js","../node_modules/clone/clone.js","../node_modules/copy-to-clipboard/index.js","../node_modules/create-ecdh/browser.js","../node_modules/create-hash/browser.js","../node_modules/create-hash/md5.js","../node_modules/create-hmac/browser.js","../node_modules/create-hmac/legacy.js","../node_modules/crypto/index.js","../node_modules/d3-regression/dist/d3-regression.js","../node_modules/decode-uri-component/index.js","../node_modules/deepmerge/dist/cjs.js","../node_modules/des.js/lib/des.js","../node_modules/des.js/lib/des/cbc.js","../node_modules/des.js/lib/des/cipher.js","../node_modules/des.js/lib/des/des.js","../node_modules/des.js/lib/des/ede.js","../node_modules/des.js/lib/des/utils.js","../node_modules/detect-browser/es/index.js","../node_modules/diffie-hellman/browser.js","../node_modules/diffie-hellman/lib/dh.js","../node_modules/diffie-hellman/lib/generatePrime.js","../node_modules/dom-serializer/lib/foreignNames.js","../node_modules/dom-serializer/lib/index.js","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode_codepoint.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/encode.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/escape.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-html.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-xml.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/encode-html.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/index.ts","../node_modules/domelementtype/lib/index.js","../node_modules/domhandler/lib/index.js","../node_modules/domhandler/lib/node.js","https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/feeds.ts","https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/helpers.ts","https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/index.ts","https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/legacy.ts","https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/manipulation.ts","https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/querying.ts","https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/stringify.ts","https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/traversal.ts","../node_modules/ebml-block/index.js","../node_modules/ebml-block/lib/buffer-reader.js","../node_modules/ebml-block/lib/vint.js","../node_modules/elliptic/lib/elliptic.js","../node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/elliptic/lib/elliptic/curve/edwards.js","../node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/elliptic/lib/elliptic/curve/mont.js","../node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/elliptic/lib/elliptic/curves.js","../node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/elliptic/lib/elliptic/eddsa/index.js","../node_modules/elliptic/lib/elliptic/eddsa/key.js","../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../node_modules/elliptic/lib/elliptic/utils.js","../node_modules/events/events.js","../node_modules/evp_bytestokey/index.js","../node_modules/fmin/build/fmin.js","../node_modules/formik-antd/src/auto-complete/index.tsx","../node_modules/formik-antd/src/checkbox/index.tsx","../node_modules/formik-antd/src/date-picker/index.tsx","../node_modules/formik-antd/src/field/index.tsx","../node_modules/formik-antd/src/form-item/index.tsx","../node_modules/formik-antd/src/form/form.tsx","../node_modules/formik-antd/src/input/index.tsx","../node_modules/formik-antd/src/radio/index.tsx","../node_modules/formik-antd/src/select/index.tsx","../node_modules/formik-antd/src/switch/index.tsx","../node_modules/formik/node_modules/deepmerge/dist/es.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/_getPrototype.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_assocIndexOf.js","../node_modules/lodash-es/_listCacheDelete.js","../node_modules/lodash-es/_listCacheGet.js","../node_modules/lodash-es/_listCacheHas.js","../node_modules/lodash-es/_listCacheSet.js","../node_modules/lodash-es/_ListCache.js","../node_modules/lodash-es/_stackClear.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/isFunction.js","../node_modules/lodash-es/_coreJsData.js","../node_modules/lodash-es/_isMasked.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_baseIsNative.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_getNative.js","../node_modules/lodash-es/_Map.js","../node_modules/lodash-es/_nativeCreate.js","../node_modules/lodash-es/_hashClear.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_hashGet.js","../node_modules/lodash-es/_hashHas.js","../node_modules/lodash-es/_hashSet.js","../node_modules/lodash-es/_Hash.js","../node_modules/lodash-es/_mapCacheClear.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_getMapData.js","../node_modules/lodash-es/_mapCacheDelete.js","../node_modules/lodash-es/_mapCacheGet.js","../node_modules/lodash-es/_mapCacheHas.js","../node_modules/lodash-es/_mapCacheSet.js","../node_modules/lodash-es/_MapCache.js","../node_modules/lodash-es/_stackSet.js","../node_modules/lodash-es/_Stack.js","../node_modules/lodash-es/_arrayEach.js","../node_modules/lodash-es/_defineProperty.js","../node_modules/lodash-es/_baseAssignValue.js","../node_modules/lodash-es/_assignValue.js","../node_modules/lodash-es/_copyObject.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/_baseIsArguments.js","../node_modules/lodash-es/isArguments.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/isBuffer.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/_nodeUtil.js","../node_modules/lodash-es/isTypedArray.js","../node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/_nativeKeys.js","../node_modules/lodash-es/_baseKeys.js","../node_modules/lodash-es/isArrayLike.js","../node_modules/lodash-es/keys.js","../node_modules/lodash-es/_baseAssign.js","../node_modules/lodash-es/_nativeKeysIn.js","../node_modules/lodash-es/_baseKeysIn.js","../node_modules/lodash-es/keysIn.js","../node_modules/lodash-es/_baseAssignIn.js","../node_modules/lodash-es/_cloneBuffer.js","../node_modules/lodash-es/_copyArray.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_getSymbols.js","../node_modules/lodash-es/_copySymbols.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/_getSymbolsIn.js","../node_modules/lodash-es/_copySymbolsIn.js","../node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/lodash-es/_getAllKeys.js","../node_modules/lodash-es/_getAllKeysIn.js","../node_modules/lodash-es/_DataView.js","../node_modules/lodash-es/_Promise.js","../node_modules/lodash-es/_Set.js","../node_modules/lodash-es/_WeakMap.js","../node_modules/lodash-es/_getTag.js","../node_modules/lodash-es/_initCloneArray.js","../node_modules/lodash-es/_Uint8Array.js","../node_modules/lodash-es/_cloneArrayBuffer.js","../node_modules/lodash-es/_cloneDataView.js","../node_modules/lodash-es/_cloneRegExp.js","../node_modules/lodash-es/_cloneSymbol.js","../node_modules/lodash-es/_cloneTypedArray.js","../node_modules/lodash-es/_initCloneByTag.js","../node_modules/lodash-es/_baseCreate.js","../node_modules/lodash-es/_initCloneObject.js","../node_modules/lodash-es/_baseIsMap.js","../node_modules/lodash-es/isMap.js","../node_modules/lodash-es/_baseIsSet.js","../node_modules/lodash-es/isSet.js","../node_modules/lodash-es/_baseClone.js","../node_modules/lodash-es/clone.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/memoize.js","../node_modules/lodash-es/_stringToPath.js","../node_modules/lodash-es/_memoizeCapped.js","../node_modules/lodash-es/_toKey.js","../node_modules/lodash-es/_baseToString.js","../node_modules/lodash-es/toString.js","../node_modules/lodash-es/toPath.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/lodash-es/cloneDeep.js","../node_modules/formik/src/utils.ts","../node_modules/formik/src/FormikContext.tsx","../node_modules/formik/src/Formik.tsx","../node_modules/formik/src/Field.tsx","../node_modules/formik/src/Form.tsx","../node_modules/formik/src/connect.tsx","../node_modules/formik/src/FieldArray.tsx","../node_modules/formik/src/FastField.tsx","../node_modules/gl-matrix/esm/common.js","../node_modules/gl-matrix/esm/mat3.js","../node_modules/gl-matrix/esm/vec2.js","../node_modules/hash-base/index.js","../node_modules/hash.js/lib/hash.js","../node_modules/hash.js/lib/hash/common.js","../node_modules/hash.js/lib/hash/hmac.js","../node_modules/hash.js/lib/hash/ripemd.js","../node_modules/hash.js/lib/hash/sha.js","../node_modules/hash.js/lib/hash/sha/1.js","../node_modules/hash.js/lib/hash/sha/224.js","../node_modules/hash.js/lib/hash/sha/256.js","../node_modules/hash.js/lib/hash/sha/384.js","../node_modules/hash.js/lib/hash/sha/512.js","../node_modules/hash.js/lib/hash/sha/common.js","../node_modules/hash.js/lib/hash/utils.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/html-dom-parser/lib/client/constants.js","../node_modules/html-dom-parser/lib/client/domparser.js","../node_modules/html-dom-parser/lib/client/html-to-dom.js","../node_modules/html-dom-parser/lib/client/utilities.js","../node_modules/html-react-parser/index.js","../node_modules/html-react-parser/lib/attributes-to-props.js","../node_modules/html-react-parser/lib/dom-to-react.js","../node_modules/html-react-parser/lib/utilities.js","https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/Parser.ts","https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/Tokenizer.ts","https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/index.ts","../node_modules/humps/humps.js","../node_modules/ieee754/index.js","../node_modules/immutable/dist/immutable.js","../node_modules/inherits/inherits_browser.js","../node_modules/inline-style-parser/index.js","../node_modules/int64-buffer/int64-buffer.js","../node_modules/invariant/browser.js","../node_modules/is-plain-object/dist/is-plain-object.js","../node_modules/joi/dist/joi-browser.min.js","../node_modules/json-logic-js/logic.js","../node_modules/json2mq/index.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_arrayEach.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_asciiSize.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_assignMergeValue.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseAssign.js","../node_modules/lodash/_baseAssignIn.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_baseClamp.js","../node_modules/lodash/_baseClone.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/_baseEach.js","../node_modules/lodash/_baseFlatten.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_baseIsMap.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsSet.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/_baseMap.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_baseMerge.js","../node_modules/lodash/_baseMergeDeep.js","../node_modules/lodash/_basePick.js","../node_modules/lodash/_basePickBy.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_baseRange.js","../node_modules/lodash/_baseRepeat.js","../node_modules/lodash/_baseRest.js","../node_modules/lodash/_baseSet.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/_baseSlice.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseTrim.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_baseUnset.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_cloneDataView.js","../node_modules/lodash/_cloneRegExp.js","../node_modules/lodash/_cloneSymbol.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_copyObject.js","../node_modules/lodash/_copySymbols.js","../node_modules/lodash/_copySymbolsIn.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_createAssigner.js","../node_modules/lodash/_createBaseEach.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_createPadding.js","../node_modules/lodash/_createRange.js","../node_modules/lodash/_customOmitClone.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_flatRest.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getAllKeysIn.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getSymbolsIn.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_initCloneArray.js","../node_modules/lodash/_initCloneByTag.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/_isFlattenable.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isIterateeCall.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/_parent.js","../node_modules/lodash/_root.js","../node_modules/lodash/_safeGet.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_stringSize.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_trimmedEndIndex.js","../node_modules/lodash/_unicodeSize.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/constant.js","../node_modules/lodash/debounce.js","../node_modules/lodash/eq.js","../node_modules/lodash/flatten.js","../node_modules/lodash/get.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/identity.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isArrayLikeObject.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isEqual.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isMap.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isPlainObject.js","../node_modules/lodash/isSet.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/keysIn.js","../node_modules/lodash/last.js","../node_modules/lodash/lodash.js","../node_modules/lodash/map.js","../node_modules/lodash/mapValues.js","../node_modules/lodash/memoize.js","../node_modules/lodash/merge.js","../node_modules/lodash/mergeWith.js","../node_modules/lodash/now.js","../node_modules/lodash/omit.js","../node_modules/lodash/padStart.js","../node_modules/lodash/pick.js","../node_modules/lodash/pickBy.js","../node_modules/lodash/property.js","../node_modules/lodash/range.js","../node_modules/lodash/startsWith.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/toFinite.js","../node_modules/lodash/toInteger.js","../node_modules/lodash/toNumber.js","../node_modules/lodash/toPlainObject.js","../node_modules/lodash/toString.js","../node_modules/md5.js/index.js","../node_modules/miller-rabin/lib/mr.js","../node_modules/minimalistic-assert/index.js","../node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/mobx-persist-store/lib/esm5/PersistStoreMap.js","../node_modules/mobx-persist-store/lib/esm5/configurePersistable.js","../node_modules/mobx-persist-store/lib/esm5/hydrateStore.js","../node_modules/mobx-persist-store/lib/esm5/utils.js","../node_modules/mobx-persist-store/lib/esm5/StorageAdapter.js","../node_modules/mobx-persist-store/lib/esm5/serializableProperty.js","../node_modules/mobx-persist-store/lib/esm5/PersistStore.js","../node_modules/mobx-persist-store/lib/esm5/makePersistable.js","../node_modules/mobx-react-lite/src/utils/assertEnvironment.ts","../node_modules/mobx-react-lite/src/utils/observerBatching.ts","../node_modules/mobx-react-lite/src/utils/printDebugValue.ts","../node_modules/mobx-react-lite/src/utils/UniversalFinalizationRegistry.ts","../node_modules/mobx-react-lite/src/utils/observerFinalizationRegistry.ts","../node_modules/mobx-react-lite/src/staticRendering.ts","../node_modules/mobx-react-lite/src/useObserver.ts","../node_modules/mobx-react-lite/src/observer.ts","../node_modules/mobx-react-lite/src/index.ts","../node_modules/mobx-react/src/utils/utils.ts","../node_modules/mobx-react/src/observerClass.ts","../node_modules/mobx-react/src/observer.tsx","../node_modules/mobx-react/src/index.ts","../node_modules/mobx/src/errors.ts","../node_modules/mobx/src/utils/global.ts","../node_modules/mobx/src/utils/utils.ts","../node_modules/mobx/src/api/decorators.ts","../node_modules/mobx/src/types/overrideannotation.ts","../node_modules/mobx/src/core/atom.ts","../node_modules/mobx/src/api/become-observed.ts","../node_modules/mobx/src/utils/comparer.ts","../node_modules/mobx/src/types/modifiers.ts","../node_modules/mobx/src/types/actionannotation.ts","../node_modules/mobx/src/types/flowannotation.ts","../node_modules/mobx/src/types/computedannotation.ts","../node_modules/mobx/src/types/observableannotation.ts","../node_modules/mobx/src/types/autoannotation.ts","../node_modules/mobx/src/api/observable.ts","../node_modules/mobx/src/types/dynamicobject.ts","../node_modules/mobx/src/api/computed.ts","../node_modules/mobx/src/core/action.ts","../node_modules/mobx/src/types/observablevalue.ts","../node_modules/mobx/src/core/computedvalue.ts","../node_modules/mobx/src/core/derivation.ts","../node_modules/mobx/src/core/observable.ts","../node_modules/mobx/src/core/globalstate.ts","../node_modules/mobx/src/core/reaction.ts","../node_modules/mobx/src/api/trace.ts","../node_modules/mobx/src/api/action.ts","../node_modules/mobx/src/api/autorun.ts","../node_modules/mobx/src/api/configure.ts","../node_modules/mobx/src/api/extendobservable.ts","../node_modules/mobx/src/api/extras.ts","../node_modules/mobx/src/api/flow.ts","../node_modules/mobx/src/api/iscomputed.ts","../node_modules/mobx/src/api/isobservable.ts","../node_modules/mobx/src/api/tojs.ts","../node_modules/mobx/src/api/object-api.ts","../node_modules/mobx/src/api/transaction.ts","../node_modules/mobx/src/types/intercept-utils.ts","../node_modules/mobx/src/types/listen-utils.ts","../node_modules/mobx/src/api/makeObservable.ts","../node_modules/mobx/src/types/observablearray.ts","../node_modules/mobx/src/core/spy.ts","../node_modules/mobx/src/types/observablemap.ts","../node_modules/mobx/src/types/observableset.ts","../node_modules/mobx/src/types/observableobject.ts","../node_modules/mobx/src/types/legacyobservablearray.ts","../node_modules/mobx/src/types/type-utils.ts","../node_modules/mobx/src/utils/eq.ts","../node_modules/mobx/src/utils/iterable.ts","../node_modules/mobx/src/mobx.ts","../node_modules/moment-duration-format/lib/moment-duration-format.js","../node_modules/moment-timezone/index.js","../node_modules/moment-timezone/moment-timezone.js","../node_modules/moment/moment.js","../node_modules/normalize-wheel/index.js","../node_modules/normalize-wheel/src/ExecutionEnvironment.js","../node_modules/normalize-wheel/src/UserAgent_DEPRECATED.js","../node_modules/normalize-wheel/src/isEventSupported.js","../node_modules/normalize-wheel/src/normalizeWheel.js","../node_modules/object-assign/index.js","../node_modules/parse-asn1/asn1.js","../node_modules/parse-asn1/certificate.js","../node_modules/parse-asn1/fixProc.js","../node_modules/parse-asn1/index.js","../node_modules/parse-srcset/src/parse-srcset.js","../node_modules/path-to-regexp/index.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/pbkdf2/browser.js","../node_modules/pbkdf2/lib/async.js","../node_modules/pbkdf2/lib/default-encoding.js","../node_modules/pbkdf2/lib/precondition.js","../node_modules/pbkdf2/lib/sync-browser.js","../node_modules/pbkdf2/lib/to-buffer.js","../node_modules/pdfast/src/helper.js","../node_modules/pdfast/src/index.js","../node_modules/picocolors/picocolors.browser.js","../node_modules/postcss/lib/at-rule.js","../node_modules/postcss/lib/comment.js","../node_modules/postcss/lib/container.js","../node_modules/postcss/lib/css-syntax-error.js","../node_modules/postcss/lib/declaration.js","../node_modules/postcss/lib/document.js","../node_modules/postcss/lib/fromJSON.js","../node_modules/postcss/lib/input.js","../node_modules/postcss/lib/lazy-result.js","../node_modules/postcss/lib/list.js","../node_modules/postcss/lib/map-generator.js","../node_modules/postcss/lib/no-work-result.js","../node_modules/postcss/lib/node.js","../node_modules/postcss/lib/parse.js","../node_modules/postcss/lib/parser.js","../node_modules/postcss/lib/postcss.js","../node_modules/postcss/lib/previous-map.js","../node_modules/postcss/lib/processor.js","../node_modules/postcss/lib/result.js","../node_modules/postcss/lib/root.js","../node_modules/postcss/lib/rule.js","../node_modules/postcss/lib/stringifier.js","../node_modules/postcss/lib/stringify.js","../node_modules/postcss/lib/symbols.js","../node_modules/postcss/lib/tokenize.js","../node_modules/postcss/lib/warn-once.js","../node_modules/postcss/lib/warning.js","../node_modules/posthog-js/src/types.ts","../node_modules/posthog-js/src/utils/globals.ts","../node_modules/posthog-js/src/config.ts","../node_modules/posthog-js/src/utils/string-utils.ts","../node_modules/posthog-js/src/utils/type-utils.ts","../node_modules/posthog-js/src/utils/logger.ts","../node_modules/posthog-js/src/entrypoints/external-scripts-loader.ts","../node_modules/posthog-js/src/utils/index.ts","../node_modules/posthog-js/src/constants.ts","../node_modules/posthog-js/src/utils/element-utils.ts","../node_modules/posthog-js/src/autocapture-utils.ts","../node_modules/posthog-js/src/extensions/rageclick.ts","../node_modules/posthog-js/src/utils/request-utils.ts","../node_modules/posthog-js/src/autocapture.ts","../node_modules/posthog-js/src/uuidv7.ts","../node_modules/posthog-js/src/storage.ts","../node_modules/posthog-js/src/consent.ts","../node_modules/posthog-js/src/extensions/dead-clicks-autocapture.ts","../node_modules/posthog-js/src/extensions/exception-autocapture/index.ts","../node_modules/posthog-js/src/extensions/replay/sessionrecording-utils.ts","../node_modules/posthog-js/node_modules/.pnpm/@rrweb+types@2.0.0-alpha.17/node_modules/@rrweb/types/dist/types.js","../node_modules/posthog-js/src/extensions/replay/config.ts","../node_modules/posthog-js/src/utils/number-utils.ts","../node_modules/posthog-js/src/extensions/replay/mutation-rate-limiter.ts","../node_modules/posthog-js/node_modules/.pnpm/fflate@0.4.8/node_modules/fflate/esm/browser.js","../node_modules/posthog-js/src/extensions/replay/sessionrecording.ts","../node_modules/posthog-js/src/extensions/sampling.ts","../node_modules/posthog-js/src/extensions/segment-integration.ts","../node_modules/posthog-js/src/extensions/sentry-integration.ts","../node_modules/posthog-js/src/extensions/toolbar.ts","../node_modules/posthog-js/src/extensions/tracing-headers.ts","../node_modules/posthog-js/src/extensions/web-vitals/index.ts","../node_modules/posthog-js/src/heatmaps.ts","../node_modules/posthog-js/src/posthog-persistence.ts","../node_modules/posthog-js/src/posthog-surveys-types.ts","../node_modules/posthog-js/src/page-view.ts","../node_modules/posthog-js/src/posthog-exceptions.ts","../node_modules/posthog-js/src/posthog-featureflags.ts","../node_modules/posthog-js/src/utils/user-agent-utils.ts","../node_modules/posthog-js/src/utils/event-utils.ts","../node_modules/posthog-js/node_modules/.pnpm/preact@10.19.3/node_modules/preact/dist/preact.module.js","../node_modules/posthog-js/src/extensions/surveys/surveys-utils.tsx","../node_modules/posthog-js/src/utils/regex-utils.ts","../node_modules/posthog-js/src/utils/simple-event-emitter.ts","../node_modules/posthog-js/src/extensions/surveys/action-matcher.ts","../node_modules/posthog-js/src/utils/survey-event-receiver.ts","../node_modules/posthog-js/src/posthog-surveys.ts","../node_modules/posthog-js/src/rate-limiter.ts","../node_modules/posthog-js/src/remote-config.ts","../node_modules/posthog-js/src/request.ts","../node_modules/posthog-js/src/utils/encode-utils.ts","../node_modules/posthog-js/src/utils/request-router.ts","../node_modules/posthog-js/src/request-queue.ts","../node_modules/posthog-js/src/retry-queue.ts","../node_modules/posthog-js/src/scroll-manager.ts","../node_modules/posthog-js/src/session-props.ts","../node_modules/posthog-js/src/sessionid.ts","../node_modules/posthog-js/src/site-apps.ts","../node_modules/posthog-js/src/utils/blocked-uas.ts","../node_modules/posthog-js/src/utils/identify-utils.ts","../node_modules/posthog-js/src/web-experiments.ts","../node_modules/posthog-js/src/posthog-core.ts","../node_modules/posthog-js/src/entrypoints/module.no-external.es.ts","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/public-encrypt/browser.js","../node_modules/public-encrypt/mgf.js","../node_modules/public-encrypt/privateDecrypt.js","../node_modules/public-encrypt/publicEncrypt.js","../node_modules/public-encrypt/withPublic.js","../node_modules/public-encrypt/xor.js","../node_modules/query-string/index.js","../node_modules/randombytes/browser.js","../node_modules/randomfill/browser.js","../node_modules/rc-checkbox/es/index.js","../node_modules/rc-util/es/hooks/useId.js","../node_modules/rc-dialog/es/Dialog/Mask.js","../node_modules/rc-dialog/es/util.js","../node_modules/rc-dialog/es/Dialog/Content/MemoChildren.js","../node_modules/rc-dialog/es/Dialog/Content/Panel.js","../node_modules/rc-dialog/es/Dialog/Content/index.js","../node_modules/rc-dialog/es/Dialog/index.js","../node_modules/rc-dialog/es/DialogWrap.js","../node_modules/rc-dialog/es/index.js","../node_modules/rc-dropdown/es/placements.js","../node_modules/rc-dropdown/es/hooks/useAccessibility.js","../node_modules/rc-dropdown/es/Dropdown.js","../node_modules/rc-dropdown/es/index.js","../node_modules/rc-field-form/es/FieldContext.js","../node_modules/rc-field-form/es/utils/typeUtil.js","../node_modules/src/util.ts","../node_modules/src/rule/required.ts","../node_modules/src/rule/url.ts","../node_modules/src/rule/type.ts","../node_modules/src/rule/enum.ts","../node_modules/src/rule/index.ts","../node_modules/src/rule/whitespace.ts","../node_modules/src/rule/range.ts","../node_modules/src/rule/pattern.ts","../node_modules/src/validator/type.ts","../node_modules/src/validator/index.ts","../node_modules/src/validator/string.ts","../node_modules/src/validator/method.ts","../node_modules/src/validator/number.ts","../node_modules/src/validator/boolean.ts","../node_modules/src/validator/regexp.ts","../node_modules/src/validator/integer.ts","../node_modules/src/validator/float.ts","../node_modules/src/validator/array.ts","../node_modules/src/validator/object.ts","../node_modules/src/validator/enum.ts","../node_modules/src/validator/pattern.ts","../node_modules/src/validator/date.ts","../node_modules/src/validator/required.ts","../node_modules/src/validator/any.ts","../node_modules/src/messages.ts","../node_modules/src/index.ts","../node_modules/rc-field-form/es/utils/messages.js","../node_modules/rc-util/es/utils/get.js","../node_modules/rc-util/es/utils/set.js","../node_modules/rc-field-form/es/utils/cloneDeep.js","../node_modules/rc-field-form/es/utils/valueUtil.js","../node_modules/rc-field-form/es/utils/validateUtil.js","../node_modules/rc-field-form/es/Field.js","../node_modules/rc-field-form/es/ListContext.js","../node_modules/rc-field-form/es/List.js","../node_modules/rc-field-form/es/utils/NameMap.js","../node_modules/rc-field-form/es/useForm.js","../node_modules/rc-field-form/es/utils/asyncUtil.js","../node_modules/rc-field-form/es/FormContext.js","../node_modules/rc-field-form/es/Form.js","../node_modules/rc-field-form/es/useWatch.js","../node_modules/rc-field-form/es/index.js","../node_modules/rc-menu/es/context/IdContext.js","../node_modules/rc-menu/es/context/MenuContext.js","../node_modules/rc-menu/es/context/PathContext.js","../node_modules/rc-menu/es/context/PrivateContext.js","../node_modules/rc-menu/es/hooks/useAccessibility.js","../node_modules/rc-menu/es/hooks/useKeyRecords.js","../node_modules/rc-menu/es/utils/timeUtil.js","../node_modules/rc-menu/es/hooks/useMemoCallback.js","../node_modules/rc-menu/es/hooks/useUUID.js","../node_modules/rc-menu/es/hooks/useActive.js","../node_modules/rc-menu/es/hooks/useDirectionStyle.js","../node_modules/rc-menu/es/Icon.js","../node_modules/rc-menu/es/utils/warnUtil.js","../node_modules/rc-menu/es/MenuItem.js","../node_modules/rc-menu/es/SubMenu/SubMenuList.js","../node_modules/rc-menu/es/utils/nodeUtil.js","../node_modules/rc-menu/es/placements.js","../node_modules/rc-menu/es/utils/motionUtil.js","../node_modules/rc-menu/es/SubMenu/PopupTrigger.js","../node_modules/rc-menu/es/SubMenu/InlineSubMenuList.js","../node_modules/rc-menu/es/SubMenu/index.js","../node_modules/rc-menu/es/Menu.js","../node_modules/rc-menu/es/MenuItemGroup.js","../node_modules/rc-menu/es/Divider.js","../node_modules/rc-menu/es/index.js","../node_modules/rc-motion/es/context.js","../node_modules/rc-motion/es/DomWrapper.js","../node_modules/rc-motion/es/interface.js","../node_modules/rc-motion/es/util/motion.js","../node_modules/rc-motion/es/hooks/useDomMotionEvents.js","../node_modules/rc-motion/es/hooks/useIsomorphicLayoutEffect.js","../node_modules/rc-motion/es/hooks/useStepQueue.js","../node_modules/rc-motion/es/hooks/useNextFrame.js","../node_modules/rc-motion/es/CSSMotion.js","../node_modules/rc-motion/es/hooks/useStatus.js","../node_modules/rc-motion/es/util/diff.js","../node_modules/rc-motion/es/CSSMotionList.js","../node_modules/rc-motion/es/index.js","../node_modules/rc-notification/es/Notice.js","../node_modules/rc-notification/es/Notification.js","../node_modules/rc-notification/es/index.js","../node_modules/rc-notification/es/useNotification.js","../node_modules/rc-overflow/es/Item.js","../node_modules/rc-overflow/es/hooks/useEffectState.js","../node_modules/rc-overflow/es/hooks/channelUpdate.js","../node_modules/rc-overflow/es/RawItem.js","../node_modules/rc-overflow/es/Overflow.js","../node_modules/rc-overflow/es/index.js","../node_modules/rc-pagination/es/locale/en_US.js","../node_modules/rc-picker/lib/generate/moment.js","../node_modules/rc-resize-observer/es/utils/observerUtil.js","../node_modules/rc-resize-observer/es/SingleObserver/DomWrapper.js","../node_modules/rc-resize-observer/es/Collection.js","../node_modules/rc-resize-observer/es/SingleObserver/index.js","../node_modules/rc-resize-observer/es/index.js","../node_modules/rc-select/es/hooks/useId.js","../node_modules/rc-select/es/hooks/useBaseProps.js","../node_modules/rc-select/es/hooks/useLock.js","../node_modules/rc-select/es/TransBtn.js","../node_modules/rc-select/es/Selector/Input.js","../node_modules/rc-select/es/utils/commonUtil.js","../node_modules/rc-select/es/Selector/MultipleSelector.js","../node_modules/rc-select/es/hooks/useLayoutEffect.js","../node_modules/rc-select/es/Selector/SingleSelector.js","../node_modules/rc-select/es/Selector/index.js","../node_modules/rc-select/es/utils/keyUtil.js","../node_modules/rc-select/es/SelectTrigger.js","../node_modules/rc-select/es/utils/valueUtil.js","../node_modules/rc-select/es/BaseSelect.js","../node_modules/rc-select/es/hooks/useDelayReset.js","../node_modules/rc-select/es/hooks/useSelectTriggerControl.js","../node_modules/rc-select/es/hooks/useFilterOptions.js","../node_modules/rc-select/es/utils/legacyUtil.js","../node_modules/rc-select/es/hooks/useRefFunc.js","../node_modules/rc-select/es/OptGroup.js","../node_modules/rc-select/es/Option.js","../node_modules/rc-select/es/SelectContext.js","../node_modules/rc-select/es/OptionList.js","../node_modules/rc-select/es/utils/platformUtil.js","../node_modules/rc-select/es/Select.js","../node_modules/rc-select/es/hooks/useOptions.js","../node_modules/rc-select/es/hooks/useCache.js","../node_modules/rc-select/es/index.js","../node_modules/rc-tooltip/es/placements.js","../node_modules/rc-tree/es/Indent.js","../node_modules/rc-tree/es/TreeNode.js","../node_modules/rc-tree/es/contextTypes.js","../node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js","../node_modules/rc-tree/es/MotionTreeNode.js","../node_modules/rc-tree/es/utils/diffUtil.js","../node_modules/rc-tree/es/NodeList.js","../node_modules/rc-tree/es/Tree.js","../node_modules/rc-tree/es/DropIndicator.js","../node_modules/rc-tree/es/index.js","../node_modules/rc-tree/es/util.js","../node_modules/rc-tree/es/utils/conductUtil.js","../node_modules/rc-tree/es/utils/treeUtil.js","../node_modules/rc-util/es/Portal.js","../node_modules/rc-trigger/es/utils/alignUtil.js","../node_modules/rc-trigger/es/utils/legacyUtil.js","../node_modules/rc-trigger/es/Popup/Mask.js","../node_modules/src/propertyUtils.js","../node_modules/src/utils.js","../node_modules/src/getOffsetParent.js","../node_modules/src/isAncestorFixed.js","../node_modules/src/getVisibleRectForElement.js","../node_modules/src/getRegion.js","../node_modules/src/getAlignOffset.js","../node_modules/src/getElFuturePos.js","../node_modules/src/align/align.js","../node_modules/src/adjustForViewport.js","../node_modules/src/align/alignElement.js","../node_modules/rc-align/es/util.js","../node_modules/rc-align/es/Align.js","../node_modules/rc-align/es/hooks/useBuffer.js","../node_modules/src/align/alignPoint.js","../node_modules/rc-align/es/index.js","../node_modules/rc-trigger/es/Popup/useVisibleStatus.js","../node_modules/rc-trigger/es/Popup/PopupInner.js","../node_modules/rc-trigger/es/Popup/useStretchStyle.js","../node_modules/rc-trigger/es/Popup/MobilePopupInner.js","../node_modules/rc-trigger/es/Popup/index.js","../node_modules/rc-trigger/es/context.js","../node_modules/rc-trigger/es/index.js","../node_modules/rc-util/es/Children/toArray.js","../node_modules/rc-util/es/Dom/addEventListener.js","../node_modules/rc-util/es/Dom/canUseDom.js","../node_modules/rc-util/es/Dom/contains.js","../node_modules/rc-util/es/Dom/css.js","../node_modules/rc-util/es/Dom/dynamicCSS.js","../node_modules/rc-util/es/Dom/findDOMNode.js","../node_modules/rc-util/es/Dom/focus.js","../node_modules/rc-util/es/Dom/isVisible.js","../node_modules/rc-util/es/Dom/styleChecker.js","../node_modules/rc-util/es/KeyCode.js","../node_modules/rc-util/es/React/render.js","../node_modules/rc-util/es/getScrollBarSize.js","../node_modules/rc-util/es/hooks/useEvent.js","../node_modules/rc-util/es/hooks/useLayoutEffect.js","../node_modules/rc-util/es/hooks/useMemo.js","../node_modules/rc-util/es/hooks/useMergedState.js","../node_modules/rc-util/es/hooks/useState.js","../node_modules/rc-util/es/isEqual.js","../node_modules/rc-util/es/isMobile.js","../node_modules/rc-util/es/omit.js","../node_modules/rc-util/es/pickAttrs.js","../node_modules/rc-util/es/raf.js","../node_modules/rc-util/es/ref.js","../node_modules/rc-util/es/warning.js","../node_modules/rc-util/lib/warning.js","../node_modules/rc-virtual-list/es/Filler.js","../node_modules/rc-virtual-list/es/ScrollBar.js","../node_modules/rc-virtual-list/es/Item.js","../node_modules/rc-virtual-list/es/utils/CacheMap.js","../node_modules/rc-virtual-list/es/hooks/useDiffItem.js","../node_modules/rc-virtual-list/es/utils/algorithmUtil.js","../node_modules/rc-virtual-list/es/utils/isFirefox.js","../node_modules/rc-virtual-list/es/hooks/useOriginScroll.js","../node_modules/rc-virtual-list/es/hooks/useMobileTouchMove.js","../node_modules/rc-virtual-list/es/List.js","../node_modules/rc-virtual-list/es/hooks/useHeights.js","../node_modules/rc-virtual-list/es/hooks/useFrameWheel.js","../node_modules/rc-virtual-list/es/hooks/useScrollTo.js","../node_modules/rc-virtual-list/es/hooks/useChildren.js","../node_modules/rc-virtual-list/es/index.js","../node_modules/react-confetti/dist/webpack/universalModuleDefinition","../node_modules/react-confetti/dist/webpack/bootstrap","../node_modules/react-confetti/dist/external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","../node_modules/tween-functions/index.js","../node_modules/react-confetti/src/Particle.ts","../node_modules/react-confetti/src/utils.ts","../node_modules/react-confetti/src/ParticleGenerator.ts","../node_modules/react-confetti/src/Confetti.ts","../node_modules/react-confetti/src/ReactConfetti.tsx","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-feather/dist/icons/alert-circle.js","../node_modules/react-feather/dist/icons/archive.js","../node_modules/react-feather/dist/icons/arrow-left.js","../node_modules/react-feather/dist/icons/arrow-right.js","../node_modules/react-feather/dist/icons/arrow-up.js","../node_modules/react-feather/dist/icons/bar-chart-2.js","../node_modules/react-feather/dist/icons/bell.js","../node_modules/react-feather/dist/icons/book-open.js","../node_modules/react-feather/dist/icons/box.js","../node_modules/react-feather/dist/icons/briefcase.js","../node_modules/react-feather/dist/icons/check-circle.js","../node_modules/react-feather/dist/icons/check-square.js","../node_modules/react-feather/dist/icons/check.js","../node_modules/react-feather/dist/icons/chevron-down.js","../node_modules/react-feather/dist/icons/chevron-right.js","../node_modules/react-feather/dist/icons/chevrons-right.js","../node_modules/react-feather/dist/icons/clipboard.js","../node_modules/react-feather/dist/icons/clock.js","../node_modules/react-feather/dist/icons/columns.js","../node_modules/react-feather/dist/icons/copy.js","../node_modules/react-feather/dist/icons/corner-up-right.js","../node_modules/react-feather/dist/icons/download.js","../node_modules/react-feather/dist/icons/edit-3.js","../node_modules/react-feather/dist/icons/edit.js","../node_modules/react-feather/dist/icons/external-link.js","../node_modules/react-feather/dist/icons/eye-off.js","../node_modules/react-feather/dist/icons/eye.js","../node_modules/react-feather/dist/icons/fast-forward.js","../node_modules/react-feather/dist/icons/file.js","../node_modules/react-feather/dist/icons/filter.js","../node_modules/react-feather/dist/icons/flag.js","../node_modules/react-feather/dist/icons/folder.js","../node_modules/react-feather/dist/icons/globe.js","../node_modules/react-feather/dist/icons/grid.js","../node_modules/react-feather/dist/icons/help-circle.js","../node_modules/react-feather/dist/icons/hexagon.js","../node_modules/react-feather/dist/icons/home.js","../node_modules/react-feather/dist/icons/info.js","../node_modules/react-feather/dist/icons/layers.js","../node_modules/react-feather/dist/icons/layout.js","../node_modules/react-feather/dist/icons/link-2.js","../node_modules/react-feather/dist/icons/link.js","../node_modules/react-feather/dist/icons/list.js","../node_modules/react-feather/dist/icons/lock.js","../node_modules/react-feather/dist/icons/log-out.js","../node_modules/react-feather/dist/icons/menu.js","../node_modules/react-feather/dist/icons/message-circle.js","../node_modules/react-feather/dist/icons/more-horizontal.js","../node_modules/react-feather/dist/icons/pause.js","../node_modules/react-feather/dist/icons/phone.js","../node_modules/react-feather/dist/icons/play-circle.js","../node_modules/react-feather/dist/icons/play.js","../node_modules/react-feather/dist/icons/plus.js","../node_modules/react-feather/dist/icons/refresh-cw.js","../node_modules/react-feather/dist/icons/search.js","../node_modules/react-feather/dist/icons/send.js","../node_modules/react-feather/dist/icons/server.js","../node_modules/react-feather/dist/icons/settings.js","../node_modules/react-feather/dist/icons/share-2.js","../node_modules/react-feather/dist/icons/share.js","../node_modules/react-feather/dist/icons/shield.js","../node_modules/react-feather/dist/icons/star.js","../node_modules/react-feather/dist/icons/target.js","../node_modules/react-feather/dist/icons/thumbs-down.js","../node_modules/react-feather/dist/icons/thumbs-up.js","../node_modules/react-feather/dist/icons/trash-2.js","../node_modules/react-feather/dist/icons/trash.js","../node_modules/react-feather/dist/icons/trending-up.js","../node_modules/react-feather/dist/icons/user-check.js","../node_modules/react-feather/dist/icons/user.js","../node_modules/react-feather/dist/icons/users.js","../node_modules/react-feather/dist/icons/video.js","../node_modules/react-feather/dist/icons/x-circle.js","../node_modules/react-feather/dist/icons/x.js","../node_modules/react-feather/dist/icons/zap.js","../../src/index.tsx","../../src/typeDefs.ts","../../src/useInjectScript.tsx","../node_modules/react-helmet/lib/Helmet.js","../node_modules/react-helmet/lib/HelmetConstants.js","../node_modules/react-helmet/lib/HelmetUtils.js","../node_modules/react-infinite-scroll-component/node_modules/tslib/tslib.es6.js","../node_modules/react-infinite-scroll-component/node_modules/throttle-debounce/dist/index.esm.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-linkedin-login-oauth2/es/LinkedIn.js","../node_modules/react-linkedin-login-oauth2/es/LinkedInPopUp.js","../node_modules/react-property/lib/index.js","../node_modules/react-property/lib/possibleStandardNamesOptimized.js","../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-redux/node_modules/react-is/index.js","../../../../../../dist/react-responsive.js","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","../node_modules/react-router/modules/miniCreateReactContext.js","../node_modules/react-router/modules/createContext.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/generatePath.js","../node_modules/react-router/modules/Redirect.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/withRouter.js","../node_modules/react-router/modules/hooks.js","../node_modules/react-side-effect/lib/index.js","../node_modules/@babel/runtime/helpers/esm/objectSpread.js","../node_modules/react-sortable-hoc/dist/react-sortable-hoc.esm.js","../node_modules/react-update-notification/es/types.js","../node_modules/react-update-notification/es/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/readable-stream/errors-browser.js","../node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/readable-stream/lib/_stream_transform.js","../node_modules/readable-stream/lib/_stream_writable.js","../node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/readable-stream/readable-browser.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/ripemd160/index.js","../node_modules/safe-buffer/index.js","../node_modules/safer-buffer/safer.js","../node_modules/sanitize-html/index.js","../node_modules/sanitize-html/node_modules/escape-string-regexp/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/sha.js/hash.js","../node_modules/sha.js/index.js","../node_modules/sha.js/sha.js","../node_modules/sha.js/sha1.js","../node_modules/sha.js/sha224.js","../node_modules/sha.js/sha256.js","../node_modules/sha.js/sha384.js","../node_modules/sha.js/sha512.js","../node_modules/shallowequal/index.js","../node_modules/showdown/src/options.js","../node_modules/showdown/src/showdown.js","../node_modules/showdown/src/helpers.js","../node_modules/showdown/src/converter.js","../node_modules/showdown/src/subParsers/anchors.js","../node_modules/showdown/src/subParsers/autoLinks.js","../node_modules/showdown/src/subParsers/blockGamut.js","../node_modules/showdown/src/subParsers/blockQuotes.js","../node_modules/showdown/src/subParsers/codeBlocks.js","../node_modules/showdown/src/subParsers/codeSpans.js","../node_modules/showdown/src/subParsers/completeHTMLDocument.js","../node_modules/showdown/src/subParsers/detab.js","../node_modules/showdown/src/subParsers/ellipsis.js","../node_modules/showdown/src/subParsers/emoji.js","../node_modules/showdown/src/subParsers/encodeAmpsAndAngles.js","../node_modules/showdown/src/subParsers/encodeBackslashEscapes.js","../node_modules/showdown/src/subParsers/encodeCode.js","../node_modules/showdown/src/subParsers/escapeSpecialCharsWithinTagAttributes.js","../node_modules/showdown/src/subParsers/githubCodeBlocks.js","../node_modules/showdown/src/subParsers/hashBlock.js","../node_modules/showdown/src/subParsers/hashCodeTags.js","../node_modules/showdown/src/subParsers/hashElement.js","../node_modules/showdown/src/subParsers/hashHTMLBlocks.js","../node_modules/showdown/src/subParsers/hashHTMLSpans.js","../node_modules/showdown/src/subParsers/hashPreCodeTags.js","../node_modules/showdown/src/subParsers/headers.js","../node_modules/showdown/src/subParsers/horizontalRule.js","../node_modules/showdown/src/subParsers/images.js","../node_modules/showdown/src/subParsers/italicsAndBold.js","../node_modules/showdown/src/subParsers/lists.js","../node_modules/showdown/src/subParsers/metadata.js","../node_modules/showdown/src/subParsers/outdent.js","../node_modules/showdown/src/subParsers/paragraphs.js","../node_modules/showdown/src/subParsers/runExtension.js","../node_modules/showdown/src/subParsers/spanGamut.js","../node_modules/showdown/src/subParsers/strikethrough.js","../node_modules/showdown/src/subParsers/stripLinkDefinitions.js","../node_modules/showdown/src/subParsers/tables.js","../node_modules/showdown/src/subParsers/underline.js","../node_modules/showdown/src/subParsers/unescapeSpecialChars.js","../node_modules/showdown/src/subParsers/makeMarkdown/blockquote.js","../node_modules/showdown/src/subParsers/makeMarkdown/codeBlock.js","../node_modules/showdown/src/subParsers/makeMarkdown/codeSpan.js","../node_modules/showdown/src/subParsers/makeMarkdown/emphasis.js","../node_modules/showdown/src/subParsers/makeMarkdown/header.js","../node_modules/showdown/src/subParsers/makeMarkdown/hr.js","../node_modules/showdown/src/subParsers/makeMarkdown/image.js","../node_modules/showdown/src/subParsers/makeMarkdown/links.js","../node_modules/showdown/src/subParsers/makeMarkdown/list.js","../node_modules/showdown/src/subParsers/makeMarkdown/listItem.js","../node_modules/showdown/src/subParsers/makeMarkdown/node.js","../node_modules/showdown/src/subParsers/makeMarkdown/paragraph.js","../node_modules/showdown/src/subParsers/makeMarkdown/pre.js","../node_modules/showdown/src/subParsers/makeMarkdown/strikethrough.js","../node_modules/showdown/src/subParsers/makeMarkdown/strong.js","../node_modules/showdown/src/subParsers/makeMarkdown/table.js","../node_modules/showdown/src/subParsers/makeMarkdown/tableCell.js","../node_modules/showdown/src/subParsers/makeMarkdown/txt.js","../node_modules/showdown/src/loader.js","../node_modules/size-sensor/lib/constant.js","../node_modules/size-sensor/lib/debounce.js","../node_modules/size-sensor/lib/id.js","../node_modules/size-sensor/lib/index.js","../node_modules/size-sensor/lib/sensorPool.js","../node_modules/size-sensor/lib/sensors/index.js","../node_modules/size-sensor/lib/sensors/object.js","../node_modules/size-sensor/lib/sensors/resizeObserver.js","../node_modules/spel2js/dist/spel2js.js","../node_modules/sqlstring/index.js","../node_modules/sqlstring/lib/SqlString.js","../node_modules/stream/index.js","../node_modules/strict-uri-encode/index.js","../node_modules/string-convert/camel2hyphen.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/style-to-js/cjs/index.js","../node_modules/style-to-js/cjs/utilities.js","../node_modules/style-to-object/index.js","../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","../node_modules/@emotion/memoize/dist/memoize.browser.esm.js","../node_modules/is-what/dist/index.esm.js","../node_modules/merge-anything/dist/index.esm.js","../node_modules/styled-components/src/models/StyleTags.js","../node_modules/styled-components/src/models/ThemeProvider.js","../node_modules/styled-components/src/models/GlobalStyle.js","../node_modules/stylis-rule-sheet/index.js","../node_modules/stylis/stylis.js","../node_modules/toggle-selection/index.js","../node_modules/util-deprecate/browser.js","../node_modules/webm-duration-fix/lib/ebml/EBML.js","../node_modules/webm-duration-fix/lib/ebml/EBMLDecoder.js","../node_modules/webm-duration-fix/lib/ebml/EBMLEncoder.js","../node_modules/webm-duration-fix/lib/ebml/EBMLReader.js","../node_modules/webm-duration-fix/lib/ebml/ebmlID.js","../node_modules/webm-duration-fix/lib/ebml/index.js","../node_modules/webm-duration-fix/lib/ebml/tools-ebml.js","../node_modules/webm-duration-fix/lib/ebml/tools.js","../node_modules/webm-duration-fix/lib/index.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/construct.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/get.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/isNativeFunction.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/objectSpread2.js","../node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js","../node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js","../node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js","../node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js","../node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js","../node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js","../node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js","../node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js","../node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js","../node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js","../node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@sentry-internal/browser-utils/src/debug-build.ts","../node_modules/@sentry-internal/browser-utils/src/getNativeImplementation.ts","../node_modules/@sentry-internal/browser-utils/src/instrument/dom.ts","../node_modules/@sentry/utils/src/vendor/supportsHistory.ts","../node_modules/@sentry-internal/browser-utils/src/instrument/history.ts","../node_modules/@sentry-internal/browser-utils/src/instrument/xhr.ts","../node_modules/@sentry-internal/browser-utils/src/types.ts","../node_modules/@sentry/utils/src/buildPolyfills/_optionalChain.ts","../node_modules/@sentry/core/src/utils/isSentryRequestUrl.ts","../node_modules/@sentry/utils/src/isBrowser.ts","../node_modules/@sentry/utils/src/node.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/web-vitals/lib/polyfills/interactionCountPolyfill.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/instrument.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/web-vitals/lib/bindReporter.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/web-vitals/lib/getNavigationEntry.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/web-vitals/lib/getActivationStart.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/web-vitals/lib/initMetric.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/web-vitals/lib/generateUniqueID.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/web-vitals/lib/observe.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/web-vitals/lib/onHidden.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/web-vitals/lib/runOnce.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/web-vitals/lib/getVisibilityWatcher.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/web-vitals/lib/whenActivated.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/web-vitals/onFCP.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/web-vitals/getCLS.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/web-vitals/getFID.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/web-vitals/getINP.ts","../node_modules/@sentry-internal/browser-utils/src/metrics/web-vitals/getLCP.ts","../node_modules/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../node_modules/@sentry-internal/replay/src/constants.ts","../node_modules/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/utils.js","../node_modules/@sentry/utils/src/buildPolyfills/_nullishCoalesce.ts","../node_modules/node_modules/@sentry-internal/rrweb/es/rrweb/packages/types/dist/rrweb-types.js","../node_modules/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","../node_modules/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/error-handler.js","../node_modules/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","../node_modules/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","../node_modules/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../node_modules/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/index.js","../node_modules/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../node_modules/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../node_modules/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","../node_modules/node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/processed-node-manager.js","../node_modules/@sentry-internal/replay/src/debug-build.ts","../node_modules/@sentry-internal/replay/src/util/logger.ts","../node_modules/@sentry-internal/replay/src/types/rrweb.ts","../node_modules/@sentry-internal/replay/src/util/timestamp.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/util/addBreadcrumbEvent.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/util/domUtils.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/util/onWindowOpen.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/handleClick.ts","../node_modules/node_modules/@sentry-internal/rrweb-snapshot/es/rrweb-snapshot.js","../node_modules/@sentry-internal/replay/src/util/createBreadcrumb.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/util/getAttributesToRecord.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/handleDom.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/handleKeyboardEvent.ts","../node_modules/@sentry-internal/replay/src/util/createPerformanceEntries.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/performanceObserver.ts","../node_modules/@sentry-internal/replay-worker/build/esm/worker.ts","../node_modules/@sentry-internal/replay/src/eventBuffer/error.ts","../node_modules/@sentry-internal/replay/src/eventBuffer/EventBufferArray.ts","../node_modules/@sentry-internal/replay/src/eventBuffer/WorkerHandler.ts","../node_modules/@sentry-internal/replay/src/eventBuffer/EventBufferCompressionWorker.ts","../node_modules/@sentry-internal/replay/src/eventBuffer/EventBufferProxy.ts","../node_modules/@sentry-internal/replay/src/eventBuffer/index.ts","../node_modules/@sentry-internal/replay-worker/build/esm/index.js","../node_modules/@sentry-internal/replay/src/util/hasSessionStorage.ts","../node_modules/@sentry-internal/replay/src/session/clearSession.ts","../node_modules/@sentry-internal/replay/src/util/isSampled.ts","../node_modules/@sentry-internal/replay/src/session/Session.ts","../node_modules/@sentry-internal/replay/src/session/saveSession.ts","../node_modules/@sentry-internal/replay/src/session/createSession.ts","../node_modules/@sentry-internal/replay/src/util/isExpired.ts","../node_modules/@sentry-internal/replay/src/util/isSessionExpired.ts","../node_modules/@sentry-internal/replay/src/session/shouldRefreshSession.ts","../node_modules/@sentry-internal/replay/src/session/loadOrCreateSession.ts","../node_modules/@sentry-internal/replay/src/session/fetchSession.ts","../node_modules/@sentry-internal/replay/src/util/addEvent.ts","../node_modules/@sentry-internal/replay/src/util/eventUtils.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/handleAfterSendEvent.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/handleBeforeSendEvent.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/handleBreadcrumbs.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/handleGlobalEvent.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/util/addFeedbackBreadcrumb.ts","../node_modules/@sentry-internal/replay/src/util/isRrwebError.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/util/shouldSampleForBufferEvent.ts","../node_modules/@sentry-internal/replay/src/util/createPerformanceSpans.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/handleHistory.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/util/addNetworkBreadcrumb.ts","../node_modules/@sentry-internal/replay/src/util/shouldFilterRequest.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/util/networkUtils.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/util/fetchUtils.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/util/xhrUtils.ts","../node_modules/@sentry-internal/replay/src/coreHandlers/handleNetworkBreadcrumbs.ts","../node_modules/@sentry-internal/replay/src/util/addMemoryEntry.ts","../node_modules/@sentry-internal/replay/src/util/handleRecordingEmit.ts","../node_modules/@sentry-internal/replay/src/util/createReplayEnvelope.ts","../node_modules/@sentry-internal/replay/src/util/prepareRecordingData.ts","../node_modules/@sentry-internal/replay/src/util/prepareReplayEvent.ts","../node_modules/@sentry-internal/replay/src/util/sendReplayRequest.ts","../node_modules/@sentry-internal/replay/src/util/sendReplay.ts","../node_modules/@sentry-internal/replay/src/util/throttle.ts","../node_modules/@sentry-internal/replay/src/replay.ts","../node_modules/@sentry-internal/replay/src/util/debounce.ts","../node_modules/@sentry-internal/replay/src/util/addGlobalListeners.ts","../node_modules/@sentry-internal/replay/src/util/getPrivacyOptions.ts","../node_modules/@sentry-internal/replay/src/integration.ts","../node_modules/@sentry-internal/replay/src/util/maskAttribute.ts","../node_modules/@sentry/core/src/integration.ts","../node_modules/@sentry/core/src/integrations/inboundfilters.ts","../node_modules/@sentry/core/src/integrations/functiontostring.ts","../node_modules/@sentry/core/src/integrations/dedupe.ts","../node_modules/@sentry/core/src/sdk.ts","../node_modules/@sentry/utils/src/error.ts","../node_modules/@sentry/core/src/api.ts","../node_modules/@sentry/core/src/envelope.ts","../node_modules/@sentry/core/src/baseclient.ts","../node_modules/@sentry/utils/src/clientreport.ts","../node_modules/@sentry/browser/src/debug-build.ts","../node_modules/@sentry/browser/src/eventbuilder.ts","../node_modules/@sentry/browser/src/helpers.ts","../node_modules/@sentry/browser/src/client.ts","../node_modules/@sentry/core/src/utils/sdkMetadata.ts","../node_modules/@sentry/browser/src/userfeedback.ts","../node_modules/@sentry/utils/src/instrument/console.ts","../node_modules/@sentry/utils/src/instrument/fetch.ts","../node_modules/@sentry/utils/src/breadcrumb-log-level.ts","../node_modules/@sentry/utils/src/url.ts","../node_modules/@sentry/browser/src/integrations/breadcrumbs.ts","../node_modules/@sentry/browser/src/integrations/browserapierrors.ts","../node_modules/@sentry/utils/src/instrument/globalError.ts","../node_modules/@sentry/utils/src/instrument/globalUnhandledRejection.ts","../node_modules/@sentry/browser/src/integrations/globalhandlers.ts","../node_modules/@sentry/browser/src/integrations/httpcontext.ts","../node_modules/@sentry/utils/src/aggregate-errors.ts","../node_modules/@sentry/browser/src/integrations/linkederrors.ts","../node_modules/@sentry/browser/src/stack-parsers.ts","../node_modules/@sentry/utils/src/promisebuffer.ts","../node_modules/@sentry/core/src/transports/base.ts","../node_modules/@sentry/browser/src/transports/fetch.ts","../node_modules/@sentry/browser/src/sdk.ts","../node_modules/@sentry/core/src/asyncContext/stackStrategy.ts","../node_modules/@sentry/core/src/defaultScopes.ts","../node_modules/@sentry/core/src/asyncContext/index.ts","../node_modules/@sentry/core/src/breadcrumbs.ts","../node_modules/@sentry/core/src/carrier.ts","../node_modules/@sentry/core/src/constants.ts","../node_modules/@sentry/core/src/currentScopes.ts","../node_modules/@sentry/core/src/debug-build.ts","../node_modules/@sentry/core/src/exports.ts","../node_modules/@sentry/utils/src/propagationContext.ts","../node_modules/@sentry/core/src/scope.ts","../node_modules/@sentry/core/src/semanticAttributes.ts","../node_modules/@sentry/core/src/session.ts","../node_modules/@sentry/utils/src/baggage.ts","../node_modules/@sentry/core/src/tracing/dynamicSamplingContext.ts","../node_modules/@sentry/core/src/utils/hasTracingEnabled.ts","../node_modules/@sentry/core/src/utils/parseSampleRate.ts","../node_modules/@sentry/core/src/eventProcessors.ts","../node_modules/@sentry/core/src/utils/applyScopeDataToEvent.ts","../node_modules/@sentry/core/src/utils/prepareEvent.ts","../node_modules/@sentry/core/src/utils/spanOnScope.ts","../node_modules/@sentry/core/src/metrics/metric-summary.ts","../node_modules/@sentry/core/src/tracing/spanstatus.ts","../node_modules/@sentry/core/src/utils/spanUtils.ts","../node_modules/@sentry/utils/src/browser.ts","../node_modules/@sentry/utils/src/debug-build.ts","../node_modules/@sentry/utils/src/dsn.ts","../node_modules/@sentry/utils/src/env.ts","../node_modules/@sentry/utils/src/envelope.ts","../node_modules/@sentry/utils/src/instrument/handlers.ts","../node_modules/@sentry/utils/src/is.ts","../node_modules/@sentry/utils/src/logger.ts","../node_modules/@sentry/utils/src/misc.ts","../node_modules/@sentry/utils/src/normalize.ts","../node_modules/@sentry/utils/src/memo.ts","../node_modules/@sentry/utils/src/object.ts","../node_modules/@sentry/utils/src/ratelimit.ts","../node_modules/@sentry/utils/src/severity.ts","../node_modules/@sentry/utils/src/stacktrace.ts","../node_modules/@sentry/utils/src/string.ts","../node_modules/@sentry/utils/src/supports.ts","../node_modules/@sentry/utils/src/syncpromise.ts","../node_modules/@sentry/utils/src/time.ts","../node_modules/@sentry/utils/src/version.ts","../node_modules/@sentry/utils/src/worldwide.ts","../node_modules/array-move/index.js","../node_modules/axios-retry/dist/esm/index.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/@babel/runtime/helpers/esm/OverloadYield.js","../node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js","../node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js","../node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js","../node_modules/@babel/runtime/helpers/esm/asyncIterator.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/html-react-parser/index.mjs","../node_modules/input-format/source/helpers.js","../node_modules/input-format/source/templateFormatter.js","../node_modules/input-format/source/closeBraces.js","../node_modules/lodash-es/isArray.js","../pdf.js/src/shared/scripting_utils.js","../pdf.js/src/display/annotation_layer.js","../pdf.js/src/display/annotation_storage.js","../pdf.js/src/display/api.js","../pdf.js/src/display/base_factory.js","../pdf.js/src/display/pattern_helper.js","../pdf.js/src/shared/image_utils.js","../pdf.js/src/display/canvas.js","../pdf.js/src/display/display_utils.js","../pdf.js/src/display/draw_layer.js","../pdf.js/src/display/editor/freetext.js","../pdf.js/src/display/editor/highlight.js","../pdf.js/src/display/editor/ink.js","../pdf.js/src/display/editor/stamp.js","../pdf.js/src/display/editor/annotation_editor_layer.js","../pdf.js/src/display/editor/color_picker.js","../pdf.js/src/display/editor/alt_text.js","../pdf.js/src/display/editor/editor.js","../pdf.js/src/display/editor/outliner.js","../pdf.js/src/display/editor/toolbar.js","../pdf.js/src/display/editor/tools.js","../pdf.js/src/display/fetch_stream.js","../pdf.js/src/display/font_loader.js","../pdf.js/src/display/metadata.js","../pdf.js/src/display/network.js","../pdf.js/src/display/network_utils.js","../pdf.js/src/display/content_disposition.js","../pdf.js/src/display/node_stream.js","../pdf.js/src/display/node_utils.js","../pdf.js/src/display/optional_content_config.js","../pdf.js/src/display/text_layer.js","../pdf.js/src/display/transport_stream.js","../pdf.js/src/display/worker_options.js","../pdf.js/src/display/xfa_layer.js","../pdf.js/src/display/xfa_text.js","../pdf.js/src/pdf.js","../pdf.js/src/shared/message_handler.js","../pdf.js/src/shared/murmurhash3.js","../pdf.js/src/shared/util.js","../pdf.js/webpack/bootstrap","../pdf.js/webpack/runtime/async module","../pdf.js/webpack/runtime/define property getters","../pdf.js/webpack/runtime/hasOwnProperty shorthand","../pdf.js/webpack/startup","../node_modules/pdfjs-dist/webpack.mjs","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/tslib/tslib.es6.mjs","../webpack/bootstrap","../webpack/runtime/async module","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","../webpack/runtime/nonce","../webpack/startup"],"sourcesContent":["var _desc, _g;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgClapFilled(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"84px\",\n height: \"91px\",\n viewBox: \"0 0 84 91\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _desc || (_desc = /*#__PURE__*/React.createElement(\"desc\", null, \"Created with Sketch.\")), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Page-1\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group\",\n fillRule: \"nonzero\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.5665842,49.8718365 C80.7540842,47.0593365 80.6499175,42.8926699 78.0457509,40.2885032 C77.2124175,39.4551699 76.0665842,38.8301699 74.9207509,38.5176699 C75.3374175,37.5801699 75.5457509,36.5385032 75.5457509,35.4968365 C75.5457509,33.5176699 74.8165842,31.7468365 73.4624175,30.3926699 C70.8582509,27.7885032 66.8999175,27.5801699 64.0874175,29.6635032 C63.7749175,28.8301699 63.3582509,27.9968365 62.7332509,27.2676699 C61.3790842,25.8093365 59.5040842,24.8718365 57.5249175,24.8718365 C55.6499175,24.7676699 53.7749175,25.4968365 52.4207509,26.8510032 C52.2124175,26.5385032 52.0040842,26.1218365 51.6915842,25.9135032 C50.3374175,24.4551699 48.4624175,23.5176699 46.4832509,23.5176699 C44.3999175,23.4135032 42.5249175,24.2468365 41.1707509,25.6010032 L30.7540842,35.9135032 C29.6082509,31.5385032 25.4415842,28.5176699 20.8582509,29.0385032 C19.6082509,29.1426699 18.4624175,29.7676699 17.6290842,30.6010032 C15.7540842,28.5176699 12.8374175,27.2676699 9.81658419,27.5801699 C7.00408419,27.8926699 4.81658419,30.2885032 4.81658419,33.2051699 L4.92075086,48.3093365 C4.92075086,52.2676699 4.39991752,56.3301699 3.46241752,59.8718365 L3.46241752,59.9760032 L3.46241752,59.9760032 C1.37908419,67.2676699 3.46241752,75.0801699 8.77491752,80.3926699 C14.2957509,85.9135032 21.6915842,88.9343365 29.3999175,88.9343365 C30.0249175,88.9343365 30.7540842,88.9343365 31.3790842,88.8301699 C34.2957509,89.7676699 37.4207509,90.2885032 40.4415842,90.2885032 C47.9415842,90.2885032 55.4415842,87.4760032 61.0665842,81.7468365 L81.1707509,61.5385032 C82.5249175,60.1843365 83.2540842,58.3093365 83.2540842,56.4343365 C83.2540842,54.4551699 82.5249175,52.6843365 81.1707509,51.3301699 C80.4415842,50.7051699 79.5040842,50.1843365 78.5665842,49.8718365 Z\",\n id: \"Path\",\n fill: \"#508BEF\",\n transform: \"translate(42.959974, 56.898710) scale(-1, 1) translate(-42.959974, -56.898710) \"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M49.8533639,28.6218365 C50.4783639,27.9968365 51.3116972,27.7885032 52.0408639,27.7885032 C52.8741972,27.7885032 53.6033639,28.2051699 54.1241972,28.7260032 C54.4366972,29.1426699 54.6450305,29.6635032 54.6450305,30.1843365 L37.4575305,47.7885032 L36.9366972,41.4343365 L49.8533639,28.6218365 Z\",\n id: \"Path\",\n fill: \"#93BBFF\",\n transform: \"translate(45.790864, 37.788503) scale(-1, 1) translate(-45.790864, -37.788503) \"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.3001469,77.4760032 C65.0293135,73.2051699 63.4668135,67.0593365 65.0293135,61.3301699 L65.0293135,61.3301699 C66.1751469,57.1635032 66.6959802,52.7885032 66.6959802,48.4135032 L66.5918135,33.3093365 C66.5918135,32.6843365 67.1126469,32.0593365 67.7376469,32.0593365 C70.4459802,31.7468365 72.8418135,33.7260032 73.1543135,36.3301699 L73.3626469,38.8301699 L73.4668135,49.7676699 C73.4668135,53.7260032 72.9459802,57.6843365 72.1126469,61.2260032 C72.1126469,61.3301699 72.0084802,61.3301699 72.0084802,61.4343365 C69.9251469,68.7260032 72.0084802,76.5385032 77.3209802,81.8510032 C77.8418135,82.3718365 78.4668135,82.8926699 78.9876469,83.4135032 C75.3418135,82.1635032 72.0084802,80.1843365 69.3001469,77.4760032 Z\",\n id: \"Path\",\n fill: \"#93BBFF\",\n transform: \"translate(71.712172, 57.720165) scale(-1, 1) translate(-71.712172, -57.720165) \"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.9936738,58.6218365 L46.8895071,78.8301699 C37.2020071,88.5176699 21.3686738,88.5176699 11.6811738,78.8301699 C7.51450713,74.6635032 5.84784046,68.5176699 7.41034046,62.7885032 C7.41034046,62.7885032 7.41034046,62.6843365 7.41034046,62.6843365 C8.55617379,58.4135032 9.07700713,54.1426699 9.07700713,49.7676699 L9.07700713,38.8301699 L9.07700713,38.5176699 L9.07700713,34.6635032 C9.07700713,34.0385032 9.59784046,33.4135032 10.2228405,33.4135032 C12.9311738,33.1010032 15.3270071,35.0801699 15.6395071,37.6843365 L16.3686738,48.2051699 C16.5770071,49.7676699 17.6186738,51.1218365 19.0770071,51.6426699 C20.6395071,52.1635032 22.2020071,51.7468365 23.3478405,50.7051699 L43.9728405,30.0801699 C44.5978405,29.4551699 45.1186738,29.1426699 46.1603405,29.2468365 C46.9936738,29.2468365 47.7228405,29.6635032 48.2436738,30.1843365 C49.1811738,31.2260032 49.0770071,33.3093365 47.9311738,34.4551699 L32.6186738,49.8718365 C31.7853405,50.7051699 31.7853405,52.0593365 32.6186738,52.8926699 C33.0353405,53.3093365 33.5561738,53.5176699 34.1811738,53.5176699 C34.7020071,53.5176699 35.3270071,53.3093365 35.7436738,52.8926699 L51.1603405,37.4760032 L55.2228405,33.4135032 C56.3686738,32.2676699 58.2436738,32.2676699 59.3895071,33.4135032 C59.9103405,33.9343365 60.2228405,34.6635032 60.2228405,35.4968365 C60.2228405,36.3301699 59.9103405,37.0593365 59.3895071,37.5801699 L39.8061738,57.0593365 C38.9728405,57.8926699 38.9728405,59.2468365 39.8061738,60.0801699 C40.2228405,60.4968365 40.7436738,60.7051699 41.3686738,60.7051699 C41.9936738,60.7051699 42.5145071,60.4968365 42.9311738,60.0801699 L53.8686738,49.1426699 L59.7020071,43.3093365 C60.8478405,42.1635032 62.7228405,42.1635032 63.8686738,43.3093365 C65.0145071,44.4551699 65.0145071,46.3301699 63.8686738,47.4760032 L59.9103405,51.4343365 L56.9936738,54.2468365 L46.9936738,64.2468365 C46.1603405,65.0801699 46.1603405,66.4343365 46.9936738,67.2676699 C47.4103405,67.6843365 47.9311738,67.8926699 48.5561738,67.8926699 C49.1811738,67.8926699 49.7020071,67.6843365 50.1186738,67.2676699 L62.9311738,54.4551699 C64.0770071,53.3093365 65.9520071,53.3093365 67.0978405,54.4551699 C67.6186738,54.9760032 67.9311738,55.7051699 67.9311738,56.5385032 C67.9311738,57.3718365 67.6186738,58.1010032 66.9936738,58.6218365 Z\",\n id: \"Path\",\n fill: \"#93BBFF\",\n transform: \"translate(37.381852, 57.661446) scale(-1, 1) translate(-37.381852, -57.661446) \"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.9962065,14.2468365 L17.3087065,2.89266988 C17.8295399,1.85100321 19.0795399,1.33016988 20.1212065,1.85100321 C21.1628732,2.37183654 21.6837065,3.62183654 21.1628732,4.66350321 L15.9545399,16.1218365 C15.5378732,16.9551699 14.8087065,17.3718365 13.9753732,17.3718365 C13.6628732,17.3718365 13.3503732,17.2676699 13.0378732,17.1635032 C11.9962065,16.6426699 11.5795399,15.2885032 11.9962065,14.2468365 Z\",\n id: \"Path\",\n fill: \"#508BEF\",\n transform: \"translate(16.601869, 9.509257) scale(-1, 1) translate(-16.601869, -9.509257) \"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.9575305,2.68433654 C24.6450305,1.53850321 25.3741972,0.392669877 26.5200305,0.0801698768 C27.6658639,-0.232330123 28.8116972,0.392669877 29.1241972,1.53850321 L32.3533639,13.6218365 C32.6658639,14.7676699 31.9366972,15.9135032 30.7908639,16.2260032 C30.5825305,16.2260032 30.3741972,16.3301699 30.2700305,16.3301699 C29.3325305,16.3301699 28.4991972,15.7051699 28.1866972,14.7676699 L24.9575305,2.68433654 Z\",\n id: \"Path\",\n fill: \"#508BEF\",\n transform: \"translate(28.655447, 8.165085) scale(-1, 1) translate(-28.655447, -8.165085) \"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.4751588,17.2676699 L3.12099211,22.5801699 C2.80849211,22.6843365 2.49599211,22.7885032 2.18349211,22.7885032 C1.35015877,22.7885032 0.620992107,22.3718365 0.20432544,21.5385032 C-0.316507893,20.4968365 0.20432544,19.1426699 1.24599211,18.7260032 L12.6001588,13.4135032 C13.6418254,12.8926699 14.9959921,13.4135032 15.4126588,14.4551699 C16.0376588,15.4968365 15.5168254,16.7468365 14.4751588,17.2676699 Z\",\n id: \"Path\",\n fill: \"#508BEF\",\n transform: \"translate(7.841345, 17.998840) scale(-1, 1) translate(-7.841345, -17.998840) \"\n })))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClapFilled);\nexport default __webpack_public_path__ + \"static/media/ClapFilled.0aa6f004805e1f7b26fd52a76e269873.svg\";\nexport { ForwardRef as ReactComponent };","var _desc, _g;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgClapOutlined(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"85px\",\n height: \"91px\",\n viewBox: \"0 0 85 91\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Shape\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _desc || (_desc = /*#__PURE__*/React.createElement(\"desc\", null, \"Created with Sketch.\")), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Page-1\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M76.8390231,50.5833333 C79.0265231,47.7708333 78.9223564,43.6041667 76.3181898,41 C75.4848564,40.1666667 74.3390231,39.5416667 73.1931898,39.2291667 C73.6098564,38.2916667 73.8181898,37.25 73.8181898,36.2083333 C73.8181898,34.2291667 73.0890231,32.4583333 71.7348564,31.1041667 C69.1306898,28.5 65.1723564,28.2916667 62.3598564,30.375 C62.0473564,29.5416667 61.6306898,28.7083333 61.0056898,27.9791667 C59.6515231,26.5208333 57.7765231,25.5833333 55.7973564,25.5833333 C53.9223564,25.4791667 52.0473564,26.2083333 50.6931898,27.5625 C50.4848564,27.25 50.2765231,26.8333333 49.9640231,26.625 C48.6098564,25.1666667 46.7348564,24.2291667 44.7556898,24.2291667 C42.6723564,24.125 40.7973564,24.9583333 39.4431898,26.3125 L29.0265231,36.625 C27.8806898,32.25 23.7140231,29.2291667 19.1306898,29.75 C17.8806898,29.8541667 16.7348564,30.4791667 15.9015231,31.3125 C14.0265231,29.2291667 11.1098564,27.9791667 8.08902309,28.2916667 C5.27652309,28.6041667 3.08902309,31 3.08902309,33.9166667 L3.19318976,49.0208333 C3.19318976,52.9791667 2.67235642,57.0416667 1.73485642,60.5833333 L1.73485642,60.6875 L1.73485642,60.6875 C-0.348476909,67.9791667 1.73485642,75.7916667 7.04735642,81.1041667 C12.5681898,86.625 19.9640231,89.6458333 27.6723564,89.6458333 C28.2973564,89.6458333 29.0265231,89.6458333 29.6515231,89.5416667 C32.5681898,90.4791667 35.6931898,91 38.7140231,91 C46.2140231,91 53.7140231,88.1875 59.3390231,82.4583333 L79.4431898,62.25 C80.7973564,60.8958333 81.5265231,59.0208333 81.5265231,57.1458333 C81.5265231,55.1666667 80.7973564,53.3958333 79.4431898,52.0416667 C78.7140231,51.4166667 77.7765231,50.8958333 76.8390231,50.5833333 Z M42.4640231,29.3333333 C43.0890231,28.7083333 43.9223564,28.5 44.6515231,28.5 C45.4848564,28.5 46.2140231,28.9166667 46.7348564,29.4375 C47.0473564,29.8541667 47.2556898,30.375 47.2556898,30.8958333 L30.0681898,48.5 L29.5473564,42.1458333 L42.4640231,29.3333333 Z M10.0681898,78.1875 C5.79735642,73.9166667 4.23485642,67.7708333 5.79735642,62.0416667 L5.79735642,62.0416667 C6.94318976,57.875 7.46402309,53.5 7.46402309,49.125 L7.35985642,34.0208333 C7.35985642,33.3958333 7.88068976,32.7708333 8.50568976,32.7708333 C11.2140231,32.4583333 13.6098564,34.4375 13.9223564,37.0416667 L14.1306898,39.5416667 L14.2348564,50.4791667 C14.2348564,54.4375 13.7140231,58.3958333 12.8806898,61.9375 C12.8806898,62.0416667 12.7765231,62.0416667 12.7765231,62.1458333 C10.6931898,69.4375 12.7765231,77.25 18.0890231,82.5625 C18.6098564,83.0833333 19.2348564,83.6041667 19.7556898,84.125 C16.1098564,82.875 12.7765231,80.8958333 10.0681898,78.1875 Z M76.4223564,59.3333333 L56.3181898,79.5416667 C46.6306898,89.2291667 30.7973564,89.2291667 21.1098564,79.5416667 C16.9431898,75.375 15.2765231,69.2291667 16.8390231,63.5 C16.8390231,63.5 16.8390231,63.3958333 16.8390231,63.3958333 C17.9848564,59.125 18.5056898,54.8541667 18.5056898,50.4791667 L18.5056898,50.4791667 C18.5056898,50.4791667 18.5056898,50.4791667 18.5056898,50.4791667 L18.5056898,39.5416667 L18.5056898,39.5416667 L18.5056898,39.2291667 L18.5056898,35.375 C18.5056898,34.75 19.0265231,34.125 19.6515231,34.125 C22.3598564,33.8125 24.7556898,35.7916667 25.0681898,38.3958333 L25.7973564,48.9166667 C26.0056898,50.4791667 27.0473564,51.8333333 28.5056898,52.3541667 C30.0681898,52.875 31.6306898,52.4583333 32.7765231,51.4166667 L53.4015231,30.7916667 C54.0265231,30.1666667 54.5473564,29.8541667 55.5890231,29.9583333 C56.4223564,29.9583333 57.1515231,30.375 57.6723564,30.8958333 C58.6098564,31.9375 58.5056898,34.0208333 57.3598564,35.1666667 L57.3598564,35.1666667 C57.3598564,35.1666667 57.3598564,35.1666667 57.3598564,35.1666667 L42.0473564,50.5833333 C41.2140231,51.4166667 41.2140231,52.7708333 42.0473564,53.6041667 C42.4640231,54.0208333 42.9848564,54.2291667 43.6098564,54.2291667 C44.1306898,54.2291667 44.7556898,54.0208333 45.1723564,53.6041667 L60.5890231,38.1875 C60.5890231,38.1875 60.5890231,38.1875 60.5890231,38.1875 L64.6515231,34.125 C65.7973564,32.9791667 67.6723564,32.9791667 68.8181898,34.125 C69.3390231,34.6458333 69.6515231,35.375 69.6515231,36.2083333 C69.6515231,37.0416667 69.3390231,37.7708333 68.8181898,38.2916667 L49.2348564,57.7708333 C48.4015231,58.6041667 48.4015231,59.9583333 49.2348564,60.7916667 C49.6515231,61.2083333 50.1723564,61.4166667 50.7973564,61.4166667 C51.4223564,61.4166667 51.9431898,61.2083333 52.3598564,60.7916667 L63.2973564,49.8541667 L69.1306898,44.0208333 C70.2765231,42.875 72.1515231,42.875 73.2973564,44.0208333 C74.4431898,45.1666667 74.4431898,47.0416667 73.2973564,48.1875 L69.3390231,52.1458333 C69.3390231,52.1458333 69.3390231,52.1458333 69.3390231,52.1458333 L66.4223564,54.9583333 L56.4223564,64.9583333 C55.5890231,65.7916667 55.5890231,67.1458333 56.4223564,67.9791667 C56.8390231,68.3958333 57.3598564,68.6041667 57.9848564,68.6041667 C58.6098564,68.6041667 59.1306898,68.3958333 59.5473564,67.9791667 L72.3598564,55.1666667 C73.5056898,54.0208333 75.3806898,54.0208333 76.5265231,55.1666667 C77.0473564,55.6875 77.3598564,56.4166667 77.3598564,57.25 C77.3598564,58.0833333 77.0473564,58.8125 76.4223564,59.3333333 Z M62.9848564,14.9583333 L68.2973564,3.60416667 C68.8181898,2.5625 70.0681898,2.04166667 71.1098564,2.5625 C72.1515231,3.08333333 72.6723564,4.33333333 72.1515231,5.375 L66.9431898,16.8333333 C66.5265231,17.6666667 65.7973564,18.0833333 64.9640231,18.0833333 C64.6515231,18.0833333 64.3390231,17.9791667 64.0265231,17.875 C62.9848564,17.3541667 62.5681898,16 62.9848564,14.9583333 Z M51.8390231,3.39583333 C51.5265231,2.25 52.2556898,1.10416667 53.4015231,0.791666667 C54.5473564,0.479166667 55.6931898,1.10416667 56.0056898,2.25 L59.2348564,14.3333333 C59.5473564,15.4791667 58.8181898,16.625 57.6723564,16.9375 C57.4640231,16.9375 57.2556898,17.0416667 57.1515231,17.0416667 C56.2140231,17.0416667 55.3806898,16.4166667 55.0681898,15.4791667 L51.8390231,3.39583333 Z M82.9848564,17.9791667 L71.6306898,23.2916667 C71.3181898,23.3958333 71.0056898,23.5 70.6931898,23.5 C69.8598564,23.5 69.1306898,23.0833333 68.7140231,22.25 C68.1931898,21.2083333 68.7140231,19.8541667 69.7556898,19.4375 L81.1098564,14.125 C82.1515231,13.6041667 83.5056898,14.125 83.9223564,15.1666667 C84.5473564,16.2083333 84.0265231,17.4583333 82.9848564,17.9791667 Z\",\n id: \"Shape\",\n fill: \"#508BEF\",\n fillRule: \"nonzero\",\n transform: \"translate(42.565345, 45.855748) scale(-1, 1) translate(-42.565345, -45.855748) \"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClapOutlined);\nexport default __webpack_public_path__ + \"static/media/ClapOutlined.ba133b95f11dd570c52d41e417e19500.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgClapOutlinedBlack(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 17,\n viewBox: \"0 0 16 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.36794 9.48109C0.960987 8.95787 0.980364 8.18273 1.46483 7.69827C1.61986 7.54324 1.83302 7.42697 2.04618 7.36884C1.96867 7.19443 1.92991 7.00064 1.92991 6.80686C1.92991 6.43867 2.06556 6.10923 2.31748 5.85731C2.80195 5.37285 3.53833 5.33409 4.06155 5.72166C4.11969 5.56663 4.1972 5.41161 4.31347 5.27596C4.56539 5.00466 4.91421 4.83025 5.2824 4.83025C5.63121 4.81087 5.98002 4.94652 6.23195 5.19844C6.2707 5.14031 6.30946 5.06279 6.36759 5.02403C6.61952 4.75274 6.96833 4.57833 7.33652 4.57833C7.72409 4.55895 8.0729 4.71398 8.32483 4.9659L10.2627 6.88437C10.4758 6.07048 11.251 5.5085 12.1036 5.60539C12.3362 5.62477 12.5493 5.74104 12.7044 5.89607C13.0532 5.5085 13.5958 5.27596 14.1578 5.33409C14.681 5.39223 15.0879 5.83793 15.0879 6.38053L15.0686 9.19042C15.0686 9.9268 15.1654 10.6826 15.3399 11.3414V11.3608C15.7274 12.7173 15.3399 14.1707 14.3515 15.159C13.3245 16.1861 11.9486 16.748 10.5146 16.748C10.3983 16.748 10.2627 16.748 10.1464 16.7287C9.60381 16.9031 9.02245 17 8.46048 17C7.06522 17 5.66997 16.4767 4.62353 15.4109L0.883471 11.6515C0.631551 11.3996 0.495902 11.0508 0.495902 10.7019C0.495902 10.3337 0.631551 10.0043 0.883471 9.75239C1.01912 9.63612 1.19353 9.53923 1.36794 9.48109ZM7.76285 5.52788C7.64658 5.41161 7.49155 5.37285 7.3559 5.37285C7.20087 5.37285 7.06522 5.45036 6.96833 5.54726C6.91019 5.62477 6.87144 5.72166 6.87144 5.81855L10.0689 9.09352L10.1658 7.91143L7.76285 5.52788ZM13.7896 14.6164C14.5841 13.8219 14.8748 12.6786 14.5841 11.6127C14.3709 10.8376 14.274 10.0237 14.274 9.2098L14.2934 6.39991C14.2934 6.28364 14.1965 6.16737 14.0802 6.16737C13.5764 6.10923 13.1307 6.47742 13.0726 6.96189L13.0338 7.42697L13.0144 9.46172C13.0144 10.1981 13.1113 10.9345 13.2663 11.5934C13.2663 11.6127 13.2857 11.6127 13.2857 11.6321C13.6733 12.9886 13.2857 14.442 12.2974 15.4303C12.2005 15.5272 12.0843 15.6241 11.9874 15.721C12.6656 15.4884 13.2857 15.1202 13.7896 14.6164ZM1.44545 11.1089L5.1855 14.8683C6.98771 16.6705 9.93324 16.6705 11.7354 14.8683C12.5106 14.0932 12.8206 12.9499 12.53 11.884V11.8647C12.3168 11.0701 12.2199 10.2756 12.2199 9.46172V7.42697V7.36884V6.65183C12.2199 6.53556 12.123 6.41929 12.0067 6.41929C11.5029 6.36115 11.0572 6.72934 10.9991 7.21381L10.8634 9.17104C10.8247 9.46172 10.6309 9.71364 10.3596 9.81053C10.0689 9.90742 9.77821 9.82991 9.56505 9.63612L5.7281 5.79918C5.61183 5.6829 5.51494 5.62477 5.32115 5.64415C5.16613 5.64415 5.03048 5.72166 4.93358 5.81855C4.75918 6.01234 4.77856 6.39991 4.99172 6.61307L7.84036 9.48109C7.99539 9.63612 7.99539 9.88804 7.84036 10.0431C7.76285 10.1206 7.66596 10.1593 7.54968 10.1593C7.45279 10.1593 7.33652 10.1206 7.25901 10.0431L4.39099 7.17505L3.63522 6.41929C3.42206 6.20612 3.07325 6.20612 2.86008 6.41929C2.76319 6.51618 2.70505 6.65183 2.70505 6.80686C2.70505 6.96189 2.76319 7.09754 2.86008 7.19443L6.50324 10.8182C6.65827 10.9732 6.65827 11.2252 6.50324 11.3802C6.42573 11.4577 6.32884 11.4965 6.21257 11.4965C6.0963 11.4965 5.9994 11.4577 5.92189 11.3802L3.88714 9.34545L2.80195 8.26025C2.58878 8.04708 2.23997 8.04708 2.0268 8.26025C1.81364 8.47341 1.81364 8.82222 2.0268 9.03539L2.76319 9.77177L3.30579 10.295L5.16613 12.1553C5.32115 12.3104 5.32115 12.5623 5.16613 12.7173C5.08861 12.7948 4.99172 12.8336 4.87545 12.8336C4.75918 12.8336 4.66228 12.7948 4.58477 12.7173L2.20121 10.3337C1.98805 10.1206 1.63924 10.1206 1.42607 10.3337C1.32918 10.4306 1.27104 10.5663 1.27104 10.7213C1.27104 10.8763 1.32918 11.012 1.44545 11.1089ZM3.94528 2.85364L2.95697 0.741381C2.86008 0.547596 2.62754 0.450704 2.43375 0.547596C2.23997 0.644489 2.14308 0.877031 2.23997 1.07082L3.20889 3.20245C3.28641 3.35748 3.42206 3.435 3.57709 3.435C3.63522 3.435 3.69336 3.41562 3.75149 3.39624C3.94528 3.29935 4.02279 3.04743 3.94528 2.85364ZM6.01878 0.702624C6.07692 0.489461 5.94127 0.276297 5.7281 0.218161C5.51494 0.160026 5.30178 0.276297 5.24364 0.489461L4.64291 2.73737C4.58477 2.95053 4.72042 3.1637 4.93358 3.22183C4.97234 3.22183 5.0111 3.24121 5.03048 3.24121C5.20488 3.24121 5.35991 3.12494 5.41805 2.95053L6.01878 0.702624ZM0.224603 3.41562L2.33686 4.40392C2.395 4.4233 2.45313 4.44268 2.51127 4.44268C2.6663 4.44268 2.80195 4.36517 2.87946 4.21014C2.97635 4.01635 2.87946 3.76443 2.68567 3.68692L0.573416 2.69861C0.37963 2.60172 0.127709 2.69861 0.0501957 2.8924C-0.0660753 3.08618 0.030817 3.31872 0.224603 3.41562Z\",\n fill: \"black\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClapOutlinedBlack);\nexport default __webpack_public_path__ + \"static/media/ClapOutlinedBlack.d8949fdebeceac655688d01d79b99a12.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgClapOutlinedWhite(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 17,\n viewBox: \"0 0 16 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.36794 9.48109C0.960987 8.95787 0.980364 8.18273 1.46483 7.69827C1.61986 7.54324 1.83302 7.42697 2.04618 7.36884C1.96867 7.19443 1.92991 7.00064 1.92991 6.80686C1.92991 6.43867 2.06556 6.10923 2.31748 5.85731C2.80195 5.37285 3.53833 5.33409 4.06155 5.72166C4.11969 5.56663 4.1972 5.41161 4.31347 5.27596C4.56539 5.00466 4.91421 4.83025 5.2824 4.83025C5.63121 4.81087 5.98002 4.94652 6.23195 5.19844C6.2707 5.14031 6.30946 5.06279 6.36759 5.02403C6.61952 4.75274 6.96833 4.57833 7.33652 4.57833C7.72409 4.55895 8.0729 4.71398 8.32483 4.9659L10.2627 6.88437C10.4758 6.07048 11.251 5.5085 12.1036 5.60539C12.3362 5.62477 12.5493 5.74104 12.7044 5.89607C13.0532 5.5085 13.5958 5.27596 14.1578 5.33409C14.681 5.39223 15.0879 5.83793 15.0879 6.38053L15.0686 9.19042C15.0686 9.9268 15.1654 10.6826 15.3399 11.3414V11.3608C15.7274 12.7173 15.3399 14.1707 14.3515 15.159C13.3245 16.1861 11.9486 16.748 10.5146 16.748C10.3983 16.748 10.2627 16.748 10.1464 16.7287C9.60381 16.9031 9.02245 17 8.46048 17C7.06522 17 5.66997 16.4767 4.62353 15.4109L0.883471 11.6515C0.631551 11.3996 0.495902 11.0508 0.495902 10.7019C0.495902 10.3337 0.631551 10.0043 0.883471 9.75239C1.01912 9.63612 1.19353 9.53923 1.36794 9.48109ZM7.76285 5.52788C7.64658 5.41161 7.49155 5.37285 7.3559 5.37285C7.20087 5.37285 7.06522 5.45036 6.96833 5.54726C6.91019 5.62477 6.87144 5.72166 6.87144 5.81855L10.0689 9.09352L10.1658 7.91143L7.76285 5.52788ZM13.7896 14.6164C14.5841 13.8219 14.8748 12.6786 14.5841 11.6127C14.3709 10.8376 14.274 10.0237 14.274 9.2098L14.2934 6.39991C14.2934 6.28364 14.1965 6.16737 14.0802 6.16737C13.5764 6.10923 13.1307 6.47742 13.0726 6.96189L13.0338 7.42697L13.0144 9.46172C13.0144 10.1981 13.1113 10.9345 13.2663 11.5934C13.2663 11.6127 13.2857 11.6127 13.2857 11.6321C13.6733 12.9886 13.2857 14.442 12.2974 15.4303C12.2005 15.5272 12.0843 15.6241 11.9874 15.721C12.6656 15.4884 13.2857 15.1202 13.7896 14.6164ZM1.44545 11.1089L5.1855 14.8683C6.98771 16.6705 9.93324 16.6705 11.7354 14.8683C12.5106 14.0932 12.8206 12.9499 12.53 11.884V11.8647C12.3168 11.0701 12.2199 10.2756 12.2199 9.46172V7.42697V7.36884V6.65183C12.2199 6.53556 12.123 6.41929 12.0067 6.41929C11.5029 6.36115 11.0572 6.72934 10.9991 7.21381L10.8634 9.17104C10.8247 9.46172 10.6309 9.71364 10.3596 9.81053C10.0689 9.90742 9.77821 9.82991 9.56505 9.63612L5.7281 5.79918C5.61183 5.6829 5.51494 5.62477 5.32115 5.64415C5.16613 5.64415 5.03048 5.72166 4.93358 5.81855C4.75918 6.01234 4.77856 6.39991 4.99172 6.61307L7.84036 9.48109C7.99539 9.63612 7.99539 9.88804 7.84036 10.0431C7.76285 10.1206 7.66596 10.1593 7.54968 10.1593C7.45279 10.1593 7.33652 10.1206 7.25901 10.0431L4.39099 7.17505L3.63522 6.41929C3.42206 6.20612 3.07325 6.20612 2.86008 6.41929C2.76319 6.51618 2.70505 6.65183 2.70505 6.80686C2.70505 6.96189 2.76319 7.09754 2.86008 7.19443L6.50324 10.8182C6.65827 10.9732 6.65827 11.2252 6.50324 11.3802C6.42573 11.4577 6.32884 11.4965 6.21257 11.4965C6.0963 11.4965 5.9994 11.4577 5.92189 11.3802L3.88714 9.34545L2.80195 8.26025C2.58878 8.04708 2.23997 8.04708 2.0268 8.26025C1.81364 8.47341 1.81364 8.82222 2.0268 9.03539L2.76319 9.77177L3.30579 10.295L5.16613 12.1553C5.32115 12.3104 5.32115 12.5623 5.16613 12.7173C5.08861 12.7948 4.99172 12.8336 4.87545 12.8336C4.75918 12.8336 4.66228 12.7948 4.58477 12.7173L2.20121 10.3337C1.98805 10.1206 1.63924 10.1206 1.42607 10.3337C1.32918 10.4306 1.27104 10.5663 1.27104 10.7213C1.27104 10.8763 1.32918 11.012 1.44545 11.1089ZM3.94528 2.85364L2.95697 0.741381C2.86008 0.547596 2.62754 0.450704 2.43375 0.547596C2.23997 0.644489 2.14308 0.877031 2.23997 1.07082L3.20889 3.20245C3.28641 3.35748 3.42206 3.435 3.57709 3.435C3.63522 3.435 3.69336 3.41562 3.75149 3.39624C3.94528 3.29935 4.02279 3.04743 3.94528 2.85364ZM6.01878 0.702624C6.07692 0.489461 5.94127 0.276297 5.7281 0.218161C5.51494 0.160026 5.30178 0.276297 5.24364 0.489461L4.64291 2.73737C4.58477 2.95053 4.72042 3.1637 4.93358 3.22183C4.97234 3.22183 5.0111 3.24121 5.03048 3.24121C5.20488 3.24121 5.35991 3.12494 5.41805 2.95053L6.01878 0.702624ZM0.224603 3.41562L2.33686 4.40392C2.395 4.4233 2.45313 4.44268 2.51127 4.44268C2.6663 4.44268 2.80195 4.36517 2.87946 4.21014C2.97635 4.01635 2.87946 3.76443 2.68567 3.68692L0.573416 2.69861C0.37963 2.60172 0.127709 2.69861 0.0501957 2.8924C-0.0660753 3.08618 0.030817 3.31872 0.224603 3.41562Z\",\n fill: \"#FAF7F4\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClapOutlinedWhite);\nexport default __webpack_public_path__ + \"static/media/ClapOutlinedWhite.a94a4b2e37de6afebd3a9db60c29856b.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgDownCaret(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 8,\n viewBox: \"0 0 29 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.94678 0H26.986C28.7183 0 29.5844 2.09228 28.3582 3.31846L15.8434 15.843C15.0844 16.602 13.8485 16.602 13.0894 15.843L0.574629 3.31846C-0.651546 2.09228 0.214562 0 1.94678 0Z\",\n fill: \"#303740\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDownCaret);\nexport default __webpack_public_path__ + \"static/media/DownCaret.cf009ad36eadb407c2d717f3a3498d90.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgExternalLink(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 122.6 122.88\",\n style: {\n enableBackground: \"new 0 0 122.6 122.88\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.6,72.58c0-3.19,2.59-5.78,5.78-5.78c3.19,0,5.78,2.59,5.78,5.78v33.19c0,4.71-1.92,8.99-5.02,12.09 c-3.1,3.1-7.38,5.02-12.09,5.02H17.11c-4.71,0-8.99-1.92-12.09-5.02c-3.1-3.1-5.02-7.38-5.02-12.09V17.19 C0,12.48,1.92,8.2,5.02,5.1C8.12,2,12.4,0.08,17.11,0.08h32.98c3.19,0,5.78,2.59,5.78,5.78c0,3.19-2.59,5.78-5.78,5.78H17.11 c-1.52,0-2.9,0.63-3.91,1.63c-1.01,1.01-1.63,2.39-1.63,3.91v88.58c0,1.52,0.63,2.9,1.63,3.91c1.01,1.01,2.39,1.63,3.91,1.63h87.95 c1.52,0,2.9-0.63,3.91-1.63s1.63-2.39,1.63-3.91V72.58L110.6,72.58z M112.42,17.46L54.01,76.6c-2.23,2.27-5.89,2.3-8.16,0.07 c-2.27-2.23-2.3-5.89-0.07-8.16l56.16-56.87H78.56c-3.19,0-5.78-2.59-5.78-5.78c0-3.19,2.59-5.78,5.78-5.78h26.5 c5.12,0,11.72-0.87,15.65,3.1c2.48,2.51,1.93,22.52,1.61,34.11c-0.08,3-0.15,5.29-0.15,6.93c0,3.19-2.59,5.78-5.78,5.78 c-3.19,0-5.78-2.59-5.78-5.78c0-0.31,0.08-3.32,0.19-7.24C110.96,30.94,111.93,22.94,112.42,17.46L112.42,17.46z\",\n fill: \"#508BEF\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgExternalLink);\nexport default __webpack_public_path__ + \"static/media/ExternalLink.1f8ac85f14fcae9233329e69962c89b6.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgLogoRounded(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 80,\n height: 80,\n viewBox: \"0 0 80 80\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 80,\n height: 80,\n rx: 40,\n fill: \"#1D1E21\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M49.144 28.5394C55.9717 28.5394 59.1442 26.2148 59.8857 21.1428C57.0285 23.1699 53.445 23.6939 48.9591 23.6939C35.645 23.6939 36.2865 29.361 31.0004 34.433C28.6433 36.6994 24.0444 37.0121 22.8571 35.8497C22.8571 39.0089 26.7429 40.3416 29.287 40.3416C31.6897 40.3804 34.0164 39.5006 35.7864 37.8897C40.8724 32.9601 39.4003 28.5394 49.144 28.5394Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M53.2876 40.3656C49.3048 40.3656 45.4352 40.3656 42.0693 43.724C39.1516 46.6444 35.3375 51.6241 32.2533 51.6241C25.9142 51.6241 24.7232 48.6328 21.1609 48.6328C18.4545 48.6049 16 50.3121 16 53.0628C19.4641 49.5798 24.7659 58.1713 32.9256 58.1713C37.8902 58.1713 40.4984 54.2631 42.7416 51.9633C43.2475 51.4544 46.7393 45.7275 53.2876 45.7275C58.8967 45.7275 63.2999 43.2022 64 37.5999C61.1954 40.5632 57.7036 40.3656 53.2876 40.3656Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoRounded);\nexport default __webpack_public_path__ + \"static/media/logo-rounded.af7201544987be65f2ccac92dc01fb85.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgGetFeedbackWhite(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 32,\n viewBox: \"0 0 48 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.02087 12.0931C7.89708 11.0192 8.64899 10.0413 9.71861 9.88509L35.0981 6.17756C36.2146 6.01447 37.2449 6.80665 37.3741 7.92753L39.0544 22.5046C39.1863 23.6492 38.3264 24.6682 37.1759 24.7307L20.1294 25.656L14.9302 31.1978C14.3697 31.7952 13.368 31.5022 13.2178 30.6969L12.3564 26.078L11.5295 26.1229C10.4735 26.1802 9.55539 25.4055 9.43428 24.3548L8.02087 12.0931ZM24.9948 14.0202L28.388 14.1433C28.622 14.1525 28.8079 14.3569 28.8002 14.6017C28.7982 14.6995 28.765 14.7925 28.7071 14.8674L26.5783 17.6088L27.5493 21.0214C27.6162 21.2562 27.4887 21.5009 27.265 21.5685C27.1762 21.5954 27.0799 21.5912 26.9933 21.5552L23.8212 20.2568L21.0278 22.2428C20.9628 22.2892 20.8866 22.3154 20.8077 22.3186C20.7288 22.3218 20.6504 22.3017 20.5814 22.2608C20.5124 22.2199 20.4556 22.1596 20.4173 22.087C20.379 22.0143 20.3609 21.932 20.3649 21.8496L20.534 18.3056L17.8373 16.1204C17.748 16.0481 17.6895 15.9419 17.6745 15.8252C17.6596 15.7086 17.6895 15.591 17.7576 15.4983C17.8141 15.4221 17.8929 15.367 17.9832 15.3426L21.2595 14.4507L22.3854 11.1142C22.4641 10.8849 22.706 10.7664 22.9259 10.8498C23.0135 10.8829 23.0886 10.9453 23.1393 11.0273L24.9948 14.0202Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5.79519 8.29058C5.46382 8.7324 4.83702 8.82195 4.39519 8.49058L2.20267 7.50003C1.76084 7.16865 1.87144 6.03812 2.20281 5.59629C2.53418 5.15447 3.55817 4.66863 4 5L5.59519 6.89058C6.03702 7.22195 6.12656 7.84875 5.79519 8.29058Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6.71116 23.7067C6.88581 24.2307 6.60265 24.797 6.07871 24.9716L2.9998 26.4999C2.47586 26.6745 1.49724 26.0269 1.3226 25.5029C1.14795 24.979 1.4761 23.8814 2.00005 23.7067L5.44625 23.0743C5.9702 22.8996 6.53652 23.1828 6.71116 23.7067Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6 16C6 16.5523 5.55228 17 5 17L1 17.5C0.447715 17.5 -1.19209e-07 16.5523 -1.19209e-07 16C-1.19209e-07 15.4477 0.447715 14.5 1 14.5L5 15C5.55228 15 6 15.4477 6 16Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12.508 4.8348C11.9722 4.96875 11.4292 4.64299 11.2953 4.10719L10.5 2.5C10.3661 1.96421 11.0741 1.37637 11.6099 1.24242C12.1457 1.10847 12.866 1.46415 13 1.99994L13.2356 3.62212C13.3695 4.15792 13.0438 4.70085 12.508 4.8348Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M46.9669 15.7398C47.0149 16.29 46.6514 17.2731 46.1012 17.3212L42.0729 17.1712C41.5227 17.2193 41.0377 16.8122 40.9896 16.2621C40.9416 15.7119 41.3486 15.2269 41.8988 15.1788L45.8836 14.8307C46.4338 14.7826 46.9188 15.1896 46.9669 15.7398Z\",\n fill: \"white\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M46.2948 25.4117C46.0106 25.8853 44.9734 26.2842 44.4998 26.0001L42.1473 24.0894C41.6737 23.8053 41.5201 23.191 41.8043 22.7175C42.0884 22.2439 42.7027 22.0903 43.1763 22.3745L46 23.4999C46.4736 23.7841 46.5789 24.9382 46.2948 25.4117Z\",\n fill: \"white\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M35.9599 31.0836C35.4241 31.2176 34.6339 31.0358 34.4999 30.5L34.3342 28.7039C34.2003 28.1681 34.526 27.6252 35.0618 27.4912C35.5976 27.3573 36.3661 27.4642 36.5 28L37 29.5C37.1339 30.0358 36.4957 30.9497 35.9599 31.0836Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGetFeedbackWhite);\nexport default __webpack_public_path__ + \"static/media/GetFeedbackWhite.f7a3b29b4ac5d6fe5d830c06dd834266.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgInfo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"1em\",\n height: \"1em\",\n style: {\n msTransform: \"rotate(360deg)\",\n WebkitTransform: \"rotate(360deg)\",\n transform: \"rotate(360deg)\"\n },\n preserveAspectRatio: \"xMidYMid meet\",\n viewBox: \"0 0 1024 1024\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448s448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 0 1 0-96a48.01 48.01 0 0 1 0 96z\",\n fill: \"rgb(48, 55, 64)\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgInfo);\nexport default __webpack_public_path__ + \"static/media/Info.704717f624db34592307f9b4041bf89c.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _path, _rect2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgLeftArrow(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 36,\n height: 36,\n viewBox: \"0 0 36 36\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 35,\n height: 35,\n rx: 4.5,\n fill: \"#FAF7F4\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.0044 9.68168V7.49252C24.0044 7.30278 23.7864 7.19799 23.6391 7.31411L10.8723 17.2857C10.7638 17.37 10.6761 17.4781 10.6157 17.6015C10.5553 17.7249 10.5239 17.8605 10.5239 17.9979C10.5239 18.1354 10.5553 18.271 10.6157 18.3944C10.6761 18.5178 10.7638 18.6258 10.8723 18.7102L23.6391 28.6818C23.7892 28.7979 24.0044 28.6931 24.0044 28.5034V26.3142C24.0044 26.1754 23.9393 26.0423 23.8317 25.9574L13.6364 17.9994L23.8317 10.0385C23.9393 9.95356 24.0044 9.82045 24.0044 9.68168Z\",\n fill: \"#508BEF\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 35,\n height: 35,\n rx: 4.5,\n stroke: \"#D9D1C8\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLeftArrow);\nexport default __webpack_public_path__ + \"static/media/LeftArrow.c788b997ef390559e36fb54702962110.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgLinkedIn(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 18,\n viewBox: \"0 0 23 21\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.93046 20.6044H0.363762V6.8482H4.93046V20.6044ZM2.64465 4.97173C1.18469 4.97173 0 3.84033 0 2.47437C0 1.10841 1.18469 0 2.64465 0C4.10462 0 5.2893 1.10841 5.2893 2.47437C5.2893 3.84033 4.10462 4.97173 2.64465 4.97173ZM22.0224 20.6044H17.4655V13.908C17.4655 12.312 17.4311 10.2654 15.0912 10.2654C12.7169 10.2654 12.3532 11.9993 12.3532 13.793V20.6044H7.7914V6.8482H12.1713V8.72467H12.2352C12.8447 7.64386 14.3342 6.50326 16.5561 6.50326C21.1769 6.50326 22.0273 9.35016 22.0273 13.0479V20.6044H22.0224Z\",\n fill: \"#FAFAFA\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLinkedIn);\nexport default __webpack_public_path__ + \"static/media/LinkedIn.5079e9bfd786de7d3a692e8752f97b10.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgMenuNavy(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"1em\",\n height: \"1em\",\n style: {\n msTransform: \"rotate(360deg)\",\n WebkitTransform: \"rotate(360deg)\",\n transform: \"rotate(360deg)\"\n },\n preserveAspectRatio: \"xMidYMid meet\",\n viewBox: \"0 0 1024 1024\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M904 160H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8zm0 624H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8zm0-312H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8z\",\n fill: \"#303740\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMenuNavy);\nexport default __webpack_public_path__ + \"static/media/MenuNavy.6db86e377abc27ac190116db257c271a.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _path, _rect2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgRightArrow(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 36,\n height: 36,\n viewBox: \"0 0 36 36\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 35,\n height: 35,\n rx: 4.5,\n fill: \"#FAF7F4\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.1848 17.2864L12.4181 7.31477C12.3847 7.2885 12.3446 7.27218 12.3024 7.26768C12.2602 7.26317 12.2175 7.27067 12.1794 7.2893C12.1412 7.30793 12.1091 7.33694 12.0867 7.37301C12.0643 7.40908 12.0525 7.45073 12.0527 7.49319V9.68235C12.0527 9.82112 12.1179 9.95422 12.2255 10.0392L22.4208 18L12.2255 25.9609C12.115 26.0458 12.0527 26.1789 12.0527 26.3177V28.5069C12.0527 28.6966 12.2708 28.8014 12.4181 28.6853L25.1848 18.7137C25.2933 18.6291 25.3811 18.5208 25.4415 18.3971C25.5019 18.2734 25.5333 18.1376 25.5333 18C25.5333 17.8624 25.5019 17.7266 25.4415 17.6029C25.3811 17.4793 25.2933 17.371 25.1848 17.2864Z\",\n fill: \"#508BEF\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 0.5,\n y: 0.5,\n width: 35,\n height: 35,\n rx: 4.5,\n stroke: \"#D9D1C8\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgRightArrow);\nexport default __webpack_public_path__ + \"static/media/RightArrow.ceae36024b5d49d7a81ed51ee5212168.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgSalesforce(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 20,\n height: 18,\n viewBox: \"0 0 256 180\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#00A1E0\",\n d: \"M106.553 19.651c8.248-8.594 19.731-13.924 32.43-13.924c16.883 0 31.612 9.414 39.455 23.389a54.52 54.52 0 0 1 22.3-4.74c30.449 0 55.134 24.9 55.134 55.615c0 30.719-24.685 55.62-55.134 55.62a54.69 54.69 0 0 1-10.86-1.083c-6.908 12.321-20.07 20.645-35.178 20.645a40.113 40.113 0 0 1-17.632-4.058c-7.002 16.47-23.316 28.019-42.33 28.019c-19.8 0-36.674-12.529-43.152-30.1c-2.83.602-5.763.915-8.772.915c-23.574 0-42.686-19.308-42.686-43.13a43.198 43.198 0 0 1 21.345-37.36a49.373 49.373 0 0 1-4.088-19.727C17.385 22.336 39.626.128 67.06.128c16.106 0 30.42 7.658 39.494 19.523\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFF\",\n d: \"M37.17 92.956c-.16.419.058.506.11.58c.48.349.968.6 1.46.88c2.609 1.385 5.071 1.79 7.647 1.79c5.246 0 8.503-2.79 8.503-7.283v-.087c0-4.153-3.676-5.662-7.126-6.75l-.448-.147c-2.601-.845-4.845-1.573-4.845-3.286v-.09c0-1.465 1.311-2.544 3.344-2.544c2.259 0 4.94.75 6.667 1.705c0 0 .506.328.692-.164c.102-.262.976-2.615 1.068-2.87c.098-.277-.077-.481-.255-.59c-1.971-1.2-4.696-2.019-7.516-2.019l-.525.004c-4.801 0-8.153 2.9-8.153 7.057v.087c0 4.383 3.698 5.803 7.162 6.794l.558.172c2.524.775 4.7 1.442 4.7 3.22v.087c0 1.625-1.414 2.835-3.695 2.835c-.885 0-3.708-.018-6.758-1.946c-.368-.215-.583-.371-.867-.542c-.15-.095-.524-.26-.688.236l-1.035 2.871Zm76.8 0c-.16.419.058.506.11.58c.48.349.968.6 1.46.88c2.608 1.385 5.071 1.79 7.647 1.79c5.246 0 8.503-2.79 8.503-7.283v-.087c0-4.153-3.676-5.662-7.126-6.75l-.448-.147c-2.601-.845-4.846-1.573-4.846-3.286v-.09c0-1.465 1.312-2.544 3.345-2.544c2.259 0 4.94.75 6.667 1.705c0 0 .506.328.692-.164c.102-.262.976-2.615 1.067-2.87c.099-.277-.076-.481-.255-.59c-1.97-1.2-4.696-2.019-7.515-2.019l-.525.004c-4.802 0-8.153 2.9-8.153 7.057v.087c0 4.383 3.697 5.803 7.162 6.794l.557.172c2.525.775 4.704 1.442 4.704 3.22v.087c0 1.625-1.418 2.835-3.698 2.835a12.4 12.4 0 0 1-6.758-1.946c-.368-.215-.587-.364-.863-.542c-.095-.062-.54-.234-.693.236l-1.034 2.871Zm52.429-8.799c0 2.54-.474 4.54-1.406 5.953c-.922 1.4-2.317 2.08-4.263 2.08c-1.949 0-3.337-.677-4.244-2.08c-.918-1.41-1.384-3.413-1.384-5.953c0-2.535.466-4.532 1.384-5.93c.907-1.385 2.295-2.059 4.244-2.059c1.946 0 3.34.674 4.266 2.058c.93 1.4 1.403 3.396 1.403 5.931m4.379-4.707c-.43-1.453-1.1-2.735-1.993-3.803c-.893-1.071-2.022-1.93-3.363-2.557c-1.337-.623-2.918-.94-4.692-.94c-1.778 0-3.359.317-4.696.94c-1.34.626-2.47 1.486-3.366 2.557c-.889 1.071-1.56 2.354-1.993 3.803c-.426 1.447-.64 3.028-.64 4.707c0 1.68.214 3.265.64 4.707c.434 1.45 1.1 2.732 1.997 3.804a9.398 9.398 0 0 0 3.362 2.535c1.34.609 2.918.918 4.696.918c1.774 0 3.352-.31 4.692-.918a9.399 9.399 0 0 0 3.363-2.535c.893-1.068 1.563-2.35 1.993-3.804c.43-1.446.645-3.03.645-4.707c0-1.675-.215-3.26-.645-4.707m35.959 12.063c-.145-.426-.557-.266-.557-.266c-.637.244-1.315.47-2.036.583a15.83 15.83 0 0 1-2.401.171c-2.12 0-3.804-.63-5.01-1.876c-1.209-1.246-1.887-3.26-1.88-5.986c.008-2.48.606-4.346 1.68-5.767c1.068-1.413 2.692-2.138 4.86-2.138c1.807 0 3.184.207 4.627.663c0 0 .346.15.51-.303c.382-1.063.667-1.825 1.075-2.994c.116-.332-.168-.474-.27-.514c-.568-.222-1.909-.583-2.922-.736c-.947-.145-2.054-.222-3.286-.222c-1.84 0-3.479.313-4.882.94c-1.399.623-2.586 1.483-3.526 2.554c-.94 1.07-1.654 2.353-2.131 3.803c-.474 1.446-.714 3.035-.714 4.714c0 3.632.98 6.569 2.914 8.718c1.938 2.157 4.85 3.253 8.645 3.253c2.244 0 4.547-.455 6.2-1.107c0 0 .318-.153.18-.521l-1.076-2.97Zm7.663-9.788c.207-1.41.597-2.583 1.198-3.497c.907-1.388 2.291-2.15 4.237-2.15c1.945 0 3.231.765 4.153 2.15c.612.914.878 2.138.983 3.497H214.4Zm14.743-3.1c-.372-1.403-1.294-2.82-1.898-3.468c-.955-1.028-1.887-1.746-2.813-2.146a10.84 10.84 0 0 0-4.248-.86c-1.85 0-3.53.31-4.892.95c-1.366.642-2.514 1.516-3.414 2.606c-.9 1.085-1.577 2.379-2.007 3.847c-.434 1.46-.652 3.053-.652 4.732c0 1.709.226 3.3.674 4.732c.451 1.443 1.173 2.715 2.15 3.767c.972 1.06 2.225 1.891 3.726 2.47c1.49.576 3.3.875 5.38.871c4.281-.015 6.537-.969 7.465-1.483c.164-.09.321-.251.124-.71l-.969-2.714c-.145-.405-.557-.255-.557-.255c-1.06.393-2.568 1.1-6.084 1.093c-2.299-.004-4.004-.682-5.071-1.742c-1.097-1.085-1.632-2.68-1.727-4.932l14.824.014s.39-.007.43-.386c.014-.16.51-3.046-.441-6.386Zm-133.46 3.1c.211-1.41.597-2.583 1.199-3.497c.907-1.388 2.291-2.15 4.236-2.15c1.946 0 3.232.765 4.157 2.15c.609.914.875 2.138.98 3.497H95.683Zm14.74-3.1c-.372-1.403-1.29-2.82-1.895-3.468c-.954-1.028-1.887-1.746-2.812-2.146a10.84 10.84 0 0 0-4.248-.86c-1.847 0-3.53.31-4.892.95c-1.367.642-2.514 1.516-3.414 2.606c-.9 1.085-1.577 2.379-2.007 3.847c-.43 1.46-.652 3.053-.652 4.732c0 1.709.225 3.3.674 4.732c.451 1.443 1.173 2.715 2.149 3.767c.973 1.06 2.226 1.891 3.727 2.47c1.49.576 3.3.875 5.38.871c4.281-.015 6.536-.969 7.465-1.483c.164-.09.32-.251.124-.71l-.965-2.714c-.15-.405-.561-.255-.561-.255c-1.06.393-2.565 1.1-6.088 1.093c-2.295-.004-4-.682-5.067-1.742c-1.097-1.085-1.633-2.68-1.727-4.932l14.823.014s.39-.007.43-.386c.015-.16.51-3.046-.444-6.386ZM63.642 91.431c-.58-.462-.66-.579-.856-.878c-.292-.455-.441-1.104-.441-1.927c0-1.304.43-2.24 1.322-2.87c-.01.003 1.275-1.112 4.3-1.072c2.123.03 4.021.343 4.021.343v6.74h.004s-1.884.404-4.004.531c-3.017.182-4.357-.87-4.346-.867m5.898-10.415c-.601-.044-1.38-.07-2.313-.07c-1.272 0-2.5.16-3.65.47a9.516 9.516 0 0 0-3.097 1.436a7.148 7.148 0 0 0-2.15 2.444c-.524.977-.79 2.128-.79 3.417c0 1.312.225 2.452.677 3.385a6.1 6.1 0 0 0 1.935 2.317c.823.601 1.84 1.042 3.02 1.308c1.162.266 2.48.4 3.923.4c1.52 0 3.035-.123 4.503-.375a94.111 94.111 0 0 0 3.734-.721c.492-.117 1.039-.266 1.039-.266c.368-.091.338-.485.338-.485l-.007-13.555c0-2.973-.794-5.177-2.357-6.543c-1.555-1.363-3.847-2.051-6.809-2.051c-1.11 0-2.9.153-3.97.368c0 0-3.24.626-4.573 1.668c0 0-.291.182-.131.59l1.05 2.82c.13.364.484.24.484.24s.113-.043.244-.12c2.852-1.552 6.459-1.504 6.459-1.504c1.603 0 2.834.32 3.665.958c.809.619 1.22 1.555 1.22 3.53v.626c-1.275-.182-2.444-.287-2.444-.287m119.56-7.639a.4.4 0 0 0-.223-.532c-.251-.098-1.512-.364-2.485-.426c-1.861-.113-2.896.2-3.821.616c-.918.415-1.938 1.085-2.507 1.847v-1.804c0-.251-.178-.451-.426-.451h-3.8c-.247 0-.426.2-.426.451v22.11c0 .248.204.452.452.452h3.894a.45.45 0 0 0 .448-.452V84.142c0-1.482.164-2.962.492-3.89c.32-.919.758-1.654 1.297-2.183a4.551 4.551 0 0 1 1.833-1.1c.688-.211 1.45-.28 1.989-.28c.776 0 1.628.2 1.628.2c.284.033.445-.142.54-.4c.254-.678.976-2.708 1.114-3.112\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFF\",\n d: \"M152.544 63.13a12.74 12.74 0 0 0-1.465-.35a11.604 11.604 0 0 0-2.014-.152c-2.682 0-4.795.757-6.277 2.251c-1.476 1.486-2.478 3.749-2.98 6.725l-.183 1.002h-3.366s-.408-.015-.495.43l-.55 3.086c-.04.291.087.477.48.477h3.276l-3.323 18.55c-.258 1.494-.557 2.722-.889 3.654c-.324.918-.64 1.607-1.034 2.11c-.38.48-.736.838-1.356 1.045c-.51.172-1.1.252-1.745.252c-.357 0-.834-.059-1.187-.131a3.511 3.511 0 0 1-.802-.26s-.382-.145-.535.238c-.12.317-.995 2.717-1.1 3.013c-.102.295.043.524.229.593c.437.153.761.255 1.355.397c.824.194 1.52.204 2.172.204c1.362 0 2.608-.193 3.639-.564c1.035-.375 1.938-1.028 2.74-1.91c.863-.954 1.406-1.952 1.923-3.318c.514-1.348.955-3.024 1.304-4.976l3.341-18.897h4.882s.411.014.495-.434l.554-3.082c.036-.295-.087-.477-.485-.477h-4.74c.026-.106.241-1.774.784-3.344c.233-.667.67-1.21 1.038-1.581a3.11 3.11 0 0 1 1.243-.773c.47-.153 1.005-.226 1.592-.226c.444 0 .885.051 1.216.12c.46.099.638.15.758.186c.485.146.55.004.645-.23l1.133-3.11c.117-.335-.171-.478-.273-.518M86.322 95.19c0 .247-.179.448-.426.448h-3.931c-.248 0-.423-.2-.423-.448V63.553c0-.247.175-.448.423-.448h3.93c.248 0 .427.2.427.448V95.19Z\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSalesforce);\nexport default __webpack_public_path__ + \"static/media/Salesforce.0753faed3f5e7b76d9b7bfa06c36cf8a.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _g, _path4, _g2, _path5, _path6, _path7, _path8, _path9, _path10, _g3;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgFjLogoCompanyName(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 114,\n height: 11,\n viewBox: \"0 0 114 11\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M21.6325 0.177734V10.7951H24.2946V7.07484H27.6731V4.77113H24.2946V2.51884H28.0824V0.177734H21.6325Z\",\n fill: \"#30538F\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.1959 0.177734V10.7951H38.9049V8.45395H34.8575V0.177734H32.1959Z\",\n fill: \"#30538F\"\n })), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_1062:2123\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 42,\n y: 0,\n width: 12,\n height: 11\n }, _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M42.0616 0H53.1251V10.9713H42.0616V0Z\",\n fill: \"#30538F\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_1062:2123)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.5831 2.38912C45.976 2.38912 44.7948 3.62434 44.7948 5.48133C44.7948 7.33729 45.976 8.58342 47.5831 8.58342C49.1908 8.58342 50.3715 7.35131 50.3715 5.4912C50.3715 3.63161 49.2111 2.39275 47.5831 2.39275V2.38912ZM47.5832 0C50.6547 0 53.1251 2.24917 53.1251 5.48423C53.1251 8.71982 50.6578 10.9716 47.5832 10.9716C44.5087 10.9716 42.0616 8.71982 42.0616 5.48423C42.0616 2.24917 44.5087 0 47.5832 0Z\",\n fill: \"#30538F\"\n }))), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask1_1062:2123\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 56,\n y: 0,\n width: 10,\n height: 11\n }, _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M56.8691 0.00976562H65.4383V10.9903H56.8691V0.00976562Z\",\n fill: \"#30538F\"\n }))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask1_1062:2123)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M65.2233 3.51888C64.454 2.77297 63.4177 2.36729 62.3461 2.39274C60.5956 2.39274 59.5962 3.67939 59.5962 5.48444C59.5962 7.36169 60.739 8.57666 62.4526 8.57666C63.5512 8.59795 64.6181 8.20266 65.4383 7.47077V10.2009C64.4992 10.7567 63.4198 11.0294 62.3295 10.9858C58.9848 10.9858 56.8691 8.71639 56.8691 5.49846C56.8691 2.28002 59.0497 0.0142308 62.3295 0.0142308C63.3382 -0.0262855 64.3387 0.20954 65.2233 0.696773V3.51888Z\",\n fill: \"#30538F\"\n }))), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M75.6798 0.177748H78.7512L75.3385 5.32435L78.9834 10.7842H75.8538L72.4411 5.52901L75.6798 0.177748ZM69.7278 10.7945H72.3899V0.177734H69.7278V10.7945Z\",\n fill: \"#30538F\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M82.0061 7.79167C82.5494 8.255 83.2372 8.5142 83.9514 8.52563C84.5758 8.52563 85.1118 8.38227 85.1118 7.52208V0.177734H87.7734V7.82543C87.7734 9.91773 86.4083 10.9722 84.3264 10.9722C83.5161 11.0101 82.7125 10.8044 82.0196 10.3816L82.0061 7.79167Z\",\n fill: \"#30538F\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M96.643 2.83984L95.2779 6.59383H98.0081L96.643 2.83984ZM94.4627 8.77444L93.7324 10.7951H90.9274L95.0528 0.177734H98.2541L102.38 10.7951H99.4691L98.7528 8.77444H94.4627Z\",\n fill: \"#30538F\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M111.052 0.177734H114L110.175 6.93511V10.7945H107.53V6.93511L103.722 0.177734H106.653L108.906 4.3961L111.052 0.177734Z\",\n fill: \"#30538F\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.06392 2.91839C9.69495 2.91839 10.4528 2.35844 10.6299 1.13672C9.9474 1.62499 9.09137 1.75121 8.01976 1.75121C4.83924 1.75121 4.99248 3.1163 3.72972 4.33802C3.16665 4.88395 2.06804 4.95927 1.78442 4.67929C1.78442 5.44027 2.71266 5.76128 3.3204 5.76128C3.89438 5.77063 4.45018 5.5587 4.87301 5.17068C6.08797 3.98324 5.73631 2.91839 8.06392 2.91839Z\",\n fill: \"#30538F\"\n })), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask2_1062:2123\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 0,\n y: 5,\n width: 12,\n height: 6\n }, _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 5.18359H11.6814V10.1598H0V5.18359Z\",\n fill: \"#30538F\"\n }))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask2_1062:2123)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.07417 5.85263C8.10489 5.85263 7.16315 5.85263 6.344 6.66503C5.63392 7.37147 4.70569 8.57605 3.9551 8.57605C2.41236 8.57605 2.12252 7.85247 1.25558 7.85247C0.596927 7.84572 -0.000427246 8.25867 -0.000427246 8.92407C0.842622 8.08154 2.13291 10.1598 4.11872 10.1598C5.32694 10.1598 5.96169 9.21444 6.50762 8.65812C6.63073 8.53501 7.48053 7.14967 9.07417 7.14967C10.4392 7.14967 11.5109 6.53881 11.6812 5.18359C10.9987 5.90042 10.1489 5.85263 9.07417 5.85263Z\",\n fill: \"#30538F\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFjLogoCompanyName);\nexport default __webpack_public_path__ + \"static/media/FJLogo-CompanyName.108659b78a8926d2316bc4b35d40c995.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgFjLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 22,\n viewBox: \"0 0 28 22\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.334 4.31467C23.3168 4.31467 25.1675 2.95863 25.6 0C23.9333 1.18245 21.8429 1.48812 19.2262 1.48812C11.4596 1.48812 11.8338 4.79394 8.75025 7.75257C7.37528 9.07465 4.69256 9.25705 4 8.57903C4 10.4219 6.26667 11.1993 7.75073 11.1993C9.15234 11.2219 10.5096 10.7087 11.5421 9.76902C14.5089 6.89341 13.6502 4.31467 19.334 4.31467\",\n fill: \"#30538F\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M21.7511 11.213C19.4278 11.213 17.1705 11.213 15.2071 13.1721C13.5051 14.8756 11.2802 17.7804 9.48108 17.7804C5.78327 17.7804 5.08853 16.0355 3.01054 16.0355C1.43181 16.0192 0 17.0151 0 18.6197C2.02072 16.5879 5.11343 21.5996 9.87327 21.5996C12.7693 21.5996 14.2907 19.3199 15.5993 17.9783C15.8943 17.6814 17.9313 14.3407 21.7511 14.3407C25.0231 14.3407 27.5916 12.8677 28 9.59961C26.364 11.3282 24.3271 11.213 21.7511 11.213\",\n fill: \"#30538F\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFjLogo);\nexport default __webpack_public_path__ + \"static/media/FJLogo.8e224d6fbdb6bead2e47b350cb72a9c7.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgStarFilledYellow(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.2243 8.45108L16.0296 7.35612L12.8133 0.528203C12.7255 0.341259 12.581 0.189923 12.4024 0.0979342C11.9547 -0.133521 11.4106 0.0593584 11.1868 0.528203L7.97055 7.35612L0.77582 8.45108C0.577461 8.48076 0.396105 8.57868 0.257255 8.72705C0.0893918 8.90772 -0.0031083 9.15079 7.97568e-05 9.40284C0.00326781 9.6549 0.101883 9.89531 0.274257 10.0713L5.47974 15.3858L4.24992 22.8903C4.22108 23.0649 4.23953 23.2444 4.30317 23.4086C4.36681 23.5727 4.47311 23.7149 4.60999 23.819C4.74688 23.9231 4.90889 23.985 5.07764 23.9976C5.24639 24.0102 5.41514 23.973 5.56475 23.8903L12.0001 20.3473L18.4354 23.8903C18.6111 23.9882 18.8151 24.0209 19.0106 23.9853C19.5037 23.8962 19.8352 23.4066 19.7502 22.8903L18.5204 15.3858L23.7259 10.0713C23.8675 9.92587 23.9611 9.73595 23.9894 9.52824C24.0659 9.00895 23.7202 8.52823 23.2243 8.45108V8.45108Z\",\n fill: \"#FFB54D\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgStarFilledYellow);\nexport default __webpack_public_path__ + \"static/media/StarFilledYellow.80d8047db2f3451f29d1f10bbb10c0b8.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgStarOutline(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.2243 8.45108L16.0296 7.35612L12.8133 0.528203C12.7255 0.341259 12.581 0.189923 12.4024 0.0979342C11.9547 -0.133521 11.4106 0.0593584 11.1868 0.528203L7.97055 7.35612L0.77582 8.45108C0.577461 8.48076 0.396105 8.57868 0.257255 8.72705C0.0893918 8.90772 -0.0031083 9.15079 7.97568e-05 9.40284C0.00326781 9.6549 0.101883 9.89531 0.274257 10.0713L5.47974 15.3858L4.24992 22.8903C4.22108 23.0649 4.23953 23.2444 4.30317 23.4086C4.36681 23.5727 4.47311 23.7149 4.60999 23.819C4.74688 23.9231 4.90889 23.985 5.07764 23.9976C5.24639 24.0102 5.41514 23.973 5.56475 23.8903L12.0001 20.3473L18.4354 23.8903C18.611 23.9882 18.8151 24.0209 19.0106 23.9853C19.5037 23.8962 19.8352 23.4066 19.7502 22.8903L18.5204 15.3858L23.7259 10.0713C23.8675 9.92587 23.9611 9.73595 23.9894 9.52824C24.0659 9.00895 23.7202 8.52823 23.2243 8.45108ZM16.3299 14.6381L17.3529 20.8784L12.0001 17.9348L6.64722 20.8814L7.67018 14.641L3.34031 10.2196L9.32506 9.30865L12.0001 3.63207L14.6751 9.30865L20.6598 10.2196L16.3299 14.6381Z\",\n fill: \"#508BEF\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgStarOutline);\nexport default __webpack_public_path__ + \"static/media/StarOutline.812df604d24266011d707145f9732e92.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgChorus(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 14,\n height: 14,\n viewBox: \"0 0 14 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 14,\n height: 14,\n fill: \"url(#pattern0)\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"pattern0\",\n patternContentUnits: \"objectBoundingBox\",\n width: 1,\n height: 1\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#image0_3250_14097\",\n transform: \"scale(0.005)\"\n })), /*#__PURE__*/React.createElement(\"image\", {\n id: \"image0_3250_14097\",\n width: 200,\n height: 200,\n xlinkHref: \"data:image/png;base64,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\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgChorus);\nexport default __webpack_public_path__ + \"static/media/chorus.744145a1c6b236f0b29b725ae929f48d.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgChorusThumbnail(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 56,\n height: 56,\n viewBox: \"0 0 56 56\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 56,\n height: 56,\n fill: \"url(#pattern0)\",\n fillOpacity: 0.5\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"pattern0\",\n patternContentUnits: \"objectBoundingBox\",\n width: 1,\n height: 1\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#image0_3250_14101\",\n transform: \"scale(0.005)\"\n })), /*#__PURE__*/React.createElement(\"image\", {\n id: \"image0_3250_14101\",\n width: 200,\n height: 200,\n xlinkHref: \"data:image/png;base64,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\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgChorusThumbnail);\nexport default __webpack_public_path__ + \"static/media/chorusThumbnail.395ef578957447e25338a40330b7c70d.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgClari(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.3475 6.6969L15.6582 8.51395C15.9288 9.76897 16.0714 11.0996 16.0714 12.4957C16.0714 13.8918 15.9277 15.2214 15.6582 16.4775L22.3475 18.2946C22.7754 16.482 23 14.4956 23 12.4969C23 10.4981 22.7754 8.50945 22.3475 6.6969Z\",\n fill: \"#00D7B8\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.40967 4.81921L1 12.4948L7.97889 7.2581C7.30961 6.25479 6.43825 5.42865 5.40967 4.81921Z\",\n fill: \"#5F3AD7\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.40967 20.1717L1 12.495L7.97889 17.7316C7.30961 18.7361 6.43825 19.5623 5.40967 20.1717Z\",\n fill: \"#5F3AD7\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.4546 3.15051L1 12.4955L15.6589 8.51377C15.23 6.52172 14.4787 4.71818 13.4546 3.15051Z\",\n fill: \"#0280FF\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.4546 21.8398L1 12.4948L15.6589 16.4766C15.23 18.4697 14.4787 20.2733 13.4546 21.8398Z\",\n fill: \"#0280FF\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.0733 12.4948C16.0733 11.0987 15.9296 9.76911 15.6601 8.51294L1 12.4948L15.6589 16.4766C15.9307 15.2192 16.0733 13.8931 16.0733 12.4948Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgClari);\nexport default __webpack_public_path__ + \"static/media/clari.1f4398ccf77fe8143a0e7d371d0ac478.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgEditDrive(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.3579 17.965L17.5114 21.1494C17.3706 21.3922 17.1083 21.5444 16.8217 21.5444H5.17753C4.89086 21.5444 4.62862 21.3922 4.48784 21.1494L2.64129 17.965H19.3579Z\",\n stroke: \"#508BEF\",\n strokeWidth: 2\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.7002 17.3758L17.8633 20.5436L9.50152 6.13672H13.1698C13.4564 6.13672 13.7186 6.2888 13.8594 6.53141L19.7001 16.5946C19.8405 16.8365 19.8405 17.1338 19.7002 17.3758Z\",\n stroke: \"#508BEF\",\n strokeWidth: 2\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.13642 20.5436L2.29952 17.3758C2.15922 17.1338 2.15928 16.8365 2.29968 16.5946L8.14039 6.53141C8.2812 6.2888 8.54336 6.13672 8.82991 6.13672H12.4982L4.13642 20.5436Z\",\n stroke: \"#508BEF\",\n strokeWidth: 2\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.3582 17.965L17.8631 20.5434L16.3665 17.965H19.3582Z\",\n stroke: \"#508BEF\",\n strokeWidth: 2\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.0002 8.71877L9.50152 6.13672H12.4988L11.0002 8.71877Z\",\n stroke: \"#508BEF\",\n strokeWidth: 2\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.86698 17.6264C1.83662 17.574 1.81026 17.5201 1.78791 17.465H6.50127L4.14169 21.5304C4.1105 21.4891 4.08162 21.4457 4.0553 21.4003L1.86698 17.6264Z\",\n stroke: \"#508BEF\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5 2.49998C18.8978 2.10216 19.4374 1.87866 20 1.87866C20.5626 1.87866 21.1022 2.10216 21.5 2.49998C21.8978 2.89781 22.1213 3.43737 22.1213 3.99998C22.1213 4.56259 21.8978 5.10216 21.5 5.49998L15 12L11 13L12 9L18.5 2.49998Z\",\n fill: \"white\",\n stroke: \"#508BEF\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEditDrive);\nexport default __webpack_public_path__ + \"static/media/edit-drive.a2d2564f997065819f5139bc34058f7e.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgGong(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 14,\n height: 14,\n viewBox: \"0 0 14 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 14,\n height: 14,\n fill: \"url(#pattern0)\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"pattern0\",\n patternContentUnits: \"objectBoundingBox\",\n width: 1,\n height: 1\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#image0_115_1239\",\n transform: \"translate(-0.000976563) scale(0.00195312)\"\n })), /*#__PURE__*/React.createElement(\"image\", {\n id: \"image0_115_1239\",\n width: 513,\n height: 512,\n xlinkHref: \"data:image/png;base64,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\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGong);\nexport default __webpack_public_path__ + \"static/media/gong.74c9c3d3f4c1d8331a393da99a2d2546.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgGongThumbnail(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 56,\n height: 56,\n viewBox: \"0 0 56 56\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.3\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 56,\n height: 56,\n fill: \"url(#pattern0)\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"pattern0\",\n patternContentUnits: \"objectBoundingBox\",\n width: 1,\n height: 1\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#image0_1591_40024\",\n transform: \"translate(-0.000976563) scale(0.00195312)\"\n })), /*#__PURE__*/React.createElement(\"image\", {\n id: \"image0_1591_40024\",\n width: 513,\n height: 512,\n xlinkHref: \"data:image/png;base64,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\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGongThumbnail);\nexport default __webpack_public_path__ + \"static/media/gongThumbnail.c81e4fe337dee1b0691ee56377390fc3.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgLighBlueSparkles(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 64,\n height: 64,\n viewBox: \"0 0 64 64\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M13.3334 5.33334C14.8061 5.33334 16 6.52724 16 8V10.6667H18.6667C20.1395 10.6667 21.3334 11.8606 21.3334 13.3333C21.3334 14.8061 20.1395 16 18.6667 16H16V18.6667C16 20.1394 14.8061 21.3333 13.3334 21.3333C11.8606 21.3333 10.6667 20.1394 10.6667 18.6667V16H8.00004C6.52728 16 5.33337 14.8061 5.33337 13.3333C5.33337 11.8606 6.52728 10.6667 8.00004 10.6667H10.6667V8C10.6667 6.52724 11.8606 5.33334 13.3334 5.33334ZM34.6667 5.33334C35.8145 5.33334 36.8336 6.06782 37.1965 7.15673L42.8895 24.2355L56.9364 29.5031C57.9772 29.8934 58.6667 30.8884 58.6667 32C58.6667 33.1116 57.9772 34.1066 56.9364 34.4969L42.8895 39.7645L37.1965 56.8433C36.8336 57.9322 35.8145 58.6667 34.6667 58.6667C33.5189 58.6667 32.4999 57.9322 32.1369 56.8433L26.444 39.7645L12.397 34.4969C11.3562 34.1066 10.6667 33.1116 10.6667 32C10.6667 30.8884 11.3562 29.8934 12.397 29.5031L26.444 24.2355L32.1369 7.15673C32.4999 6.06782 33.5189 5.33334 34.6667 5.33334ZM34.6667 16.4327L31.1013 27.129C30.8468 27.8924 30.2613 28.5001 29.5078 28.7826L20.928 32L29.5078 35.2174C30.2613 35.5 30.8468 36.1076 31.1013 36.871L34.6667 47.5673L38.2321 36.871C38.4866 36.1076 39.0722 35.5 39.8256 35.2174L48.4054 32L39.8256 28.7826C39.0722 28.5001 38.4866 27.8924 38.2321 27.129L34.6667 16.4327ZM16 42.6667C17.4728 42.6667 18.6667 43.8606 18.6667 45.3333V48H21.3334C22.8061 48 24 49.1939 24 50.6667C24 52.1394 22.8061 53.3333 21.3334 53.3333H18.6667V56C18.6667 57.4728 17.4728 58.6667 16 58.6667C14.5273 58.6667 13.3334 57.4728 13.3334 56V53.3333H10.6667C9.19395 53.3333 8.00004 52.1394 8.00004 50.6667C8.00004 49.1939 9.19395 48 10.6667 48H13.3334V45.3333C13.3334 43.8606 14.5273 42.6667 16 42.6667Z\",\n fill: \"#91D5FF\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLighBlueSparkles);\nexport default __webpack_public_path__ + \"static/media/lighBlueSparkles.631ea57e8118ad9aaedae69a7abfed10.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _rect2, _rect3, _rect4, _rect5, _rect6, _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _path21, _path22, _ellipse, _ellipse2, _path23, _path24, _path25, _path26, _path27, _path28, _path29, _path30, _path31;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgEmptyContent(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 260,\n height: 224,\n viewBox: \"0 0 260 224\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 260,\n height: 157,\n rx: 6,\n fill: \"#EEF6FF\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 16,\n y: 100,\n width: 120,\n height: 8,\n rx: 2,\n fill: \"#C4E9FF\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 16,\n y: 116,\n width: 120,\n height: 8,\n rx: 2,\n fill: \"#C4E9FF\"\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 16,\n y: 132,\n width: 120,\n height: 8,\n rx: 2,\n fill: \"#C4E9FF\"\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 16,\n y: 16,\n width: 120,\n height: 71,\n rx: 4,\n fill: \"#C4E9FF\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 148,\n y: 16,\n width: 96,\n height: 123,\n rx: 4,\n fill: \"#91D5FF\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M196.78 85.02H192.34V84.1C192.34 80.46 194.58 78.58 196.7 76.94C198.5 75.5 200.14 74.14 200.14 71.82C200.14 69.1 198.46 67.3 195.66 67.3C192.82 67.3 190.86 69.42 190.86 72.5H185.78C185.78 66.78 189.98 62.74 195.78 62.74C201.74 62.74 205.34 66.18 205.34 71.5C205.34 75.78 202.58 77.82 200.26 79.46C198.3 80.86 196.78 82.06 196.78 84.1V85.02ZM194.74 93.02C192.94 93.02 191.5 91.58 191.5 89.86C191.5 88.1 192.94 86.66 194.74 86.66C196.5 86.66 197.98 88.1 197.98 89.86C197.98 91.54 196.5 93.02 194.74 93.02Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M90.4531 223C89.4407 223 88.5879 222.243 88.4673 221.238L82.6787 173H90.6787L96.4101 220.762C96.553 221.952 95.6234 223 94.4244 223H90.4531Z\",\n fill: \"#F9D8FF\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.1787 173L57.3901 221.238C57.2695 222.243 56.4168 223 55.4044 223H51.4331C50.234 223 49.3044 221.952 49.4473 220.762L55.1787 173H63.1787Z\",\n fill: \"#F9D8FF\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M90.4531 223C89.4407 223 88.5879 222.243 88.4673 221.238L82.6787 173H90.6787L96.4101 220.762C96.553 221.952 95.6234 223 94.4244 223H90.4531Z\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.1787 173L57.3901 221.238C57.2695 222.243 56.4168 223 55.4044 223H51.4331C50.234 223 49.3044 221.952 49.4473 220.762L55.1787 173H63.1787Z\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96.6787 173H48.6787C47.5741 173 46.6787 172.105 46.6787 171V167C46.6787 165.895 47.5741 165 48.6787 165H96.6787C97.7833 165 98.6787 165.895 98.6787 167V171C98.6787 172.105 97.7833 173 96.6787 173Z\",\n fill: \"#ECA0FA\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M84.5987 189L83.6387 181H62.2187L61.2587 189H84.5987Z\",\n fill: \"#ECA0FA\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.6387 202.5H86.2187L87.1787 210.5H58.6787L59.6387 202.5Z\",\n fill: \"#ECA0FA\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M84.5987 189L83.6387 181H62.2187L61.2587 189H84.5987Z\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M59.6387 202.5H86.2187L87.1787 210.5H58.6787L59.6387 202.5Z\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M153.563 184.193C150.395 183.983 141.679 181.5 141.679 181.5L131.679 186.5L139.984 198.411L144.219 196.403L142.212 192.167L148.455 194.395L165.399 186.364C165.399 186.364 167.897 183.883 166.178 182.536C164.115 180.92 158.57 184.524 153.563 184.193Z\",\n fill: \"#1D1E21\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.39 212.523C111.617 210.977 106.679 205 106.679 205H94.1787L96.0295 219.555H100.717V214.867L105.405 219.555H124.155C124.155 219.555 127.476 218.383 126.499 216.43C125.327 214.086 118.772 214.968 114.39 212.523Z\",\n fill: \"#1D1E21\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M153.563 184.193C150.395 183.983 141.679 181.5 141.679 181.5L131.679 186.5L139.984 198.411L144.219 196.403L142.212 192.167L148.455 194.395L165.399 186.364C165.399 186.364 167.897 183.883 166.178 182.536C164.115 180.92 158.57 184.524 153.563 184.193Z\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.39 212.523C111.617 210.977 106.679 205 106.679 205H94.1787L96.0295 219.555H100.717V214.867L105.405 219.555H124.155C124.155 219.555 127.476 218.383 126.499 216.43C125.327 214.086 118.772 214.968 114.39 212.523Z\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M52.1784 160.5C47.7574 154.816 48.1784 142 48.1784 142H97.6785C104.678 143.5 106.179 144 112.678 147C118.678 150 123.678 153.5 127.678 157C135.697 164.017 142.842 172.857 145.77 176.642C146.522 177.614 146.191 179.008 145.098 179.57L131.169 186.734C130.307 187.177 129.252 186.94 128.659 186.173C126.701 183.638 122.329 178.045 119.178 174.5C115.178 170 109.57 166.5 109.57 166.5C110.333 168.809 110.764 171.461 111.178 174.5C112.399 183.453 111.633 198.036 111.305 203.154C111.239 204.197 110.371 205 109.326 205H92.6785C91.5739 205 90.6785 204.113 90.6785 203.009V178.5C90.6785 173.972 88.6452 172.042 86.1785 170.5C82.1785 168 71.1785 168 64.1785 166.5C61.2046 165.863 55.6785 165 52.1784 160.5Z\",\n fill: \"#CEF2BD\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M80.6785 151C80.6785 151 97.1787 155 103.178 158.5C106.655 160.528 108.463 163.152 109.57 166.5M109.57 166.5C110.333 168.809 110.764 171.461 111.178 174.5C112.399 183.453 111.633 198.036 111.305 203.154C111.239 204.197 110.371 205 109.326 205H92.6785C91.5739 205 90.6785 204.113 90.6785 203.009C90.6785 198.167 90.6785 185.651 90.6785 178.5C90.6785 173.972 88.6452 172.042 86.1785 170.5C82.1785 168 71.1785 168 64.1785 166.5C61.2046 165.863 55.6785 165 52.1784 160.5C47.7574 154.816 48.1784 142 48.1784 142L97.6785 142C104.678 143.5 106.179 144 112.678 147C118.678 150 123.678 153.5 127.678 157C135.697 164.017 142.842 172.857 145.77 176.642C146.522 177.614 146.191 179.008 145.098 179.57L131.169 186.734C130.307 187.177 129.252 186.94 128.659 186.173C126.701 183.638 122.329 178.045 119.178 174.5C115.178 170 109.57 166.5 109.57 166.5Z\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.535 76.1152C79.1466 71.2232 77.709 63.5179 77.709 63.5179C77.709 63.5179 75.5314 63.0499 74.3015 62.4853C73.0716 61.9208 71.4103 60.6267 71.4103 60.6267C71.4103 60.6267 69.2658 66.1946 67.2801 68.5775C65.7312 70.4361 62.3111 73.2736 61.3944 73.1208C60.7749 73.0175 60.1553 71.2622 59.1228 71.5719C58.0902 71.8817 57.7804 74.3599 58.0902 75.7022C58.4 77.0446 59.0195 78.7999 60.0521 79.3162C60.5544 79.5674 61.6009 79.1097 61.6009 79.1097C61.6009 79.1097 60.7749 86.7507 59.4325 91.707C60.1553 93.6689 61.4977 96.8699 63.4596 96.8699C66.3507 96.8699 68.9322 90.6745 70.9973 87.1042C71.4031 87.0709 71.8168 86.9897 72.2364 86.854C76.1686 85.5818 78.0188 80.2455 78.535 76.1152Z\",\n fill: \"white\"\n })), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.0791 82.7237C65.4428 84.9966 68.0074 87.3496 70.9973 87.1042M70.9973 87.1042C71.4031 87.0709 71.8168 86.9897 72.2364 86.854C76.1686 85.5818 78.0188 80.2455 78.535 76.1152C79.1466 71.2232 77.709 63.5179 77.709 63.5179C77.709 63.5179 75.5314 63.0499 74.3015 62.4853C73.0716 61.9208 71.4103 60.6267 71.4103 60.6267C71.4103 60.6267 69.2658 66.1946 67.2801 68.5775C65.7312 70.4361 62.3111 73.2736 61.3944 73.1208C60.7749 73.0175 60.1553 71.2622 59.1228 71.5719C58.0902 71.8817 57.7804 74.3599 58.0902 75.7022C58.4 77.0446 59.0195 78.7999 60.0521 79.3162C60.5544 79.5674 61.6009 79.1097 61.6009 79.1097C61.6009 79.1097 60.7749 86.7507 59.4325 91.707C60.1553 93.6689 61.4977 96.8699 63.4596 96.8699C66.3507 96.8699 68.9322 90.6745 70.9973 87.1042Z\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M87.6787 93.6689C87.6787 93.6689 84.5423 92.0809 79.6787 91.0001C75.4177 90.0532 69.6177 90.7001 69.0136 90.7715C67.362 93.8232 65.4868 96.8699 63.4593 96.8699C61.4974 96.8699 60.1551 93.669 59.4323 91.7071L59.3843 91.707C59.3843 91.707 54.1986 92.1372 51.1787 93.0001C48.0491 93.8942 43.6787 95.5001 43.6787 95.5001C43.6787 95.5001 38.0174 97.2708 32.5 102C29 105 24.6875 111 27.5 120C30.0528 128.169 41.6787 134 41.6787 134H42.1787V103.5C42.1787 102.395 43.0741 101.5 44.1787 101.5H96.6787C94.1787 97.5001 87.6787 93.6689 87.6787 93.6689Z\",\n fill: \"#E5EEB2\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M78.4868 76.1152C79.0983 71.2231 77.6607 63.5179 77.6607 63.5179C77.6607 63.5179 75.4832 63.0498 74.2533 62.4853C73.0234 61.9207 71.3621 60.6267 71.3621 60.6267C71.3621 60.6267 69.2175 66.1946 67.2318 68.5774C65.6829 70.4361 62.2628 73.2735 61.3461 73.1208C60.7266 73.0175 60.1071 71.2621 59.0745 71.5719C58.0419 71.8817 57.7321 74.3598 58.0419 75.7022C58.3517 77.0445 58.9712 78.7999 60.0038 79.3162C60.5062 79.5673 61.5527 79.1096 61.5527 79.1096C61.5527 79.1096 60.7266 86.7507 59.3843 91.707C59.3843 91.707 54.1986 92.1372 51.1787 93C48.0491 93.8942 43.6787 95.5 43.6787 95.5C43.6787 95.5 39.9638 92.3265 40.7429 86.1311C41.5894 79.4008 47.4713 76.7103 51.5849 70.5393C55.5934 64.526 56.273 59.8825 61.5527 54.9475C63.8725 52.7791 66.4539 51.5397 71.72 52.1596C77.5965 52.8513 80.3936 58.1485 81.2197 62.0722C81.7785 64.7266 80.8278 67.5449 81.6327 69.5067C83.2848 73.5338 87.5359 73.9468 89.8933 79.1096C93.0762 86.0808 87.6787 93.6689 87.6787 93.6689C87.6787 93.6689 84.5423 92.0808 79.6787 91C75.1787 90 68.9622 90.7777 68.9622 90.7777C69.667 89.4757 70.3311 88.1724 70.949 87.1041C71.3549 87.0708 71.7685 86.9897 72.1881 86.8539C76.1203 85.5817 77.9705 80.2455 78.4868 76.1152Z\",\n fill: \"#1D1E21\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M73.2689 74.8761C73.2689 74.8761 73.4412 75.7539 73.8885 76.425C74.095 76.7347 72.9592 77.1478 72.9592 77.1478\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M70.3779 79.8325C69.2421 79.8325 68.5521 79.4199 67.8998 78.4901\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 0.929313,\n cy: 1.4456,\n rx: 0.929313,\n ry: 1.4456,\n transform: \"matrix(-1 0 0 1 77.1929 70.8491)\",\n fill: \"#1D1E21\"\n })), _ellipse2 || (_ellipse2 = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 0.929313,\n cy: 1.4456,\n rx: 0.929313,\n ry: 1.4456,\n transform: \"matrix(-1 0 0 1 69.9648 70.8491)\",\n fill: \"#1D1E21\"\n })), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M71.8231 72.0883C71.8231 74.9396 70.2975 77.2511 68.4156 77.2511C66.5337 77.2511 65.0082 74.9396 65.0082 72.0883C65.0082 69.2369 66.5337 66.9254 68.4156 66.9254C70.2975 66.9254 71.8231 69.2369 71.8231 72.0883ZM71.8231 72.0883H74.0948M74.0948 72.0883C74.0948 74.9396 75.7128 77.2511 77.7088 77.2511C79.7047 77.2511 81.3228 74.9396 81.3228 72.0883C81.3228 69.2369 79.7047 66.9254 77.7088 66.9254C75.7128 66.9254 74.0948 69.2369 74.0948 72.0883Z\",\n stroke: \"#B89AEB\"\n })), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36 142H44V138H36C35.4477 138 35 138.448 35 139V141C35 141.552 35.4477 142 36 142Z\",\n fill: \"white\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.1787 101.5H103.679C104.783 101.5 105.679 102.395 105.679 103.5V140C105.679 141.105 104.783 142 103.679 142H44.1787C43.0741 142 42.1787 141.105 42.1787 140V103.5C42.1787 102.395 43.0741 101.5 44.1787 101.5Z\",\n fill: \"white\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M76.286 119.135C77.9929 119.135 78.7861 118.554 78.9714 117.286C78.2571 117.792 77.3613 117.923 76.2398 117.923C72.9113 117.923 73.0716 119.34 71.7501 120.608C71.1608 121.175 70.0111 121.253 69.7143 120.962C69.7143 121.752 70.6857 122.085 71.3217 122.085C71.9224 122.095 72.5041 121.875 72.9466 121.472C74.2181 120.24 73.8501 119.135 76.286 119.135Z\",\n fill: \"#1D1E21\"\n })), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M77.3219 122.091C76.3262 122.091 75.3588 122.091 74.5173 122.931C73.7879 123.661 72.8344 124.906 72.0633 124.906C70.4785 124.906 70.1808 124.158 69.2902 124.158C68.6136 124.151 68 124.578 68 125.266C68.866 124.395 70.1915 126.543 72.2314 126.543C73.4725 126.543 74.1246 125.566 74.6854 124.991C74.8119 124.864 75.6848 123.432 77.3219 123.432C78.7242 123.432 79.825 122.801 80 121.4C79.2989 122.141 78.4259 122.091 77.3219 122.091Z\",\n fill: \"#1D1E21\"\n })), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M105.679 124C105.679 124 109.679 125 109.679 129C109.679 133 105.679 134 105.679 134V124Z\",\n fill: \"white\"\n })), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42 134C42 134 38 133 38 129C38 125 42 124 42 124V134Z\",\n fill: \"white\"\n })), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M105.679 124C105.679 124 109.679 125 109.679 129C109.679 133 105.679 134 105.679 134V124Z\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42 134C42 134 38 133 38 129C38 125 42 124 42 124V134Z\",\n stroke: \"#1D1E21\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEmptyContent);\nexport default __webpack_public_path__ + \"static/media/empty-content.c73837a9787834513e47840acdf8f20c.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgSalesloft(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 58,\n height: 74,\n viewBox: \"0 0 58 74\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.6836 67.3373C45.6836 64.0134 48.2383 61.1523 51.7967 61.1523C55.3563 61.1523 58.001 64.0134 58.001 67.3373C58.001 70.6611 55.4467 73.5222 51.8882 73.5222C48.3289 73.5222 45.6836 70.6611 45.6836 67.3373Z\",\n fill: \"#B3D334\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.6413 14.8204C12.6413 9.8578 17.272 5.89401 23.2114 5.89401C30.9633 5.89401 35.5094 9.56083 38.1278 28.3004H39.739L42.1545 2.73675C25.0397 -3.37357 3.59581 2.94116 3.29323 21.3757C3.29323 41.2359 34.561 41.2248 34.561 59.3653C34.561 64.6612 29.9292 68.3274 24.6954 68.3274C10.8937 68.3274 7.62246 56.6157 6.91785 44.3931H5.20608L0.675781 67.4103C0.675781 67.4103 10.9444 73.522 22.0192 73.522C35.3083 73.3186 44.1677 63.4384 44.3688 53.0506C44.3688 33.0888 12.6402 28.978 12.6402 14.8213L12.6413 14.8204Z\",\n fill: \"#02524B\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSalesloft);\nexport default __webpack_public_path__ + \"static/media/salesloft.807061e5048f423351a59867a7668d3d.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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; }\nimport * as React from \"react\";\nfunction SvgZoom(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 8.53823C1 4.71739 4.28324 1.62 8.33333 1.62H15.6667C19.7168 1.62 23 4.71739 23 8.53823V15.4565C23 19.2773 19.7168 22.3747 15.6667 22.3747H8.33333C4.28324 22.3747 1 19.2773 1 15.4565V8.53823Z\",\n fill: \"#3984FD\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.58301 9.40311C5.58301 8.92551 5.99342 8.53833 6.49967 8.53833H11.9997C13.5185 8.53833 14.7497 9.69986 14.7497 11.1327V14.5918C14.7497 15.0694 14.3393 15.4566 13.833 15.4566H8.33301C6.81423 15.4566 5.58301 14.2951 5.58301 12.8622V9.40311Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.2095 11.7827C15.2095 11.3638 15.3706 10.9591 15.663 10.6438L17.2129 8.97279C17.6309 8.52209 18.4178 8.801 18.4178 9.39988V14.5954C18.4178 15.1942 17.6309 15.4731 17.2129 15.0224L15.663 13.3515C15.3706 13.0362 15.2095 12.6315 15.2095 12.2126V11.7827Z\",\n fill: \"white\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgZoom);\nexport default __webpack_public_path__ + \"static/media/zoom.e7fce7b13efb6dbe677f3f5b36f2f035.svg\";\nexport { ForwardRef as ReactComponent };","import React, { Component, lazy, Suspense } from 'react'\nimport { BrowserRouter as Router, Route, Switch } from 'react-router-dom'\nimport { AppNavigation } from 'src/hoc/AppNavigation'\nimport { ErrorBoundry } from 'src/hoc/ErrorBoundry'\nimport { Loading } from 'src/hoc/Loading'\nimport { MetaData } from 'src/hoc/MetaData'\nimport {\n authRoutePaths,\n baseRoutePaths,\n learningRoutesPaths,\n feedRoutesPaths,\n Paths,\n adminManagerRoutesPaths,\n} from 'src/constants/navigation'\nimport { sharedDataStore } from 'src/store/DataStore'\nimport { Analytics } from 'src/utils/Analytics'\nimport { Auth } from 'src/utils/Auth'\nimport ScriptsLoadingWrapper from 'src/hoc/ScriptsLoadingWrapper'\nimport { NotFound } from 'src/pages/NotFound'\nimport { FjRoute } from 'src/hoc/FjRoute'\nimport { sharedAppStateStore } from 'src/store/AppStateStore'\nimport './antd.less'\nimport moment from 'moment'\nimport Role from 'src/models/enums/Role'\nimport { CONFIG_STORE_KEY } from 'src/models/Config'\nimport { ViewState, ViewWrapper } from 'src/components/Common/ViewWrapper'\n\nconst AuthRoutes = lazy(() => import(/* webpackChunkName: \"AuthRoutes\" */ 'src/routes/authRoutes'))\nconst BaseRoutes = lazy(() => import(/* webpackChunkName: \"BaseRoutes\" */ 'src/routes/baseRoutes'))\nconst LearningRoutes = lazy(() => import(/* webpackChunkName: \"LearnRoutes\" */ 'src/routes/learningRoutes'))\nconst FeedRoutes = lazy(() => import(/* webpackChunkName: \"FeedRoutes\" */ 'src/routes/feedRoutes'))\nconst AdminManagerRoutes = lazy(\n () => import(/* webpackChunkName: \"AdminManagerRoutes\" */ 'src/routes/adminManagerRoutes')\n)\nconst Embed = lazy(() => import(/* webpackChunkName: \"Embed\" */ 'src/pages/Embed'))\n\nmoment.updateLocale('en', {\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n})\n\nexport default class App extends Component<{}, { viewState: ViewState }> {\n constructor(props) {\n super(props)\n Analytics.loadAnalytics()\n sharedDataStore.setReferralCode()\n this.state = { viewState: 'loading' }\n }\n\n onUnload = (e) => {\n /*\n The API calls from componentDidMount method will happen multiple times when Feed page have the Embed component.\n To prevent that behavior we are storing API result and don't call it again.\n It will be called again only when user refreshes the browser\n */\n localStorage.removeItem(CONFIG_STORE_KEY)\n }\n\n async componentDidMount() {\n try {\n sharedAppStateStore.setRenderContext()\n await sharedDataStore.hydrateStore()\n await sharedAppStateStore.getExternalAcademy()\n await sharedAppStateStore.wrapAppLoading(Auth.refreshUserSession())\n Analytics.saveLocalTrackingData()\n window.addEventListener('beforeunload', this.onUnload)\n this.setState({ viewState: 'idle' })\n sharedAppStateStore.openAssetModalFromQueryParams()\n } catch (err) {\n sharedAppStateStore.handleError(err, { alert: false })\n this.setState({ viewState: 'idle' })\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('beforeunload', this.onUnload)\n }\n\n render() {\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 \n \n \n \n \n )\n }\n}\n","import React from 'react'\nimport { LinkedIn } from 'react-linkedin-login-oauth2'\n\nimport { DefaultButton, Icon } from 'src/components/Common'\nimport { Paths } from 'src/constants/navigation'\nimport { sharedAppStateStore } from 'src/store/AppStateStore'\nimport { Auth } from 'src/utils/Auth'\n\nimport LinkedInIcon from 'src/assets/icons/LinkedIn.svg'\n\ninterface LinkedinLoginButtonProps {\n isLogin: boolean\n successHandler?(data: any): void | Promise\n disabled?: boolean\n}\n\nexport class LinkedinLoginButton extends React.Component {\n handleLoginSuccess = async (data: any) => {\n await sharedAppStateStore.wrapAppLoading(Auth.handleLinkedinOAuthSuccess(data, this.props.isLogin))\n }\n\n handleLoginFailure = (err: { error: string; errorMessage: string }) => {\n if (err.error === 'user_cancelled_authorize') return\n sharedAppStateStore.handleError(new Error(err.errorMessage))\n }\n\n render() {\n const { successHandler, isLogin } = this.props\n\n return (\n (\n }\n title={`${isLogin ? 'Sign in with' : 'Connect'} LinkedIn`}\n />\n )}\n />\n )\n }\n}\n","import React, { Component } from 'react'\nimport { Formik } from 'formik'\nimport { Form } from 'formik-antd'\nimport { combineValidations, isRequired, isEmail } from 'src/utils/validation'\nimport {\n FjText,\n DefaultButton,\n DefaultLink,\n FjFormItem,\n FjInput,\n ContainerDiv,\n FjEmailInput,\n PageTitle,\n AuthLayout,\n} from 'src/components/Common'\nimport { AuthHandler } from 'src/models/User'\nimport { Auth } from 'src/utils/Auth'\nimport { sharedAppStateStore } from 'src/store/AppStateStore'\nimport { Paths } from 'src/constants/navigation'\nimport { Colors } from 'src/constants/colors'\nimport { getQueryParam } from 'src/utils/urlParams'\nimport { sharedDataStore } from 'src/store/DataStore'\nimport { MetaData } from 'src/hoc/MetaData'\nimport flockjayRoundedLogo from 'src/assets/icons/FJ/logo-rounded.svg'\n\ntype LoginType = 'emailPassword' | 'sso'\n\ninterface LoginProps {\n loginHandler?: AuthHandler\n}\n\ninterface LoginState {\n loginType: LoginType\n errorMessage?: string\n}\n\nexport class Login extends Component {\n constructor(props: LoginProps) {\n super(props)\n this.state = {\n loginType: 'emailPassword',\n errorMessage: undefined,\n }\n }\n\n componentDidMount() {\n if (sharedDataStore.authState === 'authorized') {\n sharedAppStateStore.navigate(Paths.feed)\n }\n if (getQueryParam('ssoFailed') === 'true') {\n this.setState(() => ({ errorMessage: 'Unable to login with SSO' }))\n }\n const loginType = getQueryParam('loginType') as LoginType\n if (loginType) this.setState(() => ({ loginType }))\n }\n\n loginHandler = () => {\n const redirectUri = getQueryParam('redirectUri')\n if (redirectUri) window.location.href = redirectUri\n else if (this.props.loginHandler) this.props.loginHandler()\n else sharedAppStateStore.navigate(sharedDataStore.getLoginHandlerPath())\n }\n\n login = async (data: any) => {\n this.setState(() => ({ errorMessage: undefined }))\n try {\n if (this.state.loginType === 'emailPassword') {\n await sharedAppStateStore.wrapAppLoading(Auth.login(data, this.loginHandler, this.errorHandler))\n } else {\n sharedAppStateStore.wrapAppLoading(Auth.loginSso(data))\n }\n } catch (err) {\n sharedAppStateStore.handleError(err)\n }\n }\n\n errorHandler = (msg: string) => {\n this.setState(() => ({ errorMessage: msg }))\n }\n\n clearErrorMessage = () => {\n if (this.state.errorMessage !== undefined) {\n this.setState(() => ({ errorMessage: undefined }))\n }\n }\n\n toggleLoginType = () => {\n try {\n // If we're switching to sso and we have record of a previous login we can attempt sso login automatically\n if (this.state.loginType === 'emailPassword' && !!Auth.getSsoData()?.integratedSsoOrganizationId) {\n Auth.loginSso()\n return\n }\n this.setState(({ loginType }) => ({ loginType: loginType === 'emailPassword' ? 'sso' : 'emailPassword' }))\n } catch (err) {\n sharedAppStateStore.handleError(err)\n }\n }\n\n render() {\n const toggleLoginTypeBtnTitle =\n this.state.loginType === 'emailPassword' ? 'Login w/ SSO' : 'Login w/ Email/Password'\n return (\n \n \n \n \"Logo\"\n \n \n Welcome to Flockjay\n \n \n
\n \n \n \n {this.state.loginType === 'emailPassword' && (\n \n \n \n )}\n {this.state.loginType === 'emailPassword' &&\n !sharedAppStateStore.externalAcademy?.getCustomLoginUrl() && (\n \n \n Forgot Password?\n \n \n )}\n \n {this.state.errorMessage && {this.state.errorMessage}}\n \n \n \n {process.env.REACT_APP_DEMO_FEATURES_ENABLED === 'true' && (\n \n \n Don't have an account? {` `}\n \n \n \n Sign up\n \n \n \n )}\n \n
\n
\n
\n )\n }\n}\n","import { Space } from 'antd'\nimport moment from 'moment'\nimport React from 'react'\nimport { ContainerDiv, FjCard, DefaultButton, FjText } from 'src/components/Common'\nimport { handleOpenArchiveModal } from 'src/components/Common/SharedConfirmDialog'\nimport { Colors } from 'src/constants/colors'\nimport { sharedAppStateStore } from 'src/store/AppStateStore'\nimport { getFeedContentTypeName } from 'src/utils/content'\nimport { ArchiveableElement } from 'src/utils/getMenuContext'\n\ntype ArchiveBannerProps = {\n obj: ArchiveableElement\n onEditClick: (obj: ArchiveableElement) => void\n onDeleteConfirm: (obj: ArchiveableElement) => void\n onArchiveSuccess: () => void\n}\n\nexport const ArchiveBanner = ({ obj, onEditClick, onDeleteConfirm, onArchiveSuccess }: ArchiveBannerProps) => {\n if (!obj || (!obj.isExpired() && !obj.isExpiringSoon())) return null\n const contentTypeName = getFeedContentTypeName({ obj })\n return (\n \n {obj.isExpired() ? (\n \n \n This {contentTypeName} has been archived.\n \n \n onEditClick(obj)} />\n \n (sharedAppStateStore.deleteDialogProps = {\n onConfirm: onDeleteConfirm,\n obj: obj,\n })\n }\n />\n \n \n ) : null}\n {obj.isExpiringSoon() ? (\n \n \n This {contentTypeName} will expire in {Math.ceil(moment.duration(obj.expiryDate.diff(moment())).asDays())}\n d.\n \n \n onEditClick(obj)} />\n handleOpenArchiveModal(obj, undefined, onArchiveSuccess)}\n />\n \n \n ) : null}\n \n )\n}\n","import React from 'react'\nimport { ContainerDiv } from 'src/components/Common/Cards'\nimport { FjAvatar } from 'src/components/Common/FjAvatar'\nimport { FjText } from 'src/components/Common/Text'\nimport { Colors } from 'src/constants/colors'\nimport { Paths } from 'src/constants/navigation'\nimport { Author } from 'src/models/Author'\nimport { sharedAppStateStore } from 'src/store/AppStateStore'\nimport { sharedDataStore } from 'src/store/DataStore'\n\ntype AuthorCreatedByProps = {\n author: Author\n}\n\nexport const AuthorCreatedBy = ({ author }: AuthorCreatedByProps) => {\n const cannotAccessProfile = sharedDataStore.user.isFaasPublicOrPartner() || sharedDataStore.user.isAnonymous()\n const handleClickAuthor = () => {\n if (cannotAccessProfile) return\n sharedAppStateStore.navigate(Paths.getProfilePath(author.authorID))\n }\n\n return (\n \n \n \n \n Created by\n \n \n {author.fullName}\n \n \n \n )\n}\n","import React, { CSSProperties, MouseEvent } from 'react'\nimport { Colors } from 'src/constants/colors'\nimport { Paths } from 'src/constants/navigation'\nimport { FjText, ContainerDiv, TextWeightOption, FjAvatar } from 'src/components/Common'\nimport { User } from 'src/models/User'\nimport { sharedAppStateStore } from 'src/store/AppStateStore'\nimport { Author } from 'src/models/Author'\nimport { Tooltip } from 'antd'\nimport badges from 'src/constants/badges'\nimport { sharedDataStore } from 'src/store/DataStore'\n\nexport interface AuthorDisplayProps {\n author: User | Author\n customTitle?: string\n showName?: boolean\n avatarSize?: 'large' | 'small' | 'default' | number\n fontSize?: string\n fontWeight?: TextWeightOption\n onClick?: (e: any) => void\n style?: CSSProperties\n}\n\nexport const AuthorDisplay: React.FC = ({\n author,\n showName = true,\n customTitle,\n avatarSize = 'default',\n fontSize,\n fontWeight = 'default',\n onClick,\n style = {},\n}) => {\n let handleOnClick = onClick\n if (!handleOnClick) {\n handleOnClick = (e: MouseEvent) => {\n sharedAppStateStore.teamProgressModalProps = undefined\n const userID = author instanceof User ? author.id : author.authorID\n e.preventDefault()\n if (sharedDataStore.user.isFaasPublicOrPartner()) return\n sharedAppStateStore.navigate(Paths.getProfilePath(userID))\n }\n }\n\n return (\n \n {showName ? (\n <>\n \n \n \n \n {customTitle}\n \n \n {author.fullName}\n \n \n\n {process.env.REACT_APP_DEMO_FEATURES_ENABLED && badges[author.email] ? (\n \n {badges[author.email].map(({ tooltip, badge }) => (\n \n {badge}\n \n ))}\n \n ) : null}\n \n \n ) : (\n \n )}\n \n )\n}\n","import React from 'react'\nimport { Tooltip } from 'antd'\nimport { ContainerDiv, DefaultLink } from 'src/components/Common'\nimport { User } from 'src/models/User'\nimport { AuthorDisplay } from 'src/components/Common/AuthorDisplay'\nimport { Author } from 'src/models/Author'\nimport { Paths } from 'src/constants/navigation'\n\ntype AvatarSize = 'large' | 'small' | 'default' | number\ntype AvatarSource = User | Author\n\nexport const AvatarList: React.FC<{\n objs: AvatarSource[]\n avatarSize?: AvatarSize\n max?: number\n showNames?: boolean\n onClickLink?: () => {}\n horizontal?: boolean\n}> = ({ objs, avatarSize, max, showNames = false, onClickLink = () => {}, horizontal }) => {\n const contributorIds = new Set()\n let users: AvatarSource[] = []\n\n const getUserId = (obj: AvatarSource) => (obj instanceof User ? obj.id : obj.authorID)\n\n objs.forEach((obj) => {\n const id = getUserId(obj)\n if (contributorIds.has(id)) return\n contributorIds.add(id)\n users.push(obj)\n })\n\n if (max) users = users.slice(0, max)\n\n return (\n \n {users.map((user) => (\n \n \n \n \n \n ))}\n \n )\n}\n","import { Tooltip } from 'antd'\nimport { observer } from 'mobx-react'\nimport React from 'react'\nimport { sharedAppStateStore } from 'src/store/AppStateStore'\nimport { DefaultLink, ContainerDiv, ContainerDivProps } from 'src/components/Common'\nimport { Colors } from 'src/constants/colors'\nimport { ArrowLeft, ChevronRight } from 'react-feather'\nimport { LibraryCategory } from 'src/pages/Library'\nimport { Paths } from 'src/constants/navigation'\nimport { getContentCategoryTitle } from 'src/utils/content'\nimport { truncate } from 'src/utils/format'\n\nexport interface BreadcrumbType {\n breadcrumbName: string\n path: string\n contentType: 'course' | 'hub' | 'learningpath'\n selectedLearningPathContentId: string\n}\n\nconst MAX_BREADCRUMB_NAME_LENGTH = 35\n\nconst BreadcrumbBarSeparator = () => \n\nconst BreadcrumbBarItemWrapper = ({ children, ...props }: React.PropsWithChildren) => (\n \n {children}\n \n)\n\ninterface BreadcrumbBarItemProps {\n to: string\n onClick?: () => void\n}\n\nconst BreadcrumbBarItem = ({ children, onClick, to }: React.PropsWithChildren) => {\n const handleBreadcrumbClick = (e: React.MouseEvent) => {\n if (!onClick) return\n e.preventDefault()\n onClick()\n }\n return (\n \n {children}\n \n )\n}\n\ninterface BreadcrumbBarProps {\n contentType?: LibraryCategory\n}\n\n@observer\nclass BreadcrumbBar extends React.Component {\n render() {\n if (sharedAppStateStore.routes.length === 0) {\n if (!sharedAppStateStore.isInCanvas && !this.props.contentType) return null\n return (\n \n {sharedAppStateStore.isInCanvas ? (\n <>\n \n \n Back\n \n \n ) : (\n <>\n \n {getContentCategoryTitle(this.props.contentType)}\n \n \n \n )}\n \n )\n }\n\n const firstRouteContentType = sharedAppStateStore.routes[0].contentType\n return (\n \n {['course', 'hub', 'learningpath'].includes(firstRouteContentType) ? (\n \n \n {getContentCategoryTitle(firstRouteContentType)}\n \n \n \n ) : null}\n {sharedAppStateStore.routes.map((route, i) => (\n \n \n sharedAppStateStore.navigate(route.path, false, { fromBreadcrumb: true })}\n >\n {truncate(route.breadcrumbName, MAX_BREADCRUMB_NAME_LENGTH)}\n \n \n {sharedAppStateStore.routes.length - 1 !== i && }\n \n ))}\n \n )\n }\n}\n\nexport default BreadcrumbBar\n","import React, { Component, useCallback, useState } from 'react'\nimport { useMediaQuery } from 'react-responsive'\nimport styled from 'styled-components'\nimport { Row, Col, Tooltip, Space, Upload, Image, MenuProps, DropdownProps } from 'antd'\nimport {\n Edit3,\n List,\n Share,\n Trash,\n Trash2,\n ChevronDown,\n Menu,\n Video,\n X,\n MoreHorizontal,\n ThumbsUp,\n ThumbsDown,\n ArrowUp,\n} from 'react-feather'\nimport { observable, makeObservable } from 'mobx'\nimport { observer } from 'mobx-react'\nimport { FjText, TextSizeOption, ContainerDiv, TextWeightOption, Loader, FjDropdown } from 'src/components/Common'\nimport { Colors } from 'src/constants/colors'\nimport SalesforceIcon from 'src/assets/icons/Salesforce.svg'\nimport GongIcon from 'src/assets/img/gong.png'\nimport SalesloftIcon from 'src/assets/img/salesloft.svg'\nimport ZoomIcon from 'src/assets/img/zoom.svg'\nimport OutreachIcon from 'src/assets/img/outreach.png'\nimport { CSSProps } from 'src/components/Common/Text'\nimport { ButtonSizeOption, getButtonFontSize, getButtonSize } from 'src/components/Common/Styles'\nimport { Paths } from 'src/constants/navigation'\nimport ClapOutlined from 'src/assets/icons/ClapOutlined.svg'\nimport ClapFilled from 'src/assets/icons/ClapFilled.svg'\nimport StarFilled from 'src/assets/icons/StarFilledYellow.svg'\nimport StarEmpty from 'src/assets/icons/StarOutline.svg'\nimport { mobileQuery } from 'src/pages/public/common'\nimport { showNotification } from 'src/hoc/Notification'\nimport { QueueElement, QueueItem } from 'src/models/QueueItem'\nimport { sharedAppStateStore } from 'src/store/AppStateStore'\nimport { sharedDataStore } from 'src/store/DataStore'\nimport { LearningContentType, getFeedContentTargetLink, getFeedContentTitle } from 'src/utils/content'\nimport { AccessRole, User } from 'src/models/User'\nimport { uploadToS3 } from 'src/utils/S3Upload'\nimport useDrivePicker from 'react-google-drive-picker'\nimport { PickerConfiguration, CallbackDoc } from 'react-google-drive-picker/dist/typeDefs'\nimport GoogleDriveLogo from 'src/assets/icons/GoogleDrive.png'\nimport { FormikFieldProps } from 'formik-antd/lib/FieldProps'\nimport { FieldProps, Field } from 'formik'\nimport { DashboardCategory } from 'src/pages/FeedDashboard'\nimport { Rubric } from 'src/models/Rubric'\nimport { EditableElement } from 'src/utils/getMenuContext'\nimport { TemplateableLearningContentType } from 'src/components/Feed/TemplateAuthoringModal'\nimport { Template } from 'src/models/Template'\nimport { TeamTab } from 'src/pages/Team'\nimport { HubspotIcon } from 'src/components/Feed/IntegratedCrmIcon'\nimport { sharedScrollStore } from 'src/store/ScrollStore'\n\nconst OUTREACH_CLIENT_ID = process.env.REACT_APP_OUTREACH_CLIENT_ID\nexport const SALESFORCE_CLIENT_ID = process.env.REACT_APP_SALESFORCE_CLIENT_ID\nexport const GONG_CLIENT_ID = process.env.REACT_APP_GONG_CLIENT_ID\nexport const ZOOM_CLIENT_ID = process.env.REACT_APP_ZOOM_CLIENT_ID\nexport const SALESLOFT_CLIENT_ID = process.env.REACT_APP_SALESLOFT_CLIENT_ID\nexport const HUBSPOT_CLIENT_ID = process.env.REACT_APP_HUBSPOT_CLIENT_ID\n\nexport type buttonType = 'basic' | 'action-black-light' | 'primary' | 'secondary' | 'tertiary' | 'destructive' | 'text'\n\ndeclare let google: any\n\ninterface ButtonProps extends Omit, 'title'> {\n buttonType?: buttonType\n title?: string | JSX.Element\n width?: string\n image?: JSX.Element\n imagePosition?: 'left' | 'right'\n size?: ButtonSizeOption\n weight?: TextWeightOption\n clicked?: (e: React.MouseEvent) => void\n}\ninterface BasicButtonProps {\n width?: string\n fontSize?: string\n fontWeight?: number\n height?: string\n color?: string\n backgroundColor?: string\n border?: string\n padding?: string\n hover?: {\n color?: string\n backgroundColor?: string\n borderColor?: string\n }\n focus?: {\n color?: string\n backgroundColor?: string\n borderColor?: string\n boxShadow?: string\n }\n disable?: {\n backgroundColor?: string\n }\n}\n\nconst BasicButton = styled.button`\n width: ${(props) => props?.width};\n cursor: pointer;\n text-align: left;\n box-shadow: none;\n outline: none;\n letter-spacing: 0.02em;\n text-decoration: none;\n text-align: center;\n font-weight: ${(props) => props?.fontWeight ?? 500};\n vertical-align: middle;\n height: ${(props) => props?.height};\n font-family: inherit;\n font-size: ${(props) => props?.fontSize};\n color: ${(props) => props?.color};\n background-color: ${(props) => props?.backgroundColor ?? 'transparent'};\n border: ${(props) => props?.border ?? 'none'};\n border-radius: 8px;\n padding: ${(props) => props?.padding ?? '0 16px'};\n :disabled {\n cursor: not-allowed;\n background-color: ${(props) => props?.disable?.backgroundColor ?? Colors.mercury};\n border-color: ${Colors.mercury};\n color: ${Colors.tapa};\n }\n :disabled:hover {\n background-color: ${(props) => props?.disable?.backgroundColor ?? Colors.mercury};\n color: ${Colors.tapa};\n }\n :focus {\n color: ${(props) => props?.focus?.color};\n background-color: ${(props) => props?.focus?.backgroundColor};\n border-color: ${(props) => props?.focus?.borderColor};\n }\n :hover {\n color: ${(props) => props?.hover?.color};\n background-color: ${(props) => props?.hover?.backgroundColor};\n border-color: ${(props) => props?.hover?.borderColor};\n }\n`\n\nexport const DefaultButton: React.FC = ({\n type = 'button',\n buttonType = 'basic',\n imagePosition = 'left',\n size = 'medium',\n image,\n title,\n clicked,\n hover,\n focus,\n disable,\n ...props\n}) => {\n let fontSize: TextSizeOption | string = getButtonFontSize(size)\n let height: TextSizeOption | string = buttonType === 'text' ? '' : getButtonSize(size)\n let basicButtonProps: BasicButtonProps = {}\n let className = undefined\n\n switch (buttonType) {\n case 'action-black-light':\n basicButtonProps = {\n color: Colors.white,\n backgroundColor: Colors.blackLight,\n padding: '12px 35px 11px !important',\n hover: { backgroundColor: Colors.black, ...hover },\n }\n break\n case 'primary':\n className = 'custom-primary'\n basicButtonProps = {\n backgroundColor: Colors.cornflowerBlue,\n color: Colors.white,\n hover: {\n backgroundColor: Colors.chambray,\n ...hover,\n },\n focus: {\n ...focus,\n },\n }\n break\n case 'secondary':\n className = 'custom-secondary'\n basicButtonProps = {\n backgroundColor: Colors.anakiwa,\n color: Colors.chambray,\n hover: {\n backgroundColor: Colors.cornflowerBlue,\n color: Colors.white,\n ...hover,\n },\n }\n break\n case 'tertiary':\n // className = 'custom-tertiary'\n // this is not a mistake we have a different set up so this works best for us\n className = 'custom-secondary'\n basicButtonProps = {\n backgroundColor: 'transparent',\n color: Colors.cornflowerBlue,\n border: `solid 1px ${Colors.cornflowerBlue}`,\n hover: {\n backgroundColor: Colors.zumthor,\n color: Colors.cornflowerBlue,\n ...hover,\n },\n }\n break\n case 'destructive':\n basicButtonProps = {\n backgroundColor: Colors.outrageousOrange,\n color: Colors.white,\n hover: {\n backgroundColor: Colors.alizarinCrimson,\n ...hover,\n },\n }\n break\n case 'text':\n basicButtonProps = {\n fontWeight: 700,\n color: Colors.cornflowerBlue,\n backgroundColor: 'transparent',\n border: 'none',\n padding: '0px',\n hover: {\n color: Colors.chambray,\n ...hover,\n },\n disable: {\n backgroundColor: 'transparent',\n ...disable,\n },\n }\n break\n case 'basic':\n basicButtonProps = {\n color: Colors.cornflowerBlue,\n backgroundColor: 'transparent',\n border: 'none',\n padding: '0px 8px',\n hover: {\n backgroundColor: Colors.zumthor,\n color: Colors.cornflowerBlue,\n ...hover,\n },\n }\n break\n }\n basicButtonProps = { ...basicButtonProps, fontSize, height }\n\n if (!basicButtonProps.padding) basicButtonProps.padding = title ? '0 16px' : '0 8px'\n\n return (\n \n \n {image !== null && imagePosition === 'left' && image}\n {title}\n {image !== null && imagePosition === 'right' && image}\n \n \n )\n}\n\nexport interface ThreeDotMenuButtonProps extends BasicButtonProps {\n iconColor?: string\n iconSize?: number\n}\n\nexport const ThreeDotMenuButton: React.FC = ({\n iconColor = Colors.cottonSeed,\n iconSize = 25,\n hover = { backgroundColor: Colors.concrete },\n ...props\n}) => {\n return } {...props} />\n}\n\ninterface FormActionButtonsProps {\n submitButtonLabel?: string\n secondaryButtonLabel?: string\n secondaryButtonType?: buttonType\n primaryButtonType?: buttonType\n onCancel?(): any\n onDelete?(): any\n handlePrimaryButton?(): any\n primaryDisabled?: boolean\n confirmDeleteText?: string\n deleteButtonLabel?: string\n primaryCentered?: boolean\n}\n\nexport class FormActionButtons extends React.Component {\n render() {\n const {\n onCancel,\n onDelete,\n submitButtonLabel,\n secondaryButtonLabel,\n secondaryButtonType,\n handlePrimaryButton,\n primaryDisabled,\n primaryButtonType,\n confirmDeleteText,\n deleteButtonLabel,\n } = this.props\n\n const handleClickRemove = () => {\n sharedAppStateStore.sharedConfirmDialogProps = {\n onConfirm: onDelete,\n title: confirmDeleteText,\n confirmButtonTitle: 'Delete',\n }\n }\n\n return (\n \n \n {onDelete && (\n \n )}\n \n {onCancel && (\n \n )}\n \n \n )\n }\n}\n\ninterface ReactButtonProps {\n reacted: boolean\n reactionType: 'like' | 'thumbsUp' | 'thumbsDown'\n width?: string\n height?: string\n tooltipTitle?: string\n}\n\nexport const ReactButton: React.FC = (props) => {\n const { tooltipTitle, reacted, reactionType, width, height } = props\n const isMobile = useMediaQuery(mobileQuery)\n let reactedImage = undefined\n let defaultImage = undefined\n let defaultTooltipTitle = undefined\n const imgWidth = width || (isMobile ? '24px' : '29px')\n const imgHeight = height || (isMobile ? '24px' : '29px')\n switch (reactionType) {\n case 'like':\n defaultTooltipTitle = 'Give Applause'\n reactedImage = \"Like\"\n defaultImage = \"Like\"\n break\n case 'thumbsUp':\n defaultTooltipTitle = 'Like'\n reactedImage = \n defaultImage = \n break\n case 'thumbsDown':\n defaultTooltipTitle = 'Dislike'\n reactedImage = \n defaultImage = \n break\n }\n return (\n \n \n \n )\n}\n\ninterface FavouriteButtonProps {\n favourited: boolean\n accessRole: AccessRole\n width?: string\n height?: string\n}\n\nexport const FavouriteButton: React.FC = (props) => {\n const isMobile = useMediaQuery(mobileQuery)\n if (sharedDataStore.user.isFaasPublic()) return null\n const { favourited, width, height, accessRole } = props\n const imgWidth = width || (isMobile ? '20px' : '24px')\n const imgHeight = height || (isMobile ? '20px' : '24px')\n let starredImage = \"star\"\n let defaultImage = (\n \n )\n\n const prefix = favourited ? 'Remove from' : 'Add to'\n const copy = accessRole === 'manager' ? \"Manager's Picks\" : 'Favorites'\n\n return (\n \n
\n {/* This div is needed to make the tooltip appear over the button */}\n {\n if (props.clicked) {\n props.clicked(e)\n showNotification({ message: favourited ? `Removed from ${copy}` : `Added to ${copy}` })\n }\n }}\n />\n
\n
\n )\n}\ninterface IConnectOAuthButtonProps {\n authorizeURI: string\n clientID: string\n company: string\n connected: boolean\n image: any\n redirectURI: string\n scope?: string\n}\n\nconst ConnectOAuthButton: React.FC = ({\n authorizeURI,\n clientID,\n company,\n connected,\n image,\n redirectURI,\n scope,\n}) => {\n const redirect = () => {\n let authorizeURL = `${authorizeURI}?client_id=${clientID}&redirect_uri=${redirectURI}&response_type=code`\n if (scope) {\n authorizeURL = `${authorizeURL}&scope=${scope}`\n }\n window.open(`${authorizeURL}`, '_self')\n }\n return (\n \n )\n}\n\ninterface IConnectButtonProps {\n connected: boolean\n}\n\nexport const ConnectGongButton: React.FC = ({ connected }) => {\n return (\n }\n redirectURI={Paths.getGongOAuthRedirectURL()}\n />\n )\n}\n\nexport const ConnectSalesloftButton: React.FC = ({ connected }) => {\n return (\n }\n redirectURI={Paths.getSalesloftOauthRedirectURL()}\n />\n )\n}\n\nexport const ConnectZoomButton: React.FC = ({ connected }) => {\n return (\n }\n redirectURI={Paths.getZoomOAuthRedirectURL()}\n />\n )\n}\n\nexport const ConnectSalesforceButton: React.FC = ({ connected }) => {\n return (\n }\n redirectURI={Paths.getSalesforceOAuthRedirectURL()}\n scope=\"api+refresh_token\"\n />\n )\n}\n\nexport const ConnectHubspotButton: React.FC = ({ connected }) => {\n return (\n }\n redirectURI={Paths.getHubspotOAuthRedirectURL()}\n scope=\"crm.objects.companies.read+crm.objects.deals.read+crm.objects.owners.read+crm.objects.users.read+crm.schemas.deals.read+oauth\"\n />\n )\n}\n\nexport const ConnectOutreachButton: React.FC = ({ connected }) => {\n return (\n }\n redirectURI={Paths.getOutreachOAuthRedirectURL()}\n scope=\"prospects.read+users.read+opportunities.read+tasks.read+mailings.read+calls.read\"\n />\n )\n}\n\nexport const VideoRecorderButton = styled.button`\n height: ${({ style }) => (style && style.height) || '65px'};\n width: ${({ style }) => (style && style.width) || '65px'};\n border-radius: ${({ style }) => (style && style.borderRadius) || '32.5px'};\n background-color: ${Colors.magnolia};\n text-align: center;\n border: none;\n cursor: pointer;\n margin: 5px;\n pointer-events: all;\n\n :hover {\n background-color: ${Colors.hawkesBlue};\n }\n :hover:disabled {\n cursor: not-allowed;\n background-color: ${Colors.magnolia};\n }\n`\n\ninterface DeleteButtonProps {\n onClick: () => void\n color?: string\n fontSize?: number\n type?: 'filled' | 'outline'\n padding?: string\n height?: string\n disabled?: boolean\n}\n\nexport const DeleteButton: React.FC = ({\n type = 'outline',\n onClick,\n color = Colors.cinnabar,\n fontSize = 19,\n padding = '0 8px',\n height = '40px',\n disabled = false,\n}) => {\n const props = { color, size: fontSize }\n return (\n \n : }\n padding={padding}\n height={height}\n disabled={disabled}\n />\n \n )\n}\n\ntype EditButtonProps = {\n obj: EditableElement\n color?: string\n onClick?: (obj: EditableElement) => void\n fontSize?: number\n}\n\nexport const EditButton: React.FC = ({ obj, color = Colors.white, onClick, fontSize = 24 }) => {\n const handleOnClick = (e: React.MouseEvent) => {\n e.preventDefault()\n if (onClick) onClick(obj)\n else if (!(obj instanceof Rubric) && !(obj instanceof Template)) {\n sharedAppStateStore.navigate(getFeedContentTargetLink(obj, { isAuthoring: true }))\n }\n }\n\n if (!obj.canEdit()) return null\n\n return (\n \n } />\n \n )\n}\n\ntype AddToQueueButtonProps = {\n obj: QueueElement\n color?: string\n insideQueue?: boolean\n size?: 'small' | 'medium'\n style?: React.CSSProperties\n}\n\nexport const AddToQueueButton: React.FC = ({\n obj,\n color = Colors.white,\n insideQueue,\n size = 'medium',\n style,\n}) => {\n if (sharedDataStore.user.isFaasPublic()) return null\n const isQueueItem = obj instanceof QueueItem\n const userId = isQueueItem ? obj.userId : sharedDataStore.user.id\n const title = getFeedContentTitle(obj)\n\n const addToQueue = async () => {\n try {\n await QueueItem.addToQueue(obj, [userId])\n\n showNotification({\n message: `${title ? `${title} has been ` : ''} added to your Tasks`,\n })\n } catch (err) {\n sharedAppStateStore.handleError(err)\n }\n }\n\n const hideAddToQueueModal = () => (sharedAppStateStore.addToQueueModalProps = undefined)\n\n const handleOpenAddToQueueModal = () => {\n sharedAppStateStore.addToQueueModalProps = {\n onSuccess: hideAddToQueueModal,\n item: obj,\n onCancel: hideAddToQueueModal,\n }\n }\n\n const removeFromQueue = async () => {\n try {\n await QueueItem.removeFromQueue(obj, userId)\n\n const completed = isQueueItem ? obj.linkedObject.progress === 1 : false\n sharedDataStore.refreshQueue({ user_id: userId, completed: completed })\n\n showNotification({\n message: `${title ? `${title} has been ` : ''} removed from your Tasks!`,\n })\n } catch (err) {\n sharedAppStateStore.handleError(err)\n }\n }\n\n const handleOnClick = (e: React.MouseEvent) => {\n e.preventDefault()\n if (insideQueue) {\n removeFromQueue()\n } else {\n if (sharedDataStore.user.isFaasAdminOrManager()) {\n handleOpenAddToQueueModal()\n } else {\n addToQueue()\n }\n }\n }\n\n return (\n \n }\n />\n \n )\n}\n\ntype UploadThumbnailButtonProps = FormikFieldProps & {\n handleThumbnailChange?: (fileUrl: string) => void\n}\n\nexport const UploadThumbnailButton: React.FC = ({\n handleThumbnailChange,\n name,\n validate,\n fast,\n ...restProps\n}) => {\n return (\n \n {({ field: { value }, form: { setFieldValue, setFieldTouched } }: FieldProps) => {\n const handleUpload = async (file: File) => {\n try {\n const fileUrl = await sharedAppStateStore.wrapAppLoading(uploadToS3(file), 'Uploading thumbnail...')\n setFieldValue(name, fileUrl)\n handleThumbnailChange?.(fileUrl)\n } catch (err) {\n sharedAppStateStore.handleError(err)\n } finally {\n return false\n }\n }\n\n const handleDelete = () => {\n setFieldValue(name, null)\n handleThumbnailChange?.(null)\n }\n return (\n \n \n \n \n {value ? (\n <>\n \n \n \n ) : null}\n \n )\n }}\n \n )\n}\n\ninterface IGoogleDriveButtonProps extends ButtonProps {\n handleFileSelected: (doc: CallbackDoc) => void | Promise\n}\n\nexport const GoogleDriveButton: React.FC = ({ handleFileSelected, clicked, ...props }) => {\n const [openPicker] = useDrivePicker()\n\n const onClick = async () => {\n const myDriveView = new google.picker.DocsView(google.picker.ViewId.DOCS).setOwnedByMe(true).setIncludeFolders(true)\n const sharedDrivesView = new google.picker.DocsView(google.picker.ViewId.DOCS)\n .setEnableDrives(true)\n .setIncludeFolders(true)\n const sharedWithMeView = new google.picker.DocsView(google.picker.ViewId.DOCS)\n .setOwnedByMe(false)\n .setIncludeFolders(true)\n\n const documentsView = new google.picker.DocsView(google.picker.ViewId.DOCUMENTS).setLabel('Docs')\n const presentationsView = new google.picker.DocsView(google.picker.ViewId.PRESENTATIONS)\n const spreadsheetsView = new google.picker.DocsView(google.picker.ViewId.SPREADSHEETS).setLabel('Sheets')\n const pdfsView = new google.picker.DocsView(google.picker.ViewId.PDFS)\n const imageView = new google.picker.DocsView(google.picker.ViewId.DOCS_IMAGES)\n const videosView = new google.picker.DocsView(google.picker.ViewId.DOCS_VIDEOS)\n\n const pickerConfig: PickerConfiguration = {\n clientId: process.env.REACT_APP_GDRIVE_CLIENT_ID,\n developerKey: process.env.REACT_APP_GDRIVE_API_KEY,\n disableDefaultView: true,\n customViews: [\n myDriveView,\n sharedDrivesView,\n sharedWithMeView,\n documentsView,\n presentationsView,\n spreadsheetsView,\n pdfsView,\n imageView,\n videosView,\n ],\n callbackFunction: (data) => {\n if (data.action !== 'picked') return\n const doc = data.docs[0]\n if (doc.lastEditedUtc) doc.lastEditedUtc = Math.round(doc.lastEditedUtc / 1000)\n handleFileSelected(doc)\n },\n }\n\n User.getGoogleDriveAccessToken((token: string) => {\n pickerConfig.token = token\n openPicker(pickerConfig)\n })\n }\n\n return (\n }\n {...props}\n clicked={clicked || onClick}\n />\n )\n}\n\nexport const RoundedBlueButton = styled.span`\n padding: 3px 8px;\n background-color: ${Colors.cornflowerBlue};\n color: ${Colors.white};\n border-radius: 30px;\n flex-wrap: wrap;\n cursor: pointer;\n transition: 0.2s;\n height: 30px;\n white-space: nowrap;\n\n :hover {\n filter: brightness(110%);\n -webkit-filter: brightness(110%);\n -moz-filter: brightness(110%);\n -o-filter: brightness(110%);\n -ms-filter: brightness(110%);\n }\n`\n\nexport type CSVDataExportType = DashboardCategory | LearningContentType | TeamTab\ninterface ExportToCSVProps {\n buttonSize?: ButtonSizeOption\n handle: () => Promise\n}\n\n@observer\nexport class ExportButton extends Component {\n @observable loading: boolean = false\n\n constructor(props: ExportToCSVProps) {\n super(props)\n makeObservable(this)\n }\n handleExport = async () => {\n try {\n this.loading = true\n await this.props.handle()\n } catch (err) {\n sharedAppStateStore.handleError(err)\n } finally {\n this.loading = false\n }\n }\n render() {\n return (\n <>\n {sharedDataStore.user.isFaasAdmin() ? (\n \n \n {this.loading ? (\n \n ) : (\n \n )}\n \n }\n />\n \n ) : null}\n \n )\n }\n}\n\nexport const VideoRecordButton: React.FC<{\n style?: CSSProps\n disabled?: boolean\n autoStartRecord?: boolean\n showRecordVideoTitle?: boolean\n handleVideoRecordSuccess: (videoUrl: string) => void\n}> = ({ style, disabled, autoStartRecord, showRecordVideoTitle, handleVideoRecordSuccess }) => {\n const [modalAutoOpened, setModalAutoOpened] = useState(false)\n const closeVideoFormModal = () => {\n sharedAppStateStore.videoModalProps = undefined\n }\n\n const handleVideoSuccess = (videoUrl: string) => {\n handleVideoRecordSuccess(videoUrl)\n closeVideoFormModal()\n }\n\n const handleOpenVideoModal = () => {\n sharedAppStateStore.videoModalProps = {\n onSuccess: handleVideoSuccess,\n onCancel: closeVideoFormModal,\n }\n }\n\n if (autoStartRecord && !modalAutoOpened) {\n setModalAutoOpened(true)\n handleOpenVideoModal()\n }\n\n return (\n }\n style={{\n borderRadius: '7px',\n ...style,\n }}\n clicked={handleOpenVideoModal}\n title={showRecordVideoTitle ? 'Record' : null}\n />\n )\n}\n\nexport const TemplateButton: React.FC<\n ButtonProps & {\n contentType: TemplateableLearningContentType\n handleTemplateSelected: (template: Template) => Promise | void\n }\n> = ({ contentType, handleTemplateSelected, ...buttonProps }) => {\n const closeTemplateModal = useCallback(() => {\n sharedAppStateStore.templateModalProps = undefined\n }, [])\n\n const onSuccess = useCallback(\n (template: Template) => {\n handleTemplateSelected(template)\n closeTemplateModal()\n },\n [handleTemplateSelected, closeTemplateModal]\n )\n\n return (\n \n (sharedAppStateStore.templateModalProps = { contentType, onCancel: closeTemplateModal, onSuccess })\n }\n />\n )\n}\n\nexport const CollapsibleMenuButton: React.FC<{ tooltipTitle?: string; collapsed?: boolean; clicked: () => void }> = ({\n tooltipTitle,\n collapsed,\n clicked,\n}) => {\n const tooltip = tooltipTitle ? `${collapsed ? 'Show' : 'Hide'} ${tooltipTitle}` : ''\n return (\n \n }\n style={{\n border: 'none',\n boxShadow: 'none',\n color: Colors.sandstone,\n backgroundColor: Colors.white,\n }}\n />\n \n )\n}\n\nconst FilterDropdownBaseButton = styled.button<{ selected?: boolean }>`\n min-height: 26px;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n padding: 4px 8px 4px 12px;\n gap: 4px;\n border-radius: 20px;\n border: solid 1px ${(props) => (props.selected ? '#508BEF' : Colors.sharkOpacity10)};\n color: ${(props) => (props.selected ? '#508BEF' : '#74716F;')};\n background: ${(props) => (props.selected ? Colors.zumthor : 'white')};\n`\n\nexport interface FilterDropdownButtonProps {\n title: string\n selected?: boolean\n onClick?: (e: React.MouseEvent) => void\n onClear?: () => void\n}\n\nexport const FilterDropdownButton = ({ title, selected, onClick, onClear }: FilterDropdownButtonProps) => {\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation()\n onClear()\n }\n return (\n \n \n {title}\n \n\n {selected && onClear ? : undefined}\n \n \n )\n}\n\ninterface DropdownButtonProps extends React.PropsWithChildren {\n menu?: MenuProps\n backgroundColor?: string\n background?: string\n dropdownProps?: DropdownProps\n}\n\nexport const DropdownButton: React.FC = ({\n menu,\n backgroundColor,\n background,\n children,\n dropdownProps,\n}) => {\n return (\n \n \n \n {children}\n \n \n \n )\n}\n\nexport const BackToTopButton = () => {\n return (\n \n }\n style={{\n width: '32px',\n height: '32px',\n backgroundColor: Colors.midnightBlue,\n border: 'none',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '16px',\n }}\n />\n \n )\n}\n","import React from 'react'\nimport { getCustomStyleObject, MarginProps, PaddingProps } from 'src/components/Common/Styles'\nimport { CSSProps } from 'src/components/Common/Text'\nimport { Colors } from 'src/constants/colors'\nimport styled from 'styled-components'\nimport { useMediaQuery } from 'react-responsive'\nimport { mobileQuery } from 'src/pages/public/common'\n\nexport enum BoxShadow {\n secondary = '0px 4px 4px rgba(0, 0, 0, 0.1)',\n}\n\ninterface CardProps extends React.HTMLAttributes {\n bottomSeparator?: boolean\n myRef?: any\n}\n\nexport type ContainerDivProps = CardProps & PaddingProps & MarginProps & CSSProps\n\nconst Div = styled.div``\n\n/*\n This is a workaround to eliminate the Unknown HTML props passed from parent component\n to prevent React from giving console errors/warnings\n As styled-components handles the unknown HTML props as mentioned in doc\n https://styled-components.com/docs/basics#passed-props\n*/\n\nexport const ContainerDiv: React.FC = ({ children, style, ...props }) => (\n \n {children}\n \n)\n\nexport const FjCard: React.FC = (props) => {\n const isMobile = useMediaQuery(mobileQuery)\n return (\n \n )\n}\n","import React, { useEffect, useState } from 'react'\nimport { FJStyledInput, FjFormItem, FjSelect } from 'src/components/Common/FjInput'\nimport { Certificate } from 'src/models/Certificate'\nimport { sharedAppStateStore } from 'src/store/AppStateStore'\n\ntype CertificateFieldProps = {\n name: string\n}\n\nexport const CertificateField = ({ name }: CertificateFieldProps) => {\n const [certificateOptions, setCertificateOptions] = useState([])\n\n useEffect(() => {\n if (!certificateOptions.length) fetchCertificateOptions('')\n }, [certificateOptions.length])\n\n const fetchCertificateOptions = async (search: string) => {\n try {\n const data = await Certificate.list({ search })\n const options = data.map((item: Certificate) => ({\n key: item.id,\n id: item.id,\n value: item.id,\n label: item.name,\n }))\n setCertificateOptions(options)\n } catch (err) {\n sharedAppStateStore.handleError(err)\n }\n }\n\n return (\n \n \n \n \n \n )\n}\n","import React, { useState } from 'react'\nimport styled from 'styled-components'\nimport { Edit3 } from 'react-feather'\nimport { ContainerDiv } from 'src/components/Common/Cards'\nimport { Colors } from 'src/constants/colors'\n\ninterface ClickableProps {\n children?: React.ReactNode\n hoverImgOverlay?: boolean\n onClick?(): void\n disabled?: boolean\n showEditIcon?: boolean\n display?: 'inline-block' | 'block'\n}\n\ninterface ClickableContainerProps {\n isHovering: boolean\n disabled: boolean\n}\n\nconst ClickableContainer = styled.div`\n cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};\n -webkit-filter: brightness(100%);\n -moz-filter: brightness(100%);\n -o-filter: brightness(100%);\n -ms-filter: brightness(100%);\n filter: brightness(100%);\n ${(props) =>\n props.isHovering &&\n `:hover {\n -webkit-filter: brightness(70%);\n -moz-filter: brightness(70%);\n -o-filter: brightness(70%);\n -ms-filter: brightness(70%);\n filter: brightness(70%);\n }`}\n`\n\nconst EditIcon = styled(Edit3)`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 25px;\n`\n\nexport const Clickable: React.FC = ({\n onClick,\n disabled,\n showEditIcon,\n hoverImgOverlay,\n children,\n display = 'inline-block',\n}) => {\n const [isHovering, setHovereing] = useState(false)\n\n return (\n {} : onClick}\n position=\"relative\"\n textAlign=\"left\"\n color={Colors.white}\n display={display}\n onMouseEnter={() => setHovereing(true)}\n onMouseLeave={() => setHovereing(false)}\n >\n \n {children}\n {showEditIcon && isHovering && setHovereing(true)} />}\n \n \n )\n}\n","import React, { useState } from 'react'\nimport { ChevronDown, ChevronRight } from 'react-feather'\nimport { FjCard, ContainerDiv, FjText } from 'src/components/Common'\nimport { Colors } from 'src/constants/colors'\n\ntype CollapsibleWrapperProps = {\n title?: string\n icon?: React.ReactNode\n topRight?: React.ReactNode\n children: React.ReactNode\n initialCollapsed?: boolean\n onCollapseChange?: (collapsed: boolean) => void\n}\n\nexport const CollapsibleWrapper: React.FC = ({\n title,\n icon,\n topRight,\n children,\n onCollapseChange,\n initialCollapsed = true,\n}) => {\n const [collapsed, setCollapsed] = useState(initialCollapsed)\n\n const handleCollapseChange = () => {\n setCollapsed((collapsed) => !collapsed)\n onCollapseChange?.(!collapsed)\n }\n\n return (\n \n \n \n {icon}\n {title ? (\n \n {title}\n \n ) : null}\n \n \n {topRight}\n {!collapsed ? (\n \n ) : (\n \n )}\n \n \n {!collapsed && children}\n \n )\n}\n","import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport Confetti from 'react-confetti'\nimport { DefaultButton } from 'src/components/Common/Button'\nimport { ContainerDiv } from 'src/components/Common/Cards'\nimport { FjText } from 'src/components/Common/Text'\nimport { Course } from 'src/models/Course'\nimport { LearningPath } from 'src/models/LearningPath'\nimport { confettiModalOpened, getFeedContentTypeName, hasOpenedConfettiModal } from 'src/utils/content'\n\nexport type ConfettiModalProps = {\n obj: Course | LearningPath\n}\n\nexport const ConfettiModal = ({ obj }: ConfettiModalProps) => {\n const intervalRef = useRef()\n const [certificateUrl, setCertificateUrl] = useState(obj.userCertificatePdfUrl)\n\n const fetchCertificate = useCallback(async () => {\n const { userCertificatePdfUrl } = await obj.getCertificatePdfUrl()\n if (userCertificatePdfUrl) {\n setCertificateUrl(userCertificatePdfUrl)\n clearInterval(intervalRef.current)\n }\n }, [obj])\n\n useEffect(() => {\n if (!obj.certificate) return\n\n if (!obj.userCertificatePdfUrl) {\n intervalRef.current = setInterval(fetchCertificate, 2000)\n } else {\n setCertificateUrl(obj.userCertificatePdfUrl)\n }\n return () => {\n clearInterval(intervalRef.current)\n }\n }, [fetchCertificate, obj.certificate, obj.userCertificatePdfUrl])\n\n useEffect(() => {\n if (!hasOpenedConfettiModal(obj)) {\n confettiModalOpened(obj)\n }\n }, [obj])\n\n return (\n \n \n \n Congratulations!\n \n \n You've successfully completed this {getFeedContentTypeName({ obj })}.\n \n {obj.certificate ? (\n window.open(certificateUrl, '_blank')}\n />\n ) : null}\n \n )\n}\n","import { Col, Row } from 'antd'\nimport React from 'react'\nimport { LinkedinLoginButton } from 'src/components/Auth/LinkedinLogin'\nimport { ContainerDiv, FormActionButtons, FormHeaderText } from 'src/components/Common'\nimport { Paths } from 'src/constants/navigation'\nimport { sharedAppStateStore } from 'src/store/AppStateStore'\nimport { User } from 'src/models/User'\n\ninterface ConnectLinkedinFormProps {\n submitButtonLabel?: string\n secondaryButtonLabel?: string\n onSuccess?(): void\n onCancel?(): void\n}\n\nexport class ConnectLinkedinForm extends React.Component {\n successHandler = async (oAuthData: any) => {\n try {\n await User.connectLinkedin({ code: oAuthData.code, redirectUri: Paths.getLinkedInOAuthRedirectURL() })\n if (this.props.onSuccess) this.props.onSuccess()\n } catch (err) {\n sharedAppStateStore.handleError(err)\n }\n }\n\n render() {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n )\n }\n}\n","import React, { useMemo } from 'react'\nimport { FilterDropdownButton } from 'src/components/Common/Button'\nimport FjPopover, { FjPopoverContent } from 'src/components/Common/FjPopover'\nimport { getContentCategoryTitle, LearningContentType } from 'src/utils/content'\n\ntype ContentTypeSelectProps = {\n value?: LearningContentType\n onChange: (contentType?: LearningContentType) => void\n onClear?: () => void\n contentTypes: LearningContentType[]\n}\n\nexport const ContentTypeSelect: React.FC = ({\n value,\n onChange,\n onClear,\n contentTypes,\n}: ContentTypeSelectProps) => {\n const contentTypeOptions = useMemo(() => {\n return contentTypes.map((option) => ({\n label: getContentCategoryTitle(option).slice(0, -1),\n value: option,\n id: option,\n key: option,\n }))\n }, [contentTypes])\n\n const selectedOption = contentTypeOptions.find((option) => option.id === value)\n\n return (\n onChange(option.id as LearningContentType)}\n />\n }\n >\n \n \n )\n}\n","import React from 'react'\nimport { Tooltip } from 'antd'\nimport { Copy } from 'react-feather'\nimport { copyToClipboard } from 'src/utils/format'\n\nexport const CopyToClipboard: React.FC<{ text: string; modalTitle?: string }> = ({ text, modalTitle = 'Link' }) => {\n return (\n \n copyToClipboard(text, undefined, modalTitle)} style={{ cursor: 'pointer' }} />\n \n )\n}\n","import { DatePicker } from 'antd'\nimport React, { useMemo, useState } from 'react'\nimport { FilterDropdownButton } from 'src/components/Common/Button'\nimport FjPopover from 'src/components/Common/FjPopover'\n\nconst { RangePicker } = DatePicker\n\ntype DateFilterProps = {\n filterLabel?: string\n startDate: moment.Moment\n endDate: moment.Moment\n handleDateFilterChange: (dateRange: moment.Moment[]) => void\n handleClearDateFilter: () => void\n}\n\nexport const DateFilter = ({\n filterLabel = 'Date',\n startDate,\n endDate,\n handleDateFilterChange,\n handleClearDateFilter,\n}: DateFilterProps) => {\n const [startDateValue, setStartDateValue] = useState()\n const [endDateValue, setEndDateValue] = useState()\n const [filterOpen, setFilterOpen] = useState(false)\n const isDateFilterSelected = !!startDate || !!endDate\n const title = useMemo(() => {\n let title = filterLabel\n if (startDate || endDate) title = `${title} |`\n if (startDate) title = `${title} From ${startDate.format('YYYY-MM-DD')}`\n if (endDate) title = `${title} to ${endDate.format('YYYY-MM-DD')}`\n return title\n }, [endDate, filterLabel, startDate])\n\n const handleChange = (dateRange: moment.Moment[]) => {\n if (dateRange[0] && dateRange[1]) {\n setStartDateValue(undefined)\n setEndDateValue(undefined)\n setFilterOpen(false)\n handleDateFilterChange(dateRange)\n }\n }\n\n return (\n current && current.valueOf() > Date.now()}\n />\n }\n open={filterOpen}\n onOpenChange={(open) => setFilterOpen(open)}\n >\n setFilterOpen((open) => !open)}\n selected={isDateFilterSelected}\n title={title}\n onClear={isDateFilterSelected ? handleClearDateFilter : undefined}\n />\n \n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Dropdown, DropdownProps, DropDownProps } from 'antd'\nimport { FjText, Icon, TextCustomProps, HoverText, FjAvatar } from 'src/components/Common'\nimport { PaddingProps, MarginProps } from 'src/components/Common/Styles'\nimport { Colors } from 'src/constants/colors'\nimport downCaret from 'src/assets/icons/DownCaret/DownCaret.svg'\nimport { User } from 'src/models/User'\nimport { mobileQuery } from 'src/pages/public/common'\nimport { useMediaQuery } from 'react-responsive'\n\nexport interface DefaultDropDownProps extends DropDownProps {\n dropdownType?: 'basic' | 'dark-navy' | 'orange' | 'teal' | 'nav'\n textColor?: string\n hoverText?: boolean\n showArrow?: boolean\n user: User\n}\n\nexport const BasicDropDown = styled(Dropdown)`\n background-color: ${Colors.white};\n :hover {\n cursor: pointer;\n }\n`\n\nexport const DarkNavyDropDown = styled(BasicDropDown)`\n background-color: ${Colors.shark};\n`\n\nexport const TealDropDown = styled(BasicDropDown)`\n background-color: ${Colors.robinsEggBlue};\n`\n\nexport const NavDropDown = styled(BasicDropDown)`\n background-color: transparent;\n`\n\ntype IDefaultDropDownProps = DefaultDropDownProps & PaddingProps & MarginProps & TextCustomProps\n\nexport const DefaultDropDown: React.FC = (props: IDefaultDropDownProps) => {\n let CompName = BasicDropDown\n let color = Colors.shark\n const displayPic = props.user.displayPic\n const dropdownTitle = props.user.fullName\n\n if (!props.dropdownType || props.dropdownType === 'basic') {\n color = props.textColor ? props.textColor : Colors.outerSpace\n } else {\n switch (props.dropdownType) {\n case 'dark-navy':\n CompName = DarkNavyDropDown\n break\n case 'nav':\n CompName = NavDropDown\n break\n default:\n CompName = BasicDropDown\n color = Colors.outerSpace\n break\n }\n }\n return (\n \n {props.hoverText ? (\n \n {displayPic ? : null}\n {dropdownTitle}\n {props.showArrow ? : null}\n \n ) : (\n \n {displayPic ? : null}\n {dropdownTitle}\n {props.showArrow ? : null}\n \n )}\n \n )\n}\n\nexport const FjDropdown = ({ children, ...props }: DropdownProps) => {\n const isMobile = useMediaQuery(mobileQuery)\n return (\n \n {children}\n \n )\n}\n","import React from 'react'\nimport { ConnectHubspotButton, ContainerDiv, FjText, HUBSPOT_CLIENT_ID } from 'src/components/Common'\nimport { Colors } from 'src/constants/colors'\nimport emptyContentIcon from 'src/assets/img/empty-content.svg'\nimport { sharedDataStore } from 'src/store/DataStore'\nimport {\n ConnectGongButton,\n ConnectSalesforceButton,\n GONG_CLIENT_ID,\n SALESFORCE_CLIENT_ID,\n} from 'src/components/Common/Button'\n\nexport interface FeedEmptyContentProps {\n title?: string\n subtitleLine1?: string\n subtitleLine2?: string\n imgSrc?: string\n imgWidth?: string\n imgHeight?: string\n imgMinWidth?: string\n imgMinHeight?: string\n imgMaxWidth?: string\n imgMaxHeight?: string\n paddingVertical?: string\n titleMarginTop?: string\n}\n\nexport const FeedEmptyContent: React.FC = ({\n title = 'No data',\n subtitleLine1,\n subtitleLine2,\n imgSrc,\n imgWidth,\n imgHeight,\n imgMinWidth,\n imgMinHeight,\n imgMaxWidth,\n imgMaxHeight,\n paddingVertical = '30px',\n titleMarginTop = '30px',\n}) => {\n return (\n \n \n \n {title}\n \n {(subtitleLine1 || subtitleLine2) && (\n \n {subtitleLine1}\n
\n {subtitleLine2}\n
\n )}\n \n )\n}\n\nexport const FeedEmptyContentConnectGong = () => {\n return (\n \n \n Connect your Gong account with Flockjay to view all calls here.\n \n {GONG_CLIENT_ID && (\n <>\n \n \n \n \n )}\n \n )\n}\n\nexport const FeedEmptyContentConnectSalesforce = ({ customLabel }: { customLabel?: string }) => {\n const company = sharedDataStore.user.company\n const hubspotIntegrated = !!company.integratedHubspotOrganizationPortalId\n const salesforceIntegrated = !!company.integratedSalesforceOrganizationUrl\n const defaultMessage =\n !hubspotIntegrated && !salesforceIntegrated\n ? 'Connect your CRM with Flockjay to view all opportunities/deals here.'\n : undefined\n return (\n \n \n {customLabel || defaultMessage}\n \n {SALESFORCE_CLIENT_ID && (\n \n \n \n )}\n {HUBSPOT_CLIENT_ID && (\n \n \n \n )}\n \n )\n}\n\nexport const FeedNoAccessContent: React.FC = ({ title, ...props }) => (\n \n \n \n)\n\nexport const FeedNotFound: React.FC = ({ title, ...props }) => (\n \n \n \n)\n","import React from 'react'\nimport { CKEditor } from '@ckeditor/ckeditor5-react'\nimport ClassicEditor from 'ckeditor5/packages/ckeditor5-build-classic/build/ckeditor'\nimport { Field, FormikProps, FieldProps } from 'formik'\nimport { User } from 'src/models/User'\nimport { Paths } from 'src/constants/navigation'\nimport { FeedTag } from 'src/models/FeedTag'\nimport { uploadToS3 } from 'src/utils/S3Upload'\nimport { renameFile } from 'src/utils/renameFile'\nimport { sharedAppStateStore } from 'src/store/AppStateStore'\nimport { sharedDataStore } from 'src/store/DataStore'\nimport { ErrorText, VideoRecordButton } from 'src/components/Common'\nimport { baseURL } from 'src/network/FlockjayProvider'\nimport styled from 'styled-components'\nimport sanitizeHtml from 'sanitize-html'\nimport { containsJS } from 'src/utils/format'\n\nconst Wrapper = styled.div<{ showRecordVideoBtn: boolean }>`\n position: relative;\n ${(props) =>\n props.showRecordVideoBtn &&\n `.ck.ck-editor__main > .ck-editor__editable {\n padding-bottom: 3rem;\n }`}\n`\n\nconst FILE_UPLOAD_SIZE_LIMIT = 1024 * 1024 * 1000 // 1GB\n\nclass FJCKEditorFileUploadAdapter {\n loader: any\n\n constructor(loader) {\n this.loader = loader\n }\n\n upload = async () => {\n const file: File = await this.loader.file\n if (file.size > FILE_UPLOAD_SIZE_LIMIT)\n throw new Error('The maximum file upload size is 1GB. Please compress or choose a different file')\n const renamedFile = renameFile(file)\n const url = await sharedAppStateStore.wrapAppLoading(uploadToS3(renamedFile), 'Uploading Media...')\n return { default: url.includes('fjvideo') ? decodeURIComponent(url) : url }\n }\n}\n\nfunction FJUploadAdapterPlugin(editor) {\n return (editor.plugins.get('FileRepository').createUploadAdapter = (loader) =>\n new FJCKEditorFileUploadAdapter(loader))\n}\n\nfunction MentionCustomization(editor) {\n // The upcast converter will convert view \n // elements to the model 'mention' text attribute.\n editor.conversion.for('upcast').elementToAttribute({\n view: {\n name: 'a',\n key: 'data-mention',\n classes: 'mention',\n attributes: {\n href: true,\n 'data-user-id': true,\n },\n },\n model: {\n key: 'mention',\n value: (viewItem) => {\n // The mention feature expects that the mention attribute value\n // in the model is a plain object with a set of additional attributes.\n // In order to create a proper object use the toMentionAttribute() helper method:\n const mentionAttribute = editor.plugins.get('Mention').toMentionAttribute(viewItem, {\n // Add any other properties that you need.\n link: viewItem.getAttribute('href'),\n userId: viewItem.getAttribute('data-user-id'),\n })\n\n return mentionAttribute\n },\n },\n converterPriority: 'high',\n })\n\n editor.conversion.for('upcast').elementToAttribute({\n view: {\n name: 'a',\n key: 'data-tags',\n classes: 'tags',\n attributes: {\n href: true,\n },\n },\n model: {\n key: 'mention',\n value: (viewItem) => {\n const mentionAttribute = editor.plugins.get('Mention').toMentionAttribute(viewItem, {\n id: viewItem.getAttribute('data-tags'),\n link: viewItem.getAttribute('href'),\n })\n\n return mentionAttribute\n },\n },\n })\n\n // Downcast the model 'mention' text attribute to a view element.\n editor.conversion.for('downcast').attributeToElement({\n model: 'mention',\n view: (modelAttributeValue, { writer }) => {\n // Do not convert empty attributes (lack of value means no mention).\n if (!modelAttributeValue) {\n return\n }\n\n if (modelAttributeValue.id[0] === '@') {\n return writer.createAttributeElement(\n 'a',\n {\n class: 'mention',\n 'data-mention': modelAttributeValue.id,\n 'data-user-id': modelAttributeValue.userId,\n href: modelAttributeValue.link,\n target: '_blank',\n },\n {\n // Make mention attribute to be wrapped by other attribute elements.\n priority: 20,\n // Prevent merging mentions together.\n id: modelAttributeValue.uid,\n }\n )\n } else {\n // '#' Tags\n return writer.createAttributeElement(\n 'a',\n {\n class: 'tags',\n 'data-tags': modelAttributeValue.id,\n href: modelAttributeValue.link,\n },\n {\n priority: 20,\n id: modelAttributeValue.uid,\n }\n )\n }\n },\n converterPriority: 'high',\n })\n}\n\nfunction VideoControls(editor: any) {\n const doc = editor.model.document\n doc.registerPostFixer((writer) => {\n for (const change of doc.differ.getChanges()) {\n const isInsertingMedia = change.type === 'insert' && change.name === 'media' && doc.getRoot().childCount === 1\n const isInsertingTable = change.type === 'insert' && change.name === 'table' && doc.getRoot().childCount === 1\n const isSettingSrc = change.type === 'attribute' && change.attributeKey === 'src'\n\n if (isInsertingMedia || isSettingSrc || isInsertingTable) {\n // Prevent adding space around if operation is happening inside table.\n if (change?.position?.parent?.name === 'tableCell' || change?.range?.start?.parent?.name === 'tableCell') return\n\n let position, element\n if (isInsertingMedia || isInsertingTable) {\n position = change.position\n element = change.position.root\n }\n if (isSettingSrc) {\n position = change.range.start\n element = change.range.root\n }\n\n // Add space before and after media\n writer.insert(writer.createElement('paragraph'), position, 'start')\n writer.insert(writer.createElement('paragraph'), element, position.offset + 2)\n\n // Put cursor after media\n // We are doing this because after uploading media, it's selected by default, if user click tag, uploaded media is replaced with it.\n // To avoid that, we should change selection\n editor.focus()\n editor.model.change((writer) => {\n writer.setSelection(writer.createPositionAt(element, position.offset + 3))\n })\n }\n }\n })\n\n editor.conversion.for('downcast').add((dispatcher: any) => {\n dispatcher.on('attribute:src:videoBlock', (evt, data, conversionApi) => {\n if (!conversionApi.consumable.consume(data.item, evt.name)) {\n return\n }\n\n const viewWriter = conversionApi.writer\n const figure = conversionApi.mapper.toViewElement(data.item)\n const video = figure.getChild(0)\n\n const src = data.attributeNewValue\n viewWriter.setAttribute('src', src || '', video)\n\n if (src.includes('https://')) {\n viewWriter.setAttribute('data-oembed-url', src, figure)\n }\n\n let id = ''\n if (src.includes('https://fj')) {\n id = src.replace('https://fj-file-uploads.s3.us-east-2.amazonaws.com/', '').split('.')?.[0]\n } else if (src.includes('https://cdn.flockjay.com/')) {\n id = src.replace('https://cdn.flockjay.com/', '').split('.')?.[0]\n } else if (src.includes(`${baseURL}/feed/files/`)) {\n /* eslint-disable */\n const regex =\n /^(?:https:\\/\\/(?:staging-)?api(?:-demo)?\\.flockjay\\.com|(?:http:\\/\\/)?localhost:8000)\\/feed\\/files\\/(?:[a-zA-Z0-9\\-]+)\\/((?:[\\w+]+(?:%[0-9A-Fa-f]{2}|\\/))?fjvideo-[\\w-]+).([\\w-]+)/\n const match = src.match(regex)\n id = match?.[1]\n }\n viewWriter.setAttribute('id', id, video)\n })\n\n dispatcher.on(\n 'insert:videoBlock',\n (evt: any, data: any, conversionApi: any) => {\n const viewWriter = conversionApi.writer\n const figure = conversionApi.mapper.toViewElement(data.item)\n const video = figure.getChild(0)\n viewWriter.setAttribute('preload', 'metadata', video)\n viewWriter.setAttribute('controls', true, video)\n viewWriter.setAttribute('controlslist', 'nodownload', video)\n viewWriter.setAttribute('style', 'max-width:100%', video)\n },\n { priority: 'low' }\n )\n })\n}\n\ninterface FJCKEditorProps {\n name?: string\n data?: string\n /**\n Only use `errorMsg` when using CKEditor without formik.\n It won't work other wise\n */\n errorMsg?: string\n includeMentions?: boolean\n placeholder?: string\n hideToolbar?: boolean\n disabled?: boolean\n setEditor?: (editor: any) => void\n handleChange?: (data: string) => void\n showRecordVideoBtn?: boolean\n showRecordVideoTitle?: boolean\n autoStartRecord?: boolean\n}\n\nexport default class FJCKEditor extends React.Component {\n static defaultProps = {\n showRecordVideoTitle: true,\n }\n formikProps?: FormikProps\n ckEditor: any\n\n componentDidCatch(error: Error) {\n sharedAppStateStore.handleError(error)\n }\n\n setFieldProps = (fieldProps: FieldProps) => {\n this.formikProps = fieldProps.form\n }\n\n editorReady = (editor: any) => {\n this.ckEditor = editor\n if (this.props.setEditor) this.props.setEditor(editor)\n }\n\n valueChanged = (_event: any, editor: any) => {\n // Set target=_blank for all links, without changing body value\n document.querySelectorAll('.ck-editor a').forEach((link) => {\n link.setAttribute('target', '_blank')\n })\n\n const el = document.createElement('div')\n el.innerHTML = editor.getData()\n el.querySelectorAll('div.raw-html-embed').forEach((rawEmbed: HTMLDivElement) => {\n if (containsJS(rawEmbed.innerHTML)) rawEmbed.innerHTML = sanitizeHtml(rawEmbed.innerHTML)\n })\n\n if (this.props.name) this.formikProps.setFieldValue(this.props.name, el.innerHTML)\n if (this.props.handleChange) this.props.handleChange(el.innerHTML)\n }\n\n getFeedUsers = async (queryText: string) => {\n let { data: users } = await User.list({\n search: queryText,\n is_active: true,\n access_role: 'standard,admin,manager,partner',\n })\n // Filter self from the list of fetched users\n users = users.filter((user: User) => user.id !== sharedDataStore.user.id)\n return users.map((user: User) => {\n return {\n id: `@${user.fullName}`,\n userId: user.id,\n name: user.fullName,\n link: Paths.getProfilePath(user.id),\n }\n })\n }\n\n getTagOptions = async (query: string = '') => {\n const tagsList: string[] = (await FeedTag.list({ search: query })).map((tag: FeedTag) => tag.tag)\n if (query && tagsList.indexOf(query) === -1) tagsList.unshift(query)\n return tagsList.map((tag) => {\n return {\n id: `#${tag}`,\n name: tag,\n link: Paths.getTagFeedPath(tag),\n }\n })\n }\n\n render() {\n const config = {\n extraPlugins: [FJUploadAdapterPlugin, MentionCustomization, VideoControls],\n placeholder: this.props.placeholder,\n link: { addTargetToExternalLinks: true },\n mention: this.props.includeMentions\n ? {\n feeds: [\n {\n marker: '@',\n feed: this.getFeedUsers,\n },\n {\n marker: '#',\n feed: this.getTagOptions,\n },\n ],\n }\n : undefined,\n htmlEmbed: {\n showPreviews: true,\n sanitizeHtml: (inputHtml: string) => {\n const outputHtml = containsJS(inputHtml) ? sanitizeHtml(inputHtml) : inputHtml\n return {\n html: outputHtml,\n hasChanged: inputHtml !== outputHtml,\n }\n },\n },\n }\n\n const showRecordVideoBtn =\n this.props.showRecordVideoBtn && !(sharedAppStateStore.isSafari() && sharedAppStateStore.isMobileDevice())\n\n // ckeditor sometimes has issues communicating with formik so we want the option to\n // use it independently\n return (\n \n {this.props.name ? (\n \n {(fieldProps: FieldProps) => {\n this.setFieldProps(fieldProps)\n return (\n \n )\n }}\n \n ) : (\n <>\n \n {this.props.errorMsg ? {this.props.errorMsg} : null}\n \n )}\n {showRecordVideoBtn ? (\n this.ckEditor.execute('mediaEmbed', videoUrl)}\n />\n ) : null}\n \n )\n }\n}\n","import React, { Component } from 'react'\nimport { withRouter, RouteComponentProps } from 'react-router-dom'\nimport { observer } from 'mobx-react'\nimport styled from 'styled-components'\nimport { Row, Col, Drawer } from 'antd'\nimport { sharedAppStateStore } from 'src/store/AppStateStore'\nimport { MenuOption, MenuOptionType } from 'src/models/MenuOptions'\nimport { ContainerDiv, Icon, DefaultHeader, DefaultNavLink, DefaultDropDown, FjText } from 'src/components/Common'\nimport { Colors } from 'src/constants/colors'\nimport { Paths } from 'src/constants/navigation'\nimport wordMark from 'src/assets/icons/FJ/Flockjay_logo_black_rgb.png'\nimport MenuNavy from 'src/assets/icons/Menu/MenuNavy.svg'\nimport { observable, makeObservable } from 'mobx'\nimport { sharedDataStore } from 'src/store/DataStore'\nimport { Auth } from 'src/utils/Auth'\nimport { ContentWrapper } from 'src/components/Page/ContentWrapper'\n\nconst navContainer: React.CSSProperties = {\n lineHeight: '70px',\n}\n\ninterface FJNavbarProps extends RouteComponentProps {\n wordMarkTarget?: string\n}\n\nconst ProfileDropdown = styled.div`\n border-left: 1px solid ${Colors.lightGray};\n padding-left: 17px;\n padding-right: 17px;\n`\n\n@observer\nclass FJNavbarComponent extends Component {\n @observable drawerVisible = false\n\n redirect = (options: MenuOption) => {\n switch (options.identifier) {\n case 'profile':\n sharedAppStateStore.navigate(Paths.getProfilePath(sharedDataStore.user.id))\n break\n\n case 'gradebook': {\n sharedAppStateStore.navigate(Paths.getDashboardPath({ category: 'gradebook' }))\n break\n }\n case 'signOut':\n Auth.logout()\n break\n case 'team':\n sharedAppStateStore.navigate(Paths.team)\n break\n }\n }\n\n dropdownmenu = () => {\n let optionsToExclude: MenuOptionType[] = []\n if (sharedDataStore.user.isTeacher()) {\n optionsToExclude.push('pay')\n }\n if (sharedDataStore.user.isFaasUser()) {\n optionsToExclude.push('directory')\n optionsToExclude.push('blog')\n optionsToExclude.push('pay')\n }\n return {\n items: MenuOption.profileNavOptions(optionsToExclude).map((option) => {\n return {\n key: option.identifier,\n onClick: () => this.redirect(option),\n label: option.displayStr(),\n }\n }),\n }\n }\n\n getNavLinks = (type: 'desktop' | 'mobile') => {\n const isMobile = type === 'mobile'\n const navLinks = []\n\n if (isMobile) {\n navLinks.push(\n Auth.logout()}\n >\n Sign Out\n \n )\n }\n return navLinks\n }\n\n getLogoLink = () => {\n if (sharedDataStore.user.isFaasUser()) {\n return Paths.feed\n } else if (this.props.wordMarkTarget) {\n return this.props.wordMarkTarget\n } else if (sharedDataStore.user) return Paths.dashboard\n }\n\n constructor(props: FJNavbarProps) {\n super(props)\n makeObservable(this)\n }\n\n render() {\n return (\n <>\n \n \n \n \n \n \n false} style={{ paddingLeft: 0 }}>\n \n \n \n \n \n \n \n \n \n \n \n {this.getNavLinks('desktop')}\n {sharedDataStore.user.id && (\n \n \n \n )}\n \n \n\n \n \n \n (this.drawerVisible = !this.drawerVisible)} />\n \n \n Menu}\n drawerStyle={{ backgroundColor: Colors.shark }}\n headerStyle={{ backgroundColor: Colors.shark }}\n placement=\"right\"\n onClose={() => (this.drawerVisible = false)}\n open={this.drawerVisible}\n >\n {this.getNavLinks('mobile')}\n \n \n \n \n \n \n \n )\n }\n}\n\nconst NavBarStyle: React.CSSProperties = {\n filter: 'drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.05))',\n}\n\nexport const FJNavbar = withRouter(FJNavbarComponent)\n","import React from 'react'\nimport { observable, makeObservable } from 'mobx'\nimport { observer } from 'mobx-react'\nimport { Field } from 'formik-antd'\nimport { FormikFieldProps } from 'formik-antd/lib/FieldProps'\nimport { FieldProps } from 'formik'\nimport {\n Utils as QbUtils,\n Config,\n ImmutableTree,\n ActionMeta,\n BuilderProps,\n Builder,\n Query,\n} from '@react-awesome-query-builder/antd'\nimport '@react-awesome-query-builder/antd/css/compact_styles.css'\nimport { DeleteButton } from 'src/components/Common/Button'\n\ninterface IFjQueryBuilderProps {\n config: Config\n initialValue?: ImmutableTree\n onChange: (tree: ImmutableTree) => void\n}\n\n@observer\nclass FjQueryBuilder extends React.Component {\n @observable tree: ImmutableTree\n // for some reason making config observable breaks the query builder\n config: Config\n\n constructor(props: IFjQueryBuilderProps) {\n super(props)\n makeObservable(this)\n const { config, initialValue } = this.props\n this.config = { ...config }\n this.tree = initialValue\n ? QbUtils.checkTree(initialValue, this.config)\n : QbUtils.checkTree(QbUtils.loadTree({ id: QbUtils.uuid(), type: 'group' }), this.config)\n }\n\n onChange = (immutableTree: ImmutableTree, config: Config, actionMeta?: ActionMeta) => {\n this.tree = immutableTree\n this.config = config\n this.props.onChange(immutableTree)\n }\n\n renderBuilder = (props: BuilderProps) => {\n return (\n
\n
\n \n
\n
\n )\n }\n\n render() {\n this.config.settings.renderIcon = (props, { RCE, W: { Icon } }) => {\n if (props.type === 'delRule') return {}} />\n if (props.type === 'delGroup')\n return {}} />\n return RCE(Icon, props)\n }\n\n // TODO: Add button is done but still need to handle and and/or button group\n // this.config.settings.renderButton = (props, { RCE, W: { Button } }) => {\n // if (props.type === 'addRule')\n // return (\n // }\n // buttonType=\"primary\"\n // clicked={props.onClick}\n // />\n // )\n // return RCE(Button, props)\n // }\n\n return (\n
\n \n
\n )\n }\n}\n\ninterface IFjQueryBuilderFieldProps extends FormikFieldProps {\n config: Config\n}\n\nexport const FjQueryBuilderField: React.FC = ({ config, ...formikFieldProps }) => {\n return (\n \n {(fieldProps: FieldProps) => {\n return (\n \n fieldProps.form.setFieldValue(formikFieldProps.name, immutableTree)\n }\n />\n )\n }}\n \n )\n}\n","import React from 'react'\nimport { FjCard } from 'src/components/Common/Cards'\nimport emptyContentIcon from 'src/assets/img/empty-content.svg'\nimport { FjText } from 'src/components/Common/Text'\nimport { Colors } from 'src/constants/colors'\n\nexport const FeatureDisabled = () => {\n return (\n \n \"Disabled\n \n This feature is currently disabled for your organization.\n \n \n Please reach out to your{' '}\n \n
CSM\n {' '}\n to enable it.\n \n \n )\n}\n","import React from 'react'\nimport { Layout, Badge } from 'antd'\nimport { BadgeProps } from 'antd/lib/badge'\nimport { Home, File, Layout as LayoutIcon, BarChart2, X } from 'react-feather'\nimport { NavLink } from 'react-router-dom'\nimport { useMediaQuery } from 'react-responsive'\nimport { FjText, ContainerDiv } from 'src/components/Common'\nimport { Colors } from 'src/constants/colors'\nimport { Paths } from 'src/constants/navigation'\nimport { mobileQuery } from 'src/pages/public/common'\nimport FJLogo from 'src/assets/icons/Sidebar/FJLogo.svg'\nimport FJLogoCompanyName from 'src/assets/icons/Sidebar/FJLogo-CompanyName.svg'\nimport { sharedDataStore } from 'src/store/DataStore'\nimport { sharedAppStateStore } from 'src/store/AppStateStore'\nimport { observer } from 'mobx-react'\nimport { sharedQueryClient } from 'src/store/QueryClient'\n\nconst { Sider } = Layout\nconst SIDE_NAV_BACKGROUND = `linear-gradient(180deg, #E9F4FF 8.85%, #D8E6FF 44.27%, #EADEFF 82.29%)`\n\ninterface IFeedNavMenuItemProps {\n icon: React.ReactElement\n to?: string\n clicked?: () => void\n text?: string\n style?: React.CSSProperties\n badgeProps?: BadgeProps\n}\n\nconst menuItemStyle: React.CSSProperties = {\n userSelect: 'none',\n display: 'flex',\n alignItems: 'center',\n padding: '10px',\n borderRadius: '8px',\n cursor: 'pointer',\n}\n\nexport const FeedNavMenuItem: React.FC = ({\n icon,\n to = '',\n text = '',\n style = {},\n clicked = undefined,\n badgeProps,\n}) => {\n const isMobile = useMediaQuery(mobileQuery)\n\n const iconComponent = badgeProps ? {icon} : icon\n\n const ItemContent = isMobile ? (\n <>\n {iconComponent}\n \n {text}\n \n \n ) : (\n \n {iconComponent}\n \n {text}\n \n \n )\n\n const handleClickNavMenuItem = () => {\n sharedAppStateStore.resetBreadcrumbs()\n clicked?.()\n }\n\n return (\n <>\n {to ? (\n \n {ItemContent}\n \n ) : (\n \n {ItemContent}\n \n )}\n \n )\n}\n\nconst SideNavContainer: React.FC<{ children?: React.ReactNode; handleCloseNavbar?: (e: React.MouseEvent) => void }> = ({\n children,\n handleCloseNavbar,\n}) => {\n const isMobile = useMediaQuery(mobileQuery)\n return (\n \n \n {!isMobile ? \"logo\" : \"logo\"}\n {isMobile && handleCloseNavbar && (\n \n )}\n \n {children}\n \n )\n}\n\nconst logoStyle: React.CSSProperties = {\n userSelect: 'none',\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n padding: '0 30px',\n height: '68px',\n}\n\ninterface IFeedSideNavbarContentProps {\n contentBackgroundColor?: string\n handleNavbarOpenStatus?: (isOpen: boolean) => void\n}\n\n@observer\nexport class FeedSideNavbarContent extends React.Component {\n handleCloseNavbar = (e: React.MouseEvent) => {\n e.stopPropagation()\n this.props.handleNavbarOpenStatus(false)\n }\n\n render() {\n const navIconProps = { color: Colors.chambray, size: 24 }\n let links = [\n }\n to={sharedDataStore.getLoginHandlerPath()}\n text=\"Home\"\n style={{ margin: sharedAppStateStore.isMobile ? '20px 20px 10px 20px' : '' }}\n key=\"home\"\n clicked={() => sharedQueryClient.invalidateQueries({ queryKey: ['badge_counts'], refetchType: 'none' })}\n />,\n ]\n links.push(\n }\n to={Paths.library}\n text=\"Library\"\n style={{ margin: sharedAppStateStore.isMobile ? '10px 20px' : '' }}\n key=\"library\"\n />\n )\n if (sharedDataStore.user.isFaasAdmin() && process.env.REACT_APP_PAGES_ENABLED === 'true') {\n links.push(\n }\n to={Paths.getPagePath()}\n text=\"Pages\"\n style={{ margin: sharedAppStateStore.isMobile ? '10px 20px' : '' }}\n key=\"pages\"\n />\n )\n }\n if (\n !(\n sharedDataStore.user.isFaasPublic() ||\n sharedDataStore.user.isFaasPartner() ||\n sharedDataStore.user.isAnonymous()\n )\n ) {\n links.push(\n }\n to={Paths.activityDashboard}\n text=\"Analytics\"\n style={{ margin: sharedAppStateStore.isMobile ? '10px 20px' : '' }}\n key=\"analytics\"\n />\n )\n }\n return {links}\n }\n}\n\ninterface IFeedSideNavbarProps {\n contentBackgroundColor?: string\n}\n\nexport const FeedSideNavbar: React.FC = ({ contentBackgroundColor }) => {\n return (\n \n \n \n )\n}\n\ninterface IMobileFeedSidebarProps {\n setNavbarDrawerOpen: (isOpen: boolean) => void\n}\n\nexport const MobileFeedSideNavbar: React.FC = ({ setNavbarDrawerOpen }) => {\n return (\n
\n \n
\n )\n}\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport { BaseFilter } from 'src/components/Common/Filter/BaseFilter'\nimport { AutoCompleteOption } from 'src/components/Common/FjFilter'\nimport { FjPopoverContent } from 'src/components/Common/FjPopover'\nimport { Course } from 'src/models/Course'\nimport { Hub } from 'src/models/Hub'\nimport { User } from 'src/models/User'\nimport { debounce } from 'src/utils/debounce'\nimport { DEFAULT_SELECT_PAGE_SIZE } from 'src/constants/app'\n\nexport type AutoCompleteFilterProps = {\n paramKey: string\n label: string\n initialOptions: AutoCompleteOption[]\n multiple?: boolean\n clearable?: boolean\n onChange: (params: object, option?: AutoCompleteOption) => void\n onSearch: (value: string) => Promise\n}\n\nexport const AutoCompleteFilter = ({\n paramKey,\n label,\n initialOptions,\n multiple = true,\n clearable = true,\n onChange,\n onSearch,\n}: AutoCompleteFilterProps) => {\n const [options, setOptions] = useState([])\n const [selectedOptions, setSelectedOptions] = useState([])\n\n useEffect(() => {\n setSelectedOptions(initialOptions)\n }, [initialOptions])\n\n const handleSearch = debounce(async (value) => {\n const options = await onSearch(value)\n setOptions(options)\n }, 300)\n\n const handleAddFilterOption = (option: AutoCompleteOption) => {\n const newOptions = multiple ? [...selectedOptions, option] : [option]\n setSelectedOptions(newOptions)\n onChange({ [paramKey]: newOptions.map((option) => option.id).join(',') || undefined }, option)\n }\n\n const handleRemoveFilterOption = (option: AutoCompleteOption) => {\n const newOptions = selectedOptions.filter((selectedOption) => selectedOption.id !== option.id)\n setSelectedOptions(newOptions)\n onChange({ [paramKey]: newOptions.map((option) => option.id).join(',') || undefined })\n }\n\n const handleClear = () => {\n setSelectedOptions([])\n onChange({\n [paramKey]: undefined,\n })\n }\n\n const filterLabel = useMemo(() => {\n let newFilterLabel = label\n if (selectedOptions.length > 0) {\n newFilterLabel =\n selectedOptions.length > 2\n ? `${newFilterLabel} | ${selectedOptions[0].label}, ${selectedOptions[1].label}, + ${\n selectedOptions.length - 2\n } more`\n : `${newFilterLabel} | ${selectedOptions.map((filter) => filter.label).join(', ')}`\n }\n return newFilterLabel\n }, [label, selectedOptions])\n\n return (\n \n }\n selected={selectedOptions.length > 0}\n onClear={clearable ? handleClear : undefined}\n onClick={() => handleSearch('')}\n />\n )\n}\n\ntype HubFilterProps = {\n onChange: (params: object) => void\n}\n\nexport const HUB_PARAM_KEY = 'hub_id'\n\nexport const HubFilter = ({ onChange }: HubFilterProps) => {\n const [initialOptions, setInitialOptions] = useState([])\n const { search } = useLocation()\n const abortController = useRef()\n\n const initFiltersFromURL = useCallback(async () => {\n const searchParams = new URLSearchParams(search)\n const param = searchParams.get(HUB_PARAM_KEY)\n if (!param) {\n setInitialOptions([])\n return\n }\n\n abortController.current?.abort?.()\n abortController.current = new AbortController()\n const initialOptions = (\n await Promise.all(\n param.split(',').map((id) => Hub.get(id, undefined, undefined, { fields: 'id,name' }, abortController.current))\n )\n ).map((hub: Hub) => {\n return { ...hub, label: hub.name }\n })\n setInitialOptions(initialOptions)\n }, [search])\n\n useEffect(() => {\n initFiltersFromURL()\n }, [initFiltersFromURL])\n\n const handleSearch = async (value: string) => {\n const { data } = await Hub.list({ search: value, fields: 'id,name', page_size: DEFAULT_SELECT_PAGE_SIZE })\n const options = data.map((item: Hub) => ({ ...item, value: item.name, label: item.name }))\n return options\n }\n\n return (\n \n )\n}\n\ntype UserFilterProps = {\n queryParams?: object\n onChange: (params: object) => void\n}\n\nexport const USER_PARAM_KEY = 'userId'\n\nexport const UserFilter: React.FC = ({ queryParams, onChange }) => {\n const [initialOptions, setInitialOptions] = useState([])\n const { search } = useLocation()\n const abortController = useRef()\n\n const convertUserToOptions = (users: User[]): AutoCompleteOption[] =>\n users.map((user: User) => ({ key: user.id, id: user.id, value: user.id, label: user.fullName }))\n\n const initFiltersFromURL = useCallback(async () => {\n const searchParams = new URLSearchParams(search)\n const param = searchParams.get(USER_PARAM_KEY)\n if (!param) {\n setInitialOptions([])\n return\n }\n\n abortController.current?.abort?.()\n abortController.current = new AbortController()\n const initialOptions = await Promise.all(\n param\n .split(',')\n .map((id) => User.get(id, undefined, undefined, { fields: 'id,full_name' }, abortController.current))\n )\n setInitialOptions(convertUserToOptions(initialOptions.map((data) => User.fromData(data))))\n }, [search])\n\n const handleSearch = useCallback(\n async (value: string) => {\n abortController.current?.abort?.()\n abortController.current = new AbortController()\n const { results } = await User.list(\n { search: value, fields: 'id,full_name', page_size: DEFAULT_SELECT_PAGE_SIZE, ...queryParams },\n undefined,\n undefined,\n undefined,\n abortController.current\n )\n return convertUserToOptions(User.fromData(results))\n },\n [queryParams]\n )\n\n useEffect(() => {\n initFiltersFromURL()\n }, [initFiltersFromURL])\n\n return (\n \n )\n}\n\ntype CourseFilterProps = {\n multiple?: boolean\n clearable?: boolean\n apiQueryParams?: object\n onChange: (params: object, option?: AutoCompleteOption) => void\n}\n\nexport const COURSE_PARAM_KEY = 'courseId'\n\nexport const CourseFilter = ({ apiQueryParams, ...props }: CourseFilterProps) => {\n const [initialOptions, setInitialOptions] = useState([])\n const { search } = useLocation()\n const abortController = useRef()\n\n const initFiltersFromURL = useCallback(async () => {\n const searchParams = new URLSearchParams(search)\n const param = searchParams.get(COURSE_PARAM_KEY)\n if (!param) {\n setInitialOptions([])\n return\n }\n\n abortController.current?.abort?.()\n abortController.current = new AbortController()\n const initialOptions = (\n await Promise.all(\n param\n .split(',')\n .map((id) => Course.get(id, undefined, undefined, { fields: 'id,name' }, abortController.current))\n )\n ).map((course: Course) => {\n return { ...course, label: course.name }\n })\n setInitialOptions(initialOptions)\n }, [search])\n\n useEffect(() => {\n initFiltersFromURL()\n }, [initFiltersFromURL])\n\n const handleSearch = async (value: string) => {\n const { data } = await Course.list({\n search: value,\n fields: 'id,name',\n page_size: DEFAULT_SELECT_PAGE_SIZE,\n ...apiQueryParams,\n })\n const options = data.map((item: Course) => ({ ...item, value: item.name, label: item.name }))\n return options\n }\n\n return (\n \n )\n}\n","import React from 'react'\nimport { FilterDropdownButton, FilterDropdownButtonProps } from 'src/components/Common/Button'\nimport FjPopover from 'src/components/Common/FjPopover'\n\ntype BaseFilterProps = FilterDropdownButtonProps & {\n content: React.ReactNode\n}\n\nexport const BaseFilter = ({ content, ...props }: BaseFilterProps) => {\n return (\n \n \n \n )\n}\n","import React from 'react'\nimport { Avatar, AvatarProps, Popover, PopoverProps } from 'antd'\nimport { ContainerDiv } from 'src/components/Common/Cards'\nimport { FjText } from 'src/components/Common/Text'\nimport { Colors } from 'src/constants/colors'\nimport { Author } from 'src/models/Author'\nimport { User } from 'src/models/User'\nimport { sharedDataStore } from 'src/store/DataStore'\nimport styled from 'styled-components'\n\ninterface FjAvatarProps extends AvatarProps {\n author: Author | User\n showPopover?: boolean\n popoverProps?: Omit\n showEmail?: boolean\n showWorkInfo?: boolean\n}\n\nconst colors = ['#91D5FF', '#ECA0FA', '#B89AEB', '#75E1C7', '#7CD37A', '#BFCA7E', '#E6CE4B', '#FFB54D', '#B89AEB']\n\nconst getRGBHexCode = (str: string) => {\n if (!str) return colors[0]\n const hash = Array.from(str).reduce((acc, char) => char.charCodeAt(0) + ((acc << 5) - acc), 0)\n return colors[Math.abs(hash) % colors.length]\n}\n\nexport const FjAvatar = ({\n style,\n author,\n showPopover = true,\n showEmail = false,\n showWorkInfo = true,\n popoverProps = {},\n ...props\n}: FjAvatarProps) => {\n const getFontSize = () => {\n if (typeof props.size === 'number') return props.size / 2\n else if (props.size === 'small') return 12\n else if (props.size === 'default') return 16\n else if (props.size === 'large') return 20\n return 16\n }\n\n const showPendingStatus = author?.status === 'pending' && sharedDataStore.user.isFaasAdminOrManager()\n const fullName = author.fullName\n const userInitials = author.getInitials()\n\n const backgroundColor = getRGBHexCode(fullName)\n\n return (\n \n {showPendingStatus ? (\n The user is pending activation.\n ) : (\n <>\n {author.fullName}\n {showEmail ? {author.email} : null}\n {showWorkInfo && author.formatWorkInfo ? (\n \n {author.formatWorkInfo()}\n \n ) : null}\n \n )}\n \n ) : null\n }\n {...popoverProps}\n >\n \n \n {userInitials}\n \n \n \n )\n}\n\nconst StyledFjText = styled(FjText)`\n // In FjTable component first-child font-weight is set to 600 so need to override it\n .ant-table-tbody > tr > td:first-child & {\n font-weight: 500 !important;\n }\n`\n","import React from 'react'\nimport { observable, makeObservable } from 'mobx'\nimport { observer } from 'mobx-react'\nimport { FJStyledInput, FjInput, FjSelect, LoadingAutoComplete, FjText } from 'src/components/Common'\nimport { LearningContentType, fetchContent, getFeedContentTitle } from 'src/utils/content'\nimport { sharedAppStateStore } from 'src/store/AppStateStore'\nimport { debounce } from 'lodash'\nimport styled from 'styled-components'\nimport { deepEquals } from 'src/utils/format'\nimport { Colors } from 'src/constants/colors'\n\nexport const FjContentFieldTitleContainer = styled.div`\n text-align: left;\n display: grid;\n grid-template-columns: 2fr 1fr;\n grid-gap: 5px;\n @media (max-width: 810px) {\n grid-template-columns: 1fr;\n grid-gap: 0;\n span:nth-child(2) {\n visibility: hidden;\n }\n }\n`\n\nconst FjContentFieldContainer = styled.div`\n display: grid;\n grid-template-columns: 2fr 3fr 0fr 4fr;\n grid-template-rows: auto;\n grid-gap: 5px;\n div:nth-child(3) {\n visibility: hidden;\n }\n @media (max-width: 885px) {\n width: 60%;\n grid-gap: 5px;\n grid-template-columns: 1fr;\n div:nth-child(3) {\n visibility: visible;\n }\n }\n`\n\nconst FjContentFieldWrapper = styled.div`\n text-align: left;\n max-height: 40px;\n`\n\nexport const DEFAULT_DUE_DATE_OFFSET = 7\n\nexport type ContentDataOptionType = {\n key: string\n value: string\n label: string\n contentType: LearningContentType\n dueDateOffset?: number\n}\n\ninterface IFjContentFieldProps {\n index: number\n value: ContentDataOptionType\n onChange: (index: number, option: ContentDataOptionType) => void\n}\n\n@observer\nexport class FjContentField extends React.Component {\n @observable contentDataOptions: ContentDataOptionType[] = []\n @observable isLoading = false\n @observable selectedValue?: ContentDataOptionType\n\n constructor(props: IFjContentFieldProps) {\n super(props)\n makeObservable(this)\n this.selectedValue = props.value\n }\n\n componentDidUpdate(prevProps: Readonly, prevState: Readonly<{}>, snapshot?: any): void {\n if (!deepEquals(this.selectedValue || {}, this.props.value)) this.selectedValue = this.props.value\n }\n\n contentTypeOptionsMap = () =>\n new Map([\n ['course', 'Courses'],\n ['playlist', 'Collections'],\n ['prompt', 'Prompts'],\n ['learningpath', 'Learning Paths'],\n ['asset', 'Assets'],\n ['feedpost', 'Posts'],\n ])\n\n handleSearch = debounce(async (value: string) => {\n try {\n this.isLoading = true\n const queryParams = {\n page: 1,\n sort_by: 'recent',\n search: value,\n fields: 'id,title,name,question',\n }\n if (this.selectedValue.contentType === 'feedpost') queryParams['exclude_linked'] = true\n const { data } = await fetchContent(this.selectedValue.contentType, queryParams)\n this.contentDataOptions = data.map((obj) => ({\n key: obj.id,\n value: obj.id,\n label: getFeedContentTitle(obj),\n contentType: this.selectedValue.contentType,\n }))\n } catch (err) {\n sharedAppStateStore.handleError(err)\n } finally {\n this.isLoading = false\n }\n }, 300)\n\n handleContentTypeSelected = (value: LearningContentType) => {\n if (this.selectedValue.contentType !== value) this.contentDataOptions = []\n this.selectedValue = {\n contentType: value,\n key: undefined,\n value: undefined,\n label: undefined,\n dueDateOffset: DEFAULT_DUE_DATE_OFFSET,\n }\n this.props.onChange(this.props.index, this.selectedValue)\n }\n\n handleAutocompleteFocus = () => {\n if (!this.contentDataOptions.length) this.handleSearch('')\n }\n\n handleAutocompleteSelect = (option: ContentDataOptionType) => {\n this.selectedValue = { ...option, dueDateOffset: this.selectedValue?.dueDateOffset }\n this.props.onChange(this.props.index, this.selectedValue)\n }\n\n handleDueDateChanged = (e: React.ChangeEvent) => {\n let dueDateOffset = Number(e.target.value)\n if (isNaN(dueDateOffset) || dueDateOffset === 0) dueDateOffset = undefined\n this.selectedValue = { ...this.selectedValue, dueDateOffset }\n this.props.onChange(this.props.index, this.selectedValue)\n }\n\n handleAutocompleteCleared = () => {\n this.selectedValue = { ...this.selectedValue, key: undefined, value: undefined, label: undefined }\n this.props.onChange(this.props.index, this.selectedValue)\n }\n\n render() {\n return (\n \n \n \n \n \n this.handleAutocompleteSelect(option)}\n onClear={this.handleAutocompleteCleared}\n value={this.selectedValue?.label}\n >\n \n \n \n \n Due\n \n \n \n \n \n )\n }\n}\n","import { Drawer, DrawerProps } from 'antd'\nimport React from 'react'\nimport { ChevronsRight } from 'react-feather'\nimport { useMediaQuery } from 'react-responsive'\nimport { FjText } from 'src/components/Common'\nimport { Colors } from 'src/constants/colors'\nimport { mobileQuery } from 'src/pages/public/common'\nimport styled from 'styled-components'\n\nconst FjStyledDrawer = styled(Drawer)`\n & .ant-drawer-content-wrapper {\n border-radius: 16px 0px 0px 16px;\n overflow: hidden;\n }\n`\n\nconst FjDrawer: React.FC> = ({\n children,\n ...props\n}) => {\n const isMobile = useMediaQuery(mobileQuery)\n return (\n \n {props.title}\n \n }\n headerStyle={{\n background: Colors.white,\n borderBottom: 'none',\n paddingTop: '24px',\n paddingInline: '32px',\n paddingBottom: '0px',\n }}\n bodyStyle={{ background: Colors.white, paddingInline: '32px', paddingTop: '16px', overflow: 'hidden' }}\n width={isMobile ? '100%' : 480}\n closeIcon={}\n >\n {children}\n \n )\n}\n\nexport default FjDrawer\n","import React, { Component } from 'react'\nimport { observer } from 'mobx-react'\nimport { computed, observable, makeObservable, IReactionDisposer, autorun } from 'mobx'\nimport { ContainerDiv } from 'src/components/Common/Cards'\nimport { DatePicker, Select } from 'antd'\nimport { SfOpportunity } from 'src/models/SfOpportunity'\nimport { User } from 'src/models/User'\nimport { FeedTag } from 'src/models/FeedTag'\nimport { LibraryCategory } from 'src/pages/Library'\nimport { sharedDataStore } from 'src/store/DataStore'\nimport { getQueryParam, getQueryParams } from 'src/utils/urlParams'\nimport moment from 'moment'\nimport { RouteComponentProps } from 'react-router-dom'\nimport { clearFalseyValues, titleCase } from 'src/utils/format'\nimport {\n contentTypeOptions,\n roleOptions,\n statusOptions,\n archiveStatusOptions,\n sharingPermissionOptions,\n templateFilterOptions,\n CustomMetadataFieldOptions,\n} from 'src/models/Config'\nimport { sharedAppStateStore } from 'src/store/AppStateStore'\nimport { FilterDropdownButton } from 'src/components/Common/Button'\nimport FjPopover, { FjPopoverContent } from 'src/components/Common/FjPopover'\nimport { LearningContentType, getContentCategoryTitle } from 'src/utils/content'\nimport { ViewSwitcher, ViewSwitcherProps } from 'src/components/Feed/ViewSwitcher'\nimport { FilterSelect } from 'src/components/Feed/FeedPostList'\nimport { Filter as FilterIcon } from 'react-feather'\nimport { Colors } from 'src/constants/colors'\nimport { HubFilter } from 'src/components/Common/Filter/AutoCompleteFilter'\nimport { debounce } from 'src/utils/debounce'\nimport { DEFAULT_SELECT_PAGE_SIZE } from 'src/constants/app'\n\nconst { RangePicker } = DatePicker\n\nexport type SortBy = 'recent' | 'popular' | 'alphabetical'\n\nexport interface AutoCompleteOption {\n key: string\n value: string\n id: string\n label: string\n}\n\nconst AUTOCOMPLETE_KEYS = ['tag', 'opportunity', 'author', 'manager', 'hub'] as const\nconst DATE_KEYS = ['fromDate', 'toDate', 'expiryFromDate', 'expiryToDate', 'closedFromDate', 'closedToDate'] as const\nconst SELECT_KEYS = [\n 'stagename',\n 'filetype',\n 'group',\n 'role',\n 'status',\n 'archiveStatus',\n 'sharingPermission',\n 'contentType',\n 'isTemplate',\n] as const\n\ntype AutoCompleteFilterKey = (typeof AUTOCOMPLETE_KEYS)[number]\ntype DateFilterKey = (typeof DATE_KEYS)[number]\ntype SelectFilterKey = (typeof SELECT_KEYS)[number]\nexport type FilterOptionKey = AutoCompleteFilterKey | SelectFilterKey | DateFilterKey\nexport type FilterKey = AutoCompleteFilterKey | SelectFilterKey | 'date' | 'expiryDate' | 'closedDate'\n\nexport interface Filter {\n key: FilterKey\n label: string\n}\n\ntype Filters = {\n [key in AutoCompleteFilterKey | SelectFilterKey]?: any[]\n} & {\n [key in DateFilterKey]?: moment.Moment\n}\n\ninterface FilterDropdownProps {\n contentTypeOptions: AutoCompleteOption[]\n filter: Filter\n selectedFilters: Filters\n addFilterOption: (key: FilterOptionKey, value: AutoCompleteOption | moment.Moment) => void\n removeFilterOption: (key: FilterOptionKey, filter?: AutoCompleteOption) => void\n clearFilter: (key: FilterKey) => void\n getCustomMetadataFieldOptions: (key: FilterKey) => AutoCompleteOption[]\n}\n\n@observer\nexport class FilterDropdown extends Component {\n @observable options: AutoCompleteOption[] = []\n @observable fromDate: moment.Moment = undefined\n @observable toDate: moment.Moment = undefined\n @observable expiryFromDate: moment.Moment = undefined\n @observable expiryToDate: moment.Moment = undefined\n @observable closedFromDate: moment.Moment = undefined\n @observable closedToDate: moment.Moment = undefined\n @observable dropdownOpen = false\n\n constructor(props: FilterDropdownProps) {\n super(props)\n makeObservable(this)\n }\n\n @computed get selectedOptions() {\n const selectedOptions: AutoCompleteOption[] = this.props.selectedFilters[this.props.filter.key] ?? []\n return selectedOptions\n }\n\n handleDateFilterChange = (dateRange: moment.Moment[]) => {\n const { addFilterOption } = this.props\n if (dateRange[0]) addFilterOption('fromDate', dateRange[0])\n if (dateRange[1]) addFilterOption('toDate', dateRange[1])\n\n if (dateRange[0] && dateRange[1]) {\n this.fromDate = undefined\n this.toDate = undefined\n this.dropdownOpen = false\n }\n }\n\n handleExpiryDateFilterChange = (dateRange: moment.Moment[]) => {\n const { addFilterOption } = this.props\n if (dateRange[0]) addFilterOption('expiryFromDate', dateRange[0])\n if (dateRange[1]) addFilterOption('expiryToDate', dateRange[1])\n\n if (dateRange[0] && dateRange[1]) {\n this.expiryFromDate = undefined\n this.expiryToDate = undefined\n this.dropdownOpen = false\n }\n }\n\n handleClosedDateFilterChange = (dateRange: moment.Moment[]) => {\n const { addFilterOption } = this.props\n if (dateRange[0]) addFilterOption('closedFromDate', dateRange[0])\n if (dateRange[1]) addFilterOption('closedToDate', dateRange[1])\n\n if (dateRange[0] && dateRange[1]) {\n this.closedFromDate = undefined\n this.closedToDate = undefined\n this.dropdownOpen = false\n }\n }\n\n populateAutoCompleteFilterOptions = async (key: AutoCompleteFilterKey, value: string) => {\n let data\n switch (key) {\n case 'tag':\n data = await FeedTag.list({ search: value, page_size: DEFAULT_SELECT_PAGE_SIZE })\n this.options = data.map((item: FeedTag) => ({ ...item, value: item.tag, label: item.tag }))\n break\n case 'opportunity':\n data = await SfOpportunity.list({ search: value, page_size: DEFAULT_SELECT_PAGE_SIZE })\n this.options = data.data.map((item: SfOpportunity) => ({ ...item, value: item.id, label: item.name }))\n break\n case 'author':\n data = await User.list({\n search: value,\n access_role: 'standard,admin,manager,partner',\n page_size: DEFAULT_SELECT_PAGE_SIZE,\n })\n this.options = data.data.map((item: User) => ({\n ...item,\n key: item.id,\n value: item.id,\n label: item.fullName,\n }))\n break\n case 'manager':\n data = await User.list({ search: value, has_reports: true, page_size: DEFAULT_SELECT_PAGE_SIZE })\n this.options = data.data.map((item: User) => ({\n ...item,\n key: item.id,\n value: item.id,\n label: item.fullName,\n }))\n break\n default:\n break\n }\n }\n\n handleDropdownClick = () => {\n this.dropdownOpen = !this.dropdownOpen\n const { key } = this.props.filter\n if (AUTOCOMPLETE_KEYS.includes(key as AutoCompleteFilterKey)) {\n this.populateAutoCompleteFilterOptions(key as AutoCompleteFilterKey, '')\n }\n }\n\n filterSearch = (key: AutoCompleteFilterKey, value: string) => {\n this.populateAutoCompleteFilterOptions(key, value)\n }\n\n filterOptions = (key: SelectFilterKey) => {\n const options: {\n [key in SelectFilterKey]: any\n } = {\n stagename: sharedDataStore.stageNameOptions,\n filetype: sharedDataStore.assetFileTypeOptions,\n group: sharedDataStore.groupOptions,\n role: roleOptions,\n status: statusOptions,\n archiveStatus: archiveStatusOptions,\n isTemplate: templateFilterOptions,\n sharingPermission: sharingPermissionOptions,\n contentType: this.props.contentTypeOptions,\n }\n return options[key] ?? []\n }\n\n createFilterDropdown = () => {\n const { key } = this.props.filter\n const { addFilterOption, removeFilterOption, getCustomMetadataFieldOptions } = this.props\n\n return (\n <>\n {AUTOCOMPLETE_KEYS.includes(key as AutoCompleteFilterKey) ? (\n this.filterSearch(key as AutoCompleteFilterKey, value)}\n addFilterOption={(option) => addFilterOption(key as AutoCompleteFilterKey, option)}\n removeFilterOption={(option) => removeFilterOption(key as AutoCompleteFilterKey, option)}\n />\n ) : SELECT_KEYS.includes(key as SelectFilterKey) ? (\n addFilterOption(key as SelectFilterKey, option)}\n removeFilterOption={(option) => removeFilterOption(key as SelectFilterKey, option)}\n />\n ) : key.includes('custom_fields') ? (\n addFilterOption(key as FilterOptionKey, option)}\n removeFilterOption={(option) => removeFilterOption(key as FilterOptionKey, option)}\n />\n ) : key.includes('date') ? (\n \n ) : key.includes('expiryDate') ? (\n \n ) : key.includes('closedDate') ? (\n \n ) : null}\n \n )\n }\n\n @computed get filterLabel() {\n const { filter, selectedFilters } = this.props\n\n let filterLabel = filter.label\n if (filter.key === 'date' && selectedFilters['fromDate'] && selectedFilters['toDate']) {\n filterLabel = `${filterLabel} | From ${selectedFilters['fromDate'].format('YYYY-MM-DD')} to ${selectedFilters[\n 'toDate'\n ].format('YYYY-MM-DD')}`\n } else if (filter.key === 'expiryDate' && selectedFilters['expiryFromDate'] && selectedFilters['expiryToDate']) {\n filterLabel = `${filterLabel} | From ${selectedFilters['expiryFromDate'].format(\n 'YYYY-MM-DD'\n )} to ${selectedFilters['expiryToDate'].format('YYYY-MM-DD')}`\n } else if (filter.key === 'closedDate' && selectedFilters['closedFromDate'] && selectedFilters['closedToDate']) {\n filterLabel = `${filterLabel} | From ${selectedFilters['closedFromDate'].format(\n 'YYYY-MM-DD'\n )} to ${selectedFilters['closedToDate'].format('YYYY-MM-DD')}`\n } else {\n if (!this.selectedOptions.length) return filterLabel\n filterLabel =\n this.selectedOptions.length > 2\n ? `${filterLabel} | ${this.selectedOptions[0].label}, ${this.selectedOptions[1].label}, + ${\n this.selectedOptions.length - 2\n } more`\n : `${filterLabel} | ${this.selectedOptions.map((filter) => filter.label).join(', ')}`\n }\n return filterLabel\n }\n\n @computed get isFilterSelected() {\n const { filter, selectedFilters } = this.props\n\n const isFilterSelected =\n this.selectedOptions.length > 0 ||\n (filter.key === 'date' && !!selectedFilters['fromDate'] && !!selectedFilters['toDate']) ||\n (filter.key === 'expiryDate' && !!selectedFilters['expiryFromDate'] && !!selectedFilters['expiryToDate']) ||\n (filter.key === 'closedDate' && !!selectedFilters['closedFromDate'] && !!selectedFilters['closedToDate'])\n return isFilterSelected\n }\n\n handleClearFilter = () => {\n const { clearFilter, filter } = this.props\n clearFilter(filter.key as FilterKey)\n }\n\n render() {\n return (\n (this.dropdownOpen = open)}\n >\n this.handleDropdownClick()}\n onClear={this.isFilterSelected ? this.handleClearFilter : undefined}\n />\n \n )\n }\n}\n\ntype FilterCategory = LibraryCategory | 'user' | 'template'\n\nexport interface FjFilterProps {\n showFilter?: boolean\n showSort?: boolean\n showViewSwitcher?: boolean\n excludeFilters?: FilterKey[]\n initialFilters?: Filters\n excludeSearchParams?: string[]\n category: FilterCategory\n handleSetSortBy?: (sortByKey: SortBy) => void\n sortBy?: SortBy\n onFiltersChange?: (params: any) => void\n overrideFilterContentTypes?: LearningContentType[]\n overrideCustomMetadataFieldOptions?: CustomMetadataFieldOptions\n overrideFilters?: { [key in LibraryCategory]?: Filter[] }\n viewSwitcherProps?: ViewSwitcherProps\n}\n\nconst notSortSupportedCategories: FilterCategory[] = ['top', 'managerPicks', 'favourites']\n\nexport const TAG_FILTER: Filter = { key: 'tag', label: 'Tags' }\nexport const getOpportunityFilter = (): Filter => ({\n key: 'opportunity',\n label: sharedDataStore.user.company.integratedCrmContentTitle(true),\n})\n\nexport const AUTHOR_FILTER: Filter = { key: 'author', label: 'Author' }\nexport const OWNER_FILTER: Filter = { key: 'author', label: 'Owner' }\nexport const MANAGER_FILTER: Filter = { key: 'manager', label: 'Manager' }\nexport const DATE_FILTER: Filter = { key: 'date', label: 'Date' }\nexport const UPLOAD_DATE_FILTER: Filter = { key: 'date', label: 'Upload Date' }\nexport const CREATED_DATE_FILTER: Filter = { key: 'date', label: 'Created Date' }\nexport const CLOSED_DATE_FILTER: Filter = { key: 'closedDate', label: 'Closed Date' }\nexport const EXPIRY_DATE_FILTER: Filter = { key: 'expiryDate', label: 'Expiration' }\nexport const STAGE_FILTER: Filter = { key: 'stagename', label: 'Stage' }\nexport const FILETYPE_FILTER: Filter = { key: 'filetype', label: 'File type' }\nexport const GROUP_FILTER: Filter = { key: 'group', label: 'Group' }\nexport const ROLE_FILTER: Filter = { key: 'role', label: 'Role' }\nexport const STATUS_FILTER: Filter = { key: 'status', label: 'Status' }\nexport const CONTENT_TYPE_FILTER: Filter = { key: 'contentType', label: 'Content Type' }\nexport const ARCHIVE_STATUS_FILTER: Filter = { key: 'archiveStatus', label: 'Archive' }\nexport const TEMPLATE_FILTER: Filter = { key: 'isTemplate', label: 'Template' }\nexport const SHARING_PERMISSION_FILTER: Filter = { key: 'sharingPermission', label: 'Access' }\nexport const HUB_FILTER: Filter = { key: 'hub', label: 'Hub' }\n\nconst DEFAULT_FILTERS: Filters = {\n tag: [],\n opportunity: [],\n author: [],\n manager: [],\n stagename: [],\n group: [],\n filetype: [],\n fromDate: undefined,\n toDate: undefined,\n expiryFromDate: undefined,\n expiryToDate: undefined,\n closedFromDate: undefined,\n closedToDate: undefined,\n role: [],\n status: [],\n contentType: [],\n archiveStatus: [],\n isTemplate: [],\n sharingPermission: [],\n}\n\n@observer\nexport class FjFilter extends Component & FjFilterProps> {\n static defaultProps: Partial = {\n showSort: true,\n showFilter: true,\n showViewSwitcher: true,\n excludeSearchParams: [],\n }\n abortController: AbortController\n @observable selectedFilters: Filters = DEFAULT_FILTERS\n @observable selectedFilterParams: object = {}\n disposer: IReactionDisposer\n\n constructor(props: RouteComponentProps<{}> & FjFilterProps) {\n super(props)\n makeObservable(this)\n }\n\n @computed get customMetadataFieldFilterKeys() {\n const { overrideCustomMetadataFieldOptions } = this.props\n return sharedDataStore.customMetadataFieldNames\n .filter((key) => {\n if (!overrideCustomMetadataFieldOptions) return true\n // Display only the filters that have custom metadata field options; if there are no options, we hide the filter.\n if (Object.keys(overrideCustomMetadataFieldOptions[key] ?? {}).length > 0) return true\n return false\n })\n .map((key) => `custom_fields__${key}`)\n }\n\n @computed get customMetadataFieldFilters() {\n return this.customMetadataFieldFilterKeys.map((key) => ({\n key: key,\n label: titleCase(key.replace('custom_fields__', ''), '_'),\n }))\n }\n\n @computed get filters() {\n const shouldIncludeOppFilter =\n sharedDataStore.user.company.hasIntegratedCrmOrganization() && !sharedDataStore.user.isFaasPublicOrPartner()\n const isPartOfManyGroups = sharedDataStore.user.isPartOfManyGroups()\n const isAdminUser = sharedDataStore.user.isFaasAdmin()\n const isPublicUser = sharedDataStore.user.isFaasPublic()\n\n const filters = {\n top: [\n TAG_FILTER,\n shouldIncludeOppFilter ? getOpportunityFilter() : null,\n !isPublicUser ? AUTHOR_FILTER : null,\n !isPublicUser ? DATE_FILTER : null,\n ].filter(Boolean),\n managerPicks: [],\n favourites: [],\n fullsearch: [\n HUB_FILTER,\n CONTENT_TYPE_FILTER,\n TAG_FILTER,\n !isPublicUser ? AUTHOR_FILTER : null,\n shouldIncludeOppFilter ? getOpportunityFilter() : null,\n shouldIncludeOppFilter ? STAGE_FILTER : null,\n !isPublicUser ? DATE_FILTER : null,\n isPartOfManyGroups ? GROUP_FILTER : null,\n ...this.customMetadataFieldFilters,\n isAdminUser ? ARCHIVE_STATUS_FILTER : null,\n isAdminUser ? EXPIRY_DATE_FILTER : null,\n ].filter(Boolean),\n aisearch: [\n CONTENT_TYPE_FILTER,\n TAG_FILTER,\n !isPublicUser ? AUTHOR_FILTER : null,\n shouldIncludeOppFilter ? getOpportunityFilter() : null,\n shouldIncludeOppFilter ? STAGE_FILTER : null,\n !isPublicUser ? DATE_FILTER : null,\n isPartOfManyGroups ? GROUP_FILTER : null,\n ...this.customMetadataFieldFilters,\n isAdminUser ? ARCHIVE_STATUS_FILTER : null,\n isAdminUser ? EXPIRY_DATE_FILTER : null,\n ].filter(Boolean),\n feedpost: [\n HUB_FILTER,\n TAG_FILTER,\n shouldIncludeOppFilter ? getOpportunityFilter() : null,\n shouldIncludeOppFilter ? STAGE_FILTER : null,\n isPartOfManyGroups ? GROUP_FILTER : null,\n !isPublicUser ? AUTHOR_FILTER : null,\n !isPublicUser ? DATE_FILTER : null,\n ].filter(Boolean),\n playlist: [\n HUB_FILTER,\n TAG_FILTER,\n shouldIncludeOppFilter ? getOpportunityFilter() : null,\n shouldIncludeOppFilter ? STAGE_FILTER : null,\n isPartOfManyGroups ? GROUP_FILTER : null,\n !isPublicUser ? AUTHOR_FILTER : null,\n !isPublicUser ? DATE_FILTER : null,\n ...this.customMetadataFieldFilters,\n ].filter(Boolean),\n prompt: [\n HUB_FILTER,\n TAG_FILTER,\n isPartOfManyGroups ? GROUP_FILTER : null,\n !isPublicUser ? AUTHOR_FILTER : null,\n !isPublicUser ? DATE_FILTER : null,\n ].filter(Boolean),\n course: [\n ...(this.props.overrideFilters?.course ?? [\n HUB_FILTER,\n TAG_FILTER,\n shouldIncludeOppFilter ? getOpportunityFilter() : null,\n shouldIncludeOppFilter ? STAGE_FILTER : null,\n isPartOfManyGroups ? GROUP_FILTER : null,\n !isPublicUser ? AUTHOR_FILTER : null,\n !isPublicUser ? DATE_FILTER : null,\n ]),\n ...this.customMetadataFieldFilters,\n ].filter(Boolean),\n learningpath: [\n ...(this.props.overrideFilters?.learningpath ?? [\n HUB_FILTER,\n TAG_FILTER,\n shouldIncludeOppFilter ? getOpportunityFilter() : null,\n shouldIncludeOppFilter ? STAGE_FILTER : null,\n isPartOfManyGroups ? GROUP_FILTER : null,\n !isPublicUser ? AUTHOR_FILTER : null,\n !isPublicUser ? DATE_FILTER : null,\n ]),\n ...this.customMetadataFieldFilters,\n ].filter(Boolean),\n opportunity: [\n OWNER_FILTER,\n STAGE_FILTER,\n !isPublicUser ? CREATED_DATE_FILTER : null,\n !isPublicUser ? CLOSED_DATE_FILTER : null,\n ],\n call: [\n HUB_FILTER,\n OWNER_FILTER,\n shouldIncludeOppFilter ? getOpportunityFilter() : null,\n shouldIncludeOppFilter ? STAGE_FILTER : null,\n !isPublicUser ? DATE_FILTER : null,\n ].filter(Boolean),\n asset: [\n HUB_FILTER,\n FILETYPE_FILTER,\n shouldIncludeOppFilter ? getOpportunityFilter() : null,\n shouldIncludeOppFilter ? STAGE_FILTER : null,\n TAG_FILTER,\n isPartOfManyGroups ? GROUP_FILTER : null,\n AUTHOR_FILTER,\n UPLOAD_DATE_FILTER,\n SHARING_PERMISSION_FILTER,\n !isPublicUser ? TEMPLATE_FILTER : null,\n ...this.customMetadataFieldFilters,\n ].filter(Boolean),\n hub: [],\n user: [ROLE_FILTER, STATUS_FILTER, GROUP_FILTER, MANAGER_FILTER],\n dealroom: [\n HUB_FILTER,\n shouldIncludeOppFilter ? getOpportunityFilter() : null,\n shouldIncludeOppFilter ? STAGE_FILTER : null,\n isPartOfManyGroups ? GROUP_FILTER : null,\n !isPublicUser ? AUTHOR_FILTER : null,\n !isPublicUser ? DATE_FILTER : null,\n !isPublicUser ? TEMPLATE_FILTER : null,\n ].filter(Boolean),\n template: [CONTENT_TYPE_FILTER],\n }\n\n if (sharedDataStore.user.isFaasAdmin()) {\n filters.feedpost.push(ARCHIVE_STATUS_FILTER, EXPIRY_DATE_FILTER)\n filters.asset.push(ARCHIVE_STATUS_FILTER, EXPIRY_DATE_FILTER)\n filters.playlist.push(ARCHIVE_STATUS_FILTER, EXPIRY_DATE_FILTER)\n filters.course.push(ARCHIVE_STATUS_FILTER, EXPIRY_DATE_FILTER)\n filters.learningpath.push(ARCHIVE_STATUS_FILTER, EXPIRY_DATE_FILTER)\n filters.prompt.push(ARCHIVE_STATUS_FILTER, EXPIRY_DATE_FILTER)\n filters.dealroom.push(ARCHIVE_STATUS_FILTER, EXPIRY_DATE_FILTER)\n }\n return filters\n }\n\n @computed get filtersLength() {\n return Object.keys(this.selectedFilters)\n .map((key) =>\n AUTOCOMPLETE_KEYS.includes(key as AutoCompleteFilterKey) ||\n SELECT_KEYS.includes(key as SelectFilterKey) ||\n key.includes('custom_fields')\n ? this.selectedFilters[key].length\n : Number(!!this.selectedFilters[key])\n )\n .reduce((a, b) => a + b)\n }\n\n @computed get contentTypeFilterOptions() {\n const { overrideFilterContentTypes } = this.props\n if (overrideFilterContentTypes) {\n return overrideFilterContentTypes.map((item) => ({\n label: getContentCategoryTitle(item).slice(0, -1),\n value: item,\n id: item,\n key: item,\n }))\n }\n return contentTypeOptions\n }\n componentDidMount = async () => {\n this.initializeSelectedFiltersFromURL()\n this.disposer = autorun(() => {\n if (sharedDataStore.config.learningContentCustomFields) {\n this.initializeSelectedFiltersFromURL()\n }\n })\n }\n\n componentDidUpdate(prevProps: Readonly & FjFilterProps>): void {\n const { category } = this.props\n if (prevProps.category !== category) {\n this.selectedFilters = DEFAULT_FILTERS\n }\n if (this.props.location.search !== prevProps.location.search) {\n this.selectedFilterParams = {}\n this.initializeSelectedFiltersFromURL()\n }\n }\n\n componentWillUnmount(): void {\n this.disposer?.()\n }\n\n getCustomMetadataFieldOptions = (key: string) => {\n key = key.replace('custom_fields__', '')\n const customFields =\n this.props.overrideCustomMetadataFieldOptions ?? sharedDataStore.config?.learningContentCustomFields\n return (customFields[key] ?? []).map((val) => ({\n key: val,\n id: val,\n value: val,\n label: val,\n }))\n }\n\n initializeSelectedFiltersFromURL = async () => {\n try {\n const {\n author_id,\n manager,\n opp_id,\n tag,\n stage_name,\n file_type,\n created_at_after,\n created_at_before,\n expiry_date_before,\n expiry_date_after,\n closed_date_before,\n closed_date_after,\n group,\n archive_status,\n is_internal,\n content_type,\n is_template,\n ...restParams\n } = getQueryParams(this.props.excludeSearchParams)\n this.abortController?.abort()\n this.abortController = new AbortController()\n this.selectedFilters = {\n author: author_id\n ? await (\n await Promise.all(\n author_id.split(',').map((id) => User.get(id, undefined, undefined, undefined, this.abortController))\n )\n ).map((user: User) => {\n return { ...user, label: user.fullName }\n })\n : [],\n manager: manager\n ? await (\n await Promise.all(\n manager.split(',').map((id) => User.get(id, undefined, undefined, undefined, this.abortController))\n )\n ).map((user: User) => {\n return { ...user, label: user.fullName }\n })\n : [],\n opportunity: opp_id\n ? await (\n await Promise.all(\n opp_id\n .split(',')\n .map((o) => SfOpportunity.get(o, undefined, undefined, undefined, this.abortController))\n )\n ).map((opp: SfOpportunity) => {\n return { ...opp, label: opp.title }\n })\n : [],\n tag: tag\n ? await (\n await Promise.all(\n tag.split(',').map((t) => FeedTag.get(t, undefined, undefined, undefined, this.abortController))\n )\n )?.map((feedTag: FeedTag) => {\n return { ...feedTag, label: feedTag.tag }\n })\n : [],\n stagename: stage_name\n ? stage_name\n .split(',')\n .map((s) => sharedDataStore.stageNameOptions.find((option) => option.value === s))\n .filter(Boolean)\n : [],\n group: group\n ? group\n .split(',')\n .map((s) => sharedDataStore.groupOptions.find((option) => option.value === s))\n .filter(Boolean)\n : [],\n filetype: file_type\n ? file_type\n .split(',')\n .map((f) => sharedDataStore.assetFileTypeOptions.find((option) => option.value === f))\n .filter(Boolean)\n : [],\n fromDate: created_at_after && moment(created_at_after).isValid() ? moment(created_at_after) : undefined,\n toDate: created_at_before && moment(created_at_before).isValid() ? moment(created_at_before) : undefined,\n expiryFromDate:\n expiry_date_after && moment(expiry_date_after).isValid() ? moment(expiry_date_after) : undefined,\n expiryToDate:\n expiry_date_before && moment(expiry_date_before).isValid() ? moment(expiry_date_before) : undefined,\n closedFromDate:\n closed_date_after && moment(closed_date_after).isValid() ? moment(closed_date_after) : undefined,\n closedToDate:\n closed_date_before && moment(closed_date_before).isValid() ? moment(closed_date_before) : undefined,\n // This needs to revisite later, because when url changes, it always reset with initialFitlers['role'] and initialFitlers['status'].\n // It doesn't cause issue now because role and status filters are only used in Team page and we don't update the url there.\n // Story ID - #186923061\n role: this.props.initialFilters?.['role'] ?? [],\n status: this.props.initialFilters?.['status'] ?? [],\n contentType: content_type\n ? content_type\n .split(',')\n .map((s) => this.contentTypeFilterOptions.find((option) => option.value === s))\n .filter(Boolean)\n : [],\n archiveStatus: archive_status\n ? archive_status\n .split(',')\n .map((f) => archiveStatusOptions.find((option) => option.value === f))\n .filter(Boolean)\n : [],\n isTemplate: is_template\n ? is_template\n .split(',')\n .map((f) => templateFilterOptions.find((option) => option.value === f))\n .filter(Boolean)\n : [],\n sharingPermission: is_internal\n ? is_internal\n .split(',')\n .map((f) => sharingPermissionOptions.find((option) => option.value === f))\n .filter(Boolean)\n : [],\n }\n for (const key of Object.keys(restParams)) {\n this.selectedFilters[key] = restParams[key]\n .split(',')\n .map((value) => this.getCustomMetadataFieldOptions(key).find((option) => option.value === value))\n .filter(Boolean)\n }\n } catch (err) {\n sharedAppStateStore.handleError(err)\n }\n }\n\n onFilterChange = debounce((param: object) => {\n for (const [key, value] of Object.entries(param)) {\n this.selectedFilterParams[key] = value\n }\n this.props.onFiltersChange(clearFalseyValues({ ...this.getFilterQueryParams(), ...param }))\n }, 500)\n\n addFilterOption = (key: FilterOptionKey, value: any) => {\n const { onFiltersChange } = this.props\n if (\n AUTOCOMPLETE_KEYS.includes(key as AutoCompleteFilterKey) ||\n SELECT_KEYS.includes(key as SelectFilterKey) ||\n key.includes('custom_fields')\n ) {\n const filterKey = key as AutoCompleteFilterKey | SelectFilterKey\n // Reset selectedFilters as it doesn't have default value for Custom Fields.\n if (!this.selectedFilters[filterKey]) this.selectedFilters[filterKey] = []\n\n if (this.selectedFilters[filterKey].findIndex((f) => f.id === value.id) !== -1) return\n this.selectedFilters[filterKey].push(value)\n } else if (DATE_KEYS.includes(key as DateFilterKey)) {\n const dateFilterKey = key\n this.selectedFilters[dateFilterKey] = value\n }\n onFiltersChange(this.getFilterQueryParams())\n }\n\n removeFilterOption = (key: FilterOptionKey, value?: any) => {\n const { onFiltersChange } = this.props\n if (\n AUTOCOMPLETE_KEYS.includes(key as AutoCompleteFilterKey) ||\n SELECT_KEYS.includes(key as SelectFilterKey) ||\n key.includes('custom_fields')\n ) {\n const filterKey = key as AutoCompleteFilterKey | SelectFilterKey\n this.selectedFilters[filterKey] = this.selectedFilters[filterKey].filter((f) => f.id !== value.id)\n } else {\n const dateFilterKey = key\n this.selectedFilters[dateFilterKey] = undefined\n }\n onFiltersChange(this.getFilterQueryParams())\n }\n\n clearFilter = (key: FilterKey) => {\n const { onFiltersChange } = this.props\n if (\n AUTOCOMPLETE_KEYS.includes(key as AutoCompleteFilterKey) ||\n SELECT_KEYS.includes(key as SelectFilterKey) ||\n key.includes('custom_fields')\n ) {\n const filterKey = key as AutoCompleteFilterKey | SelectFilterKey\n this.selectedFilters[filterKey] = []\n } else {\n if (key === 'date') {\n this.selectedFilters['fromDate'] = undefined\n this.selectedFilters['toDate'] = undefined\n } else if (key === 'expiryDate') {\n this.selectedFilters['expiryFromDate'] = undefined\n this.selectedFilters['expiryToDate'] = undefined\n } else if (key === 'closedDate') {\n this.selectedFilters['closedFromDate'] = undefined\n this.selectedFilters['closedToDate'] = undefined\n }\n }\n onFiltersChange(this.getFilterQueryParams())\n }\n\n getFilterQueryParams = () => {\n let filterQueryParams = {\n author_id: this.selectedFilters['author'].length\n ? this.selectedFilters['author'].map((e: User) => e.id).join(',')\n : null,\n manager: this.selectedFilters['manager'].length\n ? this.selectedFilters['manager'].map((e: User) => e.id).join(',')\n : null,\n opp_id: this.selectedFilters['opportunity'].length\n ? this.selectedFilters['opportunity'].map((e: SfOpportunity) => e.id).join(',')\n : null,\n tag: this.selectedFilters['tag'].length ? this.selectedFilters['tag'].map((e: FeedTag) => e.tag).join(',') : null,\n stage_name: this.selectedFilters['stagename'].length\n ? this.selectedFilters['stagename'].map((e: { value: string }) => e.value).join(',')\n : null,\n group: this.selectedFilters['group'].length\n ? this.selectedFilters['group'].map((e: { value: string }) => e.value).join(',')\n : null,\n file_type: this.selectedFilters['filetype'].length\n ? this.selectedFilters['filetype'].map((e: { value: string }) => e.value).join(',')\n : null,\n created_at_after: this.selectedFilters['fromDate'] ? this.selectedFilters['fromDate'].toISOString() : null,\n created_at_before: this.selectedFilters['toDate'] ? this.selectedFilters['toDate'].toISOString() : null,\n expiry_date_before: this.selectedFilters['expiryToDate']\n ? this.selectedFilters['expiryToDate'].toISOString()\n : null,\n expiry_date_after: this.selectedFilters['expiryFromDate']\n ? this.selectedFilters['expiryFromDate'].toISOString()\n : null,\n closed_date_before: this.selectedFilters['closedToDate']\n ? this.selectedFilters['closedToDate'].toISOString()\n : null,\n closed_date_after: this.selectedFilters['closedFromDate']\n ? this.selectedFilters['closedFromDate'].toISOString()\n : null,\n access_role: this.selectedFilters['role'].length\n ? this.selectedFilters['role'].map((e: { value: string }) => e.value).join(',')\n : null,\n status: this.selectedFilters['status'].length\n ? this.selectedFilters['status'].map((e: { value: string }) => e.value).join(',')\n : null,\n content_type: this.selectedFilters['contentType'].length\n ? this.selectedFilters['contentType'].map((e: { value: string }) => e.value).join(',')\n : null,\n archive_status: this.selectedFilters['archiveStatus'].length\n ? this.selectedFilters['archiveStatus'].map((e: { value: string }) => e.value).join(',')\n : null,\n is_template: this.selectedFilters['isTemplate'].length\n ? this.selectedFilters['isTemplate'].map((e: { value: string }) => e.value).join(',')\n : null,\n is_internal: this.selectedFilters['sharingPermission'].length\n ? this.selectedFilters['sharingPermission'].map((e: { value: string }) => e.value).join(',')\n : null,\n hub_id: getQueryParam('hub_id') || this.selectedFilterParams['hub_id'],\n }\n this.customMetadataFieldFilterKeys.map((key) => {\n if (this.selectedFilters[key]?.length) {\n filterQueryParams[key] = this.selectedFilters[key].map(({ value }) => value).join(',')\n }\n return null\n })\n\n for (const key in filterQueryParams) {\n if (filterQueryParams[key] === null) {\n delete filterQueryParams[key]\n }\n }\n\n return filterQueryParams\n }\n\n sortOptions = () =>\n new Map([\n ['recent', 'Most Recent'],\n ['popular', 'Most Popular'],\n ['alphabetical', 'A-Z'],\n ])\n\n render() {\n const { category, handleSetSortBy, sortBy, showSort, showViewSwitcher } = this.props\n const categoryFilters = this.filters[category].filter((item) => !this.props.excludeFilters?.includes(item.key))\n const showFilter =\n (categoryFilters.length > 0 || !notSortSupportedCategories.includes(category)) && this.props.showFilter\n\n return (\n \n {showFilter ? (\n \n {categoryFilters.map((filter) => {\n return filter.key === 'hub' ? (\n \n ) : (\n \n )\n })}\n \n ) : (\n
\n )}\n \n \n {showSort ? (\n \n {!notSortSupportedCategories.includes(category) && (\n }\n >\n {Array.from(this.sortOptions()).map(([key, value]) => (\n \n {value}\n \n ))}\n \n )}\n \n ) : null}\n {showViewSwitcher ? (\n
\n \n
\n ) : null}\n
\n
\n \n )\n }\n}\n","import React, { Component, useMemo } from 'react'\nimport { observable, makeObservable } from 'mobx'\nimport { observer } from 'mobx-react'\nimport styled from 'styled-components'\nimport { AutoComplete, AutoCompleteProps, Col, ColProps, Row, Tooltip, Upload } from 'antd'\nimport { UploadProps as $UploadProps } from 'antd/lib/upload'\nimport ImgCrop from 'antd-img-crop'\nimport { Field, FieldProps } from 'formik'\nimport { Form, Input, Select, Radio, Checkbox, DatePicker, AutoComplete as FormikAutoComplete } from 'formik-antd'\nimport { FormikFieldProps } from 'formik-antd/src/FieldProps'\nimport { DatePickerProps as $DatePickerProps } from 'antd/lib/date-picker'\nimport { RadioProps } from 'antd/lib/radio'\nimport { FormItemProps } from 'formik-antd/lib/form-item'\nimport { RadioGroupProps } from 'formik-antd/lib/radio'\nimport { InputProps, TextAreaProps } from 'formik-antd/lib/input'\nimport { SelectProps } from 'formik-antd/lib/select'\nimport { CheckboxProps, CheckboxGroupProps } from 'formik-antd/lib/checkbox'\nimport { FjText, Loader } from 'src/components/Common'\nimport { FontWeight, TextSize } from 'src/components/Common/Styles'\nimport { Colors } from 'src/constants/colors'\nimport { ContainerDiv } from 'src/components/Common'\nimport { X, Check, Info, ChevronDown, Trash } from 'react-feather'\nimport { uploadToS3 } from 'src/utils/S3Upload'\nimport { sharedAppStateStore } from 'src/store/AppStateStore'\n\nconst { Option } = Select\n\ninterface FJStyledInputProps extends InputProps {\n backgroundColor?: string\n fontSize?: string\n}\n\nexport const FJStyledInput = styled(\n React.forwardRef(({ type, backgroundColor, fontSize, ...rest }, ref) => {\n if (type === 'password') return \n return \n })\n)`\n text-align: left;\n color: ${Colors.outerSpace};\n border: solid 1px ${({ style }) => style?.borderColor || Colors.sharkOpacity12} !important;\n box-shadow: none !important;\n background-color: ${(props) => props.backgroundColor || Colors.white} !important;\n border-radius: 8px !important;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n line-height: 22px;\n letter-spacing: 0.28px;\n height: ${(props) => (props.size === 'small' ? '26px' : '38px')};\n outline: none;\n :focus {\n border: solid 1px ${Colors.cornflowerBlue} !important;\n }\n :placeholder {\n font-size: ${(props) => props.fontSize || '14px'} !important;\n }\n :disabled {\n color: ${Colors.cottonSeed} !important;\n }\n`\n\nexport const FJStyledAutoComplete = styled(FormikAutoComplete)`\n .ant-select-selection-placeholder {\n height: 38px;\n line-height: 38px !important;\n }\n`\n\nconst FJStyledSelect = styled(Select)`\n .ant-select-selector {\n padding: 4px 10px !important;\n border-radius: 10px !important;\n font-size: 14px;\n height: 38px !important;\n }\n\n &.ant-select-single:not(.ant-select-customize-input) .ant-select-selector {\n background-color: ${(props) => props.style?.backgroundColor ?? Colors.white};\n }\n`\n\nconst FJStyledOption = styled(Option)`\n .ant-select-item-option {\n color: ${Colors.white};\n background-color: ${Colors.outerSpace};\n }\n`\n\nconst LeftRoundedStyledInput = styled(FJStyledInput)`\n height: 55px;\n width: 70%;\n border: 2px solid ${Colors.neonCarrot};\n border-radius: 5px 0 0 5px;\n`\n\nexport const FJStyledTextArea = styled(Input.TextArea)`\n text-align: left;\n border-radius: 8px !important;\n font-family: 'Satoshi', sans-serif;\n font-size: 14px;\n min-height: 38px;\n outline: none;\n :placeholder {\n font-size: 14px;\n }\n :disabled {\n color: ${Colors.rollingStone} !important;\n }\n`\n\ninterface FjFormItemProps extends FormItemProps {\n fieldtitle?: string | JSX.Element\n subtitle?: string\n tiptitle?: string\n titlecolor?: string\n tipIcon?: JSX.Element\n}\n\nexport const FjFormItem: React.FC = ({ fieldtitle, subtitle, tiptitle, style, tipIcon, ...props }) => {\n return (\n \n {(fieldtitle || subtitle) && (\n
\n \n \n {fieldtitle}\n \n {tiptitle && (\n \n {tipIcon || }\n \n )}\n \n {!!subtitle && (\n \n {subtitle}\n \n )}\n
\n )}\n {props.children}\n
\n )\n}\n\nexport const SmallFormItem: React.FC = ({ style, ...props }) => (\n \n)\n\n// FjMemoFormItem is for preventing re-render when update form field outside of form\n// React renders the FjFormItem and memoizes the result. Before the next render, if the new props are the same,\n// React reuses the memoized result skipping the next rendering\nexport const FjMemoFormItem = React.memo(FjFormItem)\n\ninterface IFJInputProps extends InputProps {\n trimValue?: boolean\n backgroundColor?: string\n fontSize?: string\n}\n\nexport const FjInput: React.FC = ({ trimValue, backgroundColor, fontSize, ...props }) => {\n return (\n \n {(fieldProps) => {\n const { touched, error } = fieldProps.meta\n return (\n {\n if (trimValue && e.target.value) fieldProps.form.setFieldValue(props.name, e.target.value.trim())\n }}\n backgroundColor={backgroundColor}\n fontSize={fontSize}\n status={touched && error ? 'error' : undefined}\n {...props}\n />\n )\n }}\n \n )\n}\n\ninterface FjSelectProps extends SelectProps {\n optionsMap?: Map\n}\n\nexport const FjSelect: React.FC = ({ children, optionsMap, style, ...props }) => {\n return (\n }>\n {optionsMap\n ? Array.from(optionsMap, ([key, value]) => (\n \n {value}\n \n ))\n : children}\n \n )\n}\n\ninterface ILeftRoundedInputProps extends InputProps {\n outlineColor?: string\n}\n\nexport const LeftRoundedInput: React.FC = ({ outlineColor, ...props }) => {\n const color = outlineColor || Colors.neonCarrot\n return (\n \n )\n}\n\nexport const FjTextArea: React.FC = (props) => {\n return \n}\n\ninterface FjRadioGroupProps extends RadioGroupProps {\n optionsMap?: Map\n}\nexport const FjRadioGroup: React.FC = ({ optionsMap, children, ...props }) => {\n return (\n \n {optionsMap\n ? Array.from(optionsMap, ([key, value]) => (\n \n {value}\n \n ))\n : children}\n \n )\n}\n\nconst FjStyledRadio = styled(Radio)`\n display: flex;\n height: 100%;\n & .ant-radio-inner::after {\n width: 24px;\n height: 24px;\n margin-top: -12px;\n margin-left: -12px;\n }\n\n & .ant-radio-checked .ant-radio-inner {\n width: 18px;\n height: 18px;\n }\n`\n\nconst FjCheckRadio = styled(FjStyledRadio)`\n & .ant-radio-inner::after {\n background-color: ${Colors.apple}!important;\n }\n\n & .ant-radio-checked .ant-radio-inner {\n border-color: ${Colors.apple}!important;\n }\n`\n\nconst FjXRadio = styled(FjStyledRadio)`\n & .ant-radio-inner::after {\n background-color: ${Colors.scarlet}!important;\n }\n\n & .ant-radio-checked .ant-radio-inner {\n border-color: ${Colors.scarlet}!important;\n }\n`\n\ninterface FjRadioProps extends RadioProps {\n radioType?: 'default' | 'green' | 'red'\n}\n\nexport const FjRadio: React.FC = ({ radioType = 'default', ...props }) => {\n /**\n * TODO:\n * primary should be renamed or made default --\n * It is not now because FjStyledRadio defaults to display: block instead of inline-block when built for production.\n * This is not the behaviour we want\n */\n if (radioType === 'green') return \n if (radioType === 'red') return \n else return \n}\n\nexport const FjRadioButton: React.FC = (props) => {\n return \n}\n\nexport const FjBooleanRadioGroup: React.FC = (props: RadioGroupProps) => {\n return (\n \n \n Yes\n \n \n No\n \n \n )\n}\n\nconst FjCheckRadioButton = styled(Radio.Button)`\n &.ant-radio-button-wrapper {\n border-radius: 5px !important;\n height: 36px !important;\n width: 36px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n background: ${Colors.hawkesBlue} !important;\n }\n &.ant-radio-button-wrapper-checked {\n background: ${Colors.emerald}!important;\n }\n\n .ant-radio-button-wrapper-disabled {\n background: ${Colors.hawkesBlue}!important;\n }\n`\n\nconst FjXRadioButton = styled(Radio.Button)`\n &.ant-radio-button-wrapper {\n border-radius: 5px !important;\n height: 36px !important;\n width: 36px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n background: ${Colors.hawkesBlue};\n }\n &.ant-radio-button-wrapper-checked {\n background: ${Colors.sunsetOrange}!important;\n }\n\n .ant-radio-button-wrapper-disabled {\n background: ${Colors.hawkesBlue}!important;\n }\n`\n\n// RadioButtonGroup for lxp binary question type score selection\nexport const FjBinaryRadioGroup: React.FC = (props: RadioGroupProps) => {\n return (\n \n \n \n \n \n \n \n \n )\n}\n\nconst FjSenaryRadioButton = styled(Radio.Button)`\n &.ant-radio-button-wrapper {\n background: ${Colors.hawkesBlue};\n border: 1px solid ${Colors.hawkesBlue}!important;\n font-weight: ${FontWeight.semiBold}!important;\n font-size: ${TextSize.small}!important;\n border-radius: 5px;\n }\n\n &.ant-radio-button-wrapper-checked {\n background: ${Colors.chambray}!important;\n color: white !important;\n }\n\n &.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {\n background-color: ${Colors.hawkesBlue}!important;\n color: ${Colors.cornflowerBlue}!important;\n }\n`\n\nexport const FjSenaryRadioGroup: React.FC = (props: RadioGroupProps) => {\n return (\n \n {Array(6)\n .fill(0)\n .map((val, index) => (\n \n {index}\n \n ))}\n \n )\n}\n\ntype FjStyledCheckboxProps = {\n size?: 'small' | 'large'\n color?: string\n backgroundColor?: string\n borderColor?: string\n alignItems?: 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch'\n}\n\nconst FjStyledCheckbox = styled(\n ({ size, color, backgroundColor, borderColor, ...props }: CheckboxProps & FjStyledCheckboxProps) => (\n \n )\n)`\n align-items: ${(props) => props.alignItems || 'baseline'} !important;\n span:nth-child(2) {\n font-size: ${(props) => (props.size === 'small' ? '12px' : '14px')};\n font-weight: 500;\n color: ${Colors.shark};\n }\n height: 100%;\n .ant-checkbox-inner {\n border-radius: 3px;\n width: ${(props) => (props.size === 'small' ? '14px' : '18px')};\n height: ${(props) => (props.size === 'small' ? '14px' : '18px')};\n }\n .ant-checkbox-inner:hover {\n border-color: ${(props) => props.borderColor ?? 'inherit'}!important;\n }\n ${(props) =>\n !props.indeterminate\n ? `.ant-checkbox-inner::after {\n height: ${(props) => (props.size === 'small' ? '9.5px' : '11.5px')};\n width: ${(props) => (props.size === 'small' ? '6px' : '7.5px')};\n top: ${(props) => (props.size === 'small' ? '40.5%' : '42.5%')};\n left: ${(props) => (props.size === 'small' ? '20.5%' : '21.5%')};\n }`\n : ''}\n\n .ant-checkbox-checked .ant-checkbox-inner {\n background-color: ${(props) => props.backgroundColor};\n border-color: ${(props) => props.borderColor};\n }\n\n .ant-checkbox-checked::after {\n border-color: ${(props) => props.borderColor};\n }\n\n & .ant-checkbox-wrapper:hover .ant-checkbox-inner,\n .ant-checkbox:hover .ant-checkbox-inner,\n .ant-checkbox-input:focus + .ant-checkbox-inner {\n border-color: ${(props) => props.borderColor};\n }\n`\n\nexport interface FjCheckboxProps extends CheckboxProps {\n checkboxType?: 'green' | 'red' | 'default'\n size?: 'small' | 'large'\n alignItems?: 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch'\n}\n\nexport const FjCheckBox: React.FC = ({ checkboxType = 'default', size = 'large', ...props }) => {\n const styledProps: FjStyledCheckboxProps = { size }\n switch (checkboxType) {\n case 'green':\n styledProps.backgroundColor = Colors.deYork\n styledProps.borderColor = Colors.deYork\n styledProps.color = Colors.deYork\n break\n case 'red':\n styledProps.backgroundColor = Colors.outrageousOrange\n styledProps.borderColor = Colors.outrageousOrange\n styledProps.color = Colors.outrageousOrange\n break\n default:\n styledProps.backgroundColor = Colors.cornflowerBlue\n styledProps.borderColor = Colors.cornflowerBlue\n styledProps.color = Colors.cornflowerBlue\n break\n }\n return \n}\n\ninterface FjCheckboxGroupProps extends CheckboxGroupProps {\n optionsMap?: Map\n checkboxStyle?: React.CSSProperties\n optionsMaxHeight?: number | string\n disabledOptionKeys?: string[]\n colProps?: ColProps\n checkBoxProps?: Omit\n}\n\nexport const FjCheckboxGroup: React.FC = ({\n optionsMaxHeight,\n checkboxStyle,\n optionsMap,\n disabledOptionKeys = [],\n colProps,\n children,\n checkBoxProps,\n ...props\n}) => {\n const checkboxes = useMemo(() => {\n if (optionsMap) {\n return Array.from(optionsMap, ([key, value]) => (\n \n {value}\n \n ))\n }\n return []\n }, [checkboxStyle, props.name, optionsMap, disabledOptionKeys, checkBoxProps])\n\n return (\n \n \n {optionsMap ? (\n colProps ? (\n \n {checkboxes.map((checkbox, index) => (\n \n {checkbox}\n \n ))}\n \n ) : (\n checkboxes\n )\n ) : (\n children\n )}\n
\n \n )\n}\n\nexport class FjEmailInput extends Component {\n handleEmailChange = (e: React.ChangeEvent, fieldProps: FieldProps) => {\n if (this.props.onChange) this.props.onChange(e)\n fieldProps.form.setFieldValue(this.props.name, e.target.value.trim().toLowerCase())\n }\n\n render() {\n return (\n \n {(fieldProps: FieldProps) => (\n this.handleEmailChange(e, fieldProps)} />\n )}\n \n )\n }\n}\n\ntype IFjDatePickerProps = FormikFieldProps & $DatePickerProps\n\nexport const FjDatePicker: React.FC = (props: IFjDatePickerProps) => {\n return (\n \n {(fieldProps: FieldProps) => {\n return (\n {\n fieldProps.form.setFieldValue(props.name, date || null)\n props.onChange?.(date, dateString)\n }}\n />\n )\n }}\n \n )\n}\n\n// File Upload\n\nconst { Dragger } = Upload\n\ninterface FjDraggerProps extends $UploadProps {\n promptText?: string\n children?: React.ReactNode\n}\n\ntype IFjUploaderProps = FormikFieldProps & FjDraggerProps\n\n// Currently only supports single file upload\n@observer\nclass FjDragger extends React.Component {\n @observable fileList = []\n\n constructor(props: FjDraggerProps) {\n super(props)\n makeObservable(this)\n }\n\n render() {\n return (\n false)}\n onChange={(info) => {\n this.fileList = info.fileList.slice(-1)\n if (this.props.onChange) {\n this.props.onChange(info)\n }\n }}\n style={{ padding: '40px 0' }}\n >\n {this.props.children ? (\n this.props.children\n ) : (\n

\n {this.props.promptText || 'Click or drag file to upload'}\n

\n )}\n \n )\n }\n}\n\nexport const FjDragUploader: React.FC = (props: IFjUploaderProps) => {\n return (\n \n {(fieldProps: FieldProps) => {\n return (\n fieldProps.form.setFieldValue(props.name, info.file)}\n showUploadList={{ removeIcon: }}\n />\n )\n }}\n \n )\n}\n\ninterface FjProfileImageUploaderProps {\n shape?: 'rect' | 'round'\n valueChanged: (fileUrl: string) => string | Promise\n}\n\ntype IFjProfileImageUploaderProps = IFjUploaderProps & FjProfileImageUploaderProps\n\nexport const FjProfileImageUploader: React.FC = ({ shape, valueChanged, ...props }) => {\n return (\n \n {(fieldProps: FieldProps) => {\n return (\n \n {\n const profileImgUrl = await sharedAppStateStore.wrapAppLoading(uploadToS3(file), 'Uploading...')\n valueChanged(profileImgUrl)\n // have to set the file here for validation to work\n fieldProps.form.setValues({ [props.name]: file, profileImgUrl })\n return false\n }}\n />\n \n )\n }}\n \n )\n}\n\nexport const FJStyledCourseSelect = styled(Select)`\n &:focus {\n border: none;\n outline: none;\n }\n &.ant-select-single:not(.ant-select-customize-input) .ant-select-selector {\n border: none;\n }\n & .ant-select {\n color: black !important;\n }\n & .ant-select-arrow {\n color: black !important;\n }\n &.ant-select-focused.ant-select-single:not(.ant-select-customize-input) .ant-select-selector {\n border: none !important;\n }\n & .ant-select-selection-item {\n font-size: 18px;\n color: black !important;\n font-weight: 700;\n }\n`\n\nexport const FjCourseSelect: React.FC = ({ children, optionsMap, ...props }) => {\n return (\n \n {optionsMap\n ? Array.from(optionsMap, ([key, value]) => (\n \n ))\n : children}\n \n )\n}\n\ninterface LoadingAutoCompleteProps extends AutoCompleteProps {\n isLoadingOptions?: boolean\n}\n\nexport const LoadingAutoComplete = ({ isLoadingOptions, style, ...restProps }: LoadingAutoCompleteProps) => {\n return (\n
\n \n {isLoadingOptions ? : null}\n
\n )\n}\n","import { Popover, PopoverProps } from 'antd'\nimport { Form, Formik } from 'formik'\n\nimport React, { useMemo, useState } from 'react'\nimport { ContainerDiv } from 'src/components/Common/Cards'\nimport { AutoCompleteOption } from 'src/components/Common/FjFilter'\nimport { FjCheckBox, FjInput } from 'src/components/Common/FjInput'\n\ninterface FjPopoverContentProps {\n options?: AutoCompleteOption[]\n values?: AutoCompleteOption[]\n onSearch?: (value: string) => void\n addFilterOption?: (option: AutoCompleteOption) => void\n removeFilterOption?: (option: AutoCompleteOption) => void\n}\n\nexport const FjPopoverContent = ({\n options = [],\n values = [],\n onSearch,\n addFilterOption,\n removeFilterOption,\n}: FjPopoverContentProps) => {\n const [searchKeyword, setSearchKeyword] = useState('')\n\n const filteredOptions = useMemo(() => {\n if (onSearch) return options\n return options.filter((option) => option.label.toLowerCase().includes(searchKeyword.toLowerCase())).slice(0, 10)\n }, [searchKeyword, onSearch, options])\n\n const handleSearchOptions = (e: React.ChangeEvent) => {\n setSearchKeyword(e.target.value)\n if (onSearch) onSearch(e.target.value)\n }\n\n const getInitialValues = () => {\n const initialValues = { searchKeyword }\n for (const option of filteredOptions) {\n initialValues[option.id] = !!values.find((value) => value.id === option.id)\n }\n return initialValues\n }\n\n return (\n {}} enableReinitialize>\n
\n \n \n {filteredOptions.map((option) => (\n \n (e.target.checked ? addFilterOption?.(option) : removeFilterOption?.(option))}\n >\n {option.label}\n \n \n ))}\n \n \n
\n )\n}\n\nconst FjPopover = ({ children, ...props }: PopoverProps) => {\n return (\n \n {children}\n \n )\n}\n\nexport default FjPopover\n","import { Progress, ProgressProps } from 'antd'\nimport { Colors } from 'src/constants/colors'\nimport styled from 'styled-components'\n\ninterface FjProgressProps {\n height?: string\n infoTextColor?: string\n infoTextSize?: string\n}\n\nexport const FjProgress = styled(Progress)`\n .ant-progress-bg {\n height: ${(props) => props.height} !important;\n background-color: ${(props) => (props.percent === 100 ? Colors.pastelGreen : Colors.texasRose)} !important;\n }\n .ant-progress-circle-path {\n stroke: ${(props) => (props.percent === 100 ? Colors.pastelGreen : Colors.texasRose)} !important;\n }\n .ant-progress-status-success .ant-progress-bg {\n background-color: ${Colors.deYork} !important;\n }\n .ant-progress-text {\n color: ${(props) => props.infoTextColor};\n font-size: ${(props) => `${props.infoTextSize} !important`};\n }\n`\nFjProgress.defaultProps = {\n infoTextColor: 'rgba(0, 0, 0, 0.85)',\n trailColor: Colors.mercury,\n height: '6px',\n}\n","import React from 'react'\nimport { ContainerDiv, DefaultButton } from 'src/components/Common'\nimport { Colors } from 'src/constants/colors'\nimport { observer } from 'mobx-react'\nimport { Menu } from 'react-feather'\nimport { CREATE_MENU_BACKGROUND } from 'src/components/Feed/FeedNavbar'\n\n@observer\nexport class FloatingPanel extends React.Component<{ openMobileDrawer: (isOpen: boolean) => void }> {\n render() {\n return (\n \n }\n style={{ background: CREATE_MENU_BACKGROUND, paddingLeft: '14px', paddingRight: '14px' }}\n clicked={() => this.props.openMobileDrawer(true)}\n />\n \n )\n }\n}\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { ProfilePictureForm } from 'src/components/Profile/ProfilePictureForm'\nimport { ConnectLinkedinForm } from 'src/components/Common/ConnectLinkedin'\nimport { InviteTeammateForm } from 'src/components/Team/InviteTeammate'\nimport { FeedPostForm } from 'src/components/Feed/FeedPostForm'\nimport { PromptForm } from 'src/components/Feed/PromptForm'\nimport { ProfileEditForm } from 'src/components/Profile/ProfileEditForm'\nimport { FjModal } from 'src/components/Common/Modals'\nimport { AddContentToContentContainerForm } from 'src/components/Feed/AddContentToContentContainerForm'\nimport { AddToQueueForm } from 'src/components/Feed/AddToQueueForm'\nimport { SubmoduleForm } from 'src/components/CourseAuthoring/SubmoduleForm'\nimport { VideoModalForm } from 'src/components/Feed/VideoModalForm'\nimport { AssetForm } from 'src/components/Feed/AssetForm'\nimport { CreateGroupForm } from 'src/components/Team/CreateGroupForm'\nimport { FeedTaskForm } from 'src/components/LearningPath/FeedTaskForm'\nimport { LazyAutomationRuleForm } from 'src/components/Feed/AutomationRuleForm'\nimport { EditSharedContentModal, SharedContentModal } from 'src/components/Feed/SharedContentModal'\nimport { SharedContentSessionsModal } from 'src/components/Feed/SharedContentSessions'\nimport { ShareCourseForm } from 'src/components/Feed/ShareCourseForm'\nimport { SharedLinkModal } from 'src/components/Feed/SharedLinkModal'\nimport { AssetSummary } from 'src/components/Feed/AssetSummary'\nimport { ContentProgressDetails } from 'src/components/Learn/ContentProgressDetails'\nimport { RubricForm } from 'src/components/CourseAuthoring/RubricForm'\nimport { RubricAuthoringForm } from 'src/components/CourseAuthoring/RubricAuthoringForm'\nimport { CoachingMomentTriggerForm } from 'src/components/Feed/CoachingMomentTriggerForm'\nimport { QueueModal } from 'src/components/Feed/QueueModal'\nimport { AddToContentModal } from 'src/components/Feed/AddToContentModal'\nimport { ModuleForm } from 'src/components/CourseAuthoring/ModuleForm'\nimport { TeamProgressModal } from 'src/components/Feed/TeamProgressModal'\nimport { UserManagementAndProvisioningForm } from 'src/components/Feed/UserManagementAndProvisioning'\nimport { ConfettiModal } from 'src/components/Common/ConfettiModal'\nimport { DealRoomAnalyticsModal } from 'src/components/Feed/DealRoomAnalyticsModal'\nimport { EditDriveFileModal } from 'src/components/Feed/EditDriveFileModal'\nimport { CopyClipboardModal } from 'src/components/Feed/CopyClipboardModal'\nimport { PostAnalyticsModal } from 'src/components/Feed/PostAnalyticsModal'\nimport { TemplateAuthoringModal } from 'src/components/Feed/TemplateAuthoringModal'\nimport { TemplateModal } from 'src/components/Feed/TemplateModal'\nimport { LiveSessionAttendanceModal } from 'src/components/Learn/LiveSessionAttendanceModal'\nimport { AdminModuleCompletionsForm } from 'src/components/Course/AdminModuleCompletionsForm'\nimport { IntegratedClariOrganizationForm } from 'src/components/Feed/CalriIntegrationForm'\nimport { BulkEditFormModal } from 'src/components/Library/BulkEditForm'\nimport { ConfigProviderProps } from 'antd/lib/config-provider'\nimport { LazyMilestoneForm } from 'src/components/Feed/MilestoneForm'\n\nexport const FORM_CONTAINER_MODAL_ACTIONS = {\n Wishlist: 'wishlist',\n WorkExperience: 'workExperience',\n EducationHistory: 'educationHistory',\n CurrentLocation: 'currentLocation',\n SendMessage: 'sendMessage',\n Video: 'video',\n ProfilePicture: 'profilePicture',\n Resume: 'resume',\n LinkedIn: 'linkedIn',\n Info: 'info',\n Hide: 'hide',\n InviteTeammate: 'inviteTeammate',\n CreateGroup: 'createGroup',\n FeedPost: 'feedPost',\n Prompt: 'prompt',\n EditProfile: 'editProfile',\n AddContentToContentContainer: 'addContentToContentContainer',\n AddToQueue: 'addToQueue',\n SubmoduleForm: 'submoduleForm',\n VideoModalForm: 'videoModalForm',\n AssetForm: 'assetForm',\n PostAnalyticsModal: 'postAnalyticsModal',\n AssetSummary: 'assetSummary',\n ContentProgressDetails: 'contentProgressDetails',\n ConfettiModal: 'confettiModal',\n FeedTaskForm: 'feedTaskForm',\n AutomationRuleForm: 'automationRuleForm',\n SharedContentModal: 'sharedContentModal',\n EditSharedContentModal: 'editSharedContentModal',\n SharedContentSessions: 'sharedContentSessions',\n ShareCourseForm: 'shareCourse',\n SharedLinkModal: 'sharedLinkModal',\n QueueModal: 'queueModal',\n TeamProgressModal: 'teamProgressModal',\n AddContentModal: 'addContentModal',\n RubricForm: 'rubricForm',\n RubricAuthoringForm: 'rubricAuthoringForm',\n CoachingMomentTriggerForm: 'coachingMomentTriggerForm',\n ModuleForm: 'moduleForm',\n UserManagementAndProvisioningForm: 'userManagementAndProvisioning',\n DealRoomAnalyticsModal: 'dealRoomAnalyticsModal',\n EditDriveFile: 'editDriveFile',\n CopyClipboardModal: 'copyClipboardModal',\n TemplateAuthoringModal: 'templateAuthoringModal',\n TemplateModal: 'templateModal',\n LiveSessionAttendanceModal: 'liveSessionAttendanceModal',\n AdminModuleCompletionsForm: 'adminModuleCompletionsForm',\n IntegratedClariOrganizationForm: 'integratedClariOrganizationForm',\n BulkEditForm: 'bulkEditForm',\n MilestoneForm: 'milestoneForm',\n}\n\nconst ACTION_COMPONENT_MAPPING = {\n [FORM_CONTAINER_MODAL_ACTIONS.ProfilePicture]: ProfilePictureForm,\n [FORM_CONTAINER_MODAL_ACTIONS.LinkedIn]: ConnectLinkedinForm,\n [FORM_CONTAINER_MODAL_ACTIONS.InviteTeammate]: InviteTeammateForm,\n [FORM_CONTAINER_MODAL_ACTIONS.CreateGroup]: CreateGroupForm,\n [FORM_CONTAINER_MODAL_ACTIONS.FeedPost]: FeedPostForm,\n [FORM_CONTAINER_MODAL_ACTIONS.Prompt]: PromptForm,\n [FORM_CONTAINER_MODAL_ACTIONS.EditProfile]: ProfileEditForm,\n [FORM_CONTAINER_MODAL_ACTIONS.AddContentToContentContainer]: AddContentToContentContainerForm,\n [FORM_CONTAINER_MODAL_ACTIONS.AddToQueue]: AddToQueueForm,\n [FORM_CONTAINER_MODAL_ACTIONS.SubmoduleForm]: SubmoduleForm,\n [FORM_CONTAINER_MODAL_ACTIONS.VideoModalForm]: VideoModalForm,\n [FORM_CONTAINER_MODAL_ACTIONS.AssetForm]: AssetForm,\n [FORM_CONTAINER_MODAL_ACTIONS.AssetSummary]: AssetSummary,\n [FORM_CONTAINER_MODAL_ACTIONS.PostAnalyticsModal]: PostAnalyticsModal,\n [FORM_CONTAINER_MODAL_ACTIONS.ContentProgressDetails]: ContentProgressDetails,\n [FORM_CONTAINER_MODAL_ACTIONS.ConfettiModal]: ConfettiModal,\n [FORM_CONTAINER_MODAL_ACTIONS.FeedTaskForm]: FeedTaskForm,\n [FORM_CONTAINER_MODAL_ACTIONS.AutomationRuleForm]: LazyAutomationRuleForm,\n [FORM_CONTAINER_MODAL_ACTIONS.SharedContentModal]: SharedContentModal,\n [FORM_CONTAINER_MODAL_ACTIONS.SharedContentSessions]: SharedContentSessionsModal,\n [FORM_CONTAINER_MODAL_ACTIONS.ShareCourseForm]: ShareCourseForm,\n [FORM_CONTAINER_MODAL_ACTIONS.SharedLinkModal]: SharedLinkModal,\n [FORM_CONTAINER_MODAL_ACTIONS.QueueModal]: QueueModal,\n [FORM_CONTAINER_MODAL_ACTIONS.TeamProgressModal]: TeamProgressModal,\n [FORM_CONTAINER_MODAL_ACTIONS.AddContentModal]: AddToContentModal,\n [FORM_CONTAINER_MODAL_ACTIONS.RubricForm]: RubricForm,\n [FORM_CONTAINER_MODAL_ACTIONS.RubricAuthoringForm]: RubricAuthoringForm,\n [FORM_CONTAINER_MODAL_ACTIONS.CoachingMomentTriggerForm]: CoachingMomentTriggerForm,\n [FORM_CONTAINER_MODAL_ACTIONS.ModuleForm]: ModuleForm,\n [FORM_CONTAINER_MODAL_ACTIONS.UserManagementAndProvisioningForm]: UserManagementAndProvisioningForm,\n [FORM_CONTAINER_MODAL_ACTIONS.DealRoomAnalyticsModal]: DealRoomAnalyticsModal,\n [FORM_CONTAINER_MODAL_ACTIONS.EditDriveFile]: EditDriveFileModal,\n [FORM_CONTAINER_MODAL_ACTIONS.CopyClipboardModal]: CopyClipboardModal,\n [FORM_CONTAINER_MODAL_ACTIONS.TemplateAuthoringModal]: TemplateAuthoringModal,\n [FORM_CONTAINER_MODAL_ACTIONS.TemplateModal]: TemplateModal,\n [FORM_CONTAINER_MODAL_ACTIONS.LiveSessionAttendanceModal]: LiveSessionAttendanceModal,\n [FORM_CONTAINER_MODAL_ACTIONS.AdminModuleCompletionsForm]: AdminModuleCompletionsForm,\n [FORM_CONTAINER_MODAL_ACTIONS.IntegratedClariOrganizationForm]: IntegratedClariOrganizationForm,\n [FORM_CONTAINER_MODAL_ACTIONS.EditSharedContentModal]: EditSharedContentModal,\n [FORM_CONTAINER_MODAL_ACTIONS.BulkEditForm]: BulkEditFormModal,\n [FORM_CONTAINER_MODAL_ACTIONS.MilestoneForm]: LazyMilestoneForm,\n}\n\nexport type FormModalActionTypes =\n | typeof FORM_CONTAINER_MODAL_ACTIONS.Wishlist\n | typeof FORM_CONTAINER_MODAL_ACTIONS.WorkExperience\n | typeof FORM_CONTAINER_MODAL_ACTIONS.EducationHistory\n | typeof FORM_CONTAINER_MODAL_ACTIONS.Info\n | typeof FORM_CONTAINER_MODAL_ACTIONS.CurrentLocation\n | typeof FORM_CONTAINER_MODAL_ACTIONS.SendMessage\n | typeof FORM_CONTAINER_MODAL_ACTIONS.ProfilePicture\n | typeof FORM_CONTAINER_MODAL_ACTIONS.Resume\n | typeof FORM_CONTAINER_MODAL_ACTIONS.Hide\n | typeof FORM_CONTAINER_MODAL_ACTIONS.InviteTeammate\n | typeof FORM_CONTAINER_MODAL_ACTIONS.CreateGroup\n | typeof FORM_CONTAINER_MODAL_ACTIONS.FeedPost\n | typeof FORM_CONTAINER_MODAL_ACTIONS.Prompt\n | typeof FORM_CONTAINER_MODAL_ACTIONS.EditProfile\n | typeof FORM_CONTAINER_MODAL_ACTIONS.AddToQueue\n | typeof FORM_CONTAINER_MODAL_ACTIONS.AddContentToContentContainer\n | typeof FORM_CONTAINER_MODAL_ACTIONS.SubmoduleForm\n | typeof FORM_CONTAINER_MODAL_ACTIONS.VideoModalForm\n | typeof FORM_CONTAINER_MODAL_ACTIONS.AssetForm\n | typeof FORM_CONTAINER_MODAL_ACTIONS.AssetSummary\n | typeof FORM_CONTAINER_MODAL_ACTIONS.PostAnalyticsModal\n | typeof FORM_CONTAINER_MODAL_ACTIONS.ContentProgressDetails\n | typeof FORM_CONTAINER_MODAL_ACTIONS.ConfettiModal\n | typeof FORM_CONTAINER_MODAL_ACTIONS.FeedTaskForm\n | typeof FORM_CONTAINER_MODAL_ACTIONS.AutomationRuleForm\n | typeof FORM_CONTAINER_MODAL_ACTIONS.SharedContentModal\n | typeof FORM_CONTAINER_MODAL_ACTIONS.ShareCourseForm\n | typeof FORM_CONTAINER_MODAL_ACTIONS.SharedLinkModal\n | typeof FORM_CONTAINER_MODAL_ACTIONS.QueueModal\n | typeof FORM_CONTAINER_MODAL_ACTIONS.TeamProgressModal\n | typeof FORM_CONTAINER_MODAL_ACTIONS.AddContentModal\n | typeof FORM_CONTAINER_MODAL_ACTIONS.CoachingMomentTriggerForm\n | typeof FORM_CONTAINER_MODAL_ACTIONS.ModuleForm\n | typeof FORM_CONTAINER_MODAL_ACTIONS.UserManagementAndProvisioningForm\n | typeof FORM_CONTAINER_MODAL_ACTIONS.DealRoomAnalyticsModal\n | typeof FORM_CONTAINER_MODAL_ACTIONS.EditDriveFile\n | typeof FORM_CONTAINER_MODAL_ACTIONS.CopyClipboardModal\n | typeof FORM_CONTAINER_MODAL_ACTIONS.TemplateAuthoringModal\n | typeof FORM_CONTAINER_MODAL_ACTIONS.TemplateModal\n | typeof FORM_CONTAINER_MODAL_ACTIONS.LiveSessionAttendanceModal\n | typeof FORM_CONTAINER_MODAL_ACTIONS.AdminModuleCompletionsForm\n | typeof FORM_CONTAINER_MODAL_ACTIONS.IntegratedClariOrganizationForm\n | typeof FORM_CONTAINER_MODAL_ACTIONS.EditSharedContentModal\n | typeof FORM_CONTAINER_MODAL_ACTIONS.BulkEditForm\n | typeof FORM_CONTAINER_MODAL_ACTIONS.MilestoneForm\n\ninterface FormContainerModalProps {\n action: FormModalActionTypes\n formComponentProps?: object\n maskClosable?: boolean\n handleClose(): void\n afterClose?(): void\n open: boolean\n hide?: boolean\n}\n\nconst MODAL_WIDTH_MAPPING = {\n [FORM_CONTAINER_MODAL_ACTIONS.ConfettiModal]: '480px',\n [FORM_CONTAINER_MODAL_ACTIONS.AssetForm]: '1236px',\n [FORM_CONTAINER_MODAL_ACTIONS.AddContentModal]: '600px',\n [FORM_CONTAINER_MODAL_ACTIONS.EditDriveFile]: '95%',\n [FORM_CONTAINER_MODAL_ACTIONS.TemplateModal]: '600px',\n [FORM_CONTAINER_MODAL_ACTIONS.SharedContentModal]: '1200px',\n [FORM_CONTAINER_MODAL_ACTIONS.MilestoneForm]: '1200px',\n [FORM_CONTAINER_MODAL_ACTIONS.SharedLinkModal]: '1200px',\n}\n\n@observer\nexport class FormContainerModal extends React.Component<\n FormContainerModalProps & { configProviderProps?: ConfigProviderProps }\n> {\n render() {\n const { action, maskClosable, handleClose, afterClose, formComponentProps, open, hide } = this.props\n const FormComponent = ACTION_COMPONENT_MAPPING[action] as React.ElementType\n return (\n \n {FormComponent && }\n \n )\n }\n}\n","import React, { Component } from 'react'\nimport { FilterSelect, FilterSelectLarge } from 'src/components/Feed/FeedPostList'\nimport { sharedDataStore } from 'src/store/DataStore'\nimport { Select } from 'antd'\nimport { getIntersection } from 'src/utils/format'\nimport { Colors } from 'src/constants/colors'\n\ninterface GroupFilterProps {\n type?: 'large' | 'small'\n defaultLabel?: string\n selectedGroup: string\n onGroupSelect: (groupId: string) => void\n limitToGroupIds?: string[]\n hideDefaultLabel?: boolean\n}\n\nexport class GroupFilter extends Component {\n filterGroupOptions = () => {\n const { limitToGroupIds, defaultLabel } = this.props\n const map = new Map()\n if (!this.props.hideDefaultLabel) map.set('', defaultLabel || 'Select Group')\n const commonGroupIds = limitToGroupIds\n ? getIntersection(sharedDataStore.user.groupIds, limitToGroupIds)\n : sharedDataStore.user.groupIds\n const groupsToShow = sharedDataStore.user.groups.filter((group) => commonGroupIds.includes(group.id))\n groupsToShow.forEach((group) => {\n map.set(group.id, group.name)\n })\n return map\n }\n\n render() {\n const { selectedGroup, onGroupSelect, type } = this.props\n const groupOptions = this.filterGroupOptions()\n if (groupOptions.size <= 2 && groupOptions.get(sharedDataStore.user.defaultGroup.id)) return null\n return (\n <>\n {type === 'large' ? (\n \n {Array.from(groupOptions).map(([key, value]) => (\n \n {value}\n \n ))}\n \n ) : (\n \n {Array.from(groupOptions).map(([key, value]) => (\n \n {value}\n \n ))}\n \n )}\n \n )\n }\n}\n","import { observer } from 'mobx-react'\nimport React, { useEffect, useMemo, useState } from 'react'\nimport { FilterDropdownButton } from 'src/components/Common/Button'\nimport FjPopover, { FjPopoverContent } from 'src/components/Common/FjPopover'\nimport { sharedDataStore } from 'src/store/DataStore'\nimport { getIntersection } from 'src/utils/format'\nimport { AutoCompleteOption } from 'src/components/Common/FjFilter'\nimport { LAST_SELECTED_GROUP_ID_KEY } from 'src/models/User'\n\ntype GroupSelectProps = {\n clearable?: boolean\n value?: string\n onChange: (groupId: string) => void\n limitToGroupIds?: string[]\n}\n\nexport const GroupSelect: React.FC = observer(\n ({ clearable, value, onChange, limitToGroupIds }: GroupSelectProps) => {\n const [selectedGroupId, setSelectedGroupId] = useState(value)\n\n useEffect(() => {\n updateSelectedGroupIdStateAndStore(value)\n }, [value])\n\n const groupOptions: AutoCompleteOption[] = useMemo(() => {\n const commonGroupIds = limitToGroupIds\n ? getIntersection(sharedDataStore.user.groupIds, limitToGroupIds)\n : sharedDataStore.user.groupIds\n const groupsToShow = sharedDataStore.user.groups.filter((group) => commonGroupIds.includes(group.id))\n return groupsToShow.map((group) => ({ key: group.id, id: group.id, value: group.id, label: group.name }))\n }, [limitToGroupIds])\n\n const handleOptionSelect = (option: AutoCompleteOption) => {\n updateSelectedGroupIdStateAndStore(option.id)\n onChange(option.id)\n }\n\n const handleRemoveFilterOption = (option: AutoCompleteOption) => {\n setSelectedGroupId(null)\n onChange(null)\n }\n\n const handleClear = () => {\n setSelectedGroupId(null)\n onChange(null)\n }\n\n const updateSelectedGroupIdStateAndStore = (groupId: string) => {\n if (groupId) localStorage.setItem(LAST_SELECTED_GROUP_ID_KEY, groupId)\n setSelectedGroupId(groupId)\n }\n\n const selectedOption = groupOptions.find((option) => option.id === selectedGroupId)\n\n return (\n \n }\n >\n \n \n )\n }\n)\n","/* eslint-disable jsx-a11y/iframe-has-title */\nimport React, { ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport ChopLines from 'chop-lines'\nimport { ContainerDiv } from 'src/components/Common'\nimport PDFRenderer from 'src/components/Common/PDFRenderer'\nimport { Anchor, DefaultLink } from 'src/components/Common/Link'\nimport parse, { HTMLReactParserOptions, domToReact, attributesToProps, Element } from 'html-react-parser'\nimport { Image } from 'antd'\nimport { MS_DOC_LINK_REGEX, PDF_LINK_REGEX } from 'src/constants/regex'\nimport ExternalLinkIcon from 'src/assets/icons/ExternalLink.svg'\nimport { Colors } from 'src/constants/colors'\nimport TranscriptView from 'src/components/Feed/TranscriptView'\nimport { Document } from 'src/models/Document'\nimport { MSDocRenderer } from 'src/components/Common/MSDocRenderer'\nimport { SharedContentEmbeddedModalAnchor } from 'src/pages/SharedContent'\nimport styled from 'styled-components'\nimport { camelize } from 'src/utils/format'\n\nconst getStyleObjectFromString = (str: string = '') => {\n const style = {}\n str.split(';').forEach((el) => {\n const [property, value] = el.split(':')\n if (!property) return\n\n const formattedProperty = camelize(property.trim(), '-')\n style[formattedProperty] = value.trim()\n })\n\n return style\n}\n\nconst setDownloadOnControlsList = (props: object, allowDownload?: boolean) => {\n const newProps = { ...props }\n const controlsList = newProps['controlsList'] || ''\n if (allowDownload && controlsList) {\n newProps['controlsList'] = controlsList\n .split(' ')\n .filter((option) => option !== 'nodownload')\n .join(' ')\n } else if (!allowDownload && !controlsList.includes('nodownload')) {\n newProps['controlsList'] += controlsList + ' nodownload'\n }\n return newProps\n}\n\nconst Ellipsis = styled.a`\n background: white;\n font-size: 14px;\n font-weight: 600;\n outline: none;\n\n span {\n background: white;\n border-radius: 12px;\n color: ${Colors.cornflowerBlue};\n display: inline-block;\n padding: 0 8px;\n }\n\n :hover,\n :focus {\n span {\n color: ${Colors.cornflowerBlue};\n }\n }\n\n :before {\n background: linear-gradient(90deg, transparent, white);\n content: '';\n width: 48px;\n }\n`\n\nexport const ObserverIFrame: React.FC<\n React.DetailedHTMLProps & { withOverlay?: boolean }, HTMLIFrameElement>\n> = ({ src, withOverlay = false, ...props }) => {\n const [showOverlay, setShowOverlay] = useState(false)\n const containerRef = useRef(null)\n const [isVisible, setIsVisible] = useState(false)\n\n const callbackFunction = ([entry]: IntersectionObserverEntry[]) => {\n setIsVisible((currentlyVisible) => currentlyVisible || entry.isIntersecting)\n }\n\n useEffect(() => {\n const observer = new IntersectionObserver(callbackFunction, {\n root: null,\n rootMargin: '300px 0px 0px 0px',\n threshold: 1,\n })\n const current = containerRef.current\n\n if (current) observer.observe(current)\n\n return () => {\n if (current) observer.unobserve(current)\n }\n }, [])\n\n return (\n setShowOverlay(true)}\n onMouseLeave={() => setShowOverlay(false)}\n >\n
\n {withOverlay && showOverlay ? (\n \n \n \"\"\n Open in new tab\n \n \n ) : null}\n \n \n )\n}\n\nconst FJVideo = ({ allowDownload, children, ...props }) => {\n const videoRef = useRef()\n\n const documentId = useMemo(() => props['data-document-id'], [props])\n\n const setCurrentTime = useCallback((time: number) => {\n videoRef.current.currentTime = time\n }, [])\n\n const fetchTranscript = useCallback(async () => await Document.get(documentId), [documentId])\n const videoProps = setDownloadOnControlsList(props, allowDownload)\n\n return (\n \n
\n \n
\n {documentId ? : null}\n
\n )\n}\n\nconst FJAudio = ({ allowDownload, children, ...props }) => {\n const audioRef = useRef()\n\n const documentId = useMemo(() => props['data-document-id'], [props])\n\n const setCurrentTime = useCallback((time: number) => {\n audioRef.current.currentTime = time\n }, [])\n\n const fetchTranscript = useCallback(async () => await Document.get(documentId), [documentId])\n const audioProps = setDownloadOnControlsList(props, allowDownload)\n\n return (\n \n \n \n {documentId ? : null}\n \n \n )\n}\n\nconst LinkSpan = ({ children }: React.PropsWithChildren) => {\n return {children}\n}\n\nexport const FeedHTMLBodyParser = (\n html: string,\n options?: {\n showLinkAsSpan?: boolean\n showEmbedAsLink?: boolean\n showMediaAsLink?: boolean\n minimizeHeadings?: boolean\n sharedContentId?: string\n sharedContentPassword?: string\n sharedContentTrackingContext?: object\n allowDownload?: boolean\n }\n) => {\n const {\n showLinkAsSpan,\n showEmbedAsLink,\n showMediaAsLink,\n minimizeHeadings,\n sharedContentId,\n sharedContentPassword,\n sharedContentTrackingContext,\n allowDownload,\n } = options || {}\n const defaultOptions: HTMLReactParserOptions = {\n replace: (domNode) => {\n if (domNode instanceof Element) {\n const { name, attribs, children } = domNode\n\n if (\n minimizeHeadings &&\n (['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(name) ||\n (name === 'span' && ['text-big', 'text-huge'].includes(attribs?.class)))\n ) {\n return

{domToReact(children, defaultOptions)}

\n }\n\n if (attribs['data-oembed-url'] && showEmbedAsLink) {\n return Embed\n }\n\n if (name === 'a' && showLinkAsSpan) {\n return {domToReact(children, defaultOptions)}\n }\n\n if (name === 'figure' && attribs?.class === 'table') {\n const props = attributesToProps(attribs)\n return (\n \n
{domToReact(children, defaultOptions)}
\n
\n )\n }\n\n if (name === 'figure' && attribs?.class === 'image' && showMediaAsLink) {\n return Image\n }\n\n if (name === 'div' && attribs?.class === 'raw-html-embed') {\n return
{domToReact(children)}
\n }\n\n if (name === 'iframe') {\n if (showEmbedAsLink) {\n return Embed\n }\n\n const props = attributesToProps(attribs)\n // check if it's gong url, not embed for going\n if (attribs?.src?.includes('gong') && !attribs?.src?.includes('embed/')) {\n return \n }\n\n if (attribs?.src?.includes('google')) {\n return \n }\n\n const flockjayEmbedRegex = /(?:(?:.)+(?:flockjay\\.com|amplifyapp\\.com|localhost:3000))\\/embed/\n if (sharedContentId && attribs?.src?.match(flockjayEmbedRegex)) {\n const url = new URL(attribs.src)\n url.searchParams.append('sharedContentId', sharedContentId)\n if (sharedContentPassword) url.searchParams.append('accessKey', sharedContentPassword)\n attribs.src = url.href\n }\n }\n\n if (name === 'video') {\n if (showEmbedAsLink) {\n return Video\n }\n const props = attributesToProps(attribs)\n return (\n \n {domToReact(children, defaultOptions)}\n \n )\n }\n\n if (name === 'audio') {\n if (showEmbedAsLink) {\n return Audio\n }\n const props = attributesToProps(attribs)\n return (\n \n {domToReact(children, defaultOptions)}\n \n )\n }\n\n if (name === 'img' && attribs.src) {\n if (showMediaAsLink) {\n return Image\n }\n // If image has link, we donn't do zoom effect.\n if (domNode.parent?.['name'] === 'a') return domNode\n const { style, ...props } = attributesToProps(attribs)\n const styleProps = getStyleObjectFromString(attribs.style)\n return {attribs.alt}\n }\n\n if (name === 'a') {\n const classroomAssetEmbedMatch = (attribs?.href || '').match(/\\/classroom\\/?\\?assetId=([\\w-]+)/)\n if (attribs?.class?.includes('tags')) {\n return (\n \n {domToReact(children, defaultOptions)}\n \n )\n } else if (attribs?.class?.includes('mention')) {\n return {domToReact(children, defaultOptions)}\n } else if (attribs.href.match(PDF_LINK_REGEX)) {\n const match = attribs.href.match(PDF_LINK_REGEX)\n return \n } else if (attribs.href.match(MS_DOC_LINK_REGEX)) {\n return \n } else if (sharedContentId && classroomAssetEmbedMatch) {\n return (\n \n {domToReact(children, defaultOptions)}\n \n )\n }\n }\n }\n return domNode\n },\n }\n\n return
{parse(html ?? '', defaultOptions)}
\n}\n\ninterface HTMLExpandablePreviewProps {\n html: string\n rows?: number\n lineHeight?: number\n expandable?: boolean\n expandSymbol?: ReactNode\n parserOptions?: {\n showEmbedAsLink?: boolean\n showMediaAsLink?: boolean\n minimizeHeadings?: boolean\n }\n backgroundColor?: string\n}\n\nconst HTMLExpandablePreview: React.FC = ({\n html,\n rows = 8,\n lineHeight = 24,\n expandable = true,\n expandSymbol = 'View more',\n parserOptions,\n backgroundColor,\n}) => {\n const [isExpanded, setIsExpanded] = useState(false)\n\n useEffect(() => {\n const temp = document.createElement('div')\n temp.innerHTML = html\n if (temp.textContent.length < 250 && expandable) setIsExpanded(true)\n }, [expandable, html])\n\n if (isExpanded) return <>{FeedHTMLBodyParser(html)}\n\n return (\n setIsExpanded(true)} style={{ backgroundColor }}>\n {expandSymbol}\n \n ) : null\n }\n >\n {FeedHTMLBodyParser(html, parserOptions)}\n \n )\n}\n\nexport default HTMLExpandablePreview\n","import React from 'react'\n\n// Responsive iframe\nexport const IFrame: React.FC,\n HTMLIFrameElement\n>> = (props) => {\n const { title, ...rest } = props\n return (\n
\n \n
`\n .split('\\n')\n .map(s => s.trim())\n .join('');\n};\n\nconst chooseAspectRatio = (data: OEmbedInterface) => {\n const { width, height } = data;\n\n // Fallback to 16:9 ratio when width or height is null\n if (width == null || height == null) {\n return 1080 / 1920;\n }\n\n return height / width;\n};\n\nconst enhanceEmbedCode = (\n videoData: OEmbedInterface,\n options: Option\n): OEmbedInterface => {\n // If needed, we alter the embed code to\n // support responsive code\n const { width, height } = options;\n\n if (!width && !height) {\n const [, embedUrl] = videoData.html.match(SRC_URL_REGEX);\n const aspectRatio = chooseAspectRatio(videoData);\n\n return {\n ...videoData,\n html: getResponsiveEmbedCode(embedUrl, aspectRatio),\n };\n }\n\n return videoData;\n};\n\ninterface Option {\n width?: number;\n height?: number;\n gifThumbnail?: boolean; // If true, the thumbnail will be a gif instead of a jpeg\n hideOwner?: boolean; // If true, the video owner will be hidden, and the video link will not be clickable\n}\n\ninterface OEmbedInterface {\n type: 'video';\n html: string;\n title: string;\n height: number | null;\n width: number | null;\n provider_name: 'Loom';\n provider_url: string;\n thumbnail_height: number;\n thumbnail_width: number;\n thumbnail_url: string;\n duration: number;\n}\n\nconst buildLoomOembedUrl = (url: string, options: Option): string => {\n const { width, height, gifThumbnail, hideOwner } = options;\n const maxWidth = width ? `&maxwidth=${width}` : '';\n const maxHeight = height ? `&maxheight=${height}` : '';\n const gifParam = gifThumbnail ? `&gif=${gifThumbnail}` : '';\n const ownerParam = hideOwner ? `&hide_owner=${hideOwner}` : '';\n\n const [loomDomain] = url.match(LOOM_HOSTNAME_CAPTURE);\n\n let loomBaseDomain = loomDomain;\n\n if (loomDomain === 'loom.com') {\n loomBaseDomain = `www.${loomDomain}`;\n }\n\n return `https://${loomBaseDomain}/v1/oembed?url=${url}${maxWidth}${maxHeight}${gifParam}${ownerParam}`;\n};\n\nconst oembed = (\n linkUrl: string,\n options: Option = {}\n): Promise => {\n const isSupportedUrl = isValidEmbedUrl(linkUrl);\n\n if (isSupportedUrl) {\n return fetch(buildLoomOembedUrl(linkUrl, options))\n .then(resp => resp.json())\n .then(videoData => enhanceEmbedCode(videoData, options))\n .catch(e => {\n throw new Error('Unable to fetch oembed data:' + e);\n });\n }\n\n throw new Error('URL is not from a supported video provider');\n};\n\nconst gifEmbed = async (linkUrl: string) => {\n const oEmbed = await oembed(linkUrl, { gifThumbnail: true });\n\n return `\n \n `;\n};\n\nexport { oembed, gifEmbed };\nexport type { OEmbedInterface, Option };\n","import * as React from 'react';\nvar OrderContext = /*#__PURE__*/React.createContext(null);\nexport default OrderContext;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport OrderContext from \"./Context\";\nvar EMPTY_LIST = [];\n\n/**\n * Will add `div` to document. Nest call will keep order\n * @param render Render DOM in document\n */\nexport default function useDom(render, debug) {\n var _React$useState = React.useState(function () {\n if (!canUseDom()) {\n return null;\n }\n var defaultEle = document.createElement('div');\n if (process.env.NODE_ENV !== 'production' && debug) {\n defaultEle.setAttribute('data-debug', debug);\n }\n return defaultEle;\n }),\n _React$useState2 = _slicedToArray(_React$useState, 1),\n ele = _React$useState2[0];\n\n // ========================== Order ==========================\n var appendedRef = React.useRef(false);\n var queueCreate = React.useContext(OrderContext);\n var _React$useState3 = React.useState(EMPTY_LIST),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n queue = _React$useState4[0],\n setQueue = _React$useState4[1];\n var mergedQueueCreate = queueCreate || (appendedRef.current ? undefined : function (appendFn) {\n setQueue(function (origin) {\n var newQueue = [appendFn].concat(_toConsumableArray(origin));\n return newQueue;\n });\n });\n\n // =========================== DOM ===========================\n function append() {\n if (!ele.parentElement) {\n document.body.appendChild(ele);\n }\n appendedRef.current = true;\n }\n function cleanup() {\n var _ele$parentElement;\n (_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele);\n appendedRef.current = false;\n }\n useLayoutEffect(function () {\n if (render) {\n if (queueCreate) {\n queueCreate(append);\n } else {\n append();\n }\n } else {\n cleanup();\n }\n return cleanup;\n }, [render]);\n useLayoutEffect(function () {\n if (queue.length) {\n queue.forEach(function (appendFn) {\n return appendFn();\n });\n setQueue(EMPTY_LIST);\n }\n }, [queue]);\n return [ele, mergedQueueCreate];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { updateCSS, removeCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport getScrollBarSize from \"rc-util/es/getScrollBarSize\";\nimport { isBodyOverflowing } from \"./util\";\nvar UNIQUE_ID = \"rc-util-locker-\".concat(Date.now());\nvar uuid = 0;\nexport default function useScrollLocker(lock) {\n var mergedLock = !!lock;\n var _React$useState = React.useState(function () {\n uuid += 1;\n return \"\".concat(UNIQUE_ID, \"_\").concat(uuid);\n }),\n _React$useState2 = _slicedToArray(_React$useState, 1),\n id = _React$useState2[0];\n useLayoutEffect(function () {\n if (mergedLock) {\n var scrollbarSize = getScrollBarSize();\n var isOverflow = isBodyOverflowing();\n updateCSS(\"\\nhtml body {\\n overflow-y: hidden;\\n \".concat(isOverflow ? \"width: calc(100% - \".concat(scrollbarSize, \"px);\") : '', \"\\n}\"), id);\n } else {\n removeCSS(id);\n }\n return function () {\n removeCSS(id);\n };\n }, [mergedLock, id]);\n}","/**\n * Test usage export. Do not use in your production\n */\nexport function isBodyOverflowing() {\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;\n}","export var inline = false;\nexport function inlineMock(nextInline) {\n if (typeof nextInline === 'boolean') {\n inline = nextInline;\n }\n return inline;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport warning from \"rc-util/es/warning\";\nimport { supportRef, useComposeRef } from \"rc-util/es/ref\";\nimport OrderContext from \"./Context\";\nimport useDom from \"./useDom\";\nimport useScrollLocker from \"./useScrollLocker\";\nimport { inlineMock } from \"./mock\";\nvar getPortalContainer = function getPortalContainer(getContainer) {\n if (getContainer === false) {\n return false;\n }\n if (!canUseDom() || !getContainer) {\n return null;\n }\n if (typeof getContainer === 'string') {\n return document.querySelector(getContainer);\n }\n if (typeof getContainer === 'function') {\n return getContainer();\n }\n return getContainer;\n};\nvar Portal = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var open = props.open,\n autoLock = props.autoLock,\n getContainer = props.getContainer,\n debug = props.debug,\n _props$autoDestroy = props.autoDestroy,\n autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy,\n children = props.children;\n var _React$useState = React.useState(open),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n shouldRender = _React$useState2[0],\n setShouldRender = _React$useState2[1];\n var mergedRender = shouldRender || open;\n\n // ========================= Warning =========================\n if (process.env.NODE_ENV !== 'production') {\n warning(canUseDom() || !open, \"Portal only work in client side. Please call 'useEffect' to show Portal instead default render in SSR.\");\n }\n\n // ====================== Should Render ======================\n React.useEffect(function () {\n if (autoDestroy || open) {\n setShouldRender(open);\n }\n }, [open, autoDestroy]);\n\n // ======================== Container ========================\n var _React$useState3 = React.useState(function () {\n return getPortalContainer(getContainer);\n }),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n innerContainer = _React$useState4[0],\n setInnerContainer = _React$useState4[1];\n React.useEffect(function () {\n var customizeContainer = getPortalContainer(getContainer);\n\n // Tell component that we check this in effect which is safe to be `null`\n setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null);\n });\n var _useDom = useDom(mergedRender && !innerContainer, debug),\n _useDom2 = _slicedToArray(_useDom, 2),\n defaultContainer = _useDom2[0],\n queueCreate = _useDom2[1];\n var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer;\n\n // ========================= Locker ==========================\n useScrollLocker(autoLock && open && canUseDom() && (mergedContainer === defaultContainer || mergedContainer === document.body));\n\n // =========================== Ref ===========================\n var childRef = null;\n if (children && supportRef(children) && ref) {\n var _ref = children;\n childRef = _ref.ref;\n }\n var mergedRef = useComposeRef(childRef, ref);\n\n // ========================= Render ==========================\n // Do not render when nothing need render\n // When innerContainer is `undefined`, it may not ready since user use ref in the same render\n if (!mergedRender || !canUseDom() || innerContainer === undefined) {\n return null;\n }\n\n // Render inline\n var renderInline = mergedContainer === false || inlineMock();\n var reffedChildren = children;\n if (ref) {\n reffedChildren = /*#__PURE__*/React.cloneElement(children, {\n ref: mergedRef\n });\n }\n return /*#__PURE__*/React.createElement(OrderContext.Provider, {\n value: queueCreate\n }, renderInline ? reffedChildren : /*#__PURE__*/createPortal(reffedChildren, mergedContainer));\n});\nif (process.env.NODE_ENV !== 'production') {\n Portal.displayName = 'Portal';\n}\nexport default Portal;","import Portal from \"./Portal\";\nimport { inlineMock } from \"./mock\";\nexport { inlineMock };\nexport default Portal;","// Had to make uuid use a constant seed so it would generate same sequence across runs. This was needed\n// so server side rendering and client side rendering yield same results (e.g. the uuid is used when rendering\n// the concunctions with their name and id)\nvar query_builder_seed = 0;\nexport default (function () {\n // Generate a random GUID http://stackoverflow.com/a/2117523.\n var timePart = (new Date().getTime().toString(16) + \"FF\").substr(0, 11);\n var s = \"ssssssss-xxxx-4xxx-yxxx-x\".replace(/[xys]/g, function (c) {\n var r = c === \"s\" ? Math.floor(Math.random() * 16) : query_builder_seed++ & 0xf;\n var v = c === \"x\" ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n return s + timePart;\n});","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport Immutable, { Map } from \"immutable\";\nimport omit from \"lodash/omit\";\nimport { default as uuid } from \"./uuid\";\nvar isObject = function isObject(v) {\n return _typeof(v) == \"object\" && v !== null && !Array.isArray(v);\n};\nexport { uuid };\nexport var widgetDefKeysToOmit = [\"formatValue\", \"mongoFormatValue\", \"sqlFormatValue\", \"jsonLogic\", \"elasticSearchFormatValue\", \"spelFormatValue\", \"spelImportFuncs\", \"spelImportValue\"];\nexport var opDefKeysToOmit = [\"formatOp\", \"mongoFormatOp\", \"sqlFormatOp\", \"jsonLogic\", \"spelFormatOp\"];\n\n// RegExp.quote = function (str) {\n// return str.replace(/([.?*+^$[\\]\\\\(){}|-])/g, \"\\\\$1\");\n// };\n\nexport var defaultValue = function defaultValue(value, _default) {\n return typeof value === \"undefined\" ? _default : value;\n};\n\n// const immutableEqual = function(v1, v2) {\n// if (v1 === v2) {\n// return true;\n// } else {\n// return v1.equals(v2);\n// }\n// };\n\nexport var deepEqual = function deepEqual(v1, v2) {\n if (v1 === v2) {\n return true;\n } else if (Map.isMap(v1)) {\n return v1.equals(v2);\n } else {\n return JSON.stringify(v1) == JSON.stringify(v2);\n }\n};\n\n// //Do sets have same values?\n// const eqSet = function (as, bs) {\n// if (as.size !== bs.size) return false;\n// for (var a of as) if (!bs.has(a)) return false;\n// return true;\n// };\n\n// //Do arrays have same values?\n// const eqArrSet = function (arr1, arr2) {\n// return eqSet(new Set(arr1), new Set(arr2));\n// };\n\nexport var shallowEqual = function shallowEqual(a, b) {\n var deep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (a === b) {\n return true;\n } else if (Array.isArray(a)) return shallowEqualArrays(a, b, deep);else if (Map.isMap(a)) return a.equals(b);else if (_typeof(a) == \"object\") return shallowEqualObjects(a, b, deep);else return a === b;\n};\nfunction shallowEqualArrays(arrA, arrB) {\n var deep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (arrA === arrB) {\n return true;\n }\n if (!arrA || !arrB) {\n return false;\n }\n var len = arrA.length;\n if (arrB.length !== len) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n var isEqual = deep ? shallowEqual(arrA[i], arrB[i], deep) : arrA[i] === arrB[i];\n if (!isEqual) {\n return false;\n }\n }\n return true;\n}\nfunction shallowEqualObjects(objA, objB) {\n var deep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\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 var isEqual = deep ? shallowEqual(objA[key], objB[key], deep) : objA[key] === objB[key];\n if (!isEqual) {\n return false;\n }\n }\n return true;\n}\nexport var isImmutable = function isImmutable(v) {\n return _typeof(v) === \"object\" && v !== null && typeof v.toJS === \"function\";\n};\nexport function toImmutableList(v) {\n return isImmutable(v) ? v : new Immutable.List(v);\n}\nexport function applyToJS(v) {\n return isImmutable(v) ? v.toJS() : v;\n}\nexport var escapeRegExp = function escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\/]/g, \"\\\\$&\"); // $& means the whole matched string\n};\n\nexport var cleanJSX = function cleanJSX(jsx) {\n var jsxKeys = [\"$$typeof\", \"_owner\", \"_store\", \"ref\", \"key\"];\n var getName = function getName(val) {\n if (typeof val === \"string\") {\n return val;\n } else if (typeof val === \"function\") {\n return val.name;\n }\n return val;\n };\n if (jsx instanceof Array) {\n return jsx.map(function (el, _i) {\n return cleanJSX(el);\n });\n } else if (_typeof(jsx) === \"object\" && jsx !== null) {\n if (isDirtyJSX(jsx)) {\n var _cleaned$props;\n var cleaned = omit(jsx, jsxKeys);\n if (cleaned.type) {\n cleaned.type = getName(cleaned.type);\n }\n if (cleaned !== null && cleaned !== void 0 && (_cleaned$props = cleaned.props) !== null && _cleaned$props !== void 0 && _cleaned$props.children) {\n cleaned.props.children = cleanJSX(cleaned.props.children);\n }\n return cleaned;\n }\n }\n return jsx;\n};\nexport var isDirtyJSX = function isDirtyJSX(jsx) {\n return _typeof(jsx) === \"object\" && jsx !== null && !Array.isArray(jsx) && Object.keys(jsx).includes(\"type\") && Object.keys(jsx).includes(\"props\") // even if {}\n && Object.keys(jsx).includes(\"key\") // even if null\n && Object.keys(jsx).includes(\"ref\") // even if null\n && Object.keys(jsx).includes(\"$$typeof\"); // Symbol(react.element)\n};\n\nexport var isJSX = function isJSX(jsx) {\n return _typeof(jsx) === \"object\" && jsx !== null && !Array.isArray(jsx) && typeof jsx[\"type\"] === \"string\" && Object.keys(jsx).includes(\"props\");\n};\nexport var isJsonLogic = function isJsonLogic(logic) {\n var isJL = _typeof(logic) === \"object\" // An object\n && logic !== null // but not null\n && !Array.isArray(logic) // and not an array\n && Object.keys(logic).length === 1; // with exactly one key\n if (isJL) {\n // additional checks ?\n }\n return isJL;\n};\nexport function sleep(delay) {\n return new Promise(function (resolve) {\n setTimeout(resolve, delay);\n });\n}\n\n// [1, 4, 9] + [1, 5, 9] => [1, 4, 5, 9]\n// Used for merging arrays of operators for different widgets of 1 type\nexport function mergeArraysSmart(arr1, arr2) {\n if (!arr1) arr1 = [];\n if (!arr2) arr2 = [];\n return arr2.map(function (op) {\n return [op, arr1.indexOf(op)];\n }).map(function (_ref, i, orig) {\n var _ref2 = _slicedToArray(_ref, 2),\n op = _ref2[0],\n ind = _ref2[1];\n if (ind == -1) {\n var next = orig.slice(i + 1);\n var prev = orig.slice(0, i);\n var after = prev.reverse().find(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n _cop = _ref4[0],\n ci = _ref4[1];\n return ci != -1;\n });\n var before = next.find(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n _cop = _ref6[0],\n ci = _ref6[1];\n return ci != -1;\n });\n if (before) return [op, \"before\", before[0]];else if (after) return [op, \"after\", after[0]];else return [op, \"append\", null];\n } else {\n // already exists\n return null;\n }\n }).filter(function (x) {\n return x !== null;\n }).reduce(function (acc, _ref7) {\n var _ref8 = _slicedToArray(_ref7, 3),\n newOp = _ref8[0],\n rel = _ref8[1],\n relOp = _ref8[2];\n var ind = acc.indexOf(relOp);\n if (acc.indexOf(newOp) == -1) {\n if (ind > -1) {\n // insert after or before\n acc.splice(ind + (rel == \"after\" ? 1 : 0), 0, newOp);\n } else {\n // insert to end or start\n acc.splice(rel == \"append\" ? Infinity : 0, 0, newOp);\n }\n }\n return acc;\n }, arr1.slice());\n}\nexport var deepFreeze = function deepFreeze(obj) {\n if (_typeof(obj) === \"object\" && obj !== null) {\n Object.keys(obj).forEach(function (prop) {\n deepFreeze(obj[prop]);\n });\n Object.freeze(obj);\n }\n};\nexport var isJsonCompatible = function isJsonCompatible(tpl, obj) {\n var bag = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var path = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n if (isObject(tpl)) {\n if (tpl[\"var\"]) {\n bag[tpl[\"var\"]] = obj;\n return true;\n }\n if (!isObject(obj)) return false;\n for (var k in tpl) {\n var tv = tpl[k];\n var ov = obj[k];\n if (!isJsonCompatible(tv, ov, bag, [].concat(_toConsumableArray(path), [k]))) return false;\n }\n return true;\n } else if (Array.isArray(tpl)) {\n if (!Array.isArray(obj)) return false;\n for (var i = 0; i < tpl.length; i++) {\n var _tv = tpl[i];\n var _ov = obj[i];\n if (!isJsonCompatible(_tv, _ov, bag, [].concat(_toConsumableArray(path), [i]))) return false;\n }\n return true;\n } else {\n return tpl === obj;\n }\n};\nvar isDev = function isDev() {\n return typeof process !== \"undefined\" && process.env && process.env.NODE_ENV == \"development\";\n};\nexport var getLogger = function getLogger() {\n var devMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var verbose = devMode != undefined ? devMode : isDev();\n return verbose ? console : {\n error: function error() {},\n log: function log() {},\n warn: function warn() {},\n debug: function debug() {},\n info: function info() {}\n };\n};\nexport var getFirstDefined = function getFirstDefined() {\n var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var ret;\n for (var i = 0; i < arr.length; i++) {\n var v = arr[i];\n if (v !== undefined) {\n ret = v;\n break;\n }\n }\n return ret;\n};\nexport var logger = getLogger();","export var settings = {\n formatField: function formatField(field, parts, label2, fieldDefinition, config, isForDisplay) {\n if (isForDisplay) return label2;else return field;\n },\n fieldSources: [\"field\"],\n keepInputOnChangeFieldSrc: true,\n fieldItemKeysForSearch: [\"label\", \"path\", \"altLabel\", \"grouplabel\"],\n listKeysForSearch: [\"title\", \"value\"],\n valueSourcesInfo: {\n value: {}\n },\n fieldSeparator: \".\",\n fieldSeparatorDisplay: \".\",\n canReorder: true,\n canRegroup: true,\n canDeleteLocked: false,\n canLeaveEmptyGroup: true,\n shouldCreateEmptyGroup: false,\n canShortMongoQuery: true,\n removeEmptyGroupsOnLoad: true,\n removeIncompleteRulesOnLoad: true,\n removeInvalidMultiSelectValuesOnLoad: true,\n setOpOnChangeField: [\"keep\", \"default\"],\n // 'default' (default if present), 'keep' (keep prev from last field), 'first', 'none'\n groupOperators: [\"some\", \"all\", \"none\"],\n defaultGroupConjunction: \"AND\",\n // localization\n locale: {\n moment: \"en\"\n },\n valueLabel: \"Value\",\n valuePlaceholder: \"Value\",\n fieldLabel: \"Field\",\n operatorLabel: \"Operator\",\n funcLabel: \"Function\",\n fieldPlaceholder: \"Select field\",\n funcPlaceholder: \"Select function\",\n operatorPlaceholder: \"Select operator\",\n lockLabel: \"Lock\",\n lockedLabel: \"Locked\",\n deleteLabel: \"Delete\",\n addGroupLabel: \"Add group\",\n addCaseLabel: \"Add condition\",\n addDefaultCaseLabel: \"Add default condition\",\n defaultCaseLabel: \"Default:\",\n addRuleLabel: \"Add rule\",\n addSubRuleLabel: \"Add sub rule\",\n delGroupLabel: \"Delete\",\n notLabel: \"Not\",\n fieldSourcesPopupTitle: \"Select source\",\n valueSourcesPopupTitle: \"Select value source\",\n removeRuleConfirmOptions: null,\n removeGroupConfirmOptions: null\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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; } } }; }\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); }\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; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar isObject = function isObject(v) {\n return _typeof(v) == \"object\" && v !== null && !Array.isArray(v);\n};\nexport var toListValue = function toListValue(v, title) {\n if (v == null || v == \"\") {\n return undefined;\n } else if (isObject(v)) {\n return _objectSpread(_objectSpread({}, v), {}, {\n title: v.title || v.value // fallback to value\n });\n } else {\n return {\n value: v,\n title: title !== undefined ? title : \"\" + v\n };\n }\n};\nexport var makeCustomListValue = function makeCustomListValue(v) {\n var lv = toListValue(v);\n if (isObject(lv)) {\n return _objectSpread(_objectSpread({}, toListValue(v)), {}, {\n isCustom: true\n });\n } else {\n // only if undefined\n return lv;\n }\n};\n\n// convert {: , ..} or [value, ..] to normal [{value, title}, ..]\nexport var listValuesToArray = function listValuesToArray(listValuesObj) {\n if (Array.isArray(listValuesObj)) return listValuesObj.map(function (v) {\n return toListValue(v);\n });\n if (!isObject(listValuesObj)) return listValuesObj;\n var listValuesArr = [];\n for (var v in listValuesObj) {\n var title = listValuesObj[v];\n listValuesArr.push(toListValue(v, title));\n }\n return listValuesArr;\n};\n\n// listValues can be {<value>: <title>, ..} or [{value, title}, ..] or [value, ..]\n// todo: same as getListValue() (but args are switched)\nexport var getItemInListValues = function getItemInListValues(listValues, value) {\n if (Array.isArray(listValues)) {\n var values = listValues.map(function (v) {\n return toListValue(v);\n });\n return values.find(function (v) {\n return \"\" + v.value === \"\" + value;\n });\n } else {\n return listValues[value] !== undefined ? toListValue(value, listValues[value]) : undefined;\n }\n};\nexport var getTitleInListValues = function getTitleInListValues(listValues, value) {\n if (listValues == undefined) return value;\n var it = getItemInListValues(listValues, value);\n return it !== undefined ? it.title : value;\n};\nexport var getValueInListValues = function getValueInListValues(listValues, value) {\n if (listValues == undefined) return value;\n var it = getItemInListValues(listValues, value);\n return it !== undefined ? it.value : value;\n};\nexport var mapListValues = function mapListValues(listValues, mapFn) {\n var ret = [];\n if (Array.isArray(listValues)) {\n var _iterator = _createForOfIteratorHelper(listValues),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var v = _step.value;\n var lv = mapFn(toListValue(v));\n if (lv != null) ret.push(lv);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else {\n for (var value in listValues) {\n var _lv = mapFn(toListValue(value, listValues[value]));\n if (_lv != null) ret.push(_lv);\n }\n }\n return ret;\n};\nexport var searchListValue = function searchListValue(search, listValues) {\n return mapListValues(listValues, function (lv) {\n return \"\".concat(lv.value).indexOf(search) != -1 || lv.title.indexOf(search) != -1 ? lv : null;\n }).filter(function (v) {\n return v !== null;\n }).shift();\n};\nexport var getListValue = function getListValue(selectedValue, listValues) {\n return mapListValues(listValues, function (lv) {\n return \"\" + lv.value === \"\" + selectedValue ? lv : null;\n }).filter(function (v) {\n return v !== null;\n }).shift();\n};","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport Immutable from \"immutable\";\nimport { toImmutableList, isImmutable, applyToJS as immutableToJs } from \"./stuff\";\nimport { jsToImmutable } from \"../import/tree\";\nexport { toImmutableList, jsToImmutable, immutableToJs, isImmutable };\n\n/**\n * @param {Immutable.List} path\n * @param {...string} suffix\n * @return {Immutable.List}\n */\nexport var expandTreePath = function expandTreePath(path) {\n for (var _len = arguments.length, suffix = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n suffix[_key - 1] = arguments[_key];\n }\n return path.interpose(\"children1\").withMutations(function (list) {\n list.skip(1);\n list.push.apply(list, suffix);\n return list;\n });\n};\n\n/**\n * @param {Immutable.List} path\n * @param {...string} suffix\n * @return {Immutable.List}\n */\nexport var expandTreeSubpath = function expandTreeSubpath(path) {\n for (var _len2 = arguments.length, suffix = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n suffix[_key2 - 1] = arguments[_key2];\n }\n return path.interpose(\"children1\").withMutations(function (list) {\n list.push.apply(list, suffix);\n return list;\n });\n};\n\n/**\n * @param {Immutable.Map} tree\n * @param {Immutable.List} path\n * @return {Immutable.Map}\n */\nexport var getItemByPath = function getItemByPath(tree, path) {\n var children = new Immutable.OrderedMap(_defineProperty({}, tree.get(\"id\"), tree));\n var res = tree;\n path.forEach(function (id) {\n res = children.get(id);\n children = res.get(\"children1\");\n });\n return res;\n};\n\n/**\n * Remove `path` in every item\n * @param {Immutable.Map} tree\n * @return {Immutable.Map} tree\n */\n// export const removePathsInTree = (tree) => {\n// let newTree = tree;\n\n// function _processNode (item, path) {\n// const itemPath = path.push(item.get(\"id\"));\n// if (item.get(\"path\")) {\n// newTree = newTree.removeIn(expandTreePath(itemPath, \"path\"));\n// }\n\n// const children = item.get(\"children1\");\n// if (children) {\n// children.map((child, _childId) => {\n// _processNode(child, itemPath);\n// });\n// }\n// }\n\n// _processNode(tree, new Immutable.List());\n\n// return newTree;\n// };\n\n/**\n * Remove `isLocked` in items that inherit parent's `isLocked`\n * @param {Immutable.Map} tree\n * @return {Immutable.Map} tree\n */\nexport var removeIsLockedInTree = function removeIsLockedInTree(tree) {\n var newTree = tree;\n function _processNode(item, path) {\n var isParentLocked = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var itemPath = path.push(item.get(\"id\"));\n var isLocked = item.getIn([\"properties\", \"isLocked\"]);\n if (isParentLocked && isLocked) {\n newTree = newTree.deleteIn(expandTreePath(itemPath, \"properties\", \"isLocked\"));\n }\n var children = item.get(\"children1\");\n if (children) {\n children.map(function (child, _childId) {\n _processNode(child, itemPath, isLocked || isParentLocked);\n });\n }\n }\n _processNode(tree, new Immutable.List());\n return newTree;\n};\n\n/**\n * Set correct `path` and `id` in every item\n * @param {Immutable.Map} tree\n * @return {Immutable.Map} tree\n */\nexport var fixPathsInTree = function fixPathsInTree(tree) {\n var newTree = tree;\n function _processNode(item, path, lev, nodeId) {\n if (!item) return;\n var currPath = item.get(\"path\");\n var currId = item.get(\"id\");\n var itemId = currId || nodeId;\n var itemPath = path.push(itemId);\n if (!currPath || !currPath.equals(itemPath)) {\n newTree = newTree.setIn(expandTreePath(itemPath, \"path\"), itemPath);\n }\n if (!currId) {\n newTree = newTree.setIn(expandTreePath(itemPath, \"id\"), itemId);\n }\n var children = item.get(\"children1\");\n if (children) {\n if (children.constructor.name == \"Map\") {\n // protect: should be OrderedMap, not Map (issue #501)\n newTree = newTree.setIn(expandTreePath(itemPath, \"children1\"), new Immutable.OrderedMap(children));\n }\n children.map(function (child, childId) {\n _processNode(child, itemPath, lev + 1, childId);\n });\n }\n }\n _processNode(tree, new Immutable.List(), 0);\n return newTree;\n};\nexport var fixEmptyGroupsInTree = function fixEmptyGroupsInTree(tree) {\n var newTree = tree;\n function _processNode(item, path, lev, nodeId) {\n if (!item) return false;\n var itemId = item.get(\"id\") || nodeId;\n var itemPath = path.push(itemId);\n var children = item.get(\"children1\");\n if (children) {\n var allChildrenGone = children.map(function (child, childId) {\n return _processNode(child, itemPath, lev + 1, childId);\n }).reduce(function (curr, v) {\n return curr && v;\n }, true);\n if ((children.size == 0 || allChildrenGone) && lev > 0) {\n newTree = newTree.deleteIn(expandTreePath(itemPath));\n return true;\n }\n }\n return false;\n }\n _processNode(tree, new Immutable.List(), 0);\n return newTree;\n};\n\n/**\n * @param {Immutable.Map} tree\n * @return {Object} {flat, items}\n */\nexport var getFlatTree = function getFlatTree(tree) {\n var flat = [];\n var items = {};\n var realHeight = 0;\n function _flatizeTree(item, path, insideCollapsed, insideLocked, insideRuleGroup, lev, info, parentType, caseId) {\n var type = item.get(\"type\");\n var collapsed = item.get(\"collapsed\");\n var id = item.get(\"id\");\n var children = item.get(\"children1\");\n var isLocked = item.getIn([\"properties\", \"isLocked\"]);\n var childrenIds = children ? children.map(function (_child, childId) {\n return childId;\n }).toArray() : null;\n var isRuleGroup = type == \"rule_group\";\n // tip: count rule_group as 1 rule\n var isLeaf = !insideRuleGroup && (!children || isRuleGroup);\n var hasChildren = (childrenIds === null || childrenIds === void 0 ? void 0 : childrenIds.length) > 0;\n var itemsBefore = flat.length;\n var top = realHeight;\n flat.push(id);\n if (!insideCollapsed) realHeight += 1;\n info.height = (info.height || 0) + 1;\n items[id] = {\n type: type,\n parent: path.length ? path[path.length - 1] : null,\n parentType: parentType,\n caseId: type == \"case_group\" ? id : caseId,\n isDefaultCase: type == \"case_group\" && !children,\n path: path.concat(id),\n lev: lev,\n leaf: !children,\n index: itemsBefore,\n id: id,\n children: childrenIds,\n leafsCount: 0,\n _top: itemsBefore,\n //_height: (itemsAfter - itemsBefore),\n top: insideCollapsed ? null : top,\n //height: height,\n //bottom: (insideCollapsed ? null : top) + height,\n collapsed: collapsed,\n node: item,\n isLocked: isLocked || insideLocked\n };\n var depth;\n if (children) {\n var subinfo = {};\n children.map(function (child, _childId) {\n _flatizeTree(child, path.concat(id), insideCollapsed || collapsed, insideLocked || isLocked, insideRuleGroup || isRuleGroup, lev + 1, subinfo, type, type == \"case_group\" ? id : caseId);\n });\n if (!collapsed) {\n info.height = (info.height || 0) + (subinfo.height || 0);\n if (hasChildren && !isRuleGroup) {\n // tip: don't count children of rule_group\n depth = (subinfo.depth || 0) + 1;\n }\n }\n }\n if (caseId && isLeaf) {\n items[caseId].leafsCount++;\n }\n var itemsAfter = flat.length;\n var _bottom = realHeight;\n var height = info.height;\n Object.assign(items[id], {\n _height: itemsAfter - itemsBefore,\n height: height,\n bottom: (insideCollapsed ? null : top) + height\n });\n if (depth != undefined) {\n Object.assign(items[id], {\n depth: depth\n });\n info.depth = Math.max(info.depth || 0, depth);\n }\n }\n _flatizeTree(tree, [], false, false, false, 0, {}, null, null);\n for (var i = 0; i < flat.length; i++) {\n var prevId = i > 0 ? flat[i - 1] : null;\n var nextId = i < flat.length - 1 ? flat[i + 1] : null;\n var item = items[flat[i]];\n item.prev = prevId;\n item.next = nextId;\n }\n return {\n flat: flat,\n items: items\n };\n};\n\n/**\n * Returns count of reorderable(!) nodes\n * @param {Immutable.Map} tree\n * @return {Integer}\n */\nexport var getTotalReordableNodesCountInTree = function getTotalReordableNodesCountInTree(tree) {\n if (!tree) return -1;\n var cnt = 0;\n function _processNode(item, path, lev) {\n var id, children, type;\n if (typeof item.get === \"function\") {\n id = item.get(\"id\");\n children = item.get(\"children1\");\n type = item.get(\"type\");\n } else {\n id = item.id;\n children = item.children1;\n type = item.type;\n }\n var isRuleGroup = type == \"rule_group\";\n cnt++;\n //tip: rules in rule-group can be reordered only inside\n if (children && !isRuleGroup) {\n children.map(function (child, _childId) {\n _processNode(child, path.concat(id), lev + 1);\n });\n }\n }\n _processNode(tree, [], 0);\n return cnt - 1; // -1 for root\n};\n\n/**\n * Returns count of rules (leafs, i.e. don't count groups)\n * @param {Immutable.Map} tree\n * @return {Integer}\n */\nexport var getTotalRulesCountInTree = function getTotalRulesCountInTree(tree) {\n if (!tree) return -1;\n var cnt = 0;\n function _processNode(item, path, lev) {\n var id, children, type;\n if (typeof item.get === \"function\") {\n id = item.get(\"id\");\n children = item.get(\"children1\");\n type = item.get(\"type\");\n } else {\n id = item.id;\n children = item.children1;\n type = item.type;\n }\n if (type == \"rule\" || type == \"rule_group\") {\n // tip: count rule_group as 1 rule\n cnt++;\n } else if (children) {\n children.map(function (child, _childId) {\n _processNode(child, path.concat(id), lev + 1);\n });\n }\n }\n _processNode(tree, [], 0);\n return cnt;\n};\nexport var getTreeBadFields = function getTreeBadFields(tree) {\n var badFields = [];\n function _processNode(item, path, lev) {\n var id = item.get(\"id\");\n var children = item.get(\"children1\");\n var valueError = item.getIn([\"properties\", \"valueError\"]);\n var field = item.getIn([\"properties\", \"field\"]);\n if (valueError && valueError.size > 0 && valueError.filter(function (v) {\n return v != null;\n }).size > 0) {\n badFields.push(field);\n }\n if (children) {\n children.map(function (child, _childId) {\n _processNode(child, path.concat(id), lev + 1);\n });\n }\n }\n if (tree) _processNode(tree, [], 0);\n return Array.from(new Set(badFields));\n};\n\n// Remove fields that can be calced: \"id\", \"path\"\n// Remove empty fields: \"operatorOptions\"\nexport var getLightTree = function getLightTree(tree) {\n var children1AsArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var newTree = tree;\n function _processNode(item, itemId) {\n if (item.path) delete item.path;\n if (!children1AsArray && itemId) delete item.id;\n var properties = item.properties;\n if (properties) {\n if (properties.operatorOptions == null) delete properties.operatorOptions;\n }\n var children = item.children1;\n if (children) {\n for (var id in children) {\n _processNode(children[id], id);\n }\n if (children1AsArray) {\n item.children1 = Object.values(children);\n }\n }\n }\n _processNode(tree, null);\n return newTree;\n};\nexport var getSwitchValues = function getSwitchValues(tree) {\n var vals = [];\n var children = tree.get(\"children1\");\n if (children) {\n children.map(function (child) {\n var value = child.getIn([\"properties\", \"value\"]);\n var caseValue;\n if (value && value.size == 1) {\n caseValue = value.get(0);\n if (Array.isArray(caseValue) && caseValue.length == 0) {\n caseValue = null;\n }\n } else {\n caseValue = null;\n }\n vals = [].concat(_toConsumableArray(vals), [caseValue]);\n });\n }\n return vals;\n};\nexport var isEmptyTree = function isEmptyTree(tree) {\n return !tree.get(\"children1\") || tree.get(\"children1\").size == 0;\n};\nexport var hasChildren = function hasChildren(tree, path) {\n return tree.getIn(expandTreePath(path, \"children1\")).size > 0;\n};","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport Immutable, { fromJS, Map } from \"immutable\";\nimport { validateTree } from \"../utils/validation\";\nimport { extendConfig } from \"../utils/configUtils\";\nimport { getTreeBadFields, getLightTree } from \"../utils/treeUtils\";\nimport { isJsonLogic } from \"../utils/stuff\";\nexport var getTree = function getTree(immutableTree) {\n var light = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var children1AsArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!immutableTree) return undefined;\n var tree = immutableTree;\n tree = tree.toJS();\n if (light) tree = getLightTree(tree, children1AsArray);\n return tree;\n};\nexport var loadTree = function loadTree(serTree) {\n if (isImmutableTree(serTree)) {\n return serTree;\n } else if (isTree(serTree)) {\n return jsToImmutable(serTree);\n } else if (typeof serTree == \"string\" && serTree.startsWith('[\"~#iM\"')) {\n //tip: old versions of RAQB were saving tree with `transit.toJSON()`\n // https://github.com/ukrbublik/react-awesome-query-builder/issues/69\n throw \"You are trying to load query in obsolete serialization format (Immutable string) which is not supported in versions starting from 2.1.17\";\n } else if (typeof serTree == \"string\") {\n return jsToImmutable(JSON.parse(serTree));\n } else throw \"Can't load tree!\";\n};\nexport var checkTree = function checkTree(tree, config) {\n if (!tree) return undefined;\n var extendedConfig = extendConfig(config, undefined, true);\n return validateTree(tree, null, extendedConfig, extendedConfig);\n};\nexport var isValidTree = function isValidTree(tree) {\n return getTreeBadFields(tree).length == 0;\n};\nexport var isImmutableTree = function isImmutableTree(tree) {\n return Map.isMap(tree);\n};\nexport var isTree = function isTree(tree) {\n return _typeof(tree) == \"object\" && (tree.type == \"group\" || tree.type == \"switch_group\");\n};\nexport { isJsonLogic };\nexport function jsToImmutable(tree) {\n var imm = fromJS(tree, function (key, value) {\n var outValue;\n if (key == \"properties\") {\n outValue = value.toOrderedMap();\n\n // `value` should be undefined instead of null\n // JSON doesn't support undefined and replaces undefined -> null\n // So fix: null -> undefined\n for (var i = 0; i < 2; i++) {\n var _outValue$get;\n if (((_outValue$get = outValue.get(\"value\")) === null || _outValue$get === void 0 ? void 0 : _outValue$get.get(i)) === null) {\n outValue = outValue.setIn([\"value\", i], undefined);\n }\n }\n } else if (key == \"value\" && Immutable.Iterable.isIndexed(value)) {\n outValue = value.map(function (v) {\n var _v$toJS;\n var vJs = v === null || v === void 0 || (_v$toJS = v.toJS) === null || _v$toJS === void 0 ? void 0 : _v$toJS.call(v);\n if (vJs !== null && vJs !== void 0 && vJs.func) {\n return v.toOrderedMap();\n } else if (v !== null && v !== void 0 && v.toJS) {\n // for values of multiselect use Array instead of List\n return vJs;\n } else {\n return v;\n }\n }).toList();\n } else if (key == \"asyncListValues\") {\n // keep in JS format\n outValue = value.toJS();\n } else if (key == \"children1\" && Immutable.Iterable.isIndexed(value)) {\n outValue = new Immutable.OrderedMap(value.map(function (child) {\n return [child.get(\"id\"), child];\n }));\n } else {\n outValue = Immutable.Iterable.isIndexed(value) ? value.toList() : value.toOrderedMap();\n }\n return outValue;\n });\n return imm;\n}","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _toArray from \"@babel/runtime/helpers/toArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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(_e2) { throw _e2; }, 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 = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\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); }\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; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport uuid from \"../utils/uuid\";\nimport { defaultValue, isJsonLogic, shallowEqual, logger } from \"../utils/stuff\";\nimport { getFieldConfig, extendConfig, normalizeField, getFuncConfig, iterateFuncs, getFieldParts } from \"../utils/configUtils\";\nimport { getWidgetForFieldOp } from \"../utils/ruleUtils\";\nimport { loadTree } from \"./tree\";\nimport { defaultConjunction, defaultGroupConjunction } from \"../utils/defaultUtils\";\nimport moment from \"moment\";\n\n// http://jsonlogic.com/\n\n// helpers\nvar arrayUniq = function arrayUniq(arr) {\n return Array.from(new Set(arr));\n};\nvar arrayToObject = function arrayToObject(arr) {\n return arr.reduce(function (acc, _ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n f = _ref2[0],\n fc = _ref2[1];\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, f, fc));\n }, {});\n};\nvar createMeta = function createMeta() {\n return {\n errors: []\n };\n};\nexport var loadFromJsonLogic = function loadFromJsonLogic(logicTree, config) {\n return _loadFromJsonLogic(logicTree, config, false);\n};\nexport var _loadFromJsonLogic = function _loadFromJsonLogic(logicTree, config) {\n var returnErrors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n //meta is mutable\n var meta = createMeta();\n var extendedConfig = extendConfig(config, undefined, false);\n var conv = buildConv(extendedConfig);\n var jsTree = logicTree ? convertFromLogic(logicTree, conv, extendedConfig, \"rule\", meta) : undefined;\n if (jsTree && jsTree.type != \"group\") {\n jsTree = wrapInDefaultConj(jsTree, extendedConfig);\n }\n var immTree = jsTree ? loadTree(jsTree) : undefined;\n if (returnErrors) {\n return [immTree, meta.errors];\n } else {\n if (meta.errors.length) console.warn(\"Errors while importing from JsonLogic:\", meta.errors);\n return immTree;\n }\n};\nvar buildConv = function buildConv(config) {\n var operators = {};\n for (var opKey in config.operators) {\n var opConfig = config.operators[opKey];\n if (typeof opConfig.jsonLogic == \"string\") {\n // example: \"</2\", \"#in/1\"\n var opk = (opConfig._jsonLogicIsRevArgs ? \"#\" : \"\") + opConfig.jsonLogic + \"/\" + defaultValue(opConfig.cardinality, 1);\n if (!operators[opk]) operators[opk] = [];\n operators[opk].push(opKey);\n } else if (typeof opConfig.jsonLogic2 == \"string\") {\n // example: all-in/1\"\n var _opk = opConfig.jsonLogic2 + \"/\" + defaultValue(opConfig.cardinality, 1);\n if (!operators[_opk]) operators[_opk] = [];\n operators[_opk].push(opKey);\n }\n }\n var conjunctions = {};\n for (var conjKey in config.conjunctions) {\n var conjunctionDefinition = config.conjunctions[conjKey];\n var ck = conjunctionDefinition.jsonLogicConj || conjKey.toLowerCase();\n conjunctions[ck] = conjKey;\n }\n var funcs = {};\n var _iterator = _createForOfIteratorHelper(iterateFuncs(config)),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray(_step.value, 2),\n funcPath = _step$value[0],\n funcConfig = _step$value[1];\n var fk = void 0;\n if (funcConfig.jsonLogicIsMethod) {\n fk = \"#\" + funcConfig.jsonLogic;\n } else if (typeof funcConfig.jsonLogic == \"string\") {\n fk = funcConfig.jsonLogic;\n }\n if (fk) {\n if (!funcs[fk]) funcs[fk] = [];\n funcs[fk].push(funcPath);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var _config$settings$json = config.settings.jsonLogic,\n groupVarKey = _config$settings$json.groupVarKey,\n altVarKey = _config$settings$json.altVarKey;\n return {\n operators: operators,\n conjunctions: conjunctions,\n funcs: funcs,\n varKeys: [\"var\", groupVarKey, altVarKey]\n };\n};\nvar convertFromLogic = function convertFromLogic(logic, conv, config, expectedType, meta) {\n var not = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n var fieldConfig = arguments.length > 6 ? arguments[6] : undefined;\n var widget = arguments.length > 7 ? arguments[7] : undefined;\n var parentField = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : null;\n var _isLockedLogic = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;\n var op, vals;\n if (isJsonLogic(logic)) {\n op = Object.keys(logic)[0];\n vals = logic[op];\n if (!Array.isArray(vals)) vals = [vals];\n }\n var ret;\n var beforeErrorsCnt = meta.errors.length;\n var lockedOp = config.settings.jsonLogic.lockedOp;\n var isEmptyOp = op == \"!\" && vals.length == 1 && vals[0] && isJsonLogic(vals[0]) && conv.varKeys.includes(Object.keys(vals[0])[0]);\n var isRev = op == \"!\" && !isEmptyOp;\n var isLocked = lockedOp && op == lockedOp;\n if (isLocked) {\n ret = convertFromLogic(vals[0], conv, config, expectedType, meta, not, fieldConfig, widget, parentField, true);\n } else if (isRev) {\n // reverse with not\n ret = convertFromLogic(vals[0], conv, config, expectedType, meta, !not, fieldConfig, widget, parentField);\n } else if (expectedType == \"val\") {\n // not is not used here\n ret = convertFieldRhs(op, vals, conv, config, not, meta, parentField) || convertFuncRhs(op, vals, conv, config, not, fieldConfig, meta, parentField) || convertValRhs(logic, fieldConfig, widget, config, meta);\n } else if (expectedType == \"rule\") {\n ret = convertConj(op, vals, conv, config, not, meta, parentField, false) || convertOp(op, vals, conv, config, not, meta, parentField);\n }\n var afterErrorsCnt = meta.errors.length;\n if (op != \"!\" && ret === undefined && afterErrorsCnt == beforeErrorsCnt) {\n meta.errors.push(\"Can't parse logic \".concat(JSON.stringify(logic)));\n }\n if (isLocked) {\n ret.properties.isLocked = true;\n }\n return ret;\n};\nvar convertValRhs = function convertValRhs(val, fieldConfig, widget, config, meta) {\n var _fieldConfig$fieldSet;\n if (val === undefined) val = fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.defaultValue;\n if (val === undefined) return undefined;\n var widgetConfig = config.widgets[widget || (fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.mainWidget)];\n var fieldType = fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.type;\n if (!widgetConfig) {\n meta.errors.push(\"No widget for type \".concat(fieldType));\n return undefined;\n }\n if (isJsonLogic(val)) {\n meta.errors.push(\"Unexpected logic in value: \".concat(JSON.stringify(val)));\n return undefined;\n }\n\n // number of seconds -> time string\n if (fieldType == \"time\" && typeof val == \"number\") {\n var h = Math.floor(val / 60 / 60) % 24,\n m = Math.floor(val / 60) % 60,\n s = val % 60;\n var valueFormat = widgetConfig.valueFormat;\n if (valueFormat) {\n var dateVal = new Date(val);\n dateVal.setMilliseconds(0);\n dateVal.setHours(h);\n dateVal.setMinutes(m);\n dateVal.setSeconds(s);\n val = moment(dateVal).format(valueFormat);\n } else {\n val = \"\".concat(h, \":\").concat(m, \":\").concat(s);\n }\n }\n\n // \"2020-01-08T22:00:00.000Z\" -> Date object\n if ([\"date\", \"datetime\"].includes(fieldType) && val && !(val instanceof Date)) {\n try {\n var _dateVal = new Date(val);\n if (_dateVal instanceof Date && _dateVal.toISOString() === val) {\n val = _dateVal;\n }\n } catch (e) {\n meta.errors.push(\"Can't convert value \".concat(val, \" as Date\"));\n val = undefined;\n }\n }\n\n // Date object -> formatted string\n if (val instanceof Date && fieldConfig) {\n var _valueFormat = widgetConfig.valueFormat;\n if (_valueFormat) {\n val = moment(val).format(_valueFormat);\n }\n }\n var asyncListValues;\n if (val && fieldConfig !== null && fieldConfig !== void 0 && (_fieldConfig$fieldSet = fieldConfig.fieldSettings) !== null && _fieldConfig$fieldSet !== void 0 && _fieldConfig$fieldSet.asyncFetch) {\n var vals = Array.isArray(val) ? val : [val];\n asyncListValues = vals;\n }\n return {\n valueSrc: \"value\",\n value: val,\n valueType: widgetConfig.type,\n asyncListValues: asyncListValues\n };\n};\nvar convertFieldRhs = function convertFieldRhs(op, vals, conv, config, not, meta) {\n var parentField = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n if (conv.varKeys.includes(op) && typeof vals[0] == \"string\") {\n var field = normalizeField(config, vals[0], parentField);\n var fieldConfig = getFieldConfig(config, field);\n if (!fieldConfig) {\n meta.errors.push(\"No config for field \".concat(field));\n return undefined;\n }\n return {\n valueSrc: \"field\",\n value: field,\n valueType: fieldConfig.type\n };\n }\n return undefined;\n};\nvar convertLhs = function convertLhs(isGroup0, jlField, args, conv, config) {\n var not = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n var fieldConfig = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n var meta = arguments.length > 7 ? arguments[7] : undefined;\n var parentField = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : null;\n var k = Object.keys(jlField)[0];\n var v = Object.values(jlField)[0];\n var _parse = function _parse(k, v) {\n return convertFieldLhs(k, v, conv, config, not, meta, parentField) || convertFuncLhs(k, v, conv, config, not, fieldConfig, meta, parentField);\n };\n var beforeErrorsCnt = meta.errors.length;\n var field, fieldSrc, having, isGroup;\n var parsed = _parse(k, v);\n if (parsed) {\n field = parsed.field;\n fieldSrc = parsed.fieldSrc;\n }\n if (isGroup0) {\n isGroup = true;\n having = args[0];\n args = [];\n }\n // reduce/filter for group ext\n if (k == \"reduce\" && Array.isArray(v) && v.length == 3) {\n var _v = v,\n _v2 = _slicedToArray(_v, 3),\n filter = _v2[0],\n acc = _v2[1],\n init = _v2[2];\n if (isJsonLogic(filter) && init == 0 && isJsonLogic(acc) && Array.isArray(acc[\"+\"]) && acc[\"+\"][0] == 1 && isJsonLogic(acc[\"+\"][1]) && acc[\"+\"][1][\"var\"] == \"accumulator\") {\n k = Object.keys(filter)[0];\n v = Object.values(filter)[0];\n if (k == \"filter\") {\n var _v3 = v,\n _v4 = _slicedToArray(_v3, 2),\n group = _v4[0],\n _filter = _v4[1];\n if (isJsonLogic(group)) {\n k = Object.keys(group)[0];\n v = Object.values(group)[0];\n var parsedGroup = _parse(k, v);\n if (parsedGroup) {\n field = parsedGroup.field;\n fieldSrc = parsedGroup.fieldSrc;\n having = _filter;\n isGroup = true;\n }\n }\n } else {\n var _parsedGroup = _parse(k, v);\n if (_parsedGroup) {\n field = _parsedGroup.field;\n fieldSrc = _parsedGroup.fieldSrc;\n isGroup = true;\n }\n }\n }\n }\n var afterErrorsCnt = meta.errors.length;\n if (!field && afterErrorsCnt == beforeErrorsCnt) {\n meta.errors.push(\"Unknown LHS \".concat(JSON.stringify(jlField)));\n }\n if (!field) return;\n return {\n field: field,\n fieldSrc: fieldSrc,\n having: having,\n isGroup: isGroup,\n args: args\n };\n};\nvar convertFieldLhs = function convertFieldLhs(op, vals, conv, config, not, meta) {\n var parentField = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n if (!Array.isArray(vals)) vals = [vals];\n var parsed = convertFieldRhs(op, vals, conv, config, not, meta, parentField);\n if (parsed) {\n return {\n fieldSrc: \"field\",\n field: parsed.value\n };\n }\n return undefined;\n};\nvar convertFuncLhs = function convertFuncLhs(op, vals, conv, config, not) {\n var fieldConfig = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n var meta = arguments.length > 6 ? arguments[6] : undefined;\n var parentField = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;\n var parsed = convertFuncRhs(op, vals, conv, config, not, fieldConfig, meta, parentField);\n if (parsed) {\n return {\n fieldSrc: \"func\",\n field: parsed.value\n };\n }\n return undefined;\n};\nvar convertFuncRhs = function convertFuncRhs(op, vals, conv, config, not) {\n var fieldConfig = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n var meta = arguments.length > 6 ? arguments[6] : undefined;\n var parentField = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;\n if (!op) return undefined;\n var func, argsArr, funcKey;\n var jsonLogicIsMethod = op == \"method\";\n if (jsonLogicIsMethod) {\n var obj, opts;\n var _vals = _toArray(vals);\n obj = _vals[0];\n func = _vals[1];\n opts = _vals.slice(2);\n argsArr = [obj].concat(_toConsumableArray(opts));\n } else {\n func = op;\n argsArr = vals;\n }\n var fk = (jsonLogicIsMethod ? \"#\" : \"\") + func;\n var returnType = (fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.type) || (fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.returnType);\n var funcKeys = (conv.funcs[fk] || []).filter(function (k) {\n return fieldConfig ? getFuncConfig(config, k).returnType == returnType : true;\n });\n if (funcKeys.length) {\n funcKey = funcKeys[0];\n } else {\n var v = _defineProperty({}, op, vals);\n var _iterator2 = _createForOfIteratorHelper(iterateFuncs(config)),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _step2$value = _slicedToArray(_step2.value, 2),\n f = _step2$value[0],\n fc = _step2$value[1];\n if (fc.jsonLogicImport && (returnType ? fc.returnType == returnType : true)) {\n var parsed = void 0;\n try {\n parsed = fc.jsonLogicImport(v);\n } catch (_e) {\n // given expression `v` can't be parsed into function\n }\n if (parsed) {\n funcKey = f;\n argsArr = parsed;\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n if (!funcKey) return undefined;\n if (funcKey) {\n var funcConfig = getFuncConfig(config, funcKey);\n var argKeys = Object.keys(funcConfig.args || {});\n var argsObj = argsArr.reduce(function (acc, val, ind) {\n var argKey = argKeys[ind];\n var argConfig = funcConfig.args[argKey];\n var argVal;\n if (argConfig) {\n argVal = convertFromLogic(val, conv, config, \"val\", meta, false, argConfig, null, parentField);\n }\n return argVal !== undefined ? _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, argKey, argVal)) : acc;\n }, {});\n for (var argKey in funcConfig.args) {\n var argConfig = funcConfig.args[argKey];\n var argVal = argsObj[argKey];\n if (argVal === undefined) {\n argVal = argConfig === null || argConfig === void 0 ? void 0 : argConfig.defaultValue;\n if (argVal !== undefined) {\n var _argVal;\n argVal = {\n value: argVal,\n valueSrc: (_argVal = argVal) !== null && _argVal !== void 0 && _argVal.func ? \"func\" : \"value\",\n valueType: argConfig.type\n };\n }\n if (argVal === undefined) {\n if (argConfig !== null && argConfig !== void 0 && argConfig.isOptional) {\n //ignore\n } else {\n meta.errors.push(\"No value for arg \".concat(argKey, \" of func \").concat(funcKey));\n return undefined;\n }\n } else {\n argsObj[argKey] = argVal;\n }\n }\n }\n return {\n valueSrc: \"func\",\n value: {\n func: funcKey,\n args: argsObj\n },\n valueType: funcConfig.returnType\n };\n }\n return undefined;\n};\nvar convertConj = function convertConj(op, vals, conv, config, not, meta) {\n var parentField = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n var isRuleGroup = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;\n var conjKey = conv.conjunctions[op];\n var fieldSeparator = config.settings.fieldSeparator;\n // const parentFieldConfig = parentField ? getFieldConfig(config, parentField) : null;\n // const isParentGroup = parentFieldConfig?.type == \"!group\";\n if (conjKey) {\n var type = \"group\";\n var children = vals.map(function (v) {\n return convertFromLogic(v, conv, config, \"rule\", meta, false, null, null, parentField);\n }).filter(function (r) {\n return r !== undefined;\n }).reduce(function (acc, r) {\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, r.id, r));\n }, {});\n var complexFields = Object.values(children).map(function (v) {\n var _v$properties, _v$properties2;\n return (v === null || v === void 0 || (_v$properties = v.properties) === null || _v$properties === void 0 ? void 0 : _v$properties.fieldSrc) == \"field\" && (v === null || v === void 0 || (_v$properties2 = v.properties) === null || _v$properties2 === void 0 ? void 0 : _v$properties2.field);\n }).filter(function (f) {\n var _f$includes;\n return f === null || f === void 0 || (_f$includes = f.includes) === null || _f$includes === void 0 ? void 0 : _f$includes.call(f, fieldSeparator);\n });\n var complexFieldsGroupAncestors = Object.fromEntries(arrayUniq(complexFields).map(function (f) {\n var parts = f.split(fieldSeparator);\n var ancs = Object.fromEntries(parts.slice(0, -1).map(function (f, i, parts) {\n return [].concat(_toConsumableArray(parts.slice(0, i)), [f]);\n }).map(function (fp) {\n return [fp.join(fieldSeparator), getFieldConfig(config, fp)];\n }).filter(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n _f = _ref4[0],\n fc = _ref4[1];\n return (fc === null || fc === void 0 ? void 0 : fc.type) == \"!group\";\n }));\n return [f, Object.keys(ancs)];\n }));\n // const childrenInRuleGroup = Object.values(children)\n // .map(v => v?.properties?.fieldSrc == \"field\" && v?.properties?.field)\n // .map(f => complexFieldsGroupAncestors[f])\n // .filter(ancs => ancs && ancs.length);\n // const usedRuleGroups = arrayUniq(Object.values(complexFieldsGroupAncestors).flat());\n // const usedTopRuleGroups = topLevelFieldsFilter(usedRuleGroups);\n\n var properties = {\n conjunction: conjKey,\n not: not\n };\n var id = uuid();\n var children1 = {};\n var groupToId = {};\n Object.entries(children).map(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n k = _ref6[0],\n v = _ref6[1];\n if ((v === null || v === void 0 ? void 0 : v.type) == \"group\" || (v === null || v === void 0 ? void 0 : v.type) == \"rule_group\") {\n // put as-is\n children1[k] = v;\n } else {\n var _v$properties3;\n var field = v === null || v === void 0 || (_v$properties3 = v.properties) === null || _v$properties3 === void 0 ? void 0 : _v$properties3.field;\n var groupAncestors = complexFieldsGroupAncestors[field] || [];\n var groupField = groupAncestors[groupAncestors.length - 1];\n if (!groupField) {\n // not in rule_group (can be simple field or in struct) - put as-is\n if (v) {\n children1[k] = v;\n }\n } else {\n // wrap field in rule_group (with creating hierarchy if need)\n var ch = children1;\n var parentFieldParts = getFieldParts(parentField, config);\n var groupPath = getFieldParts(groupField, config);\n var isInParent = shallowEqual(parentFieldParts, groupPath.slice(0, parentFieldParts.length));\n if (!isInParent) parentFieldParts = []; // should not be\n var traverseGroupFields = groupField.split(fieldSeparator).slice(parentFieldParts.length).map(function (f, i, parts) {\n return [].concat(_toConsumableArray(parentFieldParts), _toConsumableArray(parts.slice(0, i)), [f]).join(fieldSeparator);\n }).map(function (f) {\n return {\n f: f,\n fc: getFieldConfig(config, f) || {}\n };\n }).filter(function (_ref7) {\n var fc = _ref7.fc;\n return fc.type != \"!struct\";\n });\n traverseGroupFields.map(function (_ref8, i) {\n var gf = _ref8.f,\n gfc = _ref8.fc;\n var groupId = groupToId[gf];\n if (!groupId) {\n groupId = uuid();\n groupToId[gf] = groupId;\n ch[groupId] = {\n type: \"rule_group\",\n id: groupId,\n children1: {},\n properties: {\n conjunction: conjKey,\n not: false,\n field: gf,\n fieldSrc: \"field\",\n mode: gfc.mode\n }\n };\n }\n ch = ch[groupId].children1;\n });\n ch[k] = v;\n }\n }\n });\n\n // tip: for isRuleGroup=true correct type and properties will be set out of this func\n\n return {\n type: type,\n id: id,\n children1: children1,\n properties: properties\n };\n }\n return undefined;\n};\n\n// const topLevelFieldsFilter = (fields) => {\n// let arr = [...fields].sort((a, b) => (a.length - b.length));\n// for (let i = 0 ; i < arr.length ; i++) {\n// for (let j = i + 1 ; j < arr.length ; j++) {\n// if (arr[j].indexOf(arr[i]) == 0) {\n// // arr[j] is inside arr[i] (eg. \"a.b\" inside \"a\")\n// arr.splice(j, 1);\n// j--;\n// }\n// }\n// }\n// return arr;\n// };\n\nvar wrapInDefaultConjRuleGroup = function wrapInDefaultConjRuleGroup(rule, parentField, parentFieldConfig, config, conj) {\n if (!rule) return undefined;\n return {\n type: \"rule_group\",\n id: uuid(),\n children1: _defineProperty({}, rule.id, rule),\n properties: {\n conjunction: conj || defaultGroupConjunction(config, parentFieldConfig),\n not: false,\n field: parentField\n }\n };\n};\nvar wrapInDefaultConj = function wrapInDefaultConj(rule, config) {\n var not = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n return {\n type: \"group\",\n id: uuid(),\n children1: _defineProperty({}, rule.id, rule),\n properties: {\n conjunction: defaultConjunction(config),\n not: not\n }\n };\n};\nvar parseRule = function parseRule(op, arity, vals, parentField, conv, config, meta) {\n var submeta = createMeta();\n var res = _parseRule(op, arity, vals, parentField, conv, config, false, submeta);\n if (!res) {\n // try reverse\n res = _parseRule(op, arity, vals, parentField, conv, config, true, createMeta());\n }\n if (!res) {\n meta.errors.push(submeta.errors.join(\"; \") || \"Unknown op \".concat(op, \"/\").concat(arity));\n return undefined;\n }\n return res;\n};\nvar _parseRule = function _parseRule(op, arity, vals, parentField, conv, config, isRevArgs, meta) {\n // config.settings.groupOperators are used for group count (cardinality = 0 is exception)\n // but don't confuse with \"all-in\" or \"some-in\" for multiselect\n var isAllOrSomeInForMultiselect = (op == \"all\" || op == \"some\") && isJsonLogic(vals[1]) && Object.keys(vals[1])[0] == \"in\";\n var isGroup0 = !isAllOrSomeInForMultiselect && config.settings.groupOperators.includes(op);\n var eqOps = [\"==\", \"!=\"];\n var cardinality = isGroup0 ? 0 : arity - 1;\n if (isGroup0) cardinality = 0;else if (eqOps.includes(op) && cardinality == 1 && vals[1] === null) {\n arity = 1;\n cardinality = 0;\n vals = [vals[0]];\n }\n var opk = op + \"/\" + cardinality;\n var opKeys = conv.operators[(isRevArgs ? \"#\" : \"\") + opk];\n if (!opKeys) return;\n var jlField,\n jlArgs = [];\n var rangeOps = [\"<\", \"<=\", \">\", \">=\"];\n if (rangeOps.includes(op) && arity == 3) {\n jlField = vals[1];\n jlArgs = [vals[0], vals[2]];\n } else if (isRevArgs) {\n jlField = vals[1];\n jlArgs = [vals[0]];\n } else {\n var _vals2 = vals;\n var _vals3 = _toArray(_vals2);\n jlField = _vals3[0];\n jlArgs = _vals3.slice(1);\n }\n if (!isJsonLogic(jlField)) {\n meta.errors.push(\"Incorrect operands for \".concat(op, \": \").concat(JSON.stringify(vals)));\n return;\n }\n var lhs = convertLhs(isGroup0, jlField, jlArgs, conv, config, null, null, meta, parentField);\n if (!lhs) return;\n var field = lhs.field,\n fieldSrc = lhs.fieldSrc,\n having = lhs.having,\n isGroup = lhs.isGroup,\n args = lhs.args;\n var fieldConfig = getFieldConfig(config, field);\n if (!fieldConfig) {\n meta.errors.push(\"No config for LHS \".concat(field));\n return;\n }\n var opKey = opKeys[0];\n if (opKeys.length > 1 && fieldConfig && fieldConfig.operators) {\n // eg. for \"equal\" and \"select_equals\"\n opKeys = opKeys.filter(function (k) {\n return fieldConfig.operators.includes(k);\n });\n if (opKeys.length == 0) {\n meta.errors.push(\"No corresponding ops for LHS \".concat(field));\n return;\n }\n opKey = opKeys[0];\n }\n return {\n field: field,\n fieldSrc: fieldSrc,\n fieldConfig: fieldConfig,\n opKey: opKey,\n args: args,\n having: having\n };\n};\nvar convertOp = function convertOp(op, vals, conv, config, not, meta) {\n var parentField = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n if (!op) return undefined;\n var arity = vals.length;\n if ((op == \"all\" || op == \"some\") && isJsonLogic(vals[1])) {\n // special case for \"all-in\" and \"some-in\"\n var op2 = Object.keys(vals[1])[0];\n if (op2 == \"in\") {\n vals = [vals[0], vals[1][op2][1]];\n op = op + \"-\" + op2; // \"all-in\" and \"some-in\"\n }\n }\n\n var parseRes = parseRule(op, arity, vals, parentField, conv, config, meta);\n if (!parseRes) return undefined;\n var field = parseRes.field,\n fieldSrc = parseRes.fieldSrc,\n fieldConfig = parseRes.fieldConfig,\n opKey = parseRes.opKey,\n args = parseRes.args,\n having = parseRes.having;\n var opConfig = config.operators[opKey];\n\n // Group component in array mode can show NOT checkbox, so do nothing in this case\n // Otherwise try to revert\n var showNot = fieldConfig.showNot !== undefined ? fieldConfig.showNot : config.settings.showNot;\n var canRev = true;\n // if (fieldConfig.type == \"!group\" && fieldConfig.mode == \"array\" && showNot)\n // canRev = false;\n\n var conj;\n var havingVals;\n var havingNot = false;\n if (fieldConfig.type == \"!group\" && having) {\n conj = Object.keys(having)[0];\n havingVals = having[conj];\n if (!Array.isArray(havingVals)) havingVals = [havingVals];\n\n // Preprocess \"!\": Try to reverse op in single rule in having\n // Eg. use `not_equal` instead of `not` `equal`\n var isEmptyOp = conj == \"!\" && havingVals.length == 1 && havingVals[0] && isJsonLogic(havingVals[0]) && conv.varKeys.includes(Object.keys(havingVals[0])[0]);\n if (conj == \"!\" && !isEmptyOp) {\n havingNot = true;\n having = having[\"!\"];\n conj = Object.keys(having)[0];\n havingVals = having[conj];\n if (!Array.isArray(havingVals)) havingVals = [havingVals];\n }\n }\n\n // Use reversed op\n if (not && canRev && opConfig.reversedOp) {\n not = false;\n opKey = opConfig.reversedOp;\n opConfig = config.operators[opKey];\n }\n var widget = getWidgetForFieldOp(config, field, opKey, null);\n var convertedArgs = args.map(function (v) {\n return convertFromLogic(v, conv, config, \"val\", meta, false, fieldConfig, widget, parentField);\n });\n if (convertedArgs.filter(function (v) {\n return v === undefined;\n }).length) {\n //meta.errors.push(`Undefined arg for field ${field} and op ${opKey}`);\n return undefined;\n }\n var res;\n var fieldType = fieldConfig.type;\n if (fieldType === \"!group\" || fieldType === \"!struct\") {\n fieldType = null;\n }\n if (fieldConfig.type == \"!group\" && having) {\n if (conv.conjunctions[conj] !== undefined) {\n // group\n res = convertConj(conj, havingVals, conv, config, havingNot, meta, field, true);\n havingNot = false;\n } else {\n // need to be wrapped in `rule_group`\n var rule = convertOp(conj, havingVals, conv, config, havingNot, meta, field);\n havingNot = false;\n res = wrapInDefaultConjRuleGroup(rule, field, fieldConfig, config, conv.conjunctions[\"and\"]);\n }\n if (!res) return undefined;\n res.type = \"rule_group\";\n Object.assign(res.properties, {\n field: field,\n mode: fieldConfig.mode,\n operator: opKey\n });\n if (fieldConfig.mode == \"array\") {\n Object.assign(res.properties, {\n value: convertedArgs.map(function (v) {\n return v.value;\n }),\n valueSrc: convertedArgs.map(function (v) {\n return v.valueSrc;\n }),\n valueType: convertedArgs.map(function (v) {\n return v.valueType;\n })\n });\n }\n if (not) {\n res = wrapInDefaultConj(res, config, not);\n }\n } else if (fieldConfig.type == \"!group\" && !having) {\n res = {\n type: \"rule_group\",\n id: uuid(),\n children1: {},\n properties: {\n conjunction: defaultGroupConjunction(config, fieldConfig),\n not: not,\n mode: fieldConfig.mode,\n field: field,\n operator: opKey\n }\n };\n if (fieldConfig.mode == \"array\") {\n Object.assign(res.properties, {\n value: convertedArgs.map(function (v) {\n return v.value;\n }),\n valueSrc: convertedArgs.map(function (v) {\n return v.valueSrc;\n }),\n valueType: convertedArgs.map(function (v) {\n return v.valueType;\n })\n });\n }\n } else {\n var asyncListValuesArr = convertedArgs.map(function (v) {\n return v.asyncListValues;\n }).filter(function (v) {\n return v != undefined;\n });\n var asyncListValues = asyncListValuesArr.length ? asyncListValuesArr[0] : undefined;\n res = {\n type: \"rule\",\n id: uuid(),\n properties: _objectSpread({\n field: field,\n fieldSrc: fieldSrc,\n operator: opKey,\n value: convertedArgs.map(function (v) {\n return v.value;\n }),\n valueSrc: convertedArgs.map(function (v) {\n return v.valueSrc;\n }),\n valueType: convertedArgs.map(function (v) {\n return v.valueType;\n })\n }, asyncListValues ? {\n asyncListValues: asyncListValues\n } : {})\n };\n if (not) {\n //meta.errors.push(`No rev op for ${opKey}`);\n res = wrapInDefaultConj(res, config, not);\n }\n }\n return res;\n};","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport SqlStringOrig from \"sqlstring\";\nexport var SqlString = SqlStringOrig;\nSqlString.trim = function (val) {\n if (val.charAt(0) == \"'\") return val.substring(1, val.length - 1);else return val;\n};\nSqlString.escapeLike = function (val) {\n var any_start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var any_end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // normal escape\n var res = SqlString.escape(val);\n // unwrap ''\n res = SqlString.trim(res);\n // escape % and _\n res = res.replace(/[%_]/g, \"\\\\$&\");\n // wrap with % for LIKE\n res = (any_start ? \"%\" : \"\") + res + (any_end ? \"%\" : \"\");\n // wrap ''\n res = \"'\" + res + \"'\";\n return res;\n};\nexport var sqlEmptyValue = function sqlEmptyValue(fieldDef) {\n var v = \"''\";\n var type = fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.type;\n if (type == \"date\") {\n //todo: support other SQL dialects? 0001-01-01 for oracle, 1970-01-01 for timestamp\n v = \"'0000-00-00'\";\n } else if (type == \"datetime\") {\n v = \"'0000-00-00 00:00'\";\n } else if (type == \"time\") {\n v = \"'00:00'\";\n } else if (type == \"number\") {\n v = \"0\";\n }\n return v;\n};\nexport var mongoEmptyValue = function mongoEmptyValue(fieldDef) {\n var v = \"\";\n var type = fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.type;\n if (type == \"number\") {\n v = 0;\n }\n return v;\n};\nvar spelEscapeString = function spelEscapeString(val) {\n // Strings are delimited by single quotes. To put a single quote itself in a string, use two single quote characters. \n return \"'\" + val.replace(/'/g, \"''\") + \"'\";\n};\nvar spelInlineList = function spelInlineList(vals) {\n var toArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n // find java type of values\n var javaType;\n var jt;\n var numberJavaTypes = [\"int\", \"float\"];\n vals.map(function (v) {\n if (v !== undefined && v !== null) {\n if (typeof v === \"string\") {\n jt = \"String\";\n } else if (typeof v === \"number\") {\n jt = Number.isInteger(v) ? \"int\" : \"float\";\n } else throw new Error(\"spelEscape: Can't use value \".concat(v, \" in array\"));\n if (!javaType) {\n javaType = jt;\n } else if (javaType != jt) {\n if (numberJavaTypes.includes(javaType) && numberJavaTypes.includes(jt)) {\n // found int and float in collecton - use float\n javaType = \"float\";\n } else throw new Error(\"spelEscape: Can't use different types in array: found \".concat(javaType, \" and \").concat(jt));\n }\n }\n });\n if (!javaType) {\n javaType = \"String\"; //default if empty array\n }\n\n // for floats we should add 'f' to all items\n var escapedVals;\n if (javaType == \"float\") {\n escapedVals = vals.map(function (v) {\n return spelEscape(v, true);\n });\n } else {\n escapedVals = vals.map(function (v) {\n return spelEscape(v);\n });\n }\n\n // build inline list or array\n var res;\n if (toArray) {\n res = \"new \".concat(javaType, \"[]{\").concat(escapedVals.join(\", \"), \"}\");\n } else {\n res = \"{\".concat(escapedVals.join(\", \"), \"}\");\n }\n return res;\n};\nexport var spelFixList = function spelFixList(val) {\n // `{1,2}.contains(1)` NOT works\n // `{1,2}.?[true].contains(1)` works\n return \"\".concat(val, \".?[true]\");\n};\nexport var spelEscape = function spelEscape(val) {\n var numberToFloat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var arrayToArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html#expressions-ref-literal\n if (val === undefined || val === null) {\n return \"null\";\n }\n switch (_typeof(val)) {\n case \"boolean\":\n return val ? \"true\" : \"false\";\n case \"number\":\n if (!Number.isFinite(val) || isNaN(val)) return undefined;\n return val + (!Number.isInteger(val) || numberToFloat ? \"f\" : \"\");\n case \"object\":\n if (Array.isArray(val)) {\n return spelInlineList(val, arrayToArray);\n } else {\n // see `spelFormatValue` for Date, LocalTime\n throw new Error(\"spelEscape: Object is not supported\");\n }\n default:\n return spelEscapeString(val);\n }\n};\nexport var spelFormatConcat = function spelFormatConcat(parts) {\n if (parts && Array.isArray(parts) && parts.length) {\n return parts.map(function (part) {\n if (part.type == \"const\") {\n return spelEscape(part.value);\n } else if (part.type == \"property\") {\n return \"\" + part.value;\n } else if (part.type == \"variable\") {\n return \"#\" + part.value;\n }\n return undefined;\n }).filter(function (r) {\n return r != undefined;\n }).join(\" + \");\n } else {\n return \"null\";\n }\n};\n\n// `val` is {value, valueType, valueSrc}\n// If `valueType` == \"case_value\", `value` is array of such items (to be considered as concatenation)\nexport var spelImportConcat = function spelImportConcat(val) {\n if (val == undefined) return [undefined, []];\n var errors = [];\n var parts = val.valueType == \"case_value\" ? val.value : [val];\n var res = parts.map(function (child) {\n if (child.valueSrc == \"value\") {\n if (child.value === null) {\n return undefined;\n } else {\n return {\n type: \"const\",\n value: child.value\n };\n }\n } else if (child.valueSrc == \"field\") {\n return {\n type: child.isVariable ? \"variable\" : \"property\",\n value: child.value\n };\n } else {\n errors.push(\"Unsupported valueSrc \".concat(child.valueSrc, \" in concatenation\"));\n }\n }).filter(function (v) {\n return v != undefined;\n });\n return [res, errors];\n};\nexport var stringifyForDisplay = function stringifyForDisplay(v) {\n return v == null ? \"NULL\" : v.toString();\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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; } } }; }\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); }\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; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { getFieldConfig, getOperatorConfig, getFieldWidgetConfig, getFuncConfig, extendConfig, getFieldParts } from \"../utils/configUtils\";\nimport { getWidgetForFieldOp, formatFieldName, getFieldPartsConfigs, completeValue } from \"../utils/ruleUtils\";\nimport omit from \"lodash/omit\";\nimport pick from \"lodash/pick\";\nimport { defaultValue, logger, widgetDefKeysToOmit, opDefKeysToOmit } from \"../utils/stuff\";\nimport { defaultConjunction } from \"../utils/defaultUtils\";\nimport { List, Map } from \"immutable\";\nimport { spelEscape } from \"../utils/export\";\n\n// https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html#expressions\n\nexport var compareToSign = \"${0}.compareTo(${1})\";\nvar TypesWithCompareTo = {\n datetime: true,\n time: true,\n date: true\n};\nexport var spelFormat = function spelFormat(tree, config) {\n return _spelFormat(tree, config, false);\n};\nexport var _spelFormat = function _spelFormat(tree, config) {\n var returnErrors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n //meta is mutable\n var meta = {\n errors: []\n };\n var extendedConfig = extendConfig(config, undefined, false);\n var res = formatItem(tree, extendedConfig, meta, null);\n if (returnErrors) {\n return [res, meta.errors];\n } else {\n if (meta.errors.length) console.warn(\"Errors while exporting to SpEL:\", meta.errors);\n return res;\n }\n};\nvar formatItem = function formatItem(item, config, meta) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n if (!item) return undefined;\n var type = item.get(\"type\");\n if (type === \"group\" || type === \"rule_group\") {\n return formatGroup(item, config, meta, parentField);\n } else if (type === \"rule\") {\n return formatRule(item, config, meta, parentField);\n } else if (type == \"switch_group\") {\n return formatSwitch(item, config, meta, parentField);\n } else if (type == \"case_group\") {\n return formatCase(item, config, meta, parentField);\n }\n return undefined;\n};\nvar formatCase = function formatCase(item, config, meta) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var type = item.get(\"type\");\n if (type != \"case_group\") {\n meta.errors.push(\"Unexpected child of type \".concat(type, \" inside switch\"));\n return undefined;\n }\n var properties = item.get(\"properties\") || new Map();\n var _formatItemValue = formatItemValue(config, properties, meta, null, parentField, \"!case_value\"),\n _formatItemValue2 = _slicedToArray(_formatItemValue, 3),\n formattedValue = _formatItemValue2[0],\n valueSrc = _formatItemValue2[1],\n valueType = _formatItemValue2[2];\n var cond = formatGroup(item, config, meta, parentField);\n return [cond, formattedValue];\n};\nvar formatSwitch = function formatSwitch(item, config, meta) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var properties = item.get(\"properties\") || new Map();\n var children = item.get(\"children1\");\n if (!children) return undefined;\n var cases = children.map(function (currentChild) {\n return formatCase(currentChild, config, meta, null);\n }).filter(function (currentChild) {\n return typeof currentChild !== \"undefined\";\n }).toArray();\n if (!cases.length) return undefined;\n if (cases.length == 1 && !cases[0][0]) {\n // only 1 case without condition\n return cases[0][1];\n }\n var filteredCases = [];\n for (var i = 0; i < cases.length; i++) {\n if (i != cases.length - 1 && !cases[i][0]) {\n meta.errors.push(\"No condition for case \".concat(i));\n } else {\n filteredCases.push(cases[i]);\n if (i == cases.length - 1 && cases[i][0]) {\n // no default - add null as default\n filteredCases.push([undefined, null]);\n }\n }\n }\n var left = \"\",\n right = \"\";\n for (var _i = 0; _i < filteredCases.length; _i++) {\n var _filteredCases$_i = _slicedToArray(filteredCases[_i], 2),\n cond = _filteredCases$_i[0],\n value = _filteredCases$_i[1];\n if (value == undefined) value = \"null\";\n if (cond == undefined) cond = \"true\";\n if (_i != filteredCases.length - 1) {\n left += \"(\".concat(cond, \" ? \").concat(value, \" : \");\n right += \")\";\n } else {\n left += \"\".concat(value);\n }\n }\n return left + right;\n};\nvar formatGroup = function formatGroup(item, config, meta) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var type = item.get(\"type\");\n var properties = item.get(\"properties\") || new Map();\n var mode = properties.get(\"mode\");\n var children = item.get(\"children1\") || new List();\n var field = properties.get(\"field\");\n var conjunction = properties.get(\"conjunction\");\n if (!conjunction) conjunction = defaultConjunction(config);\n var conjunctionDefinition = config.conjunctions[conjunction];\n var not = properties.get(\"not\");\n var isRuleGroup = type === \"rule_group\";\n var isRuleGroupArray = isRuleGroup && mode != \"struct\";\n var groupField = isRuleGroupArray ? field : parentField;\n var groupFieldDef = getFieldConfig(config, groupField) || {};\n var isSpelArray = groupFieldDef.isSpelArray;\n var fieldSeparator = config.settings.fieldSeparator;\n\n // check op for reverse\n var groupOperator = properties.get(\"operator\");\n if (!groupOperator && (!mode || mode == \"some\")) {\n groupOperator = \"some\";\n }\n var realGroupOperator = checkOp(config, groupOperator, field);\n var isGroupOpRev = realGroupOperator != groupOperator;\n var realGroupOperatorDefinition = groupOperator && getOperatorConfig(config, realGroupOperator, field) || null;\n var isGroup0 = isRuleGroup && (!realGroupOperator || realGroupOperatorDefinition.cardinality == 0);\n\n // build value for aggregation op\n var _formatItemValue3 = formatItemValue(config, properties, meta, realGroupOperator, parentField, null),\n _formatItemValue4 = _slicedToArray(_formatItemValue3, 3),\n formattedValue = _formatItemValue4[0],\n valueSrc = _formatItemValue4[1],\n valueType = _formatItemValue4[2];\n\n // build filter in aggregation\n var list = children.map(function (currentChild) {\n return formatItem(currentChild, config, meta, groupField);\n }).filter(function (currentChild) {\n return typeof currentChild !== \"undefined\";\n });\n if (isRuleGroupArray && !isGroup0) {\n // \"count\" rule can have no \"having\" children, but should have number value\n if (formattedValue == undefined) return undefined;\n } else {\n if (!list.size) return undefined;\n }\n var omitBrackets = isRuleGroup;\n var filter = list.size ? conjunctionDefinition.spelFormatConj(list, conjunction, not, omitBrackets) : null;\n\n // build result\n var ret;\n if (isRuleGroupArray) {\n var formattedField = formatField(meta, config, field, parentField);\n var sep = fieldSeparator || \".\";\n var getSize = sep + (isSpelArray ? \"length\" : \"size()\");\n var fullSize = \"\".concat(formattedField).concat(getSize);\n // https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html#expressions-collection-selection\n var filteredSize = filter ? \"\".concat(formattedField, \".?[\").concat(filter, \"]\").concat(getSize) : fullSize;\n var groupValue = isGroup0 ? fullSize : formattedValue;\n // format expression\n ret = formatExpression(meta, config, properties, filteredSize, groupValue, realGroupOperator, valueSrc, valueType, isGroupOpRev);\n } else {\n ret = filter;\n }\n return ret;\n};\nvar buildFnToFormatOp = function buildFnToFormatOp(operator, operatorDefinition, valueType) {\n var spelOp = operatorDefinition.spelOp;\n if (!spelOp) return undefined;\n var isSign = spelOp.includes(\"${0}\");\n var isCompareTo = TypesWithCompareTo[valueType];\n var sop = spelOp;\n var fn;\n var cardinality = defaultValue(operatorDefinition.cardinality, 1);\n if (isCompareTo) {\n // date1.compareTo(date2) >= 0\n // instead of\n // date1 >= date2\n fn = function fn(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n var compareRes = compareToSign.replace(/\\${(\\w+)}/g, function (_, k) {\n return k == 0 ? field : cardinality > 1 ? values[k - 1] : values;\n });\n return \"\".concat(compareRes, \" \").concat(sop, \" 0\");\n };\n } else if (isSign) {\n fn = function fn(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n return spelOp.replace(/\\${(\\w+)}/g, function (_, k) {\n return k == 0 ? field : cardinality > 1 ? values[k - 1] : values;\n });\n };\n } else if (cardinality == 0) {\n // should not be\n fn = function fn(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n return \"\".concat(field, \" \").concat(sop);\n };\n } else if (cardinality == 1) {\n fn = function fn(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n return \"\".concat(field, \" \").concat(sop, \" \").concat(values);\n };\n }\n return fn;\n};\nvar formatExpression = function formatExpression(meta, config, properties, formattedField, formattedValue, operator, valueSrc, valueType) {\n var isRev = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : false;\n var field = properties.get(\"field\");\n var opDef = getOperatorConfig(config, operator, field) || {};\n var fieldDef = getFieldConfig(config, field) || {};\n var operatorOptions = properties.get(\"operatorOptions\");\n\n //find fn to format expr\n var fn = opDef.spelFormatOp || buildFnToFormatOp(operator, opDef, valueType);\n if (!fn) {\n meta.errors.push(\"Operator \".concat(operator, \" is not supported\"));\n return undefined;\n }\n\n //format expr\n var args = [formattedField, operator, formattedValue, valueSrc, valueType, omit(opDef, opDefKeysToOmit), operatorOptions, fieldDef];\n var ret;\n ret = fn.call.apply(fn, [config.ctx].concat(args));\n\n //rev\n if (isRev) {\n ret = config.settings.spelFormatReverse(ret);\n }\n if (ret === undefined) {\n meta.errors.push(\"Operator \".concat(operator, \" is not supported for value source \").concat(valueSrc));\n }\n return ret;\n};\nvar checkOp = function checkOp(config, operator, field) {\n if (!operator) return undefined;\n var opDef = getOperatorConfig(config, operator, field) || {};\n var reversedOp = opDef.reversedOp;\n var revOpDef = getOperatorConfig(config, reversedOp, field) || {};\n var isRev = false;\n var canFormatOp = opDef.spelOp || opDef.spelFormatOp;\n var canFormatRevOp = revOpDef.spelOp || revOpDef.spelFormatOp;\n if (!canFormatOp && !canFormatRevOp) {\n return undefined;\n }\n if (!canFormatOp && canFormatRevOp) {\n isRev = true;\n var _ref = [reversedOp, operator];\n operator = _ref[0];\n reversedOp = _ref[1];\n var _ref2 = [revOpDef, opDef];\n opDef = _ref2[0];\n revOpDef = _ref2[1];\n }\n return operator;\n};\nvar formatRule = function formatRule(item, config, meta) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var properties = item.get(\"properties\") || new Map();\n var field = properties.get(\"field\");\n var fieldSrc = properties.get(\"fieldSrc\");\n var operator = properties.get(\"operator\");\n if (field == null || operator == null) return undefined;\n\n // check op for reverse\n var realOp = checkOp(config, operator, field);\n if (!realOp) {\n meta.errors.push(\"Operator \".concat(operator, \" is not supported\"));\n return undefined;\n }\n var isRev = realOp != operator;\n\n //format value\n var _formatItemValue5 = formatItemValue(config, properties, meta, realOp, parentField, null),\n _formatItemValue6 = _slicedToArray(_formatItemValue5, 3),\n formattedValue = _formatItemValue6[0],\n valueSrc = _formatItemValue6[1],\n valueType = _formatItemValue6[2];\n if (formattedValue === undefined) return undefined;\n\n //format field\n var formattedField = formatLhs(meta, config, field, fieldSrc, parentField);\n if (formattedField === undefined) return undefined;\n\n // format expression\n var res = formatExpression(meta, config, properties, formattedField, formattedValue, realOp, valueSrc, valueType, isRev);\n return res;\n};\nvar formatLhs = function formatLhs(meta, config, field, fieldSrc) {\n var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n if (fieldSrc === \"func\") return formatFunc(meta, config, field, parentField);else return formatField(meta, config, field, parentField);\n};\nvar formatItemValue = function formatItemValue(config, properties, meta, operator, parentField) {\n var expectedValueType = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n var field = properties.get(\"field\");\n var iValueSrc = properties.get(\"valueSrc\");\n var iValueType = properties.get(\"valueType\");\n if (expectedValueType == \"!case_value\" || iValueType && iValueType.get(0) == \"case_value\") {\n field = \"!case_value\";\n }\n var fieldDef = getFieldConfig(config, field) || {};\n var operatorDefinition = getOperatorConfig(config, operator, field) || {};\n var cardinality = defaultValue(operatorDefinition.cardinality, 1);\n var iValue = properties.get(\"value\");\n var asyncListValues = properties.get(\"asyncListValues\");\n var valueSrcs = [];\n var valueTypes = [];\n var formattedValue;\n if (iValue != undefined) {\n var fvalue = iValue.map(function (currentValue, ind) {\n var valueSrc = iValueSrc ? iValueSrc.get(ind) : null;\n var valueType = iValueType ? iValueType.get(ind) : null;\n var cValue = completeValue(currentValue, valueSrc, config);\n var widget = getWidgetForFieldOp(config, field, operator, valueSrc);\n var fieldWidgetDef = omit(getFieldWidgetConfig(config, field, operator, widget, valueSrc), [\"factory\"]);\n var fv = formatValue(meta, config, cValue, valueSrc, valueType, fieldWidgetDef, fieldDef, operator, operatorDefinition, parentField, asyncListValues);\n if (fv !== undefined) {\n valueSrcs.push(valueSrc);\n valueTypes.push(valueType);\n }\n return fv;\n });\n var hasUndefinedValues = fvalue.filter(function (v) {\n return v === undefined;\n }).size > 0;\n if (!(fvalue.size < cardinality || hasUndefinedValues)) {\n formattedValue = cardinality > 1 ? fvalue.toArray() : cardinality == 1 ? fvalue.first() : null;\n }\n }\n return [formattedValue, valueSrcs.length > 1 ? valueSrcs : valueSrcs[0], valueTypes.length > 1 ? valueTypes : valueTypes[0]];\n};\nvar formatValue = function formatValue(meta, config, currentValue, valueSrc, valueType, fieldWidgetDef, fieldDef, operator, operatorDef) {\n var parentField = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : null;\n var asyncListValues = arguments.length > 10 ? arguments[10] : undefined;\n if (currentValue === undefined) return undefined;\n var ret;\n if (valueSrc == \"field\") {\n ret = formatField(meta, config, currentValue, parentField);\n } else if (valueSrc == \"func\") {\n ret = formatFunc(meta, config, currentValue, parentField);\n } else {\n if (typeof fieldWidgetDef.spelFormatValue === \"function\") {\n var fn = fieldWidgetDef.spelFormatValue;\n var args = [currentValue, _objectSpread(_objectSpread({}, pick(fieldDef, [\"fieldSettings\", \"listValues\"])), {}, {\n asyncListValues: asyncListValues\n }),\n //useful options: valueFormat for date/time\n omit(fieldWidgetDef, widgetDefKeysToOmit)];\n if (operator) {\n args.push(operator);\n args.push(operatorDef);\n }\n if (valueSrc == \"field\") {\n var valFieldDefinition = getFieldConfig(config, currentValue) || {};\n args.push(valFieldDefinition);\n }\n ret = fn.call.apply(fn, [config.ctx].concat(args));\n } else {\n ret = spelEscape(currentValue);\n }\n }\n return ret;\n};\nvar formatField = function formatField(meta, config, field) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n if (!field) return;\n var fieldSeparator = config.settings.fieldSeparator;\n var fieldDefinition = getFieldConfig(config, field) || {};\n var fieldParts = getFieldParts(field, config);\n var fieldPartsConfigs = getFieldPartsConfigs(field, config, parentField);\n var formatFieldFn = config.settings.formatSpelField;\n var fieldName = formatFieldName(field, config, meta, parentField);\n var fieldPartsMeta = fieldPartsConfigs.map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 3),\n key = _ref4[0],\n cnf = _ref4[1],\n parentCnf = _ref4[2];\n var parent;\n if (parentCnf) {\n if (parentCnf.type == \"!struct\" || parentCnf.type == \"!group\" && parentCnf.mode == \"struct\") parent = cnf.isSpelMap ? \"map\" : \"class\";else if (parentCnf.type == \"!group\") parent = cnf.isSpelItemMap ? \"[map]\" : \"[class]\";else parent = \"class\";\n }\n var isSpelVariable = cnf === null || cnf === void 0 ? void 0 : cnf.isSpelVariable;\n return {\n key: key,\n parent: parent,\n isSpelVariable: isSpelVariable,\n fieldSeparator: fieldSeparator\n };\n });\n var formattedField = formatFieldFn.call(config.ctx, fieldName, parentField, fieldParts, fieldPartsMeta, fieldDefinition, config);\n return formattedField;\n};\nvar formatFunc = function formatFunc(meta, config, currentValue) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var funcKey = currentValue.get(\"func\");\n var args = currentValue.get(\"args\");\n var funcConfig = getFuncConfig(config, funcKey);\n if (!funcConfig) {\n meta.errors.push(\"Func \".concat(funcKey, \" is not defined in config\"));\n return undefined;\n }\n var formattedArgs = {};\n var gaps = [];\n var missingArgKeys = [];\n for (var argKey in funcConfig.args) {\n var _argConfig$spelEscape;\n var argConfig = funcConfig.args[argKey];\n var fieldDef = getFieldConfig(config, argConfig);\n var _defaultValue = argConfig.defaultValue,\n isOptional = argConfig.isOptional;\n var defaultValueSrc = _defaultValue !== null && _defaultValue !== void 0 && _defaultValue.func ? \"func\" : \"value\";\n var argVal = args ? args.get(argKey) : undefined;\n var argValue = argVal ? argVal.get(\"value\") : undefined;\n var argValueSrc = argVal ? argVal.get(\"valueSrc\") : undefined;\n var argAsyncListValues = argVal ? argVal.get(\"asyncListValues\") : undefined;\n var doEscape = (_argConfig$spelEscape = argConfig.spelEscapeForFormat) !== null && _argConfig$spelEscape !== void 0 ? _argConfig$spelEscape : true;\n var operator = null;\n var widget = getWidgetForFieldOp(config, argConfig, operator, argValueSrc);\n var fieldWidgetDef = omit(getFieldWidgetConfig(config, argConfig, operator, widget, argValueSrc), [\"factory\"]);\n var formattedArgVal = formatValue(meta, config, argValue, argValueSrc, argConfig.type, fieldWidgetDef, fieldDef, null, null, parentField, argAsyncListValues);\n if (argValue != undefined && formattedArgVal === undefined) {\n if (argValueSrc != \"func\")\n // don't triger error if args value is another uncomplete function\n meta.errors.push(\"Can't format value of arg \".concat(argKey, \" for func \").concat(funcKey));\n return undefined;\n }\n var formattedDefaultVal = void 0;\n if (formattedArgVal === undefined && !isOptional && _defaultValue != undefined) {\n var defaultWidget = getWidgetForFieldOp(config, argConfig, operator, defaultValueSrc);\n var defaultFieldWidgetDef = omit(getFieldWidgetConfig(config, argConfig, operator, defaultWidget, defaultValueSrc), [\"factory\"]);\n formattedDefaultVal = formatValue(meta, config, _defaultValue, defaultValueSrc, argConfig.type, defaultFieldWidgetDef, fieldDef, null, null, parentField, argAsyncListValues);\n if (formattedDefaultVal === undefined) {\n if (defaultValueSrc != \"func\")\n // don't triger error if args value is another uncomplete function\n meta.errors.push(\"Can't format default value of arg \".concat(argKey, \" for func \").concat(funcKey));\n return undefined;\n }\n }\n var finalFormattedVal = formattedArgVal !== null && formattedArgVal !== void 0 ? formattedArgVal : formattedDefaultVal;\n if (finalFormattedVal !== undefined) {\n if (gaps.length) {\n var _iterator = _createForOfIteratorHelper(gaps),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var missedArgKey = _step.value;\n formattedArgs[missedArgKey] = undefined;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n gaps = [];\n }\n formattedArgs[argKey] = doEscape ? finalFormattedVal : argValue !== null && argValue !== void 0 ? argValue : _defaultValue;\n } else {\n if (!isOptional) missingArgKeys.push(argKey);\n gaps.push(argKey);\n }\n }\n if (missingArgKeys.length) {\n //meta.errors.push(`Missing vals for args ${missingArgKeys.join(\", \")} for func ${funcKey}`);\n return undefined; // uncomplete\n }\n\n var ret;\n if (typeof funcConfig.spelFormatFunc === \"function\") {\n var fn = funcConfig.spelFormatFunc;\n var _args = [formattedArgs];\n ret = fn.call.apply(fn, [config.ctx].concat(_args));\n } else if (funcConfig.spelFunc) {\n // fill arg values\n ret = funcConfig.spelFunc.replace(/\\${(\\w+)}/g, function (found, argKey) {\n var _formattedArgs$argKey;\n return (_formattedArgs$argKey = formattedArgs[argKey]) !== null && _formattedArgs$argKey !== void 0 ? _formattedArgs$argKey : found;\n });\n // remove optional args (from end only)\n var optionalArgs = Object.keys(funcConfig.args || {}).reverse().filter(function (argKey) {\n return !!funcConfig.args[argKey].isOptional;\n });\n var _iterator2 = _createForOfIteratorHelper(optionalArgs),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _argKey = _step2.value;\n if (formattedArgs[_argKey] != undefined) break;\n ret = ret.replace(new RegExp(\"(, )?\" + \"\\\\${\" + _argKey + \"}\", \"g\"), \"\");\n }\n // missing required arg vals\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n ret = ret.replace(/\\${(\\w+)}/g, \"null\");\n } else {\n meta.errors.push(\"Func \".concat(funcKey, \" is not supported\"));\n }\n return ret;\n};","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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(_e2) { throw _e2; }, 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 = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\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); }\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; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { SpelExpressionEvaluator } from \"spel2js\";\nimport uuid from \"../utils/uuid\";\nimport { getFieldConfig, getFuncConfig, extendConfig, normalizeField, iterateFuncs } from \"../utils/configUtils\";\nimport { getWidgetForFieldOp } from \"../utils/ruleUtils\";\nimport { loadTree } from \"./tree\";\nimport { defaultConjunction, defaultGroupConjunction } from \"../utils/defaultUtils\";\nimport { logger, isJsonCompatible } from \"../utils/stuff\";\nimport moment from \"moment\";\nimport { compareToSign } from \"../export/spel\";\n\n// https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html#expressions\n\n// spel type => raqb type\nvar SpelPrimitiveTypes = {\n number: \"number\",\n string: \"text\",\n \"boolean\": \"boolean\",\n \"null\": \"null\" // should not be\n};\n// spel class => raqb type\nvar SpelPrimitiveClasses = {\n String: \"text\"\n};\nvar ListValueType = \"multiselect\";\nvar isFuncableProperty = function isFuncableProperty(p) {\n return [\"length\"].includes(p);\n};\nvar isObject = function isObject(v) {\n return _typeof(v) == \"object\" && v !== null && !Array.isArray(v);\n};\nexport var loadFromSpel = function loadFromSpel(logicTree, config) {\n return _loadFromSpel(logicTree, config, true);\n};\nexport var _loadFromSpel = function _loadFromSpel(spelStr, config) {\n var returnErrors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n //meta is mutable\n var meta = {\n errors: []\n };\n var extendedConfig = extendConfig(config, undefined, false);\n var conv = buildConv(extendedConfig);\n var compiledExpression;\n var convertedObj;\n var jsTree = undefined;\n try {\n var compileRes = SpelExpressionEvaluator.compile(spelStr);\n compiledExpression = compileRes._compiledExpression;\n } catch (e) {\n meta.errors.push(e);\n }\n if (compiledExpression) {\n //logger.debug(\"compiledExpression:\", compiledExpression);\n convertedObj = postprocessCompiled(compiledExpression, meta);\n logger.debug(\"convertedObj:\", convertedObj, meta);\n jsTree = convertToTree(convertedObj, conv, extendedConfig, meta);\n if (jsTree && jsTree.type != \"group\" && jsTree.type != \"switch_group\") {\n jsTree = wrapInDefaultConj(jsTree, extendedConfig, convertedObj[\"not\"]);\n }\n logger.debug(\"jsTree:\", jsTree);\n }\n var immTree = jsTree ? loadTree(jsTree) : undefined;\n if (returnErrors) {\n return [immTree, meta.errors];\n } else {\n if (meta.errors.length) console.warn(\"Errors while importing from SpEL:\", meta.errors);\n return immTree;\n }\n};\nvar postprocessCompiled = function postprocessCompiled(expr, meta) {\n var parentExpr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var type = expr.getType();\n var children = expr.getChildren().map(function (child) {\n return postprocessCompiled(child, meta, expr);\n });\n\n // flatize OR/AND\n if (type == \"op-or\" || type == \"op-and\") {\n children = children.reduce(function (acc, child) {\n var canFlatize = child.type == type && !child.not;\n var flat = canFlatize ? child.children : [child];\n return [].concat(_toConsumableArray(acc), _toConsumableArray(flat));\n }, []);\n }\n\n // unwrap NOT\n if (type == \"op-not\") {\n if (children.length != 1) {\n meta.errors.push(\"Operator NOT should have 1 child, but got \".concat(children.length, \"}\"));\n }\n return _objectSpread(_objectSpread({}, children[0]), {}, {\n not: !(children[0].not || false)\n });\n }\n if (type == \"compound\") {\n // remove `.?[true]`\n children = children.filter(function (child) {\n var isListFix = child.type == \"selection\" && child.children.length == 1 && child.children[0].type == \"boolean\" && child.children[0].val == true;\n return !isListFix;\n });\n // aggregation\n // eg. `results.?[product == 'abc'].length`\n var selection = children.find(function (child) {\n return child.type == \"selection\";\n });\n if (selection && selection.children.length != 1) {\n meta.errors.push(\"Selection should have 1 child, but got \".concat(selection.children.length));\n }\n var filter = selection ? selection.children[0] : null;\n var lastChild = children[children.length - 1];\n var isSize = lastChild.type == \"method\" && lastChild.val.methodName == \"size\" || lastChild.type == \"!func\" && lastChild.methodName == \"size\";\n var isLength = lastChild.type == \"property\" && lastChild.val == \"length\";\n var sourceParts = children.filter(function (child) {\n return child !== selection && child !== lastChild;\n });\n var source = {\n type: \"compound\",\n children: sourceParts\n };\n var isAggr = (isSize || isLength) && convertPath(sourceParts) != null;\n if (isAggr) {\n return {\n type: \"!aggr\",\n filter: filter,\n source: source\n };\n }\n // remove `#this`, `#root`\n children = children.filter(function (child) {\n var isThis = child.type == \"variable\" && child.val == \"this\";\n var isRoot = child.type == \"variable\" && child.val == \"root\";\n return !(isThis || isRoot);\n });\n // indexer\n children = children.map(function (child) {\n if (child.type == \"indexer\" && child.children.length == 1) {\n return {\n type: \"indexer\",\n val: child.children[0].val,\n itype: child.children[0].type\n };\n } else {\n return child;\n }\n });\n // method\n // if (lastChild.type == \"method\") {\n // // seems like obsolete code!\n // debugger\n // const obj = children.filter(child => \n // child !== lastChild\n // );\n // return {\n // type: \"!func\",\n // obj,\n // methodName: lastChild.val.methodName,\n // args: lastChild.val.args\n // };\n // }\n // !func\n if (lastChild.type == \"!func\") {\n var ret = {};\n var curr = ret;\n do {\n var _lastChild, _lastChild2;\n Object.assign(curr, lastChild);\n children = children.filter(function (child) {\n return child !== lastChild;\n });\n lastChild = children[children.length - 1];\n if (((_lastChild2 = lastChild) === null || _lastChild2 === void 0 ? void 0 : _lastChild2.type) == \"!func\") {\n curr.obj = {};\n curr = curr.obj;\n } else {\n if (children.length > 1) {\n curr.obj = {\n type: \"compound\",\n children: children\n };\n } else {\n curr.obj = lastChild;\n }\n }\n } while (((_lastChild = lastChild) === null || _lastChild === void 0 ? void 0 : _lastChild.type) == \"!func\");\n return ret;\n }\n }\n\n // getRaw || getValue\n var val;\n try {\n if (expr.getRaw) {\n // use my fork\n val = expr.getRaw();\n } else if (expr.getValue.length == 0) {\n // getValue not requires context arg -> can use\n val = expr.getValue();\n }\n } catch (e) {\n logger.error(\"[spel2js] Error in getValue()\", e);\n }\n\n // ternary\n if (type == \"ternary\") {\n val = flatizeTernary(children);\n }\n\n // convert method/function args\n if (_typeof(val) === \"object\" && val !== null) {\n if (val.methodName || val.functionName) {\n val.args = val.args.map(function (child) {\n return postprocessCompiled(child, meta, expr);\n });\n }\n }\n // convert list\n if (type == \"list\") {\n val = val.map(function (item) {\n return postprocessCompiled(item, meta, expr);\n });\n\n // fix whole expression wrapped in `{}`\n if (!parentExpr && val.length == 1) {\n return val[0];\n }\n }\n // convert constructor\n if (type == \"constructorref\") {\n var qid = children.find(function (child) {\n return child.type == \"qualifiedidentifier\";\n });\n var cls = qid === null || qid === void 0 ? void 0 : qid.val;\n if (!cls) {\n meta.errors.push(\"Can't find qualifiedidentifier in constructorref children: \".concat(JSON.stringify(children)));\n return undefined;\n }\n var args = children.filter(function (child) {\n return child.type != \"qualifiedidentifier\";\n });\n return {\n type: \"!new\",\n cls: cls,\n args: args\n };\n }\n // convert type\n if (type == \"typeref\") {\n var _qid = children.find(function (child) {\n return child.type == \"qualifiedidentifier\";\n });\n var _cls = _qid === null || _qid === void 0 ? void 0 : _qid.val;\n if (!_cls) {\n meta.errors.push(\"Can't find qualifiedidentifier in typeref children: \".concat(JSON.stringify(children)));\n return undefined;\n }\n var _args = children.filter(function (child) {\n return child.type != \"qualifiedidentifier\";\n });\n return {\n type: \"!type\",\n cls: _cls\n };\n }\n // convert function/method\n if (type == \"function\" || type == \"method\") {\n // `foo()` is method, `#foo()` is function\n // let's use common property `methodName` and just add `isVar` for function\n var _val = val,\n functionName = _val.functionName,\n methodName = _val.methodName,\n _args2 = _val.args;\n return {\n type: \"!func\",\n methodName: functionName || methodName,\n isVar: type == \"function\",\n args: _args2\n };\n }\n return {\n type: type,\n children: children,\n val: val\n };\n};\nvar flatizeTernary = function flatizeTernary(children) {\n var flat = [];\n function _processTernaryChildren(tern) {\n var _tern = _slicedToArray(tern, 3),\n cond = _tern[0],\n if_val = _tern[1],\n else_val = _tern[2];\n flat.push([cond, if_val]);\n if ((else_val === null || else_val === void 0 ? void 0 : else_val.type) == \"ternary\") {\n _processTernaryChildren(else_val.children);\n } else {\n flat.push([undefined, else_val]);\n }\n }\n _processTernaryChildren(children);\n return flat;\n};\nvar buildConv = function buildConv(config) {\n var operators = {};\n var _loop = function _loop(opKey) {\n var opConfig = config.operators[opKey];\n if (opConfig.spelOps) {\n // examples: \"==\", \"eq\", \".contains\", \"matches\" (can be used for starts_with, ends_with)\n opConfig.spelOps.forEach(function (spelOp) {\n var opk = spelOp; // + \"/\" + defaultValue(opConfig.cardinality, 1);\n if (!operators[opk]) operators[opk] = [];\n operators[opk].push(opKey);\n });\n } else if (opConfig.spelOp) {\n var opk = opConfig.spelOp; // + \"/\" + defaultValue(opConfig.cardinality, 1);\n if (!operators[opk]) operators[opk] = [];\n operators[opk].push(opKey);\n } else {\n logger.log(\"[spel] No spelOp for operator \".concat(opKey));\n }\n };\n for (var opKey in config.operators) {\n _loop(opKey);\n }\n var conjunctions = {};\n for (var conjKey in config.conjunctions) {\n var conjunctionDefinition = config.conjunctions[conjKey];\n var ck = conjunctionDefinition.spelConj || conjKey.toLowerCase();\n conjunctions[ck] = conjKey;\n }\n var funcs = {};\n var _iterator = _createForOfIteratorHelper(iterateFuncs(config)),\n _step;\n try {\n var _loop2 = function _loop2() {\n var _step$value = _slicedToArray(_step.value, 2),\n funcPath = _step$value[0],\n funcConfig = _step$value[1];\n var fks = [];\n var spelFunc = funcConfig.spelFunc;\n if (typeof spelFunc === \"string\") {\n var optionalArgs = Object.keys(funcConfig.args || {}).reverse().filter(function (argKey) {\n return !!funcConfig.args[argKey].isOptional || funcConfig.args[argKey].defaultValue != undefined;\n });\n var funcSignMain = spelFunc.replace(/\\${(\\w+)}/g, function (_, _k) {\n return \"?\";\n });\n var funcSignsOptional = optionalArgs.reduce(function (acc, argKey) {\n return [].concat(_toConsumableArray(acc), [[argKey].concat(_toConsumableArray(acc[acc.length - 1] || []))]);\n }, []).map(function (optionalArgKeys) {\n return spelFunc.replace(/(?:, )?\\${(\\w+)}/g, function (found, a) {\n return optionalArgKeys.includes(a) ? \"\" : found;\n }).replace(/\\${(\\w+)}/g, function (_, _k) {\n return \"?\";\n });\n });\n fks = [funcSignMain].concat(_toConsumableArray(funcSignsOptional));\n }\n var _iterator3 = _createForOfIteratorHelper(fks),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _fk = _step3.value;\n if (!funcs[_fk]) funcs[_fk] = [];\n funcs[_fk].push(funcPath);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n var valueFuncs = {};\n for (var w in config.widgets) {\n var widgetDef = config.widgets[w];\n var spelImportFuncs = widgetDef.spelImportFuncs,\n type = widgetDef.type;\n if (spelImportFuncs) {\n var _iterator2 = _createForOfIteratorHelper(spelImportFuncs),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var fk = _step2.value;\n if (typeof fk === \"string\") {\n var fs = fk.replace(/\\${(\\w+)}/g, function (_, k) {\n return \"?\";\n });\n var argsOrder = _toConsumableArray(fk.matchAll(/\\${(\\w+)}/g)).map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n _ = _ref2[0],\n k = _ref2[1];\n return k;\n });\n if (!valueFuncs[fs]) valueFuncs[fs] = [];\n valueFuncs[fs].push({\n w: w,\n argsOrder: argsOrder\n });\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }\n var opFuncs = {};\n for (var op in config.operators) {\n var opDef = config.operators[op];\n var spelOp = opDef.spelOp;\n if (spelOp !== null && spelOp !== void 0 && spelOp.includes(\"${0}\")) {\n var _fs = spelOp.replace(/\\${(\\w+)}/g, function (_, k) {\n return \"?\";\n });\n var _argsOrder = _toConsumableArray(spelOp.matchAll(/\\${(\\w+)}/g)).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n _ = _ref4[0],\n k = _ref4[1];\n return k;\n });\n if (!opFuncs[_fs]) opFuncs[_fs] = [];\n opFuncs[_fs].push({\n op: op,\n argsOrder: _argsOrder\n });\n }\n }\n // Special .compareTo()\n var compareToSS = compareToSign.replace(/\\${(\\w+)}/g, function (_, k) {\n return \"?\";\n });\n opFuncs[compareToSS] = [{\n op: \"!compare\",\n argsOrder: [\"0\", \"1\"]\n }];\n return {\n operators: operators,\n conjunctions: conjunctions,\n funcs: funcs,\n valueFuncs: valueFuncs,\n opFuncs: opFuncs\n };\n};\nvar convertToTree = function convertToTree(spel, conv, config, meta) {\n var parentSpel = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n if (!spel) return undefined;\n var res,\n canParseAsArg = true;\n if (spel.type.indexOf(\"op-\") === 0 || spel.type === \"matches\") {\n res = convertOp(spel, conv, config, meta, parentSpel);\n } else if (spel.type == \"!aggr\") {\n var _groupFilter;\n var groupFieldValue = convertToTree(spel.source, conv, config, meta, _objectSpread(_objectSpread({}, spel), {}, {\n _groupField: parentSpel === null || parentSpel === void 0 ? void 0 : parentSpel._groupField\n }));\n var groupFilter = convertToTree(spel.filter, conv, config, meta, _objectSpread(_objectSpread({}, spel), {}, {\n _groupField: groupFieldValue === null || groupFieldValue === void 0 ? void 0 : groupFieldValue.value\n }));\n if (((_groupFilter = groupFilter) === null || _groupFilter === void 0 ? void 0 : _groupFilter.type) == \"rule\") {\n groupFilter = wrapInDefaultConj(groupFilter, config, spel.filter.not);\n }\n res = {\n groupFilter: groupFilter,\n groupFieldValue: groupFieldValue\n };\n if (!parentSpel) {\n // !aggr can't be in root, it should be compared with something\n res = undefined;\n meta.errors.push(\"Unexpected !aggr in root\");\n canParseAsArg = false;\n }\n } else if (spel.type == \"ternary\") {\n var children1 = {};\n spel.val.forEach(function (v) {\n var _v = _slicedToArray(v, 2),\n cond = _v[0],\n val = _v[1];\n var caseI = buildCase(cond, val, conv, config, meta, spel);\n if (caseI) {\n children1[caseI.id] = caseI;\n }\n });\n res = {\n type: \"switch_group\",\n id: uuid(),\n children1: children1,\n properties: {}\n };\n }\n if (!res && canParseAsArg) {\n res = convertArg(spel, conv, config, meta, parentSpel);\n }\n if (res && !res.type && !parentSpel) {\n // res is not a rule, it's value at root\n // try to parse whole `\"1\"` as ternary\n var sw = buildSimpleSwitch(spel, conv, config, meta);\n if (sw) {\n res = sw;\n } else {\n res = undefined;\n meta.errors.push(\"Can't convert rule of type \".concat(spel.type, \", it looks like var/literal\"));\n }\n }\n return res;\n};\nvar convertOp = function convertOp(spel, conv, config, meta) {\n var parentSpel = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var res;\n var op = spel.type.startsWith(\"op-\") ? spel.type.slice(\"op-\".length) : spel.type;\n\n // unary\n var isUnary = (op == \"minus\" || op == \"plus\") && spel.children.length == 1;\n if (isUnary) {\n spel.isUnary = true;\n return convertOp(spel.children[0], conv, config, meta, spel);\n }\n\n // between\n var isBetweenNormal = op == \"and\" && spel.children.length == 2 && spel.children[0].type == \"op-ge\" && spel.children[1].type == \"op-le\";\n var isBetweenRev = op == \"or\" && spel.children.length == 2 && spel.children[0].type == \"op-lt\" && spel.children[1].type == \"op-gt\";\n var isBetween = isBetweenNormal || isBetweenRev;\n if (isBetween) {\n var _spel$children$0$chil = _slicedToArray(spel.children[0].children, 2),\n left = _spel$children$0$chil[0],\n from = _spel$children$0$chil[1];\n var _spel$children$1$chil = _slicedToArray(spel.children[1].children, 2),\n right = _spel$children$1$chil[0],\n to = _spel$children$1$chil[1];\n var isSameSource = compareArgs(left, right, spel, conv, config, meta, parentSpel);\n if (isSameSource) {\n var _fromValue = from.val;\n var _toValue = to.val;\n var oneSpel = {\n type: \"op-between\",\n children: [left, from, to]\n };\n return convertOp(oneSpel, conv, config, meta, parentSpel);\n }\n }\n\n // find op\n var opKeys = conv.operators[op];\n if (op == \"eq\" && spel.children[1].type == \"null\") {\n opKeys = [\"is_null\"];\n } else if (op == \"ne\" && spel.children[1].type == \"null\") {\n opKeys = [\"is_not_null\"];\n } else if (op == \"le\" && spel.children[1].type == \"string\" && spel.children[1].val == \"\") {\n opKeys = [\"is_empty\"];\n } else if (op == \"gt\" && spel.children[1].type == \"string\" && spel.children[1].val == \"\") {\n opKeys = [\"is_not_empty\"];\n } else if (op == \"between\") {\n opKeys = [\"between\"];\n }\n\n // convert children\n var convertChildren = function convertChildren() {\n var _newChildren;\n var newChildren = spel.children.map(function (child) {\n return convertToTree(child, conv, config, meta, _objectSpread(_objectSpread({}, spel), {}, {\n _groupField: parentSpel === null || parentSpel === void 0 ? void 0 : parentSpel._groupField\n }));\n });\n if (newChildren.length >= 2 && ((_newChildren = newChildren) === null || _newChildren === void 0 || (_newChildren = _newChildren[0]) === null || _newChildren === void 0 ? void 0 : _newChildren.type) == \"!compare\") {\n newChildren = newChildren[0].children;\n }\n return newChildren;\n };\n if (op == \"and\" || op == \"or\") {\n var children1 = {};\n var vals = convertChildren();\n vals.forEach(function (v) {\n if (v) {\n var id = uuid();\n v.id = id;\n if (v.type != undefined) {\n children1[id] = v;\n } else {\n meta.errors.push(\"Bad item in AND/OR: \".concat(JSON.stringify(v)));\n }\n }\n });\n res = {\n type: \"group\",\n id: uuid(),\n children1: children1,\n properties: {\n conjunction: conv.conjunctions[op],\n not: spel.not\n }\n };\n } else if (opKeys) {\n var _fieldObj$groupFieldV, _convertedArgs;\n var _vals = convertChildren();\n var fieldObj = _vals[0];\n var convertedArgs = _vals.slice(1);\n var groupField = fieldObj === null || fieldObj === void 0 || (_fieldObj$groupFieldV = fieldObj.groupFieldValue) === null || _fieldObj$groupFieldV === void 0 ? void 0 : _fieldObj$groupFieldV.value;\n var opArg = (_convertedArgs = convertedArgs) === null || _convertedArgs === void 0 ? void 0 : _convertedArgs[0];\n var opKey = opKeys[0];\n if (opKeys.length > 1) {\n var _vals$, _vals$2;\n var valueType = ((_vals$ = _vals[0]) === null || _vals$ === void 0 ? void 0 : _vals$.valueType) || ((_vals$2 = _vals[1]) === null || _vals$2 === void 0 ? void 0 : _vals$2.valueType);\n //todo: it's naive, use valueType\n var field = fieldObj === null || fieldObj === void 0 ? void 0 : fieldObj.value;\n var widgets = opKeys.map(function (op) {\n return {\n op: op,\n widget: getWidgetForFieldOp(config, field, op)\n };\n });\n logger.warn(\"[spel] Spel operator \".concat(op, \" can be mapped to \").concat(opKeys, \".\"), \"widgets:\", widgets, \"vals:\", _vals, \"valueType=\", valueType);\n if (op == \"eq\" || op == \"ne\") {\n var ws = widgets.find(function (_ref5) {\n var op = _ref5.op,\n widget = _ref5.widget;\n return widget && widget != \"field\";\n });\n if (ws) {\n opKey = ws.op;\n }\n }\n }\n\n // some/all/none\n if (fieldObj !== null && fieldObj !== void 0 && fieldObj.groupFieldValue) {\n if (opArg && opArg.groupFieldValue && opArg.groupFieldValue.valueSrc == \"field\" && opArg.groupFieldValue.value == groupField) {\n // group.?[...].size() == group.size()\n opKey = \"all\";\n convertedArgs = [];\n } else if (opKey == \"equal\" && opArg.valueSrc == \"value\" && opArg.valueType == \"number\" && opArg.value == 0) {\n opKey = \"none\";\n convertedArgs = [];\n } else if (opKey == \"greater\" && opArg.valueSrc == \"value\" && opArg.valueType == \"number\" && opArg.value == 0) {\n opKey = \"some\";\n convertedArgs = [];\n }\n }\n var canRev = true;\n var needWrapReverse = false;\n if (spel.not && canRev) {\n var opConfig = config.operators[opKey];\n if (opConfig.reversedOp) {\n opKey = opConfig.reversedOp;\n spel.not = false;\n } else {\n needWrapReverse = true;\n }\n }\n if (!fieldObj) {\n // LHS can't be parsed\n } else if (fieldObj.groupFieldValue) {\n // 1. group\n if (fieldObj.groupFieldValue.valueSrc != \"field\") {\n meta.errors.push(\"Expected group field \".concat(JSON.stringify(fieldObj)));\n }\n res = buildRuleGroup(fieldObj, opKey, convertedArgs, config, meta);\n } else {\n // 2. not group\n if (fieldObj.valueSrc != \"field\" && fieldObj.valueSrc != \"func\") {\n meta.errors.push(\"Expected field/func at LHS, but got \".concat(JSON.stringify(fieldObj)));\n }\n var _field = fieldObj.value;\n res = buildRule(config, meta, _field, opKey, convertedArgs);\n }\n if (needWrapReverse) {\n if (res.type !== \"group\") {\n res = wrapInDefaultConj(res, config, spel.not);\n } else {\n res.properties.not = !res.properties.not;\n }\n }\n } else {\n if (!parentSpel) {\n // try to parse whole `\"str\" + prop + #var` as ternary\n res = buildSimpleSwitch(spel, conv, config, meta);\n }\n // if (!res) {\n // meta.errors.push(`Can't convert op ${op}`);\n // }\n }\n\n return res;\n};\nvar convertPath = function convertPath(parts) {\n var meta = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var expectingField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isError = false;\n var res = parts.map(function (c) {\n if (c.type == \"variable\" || c.type == \"property\" || c.type == \"indexer\" && c.itype == \"string\") {\n return c.val;\n } else {\n var _meta$errors, _meta$errors$push;\n isError = true;\n expectingField && (meta === null || meta === void 0 || (_meta$errors = meta.errors) === null || _meta$errors === void 0 || (_meta$errors$push = _meta$errors.push) === null || _meta$errors$push === void 0 ? void 0 : _meta$errors$push.call(_meta$errors, \"Unexpected item in field path compound: \".concat(JSON.stringify(c))));\n }\n });\n return !isError ? res : undefined;\n};\nvar convertArg = function convertArg(spel, conv, config, meta, parentSpel) {\n if (spel == undefined) return undefined;\n var fieldSeparator = config.settings.fieldSeparator;\n if (spel.type == \"variable\" || spel.type == \"property\") {\n // normal field\n var field = normalizeField(config, spel.val, parentSpel === null || parentSpel === void 0 ? void 0 : parentSpel._groupField);\n var fieldConfig = getFieldConfig(config, field);\n var isVariable = spel.type == \"variable\";\n return {\n valueSrc: \"field\",\n valueType: fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.type,\n isVariable: isVariable,\n value: field\n };\n } else if (spel.type == \"compound\") {\n // complex field\n var parts = convertPath(spel.children, meta);\n if (parts) {\n var _spel$children;\n var _field2 = normalizeField(config, parts.join(fieldSeparator), parentSpel === null || parentSpel === void 0 ? void 0 : parentSpel._groupField);\n var _fieldConfig = getFieldConfig(config, _field2);\n var _isVariable = ((_spel$children = spel.children) === null || _spel$children === void 0 || (_spel$children = _spel$children[0]) === null || _spel$children === void 0 ? void 0 : _spel$children.type) == \"variable\";\n return {\n valueSrc: \"field\",\n valueType: _fieldConfig === null || _fieldConfig === void 0 ? void 0 : _fieldConfig.type,\n isVariable: _isVariable,\n value: _field2\n };\n } else {\n // it's not complex field\n }\n } else if (SpelPrimitiveTypes[spel.type]) {\n var value = spel.val;\n var valueType = SpelPrimitiveTypes[spel.type];\n if (parentSpel !== null && parentSpel !== void 0 && parentSpel.isUnary) {\n value = -value;\n }\n return {\n valueSrc: \"value\",\n valueType: valueType,\n value: value\n };\n } else if (spel.type == \"!new\" && SpelPrimitiveClasses[spel.cls.at(-1)]) {\n var args = spel.args.map(function (v) {\n return convertArg(v, conv, config, meta, spel);\n });\n var _value = args === null || args === void 0 ? void 0 : args[0];\n var _valueType = SpelPrimitiveClasses[spel.cls.at(-1)];\n return _objectSpread(_objectSpread({}, _value), {}, {\n valueType: _valueType\n });\n } else if (spel.type == \"list\") {\n var _values$;\n var values = spel.val.map(function (v) {\n return convertArg(v, conv, config, meta, spel);\n });\n var _itemType = values.length ? (_values$ = values[0]) === null || _values$ === void 0 ? void 0 : _values$.valueType : null;\n var _value2 = values.map(function (v) {\n return v === null || v === void 0 ? void 0 : v.value;\n });\n var _valueType2 = ListValueType;\n return {\n valueSrc: \"value\",\n valueType: _valueType2,\n value: _value2\n };\n } else if (spel.type == \"op-plus\" && (parentSpel === null || parentSpel === void 0 ? void 0 : parentSpel.type) == \"ternary\") {\n return buildCaseValueConcat(spel, conv, config, meta);\n }\n var maybe = convertFunc(spel, conv, config, meta, parentSpel);\n if (maybe !== undefined) {\n return maybe;\n }\n meta.errors.push(\"Can't convert arg of type \".concat(spel.type));\n return undefined;\n};\nvar buildFuncSignatures = function buildFuncSignatures(spel) {\n // branches\n var brns = [{\n s: \"\",\n params: [],\n objs: []\n }];\n _buildFuncSignatures(spel, brns);\n return brns.map(function (_ref6) {\n var s = _ref6.s,\n params = _ref6.params;\n return {\n s: s,\n params: params\n };\n }).reverse().filter(function (_ref7) {\n var s = _ref7.s;\n return s !== \"\" && s !== \"?\";\n });\n};\n\n// a.toLower().toUpper()\n// ->\n// ?.toLower().toUpper()\n// ?.toUpper()\nvar _buildFuncSignatures = function _buildFuncSignatures(spel, brns) {\n var params = [],\n s = \"\";\n var type = spel.type,\n methodName = spel.methodName,\n val = spel.val,\n obj = spel.obj,\n args = spel.args,\n isVar = spel.isVar,\n cls = spel.cls,\n children = spel.children;\n var lastChild = children === null || children === void 0 ? void 0 : children[children.length - 1];\n var currBrn = brns[brns.length - 1];\n if (type === \"!func\") {\n // T(DateTimeFormat).forPattern(?).parseDateTime(?) -- ok\n // T(LocalDateTime).parse(?, T(DateTimeFormatter).ofPattern(?)) -- will not work\n var o = obj;\n while (o) {\n var _currBrn$params;\n var _buildFuncSignatures2 = _buildFuncSignatures(_objectSpread(_objectSpread({}, o), {}, {\n obj: null\n }), [{}]),\n _buildFuncSignatures3 = _slicedToArray(_buildFuncSignatures2, 2),\n s1 = _buildFuncSignatures3[0],\n params1 = _buildFuncSignatures3[1];\n if (s1 !== \"?\") {\n // start new branch\n var newBrn = {\n s: currBrn.s,\n params: _toConsumableArray(currBrn.params),\n objs: _toConsumableArray(currBrn.objs)\n };\n // finish old branch\n currBrn.objs.unshift(\"?\");\n currBrn.params.unshift(o);\n // switch\n brns.push(newBrn);\n currBrn = brns[brns.length - 1];\n }\n // step\n currBrn.objs.unshift(s1);\n (_currBrn$params = currBrn.params).unshift.apply(_currBrn$params, _toConsumableArray(params1));\n o = o.type === \"!func\" ? o.obj : null;\n }\n var _iterator4 = _createForOfIteratorHelper(brns),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _brn$objs;\n var brn = _step4.value;\n params = [].concat(_toConsumableArray((brn === null || brn === void 0 ? void 0 : brn.params) || []), _toConsumableArray(args || []));\n s = \"\";\n if (brn !== null && brn !== void 0 && (_brn$objs = brn.objs) !== null && _brn$objs !== void 0 && _brn$objs.length) s += brn.objs.join(\".\") + \".\";\n s += (isVar ? \"#\" : \"\") + methodName;\n s += \"(\" + (args || []).map(function (_) {\n return \"?\";\n }).join(\", \") + \")\";\n brn.s = s;\n brn.params = params;\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n } else if (type === \"!new\") {\n // new java.text.SimpleDateFormat('HH:mm:ss').parse('...')\n params = args || [];\n s = \"new \".concat(cls.join(\".\"), \"(\").concat(params.map(function (_) {\n return \"?\";\n }).join(\", \"), \")\");\n } else if (type === \"!type\") {\n // T(java.time.LocalTime).parse('...')\n s = \"T(\".concat(cls.join(\".\"), \")\");\n } else if (type === \"compound\" && lastChild.type === \"property\" && isFuncableProperty(lastChild.val)) {\n // {1,2}.length -- ok\n // 'Hello World'.bytes.length -- will not work\n s = children.map(function (c) {\n var _params;\n if (c === lastChild) return c.val;\n var _buildFuncSignatures4 = _buildFuncSignatures(_objectSpread(_objectSpread({}, c), {}, {\n obj: null\n }), [{}]),\n _buildFuncSignatures5 = _slicedToArray(_buildFuncSignatures4, 2),\n s1 = _buildFuncSignatures5[0],\n params1 = _buildFuncSignatures5[1];\n (_params = params).push.apply(_params, _toConsumableArray(params1));\n return s1;\n }).join(\".\");\n } else {\n params = [spel];\n s = \"?\";\n }\n if (currBrn) {\n currBrn.s = s;\n currBrn.params = params;\n }\n return [s, params];\n};\nvar convertFunc = function convertFunc(spel, conv, config, meta, parentSpel) {\n var _fsigns$;\n // Build signatures\n var convertFuncArg = function convertFuncArg(v) {\n return convertArg(v, conv, config, meta, _objectSpread(_objectSpread({}, spel), {}, {\n _groupField: parentSpel === null || parentSpel === void 0 ? void 0 : parentSpel._groupField\n }));\n };\n var fsigns = buildFuncSignatures(spel);\n var firstSign = fsigns === null || fsigns === void 0 || (_fsigns$ = fsigns[0]) === null || _fsigns$ === void 0 ? void 0 : _fsigns$.s;\n if (fsigns.length) logger.debug(\"Signatures for \", spel, \":\", firstSign, fsigns);\n\n // 1. Try to parse as value\n var maybeValue = convertFuncToValue(spel, conv, config, meta, parentSpel, fsigns, convertFuncArg);\n if (maybeValue !== undefined) return maybeValue;\n\n // 2. Try to parse as op\n var maybeOp = convertFuncToOp(spel, conv, config, meta, parentSpel, fsigns, convertFuncArg);\n if (maybeOp !== undefined) return maybeOp;\n\n // 3. Try to parse as func\n var funcKey, funcConfig, argsObj;\n // try func signature matching\n var _iterator5 = _createForOfIteratorHelper(fsigns),\n _step5;\n try {\n var _loop3 = function _loop3() {\n var _step5$value = _step5.value,\n s = _step5$value.s,\n params = _step5$value.params;\n var funcKeys = conv.funcs[s];\n if (funcKeys) {\n // todo: here we can check arg types, if we have function overloading\n funcKey = funcKeys[0];\n funcConfig = getFuncConfig(config, funcKey);\n var _funcConfig = funcConfig,\n spelFunc = _funcConfig.spelFunc;\n var argsArr = params.map(convertFuncArg);\n var argsOrder = _toConsumableArray(spelFunc.matchAll(/\\${(\\w+)}/g)).map(function (_ref8) {\n var _ref9 = _slicedToArray(_ref8, 2),\n _ = _ref9[0],\n k = _ref9[1];\n return k;\n });\n argsObj = Object.fromEntries(argsOrder.map(function (argKey, i) {\n return [argKey, argsArr[i]];\n }));\n return \"break\";\n }\n };\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _ret = _loop3();\n if (_ret === \"break\") break;\n }\n // try `spelImport`\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n if (!funcKey) {\n var _iterator6 = _createForOfIteratorHelper(iterateFuncs(config)),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var _step6$value = _slicedToArray(_step6.value, 2),\n f = _step6$value[0],\n fc = _step6$value[1];\n if (fc.spelImport) {\n var parsed = void 0;\n try {\n parsed = fc.spelImport(spel);\n } catch (_e) {\n // can't be parsed\n }\n if (parsed) {\n funcKey = f;\n funcConfig = getFuncConfig(config, funcKey);\n argsObj = {};\n for (var argKey in parsed) {\n argsObj[argKey] = convertFuncArg(parsed[argKey]);\n }\n }\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n\n // convert\n if (funcKey) {\n var funcArgs = {};\n for (var _argKey in funcConfig.args) {\n var argConfig = funcConfig.args[_argKey];\n var argVal = argsObj[_argKey];\n if (argVal === undefined) {\n argVal = argConfig === null || argConfig === void 0 ? void 0 : argConfig.defaultValue;\n if (argVal === undefined) {\n if (argConfig !== null && argConfig !== void 0 && argConfig.isOptional) {\n //ignore\n } else {\n meta.errors.push(\"No value for arg \".concat(_argKey, \" of func \").concat(funcKey));\n return undefined;\n }\n } else {\n var _argVal;\n argVal = {\n value: argVal,\n valueSrc: (_argVal = argVal) !== null && _argVal !== void 0 && _argVal.func ? \"func\" : \"value\",\n valueType: argConfig.type\n };\n }\n }\n if (argVal) funcArgs[_argKey] = argVal;\n }\n return {\n valueSrc: \"func\",\n value: {\n func: funcKey,\n args: funcArgs\n },\n valueType: funcConfig.returnType\n };\n }\n var methodName = spel.methodName;\n if (methodName) meta.errors.push(\"Signature \".concat(firstSign, \" - failed to convert\"));\n return undefined;\n};\nvar convertFuncToValue = function convertFuncToValue(spel, conv, config, meta, parentSpel, fsigns, convertFuncArg) {\n var errs, foundSign, foundWidget;\n var candidates = [];\n for (var w in config.widgets) {\n var widgetDef = config.widgets[w];\n var spelImportFuncs = widgetDef.spelImportFuncs;\n if (spelImportFuncs) {\n for (var i = 0; i < spelImportFuncs.length; i++) {\n var fj = spelImportFuncs[i];\n if (isObject(fj)) {\n var bag = {};\n if (isJsonCompatible(fj, spel, bag)) {\n for (var k in bag) {\n bag[k] = convertFuncArg(bag[k]);\n }\n candidates.push({\n s: \"widgets.\".concat(w, \".spelImportFuncs[\").concat(i, \"]\"),\n w: w,\n argsObj: bag\n });\n }\n }\n }\n }\n }\n var _iterator7 = _createForOfIteratorHelper(fsigns),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var _step7$value = _step7.value,\n _s = _step7$value.s,\n params = _step7$value.params;\n var found = conv.valueFuncs[_s] || [];\n var _iterator8 = _createForOfIteratorHelper(found),\n _step8;\n try {\n var _loop4 = function _loop4() {\n var _step8$value = _step8.value,\n w = _step8$value.w,\n argsOrder = _step8$value.argsOrder;\n var argsArr = params.map(convertFuncArg);\n var argsObj = Object.fromEntries(argsOrder.map(function (argKey, i) {\n return [argKey, argsArr[i]];\n }));\n candidates.push({\n s: _s,\n w: w,\n argsObj: argsObj\n });\n };\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n _loop4();\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n for (var _i = 0, _candidates = candidates; _i < _candidates.length; _i++) {\n var _candidates$_i = _candidates[_i],\n s = _candidates$_i.s,\n _w = _candidates$_i.w,\n argsObj = _candidates$_i.argsObj;\n var _widgetDef = config.widgets[_w];\n var spelImportValue = _widgetDef.spelImportValue,\n type = _widgetDef.type;\n foundWidget = _w;\n foundSign = s;\n errs = [];\n for (var _k2 in argsObj) {\n if (![\"value\"].includes(argsObj[_k2].valueSrc)) {\n errs.push(\"\".concat(_k2, \" has unsupported value src \").concat(argsObj[_k2].valueSrc));\n }\n }\n var value = argsObj.v.value;\n if (spelImportValue && !errs.length) {\n var _spelImportValue$call = spelImportValue.call(config.ctx, argsObj.v, _widgetDef, argsObj);\n var _spelImportValue$call2 = _slicedToArray(_spelImportValue$call, 2);\n value = _spelImportValue$call2[0];\n errs = _spelImportValue$call2[1];\n if (errs && !Array.isArray(errs)) errs = [errs];\n }\n if (!errs.length) {\n return {\n valueSrc: \"value\",\n valueType: type,\n value: value\n };\n }\n }\n if (foundWidget && errs.length) {\n meta.errors.push(\"Signature \".concat(foundSign, \" - looks like convertable to \").concat(foundWidget, \", but: \").concat(errs.join(\"; \")));\n }\n return undefined;\n};\nvar convertFuncToOp = function convertFuncToOp(spel, conv, config, meta, parentSpel, fsigns, convertFuncArg) {\n var errs, opKey, foundSign;\n var _iterator9 = _createForOfIteratorHelper(fsigns),\n _step9;\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var _step9$value = _step9.value,\n s = _step9$value.s,\n params = _step9$value.params;\n var found = conv.opFuncs[s] || [];\n var _iterator10 = _createForOfIteratorHelper(found),\n _step10;\n try {\n var _loop5 = function _loop5() {\n var _argsArr$filter$find;\n var _step10$value = _step10.value,\n op = _step10$value.op,\n argsOrder = _step10$value.argsOrder;\n var argsArr = params.map(convertFuncArg);\n opKey = op;\n if (op === \"!compare\") {\n if (parentSpel.type.startsWith(\"op-\") && parentSpel.children.length == 2 && parentSpel.children[1].type == \"number\" && parentSpel.children[1].val === 0) {\n return {\n v: {\n type: \"!compare\",\n children: argsArr\n }\n };\n } else {\n errs.push(\"Result of compareTo() should be compared to 0\");\n }\n }\n foundSign = s;\n errs = [];\n var opDef = config.operators[opKey];\n var spelOp = opDef.spelOp,\n valueTypes = opDef.valueTypes;\n var argsObj = Object.fromEntries(argsOrder.map(function (argKey, i) {\n return [argKey, argsArr[i]];\n }));\n var field = argsObj[\"0\"];\n var convertedArgs = Object.keys(argsObj).filter(function (k) {\n return parseInt(k) > 0;\n }).map(function (k) {\n return argsObj[k];\n });\n var valueType = (_argsArr$filter$find = argsArr.filter(function (a) {\n return !!a;\n }).find(function (_ref10) {\n var valueSrc = _ref10.valueSrc;\n return valueSrc === \"value\";\n })) === null || _argsArr$filter$find === void 0 ? void 0 : _argsArr$filter$find.valueType;\n if (valueTypes && valueType && !valueTypes.includes(valueType)) {\n errs.push(\"Op supports types \".concat(valueTypes, \", but got \").concat(valueType));\n }\n if (!errs.length) {\n return {\n v: buildRule(config, meta, field, opKey, convertedArgs, spel)\n };\n }\n };\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var _ret2 = _loop5();\n if (_typeof(_ret2) === \"object\") return _ret2.v;\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n if (opKey && errs.length) {\n meta.errors.push(\"Signature \".concat(foundSign, \" - looks like convertable to \").concat(opKey, \", but: \").concat(errs.join(\"; \")));\n }\n return undefined;\n};\nvar buildRule = function buildRule(config, meta, field, opKey, convertedArgs, spel) {\n var _field3;\n if (convertedArgs.filter(function (v) {\n return v === undefined;\n }).length) {\n return undefined;\n }\n var fieldSrc = (_field3 = field) !== null && _field3 !== void 0 && _field3.func ? \"func\" : \"field\";\n if (isObject(field) && field.valueSrc) {\n // if comed from convertFuncToOp()\n fieldSrc = field.valueSrc;\n field = field.value;\n }\n var fieldConfig = getFieldConfig(config, field);\n if (!fieldConfig) {\n meta.errors.push(\"No config for field \".concat(field));\n return undefined;\n }\n var canRev = true;\n var needWrapReverse = false;\n if (spel !== null && spel !== void 0 && spel.not && canRev) {\n var opConfig = config.operators[opKey];\n if (opConfig.reversedOp) {\n opKey = opConfig.reversedOp;\n spel.not = false;\n } else {\n needWrapReverse = true;\n }\n }\n var widget = getWidgetForFieldOp(config, field, opKey);\n var widgetConfig = config.widgets[widget || fieldConfig.mainWidget];\n var asyncListValuesArr = convertedArgs.map(function (v) {\n return v.asyncListValues;\n }).filter(function (v) {\n return v != undefined;\n });\n var asyncListValues = asyncListValuesArr.length ? asyncListValuesArr[0] : undefined;\n var res = {\n type: \"rule\",\n id: uuid(),\n properties: _objectSpread({\n field: field,\n fieldSrc: fieldSrc,\n operator: opKey,\n value: convertedArgs.map(function (v) {\n return v.value;\n }),\n valueSrc: convertedArgs.map(function (v) {\n return v.valueSrc;\n }),\n valueType: convertedArgs.map(function (v) {\n if (v.valueSrc == \"value\") {\n return (widgetConfig === null || widgetConfig === void 0 ? void 0 : widgetConfig.type) || (fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.type) || v.valueType;\n }\n return v.valueType;\n })\n }, asyncListValues ? {\n asyncListValues: asyncListValues\n } : {})\n };\n if (needWrapReverse) {\n res = wrapInDefaultConj(res, config, spel === null || spel === void 0 ? void 0 : spel.not);\n if (spel !== null && spel !== void 0 && spel.not) {\n spel.not = false;\n }\n }\n return res;\n};\nvar buildRuleGroup = function buildRuleGroup(_ref11, opKey, convertedArgs, config, meta) {\n var groupFilter = _ref11.groupFilter,\n groupFieldValue = _ref11.groupFieldValue;\n if (groupFieldValue.valueSrc != \"field\") throw \"Bad groupFieldValue: \".concat(JSON.stringify(groupFieldValue));\n var groupField = groupFieldValue.value;\n var groupOpRule = buildRule(config, meta, groupField, opKey, convertedArgs);\n if (!groupOpRule) return undefined;\n var fieldConfig = getFieldConfig(config, groupField);\n var mode = fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.mode;\n var res;\n if ((groupFilter === null || groupFilter === void 0 ? void 0 : groupFilter.type) === \"group\") {\n res = _objectSpread(_objectSpread({}, groupFilter || {}), {}, {\n type: \"rule_group\",\n properties: _objectSpread(_objectSpread(_objectSpread({}, groupOpRule.properties), (groupFilter === null || groupFilter === void 0 ? void 0 : groupFilter.properties) || {}), {}, {\n mode: mode\n })\n });\n } else if (groupFilter) {\n // rule_group in rule_group\n res = _objectSpread(_objectSpread({}, groupOpRule || {}), {}, {\n type: \"rule_group\",\n children1: [groupFilter],\n properties: _objectSpread(_objectSpread({}, groupOpRule.properties), {}, {\n mode: mode\n })\n });\n } else {\n res = _objectSpread(_objectSpread({}, groupOpRule || {}), {}, {\n type: \"rule_group\",\n properties: _objectSpread(_objectSpread({}, groupOpRule.properties), {}, {\n mode: mode\n })\n });\n }\n if (!res.id) res.id = uuid();\n return res;\n};\nvar compareArgs = function compareArgs(left, right, spel, conv, config, meta) {\n var parentSpel = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n if (left.type == right.type) {\n if (left.type == \"!aggr\") {\n var _map = [left.source, right.source].map(function (v) {\n return convertArg(v, conv, config, meta, _objectSpread(_objectSpread({}, spel), {}, {\n _groupField: parentSpel === null || parentSpel === void 0 ? void 0 : parentSpel._groupField\n }));\n }),\n _map2 = _slicedToArray(_map, 2),\n leftSource = _map2[0],\n rightSource = _map2[1];\n //todo: check same filter\n return leftSource.value == rightSource.value;\n } else {\n var _map3 = [left, right].map(function (v) {\n return convertArg(v, conv, config, meta, _objectSpread(_objectSpread({}, spel), {}, {\n _groupField: parentSpel === null || parentSpel === void 0 ? void 0 : parentSpel._groupField\n }));\n }),\n _map4 = _slicedToArray(_map3, 2),\n leftVal = _map4[0],\n rightVal = _map4[1];\n return leftVal.value == rightVal.value;\n }\n }\n return false;\n};\nvar buildSimpleSwitch = function buildSimpleSwitch(val, conv, config, meta) {\n var children1 = {};\n var cond = null;\n var caseI = buildCase(cond, val, conv, config, meta);\n if (caseI) {\n children1[caseI.id] = caseI;\n }\n var res = {\n type: \"switch_group\",\n id: uuid(),\n children1: children1,\n properties: {}\n };\n return res;\n};\nvar buildCase = function buildCase(cond, val, conv, config, meta) {\n var spel = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n var valProperties = buildCaseValProperties(config, meta, conv, val, spel);\n var caseI;\n if (cond) {\n caseI = convertToTree(cond, conv, config, meta, spel);\n if (caseI && caseI.type) {\n if (caseI.type != \"group\") {\n caseI = wrapInDefaultConj(caseI, config);\n }\n caseI.type = \"case_group\";\n } else {\n meta.errors.push(\"Unexpected case: \".concat(JSON.stringify(caseI)));\n caseI = undefined;\n }\n } else {\n caseI = {\n id: uuid(),\n type: \"case_group\",\n properties: {}\n };\n }\n if (caseI) {\n caseI.properties = _objectSpread(_objectSpread({}, caseI.properties), valProperties);\n }\n return caseI;\n};\nvar buildCaseValueConcat = function buildCaseValueConcat(spel, conv, config, meta) {\n var flat = [];\n function _processConcatChildren(children) {\n children.map(function (child) {\n if (child.type == \"op-plus\") {\n _processConcatChildren(child.children);\n } else {\n var convertedChild = convertArg(child, conv, config, meta, spel);\n if (convertedChild) {\n flat.push(convertedChild);\n } else {\n meta.errors.push(\"Can't convert \".concat(child.type, \" in concatenation\"));\n }\n }\n });\n }\n _processConcatChildren(spel.children);\n return {\n valueSrc: \"value\",\n valueType: \"case_value\",\n value: flat\n };\n};\nvar buildCaseValProperties = function buildCaseValProperties(config, meta, conv, val) {\n var spel = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var valProperties = {};\n var convVal;\n if ((val === null || val === void 0 ? void 0 : val.type) == \"op-plus\") {\n convVal = buildCaseValueConcat(val, conv, config, meta);\n } else {\n convVal = convertArg(val, conv, config, meta, spel);\n }\n var widgetDef = config.widgets[\"case_value\"];\n var importCaseValue = widgetDef === null || widgetDef === void 0 ? void 0 : widgetDef.spelImportValue;\n if (importCaseValue) {\n var _importCaseValue = importCaseValue(convVal),\n _importCaseValue2 = _slicedToArray(_importCaseValue, 2),\n normVal = _importCaseValue2[0],\n normErrors = _importCaseValue2[1];\n normErrors.map(function (e) {\n return meta.errors.push(e);\n });\n if (normVal) {\n valProperties = {\n value: [normVal],\n valueSrc: [\"value\"],\n valueType: [\"case_value\"]\n };\n }\n } else {\n meta.errors.push(\"No fucntion to import case value\");\n }\n return valProperties;\n};\nvar wrapInDefaultConjRuleGroup = function wrapInDefaultConjRuleGroup(rule, parentField, parentFieldConfig, config, conj) {\n if (!rule) return undefined;\n return {\n type: \"rule_group\",\n id: uuid(),\n children1: _defineProperty({}, rule.id, rule),\n properties: {\n conjunction: conj || defaultGroupConjunction(config, parentFieldConfig),\n not: false,\n field: parentField\n }\n };\n};\nvar wrapInDefaultConj = function wrapInDefaultConj(rule, config) {\n var not = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n return {\n type: \"group\",\n id: uuid(),\n children1: _defineProperty({}, rule.id, rule),\n properties: {\n conjunction: defaultConjunction(config),\n not: not || false\n }\n };\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport Immutable from \"immutable\";\nimport uuid from \"./uuid\";\nimport { getFieldConfig, getOperatorConfig, getFieldParts } from \"./configUtils\";\nimport { getNewValueForFieldOp, getFirstField, getFirstOperator } from \"../utils/ruleUtils\";\nimport { isImmutable } from \"./stuff\";\nimport { jsToImmutable } from \"../import\";\nexport var getDefaultField = function getDefaultField(config) {\n var canGetFirst = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var parentRuleGroupPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var defaultField = config.settings.defaultField;\n var f = (!parentRuleGroupPath ? defaultField : getDefaultSubField(config, parentRuleGroupPath)) || canGetFirst && getFirstField(config, parentRuleGroupPath) || null;\n // if default LHS is func, convert to Immutable\n if (f != null && typeof f !== \"string\" && !isImmutable(f)) {\n f = jsToImmutable(f);\n }\n return f;\n};\nexport var getDefaultSubField = function getDefaultSubField(config) {\n var _config$settings;\n var parentRuleGroupPath = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!parentRuleGroupPath) return null;\n var fieldSeparator = (config === null || config === void 0 || (_config$settings = config.settings) === null || _config$settings === void 0 ? void 0 : _config$settings.fieldSeparator) || \".\";\n var parentRuleGroupConfig = getFieldConfig(config, parentRuleGroupPath);\n var f = parentRuleGroupConfig === null || parentRuleGroupConfig === void 0 ? void 0 : parentRuleGroupConfig.defaultField;\n if (f) {\n f = [].concat(_toConsumableArray(getFieldParts(parentRuleGroupPath)), [f]).join(fieldSeparator);\n }\n return f;\n};\nexport var getDefaultFieldSrc = function getDefaultFieldSrc(config) {\n var _config$settings$fiel;\n var canGetFirst = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return canGetFirst && ((_config$settings$fiel = config.settings.fieldSources) === null || _config$settings$fiel === void 0 ? void 0 : _config$settings$fiel[0]) || \"field\";\n};\nexport var getDefaultOperator = function getDefaultOperator(config, field) {\n var canGetFirst = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var defaultOperator = config.settings.defaultOperator;\n var fieldConfig = getFieldConfig(config, field);\n var fieldOperators = (fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.operators) || [];\n if (defaultOperator && !fieldOperators.includes(defaultOperator)) defaultOperator = null;\n var fieldDefaultOperator = fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.defaultOperator;\n if (fieldDefaultOperator && !fieldOperators.includes(fieldDefaultOperator)) fieldDefaultOperator = null;\n if (!fieldDefaultOperator && canGetFirst) fieldDefaultOperator = getFirstOperator(config, field);\n var fieldHasExplicitDefOp = fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig._origDefaultOperator;\n var op = fieldHasExplicitDefOp && fieldDefaultOperator || defaultOperator || fieldDefaultOperator;\n return op;\n};\n\n//used for complex operators like proximity\nexport var defaultOperatorOptions = function defaultOperatorOptions(config, operator, field) {\n var operatorConfig = operator ? getOperatorConfig(config, operator, field) : null;\n if (!operatorConfig) return null; //new Immutable.Map();\n return operatorConfig.options ? new Immutable.Map(operatorConfig.options && operatorConfig.options.defaults || {}) : null;\n};\nexport var defaultRuleProperties = function defaultRuleProperties(config) {\n var parentRuleGroupPath = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var item = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var canUseDefaultFieldAndOp = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var canGetFirst = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var field = null,\n operator = null,\n fieldSrc = null;\n var showErrorMessage = config.settings.showErrorMessage;\n if (item) {\n var _item$properties, _item$properties2, _item$properties3;\n fieldSrc = item === null || item === void 0 || (_item$properties = item.properties) === null || _item$properties === void 0 ? void 0 : _item$properties.fieldSrc;\n field = item === null || item === void 0 || (_item$properties2 = item.properties) === null || _item$properties2 === void 0 ? void 0 : _item$properties2.field;\n operator = item === null || item === void 0 || (_item$properties3 = item.properties) === null || _item$properties3 === void 0 ? void 0 : _item$properties3.operator;\n } else if (canUseDefaultFieldAndOp) {\n field = getDefaultField(config, canGetFirst, parentRuleGroupPath);\n if (field) {\n fieldSrc = isImmutable(field) ? \"func\" : \"field\";\n } else {\n fieldSrc = getDefaultFieldSrc(config);\n }\n operator = getDefaultOperator(config, field, true);\n } else {\n fieldSrc = getDefaultFieldSrc(config);\n }\n var current = new Immutable.Map({\n fieldSrc: fieldSrc,\n field: field,\n operator: operator,\n value: new Immutable.List(),\n valueSrc: new Immutable.List(),\n //used for complex operators like proximity\n operatorOptions: defaultOperatorOptions(config, operator, field)\n });\n if (showErrorMessage) {\n current = current.set(\"valueError\", new Immutable.List());\n }\n if (field && operator) {\n var _getNewValueForFieldO = getNewValueForFieldOp(config, config, current, field, operator, \"operator\", false),\n newValue = _getNewValueForFieldO.newValue,\n newValueSrc = _getNewValueForFieldO.newValueSrc,\n newValueType = _getNewValueForFieldO.newValueType,\n newValueError = _getNewValueForFieldO.newValueError;\n current = current.set(\"value\", newValue).set(\"valueSrc\", newValueSrc).set(\"valueType\", newValueType);\n if (showErrorMessage) {\n current = current.set(\"valueError\", newValueError);\n }\n }\n return current;\n};\nexport var defaultGroupConjunction = function defaultGroupConjunction(config) {\n var fieldConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n fieldConfig = getFieldConfig(config, fieldConfig); // if `fieldConfig` is field name, not config\n var conjs = fieldConfig && fieldConfig.conjunctions || Object.keys(config.conjunctions);\n if (conjs.length == 1) return conjs[0];\n return config.settings.defaultGroupConjunction || config.settings.defaultConjunction || conjs[0];\n};\nexport var defaultConjunction = function defaultConjunction(config) {\n return config.settings.defaultConjunction || Object.keys(config.conjunctions)[0];\n};\nexport var defaultGroupProperties = function defaultGroupProperties(config) {\n var fieldConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n return new Immutable.Map({\n conjunction: defaultGroupConjunction(config, fieldConfig),\n not: false\n });\n};\nexport var defaultItemProperties = function defaultItemProperties(config, item) {\n var _item$properties4;\n return item && item.type == \"group\" ? defaultGroupProperties(config, item === null || item === void 0 || (_item$properties4 = item.properties) === null || _item$properties4 === void 0 ? void 0 : _item$properties4.field) : defaultRuleProperties(config, null, item);\n};\nexport var defaultRule = function defaultRule(id, config) {\n return _defineProperty({}, id, new Immutable.Map({\n type: \"rule\",\n id: id,\n properties: defaultRuleProperties(config)\n }));\n};\nexport var defaultRoot = function defaultRoot(config) {\n var canAddDefaultRule = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return new Immutable.Map({\n type: \"group\",\n id: uuid(),\n children1: new Immutable.OrderedMap(canAddDefaultRule ? _objectSpread({}, defaultRule(uuid(), config)) : {}),\n properties: defaultGroupProperties(config)\n });\n};\nexport var createListFromArray = function createListFromArray(ids) {\n return new Immutable.List(ids);\n};\nexport var emptyProperies = function emptyProperies() {\n return new Immutable.Map();\n};","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport { getFieldConfig, getOperatorConfig, getFieldWidgetConfig, getFuncConfig, getFieldSrc } from \"./configUtils\";\nimport { getOperatorsForField, getWidgetForFieldOp, getNewValueForFieldOp, isCompletedValue, isEmptyRuleProperties } from \"../utils/ruleUtils\";\nimport { defaultValue, deepEqual, logger } from \"../utils/stuff\";\nimport { getItemInListValues } from \"../utils/listValues\";\nimport { defaultOperatorOptions } from \"../utils/defaultUtils\";\nimport { fixPathsInTree } from \"../utils/treeUtils\";\nimport omit from \"lodash/omit\";\nimport { List } from \"immutable\";\nvar typeOf = function typeOf(v) {\n if (_typeof(v) == \"object\" && v !== null && Array.isArray(v)) return \"array\";else return _typeof(v);\n};\nvar isTypeOf = function isTypeOf(v, type) {\n if (typeOf(v) == type) return true;\n if (type == \"number\" && !isNaN(v)) return true; //can be casted\n return false;\n};\nexport var validateAndFixTree = function validateAndFixTree(newTree, _oldTree, newConfig, oldConfig, removeEmptyGroups, removeIncompleteRules) {\n var tree = validateTree(newTree, _oldTree, newConfig, oldConfig, removeEmptyGroups, removeIncompleteRules);\n tree = fixPathsInTree(tree);\n return tree;\n};\nexport var validateTree = function validateTree(tree, _oldTree, config, oldConfig, removeEmptyGroups, removeIncompleteRules) {\n if (removeEmptyGroups === undefined) {\n removeEmptyGroups = config.settings.removeEmptyGroupsOnLoad;\n }\n if (removeIncompleteRules === undefined) {\n removeIncompleteRules = config.settings.removeIncompleteRulesOnLoad;\n }\n var c = {\n config: config,\n oldConfig: oldConfig,\n removeEmptyGroups: removeEmptyGroups,\n removeIncompleteRules: removeIncompleteRules\n };\n return validateItem(tree, [], null, {}, c);\n};\nfunction validateItem(item, path, itemId, meta, c) {\n var type = item.get(\"type\");\n var children = item.get(\"children1\");\n if ((type === \"group\" || type === \"rule_group\" || type == \"case_group\" || type == \"switch_group\") && children && children.size) {\n return validateGroup(item, path, itemId, meta, c);\n } else if (type === \"rule\") {\n return validateRule(item, path, itemId, meta, c);\n } else {\n return item;\n }\n}\nfunction validateGroup(item, path, itemId, meta, c) {\n var removeEmptyGroups = c.removeEmptyGroups;\n var id = item.get(\"id\");\n var children = item.get(\"children1\");\n var oldChildren = children;\n if (!id && itemId) {\n id = itemId;\n item = item.set(\"id\", id);\n meta.sanitized = true;\n }\n\n //validate children\n var submeta = {};\n children = children.map(function (currentChild, childId) {\n return validateItem(currentChild, path.concat(id), childId, submeta, c);\n });\n if (removeEmptyGroups) children = children.filter(function (currentChild) {\n return currentChild != undefined;\n });\n var sanitized = submeta.sanitized || oldChildren.size != children.size;\n if (!children.size && removeEmptyGroups && path.length) {\n sanitized = true;\n item = undefined;\n }\n if (sanitized) meta.sanitized = true;\n if (sanitized && item) item = item.set(\"children1\", children);\n return item;\n}\nfunction validateRule(item, path, itemId, meta, c) {\n var _field, _field$toJS, _field2, _field2$toJS;\n var removeIncompleteRules = c.removeIncompleteRules,\n config = c.config,\n oldConfig = c.oldConfig;\n var showErrorMessage = config.settings.showErrorMessage;\n var id = item.get(\"id\");\n var properties = item.get(\"properties\");\n var field = properties.get(\"field\") || null;\n var fieldSrc = properties.get(\"fieldSrc\") || null;\n var operator = properties.get(\"operator\") || null;\n var operatorOptions = properties.get(\"operatorOptions\");\n var valueSrc = properties.get(\"valueSrc\");\n var value = properties.get(\"value\");\n var valueError = properties.get(\"valueError\");\n var oldSerialized = {\n field: ((_field = field) === null || _field === void 0 || (_field$toJS = _field.toJS) === null || _field$toJS === void 0 ? void 0 : _field$toJS.call(_field)) || field,\n fieldSrc: fieldSrc,\n operator: operator,\n operatorOptions: operatorOptions ? operatorOptions.toJS() : {},\n valueSrc: valueSrc ? valueSrc.toJS() : null,\n value: value ? value.toJS() : null,\n valueError: valueError ? valueError.toJS() : null\n };\n var _wasValid = field && operator && value && !value.includes(undefined);\n if (!id && itemId) {\n id = itemId;\n item = item.set(\"id\", id);\n meta.sanitized = true;\n }\n\n //validate field\n var fieldDefinition = field ? getFieldConfig(config, field) : null;\n if (field && !fieldDefinition) {\n logger.warn(\"No config for field \".concat(field));\n field = null;\n }\n if (field == null) {\n properties = [\"operator\", \"operatorOptions\", \"valueSrc\", \"value\", \"valueError\"].reduce(function (map, key) {\n return map[\"delete\"](key);\n }, properties);\n operator = null;\n }\n if (!fieldSrc) {\n fieldSrc = getFieldSrc(field);\n properties = properties.set(\"fieldSrc\", fieldSrc);\n }\n\n //validate operator\n // Backward compatibility: obsolete operator range_between\n if (operator == \"range_between\" || operator == \"range_not_between\") {\n operator = operator == \"range_between\" ? \"between\" : \"not_between\";\n console.info(\"Fixed operator \".concat(properties.get(\"operator\"), \" to \").concat(operator));\n properties = properties.set(\"operator\", operator);\n }\n var operatorDefinition = operator ? getOperatorConfig(config, operator, field) : null;\n if (operator && !operatorDefinition) {\n console.warn(\"No config for operator \".concat(operator));\n operator = null;\n }\n var availOps = field ? getOperatorsForField(config, field) : [];\n if (field) {\n if (!(availOps !== null && availOps !== void 0 && availOps.length)) {\n console.warn(\"Type of field \".concat(field, \" is not supported\"));\n operator = null;\n } else if (operator && availOps.indexOf(operator) == -1) {\n if (operator == \"is_empty\" || operator == \"is_not_empty\") {\n // Backward compatibility: is_empty #494\n operator = operator == \"is_empty\" ? \"is_null\" : \"is_not_null\";\n console.info(\"Fixed operator \".concat(properties.get(\"operator\"), \" to \").concat(operator, \" for \").concat(field));\n properties = properties.set(\"operator\", operator);\n } else {\n console.warn(\"Operator \".concat(operator, \" is not supported for field \").concat(field));\n operator = null;\n }\n }\n }\n if (operator == null) {\n // do not unset operator ?\n properties = properties[\"delete\"](\"operatorOptions\");\n properties = properties[\"delete\"](\"valueSrc\");\n properties = properties[\"delete\"](\"value\");\n properties = properties[\"delete\"](\"valueError\");\n }\n\n //validate operator options\n operatorOptions = properties.get(\"operatorOptions\");\n var _operatorCardinality = operator ? defaultValue(operatorDefinition.cardinality, 1) : null;\n if (!operator || operatorOptions && !operatorDefinition.options) {\n operatorOptions = null;\n properties = properties[\"delete\"](\"operatorOptions\");\n } else if (operator && !operatorOptions && operatorDefinition.options) {\n operatorOptions = defaultOperatorOptions(config, operator, field);\n properties = properties.set(\"operatorOptions\", operatorOptions);\n }\n\n //validate values\n valueSrc = properties.get(\"valueSrc\");\n value = properties.get(\"value\");\n var canFix = !showErrorMessage;\n var isEndValue = true;\n var _getNewValueForFieldO = getNewValueForFieldOp(config, oldConfig, properties, field, operator, null, canFix, isEndValue),\n newValue = _getNewValueForFieldO.newValue,\n newValueSrc = _getNewValueForFieldO.newValueSrc,\n newValueError = _getNewValueForFieldO.newValueError;\n value = newValue;\n valueSrc = newValueSrc;\n valueError = newValueError;\n properties = properties.set(\"value\", value);\n properties = properties.set(\"valueSrc\", valueSrc);\n if (showErrorMessage) {\n properties = properties.set(\"valueError\", valueError);\n } else {\n properties = properties[\"delete\"](\"valueError\");\n }\n var newSerialized = {\n field: ((_field2 = field) === null || _field2 === void 0 || (_field2$toJS = _field2.toJS) === null || _field2$toJS === void 0 ? void 0 : _field2$toJS.call(_field2)) || field,\n fieldSrc: fieldSrc,\n operator: operator,\n operatorOptions: operatorOptions ? operatorOptions.toJS() : {},\n valueSrc: valueSrc ? valueSrc.toJS() : null,\n value: value ? value.toJS() : null,\n valueError: valueError ? valueError.toJS() : null\n };\n var sanitized = !deepEqual(oldSerialized, newSerialized);\n //const isCompleted = !!operator && !isEmptyRuleProperties(properties.toObject(), config, false);\n var isValueCompleted = value && value.filter(function (v, delta) {\n return !isCompletedValue(v, valueSrc.get(delta), config);\n }).size == 0;\n var isFieldCompleted = isCompletedValue(field, fieldSrc, config);\n var isCompleted = isFieldCompleted && operator && isValueCompleted;\n if (sanitized) meta.sanitized = true;\n if (!isCompleted && removeIncompleteRules) {\n var reason = \"Uncomplete rule\";\n if (!isFieldCompleted) {\n reason = \"Uncomplete LHS\";\n } else {\n var _newSerialized$valueS, _newSerialized$valueS2, _oldSerialized$valueS;\n reason = \"Uncomplete RHS\";\n if ((_newSerialized$valueS = newSerialized.valueSrc) !== null && _newSerialized$valueS !== void 0 && _newSerialized$valueS[0] && ((_newSerialized$valueS2 = newSerialized.valueSrc) === null || _newSerialized$valueS2 === void 0 ? void 0 : _newSerialized$valueS2[0]) != ((_oldSerialized$valueS = oldSerialized.valueSrc) === null || _oldSerialized$valueS === void 0 ? void 0 : _oldSerialized$valueS[0])) {\n // eg. operator `starts_with` supports only valueSrc \"value\"\n reason = \"Bad value src \".concat(newSerialized.valueSrc);\n }\n }\n console.warn(\"[RAQB validate]\", \"Removing rule: \", oldSerialized, \"Reason: \".concat(reason));\n item = undefined;\n } else if (sanitized) item = item.set(\"properties\", properties);\n return item;\n}\n\n/**\n * \n * @param {bool} canFix true is useful for func values to remove bad args\n * @param {bool} isEndValue false if value is in process of editing by user\n * @param {bool} isRawValue false is used only internally from validateFuncValue\n * @return {array} [validError, fixedValue] - if validError === null and canFix == true, fixedValue can differ from value if was fixed\n */\nexport var validateValue = function validateValue(config, leftField, field, operator, value, valueType, valueSrc, asyncListValues) {\n var canFix = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : false;\n var isEndValue = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;\n var isRawValue = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : true;\n var validError = null;\n var fixedValue = value;\n if (value != null) {\n if (valueSrc == \"field\") {\n var _validateFieldValue = validateFieldValue(leftField, field, value, valueSrc, valueType, asyncListValues, config, operator, isEndValue, canFix);\n var _validateFieldValue2 = _slicedToArray(_validateFieldValue, 2);\n validError = _validateFieldValue2[0];\n fixedValue = _validateFieldValue2[1];\n } else if (valueSrc == \"func\") {\n var _validateFuncValue = validateFuncValue(leftField, field, value, valueSrc, valueType, asyncListValues, config, operator, isEndValue, canFix);\n var _validateFuncValue2 = _slicedToArray(_validateFuncValue, 2);\n validError = _validateFuncValue2[0];\n fixedValue = _validateFuncValue2[1];\n } else if (valueSrc == \"value\" || !valueSrc) {\n var _validateNormalValue = validateNormalValue(leftField, field, value, valueSrc, valueType, asyncListValues, config, operator, isEndValue, canFix);\n var _validateNormalValue2 = _slicedToArray(_validateNormalValue, 2);\n validError = _validateNormalValue2[0];\n fixedValue = _validateNormalValue2[1];\n }\n if (!validError) {\n var fieldConfig = getFieldConfig(config, field);\n var w = getWidgetForFieldOp(config, field, operator, valueSrc);\n var operatorDefinition = operator ? getOperatorConfig(config, operator, field) : null;\n var fieldWidgetDefinition = omit(getFieldWidgetConfig(config, field, operator, w, valueSrc), [\"factory\"]);\n var rightFieldDefinition = valueSrc == \"field\" ? getFieldConfig(config, value) : null;\n var fieldSettings = fieldWidgetDefinition; // widget definition merged with fieldSettings\n\n var fn = fieldWidgetDefinition.validateValue;\n if (typeof fn == \"function\") {\n var args = [fixedValue, fieldSettings, operator, operatorDefinition];\n if (valueSrc == \"field\") args.push(rightFieldDefinition);\n var validResult = fn.call.apply(fn, [config.ctx].concat(args));\n if (typeof validResult == \"boolean\") {\n if (validResult == false) validError = \"Invalid value\";\n } else {\n validError = validResult;\n }\n }\n }\n }\n if (isRawValue && validError) {\n console.warn(\"[RAQB validate]\", \"Field \".concat(field, \": \").concat(validError));\n }\n return [validError, fixedValue];\n};\nvar validateValueInList = function validateValueInList(value, listValues, canFix, isEndValue, removeInvalidMultiSelectValuesOnLoad) {\n var values = List.isList(value) ? value.toJS() : value instanceof Array ? _toConsumableArray(value) : undefined;\n if (values) {\n var _values$reduce = values.reduce(function (_ref, val) {\n var _ref2 = _slicedToArray(_ref, 2),\n goodVals = _ref2[0],\n badVals = _ref2[1];\n var vv = getItemInListValues(listValues, val);\n if (vv == undefined) {\n return [goodVals, [].concat(_toConsumableArray(badVals), [val])];\n } else {\n return [[].concat(_toConsumableArray(goodVals), [vv.value]), badVals];\n }\n }, [[], []]),\n _values$reduce2 = _slicedToArray(_values$reduce, 2),\n goodValues = _values$reduce2[0],\n badValues = _values$reduce2[1];\n var plural = badValues.length > 1;\n var err = badValues.length ? \"\".concat(plural ? \"Values\" : \"Value\", \" \").concat(badValues.join(\", \"), \" \").concat(plural ? \"are\" : \"is\", \" not in list of values\") : null;\n // always remove bad values at tree validation as user can't unselect them (except AntDesign widget)\n if (removeInvalidMultiSelectValuesOnLoad !== undefined) {\n canFix = removeInvalidMultiSelectValuesOnLoad;\n } else {\n canFix = canFix || isEndValue;\n }\n return [err, canFix ? goodValues : value];\n } else {\n var vv = getItemInListValues(listValues, value);\n if (vv == undefined) {\n return [\"Value \".concat(value, \" is not in list of values\"), value];\n } else {\n value = vv.value;\n }\n return [null, value];\n }\n};\n\n/**\n* \n*/\nvar validateNormalValue = function validateNormalValue(leftField, field, value, valueSrc, valueType, asyncListValues, config) {\n var operator = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;\n var isEndValue = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : false;\n var canFix = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;\n if (field) {\n var fieldConfig = getFieldConfig(config, field);\n var w = getWidgetForFieldOp(config, field, operator, valueSrc);\n var wConfig = config.widgets[w];\n var wType = wConfig === null || wConfig === void 0 ? void 0 : wConfig.type;\n var jsType = wConfig === null || wConfig === void 0 ? void 0 : wConfig.jsType;\n var fieldSettings = fieldConfig.fieldSettings;\n var listValues = (fieldSettings === null || fieldSettings === void 0 ? void 0 : fieldSettings.treeValues) || (fieldSettings === null || fieldSettings === void 0 ? void 0 : fieldSettings.listValues);\n var isAsyncListValues = !!(fieldSettings !== null && fieldSettings !== void 0 && fieldSettings.asyncFetch);\n // todo: for select/multiselect value can be string or number\n var canSkipCheck = listValues || isAsyncListValues;\n if (valueType && wType && valueType != wType) return [\"Value should have type \".concat(wType, \", but got value of type \").concat(valueType), value];\n if (jsType && !isTypeOf(value, jsType) && !canSkipCheck) {\n return [\"Value should have JS type \".concat(jsType, \", but got value of type \").concat(_typeof(value)), value];\n }\n if (fieldSettings) {\n var realListValues = asyncListValues || listValues;\n if (realListValues && !fieldSettings.allowCustomValues) {\n return validateValueInList(value, realListValues, canFix, isEndValue, config.settings.removeInvalidMultiSelectValuesOnLoad);\n }\n if (fieldSettings.min != null && value < fieldSettings.min) {\n return [\"Value \".concat(value, \" < min \").concat(fieldSettings.min), canFix ? fieldSettings.min : value];\n }\n if (fieldSettings.max != null && value > fieldSettings.max) {\n return [\"Value \".concat(value, \" > max \").concat(fieldSettings.max), canFix ? fieldSettings.max : value];\n }\n }\n }\n return [null, value];\n};\n\n/**\n* \n*/\nvar validateFieldValue = function validateFieldValue(leftField, field, value, _valueSrc, valueType, asyncListValues, config) {\n var operator = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;\n var isEndValue = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : false;\n var canFix = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;\n var fieldSeparator = config.settings.fieldSeparator;\n var isFuncArg = _typeof(field) == \"object\" && (field === null || field === void 0 ? void 0 : field._isFuncArg);\n var leftFieldStr = Array.isArray(leftField) ? leftField.join(fieldSeparator) : leftField;\n var rightFieldStr = Array.isArray(value) ? value.join(fieldSeparator) : value;\n var rightFieldDefinition = getFieldConfig(config, value);\n if (!rightFieldDefinition) return [\"Unknown field \".concat(value), value];\n if (rightFieldStr == leftFieldStr && !isFuncArg) return [\"Can't compare field \".concat(leftField, \" with itself\"), value];\n if (valueType && valueType != rightFieldDefinition.type) return [\"Field \".concat(value, \" is of type \").concat(rightFieldDefinition.type, \", but expected \").concat(valueType), value];\n return [null, value];\n};\n\n/**\n* \n*/\nvar validateFuncValue = function validateFuncValue(leftField, field, value, _valueSrc, valueType, asyncListValues, config) {\n var operator = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;\n var isEndValue = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : false;\n var canFix = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;\n var fixedValue = value;\n if (value) {\n var funcKey = value.get(\"func\");\n if (funcKey) {\n var funcConfig = getFuncConfig(config, funcKey);\n if (funcConfig) {\n if (valueType && funcConfig.returnType != valueType) return [\"Function \".concat(funcKey, \" should return value of type \").concat(funcConfig.returnType, \", but got \").concat(valueType), value];\n for (var argKey in funcConfig.args) {\n var argConfig = funcConfig.args[argKey];\n var args = fixedValue.get(\"args\");\n var argVal = args ? args.get(argKey) : undefined;\n var argDef = getFieldConfig(config, argConfig);\n var argValue = argVal ? argVal.get(\"value\") : undefined;\n var argValueSrc = argVal ? argVal.get(\"valueSrc\") : undefined;\n if (argValue !== undefined) {\n var _validateValue = validateValue(config, leftField, argDef, operator, argValue, argConfig.type, argValueSrc, asyncListValues, canFix, isEndValue, false),\n _validateValue2 = _slicedToArray(_validateValue, 2),\n argValidError = _validateValue2[0],\n fixedArgVal = _validateValue2[1];\n if (argValidError !== null) {\n if (canFix) {\n fixedValue = fixedValue.deleteIn([\"args\", argKey]);\n if (argConfig.defaultValue !== undefined) {\n fixedValue = fixedValue.setIn([\"args\", argKey, \"value\"], argConfig.defaultValue);\n fixedValue = fixedValue.setIn([\"args\", argKey, \"valueSrc\"], \"value\");\n }\n } else {\n return [\"Invalid value of arg \".concat(argKey, \" for func \").concat(funcKey, \": \").concat(argValidError), value];\n }\n } else if (fixedArgVal !== argValue) {\n fixedValue = fixedValue.setIn([\"args\", argKey, \"value\"], fixedArgVal);\n }\n } else if (isEndValue && argConfig.defaultValue === undefined && !canFix && !argConfig.isOptional) {\n return [\"Value of arg \".concat(argKey, \" for func \").concat(funcKey, \" is required\"), value];\n }\n }\n } else return [\"Unknown function \".concat(funcKey), value];\n } // else it's not function value\n } // empty value\n\n return [null, fixedValue];\n};","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport { getFieldConfig, getFuncConfig, getFuncSignature } from \"../utils/configUtils\";\nimport { filterValueSourcesForField, completeValue, selectTypes } from \"../utils/ruleUtils\";\nimport { validateValue } from \"../utils/validation\";\nimport Immutable from \"immutable\";\n\n// helpers\nvar isObject = function isObject(v) {\n return _typeof(v) == \"object\" && v !== null && !Array.isArray(v);\n};\n\n/**\n * @param {Immutable.Map} value\n * @param {object} config\n * @return {Immutable.Map | undefined} - undefined if func value is not complete (missing required arg vals); can return completed value != value\n */\nexport var completeFuncValue = function completeFuncValue(value, config) {\n if (!value) return undefined;\n var funcKey = value.get(\"func\");\n var funcConfig = funcKey && getFuncConfig(config, funcKey);\n if (!funcConfig) return undefined;\n var complValue = value;\n var tmpHasOptional = false;\n for (var argKey in funcConfig.args) {\n var argConfig = funcConfig.args[argKey];\n var valueSources = argConfig.valueSources,\n isOptional = argConfig.isOptional,\n defaultValue = argConfig.defaultValue;\n var filteredValueSources = filterValueSourcesForField(config, valueSources, argConfig);\n var args = complValue.get(\"args\");\n var argDefaultValueSrc = filteredValueSources.length == 1 ? filteredValueSources[0] : undefined;\n var argVal = args ? args.get(argKey) : undefined;\n var argValue = argVal ? argVal.get(\"value\") : undefined;\n var argValueSrc = (argVal ? argVal.get(\"valueSrc\") : undefined) || argDefaultValueSrc;\n if (argValue !== undefined) {\n var completeArgValue = completeValue(argValue, argValueSrc, config);\n if (completeArgValue === undefined) {\n return undefined;\n } else if (completeArgValue !== argValue) {\n complValue = complValue.setIn([\"args\", argKey, \"value\"], completeArgValue);\n }\n if (tmpHasOptional) {\n // has gap\n return undefined;\n }\n } else if (defaultValue !== undefined && !isObject(defaultValue)) {\n complValue = complValue.setIn([\"args\", argKey, \"value\"], getDefaultArgValue(argConfig));\n complValue = complValue.setIn([\"args\", argKey, \"valueSrc\"], \"value\");\n } else if (isOptional) {\n // optional\n tmpHasOptional = true;\n } else {\n // missing value\n return undefined;\n }\n }\n return complValue;\n};\n\n/**\n * @param {Immutable.Map} value \n * @return {array} - [usedFields, badFields]\n */\n// const getUsedFieldsInFuncValue = (value, config) => {\n// let usedFields = [];\n// let badFields = [];\n\n// const _traverse = (value) => {\n// const args = value && value.get(\"args\");\n// if (!args) return;\n// for (const arg of args.values()) {\n// if (arg.get(\"valueSrc\") == \"field\") {\n// const rightField = arg.get(\"value\");\n// if (rightField) {\n// const rightFieldDefinition = config ? getFieldConfig(config, rightField) : undefined;\n// if (config && !rightFieldDefinition)\n// badFields.push(rightField);\n// else\n// usedFields.push(rightField);\n// }\n// } else if (arg.get(\"valueSrc\") == \"func\") {\n// _traverse(arg.get(\"value\"));\n// }\n// }\n// };\n\n// _traverse(value);\n\n// return [usedFields, badFields];\n// };\n\n/**\n * Used @ FuncWidget\n * @param {Immutable.Map} value \n * @param {string} funcKey \n * @param {object} config \n */\nexport var setFunc = function setFunc(value, funcKey, config) {\n var fieldSeparator = config.settings.fieldSeparator;\n value = value || new Immutable.Map();\n if (Array.isArray(funcKey)) {\n // fix for cascader\n funcKey = funcKey.join(fieldSeparator);\n }\n var oldFuncKey = value.get(\"func\");\n var oldArgs = value.get(\"args\");\n value = value.set(\"func\", funcKey);\n var funcConfig = funcKey && getFuncConfig(config, funcKey);\n var newFuncSignature = funcKey && getFuncSignature(config, funcKey);\n var oldFuncSignature = oldFuncKey && getFuncSignature(config, oldFuncKey);\n var keepArgsKeys = getCompatibleArgsOnFuncChange(oldFuncSignature, newFuncSignature, oldArgs, config);\n if (keepArgsKeys.length) {\n var argsKeys = Object.keys(newFuncSignature.args);\n var deleteArgsKeys = argsKeys.filter(function (k) {\n return !keepArgsKeys.includes(k);\n });\n value = deleteArgsKeys.reduce(function (value, k) {\n return value.deleteIn([\"args\", k]);\n }, value);\n } else {\n value = value.set(\"args\", new Immutable.Map());\n }\n\n // defaults\n if (funcConfig) {\n for (var argKey in funcConfig.args) {\n var argConfig = funcConfig.args[argKey];\n var valueSources = argConfig.valueSources,\n defaultValue = argConfig.defaultValue;\n var filteredValueSources = filterValueSourcesForField(config, valueSources, argConfig);\n var firstValueSrc = filteredValueSources.length ? filteredValueSources[0] : undefined;\n var defaultValueSrc = defaultValue ? isObject(defaultValue) && !!defaultValue.func ? \"func\" : \"value\" : undefined;\n var argDefaultValueSrc = defaultValueSrc || firstValueSrc;\n var hasValue = value.getIn([\"args\", argKey]);\n if (!hasValue) {\n if (defaultValue !== undefined) {\n value = value.setIn([\"args\", argKey, \"value\"], getDefaultArgValue(argConfig));\n }\n if (argDefaultValueSrc) {\n value = value.setIn([\"args\", argKey, \"valueSrc\"], argDefaultValueSrc);\n }\n }\n }\n }\n return value;\n};\nvar getDefaultArgValue = function getDefaultArgValue(_ref) {\n var value = _ref.defaultValue;\n if (isObject(value) && !Immutable.Map.isMap(value) && value.func) {\n return Immutable.fromJS(value, function (k, v) {\n return Immutable.Iterable.isIndexed(v) ? v.toList() : v.toOrderedMap();\n });\n }\n return value;\n};\n\n/**\n* Used @ FuncWidget\n* @param {Immutable.Map} value \n* @param {string} argKey \n* @param {*} argVal \n* @param {object} argConfig \n*/\nexport var setArgValue = function setArgValue(value, argKey, argVal, argConfig, config) {\n if (value && value.get(\"func\")) {\n value = value.setIn([\"args\", argKey, \"value\"], argVal);\n\n // set default arg value source\n var valueSrc = value.getIn([\"args\", argKey, \"valueSrc\"]);\n var valueSources = argConfig.valueSources;\n var filteredValueSources = filterValueSourcesForField(config, valueSources, argConfig);\n var argDefaultValueSrc = filteredValueSources.length == 1 ? filteredValueSources[0] : undefined;\n if (!argDefaultValueSrc && filteredValueSources.includes(\"value\")) {\n argDefaultValueSrc = \"value\";\n }\n if (!valueSrc && argDefaultValueSrc) {\n value = value.setIn([\"args\", argKey, \"valueSrc\"], argDefaultValueSrc);\n }\n }\n return value;\n};\n\n/**\n* Used @ FuncWidget\n* @param {Immutable.Map} value \n* @param {string} argKey \n* @param {string} argValSrc \n* @param {object} argConfig \n*/\nexport var setArgValueSrc = function setArgValueSrc(value, argKey, argValSrc, _argConfig, _config) {\n if (value && value.get(\"func\")) {\n value = value.setIn([\"args\", argKey], new Immutable.Map({\n valueSrc: argValSrc\n }));\n }\n return value;\n};\n\n// see getFuncSignature in configUtils\nexport var getCompatibleArgsOnFuncChange = function getCompatibleArgsOnFuncChange(s1, s2, argVals, config) {\n if ((s1 === null || s1 === void 0 ? void 0 : s1.returnType) != (s2 === null || s2 === void 0 ? void 0 : s2.returnType)) return [];\n var checkIndexes = false;\n var keys = Object.keys(s2.args);\n var compatibleKeys = keys.filter(function (k, i) {\n var arg2 = s2.args[k];\n var arg1 = s1.args[k];\n var oldInd = Object.keys(s1.args).indexOf(k);\n if (!arg1 && (arg2.defaultValue !== undefined || arg2.isOptional)) {\n return true;\n }\n if (checkIndexes && i !== oldInd) {\n return false;\n }\n if ((arg1 === null || arg1 === void 0 ? void 0 : arg1.type) != arg2.type) return false;\n if (selectTypes.includes(arg2.type)) {\n if (!arg1.listValuesType || arg1.listValuesType !== arg2.listValuesType) return false;\n }\n if (argVals) {\n var argVal = argVals.get(k);\n var argValue = argVal === null || argVal === void 0 ? void 0 : argVal.get(\"value\");\n var argValueSrc = argVal === null || argVal === void 0 ? void 0 : argVal.get(\"valueSrc\");\n if (arg2.valueSources && !arg2.valueSources.includes(argValueSrc)) return false;\n var leftField = null,\n operator = null,\n argDef = arg2,\n asyncListValues = null,\n canFix = false,\n isEndValue = true;\n var _validateValue = validateValue(config, leftField, argDef, operator, argValue, argDef.type, argValueSrc, asyncListValues, canFix, isEndValue, false),\n _validateValue2 = _slicedToArray(_validateValue, 2),\n argValidError = _validateValue2[0],\n _fixedArgVal = _validateValue2[1];\n if (argValidError) return false;\n }\n return true;\n });\n return compatibleKeys;\n};","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport { getFieldConfig, getOperatorConfig, getFieldWidgetConfig, getFieldRawConfig, getFuncConfig, getFieldParts, isFieldDescendantOfField } from \"./configUtils\";\nimport { defaultValue, getFirstDefined } from \"../utils/stuff\";\nimport Immutable from \"immutable\";\nimport { validateValue } from \"../utils/validation\";\nimport last from \"lodash/last\";\nimport { completeFuncValue } from \"./funcUtils\";\nexport var selectTypes = [\"select\", \"multiselect\", \"treeselect\", \"treemultiselect\"];\n\n/**\n * @param {object} config\n * @param {object} oldConfig\n * @param {Immutable.Map} current\n * @param {string} newField\n * @param {string} newOperator\n * @param {string} changedProp\n * @return {object} - {canReuseValue, newValue, newValueSrc, newValueType, newValueError}\n */\nexport var getNewValueForFieldOp = function getNewValueForFieldOp(config) {\n var oldConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var current = arguments.length > 2 ? arguments[2] : undefined;\n var newField = arguments.length > 3 ? arguments[3] : undefined;\n var newOperator = arguments.length > 4 ? arguments[4] : undefined;\n var changedProp = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n var canFix = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : true;\n var isEndValue = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;\n if (!oldConfig) oldConfig = config;\n var keepInputOnChangeFieldSrc = config.settings.keepInputOnChangeFieldSrc;\n var currentField = current.get(\"field\");\n var currentFieldType = current.get(\"fieldType\");\n //const currentFieldSrc = current.get(\"fieldSrc\");\n var currentOperator = current.get(\"operator\");\n var currentValue = current.get(\"value\");\n var currentValueSrc = current.get(\"valueSrc\", new Immutable.List());\n var currentValueType = current.get(\"valueType\", new Immutable.List());\n var currentAsyncListValues = current.get(\"asyncListValues\");\n\n //const isValidatingTree = (changedProp === null);\n var _config$settings = config.settings,\n convertableWidgets = _config$settings.convertableWidgets,\n clearValueOnChangeField = _config$settings.clearValueOnChangeField,\n clearValueOnChangeOp = _config$settings.clearValueOnChangeOp,\n showErrorMessage = _config$settings.showErrorMessage;\n\n //const currentOperatorConfig = getOperatorConfig(oldConfig, currentOperator);\n var newOperatorConfig = getOperatorConfig(config, newOperator, newField);\n //const currentOperatorCardinality = currentOperator ? defaultValue(currentOperatorConfig.cardinality, 1) : null;\n var operatorCardinality = newOperator ? defaultValue(newOperatorConfig.cardinality, 1) : null;\n var currentFieldConfig = getFieldConfig(oldConfig, currentField);\n var newFieldConfig = getFieldConfig(config, newField);\n var isOkWithoutField = !currentField && currentFieldType && keepInputOnChangeFieldSrc;\n var currentType = (currentFieldConfig === null || currentFieldConfig === void 0 ? void 0 : currentFieldConfig.type) || currentFieldType;\n var newType = (newFieldConfig === null || newFieldConfig === void 0 ? void 0 : newFieldConfig.type) || !newField && isOkWithoutField && currentType;\n var canReuseValue = (currentField || isOkWithoutField) && currentOperator && newOperator && currentValue != undefined;\n canReuseValue = canReuseValue && (!changedProp || changedProp == \"field\" && !clearValueOnChangeField || changedProp == \"operator\" && !clearValueOnChangeOp);\n canReuseValue = canReuseValue && currentType && newType && currentType == newType;\n if (canReuseValue && selectTypes.includes(newType) && changedProp == \"field\") {\n var newListValuesType = newFieldConfig === null || newFieldConfig === void 0 ? void 0 : newFieldConfig.listValuesType;\n var currentListValuesType = currentFieldConfig === null || currentFieldConfig === void 0 ? void 0 : currentFieldConfig.listValuesType;\n if (newListValuesType && newListValuesType === currentListValuesType) {\n // ok\n } else {\n // different fields of select types has different listValues\n canReuseValue = false;\n }\n }\n\n // compare old & new widgets\n for (var i = 0; i < operatorCardinality; i++) {\n var vs = currentValueSrc.get(i) || null;\n var currentWidget = getWidgetForFieldOp(oldConfig, currentField, currentOperator, vs);\n var newWidget = getWidgetForFieldOp(config, newField, newOperator, vs);\n // need to also check value widgets if we changed operator and current value source was 'field'\n // cause for select type op '=' requires single value and op 'in' requires array value\n var currentValueWidget = vs == \"value\" ? currentWidget : getWidgetForFieldOp(oldConfig, currentField, currentOperator, \"value\");\n var newValueWidget = vs == \"value\" ? newWidget : getWidgetForFieldOp(config, newField, newOperator, \"value\");\n var canReuseWidget = newValueWidget == currentValueWidget || (convertableWidgets[currentValueWidget] || []).includes(newValueWidget) || !currentValueWidget && isOkWithoutField;\n if (!canReuseWidget) {\n canReuseValue = false;\n }\n }\n if (currentOperator != newOperator && [currentOperator, newOperator].includes(\"proximity\")) canReuseValue = false;\n var firstWidgetConfig = getFieldWidgetConfig(config, newField, newOperator, null, currentValueSrc.first());\n var valueSources = getValueSourcesForFieldOp(config, newField, newOperator, null);\n if (!newField && isOkWithoutField) {\n valueSources = Object.keys(config.settings.valueSourcesInfo);\n }\n var valueFixes = {};\n var valueErrors = Array.from({\n length: operatorCardinality\n }, function () {\n return null;\n });\n if (canReuseValue) {\n var _loop = function _loop() {\n var v = currentValue.get(_i);\n var vType = currentValueType.get(_i) || null;\n var vSrc = currentValueSrc.get(_i) || null;\n var isValidSrc = valueSources.find(function (v) {\n return v == vSrc;\n }) != null;\n if (!isValidSrc && _i > 0 && vSrc == null) isValidSrc = true; // make exception for range widgets (when changing op from '==' to 'between')\n var asyncListValues = currentAsyncListValues;\n var _validateValue = validateValue(config, newField, newField, newOperator, v, vType, vSrc, asyncListValues, canFix, isEndValue, true),\n _validateValue2 = _slicedToArray(_validateValue, 2),\n validateError = _validateValue2[0],\n fixedValue = _validateValue2[1];\n var isValid = !validateError;\n // Allow bad value with error message\n // But not on field change - in that case just drop bad value that can't be reused\n // ? Maybe we should also drop bad value on op change?\n // For bad multiselect value we have both error message + fixed value.\n // If we show error message, it will gone on next tree validation\n var fixValue = fixedValue !== v;\n var dropValue = !isValidSrc || !isValid && (changedProp == \"field\" || !showErrorMessage && !fixValue);\n var showValueError = !!validateError && showErrorMessage && !dropValue && !fixValue;\n if (showValueError) {\n valueErrors[_i] = validateError;\n }\n if (fixValue) {\n valueFixes[_i] = fixedValue;\n }\n if (dropValue) {\n canReuseValue = false;\n return \"break\";\n }\n };\n for (var _i = 0; _i < operatorCardinality; _i++) {\n var _ret = _loop();\n if (_ret === \"break\") break;\n }\n }\n\n // reuse value OR get defaultValue for cardinality 1 (it means default range values is not supported yet, todo)\n var newValue = null,\n newValueSrc = null,\n newValueType = null,\n newValueError = null;\n newValue = new Immutable.List(Array.from({\n length: operatorCardinality\n }, function (_ignore, i) {\n var v = undefined;\n if (canReuseValue) {\n if (i < currentValue.size) {\n v = currentValue.get(i);\n if (valueFixes[i] !== undefined) {\n v = valueFixes[i];\n }\n }\n } else if (operatorCardinality == 1) {\n var _newFieldConfig$field;\n v = getFirstDefined([newFieldConfig === null || newFieldConfig === void 0 ? void 0 : newFieldConfig.defaultValue, newFieldConfig === null || newFieldConfig === void 0 || (_newFieldConfig$field = newFieldConfig.fieldSettings) === null || _newFieldConfig$field === void 0 ? void 0 : _newFieldConfig$field.defaultValue, firstWidgetConfig === null || firstWidgetConfig === void 0 ? void 0 : firstWidgetConfig.defaultValue]);\n }\n return v;\n }));\n newValueSrc = new Immutable.List(Array.from({\n length: operatorCardinality\n }, function (_ignore, i) {\n var vs = null;\n if (canReuseValue) {\n if (i < currentValueSrc.size) vs = currentValueSrc.get(i);\n } else if (valueSources.length == 1) {\n vs = valueSources[0];\n } else if (valueSources.length > 1) {\n vs = valueSources[0];\n }\n return vs;\n }));\n if (showErrorMessage) {\n if (newOperatorConfig && newOperatorConfig.validateValues && newValueSrc.toJS().filter(function (vs) {\n return vs == \"value\" || vs == null;\n }).length == operatorCardinality) {\n // last element in `valueError` list is for range validation error\n var jsValues = firstWidgetConfig && firstWidgetConfig.toJS ? newValue.toJS().map(function (v) {\n return firstWidgetConfig.toJS.call(config.ctx, v, firstWidgetConfig);\n }) : newValue.toJS();\n var rangeValidateError = newOperatorConfig.validateValues(jsValues);\n if (showErrorMessage) {\n valueErrors.push(rangeValidateError);\n }\n }\n newValueError = new Immutable.List(valueErrors);\n }\n newValueType = new Immutable.List(Array.from({\n length: operatorCardinality\n }, function (_ignore, i) {\n var vt = null;\n if (canReuseValue) {\n if (i < currentValueType.size) vt = currentValueType.get(i);\n } else if (operatorCardinality == 1 && firstWidgetConfig && firstWidgetConfig.type !== undefined) {\n vt = firstWidgetConfig.type;\n } else if (operatorCardinality == 1 && newFieldConfig && newFieldConfig.type !== undefined) {\n vt = newFieldConfig.type == \"!group\" ? \"number\" : newFieldConfig.type;\n }\n return vt;\n }));\n return {\n canReuseValue: canReuseValue,\n newValue: newValue,\n newValueSrc: newValueSrc,\n newValueType: newValueType,\n newValueError: newValueError,\n operatorCardinality: operatorCardinality\n };\n};\nexport var getFirstField = function getFirstField(config) {\n var parentRuleGroupPath = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var fieldSeparator = config.settings.fieldSeparator;\n var parentPathArr = getFieldParts(parentRuleGroupPath, config);\n var parentField = parentRuleGroupPath ? getFieldRawConfig(config, parentRuleGroupPath) : config;\n var firstField = parentField,\n key = null,\n keysPath = [];\n do {\n var _firstField;\n var subfields = firstField === config ? config.fields : (_firstField = firstField) === null || _firstField === void 0 ? void 0 : _firstField.subfields;\n if (!subfields || !Object.keys(subfields).length) {\n firstField = key = null;\n break;\n }\n key = Object.keys(subfields)[0];\n keysPath.push(key);\n firstField = subfields[key];\n } while (firstField.type == \"!struct\" || firstField.type == \"!group\");\n return (parentPathArr || []).concat(keysPath).join(fieldSeparator);\n};\nexport var getOperatorsForType = function getOperatorsForType(config, fieldType) {\n var _config$types$fieldTy;\n return ((_config$types$fieldTy = config.types[fieldType]) === null || _config$types$fieldTy === void 0 ? void 0 : _config$types$fieldTy.operators) || null;\n};\nexport var getOperatorsForField = function getOperatorsForField(config, field) {\n var fieldConfig = getFieldConfig(config, field);\n var fieldOps = fieldConfig ? fieldConfig.operators : [];\n return fieldOps;\n};\nexport var getFirstOperator = function getFirstOperator(config, field) {\n var _fieldOps$;\n var fieldOps = getOperatorsForField(config, field);\n return (_fieldOps$ = fieldOps === null || fieldOps === void 0 ? void 0 : fieldOps[0]) !== null && _fieldOps$ !== void 0 ? _fieldOps$ : null;\n};\nexport var getFuncPathLabels = function getFuncPathLabels(field, config) {\n var parentField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n return getFieldPathLabels(field, config, parentField, \"funcs\", \"subfields\");\n};\nexport var getFieldPathLabels = function getFieldPathLabels(field, config) {\n var parentField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var fieldsKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"fields\";\n var subfieldsKey = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : \"subfields\";\n if (!field) return null;\n var fieldSeparator = config.settings.fieldSeparator;\n var parts = getFieldParts(field, config);\n var parentParts = getFieldParts(parentField, config);\n var res = parts.slice(parentParts.length).map(function (_curr, ind, arr) {\n return arr.slice(0, ind + 1);\n }).map(function (parts) {\n return [].concat(_toConsumableArray(parentParts), _toConsumableArray(parts)).join(fieldSeparator);\n }).map(function (part) {\n var cnf = getFieldRawConfig(config, part, fieldsKey, subfieldsKey);\n return cnf && cnf.label || last(part.split(fieldSeparator));\n }).filter(function (label) {\n return label != null;\n });\n return res;\n};\nexport var getFieldPartsConfigs = function getFieldPartsConfigs(field, config) {\n var parentField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n if (!field) return null;\n var parentFieldDef = parentField && getFieldRawConfig(config, parentField) || null;\n var fieldSeparator = config.settings.fieldSeparator;\n var parts = getFieldParts(field, config);\n var isDescendant = isFieldDescendantOfField(field, parentField, config);\n var parentParts = !isDescendant ? [] : getFieldParts(parentField, config);\n return parts.slice(parentParts.length).map(function (_curr, ind, arr) {\n return arr.slice(0, ind + 1);\n }).map(function (parts) {\n return {\n part: [].concat(_toConsumableArray(parentParts), _toConsumableArray(parts)).join(fieldSeparator),\n key: parts[parts.length - 1]\n };\n }).map(function (_ref) {\n var part = _ref.part,\n key = _ref.key;\n var cnf = getFieldRawConfig(config, part);\n return {\n key: key,\n cnf: cnf\n };\n }).map(function (_ref2, ind, arr) {\n var key = _ref2.key,\n cnf = _ref2.cnf;\n var parentCnf = ind > 0 ? arr[ind - 1].cnf : parentFieldDef;\n return [key, cnf, parentCnf];\n });\n};\nexport var getValueLabel = function getValueLabel(config, field, operator, delta) {\n var valueSrc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var isSpecialRange = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n var isFuncArg = field && _typeof(field) == \"object\" && !!field.func && !!field.arg;\n var showLabels = config.settings.showLabels;\n var fieldConfig = getFieldConfig(config, field);\n var fieldWidgetConfig = getFieldWidgetConfig(config, field, operator, null, valueSrc) || {};\n var mergedOpConfig = getOperatorConfig(config, operator, field) || {};\n var cardinality = isSpecialRange ? 1 : mergedOpConfig.cardinality;\n var ret = null;\n if (cardinality > 1) {\n var valueLabels = fieldWidgetConfig.valueLabels || mergedOpConfig.valueLabels;\n if (valueLabels) ret = valueLabels[delta];\n if (ret && _typeof(ret) != \"object\") {\n ret = {\n label: ret,\n placeholder: ret\n };\n }\n if (!ret) {\n ret = {\n label: config.settings.valueLabel + \" \" + (delta + 1),\n placeholder: config.settings.valuePlaceholder + \" \" + (delta + 1)\n };\n }\n } else {\n var label = fieldWidgetConfig.valueLabel;\n var placeholder = fieldWidgetConfig.valuePlaceholder;\n if (isFuncArg) {\n if (!label) label = fieldConfig.label || field.arg;\n if (!placeholder && !showLabels) placeholder = fieldConfig.label || field.arg;\n }\n ret = {\n label: label || config.settings.valueLabel,\n placeholder: placeholder || config.settings.valuePlaceholder\n };\n }\n return ret;\n};\nfunction _getWidgetsAndSrcsForFieldOp(config, field) {\n var operator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var valueSrc = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var widgets = [];\n var valueSrcs = [];\n if (!field) return {\n widgets: widgets,\n valueSrcs: valueSrcs\n };\n var isFuncArg = _typeof(field) == \"object\" && (!!field.func && !!field.arg || field._isFuncArg);\n var fieldConfig = getFieldConfig(config, field);\n var opConfig = operator ? config.operators[operator] : null;\n if (fieldConfig !== null && fieldConfig !== void 0 && fieldConfig.widgets) {\n var _loop2 = function _loop2() {\n var widgetConfig = fieldConfig.widgets[widget];\n if (!config.widgets[widget]) {\n return \"continue\";\n }\n var widgetValueSrc = config.widgets[widget].valueSrc || \"value\";\n var canAdd = true;\n if (widget == \"field\") {\n canAdd = canAdd && filterValueSourcesForField(config, [\"field\"], fieldConfig).length > 0;\n }\n if (widget == \"func\") {\n canAdd = canAdd && filterValueSourcesForField(config, [\"func\"], fieldConfig).length > 0;\n }\n // If can't check operators, don't add\n // Func args don't have operators\n if (valueSrc == \"value\" && !widgetConfig.operators && !isFuncArg && field != \"!case_value\") canAdd = false;\n if (widgetConfig.operators && operator) canAdd = canAdd && widgetConfig.operators.indexOf(operator) != -1;\n if (valueSrc && valueSrc != widgetValueSrc && valueSrc != \"const\") canAdd = false;\n if (opConfig && opConfig.cardinality == 0 && widgetValueSrc != \"value\") canAdd = false;\n if (canAdd) {\n var _fieldConfig$valueSou, _opConfig$valueSource;\n widgets.push(widget);\n var canAddValueSrc = ((_fieldConfig$valueSou = fieldConfig.valueSources) === null || _fieldConfig$valueSou === void 0 ? void 0 : _fieldConfig$valueSou.indexOf(widgetValueSrc)) != -1;\n if ((opConfig === null || opConfig === void 0 || (_opConfig$valueSource = opConfig.valueSources) === null || _opConfig$valueSource === void 0 ? void 0 : _opConfig$valueSource.indexOf(widgetValueSrc)) == -1) canAddValueSrc = false;\n if (canAddValueSrc && !valueSrcs.find(function (v) {\n return v == widgetValueSrc;\n })) valueSrcs.push(widgetValueSrc);\n }\n };\n for (var widget in fieldConfig.widgets) {\n var _ret2 = _loop2();\n if (_ret2 === \"continue\") continue;\n }\n }\n var widgetWeight = function widgetWeight(w) {\n var wg = 0;\n if (fieldConfig.preferWidgets) {\n if (fieldConfig.preferWidgets.includes(w)) wg += 10 - fieldConfig.preferWidgets.indexOf(w);\n } else if (w == fieldConfig.mainWidget) {\n wg += 100;\n }\n if (w == \"field\") {\n wg -= 1;\n }\n if (w == \"func\") {\n wg -= 2;\n }\n return wg;\n };\n widgets.sort(function (w1, w2) {\n return widgetWeight(w2) - widgetWeight(w1);\n });\n return {\n widgets: widgets,\n valueSrcs: valueSrcs\n };\n}\nexport var getWidgetsForFieldOp = function getWidgetsForFieldOp(config, field, operator) {\n var valueSrc = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var _getWidgetsAndSrcsFor = _getWidgetsAndSrcsForFieldOp(config, field, operator, valueSrc),\n widgets = _getWidgetsAndSrcsFor.widgets;\n return widgets;\n};\nexport var filterValueSourcesForField = function filterValueSourcesForField(config, valueSrcs, fieldDefinition) {\n var _fieldDefinition$type;\n if (!fieldDefinition) return valueSrcs;\n var fieldType = (_fieldDefinition$type = fieldDefinition.type) !== null && _fieldDefinition$type !== void 0 ? _fieldDefinition$type : fieldDefinition.returnType;\n if (!valueSrcs) valueSrcs = Object.keys(config.settings.valueSourcesInfo);\n return valueSrcs.filter(function (vs) {\n var canAdd = true;\n if (vs == \"field\") {\n if (config.__fieldsCntByType) {\n // tip: LHS field can be used as arg in RHS function\n var minCnt = fieldDefinition._isFuncArg ? 0 : 1;\n canAdd = canAdd && config.__fieldsCntByType[fieldType] > minCnt;\n }\n }\n if (vs == \"func\") {\n if (config.__funcsCntByType) canAdd = canAdd && !!config.__funcsCntByType[fieldType];\n if (fieldDefinition.funcs) canAdd = canAdd && fieldDefinition.funcs.length > 0;\n }\n return canAdd;\n });\n};\nexport var getValueSourcesForFieldOp = function getValueSourcesForFieldOp(config, field, operator) {\n var fieldDefinition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var _getWidgetsAndSrcsFor2 = _getWidgetsAndSrcsForFieldOp(config, field, operator, null),\n valueSrcs = _getWidgetsAndSrcsFor2.valueSrcs;\n var filteredValueSrcs = filterValueSourcesForField(config, valueSrcs, fieldDefinition);\n return filteredValueSrcs;\n};\nexport var getWidgetForFieldOp = function getWidgetForFieldOp(config, field, operator) {\n var valueSrc = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var _getWidgetsAndSrcsFor3 = _getWidgetsAndSrcsForFieldOp(config, field, operator, valueSrc),\n widgets = _getWidgetsAndSrcsFor3.widgets;\n var widget = null;\n if (widgets.length) widget = widgets[0];\n return widget;\n};\n\n// can use alias (fieldName)\n// even if `parentField` is provided, `field` is still a full path\nexport var formatFieldName = function formatFieldName(field, config, meta) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n if (!field) return;\n var fieldDef = getFieldConfig(config, field) || {};\n var fieldSeparator = config.settings.fieldSeparator;\n var fieldParts = getFieldParts(field, config);\n var fieldName = Array.isArray(field) ? field.join(fieldSeparator) : field;\n if (options !== null && options !== void 0 && options.useTableName && fieldDef.tableName) {\n // legacy\n var fieldPartsCopy = _toConsumableArray(fieldParts);\n fieldPartsCopy[0] = fieldDef.tableName;\n fieldName = fieldPartsCopy.join(fieldSeparator);\n }\n if (fieldDef.fieldName) {\n fieldName = fieldDef.fieldName;\n }\n if (parentField) {\n var parentFieldDef = getFieldConfig(config, parentField) || {};\n var parentFieldName = parentField;\n if (fieldName.indexOf(parentFieldName + fieldSeparator) == 0) {\n fieldName = fieldName.slice((parentFieldName + fieldSeparator).length);\n // fieldName = \"#this.\" + fieldName; // ? for spel\n } else {\n if (fieldDef.fieldName) {\n // ignore\n } else {\n meta.errors.push(\"Can't cut group \".concat(parentFieldName, \" from field \").concat(fieldName));\n }\n }\n }\n return fieldName;\n};\nexport var isEmptyItem = function isEmptyItem(item, config) {\n var liteCheck = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var type = item.get(\"type\");\n var mode = item.getIn([\"properties\", \"mode\"]);\n if (type == \"rule_group\" && mode == \"array\") {\n return isEmptyRuleGroupExt(item, config, liteCheck);\n } else if (type == \"group\" || type == \"rule_group\") {\n return isEmptyGroup(item, config, liteCheck);\n } else {\n return isEmptyRule(item, config, liteCheck);\n }\n};\nvar isEmptyRuleGroupExt = function isEmptyRuleGroupExt(item, config) {\n var liteCheck = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var children = item.get(\"children1\");\n var properties = item.get(\"properties\");\n return isEmptyRuleGroupExtPropertiesAndChildren(properties.toObject(), children, config, liteCheck);\n};\nexport var isEmptyRuleGroupExtPropertiesAndChildren = function isEmptyRuleGroupExtPropertiesAndChildren(properties, children, config) {\n var _config$operators$ope, _config$operators$ope2;\n var liteCheck = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var operator = properties.operator;\n var cardinality = (_config$operators$ope = (_config$operators$ope2 = config.operators[operator]) === null || _config$operators$ope2 === void 0 ? void 0 : _config$operators$ope2.cardinality) !== null && _config$operators$ope !== void 0 ? _config$operators$ope : 1;\n var filledParts = [!isEmptyRuleProperties(properties, config, false), cardinality > 0 ? true : !isEmptyGroupChildren(children, config, liteCheck)];\n var filledCnt = filledParts.filter(function (f) {\n return !!f;\n }).length;\n var isFilled = filledCnt == 2;\n return !isFilled;\n};\nvar isEmptyGroup = function isEmptyGroup(group, config) {\n var liteCheck = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var children = group.get(\"children1\");\n return isEmptyGroupChildren(children, config, liteCheck);\n};\nexport var isEmptyGroupChildren = function isEmptyGroupChildren(children, config) {\n var liteCheck = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n return !children || children.size == 0 || children.size > 0 && children.filter(function (ch) {\n return !isEmptyItem(ch, config, liteCheck);\n }).size == 0;\n};\nexport var isEmptyRuleProperties = function isEmptyRuleProperties(_ref3, config) {\n var _config$operators$ope3, _config$operators$ope4;\n var field = _ref3.field,\n fieldSrc = _ref3.fieldSrc,\n fieldType = _ref3.fieldType,\n operator = _ref3.operator,\n value = _ref3.value,\n valueSrc = _ref3.valueSrc,\n valueType = _ref3.valueType;\n var liteCheck = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var cardinality = (_config$operators$ope3 = (_config$operators$ope4 = config.operators[operator]) === null || _config$operators$ope4 === void 0 ? void 0 : _config$operators$ope4.cardinality) !== null && _config$operators$ope3 !== void 0 ? _config$operators$ope3 : 1;\n var filledParts = [liteCheck ? field !== null || fieldType != null : isCompletedValue(field, fieldSrc, config, liteCheck), !!operator, value.filter(function (val, delta) {\n var _valueSrc$get;\n return isCompletedValue(val, (valueSrc === null || valueSrc === void 0 || (_valueSrc$get = valueSrc.get) === null || _valueSrc$get === void 0 ? void 0 : _valueSrc$get.call(valueSrc, delta)) || (valueSrc === null || valueSrc === void 0 ? void 0 : valueSrc[delta]), config, liteCheck);\n }).size >= cardinality];\n var filledCnt = filledParts.filter(function (f) {\n return !!f;\n }).length;\n var isFilled = filledCnt == 3;\n return !isFilled;\n};\nvar isEmptyRule = function isEmptyRule(rule, config) {\n var liteCheck = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var properties = rule.get(\"properties\");\n return isEmptyRuleProperties(properties.toObject(), config, liteCheck);\n};\nexport var isCompletedValue = function isCompletedValue(value, valueSrc, config) {\n var liteCheck = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (!liteCheck && valueSrc == \"func\" && value) {\n var funcKey = value.get(\"func\");\n var funcConfig = getFuncConfig(config, funcKey);\n if (funcConfig) {\n var args = value.get(\"args\");\n for (var argKey in funcConfig.args) {\n var argConfig = funcConfig.args[argKey];\n var argVal = args ? args.get(argKey) : undefined;\n // const argDef = getFieldConfig(config, argConfig);\n var argValue = argVal ? argVal.get(\"value\") : undefined;\n var argValueSrc = argVal ? argVal.get(\"valueSrc\") : undefined;\n if (argValue == undefined && (argConfig === null || argConfig === void 0 ? void 0 : argConfig.defaultValue) === undefined && !(argConfig !== null && argConfig !== void 0 && argConfig.isOptional)) {\n // arg is not completed\n return false;\n }\n if (argValue != undefined) {\n if (!isCompletedValue(argValue, argValueSrc, config, liteCheck)) {\n // arg is complex and is not completed\n return false;\n }\n }\n }\n // all args are completed\n return true;\n }\n }\n return value != undefined;\n};\n\n/**\n * @param {*} value\n * @param {string} valueSrc - 'value' | 'field' | 'func'\n * @param {object} config\n * @return {* | undefined} - undefined if func value is not complete (missing required arg vals); can return completed value != value\n */\nexport var completeValue = function completeValue(value, valueSrc, config) {\n if (valueSrc == \"func\") return completeFuncValue(value, config);else return value;\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport JL from \"json-logic-js\";\nimport moment from \"moment\";\nexport function applyJsonLogic(logic, data) {\n return JL.apply(logic, data);\n}\nfunction addJsonLogicOperation(name, op) {\n return JL.add_operation(name, op);\n}\nexport var customJsonLogicOperations = {\n CALL: function CALL(fn, ctx) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return fn.call.apply(fn, [ctx].concat(args));\n },\n JSX: function JSX(type, props) {\n return {\n type: type,\n props: props\n };\n },\n mergeObjects: function mergeObjects(obj1, obj2) {\n return _objectSpread(_objectSpread({}, obj1), obj2);\n },\n fromEntries: function fromEntries(entries) {\n return Object.fromEntries(entries);\n },\n strlen: function strlen(str) {\n return (str === null || str === void 0 ? void 0 : str.length) || 0;\n },\n regexTest: function regexTest(str, pattern, flags) {\n return (str === null || str === void 0 ? void 0 : str.match(new RegExp(pattern, flags))) != null;\n },\n now: function now() {\n return new Date();\n },\n date_add: function date_add(date, val, dim) {\n return moment(date).add(val, dim).toDate();\n },\n toLowerCase: function toLowerCase(str) {\n return str.toLowerCase();\n },\n toUpperCase: function toUpperCase(str) {\n return str.toUpperCase();\n }\n};\nexport function addRequiredJsonLogicOperations() {\n for (var k in customJsonLogicOperations) {\n addJsonLogicOperation(k, customJsonLogicOperations[k]);\n }\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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; } } }; }\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); }\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; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport merge from \"lodash/merge\";\nimport pick from \"lodash/pick\";\nimport { isJsonLogic, isJSX, isDirtyJSX, cleanJSX, shallowEqual } from \"./stuff\";\nimport clone from \"clone\";\nimport JL from \"json-logic-js\";\nimport { addRequiredJsonLogicOperations, applyJsonLogic } from \"./jsonLogic\";\nimport { BasicFuncs } from \"..\";\nimport { getFieldRawConfig } from \"./configUtils\";\n\n// Add new operations for JsonLogic\naddRequiredJsonLogicOperations();\nexport { isJSX, isDirtyJSX, cleanJSX, applyJsonLogic };\nfunction applyJsonLogicWithPath(logic, data, path) {\n var ret;\n try {\n ret = JL.apply(logic, data);\n } catch (e) {\n e.message = \"\".concat(path.join(\".\"), \" :: \").concat(e.message);\n throw e;\n }\n return ret;\n}\nfunction callContextFn(_this, fn, args, path) {\n var ret;\n try {\n ret = fn.call.apply(fn, [_this].concat(_toConsumableArray(args)));\n } catch (e) {\n e.message = \"\".concat(path.join(\".\"), \" :: \").concat(e.message);\n throw e;\n }\n return ret;\n}\nexport var configKeys = [\"conjunctions\", \"fields\", \"types\", \"operators\", \"widgets\", \"settings\", \"funcs\", \"ctx\"];\n\n// type: \n// x - iterate (with nesting `subfields`)\n// \"r\" - RenderedReactElement\n// Will be compiled with renderReactElement() into React element rendered with `React.createElement` (`ctx.RCE`)\n// \"rf\" - JsonLogicFunction/string to render React\n// JL data is { props, ctx }\n// Should return {type, props} or string, where type or string - React component\n// Can use { JSX: [\"SomeComponent\", {var: \"props\"}] } or just return \"SomeComponent\"\n// Returned component will be searched in ctx.components/ctx.W/ctx.O, see getReactComponentFromCtx()\n// Will be compiled with compileJsonLogicReact() into function with args (props, ctx) that will return renderReactElement()\n// \"f\" - JsonLogicFunction/string\n// JL data is { args, ctx } plus named args defined in `args` inside `compileMeta`\n// Can use { CALL: [ {var: \"ctx.someFunc\"}, null, {var: \"args[0]\" }] } \n// If string is passed, it's a path to function in ctx (with dot notation)\n// Will be compiled with compileJsonLogic() into function with any args and `this` should be `ctx`\n\nvar compileMetaFieldSettings = {\n asyncFetch: {\n type: \"f\",\n args: [\"search\", \"offset\"]\n },\n labelYes: {\n type: \"r\"\n },\n labelNo: {\n type: \"r\"\n },\n marks: {\n type: \"r\",\n isArr: true\n },\n validateValue: {\n type: \"f\",\n args: [\"val\", \"fieldSettings\", \"op\", \"opDef\", \"rightFieldDef\"]\n }\n};\nvar compileMetaWidget = _objectSpread(_objectSpread({}, compileMetaFieldSettings), {}, {\n factory: {\n type: \"rf\"\n },\n formatValue: {\n type: \"f\",\n args: [\"val\", \"fieldDef\", \"wgtDef\", \"isForDisplay\", \"op\", \"opDef\", \"rightFieldDef\"]\n },\n sqlFormatValue: {\n type: \"f\",\n args: [\"val\", \"fieldDef\", \"wgtDef\", \"op\", \"opDef\", \"rightFieldDef\"]\n },\n spelFormatValue: {\n type: \"f\",\n args: [\"val\", \"fieldDef\", \"wgtDef\", \"op\", \"opDef\", \"rightFieldDef\"]\n },\n spelImportValue: {\n type: \"f\",\n args: [\"val\", \"wgtDef\", \"args\"]\n },\n mongoFormatValue: {\n type: \"f\",\n args: [\"val\", \"fieldDef\", \"wgtDef\", \"op\", \"opDef\"]\n },\n elasticSearchFormatValue: {\n type: \"f\",\n args: [\"queryType\", \"val\", \"op\", \"field\", \"config\"]\n },\n jsonLogic: {\n type: \"f\",\n args: [\"val\", \"fieldDef\", \"wgtDef\", \"op\", \"opDef\"]\n },\n validateValue: {\n type: \"f\",\n args: [\"val\", \"fieldSettings\", \"op\", \"opDef\", \"rightFieldDef\"]\n },\n // obsolete\n toJS: {\n type: \"f\",\n args: [\"val\"]\n }\n});\nvar compileMetaOperator = {\n options: {\n // proximity\n factory: {\n type: \"rf\"\n }\n },\n formatOp: {\n type: \"f\",\n args: [\"field\", \"op\", \"vals\", \"valueSrc\", \"valueType\", \"opDef\", \"operatorOptions\", \"isForDisplay\", \"fieldDef\"]\n },\n mongoFormatOp: {\n type: \"f\",\n args: [\"field\", \"op\", \"vals\", \"useExpr\", \"valueSrc\", \"valueType\", \"opDef\", \"operatorOptions\", \"fieldDef\"]\n },\n sqlFormatOp: {\n type: \"f\",\n args: [\"field\", \"op\", \"vals\", \"valueSrc\", \"valueType\", \"opDef\", \"operatorOptions\", \"fieldDef\"]\n },\n spelFormatOp: {\n type: \"f\",\n args: [\"field\", \"op\", \"vals\", \"valueSrc\", \"valueType\", \"opDef\", \"operatorOptions\", \"fieldDef\"]\n },\n jsonLogic: {\n type: \"f\",\n ignore: \"string\",\n args: [\"field\", \"op\", \"vals\", \"opDef\", \"operatorOptions\", \"fieldDef\"]\n },\n elasticSearchQueryType: {\n type: \"f\",\n ignore: \"string\",\n args: [\"valueType\"]\n },\n textSeparators: {\n type: \"r\",\n isArr: true\n }\n};\nvar compileMetaConjunction = {\n formatConj: {\n type: \"f\",\n args: [\"children\", \"conj\", \"not\", \"isForDisplay\"]\n },\n sqlFormatConj: {\n type: \"f\",\n args: [\"children\", \"conj\", \"not\"]\n },\n spelFormatConj: {\n type: \"f\",\n args: [\"children\", \"conj\", \"not\", \"omitBrackets\"]\n }\n};\nvar compileMetaWidgetForType = {\n widgetProps: compileMetaWidget,\n opProps: compileMetaOperator\n};\nvar compileMetaFunc = {\n renderBrackets: {\n type: \"r\",\n isArr: true\n },\n renderSeps: {\n type: \"r\",\n isArr: true\n },\n jsonLogic: {\n type: \"f\",\n ignore: \"string\",\n args: [\"formattedArgs\"]\n },\n jsonLogicImport: {\n type: \"f\",\n args: [\"val\"]\n },\n spelImport: {\n type: \"f\",\n args: [\"spel\"]\n },\n formatFunc: {\n type: \"f\",\n args: [\"formattedArgs\", \"isForDisplay\"]\n },\n sqlFormatFunc: {\n type: \"f\",\n args: [\"formattedArgs\"]\n },\n mongoFormatFunc: {\n type: \"f\",\n args: [\"formattedArgs\"]\n },\n spelFormatFunc: {\n type: \"f\",\n args: [\"formattedArgs\"]\n }\n};\nvar compileMetaSettings = {\n locale: {\n mui: {\n type: \"f\",\n args: [],\n invokeWith: [],\n ignore: \"jl\"\n }\n },\n canCompareFieldWithField: {\n type: \"f\",\n args: [\"leftField\", \"leftFieldConfig\", \"rightField\", \"rightFieldConfig\", \"op\"]\n },\n formatReverse: {\n type: \"f\",\n args: [\"q\", \"op\", \"reversedOp\", \"operatorDefinition\", \"revOperatorDefinition\", \"isForDisplay\"]\n },\n sqlFormatReverse: {\n type: \"f\",\n args: [\"q\"]\n },\n spelFormatReverse: {\n type: \"f\",\n args: [\"q\"]\n },\n formatField: {\n type: \"f\",\n args: [\"field\", \"parts\", \"label2\", \"fieldDefinition\", \"config\", \"isForDisplay\"]\n },\n formatSpelField: {\n type: \"f\",\n args: [\"field\", \"parentField\", \"parts\", \"partsExt\", \"fieldDefinition\", \"config\"]\n },\n formatAggr: {\n type: \"f\",\n args: [\"whereStr\", \"aggrField\", \"operator\", \"value\", \"valueSrc\", \"valueType\", \"opDef\", \"operatorOptions\", \"isForDisplay\", \"aggrFieldDef\"]\n },\n normalizeListValues: {\n type: \"f\",\n args: [\"listValues\", \"type\", \"fieldSettings\"]\n },\n renderConfirm: {\n type: \"f\",\n args: [\"props\"]\n },\n useConfirm: {\n type: \"f\",\n args: []\n },\n renderField: {\n type: \"rf\"\n },\n renderOperator: {\n type: \"rf\"\n },\n renderFunc: {\n type: \"rf\"\n },\n renderConjs: {\n type: \"rf\"\n },\n renderButton: {\n type: \"rf\"\n },\n renderIcon: {\n type: \"rf\"\n },\n renderButtonGroup: {\n type: \"rf\"\n },\n renderValueSources: {\n type: \"rf\"\n },\n renderFieldSources: {\n type: \"rf\"\n },\n renderProvider: {\n type: \"rf\"\n },\n renderSwitch: {\n type: \"rf\"\n },\n renderSwitchPrefix: {\n type: \"r\"\n },\n renderItem: {\n type: \"rf\"\n },\n renderBeforeWidget: {\n type: \"rf\"\n },\n renderAfterWidget: {\n type: \"rf\"\n },\n renderBeforeActions: {\n type: \"rf\"\n },\n renderAfterActions: {\n type: \"rf\"\n },\n renderRuleError: {\n type: \"rf\"\n }\n};\nvar compileMeta = {\n fields: {\n x: {\n fieldSettings: compileMetaFieldSettings,\n widgets: {\n x: compileMetaWidgetForType\n },\n mainWidgetProps: compileMetaWidget\n }\n },\n widgets: {\n x: compileMetaWidget\n },\n conjunctions: {\n x: compileMetaConjunction\n },\n operators: {\n x: compileMetaOperator\n },\n types: {\n x: {\n widgets: {\n x: compileMetaWidgetForType\n }\n }\n },\n funcs: {\n x: compileMetaFunc\n },\n settings: compileMetaSettings\n};\nvar isObject = function isObject(v) {\n return _typeof(v) == \"object\" && v !== null && !Array.isArray(v);\n};\n\n/////////////\n\nexport var compressConfig = function compressConfig(config, baseConfig) {\n if (config.__fieldNames) {\n throw new Error(\"Don't apply `compressConfig()` to extended config\");\n }\n var zipConfig = pick(config, configKeys);\n delete zipConfig.ctx;\n var _clean = function _clean(target, base, path, meta) {\n if (isObject(target)) {\n if (isDirtyJSX(target)) {\n target = cleanJSX(target);\n }\n if (path[0] === \"funcs\" && !base) {\n var funcKey = path[path.length - 1];\n // todo: if there will be change in `BasicFuncs` when funcs can be nested, need to chnage code to find `base`\n base = getFieldRawConfig({\n funcs: meta.BasicFuncs\n }, funcKey, \"funcs\", \"subfields\") || undefined;\n if (base) {\n target[\"$$key\"] = funcKey;\n }\n }\n if (base !== undefined && isObject(base)) {\n for (var k in base) {\n if (Object.prototype.hasOwnProperty.call(base, k)) {\n if (!Object.keys(target).includes(k) || target[k] === undefined && base[k] !== undefined) {\n // deleted in target\n target[k] = \"$$deleted\";\n } else {\n target[k] = _clean(target[k], base[k], [].concat(_toConsumableArray(path), [k]), meta);\n if (target[k] === undefined) {\n delete target[k];\n }\n }\n }\n }\n }\n for (var _k in target) {\n if (Object.prototype.hasOwnProperty.call(target, _k)) {\n if (!base || !Object.keys(base).includes(_k)) {\n var _base;\n // new in target\n target[_k] = _clean(target[_k], (_base = base) === null || _base === void 0 ? void 0 : _base[_k], [].concat(_toConsumableArray(path), [_k]), meta);\n }\n if (target[_k] === undefined) {\n delete target[_k];\n }\n }\n }\n if (Object.keys(target).length === 0) {\n target = undefined;\n }\n } else if (Array.isArray(target)) {\n // don't deep compare arrays, but allow clean JSX inside array\n target.forEach(function (val, ind) {\n target[ind] = _clean(target[ind], undefined, [].concat(_toConsumableArray(path), [ind]), meta);\n });\n }\n if (base !== undefined && shallowEqual(target, base, true)) {\n return undefined;\n }\n if (typeof target === \"function\") {\n throw new Error(\"compressConfig: function at \".concat(path.join(\".\"), \" should be converted to JsonLogic\"));\n }\n return target;\n };\n for (var _i = 0, _configKeys = configKeys; _i < _configKeys.length; _i++) {\n var rootKey = _configKeys[_i];\n if (rootKey === \"ctx\") {\n // ignore\n } else if (rootKey === \"fields\") {\n // just copy\n zipConfig[rootKey] = clone(zipConfig[rootKey]);\n _clean(zipConfig[rootKey], {}, [rootKey]);\n } else if (rootKey === \"funcs\") {\n // leave only diff for every used func\n zipConfig[rootKey] = clone(zipConfig[rootKey] || {});\n for (var k in zipConfig[rootKey]) {\n _clean(zipConfig[rootKey][k], null, [rootKey, k], {\n BasicFuncs: BasicFuncs\n });\n }\n } else {\n // leave only diff\n zipConfig[rootKey] = clone(zipConfig[rootKey]);\n _clean(zipConfig[rootKey], baseConfig[rootKey], [rootKey]);\n }\n }\n return zipConfig;\n};\nexport var decompressConfig = function decompressConfig(zipConfig, baseConfig, ctx) {\n if (!zipConfig.settings.useConfigCompress) {\n throw new Error(\"Please enable `useConfigCompress` in config settings to use decompressConfig()\");\n }\n var unzipConfig = {};\n var _mergeDeep = function _mergeDeep(target, mixin, path) {\n if (isObject(mixin)) {\n if (!isObject(target)) {\n target = {};\n }\n for (var k in mixin) {\n if (Object.prototype.hasOwnProperty.call(mixin, k)) {\n if (mixin[k] === \"$$deleted\") {\n delete target[k];\n } else {\n target[k] = _mergeDeep(target[k], mixin[k], [].concat(_toConsumableArray(path), [k]));\n }\n }\n }\n } else if (Array.isArray(mixin)) {\n // don't merge arrays, just replace\n target = clone(mixin);\n } else {\n target = mixin;\n }\n return target;\n };\n var _resolveAndMergeDeep = function _resolveAndMergeDeep(target, path, meta) {\n // try to resolve by $$key and merge\n var resolved = false;\n if (isObject(target) && Object.prototype.hasOwnProperty.call(target, \"$$key\") && target[\"$$key\"]) {\n var func = getFieldRawConfig({\n funcs: meta.BasicFuncs\n }, target[\"$$key\"], \"funcs\", \"subfields\");\n if (func) {\n // deep merge func <- zip\n delete target[\"$$key\"];\n target = _mergeDeep(clone(func), target, path);\n resolved = true;\n } else {\n throw new Error(\"decompressConfig: basic function not found by key \".concat(target[\"$$key\"], \" at \").concat(path.join(\".\")));\n }\n }\n if (!resolved) {\n if (isObject(target)) {\n // loop through object to find refs ($$key)\n for (var k in target) {\n if (Object.prototype.hasOwnProperty.call(target, k)) {\n target[k] = _resolveAndMergeDeep(target[k], [].concat(_toConsumableArray(path), [k]), meta);\n }\n }\n } else if (Array.isArray(target)) {\n // also loop through array to find refs ($$key)\n var _iterator = _createForOfIteratorHelper(target),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _k2 = _step.value;\n target[_k2] = _resolveAndMergeDeep(target[_k2], [].concat(_toConsumableArray(path), [_k2]), meta);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }\n return target;\n };\n for (var _i2 = 0, _configKeys2 = configKeys; _i2 < _configKeys2.length; _i2++) {\n var rootKey = _configKeys2[_i2];\n if (rootKey === \"ctx\") {\n // simple deep merge\n unzipConfig[rootKey] = merge({}, baseConfig.ctx || {}, ctx || {});\n } else if (rootKey === \"funcs\") {\n // use $$key to pick funcs from BasicFuncs\n unzipConfig[rootKey] = clone(zipConfig[rootKey] || {});\n _resolveAndMergeDeep(unzipConfig[rootKey], [rootKey], {\n BasicFuncs: BasicFuncs\n });\n } else if (rootKey === \"fields\") {\n // just copy\n unzipConfig[rootKey] = clone(zipConfig[rootKey] || {});\n } else {\n // deep merge base <- zip\n unzipConfig[rootKey] = clone(baseConfig[rootKey] || {});\n _mergeDeep(unzipConfig[rootKey], zipConfig[rootKey] || {}, [rootKey]);\n }\n }\n return unzipConfig;\n};\n\n/////////////\n\nexport var compileConfig = function compileConfig(config) {\n if (config.__compliled) {\n return config;\n }\n config = clone(config);\n var opts = {\n ctx: config.ctx\n };\n var logs = [];\n _compileConfigParts(config, config, opts, compileMeta, logs);\n //console.log(logs.join(\"\\n\"));\n\n Object.defineProperty(config, \"__compliled\", {\n enumerable: false,\n writable: false,\n value: true\n });\n return config;\n};\nfunction _compileConfigParts(config, subconfig, opts, meta, logs) {\n var path = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];\n if (!subconfig) return;\n var isRoot = !path.length;\n for (var k in meta) {\n var submeta = meta[k];\n var newPath = k === \"x\" ? path : [].concat(_toConsumableArray(path), [k]);\n // if (isRoot) {\n // //logs.push(`Cloned ${newPath.join(\".\")}`);\n // config[k] = clone(config[k]);\n // }\n if (submeta.type === \"r\") {\n var targetObj = subconfig;\n var val = targetObj[k];\n if (submeta.isArr) {\n for (var ind in val) {\n var newVal = renderReactElement(val[ind], opts, [].concat(_toConsumableArray(newPath), [ind]));\n if (newVal !== val[ind]) {\n logs.push(\"Compiled \".concat(newPath.join(\".\"), \"[\").concat(ind, \"]\"));\n val[ind] = newVal;\n }\n }\n } else {\n var _newVal = renderReactElement(val, opts, newPath, undefined);\n if (_newVal !== val) {\n logs.push(\"Compiled R \".concat(newPath.join(\".\")));\n targetObj[k] = _newVal;\n }\n }\n } else if (submeta.type === \"rf\") {\n var _targetObj = subconfig;\n var _val = _targetObj[k];\n var _newVal2 = compileJsonLogicReact(_val, opts, newPath, submeta.ignore);\n if (_newVal2 !== _val) {\n logs.push(\"Compiled JL-RF \".concat(newPath.join(\".\")));\n _targetObj[k] = _newVal2;\n }\n } else if (submeta.type === \"f\") {\n var _targetObj2 = subconfig;\n var _val2 = _targetObj2[k];\n var _newVal3 = compileJsonLogic(_val2, opts, newPath, submeta.args, submeta.ignore);\n if (submeta.invokeWith && _newVal3 && typeof _newVal3 === \"function\") {\n var _newVal4;\n _newVal3 = (_newVal4 = _newVal3).call.apply(_newVal4, [null].concat(_toConsumableArray(submeta.invokeWith)));\n }\n if (_newVal3 !== _val2) {\n logs.push(\"Compiled JL-F \".concat(newPath.join(\".\")));\n _targetObj2[k] = _newVal3;\n }\n } else if (k === \"x\") {\n for (var field in subconfig) {\n newPath = [].concat(_toConsumableArray(path), [field]);\n var def = subconfig[field];\n _compileConfigParts(config, def, opts, submeta, logs, newPath);\n if (def.subfields) {\n // tip: need to pass `meta`, not `submeta`\n _compileConfigParts(config, def.subfields, opts, meta, logs, newPath);\n }\n }\n } else {\n var _def = subconfig[k];\n _compileConfigParts(config, _def, opts, submeta, logs, newPath);\n }\n }\n}\nfunction compileJsonLogicReact(jl, opts, path) {\n var ignore = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;\n if (isJsonLogic(jl)) {\n return function (props, ctx) {\n ctx = ctx || (opts === null || opts === void 0 ? void 0 : opts.ctx); // can use context compile-time if not passed at runtime\n var data = {\n props: props,\n ctx: ctx\n };\n var re = applyJsonLogicWithPath(jl, data, path);\n if (typeof re === \"string\") {\n re = {\n type: re,\n props: props\n };\n }\n var ret = renderReactElement(re, {\n ctx: ctx\n }, path);\n return ret;\n };\n } else if (typeof jl === \"string\") {\n return function (props, ctx) {\n ctx = ctx || (opts === null || opts === void 0 ? void 0 : opts.ctx); // can use context compile-time if not passed at runtime\n var fn = jl.split(\".\").reduce(function (o, k) {\n return o === null || o === void 0 ? void 0 : o[k];\n }, ctx);\n if (fn) {\n return callContextFn(this, fn, [props, ctx], path);\n } else {\n var re = {\n type: jl,\n props: props\n };\n var ret = renderReactElement(re, {\n ctx: ctx\n }, path);\n return ret;\n }\n };\n }\n return jl;\n}\nfunction compileJsonLogic(jl, opts, path, argNames) {\n var ignore = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : undefined;\n if (isJsonLogic(jl) && ignore !== \"jl\") {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var ctx = this || (opts === null || opts === void 0 ? void 0 : opts.ctx); // can use context compile-time if not passed at runtime\n var data = (argNames || []).reduce(function (acc, k, i) {\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, k, args[i]));\n }, {\n args: args,\n ctx: ctx\n });\n var ret = applyJsonLogicWithPath(jl, data, path);\n return ret;\n }.bind(opts === null || opts === void 0 ? void 0 : opts.ctx);\n } else if (typeof jl === \"string\" && ignore !== \"string\") {\n return function () {\n var ctx = this || (opts === null || opts === void 0 ? void 0 : opts.ctx); // can use context compile-time if not passed at runtime\n var fn = jl.split(\".\").reduce(function (o, k) {\n return o === null || o === void 0 ? void 0 : o[k];\n }, ctx);\n if (fn) {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return callContextFn(this, fn, args, path);\n } else {\n throw new Error(\"\".concat(path.join(\".\"), \" :: Function \").concat(jl, \" is not found in ctx\"));\n }\n }.bind(opts === null || opts === void 0 ? void 0 : opts.ctx);\n }\n return jl;\n}\nfunction getReactComponentFromCtx(name, ctx) {\n var _ctx$components;\n return (ctx === null || ctx === void 0 || (_ctx$components = ctx.components) === null || _ctx$components === void 0 ? void 0 : _ctx$components[name]) || ctx.W[name] || ctx.O[name];\n}\nfunction renderReactElement(jsx, opts, path) {\n var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;\n if (isJSX(jsx)) {\n var _props;\n var type = jsx.type,\n props = jsx.props;\n if (typeof type !== \"string\") {\n throw new Error(\"renderReactElement for \".concat(path.join(\".\"), \": type should be string\"));\n }\n var Cmp = getReactComponentFromCtx(type, opts.ctx) || type.toLowerCase();\n var children;\n if (key !== undefined) {\n props = _objectSpread(_objectSpread({}, props), {}, {\n key: key\n });\n }\n if ((_props = props) !== null && _props !== void 0 && _props.children) {\n children = renderReactElement(props.children, opts, path);\n props = _objectSpread(_objectSpread({}, props), {}, {\n children: children\n });\n }\n var res = opts.ctx.RCE(Cmp, props);\n return res;\n } else if (jsx instanceof Array) {\n return jsx.map(function (el, i) {\n return renderReactElement(el, opts, path, \"\" + i);\n });\n }\n return jsx;\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\nvar _marked = /*#__PURE__*/_regeneratorRuntime.mark(iterateFuncs),\n _marked2 = /*#__PURE__*/_regeneratorRuntime.mark(iterateFields);\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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; } } }; }\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); }\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; }\nimport merge from \"lodash/merge\";\nimport pick from \"lodash/pick\";\nimport uuid from \"../utils/uuid\";\nimport mergeWith from \"lodash/mergeWith\";\nimport { settings as defaultSettings } from \"../config/default\";\nimport moment from \"moment\";\nimport { mergeArraysSmart, logger, widgetDefKeysToOmit, deepFreeze } from \"./stuff\";\nimport { getWidgetForFieldOp } from \"./ruleUtils\";\nimport clone from \"clone\";\nimport { compileConfig } from \"./configSerialize\";\nexport * from \"./configSerialize\";\n\n/////////////\n\nexport var extendConfig = function extendConfig(config, configId) {\n var canCompile = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n //operators, defaultOperator - merge\n //widgetProps (including valueLabel, valuePlaceholder, hideOperator, operatorInlineLabel) - concrete by widget\n\n if (config.__configId) {\n return config;\n }\n\n // Clone (and compile if need)\n if (canCompile && config.settings.useConfigCompress) {\n if (config.__compliled) {\n // already compiled\n config = clone(config);\n } else {\n // will be cloned and compiled\n config = compileConfig(config);\n }\n } else {\n config = clone(config);\n }\n config.settings = mergeWith({}, defaultSettings, config.settings, mergeCustomizerNoArrays);\n config.__fieldsCntByType = {};\n config.__funcsCntByType = {};\n config.__fieldNames = {};\n _extendTypesConfig(config.types, config);\n _extendFieldsConfig(config.fields, config);\n _extendFuncArgsConfig(config.funcs, config);\n var momentLocale = config.settings.locale.moment;\n if (momentLocale) {\n moment.locale(momentLocale);\n }\n Object.defineProperty(config, \"__configId\", {\n enumerable: false,\n writable: false,\n value: configId || uuid()\n });\n deepFreeze(config);\n return config;\n};\nfunction _extendTypesConfig(typesConfig, config) {\n for (var type in typesConfig) {\n var typeConfig = typesConfig[type];\n _extendTypeConfig(type, typeConfig, config);\n }\n}\nfunction _extendTypeConfig(type, typeConfig, config) {\n var operators = null,\n defaultOperator = null;\n typeConfig.mainWidget = typeConfig.mainWidget || Object.keys(typeConfig.widgets).filter(function (w) {\n return w != \"field\" && w != \"func\";\n })[0];\n for (var widget in typeConfig.widgets) {\n var typeWidgetConfig = typeConfig.widgets[widget];\n if (typeWidgetConfig.operators) {\n var typeWidgetOperators = typeWidgetConfig.operators;\n if (typeConfig.excludeOperators) {\n typeWidgetOperators = typeWidgetOperators.filter(function (op) {\n return !typeConfig.excludeOperators.includes(op);\n });\n }\n operators = mergeArraysSmart(operators, typeWidgetOperators);\n }\n if (typeWidgetConfig.defaultOperator) defaultOperator = typeWidgetConfig.defaultOperator;\n if (widget == typeConfig.mainWidget) {\n typeWidgetConfig = merge({}, {\n widgetProps: typeConfig.mainWidgetProps || {}\n }, typeWidgetConfig);\n }\n typeConfig.widgets[widget] = typeWidgetConfig;\n }\n if (!typeConfig.valueSources) typeConfig.valueSources = Object.keys(config.settings.valueSourcesInfo);\n var _iterator = _createForOfIteratorHelper(typeConfig.valueSources),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var valueSrc = _step.value;\n if (valueSrc != \"value\" && !typeConfig.widgets[valueSrc]) {\n typeConfig.widgets[valueSrc] = {};\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (!typeConfig.operators && operators) typeConfig.operators = Array.from(new Set(operators)); //unique\n if (!typeConfig.defaultOperator && defaultOperator) typeConfig.defaultOperator = defaultOperator;\n}\nfunction _extendFieldsConfig(subconfig, config) {\n var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n for (var field in subconfig) {\n _extendFieldConfig(subconfig[field], config, [].concat(_toConsumableArray(path), [field]));\n if (subconfig[field].subfields) {\n _extendFieldsConfig(subconfig[field].subfields, config, [].concat(_toConsumableArray(path), [field]));\n }\n }\n}\nfunction _extendFuncArgsConfig(subconfig, config) {\n var _config$settings;\n var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n if (!subconfig) return;\n var fieldSeparator = (config === null || config === void 0 || (_config$settings = config.settings) === null || _config$settings === void 0 ? void 0 : _config$settings.fieldSeparator) || \".\";\n for (var funcKey in subconfig) {\n var funcPath = [].concat(_toConsumableArray(path), [funcKey]).join(fieldSeparator);\n var funcDef = subconfig[funcKey];\n if (funcDef.returnType) {\n if (!config.__funcsCntByType[funcDef.returnType]) config.__funcsCntByType[funcDef.returnType] = 0;\n config.__funcsCntByType[funcDef.returnType]++;\n }\n for (var argKey in funcDef.args) {\n _extendFieldConfig(funcDef.args[argKey], config, null, true);\n }\n\n // isOptional can be only in the end\n if (funcDef.args) {\n var argKeys = Object.keys(funcDef.args);\n var tmpIsOptional = true;\n var _iterator2 = _createForOfIteratorHelper(argKeys.reverse()),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _argKey = _step2.value;\n var argDef = funcDef.args[_argKey];\n if (!tmpIsOptional && argDef.isOptional) {\n logger.info(\"Arg \".concat(_argKey, \" for func \").concat(funcPath, \" can't be optional\"));\n delete argDef.isOptional;\n }\n if (!argDef.isOptional) tmpIsOptional = false;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n if (funcDef.subfields) {\n _extendFuncArgsConfig(funcDef.subfields, config, [].concat(_toConsumableArray(path), [funcKey]));\n }\n }\n}\nfunction _extendFieldConfig(fieldConfig, config) {\n var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var isFuncArg = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var operators = null,\n defaultOperator = null;\n var typeConfig = config.types[fieldConfig.type];\n var excludeOperatorsForField = fieldConfig.excludeOperators || [];\n if (fieldConfig.type != \"!struct\" && fieldConfig.type != \"!group\") {\n var keysToPutInFieldSettings = [\"listValues\", \"treeValues\", \"allowCustomValues\", \"validateValue\"];\n if (!fieldConfig.fieldSettings) fieldConfig.fieldSettings = {};\n for (var _i = 0, _keysToPutInFieldSett = keysToPutInFieldSettings; _i < _keysToPutInFieldSett.length; _i++) {\n var k = _keysToPutInFieldSett[_i];\n if (fieldConfig[k]) {\n fieldConfig.fieldSettings[k] = fieldConfig[k];\n delete fieldConfig[k];\n }\n }\n\n // normalize listValues\n if (fieldConfig.fieldSettings.listValues) {\n if (config.settings.normalizeListValues) {\n fieldConfig.fieldSettings.listValues = config.settings.normalizeListValues.call(config.ctx, fieldConfig.fieldSettings.listValues, fieldConfig.type, fieldConfig.fieldSettings);\n }\n }\n // same for treeValues\n if (fieldConfig.fieldSettings.treeValues) {\n if (config.settings.normalizeListValues) {\n fieldConfig.fieldSettings.treeValues = config.settings.normalizeListValues.call(config.ctx, fieldConfig.fieldSettings.treeValues, fieldConfig.type, fieldConfig.fieldSettings);\n }\n }\n if (!typeConfig) {\n //console.warn(`No type config for ${fieldConfig.type}`);\n fieldConfig.disabled = true;\n return;\n }\n if (!isFuncArg) {\n if (!config.__fieldsCntByType[fieldConfig.type]) config.__fieldsCntByType[fieldConfig.type] = 0;\n config.__fieldsCntByType[fieldConfig.type]++;\n }\n if (!fieldConfig.widgets) fieldConfig.widgets = {};\n if (isFuncArg) fieldConfig._isFuncArg = true;\n fieldConfig.mainWidget = fieldConfig.mainWidget || typeConfig.mainWidget;\n fieldConfig.valueSources = fieldConfig.valueSources || typeConfig.valueSources;\n var excludeOperatorsForType = typeConfig.excludeOperators || [];\n var _loop = function _loop() {\n var fieldWidgetConfig = fieldConfig.widgets[widget] || {};\n var typeWidgetConfig = typeConfig.widgets[widget] || {};\n if (!isFuncArg) {\n //todo: why I've excluded isFuncArg ?\n var excludeOperators = [].concat(_toConsumableArray(excludeOperatorsForField), _toConsumableArray(excludeOperatorsForType));\n var shouldIncludeOperators = fieldConfig.preferWidgets && (widget == \"field\" || fieldConfig.preferWidgets.includes(widget)) || excludeOperators.length > 0;\n if (fieldWidgetConfig.operators) {\n var addOperators = fieldWidgetConfig.operators.filter(function (o) {\n return !excludeOperators.includes(o);\n });\n operators = [].concat(_toConsumableArray(operators || []), _toConsumableArray(addOperators));\n } else if (shouldIncludeOperators && typeWidgetConfig.operators) {\n var _addOperators = typeWidgetConfig.operators.filter(function (o) {\n return !excludeOperators.includes(o);\n });\n operators = [].concat(_toConsumableArray(operators || []), _toConsumableArray(_addOperators));\n }\n if (fieldWidgetConfig.defaultOperator) defaultOperator = fieldWidgetConfig.defaultOperator;\n }\n if (widget == fieldConfig.mainWidget) {\n fieldWidgetConfig = merge({}, {\n widgetProps: fieldConfig.mainWidgetProps || {}\n }, fieldWidgetConfig);\n }\n fieldConfig.widgets[widget] = fieldWidgetConfig;\n };\n for (var widget in typeConfig.widgets) {\n _loop();\n }\n if (!isFuncArg) {\n if (!fieldConfig.operators && operators) fieldConfig.operators = Array.from(new Set(operators));\n fieldConfig._origDefaultOperator = fieldConfig.defaultOperator;\n if (!fieldConfig.defaultOperator && defaultOperator) fieldConfig.defaultOperator = defaultOperator;\n }\n }\n var _computeFieldName = computeFieldName(config, path),\n fieldName = _computeFieldName.fieldName,\n inGroup = _computeFieldName.inGroup;\n if (fieldName) {\n fieldConfig.fieldName = fieldName;\n if (!config.__fieldNames[fieldName]) config.__fieldNames[fieldName] = [];\n config.__fieldNames[fieldName].push({\n fullPath: path,\n inGroup: inGroup\n });\n }\n}\n\n/////////////\n\nvar mergeCustomizerNoArrays = function mergeCustomizerNoArrays(objValue, srcValue, _key, _object, _source, _stack) {\n if (Array.isArray(objValue)) {\n return srcValue;\n }\n};\nexport function iterateFuncs(config) {\n return _regeneratorRuntime.wrap(function iterateFuncs$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.delegateYield(_iterateFields(config, config.funcs || {}, []), \"t0\", 1);\n case 1:\n case \"end\":\n return _context.stop();\n }\n }, _marked);\n}\nexport function iterateFields(config) {\n return _regeneratorRuntime.wrap(function iterateFields$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.delegateYield(_iterateFields(config, config.fields || {}, []), \"t0\", 1);\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }, _marked2);\n}\nfunction _iterateFields(config, subfields, path) {\n var subfieldsKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"subfields\";\n return /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_config$settings2) {\n var fieldSeparator, fieldKey, fieldConfig;\n return _regeneratorRuntime.wrap(function _callee$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n fieldSeparator = (config === null || config === void 0 || (_config$settings2 = config.settings) === null || _config$settings2 === void 0 ? void 0 : _config$settings2.fieldSeparator) || \".\";\n _context3.t0 = _regeneratorRuntime.keys(subfields);\n case 2:\n if ((_context3.t1 = _context3.t0()).done) {\n _context3.next = 13;\n break;\n }\n fieldKey = _context3.t1.value;\n fieldConfig = subfields[fieldKey];\n if (!fieldConfig[subfieldsKey]) {\n _context3.next = 9;\n break;\n }\n return _context3.delegateYield(_iterateFields(config, fieldConfig[subfieldsKey], [].concat(_toConsumableArray(path), [fieldKey]), subfieldsKey), \"t2\", 7);\n case 7:\n _context3.next = 11;\n break;\n case 9:\n _context3.next = 11;\n return [[].concat(_toConsumableArray(path), [fieldKey]).join(fieldSeparator), fieldConfig];\n case 11:\n _context3.next = 2;\n break;\n case 13:\n case \"end\":\n return _context3.stop();\n }\n }, _callee);\n })();\n}\nexport var getFieldRawConfig = function getFieldRawConfig(config, field) {\n var _config$settings3;\n var fieldsKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"fields\";\n var subfieldsKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"subfields\";\n if (!field) return null;\n if (field == \"!case_value\") {\n return {\n type: \"case_value\",\n mainWidget: \"case_value\",\n widgets: {\n \"case_value\": config.widgets[\"case_value\"]\n }\n };\n }\n var fieldSeparator = (config === null || config === void 0 || (_config$settings3 = config.settings) === null || _config$settings3 === void 0 ? void 0 : _config$settings3.fieldSeparator) || \".\";\n var parts = getFieldParts(field, config);\n var targetFields = config[fieldsKey];\n if (!targetFields) return null;\n var fields = targetFields;\n var fieldConfig = null;\n var path = [];\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n path.push(part);\n var pathKey = path.join(fieldSeparator);\n fieldConfig = fields[pathKey];\n if (i < parts.length - 1) {\n if (fieldConfig && fieldConfig[subfieldsKey]) {\n fields = fieldConfig[subfieldsKey];\n path = [];\n } else {\n fieldConfig = null;\n }\n }\n }\n return fieldConfig;\n};\nvar computeFieldName = function computeFieldName(config, path) {\n if (!path) return {};\n var fieldSeparator = config.settings.fieldSeparator;\n var _reduce = _toConsumableArray(path).reduce(function (_ref, f, i, arr) {\n var computedPath = _ref.computedPath,\n computed = _ref.computed,\n inGroup = _ref.inGroup;\n var fullPath = [].concat(_toConsumableArray(arr.slice(0, i)), [f]);\n var fConfig = getFieldRawConfig(config, fullPath);\n if ((fConfig === null || fConfig === void 0 ? void 0 : fConfig.type) === \"!group\" && i < arr.length - 1) {\n // don't include group in final field name\n inGroup = fullPath.join(fieldSeparator);\n computedPath = [];\n } else if (fConfig !== null && fConfig !== void 0 && fConfig.fieldName) {\n // tip: fieldName overrides path !\n computed = true;\n computedPath = [fConfig.fieldName];\n } else {\n computedPath = [].concat(_toConsumableArray(computedPath), [f]);\n }\n return {\n computedPath: computedPath,\n computed: computed,\n inGroup: inGroup\n };\n }, {\n computedPath: [],\n computed: false,\n inGroup: undefined\n }),\n computedPath = _reduce.computedPath,\n computed = _reduce.computed,\n inGroup = _reduce.inGroup;\n return computed ? {\n fieldName: computedPath.join(fieldSeparator),\n inGroup: inGroup\n } : {};\n};\n\n// if `field` is alias (fieldName), convert to original full path\nexport var normalizeField = function normalizeField(config, field) {\n var _config$__fieldNames$, _config$__fieldNames$2;\n var parentField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n // tip: if parentField is present, field is not full path\n var fieldSeparator = config.settings.fieldSeparator;\n var path = [parentField].concat(_toConsumableArray(field.split(fieldSeparator))).filter(function (f) {\n return f != null;\n });\n var findStr = field;\n var normalizedPath = (_config$__fieldNames$ = config.__fieldNames[findStr]) === null || _config$__fieldNames$ === void 0 || (_config$__fieldNames$2 = _config$__fieldNames$.find) === null || _config$__fieldNames$2 === void 0 || (_config$__fieldNames$2 = _config$__fieldNames$2.call(_config$__fieldNames$, function (_ref2) {\n var inGroup = _ref2.inGroup;\n if (inGroup) return parentField === null || parentField === void 0 ? void 0 : parentField.startsWith(inGroup);\n return true;\n })) === null || _config$__fieldNames$2 === void 0 ? void 0 : _config$__fieldNames$2.fullPath;\n return (normalizedPath || path).join(fieldSeparator);\n};\nexport var getFuncSignature = function getFuncSignature(config, func) {\n if (!func) return null;\n var funcConfig = getFieldRawConfig(config, func, \"funcs\", \"subfields\");\n if (!funcConfig) return null;\n var returnType = funcConfig.returnType,\n args = funcConfig.args;\n var argsSignature = Object.fromEntries(Object.entries(args || {}).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n k = _ref4[0],\n v = _ref4[1];\n var argSignature = pick(v, [\"type\", \"valueSources\", \"defaultValue\", \"fieldSettings\",\n // \"asyncListValues\", // not supported\n \"isOptional\"]);\n return [k, argSignature];\n }));\n var signature = {\n returnType: returnType,\n args: argsSignature\n };\n return signature;\n};\nexport var getFuncConfig = function getFuncConfig(config, func) {\n if (!func) return null;\n var funcConfig = getFieldRawConfig(config, func, \"funcs\", \"subfields\");\n if (!funcConfig) return null; //throw new Error(\"Can't find func \" + func + \", please check your config\");\n var typeConfig = config.types[funcConfig.returnType] || {};\n return _objectSpread(_objectSpread(_objectSpread({}, typeConfig), funcConfig), {}, {\n type: funcConfig.returnType || funcConfig.type\n });\n};\nexport var getFuncArgConfig = function getFuncArgConfig(config, funcKey, argKey) {\n var funcConfig = getFuncConfig(config, funcKey);\n if (!funcConfig) return null; //throw new Error(`Can't find func ${funcKey}, please check your config`);\n var argConfig = funcConfig.args && funcConfig.args[argKey] || null;\n if (!argConfig) return null; //throw new Error(`Can't find arg ${argKey} for func ${funcKey}, please check your config`);\n\n //merge, but don't merge operators (rewrite instead)\n var typeConfig = config.types[argConfig.type] || {};\n var ret = mergeWith({}, typeConfig, argConfig || {}, mergeCustomizerNoArrays);\n return ret;\n};\nexport var isFieldDescendantOfField = function isFieldDescendantOfField(field, parentField) {\n var _config$settings4;\n var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n if (!parentField) return false;\n var fieldSeparator = (config === null || config === void 0 || (_config$settings4 = config.settings) === null || _config$settings4 === void 0 ? void 0 : _config$settings4.fieldSeparator) || \".\";\n var path = getFieldPath(field, config);\n var parentPath = getFieldPath(parentField, config);\n return path.startsWith(parentPath + fieldSeparator);\n};\nexport var getFieldPath = function getFieldPath(field) {\n var _config$settings5;\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (typeof field === \"string\") return field;\n var fieldSeparator = (config === null || config === void 0 || (_config$settings5 = config.settings) === null || _config$settings5 === void 0 ? void 0 : _config$settings5.fieldSeparator) || \".\";\n return getFieldParts(field, config).join(fieldSeparator);\n};\nexport var getFieldParts = function getFieldParts(field) {\n var _config$settings6, _field$get, _field$split;\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!field) return [];\n if (Array.isArray(field)) return field;\n var fieldSeparator = (config === null || config === void 0 || (_config$settings6 = config.settings) === null || _config$settings6 === void 0 ? void 0 : _config$settings6.fieldSeparator) || \".\";\n if (field !== null && field !== void 0 && field.func) {\n return Array.isArray(field.func) ? field.func : field.func.split(fieldSeparator);\n }\n if (field !== null && field !== void 0 && (_field$get = field.get) !== null && _field$get !== void 0 && _field$get.call(field, \"func\")) {\n var _field$get2;\n // immutable\n return field === null || field === void 0 || (_field$get2 = field.get) === null || _field$get2 === void 0 ? void 0 : _field$get2.call(field, \"func\").split(fieldSeparator);\n }\n return (field === null || field === void 0 || (_field$split = field.split) === null || _field$split === void 0 ? void 0 : _field$split.call(field, fieldSeparator)) || [];\n};\nexport var getFieldPathParts = function getFieldPathParts(field, config) {\n var onlyKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (!field) return null;\n var fieldSeparator = config.settings.fieldSeparator;\n var parts = getFieldParts(field, config);\n if (onlyKeys) return parts;else return parts.map(function (_curr, ind, arr) {\n return arr.slice(0, ind + 1);\n }).map(function (parts) {\n return parts.join(fieldSeparator);\n });\n};\nexport var getFieldSrc = function getFieldSrc(field) {\n var _field$get3;\n if (!field) return null;\n if (_typeof(field) == \"object\") {\n if (!field.func && !!field.type) {\n // it's already a config\n return \"field\";\n }\n if (field.func) {\n if (field.func && field.arg) {\n // it's func arg\n return null;\n } else {\n // it's field func\n return \"func\";\n }\n }\n }\n if (field !== null && field !== void 0 && (_field$get3 = field.get) !== null && _field$get3 !== void 0 && _field$get3.call(field, \"func\")) {\n // immutable\n if (field !== null && field !== void 0 && field.get(\"arg\")) {\n // it's func arg\n return null;\n } else {\n // it's field func\n return \"func\";\n }\n }\n return \"field\";\n};\nexport var getFieldConfig = function getFieldConfig(config, field) {\n var _field$get4;\n if (!field) return null;\n if (_typeof(field) == \"object\") {\n if (!field.func && !!field.type) {\n // it's already a config\n // if (!field.defaultOperator) {\n // // if not complete config..\n // // merge, but don't merge operators (rewrite instead)\n // const typeConfig = config.types[field.type] || {};\n // return mergeWith({}, typeConfig, field, mergeCustomizerNoArrays);\n // }\n return field;\n }\n if (field.func) {\n if (field.func && field.arg) {\n // it's func arg\n return getFuncArgConfig(config, field.func, field.arg);\n } else {\n // it's field func\n return getFuncConfig(config, field.func);\n }\n }\n }\n if (field !== null && field !== void 0 && (_field$get4 = field.get) !== null && _field$get4 !== void 0 && _field$get4.call(field, \"func\")) {\n // immutable\n if (field !== null && field !== void 0 && field.get(\"arg\")) {\n // it's func arg\n return getFuncArgConfig(config, field.get(\"func\"), field.get(\"arg\"));\n } else {\n // it's field func\n return getFuncConfig(config, field.get(\"func\"));\n }\n }\n var fieldConfig = getFieldRawConfig(config, field);\n if (!fieldConfig) return null; //throw new Error(\"Can't find field \" + field + \", please check your config\");\n\n //merge, but don't merge operators (rewrite instead)\n var typeConfig = config.types[fieldConfig.type] || {};\n var ret = mergeWith({}, typeConfig, fieldConfig || {}, mergeCustomizerNoArrays);\n return ret;\n};\nexport var getOperatorConfig = function getOperatorConfig(config, operator) {\n var field = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n if (!operator) return null;\n var opConfig = config.operators[operator];\n if (field) {\n var fieldConfig = getFieldConfig(config, field);\n var widget = getWidgetForFieldOp(config, field, operator, null);\n var widgetConfig = config.widgets[widget] || {};\n var fieldWidgetConfig = (fieldConfig && fieldConfig.widgets ? fieldConfig.widgets[widget] : {}) || {};\n var widgetOpProps = (widgetConfig.opProps || {})[operator];\n var fieldWidgetOpProps = (fieldWidgetConfig.opProps || {})[operator];\n var mergedOpConfig = merge({}, opConfig, widgetOpProps, fieldWidgetOpProps);\n return mergedOpConfig;\n } else {\n return opConfig;\n }\n};\nexport var getFieldWidgetConfig = function getFieldWidgetConfig(config, field, operator) {\n var widget = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var valueSrc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n if (!field) return null;\n if (!(operator || widget) && valueSrc != \"const\" && field != \"!case_value\") return null;\n var fieldConfig = getFieldConfig(config, field);\n if (!widget) widget = getWidgetForFieldOp(config, field, operator, valueSrc);\n var widgetConfig = config.widgets[widget] || {};\n var fieldWidgetConfig = (fieldConfig && fieldConfig.widgets ? fieldConfig.widgets[widget] : {}) || {};\n var fieldWidgetProps = fieldWidgetConfig.widgetProps || {};\n var valueFieldSettings = (valueSrc == \"value\" || !valueSrc) && fieldConfig && fieldConfig.fieldSettings || {}; // useful to take 'validateValue'\n var mergedConfig = merge({}, widgetConfig, fieldWidgetProps, valueFieldSettings);\n return mergedConfig;\n};\nexport var _widgetDefKeysToOmit = widgetDefKeysToOmit;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { defaultValue } from \"../utils/stuff\";\nimport { getFieldConfig, getOperatorConfig } from \"../utils/configUtils\";\nimport { defaultConjunction } from \"../utils/defaultUtils\";\nimport { formatFieldName } from \"../utils/ruleUtils\";\nimport { Map } from \"immutable\";\n\n/*\n Build tree to http://querybuilder.js.org/ like format\n\n Example:\n {\n \"condition\": \"AND\",\n \"rules\": [\n {\n \"id\": \"price\",\n \"field\": \"price\",\n \"type\": \"double\",\n \"input\": \"text\",\n \"operator\": \"less\",\n \"value\": \"10.25\"\n },\n {\n \"condition\": \"OR\",\n \"rules\": [\n {\n \"id\": \"category\",\n \"field\": \"category\",\n \"type\": \"integer\",\n \"input\": \"select\",\n \"operator\": \"equal\",\n \"value\": \"2\"\n },\n {\n \"id\": \"category\",\n \"field\": \"category\",\n \"type\": \"integer\",\n \"input\": \"select\",\n \"operator\": \"equal\",\n \"value\": \"1\"\n }\n ]\n }\n ]\n }\n */\n\nexport var queryBuilderFormat = function queryBuilderFormat(item, config) {\n //meta is mutable\n var meta = {\n usedFields: []\n };\n var res = formatItem(item, config, meta);\n if (!res) return undefined;\n return _objectSpread(_objectSpread({}, res), meta);\n};\nvar formatItem = function formatItem(item, config, meta) {\n if (!item) return undefined;\n var type = item.get(\"type\");\n var children = item.get(\"children1\");\n if ((type === \"group\" || type === \"rule_group\") && children && children.size) {\n return formatGroup(item, config, meta);\n } else if (type === \"rule\") {\n return formatRule(item, config, meta);\n }\n return undefined;\n};\nvar formatGroup = function formatGroup(item, config, meta) {\n var properties = item.get(\"properties\") || new Map();\n var children = item.get(\"children1\");\n var id = item.get(\"id\");\n var list = children.map(function (currentChild) {\n return formatItem(currentChild, config, meta);\n }).filter(function (currentChild) {\n return typeof currentChild !== \"undefined\";\n });\n if (!list.size) return undefined;\n var conjunction = properties.get(\"conjunction\");\n if (!conjunction) conjunction = defaultConjunction(config);\n var not = properties.get(\"not\");\n var resultQuery = {\n id: id,\n rules: list.toList(),\n condition: conjunction.toUpperCase(),\n not: not\n };\n return resultQuery;\n};\nvar formatRule = function formatRule(item, config, meta) {\n var _valueType;\n var properties = item.get(\"properties\") || new Map();\n var id = item.get(\"id\");\n var operator = properties.get(\"operator\");\n var options = properties.get(\"operatorOptions\");\n var field = properties.get(\"field\");\n var value = properties.get(\"value\");\n var valueSrc = properties.get(\"valueSrc\");\n var valueType = properties.get(\"valueType\");\n var hasUndefinedValues = value.filter(function (v) {\n return v === undefined;\n }).size > 0;\n if (field == null || operator == null || hasUndefinedValues) return undefined;\n var fieldDefinition = getFieldConfig(config, field) || {};\n var operatorDefinition = getOperatorConfig(config, operator, field) || {};\n var fieldType = fieldDefinition.type || \"undefined\";\n var cardinality = defaultValue(operatorDefinition.cardinality, 1);\n var typeConfig = config.types[fieldDefinition.type] || {};\n var fieldName = formatFieldName(field, config, meta);\n if (value.size < cardinality) return undefined;\n if (meta.usedFields.indexOf(field) == -1) meta.usedFields.push(field);\n value = value.toArray();\n valueSrc = valueSrc.toArray();\n valueType = ((_valueType = valueType) === null || _valueType === void 0 ? void 0 : _valueType.toArray()) || [];\n var values = [];\n for (var i = 0; i < value.length; i++) {\n var val = {\n type: valueType[i],\n value: value[i]\n };\n values.push(val);\n if (valueSrc[i] == \"field\") {\n var secondField = value[i];\n if (meta.usedFields.indexOf(secondField) == -1) meta.usedFields.push(secondField);\n }\n }\n var operatorOptions = options ? options.toJS() : null;\n if (operatorOptions && !Object.keys(operatorOptions).length) operatorOptions = null;\n var ruleQuery = {\n id: id,\n fieldName: fieldName,\n type: fieldType,\n input: typeConfig.mainWidget,\n operator: operator\n };\n if (operatorOptions) ruleQuery.operatorOptions = operatorOptions;\n ruleQuery.values = values;\n return ruleQuery;\n};","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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; } } }; }\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); }\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; }\nimport { defaultValue, widgetDefKeysToOmit, opDefKeysToOmit } from \"../utils/stuff\";\nimport { getFieldConfig, getOperatorConfig, getFieldWidgetConfig, getFuncConfig, extendConfig, getFieldParts } from \"../utils/configUtils\";\nimport { getWidgetForFieldOp, formatFieldName, completeValue } from \"../utils/ruleUtils\";\nimport { defaultConjunction } from \"../utils/defaultUtils\";\nimport { List, Map } from \"immutable\";\nimport omit from \"lodash/omit\";\nimport pick from \"lodash/pick\";\n\n// http://jsonlogic.com/\n\nexport var jsonLogicFormat = function jsonLogicFormat(item, config) {\n //meta is mutable\n var meta = {\n usedFields: [],\n errors: []\n };\n var extendedConfig = extendConfig(config, undefined, false);\n var logic = formatItem(item, extendedConfig, meta, true);\n\n // build empty data\n var errors = meta.errors,\n usedFields = meta.usedFields;\n var fieldSeparator = extendedConfig.settings.fieldSeparator;\n var data = {};\n var _iterator = _createForOfIteratorHelper(usedFields),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var ff = _step.value;\n //const fieldSrc = typeof ff === \"string\" ? \"field\" : \"func\";\n var parts = getFieldParts(ff, config);\n var def = getFieldConfig(extendedConfig, ff) || {};\n var tmp = data;\n for (var i = 0; i < parts.length; i++) {\n var p = parts[i];\n var pdef = getFieldConfig(extendedConfig, parts.slice(0, i + 1)) || {};\n if (i != parts.length - 1) {\n if (pdef.type == \"!group\" && pdef.mode != \"struct\") {\n if (!tmp[p]) tmp[p] = [{}];\n tmp = tmp[p][0];\n } else {\n if (!tmp[p]) tmp[p] = {};\n tmp = tmp[p];\n }\n } else {\n if (!tmp[p]) tmp[p] = null; // can use def.type for sample values\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return {\n errors: errors,\n logic: logic,\n data: data\n };\n};\nvar formatItem = function formatItem(item, config, meta, isRoot) {\n var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n if (!item) return undefined;\n var type = item.get(\"type\");\n var properties = item.get(\"properties\") || new Map();\n var isLocked = properties.get(\"isLocked\");\n var lockedOp = config.settings.jsonLogic.lockedOp;\n var ret;\n if (type === \"group\" || type === \"rule_group\") {\n ret = formatGroup(item, config, meta, isRoot, parentField);\n } else if (type === \"rule\") {\n ret = formatRule(item, config, meta, parentField);\n }\n if (isLocked && ret && lockedOp) {\n ret = _defineProperty({}, lockedOp, ret);\n }\n return ret;\n};\nvar formatGroup = function formatGroup(item, config, meta, isRoot) {\n var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var type = item.get(\"type\");\n var properties = item.get(\"properties\") || new Map();\n var mode = properties.get(\"mode\");\n var children = item.get(\"children1\") || new List();\n var field = properties.get(\"field\");\n var conjunction = properties.get(\"conjunction\");\n if (!conjunction) conjunction = defaultConjunction(config);\n var conjunctionDefinition = config.conjunctions[conjunction];\n var conj = conjunctionDefinition.jsonLogicConj || conjunction.toLowerCase();\n var not = properties.get(\"not\");\n var isRuleGroup = type === \"rule_group\" && !isRoot;\n var groupField = isRuleGroup && mode != \"struct\" ? field : parentField;\n var groupOperator = properties.get(\"operator\");\n var groupOperatorDefinition = groupOperator && getOperatorConfig(config, groupOperator, field) || null;\n var formattedValue = formatItemValue(config, properties, meta, groupOperator, parentField);\n var isGroup0 = isRuleGroup && (!groupOperator || groupOperatorDefinition.cardinality == 0);\n var list = children.map(function (currentChild) {\n return formatItem(currentChild, config, meta, false, groupField);\n }).filter(function (currentChild) {\n return typeof currentChild !== \"undefined\";\n });\n if (isRuleGroup && mode != \"struct\" && !isGroup0) {\n // \"count\" rule can have no \"having\" children, but should have number value\n if (formattedValue == undefined) return undefined;\n } else {\n if (!list.size) return undefined;\n }\n var resultQuery = {};\n if (list.size == 1 && !isRoot) resultQuery = list.first();else resultQuery[conj] = list.toList().toJS();\n\n // revert\n if (not) {\n resultQuery = {\n \"!\": resultQuery\n };\n }\n\n // rule_group (issue #246)\n if (isRuleGroup && mode != \"struct\") {\n var formattedField = formatField(meta, config, field, parentField);\n if (isGroup0) {\n // config.settings.groupOperators\n var op = groupOperator || \"some\";\n resultQuery = _defineProperty({}, op, [formattedField, resultQuery]);\n } else {\n // there is rule for count\n var filter = !list.size ? formattedField : {\n \"filter\": [formattedField, resultQuery]\n };\n var count = {\n \"reduce\": [filter, {\n \"+\": [1, {\n \"var\": \"accumulator\"\n }]\n }, 0]\n };\n resultQuery = formatLogic(config, properties, count, formattedValue, groupOperator);\n }\n }\n return resultQuery;\n};\nvar formatRule = function formatRule(item, config, meta) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var properties = item.get(\"properties\") || new Map();\n var field = properties.get(\"field\");\n var fieldSrc = properties.get(\"fieldSrc\");\n var operator = properties.get(\"operator\");\n var operatorOptions = properties.get(\"operatorOptions\");\n operatorOptions = operatorOptions ? operatorOptions.toJS() : null;\n if (operatorOptions && !Object.keys(operatorOptions).length) operatorOptions = null;\n if (field == null || operator == null) return undefined;\n var fieldDefinition = getFieldConfig(config, field) || {};\n var operatorDefinition = getOperatorConfig(config, operator, field) || {};\n var reversedOp = operatorDefinition.reversedOp;\n var revOperatorDefinition = getOperatorConfig(config, reversedOp, field) || {};\n\n // check op\n var isRev = false;\n if (!operatorDefinition.jsonLogic && !revOperatorDefinition.jsonLogic) {\n meta.errors.push(\"Operator \".concat(operator, \" is not supported\"));\n return undefined;\n }\n if (!operatorDefinition.jsonLogic && revOperatorDefinition.jsonLogic) {\n isRev = true;\n var _ref = [reversedOp, operator];\n operator = _ref[0];\n reversedOp = _ref[1];\n var _ref2 = [revOperatorDefinition, operatorDefinition];\n operatorDefinition = _ref2[0];\n revOperatorDefinition = _ref2[1];\n }\n var formattedValue = formatItemValue(config, properties, meta, operator, parentField);\n if (formattedValue === undefined) return undefined;\n var formattedField = fieldSrc === \"func\" ? formatFunc(meta, config, field, parentField) : formatField(meta, config, field, parentField);\n if (formattedField === undefined) return undefined;\n return formatLogic(config, properties, formattedField, formattedValue, operator, operatorOptions, fieldDefinition, isRev);\n};\nvar formatItemValue = function formatItemValue(config, properties, meta, operator, parentField) {\n var field = properties.get(\"field\");\n var iValueSrc = properties.get(\"valueSrc\");\n var iValueType = properties.get(\"valueType\");\n var fieldDefinition = getFieldConfig(config, field) || {};\n var operatorDefinition = getOperatorConfig(config, operator, field) || {};\n var cardinality = defaultValue(operatorDefinition.cardinality, 1);\n var iValue = properties.get(\"value\");\n var asyncListValues = properties.get(\"asyncListValues\");\n if (iValue == undefined) return undefined;\n var valueSrcs = [];\n var valueTypes = [];\n var oldUsedFields = meta.usedFields;\n var fvalue = iValue.map(function (currentValue, ind) {\n var valueSrc = iValueSrc ? iValueSrc.get(ind) : null;\n var valueType = iValueType ? iValueType.get(ind) : null;\n var cValue = completeValue(currentValue, valueSrc, config);\n var widget = getWidgetForFieldOp(config, field, operator, valueSrc);\n var fieldWidgetDef = omit(getFieldWidgetConfig(config, field, operator, widget, valueSrc), [\"factory\"]);\n var fv = formatValue(meta, config, cValue, valueSrc, valueType, fieldWidgetDef, fieldDefinition, operator, operatorDefinition, parentField, asyncListValues);\n if (fv !== undefined) {\n valueSrcs.push(valueSrc);\n valueTypes.push(valueType);\n }\n return fv;\n });\n var hasUndefinedValues = fvalue.filter(function (v) {\n return v === undefined;\n }).size > 0;\n if (fvalue.size < cardinality || hasUndefinedValues) {\n meta.usedFields = oldUsedFields; // restore\n return undefined;\n }\n return cardinality > 1 ? fvalue.toArray() : cardinality == 1 ? fvalue.first() : null;\n};\nvar formatValue = function formatValue(meta, config, currentValue, valueSrc, valueType, fieldWidgetDef, fieldDef, operator, operatorDef) {\n var parentField = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : null;\n var asyncListValues = arguments.length > 10 ? arguments[10] : undefined;\n if (currentValue === undefined) return undefined;\n var ret;\n if (valueSrc == \"field\") {\n ret = formatField(meta, config, currentValue, parentField);\n } else if (valueSrc == \"func\") {\n ret = formatFunc(meta, config, currentValue, parentField);\n } else if (typeof fieldWidgetDef.jsonLogic === \"function\") {\n var fn = fieldWidgetDef.jsonLogic;\n var args = [currentValue, _objectSpread(_objectSpread({}, pick(fieldDef, [\"fieldSettings\", \"listValues\"])), {}, {\n asyncListValues: asyncListValues\n }),\n //useful options: valueFormat for date/time\n omit(fieldWidgetDef, widgetDefKeysToOmit)];\n if (operator) {\n args.push(operator);\n args.push(operatorDef);\n }\n ret = fn.call.apply(fn, [config.ctx].concat(args));\n } else {\n ret = currentValue;\n }\n return ret;\n};\nvar formatFunc = function formatFunc(meta, config, currentValue) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var funcKey = currentValue.get(\"func\");\n var args = currentValue.get(\"args\");\n var funcConfig = getFuncConfig(config, funcKey);\n var funcParts = getFieldParts(funcKey, config);\n var funcLastKey = funcParts[funcParts.length - 1];\n if (!funcConfig) {\n meta.errors.push(\"Func \".concat(funcKey, \" is not defined in config\"));\n return undefined;\n }\n if (!(funcConfig !== null && funcConfig !== void 0 && funcConfig.jsonLogic)) {\n meta.errors.push(\"Func \".concat(funcKey, \" is not supported\"));\n return undefined;\n }\n var formattedArgs = {};\n var gaps = [];\n var missingArgKeys = [];\n for (var argKey in funcConfig.args) {\n var argConfig = funcConfig.args[argKey];\n var fieldDef = getFieldConfig(config, argConfig);\n var _defaultValue = argConfig.defaultValue,\n isOptional = argConfig.isOptional;\n var defaultValueSrc = _defaultValue !== null && _defaultValue !== void 0 && _defaultValue.func ? \"func\" : \"value\";\n var argVal = args ? args.get(argKey) : undefined;\n var argValue = argVal ? argVal.get(\"value\") : undefined;\n var argValueSrc = argVal ? argVal.get(\"valueSrc\") : undefined;\n var operator = null;\n var widget = getWidgetForFieldOp(config, argConfig, operator, argValueSrc);\n var fieldWidgetDef = omit(getFieldWidgetConfig(config, argConfig, operator, widget, argValueSrc), [\"factory\"]);\n var formattedArgVal = formatValue(meta, config, argValue, argValueSrc, argConfig.type, fieldWidgetDef, fieldDef, null, null, parentField);\n if (argValue != undefined && formattedArgVal === undefined) {\n if (argValueSrc != \"func\")\n // don't triger error if args value is another uncomplete function\n meta.errors.push(\"Can't format value of arg \".concat(argKey, \" for func \").concat(funcKey));\n return undefined;\n }\n var formattedDefaultVal = void 0;\n if (formattedArgVal === undefined && !isOptional && _defaultValue != undefined) {\n var defaultWidget = getWidgetForFieldOp(config, argConfig, operator, defaultValueSrc);\n var defaultFieldWidgetDef = omit(getFieldWidgetConfig(config, argConfig, operator, defaultWidget, defaultValueSrc), [\"factory\"]);\n formattedDefaultVal = formatValue(meta, config, _defaultValue, defaultValueSrc, argConfig.type, defaultFieldWidgetDef, fieldDef, null, null, parentField);\n if (formattedDefaultVal === undefined) {\n if (defaultValueSrc != \"func\")\n // don't triger error if args value is another uncomplete function\n meta.errors.push(\"Can't format default value of arg \".concat(argKey, \" for func \").concat(funcKey));\n return undefined;\n }\n }\n var finalFormattedVal = formattedArgVal !== null && formattedArgVal !== void 0 ? formattedArgVal : formattedDefaultVal;\n if (finalFormattedVal !== undefined) {\n if (gaps.length) {\n var _iterator2 = _createForOfIteratorHelper(gaps),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var missedArgKey = _step2.value;\n formattedArgs[missedArgKey] = undefined;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n gaps = [];\n }\n formattedArgs[argKey] = finalFormattedVal;\n } else {\n if (!isOptional) missingArgKeys.push(argKey);\n gaps.push(argKey);\n }\n }\n if (missingArgKeys.length) {\n //meta.errors.push(`Missing vals for args ${missingArgKeys.join(\", \")} for func ${funcKey}`);\n return undefined; // uncomplete\n }\n\n var formattedArgsArr = Object.values(formattedArgs);\n var ret;\n if (typeof funcConfig.jsonLogic === \"function\") {\n var fn = funcConfig.jsonLogic;\n var _args = [formattedArgs];\n ret = fn.call.apply(fn, [config.ctx].concat(_args));\n } else {\n var funcName = funcConfig.jsonLogic || funcLastKey;\n var isMethod = !!funcConfig.jsonLogicIsMethod;\n if (isMethod) {\n var obj = formattedArgsArr[0],\n params = formattedArgsArr.slice(1);\n if (params.length) {\n ret = {\n \"method\": [obj, funcName, params]\n };\n } else {\n ret = {\n \"method\": [obj, funcName]\n };\n }\n } else {\n ret = _defineProperty({}, funcName, formattedArgsArr);\n }\n }\n return ret;\n};\nvar formatField = function formatField(meta, config, field) {\n var parentField = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var _config$settings = config.settings,\n fieldSeparator = _config$settings.fieldSeparator,\n jsonLogic = _config$settings.jsonLogic;\n var ret;\n if (field) {\n if (Array.isArray(field)) field = field.join(fieldSeparator);\n var fieldDef = getFieldConfig(config, field) || {};\n var fieldName = formatFieldName(field, config, meta, parentField);\n var varName = fieldDef.jsonLogicVar || (fieldDef.type == \"!group\" ? jsonLogic.groupVarKey : \"var\");\n ret = _defineProperty({}, varName, fieldName);\n if (meta.usedFields.indexOf(field) == -1) meta.usedFields.push(field);\n }\n return ret;\n};\nvar buildFnToFormatOp = function buildFnToFormatOp(operator, operatorDefinition, formattedField, formattedValue) {\n var formatteOp = operator;\n var cardinality = defaultValue(operatorDefinition.cardinality, 1);\n var isReverseArgs = defaultValue(operatorDefinition._jsonLogicIsRevArgs, false);\n if (typeof operatorDefinition.jsonLogic == \"string\") formatteOp = operatorDefinition.jsonLogic;\n var rangeOps = [\"<\", \"<=\", \">\", \">=\"];\n var eqOps = [\"==\", \"!=\"];\n var fn = function fn(field, op, val, opDef, opOpts) {\n if (cardinality == 0 && eqOps.includes(formatteOp)) return _defineProperty({}, formatteOp, [formattedField, null]);else if (cardinality == 0) return _defineProperty({}, formatteOp, formattedField);else if (cardinality == 1 && isReverseArgs) return _defineProperty({}, formatteOp, [formattedValue, formattedField]);else if (cardinality == 1) return _defineProperty({}, formatteOp, [formattedField, formattedValue]);else if (cardinality == 2 && rangeOps.includes(formatteOp)) return _defineProperty({}, formatteOp, [formattedValue[0], formattedField, formattedValue[1]]);else return _defineProperty({}, formatteOp, [formattedField].concat(_toConsumableArray(formattedValue)));\n };\n return fn;\n};\nvar formatLogic = function formatLogic(config, properties, formattedField, formattedValue, operator) {\n var operatorOptions = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n var fieldDefinition = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n var isRev = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;\n var field = properties.get(\"field\");\n //const fieldSrc = properties.get(\"fieldSrc\");\n var operatorDefinition = getOperatorConfig(config, operator, field) || {};\n var fn = typeof operatorDefinition.jsonLogic == \"function\" ? operatorDefinition.jsonLogic : buildFnToFormatOp(operator, operatorDefinition, formattedField, formattedValue);\n var args = [formattedField, operator, formattedValue, omit(operatorDefinition, opDefKeysToOmit), operatorOptions, fieldDefinition];\n var ruleQuery = fn.call.apply(fn, [config.ctx].concat(args));\n if (isRev) {\n ruleQuery = {\n \"!\": ruleQuery\n };\n }\n return ruleQuery;\n};","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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; } } }; }\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); }\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; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { defaultValue, widgetDefKeysToOmit, opDefKeysToOmit } from \"../utils/stuff\";\nimport { getFieldConfig, getOperatorConfig, getFieldWidgetConfig, getFuncConfig, getFieldParts, extendConfig } from \"../utils/configUtils\";\nimport { getFieldPathLabels, getWidgetForFieldOp, formatFieldName, completeValue } from \"../utils/ruleUtils\";\nimport { defaultConjunction } from \"../utils/defaultUtils\";\nimport omit from \"lodash/omit\";\nimport pick from \"lodash/pick\";\nimport { List, Map } from \"immutable\";\n\n// helpers\nvar isObject = function isObject(v) {\n return _typeof(v) == \"object\" && v !== null && !Array.isArray(v);\n};\nexport var mongodbFormat = function mongodbFormat(tree, config) {\n return _mongodbFormat(tree, config, false);\n};\nexport var _mongodbFormat = function _mongodbFormat(tree, config) {\n var returnErrors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n //meta is mutable\n var meta = {\n errors: []\n };\n var extendedConfig = extendConfig(config, undefined, false);\n var res = formatItem([], tree, extendedConfig, meta);\n if (returnErrors) {\n return [res, meta.errors];\n } else {\n if (meta.errors.length) console.warn(\"Errors while exporting to MongoDb:\", meta.errors);\n return res;\n }\n};\nvar formatItem = function formatItem(parents, item, config, meta) {\n var _not = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var _canWrapExpr = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n var _formatFieldName = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : undefined;\n var _value = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : undefined;\n if (!item) return undefined;\n var type = item.get(\"type\");\n if (type === \"group\" || type === \"rule_group\") {\n return formatGroup(parents, item, config, meta, _not, _canWrapExpr, _formatFieldName, _value);\n } else if (type === \"rule\") {\n return formatRule(parents, item, config, meta, _not, _canWrapExpr, _formatFieldName, _value);\n }\n return undefined;\n};\nvar formatGroup = function formatGroup(parents, item, config, meta) {\n var _not = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var _canWrapExpr = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n var _formatFieldName = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : undefined;\n var _value = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : undefined;\n var type = item.get(\"type\");\n var properties = item.get(\"properties\") || new Map();\n var children = item.get(\"children1\") || new List();\n var _config$settings = config.settings,\n canShortMongoQuery = _config$settings.canShortMongoQuery,\n fieldSeparator = _config$settings.fieldSeparator;\n var sep = fieldSeparator;\n var hasParentRuleGroup = parents.filter(function (it) {\n return it.get(\"type\") == \"rule_group\";\n }).length > 0;\n var parentPath = parents.filter(function (it) {\n return it.get(\"type\") == \"rule_group\";\n }).map(function (it) {\n return it.get(\"properties\").get(\"field\");\n }).slice(-1).pop();\n var realParentPath = hasParentRuleGroup && parentPath;\n var groupField = type === \"rule_group\" ? properties.get(\"field\") : null;\n var groupFieldName = formatFieldName(groupField, config, meta, realParentPath);\n var groupFieldDef = getFieldConfig(config, groupField) || {};\n var mode = groupFieldDef.mode; //properties.get(\"mode\");\n var canHaveEmptyChildren = groupField && mode == \"array\";\n var not = _not ? !properties.get(\"not\") : properties.get(\"not\");\n var list = children.map(function (currentChild) {\n return formatItem([].concat(_toConsumableArray(parents), [item]), currentChild, config, meta, not, mode != \"array\", mode == \"array\" ? function (f) {\n return \"$$el\".concat(sep).concat(f);\n } : undefined);\n }).filter(function (currentChild) {\n return typeof currentChild !== \"undefined\";\n });\n if (!canHaveEmptyChildren && !list.size) return undefined;\n var conjunction = properties.get(\"conjunction\");\n if (!conjunction) conjunction = defaultConjunction(config);\n var conjunctionDefinition = config.conjunctions[conjunction];\n var reversedConj = conjunctionDefinition.reversedConj;\n if (not && reversedConj) {\n conjunction = reversedConj;\n conjunctionDefinition = config.conjunctions[conjunction];\n }\n if (!conjunctionDefinition) return undefined;\n var mongoConj = conjunctionDefinition.mongoConj;\n var resultQuery;\n if (list.size == 1) {\n resultQuery = list.first();\n } else if (list.size > 1) {\n var rules = list.toList().toJS();\n var canShort = canShortMongoQuery && mongoConj == \"$and\";\n if (canShort) {\n resultQuery = rules.reduce(function (acc, rule) {\n if (!acc) return undefined;\n for (var k in rule) {\n if (k[0] == \"$\") {\n acc = undefined;\n break;\n }\n if (acc[k] == undefined) {\n acc[k] = rule[k];\n } else {\n // https://github.com/ukrbublik/react-awesome-query-builder/issues/182\n var prev = acc[k],\n next = rule[k];\n if (!isObject(prev)) {\n prev = {\n \"$eq\": prev\n };\n }\n if (!isObject(next)) {\n next = {\n \"$eq\": next\n };\n }\n var prevOp = Object.keys(prev)[0],\n nextOp = Object.keys(next)[0];\n if (prevOp == nextOp) {\n acc = undefined;\n break;\n }\n acc[k] = Object.assign({}, prev, next);\n }\n }\n return acc;\n }, {});\n }\n if (!resultQuery)\n // can't be shorten\n resultQuery = _defineProperty({}, mongoConj, rules);\n }\n if (groupField) {\n if (mode == \"array\") {\n var totalQuery = {\n \"$size\": {\n \"$ifNull\": [\"$\" + groupFieldName, []]\n }\n };\n var filterQuery = resultQuery ? {\n \"$size\": {\n \"$ifNull\": [{\n \"$filter\": {\n input: \"$\" + groupFieldName,\n as: \"el\",\n cond: resultQuery\n }\n }, []]\n }\n } : totalQuery;\n resultQuery = formatItem(parents, item.set(\"type\", \"rule\"), config, meta, false, false, function (_f) {\n return filterQuery;\n }, totalQuery);\n resultQuery = {\n \"$expr\": resultQuery\n };\n } else {\n resultQuery = _defineProperty({}, groupFieldName, {\n \"$elemMatch\": resultQuery\n });\n }\n }\n return resultQuery;\n};\nvar formatRule = function formatRule(parents, item, config, meta) {\n var _not = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var _canWrapExpr = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n var _formatFieldName = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : undefined;\n var _value = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : undefined;\n var properties = item.get(\"properties\") || new Map();\n var hasParentRuleGroup = parents.filter(function (it) {\n return it.get(\"type\") == \"rule_group\";\n }).length > 0;\n var parentPath = parents.filter(function (it) {\n return it.get(\"type\") == \"rule_group\";\n }).map(function (it) {\n return it.get(\"properties\").get(\"field\");\n }).slice(-1).pop();\n var realParentPath = hasParentRuleGroup && parentPath;\n var operator = properties.get(\"operator\");\n var operatorOptions = properties.get(\"operatorOptions\");\n var field = properties.get(\"field\");\n var fieldSrc = properties.get(\"fieldSrc\");\n var iValue = properties.get(\"value\");\n var iValueSrc = properties.get(\"valueSrc\");\n var iValueType = properties.get(\"valueType\");\n var asyncListValues = properties.get(\"asyncListValues\");\n if (field == null || operator == null || iValue === undefined) return undefined;\n var fieldDef = getFieldConfig(config, field) || {};\n var operatorDefinition = getOperatorConfig(config, operator, field) || {};\n var reversedOp = operatorDefinition.reversedOp;\n var revOperatorDefinition = getOperatorConfig(config, reversedOp, field) || {};\n var cardinality = defaultValue(operatorDefinition.cardinality, 1);\n var not = _not;\n if (not && reversedOp) {\n var _ref = [reversedOp, operator];\n operator = _ref[0];\n reversedOp = _ref[1];\n var _ref2 = [revOperatorDefinition, operatorDefinition];\n operatorDefinition = _ref2[0];\n revOperatorDefinition = _ref2[1];\n not = false;\n }\n var formattedField;\n var useExpr = false;\n if (fieldSrc == \"func\") {\n var _formatFunc = formatFunc(meta, config, field, realParentPath);\n var _formatFunc2 = _slicedToArray(_formatFunc, 2);\n formattedField = _formatFunc2[0];\n useExpr = _formatFunc2[1];\n } else {\n formattedField = formatFieldName(field, config, meta, realParentPath);\n if (_formatFieldName) {\n useExpr = true;\n formattedField = _formatFieldName(formattedField);\n }\n }\n if (formattedField == undefined) return undefined;\n\n //format value\n var valueSrcs = [];\n var valueTypes = [];\n var fvalue = iValue.map(function (currentValue, ind) {\n var valueSrc = iValueSrc ? iValueSrc.get(ind) : null;\n var valueType = iValueType ? iValueType.get(ind) : null;\n var cValue = completeValue(currentValue, valueSrc, config);\n var widget = getWidgetForFieldOp(config, field, operator, valueSrc);\n var fieldWidgetDef = omit(getFieldWidgetConfig(config, field, operator, widget, valueSrc), [\"factory\"]);\n var _formatValue = formatValue(meta, config, cValue, valueSrc, valueType, fieldWidgetDef, fieldDef, realParentPath, operator, operatorDefinition, asyncListValues),\n _formatValue2 = _slicedToArray(_formatValue, 2),\n fv = _formatValue2[0],\n fvUseExpr = _formatValue2[1];\n if (fv !== undefined) {\n useExpr = useExpr || fvUseExpr;\n valueSrcs.push(valueSrc);\n valueTypes.push(valueType);\n }\n return fv;\n });\n var wrapExpr = useExpr && _canWrapExpr;\n var hasUndefinedValues = fvalue.filter(function (v) {\n return v === undefined;\n }).size > 0;\n if (fvalue.size < cardinality || hasUndefinedValues) return undefined;\n var formattedValue = cardinality > 1 ? fvalue.toArray() : cardinality == 1 ? fvalue.first() : null;\n\n //build rule\n var fn = operatorDefinition.mongoFormatOp;\n if (!fn) {\n meta.errors.push(\"Operator \".concat(operator, \" is not supported\"));\n return undefined;\n }\n var args = [formattedField, operator, _value !== undefined && formattedValue == null ? _value : formattedValue, useExpr, valueSrcs.length > 1 ? valueSrcs : valueSrcs[0], valueTypes.length > 1 ? valueTypes : valueTypes[0], omit(operatorDefinition, opDefKeysToOmit), operatorOptions, fieldDef];\n var ruleQuery = fn.call.apply(fn, [config.ctx].concat(args));\n if (wrapExpr) {\n ruleQuery = {\n \"$expr\": ruleQuery\n };\n }\n if (not) {\n ruleQuery = {\n \"$not\": ruleQuery\n };\n }\n return ruleQuery;\n};\nvar formatValue = function formatValue(meta, config, currentValue, valueSrc, valueType, fieldWidgetDef, fieldDef, parentPath, operator, operatorDef, asyncListValues) {\n if (currentValue === undefined) return [undefined, false];\n var ret;\n var useExpr = false;\n if (valueSrc == \"field\") {\n var _formatRightField = formatRightField(meta, config, currentValue, parentPath);\n var _formatRightField2 = _slicedToArray(_formatRightField, 2);\n ret = _formatRightField2[0];\n useExpr = _formatRightField2[1];\n } else if (valueSrc == \"func\") {\n var _formatFunc3 = formatFunc(meta, config, currentValue, parentPath);\n var _formatFunc4 = _slicedToArray(_formatFunc3, 2);\n ret = _formatFunc4[0];\n useExpr = _formatFunc4[1];\n } else {\n if (typeof fieldWidgetDef.mongoFormatValue === \"function\") {\n var fn = fieldWidgetDef.mongoFormatValue;\n var args = [currentValue, _objectSpread(_objectSpread({}, pick(fieldDef, [\"fieldSettings\", \"listValues\"])), {}, {\n asyncListValues: asyncListValues\n }),\n //useful options: valueFormat for date/time\n omit(fieldWidgetDef, widgetDefKeysToOmit)];\n if (operator) {\n args.push(operator);\n args.push(operatorDef);\n }\n ret = fn.call.apply(fn, [config.ctx].concat(args));\n } else {\n ret = currentValue;\n }\n }\n return [ret, useExpr];\n};\nvar formatRightField = function formatRightField(meta, config, rightField, parentPath) {\n var fieldSeparator = config.settings.fieldSeparator;\n var ret;\n var useExpr = true;\n if (rightField) {\n var rightFieldDefinition = getFieldConfig(config, rightField) || {};\n var fieldParts = getFieldParts(rightField, config);\n var fieldPartsLabels = getFieldPathLabels(rightField, config);\n var fieldFullLabel = fieldPartsLabels ? fieldPartsLabels.join(fieldSeparator) : null;\n var formatFieldFn = config.settings.formatField;\n var rightFieldName = formatFieldName(rightField, config, meta, parentPath);\n var formattedField = formatFieldFn(rightFieldName, fieldParts, fieldFullLabel, rightFieldDefinition, config, false);\n ret = \"$\" + formattedField;\n }\n return [ret, useExpr];\n};\nvar formatFunc = function formatFunc(meta, config, currentValue, parentPath) {\n var useExpr = true;\n var ret;\n var funcKey = currentValue.get(\"func\");\n var args = currentValue.get(\"args\");\n var funcConfig = getFuncConfig(config, funcKey);\n if (!funcConfig) {\n meta.errors.push(\"Func \".concat(funcKey, \" is not defined in config\"));\n return [undefined, false];\n }\n var funcParts = getFieldParts(funcKey, config);\n var funcLastKey = funcParts[funcParts.length - 1];\n var funcName = funcConfig.mongoFunc || funcLastKey;\n var mongoArgsAsObject = funcConfig.mongoArgsAsObject;\n var formattedArgs = {};\n var argsCnt = 0;\n var lastArg = undefined;\n var gaps = [];\n var missingArgKeys = [];\n for (var argKey in funcConfig.args) {\n argsCnt++;\n var argConfig = funcConfig.args[argKey];\n var fieldDef = getFieldConfig(config, argConfig);\n var _defaultValue = argConfig.defaultValue,\n isOptional = argConfig.isOptional;\n var defaultValueSrc = _defaultValue !== null && _defaultValue !== void 0 && _defaultValue.func ? \"func\" : \"value\";\n var argVal = args ? args.get(argKey) : undefined;\n var argValue = argVal ? argVal.get(\"value\") : undefined;\n var argValueSrc = argVal ? argVal.get(\"valueSrc\") : undefined;\n var argAsyncListValues = argVal ? argVal.get(\"asyncListValues\") : undefined;\n var operator = null;\n var widget = getWidgetForFieldOp(config, argConfig, operator, argValueSrc);\n var fieldWidgetDef = omit(getFieldWidgetConfig(config, argConfig, operator, widget, argValueSrc), [\"factory\"]);\n var _formatValue3 = formatValue(meta, config, argValue, argValueSrc, argConfig.type, fieldWidgetDef, fieldDef, parentPath, null, null, argAsyncListValues),\n _formatValue4 = _slicedToArray(_formatValue3, 2),\n formattedArgVal = _formatValue4[0],\n _argUseExpr = _formatValue4[1];\n if (argValue != undefined && formattedArgVal === undefined) {\n if (argValueSrc != \"func\")\n // don't triger error if args value is another uncomplete function\n meta.errors.push(\"Can't format value of arg \".concat(argKey, \" for func \").concat(funcKey));\n return [undefined, false];\n }\n var formattedDefaultVal = void 0;\n if (formattedArgVal === undefined && !isOptional && _defaultValue != undefined) {\n var defaultWidget = getWidgetForFieldOp(config, argConfig, operator, defaultValueSrc);\n var defaultFieldWidgetDef = omit(getFieldWidgetConfig(config, argConfig, operator, defaultWidget, defaultValueSrc), [\"factory\"]);\n var _ = void 0;\n var _formatValue5 = formatValue(meta, config, _defaultValue, defaultValueSrc, argConfig.type, defaultFieldWidgetDef, fieldDef, parentPath, null, null, argAsyncListValues);\n var _formatValue6 = _slicedToArray(_formatValue5, 2);\n formattedDefaultVal = _formatValue6[0];\n _ = _formatValue6[1];\n if (formattedDefaultVal === undefined) {\n if (defaultValueSrc != \"func\")\n // don't triger error if args value is another uncomplete function\n meta.errors.push(\"Can't format default value of arg \".concat(argKey, \" for func \").concat(funcKey));\n return [undefined, false];\n }\n }\n var finalFormattedVal = formattedArgVal !== null && formattedArgVal !== void 0 ? formattedArgVal : formattedDefaultVal;\n if (finalFormattedVal !== undefined) {\n if (gaps.length) {\n var _iterator = _createForOfIteratorHelper(gaps),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var missedArgKey = _step.value;\n formattedArgs[missedArgKey] = undefined;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n gaps = [];\n }\n formattedArgs[argKey] = finalFormattedVal;\n lastArg = finalFormattedVal;\n } else {\n if (!isOptional) missingArgKeys.push(argKey);\n gaps.push(argKey);\n }\n }\n if (missingArgKeys.length) {\n //meta.errors.push(`Missing vals for args ${missingArgKeys.join(\", \")} for func ${funcKey}`);\n return [undefined, false]; // uncomplete\n }\n\n if (typeof funcConfig.mongoFormatFunc === \"function\") {\n var fn = funcConfig.mongoFormatFunc;\n var _args = [formattedArgs];\n ret = fn.call.apply(fn, [config.ctx].concat(_args));\n } else if (funcConfig.mongoFormatFunc === null) {\n meta.errors.push(\"Functon \".concat(funcName, \" is not supported\"));\n return [undefined, false];\n } else {\n if (mongoArgsAsObject) ret = _defineProperty({}, funcName, formattedArgs);else if (argsCnt == 1 && lastArg !== undefined) ret = _defineProperty({}, funcName, lastArg);else ret = _defineProperty({}, funcName, Object.values(formattedArgs));\n }\n return [ret, useExpr];\n};","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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; } } }; }\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); }\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; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { getFieldConfig, getOperatorConfig, getFieldWidgetConfig, getFuncConfig, getFieldParts, extendConfig } from \"../utils/configUtils\";\nimport { getFieldPathLabels, getWidgetForFieldOp, formatFieldName, completeValue } from \"../utils/ruleUtils\";\nimport omit from \"lodash/omit\";\nimport pick from \"lodash/pick\";\nimport { defaultValue, widgetDefKeysToOmit, opDefKeysToOmit } from \"../utils/stuff\";\nimport { defaultConjunction } from \"../utils/defaultUtils\";\nimport { List, Map } from \"immutable\";\nimport { SqlString } from \"../utils/export\";\nexport var sqlFormat = function sqlFormat(tree, config) {\n return _sqlFormat(tree, config, false);\n};\nexport var _sqlFormat = function _sqlFormat(tree, config) {\n var returnErrors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n //meta is mutable\n var meta = {\n errors: []\n };\n var extendedConfig = extendConfig(config, undefined, false);\n var res = formatItem(tree, extendedConfig, meta);\n if (returnErrors) {\n return [res, meta.errors];\n } else {\n if (meta.errors.length) console.warn(\"Errors while exporting to SQL:\", meta.errors);\n return res;\n }\n};\nvar formatItem = function formatItem(item, config, meta) {\n if (!item) return undefined;\n var type = item.get(\"type\");\n var children = item.get(\"children1\");\n if (type === \"group\" || type === \"rule_group\") {\n return formatGroup(item, config, meta);\n } else if (type === \"rule\") {\n return formatRule(item, config, meta);\n }\n return undefined;\n};\nvar formatGroup = function formatGroup(item, config, meta) {\n var type = item.get(\"type\");\n var properties = item.get(\"properties\") || new Map();\n var children = item.get(\"children1\") || new List();\n var isRuleGroup = type === \"rule_group\";\n var groupField = isRuleGroup ? properties.get(\"field\") : null;\n var groupFieldDef = getFieldConfig(config, groupField) || {};\n var mode = groupFieldDef.mode;\n if (mode == \"array\") {\n meta.errors.push(\"Aggregation is not supported for \".concat(groupField));\n }\n var not = properties.get(\"not\");\n var canHaveEmptyChildren = false; //isRuleGroup && mode == \"array\";\n var list = children.map(function (currentChild) {\n return formatItem(currentChild, config, meta);\n }).filter(function (currentChild) {\n return typeof currentChild !== \"undefined\";\n });\n if (!canHaveEmptyChildren && !list.size) return undefined;\n var conjunction = properties.get(\"conjunction\");\n if (!conjunction) conjunction = defaultConjunction(config);\n var conjunctionDefinition = config.conjunctions[conjunction];\n return conjunctionDefinition.sqlFormatConj(list, conjunction, not);\n};\nvar buildFnToFormatOp = function buildFnToFormatOp(operator, operatorDefinition) {\n var sqlOp = operatorDefinition.sqlOp || operator;\n var cardinality = defaultValue(operatorDefinition.cardinality, 1);\n var fn;\n if (cardinality == 0) {\n fn = function fn(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n return \"\".concat(field, \" \").concat(sqlOp);\n };\n } else if (cardinality == 1) {\n fn = function fn(field, op, value, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n return \"\".concat(field, \" \").concat(sqlOp, \" \").concat(value);\n };\n } else if (cardinality == 2) {\n // between\n fn = function fn(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n var valFrom = values.first();\n var valTo = values.get(1);\n return \"\".concat(field, \" \").concat(sqlOp, \" \").concat(valFrom, \" AND \").concat(valTo);\n };\n }\n return fn;\n};\nvar formatRule = function formatRule(item, config, meta) {\n var properties = item.get(\"properties\") || new Map();\n var field = properties.get(\"field\");\n var fieldSrc = properties.get(\"fieldSrc\");\n var operator = properties.get(\"operator\");\n var operatorOptions = properties.get(\"operatorOptions\");\n var iValueSrc = properties.get(\"valueSrc\");\n var iValueType = properties.get(\"valueType\");\n var iValue = properties.get(\"value\");\n var asyncListValues = properties.get(\"asyncListValues\");\n if (field == null || operator == null) return undefined;\n var fieldDefinition = getFieldConfig(config, field) || {};\n var opDef = getOperatorConfig(config, operator, field) || {};\n var reversedOp = opDef.reversedOp;\n var revOpDef = getOperatorConfig(config, reversedOp, field) || {};\n var cardinality = defaultValue(opDef.cardinality, 1);\n\n // check op\n var isRev = false;\n var canFormatOp = opDef.sqlOp || opDef.sqlFormatOp;\n var canFormatRevOp = revOpDef.sqlOp || revOpDef.sqlFormatOp;\n if (!canFormatOp && !canFormatRevOp) {\n meta.errors.push(\"Operator \".concat(operator, \" is not supported\"));\n return undefined;\n }\n if (!canFormatOp && canFormatRevOp) {\n isRev = true;\n var _ref = [reversedOp, operator];\n operator = _ref[0];\n reversedOp = _ref[1];\n var _ref2 = [revOpDef, opDef];\n opDef = _ref2[0];\n revOpDef = _ref2[1];\n }\n\n //format value\n var valueSrcs = [];\n var valueTypes = [];\n var fvalue = iValue.map(function (currentValue, ind) {\n var valueSrc = iValueSrc ? iValueSrc.get(ind) : null;\n var valueType = iValueType ? iValueType.get(ind) : null;\n var cValue = completeValue(currentValue, valueSrc, config);\n var widget = getWidgetForFieldOp(config, field, operator, valueSrc);\n var fieldWidgetDefinition = omit(getFieldWidgetConfig(config, field, operator, widget, valueSrc), [\"factory\"]);\n var fv = formatValue(meta, config, cValue, valueSrc, valueType, fieldWidgetDefinition, fieldDefinition, operator, opDef, asyncListValues);\n if (fv !== undefined) {\n valueSrcs.push(valueSrc);\n valueTypes.push(valueType);\n }\n return fv;\n });\n var hasUndefinedValues = fvalue.filter(function (v) {\n return v === undefined;\n }).size > 0;\n if (hasUndefinedValues || fvalue.size < cardinality) return undefined;\n var formattedValue = cardinality == 1 ? fvalue.first() : fvalue;\n\n //find fn to format expr\n var fn = opDef.sqlFormatOp || buildFnToFormatOp(operator, opDef);\n if (!fn) {\n meta.errors.push(\"Operator \".concat(operator, \" is not supported\"));\n return undefined;\n }\n\n //format field\n var formattedField = fieldSrc == \"func\" ? formatFunc(meta, config, field) : formatField(meta, config, field);\n if (formattedField == undefined) return undefined;\n\n //format expr\n var args = [formattedField, operator, formattedValue, valueSrcs.length > 1 ? valueSrcs : valueSrcs[0], valueTypes.length > 1 ? valueTypes : valueTypes[0], omit(opDef, opDefKeysToOmit), operatorOptions, fieldDefinition];\n var ret;\n ret = fn.call.apply(fn, [config.ctx].concat(args));\n if (isRev) {\n ret = config.settings.sqlFormatReverse(ret);\n }\n if (ret === undefined) {\n meta.errors.push(\"Operator \".concat(operator, \" is not supported for value source \").concat(valueSrcs.join(\", \")));\n return undefined;\n }\n return ret;\n};\nvar formatValue = function formatValue(meta, config, currentValue, valueSrc, valueType, fieldWidgetDef, fieldDef, operator, operatorDef, asyncListValues) {\n if (currentValue === undefined) return undefined;\n var ret;\n if (valueSrc == \"field\") {\n ret = formatField(meta, config, currentValue);\n } else if (valueSrc == \"func\") {\n ret = formatFunc(meta, config, currentValue);\n } else {\n if (typeof fieldWidgetDef.sqlFormatValue === \"function\") {\n var fn = fieldWidgetDef.sqlFormatValue;\n var args = [currentValue, _objectSpread(_objectSpread({}, pick(fieldDef, [\"fieldSettings\", \"listValues\"])), {}, {\n asyncListValues: asyncListValues\n }),\n //useful options: valueFormat for date/time\n omit(fieldWidgetDef, widgetDefKeysToOmit)];\n if (operator) {\n args.push(operator);\n args.push(operatorDef);\n }\n if (valueSrc == \"field\") {\n var valFieldDefinition = getFieldConfig(config, currentValue) || {};\n args.push(valFieldDefinition);\n }\n ret = fn.call.apply(fn, [config.ctx].concat(args));\n } else {\n if (Array.isArray(currentValue)) {\n ret = currentValue.map(function (v) {\n return SqlString.escape(v);\n });\n } else {\n ret = SqlString.escape(currentValue);\n }\n }\n }\n return ret;\n};\nvar formatField = function formatField(meta, config, field) {\n if (!field) return;\n var fieldSeparator = config.settings.fieldSeparator;\n var fieldDefinition = getFieldConfig(config, field) || {};\n var fieldParts = getFieldParts(field, config);\n var fieldPartsLabels = getFieldPathLabels(field, config);\n var fieldFullLabel = fieldPartsLabels ? fieldPartsLabels.join(fieldSeparator) : null;\n var formatFieldFn = config.settings.formatField;\n var fieldName = formatFieldName(field, config, meta, null, {\n useTableName: true\n });\n var formattedField = formatFieldFn(fieldName, fieldParts, fieldFullLabel, fieldDefinition, config);\n return formattedField;\n};\nvar formatFunc = function formatFunc(meta, config, currentValue) {\n var funcKey = currentValue.get(\"func\");\n var args = currentValue.get(\"args\");\n var funcConfig = getFuncConfig(config, funcKey);\n if (!funcConfig) {\n meta.errors.push(\"Func \".concat(funcKey, \" is not defined in config\"));\n return undefined;\n }\n var funcParts = getFieldParts(funcKey, config);\n var funcLastKey = funcParts[funcParts.length - 1];\n var funcName = funcConfig.sqlFunc || funcLastKey;\n var formattedArgs = {};\n var gaps = [];\n var missingArgKeys = [];\n for (var argKey in funcConfig.args) {\n var argConfig = funcConfig.args[argKey];\n var fieldDef = getFieldConfig(config, argConfig);\n var _defaultValue = argConfig.defaultValue,\n isOptional = argConfig.isOptional;\n var defaultValueSrc = _defaultValue !== null && _defaultValue !== void 0 && _defaultValue.func ? \"func\" : \"value\";\n var argVal = args ? args.get(argKey) : undefined;\n var argValue = argVal ? argVal.get(\"value\") : undefined;\n var argValueSrc = argVal ? argVal.get(\"valueSrc\") : undefined;\n var argAsyncListValues = argVal ? argVal.get(\"asyncListValues\") : undefined;\n var formattedArgVal = formatValue(meta, config, argValue, argValueSrc, argConfig.type, fieldDef, argConfig, null, null, argAsyncListValues);\n if (argValue != undefined && formattedArgVal === undefined) {\n if (argValueSrc != \"func\")\n // don't triger error if args value is another uncomplete function\n meta.errors.push(\"Can't format value of arg \".concat(argKey, \" for func \").concat(funcKey));\n return undefined;\n }\n var formattedDefaultVal = void 0;\n if (formattedArgVal === undefined && !isOptional && _defaultValue != undefined) {\n formattedDefaultVal = formatValue(meta, config, _defaultValue, defaultValueSrc, argConfig.type, fieldDef, argConfig, null, null, argAsyncListValues);\n if (formattedDefaultVal === undefined) {\n if (defaultValueSrc != \"func\")\n // don't triger error if args value is another uncomplete function\n meta.errors.push(\"Can't format default value of arg \".concat(argKey, \" for func \").concat(funcKey));\n return undefined;\n }\n }\n var finalFormattedVal = formattedArgVal !== null && formattedArgVal !== void 0 ? formattedArgVal : formattedDefaultVal;\n if (finalFormattedVal !== undefined) {\n if (gaps.length) {\n var _iterator = _createForOfIteratorHelper(argKey),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var missedArgKey = _step.value;\n formattedArgs[missedArgKey] = undefined;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n gaps = [];\n }\n formattedArgs[argKey] = finalFormattedVal;\n } else {\n if (!isOptional) missingArgKeys.push(argKey);\n gaps.push(argKey);\n }\n }\n if (missingArgKeys.length) {\n //meta.errors.push(`Missing vals for args ${missingArgKeys.join(\", \")} for func ${funcKey}`);\n return undefined; // uncomplete\n }\n\n var ret;\n if (typeof funcConfig.sqlFormatFunc === \"function\") {\n var fn = funcConfig.sqlFormatFunc;\n var _args = [formattedArgs];\n ret = fn.call.apply(fn, [config.ctx].concat(_args));\n } else {\n var argsStr = Object.entries(formattedArgs).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n k = _ref4[0],\n v = _ref4[1];\n return v;\n }).join(\", \");\n ret = \"\".concat(funcName, \"(\").concat(argsStr, \")\");\n }\n return ret;\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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; } } }; }\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); }\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; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { getFieldConfig, getOperatorConfig, getFieldWidgetConfig, getFuncConfig, getFieldParts, extendConfig } from \"../utils/configUtils\";\nimport { getFieldPathLabels, getWidgetForFieldOp, formatFieldName, completeValue } from \"../utils/ruleUtils\";\nimport omit from \"lodash/omit\";\nimport pick from \"lodash/pick\";\nimport { defaultValue, widgetDefKeysToOmit, opDefKeysToOmit } from \"../utils/stuff\";\nimport { defaultConjunction } from \"../utils/defaultUtils\";\nimport { List, Map } from \"immutable\";\nexport var queryString = function queryString(item, config) {\n var isForDisplay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n //meta is mutable\n var meta = {\n errors: []\n };\n var extendedConfig = extendConfig(config, undefined, false);\n var res = formatItem(item, extendedConfig, meta, isForDisplay, null);\n if (meta.errors.length) console.warn(\"Errors while exporting to string:\", meta.errors);\n return res;\n};\nvar formatItem = function formatItem(item, config, meta) {\n var isForDisplay = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n if (!item) return undefined;\n var type = item.get(\"type\");\n var children = item.get(\"children1\");\n if (type === \"group\" || type === \"rule_group\") {\n return formatGroup(item, config, meta, isForDisplay, parentField);\n } else if (type === \"rule\") {\n return formatRule(item, config, meta, isForDisplay, parentField);\n }\n return undefined;\n};\nvar formatGroup = function formatGroup(item, config, meta) {\n var isForDisplay = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var type = item.get(\"type\");\n var properties = item.get(\"properties\") || new Map();\n var mode = properties.get(\"mode\");\n var children = item.get(\"children1\") || new List();\n var isRuleGroup = type === \"rule_group\";\n // TIP: don't cut group for mode == 'struct' and don't do aggr format (maybe later)\n var groupField = isRuleGroup && mode == \"array\" ? properties.get(\"field\") : null;\n var canHaveEmptyChildren = isRuleGroup && mode == \"array\";\n var not = properties.get(\"not\");\n var list = children.map(function (currentChild) {\n return formatItem(currentChild, config, meta, isForDisplay, groupField);\n }).filter(function (currentChild) {\n return typeof currentChild !== \"undefined\";\n });\n if (!canHaveEmptyChildren && !list.size) return undefined;\n var conjunction = properties.get(\"conjunction\");\n if (!conjunction) conjunction = defaultConjunction(config);\n var conjunctionDefinition = config.conjunctions[conjunction];\n var conjStr = list.size ? conjunctionDefinition.formatConj(list, conjunction, not, isForDisplay) : null;\n var ret;\n if (groupField) {\n var aggrArgs = formatRule(item, config, meta, isForDisplay, parentField, true);\n if (aggrArgs) {\n var _config$settings;\n var isRev = aggrArgs.pop();\n var args = [conjStr].concat(_toConsumableArray(aggrArgs));\n ret = (_config$settings = config.settings).formatAggr.apply(_config$settings, _toConsumableArray(args));\n if (isRev) {\n ret = config.settings.formatReverse(ret, null, null, null, null, isForDisplay);\n }\n }\n } else {\n ret = conjStr;\n }\n return ret;\n};\nvar formatItemValue = function formatItemValue(config, properties, meta, _operator, isForDisplay, parentField) {\n var field = properties.get(\"field\");\n var iValueSrc = properties.get(\"valueSrc\");\n var iValueType = properties.get(\"valueType\");\n var fieldDef = getFieldConfig(config, field) || {};\n var operator = _operator || properties.get(\"operator\");\n var operatorDef = getOperatorConfig(config, operator, field) || {};\n var cardinality = defaultValue(operatorDef.cardinality, 1);\n var iValue = properties.get(\"value\");\n var asyncListValues = properties.get(\"asyncListValues\");\n var valueSrcs = [];\n var valueTypes = [];\n var formattedValue;\n if (iValue != undefined) {\n var fvalue = iValue.map(function (currentValue, ind) {\n var valueSrc = iValueSrc ? iValueSrc.get(ind) : null;\n var valueType = iValueType ? iValueType.get(ind) : null;\n var cValue = completeValue(currentValue, valueSrc, config);\n var widget = getWidgetForFieldOp(config, field, operator, valueSrc);\n var fieldWidgetDef = omit(getFieldWidgetConfig(config, field, operator, widget, valueSrc), [\"factory\"]);\n var fv = formatValue(config, meta, cValue, valueSrc, valueType, fieldWidgetDef, fieldDef, operator, operatorDef, isForDisplay, parentField, asyncListValues);\n if (fv !== undefined) {\n valueSrcs.push(valueSrc);\n valueTypes.push(valueType);\n }\n return fv;\n });\n var hasUndefinedValues = fvalue.filter(function (v) {\n return v === undefined;\n }).size > 0;\n if (!(hasUndefinedValues || fvalue.size < cardinality)) {\n formattedValue = cardinality == 1 ? fvalue.first() : fvalue;\n }\n }\n return [formattedValue, valueSrcs.length > 1 ? valueSrcs : valueSrcs[0], valueTypes.length > 1 ? valueTypes : valueTypes[0]];\n};\nvar buildFnToFormatOp = function buildFnToFormatOp(operator, operatorDefinition) {\n var fop = operatorDefinition.labelForFormat || operator;\n var cardinality = defaultValue(operatorDefinition.cardinality, 1);\n var fn;\n if (cardinality == 0) {\n fn = function fn(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n return \"\".concat(field, \" \").concat(fop);\n };\n } else if (cardinality == 1) {\n fn = function fn(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n return \"\".concat(field, \" \").concat(fop, \" \").concat(values);\n };\n } else if (cardinality == 2) {\n // between\n fn = function fn(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n var valFrom = values.first();\n var valTo = values.get(1);\n return \"\".concat(field, \" \").concat(fop, \" \").concat(valFrom, \" AND \").concat(valTo);\n };\n }\n return fn;\n};\nvar formatRule = function formatRule(item, config, meta) {\n var isForDisplay = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var returnArgs = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n var properties = item.get(\"properties\") || new Map();\n var field = properties.get(\"field\");\n var fieldSrc = properties.get(\"fieldSrc\");\n var operator = properties.get(\"operator\");\n var operatorOptions = properties.get(\"operatorOptions\");\n if (field == null || operator == null) return undefined;\n var fieldDef = getFieldConfig(config, field) || {};\n var operatorDef = getOperatorConfig(config, operator, field) || {};\n var reversedOp = operatorDef.reversedOp;\n var revOperatorDef = getOperatorConfig(config, reversedOp, field) || {};\n\n //check op\n var isRev = false;\n var fn = operatorDef.formatOp;\n if (!fn && reversedOp) {\n fn = revOperatorDef.formatOp;\n if (fn) {\n isRev = true;\n var _ref = [reversedOp, operator];\n operator = _ref[0];\n reversedOp = _ref[1];\n var _ref2 = [revOperatorDef, operatorDef];\n operatorDef = _ref2[0];\n revOperatorDef = _ref2[1];\n }\n }\n\n //find fn to format expr\n if (!fn) fn = buildFnToFormatOp(operator, operatorDef);\n if (!fn) return undefined;\n\n //format field\n var formattedField = fieldSrc === \"func\" ? formatFunc(config, meta, field, isForDisplay, parentField) : formatField(config, meta, field, isForDisplay, parentField);\n if (formattedField == undefined) return undefined;\n\n //format value\n var _formatItemValue = formatItemValue(config, properties, meta, operator, isForDisplay, parentField),\n _formatItemValue2 = _slicedToArray(_formatItemValue, 3),\n formattedValue = _formatItemValue2[0],\n valueSrc = _formatItemValue2[1],\n valueType = _formatItemValue2[2];\n if (formattedValue === undefined) return undefined;\n var args = [formattedField, operator, formattedValue, valueSrc, valueType, omit(operatorDef, opDefKeysToOmit), operatorOptions, isForDisplay, fieldDef, isRev];\n if (returnArgs) {\n return args;\n } else {\n var _fn;\n //format expr\n var ret = (_fn = fn).call.apply(_fn, [config.ctx].concat(args));\n\n //rev\n if (isRev) {\n ret = config.settings.formatReverse(ret, operator, reversedOp, operatorDef, revOperatorDef, isForDisplay);\n }\n return ret;\n }\n};\nvar formatValue = function formatValue(config, meta, value, valueSrc, valueType, fieldWidgetDef, fieldDef, operator, opDef, isForDisplay) {\n var parentField = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : null;\n var asyncListValues = arguments.length > 11 ? arguments[11] : undefined;\n if (value === undefined) return undefined;\n var ret;\n if (valueSrc == \"field\") {\n ret = formatField(config, meta, value, isForDisplay, parentField);\n } else if (valueSrc == \"func\") {\n ret = formatFunc(config, meta, value, isForDisplay, parentField);\n } else {\n if (typeof fieldWidgetDef.formatValue === \"function\") {\n var fn = fieldWidgetDef.formatValue;\n var args = [value, _objectSpread(_objectSpread({}, pick(fieldDef, [\"fieldSettings\", \"listValues\"])), {}, {\n asyncListValues: asyncListValues\n }),\n //useful options: valueFormat for date/time\n omit(fieldWidgetDef, widgetDefKeysToOmit), isForDisplay];\n if (operator) {\n args.push(operator);\n args.push(opDef);\n }\n if (valueSrc == \"field\") {\n var valFieldDefinition = getFieldConfig(config, value) || {};\n args.push(valFieldDefinition);\n }\n ret = fn.call.apply(fn, [config.ctx].concat(args));\n } else {\n ret = value;\n }\n }\n return ret;\n};\nvar formatField = function formatField(config, meta, field, isForDisplay) {\n var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var cutParentField = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n var _config$settings2 = config.settings,\n fieldSeparator = _config$settings2.fieldSeparator,\n fieldSeparatorDisplay = _config$settings2.fieldSeparatorDisplay;\n var ret = null;\n if (field) {\n var fieldDefinition = getFieldConfig(config, field) || {};\n var fieldParts = getFieldParts(field, config);\n var fieldPartsLabels = getFieldPathLabels(field, config, cutParentField ? parentField : null);\n var fieldFullLabel = fieldPartsLabels ? fieldPartsLabels.join(fieldSeparatorDisplay) : null;\n var fieldLabel2 = fieldDefinition.label2 || fieldFullLabel;\n var formatFieldFn = config.settings.formatField;\n var fieldName = formatFieldName(field, config, meta, cutParentField ? parentField : null, {\n useTableName: true\n });\n ret = formatFieldFn(fieldName, fieldParts, fieldLabel2, fieldDefinition, config, isForDisplay);\n }\n return ret;\n};\nvar formatFunc = function formatFunc(config, meta, funcValue, isForDisplay) {\n var parentField = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var funcKey = funcValue.get(\"func\");\n var args = funcValue.get(\"args\");\n var funcConfig = getFuncConfig(config, funcKey);\n if (!funcConfig) {\n meta.errors.push(\"Func \".concat(funcKey, \" is not defined in config\"));\n return undefined;\n }\n var funcParts = getFieldParts(funcKey, config);\n var funcLastKey = funcParts[funcParts.length - 1];\n var funcName = isForDisplay && funcConfig.label || funcLastKey;\n var formattedArgs = {};\n var gaps = [];\n var missingArgKeys = [];\n var formattedArgsWithNames = {};\n for (var argKey in funcConfig.args) {\n var argConfig = funcConfig.args[argKey];\n var fieldDef = getFieldConfig(config, argConfig);\n var _defaultValue = argConfig.defaultValue,\n isOptional = argConfig.isOptional;\n var defaultValueSrc = _defaultValue !== null && _defaultValue !== void 0 && _defaultValue.func ? \"func\" : \"value\";\n var argName = isForDisplay && argConfig.label || argKey;\n var argVal = args ? args.get(argKey) : undefined;\n var argValue = argVal ? argVal.get(\"value\") : undefined;\n var argValueSrc = argVal ? argVal.get(\"valueSrc\") : undefined;\n var argAsyncListValues = argVal ? argVal.get(\"asyncListValues\") : undefined;\n var formattedArgVal = formatValue(config, meta, argValue, argValueSrc, argConfig.type, fieldDef, argConfig, null, null, isForDisplay, parentField, argAsyncListValues);\n if (argValue != undefined && formattedArgVal === undefined) {\n if (argValueSrc != \"func\")\n // don't triger error if args value is another uncomplete function\n meta.errors.push(\"Can't format value of arg \".concat(argKey, \" for func \").concat(funcKey));\n return undefined;\n }\n var formattedDefaultVal = void 0;\n if (formattedArgVal === undefined && !isOptional && _defaultValue != undefined) {\n formattedDefaultVal = formatValue(config, meta, _defaultValue, defaultValueSrc, argConfig.type, fieldDef, argConfig, null, null, isForDisplay, parentField, argAsyncListValues);\n if (formattedDefaultVal === undefined) {\n if (defaultValueSrc != \"func\")\n // don't triger error if args value is another uncomplete function\n meta.errors.push(\"Can't format default value of arg \".concat(argKey, \" for func \").concat(funcKey));\n return undefined;\n }\n }\n var finalFormattedVal = formattedArgVal !== null && formattedArgVal !== void 0 ? formattedArgVal : formattedDefaultVal;\n if (finalFormattedVal !== undefined) {\n if (gaps.length) {\n var _iterator = _createForOfIteratorHelper(argKey),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray(_step.value, 2),\n missedArgKey = _step$value[0],\n missedArgName = _step$value[1];\n formattedArgs[missedArgKey] = undefined;\n //formattedArgsWithNames[missedArgName] = undefined;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n gaps = [];\n }\n formattedArgs[argKey] = finalFormattedVal;\n formattedArgsWithNames[argName] = finalFormattedVal;\n } else {\n if (!isOptional) missingArgKeys.push(argKey);\n gaps.push([argKey, argName]);\n }\n }\n if (missingArgKeys.length) {\n //meta.errors.push(`Missing vals for args ${missingArgKeys.join(\", \")} for func ${funcKey}`);\n return undefined; // uncomplete\n }\n\n var ret = null;\n if (typeof funcConfig.formatFunc === \"function\") {\n var fn = funcConfig.formatFunc;\n var _args = [formattedArgs, isForDisplay];\n ret = fn.call.apply(fn, [config.ctx].concat(_args));\n } else {\n var argsStr = Object.entries(isForDisplay ? formattedArgsWithNames : formattedArgs).map(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n k = _ref4[0],\n v = _ref4[1];\n return isForDisplay ? \"\".concat(k, \": \").concat(v) : \"\".concat(v);\n }).join(\", \");\n ret = \"\".concat(funcName, \"(\").concat(argsStr, \")\");\n }\n return ret;\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { getWidgetForFieldOp } from \"../utils/ruleUtils\";\nimport { defaultConjunction } from \"../utils/defaultUtils\";\n\n/**\n * Converts a string representation of top_left and bottom_right cords to\n * a ES geo_point required for query\n *\n * @param {string} geoPointString - comma separated string of lat/lon coods\n * @returns {{top_left: {lon: number, lat: number}, bottom_right: {lon: number, lat: number}}} - ES geoPoint formatted object\n * @private\n */\nfunction buildEsGeoPoint(geoPointString) {\n if (geoPointString == null) {\n return null;\n }\n var coordsNumberArray = geoPointString.split(\",\").map(Number);\n return {\n top_left: {\n lat: coordsNumberArray[0],\n lon: coordsNumberArray[1]\n },\n bottom_right: {\n lat: coordsNumberArray[2],\n lon: coordsNumberArray[3]\n }\n };\n}\n\n/**\n * Converts a dateTime string from the query builder to a ES range formatted object\n *\n * @param {string} dateTime - dateTime formatted string\n * @param {string} operator - query builder operator type, see constants.js and query builder docs\n * @returns {{lt: string}|{lte: string}|{gte: string}|{gte: string, lte: string}|undefined} - ES range query parameter\n *\n * @private\n */\nfunction buildEsRangeParameters(value, operator) {\n // -- if value is greater than 1 then we assume this is a between operator : BUG this is wrong, a selectable list can have multiple values\n if (value.length > 1) {\n return {\n gte: \"\".concat(value[0]),\n lte: \"\".concat(value[1])\n };\n } // -- if value is only one we assume this is a date time query for a specific day\n\n var dateTime = value[0]; //TODO: Rethink about this part, what if someone adds a new type of opperator\n\n //todo: move this logic into config\n switch (operator) {\n case \"on_date\": //todo: not used\n case \"not_on_date\":\n case \"equal\":\n case \"select_equals\":\n case \"not_equal\":\n return {\n gte: \"\".concat(dateTime, \"||/d\"),\n lte: \"\".concat(dateTime, \"||+1d\")\n };\n case \"less_or_equal\":\n return {\n lte: \"\".concat(dateTime)\n };\n case \"greater_or_equal\":\n return {\n gte: \"\".concat(dateTime)\n };\n case \"less\":\n return {\n lt: \"\".concat(dateTime)\n };\n case \"greater\":\n return {\n gt: \"\".concat(dateTime)\n };\n default:\n return undefined;\n }\n}\n\n/**\n * Builds the DSL parameters for a Wildcard query\n *\n * @param {string} value - The match value\n * @returns {{value: string}} - The value = value parameter surrounded with * on each end\n * @private\n */\nfunction buildEsWildcardParameters(value) {\n return {\n value: \"*\" + value + \"*\"\n };\n}\n\n/**\n * Takes the match type string from awesome query builder like 'greater_or_equal' and\n * returns the ES occurrence required for bool queries\n *\n * @param {string} combinator - query group type or rule condition\n * @param {bool} not\n * @returns {string} - ES occurrence type. See constants.js\n * @private\n */\nfunction determineOccurrence(combinator, not) {\n //todo: move into config, like mongoConj\n switch (combinator) {\n case \"AND\":\n return not ? \"must_not\" : \"must\";\n // -- AND\n\n case \"OR\":\n return not ? \"should_not\" : \"should\";\n // -- OR\n\n case \"NOT\":\n return not ? \"must\" : \"must_not\";\n // -- NOT AND\n\n default:\n return undefined;\n }\n}\n\n/**\n * Determines what field to query off of given the operator type\n *\n * @param {string} fieldDataType - The type of data\n * @param {string} fullFieldName - A '.' separated string containing the property lineage (including self)\n * @param {string} queryType - The query type\n * @returns {string|*} - will be either the fullFieldName or fullFieldName.keyword\n * @private\n */\n//todo: not used\n// function determineQueryField(fieldDataType, fullFieldName, queryType) {\n// if (fieldDataType === \"boolean\") {\n// return fullFieldName;\n// }\n\n// switch (queryType) {\n// case \"term\":\n// case \"wildcard\":\n// return \"\".concat(fullFieldName, \".keyword\");\n\n// case \"geo_bounding_box\":\n// case \"range\":\n// case \"match\":\n// return fullFieldName;\n\n// default:\n// console.error(\"Can't determine query field for query type \".concat(queryType));\n// return null;\n// }\n// }\n\nfunction buildRegexpParameters(value) {\n return {\n value: value\n };\n}\nfunction determineField(fieldName, config) {\n //todo: ElasticSearchTextField - not used\n //return config.fields[fieldName].ElasticSearchTextField || fieldName;\n return fieldName;\n}\nfunction buildParameters(queryType, value, operator, fieldName, config, syntax) {\n var textField = determineField(fieldName, config);\n switch (queryType) {\n case \"filter\":\n //todo: elasticSearchScript - not used\n return {\n script: config.operators[operator].elasticSearchScript(fieldName, value)\n };\n case \"exists\":\n return {\n field: fieldName\n };\n case \"match\":\n return _defineProperty({}, textField, value[0]);\n case \"term\":\n return syntax === ES_7_SYNTAX ? _defineProperty({}, fieldName, {\n value: value[0]\n }) : _defineProperty({}, fieldName, value[0]);\n\n //todo: not used\n // need to add geo type into RAQB or remove this code\n case \"geo_bounding_box\":\n return _defineProperty({}, fieldName, buildEsGeoPoint(value[0]));\n case \"range\":\n return _defineProperty({}, fieldName, buildEsRangeParameters(value, operator));\n case \"wildcard\":\n return _defineProperty({}, fieldName, buildEsWildcardParameters(value[0]));\n case \"regexp\":\n return _defineProperty({}, fieldName, buildRegexpParameters(value[0]));\n default:\n return undefined;\n }\n}\n/**\n * Handles the building of the group portion of the DSL\n *\n * @param {string} fieldName - The name of the field you are building a rule for\n * @param {string} fieldDataType - The type of data this field holds\n * @param {string} value - The value of this rule\n * @param {string} operator - The condition on how the value is matched\n * @param {string} syntax - The version of ElasticSearch syntax to generate\n * @returns {object} - The ES rule\n * @private\n */\nfunction buildEsRule(fieldName, value, operator, config, valueSrc, syntax) {\n if (!fieldName || !operator || value == undefined) return undefined; // rule is not fully entered\n var op = operator;\n var opConfig = config.operators[op];\n if (!opConfig) return undefined; // unknown operator\n var _opConfig = opConfig,\n elasticSearchQueryType = _opConfig.elasticSearchQueryType;\n\n // not\n var not = false;\n if (!elasticSearchQueryType && opConfig.reversedOp) {\n not = true;\n op = opConfig.reversedOp;\n opConfig = config.operators[op];\n var _opConfig2 = opConfig;\n elasticSearchQueryType = _opConfig2.elasticSearchQueryType;\n }\n\n // handle if value 0 has multiple values like a select in a array\n var widget = getWidgetForFieldOp(config, fieldName, op, valueSrc);\n var widgetConfig = config.widgets[widget];\n if (!widgetConfig) return undefined; // unknown widget\n var elasticSearchFormatValue = widgetConfig.elasticSearchFormatValue;\n\n /** In most cases the queryType will be static however in some casese (like between) the query type will change\n * based on the data type. i.e. a between time will be different than between number, date, letters etc... */\n var queryType;\n if (typeof elasticSearchQueryType === \"function\") {\n queryType = elasticSearchQueryType(widget);\n } else {\n queryType = elasticSearchQueryType;\n }\n if (!queryType) {\n // Not supported\n return undefined;\n }\n\n /** If a widget has a rule on how to format that data then use that otherwise use default way of determineing search parameters\n * */\n var parameters;\n if (typeof elasticSearchFormatValue === \"function\") {\n parameters = elasticSearchFormatValue(queryType, value, op, fieldName, config);\n } else {\n parameters = buildParameters(queryType, value, op, fieldName, config, syntax);\n }\n if (not) {\n return {\n bool: {\n must_not: _defineProperty({}, queryType, _objectSpread({}, parameters))\n }\n };\n } else {\n return _defineProperty({}, queryType, _objectSpread({}, parameters));\n }\n}\n\n/**\n * Handles the building of the group portion of the DSL\n *\n * @param {object} children - The contents of the group\n * @param {string} conjunction - The way the contents of the group are joined together i.e. AND OR\n * @param {bool} not\n * @param {Function} recursiveFxn - The recursive fxn to build the contents of the groups children\n * @private\n * @returns {object} - The ES group\n */\nfunction buildEsGroup(children, conjunction, not, recursiveFxn, config, syntax) {\n if (!children || !children.size) return undefined;\n var childrenArray = children.valueSeq().toArray();\n var occurrence = determineOccurrence(conjunction, not);\n var result = childrenArray.map(function (c) {\n return recursiveFxn(c, config, syntax);\n }).filter(function (v) {\n return v !== undefined;\n });\n if (!result.length) return undefined;\n var resultFlat = result.flat(Infinity);\n return {\n bool: _defineProperty({}, occurrence, resultFlat)\n };\n}\nexport var ES_7_SYNTAX = \"ES_7_SYNTAX\";\nexport var ES_6_SYNTAX = \"ES_6_SYNTAX\";\nexport function elasticSearchFormat(tree, config) {\n var syntax = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ES_6_SYNTAX;\n // -- format the es dsl here\n if (!tree) return undefined;\n var type = tree.get(\"type\");\n var properties = tree.get(\"properties\") || new Map();\n if (type === \"rule\" && properties.get(\"field\")) {\n var _properties$get, _properties$get2;\n // -- field is null when a new blank rule is added\n var operator = properties.get(\"operator\");\n var field = properties.get(\"field\");\n var fieldSrc = properties.get(\"fieldSrc\");\n var value = properties.get(\"value\").toJS();\n var _valueType = (_properties$get = properties.get(\"valueType\")) === null || _properties$get === void 0 ? void 0 : _properties$get.get(0);\n var valueSrc = (_properties$get2 = properties.get(\"valueSrc\")) === null || _properties$get2 === void 0 ? void 0 : _properties$get2.get(0);\n if (valueSrc === \"func\" || fieldSrc == \"func\") {\n // -- elastic search doesn't support functions (that is post processing)\n return;\n }\n if (value && Array.isArray(value[0])) {\n //TODO : Handle case where the value has multiple values such as in the case of a list\n return value[0].map(function (val) {\n return buildEsRule(field, [val], operator, config, valueSrc, syntax);\n });\n } else {\n return buildEsRule(field, value, operator, config, valueSrc, syntax);\n }\n }\n if (type === \"group\" || type === \"rule_group\") {\n var not = properties.get(\"not\");\n var conjunction = properties.get(\"conjunction\");\n if (!conjunction) conjunction = defaultConjunction(config);\n var children = tree.get(\"children1\");\n return buildEsGroup(children, conjunction, not, elasticSearchFormat, config, syntax);\n }\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nvar _excluded = [\"title\", \"value\", \"disabled\", \"groupTitle\", \"grouplabel\", \"renderTitle\", \"children\", \"label\", \"isCustom\", \"isHidden\"];\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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; } } }; }\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); }\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; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\nimport { sleep } from \"./stuff\";\nimport { listValuesToArray, getListValue, makeCustomListValue } from \"./listValues\";\n\n// simple polyfill for Next\nvar findLastIndex = function findLastIndex(arr, fn) {\n if (arr.findLastIndex) {\n return arr.findLastIndex(fn);\n } else {\n var ind = _toConsumableArray(arr).reverse().findIndex(fn);\n return ind == -1 ? -1 : arr.length - 1 - ind;\n }\n};\nexport var simulateAsyncFetch = function simulateAsyncFetch(all) {\n var cPageSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;\n return /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(search, offset, meta) {\n var pageSize, filtered, pages, currentOffset, currentPage, values, newOffset, hasMore;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n pageSize = (meta === null || meta === void 0 ? void 0 : meta.pageSize) != undefined ? meta.pageSize : cPageSize;\n filtered = listValuesToArray(all).filter(function (_ref2) {\n var title = _ref2.title,\n value = _ref2.value;\n return search == null ? true : title.toUpperCase().indexOf(search.toUpperCase()) != -1 || \"\".concat(value).toUpperCase().indexOf(search.toUpperCase()) != -1;\n });\n pages = pageSize ? Math.ceil(filtered.length / pageSize) : 0;\n currentOffset = offset || 0;\n currentPage = pageSize ? Math.ceil(currentOffset / pageSize) : null;\n values = pageSize ? filtered.slice(currentOffset, currentOffset + pageSize) : filtered;\n newOffset = pageSize ? currentOffset + values.length : null;\n hasMore = pageSize ? newOffset < filtered.length : false;\n if (!delay) {\n _context.next = 11;\n break;\n }\n _context.next = 11;\n return sleep(delay);\n case 11:\n return _context.abrupt(\"return\", {\n values: values,\n hasMore: hasMore\n });\n case 12:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n }();\n};\nexport var mergeListValues = function mergeListValues(values, newValues) {\n var toStart = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var hideNewValues = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (!newValues) return values;\n var old = values || [];\n var newFiltered = newValues.filter(function (v) {\n return old.find(function (av) {\n return \"\" + av.value == \"\" + v.value;\n }) == undefined;\n }).map(function (v) {\n return hideNewValues ? _objectSpread(_objectSpread({}, v), {}, {\n isHidden: true\n }) : v;\n });\n var merged = toStart ? [].concat(_toConsumableArray(newFiltered), _toConsumableArray(old)) : [].concat(_toConsumableArray(old), _toConsumableArray(newFiltered));\n return merged;\n};\nexport var optionToListValue = function optionToListValue(val, listValues, allowCustomValues) {\n var _val$value;\n var v = val == null || val == \"\" ? undefined : (_val$value = val === null || val === void 0 ? void 0 : val.value) !== null && _val$value !== void 0 ? _val$value : val;\n var item = getListValue(v, listValues);\n var customItem = allowCustomValues && !item ? makeCustomListValue(v) : undefined;\n var listValue = item || customItem;\n var lvs = listValue ? [listValue] : undefined; //not allow []\n return [v, lvs];\n};\nexport var optionsToListValues = function optionsToListValues(vals, listValues, allowCustomValues) {\n var newSelectedListValues = vals.map(function (val, _i) {\n var _val$value2;\n var v = val == null || val == \"\" ? undefined : (_val$value2 = val === null || val === void 0 ? void 0 : val.value) !== null && _val$value2 !== void 0 ? _val$value2 : val;\n var item = getListValue(v, listValues);\n var customItem = allowCustomValues && !item ? makeCustomListValue(v) : undefined;\n var listValue = item || customItem;\n return listValue;\n }).filter(function (o) {\n return o != undefined;\n });\n var newSelectedValues = newSelectedListValues.map(function (o) {\n var _o$value;\n return (_o$value = o === null || o === void 0 ? void 0 : o.value) !== null && _o$value !== void 0 ? _o$value : o;\n });\n if (!newSelectedValues.length) newSelectedValues = undefined; //not allow []\n return [newSelectedValues, newSelectedListValues];\n};\nexport var listValueToOption = function listValueToOption(lv) {\n if (lv == null) return null;\n var title = lv.title,\n value = lv.value,\n disabled = lv.disabled,\n groupTitle = lv.groupTitle,\n grouplabel = lv.grouplabel,\n renderTitle = lv.renderTitle,\n children = lv.children,\n label = lv.label,\n isCustom = lv.isCustom,\n isHidden = lv.isHidden,\n rest = _objectWithoutProperties(lv, _excluded);\n var option = {\n value: value,\n title: title || label || children // fix issue #930 for AntD\n };\n\n if (disabled) option.disabled = disabled;\n if (isCustom) option.isCustom = isCustom;\n if (isHidden) option.isHidden = isHidden;\n // group\n if (groupTitle || grouplabel) option.groupTitle = groupTitle || grouplabel;\n // used only for MUI field autocomplete (if matchesType, render as bold)\n if (renderTitle) option.renderTitle = renderTitle;\n option = _objectSpread(_objectSpread({}, option), rest);\n return option;\n};\nexport var fixListValuesGroupOrder = function fixListValuesGroupOrder(listValues) {\n var newValues = [];\n var groupTitles = [];\n var _iterator = _createForOfIteratorHelper(listValues),\n _step;\n try {\n var _loop = function _loop() {\n var lv = _step.value;\n var i = findLastIndex(newValues, function (lv1) {\n var _lv1$groupTitle, _lv$groupTitle;\n return ((_lv1$groupTitle = lv1.groupTitle) !== null && _lv1$groupTitle !== void 0 ? _lv1$groupTitle : \"\") == ((_lv$groupTitle = lv.groupTitle) !== null && _lv$groupTitle !== void 0 ? _lv$groupTitle : \"\");\n });\n if (lv.groupTitle != undefined && !groupTitles.includes(lv.groupTitle)) {\n groupTitles.push(lv.groupTitle);\n if (groupTitles.length === 1) {\n // fix empty groupTitles\n newValues = newValues.map(function (nv) {\n return _objectSpread(_objectSpread({}, nv), {}, {\n groupTitle: \"\"\n });\n });\n }\n }\n if (lv.groupTitle == undefined && groupTitles.length) {\n // fix empty groupTitle\n lv = _objectSpread(_objectSpread({}, lv), {}, {\n groupTitle: \"\"\n });\n }\n if (i != -1) {\n newValues.splice(i + 1, 0, lv);\n } else {\n newValues.push(lv);\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return newValues;\n};\nexport { getListValue };","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\n//import { customJsonLogicOperations } from \"../utils/jsonLogic\";\n\n// Tip: search for `customJsonLogicOperations` in codebase to see custom JL funcs we use in `jsonLogicCustomOps`\n\nvar NOW = {\n label: \"Now\",\n returnType: \"datetime\",\n jsonLogic: \"now\",\n jsonLogicCustomOps: {\n now: {}\n },\n //spelFunc: \"new java.util.Date()\",\n spelFunc: \"T(java.time.LocalDateTime).now()\",\n sqlFormatFunc: function sqlFormatFunc() {\n return \"NOW()\";\n },\n mongoFormatFunc: function mongoFormatFunc() {\n return new Date();\n },\n formatFunc: function formatFunc() {\n return \"NOW\";\n }\n};\nvar RELATIVE_DATETIME = {\n label: \"Relative\",\n returnType: \"datetime\",\n renderBrackets: [\"\", \"\"],\n renderSeps: [\"\", \"\", \"\"],\n spelFormatFunc: function spelFormatFunc(_ref) {\n var date = _ref.date,\n op = _ref.op,\n val = _ref.val,\n dim = _ref.dim;\n var dimPlural = dim.charAt(0).toUpperCase() + dim.slice(1) + \"s\";\n var method = op + dimPlural;\n return \"\".concat(date, \".\").concat(method, \"(\").concat(val, \")\");\n },\n spelImport: function spelImport(spel) {\n var _spel$methodName;\n var date, op, val, dim;\n var matchRes = (_spel$methodName = spel.methodName) === null || _spel$methodName === void 0 ? void 0 : _spel$methodName.match(/^(minus|plus)(\\w+)s$/);\n if (matchRes) {\n dim = matchRes[2].toLowerCase();\n op = matchRes[1];\n if ([\"minus\", \"plus\"].includes(op)) {\n if ([\"day\", \"week\", \"month\", \"year\"].includes(dim)) {\n op = {\n type: \"string\",\n val: op\n };\n dim = {\n type: \"string\",\n val: dim\n };\n val = spel.args[0];\n date = spel.obj;\n return {\n date: date,\n op: op,\n val: val,\n dim: dim\n };\n }\n }\n }\n },\n jsonLogic: function jsonLogic(_ref2) {\n var date = _ref2.date,\n op = _ref2.op,\n val = _ref2.val,\n dim = _ref2.dim;\n return {\n \"date_add\": [date, val * (op == \"minus\" ? -1 : +1), dim]\n };\n },\n jsonLogicImport: function jsonLogicImport(v) {\n var date = v[\"date_add\"][0];\n var val = Math.abs(v[\"date_add\"][1]);\n var op = v[\"date_add\"][1] >= 0 ? \"plus\" : \"minus\";\n var dim = v[\"date_add\"][2];\n return [date, op, val, dim];\n },\n jsonLogicCustomOps: {\n date_add: {}\n },\n // MySQL\n //todo: other SQL dialects?\n sqlFormatFunc: function sqlFormatFunc(_ref3) {\n var date = _ref3.date,\n op = _ref3.op,\n val = _ref3.val,\n dim = _ref3.dim;\n return \"DATE_ADD(\".concat(date, \", INTERVAL \").concat(parseInt(val) * (op == \"minus\" ? -1 : +1), \" \").concat(dim.replace(/^'|'$/g, \"\"), \")\");\n },\n mongoFormatFunc: null,\n //todo: support?\n formatFunc: function formatFunc(_ref4) {\n var date = _ref4.date,\n op = _ref4.op,\n val = _ref4.val,\n dim = _ref4.dim;\n return !val ? date : \"\".concat(date, \" \").concat(op == \"minus\" ? \"-\" : \"+\", \" \").concat(val, \" \").concat(dim);\n },\n args: {\n date: {\n label: \"Date\",\n type: \"datetime\",\n defaultValue: {\n func: \"NOW\",\n args: []\n },\n valueSources: [\"func\", \"field\", \"value\"],\n spelEscapeForFormat: true\n },\n op: {\n label: \"Op\",\n type: \"select\",\n defaultValue: \"plus\",\n valueSources: [\"value\"],\n mainWidgetProps: {\n customProps: {\n showSearch: false\n }\n },\n fieldSettings: {\n listValues: {\n plus: \"+\",\n minus: \"-\"\n }\n },\n spelEscapeForFormat: false\n },\n val: {\n label: \"Value\",\n type: \"number\",\n fieldSettings: {\n min: 0\n },\n defaultValue: 0,\n valueSources: [\"value\"],\n spelEscapeForFormat: false\n },\n dim: {\n label: \"Dimension\",\n type: \"select\",\n defaultValue: \"day\",\n valueSources: [\"value\"],\n mainWidgetProps: {\n customProps: {\n showSearch: false\n }\n },\n fieldSettings: {\n listValues: {\n day: \"day\",\n week: \"week\",\n month: \"month\",\n year: \"year\"\n }\n },\n spelEscapeForFormat: false\n }\n }\n};\nvar LOWER = {\n label: \"Lowercase\",\n mongoFunc: \"$toLower\",\n jsonLogic: \"toLowerCase\",\n spelFunc: \"${str}.toLowerCase()\",\n //jsonLogicIsMethod: true, // Removed in JsonLogic 2.x due to Prototype Pollution\n jsonLogicCustomOps: {\n toLowerCase: {}\n },\n returnType: \"text\",\n args: {\n str: {\n label: \"String\",\n type: \"text\",\n valueSources: [\"value\", \"field\", \"func\"]\n }\n }\n};\nvar UPPER = {\n label: \"Uppercase\",\n mongoFunc: \"$toUpper\",\n jsonLogic: \"toUpperCase\",\n spelFunc: \"${str}.toUpperCase()\",\n //jsonLogicIsMethod: true, // Removed in JsonLogic 2.x due to Prototype Pollution\n jsonLogicCustomOps: {\n toUpperCase: {}\n },\n returnType: \"text\",\n args: {\n str: {\n label: \"String\",\n type: \"text\",\n valueSources: [\"value\", \"field\", \"func\"]\n }\n }\n};\nvar LINEAR_REGRESSION = {\n label: \"Linear regression\",\n returnType: \"number\",\n formatFunc: function formatFunc(_ref5, _) {\n var coef = _ref5.coef,\n bias = _ref5.bias,\n val = _ref5.val;\n return \"(\".concat(coef, \" * \").concat(val, \" + \").concat(bias, \")\");\n },\n sqlFormatFunc: function sqlFormatFunc(_ref6) {\n var coef = _ref6.coef,\n bias = _ref6.bias,\n val = _ref6.val;\n return \"(\".concat(coef, \" * \").concat(val, \" + \").concat(bias, \")\");\n },\n spelFormatFunc: function spelFormatFunc(_ref7) {\n var coef = _ref7.coef,\n bias = _ref7.bias,\n val = _ref7.val;\n return \"(\".concat(coef, \" * \").concat(val, \" + \").concat(bias, \")\");\n },\n spelImport: function spelImport(spel) {\n var coef, val, bias, a;\n if (spel.type === \"op-plus\") {\n var _spel$children = _slicedToArray(spel.children, 2);\n a = _spel$children[0];\n bias = _spel$children[1];\n if (a.type === \"op-multiply\") {\n var _a$children = _slicedToArray(a.children, 2);\n coef = _a$children[0];\n val = _a$children[1];\n return {\n coef: coef,\n val: val,\n bias: bias\n };\n }\n }\n },\n mongoFormatFunc: function mongoFormatFunc(_ref8) {\n var coef = _ref8.coef,\n bias = _ref8.bias,\n val = _ref8.val;\n return {\n \"$sum\": [{\n \"$multiply\": [coef, val]\n }, bias]\n };\n },\n jsonLogic: function jsonLogic(_ref9) {\n var coef = _ref9.coef,\n bias = _ref9.bias,\n val = _ref9.val;\n return {\n \"+\": [{\n \"*\": [coef, val]\n }, bias]\n };\n },\n jsonLogicImport: function jsonLogicImport(v) {\n var coef = v[\"+\"][0][\"*\"][0];\n var val = v[\"+\"][0][\"*\"][1];\n var bias = v[\"+\"][1];\n return [coef, val, bias];\n },\n renderBrackets: [\"\", \"\"],\n renderSeps: [\" * \", \" + \"],\n args: {\n coef: {\n label: \"Coef\",\n type: \"number\",\n defaultValue: 1,\n valueSources: [\"value\"]\n },\n val: {\n label: \"Value\",\n type: \"number\",\n valueSources: [\"value\", \"field\"]\n },\n bias: {\n label: \"Bias\",\n type: \"number\",\n defaultValue: 0,\n valueSources: [\"value\"]\n }\n }\n};\nexport { LOWER, UPPER, NOW, RELATIVE_DATETIME, LINEAR_REGRESSION };","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport moment from \"moment\";\nimport { SqlString, sqlEmptyValue, mongoEmptyValue, spelEscape, spelFixList, stringifyForDisplay } from \"../utils/export\";\nimport { escapeRegExp } from \"../utils/stuff\";\nimport { getTitleInListValues } from \"../utils/listValues\";\n\n// helpers for mongo format\nexport var mongoFormatOp1 = function mongoFormatOp1(mop, mc, not, field, _op, value, useExpr, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n var $field = typeof field == \"string\" && !field.startsWith(\"$\") ? \"$\" + field : field;\n var mv = mc(value, fieldDef);\n if (mv === undefined) return undefined;\n if (not) {\n if (!useExpr && (!mop || mop == \"$eq\")) return _defineProperty({}, field, {\n \"$ne\": mv\n }); // short form\n return !useExpr ? _defineProperty({}, field, {\n \"$not\": _defineProperty({}, mop, mv)\n }) : {\n \"$not\": _defineProperty({}, mop, [$field, mv])\n };\n } else {\n if (!useExpr && (!mop || mop == \"$eq\")) return _defineProperty({}, field, mv); // short form\n return !useExpr ? _defineProperty({}, field, _defineProperty({}, mop, mv)) : _defineProperty({}, mop, [$field, mv]);\n }\n};\nexport var mongoFormatOp2 = function mongoFormatOp2(mops, not, field, _op, values, useExpr, valueSrcs, valueTypes, opDef, operatorOptions, fieldDef) {\n var $field = typeof field == \"string\" && !field.startsWith(\"$\") ? \"$\" + field : field;\n if (not) {\n var _$not3;\n return !useExpr ? _defineProperty({}, field, {\n \"$not\": (_$not3 = {}, _defineProperty(_$not3, mops[0], values[0]), _defineProperty(_$not3, mops[1], values[1]), _$not3)\n }) : {\n \"$not\": {\n \"$and\": [_defineProperty({}, mops[0], [$field, values[0]]), _defineProperty({}, mops[1], [$field, values[1]])]\n }\n };\n } else {\n var _field2;\n return !useExpr ? _defineProperty({}, field, (_field2 = {}, _defineProperty(_field2, mops[0], values[0]), _defineProperty(_field2, mops[1], values[1]), _field2)) : {\n \"$and\": [_defineProperty({}, mops[0], [$field, values[0]]), _defineProperty({}, mops[1], [$field, values[1]])]\n };\n }\n};\nvar ctx = {\n utils: {\n SqlString: SqlString,\n moment: moment,\n mongoFormatOp1: mongoFormatOp1,\n mongoFormatOp2: mongoFormatOp2,\n mongoEmptyValue: mongoEmptyValue,\n escapeRegExp: escapeRegExp,\n sqlEmptyValue: sqlEmptyValue,\n stringifyForDisplay: stringifyForDisplay,\n getTitleInListValues: getTitleInListValues,\n spelEscape: spelEscape,\n spelFixList: spelFixList\n }\n};\nexport default ctx;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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; } } }; }\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); }\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; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { settings as defaultSettings } from \"./default\";\nimport ctx from \"./ctx\";\n\n//---------------------------- conjunctions\n\nvar conjunctions = {\n AND: {\n label: \"And\",\n mongoConj: \"$and\",\n jsonLogicConj: \"and\",\n sqlConj: \"AND\",\n spelConj: \"and\",\n spelConjs: [\"and\", \"&&\"],\n reversedConj: \"OR\",\n formatConj: function formatConj(children, conj, not, isForDisplay) {\n return children.size > 1 ? (not ? \"NOT \" : \"\") + \"(\" + children.join(\" \" + (isForDisplay ? \"AND\" : \"&&\") + \" \") + \")\" : (not ? \"NOT (\" : \"\") + children.first() + (not ? \")\" : \"\");\n },\n sqlFormatConj: function sqlFormatConj(children, conj, not) {\n return children.size > 1 ? (not ? \"NOT \" : \"\") + \"(\" + children.join(\" \" + \"AND\" + \" \") + \")\" : (not ? \"NOT (\" : \"\") + children.first() + (not ? \")\" : \"\");\n },\n spelFormatConj: function spelFormatConj(children, conj, not, omitBrackets) {\n if (not) omitBrackets = false;\n return children.size > 1 ? (not ? \"!\" : \"\") + (omitBrackets ? \"\" : \"(\") + children.join(\" \" + \"&&\" + \" \") + (omitBrackets ? \"\" : \")\") : (not ? \"!(\" : \"\") + children.first() + (not ? \")\" : \"\");\n }\n },\n OR: {\n label: \"Or\",\n mongoConj: \"$or\",\n jsonLogicConj: \"or\",\n sqlConj: \"OR\",\n spelConj: \"or\",\n spelConjs: [\"or\", \"||\"],\n reversedConj: \"AND\",\n formatConj: function formatConj(children, conj, not, isForDisplay) {\n return children.size > 1 ? (not ? \"NOT \" : \"\") + \"(\" + children.join(\" \" + (isForDisplay ? \"OR\" : \"||\") + \" \") + \")\" : (not ? \"NOT (\" : \"\") + children.first() + (not ? \")\" : \"\");\n },\n sqlFormatConj: function sqlFormatConj(children, conj, not) {\n return children.size > 1 ? (not ? \"NOT \" : \"\") + \"(\" + children.join(\" \" + \"OR\" + \" \") + \")\" : (not ? \"NOT (\" : \"\") + children.first() + (not ? \")\" : \"\");\n },\n spelFormatConj: function spelFormatConj(children, conj, not, omitBrackets) {\n if (not) omitBrackets = false;\n return children.size > 1 ? (not ? \"!\" : \"\") + (omitBrackets ? \"\" : \"(\") + children.join(\" \" + \"||\" + \" \") + (omitBrackets ? \"\" : \")\") : (not ? \"!(\" : \"\") + children.first() + (not ? \")\" : \"\");\n }\n }\n};\n\n//---------------------------- operators\n\nvar operators = {\n equal: {\n label: \"==\",\n labelForFormat: \"==\",\n sqlOp: \"=\",\n spelOp: \"==\",\n spelOps: [\"==\", \"eq\"],\n reversedOp: \"not_equal\",\n formatOp: function formatOp(field, op, value, valueSrcs, valueTypes, opDef, operatorOptions, isForDisplay, fieldDef) {\n var opStr = isForDisplay ? \"=\" : opDef.label;\n if (valueTypes == \"boolean\" && isForDisplay) return value == \"No\" ? \"NOT \".concat(field) : \"\".concat(field);else return \"\".concat(field, \" \").concat(opStr, \" \").concat(value);\n },\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_this$utils = this.utils).mongoFormatOp1.apply(_this$utils, [\"$eq\", function (v) {\n return v;\n }, false].concat(args));\n },\n jsonLogic: \"==\",\n elasticSearchQueryType: \"term\"\n },\n not_equal: {\n isNotOp: true,\n label: \"!=\",\n labelForFormat: \"!=\",\n sqlOp: \"<>\",\n spelOp: \"!=\",\n spelOps: [\"!=\", \"ne\"],\n reversedOp: \"equal\",\n formatOp: function formatOp(field, op, value, valueSrcs, valueTypes, opDef, operatorOptions, isForDisplay, fieldDef) {\n if (valueTypes == \"boolean\" && isForDisplay) return value == \"No\" ? \"\".concat(field) : \"NOT \".concat(field);else return \"\".concat(field, \" \").concat(opDef.label, \" \").concat(value);\n },\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils2;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return (_this$utils2 = this.utils).mongoFormatOp1.apply(_this$utils2, [\"$ne\", function (v) {\n return v;\n }, false].concat(args));\n },\n jsonLogic: \"!=\"\n },\n less: {\n label: \"<\",\n labelForFormat: \"<\",\n sqlOp: \"<\",\n spelOp: \"<\",\n spelOps: [\"<\", \"lt\"],\n reversedOp: \"greater_or_equal\",\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils3;\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return (_this$utils3 = this.utils).mongoFormatOp1.apply(_this$utils3, [\"$lt\", function (v) {\n return v;\n }, false].concat(args));\n },\n jsonLogic: \"<\",\n elasticSearchQueryType: \"range\"\n },\n less_or_equal: {\n label: \"<=\",\n labelForFormat: \"<=\",\n sqlOp: \"<=\",\n spelOp: \"<=\",\n spelOps: [\"<=\", \"le\"],\n reversedOp: \"greater\",\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils4;\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return (_this$utils4 = this.utils).mongoFormatOp1.apply(_this$utils4, [\"$lte\", function (v) {\n return v;\n }, false].concat(args));\n },\n jsonLogic: \"<=\",\n elasticSearchQueryType: \"range\"\n },\n greater: {\n label: \">\",\n labelForFormat: \">\",\n sqlOp: \">\",\n spelOp: \">\",\n spelOps: [\">\", \"gt\"],\n reversedOp: \"less_or_equal\",\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils5;\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n return (_this$utils5 = this.utils).mongoFormatOp1.apply(_this$utils5, [\"$gt\", function (v) {\n return v;\n }, false].concat(args));\n },\n jsonLogic: \">\",\n elasticSearchQueryType: \"range\"\n },\n greater_or_equal: {\n label: \">=\",\n labelForFormat: \">=\",\n sqlOp: \">=\",\n spelOp: \">=\",\n spelOps: [\">=\", \"ge\"],\n reversedOp: \"less\",\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils6;\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n return (_this$utils6 = this.utils).mongoFormatOp1.apply(_this$utils6, [\"$gte\", function (v) {\n return v;\n }, false].concat(args));\n },\n jsonLogic: \">=\",\n elasticSearchQueryType: \"range\"\n },\n like: {\n label: \"Contains\",\n labelForFormat: \"Contains\",\n reversedOp: \"not_like\",\n sqlOp: \"LIKE\",\n spelOp: \"${0}.contains(${1})\",\n valueTypes: [\"text\"],\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils7,\n _this = this;\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n return (_this$utils7 = this.utils).mongoFormatOp1.apply(_this$utils7, [\"$regex\", function (v) {\n return typeof v == \"string\" ? _this.utils.escapeRegExp(v) : undefined;\n }, false].concat(args));\n },\n //jsonLogic: (field, op, val) => ({ \"in\": [val, field] }),\n jsonLogic: \"in\",\n _jsonLogicIsRevArgs: true,\n valueSources: [\"value\"],\n elasticSearchQueryType: \"regexp\"\n },\n not_like: {\n isNotOp: true,\n label: \"Not contains\",\n reversedOp: \"like\",\n labelForFormat: \"Not Contains\",\n sqlOp: \"NOT LIKE\",\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils8,\n _this2 = this;\n for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n args[_key8] = arguments[_key8];\n }\n return (_this$utils8 = this.utils).mongoFormatOp1.apply(_this$utils8, [\"$regex\", function (v) {\n return typeof v == \"string\" ? _this2.utils.escapeRegExp(v) : undefined;\n }, true].concat(args));\n },\n valueSources: [\"value\"]\n },\n starts_with: {\n label: \"Starts with\",\n labelForFormat: \"Starts with\",\n sqlOp: \"LIKE\",\n spelOp: \"${0}.startsWith(${1})\",\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils9,\n _this3 = this;\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n return (_this$utils9 = this.utils).mongoFormatOp1.apply(_this$utils9, [\"$regex\", function (v) {\n return typeof v == \"string\" ? \"^\" + _this3.utils.escapeRegExp(v) : undefined;\n }, false].concat(args));\n },\n jsonLogic: undefined,\n // not supported\n valueSources: [\"value\"]\n },\n ends_with: {\n label: \"Ends with\",\n labelForFormat: \"Ends with\",\n sqlOp: \"LIKE\",\n spelOp: \"${0}.endsWith(${1})\",\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils10,\n _this4 = this;\n for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n args[_key10] = arguments[_key10];\n }\n return (_this$utils10 = this.utils).mongoFormatOp1.apply(_this$utils10, [\"$regex\", function (v) {\n return typeof v == \"string\" ? _this4.utils.escapeRegExp(v) + \"$\" : undefined;\n }, false].concat(args));\n },\n jsonLogic: undefined,\n // not supported\n valueSources: [\"value\"]\n },\n between: {\n label: \"Between\",\n labelForFormat: \"BETWEEN\",\n sqlOp: \"BETWEEN\",\n cardinality: 2,\n formatOp: function formatOp(field, op, values, valueSrcs, valueTypes, opDef, operatorOptions, isForDisplay) {\n var valFrom = values.first();\n var valTo = values.get(1);\n if (isForDisplay) return \"\".concat(field, \" BETWEEN \").concat(valFrom, \" AND \").concat(valTo);else return \"\".concat(field, \" >= \").concat(valFrom, \" && \").concat(field, \" <= \").concat(valTo);\n },\n spelFormatOp: function spelFormatOp(field, op, values, valueSrc, valueTypes, opDef, operatorOptions, fieldDef) {\n var valFrom = values[0];\n var valTo = values[1];\n return \"\".concat(field, \" >= \").concat(valFrom, \" && \").concat(field, \" <= \").concat(valTo);\n },\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils11;\n for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {\n args[_key11] = arguments[_key11];\n }\n return (_this$utils11 = this.utils).mongoFormatOp2.apply(_this$utils11, [[\"$gte\", \"$lte\"], false].concat(args));\n },\n valueLabels: [\"Value from\", \"Value to\"],\n textSeparators: [null, \"and\"],\n reversedOp: \"not_between\",\n jsonLogic: \"<=\",\n validateValues: function validateValues(values) {\n if (values[0] != undefined && values[1] != undefined) {\n return values[0] <= values[1] ? null : \"Invalid range\";\n }\n return null;\n },\n elasticSearchQueryType: function elasticSearchQueryType(type) {\n return type === \"time\" ? \"filter\" : \"range\";\n }\n },\n not_between: {\n isNotOp: true,\n label: \"Not between\",\n labelForFormat: \"NOT BETWEEN\",\n sqlOp: \"NOT BETWEEN\",\n cardinality: 2,\n formatOp: function formatOp(field, op, values, valueSrcs, valueTypes, opDef, operatorOptions, isForDisplay) {\n var valFrom = values.first();\n var valTo = values.get(1);\n if (isForDisplay) return \"\".concat(field, \" NOT BETWEEN \").concat(valFrom, \" AND \").concat(valTo);else return \"(\".concat(field, \" < \").concat(valFrom, \" || \").concat(field, \" > \").concat(valTo, \")\");\n },\n spelFormatOp: function spelFormatOp(field, op, values, valueSrc, valueTypes, opDef, operatorOptions, fieldDef) {\n var valFrom = values[0];\n var valTo = values[1];\n return \"(\".concat(field, \" < \").concat(valFrom, \" || \").concat(field, \" > \").concat(valTo, \")\");\n },\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils12;\n for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {\n args[_key12] = arguments[_key12];\n }\n return (_this$utils12 = this.utils).mongoFormatOp2.apply(_this$utils12, [[\"$gte\", \"$lte\"], true].concat(args));\n },\n valueLabels: [\"Value from\", \"Value to\"],\n textSeparators: [null, \"and\"],\n reversedOp: \"between\",\n validateValues: function validateValues(values) {\n if (values[0] != undefined && values[1] != undefined) {\n return values[0] <= values[1] ? null : \"Invalid range\";\n }\n return null;\n }\n },\n is_empty: {\n label: \"Is empty\",\n labelForFormat: \"IS EMPTY\",\n cardinality: 0,\n reversedOp: \"is_not_empty\",\n formatOp: function formatOp(field, op, value, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n return isForDisplay ? \"\".concat(field, \" IS EMPTY\") : \"!\".concat(field);\n },\n sqlFormatOp: function sqlFormatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n var empty = this.utils.sqlEmptyValue(fieldDef);\n return \"COALESCE(\".concat(field, \", \").concat(empty, \") = \").concat(empty);\n },\n spelFormatOp: function spelFormatOp(field, op, values, valueSrc, valueTypes, opDef, operatorOptions, fieldDef) {\n //tip: is empty or null\n return \"\".concat(field, \" <= ''\");\n },\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils13,\n _this5 = this;\n for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {\n args[_key13] = arguments[_key13];\n }\n return (_this$utils13 = this.utils).mongoFormatOp1.apply(_this$utils13, [\"$in\", function (v, fieldDef) {\n return [_this5.utils.mongoEmptyValue(fieldDef), null];\n }, false].concat(args));\n },\n jsonLogic: \"!\"\n },\n is_not_empty: {\n isNotOp: true,\n label: \"Is not empty\",\n labelForFormat: \"IS NOT EMPTY\",\n cardinality: 0,\n reversedOp: \"is_empty\",\n formatOp: function formatOp(field, op, value, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n return isForDisplay ? \"\".concat(field, \" IS NOT EMPTY\") : \"!!\".concat(field);\n },\n sqlFormatOp: function sqlFormatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n var empty = this.utils.sqlEmptyValue(fieldDef);\n return \"COALESCE(\".concat(field, \", \").concat(empty, \") <> \").concat(empty);\n },\n spelFormatOp: function spelFormatOp(field, op, values, valueSrc, valueTypes, opDef, operatorOptions, fieldDef) {\n //tip: is not empty and not null\n return \"\".concat(field, \" > ''\");\n },\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils14,\n _this6 = this;\n for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {\n args[_key14] = arguments[_key14];\n }\n return (_this$utils14 = this.utils).mongoFormatOp1.apply(_this$utils14, [\"$nin\", function (v, fieldDef) {\n return [_this6.utils.mongoEmptyValue(fieldDef), null];\n }, false].concat(args));\n },\n jsonLogic: \"!!\",\n elasticSearchQueryType: \"exists\"\n },\n is_null: {\n label: \"Is null\",\n labelForFormat: \"IS NULL\",\n sqlOp: \"IS NULL\",\n cardinality: 0,\n reversedOp: \"is_not_null\",\n formatOp: function formatOp(field, op, value, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n return isForDisplay ? \"\".concat(field, \" IS NULL\") : \"!\".concat(field);\n },\n spelFormatOp: function spelFormatOp(field, op, values, valueSrc, valueTypes, opDef, operatorOptions, fieldDef) {\n return \"\".concat(field, \" == null\");\n },\n // check if value is null OR not exists\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils15;\n for (var _len15 = arguments.length, args = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {\n args[_key15] = arguments[_key15];\n }\n return (_this$utils15 = this.utils).mongoFormatOp1.apply(_this$utils15, [\"$eq\", function (v) {\n return null;\n }, false].concat(args));\n },\n jsonLogic: \"==\"\n },\n is_not_null: {\n label: \"Is not null\",\n labelForFormat: \"IS NOT NULL\",\n sqlOp: \"IS NOT NULL\",\n cardinality: 0,\n reversedOp: \"is_null\",\n formatOp: function formatOp(field, op, value, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n return isForDisplay ? \"\".concat(field, \" IS NOT NULL\") : \"!!\".concat(field);\n },\n spelFormatOp: function spelFormatOp(field, op, values, valueSrc, valueTypes, opDef, operatorOptions, fieldDef) {\n return \"\".concat(field, \" != null\");\n },\n // check if value exists and is not null\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils16;\n for (var _len16 = arguments.length, args = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {\n args[_key16] = arguments[_key16];\n }\n return (_this$utils16 = this.utils).mongoFormatOp1.apply(_this$utils16, [\"$ne\", function (v) {\n return null;\n }, false].concat(args));\n },\n jsonLogic: \"!=\",\n elasticSearchQueryType: \"exists\"\n },\n select_equals: {\n label: \"==\",\n labelForFormat: \"==\",\n sqlOp: \"=\",\n // enum/set\n formatOp: function formatOp(field, op, value, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n var opStr = isForDisplay ? \"=\" : \"==\";\n return \"\".concat(field, \" \").concat(opStr, \" \").concat(value);\n },\n spelOp: \"==\",\n spelOps: [\"==\", \"eq\"],\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils17;\n for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {\n args[_key17] = arguments[_key17];\n }\n return (_this$utils17 = this.utils).mongoFormatOp1.apply(_this$utils17, [\"$eq\", function (v) {\n return v;\n }, false].concat(args));\n },\n reversedOp: \"select_not_equals\",\n jsonLogic: \"==\",\n elasticSearchQueryType: \"term\"\n },\n select_not_equals: {\n isNotOp: true,\n label: \"!=\",\n labelForFormat: \"!=\",\n sqlOp: \"<>\",\n // enum/set\n formatOp: function formatOp(field, op, value, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n return \"\".concat(field, \" != \").concat(value);\n },\n spelOp: \"!=\",\n spelOps: [\"!=\", \"ne\"],\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils18;\n for (var _len18 = arguments.length, args = new Array(_len18), _key18 = 0; _key18 < _len18; _key18++) {\n args[_key18] = arguments[_key18];\n }\n return (_this$utils18 = this.utils).mongoFormatOp1.apply(_this$utils18, [\"$ne\", function (v) {\n return v;\n }, false].concat(args));\n },\n reversedOp: \"select_equals\",\n jsonLogic: \"!=\"\n },\n select_any_in: {\n label: \"Any in\",\n labelForFormat: \"IN\",\n sqlOp: \"IN\",\n formatOp: function formatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n if (valueSrc == \"value\") return \"\".concat(field, \" IN (\").concat(values.join(\", \"), \")\");else return \"\".concat(field, \" IN (\").concat(values, \")\");\n },\n sqlFormatOp: function sqlFormatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n if (valueSrc == \"value\") {\n return \"\".concat(field, \" IN (\").concat(values.join(\", \"), \")\");\n } else return undefined; // not supported\n },\n\n valueTypes: [\"multiselect\"],\n spelOp: \"${1}.contains(${0})\",\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils19;\n for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {\n args[_key19] = arguments[_key19];\n }\n return (_this$utils19 = this.utils).mongoFormatOp1.apply(_this$utils19, [\"$in\", function (v) {\n return v;\n }, false].concat(args));\n },\n reversedOp: \"select_not_any_in\",\n jsonLogic: \"in\",\n elasticSearchQueryType: \"term\"\n },\n select_not_any_in: {\n isNotOp: true,\n label: \"Not in\",\n labelForFormat: \"NOT IN\",\n sqlOp: \"NOT IN\",\n formatOp: function formatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n if (valueSrc == \"value\") return \"\".concat(field, \" NOT IN (\").concat(values.join(\", \"), \")\");else return \"\".concat(field, \" NOT IN (\").concat(values, \")\");\n },\n sqlFormatOp: function sqlFormatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n if (valueSrc == \"value\") {\n return \"\".concat(field, \" NOT IN (\").concat(values.join(\", \"), \")\");\n } else return undefined; // not supported\n },\n\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils20;\n for (var _len20 = arguments.length, args = new Array(_len20), _key20 = 0; _key20 < _len20; _key20++) {\n args[_key20] = arguments[_key20];\n }\n return (_this$utils20 = this.utils).mongoFormatOp1.apply(_this$utils20, [\"$nin\", function (v) {\n return v;\n }, false].concat(args));\n },\n reversedOp: \"select_any_in\"\n },\n // it's not \"contains all\", but \"contains any\" operator\n multiselect_contains: {\n label: \"Contains\",\n labelForFormat: \"CONTAINS\",\n formatOp: function formatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n if (valueSrc == \"value\") return \"\".concat(field, \" CONTAINS [\").concat(values.join(\", \"), \"]\");else return \"\".concat(field, \" CONTAINS \").concat(values);\n },\n reversedOp: \"multiselect_not_contains\",\n jsonLogic2: \"some-in\",\n jsonLogic: function jsonLogic(field, op, vals) {\n return {\n \"some\": [field, {\n \"in\": [{\n \"var\": \"\"\n }, vals]\n }]\n };\n },\n //spelOp: \"${0}.containsAll(${1})\",\n spelOp: \"T(CollectionUtils).containsAny(${0}, ${1})\",\n elasticSearchQueryType: \"term\",\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils21;\n for (var _len21 = arguments.length, args = new Array(_len21), _key21 = 0; _key21 < _len21; _key21++) {\n args[_key21] = arguments[_key21];\n }\n return (_this$utils21 = this.utils).mongoFormatOp1.apply(_this$utils21, [\"$in\", function (v) {\n return v;\n }, false].concat(args));\n }\n },\n multiselect_not_contains: {\n isNotOp: true,\n label: \"Not contains\",\n labelForFormat: \"NOT CONTAINS\",\n formatOp: function formatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n if (valueSrc == \"value\") return \"\".concat(field, \" NOT CONTAINS [\").concat(values.join(\", \"), \"]\");else return \"\".concat(field, \" NOT CONTAINS \").concat(values);\n },\n reversedOp: \"multiselect_contains\"\n },\n multiselect_equals: {\n label: \"Equals\",\n labelForFormat: \"==\",\n sqlOp: \"=\",\n formatOp: function formatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n var opStr = isForDisplay ? \"=\" : \"==\";\n if (valueSrc == \"value\") return \"\".concat(field, \" \").concat(opStr, \" [\").concat(values.join(\", \"), \"]\");else return \"\".concat(field, \" \").concat(opStr, \" \").concat(values);\n },\n sqlFormatOp: function sqlFormatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n var _this7 = this;\n if (valueSrc == \"value\")\n // set\n return \"\".concat(field, \" = '\").concat(values.map(function (v) {\n return _this7.utils.SqlString.trim(v);\n }).join(\",\"), \"'\");else return undefined; //not supported\n },\n\n spelOp: \"${0}.equals(${1})\",\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils22;\n for (var _len22 = arguments.length, args = new Array(_len22), _key22 = 0; _key22 < _len22; _key22++) {\n args[_key22] = arguments[_key22];\n }\n return (_this$utils22 = this.utils).mongoFormatOp1.apply(_this$utils22, [\"$eq\", function (v) {\n return v;\n }, false].concat(args));\n },\n reversedOp: \"multiselect_not_equals\",\n jsonLogic2: \"all-in\",\n jsonLogic: function jsonLogic(field, op, vals) {\n return {\n // it's not \"equals\", but \"includes\" operator - just for example\n \"all\": [field, {\n \"in\": [{\n \"var\": \"\"\n }, vals]\n }]\n };\n },\n elasticSearchQueryType: \"term\"\n },\n multiselect_not_equals: {\n isNotOp: true,\n label: \"Not equals\",\n labelForFormat: \"!=\",\n sqlOp: \"<>\",\n formatOp: function formatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n if (valueSrc == \"value\") return \"\".concat(field, \" != [\").concat(values.join(\", \"), \"]\");else return \"\".concat(field, \" != \").concat(values);\n },\n sqlFormatOp: function sqlFormatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n var _this8 = this;\n if (valueSrc == \"value\")\n // set\n return \"\".concat(field, \" != '\").concat(values.map(function (v) {\n return _this8.utils.SqlString.trim(v);\n }).join(\",\"), \"'\");else return undefined; //not supported\n },\n\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils23;\n for (var _len23 = arguments.length, args = new Array(_len23), _key23 = 0; _key23 < _len23; _key23++) {\n args[_key23] = arguments[_key23];\n }\n return (_this$utils23 = this.utils).mongoFormatOp1.apply(_this$utils23, [\"$ne\", function (v) {\n return v;\n }, false].concat(args));\n },\n reversedOp: \"multiselect_equals\"\n },\n proximity: {\n label: \"Proximity search\",\n cardinality: 2,\n valueLabels: [{\n label: \"Word 1\",\n placeholder: \"Enter first word\"\n }, {\n label: \"Word 2\",\n placeholder: \"Enter second word\"\n }],\n textSeparators: [\n //'Word 1',\n //'Word 2'\n ],\n formatOp: function formatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, isForDisplay) {\n var val1 = values.first();\n var val2 = values.get(1);\n var prox = operatorOptions.get(\"proximity\");\n return \"\".concat(field, \" \").concat(val1, \" NEAR/\").concat(prox, \" \").concat(val2);\n },\n sqlFormatOp: function sqlFormatOp(field, op, values, valueSrc, valueType, opDef, operatorOptions, fieldDef) {\n // https://learn.microsoft.com/en-us/sql/relational-databases/search/search-for-words-close-to-another-word-with-near?view=sql-server-ver16#example-1\n var val1 = values.first();\n var val2 = values.get(1);\n var aVal1 = this.utils.SqlString.trim(val1);\n var aVal2 = this.utils.SqlString.trim(val2);\n var prox = operatorOptions.get(\"proximity\");\n return \"CONTAINS(\".concat(field, \", 'NEAR((\").concat(aVal1, \", \").concat(aVal2, \"), \").concat(prox, \")')\");\n },\n mongoFormatOp: undefined,\n // not supported\n jsonLogic: undefined,\n // not supported\n options: {\n optionLabel: \"Near\",\n // label on top of \"near\" selectbox (for config.settings.showLabels==true)\n optionTextBefore: \"Near\",\n // label before \"near\" selectbox (for config.settings.showLabels==false)\n optionPlaceholder: \"Select words between\",\n // placeholder for \"near\" selectbox\n minProximity: 2,\n maxProximity: 10,\n defaults: {\n proximity: 2\n }\n }\n },\n some: {\n label: \"Some\",\n labelForFormat: \"SOME\",\n cardinality: 0,\n jsonLogic: \"some\",\n spelFormatOp: function spelFormatOp(filteredSize) {\n return \"\".concat(filteredSize, \" > 0\");\n },\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils24;\n for (var _len24 = arguments.length, args = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {\n args[_key24] = arguments[_key24];\n }\n return (_this$utils24 = this.utils).mongoFormatOp1.apply(_this$utils24, [\"$gt\", function (v) {\n return 0;\n }, false].concat(args));\n }\n },\n all: {\n label: \"All\",\n labelForFormat: \"ALL\",\n cardinality: 0,\n jsonLogic: \"all\",\n spelFormatOp: function spelFormatOp(filteredSize, op, fullSize) {\n return \"\".concat(filteredSize, \" == \").concat(fullSize);\n },\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils25;\n for (var _len25 = arguments.length, args = new Array(_len25), _key25 = 0; _key25 < _len25; _key25++) {\n args[_key25] = arguments[_key25];\n }\n return (_this$utils25 = this.utils).mongoFormatOp1.apply(_this$utils25, [\"$eq\", function (v) {\n return v;\n }, false].concat(args));\n }\n },\n none: {\n label: \"None\",\n labelForFormat: \"NONE\",\n cardinality: 0,\n jsonLogic: \"none\",\n spelFormatOp: function spelFormatOp(filteredSize) {\n return \"\".concat(filteredSize, \" == 0\");\n },\n mongoFormatOp: function mongoFormatOp() {\n var _this$utils26;\n for (var _len26 = arguments.length, args = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {\n args[_key26] = arguments[_key26];\n }\n return (_this$utils26 = this.utils).mongoFormatOp1.apply(_this$utils26, [\"$eq\", function (v) {\n return 0;\n }, false].concat(args));\n }\n }\n};\n\n//---------------------------- widgets\n\nvar widgets = {\n text: {\n type: \"text\",\n jsType: \"string\",\n valueSrc: \"value\",\n valueLabel: \"String\",\n valuePlaceholder: \"Enter string\",\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n return isForDisplay ? this.utils.stringifyForDisplay(val) : JSON.stringify(val);\n },\n spelFormatValue: function spelFormatValue(val, fieldDef, wgtDef, op, opDef) {\n return this.utils.spelEscape(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n if (opDef.sqlOp == \"LIKE\" || opDef.sqlOp == \"NOT LIKE\") {\n return this.utils.SqlString.escapeLike(val, op != \"starts_with\", op != \"ends_with\");\n } else {\n return this.utils.SqlString.escape(val);\n }\n },\n toJS: function toJS(val, fieldSettings) {\n return val;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n return val;\n }\n },\n textarea: {\n type: \"text\",\n jsType: \"string\",\n valueSrc: \"value\",\n valueLabel: \"Text\",\n valuePlaceholder: \"Enter text\",\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n return isForDisplay ? this.utils.stringifyForDisplay(val) : JSON.stringify(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n if (opDef.sqlOp == \"LIKE\" || opDef.sqlOp == \"NOT LIKE\") {\n return this.utils.SqlString.escapeLike(val, op != \"starts_with\", op != \"ends_with\");\n } else {\n return this.utils.SqlString.escape(val);\n }\n },\n spelFormatValue: function spelFormatValue(val) {\n return this.utils.spelEscape(val);\n },\n toJS: function toJS(val, fieldSettings) {\n return val;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n return val;\n },\n fullWidth: true\n },\n number: {\n type: \"number\",\n jsType: \"number\",\n valueSrc: \"value\",\n valueLabel: \"Number\",\n valuePlaceholder: \"Enter number\",\n valueLabels: [{\n label: \"Number from\",\n placeholder: \"Enter number from\"\n }, {\n label: \"Number to\",\n placeholder: \"Enter number to\"\n }],\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n return isForDisplay ? this.utils.stringifyForDisplay(val) : JSON.stringify(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n return this.utils.SqlString.escape(val);\n },\n spelFormatValue: function spelFormatValue(val, fieldDef, wgtDef) {\n var isFloat = wgtDef.step && !Number.isInteger(wgtDef.step);\n return this.utils.spelEscape(val, isFloat);\n },\n toJS: function toJS(val, fieldSettings) {\n return val;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n return val;\n }\n },\n slider: {\n type: \"number\",\n jsType: \"number\",\n valueSrc: \"value\",\n valueLabel: \"Number\",\n valuePlaceholder: \"Enter number or move slider\",\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n return isForDisplay ? this.utils.stringifyForDisplay(val) : JSON.stringify(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n return this.utils.SqlString.escape(val);\n },\n spelFormatValue: function spelFormatValue(val) {\n return this.utils.spelEscape(val);\n },\n toJS: function toJS(val, fieldSettings) {\n return val;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n return val;\n }\n },\n select: {\n type: \"select\",\n jsType: \"string\",\n valueSrc: \"value\",\n valueLabel: \"Value\",\n valuePlaceholder: \"Select value\",\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n var valLabel = this.utils.getTitleInListValues(fieldDef.fieldSettings.listValues || fieldDef.asyncListValues, val);\n return isForDisplay ? this.utils.stringifyForDisplay(valLabel) : JSON.stringify(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n return this.utils.SqlString.escape(val);\n },\n spelFormatValue: function spelFormatValue(val) {\n return this.utils.spelEscape(val);\n },\n toJS: function toJS(val, fieldSettings) {\n return val;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n return val;\n }\n },\n multiselect: {\n type: \"multiselect\",\n jsType: \"array\",\n valueSrc: \"value\",\n valueLabel: \"Values\",\n valuePlaceholder: \"Select values\",\n formatValue: function formatValue(vals, fieldDef, wgtDef, isForDisplay) {\n var _this9 = this;\n var valsLabels = vals.map(function (v) {\n return _this9.utils.getTitleInListValues(fieldDef.fieldSettings.listValues || fieldDef.asyncListValues, v);\n });\n return isForDisplay ? valsLabels.map(this.utils.stringifyForDisplay) : vals.map(JSON.stringify);\n },\n sqlFormatValue: function sqlFormatValue(vals, fieldDef, wgtDef, op, opDef) {\n var _this10 = this;\n return vals.map(function (v) {\n return _this10.utils.SqlString.escape(v);\n });\n },\n spelFormatValue: function spelFormatValue(vals, fieldDef, wgtDef, op, opDef) {\n var isCallable = opDef.spelOp && opDef.spelOp.startsWith(\"${1}\");\n var res = this.utils.spelEscape(vals); // inline list\n if (isCallable) {\n // `{1,2}.contains(1)` NOT works\n // `{1,2}.?[true].contains(1)` works\n res = this.utils.spelFixList(res);\n }\n return res;\n },\n toJS: function toJS(val, fieldSettings) {\n return val;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n return val;\n }\n },\n date: {\n type: \"date\",\n jsType: \"string\",\n valueSrc: \"value\",\n dateFormat: \"DD.MM.YYYY\",\n valueFormat: \"YYYY-MM-DD\",\n valueLabel: \"Date\",\n valuePlaceholder: \"Enter date\",\n valueLabels: [{\n label: \"Date from\",\n placeholder: \"Enter date from\"\n }, {\n label: \"Date to\",\n placeholder: \"Enter date to\"\n }],\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n var dateVal = this.utils.moment(val, wgtDef.valueFormat);\n return isForDisplay ? dateVal.format(wgtDef.dateFormat) : JSON.stringify(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n var dateVal = this.utils.moment(val, wgtDef.valueFormat);\n return this.utils.SqlString.escape(dateVal.format(\"YYYY-MM-DD\"));\n },\n spelFormatValue: function spelFormatValue(val, fieldDef, wgtDef, op, opDef) {\n var dateVal = this.utils.moment(val, wgtDef.valueFormat);\n var v = dateVal.format(\"YYYY-MM-DD\");\n var fmt = \"yyyy-MM-dd\";\n //return `new java.text.SimpleDateFormat('${fmt}').parse('${v}')`;\n return \"T(java.time.LocalDate).parse('\".concat(v, \"', T(java.time.format.DateTimeFormatter).ofPattern('\").concat(fmt, \"'))\");\n },\n spelImportFuncs: [\n //\"new java.text.SimpleDateFormat(${fmt}).parse(${v})\",\n {\n obj: {\n cls: [\"java\", \"time\", \"LocalDate\"]\n },\n methodName: \"parse\",\n args: [{\n \"var\": \"v\"\n }, {\n obj: {\n cls: [\"java\", \"time\", \"format\", \"DateTimeFormatter\"]\n },\n methodName: \"ofPattern\",\n args: [{\n \"var\": \"fmt\"\n }]\n }]\n }],\n spelImportValue: function spelImportValue(val, wgtDef, args) {\n var _args$fmt, _args$fmt$includes, _args$fmt2, _args$fmt2$toLowerCas;\n if (!wgtDef) return [undefined, \"No widget def to get value format\"];\n if (args !== null && args !== void 0 && (_args$fmt = args.fmt) !== null && _args$fmt !== void 0 && (_args$fmt = _args$fmt.value) !== null && _args$fmt !== void 0 && (_args$fmt$includes = _args$fmt.includes) !== null && _args$fmt$includes !== void 0 && _args$fmt$includes.call(_args$fmt, \" \") || (_args$fmt2 = args.fmt) !== null && _args$fmt2 !== void 0 && (_args$fmt2 = _args$fmt2.value) !== null && _args$fmt2 !== void 0 && (_args$fmt2$toLowerCas = _args$fmt2.toLowerCase) !== null && _args$fmt2$toLowerCas !== void 0 && _args$fmt2$toLowerCas.call(_args$fmt2).includes(\"hh:mm\")) return [undefined, \"Invalid date format \".concat(JSON.stringify(args.fmt))];\n var dateVal = this.utils.moment(val.value, this.utils.moment.ISO_8601);\n if (dateVal.isValid()) {\n return [dateVal.format(wgtDef === null || wgtDef === void 0 ? void 0 : wgtDef.valueFormat), []];\n } else {\n return [undefined, \"Invalid date\"];\n }\n },\n jsonLogic: function jsonLogic(val, fieldDef, wgtDef) {\n return this.utils.moment(val, wgtDef.valueFormat).toDate();\n },\n toJS: function toJS(val, fieldSettings) {\n var dateVal = this.utils.moment(val, fieldSettings.valueFormat);\n return dateVal.isValid() ? dateVal.toDate() : undefined;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n var dateVal = this.utils.moment(val, wgtDef.valueFormat);\n return dateVal.isValid() ? dateVal.toDate() : undefined;\n }\n },\n time: {\n type: \"time\",\n jsType: \"string\",\n valueSrc: \"value\",\n timeFormat: \"HH:mm\",\n valueFormat: \"HH:mm:ss\",\n use12Hours: false,\n valueLabel: \"Time\",\n valuePlaceholder: \"Enter time\",\n valueLabels: [{\n label: \"Time from\",\n placeholder: \"Enter time from\"\n }, {\n label: \"Time to\",\n placeholder: \"Enter time to\"\n }],\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n var dateVal = this.utils.moment(val, wgtDef.valueFormat);\n return isForDisplay ? dateVal.format(wgtDef.timeFormat) : JSON.stringify(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n var dateVal = this.utils.moment(val, wgtDef.valueFormat);\n return this.utils.SqlString.escape(dateVal.format(\"HH:mm:ss\"));\n },\n spelFormatValue: function spelFormatValue(val, fieldDef, wgtDef, op, opDef) {\n var dateVal = this.utils.moment(val, wgtDef.valueFormat);\n var fmt = \"HH:mm:ss\";\n var v = dateVal.format(\"HH:mm:ss\");\n return \"T(java.time.LocalTime).parse('\".concat(v, \"')\");\n //return `new java.text.SimpleDateFormat('${fmt}').parse('${v}')`;\n },\n\n spelImportFuncs: [\"T(java.time.LocalTime).parse(${v})\"\n //\"new java.text.SimpleDateFormat(${fmt}).parse(${v})\"\n ],\n\n spelImportValue: function spelImportValue(val, wgtDef, args) {\n var _args$fmt3, _args$fmt3$toLowerCas, _args$fmt4;\n if (!wgtDef) return [undefined, \"No widget def to get value format\"];\n if (args !== null && args !== void 0 && args.fmt && (!((_args$fmt3 = args.fmt) !== null && _args$fmt3 !== void 0 && (_args$fmt3 = _args$fmt3.value) !== null && _args$fmt3 !== void 0 && (_args$fmt3$toLowerCas = _args$fmt3.toLowerCase) !== null && _args$fmt3$toLowerCas !== void 0 && _args$fmt3$toLowerCas.call(_args$fmt3).includes(\"hh:mm\")) || (_args$fmt4 = args.fmt) !== null && _args$fmt4 !== void 0 && (_args$fmt4 = _args$fmt4.value) !== null && _args$fmt4 !== void 0 && _args$fmt4.includes(\" \"))) return [undefined, \"Invalid time format \".concat(JSON.stringify(args.fmt))];\n var dateVal = this.utils.moment(val.value, \"HH:mm:ss\");\n if (dateVal.isValid()) {\n return [dateVal.format(wgtDef === null || wgtDef === void 0 ? void 0 : wgtDef.valueFormat), []];\n } else {\n return [undefined, \"Invalid date\"];\n }\n },\n jsonLogic: function jsonLogic(val, fieldDef, wgtDef) {\n // return seconds of day\n var dateVal = this.utils.moment(val, wgtDef.valueFormat);\n return dateVal.get(\"hour\") * 60 * 60 + dateVal.get(\"minute\") * 60 + dateVal.get(\"second\");\n },\n toJS: function toJS(val, fieldSettings) {\n // return seconds of day\n var dateVal = this.utils.moment(val, fieldSettings.valueFormat);\n return dateVal.isValid() ? dateVal.get(\"hour\") * 60 * 60 + dateVal.get(\"minute\") * 60 + dateVal.get(\"second\") : undefined;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n // return seconds of day\n var dateVal = this.utils.moment(val, wgtDef.valueFormat);\n return dateVal.get(\"hour\") * 60 * 60 + dateVal.get(\"minute\") * 60 + dateVal.get(\"second\");\n },\n elasticSearchFormatValue: function elasticSearchFormatValue(queryType, value, operator, fieldName) {\n return {\n script: {\n script: {\n source: \"doc[\".concat(fieldName, \"][0].getHour() >== params.min && doc[\").concat(fieldName, \"][0].getHour() <== params.max\"),\n params: {\n min: value[0],\n max: value[1]\n }\n }\n }\n };\n }\n },\n datetime: {\n type: \"datetime\",\n jsType: \"string\",\n valueSrc: \"value\",\n timeFormat: \"HH:mm\",\n dateFormat: \"DD.MM.YYYY\",\n valueFormat: \"YYYY-MM-DD HH:mm:ss\",\n use12Hours: false,\n valueLabel: \"Datetime\",\n valuePlaceholder: \"Enter datetime\",\n valueLabels: [{\n label: \"Datetime from\",\n placeholder: \"Enter datetime from\"\n }, {\n label: \"Datetime to\",\n placeholder: \"Enter datetime to\"\n }],\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n var dateVal = this.utils.moment(val, wgtDef.valueFormat);\n return isForDisplay ? dateVal.format(wgtDef.dateFormat + \" \" + wgtDef.timeFormat) : JSON.stringify(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n var dateVal = this.utils.moment(val, wgtDef.valueFormat);\n return this.utils.SqlString.escape(dateVal.toDate());\n },\n spelFormatValue: function spelFormatValue(val, fieldDef, wgtDef, op, opDef) {\n var dateVal = this.utils.moment(val, wgtDef.valueFormat);\n var v = dateVal.format(\"YYYY-MM-DD HH:mm:ss\");\n var fmt = \"yyyy-MM-dd HH:mm:ss\";\n //return `new java.text.SimpleDateFormat('${fmt}').parse('${v}')`;\n return \"T(java.time.LocalDateTime).parse('\".concat(v, \"', T(java.time.format.DateTimeFormatter).ofPattern('\").concat(fmt, \"'))\");\n },\n spelImportFuncs: [\n //\"new java.text.SimpleDateFormat(${fmt}).parse(${v})\",\n {\n obj: {\n cls: [\"java\", \"time\", \"LocalDateTime\"]\n },\n methodName: \"parse\",\n args: [{\n \"var\": \"v\"\n }, {\n obj: {\n cls: [\"java\", \"time\", \"format\", \"DateTimeFormatter\"]\n },\n methodName: \"ofPattern\",\n args: [{\n \"var\": \"fmt\"\n }]\n }]\n }],\n spelImportValue: function spelImportValue(val, wgtDef, args) {\n var _args$fmt5, _args$fmt5$includes;\n if (!wgtDef) return [undefined, \"No widget def to get value format\"];\n if (!(args !== null && args !== void 0 && (_args$fmt5 = args.fmt) !== null && _args$fmt5 !== void 0 && (_args$fmt5 = _args$fmt5.value) !== null && _args$fmt5 !== void 0 && (_args$fmt5$includes = _args$fmt5.includes) !== null && _args$fmt5$includes !== void 0 && _args$fmt5$includes.call(_args$fmt5, \" \"))) return [undefined, \"Invalid datetime format \".concat(JSON.stringify(args.fmt))];\n var dateVal = this.utils.moment(val.value, this.utils.moment.ISO_8601);\n if (dateVal.isValid()) {\n return [dateVal.format(wgtDef === null || wgtDef === void 0 ? void 0 : wgtDef.valueFormat), []];\n } else {\n return [undefined, \"Invalid date\"];\n }\n },\n jsonLogic: function jsonLogic(val, fieldDef, wgtDef) {\n return this.utils.moment(val, wgtDef.valueFormat).toDate();\n },\n toJS: function toJS(val, fieldSettings) {\n var dateVal = this.utils.moment(val, fieldSettings.valueFormat);\n return dateVal.isValid() ? dateVal.toDate() : undefined;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n var dateVal = this.utils.moment(val, wgtDef.valueFormat);\n return dateVal.isValid() ? dateVal.toDate() : undefined;\n }\n },\n \"boolean\": {\n type: \"boolean\",\n jsType: \"boolean\",\n valueSrc: \"value\",\n labelYes: \"Yes\",\n labelNo: \"No\",\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n return isForDisplay ? val ? \"Yes\" : \"No\" : JSON.stringify(!!val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n return this.utils.SqlString.escape(val);\n },\n spelFormatValue: function spelFormatValue(val, fieldDef, wgtDef, op, opDef) {\n return this.utils.spelEscape(val);\n },\n defaultValue: false,\n toJS: function toJS(val, fieldSettings) {\n return val;\n },\n mongoFormatValue: function mongoFormatValue(val, fieldDef, wgtDef) {\n return val;\n }\n },\n field: {\n valueSrc: \"field\",\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay, op, opDef, rightFieldDef) {\n return isForDisplay ? rightFieldDef.label || val : val;\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef, rightFieldDef) {\n return val;\n },\n spelFormatValue: function spelFormatValue(val, fieldDef, wgtDef, op, opDef) {\n return val;\n },\n valueLabel: \"Field to compare\",\n valuePlaceholder: \"Select field to compare\"\n },\n func: {\n valueSrc: \"func\",\n valueLabel: \"Function\",\n valuePlaceholder: \"Select function\"\n },\n case_value: {\n valueSrc: \"value\",\n type: \"case_value\",\n spelFormatValue: function spelFormatValue(val) {\n return this.utils.spelEscape(val === \"\" ? null : val);\n },\n spelImportValue: function spelImportValue(val) {\n return [val.value, []];\n }\n }\n};\n\n//---------------------------- types\n\nvar types = {\n text: {\n defaultOperator: \"equal\",\n mainWidget: \"text\",\n widgets: {\n text: {\n operators: [\"equal\", \"not_equal\", \"like\", \"not_like\", \"starts_with\", \"ends_with\", \"proximity\", \"is_empty\", \"is_not_empty\", \"is_null\", \"is_not_null\"],\n widgetProps: {},\n opProps: {}\n },\n textarea: {\n operators: [\"equal\", \"not_equal\", \"like\", \"not_like\", \"starts_with\", \"ends_with\", \"is_empty\", \"is_not_empty\", \"is_null\", \"is_not_null\"],\n widgetProps: {},\n opProps: {}\n },\n field: {\n operators: [\n //unary ops (like `is_empty`) will be excluded anyway, see getWidgetsForFieldOp()\n \"equal\", \"not_equal\", \"proximity\" //can exclude if you want\n ]\n }\n }\n },\n\n number: {\n defaultOperator: \"equal\",\n mainWidget: \"number\",\n widgets: {\n number: {\n operators: [\"equal\", \"not_equal\", \"less\", \"less_or_equal\", \"greater\", \"greater_or_equal\", \"between\", \"not_between\",\n // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"]\n },\n slider: {\n operators: [\"equal\", \"not_equal\", \"less\", \"less_or_equal\", \"greater\", \"greater_or_equal\",\n // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"]\n }\n }\n },\n date: {\n defaultOperator: \"equal\",\n widgets: {\n date: {\n operators: [\"equal\", \"not_equal\", \"less\", \"less_or_equal\", \"greater\", \"greater_or_equal\", \"between\", \"not_between\",\n // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"]\n }\n }\n },\n time: {\n defaultOperator: \"equal\",\n widgets: {\n time: {\n operators: [\"equal\", \"not_equal\", \"less\", \"less_or_equal\", \"greater\", \"greater_or_equal\", \"between\", \"not_between\",\n // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"]\n }\n }\n },\n datetime: {\n defaultOperator: \"equal\",\n widgets: {\n datetime: {\n operators: [\"equal\", \"not_equal\", \"less\", \"less_or_equal\", \"greater\", \"greater_or_equal\", \"between\", \"not_between\",\n // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"]\n }\n }\n },\n select: {\n mainWidget: \"select\",\n defaultOperator: \"select_equals\",\n widgets: {\n select: {\n operators: [\"select_equals\", \"select_not_equals\",\n // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"]\n },\n multiselect: {\n operators: [\"select_any_in\", \"select_not_any_in\",\n // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"]\n }\n }\n },\n multiselect: {\n defaultOperator: \"multiselect_equals\",\n widgets: {\n multiselect: {\n operators: [\"multiselect_contains\", \"multiselect_not_contains\", \"multiselect_equals\", \"multiselect_not_equals\",\n // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"]\n }\n }\n },\n \"boolean\": {\n defaultOperator: \"equal\",\n widgets: {\n \"boolean\": {\n operators: [\"equal\", \"not_equal\", \"is_null\", \"is_not_null\"],\n widgetProps: {\n //you can enable this if you don't use fields as value sources\n // hideOperator: true,\n // operatorInlineLabel: \"is\",\n }\n },\n field: {\n operators: [\"equal\", \"not_equal\"]\n }\n }\n },\n \"!group\": {\n defaultOperator: \"some\",\n mainWidget: \"number\",\n widgets: {\n number: {\n widgetProps: {\n min: 0\n },\n operators: [\n // w/o operand\n \"some\", \"all\", \"none\",\n // w/ operand - count\n \"equal\", \"not_equal\", \"less\", \"less_or_equal\", \"greater\", \"greater_or_equal\", \"between\", \"not_between\"],\n opProps: {\n equal: {\n label: \"Count ==\"\n },\n not_equal: {\n label: \"Count !=\"\n },\n less: {\n label: \"Count <\"\n },\n less_or_equal: {\n label: \"Count <=\"\n },\n greater: {\n label: \"Count >\"\n },\n greater_or_equal: {\n label: \"Count >=\"\n },\n between: {\n label: \"Count between\"\n },\n not_between: {\n label: \"Count not between\"\n }\n }\n }\n }\n },\n \"case_value\": {\n mainWidget: \"case_value\",\n widgets: {\n case_value: {}\n }\n }\n};\n\n//---------------------------- settings\n\nvar settings = _objectSpread(_objectSpread({}, defaultSettings), {}, {\n convertableWidgets: {\n \"number\": [\"slider\", \"rangeslider\"],\n \"slider\": [\"number\", \"rangeslider\"],\n \"rangeslider\": [\"number\", \"slider\"],\n \"text\": [\"textarea\"],\n \"textarea\": [\"text\"]\n },\n formatSpelField: function formatSpelField(field, parentField, parts, partsExt, fieldDefinition, config) {\n var _this11 = this;\n var fieldName = partsExt.map(function (_ref, ind) {\n var key = _ref.key,\n parent = _ref.parent,\n sep = _ref.fieldSeparator;\n if (ind == 0) {\n if (parent == \"[map]\") return \"#this[\".concat(_this11.utils.spelEscape(key), \"]\");else if (parent == \"[class]\") return key;else return key;\n } else {\n if (parent == \"map\" || parent == \"[map]\") return \"[\".concat(_this11.utils.spelEscape(key), \"]\");else if (parent == \"class\" || parent == \"[class]\") return \"\".concat(sep).concat(key);else return \"\".concat(sep).concat(key);\n }\n }).join(\"\");\n if (fieldDefinition.fieldName) {\n fieldName = field;\n }\n if (fieldDefinition.isSpelVariable) {\n fieldName = \"#\" + fieldName;\n }\n return fieldName;\n },\n sqlFormatReverse: function sqlFormatReverse(q) {\n if (q == undefined) return undefined;\n return \"NOT(\" + q + \")\";\n },\n spelFormatReverse: function spelFormatReverse(q) {\n if (q == undefined) return undefined;\n return \"!(\" + q + \")\";\n },\n formatReverse: function formatReverse(q, operator, reversedOp, operatorDefinition, revOperatorDefinition, isForDisplay) {\n if (q == undefined) return undefined;\n if (isForDisplay) return \"NOT (\" + q + \")\";else return \"!(\" + q + \")\";\n },\n formatAggr: function formatAggr(whereStr, aggrField, operator, value, valueSrc, valueType, opDef, operatorOptions, isForDisplay, aggrFieldDef) {\n var labelForFormat = opDef.labelForFormat,\n cardinality = opDef.cardinality;\n if (cardinality == 0) {\n var cond = whereStr ? \" HAVE \".concat(whereStr) : \"\";\n return \"\".concat(labelForFormat, \" OF \").concat(aggrField).concat(cond);\n } else if (cardinality == undefined || cardinality == 1) {\n var _cond = whereStr ? \" WHERE \".concat(whereStr) : \"\";\n return \"COUNT OF \".concat(aggrField).concat(_cond, \" \").concat(labelForFormat, \" \").concat(value);\n } else if (cardinality == 2) {\n var _cond2 = whereStr ? \" WHERE \".concat(whereStr) : \"\";\n var valFrom = value.first();\n var valTo = value.get(1);\n return \"COUNT OF \".concat(aggrField).concat(_cond2, \" \").concat(labelForFormat, \" \").concat(valFrom, \" AND \").concat(valTo);\n }\n },\n jsonLogic: {\n groupVarKey: \"var\",\n altVarKey: \"var\",\n lockedOp: \"locked\"\n },\n canCompareFieldWithField: function canCompareFieldWithField(leftField, leftFieldConfig, rightField, rightFieldConfig) {\n //for type == 'select'/'multiselect' you can check listValues\n return true;\n },\n // enable compare fields\n valueSourcesInfo: {\n value: {\n label: \"Value\"\n },\n field: {\n label: \"Field\",\n widget: \"field\"\n },\n func: {\n label: \"Function\",\n widget: \"func\"\n }\n }\n});\n\n//----------------------------\n\nvar _addMixins = function _addMixins(config, mixins) {\n var doAdd = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var mixinFuncs = {\n rangeslider: mixinWidgetRangeslider,\n treeselect: mixinWidgetTreeselect,\n treemultiselect: mixinWidgetTreemultiselect,\n rangeable__date: mixinRangeableWidget(\"date\", \"date\")\n };\n var _iterator = _createForOfIteratorHelper(mixins),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var mixName = _step.value;\n var mixinFunc = mixinFuncs[mixName];\n if (mixinFunc) {\n config = mixinFunc(config, doAdd);\n } else {\n throw new Error(\"Can't \".concat(doAdd ? \"add\" : \"remove\", \" mixin \").concat(mixName));\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return config;\n};\nvar addMixins = function addMixins(config, mixins) {\n return _addMixins(config, mixins, true);\n};\nvar removeMixins = function removeMixins(config, mixins) {\n return _addMixins(config, mixins, false);\n};\nvar mixinRangeableWidget = function mixinRangeableWidget(type, widget) {\n return function (config) {\n var addMixin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var types = config.types;\n types = _objectSpread(_objectSpread({}, types), {}, _defineProperty({}, type, _objectSpread(_objectSpread({}, types[type]), {}, {\n widgets: _objectSpread({}, types[type].widgets)\n })));\n if (addMixin) {\n types[type].widgets[widget] = _objectSpread({\n opProps: {\n between: {\n isSpecialRange: true,\n textSeparators: [null, null]\n },\n not_between: {\n isSpecialRange: true,\n textSeparators: [null, null]\n }\n }\n }, types[type].widgets[widget]);\n } else {\n delete types[type].widgets[widget];\n }\n return _objectSpread(_objectSpread({}, config), {}, {\n types: types\n });\n };\n};\nvar mixinWidgetRangeslider = function mixinWidgetRangeslider(config) {\n var addMixin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var widgets = config.widgets,\n types = config.types;\n widgets = _objectSpread({}, widgets);\n if (addMixin) {\n widgets.rangeslider = _objectSpread({\n type: \"number\",\n jsType: \"number\",\n valueSrc: \"value\",\n valueLabel: \"Range\",\n valuePlaceholder: \"Select range\",\n valueLabels: [{\n label: \"Number from\",\n placeholder: \"Enter number from\"\n }, {\n label: \"Number to\",\n placeholder: \"Enter number to\"\n }],\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n return isForDisplay ? this.utils.stringifyForDisplay(val) : JSON.stringify(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n return this.utils.SqlString.escape(val);\n },\n spelFormatValue: function spelFormatValue(val) {\n return this.utils.spelEscape(val);\n },\n singleWidget: \"slider\",\n toJS: function toJS(val, fieldSettings) {\n return val;\n }\n }, widgets.rangeslider);\n } else {\n delete widgets.rangeslider;\n }\n types = _objectSpread(_objectSpread({}, types), {}, {\n number: _objectSpread(_objectSpread({}, types.number), {}, {\n widgets: _objectSpread({}, types.number.widgets)\n })\n });\n if (addMixin) {\n types.number.widgets.rangeslider = _objectSpread({\n opProps: {\n between: {\n isSpecialRange: true\n },\n not_between: {\n isSpecialRange: true\n }\n },\n operators: [\"between\", \"not_between\",\n // \"is_empty\",\n // \"is_not_empty\",\n \"is_null\", \"is_not_null\"]\n }, types.number.widgets.rangeslider);\n } else {\n delete types.number.widgets.rangeslider;\n }\n return _objectSpread(_objectSpread({}, config), {}, {\n widgets: widgets,\n types: types\n });\n};\nvar mixinWidgetTreeselect = function mixinWidgetTreeselect(config) {\n var addMixin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var widgets = config.widgets,\n types = config.types;\n widgets = _objectSpread({}, widgets);\n if (addMixin) {\n widgets.treeselect = _objectSpread({\n type: \"treeselect\",\n jsType: \"string\",\n valueSrc: \"value\",\n valueLabel: \"Value\",\n valuePlaceholder: \"Select value\",\n formatValue: function formatValue(val, fieldDef, wgtDef, isForDisplay) {\n var treeData = fieldDef.fieldSettings.treeValues || fieldDef.fieldSettings.listValues || fieldDef.asyncListValues;\n var valLabel = this.utils.getTitleInListValues(treeData, val);\n return isForDisplay ? this.utils.stringifyForDisplay(valLabel) : JSON.stringify(val);\n },\n sqlFormatValue: function sqlFormatValue(val, fieldDef, wgtDef, op, opDef) {\n return this.utils.SqlString.escape(val);\n },\n spelFormatValue: function spelFormatValue(val) {\n return this.utils.spelEscape(val);\n },\n toJS: function toJS(val, fieldSettings) {\n return val;\n }\n }, widgets.treeselect);\n } else {\n delete widgets.treeselect;\n }\n types = _objectSpread({}, types);\n if (addMixin) {\n types.treeselect = _objectSpread({\n mainWidget: \"treeselect\",\n defaultOperator: \"select_equals\",\n widgets: {\n treeselect: {\n operators: [\"select_equals\", \"select_not_equals\"]\n },\n treemultiselect: {\n operators: [\"select_any_in\", \"select_not_any_in\"]\n }\n }\n }, types.treeselect);\n } else {\n delete types.treeselect;\n }\n return _objectSpread(_objectSpread({}, config), {}, {\n widgets: widgets,\n types: types\n });\n};\nvar mixinWidgetTreemultiselect = function mixinWidgetTreemultiselect(config) {\n var addMixin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var widgets = config.widgets,\n types = config.types;\n widgets = _objectSpread({}, widgets);\n if (addMixin) {\n widgets.treemultiselect = _objectSpread({\n type: \"treemultiselect\",\n jsType: \"array\",\n valueSrc: \"value\",\n valueLabel: \"Values\",\n valuePlaceholder: \"Select values\",\n formatValue: function formatValue(vals, fieldDef, wgtDef, isForDisplay) {\n var _this12 = this;\n var treeData = fieldDef.fieldSettings.treeValues || fieldDef.fieldSettings.listValues || fieldDef.asyncListValues;\n var valsLabels = vals.map(function (v) {\n return _this12.utils.getTitleInListValues(treeData, v);\n });\n return isForDisplay ? valsLabels.map(this.utils.stringifyForDisplay) : vals.map(JSON.stringify);\n },\n sqlFormatValue: function sqlFormatValue(vals, fieldDef, wgtDef, op, opDef) {\n var _this13 = this;\n return vals.map(function (v) {\n return _this13.utils.SqlString.escape(v);\n });\n },\n spelFormatValue: function spelFormatValue(val) {\n return this.utils.spelEscape(val);\n },\n toJS: function toJS(val, fieldSettings) {\n return val;\n }\n }, widgets.treemultiselect);\n } else {\n delete widgets.treemultiselect;\n }\n types = _objectSpread({}, types);\n if (addMixin) {\n types.treemultiselect = _objectSpread({\n defaultOperator: \"multiselect_equals\",\n widgets: {\n treemultiselect: {\n operators: [\"multiselect_equals\", \"multiselect_not_equals\"]\n }\n }\n }, types.treemultiselect);\n } else {\n delete types.treemultiselect;\n }\n return _objectSpread(_objectSpread({}, config), {}, {\n widgets: widgets,\n types: types\n });\n};\nexport var ConfigMixins = {\n addMixins: addMixins,\n removeMixins: removeMixins\n};\n\n//----------------------------\n\nvar config = {\n conjunctions: conjunctions,\n operators: operators,\n widgets: widgets,\n types: types,\n settings: settings,\n ctx: ctx\n};\n// Mixin advanced widgets just to allow using it on server-side eg. for export routines\nconfig = addMixins(config, [\"rangeslider\", \"treeselect\", \"treemultiselect\"]);\nexport default config;","export var ADD_GROUP = \"ADD_GROUP\";\nexport var ADD_CASE_GROUP = \"ADD_CASE_GROUP\";\nexport var REMOVE_GROUP = \"REMOVE_GROUP\";\nexport var SET_CONJUNCTION = \"SET_CONJUNCTION\";\nexport var SET_NOT = \"SET_NOT\";\nexport var ADD_RULE = \"ADD_RULE\";\nexport var REMOVE_RULE = \"REMOVE_RULE\";\nexport var SET_FIELD = \"SET_FIELD\";\nexport var SET_FIELD_SRC = \"SET_FIELD_SRC\";\nexport var SET_OPERATOR = \"SET_OPERATOR\";\nexport var SET_VALUE = \"SET_VALUE\";\nexport var SET_VALUE_SRC = \"SET_VALUE_SRC\";\nexport var SET_OPERATOR_OPTION = \"SET_OPERATOR_OPTION\";\nexport var SET_LOCK = \"SET_LOCK\";\nexport var SET_TREE = \"SET_TREE\";\nexport var MOVE_ITEM = \"MOVE_ITEM\";\nexport var PLACEMENT_AFTER = \"after\";\nexport var PLACEMENT_BEFORE = \"before\";\nexport var PLACEMENT_APPEND = \"append\";\nexport var PLACEMENT_PREPEND = \"prepend\";\nexport var SET_DRAG_PROGRESS = \"SET_DRAG_PROGRESS\";\nexport var SET_DRAG_START = \"SET_DRAG_START\";\nexport var SET_DRAG_END = \"SET_DRAG_END\";","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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; } } }; }\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); }\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; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport Immutable from \"immutable\";\nimport { expandTreePath, expandTreeSubpath, getItemByPath, fixPathsInTree, getTotalRulesCountInTree, fixEmptyGroupsInTree, isEmptyTree, hasChildren, removeIsLockedInTree } from \"../utils/treeUtils\";\nimport { defaultRuleProperties, defaultGroupProperties, getDefaultOperator, defaultOperatorOptions, defaultItemProperties } from \"../utils/defaultUtils\";\nimport * as constants from \"./constants\";\nimport uuid from \"../utils/uuid\";\nimport { getFuncConfig, getFieldConfig, getFieldWidgetConfig, getOperatorConfig } from \"../utils/configUtils\";\nimport { getOperatorsForField, getOperatorsForType, getFirstOperator, getWidgetForFieldOp, getNewValueForFieldOp, isEmptyItem, selectTypes } from \"../utils/ruleUtils\";\nimport { deepEqual, defaultValue, applyToJS } from \"../utils/stuff\";\nimport { validateValue } from \"../utils/validation\";\nimport omit from \"lodash/omit\";\nimport mapValues from \"lodash/mapValues\";\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {Immutable.Map} properties\n */\nvar addNewGroup = function addNewGroup(state, path, type, groupUuid, properties, config) {\n var children = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n var meta = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : {};\n var shouldCreateEmptyGroup = config.settings.shouldCreateEmptyGroup;\n var groupPath = path.push(groupUuid);\n var canAddNewRule = !shouldCreateEmptyGroup;\n var isDefaultCase = !!(meta !== null && meta !== void 0 && meta.isDefaultCase);\n var origState = state;\n state = addItem(state, path, type, groupUuid, defaultGroupProperties(config).merge(properties || {}), config, children);\n if (state !== origState) {\n if (!children && !isDefaultCase) {\n state = state.setIn(expandTreePath(groupPath, \"children1\"), new Immutable.OrderedMap());\n\n // Add one empty rule into new group\n if (canAddNewRule) {\n state = addItem(state, groupPath, \"rule\", uuid(), defaultRuleProperties(config), config);\n }\n }\n state = fixPathsInTree(state);\n }\n return state;\n};\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {Immutable.Map} properties\n */\nvar removeGroup = function removeGroup(state, path, config) {\n state = removeItem(state, path);\n var canLeaveEmptyGroup = config.settings.canLeaveEmptyGroup;\n var parentPath = path.slice(0, -1);\n var isEmptyParentGroup = !hasChildren(state, parentPath);\n if (isEmptyParentGroup && !canLeaveEmptyGroup) {\n // check ancestors for emptiness (and delete 'em if empty)\n state = fixEmptyGroupsInTree(state);\n if (isEmptyTree(state) && !canLeaveEmptyGroup) {\n // if whole query is empty, add one empty(!) rule to root\n var canUseDefaultFieldAndOp = false;\n var canGetFirst = false;\n state = addItem(state, new Immutable.List(), \"rule\", uuid(), defaultRuleProperties(config, undefined, undefined, canUseDefaultFieldAndOp, canGetFirst), config);\n }\n }\n state = fixPathsInTree(state);\n return state;\n};\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n */\nvar removeRule = function removeRule(state, path, config) {\n state = removeItem(state, path);\n var canLeaveEmptyGroup = config.settings.canLeaveEmptyGroup;\n var parentPath = path.pop();\n var parent = state.getIn(expandTreePath(parentPath));\n var parentField = parent.getIn([\"properties\", \"field\"]);\n var parentOperator = parent.getIn([\"properties\", \"operator\"]);\n var parentValue = parent.getIn([\"properties\", \"value\", 0]);\n var parentFieldConfig = parentField ? getFieldConfig(config, parentField) : null;\n var parentOperatorConfig = parentOperator ? getOperatorConfig(config, parentOperator, parentField) : null;\n var hasGroupCountRule = parentField && parentOperator && parentOperatorConfig.cardinality != 0; // && parentValue != undefined;\n\n var isParentRuleGroup = parent.get(\"type\") == \"rule_group\";\n var isEmptyParentGroup = !hasChildren(state, parentPath);\n var canLeaveEmpty = isParentRuleGroup ? hasGroupCountRule && parentFieldConfig.initialEmptyWhere : canLeaveEmptyGroup;\n if (isEmptyParentGroup && !canLeaveEmpty) {\n if (isParentRuleGroup) {\n // deleted last rule from rule_group, so delete whole rule_group\n state = state.deleteIn(expandTreePath(parentPath));\n }\n\n // check ancestors for emptiness (and delete 'em if empty)\n state = fixEmptyGroupsInTree(state);\n if (isEmptyTree(state) && !canLeaveEmptyGroup) {\n // if whole query is empty, add one empty(!) rule to root\n var canUseDefaultFieldAndOp = false;\n var canGetFirst = false;\n state = addItem(state, new Immutable.List(), \"rule\", uuid(), defaultRuleProperties(config, undefined, undefined, canUseDefaultFieldAndOp, canGetFirst), config);\n }\n }\n state = fixPathsInTree(state);\n return state;\n};\n\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {bool} not\n */\nvar setNot = function setNot(state, path, not) {\n return state.setIn(expandTreePath(path, \"properties\", \"not\"), not);\n};\n\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {bool} lock\n */\nvar setLock = function setLock(state, path, lock) {\n return removeIsLockedInTree(state.setIn(expandTreePath(path, \"properties\", \"isLocked\"), lock));\n};\n\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {string} conjunction\n */\nvar setConjunction = function setConjunction(state, path, conjunction) {\n return state.setIn(expandTreePath(path, \"properties\", \"conjunction\"), conjunction);\n};\n\n// convert children deeply from JS to Immutable\nvar _addChildren1 = function _addChildren1(config, item, children) {\n if (children && Array.isArray(children)) {\n item.children1 = new Immutable.OrderedMap(children.reduce(function (map, it) {\n var id1 = uuid();\n var it1 = _objectSpread(_objectSpread({}, it), {}, {\n properties: defaultItemProperties(config, it).merge(it.properties || {}),\n id: id1\n });\n _addChildren1(config, it1, it1.children1);\n //todo: guarantee order\n return _objectSpread(_objectSpread({}, map), {}, _defineProperty({}, id1, new Immutable.Map(it1)));\n }, {}));\n }\n};\n\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {string} type\n * @param {string} id\n * @param {Immutable.OrderedMap} properties\n * @param {object} config\n */\nvar addItem = function addItem(state, path, type, id, properties, config) {\n var children = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n if (type == \"switch_group\") throw new Error(\"Can't add switch_group programmatically\");\n var _config$settings = config.settings,\n maxNumberOfCases = _config$settings.maxNumberOfCases,\n maxNumberOfRules = _config$settings.maxNumberOfRules,\n maxNesting = _config$settings.maxNesting;\n var rootType = state.get(\"type\");\n var isTernary = rootType == \"switch_group\";\n var targetItem = state.getIn(expandTreePath(path));\n var caseGroup = isTernary ? state.getIn(expandTreePath(path.take(2))) : null;\n var childrenPath = expandTreePath(path, \"children1\");\n var targetChildren = state.getIn(childrenPath);\n var hasChildren = !!targetChildren && targetChildren.size;\n var targetChildrenSize = hasChildren ? targetChildren.size : null;\n var currentNumber, maxNumber;\n if (type == \"case_group\") {\n currentNumber = targetChildrenSize;\n maxNumber = maxNumberOfCases;\n } else if (type == \"group\") {\n currentNumber = path.size;\n maxNumber = maxNesting;\n } else if ((targetItem === null || targetItem === void 0 ? void 0 : targetItem.get(\"type\")) == \"rule_group\") {\n // don't restrict\n } else {\n currentNumber = isTernary ? getTotalRulesCountInTree(caseGroup) : getTotalRulesCountInTree(state);\n maxNumber = maxNumberOfRules;\n }\n var canAdd = maxNumber && currentNumber ? currentNumber < maxNumber : true;\n var item = {\n type: type,\n id: id,\n properties: properties\n };\n _addChildren1(config, item, children);\n var isLastDefaultCase = type == \"case_group\" && hasChildren && targetChildren.last().get(\"children1\") == null;\n if (canAdd) {\n var newChildren = new Immutable.OrderedMap(_defineProperty({}, id, new Immutable.Map(item)));\n if (!hasChildren) {\n state = state.setIn(childrenPath, newChildren);\n } else if (isLastDefaultCase) {\n var _Immutable$OrderedMap2;\n var last = targetChildren.last();\n var newChildrenWithLast = new Immutable.OrderedMap((_Immutable$OrderedMap2 = {}, _defineProperty(_Immutable$OrderedMap2, id, new Immutable.Map(item)), _defineProperty(_Immutable$OrderedMap2, last.get(\"id\"), last), _Immutable$OrderedMap2));\n state = state.deleteIn(expandTreePath(childrenPath, \"children1\", last.get(\"id\")));\n state = state.mergeIn(childrenPath, newChildrenWithLast);\n } else {\n state = state.mergeIn(childrenPath, newChildren);\n }\n state = fixPathsInTree(state);\n }\n return state;\n};\n\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n */\nvar removeItem = function removeItem(state, path) {\n state = state.deleteIn(expandTreePath(path));\n state = fixPathsInTree(state);\n return state;\n};\n\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} fromPath\n * @param {Immutable.List} toPath\n * @param {string} placement, see constants PLACEMENT_*: PLACEMENT_AFTER, PLACEMENT_BEFORE, PLACEMENT_APPEND, PLACEMENT_PREPEND\n * @param {object} config\n */\nvar moveItem = function moveItem(state, fromPath, toPath, placement, config) {\n var from = getItemByPath(state, fromPath);\n var sourcePath = fromPath.pop();\n var source = fromPath.size > 1 ? getItemByPath(state, sourcePath) : null;\n var sourceChildren = source ? source.get(\"children1\") : null;\n var to = getItemByPath(state, toPath);\n var targetPath = placement == constants.PLACEMENT_APPEND || placement == constants.PLACEMENT_PREPEND ? toPath : toPath.pop();\n var target = placement == constants.PLACEMENT_APPEND || placement == constants.PLACEMENT_PREPEND ? to : toPath.size > 1 ? getItemByPath(state, targetPath) : null;\n var targetChildren = target ? target.get(\"children1\") : null;\n if (!source || !target || !from) return state;\n var isSameParent = source.get(\"id\") == target.get(\"id\");\n var isSourceInsideTarget = targetPath.size < sourcePath.size && deepEqual(targetPath.toArray(), sourcePath.toArray().slice(0, targetPath.size));\n var isTargetInsideSource = targetPath.size > sourcePath.size && deepEqual(sourcePath.toArray(), targetPath.toArray().slice(0, sourcePath.size));\n var sourceSubpathFromTarget = null;\n var targetSubpathFromSource = null;\n if (isSourceInsideTarget) {\n sourceSubpathFromTarget = Immutable.List(sourcePath.toArray().slice(targetPath.size));\n } else if (isTargetInsideSource) {\n targetSubpathFromSource = Immutable.List(targetPath.toArray().slice(sourcePath.size));\n }\n var newTargetChildren = targetChildren,\n newSourceChildren = sourceChildren;\n if (!isTargetInsideSource) newSourceChildren = newSourceChildren[\"delete\"](from.get(\"id\"));\n if (isSameParent) {\n newTargetChildren = newSourceChildren;\n } else if (isSourceInsideTarget) {\n newTargetChildren = newTargetChildren.updateIn(expandTreeSubpath(sourceSubpathFromTarget, \"children1\"), function (_oldChildren) {\n return newSourceChildren;\n });\n }\n if (placement == constants.PLACEMENT_BEFORE || placement == constants.PLACEMENT_AFTER) {\n newTargetChildren = Immutable.OrderedMap().withMutations(function (r) {\n var _iterator = _createForOfIteratorHelper(newTargetChildren.entries()),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray(_step.value, 2),\n itemId = _step$value[0],\n item = _step$value[1];\n if (itemId == to.get(\"id\") && placement == constants.PLACEMENT_BEFORE) {\n r.set(from.get(\"id\"), from);\n }\n r.set(itemId, item);\n if (itemId == to.get(\"id\") && placement == constants.PLACEMENT_AFTER) {\n r.set(from.get(\"id\"), from);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n });\n } else if (placement == constants.PLACEMENT_APPEND) {\n newTargetChildren = newTargetChildren.merge(_defineProperty({}, from.get(\"id\"), from));\n } else if (placement == constants.PLACEMENT_PREPEND) {\n newTargetChildren = Immutable.OrderedMap(_defineProperty({}, from.get(\"id\"), from)).merge(newTargetChildren);\n }\n if (isTargetInsideSource) {\n newSourceChildren = newSourceChildren.updateIn(expandTreeSubpath(targetSubpathFromSource, \"children1\"), function (_oldChildren) {\n return newTargetChildren;\n });\n newSourceChildren = newSourceChildren[\"delete\"](from.get(\"id\"));\n }\n if (!isSameParent && !isSourceInsideTarget) state = state.updateIn(expandTreePath(sourcePath, \"children1\"), function (_oldChildren) {\n return newSourceChildren;\n });\n if (!isTargetInsideSource) state = state.updateIn(expandTreePath(targetPath, \"children1\"), function (_oldChildren) {\n return newTargetChildren;\n });\n state = fixPathsInTree(state);\n return state;\n};\n\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {integer} delta\n * @param {*} srcKey\n */\nvar setFieldSrc = function setFieldSrc(state, path, srcKey, config) {\n var keepInputOnChangeFieldSrc = config.settings.keepInputOnChangeFieldSrc;\n\n // get fieldType for \"memory effect\"\n var currentRule = state.getIn(expandTreePath(path));\n var currentType = currentRule.get(\"type\");\n var currentProperties = currentRule.get(\"properties\");\n var currentField = currentProperties.get(\"field\");\n //const currentFieldSrc = currentProperties.get(\"fieldSrc\");\n var currentFielType = currentProperties.get(\"fieldType\");\n var currentFieldConfig = getFieldConfig(config, currentField);\n var fieldType = (currentFieldConfig === null || currentFieldConfig === void 0 ? void 0 : currentFieldConfig.type) || currentFielType;\n if (!fieldType || fieldType === \"!group\" || fieldType === \"!struct\") {\n fieldType = null;\n }\n var canReuseValue = !selectTypes.includes(fieldType);\n var keepInput = keepInputOnChangeFieldSrc && !isEmptyItem(currentRule, config, true) && canReuseValue;\n if (!keepInput) {\n // clear ALL properties\n state = state.setIn(expandTreePath(path, \"properties\"), defaultRuleProperties(config, null, null, false));\n } else {\n // clear non-relevant properties\n state = state.setIn(expandTreePath(path, \"properties\", \"field\"), null);\n // set fieldType for \"memory effect\"\n state = state.setIn(expandTreePath(path, \"properties\", \"fieldType\"), fieldType);\n }\n\n // set fieldSrc\n state = state.setIn(expandTreePath(path, \"properties\", \"fieldSrc\"), srcKey);\n return state;\n};\n\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {string} field\n */\nvar setField = function setField(state, path, newField, config, asyncListValues, __isInternal) {\n var _newFieldConfig$opera;\n var isInternalValueChange;\n if (!newField) return {\n tree: removeItem(state, path),\n isInternalValueChange: isInternalValueChange\n };\n var _config$settings2 = config.settings,\n fieldSeparator = _config$settings2.fieldSeparator,\n setOpOnChangeField = _config$settings2.setOpOnChangeField,\n showErrorMessage = _config$settings2.showErrorMessage,\n keepInputOnChangeFieldSrc = _config$settings2.keepInputOnChangeFieldSrc;\n if (Array.isArray(newField)) newField = newField.join(fieldSeparator);\n var currentType = state.getIn(expandTreePath(path, \"type\"));\n var currentProperties = state.getIn(expandTreePath(path, \"properties\"));\n var wasRuleGroup = currentType == \"rule_group\";\n var currentFieldSrc = currentProperties.get(\"fieldSrc\");\n var newFieldConfig = getFieldConfig(config, newField);\n if (!newFieldConfig) {\n console.warn(\"No config for LHS \".concat(newField));\n return {\n tree: state,\n isInternalValueChange: isInternalValueChange\n };\n }\n var fieldType = newFieldConfig.type;\n if (fieldType === \"!group\" || fieldType === \"!struct\") {\n fieldType = null;\n }\n var currentOperator = currentProperties.get(\"operator\");\n var currentOperatorOptions = currentProperties.get(\"operatorOptions\");\n var currentField = currentProperties.get(\"field\");\n var currentValue = currentProperties.get(\"value\");\n var _currentValueSrc = currentProperties.get(\"valueSrc\", new Immutable.List());\n var _currentValueType = currentProperties.get(\"valueType\", new Immutable.List());\n var isRuleGroup = newFieldConfig.type == \"!group\";\n var isRuleGroupExt = isRuleGroup && newFieldConfig.mode == \"array\";\n var isChangeToAnotherType = wasRuleGroup != isRuleGroup;\n var wasOkWithoutField = !currentField && currentFieldSrc && currentOperator;\n\n // If the newly selected field supports the same operator the rule currently\n // uses, keep it selected.\n var lastOp = newFieldConfig && ((_newFieldConfig$opera = newFieldConfig.operators) === null || _newFieldConfig$opera === void 0 ? void 0 : _newFieldConfig$opera.indexOf(currentOperator)) !== -1 ? currentOperator : null;\n var newOperator = null;\n var availOps = currentFieldSrc === \"func\" ? getOperatorsForType(config, fieldType) : getOperatorsForField(config, newField);\n if (availOps && availOps.length == 1) newOperator = availOps[0];else if (availOps && availOps.length > 1) {\n var _iterator2 = _createForOfIteratorHelper(setOpOnChangeField || []),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var strategy = _step2.value;\n if (strategy == \"keep\" && !isChangeToAnotherType) newOperator = lastOp;else if (strategy == \"default\") newOperator = getDefaultOperator(config, newField, false);else if (strategy == \"first\") newOperator = getFirstOperator(config, newField);\n if (newOperator)\n //found op for strategy\n break;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n if (!isRuleGroup && !newFieldConfig.operators) {\n console.warn(\"Type \".concat(newFieldConfig.type, \" is not supported\"));\n return {\n tree: state,\n isInternalValueChange: isInternalValueChange\n };\n }\n if (wasRuleGroup && !isRuleGroup) {\n state = state.setIn(expandTreePath(path, \"type\"), \"rule\");\n state = state.deleteIn(expandTreePath(path, \"children1\"));\n state = state.setIn(expandTreePath(path, \"properties\"), new Immutable.OrderedMap());\n }\n if (isRuleGroup) {\n state = state.setIn(expandTreePath(path, \"type\"), \"rule_group\");\n var _getNewValueForFieldO = getNewValueForFieldOp(config, config, currentProperties, newField, newOperator, \"field\", true),\n canReuseValue = _getNewValueForFieldO.canReuseValue,\n newValue = _getNewValueForFieldO.newValue,\n newValueSrc = _getNewValueForFieldO.newValueSrc,\n newValueType = _getNewValueForFieldO.newValueType,\n operatorCardinality = _getNewValueForFieldO.operatorCardinality;\n var groupProperties = defaultGroupProperties(config, newFieldConfig).merge({\n field: newField,\n fieldSrc: \"field\",\n mode: newFieldConfig.mode\n });\n if (isRuleGroupExt) {\n groupProperties = groupProperties.merge({\n operator: newOperator,\n value: newValue,\n valueSrc: newValueSrc,\n valueType: newValueType\n });\n }\n state = state.setIn(expandTreePath(path, \"children1\"), new Immutable.OrderedMap());\n state = state.setIn(expandTreePath(path, \"properties\"), groupProperties);\n if (newFieldConfig.initialEmptyWhere && operatorCardinality == 1) {// just `COUNT(grp) > 1` without `HAVING ..`\n // no childeren\n } else {\n state = addItem(state, path, \"rule\", uuid(), defaultRuleProperties(config, newField), config);\n }\n state = fixPathsInTree(state);\n } else {\n state = state.updateIn(expandTreePath(path, \"properties\"), function (map) {\n return map.withMutations(function (current) {\n var _getNewValueForFieldO2 = getNewValueForFieldOp(config, config, current, newField, newOperator, \"field\", true),\n canReuseValue = _getNewValueForFieldO2.canReuseValue,\n newValue = _getNewValueForFieldO2.newValue,\n newValueSrc = _getNewValueForFieldO2.newValueSrc,\n newValueType = _getNewValueForFieldO2.newValueType,\n newValueError = _getNewValueForFieldO2.newValueError;\n if (showErrorMessage) {\n current = current.set(\"valueError\", newValueError);\n }\n var newOperatorOptions = canReuseValue ? currentOperatorOptions : defaultOperatorOptions(config, newOperator, newField);\n isInternalValueChange = __isInternal; //todo: filter edge cases?\n return current.set(\"field\", newField)[\"delete\"](\"fieldType\") // remove \"memory effect\"\n .set(\"fieldSrc\", currentFieldSrc).set(\"operator\", newOperator).set(\"operatorOptions\", newOperatorOptions).set(\"value\", newValue).set(\"valueSrc\", newValueSrc).set(\"valueType\", newValueType)[\"delete\"](\"asyncListValues\");\n });\n });\n }\n return {\n tree: state,\n isInternalValueChange: isInternalValueChange\n };\n};\n\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {string} operator\n */\nvar setOperator = function setOperator(state, path, newOperator, config) {\n var showErrorMessage = config.settings.showErrorMessage;\n var properties = state.getIn(expandTreePath(path, \"properties\"));\n var children = state.getIn(expandTreePath(path, \"children1\"));\n var currentField = properties.get(\"field\");\n var currentFieldSrc = properties.get(\"fieldSrc\");\n var fieldConfig = getFieldConfig(config, currentField);\n var isRuleGroup = (fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.type) == \"!group\";\n var operatorConfig = getOperatorConfig(config, newOperator, currentField);\n var operatorCardinality = operatorConfig ? defaultValue(operatorConfig.cardinality, 1) : null;\n state = state.updateIn(expandTreePath(path, \"properties\"), function (map) {\n return map.withMutations(function (current) {\n var currentField = current.get(\"field\");\n var currentOperatorOptions = current.get(\"operatorOptions\");\n var _currentValue = current.get(\"value\", new Immutable.List());\n var _currentValueSrc = current.get(\"valueSrc\", new Immutable.List());\n var _currentOperator = current.get(\"operator\");\n var _getNewValueForFieldO3 = getNewValueForFieldOp(config, config, current, currentField, newOperator, \"operator\", true),\n canReuseValue = _getNewValueForFieldO3.canReuseValue,\n newValue = _getNewValueForFieldO3.newValue,\n newValueSrc = _getNewValueForFieldO3.newValueSrc,\n newValueType = _getNewValueForFieldO3.newValueType,\n newValueError = _getNewValueForFieldO3.newValueError;\n if (showErrorMessage) {\n current = current.set(\"valueError\", newValueError);\n }\n var newOperatorOptions = canReuseValue ? currentOperatorOptions : defaultOperatorOptions(config, newOperator, currentField);\n if (!canReuseValue) {\n current = current[\"delete\"](\"asyncListValues\");\n }\n return current.set(\"operator\", newOperator).set(\"operatorOptions\", newOperatorOptions).set(\"value\", newValue).set(\"valueSrc\", newValueSrc).set(\"valueType\", newValueType);\n });\n });\n if (isRuleGroup) {\n if (operatorCardinality == 0 && children.size == 0) {\n state = addItem(state, path, \"rule\", uuid(), defaultRuleProperties(config, currentField), config);\n }\n }\n return state;\n};\n\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {integer} delta\n * @param {*} value\n * @param {string} valueType\n * @param {*} asyncListValues\n * @param {boolean} __isInternal\n */\nvar setValue = function setValue(state, path, delta, value, valueType, config, asyncListValues, __isInternal) {\n var _config$settings3 = config.settings,\n fieldSeparator = _config$settings3.fieldSeparator,\n showErrorMessage = _config$settings3.showErrorMessage;\n var isInternalValueChange;\n var valueSrc = state.getIn(expandTreePath(path, \"properties\", \"valueSrc\", delta + \"\")) || null;\n if (valueSrc === \"field\" && Array.isArray(value)) value = value.join(fieldSeparator);\n var field = state.getIn(expandTreePath(path, \"properties\", \"field\")) || null;\n //const fieldSrc = state.getIn(expandTreePath(path, \"properties\", \"fieldSrc\")) || null;\n var operator = state.getIn(expandTreePath(path, \"properties\", \"operator\")) || null;\n var operatorConfig = getOperatorConfig(config, operator, field);\n var operatorCardinality = operator ? defaultValue(operatorConfig.cardinality, 1) : null;\n var isEndValue = false;\n var calculatedValueType = valueType || calculateValueType(value, valueSrc, config);\n var canFix = false;\n var _validateValue = validateValue(config, field, field, operator, value, calculatedValueType, valueSrc, asyncListValues, canFix, isEndValue, true),\n _validateValue2 = _slicedToArray(_validateValue, 2),\n validateError = _validateValue2[0],\n fixedValue = _validateValue2[1];\n var isValid = !validateError;\n if (fixedValue !== value) {\n // eg, get exact value from listValues (not string)\n value = fixedValue;\n }\n\n // Additional validation for range values\n if (showErrorMessage) {\n var w = getWidgetForFieldOp(config, field, operator, valueSrc);\n var fieldWidgetDefinition = getFieldWidgetConfig(config, field, operator, w, valueSrc);\n var valueSrcs = Array.from({\n length: operatorCardinality\n }, function (_, i) {\n return state.getIn(expandTreePath(path, \"properties\", \"valueSrc\", i + \"\")) || null;\n });\n if (operatorConfig && operatorConfig.validateValues && valueSrcs.filter(function (vs) {\n return vs == \"value\" || vs == null;\n }).length == operatorCardinality) {\n var values = Array.from({\n length: operatorCardinality\n }, function (_, i) {\n return i == delta ? value : state.getIn(expandTreePath(path, \"properties\", \"value\", i + \"\")) || null;\n });\n var jsValues = fieldWidgetDefinition && fieldWidgetDefinition.toJS ? values.map(function (v) {\n return fieldWidgetDefinition.toJS.call(config.ctx, v, fieldWidgetDefinition);\n }) : values;\n var rangeValidateError = operatorConfig.validateValues(jsValues);\n state = state.setIn(expandTreePath(path, \"properties\", \"valueError\", operatorCardinality), rangeValidateError);\n }\n }\n var lastValueArr = state.getIn(expandTreePath(path, \"properties\", \"value\"));\n if (!lastValueArr) {\n state = state.setIn(expandTreePath(path, \"properties\", \"value\"), new Immutable.List(new Array(operatorCardinality))).setIn(expandTreePath(path, \"properties\", \"valueType\"), new Immutable.List(new Array(operatorCardinality))).setIn(expandTreePath(path, \"properties\", \"valueError\"), new Immutable.List(new Array(operatorCardinality)));\n }\n var lastValue = state.getIn(expandTreePath(path, \"properties\", \"value\", delta + \"\"));\n var lastError = state.getIn(expandTreePath(path, \"properties\", \"valueError\", delta));\n var isLastEmpty = lastValue == undefined;\n var isLastError = !!lastError;\n if (isValid || showErrorMessage) {\n state = state.deleteIn(expandTreePath(path, \"properties\", \"asyncListValues\"));\n // set only good value\n if (typeof value === \"undefined\") {\n state = state.setIn(expandTreePath(path, \"properties\", \"value\", delta + \"\"), undefined);\n state = state.setIn(expandTreePath(path, \"properties\", \"valueType\", delta + \"\"), null);\n } else {\n if (asyncListValues) {\n state = state.setIn(expandTreePath(path, \"properties\", \"asyncListValues\"), asyncListValues);\n }\n state = state.setIn(expandTreePath(path, \"properties\", \"value\", delta + \"\"), value);\n state = state.setIn(expandTreePath(path, \"properties\", \"valueType\", delta + \"\"), calculatedValueType);\n isInternalValueChange = __isInternal && !isLastEmpty && !isLastError;\n }\n }\n if (showErrorMessage) {\n state = state.setIn(expandTreePath(path, \"properties\", \"valueError\", delta), validateError);\n }\n if (__isInternal && (isValid && isLastError || !isValid && !isLastError)) {\n state = state.setIn(expandTreePath(path, \"properties\", \"valueError\", delta), validateError);\n isInternalValueChange = false;\n }\n return {\n tree: state,\n isInternalValueChange: isInternalValueChange\n };\n};\n\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {integer} delta\n * @param {*} srcKey\n */\nvar setValueSrc = function setValueSrc(state, path, delta, srcKey, config) {\n var showErrorMessage = config.settings.showErrorMessage;\n var field = state.getIn(expandTreePath(path, \"properties\", \"field\")) || null;\n var fieldSrc = state.getIn(expandTreePath(path, \"properties\", \"fieldSrc\")) || null;\n var operator = state.getIn(expandTreePath(path, \"properties\", \"operator\")) || null;\n state = state.setIn(expandTreePath(path, \"properties\", \"value\", delta + \"\"), undefined);\n state = state.setIn(expandTreePath(path, \"properties\", \"valueType\", delta + \"\"), null);\n state = state.deleteIn(expandTreePath(path, \"properties\", \"asyncListValues\"));\n if (showErrorMessage) {\n // clear value error\n state = state.setIn(expandTreePath(path, \"properties\", \"valueError\", delta), null);\n\n // if current operator is range, clear possible range error\n var operatorConfig = getOperatorConfig(config, operator, field);\n var operatorCardinality = operator ? defaultValue(operatorConfig.cardinality, 1) : null;\n if (operatorConfig.validateValues) {\n state = state.setIn(expandTreePath(path, \"properties\", \"valueError\", operatorCardinality), null);\n }\n }\n\n // set valueSrc\n if (typeof srcKey === \"undefined\") {\n state = state.setIn(expandTreePath(path, \"properties\", \"valueSrc\", delta + \"\"), null);\n } else {\n state = state.setIn(expandTreePath(path, \"properties\", \"valueSrc\", delta + \"\"), srcKey);\n }\n\n // maybe set default value\n if (srcKey) {\n var properties = state.getIn(expandTreePath(path, \"properties\"));\n // this call should return canReuseValue = false and provide default value\n var _getNewValueForFieldO4 = getNewValueForFieldOp(config, config, properties, field, operator, \"valueSrc\", true),\n canReuseValue = _getNewValueForFieldO4.canReuseValue,\n newValue = _getNewValueForFieldO4.newValue,\n newValueSrc = _getNewValueForFieldO4.newValueSrc,\n newValueType = _getNewValueForFieldO4.newValueType,\n newValueError = _getNewValueForFieldO4.newValueError;\n if (!canReuseValue && newValueSrc.get(delta) == srcKey) {\n state = state.setIn(expandTreePath(path, \"properties\", \"value\", delta + \"\"), newValue.get(delta));\n state = state.setIn(expandTreePath(path, \"properties\", \"valueType\", delta + \"\"), newValueType.get(delta));\n }\n }\n return state;\n};\n\n/**\n * @param {Immutable.Map} state\n * @param {Immutable.List} path\n * @param {string} name\n * @param {*} value\n */\nvar setOperatorOption = function setOperatorOption(state, path, name, value) {\n return state.setIn(expandTreePath(path, \"properties\", \"operatorOptions\", name), value);\n};\n\n/**\n * @param {Immutable.Map} state\n */\nvar checkEmptyGroups = function checkEmptyGroups(state, config) {\n var canLeaveEmptyGroup = config.settings.canLeaveEmptyGroup;\n if (!canLeaveEmptyGroup) {\n state = fixEmptyGroupsInTree(state);\n }\n return state;\n};\n\n/**\n * \n */\nvar calculateValueType = function calculateValueType(value, valueSrc, config) {\n var calculatedValueType = null;\n if (value) {\n if (valueSrc === \"field\") {\n var fieldConfig = getFieldConfig(config, value);\n if (fieldConfig) {\n calculatedValueType = fieldConfig.type;\n }\n } else if (valueSrc === \"func\") {\n var funcKey = value.get(\"func\");\n if (funcKey) {\n var funcConfig = getFuncConfig(config, funcKey);\n if (funcConfig) {\n calculatedValueType = funcConfig.returnType;\n }\n }\n }\n }\n return calculatedValueType;\n};\nvar getField = function getField(state, path) {\n var field = state.getIn(expandTreePath(path, \"properties\", \"field\")) || null;\n return field;\n};\nvar emptyDrag = {\n dragging: {\n id: null,\n x: null,\n y: null,\n w: null,\n h: null\n },\n mousePos: {},\n dragStart: {\n id: null\n }\n};\nvar getActionMeta = function getActionMeta(action, state) {\n if (!action || !action.type) return null;\n var actionKeysToOmit = [\"config\", \"asyncListValues\", \"__isInternal\"];\n var actionTypesToIgnore = [constants.SET_TREE, constants.SET_DRAG_START, constants.SET_DRAG_PROGRESS, constants.SET_DRAG_END];\n var meta = mapValues(omit(action, actionKeysToOmit), applyToJS);\n var affectedField = action.path && getField(state.tree, action.path) || action.field;\n if (affectedField) {\n var _affectedField;\n if ((_affectedField = affectedField) !== null && _affectedField !== void 0 && _affectedField.toJS) affectedField = affectedField.toJS();\n meta.affectedField = affectedField;\n }\n if (actionTypesToIgnore.includes(action.type) || action.type.indexOf(\"@@redux\") == 0) meta = null;\n return meta;\n};\n\n/**\n * @param {Immutable.Map} state\n * @param {object} action\n */\nexport default (function (config, tree, getMemoizedTree, setLastTree) {\n var initTree = tree;\n var emptyState = _objectSpread({\n tree: initTree\n }, emptyDrag);\n return function () {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : emptyState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var unset = {\n __isInternalValueChange: undefined,\n __lastAction: undefined\n };\n var set = {};\n var actionMeta = getActionMeta(action, state);\n switch (action === null || action === void 0 ? void 0 : action.type) {\n case constants.SET_TREE:\n {\n var validatedTree = getMemoizedTree(action.config, action.tree);\n set.tree = validatedTree;\n break;\n }\n case constants.ADD_CASE_GROUP:\n {\n set.tree = addNewGroup(state.tree, action.path, \"case_group\", action.id, action.properties, action.config, action.children, action.meta);\n break;\n }\n case constants.ADD_GROUP:\n {\n set.tree = addNewGroup(state.tree, action.path, \"group\", action.id, action.properties, action.config, action.children, action.meta);\n break;\n }\n case constants.REMOVE_GROUP:\n {\n set.tree = removeGroup(state.tree, action.path, action.config);\n break;\n }\n case constants.ADD_RULE:\n {\n set.tree = addItem(state.tree, action.path, action.ruleType, action.id, action.properties, action.config, action.children);\n break;\n }\n case constants.REMOVE_RULE:\n {\n set.tree = removeRule(state.tree, action.path, action.config);\n break;\n }\n case constants.SET_CONJUNCTION:\n {\n set.tree = setConjunction(state.tree, action.path, action.conjunction);\n break;\n }\n case constants.SET_NOT:\n {\n set.tree = setNot(state.tree, action.path, action.not);\n break;\n }\n case constants.SET_FIELD:\n {\n var _setField = setField(state.tree, action.path, action.field, action.config, action.asyncListValues, action.__isInternal),\n _tree = _setField.tree,\n isInternalValueChange = _setField.isInternalValueChange;\n set.__isInternalValueChange = isInternalValueChange;\n set.tree = _tree;\n break;\n }\n case constants.SET_FIELD_SRC:\n {\n set.tree = setFieldSrc(state.tree, action.path, action.srcKey, action.config);\n break;\n }\n case constants.SET_LOCK:\n {\n set.tree = setLock(state.tree, action.path, action.lock);\n break;\n }\n case constants.SET_OPERATOR:\n {\n set.tree = setOperator(state.tree, action.path, action.operator, action.config);\n break;\n }\n case constants.SET_VALUE:\n {\n var _setValue = setValue(state.tree, action.path, action.delta, action.value, action.valueType, action.config, action.asyncListValues, action.__isInternal),\n _tree2 = _setValue.tree,\n _isInternalValueChange = _setValue.isInternalValueChange;\n set.__isInternalValueChange = _isInternalValueChange;\n set.tree = _tree2;\n break;\n }\n case constants.SET_VALUE_SRC:\n {\n set.tree = setValueSrc(state.tree, action.path, action.delta, action.srcKey, action.config);\n break;\n }\n case constants.SET_OPERATOR_OPTION:\n {\n set.tree = setOperatorOption(state.tree, action.path, action.name, action.value);\n break;\n }\n case constants.MOVE_ITEM:\n {\n set.tree = moveItem(state.tree, action.fromPath, action.toPath, action.placement, action.config);\n break;\n }\n case constants.SET_DRAG_START:\n {\n set.dragStart = action.dragStart;\n set.dragging = action.dragging;\n set.mousePos = action.mousePos;\n break;\n }\n case constants.SET_DRAG_PROGRESS:\n {\n set.mousePos = action.mousePos;\n set.dragging = action.dragging;\n break;\n }\n case constants.SET_DRAG_END:\n {\n set.tree = checkEmptyGroups(state.tree, config);\n set = _objectSpread(_objectSpread({}, set), emptyDrag);\n break;\n }\n default:\n {\n break;\n }\n }\n if (actionMeta) {\n set.__lastAction = actionMeta;\n }\n if (setLastTree && set.tree && state.tree) {\n setLastTree(state.tree);\n }\n return _objectSpread(_objectSpread(_objectSpread({}, state), unset), set);\n };\n});","import Immutable from \"immutable\";\nimport { toImmutableList } from \"../utils/stuff\";\nimport * as constants from \"../stores/constants\";\nimport { defaultRuleProperties, defaultGroupProperties } from \"../utils/defaultUtils\";\nimport uuid from \"../utils/uuid\";\n\n/**\n * @param {object} config\n * @param {Immutable.Map} tree\n */\nexport var setTree = function setTree(config, tree) {\n return {\n type: constants.SET_TREE,\n tree: tree,\n config: config\n };\n};\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {Immutable.Map} properties\n */\nexport var addRule = function addRule(config, path, properties) {\n var ruleType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"rule\";\n var children = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var parentRuleGroupPath = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n return {\n type: constants.ADD_RULE,\n ruleType: ruleType,\n children: children,\n path: toImmutableList(path),\n id: uuid(),\n properties: defaultRuleProperties(config, parentRuleGroupPath).merge(properties || {}),\n config: config\n };\n};\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n */\nexport var removeRule = function removeRule(config, path) {\n return {\n type: constants.REMOVE_RULE,\n path: toImmutableList(path),\n config: config\n };\n};\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {Immutable.Map} properties\n */\nexport var addDefaultCaseGroup = function addDefaultCaseGroup(config, path, properties) {\n var children = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n return {\n type: constants.ADD_CASE_GROUP,\n path: toImmutableList(path),\n children: children,\n id: uuid(),\n properties: defaultGroupProperties(config).merge(properties || {}),\n config: config,\n meta: {\n isDefaultCase: true\n }\n };\n};\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {Immutable.Map} properties\n */\nexport var addCaseGroup = function addCaseGroup(config, path, properties) {\n var children = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n return {\n type: constants.ADD_CASE_GROUP,\n path: toImmutableList(path),\n children: children,\n id: uuid(),\n properties: defaultGroupProperties(config).merge(properties || {}),\n config: config\n };\n};\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {Immutable.Map} properties\n */\nexport var addGroup = function addGroup(config, path, properties) {\n var children = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n return {\n type: constants.ADD_GROUP,\n path: toImmutableList(path),\n children: children,\n id: uuid(),\n properties: defaultGroupProperties(config).merge(properties || {}),\n config: config\n };\n};\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n */\nexport var removeGroup = function removeGroup(config, path) {\n return {\n type: constants.REMOVE_GROUP,\n path: toImmutableList(path),\n config: config\n };\n};\n\n/**\n * @param {object} config\n * @param {Array} fromPath\n * @param {Array} toPath\n * @param {String} placement, see constants PLACEMENT_*\n */\nexport var moveItem = function moveItem(config, fromPath, toPath, placement) {\n return {\n type: constants.MOVE_ITEM,\n fromPath: toImmutableList(fromPath),\n toPath: toImmutableList(toPath),\n placement: placement,\n config: config\n };\n};","import * as constants from \"../stores/constants\";\nimport { toImmutableList } from \"../utils/stuff\";\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {string} conjunction\n */\nexport var setConjunction = function setConjunction(config, path, conjunction) {\n return {\n type: constants.SET_CONJUNCTION,\n path: toImmutableList(path),\n conjunction: conjunction\n };\n};\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {bool} not\n */\nexport var setNot = function setNot(config, path, not) {\n return {\n type: constants.SET_NOT,\n path: toImmutableList(path),\n not: not\n };\n};\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {bool} lock\n */\nexport var setLock = function setLock(config, path, lock) {\n return {\n type: constants.SET_LOCK,\n path: toImmutableList(path),\n lock: lock\n };\n};","import * as constants from \"../stores/constants\";\nimport { toImmutableList } from \"../utils/stuff\";\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {string} field\n */\nexport var setField = function setField(config, path, field, asyncListValues, __isInternal) {\n return {\n type: constants.SET_FIELD,\n path: toImmutableList(path),\n field: field,\n config: config,\n asyncListValues: asyncListValues,\n __isInternal: __isInternal\n };\n};\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {*} srcKey\n */\nexport var setFieldSrc = function setFieldSrc(config, path, srcKey) {\n return {\n type: constants.SET_FIELD_SRC,\n path: toImmutableList(path),\n srcKey: srcKey,\n config: config\n };\n};\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {string} operator\n */\nexport var setOperator = function setOperator(config, path, operator) {\n return {\n type: constants.SET_OPERATOR,\n path: toImmutableList(path),\n operator: operator,\n config: config\n };\n};\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {integer} delta\n * @param {*} value\n * @param {string} valueType\n * @param {*} asyncListValues\n * @param {boolean} __isInternal\n */\nexport var setValue = function setValue(config, path, delta, value, valueType, asyncListValues, __isInternal) {\n return {\n type: constants.SET_VALUE,\n path: toImmutableList(path),\n delta: delta,\n value: value,\n valueType: valueType,\n asyncListValues: asyncListValues,\n config: config,\n __isInternal: __isInternal\n };\n};\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {integer} delta\n * @param {*} srcKey\n */\nexport var setValueSrc = function setValueSrc(config, path, delta, srcKey) {\n return {\n type: constants.SET_VALUE_SRC,\n path: toImmutableList(path),\n delta: delta,\n srcKey: srcKey,\n config: config\n };\n};\n\n/**\n * @param {object} config\n * @param {Immutable.List} path\n * @param {string} name\n * @param {*} value\n */\nexport var setOperatorOption = function setOperatorOption(config, path, name, value) {\n return {\n type: constants.SET_OPERATOR_OPTION,\n path: toImmutableList(path),\n name: name,\n value: value,\n config: config\n };\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport * as Export from \"./export\";\nimport * as Import from \"./import\";\nimport * as BasicUtils from \"./utils\";\nimport * as BasicFuncs from \"./config/funcs\";\nimport CoreConfig, { ConfigMixins } from \"./config\";\nimport TreeStore from \"./stores/tree\";\nimport * as TreeActions from \"./actions\";\nvar Utils = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, BasicUtils), Export), Import), {}, {\n ConfigMixins: ConfigMixins\n});\nexport { Utils, Export, Import, BasicFuncs, CoreConfig, TreeStore, TreeActions };","import { TreeStore } from \"@react-awesome-query-builder/core\";\nexport default TreeStore;","import React from \"react\";\nexport default /*#__PURE__*/React.createContext();","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 React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\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 var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: 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\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nexport function createSubscription(store, parentSub) {\n var unsubscribe;\n var 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 var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\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\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = createSubscription(store);\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useIsomorphicLayoutEffect(function () {\n var subscription = contextValue.subscription;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n _excluded2 = [\"reactReduxForwardedRef\"];\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(function () {\n return effectFunc.apply(void 0, effectArgs);\n }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\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}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\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 var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var 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; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n error: error\n }\n });\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 var unsubscribeWrapper = function 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}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n selectorFactory is a func that is responsible for returning the selector function used to\r\n compute new props from state, props, and dispatch. For example:\r\n export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n thing: state.things[props.thingId],\r\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n }))(YourComponent)\r\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n if (process.env.NODE_ENV !== 'production') {\n if (renderCountProp !== undefined) {\n throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n }\n\n if (withRef) {\n throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n }\n\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n if (storeKey !== 'store') {\n throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n }\n }\n\n var Context = context;\n return function 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 \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\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 var reactReduxForwardedRef = props.reactReduxForwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n reactReduxForwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\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 && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var 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 var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var 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 <Provider>, \") + \"or pass a custom React context provider to <Provider> 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 var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\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 // 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 var subscription = createSubscription(store, didStoreComeFromProps ? null : 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 // `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 var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // 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\n var overriddenContextValue = useMemo(function () {\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: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\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 }, [store, previousStateUpdateResult, 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 useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // 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 var renderedWrappedComponent = useMemo(function () {\n return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\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 var renderedChild = useMemo(function () {\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 } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","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 var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var 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}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\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\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? 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, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\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 var 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}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","export default function bindActionCreators(actionCreators, dispatch) {\n var boundActionCreators = {};\n\n var _loop = function _loop(key) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = function () {\n return dispatch(actionCreator.apply(void 0, arguments));\n };\n }\n };\n\n for (var key in actionCreators) {\n _loop(key);\n }\n\n return boundActionCreators;\n}","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !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 whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var 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 var nextStateProps = mapStateToProps(state, ownProps);\n var 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 var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var 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} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n connect is a facade over connectAdvanced. It turns its args into a compatible\r\n selectorFactory, which has the signature:\r\n\r\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n \r\n connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n selectorFactory returns a final props selector from its mapStateToProps,\r\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n mergePropsFactories, and pure args.\r\n\r\n The resulting final props selector is called by the Connect component instance whenever\r\n it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default /*#__PURE__*/createConnect();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return createSubscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\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(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n if (newStoreState === latestStoreState.current) {\n return;\n }\n\n var _newSelectedState = latestSelector.current(newStoreState);\n\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\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 `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\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 var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\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 <div>{counter}</div>\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","export var ADD_GROUP = \"ADD_GROUP\";\nexport var ADD_CASE_GROUP = \"ADD_CASE_GROUP\";\nexport var REMOVE_GROUP = \"REMOVE_GROUP\";\nexport var SET_CONJUNCTION = \"SET_CONJUNCTION\";\nexport var SET_NOT = \"SET_NOT\";\nexport var ADD_RULE = \"ADD_RULE\";\nexport var REMOVE_RULE = \"REMOVE_RULE\";\nexport var SET_FIELD = \"SET_FIELD\";\nexport var SET_FIELD_SRC = \"SET_FIELD_SRC\";\nexport var SET_OPERATOR = \"SET_OPERATOR\";\nexport var SET_VALUE = \"SET_VALUE\";\nexport var SET_VALUE_SRC = \"SET_VALUE_SRC\";\nexport var SET_OPERATOR_OPTION = \"SET_OPERATOR_OPTION\";\nexport var SET_LOCK = \"SET_LOCK\";\nexport var SET_TREE = \"SET_TREE\";\nexport var MOVE_ITEM = \"MOVE_ITEM\";\nexport var PLACEMENT_AFTER = \"after\";\nexport var PLACEMENT_BEFORE = \"before\";\nexport var PLACEMENT_APPEND = \"append\";\nexport var PLACEMENT_PREPEND = \"prepend\";\nexport var SET_DRAG_PROGRESS = \"SET_DRAG_PROGRESS\";\nexport var SET_DRAG_START = \"SET_DRAG_START\";\nexport var SET_DRAG_END = \"SET_DRAG_END\";","import * as constants from \"../stores/constants\";\n\n/**\n * @param {Object} mousePos\n * @param {Object} dragging\n */\nexport var setDragProgress = function setDragProgress(mousePos, dragging) {\n return {\n type: constants.SET_DRAG_PROGRESS,\n mousePos: mousePos,\n dragging: dragging\n };\n};\n\n/**\n * @param {Object} dragStart\n * @param {Object} dragging\n * @param {Object} mousePos\n */\nexport var setDragStart = function setDragStart(dragStart, dragging, mousePos) {\n return {\n type: constants.SET_DRAG_START,\n dragStart: dragStart,\n dragging: dragging,\n mousePos: mousePos\n };\n};\n\n/**\n *\n */\nexport var setDragEnd = function setDragEnd() {\n return {\n type: constants.SET_DRAG_END\n };\n};","import { TreeActions } from \"@react-awesome-query-builder/core\";\nimport * as drag from \"./drag\";\nvar tree = TreeActions.tree,\n group = TreeActions.group,\n rule = TreeActions.rule;\nexport { tree, group, rule, drag };","import _typeof from \"@babel/runtime/helpers/typeof\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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; } } }; }\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); }\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; }\nimport pick from \"lodash/pick\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nvar _Utils$ConfigUtils = Utils.ConfigUtils,\n extendConfig = _Utils$ConfigUtils.extendConfig,\n configKeys = _Utils$ConfigUtils.configKeys;\nvar pickConfig = function pickConfig(props) {\n return pick(props, configKeys);\n};\nexport var createConfigMemo = function createConfigMemo() {\n var configStore = new Map();\n var maxSize = 2; // current and prev\n var configId = 0;\n var extendAndStore = function extendAndStore(config) {\n var extendedConfig = extendConfig(config, ++configId);\n if (configStore.size + 1 > maxSize) {\n configStore[\"delete\"](configStore.keys()[0]);\n }\n configStore.set(config, extendedConfig);\n return extendedConfig;\n };\n var findBasic = function findBasic(findConfig) {\n var _iterator = _createForOfIteratorHelper(configStore.keys()),\n _step;\n try {\n var _loop = function _loop() {\n var basicConfig = _step.value;\n var extConfig = configStore.get(basicConfig);\n var found = configKeys.map(function (k) {\n return extConfig[k] === findConfig[k];\n }).filter(function (v) {\n return !v;\n }).length === 0;\n if (found) {\n return {\n v: basicConfig\n };\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return findConfig;\n };\n var findExtended = function findExtended(findConfig) {\n // strict find:\n // return configStore.get(findConfig) || configStore.values().find(ec => ec === findConfig);\n var _iterator2 = _createForOfIteratorHelper(configStore.keys()),\n _step2;\n try {\n var _loop2 = function _loop2() {\n var savedConfig = _step2.value;\n var found = configKeys.map(function (k) {\n return savedConfig[k] === findConfig[k];\n }).filter(function (v) {\n return !v;\n }).length === 0;\n if (found) {\n return {\n v: configStore.get(savedConfig)\n };\n }\n };\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _ret2 = _loop2();\n if (_typeof(_ret2) === \"object\") return _ret2.v;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n var _iterator3 = _createForOfIteratorHelper(configStore.values()),\n _step3;\n try {\n var _loop3 = function _loop3() {\n var extendedConfig = _step3.value;\n var found = configKeys.map(function (k) {\n return extendedConfig[k] === findConfig[k];\n }).filter(function (v) {\n return !v;\n }).length === 0;\n if (found) {\n return {\n v: extendedConfig\n };\n }\n };\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _ret3 = _loop3();\n if (_typeof(_ret3) === \"object\") return _ret3.v;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return null;\n };\n var findOrExtend = function findOrExtend(config) {\n return findExtended(config) || extendAndStore(config);\n };\n return {\n getExtended: function getExtended(props) {\n return findOrExtend(pickConfig(props));\n },\n getBasic: findBasic\n };\n};","import _typeof from \"@babel/runtime/helpers/typeof\";\nexport var defaultValue = function defaultValue(value, _default) {\n return typeof value === \"undefined\" ? _default : value;\n};\nexport var truncateString = function truncateString(str, n, useWordBoundary) {\n if (!n || str.length <= n) {\n return str;\n }\n var subString = str.substr(0, n - 1);\n return (useWordBoundary ? subString.substr(0, subString.lastIndexOf(\" \")) : subString) + \"...\";\n};\nexport var immutableEqual = function immutableEqual(v1, v2) {\n if (v1 === v2) {\n return true;\n } else {\n return v1.equals(v2);\n }\n};\n\n// const deepEqual = function(v1, v2) {\n// if (v1 === v2) {\n// return true;\n// } else if (Map.isMap(v1)) {\n// return v1.equals(v2);\n// } else {\n// return JSON.stringify(v1) == JSON.stringify(v2);\n// }\n// };\n\nexport var shallowEqual = function shallowEqual(a, b) {\n var deep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (a === b) {\n return true;\n } else if (Array.isArray(a)) return shallowEqualArrays(a, b, deep);else if (a && typeof a.equals === \"function\") return a.equals(b);else if (_typeof(a) === \"object\") return shallowEqualObjects(a, b, deep);else return a === b;\n};\nfunction shallowEqualArrays(arrA, arrB) {\n var deep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (arrA === arrB) {\n return true;\n }\n if (!arrA || !arrB) {\n return false;\n }\n var len = arrA.length;\n if (arrB.length !== len) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n var isEqual = deep ? shallowEqual(arrA[i], arrB[i], deep) : arrA[i] === arrB[i];\n if (!isEqual) {\n return false;\n }\n }\n return true;\n}\nfunction shallowEqualObjects(objA, objB) {\n var deep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\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 var isEqual = deep ? shallowEqual(objA[key], objB[key], deep) : objA[key] === objB[key];\n if (!isEqual) {\n return false;\n }\n }\n return true;\n}\nvar isDev = function isDev() {\n return typeof process !== \"undefined\" && process.env && process.env.NODE_ENV == \"development\";\n};\nexport var getLogger = function getLogger() {\n var devMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var verbose = devMode != undefined ? devMode : isDev();\n return verbose ? console : {\n error: function error() {},\n log: function log() {},\n warn: function warn() {},\n debug: function debug() {},\n info: function info() {}\n };\n};\nexport var logger = getLogger();","import { immutableEqual } from \"../utils/stuff\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nvar validateAndFixTree = Utils.validateAndFixTree;\nexport var createValidationMemo = function createValidationMemo() {\n var originalTree;\n var validatedTree;\n var configId;\n return function (config, tree) {\n var oldConfig = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n var sanitizeTree = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n if (!tree) {\n return null;\n }\n if (config.__configId === configId && (immutableEqual(tree, originalTree) || immutableEqual(tree, validatedTree))) {\n return validatedTree;\n } else {\n configId = config.__configId;\n originalTree = tree;\n if (sanitizeTree === false) {\n validatedTree = validateAndFixTree(tree, null, config, oldConfig || config, false, false);\n } else {\n validatedTree = validateAndFixTree(tree, null, config, oldConfig || config);\n }\n return validatedTree;\n }\n };\n};","import React from \"react\";\nimport mapValues from \"lodash/mapValues\";\nimport { shallowEqual } from \"./stuff\";\nvar getReactContainerType = function getReactContainerType(el) {\n if (el._reactRootContainer) {\n return \"root\";\n }\n if (Object.getOwnPropertyNames(el).filter(function (k) {\n return k.startsWith(\"__reactContainer\");\n }).length > 0) {\n return \"container\";\n }\n return undefined;\n};\nvar getReactRootNodeType = function getReactRootNodeType(node) {\n if (!node) {\n return undefined;\n }\n var type = getReactContainerType(node);\n if (type !== undefined) {\n return type;\n } else {\n return getReactRootNodeType(node.parentNode);\n }\n};\nexport var isUsingLegacyReactDomRender = function isUsingLegacyReactDomRender(node) {\n return getReactRootNodeType(node) === \"root\";\n};\nexport var liteShouldComponentUpdate = function liteShouldComponentUpdate(self, config) {\n return function (nextProps, nextState) {\n var prevProps = self.props;\n var prevState = self.state;\n var should = nextProps != prevProps || nextState != prevState;\n if (should) {\n if (prevState == nextState && prevProps != nextProps) {\n var chs = [];\n for (var k in nextProps) {\n var changed = nextProps[k] != prevProps[k];\n if (changed) {\n if (config[k] == \"ignore\") changed = false;else if (config[k] == \"shallow_deep\") changed = !shallowEqual(nextProps[k], prevProps[k], true);else if (config[k] == \"shallow\") changed = !shallowEqual(nextProps[k], prevProps[k]);else if (typeof config[k] == \"function\") changed = config[k](nextProps[k], prevProps[k], nextState);\n }\n if (changed) chs.push(k);\n }\n if (!chs.length) should = false;\n }\n }\n return should;\n };\n};\nexport var pureShouldComponentUpdate = function pureShouldComponentUpdate(self) {\n return function (nextProps, nextState) {\n return !shallowEqual(self.props, nextProps) || !shallowEqual(self.state, nextState);\n };\n};\nvar canUseOldComponentWillReceiveProps = function canUseOldComponentWillReceiveProps() {\n var v = React.version.split(\".\").map(parseInt.bind(null, 10));\n return v[0] == 16 && v[1] < 3 || v[0] < 16;\n};\nexport var useOnPropsChanged = function useOnPropsChanged(obj) {\n // 1. `shouldComponentUpdate` should be called after `componentWillReceiveProps`\n // 2. `shouldComponentUpdate` should not be used for PureComponent\n\n // Because `useOnPropsChanged` can only be applied to `Component` not `PureComponent`, make it pure now\n if (!obj.shouldComponentUpdate) {\n obj.shouldComponentUpdate = pureShouldComponentUpdate(obj);\n }\n if (canUseOldComponentWillReceiveProps()) {\n // Use old method\n obj.componentWillReceiveProps = function (nextProps) {\n obj.onPropsChanged(nextProps);\n };\n } else {\n // Simulate `componentWillReceiveProps` with `shouldComponentUpdate`\n var origShouldComponentUpdate = obj.shouldComponentUpdate;\n var newShouldComponentUpdate = function newShouldComponentUpdate(nextProps, nextState) {\n var shouldNotify = !shallowEqual(obj.props, nextProps);\n if (shouldNotify) {\n obj.onPropsChanged(nextProps);\n }\n var shouldUpdate = origShouldComponentUpdate.call(obj, nextProps, nextState);\n return shouldUpdate;\n };\n obj.shouldComponentUpdate = newShouldComponentUpdate.bind(obj);\n }\n};\nexport var bindActionCreators = function bindActionCreators(actionCreators, config, dispatch) {\n return mapValues(actionCreators, function (actionCreator) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return dispatch(actionCreator.apply(void 0, [config].concat(args)));\n };\n });\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport merge from \"lodash/merge\";\nimport { connect } from \"react-redux\";\nimport context from \"../stores/context\";\nimport PropTypes from \"prop-types\";\nimport * as actions from \"../actions\";\nimport { immutableEqual } from \"../utils/stuff\";\nimport { useOnPropsChanged, liteShouldComponentUpdate, bindActionCreators } from \"../utils/reactUtils\";\nvar Query = /*#__PURE__*/function (_Component) {\n _inherits(Query, _Component);\n var _super = _createSuper(Query);\n function Query(props) {\n var _this;\n _classCallCheck(this, Query);\n _this = _super.call(this, props);\n _this.shouldComponentUpdate = liteShouldComponentUpdate(_assertThisInitialized(_this), {\n tree: function tree(nextValue) {\n if (nextValue === _this.oldValidatedTree && _this.oldValidatedTree === _this.validatedTree) {\n // Got value dispatched from QueryContainer\n // Ignore, because we've just rendered it\n return false;\n }\n return true;\n }\n });\n useOnPropsChanged(_assertThisInitialized(_this));\n _this._updateActions(props);\n\n // For preventive validation (tree and config consistency)\n // When config has changed from QueryContainer, \n // but new dispatched validated tree value is not in redux store yet (tree prop is old)\n _this.validatedTree = props.getMemoizedTree(props.config, props.tree, undefined, props.sanitizeTree);\n _this.oldValidatedTree = _this.validatedTree;\n\n //props.onChange && props.onChange(this.validatedTree, props.config);\n return _this;\n }\n _createClass(Query, [{\n key: \"_updateActions\",\n value: function _updateActions(props) {\n var config = props.config,\n dispatch = props.dispatch;\n this.actions = bindActionCreators(_objectSpread(_objectSpread(_objectSpread({}, actions.tree), actions.group), actions.rule), config, dispatch);\n }\n }, {\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var onChange = nextProps.onChange;\n var oldConfig = this.props.config;\n var newTree = nextProps.tree;\n var oldTree = this.props.tree;\n var newConfig = nextProps.config;\n this.oldValidatedTree = this.validatedTree;\n this.validatedTree = newTree;\n if (oldConfig !== newConfig) {\n this._updateActions(nextProps);\n this.validatedTree = nextProps.getMemoizedTree(newConfig, newTree, oldConfig);\n }\n var validatedTreeChanged = !immutableEqual(this.validatedTree, this.oldValidatedTree);\n if (validatedTreeChanged) {\n var newBasicConfig = nextProps.getBasicConfig(newConfig);\n onChange && onChange(this.validatedTree, newBasicConfig, nextProps.__lastAction);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n renderBuilder = _this$props.renderBuilder,\n dispatch = _this$props.dispatch,\n __isInternalValueChange = _this$props.__isInternalValueChange;\n var builderProps = {\n tree: this.validatedTree,\n actions: this.actions,\n config: config,\n dispatch: dispatch,\n __isInternalValueChange: __isInternalValueChange\n };\n return renderBuilder(builderProps);\n }\n }]);\n return Query;\n}(Component);\nQuery.propTypes = {\n config: PropTypes.object.isRequired,\n onChange: PropTypes.func,\n renderBuilder: PropTypes.func,\n tree: PropTypes.any //instanceOf(Immutable.Map)\n //dispatch: PropTypes.func.isRequired,\n //__isInternalValueChange\n //__lastAction\n //getMemoizedTree: PropTypes.func.isRequired,\n //getBasicConfig: PropTypes.func.isRequired,\n //sanitizeTree\n};\n\nvar ConnectedQuery = connect(function (state) {\n return {\n tree: state.tree,\n __isInternalValueChange: state.__isInternalValueChange,\n __lastAction: state.__lastAction\n };\n}, null, null, {\n context: context\n})(Query);\nConnectedQuery.displayName = \"ConnectedQuery\";\nexport default ConnectedQuery;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { Component, PureComponent } from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport PropTypes from \"prop-types\";\nimport treeStoreReducer from \"../stores/tree\";\nimport context from \"../stores/context\";\nimport { createStore } from \"redux\";\nimport { Provider } from \"react-redux\";\nimport * as actions from \"../actions\";\nimport { createConfigMemo } from \"../utils/configUtils\";\nimport { immutableEqual } from \"../utils/stuff\";\nimport { createValidationMemo } from \"../utils/validation\";\nimport { liteShouldComponentUpdate, useOnPropsChanged } from \"../utils/reactUtils\";\nimport ConnectedQuery from \"./Query\";\nvar defaultRoot = Utils.DefaultUtils.defaultRoot;\nvar QueryContainer = /*#__PURE__*/function (_Component) {\n _inherits(QueryContainer, _Component);\n var _super = _createSuper(QueryContainer);\n function QueryContainer(props, context) {\n var _this;\n _classCallCheck(this, QueryContainer);\n _this = _super.call(this, props, context);\n _this.setLastTree = function (lastTree) {\n if (_this.prevTree) {\n _this.prevprevTree = _this.prevTree;\n }\n _this.prevTree = lastTree;\n };\n _this.shouldComponentUpdate = liteShouldComponentUpdate(_assertThisInitialized(_this), {\n value: function value(nextValue, prevValue, state) {\n return false;\n }\n });\n useOnPropsChanged(_assertThisInitialized(_this));\n var _createConfigMemo = createConfigMemo(),\n getExtended = _createConfigMemo.getExtended,\n getBasic = _createConfigMemo.getBasic;\n _this.getMemoizedConfig = getExtended;\n _this.getBasicConfig = getBasic;\n _this.getMemoizedTree = createValidationMemo();\n var config = _this.getMemoizedConfig(props);\n var shouldCreateEmptyGroup = config.settings.shouldCreateEmptyGroup;\n var canAddDefaultRule = !shouldCreateEmptyGroup; // if prop `value` is not provided, can add default/empty rule?\n var emptyTree = defaultRoot(config, canAddDefaultRule);\n var sanitizeTree = !!props.value;\n var tree = props.value || emptyTree;\n var validatedTree = _this.getMemoizedTree(config, tree, undefined, sanitizeTree);\n var reducer = treeStoreReducer(config, validatedTree, _this.getMemoizedTree, _this.setLastTree);\n var store = createStore(reducer);\n _this.config = config;\n _this.state = {\n store: store\n };\n _this.QueryWrapper = function (pr) {\n return config.settings.renderProvider(pr, config.ctx);\n };\n return _this;\n }\n _createClass(QueryContainer, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n // compare configs\n var prevProps = this.props;\n var oldConfig = this.config;\n var nextConfig = this.getMemoizedConfig(nextProps);\n var isConfigChanged = oldConfig !== nextConfig;\n\n // compare trees\n var storeValue = this.state.store.getState().tree;\n var isTreeChanged = !immutableEqual(nextProps.value, this.props.value) && !immutableEqual(nextProps.value, storeValue);\n var currentTree = isTreeChanged ? nextProps.value || defaultRoot(nextProps) : storeValue;\n var isTreeTrulyChanged = isTreeChanged && !immutableEqual(nextProps.value, this.prevTree) && !immutableEqual(nextProps.value, this.prevprevTree);\n this.sanitizeTree = isTreeTrulyChanged || isConfigChanged;\n if (isConfigChanged) {\n if (prevProps.settings.renderProvider !== nextProps.settings.renderProvider) {\n this.QueryWrapper = function (props) {\n return nextConfig.settings.renderProvider(props, nextConfig.ctx);\n };\n }\n this.config = nextConfig;\n }\n if (isTreeChanged || isConfigChanged) {\n var validatedTree = this.getMemoizedTree(nextConfig, currentTree, oldConfig, this.sanitizeTree);\n //return Promise.resolve().then(() => {\n this.state.store.dispatch(actions.tree.setTree(nextConfig, validatedTree));\n //});\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n // `get_children` is deprecated!\n var _this$props = this.props,\n renderBuilder = _this$props.renderBuilder,\n get_children = _this$props.get_children,\n onChange = _this$props.onChange;\n var store = this.state.store;\n var config = this.config;\n var QueryWrapper = this.QueryWrapper;\n return /*#__PURE__*/React.createElement(QueryWrapper, {\n config: config\n }, /*#__PURE__*/React.createElement(Provider, {\n store: store,\n context: context\n }, /*#__PURE__*/React.createElement(ConnectedQuery, {\n config: config,\n getMemoizedTree: this.getMemoizedTree,\n getBasicConfig: this.getBasicConfig,\n sanitizeTree: this.sanitizeTree,\n onChange: onChange,\n renderBuilder: renderBuilder || get_children\n })));\n }\n }]);\n return QueryContainer;\n}(Component);\nQueryContainer.propTypes = {\n //config\n conjunctions: PropTypes.object.isRequired,\n fields: PropTypes.object.isRequired,\n types: PropTypes.object.isRequired,\n operators: PropTypes.object.isRequired,\n widgets: PropTypes.object.isRequired,\n settings: PropTypes.object.isRequired,\n ctx: PropTypes.object.isRequired,\n onChange: PropTypes.func,\n renderBuilder: PropTypes.func,\n value: PropTypes.any //instanceOf(Immutable.Map)\n};\nexport { QueryContainer as default };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport PropTypes from \"prop-types\";\nimport context from \"../../stores/context\";\nimport { pureShouldComponentUpdate } from \"../../utils/reactUtils\";\nimport { connect } from \"react-redux\";\nimport classNames from \"classnames\";\nvar getFieldConfig = Utils.ConfigUtils.getFieldConfig;\nvar createRuleContainer = function createRuleContainer(Rule) {\n var _class;\n return _class = /*#__PURE__*/function (_Component) {\n _inherits(RuleContainer, _Component);\n var _super = _createSuper(RuleContainer);\n function RuleContainer(props) {\n var _this;\n _classCallCheck(this, RuleContainer);\n _this = _super.call(this, props);\n _this.dummyFn = function () {};\n _this.removeSelf = function () {\n _this.props.actions.removeRule(_this.props.path);\n };\n _this.setLock = function () {\n var lock = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n _this.props.actions.setLock(_this.props.path, lock);\n };\n _this.setField = function (field, asyncListValues, __isInternal) {\n _this.props.actions.setField(_this.props.path, field, asyncListValues, __isInternal);\n };\n _this.setFieldSrc = function (srcKey) {\n _this.props.actions.setFieldSrc(_this.props.path, srcKey);\n };\n _this.setOperator = function (operator) {\n _this.props.actions.setOperator(_this.props.path, operator);\n };\n _this.setOperatorOption = function (name, value) {\n _this.props.actions.setOperatorOption(_this.props.path, name, value);\n };\n _this.setValue = function (delta, value, type, asyncListValues, __isInternal) {\n _this.props.actions.setValue(_this.props.path, delta, value, type, asyncListValues, __isInternal);\n };\n _this.setValueSrc = function (delta, srcKey) {\n _this.props.actions.setValueSrc(_this.props.path, delta, srcKey);\n };\n _this.pureShouldComponentUpdate = pureShouldComponentUpdate(_assertThisInitialized(_this));\n _this.dummyFn.isDummyFn = true;\n return _this;\n }\n _createClass(RuleContainer, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n var prevProps = this.props;\n var prevState = this.state;\n var should = this.pureShouldComponentUpdate(nextProps, nextState);\n if (should) {\n if (prevState == nextState && prevProps != nextProps) {\n var draggingId = nextProps.dragging.id || prevProps.dragging.id;\n var isDraggingMe = draggingId == nextProps.id;\n var chs = [];\n for (var k in nextProps) {\n var changed = nextProps[k] != prevProps[k];\n if (k == \"dragging\" && !isDraggingMe) {\n changed = false; //dragging another item -> ignore\n }\n\n if (changed) {\n chs.push(k);\n }\n }\n if (!chs.length) should = false;\n }\n }\n return should;\n }\n }, {\n key: \"render\",\n value: function render() {\n var isDraggingMe = this.props.dragging.id == this.props.id;\n var fieldConfig = getFieldConfig(this.props.config, this.props.field);\n var fieldType = this.props.fieldType || (fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.type) || null;\n var showErrorMessage = this.props.config.settings.showErrorMessage;\n var _isGroup = fieldConfig && fieldConfig.type == \"!struct\";\n var isInDraggingTempo = !isDraggingMe && this.props.isDraggingTempo;\n var valueError = this.props.valueError;\n var oneValueError = valueError && valueError.toArray().filter(function (e) {\n return !!e;\n }).shift() || null;\n var hasError = oneValueError != null && showErrorMessage;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"group-or-rule-container\", \"rule-container\", hasError ? \"rule-with-error\" : null),\n \"data-id\": this.props.id\n }, [isDraggingMe ? /*#__PURE__*/React.createElement(Rule, {\n key: \"dragging\",\n id: this.props.id,\n groupId: this.props.groupId,\n isDraggingMe: true,\n isDraggingTempo: true,\n dragging: this.props.dragging,\n setField: this.dummyFn,\n setFieldSrc: this.dummyFn,\n setOperator: this.dummyFn,\n setOperatorOption: this.dummyFn,\n setLock: this.dummyFn,\n removeSelf: this.dummyFn,\n setValue: this.dummyFn,\n setValueSrc: this.dummyFn,\n selectedField: this.props.field || null,\n selectedFieldSrc: this.props.fieldSrc || \"field\",\n selectedFieldType: fieldType,\n parentField: this.props.parentField || null,\n selectedOperator: this.props.operator || null,\n value: this.props.value || null,\n valueSrc: this.props.valueSrc || null,\n valueType: this.props.valueType || null,\n valueError: this.props.valueError || null,\n operatorOptions: this.props.operatorOptions,\n config: this.props.config,\n reordableNodesCnt: this.props.reordableNodesCnt,\n totalRulesCnt: this.props.totalRulesCnt,\n asyncListValues: this.props.asyncListValues,\n isLocked: this.props.isLocked,\n isTrueLocked: this.props.isTrueLocked,\n parentReordableNodesCnt: this.props.parentReordableNodesCnt\n }) : null, /*#__PURE__*/React.createElement(Rule, {\n key: this.props.id,\n id: this.props.id,\n groupId: this.props.groupId,\n isDraggingMe: isDraggingMe,\n isDraggingTempo: isInDraggingTempo,\n onDragStart: this.props.onDragStart,\n setLock: isInDraggingTempo ? this.dummyFn : this.setLock,\n removeSelf: isInDraggingTempo ? this.dummyFn : this.removeSelf,\n setField: isInDraggingTempo ? this.dummyFn : this.setField,\n setFieldSrc: isInDraggingTempo ? this.dummyFn : this.setFieldSrc,\n setOperator: isInDraggingTempo ? this.dummyFn : this.setOperator,\n setOperatorOption: isInDraggingTempo ? this.dummyFn : this.setOperatorOption,\n setValue: isInDraggingTempo ? this.dummyFn : this.setValue,\n setValueSrc: isInDraggingTempo ? this.dummyFn : this.setValueSrc,\n selectedField: this.props.field || null,\n selectedFieldSrc: this.props.fieldSrc || \"field\",\n selectedFieldType: fieldType,\n parentField: this.props.parentField || null,\n selectedOperator: this.props.operator || null,\n value: this.props.value || null,\n valueSrc: this.props.valueSrc || null,\n valueType: this.props.valueType || null,\n valueError: this.props.valueError || null,\n operatorOptions: this.props.operatorOptions,\n config: this.props.config,\n reordableNodesCnt: this.props.reordableNodesCnt,\n totalRulesCnt: this.props.totalRulesCnt,\n asyncListValues: this.props.asyncListValues,\n isLocked: this.props.isLocked,\n isTrueLocked: this.props.isTrueLocked,\n parentReordableNodesCnt: this.props.parentReordableNodesCnt\n })]);\n }\n }]);\n return RuleContainer;\n }(Component), _class.propTypes = {\n id: PropTypes.string.isRequired,\n groupId: PropTypes.string,\n config: PropTypes.object.isRequired,\n path: PropTypes.any.isRequired,\n //instanceOf(Immutable.List)\n operator: PropTypes.string,\n field: PropTypes.any,\n fieldSrc: PropTypes.string,\n fieldType: PropTypes.string,\n actions: PropTypes.object.isRequired,\n //{removeRule: Function, setField, setFieldSrc, setOperator, setOperatorOption, setValue, setValueSrc, ...}\n onDragStart: PropTypes.func,\n value: PropTypes.any,\n //depends on widget\n valueSrc: PropTypes.any,\n asyncListValues: PropTypes.array,\n valueError: PropTypes.any,\n operatorOptions: PropTypes.object,\n reordableNodesCnt: PropTypes.number,\n parentField: PropTypes.string,\n //from RuleGroup\n isLocked: PropTypes.bool,\n isTrueLocked: PropTypes.bool,\n //connected:\n dragging: PropTypes.object,\n //{id, x, y, w, h}\n isDraggingTempo: PropTypes.bool\n }, _class;\n};\nexport default (function (Rule) {\n var ConnectedRuleContainer = connect(function (state) {\n return {\n dragging: state.dragging\n };\n }, null, null, {\n context: context\n })(createRuleContainer(Rule));\n ConnectedRuleContainer.displayName = \"ConnectedRuleContainer\";\n return ConnectedRuleContainer;\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport { connect } from \"react-redux\";\nimport { logger } from \"../../utils/stuff\";\nimport context from \"../../stores/context\";\nimport * as constants from \"../../stores/constants\";\nimport PropTypes from \"prop-types\";\nimport * as actions from \"../../actions\";\nimport { pureShouldComponentUpdate, useOnPropsChanged, isUsingLegacyReactDomRender } from \"../../utils/reactUtils\";\nvar clone = Utils.clone;\nvar getFlatTree = Utils.TreeUtils.getFlatTree;\nvar _isReorderingTree = false;\nvar createSortableContainer = function createSortableContainer(Builder) {\n var _class;\n var CanMoveFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n return _class = /*#__PURE__*/function (_Component) {\n _inherits(SortableContainer, _Component);\n var _super = _createSuper(SortableContainer);\n function SortableContainer(props) {\n var _this;\n _classCallCheck(this, SortableContainer);\n _this = _super.call(this, props);\n _this._getEventTarget = function (e, dragStart) {\n return e && e.__mocked_window || document.body || window;\n };\n _this.onDragStart = function (id, dom, e) {\n var treeEl = dom.closest(\".query-builder\");\n if (_this._isUsingLegacyReactDomRender === undefined) {\n _this._isUsingLegacyReactDomRender = isUsingLegacyReactDomRender(treeEl);\n }\n document.body.classList.add(\"qb-dragging\");\n treeEl.classList.add(\"qb-dragging\");\n var treeElContainer = treeEl.closest(\".query-builder-container\") || treeEl;\n treeElContainer = _this._getScrollParent(treeElContainer) || document.body;\n var scrollTop = treeElContainer.scrollTop;\n var _dragEl = _this._getDraggableNodeEl(treeEl);\n var _plhEl = _this._getPlaceholderNodeEl(treeEl);\n var tmpAllGroups = treeEl.querySelectorAll(\".group--children\");\n var anyGroup = tmpAllGroups.length ? tmpAllGroups[0] : null;\n var groupPadding;\n if (anyGroup) {\n groupPadding = window.getComputedStyle(anyGroup, null).getPropertyValue(\"padding-left\");\n groupPadding = parseInt(groupPadding);\n }\n var dragging = {\n id: id,\n x: dom.offsetLeft,\n y: dom.offsetTop,\n w: dom.offsetWidth,\n h: dom.offsetHeight,\n itemInfo: _this.tree.items[id],\n paddingLeft: groupPadding\n };\n var dragStart = {\n id: id,\n x: dom.offsetLeft,\n y: dom.offsetTop,\n scrollTop: scrollTop,\n clientX: e.clientX,\n clientY: e.clientY,\n itemInfo: clone(_this.tree.items[id]),\n treeEl: treeEl,\n treeElContainer: treeElContainer\n };\n var mousePos = {\n clientX: e.clientX,\n clientY: e.clientY\n };\n var target = _this._getEventTarget(e, dragStart);\n _this.eventTarget = target;\n target.addEventListener(\"mousemove\", _this.onDrag);\n target.addEventListener(\"mouseup\", _this.onDragEnd);\n _this.props.setDragStart(dragStart, dragging, mousePos);\n };\n _this.onDrag = function (e) {\n var doHandleDrag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var dragging = Object.assign({}, _this.props.dragging);\n var startDragging = _this.props.dragStart;\n var paddingLeft = dragging.paddingLeft; //this.props.paddingLeft;\n var treeElContainer = startDragging.treeElContainer;\n var scrollTop = treeElContainer.scrollTop;\n dragging.itemInfo = _this.tree.items[dragging.id];\n if (!dragging.itemInfo) {\n return;\n }\n var mousePos = {\n clientX: e.clientX,\n clientY: e.clientY\n };\n var startMousePos = {\n clientX: startDragging.clientX,\n clientY: startDragging.clientY\n };\n if (e.__mock_dom) {\n var treeEl = startDragging.treeEl;\n var dragEl = _this._getDraggableNodeEl(treeEl);\n var plhEl = _this._getPlaceholderNodeEl(treeEl);\n e.__mock_dom({\n treeEl: treeEl,\n dragEl: dragEl,\n plhEl: plhEl\n });\n }\n\n //first init plX/plY\n if (!startDragging.plX) {\n var _treeEl = startDragging.treeEl;\n var _plhEl2 = _this._getPlaceholderNodeEl(_treeEl);\n if (_plhEl2) {\n startDragging.plX = _plhEl2.getBoundingClientRect().left + window.scrollX;\n startDragging.plY = _plhEl2.getBoundingClientRect().top + window.scrollY;\n }\n }\n var startX = startDragging.x;\n var startY = startDragging.y;\n var startClientX = startDragging.clientX;\n var startClientY = startDragging.clientY;\n var startScrollTop = startDragging.scrollTop;\n var pos = {\n x: startX + (e.clientX - startClientX),\n y: startY + (e.clientY - startClientY) + (scrollTop - startScrollTop)\n };\n dragging.x = pos.x;\n dragging.y = pos.y;\n dragging.paddingLeft = paddingLeft;\n dragging.mousePos = mousePos;\n dragging.startMousePos = startMousePos;\n _this.props.setDragProgress(mousePos, dragging);\n var moved = doHandleDrag ? _this.handleDrag(dragging, e, CanMoveFn) : false;\n if (!moved) {\n if (e.preventDefault) e.preventDefault();\n }\n };\n _this.onDragEnd = function () {\n var treeEl = _this.props.dragStart.treeEl;\n _this.props.setDragEnd();\n treeEl.classList.remove(\"qb-dragging\");\n document.body.classList.remove(\"qb-dragging\");\n _this._cacheEls = {};\n var target = _this.eventTarget || _this._getEventTarget();\n target.removeEventListener(\"mousemove\", _this.onDrag);\n target.removeEventListener(\"mouseup\", _this.onDragEnd);\n };\n _this.pureShouldComponentUpdate = pureShouldComponentUpdate(_assertThisInitialized(_this));\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.onPropsChanged(props);\n return _this;\n }\n _createClass(SortableContainer, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n this.tree = getFlatTree(nextProps.tree);\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n var prevProps = this.props;\n var prevState = this.state;\n var should = this.pureShouldComponentUpdate(nextProps, nextState);\n if (should) {\n if (prevState == nextState && prevProps != nextProps) {\n var chs = [];\n for (var k in nextProps) {\n var changed = nextProps[k] != prevProps[k];\n if (changed) {\n //don't render <Builder> on dragging - appropriate redux-connected components will do it\n if (k != \"dragging\" && k != \"mousePos\") chs.push(k);\n }\n }\n if (!chs.length) should = false;\n }\n }\n return should;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(_prevProps, _prevState) {\n var dragging = this.props.dragging;\n var startDragging = this.props.dragStart;\n _isReorderingTree = false;\n if (startDragging && startDragging.id) {\n dragging.itemInfo = this.tree.items[dragging.id];\n if (dragging.itemInfo) {\n if (dragging.itemInfo.index != startDragging.itemInfo.index || dragging.itemInfo.parent != startDragging.itemInfo.parent) {\n var treeEl = startDragging.treeEl;\n var treeElContainer = startDragging.treeElContainer;\n var plhEl = this._getPlaceholderNodeEl(treeEl, true);\n if (plhEl) {\n var plX = plhEl.getBoundingClientRect().left + window.scrollX;\n var plY = plhEl.getBoundingClientRect().top + window.scrollY;\n var oldPlX = startDragging.plX;\n var oldPlY = startDragging.plY;\n var scrollTop = treeElContainer.scrollTop;\n startDragging.plX = plX;\n startDragging.plY = plY;\n startDragging.itemInfo = clone(dragging.itemInfo);\n startDragging.y = plhEl.offsetTop;\n startDragging.x = plhEl.offsetLeft;\n startDragging.clientY += plY - oldPlY;\n startDragging.clientX += plX - oldPlX;\n if (treeElContainer != document.body) startDragging.scrollTop = scrollTop;\n this.onDrag(this.props.mousePos, false);\n }\n }\n }\n }\n }\n }, {\n key: \"_getNodeElById\",\n value: function _getNodeElById(treeEl, indexId) {\n var ignoreCache = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (indexId == null) return null;\n if (!this._cacheEls) this._cacheEls = {};\n var el = this._cacheEls[indexId];\n if (el && document.contains(el) && !ignoreCache) return el;\n el = treeEl.querySelector('.group-or-rule-container[data-id=\"' + indexId + '\"]');\n this._cacheEls[indexId] = el;\n return el;\n }\n }, {\n key: \"_getDraggableNodeEl\",\n value: function _getDraggableNodeEl(treeEl) {\n var ignoreCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (!this._cacheEls) this._cacheEls = {};\n var el = this._cacheEls[\"draggable\"];\n if (el && document.contains(el) && !ignoreCache) return el;\n var els = treeEl.getElementsByClassName(\"qb-draggable\");\n el = els.length ? els[0] : null;\n this._cacheEls[\"draggable\"] = el;\n return el;\n }\n }, {\n key: \"_getPlaceholderNodeEl\",\n value: function _getPlaceholderNodeEl(treeEl) {\n var ignoreCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (!this._cacheEls) this._cacheEls = {};\n var el = this._cacheEls[\"placeholder\"];\n if (el && document.contains(el) && !ignoreCache) return el;\n var els = treeEl.getElementsByClassName(\"qb-placeholder\");\n el = els.length ? els[0] : null;\n this._cacheEls[\"placeholder\"] = el;\n return el;\n }\n }, {\n key: \"_isScrollable\",\n value: function _isScrollable(node) {\n var overflowY = window.getComputedStyle(node)[\"overflow-y\"];\n return (overflowY === \"scroll\" || overflowY === \"auto\") && node.scrollHeight > node.offsetHeight;\n }\n }, {\n key: \"_getScrollParent\",\n value: function _getScrollParent(node) {\n if (node == null) return null;\n if (node === document.body || this._isScrollable(node)) {\n return node;\n } else {\n return this._getScrollParent(node.parentNode);\n }\n }\n }, {\n key: \"handleDrag\",\n value: function handleDrag(dragInfo, e, canMoveFn) {\n var _this2 = this;\n var canMoveBeforeAfterGroup = true;\n var itemInfo = dragInfo.itemInfo;\n var paddingLeft = dragInfo.paddingLeft;\n var moveInfo = null;\n var treeEl = this.props.dragStart.treeEl;\n var dragId = dragInfo.id;\n var dragEl = this._getDraggableNodeEl(treeEl);\n var plhEl = this._getPlaceholderNodeEl(treeEl);\n var dragRect, plhRect, hovRect, treeRect;\n if (dragEl && plhEl) {\n dragRect = dragEl.getBoundingClientRect();\n plhRect = plhEl.getBoundingClientRect();\n if (!plhRect.width) {\n return;\n }\n var dragDirs = {\n hrz: 0,\n vrt: 0\n };\n if (dragRect.top < plhRect.top) dragDirs.vrt = -1; //up\n else if (dragRect.bottom > plhRect.bottom) dragDirs.vrt = +1; //down\n if (dragRect.left > plhRect.left) dragDirs.hrz = +1; //right\n else if (dragRect.left < plhRect.left) dragDirs.hrz = -1; //left\n\n treeRect = treeEl.getBoundingClientRect();\n var trgCoord = {\n x: treeRect.left + (treeRect.right - treeRect.left) / 2,\n y: dragDirs.vrt >= 0 ? dragRect.bottom : dragRect.top\n };\n var hovCNodeEl;\n if (e.__mocked_hov_container) {\n hovCNodeEl = e.__mocked_hov_container;\n } else {\n var hovNodeEl = document.elementFromPoint(trgCoord.x, trgCoord.y - 1);\n hovCNodeEl = hovNodeEl ? hovNodeEl.closest(\".group-or-rule-container\") : null;\n if (!hovCNodeEl && hovNodeEl && hovNodeEl.classList.contains(\"query-builder-container\")) {\n var _hovNodeEl$firstChild;\n // fix 2022-01-24 - get root .group-or-rule-container\n var rootGroupContainer = hovNodeEl === null || hovNodeEl === void 0 || (_hovNodeEl$firstChild = hovNodeEl.firstChild) === null || _hovNodeEl$firstChild === void 0 ? void 0 : _hovNodeEl$firstChild.firstChild;\n if (rootGroupContainer && rootGroupContainer.classList.contains(\"group-or-rule-container\")) {\n hovCNodeEl = rootGroupContainer;\n }\n }\n }\n if (!hovCNodeEl) {\n logger.log(\"out of tree bounds!\");\n } else {\n var isGroup = hovCNodeEl.classList.contains(\"group-container\");\n var hovNodeId = hovCNodeEl.getAttribute(\"data-id\");\n var hovEl = hovCNodeEl;\n var doAppend = false;\n var doPrepend = false;\n if (hovEl) {\n hovRect = hovEl.getBoundingClientRect();\n var hovHeight = hovRect.bottom - hovRect.top;\n var hovII = this.tree.items[hovNodeId];\n if (!hovII) {\n throw new Error(\"There is an issue with rendering. If you use Next.js, please check getServerSideProps() method.\");\n }\n var trgRect = null,\n trgEl = null,\n trgII = null,\n altII = null; //for canMoveBeforeAfterGroup\n\n if (dragDirs.vrt == 0) {\n trgII = itemInfo;\n trgEl = plhEl;\n if (trgEl) trgRect = trgEl.getBoundingClientRect();\n } else {\n if (isGroup) {\n if (dragDirs.vrt > 0) {\n //down\n //take group header (for prepend only)\n var hovInnerEl = hovCNodeEl.getElementsByClassName(\"group--header\");\n var hovEl2 = hovInnerEl.length ? hovInnerEl[0] : null;\n if (hovEl2) {\n var hovRect2 = hovEl2.getBoundingClientRect();\n var hovHeight2 = hovRect2.bottom - hovRect2.top;\n var isOverHover = dragRect.bottom - hovRect2.top > hovHeight2 * 3 / 4;\n if (isOverHover && hovII.top > dragInfo.itemInfo.top) {\n trgII = hovII;\n trgRect = hovRect2;\n trgEl = hovEl2;\n doPrepend = true;\n }\n }\n } else if (dragDirs.vrt < 0) {\n //up\n if (hovII.lev >= itemInfo.lev) {\n //take whole group\n var isClimbToHover = hovRect.bottom - dragRect.top >= 2;\n if (isClimbToHover && hovII.top < dragInfo.itemInfo.top) {\n trgII = hovII;\n trgRect = hovRect;\n trgEl = hovEl;\n doAppend = true;\n }\n }\n }\n if (!doPrepend && !doAppend || canMoveBeforeAfterGroup) {\n //take whole group and check if we can move before/after group\n var _isOverHover = dragDirs.vrt < 0 //up\n ? hovRect.bottom - dragRect.top > hovHeight - 5 : dragRect.bottom - hovRect.top > hovHeight - 5;\n if (_isOverHover) {\n if (!doPrepend && !doAppend) {\n trgII = hovII;\n trgRect = hovRect;\n trgEl = hovEl;\n }\n if (canMoveBeforeAfterGroup) {\n altII = hovII;\n }\n }\n }\n } else {\n //check if we can move before/after group\n var _isOverHover2 = dragDirs.vrt < 0 //up\n ? hovRect.bottom - dragRect.top > hovHeight / 2 : dragRect.bottom - hovRect.top > hovHeight / 2;\n if (_isOverHover2) {\n trgII = hovII;\n trgRect = hovRect;\n trgEl = hovEl;\n }\n }\n }\n var isSamePos = trgII && trgII.id == dragId;\n if (trgRect) {\n var dragLeftOffset = dragRect.left - treeRect.left;\n var trgLeftOffset = trgRect.left - treeRect.left;\n var _trgLev = trgLeftOffset / paddingLeft;\n var dragLev = Math.max(0, Math.round(dragLeftOffset / paddingLeft));\n\n //find all possible moves\n var availMoves = [];\n var altMoves = []; //alternatively can move after/before group, if can't move into it\n if (isSamePos) {\n //do nothing\n } else {\n if (isGroup) {\n if (doAppend) {\n availMoves.push([constants.PLACEMENT_APPEND, trgII, trgII.lev + 1]);\n } else if (doPrepend) {\n availMoves.push([constants.PLACEMENT_PREPEND, trgII, trgII.lev + 1]);\n }\n //alt\n if (canMoveBeforeAfterGroup && altII) {\n // fix 2022-01-24: do prepend/append instead of before/after for root\n var isToRoot = altII.lev == 0;\n // fix 2022-01-25: fix prepend/append instead of before/after for case_group\n var isToCase = altII.type == \"case_group\" && itemInfo.type != \"case_group\";\n var prevCaseId = altII.prev && this.tree.items[altII.prev].caseId;\n var nextCaseId = altII.next && this.tree.items[altII.next].caseId;\n if (itemInfo.caseId == prevCaseId) prevCaseId = null;\n if (itemInfo.caseId == nextCaseId) nextCaseId = null;\n var prevCase = prevCaseId && this.tree.items[prevCaseId];\n var nextCase = nextCaseId && this.tree.items[nextCaseId];\n if (dragDirs.vrt > 0) {\n //down\n if (isToRoot) {\n altMoves.push([constants.PLACEMENT_APPEND, altII, altII.lev + 1]);\n } else if (isToCase && nextCase) {\n altMoves.push([constants.PLACEMENT_PREPEND, nextCase, nextCase.lev + 1]);\n } else {\n altMoves.push([constants.PLACEMENT_AFTER, altII, altII.lev]);\n }\n } else if (dragDirs.vrt < 0) {\n //up\n if (isToRoot) {\n altMoves.push([constants.PLACEMENT_PREPEND, altII, altII.lev + 1]);\n } else if (isToCase && prevCase) {\n altMoves.push([constants.PLACEMENT_APPEND, prevCase, prevCase.lev + 1]);\n } else {\n altMoves.push([constants.PLACEMENT_BEFORE, altII, altII.lev]);\n }\n }\n }\n }\n if (!doAppend && !doPrepend) {\n if (dragDirs.vrt < 0) {\n //up\n availMoves.push([constants.PLACEMENT_BEFORE, trgII, trgII.lev]);\n } else if (dragDirs.vrt > 0) {\n //down\n availMoves.push([constants.PLACEMENT_AFTER, trgII, trgII.lev]);\n }\n }\n }\n\n //add case\n var addCaseII = function addCaseII(am) {\n var toII = am[1];\n var fromCaseII = itemInfo.caseId ? _this2.tree.items[itemInfo.caseId] : null;\n var toCaseII = toII.caseId ? _this2.tree.items[toII.caseId] : null;\n return [].concat(_toConsumableArray(am), [fromCaseII, toCaseII]);\n };\n availMoves = availMoves.map(addCaseII);\n altMoves = altMoves.map(addCaseII);\n\n //sanitize\n availMoves = availMoves.filter(function (am) {\n var placement = am[0];\n var trg = am[1];\n if ((placement == constants.PLACEMENT_BEFORE || placement == constants.PLACEMENT_AFTER) && trg.parent == null) return false;\n if (trg.collapsed && (placement == constants.PLACEMENT_APPEND || placement == constants.PLACEMENT_PREPEND)) return false;\n var isInside = trg.id == itemInfo.id;\n if (!isInside) {\n var tmp = trg;\n while (tmp.parent) {\n tmp = _this2.tree.items[tmp.parent];\n if (tmp.id == itemInfo.id) {\n isInside = true;\n break;\n }\n }\n }\n return !isInside;\n }).map(function (am) {\n var placement = am[0],\n toII = am[1],\n _lev = am[2],\n _fromCaseII = am[3],\n _toCaseII = am[4];\n var toParentII = null;\n if (placement == constants.PLACEMENT_APPEND || placement == constants.PLACEMENT_PREPEND) toParentII = toII;else toParentII = _this2.tree.items[toII.parent];\n if (toParentII && toParentII.parent == null) toParentII = null;\n am[5] = toParentII;\n return am;\n });\n var bestMode = null;\n var filteredMoves = availMoves.filter(function (am) {\n return _this2.canMove(itemInfo, am[1], am[0], am[3], am[4], am[5], canMoveFn);\n });\n if (canMoveBeforeAfterGroup && filteredMoves.length == 0 && altMoves.length > 0) {\n filteredMoves = altMoves.filter(function (am) {\n return _this2.canMove(itemInfo, am[1], am[0], am[3], am[4], am[5], canMoveFn);\n });\n }\n var levs = filteredMoves.map(function (am) {\n return am[2];\n });\n var curLev = itemInfo.lev;\n var allLevs = levs.concat(curLev);\n var closestDragLev = null;\n if (allLevs.indexOf(dragLev) != -1) closestDragLev = dragLev;else if (dragLev > Math.max.apply(Math, _toConsumableArray(allLevs))) closestDragLev = Math.max.apply(Math, _toConsumableArray(allLevs));else if (dragLev < Math.min.apply(Math, _toConsumableArray(allLevs))) closestDragLev = Math.min.apply(Math, _toConsumableArray(allLevs));\n bestMode = filteredMoves.find(function (am) {\n return am[2] == closestDragLev;\n });\n if (!isSamePos && !bestMode && filteredMoves.length) bestMode = filteredMoves[0];\n moveInfo = bestMode;\n }\n }\n }\n }\n if (moveInfo) {\n this.move(itemInfo, moveInfo[1], moveInfo[0], moveInfo[3]);\n\n // logger.log(\"DRAG-N-DROP\", JSON.stringify({\n // dragRect,\n // plhRect,\n // treeRect,\n // hovRect,\n // startMousePos: dragInfo.startMousePos,\n // mousePos: dragInfo.mousePos,\n // }));\n return true;\n }\n return false;\n }\n }, {\n key: \"canMove\",\n value: function canMove(fromII, toII, placement, fromCaseII, toCaseII, toParentII, canMoveFn) {\n if (!fromII || !toII) return false;\n if (fromII.id === toII.id) return false;\n var _this$props$config$se = this.props.config.settings,\n canRegroup = _this$props$config$se.canRegroup,\n canRegroupCases = _this$props$config$se.canRegroupCases,\n maxNesting = _this$props$config$se.maxNesting,\n maxNumberOfRules = _this$props$config$se.maxNumberOfRules,\n canLeaveEmptyCase = _this$props$config$se.canLeaveEmptyCase;\n var newLev = toParentII ? toParentII.lev + 1 : toII.lev;\n var newDepthLev = newLev + (fromII.depth || 0);\n var isBeforeAfter = placement == constants.PLACEMENT_BEFORE || placement == constants.PLACEMENT_AFTER;\n var isPend = placement == constants.PLACEMENT_PREPEND || placement == constants.PLACEMENT_APPEND;\n var isLev1 = isBeforeAfter && toII.lev == 1 || isPend && toII.lev == 0;\n var isParentChange = fromII.parent != toII.parent;\n var isStructChange = isPend || isParentChange;\n // can't move `case_group` anywhere but before/after anoter `case_group`\n var isForbiddenStructChange = fromII.type == \"case_group\" && !isLev1\n // can't restruct `rule_group`\n || fromII.parentType == \"rule_group\" || toII.type == \"rule_group\" || toII.parentType == \"rule_group\"\n // only `case_group` can be placed under `switch_group`\n || fromII.type != \"case_group\" && toII.type == \"case_group\" && isBeforeAfter || fromII.type != \"case_group\" && toII.type == \"switch_group\"\n // can't move rule/group to another case\n || !canRegroupCases && fromII.caseId != toII.caseId;\n var isLockedChange = toII.isLocked || fromII.isLocked || toParentII && toParentII.isLocked;\n if (maxNesting && newDepthLev > maxNesting) return false;\n if (isStructChange && (!canRegroup || isForbiddenStructChange || isLockedChange)) return false;\n if (fromII.type != \"case_group\" && fromII.caseId != toII.caseId) {\n var isLastFromCase = fromCaseII ? fromCaseII._height == 2 : false;\n var newRulesInTargetCase = toCaseII ? toCaseII.leafsCount + 1 : 0;\n if (maxNumberOfRules && newRulesInTargetCase > maxNumberOfRules) return false;\n if (isLastFromCase && !canLeaveEmptyCase) return false;\n }\n if (fromII.type == \"case_group\" && (fromII.isDefaultCase || toII.isDefaultCase || toII.type == \"switch_group\" && placement == constants.PLACEMENT_APPEND)) {\n // leave default case alone\n return false;\n }\n var res = true;\n if (canMoveFn) {\n res = canMoveFn(fromII.node.toJS(), toII.node.toJS(), placement, toParentII ? toParentII.node.toJS() : null);\n }\n return res;\n }\n }, {\n key: \"move\",\n value: function move(fromII, toII, placement, toParentII) {\n if (!this._isUsingLegacyReactDomRender) {\n _isReorderingTree = true;\n }\n //logger.log(\"move\", fromII, toII, placement, toParentII);\n this.props.actions.moveItem(fromII.path, toII.path, placement);\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(Builder, _extends({}, this.props, {\n onDragStart: this.onDragStart\n }));\n }\n }]);\n return SortableContainer;\n }(Component), _class.propTypes = {\n tree: PropTypes.any.isRequired,\n //instanceOf(Immutable.Map)\n actions: PropTypes.object.isRequired // {moveItem: Function, ..}\n //... see Builder\n }, _class;\n};\nexport default (function (Builder) {\n var CanMoveFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var ConnectedSortableContainer = connect(function (state) {\n return {\n dragging: state.dragging,\n dragStart: state.dragStart,\n mousePos: state.mousePos\n };\n }, {\n setDragStart: actions.drag.setDragStart,\n setDragProgress: actions.drag.setDragProgress,\n setDragEnd: actions.drag.setDragEnd\n }, null, {\n context: context\n })(createSortableContainer(Builder, CanMoveFn));\n ConnectedSortableContainer.displayName = \"ConnectedSortableContainer\";\n return ConnectedSortableContainer;\n});\nexport { _isReorderingTree };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nvar _excluded = [\"isDraggingTempo\", \"isDraggingMe\", \"dragging\"];\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { _isReorderingTree } from \"./SortableContainer\";\nimport classNames from \"classnames\";\nexport default (function (className) {\n return function (GroupOrRule) {\n var _class;\n return _class = /*#__PURE__*/function (_PureComponent) {\n _inherits(Draggable, _PureComponent);\n var _super = _createSuper(Draggable);\n function Draggable(props) {\n var _this;\n _classCallCheck(this, Draggable);\n _this = _super.call(this, props);\n _this.handleDraggerMouseDown = function (e) {\n var nodeId = _this.props.id;\n var dom = _this.wrapper.current;\n if (_this.props.onDragStart) {\n _this.props.onDragStart(nodeId, dom, e);\n }\n };\n _this.wrapper = /*#__PURE__*/React.createRef();\n return _this;\n }\n _createClass(Draggable, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n isDraggingTempo = _this$props.isDraggingTempo,\n isDraggingMe = _this$props.isDraggingMe,\n dragging = _this$props.dragging,\n otherProps = _objectWithoutProperties(_this$props, _excluded);\n var isTrueLocked = otherProps.isTrueLocked;\n var styles = {};\n if (isDraggingMe && isDraggingTempo) {\n if (_isReorderingTree) {\n // don't apply old styles for dragging tempo during reorder\n } else {\n styles = {\n top: dragging.y,\n left: dragging.x,\n width: dragging.w\n };\n }\n }\n var cn = classNames(className, \"group-or-rule\", isDraggingMe && isDraggingTempo ? \"qb-draggable\" : null, isDraggingMe && !isDraggingTempo ? \"qb-placeholder\" : null, isTrueLocked ? \"locked\" : null);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: cn,\n style: styles,\n ref: this.wrapper,\n \"data-id\": this.props.id\n }, /*#__PURE__*/React.createElement(GroupOrRule, _extends({\n handleDraggerMouseDown: this.handleDraggerMouseDown,\n isDraggingMe: isDraggingMe,\n isDraggingTempo: isDraggingTempo\n }, otherProps)));\n }\n }]);\n return Draggable;\n }(PureComponent), _class.propTypes = {\n isDraggingTempo: PropTypes.bool,\n isDraggingMe: PropTypes.bool,\n onDragStart: PropTypes.func,\n dragging: PropTypes.object,\n //{id, x, y, w, h}\n isLocked: PropTypes.bool,\n isTrueLocked: PropTypes.bool\n }, _class;\n };\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport PropTypes from \"prop-types\";\nimport keys from \"lodash/keys\";\nimport pickBy from \"lodash/pickBy\";\nimport mapValues from \"lodash/mapValues\";\nimport { useOnPropsChanged } from \"../../utils/reactUtils\";\nvar _Utils$ConfigUtils = Utils.ConfigUtils,\n getFieldConfig = _Utils$ConfigUtils.getFieldConfig,\n getOperatorConfig = _Utils$ConfigUtils.getOperatorConfig;\nvar Operator = /*#__PURE__*/function (_Component) {\n _inherits(Operator, _Component);\n var _super = _createSuper(Operator);\n function Operator(props) {\n var _this;\n _classCallCheck(this, Operator);\n _this = _super.call(this, props);\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.onPropsChanged(props);\n return _this;\n }\n _createClass(Operator, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var prevProps = this.props;\n var keysForMeta = [\"config\", \"selectedField\", \"selectedFieldSrc\", \"selectedFieldType\", \"selectedOperator\"];\n var needUpdateMeta = !this.meta || keysForMeta.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n if (needUpdateMeta) {\n this.meta = this.getMeta(nextProps);\n }\n }\n }, {\n key: \"getMeta\",\n value: function getMeta(_ref) {\n var _config$types$selecte;\n var config = _ref.config,\n selectedField = _ref.selectedField,\n selectedFieldType = _ref.selectedFieldType,\n selectedOperator = _ref.selectedOperator;\n var fieldConfig = getFieldConfig(config, selectedField);\n var operators = _toConsumableArray((fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.operators) || ((_config$types$selecte = config.types[selectedFieldType]) === null || _config$types$selecte === void 0 ? void 0 : _config$types$selecte.operators) || []);\n if (!selectedField && !operators.includes(selectedOperator)) {\n // eg. `prox` field was selected, then `fieldSrc` changed to `func`\n // But `text` type excludes `proximity` operator in config, so add manually\n operators.push(selectedOperator);\n }\n var operatorsOptions = mapValues(pickBy(config.operators, function (item, key) {\n return (operators === null || operators === void 0 ? void 0 : operators.indexOf(key)) !== -1;\n }), function (_opts, op) {\n return getOperatorConfig(config, op, selectedField);\n });\n var items = this.buildOptions(config, operatorsOptions, operators);\n var selectedOpts = operatorsOptions[selectedOperator] || {};\n var placeholder = this.props.config.settings.operatorPlaceholder;\n var selectedKey = selectedOperator;\n var selectedKeys = selectedKey ? [selectedKey] : null;\n var selectedPath = selectedKeys;\n var selectedLabel = selectedOpts.label;\n return {\n placeholder: placeholder,\n items: items,\n selectedKey: selectedKey,\n selectedKeys: selectedKeys,\n selectedPath: selectedPath,\n selectedLabel: selectedLabel,\n selectedOpts: selectedOpts,\n fieldConfig: fieldConfig\n };\n }\n }, {\n key: \"buildOptions\",\n value: function buildOptions(config, fields, ops) {\n if (!fields || !ops) return null;\n return keys(fields).sort(function (a, b) {\n return ops.indexOf(a) - ops.indexOf(b);\n }).map(function (fieldKey) {\n var field = fields[fieldKey];\n var label = field.label;\n return {\n key: fieldKey,\n path: fieldKey,\n label: label\n };\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n customProps = _this$props.customProps,\n setOperator = _this$props.setOperator,\n readonly = _this$props.readonly,\n id = _this$props.id,\n groupId = _this$props.groupId;\n var renderOperator = config.settings.renderOperator;\n var renderProps = _objectSpread({\n id: id,\n groupId: groupId,\n config: config,\n customProps: customProps,\n readonly: readonly,\n setField: setOperator\n }, this.meta);\n if (!renderProps.items) return null;\n return renderOperator(renderProps, config.ctx);\n }\n }]);\n return Operator;\n}(Component);\nOperator.propTypes = {\n id: PropTypes.string,\n groupId: PropTypes.string,\n config: PropTypes.object.isRequired,\n selectedField: PropTypes.any,\n selectedFieldType: PropTypes.string,\n selectedFieldSrc: PropTypes.string,\n selectedOperator: PropTypes.string,\n readonly: PropTypes.bool,\n //actions\n setOperator: PropTypes.func.isRequired\n};\nexport { Operator as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React from \"react\";\nvar Col = function Col(_ref) {\n var children = _ref.children,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"div\", props, children);\n};\nvar dummyFn = function dummyFn() {};\nvar DragIcon = function DragIcon() {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"gray\",\n width: \"18px\",\n height: \"18px\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0h24v24H0V0z\",\n fill: \"none\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\"\n }));\n};\nvar WithConfirmFn = function WithConfirmFn(Cmp) {\n return function (props) {\n var useConfirm = props.config.settings.useConfirm;\n var confirmFn = useConfirm ? useConfirm.call(props.config.ctx, props.config.ctx) : null;\n return /*#__PURE__*/React.createElement(Cmp, _extends({}, props, {\n confirmFn: confirmFn\n }));\n };\n};\nexport { Col, dummyFn, DragIcon, WithConfirmFn };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nimport Operator from \"./Operator\";\nimport { Col } from \"../utils\";\nvar OperatorWrapper = /*#__PURE__*/function (_PureComponent) {\n _inherits(OperatorWrapper, _PureComponent);\n var _super = _createSuper(OperatorWrapper);\n function OperatorWrapper() {\n _classCallCheck(this, OperatorWrapper);\n return _super.apply(this, arguments);\n }\n _createClass(OperatorWrapper, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n selectedField = _this$props.selectedField,\n selectedFieldSrc = _this$props.selectedFieldSrc,\n selectedFieldType = _this$props.selectedFieldType,\n selectedOperator = _this$props.selectedOperator,\n setOperator = _this$props.setOperator,\n selectedFieldParts = _this$props.selectedFieldParts,\n showOperator = _this$props.showOperator,\n showOperatorLabel = _this$props.showOperatorLabel,\n selectedFieldWidgetConfig = _this$props.selectedFieldWidgetConfig,\n readonly = _this$props.readonly,\n id = _this$props.id,\n groupId = _this$props.groupId;\n var operator = showOperator && /*#__PURE__*/React.createElement(Col, {\n key: \"operators-for-\" + (selectedFieldParts || []).join(\"_\"),\n className: \"rule--operator\"\n }, config.settings.showLabels && /*#__PURE__*/React.createElement(\"label\", {\n className: \"rule--label\"\n }, config.settings.operatorLabel), /*#__PURE__*/React.createElement(Operator, {\n key: \"operator\",\n config: config,\n selectedField: selectedField,\n selectedFieldSrc: selectedFieldSrc,\n selectedFieldType: selectedFieldType,\n selectedOperator: selectedOperator,\n setOperator: setOperator,\n readonly: readonly,\n id: id,\n groupId: groupId\n }));\n var hiddenOperator = showOperatorLabel && /*#__PURE__*/React.createElement(Col, {\n key: \"operators-for-\" + (selectedFieldParts || []).join(\"_\"),\n className: \"rule--operator\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"rule--operator-wrapper\"\n }, config.settings.showLabels ? /*#__PURE__*/React.createElement(\"label\", {\n className: \"rule--label\"\n }, \"\\xA0\") : null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"rule--operator-text-wrapper\"\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"rule--operator-text\"\n }, selectedFieldWidgetConfig.operatorInlineLabel))));\n return [operator, hiddenOperator];\n }\n }]);\n return OperatorWrapper;\n}(PureComponent);\nexport { OperatorWrapper as default };","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport PropTypes from \"prop-types\";\nimport { truncateString } from \"../../utils/stuff\";\nimport { useOnPropsChanged } from \"../../utils/reactUtils\";\nimport last from \"lodash/last\";\nimport keys from \"lodash/keys\";\nvar getFieldPathLabels = Utils.RuleUtils.getFieldPathLabels;\nvar _Utils$ConfigUtils = Utils.ConfigUtils,\n getFieldConfig = _Utils$ConfigUtils.getFieldConfig,\n getFieldParts = _Utils$ConfigUtils.getFieldParts,\n getFieldPathParts = _Utils$ConfigUtils.getFieldPathParts;\nvar Field = /*#__PURE__*/function (_Component) {\n _inherits(Field, _Component);\n var _super = _createSuper(Field);\n function Field(props) {\n var _this;\n _classCallCheck(this, Field);\n _this = _super.call(this, props);\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.onPropsChanged(props);\n return _this;\n }\n _createClass(Field, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var prevProps = this.props;\n var keysForMeta = [\"selectedField\", \"selectedFieldSrc\", \"selectedFieldType\", \"config\", \"parentField\"];\n var needUpdateMeta = !this.meta || keysForMeta.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n if (needUpdateMeta) {\n this.meta = this.getMeta(nextProps);\n }\n }\n }, {\n key: \"getMeta\",\n value: function getMeta(_ref) {\n var selectedField = _ref.selectedField,\n selectedFieldType = _ref.selectedFieldType,\n config = _ref.config,\n parentField = _ref.parentField;\n var selectedKey = selectedField;\n var _config$settings = config.settings,\n maxLabelsLength = _config$settings.maxLabelsLength,\n fieldSeparatorDisplay = _config$settings.fieldSeparatorDisplay,\n fieldPlaceholder = _config$settings.fieldPlaceholder,\n fieldSeparator = _config$settings.fieldSeparator;\n var isFieldSelected = !!selectedField;\n var placeholder = !isFieldSelected ? truncateString(fieldPlaceholder, maxLabelsLength) : null;\n var currField = isFieldSelected ? getFieldConfig(config, selectedKey) : null;\n var selectedOpts = currField || {};\n var selectedKeys = getFieldPathParts(selectedKey, config);\n var selectedPath = getFieldPathParts(selectedKey, config, true);\n var selectedLabel = this.getFieldLabel(currField, selectedKey, config);\n var partsLabels = getFieldPathLabels(selectedKey, config);\n var selectedFullLabel = partsLabels ? partsLabels.join(fieldSeparatorDisplay) : null;\n if (selectedFullLabel == selectedLabel || parentField) selectedFullLabel = null;\n var selectedAltLabel = selectedOpts.label2;\n var parentFieldPath = getFieldParts(parentField, config);\n var parentFieldConfig = parentField ? getFieldConfig(config, parentField) : null;\n var sourceFields = parentField ? parentFieldConfig && parentFieldConfig.subfields : config.fields;\n var lookingForFieldType = !isFieldSelected && selectedFieldType;\n var items = this.buildOptions(parentFieldPath, config, sourceFields, lookingForFieldType, parentFieldPath);\n\n // Field source has been chnaged, no new field selected, but op & value remains\n var errorText = lookingForFieldType ? \"Please select field\" : null;\n return {\n placeholder: placeholder,\n items: items,\n parentField: parentField,\n selectedKey: selectedKey,\n selectedKeys: selectedKeys,\n selectedPath: selectedPath,\n selectedLabel: selectedLabel,\n selectedOpts: selectedOpts,\n selectedAltLabel: selectedAltLabel,\n selectedFullLabel: selectedFullLabel,\n errorText: errorText\n };\n }\n }, {\n key: \"getFieldLabel\",\n value: function getFieldLabel(fieldOpts, fieldKey, config) {\n if (!fieldKey) return null;\n var maxLabelsLength = config.settings.maxLabelsLength;\n var fieldParts = getFieldParts(fieldKey, config);\n var label = (fieldOpts === null || fieldOpts === void 0 ? void 0 : fieldOpts.label) || last(fieldParts);\n label = truncateString(label, maxLabelsLength);\n return label;\n }\n }, {\n key: \"buildOptions\",\n value: function buildOptions(parentFieldPath, config, fields) {\n var _this2 = this;\n var fieldType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;\n var path = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var optGroup = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;\n if (!fields) return null;\n var _config$settings2 = config.settings,\n fieldSeparator = _config$settings2.fieldSeparator,\n fieldSeparatorDisplay = _config$settings2.fieldSeparatorDisplay;\n var prefix = path !== null && path !== void 0 && path.length ? path.join(fieldSeparator) + fieldSeparator : \"\";\n var countFieldsMatchesType = function countFieldsMatchesType(fields) {\n return Object.keys(fields || {}).reduce(function (acc, fieldKey) {\n var field = fields[fieldKey];\n if (field.type === \"!struct\") {\n return acc + countFieldsMatchesType(field.subfields);\n } else {\n return acc + (field.type === fieldType ? 1 : 0);\n }\n }, 0);\n };\n return keys(fields).map(function (fieldKey) {\n var fullFieldPath = [].concat(_toConsumableArray(path !== null && path !== void 0 ? path : []), [fieldKey]);\n var field = fields[fieldKey];\n var label = _this2.getFieldLabel(field, fullFieldPath, config);\n var partsLabels = getFieldPathLabels(fullFieldPath, config);\n var fullLabel = partsLabels.join(fieldSeparatorDisplay);\n if (fullLabel == label || parentFieldPath !== null && parentFieldPath !== void 0 && parentFieldPath.length) fullLabel = null;\n var altLabel = field.label2;\n var tooltip = field.tooltip;\n var disabled = field.disabled;\n if (field.hideForSelect) return undefined;\n if (field.type == \"!struct\") {\n var items = _this2.buildOptions(parentFieldPath, config, field.subfields, fieldType, fullFieldPath, {\n label: label,\n tooltip: tooltip\n });\n var hasItemsMatchesType = countFieldsMatchesType(field.subfields) > 0;\n return {\n disabled: disabled,\n key: fieldKey,\n path: prefix + fieldKey,\n label: label,\n fullLabel: fullLabel,\n altLabel: altLabel,\n tooltip: tooltip,\n items: items,\n matchesType: hasItemsMatchesType\n };\n } else {\n var matchesType = fieldType !== undefined ? field.type === fieldType : undefined;\n return {\n disabled: disabled,\n key: fieldKey,\n path: prefix + fieldKey,\n label: label,\n fullLabel: fullLabel,\n altLabel: altLabel,\n tooltip: tooltip,\n grouplabel: optGroup === null || optGroup === void 0 ? void 0 : optGroup.label,\n group: optGroup,\n matchesType: matchesType\n };\n }\n }).filter(function (o) {\n return !!o;\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n customProps = _this$props.customProps,\n setField = _this$props.setField,\n setFieldSrc = _this$props.setFieldSrc,\n readonly = _this$props.readonly,\n id = _this$props.id,\n groupId = _this$props.groupId;\n var renderField = config.settings.renderField;\n var renderProps = _objectSpread({\n id: id,\n groupId: groupId,\n config: config,\n customProps: customProps,\n readonly: readonly,\n setField: setField,\n setFieldSrc: setFieldSrc\n }, this.meta);\n return renderField(renderProps, config.ctx);\n }\n }]);\n return Field;\n}(Component);\nField.propTypes = {\n id: PropTypes.string,\n groupId: PropTypes.string,\n config: PropTypes.object.isRequired,\n selectedField: PropTypes.any,\n selectedFieldSrc: PropTypes.string,\n selectedFieldType: PropTypes.string,\n parentField: PropTypes.string,\n customProps: PropTypes.object,\n readonly: PropTypes.bool,\n //actions\n setField: PropTypes.func.isRequired,\n setFieldSrc: PropTypes.func\n};\nexport { Field as default };","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport PropTypes from \"prop-types\";\nimport { truncateString } from \"../../utils/stuff\";\nimport { useOnPropsChanged } from \"../../utils/reactUtils\";\nimport last from \"lodash/last\";\nimport keys from \"lodash/keys\";\nvar clone = Utils.clone;\nvar _Utils$ConfigUtils = Utils.ConfigUtils,\n getFieldConfig = _Utils$ConfigUtils.getFieldConfig,\n getFuncConfig = _Utils$ConfigUtils.getFuncConfig,\n getFieldParts = _Utils$ConfigUtils.getFieldParts,\n getFieldPathParts = _Utils$ConfigUtils.getFieldPathParts;\nvar _Utils$RuleUtils = Utils.RuleUtils,\n getFuncPathLabels = _Utils$RuleUtils.getFuncPathLabels,\n getWidgetForFieldOp = _Utils$RuleUtils.getWidgetForFieldOp;\n\n//tip: this.props.value - right value, this.props.field - left value\nvar FuncSelect = /*#__PURE__*/function (_Component) {\n _inherits(FuncSelect, _Component);\n var _super = _createSuper(FuncSelect);\n function FuncSelect(props) {\n var _this;\n _classCallCheck(this, FuncSelect);\n _this = _super.call(this, props);\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.onPropsChanged(props);\n return _this;\n }\n _createClass(FuncSelect, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var prevProps = this.props;\n var keysForItems = [\"config\", \"field\", \"fieldType\", \"fieldSrc\", \"operator\", \"isFuncArg\", \"isLHS\"];\n var keysForMeta = [\"config\", \"field\", \"fieldType\", \"fieldSrc\", \"value\", \"isLHS\"];\n var needUpdateItems = !this.items || keysForItems.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n var needUpdateMeta = !this.meta || keysForMeta.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n if (needUpdateMeta) {\n this.meta = this.getMeta(nextProps);\n }\n if (needUpdateItems) {\n this.items = this.getItems(nextProps, this.meta);\n }\n }\n }, {\n key: \"getItems\",\n value: function getItems(_ref, _ref2) {\n var config = _ref.config,\n field = _ref.field,\n fieldType = _ref.fieldType,\n isLHS = _ref.isLHS,\n operator = _ref.operator,\n parentFuncs = _ref.parentFuncs,\n fieldDefinition = _ref.fieldDefinition,\n isFuncArg = _ref.isFuncArg;\n var lookingForFieldType = _ref2.lookingForFieldType;\n var canUseFuncForField = config.settings.canUseFuncForField;\n var filteredFuncs = this.filterFuncs(config, config.funcs, field, fieldType, isLHS, operator, canUseFuncForField, parentFuncs, isFuncArg, fieldDefinition);\n var items = this.buildOptions(config, filteredFuncs, lookingForFieldType);\n return items;\n }\n }, {\n key: \"getMeta\",\n value: function getMeta(_ref3) {\n var _leftFieldConfig$widg;\n var config = _ref3.config,\n field = _ref3.field,\n fieldType = _ref3.fieldType,\n value = _ref3.value,\n isLHS = _ref3.isLHS,\n isFuncArg = _ref3.isFuncArg;\n var _config$settings = config.settings,\n funcPlaceholder = _config$settings.funcPlaceholder,\n fieldSeparatorDisplay = _config$settings.fieldSeparatorDisplay;\n var selectedFuncKey = value;\n var isFuncSelected = !!value;\n var leftFieldConfig = getFieldConfig(config, field);\n var leftFieldWidgetField = leftFieldConfig === null || leftFieldConfig === void 0 || (_leftFieldConfig$widg = leftFieldConfig.widgets) === null || _leftFieldConfig$widg === void 0 ? void 0 : _leftFieldConfig$widg.field;\n var leftFieldWidgetFieldProps = leftFieldWidgetField && leftFieldWidgetField.widgetProps || {};\n var placeholder = !isFuncSelected ? funcPlaceholder : null;\n var currFunc = isFuncSelected ? getFuncConfig(config, selectedFuncKey) : null;\n var selectedOpts = currFunc || {};\n var selectedKeys = getFieldPathParts(selectedFuncKey, config);\n var selectedPath = getFieldPathParts(selectedFuncKey, config, true);\n var selectedLabel = this.getFuncLabel(currFunc, selectedFuncKey, config);\n var partsLabels = getFuncPathLabels(selectedFuncKey, config);\n var selectedFullLabel = partsLabels ? partsLabels.join(fieldSeparatorDisplay) : null;\n if (selectedFullLabel == selectedLabel) selectedFullLabel = null;\n var isRootFuncAtLHS = isLHS && !isFuncArg;\n var lookingForFieldType = isRootFuncAtLHS && !isFuncSelected && fieldType;\n // Field source has been chnaged, no new func selected, but op & value remains\n var errorText = lookingForFieldType ? \"Please select function\" : null;\n return {\n placeholder: placeholder,\n selectedKey: selectedFuncKey,\n selectedKeys: selectedKeys,\n selectedPath: selectedPath,\n selectedLabel: selectedLabel,\n selectedOpts: selectedOpts,\n selectedFullLabel: selectedFullLabel,\n errorText: errorText,\n lookingForFieldType: lookingForFieldType\n };\n }\n }, {\n key: \"filterFuncs\",\n value: function filterFuncs(config, funcs, leftFieldFullkey, fieldType, isLHS, operator, canUseFuncForField, parentFuncs, isFuncArg, fieldDefinition) {\n funcs = clone(funcs);\n var fieldSeparator = config.settings.fieldSeparator;\n var leftFieldConfig = getFieldConfig(config, leftFieldFullkey);\n var _relyOnWidgetType = false; //TODO: remove this, see issue #758\n var expectedType;\n var targetDefinition = leftFieldConfig;\n var widget = getWidgetForFieldOp(config, leftFieldFullkey, operator, \"value\");\n var widgetConfig = widget && config.widgets[widget];\n if (isFuncArg) {\n targetDefinition = fieldDefinition;\n expectedType = fieldDefinition === null || fieldDefinition === void 0 ? void 0 : fieldDefinition.type;\n } else if (_relyOnWidgetType && widgetConfig) {\n expectedType = widgetConfig.type;\n } else if (leftFieldConfig) {\n expectedType = leftFieldConfig.type;\n } else if (!isLHS) {\n // no field at LHS, but can use type from \"memory effect\"\n expectedType = fieldType;\n }\n function _filter(list, path) {\n for (var funcKey in list) {\n var subfields = list[funcKey].subfields;\n var subpath = (path ? path : []).concat(funcKey);\n var funcFullkey = subpath.join(fieldSeparator);\n var funcConfig = getFuncConfig(config, funcFullkey);\n if (funcConfig.type == \"!struct\") {\n if (_filter(subfields, subpath) == 0) delete list[funcKey];\n } else {\n var _targetDefinition;\n var canUse = !expectedType || funcConfig.returnType == expectedType;\n if ((_targetDefinition = targetDefinition) !== null && _targetDefinition !== void 0 && _targetDefinition.funcs) canUse = canUse && targetDefinition.funcs.includes(funcFullkey);\n if (canUseFuncForField) canUse = canUse && canUseFuncForField(leftFieldFullkey, leftFieldConfig, funcFullkey, funcConfig, operator);\n // don't use func in func (can be configurable, but usually users don't need this)\n if (!funcConfig.allowSelfNesting && parentFuncs && parentFuncs.map(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n func = _ref5[0],\n _arg = _ref5[1];\n return func;\n }).includes(funcFullkey)) canUse = false;\n if (!canUse) delete list[funcKey];\n }\n }\n return keys(list).length;\n }\n _filter(funcs, []);\n return funcs;\n }\n }, {\n key: \"buildOptions\",\n value: function buildOptions(config, funcs) {\n var _this2 = this;\n var fieldType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n var path = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var optGroup = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n if (!funcs) return null;\n var _config$settings2 = config.settings,\n fieldSeparator = _config$settings2.fieldSeparator,\n fieldSeparatorDisplay = _config$settings2.fieldSeparatorDisplay;\n var prefix = path !== null && path !== void 0 && path.length ? path.join(fieldSeparator) + fieldSeparator : \"\";\n var countFieldsMatchesType = function countFieldsMatchesType(fields) {\n return Object.keys(fields || {}).reduce(function (acc, fieldKey) {\n var field = fields[fieldKey];\n if (field.type === \"!struct\") {\n return acc + countFieldsMatchesType(field.subfields);\n } else {\n return acc + (field.type === fieldType ? 1 : 0);\n }\n }, 0);\n };\n return keys(funcs).map(function (funcKey) {\n var fullFuncPath = [].concat(_toConsumableArray(path !== null && path !== void 0 ? path : []), [funcKey]);\n var func = funcs[funcKey];\n var label = _this2.getFuncLabel(func, fullFuncPath, config);\n var partsLabels = getFuncPathLabels(fullFuncPath, config);\n var fullLabel = partsLabels.join(fieldSeparatorDisplay);\n if (fullLabel == label) fullLabel = null;\n var tooltip = func.tooltip;\n if (func.type == \"!struct\") {\n var items = _this2.buildOptions(config, func.subfields, fieldType, fullFuncPath, {\n label: label,\n tooltip: tooltip\n });\n var hasItemsMatchesType = countFieldsMatchesType(func.subfields) > 0;\n return {\n key: funcKey,\n path: prefix + funcKey,\n label: label,\n fullLabel: fullLabel,\n tooltip: tooltip,\n items: items,\n matchesType: hasItemsMatchesType\n };\n } else {\n var matchesType = fieldType !== undefined ? func.returnType === fieldType : undefined;\n return {\n key: funcKey,\n path: prefix + funcKey,\n label: label,\n fullLabel: fullLabel,\n tooltip: tooltip,\n grouplabel: optGroup === null || optGroup === void 0 ? void 0 : optGroup.label,\n group: optGroup,\n matchesType: matchesType\n };\n }\n });\n }\n }, {\n key: \"getFuncLabel\",\n value: function getFuncLabel(funcOpts, funcKey, config) {\n if (!funcKey) return null;\n var fieldSeparator = config.settings.fieldSeparator;\n var maxLabelsLength = config.settings.maxLabelsLength;\n var funcParts = getFieldParts(funcKey, config);\n var label = (funcOpts === null || funcOpts === void 0 ? void 0 : funcOpts.label) || last(funcParts);\n label = truncateString(label, maxLabelsLength);\n return label;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n customProps = _this$props.customProps,\n setValue = _this$props.setValue,\n readonly = _this$props.readonly,\n id = _this$props.id,\n groupId = _this$props.groupId;\n var renderFunc = config.settings.renderFunc;\n var renderProps = _objectSpread({\n config: config,\n customProps: customProps,\n readonly: readonly,\n setField: setValue,\n items: this.items,\n id: id,\n groupId: groupId\n }, this.meta);\n return renderFunc(renderProps, config.ctx);\n }\n }]);\n return FuncSelect;\n}(Component);\nFuncSelect.propTypes = {\n id: PropTypes.string,\n groupId: PropTypes.string,\n config: PropTypes.object.isRequired,\n field: PropTypes.any,\n fieldType: PropTypes.string,\n fieldSrc: PropTypes.string,\n operator: PropTypes.string,\n customProps: PropTypes.object,\n value: PropTypes.string,\n setValue: PropTypes.func.isRequired,\n readonly: PropTypes.bool,\n parentFuncs: PropTypes.array,\n fieldDefinition: PropTypes.object,\n isFuncArg: PropTypes.bool,\n isLHS: PropTypes.bool\n};\nexport { FuncSelect as default };","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"factory\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport React from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport omit from \"lodash/omit\";\nvar getTitleInListValues = Utils.ListUtils.getTitleInListValues;\nvar _widgetDefKeysToOmit = Utils.ConfigUtils._widgetDefKeysToOmit;\nexport default (function (_ref) {\n var delta = _ref.delta,\n isFuncArg = _ref.isFuncArg,\n valueSrc = _ref.valueSrc,\n immValue = _ref.value,\n immValueError = _ref.valueError,\n asyncListValues = _ref.asyncListValues,\n isSpecialRange = _ref.isSpecialRange,\n fieldDefinition = _ref.fieldDefinition,\n widget = _ref.widget,\n widgetDefinition = _ref.widgetDefinition,\n widgetValueLabel = _ref.widgetValueLabel,\n valueLabels = _ref.valueLabels,\n textSeparators = _ref.textSeparators,\n setValueHandler = _ref.setValueHandler,\n config = _ref.config,\n field = _ref.field,\n fieldSrc = _ref.fieldSrc,\n fieldType = _ref.fieldType,\n isLHS = _ref.isLHS,\n operator = _ref.operator,\n readonly = _ref.readonly,\n parentField = _ref.parentField,\n parentFuncs = _ref.parentFuncs,\n id = _ref.id,\n groupId = _ref.groupId;\n var widgetFactory = widgetDefinition.factory,\n fieldWidgetProps = _objectWithoutProperties(widgetDefinition, _excluded);\n var isConst = isFuncArg && fieldDefinition.valueSources && fieldDefinition.valueSources.length == 1 && fieldDefinition.valueSources[0] == \"const\";\n var defaultValue = fieldDefinition.defaultValue;\n if (!widgetFactory) {\n return \"?\";\n }\n var value = isSpecialRange ? [immValue.get(0), immValue.get(1)] : immValue ? immValue.get(delta) : undefined;\n var valueError = immValueError && (isSpecialRange ? [immValueError.get(0), immValueError.get(1)] : immValueError.get(delta)) || null;\n if (isSpecialRange && value[0] === undefined && value[1] === undefined) value = undefined;\n var _ref2 = fieldDefinition || {},\n fieldSettings = _ref2.fieldSettings;\n var widgetProps = omit(_objectSpread(_objectSpread(_objectSpread({}, fieldWidgetProps), fieldSettings), {}, {\n config: config,\n field: field,\n fieldSrc: fieldSrc,\n fieldType: fieldType,\n isLHS: isLHS,\n parentField: parentField,\n parentFuncs: parentFuncs,\n fieldDefinition: fieldDefinition,\n operator: operator,\n delta: delta,\n isSpecialRange: isSpecialRange,\n isFuncArg: isFuncArg,\n value: value,\n valueError: valueError,\n label: widgetValueLabel.label,\n placeholder: widgetValueLabel.placeholder,\n placeholders: valueLabels ? valueLabels.placeholder : null,\n textSeparators: textSeparators,\n setValue: setValueHandler,\n readonly: readonly,\n asyncListValues: asyncListValues,\n id: id,\n groupId: groupId\n }), [].concat(_toConsumableArray(_widgetDefKeysToOmit), [\"toJS\"]));\n if (widget == \"field\") {\n //\n }\n if (isConst && defaultValue) {\n var listValues = (fieldSettings === null || fieldSettings === void 0 ? void 0 : fieldSettings.treeValues) || (fieldSettings === null || fieldSettings === void 0 ? void 0 : fieldSettings.listValues);\n if (typeof defaultValue == \"boolean\") {\n return defaultValue ? widgetProps.labelYes || \"YES\" : widgetProps.labelNo || \"NO\";\n } else if (listValues) {\n if (Array.isArray(defaultValue)) return defaultValue.map(function (v) {\n return getTitleInListValues(listValues, v) || v;\n }).join(\", \");else return getTitleInListValues(listValues, defaultValue) || defaultValue;\n }\n return \"\" + defaultValue;\n }\n return widgetFactory(widgetProps, config.ctx);\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport PropTypes from \"prop-types\";\nimport range from \"lodash/range\";\nimport { defaultValue } from \"../../utils/stuff\";\nimport { useOnPropsChanged } from \"../../utils/reactUtils\";\nimport pick from \"lodash/pick\";\nimport WidgetFactory from \"./WidgetFactory\";\nimport classNames from \"classnames\";\nimport { Col } from \"../utils\";\nvar _Utils$ConfigUtils = Utils.ConfigUtils,\n getFieldConfig = _Utils$ConfigUtils.getFieldConfig,\n getOperatorConfig = _Utils$ConfigUtils.getOperatorConfig,\n getFieldWidgetConfig = _Utils$ConfigUtils.getFieldWidgetConfig;\nvar _Utils$RuleUtils = Utils.RuleUtils,\n getValueSourcesForFieldOp = _Utils$RuleUtils.getValueSourcesForFieldOp,\n getWidgetForFieldOp = _Utils$RuleUtils.getWidgetForFieldOp,\n getValueLabel = _Utils$RuleUtils.getValueLabel;\nvar createListFromArray = Utils.DefaultUtils.createListFromArray;\nvar funcArgDummyOpDef = {\n cardinality: 1\n};\nvar Widget = /*#__PURE__*/function (_Component) {\n _inherits(Widget, _Component);\n var _super = _createSuper(Widget);\n function Widget(_props) {\n var _this;\n _classCallCheck(this, Widget);\n _this = _super.call(this, _props);\n _this._setValue = function (isSpecialRange, delta, widgetType, value, asyncListValues, __isInternal) {\n if (isSpecialRange && Array.isArray(value)) {\n var oldRange = [_this.props.value.get(0), _this.props.value.get(1)];\n if (oldRange[0] != value[0]) _this.props.setValue(0, value[0], widgetType, asyncListValues, __isInternal);\n if (oldRange[1] != value[1]) _this.props.setValue(1, value[1], widgetType, asyncListValues, __isInternal);\n } else {\n _this.props.setValue(delta, value, widgetType, asyncListValues, __isInternal);\n }\n };\n _this._onChangeValueSrc = function (delta, srcKey) {\n _this.props.setValueSrc(delta, srcKey);\n };\n _this.renderWidget = function (delta, meta, props) {\n var config = props.config,\n isFuncArg = props.isFuncArg,\n leftField = props.leftField,\n operator = props.operator,\n values = props.value,\n valueError = props.valueError,\n readonly = props.readonly,\n parentField = props.parentField,\n parentFuncs = props.parentFuncs,\n id = props.id,\n groupId = props.groupId,\n fieldSrc = props.fieldSrc,\n fieldType = props.fieldType,\n isLHS = props.isLHS;\n var settings = config.settings;\n var widgets = meta.widgets,\n iValues = meta.iValues,\n aField = meta.aField,\n valueSources = meta.valueSources;\n var value = isFuncArg ? iValues : values;\n var field = isFuncArg ? leftField : aField;\n var _widgets$delta = widgets[delta],\n valueSrc = _widgets$delta.valueSrc,\n valueLabel = _widgets$delta.valueLabel;\n var hasValueSources = valueSources.length > 1 && !readonly;\n var widgetLabel = settings.showLabels ? /*#__PURE__*/React.createElement(\"label\", {\n className: \"rule--label\"\n }, valueLabel.label) : null;\n return /*#__PURE__*/React.createElement(\"div\", {\n key: \"widget-\" + field + \"-\" + delta,\n className: classNames(valueSrc == \"func\" ? \"widget--func\" : \"widget--widget\", hasValueSources ? \"widget--has-valuerscs\" : \"widget--has-no-valuerscs\")\n }, valueSrc == \"func\" ? null : widgetLabel, /*#__PURE__*/React.createElement(WidgetFactory, _extends({\n id: id,\n groupId: groupId,\n valueSrc: valueSrc,\n delta: delta,\n value: value,\n valueError: valueError,\n isFuncArg: isFuncArg,\n isLHS: isLHS\n }, pick(meta, [\"isSpecialRange\", \"fieldDefinition\", \"asyncListValues\"]), pick(widgets[delta], [\"widget\", \"widgetDefinition\", \"widgetValueLabel\", \"valueLabels\", \"textSeparators\", \"setValueHandler\"]), {\n config: config,\n field: field,\n fieldSrc: fieldSrc,\n fieldType: fieldType,\n parentField: parentField,\n parentFuncs: parentFuncs,\n operator: operator,\n readonly: readonly\n })));\n };\n _this.renderValueSources = function (delta, meta, props) {\n var config = props.config,\n isFuncArg = props.isFuncArg,\n leftField = props.leftField,\n operator = props.operator,\n readonly = props.readonly;\n var settings = config.settings;\n var valueSources = meta.valueSources,\n widgets = meta.widgets,\n aField = meta.aField;\n var field = isFuncArg ? leftField : aField;\n var _widgets$delta2 = widgets[delta],\n valueSrc = _widgets$delta2.valueSrc,\n setValueSrcHandler = _widgets$delta2.setValueSrcHandler;\n var valueSourcesInfo = settings.valueSourcesInfo,\n renderValueSources = settings.renderValueSources;\n var valueSourcesOptions = valueSources.map(function (srcKey) {\n return [srcKey, {\n label: valueSourcesInfo[srcKey].label\n }];\n });\n var ValueSources = function ValueSources(pr) {\n return renderValueSources(pr, config.ctx);\n };\n var sourceLabel = settings.showLabels ? /*#__PURE__*/React.createElement(\"label\", {\n className: \"rule--label\"\n }, \"\\xA0\") : null;\n return valueSources.length > 1 && !readonly && /*#__PURE__*/React.createElement(\"div\", {\n key: \"valuesrc-\" + field + \"-\" + delta,\n className: \"widget--valuesrc\"\n }, sourceLabel, /*#__PURE__*/React.createElement(ValueSources, {\n key: \"valuesrc-\" + delta,\n delta: delta,\n valueSources: valueSourcesOptions,\n valueSrc: valueSrc,\n config: config,\n field: field,\n operator: operator,\n setValueSrc: setValueSrcHandler,\n readonly: readonly,\n title: settings.valueSourcesPopupTitle\n }));\n };\n _this.renderSep = function (delta, meta, props) {\n var config = props.config;\n var widgets = meta.widgets;\n var settings = config.settings;\n var sepText = widgets[delta].sepText;\n var sepLabel = settings.showLabels ? /*#__PURE__*/React.createElement(\"label\", {\n className: \"rule--label\"\n }, \"\\xA0\") : null;\n return sepText && /*#__PURE__*/React.createElement(\"div\", {\n key: \"widget-separators-\" + delta,\n className: classNames(\"widget--sep\", delta == 0 && \"widget--sep-first\")\n }, sepLabel, /*#__PURE__*/React.createElement(\"span\", null, sepText));\n };\n _this.renderWidgetDelta = function (delta) {\n var sep = _this.renderSep(delta, _this.meta, _this.props);\n var sources = _this.renderValueSources(delta, _this.meta, _this.props);\n var widgetCmp = _this.renderWidget(delta, _this.meta, _this.props);\n return [sep, sources, widgetCmp];\n };\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.onPropsChanged(_props);\n return _this;\n }\n _createClass(Widget, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var prevProps = this.props;\n var keysForMeta = [\"config\", \"field\", \"fieldSrc\", \"fieldType\", \"fieldFunc\", \"fieldArg\", \"leftField\", \"operator\", \"valueSrc\", \"isFuncArg\", \"asyncListValues\", \"isLHS\"];\n var needUpdateMeta = !this.meta || keysForMeta.map(function (k) {\n return nextProps[k] !== prevProps[k]\n //tip: for isFuncArg we need to wrap value in Imm list\n || k == \"isFuncArg\" && nextProps[\"isFuncArg\"] && nextProps[\"value\"] !== prevProps[\"value\"];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n if (needUpdateMeta) {\n this.meta = this.getMeta(nextProps);\n }\n }\n }, {\n key: \"getMeta\",\n value: function getMeta(_ref) {\n var _this2 = this;\n var config = _ref.config,\n simpleField = _ref.field,\n fieldSrc = _ref.fieldSrc,\n fieldType = _ref.fieldType,\n fieldFunc = _ref.fieldFunc,\n fieldArg = _ref.fieldArg,\n operator = _ref.operator,\n valueSrcs = _ref.valueSrc,\n values = _ref.value,\n isForRuleGroup = _ref.isForRuleGroup,\n isCaseValue = _ref.isCaseValue,\n isFuncArg = _ref.isFuncArg,\n leftField = _ref.leftField,\n asyncListValues = _ref.asyncListValues;\n var field = isFuncArg ? {\n func: fieldFunc,\n arg: fieldArg\n } : simpleField;\n var isOkWithoutField = !simpleField && fieldType;\n var iValueSrcs = valueSrcs;\n var iValues = values;\n if (isFuncArg || isForRuleGroup || isCaseValue) {\n iValueSrcs = createListFromArray([valueSrcs]);\n iValues = createListFromArray([values]);\n }\n var fieldDefinition = getFieldConfig(config, field);\n if (!fieldDefinition && isOkWithoutField) {\n fieldDefinition = config.types[fieldType];\n }\n var defaultWidget = getWidgetForFieldOp(config, field, operator);\n if (!defaultWidget && isOkWithoutField) {\n var _config$types$fieldTy;\n defaultWidget = (_config$types$fieldTy = config.types[fieldType]) === null || _config$types$fieldTy === void 0 ? void 0 : _config$types$fieldTy.mainWidget;\n }\n var operatorDefinition = isFuncArg ? funcArgDummyOpDef : getOperatorConfig(config, operator, field);\n if ((fieldDefinition == null || operatorDefinition == null) && !isCaseValue) {\n return null;\n }\n var isSpecialRange = operatorDefinition === null || operatorDefinition === void 0 ? void 0 : operatorDefinition.isSpecialRange;\n var isSpecialRangeForSrcField = isSpecialRange && (iValueSrcs.get(0) == \"field\" || iValueSrcs.get(1) == \"field\");\n var isTrueSpecialRange = isSpecialRange && !isSpecialRangeForSrcField;\n var cardinality = isTrueSpecialRange ? 1 : defaultValue(operatorDefinition === null || operatorDefinition === void 0 ? void 0 : operatorDefinition.cardinality, 1);\n if (cardinality === 0) {\n return null;\n }\n var valueSources = getValueSourcesForFieldOp(config, field, operator, fieldDefinition);\n if (!field) {\n valueSources = Object.keys(config.settings.valueSourcesInfo);\n }\n var widgets = range(0, cardinality).map(function (delta) {\n var _widgetDefinition;\n var valueSrc = iValueSrcs.get(delta) || null;\n var widget = getWidgetForFieldOp(config, field, operator, valueSrc);\n var widgetDefinition = getFieldWidgetConfig(config, field, operator, widget, valueSrc);\n if (isSpecialRangeForSrcField) {\n widget = widgetDefinition.singleWidget;\n widgetDefinition = getFieldWidgetConfig(config, field, operator, widget, valueSrc);\n }\n if (!widgetDefinition && isOkWithoutField) {\n widget = [\"func\", \"field\"].includes(valueSrc) ? valueSrc : defaultWidget;\n widgetDefinition = config.widgets[widget];\n }\n var widgetType = (_widgetDefinition = widgetDefinition) === null || _widgetDefinition === void 0 ? void 0 : _widgetDefinition.type;\n var valueLabel = getValueLabel(config, field, operator, delta, valueSrc, isTrueSpecialRange);\n var widgetValueLabel = getValueLabel(config, field, operator, delta, null, isTrueSpecialRange);\n var sepText = operatorDefinition !== null && operatorDefinition !== void 0 && operatorDefinition.textSeparators ? operatorDefinition === null || operatorDefinition === void 0 ? void 0 : operatorDefinition.textSeparators[delta] : null;\n var setValueSrcHandler = _this2._onChangeValueSrc.bind(_this2, delta);\n var valueLabels = null;\n var textSeparators = null;\n if (isSpecialRange) {\n valueLabels = [getValueLabel(config, field, operator, 0), getValueLabel(config, field, operator, 1)];\n valueLabels = {\n placeholder: [valueLabels[0].placeholder, valueLabels[1].placeholder],\n label: [valueLabels[0].label, valueLabels[1].label]\n };\n textSeparators = operatorDefinition === null || operatorDefinition === void 0 ? void 0 : operatorDefinition.textSeparators;\n }\n var setValueHandler = _this2._setValue.bind(_this2, isSpecialRange, delta, widgetType);\n return {\n valueSrc: valueSrc,\n valueLabel: valueLabel,\n widget: widget,\n sepText: sepText,\n setValueSrcHandler: setValueSrcHandler,\n widgetDefinition: widgetDefinition,\n widgetValueLabel: widgetValueLabel,\n valueLabels: valueLabels,\n textSeparators: textSeparators,\n setValueHandler: setValueHandler\n };\n });\n return {\n defaultWidget: defaultWidget,\n fieldDefinition: fieldDefinition,\n operatorDefinition: operatorDefinition,\n isSpecialRange: isTrueSpecialRange,\n cardinality: cardinality,\n valueSources: valueSources,\n widgets: widgets,\n iValues: iValues,\n //correct for isFuncArg\n aField: field,\n //correct for isFuncArg\n asyncListValues: asyncListValues\n };\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!this.meta) return null;\n var _this$meta = this.meta,\n defaultWidget = _this$meta.defaultWidget,\n cardinality = _this$meta.cardinality;\n if (!defaultWidget) return null;\n var name = defaultWidget;\n return /*#__PURE__*/React.createElement(Col, {\n className: \"rule--widget rule--widget--\".concat(name.toUpperCase()),\n key: \"widget-col-\" + name\n }, range(0, cardinality).map(this.renderWidgetDelta));\n }\n }]);\n return Widget;\n}(Component);\nWidget.propTypes = {\n config: PropTypes.object.isRequired,\n value: PropTypes.any,\n //instanceOf(Immutable.List)\n valueSrc: PropTypes.any,\n //instanceOf(Immutable.List)\n valueError: PropTypes.any,\n field: PropTypes.any,\n fieldSrc: PropTypes.string,\n fieldType: PropTypes.string,\n operator: PropTypes.string,\n readonly: PropTypes.bool,\n asyncListValues: PropTypes.array,\n id: PropTypes.string,\n groupId: PropTypes.string,\n //actions\n setValue: PropTypes.func,\n setValueSrc: PropTypes.func,\n // for isFuncArg\n isFuncArg: PropTypes.bool,\n fieldFunc: PropTypes.string,\n fieldArg: PropTypes.string,\n leftField: PropTypes.any,\n // for RuleGroupExt\n isForRuleGroup: PropTypes.bool,\n parentField: PropTypes.string,\n // for func in func\n parentFuncs: PropTypes.array,\n isLHS: PropTypes.bool,\n // for case_value\n isCaseValue: PropTypes.bool\n};\nexport { Widget as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { Component, PureComponent } from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport PropTypes from \"prop-types\";\nimport FuncSelect from \"./FuncSelect\";\nimport Widget from \"./Widget\";\nimport { Col } from \"../utils\";\nimport { useOnPropsChanged } from \"../../utils/reactUtils\";\nvar getFuncConfig = Utils.ConfigUtils.getFuncConfig;\nvar _Utils$FuncUtils = Utils.FuncUtils,\n setFunc = _Utils$FuncUtils.setFunc,\n setArgValue = _Utils$FuncUtils.setArgValue,\n setArgValueSrc = _Utils$FuncUtils.setArgValueSrc;\nvar FuncWidget = /*#__PURE__*/function (_Component) {\n _inherits(FuncWidget, _Component);\n var _super = _createSuper(FuncWidget);\n function FuncWidget(props) {\n var _this;\n _classCallCheck(this, FuncWidget);\n _this = _super.call(this, props);\n _this.setFunc = function (funcKey) {\n _this.props.setValue(setFunc(_this.props.value, funcKey, _this.props.config));\n };\n _this.setArgValue = function (argKey, argVal, asyncListValues, __isInternal) {\n var config = _this.props.config;\n var funcDefinition = _this.meta.funcDefinition;\n var args = funcDefinition.args;\n var argDefinition = args[argKey];\n _this.props.setValue(setArgValue(_this.props.value, argKey, argVal, argDefinition, config), asyncListValues, __isInternal);\n };\n _this.setArgValueSrc = function (argKey, argValSrc) {\n var config = _this.props.config;\n var funcDefinition = _this.meta.funcDefinition;\n var args = funcDefinition.args;\n var argDefinition = args[argKey];\n _this.props.setValue(setArgValueSrc(_this.props.value, argKey, argValSrc, argDefinition, config));\n };\n _this.renderFuncSelect = function () {\n var _this$props = _this.props,\n config = _this$props.config,\n field = _this$props.field,\n fieldType = _this$props.fieldType,\n fieldSrc = _this$props.fieldSrc,\n isLHS = _this$props.isLHS,\n operator = _this$props.operator,\n customProps = _this$props.customProps,\n value = _this$props.value,\n readonly = _this$props.readonly,\n parentFuncs = _this$props.parentFuncs,\n id = _this$props.id,\n groupId = _this$props.groupId,\n isFuncArg = _this$props.isFuncArg,\n fieldDefinition = _this$props.fieldDefinition;\n var funcKey = value ? value.get(\"func\") : null;\n var selectProps = {\n value: funcKey,\n setValue: _this.setFunc,\n config: config,\n field: field,\n fieldType: fieldType,\n fieldSrc: fieldSrc,\n isLHS: isLHS,\n operator: operator,\n customProps: customProps,\n readonly: readonly,\n parentFuncs: parentFuncs,\n isFuncArg: isFuncArg,\n fieldDefinition: fieldDefinition,\n id: id,\n groupId: groupId\n };\n var _config$settings = config.settings,\n showLabels = _config$settings.showLabels,\n funcLabel = _config$settings.funcLabel;\n var widgetLabel = showLabels ? /*#__PURE__*/React.createElement(\"label\", {\n className: \"rule--label\"\n }, funcLabel) : null;\n return /*#__PURE__*/React.createElement(Col, {\n key: \"func\",\n className: \"rule--func\"\n }, widgetLabel, /*#__PURE__*/React.createElement(FuncSelect, selectProps));\n };\n _this.renderArgLabel = function (argKey, argDefinition) {\n var valueSources = argDefinition.valueSources,\n type = argDefinition.type,\n showPrefix = argDefinition.showPrefix,\n label = argDefinition.label;\n var config = _this.props.config;\n var isConst = valueSources && valueSources.length == 1 && valueSources[0] == \"const\";\n var forceShow = !config.settings.showLabels && (type == \"boolean\" || isConst) && showPrefix;\n if (!forceShow) return null;\n return /*#__PURE__*/React.createElement(Col, {\n className: \"rule--func--arg-label\"\n }, label || argKey);\n };\n _this.renderArgLabelSep = function (argKey, argDefinition) {\n var valueSources = argDefinition.valueSources,\n type = argDefinition.type,\n showPrefix = argDefinition.showPrefix;\n var config = _this.props.config;\n var isConst = valueSources && valueSources.length == 1 && valueSources[0] == \"const\";\n var forceShow = !config.settings.showLabels && (type == \"boolean\" || isConst) && showPrefix;\n if (!forceShow) return null;\n return /*#__PURE__*/React.createElement(Col, {\n className: \"rule--func--arg-label-sep\"\n }, \":\");\n };\n _this.renderArgVal = function (funcKey, argKey, argDefinition) {\n var _this$props2 = _this.props,\n config = _this$props2.config,\n field = _this$props2.field,\n fieldType = _this$props2.fieldType,\n fieldSrc = _this$props2.fieldSrc,\n isLHS = _this$props2.isLHS,\n operator = _this$props2.operator,\n value = _this$props2.value,\n readonly = _this$props2.readonly,\n parentFuncs = _this$props2.parentFuncs,\n id = _this$props2.id,\n groupId = _this$props2.groupId;\n var arg = value ? value.getIn([\"args\", argKey]) : null;\n var argVal = arg ? arg.get(\"value\") : undefined;\n var defaultValueSource = argDefinition.valueSources.length == 1 ? argDefinition.valueSources[0] : undefined;\n var argValSrc = arg ? arg.get(\"valueSrc\") || defaultValueSource || \"value\" : defaultValueSource;\n var widgetProps = {\n config: config,\n fieldFunc: funcKey,\n fieldArg: argKey,\n leftField: field,\n fieldType: fieldType,\n // type of leftField\n fieldSrc: fieldSrc,\n // src of leftField\n isLHS: isLHS,\n operator: null,\n value: argVal,\n valueSrc: argValSrc,\n setValue: _this.setArgValue,\n setValueSrc: _this.setArgValueSrc,\n funcKey: funcKey,\n argKey: argKey,\n argDefinition: argDefinition,\n readonly: readonly,\n parentFuncs: parentFuncs,\n id: id,\n groupId: groupId\n };\n //tip: value & valueSrc will be converted to Immutable.List at <Widget>\n\n return /*#__PURE__*/React.createElement(Col, {\n className: \"rule--func--arg-value\"\n }, /*#__PURE__*/React.createElement(ArgWidget, widgetProps));\n };\n _this.renderArgSep = function (argKey, argDefinition, argIndex, _ref) {\n var renderSeps = _ref.renderSeps;\n if (!argIndex) return null;\n return /*#__PURE__*/React.createElement(Col, {\n className: \"rule--func--arg-sep\"\n }, renderSeps ? renderSeps[argIndex - 1] : \", \");\n };\n _this.renderBracketBefore = function (_ref2) {\n var renderBrackets = _ref2.renderBrackets;\n return /*#__PURE__*/React.createElement(Col, {\n key: \"before_args\",\n className: \"rule--func--bracket-before\"\n }, renderBrackets ? renderBrackets[0] : \"(\");\n };\n _this.renderBracketAfter = function (_ref3) {\n var renderBrackets = _ref3.renderBrackets;\n return /*#__PURE__*/React.createElement(Col, {\n key: \"after_args\",\n className: \"rule--func--bracket-after\"\n }, renderBrackets ? renderBrackets[1] : \")\");\n };\n _this.renderFuncArgs = function () {\n var _this$meta = _this.meta,\n funcDefinition = _this$meta.funcDefinition,\n funcKey = _this$meta.funcKey;\n if (!funcKey) return null;\n var _ref4 = funcDefinition || {},\n args = _ref4.args;\n if (!args) return null;\n return /*#__PURE__*/React.createElement(React.Fragment, null, _this.renderBracketBefore(funcDefinition), /*#__PURE__*/React.createElement(Col, {\n key: \"args\",\n className: \"rule--func--args\"\n }, Object.keys(args).map(function (argKey, argIndex) {\n return /*#__PURE__*/React.createElement(Col, {\n key: \"arg-\".concat(argKey, \"-\").concat(argIndex),\n className: \"rule--func--arg\"\n }, _this.renderArgSep(argKey, args[argKey], argIndex, funcDefinition), _this.renderArgLabel(argKey, args[argKey]), _this.renderArgLabelSep(argKey, args[argKey]), _this.renderArgVal(funcKey, argKey, args[argKey]));\n })), _this.renderBracketAfter(funcDefinition));\n };\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.onPropsChanged(props);\n return _this;\n }\n _createClass(FuncWidget, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var prevProps = this.props;\n var keysForMeta = [\"config\", \"field\", \"operator\", \"value\", \"fieldSrc\", \"fieldType\", \"isLHS\"];\n var needUpdateMeta = !this.meta || keysForMeta.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n if (needUpdateMeta) {\n this.meta = this.getMeta(nextProps);\n }\n }\n }, {\n key: \"getMeta\",\n value: function getMeta(_ref5) {\n var config = _ref5.config,\n field = _ref5.field,\n operator = _ref5.operator,\n value = _ref5.value;\n var funcKey = value ? value.get(\"func\") : null;\n var funcDefinition = funcKey ? getFuncConfig(config, funcKey) : null;\n return {\n funcDefinition: funcDefinition,\n funcKey: funcKey\n };\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(Col, {\n className: \"rule--func--wrapper\"\n }, this.renderFuncSelect(), this.renderFuncArgs());\n }\n }]);\n return FuncWidget;\n}(Component);\nFuncWidget.propTypes = {\n id: PropTypes.string,\n groupId: PropTypes.string,\n config: PropTypes.object.isRequired,\n field: PropTypes.any,\n fieldSrc: PropTypes.string,\n fieldType: PropTypes.string,\n operator: PropTypes.string,\n customProps: PropTypes.object,\n value: PropTypes.object,\n //instanceOf(Immutable.Map) //with keys 'func' and `args`\n setValue: PropTypes.func.isRequired,\n readonly: PropTypes.bool,\n parentFuncs: PropTypes.array,\n fieldDefinition: PropTypes.object,\n isFuncArg: PropTypes.bool,\n isLHS: PropTypes.bool\n};\nexport { FuncWidget as default };\nvar ArgWidget = /*#__PURE__*/function (_Component2) {\n _inherits(ArgWidget, _Component2);\n var _super2 = _createSuper(ArgWidget);\n function ArgWidget(props) {\n var _this2;\n _classCallCheck(this, ArgWidget);\n _this2 = _super2.call(this, props);\n _this2.setValue = function (_delta, value, _widgetType, asyncListValues, __isInternal) {\n var _this2$props = _this2.props,\n setValue = _this2$props.setValue,\n argKey = _this2$props.argKey;\n setValue(argKey, value, asyncListValues, __isInternal);\n };\n _this2.setValueSrc = function (_delta, valueSrc, _widgetType) {\n var _this2$props2 = _this2.props,\n setValueSrc = _this2$props2.setValueSrc,\n argKey = _this2$props2.argKey;\n setValueSrc(argKey, valueSrc);\n };\n useOnPropsChanged(_assertThisInitialized(_this2));\n _this2.onPropsChanged(props);\n return _this2;\n }\n _createClass(ArgWidget, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var prevProps = this.props;\n var keysForMeta = [\"parentFuncs\", \"funcKey\", \"argKey\"];\n var needUpdateMeta = !this.meta || keysForMeta.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n if (needUpdateMeta) {\n this.meta = this.getMeta(nextProps);\n }\n }\n }, {\n key: \"getMeta\",\n value: function getMeta(_ref6) {\n var parentFuncs = _ref6.parentFuncs,\n funcKey = _ref6.funcKey,\n argKey = _ref6.argKey;\n var newParentFuncs = [].concat(_toConsumableArray(parentFuncs || []), [[funcKey, argKey]]);\n return {\n parentFuncs: newParentFuncs\n };\n }\n }, {\n key: \"render\",\n value: function render() {\n var parentFuncs = this.meta.parentFuncs;\n return /*#__PURE__*/React.createElement(Widget, _extends({}, this.props, {\n setValue: this.setValue,\n setValueSrc: this.setValueSrc,\n isFuncArg: true,\n parentFuncs: parentFuncs\n }));\n }\n }]);\n return ArgWidget;\n}(Component);\nArgWidget.propTypes = {\n funcKey: PropTypes.string.isRequired,\n argKey: PropTypes.string.isRequired,\n setValue: PropTypes.func.isRequired,\n setValueSrc: PropTypes.func.isRequired,\n readonly: PropTypes.bool,\n isLHS: PropTypes.bool,\n parentFuncs: PropTypes.array,\n id: PropTypes.string,\n groupId: PropTypes.string\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nimport Field from \"./Field\";\nimport { Col } from \"../utils\";\nimport FuncWidget from \"./FuncWidget\";\nvar FieldWrapper = /*#__PURE__*/function (_PureComponent) {\n _inherits(FieldWrapper, _PureComponent);\n var _super = _createSuper(FieldWrapper);\n function FieldWrapper() {\n var _this;\n _classCallCheck(this, FieldWrapper);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.renderField = function () {\n var _this$props = _this.props,\n config = _this$props.config,\n classname = _this$props.classname,\n selectedField = _this$props.selectedField,\n selectedFieldSrc = _this$props.selectedFieldSrc,\n selectedFieldType = _this$props.selectedFieldType,\n setField = _this$props.setField,\n parentField = _this$props.parentField,\n readonly = _this$props.readonly,\n id = _this$props.id,\n groupId = _this$props.groupId;\n var supportedFieldSrcs = [\"func\", \"field\"];\n if (!supportedFieldSrcs.includes(selectedFieldSrc)) {\n return \"?\";\n }\n var field = selectedFieldSrc === \"func\" ? /*#__PURE__*/React.createElement(FuncWidget, {\n isLHS: true,\n config: config,\n value: selectedField,\n fieldSrc: selectedFieldSrc,\n fieldType: selectedFieldType,\n parentField: parentField,\n setValue: setField,\n readonly: readonly,\n id: id,\n groupId: groupId,\n key: \"field-func-\" + id\n }) : /*#__PURE__*/React.createElement(Field, {\n config: config,\n selectedField: selectedField,\n selectedFieldSrc: selectedFieldSrc,\n selectedFieldType: selectedFieldType,\n parentField: parentField,\n setField: setField,\n customProps: config.settings.customFieldSelectProps,\n readonly: readonly,\n id: id,\n groupId: groupId,\n key: \"field-\" + id\n });\n var fieldLabel = selectedFieldSrc === \"func\" ? config.settings.funcLabel : config.settings.fieldLabel;\n var label = config.settings.showLabels && selectedFieldSrc !== \"func\" && /*#__PURE__*/React.createElement(\"label\", {\n className: \"rule--label\"\n }, fieldLabel);\n return /*#__PURE__*/React.createElement(\"div\", {\n key: selectedFieldSrc,\n className: classname\n }, label, field);\n };\n _this.renderFieldSources = function () {\n var _this$props2 = _this.props,\n config = _this$props2.config,\n readonly = _this$props2.readonly,\n selectedFieldSrc = _this$props2.selectedFieldSrc,\n setFieldSrc = _this$props2.setFieldSrc,\n id = _this$props2.id;\n var settings = config.settings;\n var fieldSources = settings.fieldSources,\n valueSourcesInfo = settings.valueSourcesInfo,\n renderValueSources = settings.renderValueSources;\n var fieldSourcesOptions = fieldSources.map(function (srcKey) {\n return [srcKey, {\n label: valueSourcesInfo[srcKey].label\n }];\n });\n var ValueSources = function ValueSources(pr) {\n return renderValueSources(pr, config.ctx);\n };\n var sourceLabel = settings.showLabels ? /*#__PURE__*/React.createElement(\"label\", {\n className: \"rule--label\"\n }, \"\\xA0\") : null;\n return fieldSources.length > 1 && !readonly && /*#__PURE__*/React.createElement(\"div\", {\n key: \"fieldsrc\",\n className: \"rule--fieldsrc\"\n }, sourceLabel, /*#__PURE__*/React.createElement(ValueSources, {\n key: \"fieldsrc-\" + id,\n valueSources: fieldSourcesOptions,\n valueSrc: selectedFieldSrc,\n config: config,\n setValueSrc: setFieldSrc,\n readonly: readonly,\n title: settings.fieldSourcesPopupTitle\n }));\n };\n return _this;\n }\n _createClass(FieldWrapper, [{\n key: \"render\",\n value: function render() {\n var _this$props3 = this.props,\n classname = _this$props3.classname,\n canSelectFieldSource = _this$props3.canSelectFieldSource;\n var fieldSources = canSelectFieldSource && this.renderFieldSources();\n var field = this.renderField();\n if (!canSelectFieldSource) {\n return field;\n } else {\n return /*#__PURE__*/React.createElement(Col, {\n className: \"rule--field-wrapper\"\n }, fieldSources, field);\n }\n }\n }]);\n return FieldWrapper;\n}(PureComponent);\nexport { FieldWrapper as default };","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nvar _excluded = [\"factory\"];\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport PropTypes from \"prop-types\";\nvar getOperatorConfig = Utils.ConfigUtils.getOperatorConfig;\nvar OperatorOptions = /*#__PURE__*/function (_PureComponent) {\n _inherits(OperatorOptions, _PureComponent);\n var _super = _createSuper(OperatorOptions);\n function OperatorOptions() {\n _classCallCheck(this, OperatorOptions);\n return _super.apply(this, arguments);\n }\n _createClass(OperatorOptions, [{\n key: \"render\",\n value: function render() {\n if (!this.props.selectedOperator) return null;\n var operatorDefinitions = getOperatorConfig(this.props.config, this.props.selectedOperator, this.props.selectedField);\n if (typeof operatorDefinitions.options === \"undefined\") {\n return null;\n }\n var _operatorDefinitions$ = operatorDefinitions.options,\n optionsFactory = _operatorDefinitions$.factory,\n basicOptionsProps = _objectWithoutProperties(_operatorDefinitions$, _excluded);\n var optionsProps = Object.assign({}, basicOptionsProps, {\n config: this.props.config,\n field: this.props.selectedField,\n fieldSrc: this.props.selectedFieldSrc,\n operator: this.props.selectedOperator,\n options: this.props.operatorOptions,\n setOption: this.props.setOperatorOption,\n readonly: this.props.readonly\n });\n var optionsCmp = optionsFactory(optionsProps, this.props.config.ctx);\n var name = this.props.selectedOperator;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"rule--operator rule--operator--\".concat(name.toUpperCase())\n }, optionsCmp);\n }\n }]);\n return OperatorOptions;\n}(PureComponent);\nOperatorOptions.propTypes = {\n config: PropTypes.object.isRequired,\n operatorOptions: PropTypes.any.isRequired,\n //instanceOf(Immutable.Map)\n selectedField: PropTypes.any,\n selectedFieldSrc: PropTypes.string,\n selectedOperator: PropTypes.string.isRequired,\n readonly: PropTypes.bool,\n //actions\n setOperatorOption: PropTypes.func.isRequired\n};\nexport { OperatorOptions as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport PropTypes from \"prop-types\";\nimport RuleContainer from \"../containers/RuleContainer\";\nimport Draggable from \"../containers/Draggable\";\nimport OperatorWrapper from \"../rule/OperatorWrapper\";\nimport FieldWrapper from \"../rule/FieldWrapper\";\nimport Widget from \"../rule/Widget\";\nimport OperatorOptions from \"../rule/OperatorOptions\";\nimport { useOnPropsChanged } from \"../../utils/reactUtils\";\nimport { Col, dummyFn, WithConfirmFn } from \"../utils\";\nimport classNames from \"classnames\";\nvar _Utils$ConfigUtils = Utils.ConfigUtils,\n getFieldConfig = _Utils$ConfigUtils.getFieldConfig,\n getOperatorConfig = _Utils$ConfigUtils.getOperatorConfig,\n getFieldWidgetConfig = _Utils$ConfigUtils.getFieldWidgetConfig,\n getFieldParts = _Utils$ConfigUtils.getFieldParts;\nvar isEmptyRuleProperties = Utils.RuleUtils.isEmptyRuleProperties;\nvar Rule = /*#__PURE__*/function (_Component) {\n _inherits(Rule, _Component);\n var _super = _createSuper(Rule);\n function Rule(props) {\n var _this;\n _classCallCheck(this, Rule);\n _this = _super.call(this, props);\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.removeSelf = _this.removeSelf.bind(_assertThisInitialized(_this));\n _this.setLock = _this.setLock.bind(_assertThisInitialized(_this));\n _this.onPropsChanged(props);\n return _this;\n }\n _createClass(Rule, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var prevProps = this.props;\n var keysForMeta = [\"selectedField\", \"selectedFieldSrc\", \"selectedFieldType\", \"selectedOperator\", \"config\", \"reordableNodesCnt\", \"isLocked\"];\n var needUpdateMeta = !this.meta || keysForMeta.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n if (needUpdateMeta) {\n this.meta = this.getMeta(nextProps);\n }\n }\n }, {\n key: \"getMeta\",\n value: function getMeta(_ref) {\n var selectedField = _ref.selectedField,\n selectedFieldType = _ref.selectedFieldType,\n selectedOperator = _ref.selectedOperator,\n config = _ref.config,\n reordableNodesCnt = _ref.reordableNodesCnt,\n isLocked = _ref.isLocked;\n var keepInputOnChangeFieldSrc = config.settings.keepInputOnChangeFieldSrc;\n var selectedFieldParts = getFieldParts(selectedField, config);\n var selectedFieldConfig = getFieldConfig(config, selectedField);\n var isSelectedGroup = selectedFieldConfig && selectedFieldConfig.type == \"!struct\";\n var isOkWithoutField = keepInputOnChangeFieldSrc && selectedFieldType;\n var isFieldSelected = !!selectedField || isOkWithoutField;\n var isFieldAndOpSelected = isFieldSelected && selectedOperator;\n var selectedOperatorConfig = getOperatorConfig(config, selectedOperator, selectedField);\n var selectedOperatorHasOptions = selectedOperatorConfig && selectedOperatorConfig.options != null;\n var selectedFieldWidgetConfig = getFieldWidgetConfig(config, selectedField, selectedOperator, null, null) || {};\n var hideOperator = selectedFieldWidgetConfig.hideOperator;\n var showDragIcon = config.settings.canReorder && reordableNodesCnt > 1 && !isLocked;\n var showOperator = isFieldSelected && !hideOperator;\n var showOperatorLabel = isFieldSelected && hideOperator && selectedFieldWidgetConfig.operatorInlineLabel;\n var showWidget = isFieldAndOpSelected && !isSelectedGroup;\n var showOperatorOptions = isFieldAndOpSelected && selectedOperatorHasOptions;\n return {\n selectedFieldParts: selectedFieldParts,\n selectedFieldWidgetConfig: selectedFieldWidgetConfig,\n showDragIcon: showDragIcon,\n showOperator: showOperator,\n showOperatorLabel: showOperatorLabel,\n showWidget: showWidget,\n showOperatorOptions: showOperatorOptions\n };\n }\n }, {\n key: \"setLock\",\n value: function setLock(lock) {\n this.props.setLock(lock);\n }\n }, {\n key: \"removeSelf\",\n value: function removeSelf() {\n var _this2 = this;\n var _this$props = this.props,\n confirmFn = _this$props.confirmFn,\n config = _this$props.config;\n var _config$settings = config.settings,\n renderConfirm = _config$settings.renderConfirm,\n confirmOptions = _config$settings.removeRuleConfirmOptions;\n var doRemove = function doRemove() {\n _this2.props.removeSelf();\n };\n if (confirmOptions && !this.isEmptyCurrentRule()) {\n renderConfirm.call(config.ctx, _objectSpread(_objectSpread({}, confirmOptions), {}, {\n onOk: doRemove,\n onCancel: null,\n confirmFn: confirmFn\n }), config.ctx);\n } else {\n doRemove();\n }\n }\n }, {\n key: \"_buildWidgetProps\",\n value: function _buildWidgetProps(_ref2) {\n var selectedField = _ref2.selectedField,\n selectedFieldSrc = _ref2.selectedFieldSrc,\n selectedFieldType = _ref2.selectedFieldType,\n selectedOperator = _ref2.selectedOperator,\n operatorOptions = _ref2.operatorOptions,\n value = _ref2.value,\n valueType = _ref2.valueType,\n valueSrc = _ref2.valueSrc,\n asyncListValues = _ref2.asyncListValues,\n valueError = _ref2.valueError,\n parentField = _ref2.parentField;\n return {\n field: selectedField,\n fieldSrc: selectedFieldSrc,\n fieldType: selectedFieldType,\n operator: selectedOperator,\n operatorOptions: operatorOptions,\n value: value,\n valueType: valueType,\n valueSrc: valueSrc,\n asyncListValues: asyncListValues,\n valueError: valueError,\n parentField: parentField\n };\n }\n }, {\n key: \"isEmptyCurrentRule\",\n value: function isEmptyCurrentRule() {\n var config = this.props.config;\n var ruleData = this._buildWidgetProps(this.props);\n return isEmptyRuleProperties(ruleData, config);\n }\n }, {\n key: \"renderField\",\n value: function renderField() {\n var _this$props2 = this.props,\n config = _this$props2.config,\n isLocked = _this$props2.isLocked,\n parentField = _this$props2.parentField,\n groupId = _this$props2.groupId,\n id = _this$props2.id,\n selectedFieldSrc = _this$props2.selectedFieldSrc,\n selectedField = _this$props2.selectedField,\n selectedFieldType = _this$props2.selectedFieldType,\n setField = _this$props2.setField,\n setFieldSrc = _this$props2.setFieldSrc;\n var immutableFieldsMode = config.settings.immutableFieldsMode;\n // tip: don't allow function inside !group (yet)\n\n return /*#__PURE__*/React.createElement(FieldWrapper, {\n key: \"field\",\n classname: classNames(selectedFieldSrc == \"func\" ? \"rule--field--func\" : \"rule--field\"),\n config: config,\n canSelectFieldSource: !parentField,\n selectedField: selectedField,\n selectedFieldSrc: selectedFieldSrc,\n selectedFieldType: selectedFieldType,\n setField: !immutableFieldsMode ? setField : dummyFn,\n setFieldSrc: !immutableFieldsMode ? setFieldSrc : dummyFn,\n parentField: parentField,\n readonly: immutableFieldsMode || isLocked,\n id: id,\n groupId: groupId\n });\n }\n }, {\n key: \"renderOperator\",\n value: function renderOperator() {\n var _this$props3 = this.props,\n config = _this$props3.config,\n isLocked = _this$props3.isLocked;\n var _this$meta = this.meta,\n selectedFieldParts = _this$meta.selectedFieldParts,\n selectedFieldWidgetConfig = _this$meta.selectedFieldWidgetConfig,\n showOperator = _this$meta.showOperator,\n showOperatorLabel = _this$meta.showOperatorLabel;\n var immutableOpsMode = config.settings.immutableOpsMode;\n return /*#__PURE__*/React.createElement(OperatorWrapper, {\n key: \"operator\",\n config: config,\n selectedField: this.props.selectedField,\n selectedFieldSrc: this.props.selectedFieldSrc,\n selectedFieldType: this.props.selectedFieldType,\n selectedOperator: this.props.selectedOperator,\n setOperator: !immutableOpsMode ? this.props.setOperator : dummyFn,\n selectedFieldParts: selectedFieldParts,\n showOperator: showOperator,\n showOperatorLabel: showOperatorLabel,\n selectedFieldWidgetConfig: selectedFieldWidgetConfig,\n readonly: immutableOpsMode || isLocked,\n id: this.props.id,\n groupId: this.props.groupId\n });\n }\n }, {\n key: \"renderWidget\",\n value: function renderWidget() {\n var _this$props4 = this.props,\n config = _this$props4.config,\n isLocked = _this$props4.isLocked;\n var showWidget = this.meta.showWidget;\n var immutableValuesMode = config.settings.immutableValuesMode;\n if (!showWidget) return null;\n var widget = /*#__PURE__*/React.createElement(Widget, _extends({\n key: \"values\"\n }, this._buildWidgetProps(this.props), {\n config: config,\n setValue: !immutableValuesMode ? this.props.setValue : dummyFn,\n setValueSrc: !immutableValuesMode ? this.props.setValueSrc : dummyFn,\n readonly: immutableValuesMode || isLocked,\n id: this.props.id,\n groupId: this.props.groupId\n }));\n return /*#__PURE__*/React.createElement(Col, {\n key: \"widget-for-\" + this.props.selectedOperator,\n className: \"rule--value\"\n }, widget);\n }\n }, {\n key: \"renderOperatorOptions\",\n value: function renderOperatorOptions() {\n var config = this.props.config;\n var showOperatorOptions = this.meta.showOperatorOptions;\n var _config$settings2 = config.settings,\n immutableOpsMode = _config$settings2.immutableOpsMode,\n immutableValuesMode = _config$settings2.immutableValuesMode;\n if (!showOperatorOptions) return null;\n var opOpts = /*#__PURE__*/React.createElement(OperatorOptions, {\n key: \"operatorOptions\",\n selectedField: this.props.selectedField,\n selectedOperator: this.props.selectedOperator,\n operatorOptions: this.props.operatorOptions,\n setOperatorOption: !immutableOpsMode ? this.props.setOperatorOption : dummyFn,\n config: config,\n readonly: immutableValuesMode\n });\n return /*#__PURE__*/React.createElement(Col, {\n key: \"op-options-for-\" + this.props.selectedOperator,\n className: \"rule--operator-options\"\n }, opOpts);\n }\n }, {\n key: \"renderBeforeWidget\",\n value: function renderBeforeWidget() {\n var config = this.props.config;\n var renderBeforeWidget = config.settings.renderBeforeWidget;\n return renderBeforeWidget && /*#__PURE__*/React.createElement(Col, {\n key: \"before-widget-for-\" + this.props.selectedOperator,\n className: \"rule--before-widget\"\n }, typeof renderBeforeWidget === \"function\" ? renderBeforeWidget(this.props, config.ctx) : renderBeforeWidget);\n }\n }, {\n key: \"renderAfterWidget\",\n value: function renderAfterWidget() {\n var config = this.props.config;\n var renderAfterWidget = config.settings.renderAfterWidget;\n return renderAfterWidget && /*#__PURE__*/React.createElement(Col, {\n key: \"after-widget-for-\" + this.props.selectedOperator,\n className: \"rule--after-widget\"\n }, typeof renderAfterWidget === \"function\" ? renderAfterWidget(this.props, config.ctx) : renderAfterWidget);\n }\n }, {\n key: \"renderError\",\n value: function renderError() {\n var _this$props5 = this.props,\n config = _this$props5.config,\n valueError = _this$props5.valueError;\n var _config$settings3 = config.settings,\n renderRuleError = _config$settings3.renderRuleError,\n showErrorMessage = _config$settings3.showErrorMessage;\n var oneValueError = valueError && valueError.toArray().filter(function (e) {\n return !!e;\n }).shift() || null;\n return showErrorMessage && oneValueError && /*#__PURE__*/React.createElement(\"div\", {\n className: \"rule--error\"\n }, renderRuleError ? renderRuleError({\n error: oneValueError\n }, config.ctx) : oneValueError);\n }\n }, {\n key: \"renderDrag\",\n value: function renderDrag() {\n var handleDraggerMouseDown = this.props.handleDraggerMouseDown;\n var config = this.props.config;\n var showDragIcon = this.meta.showDragIcon;\n var renderIcon = config.settings.renderIcon;\n var Icon = function Icon(pr) {\n return renderIcon === null || renderIcon === void 0 ? void 0 : renderIcon(pr, config.ctx);\n };\n var icon = /*#__PURE__*/React.createElement(Icon, {\n type: \"drag\"\n });\n return showDragIcon && /*#__PURE__*/React.createElement(\"div\", {\n key: \"rule-drag-icon\",\n onMouseDown: handleDraggerMouseDown,\n className: \"qb-drag-handler rule--drag-handler\"\n }, icon);\n }\n }, {\n key: \"renderDel\",\n value: function renderDel() {\n var _this$props6 = this.props,\n config = _this$props6.config,\n isLocked = _this$props6.isLocked;\n var _config$settings4 = config.settings,\n deleteLabel = _config$settings4.deleteLabel,\n immutableGroupsMode = _config$settings4.immutableGroupsMode,\n renderButton = _config$settings4.renderButton,\n renderIcon = _config$settings4.renderIcon,\n canDeleteLocked = _config$settings4.canDeleteLocked;\n var Icon = function Icon(pr) {\n return renderIcon(pr, config.ctx);\n };\n var Btn = function Btn(pr) {\n return renderButton(pr, config.ctx);\n };\n return !immutableGroupsMode && (!isLocked || isLocked && canDeleteLocked) && /*#__PURE__*/React.createElement(Btn, {\n type: \"delRule\",\n onClick: this.removeSelf,\n label: deleteLabel,\n config: config,\n renderIcon: Icon\n });\n }\n }, {\n key: \"renderLock\",\n value: function renderLock() {\n var _this$props7 = this.props,\n config = _this$props7.config,\n isLocked = _this$props7.isLocked,\n isTrueLocked = _this$props7.isTrueLocked,\n id = _this$props7.id;\n var _config$settings5 = config.settings,\n lockLabel = _config$settings5.lockLabel,\n lockedLabel = _config$settings5.lockedLabel,\n showLock = _config$settings5.showLock,\n renderSwitch = _config$settings5.renderSwitch;\n var Switch = function Switch(pr) {\n return renderSwitch(pr, config.ctx);\n };\n return showLock && !(isLocked && !isTrueLocked) && /*#__PURE__*/React.createElement(Switch, {\n type: \"lock\",\n id: id,\n value: isLocked,\n setValue: this.setLock,\n label: lockLabel,\n checkedLabel: lockedLabel,\n hideLabel: true,\n config: config\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$meta2 = this.meta,\n showOperatorOptions = _this$meta2.showOperatorOptions,\n selectedFieldWidgetConfig = _this$meta2.selectedFieldWidgetConfig;\n var _this$props8 = this.props,\n valueSrc = _this$props8.valueSrc,\n value = _this$props8.value,\n config = _this$props8.config;\n var canShrinkValue = valueSrc.first() == \"value\" && !showOperatorOptions && value.size == 1 && selectedFieldWidgetConfig.fullWidth;\n var renderButtonGroup = config.settings.renderButtonGroup;\n var BtnGrp = function BtnGrp(pr) {\n return renderButtonGroup(pr, config.ctx);\n };\n var parts = [this.renderField(), this.renderOperator(), this.renderBeforeWidget(), this.renderWidget(), this.renderAfterWidget(), this.renderOperatorOptions()];\n var body = /*#__PURE__*/React.createElement(\"div\", {\n key: \"rule-body\",\n className: classNames(\"rule--body\", canShrinkValue && \"can--shrink--value\")\n }, parts);\n var error = this.renderError();\n var drag = this.renderDrag();\n var lock = this.renderLock();\n var del = this.renderDel();\n return /*#__PURE__*/React.createElement(React.Fragment, null, drag, /*#__PURE__*/React.createElement(\"div\", {\n className: \"rule--body--wrapper\"\n }, body, error), /*#__PURE__*/React.createElement(\"div\", {\n className: \"rule--header\"\n }, /*#__PURE__*/React.createElement(BtnGrp, {\n config: config\n }, lock, del)));\n }\n }]);\n return Rule;\n}(Component);\nRule.propTypes = {\n id: PropTypes.string.isRequired,\n groupId: PropTypes.string,\n selectedField: PropTypes.any,\n selectedFieldSrc: PropTypes.string,\n selectedFieldType: PropTypes.string,\n selectedOperator: PropTypes.string,\n operatorOptions: PropTypes.object,\n config: PropTypes.object.isRequired,\n value: PropTypes.any,\n //depends on widget\n valueSrc: PropTypes.any,\n valueType: PropTypes.any,\n asyncListValues: PropTypes.array,\n isDraggingMe: PropTypes.bool,\n isDraggingTempo: PropTypes.bool,\n parentField: PropTypes.string,\n //from RuleGroup\n valueError: PropTypes.any,\n isLocked: PropTypes.bool,\n isTrueLocked: PropTypes.bool,\n //path: PropTypes.instanceOf(Immutable.List),\n //actions\n handleDraggerMouseDown: PropTypes.func,\n setField: PropTypes.func,\n setFieldSrc: PropTypes.func,\n setOperator: PropTypes.func,\n setOperatorOption: PropTypes.func,\n setLock: PropTypes.func,\n removeSelf: PropTypes.func,\n setValue: PropTypes.func,\n setValueSrc: PropTypes.func,\n reordableNodesCnt: PropTypes.number,\n totalRulesCnt: PropTypes.number,\n parentReordableNodesCnt: PropTypes.number\n};\nexport default RuleContainer(Draggable(\"rule\")(WithConfirmFn(Rule)));","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport PropTypes from \"prop-types\";\nimport mapValues from \"lodash/mapValues\";\nimport context from \"../../stores/context\";\nimport { pureShouldComponentUpdate, useOnPropsChanged } from \"../../utils/reactUtils\";\nimport { connect } from \"react-redux\";\nvar defaultGroupConjunction = Utils.DefaultUtils.defaultGroupConjunction;\nvar createGroupContainer = function createGroupContainer(Group, itemType) {\n var _class;\n return _class = /*#__PURE__*/function (_Component) {\n _inherits(GroupContainer, _Component);\n var _super = _createSuper(GroupContainer);\n function GroupContainer(_props) {\n var _this;\n _classCallCheck(this, GroupContainer);\n _this = _super.call(this, _props);\n _this._selectedConjunction = function (props) {\n props = props || _this.props;\n return props.conjunction || defaultGroupConjunction(props.config, props.field);\n };\n _this.setConjunction = function () {\n var conj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n _this.props.actions.setConjunction(_this.props.path, conj);\n };\n _this.setNot = function () {\n var not = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n _this.props.actions.setNot(_this.props.path, not);\n };\n _this.setLock = function () {\n var lock = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n _this.props.actions.setLock(_this.props.path, lock);\n };\n _this.dummyFn = function () {};\n _this.removeSelf = function () {\n _this.props.actions.removeGroup(_this.props.path);\n };\n _this.addGroup = function () {\n _this.props.actions.addGroup(_this.props.path);\n };\n _this.addCaseGroup = function () {\n _this.props.actions.addCaseGroup(_this.props.path);\n };\n _this.addDefaultCaseGroup = function () {\n _this.props.actions.addDefaultCaseGroup(_this.props.path);\n };\n _this.addRule = function () {\n var parentRuleGroupPath = itemType == \"rule_group\" ? _this.props.field : null;\n _this.props.actions.addRule(_this.props.path, undefined, undefined, undefined, parentRuleGroupPath);\n };\n // for RuleGroup\n _this.setField = function (field, asyncListValues, __isInternal) {\n _this.props.actions.setField(_this.props.path, field, asyncListValues, __isInternal);\n };\n // for RuleGroupExt\n _this.setOperator = function (operator) {\n _this.props.actions.setOperator(_this.props.path, operator);\n };\n _this.setValue = function (delta, value, type) {\n _this.props.actions.setValue(_this.props.path, delta, value, type);\n };\n _this.pureShouldComponentUpdate = pureShouldComponentUpdate(_assertThisInitialized(_this));\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.selectedConjunction = _this._selectedConjunction(_props);\n _this.conjunctionOptions = _this._getConjunctionOptions(_props);\n _this.dummyFn.isDummyFn = true;\n return _this;\n }\n _createClass(GroupContainer, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n var prevProps = this.props;\n var prevState = this.state;\n var should = this.pureShouldComponentUpdate(nextProps, nextState);\n if (should) {\n if (prevState == nextState && prevProps != nextProps) {\n var draggingId = nextProps.dragging.id || prevProps.dragging.id;\n var isDraggingMe = draggingId == nextProps.id;\n var chs = [];\n for (var k in nextProps) {\n var changed = nextProps[k] != prevProps[k];\n if (k == \"dragging\" && !isDraggingMe) {\n changed = false; //dragging another item -> ignore\n }\n\n if (changed) {\n chs.push(k);\n }\n }\n if (!chs.length) should = false;\n }\n }\n return should;\n }\n }, {\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var config = nextProps.config,\n id = nextProps.id,\n conjunction = nextProps.conjunction;\n var oldConfig = this.props.config;\n var oldConjunction = this.props.conjunction;\n if (oldConfig != config || oldConjunction != conjunction) {\n this.selectedConjunction = this._selectedConjunction(nextProps);\n this.conjunctionOptions = this._getConjunctionOptions(nextProps);\n }\n }\n }, {\n key: \"_getConjunctionOptions\",\n value: function _getConjunctionOptions(props) {\n var _this2 = this;\n return mapValues(props.config.conjunctions, function (item, index) {\n return {\n id: \"conjunction-\".concat(props.id, \"-\").concat(index),\n name: \"conjunction[\".concat(props.id, \"]\"),\n key: index,\n label: item.label,\n checked: index === _this2._selectedConjunction(props)\n };\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var isDraggingMe = this.props.dragging.id == this.props.id;\n var currentNesting = this.props.path.size;\n var maxNesting = this.props.config.settings.maxNesting;\n var isInDraggingTempo = !isDraggingMe && this.props.isDraggingTempo;\n var fieldType = this.props.fieldType || null;\n\n // Don't allow nesting further than the maximum configured depth and don't\n // allow removal of the root group.\n var allowFurtherNesting = typeof maxNesting === \"undefined\" || currentNesting < maxNesting;\n var isRoot = currentNesting == 1;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"group-or-rule-container group-container\",\n \"data-id\": this.props.id\n }, [isDraggingMe ? /*#__PURE__*/React.createElement(Group, {\n key: \"dragging\",\n id: this.props.id,\n groupId: this.props.groupId,\n isDraggingMe: true,\n isDraggingTempo: true,\n dragging: this.props.dragging,\n isRoot: isRoot,\n allowFurtherNesting: allowFurtherNesting,\n conjunctionOptions: this.conjunctionOptions,\n not: this.props.not,\n selectedConjunction: this.selectedConjunction,\n setConjunction: this.dummyFn,\n setNot: this.dummyFn,\n setLock: this.dummyFn,\n removeSelf: this.dummyFn,\n addGroup: this.dummyFn,\n addCaseGroup: this.dummyFn,\n addDefaultCaseGroup: this.dummyFn,\n addRule: this.dummyFn,\n setField: this.dummyFn,\n setOperator: this.dummyFn,\n setValue: this.dummyFn,\n value: this.props.value || null,\n config: this.props.config,\n children1: this.props.children1,\n actions: this.props.actions,\n reordableNodesCnt: this.props.reordableNodesCnt,\n totalRulesCnt: this.props.totalRulesCnt,\n selectedField: this.props.field || null,\n selectedFieldSrc: this.props.fieldSrc || \"field\",\n selectedFieldType: fieldType,\n parentField: this.props.parentField || null,\n selectedOperator: this.props.operator || null,\n isLocked: this.props.isLocked,\n isTrueLocked: this.props.isTrueLocked,\n parentReordableNodesCnt: this.props.parentReordableNodesCnt\n }) : null, /*#__PURE__*/React.createElement(Group, {\n key: this.props.id,\n id: this.props.id,\n groupId: this.props.groupId,\n isDraggingMe: isDraggingMe,\n isDraggingTempo: isInDraggingTempo,\n onDragStart: this.props.onDragStart,\n isRoot: isRoot,\n allowFurtherNesting: allowFurtherNesting,\n conjunctionOptions: this.conjunctionOptions,\n not: this.props.not,\n selectedConjunction: this.selectedConjunction,\n setConjunction: isInDraggingTempo ? this.dummyFn : this.setConjunction,\n setNot: isInDraggingTempo ? this.dummyFn : this.setNot,\n setLock: isInDraggingTempo ? this.dummyFn : this.setLock,\n removeSelf: isInDraggingTempo ? this.dummyFn : this.removeSelf,\n addGroup: isInDraggingTempo ? this.dummyFn : this.addGroup,\n addCaseGroup: isInDraggingTempo ? this.dummyFn : this.addCaseGroup,\n addDefaultCaseGroup: isInDraggingTempo ? this.dummyFn : this.addDefaultCaseGroup,\n addRule: isInDraggingTempo ? this.dummyFn : this.addRule,\n setField: isInDraggingTempo ? this.dummyFn : this.setField,\n setOperator: isInDraggingTempo ? this.dummyFn : this.setOperator,\n setValue: isInDraggingTempo ? this.dummyFn : this.setValue,\n value: this.props.value || null,\n config: this.props.config,\n children1: this.props.children1,\n actions: this.props.actions,\n reordableNodesCnt: this.props.reordableNodesCnt,\n totalRulesCnt: this.props.totalRulesCnt,\n selectedField: this.props.field || null,\n selectedFieldSrc: this.props.fieldSrc || \"field\",\n selectedFieldType: fieldType,\n parentField: this.props.parentField || null,\n selectedOperator: this.props.operator || null,\n isLocked: this.props.isLocked,\n isTrueLocked: this.props.isTrueLocked,\n parentReordableNodesCnt: this.props.parentReordableNodesCnt\n })]);\n }\n }]);\n return GroupContainer;\n }(Component), _class.propTypes = {\n config: PropTypes.object.isRequired,\n actions: PropTypes.object.isRequired,\n //{setConjunction: Function, removeGroup, addGroup, addRule, ...}\n path: PropTypes.any.isRequired,\n //instanceOf(Immutable.List)\n id: PropTypes.string.isRequired,\n groupId: PropTypes.string,\n not: PropTypes.bool,\n conjunction: PropTypes.string,\n children1: PropTypes.any,\n //instanceOf(Immutable.OrderedMap)\n onDragStart: PropTypes.func,\n reordableNodesCnt: PropTypes.number,\n field: PropTypes.any,\n // for RuleGroup\n fieldSrc: PropTypes.string,\n // for RuleGroup\n fieldType: PropTypes.string,\n // for RuleGroup\n parentField: PropTypes.string,\n //from RuleGroup\n isLocked: PropTypes.bool,\n isTrueLocked: PropTypes.bool,\n //connected:\n dragging: PropTypes.object,\n //{id, x, y, w, h}\n isDraggingTempo: PropTypes.bool\n }, _class;\n};\nexport default (function (Group, itemType) {\n var ConnectedGroupContainer = connect(function (state) {\n return {\n dragging: state.dragging\n };\n }, null, null, {\n context: context\n })(createGroupContainer(Group, itemType));\n ConnectedGroupContainer.displayName = \"ConnectedGroupContainer\";\n return ConnectedGroupContainer;\n});","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nvar groupActionsPositionList = {\n topLeft: \"group--actions--tl\",\n topCenter: \"group--actions--tc\",\n topRight: \"group--actions--tr\",\n bottomLeft: \"group--actions--bl\",\n bottomCenter: \"group--actions--bc\",\n bottomRight: \"group--actions--br\"\n};\nvar defaultPosition = \"topRight\";\nexport var GroupActions = /*#__PURE__*/function (_PureComponent) {\n _inherits(GroupActions, _PureComponent);\n var _super = _createSuper(GroupActions);\n function GroupActions() {\n _classCallCheck(this, GroupActions);\n return _super.apply(this, arguments);\n }\n _createClass(GroupActions, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n addRule = _this$props.addRule,\n addGroup = _this$props.addGroup,\n removeSelf = _this$props.removeSelf,\n setLock = _this$props.setLock,\n isLocked = _this$props.isLocked,\n isTrueLocked = _this$props.isTrueLocked,\n id = _this$props.id,\n canAddGroup = _this$props.canAddGroup,\n canAddRule = _this$props.canAddRule,\n canDeleteGroup = _this$props.canDeleteGroup;\n var _config$settings = config.settings,\n immutableGroupsMode = _config$settings.immutableGroupsMode,\n addRuleLabel = _config$settings.addRuleLabel,\n addGroupLabel = _config$settings.addGroupLabel,\n delGroupLabel = _config$settings.delGroupLabel,\n groupActionsPosition = _config$settings.groupActionsPosition,\n renderButton = _config$settings.renderButton,\n renderIcon = _config$settings.renderIcon,\n renderSwitch = _config$settings.renderSwitch,\n renderButtonGroup = _config$settings.renderButtonGroup,\n lockLabel = _config$settings.lockLabel,\n lockedLabel = _config$settings.lockedLabel,\n showLock = _config$settings.showLock,\n canDeleteLocked = _config$settings.canDeleteLocked;\n var Icon = function Icon(pr) {\n return renderIcon(pr, config.ctx);\n };\n var Btn = function Btn(pr) {\n return renderButton(pr, config.ctx);\n };\n var Switch = function Switch(pr) {\n return renderSwitch(pr, config.ctx);\n };\n var BtnGrp = function BtnGrp(pr) {\n return renderButtonGroup(pr, config.ctx);\n };\n var position = groupActionsPositionList[groupActionsPosition || defaultPosition];\n var setLockSwitch = showLock && !(isLocked && !isTrueLocked) && /*#__PURE__*/React.createElement(Switch, {\n type: \"lock\",\n id: id,\n value: isLocked,\n setValue: setLock,\n label: lockLabel,\n checkedLabel: lockedLabel,\n config: config\n });\n var addRuleBtn = !immutableGroupsMode && canAddRule && !isLocked && /*#__PURE__*/React.createElement(Btn, {\n type: \"addRule\",\n onClick: addRule,\n label: addRuleLabel,\n readonly: isLocked,\n config: config,\n renderIcon: Icon\n });\n var addGroupBtn = !immutableGroupsMode && canAddGroup && !isLocked && /*#__PURE__*/React.createElement(Btn, {\n type: \"addGroup\",\n onClick: addGroup,\n label: addGroupLabel,\n readonly: isLocked,\n config: config,\n renderIcon: Icon\n });\n var delGroupBtn = !immutableGroupsMode && canDeleteGroup && (!isLocked || isLocked && canDeleteLocked) && /*#__PURE__*/React.createElement(Btn, {\n type: \"delGroup\",\n onClick: removeSelf,\n label: delGroupLabel,\n config: config,\n renderIcon: Icon\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"group--actions \".concat(position)\n }, /*#__PURE__*/React.createElement(BtnGrp, {\n config: config\n }, setLockSwitch, addRuleBtn, addGroupBtn, delGroupBtn));\n }\n }]);\n return GroupActions;\n}(PureComponent);","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport PropTypes from \"prop-types\";\nimport startsWith from \"lodash/startsWith\";\nimport GroupContainer from \"../containers/GroupContainer\";\nimport Draggable from \"../containers/Draggable\";\nimport classNames from \"classnames\";\nimport { Item } from \"./Item\";\nimport { GroupActions } from \"./GroupActions\";\nimport { WithConfirmFn, dummyFn } from \"../utils\";\nvar isEmptyGroupChildren = Utils.RuleUtils.isEmptyGroupChildren;\nvar defaultPosition = \"topRight\";\nexport var BasicGroup = /*#__PURE__*/function (_Component) {\n _inherits(BasicGroup, _Component);\n var _super = _createSuper(BasicGroup);\n function BasicGroup(props) {\n var _this;\n _classCallCheck(this, BasicGroup);\n _this = _super.call(this, props);\n _this.childrenClassName = function () {\n return \"\";\n };\n _this.renderBeforeActions = function () {\n var BeforeActions = _this.props.config.settings.renderBeforeActions;\n if (BeforeActions == undefined) return null;\n return typeof BeforeActions === \"function\" ? BeforeActions(_this.props, _this.props.config.ctx) : BeforeActions;\n };\n _this.renderAfterActions = function () {\n var AfterActions = _this.props.config.settings.renderAfterActions;\n if (AfterActions == undefined) return null;\n return typeof AfterActions === \"function\" ? AfterActions(_this.props, _this.props.config.ctx) : AfterActions;\n };\n _this.removeSelf = _this.removeSelf.bind(_assertThisInitialized(_this));\n _this.setLock = _this.setLock.bind(_assertThisInitialized(_this));\n _this.renderItem = _this.renderItem.bind(_assertThisInitialized(_this));\n return _this;\n }\n _createClass(BasicGroup, [{\n key: \"isGroupTopPosition\",\n value: function isGroupTopPosition() {\n return startsWith(this.props.config.settings.groupActionsPosition || defaultPosition, \"top\");\n }\n }, {\n key: \"setLock\",\n value: function setLock(lock) {\n this.props.setLock(lock);\n }\n }, {\n key: \"removeSelf\",\n value: function removeSelf() {\n var _this2 = this;\n var _this$props = this.props,\n confirmFn = _this$props.confirmFn,\n config = _this$props.config;\n var _config$settings = config.settings,\n renderConfirm = _config$settings.renderConfirm,\n confirmOptions = _config$settings.removeGroupConfirmOptions;\n var doRemove = function doRemove() {\n _this2.props.removeSelf();\n };\n if (confirmOptions && !this.isEmptyCurrentGroup()) {\n renderConfirm.call(config.ctx, _objectSpread(_objectSpread({}, confirmOptions), {}, {\n onOk: doRemove,\n onCancel: null,\n confirmFn: confirmFn\n }), config.ctx);\n } else {\n doRemove();\n }\n }\n }, {\n key: \"isEmptyCurrentGroup\",\n value: function isEmptyCurrentGroup() {\n var _this$props2 = this.props,\n children1 = _this$props2.children1,\n config = _this$props2.config;\n return isEmptyGroupChildren(children1, config);\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(React.Fragment, null, this.renderHeaderWrapper(), this.renderChildrenWrapper(), this.renderFooterWrapper());\n }\n }, {\n key: \"showNot\",\n value: function showNot() {\n var config = this.props.config;\n return config.settings.showNot;\n }\n\n // show conjs for 2+ children?\n }, {\n key: \"showConjs\",\n value: function showConjs() {\n var _this$props3 = this.props,\n conjunctionOptions = _this$props3.conjunctionOptions,\n children1 = _this$props3.children1,\n config = _this$props3.config;\n var conjunctionCount = Object.keys(conjunctionOptions).length;\n return conjunctionCount > 1 || this.showNot();\n }\n }, {\n key: \"isNoChildren\",\n value: function isNoChildren() {\n var children1 = this.props.children1;\n return children1 ? children1.size == 0 : true;\n }\n }, {\n key: \"isOneChild\",\n value: function isOneChild() {\n var children1 = this.props.children1;\n return children1 ? children1.size < 2 : true;\n }\n }, {\n key: \"renderChildrenWrapper\",\n value: function renderChildrenWrapper() {\n var children1 = this.props.children1;\n return children1 && /*#__PURE__*/React.createElement(\"div\", {\n key: \"group-children\",\n className: classNames(\"group--children\", !this.showConjs() ? \"hide--conjs\" : \"\", this.isOneChild() ? \"hide--line\" : \"\", this.isOneChild() ? \"one--child\" : \"\", this.childrenClassName())\n }, this.renderChildren());\n }\n }, {\n key: \"renderHeaderWrapper\",\n value: function renderHeaderWrapper() {\n var isGroupTopPosition = this.isGroupTopPosition();\n return /*#__PURE__*/React.createElement(\"div\", {\n key: \"group-header\",\n className: classNames(\"group--header\", this.isOneChild() ? \"one--child\" : \"\", !this.showConjs() ? \"hide--conjs\" : \"\", this.isOneChild() ? \"hide--line\" : \"\", this.isNoChildren() ? \"no--children\" : \"\")\n }, this.renderHeader(), isGroupTopPosition && this.renderBeforeActions(), isGroupTopPosition && this.renderActions(), isGroupTopPosition && this.renderAfterActions());\n }\n }, {\n key: \"renderFooterWrapper\",\n value: function renderFooterWrapper() {\n var isGroupTopPosition = this.isGroupTopPosition();\n return !isGroupTopPosition && /*#__PURE__*/React.createElement(\"div\", {\n key: \"group-footer\",\n className: \"group--footer\"\n }, this.renderBeforeActions(), this.renderActions(), this.renderAfterActions());\n }\n }, {\n key: \"renderActions\",\n value: function renderActions() {\n var _this$props4 = this.props,\n config = _this$props4.config,\n addRule = _this$props4.addRule,\n addGroup = _this$props4.addGroup,\n isLocked = _this$props4.isLocked,\n isTrueLocked = _this$props4.isTrueLocked,\n id = _this$props4.id;\n return /*#__PURE__*/React.createElement(GroupActions, {\n config: config,\n addRule: addRule,\n addGroup: addGroup,\n canAddGroup: this.canAddGroup(),\n canAddRule: this.canAddRule(),\n canDeleteGroup: this.canDeleteGroup(),\n removeSelf: this.removeSelf,\n setLock: this.setLock,\n isLocked: isLocked,\n isTrueLocked: isTrueLocked,\n id: id\n });\n }\n }, {\n key: \"canAddGroup\",\n value: function canAddGroup() {\n return this.props.allowFurtherNesting;\n }\n }, {\n key: \"canAddRule\",\n value: function canAddRule() {\n var maxNumberOfRules = this.props.config.settings.maxNumberOfRules;\n var totalRulesCnt = this.props.totalRulesCnt;\n if (maxNumberOfRules) {\n return totalRulesCnt < maxNumberOfRules;\n }\n return true;\n }\n }, {\n key: \"canDeleteGroup\",\n value: function canDeleteGroup() {\n return !this.props.isRoot;\n }\n }, {\n key: \"renderChildren\",\n value: function renderChildren() {\n var children1 = this.props.children1;\n return children1 ? children1.map(this.renderItem).toList() : null;\n }\n }, {\n key: \"renderItem\",\n value: function renderItem(item) {\n var props = this.props;\n var config = props.config,\n actions = props.actions,\n onDragStart = props.onDragStart,\n isLocked = props.isLocked;\n var isRuleGroup = item.get(\"type\") == \"group\" && item.getIn([\"properties\", \"field\"]) != null;\n var type = isRuleGroup ? \"rule_group\" : item.get(\"type\");\n return /*#__PURE__*/React.createElement(Item, _extends({}, this.extraPropsForItem(item), {\n key: item.get(\"id\"),\n id: item.get(\"id\"),\n groupId: props.id\n //path={props.path.push(item.get('id'))}\n ,\n path: item.get(\"path\"),\n type: type,\n properties: item.get(\"properties\"),\n config: config,\n actions: actions,\n children1: item.get(\"children1\"),\n reordableNodesCnt: this.reordableNodesCntForItem(item),\n totalRulesCnt: this.totalRulesCntForItem(item),\n parentReordableNodesCnt: this.reordableNodesCnt(),\n onDragStart: onDragStart,\n isDraggingTempo: this.props.isDraggingTempo,\n isParentLocked: isLocked\n }));\n }\n }, {\n key: \"extraPropsForItem\",\n value: function extraPropsForItem(_item) {\n return {};\n }\n }, {\n key: \"reordableNodesCnt\",\n value: function reordableNodesCnt() {\n if (this.props.isLocked) return 0;\n return this.props.reordableNodesCnt;\n }\n }, {\n key: \"totalRulesCntForItem\",\n value: function totalRulesCntForItem(_item) {\n return this.props.totalRulesCnt;\n }\n }, {\n key: \"reordableNodesCntForItem\",\n value: function reordableNodesCntForItem(_item) {\n if (this.props.isLocked) return 0;\n return this.reordableNodesCnt();\n }\n }, {\n key: \"showDragIcon\",\n value: function showDragIcon() {\n var _this$props5 = this.props,\n config = _this$props5.config,\n isRoot = _this$props5.isRoot,\n isLocked = _this$props5.isLocked;\n var reordableNodesCnt = this.reordableNodesCnt();\n return config.settings.canReorder && !isRoot && reordableNodesCnt > 1 && !isLocked;\n }\n }, {\n key: \"renderDrag\",\n value: function renderDrag() {\n var handleDraggerMouseDown = this.props.handleDraggerMouseDown;\n var config = this.props.config;\n var renderIcon = config.settings.renderIcon;\n var Icon = function Icon(pr) {\n return renderIcon === null || renderIcon === void 0 ? void 0 : renderIcon(pr, config.ctx);\n };\n var icon = /*#__PURE__*/React.createElement(Icon, {\n type: \"drag\"\n });\n return this.showDragIcon() && /*#__PURE__*/React.createElement(\"div\", {\n key: \"group-drag-icon\",\n onMouseDown: handleDraggerMouseDown,\n className: \"qb-drag-handler group--drag-handler\"\n }, icon);\n }\n }, {\n key: \"conjunctionOptions\",\n value: function conjunctionOptions() {\n var conjunctionOptions = this.props.conjunctionOptions;\n return conjunctionOptions;\n }\n }, {\n key: \"renderConjs\",\n value: function renderConjs() {\n var _this$props6 = this.props,\n config = _this$props6.config,\n children1 = _this$props6.children1,\n id = _this$props6.id,\n selectedConjunction = _this$props6.selectedConjunction,\n setConjunction = _this$props6.setConjunction,\n not = _this$props6.not,\n setNot = _this$props6.setNot,\n isLocked = _this$props6.isLocked;\n var _config$settings2 = config.settings,\n immutableGroupsMode = _config$settings2.immutableGroupsMode,\n renderConjs = _config$settings2.renderConjs,\n _showNot = _config$settings2.showNot,\n notLabel = _config$settings2.notLabel;\n var conjunctionOptions = this.conjunctionOptions();\n if (!this.showConjs()) return null;\n if (!children1 || !children1.size) return null;\n var renderProps = {\n disabled: this.isOneChild(),\n readonly: immutableGroupsMode || isLocked,\n selectedConjunction: selectedConjunction,\n setConjunction: immutableGroupsMode ? dummyFn : setConjunction,\n conjunctionOptions: conjunctionOptions,\n config: config,\n not: not || false,\n id: id,\n setNot: immutableGroupsMode ? dummyFn : setNot,\n notLabel: notLabel,\n showNot: this.showNot(),\n isLocked: isLocked\n };\n return renderConjs(renderProps, config.ctx);\n }\n }, {\n key: \"renderHeader\",\n value: function renderHeader() {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"group--conjunctions\"\n }, this.renderConjs(), this.renderDrag());\n }\n }]);\n return BasicGroup;\n}(Component);\nBasicGroup.propTypes = {\n reordableNodesCnt: PropTypes.number,\n conjunctionOptions: PropTypes.object.isRequired,\n allowFurtherNesting: PropTypes.bool.isRequired,\n isRoot: PropTypes.bool.isRequired,\n not: PropTypes.bool,\n selectedConjunction: PropTypes.string,\n config: PropTypes.object.isRequired,\n id: PropTypes.string.isRequired,\n groupId: PropTypes.string,\n path: PropTypes.any,\n //instanceOf(Immutable.List)\n children1: PropTypes.any,\n //instanceOf(Immutable.OrderedMap)\n isDraggingMe: PropTypes.bool,\n isDraggingTempo: PropTypes.bool,\n isLocked: PropTypes.bool,\n isTrueLocked: PropTypes.bool,\n //actions\n handleDraggerMouseDown: PropTypes.func,\n onDragStart: PropTypes.func,\n addRule: PropTypes.func.isRequired,\n addGroup: PropTypes.func.isRequired,\n removeSelf: PropTypes.func.isRequired,\n setConjunction: PropTypes.func.isRequired,\n setNot: PropTypes.func.isRequired,\n setLock: PropTypes.func.isRequired,\n actions: PropTypes.object.isRequired\n};\nexport default GroupContainer(Draggable(\"group\")(WithConfirmFn(BasicGroup)), \"group\");","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nexport var RuleGroupActions = /*#__PURE__*/function (_PureComponent) {\n _inherits(RuleGroupActions, _PureComponent);\n var _super = _createSuper(RuleGroupActions);\n function RuleGroupActions() {\n _classCallCheck(this, RuleGroupActions);\n return _super.apply(this, arguments);\n }\n _createClass(RuleGroupActions, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n addRule = _this$props.addRule,\n canAddRule = _this$props.canAddRule,\n canDeleteGroup = _this$props.canDeleteGroup,\n removeSelf = _this$props.removeSelf,\n setLock = _this$props.setLock,\n isLocked = _this$props.isLocked,\n isTrueLocked = _this$props.isTrueLocked,\n id = _this$props.id;\n var _config$settings = config.settings,\n immutableGroupsMode = _config$settings.immutableGroupsMode,\n addRuleLabel = _config$settings.addRuleLabel,\n delGroupLabel = _config$settings.delGroupLabel,\n renderButton = _config$settings.renderButton,\n renderIcon = _config$settings.renderIcon,\n renderSwitch = _config$settings.renderSwitch,\n renderButtonGroup = _config$settings.renderButtonGroup,\n lockLabel = _config$settings.lockLabel,\n lockedLabel = _config$settings.lockedLabel,\n showLock = _config$settings.showLock,\n canDeleteLocked = _config$settings.canDeleteLocked;\n var Icon = function Icon(pr) {\n return renderIcon(pr, config.ctx);\n };\n var Btn = function Btn(pr) {\n return renderButton(pr, config.ctx);\n };\n var Switch = function Switch(pr) {\n return renderSwitch(pr, config.ctx);\n };\n var BtnGrp = function BtnGrp(pr) {\n return renderButtonGroup(pr, config.ctx);\n };\n var setLockSwitch = showLock && !(isLocked && !isTrueLocked) && /*#__PURE__*/React.createElement(Switch, {\n type: \"lock\",\n id: id,\n value: isLocked,\n setValue: setLock,\n label: lockLabel,\n checkedLabel: lockedLabel,\n hideLabel: true,\n config: config\n });\n var addRuleBtn = !immutableGroupsMode && canAddRule && !isLocked && /*#__PURE__*/React.createElement(Btn, {\n type: \"addRuleGroup\",\n onClick: addRule,\n label: addRuleLabel,\n readonly: isLocked,\n config: config,\n renderIcon: Icon\n });\n var delGroupBtn = !immutableGroupsMode && canDeleteGroup && (!isLocked || isLocked && canDeleteLocked) && /*#__PURE__*/React.createElement(Btn, {\n type: \"delRuleGroup\",\n onClick: removeSelf,\n label: delGroupLabel,\n config: config,\n renderIcon: Icon\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"group--actions\"\n }, /*#__PURE__*/React.createElement(BtnGrp, {\n config: config\n }, setLockSwitch, addRuleBtn, delGroupBtn));\n }\n }]);\n return RuleGroupActions;\n}(PureComponent);","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _get from \"@babel/runtime/helpers/get\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\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); }; }\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; } }\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport GroupContainer from \"../containers/GroupContainer\";\nimport Draggable from \"../containers/Draggable\";\nimport { BasicGroup } from \"./Group\";\nimport { RuleGroupActions } from \"./RuleGroupActions\";\nimport FieldWrapper from \"../rule/FieldWrapper\";\nimport { useOnPropsChanged } from \"../../utils/reactUtils\";\nimport { WithConfirmFn } from \"../utils\";\nvar RuleGroup = /*#__PURE__*/function (_BasicGroup) {\n _inherits(RuleGroup, _BasicGroup);\n var _super = _createSuper(RuleGroup);\n function RuleGroup(props) {\n var _this;\n _classCallCheck(this, RuleGroup);\n _this = _super.call(this, props);\n _this.childrenClassName = function () {\n return \"rule_group--children\";\n };\n _this.renderHeaderWrapper = function () {\n return null;\n };\n _this.renderFooterWrapper = function () {\n return null;\n };\n _this.renderConjs = function () {\n return null;\n };\n _this.canAddGroup = function () {\n return false;\n };\n _this.canAddRule = function () {\n return true;\n };\n _this.canDeleteGroup = function () {\n return false;\n };\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.onPropsChanged(props);\n return _this;\n }\n _createClass(RuleGroup, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {}\n }, {\n key: \"reordableNodesCntForItem\",\n value: function reordableNodesCntForItem(_item) {\n if (this.props.isLocked) return 0;\n var children1 = this.props.children1;\n return (children1 === null || children1 === void 0 ? void 0 : children1.size) || 0;\n }\n }, {\n key: \"renderChildrenWrapper\",\n value: function renderChildrenWrapper() {\n return /*#__PURE__*/React.createElement(React.Fragment, null, this.renderDrag(), this.renderField(), this.renderActions(), _get(_getPrototypeOf(RuleGroup.prototype), \"renderChildrenWrapper\", this).call(this));\n }\n }, {\n key: \"renderField\",\n value: function renderField() {\n var _this$props = this.props,\n config = _this$props.config,\n selectedField = _this$props.selectedField,\n selectedFieldSrc = _this$props.selectedFieldSrc,\n selectedFieldType = _this$props.selectedFieldType,\n setField = _this$props.setField,\n setFieldSrc = _this$props.setFieldSrc,\n parentField = _this$props.parentField,\n id = _this$props.id,\n groupId = _this$props.groupId,\n isLocked = _this$props.isLocked;\n var immutableFieldsMode = config.settings.immutableFieldsMode;\n return /*#__PURE__*/React.createElement(FieldWrapper, {\n key: \"field\",\n classname: \"group--field\",\n config: config,\n canSelectFieldSource: false,\n selectedField: selectedField,\n selectedFieldSrc: selectedFieldSrc,\n selectedFieldType: selectedFieldType,\n setField: setField,\n setFieldSrc: setFieldSrc,\n parentField: parentField,\n readonly: immutableFieldsMode || isLocked,\n id: id,\n groupId: groupId\n });\n }\n }, {\n key: \"renderActions\",\n value: function renderActions() {\n var _this$props2 = this.props,\n config = _this$props2.config,\n addRule = _this$props2.addRule,\n isLocked = _this$props2.isLocked,\n isTrueLocked = _this$props2.isTrueLocked,\n id = _this$props2.id;\n return /*#__PURE__*/React.createElement(RuleGroupActions, {\n config: config,\n addRule: addRule,\n canAddRule: this.canAddRule(),\n canDeleteGroup: this.canDeleteGroup(),\n removeSelf: this.removeSelf,\n setLock: this.setLock,\n isLocked: isLocked,\n isTrueLocked: isTrueLocked,\n id: id\n });\n }\n }, {\n key: \"extraPropsForItem\",\n value: function extraPropsForItem(_item) {\n return {\n parentField: this.props.selectedField\n };\n }\n }]);\n return RuleGroup;\n}(BasicGroup);\nRuleGroup.propTypes = _objectSpread(_objectSpread({}, BasicGroup.propTypes), {}, {\n selectedField: PropTypes.any,\n selectedFieldSrc: PropTypes.string,\n parentField: PropTypes.string,\n setField: PropTypes.func,\n setFieldSrc: PropTypes.func\n});\nexport default GroupContainer(Draggable(\"group rule_group\")(WithConfirmFn(RuleGroup)), \"rule_group\");","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nexport var RuleGroupExtActions = /*#__PURE__*/function (_PureComponent) {\n _inherits(RuleGroupExtActions, _PureComponent);\n var _super = _createSuper(RuleGroupExtActions);\n function RuleGroupExtActions() {\n _classCallCheck(this, RuleGroupExtActions);\n return _super.apply(this, arguments);\n }\n _createClass(RuleGroupExtActions, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n addRule = _this$props.addRule,\n canAddRule = _this$props.canAddRule,\n canDeleteGroup = _this$props.canDeleteGroup,\n removeSelf = _this$props.removeSelf,\n setLock = _this$props.setLock,\n isLocked = _this$props.isLocked,\n isTrueLocked = _this$props.isTrueLocked,\n id = _this$props.id;\n var _config$settings = config.settings,\n immutableGroupsMode = _config$settings.immutableGroupsMode,\n addSubRuleLabel = _config$settings.addSubRuleLabel,\n delGroupLabel = _config$settings.delGroupLabel,\n renderButton = _config$settings.renderButton,\n renderIcon = _config$settings.renderIcon,\n renderSwitch = _config$settings.renderSwitch,\n renderButtonGroup = _config$settings.renderButtonGroup,\n lockLabel = _config$settings.lockLabel,\n lockedLabel = _config$settings.lockedLabel,\n showLock = _config$settings.showLock,\n canDeleteLocked = _config$settings.canDeleteLocked;\n var Icon = function Icon(pr) {\n return renderIcon(pr, config.ctx);\n };\n var Btn = function Btn(pr) {\n return renderButton(pr, config.ctx);\n };\n var Switch = function Switch(pr) {\n return renderSwitch(pr, config.ctx);\n };\n var BtnGrp = function BtnGrp(pr) {\n return renderButtonGroup(pr, config.ctx);\n };\n var setLockSwitch = showLock && !(isLocked && !isTrueLocked) && /*#__PURE__*/React.createElement(Switch, {\n type: \"lock\",\n id: id,\n value: isLocked,\n setValue: setLock,\n label: lockLabel,\n checkedLabel: lockedLabel,\n config: config\n });\n var addRuleBtn = !immutableGroupsMode && canAddRule && !isLocked && /*#__PURE__*/React.createElement(Btn, {\n type: \"addRuleGroupExt\",\n onClick: addRule,\n label: addSubRuleLabel,\n readonly: isLocked,\n config: config,\n renderIcon: Icon\n });\n var delGroupBtn = !immutableGroupsMode && canDeleteGroup && (!isLocked || isLocked && canDeleteLocked) && /*#__PURE__*/React.createElement(Btn, {\n type: \"delRuleGroup\",\n onClick: removeSelf,\n label: delGroupLabel,\n config: config,\n renderIcon: Icon\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"group--actions group--actions--tr\"\n }, /*#__PURE__*/React.createElement(BtnGrp, {\n config: config\n }, setLockSwitch, addRuleBtn, delGroupBtn));\n }\n }]);\n return RuleGroupExtActions;\n}(PureComponent);","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _get from \"@babel/runtime/helpers/get\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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; } } }; }\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); }\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; }\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); }; }\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; } }\nimport React from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport PropTypes from \"prop-types\";\nimport GroupContainer from \"../containers/GroupContainer\";\nimport Draggable from \"../containers/Draggable\";\nimport { BasicGroup } from \"./Group\";\nimport { RuleGroupExtActions } from \"./RuleGroupExtActions\";\nimport FieldWrapper from \"../rule/FieldWrapper\";\nimport OperatorWrapper from \"../rule/OperatorWrapper\";\nimport { useOnPropsChanged } from \"../../utils/reactUtils\";\nimport { Col, dummyFn, WithConfirmFn } from \"../utils\";\nimport Widget from \"../rule/Widget\";\nimport classNames from \"classnames\";\nvar _Utils$ConfigUtils = Utils.ConfigUtils,\n getFieldConfig = _Utils$ConfigUtils.getFieldConfig,\n getFieldWidgetConfig = _Utils$ConfigUtils.getFieldWidgetConfig;\nvar isEmptyRuleGroupExtPropertiesAndChildren = Utils.RuleUtils.isEmptyRuleGroupExtPropertiesAndChildren;\nvar RuleGroupExt = /*#__PURE__*/function (_BasicGroup) {\n _inherits(RuleGroupExt, _BasicGroup);\n var _super = _createSuper(RuleGroupExt);\n function RuleGroupExt(props) {\n var _this;\n _classCallCheck(this, RuleGroupExt);\n _this = _super.call(this, props);\n _this.childrenClassName = function () {\n return \"rule_group_ext--children\";\n };\n _this.renderFooterWrapper = function () {\n return null;\n };\n _this.canAddGroup = function () {\n return false;\n };\n _this.canAddRule = function () {\n return true;\n };\n _this.canDeleteGroup = function () {\n return true;\n };\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.onPropsChanged(props);\n return _this;\n }\n _createClass(RuleGroupExt, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {}\n }, {\n key: \"renderHeaderWrapper\",\n value: function renderHeaderWrapper() {\n return /*#__PURE__*/React.createElement(\"div\", {\n key: \"group-header\",\n className: classNames(\"group--header\", this.isOneChild() ? \"one--child\" : \"\", this.isOneChild() ? \"hide--line\" : \"\", this.isNoChildren() ? \"no--children\" : \"\", this.showDragIcon() ? \"with--drag\" : \"hide--drag\", this.showConjs() && (!this.isOneChild() || this.showNot()) ? \"with--conjs\" : \"hide--conjs\")\n }, this.renderHeader(), this.renderGroupField(), this.renderActions());\n }\n }, {\n key: \"renderHeader\",\n value: function renderHeader() {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"group--conjunctions\"\n }, this.renderConjs(), this.renderDrag());\n }\n }, {\n key: \"renderGroupField\",\n value: function renderGroupField() {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"group--field--count--rule\"\n }, this.renderField(), this.renderOperator(), this.renderWidget());\n }\n }, {\n key: \"showNot\",\n value: function showNot() {\n var _this$props = this.props,\n config = _this$props.config,\n selectedField = _this$props.selectedField,\n selectedOperator = _this$props.selectedOperator;\n var selectedFieldConfig = getFieldConfig(config, selectedField) || {};\n return selectedFieldConfig.showNot != undefined ? selectedFieldConfig.showNot : config.settings.showNot;\n }\n }, {\n key: \"conjunctionOptions\",\n value: function conjunctionOptions() {\n var _this$props2 = this.props,\n config = _this$props2.config,\n selectedField = _this$props2.selectedField,\n selectedOperator = _this$props2.selectedOperator;\n var selectedFieldConfig = getFieldConfig(config, selectedField) || {};\n var conjunctionOptions = _get(_getPrototypeOf(RuleGroupExt.prototype), \"conjunctionOptions\", this).call(this);\n if (selectedFieldConfig.conjunctions) {\n var filtered = {};\n var _iterator = _createForOfIteratorHelper(selectedFieldConfig.conjunctions),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var k = _step.value;\n var options = conjunctionOptions[k];\n if (options) {\n filtered[k] = options;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n conjunctionOptions = filtered;\n }\n return conjunctionOptions;\n }\n }, {\n key: \"renderField\",\n value: function renderField() {\n var _this$props3 = this.props,\n config = _this$props3.config,\n selectedField = _this$props3.selectedField,\n selectedFieldSrc = _this$props3.selectedFieldSrc,\n selectedFieldType = _this$props3.selectedFieldType,\n setField = _this$props3.setField,\n setFieldSrc = _this$props3.setFieldSrc,\n parentField = _this$props3.parentField,\n id = _this$props3.id,\n groupId = _this$props3.groupId,\n isLocked = _this$props3.isLocked;\n var immutableFieldsMode = config.settings.immutableFieldsMode;\n return /*#__PURE__*/React.createElement(FieldWrapper, {\n key: \"field\",\n classname: \"rule--field\",\n config: config,\n canSelectFieldSource: false,\n selectedField: selectedField,\n selectedFieldSrc: selectedFieldSrc,\n selectedFieldType: selectedFieldType,\n setField: setField,\n setFieldSrc: setFieldSrc,\n parentField: parentField,\n readonly: immutableFieldsMode || isLocked,\n id: id,\n groupId: groupId\n });\n }\n }, {\n key: \"renderOperator\",\n value: function renderOperator() {\n var _this$props4 = this.props,\n config = _this$props4.config,\n selectedField = _this$props4.selectedField,\n selectedFieldSrc = _this$props4.selectedFieldSrc,\n selectedOperator = _this$props4.selectedOperator,\n setField = _this$props4.setField,\n setOperator = _this$props4.setOperator,\n isLocked = _this$props4.isLocked;\n var immutableFieldsMode = config.settings.immutableFieldsMode;\n var selectedFieldWidgetConfig = getFieldWidgetConfig(config, selectedField, selectedOperator) || {};\n var hideOperator = selectedFieldWidgetConfig.hideOperator;\n var showOperatorLabel = selectedField && hideOperator && selectedFieldWidgetConfig.operatorInlineLabel;\n var showOperator = selectedField && !hideOperator;\n return /*#__PURE__*/React.createElement(OperatorWrapper, {\n key: \"operator\",\n classname: \"group--operator\",\n config: config,\n selectedField: selectedField,\n selectedFieldSrc: selectedFieldSrc,\n selectedOperator: selectedOperator,\n setOperator: setOperator,\n selectedFieldPartsLabels: [\"group\"],\n showOperator: showOperator,\n showOperatorLabel: showOperatorLabel,\n selectedFieldWidgetConfig: selectedFieldWidgetConfig,\n readonly: immutableFieldsMode || isLocked,\n id: this.props.id,\n groupId: this.props.groupId\n });\n }\n }, {\n key: \"isEmptyCurrentGroup\",\n value: function isEmptyCurrentGroup() {\n var _this$props5 = this.props,\n children1 = _this$props5.children1,\n config = _this$props5.config;\n var ruleData = this._buildWidgetProps(this.props);\n return isEmptyRuleGroupExtPropertiesAndChildren(ruleData, children1, config);\n }\n }, {\n key: \"_buildWidgetProps\",\n value: function _buildWidgetProps(_ref) {\n var selectedField = _ref.selectedField,\n selectedFieldSrc = _ref.selectedFieldSrc,\n selectedFieldType = _ref.selectedFieldType,\n selectedOperator = _ref.selectedOperator,\n operatorOptions = _ref.operatorOptions,\n value = _ref.value,\n valueType = _ref.valueType,\n valueSrc = _ref.valueSrc,\n asyncListValues = _ref.asyncListValues,\n valueError = _ref.valueError,\n parentField = _ref.parentField;\n return {\n field: selectedField,\n fieldSrc: selectedFieldSrc,\n fieldType: selectedFieldType,\n operator: selectedOperator,\n operatorOptions: operatorOptions,\n value: value,\n valueType: valueType,\n // new Immutable.List([\"number\"])\n valueSrc: [\"value\"],\n //new Immutable.List([\"value\"]), // should be fixed in isEmptyRuleGroupExtPropertiesAndChildren\n //asyncListValues,\n valueError: null,\n parentField: parentField\n };\n }\n }, {\n key: \"renderWidget\",\n value: function renderWidget() {\n var _this$props6 = this.props,\n config = _this$props6.config,\n selectedField = _this$props6.selectedField,\n selectedOperator = _this$props6.selectedOperator,\n isLocked = _this$props6.isLocked;\n var immutableValuesMode = config.settings.immutableValuesMode;\n var isFieldAndOpSelected = selectedField && selectedOperator;\n var showWidget = isFieldAndOpSelected;\n if (!showWidget) return null;\n var widget = /*#__PURE__*/React.createElement(Widget, _extends({\n key: \"values\",\n isForRuleGroup: true\n }, this._buildWidgetProps(this.props), {\n config: config,\n setValue: !immutableValuesMode ? this.props.setValue : dummyFn,\n setValueSrc: dummyFn,\n readonly: immutableValuesMode || isLocked,\n id: this.props.id,\n groupId: this.props.groupId\n }));\n return /*#__PURE__*/React.createElement(Col, {\n key: \"widget-for-\" + this.props.selectedOperator,\n className: \"rule--value\"\n }, widget);\n }\n }, {\n key: \"renderActions\",\n value: function renderActions() {\n var _this$props7 = this.props,\n config = _this$props7.config,\n addRule = _this$props7.addRule,\n isLocked = _this$props7.isLocked,\n isTrueLocked = _this$props7.isTrueLocked,\n id = _this$props7.id;\n return /*#__PURE__*/React.createElement(RuleGroupExtActions, {\n config: config,\n addRule: addRule,\n canAddRule: this.canAddRule(),\n canDeleteGroup: this.canDeleteGroup(),\n removeSelf: this.removeSelf,\n setLock: this.setLock,\n isLocked: isLocked,\n isTrueLocked: isTrueLocked,\n id: id\n });\n }\n }, {\n key: \"reordableNodesCntForItem\",\n value: function reordableNodesCntForItem(_item) {\n if (this.props.isLocked) return 0;\n var children1 = this.props.children1;\n return (children1 === null || children1 === void 0 ? void 0 : children1.size) || 0;\n }\n }, {\n key: \"extraPropsForItem\",\n value: function extraPropsForItem(_item) {\n return {\n parentField: this.props.selectedField\n };\n }\n }]);\n return RuleGroupExt;\n}(BasicGroup);\nRuleGroupExt.propTypes = _objectSpread(_objectSpread({}, BasicGroup.propTypes), {}, {\n selectedField: PropTypes.any,\n selectedFieldSrc: PropTypes.string,\n selectedOperator: PropTypes.string,\n value: PropTypes.any,\n parentField: PropTypes.string,\n setField: PropTypes.func,\n setFieldSrc: PropTypes.func,\n setOperator: PropTypes.func,\n setValue: PropTypes.func\n});\nexport default GroupContainer(Draggable(\"group rule_group_ext\")(WithConfirmFn(RuleGroupExt)), \"rule_group\");","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nvar groupActionsPositionList = {\n topLeft: \"group--actions--tl\",\n topCenter: \"group--actions--tc\",\n topRight: \"group--actions--tr\",\n bottomLeft: \"group--actions--bl\",\n bottomCenter: \"group--actions--bc\",\n bottomRight: \"group--actions--br\"\n};\nvar defaultPosition = \"topRight\";\nexport var SwitchGroupActions = /*#__PURE__*/function (_PureComponent) {\n _inherits(SwitchGroupActions, _PureComponent);\n var _super = _createSuper(SwitchGroupActions);\n function SwitchGroupActions() {\n _classCallCheck(this, SwitchGroupActions);\n return _super.apply(this, arguments);\n }\n _createClass(SwitchGroupActions, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n addCaseGroup = _this$props.addCaseGroup,\n addDefaultCaseGroup = _this$props.addDefaultCaseGroup,\n setLock = _this$props.setLock,\n isLocked = _this$props.isLocked,\n isTrueLocked = _this$props.isTrueLocked,\n id = _this$props.id,\n canAddGroup = _this$props.canAddGroup,\n canAddDefault = _this$props.canAddDefault;\n var _config$settings = config.settings,\n immutableGroupsMode = _config$settings.immutableGroupsMode,\n addCaseLabel = _config$settings.addCaseLabel,\n addDefaultCaseLabel = _config$settings.addDefaultCaseLabel,\n groupActionsPosition = _config$settings.groupActionsPosition,\n renderButton = _config$settings.renderButton,\n renderIcon = _config$settings.renderIcon,\n renderSwitch = _config$settings.renderSwitch,\n renderButtonGroup = _config$settings.renderButtonGroup,\n lockLabel = _config$settings.lockLabel,\n lockedLabel = _config$settings.lockedLabel,\n showLock = _config$settings.showLock;\n var Icon = function Icon(pr) {\n return renderIcon(pr, config.ctx);\n };\n var Btn = function Btn(pr) {\n return renderButton(pr, config.ctx);\n };\n var Switch = function Switch(pr) {\n return renderSwitch(pr, config.ctx);\n };\n var BtnGrp = function BtnGrp(pr) {\n return renderButtonGroup(pr, config.ctx);\n };\n var position = groupActionsPositionList[groupActionsPosition || defaultPosition];\n var setLockSwitch = showLock && !(isLocked && !isTrueLocked) && /*#__PURE__*/React.createElement(Switch, {\n type: \"lock\",\n id: id,\n value: isLocked,\n setValue: setLock,\n label: lockLabel,\n checkedLabel: lockedLabel,\n config: config\n });\n var addCaseGroupBtn = !immutableGroupsMode && canAddGroup && !isLocked && /*#__PURE__*/React.createElement(Btn, {\n type: \"addCaseGroup\",\n onClick: addCaseGroup,\n label: addCaseLabel,\n readonly: isLocked,\n config: config,\n renderIcon: Icon\n });\n var addDefaultCaseGroupBtn = !immutableGroupsMode && canAddDefault && !isLocked && /*#__PURE__*/React.createElement(Btn, {\n type: \"addDefaultCaseGroup\",\n onClick: addDefaultCaseGroup,\n label: addDefaultCaseLabel,\n readonly: isLocked,\n config: config,\n renderIcon: Icon\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"group--actions \".concat(position)\n }, /*#__PURE__*/React.createElement(BtnGrp, {\n config: config\n }, setLockSwitch, addCaseGroupBtn, addDefaultCaseGroupBtn));\n }\n }]);\n return SwitchGroupActions;\n}(PureComponent);","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\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); }; }\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; } }\nimport React from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport PropTypes from \"prop-types\";\nimport GroupContainer from \"../containers/GroupContainer\";\nimport Draggable from \"../containers/Draggable\";\nimport { BasicGroup } from \"./Group\";\nimport { SwitchGroupActions } from \"./SwitchGroupActions\";\nimport { useOnPropsChanged } from \"../../utils/reactUtils\";\nimport { Col, dummyFn, WithConfirmFn } from \"../utils\";\nimport classNames from \"classnames\";\nvar _Utils$TreeUtils = Utils.TreeUtils,\n getTotalReordableNodesCountInTree = _Utils$TreeUtils.getTotalReordableNodesCountInTree,\n getTotalRulesCountInTree = _Utils$TreeUtils.getTotalRulesCountInTree;\nvar SwitchGroup = /*#__PURE__*/function (_BasicGroup) {\n _inherits(SwitchGroup, _BasicGroup);\n var _super = _createSuper(SwitchGroup);\n function SwitchGroup(props) {\n var _this;\n _classCallCheck(this, SwitchGroup);\n _this = _super.call(this, props);\n _this.childrenClassName = function () {\n return \"switch_group--children\";\n };\n _this.renderFooterWrapper = function () {\n return null;\n };\n _this.hasDefaultCase = function () {\n var _this$props$children;\n return ((_this$props$children = _this.props.children1) === null || _this$props$children === void 0 ? void 0 : _this$props$children.size) && _this.props.children1.filter(function (c) {\n return c.get(\"children1\") == null;\n }).size > 0;\n };\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.onPropsChanged(props);\n return _this;\n }\n _createClass(SwitchGroup, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {}\n }, {\n key: \"canAddGroup\",\n value: function canAddGroup() {\n var _this$props$children2;\n var maxNumberOfCases = this.props.config.settings.maxNumberOfCases;\n var totalCasesCnt = ((_this$props$children2 = this.props.children1) === null || _this$props$children2 === void 0 ? void 0 : _this$props$children2.size) || 0;\n if (maxNumberOfCases) {\n return totalCasesCnt < maxNumberOfCases;\n }\n return true;\n }\n }, {\n key: \"canAddRule\",\n value: function canAddRule() {\n return false;\n }\n }, {\n key: \"reordableNodesCnt\",\n value: function reordableNodesCnt() {\n var _this$props$children3;\n // result will be passed to each case's `parentReordableNodesCnt` prop\n var totalCasesCnt = ((_this$props$children3 = this.props.children1) === null || _this$props$children3 === void 0 ? void 0 : _this$props$children3.size) || 0;\n var casesToReorder = totalCasesCnt;\n if (this.hasDefaultCase()) {\n casesToReorder--;\n }\n return casesToReorder;\n }\n }, {\n key: \"totalRulesCntForItem\",\n value: function totalRulesCntForItem(item) {\n return getTotalRulesCountInTree(item);\n }\n }, {\n key: \"reordableNodesCntForItem\",\n value: function reordableNodesCntForItem(item) {\n var _this$props$children4;\n if (this.props.isLocked) return 0;\n var _this$props$config$se = this.props.config.settings,\n canLeaveEmptyCase = _this$props$config$se.canLeaveEmptyCase,\n canRegroupCases = _this$props$config$se.canRegroupCases;\n var totalCasesCnt = ((_this$props$children4 = this.props.children1) === null || _this$props$children4 === void 0 ? void 0 : _this$props$children4.size) || 0;\n var casesToReorder = totalCasesCnt;\n if (this.hasDefaultCase()) {\n casesToReorder--;\n }\n var nodesInCase = getTotalReordableNodesCountInTree(item);\n var cnt = nodesInCase;\n if (cnt == 1 && canRegroupCases && canLeaveEmptyCase && casesToReorder > 1) cnt = 111;\n return cnt;\n }\n }, {\n key: \"renderHeaderWrapper\",\n value: function renderHeaderWrapper() {\n return /*#__PURE__*/React.createElement(\"div\", {\n key: \"group-header\",\n className: classNames(\"group--header\", this.isOneChild() ? \"one--child\" : \"\", this.isOneChild() ? \"hide--line\" : \"\", this.isNoChildren() ? \"no--children\" : \"\", this.showDragIcon() ? \"with--drag\" : \"hide--drag\"\n //this.showConjs() && (!this.isOneChild() || this.showNot()) ? \"with--conjs\" : \"hide--conjs\"\n )\n }, this.renderHeader(), this.renderActions());\n }\n }, {\n key: \"renderHeader\",\n value: function renderHeader() {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"group--conjunctions\"\n }, this.renderConjs(), this.renderDrag());\n }\n }, {\n key: \"renderConjs\",\n value: function renderConjs() {\n var config = this.props.config;\n var renderSwitchPrefix = config.settings.renderSwitchPrefix;\n return renderSwitchPrefix || null;\n }\n }, {\n key: \"showNot\",\n value: function showNot() {\n return false;\n }\n }, {\n key: \"renderActions\",\n value: function renderActions() {\n var _this$props = this.props,\n config = _this$props.config,\n addCaseGroup = _this$props.addCaseGroup,\n addDefaultCaseGroup = _this$props.addDefaultCaseGroup,\n isLocked = _this$props.isLocked,\n isTrueLocked = _this$props.isTrueLocked,\n id = _this$props.id;\n return /*#__PURE__*/React.createElement(SwitchGroupActions, {\n config: config,\n addCaseGroup: addCaseGroup,\n addDefaultCaseGroup: addDefaultCaseGroup,\n canAddDefault: !this.hasDefaultCase(),\n canAddGroup: this.canAddGroup(),\n setLock: this.setLock,\n isLocked: isLocked,\n isTrueLocked: isTrueLocked,\n id: id\n });\n }\n }]);\n return SwitchGroup;\n}(BasicGroup);\nSwitchGroup.propTypes = _objectSpread({}, BasicGroup.propTypes);\nexport default GroupContainer(Draggable(\"group switch_group\")(WithConfirmFn(SwitchGroup)), \"switch_group\");","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _get from \"@babel/runtime/helpers/get\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\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); }; }\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; } }\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport GroupContainer from \"../containers/GroupContainer\";\nimport Draggable from \"../containers/Draggable\";\nimport { BasicGroup } from \"./Group\";\nimport { GroupActions } from \"./GroupActions\";\nimport { useOnPropsChanged } from \"../../utils/reactUtils\";\nimport { Col, dummyFn, WithConfirmFn } from \"../utils\";\nimport Widget from \"../rule/Widget\";\nimport classNames from \"classnames\";\nvar CaseGroup = /*#__PURE__*/function (_BasicGroup) {\n _inherits(CaseGroup, _BasicGroup);\n var _super = _createSuper(CaseGroup);\n function CaseGroup(props) {\n var _this;\n _classCallCheck(this, CaseGroup);\n _this = _super.call(this, props);\n _this.childrenClassName = function () {\n return \"case_group--children\";\n };\n _this.renderFooterWrapper = function () {\n return null;\n };\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.onPropsChanged(props);\n return _this;\n }\n _createClass(CaseGroup, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {}\n }, {\n key: \"isDefaultCase\",\n value: function isDefaultCase() {\n return this.props.children1 == undefined;\n }\n }, {\n key: \"reordableNodesCnt\",\n value: function reordableNodesCnt() {\n // `parentReordableNodesCnt` is number of cases to reorder\n return this.props.parentReordableNodesCnt;\n }\n }, {\n key: \"reordableNodesCntForItem\",\n value: function reordableNodesCntForItem(_item) {\n // `reordableNodesCnt` is number of nodes is current case\n if (this.props.isLocked) return 0;\n return this.props.reordableNodesCnt;\n }\n }, {\n key: \"totalRulesCntForItem\",\n value: function totalRulesCntForItem(_item) {\n // `totalRulesCnt` is number of nodes is current case\n return this.props.totalRulesCnt;\n }\n }, {\n key: \"showDragIcon\",\n value: function showDragIcon() {\n // default impl of `showDragIcon()` uses `this.reordableNodesCnt()`\n if (this.isDefaultCase()) return false;\n return _get(_getPrototypeOf(CaseGroup.prototype), \"showDragIcon\", this).call(this);\n }\n }, {\n key: \"renderHeaderWrapper\",\n value: function renderHeaderWrapper() {\n return /*#__PURE__*/React.createElement(\"div\", {\n key: \"group-header\",\n className: classNames(\"group--header\", this.isOneChild() ? \"one--child\" : \"\", this.isOneChild() ? \"hide--line\" : \"\", this.isNoChildren() ? \"no--children\" : \"\", this.showDragIcon() ? \"with--drag\" : \"hide--drag\", this.showConjs() && (!this.isOneChild() || this.showNot()) ? \"with--conjs\" : \"hide--conjs\")\n }, this.renderHeaderLeft(), this.renderHeaderCenter(), this.renderActions());\n }\n }, {\n key: \"renderChildrenWrapper\",\n value: function renderChildrenWrapper() {\n if (this.isDefaultCase()) return null;\n // body has 2 columns: condition & value\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"case_group--body\"\n }, this.renderCondition(), this.renderValue());\n }\n }, {\n key: \"renderHeaderLeft\",\n value: function renderHeaderLeft() {\n if (this.isDefaultCase()) {\n var defaultCaseLabel = this.props.config.settings.defaultCaseLabel;\n return defaultCaseLabel || \"\";\n }\n // default impl:\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"group--conjunctions\"\n }, this.renderConjs(), this.renderDrag());\n }\n }, {\n key: \"renderCondition\",\n value: function renderCondition() {\n if (this.isDefaultCase()) return null;\n return _get(_getPrototypeOf(CaseGroup.prototype), \"renderChildrenWrapper\", this).call(this);\n }\n }, {\n key: \"renderHeaderCenter\",\n value: function renderHeaderCenter() {\n if (this.isDefaultCase()) return this.renderValue();else return null;\n }\n }, {\n key: \"canAddGroup\",\n value: function canAddGroup() {\n if (this.isDefaultCase()) return false;\n return _get(_getPrototypeOf(CaseGroup.prototype), \"canAddGroup\", this).call(this);\n }\n }, {\n key: \"canAddRule\",\n value: function canAddRule() {\n if (this.isDefaultCase()) return false;\n return _get(_getPrototypeOf(CaseGroup.prototype), \"canAddRule\", this).call(this);\n }\n }, {\n key: \"renderValue\",\n value: function renderValue() {\n var _this$props = this.props,\n config = _this$props.config,\n isLocked = _this$props.isLocked,\n value = _this$props.value,\n setValue = _this$props.setValue,\n id = _this$props.id;\n var immutableValuesMode = config.settings.immutableValuesMode;\n var widget = /*#__PURE__*/React.createElement(Widget, {\n key: \"values\",\n isCaseValue: true,\n field: \"!case_value\",\n operator: null,\n value: value,\n valueSrc: \"value\",\n valueError: null,\n config: config,\n setValue: !immutableValuesMode ? setValue : dummyFn,\n setValueSrc: dummyFn,\n readonly: immutableValuesMode || isLocked,\n id: id,\n groupId: null\n });\n return /*#__PURE__*/React.createElement(Col, {\n className: \"case_group--value\"\n }, widget);\n }\n }, {\n key: \"renderActions\",\n value: function renderActions() {\n var _this$props2 = this.props,\n config = _this$props2.config,\n addGroup = _this$props2.addGroup,\n addRule = _this$props2.addRule,\n isLocked = _this$props2.isLocked,\n isTrueLocked = _this$props2.isTrueLocked,\n id = _this$props2.id;\n return /*#__PURE__*/React.createElement(GroupActions, {\n config: config,\n addGroup: addGroup,\n addRule: addRule,\n canAddRule: this.canAddRule(),\n canAddGroup: this.canAddGroup(),\n canDeleteGroup: this.canDeleteGroup(),\n removeSelf: this.removeSelf,\n setLock: this.setLock,\n isLocked: isLocked,\n isTrueLocked: isTrueLocked,\n id: id\n });\n }\n }, {\n key: \"isEmptyCurrentGroup\",\n value: function isEmptyCurrentGroup() {\n // used to confirm self-deletion\n var value = this.props.value;\n var oneValue = value && value.size ? value.get(0) : null;\n var hasValue = oneValue != null && (Array.isArray(oneValue) ? oneValue.length > 0 : true);\n return _get(_getPrototypeOf(CaseGroup.prototype), \"isEmptyCurrentGroup\", this).call(this) && !hasValue;\n }\n }]);\n return CaseGroup;\n}(BasicGroup);\nCaseGroup.propTypes = _objectSpread(_objectSpread({}, BasicGroup.propTypes), {}, {\n parentReordableNodesCnt: PropTypes.number,\n value: PropTypes.any,\n setValue: PropTypes.func\n});\nexport default GroupContainer(Draggable(\"group case_group\")(WithConfirmFn(CaseGroup)), \"case_group\");","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _excluded = [\"type\"];\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); }; }\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; } }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Rule from \"./Rule\";\nimport Group from \"./Group\";\nimport RuleGroup from \"./RuleGroup\";\nimport RuleGroupExt from \"./RuleGroupExt\";\nimport SwitchGroup from \"./SwitchGroup\";\nimport CaseGroup from \"./CaseGroup\";\nvar types = [\"rule\", \"group\", \"rule_group\", \"switch_group\", \"case_group\"];\nvar getProperties = function getProperties(props) {\n var _props$properties;\n var properties = ((_props$properties = props.properties) === null || _props$properties === void 0 ? void 0 : _props$properties.toObject()) || {};\n var result = _objectSpread({}, properties);\n if (props.isParentLocked) {\n result.isLocked = true;\n }\n if (properties.isLocked) {\n result.isTrueLocked = true;\n }\n return result;\n};\nvar typeMap = {\n rule: function rule(props) {\n return /*#__PURE__*/React.createElement(Rule, _extends({}, getProperties(props), {\n id: props.id,\n groupId: props.groupId,\n path: props.path,\n actions: props.actions,\n reordableNodesCnt: props.reordableNodesCnt,\n totalRulesCnt: props.totalRulesCnt,\n config: props.config,\n onDragStart: props.onDragStart,\n isDraggingTempo: props.isDraggingTempo,\n parentField: props.parentField,\n parentReordableNodesCnt: props.parentReordableNodesCnt\n }));\n },\n group: function group(props) {\n return /*#__PURE__*/React.createElement(Group, _extends({}, getProperties(props), {\n id: props.id,\n groupId: props.groupId,\n path: props.path,\n actions: props.actions,\n config: props.config,\n reordableNodesCnt: props.reordableNodesCnt,\n totalRulesCnt: props.totalRulesCnt,\n onDragStart: props.onDragStart,\n isDraggingTempo: props.isDraggingTempo,\n children1: props.children1,\n parentField: null,\n parentReordableNodesCnt: props.parentReordableNodesCnt\n }));\n },\n rule_group: function rule_group(props) {\n return /*#__PURE__*/React.createElement(RuleGroup, _extends({}, getProperties(props), {\n id: props.id,\n groupId: props.groupId,\n path: props.path,\n actions: props.actions,\n config: props.config,\n reordableNodesCnt: props.reordableNodesCnt,\n totalRulesCnt: props.totalRulesCnt,\n onDragStart: props.onDragStart,\n isDraggingTempo: props.isDraggingTempo,\n children1: props.children1,\n parentField: props.parentField,\n parentReordableNodesCnt: props.parentReordableNodesCnt\n }));\n },\n rule_group_ext: function rule_group_ext(props) {\n return /*#__PURE__*/React.createElement(RuleGroupExt, _extends({}, getProperties(props), {\n id: props.id,\n groupId: props.groupId,\n path: props.path,\n actions: props.actions,\n config: props.config,\n reordableNodesCnt: props.reordableNodesCnt,\n totalRulesCnt: props.totalRulesCnt,\n onDragStart: props.onDragStart,\n isDraggingTempo: props.isDraggingTempo,\n children1: props.children1,\n parentField: props.parentField,\n parentReordableNodesCnt: props.parentReordableNodesCnt\n }));\n },\n switch_group: function switch_group(props) {\n return /*#__PURE__*/React.createElement(SwitchGroup, _extends({}, getProperties(props), {\n id: props.id,\n groupId: props.groupId,\n path: props.path,\n actions: props.actions,\n config: props.config,\n reordableNodesCnt: props.reordableNodesCnt,\n totalRulesCnt: props.totalRulesCnt,\n onDragStart: props.onDragStart,\n isDraggingTempo: props.isDraggingTempo,\n children1: props.children1,\n parentField: null,\n parentReordableNodesCnt: props.parentReordableNodesCnt\n }));\n },\n case_group: function case_group(props) {\n return /*#__PURE__*/React.createElement(CaseGroup, _extends({}, getProperties(props), {\n id: props.id,\n groupId: props.groupId,\n path: props.path,\n actions: props.actions,\n config: props.config,\n reordableNodesCnt: props.reordableNodesCnt,\n totalRulesCnt: props.totalRulesCnt,\n onDragStart: props.onDragStart,\n isDraggingTempo: props.isDraggingTempo,\n children1: props.children1,\n parentField: null,\n parentReordableNodesCnt: props.parentReordableNodesCnt\n }));\n }\n};\nvar Item = /*#__PURE__*/function (_PureComponent) {\n _inherits(Item, _PureComponent);\n var _super = _createSuper(Item);\n function Item() {\n _classCallCheck(this, Item);\n return _super.apply(this, arguments);\n }\n _createClass(Item, [{\n key: \"render\",\n value: function render() {\n var _props$properties2;\n var _this$props = this.props,\n type = _this$props.type,\n props = _objectWithoutProperties(_this$props, _excluded);\n var mode = (_props$properties2 = props.properties) === null || _props$properties2 === void 0 ? void 0 : _props$properties2.get(\"mode\");\n var postfix = mode == \"array\" ? \"_ext\" : \"\";\n var renderItem = props.config.settings.renderItem;\n var Cmp = typeMap[type + postfix];\n if (renderItem) {\n return renderItem(_objectSpread(_objectSpread({}, props), {}, {\n type: type,\n itemComponent: Cmp\n }), props.config.ctx);\n }\n if (!Cmp) return null;\n return Cmp(props);\n }\n }]);\n return Item;\n}(PureComponent);\nItem.propTypes = {\n config: PropTypes.object.isRequired,\n id: PropTypes.string.isRequired,\n groupId: PropTypes.string,\n type: PropTypes.oneOf(types).isRequired,\n path: PropTypes.any.isRequired,\n //instanceOf(Immutable.List)\n properties: PropTypes.any.isRequired,\n //instanceOf(Immutable.Map)\n children1: PropTypes.any,\n //instanceOf(Immutable.OrderedMap)\n actions: PropTypes.object.isRequired,\n reordableNodesCnt: PropTypes.number,\n onDragStart: PropTypes.func,\n parentField: PropTypes.string,\n //from RuleGroup\n isDraggingTempo: PropTypes.bool,\n isParentLocked: PropTypes.bool\n};\nexport { Item };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Item } from \"./item/Item\";\nimport SortableContainer from \"./containers/SortableContainer\";\nimport { pureShouldComponentUpdate } from \"../utils/reactUtils\";\nvar _Utils$TreeUtils = Utils.TreeUtils,\n getTotalReordableNodesCountInTree = _Utils$TreeUtils.getTotalReordableNodesCountInTree,\n getTotalRulesCountInTree = _Utils$TreeUtils.getTotalRulesCountInTree;\nvar _Utils$DefaultUtils = Utils.DefaultUtils,\n createListFromArray = _Utils$DefaultUtils.createListFromArray,\n emptyProperies = _Utils$DefaultUtils.emptyProperies;\nvar Builder = /*#__PURE__*/function (_Component) {\n _inherits(Builder, _Component);\n var _super = _createSuper(Builder);\n function Builder(props) {\n var _this;\n _classCallCheck(this, Builder);\n _this = _super.call(this, props);\n _this.pureShouldComponentUpdate = pureShouldComponentUpdate(_assertThisInitialized(_this));\n _this._updPath(props);\n return _this;\n }\n _createClass(Builder, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n var prevProps = this.props;\n var should = this.pureShouldComponentUpdate(nextProps, nextState);\n if (should) {\n var chs = [];\n for (var k in nextProps) {\n var changed = nextProps[k] !== prevProps[k];\n if (changed && k != \"__isInternalValueChange\") {\n chs.push(k);\n }\n }\n if (!chs.length) should = false;\n //optimize render\n if (chs.length == 1 && chs[0] == \"tree\" && nextProps.__isInternalValueChange) should = false;\n }\n return should;\n }\n }, {\n key: \"_updPath\",\n value: function _updPath(props) {\n var id = props.tree.get(\"id\");\n this.path = createListFromArray([id]);\n }\n }, {\n key: \"render\",\n value: function render() {\n var tree = this.props.tree;\n var rootType = tree.get(\"type\");\n var isTernary = rootType == \"switch_group\";\n var reordableNodesCnt = isTernary ? null : getTotalReordableNodesCountInTree(tree);\n var totalRulesCnt = isTernary ? null : getTotalRulesCountInTree(tree);\n var id = tree.get(\"id\");\n return /*#__PURE__*/React.createElement(Item, {\n key: id,\n id: id,\n path: this.path,\n type: rootType,\n properties: tree.get(\"properties\") || emptyProperies(),\n config: this.props.config,\n actions: this.props.actions,\n children1: tree.get(\"children1\") || emptyProperies()\n //tree={tree}\n ,\n reordableNodesCnt: reordableNodesCnt,\n totalRulesCnt: totalRulesCnt,\n parentReordableNodesCnt: 0,\n onDragStart: this.props.onDragStart\n });\n }\n }]);\n return Builder;\n}(Component);\nBuilder.propTypes = {\n tree: PropTypes.any.isRequired,\n //instanceOf(Immutable.Map)\n config: PropTypes.object.isRequired,\n actions: PropTypes.object.isRequired,\n onDragStart: PropTypes.func\n};\nexport default SortableContainer(Builder);","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport PropTypes from \"prop-types\";\nimport { truncateString } from \"../../utils/stuff\";\nimport { useOnPropsChanged } from \"../../utils/reactUtils\";\nimport last from \"lodash/last\";\nimport keys from \"lodash/keys\";\nvar clone = Utils.clone;\nvar _Utils$ConfigUtils = Utils.ConfigUtils,\n getFieldConfig = _Utils$ConfigUtils.getFieldConfig,\n getFieldParts = _Utils$ConfigUtils.getFieldParts,\n getFieldPathParts = _Utils$ConfigUtils.getFieldPathParts;\nvar _Utils$RuleUtils = Utils.RuleUtils,\n getFieldPathLabels = _Utils$RuleUtils.getFieldPathLabels,\n getWidgetForFieldOp = _Utils$RuleUtils.getWidgetForFieldOp;\n\n//tip: this.props.value - right value, this.props.field - left value\nvar ValueField = /*#__PURE__*/function (_Component) {\n _inherits(ValueField, _Component);\n var _super = _createSuper(ValueField);\n function ValueField(props) {\n var _this;\n _classCallCheck(this, ValueField);\n _this = _super.call(this, props);\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.onPropsChanged(props);\n return _this;\n }\n _createClass(ValueField, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var prevProps = this.props;\n var keysForItems = [\"config\", \"field\", \"fieldSrc\", \"fieldType\", \"operator\", \"isFuncArg\", \"parentField\"];\n var keysForMeta = [\"config\", \"field\", \"fieldSrc\", \"fieldType\", \"operator\", \"value\", \"placeholder\", \"isFuncArg\", \"parentField\"];\n var needUpdateItems = !this.items || keysForItems.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n var needUpdateMeta = !this.meta || keysForMeta.map(function (k) {\n return nextProps[k] !== prevProps[k];\n }).filter(function (ch) {\n return ch;\n }).length > 0;\n if (needUpdateItems) {\n this.items = this.getItems(nextProps);\n }\n if (needUpdateMeta) {\n this.meta = this.getMeta(nextProps);\n }\n }\n }, {\n key: \"getItems\",\n value: function getItems(_ref) {\n var config = _ref.config,\n field = _ref.field,\n fieldType = _ref.fieldType,\n operator = _ref.operator,\n parentField = _ref.parentField,\n isFuncArg = _ref.isFuncArg,\n fieldDefinition = _ref.fieldDefinition;\n var canCompareFieldWithField = config.settings.canCompareFieldWithField;\n var fieldSeparator = config.settings.fieldSeparator;\n var parentFieldPath = getFieldParts(parentField, config);\n var parentFieldConfig = parentField ? getFieldConfig(config, parentField) : null;\n var sourceFields = parentField ? parentFieldConfig === null || parentFieldConfig === void 0 ? void 0 : parentFieldConfig.subfields : config.fields;\n var filteredFields = this.filterFields(config, sourceFields, field, parentField, parentFieldPath, operator, canCompareFieldWithField, isFuncArg, fieldDefinition, fieldType);\n var items = this.buildOptions(parentFieldPath, config, filteredFields, parentFieldPath);\n return items;\n }\n }, {\n key: \"getMeta\",\n value: function getMeta(_ref2) {\n var _leftFieldConfig$widg;\n var config = _ref2.config,\n field = _ref2.field,\n fieldType = _ref2.fieldType,\n operator = _ref2.operator,\n value = _ref2.value,\n customPlaceholder = _ref2.placeholder,\n isFuncArg = _ref2.isFuncArg,\n parentField = _ref2.parentField;\n var _config$settings = config.settings,\n fieldPlaceholder = _config$settings.fieldPlaceholder,\n fieldSeparatorDisplay = _config$settings.fieldSeparatorDisplay;\n var selectedKey = value;\n var isFieldSelected = !!value;\n var leftFieldConfig = field ? getFieldConfig(config, field) : {};\n var leftFieldWidgetField = leftFieldConfig === null || leftFieldConfig === void 0 || (_leftFieldConfig$widg = leftFieldConfig.widgets) === null || _leftFieldConfig$widg === void 0 ? void 0 : _leftFieldConfig$widg.field;\n var leftFieldWidgetFieldProps = (leftFieldWidgetField === null || leftFieldWidgetField === void 0 ? void 0 : leftFieldWidgetField.widgetProps) || {};\n var placeholder = isFieldSelected ? null : isFuncArg && customPlaceholder || leftFieldWidgetFieldProps.valuePlaceholder || fieldPlaceholder;\n var currField = isFieldSelected ? getFieldConfig(config, selectedKey) : null;\n var selectedOpts = currField || {};\n var selectedKeys = getFieldPathParts(selectedKey, config);\n var selectedPath = getFieldPathParts(selectedKey, config, true);\n var selectedLabel = this.getFieldLabel(currField, selectedKey, config);\n var partsLabels = getFieldPathLabels(selectedKey, config);\n var selectedFullLabel = partsLabels ? partsLabels.join(fieldSeparatorDisplay) : null;\n if (selectedFullLabel == selectedLabel || parentField) selectedFullLabel = null;\n var selectedAltLabel = selectedOpts.label2;\n return {\n placeholder: placeholder,\n selectedKey: selectedKey,\n selectedKeys: selectedKeys,\n selectedPath: selectedPath,\n selectedLabel: selectedLabel,\n selectedOpts: selectedOpts,\n selectedAltLabel: selectedAltLabel,\n selectedFullLabel: selectedFullLabel\n };\n }\n }, {\n key: \"filterFields\",\n value: function filterFields(config, fields, leftFieldFullkey, parentField, parentFieldPath, operator, canCompareFieldWithField, isFuncArg, fieldDefinition, fieldType) {\n fields = clone(fields);\n var fieldSeparator = config.settings.fieldSeparator;\n var leftFieldConfig = getFieldConfig(config, leftFieldFullkey);\n var _relyOnWidgetType = false; //TODO: remove this, see issue #758\n var widget = getWidgetForFieldOp(config, leftFieldFullkey, operator, \"value\");\n var widgetConfig = config.widgets[widget];\n var expectedType;\n if (isFuncArg) {\n expectedType = fieldDefinition === null || fieldDefinition === void 0 ? void 0 : fieldDefinition.type;\n } else if (_relyOnWidgetType && widgetConfig) {\n expectedType = widgetConfig.type;\n } else if (leftFieldConfig) {\n expectedType = leftFieldConfig.type;\n } else {\n // no field at LHS, but can use type from \"memory effect\"\n expectedType = fieldType;\n }\n function _filter(list, path) {\n for (var rightFieldKey in list) {\n var subfields = list[rightFieldKey].subfields;\n var subpath = (path ? path : []).concat(rightFieldKey);\n var rightFieldFullkey = subpath.join(fieldSeparator);\n var rightFieldConfig = getFieldConfig(config, rightFieldFullkey);\n if (!rightFieldConfig) {\n delete list[rightFieldKey];\n } else if (rightFieldConfig.type == \"!struct\" || rightFieldConfig.type == \"!group\") {\n if (_filter(subfields, subpath) == 0) delete list[rightFieldKey];\n } else {\n // tip: LHS field can be used as arg in RHS function\n var canUse = (!expectedType || rightFieldConfig.type == expectedType) && (isFuncArg ? true : rightFieldFullkey != leftFieldFullkey);\n var fn = canCompareFieldWithField || config.settings.canCompareFieldWithField;\n if (fn) canUse = canUse && fn(leftFieldFullkey, leftFieldConfig, rightFieldFullkey, rightFieldConfig, operator);\n if (!canUse) delete list[rightFieldKey];\n }\n }\n return keys(list).length;\n }\n _filter(fields, parentFieldPath || []);\n return fields;\n }\n }, {\n key: \"buildOptions\",\n value: function buildOptions(parentFieldPath, config, fields) {\n var _this2 = this;\n var path = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var optGroup = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n if (!fields) return null;\n var _config$settings2 = config.settings,\n fieldSeparator = _config$settings2.fieldSeparator,\n fieldSeparatorDisplay = _config$settings2.fieldSeparatorDisplay;\n var prefix = path !== null && path !== void 0 && path.length ? path.join(fieldSeparator) + fieldSeparator : \"\";\n return keys(fields).map(function (fieldKey) {\n var fullFieldPath = [].concat(_toConsumableArray(path !== null && path !== void 0 ? path : []), [fieldKey]);\n var field = fields[fieldKey];\n var label = _this2.getFieldLabel(field, fullFieldPath, config);\n var partsLabels = getFieldPathLabels(fullFieldPath, config);\n var fullLabel = partsLabels.join(fieldSeparatorDisplay);\n if (fullLabel == label || parentFieldPath) fullLabel = null;\n var altLabel = field.label2;\n var tooltip = field.tooltip;\n if (field.hideForCompare) return undefined;\n if (field.type == \"!struct\" || field.type == \"!group\") {\n return {\n key: fieldKey,\n path: prefix + fieldKey,\n label: label,\n fullLabel: fullLabel,\n altLabel: altLabel,\n tooltip: tooltip,\n items: _this2.buildOptions(parentFieldPath, config, field.subfields, fullFieldPath, {\n label: label,\n tooltip: tooltip\n })\n };\n } else {\n return {\n key: fieldKey,\n path: prefix + fieldKey,\n label: label,\n fullLabel: fullLabel,\n altLabel: altLabel,\n tooltip: tooltip,\n grouplabel: optGroup === null || optGroup === void 0 ? void 0 : optGroup.label,\n group: optGroup\n };\n }\n }).filter(function (o) {\n return !!o;\n });\n }\n }, {\n key: \"getFieldLabel\",\n value: function getFieldLabel(fieldOpts, fieldKey, config) {\n if (!fieldKey) return null;\n var maxLabelsLength = config.settings.maxLabelsLength;\n var fieldParts = getFieldParts(fieldKey, config);\n var label = (fieldOpts === null || fieldOpts === void 0 ? void 0 : fieldOpts.label) || last(fieldParts);\n label = truncateString(label, maxLabelsLength);\n return label;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n customProps = _this$props.customProps,\n setValue = _this$props.setValue,\n readonly = _this$props.readonly,\n id = _this$props.id,\n groupId = _this$props.groupId;\n var renderField = config.settings.renderField;\n var renderProps = _objectSpread({\n isValueField: true,\n config: config,\n customProps: customProps,\n setField: setValue,\n readonly: readonly,\n items: this.items,\n id: id,\n groupId: groupId\n }, this.meta);\n return renderField(renderProps, config.ctx);\n }\n }]);\n return ValueField;\n}(Component);\nValueField.propTypes = {\n id: PropTypes.string,\n groupId: PropTypes.string,\n setValue: PropTypes.func.isRequired,\n config: PropTypes.object.isRequired,\n field: PropTypes.any,\n fieldSrc: PropTypes.string,\n fieldType: PropTypes.string,\n value: PropTypes.string,\n operator: PropTypes.string,\n customProps: PropTypes.object,\n readonly: PropTypes.bool,\n parentField: PropTypes.string,\n fieldDefinition: PropTypes.object,\n isFuncArg: PropTypes.bool\n};\nexport { ValueField as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport React from \"react\";\nexport default (function (props) {\n var value = props.value,\n setValue = props.setValue,\n config = props.config,\n labelYes = props.labelYes,\n labelNo = props.labelNo,\n readonly = props.readonly,\n _props$customProps = props.customProps,\n customProps = _props$customProps === void 0 ? {} : _props$customProps;\n var customRadioYesProps = customProps.radioYes || {};\n var customRadioNoProps = customProps.radioNo || {};\n var onCheckboxChange = function onCheckboxChange(e) {\n return setValue(e.target.checked);\n };\n var onRadioChange = function onRadioChange(e) {\n return setValue(e.target.value == \"true\");\n };\n\n // return <>\n // <input key={id} type=\"checkbox\" id={id} checked={!!value} disabled={readonly} onChange={onCheckboxChange} />\n // <label style={{display: \"inline\"}} key={id+\"label\"} htmlFor={id}>{value ? labelYes : labelNo}</label>\n // </>;\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"radio\",\n value: true,\n checked: !!value,\n disabled: readonly,\n onChange: onRadioChange\n }, customRadioYesProps)), \" \", labelYes, /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"radio\",\n value: false,\n checked: !value,\n disabled: readonly,\n onChange: onRadioChange\n }, customRadioNoProps)), \" \", labelNo);\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport React from \"react\";\nexport default (function (props) {\n var value = props.value,\n setValue = props.setValue,\n config = props.config,\n readonly = props.readonly,\n placeholder = props.placeholder,\n maxLength = props.maxLength,\n customProps = props.customProps;\n var onChange = function onChange(e) {\n var val = e.target.value;\n if (val === \"\") val = undefined; // don't allow empty value\n setValue(val);\n };\n var textValue = value || \"\";\n return /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"text\",\n value: textValue,\n placeholder: placeholder,\n disabled: readonly,\n onChange: onChange,\n maxLength: maxLength\n }, customProps));\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport React from \"react\";\nexport default (function (props) {\n var value = props.value,\n setValue = props.setValue,\n config = props.config,\n readonly = props.readonly,\n placeholder = props.placeholder,\n maxLength = props.maxLength,\n maxRows = props.maxRows,\n fullWidth = props.fullWidth,\n customProps = props.customProps;\n var onChange = function onChange(e) {\n var val = e.target.value;\n if (val === \"\") val = undefined; // don't allow empty value\n setValue(val);\n };\n var textValue = value || \"\";\n return /*#__PURE__*/React.createElement(\"textarea\", _extends({\n value: textValue,\n placeholder: placeholder,\n disabled: readonly,\n onChange: onChange,\n maxLength: maxLength,\n style: {\n width: fullWidth ? \"100%\" : undefined\n }\n }, customProps));\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport React from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nvar moment = Utils.moment;\nexport default (function (props) {\n var value = props.value,\n setValue = props.setValue,\n config = props.config,\n valueFormat = props.valueFormat,\n readonly = props.readonly,\n customProps = props.customProps;\n var onChange = function onChange(e) {\n var value = e.target.value;\n if (value == \"\") value = undefined;\n setValue(value);\n };\n return /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"date\",\n value: value || \"\",\n disabled: readonly,\n onChange: onChange\n }, customProps));\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport React from \"react\";\nexport default (function (props) {\n var value = props.value,\n setValue = props.setValue,\n config = props.config,\n valueFormat = props.valueFormat,\n use12Hours = props.use12Hours,\n readonly = props.readonly,\n customProps = props.customProps;\n var onChange = function onChange(e) {\n var value = e.target.value;\n if (value == \"\") value = undefined;\n setValue(value);\n };\n return /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"time\",\n value: value || \"\",\n disabled: readonly,\n onChange: onChange\n }, customProps));\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport React from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nvar moment = Utils.moment;\nexport default (function (props) {\n var value = props.value,\n setValue = props.setValue,\n config = props.config,\n valueFormat = props.valueFormat,\n use12Hours = props.use12Hours,\n readonly = props.readonly,\n customProps = props.customProps;\n var onChange = function onChange(e) {\n var value = e.target.value;\n if (value == \"\") value = undefined;else value = moment(new Date(value)).format(valueFormat);\n setValue(value);\n };\n var dtValue = value;\n if (!value) dtValue = \"\";else dtValue = moment(value).format(\"YYYY-MM-DDTHH:mm\");\n return /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"datetime-local\",\n value: dtValue,\n disabled: readonly,\n onChange: onChange\n }, customProps));\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport React from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport omit from \"lodash/omit\";\nvar mapListValues = Utils.ListUtils.mapListValues;\nexport default (function (_ref) {\n var listValues = _ref.listValues,\n value = _ref.value,\n setValue = _ref.setValue,\n allowCustomValues = _ref.allowCustomValues,\n readonly = _ref.readonly,\n customProps = _ref.customProps;\n var renderOptions = function renderOptions() {\n return mapListValues(listValues, function (_ref2) {\n var title = _ref2.title,\n value = _ref2.value;\n return /*#__PURE__*/React.createElement(\"option\", {\n key: value,\n value: value\n }, title);\n });\n };\n var getMultiSelectValues = function getMultiSelectValues(multiselect) {\n var values = [];\n var options = multiselect.options;\n for (var i = 0; i < options.length; i++) {\n var opt = options[i];\n if (opt.selected) {\n values.push(opt.value);\n }\n }\n if (!values.length) values = undefined; //not allow []\n return values;\n };\n var onChange = function onChange(e) {\n return setValue(getMultiSelectValues(e.target));\n };\n return /*#__PURE__*/React.createElement(\"select\", _extends({\n multiple: true,\n onChange: onChange,\n value: value,\n disabled: readonly\n }, omit(customProps, [\"showSearch\", \"input\", \"showCheckboxes\"])), renderOptions());\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport React from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport omit from \"lodash/omit\";\nvar mapListValues = Utils.ListUtils.mapListValues;\nexport default (function (_ref) {\n var listValues = _ref.listValues,\n value = _ref.value,\n setValue = _ref.setValue,\n allowCustomValues = _ref.allowCustomValues,\n readonly = _ref.readonly,\n customProps = _ref.customProps;\n var renderOptions = function renderOptions() {\n return mapListValues(listValues, function (_ref2) {\n var title = _ref2.title,\n value = _ref2.value;\n return /*#__PURE__*/React.createElement(\"option\", {\n key: value,\n value: value\n }, title);\n });\n };\n var onChange = function onChange(e) {\n return setValue(e.target.value);\n };\n var hasValue = value != null;\n return /*#__PURE__*/React.createElement(\"select\", _extends({\n onChange: onChange,\n value: hasValue ? value : \"\",\n disabled: readonly\n }, omit(customProps, [\"showSearch\", \"input\"])), !hasValue && /*#__PURE__*/React.createElement(\"option\", {\n disabled: true,\n value: \"\"\n }), renderOptions());\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport React from \"react\";\nexport default (function (props) {\n var value = props.value,\n setValue = props.setValue,\n config = props.config,\n readonly = props.readonly,\n min = props.min,\n max = props.max,\n step = props.step,\n placeholder = props.placeholder,\n customProps = props.customProps;\n var onChange = function onChange(e) {\n var val = e.target.value;\n if (val === \"\" || val === null) val = undefined;else val = Number(val);\n setValue(val);\n };\n var numberValue = value == undefined ? \"\" : value;\n return /*#__PURE__*/React.createElement(\"input\", _extends({\n type: \"number\",\n value: numberValue,\n placeholder: placeholder,\n disabled: readonly,\n min: min,\n max: max,\n step: step,\n onChange: onChange\n }, customProps));\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport React from \"react\";\nexport default (function (props) {\n var value = props.value,\n setValue = props.setValue,\n config = props.config,\n readonly = props.readonly,\n min = props.min,\n max = props.max,\n step = props.step,\n placeholder = props.placeholder,\n _props$customProps = props.customProps,\n customProps = _props$customProps === void 0 ? {} : _props$customProps;\n var customInputProps = customProps.input || {};\n var customSliderProps = customProps.slider || customProps;\n var onChange = function onChange(e) {\n var val = e.target.value;\n if (val === \"\" || val === null) val = undefined;else val = Number(val);\n setValue(val);\n };\n var numberValue = value == undefined ? \"\" : value;\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n display: \"inline-flex\"\n }\n }, /*#__PURE__*/React.createElement(\"input\", _extends({\n key: \"number\",\n type: \"number\",\n value: numberValue,\n placeholder: placeholder,\n disabled: readonly,\n min: min,\n max: max,\n step: step,\n onChange: onChange\n }, customInputProps)), /*#__PURE__*/React.createElement(\"input\", _extends({\n key: \"range\",\n type: \"range\",\n value: numberValue,\n disabled: readonly,\n min: min,\n max: max,\n step: step,\n onChange: onChange\n }, customSliderProps)));\n});","import React from \"react\";\nexport default (function (_ref) {\n var items = _ref.items,\n setField = _ref.setField,\n selectedKey = _ref.selectedKey,\n readonly = _ref.readonly,\n errorText = _ref.errorText;\n var renderOptions = function renderOptions(fields) {\n return fields.map(function (field) {\n var items = field.items,\n path = field.path,\n label = field.label,\n disabled = field.disabled,\n matchesType = field.matchesType;\n if (items) {\n return /*#__PURE__*/React.createElement(\"optgroup\", {\n disabled: disabled,\n key: path,\n label: label\n }, renderOptions(items));\n } else {\n var style = matchesType ? {\n fontWeight: \"bold\"\n } : {};\n return /*#__PURE__*/React.createElement(\"option\", {\n disabled: disabled,\n key: path,\n value: path,\n style: style\n }, label);\n }\n });\n };\n var onChange = function onChange(e) {\n return setField(e.target.value);\n };\n var hasValue = selectedKey != null;\n return /*#__PURE__*/React.createElement(\"select\", {\n onChange: onChange,\n value: hasValue ? selectedKey : \"\",\n disabled: readonly,\n style: {\n color: errorText ? \"red\" : null\n }\n }, !hasValue && /*#__PURE__*/React.createElement(\"option\", {\n disabled: true,\n value: \"\"\n }), renderOptions(items));\n});","import React from \"react\";\nexport default (function (_ref) {\n var id = _ref.id,\n not = _ref.not,\n setNot = _ref.setNot,\n conjunctionOptions = _ref.conjunctionOptions,\n setConjunction = _ref.setConjunction,\n disabled = _ref.disabled,\n readonly = _ref.readonly,\n config = _ref.config,\n showNot = _ref.showNot,\n notLabel = _ref.notLabel;\n var conjsCount = Object.keys(conjunctionOptions).length;\n var lessThenTwo = disabled;\n var forceShowConj = config.settings.forceShowConj;\n var showConj = forceShowConj || conjsCount > 1 && !lessThenTwo;\n var renderOptions = function renderOptions() {\n return Object.keys(conjunctionOptions).map(function (key) {\n var _conjunctionOptions$k = conjunctionOptions[key],\n id = _conjunctionOptions$k.id,\n name = _conjunctionOptions$k.name,\n label = _conjunctionOptions$k.label,\n checked = _conjunctionOptions$k.checked;\n var postfix = setConjunction.isDummyFn ? \"__dummy\" : \"\";\n if ((readonly || disabled) && !checked) return null;\n return [/*#__PURE__*/React.createElement(\"input\", {\n key: id + postfix,\n type: \"radio\",\n id: id + postfix,\n name: name + postfix,\n checked: checked,\n disabled: readonly || disabled,\n value: key,\n onChange: onChange\n }), /*#__PURE__*/React.createElement(\"label\", {\n key: id + postfix + \"label\",\n htmlFor: id + postfix\n }, label)];\n });\n };\n var renderNot = function renderNot() {\n var postfix = \"not\";\n return [/*#__PURE__*/React.createElement(\"input\", {\n key: id + postfix,\n type: \"checkbox\",\n id: id + postfix,\n checked: not,\n disabled: readonly,\n onChange: onNotChange\n }), /*#__PURE__*/React.createElement(\"label\", {\n key: id + postfix + \"label\",\n htmlFor: id + postfix\n }, notLabel || \"NOT\")];\n };\n var onChange = function onChange(e) {\n return setConjunction(e.target.value);\n };\n var onNotChange = function onNotChange(e) {\n return setNot(e.target.checked);\n };\n return [showNot && renderNot(), showConj && renderOptions()];\n});","import React from \"react\";\nvar typeToLabel = {\n \"addRuleGroup\": \"+\",\n \"addRuleGroupExt\": \"+\",\n \"delGroup\": \"x\",\n \"delRuleGroup\": \"x\",\n \"delRule\": \"x\"\n};\nexport default (function (_ref) {\n var type = _ref.type,\n label = _ref.label,\n onClick = _ref.onClick,\n readonly = _ref.readonly;\n var btnLabel = label || typeToLabel[type];\n return /*#__PURE__*/React.createElement(\"button\", {\n onClick: onClick,\n type: \"button\",\n disabled: readonly\n }, btnLabel);\n});","import React from \"react\";\nimport { DragIcon } from \"../../../utils\";\nexport default (function (_ref) {\n var type = _ref.type;\n var typeToIcon = {};\n var icon = typeToIcon[type] || null;\n if (!icon && type === \"drag\") {\n icon = /*#__PURE__*/React.createElement(DragIcon, null);\n }\n return icon;\n});","import React from \"react\";\nexport default (function (_ref) {\n var children = _ref.children,\n config = _ref.config;\n return /*#__PURE__*/React.createElement(React.Fragment, null, children);\n});","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport React from \"react\";\nexport default (function (_ref) {\n var config = _ref.config,\n valueSources = _ref.valueSources,\n valueSrc = _ref.valueSrc,\n title = _ref.title,\n setValueSrc = _ref.setValueSrc,\n readonly = _ref.readonly;\n var renderOptions = function renderOptions(valueSources) {\n return valueSources.map(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n srcKey = _ref3[0],\n info = _ref3[1];\n return /*#__PURE__*/React.createElement(\"option\", {\n key: srcKey,\n value: srcKey\n }, info.label);\n });\n };\n var onChange = function onChange(e) {\n return setValueSrc(e.target.value);\n };\n return /*#__PURE__*/React.createElement(\"select\", {\n onChange: onChange,\n value: valueSrc || \"\",\n disabled: readonly\n }, renderOptions(valueSources));\n});","import React from \"react\";\nexport default (function (_ref) {\n var value = _ref.value,\n setValue = _ref.setValue,\n label = _ref.label,\n id = _ref.id,\n config = _ref.config,\n type = _ref.type;\n var onChange = function onChange(e) {\n return setValue(e.target.checked);\n };\n var postfix = type;\n return [/*#__PURE__*/React.createElement(\"input\", {\n key: id + postfix,\n type: \"checkbox\",\n id: id + postfix,\n checked: !!value,\n onChange: onChange\n }), /*#__PURE__*/React.createElement(\"label\", {\n key: id + postfix + \"label\",\n htmlFor: id + postfix\n }, label)];\n});","export default (function (_ref) {\n var onOk = _ref.onOk,\n okText = _ref.okText,\n cancelText = _ref.cancelText,\n title = _ref.title;\n if (confirm(title)) {\n onOk();\n }\n});","import React from \"react\";\n\n// value widgets\nexport { default as VanillaBooleanWidget } from \"./value/VanillaBoolean\";\nexport { default as VanillaTextWidget } from \"./value/VanillaText\";\nexport { default as VanillaTextAreaWidget } from \"./value/VanillaTextArea\";\nexport { default as VanillaDateWidget } from \"./value/VanillaDate\";\nexport { default as VanillaTimeWidget } from \"./value/VanillaTime\";\nexport { default as VanillaDateTimeWidget } from \"./value/VanillaDateTime\";\nexport { default as VanillaMultiSelectWidget } from \"./value/VanillaMultiSelect\";\nexport { default as VanillaSelectWidget } from \"./value/VanillaSelect\";\nexport { default as VanillaNumberWidget } from \"./value/VanillaNumber\";\nexport { default as VanillaSliderWidget } from \"./value/VanillaSlider\";\n\n// field select widget\nexport { default as VanillaFieldSelect } from \"./core/VanillaFieldSelect\";\n\n// core components\nexport { default as VanillaConjs } from \"./core/VanillaConjs\";\nexport { default as VanillaButton } from \"./core/VanillaButton\";\nexport { default as VanillaIcon } from \"./core/VanillaIcon\";\nexport { default as VanillaButtonGroup } from \"./core/VanillaButtonGroup\";\nexport { default as VanillaValueSources } from \"./core/VanillaValueSources\";\nexport { default as VanillaSwitch } from \"./core/VanillaSwitch\";\nexport { default as vanillaConfirm } from \"./core/vanillaConfirm\";\nexport var VanillaProvider = function VanillaProvider(_ref) {\n var config = _ref.config,\n children = _ref.children;\n return children;\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\nimport range from \"lodash/range\";\nvar Proximity = /*#__PURE__*/function (_PureComponent) {\n _inherits(Proximity, _PureComponent);\n var _super = _createSuper(Proximity);\n function Proximity() {\n var _this;\n _classCallCheck(this, Proximity);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.handleChange = function (value) {\n _this.props.setOption(\"proximity\", parseInt(value));\n };\n return _this;\n }\n _createClass(Proximity, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n defaults = _this$props.defaults,\n options = _this$props.options,\n config = _this$props.config,\n optionLabel = _this$props.optionLabel,\n optionPlaceholder = _this$props.optionPlaceholder,\n customProps = _this$props.customProps,\n minProximity = _this$props.minProximity,\n maxProximity = _this$props.maxProximity,\n optionTextBefore = _this$props.optionTextBefore,\n readonly = _this$props.readonly;\n var settings = config.settings,\n widgets = config.widgets,\n ctx = config.ctx;\n var defaultProximity = defaults ? defaults.proximity : undefined;\n var showLabels = settings.showLabels;\n var selectedProximity = options.get(\"proximity\", defaultProximity);\n var proxValues = range(minProximity, maxProximity + 1).map(function (item) {\n return {\n title: item,\n value: item\n };\n });\n var factory = widgets.select.factory;\n var Select = function Select(props) {\n return factory(props, ctx);\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"operator--PROXIMITY\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"operator--options\"\n }, showLabels && /*#__PURE__*/React.createElement(\"label\", {\n className: \"rule--label\"\n }, optionLabel), !showLabels && optionTextBefore && /*#__PURE__*/React.createElement(\"div\", {\n className: \"operator--options--sep\"\n }, /*#__PURE__*/React.createElement(\"span\", null, optionTextBefore)), /*#__PURE__*/React.createElement(Select, _extends({\n config: config,\n value: selectedProximity,\n listValues: proxValues,\n setValue: this.handleChange,\n readonly: readonly,\n placeholder: optionPlaceholder\n }, customProps))), /*#__PURE__*/React.createElement(\"div\", {\n className: \"operator--widgets\"\n }, this.props.children));\n }\n }]);\n return Proximity;\n}(PureComponent);\nProximity.propTypes = {\n config: PropTypes.object.isRequired,\n setOption: PropTypes.func.isRequired,\n options: PropTypes.any.isRequired,\n //instanceOf(Immutable.Map)\n minProximity: PropTypes.number,\n maxProximity: PropTypes.number,\n optionPlaceholder: PropTypes.string,\n optionTextBefore: PropTypes.string,\n optionLabel: PropTypes.string,\n customProps: PropTypes.object,\n readonly: PropTypes.bool\n //children\n};\nProximity.defaultProps = {\n customProps: {},\n minProximity: 2,\n maxProximity: 10,\n optionPlaceholder: \"Select words between\",\n optionLabel: \"Words between\",\n optionTextBefore: null\n};\nexport { Proximity as default };","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport React from \"react\";\nimport * as Widgets from \"../components/widgets\";\nimport * as CustomOperators from \"../components/operators\";\nimport { CoreConfig, Utils } from \"@react-awesome-query-builder/core\";\n\n//---------------------------- conjunctions\n\nvar conjunctions = _objectSpread({}, CoreConfig.conjunctions);\n\n//---------------------------- operators\n\nvar operators = _objectSpread(_objectSpread({}, CoreConfig.operators), {}, {\n proximity: _objectSpread(_objectSpread({}, CoreConfig.operators.proximity), {}, {\n options: _objectSpread(_objectSpread({}, CoreConfig.operators.proximity.options), {}, {\n factory: function factory(props, _ref) {\n var RCE = _ref.RCE,\n ProximityOperator = _ref.O.ProximityOperator;\n return RCE(ProximityOperator, props);\n }\n })\n })\n});\n\n//---------------------------- widgets\n\nvar widgets = {\n text: _objectSpread(_objectSpread({}, CoreConfig.widgets.text), {}, {\n factory: function factory(props, _ref2) {\n var RCE = _ref2.RCE,\n VanillaTextWidget = _ref2.W.VanillaTextWidget;\n return RCE(VanillaTextWidget, props);\n }\n }),\n textarea: _objectSpread(_objectSpread({}, CoreConfig.widgets.textarea), {}, {\n factory: function factory(props, _ref3) {\n var RCE = _ref3.RCE,\n VanillaTextAreaWidget = _ref3.W.VanillaTextAreaWidget;\n return RCE(VanillaTextAreaWidget, props);\n }\n }),\n number: _objectSpread(_objectSpread({}, CoreConfig.widgets.number), {}, {\n factory: function factory(props, _ref4) {\n var RCE = _ref4.RCE,\n VanillaNumberWidget = _ref4.W.VanillaNumberWidget;\n return RCE(VanillaNumberWidget, props);\n }\n }),\n slider: _objectSpread(_objectSpread({}, CoreConfig.widgets.slider), {}, {\n factory: function factory(props, _ref5) {\n var RCE = _ref5.RCE,\n VanillaSliderWidget = _ref5.W.VanillaSliderWidget;\n return RCE(VanillaSliderWidget, props);\n }\n }),\n select: _objectSpread(_objectSpread({}, CoreConfig.widgets.select), {}, {\n factory: function factory(props, _ref6) {\n var RCE = _ref6.RCE,\n VanillaSelectWidget = _ref6.W.VanillaSelectWidget;\n return RCE(VanillaSelectWidget, props);\n }\n }),\n multiselect: _objectSpread(_objectSpread({}, CoreConfig.widgets.multiselect), {}, {\n factory: function factory(props, _ref7) {\n var RCE = _ref7.RCE,\n VanillaMultiSelectWidget = _ref7.W.VanillaMultiSelectWidget;\n return RCE(VanillaMultiSelectWidget, props);\n }\n }),\n date: _objectSpread(_objectSpread({}, CoreConfig.widgets.date), {}, {\n factory: function factory(props, _ref8) {\n var RCE = _ref8.RCE,\n VanillaDateWidget = _ref8.W.VanillaDateWidget;\n return RCE(VanillaDateWidget, props);\n }\n }),\n time: _objectSpread(_objectSpread({}, CoreConfig.widgets.time), {}, {\n factory: function factory(props, _ref9) {\n var RCE = _ref9.RCE,\n VanillaTimeWidget = _ref9.W.VanillaTimeWidget;\n return RCE(VanillaTimeWidget, props);\n }\n }),\n datetime: _objectSpread(_objectSpread({}, CoreConfig.widgets.datetime), {}, {\n factory: function factory(props, _ref10) {\n var RCE = _ref10.RCE,\n VanillaDateTimeWidget = _ref10.W.VanillaDateTimeWidget;\n return RCE(VanillaDateTimeWidget, props);\n }\n }),\n \"boolean\": _objectSpread(_objectSpread({}, CoreConfig.widgets[\"boolean\"]), {}, {\n factory: function factory(props, _ref11) {\n var RCE = _ref11.RCE,\n VanillaBooleanWidget = _ref11.W.VanillaBooleanWidget;\n return RCE(VanillaBooleanWidget, props);\n }\n }),\n field: _objectSpread(_objectSpread({}, CoreConfig.widgets.field), {}, {\n factory: function factory(props, _ref12) {\n var RCE = _ref12.RCE,\n ValueFieldWidget = _ref12.W.ValueFieldWidget;\n return RCE(ValueFieldWidget, props);\n },\n customProps: {\n showSearch: true\n }\n }),\n func: _objectSpread(_objectSpread({}, CoreConfig.widgets.func), {}, {\n factory: function factory(props, _ref13) {\n var RCE = _ref13.RCE,\n FuncWidget = _ref13.W.FuncWidget;\n return RCE(FuncWidget, props);\n },\n customProps: {\n //showSearch: true\n }\n }),\n case_value: _objectSpread(_objectSpread({}, CoreConfig.widgets.case_value), {}, {\n // simple text value\n factory: function factory(props, _ref14) {\n var RCE = _ref14.RCE,\n VanillaTextWidget = _ref14.W.VanillaTextWidget;\n return RCE(VanillaTextWidget, props);\n }\n })\n};\n\n//---------------------------- types\n\nvar types = _objectSpread(_objectSpread({}, CoreConfig.types), {}, {\n select: _objectSpread(_objectSpread({}, CoreConfig.types.select), {}, {\n widgets: _objectSpread(_objectSpread({}, CoreConfig.types.select.widgets), {}, {\n select: _objectSpread(_objectSpread({}, CoreConfig.types.select.widgets.select), {}, {\n widgetProps: {\n customProps: {\n showSearch: true\n }\n }\n })\n })\n })\n});\n\n//---------------------------- settings\n\nvar settings = _objectSpread(_objectSpread({}, CoreConfig.settings), {}, {\n renderField: function renderField(props, _ref15) {\n var RCE = _ref15.RCE,\n VanillaFieldSelect = _ref15.W.VanillaFieldSelect;\n return RCE(VanillaFieldSelect, props);\n },\n renderOperator: function renderOperator(props, _ref16) {\n var RCE = _ref16.RCE,\n VanillaFieldSelect = _ref16.W.VanillaFieldSelect;\n return RCE(VanillaFieldSelect, props);\n },\n renderFunc: function renderFunc(props, _ref17) {\n var RCE = _ref17.RCE,\n VanillaFieldSelect = _ref17.W.VanillaFieldSelect;\n return RCE(VanillaFieldSelect, props);\n },\n renderConjs: function renderConjs(props, _ref18) {\n var RCE = _ref18.RCE,\n VanillaConjs = _ref18.W.VanillaConjs;\n return RCE(VanillaConjs, props);\n },\n renderSwitch: function renderSwitch(props, _ref19) {\n var RCE = _ref19.RCE,\n VanillaSwitch = _ref19.W.VanillaSwitch;\n return RCE(VanillaSwitch, props);\n },\n renderButton: function renderButton(props, _ref20) {\n var RCE = _ref20.RCE,\n VanillaButton = _ref20.W.VanillaButton;\n return RCE(VanillaButton, props);\n },\n renderIcon: function renderIcon(props, _ref21) {\n var RCE = _ref21.RCE,\n VanillaIcon = _ref21.W.VanillaIcon;\n return RCE(VanillaIcon, props);\n },\n renderButtonGroup: function renderButtonGroup(props, _ref22) {\n var RCE = _ref22.RCE,\n VanillaButtonGroup = _ref22.W.VanillaButtonGroup;\n return RCE(VanillaButtonGroup, props);\n },\n renderProvider: function renderProvider(props, _ref23) {\n var RCE = _ref23.RCE,\n VanillaProvider = _ref23.W.VanillaProvider;\n return RCE(VanillaProvider, props);\n },\n renderValueSources: function renderValueSources(props, _ref24) {\n var RCE = _ref24.RCE,\n VanillaValueSources = _ref24.W.VanillaValueSources;\n return RCE(VanillaValueSources, props);\n },\n renderFieldSources: function renderFieldSources(props, _ref25) {\n var RCE = _ref25.RCE,\n VanillaValueSources = _ref25.W.VanillaValueSources;\n return RCE(VanillaValueSources, props);\n },\n renderConfirm: function renderConfirm(props, _ref26) {\n var vanillaConfirm = _ref26.W.vanillaConfirm;\n return vanillaConfirm(props);\n },\n renderSwitchPrefix: \"Conditions\",\n customFieldSelectProps: {\n showSearch: true\n },\n defaultSliderWidth: \"200px\",\n defaultSelectWidth: \"200px\",\n defaultSearchWidth: \"100px\",\n defaultMaxRows: 5,\n renderSize: \"small\",\n maxLabelsLength: 100,\n showLock: false,\n showNot: true,\n forceShowConj: false,\n groupActionsPosition: \"topRight\" // oneOf [topLeft, topCenter, topRight, bottomLeft, bottomCenter, bottomRight]\n});\n\n//----------------------------\n\nvar ctx = _objectSpread(_objectSpread({}, CoreConfig.ctx), {}, {\n W: _objectSpread({}, Widgets),\n O: _objectSpread({}, CustomOperators),\n RCE: function RCE(C, P) {\n return /*#__PURE__*/React.createElement(C, P);\n }\n});\n\n//----------------------------\n\nvar config = {\n conjunctions: conjunctions,\n operators: operators,\n widgets: widgets,\n types: types,\n settings: settings,\n ctx: ctx\n};\nconfig = Utils.ConfigMixins.removeMixins(config, [\"rangeslider\", \"treeselect\", \"treemultiselect\"]);\nexport default config;","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport React from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport debounce from \"lodash/debounce\";\nvar _Utils$Autocomplete = Utils.Autocomplete,\n mergeListValues = _Utils$Autocomplete.mergeListValues,\n listValueToOption = _Utils$Autocomplete.listValueToOption,\n optionToListValue = _Utils$Autocomplete.optionToListValue,\n optionsToListValues = _Utils$Autocomplete.optionsToListValues,\n fixListValuesGroupOrder = _Utils$Autocomplete.fixListValuesGroupOrder;\nvar _Utils$ListUtils = Utils.ListUtils,\n mapListValues = _Utils$ListUtils.mapListValues,\n listValuesToArray = _Utils$ListUtils.listValuesToArray,\n getListValue = _Utils$ListUtils.getListValue,\n makeCustomListValue = _Utils$ListUtils.makeCustomListValue,\n searchListValue = _Utils$ListUtils.searchListValue,\n getItemInListValues = _Utils$ListUtils.getItemInListValues;\nfunction sleep(delay) {\n return new Promise(function (resolve) {\n setTimeout(resolve, delay);\n });\n}\nvar useListValuesAutocomplete = function useListValuesAutocomplete(_ref, _ref2) {\n var asyncFetch = _ref.asyncFetch,\n useLoadMore = _ref.useLoadMore,\n useAsyncSearch = _ref.useAsyncSearch,\n forceAsyncSearch = _ref.forceAsyncSearch,\n selectedAsyncListValues = _ref.asyncListValues,\n staticListValues = _ref.listValues,\n allowCustomValues = _ref.allowCustomValues,\n selectedValue = _ref.value,\n setValue = _ref.setValue,\n placeholder = _ref.placeholder,\n config = _ref.config;\n var debounceTimeout = _ref2.debounceTimeout,\n multiple = _ref2.multiple,\n uif = _ref2.uif;\n var knownSpecialValues = [\"LOAD_MORE\", \"LOADING_MORE\"];\n var loadMoreTitle = \"Load more...\";\n var loadingMoreTitle = \"Loading more...\";\n var aPlaceholder = forceAsyncSearch ? \"Type to search\" : placeholder;\n\n // state\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n open = _React$useState2[0],\n setOpen = _React$useState2[1];\n var _React$useState3 = React.useState(undefined),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n asyncFetchMeta = _React$useState4[0],\n setAsyncFetchMeta = _React$useState4[1];\n var _React$useState5 = React.useState(0),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n loadingCnt = _React$useState6[0],\n setLoadingCnt = _React$useState6[1];\n var _React$useState7 = React.useState(false),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n isLoadingMore = _React$useState8[0],\n setIsLoadingMore = _React$useState8[1];\n var _React$useState9 = React.useState(\"\"),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n inputValue = _React$useState10[0],\n setInputValue = _React$useState10[1];\n var _React$useState11 = React.useState(undefined),\n _React$useState12 = _slicedToArray(_React$useState11, 2),\n asyncListValues = _React$useState12[0],\n setAsyncListValues = _React$useState12[1];\n\n // ref\n var asyncFectchCnt = React.useRef(0);\n var componentIsMounted = React.useRef(0);\n var isSelectedLoadMore = React.useRef(false);\n\n // compute\n var nSelectedAsyncListValues = listValuesToArray(selectedAsyncListValues);\n var listValues = asyncFetch ? selectedAsyncListValues ? mergeListValues(asyncListValues, nSelectedAsyncListValues, true) : asyncListValues : staticListValues;\n var listValuesToDisplay = asyncFetch ? asyncListValues : staticListValues;\n if (allowCustomValues && inputValue && !searchListValue(inputValue, asyncListValues)) {\n listValuesToDisplay = mergeListValues(listValuesToDisplay, [makeCustomListValue(inputValue)], true);\n }\n if (asyncFetch && !asyncListValues && selectedAsyncListValues && !inputValue && !open && uif === \"antd\") {\n // for initial loading, to resolve \"a\" -> \"A\"\n listValuesToDisplay = listValues;\n }\n if (asyncFetch && !allowCustomValues && selectedAsyncListValues && uif === \"mui\") {\n // to prevent warning, when select A, search E -> A is missing in options\n // MUI: The value provided to Autocomplete is invalid.\n // None of the options match with `\"a\"`.\n // You can use the `isOptionEqualToValue` prop to customize the equality test.\n listValuesToDisplay = mergeListValues(listValuesToDisplay, nSelectedAsyncListValues, true, true);\n }\n //const isDirtyInitialListValues = asyncListValues == undefined && selectedAsyncListValues && selectedAsyncListValues.length && typeof selectedAsyncListValues[0] != \"object\";\n var isLoading = loadingCnt > 0;\n var canInitialLoad = open && asyncFetch && asyncListValues === undefined && (forceAsyncSearch ? inputValue : true);\n var isInitialLoading = canInitialLoad && isLoading;\n var canLoadMore = !isInitialLoading && listValues && listValues.length > 0 && asyncFetchMeta && asyncFetchMeta.hasMore && (asyncFetchMeta.filter || \"\") === inputValue;\n var canShowLoadMore = !isLoading && canLoadMore;\n var options = mapListValues(listValuesToDisplay, listValueToOption);\n var hasValue = selectedValue != null;\n var selectedListValue = !multiple && hasValue ? getListValue(selectedValue, listValues) : null;\n // const selectedListValues = multiple && hasValue ? selectedValue.map(v => getItemInListValues(listValues, v)) : [];\n\n // fetch\n var fetchListValues = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var filter,\n isLoadMore,\n offset,\n meta,\n newAsyncFetchCnt,\n res,\n isFetchCancelled,\n _ref4,\n values,\n hasMore,\n newMeta,\n nValues,\n assumeHasMore,\n newValues,\n realNewMeta,\n _args = arguments;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n filter = _args.length > 0 && _args[0] !== undefined ? _args[0] : null;\n isLoadMore = _args.length > 1 && _args[1] !== undefined ? _args[1] : false;\n // clear obsolete meta\n if (!isLoadMore && asyncFetchMeta) {\n setAsyncFetchMeta(undefined);\n }\n offset = isLoadMore && asyncListValues ? asyncListValues.length : 0;\n meta = isLoadMore && asyncFetchMeta || !useLoadMore && {\n pageSize: 0\n };\n newAsyncFetchCnt = ++asyncFectchCnt.current;\n _context.next = 8;\n return asyncFetch.call(config === null || config === void 0 ? void 0 : config.ctx, filter, offset, meta);\n case 8:\n res = _context.sent;\n isFetchCancelled = asyncFectchCnt.current != newAsyncFetchCnt;\n if (!(isFetchCancelled || !componentIsMounted.current)) {\n _context.next = 12;\n break;\n }\n return _context.abrupt(\"return\", null);\n case 12:\n _ref4 = res !== null && res !== void 0 && res.values ? res : {\n values: res\n }, values = _ref4.values, hasMore = _ref4.hasMore, newMeta = _ref4.meta;\n nValues = listValuesToArray(values);\n if (isLoadMore) {\n newValues = mergeListValues(asyncListValues, nValues, false);\n assumeHasMore = newValues.length > asyncListValues.length;\n } else {\n newValues = nValues;\n if (useLoadMore) {\n assumeHasMore = newValues.length > 0;\n }\n }\n\n // save new meta\n realNewMeta = hasMore != null || newMeta != null || assumeHasMore != null ? _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, assumeHasMore != null ? {\n hasMore: assumeHasMore\n } : {}), hasMore != null ? {\n hasMore: hasMore\n } : {}), newMeta != null ? newMeta : {}), {}, {\n filter: filter\n }) : undefined;\n if (realNewMeta) {\n setAsyncFetchMeta(realNewMeta);\n }\n return _context.abrupt(\"return\", newValues);\n case 18:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function fetchListValues() {\n return _ref3.apply(this, arguments);\n };\n }();\n var loadListValues = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {\n var filter,\n isLoadMore,\n list,\n _args2 = arguments;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n filter = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : null;\n isLoadMore = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : false;\n setLoadingCnt(function (x) {\n return x + 1;\n });\n setIsLoadingMore(isLoadMore);\n _context2.next = 6;\n return fetchListValues(filter, isLoadMore);\n case 6:\n list = _context2.sent;\n if (componentIsMounted.current) {\n _context2.next = 9;\n break;\n }\n return _context2.abrupt(\"return\");\n case 9:\n if (list != null) {\n // tip: null can be used for reject (eg, if user don't want to filter by input)\n setAsyncListValues(list);\n }\n setLoadingCnt(function (x) {\n return x - 1;\n });\n setIsLoadingMore(false);\n case 12:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return function loadListValues() {\n return _ref5.apply(this, arguments);\n };\n }();\n var loadListValuesDebounced = React.useCallback(debounce(loadListValues, debounceTimeout), []);\n React.useEffect(function () {\n componentIsMounted.current++;\n // Initial loading\n if (canInitialLoad && loadingCnt == 0 && asyncFectchCnt.current == 0) {\n _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return loadListValues();\n case 2:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }))();\n }\n // Unmount\n return function () {\n componentIsMounted.current--;\n };\n }, [canInitialLoad]);\n\n // Event handlers\n var onOpen = function onOpen() {\n setOpen(true);\n };\n var onClose = /*#__PURE__*/function () {\n var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(_e) {\n var isLoadMoreClick, resetValue;\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n isLoadMoreClick = isSelectedLoadMore.current;\n if (isLoadMoreClick) {\n isSelectedLoadMore.current = false;\n if (multiple) {\n // required for MUI\n setOpen(false);\n }\n } else {\n setOpen(false);\n }\n if (!(uif === \"mui\" && !isLoadMoreClick)) {\n _context4.next = 6;\n break;\n }\n // parity with Antd\n resetValue = \"\";\n _context4.next = 6;\n return onInputChange(null, resetValue, \"my-reset\");\n case 6:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return function onClose(_x) {\n return _ref7.apply(this, arguments);\n };\n }();\n var onDropdownVisibleChange = function onDropdownVisibleChange(open) {\n if (open) {\n onOpen();\n } else {\n onClose();\n }\n };\n var isSpecialValue = function isSpecialValue(option) {\n var specialValue = (option === null || option === void 0 ? void 0 : option.specialValue) || (option === null || option === void 0 ? void 0 : option.value);\n return knownSpecialValues.includes(specialValue);\n };\n var onChange = /*#__PURE__*/function () {\n var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(e, val, option) {\n var _option2;\n var isClearingAll, isClearingInput, _option$value, _option, specialValue, shouldIgnore, isAddingCustomOptionFromSearch, _optionsToListValues, _optionsToListValues2, newSelectedValues, newSelectedListValues, _optionToListValue, _optionToListValue2, v, lvs;\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n // todo: don't rely on 3rd param. check MUI 6\n isClearingAll = multiple && uif === \"mui\" && option === \"clear\"; // if user removes all chars in search, don't clear selected value\n isClearingInput = !multiple && uif === \"mui\" && option === \"clear\" && (e === null || e === void 0 ? void 0 : e.type) === \"change\";\n if (uif === \"mui\") {\n option = val;\n if (multiple) {\n val = option.map(function (o) {\n var _o$value;\n return (_o$value = o === null || o === void 0 ? void 0 : o.value) !== null && _o$value !== void 0 ? _o$value : o;\n });\n } else {\n val = (_option$value = (_option = option) === null || _option === void 0 ? void 0 : _option.value) !== null && _option$value !== void 0 ? _option$value : option;\n }\n }\n specialValue = multiple && Array.isArray(option) && option.map(function (opt) {\n return opt === null || opt === void 0 ? void 0 : opt.specialValue;\n }).find(function (v) {\n return !!v;\n }) || ((_option2 = option) === null || _option2 === void 0 ? void 0 : _option2.specialValue);\n if (multiple && val && !Array.isArray(val)) {\n val = [].concat(_toConsumableArray(selectedValue || []), [val]);\n option = null;\n }\n // if there are tags AND input and select is opened, clear input first\n shouldIgnore = isClearingAll && val.length === 0 && inputValue && open || isClearingInput;\n if (!shouldIgnore) {\n _context5.next = 8;\n break;\n }\n return _context5.abrupt(\"return\");\n case 8:\n isAddingCustomOptionFromSearch = multiple && val.length && val.length > (selectedValue || []).length && val[val.length - 1] == inputValue && !getListValue(inputValue, asyncListValues);\n if (!(specialValue == \"LOAD_MORE\")) {\n _context5.next = 16;\n break;\n }\n setInputValue(inputValue);\n isSelectedLoadMore.current = true;\n _context5.next = 14;\n return loadListValues(inputValue, true);\n case 14:\n _context5.next = 32;\n break;\n case 16:\n if (!(specialValue == \"LOADING_MORE\")) {\n _context5.next = 20;\n break;\n }\n isSelectedLoadMore.current = true;\n _context5.next = 32;\n break;\n case 20:\n if (!multiple) {\n _context5.next = 30;\n break;\n }\n _optionsToListValues = optionsToListValues(val, listValues, allowCustomValues), _optionsToListValues2 = _slicedToArray(_optionsToListValues, 2), newSelectedValues = _optionsToListValues2[0], newSelectedListValues = _optionsToListValues2[1];\n setValue(newSelectedValues, asyncFetch ? newSelectedListValues : undefined);\n if (!isAddingCustomOptionFromSearch) {\n _context5.next = 28;\n break;\n }\n _context5.next = 26;\n return sleep(0);\n case 26:\n _context5.next = 28;\n return onInputChange(null, \"\", \"my-reset\");\n case 28:\n _context5.next = 32;\n break;\n case 30:\n _optionToListValue = optionToListValue(val, listValues, allowCustomValues), _optionToListValue2 = _slicedToArray(_optionToListValue, 2), v = _optionToListValue2[0], lvs = _optionToListValue2[1];\n setValue(v, asyncFetch ? lvs : undefined);\n case 32:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5);\n }));\n return function onChange(_x2, _x3, _x4) {\n return _ref8.apply(this, arguments);\n };\n }();\n var onInputChange = /*#__PURE__*/function () {\n var _ref9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6(e, newInputValue, eventType) {\n var shouldIgnore, val, canSearchAsync;\n return _regeneratorRuntime.wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n // eventType=reset used by MUI on:\n // - (single) initial set, select option - e = null, newInputValue = selected (+1 call before with e != null)\n // - (single/multi, -ACV) blur - e != null, newInputValue = ''\n // - (multiple v5, -ACV) blur - e = null, newInputValue = '' # unwanted\n // - (multiple) select option - e != null, newInputValue = ''\n // - (multiple v4) delete tag while searching - e = null, newInputValue = '' # unwanted\n // - (multiple v4) select option while searching - e = null, newInputValue = '' # unwanted\n shouldIgnore = uif === \"mui\" && eventType === \"reset\";\n val = newInputValue;\n if (!(val === loadMoreTitle || val === loadingMoreTitle || shouldIgnore)) {\n _context6.next = 4;\n break;\n }\n return _context6.abrupt(\"return\");\n case 4:\n if (!(newInputValue != inputValue)) {\n _context6.next = 13;\n break;\n }\n setInputValue(val);\n canSearchAsync = useAsyncSearch && (forceAsyncSearch ? !!val : true);\n if (!canSearchAsync) {\n _context6.next = 12;\n break;\n }\n _context6.next = 10;\n return loadListValuesDebounced(val);\n case 10:\n _context6.next = 13;\n break;\n case 12:\n if (useAsyncSearch && forceAsyncSearch) {\n setAsyncListValues([]);\n }\n case 13:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6);\n }));\n return function onInputChange(_x5, _x6, _x7) {\n return _ref9.apply(this, arguments);\n };\n }();\n\n // Options\n var extendOptions = function extendOptions(options) {\n var filtered = _toConsumableArray(options);\n if (useLoadMore) {\n if (canShowLoadMore) {\n filtered.push({\n specialValue: \"LOAD_MORE\",\n title: loadMoreTitle\n });\n } else if (isLoadingMore) {\n filtered.push({\n specialValue: \"LOADING_MORE\",\n title: loadingMoreTitle,\n disabled: true\n });\n }\n }\n return filtered;\n };\n var getOptionSelected = function getOptionSelected(option, valueOrOption) {\n if (valueOrOption == null) return null;\n var selectedValue = valueOrOption.value != undefined ? valueOrOption.value : valueOrOption;\n return option.value === selectedValue;\n };\n var getOptionDisabled = function getOptionDisabled(valueOrOption) {\n return valueOrOption && valueOrOption.disabled;\n };\n var getOptionIsCustom = function getOptionIsCustom(valueOrOption) {\n var _valueOrOption$value;\n if (valueOrOption !== null && valueOrOption !== void 0 && valueOrOption.isCustom) return true;\n var val = (_valueOrOption$value = valueOrOption === null || valueOrOption === void 0 ? void 0 : valueOrOption.value) !== null && _valueOrOption$value !== void 0 ? _valueOrOption$value : valueOrOption;\n var lv = getListValue(val, listValues);\n return (lv === null || lv === void 0 ? void 0 : lv.isCustom) || false;\n };\n var getOptionLabel = function getOptionLabel(valueOrOption) {\n if (valueOrOption == null) return null;\n var option = valueOrOption.value != undefined ? valueOrOption : listValueToOption(getListValue(valueOrOption, listValues));\n if (!option && valueOrOption.specialValue) {\n // special last 'Load more...' item\n return valueOrOption.title;\n }\n if (!option && allowCustomValues) {\n // there is just string value, it's not item from list\n return valueOrOption;\n }\n if (!option) {\n // weird\n return valueOrOption;\n }\n return option.title || option.label || option.value; // fallback to value\n };\n\n var fixedOptions = uif === \"mui\" ? fixListValuesGroupOrder(options) : options;\n return {\n options: fixedOptions,\n listValues: listValues,\n hasValue: hasValue,\n selectedListValue: selectedListValue,\n open: open,\n onOpen: onOpen,\n onClose: onClose,\n onDropdownVisibleChange: onDropdownVisibleChange,\n onChange: onChange,\n inputValue: inputValue,\n onInputChange: onInputChange,\n canShowLoadMore: canShowLoadMore,\n isInitialLoading: isInitialLoading,\n isLoading: isLoading,\n isLoadingMore: isLoadingMore,\n isSpecialValue: isSpecialValue,\n extendOptions: extendOptions,\n getOptionSelected: getOptionSelected,\n getOptionDisabled: getOptionDisabled,\n getOptionIsCustom: getOptionIsCustom,\n getOptionLabel: getOptionLabel,\n aPlaceholder: aPlaceholder\n };\n};\nexport default useListValuesAutocomplete;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport { Utils } from \"@react-awesome-query-builder/core\";\nimport * as ReactUtils from \"./reactUtils\";\nimport { DragIcon } from \"../components/utils\";\nexport default _objectSpread(_objectSpread({}, Utils), {}, {\n ReactUtils: ReactUtils,\n DragIcon: DragIcon\n});","import momentGenerateConfig from \"rc-picker/lib/generate/moment\";\nimport generatePicker from \"antd/es/date-picker/generatePicker\";\nvar DatePicker = generatePicker(momentGenerateConfig);\nexport default DatePicker;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport { FormItemInputContext } from '../form/context';\nimport { Button, Group } from '../radio';\nimport Select from '../select';\nvar YearSelectOffset = 10;\nvar YearSelectTotal = 20;\nfunction YearSelect(props) {\n var fullscreen = props.fullscreen,\n validRange = props.validRange,\n generateConfig = props.generateConfig,\n locale = props.locale,\n prefixCls = props.prefixCls,\n value = props.value,\n _onChange = props.onChange,\n divRef = props.divRef;\n var year = generateConfig.getYear(value || generateConfig.getNow());\n var start = year - YearSelectOffset;\n var end = start + YearSelectTotal;\n if (validRange) {\n start = generateConfig.getYear(validRange[0]);\n end = generateConfig.getYear(validRange[1]) + 1;\n }\n var suffix = locale && locale.year === '年' ? '年' : '';\n var options = [];\n for (var index = start; index < end; index++) {\n options.push({\n label: \"\".concat(index).concat(suffix),\n value: index\n });\n }\n return /*#__PURE__*/React.createElement(Select, {\n size: fullscreen ? undefined : 'small',\n options: options,\n value: year,\n className: \"\".concat(prefixCls, \"-year-select\"),\n onChange: function onChange(numYear) {\n var newDate = generateConfig.setYear(value, numYear);\n if (validRange) {\n var _validRange = _slicedToArray(validRange, 2),\n startDate = _validRange[0],\n endDate = _validRange[1];\n var newYear = generateConfig.getYear(newDate);\n var newMonth = generateConfig.getMonth(newDate);\n if (newYear === generateConfig.getYear(endDate) && newMonth > generateConfig.getMonth(endDate)) {\n newDate = generateConfig.setMonth(newDate, generateConfig.getMonth(endDate));\n }\n if (newYear === generateConfig.getYear(startDate) && newMonth < generateConfig.getMonth(startDate)) {\n newDate = generateConfig.setMonth(newDate, generateConfig.getMonth(startDate));\n }\n }\n _onChange(newDate);\n },\n getPopupContainer: function getPopupContainer() {\n return divRef.current;\n }\n });\n}\nfunction MonthSelect(props) {\n var prefixCls = props.prefixCls,\n fullscreen = props.fullscreen,\n validRange = props.validRange,\n value = props.value,\n generateConfig = props.generateConfig,\n locale = props.locale,\n _onChange2 = props.onChange,\n divRef = props.divRef;\n var month = generateConfig.getMonth(value || generateConfig.getNow());\n var start = 0;\n var end = 11;\n if (validRange) {\n var _validRange2 = _slicedToArray(validRange, 2),\n rangeStart = _validRange2[0],\n rangeEnd = _validRange2[1];\n var currentYear = generateConfig.getYear(value);\n if (generateConfig.getYear(rangeEnd) === currentYear) {\n end = generateConfig.getMonth(rangeEnd);\n }\n if (generateConfig.getYear(rangeStart) === currentYear) {\n start = generateConfig.getMonth(rangeStart);\n }\n }\n var months = locale.shortMonths || generateConfig.locale.getShortMonths(locale.locale);\n var options = [];\n for (var index = start; index <= end; index += 1) {\n options.push({\n label: months[index],\n value: index\n });\n }\n return /*#__PURE__*/React.createElement(Select, {\n size: fullscreen ? undefined : 'small',\n className: \"\".concat(prefixCls, \"-month-select\"),\n value: month,\n options: options,\n onChange: function onChange(newMonth) {\n _onChange2(generateConfig.setMonth(value, newMonth));\n },\n getPopupContainer: function getPopupContainer() {\n return divRef.current;\n }\n });\n}\nfunction ModeSwitch(props) {\n var prefixCls = props.prefixCls,\n locale = props.locale,\n mode = props.mode,\n fullscreen = props.fullscreen,\n onModeChange = props.onModeChange;\n return /*#__PURE__*/React.createElement(Group, {\n onChange: function onChange(_ref) {\n var value = _ref.target.value;\n onModeChange(value);\n },\n value: mode,\n size: fullscreen ? undefined : 'small',\n className: \"\".concat(prefixCls, \"-mode-switch\")\n }, /*#__PURE__*/React.createElement(Button, {\n value: \"month\"\n }, locale.month), /*#__PURE__*/React.createElement(Button, {\n value: \"year\"\n }, locale.year));\n}\nfunction CalendarHeader(props) {\n var prefixCls = props.prefixCls,\n fullscreen = props.fullscreen,\n mode = props.mode,\n onChange = props.onChange,\n onModeChange = props.onModeChange;\n var divRef = React.useRef(null);\n var formItemInputContext = useContext(FormItemInputContext);\n var mergedFormItemInputContext = useMemo(function () {\n return _extends(_extends({}, formItemInputContext), {\n isFormItemInput: false\n });\n }, [formItemInputContext]);\n var sharedProps = _extends(_extends({}, props), {\n onChange: onChange,\n fullscreen: fullscreen,\n divRef: divRef\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-header\"),\n ref: divRef\n }, /*#__PURE__*/React.createElement(FormItemInputContext.Provider, {\n value: mergedFormItemInputContext\n }, /*#__PURE__*/React.createElement(YearSelect, _extends({}, sharedProps)), mode === 'month' && /*#__PURE__*/React.createElement(MonthSelect, _extends({}, sharedProps))), /*#__PURE__*/React.createElement(ModeSwitch, _extends({}, sharedProps, {\n onModeChange: onModeChange\n })));\n}\nexport default CalendarHeader;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport padStart from 'lodash/padStart';\nimport { PickerPanel as RCPickerPanel } from 'rc-picker';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport CalendarHeader from './Header';\nimport enUS from './locale/en_US';\nfunction generateCalendar(generateConfig) {\n function isSameYear(date1, date2) {\n return date1 && date2 && generateConfig.getYear(date1) === generateConfig.getYear(date2);\n }\n function isSameMonth(date1, date2) {\n return isSameYear(date1, date2) && generateConfig.getMonth(date1) === generateConfig.getMonth(date2);\n }\n function isSameDate(date1, date2) {\n return isSameMonth(date1, date2) && generateConfig.getDate(date1) === generateConfig.getDate(date2);\n }\n var Calendar = function Calendar(props) {\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n dateFullCellRender = props.dateFullCellRender,\n dateCellRender = props.dateCellRender,\n monthFullCellRender = props.monthFullCellRender,\n monthCellRender = props.monthCellRender,\n headerRender = props.headerRender,\n value = props.value,\n defaultValue = props.defaultValue,\n disabledDate = props.disabledDate,\n mode = props.mode,\n validRange = props.validRange,\n _props$fullscreen = props.fullscreen,\n fullscreen = _props$fullscreen === void 0 ? true : _props$fullscreen,\n onChange = props.onChange,\n onPanelChange = props.onPanelChange,\n onSelect = props.onSelect;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var prefixCls = getPrefixCls('picker', customizePrefixCls);\n var calendarPrefixCls = \"\".concat(prefixCls, \"-calendar\");\n var today = generateConfig.getNow();\n // ====================== State =======================\n // Value\n var _useMergedState = useMergedState(function () {\n return value || generateConfig.getNow();\n }, {\n defaultValue: defaultValue,\n value: value\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedValue = _useMergedState2[0],\n setMergedValue = _useMergedState2[1];\n // Mode\n var _useMergedState3 = useMergedState('month', {\n value: mode\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n mergedMode = _useMergedState4[0],\n setMergedMode = _useMergedState4[1];\n var panelMode = React.useMemo(function () {\n return mergedMode === 'year' ? 'month' : 'date';\n }, [mergedMode]);\n // Disabled Date\n var mergedDisabledDate = React.useCallback(function (date) {\n var notInRange = validRange ? generateConfig.isAfter(validRange[0], date) || generateConfig.isAfter(date, validRange[1]) : false;\n return notInRange || !!(disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date));\n }, [disabledDate, validRange]);\n // ====================== Events ======================\n var triggerPanelChange = function triggerPanelChange(date, newMode) {\n onPanelChange === null || onPanelChange === void 0 ? void 0 : onPanelChange(date, newMode);\n };\n var triggerChange = function triggerChange(date) {\n setMergedValue(date);\n if (!isSameDate(date, mergedValue)) {\n // Trigger when month panel switch month\n if (panelMode === 'date' && !isSameMonth(date, mergedValue) || panelMode === 'month' && !isSameYear(date, mergedValue)) {\n triggerPanelChange(date, mergedMode);\n }\n onChange === null || onChange === void 0 ? void 0 : onChange(date);\n }\n };\n var triggerModeChange = function triggerModeChange(newMode) {\n setMergedMode(newMode);\n triggerPanelChange(mergedValue, newMode);\n };\n var onInternalSelect = function onInternalSelect(date) {\n triggerChange(date);\n onSelect === null || onSelect === void 0 ? void 0 : onSelect(date);\n };\n // ====================== Locale ======================\n var getDefaultLocale = function getDefaultLocale() {\n var locale = props.locale;\n var result = _extends(_extends({}, enUS), locale);\n result.lang = _extends(_extends({}, result.lang), (locale || {}).lang);\n return result;\n };\n // ====================== Render ======================\n var dateRender = React.useCallback(function (date) {\n if (dateFullCellRender) {\n return dateFullCellRender(date);\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-cell-inner\"), \"\".concat(calendarPrefixCls, \"-date\"), _defineProperty({}, \"\".concat(calendarPrefixCls, \"-date-today\"), isSameDate(today, date)))\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(calendarPrefixCls, \"-date-value\")\n }, padStart(String(generateConfig.getDate(date)), 2, '0')), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(calendarPrefixCls, \"-date-content\")\n }, dateCellRender && dateCellRender(date)));\n }, [dateFullCellRender, dateCellRender]);\n var monthRender = React.useCallback(function (date, locale) {\n if (monthFullCellRender) {\n return monthFullCellRender(date);\n }\n var months = locale.shortMonths || generateConfig.locale.getShortMonths(locale.locale);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-cell-inner\"), \"\".concat(calendarPrefixCls, \"-date\"), _defineProperty({}, \"\".concat(calendarPrefixCls, \"-date-today\"), isSameMonth(today, date)))\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(calendarPrefixCls, \"-date-value\")\n }, months[generateConfig.getMonth(date)]), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(calendarPrefixCls, \"-date-content\")\n }, monthCellRender && monthCellRender(date)));\n }, [monthFullCellRender, monthCellRender]);\n return /*#__PURE__*/React.createElement(LocaleReceiver, {\n componentName: \"Calendar\",\n defaultLocale: getDefaultLocale\n }, function (contextLocale) {\n var _classNames3;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(calendarPrefixCls, (_classNames3 = {}, _defineProperty(_classNames3, \"\".concat(calendarPrefixCls, \"-full\"), fullscreen), _defineProperty(_classNames3, \"\".concat(calendarPrefixCls, \"-mini\"), !fullscreen), _defineProperty(_classNames3, \"\".concat(calendarPrefixCls, \"-rtl\"), direction === 'rtl'), _classNames3), className),\n style: style\n }, headerRender ? headerRender({\n value: mergedValue,\n type: mergedMode,\n onChange: onInternalSelect,\n onTypeChange: triggerModeChange\n }) : /*#__PURE__*/React.createElement(CalendarHeader, {\n prefixCls: calendarPrefixCls,\n value: mergedValue,\n generateConfig: generateConfig,\n mode: mergedMode,\n fullscreen: fullscreen,\n locale: contextLocale.lang,\n validRange: validRange,\n onChange: onInternalSelect,\n onModeChange: triggerModeChange\n }), /*#__PURE__*/React.createElement(RCPickerPanel, {\n value: mergedValue,\n prefixCls: prefixCls,\n locale: contextLocale.lang,\n generateConfig: generateConfig,\n dateRender: dateRender,\n monthCellRender: function monthCellRender(date) {\n return monthRender(date, contextLocale.lang);\n },\n onSelect: onInternalSelect,\n mode: panelMode,\n picker: panelMode,\n disabledDate: mergedDisabledDate,\n hideHeader: true\n }));\n });\n };\n return Calendar;\n}\nexport default generateCalendar;","import momentGenerateConfig from \"rc-picker/lib/generate/moment\";\nimport generateCalendar from \"antd/es/calendar/generateCalendar\";\nvar Calendar = generateCalendar(momentGenerateConfig);\nexport default Calendar;","import _extends from \"@babel/runtime/helpers/extends\";\nimport * as React from \"react\";\nimport DatePicker from \"./DatePicker\";\nvar TimePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(DatePicker, _extends({}, props, {\n picker: \"time\",\n mode: undefined,\n ref: ref\n }));\n});\nTimePicker.displayName = \"TimePicker\";\nexport default TimePicker;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nimport { Utils } from \"@react-awesome-query-builder/ui\";\nimport PropTypes from \"prop-types\";\nimport { DatePicker } from \"../moment\";\nvar RangePicker = DatePicker.RangePicker;\nvar moment = Utils.moment;\nvar DateWidget = /*#__PURE__*/function (_PureComponent) {\n _inherits(DateWidget, _PureComponent);\n var _super = _createSuper(DateWidget);\n function DateWidget(props) {\n var _this;\n _classCallCheck(this, DateWidget);\n _this = _super.call(this, props);\n _this.isValidSingleValue = function (value) {\n var valueFormat = _this.props.valueFormat;\n var v = value ? moment(value, valueFormat) : null;\n return !v || v && v.isValid();\n };\n _this.isValidValue = function (value) {\n var isSpecialRange = _this.props.isSpecialRange;\n if (isSpecialRange) return value ? value.map(function (el) {\n return _this.isValidSingleValue(el);\n }).reduce(function (res, item) {\n return res && item;\n }, true) : true;else return _this.isValidSingleValue(value);\n };\n _this.getMomentSingleValue = function (value) {\n var valueFormat = _this.props.valueFormat;\n var v = value ? moment(value, valueFormat) : null;\n if (v && !v.isValid()) v = null;\n return v;\n };\n _this.getMomentValue = function (value) {\n var isSpecialRange = _this.props.isSpecialRange;\n if (isSpecialRange) return value ? value.map(function (el) {\n return _this.getMomentSingleValue(el);\n }) : [null, null];else return _this.getMomentSingleValue(value);\n };\n _this.formatSingleValue = function (value) {\n var valueFormat = _this.props.valueFormat;\n return value && value.isValid() ? value.format(valueFormat) : undefined;\n };\n _this.formatValue = function (value) {\n var isSpecialRange = _this.props.isSpecialRange;\n if (isSpecialRange) return value ? value.map(function (el) {\n return _this.formatSingleValue(el);\n }) : [undefined, undefined];else return _this.formatSingleValue(value);\n };\n _this.handleChange = function (value) {\n var setValue = _this.props.setValue;\n if (_this.isValidValue(value)) {\n setValue(_this.formatValue(value));\n }\n };\n var _value = props.value,\n _setValue = props.setValue;\n if (!_this.isValidValue(_value)) {\n _setValue(_this.formatValue(_this.getMomentValue(_value)));\n }\n return _this;\n }\n _createClass(DateWidget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n placeholder = _this$props.placeholder,\n placeholders = _this$props.placeholders,\n customProps = _this$props.customProps,\n value = _this$props.value,\n dateFormat = _this$props.dateFormat,\n config = _this$props.config,\n readonly = _this$props.readonly,\n isSpecialRange = _this$props.isSpecialRange;\n var renderSize = config.settings.renderSize;\n var dateValue = this.getMomentValue(value);\n if (isSpecialRange) {\n return /*#__PURE__*/React.createElement(RangePicker, _extends({\n disabled: readonly,\n key: \"widget-date\",\n placeholder: placeholders,\n size: renderSize,\n format: dateFormat,\n value: dateValue,\n onChange: this.handleChange\n }, customProps));\n } else {\n return /*#__PURE__*/React.createElement(DatePicker, _extends({\n disabled: readonly,\n key: \"widget-date\",\n placeholder: placeholder,\n size: renderSize,\n format: dateFormat,\n value: dateValue,\n onChange: this.handleChange\n }, customProps));\n }\n }\n }]);\n return DateWidget;\n}(PureComponent);\nDateWidget.propTypes = {\n setValue: PropTypes.func.isRequired,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n //in valueFormat\n field: PropTypes.any,\n config: PropTypes.object.isRequired,\n placeholder: PropTypes.string,\n placeholders: PropTypes.arrayOf(PropTypes.string),\n customProps: PropTypes.object,\n readonly: PropTypes.bool,\n // from fieldSettings:\n dateFormat: PropTypes.string,\n valueFormat: PropTypes.string\n};\nDateWidget.defaultProps = {\n dateFormat: \"YYYY-MM-DD\",\n valueFormat: \"YYYY-MM-DD\"\n};\nexport { DateWidget as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { DatePicker } from \"../moment\";\nimport { Utils } from \"@react-awesome-query-builder/ui\";\nvar moment = Utils.moment;\nvar DateTimeWidget = /*#__PURE__*/function (_PureComponent) {\n _inherits(DateTimeWidget, _PureComponent);\n var _super = _createSuper(DateTimeWidget);\n function DateTimeWidget(props) {\n var _this;\n _classCallCheck(this, DateTimeWidget);\n _this = _super.call(this, props);\n _this.handleChange = function (aValue) {\n var _this$props = _this.props,\n setValue = _this$props.setValue,\n valueFormat = _this$props.valueFormat;\n var value = aValue && aValue.isValid() ? aValue.format(valueFormat) : undefined;\n if (value || aValue === null) setValue(value);\n };\n var _valueFormat = props.valueFormat,\n _value = props.value,\n _setValue = props.setValue;\n var mValue = _value ? moment(_value, _valueFormat) : null;\n if (mValue && !mValue.isValid()) {\n _setValue(null);\n }\n return _this;\n }\n _createClass(DateTimeWidget, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n placeholder = _this$props2.placeholder,\n customProps = _this$props2.customProps,\n value = _this$props2.value,\n valueFormat = _this$props2.valueFormat,\n dateFormat = _this$props2.dateFormat,\n timeFormat = _this$props2.timeFormat,\n use12Hours = _this$props2.use12Hours,\n config = _this$props2.config,\n readonly = _this$props2.readonly;\n var renderSize = config.settings.renderSize;\n var dateValue = value ? moment(value, valueFormat) : null;\n var dateTimeFrmat = dateFormat + \" \" + timeFormat;\n return /*#__PURE__*/React.createElement(DatePicker, _extends({\n disabled: readonly,\n key: \"widget-datetime\",\n use12Hours: use12Hours,\n showTime: {\n format: timeFormat\n },\n placeholder: placeholder,\n size: renderSize,\n format: dateTimeFrmat,\n value: dateValue,\n onChange: this.handleChange\n }, customProps));\n }\n }]);\n return DateTimeWidget;\n}(PureComponent);\nDateTimeWidget.propTypes = {\n setValue: PropTypes.func.isRequired,\n value: PropTypes.string,\n //in valueFormat\n config: PropTypes.object.isRequired,\n field: PropTypes.any,\n placeholder: PropTypes.string,\n customProps: PropTypes.object,\n readonly: PropTypes.bool,\n // from fieldSettings:\n timeFormat: PropTypes.string,\n dateFormat: PropTypes.string,\n valueFormat: PropTypes.string,\n use12Hours: PropTypes.bool\n};\nDateTimeWidget.defaultProps = {\n timeFormat: \"HH:mm\",\n dateFormat: \"YYYY-MM-DD\",\n valueFormat: \"YYYY-MM-DD HH:mm:ss\",\n use12Hours: false\n};\nexport { DateTimeWidget as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { TimePicker } from \"../moment\";\nimport { Utils } from \"@react-awesome-query-builder/ui\";\nvar moment = Utils.moment;\nvar TimeWidget = /*#__PURE__*/function (_PureComponent) {\n _inherits(TimeWidget, _PureComponent);\n var _super = _createSuper(TimeWidget);\n function TimeWidget(props) {\n var _this;\n _classCallCheck(this, TimeWidget);\n _this = _super.call(this, props);\n _this.handleChange = function (aValue) {\n var _this$props = _this.props,\n setValue = _this$props.setValue,\n valueFormat = _this$props.valueFormat,\n timeFormat = _this$props.timeFormat;\n if (aValue && aValue.isValid() && timeFormat == \"HH:mm\") {\n aValue.set({\n second: 0,\n millisecond: 0\n });\n }\n var value = aValue && aValue.isValid() ? aValue.format(valueFormat) : undefined;\n if (value || aValue === null) setValue(value);\n };\n var _valueFormat = props.valueFormat,\n _value = props.value,\n _setValue = props.setValue;\n var mValue = _value ? moment(_value, _valueFormat) : null;\n if (mValue && !mValue.isValid()) {\n _setValue(null);\n }\n return _this;\n }\n _createClass(TimeWidget, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n placeholder = _this$props2.placeholder,\n customProps = _this$props2.customProps,\n value = _this$props2.value,\n valueFormat = _this$props2.valueFormat,\n timeFormat = _this$props2.timeFormat,\n use12Hours = _this$props2.use12Hours,\n config = _this$props2.config,\n readonly = _this$props2.readonly;\n var renderSize = config.settings.renderSize;\n var timeValue = value ? moment(value, valueFormat) : null;\n return /*#__PURE__*/React.createElement(TimePicker, _extends({\n disabled: readonly,\n use12Hours: use12Hours,\n key: \"widget-time\",\n size: renderSize,\n placeholder: placeholder,\n format: timeFormat,\n value: timeValue,\n onChange: this.handleChange\n }, customProps));\n }\n }]);\n return TimeWidget;\n}(PureComponent);\nTimeWidget.propTypes = {\n setValue: PropTypes.func.isRequired,\n value: PropTypes.string,\n //in valueFormat\n config: PropTypes.object.isRequired,\n field: PropTypes.any,\n placeholder: PropTypes.string,\n customProps: PropTypes.object,\n readonly: PropTypes.bool,\n // from fieldSettings:\n timeFormat: PropTypes.string,\n valueFormat: PropTypes.string,\n use12Hours: PropTypes.bool\n};\nTimeWidget.defaultProps = {\n timeFormat: \"HH:mm\",\n valueFormat: \"HH:mm:ss\",\n use12Hours: false\n};\nexport { TimeWidget as default };","export var SELECT_WIDTH_OFFSET_RIGHT = 48;\nvar DEFAULT_FONT_SIZE = \"14px\";\nvar DEFAULT_FONT_FAMILY = \"'Helvetica Neue', Helvetica, Arial, sans-serif\";\nexport var BUILT_IN_PLACEMENTS = {\n bottomLeft: {\n points: [\"tl\", \"bl\"],\n offset: [0, 4],\n overflow: {\n adjustX: 0,\n adjustY: 1\n }\n },\n bottomRight: {\n points: [\"tr\", \"br\"],\n offset: [0, 4],\n overflow: {\n adjustX: 1,\n adjustY: 1\n }\n },\n topLeft: {\n points: [\"bl\", \"tl\"],\n offset: [0, -4],\n overflow: {\n adjustX: 0,\n adjustY: 1\n }\n },\n topRight: {\n points: [\"br\", \"tr\"],\n offset: [0, -4],\n overflow: {\n adjustX: 1,\n adjustY: 1\n }\n }\n};\nexport var calcTextWidth = function calcTextWidth(str) {\n var fontFamily = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_FONT_FAMILY;\n var fontSize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_FONT_SIZE;\n if (typeof document !== \"undefined\") {\n var div = document.createElement(\"div\");\n div.innerHTML = str;\n var css = {\n \"position\": \"absolute\",\n \"float\": \"left\",\n \"white-space\": \"nowrap\",\n \"visibility\": \"hidden\",\n \"font-size\": fontSize,\n \"font-family\": fontFamily\n };\n for (var k in css) {\n div.style[k] = css[k];\n }\n div = document.body.appendChild(div);\n var w = div.offsetWidth;\n document.body.removeChild(div);\n return w;\n } else {\n return undefined;\n }\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { calcTextWidth, SELECT_WIDTH_OFFSET_RIGHT } from \"../../utils/domUtils\";\nimport { Select } from \"antd\";\nimport omit from \"lodash/omit\";\nimport { Utils } from \"@react-awesome-query-builder/ui\";\nvar useOnPropsChanged = Utils.ReactUtils.useOnPropsChanged;\nvar mapListValues = Utils.ListUtils.mapListValues;\nvar Option = Select.Option;\n\n// see type ListItem\nvar mapListItemToOptionKeys = {\n value: \"value\",\n title: \"children\",\n groupTitle: \"grouplabel\" // not supported\n};\nvar SelectWidget = /*#__PURE__*/function (_Component) {\n _inherits(SelectWidget, _Component);\n var _super = _createSuper(SelectWidget);\n function SelectWidget(props) {\n var _this;\n _classCallCheck(this, SelectWidget);\n _this = _super.call(this, props);\n _this.handleChange = function (val) {\n _this.props.setValue(val);\n };\n _this.filterOption = function (input, option) {\n var config = _this.props.config;\n var keysForFilter = config.settings.listKeysForSearch.map(function (k) {\n return mapListItemToOptionKeys[k];\n });\n var valueForFilter = keysForFilter.map(function (k) {\n return typeof option[k] == \"string\" ? option[k] : \"\";\n }).join(\"\\0\");\n var matches = valueForFilter.toLowerCase().indexOf(input.toLowerCase()) >= 0;\n return matches;\n };\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.onPropsChanged(props);\n return _this;\n }\n _createClass(SelectWidget, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var listValues = nextProps.listValues;\n var optionsMaxWidth = 0;\n mapListValues(listValues, function (_ref) {\n var title = _ref.title,\n value = _ref.value;\n optionsMaxWidth = Math.max(optionsMaxWidth, calcTextWidth(title, null));\n });\n if (!isNaN(optionsMaxWidth) && optionsMaxWidth) {\n this.optionsMaxWidth = optionsMaxWidth;\n }\n this.options = mapListValues(listValues, function (_ref2) {\n var title = _ref2.title,\n value = _ref2.value;\n return /*#__PURE__*/React.createElement(Option, {\n key: value + \"\",\n value: value + \"\"\n }, title);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n placeholder = _this$props.placeholder,\n customProps = _this$props.customProps,\n value = _this$props.value,\n readonly = _this$props.readonly;\n var renderSize = config.settings.renderSize;\n var placeholderWidth = calcTextWidth(placeholder);\n var dropdownWidth = this.optionsMaxWidth ? this.optionsMaxWidth + SELECT_WIDTH_OFFSET_RIGHT : null;\n var dropdownEmptyWidth = placeholderWidth ? placeholderWidth + SELECT_WIDTH_OFFSET_RIGHT : null;\n var width = value ? dropdownWidth : dropdownEmptyWidth;\n var aValue = value != undefined ? value + \"\" : undefined;\n var customSelectProps = omit(customProps, [\"\"]);\n return /*#__PURE__*/React.createElement(Select, _extends({\n disabled: readonly,\n style: {\n width: width\n },\n key: \"widget-select\",\n popupMatchSelectWidth: false,\n placeholder: placeholder,\n size: renderSize,\n value: aValue,\n onChange: this.handleChange,\n filterOption: this.filterOption\n }, customSelectProps), this.options);\n }\n }]);\n return SelectWidget;\n}(Component);\nSelectWidget.propTypes = {\n setValue: PropTypes.func.isRequired,\n config: PropTypes.object.isRequired,\n field: PropTypes.any,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n //key in listValues\n customProps: PropTypes.object,\n fieldDefinition: PropTypes.object,\n readonly: PropTypes.bool,\n // from fieldSettings:\n listValues: PropTypes.oneOfType([PropTypes.object, PropTypes.array])\n};\nexport { SelectWidget as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Input, Col } from \"antd\";\nvar TextWidget = /*#__PURE__*/function (_PureComponent) {\n _inherits(TextWidget, _PureComponent);\n var _super = _createSuper(TextWidget);\n function TextWidget() {\n var _this;\n _classCallCheck(this, TextWidget);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.handleChange = function (ev) {\n var v = ev.target.value;\n var val = v === \"\" ? undefined : v; // don't allow empty value\n _this.props.setValue(val);\n };\n return _this;\n }\n _createClass(TextWidget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n placeholder = _this$props.placeholder,\n customProps = _this$props.customProps,\n value = _this$props.value,\n readonly = _this$props.readonly,\n maxLength = _this$props.maxLength;\n var renderSize = config.settings.renderSize;\n var aValue = value != undefined ? value : null;\n return /*#__PURE__*/React.createElement(Col, null, /*#__PURE__*/React.createElement(Input, _extends({\n disabled: readonly,\n key: \"widget-text\",\n size: renderSize,\n type: \"text\",\n value: aValue,\n placeholder: placeholder,\n maxLength: maxLength,\n onChange: this.handleChange\n }, customProps)));\n }\n }]);\n return TextWidget;\n}(PureComponent);\nTextWidget.propTypes = {\n setValue: PropTypes.func.isRequired,\n placeholder: PropTypes.string,\n config: PropTypes.object.isRequired,\n value: PropTypes.string,\n field: PropTypes.any,\n readonly: PropTypes.bool,\n customProps: PropTypes.object,\n maxLength: PropTypes.number\n};\nexport { TextWidget as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Input, Col } from \"antd\";\nvar TextArea = Input.TextArea;\nvar TextAreaWidget = /*#__PURE__*/function (_PureComponent) {\n _inherits(TextAreaWidget, _PureComponent);\n var _super = _createSuper(TextAreaWidget);\n function TextAreaWidget() {\n var _this;\n _classCallCheck(this, TextAreaWidget);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.handleChange = function (ev) {\n var v = ev.target.value;\n var val = v === \"\" ? undefined : v; // don't allow empty value\n _this.props.setValue(val);\n };\n return _this;\n }\n _createClass(TextAreaWidget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n placeholder = _this$props.placeholder,\n customProps = _this$props.customProps,\n value = _this$props.value,\n readonly = _this$props.readonly,\n maxLength = _this$props.maxLength,\n maxRows = _this$props.maxRows,\n fullWidth = _this$props.fullWidth;\n var _config$settings = config.settings,\n renderSize = _config$settings.renderSize,\n defaultMaxRows = _config$settings.defaultMaxRows;\n var aValue = value != undefined ? value : null;\n return /*#__PURE__*/React.createElement(Col, null, /*#__PURE__*/React.createElement(TextArea, _extends({\n autoSize: {\n minRows: 1,\n maxRows: maxRows || defaultMaxRows\n },\n maxLength: maxLength,\n disabled: readonly,\n key: \"widget-textarea\",\n size: renderSize,\n value: aValue,\n placeholder: placeholder,\n onChange: this.handleChange\n }, customProps)));\n }\n }]);\n return TextAreaWidget;\n}(PureComponent);\nTextAreaWidget.propTypes = {\n setValue: PropTypes.func.isRequired,\n placeholder: PropTypes.string,\n config: PropTypes.object.isRequired,\n value: PropTypes.string,\n field: PropTypes.any,\n readonly: PropTypes.bool,\n customProps: PropTypes.object,\n maxLength: PropTypes.number,\n maxRows: PropTypes.number\n};\nexport { TextAreaWidget as default };","// This icon file is generated automatically.\nvar UpOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\" } }] }, \"name\": \"up\", \"theme\": \"outlined\" };\nexport default UpOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport UpOutlinedSvg from \"@ant-design/icons-svg/es/asn/UpOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar UpOutlined = function UpOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: UpOutlinedSvg\n }));\n};\nUpOutlined.displayName = 'UpOutlined';\nexport default /*#__PURE__*/React.forwardRef(UpOutlined);","export function supportBigInt() {\n return typeof BigInt === 'function';\n}","import { supportBigInt } from './supportUtil';\n/**\n * Format string number to readable number\n */\nexport function trimNumber(numStr) {\n var str = numStr.trim();\n var negative = str.startsWith('-');\n if (negative) {\n str = str.slice(1);\n }\n str = str\n // Remove decimal 0. `1.000` => `1.`, `1.100` => `1.1`\n .replace(/(\\.\\d*[^0])0*$/, '$1')\n // Remove useless decimal. `1.` => `1`\n .replace(/\\.0*$/, '')\n // Remove integer 0. `0001` => `1`, 000.1' => `.1`\n .replace(/^0+/, '');\n if (str.startsWith('.')) {\n str = \"0\".concat(str);\n }\n var trimStr = str || '0';\n var splitNumber = trimStr.split('.');\n var integerStr = splitNumber[0] || '0';\n var decimalStr = splitNumber[1] || '0';\n if (integerStr === '0' && decimalStr === '0') {\n negative = false;\n }\n var negativeStr = negative ? '-' : '';\n return {\n negative: negative,\n negativeStr: negativeStr,\n trimStr: trimStr,\n integerStr: integerStr,\n decimalStr: decimalStr,\n fullStr: \"\".concat(negativeStr).concat(trimStr)\n };\n}\nexport function isE(number) {\n var str = String(number);\n return !Number.isNaN(Number(str)) && str.includes('e');\n}\n/**\n * [Legacy] Convert 1e-9 to 0.000000001.\n * This may lose some precision if user really want 1e-9.\n */\nexport function getNumberPrecision(number) {\n var numStr = String(number);\n if (isE(number)) {\n var precision = Number(numStr.slice(numStr.indexOf('e-') + 2));\n var decimalMatch = numStr.match(/\\.(\\d+)/);\n if (decimalMatch === null || decimalMatch === void 0 ? void 0 : decimalMatch[1]) {\n precision += decimalMatch[1].length;\n }\n return precision;\n }\n return numStr.includes('.') && validateNumber(numStr) ? numStr.length - numStr.indexOf('.') - 1 : 0;\n}\n/**\n * Convert number (includes scientific notation) to -xxx.yyy format\n */\nexport function num2str(number) {\n var numStr = String(number);\n if (isE(number)) {\n if (number > Number.MAX_SAFE_INTEGER) {\n return String(supportBigInt() ? BigInt(number).toString() : Number.MAX_SAFE_INTEGER);\n }\n if (number < Number.MIN_SAFE_INTEGER) {\n return String(supportBigInt() ? BigInt(number).toString() : Number.MIN_SAFE_INTEGER);\n }\n numStr = number.toFixed(getNumberPrecision(numStr));\n }\n return trimNumber(numStr).fullStr;\n}\nexport function validateNumber(num) {\n if (typeof num === 'number') {\n return !Number.isNaN(num);\n }\n // Empty\n if (!num) {\n return false;\n }\n return (\n // Normal type: 11.28\n /^\\s*-?\\d+(\\.\\d+)?\\s*$/.test(num) ||\n // Pre-number: 1.\n /^\\s*-?\\d+\\.\\s*$/.test(num) ||\n // Post-number: .1\n /^\\s*-?\\.\\d+\\s*$/.test(num)\n );\n}\nexport function getDecupleSteps(step) {\n var stepStr = typeof step === 'number' ? num2str(step) : trimNumber(step).fullStr;\n var hasPoint = stepStr.includes('.');\n if (!hasPoint) {\n return step + '0';\n }\n return trimNumber(stepStr.replace(/(\\d)\\.(\\d)/g, '$1$2.')).fullStr;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\n/* eslint-disable max-classes-per-file */\nimport { getNumberPrecision, isE, num2str, trimNumber, validateNumber } from './numberUtil';\nimport { supportBigInt } from './supportUtil';\n/**\n * We can remove this when IE not support anymore\n */\nexport var NumberDecimal = /*#__PURE__*/function () {\n function NumberDecimal(value) {\n _classCallCheck(this, NumberDecimal);\n this.origin = '';\n this.number = void 0;\n this.empty = void 0;\n if (!value && value !== 0 || !String(value).trim()) {\n this.empty = true;\n return;\n }\n this.origin = String(value);\n this.number = Number(value);\n }\n _createClass(NumberDecimal, [{\n key: \"negate\",\n value: function negate() {\n return new NumberDecimal(-this.toNumber());\n }\n }, {\n key: \"add\",\n value: function add(value) {\n if (this.isInvalidate()) {\n return new NumberDecimal(value);\n }\n var target = Number(value);\n if (Number.isNaN(target)) {\n return this;\n }\n var number = this.number + target;\n // [Legacy] Back to safe integer\n if (number > Number.MAX_SAFE_INTEGER) {\n return new NumberDecimal(Number.MAX_SAFE_INTEGER);\n }\n if (number < Number.MIN_SAFE_INTEGER) {\n return new NumberDecimal(Number.MIN_SAFE_INTEGER);\n }\n var maxPrecision = Math.max(getNumberPrecision(this.number), getNumberPrecision(target));\n return new NumberDecimal(number.toFixed(maxPrecision));\n }\n }, {\n key: \"isEmpty\",\n value: function isEmpty() {\n return this.empty;\n }\n }, {\n key: \"isNaN\",\n value: function isNaN() {\n return Number.isNaN(this.number);\n }\n }, {\n key: \"isInvalidate\",\n value: function isInvalidate() {\n return this.isEmpty() || this.isNaN();\n }\n }, {\n key: \"equals\",\n value: function equals(target) {\n return this.toNumber() === (target === null || target === void 0 ? void 0 : target.toNumber());\n }\n }, {\n key: \"lessEquals\",\n value: function lessEquals(target) {\n return this.add(target.negate().toString()).toNumber() <= 0;\n }\n }, {\n key: \"toNumber\",\n value: function toNumber() {\n return this.number;\n }\n }, {\n key: \"toString\",\n value: function toString() {\n var safe = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n if (!safe) {\n return this.origin;\n }\n if (this.isInvalidate()) {\n return '';\n }\n return num2str(this.number);\n }\n }]);\n return NumberDecimal;\n}();\nexport var BigIntDecimal = /*#__PURE__*/function () {\n /** BigInt will convert `0009` to `9`. We need record the len of decimal */\n\n function BigIntDecimal(value) {\n _classCallCheck(this, BigIntDecimal);\n this.origin = '';\n this.negative = void 0;\n this.integer = void 0;\n this.decimal = void 0;\n this.decimalLen = void 0;\n this.empty = void 0;\n this.nan = void 0;\n if (!value && value !== 0 || !String(value).trim()) {\n this.empty = true;\n return;\n }\n this.origin = String(value);\n // Act like Number convert\n if (value === '-') {\n this.nan = true;\n return;\n }\n var mergedValue = value;\n // We need convert back to Number since it require `toFixed` to handle this\n if (isE(mergedValue)) {\n mergedValue = Number(mergedValue);\n }\n mergedValue = typeof mergedValue === 'string' ? mergedValue : num2str(mergedValue);\n if (validateNumber(mergedValue)) {\n var trimRet = trimNumber(mergedValue);\n this.negative = trimRet.negative;\n var numbers = trimRet.trimStr.split('.');\n this.integer = BigInt(numbers[0]);\n var decimalStr = numbers[1] || '0';\n this.decimal = BigInt(decimalStr);\n this.decimalLen = decimalStr.length;\n } else {\n this.nan = true;\n }\n }\n _createClass(BigIntDecimal, [{\n key: \"getMark\",\n value: function getMark() {\n return this.negative ? '-' : '';\n }\n }, {\n key: \"getIntegerStr\",\n value: function getIntegerStr() {\n return this.integer.toString();\n }\n }, {\n key: \"getDecimalStr\",\n value: function getDecimalStr() {\n return this.decimal.toString().padStart(this.decimalLen, '0');\n }\n /**\n * Align BigIntDecimal with same decimal length. e.g. 12.3 + 5 = 1230000\n * This is used for add function only.\n */\n }, {\n key: \"alignDecimal\",\n value: function alignDecimal(decimalLength) {\n var str = \"\".concat(this.getMark()).concat(this.getIntegerStr()).concat(this.getDecimalStr().padEnd(decimalLength, '0'));\n return BigInt(str);\n }\n }, {\n key: \"negate\",\n value: function negate() {\n var clone = new BigIntDecimal(this.toString());\n clone.negative = !clone.negative;\n return clone;\n }\n }, {\n key: \"add\",\n value: function add(value) {\n if (this.isInvalidate()) {\n return new BigIntDecimal(value);\n }\n var offset = new BigIntDecimal(value);\n if (offset.isInvalidate()) {\n return this;\n }\n var maxDecimalLength = Math.max(this.getDecimalStr().length, offset.getDecimalStr().length);\n var myAlignedDecimal = this.alignDecimal(maxDecimalLength);\n var offsetAlignedDecimal = offset.alignDecimal(maxDecimalLength);\n var valueStr = (myAlignedDecimal + offsetAlignedDecimal).toString();\n // We need fill string length back to `maxDecimalLength` to avoid parser failed\n var _trimNumber = trimNumber(valueStr),\n negativeStr = _trimNumber.negativeStr,\n trimStr = _trimNumber.trimStr;\n var hydrateValueStr = \"\".concat(negativeStr).concat(trimStr.padStart(maxDecimalLength + 1, '0'));\n return new BigIntDecimal(\"\".concat(hydrateValueStr.slice(0, -maxDecimalLength), \".\").concat(hydrateValueStr.slice(-maxDecimalLength)));\n }\n }, {\n key: \"isEmpty\",\n value: function isEmpty() {\n return this.empty;\n }\n }, {\n key: \"isNaN\",\n value: function isNaN() {\n return this.nan;\n }\n }, {\n key: \"isInvalidate\",\n value: function isInvalidate() {\n return this.isEmpty() || this.isNaN();\n }\n }, {\n key: \"equals\",\n value: function equals(target) {\n return this.toString() === (target === null || target === void 0 ? void 0 : target.toString());\n }\n }, {\n key: \"lessEquals\",\n value: function lessEquals(target) {\n return this.add(target.negate().toString()).toNumber() <= 0;\n }\n }, {\n key: \"toNumber\",\n value: function toNumber() {\n if (this.isNaN()) {\n return NaN;\n }\n return Number(this.toString());\n }\n }, {\n key: \"toString\",\n value: function toString() {\n var safe = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n if (!safe) {\n return this.origin;\n }\n if (this.isInvalidate()) {\n return '';\n }\n return trimNumber(\"\".concat(this.getMark()).concat(this.getIntegerStr(), \".\").concat(this.getDecimalStr())).fullStr;\n }\n }]);\n return BigIntDecimal;\n}();\nexport default function getMiniDecimal(value) {\n // We use BigInt here.\n // Will fallback to Number if not support.\n if (supportBigInt()) {\n return new BigIntDecimal(value);\n }\n return new NumberDecimal(value);\n}\n/**\n * Align the logic of toFixed to around like 1.5 => 2.\n * If set `cutOnly`, will just remove the over decimal part.\n */\nexport function toFixed(numStr, separatorStr, precision) {\n var cutOnly = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (numStr === '') {\n return '';\n }\n var _trimNumber2 = trimNumber(numStr),\n negativeStr = _trimNumber2.negativeStr,\n integerStr = _trimNumber2.integerStr,\n decimalStr = _trimNumber2.decimalStr;\n var precisionDecimalStr = \"\".concat(separatorStr).concat(decimalStr);\n var numberWithoutDecimal = \"\".concat(negativeStr).concat(integerStr);\n if (precision >= 0) {\n // We will get last + 1 number to check if need advanced number\n var advancedNum = Number(decimalStr[precision]);\n if (advancedNum >= 5 && !cutOnly) {\n var advancedDecimal = getMiniDecimal(numStr).add(\"\".concat(negativeStr, \"0.\").concat('0'.repeat(precision)).concat(10 - advancedNum));\n return toFixed(advancedDecimal.toString(), separatorStr, precision, cutOnly);\n }\n if (precision === 0) {\n return numberWithoutDecimal;\n }\n return \"\".concat(numberWithoutDecimal).concat(separatorStr).concat(decimalStr.padEnd(precision, '0').slice(0, precision));\n }\n if (precisionDecimalStr === '.0') {\n return numberWithoutDecimal;\n }\n return \"\".concat(numberWithoutDecimal).concat(precisionDecimalStr);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n/* eslint-disable react/no-unknown-property */\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport isMobile from \"rc-util/es/isMobile\";\n/**\n * When click and hold on a button - the speed of auto changing the value.\n */\nvar STEP_INTERVAL = 200;\n/**\n * When click and hold on a button - the delay before auto changing the value.\n */\nvar STEP_DELAY = 600;\nexport default function StepHandler(_ref) {\n var prefixCls = _ref.prefixCls,\n upNode = _ref.upNode,\n downNode = _ref.downNode,\n upDisabled = _ref.upDisabled,\n downDisabled = _ref.downDisabled,\n onStep = _ref.onStep;\n // ======================== Step ========================\n var stepTimeoutRef = React.useRef();\n var onStepRef = React.useRef();\n onStepRef.current = onStep;\n // We will interval update step when hold mouse down\n var onStepMouseDown = function onStepMouseDown(e, up) {\n e.preventDefault();\n onStepRef.current(up);\n // Loop step for interval\n function loopStep() {\n onStepRef.current(up);\n stepTimeoutRef.current = setTimeout(loopStep, STEP_INTERVAL);\n }\n // First time press will wait some time to trigger loop step update\n stepTimeoutRef.current = setTimeout(loopStep, STEP_DELAY);\n };\n var onStopStep = function onStopStep() {\n clearTimeout(stepTimeoutRef.current);\n };\n React.useEffect(function () {\n return onStopStep;\n }, []);\n // ======================= Render =======================\n if (isMobile()) {\n return null;\n }\n var handlerClassName = \"\".concat(prefixCls, \"-handler\");\n var upClassName = classNames(handlerClassName, \"\".concat(handlerClassName, \"-up\"), _defineProperty({}, \"\".concat(handlerClassName, \"-up-disabled\"), upDisabled));\n var downClassName = classNames(handlerClassName, \"\".concat(handlerClassName, \"-down\"), _defineProperty({}, \"\".concat(handlerClassName, \"-down-disabled\"), downDisabled));\n var sharedHandlerProps = {\n unselectable: 'on',\n role: 'button',\n onMouseUp: onStopStep,\n onMouseLeave: onStopStep\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(handlerClassName, \"-wrap\")\n }, /*#__PURE__*/React.createElement(\"span\", _extends({}, sharedHandlerProps, {\n onMouseDown: function onMouseDown(e) {\n onStepMouseDown(e, true);\n },\n \"aria-label\": \"Increase Value\",\n \"aria-disabled\": upDisabled,\n className: upClassName\n }), upNode || /*#__PURE__*/React.createElement(\"span\", {\n unselectable: \"on\",\n className: \"\".concat(prefixCls, \"-handler-up-inner\")\n })), /*#__PURE__*/React.createElement(\"span\", _extends({}, sharedHandlerProps, {\n onMouseDown: function onMouseDown(e) {\n onStepMouseDown(e, false);\n },\n \"aria-label\": \"Decrease Value\",\n \"aria-disabled\": downDisabled,\n className: downClassName\n }), downNode || /*#__PURE__*/React.createElement(\"span\", {\n unselectable: \"on\",\n className: \"\".concat(prefixCls, \"-handler-down-inner\")\n })));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"className\", \"style\", \"min\", \"max\", \"step\", \"defaultValue\", \"value\", \"disabled\", \"readOnly\", \"upHandler\", \"downHandler\", \"keyboard\", \"controls\", \"stringMode\", \"parser\", \"formatter\", \"precision\", \"decimalSeparator\", \"onChange\", \"onInput\", \"onPressEnter\", \"onStep\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport { useLayoutUpdateEffect } from \"rc-util/es/hooks/useLayoutEffect\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport getMiniDecimal, { toFixed } from './utils/MiniDecimal';\nimport StepHandler from './StepHandler';\nimport { getNumberPrecision, num2str, getDecupleSteps, validateNumber } from './utils/numberUtil';\nimport useCursor from './hooks/useCursor';\nimport useFrame from './hooks/useFrame';\n/**\n * We support `stringMode` which need handle correct type when user call in onChange\n * format max or min value\n * 1. if isInvalid return null\n * 2. if precision is undefined, return decimal\n * 3. format with precision\n * I. if max > 0, round down with precision. Example: max= 3.5, precision=0 afterFormat: 3\n * II. if max < 0, round up with precision. Example: max= -3.5, precision=0 afterFormat: -4\n * III. if min > 0, round up with precision. Example: min= 3.5, precision=0 afterFormat: 4\n * IV. if min < 0, round down with precision. Example: max= -3.5, precision=0 afterFormat: -3\n */\nvar getDecimalValue = function getDecimalValue(stringMode, decimalValue) {\n if (stringMode || decimalValue.isEmpty()) {\n return decimalValue.toString();\n }\n return decimalValue.toNumber();\n};\nvar getDecimalIfValidate = function getDecimalIfValidate(value) {\n var decimal = getMiniDecimal(value);\n return decimal.isInvalidate() ? null : decimal;\n};\nvar InputNumber = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-input-number' : _props$prefixCls,\n className = props.className,\n style = props.style,\n min = props.min,\n max = props.max,\n _props$step = props.step,\n step = _props$step === void 0 ? 1 : _props$step,\n defaultValue = props.defaultValue,\n value = props.value,\n disabled = props.disabled,\n readOnly = props.readOnly,\n upHandler = props.upHandler,\n downHandler = props.downHandler,\n keyboard = props.keyboard,\n _props$controls = props.controls,\n controls = _props$controls === void 0 ? true : _props$controls,\n stringMode = props.stringMode,\n parser = props.parser,\n formatter = props.formatter,\n precision = props.precision,\n decimalSeparator = props.decimalSeparator,\n onChange = props.onChange,\n onInput = props.onInput,\n onPressEnter = props.onPressEnter,\n onStep = props.onStep,\n inputProps = _objectWithoutProperties(props, _excluded);\n var inputClassName = \"\".concat(prefixCls, \"-input\");\n var inputRef = React.useRef(null);\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n focus = _React$useState2[0],\n setFocus = _React$useState2[1];\n var userTypingRef = React.useRef(false);\n var compositionRef = React.useRef(false);\n var shiftKeyRef = React.useRef(false);\n // ============================ Value =============================\n // Real value control\n var _React$useState3 = React.useState(function () {\n return getMiniDecimal(value !== null && value !== void 0 ? value : defaultValue);\n }),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n decimalValue = _React$useState4[0],\n setDecimalValue = _React$useState4[1];\n function setUncontrolledDecimalValue(newDecimal) {\n if (value === undefined) {\n setDecimalValue(newDecimal);\n }\n }\n // ====================== Parser & Formatter ======================\n /**\n * `precision` is used for formatter & onChange.\n * It will auto generate by `value` & `step`.\n * But it will not block user typing.\n *\n * Note: Auto generate `precision` is used for legacy logic.\n * We should remove this since we already support high precision with BigInt.\n *\n * @param number Provide which number should calculate precision\n * @param userTyping Change by user typing\n */\n var getPrecision = React.useCallback(function (numStr, userTyping) {\n if (userTyping) {\n return undefined;\n }\n if (precision >= 0) {\n return precision;\n }\n return Math.max(getNumberPrecision(numStr), getNumberPrecision(step));\n }, [precision, step]);\n // >>> Parser\n var mergedParser = React.useCallback(function (num) {\n var numStr = String(num);\n if (parser) {\n return parser(numStr);\n }\n var parsedStr = numStr;\n if (decimalSeparator) {\n parsedStr = parsedStr.replace(decimalSeparator, '.');\n }\n // [Legacy] We still support auto convert `$ 123,456` to `123456`\n return parsedStr.replace(/[^\\w.-]+/g, '');\n }, [parser, decimalSeparator]);\n // >>> Formatter\n var inputValueRef = React.useRef('');\n var mergedFormatter = React.useCallback(function (number, userTyping) {\n if (formatter) {\n return formatter(number, {\n userTyping: userTyping,\n input: String(inputValueRef.current)\n });\n }\n var str = typeof number === 'number' ? num2str(number) : number;\n // User typing will not auto format with precision directly\n if (!userTyping) {\n var mergedPrecision = getPrecision(str, userTyping);\n if (validateNumber(str) && (decimalSeparator || mergedPrecision >= 0)) {\n // Separator\n var separatorStr = decimalSeparator || '.';\n str = toFixed(str, separatorStr, mergedPrecision);\n }\n }\n return str;\n }, [formatter, getPrecision, decimalSeparator]);\n // ========================== InputValue ==========================\n /**\n * Input text value control\n *\n * User can not update input content directly. It update with follow rules by priority:\n * 1. controlled `value` changed\n * * [SPECIAL] Typing like `1.` should not immediately convert to `1`\n * 2. User typing with format (not precision)\n * 3. Blur or Enter trigger revalidate\n */\n var _React$useState5 = React.useState(function () {\n var initValue = defaultValue !== null && defaultValue !== void 0 ? defaultValue : value;\n if (decimalValue.isInvalidate() && ['string', 'number'].includes(_typeof(initValue))) {\n return Number.isNaN(initValue) ? '' : initValue;\n }\n return mergedFormatter(decimalValue.toString(), false);\n }),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n inputValue = _React$useState6[0],\n setInternalInputValue = _React$useState6[1];\n inputValueRef.current = inputValue;\n // Should always be string\n function setInputValue(newValue, userTyping) {\n setInternalInputValue(mergedFormatter(\n // Invalidate number is sometime passed by external control, we should let it go\n // Otherwise is controlled by internal interactive logic which check by userTyping\n // You can ref 'show limited value when input is not focused' test for more info.\n newValue.isInvalidate() ? newValue.toString(false) : newValue.toString(!userTyping), userTyping));\n }\n // >>> Max & Min limit\n var maxDecimal = React.useMemo(function () {\n return getDecimalIfValidate(max);\n }, [max, precision]);\n var minDecimal = React.useMemo(function () {\n return getDecimalIfValidate(min);\n }, [min, precision]);\n var upDisabled = React.useMemo(function () {\n if (!maxDecimal || !decimalValue || decimalValue.isInvalidate()) {\n return false;\n }\n return maxDecimal.lessEquals(decimalValue);\n }, [maxDecimal, decimalValue]);\n var downDisabled = React.useMemo(function () {\n if (!minDecimal || !decimalValue || decimalValue.isInvalidate()) {\n return false;\n }\n return decimalValue.lessEquals(minDecimal);\n }, [minDecimal, decimalValue]);\n // Cursor controller\n var _useCursor = useCursor(inputRef.current, focus),\n _useCursor2 = _slicedToArray(_useCursor, 2),\n recordCursor = _useCursor2[0],\n restoreCursor = _useCursor2[1];\n // ============================= Data =============================\n /**\n * Find target value closet within range.\n * e.g. [11, 28]:\n * 3 => 11\n * 23 => 23\n * 99 => 28\n */\n var getRangeValue = function getRangeValue(target) {\n // target > max\n if (maxDecimal && !target.lessEquals(maxDecimal)) {\n return maxDecimal;\n }\n // target < min\n if (minDecimal && !minDecimal.lessEquals(target)) {\n return minDecimal;\n }\n return null;\n };\n /**\n * Check value is in [min, max] range\n */\n var isInRange = function isInRange(target) {\n return !getRangeValue(target);\n };\n /**\n * Trigger `onChange` if value validated and not equals of origin.\n * Return the value that re-align in range.\n */\n var triggerValueUpdate = function triggerValueUpdate(newValue, userTyping) {\n var updateValue = newValue;\n var isRangeValidate = isInRange(updateValue) || updateValue.isEmpty();\n // Skip align value when trigger value is empty.\n // We just trigger onChange(null)\n // This should not block user typing\n if (!updateValue.isEmpty() && !userTyping) {\n // Revert value in range if needed\n updateValue = getRangeValue(updateValue) || updateValue;\n isRangeValidate = true;\n }\n if (!readOnly && !disabled && isRangeValidate) {\n var numStr = updateValue.toString();\n var mergedPrecision = getPrecision(numStr, userTyping);\n if (mergedPrecision >= 0) {\n updateValue = getMiniDecimal(toFixed(numStr, '.', mergedPrecision));\n // When to fixed. The value may out of min & max range.\n // 4 in [0, 3.8] => 3.8 => 4 (toFixed)\n if (!isInRange(updateValue)) {\n updateValue = getMiniDecimal(toFixed(numStr, '.', mergedPrecision, true));\n }\n }\n // Trigger event\n if (!updateValue.equals(decimalValue)) {\n setUncontrolledDecimalValue(updateValue);\n onChange === null || onChange === void 0 ? void 0 : onChange(updateValue.isEmpty() ? null : getDecimalValue(stringMode, updateValue));\n // Reformat input if value is not controlled\n if (value === undefined) {\n setInputValue(updateValue, userTyping);\n }\n }\n return updateValue;\n }\n return decimalValue;\n };\n // ========================== User Input ==========================\n var onNextPromise = useFrame();\n // >>> Collect input value\n var collectInputValue = function collectInputValue(inputStr) {\n recordCursor();\n // Update inputValue incase input can not parse as number\n setInternalInputValue(inputStr);\n // Parse number\n if (!compositionRef.current) {\n var finalValue = mergedParser(inputStr);\n var finalDecimal = getMiniDecimal(finalValue);\n if (!finalDecimal.isNaN()) {\n triggerValueUpdate(finalDecimal, true);\n }\n }\n // Trigger onInput later to let user customize value if they want do handle something after onChange\n onInput === null || onInput === void 0 ? void 0 : onInput(inputStr);\n // optimize for chinese input experience\n // https://github.com/ant-design/ant-design/issues/8196\n onNextPromise(function () {\n var nextInputStr = inputStr;\n if (!parser) {\n nextInputStr = inputStr.replace(/。/g, '.');\n }\n if (nextInputStr !== inputStr) {\n collectInputValue(nextInputStr);\n }\n });\n };\n // >>> Composition\n var onCompositionStart = function onCompositionStart() {\n compositionRef.current = true;\n };\n var onCompositionEnd = function onCompositionEnd() {\n compositionRef.current = false;\n collectInputValue(inputRef.current.value);\n };\n // >>> Input\n var onInternalInput = function onInternalInput(e) {\n collectInputValue(e.target.value);\n };\n // ============================= Step =============================\n var onInternalStep = function onInternalStep(up) {\n var _inputRef$current;\n // Ignore step since out of range\n if (up && upDisabled || !up && downDisabled) {\n return;\n }\n // Clear typing status since it may caused by up & down key.\n // We should sync with input value.\n userTypingRef.current = false;\n var stepDecimal = getMiniDecimal(shiftKeyRef.current ? getDecupleSteps(step) : step);\n if (!up) {\n stepDecimal = stepDecimal.negate();\n }\n var target = (decimalValue || getMiniDecimal(0)).add(stepDecimal.toString());\n var updatedValue = triggerValueUpdate(target, false);\n onStep === null || onStep === void 0 ? void 0 : onStep(getDecimalValue(stringMode, updatedValue), {\n offset: shiftKeyRef.current ? getDecupleSteps(step) : step,\n type: up ? 'up' : 'down'\n });\n (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();\n };\n // ============================ Flush =============================\n /**\n * Flush current input content to trigger value change & re-formatter input if needed\n */\n var flushInputValue = function flushInputValue(userTyping) {\n var parsedValue = getMiniDecimal(mergedParser(inputValue));\n var formatValue = parsedValue;\n if (!parsedValue.isNaN()) {\n // Only validate value or empty value can be re-fill to inputValue\n // Reassign the formatValue within ranged of trigger control\n formatValue = triggerValueUpdate(parsedValue, userTyping);\n } else {\n formatValue = decimalValue;\n }\n if (value !== undefined) {\n // Reset back with controlled value first\n setInputValue(decimalValue, false);\n } else if (!formatValue.isNaN()) {\n // Reset input back since no validate value\n setInputValue(formatValue, false);\n }\n };\n // Solve the issue of the event triggering sequence when entering numbers in chinese input (Safari)\n var onBeforeInput = function onBeforeInput() {\n userTypingRef.current = true;\n };\n var onKeyDown = function onKeyDown(event) {\n var which = event.which,\n shiftKey = event.shiftKey;\n userTypingRef.current = true;\n if (shiftKey) {\n shiftKeyRef.current = true;\n } else {\n shiftKeyRef.current = false;\n }\n if (which === KeyCode.ENTER) {\n if (!compositionRef.current) {\n userTypingRef.current = false;\n }\n flushInputValue(false);\n onPressEnter === null || onPressEnter === void 0 ? void 0 : onPressEnter(event);\n }\n if (keyboard === false) {\n return;\n }\n // Do step\n if (!compositionRef.current && [KeyCode.UP, KeyCode.DOWN].includes(which)) {\n onInternalStep(KeyCode.UP === which);\n event.preventDefault();\n }\n };\n var onKeyUp = function onKeyUp() {\n userTypingRef.current = false;\n shiftKeyRef.current = false;\n };\n // >>> Focus & Blur\n var onBlur = function onBlur() {\n flushInputValue(false);\n setFocus(false);\n userTypingRef.current = false;\n };\n // ========================== Controlled ==========================\n // Input by precision\n useLayoutUpdateEffect(function () {\n if (!decimalValue.isInvalidate()) {\n setInputValue(decimalValue, false);\n }\n }, [precision]);\n // Input by value\n useLayoutUpdateEffect(function () {\n var newValue = getMiniDecimal(value);\n setDecimalValue(newValue);\n var currentParsedValue = getMiniDecimal(mergedParser(inputValue));\n // When user typing from `1.2` to `1.`, we should not convert to `1` immediately.\n // But let it go if user set `formatter`\n if (!newValue.equals(currentParsedValue) || !userTypingRef.current || formatter) {\n // Update value as effect\n setInputValue(newValue, userTypingRef.current);\n }\n }, [value]);\n // ============================ Cursor ============================\n useLayoutUpdateEffect(function () {\n if (formatter) {\n restoreCursor();\n }\n }, [inputValue]);\n // ============================ Render ============================\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(prefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-focused\"), focus), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, \"\".concat(prefixCls, \"-readonly\"), readOnly), _defineProperty(_classNames, \"\".concat(prefixCls, \"-not-a-number\"), decimalValue.isNaN()), _defineProperty(_classNames, \"\".concat(prefixCls, \"-out-of-range\"), !decimalValue.isInvalidate() && !isInRange(decimalValue)), _classNames)),\n style: style,\n onFocus: function onFocus() {\n setFocus(true);\n },\n onBlur: onBlur,\n onKeyDown: onKeyDown,\n onKeyUp: onKeyUp,\n onCompositionStart: onCompositionStart,\n onCompositionEnd: onCompositionEnd,\n onBeforeInput: onBeforeInput\n }, controls && /*#__PURE__*/React.createElement(StepHandler, {\n prefixCls: prefixCls,\n upNode: upHandler,\n downNode: downHandler,\n upDisabled: upDisabled,\n downDisabled: downDisabled,\n onStep: onInternalStep\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(inputClassName, \"-wrap\")\n }, /*#__PURE__*/React.createElement(\"input\", _extends({\n autoComplete: \"off\",\n role: \"spinbutton\",\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n \"aria-valuenow\": decimalValue.isInvalidate() ? null : decimalValue.toString(),\n step: step\n }, inputProps, {\n ref: composeRef(inputRef, ref),\n className: inputClassName,\n value: inputValue,\n onChange: onInternalInput,\n disabled: disabled,\n readOnly: readOnly\n }))));\n});\nInputNumber.displayName = 'InputNumber';\nexport default InputNumber;","import { useRef } from 'react';\nimport warning from \"rc-util/es/warning\";\n/**\n * Keep input cursor in the correct position if possible.\n * Is this necessary since we have `formatter` which may mass the content?\n */\nexport default function useCursor(input, focused) {\n var selectionRef = useRef(null);\n function recordCursor() {\n // Record position\n try {\n var start = input.selectionStart,\n end = input.selectionEnd,\n value = input.value;\n var beforeTxt = value.substring(0, start);\n var afterTxt = value.substring(end);\n selectionRef.current = {\n start: start,\n end: end,\n value: value,\n beforeTxt: beforeTxt,\n afterTxt: afterTxt\n };\n } catch (e) {\n // Fix error in Chrome:\n // Failed to read the 'selectionStart' property from 'HTMLInputElement'\n // http://stackoverflow.com/q/21177489/3040605\n }\n }\n /**\n * Restore logic:\n * 1. back string same\n * 2. start string same\n */\n function restoreCursor() {\n if (input && selectionRef.current && focused) {\n try {\n var value = input.value;\n var _selectionRef$current = selectionRef.current,\n beforeTxt = _selectionRef$current.beforeTxt,\n afterTxt = _selectionRef$current.afterTxt,\n start = _selectionRef$current.start;\n var startPos = value.length;\n if (value.endsWith(afterTxt)) {\n startPos = value.length - selectionRef.current.afterTxt.length;\n } else if (value.startsWith(beforeTxt)) {\n startPos = beforeTxt.length;\n } else {\n var beforeLastChar = beforeTxt[start - 1];\n var newIndex = value.indexOf(beforeLastChar, start - 1);\n if (newIndex !== -1) {\n startPos = newIndex + 1;\n }\n }\n input.setSelectionRange(startPos, startPos);\n } catch (e) {\n warning(false, \"Something warning of cursor restore. Please fire issue about this: \".concat(e.message));\n }\n }\n }\n return [recordCursor, restoreCursor];\n}","import { useRef, useEffect } from 'react';\nimport raf from \"rc-util/es/raf\";\n/**\n * Always trigger latest once when call multiple time\n */\nexport default (function () {\n var idRef = useRef(0);\n var cleanUp = function cleanUp() {\n raf.cancel(idRef.current);\n };\n useEffect(function () {\n return cleanUp;\n }, []);\n return function (callback) {\n cleanUp();\n idRef.current = raf(function () {\n callback();\n });\n };\n});","import InputNumber from './InputNumber';\nexport default InputNumber;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport DownOutlined from \"@ant-design/icons/es/icons/DownOutlined\";\nimport UpOutlined from \"@ant-design/icons/es/icons/UpOutlined\";\nimport classNames from 'classnames';\nimport RcInputNumber from 'rc-input-number';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport SizeContext from '../config-provider/SizeContext';\nimport { FormItemInputContext, NoFormStyle } from '../form/context';\nimport { NoCompactStyle, useCompactItemContext } from '../space/Compact';\nimport { cloneElement } from '../_util/reactNode';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nvar InputNumber = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var size = React.useContext(SizeContext);\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n focused = _React$useState2[0],\n setFocus = _React$useState2[1];\n var inputRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return inputRef.current;\n });\n var className = props.className,\n customizeSize = props.size,\n customDisabled = props.disabled,\n customizePrefixCls = props.prefixCls,\n addonBefore = props.addonBefore,\n addonAfter = props.addonAfter,\n prefix = props.prefix,\n _props$bordered = props.bordered,\n bordered = _props$bordered === void 0 ? true : _props$bordered,\n readOnly = props.readOnly,\n customStatus = props.status,\n controls = props.controls,\n others = __rest(props, [\"className\", \"size\", \"disabled\", \"prefixCls\", \"addonBefore\", \"addonAfter\", \"prefix\", \"bordered\", \"readOnly\", \"status\", \"controls\"]);\n var prefixCls = getPrefixCls('input-number', customizePrefixCls);\n var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n compactSize = _useCompactItemContex.compactSize,\n compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n var upIcon = /*#__PURE__*/React.createElement(UpOutlined, {\n className: \"\".concat(prefixCls, \"-handler-up-inner\")\n });\n var downIcon = /*#__PURE__*/React.createElement(DownOutlined, {\n className: \"\".concat(prefixCls, \"-handler-down-inner\")\n });\n var controlsTemp = typeof controls === 'boolean' ? controls : undefined;\n if (_typeof(controls) === 'object') {\n upIcon = typeof controls.upIcon === 'undefined' ? upIcon : /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-handler-up-inner\")\n }, controls.upIcon);\n downIcon = typeof controls.downIcon === 'undefined' ? downIcon : /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-handler-down-inner\")\n }, controls.downIcon);\n }\n var _useContext = useContext(FormItemInputContext),\n hasFeedback = _useContext.hasFeedback,\n contextStatus = _useContext.status,\n isFormItemInput = _useContext.isFormItemInput,\n feedbackIcon = _useContext.feedbackIcon;\n var mergedStatus = getMergedStatus(contextStatus, customStatus);\n var mergeSize = compactSize || customizeSize || size;\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n var inputNumberClass = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), mergeSize === 'large'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), mergeSize === 'small'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-borderless\"), !bordered), _defineProperty(_classNames, \"\".concat(prefixCls, \"-in-form-item\"), isFormItemInput), _classNames), getStatusClassNames(prefixCls, mergedStatus), compactItemClassnames, className);\n var element = /*#__PURE__*/React.createElement(RcInputNumber, _extends({\n ref: inputRef,\n disabled: mergedDisabled,\n className: inputNumberClass,\n upHandler: upIcon,\n downHandler: downIcon,\n prefixCls: prefixCls,\n readOnly: readOnly,\n controls: controlsTemp\n }, others));\n if (prefix != null || hasFeedback) {\n var _classNames2;\n var affixWrapperCls = classNames(\"\".concat(prefixCls, \"-affix-wrapper\"), getStatusClassNames(\"\".concat(prefixCls, \"-affix-wrapper\"), mergedStatus, hasFeedback), (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-affix-wrapper-focused\"), focused), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-affix-wrapper-disabled\"), props.disabled), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-affix-wrapper-sm\"), size === 'small'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-affix-wrapper-lg\"), size === 'large'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-affix-wrapper-rtl\"), direction === 'rtl'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-affix-wrapper-readonly\"), readOnly), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-affix-wrapper-borderless\"), !bordered), _defineProperty(_classNames2, \"\".concat(className), !(addonBefore || addonAfter) && className), _classNames2));\n element = /*#__PURE__*/React.createElement(\"div\", {\n className: affixWrapperCls,\n style: props.style,\n onMouseUp: function onMouseUp() {\n return inputRef.current.focus();\n }\n }, prefix && /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-prefix\")\n }, prefix), cloneElement(element, {\n style: null,\n value: props.value,\n onFocus: function onFocus(event) {\n var _a;\n setFocus(true);\n (_a = props.onFocus) === null || _a === void 0 ? void 0 : _a.call(props, event);\n },\n onBlur: function onBlur(event) {\n var _a;\n setFocus(false);\n (_a = props.onBlur) === null || _a === void 0 ? void 0 : _a.call(props, event);\n }\n }), hasFeedback && /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-suffix\")\n }, feedbackIcon));\n }\n if (addonBefore != null || addonAfter != null) {\n var _classNames4;\n var wrapperClassName = \"\".concat(prefixCls, \"-group\");\n var addonClassName = \"\".concat(wrapperClassName, \"-addon\");\n var addonBeforeNode = addonBefore ? /*#__PURE__*/React.createElement(\"div\", {\n className: addonClassName\n }, addonBefore) : null;\n var addonAfterNode = addonAfter ? /*#__PURE__*/React.createElement(\"div\", {\n className: addonClassName\n }, addonAfter) : null;\n var mergedWrapperClassName = classNames(\"\".concat(prefixCls, \"-wrapper\"), wrapperClassName, _defineProperty({}, \"\".concat(wrapperClassName, \"-rtl\"), direction === 'rtl'));\n var mergedGroupClassName = classNames(\"\".concat(prefixCls, \"-group-wrapper\"), (_classNames4 = {}, _defineProperty(_classNames4, \"\".concat(prefixCls, \"-group-wrapper-sm\"), size === 'small'), _defineProperty(_classNames4, \"\".concat(prefixCls, \"-group-wrapper-lg\"), size === 'large'), _defineProperty(_classNames4, \"\".concat(prefixCls, \"-group-wrapper-rtl\"), direction === 'rtl'), _classNames4), getStatusClassNames(\"\".concat(prefixCls, \"-group-wrapper\"), mergedStatus, hasFeedback), className);\n element = /*#__PURE__*/React.createElement(\"div\", {\n className: mergedGroupClassName,\n style: props.style\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: mergedWrapperClassName\n }, addonBeforeNode && /*#__PURE__*/React.createElement(NoCompactStyle, null, /*#__PURE__*/React.createElement(NoFormStyle, {\n status: true,\n override: true\n }, addonBeforeNode)), cloneElement(element, {\n style: null,\n disabled: mergedDisabled\n }), addonAfterNode && /*#__PURE__*/React.createElement(NoCompactStyle, null, /*#__PURE__*/React.createElement(NoFormStyle, {\n status: true,\n override: true\n }, addonAfterNode))));\n }\n return element;\n});\nexport default InputNumber;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { InputNumber, Col } from \"antd\";\nvar NumberWidget = /*#__PURE__*/function (_PureComponent) {\n _inherits(NumberWidget, _PureComponent);\n var _super = _createSuper(NumberWidget);\n function NumberWidget() {\n var _this;\n _classCallCheck(this, NumberWidget);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.handleChange = function (val) {\n if (val === \"\" || val === null) val = undefined;\n _this.props.setValue(val);\n };\n return _this;\n }\n _createClass(NumberWidget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n placeholder = _this$props.placeholder,\n customProps = _this$props.customProps,\n value = _this$props.value,\n min = _this$props.min,\n max = _this$props.max,\n step = _this$props.step,\n readonly = _this$props.readonly;\n var renderSize = config.settings.renderSize;\n var aValue = value != undefined ? value : undefined;\n return /*#__PURE__*/React.createElement(Col, null, /*#__PURE__*/React.createElement(InputNumber, _extends({\n disabled: readonly,\n key: \"widget-number\",\n size: renderSize,\n value: aValue,\n min: min,\n max: max,\n step: step,\n placeholder: placeholder,\n onChange: this.handleChange\n }, customProps)));\n }\n }]);\n return NumberWidget;\n}(PureComponent);\nNumberWidget.propTypes = {\n setValue: PropTypes.func.isRequired,\n placeholder: PropTypes.string,\n config: PropTypes.object.isRequired,\n field: PropTypes.any,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n customProps: PropTypes.object,\n fieldDefinition: PropTypes.object,\n readonly: PropTypes.bool,\n // from fieldSettings:\n min: PropTypes.number,\n max: PropTypes.number,\n step: PropTypes.number\n};\nNumberWidget.defaultProps = {\n min: undefined,\n max: undefined,\n step: undefined\n};\nexport { NumberWidget as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nvar _excluded = [\"width\"];\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Slider, InputNumber, Col } from \"antd\";\nimport { Utils } from \"@react-awesome-query-builder/ui\";\nvar _Utils$ReactUtils = Utils.ReactUtils,\n useOnPropsChanged = _Utils$ReactUtils.useOnPropsChanged,\n pureShouldComponentUpdate = _Utils$ReactUtils.pureShouldComponentUpdate;\nvar __isInternal = true; //true to optimize render\nvar SliderWidget = /*#__PURE__*/function (_Component) {\n _inherits(SliderWidget, _Component);\n var _super = _createSuper(SliderWidget);\n function SliderWidget(props) {\n var _this;\n _classCallCheck(this, SliderWidget);\n _this = _super.call(this, props);\n _this.state = {};\n _this.handleChange = function (val) {\n if (val === \"\") val = undefined;\n if (__isInternal) _this.setState({\n internalValue: val\n });\n _this.props.setValue(val, undefined, __isInternal);\n };\n _this.tipFormatter = function (val) {\n return val != undefined ? val.toString() : undefined;\n };\n _this.shouldComponentUpdate = function (nextProps, nextState) {\n var should = _this.pureShouldComponentUpdate(nextProps, nextState);\n if (should) {\n // RHL fix\n if (_this.props.cacheBusterProp && __isInternal) {\n nextState.internalValue = _this.state.internalValue;\n }\n }\n return should;\n };\n _this.pureShouldComponentUpdate = pureShouldComponentUpdate(_assertThisInitialized(_this));\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.state.internalValue = props.value;\n return _this;\n }\n _createClass(SliderWidget, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n this.setState({\n internalValue: nextProps.value\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n placeholder = _this$props.placeholder,\n customProps = _this$props.customProps,\n value = _this$props.value,\n min = _this$props.min,\n max = _this$props.max,\n step = _this$props.step,\n marks = _this$props.marks,\n readonly = _this$props.readonly,\n valueError = _this$props.valueError;\n var _config$settings = config.settings,\n renderSize = _config$settings.renderSize,\n showErrorMessage = _config$settings.showErrorMessage,\n defaultSliderWidth = _config$settings.defaultSliderWidth;\n var _ref = customProps || {},\n width = _ref.width,\n rest = _objectWithoutProperties(_ref, _excluded);\n var customInputProps = rest.input || {};\n var customSliderProps = rest.slider || rest;\n var canUseInternal = showErrorMessage ? true : !valueError;\n var aValue = __isInternal && canUseInternal ? this.state.internalValue : value;\n if (aValue == undefined) aValue = null;\n var sliderValue = aValue == null && min ? min : aValue;\n return /*#__PURE__*/React.createElement(Col, {\n style: {\n display: \"inline-flex\",\n flexWrap: \"wrap\"\n }\n }, /*#__PURE__*/React.createElement(Col, {\n style: {\n \"float\": \"left\",\n marginRight: \"5px\"\n }\n }, /*#__PURE__*/React.createElement(InputNumber, _extends({\n disabled: readonly,\n size: renderSize,\n value: aValue,\n min: min,\n max: max,\n step: step,\n placeholder: placeholder,\n onChange: this.handleChange\n }, customInputProps))), /*#__PURE__*/React.createElement(Col, {\n style: {\n \"float\": \"left\",\n width: width || defaultSliderWidth\n }\n }, /*#__PURE__*/React.createElement(Slider, _extends({\n disabled: readonly,\n value: sliderValue,\n tooltip: {\n formatter: this.tipFormatter\n },\n min: min,\n max: max,\n included: false,\n step: step,\n marks: marks,\n onChange: this.handleChange\n }, customSliderProps))), /*#__PURE__*/React.createElement(Col, {\n style: {\n clear: \"both\"\n }\n }));\n }\n }]);\n return SliderWidget;\n}(Component);\nSliderWidget.propTypes = {\n setValue: PropTypes.func.isRequired,\n placeholder: PropTypes.string,\n config: PropTypes.object.isRequired,\n field: PropTypes.any,\n value: PropTypes.number,\n customProps: PropTypes.object,\n fieldDefinition: PropTypes.object,\n readonly: PropTypes.bool,\n // from fieldSettings:\n min: PropTypes.number,\n max: PropTypes.number,\n step: PropTypes.number,\n marks: PropTypes.object\n};\nSliderWidget.defaultProps = {\n min: 0,\n max: 100,\n step: 1,\n marks: undefined\n};\nexport { SliderWidget as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nvar _excluded = [\"width\"];\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Slider, InputNumber, Col } from \"antd\";\nvar RangeWidget = /*#__PURE__*/function (_PureComponent) {\n _inherits(RangeWidget, _PureComponent);\n var _super = _createSuper(RangeWidget);\n function RangeWidget(props) {\n var _this;\n _classCallCheck(this, RangeWidget);\n _this = _super.call(this, props);\n _this.state = {};\n _this.handleChange = function (value) {\n _this.props.setValue(value);\n };\n _this.handleChangeFrom = function (valueFrom) {\n var value = _this.props.value || [undefined, undefined];\n if (valueFrom === \"\" || valueFrom == null) valueFrom = undefined; //value[0];\n value = _toConsumableArray(value);\n value[0] = valueFrom;\n // if (value[1] == undefined)\n // value[1] = valueFrom;\n _this.props.setValue(value);\n };\n _this.handleChangeTo = function (valueTo) {\n var value = _this.props.value || [undefined, undefined];\n if (valueTo === \"\" || valueTo == null) valueTo = undefined; //value[1];\n value = _toConsumableArray(value);\n value[1] = valueTo;\n // if (value[0] == undefined)\n // value[0] = valueTo;\n _this.props.setValue(value);\n };\n _this.tipFormatter = function (val) {\n return val != undefined ? val.toString() : \"\";\n };\n var _ref = props.value || [null, null],\n _ref2 = _slicedToArray(_ref, 2),\n _valueFrom = _ref2[0],\n _valueTo = _ref2[1];\n if (props.value && (_valueFrom == undefined || _valueTo == undefined)) {\n // happens if we changed op from '==' to 'between'\n // (I know, timeout is dirty hack..)\n setTimeout(function () {\n var oneValue = _valueFrom || _valueTo;\n var value = [oneValue, oneValue];\n _this.props.setValue(value);\n }, 1);\n }\n return _this;\n }\n _createClass(RangeWidget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n placeholders = _this$props.placeholders,\n customProps = _this$props.customProps,\n value = _this$props.value,\n min = _this$props.min,\n max = _this$props.max,\n step = _this$props.step,\n marks = _this$props.marks,\n textSeparators = _this$props.textSeparators,\n readonly = _this$props.readonly;\n var _config$settings = config.settings,\n renderSize = _config$settings.renderSize,\n defaultSliderWidth = _config$settings.defaultSliderWidth;\n var _ref3 = customProps || {},\n width = _ref3.width,\n rest = _objectWithoutProperties(_ref3, _excluded);\n var customInputProps = rest.input || {};\n var customSliderProps = rest.slider || rest;\n var aValue = value != undefined ? value : undefined;\n var _ref4 = aValue || [null, null],\n _ref5 = _slicedToArray(_ref4, 2),\n valueFrom = _ref5[0],\n valueTo = _ref5[1];\n return /*#__PURE__*/React.createElement(Col, {\n style: {\n display: \"inline-flex\",\n flexWrap: \"wrap\"\n }\n }, /*#__PURE__*/React.createElement(Col, {\n style: {\n \"float\": \"left\",\n marginRight: \"5px\"\n }\n }, /*#__PURE__*/React.createElement(InputNumber, _extends({\n disabled: readonly,\n size: renderSize,\n key: \"numFrom\",\n value: valueFrom,\n min: min,\n max: max,\n step: step,\n placeholder: placeholders[0],\n onChange: this.handleChangeFrom\n }, customInputProps))), /*#__PURE__*/React.createElement(Col, {\n style: {\n \"float\": \"left\",\n marginRight: \"5px\",\n lineHeight: \"20px\"\n }\n }, /*#__PURE__*/React.createElement(\"span\", null, textSeparators[1])), /*#__PURE__*/React.createElement(Col, {\n style: {\n \"float\": \"left\",\n marginRight: \"5px\"\n }\n }, /*#__PURE__*/React.createElement(InputNumber, _extends({\n disabled: readonly,\n size: renderSize,\n key: \"numTo\",\n value: valueTo,\n min: min,\n max: max,\n step: step,\n placeholder: placeholders[1],\n onChange: this.handleChangeTo\n }, customInputProps))), /*#__PURE__*/React.createElement(Col, {\n style: {\n \"float\": \"left\",\n width: width || defaultSliderWidth\n }\n }, /*#__PURE__*/React.createElement(Slider, _extends({\n disabled: readonly,\n value: aValue,\n tooltip: {\n formatter: this.tipFormatter\n },\n min: min,\n max: max,\n step: step,\n marks: marks,\n included: false,\n range: true,\n onChange: this.handleChange\n }, customSliderProps))), /*#__PURE__*/React.createElement(Col, {\n style: {\n clear: \"both\"\n }\n }));\n }\n }]);\n return RangeWidget;\n}(PureComponent);\nRangeWidget.propTypes = {\n setValue: PropTypes.func.isRequired,\n placeholder: PropTypes.string,\n placeholders: PropTypes.array,\n textSeparators: PropTypes.array,\n config: PropTypes.object.isRequired,\n field: PropTypes.any,\n value: PropTypes.array,\n customProps: PropTypes.object,\n fieldDefinition: PropTypes.object,\n readonly: PropTypes.bool,\n // from fieldSettings:\n min: PropTypes.number,\n max: PropTypes.number,\n step: PropTypes.number,\n marks: PropTypes.object\n};\nRangeWidget.defaultProps = {\n min: 0,\n max: 100,\n step: 1,\n marks: undefined\n};\nexport { RangeWidget as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Switch } from \"antd\";\nvar BooleanWidget = /*#__PURE__*/function (_PureComponent) {\n _inherits(BooleanWidget, _PureComponent);\n var _super = _createSuper(BooleanWidget);\n function BooleanWidget() {\n var _this;\n _classCallCheck(this, BooleanWidget);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.handleChange = function (val) {\n _this.props.setValue(val);\n };\n return _this;\n }\n _createClass(BooleanWidget, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n customProps = _this$props.customProps,\n value = _this$props.value,\n labelYes = _this$props.labelYes,\n labelNo = _this$props.labelNo,\n readonly = _this$props.readonly;\n return /*#__PURE__*/React.createElement(Switch, _extends({\n checkedChildren: labelYes || null,\n unCheckedChildren: labelNo || null,\n checked: value || null,\n onChange: this.handleChange,\n disabled: readonly\n }, customProps));\n }\n }]);\n return BooleanWidget;\n}(PureComponent);\nBooleanWidget.propTypes = {\n setValue: PropTypes.func.isRequired,\n value: PropTypes.bool,\n config: PropTypes.object.isRequired,\n field: PropTypes.any,\n customProps: PropTypes.object,\n readonly: PropTypes.bool,\n // from fieldSettings:\n labelYes: PropTypes.string,\n labelNo: PropTypes.string\n};\nBooleanWidget.defaultProps = {\n labelYes: null,\n labelNo: null\n};\nexport { BooleanWidget as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Select } from \"antd\";\nimport { calcTextWidth, SELECT_WIDTH_OFFSET_RIGHT } from \"../../utils/domUtils\";\nimport omit from \"lodash/omit\";\nimport { Utils } from \"@react-awesome-query-builder/ui\";\nvar useOnPropsChanged = Utils.ReactUtils.useOnPropsChanged;\nvar mapListValues = Utils.ListUtils.mapListValues;\nvar Option = Select.Option;\nvar MultiSelectWidget = /*#__PURE__*/function (_Component) {\n _inherits(MultiSelectWidget, _Component);\n var _super = _createSuper(MultiSelectWidget);\n function MultiSelectWidget(props) {\n var _this;\n _classCallCheck(this, MultiSelectWidget);\n _this = _super.call(this, props);\n _this.handleChange = function (val) {\n if (val && !val.length) val = undefined; //not allow []\n _this.props.setValue(val);\n };\n _this.filterOption = function (input, option) {\n var dataForFilter = option.children || option.value;\n return dataForFilter.toLowerCase().indexOf(input.toLowerCase()) >= 0;\n };\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.onPropsChanged(props);\n return _this;\n }\n _createClass(MultiSelectWidget, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var listValues = nextProps.listValues;\n var optionsMaxWidth = 0;\n mapListValues(listValues, function (_ref) {\n var title = _ref.title,\n value = _ref.value;\n optionsMaxWidth = Math.max(optionsMaxWidth, calcTextWidth(title, null));\n });\n if (!isNaN(optionsMaxWidth) && optionsMaxWidth) {\n this.optionsMaxWidth = optionsMaxWidth;\n }\n this.options = mapListValues(listValues, function (_ref2) {\n var title = _ref2.title,\n value = _ref2.value;\n return /*#__PURE__*/React.createElement(Option, {\n key: value,\n value: value\n }, title);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n placeholder = _this$props.placeholder,\n allowCustomValues = _this$props.allowCustomValues,\n customProps = _this$props.customProps,\n value = _this$props.value,\n readonly = _this$props.readonly;\n var renderSize = config.settings.renderSize;\n var placeholderWidth = calcTextWidth(placeholder);\n var dropdownEmptyWidth = placeholderWidth ? placeholderWidth + SELECT_WIDTH_OFFSET_RIGHT : null;\n var aValue = value && value.length ? value : undefined;\n var width = aValue ? null : dropdownEmptyWidth;\n var dropdownWidth = this.optionsMaxWidth ? this.optionsMaxWidth + SELECT_WIDTH_OFFSET_RIGHT : null;\n var customSelectProps = omit(customProps, [\"showCheckboxes\"]);\n return /*#__PURE__*/React.createElement(Select, _extends({\n disabled: readonly,\n mode: allowCustomValues ? \"tags\" : \"multiple\",\n style: {\n minWidth: width,\n width: width\n },\n dropdownStyle: {\n width: dropdownWidth\n },\n key: \"widget-multiselect\",\n popupMatchSelectWidth: false,\n placeholder: placeholder,\n size: renderSize,\n value: aValue,\n onChange: this.handleChange,\n filterOption: this.filterOption\n }, customSelectProps), this.options);\n }\n }]);\n return MultiSelectWidget;\n}(Component);\nMultiSelectWidget.propTypes = {\n setValue: PropTypes.func.isRequired,\n config: PropTypes.object.isRequired,\n value: PropTypes.array,\n field: PropTypes.any,\n placeholder: PropTypes.string,\n customProps: PropTypes.object,\n fieldDefinition: PropTypes.object,\n readonly: PropTypes.bool,\n // from fieldSettings:\n listValues: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n allowCustomValues: PropTypes.bool\n};\nexport { MultiSelectWidget as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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; } } }; }\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); }\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; }\nimport React, { useMemo, useCallback } from \"react\";\nimport { Select, Divider, Tooltip } from \"antd\";\nimport { calcTextWidth, SELECT_WIDTH_OFFSET_RIGHT } from \"../../utils/domUtils\";\nimport { Hooks, Utils } from \"@react-awesome-query-builder/ui\";\nvar fixListValuesGroupOrder = Utils.Autocomplete.fixListValuesGroupOrder;\nvar useListValuesAutocomplete = Hooks.useListValuesAutocomplete;\n\n// see type ListItem\nvar mapListItemToOptionKeys = {\n value: \"value\",\n title: \"label\",\n groupTitle: \"grouplabel\"\n};\nexport default (function (props) {\n var config = props.config,\n placeholder = props.placeholder,\n allowCustomValues = props.allowCustomValues,\n customProps = props.customProps,\n value = props.value,\n readonly = props.readonly,\n multiple = props.multiple,\n useAsyncSearch = props.useAsyncSearch;\n\n // hook\n var _useListValuesAutocom = useListValuesAutocomplete(props, {\n debounceTimeout: 100,\n multiple: multiple,\n uif: \"antd\"\n }),\n open = _useListValuesAutocom.open,\n onDropdownVisibleChange = _useListValuesAutocom.onDropdownVisibleChange,\n onChange = _useListValuesAutocom.onChange,\n isSpecialValue = _useListValuesAutocom.isSpecialValue,\n onSearch = _useListValuesAutocom.onSearch,\n inputValue = _useListValuesAutocom.inputValue,\n options = _useListValuesAutocom.options,\n isInitialLoading = _useListValuesAutocom.isInitialLoading,\n isLoading = _useListValuesAutocom.isLoading,\n aPlaceholder = _useListValuesAutocom.aPlaceholder,\n extendOptions = _useListValuesAutocom.extendOptions,\n getOptionDisabled = _useListValuesAutocom.getOptionDisabled,\n getOptionIsCustom = _useListValuesAutocom.getOptionIsCustom,\n getOptionLabel = _useListValuesAutocom.getOptionLabel,\n onInputChange = _useListValuesAutocom.onInputChange;\n var filteredOptions = extendOptions(options);\n var optionsMaxWidth = useMemo(function () {\n return filteredOptions.reduce(function (max, option) {\n return Math.max(max, calcTextWidth(option.title, null));\n }, 0);\n }, [options]);\n var _config$settings = config.settings,\n defaultSelectWidth = _config$settings.defaultSelectWidth,\n defaultSearchWidth = _config$settings.defaultSearchWidth,\n renderSize = _config$settings.renderSize;\n var placeholderWidth = calcTextWidth(placeholder);\n var isEmptyValue = multiple ? !(value !== null && value !== void 0 && value.length) : !value;\n var aValue = !isEmptyValue ? value : multiple ? [] : undefined;\n var width = aValue || !placeholderWidth ? null : placeholderWidth + SELECT_WIDTH_OFFSET_RIGHT;\n var dropdownWidth = optionsMaxWidth && !isNaN(optionsMaxWidth) ? optionsMaxWidth + SELECT_WIDTH_OFFSET_RIGHT : null;\n var minWidth = width || defaultSelectWidth;\n var isClearAllClicked = React.useRef(false);\n var style = {\n width: multiple ? undefined : minWidth,\n minWidth: minWidth\n };\n var dropdownStyle = {\n width: dropdownWidth\n };\n var mode = !multiple ? undefined : allowCustomValues ? \"multiple\" : \"multiple\";\n var dynamicPlaceholder = !readonly ? aPlaceholder : \"\";\n var nestByGroup = function nestByGroup(opts) {\n var fix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var newOpts = opts;\n if (fix) {\n newOpts = fixListValuesGroupOrder(newOpts);\n }\n var nestedOpts = [];\n var _iterator = _createForOfIteratorHelper(newOpts),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var o = _step.value;\n var groupTitle = o.groupTitle;\n delete o.groupTitle;\n if (groupTitle) {\n o.grouplabel = groupTitle;\n var targetGroup = void 0;\n var lastO = nestedOpts[nestedOpts.length - 1];\n if (lastO !== null && lastO !== void 0 && lastO.options && lastO.label === groupTitle) {\n targetGroup = lastO;\n } else {\n targetGroup = {\n label: groupTitle,\n options: []\n };\n nestedOpts.push(targetGroup);\n }\n targetGroup.options.push(o);\n } else {\n nestedOpts.push(o);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return nestedOpts;\n };\n var renderOptionLabel = function renderOptionLabel(option) {\n var tooltip = option.tooltip;\n var label = getOptionLabel(option);\n if (tooltip) {\n label = /*#__PURE__*/React.createElement(Tooltip, {\n title: tooltip\n }, label);\n }\n return label;\n };\n\n // rendering special 'Load more' option has side effect: on change rc-select will save its title as internal value in own state\n var optionsToRender = nestByGroup(filteredOptions === null || filteredOptions === void 0 ? void 0 : filteredOptions.filter(function (option) {\n return !option.specialValue;\n }).map(function (option) {\n return {\n label: getOptionIsCustom(option) ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"customSelectOption\"\n }, getOptionLabel(option)) : renderOptionLabel(option),\n value: option.value,\n groupTitle: option.groupTitle,\n disabled: getOptionDisabled(option)\n };\n }));\n var onSpecialClick = function onSpecialClick(specialValue) {\n return function () {\n var option = filteredOptions.find(function (opt) {\n return opt.specialValue == specialValue;\n });\n onChange(null, specialValue, option);\n };\n };\n var specialOptions = filteredOptions === null || filteredOptions === void 0 ? void 0 : filteredOptions.filter(function (option) {\n return !!option.specialValue;\n }).map(function (option) {\n return /*#__PURE__*/React.createElement(\"a\", {\n style: {\n padding: \"5px 10px\",\n display: \"block\",\n cursor: \"pointer\"\n },\n key: option.specialValue,\n disabled: getOptionDisabled(option),\n onClick: onSpecialClick(option.specialValue)\n }, getOptionLabel(option));\n });\n var aOnSelect = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(newValue, option) {\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!isSpecialValue(option)) {\n _context.next = 5;\n break;\n }\n _context.next = 3;\n return onChange(null, newValue, option);\n case 3:\n _context.next = 8;\n break;\n case 5:\n if (!multiple) {\n _context.next = 8;\n break;\n }\n _context.next = 8;\n return onChange(null, newValue, option);\n case 8:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function aOnSelect(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }();\n var aOnClear = function aOnClear() {\n if (open) {\n // tip: if closed, search is hidden, so let's clear tags AND search value\n isClearAllClicked.current = true;\n }\n };\n var aOnChange = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(newValue, option) {\n var isAddFromSearch, shouldIgnore;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n // For multiple `newValue` is array of strings, `option` is array of {value, children}\n // For single `newValue` is string/undefined, `option` is {value, children}/undefined\n // ! Custom option is always `{}`\n //\n // For multiple called on:\n // - click (x) at right (clear all)\n // - tag removal\n // - option selection (`aOnSelect` is also called after)\n // - trying to add new tag from search input (for mode \"tags\" - unwanted!)\n // \n // For single called on:\n // - click (x) at right (clear all)\n // - option selection (`aOnSelect` is also called after)\n // ! NOT when trying to add new tag\n isAddFromSearch = multiple && newValue.length && newValue.length > aValue.length && newValue[newValue.length - 1] == inputValue;\n shouldIgnore = isSpecialValue(option) // use onSelect instead\n || mode === \"tags\" && isAddFromSearch // obsolete, we don't use tags mode\n || isClearAllClicked.current && inputValue;\n isClearAllClicked.current = false;\n if (shouldIgnore) {\n _context2.next = 6;\n break;\n }\n _context2.next = 6;\n return onChange(null, newValue, option);\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return function aOnChange(_x3, _x4) {\n return _ref2.apply(this, arguments);\n };\n }();\n\n // to keep compatibility with antD\n var aOnSearch = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(newInputValue) {\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n if (isClearAllClicked.current) {\n isClearAllClicked.current = false;\n }\n // if (newInputValue === \"\" && !open) {\n // return; // ?\n // }\n _context3.next = 3;\n return onInputChange(null, newInputValue);\n case 3:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n return function aOnSearch(_x5) {\n return _ref3.apply(this, arguments);\n };\n }();\n var dropdownRender = useCallback(function (menu) {\n return /*#__PURE__*/React.createElement(\"div\", null, menu, specialOptions.length > 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Divider, {\n style: {\n margin: \"0px\"\n }\n }), /*#__PURE__*/React.createElement(\"div\", {\n style: {\n display: \"flex\",\n flexDirection: \"column\"\n }\n }, specialOptions)));\n }, [filteredOptions]);\n var filterOption = useCallback(function (input, option) {\n var keysForFilter = config.settings.listKeysForSearch.map(function (k) {\n return mapListItemToOptionKeys[k];\n });\n var valueForFilter = keysForFilter.map(function (k) {\n return typeof option[k] == \"string\" ? option[k] : \"\";\n }).join(\"\\0\");\n var matches = valueForFilter.toLowerCase().indexOf(input.toLowerCase()) >= 0;\n return matches;\n }, [config]);\n return /*#__PURE__*/React.createElement(Select, _extends({\n filterOption: useAsyncSearch ? false : filterOption,\n dropdownRender: dropdownRender,\n allowClear: true,\n notFoundContent: isLoading ? \"Loading...\" : \"Not found\",\n disabled: readonly,\n mode: mode,\n style: (customProps === null || customProps === void 0 ? void 0 : customProps.style) || style,\n dropdownStyle: (customProps === null || customProps === void 0 ? void 0 : customProps.dropdownStyle) || dropdownStyle,\n key: \"widget-autocomplete\",\n popupMatchSelectWidth: (customProps === null || customProps === void 0 ? void 0 : customProps.popupMatchSelectWidth) || (customProps === null || customProps === void 0 ? void 0 : customProps.dropdownMatchSelectWidth) || false,\n placeholder: (customProps === null || customProps === void 0 ? void 0 : customProps.placeholder) || dynamicPlaceholder,\n onDropdownVisibleChange: onDropdownVisibleChange,\n onChange: aOnChange,\n onClear: aOnClear,\n onSelect: aOnSelect,\n onSearch: aOnSearch,\n showSearch: true,\n size: renderSize,\n loading: isLoading,\n value: aValue,\n searchValue: inputValue,\n open: open,\n options: optionsToRender\n }, customProps));\n});","import * as React from 'react';\nvar LegacySelectContext = /*#__PURE__*/React.createContext(null);\nexport default LegacySelectContext;","import * as React from 'react';\nvar TreeSelectContext = /*#__PURE__*/React.createContext(null);\nexport default TreeSelectContext;","export function toArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n\n return value !== undefined ? [value] : [];\n}\nexport function fillFieldNames(fieldNames) {\n var _ref = fieldNames || {},\n label = _ref.label,\n value = _ref.value,\n children = _ref.children;\n\n var mergedValue = value || 'value';\n return {\n _title: label ? [label] : ['title', 'label'],\n value: mergedValue,\n key: mergedValue,\n children: children || 'children'\n };\n}\nexport function isCheckDisabled(node) {\n return !node || node.disabled || node.disableCheckbox || node.checkable === false;\n}\n/** Loop fetch all the keys exist in the tree */\n\nexport function getAllKeys(treeData, fieldNames) {\n var keys = [];\n\n function dig(list) {\n list.forEach(function (item) {\n var children = item[fieldNames.children];\n\n if (children) {\n keys.push(item[fieldNames.value]);\n dig(children);\n }\n });\n }\n\n dig(treeData);\n return keys;\n}\nexport function isNil(val) {\n return val === null || val === undefined;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport { useBaseProps } from 'rc-select';\nimport Tree from 'rc-tree';\nimport LegacyContext from \"./LegacyContext\";\nimport TreeSelectContext from \"./TreeSelectContext\";\nimport { getAllKeys, isCheckDisabled } from \"./utils/valueUtil\";\nvar HIDDEN_STYLE = {\n width: 0,\n height: 0,\n display: 'flex',\n overflow: 'hidden',\n opacity: 0,\n border: 0,\n padding: 0,\n margin: 0\n};\n\nvar OptionList = function OptionList(_, ref) {\n var _useBaseProps = useBaseProps(),\n prefixCls = _useBaseProps.prefixCls,\n multiple = _useBaseProps.multiple,\n searchValue = _useBaseProps.searchValue,\n toggleOpen = _useBaseProps.toggleOpen,\n open = _useBaseProps.open,\n notFoundContent = _useBaseProps.notFoundContent;\n\n var _React$useContext = React.useContext(TreeSelectContext),\n virtual = _React$useContext.virtual,\n listHeight = _React$useContext.listHeight,\n listItemHeight = _React$useContext.listItemHeight,\n treeData = _React$useContext.treeData,\n fieldNames = _React$useContext.fieldNames,\n onSelect = _React$useContext.onSelect,\n dropdownMatchSelectWidth = _React$useContext.dropdownMatchSelectWidth,\n treeExpandAction = _React$useContext.treeExpandAction;\n\n var _React$useContext2 = React.useContext(LegacyContext),\n checkable = _React$useContext2.checkable,\n checkedKeys = _React$useContext2.checkedKeys,\n halfCheckedKeys = _React$useContext2.halfCheckedKeys,\n treeExpandedKeys = _React$useContext2.treeExpandedKeys,\n treeDefaultExpandAll = _React$useContext2.treeDefaultExpandAll,\n treeDefaultExpandedKeys = _React$useContext2.treeDefaultExpandedKeys,\n onTreeExpand = _React$useContext2.onTreeExpand,\n treeIcon = _React$useContext2.treeIcon,\n showTreeIcon = _React$useContext2.showTreeIcon,\n switcherIcon = _React$useContext2.switcherIcon,\n treeLine = _React$useContext2.treeLine,\n treeNodeFilterProp = _React$useContext2.treeNodeFilterProp,\n loadData = _React$useContext2.loadData,\n treeLoadedKeys = _React$useContext2.treeLoadedKeys,\n treeMotion = _React$useContext2.treeMotion,\n onTreeLoad = _React$useContext2.onTreeLoad,\n keyEntities = _React$useContext2.keyEntities;\n\n var treeRef = React.useRef();\n var memoTreeData = useMemo(function () {\n return treeData;\n }, [open, treeData], function (prev, next) {\n return next[0] && prev[1] !== next[1];\n }); // ========================== Values ==========================\n\n var mergedCheckedKeys = React.useMemo(function () {\n if (!checkable) {\n return null;\n }\n\n return {\n checked: checkedKeys,\n halfChecked: halfCheckedKeys\n };\n }, [checkable, checkedKeys, halfCheckedKeys]); // ========================== Scroll ==========================\n\n React.useEffect(function () {\n // Single mode should scroll to current key\n if (open && !multiple && checkedKeys.length) {\n var _treeRef$current;\n\n (_treeRef$current = treeRef.current) === null || _treeRef$current === void 0 ? void 0 : _treeRef$current.scrollTo({\n key: checkedKeys[0]\n });\n }\n }, [open]); // ========================== Search ==========================\n\n var lowerSearchValue = String(searchValue).toLowerCase();\n\n var filterTreeNode = function filterTreeNode(treeNode) {\n if (!lowerSearchValue) {\n return false;\n }\n\n return String(treeNode[treeNodeFilterProp]).toLowerCase().includes(lowerSearchValue);\n }; // =========================== Keys ===========================\n\n\n var _React$useState = React.useState(treeDefaultExpandedKeys),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n expandedKeys = _React$useState2[0],\n setExpandedKeys = _React$useState2[1];\n\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n searchExpandedKeys = _React$useState4[0],\n setSearchExpandedKeys = _React$useState4[1];\n\n var mergedExpandedKeys = React.useMemo(function () {\n if (treeExpandedKeys) {\n return _toConsumableArray(treeExpandedKeys);\n }\n\n return searchValue ? searchExpandedKeys : expandedKeys;\n }, [expandedKeys, searchExpandedKeys, treeExpandedKeys, searchValue]);\n React.useEffect(function () {\n if (searchValue) {\n setSearchExpandedKeys(getAllKeys(treeData, fieldNames));\n }\n }, [searchValue]);\n\n var onInternalExpand = function onInternalExpand(keys) {\n setExpandedKeys(keys);\n setSearchExpandedKeys(keys);\n\n if (onTreeExpand) {\n onTreeExpand(keys);\n }\n }; // ========================== Events ==========================\n\n\n var onListMouseDown = function onListMouseDown(event) {\n event.preventDefault();\n };\n\n var onInternalSelect = function onInternalSelect(__, info) {\n var node = info.node;\n\n if (checkable && isCheckDisabled(node)) {\n return;\n }\n\n onSelect(node.key, {\n selected: !checkedKeys.includes(node.key)\n });\n\n if (!multiple) {\n toggleOpen(false);\n }\n }; // ========================= Keyboard =========================\n\n\n var _React$useState5 = React.useState(null),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n activeKey = _React$useState6[0],\n setActiveKey = _React$useState6[1];\n\n var activeEntity = keyEntities[activeKey];\n React.useImperativeHandle(ref, function () {\n var _treeRef$current2;\n\n return {\n scrollTo: (_treeRef$current2 = treeRef.current) === null || _treeRef$current2 === void 0 ? void 0 : _treeRef$current2.scrollTo,\n onKeyDown: function onKeyDown(event) {\n var _treeRef$current3;\n\n var which = event.which;\n\n switch (which) {\n // >>> Arrow keys\n case KeyCode.UP:\n case KeyCode.DOWN:\n case KeyCode.LEFT:\n case KeyCode.RIGHT:\n (_treeRef$current3 = treeRef.current) === null || _treeRef$current3 === void 0 ? void 0 : _treeRef$current3.onKeyDown(event);\n break;\n // >>> Select item\n\n case KeyCode.ENTER:\n {\n if (activeEntity) {\n var _ref = (activeEntity === null || activeEntity === void 0 ? void 0 : activeEntity.node) || {},\n selectable = _ref.selectable,\n value = _ref.value;\n\n if (selectable !== false) {\n onInternalSelect(null, {\n node: {\n key: activeKey\n },\n selected: !checkedKeys.includes(value)\n });\n }\n }\n\n break;\n }\n // >>> Close\n\n case KeyCode.ESC:\n {\n toggleOpen(false);\n }\n }\n },\n onKeyUp: function onKeyUp() {}\n };\n }); // ========================== Render ==========================\n\n if (memoTreeData.length === 0) {\n return /*#__PURE__*/React.createElement(\"div\", {\n role: \"listbox\",\n className: \"\".concat(prefixCls, \"-empty\"),\n onMouseDown: onListMouseDown\n }, notFoundContent);\n }\n\n var treeProps = {\n fieldNames: fieldNames\n };\n\n if (treeLoadedKeys) {\n treeProps.loadedKeys = treeLoadedKeys;\n }\n\n if (mergedExpandedKeys) {\n treeProps.expandedKeys = mergedExpandedKeys;\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n onMouseDown: onListMouseDown\n }, activeEntity && open && /*#__PURE__*/React.createElement(\"span\", {\n style: HIDDEN_STYLE,\n \"aria-live\": \"assertive\"\n }, activeEntity.node.value), /*#__PURE__*/React.createElement(Tree, _extends({\n ref: treeRef,\n focusable: false,\n prefixCls: \"\".concat(prefixCls, \"-tree\"),\n treeData: memoTreeData,\n height: listHeight,\n itemHeight: listItemHeight,\n virtual: virtual !== false && dropdownMatchSelectWidth !== false,\n multiple: multiple,\n icon: treeIcon,\n showIcon: showTreeIcon,\n switcherIcon: switcherIcon,\n showLine: treeLine,\n loadData: searchValue ? null : loadData,\n motion: treeMotion,\n activeKey: activeKey // We handle keys by out instead tree self\n ,\n checkable: checkable,\n checkStrictly: true,\n checkedKeys: mergedCheckedKeys,\n selectedKeys: !checkable ? checkedKeys : [],\n defaultExpandAll: treeDefaultExpandAll\n }, treeProps, {\n // Proxy event out\n onActiveChange: setActiveKey,\n onSelect: onInternalSelect,\n onCheck: onInternalSelect,\n onExpand: onInternalExpand,\n onLoad: onTreeLoad,\n filterTreeNode: filterTreeNode,\n expandAction: treeExpandAction\n })));\n};\n\nvar RefOptionList = /*#__PURE__*/React.forwardRef(OptionList);\nRefOptionList.displayName = 'OptionList';\nexport default RefOptionList;","/* istanbul ignore file */\n\n/** This is a placeholder, not real render in dom */\nvar TreeNode = function TreeNode() {\n return null;\n};\n\nexport default TreeNode;","import { isCheckDisabled } from \"./valueUtil\";\nexport var SHOW_ALL = 'SHOW_ALL';\nexport var SHOW_PARENT = 'SHOW_PARENT';\nexport var SHOW_CHILD = 'SHOW_CHILD';\nexport function formatStrategyValues(values, strategy, keyEntities, fieldNames) {\n var valueSet = new Set(values);\n\n if (strategy === SHOW_CHILD) {\n return values.filter(function (key) {\n var entity = keyEntities[key];\n\n if (entity && entity.children && entity.children.some(function (_ref) {\n var node = _ref.node;\n return valueSet.has(node[fieldNames.value]);\n }) && entity.children.every(function (_ref2) {\n var node = _ref2.node;\n return isCheckDisabled(node) || valueSet.has(node[fieldNames.value]);\n })) {\n return false;\n }\n\n return true;\n });\n }\n\n if (strategy === SHOW_PARENT) {\n return values.filter(function (key) {\n var entity = keyEntities[key];\n var parent = entity ? entity.parent : null;\n\n if (parent && !isCheckDisabled(parent.node) && valueSet.has(parent.key)) {\n return false;\n }\n\n return true;\n });\n }\n\n return values;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\", \"value\"];\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport warning from \"rc-util/es/warning\";\nimport TreeNode from \"../TreeNode\";\nexport function convertChildrenToData(nodes) {\n return toArray(nodes).map(function (node) {\n if (! /*#__PURE__*/React.isValidElement(node) || !node.type) {\n return null;\n }\n\n var _ref = node,\n key = _ref.key,\n _ref$props = _ref.props,\n children = _ref$props.children,\n value = _ref$props.value,\n restProps = _objectWithoutProperties(_ref$props, _excluded);\n\n var data = _objectSpread({\n key: key,\n value: value\n }, restProps);\n\n var childData = convertChildrenToData(children);\n\n if (childData.length) {\n data.children = childData;\n }\n\n return data;\n }).filter(function (data) {\n return data;\n });\n}\nexport function fillLegacyProps(dataNode) {\n if (!dataNode) {\n return dataNode;\n }\n\n var cloneNode = _objectSpread({}, dataNode);\n\n if (!('props' in cloneNode)) {\n Object.defineProperty(cloneNode, 'props', {\n get: function get() {\n warning(false, 'New `rc-tree-select` not support return node instance as argument anymore. Please consider to remove `props` access.');\n return cloneNode;\n }\n });\n }\n\n return cloneNode;\n}\nexport function fillAdditionalInfo(extra, triggerValue, checkedValues, treeData, showPosition, fieldNames) {\n var triggerNode = null;\n var nodeList = null;\n\n function generateMap() {\n function dig(list) {\n var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '0';\n var parentIncluded = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n return list.map(function (option, index) {\n var pos = \"\".concat(level, \"-\").concat(index);\n var value = option[fieldNames.value];\n var included = checkedValues.includes(value);\n var children = dig(option[fieldNames.children] || [], pos, included);\n var node = /*#__PURE__*/React.createElement(TreeNode, option, children.map(function (child) {\n return child.node;\n })); // Link with trigger node\n\n if (triggerValue === value) {\n triggerNode = node;\n }\n\n if (included) {\n var checkedNode = {\n pos: pos,\n node: node,\n children: children\n };\n\n if (!parentIncluded) {\n nodeList.push(checkedNode);\n }\n\n return checkedNode;\n }\n\n return null;\n }).filter(function (node) {\n return node;\n });\n }\n\n if (!nodeList) {\n nodeList = [];\n dig(treeData); // Sort to keep the checked node length\n\n nodeList.sort(function (_ref2, _ref3) {\n var val1 = _ref2.node.props.value;\n var val2 = _ref3.node.props.value;\n var index1 = checkedValues.indexOf(val1);\n var index2 = checkedValues.indexOf(val2);\n return index1 - index2;\n });\n }\n }\n\n Object.defineProperty(extra, 'triggerNode', {\n get: function get() {\n warning(false, '`triggerNode` is deprecated. Please consider decoupling data with node.');\n generateMap();\n return triggerNode;\n }\n });\n Object.defineProperty(extra, 'allCheckedNodes', {\n get: function get() {\n warning(false, '`allCheckedNodes` is deprecated. Please consider decoupling data with node.');\n generateMap();\n\n if (showPosition) {\n return nodeList;\n }\n\n return nodeList.map(function (_ref4) {\n var node = _ref4.node;\n return node;\n });\n }\n });\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport { convertChildrenToData } from \"../utils/legacyUtil\";\n\nfunction parseSimpleTreeData(treeData, _ref) {\n var id = _ref.id,\n pId = _ref.pId,\n rootPId = _ref.rootPId;\n var keyNodes = {};\n var rootNodeList = []; // Fill in the map\n\n var nodeList = treeData.map(function (node) {\n var clone = _objectSpread({}, node);\n\n var key = clone[id];\n keyNodes[key] = clone;\n clone.key = clone.key || key;\n return clone;\n }); // Connect tree\n\n nodeList.forEach(function (node) {\n var parentKey = node[pId];\n var parent = keyNodes[parentKey]; // Fill parent\n\n if (parent) {\n parent.children = parent.children || [];\n parent.children.push(node);\n } // Fill root tree node\n\n\n if (parentKey === rootPId || !parent && rootPId === null) {\n rootNodeList.push(node);\n }\n });\n return rootNodeList;\n}\n/**\n * Convert `treeData` or `children` into formatted `treeData`.\n * Will not re-calculate if `treeData` or `children` not change.\n */\n\n\nexport default function useTreeData(treeData, children, simpleMode) {\n return React.useMemo(function () {\n if (treeData) {\n return simpleMode ? parseSimpleTreeData(treeData, _objectSpread({\n id: 'id',\n pId: 'pId',\n rootPId: null\n }, simpleMode !== true ? simpleMode : {})) : treeData;\n }\n\n return convertChildrenToData(children);\n }, [children, simpleMode, treeData]);\n}","import * as React from 'react';\n/**\n * Same as `React.useCallback` but always return a memoized function\n * but redirect to real function.\n */\n\nexport default function useRefFunc(callback) {\n var funcRef = React.useRef();\n funcRef.current = callback;\n var cacheFn = React.useCallback(function () {\n return funcRef.current.apply(funcRef, arguments);\n }, []);\n return cacheFn;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"id\", \"prefixCls\", \"value\", \"defaultValue\", \"onChange\", \"onSelect\", \"onDeselect\", \"searchValue\", \"inputValue\", \"onSearch\", \"autoClearSearchValue\", \"filterTreeNode\", \"treeNodeFilterProp\", \"showCheckedStrategy\", \"treeNodeLabelProp\", \"multiple\", \"treeCheckable\", \"treeCheckStrictly\", \"labelInValue\", \"fieldNames\", \"treeDataSimpleMode\", \"treeData\", \"children\", \"loadData\", \"treeLoadedKeys\", \"onTreeLoad\", \"treeDefaultExpandAll\", \"treeExpandedKeys\", \"treeDefaultExpandedKeys\", \"onTreeExpand\", \"treeExpandAction\", \"virtual\", \"listHeight\", \"listItemHeight\", \"onDropdownVisibleChange\", \"dropdownMatchSelectWidth\", \"treeLine\", \"treeIcon\", \"showTreeIcon\", \"switcherIcon\", \"treeMotion\"];\nimport * as React from 'react';\nimport { BaseSelect } from 'rc-select';\nimport { conductCheck } from \"rc-tree/es/utils/conductUtil\";\nimport useId from \"rc-select/es/hooks/useId\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport OptionList from \"./OptionList\";\nimport TreeNode from \"./TreeNode\";\nimport { formatStrategyValues, SHOW_ALL, SHOW_PARENT, SHOW_CHILD } from \"./utils/strategyUtil\";\nimport TreeSelectContext from \"./TreeSelectContext\";\nimport LegacyContext from \"./LegacyContext\";\nimport useTreeData from \"./hooks/useTreeData\";\nimport { toArray, fillFieldNames, isNil } from \"./utils/valueUtil\";\nimport useCache from \"./hooks/useCache\";\nimport useRefFunc from \"./hooks/useRefFunc\";\nimport useDataEntities from \"./hooks/useDataEntities\";\nimport { fillAdditionalInfo, fillLegacyProps } from \"./utils/legacyUtil\";\nimport useCheckedKeys from \"./hooks/useCheckedKeys\";\nimport useFilterTreeData from \"./hooks/useFilterTreeData\";\nimport warningProps from \"./utils/warningPropsUtil\";\nimport warning from \"rc-util/es/warning\";\n\nfunction isRawValue(value) {\n return !value || _typeof(value) !== 'object';\n}\n\nvar TreeSelect = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var id = props.id,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-tree-select' : _props$prefixCls,\n value = props.value,\n defaultValue = props.defaultValue,\n onChange = props.onChange,\n onSelect = props.onSelect,\n onDeselect = props.onDeselect,\n searchValue = props.searchValue,\n inputValue = props.inputValue,\n onSearch = props.onSearch,\n _props$autoClearSearc = props.autoClearSearchValue,\n autoClearSearchValue = _props$autoClearSearc === void 0 ? true : _props$autoClearSearc,\n filterTreeNode = props.filterTreeNode,\n _props$treeNodeFilter = props.treeNodeFilterProp,\n treeNodeFilterProp = _props$treeNodeFilter === void 0 ? 'value' : _props$treeNodeFilter,\n _props$showCheckedStr = props.showCheckedStrategy,\n showCheckedStrategy = _props$showCheckedStr === void 0 ? SHOW_CHILD : _props$showCheckedStr,\n treeNodeLabelProp = props.treeNodeLabelProp,\n multiple = props.multiple,\n treeCheckable = props.treeCheckable,\n treeCheckStrictly = props.treeCheckStrictly,\n labelInValue = props.labelInValue,\n fieldNames = props.fieldNames,\n treeDataSimpleMode = props.treeDataSimpleMode,\n treeData = props.treeData,\n children = props.children,\n loadData = props.loadData,\n treeLoadedKeys = props.treeLoadedKeys,\n onTreeLoad = props.onTreeLoad,\n treeDefaultExpandAll = props.treeDefaultExpandAll,\n treeExpandedKeys = props.treeExpandedKeys,\n treeDefaultExpandedKeys = props.treeDefaultExpandedKeys,\n onTreeExpand = props.onTreeExpand,\n treeExpandAction = props.treeExpandAction,\n virtual = props.virtual,\n _props$listHeight = props.listHeight,\n listHeight = _props$listHeight === void 0 ? 200 : _props$listHeight,\n _props$listItemHeight = props.listItemHeight,\n listItemHeight = _props$listItemHeight === void 0 ? 20 : _props$listItemHeight,\n onDropdownVisibleChange = props.onDropdownVisibleChange,\n _props$dropdownMatchS = props.dropdownMatchSelectWidth,\n dropdownMatchSelectWidth = _props$dropdownMatchS === void 0 ? true : _props$dropdownMatchS,\n treeLine = props.treeLine,\n treeIcon = props.treeIcon,\n showTreeIcon = props.showTreeIcon,\n switcherIcon = props.switcherIcon,\n treeMotion = props.treeMotion,\n restProps = _objectWithoutProperties(props, _excluded);\n\n var mergedId = useId(id);\n var treeConduction = treeCheckable && !treeCheckStrictly;\n var mergedCheckable = treeCheckable || treeCheckStrictly;\n var mergedLabelInValue = treeCheckStrictly || labelInValue;\n var mergedMultiple = mergedCheckable || multiple;\n\n var _useMergedState = useMergedState(defaultValue, {\n value: value\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n internalValue = _useMergedState2[0],\n setInternalValue = _useMergedState2[1]; // ========================== Warning ===========================\n\n\n if (process.env.NODE_ENV !== 'production') {\n warningProps(props);\n } // ========================= FieldNames =========================\n\n\n var mergedFieldNames = React.useMemo(function () {\n return fillFieldNames(fieldNames);\n },\n /* eslint-disable react-hooks/exhaustive-deps */\n [JSON.stringify(fieldNames)]\n /* eslint-enable react-hooks/exhaustive-deps */\n ); // =========================== Search ===========================\n\n var _useMergedState3 = useMergedState('', {\n value: searchValue !== undefined ? searchValue : inputValue,\n postState: function postState(search) {\n return search || '';\n }\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n mergedSearchValue = _useMergedState4[0],\n setSearchValue = _useMergedState4[1];\n\n var onInternalSearch = function onInternalSearch(searchText) {\n setSearchValue(searchText);\n onSearch === null || onSearch === void 0 ? void 0 : onSearch(searchText);\n }; // ============================ Data ============================\n // `useTreeData` only do convert of `children` or `simpleMode`.\n // Else will return origin `treeData` for perf consideration.\n // Do not do anything to loop the data.\n\n\n var mergedTreeData = useTreeData(treeData, children, treeDataSimpleMode);\n\n var _useDataEntities = useDataEntities(mergedTreeData, mergedFieldNames),\n keyEntities = _useDataEntities.keyEntities,\n valueEntities = _useDataEntities.valueEntities;\n /** Get `missingRawValues` which not exist in the tree yet */\n\n\n var splitRawValues = React.useCallback(function (newRawValues) {\n var missingRawValues = [];\n var existRawValues = []; // Keep missing value in the cache\n\n newRawValues.forEach(function (val) {\n if (valueEntities.has(val)) {\n existRawValues.push(val);\n } else {\n missingRawValues.push(val);\n }\n });\n return {\n missingRawValues: missingRawValues,\n existRawValues: existRawValues\n };\n }, [valueEntities]); // Filtered Tree\n\n var filteredTreeData = useFilterTreeData(mergedTreeData, mergedSearchValue, {\n fieldNames: mergedFieldNames,\n treeNodeFilterProp: treeNodeFilterProp,\n filterTreeNode: filterTreeNode\n }); // =========================== Label ============================\n\n var getLabel = React.useCallback(function (item) {\n if (item) {\n if (treeNodeLabelProp) {\n return item[treeNodeLabelProp];\n } // Loop from fieldNames\n\n\n var titleList = mergedFieldNames._title;\n\n for (var i = 0; i < titleList.length; i += 1) {\n var title = item[titleList[i]];\n\n if (title !== undefined) {\n return title;\n }\n }\n }\n }, [mergedFieldNames, treeNodeLabelProp]); // ========================= Wrap Value =========================\n\n var toLabeledValues = React.useCallback(function (draftValues) {\n var values = toArray(draftValues);\n return values.map(function (val) {\n if (isRawValue(val)) {\n return {\n value: val\n };\n }\n\n return val;\n });\n }, []);\n var convert2LabelValues = React.useCallback(function (draftValues) {\n var values = toLabeledValues(draftValues);\n return values.map(function (item) {\n var rawLabel = item.label;\n var rawValue = item.value,\n rawHalfChecked = item.halfChecked;\n var rawDisabled;\n var entity = valueEntities.get(rawValue); // Fill missing label & status\n\n if (entity) {\n var _rawLabel;\n\n rawLabel = (_rawLabel = rawLabel) !== null && _rawLabel !== void 0 ? _rawLabel : getLabel(entity.node);\n rawDisabled = entity.node.disabled;\n } else if (rawLabel === undefined) {\n // We try to find in current `labelInValue` value\n var labelInValueItem = toLabeledValues(internalValue).find(function (labeledItem) {\n return labeledItem.value === rawValue;\n });\n rawLabel = labelInValueItem.label;\n }\n\n return {\n label: rawLabel,\n value: rawValue,\n halfChecked: rawHalfChecked,\n disabled: rawDisabled\n };\n });\n }, [valueEntities, getLabel, toLabeledValues, internalValue]); // =========================== Values ===========================\n\n var rawMixedLabeledValues = React.useMemo(function () {\n return toLabeledValues(internalValue);\n }, [toLabeledValues, internalValue]); // Split value into full check and half check\n\n var _React$useMemo = React.useMemo(function () {\n var fullCheckValues = [];\n var halfCheckValues = [];\n rawMixedLabeledValues.forEach(function (item) {\n if (item.halfChecked) {\n halfCheckValues.push(item);\n } else {\n fullCheckValues.push(item);\n }\n });\n return [fullCheckValues, halfCheckValues];\n }, [rawMixedLabeledValues]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n rawLabeledValues = _React$useMemo2[0],\n rawHalfLabeledValues = _React$useMemo2[1]; // const [mergedValues] = useCache(rawLabeledValues);\n\n\n var rawValues = React.useMemo(function () {\n return rawLabeledValues.map(function (item) {\n return item.value;\n });\n }, [rawLabeledValues]); // Convert value to key. Will fill missed keys for conduct check.\n\n var _useCheckedKeys = useCheckedKeys(rawLabeledValues, rawHalfLabeledValues, treeConduction, keyEntities),\n _useCheckedKeys2 = _slicedToArray(_useCheckedKeys, 2),\n rawCheckedValues = _useCheckedKeys2[0],\n rawHalfCheckedValues = _useCheckedKeys2[1]; // Convert rawCheckedKeys to check strategy related values\n\n\n var displayValues = React.useMemo(function () {\n // Collect keys which need to show\n var displayKeys = formatStrategyValues(rawCheckedValues, showCheckedStrategy, keyEntities, mergedFieldNames); // Convert to value and filled with label\n\n var values = displayKeys.map(function (key) {\n var _keyEntities$key$node, _keyEntities$key, _keyEntities$key$node2;\n\n return (_keyEntities$key$node = (_keyEntities$key = keyEntities[key]) === null || _keyEntities$key === void 0 ? void 0 : (_keyEntities$key$node2 = _keyEntities$key.node) === null || _keyEntities$key$node2 === void 0 ? void 0 : _keyEntities$key$node2[mergedFieldNames.value]) !== null && _keyEntities$key$node !== void 0 ? _keyEntities$key$node : key;\n }); // Back fill with origin label\n\n var labeledValues = values.map(function (val) {\n var targetItem = rawLabeledValues.find(function (item) {\n return item.value === val;\n });\n return {\n value: val,\n label: targetItem === null || targetItem === void 0 ? void 0 : targetItem.label\n };\n });\n var rawDisplayValues = convert2LabelValues(labeledValues);\n var firstVal = rawDisplayValues[0];\n\n if (!mergedMultiple && firstVal && isNil(firstVal.value) && isNil(firstVal.label)) {\n return [];\n }\n\n return rawDisplayValues.map(function (item) {\n var _item$label;\n\n return _objectSpread(_objectSpread({}, item), {}, {\n label: (_item$label = item.label) !== null && _item$label !== void 0 ? _item$label : item.value\n });\n });\n }, [mergedFieldNames, mergedMultiple, rawCheckedValues, rawLabeledValues, convert2LabelValues, showCheckedStrategy, keyEntities]);\n\n var _useCache = useCache(displayValues),\n _useCache2 = _slicedToArray(_useCache, 1),\n cachedDisplayValues = _useCache2[0]; // =========================== Change ===========================\n\n\n var triggerChange = useRefFunc(function (newRawValues, extra, source) {\n var labeledValues = convert2LabelValues(newRawValues);\n setInternalValue(labeledValues); // Clean up if needed\n\n if (autoClearSearchValue) {\n setSearchValue('');\n } // Generate rest parameters is costly, so only do it when necessary\n\n\n if (onChange) {\n var eventValues = newRawValues;\n\n if (treeConduction) {\n var formattedKeyList = formatStrategyValues(newRawValues, showCheckedStrategy, keyEntities, mergedFieldNames);\n eventValues = formattedKeyList.map(function (key) {\n var entity = valueEntities.get(key);\n return entity ? entity.node[mergedFieldNames.value] : key;\n });\n }\n\n var _ref = extra || {\n triggerValue: undefined,\n selected: undefined\n },\n triggerValue = _ref.triggerValue,\n selected = _ref.selected;\n\n var returnRawValues = eventValues; // We need fill half check back\n\n if (treeCheckStrictly) {\n var halfValues = rawHalfLabeledValues.filter(function (item) {\n return !eventValues.includes(item.value);\n });\n returnRawValues = [].concat(_toConsumableArray(returnRawValues), _toConsumableArray(halfValues));\n }\n\n var returnLabeledValues = convert2LabelValues(returnRawValues);\n var additionalInfo = {\n // [Legacy] Always return as array contains label & value\n preValue: rawLabeledValues,\n triggerValue: triggerValue\n }; // [Legacy] Fill legacy data if user query.\n // This is expansive that we only fill when user query\n // https://github.com/react-component/tree-select/blob/fe33eb7c27830c9ac70cd1fdb1ebbe7bc679c16a/src/Select.jsx\n\n var showPosition = true;\n\n if (treeCheckStrictly || source === 'selection' && !selected) {\n showPosition = false;\n }\n\n fillAdditionalInfo(additionalInfo, triggerValue, newRawValues, mergedTreeData, showPosition, mergedFieldNames);\n\n if (mergedCheckable) {\n additionalInfo.checked = selected;\n } else {\n additionalInfo.selected = selected;\n }\n\n var returnValues = mergedLabelInValue ? returnLabeledValues : returnLabeledValues.map(function (item) {\n return item.value;\n });\n onChange(mergedMultiple ? returnValues : returnValues[0], mergedLabelInValue ? null : returnLabeledValues.map(function (item) {\n return item.label;\n }), additionalInfo);\n }\n }); // ========================== Options ===========================\n\n /** Trigger by option list */\n\n var onOptionSelect = React.useCallback(function (selectedKey, _ref2) {\n var _node$mergedFieldName;\n\n var selected = _ref2.selected,\n source = _ref2.source;\n var entity = keyEntities[selectedKey];\n var node = entity === null || entity === void 0 ? void 0 : entity.node;\n var selectedValue = (_node$mergedFieldName = node === null || node === void 0 ? void 0 : node[mergedFieldNames.value]) !== null && _node$mergedFieldName !== void 0 ? _node$mergedFieldName : selectedKey; // Never be falsy but keep it safe\n\n if (!mergedMultiple) {\n // Single mode always set value\n triggerChange([selectedValue], {\n selected: true,\n triggerValue: selectedValue\n }, 'option');\n } else {\n var newRawValues = selected ? [].concat(_toConsumableArray(rawValues), [selectedValue]) : rawCheckedValues.filter(function (v) {\n return v !== selectedValue;\n }); // Add keys if tree conduction\n\n if (treeConduction) {\n // Should keep missing values\n var _splitRawValues = splitRawValues(newRawValues),\n missingRawValues = _splitRawValues.missingRawValues,\n existRawValues = _splitRawValues.existRawValues;\n\n var keyList = existRawValues.map(function (val) {\n return valueEntities.get(val).key;\n }); // Conduction by selected or not\n\n var checkedKeys;\n\n if (selected) {\n var _conductCheck = conductCheck(keyList, true, keyEntities);\n\n checkedKeys = _conductCheck.checkedKeys;\n } else {\n var _conductCheck2 = conductCheck(keyList, {\n checked: false,\n halfCheckedKeys: rawHalfCheckedValues\n }, keyEntities);\n\n checkedKeys = _conductCheck2.checkedKeys;\n } // Fill back of keys\n\n\n newRawValues = [].concat(_toConsumableArray(missingRawValues), _toConsumableArray(checkedKeys.map(function (key) {\n return keyEntities[key].node[mergedFieldNames.value];\n })));\n }\n\n triggerChange(newRawValues, {\n selected: selected,\n triggerValue: selectedValue\n }, source || 'option');\n } // Trigger select event\n\n\n if (selected || !mergedMultiple) {\n onSelect === null || onSelect === void 0 ? void 0 : onSelect(selectedValue, fillLegacyProps(node));\n } else {\n onDeselect === null || onDeselect === void 0 ? void 0 : onDeselect(selectedValue, fillLegacyProps(node));\n }\n }, [splitRawValues, valueEntities, keyEntities, mergedFieldNames, mergedMultiple, rawValues, triggerChange, treeConduction, onSelect, onDeselect, rawCheckedValues, rawHalfCheckedValues]); // ========================== Dropdown ==========================\n\n var onInternalDropdownVisibleChange = React.useCallback(function (open) {\n if (onDropdownVisibleChange) {\n var legacyParam = {};\n Object.defineProperty(legacyParam, 'documentClickClose', {\n get: function get() {\n warning(false, 'Second param of `onDropdownVisibleChange` has been removed.');\n return false;\n }\n });\n onDropdownVisibleChange(open, legacyParam);\n }\n }, [onDropdownVisibleChange]); // ====================== Display Change ========================\n\n var onDisplayValuesChange = useRefFunc(function (newValues, info) {\n var newRawValues = newValues.map(function (item) {\n return item.value;\n });\n\n if (info.type === 'clear') {\n triggerChange(newRawValues, {}, 'selection');\n return;\n } // TreeSelect only have multiple mode which means display change only has remove\n\n\n if (info.values.length) {\n onOptionSelect(info.values[0].value, {\n selected: false,\n source: 'selection'\n });\n }\n }); // ========================== Context ===========================\n\n var treeSelectContext = React.useMemo(function () {\n return {\n virtual: virtual,\n dropdownMatchSelectWidth: dropdownMatchSelectWidth,\n listHeight: listHeight,\n listItemHeight: listItemHeight,\n treeData: filteredTreeData,\n fieldNames: mergedFieldNames,\n onSelect: onOptionSelect,\n treeExpandAction: treeExpandAction\n };\n }, [virtual, dropdownMatchSelectWidth, listHeight, listItemHeight, filteredTreeData, mergedFieldNames, onOptionSelect, treeExpandAction]); // ======================= Legacy Context =======================\n\n var legacyContext = React.useMemo(function () {\n return {\n checkable: mergedCheckable,\n loadData: loadData,\n treeLoadedKeys: treeLoadedKeys,\n onTreeLoad: onTreeLoad,\n checkedKeys: rawCheckedValues,\n halfCheckedKeys: rawHalfCheckedValues,\n treeDefaultExpandAll: treeDefaultExpandAll,\n treeExpandedKeys: treeExpandedKeys,\n treeDefaultExpandedKeys: treeDefaultExpandedKeys,\n onTreeExpand: onTreeExpand,\n treeIcon: treeIcon,\n treeMotion: treeMotion,\n showTreeIcon: showTreeIcon,\n switcherIcon: switcherIcon,\n treeLine: treeLine,\n treeNodeFilterProp: treeNodeFilterProp,\n keyEntities: keyEntities\n };\n }, [mergedCheckable, loadData, treeLoadedKeys, onTreeLoad, rawCheckedValues, rawHalfCheckedValues, treeDefaultExpandAll, treeExpandedKeys, treeDefaultExpandedKeys, onTreeExpand, treeIcon, treeMotion, showTreeIcon, switcherIcon, treeLine, treeNodeFilterProp, keyEntities]); // =========================== Render ===========================\n\n return /*#__PURE__*/React.createElement(TreeSelectContext.Provider, {\n value: treeSelectContext\n }, /*#__PURE__*/React.createElement(LegacyContext.Provider, {\n value: legacyContext\n }, /*#__PURE__*/React.createElement(BaseSelect, _extends({\n ref: ref\n }, restProps, {\n // >>> MISC\n id: mergedId,\n prefixCls: prefixCls,\n mode: mergedMultiple ? 'multiple' : undefined // >>> Display Value\n ,\n displayValues: cachedDisplayValues,\n onDisplayValuesChange: onDisplayValuesChange // >>> Search\n ,\n searchValue: mergedSearchValue,\n onSearch: onInternalSearch // >>> Options\n ,\n OptionList: OptionList,\n emptyOptions: !mergedTreeData.length,\n onDropdownVisibleChange: onInternalDropdownVisibleChange,\n dropdownMatchSelectWidth: dropdownMatchSelectWidth\n }))));\n}); // Assign name for Debug\n\nif (process.env.NODE_ENV !== 'production') {\n TreeSelect.displayName = 'TreeSelect';\n}\n\nvar GenericTreeSelect = TreeSelect;\nGenericTreeSelect.TreeNode = TreeNode;\nGenericTreeSelect.SHOW_ALL = SHOW_ALL;\nGenericTreeSelect.SHOW_PARENT = SHOW_PARENT;\nGenericTreeSelect.SHOW_CHILD = SHOW_CHILD;\nexport default GenericTreeSelect;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport { convertDataToEntities } from \"rc-tree/es/utils/treeUtil\";\nimport warning from \"rc-util/es/warning\";\nimport { isNil } from \"../utils/valueUtil\";\nexport default (function (treeData, fieldNames) {\n return React.useMemo(function () {\n var collection = convertDataToEntities(treeData, {\n fieldNames: fieldNames,\n initWrapper: function initWrapper(wrapper) {\n return _objectSpread(_objectSpread({}, wrapper), {}, {\n valueEntities: new Map()\n });\n },\n processEntity: function processEntity(entity, wrapper) {\n var val = entity.node[fieldNames.value]; // Check if exist same value\n\n if (process.env.NODE_ENV !== 'production') {\n var key = entity.node.key;\n warning(!isNil(val), 'TreeNode `value` is invalidate: undefined');\n warning(!wrapper.valueEntities.has(val), \"Same `value` exist in the tree: \".concat(val));\n warning(!key || String(key) === String(val), \"`key` or `value` with TreeNode must be the same or you can remove one of them. key: \".concat(key, \", value: \").concat(val, \".\"));\n }\n\n wrapper.valueEntities.set(val, entity);\n }\n });\n return collection;\n }, [treeData, fieldNames]);\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport { fillLegacyProps } from \"../utils/legacyUtil\";\nexport default (function (treeData, searchValue, _ref) {\n var treeNodeFilterProp = _ref.treeNodeFilterProp,\n filterTreeNode = _ref.filterTreeNode,\n fieldNames = _ref.fieldNames;\n var fieldChildren = fieldNames.children;\n return React.useMemo(function () {\n if (!searchValue || filterTreeNode === false) {\n return treeData;\n }\n\n var filterOptionFunc;\n\n if (typeof filterTreeNode === 'function') {\n filterOptionFunc = filterTreeNode;\n } else {\n var upperStr = searchValue.toUpperCase();\n\n filterOptionFunc = function filterOptionFunc(_, dataNode) {\n var value = dataNode[treeNodeFilterProp];\n return String(value).toUpperCase().includes(upperStr);\n };\n }\n\n function dig(list) {\n var keepAll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return list.map(function (dataNode) {\n var children = dataNode[fieldChildren];\n var match = keepAll || filterOptionFunc(searchValue, fillLegacyProps(dataNode));\n var childList = dig(children || [], match);\n\n if (match || childList.length) {\n return _objectSpread(_objectSpread({}, dataNode), {}, _defineProperty({\n isLeaf: undefined\n }, fieldChildren, childList));\n }\n\n return null;\n }).filter(function (node) {\n return node;\n });\n }\n\n return dig(treeData);\n }, [treeData, searchValue, fieldChildren, treeNodeFilterProp, filterTreeNode]);\n});","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport { conductCheck } from \"rc-tree/es/utils/conductUtil\";\nexport default (function (rawLabeledValues, rawHalfCheckedValues, treeConduction, keyEntities) {\n return React.useMemo(function () {\n var checkedKeys = rawLabeledValues.map(function (_ref) {\n var value = _ref.value;\n return value;\n });\n var halfCheckedKeys = rawHalfCheckedValues.map(function (_ref2) {\n var value = _ref2.value;\n return value;\n });\n var missingValues = checkedKeys.filter(function (key) {\n return !keyEntities[key];\n });\n\n if (treeConduction) {\n var _conductCheck = conductCheck(checkedKeys, true, keyEntities);\n\n checkedKeys = _conductCheck.checkedKeys;\n halfCheckedKeys = _conductCheck.halfCheckedKeys;\n }\n\n return [// Checked keys should fill with missing keys which should de-duplicated\n Array.from(new Set([].concat(_toConsumableArray(missingValues), _toConsumableArray(checkedKeys)))), // Half checked keys\n halfCheckedKeys];\n }, [rawLabeledValues, rawHalfCheckedValues, treeConduction, keyEntities]);\n});","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\n\n/**\n * This function will try to call requestIdleCallback if available to save performance.\n * No need `getLabel` here since already fetch on `rawLabeledValue`.\n */\nexport default (function (values) {\n var cacheRef = React.useRef({\n valueLabels: new Map()\n });\n return React.useMemo(function () {\n var valueLabels = cacheRef.current.valueLabels;\n var valueLabelsCache = new Map();\n var filledValues = values.map(function (item) {\n var _item$label;\n\n var value = item.value;\n var mergedLabel = (_item$label = item.label) !== null && _item$label !== void 0 ? _item$label : valueLabels.get(value); // Save in cache\n\n valueLabelsCache.set(value, mergedLabel);\n return _objectSpread(_objectSpread({}, item), {}, {\n label: mergedLabel\n });\n });\n cacheRef.current.valueLabels = valueLabelsCache;\n return [filledValues];\n }, [values]);\n});","import TreeSelect from \"./TreeSelect\";\nimport TreeNode from \"./TreeNode\";\nimport { SHOW_ALL, SHOW_CHILD, SHOW_PARENT } from \"./utils/strategyUtil\";\nexport { TreeNode, SHOW_ALL, SHOW_CHILD, SHOW_PARENT };\nexport default TreeSelect;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport RcTreeSelect, { SHOW_ALL, SHOW_CHILD, SHOW_PARENT, TreeNode } from 'rc-tree-select';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { ConfigContext } from '../config-provider';\nimport defaultRenderEmpty from '../config-provider/defaultRenderEmpty';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport SizeContext from '../config-provider/SizeContext';\nimport { FormItemInputContext } from '../form/context';\nimport getIcons from '../select/utils/iconUtil';\nimport renderSwitcherIcon from '../tree/utils/iconUtil';\nimport { getTransitionDirection, getTransitionName } from '../_util/motion';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport { useCompactItemContext } from '../space/Compact';\nimport warning from '../_util/warning';\nvar InternalTreeSelect = function InternalTreeSelect(_a, ref) {\n var _classNames2;\n var customizePrefixCls = _a.prefixCls,\n customizeSize = _a.size,\n customDisabled = _a.disabled,\n _a$bordered = _a.bordered,\n bordered = _a$bordered === void 0 ? true : _a$bordered,\n className = _a.className,\n treeCheckable = _a.treeCheckable,\n multiple = _a.multiple,\n _a$listHeight = _a.listHeight,\n listHeight = _a$listHeight === void 0 ? 256 : _a$listHeight,\n _a$listItemHeight = _a.listItemHeight,\n listItemHeight = _a$listItemHeight === void 0 ? 26 : _a$listItemHeight,\n placement = _a.placement,\n notFoundContent = _a.notFoundContent,\n _switcherIcon = _a.switcherIcon,\n treeLine = _a.treeLine,\n getPopupContainer = _a.getPopupContainer,\n dropdownClassName = _a.dropdownClassName,\n popupClassName = _a.popupClassName,\n _a$treeIcon = _a.treeIcon,\n treeIcon = _a$treeIcon === void 0 ? false : _a$treeIcon,\n transitionName = _a.transitionName,\n _a$choiceTransitionNa = _a.choiceTransitionName,\n choiceTransitionName = _a$choiceTransitionNa === void 0 ? '' : _a$choiceTransitionNa,\n customStatus = _a.status,\n showArrow = _a.showArrow,\n treeExpandAction = _a.treeExpandAction,\n props = __rest(_a, [\"prefixCls\", \"size\", \"disabled\", \"bordered\", \"className\", \"treeCheckable\", \"multiple\", \"listHeight\", \"listItemHeight\", \"placement\", \"notFoundContent\", \"switcherIcon\", \"treeLine\", \"getPopupContainer\", \"dropdownClassName\", \"popupClassName\", \"treeIcon\", \"transitionName\", \"choiceTransitionName\", \"status\", \"showArrow\", \"treeExpandAction\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getContextPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n renderEmpty = _React$useContext.renderEmpty,\n direction = _React$useContext.direction,\n virtual = _React$useContext.virtual,\n dropdownMatchSelectWidth = _React$useContext.dropdownMatchSelectWidth;\n var size = React.useContext(SizeContext);\n process.env.NODE_ENV !== \"production\" ? warning(multiple !== false || !treeCheckable, 'TreeSelect', '`multiple` will always be `true` when `treeCheckable` is true') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!dropdownClassName, 'TreeSelect', '`dropdownClassName` is deprecated which will be removed in next major version. Please use `popupClassName` instead.') : void 0;\n var prefixCls = getPrefixCls('select', customizePrefixCls);\n var treePrefixCls = getPrefixCls('select-tree', customizePrefixCls);\n var treeSelectPrefixCls = getPrefixCls('tree-select', customizePrefixCls);\n var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n compactSize = _useCompactItemContex.compactSize,\n compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n var mergedDropdownClassName = classNames(popupClassName || dropdownClassName, \"\".concat(treeSelectPrefixCls, \"-dropdown\"), _defineProperty({}, \"\".concat(treeSelectPrefixCls, \"-dropdown-rtl\"), direction === 'rtl'));\n var isMultiple = !!(treeCheckable || multiple);\n var mergedShowArrow = showArrow !== undefined ? showArrow : props.loading || !isMultiple;\n // ===================== Form =====================\n var _useContext = useContext(FormItemInputContext),\n contextStatus = _useContext.status,\n hasFeedback = _useContext.hasFeedback,\n isFormItemInput = _useContext.isFormItemInput,\n feedbackIcon = _useContext.feedbackIcon;\n var mergedStatus = getMergedStatus(contextStatus, customStatus);\n // ===================== Icons =====================\n var _getIcons = getIcons(_extends(_extends({}, props), {\n multiple: isMultiple,\n showArrow: mergedShowArrow,\n hasFeedback: hasFeedback,\n feedbackIcon: feedbackIcon,\n prefixCls: prefixCls\n })),\n suffixIcon = _getIcons.suffixIcon,\n removeIcon = _getIcons.removeIcon,\n clearIcon = _getIcons.clearIcon;\n // ===================== Empty =====================\n var mergedNotFound;\n if (notFoundContent !== undefined) {\n mergedNotFound = notFoundContent;\n } else {\n mergedNotFound = (renderEmpty || defaultRenderEmpty)('Select');\n }\n // ==================== Render =====================\n var selectProps = omit(props, ['suffixIcon', 'itemIcon', 'removeIcon', 'clearIcon', 'switcherIcon']);\n // ===================== Placement =====================\n var getPlacement = function getPlacement() {\n if (placement !== undefined) {\n return placement;\n }\n return direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n };\n var mergedSize = compactSize || customizeSize || size;\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n var mergedClassName = classNames(!customizePrefixCls && treeSelectPrefixCls, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-lg\"), mergedSize === 'large'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-sm\"), mergedSize === 'small'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-borderless\"), !bordered), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-in-form-item\"), isFormItemInput), _classNames2), getStatusClassNames(prefixCls, mergedStatus, hasFeedback), compactItemClassnames, className);\n var rootPrefixCls = getPrefixCls();\n return /*#__PURE__*/React.createElement(RcTreeSelect, _extends({\n virtual: virtual,\n dropdownMatchSelectWidth: dropdownMatchSelectWidth,\n disabled: mergedDisabled\n }, selectProps, {\n ref: ref,\n prefixCls: prefixCls,\n className: mergedClassName,\n listHeight: listHeight,\n listItemHeight: listItemHeight,\n treeCheckable: treeCheckable ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-tree-checkbox-inner\")\n }) : treeCheckable,\n treeLine: !!treeLine,\n inputIcon: suffixIcon,\n multiple: multiple,\n placement: getPlacement(),\n removeIcon: removeIcon,\n clearIcon: clearIcon,\n switcherIcon: function switcherIcon(nodeProps) {\n return renderSwitcherIcon(treePrefixCls, _switcherIcon, treeLine, nodeProps);\n },\n showTreeIcon: treeIcon,\n notFoundContent: mergedNotFound,\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n treeMotion: null,\n dropdownClassName: mergedDropdownClassName,\n choiceTransitionName: getTransitionName(rootPrefixCls, '', choiceTransitionName),\n transitionName: getTransitionName(rootPrefixCls, getTransitionDirection(placement), transitionName),\n showArrow: hasFeedback || showArrow,\n treeExpandAction: treeExpandAction\n }));\n};\nvar TreeSelectRef = /*#__PURE__*/React.forwardRef(InternalTreeSelect);\nvar TreeSelect = TreeSelectRef;\nTreeSelect.TreeNode = TreeNode;\nTreeSelect.SHOW_ALL = SHOW_ALL;\nTreeSelect.SHOW_PARENT = SHOW_PARENT;\nTreeSelect.SHOW_CHILD = SHOW_CHILD;\nexport { TreeNode };\nexport default TreeSelect;","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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; } } }; }\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); }\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; }\nimport { Utils } from \"@react-awesome-query-builder/ui\";\nvar _Utils$ListUtils = Utils.ListUtils,\n getItemInListValues = _Utils$ListUtils.getItemInListValues,\n listValuesToArray = _Utils$ListUtils.listValuesToArray;\nvar isObject = function isObject(v) {\n return _typeof(v) == \"object\" && v !== null;\n}; // object or array\n\nexport var defaultTreeDataMap = {\n id: \"value\",\n pId: \"parent\",\n rootPId: undefined\n};\n\n// converts from treeData to treeDataSimpleMode format (https://ant.design/components/tree-select/)\n// ! modifies value of `treeData`\nvar flatizeTreeData = function flatizeTreeData(treeData) {\n var tdm = defaultTreeDataMap;\n var rind;\n var len;\n var _flatize = function _flatize(node, root, lev) {\n if (node.children) {\n if (lev == 1) node[tdm.pId] = tdm.rootPId; //optional?\n var childrenCount = node.children.length;\n var _iterator = _createForOfIteratorHelper(node.children),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var c = _step.value;\n c[tdm.pId] = node[tdm.id];\n rind++;\n root.splice(rind, 0, c); //instead of just push\n len++;\n _flatize(c, root, lev + 1);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n delete node.children;\n if (childrenCount == 0) {\n root.splice(rind, 1);\n rind--;\n len--;\n }\n }\n };\n if (Array.isArray(treeData)) {\n len = treeData.length;\n for (rind = 0; rind < len; rind++) {\n var c = treeData[rind];\n if (!isObject(c)) continue;\n if (c[tdm.pId] !== undefined && c[tdm.pId] != tdm.rootPId) continue; //not lev 1\n _flatize(c, treeData, 1);\n }\n }\n return treeData;\n};\nvar getPathInListValues = function getPathInListValues(listValues, value) {\n var tdm = defaultTreeDataMap;\n var it = getItemInListValues(listValues, value);\n var parentId = it ? it[tdm.pId] : undefined;\n var parent = parentId ? listValues.find(function (v) {\n return v[tdm.id] === parentId;\n }) : undefined;\n return parent ? [parent.value].concat(_toConsumableArray(getPathInListValues(listValues, parent.value))) : [];\n};\nvar getChildrenInListValues = function getChildrenInListValues(listValues, value) {\n var tdm = defaultTreeDataMap;\n var it = getItemInListValues(listValues, value);\n return it ? listValues.filter(function (v) {\n return v[tdm.pId] === it[tdm.id];\n }).map(function (v) {\n return v.value;\n }) : [];\n};\n\n// ! modifies value of `treeData`\nvar extendTreeData = function extendTreeData(treeData, fieldSettings, isMulti) {\n var _iterator2 = _createForOfIteratorHelper(treeData),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var node = _step2.value;\n node.path = getPathInListValues(treeData, node.value);\n if (fieldSettings.treeSelectOnlyLeafs != false) {\n var childrenValues = getChildrenInListValues(treeData, node.value);\n if (!isMulti) {\n node.selectable = childrenValues.length == 0;\n }\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return treeData;\n};\nexport var normalizeListValues = function normalizeListValues(listValues, type, fieldSettings) {\n var isTree = [\"treeselect\", \"treemultiselect\"].includes(type);\n var isMulti = [\"multiselect\", \"treemultiselect\"].includes(type);\n if (isTree) {\n listValues = listValuesToArray(listValues);\n listValues = flatizeTreeData(listValues);\n listValues = extendTreeData(listValues, fieldSettings, isMulti);\n }\n return listValues;\n};\nexport var removePrefixPath = function removePrefixPath(selectedPath, parentPath) {\n if (!selectedPath) return selectedPath;\n var isPrefix = true;\n for (var i = 0; i < parentPath.length; i++) {\n var part = parentPath[i];\n if (selectedPath[i] !== undefined && part == selectedPath[i]) {\n //ok\n } else {\n isPrefix = false;\n break;\n }\n }\n return isPrefix ? selectedPath.slice(parentPath.length) : selectedPath;\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { TreeSelect } from \"antd\";\nimport { calcTextWidth, SELECT_WIDTH_OFFSET_RIGHT } from \"../../utils/domUtils\";\nimport { defaultTreeDataMap } from \"../../utils/stuff\";\nimport { Utils } from \"@react-awesome-query-builder/ui\";\nvar useOnPropsChanged = Utils.ReactUtils.useOnPropsChanged;\nvar _Utils$ListUtils = Utils.ListUtils,\n getTitleInListValues = _Utils$ListUtils.getTitleInListValues,\n mapListValues = _Utils$ListUtils.mapListValues;\nvar TreeSelectWidget = /*#__PURE__*/function (_Component) {\n _inherits(TreeSelectWidget, _Component);\n var _super = _createSuper(TreeSelectWidget);\n function TreeSelectWidget(props) {\n var _this;\n _classCallCheck(this, TreeSelectWidget);\n _this = _super.call(this, props);\n _this.handleChange = function (val) {\n if (!_this.props.treeMultiple) {\n _this.props.setValue(val);\n return;\n }\n if (val && !val.length) {\n _this.props.setValue(undefined); //not allow []\n return;\n }\n if (_typeof(val[0]) == \"object\" && val[0].value !== undefined) {\n //`treeCheckStrictly` is on\n val = val.map(function (v) {\n return v.value;\n });\n }\n _this.props.setValue(val);\n };\n _this.filterTreeNode = function (input, option) {\n var dataForFilter = option.title;\n return dataForFilter.toLowerCase().indexOf(input.toLowerCase()) >= 0;\n };\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.onPropsChanged(props);\n return _this;\n }\n _createClass(TreeSelectWidget, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var listValues = nextProps.listValues,\n treeValues = nextProps.treeValues,\n treeMultiple = nextProps.treeMultiple;\n var treeData = treeValues || listValues;\n var optionsMaxWidth = 0;\n var initialOffset = treeMultiple ? 24 + 22 : 24; // arrow + checkbox for leftmost item\n var offset = 20;\n var padding = 5 * 2;\n mapListValues(treeData, function (_ref) {\n var title = _ref.title,\n value = _ref.value,\n path = _ref.path;\n optionsMaxWidth = Math.max(optionsMaxWidth, calcTextWidth(title, null) + padding + (path ? path.length : 0) * offset + initialOffset);\n });\n if (!isNaN(optionsMaxWidth) && optionsMaxWidth) {\n this.optionsMaxWidth = optionsMaxWidth;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n placeholder = _this$props.placeholder,\n _this$props$customPro = _this$props.customProps,\n customProps = _this$props$customPro === void 0 ? {} : _this$props$customPro,\n value = _this$props.value,\n treeMultiple = _this$props.treeMultiple,\n listValues = _this$props.listValues,\n treeValues = _this$props.treeValues,\n treeExpandAll = _this$props.treeExpandAll,\n readonly = _this$props.readonly;\n var treeData = treeValues || listValues;\n var treeCheckStrictly = customProps.treeCheckStrictly || false;\n var renderSize = config.settings.renderSize;\n var placeholderWidth = calcTextWidth(placeholder);\n var aValue = value != undefined ? value : undefined;\n if (treeCheckStrictly && aValue !== undefined) {\n if (treeMultiple) {\n aValue = aValue.map(function (v) {\n return {\n value: v,\n label: getTitleInListValues(treeData, v)\n };\n });\n }\n }\n var width = aValue || !placeholderWidth ? null : placeholderWidth + SELECT_WIDTH_OFFSET_RIGHT + 6;\n var dropdownMinWidth = 100;\n var dropdownMaxWidth = 800;\n var useAutoWidth = true || !this.optionsMaxWidth; //tip: \"auto\" is good, but width will jump on expand/collapse\n var dropdownWidth = Math.max(dropdownMinWidth, Math.min(dropdownMaxWidth, this.optionsMaxWidth));\n return /*#__PURE__*/React.createElement(TreeSelect, _extends({\n disabled: readonly,\n style: {\n minWidth: width,\n width: width\n },\n dropdownStyle: {\n width: useAutoWidth ? \"auto\" : dropdownWidth + 10,\n paddingRight: \"10px\"\n },\n multiple: treeMultiple,\n treeCheckable: treeMultiple,\n key: \"widget-treeselect\",\n popupMatchSelectWidth: false,\n placeholder: placeholder,\n size: renderSize,\n treeData: treeData,\n treeDataSimpleMode: defaultTreeDataMap,\n filterTreeNode: this.filterTreeNode,\n value: aValue,\n onChange: this.handleChange,\n treeDefaultExpandAll: treeExpandAll\n }, customProps));\n }\n }]);\n return TreeSelectWidget;\n}(Component);\nTreeSelectWidget.propTypes = {\n setValue: PropTypes.func.isRequired,\n config: PropTypes.object.isRequired,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n field: PropTypes.any,\n placeholder: PropTypes.string,\n customProps: PropTypes.object,\n fieldDefinition: PropTypes.object,\n readonly: PropTypes.bool,\n treeMultiple: PropTypes.bool,\n // from fieldSettings:\n listValues: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n // obsolete\n treeValues: PropTypes.oneOfType([PropTypes.object, PropTypes.array])\n};\nexport { TreeSelectWidget as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport React, { useState } from \"react\";\nimport { Tooltip, Select } from \"antd\";\nimport { BUILT_IN_PLACEMENTS, SELECT_WIDTH_OFFSET_RIGHT, calcTextWidth } from \"../../utils/domUtils\";\nvar Option = Select.Option,\n OptGroup = Select.OptGroup;\n\n// see type FieldItemSearchableKeys\nvar mapFieldItemToOptionKeys = {\n key: \"_value2\",\n path: \"value\",\n label: \"label\",\n altLabel: \"title\",\n tooltip: \"_tooltip\",\n grouplabel: \"grouplabel\",\n fullLabel: \"_fullLabel\"\n};\nvar FieldSelect = function FieldSelect(props) {\n var setField = props.setField,\n config = props.config,\n customProps = props.customProps,\n items = props.items,\n placeholder = props.placeholder,\n selectedKey = props.selectedKey,\n selectedLabel = props.selectedLabel,\n selectedOpts = props.selectedOpts,\n selectedAltLabel = props.selectedAltLabel,\n selectedFullLabel = props.selectedFullLabel,\n readonly = props.readonly,\n errorText = props.errorText;\n var _ref = customProps || {},\n showSearch = _ref.showSearch;\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n open = _useState2[0],\n setOpen = _useState2[1];\n var _useState3 = useState(\"\"),\n _useState4 = _slicedToArray(_useState3, 2),\n searchValue = _useState4[0],\n setSearchValue = _useState4[1];\n var selectText = selectedLabel || placeholder;\n var selectWidth = calcTextWidth(selectText);\n var isFieldSelected = !!selectedKey;\n var dropdownPlacement = config.settings.dropdownPlacement;\n var dropdownAlign = dropdownPlacement ? BUILT_IN_PLACEMENTS[dropdownPlacement] : undefined;\n var width = isFieldSelected && !showSearch || !selectWidth ? null : selectWidth + SELECT_WIDTH_OFFSET_RIGHT;\n var tooltipText = selectedAltLabel || selectedFullLabel;\n if (tooltipText == selectedLabel) tooltipText = null;\n var onChange = function onChange(key) {\n setField(key);\n };\n var onSearch = function onSearch(search) {\n setSearchValue(search);\n };\n var filterOption = function filterOption(input, option) {\n var keysForFilter = config.settings.fieldItemKeysForSearch.map(function (k) {\n return mapFieldItemToOptionKeys[k];\n });\n var valueForFilter = keysForFilter.map(function (k) {\n return typeof option[k] == \"string\" ? option[k] : \"\";\n }).join(\"\\0\");\n var matches = valueForFilter.toLowerCase().indexOf(input.toLowerCase()) >= 0;\n return matches;\n };\n var renderSelectItems = function renderSelectItems(fields) {\n var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return fields.map(function (field) {\n var items = field.items,\n key = field.key,\n path = field.path,\n label = field.label,\n fullLabel = field.fullLabel,\n altLabel = field.altLabel,\n tooltip = field.tooltip,\n grouplabel = field.grouplabel,\n disabled = field.disabled,\n matchesType = field.matchesType;\n var groupPrefix = level > 0 ? \"\\xA0\\xA0\".repeat(level) : \"\";\n var prefix = level > 1 ? \"\\xA0\\xA0\".repeat(level - 1) : \"\";\n var pathKey = path || key;\n if (items) {\n var simpleItems = items.filter(function (it) {\n return !it.items;\n });\n var complexItems = items.filter(function (it) {\n return !!it.items;\n });\n var gr;\n if (simpleItems.length) {\n var groupLabel = groupPrefix + label;\n if (tooltip) {\n groupLabel = /*#__PURE__*/React.createElement(Tooltip, {\n title: tooltip\n }, groupLabel);\n }\n gr = /*#__PURE__*/React.createElement(OptGroup, {\n key: pathKey,\n label: groupLabel\n }, renderSelectItems(simpleItems, level + 1));\n }\n var list = complexItems.length ? renderSelectItems(complexItems, level + 1) : [];\n return [].concat(_toConsumableArray(gr ? [gr] : []), _toConsumableArray(list));\n } else {\n var optionText = matchesType ? /*#__PURE__*/React.createElement(\"b\", null, prefix + label) : prefix + label;\n var option = tooltip ? /*#__PURE__*/React.createElement(Tooltip, {\n title: tooltip\n }, optionText) : optionText;\n return /*#__PURE__*/React.createElement(Option, {\n key: pathKey,\n value: pathKey,\n title: altLabel,\n grouplabel: grouplabel,\n label: label,\n disabled: disabled,\n _fullLabel: fullLabel,\n _tooltip: tooltip,\n _value2: key\n }, option);\n }\n }).flat(Infinity);\n };\n var fieldSelectItems = renderSelectItems(items);\n var res = /*#__PURE__*/React.createElement(Select, _extends({\n open: open,\n onDropdownVisibleChange: setOpen,\n dropdownAlign: dropdownAlign,\n popupMatchSelectWidth: false,\n style: {\n width: width\n },\n placeholder: placeholder,\n size: config.settings.renderSize,\n onChange: onChange,\n value: selectedKey || undefined,\n optionLabelProp: \"label\",\n filterOption: filterOption,\n disabled: readonly,\n status: errorText && \"error\",\n showSearch: true,\n searchValue: searchValue,\n onSearch: onSearch\n }, customProps), fieldSelectItems);\n if (tooltipText) {\n res = /*#__PURE__*/React.createElement(Tooltip, {\n title: !open ? tooltipText : null\n }, res);\n }\n return res;\n};\nFieldSelect.displayName = \"FieldSelect\";\nexport default FieldSelect;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\nimport omit from \"lodash/omit\";\nimport { Menu, Dropdown, Tooltip, Button } from \"antd\";\nvar SubMenu = Menu.SubMenu;\nvar MenuItem = Menu.Item;\nimport { DownOutlined } from \"@ant-design/icons\";\nvar FieldDropdown = /*#__PURE__*/function (_PureComponent) {\n _inherits(FieldDropdown, _PureComponent);\n var _super = _createSuper(FieldDropdown);\n function FieldDropdown() {\n var _this;\n _classCallCheck(this, FieldDropdown);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.onChange = function (_ref) {\n var key = _ref.key,\n keyPath = _ref.keyPath;\n _this.props.setField(key);\n };\n return _this;\n }\n _createClass(FieldDropdown, [{\n key: \"renderMenuItems\",\n value: function renderMenuItems(fields) {\n var _this2 = this;\n return fields.map(function (field) {\n var items = field.items,\n key = field.key,\n path = field.path,\n label = field.label,\n fullLabel = field.fullLabel,\n altLabel = field.altLabel,\n tooltip = field.tooltip,\n disabled = field.disabled,\n matchesType = field.matchesType;\n var pathKey = path || key;\n var optionText = matchesType ? /*#__PURE__*/React.createElement(\"b\", null, label) : label;\n var option = tooltip ? /*#__PURE__*/React.createElement(Tooltip, {\n title: tooltip\n }, optionText) : optionText;\n if (items) {\n return /*#__PURE__*/React.createElement(SubMenu, {\n key: pathKey,\n title: /*#__PURE__*/React.createElement(\"span\", null, option, \" \\xA0\\xA0\\xA0\\xA0\")\n }, _this2.renderMenuItems(items));\n } else {\n return /*#__PURE__*/React.createElement(MenuItem, {\n key: pathKey,\n disabled: disabled\n }, option);\n }\n });\n }\n }, {\n key: \"renderMenuToggler\",\n value: function renderMenuToggler(togglerLabel, tooltipText, config, readonly, errorText) {\n var toggler = /*#__PURE__*/React.createElement(Button, {\n size: config.settings.renderSize,\n disabled: readonly,\n danger: !!errorText\n }, togglerLabel, \" \", /*#__PURE__*/React.createElement(DownOutlined, null));\n if (tooltipText) {\n toggler = /*#__PURE__*/React.createElement(Tooltip, {\n placement: \"top\",\n title: tooltipText\n }, toggler);\n }\n return toggler;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n customProps = _this$props.customProps,\n items = _this$props.items,\n placeholder = _this$props.placeholder,\n errorText = _this$props.errorText,\n selectedKeys = _this$props.selectedKeys,\n selectedLabel = _this$props.selectedLabel,\n selectedOpts = _this$props.selectedOpts,\n readonly = _this$props.readonly,\n selectedAltLabel = _this$props.selectedAltLabel,\n selectedFullLabel = _this$props.selectedFullLabel;\n var fieldMenuItems = this.renderMenuItems(items);\n var fieldMenu = /*#__PURE__*/React.createElement(Menu\n //size={config.settings.renderSize}\n , _extends({\n selectedKeys: selectedKeys,\n onClick: this.onChange\n }, omit(customProps, [\"showSearch\"])), fieldMenuItems);\n var togglerLabel = selectedAltLabel || selectedLabel || placeholder;\n var tooltipText = selectedFullLabel;\n if (tooltipText == selectedLabel) tooltipText = null;\n var fieldToggler = this.renderMenuToggler(togglerLabel, tooltipText, config, readonly, errorText);\n return readonly ? fieldToggler : /*#__PURE__*/React.createElement(Dropdown, {\n overlay: fieldMenu,\n trigger: [\"click\"],\n placement: config.settings.dropdownPlacement\n }, fieldToggler);\n }\n }]);\n return FieldDropdown;\n}(PureComponent);\nFieldDropdown.propTypes = {\n config: PropTypes.object.isRequired,\n customProps: PropTypes.object,\n errorText: PropTypes.string,\n items: PropTypes.array.isRequired,\n placeholder: PropTypes.string,\n selectedKey: PropTypes.string,\n selectedKeys: PropTypes.array,\n selectedPath: PropTypes.array,\n selectedLabel: PropTypes.string,\n selectedAltLabel: PropTypes.string,\n selectedFullLabel: PropTypes.string,\n selectedOpts: PropTypes.object,\n readonly: PropTypes.bool,\n //actions\n setField: PropTypes.func.isRequired\n};\nexport { FieldDropdown as default };","import * as React from 'react';\nvar CascaderContext = /*#__PURE__*/React.createContext(null);\nexport default CascaderContext;","export var VALUE_SPLIT = '__RC_CASCADER_SPLIT__';\nexport var SHOW_PARENT = 'SHOW_PARENT';\nexport var SHOW_CHILD = 'SHOW_CHILD';\nexport function toPathKey(value) {\n return value.join(VALUE_SPLIT);\n}\nexport function toPathKeys(value) {\n return value.map(toPathKey);\n}\nexport function toPathValueStr(pathKey) {\n return pathKey.split(VALUE_SPLIT);\n}\nexport function fillFieldNames(fieldNames) {\n var _ref = fieldNames || {},\n label = _ref.label,\n value = _ref.value,\n children = _ref.children;\n var val = value || 'value';\n return {\n label: label || 'label',\n value: val,\n key: val,\n children: children || 'children'\n };\n}\nexport function isLeaf(option, fieldNames) {\n var _option$isLeaf, _option$fieldNames$ch;\n return (_option$isLeaf = option.isLeaf) !== null && _option$isLeaf !== void 0 ? _option$isLeaf : !((_option$fieldNames$ch = option[fieldNames.children]) === null || _option$fieldNames$ch === void 0 ? void 0 : _option$fieldNames$ch.length);\n}\nexport function scrollIntoParentView(element) {\n var parent = element.parentElement;\n if (!parent) {\n return;\n }\n var elementToParent = element.offsetTop - parent.offsetTop; // offsetParent may not be parent.\n if (elementToParent - parent.scrollTop < 0) {\n parent.scrollTo({\n top: elementToParent\n });\n } else if (elementToParent + element.offsetHeight - parent.scrollTop > parent.offsetHeight) {\n parent.scrollTo({\n top: elementToParent + element.offsetHeight - parent.offsetHeight\n });\n }\n}","import { SHOW_CHILD } from './commonUtil';\nexport function formatStrategyValues(pathKeys, getKeyPathEntities, showCheckedStrategy) {\n var valueSet = new Set(pathKeys);\n var keyPathEntities = getKeyPathEntities();\n return pathKeys.filter(function (key) {\n var entity = keyPathEntities[key];\n var parent = entity ? entity.parent : null;\n var children = entity ? entity.children : null;\n return showCheckedStrategy === SHOW_CHILD ? !(children && children.some(function (child) {\n return child.key && valueSet.has(child.key);\n })) : !(parent && !parent.node.disabled && valueSet.has(parent.key));\n });\n}\nexport function toPathOptions(valueCells, options, fieldNames) {\n var stringMode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var currentList = options;\n var valueOptions = [];\n var _loop = function _loop() {\n var _currentList, _currentList2, _foundOption$fieldNam;\n var valueCell = valueCells[i];\n var foundIndex = (_currentList = currentList) === null || _currentList === void 0 ? void 0 : _currentList.findIndex(function (option) {\n var val = option[fieldNames.value];\n return stringMode ? String(val) === String(valueCell) : val === valueCell;\n });\n var foundOption = foundIndex !== -1 ? (_currentList2 = currentList) === null || _currentList2 === void 0 ? void 0 : _currentList2[foundIndex] : null;\n valueOptions.push({\n value: (_foundOption$fieldNam = foundOption === null || foundOption === void 0 ? void 0 : foundOption[fieldNames.value]) !== null && _foundOption$fieldNam !== void 0 ? _foundOption$fieldNam : valueCell,\n index: foundIndex,\n option: foundOption\n });\n currentList = foundOption === null || foundOption === void 0 ? void 0 : foundOption[fieldNames.children];\n };\n for (var i = 0; i < valueCells.length; i += 1) {\n _loop();\n }\n return valueOptions;\n}","import * as React from 'react';\n/**\n * Same as `React.useCallback` but always return a memoized function\n * but redirect to real function.\n */\nexport default function useRefFunc(callback) {\n var funcRef = React.useRef();\n funcRef.current = callback;\n var cacheFn = React.useCallback(function () {\n return funcRef.current.apply(funcRef, arguments);\n }, []);\n return cacheFn;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nexport var SEARCH_MARK = '__rc_cascader_search_mark__';\nvar defaultFilter = function defaultFilter(search, options, _ref) {\n var label = _ref.label;\n return options.some(function (opt) {\n return String(opt[label]).toLowerCase().includes(search.toLowerCase());\n });\n};\nvar defaultRender = function defaultRender(inputValue, path, prefixCls, fieldNames) {\n return path.map(function (opt) {\n return opt[fieldNames.label];\n }).join(' / ');\n};\nexport default (function (search, options, fieldNames, prefixCls, config, changeOnSelect) {\n var _config$filter = config.filter,\n filter = _config$filter === void 0 ? defaultFilter : _config$filter,\n _config$render = config.render,\n render = _config$render === void 0 ? defaultRender : _config$render,\n _config$limit = config.limit,\n limit = _config$limit === void 0 ? 50 : _config$limit,\n sort = config.sort;\n return React.useMemo(function () {\n var filteredOptions = [];\n if (!search) {\n return [];\n }\n function dig(list, pathOptions) {\n list.forEach(function (option) {\n // Perf saving when `sort` is disabled and `limit` is provided\n if (!sort && limit > 0 && filteredOptions.length >= limit) {\n return;\n }\n var connectedPathOptions = [].concat(_toConsumableArray(pathOptions), [option]);\n var children = option[fieldNames.children];\n // If current option is filterable\n if (\n // If is leaf option\n !children || children.length === 0 ||\n // If is changeOnSelect\n changeOnSelect) {\n if (filter(search, connectedPathOptions, {\n label: fieldNames.label\n })) {\n var _objectSpread2;\n filteredOptions.push(_objectSpread(_objectSpread({}, option), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, fieldNames.label, render(search, connectedPathOptions, prefixCls, fieldNames)), _defineProperty(_objectSpread2, SEARCH_MARK, connectedPathOptions), _defineProperty(_objectSpread2, fieldNames.children, undefined), _objectSpread2)));\n }\n }\n if (children) {\n dig(option[fieldNames.children], connectedPathOptions);\n }\n });\n }\n dig(options, []);\n // Do sort\n if (sort) {\n filteredOptions.sort(function (a, b) {\n return sort(a[SEARCH_MARK], b[SEARCH_MARK], search, fieldNames);\n });\n }\n return limit > 0 ? filteredOptions.slice(0, limit) : filteredOptions;\n }, [search, options, fieldNames, prefixCls, render, changeOnSelect, filter, sort, limit]);\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CascaderContext from '../context';\nexport default function Checkbox(_ref) {\n var _classNames;\n var prefixCls = _ref.prefixCls,\n checked = _ref.checked,\n halfChecked = _ref.halfChecked,\n disabled = _ref.disabled,\n onClick = _ref.onClick;\n var _React$useContext = React.useContext(CascaderContext),\n checkable = _React$useContext.checkable;\n var customCheckbox = typeof checkable !== 'boolean' ? checkable : null;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-checked\"), checked), _defineProperty(_classNames, \"\".concat(prefixCls, \"-indeterminate\"), !checked && halfChecked), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _classNames)),\n onClick: onClick\n }, customCheckbox);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { isLeaf, toPathKey } from '../utils/commonUtil';\nimport CascaderContext from '../context';\nimport Checkbox from './Checkbox';\nimport { SEARCH_MARK } from '../hooks/useSearchOptions';\nexport var FIX_LABEL = '__cascader_fix_label__';\nexport default function Column(_ref) {\n var prefixCls = _ref.prefixCls,\n multiple = _ref.multiple,\n options = _ref.options,\n activeValue = _ref.activeValue,\n prevValuePath = _ref.prevValuePath,\n onToggleOpen = _ref.onToggleOpen,\n onSelect = _ref.onSelect,\n onActive = _ref.onActive,\n checkedSet = _ref.checkedSet,\n halfCheckedSet = _ref.halfCheckedSet,\n loadingKeys = _ref.loadingKeys,\n isSelectable = _ref.isSelectable;\n var menuPrefixCls = \"\".concat(prefixCls, \"-menu\");\n var menuItemPrefixCls = \"\".concat(prefixCls, \"-menu-item\");\n var _React$useContext = React.useContext(CascaderContext),\n fieldNames = _React$useContext.fieldNames,\n changeOnSelect = _React$useContext.changeOnSelect,\n expandTrigger = _React$useContext.expandTrigger,\n expandIcon = _React$useContext.expandIcon,\n loadingIcon = _React$useContext.loadingIcon,\n dropdownMenuColumnStyle = _React$useContext.dropdownMenuColumnStyle;\n var hoverOpen = expandTrigger === 'hover';\n // ============================ Option ============================\n var optionInfoList = React.useMemo(function () {\n return options.map(function (option) {\n var _option$FIX_LABEL;\n var disabled = option.disabled;\n var searchOptions = option[SEARCH_MARK];\n var label = (_option$FIX_LABEL = option[FIX_LABEL]) !== null && _option$FIX_LABEL !== void 0 ? _option$FIX_LABEL : option[fieldNames.label];\n var value = option[fieldNames.value];\n var isMergedLeaf = isLeaf(option, fieldNames);\n // Get real value of option. Search option is different way.\n var fullPath = searchOptions ? searchOptions.map(function (opt) {\n return opt[fieldNames.value];\n }) : [].concat(_toConsumableArray(prevValuePath), [value]);\n var fullPathKey = toPathKey(fullPath);\n var isLoading = loadingKeys.includes(fullPathKey);\n // >>>>> checked\n var checked = checkedSet.has(fullPathKey);\n // >>>>> halfChecked\n var halfChecked = halfCheckedSet.has(fullPathKey);\n return {\n disabled: disabled,\n label: label,\n value: value,\n isLeaf: isMergedLeaf,\n isLoading: isLoading,\n checked: checked,\n halfChecked: halfChecked,\n option: option,\n fullPath: fullPath,\n fullPathKey: fullPathKey\n };\n });\n }, [options, checkedSet, fieldNames, halfCheckedSet, loadingKeys, prevValuePath]);\n // ============================ Render ============================\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: menuPrefixCls,\n role: \"menu\"\n }, optionInfoList.map(function (_ref2) {\n var _classNames;\n var disabled = _ref2.disabled,\n label = _ref2.label,\n value = _ref2.value,\n isMergedLeaf = _ref2.isLeaf,\n isLoading = _ref2.isLoading,\n checked = _ref2.checked,\n halfChecked = _ref2.halfChecked,\n option = _ref2.option,\n fullPath = _ref2.fullPath,\n fullPathKey = _ref2.fullPathKey;\n // >>>>> Open\n var triggerOpenPath = function triggerOpenPath() {\n if (!disabled) {\n var nextValueCells = _toConsumableArray(fullPath);\n if (hoverOpen && isMergedLeaf) {\n nextValueCells.pop();\n }\n onActive(nextValueCells);\n }\n };\n // >>>>> Selection\n var triggerSelect = function triggerSelect() {\n if (isSelectable(option)) {\n onSelect(fullPath, isMergedLeaf);\n }\n };\n // >>>>> Title\n var title;\n if (typeof option.title === 'string') {\n title = option.title;\n } else if (typeof label === 'string') {\n title = label;\n }\n // >>>>> Render\n return /*#__PURE__*/React.createElement(\"li\", {\n key: fullPathKey,\n className: classNames(menuItemPrefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(menuItemPrefixCls, \"-expand\"), !isMergedLeaf), _defineProperty(_classNames, \"\".concat(menuItemPrefixCls, \"-active\"), activeValue === value), _defineProperty(_classNames, \"\".concat(menuItemPrefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, \"\".concat(menuItemPrefixCls, \"-loading\"), isLoading), _classNames)),\n style: dropdownMenuColumnStyle,\n role: \"menuitemcheckbox\",\n title: title,\n \"aria-checked\": checked,\n \"data-path-key\": fullPathKey,\n onClick: function onClick() {\n triggerOpenPath();\n if (!multiple || isMergedLeaf) {\n triggerSelect();\n }\n },\n onDoubleClick: function onDoubleClick() {\n if (changeOnSelect) {\n onToggleOpen(false);\n }\n },\n onMouseEnter: function onMouseEnter() {\n if (hoverOpen) {\n triggerOpenPath();\n }\n },\n onMouseDown: function onMouseDown(e) {\n // Prevent selector from blurring\n e.preventDefault();\n }\n }, multiple && /*#__PURE__*/React.createElement(Checkbox, {\n prefixCls: \"\".concat(prefixCls, \"-checkbox\"),\n checked: checked,\n halfChecked: halfChecked,\n disabled: disabled,\n onClick: function onClick(e) {\n e.stopPropagation();\n triggerSelect();\n }\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(menuItemPrefixCls, \"-content\")\n }, label), !isLoading && expandIcon && !isMergedLeaf && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(menuItemPrefixCls, \"-expand-icon\")\n }, expandIcon), isLoading && loadingIcon && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(menuItemPrefixCls, \"-loading-icon\")\n }, loadingIcon));\n }));\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport CascaderContext from '../context';\nimport { useBaseProps } from 'rc-select';\n/**\n * Control the active open options path.\n */\nexport default (function () {\n var _useBaseProps = useBaseProps(),\n multiple = _useBaseProps.multiple,\n open = _useBaseProps.open;\n var _React$useContext = React.useContext(CascaderContext),\n values = _React$useContext.values;\n // Record current dropdown active options\n // This also control the open status\n var _React$useState = React.useState([]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n activeValueCells = _React$useState2[0],\n setActiveValueCells = _React$useState2[1];\n React.useEffect(function () {\n if (open && !multiple) {\n var firstValueCells = values[0];\n setActiveValueCells(firstValueCells || []);\n }\n }, /* eslint-disable react-hooks/exhaustive-deps */\n [open]);\n return [activeValueCells, setActiveValueCells];\n});","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useBaseProps } from 'rc-select';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport { SEARCH_MARK } from '../hooks/useSearchOptions';\nexport default (function (ref, options, fieldNames, activeValueCells, setActiveValueCells, onKeyBoardSelect) {\n var _useBaseProps = useBaseProps(),\n direction = _useBaseProps.direction,\n searchValue = _useBaseProps.searchValue,\n toggleOpen = _useBaseProps.toggleOpen,\n open = _useBaseProps.open;\n var rtl = direction === 'rtl';\n var _React$useMemo = React.useMemo(function () {\n var activeIndex = -1;\n var currentOptions = options;\n var mergedActiveIndexes = [];\n var mergedActiveValueCells = [];\n var len = activeValueCells.length;\n // Fill validate active value cells and index\n var _loop = function _loop(i) {\n // Mark the active index for current options\n var nextActiveIndex = currentOptions.findIndex(function (option) {\n return option[fieldNames.value] === activeValueCells[i];\n });\n if (nextActiveIndex === -1) {\n return \"break\";\n }\n activeIndex = nextActiveIndex;\n mergedActiveIndexes.push(activeIndex);\n mergedActiveValueCells.push(activeValueCells[i]);\n currentOptions = currentOptions[activeIndex][fieldNames.children];\n };\n for (var i = 0; i < len && currentOptions; i += 1) {\n var _ret = _loop(i);\n if (_ret === \"break\") break;\n }\n // Fill last active options\n var activeOptions = options;\n for (var _i = 0; _i < mergedActiveIndexes.length - 1; _i += 1) {\n activeOptions = activeOptions[mergedActiveIndexes[_i]][fieldNames.children];\n }\n return [mergedActiveValueCells, activeIndex, activeOptions];\n }, [activeValueCells, fieldNames, options]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 3),\n validActiveValueCells = _React$useMemo2[0],\n lastActiveIndex = _React$useMemo2[1],\n lastActiveOptions = _React$useMemo2[2];\n // Update active value cells and scroll to target element\n var internalSetActiveValueCells = function internalSetActiveValueCells(next) {\n setActiveValueCells(next);\n };\n // Same options offset\n var offsetActiveOption = function offsetActiveOption(offset) {\n var len = lastActiveOptions.length;\n var currentIndex = lastActiveIndex;\n if (currentIndex === -1 && offset < 0) {\n currentIndex = len;\n }\n for (var i = 0; i < len; i += 1) {\n currentIndex = (currentIndex + offset + len) % len;\n var option = lastActiveOptions[currentIndex];\n if (option && !option.disabled) {\n var value = option[fieldNames.value];\n var nextActiveCells = validActiveValueCells.slice(0, -1).concat(value);\n internalSetActiveValueCells(nextActiveCells);\n return;\n }\n }\n };\n // Different options offset\n var prevColumn = function prevColumn() {\n if (validActiveValueCells.length > 1) {\n var nextActiveCells = validActiveValueCells.slice(0, -1);\n internalSetActiveValueCells(nextActiveCells);\n } else {\n toggleOpen(false);\n }\n };\n var nextColumn = function nextColumn() {\n var _lastActiveOptions$la;\n var nextOptions = ((_lastActiveOptions$la = lastActiveOptions[lastActiveIndex]) === null || _lastActiveOptions$la === void 0 ? void 0 : _lastActiveOptions$la[fieldNames.children]) || [];\n var nextOption = nextOptions.find(function (option) {\n return !option.disabled;\n });\n if (nextOption) {\n var nextActiveCells = [].concat(_toConsumableArray(validActiveValueCells), [nextOption[fieldNames.value]]);\n internalSetActiveValueCells(nextActiveCells);\n }\n };\n React.useImperativeHandle(ref, function () {\n return {\n // scrollTo: treeRef.current?.scrollTo,\n onKeyDown: function onKeyDown(event) {\n var which = event.which;\n switch (which) {\n // >>> Arrow keys\n case KeyCode.UP:\n case KeyCode.DOWN:\n {\n var offset = 0;\n if (which === KeyCode.UP) {\n offset = -1;\n } else if (which === KeyCode.DOWN) {\n offset = 1;\n }\n if (offset !== 0) {\n offsetActiveOption(offset);\n }\n break;\n }\n case KeyCode.LEFT:\n {\n if (rtl) {\n nextColumn();\n } else {\n prevColumn();\n }\n break;\n }\n case KeyCode.RIGHT:\n {\n if (rtl) {\n prevColumn();\n } else {\n nextColumn();\n }\n break;\n }\n case KeyCode.BACKSPACE:\n {\n if (!searchValue) {\n prevColumn();\n }\n break;\n }\n // >>> Select\n case KeyCode.ENTER:\n {\n if (validActiveValueCells.length) {\n var option = lastActiveOptions[lastActiveIndex];\n // Search option should revert back of origin options\n var originOptions = (option === null || option === void 0 ? void 0 : option[SEARCH_MARK]) || [];\n if (originOptions.length) {\n onKeyBoardSelect(originOptions.map(function (opt) {\n return opt[fieldNames.value];\n }), originOptions[originOptions.length - 1]);\n } else {\n onKeyBoardSelect(validActiveValueCells, lastActiveOptions[lastActiveIndex]);\n }\n }\n break;\n }\n // >>> Close\n case KeyCode.ESC:\n {\n toggleOpen(false);\n if (open) {\n event.stopPropagation();\n }\n }\n }\n },\n onKeyUp: function onKeyUp() {}\n };\n });\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/* eslint-disable default-case */\nimport classNames from 'classnames';\nimport { useBaseProps } from 'rc-select';\nimport * as React from 'react';\nimport CascaderContext from '../context';\nimport { isLeaf, scrollIntoParentView, toPathKey, toPathKeys, toPathValueStr } from '../utils/commonUtil';\nimport { toPathOptions } from '../utils/treeUtil';\nimport Column, { FIX_LABEL } from './Column';\nimport useActive from './useActive';\nimport useKeyboard from './useKeyboard';\nvar RefOptionList = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _optionColumns$, _optionColumns$$optio, _ref3, _classNames;\n var _useBaseProps = useBaseProps(),\n prefixCls = _useBaseProps.prefixCls,\n multiple = _useBaseProps.multiple,\n searchValue = _useBaseProps.searchValue,\n toggleOpen = _useBaseProps.toggleOpen,\n notFoundContent = _useBaseProps.notFoundContent,\n direction = _useBaseProps.direction;\n var containerRef = React.useRef();\n var rtl = direction === 'rtl';\n var _React$useContext = React.useContext(CascaderContext),\n options = _React$useContext.options,\n values = _React$useContext.values,\n halfValues = _React$useContext.halfValues,\n fieldNames = _React$useContext.fieldNames,\n changeOnSelect = _React$useContext.changeOnSelect,\n onSelect = _React$useContext.onSelect,\n searchOptions = _React$useContext.searchOptions,\n dropdownPrefixCls = _React$useContext.dropdownPrefixCls,\n loadData = _React$useContext.loadData,\n expandTrigger = _React$useContext.expandTrigger;\n var mergedPrefixCls = dropdownPrefixCls || prefixCls;\n // ========================= loadData =========================\n var _React$useState = React.useState([]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n loadingKeys = _React$useState2[0],\n setLoadingKeys = _React$useState2[1];\n var internalLoadData = function internalLoadData(valueCells) {\n // Do not load when search\n if (!loadData || searchValue) {\n return;\n }\n var optionList = toPathOptions(valueCells, options, fieldNames);\n var rawOptions = optionList.map(function (_ref) {\n var option = _ref.option;\n return option;\n });\n var lastOption = rawOptions[rawOptions.length - 1];\n if (lastOption && !isLeaf(lastOption, fieldNames)) {\n var pathKey = toPathKey(valueCells);\n setLoadingKeys(function (keys) {\n return [].concat(_toConsumableArray(keys), [pathKey]);\n });\n loadData(rawOptions);\n }\n };\n // zombieJ: This is bad. We should make this same as `rc-tree` to use Promise instead.\n React.useEffect(function () {\n if (loadingKeys.length) {\n loadingKeys.forEach(function (loadingKey) {\n var valueStrCells = toPathValueStr(loadingKey);\n var optionList = toPathOptions(valueStrCells, options, fieldNames, true).map(function (_ref2) {\n var option = _ref2.option;\n return option;\n });\n var lastOption = optionList[optionList.length - 1];\n if (!lastOption || lastOption[fieldNames.children] || isLeaf(lastOption, fieldNames)) {\n setLoadingKeys(function (keys) {\n return keys.filter(function (key) {\n return key !== loadingKey;\n });\n });\n }\n });\n }\n }, [options, loadingKeys, fieldNames]);\n // ========================== Values ==========================\n var checkedSet = React.useMemo(function () {\n return new Set(toPathKeys(values));\n }, [values]);\n var halfCheckedSet = React.useMemo(function () {\n return new Set(toPathKeys(halfValues));\n }, [halfValues]);\n // ====================== Accessibility =======================\n var _useActive = useActive(),\n _useActive2 = _slicedToArray(_useActive, 2),\n activeValueCells = _useActive2[0],\n setActiveValueCells = _useActive2[1];\n // =========================== Path ===========================\n var onPathOpen = function onPathOpen(nextValueCells) {\n setActiveValueCells(nextValueCells);\n // Trigger loadData\n internalLoadData(nextValueCells);\n };\n var isSelectable = function isSelectable(option) {\n var disabled = option.disabled;\n var isMergedLeaf = isLeaf(option, fieldNames);\n return !disabled && (isMergedLeaf || changeOnSelect || multiple);\n };\n var onPathSelect = function onPathSelect(valuePath, leaf) {\n var fromKeyboard = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n onSelect(valuePath);\n if (!multiple && (leaf || changeOnSelect && (expandTrigger === 'hover' || fromKeyboard))) {\n toggleOpen(false);\n }\n };\n // ========================== Option ==========================\n var mergedOptions = React.useMemo(function () {\n if (searchValue) {\n return searchOptions;\n }\n return options;\n }, [searchValue, searchOptions, options]);\n // ========================== Column ==========================\n var optionColumns = React.useMemo(function () {\n var optionList = [{\n options: mergedOptions\n }];\n var currentList = mergedOptions;\n var _loop = function _loop() {\n var activeValueCell = activeValueCells[i];\n var currentOption = currentList.find(function (option) {\n return option[fieldNames.value] === activeValueCell;\n });\n var subOptions = currentOption === null || currentOption === void 0 ? void 0 : currentOption[fieldNames.children];\n if (!(subOptions === null || subOptions === void 0 ? void 0 : subOptions.length)) {\n return \"break\";\n }\n currentList = subOptions;\n optionList.push({\n options: subOptions\n });\n };\n for (var i = 0; i < activeValueCells.length; i += 1) {\n var _ret = _loop();\n if (_ret === \"break\") break;\n }\n return optionList;\n }, [mergedOptions, activeValueCells, fieldNames]);\n // ========================= Keyboard =========================\n var onKeyboardSelect = function onKeyboardSelect(selectValueCells, option) {\n if (isSelectable(option)) {\n onPathSelect(selectValueCells, isLeaf(option, fieldNames), true);\n }\n };\n useKeyboard(ref, mergedOptions, fieldNames, activeValueCells, onPathOpen, onKeyboardSelect);\n // >>>>> Active Scroll\n React.useEffect(function () {\n for (var i = 0; i < activeValueCells.length; i += 1) {\n var _containerRef$current;\n var cellPath = activeValueCells.slice(0, i + 1);\n var cellKeyPath = toPathKey(cellPath);\n var ele = (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.querySelector(\"li[data-path-key=\\\"\".concat(cellKeyPath.replace(/\\\\{0,2}\"/g, '\\\\\"'), \"\\\"]\"));\n if (ele) {\n scrollIntoParentView(ele);\n }\n }\n }, [activeValueCells]);\n // ========================== Render ==========================\n // >>>>> Empty\n var isEmpty = !((_optionColumns$ = optionColumns[0]) === null || _optionColumns$ === void 0 ? void 0 : (_optionColumns$$optio = _optionColumns$.options) === null || _optionColumns$$optio === void 0 ? void 0 : _optionColumns$$optio.length);\n var emptyList = [(_ref3 = {}, _defineProperty(_ref3, fieldNames.value, '__EMPTY__'), _defineProperty(_ref3, FIX_LABEL, notFoundContent), _defineProperty(_ref3, \"disabled\", true), _ref3)];\n var columnProps = _objectSpread(_objectSpread({}, props), {}, {\n multiple: !isEmpty && multiple,\n onSelect: onPathSelect,\n onActive: onPathOpen,\n onToggleOpen: toggleOpen,\n checkedSet: checkedSet,\n halfCheckedSet: halfCheckedSet,\n loadingKeys: loadingKeys,\n isSelectable: isSelectable\n });\n // >>>>> Columns\n var mergedOptionColumns = isEmpty ? [{\n options: emptyList\n }] : optionColumns;\n var columnNodes = mergedOptionColumns.map(function (col, index) {\n var prevValuePath = activeValueCells.slice(0, index);\n var activeValue = activeValueCells[index];\n return /*#__PURE__*/React.createElement(Column, _extends({\n key: index\n }, columnProps, {\n prefixCls: mergedPrefixCls,\n options: col.options,\n prevValuePath: prevValuePath,\n activeValue: activeValue\n }));\n });\n // >>>>> Render\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(mergedPrefixCls, \"-menus\"), (_classNames = {}, _defineProperty(_classNames, \"\".concat(mergedPrefixCls, \"-menu-empty\"), isEmpty), _defineProperty(_classNames, \"\".concat(mergedPrefixCls, \"-rtl\"), rtl), _classNames)),\n ref: containerRef\n }, columnNodes);\n});\nexport default RefOptionList;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"id\", \"prefixCls\", \"fieldNames\", \"defaultValue\", \"value\", \"changeOnSelect\", \"onChange\", \"displayRender\", \"checkable\", \"searchValue\", \"onSearch\", \"showSearch\", \"expandTrigger\", \"options\", \"dropdownPrefixCls\", \"loadData\", \"popupVisible\", \"open\", \"popupClassName\", \"dropdownClassName\", \"dropdownMenuColumnStyle\", \"popupPlacement\", \"placement\", \"onDropdownVisibleChange\", \"onPopupVisibleChange\", \"expandIcon\", \"loadingIcon\", \"children\", \"dropdownMatchSelectWidth\", \"showCheckedStrategy\"];\nimport { BaseSelect } from 'rc-select';\nimport useId from \"rc-select/es/hooks/useId\";\nimport { conductCheck } from \"rc-tree/es/utils/conductUtil\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport * as React from 'react';\nimport CascaderContext from './context';\nimport useDisplayValues from './hooks/useDisplayValues';\nimport useEntities from './hooks/useEntities';\nimport useMissingValues from './hooks/useMissingValues';\nimport useRefFunc from './hooks/useRefFunc';\nimport useSearchConfig from './hooks/useSearchConfig';\nimport useSearchOptions from './hooks/useSearchOptions';\nimport OptionList from './OptionList';\nimport { fillFieldNames, SHOW_CHILD, SHOW_PARENT, toPathKey, toPathKeys } from './utils/commonUtil';\nimport { formatStrategyValues, toPathOptions } from './utils/treeUtil';\nimport warningProps, { warningNullOptions } from './utils/warningPropsUtil';\nfunction isMultipleValue(value) {\n return Array.isArray(value) && Array.isArray(value[0]);\n}\nfunction toRawValues(value) {\n if (!value) {\n return [];\n }\n if (isMultipleValue(value)) {\n return value;\n }\n return (value.length === 0 ? [] : [value]).map(function (val) {\n return Array.isArray(val) ? val : [val];\n });\n}\nvar Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var id = props.id,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-cascader' : _props$prefixCls,\n fieldNames = props.fieldNames,\n defaultValue = props.defaultValue,\n value = props.value,\n changeOnSelect = props.changeOnSelect,\n onChange = props.onChange,\n displayRender = props.displayRender,\n checkable = props.checkable,\n searchValue = props.searchValue,\n onSearch = props.onSearch,\n showSearch = props.showSearch,\n expandTrigger = props.expandTrigger,\n options = props.options,\n dropdownPrefixCls = props.dropdownPrefixCls,\n loadData = props.loadData,\n popupVisible = props.popupVisible,\n open = props.open,\n popupClassName = props.popupClassName,\n dropdownClassName = props.dropdownClassName,\n dropdownMenuColumnStyle = props.dropdownMenuColumnStyle,\n popupPlacement = props.popupPlacement,\n placement = props.placement,\n onDropdownVisibleChange = props.onDropdownVisibleChange,\n onPopupVisibleChange = props.onPopupVisibleChange,\n _props$expandIcon = props.expandIcon,\n expandIcon = _props$expandIcon === void 0 ? '>' : _props$expandIcon,\n loadingIcon = props.loadingIcon,\n children = props.children,\n _props$dropdownMatchS = props.dropdownMatchSelectWidth,\n dropdownMatchSelectWidth = _props$dropdownMatchS === void 0 ? false : _props$dropdownMatchS,\n _props$showCheckedStr = props.showCheckedStrategy,\n showCheckedStrategy = _props$showCheckedStr === void 0 ? SHOW_PARENT : _props$showCheckedStr,\n restProps = _objectWithoutProperties(props, _excluded);\n var mergedId = useId(id);\n var multiple = !!checkable;\n // =========================== Values ===========================\n var _useMergedState = useMergedState(defaultValue, {\n value: value,\n postState: toRawValues\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n rawValues = _useMergedState2[0],\n setRawValues = _useMergedState2[1];\n // ========================= FieldNames =========================\n var mergedFieldNames = React.useMemo(function () {\n return fillFieldNames(fieldNames);\n }, /* eslint-disable react-hooks/exhaustive-deps */\n [JSON.stringify(fieldNames)]);\n // =========================== Option ===========================\n var mergedOptions = React.useMemo(function () {\n return options || [];\n }, [options]);\n // Only used in multiple mode, this fn will not call in single mode\n var getPathKeyEntities = useEntities(mergedOptions, mergedFieldNames);\n /** Convert path key back to value format */\n var getValueByKeyPath = React.useCallback(function (pathKeys) {\n var keyPathEntities = getPathKeyEntities();\n return pathKeys.map(function (pathKey) {\n var nodes = keyPathEntities[pathKey].nodes;\n return nodes.map(function (node) {\n return node[mergedFieldNames.value];\n });\n });\n }, [getPathKeyEntities, mergedFieldNames]);\n // =========================== Search ===========================\n var _useMergedState3 = useMergedState('', {\n value: searchValue,\n postState: function postState(search) {\n return search || '';\n }\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n mergedSearchValue = _useMergedState4[0],\n setSearchValue = _useMergedState4[1];\n var onInternalSearch = function onInternalSearch(searchText, info) {\n setSearchValue(searchText);\n if (info.source !== 'blur' && onSearch) {\n onSearch(searchText);\n }\n };\n var _useSearchConfig = useSearchConfig(showSearch),\n _useSearchConfig2 = _slicedToArray(_useSearchConfig, 2),\n mergedShowSearch = _useSearchConfig2[0],\n searchConfig = _useSearchConfig2[1];\n var searchOptions = useSearchOptions(mergedSearchValue, mergedOptions, mergedFieldNames, dropdownPrefixCls || prefixCls, searchConfig, changeOnSelect);\n // =========================== Values ===========================\n var getMissingValues = useMissingValues(mergedOptions, mergedFieldNames);\n // Fill `rawValues` with checked conduction values\n var _React$useMemo = React.useMemo(function () {\n var _getMissingValues = getMissingValues(rawValues),\n _getMissingValues2 = _slicedToArray(_getMissingValues, 2),\n existValues = _getMissingValues2[0],\n missingValues = _getMissingValues2[1];\n if (!multiple || !rawValues.length) {\n return [existValues, [], missingValues];\n }\n var keyPathValues = toPathKeys(existValues);\n var keyPathEntities = getPathKeyEntities();\n var _conductCheck = conductCheck(keyPathValues, true, keyPathEntities),\n checkedKeys = _conductCheck.checkedKeys,\n halfCheckedKeys = _conductCheck.halfCheckedKeys;\n // Convert key back to value cells\n return [getValueByKeyPath(checkedKeys), getValueByKeyPath(halfCheckedKeys), missingValues];\n }, [multiple, rawValues, getPathKeyEntities, getValueByKeyPath, getMissingValues]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 3),\n checkedValues = _React$useMemo2[0],\n halfCheckedValues = _React$useMemo2[1],\n missingCheckedValues = _React$useMemo2[2];\n var deDuplicatedValues = React.useMemo(function () {\n var checkedKeys = toPathKeys(checkedValues);\n var deduplicateKeys = formatStrategyValues(checkedKeys, getPathKeyEntities, showCheckedStrategy);\n return [].concat(_toConsumableArray(missingCheckedValues), _toConsumableArray(getValueByKeyPath(deduplicateKeys)));\n }, [checkedValues, getPathKeyEntities, getValueByKeyPath, missingCheckedValues, showCheckedStrategy]);\n var displayValues = useDisplayValues(deDuplicatedValues, mergedOptions, mergedFieldNames, multiple, displayRender);\n // =========================== Change ===========================\n var triggerChange = useRefFunc(function (nextValues) {\n setRawValues(nextValues);\n // Save perf if no need trigger event\n if (onChange) {\n var nextRawValues = toRawValues(nextValues);\n var valueOptions = nextRawValues.map(function (valueCells) {\n return toPathOptions(valueCells, mergedOptions, mergedFieldNames).map(function (valueOpt) {\n return valueOpt.option;\n });\n });\n var triggerValues = multiple ? nextRawValues : nextRawValues[0];\n var triggerOptions = multiple ? valueOptions : valueOptions[0];\n onChange(triggerValues, triggerOptions);\n }\n });\n // =========================== Select ===========================\n var onInternalSelect = useRefFunc(function (valuePath) {\n setSearchValue('');\n if (!multiple) {\n triggerChange(valuePath);\n } else {\n // Prepare conduct required info\n var pathKey = toPathKey(valuePath);\n var checkedPathKeys = toPathKeys(checkedValues);\n var halfCheckedPathKeys = toPathKeys(halfCheckedValues);\n var existInChecked = checkedPathKeys.includes(pathKey);\n var existInMissing = missingCheckedValues.some(function (valueCells) {\n return toPathKey(valueCells) === pathKey;\n });\n // Do update\n var nextCheckedValues = checkedValues;\n var nextMissingValues = missingCheckedValues;\n if (existInMissing && !existInChecked) {\n // Missing value only do filter\n nextMissingValues = missingCheckedValues.filter(function (valueCells) {\n return toPathKey(valueCells) !== pathKey;\n });\n } else {\n // Update checked key first\n var nextRawCheckedKeys = existInChecked ? checkedPathKeys.filter(function (key) {\n return key !== pathKey;\n }) : [].concat(_toConsumableArray(checkedPathKeys), [pathKey]);\n var pathKeyEntities = getPathKeyEntities();\n // Conduction by selected or not\n var checkedKeys;\n if (existInChecked) {\n var _conductCheck2 = conductCheck(nextRawCheckedKeys, {\n checked: false,\n halfCheckedKeys: halfCheckedPathKeys\n }, pathKeyEntities);\n checkedKeys = _conductCheck2.checkedKeys;\n } else {\n var _conductCheck3 = conductCheck(nextRawCheckedKeys, true, pathKeyEntities);\n checkedKeys = _conductCheck3.checkedKeys;\n }\n // Roll up to parent level keys\n var deDuplicatedKeys = formatStrategyValues(checkedKeys, getPathKeyEntities, showCheckedStrategy);\n nextCheckedValues = getValueByKeyPath(deDuplicatedKeys);\n }\n triggerChange([].concat(_toConsumableArray(nextMissingValues), _toConsumableArray(nextCheckedValues)));\n }\n });\n // Display Value change logic\n var onDisplayValuesChange = function onDisplayValuesChange(_, info) {\n if (info.type === 'clear') {\n triggerChange([]);\n return;\n }\n // Cascader do not support `add` type. Only support `remove`\n var valueCells = info.values[0].valueCells;\n onInternalSelect(valueCells);\n };\n // ============================ Open ============================\n var mergedOpen = open !== undefined ? open : popupVisible;\n var mergedDropdownClassName = dropdownClassName || popupClassName;\n var mergedPlacement = placement || popupPlacement;\n var onInternalDropdownVisibleChange = function onInternalDropdownVisibleChange(nextVisible) {\n onDropdownVisibleChange === null || onDropdownVisibleChange === void 0 ? void 0 : onDropdownVisibleChange(nextVisible);\n onPopupVisibleChange === null || onPopupVisibleChange === void 0 ? void 0 : onPopupVisibleChange(nextVisible);\n };\n // ========================== Warning ===========================\n if (process.env.NODE_ENV !== 'production') {\n warningProps(props);\n warningNullOptions(mergedOptions, mergedFieldNames);\n }\n // ========================== Context ===========================\n var cascaderContext = React.useMemo(function () {\n return {\n options: mergedOptions,\n fieldNames: mergedFieldNames,\n values: checkedValues,\n halfValues: halfCheckedValues,\n changeOnSelect: changeOnSelect,\n onSelect: onInternalSelect,\n checkable: checkable,\n searchOptions: searchOptions,\n dropdownPrefixCls: dropdownPrefixCls,\n loadData: loadData,\n expandTrigger: expandTrigger,\n expandIcon: expandIcon,\n loadingIcon: loadingIcon,\n dropdownMenuColumnStyle: dropdownMenuColumnStyle\n };\n }, [mergedOptions, mergedFieldNames, checkedValues, halfCheckedValues, changeOnSelect, onInternalSelect, checkable, searchOptions, dropdownPrefixCls, loadData, expandTrigger, expandIcon, loadingIcon, dropdownMenuColumnStyle]);\n // ==============================================================\n // == Render ==\n // ==============================================================\n var emptyOptions = !(mergedSearchValue ? searchOptions : mergedOptions).length;\n var dropdownStyle =\n // Search to match width\n mergedSearchValue && searchConfig.matchInputWidth ||\n // Empty keep the width\n emptyOptions ? {} : {\n minWidth: 'auto'\n };\n return /*#__PURE__*/React.createElement(CascaderContext.Provider, {\n value: cascaderContext\n }, /*#__PURE__*/React.createElement(BaseSelect, _extends({}, restProps, {\n // MISC\n ref: ref,\n id: mergedId,\n prefixCls: prefixCls,\n dropdownMatchSelectWidth: dropdownMatchSelectWidth,\n dropdownStyle: dropdownStyle\n // Value\n ,\n displayValues: displayValues,\n onDisplayValuesChange: onDisplayValuesChange,\n mode: multiple ? 'multiple' : undefined\n // Search\n ,\n searchValue: mergedSearchValue,\n onSearch: onInternalSearch,\n showSearch: mergedShowSearch\n // Options\n ,\n OptionList: OptionList,\n emptyOptions: emptyOptions\n // Open\n ,\n open: mergedOpen,\n dropdownClassName: mergedDropdownClassName,\n placement: mergedPlacement,\n onDropdownVisibleChange: onInternalDropdownVisibleChange\n // Children\n ,\n getRawInputElement: function getRawInputElement() {\n return children;\n }\n })));\n});\nif (process.env.NODE_ENV !== 'production') {\n Cascader.displayName = 'Cascader';\n}\nCascader.SHOW_PARENT = SHOW_PARENT;\nCascader.SHOW_CHILD = SHOW_CHILD;\nexport default Cascader;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport { convertDataToEntities } from \"rc-tree/es/utils/treeUtil\";\nimport { VALUE_SPLIT } from '../utils/commonUtil';\n/** Lazy parse options data into conduct-able info to avoid perf issue in single mode */\nexport default (function (options, fieldNames) {\n var cacheRef = React.useRef({\n options: null,\n info: null\n });\n var getEntities = React.useCallback(function () {\n if (cacheRef.current.options !== options) {\n cacheRef.current.options = options;\n cacheRef.current.info = convertDataToEntities(options, {\n fieldNames: fieldNames,\n initWrapper: function initWrapper(wrapper) {\n return _objectSpread(_objectSpread({}, wrapper), {}, {\n pathKeyEntities: {}\n });\n },\n processEntity: function processEntity(entity, wrapper) {\n var pathKey = entity.nodes.map(function (node) {\n return node[fieldNames.value];\n }).join(VALUE_SPLIT);\n wrapper.pathKeyEntities[pathKey] = entity;\n // Overwrite origin key.\n // this is very hack but we need let conduct logic work with connect path\n entity.key = pathKey;\n }\n });\n }\n return cacheRef.current.info.pathKeyEntities;\n }, [fieldNames, options]);\n return getEntities;\n});","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\n// Convert `showSearch` to unique config\nexport default function useSearchConfig(showSearch) {\n return React.useMemo(function () {\n if (!showSearch) {\n return [false, {}];\n }\n var searchConfig = {\n matchInputWidth: true,\n limit: 50\n };\n if (showSearch && _typeof(showSearch) === 'object') {\n searchConfig = _objectSpread(_objectSpread({}, searchConfig), showSearch);\n }\n if (searchConfig.limit <= 0) {\n delete searchConfig.limit;\n if (process.env.NODE_ENV !== 'production') {\n warning(false, \"'limit' of showSearch should be positive number or false.\");\n }\n }\n return [true, searchConfig];\n }, [showSearch]);\n}","import * as React from 'react';\nimport { toPathOptions } from '../utils/treeUtil';\nexport default (function (options, fieldNames) {\n return React.useCallback(function (rawValues) {\n var missingValues = [];\n var existsValues = [];\n rawValues.forEach(function (valueCell) {\n var pathOptions = toPathOptions(valueCell, options, fieldNames);\n if (pathOptions.every(function (opt) {\n return opt.option;\n })) {\n existsValues.push(valueCell);\n } else {\n missingValues.push(valueCell);\n }\n });\n return [existsValues, missingValues];\n }, [options, fieldNames]);\n});","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { toPathOptions } from '../utils/treeUtil';\nimport * as React from 'react';\nimport { toPathKey } from '../utils/commonUtil';\nexport default (function (rawValues, options, fieldNames, multiple, displayRender) {\n return React.useMemo(function () {\n var mergedDisplayRender = displayRender ||\n // Default displayRender\n function (labels) {\n var mergedLabels = multiple ? labels.slice(-1) : labels;\n var SPLIT = ' / ';\n if (mergedLabels.every(function (label) {\n return ['string', 'number'].includes(_typeof(label));\n })) {\n return mergedLabels.join(SPLIT);\n }\n // If exist non-string value, use ReactNode instead\n return mergedLabels.reduce(function (list, label, index) {\n var keyedLabel = /*#__PURE__*/React.isValidElement(label) ? /*#__PURE__*/React.cloneElement(label, {\n key: index\n }) : label;\n if (index === 0) {\n return [keyedLabel];\n }\n return [].concat(_toConsumableArray(list), [SPLIT, keyedLabel]);\n }, []);\n };\n return rawValues.map(function (valueCells) {\n var _valueOptions, _valueOptions$option;\n var valueOptions = toPathOptions(valueCells, options, fieldNames);\n var label = mergedDisplayRender(valueOptions.map(function (_ref) {\n var _option$fieldNames$la;\n var option = _ref.option,\n value = _ref.value;\n return (_option$fieldNames$la = option === null || option === void 0 ? void 0 : option[fieldNames.label]) !== null && _option$fieldNames$la !== void 0 ? _option$fieldNames$la : value;\n }), valueOptions.map(function (_ref2) {\n var option = _ref2.option;\n return option;\n }));\n var value = toPathKey(valueCells);\n return {\n label: label,\n value: value,\n key: value,\n valueCells: valueCells,\n disabled: (_valueOptions = valueOptions[valueOptions.length - 1]) === null || _valueOptions === void 0 ? void 0 : (_valueOptions$option = _valueOptions.option) === null || _valueOptions$option === void 0 ? void 0 : _valueOptions$option.disabled\n };\n });\n }, [rawValues, options, fieldNames, displayRender, multiple]);\n});","import Cascader from './Cascader';\nexport default Cascader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport classNames from 'classnames';\nimport RcCascader from 'rc-cascader';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { ConfigContext } from '../config-provider';\nimport defaultRenderEmpty from '../config-provider/defaultRenderEmpty';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport SizeContext from '../config-provider/SizeContext';\nimport { useCompactItemContext } from '../space/Compact';\nimport { FormItemInputContext } from '../form/context';\nimport getIcons from '../select/utils/iconUtil';\nimport { getTransitionDirection, getTransitionName } from '../_util/motion';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport warning from '../_util/warning';\nvar SHOW_CHILD = RcCascader.SHOW_CHILD,\n SHOW_PARENT = RcCascader.SHOW_PARENT;\nfunction highlightKeyword(str, lowerKeyword, prefixCls) {\n var cells = str.toLowerCase().split(lowerKeyword).reduce(function (list, cur, index) {\n return index === 0 ? [cur] : [].concat(_toConsumableArray(list), [lowerKeyword, cur]);\n }, []);\n var fillCells = [];\n var start = 0;\n cells.forEach(function (cell, index) {\n var end = start + cell.length;\n var originWorld = str.slice(start, end);\n start = end;\n if (index % 2 === 1) {\n originWorld =\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-menu-item-keyword\"),\n key: \"seperator-\".concat(index)\n }, originWorld);\n }\n fillCells.push(originWorld);\n });\n return fillCells;\n}\nvar defaultSearchRender = function defaultSearchRender(inputValue, path, prefixCls, fieldNames) {\n var optionList = [];\n // We do lower here to save perf\n var lower = inputValue.toLowerCase();\n path.forEach(function (node, index) {\n if (index !== 0) {\n optionList.push(' / ');\n }\n var label = node[fieldNames.label];\n var type = _typeof(label);\n if (type === 'string' || type === 'number') {\n label = highlightKeyword(String(label), lower, prefixCls);\n }\n optionList.push(label);\n });\n return optionList;\n};\nvar Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames2;\n var customizePrefixCls = props.prefixCls,\n customizeSize = props.size,\n customDisabled = props.disabled,\n className = props.className,\n multiple = props.multiple,\n _props$bordered = props.bordered,\n bordered = _props$bordered === void 0 ? true : _props$bordered,\n transitionName = props.transitionName,\n _props$choiceTransiti = props.choiceTransitionName,\n choiceTransitionName = _props$choiceTransiti === void 0 ? '' : _props$choiceTransiti,\n popupClassName = props.popupClassName,\n dropdownClassName = props.dropdownClassName,\n expandIcon = props.expandIcon,\n placement = props.placement,\n showSearch = props.showSearch,\n _props$allowClear = props.allowClear,\n allowClear = _props$allowClear === void 0 ? true : _props$allowClear,\n notFoundContent = props.notFoundContent,\n direction = props.direction,\n getPopupContainer = props.getPopupContainer,\n customStatus = props.status,\n showArrow = props.showArrow,\n rest = __rest(props, [\"prefixCls\", \"size\", \"disabled\", \"className\", \"multiple\", \"bordered\", \"transitionName\", \"choiceTransitionName\", \"popupClassName\", \"dropdownClassName\", \"expandIcon\", \"placement\", \"showSearch\", \"allowClear\", \"notFoundContent\", \"direction\", \"getPopupContainer\", \"status\", \"showArrow\"]);\n var restProps = omit(rest, ['suffixIcon']);\n var _useContext = useContext(ConfigContext),\n getContextPopupContainer = _useContext.getPopupContainer,\n getPrefixCls = _useContext.getPrefixCls,\n renderEmpty = _useContext.renderEmpty,\n rootDirection = _useContext.direction;\n var mergedDirection = direction || rootDirection;\n var isRtl = mergedDirection === 'rtl';\n // =================== Form =====================\n var _useContext2 = useContext(FormItemInputContext),\n contextStatus = _useContext2.status,\n hasFeedback = _useContext2.hasFeedback,\n isFormItemInput = _useContext2.isFormItemInput,\n feedbackIcon = _useContext2.feedbackIcon;\n var mergedStatus = getMergedStatus(contextStatus, customStatus);\n // =================== Warning =====================\n process.env.NODE_ENV !== \"production\" ? warning(!dropdownClassName, 'Cascader', '`dropdownClassName` is deprecated which will be removed in next major version. Please use `popupClassName` instead.') : void 0;\n // =================== No Found ====================\n var mergedNotFoundContent = notFoundContent || (renderEmpty || defaultRenderEmpty)('Cascader');\n // ==================== Prefix =====================\n var rootPrefixCls = getPrefixCls();\n var prefixCls = getPrefixCls('select', customizePrefixCls);\n var cascaderPrefixCls = getPrefixCls('cascader', customizePrefixCls);\n var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n compactSize = _useCompactItemContex.compactSize,\n compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n // =================== Dropdown ====================\n var mergedDropdownClassName = classNames(popupClassName || dropdownClassName, \"\".concat(cascaderPrefixCls, \"-dropdown\"), _defineProperty({}, \"\".concat(cascaderPrefixCls, \"-dropdown-rtl\"), mergedDirection === 'rtl'));\n // ==================== Search =====================\n var mergedShowSearch = React.useMemo(function () {\n if (!showSearch) {\n return showSearch;\n }\n var searchConfig = {\n render: defaultSearchRender\n };\n if (_typeof(showSearch) === 'object') {\n searchConfig = _extends(_extends({}, searchConfig), showSearch);\n }\n return searchConfig;\n }, [showSearch]);\n // ===================== Size ======================\n var size = React.useContext(SizeContext);\n var mergedSize = compactSize || customizeSize || size;\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n // ===================== Icon ======================\n var mergedExpandIcon = expandIcon;\n if (!expandIcon) {\n mergedExpandIcon = isRtl ? /*#__PURE__*/React.createElement(LeftOutlined, null) : /*#__PURE__*/React.createElement(RightOutlined, null);\n }\n var loadingIcon = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-menu-item-loading-icon\")\n }, /*#__PURE__*/React.createElement(LoadingOutlined, {\n spin: true\n }));\n // =================== Multiple ====================\n var checkable = React.useMemo(function () {\n return multiple ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(cascaderPrefixCls, \"-checkbox-inner\")\n }) : false;\n }, [multiple]);\n // ===================== Icons =====================\n var mergedShowArrow = showArrow !== undefined ? showArrow : props.loading || !multiple;\n var _getIcons = getIcons(_extends(_extends({}, props), {\n hasFeedback: hasFeedback,\n feedbackIcon: feedbackIcon,\n showArrow: mergedShowArrow,\n multiple: multiple,\n prefixCls: prefixCls\n })),\n suffixIcon = _getIcons.suffixIcon,\n removeIcon = _getIcons.removeIcon,\n clearIcon = _getIcons.clearIcon;\n // ===================== Placement =====================\n var getPlacement = function getPlacement() {\n if (placement !== undefined) {\n return placement;\n }\n return direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n };\n // ==================== Render =====================\n return /*#__PURE__*/React.createElement(RcCascader, _extends({\n prefixCls: prefixCls,\n className: classNames(!customizePrefixCls && cascaderPrefixCls, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-lg\"), mergedSize === 'large'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-sm\"), mergedSize === 'small'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), isRtl), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-borderless\"), !bordered), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-in-form-item\"), isFormItemInput), _classNames2), getStatusClassNames(prefixCls, mergedStatus, hasFeedback), compactItemClassnames, className),\n disabled: mergedDisabled\n }, restProps, {\n direction: mergedDirection,\n placement: getPlacement(),\n notFoundContent: mergedNotFoundContent,\n allowClear: allowClear,\n showSearch: mergedShowSearch,\n expandIcon: mergedExpandIcon,\n inputIcon: suffixIcon,\n removeIcon: removeIcon,\n clearIcon: clearIcon,\n loadingIcon: loadingIcon,\n checkable: checkable,\n dropdownClassName: mergedDropdownClassName,\n dropdownPrefixCls: customizePrefixCls || cascaderPrefixCls,\n choiceTransitionName: getTransitionName(rootPrefixCls, '', choiceTransitionName),\n transitionName: getTransitionName(rootPrefixCls, getTransitionDirection(placement), transitionName),\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n ref: ref,\n showArrow: hasFeedback || showArrow\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n Cascader.displayName = 'Cascader';\n}\nCascader.SHOW_PARENT = SHOW_PARENT;\nCascader.SHOW_CHILD = SHOW_CHILD;\nexport default Cascader;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Cascader, Tooltip } from \"antd\";\nimport { removePrefixPath } from \"../../utils/stuff\";\nimport { Utils } from \"@react-awesome-query-builder/ui\";\nvar useOnPropsChanged = Utils.ReactUtils.useOnPropsChanged;\nvar getFieldParts = Utils.ConfigUtils.getFieldParts;\n\n// see type FieldItemSearchableKeys\nvar mapFieldItemToOptionKeys = {\n key: \"key\",\n path: \"_path\",\n label: \"_label\",\n altLabel: \"altLabel\",\n tooltip: \"tooltip\",\n grouplabel: \"grouplabel\",\n fullLabel: \"fullLabel\"\n};\nvar searchInPath = false; // true - search in all path, false - only in last path item\nvar FieldCascader = /*#__PURE__*/function (_Component) {\n _inherits(FieldCascader, _Component);\n var _super = _createSuper(FieldCascader);\n function FieldCascader(props) {\n var _this;\n _classCallCheck(this, FieldCascader);\n _this = _super.call(this, props);\n _this.setOpen = function (newOpen) {\n _this.setState({\n open: newOpen\n });\n };\n _this.onChange = function (keys) {\n var parentField = _this.props.parentField;\n var dotNotationToPath = function dotNotationToPath(str) {\n return str.split(\".\");\n };\n var parentPath = parentField ? dotNotationToPath(parentField) : [];\n _this.props.setField([].concat(_toConsumableArray(parentPath), _toConsumableArray(keys)));\n };\n _this.filterOption = function (input, path) {\n var config = _this.props.config;\n var keysForFilter = config.settings.fieldItemKeysForSearch.map(function (k) {\n return mapFieldItemToOptionKeys[k];\n });\n var filterOneOption = function filterOneOption(option) {\n var valueForFilter = keysForFilter.map(function (k) {\n return typeof option[k] == \"string\" ? option[k] : \"\";\n }).join(\"\\0\");\n var matches = valueForFilter.toLowerCase().indexOf(input.toLowerCase()) >= 0;\n return matches;\n };\n return searchInPath ? path.some(filterOneOption) : filterOneOption(path[path.length - 1]);\n };\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.onPropsChanged(props);\n _this.state = {\n open: false\n };\n return _this;\n }\n _createClass(FieldCascader, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var items = nextProps.items;\n this.items = this.getItems(items);\n }\n }, {\n key: \"getItems\",\n value: function getItems(items) {\n var _this2 = this;\n return items.map(function (item) {\n var items = item.items,\n matchesType = item.matchesType,\n label = item.label,\n key = item.key,\n path = item.path,\n tooltip = item.tooltip;\n var finalLabel = matchesType ? /*#__PURE__*/React.createElement(\"b\", null, label) : label;\n if (tooltip) {\n finalLabel = /*#__PURE__*/React.createElement(Tooltip, {\n title: tooltip\n }, finalLabel);\n }\n if (items) {\n return _objectSpread(_objectSpread({}, item), {}, {\n key: key,\n _path: path,\n items: _this2.getItems(items),\n label: finalLabel,\n _label: label\n });\n } else {\n return _objectSpread(_objectSpread({}, item), {}, {\n key: key,\n _path: path,\n label: finalLabel,\n _label: label\n });\n }\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n customProps = _this$props.customProps,\n items = _this$props.items,\n placeholder = _this$props.placeholder,\n errorText = _this$props.errorText,\n selectedPath = _this$props.selectedPath,\n selectedLabel = _this$props.selectedLabel,\n selectedOpts = _this$props.selectedOpts,\n selectedAltLabel = _this$props.selectedAltLabel,\n selectedFullLabel = _this$props.selectedFullLabel,\n readonly = _this$props.readonly,\n selectedField = _this$props.selectedField,\n parentField = _this$props.parentField;\n var open = this.state.open;\n var customProps2 = _objectSpread({}, customProps);\n if (customProps2.showSearch) {\n customProps2.showSearch = {\n filter: this.filterOption\n };\n }\n var fieldSeparator = config.settings.fieldSeparator;\n var parentFieldPath = getFieldParts(parentField, config);\n var value = removePrefixPath(selectedPath, parentFieldPath);\n var res = /*#__PURE__*/React.createElement(Cascader, _extends({\n open: open,\n onDropdownVisibleChange: this.setOpen,\n status: errorText && \"error\",\n fieldNames: {\n label: \"label\",\n value: \"key\",\n children: \"items\"\n },\n options: this.items,\n value: value,\n onChange: this.onChange,\n allowClear: false,\n placeholder: placeholder,\n size: config.settings.renderSize,\n disabled: readonly\n }, customProps2));\n var tooltipText = selectedOpts.tooltip || selectedAltLabel;\n if (tooltipText == selectedLabel) tooltipText = null;\n if (tooltipText) {\n res = /*#__PURE__*/React.createElement(Tooltip, {\n title: !open ? tooltipText : null\n }, res);\n }\n return res;\n }\n }]);\n return FieldCascader;\n}(Component);\nFieldCascader.propTypes = {\n config: PropTypes.object.isRequired,\n customProps: PropTypes.object,\n errorText: PropTypes.string,\n items: PropTypes.array.isRequired,\n placeholder: PropTypes.string,\n selectedKey: PropTypes.string,\n selectedKeys: PropTypes.array,\n selectedPath: PropTypes.array,\n selectedLabel: PropTypes.string,\n selectedAltLabel: PropTypes.string,\n selectedFullLabel: PropTypes.string,\n selectedOpts: PropTypes.object,\n readonly: PropTypes.bool,\n //actions\n setField: PropTypes.func.isRequired\n};\nexport { FieldCascader as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { Component } from \"react\";\nimport { Tooltip, TreeSelect } from \"antd\";\nimport { BUILT_IN_PLACEMENTS, SELECT_WIDTH_OFFSET_RIGHT, calcTextWidth } from \"../../utils/domUtils\";\nimport PropTypes from \"prop-types\";\nimport { Utils } from \"@react-awesome-query-builder/ui\";\nvar useOnPropsChanged = Utils.ReactUtils.useOnPropsChanged;\nvar mapFieldItemToOptionKeys = {\n key: \"_value2\",\n path: \"value\",\n label: \"label\",\n altLabel: \"altLabel\",\n tooltip: \"_tooltip\",\n grouplabel: \"_grouplabel\",\n fullLabel: \"fullLabel\"\n};\nvar FieldTreeSelect = /*#__PURE__*/function (_Component) {\n _inherits(FieldTreeSelect, _Component);\n var _super = _createSuper(FieldTreeSelect);\n function FieldTreeSelect(props) {\n var _this;\n _classCallCheck(this, FieldTreeSelect);\n _this = _super.call(this, props);\n _this.setOpen = function (newOpen) {\n _this.setState({\n open: newOpen\n });\n };\n _this.onChange = function (key) {\n _this.props.setField(key);\n };\n _this.filterTreeNode = function (input, option) {\n var config = _this.props.config;\n var keysForFilter = config.settings.fieldItemKeysForSearch.map(function (k) {\n return mapFieldItemToOptionKeys[k];\n });\n var valueForFilter = keysForFilter.map(function (k) {\n return typeof option[k] == \"string\" ? option[k] : \"\";\n }).join(\"\\0\");\n var matches = valueForFilter.toLowerCase().indexOf(input.toLowerCase()) >= 0;\n return matches;\n };\n useOnPropsChanged(_assertThisInitialized(_this));\n _this.onPropsChanged(props);\n _this.state = {\n open: false\n };\n return _this;\n }\n _createClass(FieldTreeSelect, [{\n key: \"onPropsChanged\",\n value: function onPropsChanged(nextProps) {\n var items = nextProps.items,\n fieldSeparator = nextProps.config.settings.fieldSeparator;\n var optionsMaxWidth = 0;\n var initialOffset = 24; // arrow + checkbox for leftmost item\n var offset = 20;\n var padding = 5 * 2;\n this.treeData = this.getTreeData(items, function (_ref) {\n var label = _ref.label,\n path = _ref.path;\n optionsMaxWidth = Math.max(optionsMaxWidth, calcTextWidth(label, null) + padding + (path.split(fieldSeparator).length - 1) * offset + initialOffset);\n });\n if (!isNaN(optionsMaxWidth) && optionsMaxWidth) {\n this.optionsMaxWidth = optionsMaxWidth;\n }\n }\n }, {\n key: \"getTreeData\",\n value: function getTreeData(fields) {\n var _this2 = this;\n var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n return fields.map(function (field) {\n var items = field.items,\n key = field.key,\n path = field.path,\n label = field.label,\n fullLabel = field.fullLabel,\n altLabel = field.altLabel,\n tooltip = field.tooltip,\n disabled = field.disabled,\n grouplabel = field.grouplabel,\n matchesType = field.matchesType;\n if (fn) fn(field);\n var pathKey = path || key;\n var optionText = matchesType ? /*#__PURE__*/React.createElement(\"b\", null, label) : label;\n var option = tooltip ? /*#__PURE__*/React.createElement(Tooltip, {\n title: tooltip\n }, optionText) : optionText;\n if (items) {\n return {\n value: pathKey,\n title: option,\n children: _this2.getTreeData(items, fn),\n selectable: false,\n altLabel: altLabel,\n fullLabel: fullLabel,\n label: label,\n disabled: disabled,\n _value2: key,\n _tooltip: tooltip,\n _grouplabel: grouplabel\n };\n } else {\n return {\n value: pathKey,\n title: option,\n altLabel: altLabel,\n fullLabel: fullLabel,\n label: label,\n disabled: disabled,\n _value2: key,\n _tooltip: tooltip,\n _grouplabel: grouplabel\n };\n }\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n _this$props$customPro = _this$props.customProps,\n customProps = _this$props$customPro === void 0 ? {} : _this$props$customPro,\n placeholder = _this$props.placeholder,\n errorText = _this$props.errorText,\n selectedKey = _this$props.selectedKey,\n selectedLabel = _this$props.selectedLabel,\n selectedOpts = _this$props.selectedOpts,\n selectedAltLabel = _this$props.selectedAltLabel,\n selectedFullLabel = _this$props.selectedFullLabel,\n readonly = _this$props.readonly;\n var open = this.state.open;\n var _config$settings = config.settings,\n renderSize = _config$settings.renderSize,\n fieldSeparator = _config$settings.fieldSeparator;\n var tooltipText = selectedAltLabel || selectedFullLabel;\n if (tooltipText == selectedLabel) tooltipText = null;\n var selectedPath = selectedKey ? selectedKey.split(fieldSeparator) : null;\n var treeDefaultExpandedKeys = selectedPath && selectedPath.length > 1 ? selectedPath.slice(0, -1).map(function (_key, i) {\n return selectedPath.slice(0, i + 1).join(fieldSeparator);\n }) : null;\n var placeholderWidth = calcTextWidth(placeholder);\n var isFieldSelected = !!selectedKey;\n var minWidth = placeholderWidth ? placeholderWidth + SELECT_WIDTH_OFFSET_RIGHT + 6 : null;\n var dropdownMinWidth = 100;\n var dropdownMaxWidth = 800;\n var useAutoWidth = true || !this.optionsMaxWidth; //tip: \"auto\" is good, but width will jump on expand/collapse\n var dropdownWidth = Math.max(dropdownMinWidth, Math.min(dropdownMaxWidth, this.optionsMaxWidth));\n var res = /*#__PURE__*/React.createElement(TreeSelect, _extends({\n open: open,\n onDropdownVisibleChange: this.setOpen,\n status: errorText && \"error\",\n onChange: this.onChange,\n value: selectedKey || undefined,\n style: {\n minWidth: minWidth,\n width: isFieldSelected ? null : minWidth\n },\n dropdownStyle: {\n width: useAutoWidth ? \"auto\" : dropdownWidth + 20,\n paddingRight: \"10px\"\n },\n multiple: false,\n treeCheckable: false,\n treeDataSimpleMode: false,\n treeData: this.treeData,\n size: renderSize,\n placeholder: placeholder,\n filterTreeNode: this.filterTreeNode,\n treeDefaultExpandedKeys: treeDefaultExpandedKeys,\n popupMatchSelectWidth: false,\n disabled: readonly\n }, customProps));\n if (tooltipText && !selectedOpts.tooltip) {\n res = /*#__PURE__*/React.createElement(Tooltip, {\n title: !open ? tooltipText : null\n }, res);\n }\n return res;\n }\n }]);\n return FieldTreeSelect;\n}(Component);\nFieldTreeSelect.propTypes = {\n config: PropTypes.object.isRequired,\n customProps: PropTypes.object,\n errorText: PropTypes.string,\n items: PropTypes.array.isRequired,\n placeholder: PropTypes.string,\n selectedKey: PropTypes.string,\n selectedKeys: PropTypes.array,\n selectedPath: PropTypes.array,\n selectedLabel: PropTypes.string,\n selectedAltLabel: PropTypes.string,\n selectedFullLabel: PropTypes.string,\n selectedOpts: PropTypes.object,\n readonly: PropTypes.bool,\n //actions\n setField: PropTypes.func.isRequired\n};\nexport { FieldTreeSelect as default };","// This icon file is generated automatically.\nvar PlusCircleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" } }] }, \"name\": \"plus-circle\", \"theme\": \"outlined\" };\nexport default PlusCircleOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport PlusCircleOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusCircleOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar PlusCircleOutlined = function PlusCircleOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: PlusCircleOutlinedSvg\n }));\n};\nPlusCircleOutlined.displayName = 'PlusCircleOutlined';\nexport default /*#__PURE__*/React.forwardRef(PlusCircleOutlined);","// This icon file is generated automatically.\nvar DeleteFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M864 256H736v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zm-200 0H360v-72h304v72z\" } }] }, \"name\": \"delete\", \"theme\": \"filled\" };\nexport default DeleteFilled;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport DeleteFilledSvg from \"@ant-design/icons-svg/es/asn/DeleteFilled\";\nimport AntdIcon from '../components/AntdIcon';\nvar DeleteFilled = function DeleteFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: DeleteFilledSvg\n }));\n};\nDeleteFilled.displayName = 'DeleteFilled';\nexport default /*#__PURE__*/React.forwardRef(DeleteFilled);","import React from \"react\";\nimport { PlusOutlined, PlusCircleOutlined, DeleteFilled, HolderOutlined } from \"@ant-design/icons\";\nimport { Utils } from \"@react-awesome-query-builder/ui\";\nvar DragIcon = Utils.DragIcon;\nvar typeToIcon = {\n \"addRule\": /*#__PURE__*/React.createElement(PlusOutlined, null),\n \"addGroup\": /*#__PURE__*/React.createElement(PlusCircleOutlined, null),\n \"delRule\": /*#__PURE__*/React.createElement(DeleteFilled, null),\n \"delGroup\": /*#__PURE__*/React.createElement(DeleteFilled, null),\n \"delRuleGroup\": /*#__PURE__*/React.createElement(DeleteFilled, null),\n \"addRuleGroup\": /*#__PURE__*/React.createElement(PlusOutlined, null),\n \"addRuleGroupExt\": /*#__PURE__*/React.createElement(PlusOutlined, null),\n \"drag\": /*#__PURE__*/React.createElement(HolderOutlined, null)\n};\nexport default (function (_ref) {\n var type = _ref.type;\n var icon = typeToIcon[type] || null;\n if (!icon && type === \"drag\") {\n icon = /*#__PURE__*/React.createElement(DragIcon, null);\n }\n return icon;\n});","import React from \"react\";\nimport { Button } from \"antd\";\nvar hideLabelsFor = {\n \"addRuleGroup\": true,\n \"delGroup\": true,\n \"delRuleGroup\": true,\n \"delRule\": true\n};\nvar typeToClass = {\n \"addRule\": \"action action--ADD-RULE\",\n \"addGroup\": \"action action--ADD-GROUP\",\n \"delRule\": \"action action--DELETE\",\n \"delGroup\": \"action action--DELETE\",\n \"delRuleGroup\": \"action action--DELETE\",\n \"addRuleGroup\": \"action action--ADD-RULE\"\n};\nvar typeToType = {\n \"delRule\": \"text\"\n // \"delGroup\": \"default\",\n // \"delRuleGroup\": \"default\",\n};\n\nvar dangerFor = {\n \"delRule\": true,\n \"delGroup\": true,\n \"delRuleGroup\": true\n};\nexport default (function (props) {\n var type = props.type,\n onClick = props.onClick,\n label = props.label,\n readonly = props.readonly,\n settings = props.config.settings,\n renderIcon = props.renderIcon;\n var renderSize = settings.renderSize;\n var iconProps = {\n type: type,\n readonly: readonly\n };\n var icon = renderIcon === null || renderIcon === void 0 ? void 0 : renderIcon(iconProps);\n var btnLabel = hideLabelsFor[type] ? \"\" : label;\n return /*#__PURE__*/React.createElement(Button, {\n danger: dangerFor[type] === true,\n key: type,\n type: typeToType[type] || \"default\",\n icon: icon,\n className: typeToClass[type],\n onClick: onClick,\n size: renderSize,\n disabled: readonly\n }, btnLabel);\n});","import React from \"react\";\nimport { Button } from \"antd\";\nvar ButtonGroup = Button.Group;\nexport default (function (_ref) {\n var children = _ref.children,\n settings = _ref.config.settings;\n var renderSize = settings.renderSize;\n return /*#__PURE__*/React.createElement(ButtonGroup, {\n size: renderSize\n }, children);\n});","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nimport map from \"lodash/map\";\nimport { Button, Radio } from \"antd\";\nvar ButtonGroup = Button.Group;\nvar ConjsButton = /*#__PURE__*/function (_PureComponent) {\n _inherits(ConjsButton, _PureComponent);\n var _super = _createSuper(ConjsButton);\n function ConjsButton() {\n var _this;\n _classCallCheck(this, ConjsButton);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.onClick = function (_e) {\n var _this$props = _this.props,\n setConjunction = _this$props.setConjunction,\n item = _this$props.item;\n var conj = item.key;\n setConjunction(conj);\n };\n return _this;\n }\n _createClass(ConjsButton, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n disabled = _this$props2.disabled,\n item = _this$props2.item;\n return /*#__PURE__*/React.createElement(Button, {\n disabled: disabled,\n type: item.checked ? \"primary\" : null,\n onClick: this.onClick\n }, item.label);\n }\n }]);\n return ConjsButton;\n}(PureComponent);\nvar ConjsButtons = /*#__PURE__*/function (_PureComponent2) {\n _inherits(ConjsButtons, _PureComponent2);\n var _super2 = _createSuper(ConjsButtons);\n function ConjsButtons() {\n var _this2;\n _classCallCheck(this, ConjsButtons);\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n _this2.setNot = function (e) {\n var _this2$props = _this2.props,\n setNot = _this2$props.setNot,\n not = _this2$props.not;\n if (setNot) setNot(!not);\n };\n return _this2;\n }\n _createClass(ConjsButtons, [{\n key: \"render\",\n value: function render() {\n var _this$props3 = this.props,\n readonly = _this$props3.readonly,\n disabled = _this$props3.disabled,\n not = _this$props3.not,\n conjunctionOptions = _this$props3.conjunctionOptions,\n config = _this$props3.config,\n setConjunction = _this$props3.setConjunction,\n notLabel = _this$props3.notLabel,\n showNot = _this$props3.showNot;\n var conjsCount = Object.keys(conjunctionOptions).length;\n var lessThenTwo = disabled;\n var _config$settings = config.settings,\n forceShowConj = _config$settings.forceShowConj,\n renderSize = _config$settings.renderSize;\n var showConj = forceShowConj || conjsCount > 1 && !lessThenTwo;\n return /*#__PURE__*/React.createElement(ButtonGroup, {\n key: \"group-conjs-buttons\",\n size: renderSize,\n disabled: disabled || readonly\n }, showNot && (readonly ? not : true) && /*#__PURE__*/React.createElement(Button, {\n key: \"group-not\",\n onClick: this.setNot,\n type: not ? \"primary\" : null,\n disabled: readonly\n }, notLabel), showConj && map(conjunctionOptions, function (item, _index) {\n return (readonly || disabled) && !item.checked ? null : /*#__PURE__*/React.createElement(ConjsButton, {\n key: item.id,\n item: item,\n disabled: disabled || readonly,\n setConjunction: setConjunction\n });\n }));\n }\n }]);\n return ConjsButtons;\n}(PureComponent); // obsolete\n/*\nconst RadioButton = Radio.Button;\nconst RadioGroup = Radio.Group;\nclass ConjsRadios extends PureComponent {\n setConjunction = (e) => {\n const {setConjunction} = this.props;\n const conj = e.target.value;\n setConjunction(conj);\n }\n\n render() {\n const {readonly, disabled, selectedConjunction, conjunctionOptions, config} = this.props;\n return (\n <RadioGroup\n key=\"group-conjs-radios\"\n disabled={disabled}\n value={selectedConjunction}\n size={config.settings.renderSize}\n onChange={this.setConjunction}\n >\n {map(conjunctionOptions, (item, _index) => readonly && !item.checked ? null : (\n <RadioButton\n key={item.id}\n value={item.key}\n //checked={item.checked}\n >{item.label}</RadioButton>\n ))}\n </RadioGroup>\n );\n }\n}\n*/\nexport { ConjsButtons as default };","// This icon file is generated automatically.\nvar LockFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM540 701v53c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-53a48.01 48.01 0 1156 0zm152-237H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224z\" } }] }, \"name\": \"lock\", \"theme\": \"filled\" };\nexport default LockFilled;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport LockFilledSvg from \"@ant-design/icons-svg/es/asn/LockFilled\";\nimport AntdIcon from '../components/AntdIcon';\nvar LockFilled = function LockFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: LockFilledSvg\n }));\n};\nLockFilled.displayName = 'LockFilled';\nexport default /*#__PURE__*/React.forwardRef(LockFilled);","// This icon file is generated automatically.\nvar UnlockOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M832 464H332V240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v68c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-68c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zm-40 376H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 10-56 0z\" } }] }, \"name\": \"unlock\", \"theme\": \"outlined\" };\nexport default UnlockOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport UnlockOutlinedSvg from \"@ant-design/icons-svg/es/asn/UnlockOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar UnlockOutlined = function UnlockOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: UnlockOutlinedSvg\n }));\n};\nUnlockOutlined.displayName = 'UnlockOutlined';\nexport default /*#__PURE__*/React.forwardRef(UnlockOutlined);","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\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); }; }\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; } }\nimport React, { PureComponent } from \"react\";\nimport { Popover, Radio } from \"antd\";\nvar RadioButton = Radio.Button;\nvar RadioGroup = Radio.Group;\nimport { EllipsisOutlined } from \"@ant-design/icons\";\nvar ValueSources = /*#__PURE__*/function (_PureComponent) {\n _inherits(ValueSources, _PureComponent);\n var _super = _createSuper(ValueSources);\n function ValueSources() {\n var _this;\n _classCallCheck(this, ValueSources);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.onChange = function (e) {\n var setValueSrc = _this.props.setValueSrc;\n setValueSrc(e.target.value);\n };\n return _this;\n }\n _createClass(ValueSources, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n config = _this$props.config,\n valueSources = _this$props.valueSources,\n valueSrc = _this$props.valueSrc,\n readonly = _this$props.readonly,\n title = _this$props.title;\n var content = /*#__PURE__*/React.createElement(RadioGroup, {\n value: valueSrc || \"value\",\n size: config.settings.renderSize,\n onChange: this.onChange,\n disabled: readonly\n }, valueSources.map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n srcKey = _ref2[0],\n info = _ref2[1];\n return /*#__PURE__*/React.createElement(RadioButton, {\n key: srcKey,\n value: srcKey\n }, info.label);\n }));\n return /*#__PURE__*/React.createElement(\"span\", null, /*#__PURE__*/React.createElement(Popover, {\n content: content,\n title: title\n }, /*#__PURE__*/React.createElement(EllipsisOutlined, null)));\n }\n }]);\n return ValueSources;\n}(PureComponent);\nexport { ValueSources as default };","import { Modal } from \"antd\";\nvar confirm = Modal.confirm;\nexport default (function (options) {\n confirm(options);\n});","import React from \"react\";\n\n// value widgets\nimport DateWidget from \"./value/Date\";\nimport DateTimeWidget from \"./value/DateTime\";\nimport TimeWidget from \"./value/Time\";\nimport SelectWidget from \"./value/Select\";\nimport TextWidget from \"./value/Text\";\nimport TextAreaWidget from \"./value/TextArea\";\nimport NumberWidget from \"./value/Number\";\nimport SliderWidget from \"./value/Slider\";\nimport RangeWidget from \"./value/Range\";\nimport BooleanWidget from \"./value/Boolean\";\nimport MultiSelectWidget from \"./value/MultiSelect\";\nimport AutocompleteWidget from \"./value/Autocomplete\";\nimport TreeSelectWidget from \"./value/TreeSelect\";\n\n// field select widgets\nimport FieldSelect from \"./core/FieldSelect\";\nimport FieldDropdown from \"./core/FieldDropdown\";\nimport FieldCascader from \"./core/FieldCascader\";\nimport FieldTreeSelect from \"./core/FieldTreeSelect\";\n\n// core components\nimport Icon from \"./core/Icon\";\nimport Button from \"./core/Button\";\nimport ButtonGroup from \"./core/ButtonGroup\";\nimport Conjs from \"./core/Conjs\";\nimport Switch from \"./core/Switch\";\nimport ValueSources from \"./core/ValueSources\";\nimport confirm from \"./core/confirm\";\nimport { ConfigProvider } from \"antd\";\nvar Provider = function Provider(_ref) {\n var config = _ref.config,\n children = _ref.children;\n return /*#__PURE__*/React.createElement(ConfigProvider, {\n locale: config.settings.locale.antd\n }, children);\n};\nexport default {\n DateWidget: DateWidget,\n DateTimeWidget: DateTimeWidget,\n TimeWidget: TimeWidget,\n SelectWidget: SelectWidget,\n TextWidget: TextWidget,\n TextAreaWidget: TextAreaWidget,\n NumberWidget: NumberWidget,\n SliderWidget: SliderWidget,\n RangeWidget: RangeWidget,\n BooleanWidget: BooleanWidget,\n MultiSelectWidget: MultiSelectWidget,\n AutocompleteWidget: AutocompleteWidget,\n TreeSelectWidget: TreeSelectWidget,\n FieldSelect: FieldSelect,\n FieldDropdown: FieldDropdown,\n FieldCascader: FieldCascader,\n FieldTreeSelect: FieldTreeSelect,\n Icon: Icon,\n Button: Button,\n ButtonGroup: ButtonGroup,\n Conjs: Conjs,\n Switch: Switch,\n ValueSources: ValueSources,\n confirm: confirm,\n Provider: Provider\n};","import React from \"react\";\nimport { Switch, Button } from \"antd\";\nimport { LockFilled, UnlockOutlined } from \"@ant-design/icons\";\nexport default (function (_ref) {\n var value = _ref.value,\n setValue = _ref.setValue,\n label = _ref.label,\n checkedLabel = _ref.checkedLabel,\n hideLabel = _ref.hideLabel,\n id = _ref.id,\n config = _ref.config,\n type = _ref.type;\n var renderSize = config.settings.renderSize;\n var onSwitch = function onSwitch(switchValue) {\n return setValue(switchValue);\n };\n var onClick = function onClick() {\n return setValue(!value);\n };\n var postfix = type;\n var showLabel = hideLabel ? null : value ? checkedLabel || label : label;\n if (type == \"lock\") {\n return /*#__PURE__*/React.createElement(Button, {\n key: id + postfix,\n type: value ? \"danger\" : undefined,\n icon: value ? /*#__PURE__*/React.createElement(LockFilled, null) : /*#__PURE__*/React.createElement(UnlockOutlined, null),\n onClick: onClick,\n checked: !!value,\n size: renderSize\n }, showLabel);\n }\n return /*#__PURE__*/React.createElement(Switch, {\n key: id + postfix,\n checkedChildren: checkedLabel || label,\n unCheckedChildren: value ? checkedLabel || label : label,\n onChange: onSwitch,\n checked: !!value,\n size: renderSize\n });\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nimport React from \"react\";\nimport en_US from \"antd/es/locale/en_US\";\nimport AntdWidgets from \"../widgets\";\nimport { normalizeListValues } from \"../utils/stuff\";\nimport { BasicConfig, Utils } from \"@react-awesome-query-builder/ui\";\nvar settings = _objectSpread(_objectSpread({}, BasicConfig.settings), {}, {\n renderField: function renderField(props, _ref) {\n var RCE = _ref.RCE,\n FieldSelect = _ref.W.FieldSelect;\n return RCE(FieldSelect, props);\n },\n // renderField: (props, {RCE, W: {FieldDropdown}}) => RCE(FieldDropdown, props),\n // renderField: (props, {RCE, W: {FieldCascader}}) => RCE(FieldCascader, props),\n // renderField: (props, {RCE, W: {FieldTreeSelect}}) => RCE(FieldTreeSelect, props),\n\n renderOperator: function renderOperator(props, _ref2) {\n var RCE = _ref2.RCE,\n FieldSelect = _ref2.W.FieldSelect;\n return RCE(FieldSelect, props);\n },\n // renderOperator: (props, {RCE, W: {FieldDropdown}}) => RCE(FieldDropdown, props),\n\n renderFunc: function renderFunc(props, _ref3) {\n var RCE = _ref3.RCE,\n FieldSelect = _ref3.W.FieldSelect;\n return RCE(FieldSelect, props);\n },\n renderConjs: function renderConjs(props, _ref4) {\n var RCE = _ref4.RCE,\n Conjs = _ref4.W.Conjs;\n return RCE(Conjs, props);\n },\n renderSwitch: function renderSwitch(props, _ref5) {\n var RCE = _ref5.RCE,\n Switch = _ref5.W.Switch;\n return RCE(Switch, props);\n },\n renderButton: function renderButton(props, _ref6) {\n var RCE = _ref6.RCE,\n Button = _ref6.W.Button;\n return RCE(Button, props);\n },\n renderIcon: function renderIcon(props, _ref7) {\n var RCE = _ref7.RCE,\n Icon = _ref7.W.Icon;\n return RCE(Icon, props);\n },\n renderButtonGroup: function renderButtonGroup(props, _ref8) {\n var RCE = _ref8.RCE,\n ButtonGroup = _ref8.W.ButtonGroup;\n return RCE(ButtonGroup, props);\n },\n renderValueSources: function renderValueSources(props, _ref9) {\n var RCE = _ref9.RCE,\n ValueSources = _ref9.W.ValueSources;\n return RCE(ValueSources, props);\n },\n renderFieldSources: function renderFieldSources(props, _ref10) {\n var RCE = _ref10.RCE,\n ValueSources = _ref10.W.ValueSources;\n return RCE(ValueSources, props);\n },\n renderProvider: function renderProvider(props, _ref11) {\n var RCE = _ref11.RCE,\n Provider = _ref11.W.Provider;\n return RCE(Provider, props);\n },\n renderConfirm: function renderConfirm(props, _ref12) {\n var confirm = _ref12.W.confirm;\n return confirm(props);\n },\n // localization\n locale: _objectSpread({}, BasicConfig.settings.locale),\n removeInvalidMultiSelectValuesOnLoad: false,\n // can be removed manually in UI\n normalizeListValues: function normalizeListValues() {\n var _this$utils$normalize;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_this$utils$normalize = this.utils.normalizeListValues).call.apply(_this$utils$normalize, [null].concat(args));\n }\n});\nvar widgets = _objectSpread(_objectSpread({}, BasicConfig.widgets), {}, {\n text: _objectSpread(_objectSpread({}, BasicConfig.widgets.text), {}, {\n factory: function factory(props, _ref13) {\n var RCE = _ref13.RCE,\n TextWidget = _ref13.W.TextWidget;\n return RCE(TextWidget, props);\n }\n }),\n textarea: _objectSpread(_objectSpread({}, BasicConfig.widgets.textarea), {}, {\n factory: function factory(props, _ref14) {\n var RCE = _ref14.RCE,\n TextAreaWidget = _ref14.W.TextAreaWidget;\n return RCE(TextAreaWidget, props);\n }\n }),\n number: _objectSpread(_objectSpread({}, BasicConfig.widgets.number), {}, {\n factory: function factory(props, _ref15) {\n var RCE = _ref15.RCE,\n NumberWidget = _ref15.W.NumberWidget;\n return RCE(NumberWidget, props);\n }\n }),\n multiselect: _objectSpread(_objectSpread({}, BasicConfig.widgets.multiselect), {}, {\n factory: function factory(props, _ref16) {\n var RCE = _ref16.RCE,\n _ref16$W = _ref16.W,\n AutocompleteWidget = _ref16$W.AutocompleteWidget,\n MultiSelectWidget = _ref16$W.MultiSelectWidget;\n return props.asyncFetch || props.showSearch ? RCE(AutocompleteWidget, _objectSpread(_objectSpread({}, props), {}, {\n multiple: true\n })) : RCE(MultiSelectWidget, props);\n }\n }),\n select: _objectSpread(_objectSpread({}, BasicConfig.widgets.select), {}, {\n factory: function factory(props, _ref17) {\n var RCE = _ref17.RCE,\n _ref17$W = _ref17.W,\n AutocompleteWidget = _ref17$W.AutocompleteWidget,\n SelectWidget = _ref17$W.SelectWidget;\n return props.asyncFetch || props.showSearch ? RCE(AutocompleteWidget, props) : RCE(SelectWidget, props);\n }\n }),\n slider: _objectSpread(_objectSpread({}, BasicConfig.widgets.slider), {}, {\n factory: function factory(props, _ref18) {\n var RCE = _ref18.RCE,\n SliderWidget = _ref18.W.SliderWidget;\n return RCE(SliderWidget, props);\n }\n }),\n \"boolean\": _objectSpread(_objectSpread({}, BasicConfig.widgets[\"boolean\"]), {}, {\n factory: function factory(props, _ref19) {\n var RCE = _ref19.RCE,\n BooleanWidget = _ref19.W.BooleanWidget;\n return RCE(BooleanWidget, props);\n }\n }),\n date: _objectSpread(_objectSpread({}, BasicConfig.widgets.date), {}, {\n factory: function factory(props, _ref20) {\n var RCE = _ref20.RCE,\n DateWidget = _ref20.W.DateWidget;\n return RCE(DateWidget, props);\n }\n }),\n time: _objectSpread(_objectSpread({}, BasicConfig.widgets.time), {}, {\n factory: function factory(props, _ref21) {\n var RCE = _ref21.RCE,\n TimeWidget = _ref21.W.TimeWidget;\n return RCE(TimeWidget, props);\n }\n }),\n datetime: _objectSpread(_objectSpread({}, BasicConfig.widgets.datetime), {}, {\n factory: function factory(props, _ref22) {\n var RCE = _ref22.RCE,\n DateTimeWidget = _ref22.W.DateTimeWidget;\n return RCE(DateTimeWidget, props);\n }\n }),\n rangeslider: _objectSpread(_objectSpread({}, BasicConfig.widgets.rangeslider), {}, {\n factory: function factory(props, _ref23) {\n var RCE = _ref23.RCE,\n RangeWidget = _ref23.W.RangeWidget;\n return RCE(RangeWidget, props);\n }\n }),\n treeselect: _objectSpread(_objectSpread({}, BasicConfig.widgets.treeselect), {}, {\n factory: function factory(props, _ref24) {\n var RCE = _ref24.RCE,\n TreeSelectWidget = _ref24.W.TreeSelectWidget;\n return RCE(TreeSelectWidget, props);\n }\n }),\n treemultiselect: _objectSpread(_objectSpread({}, BasicConfig.widgets.treemultiselect), {}, {\n factory: function factory(props, _ref25) {\n var RCE = _ref25.RCE,\n TreeSelectWidget = _ref25.W.TreeSelectWidget;\n return RCE(TreeSelectWidget, _objectSpread(_objectSpread({}, props), {}, {\n treeMultiple: true\n }));\n }\n })\n});\nvar types = _objectSpread({}, BasicConfig.types);\nvar ctx = _objectSpread(_objectSpread({}, BasicConfig.ctx), {}, {\n utils: _objectSpread(_objectSpread({}, BasicConfig.ctx.utils), {}, {\n normalizeListValues: normalizeListValues\n }),\n W: _objectSpread(_objectSpread({}, BasicConfig.ctx.W), AntdWidgets)\n});\nvar config = _objectSpread(_objectSpread({}, BasicConfig), {}, {\n ctx: ctx,\n types: types,\n widgets: widgets,\n settings: settings\n});\nconfig = Utils.ConfigMixins.addMixins(config, [\"rangeslider\", \"treeselect\", \"treemultiselect\", \"rangeable__date\"]);\nexport default config;","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","'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 });\nconst promise_pool_1 = require(\"./promise-pool\");\nexports.default = promise_pool_1.PromisePool;\n__exportStar(require(\"./contracts\"), exports);\n__exportStar(require(\"./promise-pool\"), exports);\n__exportStar(require(\"./promise-pool-error\"), exports);\n__exportStar(require(\"./return-value\"), exports);\n__exportStar(require(\"./stop-the-promise-pool-error\"), exports);\n__exportStar(require(\"./validation-error\"), exports);\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PromisePoolError = void 0;\nclass PromisePoolError extends Error {\n /**\n * Create a new instance for the given `message` and `item`.\n *\n * @param error The original error\n * @param item The item causing the error\n */\n constructor(error, item) {\n super();\n this.raw = error;\n this.item = item;\n this.name = this.constructor.name;\n this.message = this.messageFrom(error);\n Error.captureStackTrace(this, this.constructor);\n }\n /**\n * Returns a new promise pool error instance wrapping the `error` and `item`.\n *\n * @param {*} error\n * @param {*} item\n *\n * @returns {PromisePoolError}\n */\n static createFrom(error, item) {\n return new this(error, item);\n }\n /**\n * Returns the error message from the given `error`.\n *\n * @param {*} error\n *\n * @returns {String}\n */\n messageFrom(error) {\n if (error instanceof Error) {\n return error.message;\n }\n if (typeof error === 'object') {\n return error.message;\n }\n if (typeof error === 'string' || typeof error === 'number') {\n return error.toString();\n }\n return '';\n }\n}\nexports.PromisePoolError = PromisePoolError;\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PromisePoolExecutor = void 0;\nconst promise_pool_1 = require(\"./promise-pool\");\nconst promise_pool_error_1 = require(\"./promise-pool-error\");\nconst stop_the_promise_pool_error_1 = require(\"./stop-the-promise-pool-error\");\nconst validation_error_1 = require(\"./validation-error\");\nclass PromisePoolExecutor {\n /**\n * Creates a new promise pool executer instance with a default concurrency of 10.\n */\n constructor() {\n this.meta = {\n tasks: [],\n items: [],\n errors: [],\n results: [],\n stopped: false,\n concurrency: 10,\n shouldResultsCorrespond: false,\n processedItems: [],\n taskTimeout: 0\n };\n this.handler = () => { };\n this.errorHandler = undefined;\n this.onTaskStartedHandlers = [];\n this.onTaskFinishedHandlers = [];\n }\n /**\n * Set the number of tasks to process concurrently the promise pool.\n *\n * @param {Integer} concurrency\n *\n * @returns {PromisePoolExecutor}\n */\n useConcurrency(concurrency) {\n if (!this.isValidConcurrency(concurrency)) {\n throw validation_error_1.ValidationError.createFrom(`\"concurrency\" must be a number, 1 or up. Received \"${concurrency}\" (${typeof concurrency})`);\n }\n this.meta.concurrency = concurrency;\n return this;\n }\n /**\n * Determine whether the given `concurrency` value is valid.\n *\n * @param {Number} concurrency\n *\n * @returns {Boolean}\n */\n isValidConcurrency(concurrency) {\n return typeof concurrency === 'number' && concurrency >= 1;\n }\n /**\n * Set the timeout in ms for the pool handler\n *\n * @param {Number} timeout\n *\n * @returns {PromisePool}\n */\n withTaskTimeout(timeout) {\n this.meta.taskTimeout = timeout;\n return this;\n }\n /**\n * Returns the number of concurrently processed tasks.\n *\n * @returns {Number}\n */\n concurrency() {\n return this.meta.concurrency;\n }\n /**\n * Assign whether to keep corresponding results between source items and resulting tasks.\n */\n useCorrespondingResults(shouldResultsCorrespond) {\n this.meta.shouldResultsCorrespond = shouldResultsCorrespond;\n return this;\n }\n /**\n * Determine whether to keep corresponding results between source items and resulting tasks.\n */\n shouldUseCorrespondingResults() {\n return this.meta.shouldResultsCorrespond;\n }\n /**\n * Returns the task timeout in milliseconds.\n */\n taskTimeout() {\n return this.meta.taskTimeout;\n }\n /**\n * Set the items to be processed in the promise pool.\n *\n * @param {Array} items\n *\n * @returns {PromisePoolExecutor}\n */\n for(items) {\n this.meta.items = items;\n return this;\n }\n /**\n * Returns the list of items to process.\n *\n * @returns {T[]}\n */\n items() {\n return this.meta.items;\n }\n /**\n * Returns the number of items to process.\n *\n * @returns {Number}\n */\n itemsCount() {\n return this.items().length;\n }\n /**\n * Returns the list of active tasks.\n *\n * @returns {Array}\n */\n tasks() {\n return this.meta.tasks;\n }\n /**\n * Returns the number of currently active tasks.\n *\n * @returns {Number}\n *\n * @deprecated use the `activeTasksCount()` method (plural naming) instead\n */\n activeTaskCount() {\n return this.activeTasksCount();\n }\n /**\n * Returns the number of currently active tasks.\n *\n * @returns {Number}\n */\n activeTasksCount() {\n return this.tasks().length;\n }\n /**\n * Returns the list of processed items.\n *\n * @returns {T[]}\n */\n processedItems() {\n return this.meta.processedItems;\n }\n /**\n * Returns the number of processed items.\n *\n * @returns {Number}\n */\n processedCount() {\n return this.processedItems().length;\n }\n /**\n * Returns the percentage progress of items that have been processed.\n */\n processedPercentage() {\n return (this.processedCount() / this.itemsCount()) * 100;\n }\n /**\n * Returns the list of results.\n *\n * @returns {R[]}\n */\n results() {\n return this.meta.results;\n }\n /**\n * Returns the list of errors.\n *\n * @returns {Array<PromisePoolError<T>>}\n */\n errors() {\n return this.meta.errors;\n }\n /**\n * Set the handler that is applied to each item.\n *\n * @param {Function} action\n *\n * @returns {PromisePoolExecutor}\n */\n withHandler(action) {\n this.handler = action;\n return this;\n }\n /**\n * Determine whether a custom error handle is available.\n *\n * @returns {Boolean}\n */\n hasErrorHandler() {\n return !!this.errorHandler;\n }\n /**\n * Set the error handler function to execute when an error occurs.\n *\n * @param {Function} errorHandler\n *\n * @returns {PromisePoolExecutor}\n */\n handleError(handler) {\n this.errorHandler = handler;\n return this;\n }\n /**\n * Set the handler function to execute when started a task.\n *\n * @param {Function} handler\n *\n * @returns {this}\n */\n onTaskStarted(handlers) {\n this.onTaskStartedHandlers = handlers;\n return this;\n }\n /**\n * Assign the given callback `handler` function to run when a task finished.\n *\n * @param {OnProgressCallback<T>} handlers\n *\n * @returns {this}\n */\n onTaskFinished(handlers) {\n this.onTaskFinishedHandlers = handlers;\n return this;\n }\n /**\n * Determines whether the number of active tasks is greater or equal to the concurrency limit.\n *\n * @returns {Boolean}\n */\n hasReachedConcurrencyLimit() {\n return this.activeTasksCount() >= this.concurrency();\n }\n /**\n * Stop a promise pool processing.\n */\n stop() {\n this.markAsStopped();\n throw new stop_the_promise_pool_error_1.StopThePromisePoolError();\n }\n /**\n * Mark the promise pool as stopped.\n *\n * @returns {PromisePoolExecutor}\n */\n markAsStopped() {\n this.meta.stopped = true;\n return this;\n }\n /**\n * Determine whether the pool is stopped.\n *\n * @returns {Boolean}\n */\n isStopped() {\n return this.meta.stopped;\n }\n /**\n * Start processing the promise pool.\n *\n * @returns {ReturnValue}\n */\n async start() {\n return await this\n .validateInputs()\n .prepareResultsArray()\n .process();\n }\n /**\n * Determine whether the pool should stop.\n *\n * @returns {PromisePoolExecutor}\n *\n * @throws\n */\n validateInputs() {\n if (typeof this.handler !== 'function') {\n throw validation_error_1.ValidationError.createFrom('The first parameter for the .process(fn) method must be a function');\n }\n const timeout = this.taskTimeout();\n if (!(timeout == null || (typeof timeout === 'number' && timeout >= 0))) {\n throw validation_error_1.ValidationError.createFrom(`\"timeout\" must be undefined or a number. A number must be 0 or up. Received \"${String(timeout)}\" (${typeof timeout})`);\n }\n if (!Array.isArray(this.items())) {\n throw validation_error_1.ValidationError.createFrom(`\"items\" must be an array. Received \"${typeof this.items()}\"`);\n }\n if (this.errorHandler && typeof this.errorHandler !== 'function') {\n throw validation_error_1.ValidationError.createFrom(`The error handler must be a function. Received \"${typeof this.errorHandler}\"`);\n }\n this.onTaskStartedHandlers.forEach(handler => {\n if (handler && typeof handler !== 'function') {\n throw validation_error_1.ValidationError.createFrom(`The onTaskStarted handler must be a function. Received \"${typeof handler}\"`);\n }\n });\n this.onTaskFinishedHandlers.forEach(handler => {\n if (handler && typeof handler !== 'function') {\n throw validation_error_1.ValidationError.createFrom(`The error handler must be a function. Received \"${typeof handler}\"`);\n }\n });\n return this;\n }\n /**\n * Prefill the results array with `notRun` symbol values if results should correspond.\n */\n prepareResultsArray() {\n if (this.shouldUseCorrespondingResults()) {\n this.meta.results = Array(this.items().length).fill(promise_pool_1.PromisePool.notRun);\n }\n return this;\n }\n /**\n * Starts processing the promise pool by iterating over the items\n * and running each item through the async `callback` function.\n *\n * @param {Function} callback\n *\n * @returns {Promise}\n */\n async process() {\n for (const [index, item] of this.items().entries()) {\n if (this.isStopped()) {\n break;\n }\n await this.waitForProcessingSlot();\n this.startProcessing(item, index);\n }\n return await this.drained();\n }\n /**\n * Wait for one of the active tasks to finish processing.\n */\n async waitForProcessingSlot() {\n /**\n * We’re using a while loop here because it’s possible to decrease the pool’s\n * concurrency at runtime. We need to wait for as many tasks as needed to\n * finish processing before moving on to process the remaining tasks.\n */\n while (this.hasReachedConcurrencyLimit()) {\n await this.waitForActiveTaskToFinish();\n }\n }\n /**\n * Wait for the next, currently active task to finish processing.\n */\n async waitForActiveTaskToFinish() {\n await Promise.race(this.tasks());\n }\n /**\n * Create a processing function for the given `item`.\n *\n * @param {T} item\n * @param {number} index\n */\n startProcessing(item, index) {\n const task = this.createTaskFor(item, index)\n .then(result => {\n this.save(result, index).removeActive(task);\n })\n .catch(async (error) => {\n await this.handleErrorFor(error, item, index);\n this.removeActive(task);\n })\n .finally(() => {\n this.processedItems().push(item);\n this.runOnTaskFinishedHandlers(item);\n });\n this.tasks().push(task);\n this.runOnTaskStartedHandlers(item);\n }\n /**\n * Ensures a returned promise for the processing of the given `item`.\n *\n * @param {T} item\n * @param {number} index\n *\n * @returns {*}\n */\n async createTaskFor(item, index) {\n if (this.taskTimeout() === undefined) {\n return this.handler(item, index, this);\n }\n return Promise.race([\n this.handler(item, index, this),\n this.createTaskTimeout(item)\n ]);\n }\n /**\n * Returns a promise that times-out after the configured task timeout.\n */\n async createTaskTimeout(item) {\n return new Promise((_resolve, reject) => {\n setTimeout(() => {\n reject(new promise_pool_error_1.PromisePoolError(`Promise in pool timed out after ${this.taskTimeout()}ms`, item));\n }, this.taskTimeout());\n });\n }\n /**\n * Save the given calculation `result`, possibly at the provided `position`.\n *\n * @param {*} result\n * @param {number} position\n *\n * @returns {PromisePoolExecutor}\n */\n save(result, position) {\n this.shouldUseCorrespondingResults()\n ? this.results()[position] = result\n : this.results().push(result);\n return this;\n }\n /**\n * Remove the given `task` from the list of active tasks.\n *\n * @param {Promise} task\n */\n removeActive(task) {\n this.tasks().splice(this.tasks().indexOf(task), 1);\n return this;\n }\n /**\n * Create and save an error for the the given `item`.\n *\n * @param {Error} error\n * @param {T} item\n * @param {number} index\n */\n async handleErrorFor(error, item, index) {\n if (this.shouldUseCorrespondingResults()) {\n this.results()[index] = promise_pool_1.PromisePool.failed;\n }\n if (this.isStoppingThePoolError(error)) {\n return;\n }\n if (this.isValidationError(error)) {\n this.markAsStopped();\n throw error;\n }\n this.hasErrorHandler()\n ? await this.runErrorHandlerFor(error, item)\n : this.saveErrorFor(error, item);\n }\n /**\n * Determine whether the given `error` is a `StopThePromisePoolError` instance.\n *\n * @param {Error} error\n *\n * @returns {Boolean}\n */\n isStoppingThePoolError(error) {\n return error instanceof stop_the_promise_pool_error_1.StopThePromisePoolError;\n }\n /**\n * Determine whether the given `error` is a `ValidationError` instance.\n *\n * @param {Error} error\n *\n * @returns {Boolean}\n */\n isValidationError(error) {\n return error instanceof validation_error_1.ValidationError;\n }\n /**\n * Run the user’s error handler, if available.\n *\n * @param {Error} processingError\n * @param {T} item\n */\n async runErrorHandlerFor(processingError, item) {\n var _a;\n try {\n await ((_a = this.errorHandler) === null || _a === void 0 ? void 0 : _a.call(this, processingError, item, this));\n }\n catch (error) {\n this.rethrowIfNotStoppingThePool(error);\n }\n }\n /**\n * Run the onTaskStarted handlers.\n */\n runOnTaskStartedHandlers(item) {\n this.onTaskStartedHandlers.forEach(handler => {\n handler(item, this);\n });\n }\n /**\n * Run the onTaskFinished handlers.\n */\n runOnTaskFinishedHandlers(item) {\n this.onTaskFinishedHandlers.forEach(handler => {\n handler(item, this);\n });\n }\n /**\n * Rethrow the given `error` if it’s not an instance of `StopThePromisePoolError`.\n *\n * @param {Error} error\n */\n rethrowIfNotStoppingThePool(error) {\n if (this.isStoppingThePoolError(error)) {\n return;\n }\n throw error;\n }\n /**\n * Create and save an error for the the given `item`.\n *\n * @param {T} item\n */\n saveErrorFor(error, item) {\n this.errors().push(promise_pool_error_1.PromisePoolError.createFrom(error, item));\n }\n /**\n * Wait for all active tasks to finish. Once all the tasks finished\n * processing, returns an object containing the results and errors.\n *\n * @returns {Object}\n */\n async drained() {\n await this.drainActiveTasks();\n return {\n errors: this.errors(),\n results: this.results()\n };\n }\n /**\n * Wait for all of the active tasks to finish processing.\n */\n async drainActiveTasks() {\n await Promise.all(this.tasks());\n }\n}\nexports.PromisePoolExecutor = PromisePoolExecutor;\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PromisePool = void 0;\nconst promise_pool_executor_1 = require(\"./promise-pool-executor\");\nclass PromisePool {\n /**\n * Instantiates a new promise pool with a default `concurrency: 10` and `items: []`.\n *\n * @param {Object} options\n */\n constructor(items) {\n this.timeout = undefined;\n this.concurrency = 10;\n this.shouldResultsCorrespond = false;\n this.items = items !== null && items !== void 0 ? items : [];\n this.errorHandler = undefined;\n this.onTaskStartedHandlers = [];\n this.onTaskFinishedHandlers = [];\n }\n /**\n * Set the number of tasks to process concurrently in the promise pool.\n *\n * @param {Integer} concurrency\n *\n * @returns {PromisePool}\n */\n withConcurrency(concurrency) {\n this.concurrency = concurrency;\n return this;\n }\n /**\n * Set the number of tasks to process concurrently in the promise pool.\n *\n * @param {Number} concurrency\n *\n * @returns {PromisePool}\n */\n static withConcurrency(concurrency) {\n return new this().withConcurrency(concurrency);\n }\n /**\n * Set the timeout in milliseconds for the pool handler.\n *\n * @param {Number} timeout\n *\n * @returns {PromisePool}\n */\n withTaskTimeout(timeout) {\n this.timeout = timeout;\n return this;\n }\n /**\n * Set the timeout in milliseconds for the pool handler.\n *\n * @param {Number} timeout\n *\n * @returns {PromisePool}\n */\n static withTaskTimeout(timeout) {\n return new this().withTaskTimeout(timeout);\n }\n /**\n * Set the items to be processed in the promise pool.\n *\n * @param {T[]} items\n *\n * @returns {PromisePool}\n */\n for(items) {\n return typeof this.timeout === 'number'\n ? new PromisePool(items).withConcurrency(this.concurrency).withTaskTimeout(this.timeout)\n : new PromisePool(items).withConcurrency(this.concurrency);\n }\n /**\n * Set the items to be processed in the promise pool.\n *\n * @param {T[]} items\n *\n * @returns {PromisePool}\n */\n static for(items) {\n return new this().for(items);\n }\n /**\n * Set the error handler function to execute when an error occurs.\n *\n * @param {ErrorHandler<T>} handler\n *\n * @returns {PromisePool}\n */\n handleError(handler) {\n this.errorHandler = handler;\n return this;\n }\n /**\n * Assign the given callback `handler` function to run when a task starts.\n *\n * @param {OnProgressCallback<T>} handler\n *\n * @returns {PromisePool}\n */\n onTaskStarted(handler) {\n this.onTaskStartedHandlers.push(handler);\n return this;\n }\n /**\n * Assign the given callback `handler` function to run when a task finished.\n *\n * @param {OnProgressCallback<T>} handler\n *\n * @returns {PromisePool}\n */\n onTaskFinished(handler) {\n this.onTaskFinishedHandlers.push(handler);\n return this;\n }\n /**\n * Assign whether to keep corresponding results between source items and resulting tasks.\n */\n useCorrespondingResults() {\n this.shouldResultsCorrespond = true;\n return this;\n }\n /**\n * Starts processing the promise pool by iterating over the items\n * and running each item through the async `callback` function.\n *\n * @param {ProcessHandler} The async processing function receiving each item from the `items` array.\n *\n * @returns Promise<{ results, errors }>\n */\n async process(callback) {\n return new promise_pool_executor_1.PromisePoolExecutor()\n .useConcurrency(this.concurrency)\n .useCorrespondingResults(this.shouldResultsCorrespond)\n .withTaskTimeout(this.timeout)\n .withHandler(callback)\n .handleError(this.errorHandler)\n .onTaskStarted(this.onTaskStartedHandlers)\n .onTaskFinished(this.onTaskFinishedHandlers)\n .for(this.items)\n .start();\n }\n}\nexports.PromisePool = PromisePool;\nPromisePool.notRun = Symbol('notRun');\nPromisePool.failed = Symbol('failed');\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StopThePromisePoolError = void 0;\nclass StopThePromisePoolError extends Error {\n}\nexports.StopThePromisePoolError = StopThePromisePoolError;\n","'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValidationError = void 0;\nclass ValidationError extends Error {\n /**\n * Create a new instance for the given `message`.\n *\n * @param message The error message\n */\n constructor(message) {\n super(message);\n Error.captureStackTrace(this, this.constructor);\n }\n /**\n * Returns a validation error with the given `message`.\n */\n static createFrom(message) {\n return new this(message);\n }\n}\nexports.ValidationError = ValidationError;\n","/**\n * Compare [semver](https://semver.org/) version strings to find greater, equal or lesser.\n * This library supports the full semver specification, including comparing versions with different number of digits like `1.0.0`, `1.0`, `1`, and pre-release versions like `1.0.0-alpha`.\n * @param v1 - First version to compare\n * @param v2 - Second version to compare\n * @returns Numeric value compatible with the [Array.sort(fn) interface](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Parameters).\n */\nexport const compareVersions = (v1: string, v2: string) => {\n // validate input and split into segments\n const n1 = validateAndParse(v1);\n const n2 = validateAndParse(v2);\n\n // pop off the patch\n const p1 = n1.pop();\n const p2 = n2.pop();\n\n // validate numbers\n const r = compareSegments(n1, n2);\n if (r !== 0) return r;\n\n // validate pre-release\n if (p1 && p2) {\n return compareSegments(p1.split('.'), p2.split('.'));\n } else if (p1 || p2) {\n return p1 ? -1 : 1;\n }\n\n return 0;\n};\n\n/**\n * Validate [semver](https://semver.org/) version strings.\n *\n * @param version Version number to validate\n * @returns `true` if the version number is a valid semver version number, `false` otherwise.\n *\n * @example\n * ```\n * validate('1.0.0-rc.1'); // return true\n * validate('1.0-rc.1'); // return false\n * validate('foo'); // return false\n * ```\n */\nexport const validate = (version: string) =>\n typeof version === 'string' && /^[v\\d]/.test(version) && semver.test(version);\n\n/**\n * Allowed arithmetic operators\n */\nexport type CompareOperator = '>' | '>=' | '=' | '<' | '<=';\n\n/**\n * Compare [semver](https://semver.org/) version strings using the specified operator.\n *\n * @param v1 First version to compare\n * @param v2 Second version to compare\n * @param operator Allowed arithmetic operator to use\n * @returns `true` if the comparison between the firstVersion and the secondVersion satisfies the operator, `false` otherwise.\n *\n * @example\n * ```\n * compare('10.1.8', '10.0.4', '>'); // return true\n * compare('10.0.1', '10.0.1', '='); // return true\n * compare('10.1.1', '10.2.2', '<'); // return true\n * compare('10.1.1', '10.2.2', '<='); // return true\n * compare('10.1.1', '10.2.2', '>='); // return false\n * ```\n */\nexport const compare = (v1: string, v2: string, operator: CompareOperator) => {\n // validate input operator\n assertValidOperator(operator);\n\n // since result of compareVersions can only be -1 or 0 or 1\n // a simple map can be used to replace switch\n const res = compareVersions(v1, v2);\n\n return operatorResMap[operator].includes(res);\n};\n\n/**\n * Match [npm semver](https://docs.npmjs.com/cli/v6/using-npm/semver) version range.\n *\n * @param version Version number to match\n * @param range Range pattern for version\n * @returns `true` if the version number is within the range, `false` otherwise.\n *\n * @example\n * ```\n * satisfies('1.1.0', '^1.0.0'); // return true\n * satisfies('1.1.0', '~1.0.0'); // return false\n * ```\n */\nexport const satisfies = (version: string, range: string): boolean => {\n // handle multiple comparators\n if (range.includes('||')) {\n return range.split('||').some((r) => satisfies(version, r));\n } else if (range.includes(' ')) {\n return range\n .trim()\n .replace(/\\s{2,}/g, ' ')\n .split(' ')\n .every((r) => satisfies(version, r));\n }\n\n // if no range operator then \"=\"\n const m = range.match(/^([<>=~^]+)/);\n const op = m ? m[1] : '=';\n\n // if gt/lt/eq then operator compare\n if (op !== '^' && op !== '~')\n return compare(version, range, op as CompareOperator);\n\n // else range of either \"~\" or \"^\" is assumed\n const [v1, v2, v3, , vp] = validateAndParse(version);\n const [r1, r2, r3, , rp] = validateAndParse(range);\n const v = [v1, v2, v3];\n const r = [r1, r2 ?? 'x', r3 ?? 'x'];\n\n // validate pre-release\n if (rp) {\n if (!vp) return false;\n if (compareSegments(v, r) !== 0) return false;\n if (compareSegments(vp.split('.'), rp.split('.')) === -1) return false;\n }\n\n // first non-zero number\n const nonZero = r.findIndex((v) => v !== '0') + 1;\n\n // pointer to where segments can be >=\n const i = op === '~' ? 2 : nonZero > 1 ? nonZero : 1;\n\n // before pointer must be equal\n if (compareSegments(v.slice(0, i), r.slice(0, i)) !== 0) return false;\n\n // after pointer must be >=\n if (compareSegments(v.slice(i), r.slice(i)) === -1) return false;\n\n return true;\n};\n\nconst semver =\n /^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\-]+(?:\\.[\\da-z\\-]+)*))?(?:\\+[\\da-z\\-]+(?:\\.[\\da-z\\-]+)*)?)?)?$/i;\n\nconst validateAndParse = (version: string) => {\n if (typeof version !== 'string') {\n throw new TypeError('Invalid argument expected string');\n }\n const match = version.match(semver);\n if (!match) {\n throw new Error(\n `Invalid argument not valid semver ('${version}' received)`\n );\n }\n match.shift();\n return match;\n};\n\nconst isWildcard = (s: string) => s === '*' || s === 'x' || s === 'X';\n\nconst tryParse = (v: string) => {\n const n = parseInt(v, 10);\n return isNaN(n) ? v : n;\n};\n\nconst forceType = (a: string | number, b: string | number) =>\n typeof a !== typeof b ? [String(a), String(b)] : [a, b];\n\nconst compareStrings = (a: string, b: string) => {\n if (isWildcard(a) || isWildcard(b)) return 0;\n const [ap, bp] = forceType(tryParse(a), tryParse(b));\n if (ap > bp) return 1;\n if (ap < bp) return -1;\n return 0;\n};\n\nconst compareSegments = (\n a: string | string[] | RegExpMatchArray,\n b: string | string[] | RegExpMatchArray\n) => {\n for (let i = 0; i < Math.max(a.length, b.length); i++) {\n const r = compareStrings(a[i] || '0', b[i] || '0');\n if (r !== 0) return r;\n }\n return 0;\n};\n\nconst operatorResMap = {\n '>': [1],\n '>=': [0, 1],\n '=': [0],\n '<=': [-1, 0],\n '<': [-1],\n};\n\nconst allowedOperators = Object.keys(operatorResMap);\n\nconst assertValidOperator = (op: string) => {\n if (typeof op !== 'string') {\n throw new TypeError(\n `Invalid operator type, expected string but got ${typeof op}`\n );\n }\n if (allowedOperators.indexOf(op) === -1) {\n throw new Error(\n `Invalid operator, expected one of ${allowedOperators.join('|')}`\n );\n }\n};\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 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 __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 (_) 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 Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\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\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\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 __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: n === \"return\" } : 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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Area, MediaSize, Point, Size } from './types'\n\n/**\n * Compute the dimension of the crop area based on media size,\n * aspect ratio and optionally rotation\n */\nexport function getCropSize(\n mediaWidth: number,\n mediaHeight: number,\n containerWidth: number,\n containerHeight: number,\n aspect: number,\n rotation = 0\n): Size {\n const { width, height } = rotateSize(mediaWidth, mediaHeight, rotation)\n const fittingWidth = Math.min(width, containerWidth)\n const fittingHeight = Math.min(height, containerHeight)\n\n if (fittingWidth > fittingHeight * aspect) {\n return {\n width: fittingHeight * aspect,\n height: fittingHeight,\n }\n }\n\n return {\n width: fittingWidth,\n height: fittingWidth / aspect,\n }\n}\n\n/**\n * Compute media zoom.\n * We fit the media into the container with \"max-width: 100%; max-height: 100%;\"\n */\nexport function getMediaZoom(mediaSize: MediaSize) {\n // Take the axis with more pixels to improve accuracy\n return mediaSize.width > mediaSize.height\n ? mediaSize.width / mediaSize.naturalWidth\n : mediaSize.height / mediaSize.naturalHeight\n}\n\n/**\n * Ensure a new media position stays in the crop area.\n */\nexport function restrictPosition(\n position: Point,\n mediaSize: Size,\n cropSize: Size,\n zoom: number,\n rotation = 0\n): Point {\n const { width, height } = rotateSize(mediaSize.width, mediaSize.height, rotation)\n\n return {\n x: restrictPositionCoord(position.x, width, cropSize.width, zoom),\n y: restrictPositionCoord(position.y, height, cropSize.height, zoom),\n }\n}\n\nfunction restrictPositionCoord(\n position: number,\n mediaSize: number,\n cropSize: number,\n zoom: number\n): number {\n const maxPosition = (mediaSize * zoom) / 2 - cropSize / 2\n\n return clamp(position, -maxPosition, maxPosition)\n}\n\nexport function getDistanceBetweenPoints(pointA: Point, pointB: Point) {\n return Math.sqrt(Math.pow(pointA.y - pointB.y, 2) + Math.pow(pointA.x - pointB.x, 2))\n}\n\nexport function getRotationBetweenPoints(pointA: Point, pointB: Point) {\n return (Math.atan2(pointB.y - pointA.y, pointB.x - pointA.x) * 180) / Math.PI\n}\n\n/**\n * Compute the output cropped area of the media in percentages and pixels.\n * x/y are the top-left coordinates on the src media\n */\nexport function computeCroppedArea(\n crop: Point,\n mediaSize: MediaSize,\n cropSize: Size,\n aspect: number,\n zoom: number,\n rotation = 0,\n restrictPosition = true\n): { croppedAreaPercentages: Area; croppedAreaPixels: Area } {\n // if the media is rotated by the user, we cannot limit the position anymore\n // as it might need to be negative.\n const limitAreaFn = restrictPosition ? limitArea : noOp\n\n const mediaBBoxSize = rotateSize(mediaSize.width, mediaSize.height, rotation)\n const mediaNaturalBBoxSize = rotateSize(mediaSize.naturalWidth, mediaSize.naturalHeight, rotation)\n\n // calculate the crop area in percentages\n // in the rotated space\n const croppedAreaPercentages = {\n x: limitAreaFn(\n 100,\n (((mediaBBoxSize.width - cropSize.width / zoom) / 2 - crop.x / zoom) / mediaBBoxSize.width) *\n 100\n ),\n y: limitAreaFn(\n 100,\n (((mediaBBoxSize.height - cropSize.height / zoom) / 2 - crop.y / zoom) /\n mediaBBoxSize.height) *\n 100\n ),\n width: limitAreaFn(100, ((cropSize.width / mediaBBoxSize.width) * 100) / zoom),\n height: limitAreaFn(100, ((cropSize.height / mediaBBoxSize.height) * 100) / zoom),\n }\n\n // we compute the pixels size naively\n const widthInPixels = Math.round(\n limitAreaFn(\n mediaNaturalBBoxSize.width,\n (croppedAreaPercentages.width * mediaNaturalBBoxSize.width) / 100\n )\n )\n const heightInPixels = Math.round(\n limitAreaFn(\n mediaNaturalBBoxSize.height,\n (croppedAreaPercentages.height * mediaNaturalBBoxSize.height) / 100\n )\n )\n const isImgWiderThanHigh = mediaNaturalBBoxSize.width >= mediaNaturalBBoxSize.height * aspect\n\n // then we ensure the width and height exactly match the aspect (to avoid rounding approximations)\n // if the media is wider than high, when zoom is 0, the crop height will be equals to image height\n // thus we want to compute the width from the height and aspect for accuracy.\n // Otherwise, we compute the height from width and aspect.\n const sizePixels = isImgWiderThanHigh\n ? {\n width: Math.round(heightInPixels * aspect),\n height: heightInPixels,\n }\n : {\n width: widthInPixels,\n height: Math.round(widthInPixels / aspect),\n }\n\n const croppedAreaPixels = {\n ...sizePixels,\n x: Math.round(\n limitAreaFn(\n mediaNaturalBBoxSize.width - sizePixels.width,\n (croppedAreaPercentages.x * mediaNaturalBBoxSize.width) / 100\n )\n ),\n y: Math.round(\n limitAreaFn(\n mediaNaturalBBoxSize.height - sizePixels.height,\n (croppedAreaPercentages.y * mediaNaturalBBoxSize.height) / 100\n )\n ),\n }\n\n return { croppedAreaPercentages, croppedAreaPixels }\n}\n\n/**\n * Ensure the returned value is between 0 and max\n */\nfunction limitArea(max: number, value: number): number {\n return Math.min(max, Math.max(0, value))\n}\n\nfunction noOp(_max: number, value: number) {\n return value\n}\n\n/**\n * Compute crop and zoom from the croppedAreaPercentages.\n */\nexport function getInitialCropFromCroppedAreaPercentages(\n croppedAreaPercentages: Area,\n mediaSize: MediaSize,\n rotation: number,\n cropSize: Size,\n minZoom: number,\n maxZoom: number\n) {\n const mediaBBoxSize = rotateSize(mediaSize.width, mediaSize.height, rotation)\n\n // This is the inverse process of computeCroppedArea\n const zoom = clamp(\n (cropSize.width / mediaBBoxSize.width) * (100 / croppedAreaPercentages.width),\n minZoom,\n maxZoom\n )\n\n const crop = {\n x:\n (zoom * mediaBBoxSize.width) / 2 -\n cropSize.width / 2 -\n mediaBBoxSize.width * zoom * (croppedAreaPercentages.x / 100),\n y:\n (zoom * mediaBBoxSize.height) / 2 -\n cropSize.height / 2 -\n mediaBBoxSize.height * zoom * (croppedAreaPercentages.y / 100),\n }\n\n return { crop, zoom }\n}\n\n/**\n * Compute zoom from the croppedAreaPixels\n */\nfunction getZoomFromCroppedAreaPixels(\n croppedAreaPixels: Area,\n mediaSize: MediaSize,\n cropSize: Size\n): number {\n const mediaZoom = getMediaZoom(mediaSize)\n\n return cropSize.height > cropSize.width\n ? cropSize.height / (croppedAreaPixels.height * mediaZoom)\n : cropSize.width / (croppedAreaPixels.width * mediaZoom)\n}\n\n/**\n * Compute crop and zoom from the croppedAreaPixels\n */\nexport function getInitialCropFromCroppedAreaPixels(\n croppedAreaPixels: Area,\n mediaSize: MediaSize,\n rotation = 0,\n cropSize: Size,\n minZoom: number,\n maxZoom: number\n): { crop: Point; zoom: number } {\n const mediaNaturalBBoxSize = rotateSize(mediaSize.naturalWidth, mediaSize.naturalHeight, rotation)\n\n const zoom = clamp(\n getZoomFromCroppedAreaPixels(croppedAreaPixels, mediaSize, cropSize),\n minZoom,\n maxZoom\n )\n\n const cropZoom =\n cropSize.height > cropSize.width\n ? cropSize.height / croppedAreaPixels.height\n : cropSize.width / croppedAreaPixels.width\n\n const crop = {\n x:\n ((mediaNaturalBBoxSize.width - croppedAreaPixels.width) / 2 - croppedAreaPixels.x) * cropZoom,\n y:\n ((mediaNaturalBBoxSize.height - croppedAreaPixels.height) / 2 - croppedAreaPixels.y) *\n cropZoom,\n }\n return { crop, zoom }\n}\n\n/**\n * Return the point that is the center of point a and b\n */\nexport function getCenter(a: Point, b: Point): Point {\n return {\n x: (b.x + a.x) / 2,\n y: (b.y + a.y) / 2,\n }\n}\n\nexport function getRadianAngle(degreeValue: number) {\n return (degreeValue * Math.PI) / 180\n}\n\n/**\n * Returns the new bounding area of a rotated rectangle.\n */\nexport function rotateSize(width: number, height: number, rotation: number): Size {\n const rotRad = getRadianAngle(rotation)\n\n return {\n width: Math.abs(Math.cos(rotRad) * width) + Math.abs(Math.sin(rotRad) * height),\n height: Math.abs(Math.sin(rotRad) * width) + Math.abs(Math.cos(rotRad) * height),\n }\n}\n\n/**\n * Clamp value between min and max\n */\nexport function clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max)\n}\n\n/**\n * Combine multiple class names into a single string.\n */\nexport function classNames(...args: (boolean | string | number | undefined | void | null)[]) {\n return args\n .filter((value) => {\n if (typeof value === 'string' && value.length > 0) {\n return true\n }\n\n return false\n })\n .join(' ')\n .trim()\n}\n","import React from 'react'\nimport normalizeWheel from 'normalize-wheel'\nimport { Area, MediaSize, Point, Size, VideoSrc } from './types'\nimport {\n getCropSize,\n restrictPosition,\n getDistanceBetweenPoints,\n getRotationBetweenPoints,\n computeCroppedArea,\n getCenter,\n getInitialCropFromCroppedAreaPixels,\n getInitialCropFromCroppedAreaPercentages,\n classNames,\n clamp,\n} from './helpers'\nimport cssStyles from './styles.css'\n\nexport type CropperProps = {\n image?: string\n video?: string | VideoSrc[]\n transform?: string\n crop: Point\n zoom: number\n rotation: number\n aspect: number\n minZoom: number\n maxZoom: number\n cropShape: 'rect' | 'round'\n cropSize?: Size\n objectFit?: 'contain' | 'horizontal-cover' | 'vertical-cover' | 'auto-cover'\n showGrid?: boolean\n zoomSpeed: number\n zoomWithScroll?: boolean\n onCropChange: (location: Point) => void\n onZoomChange?: (zoom: number) => void\n onRotationChange?: (rotation: number) => void\n onCropComplete?: (croppedArea: Area, croppedAreaPixels: Area) => void\n onCropAreaChange?: (croppedArea: Area, croppedAreaPixels: Area) => void\n onCropSizeChange?: (cropSize: Size) => void\n onInteractionStart?: () => void\n onInteractionEnd?: () => void\n onMediaLoaded?: (mediaSize: MediaSize) => void\n style: {\n containerStyle?: React.CSSProperties\n mediaStyle?: React.CSSProperties\n cropAreaStyle?: React.CSSProperties\n }\n classes: {\n containerClassName?: string\n mediaClassName?: string\n cropAreaClassName?: string\n }\n restrictPosition: boolean\n mediaProps: React.ImgHTMLAttributes<HTMLElement> | React.VideoHTMLAttributes<HTMLElement>\n disableAutomaticStylesInjection?: boolean\n initialCroppedAreaPixels?: Area\n initialCroppedAreaPercentages?: Area\n onTouchRequest?: (e: React.TouchEvent<HTMLDivElement>) => boolean\n onWheelRequest?: (e: WheelEvent) => boolean\n setImageRef?: (ref: React.RefObject<HTMLImageElement>) => void\n setVideoRef?: (ref: React.RefObject<HTMLVideoElement>) => void\n setMediaSize?: (size: MediaSize) => void\n setCropSize?: (size: Size) => void\n nonce?: string\n}\n\ntype State = {\n cropSize: Size | null\n hasWheelJustStarted: boolean\n}\n\nconst MIN_ZOOM = 1\nconst MAX_ZOOM = 3\n\ntype GestureEvent = UIEvent & {\n rotation: number\n scale: number\n clientX: number\n clientY: number\n}\n\nclass Cropper extends React.Component<CropperProps, State> {\n static defaultProps = {\n zoom: 1,\n rotation: 0,\n aspect: 4 / 3,\n maxZoom: MAX_ZOOM,\n minZoom: MIN_ZOOM,\n cropShape: 'rect' as const,\n objectFit: 'contain' as const,\n showGrid: true,\n style: {},\n classes: {},\n mediaProps: {},\n zoomSpeed: 1,\n restrictPosition: true,\n zoomWithScroll: true,\n }\n\n imageRef: React.RefObject<HTMLImageElement> = React.createRef()\n videoRef: React.RefObject<HTMLVideoElement> = React.createRef()\n containerRef: HTMLDivElement | null = null\n styleRef: HTMLStyleElement | null = null\n containerRect: DOMRect | null = null\n mediaSize: MediaSize = { width: 0, height: 0, naturalWidth: 0, naturalHeight: 0 }\n dragStartPosition: Point = { x: 0, y: 0 }\n dragStartCrop: Point = { x: 0, y: 0 }\n gestureZoomStart = 0\n gestureRotationStart = 0\n isTouching = false\n lastPinchDistance = 0\n lastPinchRotation = 0\n rafDragTimeout: number | null = null\n rafPinchTimeout: number | null = null\n wheelTimer: number | null = null\n currentDoc: Document | null = typeof document !== 'undefined' ? document : null\n currentWindow: Window | null = typeof window !== 'undefined' ? window : null\n resizeObserver: ResizeObserver | null = null\n\n state: State = {\n cropSize: null,\n hasWheelJustStarted: false,\n }\n\n componentDidMount() {\n if (!this.currentDoc || !this.currentWindow) return\n if (this.containerRef) {\n if (this.containerRef.ownerDocument) {\n this.currentDoc = this.containerRef.ownerDocument\n }\n if (this.currentDoc.defaultView) {\n this.currentWindow = this.currentDoc.defaultView\n }\n\n this.initResizeObserver()\n // only add window resize listener if ResizeObserver is not supported. Otherwise, it would be redundant\n if (typeof window.ResizeObserver === 'undefined') {\n this.currentWindow.addEventListener('resize', this.computeSizes)\n }\n this.props.zoomWithScroll &&\n this.containerRef.addEventListener('wheel', this.onWheel, { passive: false })\n this.containerRef.addEventListener('gesturestart', this.onGestureStart as EventListener)\n }\n\n if (!this.props.disableAutomaticStylesInjection) {\n this.styleRef = this.currentDoc.createElement('style')\n this.styleRef.setAttribute('type', 'text/css')\n if (this.props.nonce) {\n this.styleRef.setAttribute('nonce', this.props.nonce)\n }\n this.styleRef.innerHTML = cssStyles\n this.currentDoc.head.appendChild(this.styleRef)\n }\n\n // when rendered via SSR, the image can already be loaded and its onLoad callback will never be called\n if (this.imageRef.current && this.imageRef.current.complete) {\n this.onMediaLoad()\n }\n\n // set image and video refs in the parent if the callbacks exist\n if (this.props.setImageRef) {\n this.props.setImageRef(this.imageRef)\n }\n\n if (this.props.setVideoRef) {\n this.props.setVideoRef(this.videoRef)\n }\n }\n\n componentWillUnmount() {\n if (!this.currentDoc || !this.currentWindow) return\n if (typeof window.ResizeObserver === 'undefined') {\n this.currentWindow.removeEventListener('resize', this.computeSizes)\n }\n this.resizeObserver?.disconnect()\n if (this.containerRef) {\n this.containerRef.removeEventListener('gesturestart', this.preventZoomSafari)\n }\n\n if (this.styleRef) {\n this.styleRef.parentNode?.removeChild(this.styleRef)\n }\n\n this.cleanEvents()\n this.props.zoomWithScroll && this.clearScrollEvent()\n }\n\n componentDidUpdate(prevProps: CropperProps) {\n if (prevProps.rotation !== this.props.rotation) {\n this.computeSizes()\n this.recomputeCropPosition()\n } else if (prevProps.aspect !== this.props.aspect) {\n this.computeSizes()\n } else if (prevProps.zoom !== this.props.zoom) {\n this.recomputeCropPosition()\n } else if (\n prevProps.cropSize?.height !== this.props.cropSize?.height ||\n prevProps.cropSize?.width !== this.props.cropSize?.width\n ) {\n this.computeSizes()\n } else if (\n prevProps.crop?.x !== this.props.crop?.x ||\n prevProps.crop?.y !== this.props.crop?.y\n ) {\n this.emitCropAreaChange()\n }\n if (prevProps.zoomWithScroll !== this.props.zoomWithScroll && this.containerRef) {\n this.props.zoomWithScroll\n ? this.containerRef.addEventListener('wheel', this.onWheel, { passive: false })\n : this.clearScrollEvent()\n }\n if (prevProps.video !== this.props.video) {\n this.videoRef.current?.load()\n }\n }\n\n initResizeObserver = () => {\n if (typeof window.ResizeObserver === 'undefined' || !this.containerRef) {\n return\n }\n let isFirstResize = true\n this.resizeObserver = new window.ResizeObserver((entries) => {\n if (isFirstResize) {\n isFirstResize = false // observe() is called on mount, we don't want to trigger a recompute on mount\n return\n }\n this.computeSizes()\n })\n this.resizeObserver.observe(this.containerRef)\n }\n\n // this is to prevent Safari on iOS >= 10 to zoom the page\n preventZoomSafari = (e: Event) => e.preventDefault()\n\n cleanEvents = () => {\n if (!this.currentDoc) return\n this.currentDoc.removeEventListener('mousemove', this.onMouseMove)\n this.currentDoc.removeEventListener('mouseup', this.onDragStopped)\n this.currentDoc.removeEventListener('touchmove', this.onTouchMove)\n this.currentDoc.removeEventListener('touchend', this.onDragStopped)\n this.currentDoc.removeEventListener('gesturemove', this.onGestureMove as EventListener)\n this.currentDoc.removeEventListener('gestureend', this.onGestureEnd as EventListener)\n }\n\n clearScrollEvent = () => {\n if (this.containerRef) this.containerRef.removeEventListener('wheel', this.onWheel)\n if (this.wheelTimer) {\n clearTimeout(this.wheelTimer)\n }\n }\n\n onMediaLoad = () => {\n const cropSize = this.computeSizes()\n\n if (cropSize) {\n this.emitCropData()\n this.setInitialCrop(cropSize)\n }\n\n if (this.props.onMediaLoaded) {\n this.props.onMediaLoaded(this.mediaSize)\n }\n }\n\n setInitialCrop = (cropSize: Size) => {\n if (this.props.initialCroppedAreaPercentages) {\n const { crop, zoom } = getInitialCropFromCroppedAreaPercentages(\n this.props.initialCroppedAreaPercentages,\n this.mediaSize,\n this.props.rotation,\n cropSize,\n this.props.minZoom,\n this.props.maxZoom\n )\n\n this.props.onCropChange(crop)\n this.props.onZoomChange && this.props.onZoomChange(zoom)\n } else if (this.props.initialCroppedAreaPixels) {\n const { crop, zoom } = getInitialCropFromCroppedAreaPixels(\n this.props.initialCroppedAreaPixels,\n this.mediaSize,\n this.props.rotation,\n cropSize,\n this.props.minZoom,\n this.props.maxZoom\n )\n\n this.props.onCropChange(crop)\n this.props.onZoomChange && this.props.onZoomChange(zoom)\n }\n }\n\n getAspect() {\n const { cropSize, aspect } = this.props\n if (cropSize) {\n return cropSize.width / cropSize.height\n }\n return aspect\n }\n\n computeSizes = () => {\n const mediaRef = this.imageRef.current || this.videoRef.current\n\n if (mediaRef && this.containerRef) {\n this.containerRect = this.containerRef.getBoundingClientRect()\n const containerAspect = this.containerRect.width / this.containerRect.height\n const naturalWidth =\n this.imageRef.current?.naturalWidth || this.videoRef.current?.videoWidth || 0\n const naturalHeight =\n this.imageRef.current?.naturalHeight || this.videoRef.current?.videoHeight || 0\n const isMediaScaledDown =\n mediaRef.offsetWidth < naturalWidth || mediaRef.offsetHeight < naturalHeight\n const mediaAspect = naturalWidth / naturalHeight\n\n // We do not rely on the offsetWidth/offsetHeight if the media is scaled down\n // as the values they report are rounded. That will result in precision losses\n // when calculating zoom. We use the fact that the media is positionned relative\n // to the container. That allows us to use the container's dimensions\n // and natural aspect ratio of the media to calculate accurate media size.\n // However, for this to work, the container should not be rotated\n let renderedMediaSize: Size\n\n if (isMediaScaledDown) {\n switch (this.props.objectFit) {\n default:\n case 'contain':\n renderedMediaSize =\n containerAspect > mediaAspect\n ? {\n width: this.containerRect.height * mediaAspect,\n height: this.containerRect.height,\n }\n : {\n width: this.containerRect.width,\n height: this.containerRect.width / mediaAspect,\n }\n break\n case 'horizontal-cover':\n renderedMediaSize = {\n width: this.containerRect.width,\n height: this.containerRect.width / mediaAspect,\n }\n break\n case 'vertical-cover':\n renderedMediaSize = {\n width: this.containerRect.height * mediaAspect,\n height: this.containerRect.height,\n }\n break\n case 'auto-cover':\n renderedMediaSize =\n naturalWidth > naturalHeight\n ? {\n width: this.containerRect.width,\n height: this.containerRect.width / mediaAspect,\n }\n : {\n width: this.containerRect.height * mediaAspect,\n height: this.containerRect.height,\n }\n break\n }\n } else {\n renderedMediaSize = {\n width: mediaRef.offsetWidth,\n height: mediaRef.offsetHeight,\n }\n }\n\n this.mediaSize = {\n ...renderedMediaSize,\n naturalWidth,\n naturalHeight,\n }\n\n // set media size in the parent\n if (this.props.setMediaSize) {\n this.props.setMediaSize(this.mediaSize)\n }\n\n const cropSize = this.props.cropSize\n ? this.props.cropSize\n : getCropSize(\n this.mediaSize.width,\n this.mediaSize.height,\n this.containerRect.width,\n this.containerRect.height,\n this.props.aspect,\n this.props.rotation\n )\n\n if (\n this.state.cropSize?.height !== cropSize.height ||\n this.state.cropSize?.width !== cropSize.width\n ) {\n this.props.onCropSizeChange && this.props.onCropSizeChange(cropSize)\n }\n this.setState({ cropSize }, this.recomputeCropPosition)\n // pass crop size to parent\n if (this.props.setCropSize) {\n this.props.setCropSize(cropSize)\n }\n\n return cropSize\n }\n }\n\n static getMousePoint = (e: MouseEvent | React.MouseEvent | GestureEvent) => ({\n x: Number(e.clientX),\n y: Number(e.clientY),\n })\n\n static getTouchPoint = (touch: Touch | React.Touch) => ({\n x: Number(touch.clientX),\n y: Number(touch.clientY),\n })\n\n onMouseDown = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (!this.currentDoc) return\n e.preventDefault()\n this.currentDoc.addEventListener('mousemove', this.onMouseMove)\n this.currentDoc.addEventListener('mouseup', this.onDragStopped)\n this.onDragStart(Cropper.getMousePoint(e))\n }\n\n onMouseMove = (e: MouseEvent) => this.onDrag(Cropper.getMousePoint(e))\n\n onTouchStart = (e: React.TouchEvent<HTMLDivElement>) => {\n if (!this.currentDoc) return\n this.isTouching = true\n if (this.props.onTouchRequest && !this.props.onTouchRequest(e)) {\n return\n }\n\n this.currentDoc.addEventListener('touchmove', this.onTouchMove, { passive: false }) // iOS 11 now defaults to passive: true\n this.currentDoc.addEventListener('touchend', this.onDragStopped)\n\n if (e.touches.length === 2) {\n this.onPinchStart(e)\n } else if (e.touches.length === 1) {\n this.onDragStart(Cropper.getTouchPoint(e.touches[0]))\n }\n }\n\n onTouchMove = (e: TouchEvent) => {\n // Prevent whole page from scrolling on iOS.\n e.preventDefault()\n if (e.touches.length === 2) {\n this.onPinchMove(e)\n } else if (e.touches.length === 1) {\n this.onDrag(Cropper.getTouchPoint(e.touches[0]))\n }\n }\n\n onGestureStart = (e: GestureEvent) => {\n if (!this.currentDoc) return\n e.preventDefault()\n this.currentDoc.addEventListener('gesturechange', this.onGestureMove as EventListener)\n this.currentDoc.addEventListener('gestureend', this.onGestureEnd as EventListener)\n this.gestureZoomStart = this.props.zoom\n this.gestureRotationStart = this.props.rotation\n }\n\n onGestureMove = (e: GestureEvent) => {\n e.preventDefault()\n if (this.isTouching) {\n // this is to avoid conflict between gesture and touch events\n return\n }\n\n const point = Cropper.getMousePoint(e)\n const newZoom = this.gestureZoomStart - 1 + e.scale\n this.setNewZoom(newZoom, point, { shouldUpdatePosition: true })\n if (this.props.onRotationChange) {\n const newRotation = this.gestureRotationStart + e.rotation\n this.props.onRotationChange(newRotation)\n }\n }\n\n onGestureEnd = (e: GestureEvent) => {\n this.cleanEvents()\n }\n\n onDragStart = ({ x, y }: Point) => {\n this.dragStartPosition = { x, y }\n this.dragStartCrop = { ...this.props.crop }\n this.props.onInteractionStart?.()\n }\n\n onDrag = ({ x, y }: Point) => {\n if (!this.currentWindow) return\n if (this.rafDragTimeout) this.currentWindow.cancelAnimationFrame(this.rafDragTimeout)\n\n this.rafDragTimeout = this.currentWindow.requestAnimationFrame(() => {\n if (!this.state.cropSize) return\n if (x === undefined || y === undefined) return\n const offsetX = x - this.dragStartPosition.x\n const offsetY = y - this.dragStartPosition.y\n const requestedPosition = {\n x: this.dragStartCrop.x + offsetX,\n y: this.dragStartCrop.y + offsetY,\n }\n\n const newPosition = this.props.restrictPosition\n ? restrictPosition(\n requestedPosition,\n this.mediaSize,\n this.state.cropSize,\n this.props.zoom,\n this.props.rotation\n )\n : requestedPosition\n this.props.onCropChange(newPosition)\n })\n }\n\n onDragStopped = () => {\n this.isTouching = false\n this.cleanEvents()\n this.emitCropData()\n this.props.onInteractionEnd?.()\n }\n\n onPinchStart(e: React.TouchEvent<HTMLDivElement>) {\n const pointA = Cropper.getTouchPoint(e.touches[0])\n const pointB = Cropper.getTouchPoint(e.touches[1])\n this.lastPinchDistance = getDistanceBetweenPoints(pointA, pointB)\n this.lastPinchRotation = getRotationBetweenPoints(pointA, pointB)\n this.onDragStart(getCenter(pointA, pointB))\n }\n\n onPinchMove(e: TouchEvent) {\n if (!this.currentDoc || !this.currentWindow) return\n const pointA = Cropper.getTouchPoint(e.touches[0])\n const pointB = Cropper.getTouchPoint(e.touches[1])\n const center = getCenter(pointA, pointB)\n this.onDrag(center)\n\n if (this.rafPinchTimeout) this.currentWindow.cancelAnimationFrame(this.rafPinchTimeout)\n this.rafPinchTimeout = this.currentWindow.requestAnimationFrame(() => {\n const distance = getDistanceBetweenPoints(pointA, pointB)\n const newZoom = this.props.zoom * (distance / this.lastPinchDistance)\n this.setNewZoom(newZoom, center, { shouldUpdatePosition: false })\n this.lastPinchDistance = distance\n\n const rotation = getRotationBetweenPoints(pointA, pointB)\n const newRotation = this.props.rotation + (rotation - this.lastPinchRotation)\n this.props.onRotationChange && this.props.onRotationChange(newRotation)\n this.lastPinchRotation = rotation\n })\n }\n\n onWheel = (e: WheelEvent) => {\n if (!this.currentWindow) return\n if (this.props.onWheelRequest && !this.props.onWheelRequest(e)) {\n return\n }\n\n e.preventDefault()\n const point = Cropper.getMousePoint(e)\n const { pixelY } = normalizeWheel(e)\n const newZoom = this.props.zoom - (pixelY * this.props.zoomSpeed) / 200\n this.setNewZoom(newZoom, point, { shouldUpdatePosition: true })\n\n if (!this.state.hasWheelJustStarted) {\n this.setState({ hasWheelJustStarted: true }, () => this.props.onInteractionStart?.())\n }\n\n if (this.wheelTimer) {\n clearTimeout(this.wheelTimer)\n }\n this.wheelTimer = this.currentWindow.setTimeout(\n () => this.setState({ hasWheelJustStarted: false }, () => this.props.onInteractionEnd?.()),\n 250\n )\n }\n\n getPointOnContainer = ({ x, y }: Point) => {\n if (!this.containerRect) {\n throw new Error('The Cropper is not mounted')\n }\n return {\n x: this.containerRect.width / 2 - (x - this.containerRect.left),\n y: this.containerRect.height / 2 - (y - this.containerRect.top),\n }\n }\n\n getPointOnMedia = ({ x, y }: Point) => {\n const { crop, zoom } = this.props\n return {\n x: (x + crop.x) / zoom,\n y: (y + crop.y) / zoom,\n }\n }\n\n setNewZoom = (zoom: number, point: Point, { shouldUpdatePosition = true } = {}) => {\n if (!this.state.cropSize || !this.props.onZoomChange) return\n\n const newZoom = clamp(zoom, this.props.minZoom, this.props.maxZoom)\n\n if (shouldUpdatePosition) {\n const zoomPoint = this.getPointOnContainer(point)\n const zoomTarget = this.getPointOnMedia(zoomPoint)\n const requestedPosition = {\n x: zoomTarget.x * newZoom - zoomPoint.x,\n y: zoomTarget.y * newZoom - zoomPoint.y,\n }\n\n const newPosition = this.props.restrictPosition\n ? restrictPosition(\n requestedPosition,\n this.mediaSize,\n this.state.cropSize,\n newZoom,\n this.props.rotation\n )\n : requestedPosition\n\n this.props.onCropChange(newPosition)\n }\n this.props.onZoomChange(newZoom)\n }\n\n getCropData = () => {\n if (!this.state.cropSize) {\n return null\n }\n\n // this is to ensure the crop is correctly restricted after a zoom back (https://github.com/ValentinH/react-easy-crop/issues/6)\n const restrictedPosition = this.props.restrictPosition\n ? restrictPosition(\n this.props.crop,\n this.mediaSize,\n this.state.cropSize,\n this.props.zoom,\n this.props.rotation\n )\n : this.props.crop\n return computeCroppedArea(\n restrictedPosition,\n this.mediaSize,\n this.state.cropSize,\n this.getAspect(),\n this.props.zoom,\n this.props.rotation,\n this.props.restrictPosition\n )\n }\n\n emitCropData = () => {\n const cropData = this.getCropData()\n if (!cropData) return\n\n const { croppedAreaPercentages, croppedAreaPixels } = cropData\n if (this.props.onCropComplete) {\n this.props.onCropComplete(croppedAreaPercentages, croppedAreaPixels)\n }\n\n if (this.props.onCropAreaChange) {\n this.props.onCropAreaChange(croppedAreaPercentages, croppedAreaPixels)\n }\n }\n\n emitCropAreaChange = () => {\n const cropData = this.getCropData()\n if (!cropData) return\n\n const { croppedAreaPercentages, croppedAreaPixels } = cropData\n if (this.props.onCropAreaChange) {\n this.props.onCropAreaChange(croppedAreaPercentages, croppedAreaPixels)\n }\n }\n\n recomputeCropPosition = () => {\n if (!this.state.cropSize) return\n\n const newPosition = this.props.restrictPosition\n ? restrictPosition(\n this.props.crop,\n this.mediaSize,\n this.state.cropSize,\n this.props.zoom,\n this.props.rotation\n )\n : this.props.crop\n\n this.props.onCropChange(newPosition)\n this.emitCropData()\n }\n\n render() {\n const {\n image,\n video,\n mediaProps,\n transform,\n crop: { x, y },\n rotation,\n zoom,\n cropShape,\n showGrid,\n style: { containerStyle, cropAreaStyle, mediaStyle },\n classes: { containerClassName, cropAreaClassName, mediaClassName },\n objectFit,\n } = this.props\n\n return (\n <div\n onMouseDown={this.onMouseDown}\n onTouchStart={this.onTouchStart}\n ref={(el) => (this.containerRef = el)}\n data-testid=\"container\"\n style={containerStyle}\n className={classNames('reactEasyCrop_Container', containerClassName)}\n >\n {image ? (\n <img\n alt=\"\"\n className={classNames(\n 'reactEasyCrop_Image',\n objectFit === 'contain' && 'reactEasyCrop_Contain',\n objectFit === 'horizontal-cover' && 'reactEasyCrop_Cover_Horizontal',\n objectFit === 'vertical-cover' && 'reactEasyCrop_Cover_Vertical',\n objectFit === 'auto-cover' &&\n (this.mediaSize.naturalWidth > this.mediaSize.naturalHeight\n ? 'reactEasyCrop_Cover_Horizontal'\n : 'reactEasyCrop_Cover_Vertical'),\n mediaClassName\n )}\n {...(mediaProps as React.ImgHTMLAttributes<HTMLElement>)}\n src={image}\n ref={this.imageRef}\n style={{\n ...mediaStyle,\n transform:\n transform || `translate(${x}px, ${y}px) rotate(${rotation}deg) scale(${zoom})`,\n }}\n onLoad={this.onMediaLoad}\n />\n ) : (\n video && (\n <video\n autoPlay\n loop\n muted={true}\n className={classNames(\n 'reactEasyCrop_Video',\n objectFit === 'contain' && 'reactEasyCrop_Contain',\n objectFit === 'horizontal-cover' && 'reactEasyCrop_Cover_Horizontal',\n objectFit === 'vertical-cover' && 'reactEasyCrop_Cover_Vertical',\n objectFit === 'auto-cover' &&\n (this.mediaSize.naturalWidth > this.mediaSize.naturalHeight\n ? 'reactEasyCrop_Cover_Horizontal'\n : 'reactEasyCrop_Cover_Vertical'),\n mediaClassName\n )}\n {...mediaProps}\n ref={this.videoRef}\n onLoadedMetadata={this.onMediaLoad}\n style={{\n ...mediaStyle,\n transform:\n transform || `translate(${x}px, ${y}px) rotate(${rotation}deg) scale(${zoom})`,\n }}\n controls={false}\n >\n {(Array.isArray(video) ? video : [{ src: video }]).map((item) => (\n <source key={item.src} {...item} />\n ))}\n </video>\n )\n )}\n {this.state.cropSize && (\n <div\n style={{\n ...cropAreaStyle,\n width: this.state.cropSize.width,\n height: this.state.cropSize.height,\n }}\n data-testid=\"cropper\"\n className={classNames(\n 'reactEasyCrop_CropArea',\n cropShape === 'round' && 'reactEasyCrop_CropAreaRound',\n showGrid && 'reactEasyCrop_CropAreaGrid',\n cropAreaClassName\n )}\n />\n )}\n </div>\n )\n }\n}\n\nexport default Cropper\n","import { __rest, __awaiter } from 'tslib';\nimport { jsxs, Fragment, jsx } from 'react/jsx-runtime';\nimport { forwardRef, useState, useRef, useCallback, useImperativeHandle, memo, useMemo } from 'react';\nimport { version } from 'antd';\nimport AntModal from 'antd/es/modal';\nimport AntUpload from 'antd/es/upload';\nimport { compareVersions } from 'compare-versions';\nimport Cropper from 'react-easy-crop';\nimport AntButton from 'antd/es/button';\nimport AntSlider from 'antd/es/slider';\n\nconst PREFIX = 'img-crop';\nconst ZOOM_INITIAL = 1;\nconst ZOOM_STEP = 0.1;\nconst ROTATION_INITIAL = 0;\nconst ROTATION_MIN = -180;\nconst ROTATION_MAX = 180;\nconst ROTATION_STEP = 1;\nconst ASPECT_MIN = 0.5;\nconst ASPECT_MAX = 2;\nconst ASPECT_STEP = 0.01;\n\nconst EasyCrop = forwardRef((props, ref) => {\n const { cropperRef, zoomSlider, rotationSlider, aspectSlider, showReset, resetBtnText, modalImage, aspect: ASPECT_INITIAL, minZoom, maxZoom, cropShape, showGrid, cropperProps, } = props;\n const [zoom, setZoom] = useState(ZOOM_INITIAL);\n const [rotation, setRotation] = useState(ROTATION_INITIAL);\n const [aspect, setAspect] = useState(ASPECT_INITIAL);\n const isResetActive = zoom !== ZOOM_INITIAL ||\n rotation !== ROTATION_INITIAL ||\n aspect !== ASPECT_INITIAL;\n const onReset = () => {\n setZoom(ZOOM_INITIAL);\n setRotation(ROTATION_INITIAL);\n setAspect(ASPECT_INITIAL);\n };\n const [crop, onCropChange] = useState({ x: 0, y: 0 });\n const cropPixelsRef = useRef({ width: 0, height: 0, x: 0, y: 0 });\n const onCropComplete = useCallback((_, croppedAreaPixels) => {\n cropPixelsRef.current = croppedAreaPixels;\n }, []);\n useImperativeHandle(ref, () => ({\n rotation,\n cropPixelsRef,\n onReset,\n }));\n const wrapperClass = '[display:flex] [align-items:center] [width:60%] [margin-inline:auto]';\n const buttonClass = '[display:flex] [align-items:center] [justify-content:center] [height:32px] [width:32px] [background:transparent] [border:0] [font-family:inherit] [font-size:18px] [cursor:pointer] disabled:[opacity:20%] disabled:[cursor:default]';\n const sliderClass = '[flex:1]';\n return (jsxs(Fragment, { children: [jsx(Cropper, Object.assign({}, cropperProps, { ref: cropperRef, image: modalImage, crop: crop, \n //\n zoom: zoom, rotation: rotation, aspect: aspect, minZoom: minZoom, maxZoom: maxZoom, zoomWithScroll: zoomSlider, \n //\n cropShape: cropShape, showGrid: showGrid, onCropChange: onCropChange, onZoomChange: setZoom, onRotationChange: setRotation, onCropComplete: onCropComplete, classes: {\n containerClassName: `${PREFIX}-container ![position:relative] [width:100%] [height:40vh] [&~section:first-of-type]:[margin-top:16px] [&~section:last-of-type]:[margin-bottom:16px]`,\n mediaClassName: `${PREFIX}-media`,\n } })), zoomSlider && (jsxs(\"section\", Object.assign({ className: `${PREFIX}-control ${PREFIX}-control-zoom ${wrapperClass}` }, { children: [jsx(\"button\", Object.assign({ className: buttonClass, onClick: () => setZoom(zoom - ZOOM_STEP), disabled: zoom - ZOOM_STEP < minZoom }, { children: \"\\uFF0D\" })), jsx(AntSlider, { className: sliderClass, min: minZoom, max: maxZoom, step: ZOOM_STEP, value: zoom, onChange: setZoom }), jsx(\"button\", Object.assign({ className: buttonClass, onClick: () => setZoom(zoom + ZOOM_STEP), disabled: zoom + ZOOM_STEP > maxZoom }, { children: \"\\uFF0B\" }))] }))), rotationSlider && (jsxs(\"section\", Object.assign({ className: `${PREFIX}-control ${PREFIX}-control-rotation ${wrapperClass}` }, { children: [jsx(\"button\", Object.assign({ className: `${buttonClass} [font-size:16px]`, onClick: () => setRotation(rotation - ROTATION_STEP), disabled: rotation === ROTATION_MIN }, { children: \"\\u21BA\" })), jsx(AntSlider, { className: sliderClass, min: ROTATION_MIN, max: ROTATION_MAX, step: ROTATION_STEP, value: rotation, onChange: setRotation }), jsx(\"button\", Object.assign({ className: `${buttonClass} [font-size:16px]`, onClick: () => setRotation(rotation + ROTATION_STEP), disabled: rotation === ROTATION_MAX }, { children: \"\\u21BB\" }))] }))), aspectSlider && (jsxs(\"section\", Object.assign({ className: `${PREFIX}-control ${PREFIX}-control-aspect ${wrapperClass}` }, { children: [jsx(\"button\", Object.assign({ className: buttonClass, onClick: () => setAspect(aspect - ASPECT_STEP), disabled: aspect - ASPECT_STEP < ASPECT_MIN }, { children: \"\\u2195\\uFE0F\" })), jsx(AntSlider, { className: sliderClass, min: ASPECT_MIN, max: ASPECT_MAX, step: ASPECT_STEP, value: aspect, onChange: setAspect }), jsx(\"button\", Object.assign({ className: buttonClass, onClick: () => setAspect(aspect + ASPECT_STEP), disabled: aspect + ASPECT_STEP > ASPECT_MAX }, { children: \"\\u2194\\uFE0F\" }))] }))), showReset && (zoomSlider || rotationSlider || aspectSlider) && (jsx(AntButton, Object.assign({ className: \"[bottom:20px] [position:absolute]\", style: isResetActive ? {} : { opacity: 0.3, pointerEvents: 'none' }, onClick: onReset }, { children: resetBtnText })))] }));\n});\nvar EasyCrop$1 = memo(EasyCrop);\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css_248z = \".container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.visible{visibility:visible}.grid{display:grid}.\\\\!\\\\[position\\\\:relative\\\\]{position:relative!important}.\\\\[align-items\\\\:center\\\\]{align-items:center}.\\\\[background\\\\:transparent\\\\]{background:transparent}.\\\\[border\\\\:0\\\\]{border:0}.\\\\[bottom\\\\:20px\\\\]{bottom:20px}.\\\\[cursor\\\\:pointer\\\\]{cursor:pointer}.\\\\[display\\\\:flex\\\\]{display:flex}.\\\\[flex\\\\:1\\\\]{flex:1}.\\\\[font-family\\\\:inherit\\\\]{font-family:inherit}.\\\\[font-size\\\\:16px\\\\]{font-size:16px}.\\\\[font-size\\\\:18px\\\\]{font-size:18px}.\\\\[height\\\\:32px\\\\]{height:32px}.\\\\[height\\\\:40vh\\\\]{height:40vh}.\\\\[justify-content\\\\:center\\\\]{justify-content:center}.\\\\[margin-inline\\\\:auto\\\\]{margin-inline:auto}.\\\\[position\\\\:absolute\\\\]{position:absolute}.\\\\[width\\\\:100\\\\%\\\\]{width:100%}.\\\\[width\\\\:32px\\\\]{width:32px}.\\\\[width\\\\:60\\\\%\\\\]{width:60%}.disabled\\\\:\\\\[cursor\\\\:default\\\\]:disabled{cursor:default}.disabled\\\\:\\\\[opacity\\\\:20\\\\%\\\\]:disabled{opacity:20%}.\\\\[\\\\&\\\\~section\\\\:first-of-type\\\\]\\\\:\\\\[margin-top\\\\:16px\\\\]~section:first-of-type{margin-top:16px}.\\\\[\\\\&\\\\~section\\\\:last-of-type\\\\]\\\\:\\\\[margin-bottom\\\\:16px\\\\]~section:last-of-type{margin-bottom:16px}\";\nstyleInject(css_248z);\n\nconst openProp = compareVersions(version, '4.23.0') === -1 ? 'visible' : 'open';\nconst deprecate = (obj, old, now) => {\n if (old in obj) {\n console.error(`\\`${old}\\` is deprecated, please use \\`${now}\\` instead`);\n return obj[old];\n }\n return obj[now];\n};\nconst ImgCrop = forwardRef((props, cropperRef) => {\n const { quality = 0.4, fillColor = 'white', \n // @ts-ignore\n zoomSlider: ZOOM_SLIDER = true, \n // @ts-ignore\n rotationSlider: ROTATION_SLIDER = false, aspectSlider = false, showReset = false, resetText, aspect = 1, minZoom = 1, maxZoom = 3, \n // @ts-ignore\n cropShape: CROP_SHAPE = 'rect', \n // @ts-ignore\n showGrid: SHOW_GRID = false, cropperProps, modalClassName, modalTitle, modalWidth, modalOk, modalCancel, onModalOk, onModalCancel, modalProps, beforeCrop, children, } = props;\n /**\n * init\n */\n const zoomSlider = deprecate(props, 'zoom', 'zoomSlider') || true;\n const rotationSlider = deprecate(props, 'rotate', 'rotationSlider') || false;\n const cropShape = deprecate(props, 'shape', 'cropShape') || 'rect';\n const showGrid = deprecate(props, 'grid', 'showGrid') || false;\n if ('onUploadFail' in props) {\n console.error(`\\`onUploadFail\\` is removed, because the only way it is called, is when the file is rejected by beforeUpload`);\n }\n deprecate(props, 'modalMaskTransitionName', 'modalProps.maskTransitionName');\n deprecate(props, 'modalTransitionName', 'modalProps.transitionName');\n const cb = useRef({});\n cb.current.onModalOk = onModalOk;\n cb.current.onModalCancel = onModalCancel;\n cb.current.beforeCrop = beforeCrop;\n /**\n * crop\n */\n const easyCropRef = useRef(null);\n const getCropCanvas = useCallback((target) => {\n var _a;\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n const context = ((_a = target === null || target === void 0 ? void 0 : target.getRootNode) === null || _a === void 0 ? void 0 : _a.call(target)) || document;\n const imgSource = context.querySelector(`.${PREFIX}-media`);\n const { width: cropWidth, height: cropHeight, x: cropX, y: cropY, } = easyCropRef.current.cropPixelsRef.current;\n if (rotationSlider &&\n easyCropRef.current.rotation !== ROTATION_INITIAL) {\n const { naturalWidth: imgWidth, naturalHeight: imgHeight } = imgSource;\n const angle = easyCropRef.current.rotation * (Math.PI / 180);\n // get container for rotated image\n const sine = Math.abs(Math.sin(angle));\n const cosine = Math.abs(Math.cos(angle));\n const squareWidth = imgWidth * cosine + imgHeight * sine;\n const squareHeight = imgHeight * cosine + imgWidth * sine;\n canvas.width = squareWidth;\n canvas.height = squareHeight;\n ctx.fillStyle = fillColor;\n ctx.fillRect(0, 0, squareWidth, squareHeight);\n // rotate container\n const squareHalfWidth = squareWidth / 2;\n const squareHalfHeight = squareHeight / 2;\n ctx.translate(squareHalfWidth, squareHalfHeight);\n ctx.rotate(angle);\n ctx.translate(-squareHalfWidth, -squareHalfHeight);\n // draw rotated image\n const imgX = (squareWidth - imgWidth) / 2;\n const imgY = (squareHeight - imgHeight) / 2;\n ctx.drawImage(imgSource, 0, 0, imgWidth, imgHeight, imgX, imgY, imgWidth, imgHeight);\n // crop rotated image\n const imgData = ctx.getImageData(0, 0, squareWidth, squareHeight);\n canvas.width = cropWidth;\n canvas.height = cropHeight;\n ctx.putImageData(imgData, -cropX, -cropY);\n }\n else {\n canvas.width = cropWidth;\n canvas.height = cropHeight;\n ctx.fillStyle = fillColor;\n ctx.fillRect(0, 0, cropWidth, cropHeight);\n ctx.drawImage(imgSource, cropX, cropY, cropWidth, cropHeight, 0, 0, cropWidth, cropHeight);\n }\n return canvas;\n }, [fillColor, rotationSlider]);\n /**\n * upload\n */\n const [modalImage, setModalImage] = useState('');\n const onCancel = useRef();\n const onOk = useRef();\n const uploadComponent = useMemo(() => {\n const upload = Array.isArray(children) ? children[0] : children;\n const _a = upload.props, { beforeUpload, accept } = _a, restUploadProps = __rest(_a, [\"beforeUpload\", \"accept\"]);\n const innerBeforeUpload = (file, fileList) => {\n return new Promise((resolve) => __awaiter(void 0, void 0, void 0, function* () {\n if (typeof cb.current.beforeCrop === 'function') {\n try {\n const result = yield cb.current.beforeCrop(file, fileList);\n if (result !== true) {\n return resolve(result);\n }\n }\n catch (err) {\n return resolve(err);\n }\n }\n // get file result\n const reader = new FileReader();\n reader.addEventListener('load', () => {\n if (typeof reader.result === 'string') {\n setModalImage(reader.result); // open modal\n }\n });\n reader.readAsDataURL(file);\n // on modal cancel\n onCancel.current = () => {\n var _a, _b;\n setModalImage('');\n easyCropRef.current.onReset();\n resolve(AntUpload.LIST_IGNORE);\n (_b = (_a = cb.current).onModalCancel) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n // on modal confirm\n onOk.current = (event) => __awaiter(void 0, void 0, void 0, function* () {\n setModalImage('');\n easyCropRef.current.onReset();\n const canvas = getCropCanvas(event.target);\n const { type, name, uid } = file;\n canvas.toBlob((blob) => __awaiter(void 0, void 0, void 0, function* () {\n var _a, _b, _c, _d, _e, _f;\n const newFile = new File([blob], name, { type });\n Object.assign(newFile, { uid });\n if (typeof beforeUpload !== 'function') {\n resolve(newFile);\n (_b = (_a = cb.current).onModalOk) === null || _b === void 0 ? void 0 : _b.call(_a, newFile);\n return;\n }\n try {\n // https://github.com/ant-design/ant-design/blob/master/components/upload/Upload.tsx#L128-L148\n // https://ant.design/components/upload-cn#api\n const result = yield beforeUpload(newFile, [newFile]);\n const value = result === true ? newFile : result;\n resolve(value);\n (_d = (_c = cb.current).onModalOk) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n }\n catch (err) {\n resolve(err);\n (_f = (_e = cb.current).onModalOk) === null || _f === void 0 ? void 0 : _f.call(_e, err);\n }\n }), type, quality);\n });\n }));\n };\n return Object.assign(Object.assign({}, upload), { props: Object.assign(Object.assign({}, restUploadProps), { accept: accept || 'image/*', beforeUpload: innerBeforeUpload }) });\n }, [children, getCropCanvas, quality]);\n /**\n * modal\n */\n const modalBaseProps = useMemo(() => {\n const obj = {};\n if (modalWidth !== undefined)\n obj.width = modalWidth;\n if (modalOk !== undefined)\n obj.okText = modalOk;\n if (modalCancel !== undefined)\n obj.cancelText = modalCancel;\n return obj;\n }, [modalCancel, modalOk, modalWidth]);\n const wrapClassName = `${PREFIX}-modal${modalClassName ? ` ${modalClassName}` : ''}`;\n const lang = typeof window === 'undefined' ? '' : window.navigator.language;\n const isCN = lang === 'zh-CN';\n const title = modalTitle || (isCN ? '编辑图片' : 'Edit image');\n const resetBtnText = resetText || (isCN ? '重置' : 'Reset');\n return (jsxs(Fragment, { children: [uploadComponent, modalImage && (jsx(AntModal, Object.assign({}, modalProps, modalBaseProps, { [openProp]: true }, { title: title, onCancel: onCancel.current, onOk: onOk.current, wrapClassName: wrapClassName, maskClosable: false, destroyOnClose: true }, { children: jsx(EasyCrop$1, { ref: easyCropRef, cropperRef: cropperRef, zoomSlider: zoomSlider, rotationSlider: rotationSlider, aspectSlider: aspectSlider, showReset: showReset, resetBtnText: resetBtnText, modalImage: modalImage, aspect: aspect, minZoom: minZoom, maxZoom: maxZoom, cropShape: cropShape, showGrid: showGrid, cropperProps: cropperProps }) })))] }));\n});\n\nexport { ImgCrop as default };\n","export default '4.24.10';","import { tuple } from './type';\nexport var PresetStatusColorTypes = tuple('success', 'processing', 'error', 'default', 'warning');\n// eslint-disable-next-line import/prefer-default-export\nexport var PresetColorTypes = tuple('pink', 'red', 'yellow', 'orange', 'cyan', 'green', 'blue', 'purple', 'geekblue', 'magenta', 'volcano', 'gold', 'lime');","export default function getDataOrAriaProps(props) {\n return Object.keys(props).reduce(function (prev, key) {\n if ((key.startsWith('data-') || key.startsWith('aria-') || key === 'role') && !key.startsWith('data-__')) {\n prev[key] = props[key];\n }\n return prev;\n }, {});\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { detectFlexGapSupported } from '../styleChecker';\nexport default (function () {\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n flexible = _React$useState2[0],\n setFlexible = _React$useState2[1];\n React.useEffect(function () {\n setFlexible(detectFlexGapSupported());\n }, []);\n return flexible;\n});","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default function useForceUpdate() {\n var _React$useReducer = React.useReducer(function (x) {\n return x + 1;\n }, 0),\n _React$useReducer2 = _slicedToArray(_React$useReducer, 2),\n forceUpdate = _React$useReducer2[1];\n return forceUpdate;\n}","import { tuple } from './type';\n// ================== Collapse Motion ==================\nvar getCollapsedHeight = function getCollapsedHeight() {\n return {\n height: 0,\n opacity: 0\n };\n};\nvar getRealHeight = function getRealHeight(node) {\n var scrollHeight = node.scrollHeight;\n return {\n height: scrollHeight,\n opacity: 1\n };\n};\nvar getCurrentHeight = function getCurrentHeight(node) {\n return {\n height: node ? node.offsetHeight : 0\n };\n};\nvar skipOpacityTransition = function skipOpacityTransition(_, event) {\n return (event === null || event === void 0 ? void 0 : event.deadline) === true || event.propertyName === 'height';\n};\nvar collapseMotion = {\n motionName: 'ant-motion-collapse',\n onAppearStart: getCollapsedHeight,\n onEnterStart: getCollapsedHeight,\n onAppearActive: getRealHeight,\n onEnterActive: getRealHeight,\n onLeaveStart: getCurrentHeight,\n onLeaveActive: getCollapsedHeight,\n onAppearEnd: skipOpacityTransition,\n onEnterEnd: skipOpacityTransition,\n onLeaveEnd: skipOpacityTransition,\n motionDeadline: 500\n};\nvar SelectPlacements = tuple('bottomLeft', 'bottomRight', 'topLeft', 'topRight');\nvar getTransitionDirection = function getTransitionDirection(placement) {\n if (placement !== undefined && (placement === 'topLeft' || placement === 'topRight')) {\n return \"slide-down\";\n }\n return \"slide-up\";\n};\nvar getTransitionName = function getTransitionName(rootPrefixCls, motion, transitionName) {\n if (transitionName !== undefined) {\n return transitionName;\n }\n return \"\".concat(rootPrefixCls, \"-\").concat(motion);\n};\nexport { getTransitionName, getTransitionDirection };\nexport default collapseMotion;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { placements } from \"rc-tooltip/es/placements\";\nvar autoAdjustOverflowEnabled = {\n adjustX: 1,\n adjustY: 1\n};\nvar autoAdjustOverflowDisabled = {\n adjustX: 0,\n adjustY: 0\n};\nvar targetOffset = [0, 0];\nexport function getOverflowOptions(autoAdjustOverflow) {\n if (typeof autoAdjustOverflow === 'boolean') {\n return autoAdjustOverflow ? autoAdjustOverflowEnabled : autoAdjustOverflowDisabled;\n }\n return _extends(_extends({}, autoAdjustOverflowDisabled), autoAdjustOverflow);\n}\nexport default function getPlacements(config) {\n var _config$arrowWidth = config.arrowWidth,\n arrowWidth = _config$arrowWidth === void 0 ? 4 : _config$arrowWidth,\n _config$horizontalArr = config.horizontalArrowShift,\n horizontalArrowShift = _config$horizontalArr === void 0 ? 16 : _config$horizontalArr,\n _config$verticalArrow = config.verticalArrowShift,\n verticalArrowShift = _config$verticalArrow === void 0 ? 8 : _config$verticalArrow,\n autoAdjustOverflow = config.autoAdjustOverflow,\n arrowPointAtCenter = config.arrowPointAtCenter;\n var placementMap = {\n left: {\n points: ['cr', 'cl'],\n offset: [-4, 0]\n },\n right: {\n points: ['cl', 'cr'],\n offset: [4, 0]\n },\n top: {\n points: ['bc', 'tc'],\n offset: [0, -4]\n },\n bottom: {\n points: ['tc', 'bc'],\n offset: [0, 4]\n },\n topLeft: {\n points: ['bl', 'tc'],\n offset: [-(horizontalArrowShift + arrowWidth), -4]\n },\n leftTop: {\n points: ['tr', 'cl'],\n offset: [-4, -(verticalArrowShift + arrowWidth)]\n },\n topRight: {\n points: ['br', 'tc'],\n offset: [horizontalArrowShift + arrowWidth, -4]\n },\n rightTop: {\n points: ['tl', 'cr'],\n offset: [4, -(verticalArrowShift + arrowWidth)]\n },\n bottomRight: {\n points: ['tr', 'bc'],\n offset: [horizontalArrowShift + arrowWidth, 4]\n },\n rightBottom: {\n points: ['bl', 'cr'],\n offset: [4, verticalArrowShift + arrowWidth]\n },\n bottomLeft: {\n points: ['tl', 'bc'],\n offset: [-(horizontalArrowShift + arrowWidth), 4]\n },\n leftBottom: {\n points: ['br', 'cl'],\n offset: [-4, verticalArrowShift + arrowWidth]\n }\n };\n Object.keys(placementMap).forEach(function (key) {\n placementMap[key] = arrowPointAtCenter ? _extends(_extends({}, placementMap[key]), {\n overflow: getOverflowOptions(autoAdjustOverflow),\n targetOffset: targetOffset\n }) : _extends(_extends({}, placements[key]), {\n overflow: getOverflowOptions(autoAdjustOverflow)\n });\n placementMap[key].ignoreShake = true;\n });\n return placementMap;\n}","import * as React from 'react';\nvar isValidElement = React.isValidElement;\nexport { isValidElement };\nexport function isFragment(child) {\n return child && isValidElement(child) && child.type === React.Fragment;\n}\nexport function replaceElement(element, replacement, props) {\n if (!isValidElement(element)) {\n return replacement;\n }\n return /*#__PURE__*/React.cloneElement(element, typeof props === 'function' ? props(element.props || {}) : props);\n}\nexport function cloneElement(element, props) {\n return replaceElement(element, element, props);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nexport var responsiveArray = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nexport var responsiveMap = {\n xs: '(max-width: 575px)',\n sm: '(min-width: 576px)',\n md: '(min-width: 768px)',\n lg: '(min-width: 992px)',\n xl: '(min-width: 1200px)',\n xxl: '(min-width: 1600px)'\n};\nvar subscribers = new Map();\nvar subUid = -1;\nvar screens = {};\nvar responsiveObserve = {\n matchHandlers: {},\n dispatch: function dispatch(pointMap) {\n screens = pointMap;\n subscribers.forEach(function (func) {\n return func(screens);\n });\n return subscribers.size >= 1;\n },\n subscribe: function subscribe(func) {\n if (!subscribers.size) this.register();\n subUid += 1;\n subscribers.set(subUid, func);\n func(screens);\n return subUid;\n },\n unsubscribe: function unsubscribe(token) {\n subscribers[\"delete\"](token);\n if (!subscribers.size) this.unregister();\n },\n unregister: function unregister() {\n var _this = this;\n Object.keys(responsiveMap).forEach(function (screen) {\n var matchMediaQuery = responsiveMap[screen];\n var handler = _this.matchHandlers[matchMediaQuery];\n handler === null || handler === void 0 ? void 0 : handler.mql.removeListener(handler === null || handler === void 0 ? void 0 : handler.listener);\n });\n subscribers.clear();\n },\n register: function register() {\n var _this2 = this;\n Object.keys(responsiveMap).forEach(function (screen) {\n var matchMediaQuery = responsiveMap[screen];\n var listener = function listener(_ref) {\n var matches = _ref.matches;\n _this2.dispatch(_extends(_extends({}, screens), _defineProperty({}, screen, matches)));\n };\n var mql = window.matchMedia(matchMediaQuery);\n mql.addListener(listener);\n _this2.matchHandlers[matchMediaQuery] = {\n mql: mql,\n listener: listener\n };\n listener(mql);\n });\n }\n};\nexport default responsiveObserve;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport { tuple } from './type';\nvar InputStatuses = tuple('warning', 'error', '');\nexport function getStatusClassNames(prefixCls, status, hasFeedback) {\n var _classNames;\n return classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-success\"), status === 'success'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-warning\"), status === 'warning'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-error\"), status === 'error'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-validating\"), status === 'validating'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-feedback\"), hasFeedback), _classNames));\n}\nexport var getMergedStatus = function getMergedStatus(contextStatus, customStatus) {\n return customStatus || contextStatus;\n};","import canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { isStyleSupport } from \"rc-util/es/Dom/styleChecker\";\nexport var canUseDocElement = function canUseDocElement() {\n return canUseDom() && window.document.documentElement;\n};\nexport { isStyleSupport };\nvar flexGapSupported;\nexport var detectFlexGapSupported = function detectFlexGapSupported() {\n if (!canUseDocElement()) {\n return false;\n }\n if (flexGapSupported !== undefined) {\n return flexGapSupported;\n }\n // create flex container with row-gap set\n var flex = document.createElement('div');\n flex.style.display = 'flex';\n flex.style.flexDirection = 'column';\n flex.style.rowGap = '1px';\n // create two, elements inside it\n flex.appendChild(document.createElement('div'));\n flex.appendChild(document.createElement('div'));\n // append to the DOM (needed to obtain scrollHeight)\n document.body.appendChild(flex);\n flexGapSupported = flex.scrollHeight === 1; // flex container should be 1px high from the row-gap\n document.body.removeChild(flex);\n return flexGapSupported;\n};","// https://stackoverflow.com/questions/46176165/ways-to-get-string-literal-type-of-array-values-without-enum-overhead\nexport var tuple = function tuple() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return args;\n};\nexport var tupleNum = function tupleNum() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return args;\n};","import raf from \"rc-util/es/raf\";\nvar id = 0;\nvar ids = {};\n// Support call raf with delay specified frame\nexport default function wrapperRaf(callback) {\n var delayFrames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var myId = id++;\n var restFrames = delayFrames;\n function internalCallback() {\n restFrames -= 1;\n if (restFrames <= 0) {\n callback();\n delete ids[myId];\n } else {\n ids[myId] = raf(internalCallback);\n }\n }\n ids[myId] = raf(internalCallback);\n return myId;\n}\nwrapperRaf.cancel = function cancel(pid) {\n if (pid === undefined) return;\n raf.cancel(ids[pid]);\n delete ids[pid];\n};\nwrapperRaf.ids = ids; // export this for test usage","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport { updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { ConfigConsumer, ConfigContext } from '../config-provider';\nimport raf from './raf';\nimport { cloneElement } from './reactNode';\nvar styleForPseudo;\n// Where el is the DOM element you'd like to test for visibility\nfunction isHidden(element) {\n if (process.env.NODE_ENV === 'test') {\n return false;\n }\n return !element || element.offsetParent === null || element.hidden;\n}\nfunction getValidateContainer(nodeRoot) {\n if (nodeRoot instanceof Document) {\n return nodeRoot.body;\n }\n return Array.from(nodeRoot.childNodes).find(function (ele) {\n return (ele === null || ele === void 0 ? void 0 : ele.nodeType) === Node.ELEMENT_NODE;\n });\n}\nfunction isNotGrey(color) {\n // eslint-disable-next-line no-useless-escape\n var match = (color || '').match(/rgba?\\((\\d*), (\\d*), (\\d*)(, [\\d.]*)?\\)/);\n if (match && match[1] && match[2] && match[3]) {\n return !(match[1] === match[2] && match[2] === match[3]);\n }\n return true;\n}\nvar Wave = /*#__PURE__*/function (_React$Component) {\n _inherits(Wave, _React$Component);\n var _super = _createSuper(Wave);\n function Wave() {\n var _this;\n _classCallCheck(this, Wave);\n _this = _super.apply(this, arguments);\n _this.containerRef = /*#__PURE__*/React.createRef();\n _this.animationStart = false;\n _this.destroyed = false;\n _this.onClick = function (node, waveColor) {\n var _a, _b;\n var _this$props = _this.props,\n insertExtraNode = _this$props.insertExtraNode,\n disabled = _this$props.disabled;\n if (disabled || !node || isHidden(node) || node.className.includes('-leave')) {\n return;\n }\n _this.extraNode = document.createElement('div');\n var _assertThisInitialize = _assertThisInitialized(_this),\n extraNode = _assertThisInitialize.extraNode;\n var getPrefixCls = _this.context.getPrefixCls;\n extraNode.className = \"\".concat(getPrefixCls(''), \"-click-animating-node\");\n var attributeName = _this.getAttributeName();\n node.setAttribute(attributeName, 'true');\n // Not white or transparent or grey\n if (waveColor && waveColor !== '#fff' && waveColor !== '#ffffff' && waveColor !== 'rgb(255, 255, 255)' && waveColor !== 'rgba(255, 255, 255, 1)' && isNotGrey(waveColor) && !/rgba\\((?:\\d*, ){3}0\\)/.test(waveColor) &&\n // any transparent rgba color\n waveColor !== 'transparent') {\n extraNode.style.borderColor = waveColor;\n var nodeRoot = ((_a = node.getRootNode) === null || _a === void 0 ? void 0 : _a.call(node)) || node.ownerDocument;\n var nodeBody = (_b = getValidateContainer(nodeRoot)) !== null && _b !== void 0 ? _b : nodeRoot;\n styleForPseudo = updateCSS(\"\\n [\".concat(getPrefixCls(''), \"-click-animating-without-extra-node='true']::after, .\").concat(getPrefixCls(''), \"-click-animating-node {\\n --antd-wave-shadow-color: \").concat(waveColor, \";\\n }\"), 'antd-wave', {\n csp: _this.csp,\n attachTo: nodeBody\n });\n }\n if (insertExtraNode) {\n node.appendChild(extraNode);\n }\n ['transition', 'animation'].forEach(function (name) {\n node.addEventListener(\"\".concat(name, \"start\"), _this.onTransitionStart);\n node.addEventListener(\"\".concat(name, \"end\"), _this.onTransitionEnd);\n });\n };\n _this.onTransitionStart = function (e) {\n if (_this.destroyed) {\n return;\n }\n var node = _this.containerRef.current;\n if (!e || e.target !== node || _this.animationStart) {\n return;\n }\n _this.resetEffect(node);\n };\n _this.onTransitionEnd = function (e) {\n if (!e || e.animationName !== 'fadeEffect') {\n return;\n }\n _this.resetEffect(e.target);\n };\n _this.bindAnimationEvent = function (node) {\n if (!node || !node.getAttribute || node.getAttribute('disabled') || node.className.includes('disabled')) {\n return;\n }\n var onClick = function onClick(e) {\n // Fix radio button click twice\n if (e.target.tagName === 'INPUT' || isHidden(e.target)) {\n return;\n }\n _this.resetEffect(node);\n // Get wave color from target\n var waveColor = getComputedStyle(node).getPropertyValue('border-top-color') ||\n // Firefox Compatible\n getComputedStyle(node).getPropertyValue('border-color') || getComputedStyle(node).getPropertyValue('background-color');\n _this.clickWaveTimeoutId = window.setTimeout(function () {\n return _this.onClick(node, waveColor);\n }, 0);\n raf.cancel(_this.animationStartId);\n _this.animationStart = true;\n // Render to trigger transition event cost 3 frames. Let's delay 10 frames to reset this.\n _this.animationStartId = raf(function () {\n _this.animationStart = false;\n }, 10);\n };\n node.addEventListener('click', onClick, true);\n return {\n cancel: function cancel() {\n node.removeEventListener('click', onClick, true);\n }\n };\n };\n _this.renderWave = function (_ref) {\n var csp = _ref.csp;\n var children = _this.props.children;\n _this.csp = csp;\n if (! /*#__PURE__*/React.isValidElement(children)) return children;\n var ref = _this.containerRef;\n if (supportRef(children)) {\n ref = composeRef(children.ref, _this.containerRef);\n }\n return cloneElement(children, {\n ref: ref\n });\n };\n return _this;\n }\n _createClass(Wave, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.destroyed = false;\n var node = this.containerRef.current;\n if (!node || node.nodeType !== 1) {\n return;\n }\n this.instance = this.bindAnimationEvent(node);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.instance) {\n this.instance.cancel();\n }\n if (this.clickWaveTimeoutId) {\n clearTimeout(this.clickWaveTimeoutId);\n }\n this.destroyed = true;\n }\n }, {\n key: \"getAttributeName\",\n value: function getAttributeName() {\n var getPrefixCls = this.context.getPrefixCls;\n var insertExtraNode = this.props.insertExtraNode;\n return insertExtraNode ? \"\".concat(getPrefixCls(''), \"-click-animating\") : \"\".concat(getPrefixCls(''), \"-click-animating-without-extra-node\");\n }\n }, {\n key: \"resetEffect\",\n value: function resetEffect(node) {\n var _this2 = this;\n if (!node || node === this.extraNode || !(node instanceof Element)) {\n return;\n }\n var insertExtraNode = this.props.insertExtraNode;\n var attributeName = this.getAttributeName();\n node.setAttribute(attributeName, 'false'); // edge has bug on `removeAttribute` #14466\n if (styleForPseudo) {\n styleForPseudo.innerHTML = '';\n }\n if (insertExtraNode && this.extraNode && node.contains(this.extraNode)) {\n node.removeChild(this.extraNode);\n }\n ['transition', 'animation'].forEach(function (name) {\n node.removeEventListener(\"\".concat(name, \"start\"), _this2.onTransitionStart);\n node.removeEventListener(\"\".concat(name, \"end\"), _this2.onTransitionEnd);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(ConfigConsumer, null, this.renderWave);\n }\n }]);\n return Wave;\n}(React.Component);\nWave.contextType = ConfigContext;\nexport default Wave;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport raf from \"rc-util/es/raf\";\nexport function throttleByAnimationFrame(fn) {\n var requestId;\n var later = function later(args) {\n return function () {\n requestId = null;\n fn.apply(void 0, _toConsumableArray(args));\n };\n };\n var throttled = function throttled() {\n if (requestId == null) {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n requestId = raf(later(args));\n }\n };\n throttled.cancel = function () {\n raf.cancel(requestId);\n requestId = null;\n };\n return throttled;\n}\nexport function throttleByAnimationFrameDecorator() {\n return function throttle(target, key, descriptor) {\n var fn = descriptor.value;\n var definingProperty = false;\n return {\n configurable: true,\n get: function get() {\n // In IE11 calling Object.defineProperty has a side-effect of evaluating the\n // getter for the property which is being replaced. This causes infinite\n // recursion and an \"Out of stack space\" error.\n // eslint-disable-next-line no-prototype-builtins\n if (definingProperty || this === target.prototype || this.hasOwnProperty(key)) {\n /* istanbul ignore next */\n return fn;\n }\n var boundFn = throttleByAnimationFrame(fn.bind(this));\n definingProperty = true;\n Object.defineProperty(this, key, {\n value: boundFn,\n configurable: true,\n writable: true\n });\n definingProperty = false;\n return boundFn;\n }\n };\n };\n}","import addEventListener from \"rc-util/es/Dom/addEventListener\";\nexport function getTargetRect(target) {\n return target !== window ? target.getBoundingClientRect() : {\n top: 0,\n bottom: window.innerHeight\n };\n}\nexport function getFixedTop(placeholderReact, targetRect, offsetTop) {\n if (offsetTop !== undefined && targetRect.top > placeholderReact.top - offsetTop) {\n return offsetTop + targetRect.top;\n }\n return undefined;\n}\nexport function getFixedBottom(placeholderReact, targetRect, offsetBottom) {\n if (offsetBottom !== undefined && targetRect.bottom < placeholderReact.bottom + offsetBottom) {\n var targetBottomOffset = window.innerHeight - targetRect.bottom;\n return offsetBottom + targetBottomOffset;\n }\n return undefined;\n}\n// ======================== Observer ========================\nvar TRIGGER_EVENTS = ['resize', 'scroll', 'touchstart', 'touchmove', 'touchend', 'pageshow', 'load'];\nvar observerEntities = [];\nexport function getObserverEntities() {\n // Only used in test env. Can be removed if refactor.\n return observerEntities;\n}\nexport function addObserveTarget(target, affix) {\n if (!target) {\n return;\n }\n var entity = observerEntities.find(function (item) {\n return item.target === target;\n });\n if (entity) {\n entity.affixList.push(affix);\n } else {\n entity = {\n target: target,\n affixList: [affix],\n eventHandlers: {}\n };\n observerEntities.push(entity);\n // Add listener\n TRIGGER_EVENTS.forEach(function (eventName) {\n entity.eventHandlers[eventName] = addEventListener(target, eventName, function () {\n entity.affixList.forEach(function (targetAffix) {\n targetAffix.lazyUpdatePosition();\n });\n });\n });\n }\n}\nexport function removeObserveTarget(affix) {\n var observerEntity = observerEntities.find(function (oriObserverEntity) {\n var hasAffix = oriObserverEntity.affixList.some(function (item) {\n return item === affix;\n });\n if (hasAffix) {\n oriObserverEntity.affixList = oriObserverEntity.affixList.filter(function (item) {\n return item !== affix;\n });\n }\n return hasAffix;\n });\n if (observerEntity && observerEntity.affixList.length === 0) {\n observerEntities = observerEntities.filter(function (item) {\n return item !== observerEntity;\n });\n // Remove listener\n TRIGGER_EVENTS.forEach(function (eventName) {\n var handler = observerEntity.eventHandlers[eventName];\n if (handler && handler.remove) {\n handler.remove();\n }\n });\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar __decorate = this && this.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if ((typeof Reflect === \"undefined\" ? \"undefined\" : _typeof(Reflect)) === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { throttleByAnimationFrameDecorator } from '../_util/throttleByAnimationFrame';\nimport { addObserveTarget, getFixedBottom, getFixedTop, getTargetRect, removeObserveTarget } from './utils';\nfunction getDefaultTarget() {\n return typeof window !== 'undefined' ? window : null;\n}\nvar AffixStatus;\n(function (AffixStatus) {\n AffixStatus[AffixStatus[\"None\"] = 0] = \"None\";\n AffixStatus[AffixStatus[\"Prepare\"] = 1] = \"Prepare\";\n})(AffixStatus || (AffixStatus = {}));\nvar Affix = /*#__PURE__*/function (_React$Component) {\n _inherits(Affix, _React$Component);\n var _super = _createSuper(Affix);\n function Affix() {\n var _this;\n _classCallCheck(this, Affix);\n _this = _super.apply(this, arguments);\n _this.state = {\n status: AffixStatus.None,\n lastAffix: false,\n prevTarget: null\n };\n _this.getOffsetTop = function () {\n var _this$props = _this.props,\n offsetBottom = _this$props.offsetBottom,\n offsetTop = _this$props.offsetTop;\n return offsetBottom === undefined && offsetTop === undefined ? 0 : offsetTop;\n };\n _this.getOffsetBottom = function () {\n return _this.props.offsetBottom;\n };\n _this.savePlaceholderNode = function (node) {\n _this.placeholderNode = node;\n };\n _this.saveFixedNode = function (node) {\n _this.fixedNode = node;\n };\n // =================== Measure ===================\n _this.measure = function () {\n var _this$state = _this.state,\n status = _this$state.status,\n lastAffix = _this$state.lastAffix;\n var onChange = _this.props.onChange;\n var targetFunc = _this.getTargetFunc();\n if (status !== AffixStatus.Prepare || !_this.fixedNode || !_this.placeholderNode || !targetFunc) {\n return;\n }\n var offsetTop = _this.getOffsetTop();\n var offsetBottom = _this.getOffsetBottom();\n var targetNode = targetFunc();\n if (!targetNode) {\n return;\n }\n var newState = {\n status: AffixStatus.None\n };\n var targetRect = getTargetRect(targetNode);\n var placeholderReact = getTargetRect(_this.placeholderNode);\n var fixedTop = getFixedTop(placeholderReact, targetRect, offsetTop);\n var fixedBottom = getFixedBottom(placeholderReact, targetRect, offsetBottom);\n if (placeholderReact.top === 0 && placeholderReact.left === 0 && placeholderReact.width === 0 && placeholderReact.height === 0) {\n return;\n }\n if (fixedTop !== undefined) {\n newState.affixStyle = {\n position: 'fixed',\n top: fixedTop,\n width: placeholderReact.width,\n height: placeholderReact.height\n };\n newState.placeholderStyle = {\n width: placeholderReact.width,\n height: placeholderReact.height\n };\n } else if (fixedBottom !== undefined) {\n newState.affixStyle = {\n position: 'fixed',\n bottom: fixedBottom,\n width: placeholderReact.width,\n height: placeholderReact.height\n };\n newState.placeholderStyle = {\n width: placeholderReact.width,\n height: placeholderReact.height\n };\n }\n newState.lastAffix = !!newState.affixStyle;\n if (onChange && lastAffix !== newState.lastAffix) {\n onChange(newState.lastAffix);\n }\n _this.setState(newState);\n };\n // @ts-ignore TS6133\n _this.prepareMeasure = function () {\n // event param is used before. Keep compatible ts define here.\n _this.setState({\n status: AffixStatus.Prepare,\n affixStyle: undefined,\n placeholderStyle: undefined\n });\n // Test if `updatePosition` called\n if (process.env.NODE_ENV === 'test') {\n var onTestUpdatePosition = _this.props.onTestUpdatePosition;\n onTestUpdatePosition === null || onTestUpdatePosition === void 0 ? void 0 : onTestUpdatePosition();\n }\n };\n return _this;\n }\n _createClass(Affix, [{\n key: \"getTargetFunc\",\n value: function getTargetFunc() {\n var getTargetContainer = this.context.getTargetContainer;\n var target = this.props.target;\n if (target !== undefined) {\n return target;\n }\n return getTargetContainer !== null && getTargetContainer !== void 0 ? getTargetContainer : getDefaultTarget;\n }\n // Event handler\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n var targetFunc = this.getTargetFunc();\n if (targetFunc) {\n // [Legacy] Wait for parent component ref has its value.\n // We should use target as directly element instead of function which makes element check hard.\n this.timeout = setTimeout(function () {\n addObserveTarget(targetFunc(), _this2);\n // Mock Event object.\n _this2.updatePosition();\n });\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var prevTarget = this.state.prevTarget;\n var targetFunc = this.getTargetFunc();\n var newTarget = (targetFunc === null || targetFunc === void 0 ? void 0 : targetFunc()) || null;\n if (prevTarget !== newTarget) {\n removeObserveTarget(this);\n if (newTarget) {\n addObserveTarget(newTarget, this);\n // Mock Event object.\n this.updatePosition();\n }\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n prevTarget: newTarget\n });\n }\n if (prevProps.offsetTop !== this.props.offsetTop || prevProps.offsetBottom !== this.props.offsetBottom) {\n this.updatePosition();\n }\n this.measure();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n clearTimeout(this.timeout);\n removeObserveTarget(this);\n this.updatePosition.cancel();\n // https://github.com/ant-design/ant-design/issues/22683\n this.lazyUpdatePosition.cancel();\n }\n // Handle realign logic\n }, {\n key: \"updatePosition\",\n value: function updatePosition() {\n this.prepareMeasure();\n }\n }, {\n key: \"lazyUpdatePosition\",\n value: function lazyUpdatePosition() {\n var targetFunc = this.getTargetFunc();\n var affixStyle = this.state.affixStyle;\n // Check position change before measure to make Safari smooth\n if (targetFunc && affixStyle) {\n var offsetTop = this.getOffsetTop();\n var offsetBottom = this.getOffsetBottom();\n var targetNode = targetFunc();\n if (targetNode && this.placeholderNode) {\n var targetRect = getTargetRect(targetNode);\n var placeholderReact = getTargetRect(this.placeholderNode);\n var fixedTop = getFixedTop(placeholderReact, targetRect, offsetTop);\n var fixedBottom = getFixedBottom(placeholderReact, targetRect, offsetBottom);\n if (fixedTop !== undefined && affixStyle.top === fixedTop || fixedBottom !== undefined && affixStyle.bottom === fixedBottom) {\n return;\n }\n }\n }\n // Directly call prepare measure since it's already throttled.\n this.prepareMeasure();\n }\n // =================== Render ===================\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n var _this$state2 = this.state,\n affixStyle = _this$state2.affixStyle,\n placeholderStyle = _this$state2.placeholderStyle;\n var _this$props2 = this.props,\n affixPrefixCls = _this$props2.affixPrefixCls,\n children = _this$props2.children;\n var className = classNames(_defineProperty({}, affixPrefixCls, !!affixStyle));\n var props = omit(this.props, ['prefixCls', 'offsetTop', 'offsetBottom', 'target', 'onChange', 'affixPrefixCls']);\n // Omit this since `onTestUpdatePosition` only works on test.\n if (process.env.NODE_ENV === 'test') {\n props = omit(props, ['onTestUpdatePosition']);\n }\n return /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: function onResize() {\n _this3.updatePosition();\n }\n }, /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n ref: this.savePlaceholderNode\n }), affixStyle && /*#__PURE__*/React.createElement(\"div\", {\n style: placeholderStyle,\n \"aria-hidden\": \"true\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n ref: this.saveFixedNode,\n style: affixStyle\n }, /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: function onResize() {\n _this3.updatePosition();\n }\n }, children))));\n }\n }]);\n return Affix;\n}(React.Component);\nAffix.contextType = ConfigContext;\n__decorate([throttleByAnimationFrameDecorator()], Affix.prototype, \"updatePosition\", null);\n__decorate([throttleByAnimationFrameDecorator()], Affix.prototype, \"lazyUpdatePosition\", null);\nvar AffixFC = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var customizePrefixCls = props.prefixCls;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var affixPrefixCls = getPrefixCls('affix', customizePrefixCls);\n var affixProps = _extends(_extends({}, props), {\n affixPrefixCls: affixPrefixCls\n });\n return /*#__PURE__*/React.createElement(Affix, _extends({}, affixProps, {\n ref: ref\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n AffixFC.displayName = 'Affix';\n}\nexport default AffixFC;","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport Alert from '.';\nvar ErrorBoundary = /*#__PURE__*/function (_React$Component) {\n _inherits(ErrorBoundary, _React$Component);\n var _super = _createSuper(ErrorBoundary);\n function ErrorBoundary() {\n var _this;\n _classCallCheck(this, ErrorBoundary);\n _this = _super.apply(this, arguments);\n _this.state = {\n error: undefined,\n info: {\n componentStack: ''\n }\n };\n return _this;\n }\n _createClass(ErrorBoundary, [{\n key: \"componentDidCatch\",\n value: function componentDidCatch(error, info) {\n this.setState({\n error: error,\n info: info\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n message = _this$props.message,\n description = _this$props.description,\n children = _this$props.children;\n var _this$state = this.state,\n error = _this$state.error,\n info = _this$state.info;\n var componentStack = info && info.componentStack ? info.componentStack : null;\n var errorMessage = typeof message === 'undefined' ? (error || '').toString() : message;\n var errorDescription = typeof description === 'undefined' ? componentStack : description;\n if (error) {\n return /*#__PURE__*/React.createElement(Alert, {\n type: \"error\",\n message: errorMessage,\n description: /*#__PURE__*/React.createElement(\"pre\", null, errorDescription)\n });\n }\n return children;\n }\n }]);\n return ErrorBoundary;\n}(React.Component);\nexport default ErrorBoundary;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CheckCircleFilled from \"@ant-design/icons/es/icons/CheckCircleFilled\";\nimport CheckCircleOutlined from \"@ant-design/icons/es/icons/CheckCircleOutlined\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport CloseCircleOutlined from \"@ant-design/icons/es/icons/CloseCircleOutlined\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport ExclamationCircleFilled from \"@ant-design/icons/es/icons/ExclamationCircleFilled\";\nimport ExclamationCircleOutlined from \"@ant-design/icons/es/icons/ExclamationCircleOutlined\";\nimport InfoCircleFilled from \"@ant-design/icons/es/icons/InfoCircleFilled\";\nimport InfoCircleOutlined from \"@ant-design/icons/es/icons/InfoCircleOutlined\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport getDataOrAriaProps from '../_util/getDataOrAriaProps';\nimport { replaceElement } from '../_util/reactNode';\nimport ErrorBoundary from './ErrorBoundary';\nvar iconMapFilled = {\n success: CheckCircleFilled,\n info: InfoCircleFilled,\n error: CloseCircleFilled,\n warning: ExclamationCircleFilled\n};\nvar iconMapOutlined = {\n success: CheckCircleOutlined,\n info: InfoCircleOutlined,\n error: CloseCircleOutlined,\n warning: ExclamationCircleOutlined\n};\nvar IconNode = function IconNode(props) {\n var description = props.description,\n icon = props.icon,\n prefixCls = props.prefixCls,\n type = props.type;\n var iconType = (description ? iconMapOutlined : iconMapFilled)[type] || null;\n if (icon) {\n return replaceElement(icon, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-icon\")\n }, icon), function () {\n return {\n className: classNames(\"\".concat(prefixCls, \"-icon\"), _defineProperty({}, icon.props.className, icon.props.className))\n };\n });\n }\n return /*#__PURE__*/React.createElement(iconType, {\n className: \"\".concat(prefixCls, \"-icon\")\n });\n};\nvar CloseIcon = function CloseIcon(props) {\n var isClosable = props.isClosable,\n closeText = props.closeText,\n prefixCls = props.prefixCls,\n closeIcon = props.closeIcon,\n handleClose = props.handleClose;\n return isClosable ? /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: handleClose,\n className: \"\".concat(prefixCls, \"-close-icon\"),\n tabIndex: 0\n }, closeText ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-close-text\")\n }, closeText) : closeIcon) : null;\n};\nvar Alert = function Alert(_a) {\n var _classNames2;\n var description = _a.description,\n customizePrefixCls = _a.prefixCls,\n message = _a.message,\n banner = _a.banner,\n _a$className = _a.className,\n className = _a$className === void 0 ? '' : _a$className,\n style = _a.style,\n onMouseEnter = _a.onMouseEnter,\n onMouseLeave = _a.onMouseLeave,\n onClick = _a.onClick,\n afterClose = _a.afterClose,\n showIcon = _a.showIcon,\n closable = _a.closable,\n closeText = _a.closeText,\n _a$closeIcon = _a.closeIcon,\n closeIcon = _a$closeIcon === void 0 ? /*#__PURE__*/React.createElement(CloseOutlined, null) : _a$closeIcon,\n action = _a.action,\n props = __rest(_a, [\"description\", \"prefixCls\", \"message\", \"banner\", \"className\", \"style\", \"onMouseEnter\", \"onMouseLeave\", \"onClick\", \"afterClose\", \"showIcon\", \"closable\", \"closeText\", \"closeIcon\", \"action\"]);\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n closed = _React$useState2[0],\n setClosed = _React$useState2[1];\n var ref = React.useRef();\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var prefixCls = getPrefixCls('alert', customizePrefixCls);\n var handleClose = function handleClose(e) {\n var _a;\n setClosed(true);\n (_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props, e);\n };\n var getType = function getType() {\n var type = props.type;\n if (type !== undefined) {\n return type;\n }\n // banner 模式默认为警告\n return banner ? 'warning' : 'info';\n };\n // closeable when closeText is assigned\n var isClosable = closeText ? true : closable;\n var type = getType();\n // banner 模式默认有 Icon\n var isShowIcon = banner && showIcon === undefined ? true : showIcon;\n var alertCls = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(type), (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-with-description\"), !!description), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-no-icon\"), !isShowIcon), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-banner\"), !!banner), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames2), className);\n var dataOrAriaProps = getDataOrAriaProps(props);\n return /*#__PURE__*/React.createElement(CSSMotion, {\n visible: !closed,\n motionName: \"\".concat(prefixCls, \"-motion\"),\n motionAppear: false,\n motionEnter: false,\n onLeaveStart: function onLeaveStart(node) {\n return {\n maxHeight: node.offsetHeight\n };\n },\n onLeaveEnd: afterClose\n }, function (_ref) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n \"data-show\": !closed,\n className: classNames(alertCls, motionClassName),\n style: _extends(_extends({}, style), motionStyle),\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onClick: onClick,\n role: \"alert\"\n }, dataOrAriaProps), isShowIcon ? /*#__PURE__*/React.createElement(IconNode, {\n description: description,\n icon: props.icon,\n prefixCls: prefixCls,\n type: type\n }) : null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, message ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-message\")\n }, message) : null, description ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-description\")\n }, description) : null), action ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-action\")\n }, action) : null, /*#__PURE__*/React.createElement(CloseIcon, {\n isClosable: !!isClosable,\n closeText: closeText,\n prefixCls: prefixCls,\n closeIcon: closeIcon,\n handleClose: handleClose\n }));\n });\n};\nAlert.ErrorBoundary = ErrorBoundary;\nexport default Alert;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/**\n * TODO: 4.0\n *\n * - Remove `dataSource`\n * - `size` not work with customizeInput\n * - CustomizeInput not feedback `ENTER` key since accessibility enhancement\n */\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigConsumer } from '../config-provider';\nimport Select from '../select';\nimport { isValidElement } from '../_util/reactNode';\nimport warning from '../_util/warning';\nvar Option = Select.Option;\nfunction isSelectOptionOrSelectOptGroup(child) {\n return child && child.type && (child.type.isSelectOption || child.type.isSelectOptGroup);\n}\nvar AutoComplete = function AutoComplete(props, ref) {\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n popupClassName = props.popupClassName,\n dropdownClassName = props.dropdownClassName,\n children = props.children,\n dataSource = props.dataSource;\n var childNodes = toArray(children);\n // ============================= Input =============================\n var customizeInput;\n if (childNodes.length === 1 && isValidElement(childNodes[0]) && !isSelectOptionOrSelectOptGroup(childNodes[0])) {\n var _childNodes = _slicedToArray(childNodes, 1);\n customizeInput = _childNodes[0];\n }\n var getInputElement = customizeInput ? function () {\n return customizeInput;\n } : undefined;\n // ============================ Options ============================\n var optionChildren;\n // [Legacy] convert `children` or `dataSource` into option children\n if (childNodes.length && isSelectOptionOrSelectOptGroup(childNodes[0])) {\n optionChildren = children;\n } else {\n optionChildren = dataSource ? dataSource.map(function (item) {\n if (isValidElement(item)) {\n return item;\n }\n switch (_typeof(item)) {\n case 'string':\n return /*#__PURE__*/React.createElement(Option, {\n key: item,\n value: item\n }, item);\n case 'object':\n {\n var optionValue = item.value;\n return /*#__PURE__*/React.createElement(Option, {\n key: optionValue,\n value: optionValue\n }, item.text);\n }\n default:\n process.env.NODE_ENV !== \"production\" ? warning(false, 'AutoComplete', '`dataSource` is only supports type `string[] | Object[]`.') : void 0;\n return undefined;\n }\n }) : [];\n }\n process.env.NODE_ENV !== \"production\" ? warning(!('dataSource' in props), 'AutoComplete', '`dataSource` is deprecated, please use `options` instead.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!dropdownClassName, 'AutoComplete', '`dropdownClassName` is deprecated which will be removed in next major version. Please use `popupClassName` instead.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!customizeInput || !('size' in props), 'AutoComplete', 'You need to control style self instead of setting `size` when using customize input.') : void 0;\n return /*#__PURE__*/React.createElement(ConfigConsumer, null, function (_ref) {\n var getPrefixCls = _ref.getPrefixCls;\n var prefixCls = getPrefixCls('select', customizePrefixCls);\n return /*#__PURE__*/React.createElement(Select, _extends({\n ref: ref\n }, omit(props, ['dataSource']), {\n prefixCls: prefixCls,\n popupClassName: popupClassName || dropdownClassName,\n className: classNames(\"\".concat(prefixCls, \"-auto-complete\"), className),\n mode: Select.SECRET_COMBOBOX_MODE_DO_NOT_USE\n }, {\n // Internal api\n getInputElement: getInputElement\n }), optionChildren);\n });\n};\nvar RefAutoComplete = /*#__PURE__*/React.forwardRef(AutoComplete);\nRefAutoComplete.Option = Option;\nexport default RefAutoComplete;","import * as React from 'react';\nvar SizeContext = /*#__PURE__*/React.createContext('default');\nexport var SizeContextProvider = function SizeContextProvider(_ref) {\n var children = _ref.children,\n size = _ref.size;\n return /*#__PURE__*/React.createElement(SizeContext.Consumer, null, function (originSize) {\n return /*#__PURE__*/React.createElement(SizeContext.Provider, {\n value: size || originSize\n }, children);\n });\n};\nexport default SizeContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\nimport { responsiveArray } from '../_util/responsiveObserve';\nimport warning from '../_util/warning';\nimport SizeContext from './SizeContext';\nvar InternalAvatar = function InternalAvatar(props, ref) {\n var _classNames, _classNames2;\n var groupSize = React.useContext(SizeContext);\n var _React$useState = React.useState(1),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n scale = _React$useState2[0],\n setScale = _React$useState2[1];\n var _React$useState3 = React.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n mounted = _React$useState4[0],\n setMounted = _React$useState4[1];\n var _React$useState5 = React.useState(true),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n isImgExist = _React$useState6[0],\n setIsImgExist = _React$useState6[1];\n var avatarNodeRef = React.useRef(null);\n var avatarChildrenRef = React.useRef(null);\n var avatarNodeMergeRef = composeRef(ref, avatarNodeRef);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var setScaleParam = function setScaleParam() {\n if (!avatarChildrenRef.current || !avatarNodeRef.current) {\n return;\n }\n var childrenWidth = avatarChildrenRef.current.offsetWidth; // offsetWidth avoid affecting be transform scale\n var nodeWidth = avatarNodeRef.current.offsetWidth;\n // denominator is 0 is no meaning\n if (childrenWidth !== 0 && nodeWidth !== 0) {\n var _props$gap = props.gap,\n gap = _props$gap === void 0 ? 4 : _props$gap;\n if (gap * 2 < nodeWidth) {\n setScale(nodeWidth - gap * 2 < childrenWidth ? (nodeWidth - gap * 2) / childrenWidth : 1);\n }\n }\n };\n React.useEffect(function () {\n setMounted(true);\n }, []);\n React.useEffect(function () {\n setIsImgExist(true);\n setScale(1);\n }, [props.src]);\n React.useEffect(function () {\n setScaleParam();\n }, [props.gap]);\n var handleImgLoadError = function handleImgLoadError() {\n var onError = props.onError;\n var errorFlag = onError ? onError() : undefined;\n if (errorFlag !== false) {\n setIsImgExist(false);\n }\n };\n var customizePrefixCls = props.prefixCls,\n _props$shape = props.shape,\n shape = _props$shape === void 0 ? 'circle' : _props$shape,\n _props$size = props.size,\n customSize = _props$size === void 0 ? 'default' : _props$size,\n src = props.src,\n srcSet = props.srcSet,\n icon = props.icon,\n className = props.className,\n alt = props.alt,\n draggable = props.draggable,\n children = props.children,\n crossOrigin = props.crossOrigin,\n others = __rest(props, [\"prefixCls\", \"shape\", \"size\", \"src\", \"srcSet\", \"icon\", \"className\", \"alt\", \"draggable\", \"children\", \"crossOrigin\"]);\n var size = customSize === 'default' ? groupSize : customSize;\n var needResponsive = Object.keys(_typeof(size) === 'object' ? size || {} : {}).some(function (key) {\n return ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].includes(key);\n });\n var screens = useBreakpoint(needResponsive);\n var responsiveSizeStyle = React.useMemo(function () {\n if (_typeof(size) !== 'object') {\n return {};\n }\n var currentBreakpoint = responsiveArray.find(function (screen) {\n return screens[screen];\n });\n var currentSize = size[currentBreakpoint];\n return currentSize ? {\n width: currentSize,\n height: currentSize,\n lineHeight: \"\".concat(currentSize, \"px\"),\n fontSize: icon ? currentSize / 2 : 18\n } : {};\n }, [screens, size]);\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof icon === 'string' && icon.length > 2), 'Avatar', \"`icon` is using ReactNode instead of string naming in v4. Please check `\".concat(icon, \"` at https://ant.design/components/icon\")) : void 0;\n var prefixCls = getPrefixCls('avatar', customizePrefixCls);\n var sizeCls = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), size === 'large'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), size === 'small'), _classNames));\n var hasImageElement = /*#__PURE__*/React.isValidElement(src);\n var classString = classNames(prefixCls, sizeCls, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-\").concat(shape), !!shape), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-image\"), hasImageElement || src && isImgExist), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-icon\"), !!icon), _classNames2), className);\n var sizeStyle = typeof size === 'number' ? {\n width: size,\n height: size,\n lineHeight: \"\".concat(size, \"px\"),\n fontSize: icon ? size / 2 : 18\n } : {};\n var childrenToRender;\n if (typeof src === 'string' && isImgExist) {\n childrenToRender = /*#__PURE__*/React.createElement(\"img\", {\n src: src,\n draggable: draggable,\n srcSet: srcSet,\n onError: handleImgLoadError,\n alt: alt,\n crossOrigin: crossOrigin\n });\n } else if (hasImageElement) {\n childrenToRender = src;\n } else if (icon) {\n childrenToRender = icon;\n } else if (mounted || scale !== 1) {\n var transformString = \"scale(\".concat(scale, \") translateX(-50%)\");\n var childrenStyle = {\n msTransform: transformString,\n WebkitTransform: transformString,\n transform: transformString\n };\n var sizeChildrenStyle = typeof size === 'number' ? {\n lineHeight: \"\".concat(size, \"px\")\n } : {};\n childrenToRender = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: setScaleParam\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-string\"),\n ref: avatarChildrenRef,\n style: _extends(_extends({}, sizeChildrenStyle), childrenStyle)\n }, children));\n } else {\n childrenToRender = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-string\"),\n style: {\n opacity: 0\n },\n ref: avatarChildrenRef\n }, children);\n }\n // The event is triggered twice from bubbling up the DOM tree.\n // see https://codesandbox.io/s/kind-snow-9lidz\n delete others.onError;\n delete others.gap;\n return /*#__PURE__*/React.createElement(\"span\", _extends({}, others, {\n style: _extends(_extends(_extends({}, sizeStyle), responsiveSizeStyle), others.style),\n className: classString,\n ref: avatarNodeMergeRef\n }), childrenToRender);\n};\nvar Avatar = /*#__PURE__*/React.forwardRef(InternalAvatar);\nif (process.env.NODE_ENV !== 'production') {\n Avatar.displayName = 'Avatar';\n}\nexport default Avatar;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Popover from '../popover';\nimport { cloneElement } from '../_util/reactNode';\nimport Avatar from './avatar';\nimport { SizeContextProvider } from './SizeContext';\nvar Group = function Group(props) {\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var customizePrefixCls = props.prefixCls,\n _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n maxCount = props.maxCount,\n maxStyle = props.maxStyle,\n size = props.size;\n var prefixCls = getPrefixCls('avatar-group', customizePrefixCls);\n var cls = classNames(prefixCls, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), className);\n var children = props.children,\n _props$maxPopoverPlac = props.maxPopoverPlacement,\n maxPopoverPlacement = _props$maxPopoverPlac === void 0 ? 'top' : _props$maxPopoverPlac,\n _props$maxPopoverTrig = props.maxPopoverTrigger,\n maxPopoverTrigger = _props$maxPopoverTrig === void 0 ? 'hover' : _props$maxPopoverTrig;\n var childrenWithProps = toArray(children).map(function (child, index) {\n return cloneElement(child, {\n key: \"avatar-key-\".concat(index)\n });\n });\n var numOfChildren = childrenWithProps.length;\n if (maxCount && maxCount < numOfChildren) {\n var childrenShow = childrenWithProps.slice(0, maxCount);\n var childrenHidden = childrenWithProps.slice(maxCount, numOfChildren);\n childrenShow.push( /*#__PURE__*/React.createElement(Popover, {\n key: \"avatar-popover-key\",\n content: childrenHidden,\n trigger: maxPopoverTrigger,\n placement: maxPopoverPlacement,\n overlayClassName: \"\".concat(prefixCls, \"-popover\")\n }, /*#__PURE__*/React.createElement(Avatar, {\n style: maxStyle\n }, \"+\".concat(numOfChildren - maxCount))));\n return /*#__PURE__*/React.createElement(SizeContextProvider, {\n size: size\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: cls,\n style: props.style\n }, childrenShow));\n }\n return /*#__PURE__*/React.createElement(SizeContextProvider, {\n size: size\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: cls,\n style: props.style\n }, childrenWithProps));\n};\nexport default Group;","import InternalAvatar from './avatar';\nimport Group from './group';\nexport { Group };\nvar Avatar = InternalAvatar;\nAvatar.Group = Group;\nexport default Avatar;","import { PresetColorTypes } from '../_util/colors';\n// eslint-disable-next-line import/prefer-default-export\nexport function isPresetColor(color) {\n return PresetColorTypes.includes(color);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { isPresetColor } from './utils';\nvar Ribbon = function Ribbon(_ref) {\n var _classNames;\n var className = _ref.className,\n customizePrefixCls = _ref.prefixCls,\n style = _ref.style,\n color = _ref.color,\n children = _ref.children,\n text = _ref.text,\n _ref$placement = _ref.placement,\n placement = _ref$placement === void 0 ? 'end' : _ref$placement;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var prefixCls = getPrefixCls('ribbon', customizePrefixCls);\n var colorInPreset = isPresetColor(color);\n var ribbonCls = classNames(prefixCls, \"\".concat(prefixCls, \"-placement-\").concat(placement), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-color-\").concat(color), colorInPreset), _classNames), className);\n var colorStyle = {};\n var cornerColorStyle = {};\n if (color && !colorInPreset) {\n colorStyle.background = color;\n cornerColorStyle.color = color;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-wrapper\")\n }, children, /*#__PURE__*/React.createElement(\"div\", {\n className: ribbonCls,\n style: _extends(_extends({}, colorStyle), style)\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-text\")\n }, text), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-corner\"),\n style: cornerColorStyle\n })));\n};\nexport default Ribbon;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nfunction UnitNumber(_ref) {\n var prefixCls = _ref.prefixCls,\n value = _ref.value,\n current = _ref.current,\n _ref$offset = _ref.offset,\n offset = _ref$offset === void 0 ? 0 : _ref$offset;\n var style;\n if (offset) {\n style = {\n position: 'absolute',\n top: \"\".concat(offset, \"00%\"),\n left: 0\n };\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n style: style,\n className: classNames(\"\".concat(prefixCls, \"-only-unit\"), {\n current: current\n })\n }, value);\n}\nfunction getOffset(start, end, unit) {\n var index = start;\n var offset = 0;\n while ((index + 10) % 10 !== end) {\n index += unit;\n offset += unit;\n }\n return offset;\n}\nexport default function SingleNumber(props) {\n var prefixCls = props.prefixCls,\n originCount = props.count,\n originValue = props.value;\n var value = Number(originValue);\n var count = Math.abs(originCount);\n var _React$useState = React.useState(value),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n prevValue = _React$useState2[0],\n setPrevValue = _React$useState2[1];\n var _React$useState3 = React.useState(count),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n prevCount = _React$useState4[0],\n setPrevCount = _React$useState4[1];\n // ============================= Events =============================\n var onTransitionEnd = function onTransitionEnd() {\n setPrevValue(value);\n setPrevCount(count);\n };\n // Fallback if transition event not support\n React.useEffect(function () {\n var timeout = setTimeout(function () {\n onTransitionEnd();\n }, 1000);\n return function () {\n clearTimeout(timeout);\n };\n }, [value]);\n // ============================= Render =============================\n // Render unit list\n var unitNodes;\n var offsetStyle;\n if (prevValue === value || Number.isNaN(value) || Number.isNaN(prevValue)) {\n // Nothing to change\n unitNodes = [/*#__PURE__*/React.createElement(UnitNumber, _extends({}, props, {\n key: value,\n current: true\n }))];\n offsetStyle = {\n transition: 'none'\n };\n } else {\n unitNodes = [];\n // Fill basic number units\n var end = value + 10;\n var unitNumberList = [];\n for (var index = value; index <= end; index += 1) {\n unitNumberList.push(index);\n }\n // Fill with number unit nodes\n var prevIndex = unitNumberList.findIndex(function (n) {\n return n % 10 === prevValue;\n });\n unitNodes = unitNumberList.map(function (n, index) {\n var singleUnit = n % 10;\n return /*#__PURE__*/React.createElement(UnitNumber, _extends({}, props, {\n key: n,\n value: singleUnit,\n offset: index - prevIndex,\n current: index === prevIndex\n }));\n });\n // Calculate container offset value\n var unit = prevCount < count ? 1 : -1;\n offsetStyle = {\n transform: \"translateY(\".concat(-getOffset(prevValue, value, unit), \"00%)\")\n };\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-only\"),\n style: offsetStyle,\n onTransitionEnd: onTransitionEnd\n }, unitNodes);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { cloneElement } from '../_util/reactNode';\nimport SingleNumber from './SingleNumber';\nvar ScrollNumber = function ScrollNumber(_a) {\n var customizePrefixCls = _a.prefixCls,\n count = _a.count,\n className = _a.className,\n motionClassName = _a.motionClassName,\n style = _a.style,\n title = _a.title,\n show = _a.show,\n _a$component = _a.component,\n component = _a$component === void 0 ? 'sup' : _a$component,\n children = _a.children,\n restProps = __rest(_a, [\"prefixCls\", \"count\", \"className\", \"motionClassName\", \"style\", \"title\", \"show\", \"component\", \"children\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('scroll-number', customizePrefixCls);\n // ============================ Render ============================\n var newProps = _extends(_extends({}, restProps), {\n 'data-show': show,\n style: style,\n className: classNames(prefixCls, className, motionClassName),\n title: title\n });\n // Only integer need motion\n var numberNodes = count;\n if (count && Number(count) % 1 === 0) {\n var numberList = String(count).split('');\n numberNodes = numberList.map(function (num, i) {\n return /*#__PURE__*/React.createElement(SingleNumber, {\n prefixCls: prefixCls,\n count: Number(count),\n value: num,\n // eslint-disable-next-line react/no-array-index-key\n key: numberList.length - i\n });\n });\n }\n // allow specify the border\n // mock border-color by box-shadow for compatible with old usage:\n // <Badge count={4} style={{ backgroundColor: '#fff', color: '#999', borderColor: '#d9d9d9' }} />\n if (style && style.borderColor) {\n newProps.style = _extends(_extends({}, style), {\n boxShadow: \"0 0 0 1px \".concat(style.borderColor, \" inset\")\n });\n }\n if (children) {\n return cloneElement(children, function (oriProps) {\n return {\n className: classNames(\"\".concat(prefixCls, \"-custom-component\"), oriProps === null || oriProps === void 0 ? void 0 : oriProps.className, motionClassName)\n };\n });\n }\n return /*#__PURE__*/React.createElement(component, newProps, numberNodes);\n};\nexport default ScrollNumber;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport * as React from 'react';\nimport { useMemo, useRef } from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { cloneElement } from '../_util/reactNode';\nimport Ribbon from './Ribbon';\nimport ScrollNumber from './ScrollNumber';\nimport { isPresetColor } from './utils';\nvar Badge = function Badge(_a) {\n var _classNames, _classNames2;\n var customizePrefixCls = _a.prefixCls,\n customizeScrollNumberPrefixCls = _a.scrollNumberPrefixCls,\n children = _a.children,\n status = _a.status,\n text = _a.text,\n color = _a.color,\n _a$count = _a.count,\n count = _a$count === void 0 ? null : _a$count,\n _a$overflowCount = _a.overflowCount,\n overflowCount = _a$overflowCount === void 0 ? 99 : _a$overflowCount,\n _a$dot = _a.dot,\n dot = _a$dot === void 0 ? false : _a$dot,\n _a$size = _a.size,\n size = _a$size === void 0 ? 'default' : _a$size,\n title = _a.title,\n offset = _a.offset,\n style = _a.style,\n className = _a.className,\n _a$showZero = _a.showZero,\n showZero = _a$showZero === void 0 ? false : _a$showZero,\n restProps = __rest(_a, [\"prefixCls\", \"scrollNumberPrefixCls\", \"children\", \"status\", \"text\", \"color\", \"count\", \"overflowCount\", \"dot\", \"size\", \"title\", \"offset\", \"style\", \"className\", \"showZero\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var prefixCls = getPrefixCls('badge', customizePrefixCls);\n // ================================ Misc ================================\n var numberedDisplayCount = count > overflowCount ? \"\".concat(overflowCount, \"+\") : count;\n var isZero = numberedDisplayCount === '0' || numberedDisplayCount === 0;\n var ignoreCount = count === null || isZero && !showZero;\n var hasStatus = (status !== null && status !== undefined || color !== null && color !== undefined) && ignoreCount;\n var showAsDot = dot && !isZero;\n var mergedCount = showAsDot ? '' : numberedDisplayCount;\n var isHidden = useMemo(function () {\n var isEmpty = mergedCount === null || mergedCount === undefined || mergedCount === '';\n return (isEmpty || isZero && !showZero) && !showAsDot;\n }, [mergedCount, isZero, showZero, showAsDot]);\n // Count should be cache in case hidden change it\n var countRef = useRef(count);\n if (!isHidden) {\n countRef.current = count;\n }\n var livingCount = countRef.current;\n // We need cache count since remove motion should not change count display\n var displayCountRef = useRef(mergedCount);\n if (!isHidden) {\n displayCountRef.current = mergedCount;\n }\n var displayCount = displayCountRef.current;\n // We will cache the dot status to avoid shaking on leaved motion\n var isDotRef = useRef(showAsDot);\n if (!isHidden) {\n isDotRef.current = showAsDot;\n }\n // =============================== Styles ===============================\n var mergedStyle = useMemo(function () {\n if (!offset) {\n return _extends({}, style);\n }\n var offsetStyle = {\n marginTop: offset[1]\n };\n if (direction === 'rtl') {\n offsetStyle.left = parseInt(offset[0], 10);\n } else {\n offsetStyle.right = -parseInt(offset[0], 10);\n }\n return _extends(_extends({}, offsetStyle), style);\n }, [direction, offset, style]);\n // =============================== Render ===============================\n // >>> Title\n var titleNode = title !== null && title !== void 0 ? title : typeof livingCount === 'string' || typeof livingCount === 'number' ? livingCount : undefined;\n // >>> Status Text\n var statusTextNode = isHidden || !text ? null : /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-status-text\")\n }, text);\n // >>> Display Component\n var displayNode = !livingCount || _typeof(livingCount) !== 'object' ? undefined : cloneElement(livingCount, function (oriProps) {\n return {\n style: _extends(_extends({}, mergedStyle), oriProps.style)\n };\n });\n // Shared styles\n var statusCls = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-dot\"), hasStatus), _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-\").concat(status), !!status), _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-\").concat(color), isPresetColor(color)), _classNames));\n var statusStyle = {};\n if (color && !isPresetColor(color)) {\n statusStyle.background = color;\n }\n var badgeClassName = classNames(prefixCls, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-status\"), hasStatus), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-not-a-wrapper\"), !children), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames2), className);\n // <Badge status=\"success\" />\n if (!children && hasStatus) {\n var statusTextColor = mergedStyle.color;\n return /*#__PURE__*/React.createElement(\"span\", _extends({}, restProps, {\n className: badgeClassName,\n style: mergedStyle\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: statusCls,\n style: statusStyle\n }), text && /*#__PURE__*/React.createElement(\"span\", {\n style: {\n color: statusTextColor\n },\n className: \"\".concat(prefixCls, \"-status-text\")\n }, text));\n }\n // <Badge status=\"success\" count={<Icon type=\"xxx\" />}></Badge>\n return /*#__PURE__*/React.createElement(\"span\", _extends({}, restProps, {\n className: badgeClassName\n }), children, /*#__PURE__*/React.createElement(CSSMotion, {\n visible: !isHidden,\n motionName: \"\".concat(prefixCls, \"-zoom\"),\n motionAppear: false,\n motionDeadline: 1000\n }, function (_ref) {\n var _classNames3;\n var motionClassName = _ref.className;\n var scrollNumberPrefixCls = getPrefixCls('scroll-number', customizeScrollNumberPrefixCls);\n var isDot = isDotRef.current;\n var scrollNumberCls = classNames((_classNames3 = {}, _defineProperty(_classNames3, \"\".concat(prefixCls, \"-dot\"), isDot), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-count\"), !isDot), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-count-sm\"), size === 'small'), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-multiple-words\"), !isDot && displayCount && displayCount.toString().length > 1), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-status-\").concat(status), !!status), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-status-\").concat(color), isPresetColor(color)), _classNames3));\n var scrollNumberStyle = _extends({}, mergedStyle);\n if (color && !isPresetColor(color)) {\n scrollNumberStyle = scrollNumberStyle || {};\n scrollNumberStyle.background = color;\n }\n return /*#__PURE__*/React.createElement(ScrollNumber, {\n prefixCls: scrollNumberPrefixCls,\n show: !isHidden,\n motionClassName: motionClassName,\n className: scrollNumberCls,\n count: displayCount,\n title: titleNode,\n style: scrollNumberStyle,\n key: \"scrollNumber\"\n }, displayNode);\n }), statusTextNode);\n};\nBadge.Ribbon = Ribbon;\nexport default Badge;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport DownOutlined from \"@ant-design/icons/es/icons/DownOutlined\";\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport Dropdown from '../dropdown/dropdown';\nvar BreadcrumbItem = function BreadcrumbItem(props) {\n var customizePrefixCls = props.prefixCls,\n _props$separator = props.separator,\n separator = _props$separator === void 0 ? '/' : _props$separator,\n children = props.children,\n menu = props.menu,\n overlay = props.overlay,\n dropdownProps = props.dropdownProps,\n restProps = __rest(props, [\"prefixCls\", \"separator\", \"children\", \"menu\", \"overlay\", \"dropdownProps\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('breadcrumb', customizePrefixCls);\n // Warning for deprecated usage\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!('overlay' in props), 'Breadcrumb.Item', '`overlay` is deprecated. Please use `menu` instead.') : void 0;\n }\n /** If overlay is have Wrap a Dropdown */\n var renderBreadcrumbNode = function renderBreadcrumbNode(breadcrumbItem) {\n if (menu || overlay) {\n return /*#__PURE__*/React.createElement(Dropdown, _extends({\n menu: menu,\n overlay: overlay,\n placement: \"bottom\"\n }, dropdownProps), /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-overlay-link\")\n }, breadcrumbItem, /*#__PURE__*/React.createElement(DownOutlined, null)));\n }\n return breadcrumbItem;\n };\n var link;\n if ('href' in restProps) {\n link = /*#__PURE__*/React.createElement(\"a\", _extends({\n className: \"\".concat(prefixCls, \"-link\")\n }, restProps), children);\n } else {\n link = /*#__PURE__*/React.createElement(\"span\", _extends({\n className: \"\".concat(prefixCls, \"-link\")\n }, restProps), children);\n }\n // wrap to dropDown\n link = renderBreadcrumbNode(link);\n if (children !== undefined && children !== null) {\n return /*#__PURE__*/React.createElement(\"li\", null, link, separator && /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-separator\")\n }, separator));\n }\n return null;\n};\nBreadcrumbItem.__ANT_BREADCRUMB_ITEM = true;\nexport default BreadcrumbItem;","import * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nvar BreadcrumbSeparator = function BreadcrumbSeparator(_ref) {\n var children = _ref.children;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('breadcrumb');\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-separator\")\n }, children || '/');\n};\nBreadcrumbSeparator.__ANT_BREADCRUMB_SEPARATOR = true;\nexport default BreadcrumbSeparator;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Menu from '../menu';\nimport { cloneElement } from '../_util/reactNode';\nimport warning from '../_util/warning';\nimport BreadcrumbItem from './BreadcrumbItem';\nimport BreadcrumbSeparator from './BreadcrumbSeparator';\nfunction getBreadcrumbName(route, params) {\n if (!route.breadcrumbName) {\n return null;\n }\n var paramsKeys = Object.keys(params).join('|');\n var name = route.breadcrumbName.replace(new RegExp(\":(\".concat(paramsKeys, \")\"), 'g'), function (replacement, key) {\n return params[key] || replacement;\n });\n return name;\n}\nfunction defaultItemRender(route, params, routes, paths) {\n var isLastItem = routes.indexOf(route) === routes.length - 1;\n var name = getBreadcrumbName(route, params);\n return isLastItem ? /*#__PURE__*/React.createElement(\"span\", null, name) : /*#__PURE__*/React.createElement(\"a\", {\n href: \"#/\".concat(paths.join('/'))\n }, name);\n}\nvar getPath = function getPath(path, params) {\n path = (path || '').replace(/^\\//, '');\n Object.keys(params).forEach(function (key) {\n path = path.replace(\":\".concat(key), params[key]);\n });\n return path;\n};\nvar addChildPath = function addChildPath(paths, childPath, params) {\n var originalPaths = _toConsumableArray(paths);\n var path = getPath(childPath || '', params);\n if (path) {\n originalPaths.push(path);\n }\n return originalPaths;\n};\nvar Breadcrumb = function Breadcrumb(_a) {\n var customizePrefixCls = _a.prefixCls,\n _a$separator = _a.separator,\n separator = _a$separator === void 0 ? '/' : _a$separator,\n style = _a.style,\n className = _a.className,\n routes = _a.routes,\n children = _a.children,\n _a$itemRender = _a.itemRender,\n itemRender = _a$itemRender === void 0 ? defaultItemRender : _a$itemRender,\n _a$params = _a.params,\n params = _a$params === void 0 ? {} : _a$params,\n restProps = __rest(_a, [\"prefixCls\", \"separator\", \"style\", \"className\", \"routes\", \"children\", \"itemRender\", \"params\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var crumbs;\n var prefixCls = getPrefixCls('breadcrumb', customizePrefixCls);\n if (routes && routes.length > 0) {\n // generated by route\n var paths = [];\n crumbs = routes.map(function (route) {\n var path = getPath(route.path, params);\n if (path) {\n paths.push(path);\n }\n // generated overlay by route.children\n var overlay;\n if (route.children && route.children.length) {\n overlay = /*#__PURE__*/React.createElement(Menu, {\n items: route.children.map(function (child) {\n return {\n key: child.path || child.breadcrumbName,\n label: itemRender(child, params, routes, addChildPath(paths, child.path, params))\n };\n })\n });\n }\n var itemProps = {\n separator: separator\n };\n if (overlay) {\n itemProps.overlay = overlay;\n }\n return /*#__PURE__*/React.createElement(BreadcrumbItem, _extends({}, itemProps, {\n key: path || route.breadcrumbName\n }), itemRender(route, params, routes, paths));\n });\n } else if (children) {\n crumbs = toArray(children).map(function (element, index) {\n if (!element) {\n return element;\n }\n process.env.NODE_ENV !== \"production\" ? warning(element.type && (element.type.__ANT_BREADCRUMB_ITEM === true || element.type.__ANT_BREADCRUMB_SEPARATOR === true), 'Breadcrumb', \"Only accepts Breadcrumb.Item and Breadcrumb.Separator as it's children\") : void 0;\n return cloneElement(element, {\n separator: separator,\n key: index\n });\n });\n }\n var breadcrumbClassName = classNames(prefixCls, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), className);\n return /*#__PURE__*/React.createElement(\"nav\", _extends({\n className: breadcrumbClassName,\n style: style\n }, restProps), /*#__PURE__*/React.createElement(\"ol\", null, crumbs));\n};\nBreadcrumb.Item = BreadcrumbItem;\nBreadcrumb.Separator = BreadcrumbSeparator;\nexport default Breadcrumb;","import Breadcrumb from './Breadcrumb';\nexport default Breadcrumb;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport warning from '../_util/warning';\nexport var GroupSizeContext = /*#__PURE__*/React.createContext(undefined);\nvar ButtonGroup = function ButtonGroup(props) {\n var _classNames;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var customizePrefixCls = props.prefixCls,\n size = props.size,\n className = props.className,\n others = __rest(props, [\"prefixCls\", \"size\", \"className\"]);\n var prefixCls = getPrefixCls('btn-group', customizePrefixCls);\n // large => lg\n // small => sm\n var sizeCls = '';\n switch (size) {\n case 'large':\n sizeCls = 'lg';\n break;\n case 'small':\n sizeCls = 'sm';\n break;\n case 'middle':\n case undefined:\n break;\n default:\n process.env.NODE_ENV !== \"production\" ? warning(!size, 'Button.Group', 'Invalid prop `size`.') : void 0;\n }\n var classes = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(sizeCls), sizeCls), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n return /*#__PURE__*/React.createElement(GroupSizeContext.Provider, {\n value: size\n }, /*#__PURE__*/React.createElement(\"div\", _extends({}, others, {\n className: classes\n })));\n};\nexport default ButtonGroup;","import LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport CSSMotion from 'rc-motion';\nimport React from 'react';\nvar getCollapsedWidth = function getCollapsedWidth() {\n return {\n width: 0,\n opacity: 0,\n transform: 'scale(0)'\n };\n};\nvar getRealWidth = function getRealWidth(node) {\n return {\n width: node.scrollWidth,\n opacity: 1,\n transform: 'scale(1)'\n };\n};\nvar LoadingIcon = function LoadingIcon(_ref) {\n var prefixCls = _ref.prefixCls,\n loading = _ref.loading,\n existIcon = _ref.existIcon;\n var visible = !!loading;\n if (existIcon) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-loading-icon\")\n }, /*#__PURE__*/React.createElement(LoadingOutlined, null));\n }\n return /*#__PURE__*/React.createElement(CSSMotion, {\n visible: visible,\n // We do not really use this motionName\n motionName: \"\".concat(prefixCls, \"-loading-icon-motion\"),\n removeOnLeave: true,\n onAppearStart: getCollapsedWidth,\n onAppearActive: getRealWidth,\n onEnterStart: getCollapsedWidth,\n onEnterActive: getRealWidth,\n onLeaveStart: getRealWidth,\n onLeaveActive: getCollapsedWidth\n }, function (_ref2, ref) {\n var className = _ref2.className,\n style = _ref2.style;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-loading-icon\"),\n style: style,\n ref: ref\n }, /*#__PURE__*/React.createElement(LoadingOutlined, {\n className: className\n }));\n });\n};\nexport default LoadingIcon;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n/* eslint-disable react/button-has-type */\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport SizeContext from '../config-provider/SizeContext';\nimport { useCompactItemContext } from '../space/Compact';\nimport { cloneElement, isFragment } from '../_util/reactNode';\nimport { tuple } from '../_util/type';\nimport warning from '../_util/warning';\nimport Wave from '../_util/wave';\nimport Group, { GroupSizeContext } from './button-group';\nimport LoadingIcon from './LoadingIcon';\nvar rxTwoCNChar = /^[\\u4e00-\\u9fa5]{2}$/;\nvar isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar);\nfunction isString(str) {\n return typeof str === 'string';\n}\nfunction isUnBorderedButtonType(type) {\n return type === 'text' || type === 'link';\n}\n// Insert one space between two chinese characters automatically.\nfunction insertSpace(child, needInserted) {\n // Check the child if is undefined or null.\n if (child === null || child === undefined) {\n return;\n }\n var SPACE = needInserted ? ' ' : '';\n // strictNullChecks oops.\n if (typeof child !== 'string' && typeof child !== 'number' && isString(child.type) && isTwoCNChar(child.props.children)) {\n return cloneElement(child, {\n children: child.props.children.split('').join(SPACE)\n });\n }\n if (typeof child === 'string') {\n return isTwoCNChar(child) ? /*#__PURE__*/React.createElement(\"span\", null, child.split('').join(SPACE)) : /*#__PURE__*/React.createElement(\"span\", null, child);\n }\n if (isFragment(child)) {\n return /*#__PURE__*/React.createElement(\"span\", null, child);\n }\n return child;\n}\nfunction spaceChildren(children, needInserted) {\n var isPrevChildPure = false;\n var childList = [];\n React.Children.forEach(children, function (child) {\n var type = _typeof(child);\n var isCurrentChildPure = type === 'string' || type === 'number';\n if (isPrevChildPure && isCurrentChildPure) {\n var lastIndex = childList.length - 1;\n var lastChild = childList[lastIndex];\n childList[lastIndex] = \"\".concat(lastChild).concat(child);\n } else {\n childList.push(child);\n }\n isPrevChildPure = isCurrentChildPure;\n });\n // Pass to React.Children.map to auto fill key\n return React.Children.map(childList, function (child) {\n return insertSpace(child, needInserted);\n });\n}\nvar ButtonTypes = tuple('default', 'primary', 'ghost', 'dashed', 'link', 'text');\nvar ButtonShapes = tuple('default', 'circle', 'round');\nvar ButtonHTMLTypes = tuple('submit', 'button', 'reset');\nexport function convertLegacyProps(type) {\n if (type === 'danger') {\n return {\n danger: true\n };\n }\n return {\n type: type\n };\n}\nvar InternalButton = function InternalButton(props, ref) {\n var _classNames;\n var _props$loading = props.loading,\n loading = _props$loading === void 0 ? false : _props$loading,\n customizePrefixCls = props.prefixCls,\n _props$type = props.type,\n type = _props$type === void 0 ? 'default' : _props$type,\n danger = props.danger,\n _props$shape = props.shape,\n shape = _props$shape === void 0 ? 'default' : _props$shape,\n customizeSize = props.size,\n customDisabled = props.disabled,\n className = props.className,\n children = props.children,\n icon = props.icon,\n _props$ghost = props.ghost,\n ghost = _props$ghost === void 0 ? false : _props$ghost,\n _props$block = props.block,\n block = _props$block === void 0 ? false : _props$block,\n _props$htmlType = props.htmlType,\n htmlType = _props$htmlType === void 0 ? 'button' : _props$htmlType,\n rest = __rest(props, [\"loading\", \"prefixCls\", \"type\", \"danger\", \"shape\", \"size\", \"disabled\", \"className\", \"children\", \"icon\", \"ghost\", \"block\", \"htmlType\"]);\n var size = React.useContext(SizeContext);\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n var groupSize = React.useContext(GroupSizeContext);\n var _React$useState = React.useState(!!loading),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerLoading = _React$useState2[0],\n setLoading = _React$useState2[1];\n var _React$useState3 = React.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n hasTwoCNChar = _React$useState4[0],\n setHasTwoCNChar = _React$useState4[1];\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n autoInsertSpaceInButton = _React$useContext.autoInsertSpaceInButton,\n direction = _React$useContext.direction;\n var buttonRef = ref || /*#__PURE__*/React.createRef();\n var isNeedInserted = function isNeedInserted() {\n return React.Children.count(children) === 1 && !icon && !isUnBorderedButtonType(type);\n };\n var fixTwoCNChar = function fixTwoCNChar() {\n // Fix for HOC usage like <FormatMessage />\n if (!buttonRef || !buttonRef.current || autoInsertSpaceInButton === false) {\n return;\n }\n var buttonText = buttonRef.current.textContent;\n if (isNeedInserted() && isTwoCNChar(buttonText)) {\n if (!hasTwoCNChar) {\n setHasTwoCNChar(true);\n }\n } else if (hasTwoCNChar) {\n setHasTwoCNChar(false);\n }\n };\n // =============== Update Loading ===============\n var loadingOrDelay = typeof loading === 'boolean' ? loading : (loading === null || loading === void 0 ? void 0 : loading.delay) || true;\n React.useEffect(function () {\n var delayTimer = null;\n if (typeof loadingOrDelay === 'number') {\n delayTimer = window.setTimeout(function () {\n delayTimer = null;\n setLoading(loadingOrDelay);\n }, loadingOrDelay);\n } else {\n setLoading(loadingOrDelay);\n }\n return function () {\n if (delayTimer) {\n // in order to not perform a React state update on an unmounted component\n // and clear timer after 'loadingOrDelay' updated.\n window.clearTimeout(delayTimer);\n delayTimer = null;\n }\n };\n }, [loadingOrDelay]);\n React.useEffect(fixTwoCNChar, [buttonRef]);\n var handleClick = function handleClick(e) {\n var onClick = props.onClick;\n // https://github.com/ant-design/ant-design/issues/30207\n if (innerLoading || mergedDisabled) {\n e.preventDefault();\n return;\n }\n onClick === null || onClick === void 0 ? void 0 : onClick(e);\n };\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof icon === 'string' && icon.length > 2), 'Button', \"`icon` is using ReactNode instead of string naming in v4. Please check `\".concat(icon, \"` at https://ant.design/components/icon\")) : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(ghost && isUnBorderedButtonType(type)), 'Button', \"`link` or `text` button can't be a `ghost` button.\") : void 0;\n var prefixCls = getPrefixCls('btn', customizePrefixCls);\n var autoInsertSpace = autoInsertSpaceInButton !== false;\n var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n compactSize = _useCompactItemContex.compactSize,\n compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n var sizeClassNameMap = {\n large: 'lg',\n small: 'sm',\n middle: undefined\n };\n var sizeFullname = compactSize || groupSize || customizeSize || size;\n var sizeCls = sizeFullname ? sizeClassNameMap[sizeFullname] || '' : '';\n var iconType = innerLoading ? 'loading' : icon;\n var linkButtonRestProps = omit(rest, ['navigate']);\n var classes = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(shape), shape !== 'default' && shape), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(type), type), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(sizeCls), sizeCls), _defineProperty(_classNames, \"\".concat(prefixCls, \"-icon-only\"), !children && children !== 0 && !!iconType), _defineProperty(_classNames, \"\".concat(prefixCls, \"-background-ghost\"), ghost && !isUnBorderedButtonType(type)), _defineProperty(_classNames, \"\".concat(prefixCls, \"-loading\"), innerLoading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-two-chinese-chars\"), hasTwoCNChar && autoInsertSpace && !innerLoading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-block\"), block), _defineProperty(_classNames, \"\".concat(prefixCls, \"-dangerous\"), !!danger), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), linkButtonRestProps.href !== undefined && mergedDisabled), _classNames), compactItemClassnames, className);\n var iconNode = icon && !innerLoading ? icon : /*#__PURE__*/React.createElement(LoadingIcon, {\n existIcon: !!icon,\n prefixCls: prefixCls,\n loading: !!innerLoading\n });\n var kids = children || children === 0 ? spaceChildren(children, isNeedInserted() && autoInsertSpace) : null;\n if (linkButtonRestProps.href !== undefined) {\n return /*#__PURE__*/React.createElement(\"a\", _extends({}, linkButtonRestProps, {\n className: classes,\n onClick: handleClick,\n ref: buttonRef\n }), iconNode, kids);\n }\n var buttonNode = /*#__PURE__*/React.createElement(\"button\", _extends({}, rest, {\n type: htmlType,\n className: classes,\n onClick: handleClick,\n disabled: mergedDisabled,\n ref: buttonRef\n }), iconNode, kids);\n if (isUnBorderedButtonType(type)) {\n return buttonNode;\n }\n return /*#__PURE__*/React.createElement(Wave, {\n disabled: !!innerLoading\n }, buttonNode);\n};\nvar Button = /*#__PURE__*/React.forwardRef(InternalButton);\nif (process.env.NODE_ENV !== 'production') {\n Button.displayName = 'Button';\n}\nButton.Group = Group;\nButton.__ANT_BUTTON = true;\nexport default Button;","import Button from './button';\nexport default Button;","import enUS from '../../date-picker/locale/en_US';\nexport default enUS;","var initialState = {\n animating: false,\n autoplaying: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n dragging: false,\n edgeDragged: false,\n initialized: false,\n lazyLoadedList: [],\n listHeight: null,\n listWidth: null,\n scrolling: false,\n slideCount: null,\n slideHeight: null,\n slideWidth: null,\n swipeLeft: null,\n swiped: false,\n // used by swipeEvent. differentites between touch and swipe.\n swiping: false,\n touchObject: {\n startX: 0,\n startY: 0,\n curX: 0,\n curY: 0\n },\n trackStyle: {},\n trackWidth: 0,\n targetSlide: 0\n};\nexport default initialState;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport React from \"react\";\nexport function clamp(number, lowerBound, upperBound) {\n return Math.max(lowerBound, Math.min(number, upperBound));\n}\nexport var safePreventDefault = function safePreventDefault(event) {\n var passiveEvents = [\"onTouchStart\", \"onTouchMove\", \"onWheel\"];\n\n if (!passiveEvents.includes(event._reactName)) {\n event.preventDefault();\n }\n};\nexport var getOnDemandLazySlides = function getOnDemandLazySlides(spec) {\n var onDemandSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n onDemandSlides.push(slideIndex);\n }\n }\n\n return onDemandSlides;\n}; // return list of slides that need to be present\n\nexport var getRequiredLazySlides = function getRequiredLazySlides(spec) {\n var requiredSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n requiredSlides.push(slideIndex);\n }\n\n return requiredSlides;\n}; // startIndex that needs to be present\n\nexport var lazyStartIndex = function lazyStartIndex(spec) {\n return spec.currentSlide - lazySlidesOnLeft(spec);\n};\nexport var lazyEndIndex = function lazyEndIndex(spec) {\n return spec.currentSlide + lazySlidesOnRight(spec);\n};\nexport var lazySlidesOnLeft = function lazySlidesOnLeft(spec) {\n return spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0;\n};\nexport var lazySlidesOnRight = function lazySlidesOnRight(spec) {\n return spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow;\n}; // get width of an element\n\nexport var getWidth = function getWidth(elem) {\n return elem && elem.offsetWidth || 0;\n};\nexport var getHeight = function getHeight(elem) {\n return elem && elem.offsetHeight || 0;\n};\nexport var getSwipeDirection = function getSwipeDirection(touchObject) {\n var verticalSwiping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var xDist, yDist, r, swipeAngle;\n xDist = touchObject.startX - touchObject.curX;\n yDist = touchObject.startY - touchObject.curY;\n r = Math.atan2(yDist, xDist);\n swipeAngle = Math.round(r * 180 / Math.PI);\n\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n\n if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n return \"left\";\n }\n\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return \"right\";\n }\n\n if (verticalSwiping === true) {\n if (swipeAngle >= 35 && swipeAngle <= 135) {\n return \"up\";\n } else {\n return \"down\";\n }\n }\n\n return \"vertical\";\n}; // whether or not we can go next\n\nexport var canGoNext = function canGoNext(spec) {\n var canGo = true;\n\n if (!spec.infinite) {\n if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n canGo = false;\n } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) {\n canGo = false;\n }\n }\n\n return canGo;\n}; // given an object and a list of keys, return new object with given keys\n\nexport var extractObject = function extractObject(spec, keys) {\n var newObject = {};\n keys.forEach(function (key) {\n return newObject[key] = spec[key];\n });\n return newObject;\n}; // get initialized state\n\nexport var initializedState = function initializedState(spec) {\n // spec also contains listRef, trackRef\n var slideCount = React.Children.count(spec.children);\n var listNode = spec.listRef;\n var listWidth = Math.ceil(getWidth(listNode));\n var trackNode = spec.trackRef && spec.trackRef.node;\n var trackWidth = Math.ceil(getWidth(trackNode));\n var slideWidth;\n\n if (!spec.vertical) {\n var centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n\n if (typeof spec.centerPadding === \"string\" && spec.centerPadding.slice(-1) === \"%\") {\n centerPaddingAdj *= listWidth / 100;\n }\n\n slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n } else {\n slideWidth = listWidth;\n }\n\n var slideHeight = listNode && getHeight(listNode.querySelector('[data-index=\"0\"]'));\n var listHeight = slideHeight * spec.slidesToShow;\n var currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n\n if (spec.rtl && spec.currentSlide === undefined) {\n currentSlide = slideCount - 1 - spec.initialSlide;\n }\n\n var lazyLoadedList = spec.lazyLoadedList || [];\n var slidesToLoad = getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: currentSlide,\n lazyLoadedList: lazyLoadedList\n }));\n lazyLoadedList = lazyLoadedList.concat(slidesToLoad);\n var state = {\n slideCount: slideCount,\n slideWidth: slideWidth,\n listWidth: listWidth,\n trackWidth: trackWidth,\n currentSlide: currentSlide,\n slideHeight: slideHeight,\n listHeight: listHeight,\n lazyLoadedList: lazyLoadedList\n };\n\n if (spec.autoplaying === null && spec.autoplay) {\n state[\"autoplaying\"] = \"playing\";\n }\n\n return state;\n};\nexport var slideHandler = function slideHandler(spec) {\n var waitForAnimate = spec.waitForAnimate,\n animating = spec.animating,\n fade = spec.fade,\n infinite = spec.infinite,\n index = spec.index,\n slideCount = spec.slideCount,\n lazyLoad = spec.lazyLoad,\n currentSlide = spec.currentSlide,\n centerMode = spec.centerMode,\n slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n useCSS = spec.useCSS;\n var lazyLoadedList = spec.lazyLoadedList;\n if (waitForAnimate && animating) return {};\n var animationSlide = index,\n finalSlide,\n animationLeft,\n finalLeft;\n var state = {},\n nextState = {};\n var targetSlide = infinite ? index : clamp(index, 0, slideCount - 1);\n\n if (fade) {\n if (!infinite && (index < 0 || index >= slideCount)) return {};\n\n if (index < 0) {\n animationSlide = index + slideCount;\n } else if (index >= slideCount) {\n animationSlide = index - slideCount;\n }\n\n if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n lazyLoadedList = lazyLoadedList.concat(animationSlide);\n }\n\n state = {\n animating: true,\n currentSlide: animationSlide,\n lazyLoadedList: lazyLoadedList,\n targetSlide: animationSlide\n };\n nextState = {\n animating: false,\n targetSlide: animationSlide\n };\n } else {\n finalSlide = animationSlide;\n\n if (animationSlide < 0) {\n finalSlide = animationSlide + slideCount;\n if (!infinite) finalSlide = 0;else if (slideCount % slidesToScroll !== 0) finalSlide = slideCount - slideCount % slidesToScroll;\n } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n animationSlide = finalSlide = currentSlide;\n } else if (centerMode && animationSlide >= slideCount) {\n animationSlide = infinite ? slideCount : slideCount - 1;\n finalSlide = infinite ? 0 : slideCount - 1;\n } else if (animationSlide >= slideCount) {\n finalSlide = animationSlide - slideCount;\n if (!infinite) finalSlide = slideCount - slidesToShow;else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n }\n\n if (!infinite && animationSlide + slidesToShow >= slideCount) {\n finalSlide = slideCount - slidesToShow;\n }\n\n animationLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: animationSlide\n }));\n finalLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: finalSlide\n }));\n\n if (!infinite) {\n if (animationLeft === finalLeft) animationSlide = finalSlide;\n animationLeft = finalLeft;\n }\n\n if (lazyLoad) {\n lazyLoadedList = lazyLoadedList.concat(getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: animationSlide\n })));\n }\n\n if (!useCSS) {\n state = {\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n } else {\n state = {\n animating: true,\n currentSlide: finalSlide,\n trackStyle: getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: animationLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n nextState = {\n animating: false,\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n swipeLeft: null,\n targetSlide: targetSlide\n };\n }\n }\n\n return {\n state: state,\n nextState: nextState\n };\n};\nexport var changeSlide = function changeSlide(spec, options) {\n var indexOffset, previousInt, slideOffset, unevenOffset, targetSlide;\n var slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n slideCount = spec.slideCount,\n currentSlide = spec.currentSlide,\n previousTargetSlide = spec.targetSlide,\n lazyLoad = spec.lazyLoad,\n infinite = spec.infinite;\n unevenOffset = slideCount % slidesToScroll !== 0;\n indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n if (options.message === \"previous\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n targetSlide = currentSlide - slideOffset;\n\n if (lazyLoad && !infinite) {\n previousInt = currentSlide - slideOffset;\n targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide - slidesToScroll;\n }\n } else if (options.message === \"next\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n targetSlide = currentSlide + slideOffset;\n\n if (lazyLoad && !infinite) {\n targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide + slidesToScroll;\n }\n } else if (options.message === \"dots\") {\n // Click on dots\n targetSlide = options.index * options.slidesToScroll;\n } else if (options.message === \"children\") {\n // Click on the slides\n targetSlide = options.index;\n\n if (infinite) {\n var direction = siblingDirection(_objectSpread(_objectSpread({}, spec), {}, {\n targetSlide: targetSlide\n }));\n\n if (targetSlide > options.currentSlide && direction === \"left\") {\n targetSlide = targetSlide - slideCount;\n } else if (targetSlide < options.currentSlide && direction === \"right\") {\n targetSlide = targetSlide + slideCount;\n }\n }\n } else if (options.message === \"index\") {\n targetSlide = Number(options.index);\n }\n\n return targetSlide;\n};\nexport var keyHandler = function keyHandler(e, accessibility, rtl) {\n if (e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\") || !accessibility) return \"\";\n if (e.keyCode === 37) return rtl ? \"next\" : \"previous\";\n if (e.keyCode === 39) return rtl ? \"previous\" : \"next\";\n return \"\";\n};\nexport var swipeStart = function swipeStart(e, swipe, draggable) {\n e.target.tagName === \"IMG\" && safePreventDefault(e);\n if (!swipe || !draggable && e.type.indexOf(\"mouse\") !== -1) return \"\";\n return {\n dragging: true,\n touchObject: {\n startX: e.touches ? e.touches[0].pageX : e.clientX,\n startY: e.touches ? e.touches[0].pageY : e.clientY,\n curX: e.touches ? e.touches[0].pageX : e.clientX,\n curY: e.touches ? e.touches[0].pageY : e.clientY\n }\n };\n};\nexport var swipeMove = function swipeMove(e, spec) {\n // spec also contains, trackRef and slideIndex\n var scrolling = spec.scrolling,\n animating = spec.animating,\n vertical = spec.vertical,\n swipeToSlide = spec.swipeToSlide,\n verticalSwiping = spec.verticalSwiping,\n rtl = spec.rtl,\n currentSlide = spec.currentSlide,\n edgeFriction = spec.edgeFriction,\n edgeDragged = spec.edgeDragged,\n onEdge = spec.onEdge,\n swiped = spec.swiped,\n swiping = spec.swiping,\n slideCount = spec.slideCount,\n slidesToScroll = spec.slidesToScroll,\n infinite = spec.infinite,\n touchObject = spec.touchObject,\n swipeEvent = spec.swipeEvent,\n listHeight = spec.listHeight,\n listWidth = spec.listWidth;\n if (scrolling) return;\n if (animating) return safePreventDefault(e);\n if (vertical && swipeToSlide && verticalSwiping) safePreventDefault(e);\n var swipeLeft,\n state = {};\n var curLeft = getTrackLeft(spec);\n touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)));\n var verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)));\n\n if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n return {\n scrolling: true\n };\n }\n\n if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n var positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n if (verticalSwiping) positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n var dotCount = Math.ceil(slideCount / slidesToScroll);\n var swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n var touchSwipeLength = touchObject.swipeLength;\n\n if (!infinite) {\n if (currentSlide === 0 && (swipeDirection === \"right\" || swipeDirection === \"down\") || currentSlide + 1 >= dotCount && (swipeDirection === \"left\" || swipeDirection === \"up\") || !canGoNext(spec) && (swipeDirection === \"left\" || swipeDirection === \"up\")) {\n touchSwipeLength = touchObject.swipeLength * edgeFriction;\n\n if (edgeDragged === false && onEdge) {\n onEdge(swipeDirection);\n state[\"edgeDragged\"] = true;\n }\n }\n }\n\n if (!swiped && swipeEvent) {\n swipeEvent(swipeDirection);\n state[\"swiped\"] = true;\n }\n\n if (!vertical) {\n if (!rtl) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n } else {\n swipeLeft = curLeft - touchSwipeLength * positionOffset;\n }\n } else {\n swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n }\n\n if (verticalSwiping) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n }\n\n state = _objectSpread(_objectSpread({}, state), {}, {\n touchObject: touchObject,\n swipeLeft: swipeLeft,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: swipeLeft\n }))\n });\n\n if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) {\n return state;\n }\n\n if (touchObject.swipeLength > 10) {\n state[\"swiping\"] = true;\n safePreventDefault(e);\n }\n\n return state;\n};\nexport var swipeEnd = function swipeEnd(e, spec) {\n var dragging = spec.dragging,\n swipe = spec.swipe,\n touchObject = spec.touchObject,\n listWidth = spec.listWidth,\n touchThreshold = spec.touchThreshold,\n verticalSwiping = spec.verticalSwiping,\n listHeight = spec.listHeight,\n swipeToSlide = spec.swipeToSlide,\n scrolling = spec.scrolling,\n onSwipe = spec.onSwipe,\n targetSlide = spec.targetSlide,\n currentSlide = spec.currentSlide,\n infinite = spec.infinite;\n\n if (!dragging) {\n if (swipe) safePreventDefault(e);\n return {};\n }\n\n var minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n var swipeDirection = getSwipeDirection(touchObject, verticalSwiping); // reset the state of touch related state variables.\n\n var state = {\n dragging: false,\n edgeDragged: false,\n scrolling: false,\n swiping: false,\n swiped: false,\n swipeLeft: null,\n touchObject: {}\n };\n\n if (scrolling) {\n return state;\n }\n\n if (!touchObject.swipeLength) {\n return state;\n }\n\n if (touchObject.swipeLength > minSwipe) {\n safePreventDefault(e);\n\n if (onSwipe) {\n onSwipe(swipeDirection);\n }\n\n var slideCount, newSlide;\n var activeSlide = infinite ? currentSlide : targetSlide;\n\n switch (swipeDirection) {\n case \"left\":\n case \"up\":\n newSlide = activeSlide + getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 0;\n break;\n\n case \"right\":\n case \"down\":\n newSlide = activeSlide - getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 1;\n break;\n\n default:\n slideCount = activeSlide;\n }\n\n state[\"triggerSlideHandler\"] = slideCount;\n } else {\n // Adjust the track back to it's original position.\n var currentLeft = getTrackLeft(spec);\n state[\"trackStyle\"] = getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: currentLeft\n }));\n }\n\n return state;\n};\nexport var getNavigableIndexes = function getNavigableIndexes(spec) {\n var max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n var breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n var counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n var indexes = [];\n\n while (breakpoint < max) {\n indexes.push(breakpoint);\n breakpoint = counter + spec.slidesToScroll;\n counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n }\n\n return indexes;\n};\nexport var checkNavigable = function checkNavigable(spec, index) {\n var navigables = getNavigableIndexes(spec);\n var prevNavigable = 0;\n\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n\n prevNavigable = navigables[n];\n }\n }\n\n return index;\n};\nexport var getSlideCount = function getSlideCount(spec) {\n var centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n\n if (spec.swipeToSlide) {\n var swipedSlide;\n var slickList = spec.listRef;\n var slides = slickList.querySelectorAll && slickList.querySelectorAll(\".slick-slide\") || [];\n Array.from(slides).every(function (slide) {\n if (!spec.vertical) {\n if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n } else {\n if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n }\n\n return true;\n });\n\n if (!swipedSlide) {\n return 0;\n }\n\n var currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n var slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n return slidesTraversed;\n } else {\n return spec.slidesToScroll;\n }\n};\nexport var checkSpecKeys = function checkSpecKeys(spec, keysArray) {\n return (// eslint-disable-next-line no-prototype-builtins\n keysArray.reduce(function (value, key) {\n return value && spec.hasOwnProperty(key);\n }, true) ? null : console.error(\"Keys Missing:\", spec)\n );\n};\nexport var getTrackCSS = function getTrackCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\"]);\n var trackWidth, trackHeight;\n var trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n\n if (!spec.vertical) {\n trackWidth = getTotalSlides(spec) * spec.slideWidth;\n } else {\n trackHeight = trackChildren * spec.slideHeight;\n }\n\n var style = {\n opacity: 1,\n transition: \"\",\n WebkitTransition: \"\"\n };\n\n if (spec.useTransform) {\n var WebkitTransform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var transform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var msTransform = !spec.vertical ? \"translateX(\" + spec.left + \"px)\" : \"translateY(\" + spec.left + \"px)\";\n style = _objectSpread(_objectSpread({}, style), {}, {\n WebkitTransform: WebkitTransform,\n transform: transform,\n msTransform: msTransform\n });\n } else {\n if (spec.vertical) {\n style[\"top\"] = spec.left;\n } else {\n style[\"left\"] = spec.left;\n }\n }\n\n if (spec.fade) style = {\n opacity: 1\n };\n if (trackWidth) style.width = trackWidth;\n if (trackHeight) style.height = trackHeight; // Fallback for IE8\n\n if (window && !window.addEventListener && window.attachEvent) {\n if (!spec.vertical) {\n style.marginLeft = spec.left + \"px\";\n } else {\n style.marginTop = spec.left + \"px\";\n }\n }\n\n return style;\n};\nexport var getTrackAnimateCSS = function getTrackAnimateCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\", \"speed\", \"cssEase\"]);\n var style = getTrackCSS(spec); // useCSS is true by default so it can be undefined\n\n if (spec.useTransform) {\n style.WebkitTransition = \"-webkit-transform \" + spec.speed + \"ms \" + spec.cssEase;\n style.transition = \"transform \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n if (spec.vertical) {\n style.transition = \"top \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n style.transition = \"left \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\nexport var getTrackLeft = function getTrackLeft(spec) {\n if (spec.unslick) {\n return 0;\n }\n\n checkSpecKeys(spec, [\"slideIndex\", \"trackRef\", \"infinite\", \"centerMode\", \"slideCount\", \"slidesToShow\", \"slidesToScroll\", \"slideWidth\", \"listWidth\", \"variableWidth\", \"slideHeight\"]);\n var slideIndex = spec.slideIndex,\n trackRef = spec.trackRef,\n infinite = spec.infinite,\n centerMode = spec.centerMode,\n slideCount = spec.slideCount,\n slidesToShow = spec.slidesToShow,\n slidesToScroll = spec.slidesToScroll,\n slideWidth = spec.slideWidth,\n listWidth = spec.listWidth,\n variableWidth = spec.variableWidth,\n slideHeight = spec.slideHeight,\n fade = spec.fade,\n vertical = spec.vertical;\n var slideOffset = 0;\n var targetLeft;\n var targetSlide;\n var verticalOffset = 0;\n\n if (fade || spec.slideCount === 1) {\n return 0;\n }\n\n var slidesToOffset = 0;\n\n if (infinite) {\n slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll);\n } // shift current slide to center of the frame\n\n\n if (centerMode) {\n slidesToOffset += parseInt(slidesToShow / 2);\n }\n } else {\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = slidesToShow - slideCount % slidesToScroll;\n }\n\n if (centerMode) {\n slidesToOffset = parseInt(slidesToShow / 2);\n }\n }\n\n slideOffset = slidesToOffset * slideWidth;\n verticalOffset = slidesToOffset * slideHeight;\n\n if (!vertical) {\n targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n } else {\n targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n }\n\n if (variableWidth === true) {\n var targetSlideIndex;\n var trackElem = trackRef && trackRef.node;\n targetSlideIndex = slideIndex + getPreClones(spec);\n targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n\n if (centerMode === true) {\n targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n targetSlide = trackElem && trackElem.children[targetSlideIndex];\n targetLeft = 0;\n\n for (var slide = 0; slide < targetSlideIndex; slide++) {\n targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n }\n\n targetLeft -= parseInt(spec.centerPadding);\n targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n }\n }\n\n return targetLeft;\n};\nexport var getPreClones = function getPreClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n if (spec.variableWidth) {\n return spec.slideCount;\n }\n\n return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\nexport var getPostClones = function getPostClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n return spec.slideCount;\n};\nexport var getTotalSlides = function getTotalSlides(spec) {\n return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n};\nexport var siblingDirection = function siblingDirection(spec) {\n if (spec.targetSlide > spec.currentSlide) {\n if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n return \"left\";\n }\n\n return \"right\";\n } else {\n if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n return \"right\";\n }\n\n return \"left\";\n }\n};\nexport var slidesOnRight = function slidesOnRight(_ref) {\n var slidesToShow = _ref.slidesToShow,\n centerMode = _ref.centerMode,\n rtl = _ref.rtl,\n centerPadding = _ref.centerPadding;\n\n // returns no of slides on the right of active slide\n if (centerMode) {\n var right = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) right += 1;\n if (rtl && slidesToShow % 2 === 0) right += 1;\n return right;\n }\n\n if (rtl) {\n return 0;\n }\n\n return slidesToShow - 1;\n};\nexport var slidesOnLeft = function slidesOnLeft(_ref2) {\n var slidesToShow = _ref2.slidesToShow,\n centerMode = _ref2.centerMode,\n rtl = _ref2.rtl,\n centerPadding = _ref2.centerPadding;\n\n // returns no of slides on the left of active slide\n if (centerMode) {\n var left = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) left += 1;\n if (!rtl && slidesToShow % 2 === 0) left += 1;\n return left;\n }\n\n if (rtl) {\n return slidesToShow - 1;\n }\n\n return 0;\n};\nexport var canUseDOM = function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n};","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport React from \"react\";\nimport classnames from \"classnames\";\nimport { lazyStartIndex, lazyEndIndex, getPreClones } from \"./utils/innerSliderUtils\"; // given specifications/props for a slide, fetch all the classes that need to be applied to the slide\n\nvar getSlideClasses = function getSlideClasses(spec) {\n var slickActive, slickCenter, slickCloned;\n var centerOffset, index;\n\n if (spec.rtl) {\n index = spec.slideCount - 1 - spec.index;\n } else {\n index = spec.index;\n }\n\n slickCloned = index < 0 || index >= spec.slideCount;\n\n if (spec.centerMode) {\n centerOffset = Math.floor(spec.slidesToShow / 2);\n slickCenter = (index - spec.currentSlide) % spec.slideCount === 0;\n\n if (index > spec.currentSlide - centerOffset - 1 && index <= spec.currentSlide + centerOffset) {\n slickActive = true;\n }\n } else {\n slickActive = spec.currentSlide <= index && index < spec.currentSlide + spec.slidesToShow;\n }\n\n var focusedSlide;\n\n if (spec.targetSlide < 0) {\n focusedSlide = spec.targetSlide + spec.slideCount;\n } else if (spec.targetSlide >= spec.slideCount) {\n focusedSlide = spec.targetSlide - spec.slideCount;\n } else {\n focusedSlide = spec.targetSlide;\n }\n\n var slickCurrent = index === focusedSlide;\n return {\n \"slick-slide\": true,\n \"slick-active\": slickActive,\n \"slick-center\": slickCenter,\n \"slick-cloned\": slickCloned,\n \"slick-current\": slickCurrent // dubious in case of RTL\n\n };\n};\n\nvar getSlideStyle = function getSlideStyle(spec) {\n var style = {};\n\n if (spec.variableWidth === undefined || spec.variableWidth === false) {\n style.width = spec.slideWidth;\n }\n\n if (spec.fade) {\n style.position = \"relative\";\n\n if (spec.vertical) {\n style.top = -spec.index * parseInt(spec.slideHeight);\n } else {\n style.left = -spec.index * parseInt(spec.slideWidth);\n }\n\n style.opacity = spec.currentSlide === spec.index ? 1 : 0;\n\n if (spec.useCSS) {\n style.transition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nvar getKey = function getKey(child, fallbackKey) {\n return child.key + \"-\" + fallbackKey;\n};\n\nvar renderSlides = function renderSlides(spec) {\n var key;\n var slides = [];\n var preCloneSlides = [];\n var postCloneSlides = [];\n var childrenCount = React.Children.count(spec.children);\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n React.Children.forEach(spec.children, function (elem, index) {\n var child;\n var childOnClickOptions = {\n message: \"children\",\n index: index,\n slidesToScroll: spec.slidesToScroll,\n currentSlide: spec.currentSlide\n }; // in case of lazyLoad, whether or not we want to fetch the slide\n\n if (!spec.lazyLoad || spec.lazyLoad && spec.lazyLoadedList.indexOf(index) >= 0) {\n child = elem;\n } else {\n child = /*#__PURE__*/React.createElement(\"div\", null);\n }\n\n var childStyle = getSlideStyle(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n }));\n var slideClass = child.props.className || \"\";\n var slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n })); // push a cloned element of the desired slide\n\n slides.push( /*#__PURE__*/React.cloneElement(child, {\n key: \"original\" + getKey(child, index),\n \"data-index\": index,\n className: classnames(slideClasses, slideClass),\n tabIndex: \"-1\",\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({\n outline: \"none\"\n }, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n })); // if slide needs to be precloned or postcloned\n\n if (spec.infinite && spec.fade === false) {\n var preCloneNo = childrenCount - index;\n\n if (preCloneNo <= getPreClones(spec) && childrenCount !== spec.slidesToShow) {\n key = -preCloneNo;\n\n if (key >= startIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n preCloneSlides.push( /*#__PURE__*/React.cloneElement(child, {\n key: \"precloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: classnames(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n\n if (childrenCount !== spec.slidesToShow) {\n key = childrenCount + index;\n\n if (key < endIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n postCloneSlides.push( /*#__PURE__*/React.cloneElement(child, {\n key: \"postcloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: classnames(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n }\n });\n\n if (spec.rtl) {\n return preCloneSlides.concat(slides, postCloneSlides).reverse();\n } else {\n return preCloneSlides.concat(slides, postCloneSlides);\n }\n};\n\nexport var Track = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Track, _React$PureComponent);\n\n var _super = _createSuper(Track);\n\n function Track() {\n var _this;\n\n _classCallCheck(this, Track);\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), \"node\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"handleRef\", function (ref) {\n _this.node = ref;\n });\n\n return _this;\n }\n\n _createClass(Track, [{\n key: \"render\",\n value: function render() {\n var slides = renderSlides(this.props);\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave;\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: this.handleRef,\n className: \"slick-track\",\n style: this.props.trackStyle\n }, mouseEvents), slides);\n }\n }]);\n\n return Track;\n}(React.PureComponent);","\"use strict\";\n\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport React from \"react\";\nimport classnames from \"classnames\";\nimport { clamp } from \"./utils/innerSliderUtils\";\n\nvar getDotCount = function getDotCount(spec) {\n var dots;\n\n if (spec.infinite) {\n dots = Math.ceil(spec.slideCount / spec.slidesToScroll);\n } else {\n dots = Math.ceil((spec.slideCount - spec.slidesToShow) / spec.slidesToScroll) + 1;\n }\n\n return dots;\n};\n\nexport var Dots = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Dots, _React$PureComponent);\n\n var _super = _createSuper(Dots);\n\n function Dots() {\n _classCallCheck(this, Dots);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Dots, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n // In Autoplay the focus stays on clicked button even after transition\n // to next slide. That only goes away by click somewhere outside\n e.preventDefault();\n this.props.clickHandler(options);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave,\n infinite = _this$props.infinite,\n slidesToScroll = _this$props.slidesToScroll,\n slidesToShow = _this$props.slidesToShow,\n slideCount = _this$props.slideCount,\n currentSlide = _this$props.currentSlide;\n var dotCount = getDotCount({\n slideCount: slideCount,\n slidesToScroll: slidesToScroll,\n slidesToShow: slidesToShow,\n infinite: infinite\n });\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n var dots = [];\n\n for (var i = 0; i < dotCount; i++) {\n var _rightBound = (i + 1) * slidesToScroll - 1;\n\n var rightBound = infinite ? _rightBound : clamp(_rightBound, 0, slideCount - 1);\n\n var _leftBound = rightBound - (slidesToScroll - 1);\n\n var leftBound = infinite ? _leftBound : clamp(_leftBound, 0, slideCount - 1);\n var className = classnames({\n \"slick-active\": infinite ? currentSlide >= leftBound && currentSlide <= rightBound : currentSlide === leftBound\n });\n var dotOptions = {\n message: \"dots\",\n index: i,\n slidesToScroll: slidesToScroll,\n currentSlide: currentSlide\n };\n var onClick = this.clickHandler.bind(this, dotOptions);\n dots = dots.concat( /*#__PURE__*/React.createElement(\"li\", {\n key: i,\n className: className\n }, /*#__PURE__*/React.cloneElement(this.props.customPaging(i), {\n onClick: onClick\n })));\n }\n\n return /*#__PURE__*/React.cloneElement(this.props.appendDots(dots), _objectSpread({\n className: this.props.dotsClass\n }, mouseEvents));\n }\n }]);\n\n return Dots;\n}(React.PureComponent);","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport React from \"react\";\nimport classnames from \"classnames\";\nimport { canGoNext } from \"./utils/innerSliderUtils\";\nexport var PrevArrow = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(PrevArrow, _React$PureComponent);\n\n var _super = _createSuper(PrevArrow);\n\n function PrevArrow() {\n _classCallCheck(this, PrevArrow);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PrevArrow, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n\n this.props.clickHandler(options, e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var prevClasses = {\n \"slick-arrow\": true,\n \"slick-prev\": true\n };\n var prevHandler = this.clickHandler.bind(this, {\n message: \"previous\"\n });\n\n if (!this.props.infinite && (this.props.currentSlide === 0 || this.props.slideCount <= this.props.slidesToShow)) {\n prevClasses[\"slick-disabled\"] = true;\n prevHandler = null;\n }\n\n var prevArrowProps = {\n key: \"0\",\n \"data-role\": \"none\",\n className: classnames(prevClasses),\n style: {\n display: \"block\"\n },\n onClick: prevHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var prevArrow;\n\n if (this.props.prevArrow) {\n prevArrow = /*#__PURE__*/React.cloneElement(this.props.prevArrow, _objectSpread(_objectSpread({}, prevArrowProps), customProps));\n } else {\n prevArrow = /*#__PURE__*/React.createElement(\"button\", _extends({\n key: \"0\",\n type: \"button\"\n }, prevArrowProps), \" \", \"Previous\");\n }\n\n return prevArrow;\n }\n }]);\n\n return PrevArrow;\n}(React.PureComponent);\nexport var NextArrow = /*#__PURE__*/function (_React$PureComponent2) {\n _inherits(NextArrow, _React$PureComponent2);\n\n var _super2 = _createSuper(NextArrow);\n\n function NextArrow() {\n _classCallCheck(this, NextArrow);\n\n return _super2.apply(this, arguments);\n }\n\n _createClass(NextArrow, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n\n this.props.clickHandler(options, e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var nextClasses = {\n \"slick-arrow\": true,\n \"slick-next\": true\n };\n var nextHandler = this.clickHandler.bind(this, {\n message: \"next\"\n });\n\n if (!canGoNext(this.props)) {\n nextClasses[\"slick-disabled\"] = true;\n nextHandler = null;\n }\n\n var nextArrowProps = {\n key: \"1\",\n \"data-role\": \"none\",\n className: classnames(nextClasses),\n style: {\n display: \"block\"\n },\n onClick: nextHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var nextArrow;\n\n if (this.props.nextArrow) {\n nextArrow = /*#__PURE__*/React.cloneElement(this.props.nextArrow, _objectSpread(_objectSpread({}, nextArrowProps), customProps));\n } else {\n nextArrow = /*#__PURE__*/React.createElement(\"button\", _extends({\n key: \"1\",\n type: \"button\"\n }, nextArrowProps), \" \", \"Next\");\n }\n\n return nextArrow;\n }\n }]);\n\n return NextArrow;\n}(React.PureComponent);","\"use strict\";\n\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"animating\"];\nimport React from \"react\";\nimport initialState from \"./initial-state\";\nimport debounce from \"lodash/debounce\";\nimport classnames from \"classnames\";\nimport { getOnDemandLazySlides, extractObject, initializedState, getHeight, canGoNext, slideHandler, changeSlide, keyHandler, swipeStart, swipeMove, swipeEnd, getPreClones, getPostClones, getTrackLeft, getTrackCSS } from \"./utils/innerSliderUtils\";\nimport { Track } from \"./track\";\nimport { Dots } from \"./dots\";\nimport { PrevArrow, NextArrow } from \"./arrows\";\nimport ResizeObserver from \"resize-observer-polyfill\";\nexport var InnerSlider = /*#__PURE__*/function (_React$Component) {\n _inherits(InnerSlider, _React$Component);\n\n var _super = _createSuper(InnerSlider);\n\n function InnerSlider(props) {\n var _this;\n\n _classCallCheck(this, InnerSlider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"listRefHandler\", function (ref) {\n return _this.list = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"trackRefHandler\", function (ref) {\n return _this.track = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"adaptHeight\", function () {\n if (_this.props.adaptiveHeight && _this.list) {\n var elem = _this.list.querySelector(\"[data-index=\\\"\".concat(_this.state.currentSlide, \"\\\"]\"));\n\n _this.list.style.height = getHeight(elem) + \"px\";\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidMount\", function () {\n _this.props.onInit && _this.props.onInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = getOnDemandLazySlides(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n }\n\n var spec = _objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props);\n\n _this.updateState(spec, true, function () {\n _this.adaptHeight();\n\n _this.props.autoplay && _this.autoPlay(\"playing\");\n });\n\n if (_this.props.lazyLoad === \"progressive\") {\n _this.lazyLoadTimer = setInterval(_this.progressiveLazyLoad, 1000);\n }\n\n _this.ro = new ResizeObserver(function () {\n if (_this.state.animating) {\n _this.onWindowResized(false); // don't set trackStyle hence don't break animation\n\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.onWindowResized();\n }, _this.props.speed));\n } else {\n _this.onWindowResized();\n }\n });\n\n _this.ro.observe(_this.list);\n\n document.querySelectorAll && Array.prototype.forEach.call(document.querySelectorAll(\".slick-slide\"), function (slide) {\n slide.onfocus = _this.props.pauseOnFocus ? _this.onSlideFocus : null;\n slide.onblur = _this.props.pauseOnFocus ? _this.onSlideBlur : null;\n });\n\n if (window.addEventListener) {\n window.addEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.attachEvent(\"onresize\", _this.onWindowResized);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentWillUnmount\", function () {\n if (_this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n }\n\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n }\n\n if (_this.callbackTimers.length) {\n _this.callbackTimers.forEach(function (timer) {\n return clearTimeout(timer);\n });\n\n _this.callbackTimers = [];\n }\n\n if (window.addEventListener) {\n window.removeEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.detachEvent(\"onresize\", _this.onWindowResized);\n }\n\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n _this.ro.disconnect();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidUpdate\", function (prevProps) {\n _this.checkImagesLoad();\n\n _this.props.onReInit && _this.props.onReInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = getOnDemandLazySlides(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n } // if (this.props.onLazyLoad) {\n // this.props.onLazyLoad([leftMostSlide])\n // }\n\n\n _this.adaptHeight();\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n var setTrackStyle = _this.didPropsChange(prevProps);\n\n setTrackStyle && _this.updateState(spec, setTrackStyle, function () {\n if (_this.state.currentSlide >= React.Children.count(_this.props.children)) {\n _this.changeSlide({\n message: \"index\",\n index: React.Children.count(_this.props.children) - _this.props.slidesToShow,\n currentSlide: _this.state.currentSlide\n });\n }\n\n if (prevProps.autoplay !== _this.props.autoplay || prevProps.autoplaySpeed !== _this.props.autoplaySpeed) {\n if (!prevProps.autoplay && _this.props.autoplay) {\n _this.autoPlay(\"playing\");\n } else if (_this.props.autoplay) {\n _this.autoPlay(\"update\");\n } else {\n _this.pause(\"paused\");\n }\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onWindowResized\", function (setTrackStyle) {\n if (_this.debouncedResize) _this.debouncedResize.cancel();\n _this.debouncedResize = debounce(function () {\n return _this.resizeWindow(setTrackStyle);\n }, 50);\n\n _this.debouncedResize();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"resizeWindow\", function () {\n var setTrackStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var isTrackMounted = Boolean(_this.track && _this.track.node); // prevent warning: setting state on unmounted component (server side rendering)\n\n if (!isTrackMounted) return;\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n _this.updateState(spec, setTrackStyle, function () {\n if (_this.props.autoplay) _this.autoPlay(\"update\");else _this.pause(\"paused\");\n }); // animating state should be cleared while resizing, otherwise autoplay stops working\n\n\n _this.setState({\n animating: false\n });\n\n clearTimeout(_this.animationEndCallback);\n delete _this.animationEndCallback;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateState\", function (spec, setTrackStyle, callback) {\n var updatedState = initializedState(spec);\n spec = _objectSpread(_objectSpread(_objectSpread({}, spec), updatedState), {}, {\n slideIndex: updatedState.currentSlide\n });\n var targetLeft = getTrackLeft(spec);\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n left: targetLeft\n });\n var trackStyle = getTrackCSS(spec);\n\n if (setTrackStyle || React.Children.count(_this.props.children) !== React.Children.count(spec.children)) {\n updatedState[\"trackStyle\"] = trackStyle;\n }\n\n _this.setState(updatedState, callback);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ssrInit\", function () {\n if (_this.props.variableWidth) {\n var _trackWidth = 0,\n _trackLeft = 0;\n var childrenWidths = [];\n var preClones = getPreClones(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n var postClones = getPostClones(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n\n _this.props.children.forEach(function (child) {\n childrenWidths.push(child.props.style.width);\n _trackWidth += child.props.style.width;\n });\n\n for (var i = 0; i < preClones; i++) {\n _trackLeft += childrenWidths[childrenWidths.length - 1 - i];\n _trackWidth += childrenWidths[childrenWidths.length - 1 - i];\n }\n\n for (var _i = 0; _i < postClones; _i++) {\n _trackWidth += childrenWidths[_i];\n }\n\n for (var _i2 = 0; _i2 < _this.state.currentSlide; _i2++) {\n _trackLeft += childrenWidths[_i2];\n }\n\n var _trackStyle = {\n width: _trackWidth + \"px\",\n left: -_trackLeft + \"px\"\n };\n\n if (_this.props.centerMode) {\n var currentWidth = \"\".concat(childrenWidths[_this.state.currentSlide], \"px\");\n _trackStyle.left = \"calc(\".concat(_trackStyle.left, \" + (100% - \").concat(currentWidth, \") / 2 ) \");\n }\n\n return {\n trackStyle: _trackStyle\n };\n }\n\n var childrenCount = React.Children.count(_this.props.children);\n\n var spec = _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: childrenCount\n });\n\n var slideCount = getPreClones(spec) + getPostClones(spec) + childrenCount;\n var trackWidth = 100 / _this.props.slidesToShow * slideCount;\n var slideWidth = 100 / slideCount;\n var trackLeft = -slideWidth * (getPreClones(spec) + _this.state.currentSlide) * trackWidth / 100;\n\n if (_this.props.centerMode) {\n trackLeft += (100 - slideWidth * trackWidth / 100) / 2;\n }\n\n var trackStyle = {\n width: trackWidth + \"%\",\n left: trackLeft + \"%\"\n };\n return {\n slideWidth: slideWidth + \"%\",\n trackStyle: trackStyle\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"checkImagesLoad\", function () {\n var images = _this.list && _this.list.querySelectorAll && _this.list.querySelectorAll(\".slick-slide img\") || [];\n var imagesCount = images.length,\n loadedCount = 0;\n Array.prototype.forEach.call(images, function (image) {\n var handler = function handler() {\n return ++loadedCount && loadedCount >= imagesCount && _this.onWindowResized();\n };\n\n if (!image.onclick) {\n image.onclick = function () {\n return image.parentNode.focus();\n };\n } else {\n var prevClickHandler = image.onclick;\n\n image.onclick = function () {\n prevClickHandler();\n image.parentNode.focus();\n };\n }\n\n if (!image.onload) {\n if (_this.props.lazyLoad) {\n image.onload = function () {\n _this.adaptHeight();\n\n _this.callbackTimers.push(setTimeout(_this.onWindowResized, _this.props.speed));\n };\n } else {\n image.onload = handler;\n\n image.onerror = function () {\n handler();\n _this.props.onLazyLoadError && _this.props.onLazyLoadError();\n };\n }\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"progressiveLazyLoad\", function () {\n var slidesToLoad = [];\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n for (var index = _this.state.currentSlide; index < _this.state.slideCount + getPostClones(spec); index++) {\n if (_this.state.lazyLoadedList.indexOf(index) < 0) {\n slidesToLoad.push(index);\n break;\n }\n }\n\n for (var _index = _this.state.currentSlide - 1; _index >= -getPreClones(spec); _index--) {\n if (_this.state.lazyLoadedList.indexOf(_index) < 0) {\n slidesToLoad.push(_index);\n break;\n }\n }\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (state) {\n return {\n lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n } else {\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n delete _this.lazyLoadTimer;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slideHandler\", function (index) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _this$props = _this.props,\n asNavFor = _this$props.asNavFor,\n beforeChange = _this$props.beforeChange,\n onLazyLoad = _this$props.onLazyLoad,\n speed = _this$props.speed,\n afterChange = _this$props.afterChange; // capture currentslide before state is updated\n\n var currentSlide = _this.state.currentSlide;\n\n var _slideHandler = slideHandler(_objectSpread(_objectSpread(_objectSpread({\n index: index\n }, _this.props), _this.state), {}, {\n trackRef: _this.track,\n useCSS: _this.props.useCSS && !dontAnimate\n })),\n state = _slideHandler.state,\n nextState = _slideHandler.nextState;\n\n if (!state) return;\n beforeChange && beforeChange(currentSlide, state.currentSlide);\n var slidesToLoad = state.lazyLoadedList.filter(function (value) {\n return _this.state.lazyLoadedList.indexOf(value) < 0;\n });\n onLazyLoad && slidesToLoad.length > 0 && onLazyLoad(slidesToLoad);\n\n if (!_this.props.waitForAnimate && _this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n afterChange && afterChange(currentSlide);\n delete _this.animationEndCallback;\n }\n\n _this.setState(state, function () {\n // asNavForIndex check is to avoid recursive calls of slideHandler in waitForAnimate=false mode\n if (asNavFor && _this.asNavForIndex !== index) {\n _this.asNavForIndex = index;\n asNavFor.innerSlider.slideHandler(index);\n }\n\n if (!nextState) return;\n _this.animationEndCallback = setTimeout(function () {\n var animating = nextState.animating,\n firstBatch = _objectWithoutProperties(nextState, _excluded);\n\n _this.setState(firstBatch, function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.setState({\n animating: animating\n });\n }, 10));\n\n afterChange && afterChange(state.currentSlide);\n delete _this.animationEndCallback;\n });\n }, speed);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"changeSlide\", function (options) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var targetSlide = changeSlide(spec, options);\n if (targetSlide !== 0 && !targetSlide) return;\n\n if (dontAnimate === true) {\n _this.slideHandler(targetSlide, dontAnimate);\n } else {\n _this.slideHandler(targetSlide);\n }\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n\n if (_this.props.focusOnSelect) {\n var nodes = _this.list.querySelectorAll(\".slick-current\");\n\n nodes[0] && nodes[0].focus();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clickHandler\", function (e) {\n if (_this.clickable === false) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"keyHandler\", function (e) {\n var dir = keyHandler(e, _this.props.accessibility, _this.props.rtl);\n dir !== \"\" && _this.changeSlide({\n message: dir\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"selectHandler\", function (options) {\n _this.changeSlide(options);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"disableBodyScroll\", function () {\n var preventDefault = function preventDefault(e) {\n e = e || window.event;\n if (e.preventDefault) e.preventDefault();\n e.returnValue = false;\n };\n\n window.ontouchmove = preventDefault;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"enableBodyScroll\", function () {\n window.ontouchmove = null;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeStart\", function (e) {\n if (_this.props.verticalSwiping) {\n _this.disableBodyScroll();\n }\n\n var state = swipeStart(e, _this.props.swipe, _this.props.draggable);\n state !== \"\" && _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeMove\", function (e) {\n var state = swipeMove(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n\n if (state[\"swiping\"]) {\n _this.clickable = false;\n }\n\n _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeEnd\", function (e) {\n var state = swipeEnd(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n var triggerSlideHandler = state[\"triggerSlideHandler\"];\n delete state[\"triggerSlideHandler\"];\n\n _this.setState(state);\n\n if (triggerSlideHandler === undefined) return;\n\n _this.slideHandler(triggerSlideHandler);\n\n if (_this.props.verticalSwiping) {\n _this.enableBodyScroll();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"touchEnd\", function (e) {\n _this.swipeEnd(e);\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n // this and fellow methods are wrapped in setTimeout\n // to make sure initialize setState has happened before\n // any of such methods are called\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"previous\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"next\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n slide = Number(slide);\n if (isNaN(slide)) return \"\";\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"index\",\n index: slide,\n currentSlide: _this.state.currentSlide\n }, dontAnimate);\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"play\", function () {\n var nextIndex;\n\n if (_this.props.rtl) {\n nextIndex = _this.state.currentSlide - _this.props.slidesToScroll;\n } else {\n if (canGoNext(_objectSpread(_objectSpread({}, _this.props), _this.state))) {\n nextIndex = _this.state.currentSlide + _this.props.slidesToScroll;\n } else {\n return false;\n }\n }\n\n _this.slideHandler(nextIndex);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"autoPlay\", function (playType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (playType === \"update\") {\n if (autoplaying === \"hovered\" || autoplaying === \"focused\" || autoplaying === \"paused\") {\n return;\n }\n } else if (playType === \"leave\") {\n if (autoplaying === \"paused\" || autoplaying === \"focused\") {\n return;\n }\n } else if (playType === \"blur\") {\n if (autoplaying === \"paused\" || autoplaying === \"hovered\") {\n return;\n }\n }\n\n _this.autoplayTimer = setInterval(_this.play, _this.props.autoplaySpeed + 50);\n\n _this.setState({\n autoplaying: \"playing\"\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"pause\", function (pauseType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n _this.autoplayTimer = null;\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (pauseType === \"paused\") {\n _this.setState({\n autoplaying: \"paused\"\n });\n } else if (pauseType === \"focused\") {\n if (autoplaying === \"hovered\" || autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"focused\"\n });\n }\n } else {\n // pauseType is 'hovered'\n if (autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"hovered\"\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideFocus\", function () {\n return _this.props.autoplay && _this.pause(\"focused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideBlur\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"focused\" && _this.autoPlay(\"blur\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"render\", function () {\n var className = classnames(\"slick-slider\", _this.props.className, {\n \"slick-vertical\": _this.props.vertical,\n \"slick-initialized\": true\n });\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var trackProps = extractObject(spec, [\"fade\", \"cssEase\", \"speed\", \"infinite\", \"centerMode\", \"focusOnSelect\", \"currentSlide\", \"lazyLoad\", \"lazyLoadedList\", \"rtl\", \"slideWidth\", \"slideHeight\", \"listHeight\", \"vertical\", \"slidesToShow\", \"slidesToScroll\", \"slideCount\", \"trackStyle\", \"variableWidth\", \"unslick\", \"centerPadding\", \"targetSlide\", \"useCSS\"]);\n var pauseOnHover = _this.props.pauseOnHover;\n trackProps = _objectSpread(_objectSpread({}, trackProps), {}, {\n onMouseEnter: pauseOnHover ? _this.onTrackOver : null,\n onMouseLeave: pauseOnHover ? _this.onTrackLeave : null,\n onMouseOver: pauseOnHover ? _this.onTrackOver : null,\n focusOnSelect: _this.props.focusOnSelect && _this.clickable ? _this.selectHandler : null\n });\n var dots;\n\n if (_this.props.dots === true && _this.state.slideCount >= _this.props.slidesToShow) {\n var dotProps = extractObject(spec, [\"dotsClass\", \"slideCount\", \"slidesToShow\", \"currentSlide\", \"slidesToScroll\", \"clickHandler\", \"children\", \"customPaging\", \"infinite\", \"appendDots\"]);\n var pauseOnDotsHover = _this.props.pauseOnDotsHover;\n dotProps = _objectSpread(_objectSpread({}, dotProps), {}, {\n clickHandler: _this.changeSlide,\n onMouseEnter: pauseOnDotsHover ? _this.onDotsLeave : null,\n onMouseOver: pauseOnDotsHover ? _this.onDotsOver : null,\n onMouseLeave: pauseOnDotsHover ? _this.onDotsLeave : null\n });\n dots = /*#__PURE__*/React.createElement(Dots, dotProps);\n }\n\n var prevArrow, nextArrow;\n var arrowProps = extractObject(spec, [\"infinite\", \"centerMode\", \"currentSlide\", \"slideCount\", \"slidesToShow\", \"prevArrow\", \"nextArrow\"]);\n arrowProps.clickHandler = _this.changeSlide;\n\n if (_this.props.arrows) {\n prevArrow = /*#__PURE__*/React.createElement(PrevArrow, arrowProps);\n nextArrow = /*#__PURE__*/React.createElement(NextArrow, arrowProps);\n }\n\n var verticalHeightStyle = null;\n\n if (_this.props.vertical) {\n verticalHeightStyle = {\n height: _this.state.listHeight\n };\n }\n\n var centerPaddingStyle = null;\n\n if (_this.props.vertical === false) {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: \"0px \" + _this.props.centerPadding\n };\n }\n } else {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: _this.props.centerPadding + \" 0px\"\n };\n }\n }\n\n var listStyle = _objectSpread(_objectSpread({}, verticalHeightStyle), centerPaddingStyle);\n\n var touchMove = _this.props.touchMove;\n var listProps = {\n className: \"slick-list\",\n style: listStyle,\n onClick: _this.clickHandler,\n onMouseDown: touchMove ? _this.swipeStart : null,\n onMouseMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onMouseUp: touchMove ? _this.swipeEnd : null,\n onMouseLeave: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onTouchStart: touchMove ? _this.swipeStart : null,\n onTouchMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onTouchEnd: touchMove ? _this.touchEnd : null,\n onTouchCancel: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onKeyDown: _this.props.accessibility ? _this.keyHandler : null\n };\n var innerSliderProps = {\n className: className,\n dir: \"ltr\",\n style: _this.props.style\n };\n\n if (_this.props.unslick) {\n listProps = {\n className: \"slick-list\"\n };\n innerSliderProps = {\n className: className\n };\n }\n\n return /*#__PURE__*/React.createElement(\"div\", innerSliderProps, !_this.props.unslick ? prevArrow : \"\", /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: _this.listRefHandler\n }, listProps), /*#__PURE__*/React.createElement(Track, _extends({\n ref: _this.trackRefHandler\n }, trackProps), _this.props.children)), !_this.props.unslick ? nextArrow : \"\", !_this.props.unslick ? dots : \"\");\n });\n\n _this.list = null;\n _this.track = null;\n _this.state = _objectSpread(_objectSpread({}, initialState), {}, {\n currentSlide: _this.props.initialSlide,\n slideCount: React.Children.count(_this.props.children)\n });\n _this.callbackTimers = [];\n _this.clickable = true;\n _this.debouncedResize = null;\n\n var ssrState = _this.ssrInit();\n\n _this.state = _objectSpread(_objectSpread({}, _this.state), ssrState);\n return _this;\n }\n\n _createClass(InnerSlider, [{\n key: \"didPropsChange\",\n value: function didPropsChange(prevProps) {\n var setTrackStyle = false;\n\n for (var _i3 = 0, _Object$keys = Object.keys(this.props); _i3 < _Object$keys.length; _i3++) {\n var key = _Object$keys[_i3];\n\n // eslint-disable-next-line no-prototype-builtins\n if (!prevProps.hasOwnProperty(key)) {\n setTrackStyle = true;\n break;\n }\n\n if (_typeof(prevProps[key]) === \"object\" || typeof prevProps[key] === \"function\") {\n continue;\n }\n\n if (prevProps[key] !== this.props[key]) {\n setTrackStyle = true;\n break;\n }\n }\n\n return setTrackStyle || React.Children.count(this.props.children) !== React.Children.count(prevProps.children);\n }\n }]);\n\n return InnerSlider;\n}(React.Component);","import React from \"react\";\nvar defaultProps = {\n accessibility: true,\n adaptiveHeight: false,\n afterChange: null,\n appendDots: function appendDots(dots) {\n return /*#__PURE__*/React.createElement(\"ul\", {\n style: {\n display: \"block\"\n }\n }, dots);\n },\n arrows: true,\n autoplay: false,\n autoplaySpeed: 3000,\n beforeChange: null,\n centerMode: false,\n centerPadding: \"50px\",\n className: \"\",\n cssEase: \"ease\",\n customPaging: function customPaging(i) {\n return /*#__PURE__*/React.createElement(\"button\", null, i + 1);\n },\n dots: false,\n dotsClass: \"slick-dots\",\n draggable: true,\n easing: \"linear\",\n edgeFriction: 0.35,\n fade: false,\n focusOnSelect: false,\n infinite: true,\n initialSlide: 0,\n lazyLoad: null,\n nextArrow: null,\n onEdge: null,\n onInit: null,\n onLazyLoadError: null,\n onReInit: null,\n pauseOnDotsHover: false,\n pauseOnFocus: false,\n pauseOnHover: true,\n prevArrow: null,\n responsive: null,\n rows: 1,\n rtl: false,\n slide: \"div\",\n slidesPerRow: 1,\n slidesToScroll: 1,\n slidesToShow: 1,\n speed: 500,\n swipe: true,\n swipeEvent: null,\n swipeToSlide: false,\n touchMove: true,\n touchThreshold: 5,\n useCSS: true,\n useTransform: true,\n variableWidth: false,\n vertical: false,\n waitForAnimate: true\n};\nexport default defaultProps;","import Slider from \"./slider\";\nexport default Slider;","\"use strict\";\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React from \"react\";\nimport { InnerSlider } from \"./inner-slider\";\nimport json2mq from \"json2mq\";\nimport defaultProps from \"./default-props\";\nimport { canUseDOM } from \"./utils/innerSliderUtils\";\n\nvar Slider = /*#__PURE__*/function (_React$Component) {\n _inherits(Slider, _React$Component);\n\n var _super = _createSuper(Slider);\n\n function Slider(props) {\n var _this;\n\n _classCallCheck(this, Slider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"innerSliderRefHandler\", function (ref) {\n return _this.innerSlider = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n return _this.innerSlider.slickPrev();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n return _this.innerSlider.slickNext();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return _this.innerSlider.slickGoTo(slide, dontAnimate);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPause\", function () {\n return _this.innerSlider.pause(\"paused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPlay\", function () {\n return _this.innerSlider.autoPlay(\"play\");\n });\n\n _this.state = {\n breakpoint: null\n };\n _this._responsiveMediaHandlers = [];\n return _this;\n }\n\n _createClass(Slider, [{\n key: \"media\",\n value: function media(query, handler) {\n // javascript handler for css media query\n var mql = window.matchMedia(query);\n\n var listener = function listener(_ref) {\n var matches = _ref.matches;\n\n if (matches) {\n handler();\n }\n };\n\n mql.addListener(listener);\n listener(mql);\n\n this._responsiveMediaHandlers.push({\n mql: mql,\n query: query,\n listener: listener\n });\n } // handles responsive breakpoints\n\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n // performance monitoring\n //if (process.env.NODE_ENV !== 'production') {\n //const { whyDidYouUpdate } = require('why-did-you-update')\n //whyDidYouUpdate(React)\n //}\n if (this.props.responsive) {\n var breakpoints = this.props.responsive.map(function (breakpt) {\n return breakpt.breakpoint;\n }); // sort them in increasing order of their numerical value\n\n breakpoints.sort(function (x, y) {\n return x - y;\n });\n breakpoints.forEach(function (breakpoint, index) {\n // media query for each breakpoint\n var bQuery;\n\n if (index === 0) {\n bQuery = json2mq({\n minWidth: 0,\n maxWidth: breakpoint\n });\n } else {\n bQuery = json2mq({\n minWidth: breakpoints[index - 1] + 1,\n maxWidth: breakpoint\n });\n } // when not using server side rendering\n\n\n canUseDOM() && _this2.media(bQuery, function () {\n _this2.setState({\n breakpoint: breakpoint\n });\n });\n }); // Register media query for full screen. Need to support resize from small to large\n // convert javascript object to media query string\n\n var query = json2mq({\n minWidth: breakpoints.slice(-1)[0]\n });\n canUseDOM() && this.media(query, function () {\n _this2.setState({\n breakpoint: null\n });\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._responsiveMediaHandlers.forEach(function (obj) {\n obj.mql.removeListener(obj.listener);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var settings;\n var newProps;\n\n if (this.state.breakpoint) {\n newProps = this.props.responsive.filter(function (resp) {\n return resp.breakpoint === _this3.state.breakpoint;\n });\n settings = newProps[0].settings === \"unslick\" ? \"unslick\" : _objectSpread(_objectSpread(_objectSpread({}, defaultProps), this.props), newProps[0].settings);\n } else {\n settings = _objectSpread(_objectSpread({}, defaultProps), this.props);\n } // force scrolling by one if centerMode is on\n\n\n if (settings.centerMode) {\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 in centerMode, you are using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToScroll = 1;\n } // force showing one slide and scrolling by one if the fade mode is on\n\n\n if (settings.fade) {\n if (settings.slidesToShow > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToShow should be equal to 1 when fade is true, you're using \".concat(settings.slidesToShow));\n }\n\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 when fade is true, you're using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToShow = 1;\n settings.slidesToScroll = 1;\n } // makes sure that children is an array, even when there is only 1 child\n\n\n var children = React.Children.toArray(this.props.children); // Children may contain false or null, so we should filter them\n // children may also contain string filled with spaces (in certain cases where we use jsx strings)\n\n children = children.filter(function (child) {\n if (typeof child === \"string\") {\n return !!child.trim();\n }\n\n return !!child;\n }); // rows and slidesPerRow logic is handled here\n\n if (settings.variableWidth && (settings.rows > 1 || settings.slidesPerRow > 1)) {\n console.warn(\"variableWidth is not supported in case of rows > 1 or slidesPerRow > 1\");\n settings.variableWidth = false;\n }\n\n var newChildren = [];\n var currentWidth = null;\n\n for (var i = 0; i < children.length; i += settings.rows * settings.slidesPerRow) {\n var newSlide = [];\n\n for (var j = i; j < i + settings.rows * settings.slidesPerRow; j += settings.slidesPerRow) {\n var row = [];\n\n for (var k = j; k < j + settings.slidesPerRow; k += 1) {\n if (settings.variableWidth && children[k].props.style) {\n currentWidth = children[k].props.style.width;\n }\n\n if (k >= children.length) break;\n row.push( /*#__PURE__*/React.cloneElement(children[k], {\n key: 100 * i + 10 * j + k,\n tabIndex: -1,\n style: {\n width: \"\".concat(100 / settings.slidesPerRow, \"%\"),\n display: \"inline-block\"\n }\n }));\n }\n\n newSlide.push( /*#__PURE__*/React.createElement(\"div\", {\n key: 10 * i + j\n }, row));\n }\n\n if (settings.variableWidth) {\n newChildren.push( /*#__PURE__*/React.createElement(\"div\", {\n key: i,\n style: {\n width: currentWidth\n }\n }, newSlide));\n } else {\n newChildren.push( /*#__PURE__*/React.createElement(\"div\", {\n key: i\n }, newSlide));\n }\n }\n\n if (settings === \"unslick\") {\n var className = \"regular slider \" + (this.props.className || \"\");\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, children);\n } else if (newChildren.length <= settings.slidesToShow) {\n settings.unslick = true;\n }\n\n return /*#__PURE__*/React.createElement(InnerSlider, _extends({\n style: this.props.style,\n ref: this.innerSliderRefHandler\n }, settings), newChildren);\n }\n }]);\n\n return Slider;\n}(React.Component);\n\nexport { Slider as default };","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport SlickCarousel from '@ant-design/react-slick';\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nvar Carousel = /*#__PURE__*/React.forwardRef(function (_a, ref) {\n var _classNames;\n var _a$dots = _a.dots,\n dots = _a$dots === void 0 ? true : _a$dots,\n _a$arrows = _a.arrows,\n arrows = _a$arrows === void 0 ? false : _a$arrows,\n _a$draggable = _a.draggable,\n draggable = _a$draggable === void 0 ? false : _a$draggable,\n _a$dotPosition = _a.dotPosition,\n dotPosition = _a$dotPosition === void 0 ? 'bottom' : _a$dotPosition,\n _a$vertical = _a.vertical,\n vertical = _a$vertical === void 0 ? dotPosition === 'left' || dotPosition === 'right' : _a$vertical,\n props = __rest(_a, [\"dots\", \"arrows\", \"draggable\", \"dotPosition\", \"vertical\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var slickRef = React.useRef();\n var goTo = function goTo(slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n slickRef.current.slickGoTo(slide, dontAnimate);\n };\n React.useImperativeHandle(ref, function () {\n return {\n goTo: goTo,\n autoPlay: slickRef.current.innerSlider.autoPlay,\n innerSlider: slickRef.current.innerSlider,\n prev: slickRef.current.slickPrev,\n next: slickRef.current.slickNext\n };\n }, [slickRef.current]);\n var prevCount = React.useRef(React.Children.count(props.children));\n React.useEffect(function () {\n if (prevCount.current !== React.Children.count(props.children)) {\n goTo(props.initialSlide || 0, false);\n prevCount.current = React.Children.count(props.children);\n }\n }, [props.children]);\n var newProps = _extends({\n vertical: vertical\n }, props);\n if (newProps.effect === 'fade') {\n newProps.fade = true;\n }\n var prefixCls = getPrefixCls('carousel', newProps.prefixCls);\n var dotsClass = 'slick-dots';\n var enableDots = !!dots;\n var dsClass = classNames(dotsClass, \"\".concat(dotsClass, \"-\").concat(dotPosition), typeof dots === 'boolean' ? false : dots === null || dots === void 0 ? void 0 : dots.className);\n var className = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-vertical\"), dotPosition === 'left' || dotPosition === 'right'), _classNames));\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, /*#__PURE__*/React.createElement(SlickCarousel, _extends({\n ref: slickRef\n }, newProps, {\n dots: enableDots,\n dotsClass: dsClass,\n arrows: arrows,\n draggable: draggable\n })));\n});\nexport default Carousel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Checkbox from './Checkbox';\nexport var GroupContext = /*#__PURE__*/React.createContext(null);\nvar InternalCheckboxGroup = function InternalCheckboxGroup(_a, ref) {\n var defaultValue = _a.defaultValue,\n children = _a.children,\n _a$options = _a.options,\n options = _a$options === void 0 ? [] : _a$options,\n customizePrefixCls = _a.prefixCls,\n className = _a.className,\n style = _a.style,\n onChange = _a.onChange,\n restProps = __rest(_a, [\"defaultValue\", \"children\", \"options\", \"prefixCls\", \"className\", \"style\", \"onChange\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var _React$useState = React.useState(restProps.value || defaultValue || []),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n value = _React$useState2[0],\n setValue = _React$useState2[1];\n var _React$useState3 = React.useState([]),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n registeredValues = _React$useState4[0],\n setRegisteredValues = _React$useState4[1];\n React.useEffect(function () {\n if ('value' in restProps) {\n setValue(restProps.value || []);\n }\n }, [restProps.value]);\n var getOptions = function getOptions() {\n return options.map(function (option) {\n if (typeof option === 'string' || typeof option === 'number') {\n return {\n label: option,\n value: option\n };\n }\n return option;\n });\n };\n var cancelValue = function cancelValue(val) {\n setRegisteredValues(function (prevValues) {\n return prevValues.filter(function (v) {\n return v !== val;\n });\n });\n };\n var registerValue = function registerValue(val) {\n setRegisteredValues(function (prevValues) {\n return [].concat(_toConsumableArray(prevValues), [val]);\n });\n };\n var toggleOption = function toggleOption(option) {\n var optionIndex = value.indexOf(option.value);\n var newValue = _toConsumableArray(value);\n if (optionIndex === -1) {\n newValue.push(option.value);\n } else {\n newValue.splice(optionIndex, 1);\n }\n if (!('value' in restProps)) {\n setValue(newValue);\n }\n var opts = getOptions();\n onChange === null || onChange === void 0 ? void 0 : onChange(newValue.filter(function (val) {\n return registeredValues.includes(val);\n }).sort(function (a, b) {\n var indexA = opts.findIndex(function (opt) {\n return opt.value === a;\n });\n var indexB = opts.findIndex(function (opt) {\n return opt.value === b;\n });\n return indexA - indexB;\n }));\n };\n var prefixCls = getPrefixCls('checkbox', customizePrefixCls);\n var groupPrefixCls = \"\".concat(prefixCls, \"-group\");\n var domProps = omit(restProps, ['value', 'disabled']);\n if (options && options.length > 0) {\n children = getOptions().map(function (option) {\n return /*#__PURE__*/React.createElement(Checkbox, {\n prefixCls: prefixCls,\n key: option.value.toString(),\n disabled: 'disabled' in option ? option.disabled : restProps.disabled,\n value: option.value,\n checked: value.includes(option.value),\n onChange: option.onChange,\n className: \"\".concat(groupPrefixCls, \"-item\"),\n style: option.style\n }, option.label);\n });\n }\n // eslint-disable-next-line react/jsx-no-constructed-context-values\n var context = {\n toggleOption: toggleOption,\n value: value,\n disabled: restProps.disabled,\n name: restProps.name,\n // https://github.com/ant-design/ant-design/issues/16376\n registerValue: registerValue,\n cancelValue: cancelValue\n };\n var classString = classNames(groupPrefixCls, _defineProperty({}, \"\".concat(groupPrefixCls, \"-rtl\"), direction === 'rtl'), className);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classString,\n style: style\n }, domProps, {\n ref: ref\n }), /*#__PURE__*/React.createElement(GroupContext.Provider, {\n value: context\n }, children));\n};\nvar CheckboxGroup = /*#__PURE__*/React.forwardRef(InternalCheckboxGroup);\nexport default /*#__PURE__*/React.memo(CheckboxGroup);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport RcCheckbox from 'rc-checkbox';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { FormItemInputContext } from '../form/context';\nimport warning from '../_util/warning';\nimport { GroupContext } from './Group';\nimport DisabledContext from '../config-provider/DisabledContext';\nvar InternalCheckbox = function InternalCheckbox(_a, ref) {\n var _classNames;\n var _b;\n var customizePrefixCls = _a.prefixCls,\n className = _a.className,\n children = _a.children,\n _a$indeterminate = _a.indeterminate,\n indeterminate = _a$indeterminate === void 0 ? false : _a$indeterminate,\n style = _a.style,\n onMouseEnter = _a.onMouseEnter,\n onMouseLeave = _a.onMouseLeave,\n _a$skipGroup = _a.skipGroup,\n skipGroup = _a$skipGroup === void 0 ? false : _a$skipGroup,\n disabled = _a.disabled,\n restProps = __rest(_a, [\"prefixCls\", \"className\", \"children\", \"indeterminate\", \"style\", \"onMouseEnter\", \"onMouseLeave\", \"skipGroup\", \"disabled\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var checkboxGroup = React.useContext(GroupContext);\n var _useContext = useContext(FormItemInputContext),\n isFormItemInput = _useContext.isFormItemInput;\n var contextDisabled = useContext(DisabledContext);\n var mergedDisabled = (_b = (checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.disabled) || disabled) !== null && _b !== void 0 ? _b : contextDisabled;\n var prevValue = React.useRef(restProps.value);\n React.useEffect(function () {\n checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.registerValue(restProps.value);\n process.env.NODE_ENV !== \"production\" ? warning('checked' in restProps || !!checkboxGroup || !('value' in restProps), 'Checkbox', '`value` is not a valid prop, do you mean `checked`?') : void 0;\n }, []);\n React.useEffect(function () {\n if (skipGroup) {\n return;\n }\n if (restProps.value !== prevValue.current) {\n checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.cancelValue(prevValue.current);\n checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.registerValue(restProps.value);\n prevValue.current = restProps.value;\n }\n return function () {\n return checkboxGroup === null || checkboxGroup === void 0 ? void 0 : checkboxGroup.cancelValue(restProps.value);\n };\n }, [restProps.value]);\n var prefixCls = getPrefixCls('checkbox', customizePrefixCls);\n var checkboxProps = _extends({}, restProps);\n if (checkboxGroup && !skipGroup) {\n checkboxProps.onChange = function () {\n if (restProps.onChange) {\n restProps.onChange.apply(restProps, arguments);\n }\n if (checkboxGroup.toggleOption) {\n checkboxGroup.toggleOption({\n label: children,\n value: restProps.value\n });\n }\n };\n checkboxProps.name = checkboxGroup.name;\n checkboxProps.checked = checkboxGroup.value.includes(restProps.value);\n }\n var classString = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-wrapper\"), true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-wrapper-checked\"), checkboxProps.checked), _defineProperty(_classNames, \"\".concat(prefixCls, \"-wrapper-disabled\"), mergedDisabled), _defineProperty(_classNames, \"\".concat(prefixCls, \"-wrapper-in-form-item\"), isFormItemInput), _classNames), className);\n var checkboxClass = classNames(_defineProperty({}, \"\".concat(prefixCls, \"-indeterminate\"), indeterminate));\n var ariaChecked = indeterminate ? 'mixed' : undefined;\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/label-has-associated-control\n React.createElement(\"label\", {\n className: classString,\n style: style,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave\n }, /*#__PURE__*/React.createElement(RcCheckbox, _extends({\n \"aria-checked\": ariaChecked\n }, checkboxProps, {\n prefixCls: prefixCls,\n className: checkboxClass,\n disabled: mergedDisabled,\n ref: ref\n })), children !== undefined && /*#__PURE__*/React.createElement(\"span\", null, children))\n );\n};\nvar Checkbox = /*#__PURE__*/React.forwardRef(InternalCheckbox);\nif (process.env.NODE_ENV !== 'production') {\n Checkbox.displayName = 'Checkbox';\n}\nexport default Checkbox;","import InternalCheckbox from './Checkbox';\nimport Group from './Group';\nvar Checkbox = InternalCheckbox;\nCheckbox.Group = Group;\nCheckbox.__ANT_CHECKBOX = true;\nexport default Checkbox;","import { Col } from '../grid';\nexport default Col;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n\n/* eslint-disable no-underscore-dangle */\n\n/* eslint-disable react/prop-types */\nimport * as React from 'react';\nimport classnames from 'classnames';\nvar PanelContent = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classnames;\n\n var prefixCls = props.prefixCls,\n forceRender = props.forceRender,\n className = props.className,\n style = props.style,\n children = props.children,\n isActive = props.isActive,\n role = props.role;\n\n var _React$useState = React.useState(isActive || forceRender),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n rendered = _React$useState2[0],\n setRendered = _React$useState2[1];\n\n React.useEffect(function () {\n if (forceRender || isActive) {\n setRendered(true);\n }\n }, [forceRender, isActive]);\n\n if (!rendered) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n className: classnames(\"\".concat(prefixCls, \"-content\"), (_classnames = {}, _defineProperty(_classnames, \"\".concat(prefixCls, \"-content-active\"), isActive), _defineProperty(_classnames, \"\".concat(prefixCls, \"-content-inactive\"), !isActive), _classnames), className),\n style: style,\n role: role\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content-box\")\n }, children));\n});\nPanelContent.displayName = 'PanelContent';\nexport default PanelContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"className\", \"id\", \"style\", \"prefixCls\", \"headerClass\", \"children\", \"isActive\", \"destroyInactivePanel\", \"accordion\", \"forceRender\", \"openMotion\", \"extra\", \"collapsible\"];\n\n/* eslint-disable react/prop-types */\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport * as React from 'react';\nimport shallowEqual from 'shallowequal';\nimport PanelContent from './PanelContent';\n\nvar CollapsePanel = /*#__PURE__*/function (_React$Component) {\n _inherits(CollapsePanel, _React$Component);\n\n var _super = _createSuper(CollapsePanel);\n\n function CollapsePanel() {\n var _this;\n\n _classCallCheck(this, CollapsePanel);\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 _this.onItemClick = function () {\n var _this$props = _this.props,\n onItemClick = _this$props.onItemClick,\n panelKey = _this$props.panelKey;\n\n if (typeof onItemClick === 'function') {\n onItemClick(panelKey);\n }\n };\n\n _this.handleKeyPress = function (e) {\n if (e.key === 'Enter' || e.keyCode === 13 || e.which === 13) {\n _this.onItemClick();\n }\n };\n\n _this.renderIcon = function () {\n var _this$props2 = _this.props,\n showArrow = _this$props2.showArrow,\n expandIcon = _this$props2.expandIcon,\n prefixCls = _this$props2.prefixCls,\n collapsible = _this$props2.collapsible;\n\n if (!showArrow) {\n return null;\n }\n\n var iconNode = typeof expandIcon === 'function' ? expandIcon(_this.props) : /*#__PURE__*/React.createElement(\"i\", {\n className: \"arrow\"\n });\n return iconNode && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-expand-icon\"),\n onClick: collapsible === 'header' || collapsible === 'icon' ? _this.onItemClick : null\n }, iconNode);\n };\n\n _this.renderTitle = function () {\n var _this$props3 = _this.props,\n header = _this$props3.header,\n prefixCls = _this$props3.prefixCls,\n collapsible = _this$props3.collapsible;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-header-text\"),\n onClick: collapsible === 'header' ? _this.onItemClick : null\n }, header);\n };\n\n return _this;\n }\n\n _createClass(CollapsePanel, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n return !shallowEqual(this.props, nextProps);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames, _classNames2;\n\n var _this$props4 = this.props,\n className = _this$props4.className,\n id = _this$props4.id,\n style = _this$props4.style,\n prefixCls = _this$props4.prefixCls,\n headerClass = _this$props4.headerClass,\n children = _this$props4.children,\n isActive = _this$props4.isActive,\n destroyInactivePanel = _this$props4.destroyInactivePanel,\n accordion = _this$props4.accordion,\n forceRender = _this$props4.forceRender,\n openMotion = _this$props4.openMotion,\n extra = _this$props4.extra,\n collapsible = _this$props4.collapsible,\n rest = _objectWithoutProperties(_this$props4, _excluded);\n\n var disabled = collapsible === 'disabled';\n var collapsibleHeader = collapsible === 'header';\n var collapsibleIcon = collapsible === 'icon';\n var itemCls = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-item\"), true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-item-active\"), isActive), _defineProperty(_classNames, \"\".concat(prefixCls, \"-item-disabled\"), disabled), _classNames), className);\n var headerCls = classNames(\"\".concat(prefixCls, \"-header\"), (_classNames2 = {}, _defineProperty(_classNames2, headerClass, headerClass), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-header-collapsible-only\"), collapsibleHeader), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-icon-collapsible-only\"), collapsibleIcon), _classNames2));\n /** header 节点属性 */\n\n var headerProps = {\n className: headerCls,\n 'aria-expanded': isActive,\n 'aria-disabled': disabled,\n onKeyPress: this.handleKeyPress\n };\n\n if (!collapsibleHeader && !collapsibleIcon) {\n headerProps.onClick = this.onItemClick;\n headerProps.role = accordion ? 'tab' : 'button';\n headerProps.tabIndex = disabled ? -1 : 0;\n }\n\n var ifExtraExist = extra !== null && extra !== undefined && typeof extra !== 'boolean'; // https://github.com/ant-design/ant-design/pull/37419#issuecomment-1238812797\n\n delete rest.header;\n delete rest.panelKey;\n delete rest.onItemClick;\n delete rest.showArrow;\n delete rest.expandIcon;\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, rest, {\n className: itemCls,\n style: style,\n id: id\n }), /*#__PURE__*/React.createElement(\"div\", headerProps, this.renderIcon(), this.renderTitle(), ifExtraExist && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-extra\")\n }, extra)), /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: isActive,\n leavedClassName: \"\".concat(prefixCls, \"-content-hidden\")\n }, openMotion, {\n forceRender: forceRender,\n removeOnLeave: destroyInactivePanel\n }), function (_ref, ref) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n return /*#__PURE__*/React.createElement(PanelContent, {\n ref: ref,\n prefixCls: prefixCls,\n className: motionClassName,\n style: motionStyle,\n isActive: isActive,\n forceRender: forceRender,\n role: accordion ? 'tabpanel' : null\n }, children);\n }));\n }\n }]);\n\n return CollapsePanel;\n}(React.Component);\n\nCollapsePanel.defaultProps = {\n showArrow: true,\n isActive: false,\n onItemClick: function onItemClick() {},\n headerClass: '',\n forceRender: false\n};\nexport default CollapsePanel;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\n/* eslint-disable react/prop-types */\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport * as React from 'react';\nimport shallowEqual from 'shallowequal';\nimport CollapsePanel from './Panel';\n\nfunction getActiveKeysArray(activeKey) {\n var currentActiveKey = activeKey;\n\n if (!Array.isArray(currentActiveKey)) {\n var activeKeyType = _typeof(currentActiveKey);\n\n currentActiveKey = activeKeyType === 'number' || activeKeyType === 'string' ? [currentActiveKey] : [];\n }\n\n return currentActiveKey.map(function (key) {\n return String(key);\n });\n}\n\nvar Collapse = /*#__PURE__*/function (_React$Component) {\n _inherits(Collapse, _React$Component);\n\n var _super = _createSuper(Collapse);\n\n function Collapse(_props) {\n var _this;\n\n _classCallCheck(this, Collapse);\n\n _this = _super.call(this, _props);\n\n _this.onClickItem = function (key) {\n var activeKey = _this.state.activeKey;\n\n if (_this.props.accordion) {\n activeKey = activeKey[0] === key ? [] : [key];\n } else {\n activeKey = _toConsumableArray(activeKey);\n var index = activeKey.indexOf(key);\n var isActive = index > -1;\n\n if (isActive) {\n // remove active state\n activeKey.splice(index, 1);\n } else {\n activeKey.push(key);\n }\n }\n\n _this.setActiveKey(activeKey);\n };\n\n _this.getNewChild = function (child, index) {\n if (!child) return null;\n var activeKey = _this.state.activeKey;\n var _this$props = _this.props,\n prefixCls = _this$props.prefixCls,\n openMotion = _this$props.openMotion,\n accordion = _this$props.accordion,\n rootDestroyInactivePanel = _this$props.destroyInactivePanel,\n expandIcon = _this$props.expandIcon,\n collapsible = _this$props.collapsible; // If there is no key provide, use the panel order as default key\n\n var key = child.key || String(index);\n var _child$props = child.props,\n header = _child$props.header,\n headerClass = _child$props.headerClass,\n destroyInactivePanel = _child$props.destroyInactivePanel,\n childCollapsible = _child$props.collapsible;\n var isActive = false;\n\n if (accordion) {\n isActive = activeKey[0] === key;\n } else {\n isActive = activeKey.indexOf(key) > -1;\n }\n\n var mergeCollapsible = childCollapsible !== null && childCollapsible !== void 0 ? childCollapsible : collapsible;\n var props = {\n key: key,\n panelKey: key,\n header: header,\n headerClass: headerClass,\n isActive: isActive,\n prefixCls: prefixCls,\n destroyInactivePanel: destroyInactivePanel !== null && destroyInactivePanel !== void 0 ? destroyInactivePanel : rootDestroyInactivePanel,\n openMotion: openMotion,\n accordion: accordion,\n children: child.props.children,\n onItemClick: mergeCollapsible === 'disabled' ? null : _this.onClickItem,\n expandIcon: expandIcon,\n collapsible: mergeCollapsible\n }; // https://github.com/ant-design/ant-design/issues/20479\n\n if (typeof child.type === 'string') {\n return child;\n }\n\n Object.keys(props).forEach(function (propName) {\n if (typeof props[propName] === 'undefined') {\n delete props[propName];\n }\n });\n return /*#__PURE__*/React.cloneElement(child, props);\n };\n\n _this.getItems = function () {\n var children = _this.props.children;\n return toArray(children).map(_this.getNewChild);\n };\n\n _this.setActiveKey = function (activeKey) {\n if (!('activeKey' in _this.props)) {\n _this.setState({\n activeKey: activeKey\n });\n }\n\n _this.props.onChange(_this.props.accordion ? activeKey[0] : activeKey);\n };\n\n var _activeKey = _props.activeKey,\n defaultActiveKey = _props.defaultActiveKey;\n var currentActiveKey = defaultActiveKey;\n\n if ('activeKey' in _props) {\n currentActiveKey = _activeKey;\n }\n\n _this.state = {\n activeKey: getActiveKeysArray(currentActiveKey)\n };\n return _this;\n }\n\n _createClass(Collapse, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n return !shallowEqual(this.props, nextProps) || !shallowEqual(this.state, nextState);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames;\n\n var _this$props2 = this.props,\n prefixCls = _this$props2.prefixCls,\n className = _this$props2.className,\n style = _this$props2.style,\n accordion = _this$props2.accordion;\n var collapseClassName = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls, true), _defineProperty(_classNames, className, !!className), _classNames));\n return /*#__PURE__*/React.createElement(\"div\", {\n className: collapseClassName,\n style: style,\n role: accordion ? 'tablist' : null\n }, this.getItems());\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps) {\n var newState = {};\n\n if ('activeKey' in nextProps) {\n newState.activeKey = getActiveKeysArray(nextProps.activeKey);\n }\n\n return newState;\n }\n }]);\n\n return Collapse;\n}(React.Component);\n\nCollapse.defaultProps = {\n prefixCls: 'rc-collapse',\n onChange: function onChange() {},\n accordion: false,\n destroyInactivePanel: false\n};\nCollapse.Panel = CollapsePanel;\nexport default Collapse;","import Collapse from './Collapse';\nexport default Collapse;\nvar Panel = Collapse.Panel;\nexport { Panel };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport classNames from 'classnames';\nimport RcCollapse from 'rc-collapse';\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport omit from \"rc-util/es/omit\";\nimport { ConfigContext } from '../config-provider';\nimport collapseMotion from '../_util/motion';\nimport { cloneElement } from '../_util/reactNode';\nimport warning from '../_util/warning';\nimport CollapsePanel from './CollapsePanel';\nvar Collapse = function Collapse(props) {\n var _classNames;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var customizePrefixCls = props.prefixCls,\n _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n _props$bordered = props.bordered,\n bordered = _props$bordered === void 0 ? true : _props$bordered,\n ghost = props.ghost,\n _props$expandIconPosi = props.expandIconPosition,\n expandIconPosition = _props$expandIconPosi === void 0 ? 'start' : _props$expandIconPosi;\n var prefixCls = getPrefixCls('collapse', customizePrefixCls);\n // Warning if use legacy type `expandIconPosition`\n process.env.NODE_ENV !== \"production\" ? warning(expandIconPosition !== 'left' && expandIconPosition !== 'right', 'Collapse', '`expandIconPosition` with `left` or `right` is deprecated. Please use `start` or `end` instead.') : void 0;\n // Align with logic position\n var mergedExpandIconPosition = React.useMemo(function () {\n if (expandIconPosition === 'left') {\n return 'start';\n }\n return expandIconPosition === 'right' ? 'end' : expandIconPosition;\n }, [expandIconPosition]);\n var renderExpandIcon = function renderExpandIcon() {\n var panelProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var expandIcon = props.expandIcon;\n var icon = expandIcon ? expandIcon(panelProps) : /*#__PURE__*/React.createElement(RightOutlined, {\n rotate: panelProps.isActive ? 90 : undefined\n });\n return cloneElement(icon, function () {\n return {\n className: classNames(icon.props.className, \"\".concat(prefixCls, \"-arrow\"))\n };\n });\n };\n var collapseClassName = classNames(\"\".concat(prefixCls, \"-icon-position-\").concat(mergedExpandIconPosition), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-borderless\"), !bordered), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-ghost\"), !!ghost), _classNames), className);\n var openMotion = _extends(_extends({}, collapseMotion), {\n motionAppear: false,\n leavedClassName: \"\".concat(prefixCls, \"-content-hidden\")\n });\n var getItems = function getItems() {\n var children = props.children;\n return toArray(children).map(function (child, index) {\n var _a;\n if ((_a = child.props) === null || _a === void 0 ? void 0 : _a.disabled) {\n var key = child.key || String(index);\n var _child$props = child.props,\n disabled = _child$props.disabled,\n collapsible = _child$props.collapsible;\n var childProps = _extends(_extends({}, omit(child.props, ['disabled'])), {\n key: key,\n collapsible: collapsible !== null && collapsible !== void 0 ? collapsible : disabled ? 'disabled' : undefined\n });\n return cloneElement(child, childProps);\n }\n return child;\n });\n };\n return /*#__PURE__*/React.createElement(RcCollapse, _extends({\n openMotion: openMotion\n }, props, {\n expandIcon: renderExpandIcon,\n prefixCls: prefixCls,\n className: collapseClassName\n }), getItems());\n};\nCollapse.Panel = CollapsePanel;\nexport default Collapse;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport RcCollapse from 'rc-collapse';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport warning from '../_util/warning';\nvar CollapsePanel = function CollapsePanel(props) {\n process.env.NODE_ENV !== \"production\" ? warning(!('disabled' in props), 'Collapse.Panel', '`disabled` is deprecated. Please use `collapsible=\"disabled\"` instead.') : void 0;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var customizePrefixCls = props.prefixCls,\n _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n _props$showArrow = props.showArrow,\n showArrow = _props$showArrow === void 0 ? true : _props$showArrow;\n var prefixCls = getPrefixCls('collapse', customizePrefixCls);\n var collapsePanelClassName = classNames(_defineProperty({}, \"\".concat(prefixCls, \"-no-arrow\"), !showArrow), className);\n return /*#__PURE__*/React.createElement(RcCollapse.Panel, _extends({}, props, {\n prefixCls: prefixCls,\n className: collapsePanelClassName\n }));\n};\nexport default CollapsePanel;","import Collapse from './Collapse';\nexport default Collapse;","import * as React from 'react';\nvar DisabledContext = /*#__PURE__*/React.createContext(false);\nexport var DisabledContextProvider = function DisabledContextProvider(_ref) {\n var children = _ref.children,\n disabled = _ref.disabled;\n var originDisabled = React.useContext(DisabledContext);\n return /*#__PURE__*/React.createElement(DisabledContext.Provider, {\n value: disabled !== null && disabled !== void 0 ? disabled : originDisabled\n }, children);\n};\nexport default DisabledContext;","import * as React from 'react';\nvar SizeContext = /*#__PURE__*/React.createContext(undefined);\nexport var SizeContextProvider = function SizeContextProvider(_ref) {\n var children = _ref.children,\n size = _ref.size;\n return /*#__PURE__*/React.createElement(SizeContext.Consumer, null, function (originSize) {\n return /*#__PURE__*/React.createElement(SizeContext.Provider, {\n value: size || originSize\n }, children);\n });\n};\nexport default SizeContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nvar defaultGetPrefixCls = function defaultGetPrefixCls(suffixCls, customizePrefixCls) {\n if (customizePrefixCls) return customizePrefixCls;\n return suffixCls ? \"ant-\".concat(suffixCls) : 'ant';\n};\n// zombieJ: 🚨 Do not pass `defaultRenderEmpty` here since it will case circular dependency.\nexport var ConfigContext = /*#__PURE__*/React.createContext({\n // We provide a default function for Context without provider\n getPrefixCls: defaultGetPrefixCls\n});\nexport var ConfigConsumer = ConfigContext.Consumer;\n/** @deprecated Use hooks instead. This is a legacy function */\nexport function withConfigConsumer(config) {\n return function withConfigConsumerFunc(Component) {\n // Wrap with ConfigConsumer. Since we need compatible with react 15, be care when using ref methods\n var SFC = function SFC(props) {\n return /*#__PURE__*/React.createElement(ConfigConsumer, null, function (configProps) {\n var basicPrefixCls = config.prefixCls;\n var getPrefixCls = configProps.getPrefixCls;\n var customizePrefixCls = props.prefixCls;\n var prefixCls = getPrefixCls(basicPrefixCls, customizePrefixCls);\n return /*#__PURE__*/React.createElement(Component, _extends({}, configProps, props, {\n prefixCls: prefixCls\n }));\n });\n };\n var cons = Component.constructor;\n var name = cons && cons.displayName || Component.name || 'Component';\n if (process.env.NODE_ENV !== 'production') {\n SFC.displayName = \"withConfigConsumer(\".concat(name, \")\");\n }\n return SFC;\n };\n}","import * as React from 'react';\nimport { ConfigConsumer } from '.';\nimport Empty from '../empty';\nvar defaultRenderEmpty = function defaultRenderEmpty(componentName) {\n return /*#__PURE__*/React.createElement(ConfigConsumer, null, function (_ref) {\n var getPrefixCls = _ref.getPrefixCls;\n var prefix = getPrefixCls('empty');\n switch (componentName) {\n case 'Table':\n case 'List':\n return /*#__PURE__*/React.createElement(Empty, {\n image: Empty.PRESENTED_IMAGE_SIMPLE\n });\n case 'Select':\n case 'TreeSelect':\n case 'Cascader':\n case 'Transfer':\n case 'Mentions':\n return /*#__PURE__*/React.createElement(Empty, {\n image: Empty.PRESENTED_IMAGE_SIMPLE,\n className: \"\".concat(prefix, \"-small\")\n });\n /* istanbul ignore next */\n default:\n // Should never hit if we take all the component into consider.\n return /*#__PURE__*/React.createElement(Empty, null);\n }\n });\n};\nexport default defaultRenderEmpty;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport { changeConfirmLocale } from '../modal/locale';\nimport LocaleContext from './context';\nexport var ANT_MARK = 'internalMark';\nvar LocaleProvider = function LocaleProvider(props) {\n var _props$locale = props.locale,\n locale = _props$locale === void 0 ? {} : _props$locale,\n children = props.children,\n _ANT_MARK__ = props._ANT_MARK__;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(_ANT_MARK__ === ANT_MARK, 'LocaleProvider', '`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead: http://u.ant.design/locale') : void 0;\n }\n React.useEffect(function () {\n changeConfirmLocale(locale && locale.Modal);\n return function () {\n changeConfirmLocale();\n };\n }, [locale]);\n var getMemoizedContextValue = React.useMemo(function () {\n return _extends(_extends({}, locale), {\n exist: true\n });\n }, [locale]);\n return /*#__PURE__*/React.createElement(LocaleContext.Provider, {\n value: getMemoizedContextValue\n }, children);\n};\nexport default LocaleProvider;","import { numberInputToObject, rgbaToHex, rgbToHex, rgbToHsl, rgbToHsv } from './conversion';\nimport { names } from './css-color-names';\nimport { inputToRGB } from './format-input';\nimport { bound01, boundAlpha, clamp01 } from './util';\nvar TinyColor = /** @class */ (function () {\n function TinyColor(color, opts) {\n if (color === void 0) { color = ''; }\n if (opts === void 0) { opts = {}; }\n var _a;\n // If input is already a tinycolor, return itself\n if (color instanceof TinyColor) {\n // eslint-disable-next-line no-constructor-return\n return color;\n }\n if (typeof color === 'number') {\n color = numberInputToObject(color);\n }\n this.originalInput = color;\n var rgb = inputToRGB(color);\n this.originalInput = color;\n this.r = rgb.r;\n this.g = rgb.g;\n this.b = rgb.b;\n this.a = rgb.a;\n this.roundA = Math.round(100 * this.a) / 100;\n this.format = (_a = opts.format) !== null && _a !== void 0 ? _a : rgb.format;\n this.gradientType = opts.gradientType;\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this.r < 1) {\n this.r = Math.round(this.r);\n }\n if (this.g < 1) {\n this.g = Math.round(this.g);\n }\n if (this.b < 1) {\n this.b = Math.round(this.b);\n }\n this.isValid = rgb.ok;\n }\n TinyColor.prototype.isDark = function () {\n return this.getBrightness() < 128;\n };\n TinyColor.prototype.isLight = function () {\n return !this.isDark();\n };\n /**\n * Returns the perceived brightness of the color, from 0-255.\n */\n TinyColor.prototype.getBrightness = function () {\n // http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n };\n /**\n * Returns the perceived luminance of a color, from 0-1.\n */\n TinyColor.prototype.getLuminance = function () {\n // http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var R;\n var G;\n var B;\n var RsRGB = rgb.r / 255;\n var GsRGB = rgb.g / 255;\n var BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) {\n R = RsRGB / 12.92;\n }\n else {\n // eslint-disable-next-line prefer-exponentiation-operator\n R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n }\n if (GsRGB <= 0.03928) {\n G = GsRGB / 12.92;\n }\n else {\n // eslint-disable-next-line prefer-exponentiation-operator\n G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n }\n if (BsRGB <= 0.03928) {\n B = BsRGB / 12.92;\n }\n else {\n // eslint-disable-next-line prefer-exponentiation-operator\n B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n }\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n };\n /**\n * Returns the alpha value of a color, from 0-1.\n */\n TinyColor.prototype.getAlpha = function () {\n return this.a;\n };\n /**\n * Sets the alpha value on the current color.\n *\n * @param alpha - The new alpha value. The accepted range is 0-1.\n */\n TinyColor.prototype.setAlpha = function (alpha) {\n this.a = boundAlpha(alpha);\n this.roundA = Math.round(100 * this.a) / 100;\n return this;\n };\n /**\n * Returns whether the color is monochrome.\n */\n TinyColor.prototype.isMonochrome = function () {\n var s = this.toHsl().s;\n return s === 0;\n };\n /**\n * Returns the object as a HSVA object.\n */\n TinyColor.prototype.toHsv = function () {\n var hsv = rgbToHsv(this.r, this.g, this.b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this.a };\n };\n /**\n * Returns the hsva values interpolated into a string with the following format:\n * \"hsva(xxx, xxx, xxx, xx)\".\n */\n TinyColor.prototype.toHsvString = function () {\n var hsv = rgbToHsv(this.r, this.g, this.b);\n var h = Math.round(hsv.h * 360);\n var s = Math.round(hsv.s * 100);\n var v = Math.round(hsv.v * 100);\n return this.a === 1 ? \"hsv(\".concat(h, \", \").concat(s, \"%, \").concat(v, \"%)\") : \"hsva(\".concat(h, \", \").concat(s, \"%, \").concat(v, \"%, \").concat(this.roundA, \")\");\n };\n /**\n * Returns the object as a HSLA object.\n */\n TinyColor.prototype.toHsl = function () {\n var hsl = rgbToHsl(this.r, this.g, this.b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this.a };\n };\n /**\n * Returns the hsla values interpolated into a string with the following format:\n * \"hsla(xxx, xxx, xxx, xx)\".\n */\n TinyColor.prototype.toHslString = function () {\n var hsl = rgbToHsl(this.r, this.g, this.b);\n var h = Math.round(hsl.h * 360);\n var s = Math.round(hsl.s * 100);\n var l = Math.round(hsl.l * 100);\n return this.a === 1 ? \"hsl(\".concat(h, \", \").concat(s, \"%, \").concat(l, \"%)\") : \"hsla(\".concat(h, \", \").concat(s, \"%, \").concat(l, \"%, \").concat(this.roundA, \")\");\n };\n /**\n * Returns the hex value of the color.\n * @param allow3Char will shorten hex value to 3 char if possible\n */\n TinyColor.prototype.toHex = function (allow3Char) {\n if (allow3Char === void 0) { allow3Char = false; }\n return rgbToHex(this.r, this.g, this.b, allow3Char);\n };\n /**\n * Returns the hex value of the color -with a # prefixed.\n * @param allow3Char will shorten hex value to 3 char if possible\n */\n TinyColor.prototype.toHexString = function (allow3Char) {\n if (allow3Char === void 0) { allow3Char = false; }\n return '#' + this.toHex(allow3Char);\n };\n /**\n * Returns the hex 8 value of the color.\n * @param allow4Char will shorten hex value to 4 char if possible\n */\n TinyColor.prototype.toHex8 = function (allow4Char) {\n if (allow4Char === void 0) { allow4Char = false; }\n return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char);\n };\n /**\n * Returns the hex 8 value of the color -with a # prefixed.\n * @param allow4Char will shorten hex value to 4 char if possible\n */\n TinyColor.prototype.toHex8String = function (allow4Char) {\n if (allow4Char === void 0) { allow4Char = false; }\n return '#' + this.toHex8(allow4Char);\n };\n /**\n * Returns the shorter hex value of the color depends on its alpha -with a # prefixed.\n * @param allowShortChar will shorten hex value to 3 or 4 char if possible\n */\n TinyColor.prototype.toHexShortString = function (allowShortChar) {\n if (allowShortChar === void 0) { allowShortChar = false; }\n return this.a === 1 ? this.toHexString(allowShortChar) : this.toHex8String(allowShortChar);\n };\n /**\n * Returns the object as a RGBA object.\n */\n TinyColor.prototype.toRgb = function () {\n return {\n r: Math.round(this.r),\n g: Math.round(this.g),\n b: Math.round(this.b),\n a: this.a,\n };\n };\n /**\n * Returns the RGBA values interpolated into a string with the following format:\n * \"RGBA(xxx, xxx, xxx, xx)\".\n */\n TinyColor.prototype.toRgbString = function () {\n var r = Math.round(this.r);\n var g = Math.round(this.g);\n var b = Math.round(this.b);\n return this.a === 1 ? \"rgb(\".concat(r, \", \").concat(g, \", \").concat(b, \")\") : \"rgba(\".concat(r, \", \").concat(g, \", \").concat(b, \", \").concat(this.roundA, \")\");\n };\n /**\n * Returns the object as a RGBA object.\n */\n TinyColor.prototype.toPercentageRgb = function () {\n var fmt = function (x) { return \"\".concat(Math.round(bound01(x, 255) * 100), \"%\"); };\n return {\n r: fmt(this.r),\n g: fmt(this.g),\n b: fmt(this.b),\n a: this.a,\n };\n };\n /**\n * Returns the RGBA relative values interpolated into a string\n */\n TinyColor.prototype.toPercentageRgbString = function () {\n var rnd = function (x) { return Math.round(bound01(x, 255) * 100); };\n return this.a === 1\n ? \"rgb(\".concat(rnd(this.r), \"%, \").concat(rnd(this.g), \"%, \").concat(rnd(this.b), \"%)\")\n : \"rgba(\".concat(rnd(this.r), \"%, \").concat(rnd(this.g), \"%, \").concat(rnd(this.b), \"%, \").concat(this.roundA, \")\");\n };\n /**\n * The 'real' name of the color -if there is one.\n */\n TinyColor.prototype.toName = function () {\n if (this.a === 0) {\n return 'transparent';\n }\n if (this.a < 1) {\n return false;\n }\n var hex = '#' + rgbToHex(this.r, this.g, this.b, false);\n for (var _i = 0, _a = Object.entries(names); _i < _a.length; _i++) {\n var _b = _a[_i], key = _b[0], value = _b[1];\n if (hex === value) {\n return key;\n }\n }\n return false;\n };\n TinyColor.prototype.toString = function (format) {\n var formatSet = Boolean(format);\n format = format !== null && format !== void 0 ? format : this.format;\n var formattedString = false;\n var hasAlpha = this.a < 1 && this.a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format.startsWith('hex') || format === 'name');\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === 'name' && this.a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === 'rgb') {\n formattedString = this.toRgbString();\n }\n if (format === 'prgb') {\n formattedString = this.toPercentageRgbString();\n }\n if (format === 'hex' || format === 'hex6') {\n formattedString = this.toHexString();\n }\n if (format === 'hex3') {\n formattedString = this.toHexString(true);\n }\n if (format === 'hex4') {\n formattedString = this.toHex8String(true);\n }\n if (format === 'hex8') {\n formattedString = this.toHex8String();\n }\n if (format === 'name') {\n formattedString = this.toName();\n }\n if (format === 'hsl') {\n formattedString = this.toHslString();\n }\n if (format === 'hsv') {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n };\n TinyColor.prototype.toNumber = function () {\n return (Math.round(this.r) << 16) + (Math.round(this.g) << 8) + Math.round(this.b);\n };\n TinyColor.prototype.clone = function () {\n return new TinyColor(this.toString());\n };\n /**\n * Lighten the color a given amount. Providing 100 will always return white.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.lighten = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return new TinyColor(hsl);\n };\n /**\n * Brighten the color a given amount, from 0 to 100.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.brighten = function (amount) {\n if (amount === void 0) { amount = 10; }\n var rgb = this.toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return new TinyColor(rgb);\n };\n /**\n * Darken the color a given amount, from 0 to 100.\n * Providing 100 will always return black.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.darken = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return new TinyColor(hsl);\n };\n /**\n * Mix the color with pure white, from 0 to 100.\n * Providing 0 will do nothing, providing 100 will always return white.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.tint = function (amount) {\n if (amount === void 0) { amount = 10; }\n return this.mix('white', amount);\n };\n /**\n * Mix the color with pure black, from 0 to 100.\n * Providing 0 will do nothing, providing 100 will always return black.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.shade = function (amount) {\n if (amount === void 0) { amount = 10; }\n return this.mix('black', amount);\n };\n /**\n * Desaturate the color a given amount, from 0 to 100.\n * Providing 100 will is the same as calling greyscale\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.desaturate = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return new TinyColor(hsl);\n };\n /**\n * Saturate the color a given amount, from 0 to 100.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.saturate = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return new TinyColor(hsl);\n };\n /**\n * Completely desaturates a color into greyscale.\n * Same as calling `desaturate(100)`\n */\n TinyColor.prototype.greyscale = function () {\n return this.desaturate(100);\n };\n /**\n * Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n * Values outside of this range will be wrapped into this range.\n */\n TinyColor.prototype.spin = function (amount) {\n var hsl = this.toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return new TinyColor(hsl);\n };\n /**\n * Mix the current color a given amount with another color, from 0 to 100.\n * 0 means no mixing (return current color).\n */\n TinyColor.prototype.mix = function (color, amount) {\n if (amount === void 0) { amount = 50; }\n var rgb1 = this.toRgb();\n var rgb2 = new TinyColor(color).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a,\n };\n return new TinyColor(rgba);\n };\n TinyColor.prototype.analogous = function (results, slices) {\n if (results === void 0) { results = 6; }\n if (slices === void 0) { slices = 30; }\n var hsl = this.toHsl();\n var part = 360 / slices;\n var ret = [this];\n for (hsl.h = (hsl.h - ((part * results) >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(new TinyColor(hsl));\n }\n return ret;\n };\n /**\n * taken from https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js\n */\n TinyColor.prototype.complement = function () {\n var hsl = this.toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return new TinyColor(hsl);\n };\n TinyColor.prototype.monochromatic = function (results) {\n if (results === void 0) { results = 6; }\n var hsv = this.toHsv();\n var h = hsv.h;\n var s = hsv.s;\n var v = hsv.v;\n var res = [];\n var modification = 1 / results;\n while (results--) {\n res.push(new TinyColor({ h: h, s: s, v: v }));\n v = (v + modification) % 1;\n }\n return res;\n };\n TinyColor.prototype.splitcomplement = function () {\n var hsl = this.toHsl();\n var h = hsl.h;\n return [\n this,\n new TinyColor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }),\n new TinyColor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l }),\n ];\n };\n /**\n * Compute how the color would appear on a background\n */\n TinyColor.prototype.onBackground = function (background) {\n var fg = this.toRgb();\n var bg = new TinyColor(background).toRgb();\n var alpha = fg.a + bg.a * (1 - fg.a);\n return new TinyColor({\n r: (fg.r * fg.a + bg.r * bg.a * (1 - fg.a)) / alpha,\n g: (fg.g * fg.a + bg.g * bg.a * (1 - fg.a)) / alpha,\n b: (fg.b * fg.a + bg.b * bg.a * (1 - fg.a)) / alpha,\n a: alpha,\n });\n };\n /**\n * Alias for `polyad(3)`\n */\n TinyColor.prototype.triad = function () {\n return this.polyad(3);\n };\n /**\n * Alias for `polyad(4)`\n */\n TinyColor.prototype.tetrad = function () {\n return this.polyad(4);\n };\n /**\n * Get polyad colors, like (for 1, 2, 3, 4, 5, 6, 7, 8, etc...)\n * monad, dyad, triad, tetrad, pentad, hexad, heptad, octad, etc...\n */\n TinyColor.prototype.polyad = function (n) {\n var hsl = this.toHsl();\n var h = hsl.h;\n var result = [this];\n var increment = 360 / n;\n for (var i = 1; i < n; i++) {\n result.push(new TinyColor({ h: (h + i * increment) % 360, s: hsl.s, l: hsl.l }));\n }\n return result;\n };\n /**\n * compare color vs current color\n */\n TinyColor.prototype.equals = function (color) {\n return this.toRgbString() === new TinyColor(color).toRgbString();\n };\n return TinyColor;\n}());\nexport { TinyColor };\n// kept for backwards compatability with v1\nexport function tinycolor(color, opts) {\n if (color === void 0) { color = ''; }\n if (opts === void 0) { opts = {}; }\n return new TinyColor(color, opts);\n}\n","/* eslint-disable import/prefer-default-export, prefer-destructuring */\nimport { generate } from '@ant-design/colors';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nimport { updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport warning from '../_util/warning';\nvar dynamicStyleMark = \"-ant-\".concat(Date.now(), \"-\").concat(Math.random());\nexport function getStyle(globalPrefixCls, theme) {\n var variables = {};\n var formatColor = function formatColor(color, updater) {\n var clone = color.clone();\n clone = (updater === null || updater === void 0 ? void 0 : updater(clone)) || clone;\n return clone.toRgbString();\n };\n var fillColor = function fillColor(colorVal, type) {\n var baseColor = new TinyColor(colorVal);\n var colorPalettes = generate(baseColor.toRgbString());\n variables[\"\".concat(type, \"-color\")] = formatColor(baseColor);\n variables[\"\".concat(type, \"-color-disabled\")] = colorPalettes[1];\n variables[\"\".concat(type, \"-color-hover\")] = colorPalettes[4];\n variables[\"\".concat(type, \"-color-active\")] = colorPalettes[6];\n variables[\"\".concat(type, \"-color-outline\")] = baseColor.clone().setAlpha(0.2).toRgbString();\n variables[\"\".concat(type, \"-color-deprecated-bg\")] = colorPalettes[0];\n variables[\"\".concat(type, \"-color-deprecated-border\")] = colorPalettes[2];\n };\n // ================ Primary Color ================\n if (theme.primaryColor) {\n fillColor(theme.primaryColor, 'primary');\n var primaryColor = new TinyColor(theme.primaryColor);\n var primaryColors = generate(primaryColor.toRgbString());\n // Legacy - We should use semantic naming standard\n primaryColors.forEach(function (color, index) {\n variables[\"primary-\".concat(index + 1)] = color;\n });\n // Deprecated\n variables['primary-color-deprecated-l-35'] = formatColor(primaryColor, function (c) {\n return c.lighten(35);\n });\n variables['primary-color-deprecated-l-20'] = formatColor(primaryColor, function (c) {\n return c.lighten(20);\n });\n variables['primary-color-deprecated-t-20'] = formatColor(primaryColor, function (c) {\n return c.tint(20);\n });\n variables['primary-color-deprecated-t-50'] = formatColor(primaryColor, function (c) {\n return c.tint(50);\n });\n variables['primary-color-deprecated-f-12'] = formatColor(primaryColor, function (c) {\n return c.setAlpha(c.getAlpha() * 0.12);\n });\n var primaryActiveColor = new TinyColor(primaryColors[0]);\n variables['primary-color-active-deprecated-f-30'] = formatColor(primaryActiveColor, function (c) {\n return c.setAlpha(c.getAlpha() * 0.3);\n });\n variables['primary-color-active-deprecated-d-02'] = formatColor(primaryActiveColor, function (c) {\n return c.darken(2);\n });\n }\n // ================ Success Color ================\n if (theme.successColor) {\n fillColor(theme.successColor, 'success');\n }\n // ================ Warning Color ================\n if (theme.warningColor) {\n fillColor(theme.warningColor, 'warning');\n }\n // ================= Error Color =================\n if (theme.errorColor) {\n fillColor(theme.errorColor, 'error');\n }\n // ================= Info Color ==================\n if (theme.infoColor) {\n fillColor(theme.infoColor, 'info');\n }\n // Convert to css variables\n var cssList = Object.keys(variables).map(function (key) {\n return \"--\".concat(globalPrefixCls, \"-\").concat(key, \": \").concat(variables[key], \";\");\n });\n return \"\\n :root {\\n \".concat(cssList.join('\\n'), \"\\n }\\n \").trim();\n}\nexport function registerTheme(globalPrefixCls, theme) {\n var style = getStyle(globalPrefixCls, theme);\n if (canUseDom()) {\n updateCSS(style, \"\".concat(dynamicStyleMark, \"-dynamic-theme\"));\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'ConfigProvider', 'SSR do not support dynamic theme with css variables.') : void 0;\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport IconContext from \"@ant-design/icons/es/components/Context\";\nimport { FormProvider as RcFormProvider } from 'rc-field-form';\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport * as React from 'react';\nimport LocaleProvider, { ANT_MARK } from '../locale-provider';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport defaultLocale from '../locale/default';\nimport message from '../message';\nimport notification from '../notification';\nimport { ConfigConsumer, ConfigContext } from './context';\nimport { registerTheme } from './cssVariables';\nimport { DisabledContextProvider } from './DisabledContext';\nimport SizeContext, { SizeContextProvider } from './SizeContext';\nexport { ConfigContext, ConfigConsumer };\nexport var configConsumerProps = ['getTargetContainer', 'getPopupContainer', 'rootPrefixCls', 'getPrefixCls', 'renderEmpty', 'csp', 'autoInsertSpaceInButton', 'locale', 'pageHeader'];\n// These props is used by `useContext` directly in sub component\nvar PASSED_PROPS = ['getTargetContainer', 'getPopupContainer', 'renderEmpty', 'pageHeader', 'input', 'pagination', 'form'];\nexport var defaultPrefixCls = 'ant';\nexport var defaultIconPrefixCls = 'anticon';\nvar globalPrefixCls;\nvar globalIconPrefixCls;\nfunction getGlobalPrefixCls() {\n return globalPrefixCls || defaultPrefixCls;\n}\nfunction getGlobalIconPrefixCls() {\n return globalIconPrefixCls || defaultIconPrefixCls;\n}\nvar setGlobalConfig = function setGlobalConfig(_ref) {\n var prefixCls = _ref.prefixCls,\n iconPrefixCls = _ref.iconPrefixCls,\n theme = _ref.theme;\n if (prefixCls !== undefined) {\n globalPrefixCls = prefixCls;\n }\n if (iconPrefixCls !== undefined) {\n globalIconPrefixCls = iconPrefixCls;\n }\n if (theme) {\n registerTheme(getGlobalPrefixCls(), theme);\n }\n};\nexport var globalConfig = function globalConfig() {\n return {\n getPrefixCls: function getPrefixCls(suffixCls, customizePrefixCls) {\n if (customizePrefixCls) return customizePrefixCls;\n return suffixCls ? \"\".concat(getGlobalPrefixCls(), \"-\").concat(suffixCls) : getGlobalPrefixCls();\n },\n getIconPrefixCls: getGlobalIconPrefixCls,\n getRootPrefixCls: function getRootPrefixCls(rootPrefixCls, customizePrefixCls) {\n // Customize rootPrefixCls is first priority\n if (rootPrefixCls) {\n return rootPrefixCls;\n }\n // If Global prefixCls provided, use this\n if (globalPrefixCls) {\n return globalPrefixCls;\n }\n // [Legacy] If customize prefixCls provided, we cut it to get the prefixCls\n if (customizePrefixCls && customizePrefixCls.includes('-')) {\n return customizePrefixCls.replace(/^(.*)-[^-]*$/, '$1');\n }\n // Fallback to default prefixCls\n return getGlobalPrefixCls();\n }\n };\n};\nvar ProviderChildren = function ProviderChildren(props) {\n var _a, _b;\n var children = props.children,\n csp = props.csp,\n autoInsertSpaceInButton = props.autoInsertSpaceInButton,\n form = props.form,\n locale = props.locale,\n componentSize = props.componentSize,\n direction = props.direction,\n space = props.space,\n virtual = props.virtual,\n dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n legacyLocale = props.legacyLocale,\n parentContext = props.parentContext,\n iconPrefixCls = props.iconPrefixCls,\n componentDisabled = props.componentDisabled;\n var getPrefixCls = React.useCallback(function (suffixCls, customizePrefixCls) {\n var prefixCls = props.prefixCls;\n if (customizePrefixCls) return customizePrefixCls;\n var mergedPrefixCls = prefixCls || parentContext.getPrefixCls('');\n return suffixCls ? \"\".concat(mergedPrefixCls, \"-\").concat(suffixCls) : mergedPrefixCls;\n }, [parentContext.getPrefixCls, props.prefixCls]);\n var config = _extends(_extends({}, parentContext), {\n csp: csp,\n autoInsertSpaceInButton: autoInsertSpaceInButton,\n locale: locale || legacyLocale,\n direction: direction,\n space: space,\n virtual: virtual,\n dropdownMatchSelectWidth: dropdownMatchSelectWidth,\n getPrefixCls: getPrefixCls\n });\n // Pass the props used by `useContext` directly with child component.\n // These props should merged into `config`.\n PASSED_PROPS.forEach(function (propName) {\n var propValue = props[propName];\n if (propValue) {\n config[propName] = propValue;\n }\n });\n // https://github.com/ant-design/ant-design/issues/27617\n var memoedConfig = useMemo(function () {\n return config;\n }, config, function (prevConfig, currentConfig) {\n var prevKeys = Object.keys(prevConfig);\n var currentKeys = Object.keys(currentConfig);\n return prevKeys.length !== currentKeys.length || prevKeys.some(function (key) {\n return prevConfig[key] !== currentConfig[key];\n });\n });\n var memoIconContextValue = React.useMemo(function () {\n return {\n prefixCls: iconPrefixCls,\n csp: csp\n };\n }, [iconPrefixCls, csp]);\n var childNode = children;\n // Additional Form provider\n var validateMessages = {};\n if (locale) {\n validateMessages = ((_a = locale.Form) === null || _a === void 0 ? void 0 : _a.defaultValidateMessages) || ((_b = defaultLocale.Form) === null || _b === void 0 ? void 0 : _b.defaultValidateMessages) || {};\n }\n if (form && form.validateMessages) {\n validateMessages = _extends(_extends({}, validateMessages), form.validateMessages);\n }\n if (Object.keys(validateMessages).length > 0) {\n childNode = /*#__PURE__*/React.createElement(RcFormProvider, {\n validateMessages: validateMessages\n }, children);\n }\n if (locale) {\n childNode = /*#__PURE__*/React.createElement(LocaleProvider, {\n locale: locale,\n _ANT_MARK__: ANT_MARK\n }, childNode);\n }\n if (iconPrefixCls || csp) {\n childNode = /*#__PURE__*/React.createElement(IconContext.Provider, {\n value: memoIconContextValue\n }, childNode);\n }\n if (componentSize) {\n childNode = /*#__PURE__*/React.createElement(SizeContextProvider, {\n size: componentSize\n }, childNode);\n }\n if (componentDisabled !== undefined) {\n childNode = /*#__PURE__*/React.createElement(DisabledContextProvider, {\n disabled: componentDisabled\n }, childNode);\n }\n return /*#__PURE__*/React.createElement(ConfigContext.Provider, {\n value: memoedConfig\n }, childNode);\n};\nvar ConfigProvider = function ConfigProvider(props) {\n React.useEffect(function () {\n if (props.direction) {\n message.config({\n rtl: props.direction === 'rtl'\n });\n notification.config({\n rtl: props.direction === 'rtl'\n });\n }\n }, [props.direction]);\n return /*#__PURE__*/React.createElement(LocaleReceiver, null, function (_, __, legacyLocale) {\n return /*#__PURE__*/React.createElement(ConfigConsumer, null, function (context) {\n return /*#__PURE__*/React.createElement(ProviderChildren, _extends({\n parentContext: context,\n legacyLocale: legacyLocale\n }, props));\n });\n });\n};\n/** @private internal Usage. do not use in your production */\nConfigProvider.ConfigContext = ConfigContext;\nConfigProvider.SizeContext = SizeContext;\nConfigProvider.config = setGlobalConfig;\nexport default ConfigProvider;","// This icon file is generated automatically.\nvar CalendarOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\" } }] }, \"name\": \"calendar\", \"theme\": \"outlined\" };\nexport default CalendarOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport CalendarOutlinedSvg from \"@ant-design/icons-svg/es/asn/CalendarOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar CalendarOutlined = function CalendarOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: CalendarOutlinedSvg\n }));\n};\nCalendarOutlined.displayName = 'CalendarOutlined';\nexport default /*#__PURE__*/React.forwardRef(CalendarOutlined);","// This icon file is generated automatically.\nvar ClockCircleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\" } }] }, \"name\": \"clock-circle\", \"theme\": \"outlined\" };\nexport default ClockCircleOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport ClockCircleOutlinedSvg from \"@ant-design/icons-svg/es/asn/ClockCircleOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar ClockCircleOutlined = function ClockCircleOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: ClockCircleOutlinedSvg\n }));\n};\nClockCircleOutlined.displayName = 'ClockCircleOutlined';\nexport default /*#__PURE__*/React.forwardRef(ClockCircleOutlined);","// This icon file is generated automatically.\nvar SwapRightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\" } }] }, \"name\": \"swap-right\", \"theme\": \"outlined\" };\nexport default SwapRightOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport SwapRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/SwapRightOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar SwapRightOutlined = function SwapRightOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: SwapRightOutlinedSvg\n }));\n};\nSwapRightOutlined.displayName = 'SwapRightOutlined';\nexport default /*#__PURE__*/React.forwardRef(SwapRightOutlined);","export function getPlaceholder(picker, locale, customizePlaceholder) {\n if (customizePlaceholder !== undefined) {\n return customizePlaceholder;\n }\n if (picker === 'year' && locale.lang.yearPlaceholder) {\n return locale.lang.yearPlaceholder;\n }\n if (picker === 'quarter' && locale.lang.quarterPlaceholder) {\n return locale.lang.quarterPlaceholder;\n }\n if (picker === 'month' && locale.lang.monthPlaceholder) {\n return locale.lang.monthPlaceholder;\n }\n if (picker === 'week' && locale.lang.weekPlaceholder) {\n return locale.lang.weekPlaceholder;\n }\n if (picker === 'time' && locale.timePickerLocale.placeholder) {\n return locale.timePickerLocale.placeholder;\n }\n return locale.lang.placeholder;\n}\nexport function getRangePlaceholder(picker, locale, customizePlaceholder) {\n if (customizePlaceholder !== undefined) {\n return customizePlaceholder;\n }\n if (picker === 'year' && locale.lang.yearPlaceholder) {\n return locale.lang.rangeYearPlaceholder;\n }\n if (picker === 'quarter' && locale.lang.quarterPlaceholder) {\n return locale.lang.rangeQuarterPlaceholder;\n }\n if (picker === 'month' && locale.lang.monthPlaceholder) {\n return locale.lang.rangeMonthPlaceholder;\n }\n if (picker === 'week' && locale.lang.weekPlaceholder) {\n return locale.lang.rangeWeekPlaceholder;\n }\n if (picker === 'time' && locale.timePickerLocale.placeholder) {\n return locale.timePickerLocale.rangePlaceholder;\n }\n return locale.lang.rangePlaceholder;\n}\nexport function transPlacement2DropdownAlign(direction, placement) {\n var overflow = {\n adjustX: 1,\n adjustY: 1\n };\n switch (placement) {\n case 'bottomLeft':\n {\n return {\n points: ['tl', 'bl'],\n offset: [0, 4],\n overflow: overflow\n };\n }\n case 'bottomRight':\n {\n return {\n points: ['tr', 'br'],\n offset: [0, 4],\n overflow: overflow\n };\n }\n case 'topLeft':\n {\n return {\n points: ['bl', 'tl'],\n offset: [0, -4],\n overflow: overflow\n };\n }\n case 'topRight':\n {\n return {\n points: ['br', 'tr'],\n offset: [0, -4],\n overflow: overflow\n };\n }\n default:\n {\n return {\n points: direction === 'rtl' ? ['tr', 'br'] : ['tl', 'bl'],\n offset: [0, 4],\n overflow: overflow\n };\n }\n }\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CalendarOutlined from \"@ant-design/icons/es/icons/CalendarOutlined\";\nimport ClockCircleOutlined from \"@ant-design/icons/es/icons/ClockCircleOutlined\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport SwapRightOutlined from \"@ant-design/icons/es/icons/SwapRightOutlined\";\nimport classNames from 'classnames';\nimport { RangePicker as RCRangePicker } from 'rc-picker';\nimport * as React from 'react';\nimport { forwardRef, useContext, useImperativeHandle } from 'react';\nimport { Components, getTimeProps } from '.';\nimport { ConfigContext } from '../../config-provider';\nimport DisabledContext from '../../config-provider/DisabledContext';\nimport SizeContext from '../../config-provider/SizeContext';\nimport { FormItemInputContext } from '../../form/context';\nimport { useCompactItemContext } from '../../space/Compact';\nimport LocaleReceiver from '../../locale-provider/LocaleReceiver';\nimport { getMergedStatus, getStatusClassNames } from '../../_util/statusUtils';\nimport enUS from '../locale/en_US';\nimport { getRangePlaceholder, transPlacement2DropdownAlign } from '../util';\nimport warning from '../../_util/warning';\nexport default function generateRangePicker(generateConfig) {\n var RangePicker = /*#__PURE__*/forwardRef(function (props, ref) {\n var customizePrefixCls = props.prefixCls,\n customGetPopupContainer = props.getPopupContainer,\n className = props.className,\n placement = props.placement,\n customizeSize = props.size,\n customDisabled = props.disabled,\n _props$bordered = props.bordered,\n bordered = _props$bordered === void 0 ? true : _props$bordered,\n placeholder = props.placeholder,\n popupClassName = props.popupClassName,\n dropdownClassName = props.dropdownClassName,\n customStatus = props.status,\n restProps = __rest(props, [\"prefixCls\", \"getPopupContainer\", \"className\", \"placement\", \"size\", \"disabled\", \"bordered\", \"placeholder\", \"popupClassName\", \"dropdownClassName\", \"status\"]);\n var innerRef = React.useRef(null);\n var _useContext = useContext(ConfigContext),\n getPrefixCls = _useContext.getPrefixCls,\n direction = _useContext.direction,\n getPopupContainer = _useContext.getPopupContainer;\n var prefixCls = getPrefixCls('picker', customizePrefixCls);\n var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n compactSize = _useCompactItemContex.compactSize,\n compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n var format = props.format,\n showTime = props.showTime,\n picker = props.picker;\n var rootPrefixCls = getPrefixCls();\n var additionalOverrideProps = {};\n additionalOverrideProps = _extends(_extends(_extends({}, additionalOverrideProps), showTime ? getTimeProps(_extends({\n format: format,\n picker: picker\n }, showTime)) : {}), picker === 'time' ? getTimeProps(_extends(_extends({\n format: format\n }, props), {\n picker: picker\n })) : {});\n process.env.NODE_ENV !== \"production\" ? warning(!dropdownClassName, 'RangePicker', '`dropdownClassName` is deprecated which will be removed in next major version. Please use `popupClassName` instead.') : void 0;\n // ===================== Size =====================\n var size = React.useContext(SizeContext);\n var mergedSize = compactSize || customizeSize || size;\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n // ===================== FormItemInput =====================\n var formItemContext = useContext(FormItemInputContext);\n var hasFeedback = formItemContext.hasFeedback,\n contextStatus = formItemContext.status,\n feedbackIcon = formItemContext.feedbackIcon;\n var suffixNode = /*#__PURE__*/React.createElement(React.Fragment, null, picker === 'time' ? /*#__PURE__*/React.createElement(ClockCircleOutlined, null) : /*#__PURE__*/React.createElement(CalendarOutlined, null), hasFeedback && feedbackIcon);\n useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n var _a;\n return (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n },\n blur: function blur() {\n var _a;\n return (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.blur();\n }\n };\n });\n return /*#__PURE__*/React.createElement(LocaleReceiver, {\n componentName: \"DatePicker\",\n defaultLocale: enUS\n }, function (contextLocale) {\n var _classNames;\n var locale = _extends(_extends({}, contextLocale), props.locale);\n return /*#__PURE__*/React.createElement(RCRangePicker, _extends({\n separator: /*#__PURE__*/React.createElement(\"span\", {\n \"aria-label\": \"to\",\n className: \"\".concat(prefixCls, \"-separator\")\n }, /*#__PURE__*/React.createElement(SwapRightOutlined, null)),\n disabled: mergedDisabled,\n ref: innerRef,\n dropdownAlign: transPlacement2DropdownAlign(direction, placement),\n placeholder: getRangePlaceholder(picker, locale, placeholder),\n suffixIcon: suffixNode,\n clearIcon: /*#__PURE__*/React.createElement(CloseCircleFilled, null),\n prevIcon: /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-prev-icon\")\n }),\n nextIcon: /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-next-icon\")\n }),\n superPrevIcon: /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-super-prev-icon\")\n }),\n superNextIcon: /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-super-next-icon\")\n }),\n allowClear: true,\n transitionName: \"\".concat(rootPrefixCls, \"-slide-up\")\n }, restProps, additionalOverrideProps, {\n className: classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(mergedSize), mergedSize), _defineProperty(_classNames, \"\".concat(prefixCls, \"-borderless\"), !bordered), _classNames), getStatusClassNames(prefixCls, getMergedStatus(contextStatus, customStatus), hasFeedback), compactItemClassnames, className),\n locale: locale.lang,\n prefixCls: prefixCls,\n getPopupContainer: customGetPopupContainer || getPopupContainer,\n generateConfig: generateConfig,\n components: Components,\n direction: direction,\n dropdownClassName: popupClassName || dropdownClassName\n }));\n });\n });\n return RangePicker;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CalendarOutlined from \"@ant-design/icons/es/icons/CalendarOutlined\";\nimport ClockCircleOutlined from \"@ant-design/icons/es/icons/ClockCircleOutlined\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport classNames from 'classnames';\nimport RCPicker from 'rc-picker';\nimport * as React from 'react';\nimport { forwardRef, useContext, useImperativeHandle } from 'react';\nimport { useCompactItemContext } from '../../space/Compact';\nimport { Components, getTimeProps } from '.';\nimport { ConfigContext } from '../../config-provider';\nimport DisabledContext from '../../config-provider/DisabledContext';\nimport SizeContext from '../../config-provider/SizeContext';\nimport { FormItemInputContext } from '../../form/context';\nimport LocaleReceiver from '../../locale-provider/LocaleReceiver';\nimport { getMergedStatus, getStatusClassNames } from '../../_util/statusUtils';\nimport warning from '../../_util/warning';\nimport enUS from '../locale/en_US';\nimport { getPlaceholder, transPlacement2DropdownAlign } from '../util';\nexport default function generatePicker(generateConfig) {\n function getPicker(picker, displayName) {\n var Picker = /*#__PURE__*/forwardRef(function (props, ref) {\n var customizePrefixCls = props.prefixCls,\n customizeGetPopupContainer = props.getPopupContainer,\n className = props.className,\n customizeSize = props.size,\n _props$bordered = props.bordered,\n bordered = _props$bordered === void 0 ? true : _props$bordered,\n placement = props.placement,\n placeholder = props.placeholder,\n popupClassName = props.popupClassName,\n dropdownClassName = props.dropdownClassName,\n customDisabled = props.disabled,\n customStatus = props.status,\n restProps = __rest(props, [\"prefixCls\", \"getPopupContainer\", \"className\", \"size\", \"bordered\", \"placement\", \"placeholder\", \"popupClassName\", \"dropdownClassName\", \"disabled\", \"status\"]);\n var _useContext = useContext(ConfigContext),\n getPrefixCls = _useContext.getPrefixCls,\n direction = _useContext.direction,\n getPopupContainer = _useContext.getPopupContainer;\n var prefixCls = getPrefixCls('picker', customizePrefixCls);\n var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n compactSize = _useCompactItemContex.compactSize,\n compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n var innerRef = React.useRef(null);\n var format = props.format,\n showTime = props.showTime;\n useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n var _a;\n return (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n },\n blur: function blur() {\n var _a;\n return (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.blur();\n }\n };\n });\n var additionalProps = {\n showToday: true\n };\n var additionalOverrideProps = {};\n if (picker) {\n additionalOverrideProps.picker = picker;\n }\n var mergedPicker = picker || props.picker;\n additionalOverrideProps = _extends(_extends(_extends({}, additionalOverrideProps), showTime ? getTimeProps(_extends({\n format: format,\n picker: mergedPicker\n }, showTime)) : {}), mergedPicker === 'time' ? getTimeProps(_extends(_extends({\n format: format\n }, props), {\n picker: mergedPicker\n })) : {});\n var rootPrefixCls = getPrefixCls();\n // =================== Warning =====================\n process.env.NODE_ENV !== \"production\" ? warning(picker !== 'quarter', displayName, \"DatePicker.\".concat(displayName, \" is legacy usage. Please use DatePicker[picker='\").concat(picker, \"'] directly.\")) : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!dropdownClassName, mergedPicker === 'time' ? 'TimePicker' : 'DatePicker', '`dropdownClassName` is deprecated which will be removed in next major version. Please use `popupClassName` instead.') : void 0;\n // ===================== Size =====================\n var size = React.useContext(SizeContext);\n var mergedSize = compactSize || customizeSize || size;\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n // ===================== FormItemInput =====================\n var formItemContext = useContext(FormItemInputContext);\n var hasFeedback = formItemContext.hasFeedback,\n contextStatus = formItemContext.status,\n feedbackIcon = formItemContext.feedbackIcon;\n var suffixNode = /*#__PURE__*/React.createElement(React.Fragment, null, mergedPicker === 'time' ? /*#__PURE__*/React.createElement(ClockCircleOutlined, null) : /*#__PURE__*/React.createElement(CalendarOutlined, null), hasFeedback && feedbackIcon);\n return /*#__PURE__*/React.createElement(LocaleReceiver, {\n componentName: \"DatePicker\",\n defaultLocale: enUS\n }, function (contextLocale) {\n var _classNames;\n var locale = _extends(_extends({}, contextLocale), props.locale);\n return /*#__PURE__*/React.createElement(RCPicker, _extends({\n ref: innerRef,\n placeholder: getPlaceholder(mergedPicker, locale, placeholder),\n suffixIcon: suffixNode,\n dropdownAlign: transPlacement2DropdownAlign(direction, placement),\n clearIcon: /*#__PURE__*/React.createElement(CloseCircleFilled, null),\n prevIcon: /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-prev-icon\")\n }),\n nextIcon: /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-next-icon\")\n }),\n superPrevIcon: /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-super-prev-icon\")\n }),\n superNextIcon: /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-super-next-icon\")\n }),\n allowClear: true,\n transitionName: \"\".concat(rootPrefixCls, \"-slide-up\")\n }, additionalProps, restProps, additionalOverrideProps, {\n locale: locale.lang,\n className: classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(mergedSize), mergedSize), _defineProperty(_classNames, \"\".concat(prefixCls, \"-borderless\"), !bordered), _classNames), getStatusClassNames(prefixCls, getMergedStatus(contextStatus, customStatus), hasFeedback), compactItemClassnames, className),\n prefixCls: prefixCls,\n getPopupContainer: customizeGetPopupContainer || getPopupContainer,\n generateConfig: generateConfig,\n components: Components,\n direction: direction,\n disabled: mergedDisabled,\n dropdownClassName: popupClassName || dropdownClassName\n }));\n });\n });\n if (displayName) {\n Picker.displayName = displayName;\n }\n return Picker;\n }\n var DatePicker = getPicker();\n var WeekPicker = getPicker('week', 'WeekPicker');\n var MonthPicker = getPicker('month', 'MonthPicker');\n var YearPicker = getPicker('year', 'YearPicker');\n var TimePicker = getPicker('time', 'TimePicker');\n var QuarterPicker = getPicker('quarter', 'QuarterPicker');\n return {\n DatePicker: DatePicker,\n WeekPicker: WeekPicker,\n MonthPicker: MonthPicker,\n YearPicker: YearPicker,\n TimePicker: TimePicker,\n QuarterPicker: QuarterPicker\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { tuple } from '../../_util/type';\nimport PickerButton from '../PickerButton';\nimport PickerTag from '../PickerTag';\nimport generateRangePicker from './generateRangePicker';\nimport generateSinglePicker from './generateSinglePicker';\nexport var Components = {\n button: PickerButton,\n rangeItem: PickerTag\n};\nfunction toArray(list) {\n if (!list) {\n return [];\n }\n return Array.isArray(list) ? list : [list];\n}\nexport function getTimeProps(props) {\n var format = props.format,\n picker = props.picker,\n showHour = props.showHour,\n showMinute = props.showMinute,\n showSecond = props.showSecond,\n use12Hours = props.use12Hours;\n var firstFormat = toArray(format)[0];\n var showTimeObj = _extends({}, props);\n if (firstFormat && typeof firstFormat === 'string') {\n if (!firstFormat.includes('s') && showSecond === undefined) {\n showTimeObj.showSecond = false;\n }\n if (!firstFormat.includes('m') && showMinute === undefined) {\n showTimeObj.showMinute = false;\n }\n if (!firstFormat.includes('H') && !firstFormat.includes('h') && showHour === undefined) {\n showTimeObj.showHour = false;\n }\n if ((firstFormat.includes('a') || firstFormat.includes('A')) && use12Hours === undefined) {\n showTimeObj.use12Hours = true;\n }\n }\n if (picker === 'time') {\n return showTimeObj;\n }\n if (typeof firstFormat === 'function') {\n // format of showTime should use default when format is custom format function\n delete showTimeObj.format;\n }\n return {\n showTime: showTimeObj\n };\n}\nvar DataPickerPlacements = tuple('bottomLeft', 'bottomRight', 'topLeft', 'topRight');\nfunction generatePicker(generateConfig) {\n // =========================== Picker ===========================\n var _generateSinglePicker = generateSinglePicker(generateConfig),\n DatePicker = _generateSinglePicker.DatePicker,\n WeekPicker = _generateSinglePicker.WeekPicker,\n MonthPicker = _generateSinglePicker.MonthPicker,\n YearPicker = _generateSinglePicker.YearPicker,\n TimePicker = _generateSinglePicker.TimePicker,\n QuarterPicker = _generateSinglePicker.QuarterPicker;\n // ======================== Range Picker ========================\n var RangePicker = generateRangePicker(generateConfig);\n var MergedDatePicker = DatePicker;\n MergedDatePicker.WeekPicker = WeekPicker;\n MergedDatePicker.MonthPicker = MonthPicker;\n MergedDatePicker.YearPicker = YearPicker;\n MergedDatePicker.RangePicker = RangePicker;\n MergedDatePicker.TimePicker = TimePicker;\n MergedDatePicker.QuarterPicker = QuarterPicker;\n return MergedDatePicker;\n}\nexport default generatePicker;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Button from '../button';\nexport default function PickerButton(props) {\n return /*#__PURE__*/React.createElement(Button, _extends({\n size: \"small\",\n type: \"primary\"\n }, props));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Tag from '../tag';\nexport default function PickerTag(props) {\n return /*#__PURE__*/React.createElement(Tag, _extends({\n color: \"blue\"\n }, props));\n}","import moment from 'moment';\nimport { noteOnce } from \"rc-util/es/warning\";\nvar generateConfig = {\n // get\n getNow: function getNow() {\n return moment();\n },\n getFixedDate: function getFixedDate(string) {\n return moment(string, 'YYYY-MM-DD');\n },\n getEndDate: function getEndDate(date) {\n var clone = date.clone();\n return clone.endOf('month');\n },\n getWeekDay: function getWeekDay(date) {\n var clone = date.clone().locale('en_US');\n return clone.weekday() + clone.localeData().firstDayOfWeek();\n },\n getYear: function getYear(date) {\n return date.year();\n },\n getMonth: function getMonth(date) {\n return date.month();\n },\n getDate: function getDate(date) {\n return date.date();\n },\n getHour: function getHour(date) {\n return date.hour();\n },\n getMinute: function getMinute(date) {\n return date.minute();\n },\n getSecond: function getSecond(date) {\n return date.second();\n },\n // set\n addYear: function addYear(date, diff) {\n var clone = date.clone();\n return clone.add(diff, 'year');\n },\n addMonth: function addMonth(date, diff) {\n var clone = date.clone();\n return clone.add(diff, 'month');\n },\n addDate: function addDate(date, diff) {\n var clone = date.clone();\n return clone.add(diff, 'day');\n },\n setYear: function setYear(date, year) {\n var clone = date.clone();\n return clone.year(year);\n },\n setMonth: function setMonth(date, month) {\n var clone = date.clone();\n return clone.month(month);\n },\n setDate: function setDate(date, num) {\n var clone = date.clone();\n return clone.date(num);\n },\n setHour: function setHour(date, hour) {\n var clone = date.clone();\n return clone.hour(hour);\n },\n setMinute: function setMinute(date, minute) {\n var clone = date.clone();\n return clone.minute(minute);\n },\n setSecond: function setSecond(date, second) {\n var clone = date.clone();\n return clone.second(second);\n },\n // Compare\n isAfter: function isAfter(date1, date2) {\n return date1.isAfter(date2);\n },\n isValidate: function isValidate(date) {\n return date.isValid();\n },\n locale: {\n getWeekFirstDay: function getWeekFirstDay(locale) {\n var date = moment().locale(locale);\n return date.localeData().firstDayOfWeek();\n },\n getWeekFirstDate: function getWeekFirstDate(locale, date) {\n var clone = date.clone();\n var result = clone.locale(locale);\n return result.weekday(0);\n },\n getWeek: function getWeek(locale, date) {\n var clone = date.clone();\n var result = clone.locale(locale);\n return result.week();\n },\n getShortWeekDays: function getShortWeekDays(locale) {\n var date = moment().locale(locale);\n return date.localeData().weekdaysMin();\n },\n getShortMonths: function getShortMonths(locale) {\n var date = moment().locale(locale);\n return date.localeData().monthsShort();\n },\n format: function format(locale, date, _format) {\n var clone = date.clone();\n var result = clone.locale(locale);\n return result.format(_format);\n },\n parse: function parse(locale, text, formats) {\n var fallbackFormatList = [];\n for (var i = 0; i < formats.length; i += 1) {\n var format = formats[i];\n var formatText = text;\n if (format.includes('wo') || format.includes('Wo')) {\n format = format.replace(/wo/g, 'w').replace(/Wo/g, 'W');\n var matchFormat = format.match(/[-YyMmDdHhSsWwGg]+/g);\n var matchText = formatText.match(/[-\\d]+/g);\n if (matchFormat && matchText) {\n format = matchFormat.join('');\n formatText = matchText.join('');\n } else {\n fallbackFormatList.push(format.replace(/o/g, ''));\n }\n }\n var date = moment(formatText, format, locale, true);\n if (date.isValid()) {\n return date;\n }\n }\n // Fallback to fuzzy matching, this should always not reach match or need fire a issue\n for (var _i = 0; _i < fallbackFormatList.length; _i += 1) {\n var _date = moment(text, fallbackFormatList[_i], locale, false);\n /* istanbul ignore next */\n if (_date.isValid()) {\n noteOnce(false, 'Not match any format strictly and fallback to fuzzy match. Please help to fire a issue about this.');\n return _date;\n }\n }\n return null;\n }\n }\n};\nexport default generateConfig;","import momentGenerateConfig from \"rc-picker/es/generate/moment\";\nimport generatePicker from './generatePicker';\nvar DatePicker = generatePicker(momentGenerateConfig);\nexport default DatePicker;","var locale = {\n locale: 'en_US',\n today: 'Today',\n now: 'Now',\n backToToday: 'Back to today',\n ok: 'OK',\n clear: 'Clear',\n month: 'Month',\n year: 'Year',\n timeSelect: 'select time',\n dateSelect: 'select date',\n weekSelect: 'Choose a week',\n monthSelect: 'Choose a month',\n yearSelect: 'Choose a year',\n decadeSelect: 'Choose a decade',\n yearFormat: 'YYYY',\n dateFormat: 'M/D/YYYY',\n dayFormat: 'D',\n dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n monthBeforeYear: true,\n previousMonth: 'Previous month (PageUp)',\n nextMonth: 'Next month (PageDown)',\n previousYear: 'Last year (Control + left)',\n nextYear: 'Next year (Control + right)',\n previousDecade: 'Last decade',\n nextDecade: 'Next decade',\n previousCentury: 'Last century',\n nextCentury: 'Next century'\n};\nexport default locale;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport CalendarLocale from \"rc-picker/es/locale/en_US\";\nimport TimePickerLocale from '../../time-picker/locale/en_US';\n// Merge into a locale object\nvar locale = {\n lang: _extends({\n placeholder: 'Select date',\n yearPlaceholder: 'Select year',\n quarterPlaceholder: 'Select quarter',\n monthPlaceholder: 'Select month',\n weekPlaceholder: 'Select week',\n rangePlaceholder: ['Start date', 'End date'],\n rangeYearPlaceholder: ['Start year', 'End year'],\n rangeQuarterPlaceholder: ['Start quarter', 'End quarter'],\n rangeMonthPlaceholder: ['Start month', 'End month'],\n rangeWeekPlaceholder: ['Start week', 'End week']\n }, CalendarLocale),\n timePickerLocale: _extends({}, TimePickerLocale)\n};\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\nexport default locale;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport warning from '../_util/warning';\nvar Divider = function Divider(props) {\n var _classNames;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var customizePrefixCls = props.prefixCls,\n _props$type = props.type,\n type = _props$type === void 0 ? 'horizontal' : _props$type,\n _props$orientation = props.orientation,\n orientation = _props$orientation === void 0 ? 'center' : _props$orientation,\n orientationMargin = props.orientationMargin,\n className = props.className,\n children = props.children,\n dashed = props.dashed,\n plain = props.plain,\n restProps = __rest(props, [\"prefixCls\", \"type\", \"orientation\", \"orientationMargin\", \"className\", \"children\", \"dashed\", \"plain\"]);\n var prefixCls = getPrefixCls('divider', customizePrefixCls);\n var orientationPrefix = orientation.length > 0 ? \"-\".concat(orientation) : orientation;\n var hasChildren = !!children;\n var hasCustomMarginLeft = orientation === 'left' && orientationMargin != null;\n var hasCustomMarginRight = orientation === 'right' && orientationMargin != null;\n var classString = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(type), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-with-text\"), hasChildren), _defineProperty(_classNames, \"\".concat(prefixCls, \"-with-text\").concat(orientationPrefix), hasChildren), _defineProperty(_classNames, \"\".concat(prefixCls, \"-dashed\"), !!dashed), _defineProperty(_classNames, \"\".concat(prefixCls, \"-plain\"), !!plain), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-no-default-orientation-margin-left\"), hasCustomMarginLeft), _defineProperty(_classNames, \"\".concat(prefixCls, \"-no-default-orientation-margin-right\"), hasCustomMarginRight), _classNames), className);\n var innerStyle = _extends(_extends({}, hasCustomMarginLeft && {\n marginLeft: orientationMargin\n }), hasCustomMarginRight && {\n marginRight: orientationMargin\n });\n // Warning children not work in vertical mode\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!children || type !== 'vertical', 'Divider', '`children` not working in `vertical` mode.') : void 0;\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classString\n }, restProps, {\n role: \"separator\"\n }), children && type !== 'vertical' && /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-inner-text\"),\n style: innerStyle\n }, children));\n};\nexport default Divider;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nvar DrawerPanel = function DrawerPanel(props) {\n var prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n children = props.children,\n containerRef = props.containerRef;\n // =============================== Render ===============================\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content\"), className),\n style: _objectSpread({}, style),\n \"aria-modal\": \"true\",\n role: \"dialog\",\n ref: containerRef\n }, children));\n};\nif (process.env.NODE_ENV !== 'production') {\n DrawerPanel.displayName = 'DrawerPanel';\n}\nexport default DrawerPanel;","import * as React from 'react';\nvar DrawerContext = /*#__PURE__*/React.createContext(null);\nexport default DrawerContext;","import warning from \"rc-util/es/warning\";\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nexport function parseWidthHeight(value) {\n if (typeof value === 'string' && String(Number(value)) === value) {\n warning(false, 'Invalid value type of `width` or `height` which should be number type instead.');\n return Number(value);\n }\n return value;\n}\nexport function warnCheck(props) {\n warning(!('wrapperClassName' in props), \"'wrapperClassName' is removed. Please use 'rootClassName' instead.\");\n warning(canUseDom() || !props.open, \"Drawer with 'open' in SSR is not work since no place to createPortal. Please move to 'useEffect' instead.\");\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport DrawerPanel from './DrawerPanel';\nimport DrawerContext from './context';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport { parseWidthHeight } from './util';\nvar sentinelStyle = {\n width: 0,\n height: 0,\n overflow: 'hidden',\n outline: 'none',\n position: 'absolute'\n};\nfunction DrawerPopup(props, ref) {\n var _ref, _pushConfig$distance, _pushConfig, _classNames;\n var prefixCls = props.prefixCls,\n open = props.open,\n placement = props.placement,\n inline = props.inline,\n push = props.push,\n forceRender = props.forceRender,\n autoFocus = props.autoFocus,\n keyboard = props.keyboard,\n rootClassName = props.rootClassName,\n rootStyle = props.rootStyle,\n zIndex = props.zIndex,\n className = props.className,\n style = props.style,\n motion = props.motion,\n width = props.width,\n height = props.height,\n children = props.children,\n contentWrapperStyle = props.contentWrapperStyle,\n mask = props.mask,\n maskClosable = props.maskClosable,\n maskMotion = props.maskMotion,\n maskClassName = props.maskClassName,\n maskStyle = props.maskStyle,\n afterOpenChange = props.afterOpenChange,\n onClose = props.onClose;\n // ================================ Refs ================================\n var panelRef = React.useRef();\n var sentinelStartRef = React.useRef();\n var sentinelEndRef = React.useRef();\n React.useImperativeHandle(ref, function () {\n return panelRef.current;\n });\n var onPanelKeyDown = function onPanelKeyDown(event) {\n var keyCode = event.keyCode,\n shiftKey = event.shiftKey;\n switch (keyCode) {\n // Tab active\n case KeyCode.TAB:\n {\n if (keyCode === KeyCode.TAB) {\n if (!shiftKey && document.activeElement === sentinelEndRef.current) {\n var _sentinelStartRef$cur;\n (_sentinelStartRef$cur = sentinelStartRef.current) === null || _sentinelStartRef$cur === void 0 ? void 0 : _sentinelStartRef$cur.focus({\n preventScroll: true\n });\n } else if (shiftKey && document.activeElement === sentinelStartRef.current) {\n var _sentinelEndRef$curre;\n (_sentinelEndRef$curre = sentinelEndRef.current) === null || _sentinelEndRef$curre === void 0 ? void 0 : _sentinelEndRef$curre.focus({\n preventScroll: true\n });\n }\n }\n break;\n }\n // Close\n case KeyCode.ESC:\n {\n if (onClose && keyboard) {\n event.stopPropagation();\n onClose(event);\n }\n break;\n }\n }\n };\n // ========================== Control ===========================\n // Auto Focus\n React.useEffect(function () {\n if (open && autoFocus) {\n var _panelRef$current;\n (_panelRef$current = panelRef.current) === null || _panelRef$current === void 0 ? void 0 : _panelRef$current.focus({\n preventScroll: true\n });\n }\n }, [open]);\n // ============================ Push ============================\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n pushed = _React$useState2[0],\n setPushed = _React$useState2[1];\n var parentContext = React.useContext(DrawerContext);\n // Merge push distance\n var pushConfig;\n if (push === false) {\n pushConfig = {\n distance: 0\n };\n } else if (push === true) {\n pushConfig = {};\n } else {\n pushConfig = push || {};\n }\n var pushDistance = (_ref = (_pushConfig$distance = (_pushConfig = pushConfig) === null || _pushConfig === void 0 ? void 0 : _pushConfig.distance) !== null && _pushConfig$distance !== void 0 ? _pushConfig$distance : parentContext === null || parentContext === void 0 ? void 0 : parentContext.pushDistance) !== null && _ref !== void 0 ? _ref : 180;\n var mergedContext = React.useMemo(function () {\n return {\n pushDistance: pushDistance,\n push: function push() {\n setPushed(true);\n },\n pull: function pull() {\n setPushed(false);\n }\n };\n }, [pushDistance]);\n // ========================= ScrollLock =========================\n // Tell parent to push\n React.useEffect(function () {\n if (open) {\n var _parentContext$push;\n parentContext === null || parentContext === void 0 ? void 0 : (_parentContext$push = parentContext.push) === null || _parentContext$push === void 0 ? void 0 : _parentContext$push.call(parentContext);\n } else {\n var _parentContext$pull;\n parentContext === null || parentContext === void 0 ? void 0 : (_parentContext$pull = parentContext.pull) === null || _parentContext$pull === void 0 ? void 0 : _parentContext$pull.call(parentContext);\n }\n }, [open]);\n // Clean up\n React.useEffect(function () {\n return function () {\n var _parentContext$pull2;\n parentContext === null || parentContext === void 0 ? void 0 : (_parentContext$pull2 = parentContext.pull) === null || _parentContext$pull2 === void 0 ? void 0 : _parentContext$pull2.call(parentContext);\n };\n }, []);\n // ============================ Mask ============================\n var maskNode = mask && /*#__PURE__*/React.createElement(CSSMotion, _extends({\n key: \"mask\"\n }, maskMotion, {\n visible: open\n }), function (_ref2, maskRef) {\n var motionMaskClassName = _ref2.className,\n motionMaskStyle = _ref2.style;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-mask\"), motionMaskClassName, maskClassName),\n style: _objectSpread(_objectSpread({}, motionMaskStyle), maskStyle),\n onClick: maskClosable && open ? onClose : undefined,\n ref: maskRef\n });\n });\n // =========================== Panel ============================\n var motionProps = typeof motion === 'function' ? motion(placement) : motion;\n var wrapperStyle = {};\n if (pushed && pushDistance) {\n switch (placement) {\n case 'top':\n wrapperStyle.transform = \"translateY(\".concat(pushDistance, \"px)\");\n break;\n case 'bottom':\n wrapperStyle.transform = \"translateY(\".concat(-pushDistance, \"px)\");\n break;\n case 'left':\n wrapperStyle.transform = \"translateX(\".concat(pushDistance, \"px)\");\n break;\n default:\n wrapperStyle.transform = \"translateX(\".concat(-pushDistance, \"px)\");\n break;\n }\n }\n if (placement === 'left' || placement === 'right') {\n wrapperStyle.width = parseWidthHeight(width);\n } else {\n wrapperStyle.height = parseWidthHeight(height);\n }\n var panelNode = /*#__PURE__*/React.createElement(CSSMotion, _extends({\n key: \"panel\"\n }, motionProps, {\n visible: open,\n forceRender: forceRender,\n onVisibleChanged: function onVisibleChanged(nextVisible) {\n afterOpenChange === null || afterOpenChange === void 0 ? void 0 : afterOpenChange(nextVisible);\n },\n removeOnLeave: false,\n leavedClassName: \"\".concat(prefixCls, \"-content-wrapper-hidden\")\n }), function (_ref3, motionRef) {\n var motionClassName = _ref3.className,\n motionStyle = _ref3.style;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content-wrapper\"), motionClassName),\n style: _objectSpread(_objectSpread(_objectSpread({}, wrapperStyle), motionStyle), contentWrapperStyle)\n }, /*#__PURE__*/React.createElement(DrawerPanel, {\n containerRef: motionRef,\n prefixCls: prefixCls,\n className: className,\n style: style\n }, children));\n });\n // =========================== Render ===========================\n var containerStyle = _objectSpread({}, rootStyle);\n if (zIndex) {\n containerStyle.zIndex = zIndex;\n }\n return /*#__PURE__*/React.createElement(DrawerContext.Provider, {\n value: mergedContext\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(placement), rootClassName, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-open\"), open), _defineProperty(_classNames, \"\".concat(prefixCls, \"-inline\"), inline), _classNames)),\n style: containerStyle,\n tabIndex: -1,\n ref: panelRef,\n onKeyDown: onPanelKeyDown\n }, maskNode, /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelStartRef,\n style: sentinelStyle,\n \"aria-hidden\": \"true\",\n \"data-sentinel\": \"start\"\n }), panelNode, /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelEndRef,\n style: sentinelStyle,\n \"aria-hidden\": \"true\",\n \"data-sentinel\": \"end\"\n })));\n}\nvar RefDrawerPopup = /*#__PURE__*/React.forwardRef(DrawerPopup);\nif (process.env.NODE_ENV !== 'production') {\n RefDrawerPopup.displayName = 'DrawerPopup';\n}\nexport default RefDrawerPopup;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport Portal from '@rc-component/portal';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport DrawerPopup from './DrawerPopup';\nimport { warnCheck } from './util';\nvar Drawer = function Drawer(props) {\n var _props$open = props.open,\n open = _props$open === void 0 ? false : _props$open,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-drawer' : _props$prefixCls,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'right' : _props$placement,\n _props$autoFocus = props.autoFocus,\n autoFocus = _props$autoFocus === void 0 ? true : _props$autoFocus,\n _props$keyboard = props.keyboard,\n keyboard = _props$keyboard === void 0 ? true : _props$keyboard,\n _props$width = props.width,\n width = _props$width === void 0 ? 378 : _props$width,\n _props$mask = props.mask,\n mask = _props$mask === void 0 ? true : _props$mask,\n _props$maskClosable = props.maskClosable,\n maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,\n getContainer = props.getContainer,\n forceRender = props.forceRender,\n afterOpenChange = props.afterOpenChange,\n destroyOnClose = props.destroyOnClose;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n animatedVisible = _React$useState2[0],\n setAnimatedVisible = _React$useState2[1];\n // ============================= Warn =============================\n if (process.env.NODE_ENV !== 'production') {\n warnCheck(props);\n }\n // ============================= Open =============================\n var _React$useState3 = React.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n mounted = _React$useState4[0],\n setMounted = _React$useState4[1];\n useLayoutEffect(function () {\n setMounted(true);\n }, []);\n var mergedOpen = mounted ? open : false;\n // ============================ Focus =============================\n var panelRef = React.useRef();\n var lastActiveRef = React.useRef();\n useLayoutEffect(function () {\n if (mergedOpen) {\n lastActiveRef.current = document.activeElement;\n }\n }, [mergedOpen]);\n // ============================= Open =============================\n var internalAfterOpenChange = function internalAfterOpenChange(nextVisible) {\n var _panelRef$current;\n setAnimatedVisible(nextVisible);\n afterOpenChange === null || afterOpenChange === void 0 ? void 0 : afterOpenChange(nextVisible);\n if (!nextVisible && lastActiveRef.current && !((_panelRef$current = panelRef.current) === null || _panelRef$current === void 0 ? void 0 : _panelRef$current.contains(lastActiveRef.current))) {\n var _lastActiveRef$curren;\n (_lastActiveRef$curren = lastActiveRef.current) === null || _lastActiveRef$curren === void 0 ? void 0 : _lastActiveRef$curren.focus({\n preventScroll: true\n });\n }\n };\n // ============================ Render ============================\n if (!forceRender && !animatedVisible && !mergedOpen && destroyOnClose) {\n return null;\n }\n var drawerPopupProps = _objectSpread(_objectSpread({}, props), {}, {\n open: mergedOpen,\n prefixCls: prefixCls,\n placement: placement,\n autoFocus: autoFocus,\n keyboard: keyboard,\n width: width,\n mask: mask,\n maskClosable: maskClosable,\n inline: getContainer === false,\n afterOpenChange: internalAfterOpenChange,\n ref: panelRef\n });\n return /*#__PURE__*/React.createElement(Portal, {\n open: mergedOpen || forceRender || animatedVisible,\n autoDestroy: false,\n getContainer: getContainer,\n autoLock: mask && (mergedOpen || animatedVisible)\n }, /*#__PURE__*/React.createElement(DrawerPopup, drawerPopupProps));\n};\nif (process.env.NODE_ENV !== 'production') {\n Drawer.displayName = 'Drawer';\n}\nexport default Drawer;","// export this package's api\nimport Drawer from './Drawer';\nexport default Drawer;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport classNames from 'classnames';\nimport RcDrawer from 'rc-drawer';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { NoFormStyle } from '../form/context';\nimport { getTransitionName } from '../_util/motion';\nimport { tuple } from '../_util/type';\nimport warning from '../_util/warning';\nimport { NoCompactStyle } from '../space/Compact';\nvar SizeTypes = tuple('default', 'large');\nvar defaultPushState = {\n distance: 180\n};\nfunction Drawer(props) {\n var width = props.width,\n height = props.height,\n _props$size = props.size,\n size = _props$size === void 0 ? 'default' : _props$size,\n _props$closable = props.closable,\n closable = _props$closable === void 0 ? true : _props$closable,\n _props$mask = props.mask,\n mask = _props$mask === void 0 ? true : _props$mask,\n _props$push = props.push,\n push = _props$push === void 0 ? defaultPushState : _props$push,\n _props$closeIcon = props.closeIcon,\n closeIcon = _props$closeIcon === void 0 ? /*#__PURE__*/React.createElement(CloseOutlined, null) : _props$closeIcon,\n bodyStyle = props.bodyStyle,\n drawerStyle = props.drawerStyle,\n className = props.className,\n visible = props.visible,\n open = props.open,\n children = props.children,\n style = props.style,\n title = props.title,\n headerStyle = props.headerStyle,\n onClose = props.onClose,\n footer = props.footer,\n footerStyle = props.footerStyle,\n customizePrefixCls = props.prefixCls,\n customizeGetContainer = props.getContainer,\n extra = props.extra,\n afterVisibleChange = props.afterVisibleChange,\n _afterOpenChange = props.afterOpenChange,\n rest = __rest(props, [\"width\", \"height\", \"size\", \"closable\", \"mask\", \"push\", \"closeIcon\", \"bodyStyle\", \"drawerStyle\", \"className\", \"visible\", \"open\", \"children\", \"style\", \"title\", \"headerStyle\", \"onClose\", \"footer\", \"footerStyle\", \"prefixCls\", \"getContainer\", \"extra\", \"afterVisibleChange\", \"afterOpenChange\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var prefixCls = getPrefixCls('drawer', customizePrefixCls);\n var getContainer =\n // 有可能为 false,所以不能直接判断\n customizeGetContainer === undefined && getPopupContainer ? function () {\n return getPopupContainer(document.body);\n } : customizeGetContainer;\n var closeIconNode = closable && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: onClose,\n \"aria-label\": \"Close\",\n className: \"\".concat(prefixCls, \"-close\")\n }, closeIcon);\n [['visible', 'open'], ['afterVisibleChange', 'afterOpenChange']].forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n deprecatedName = _ref2[0],\n newName = _ref2[1];\n process.env.NODE_ENV !== \"production\" ? warning(!(deprecatedName in props), 'Drawer', \"`\".concat(deprecatedName, \"` is deprecated which will be removed in next major version, please use `\").concat(newName, \"` instead.\")) : void 0;\n });\n function renderHeader() {\n if (!title && !closable) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-header\"), _defineProperty({}, \"\".concat(prefixCls, \"-header-close-only\"), closable && !title && !extra)),\n style: headerStyle\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-header-title\")\n }, closeIconNode, title && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-title\")\n }, title)), extra && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-extra\")\n }, extra));\n }\n function renderFooter() {\n if (!footer) {\n return null;\n }\n var footerClassName = \"\".concat(prefixCls, \"-footer\");\n return /*#__PURE__*/React.createElement(\"div\", {\n className: footerClassName,\n style: footerStyle\n }, footer);\n }\n var drawerClassName = classNames(_defineProperty({\n 'no-mask': !mask\n }, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), className);\n // ============================ Size ============================\n var mergedWidth = React.useMemo(function () {\n return width !== null && width !== void 0 ? width : size === 'large' ? 736 : 378;\n }, [width, size]);\n var mergedHeight = React.useMemo(function () {\n return height !== null && height !== void 0 ? height : size === 'large' ? 736 : 378;\n }, [height, size]);\n // =========================== Motion ===========================\n var maskMotion = {\n motionName: getTransitionName(prefixCls, 'mask-motion'),\n motionAppear: true,\n motionEnter: true,\n motionLeave: true,\n motionDeadline: 500\n };\n var panelMotion = function panelMotion(motionPlacement) {\n return {\n motionName: getTransitionName(prefixCls, \"panel-motion-\".concat(motionPlacement)),\n motionAppear: true,\n motionEnter: true,\n motionLeave: true,\n motionDeadline: 500\n };\n };\n // =========================== Render ===========================\n return /*#__PURE__*/React.createElement(NoCompactStyle, null, /*#__PURE__*/React.createElement(NoFormStyle, {\n status: true,\n override: true\n }, /*#__PURE__*/React.createElement(RcDrawer, _extends({\n prefixCls: prefixCls,\n onClose: onClose\n }, rest, {\n open: open !== null && open !== void 0 ? open : visible,\n mask: mask,\n push: push,\n width: mergedWidth,\n height: mergedHeight,\n rootClassName: drawerClassName,\n getContainer: getContainer,\n afterOpenChange: function afterOpenChange(isOpen) {\n _afterOpenChange === null || _afterOpenChange === void 0 ? void 0 : _afterOpenChange(isOpen);\n afterVisibleChange === null || afterVisibleChange === void 0 ? void 0 : afterVisibleChange(isOpen);\n },\n maskMotion: maskMotion,\n motion: panelMotion,\n rootStyle: style\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-wrapper-body\"),\n style: _extends({}, drawerStyle)\n }, renderHeader(), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-body\"),\n style: bodyStyle\n }, children), renderFooter()))));\n}\nif (process.env.NODE_ENV !== 'production') {\n Drawer.displayName = 'Drawer';\n}\nexport default Drawer;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport EllipsisOutlined from \"@ant-design/icons/es/icons/EllipsisOutlined\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Button from '../button';\nimport { ConfigContext } from '../config-provider';\nimport { useCompactItemContext } from '../space/Compact';\nimport Dropdown from './dropdown';\nimport Space from '../space';\nvar DropdownButton = function DropdownButton(props) {\n var _React$useContext = React.useContext(ConfigContext),\n getContextPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var customizePrefixCls = props.prefixCls,\n _props$type = props.type,\n type = _props$type === void 0 ? 'default' : _props$type,\n danger = props.danger,\n disabled = props.disabled,\n loading = props.loading,\n onClick = props.onClick,\n htmlType = props.htmlType,\n children = props.children,\n className = props.className,\n menu = props.menu,\n arrow = props.arrow,\n autoFocus = props.autoFocus,\n overlay = props.overlay,\n trigger = props.trigger,\n align = props.align,\n visible = props.visible,\n open = props.open,\n onVisibleChange = props.onVisibleChange,\n onOpenChange = props.onOpenChange,\n placement = props.placement,\n getPopupContainer = props.getPopupContainer,\n href = props.href,\n _props$icon = props.icon,\n icon = _props$icon === void 0 ? /*#__PURE__*/React.createElement(EllipsisOutlined, null) : _props$icon,\n title = props.title,\n _props$buttonsRender = props.buttonsRender,\n buttonsRender = _props$buttonsRender === void 0 ? function (buttons) {\n return buttons;\n } : _props$buttonsRender,\n mouseEnterDelay = props.mouseEnterDelay,\n mouseLeaveDelay = props.mouseLeaveDelay,\n overlayClassName = props.overlayClassName,\n overlayStyle = props.overlayStyle,\n destroyPopupOnHide = props.destroyPopupOnHide,\n restProps = __rest(props, [\"prefixCls\", \"type\", \"danger\", \"disabled\", \"loading\", \"onClick\", \"htmlType\", \"children\", \"className\", \"menu\", \"arrow\", \"autoFocus\", \"overlay\", \"trigger\", \"align\", \"visible\", \"open\", \"onVisibleChange\", \"onOpenChange\", \"placement\", \"getPopupContainer\", \"href\", \"icon\", \"title\", \"buttonsRender\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"overlayClassName\", \"overlayStyle\", \"destroyPopupOnHide\"]);\n var prefixCls = getPrefixCls('dropdown-button', customizePrefixCls);\n var dropdownProps = {\n menu: menu,\n arrow: arrow,\n autoFocus: autoFocus,\n align: align,\n disabled: disabled,\n trigger: disabled ? [] : trigger,\n onOpenChange: onOpenChange || onVisibleChange,\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n mouseEnterDelay: mouseEnterDelay,\n mouseLeaveDelay: mouseLeaveDelay,\n overlayClassName: overlayClassName,\n overlayStyle: overlayStyle,\n destroyPopupOnHide: destroyPopupOnHide\n };\n var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n compactSize = _useCompactItemContex.compactSize,\n compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n var classes = classNames(prefixCls, compactItemClassnames, className);\n if ('overlay' in props) {\n dropdownProps.overlay = overlay;\n }\n if ('open' in props) {\n dropdownProps.open = open;\n } else if ('visible' in props) {\n dropdownProps.open = visible;\n }\n if ('placement' in props) {\n dropdownProps.placement = placement;\n } else {\n dropdownProps.placement = direction === 'rtl' ? 'bottomLeft' : 'bottomRight';\n }\n var leftButton = /*#__PURE__*/React.createElement(Button, {\n type: type,\n danger: danger,\n disabled: disabled,\n loading: loading,\n onClick: onClick,\n htmlType: htmlType,\n href: href,\n title: title\n }, children);\n var rightButton = /*#__PURE__*/React.createElement(Button, {\n type: type,\n danger: danger,\n icon: icon\n });\n var _buttonsRender = buttonsRender([leftButton, rightButton]),\n _buttonsRender2 = _slicedToArray(_buttonsRender, 2),\n leftButtonToRender = _buttonsRender2[0],\n rightButtonToRender = _buttonsRender2[1];\n return /*#__PURE__*/React.createElement(Space.Compact, _extends({\n className: classes,\n size: compactSize,\n block: true\n }, restProps), leftButtonToRender, /*#__PURE__*/React.createElement(Dropdown, _extends({}, dropdownProps), rightButtonToRender));\n};\nDropdownButton.__ANT_BUTTON = true;\nexport default DropdownButton;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport classNames from 'classnames';\nimport RcDropdown from 'rc-dropdown';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport * as React from 'react';\nimport Menu from '../menu';\nimport { ConfigContext } from '../config-provider';\nimport { OverrideProvider } from '../menu/OverrideContext';\nimport getPlacements from '../_util/placements';\nimport { cloneElement } from '../_util/reactNode';\nimport { tuple } from '../_util/type';\nimport warning from '../_util/warning';\nimport DropdownButton from './dropdown-button';\nimport { NoCompactStyle } from '../space/Compact';\nvar Placements = tuple('topLeft', 'topCenter', 'topRight', 'bottomLeft', 'bottomCenter', 'bottomRight', 'top', 'bottom');\nvar Dropdown = function Dropdown(props) {\n var _React$useContext = React.useContext(ConfigContext),\n getContextPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n // Warning for deprecated usage\n if (process.env.NODE_ENV !== 'production') {\n [['visible', 'open'], ['onVisibleChange', 'onOpenChange']].forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n deprecatedName = _ref2[0],\n newName = _ref2[1];\n process.env.NODE_ENV !== \"production\" ? warning(!(deprecatedName in props), 'Dropdown', \"`\".concat(deprecatedName, \"` is deprecated which will be removed in next major version, please use `\").concat(newName, \"` instead.\")) : void 0;\n });\n process.env.NODE_ENV !== \"production\" ? warning(!('overlay' in props), 'Dropdown', '`overlay` is deprecated. Please use `menu` instead.') : void 0;\n }\n var getTransitionName = function getTransitionName() {\n var rootPrefixCls = getPrefixCls();\n var _props$placement = props.placement,\n placement = _props$placement === void 0 ? '' : _props$placement,\n transitionName = props.transitionName;\n if (transitionName !== undefined) {\n return transitionName;\n }\n if (placement.includes('top')) {\n return \"\".concat(rootPrefixCls, \"-slide-down\");\n }\n return \"\".concat(rootPrefixCls, \"-slide-up\");\n };\n var getPlacement = function getPlacement() {\n var placement = props.placement;\n if (!placement) {\n return direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n }\n if (placement.includes('Center')) {\n var newPlacement = placement.slice(0, placement.indexOf('Center'));\n process.env.NODE_ENV !== \"production\" ? warning(!placement.includes('Center'), 'Dropdown', \"You are using '\".concat(placement, \"' placement in Dropdown, which is deprecated. Try to use '\").concat(newPlacement, \"' instead.\")) : void 0;\n return newPlacement;\n }\n return placement;\n };\n var menu = props.menu,\n arrow = props.arrow,\n customizePrefixCls = props.prefixCls,\n children = props.children,\n trigger = props.trigger,\n disabled = props.disabled,\n dropdownRender = props.dropdownRender,\n getPopupContainer = props.getPopupContainer,\n overlayClassName = props.overlayClassName,\n visible = props.visible,\n open = props.open,\n onVisibleChange = props.onVisibleChange,\n onOpenChange = props.onOpenChange,\n _props$mouseEnterDela = props.mouseEnterDelay,\n mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0.15 : _props$mouseEnterDela,\n _props$mouseLeaveDela = props.mouseLeaveDelay,\n mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n _props$autoAdjustOver = props.autoAdjustOverflow,\n autoAdjustOverflow = _props$autoAdjustOver === void 0 ? true : _props$autoAdjustOver;\n var prefixCls = getPrefixCls('dropdown', customizePrefixCls);\n var child = React.Children.only(children);\n var dropdownTrigger = cloneElement(child, {\n className: classNames(\"\".concat(prefixCls, \"-trigger\"), _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), child.props.className),\n disabled: disabled\n });\n var triggerActions = disabled ? [] : trigger;\n var alignPoint;\n if (triggerActions && triggerActions.includes('contextMenu')) {\n alignPoint = true;\n }\n // =========================== Visible ============================\n var _useMergedState = useMergedState(false, {\n value: open !== undefined ? open : visible\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedOpen = _useMergedState2[0],\n setOpen = _useMergedState2[1];\n var onInnerOpenChange = useEvent(function (nextOpen) {\n onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(nextOpen);\n onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(nextOpen);\n setOpen(nextOpen);\n });\n // =========================== Overlay ============================\n var overlayClassNameCustomized = classNames(overlayClassName, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'));\n var builtinPlacements = getPlacements({\n arrowPointAtCenter: _typeof(arrow) === 'object' && arrow.pointAtCenter,\n autoAdjustOverflow: autoAdjustOverflow\n });\n var onMenuClick = React.useCallback(function () {\n setOpen(false);\n }, []);\n var renderOverlay = function renderOverlay() {\n // rc-dropdown already can process the function of overlay, but we have check logic here.\n // So we need render the element to check and pass back to rc-dropdown.\n var overlay = props.overlay;\n var overlayNode;\n if (menu === null || menu === void 0 ? void 0 : menu.items) {\n overlayNode = /*#__PURE__*/React.createElement(Menu, _extends({}, menu));\n } else if (typeof overlay === 'function') {\n overlayNode = overlay();\n } else {\n overlayNode = overlay;\n }\n if (dropdownRender) {\n overlayNode = dropdownRender(overlayNode);\n }\n overlayNode = React.Children.only(typeof overlayNode === 'string' ? /*#__PURE__*/React.createElement(\"span\", null, overlayNode) : overlayNode);\n return /*#__PURE__*/React.createElement(OverrideProvider, {\n prefixCls: \"\".concat(prefixCls, \"-menu\"),\n expandIcon: /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-menu-submenu-arrow\")\n }, /*#__PURE__*/React.createElement(RightOutlined, {\n className: \"\".concat(prefixCls, \"-menu-submenu-arrow-icon\")\n })),\n mode: \"vertical\",\n selectable: false,\n onClick: onMenuClick,\n validator: function validator(_ref3) {\n var mode = _ref3.mode;\n // Warning if use other mode\n process.env.NODE_ENV !== \"production\" ? warning(!mode || mode === 'vertical', 'Dropdown', \"mode=\\\"\".concat(mode, \"\\\" is not supported for Dropdown's Menu.\")) : void 0;\n }\n }, /*#__PURE__*/React.createElement(NoCompactStyle, null, overlayNode));\n };\n // ============================ Render ============================\n return /*#__PURE__*/React.createElement(RcDropdown, _extends({\n alignPoint: alignPoint\n }, props, {\n mouseEnterDelay: mouseEnterDelay,\n mouseLeaveDelay: mouseLeaveDelay,\n visible: mergedOpen,\n builtinPlacements: builtinPlacements,\n arrow: !!arrow,\n overlayClassName: overlayClassNameCustomized,\n prefixCls: prefixCls,\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n transitionName: getTransitionName(),\n trigger: triggerActions,\n overlay: renderOverlay,\n placement: getPlacement(),\n onVisibleChange: onInnerOpenChange\n }), dropdownTrigger);\n};\nDropdown.Button = DropdownButton;\nexport default Dropdown;","import Dropdown from './dropdown';\nexport default Dropdown;","import * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nvar Empty = function Empty() {\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('empty-img-default');\n return /*#__PURE__*/React.createElement(\"svg\", {\n className: prefixCls,\n width: \"184\",\n height: \"152\",\n viewBox: \"0 0 184 152\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(24 31.67)\"\n }, /*#__PURE__*/React.createElement(\"ellipse\", {\n className: \"\".concat(prefixCls, \"-ellipse\"),\n cx: \"67.797\",\n cy: \"106.89\",\n rx: \"67.797\",\n ry: \"12.668\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"\".concat(prefixCls, \"-path-1\"),\n d: \"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"\".concat(prefixCls, \"-path-2\"),\n d: \"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z\",\n transform: \"translate(13.56)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"\".concat(prefixCls, \"-path-3\"),\n d: \"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"\".concat(prefixCls, \"-path-4\"),\n d: \"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n className: \"\".concat(prefixCls, \"-path-5\"),\n d: \"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n className: \"\".concat(prefixCls, \"-g\"),\n transform: \"translate(149.65 15.383)\"\n }, /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: \"20.654\",\n cy: \"3.167\",\n rx: \"2.849\",\n ry: \"2.815\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z\"\n }))));\n};\nexport default Empty;","import * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nvar Simple = function Simple() {\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('empty-img-simple');\n return /*#__PURE__*/React.createElement(\"svg\", {\n className: prefixCls,\n width: \"64\",\n height: \"41\",\n viewBox: \"0 0 64 41\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0 1)\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"ellipse\", {\n className: \"\".concat(prefixCls, \"-ellipse\"),\n cx: \"32\",\n cy: \"33\",\n rx: \"32\",\n ry: \"7\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n className: \"\".concat(prefixCls, \"-g\"),\n fillRule: \"nonzero\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\",\n className: \"\".concat(prefixCls, \"-path\")\n }))));\n};\nexport default Simple;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport DefaultEmptyImg from './empty';\nimport SimpleEmptyImg from './simple';\nvar defaultEmptyImg = /*#__PURE__*/React.createElement(DefaultEmptyImg, null);\nvar simpleEmptyImg = /*#__PURE__*/React.createElement(SimpleEmptyImg, null);\nvar Empty = function Empty(_a) {\n var className = _a.className,\n customizePrefixCls = _a.prefixCls,\n _a$image = _a.image,\n image = _a$image === void 0 ? defaultEmptyImg : _a$image,\n description = _a.description,\n children = _a.children,\n imageStyle = _a.imageStyle,\n restProps = __rest(_a, [\"className\", \"prefixCls\", \"image\", \"description\", \"children\", \"imageStyle\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n return /*#__PURE__*/React.createElement(LocaleReceiver, {\n componentName: \"Empty\"\n }, function (contextLocale) {\n var _classNames;\n var prefixCls = getPrefixCls('empty', customizePrefixCls);\n var des = typeof description !== 'undefined' ? description : contextLocale.description;\n var alt = typeof des === 'string' ? des : 'empty';\n var imageNode = null;\n if (typeof image === 'string') {\n imageNode = /*#__PURE__*/React.createElement(\"img\", {\n alt: alt,\n src: image\n });\n } else {\n imageNode = image;\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-normal\"), image === simpleEmptyImg), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className)\n }, restProps), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-image\"),\n style: imageStyle\n }, imageNode), des && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-description\")\n }, des), children && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-footer\")\n }, children));\n });\n};\nEmpty.PRESENTED_IMAGE_DEFAULT = defaultEmptyImg;\nEmpty.PRESENTED_IMAGE_SIMPLE = simpleEmptyImg;\nexport default Empty;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { FormProvider as RcFormProvider } from 'rc-field-form';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nexport var FormContext = /*#__PURE__*/React.createContext({\n labelAlign: 'right',\n vertical: false,\n itemRef: function itemRef() {}\n});\nexport var NoStyleItemContext = /*#__PURE__*/React.createContext(null);\nexport var FormProvider = function FormProvider(props) {\n var providerProps = omit(props, ['prefixCls']);\n return /*#__PURE__*/React.createElement(RcFormProvider, _extends({}, providerProps));\n};\nexport var FormItemPrefixContext = /*#__PURE__*/React.createContext({\n prefixCls: ''\n});\nexport var FormItemInputContext = /*#__PURE__*/React.createContext({});\nexport var NoFormStyle = function NoFormStyle(_ref) {\n var children = _ref.children,\n status = _ref.status,\n override = _ref.override;\n var formItemInputContext = useContext(FormItemInputContext);\n var newFormItemInputContext = useMemo(function () {\n var newContext = _extends({}, formItemInputContext);\n if (override) {\n delete newContext.isFormItemInput;\n }\n if (status) {\n delete newContext.status;\n delete newContext.hasFeedback;\n delete newContext.feedbackIcon;\n }\n return newContext;\n }, [status, override, formItemInputContext]);\n return /*#__PURE__*/React.createElement(FormItemInputContext.Provider, {\n value: newFormItemInputContext\n }, children);\n};","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default function useDebounce(value) {\n var _React$useState = React.useState(value),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n cacheValue = _React$useState2[0],\n setCacheValue = _React$useState2[1];\n React.useEffect(function () {\n var timeout = setTimeout(function () {\n setCacheValue(value);\n }, value.length ? 0 : 10);\n return function () {\n clearTimeout(timeout);\n };\n }, [value]);\n return cacheValue;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport classNames from 'classnames';\nimport CSSMotion, { CSSMotionList } from 'rc-motion';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport collapseMotion from '../_util/motion';\nimport { FormItemPrefixContext } from './context';\nimport useDebounce from './hooks/useDebounce';\nvar EMPTY_LIST = [];\nfunction toErrorEntity(error, errorStatus, prefix) {\n var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n return {\n key: typeof error === 'string' ? error : \"\".concat(prefix, \"-\").concat(index),\n error: error,\n errorStatus: errorStatus\n };\n}\nexport default function ErrorList(_ref) {\n var help = _ref.help,\n helpStatus = _ref.helpStatus,\n _ref$errors = _ref.errors,\n errors = _ref$errors === void 0 ? EMPTY_LIST : _ref$errors,\n _ref$warnings = _ref.warnings,\n warnings = _ref$warnings === void 0 ? EMPTY_LIST : _ref$warnings,\n rootClassName = _ref.className,\n fieldId = _ref.fieldId,\n onVisibleChanged = _ref.onVisibleChanged;\n var _React$useContext = React.useContext(FormItemPrefixContext),\n prefixCls = _React$useContext.prefixCls;\n var _React$useContext2 = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext2.getPrefixCls;\n var baseClassName = \"\".concat(prefixCls, \"-item-explain\");\n var rootPrefixCls = getPrefixCls();\n // We have to debounce here again since somewhere use ErrorList directly still need no shaking\n // ref: https://github.com/ant-design/ant-design/issues/36336\n var debounceErrors = useDebounce(errors);\n var debounceWarnings = useDebounce(warnings);\n var fullKeyList = React.useMemo(function () {\n if (help !== undefined && help !== null) {\n return [toErrorEntity(help, helpStatus, 'help')];\n }\n return [].concat(_toConsumableArray(debounceErrors.map(function (error, index) {\n return toErrorEntity(error, 'error', 'error', index);\n })), _toConsumableArray(debounceWarnings.map(function (warning, index) {\n return toErrorEntity(warning, 'warning', 'warning', index);\n })));\n }, [help, helpStatus, debounceErrors, debounceWarnings]);\n var helpProps = {};\n if (fieldId) {\n helpProps.id = \"\".concat(fieldId, \"_help\");\n }\n return /*#__PURE__*/React.createElement(CSSMotion, {\n motionDeadline: collapseMotion.motionDeadline,\n motionName: \"\".concat(rootPrefixCls, \"-show-help\"),\n visible: !!fullKeyList.length,\n onVisibleChanged: onVisibleChanged\n }, function (holderProps) {\n var holderClassName = holderProps.className,\n holderStyle = holderProps.style;\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, helpProps, {\n className: classNames(baseClassName, holderClassName, rootClassName),\n style: holderStyle,\n role: \"alert\"\n }), /*#__PURE__*/React.createElement(CSSMotionList, _extends({\n keys: fullKeyList\n }, collapseMotion, {\n motionName: \"\".concat(rootPrefixCls, \"-show-help-item\"),\n component: false\n }), function (itemProps) {\n var key = itemProps.key,\n error = itemProps.error,\n errorStatus = itemProps.errorStatus,\n itemClassName = itemProps.className,\n itemStyle = itemProps.style;\n return /*#__PURE__*/React.createElement(\"div\", {\n key: key,\n className: classNames(itemClassName, _defineProperty({}, \"\".concat(baseClassName, \"-\").concat(errorStatus), errorStatus)),\n style: itemStyle\n }, error);\n }));\n });\n}","// Compute what scrolling needs to be done on required scrolling boxes for target to be in view\n\n// The type names here are named after the spec to make it easier to find more information around what they mean:\n// To reduce churn and reduce things that need be maintained things from the official TS DOM library is used here\n// https://drafts.csswg.org/cssom-view/\n\n// For a definition on what is \"block flow direction\" exactly, check this: https://drafts.csswg.org/css-writing-modes-4/#block-flow-direction\n\n// add support for visualViewport object currently implemented in chrome\ninterface visualViewport {\n height: number\n width: number\n}\n\ntype ScrollLogicalPosition = 'start' | 'center' | 'end' | 'nearest'\n// This new option is tracked in this PR, which is the most likely candidate at the time: https://github.com/w3c/csswg-drafts/pull/1805\ntype ScrollMode = 'always' | 'if-needed'\n// New option that skips auto-scrolling all nodes with overflow: hidden set\n// See FF implementation: https://hg.mozilla.org/integration/fx-team/rev/c48c3ec05012#l7.18\ntype SkipOverflowHiddenElements = boolean\n\ninterface Options {\n block?: ScrollLogicalPosition\n inline?: ScrollLogicalPosition\n scrollMode?: ScrollMode\n boundary?: CustomScrollBoundary\n skipOverflowHiddenElements?: SkipOverflowHiddenElements\n}\n\n// Custom behavior, not in any spec\ntype CustomScrollBoundaryCallback = (parent: Element) => boolean\ntype CustomScrollBoundary = Element | CustomScrollBoundaryCallback | null\ninterface CustomScrollAction {\n el: Element\n top: number\n left: number\n}\n\n// @TODO better shadowdom test, 11 = document fragment\nfunction isElement(el: any): el is Element {\n return typeof el === 'object' && el != null && el.nodeType === 1\n}\n\nfunction canOverflow(\n overflow: string | null,\n skipOverflowHiddenElements?: boolean\n) {\n if (skipOverflowHiddenElements && overflow === 'hidden') {\n return false\n }\n\n return overflow !== 'visible' && overflow !== 'clip'\n}\n\nfunction getFrameElement(el: Element) {\n if (!el.ownerDocument || !el.ownerDocument.defaultView) {\n return null\n }\n\n try {\n return el.ownerDocument.defaultView.frameElement\n } catch (e) {\n return null\n }\n}\n\nfunction isHiddenByFrame(el: Element): boolean {\n const frame = getFrameElement(el)\n if (!frame) {\n return false\n }\n\n return (\n frame.clientHeight < el.scrollHeight || frame.clientWidth < el.scrollWidth\n )\n}\n\nfunction isScrollable(el: Element, skipOverflowHiddenElements?: boolean) {\n if (el.clientHeight < el.scrollHeight || el.clientWidth < el.scrollWidth) {\n const style = getComputedStyle(el, null)\n return (\n canOverflow(style.overflowY, skipOverflowHiddenElements) ||\n canOverflow(style.overflowX, skipOverflowHiddenElements) ||\n isHiddenByFrame(el)\n )\n }\n\n return false\n}\n/**\n * Find out which edge to align against when logical scroll position is \"nearest\"\n * Interesting fact: \"nearest\" works similarily to \"if-needed\", if the element is fully visible it will not scroll it\n *\n * Legends:\n * ┌────────┐ ┏ ━ ━ ━ ┓\n * │ target │ frame\n * └────────┘ ┗ ━ ━ ━ ┛\n */\nfunction alignNearest(\n scrollingEdgeStart: number,\n scrollingEdgeEnd: number,\n scrollingSize: number,\n scrollingBorderStart: number,\n scrollingBorderEnd: number,\n elementEdgeStart: number,\n elementEdgeEnd: number,\n elementSize: number\n) {\n /**\n * If element edge A and element edge B are both outside scrolling box edge A and scrolling box edge B\n *\n * ┌──┐\n * ┏━│━━│━┓\n * │ │\n * ┃ │ │ ┃ do nothing\n * │ │\n * ┗━│━━│━┛\n * └──┘\n *\n * If element edge C and element edge D are both outside scrolling box edge C and scrolling box edge D\n *\n * ┏ ━ ━ ━ ━ ┓\n * ┌───────────┐\n * │┃ ┃│ do nothing\n * └───────────┘\n * ┗ ━ ━ ━ ━ ┛\n */\n if (\n (elementEdgeStart < scrollingEdgeStart &&\n elementEdgeEnd > scrollingEdgeEnd) ||\n (elementEdgeStart > scrollingEdgeStart && elementEdgeEnd < scrollingEdgeEnd)\n ) {\n return 0\n }\n\n /**\n * If element edge A is outside scrolling box edge A and element height is less than scrolling box height\n *\n * ┌──┐\n * ┏━│━━│━┓ ┏━┌━━┐━┓\n * └──┘ │ │\n * from ┃ ┃ to ┃ └──┘ ┃\n *\n * ┗━ ━━ ━┛ ┗━ ━━ ━┛\n *\n * If element edge B is outside scrolling box edge B and element height is greater than scrolling box height\n *\n * ┏━ ━━ ━┓ ┏━┌━━┐━┓\n * │ │\n * from ┃ ┌──┐ ┃ to ┃ │ │ ┃\n * │ │ │ │\n * ┗━│━━│━┛ ┗━│━━│━┛\n * │ │ └──┘\n * │ │\n * └──┘\n *\n * If element edge C is outside scrolling box edge C and element width is less than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───┐ ┌───┐\n * │ ┃ │ ┃ ┃ │ ┃\n * └───┘ └───┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n *\n * If element edge D is outside scrolling box edge D and element width is greater than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───────────┐ ┌───────────┐\n * ┃ │ ┃ │ ┃ ┃ │\n * └───────────┘ └───────────┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n */\n if (\n (elementEdgeStart <= scrollingEdgeStart && elementSize <= scrollingSize) ||\n (elementEdgeEnd >= scrollingEdgeEnd && elementSize >= scrollingSize)\n ) {\n return elementEdgeStart - scrollingEdgeStart - scrollingBorderStart\n }\n\n /**\n * If element edge B is outside scrolling box edge B and element height is less than scrolling box height\n *\n * ┏━ ━━ ━┓ ┏━ ━━ ━┓\n *\n * from ┃ ┃ to ┃ ┌──┐ ┃\n * ┌──┐ │ │\n * ┗━│━━│━┛ ┗━└━━┘━┛\n * └──┘\n *\n * If element edge A is outside scrolling box edge A and element height is greater than scrolling box height\n *\n * ┌──┐\n * │ │\n * │ │ ┌──┐\n * ┏━│━━│━┓ ┏━│━━│━┓\n * │ │ │ │\n * from ┃ └──┘ ┃ to ┃ │ │ ┃\n * │ │\n * ┗━ ━━ ━┛ ┗━└━━┘━┛\n *\n * If element edge C is outside scrolling box edge C and element width is greater than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───────────┐ ┌───────────┐\n * │ ┃ │ ┃ │ ┃ ┃\n * └───────────┘ └───────────┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n *\n * If element edge D is outside scrolling box edge D and element width is less than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───┐ ┌───┐\n * ┃ │ ┃ │ ┃ │ ┃\n * └───┘ └───┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n *\n */\n if (\n (elementEdgeEnd > scrollingEdgeEnd && elementSize < scrollingSize) ||\n (elementEdgeStart < scrollingEdgeStart && elementSize > scrollingSize)\n ) {\n return elementEdgeEnd - scrollingEdgeEnd + scrollingBorderEnd\n }\n\n return 0\n}\n\nfunction getParentElement(element: Node): Element | null {\n const parent = element.parentElement\n if (parent == null) {\n return (element.getRootNode() as ShadowRoot).host || null\n }\n return parent\n}\n\nexport default (target: Element, options: Options): CustomScrollAction[] => {\n //TODO: remove this hack when microbundle will support typescript >= 4.0\n const windowWithViewport = window as unknown as Window & {\n visualViewport: visualViewport\n }\n\n const { scrollMode, block, inline, boundary, skipOverflowHiddenElements } =\n options\n // Allow using a callback to check the boundary\n // The default behavior is to check if the current target matches the boundary element or not\n // If undefined it'll check that target is never undefined (can happen as we recurse up the tree)\n const checkBoundary =\n typeof boundary === 'function' ? boundary : (node: any) => node !== boundary\n\n if (!isElement(target)) {\n throw new TypeError('Invalid target')\n }\n\n // Used to handle the top most element that can be scrolled\n const scrollingElement = document.scrollingElement || document.documentElement\n\n // Collect all the scrolling boxes, as defined in the spec: https://drafts.csswg.org/cssom-view/#scrolling-box\n const frames: Element[] = []\n let cursor: Element | null = target\n while (isElement(cursor) && checkBoundary(cursor)) {\n // Move cursor to parent\n cursor = getParentElement(cursor)\n\n // Stop when we reach the viewport\n if (cursor === scrollingElement) {\n frames.push(cursor)\n break\n }\n\n // Skip document.body if it's not the scrollingElement and documentElement isn't independently scrollable\n if (\n cursor != null &&\n cursor === document.body &&\n isScrollable(cursor) &&\n !isScrollable(document.documentElement)\n ) {\n continue\n }\n\n // Now we check if the element is scrollable, this code only runs if the loop haven't already hit the viewport or a custom boundary\n if (cursor != null && isScrollable(cursor, skipOverflowHiddenElements)) {\n frames.push(cursor)\n }\n }\n\n // Support pinch-zooming properly, making sure elements scroll into the visual viewport\n // Browsers that don't support visualViewport will report the layout viewport dimensions on document.documentElement.clientWidth/Height\n // and viewport dimensions on window.innerWidth/Height\n // https://www.quirksmode.org/mobile/viewports2.html\n // https://bokand.github.io/viewport/index.html\n const viewportWidth = windowWithViewport.visualViewport\n ? windowWithViewport.visualViewport.width\n : innerWidth\n const viewportHeight = windowWithViewport.visualViewport\n ? windowWithViewport.visualViewport.height\n : innerHeight\n\n // Newer browsers supports scroll[X|Y], page[X|Y]Offset is\n const viewportX = window.scrollX || pageXOffset\n const viewportY = window.scrollY || pageYOffset\n\n const {\n height: targetHeight,\n width: targetWidth,\n top: targetTop,\n right: targetRight,\n bottom: targetBottom,\n left: targetLeft,\n } = target.getBoundingClientRect()\n\n // These values mutate as we loop through and generate scroll coordinates\n let targetBlock: number =\n block === 'start' || block === 'nearest'\n ? targetTop\n : block === 'end'\n ? targetBottom\n : targetTop + targetHeight / 2 // block === 'center\n let targetInline: number =\n inline === 'center'\n ? targetLeft + targetWidth / 2\n : inline === 'end'\n ? targetRight\n : targetLeft // inline === 'start || inline === 'nearest\n\n // Collect new scroll positions\n const computations: CustomScrollAction[] = []\n // In chrome there's no longer a difference between caching the `frames.length` to a var or not, so we don't in this case (size > speed anyways)\n for (let index = 0; index < frames.length; index++) {\n const frame = frames[index]\n\n // @TODO add a shouldScroll hook here that allows userland code to take control\n\n const { height, width, top, right, bottom, left } =\n frame.getBoundingClientRect()\n\n // If the element is already visible we can end it here\n // @TODO targetBlock and targetInline should be taken into account to be compliant with https://github.com/w3c/csswg-drafts/pull/1805/files#diff-3c17f0e43c20f8ecf89419d49e7ef5e0R1333\n if (\n scrollMode === 'if-needed' &&\n targetTop >= 0 &&\n targetLeft >= 0 &&\n targetBottom <= viewportHeight &&\n targetRight <= viewportWidth &&\n targetTop >= top &&\n targetBottom <= bottom &&\n targetLeft >= left &&\n targetRight <= right\n ) {\n // Break the loop and return the computations for things that are not fully visible\n return computations\n }\n\n const frameStyle = getComputedStyle(frame)\n const borderLeft = parseInt(frameStyle.borderLeftWidth as string, 10)\n const borderTop = parseInt(frameStyle.borderTopWidth as string, 10)\n const borderRight = parseInt(frameStyle.borderRightWidth as string, 10)\n const borderBottom = parseInt(frameStyle.borderBottomWidth as string, 10)\n\n let blockScroll: number = 0\n let inlineScroll: number = 0\n\n // The property existance checks for offfset[Width|Height] is because only HTMLElement objects have them, but any Element might pass by here\n // @TODO find out if the \"as HTMLElement\" overrides can be dropped\n const scrollbarWidth =\n 'offsetWidth' in frame\n ? (frame as HTMLElement).offsetWidth -\n (frame as HTMLElement).clientWidth -\n borderLeft -\n borderRight\n : 0\n const scrollbarHeight =\n 'offsetHeight' in frame\n ? (frame as HTMLElement).offsetHeight -\n (frame as HTMLElement).clientHeight -\n borderTop -\n borderBottom\n : 0\n\n const scaleX =\n 'offsetWidth' in frame\n ? (frame as HTMLElement).offsetWidth === 0\n ? 0\n : width / (frame as HTMLElement).offsetWidth\n : 0\n const scaleY =\n 'offsetHeight' in frame\n ? (frame as HTMLElement).offsetHeight === 0\n ? 0\n : height / (frame as HTMLElement).offsetHeight\n : 0\n\n if (scrollingElement === frame) {\n // Handle viewport logic (document.documentElement or document.body)\n\n if (block === 'start') {\n blockScroll = targetBlock\n } else if (block === 'end') {\n blockScroll = targetBlock - viewportHeight\n } else if (block === 'nearest') {\n blockScroll = alignNearest(\n viewportY,\n viewportY + viewportHeight,\n viewportHeight,\n borderTop,\n borderBottom,\n viewportY + targetBlock,\n viewportY + targetBlock + targetHeight,\n targetHeight\n )\n } else {\n // block === 'center' is the default\n blockScroll = targetBlock - viewportHeight / 2\n }\n\n if (inline === 'start') {\n inlineScroll = targetInline\n } else if (inline === 'center') {\n inlineScroll = targetInline - viewportWidth / 2\n } else if (inline === 'end') {\n inlineScroll = targetInline - viewportWidth\n } else {\n // inline === 'nearest' is the default\n inlineScroll = alignNearest(\n viewportX,\n viewportX + viewportWidth,\n viewportWidth,\n borderLeft,\n borderRight,\n viewportX + targetInline,\n viewportX + targetInline + targetWidth,\n targetWidth\n )\n }\n\n // Apply scroll position offsets and ensure they are within bounds\n // @TODO add more test cases to cover this 100%\n blockScroll = Math.max(0, blockScroll + viewportY)\n inlineScroll = Math.max(0, inlineScroll + viewportX)\n } else {\n // Handle each scrolling frame that might exist between the target and the viewport\n\n if (block === 'start') {\n blockScroll = targetBlock - top - borderTop\n } else if (block === 'end') {\n blockScroll = targetBlock - bottom + borderBottom + scrollbarHeight\n } else if (block === 'nearest') {\n blockScroll = alignNearest(\n top,\n bottom,\n height,\n borderTop,\n borderBottom + scrollbarHeight,\n targetBlock,\n targetBlock + targetHeight,\n targetHeight\n )\n } else {\n // block === 'center' is the default\n blockScroll = targetBlock - (top + height / 2) + scrollbarHeight / 2\n }\n\n if (inline === 'start') {\n inlineScroll = targetInline - left - borderLeft\n } else if (inline === 'center') {\n inlineScroll = targetInline - (left + width / 2) + scrollbarWidth / 2\n } else if (inline === 'end') {\n inlineScroll = targetInline - right + borderRight + scrollbarWidth\n } else {\n // inline === 'nearest' is the default\n inlineScroll = alignNearest(\n left,\n right,\n width,\n borderLeft,\n borderRight + scrollbarWidth,\n targetInline,\n targetInline + targetWidth,\n targetWidth\n )\n }\n\n const { scrollLeft, scrollTop } = frame\n // Ensure scroll coordinates are not out of bounds while applying scroll offsets\n blockScroll = Math.max(\n 0,\n Math.min(\n scrollTop + blockScroll / scaleY,\n frame.scrollHeight - height / scaleY + scrollbarHeight\n )\n )\n inlineScroll = Math.max(\n 0,\n Math.min(\n scrollLeft + inlineScroll / scaleX,\n frame.scrollWidth - width / scaleX + scrollbarWidth\n )\n )\n\n // Cache the offset so that parent frames can scroll this into view correctly\n targetBlock += scrollTop - blockScroll\n targetInline += scrollLeft - inlineScroll\n }\n\n computations.push({ el: frame, top: blockScroll, left: inlineScroll })\n }\n\n return computations\n}\n","import compute from 'compute-scroll-into-view';\nfunction isOptionsObject(options) {\n return options === Object(options) && Object.keys(options).length !== 0;\n}\nfunction defaultBehavior(actions, behavior) {\n if (behavior === void 0) {\n behavior = 'auto';\n }\n var canSmoothScroll = ('scrollBehavior' in document.body.style);\n actions.forEach(function (_ref) {\n var el = _ref.el,\n top = _ref.top,\n left = _ref.left;\n if (el.scroll && canSmoothScroll) {\n el.scroll({\n top: top,\n left: left,\n behavior: behavior\n });\n } else {\n el.scrollTop = top;\n el.scrollLeft = left;\n }\n });\n}\nfunction getOptions(options) {\n if (options === false) {\n return {\n block: 'end',\n inline: 'nearest'\n };\n }\n if (isOptionsObject(options)) {\n return options;\n }\n return {\n block: 'start',\n inline: 'nearest'\n };\n}\nfunction scrollIntoView(target, options) {\n var isTargetAttached = target.isConnected || target.ownerDocument.documentElement.contains(target);\n if (isOptionsObject(options) && typeof options.behavior === 'function') {\n return options.behavior(isTargetAttached ? compute(target, options) : []);\n }\n if (!isTargetAttached) {\n return;\n }\n var computeOptions = getOptions(options);\n return defaultBehavior(compute(target, computeOptions), computeOptions.behavior);\n}\nexport default scrollIntoView;","// form item name black list. in form ,you can use form.id get the form item element.\n// use object hasOwnProperty will get better performance if black list is longer.\nvar formItemNameBlackList = ['parentNode'];\n// default form item id prefix.\nvar defaultItemNamePrefixCls = 'form_item';\nexport function toArray(candidate) {\n if (candidate === undefined || candidate === false) return [];\n return Array.isArray(candidate) ? candidate : [candidate];\n}\nexport function getFieldId(namePath, formName) {\n if (!namePath.length) return undefined;\n var mergedId = namePath.join('_');\n if (formName) {\n return \"\".concat(formName, \"_\").concat(mergedId);\n }\n var isIllegalName = formItemNameBlackList.includes(mergedId);\n return isIllegalName ? \"\".concat(defaultItemNamePrefixCls, \"_\").concat(mergedId) : mergedId;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useForm as useRcForm } from 'rc-field-form';\nimport * as React from 'react';\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport { getFieldId, toArray } from '../util';\nfunction toNamePathStr(name) {\n var namePath = toArray(name);\n return namePath.join('_');\n}\nexport default function useForm(form) {\n var _useRcForm = useRcForm(),\n _useRcForm2 = _slicedToArray(_useRcForm, 1),\n rcForm = _useRcForm2[0];\n var itemsRef = React.useRef({});\n var wrapForm = React.useMemo(function () {\n return form !== null && form !== void 0 ? form : _extends(_extends({}, rcForm), {\n __INTERNAL__: {\n itemRef: function itemRef(name) {\n return function (node) {\n var namePathStr = toNamePathStr(name);\n if (node) {\n itemsRef.current[namePathStr] = node;\n } else {\n delete itemsRef.current[namePathStr];\n }\n };\n }\n },\n scrollToField: function scrollToField(name) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var namePath = toArray(name);\n var fieldId = getFieldId(namePath, wrapForm.__INTERNAL__.name);\n var node = fieldId ? document.getElementById(fieldId) : null;\n if (node) {\n scrollIntoView(node, _extends({\n scrollMode: 'if-needed',\n block: 'nearest'\n }, options));\n }\n },\n getFieldInstance: function getFieldInstance(name) {\n var namePathStr = toNamePathStr(name);\n return itemsRef.current[namePathStr];\n }\n });\n }, [form, rcForm]);\n return [wrapForm];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport FieldForm, { List, useWatch } from 'rc-field-form';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext, { DisabledContextProvider } from '../config-provider/DisabledContext';\nimport SizeContext, { SizeContextProvider } from '../config-provider/SizeContext';\nimport { FormContext } from './context';\nimport useForm from './hooks/useForm';\nvar InternalForm = function InternalForm(props, ref) {\n var _classNames;\n var contextSize = React.useContext(SizeContext);\n var contextDisabled = React.useContext(DisabledContext);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n contextForm = _React$useContext.form;\n var customizePrefixCls = props.prefixCls,\n _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n _props$size = props.size,\n size = _props$size === void 0 ? contextSize : _props$size,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? contextDisabled : _props$disabled,\n form = props.form,\n colon = props.colon,\n labelAlign = props.labelAlign,\n labelWrap = props.labelWrap,\n labelCol = props.labelCol,\n wrapperCol = props.wrapperCol,\n hideRequiredMark = props.hideRequiredMark,\n _props$layout = props.layout,\n layout = _props$layout === void 0 ? 'horizontal' : _props$layout,\n scrollToFirstError = props.scrollToFirstError,\n requiredMark = props.requiredMark,\n onFinishFailed = props.onFinishFailed,\n name = props.name,\n restFormProps = __rest(props, [\"prefixCls\", \"className\", \"size\", \"disabled\", \"form\", \"colon\", \"labelAlign\", \"labelWrap\", \"labelCol\", \"wrapperCol\", \"hideRequiredMark\", \"layout\", \"scrollToFirstError\", \"requiredMark\", \"onFinishFailed\", \"name\"]);\n var mergedRequiredMark = useMemo(function () {\n if (requiredMark !== undefined) {\n return requiredMark;\n }\n if (contextForm && contextForm.requiredMark !== undefined) {\n return contextForm.requiredMark;\n }\n if (hideRequiredMark) {\n return false;\n }\n return true;\n }, [hideRequiredMark, requiredMark, contextForm]);\n var mergedColon = colon !== null && colon !== void 0 ? colon : contextForm === null || contextForm === void 0 ? void 0 : contextForm.colon;\n var prefixCls = getPrefixCls('form', customizePrefixCls);\n var formClassName = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(layout), true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-hide-required-mark\"), mergedRequiredMark === false), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(size), size), _classNames), className);\n var _useForm = useForm(form),\n _useForm2 = _slicedToArray(_useForm, 1),\n wrapForm = _useForm2[0];\n var __INTERNAL__ = wrapForm.__INTERNAL__;\n __INTERNAL__.name = name;\n var formContextValue = useMemo(function () {\n return {\n name: name,\n labelAlign: labelAlign,\n labelCol: labelCol,\n labelWrap: labelWrap,\n wrapperCol: wrapperCol,\n vertical: layout === 'vertical',\n colon: mergedColon,\n requiredMark: mergedRequiredMark,\n itemRef: __INTERNAL__.itemRef,\n form: wrapForm\n };\n }, [name, labelAlign, labelCol, wrapperCol, layout, mergedColon, mergedRequiredMark, wrapForm]);\n React.useImperativeHandle(ref, function () {\n return wrapForm;\n });\n var onInternalFinishFailed = function onInternalFinishFailed(errorInfo) {\n onFinishFailed === null || onFinishFailed === void 0 ? void 0 : onFinishFailed(errorInfo);\n var defaultScrollToFirstError = {\n block: 'nearest'\n };\n if (scrollToFirstError && errorInfo.errorFields.length) {\n if (_typeof(scrollToFirstError) === 'object') {\n defaultScrollToFirstError = scrollToFirstError;\n }\n wrapForm.scrollToField(errorInfo.errorFields[0].name, defaultScrollToFirstError);\n }\n };\n return /*#__PURE__*/React.createElement(DisabledContextProvider, {\n disabled: disabled\n }, /*#__PURE__*/React.createElement(SizeContextProvider, {\n size: size\n }, /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: formContextValue\n }, /*#__PURE__*/React.createElement(FieldForm, _extends({\n id: name\n }, restFormProps, {\n name: name,\n onFinishFailed: onInternalFinishFailed,\n form: wrapForm,\n className: formClassName\n })))));\n};\nvar Form = /*#__PURE__*/React.forwardRef(InternalForm);\nexport { useForm, List, useWatch };\nexport default Form;","import { useContext } from 'react';\nimport { FormItemInputContext } from '../context';\nimport warning from '../../_util/warning';\nvar useFormItemStatus = function useFormItemStatus() {\n var _useContext = useContext(FormItemInputContext),\n status = _useContext.status;\n process.env.NODE_ENV !== \"production\" ? warning(status !== undefined, 'Form.Item', \"Form.Item.useStatus should be used under Form.Item component. For more information: \".concat(window.location.protocol, \"//\").concat(window.location.host, \"/components/form-cn/#Form.Item.useStatus\")) : void 0;\n return {\n status: status\n };\n};\nexport default useFormItemStatus;","// This icon file is generated automatically.\nvar QuestionCircleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z\" } }] }, \"name\": \"question-circle\", \"theme\": \"outlined\" };\nexport default QuestionCircleOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport QuestionCircleOutlinedSvg from \"@ant-design/icons-svg/es/asn/QuestionCircleOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar QuestionCircleOutlined = function QuestionCircleOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: QuestionCircleOutlinedSvg\n }));\n};\nQuestionCircleOutlined.displayName = 'QuestionCircleOutlined';\nexport default /*#__PURE__*/React.forwardRef(QuestionCircleOutlined);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport QuestionCircleOutlined from \"@ant-design/icons/es/icons/QuestionCircleOutlined\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Col from '../grid/col';\nimport { useLocaleReceiver } from '../locale-provider/LocaleReceiver';\nimport defaultLocale from '../locale/default';\nimport Tooltip from '../tooltip';\nimport { FormContext } from './context';\nfunction toTooltipProps(tooltip) {\n if (!tooltip) {\n return null;\n }\n if (_typeof(tooltip) === 'object' && ! /*#__PURE__*/React.isValidElement(tooltip)) {\n return tooltip;\n }\n return {\n title: tooltip\n };\n}\nvar FormItemLabel = function FormItemLabel(_ref) {\n var prefixCls = _ref.prefixCls,\n label = _ref.label,\n htmlFor = _ref.htmlFor,\n labelCol = _ref.labelCol,\n labelAlign = _ref.labelAlign,\n colon = _ref.colon,\n required = _ref.required,\n requiredMark = _ref.requiredMark,\n tooltip = _ref.tooltip;\n var _useLocaleReceiver = useLocaleReceiver('Form'),\n _useLocaleReceiver2 = _slicedToArray(_useLocaleReceiver, 1),\n formLocale = _useLocaleReceiver2[0];\n if (!label) return null;\n return /*#__PURE__*/React.createElement(FormContext.Consumer, {\n key: \"label\"\n }, function (_ref2) {\n var _classNames2;\n var vertical = _ref2.vertical,\n contextLabelAlign = _ref2.labelAlign,\n contextLabelCol = _ref2.labelCol,\n labelWrap = _ref2.labelWrap,\n contextColon = _ref2.colon;\n var _a;\n var mergedLabelCol = labelCol || contextLabelCol || {};\n var mergedLabelAlign = labelAlign || contextLabelAlign;\n var labelClsBasic = \"\".concat(prefixCls, \"-item-label\");\n var labelColClassName = classNames(labelClsBasic, mergedLabelAlign === 'left' && \"\".concat(labelClsBasic, \"-left\"), mergedLabelCol.className, _defineProperty({}, \"\".concat(labelClsBasic, \"-wrap\"), !!labelWrap));\n var labelChildren = label;\n // Keep label is original where there should have no colon\n var computedColon = colon === true || contextColon !== false && colon !== false;\n var haveColon = computedColon && !vertical;\n // Remove duplicated user input colon\n if (haveColon && typeof label === 'string' && label.trim() !== '') {\n labelChildren = label.replace(/[:|:]\\s*$/, '');\n }\n // Tooltip\n var tooltipProps = toTooltipProps(tooltip);\n if (tooltipProps) {\n var _tooltipProps$icon = tooltipProps.icon,\n icon = _tooltipProps$icon === void 0 ? /*#__PURE__*/React.createElement(QuestionCircleOutlined, null) : _tooltipProps$icon,\n restTooltipProps = __rest(tooltipProps, [\"icon\"]);\n var tooltipNode = /*#__PURE__*/React.createElement(Tooltip, _extends({}, restTooltipProps), /*#__PURE__*/React.cloneElement(icon, {\n className: \"\".concat(prefixCls, \"-item-tooltip\"),\n title: ''\n }));\n labelChildren = /*#__PURE__*/React.createElement(React.Fragment, null, labelChildren, tooltipNode);\n }\n // Add required mark if optional\n if (requiredMark === 'optional' && !required) {\n labelChildren = /*#__PURE__*/React.createElement(React.Fragment, null, labelChildren, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-item-optional\"),\n title: \"\"\n }, (formLocale === null || formLocale === void 0 ? void 0 : formLocale.optional) || ((_a = defaultLocale.Form) === null || _a === void 0 ? void 0 : _a.optional)));\n }\n var labelClassName = classNames((_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-item-required\"), required), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-item-required-mark-optional\"), requiredMark === 'optional'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-item-no-colon\"), !computedColon), _classNames2));\n return /*#__PURE__*/React.createElement(Col, _extends({}, mergedLabelCol, {\n className: labelColClassName\n }), /*#__PURE__*/React.createElement(\"label\", {\n htmlFor: htmlFor,\n className: labelClassName,\n title: typeof label === 'string' ? label : ''\n }, labelChildren));\n });\n};\nexport default FormItemLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport Col from '../grid/col';\nimport { FormContext, FormItemPrefixContext } from './context';\nimport ErrorList from './ErrorList';\nvar FormItemInput = function FormItemInput(props) {\n var prefixCls = props.prefixCls,\n status = props.status,\n wrapperCol = props.wrapperCol,\n children = props.children,\n errors = props.errors,\n warnings = props.warnings,\n formItemRender = props._internalItemRender,\n extra = props.extra,\n help = props.help,\n fieldId = props.fieldId,\n marginBottom = props.marginBottom,\n onErrorVisibleChanged = props.onErrorVisibleChanged;\n var baseClassName = \"\".concat(prefixCls, \"-item\");\n var formContext = React.useContext(FormContext);\n var mergedWrapperCol = wrapperCol || formContext.wrapperCol || {};\n var className = classNames(\"\".concat(baseClassName, \"-control\"), mergedWrapperCol.className);\n // Pass to sub FormItem should not with col info\n var subFormContext = React.useMemo(function () {\n return _extends({}, formContext);\n }, [formContext]);\n delete subFormContext.labelCol;\n delete subFormContext.wrapperCol;\n var inputDom = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(baseClassName, \"-control-input\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(baseClassName, \"-control-input-content\")\n }, children));\n var formItemContext = React.useMemo(function () {\n return {\n prefixCls: prefixCls,\n status: status\n };\n }, [prefixCls, status]);\n var errorListDom = marginBottom !== null || errors.length || warnings.length ? /*#__PURE__*/React.createElement(\"div\", {\n style: {\n display: 'flex',\n flexWrap: 'nowrap'\n }\n }, /*#__PURE__*/React.createElement(FormItemPrefixContext.Provider, {\n value: formItemContext\n }, /*#__PURE__*/React.createElement(ErrorList, {\n fieldId: fieldId,\n errors: errors,\n warnings: warnings,\n help: help,\n helpStatus: status,\n className: \"\".concat(baseClassName, \"-explain-connected\"),\n onVisibleChanged: onErrorVisibleChanged\n })), !!marginBottom && /*#__PURE__*/React.createElement(\"div\", {\n style: {\n width: 0,\n height: marginBottom\n }\n })) : null;\n var extraProps = {};\n if (fieldId) {\n extraProps.id = \"\".concat(fieldId, \"_extra\");\n }\n // If extra = 0, && will goes wrong\n // 0&&error -> 0\n var extraDom = extra ? /*#__PURE__*/React.createElement(\"div\", _extends({}, extraProps, {\n className: \"\".concat(baseClassName, \"-extra\")\n }), extra) : null;\n var dom = formItemRender && formItemRender.mark === 'pro_table_render' && formItemRender.render ? formItemRender.render(props, {\n input: inputDom,\n errorList: errorListDom,\n extra: extraDom\n }) : /*#__PURE__*/React.createElement(React.Fragment, null, inputDom, errorListDom, extraDom);\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: subFormContext\n }, /*#__PURE__*/React.createElement(Col, _extends({}, mergedWrapperCol, {\n className: className\n }), dom));\n};\nexport default FormItemInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CheckCircleFilled from \"@ant-design/icons/es/icons/CheckCircleFilled\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport ExclamationCircleFilled from \"@ant-design/icons/es/icons/ExclamationCircleFilled\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport omit from \"rc-util/es/omit\";\nimport { Row } from '../../grid';\nimport FormItemLabel from '../FormItemLabel';\nimport FormItemInput from '../FormItemInput';\nimport { FormContext, FormItemInputContext, NoStyleItemContext } from '../context';\nimport useDebounce from '../hooks/useDebounce';\nvar iconMap = {\n success: CheckCircleFilled,\n warning: ExclamationCircleFilled,\n error: CloseCircleFilled,\n validating: LoadingOutlined\n};\nexport default function ItemHolder(props) {\n var _itemClassName;\n var prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n help = props.help,\n errors = props.errors,\n warnings = props.warnings,\n validateStatus = props.validateStatus,\n meta = props.meta,\n hasFeedback = props.hasFeedback,\n hidden = props.hidden,\n children = props.children,\n fieldId = props.fieldId,\n isRequired = props.isRequired,\n onSubItemMetaChange = props.onSubItemMetaChange,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"style\", \"help\", \"errors\", \"warnings\", \"validateStatus\", \"meta\", \"hasFeedback\", \"hidden\", \"children\", \"fieldId\", \"isRequired\", \"onSubItemMetaChange\"]);\n var itemPrefixCls = \"\".concat(prefixCls, \"-item\");\n var _React$useContext = React.useContext(FormContext),\n requiredMark = _React$useContext.requiredMark;\n // ======================== Margin ========================\n var itemRef = React.useRef(null);\n var debounceErrors = useDebounce(errors);\n var debounceWarnings = useDebounce(warnings);\n var hasHelp = help !== undefined && help !== null;\n var hasError = !!(hasHelp || errors.length || warnings.length);\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n marginBottom = _React$useState2[0],\n setMarginBottom = _React$useState2[1];\n useLayoutEffect(function () {\n if (hasError && itemRef.current) {\n var itemStyle = getComputedStyle(itemRef.current);\n setMarginBottom(parseInt(itemStyle.marginBottom, 10));\n }\n }, [hasError]);\n var onErrorVisibleChanged = function onErrorVisibleChanged(nextVisible) {\n if (!nextVisible) {\n setMarginBottom(null);\n }\n };\n // ======================== Status ========================\n var mergedValidateStatus = '';\n if (validateStatus !== undefined) {\n mergedValidateStatus = validateStatus;\n } else if (meta.validating) {\n mergedValidateStatus = 'validating';\n } else if (debounceErrors.length) {\n mergedValidateStatus = 'error';\n } else if (debounceWarnings.length) {\n mergedValidateStatus = 'warning';\n } else if (meta.touched) {\n mergedValidateStatus = 'success';\n }\n var formItemStatusContext = React.useMemo(function () {\n var feedbackIcon;\n if (hasFeedback) {\n var IconNode = mergedValidateStatus && iconMap[mergedValidateStatus];\n feedbackIcon = IconNode ? /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(itemPrefixCls, \"-feedback-icon\"), \"\".concat(itemPrefixCls, \"-feedback-icon-\").concat(mergedValidateStatus))\n }, /*#__PURE__*/React.createElement(IconNode, null)) : null;\n }\n return {\n status: mergedValidateStatus,\n hasFeedback: hasFeedback,\n feedbackIcon: feedbackIcon,\n isFormItemInput: true\n };\n }, [mergedValidateStatus, hasFeedback]);\n // ======================== Render ========================\n var itemClassName = (_itemClassName = {}, _defineProperty(_itemClassName, itemPrefixCls, true), _defineProperty(_itemClassName, \"\".concat(itemPrefixCls, \"-with-help\"), hasHelp || debounceErrors.length || debounceWarnings.length), _defineProperty(_itemClassName, \"\".concat(className), !!className), _defineProperty(_itemClassName, \"\".concat(itemPrefixCls, \"-has-feedback\"), mergedValidateStatus && hasFeedback), _defineProperty(_itemClassName, \"\".concat(itemPrefixCls, \"-has-success\"), mergedValidateStatus === 'success'), _defineProperty(_itemClassName, \"\".concat(itemPrefixCls, \"-has-warning\"), mergedValidateStatus === 'warning'), _defineProperty(_itemClassName, \"\".concat(itemPrefixCls, \"-has-error\"), mergedValidateStatus === 'error'), _defineProperty(_itemClassName, \"\".concat(itemPrefixCls, \"-is-validating\"), mergedValidateStatus === 'validating'), _defineProperty(_itemClassName, \"\".concat(itemPrefixCls, \"-hidden\"), hidden), _itemClassName);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(itemClassName),\n style: style,\n ref: itemRef\n }, /*#__PURE__*/React.createElement(Row, _extends({\n className: \"\".concat(itemPrefixCls, \"-row\")\n }, omit(restProps, ['_internalItemRender', 'colon', 'dependencies', 'extra', 'fieldKey', 'getValueFromEvent', 'getValueProps', 'htmlFor', 'id', 'initialValue', 'isListField', 'label', 'labelAlign', 'labelCol', 'labelWrap', 'messageVariables', 'name', 'normalize', 'noStyle', 'preserve', 'required', 'requiredMark', 'rules', 'shouldUpdate', 'trigger', 'tooltip', 'validateFirst', 'validateTrigger', 'valuePropName', 'wrapperCol'])), /*#__PURE__*/React.createElement(FormItemLabel, _extends({\n htmlFor: fieldId,\n required: isRequired,\n requiredMark: requiredMark\n }, props, {\n prefixCls: prefixCls\n })), /*#__PURE__*/React.createElement(FormItemInput, _extends({}, props, meta, {\n errors: debounceErrors,\n warnings: debounceWarnings,\n prefixCls: prefixCls,\n status: mergedValidateStatus,\n help: help,\n marginBottom: marginBottom,\n onErrorVisibleChanged: onErrorVisibleChanged\n }), /*#__PURE__*/React.createElement(NoStyleItemContext.Provider, {\n value: onSubItemMetaChange\n }, /*#__PURE__*/React.createElement(FormItemInputContext.Provider, {\n value: formItemStatusContext\n }, children)))), !!marginBottom && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(itemPrefixCls, \"-margin-offset\"),\n style: {\n marginBottom: -marginBottom\n }\n }));\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { Field, FieldContext, ListContext } from 'rc-field-form';\nimport useState from \"rc-util/es/hooks/useState\";\nimport { supportRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useFormItemStatus from '../hooks/useFormItemStatus';\nimport { ConfigContext } from '../../config-provider';\nimport { cloneElement, isValidElement } from '../../_util/reactNode';\nimport { tuple } from '../../_util/type';\nimport warning from '../../_util/warning';\nimport { FormContext, NoStyleItemContext } from '../context';\nimport useFrameState from '../hooks/useFrameState';\nimport useItemRef from '../hooks/useItemRef';\nimport { getFieldId, toArray } from '../util';\nimport ItemHolder from './ItemHolder';\nvar NAME_SPLIT = '__SPLIT__';\nvar ValidateStatuses = tuple('success', 'warning', 'error', 'validating', '');\nvar MemoInput = /*#__PURE__*/React.memo(function (_ref) {\n var children = _ref.children;\n return children;\n}, function (prev, next) {\n return prev.value === next.value && prev.update === next.update && prev.childProps.length === next.childProps.length && prev.childProps.every(function (value, index) {\n return value === next.childProps[index];\n });\n});\nfunction hasValidName(name) {\n if (name === null) {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Form.Item', '`null` is passed as `name` property') : void 0;\n }\n return !(name === undefined || name === null);\n}\nfunction genEmptyMeta() {\n return {\n errors: [],\n warnings: [],\n touched: false,\n validating: false,\n name: []\n };\n}\nfunction InternalFormItem(props) {\n var name = props.name,\n noStyle = props.noStyle,\n dependencies = props.dependencies,\n customizePrefixCls = props.prefixCls,\n shouldUpdate = props.shouldUpdate,\n rules = props.rules,\n children = props.children,\n required = props.required,\n label = props.label,\n messageVariables = props.messageVariables,\n _props$trigger = props.trigger,\n trigger = _props$trigger === void 0 ? 'onChange' : _props$trigger,\n validateTrigger = props.validateTrigger,\n hidden = props.hidden;\n var _useContext = useContext(ConfigContext),\n getPrefixCls = _useContext.getPrefixCls;\n var _useContext2 = useContext(FormContext),\n formName = _useContext2.name;\n var isRenderProps = typeof children === 'function';\n var notifyParentMetaChange = useContext(NoStyleItemContext);\n var _useContext3 = useContext(FieldContext),\n contextValidateTrigger = _useContext3.validateTrigger;\n var mergedValidateTrigger = validateTrigger !== undefined ? validateTrigger : contextValidateTrigger;\n var hasName = hasValidName(name);\n var prefixCls = getPrefixCls('form', customizePrefixCls);\n // ========================= MISC =========================\n // Get `noStyle` required info\n var listContext = React.useContext(ListContext);\n var fieldKeyPathRef = React.useRef();\n // ======================== Errors ========================\n // >>>>> Collect sub field errors\n var _useFrameState = useFrameState({}),\n _useFrameState2 = _slicedToArray(_useFrameState, 2),\n subFieldErrors = _useFrameState2[0],\n setSubFieldErrors = _useFrameState2[1];\n // >>>>> Current field errors\n var _useState = useState(function () {\n return genEmptyMeta();\n }),\n _useState2 = _slicedToArray(_useState, 2),\n meta = _useState2[0],\n setMeta = _useState2[1];\n var onMetaChange = function onMetaChange(nextMeta) {\n // This keyInfo is not correct when field is removed\n // Since origin keyManager no longer keep the origin key anymore\n // Which means we need cache origin one and reuse when removed\n var keyInfo = listContext === null || listContext === void 0 ? void 0 : listContext.getKey(nextMeta.name);\n // Destroy will reset all the meta\n setMeta(nextMeta.destroy ? genEmptyMeta() : nextMeta, true);\n // Bump to parent since noStyle\n if (noStyle && notifyParentMetaChange) {\n var namePath = nextMeta.name;\n if (!nextMeta.destroy) {\n if (keyInfo !== undefined) {\n var _keyInfo = _slicedToArray(keyInfo, 2),\n fieldKey = _keyInfo[0],\n restPath = _keyInfo[1];\n namePath = [fieldKey].concat(_toConsumableArray(restPath));\n fieldKeyPathRef.current = namePath;\n }\n } else {\n // Use origin cache data\n namePath = fieldKeyPathRef.current || namePath;\n }\n notifyParentMetaChange(nextMeta, namePath);\n }\n };\n // >>>>> Collect noStyle Field error to the top FormItem\n var onSubItemMetaChange = function onSubItemMetaChange(subMeta, uniqueKeys) {\n // Only `noStyle` sub item will trigger\n setSubFieldErrors(function (prevSubFieldErrors) {\n var clone = _extends({}, prevSubFieldErrors);\n // name: ['user', 1] + key: [4] = ['user', 4]\n var mergedNamePath = [].concat(_toConsumableArray(subMeta.name.slice(0, -1)), _toConsumableArray(uniqueKeys));\n var mergedNameKey = mergedNamePath.join(NAME_SPLIT);\n if (subMeta.destroy) {\n // Remove\n delete clone[mergedNameKey];\n } else {\n // Update\n clone[mergedNameKey] = subMeta;\n }\n return clone;\n });\n };\n // >>>>> Get merged errors\n var _React$useMemo = React.useMemo(function () {\n var errorList = _toConsumableArray(meta.errors);\n var warningList = _toConsumableArray(meta.warnings);\n Object.values(subFieldErrors).forEach(function (subFieldError) {\n errorList.push.apply(errorList, _toConsumableArray(subFieldError.errors || []));\n warningList.push.apply(warningList, _toConsumableArray(subFieldError.warnings || []));\n });\n return [errorList, warningList];\n }, [subFieldErrors, meta.errors, meta.warnings]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n mergedErrors = _React$useMemo2[0],\n mergedWarnings = _React$useMemo2[1];\n // ===================== Children Ref =====================\n var getItemRef = useItemRef();\n // ======================== Render ========================\n function renderLayout(baseChildren, fieldId, isRequired) {\n if (noStyle && !hidden) {\n return baseChildren;\n }\n return /*#__PURE__*/React.createElement(ItemHolder, _extends({\n key: \"row\"\n }, props, {\n prefixCls: prefixCls,\n fieldId: fieldId,\n isRequired: isRequired,\n errors: mergedErrors,\n warnings: mergedWarnings,\n meta: meta,\n onSubItemMetaChange: onSubItemMetaChange\n }), baseChildren);\n }\n if (!hasName && !isRenderProps && !dependencies) {\n return renderLayout(children);\n }\n var variables = {};\n if (typeof label === 'string') {\n variables.label = label;\n } else if (name) {\n variables.label = String(name);\n }\n if (messageVariables) {\n variables = _extends(_extends({}, variables), messageVariables);\n }\n // >>>>> With Field\n return /*#__PURE__*/React.createElement(Field, _extends({}, props, {\n messageVariables: variables,\n trigger: trigger,\n validateTrigger: mergedValidateTrigger,\n onMetaChange: onMetaChange\n }), function (control, renderMeta, context) {\n var mergedName = toArray(name).length && renderMeta ? renderMeta.name : [];\n var fieldId = getFieldId(mergedName, formName);\n var isRequired = required !== undefined ? required : !!(rules && rules.some(function (rule) {\n if (rule && _typeof(rule) === 'object' && rule.required && !rule.warningOnly) {\n return true;\n }\n if (typeof rule === 'function') {\n var ruleEntity = rule(context);\n return ruleEntity && ruleEntity.required && !ruleEntity.warningOnly;\n }\n return false;\n }));\n // ======================= Children =======================\n var mergedControl = _extends({}, control);\n var childNode = null;\n process.env.NODE_ENV !== \"production\" ? warning(!(shouldUpdate && dependencies), 'Form.Item', \"`shouldUpdate` and `dependencies` shouldn't be used together. See https://u.ant.design/form-deps.\") : void 0;\n if (Array.isArray(children) && hasName) {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Form.Item', 'A `Form.Item` with a `name` prop must have a single child element. For information on how to render more complex form items, see https://u.ant.design/complex-form-item.') : void 0;\n childNode = children;\n } else if (isRenderProps && (!(shouldUpdate || dependencies) || hasName)) {\n process.env.NODE_ENV !== \"production\" ? warning(!!(shouldUpdate || dependencies), 'Form.Item', 'A `Form.Item` with a render function must have either `shouldUpdate` or `dependencies`.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!hasName, 'Form.Item', \"A `Form.Item` with a render function cannot be a field, and thus cannot have a `name` prop.\") : void 0;\n } else if (dependencies && !isRenderProps && !hasName) {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Form.Item', 'Must set `name` or use a render function when `dependencies` is set.') : void 0;\n } else if (isValidElement(children)) {\n process.env.NODE_ENV !== \"production\" ? warning(children.props.defaultValue === undefined, 'Form.Item', '`defaultValue` will not work on controlled Field. You should use `initialValues` of Form instead.') : void 0;\n var childProps = _extends(_extends({}, children.props), mergedControl);\n if (!childProps.id) {\n childProps.id = fieldId;\n }\n if (props.help || mergedErrors.length > 0 || mergedWarnings.length > 0 || props.extra) {\n var describedbyArr = [];\n if (props.help || mergedErrors.length > 0) {\n describedbyArr.push(\"\".concat(fieldId, \"_help\"));\n }\n if (props.extra) {\n describedbyArr.push(\"\".concat(fieldId, \"_extra\"));\n }\n childProps['aria-describedby'] = describedbyArr.join(' ');\n }\n if (mergedErrors.length > 0) {\n childProps['aria-invalid'] = 'true';\n }\n if (isRequired) {\n childProps['aria-required'] = 'true';\n }\n if (supportRef(children)) {\n childProps.ref = getItemRef(mergedName, children);\n }\n // We should keep user origin event handler\n var triggers = new Set([].concat(_toConsumableArray(toArray(trigger)), _toConsumableArray(toArray(mergedValidateTrigger))));\n triggers.forEach(function (eventName) {\n childProps[eventName] = function () {\n var _a2, _c2;\n var _a, _b, _c;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n (_a = mergedControl[eventName]) === null || _a === void 0 ? void 0 : (_a2 = _a).call.apply(_a2, [mergedControl].concat(args));\n (_c = (_b = children.props)[eventName]) === null || _c === void 0 ? void 0 : (_c2 = _c).call.apply(_c2, [_b].concat(args));\n };\n });\n // List of props that need to be watched for changes -> if changes are detected in MemoInput -> rerender\n var watchingChildProps = [childProps['aria-required'], childProps['aria-invalid'], childProps['aria-describedby']];\n childNode = /*#__PURE__*/React.createElement(MemoInput, {\n value: mergedControl[props.valuePropName || 'value'],\n update: children,\n childProps: watchingChildProps\n }, cloneElement(children, childProps));\n } else if (isRenderProps && (shouldUpdate || dependencies) && !hasName) {\n childNode = children(context);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(!mergedName.length, 'Form.Item', '`name` is only used for validate React element. If you are using Form.Item as layout display, please remove `name` instead.') : void 0;\n childNode = children;\n }\n return renderLayout(childNode, fieldId, isRequired);\n });\n}\nvar FormItem = InternalFormItem;\nFormItem.useStatus = useFormItemStatus;\nexport default FormItem;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nexport default function useFrameState(defaultValue) {\n var _React$useState = React.useState(defaultValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n value = _React$useState2[0],\n setValue = _React$useState2[1];\n var frameRef = useRef(null);\n var batchRef = useRef([]);\n var destroyRef = useRef(false);\n React.useEffect(function () {\n destroyRef.current = false;\n return function () {\n destroyRef.current = true;\n raf.cancel(frameRef.current);\n frameRef.current = null;\n };\n }, []);\n function setFrameValue(updater) {\n if (destroyRef.current) {\n return;\n }\n if (frameRef.current === null) {\n batchRef.current = [];\n frameRef.current = raf(function () {\n frameRef.current = null;\n setValue(function (prevValue) {\n var current = prevValue;\n batchRef.current.forEach(function (func) {\n current = func(current);\n });\n return current;\n });\n });\n }\n batchRef.current.push(updater);\n }\n return [value, setFrameValue];\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { FormContext } from '../context';\nexport default function useItemRef() {\n var _React$useContext = React.useContext(FormContext),\n itemRef = _React$useContext.itemRef;\n var cacheRef = React.useRef({});\n function getRef(name, children) {\n var childrenRef = children && _typeof(children) === 'object' && children.ref;\n var nameStr = name.join('_');\n if (cacheRef.current.name !== nameStr || cacheRef.current.originRef !== childrenRef) {\n cacheRef.current.name = nameStr;\n cacheRef.current.originRef = childrenRef;\n cacheRef.current.ref = composeRef(itemRef(name), childrenRef);\n }\n return cacheRef.current.ref;\n }\n return getRef;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { List } from 'rc-field-form';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport warning from '../_util/warning';\nimport { FormItemPrefixContext } from './context';\nvar FormList = function FormList(_a) {\n var customizePrefixCls = _a.prefixCls,\n children = _a.children,\n props = __rest(_a, [\"prefixCls\", \"children\"]);\n process.env.NODE_ENV !== \"production\" ? warning(!!props.name, 'Form.List', 'Miss `name` prop.') : void 0;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('form', customizePrefixCls);\n var contextValue = React.useMemo(function () {\n return {\n prefixCls: prefixCls,\n status: 'error'\n };\n }, [prefixCls]);\n return /*#__PURE__*/React.createElement(List, _extends({}, props), function (fields, operation, meta) {\n return /*#__PURE__*/React.createElement(FormItemPrefixContext.Provider, {\n value: contextValue\n }, children(fields.map(function (field) {\n return _extends(_extends({}, field), {\n fieldKey: field.key\n });\n }), operation, {\n errors: meta.errors,\n warnings: meta.warnings\n }));\n });\n};\nexport default FormList;","import warning from '../_util/warning';\nimport { FormProvider } from './context';\nimport ErrorList from './ErrorList';\nimport InternalForm, { useForm, useWatch } from './Form';\nimport Item from './FormItem';\nimport List from './FormList';\nimport useFormInstance from './hooks/useFormInstance';\nvar Form = InternalForm;\nForm.Item = Item;\nForm.List = List;\nForm.ErrorList = ErrorList;\nForm.useForm = useForm;\nForm.useFormInstance = useFormInstance;\nForm.useWatch = useWatch;\nForm.Provider = FormProvider;\nForm.create = function () {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Form', 'antd v4 removed `Form.create`. Please remove or use `@ant-design/compatible` instead.') : void 0;\n};\nexport default Form;","import { useContext } from 'react';\nimport { FormContext } from '../context';\nexport default function useFormInstance() {\n var _useContext = useContext(FormContext),\n form = _useContext.form;\n return form;\n}","import { createContext } from 'react';\nvar RowContext = /*#__PURE__*/createContext({});\nexport default RowContext;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport RowContext from './RowContext';\nfunction parseFlex(flex) {\n if (typeof flex === 'number') {\n return \"\".concat(flex, \" \").concat(flex, \" auto\");\n }\n if (/^\\d+(\\.\\d+)?(px|em|rem|%)$/.test(flex)) {\n return \"0 0 \".concat(flex);\n }\n return flex;\n}\nvar sizes = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\nvar Col = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var _React$useContext2 = React.useContext(RowContext),\n gutter = _React$useContext2.gutter,\n wrap = _React$useContext2.wrap,\n supportFlexGap = _React$useContext2.supportFlexGap;\n var customizePrefixCls = props.prefixCls,\n span = props.span,\n order = props.order,\n offset = props.offset,\n push = props.push,\n pull = props.pull,\n className = props.className,\n children = props.children,\n flex = props.flex,\n style = props.style,\n others = __rest(props, [\"prefixCls\", \"span\", \"order\", \"offset\", \"push\", \"pull\", \"className\", \"children\", \"flex\", \"style\"]);\n var prefixCls = getPrefixCls('col', customizePrefixCls);\n var sizeClassObj = {};\n sizes.forEach(function (size) {\n var _extends2;\n var sizeProps = {};\n var propSize = props[size];\n if (typeof propSize === 'number') {\n sizeProps.span = propSize;\n } else if (_typeof(propSize) === 'object') {\n sizeProps = propSize || {};\n }\n delete others[size];\n sizeClassObj = _extends(_extends({}, sizeClassObj), (_extends2 = {}, _defineProperty(_extends2, \"\".concat(prefixCls, \"-\").concat(size, \"-\").concat(sizeProps.span), sizeProps.span !== undefined), _defineProperty(_extends2, \"\".concat(prefixCls, \"-\").concat(size, \"-order-\").concat(sizeProps.order), sizeProps.order || sizeProps.order === 0), _defineProperty(_extends2, \"\".concat(prefixCls, \"-\").concat(size, \"-offset-\").concat(sizeProps.offset), sizeProps.offset || sizeProps.offset === 0), _defineProperty(_extends2, \"\".concat(prefixCls, \"-\").concat(size, \"-push-\").concat(sizeProps.push), sizeProps.push || sizeProps.push === 0), _defineProperty(_extends2, \"\".concat(prefixCls, \"-\").concat(size, \"-pull-\").concat(sizeProps.pull), sizeProps.pull || sizeProps.pull === 0), _defineProperty(_extends2, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _extends2));\n });\n var classes = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(span), span !== undefined), _defineProperty(_classNames, \"\".concat(prefixCls, \"-order-\").concat(order), order), _defineProperty(_classNames, \"\".concat(prefixCls, \"-offset-\").concat(offset), offset), _defineProperty(_classNames, \"\".concat(prefixCls, \"-push-\").concat(push), push), _defineProperty(_classNames, \"\".concat(prefixCls, \"-pull-\").concat(pull), pull), _classNames), className, sizeClassObj);\n var mergedStyle = {};\n // Horizontal gutter use padding\n if (gutter && gutter[0] > 0) {\n var horizontalGutter = gutter[0] / 2;\n mergedStyle.paddingLeft = horizontalGutter;\n mergedStyle.paddingRight = horizontalGutter;\n }\n // Vertical gutter use padding when gap not support\n if (gutter && gutter[1] > 0 && !supportFlexGap) {\n var verticalGutter = gutter[1] / 2;\n mergedStyle.paddingTop = verticalGutter;\n mergedStyle.paddingBottom = verticalGutter;\n }\n if (flex) {\n mergedStyle.flex = parseFlex(flex);\n // Hack for Firefox to avoid size issue\n // https://github.com/ant-design/ant-design/pull/20023#issuecomment-564389553\n if (wrap === false && !mergedStyle.minWidth) {\n mergedStyle.minWidth = 0;\n }\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, others, {\n style: _extends(_extends({}, mergedStyle), style),\n className: classes,\n ref: ref\n }), children);\n});\nif (process.env.NODE_ENV !== 'production') {\n Col.displayName = 'Col';\n}\nexport default Col;","import { useEffect, useRef } from 'react';\nimport useForceUpdate from '../../_util/hooks/useForceUpdate';\nimport ResponsiveObserve from '../../_util/responsiveObserve';\nfunction useBreakpoint() {\n var refreshOnChange = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var screensRef = useRef({});\n var forceUpdate = useForceUpdate();\n useEffect(function () {\n var token = ResponsiveObserve.subscribe(function (supportScreens) {\n screensRef.current = supportScreens;\n if (refreshOnChange) {\n forceUpdate();\n }\n });\n return function () {\n return ResponsiveObserve.unsubscribe(token);\n };\n }, []);\n return screensRef.current;\n}\nexport default useBreakpoint;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useFlexGapSupport from '../_util/hooks/useFlexGapSupport';\nimport ResponsiveObserve, { responsiveArray } from '../_util/responsiveObserve';\nimport { tuple } from '../_util/type';\nimport RowContext from './RowContext';\nvar RowAligns = tuple('top', 'middle', 'bottom', 'stretch');\nvar RowJustify = tuple('start', 'end', 'center', 'space-around', 'space-between', 'space-evenly');\nfunction useMergePropByScreen(oriProp, screen) {\n var _React$useState = React.useState(typeof oriProp === 'string' ? oriProp : ''),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n prop = _React$useState2[0],\n setProp = _React$useState2[1];\n var clacMergeAlignOrJustify = function clacMergeAlignOrJustify() {\n if (typeof oriProp === 'string') {\n setProp(oriProp);\n }\n if (_typeof(oriProp) !== 'object') {\n return;\n }\n for (var i = 0; i < responsiveArray.length; i++) {\n var breakpoint = responsiveArray[i];\n // if do not match, do nothing\n if (!screen[breakpoint]) continue;\n var curVal = oriProp[breakpoint];\n if (curVal !== undefined) {\n setProp(curVal);\n return;\n }\n }\n };\n React.useEffect(function () {\n clacMergeAlignOrJustify();\n }, [JSON.stringify(oriProp), screen]);\n return prop;\n}\nvar Row = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var customizePrefixCls = props.prefixCls,\n justify = props.justify,\n align = props.align,\n className = props.className,\n style = props.style,\n children = props.children,\n _props$gutter = props.gutter,\n gutter = _props$gutter === void 0 ? 0 : _props$gutter,\n wrap = props.wrap,\n others = __rest(props, [\"prefixCls\", \"justify\", \"align\", \"className\", \"style\", \"children\", \"gutter\", \"wrap\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var _React$useState3 = React.useState({\n xs: true,\n sm: true,\n md: true,\n lg: true,\n xl: true,\n xxl: true\n }),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n screens = _React$useState4[0],\n setScreens = _React$useState4[1];\n // to save screens info when responsiveObserve callback had been call\n var _React$useState5 = React.useState({\n xs: false,\n sm: false,\n md: false,\n lg: false,\n xl: false,\n xxl: false\n }),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n curScreens = _React$useState6[0],\n setCurScreens = _React$useState6[1];\n // ================================== calc reponsive data ==================================\n var mergeAlign = useMergePropByScreen(align, curScreens);\n var mergeJustify = useMergePropByScreen(justify, curScreens);\n var supportFlexGap = useFlexGapSupport();\n var gutterRef = React.useRef(gutter);\n // ================================== Effect ==================================\n React.useEffect(function () {\n var token = ResponsiveObserve.subscribe(function (screen) {\n setCurScreens(screen);\n var currentGutter = gutterRef.current || 0;\n if (!Array.isArray(currentGutter) && _typeof(currentGutter) === 'object' || Array.isArray(currentGutter) && (_typeof(currentGutter[0]) === 'object' || _typeof(currentGutter[1]) === 'object')) {\n setScreens(screen);\n }\n });\n return function () {\n return ResponsiveObserve.unsubscribe(token);\n };\n }, []);\n // ================================== Render ==================================\n var getGutter = function getGutter() {\n var results = [undefined, undefined];\n var normalizedGutter = Array.isArray(gutter) ? gutter : [gutter, undefined];\n normalizedGutter.forEach(function (g, index) {\n if (_typeof(g) === 'object') {\n for (var i = 0; i < responsiveArray.length; i++) {\n var breakpoint = responsiveArray[i];\n if (screens[breakpoint] && g[breakpoint] !== undefined) {\n results[index] = g[breakpoint];\n break;\n }\n }\n } else {\n results[index] = g;\n }\n });\n return results;\n };\n var prefixCls = getPrefixCls('row', customizePrefixCls);\n var gutters = getGutter();\n var classes = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-no-wrap\"), wrap === false), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(mergeJustify), mergeJustify), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(mergeAlign), mergeAlign), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n // Add gutter related style\n var rowStyle = {};\n var horizontalGutter = gutters[0] != null && gutters[0] > 0 ? gutters[0] / -2 : undefined;\n var verticalGutter = gutters[1] != null && gutters[1] > 0 ? gutters[1] / -2 : undefined;\n if (horizontalGutter) {\n rowStyle.marginLeft = horizontalGutter;\n rowStyle.marginRight = horizontalGutter;\n }\n if (supportFlexGap) {\n // Set gap direct if flex gap support\n var _gutters = _slicedToArray(gutters, 2);\n rowStyle.rowGap = _gutters[1];\n } else if (verticalGutter) {\n rowStyle.marginTop = verticalGutter;\n rowStyle.marginBottom = verticalGutter;\n }\n // \"gutters\" is a new array in each rendering phase, it'll make 'React.useMemo' effectless.\n // So we deconstruct \"gutters\" variable here.\n var _gutters2 = _slicedToArray(gutters, 2),\n gutterH = _gutters2[0],\n gutterV = _gutters2[1];\n var rowContext = React.useMemo(function () {\n return {\n gutter: [gutterH, gutterV],\n wrap: wrap,\n supportFlexGap: supportFlexGap\n };\n }, [gutterH, gutterV, wrap, supportFlexGap]);\n return /*#__PURE__*/React.createElement(RowContext.Provider, {\n value: rowContext\n }, /*#__PURE__*/React.createElement(\"div\", _extends({}, others, {\n className: classes,\n style: _extends(_extends({}, rowStyle), style),\n ref: ref\n }), children));\n});\nif (process.env.NODE_ENV !== 'production') {\n Row.displayName = 'Row';\n}\nexport default Row;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"visible\", \"onVisibleChange\", \"getContainer\", \"current\", \"countRender\"];\nimport * as React from 'react';\nimport { useState } from 'react';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport Preview from \"./Preview\";\n\n/* istanbul ignore next */\nexport var context = /*#__PURE__*/React.createContext({\n previewUrls: new Map(),\n setPreviewUrls: function setPreviewUrls() {\n return null;\n },\n current: null,\n setCurrent: function setCurrent() {\n return null;\n },\n setShowPreview: function setShowPreview() {\n return null;\n },\n setMousePosition: function setMousePosition() {\n return null;\n },\n registerImage: function registerImage() {\n return function () {\n return null;\n };\n },\n rootClassName: ''\n});\nvar Provider = context.Provider;\n\nvar Group = function Group(_ref) {\n var _ref$previewPrefixCls = _ref.previewPrefixCls,\n previewPrefixCls = _ref$previewPrefixCls === void 0 ? 'rc-image-preview' : _ref$previewPrefixCls,\n children = _ref.children,\n _ref$icons = _ref.icons,\n icons = _ref$icons === void 0 ? {} : _ref$icons,\n preview = _ref.preview;\n\n var _ref2 = _typeof(preview) === 'object' ? preview : {},\n _ref2$visible = _ref2.visible,\n previewVisible = _ref2$visible === void 0 ? undefined : _ref2$visible,\n _ref2$onVisibleChange = _ref2.onVisibleChange,\n onPreviewVisibleChange = _ref2$onVisibleChange === void 0 ? undefined : _ref2$onVisibleChange,\n _ref2$getContainer = _ref2.getContainer,\n getContainer = _ref2$getContainer === void 0 ? undefined : _ref2$getContainer,\n _ref2$current = _ref2.current,\n currentIndex = _ref2$current === void 0 ? 0 : _ref2$current,\n _ref2$countRender = _ref2.countRender,\n countRender = _ref2$countRender === void 0 ? undefined : _ref2$countRender,\n dialogProps = _objectWithoutProperties(_ref2, _excluded);\n\n var _useState = useState(new Map()),\n _useState2 = _slicedToArray(_useState, 2),\n previewUrls = _useState2[0],\n setPreviewUrls = _useState2[1];\n\n var _useState3 = useState(),\n _useState4 = _slicedToArray(_useState3, 2),\n current = _useState4[0],\n setCurrent = _useState4[1];\n\n var _useMergedState = useMergedState(!!previewVisible, {\n value: previewVisible,\n onChange: onPreviewVisibleChange\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n isShowPreview = _useMergedState2[0],\n setShowPreview = _useMergedState2[1];\n\n var _useState5 = useState(null),\n _useState6 = _slicedToArray(_useState5, 2),\n mousePosition = _useState6[0],\n setMousePosition = _useState6[1];\n\n var isControlled = previewVisible !== undefined;\n var previewUrlsKeys = Array.from(previewUrls.keys());\n var currentControlledKey = previewUrlsKeys[currentIndex];\n var canPreviewUrls = new Map(Array.from(previewUrls).filter(function (_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n canPreview = _ref4[1].canPreview;\n\n return !!canPreview;\n }).map(function (_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n id = _ref6[0],\n url = _ref6[1].url;\n\n return [id, url];\n }));\n\n var registerImage = function registerImage(id, url) {\n var canPreview = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n var unRegister = function unRegister() {\n setPreviewUrls(function (oldPreviewUrls) {\n var clonePreviewUrls = new Map(oldPreviewUrls);\n var deleteResult = clonePreviewUrls.delete(id);\n return deleteResult ? clonePreviewUrls : oldPreviewUrls;\n });\n };\n\n setPreviewUrls(function (oldPreviewUrls) {\n return new Map(oldPreviewUrls).set(id, {\n url: url,\n canPreview: canPreview\n });\n });\n return unRegister;\n };\n\n var onPreviewClose = function onPreviewClose(e) {\n e.stopPropagation();\n setShowPreview(false);\n setMousePosition(null);\n };\n\n React.useEffect(function () {\n setCurrent(currentControlledKey);\n }, [currentControlledKey]);\n React.useEffect(function () {\n if (!isShowPreview && isControlled) {\n setCurrent(currentControlledKey);\n }\n }, [currentControlledKey, isControlled, isShowPreview]);\n return /*#__PURE__*/React.createElement(Provider, {\n value: {\n isPreviewGroup: true,\n previewUrls: canPreviewUrls,\n setPreviewUrls: setPreviewUrls,\n current: current,\n setCurrent: setCurrent,\n setShowPreview: setShowPreview,\n setMousePosition: setMousePosition,\n registerImage: registerImage\n }\n }, children, /*#__PURE__*/React.createElement(Preview, _extends({\n \"aria-hidden\": !isShowPreview,\n visible: isShowPreview,\n prefixCls: previewPrefixCls,\n onClose: onPreviewClose,\n mousePosition: mousePosition,\n src: canPreviewUrls.get(current),\n icons: icons,\n getContainer: getContainer,\n countRender: countRender\n }, dialogProps)));\n};\n\nexport default Group;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classnames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport Portal from '@rc-component/portal';\nimport { MIN_SCALE, MAX_SCALE } from \"./previewConfig\";\n\nvar Operations = function Operations(props) {\n var _countRender;\n\n var visible = props.visible,\n maskTransitionName = props.maskTransitionName,\n getContainer = props.getContainer,\n prefixCls = props.prefixCls,\n rootClassName = props.rootClassName,\n icons = props.icons,\n countRender = props.countRender,\n showSwitch = props.showSwitch,\n showProgress = props.showProgress,\n current = props.current,\n count = props.count,\n scale = props.scale,\n onSwitchLeft = props.onSwitchLeft,\n onSwitchRight = props.onSwitchRight,\n onClose = props.onClose,\n onZoomIn = props.onZoomIn,\n onZoomOut = props.onZoomOut,\n onRotateRight = props.onRotateRight,\n onRotateLeft = props.onRotateLeft;\n var rotateLeft = icons.rotateLeft,\n rotateRight = icons.rotateRight,\n zoomIn = icons.zoomIn,\n zoomOut = icons.zoomOut,\n close = icons.close,\n left = icons.left,\n right = icons.right;\n var toolClassName = \"\".concat(prefixCls, \"-operations-operation\");\n var iconClassName = \"\".concat(prefixCls, \"-operations-icon\");\n var tools = [{\n icon: close,\n onClick: onClose,\n type: 'close'\n }, {\n icon: zoomIn,\n onClick: onZoomIn,\n type: 'zoomIn',\n disabled: scale === MAX_SCALE\n }, {\n icon: zoomOut,\n onClick: onZoomOut,\n type: 'zoomOut',\n disabled: scale === MIN_SCALE\n }, {\n icon: rotateRight,\n onClick: onRotateRight,\n type: 'rotateRight'\n }, {\n icon: rotateLeft,\n onClick: onRotateLeft,\n type: 'rotateLeft'\n }];\n var operations = /*#__PURE__*/React.createElement(React.Fragment, null, showSwitch && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(\"\".concat(prefixCls, \"-switch-left\"), _defineProperty({}, \"\".concat(prefixCls, \"-switch-left-disabled\"), current === 0)),\n onClick: onSwitchLeft\n }, left), /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(\"\".concat(prefixCls, \"-switch-right\"), _defineProperty({}, \"\".concat(prefixCls, \"-switch-right-disabled\"), current === count - 1)),\n onClick: onSwitchRight\n }, right)), /*#__PURE__*/React.createElement(\"ul\", {\n className: \"\".concat(prefixCls, \"-operations\")\n }, showProgress && /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls, \"-operations-progress\")\n }, (_countRender = countRender === null || countRender === void 0 ? void 0 : countRender(current + 1, count)) !== null && _countRender !== void 0 ? _countRender : \"\".concat(current + 1, \" / \").concat(count)), tools.map(function (_ref) {\n var _classnames3;\n\n var icon = _ref.icon,\n onClick = _ref.onClick,\n type = _ref.type,\n disabled = _ref.disabled;\n return /*#__PURE__*/React.createElement(\"li\", {\n className: classnames(toolClassName, (_classnames3 = {}, _defineProperty(_classnames3, \"\".concat(prefixCls, \"-operations-operation-\").concat(type), true), _defineProperty(_classnames3, \"\".concat(prefixCls, \"-operations-operation-disabled\"), !!disabled), _classnames3)),\n onClick: onClick,\n key: type\n }, /*#__PURE__*/React.isValidElement(icon) ? /*#__PURE__*/React.cloneElement(icon, {\n className: iconClassName\n }) : icon);\n })));\n return /*#__PURE__*/React.createElement(CSSMotion, {\n visible: visible,\n motionName: maskTransitionName\n }, function (_ref2) {\n var className = _ref2.className,\n style = _ref2.style;\n return /*#__PURE__*/React.createElement(Portal, {\n open: true,\n getContainer: getContainer !== null && getContainer !== void 0 ? getContainer : document.body\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(\"\".concat(prefixCls, \"-operations-wrapper\"), className, rootClassName),\n style: style\n }, operations));\n });\n};\n\nexport default Operations;","/** Minimum scale */\nexport var MIN_SCALE = 1;\n/** Maximum Scale */\n\nexport var MAX_SCALE = 50;\n/** Scale the ratio base */\n\nexport var BASE_SCALE_RATIO = 1;\n/** The maximum zoom ratio when the mouse zooms in, adjustable */\n\nexport var WHEEL_MAX_SCALE_RATIO = 0.2;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useState, useRef } from 'react';\nimport raf from \"rc-util/es/raf\";\nimport { getClientSize } from \"rc-util/es/Dom/css\";\nimport { MIN_SCALE, MAX_SCALE } from \"../previewConfig\";\nvar initialTransform = {\n x: 0,\n y: 0,\n rotate: 0,\n scale: 1\n};\nexport default function useImageTransform(imgRef) {\n var frame = useRef(null);\n var queue = useRef([]);\n\n var _useState = useState(initialTransform),\n _useState2 = _slicedToArray(_useState, 2),\n transform = _useState2[0],\n setTransform = _useState2[1];\n\n var resetTransform = function resetTransform() {\n setTransform(initialTransform);\n };\n /** Direct update transform */\n\n\n var updateTransform = function updateTransform(newTransform) {\n if (frame.current === null) {\n queue.current = [];\n frame.current = raf(function () {\n setTransform(function (preState) {\n var memoState = preState;\n queue.current.forEach(function (queueState) {\n memoState = _objectSpread(_objectSpread({}, memoState), queueState);\n });\n frame.current = null;\n return memoState;\n });\n });\n }\n\n queue.current.push(_objectSpread(_objectSpread({}, transform), newTransform));\n };\n /** Scale according to the position of clientX and clientY */\n\n\n var dispatchZoonChange = function dispatchZoonChange(ratio, clientX, clientY) {\n var _imgRef$current = imgRef.current,\n width = _imgRef$current.width,\n height = _imgRef$current.height,\n offsetWidth = _imgRef$current.offsetWidth,\n offsetHeight = _imgRef$current.offsetHeight,\n offsetLeft = _imgRef$current.offsetLeft,\n offsetTop = _imgRef$current.offsetTop;\n var newRatio = ratio;\n var newScale = transform.scale * ratio;\n\n if (newScale > MAX_SCALE) {\n newRatio = MAX_SCALE / transform.scale;\n newScale = MAX_SCALE;\n } else if (newScale < MIN_SCALE) {\n newRatio = MIN_SCALE / transform.scale;\n newScale = MIN_SCALE;\n }\n /** Default center point scaling */\n\n\n var mergedClientX = clientX !== null && clientX !== void 0 ? clientX : innerWidth / 2;\n var mergedClientY = clientY !== null && clientY !== void 0 ? clientY : innerHeight / 2;\n var diffRatio = newRatio - 1;\n /** Deviation calculated from image size */\n\n var diffImgX = diffRatio * width * 0.5;\n var diffImgY = diffRatio * height * 0.5;\n /** The difference between the click position and the edge of the document */\n\n var diffOffsetLeft = diffRatio * (mergedClientX - transform.x - offsetLeft);\n var diffOffsetTop = diffRatio * (mergedClientY - transform.y - offsetTop);\n /** Final positioning */\n\n var newX = transform.x - (diffOffsetLeft - diffImgX);\n var newY = transform.y - (diffOffsetTop - diffImgY);\n /**\n * When zooming the image\n * When the image size is smaller than the width and height of the window, the position is initialized\n */\n\n if (ratio < 1 && newScale === 1) {\n var mergedWidth = offsetWidth * newScale;\n var mergedHeight = offsetHeight * newScale;\n\n var _getClientSize = getClientSize(),\n clientWidth = _getClientSize.width,\n clientHeight = _getClientSize.height;\n\n if (mergedWidth <= clientWidth && mergedHeight <= clientHeight) {\n newX = 0;\n newY = 0;\n }\n }\n\n updateTransform({\n x: newX,\n y: newY,\n scale: newScale\n });\n };\n\n return {\n transform: transform,\n resetTransform: resetTransform,\n updateTransform: updateTransform,\n dispatchZoonChange: dispatchZoonChange\n };\n}\n;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { getClientSize } from \"rc-util/es/Dom/css\";\n\nfunction fixPoint(key, start, width, clientWidth) {\n var startAddWidth = start + width;\n var offsetStart = (width - clientWidth) / 2;\n\n if (width > clientWidth) {\n if (start > 0) {\n return _defineProperty({}, key, offsetStart);\n }\n\n if (start < 0 && startAddWidth < clientWidth) {\n return _defineProperty({}, key, -offsetStart);\n }\n } else if (start < 0 || startAddWidth > clientWidth) {\n return _defineProperty({}, key, start < 0 ? offsetStart : -offsetStart);\n }\n\n return {};\n}\n/**\n * Fix positon x,y point when\n *\n * Ele width && height < client\n * - Back origin\n *\n * - Ele width | height > clientWidth | clientHeight\n * - left | top > 0 -> Back 0\n * - left | top + width | height < clientWidth | clientHeight -> Back left | top + width | height === clientWidth | clientHeight\n *\n * Regardless of other\n */\n\n\nexport default function getFixScaleEleTransPosition(width, height, left, top) {\n var _getClientSize = getClientSize(),\n clientWidth = _getClientSize.width,\n clientHeight = _getClientSize.height;\n\n var fixPos = null;\n\n if (width <= clientWidth && height <= clientHeight) {\n fixPos = {\n x: 0,\n y: 0\n };\n } else if (width > clientWidth || height > clientHeight) {\n fixPos = _objectSpread(_objectSpread({}, fixPoint('x', left, width, clientWidth)), fixPoint('y', top, height, clientHeight));\n }\n\n return fixPos;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"src\", \"alt\", \"onClose\", \"afterClose\", \"visible\", \"icons\", \"rootClassName\", \"getContainer\", \"countRender\", \"scaleStep\", \"transitionName\", \"maskTransitionName\"];\nimport React, { useState, useEffect, useCallback, useRef, useContext } from 'react';\nimport Dialog from 'rc-dialog';\nimport classnames from 'classnames';\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport { warning } from \"rc-util/es/warning\";\nimport { context } from \"./PreviewGroup\";\nimport Operations from \"./Operations\";\nimport useImageTransform from \"./hooks/useImageTransform\";\nimport getFixScaleEleTransPosition from \"./getFixScaleEleTransPosition\";\nimport { BASE_SCALE_RATIO, WHEEL_MAX_SCALE_RATIO } from \"./previewConfig\";\n\nvar Preview = function Preview(props) {\n var prefixCls = props.prefixCls,\n src = props.src,\n alt = props.alt,\n onClose = props.onClose,\n afterClose = props.afterClose,\n visible = props.visible,\n _props$icons = props.icons,\n icons = _props$icons === void 0 ? {} : _props$icons,\n rootClassName = props.rootClassName,\n getContainer = props.getContainer,\n countRender = props.countRender,\n _props$scaleStep = props.scaleStep,\n scaleStep = _props$scaleStep === void 0 ? 0.5 : _props$scaleStep,\n _props$transitionName = props.transitionName,\n transitionName = _props$transitionName === void 0 ? 'zoom' : _props$transitionName,\n _props$maskTransition = props.maskTransitionName,\n maskTransitionName = _props$maskTransition === void 0 ? 'fade' : _props$maskTransition,\n restProps = _objectWithoutProperties(props, _excluded);\n\n var imgRef = useRef();\n var downPositionRef = useRef({\n deltaX: 0,\n deltaY: 0,\n transformX: 0,\n transformY: 0\n });\n\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n isMoving = _useState2[0],\n setMoving = _useState2[1];\n\n var _useContext = useContext(context),\n previewUrls = _useContext.previewUrls,\n current = _useContext.current,\n isPreviewGroup = _useContext.isPreviewGroup,\n setCurrent = _useContext.setCurrent;\n\n var previewGroupCount = previewUrls.size;\n var previewUrlsKeys = Array.from(previewUrls.keys());\n var currentPreviewIndex = previewUrlsKeys.indexOf(current);\n var combinationSrc = isPreviewGroup ? previewUrls.get(current) : src;\n var showLeftOrRightSwitches = isPreviewGroup && previewGroupCount > 1;\n var showOperationsProgress = isPreviewGroup && previewGroupCount >= 1;\n\n var _useImageTransform = useImageTransform(imgRef),\n transform = _useImageTransform.transform,\n resetTransform = _useImageTransform.resetTransform,\n updateTransform = _useImageTransform.updateTransform,\n dispatchZoonChange = _useImageTransform.dispatchZoonChange;\n\n var rotate = transform.rotate,\n scale = transform.scale;\n var wrapClassName = classnames(_defineProperty({}, \"\".concat(prefixCls, \"-moving\"), isMoving));\n\n var onAfterClose = function onAfterClose() {\n resetTransform();\n };\n\n var onZoomIn = function onZoomIn() {\n dispatchZoonChange(BASE_SCALE_RATIO + scaleStep);\n };\n\n var onZoomOut = function onZoomOut() {\n dispatchZoonChange(BASE_SCALE_RATIO - scaleStep);\n };\n\n var onRotateRight = function onRotateRight() {\n updateTransform({\n rotate: rotate + 90\n });\n };\n\n var onRotateLeft = function onRotateLeft() {\n updateTransform({\n rotate: rotate - 90\n });\n };\n\n var onSwitchLeft = function onSwitchLeft(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (currentPreviewIndex > 0) {\n setCurrent(previewUrlsKeys[currentPreviewIndex - 1]);\n }\n };\n\n var onSwitchRight = function onSwitchRight(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (currentPreviewIndex < previewGroupCount - 1) {\n setCurrent(previewUrlsKeys[currentPreviewIndex + 1]);\n }\n };\n\n var onMouseUp = function onMouseUp() {\n if (visible && isMoving) {\n setMoving(false);\n /** No need to restore the position when the picture is not moved, So as not to interfere with the click */\n\n var _downPositionRef$curr = downPositionRef.current,\n transformX = _downPositionRef$curr.transformX,\n transformY = _downPositionRef$curr.transformY;\n var hasChangedPosition = transform.x !== transformX && transform.y !== transformY;\n\n if (!hasChangedPosition) {\n return;\n }\n\n var width = imgRef.current.offsetWidth * scale;\n var height = imgRef.current.offsetHeight * scale; // eslint-disable-next-line @typescript-eslint/no-shadow\n\n var _imgRef$current$getBo = imgRef.current.getBoundingClientRect(),\n left = _imgRef$current$getBo.left,\n top = _imgRef$current$getBo.top;\n\n var isRotate = rotate % 180 !== 0;\n var fixState = getFixScaleEleTransPosition(isRotate ? height : width, isRotate ? width : height, left, top);\n\n if (fixState) {\n updateTransform(_objectSpread({}, fixState));\n }\n }\n };\n\n var onMouseDown = function onMouseDown(event) {\n // Only allow main button\n if (event.button !== 0) return;\n event.preventDefault();\n event.stopPropagation();\n downPositionRef.current = {\n deltaX: event.pageX - transform.x,\n deltaY: event.pageY - transform.y,\n transformX: transform.x,\n transformY: transform.y\n };\n setMoving(true);\n };\n\n var onMouseMove = function onMouseMove(event) {\n if (visible && isMoving) {\n updateTransform({\n x: event.pageX - downPositionRef.current.deltaX,\n y: event.pageY - downPositionRef.current.deltaY\n });\n }\n };\n\n var onWheel = function onWheel(event) {\n if (!visible || event.deltaY == 0) return; // Scale ratio depends on the deltaY size\n\n var scaleRatio = Math.abs(event.deltaY / 100); // Limit the maximum scale ratio\n\n var mergedScaleRatio = Math.min(scaleRatio, WHEEL_MAX_SCALE_RATIO); // Scale the ratio each time\n\n var ratio = BASE_SCALE_RATIO + mergedScaleRatio * scaleStep;\n\n if (event.deltaY > 0) {\n ratio = BASE_SCALE_RATIO / ratio;\n }\n\n dispatchZoonChange(ratio, event.clientX, event.clientY);\n };\n\n var onKeyDown = useCallback(function (event) {\n if (!visible || !showLeftOrRightSwitches) return;\n\n if (event.keyCode === KeyCode.LEFT) {\n if (currentPreviewIndex > 0) {\n setCurrent(previewUrlsKeys[currentPreviewIndex - 1]);\n }\n } else if (event.keyCode === KeyCode.RIGHT) {\n if (currentPreviewIndex < previewGroupCount - 1) {\n setCurrent(previewUrlsKeys[currentPreviewIndex + 1]);\n }\n }\n }, [currentPreviewIndex, previewGroupCount, previewUrlsKeys, setCurrent, showLeftOrRightSwitches, visible]);\n\n var onDoubleClick = function onDoubleClick(event) {\n if (visible) {\n if (scale !== 1) {\n updateTransform({\n x: 0,\n y: 0,\n scale: 1\n });\n } else {\n dispatchZoonChange(BASE_SCALE_RATIO + scaleStep, event.clientX, event.clientY);\n }\n }\n };\n\n useEffect(function () {\n var onTopMouseUpListener;\n var onTopMouseMoveListener;\n var onMouseUpListener = addEventListener(window, 'mouseup', onMouseUp, false);\n var onMouseMoveListener = addEventListener(window, 'mousemove', onMouseMove, false);\n var onKeyDownListener = addEventListener(window, 'keydown', onKeyDown, false);\n\n try {\n // Resolve if in iframe lost event\n\n /* istanbul ignore next */\n if (window.top !== window.self) {\n onTopMouseUpListener = addEventListener(window.top, 'mouseup', onMouseUp, false);\n onTopMouseMoveListener = addEventListener(window.top, 'mousemove', onMouseMove, false);\n }\n } catch (error) {\n /* istanbul ignore next */\n warning(false, \"[rc-image] \".concat(error));\n }\n\n return function () {\n var _onTopMouseUpListener, _onTopMouseMoveListen;\n\n onMouseUpListener.remove();\n onMouseMoveListener.remove();\n onKeyDownListener.remove();\n /* istanbul ignore next */\n\n (_onTopMouseUpListener = onTopMouseUpListener) === null || _onTopMouseUpListener === void 0 ? void 0 : _onTopMouseUpListener.remove();\n /* istanbul ignore next */\n\n (_onTopMouseMoveListen = onTopMouseMoveListener) === null || _onTopMouseMoveListen === void 0 ? void 0 : _onTopMouseMoveListen.remove();\n };\n }, [visible, isMoving, onKeyDown]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Dialog, _extends({\n transitionName: transitionName,\n maskTransitionName: maskTransitionName,\n closable: false,\n keyboard: true,\n prefixCls: prefixCls,\n onClose: onClose,\n afterClose: onAfterClose,\n visible: visible,\n wrapClassName: wrapClassName,\n rootClassName: rootClassName,\n getContainer: getContainer\n }, restProps), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-img-wrapper\")\n }, /*#__PURE__*/React.createElement(\"img\", {\n width: props.width,\n height: props.height,\n onWheel: onWheel,\n onMouseDown: onMouseDown,\n onDoubleClick: onDoubleClick,\n ref: imgRef,\n className: \"\".concat(prefixCls, \"-img\"),\n src: combinationSrc,\n alt: alt,\n style: {\n transform: \"translate3d(\".concat(transform.x, \"px, \").concat(transform.y, \"px, 0) scale3d(\").concat(scale, \", \").concat(scale, \", 1) rotate(\").concat(rotate, \"deg)\")\n }\n }))), /*#__PURE__*/React.createElement(Operations, {\n visible: visible,\n maskTransitionName: maskTransitionName,\n getContainer: getContainer,\n prefixCls: prefixCls,\n rootClassName: rootClassName,\n icons: icons,\n countRender: countRender,\n showSwitch: showLeftOrRightSwitches,\n showProgress: showOperationsProgress,\n current: currentPreviewIndex,\n count: previewGroupCount,\n scale: scale,\n onSwitchLeft: onSwitchLeft,\n onSwitchRight: onSwitchRight,\n onZoomIn: onZoomIn,\n onZoomOut: onZoomOut,\n onRotateRight: onRotateRight,\n onRotateLeft: onRotateLeft,\n onClose: onClose\n }));\n};\n\nexport default Preview;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"src\", \"alt\", \"onPreviewClose\", \"prefixCls\", \"previewPrefixCls\", \"placeholder\", \"fallback\", \"width\", \"height\", \"style\", \"preview\", \"className\", \"onClick\", \"onError\", \"wrapperClassName\", \"wrapperStyle\", \"rootClassName\", \"crossOrigin\", \"decoding\", \"loading\", \"referrerPolicy\", \"sizes\", \"srcSet\", \"useMap\", \"draggable\"],\n _excluded2 = [\"src\", \"visible\", \"onVisibleChange\", \"getContainer\", \"mask\", \"maskClassName\", \"icons\", \"scaleStep\"];\nimport * as React from 'react';\nimport { useState } from 'react';\nimport cn from 'classnames';\nimport { getOffset } from \"rc-util/es/Dom/css\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport Preview from \"./Preview\";\nimport PreviewGroup, { context } from \"./PreviewGroup\";\nvar uuid = 0;\n\nvar ImageInternal = function ImageInternal(_ref) {\n var _imgCommonProps$style;\n\n var imgSrc = _ref.src,\n alt = _ref.alt,\n onInitialPreviewClose = _ref.onPreviewClose,\n _ref$prefixCls = _ref.prefixCls,\n prefixCls = _ref$prefixCls === void 0 ? 'rc-image' : _ref$prefixCls,\n _ref$previewPrefixCls = _ref.previewPrefixCls,\n previewPrefixCls = _ref$previewPrefixCls === void 0 ? \"\".concat(prefixCls, \"-preview\") : _ref$previewPrefixCls,\n placeholder = _ref.placeholder,\n fallback = _ref.fallback,\n width = _ref.width,\n height = _ref.height,\n style = _ref.style,\n _ref$preview = _ref.preview,\n preview = _ref$preview === void 0 ? true : _ref$preview,\n className = _ref.className,\n onClick = _ref.onClick,\n onImageError = _ref.onError,\n wrapperClassName = _ref.wrapperClassName,\n wrapperStyle = _ref.wrapperStyle,\n rootClassName = _ref.rootClassName,\n crossOrigin = _ref.crossOrigin,\n decoding = _ref.decoding,\n loading = _ref.loading,\n referrerPolicy = _ref.referrerPolicy,\n sizes = _ref.sizes,\n srcSet = _ref.srcSet,\n useMap = _ref.useMap,\n draggable = _ref.draggable,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n\n var isCustomPlaceholder = placeholder && placeholder !== true;\n\n var _ref2 = _typeof(preview) === 'object' ? preview : {},\n previewSrc = _ref2.src,\n _ref2$visible = _ref2.visible,\n previewVisible = _ref2$visible === void 0 ? undefined : _ref2$visible,\n _ref2$onVisibleChange = _ref2.onVisibleChange,\n onPreviewVisibleChange = _ref2$onVisibleChange === void 0 ? onInitialPreviewClose : _ref2$onVisibleChange,\n _ref2$getContainer = _ref2.getContainer,\n getPreviewContainer = _ref2$getContainer === void 0 ? undefined : _ref2$getContainer,\n previewMask = _ref2.mask,\n maskClassName = _ref2.maskClassName,\n icons = _ref2.icons,\n scaleStep = _ref2.scaleStep,\n dialogProps = _objectWithoutProperties(_ref2, _excluded2);\n\n var src = previewSrc !== null && previewSrc !== void 0 ? previewSrc : imgSrc;\n var isControlled = previewVisible !== undefined;\n\n var _useMergedState = useMergedState(!!previewVisible, {\n value: previewVisible,\n onChange: onPreviewVisibleChange\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n isShowPreview = _useMergedState2[0],\n setShowPreview = _useMergedState2[1];\n\n var _useState = useState(isCustomPlaceholder ? 'loading' : 'normal'),\n _useState2 = _slicedToArray(_useState, 2),\n status = _useState2[0],\n setStatus = _useState2[1];\n\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n mousePosition = _useState4[0],\n setMousePosition = _useState4[1];\n\n var isError = status === 'error';\n\n var _React$useContext = React.useContext(context),\n isPreviewGroup = _React$useContext.isPreviewGroup,\n setCurrent = _React$useContext.setCurrent,\n setGroupShowPreview = _React$useContext.setShowPreview,\n setGroupMousePosition = _React$useContext.setMousePosition,\n registerImage = _React$useContext.registerImage;\n\n var _React$useState = React.useState(function () {\n uuid += 1;\n return uuid;\n }),\n _React$useState2 = _slicedToArray(_React$useState, 1),\n currentId = _React$useState2[0];\n\n var canPreview = !!preview;\n var isLoaded = React.useRef(false);\n\n var onLoad = function onLoad() {\n setStatus('normal');\n };\n\n var onError = function onError(e) {\n if (onImageError) {\n onImageError(e);\n }\n\n setStatus('error');\n };\n\n var onPreview = function onPreview(e) {\n if (!isControlled) {\n var _getOffset = getOffset(e.target),\n left = _getOffset.left,\n top = _getOffset.top;\n\n if (isPreviewGroup) {\n setCurrent(currentId);\n setGroupMousePosition({\n x: left,\n y: top\n });\n } else {\n setMousePosition({\n x: left,\n y: top\n });\n }\n }\n\n if (isPreviewGroup) {\n setGroupShowPreview(true);\n } else {\n setShowPreview(true);\n }\n\n if (onClick) onClick(e);\n };\n\n var onPreviewClose = function onPreviewClose(e) {\n e.stopPropagation();\n setShowPreview(false);\n\n if (!isControlled) {\n setMousePosition(null);\n }\n };\n\n var getImgRef = function getImgRef(img) {\n isLoaded.current = false;\n if (status !== 'loading') return;\n\n if (img !== null && img !== void 0 && img.complete && (img.naturalWidth || img.naturalHeight)) {\n isLoaded.current = true;\n onLoad();\n }\n }; // Keep order start\n // Resolve https://github.com/ant-design/ant-design/issues/28881\n // Only need unRegister when component unMount\n\n\n React.useEffect(function () {\n var unRegister = registerImage(currentId, src);\n return unRegister;\n }, []);\n React.useEffect(function () {\n registerImage(currentId, src, canPreview);\n }, [src, canPreview]); // Keep order end\n\n React.useEffect(function () {\n if (isError) {\n setStatus('normal');\n }\n\n if (isCustomPlaceholder && !isLoaded.current) {\n setStatus('loading');\n }\n }, [imgSrc]);\n var wrapperClass = cn(prefixCls, wrapperClassName, rootClassName, _defineProperty({}, \"\".concat(prefixCls, \"-error\"), isError));\n var mergedSrc = isError && fallback ? fallback : src;\n var imgCommonProps = {\n crossOrigin: crossOrigin,\n decoding: decoding,\n draggable: draggable,\n loading: loading,\n referrerPolicy: referrerPolicy,\n sizes: sizes,\n srcSet: srcSet,\n useMap: useMap,\n alt: alt,\n className: cn(\"\".concat(prefixCls, \"-img\"), _defineProperty({}, \"\".concat(prefixCls, \"-img-placeholder\"), placeholder === true), className),\n style: _objectSpread({\n height: height\n }, style)\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", _extends({}, otherProps, {\n className: wrapperClass,\n onClick: canPreview ? onPreview : onClick,\n style: _objectSpread({\n width: width,\n height: height\n }, wrapperStyle)\n }), /*#__PURE__*/React.createElement(\"img\", _extends({}, imgCommonProps, {\n ref: getImgRef\n }, isError && fallback ? {\n src: fallback\n } : {\n onLoad: onLoad,\n onError: onError,\n src: imgSrc\n }, {\n width: width,\n height: height\n })), status === 'loading' && /*#__PURE__*/React.createElement(\"div\", {\n \"aria-hidden\": \"true\",\n className: \"\".concat(prefixCls, \"-placeholder\")\n }, placeholder), previewMask && canPreview && /*#__PURE__*/React.createElement(\"div\", {\n className: cn(\"\".concat(prefixCls, \"-mask\"), maskClassName),\n style: {\n display: ((_imgCommonProps$style = imgCommonProps.style) === null || _imgCommonProps$style === void 0 ? void 0 : _imgCommonProps$style.display) === 'none' ? 'none' : undefined\n }\n }, previewMask)), !isPreviewGroup && canPreview && /*#__PURE__*/React.createElement(Preview, _extends({\n \"aria-hidden\": !isShowPreview,\n visible: isShowPreview,\n prefixCls: previewPrefixCls,\n onClose: onPreviewClose,\n mousePosition: mousePosition,\n src: mergedSrc,\n alt: alt,\n getContainer: getPreviewContainer,\n icons: icons,\n scaleStep: scaleStep,\n rootClassName: rootClassName\n }, dialogProps)));\n};\n\nImageInternal.PreviewGroup = PreviewGroup;\nImageInternal.displayName = 'Image';\nexport default ImageInternal;","import Image from \"./Image\";\nexport * from \"./Image\";\nexport default Image;","// This icon file is generated automatically.\nvar RotateLeftOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"defs\", \"attrs\": {}, \"children\": [{ \"tag\": \"style\", \"attrs\": {} }] }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M672 418H144c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32zm-44 402H188V494h440v326z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M819.3 328.5c-78.8-100.7-196-153.6-314.6-154.2l-.2-64c0-6.5-7.6-10.1-12.6-6.1l-128 101c-4 3.1-3.9 9.1 0 12.3L492 318.6c5.1 4 12.7.4 12.6-6.1v-63.9c12.9.1 25.9.9 38.8 2.5 42.1 5.2 82.1 18.2 119 38.7 38.1 21.2 71.2 49.7 98.4 84.3 27.1 34.7 46.7 73.7 58.1 115.8a325.95 325.95 0 016.5 140.9h74.9c14.8-103.6-11.3-213-81-302.3z\" } }] }, \"name\": \"rotate-left\", \"theme\": \"outlined\" };\nexport default RotateLeftOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport RotateLeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/RotateLeftOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar RotateLeftOutlined = function RotateLeftOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: RotateLeftOutlinedSvg\n }));\n};\nRotateLeftOutlined.displayName = 'RotateLeftOutlined';\nexport default /*#__PURE__*/React.forwardRef(RotateLeftOutlined);","// This icon file is generated automatically.\nvar RotateRightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"defs\", \"attrs\": {}, \"children\": [{ \"tag\": \"style\", \"attrs\": {} }] }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M480.5 251.2c13-1.6 25.9-2.4 38.8-2.5v63.9c0 6.5 7.5 10.1 12.6 6.1L660 217.6c4-3.2 4-9.2 0-12.3l-128-101c-5.1-4-12.6-.4-12.6 6.1l-.2 64c-118.6.5-235.8 53.4-314.6 154.2A399.75 399.75 0 00123.5 631h74.9c-.9-5.3-1.7-10.7-2.4-16.1-5.1-42.1-2.1-84.1 8.9-124.8 11.4-42.2 31-81.1 58.1-115.8 27.2-34.7 60.3-63.2 98.4-84.3 37-20.6 76.9-33.6 119.1-38.8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M880 418H352c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32zm-44 402H396V494h440v326z\" } }] }, \"name\": \"rotate-right\", \"theme\": \"outlined\" };\nexport default RotateRightOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport RotateRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/RotateRightOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar RotateRightOutlined = function RotateRightOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: RotateRightOutlinedSvg\n }));\n};\nRotateRightOutlined.displayName = 'RotateRightOutlined';\nexport default /*#__PURE__*/React.forwardRef(RotateRightOutlined);","// This icon file is generated automatically.\nvar ZoomInOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M637 443H519V309c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v134H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h118v134c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V519h118c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z\" } }] }, \"name\": \"zoom-in\", \"theme\": \"outlined\" };\nexport default ZoomInOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport ZoomInOutlinedSvg from \"@ant-design/icons-svg/es/asn/ZoomInOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar ZoomInOutlined = function ZoomInOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: ZoomInOutlinedSvg\n }));\n};\nZoomInOutlined.displayName = 'ZoomInOutlined';\nexport default /*#__PURE__*/React.forwardRef(ZoomInOutlined);","// This icon file is generated automatically.\nvar ZoomOutOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M637 443H325c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h312c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm284 424L775 721c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z\" } }] }, \"name\": \"zoom-out\", \"theme\": \"outlined\" };\nexport default ZoomOutOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport ZoomOutOutlinedSvg from \"@ant-design/icons-svg/es/asn/ZoomOutOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar ZoomOutOutlined = function ZoomOutOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: ZoomOutOutlinedSvg\n }));\n};\nZoomOutOutlined.displayName = 'ZoomOutOutlined';\nexport default /*#__PURE__*/React.forwardRef(ZoomOutOutlined);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport RotateLeftOutlined from \"@ant-design/icons/es/icons/RotateLeftOutlined\";\nimport RotateRightOutlined from \"@ant-design/icons/es/icons/RotateRightOutlined\";\nimport ZoomInOutlined from \"@ant-design/icons/es/icons/ZoomInOutlined\";\nimport ZoomOutOutlined from \"@ant-design/icons/es/icons/ZoomOutOutlined\";\nimport RcImage from 'rc-image';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { getTransitionName } from '../_util/motion';\nexport var icons = {\n rotateLeft: /*#__PURE__*/React.createElement(RotateLeftOutlined, null),\n rotateRight: /*#__PURE__*/React.createElement(RotateRightOutlined, null),\n zoomIn: /*#__PURE__*/React.createElement(ZoomInOutlined, null),\n zoomOut: /*#__PURE__*/React.createElement(ZoomOutOutlined, null),\n close: /*#__PURE__*/React.createElement(CloseOutlined, null),\n left: /*#__PURE__*/React.createElement(LeftOutlined, null),\n right: /*#__PURE__*/React.createElement(RightOutlined, null)\n};\nvar InternalPreviewGroup = function InternalPreviewGroup(_a) {\n var customizePrefixCls = _a.previewPrefixCls,\n preview = _a.preview,\n props = __rest(_a, [\"previewPrefixCls\", \"preview\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('image-preview', customizePrefixCls);\n var rootPrefixCls = getPrefixCls();\n var mergedPreview = React.useMemo(function () {\n if (preview === false) {\n return preview;\n }\n var _preview = _typeof(preview) === 'object' ? preview : {};\n return _extends(_extends({}, _preview), {\n transitionName: getTransitionName(rootPrefixCls, 'zoom', _preview.transitionName),\n maskTransitionName: getTransitionName(rootPrefixCls, 'fade', _preview.maskTransitionName)\n });\n }, [preview]);\n return /*#__PURE__*/React.createElement(RcImage.PreviewGroup, _extends({\n preview: mergedPreview,\n previewPrefixCls: prefixCls,\n icons: icons\n }, props));\n};\nexport default InternalPreviewGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport EyeOutlined from \"@ant-design/icons/es/icons/EyeOutlined\";\nimport RcImage from 'rc-image';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { ConfigContext } from '../config-provider';\nimport defaultLocale from '../locale/en_US';\nimport { getTransitionName } from '../_util/motion';\nimport PreviewGroup, { icons } from './PreviewGroup';\nvar Image = function Image(_a) {\n var customizePrefixCls = _a.prefixCls,\n preview = _a.preview,\n otherProps = __rest(_a, [\"prefixCls\", \"preview\"]);\n var _useContext = useContext(ConfigContext),\n getPrefixCls = _useContext.getPrefixCls,\n _useContext$locale = _useContext.locale,\n contextLocale = _useContext$locale === void 0 ? defaultLocale : _useContext$locale,\n getContextPopupContainer = _useContext.getPopupContainer;\n var prefixCls = getPrefixCls('image', customizePrefixCls);\n var rootPrefixCls = getPrefixCls();\n var imageLocale = contextLocale.Image || defaultLocale.Image;\n var mergedPreview = React.useMemo(function () {\n if (preview === false) {\n return preview;\n }\n var _preview = _typeof(preview) === 'object' ? preview : {};\n var getContainer = _preview.getContainer,\n restPreviewProps = __rest(_preview, [\"getContainer\"]);\n return _extends(_extends({\n mask: /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-mask-info\")\n }, /*#__PURE__*/React.createElement(EyeOutlined, null), imageLocale === null || imageLocale === void 0 ? void 0 : imageLocale.preview),\n icons: icons\n }, restPreviewProps), {\n getContainer: getContainer || getContextPopupContainer,\n transitionName: getTransitionName(rootPrefixCls, 'zoom', _preview.transitionName),\n maskTransitionName: getTransitionName(rootPrefixCls, 'fade', _preview.maskTransitionName)\n });\n }, [preview, imageLocale]);\n return /*#__PURE__*/React.createElement(RcImage, _extends({\n prefixCls: prefixCls,\n preview: mergedPreview\n }, otherProps));\n};\nImage.PreviewGroup = PreviewGroup;\nexport default Image;","export function hasAddon(props) {\n return !!(props.addonBefore || props.addonAfter);\n}\nexport function hasPrefixSuffix(props) {\n return !!(props.prefix || props.suffix || props.allowClear);\n}\nexport function resolveOnChange(target, e, onChange, targetValue) {\n if (!onChange) {\n return;\n }\n\n var event = e;\n\n if (e.type === 'click') {\n // Clone a new target for event.\n // Avoid the following usage, the setQuery method gets the original value.\n //\n // const [query, setQuery] = React.useState('');\n // <Input\n // allowClear\n // value={query}\n // onChange={(e)=> {\n // setQuery((prevStatus) => e.target.value);\n // }}\n // />\n var currentTarget = target.cloneNode(true); // click clear icon\n\n event = Object.create(e, {\n target: {\n value: currentTarget\n },\n currentTarget: {\n value: currentTarget\n }\n });\n currentTarget.value = '';\n onChange(event);\n return;\n } // Trigger by composition event, this means we need force change the input value\n\n\n if (targetValue !== undefined) {\n event = Object.create(e, {\n target: {\n value: target\n },\n currentTarget: {\n value: target\n }\n });\n target.value = targetValue;\n onChange(event);\n return;\n }\n\n onChange(event);\n}\nexport function triggerFocus(element, option) {\n if (!element) return;\n element.focus(option); // Selection content\n\n var _ref = option || {},\n cursor = _ref.cursor;\n\n if (cursor) {\n var len = element.value.length;\n\n switch (cursor) {\n case 'start':\n element.setSelectionRange(0, 0);\n break;\n\n case 'end':\n element.setSelectionRange(len, len);\n break;\n\n default:\n element.setSelectionRange(0, len);\n }\n }\n}\nexport function fixControlledValue(value) {\n if (typeof value === 'undefined' || value === null) {\n return '';\n }\n\n return String(value);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport React, { cloneElement, useRef } from 'react';\nimport classNames from 'classnames';\nimport { hasAddon, hasPrefixSuffix } from \"./utils/commonUtils\";\n\nvar BaseInput = function BaseInput(props) {\n var inputElement = props.inputElement,\n prefixCls = props.prefixCls,\n prefix = props.prefix,\n suffix = props.suffix,\n addonBefore = props.addonBefore,\n addonAfter = props.addonAfter,\n className = props.className,\n style = props.style,\n affixWrapperClassName = props.affixWrapperClassName,\n groupClassName = props.groupClassName,\n wrapperClassName = props.wrapperClassName,\n disabled = props.disabled,\n readOnly = props.readOnly,\n focused = props.focused,\n triggerFocus = props.triggerFocus,\n allowClear = props.allowClear,\n value = props.value,\n handleReset = props.handleReset,\n hidden = props.hidden;\n var containerRef = useRef(null);\n\n var onInputClick = function onInputClick(e) {\n var _containerRef$current;\n\n if ((_containerRef$current = containerRef.current) !== null && _containerRef$current !== void 0 && _containerRef$current.contains(e.target)) {\n triggerFocus === null || triggerFocus === void 0 ? void 0 : triggerFocus();\n }\n }; // ================== Clear Icon ================== //\n\n\n var getClearIcon = function getClearIcon() {\n var _classNames;\n\n if (!allowClear) {\n return null;\n }\n\n var needClear = !disabled && !readOnly && value;\n var clearIconCls = \"\".concat(prefixCls, \"-clear-icon\");\n var iconNode = _typeof(allowClear) === 'object' && allowClear !== null && allowClear !== void 0 && allowClear.clearIcon ? allowClear.clearIcon : '✖';\n return /*#__PURE__*/React.createElement(\"span\", {\n onClick: handleReset // Do not trigger onBlur when clear input\n // https://github.com/ant-design/ant-design/issues/31200\n ,\n onMouseDown: function onMouseDown(e) {\n return e.preventDefault();\n },\n className: classNames(clearIconCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(clearIconCls, \"-hidden\"), !needClear), _defineProperty(_classNames, \"\".concat(clearIconCls, \"-has-suffix\"), !!suffix), _classNames)),\n role: \"button\",\n tabIndex: -1\n }, iconNode);\n };\n\n var element = /*#__PURE__*/cloneElement(inputElement, {\n value: value,\n hidden: hidden\n }); // ================== Prefix & Suffix ================== //\n\n if (hasPrefixSuffix(props)) {\n var _classNames2;\n\n var affixWrapperPrefixCls = \"\".concat(prefixCls, \"-affix-wrapper\");\n var affixWrapperCls = classNames(affixWrapperPrefixCls, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(affixWrapperPrefixCls, \"-disabled\"), disabled), _defineProperty(_classNames2, \"\".concat(affixWrapperPrefixCls, \"-focused\"), focused), _defineProperty(_classNames2, \"\".concat(affixWrapperPrefixCls, \"-readonly\"), readOnly), _defineProperty(_classNames2, \"\".concat(affixWrapperPrefixCls, \"-input-with-clear-btn\"), suffix && allowClear && value), _classNames2), !hasAddon(props) && className, affixWrapperClassName);\n var suffixNode = (suffix || allowClear) && /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-suffix\")\n }, getClearIcon(), suffix);\n element = /*#__PURE__*/React.createElement(\"span\", {\n className: affixWrapperCls,\n style: style,\n hidden: !hasAddon(props) && hidden,\n onClick: onInputClick,\n ref: containerRef\n }, prefix && /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-prefix\")\n }, prefix), /*#__PURE__*/cloneElement(inputElement, {\n style: null,\n value: value,\n hidden: null\n }), suffixNode);\n } // ================== Addon ================== //\n\n\n if (hasAddon(props)) {\n var wrapperCls = \"\".concat(prefixCls, \"-group\");\n var addonCls = \"\".concat(wrapperCls, \"-addon\");\n var mergedWrapperClassName = classNames(\"\".concat(prefixCls, \"-wrapper\"), wrapperCls, wrapperClassName);\n var mergedGroupClassName = classNames(\"\".concat(prefixCls, \"-group-wrapper\"), className, groupClassName); // Need another wrapper for changing display:table to display:inline-block\n // and put style prop in wrapper\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: mergedGroupClassName,\n style: style,\n hidden: hidden\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: mergedWrapperClassName\n }, addonBefore && /*#__PURE__*/React.createElement(\"span\", {\n className: addonCls\n }, addonBefore), /*#__PURE__*/cloneElement(element, {\n style: null,\n hidden: null\n }), addonAfter && /*#__PURE__*/React.createElement(\"span\", {\n className: addonCls\n }, addonAfter)));\n }\n\n return element;\n};\n\nexport default BaseInput;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"autoComplete\", \"onChange\", \"onFocus\", \"onBlur\", \"onPressEnter\", \"onKeyDown\", \"prefixCls\", \"disabled\", \"htmlSize\", \"className\", \"maxLength\", \"suffix\", \"showCount\", \"type\", \"inputClassName\"];\nimport React, { useRef, useState, forwardRef, useImperativeHandle, useEffect } from 'react';\nimport BaseInput from \"./BaseInput\";\nimport omit from \"rc-util/es/omit\";\nimport { fixControlledValue, hasAddon, hasPrefixSuffix, resolveOnChange, triggerFocus } from \"./utils/commonUtils\";\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nvar Input = /*#__PURE__*/forwardRef(function (props, ref) {\n var autoComplete = props.autoComplete,\n onChange = props.onChange,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n onPressEnter = props.onPressEnter,\n onKeyDown = props.onKeyDown,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-input' : _props$prefixCls,\n disabled = props.disabled,\n htmlSize = props.htmlSize,\n className = props.className,\n maxLength = props.maxLength,\n suffix = props.suffix,\n showCount = props.showCount,\n _props$type = props.type,\n type = _props$type === void 0 ? 'text' : _props$type,\n inputClassName = props.inputClassName,\n rest = _objectWithoutProperties(props, _excluded);\n\n var _useMergedState = useMergedState(props.defaultValue, {\n value: props.value\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n value = _useMergedState2[0],\n setValue = _useMergedState2[1];\n\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n focused = _useState2[0],\n setFocused = _useState2[1];\n\n var inputRef = useRef(null);\n\n var focus = function focus(option) {\n if (inputRef.current) {\n triggerFocus(inputRef.current, option);\n }\n };\n\n useImperativeHandle(ref, function () {\n return {\n focus: focus,\n blur: function blur() {\n var _inputRef$current;\n\n (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.blur();\n },\n setSelectionRange: function setSelectionRange(start, end, direction) {\n var _inputRef$current2;\n\n (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.setSelectionRange(start, end, direction);\n },\n select: function select() {\n var _inputRef$current3;\n\n (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 ? void 0 : _inputRef$current3.select();\n },\n input: inputRef.current\n };\n });\n useEffect(function () {\n setFocused(function (prev) {\n return prev && disabled ? false : prev;\n });\n }, [disabled]);\n\n var handleChange = function handleChange(e) {\n if (props.value === undefined) {\n setValue(e.target.value);\n }\n\n if (inputRef.current) {\n resolveOnChange(inputRef.current, e, onChange);\n }\n };\n\n var handleKeyDown = function handleKeyDown(e) {\n if (onPressEnter && e.key === 'Enter') {\n onPressEnter(e);\n }\n\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);\n };\n\n var handleFocus = function handleFocus(e) {\n setFocused(true);\n onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);\n };\n\n var handleBlur = function handleBlur(e) {\n setFocused(false);\n onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);\n };\n\n var handleReset = function handleReset(e) {\n setValue('');\n focus();\n\n if (inputRef.current) {\n resolveOnChange(inputRef.current, e, onChange);\n }\n };\n\n var getInputElement = function getInputElement() {\n // Fix https://fb.me/react-unknown-prop\n var otherProps = omit(props, ['prefixCls', 'onPressEnter', 'addonBefore', 'addonAfter', 'prefix', 'suffix', 'allowClear', // Input elements must be either controlled or uncontrolled,\n // specify either the value prop, or the defaultValue prop, but not both.\n 'defaultValue', 'showCount', 'affixWrapperClassName', 'groupClassName', 'inputClassName', 'wrapperClassName', 'htmlSize']);\n return /*#__PURE__*/React.createElement(\"input\", _extends({\n autoComplete: autoComplete\n }, otherProps, {\n onChange: handleChange,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n className: classNames(prefixCls, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), inputClassName, !hasAddon(props) && !hasPrefixSuffix(props) && className),\n ref: inputRef,\n size: htmlSize,\n type: type\n }));\n };\n\n var getSuffix = function getSuffix() {\n // Max length value\n var hasMaxLength = Number(maxLength) > 0;\n\n if (suffix || showCount) {\n var val = fixControlledValue(value);\n\n var valueLength = _toConsumableArray(val).length;\n\n var dataCount = _typeof(showCount) === 'object' ? showCount.formatter({\n value: val,\n count: valueLength,\n maxLength: maxLength\n }) : \"\".concat(valueLength).concat(hasMaxLength ? \" / \".concat(maxLength) : '');\n return /*#__PURE__*/React.createElement(React.Fragment, null, !!showCount && /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-show-count-suffix\"), _defineProperty({}, \"\".concat(prefixCls, \"-show-count-has-suffix\"), !!suffix))\n }, dataCount), suffix);\n }\n\n return null;\n };\n\n return /*#__PURE__*/React.createElement(BaseInput, _extends({}, rest, {\n prefixCls: prefixCls,\n className: className,\n inputElement: getInputElement(),\n handleReset: handleReset,\n value: fixControlledValue(value),\n focused: focused,\n triggerFocus: focus,\n suffix: getSuffix(),\n disabled: disabled\n }));\n});\nexport default Input;","import BaseInput from \"./BaseInput\";\nimport Input from \"./Input\";\nexport { BaseInput };\nexport default Input;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport classNames from 'classnames';\nimport RcInput from 'rc-input';\nimport { composeRef } from \"rc-util/es/ref\";\nimport React, { forwardRef, useContext, useEffect, useRef } from 'react';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport SizeContext from '../config-provider/SizeContext';\nimport { FormItemInputContext, NoFormStyle } from '../form/context';\nimport { NoCompactStyle, useCompactItemContext } from '../space/Compact';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport warning from '../_util/warning';\nimport useRemovePasswordTimeout from './hooks/useRemovePasswordTimeout';\nimport { hasPrefixSuffix } from './utils';\nexport function fixControlledValue(value) {\n if (typeof value === 'undefined' || value === null) {\n return '';\n }\n return String(value);\n}\nexport function resolveOnChange(target, e, onChange, targetValue) {\n if (!onChange) {\n return;\n }\n var event = e;\n if (e.type === 'click') {\n // Clone a new target for event.\n // Avoid the following usage, the setQuery method gets the original value.\n //\n // const [query, setQuery] = React.useState('');\n // <Input\n // allowClear\n // value={query}\n // onChange={(e)=> {\n // setQuery((prevStatus) => e.target.value);\n // }}\n // />\n var currentTarget = target.cloneNode(true);\n // click clear icon\n event = Object.create(e, {\n target: {\n value: currentTarget\n },\n currentTarget: {\n value: currentTarget\n }\n });\n currentTarget.value = '';\n onChange(event);\n return;\n }\n // Trigger by composition event, this means we need force change the input value\n if (targetValue !== undefined) {\n event = Object.create(e, {\n target: {\n value: target\n },\n currentTarget: {\n value: target\n }\n });\n target.value = targetValue;\n onChange(event);\n return;\n }\n onChange(event);\n}\nexport function triggerFocus(element, option) {\n if (!element) {\n return;\n }\n element.focus(option);\n // Selection content\n var _ref = option || {},\n cursor = _ref.cursor;\n if (cursor) {\n var len = element.value.length;\n switch (cursor) {\n case 'start':\n element.setSelectionRange(0, 0);\n break;\n case 'end':\n element.setSelectionRange(len, len);\n break;\n default:\n element.setSelectionRange(0, len);\n break;\n }\n }\n}\nvar Input = /*#__PURE__*/forwardRef(function (props, ref) {\n var _classNames, _classNames2, _classNames4;\n var customizePrefixCls = props.prefixCls,\n _props$bordered = props.bordered,\n bordered = _props$bordered === void 0 ? true : _props$bordered,\n customStatus = props.status,\n customSize = props.size,\n customDisabled = props.disabled,\n onBlur = props.onBlur,\n onFocus = props.onFocus,\n suffix = props.suffix,\n allowClear = props.allowClear,\n addonAfter = props.addonAfter,\n addonBefore = props.addonBefore,\n className = props.className,\n onChange = props.onChange,\n rest = __rest(props, [\"prefixCls\", \"bordered\", \"status\", \"size\", \"disabled\", \"onBlur\", \"onFocus\", \"suffix\", \"allowClear\", \"addonAfter\", \"addonBefore\", \"className\", \"onChange\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n input = _React$useContext.input;\n var prefixCls = getPrefixCls('input', customizePrefixCls);\n var inputRef = useRef(null);\n // ===================== Compact Item =====================\n var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n compactSize = _useCompactItemContex.compactSize,\n compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n // ===================== Size =====================\n var size = React.useContext(SizeContext);\n var mergedSize = compactSize || customSize || size;\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n // ===================== Status =====================\n var _useContext = useContext(FormItemInputContext),\n contextStatus = _useContext.status,\n hasFeedback = _useContext.hasFeedback,\n feedbackIcon = _useContext.feedbackIcon;\n var mergedStatus = getMergedStatus(contextStatus, customStatus);\n // ===================== Focus warning =====================\n var inputHasPrefixSuffix = hasPrefixSuffix(props) || !!hasFeedback;\n var prevHasPrefixSuffix = useRef(inputHasPrefixSuffix);\n useEffect(function () {\n var _a;\n if (inputHasPrefixSuffix && !prevHasPrefixSuffix.current) {\n process.env.NODE_ENV !== \"production\" ? warning(document.activeElement === ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.input), 'Input', \"When Input is focused, dynamic add or remove prefix / suffix will make it lose focus caused by dom structure change. Read more: https://ant.design/components/input/#FAQ\") : void 0;\n }\n prevHasPrefixSuffix.current = inputHasPrefixSuffix;\n }, [inputHasPrefixSuffix]);\n // ===================== Remove Password value =====================\n var removePasswordTimeout = useRemovePasswordTimeout(inputRef, true);\n var handleBlur = function handleBlur(e) {\n removePasswordTimeout();\n onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);\n };\n var handleFocus = function handleFocus(e) {\n removePasswordTimeout();\n onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);\n };\n var handleChange = function handleChange(e) {\n removePasswordTimeout();\n onChange === null || onChange === void 0 ? void 0 : onChange(e);\n };\n var suffixNode = (hasFeedback || suffix) && /*#__PURE__*/React.createElement(React.Fragment, null, suffix, hasFeedback && feedbackIcon);\n // Allow clear\n var mergedAllowClear;\n if (_typeof(allowClear) === 'object' && (allowClear === null || allowClear === void 0 ? void 0 : allowClear.clearIcon)) {\n mergedAllowClear = allowClear;\n } else if (allowClear) {\n mergedAllowClear = {\n clearIcon: /*#__PURE__*/React.createElement(CloseCircleFilled, null)\n };\n }\n return /*#__PURE__*/React.createElement(RcInput, _extends({\n ref: composeRef(ref, inputRef),\n prefixCls: prefixCls,\n autoComplete: input === null || input === void 0 ? void 0 : input.autoComplete\n }, rest, {\n disabled: mergedDisabled || undefined,\n onBlur: handleBlur,\n onFocus: handleFocus,\n suffix: suffixNode,\n allowClear: mergedAllowClear,\n className: classNames(className, compactItemClassnames),\n onChange: handleChange,\n addonAfter: addonAfter && /*#__PURE__*/React.createElement(NoCompactStyle, null, /*#__PURE__*/React.createElement(NoFormStyle, {\n override: true,\n status: true\n }, addonAfter)),\n addonBefore: addonBefore && /*#__PURE__*/React.createElement(NoCompactStyle, null, /*#__PURE__*/React.createElement(NoFormStyle, {\n override: true,\n status: true\n }, addonBefore)),\n inputClassName: classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), mergedSize === 'small'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), mergedSize === 'large'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-borderless\"), !bordered), _classNames), !inputHasPrefixSuffix && getStatusClassNames(prefixCls, mergedStatus)),\n affixWrapperClassName: classNames((_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-affix-wrapper-sm\"), mergedSize === 'small'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-affix-wrapper-lg\"), mergedSize === 'large'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-affix-wrapper-rtl\"), direction === 'rtl'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-affix-wrapper-borderless\"), !bordered), _classNames2), getStatusClassNames(\"\".concat(prefixCls, \"-affix-wrapper\"), mergedStatus, hasFeedback)),\n wrapperClassName: classNames(_defineProperty({}, \"\".concat(prefixCls, \"-group-rtl\"), direction === 'rtl')),\n groupClassName: classNames((_classNames4 = {}, _defineProperty(_classNames4, \"\".concat(prefixCls, \"-group-wrapper-sm\"), mergedSize === 'small'), _defineProperty(_classNames4, \"\".concat(prefixCls, \"-group-wrapper-lg\"), mergedSize === 'large'), _defineProperty(_classNames4, \"\".concat(prefixCls, \"-group-wrapper-rtl\"), direction === 'rtl'), _classNames4), getStatusClassNames(\"\".concat(prefixCls, \"-group-wrapper\"), mergedStatus, hasFeedback))\n }));\n});\nexport default Input;","// eslint-disable-next-line import/prefer-default-export\nexport function hasPrefixSuffix(props) {\n return !!(props.prefix || props.suffix || props.allowClear);\n}","// Thanks to https://github.com/andreypopp/react-textarea-autosize/\n/**\n * calculateNodeHeight(uiTextNode, useCache = false)\n */\nvar HIDDEN_TEXTAREA_STYLE = \"\\n min-height:0 !important;\\n max-height:none !important;\\n height:0 !important;\\n visibility:hidden !important;\\n overflow:hidden !important;\\n position:absolute !important;\\n z-index:-1000 !important;\\n top:0 !important;\\n right:0 !important;\\n pointer-events: none !important;\\n\";\nvar SIZING_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'font-variant', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing', 'word-break'];\nvar computedStyleCache = {};\nvar hiddenTextarea;\nexport function calculateNodeStyling(node) {\n var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var nodeRef = node.getAttribute('id') || node.getAttribute('data-reactid') || node.getAttribute('name');\n if (useCache && computedStyleCache[nodeRef]) {\n return computedStyleCache[nodeRef];\n }\n var style = window.getComputedStyle(node);\n var boxSizing = style.getPropertyValue('box-sizing') || style.getPropertyValue('-moz-box-sizing') || style.getPropertyValue('-webkit-box-sizing');\n var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));\n var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));\n var sizingStyle = SIZING_STYLE.map(function (name) {\n return \"\".concat(name, \":\").concat(style.getPropertyValue(name));\n }).join(';');\n var nodeInfo = {\n sizingStyle: sizingStyle,\n paddingSize: paddingSize,\n borderSize: borderSize,\n boxSizing: boxSizing\n };\n if (useCache && nodeRef) {\n computedStyleCache[nodeRef] = nodeInfo;\n }\n return nodeInfo;\n}\nexport default function calculateAutoSizeStyle(uiTextNode) {\n var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var minRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var maxRows = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n hiddenTextarea.setAttribute('tab-index', '-1');\n hiddenTextarea.setAttribute('aria-hidden', 'true');\n document.body.appendChild(hiddenTextarea);\n }\n // Fix wrap=\"off\" issue\n // https://github.com/ant-design/ant-design/issues/6577\n if (uiTextNode.getAttribute('wrap')) {\n hiddenTextarea.setAttribute('wrap', uiTextNode.getAttribute('wrap'));\n } else {\n hiddenTextarea.removeAttribute('wrap');\n }\n // Copy all CSS properties that have an impact on the height of the content in\n // the textbox\n var _calculateNodeStyling = calculateNodeStyling(uiTextNode, useCache),\n paddingSize = _calculateNodeStyling.paddingSize,\n borderSize = _calculateNodeStyling.borderSize,\n boxSizing = _calculateNodeStyling.boxSizing,\n sizingStyle = _calculateNodeStyling.sizingStyle;\n // Need to have the overflow attribute to hide the scrollbar otherwise\n // text-lines will not calculated properly as the shadow will technically be\n // narrower for content\n hiddenTextarea.setAttribute('style', \"\".concat(sizingStyle, \";\").concat(HIDDEN_TEXTAREA_STYLE));\n hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || '';\n var minHeight = undefined;\n var maxHeight = undefined;\n var overflowY;\n var height = hiddenTextarea.scrollHeight;\n if (boxSizing === 'border-box') {\n // border-box: add border, since height = content + padding + border\n height += borderSize;\n } else if (boxSizing === 'content-box') {\n // remove padding, since height = content\n height -= paddingSize;\n }\n if (minRows !== null || maxRows !== null) {\n // measure height of a textarea with a single row\n hiddenTextarea.value = ' ';\n var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n if (minRows !== null) {\n minHeight = singleRowHeight * minRows;\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n }\n if (maxRows !== null) {\n maxHeight = singleRowHeight * maxRows;\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n overflowY = height > maxHeight ? '' : 'hidden';\n height = Math.min(maxHeight, height);\n }\n }\n var style = {\n height: height,\n overflowY: overflowY,\n resize: 'none'\n };\n if (minHeight) {\n style.minHeight = minHeight;\n }\n if (maxHeight) {\n style.maxHeight = maxHeight;\n }\n return style;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"onPressEnter\", \"defaultValue\", \"value\", \"autoSize\", \"onResize\", \"className\", \"style\", \"disabled\", \"onChange\", \"onInternalAutoSize\"];\nimport * as React from 'react';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport raf from \"rc-util/es/raf\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport classNames from 'classnames';\nimport calculateAutoSizeStyle from './calculateNodeHeight';\nvar RESIZE_START = 0;\nvar RESIZE_MEASURING = 1;\nvar RESIZE_STABLE = 2;\nvar ResizableTextArea = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-textarea' : _props$prefixCls,\n onPressEnter = props.onPressEnter,\n defaultValue = props.defaultValue,\n value = props.value,\n autoSize = props.autoSize,\n onResize = props.onResize,\n className = props.className,\n style = props.style,\n disabled = props.disabled,\n onChange = props.onChange,\n onInternalAutoSize = props.onInternalAutoSize,\n restProps = _objectWithoutProperties(props, _excluded);\n // =============================== Value ================================\n var _useMergedState = useMergedState(defaultValue, {\n value: value,\n postState: function postState(val) {\n return val !== null && val !== void 0 ? val : '';\n }\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedValue = _useMergedState2[0],\n setMergedValue = _useMergedState2[1];\n var onInternalChange = function onInternalChange(event) {\n setMergedValue(event.target.value);\n onChange === null || onChange === void 0 ? void 0 : onChange(event);\n };\n // ================================ Ref =================================\n var textareaRef = React.useRef();\n React.useImperativeHandle(ref, function () {\n return {\n textArea: textareaRef.current\n };\n });\n // ============================== AutoSize ==============================\n var _React$useMemo = React.useMemo(function () {\n if (autoSize && _typeof(autoSize) === 'object') {\n return [autoSize.minRows, autoSize.maxRows];\n }\n return [];\n }, [autoSize]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n minRows = _React$useMemo2[0],\n maxRows = _React$useMemo2[1];\n var needAutoSize = !!autoSize;\n // =============================== Scroll ===============================\n // https://github.com/ant-design/ant-design/issues/21870\n var fixFirefoxAutoScroll = function fixFirefoxAutoScroll() {\n try {\n // FF has bug with jump of scroll to top. We force back here.\n if (document.activeElement === textareaRef.current) {\n var _textareaRef$current = textareaRef.current,\n selectionStart = _textareaRef$current.selectionStart,\n selectionEnd = _textareaRef$current.selectionEnd,\n scrollTop = _textareaRef$current.scrollTop;\n // Fix Safari bug which not rollback when break line\n // This makes Chinese IME can't input. Do not fix this\n // const { value: tmpValue } = textareaRef.current;\n // textareaRef.current.value = '';\n // textareaRef.current.value = tmpValue;\n textareaRef.current.setSelectionRange(selectionStart, selectionEnd);\n textareaRef.current.scrollTop = scrollTop;\n }\n } catch (e) {\n // Fix error in Chrome:\n // Failed to read the 'selectionStart' property from 'HTMLInputElement'\n // http://stackoverflow.com/q/21177489/3040605\n }\n };\n // =============================== Resize ===============================\n var _React$useState = React.useState(RESIZE_STABLE),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n resizeState = _React$useState2[0],\n setResizeState = _React$useState2[1];\n var _React$useState3 = React.useState(),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n autoSizeStyle = _React$useState4[0],\n setAutoSizeStyle = _React$useState4[1];\n var startResize = function startResize() {\n setResizeState(RESIZE_START);\n if (process.env.NODE_ENV === 'test') {\n onInternalAutoSize === null || onInternalAutoSize === void 0 ? void 0 : onInternalAutoSize();\n }\n };\n // Change to trigger resize measure\n useLayoutEffect(function () {\n if (needAutoSize) {\n startResize();\n }\n }, [value, minRows, maxRows, needAutoSize]);\n useLayoutEffect(function () {\n if (resizeState === RESIZE_START) {\n setResizeState(RESIZE_MEASURING);\n } else if (resizeState === RESIZE_MEASURING) {\n var textareaStyles = calculateAutoSizeStyle(textareaRef.current, false, minRows, maxRows);\n // Safari has bug that text will keep break line on text cut when it's prev is break line.\n // ZombieJ: This not often happen. So we just skip it.\n // const { selectionStart, selectionEnd, scrollTop } = textareaRef.current;\n // const { value: tmpValue } = textareaRef.current;\n // textareaRef.current.value = '';\n // textareaRef.current.value = tmpValue;\n // if (document.activeElement === textareaRef.current) {\n // textareaRef.current.scrollTop = scrollTop;\n // textareaRef.current.setSelectionRange(selectionStart, selectionEnd);\n // }\n setResizeState(RESIZE_STABLE);\n setAutoSizeStyle(textareaStyles);\n } else {\n fixFirefoxAutoScroll();\n }\n }, [resizeState]);\n // We lock resize trigger by raf to avoid Safari warning\n var resizeRafRef = React.useRef();\n var cleanRaf = function cleanRaf() {\n raf.cancel(resizeRafRef.current);\n };\n var onInternalResize = function onInternalResize(size) {\n if (resizeState === RESIZE_STABLE) {\n onResize === null || onResize === void 0 ? void 0 : onResize(size);\n if (autoSize) {\n cleanRaf();\n resizeRafRef.current = raf(function () {\n startResize();\n });\n }\n }\n };\n React.useEffect(function () {\n return cleanRaf;\n }, []);\n // =============================== Render ===============================\n var mergedAutoSizeStyle = needAutoSize ? autoSizeStyle : null;\n var mergedStyle = _objectSpread(_objectSpread({}, style), mergedAutoSizeStyle);\n if (resizeState === RESIZE_START || resizeState === RESIZE_MEASURING) {\n mergedStyle.overflowY = 'hidden';\n mergedStyle.overflowX = 'hidden';\n }\n return /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onInternalResize,\n disabled: !(autoSize || onResize)\n }, /*#__PURE__*/React.createElement(\"textarea\", _extends({}, restProps, {\n ref: textareaRef,\n style: mergedStyle,\n className: classNames(prefixCls, className, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled)),\n disabled: disabled,\n value: mergedValue,\n onChange: onInternalChange\n })));\n});\nexport default ResizableTextArea;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport ResizableTextArea from './ResizableTextArea';\nvar TextArea = /*#__PURE__*/function (_React$Component) {\n _inherits(TextArea, _React$Component);\n var _super = _createSuper(TextArea);\n function TextArea(props) {\n var _this;\n _classCallCheck(this, TextArea);\n _this = _super.call(this, props);\n _this.resizableTextArea = void 0;\n _this.focus = function () {\n _this.resizableTextArea.textArea.focus();\n };\n _this.saveTextArea = function (resizableTextArea) {\n _this.resizableTextArea = resizableTextArea;\n };\n _this.handleChange = function (e) {\n var onChange = _this.props.onChange;\n _this.setValue(e.target.value);\n if (onChange) {\n onChange(e);\n }\n };\n _this.handleKeyDown = function (e) {\n var _this$props = _this.props,\n onPressEnter = _this$props.onPressEnter,\n onKeyDown = _this$props.onKeyDown;\n if (e.keyCode === 13 && onPressEnter) {\n onPressEnter(e);\n }\n if (onKeyDown) {\n onKeyDown(e);\n }\n };\n var value = typeof props.value === 'undefined' || props.value === null ? props.defaultValue : props.value;\n _this.state = {\n value: value\n };\n return _this;\n }\n _createClass(TextArea, [{\n key: \"setValue\",\n value: function setValue(value, callback) {\n if (!('value' in this.props)) {\n this.setState({\n value: value\n }, callback);\n }\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.resizableTextArea.textArea.blur();\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(ResizableTextArea, _extends({}, this.props, {\n value: this.state.value,\n onKeyDown: this.handleKeyDown,\n onChange: this.handleChange,\n ref: this.saveTextArea\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps) {\n if ('value' in nextProps) {\n return {\n value: nextProps.value\n };\n }\n return null;\n }\n }]);\n return TextArea;\n}(React.Component);\nexport { ResizableTextArea };\nexport default TextArea;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { FormItemInputContext } from '../form/context';\nimport { cloneElement } from '../_util/reactNode';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport { tuple } from '../_util/type';\nvar ClearableInputType = tuple('text', 'input');\nfunction hasAddon(props) {\n return !!(props.addonBefore || props.addonAfter);\n}\nvar ClearableLabeledInput = /*#__PURE__*/function (_React$Component) {\n _inherits(ClearableLabeledInput, _React$Component);\n var _super = _createSuper(ClearableLabeledInput);\n function ClearableLabeledInput() {\n _classCallCheck(this, ClearableLabeledInput);\n return _super.apply(this, arguments);\n }\n _createClass(ClearableLabeledInput, [{\n key: \"renderClearIcon\",\n value: function renderClearIcon(prefixCls) {\n var _classNames;\n var _this$props = this.props,\n value = _this$props.value,\n disabled = _this$props.disabled,\n readOnly = _this$props.readOnly,\n handleReset = _this$props.handleReset,\n suffix = _this$props.suffix;\n var needClear = !disabled && !readOnly && value;\n var className = \"\".concat(prefixCls, \"-clear-icon\");\n return /*#__PURE__*/React.createElement(CloseCircleFilled, {\n onClick: handleReset,\n // Do not trigger onBlur when clear input\n // https://github.com/ant-design/ant-design/issues/31200\n onMouseDown: function onMouseDown(e) {\n return e.preventDefault();\n },\n className: classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(className, \"-hidden\"), !needClear), _defineProperty(_classNames, \"\".concat(className, \"-has-suffix\"), !!suffix), _classNames), className),\n role: \"button\"\n });\n }\n }, {\n key: \"renderTextAreaWithClearIcon\",\n value: function renderTextAreaWithClearIcon(prefixCls, element, statusContext) {\n var _classNames2;\n var _this$props2 = this.props,\n value = _this$props2.value,\n allowClear = _this$props2.allowClear,\n className = _this$props2.className,\n focused = _this$props2.focused,\n style = _this$props2.style,\n direction = _this$props2.direction,\n bordered = _this$props2.bordered,\n hidden = _this$props2.hidden,\n customStatus = _this$props2.status;\n var contextStatus = statusContext.status,\n hasFeedback = statusContext.hasFeedback;\n if (!allowClear) {\n return cloneElement(element, {\n value: value\n });\n }\n var affixWrapperCls = classNames(\"\".concat(prefixCls, \"-affix-wrapper\"), \"\".concat(prefixCls, \"-affix-wrapper-textarea-with-clear-btn\"), getStatusClassNames(\"\".concat(prefixCls, \"-affix-wrapper\"), getMergedStatus(contextStatus, customStatus), hasFeedback), (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-affix-wrapper-focused\"), focused), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-affix-wrapper-rtl\"), direction === 'rtl'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-affix-wrapper-borderless\"), !bordered), _defineProperty(_classNames2, \"\".concat(className), !hasAddon(this.props) && className), _classNames2));\n return /*#__PURE__*/React.createElement(\"span\", {\n className: affixWrapperCls,\n style: style,\n hidden: hidden\n }, cloneElement(element, {\n style: null,\n value: value\n }), this.renderClearIcon(prefixCls));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this = this;\n return /*#__PURE__*/React.createElement(FormItemInputContext.Consumer, null, function (statusContext) {\n var _this$props3 = _this.props,\n prefixCls = _this$props3.prefixCls,\n inputType = _this$props3.inputType,\n element = _this$props3.element;\n if (inputType === ClearableInputType[0]) {\n return _this.renderTextAreaWithClearIcon(prefixCls, element, statusContext);\n }\n });\n }\n }]);\n return ClearableLabeledInput;\n}(React.Component);\nexport default ClearableLabeledInput;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport RcTextArea from 'rc-textarea';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport SizeContext from '../config-provider/SizeContext';\nimport { FormItemInputContext } from '../form/context';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport ClearableLabeledInput from './ClearableLabeledInput';\nimport { fixControlledValue, resolveOnChange, triggerFocus } from './Input';\nfunction fixEmojiLength(value, maxLength) {\n return _toConsumableArray(value || '').slice(0, maxLength).join('');\n}\nfunction setTriggerValue(isCursorInEnd, preValue, triggerValue, maxLength) {\n var newTriggerValue = triggerValue;\n if (isCursorInEnd) {\n // 光标在尾部,直接截断\n newTriggerValue = fixEmojiLength(triggerValue, maxLength);\n } else if (_toConsumableArray(preValue || '').length < triggerValue.length && _toConsumableArray(triggerValue || '').length > maxLength) {\n // 光标在中间,如果最后的值超过最大值,则采用原先的值\n newTriggerValue = preValue;\n }\n return newTriggerValue;\n}\nvar TextArea = /*#__PURE__*/React.forwardRef(function (_a, ref) {\n var _classNames;\n var customizePrefixCls = _a.prefixCls,\n _a$bordered = _a.bordered,\n bordered = _a$bordered === void 0 ? true : _a$bordered,\n _a$showCount = _a.showCount,\n showCount = _a$showCount === void 0 ? false : _a$showCount,\n maxLength = _a.maxLength,\n className = _a.className,\n style = _a.style,\n customizeSize = _a.size,\n customDisabled = _a.disabled,\n onCompositionStart = _a.onCompositionStart,\n onCompositionEnd = _a.onCompositionEnd,\n onChange = _a.onChange,\n onFocus = _a.onFocus,\n onBlur = _a.onBlur,\n customStatus = _a.status,\n props = __rest(_a, [\"prefixCls\", \"bordered\", \"showCount\", \"maxLength\", \"className\", \"style\", \"size\", \"disabled\", \"onCompositionStart\", \"onCompositionEnd\", \"onChange\", \"onFocus\", \"onBlur\", \"status\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var size = React.useContext(SizeContext);\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n var _React$useContext2 = React.useContext(FormItemInputContext),\n contextStatus = _React$useContext2.status,\n hasFeedback = _React$useContext2.hasFeedback,\n isFormItemInput = _React$useContext2.isFormItemInput,\n feedbackIcon = _React$useContext2.feedbackIcon;\n var mergedStatus = getMergedStatus(contextStatus, customStatus);\n var innerRef = React.useRef(null);\n var clearableInputRef = React.useRef(null);\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n compositing = _React$useState2[0],\n setCompositing = _React$useState2[1];\n var _React$useState3 = React.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n focused = _React$useState4[0],\n setFocused = _React$useState4[1];\n var oldCompositionValueRef = React.useRef();\n var oldSelectionStartRef = React.useRef(0);\n var _useMergedState = useMergedState(props.defaultValue, {\n value: props.value\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n value = _useMergedState2[0],\n setValue = _useMergedState2[1];\n var hidden = props.hidden;\n var handleSetValue = function handleSetValue(val, callback) {\n if (props.value === undefined) {\n setValue(val);\n callback === null || callback === void 0 ? void 0 : callback();\n }\n };\n // =========================== Value Update ===========================\n // Max length value\n var hasMaxLength = Number(maxLength) > 0;\n var onInternalCompositionStart = function onInternalCompositionStart(e) {\n setCompositing(true);\n // 拼音输入前保存一份旧值\n oldCompositionValueRef.current = value;\n // 保存旧的光标位置\n oldSelectionStartRef.current = e.currentTarget.selectionStart;\n onCompositionStart === null || onCompositionStart === void 0 ? void 0 : onCompositionStart(e);\n };\n var onInternalCompositionEnd = function onInternalCompositionEnd(e) {\n var _a;\n setCompositing(false);\n var triggerValue = e.currentTarget.value;\n if (hasMaxLength) {\n var isCursorInEnd = oldSelectionStartRef.current >= maxLength + 1 || oldSelectionStartRef.current === ((_a = oldCompositionValueRef.current) === null || _a === void 0 ? void 0 : _a.length);\n triggerValue = setTriggerValue(isCursorInEnd, oldCompositionValueRef.current, triggerValue, maxLength);\n }\n // Patch composition onChange when value changed\n if (triggerValue !== value) {\n handleSetValue(triggerValue);\n resolveOnChange(e.currentTarget, e, onChange, triggerValue);\n }\n onCompositionEnd === null || onCompositionEnd === void 0 ? void 0 : onCompositionEnd(e);\n };\n var handleChange = function handleChange(e) {\n var triggerValue = e.target.value;\n if (!compositing && hasMaxLength) {\n // 1. 复制粘贴超过maxlength的情况 2.未超过maxlength的情况\n var isCursorInEnd = e.target.selectionStart >= maxLength + 1 || e.target.selectionStart === triggerValue.length || !e.target.selectionStart;\n triggerValue = setTriggerValue(isCursorInEnd, value, triggerValue, maxLength);\n }\n handleSetValue(triggerValue);\n resolveOnChange(e.currentTarget, e, onChange, triggerValue);\n };\n var handleBlur = function handleBlur(e) {\n setFocused(false);\n onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);\n };\n var handleFocus = function handleFocus(e) {\n setFocused(true);\n onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);\n };\n React.useEffect(function () {\n setFocused(function (prev) {\n return !mergedDisabled && prev;\n });\n }, [mergedDisabled]);\n // ============================== Reset ===============================\n var handleReset = function handleReset(e) {\n var _a, _b, _c;\n handleSetValue('');\n (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n resolveOnChange((_c = (_b = innerRef.current) === null || _b === void 0 ? void 0 : _b.resizableTextArea) === null || _c === void 0 ? void 0 : _c.textArea, e, onChange);\n };\n var prefixCls = getPrefixCls('input', customizePrefixCls);\n React.useImperativeHandle(ref, function () {\n var _a;\n return {\n resizableTextArea: (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.resizableTextArea,\n focus: function focus(option) {\n var _a, _b;\n triggerFocus((_b = (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.resizableTextArea) === null || _b === void 0 ? void 0 : _b.textArea, option);\n },\n blur: function blur() {\n var _a;\n return (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.blur();\n }\n };\n });\n var textArea = /*#__PURE__*/React.createElement(RcTextArea, _extends({}, omit(props, ['allowClear']), {\n disabled: mergedDisabled,\n className: classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-borderless\"), !bordered), _defineProperty(_classNames, className, className && !showCount), _defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), size === 'small' || customizeSize === 'small'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), size === 'large' || customizeSize === 'large'), _classNames), getStatusClassNames(prefixCls, mergedStatus)),\n style: showCount ? {\n resize: style === null || style === void 0 ? void 0 : style.resize\n } : style,\n prefixCls: prefixCls,\n onCompositionStart: onInternalCompositionStart,\n onChange: handleChange,\n onBlur: handleBlur,\n onFocus: handleFocus,\n onCompositionEnd: onInternalCompositionEnd,\n ref: innerRef\n }));\n var val = fixControlledValue(value);\n if (!compositing && hasMaxLength && (props.value === null || props.value === undefined)) {\n // fix #27612 将value转为数组进行截取,解决 '😂'.length === 2 等emoji表情导致的截取乱码的问题\n val = fixEmojiLength(val, maxLength);\n }\n // TextArea\n var textareaNode = /*#__PURE__*/React.createElement(ClearableLabeledInput, _extends({\n disabled: mergedDisabled,\n focused: focused\n }, props, {\n prefixCls: prefixCls,\n direction: direction,\n inputType: \"text\",\n value: val,\n element: textArea,\n handleReset: handleReset,\n ref: clearableInputRef,\n bordered: bordered,\n status: customStatus,\n style: showCount ? undefined : style\n }));\n // Only show text area wrapper when needed\n if (showCount || hasFeedback) {\n var _classNames2;\n var valueLength = _toConsumableArray(val).length;\n var dataCount = '';\n if (_typeof(showCount) === 'object') {\n dataCount = showCount.formatter({\n value: val,\n count: valueLength,\n maxLength: maxLength\n });\n } else {\n dataCount = \"\".concat(valueLength).concat(hasMaxLength ? \" / \".concat(maxLength) : '');\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n hidden: hidden,\n className: classNames(\"\".concat(prefixCls, \"-textarea\"), (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-textarea-rtl\"), direction === 'rtl'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-textarea-show-count\"), showCount), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-textarea-in-form-item\"), isFormItemInput), _classNames2), getStatusClassNames(\"\".concat(prefixCls, \"-textarea\"), mergedStatus, hasFeedback), className),\n style: style,\n \"data-count\": dataCount\n }, textareaNode, hasFeedback && /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-textarea-suffix\")\n }, feedbackIcon));\n }\n return textareaNode;\n});\nexport default TextArea;","import { useEffect, useRef } from 'react';\nexport default function useRemovePasswordTimeout(inputRef, triggerOnMount) {\n var removePasswordTimeoutRef = useRef([]);\n var removePasswordTimeout = function removePasswordTimeout() {\n removePasswordTimeoutRef.current.push(setTimeout(function () {\n var _a, _b, _c, _d;\n if (((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.input) && ((_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.input.getAttribute('type')) === 'password' && ((_c = inputRef.current) === null || _c === void 0 ? void 0 : _c.input.hasAttribute('value'))) {\n (_d = inputRef.current) === null || _d === void 0 ? void 0 : _d.input.removeAttribute('value');\n }\n }));\n };\n useEffect(function () {\n if (triggerOnMount) {\n removePasswordTimeout();\n }\n return function () {\n return removePasswordTimeoutRef.current.forEach(function (timer) {\n if (timer) {\n clearTimeout(timer);\n }\n });\n };\n }, []);\n return removePasswordTimeout;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { FormItemInputContext } from '../form/context';\nvar Group = function Group(props) {\n var _classNames;\n var _useContext = useContext(ConfigContext),\n getPrefixCls = _useContext.getPrefixCls,\n direction = _useContext.direction;\n var customizePrefixCls = props.prefixCls,\n _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className;\n var prefixCls = getPrefixCls('input-group', customizePrefixCls);\n var cls = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), props.size === 'large'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), props.size === 'small'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-compact\"), props.compact), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n var formItemContext = useContext(FormItemInputContext);\n var groupFormItemContext = useMemo(function () {\n return _extends(_extends({}, formItemContext), {\n isFormItemInput: false\n });\n }, [formItemContext]);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: cls,\n style: props.style,\n onMouseEnter: props.onMouseEnter,\n onMouseLeave: props.onMouseLeave,\n onFocus: props.onFocus,\n onBlur: props.onBlur\n }, /*#__PURE__*/React.createElement(FormItemInputContext.Provider, {\n value: groupFormItemContext\n }, props.children));\n};\nexport default Group;","// This icon file is generated automatically.\nvar EyeInvisibleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z\" } }] }, \"name\": \"eye-invisible\", \"theme\": \"outlined\" };\nexport default EyeInvisibleOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport EyeInvisibleOutlinedSvg from \"@ant-design/icons-svg/es/asn/EyeInvisibleOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar EyeInvisibleOutlined = function EyeInvisibleOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: EyeInvisibleOutlinedSvg\n }));\n};\nEyeInvisibleOutlined.displayName = 'EyeInvisibleOutlined';\nexport default /*#__PURE__*/React.forwardRef(EyeInvisibleOutlined);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport EyeInvisibleOutlined from \"@ant-design/icons/es/icons/EyeInvisibleOutlined\";\nimport EyeOutlined from \"@ant-design/icons/es/icons/EyeOutlined\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { ConfigConsumer } from '../config-provider';\nimport useRemovePasswordTimeout from './hooks/useRemovePasswordTimeout';\nimport Input from './Input';\nvar defaultIconRender = function defaultIconRender(visible) {\n return visible ? /*#__PURE__*/React.createElement(EyeOutlined, null) : /*#__PURE__*/React.createElement(EyeInvisibleOutlined, null);\n};\nvar ActionMap = {\n click: 'onClick',\n hover: 'onMouseOver'\n};\nvar Password = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$visibilityTogg = props.visibilityToggle,\n visibilityToggle = _props$visibilityTogg === void 0 ? true : _props$visibilityTogg;\n var visibilityControlled = _typeof(visibilityToggle) === 'object' && visibilityToggle.visible !== undefined;\n var _useState = useState(function () {\n return visibilityControlled ? visibilityToggle.visible : false;\n }),\n _useState2 = _slicedToArray(_useState, 2),\n visible = _useState2[0],\n setVisible = _useState2[1];\n var inputRef = useRef(null);\n React.useEffect(function () {\n if (visibilityControlled) {\n setVisible(visibilityToggle.visible);\n }\n }, [visibilityControlled, visibilityToggle]);\n // Remove Password value\n var removePasswordTimeout = useRemovePasswordTimeout(inputRef);\n var onVisibleChange = function onVisibleChange() {\n var disabled = props.disabled;\n if (disabled) {\n return;\n }\n if (visible) {\n removePasswordTimeout();\n }\n setVisible(function (prevState) {\n var _a;\n var newState = !prevState;\n if (_typeof(visibilityToggle) === 'object') {\n (_a = visibilityToggle.onVisibleChange) === null || _a === void 0 ? void 0 : _a.call(visibilityToggle, newState);\n }\n return newState;\n });\n };\n var getIcon = function getIcon(prefixCls) {\n var _iconProps;\n var _props$action = props.action,\n action = _props$action === void 0 ? 'click' : _props$action,\n _props$iconRender = props.iconRender,\n iconRender = _props$iconRender === void 0 ? defaultIconRender : _props$iconRender;\n var iconTrigger = ActionMap[action] || '';\n var icon = iconRender(visible);\n var iconProps = (_iconProps = {}, _defineProperty(_iconProps, iconTrigger, onVisibleChange), _defineProperty(_iconProps, \"className\", \"\".concat(prefixCls, \"-icon\")), _defineProperty(_iconProps, \"key\", 'passwordIcon'), _defineProperty(_iconProps, \"onMouseDown\", function onMouseDown(e) {\n // Prevent focused state lost\n // https://github.com/ant-design/ant-design/issues/15173\n e.preventDefault();\n }), _defineProperty(_iconProps, \"onMouseUp\", function onMouseUp(e) {\n // Prevent caret position change\n // https://github.com/ant-design/ant-design/issues/23524\n e.preventDefault();\n }), _iconProps);\n return /*#__PURE__*/React.cloneElement( /*#__PURE__*/React.isValidElement(icon) ? icon : /*#__PURE__*/React.createElement(\"span\", null, icon), iconProps);\n };\n var renderPassword = function renderPassword(_ref) {\n var getPrefixCls = _ref.getPrefixCls;\n var className = props.className,\n customizePrefixCls = props.prefixCls,\n customizeInputPrefixCls = props.inputPrefixCls,\n size = props.size,\n restProps = __rest(props, [\"className\", \"prefixCls\", \"inputPrefixCls\", \"size\"]);\n var inputPrefixCls = getPrefixCls('input', customizeInputPrefixCls);\n var prefixCls = getPrefixCls('input-password', customizePrefixCls);\n var suffixIcon = visibilityToggle && getIcon(prefixCls);\n var inputClassName = classNames(prefixCls, className, _defineProperty({}, \"\".concat(prefixCls, \"-\").concat(size), !!size));\n var omittedProps = _extends(_extends({}, omit(restProps, ['suffix', 'iconRender', 'visibilityToggle'])), {\n type: visible ? 'text' : 'password',\n className: inputClassName,\n prefixCls: inputPrefixCls,\n suffix: suffixIcon\n });\n if (size) {\n omittedProps.size = size;\n }\n return /*#__PURE__*/React.createElement(Input, _extends({\n ref: composeRef(ref, inputRef)\n }, omittedProps));\n };\n return /*#__PURE__*/React.createElement(ConfigConsumer, null, renderPassword);\n});\nif (process.env.NODE_ENV !== 'production') {\n Password.displayName = 'Password';\n}\nexport default Password;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport SearchOutlined from \"@ant-design/icons/es/icons/SearchOutlined\";\nimport classNames from 'classnames';\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport Button from '../button';\nimport { ConfigContext } from '../config-provider';\nimport SizeContext from '../config-provider/SizeContext';\nimport { useCompactItemContext } from '../space/Compact';\nimport { cloneElement } from '../_util/reactNode';\nimport Input from './Input';\nvar Search = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var customizePrefixCls = props.prefixCls,\n customizeInputPrefixCls = props.inputPrefixCls,\n className = props.className,\n customizeSize = props.size,\n suffix = props.suffix,\n _props$enterButton = props.enterButton,\n enterButton = _props$enterButton === void 0 ? false : _props$enterButton,\n addonAfter = props.addonAfter,\n loading = props.loading,\n disabled = props.disabled,\n customOnSearch = props.onSearch,\n customOnChange = props.onChange,\n onCompositionStart = props.onCompositionStart,\n onCompositionEnd = props.onCompositionEnd,\n restProps = __rest(props, [\"prefixCls\", \"inputPrefixCls\", \"className\", \"size\", \"suffix\", \"enterButton\", \"addonAfter\", \"loading\", \"disabled\", \"onSearch\", \"onChange\", \"onCompositionStart\", \"onCompositionEnd\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var contextSize = React.useContext(SizeContext);\n var composedRef = React.useRef(false);\n var prefixCls = getPrefixCls('input-search', customizePrefixCls);\n var inputPrefixCls = getPrefixCls('input', customizeInputPrefixCls);\n var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n compactSize = _useCompactItemContex.compactSize;\n var size = compactSize || customizeSize || contextSize;\n var inputRef = React.useRef(null);\n var onChange = function onChange(e) {\n if (e && e.target && e.type === 'click' && customOnSearch) {\n customOnSearch(e.target.value, e);\n }\n if (customOnChange) {\n customOnChange(e);\n }\n };\n var onMouseDown = function onMouseDown(e) {\n var _a;\n if (document.activeElement === ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.input)) {\n e.preventDefault();\n }\n };\n var onSearch = function onSearch(e) {\n var _a, _b;\n if (customOnSearch) {\n customOnSearch((_b = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.input) === null || _b === void 0 ? void 0 : _b.value, e);\n }\n };\n var onPressEnter = function onPressEnter(e) {\n if (composedRef.current || loading) {\n return;\n }\n onSearch(e);\n };\n var searchIcon = typeof enterButton === 'boolean' ? /*#__PURE__*/React.createElement(SearchOutlined, null) : null;\n var btnClassName = \"\".concat(prefixCls, \"-button\");\n var button;\n var enterButtonAsElement = enterButton || {};\n var isAntdButton = enterButtonAsElement.type && enterButtonAsElement.type.__ANT_BUTTON === true;\n if (isAntdButton || enterButtonAsElement.type === 'button') {\n button = cloneElement(enterButtonAsElement, _extends({\n onMouseDown: onMouseDown,\n onClick: function onClick(e) {\n var _a, _b;\n (_b = (_a = enterButtonAsElement === null || enterButtonAsElement === void 0 ? void 0 : enterButtonAsElement.props) === null || _a === void 0 ? void 0 : _a.onClick) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n onSearch(e);\n },\n key: 'enterButton'\n }, isAntdButton ? {\n className: btnClassName,\n size: size\n } : {}));\n } else {\n button = /*#__PURE__*/React.createElement(Button, {\n className: btnClassName,\n type: enterButton ? 'primary' : undefined,\n size: size,\n disabled: disabled,\n key: \"enterButton\",\n onMouseDown: onMouseDown,\n onClick: onSearch,\n loading: loading,\n icon: searchIcon\n }, enterButton);\n }\n if (addonAfter) {\n button = [button, cloneElement(addonAfter, {\n key: 'addonAfter'\n })];\n }\n var cls = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(size), !!size), _defineProperty(_classNames, \"\".concat(prefixCls, \"-with-button\"), !!enterButton), _classNames), className);\n var handleOnCompositionStart = function handleOnCompositionStart(e) {\n composedRef.current = true;\n onCompositionStart === null || onCompositionStart === void 0 ? void 0 : onCompositionStart(e);\n };\n var handleOnCompositionEnd = function handleOnCompositionEnd(e) {\n composedRef.current = false;\n onCompositionEnd === null || onCompositionEnd === void 0 ? void 0 : onCompositionEnd(e);\n };\n return /*#__PURE__*/React.createElement(Input, _extends({\n ref: composeRef(inputRef, ref),\n onPressEnter: onPressEnter\n }, restProps, {\n size: size,\n onCompositionStart: handleOnCompositionStart,\n onCompositionEnd: handleOnCompositionEnd,\n prefixCls: inputPrefixCls,\n addonAfter: button,\n suffix: suffix,\n onChange: onChange,\n className: cls,\n disabled: disabled\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n Search.displayName = 'Search';\n}\nexport default Search;","import Group from './Group';\nimport InternalInput from './Input';\nimport Password from './Password';\nimport Search from './Search';\nimport TextArea from './TextArea';\nvar Input = InternalInput;\nInput.Group = Group;\nInput.Search = Search;\nInput.TextArea = TextArea;\nInput.Password = Password;\nexport default Input;","// This icon file is generated automatically.\nvar BarsOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0z\" } }] }, \"name\": \"bars\", \"theme\": \"outlined\" };\nexport default BarsOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport BarsOutlinedSvg from \"@ant-design/icons-svg/es/asn/BarsOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar BarsOutlined = function BarsOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: BarsOutlinedSvg\n }));\n};\nBarsOutlined.displayName = 'BarsOutlined';\nexport default /*#__PURE__*/React.forwardRef(BarsOutlined);","var isNumeric = function isNumeric(value) {\n return !isNaN(parseFloat(value)) && isFinite(value);\n};\nexport default isNumeric;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport BarsOutlined from \"@ant-design/icons/es/icons/BarsOutlined\";\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { useContext, useEffect, useRef, useState } from 'react';\nimport { ConfigContext } from '../config-provider';\nimport isNumeric from '../_util/isNumeric';\nimport { LayoutContext } from './layout';\nvar dimensionMaxMap = {\n xs: '479.98px',\n sm: '575.98px',\n md: '767.98px',\n lg: '991.98px',\n xl: '1199.98px',\n xxl: '1599.98px'\n};\nexport var SiderContext = /*#__PURE__*/React.createContext({});\nvar generateId = function () {\n var i = 0;\n return function () {\n var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n i += 1;\n return \"\".concat(prefix).concat(i);\n };\n}();\nvar Sider = /*#__PURE__*/React.forwardRef(function (_a, ref) {\n var customizePrefixCls = _a.prefixCls,\n className = _a.className,\n trigger = _a.trigger,\n children = _a.children,\n _a$defaultCollapsed = _a.defaultCollapsed,\n defaultCollapsed = _a$defaultCollapsed === void 0 ? false : _a$defaultCollapsed,\n _a$theme = _a.theme,\n theme = _a$theme === void 0 ? 'dark' : _a$theme,\n _a$style = _a.style,\n style = _a$style === void 0 ? {} : _a$style,\n _a$collapsible = _a.collapsible,\n collapsible = _a$collapsible === void 0 ? false : _a$collapsible,\n _a$reverseArrow = _a.reverseArrow,\n reverseArrow = _a$reverseArrow === void 0 ? false : _a$reverseArrow,\n _a$width = _a.width,\n width = _a$width === void 0 ? 200 : _a$width,\n _a$collapsedWidth = _a.collapsedWidth,\n collapsedWidth = _a$collapsedWidth === void 0 ? 80 : _a$collapsedWidth,\n zeroWidthTriggerStyle = _a.zeroWidthTriggerStyle,\n breakpoint = _a.breakpoint,\n onCollapse = _a.onCollapse,\n onBreakpoint = _a.onBreakpoint,\n props = __rest(_a, [\"prefixCls\", \"className\", \"trigger\", \"children\", \"defaultCollapsed\", \"theme\", \"style\", \"collapsible\", \"reverseArrow\", \"width\", \"collapsedWidth\", \"zeroWidthTriggerStyle\", \"breakpoint\", \"onCollapse\", \"onBreakpoint\"]);\n var _useContext = useContext(LayoutContext),\n siderHook = _useContext.siderHook;\n var _useState = useState('collapsed' in props ? props.collapsed : defaultCollapsed),\n _useState2 = _slicedToArray(_useState, 2),\n collapsed = _useState2[0],\n setCollapsed = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n below = _useState4[0],\n setBelow = _useState4[1];\n useEffect(function () {\n if ('collapsed' in props) {\n setCollapsed(props.collapsed);\n }\n }, [props.collapsed]);\n var handleSetCollapsed = function handleSetCollapsed(value, type) {\n if (!('collapsed' in props)) {\n setCollapsed(value);\n }\n onCollapse === null || onCollapse === void 0 ? void 0 : onCollapse(value, type);\n };\n // ========================= Responsive =========================\n var responsiveHandlerRef = useRef();\n responsiveHandlerRef.current = function (mql) {\n setBelow(mql.matches);\n onBreakpoint === null || onBreakpoint === void 0 ? void 0 : onBreakpoint(mql.matches);\n if (collapsed !== mql.matches) {\n handleSetCollapsed(mql.matches, 'responsive');\n }\n };\n useEffect(function () {\n function responsiveHandler(mql) {\n return responsiveHandlerRef.current(mql);\n }\n var mql;\n if (typeof window !== 'undefined') {\n var _window = window,\n matchMedia = _window.matchMedia;\n if (matchMedia && breakpoint && breakpoint in dimensionMaxMap) {\n mql = matchMedia(\"(max-width: \".concat(dimensionMaxMap[breakpoint], \")\"));\n try {\n mql.addEventListener('change', responsiveHandler);\n } catch (error) {\n mql.addListener(responsiveHandler);\n }\n responsiveHandler(mql);\n }\n }\n return function () {\n try {\n mql === null || mql === void 0 ? void 0 : mql.removeEventListener('change', responsiveHandler);\n } catch (error) {\n mql === null || mql === void 0 ? void 0 : mql.removeListener(responsiveHandler);\n }\n };\n }, [breakpoint]); // in order to accept dynamic 'breakpoint' property, we need to add 'breakpoint' into dependency array.\n useEffect(function () {\n var uniqueId = generateId('ant-sider-');\n siderHook.addSider(uniqueId);\n return function () {\n return siderHook.removeSider(uniqueId);\n };\n }, []);\n var toggle = function toggle() {\n handleSetCollapsed(!collapsed, 'clickTrigger');\n };\n var _useContext2 = useContext(ConfigContext),\n getPrefixCls = _useContext2.getPrefixCls;\n var renderSider = function renderSider() {\n var _classNames;\n var prefixCls = getPrefixCls('layout-sider', customizePrefixCls);\n var divProps = omit(props, ['collapsed']);\n var rawWidth = collapsed ? collapsedWidth : width;\n // use \"px\" as fallback unit for width\n var siderWidth = isNumeric(rawWidth) ? \"\".concat(rawWidth, \"px\") : String(rawWidth);\n // special trigger when collapsedWidth == 0\n var zeroWidthTrigger = parseFloat(String(collapsedWidth || 0)) === 0 ? /*#__PURE__*/React.createElement(\"span\", {\n onClick: toggle,\n className: classNames(\"\".concat(prefixCls, \"-zero-width-trigger\"), \"\".concat(prefixCls, \"-zero-width-trigger-\").concat(reverseArrow ? 'right' : 'left')),\n style: zeroWidthTriggerStyle\n }, trigger || /*#__PURE__*/React.createElement(BarsOutlined, null)) : null;\n var iconObj = {\n expanded: reverseArrow ? /*#__PURE__*/React.createElement(RightOutlined, null) : /*#__PURE__*/React.createElement(LeftOutlined, null),\n collapsed: reverseArrow ? /*#__PURE__*/React.createElement(LeftOutlined, null) : /*#__PURE__*/React.createElement(RightOutlined, null)\n };\n var status = collapsed ? 'collapsed' : 'expanded';\n var defaultTrigger = iconObj[status];\n var triggerDom = trigger !== null ? zeroWidthTrigger || /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-trigger\"),\n onClick: toggle,\n style: {\n width: siderWidth\n }\n }, trigger || defaultTrigger) : null;\n var divStyle = _extends(_extends({}, style), {\n flex: \"0 0 \".concat(siderWidth),\n maxWidth: siderWidth,\n minWidth: siderWidth,\n width: siderWidth\n });\n var siderCls = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(theme), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-collapsed\"), !!collapsed), _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-trigger\"), collapsible && trigger !== null && !zeroWidthTrigger), _defineProperty(_classNames, \"\".concat(prefixCls, \"-below\"), !!below), _defineProperty(_classNames, \"\".concat(prefixCls, \"-zero-width\"), parseFloat(siderWidth) === 0), _classNames), className);\n return /*#__PURE__*/React.createElement(\"aside\", _extends({\n className: siderCls\n }, divProps, {\n style: divStyle,\n ref: ref\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-children\")\n }, children), collapsible || below && zeroWidthTrigger ? triggerDom : null);\n };\n var contextValue = React.useMemo(function () {\n return {\n siderCollapsed: collapsed\n };\n }, [collapsed]);\n return /*#__PURE__*/React.createElement(SiderContext.Provider, {\n value: contextValue\n }, renderSider());\n});\nif (process.env.NODE_ENV !== 'production') {\n Sider.displayName = 'Sider';\n}\nexport default Sider;","import InternalLayout, { Content, Footer, Header } from './layout';\nimport Sider from './Sider';\nvar Layout = InternalLayout;\nLayout.Header = Header;\nLayout.Footer = Footer;\nLayout.Content = Content;\nLayout.Sider = Sider;\nexport default Layout;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nexport var LayoutContext = /*#__PURE__*/React.createContext({\n siderHook: {\n addSider: function addSider() {\n return null;\n },\n removeSider: function removeSider() {\n return null;\n }\n }\n});\nfunction generator(_ref) {\n var suffixCls = _ref.suffixCls,\n tagName = _ref.tagName,\n displayName = _ref.displayName;\n return function (BasicComponent) {\n var Adapter = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var customizePrefixCls = props.prefixCls;\n var prefixCls = getPrefixCls(suffixCls, customizePrefixCls);\n return /*#__PURE__*/React.createElement(BasicComponent, _extends({\n ref: ref,\n prefixCls: prefixCls,\n tagName: tagName\n }, props));\n });\n if (process.env.NODE_ENV !== 'production') {\n Adapter.displayName = displayName;\n }\n return Adapter;\n };\n}\nvar Basic = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n className = props.className,\n children = props.children,\n tagName = props.tagName,\n others = __rest(props, [\"prefixCls\", \"className\", \"children\", \"tagName\"]);\n var classString = classNames(prefixCls, className);\n return /*#__PURE__*/React.createElement(tagName, _extends(_extends({\n className: classString\n }, others), {\n ref: ref\n }), children);\n});\nvar BasicLayout = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var _React$useContext2 = React.useContext(ConfigContext),\n direction = _React$useContext2.direction;\n var _React$useState = React.useState([]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n siders = _React$useState2[0],\n setSiders = _React$useState2[1];\n var prefixCls = props.prefixCls,\n className = props.className,\n children = props.children,\n hasSider = props.hasSider,\n Tag = props.tagName,\n others = __rest(props, [\"prefixCls\", \"className\", \"children\", \"hasSider\", \"tagName\"]);\n var classString = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-sider\"), typeof hasSider === 'boolean' ? hasSider : siders.length > 0), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n var contextValue = React.useMemo(function () {\n return {\n siderHook: {\n addSider: function addSider(id) {\n setSiders(function (prev) {\n return [].concat(_toConsumableArray(prev), [id]);\n });\n },\n removeSider: function removeSider(id) {\n setSiders(function (prev) {\n return prev.filter(function (currentId) {\n return currentId !== id;\n });\n });\n }\n }\n };\n }, []);\n return /*#__PURE__*/React.createElement(LayoutContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Tag, _extends({\n ref: ref,\n className: classString\n }, others), children));\n});\nvar Layout = generator({\n suffixCls: 'layout',\n tagName: 'section',\n displayName: 'Layout'\n})(BasicLayout);\nvar Header = generator({\n suffixCls: 'layout-header',\n tagName: 'header',\n displayName: 'Header'\n})(Basic);\nvar Footer = generator({\n suffixCls: 'layout-footer',\n tagName: 'footer',\n displayName: 'Footer'\n})(Basic);\nvar Content = generator({\n suffixCls: 'layout-content',\n tagName: 'main',\n displayName: 'Content'\n})(Basic);\nexport { Header, Footer, Content };\nexport default Layout;","import locale from '../locale/default';\nexport default locale;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport LocaleContext from './context';\nimport defaultLocaleData from './default';\nvar LocaleReceiver = function LocaleReceiver(props) {\n var _props$componentName = props.componentName,\n componentName = _props$componentName === void 0 ? 'global' : _props$componentName,\n defaultLocale = props.defaultLocale,\n children = props.children;\n var antLocale = React.useContext(LocaleContext);\n var getLocale = React.useMemo(function () {\n var _a;\n var locale = defaultLocale || defaultLocaleData[componentName];\n var localeFromContext = (_a = antLocale === null || antLocale === void 0 ? void 0 : antLocale[componentName]) !== null && _a !== void 0 ? _a : {};\n return _extends(_extends({}, locale instanceof Function ? locale() : locale), localeFromContext || {});\n }, [componentName, defaultLocale, antLocale]);\n var getLocaleCode = React.useMemo(function () {\n var localeCode = antLocale && antLocale.locale;\n // Had use LocaleProvide but didn't set locale\n if (antLocale && antLocale.exist && !localeCode) {\n return defaultLocaleData.locale;\n }\n return localeCode;\n }, [antLocale]);\n return children(getLocale, getLocaleCode, antLocale);\n};\nexport default LocaleReceiver;\nexport var useLocaleReceiver = function useLocaleReceiver(componentName, defaultLocale) {\n var antLocale = React.useContext(LocaleContext);\n var getLocale = React.useMemo(function () {\n var _a;\n var locale = defaultLocale || defaultLocaleData[componentName];\n var localeFromContext = (_a = antLocale === null || antLocale === void 0 ? void 0 : antLocale[componentName]) !== null && _a !== void 0 ? _a : {};\n return _extends(_extends({}, typeof locale === 'function' ? locale() : locale), localeFromContext || {});\n }, [componentName, defaultLocale, antLocale]);\n return [getLocale];\n};","import { createContext } from 'react';\nvar LocaleContext = /*#__PURE__*/createContext(undefined);\nexport default LocaleContext;","/* eslint-disable no-template-curly-in-string */\nimport Pagination from \"rc-pagination/es/locale/en_US\";\nimport Calendar from '../calendar/locale/en_US';\nimport DatePicker from '../date-picker/locale/en_US';\nimport TimePicker from '../time-picker/locale/en_US';\nvar typeTemplate = '${label} is not a valid ${type}';\nvar localeValues = {\n locale: 'en',\n Pagination: Pagination,\n DatePicker: DatePicker,\n TimePicker: TimePicker,\n Calendar: Calendar,\n global: {\n placeholder: 'Please select'\n },\n Table: {\n filterTitle: 'Filter menu',\n filterConfirm: 'OK',\n filterReset: 'Reset',\n filterEmptyText: 'No filters',\n filterCheckall: 'Select all items',\n filterSearchPlaceholder: 'Search in filters',\n emptyText: 'No data',\n selectAll: 'Select current page',\n selectInvert: 'Invert current page',\n selectNone: 'Clear all data',\n selectionAll: 'Select all data',\n sortTitle: 'Sort',\n expand: 'Expand row',\n collapse: 'Collapse row',\n triggerDesc: 'Click to sort descending',\n triggerAsc: 'Click to sort ascending',\n cancelSort: 'Click to cancel sorting'\n },\n Modal: {\n okText: 'OK',\n cancelText: 'Cancel',\n justOkText: 'OK'\n },\n Popconfirm: {\n okText: 'OK',\n cancelText: 'Cancel'\n },\n Transfer: {\n titles: ['', ''],\n searchPlaceholder: 'Search here',\n itemUnit: 'item',\n itemsUnit: 'items',\n remove: 'Remove',\n selectCurrent: 'Select current page',\n removeCurrent: 'Remove current page',\n selectAll: 'Select all data',\n removeAll: 'Remove all data',\n selectInvert: 'Invert current page'\n },\n Upload: {\n uploading: 'Uploading...',\n removeFile: 'Remove file',\n uploadError: 'Upload error',\n previewFile: 'Preview file',\n downloadFile: 'Download file'\n },\n Empty: {\n description: 'No data'\n },\n Icon: {\n icon: 'icon'\n },\n Text: {\n edit: 'Edit',\n copy: 'Copy',\n copied: 'Copied',\n expand: 'Expand'\n },\n PageHeader: {\n back: 'Back'\n },\n Form: {\n optional: '(optional)',\n defaultValidateMessages: {\n \"default\": 'Field validation error for ${label}',\n required: 'Please enter ${label}',\n \"enum\": '${label} must be one of [${enum}]',\n whitespace: '${label} cannot be a blank character',\n date: {\n format: '${label} date format is invalid',\n parse: '${label} cannot be converted to a date',\n invalid: '${label} is an invalid date'\n },\n types: {\n string: typeTemplate,\n method: typeTemplate,\n array: typeTemplate,\n object: typeTemplate,\n number: typeTemplate,\n date: typeTemplate,\n \"boolean\": typeTemplate,\n integer: typeTemplate,\n \"float\": typeTemplate,\n regexp: typeTemplate,\n email: typeTemplate,\n url: typeTemplate,\n hex: typeTemplate\n },\n string: {\n len: '${label} must be ${len} characters',\n min: '${label} must be at least ${min} characters',\n max: '${label} must be up to ${max} characters',\n range: '${label} must be between ${min}-${max} characters'\n },\n number: {\n len: '${label} must be equal to ${len}',\n min: '${label} must be minimum ${min}',\n max: '${label} must be maximum ${max}',\n range: '${label} must be between ${min}-${max}'\n },\n array: {\n len: 'Must be ${len} ${label}',\n min: 'At least ${min} ${label}',\n max: 'At most ${max} ${label}',\n range: 'The amount of ${label} must be between ${min}-${max}'\n },\n pattern: {\n mismatch: '${label} does not match the pattern ${pattern}'\n }\n }\n },\n Image: {\n preview: 'Preview'\n }\n};\nexport default localeValues;","import defaultLocale from './default';\nexport default defaultLocale;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\n/** @internal Only used for Dropdown component. Do not use this in your production. */\nvar OverrideContext = /*#__PURE__*/React.createContext(null);\n/** @internal Only used for Dropdown component. Do not use this in your production. */\nexport var OverrideProvider = function OverrideProvider(_a) {\n var children = _a.children,\n restProps = __rest(_a, [\"children\"]);\n var override = React.useContext(OverrideContext);\n var context = React.useMemo(function () {\n return _extends(_extends({}, override), restProps);\n }, [override, restProps.prefixCls,\n // restProps.expandIcon, Not mark as deps since this is a ReactNode\n restProps.mode, restProps.selectable\n // restProps.validator, Not mark as deps since this is a function\n ]);\n\n return /*#__PURE__*/React.createElement(OverrideContext.Provider, {\n value: context\n }, children);\n};\nexport default OverrideContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport { Divider } from 'rc-menu';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nvar MenuDivider = function MenuDivider(_a) {\n var customizePrefixCls = _a.prefixCls,\n className = _a.className,\n dashed = _a.dashed,\n restProps = __rest(_a, [\"prefixCls\", \"className\", \"dashed\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('menu', customizePrefixCls);\n var classString = classNames(_defineProperty({}, \"\".concat(prefixCls, \"-item-divider-dashed\"), !!dashed), className);\n return /*#__PURE__*/React.createElement(Divider, _extends({\n className: classString\n }, restProps));\n};\nexport default MenuDivider;","import { createContext } from 'react';\nvar MenuContext = /*#__PURE__*/createContext({\n prefixCls: '',\n firstLevel: true,\n inlineCollapsed: false\n});\nexport default MenuContext;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport { Item } from 'rc-menu';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport * as React from 'react';\nimport { SiderContext } from '../layout/Sider';\nimport Tooltip from '../tooltip';\nimport { cloneElement, isValidElement } from '../_util/reactNode';\nimport MenuContext from './MenuContext';\nvar MenuItem = /*#__PURE__*/function (_React$Component) {\n _inherits(MenuItem, _React$Component);\n var _super = _createSuper(MenuItem);\n function MenuItem() {\n var _this;\n _classCallCheck(this, MenuItem);\n _this = _super.apply(this, arguments);\n _this.renderItem = function (_ref) {\n var _classNames;\n var siderCollapsed = _ref.siderCollapsed;\n var _a;\n var _this$context = _this.context,\n prefixCls = _this$context.prefixCls,\n firstLevel = _this$context.firstLevel,\n inlineCollapsed = _this$context.inlineCollapsed,\n direction = _this$context.direction,\n disableMenuItemTitleTooltip = _this$context.disableMenuItemTitleTooltip;\n var _this$props = _this.props,\n className = _this$props.className,\n children = _this$props.children;\n var _b = _this.props,\n title = _b.title,\n icon = _b.icon,\n danger = _b.danger,\n rest = __rest(_b, [\"title\", \"icon\", \"danger\"]);\n var tooltipTitle = title;\n if (typeof title === 'undefined') {\n tooltipTitle = firstLevel ? children : '';\n } else if (title === false) {\n tooltipTitle = '';\n }\n var tooltipProps = {\n title: tooltipTitle\n };\n if (!siderCollapsed && !inlineCollapsed) {\n tooltipProps.title = null;\n // Reset `open` to fix control mode tooltip display not correct\n // ref: https://github.com/ant-design/ant-design/issues/16742\n tooltipProps.open = false;\n }\n var childrenLength = toArray(children).length;\n var returnNode = /*#__PURE__*/React.createElement(Item, _extends({}, rest, {\n className: classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-item-danger\"), danger), _defineProperty(_classNames, \"\".concat(prefixCls, \"-item-only-child\"), (icon ? childrenLength + 1 : childrenLength) === 1), _classNames), className),\n title: typeof title === 'string' ? title : undefined\n }), cloneElement(icon, {\n className: classNames(isValidElement(icon) ? (_a = icon.props) === null || _a === void 0 ? void 0 : _a.className : '', \"\".concat(prefixCls, \"-item-icon\"))\n }), _this.renderItemChildren(inlineCollapsed));\n if (!disableMenuItemTitleTooltip) {\n returnNode = /*#__PURE__*/React.createElement(Tooltip, _extends({}, tooltipProps, {\n placement: direction === 'rtl' ? 'left' : 'right',\n overlayClassName: \"\".concat(prefixCls, \"-inline-collapsed-tooltip\")\n }), returnNode);\n }\n return returnNode;\n };\n return _this;\n }\n _createClass(MenuItem, [{\n key: \"renderItemChildren\",\n value: function renderItemChildren(inlineCollapsed) {\n var _this$context2 = this.context,\n prefixCls = _this$context2.prefixCls,\n firstLevel = _this$context2.firstLevel;\n var _this$props2 = this.props,\n icon = _this$props2.icon,\n children = _this$props2.children;\n var wrapNode = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-title-content\")\n }, children);\n // inline-collapsed.md demo 依赖 span 来隐藏文字,有 icon 属性,则内部包裹一个 span\n // ref: https://github.com/ant-design/ant-design/pull/23456\n if (!icon || isValidElement(children) && children.type === 'span') {\n if (children && inlineCollapsed && firstLevel && typeof children === 'string') {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-inline-collapsed-noicon\")\n }, children.charAt(0));\n }\n }\n return wrapNode;\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(SiderContext.Consumer, null, this.renderItem);\n }\n }]);\n return MenuItem;\n}(React.Component);\nexport { MenuItem as default };\nMenuItem.contextType = MenuContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport classNames from 'classnames';\nimport { SubMenu as RcSubMenu, useFullPath } from 'rc-menu';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { cloneElement, isValidElement } from '../_util/reactNode';\nimport MenuContext from './MenuContext';\nfunction SubMenu(props) {\n var _a;\n var popupClassName = props.popupClassName,\n icon = props.icon,\n title = props.title,\n theme = props.theme;\n var context = React.useContext(MenuContext);\n var prefixCls = context.prefixCls,\n inlineCollapsed = context.inlineCollapsed,\n antdMenuTheme = context.antdMenuTheme;\n var parentPath = useFullPath();\n var titleNode;\n if (!icon) {\n titleNode = inlineCollapsed && !parentPath.length && title && typeof title === 'string' ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-inline-collapsed-noicon\")\n }, title.charAt(0)) : /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-title-content\")\n }, title);\n } else {\n // inline-collapsed.md demo 依赖 span 来隐藏文字,有 icon 属性,则内部包裹一个 span\n // ref: https://github.com/ant-design/ant-design/pull/23456\n var titleIsSpan = isValidElement(title) && title.type === 'span';\n titleNode = /*#__PURE__*/React.createElement(React.Fragment, null, cloneElement(icon, {\n className: classNames(isValidElement(icon) ? (_a = icon.props) === null || _a === void 0 ? void 0 : _a.className : '', \"\".concat(prefixCls, \"-item-icon\"))\n }), titleIsSpan ? title : /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-title-content\")\n }, title));\n }\n var contextValue = React.useMemo(function () {\n return _extends(_extends({}, context), {\n firstLevel: false\n });\n }, [context]);\n return /*#__PURE__*/React.createElement(MenuContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(RcSubMenu, _extends({}, omit(props, ['icon']), {\n title: titleNode,\n popupClassName: classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(theme || antdMenuTheme), popupClassName)\n })));\n}\nexport default SubMenu;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { ItemGroup } from 'rc-menu';\nimport * as React from 'react';\nimport MenuDivider from '../MenuDivider';\nimport MenuItem from '../MenuItem';\nimport SubMenu from '../SubMenu';\nfunction convertItemsToNodes(list) {\n return (list || []).map(function (opt, index) {\n if (opt && _typeof(opt) === 'object') {\n var _a = opt,\n label = _a.label,\n children = _a.children,\n key = _a.key,\n type = _a.type,\n restProps = __rest(_a, [\"label\", \"children\", \"key\", \"type\"]);\n var mergedKey = key !== null && key !== void 0 ? key : \"tmp-\".concat(index);\n // MenuItemGroup & SubMenuItem\n if (children || type === 'group') {\n if (type === 'group') {\n // Group\n return /*#__PURE__*/React.createElement(ItemGroup, _extends({\n key: mergedKey\n }, restProps, {\n title: label\n }), convertItemsToNodes(children));\n }\n // Sub Menu\n return /*#__PURE__*/React.createElement(SubMenu, _extends({\n key: mergedKey\n }, restProps, {\n title: label\n }), convertItemsToNodes(children));\n }\n // MenuItem & Divider\n if (type === 'divider') {\n return /*#__PURE__*/React.createElement(MenuDivider, _extends({\n key: mergedKey\n }, restProps));\n }\n return /*#__PURE__*/React.createElement(MenuItem, _extends({\n key: mergedKey\n }, restProps), label);\n }\n return null;\n }).filter(function (opt) {\n return opt;\n });\n}\n// FIXME: Move logic here in v5\n/**\n * We simply convert `items` to ReactNode for reuse origin component logic. But we need move all the\n * logic from component into this hooks when in v5\n */\nexport default function useItems(items) {\n return React.useMemo(function () {\n if (!items) {\n return items;\n }\n return convertItemsToNodes(items);\n }, [items]);\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport EllipsisOutlined from \"@ant-design/icons/es/icons/EllipsisOutlined\";\nimport classNames from 'classnames';\nimport RcMenu, { ItemGroup } from 'rc-menu';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { forwardRef } from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { SiderContext } from '../layout/Sider';\nimport collapseMotion from '../_util/motion';\nimport { cloneElement } from '../_util/reactNode';\nimport warning from '../_util/warning';\nimport useItems from './hooks/useItems';\nimport MenuContext from './MenuContext';\nimport MenuDivider from './MenuDivider';\nimport Item from './MenuItem';\nimport OverrideContext from './OverrideContext';\nimport SubMenu from './SubMenu';\nvar InternalMenu = /*#__PURE__*/forwardRef(function (props, ref) {\n var _a;\n var override = React.useContext(OverrideContext) || {};\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n getPopupContainer = _React$useContext.getPopupContainer,\n direction = _React$useContext.direction;\n var rootPrefixCls = getPrefixCls();\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n _props$theme = props.theme,\n theme = _props$theme === void 0 ? 'light' : _props$theme,\n expandIcon = props.expandIcon,\n _internalDisableMenuItemTitleTooltip = props._internalDisableMenuItemTitleTooltip,\n inlineCollapsed = props.inlineCollapsed,\n siderCollapsed = props.siderCollapsed,\n items = props.items,\n children = props.children,\n mode = props.mode,\n selectable = props.selectable,\n onClick = props.onClick,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"theme\", \"expandIcon\", \"_internalDisableMenuItemTitleTooltip\", \"inlineCollapsed\", \"siderCollapsed\", \"items\", \"children\", \"mode\", \"selectable\", \"onClick\"]);\n var passedProps = omit(restProps, ['collapsedWidth']);\n // ========================= Items ===========================\n var mergedChildren = useItems(items) || children;\n // ======================== Warning ==========================\n process.env.NODE_ENV !== \"production\" ? warning(!('inlineCollapsed' in props && mode !== 'inline'), 'Menu', '`inlineCollapsed` should only be used when `mode` is inline.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(props.siderCollapsed !== undefined && 'inlineCollapsed' in props), 'Menu', '`inlineCollapsed` not control Menu under Sider. Should set `collapsed` on Sider instead.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning('items' in props && !children, 'Menu', '`children` will be removed in next major version. Please use `items` instead.') : void 0;\n (_a = override.validator) === null || _a === void 0 ? void 0 : _a.call(override, {\n mode: mode\n });\n // ========================== Click ==========================\n // Tell dropdown that item clicked\n var onItemClick = useEvent(function () {\n var _a;\n onClick === null || onClick === void 0 ? void 0 : onClick.apply(void 0, arguments);\n (_a = override === null || override === void 0 ? void 0 : override.onClick) === null || _a === void 0 ? void 0 : _a.call(override);\n });\n // ========================== Mode ===========================\n var mergedMode = override.mode || mode;\n // ======================= Selectable ========================\n var mergedSelectable = selectable !== null && selectable !== void 0 ? selectable : override.selectable;\n // ======================== Collapsed ========================\n // Inline Collapsed\n var mergedInlineCollapsed = React.useMemo(function () {\n if (siderCollapsed !== undefined) {\n return siderCollapsed;\n }\n return inlineCollapsed;\n }, [inlineCollapsed, siderCollapsed]);\n var defaultMotions = {\n horizontal: {\n motionName: \"\".concat(rootPrefixCls, \"-slide-up\")\n },\n inline: collapseMotion,\n other: {\n motionName: \"\".concat(rootPrefixCls, \"-zoom-big\")\n }\n };\n var prefixCls = getPrefixCls('menu', customizePrefixCls || override.prefixCls);\n var menuClassName = classNames(\"\".concat(prefixCls, \"-\").concat(theme), className);\n // ====================== Expand Icon ========================\n var mergedExpandIcon;\n if (typeof expandIcon === 'function') {\n mergedExpandIcon = expandIcon;\n } else {\n mergedExpandIcon = cloneElement(expandIcon || override.expandIcon, {\n className: \"\".concat(prefixCls, \"-submenu-expand-icon\")\n });\n }\n // ======================== Context ==========================\n var contextValue = React.useMemo(function () {\n return {\n prefixCls: prefixCls,\n inlineCollapsed: mergedInlineCollapsed || false,\n antdMenuTheme: theme,\n direction: direction,\n firstLevel: true,\n disableMenuItemTitleTooltip: _internalDisableMenuItemTitleTooltip\n };\n }, [prefixCls, mergedInlineCollapsed, theme, direction, _internalDisableMenuItemTitleTooltip]);\n // ========================= Render ==========================\n return /*#__PURE__*/React.createElement(OverrideContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(MenuContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(RcMenu, _extends({\n getPopupContainer: getPopupContainer,\n overflowedIndicator: /*#__PURE__*/React.createElement(EllipsisOutlined, null),\n overflowedIndicatorPopupClassName: \"\".concat(prefixCls, \"-\").concat(theme),\n mode: mergedMode,\n selectable: mergedSelectable,\n onClick: onItemClick\n }, passedProps, {\n inlineCollapsed: mergedInlineCollapsed,\n className: menuClassName,\n prefixCls: prefixCls,\n direction: direction,\n defaultMotions: defaultMotions,\n expandIcon: mergedExpandIcon,\n ref: ref\n }), mergedChildren)));\n});\n// We should keep this as ref-able\nvar Menu = /*#__PURE__*/function (_React$Component) {\n _inherits(Menu, _React$Component);\n var _super = _createSuper(Menu);\n function Menu() {\n var _this;\n _classCallCheck(this, Menu);\n _this = _super.apply(this, arguments);\n _this.focus = function (options) {\n var _a;\n (_a = _this.menu) === null || _a === void 0 ? void 0 : _a.focus(options);\n };\n return _this;\n }\n _createClass(Menu, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n return /*#__PURE__*/React.createElement(SiderContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(InternalMenu, _extends({\n ref: function ref(node) {\n _this2.menu = node;\n }\n }, _this2.props, context));\n });\n }\n }]);\n return Menu;\n}(React.Component);\nMenu.Divider = MenuDivider;\nMenu.Item = Item;\nMenu.SubMenu = SubMenu;\nMenu.ItemGroup = ItemGroup;\nexport default Menu;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport CheckCircleFilled from \"@ant-design/icons/es/icons/CheckCircleFilled\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport ExclamationCircleFilled from \"@ant-design/icons/es/icons/ExclamationCircleFilled\";\nimport InfoCircleFilled from \"@ant-design/icons/es/icons/InfoCircleFilled\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport classNames from 'classnames';\nimport RCNotification from 'rc-notification';\nimport * as React from 'react';\nimport ConfigProvider, { globalConfig } from '../config-provider';\nimport createUseMessage from './hooks/useMessage';\nvar messageInstance;\nvar defaultDuration = 3;\nvar defaultTop;\nvar key = 1;\nvar localPrefixCls = '';\nvar transitionName = 'move-up';\nvar hasTransitionName = false;\nvar getContainer;\nvar maxCount;\nvar rtl = false;\nexport function getKeyThenIncreaseKey() {\n return key++;\n}\nfunction setMessageConfig(options) {\n if (options.top !== undefined) {\n defaultTop = options.top;\n messageInstance = null; // delete messageInstance for new defaultTop\n }\n\n if (options.duration !== undefined) {\n defaultDuration = options.duration;\n }\n if (options.prefixCls !== undefined) {\n localPrefixCls = options.prefixCls;\n }\n if (options.getContainer !== undefined) {\n getContainer = options.getContainer;\n messageInstance = null; // delete messageInstance for new getContainer\n }\n\n if (options.transitionName !== undefined) {\n transitionName = options.transitionName;\n messageInstance = null; // delete messageInstance for new transitionName\n hasTransitionName = true;\n }\n if (options.maxCount !== undefined) {\n maxCount = options.maxCount;\n messageInstance = null;\n }\n if (options.rtl !== undefined) {\n rtl = options.rtl;\n }\n}\nfunction getRCNotificationInstance(args, callback) {\n var customizePrefixCls = args.prefixCls,\n getContextPopupContainer = args.getPopupContainer;\n var _globalConfig = globalConfig(),\n getPrefixCls = _globalConfig.getPrefixCls,\n getRootPrefixCls = _globalConfig.getRootPrefixCls,\n getIconPrefixCls = _globalConfig.getIconPrefixCls;\n var prefixCls = getPrefixCls('message', customizePrefixCls || localPrefixCls);\n var rootPrefixCls = getRootPrefixCls(args.rootPrefixCls, prefixCls);\n var iconPrefixCls = getIconPrefixCls();\n if (messageInstance) {\n callback({\n prefixCls: prefixCls,\n rootPrefixCls: rootPrefixCls,\n iconPrefixCls: iconPrefixCls,\n instance: messageInstance\n });\n return;\n }\n var instanceConfig = {\n prefixCls: prefixCls,\n transitionName: hasTransitionName ? transitionName : \"\".concat(rootPrefixCls, \"-\").concat(transitionName),\n style: {\n top: defaultTop\n },\n getContainer: getContainer || getContextPopupContainer,\n maxCount: maxCount\n };\n RCNotification.newInstance(instanceConfig, function (instance) {\n if (messageInstance) {\n callback({\n prefixCls: prefixCls,\n rootPrefixCls: rootPrefixCls,\n iconPrefixCls: iconPrefixCls,\n instance: messageInstance\n });\n return;\n }\n messageInstance = instance;\n if (process.env.NODE_ENV === 'test') {\n messageInstance.config = instanceConfig;\n }\n callback({\n prefixCls: prefixCls,\n rootPrefixCls: rootPrefixCls,\n iconPrefixCls: iconPrefixCls,\n instance: instance\n });\n });\n}\nvar typeToIcon = {\n info: InfoCircleFilled,\n success: CheckCircleFilled,\n error: CloseCircleFilled,\n warning: ExclamationCircleFilled,\n loading: LoadingOutlined\n};\nexport var typeList = Object.keys(typeToIcon);\nfunction getRCNoticeProps(args, prefixCls, iconPrefixCls) {\n var _classNames;\n var duration = args.duration !== undefined ? args.duration : defaultDuration;\n var IconComponent = typeToIcon[args.type];\n var messageClass = classNames(\"\".concat(prefixCls, \"-custom-content\"), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(args.type), args.type), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), rtl === true), _classNames));\n return {\n key: args.key,\n duration: duration,\n style: args.style || {},\n className: args.className,\n content: /*#__PURE__*/React.createElement(ConfigProvider, {\n iconPrefixCls: iconPrefixCls\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: messageClass\n }, args.icon || IconComponent && /*#__PURE__*/React.createElement(IconComponent, null), /*#__PURE__*/React.createElement(\"span\", null, args.content))),\n onClose: args.onClose,\n onClick: args.onClick\n };\n}\nfunction notice(args) {\n var target = args.key || getKeyThenIncreaseKey();\n var closePromise = new Promise(function (resolve) {\n var callback = function callback() {\n if (typeof args.onClose === 'function') {\n args.onClose();\n }\n return resolve(true);\n };\n getRCNotificationInstance(args, function (_ref) {\n var prefixCls = _ref.prefixCls,\n iconPrefixCls = _ref.iconPrefixCls,\n instance = _ref.instance;\n instance.notice(getRCNoticeProps(_extends(_extends({}, args), {\n key: target,\n onClose: callback\n }), prefixCls, iconPrefixCls));\n });\n });\n var result = function result() {\n var _a;\n if (messageInstance) {\n messageInstance.removeNotice(target);\n (_a = args.onClose) === null || _a === void 0 ? void 0 : _a.call(args);\n }\n };\n result.then = function (filled, rejected) {\n return closePromise.then(filled, rejected);\n };\n result.promise = closePromise;\n return result;\n}\nfunction isArgsProps(content) {\n return Object.prototype.toString.call(content) === '[object Object]' && !!content.content;\n}\nvar api = {\n open: notice,\n config: setMessageConfig,\n destroy: function destroy(messageKey) {\n if (messageInstance) {\n if (messageKey) {\n var _messageInstance = messageInstance,\n removeNotice = _messageInstance.removeNotice;\n removeNotice(messageKey);\n } else {\n var _messageInstance2 = messageInstance,\n destroy = _messageInstance2.destroy;\n destroy();\n messageInstance = null;\n }\n }\n }\n};\nexport function attachTypeApi(originalApi, type) {\n originalApi[type] = function (content, duration, onClose) {\n if (isArgsProps(content)) {\n return originalApi.open(_extends(_extends({}, content), {\n type: type\n }));\n }\n if (typeof duration === 'function') {\n onClose = duration;\n duration = undefined;\n }\n return originalApi.open({\n content: content,\n duration: duration,\n type: type,\n onClose: onClose\n });\n };\n}\ntypeList.forEach(function (type) {\n return attachTypeApi(api, type);\n});\napi.warn = api.warning;\napi.useMessage = createUseMessage(getRCNotificationInstance, getRCNoticeProps);\n/** @internal test Only function. Not work on production */\nexport var getInstance = function getInstance() {\n return process.env.NODE_ENV === 'test' ? messageInstance : null;\n};\nexport default api;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useRCNotification from \"rc-notification/es/useNotification\";\nimport * as React from 'react';\nimport { attachTypeApi, getKeyThenIncreaseKey, typeList } from '..';\nimport { ConfigConsumer } from '../../config-provider';\nexport default function createUseMessage(getRcNotificationInstance, getRCNoticeProps) {\n var useMessage = function useMessage() {\n // We can only get content by render\n var getPrefixCls;\n var getPopupContainer;\n // We create a proxy to handle delay created instance\n var innerInstance = null;\n var proxy = {\n add: function add(noticeProps, holderCallback) {\n innerInstance === null || innerInstance === void 0 ? void 0 : innerInstance.component.add(noticeProps, holderCallback);\n }\n };\n var _useRCNotification = useRCNotification(proxy),\n _useRCNotification2 = _slicedToArray(_useRCNotification, 2),\n hookNotify = _useRCNotification2[0],\n holder = _useRCNotification2[1];\n function notify(args) {\n var customizePrefixCls = args.prefixCls;\n var mergedPrefixCls = getPrefixCls('message', customizePrefixCls);\n var rootPrefixCls = getPrefixCls();\n var target = args.key || getKeyThenIncreaseKey();\n var closePromise = new Promise(function (resolve) {\n var callback = function callback() {\n if (typeof args.onClose === 'function') {\n args.onClose();\n }\n return resolve(true);\n };\n getRcNotificationInstance(_extends(_extends({}, args), {\n prefixCls: mergedPrefixCls,\n rootPrefixCls: rootPrefixCls,\n getPopupContainer: getPopupContainer\n }), function (_ref) {\n var prefixCls = _ref.prefixCls,\n instance = _ref.instance;\n innerInstance = instance;\n hookNotify(getRCNoticeProps(_extends(_extends({}, args), {\n key: target,\n onClose: callback\n }), prefixCls));\n });\n });\n var result = function result() {\n if (innerInstance) {\n innerInstance.removeNotice(target);\n }\n };\n result.then = function (filled, rejected) {\n return closePromise.then(filled, rejected);\n };\n result.promise = closePromise;\n return result;\n }\n // Fill functions\n var hookApiRef = React.useRef({});\n hookApiRef.current.open = notify;\n typeList.forEach(function (type) {\n return attachTypeApi(hookApiRef.current, type);\n });\n return [hookApiRef.current, /*#__PURE__*/React.createElement(ConfigConsumer, {\n key: \"holder\"\n }, function (context) {\n getPrefixCls = context.getPrefixCls;\n getPopupContainer = context.getPopupContainer;\n return holder;\n })];\n };\n return useMessage;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useState from \"rc-util/es/hooks/useState\";\nimport * as React from 'react';\nimport Button from '../button';\nimport { convertLegacyProps } from '../button/button';\nfunction isThenable(thing) {\n return !!(thing && !!thing.then);\n}\nvar ActionButton = function ActionButton(props) {\n var clickedRef = React.useRef(false);\n var ref = React.useRef(null);\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n loading = _useState2[0],\n setLoading = _useState2[1];\n var close = props.close;\n var onInternalClose = function onInternalClose() {\n close === null || close === void 0 ? void 0 : close.apply(void 0, arguments);\n };\n React.useEffect(function () {\n var timeoutId = null;\n if (props.autoFocus) {\n timeoutId = setTimeout(function () {\n var _a;\n (_a = ref.current) === null || _a === void 0 ? void 0 : _a.focus();\n });\n }\n return function () {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n }, []);\n var handlePromiseOnOk = function handlePromiseOnOk(returnValueOfOnOk) {\n if (!isThenable(returnValueOfOnOk)) {\n return;\n }\n setLoading(true);\n returnValueOfOnOk.then(function () {\n setLoading(false, true);\n onInternalClose.apply(void 0, arguments);\n clickedRef.current = false;\n }, function (e) {\n // Emit error when catch promise reject\n // eslint-disable-next-line no-console\n console.error(e);\n // See: https://github.com/ant-design/ant-design/issues/6183\n setLoading(false, true);\n clickedRef.current = false;\n });\n };\n var onClick = function onClick(e) {\n var actionFn = props.actionFn;\n if (clickedRef.current) {\n return;\n }\n clickedRef.current = true;\n if (!actionFn) {\n onInternalClose();\n return;\n }\n var returnValueOfOnOk;\n if (props.emitEvent) {\n returnValueOfOnOk = actionFn(e);\n if (props.quitOnNullishReturnValue && !isThenable(returnValueOfOnOk)) {\n clickedRef.current = false;\n onInternalClose(e);\n return;\n }\n } else if (actionFn.length) {\n returnValueOfOnOk = actionFn(close);\n // https://github.com/ant-design/ant-design/issues/23358\n clickedRef.current = false;\n } else {\n returnValueOfOnOk = actionFn();\n if (!returnValueOfOnOk) {\n onInternalClose();\n return;\n }\n }\n handlePromiseOnOk(returnValueOfOnOk);\n };\n var type = props.type,\n children = props.children,\n prefixCls = props.prefixCls,\n buttonProps = props.buttonProps;\n return /*#__PURE__*/React.createElement(Button, _extends({}, convertLegacyProps(type), {\n onClick: onClick,\n loading: loading,\n prefixCls: prefixCls\n }, buttonProps, {\n ref: ref\n }), children);\n};\nexport default ActionButton;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport classNames from 'classnames';\nimport Dialog from 'rc-dialog';\nimport * as React from 'react';\nimport Button from '../button';\nimport { convertLegacyProps } from '../button/button';\nimport { ConfigContext } from '../config-provider';\nimport { NoFormStyle } from '../form/context';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport { NoCompactStyle } from '../space/Compact';\nimport { getTransitionName } from '../_util/motion';\nimport { canUseDocElement } from '../_util/styleChecker';\nimport warning from '../_util/warning';\nimport { getConfirmLocale } from './locale';\nvar mousePosition;\n// ref: https://github.com/ant-design/ant-design/issues/15795\nvar getClickPosition = function getClickPosition(e) {\n mousePosition = {\n x: e.pageX,\n y: e.pageY\n };\n // 100ms 内发生过点击事件,则从点击位置动画展示\n // 否则直接 zoom 展示\n // 这样可以兼容非点击方式展开\n setTimeout(function () {\n mousePosition = null;\n }, 100);\n};\n// 只有点击事件支持从鼠标位置动画展开\nif (canUseDocElement()) {\n document.documentElement.addEventListener('click', getClickPosition, true);\n}\nvar Modal = function Modal(props) {\n var _classNames;\n var _a;\n var _React$useContext = React.useContext(ConfigContext),\n getContextPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var handleCancel = function handleCancel(e) {\n var onCancel = props.onCancel;\n onCancel === null || onCancel === void 0 ? void 0 : onCancel(e);\n };\n var handleOk = function handleOk(e) {\n var onOk = props.onOk;\n onOk === null || onOk === void 0 ? void 0 : onOk(e);\n };\n process.env.NODE_ENV !== \"production\" ? warning(!('visible' in props), 'Modal', \"`visible` will be removed in next major version, please use `open` instead.\") : void 0;\n var customizePrefixCls = props.prefixCls,\n footer = props.footer,\n visible = props.visible,\n _props$open = props.open,\n open = _props$open === void 0 ? false : _props$open,\n wrapClassName = props.wrapClassName,\n centered = props.centered,\n getContainer = props.getContainer,\n closeIcon = props.closeIcon,\n _props$focusTriggerAf = props.focusTriggerAfterClose,\n focusTriggerAfterClose = _props$focusTriggerAf === void 0 ? true : _props$focusTriggerAf,\n _props$width = props.width,\n width = _props$width === void 0 ? 520 : _props$width,\n restProps = __rest(props, [\"prefixCls\", \"footer\", \"visible\", \"open\", \"wrapClassName\", \"centered\", \"getContainer\", \"closeIcon\", \"focusTriggerAfterClose\", \"width\"]);\n var prefixCls = getPrefixCls('modal', customizePrefixCls);\n var rootPrefixCls = getPrefixCls();\n var defaultFooter = /*#__PURE__*/React.createElement(LocaleReceiver, {\n componentName: \"Modal\",\n defaultLocale: getConfirmLocale()\n }, function (contextLocale) {\n var okText = props.okText,\n _props$okType = props.okType,\n okType = _props$okType === void 0 ? 'primary' : _props$okType,\n cancelText = props.cancelText,\n _props$confirmLoading = props.confirmLoading,\n confirmLoading = _props$confirmLoading === void 0 ? false : _props$confirmLoading;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, _extends({\n onClick: handleCancel\n }, props.cancelButtonProps), cancelText || contextLocale.cancelText), /*#__PURE__*/React.createElement(Button, _extends({}, convertLegacyProps(okType), {\n loading: confirmLoading,\n onClick: handleOk\n }, props.okButtonProps), okText !== null && okText !== void 0 ? okText : contextLocale.okText));\n });\n var closeIconToRender = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-close-x\")\n }, closeIcon || /*#__PURE__*/React.createElement(CloseOutlined, {\n className: \"\".concat(prefixCls, \"-close-icon\")\n }));\n var wrapClassNameExtended = classNames(wrapClassName, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-centered\"), !!centered), _defineProperty(_classNames, \"\".concat(prefixCls, \"-wrap-rtl\"), direction === 'rtl'), _classNames));\n return /*#__PURE__*/React.createElement(NoCompactStyle, null, /*#__PURE__*/React.createElement(NoFormStyle, {\n status: true,\n override: true\n }, /*#__PURE__*/React.createElement(Dialog, _extends({\n width: width\n }, restProps, {\n getContainer: getContainer === undefined ? getContextPopupContainer : getContainer,\n prefixCls: prefixCls,\n wrapClassName: wrapClassNameExtended,\n footer: footer === undefined ? defaultFooter : footer,\n visible: open || visible,\n mousePosition: (_a = restProps.mousePosition) !== null && _a !== void 0 ? _a : mousePosition,\n onClose: handleCancel,\n closeIcon: closeIconToRender,\n focusTriggerAfterClose: focusTriggerAfterClose,\n transitionName: getTransitionName(rootPrefixCls, 'zoom', props.transitionName),\n maskTransitionName: getTransitionName(rootPrefixCls, 'fade', props.maskTransitionName)\n }))));\n};\nexport default Modal;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport ConfigProvider from '../config-provider';\nimport ActionButton from '../_util/ActionButton';\nimport { getTransitionName } from '../_util/motion';\nimport warning from '../_util/warning';\nimport Dialog from './Modal';\nvar ConfirmDialog = function ConfirmDialog(props) {\n var icon = props.icon,\n onCancel = props.onCancel,\n onOk = props.onOk,\n close = props.close,\n zIndex = props.zIndex,\n afterClose = props.afterClose,\n visible = props.visible,\n open = props.open,\n keyboard = props.keyboard,\n centered = props.centered,\n getContainer = props.getContainer,\n maskStyle = props.maskStyle,\n okText = props.okText,\n okButtonProps = props.okButtonProps,\n cancelText = props.cancelText,\n cancelButtonProps = props.cancelButtonProps,\n direction = props.direction,\n prefixCls = props.prefixCls,\n wrapClassName = props.wrapClassName,\n rootPrefixCls = props.rootPrefixCls,\n iconPrefixCls = props.iconPrefixCls,\n bodyStyle = props.bodyStyle,\n _props$closable = props.closable,\n closable = _props$closable === void 0 ? false : _props$closable,\n closeIcon = props.closeIcon,\n modalRender = props.modalRender,\n focusTriggerAfterClose = props.focusTriggerAfterClose;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof icon === 'string' && icon.length > 2), 'Modal', \"`icon` is using ReactNode instead of string naming in v4. Please check `\".concat(icon, \"` at https://ant.design/components/icon\")) : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(visible === undefined, 'Modal', \"`visible` is deprecated, please use `open` instead.\") : void 0;\n }\n // 支持传入{ icon: null }来隐藏`Modal.confirm`默认的Icon\n var okType = props.okType || 'primary';\n var contentPrefixCls = \"\".concat(prefixCls, \"-confirm\");\n // 默认为 true,保持向下兼容\n var okCancel = 'okCancel' in props ? props.okCancel : true;\n var width = props.width || 416;\n var style = props.style || {};\n var mask = props.mask === undefined ? true : props.mask;\n // 默认为 false,保持旧版默认行为\n var maskClosable = props.maskClosable === undefined ? false : props.maskClosable;\n var autoFocusButton = props.autoFocusButton === null ? false : props.autoFocusButton || 'ok';\n var classString = classNames(contentPrefixCls, \"\".concat(contentPrefixCls, \"-\").concat(props.type), _defineProperty({}, \"\".concat(contentPrefixCls, \"-rtl\"), direction === 'rtl'), props.className);\n var cancelButton = okCancel && /*#__PURE__*/React.createElement(ActionButton, {\n actionFn: onCancel,\n close: close,\n autoFocus: autoFocusButton === 'cancel',\n buttonProps: cancelButtonProps,\n prefixCls: \"\".concat(rootPrefixCls, \"-btn\")\n }, cancelText);\n return /*#__PURE__*/React.createElement(ConfigProvider, {\n prefixCls: rootPrefixCls,\n iconPrefixCls: iconPrefixCls,\n direction: direction\n }, /*#__PURE__*/React.createElement(Dialog, {\n prefixCls: prefixCls,\n className: classString,\n wrapClassName: classNames(_defineProperty({}, \"\".concat(contentPrefixCls, \"-centered\"), !!props.centered), wrapClassName),\n onCancel: function onCancel() {\n return close === null || close === void 0 ? void 0 : close({\n triggerCancel: true\n });\n },\n open: open || visible,\n title: \"\",\n footer: \"\",\n transitionName: getTransitionName(rootPrefixCls, 'zoom', props.transitionName),\n maskTransitionName: getTransitionName(rootPrefixCls, 'fade', props.maskTransitionName),\n mask: mask,\n maskClosable: maskClosable,\n maskStyle: maskStyle,\n style: style,\n bodyStyle: bodyStyle,\n width: width,\n zIndex: zIndex,\n afterClose: afterClose,\n keyboard: keyboard,\n centered: centered,\n getContainer: getContainer,\n closable: closable,\n closeIcon: closeIcon,\n modalRender: modalRender,\n focusTriggerAfterClose: focusTriggerAfterClose\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(contentPrefixCls, \"-body-wrapper\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(contentPrefixCls, \"-body\")\n }, icon, props.title === undefined ? null : /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(contentPrefixCls, \"-title\")\n }, props.title), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(contentPrefixCls, \"-content\")\n }, props.content)), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(contentPrefixCls, \"-btns\")\n }, cancelButton, /*#__PURE__*/React.createElement(ActionButton, {\n type: okType,\n actionFn: onOk,\n close: close,\n autoFocus: autoFocusButton === 'ok',\n buttonProps: okButtonProps,\n prefixCls: \"\".concat(rootPrefixCls, \"-btn\")\n }, okText)))));\n};\nexport default ConfirmDialog;","var destroyFns = [];\nexport default destroyFns;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CheckCircleOutlined from \"@ant-design/icons/es/icons/CheckCircleOutlined\";\nimport CloseCircleOutlined from \"@ant-design/icons/es/icons/CloseCircleOutlined\";\nimport ExclamationCircleOutlined from \"@ant-design/icons/es/icons/ExclamationCircleOutlined\";\nimport InfoCircleOutlined from \"@ant-design/icons/es/icons/InfoCircleOutlined\";\nimport { render as reactRender, unmount as reactUnmount } from \"rc-util/es/React/render\";\nimport * as React from 'react';\nimport { globalConfig } from '../config-provider';\nimport warning from '../_util/warning';\nimport ConfirmDialog from './ConfirmDialog';\nimport destroyFns from './destroyFns';\nimport { getConfirmLocale } from './locale';\nvar defaultRootPrefixCls = '';\nfunction getRootPrefixCls() {\n return defaultRootPrefixCls;\n}\nexport default function confirm(config) {\n var container = document.createDocumentFragment();\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n var currentConfig = _extends(_extends({}, config), {\n close: close,\n open: true\n });\n var timeoutId;\n function destroy() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var triggerCancel = args.some(function (param) {\n return param && param.triggerCancel;\n });\n if (config.onCancel && triggerCancel) {\n config.onCancel.apply(config, [function () {}].concat(_toConsumableArray(args.slice(1))));\n }\n for (var i = 0; i < destroyFns.length; i++) {\n var fn = destroyFns[i];\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n if (fn === close) {\n destroyFns.splice(i, 1);\n break;\n }\n }\n reactUnmount(container);\n }\n function render(_a) {\n var okText = _a.okText,\n cancelText = _a.cancelText,\n customizePrefixCls = _a.prefixCls,\n props = __rest(_a, [\"okText\", \"cancelText\", \"prefixCls\"]);\n clearTimeout(timeoutId);\n /**\n * https://github.com/ant-design/ant-design/issues/23623\n *\n * Sync render blocks React event. Let's make this async.\n */\n timeoutId = setTimeout(function () {\n var runtimeLocale = getConfirmLocale();\n var _globalConfig = globalConfig(),\n getPrefixCls = _globalConfig.getPrefixCls,\n getIconPrefixCls = _globalConfig.getIconPrefixCls;\n // because Modal.config \b set rootPrefixCls, which is different from other components\n var rootPrefixCls = getPrefixCls(undefined, getRootPrefixCls());\n var prefixCls = customizePrefixCls || \"\".concat(rootPrefixCls, \"-modal\");\n var iconPrefixCls = getIconPrefixCls();\n reactRender( /*#__PURE__*/React.createElement(ConfirmDialog, _extends({}, props, {\n prefixCls: prefixCls,\n rootPrefixCls: rootPrefixCls,\n iconPrefixCls: iconPrefixCls,\n okText: okText || (props.okCancel ? runtimeLocale.okText : runtimeLocale.justOkText),\n cancelText: cancelText || runtimeLocale.cancelText\n })), container);\n });\n }\n function close() {\n var _this = this;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n currentConfig = _extends(_extends({}, currentConfig), {\n open: false,\n afterClose: function afterClose() {\n if (typeof config.afterClose === 'function') {\n config.afterClose();\n }\n destroy.apply(_this, args);\n }\n });\n // Legacy support\n if (currentConfig.visible) {\n delete currentConfig.visible;\n }\n render(currentConfig);\n }\n function update(configUpdate) {\n if (typeof configUpdate === 'function') {\n currentConfig = configUpdate(currentConfig);\n } else {\n currentConfig = _extends(_extends({}, currentConfig), configUpdate);\n }\n render(currentConfig);\n }\n render(currentConfig);\n destroyFns.push(close);\n return {\n destroy: close,\n update: update\n };\n}\nexport function withWarn(props) {\n return _extends(_extends({\n icon: /*#__PURE__*/React.createElement(ExclamationCircleOutlined, null),\n okCancel: false\n }, props), {\n type: 'warning'\n });\n}\nexport function withInfo(props) {\n return _extends(_extends({\n icon: /*#__PURE__*/React.createElement(InfoCircleOutlined, null),\n okCancel: false\n }, props), {\n type: 'info'\n });\n}\nexport function withSuccess(props) {\n return _extends(_extends({\n icon: /*#__PURE__*/React.createElement(CheckCircleOutlined, null),\n okCancel: false\n }, props), {\n type: 'success'\n });\n}\nexport function withError(props) {\n return _extends(_extends({\n icon: /*#__PURE__*/React.createElement(CloseCircleOutlined, null),\n okCancel: false\n }, props), {\n type: 'error'\n });\n}\nexport function withConfirm(props) {\n return _extends(_extends({\n icon: /*#__PURE__*/React.createElement(ExclamationCircleOutlined, null),\n okCancel: true\n }, props), {\n type: 'confirm'\n });\n}\nexport function modalGlobalConfig(_ref) {\n var rootPrefixCls = _ref.rootPrefixCls;\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Modal', 'Modal.config is deprecated. Please use ConfigProvider.config instead.') : void 0;\n defaultRootPrefixCls = rootPrefixCls;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { ConfigContext } from '../../config-provider';\nimport LocaleReceiver from '../../locale-provider/LocaleReceiver';\nimport defaultLocale from '../../locale/default';\nimport ConfirmDialog from '../ConfirmDialog';\nvar HookModal = function HookModal(_ref, ref) {\n var afterClose = _ref.afterClose,\n config = _ref.config;\n var _React$useState = React.useState(true),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n open = _React$useState2[0],\n setOpen = _React$useState2[1];\n var _React$useState3 = React.useState(config),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n innerConfig = _React$useState4[0],\n setInnerConfig = _React$useState4[1];\n var _React$useContext = React.useContext(ConfigContext),\n direction = _React$useContext.direction,\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('modal');\n var rootPrefixCls = getPrefixCls();\n var close = function close() {\n setOpen(false);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var triggerCancel = args.some(function (param) {\n return param && param.triggerCancel;\n });\n if (innerConfig.onCancel && triggerCancel) {\n innerConfig.onCancel.apply(innerConfig, [function () {}].concat(_toConsumableArray(args.slice(1))));\n }\n };\n React.useImperativeHandle(ref, function () {\n return {\n destroy: close,\n update: function update(newConfig) {\n setInnerConfig(function (originConfig) {\n return _extends(_extends({}, originConfig), newConfig);\n });\n }\n };\n });\n return /*#__PURE__*/React.createElement(LocaleReceiver, {\n componentName: \"Modal\",\n defaultLocale: defaultLocale.Modal\n }, function (contextLocale) {\n return /*#__PURE__*/React.createElement(ConfirmDialog, _extends({\n prefixCls: prefixCls,\n rootPrefixCls: rootPrefixCls\n }, innerConfig, {\n close: close,\n open: open,\n afterClose: afterClose,\n okText: innerConfig.okText || (innerConfig.okCancel ? contextLocale.okText : contextLocale.justOkText),\n direction: direction,\n cancelText: innerConfig.cancelText || contextLocale.cancelText\n }));\n });\n};\nexport default /*#__PURE__*/React.forwardRef(HookModal);","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport usePatchElement from '../../_util/hooks/usePatchElement';\nimport { withConfirm, withError, withInfo, withSuccess, withWarn } from '../confirm';\nimport HookModal from './HookModal';\nvar uuid = 0;\nvar ElementsHolder = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (_props, ref) {\n var _usePatchElement = usePatchElement(),\n _usePatchElement2 = _slicedToArray(_usePatchElement, 2),\n elements = _usePatchElement2[0],\n patchElement = _usePatchElement2[1];\n React.useImperativeHandle(ref, function () {\n return {\n patchElement: patchElement\n };\n }, []);\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return /*#__PURE__*/React.createElement(React.Fragment, null, elements);\n}));\nexport default function useModal() {\n var holderRef = React.useRef(null);\n // ========================== Effect ==========================\n var _React$useState = React.useState([]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n actionQueue = _React$useState2[0],\n setActionQueue = _React$useState2[1];\n React.useEffect(function () {\n if (actionQueue.length) {\n var cloneQueue = _toConsumableArray(actionQueue);\n cloneQueue.forEach(function (action) {\n action();\n });\n setActionQueue([]);\n }\n }, [actionQueue]);\n // =========================== Hook ===========================\n var getConfirmFunc = React.useCallback(function (withFunc) {\n return function hookConfirm(config) {\n var _a;\n uuid += 1;\n var modalRef = /*#__PURE__*/React.createRef();\n var closeFunc;\n var modal = /*#__PURE__*/React.createElement(HookModal, {\n key: \"modal-\".concat(uuid),\n config: withFunc(config),\n ref: modalRef,\n afterClose: function afterClose() {\n closeFunc === null || closeFunc === void 0 ? void 0 : closeFunc();\n }\n });\n closeFunc = (_a = holderRef.current) === null || _a === void 0 ? void 0 : _a.patchElement(modal);\n return {\n destroy: function destroy() {\n function destroyAction() {\n var _a;\n (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n }\n if (modalRef.current) {\n destroyAction();\n } else {\n setActionQueue(function (prev) {\n return [].concat(_toConsumableArray(prev), [destroyAction]);\n });\n }\n },\n update: function update(newConfig) {\n function updateAction() {\n var _a;\n (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.update(newConfig);\n }\n if (modalRef.current) {\n updateAction();\n } else {\n setActionQueue(function (prev) {\n return [].concat(_toConsumableArray(prev), [updateAction]);\n });\n }\n }\n };\n };\n }, []);\n var fns = React.useMemo(function () {\n return {\n info: getConfirmFunc(withInfo),\n success: getConfirmFunc(withSuccess),\n error: getConfirmFunc(withError),\n warning: getConfirmFunc(withWarn),\n confirm: getConfirmFunc(withConfirm)\n };\n }, []);\n // eslint-disable-next-line react/jsx-key\n return [fns, /*#__PURE__*/React.createElement(ElementsHolder, {\n ref: holderRef\n })];\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default function usePatchElement() {\n var _React$useState = React.useState([]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n elements = _React$useState2[0],\n setElements = _React$useState2[1];\n var patchElement = React.useCallback(function (element) {\n // append a new element to elements (and create a new ref)\n setElements(function (originElements) {\n return [].concat(_toConsumableArray(originElements), [element]);\n });\n // return a function that removes the new element out of elements (and create a new ref)\n // it works a little like useEffect\n return function () {\n setElements(function (originElements) {\n return originElements.filter(function (ele) {\n return ele !== element;\n });\n });\n };\n }, []);\n return [elements, patchElement];\n}","import confirm, { modalGlobalConfig, withConfirm, withError, withInfo, withSuccess, withWarn } from './confirm';\nimport destroyFns from './destroyFns';\nimport OriginModal from './Modal';\nimport useModal from './useModal';\nfunction modalWarn(props) {\n return confirm(withWarn(props));\n}\nvar Modal = OriginModal;\nModal.useModal = useModal;\nModal.info = function infoFn(props) {\n return confirm(withInfo(props));\n};\nModal.success = function successFn(props) {\n return confirm(withSuccess(props));\n};\nModal.error = function errorFn(props) {\n return confirm(withError(props));\n};\nModal.warning = modalWarn;\nModal.warn = modalWarn;\nModal.confirm = function confirmFn(props) {\n return confirm(withConfirm(props));\n};\nModal.destroyAll = function destroyAllFn() {\n while (destroyFns.length) {\n var close = destroyFns.pop();\n if (close) {\n close();\n }\n }\n};\nModal.config = modalGlobalConfig;\nexport default Modal;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport defaultLocale from '../locale/default';\nvar runtimeLocale = _extends({}, defaultLocale.Modal);\nexport function changeConfirmLocale(newLocale) {\n if (newLocale) {\n runtimeLocale = _extends(_extends({}, runtimeLocale), newLocale);\n } else {\n runtimeLocale = _extends({}, defaultLocale.Modal);\n }\n}\nexport function getConfirmLocale() {\n return runtimeLocale;\n}","import _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport CheckCircleOutlined from \"@ant-design/icons/es/icons/CheckCircleOutlined\";\nimport CloseCircleOutlined from \"@ant-design/icons/es/icons/CloseCircleOutlined\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport ExclamationCircleOutlined from \"@ant-design/icons/es/icons/ExclamationCircleOutlined\";\nimport InfoCircleOutlined from \"@ant-design/icons/es/icons/InfoCircleOutlined\";\nimport classNames from 'classnames';\nimport Notification from 'rc-notification';\nimport * as React from 'react';\nimport ConfigProvider, { globalConfig } from '../config-provider';\nimport createUseNotification from './hooks/useNotification';\nvar notificationInstance = {};\nvar defaultDuration = 4.5;\nvar defaultTop = 24;\nvar defaultBottom = 24;\nvar defaultPrefixCls = '';\nvar defaultPlacement = 'topRight';\nvar defaultGetContainer;\nvar defaultCloseIcon;\nvar rtl = false;\nvar maxCount;\nfunction setNotificationConfig(options) {\n var duration = options.duration,\n placement = options.placement,\n bottom = options.bottom,\n top = options.top,\n getContainer = options.getContainer,\n closeIcon = options.closeIcon,\n prefixCls = options.prefixCls;\n if (prefixCls !== undefined) {\n defaultPrefixCls = prefixCls;\n }\n if (duration !== undefined) {\n defaultDuration = duration;\n }\n if (placement !== undefined) {\n defaultPlacement = placement;\n } else if (options.rtl) {\n defaultPlacement = 'topLeft';\n }\n if (bottom !== undefined) {\n defaultBottom = bottom;\n }\n if (top !== undefined) {\n defaultTop = top;\n }\n if (getContainer !== undefined) {\n defaultGetContainer = getContainer;\n }\n if (closeIcon !== undefined) {\n defaultCloseIcon = closeIcon;\n }\n if (options.rtl !== undefined) {\n rtl = options.rtl;\n }\n if (options.maxCount !== undefined) {\n maxCount = options.maxCount;\n }\n}\nfunction getPlacementStyle(placement) {\n var top = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultTop;\n var bottom = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultBottom;\n var style;\n switch (placement) {\n case 'top':\n style = {\n left: '50%',\n transform: 'translateX(-50%)',\n right: 'auto',\n top: top,\n bottom: 'auto'\n };\n break;\n case 'topLeft':\n style = {\n left: 0,\n top: top,\n bottom: 'auto'\n };\n break;\n case 'topRight':\n style = {\n right: 0,\n top: top,\n bottom: 'auto'\n };\n break;\n case 'bottom':\n style = {\n left: '50%',\n transform: 'translateX(-50%)',\n right: 'auto',\n top: 'auto',\n bottom: bottom\n };\n break;\n case 'bottomLeft':\n style = {\n left: 0,\n top: 'auto',\n bottom: bottom\n };\n break;\n default:\n style = {\n right: 0,\n top: 'auto',\n bottom: bottom\n };\n break;\n }\n return style;\n}\nfunction getNotificationInstance(args, callback) {\n var _args$placement = args.placement,\n placement = _args$placement === void 0 ? defaultPlacement : _args$placement,\n top = args.top,\n bottom = args.bottom,\n _args$getContainer = args.getContainer,\n getContainer = _args$getContainer === void 0 ? defaultGetContainer : _args$getContainer,\n customizePrefixCls = args.prefixCls;\n var _globalConfig = globalConfig(),\n getPrefixCls = _globalConfig.getPrefixCls,\n getIconPrefixCls = _globalConfig.getIconPrefixCls;\n var prefixCls = getPrefixCls('notification', customizePrefixCls || defaultPrefixCls);\n var iconPrefixCls = getIconPrefixCls();\n var cacheKey = \"\".concat(prefixCls, \"-\").concat(placement);\n var cacheInstance = notificationInstance[cacheKey];\n if (cacheInstance) {\n Promise.resolve(cacheInstance).then(function (instance) {\n callback({\n prefixCls: \"\".concat(prefixCls, \"-notice\"),\n iconPrefixCls: iconPrefixCls,\n instance: instance\n });\n });\n return;\n }\n var notificationClass = classNames(\"\".concat(prefixCls, \"-\").concat(placement), _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), rtl === true));\n notificationInstance[cacheKey] = new Promise(function (resolve) {\n Notification.newInstance({\n prefixCls: prefixCls,\n className: notificationClass,\n style: getPlacementStyle(placement, top, bottom),\n getContainer: getContainer,\n maxCount: maxCount\n }, function (notification) {\n resolve(notification);\n callback({\n prefixCls: \"\".concat(prefixCls, \"-notice\"),\n iconPrefixCls: iconPrefixCls,\n instance: notification\n });\n });\n });\n}\nvar typeToIcon = {\n success: CheckCircleOutlined,\n info: InfoCircleOutlined,\n error: CloseCircleOutlined,\n warning: ExclamationCircleOutlined\n};\nfunction getRCNoticeProps(args, prefixCls, iconPrefixCls) {\n var durationArg = args.duration,\n icon = args.icon,\n type = args.type,\n description = args.description,\n message = args.message,\n btn = args.btn,\n onClose = args.onClose,\n onClick = args.onClick,\n key = args.key,\n style = args.style,\n className = args.className,\n _args$closeIcon = args.closeIcon,\n closeIcon = _args$closeIcon === void 0 ? defaultCloseIcon : _args$closeIcon,\n props = args.props;\n var duration = durationArg === undefined ? defaultDuration : durationArg;\n var iconNode = null;\n if (icon) {\n iconNode = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-icon\")\n }, args.icon);\n } else if (type) {\n iconNode = /*#__PURE__*/React.createElement(typeToIcon[type] || null, {\n className: \"\".concat(prefixCls, \"-icon \").concat(prefixCls, \"-icon-\").concat(type)\n });\n }\n var closeIconToRender = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-close-x\")\n }, closeIcon || /*#__PURE__*/React.createElement(CloseOutlined, {\n className: \"\".concat(prefixCls, \"-close-icon\")\n }));\n var autoMarginTag = !description && iconNode ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-message-single-line-auto-margin\")\n }) : null;\n return {\n content: /*#__PURE__*/React.createElement(ConfigProvider, {\n iconPrefixCls: iconPrefixCls\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: iconNode ? \"\".concat(prefixCls, \"-with-icon\") : '',\n role: \"alert\"\n }, iconNode, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-message\")\n }, autoMarginTag, message), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-description\")\n }, description), btn ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-btn\")\n }, btn) : null)),\n duration: duration,\n closable: true,\n closeIcon: closeIconToRender,\n onClose: onClose,\n onClick: onClick,\n key: key,\n style: style || {},\n className: classNames(className, _defineProperty({}, \"\".concat(prefixCls, \"-\").concat(type), !!type)),\n props: props\n };\n}\nfunction notice(args) {\n getNotificationInstance(args, function (_ref) {\n var prefixCls = _ref.prefixCls,\n iconPrefixCls = _ref.iconPrefixCls,\n instance = _ref.instance;\n instance.notice(getRCNoticeProps(args, prefixCls, iconPrefixCls));\n });\n}\nvar api = {\n open: notice,\n close: function close(key) {\n Object.keys(notificationInstance).forEach(function (cacheKey) {\n return Promise.resolve(notificationInstance[cacheKey]).then(function (instance) {\n instance.removeNotice(key);\n });\n });\n },\n config: setNotificationConfig,\n destroy: function destroy() {\n Object.keys(notificationInstance).forEach(function (cacheKey) {\n Promise.resolve(notificationInstance[cacheKey]).then(function (instance) {\n instance.destroy();\n });\n delete notificationInstance[cacheKey]; // lgtm[js/missing-await]\n });\n }\n};\n\n['success', 'info', 'warning', 'error'].forEach(function (type) {\n api[type] = function (args) {\n return api.open(_extends(_extends({}, args), {\n type: type\n }));\n };\n});\napi.warn = api.warning;\napi.useNotification = createUseNotification(getNotificationInstance, getRCNoticeProps);\n/** @internal test Only function. Not work on production */\nexport var getInstance = function getInstance(cacheKey) {\n return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", process.env.NODE_ENV === 'test' ? notificationInstance[cacheKey] : null);\n case 1:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n};\nexport default api;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useRCNotification from \"rc-notification/es/useNotification\";\nimport * as React from 'react';\nimport { ConfigConsumer } from '../../config-provider';\nexport default function createUseNotification(getNotificationInstance, getRCNoticeProps) {\n var useNotification = function useNotification() {\n // We can only get content by render\n var getPrefixCls;\n // We create a proxy to handle delay created instance\n var innerInstance = null;\n var proxy = {\n add: function add(noticeProps, holderCallback) {\n innerInstance === null || innerInstance === void 0 ? void 0 : innerInstance.component.add(noticeProps, holderCallback);\n }\n };\n var _useRCNotification = useRCNotification(proxy),\n _useRCNotification2 = _slicedToArray(_useRCNotification, 2),\n hookNotify = _useRCNotification2[0],\n holder = _useRCNotification2[1];\n function notify(args) {\n var customizePrefixCls = args.prefixCls;\n var mergedPrefixCls = getPrefixCls('notification', customizePrefixCls);\n getNotificationInstance(_extends(_extends({}, args), {\n prefixCls: mergedPrefixCls\n }), function (_ref) {\n var prefixCls = _ref.prefixCls,\n instance = _ref.instance;\n innerInstance = instance;\n hookNotify(getRCNoticeProps(args, prefixCls));\n });\n }\n // Fill functions\n var hookApiRef = React.useRef({});\n hookApiRef.current.open = notify;\n ['success', 'info', 'warning', 'error'].forEach(function (type) {\n hookApiRef.current[type] = function (args) {\n return hookApiRef.current.open(_extends(_extends({}, args), {\n type: type\n }));\n };\n });\n return [hookApiRef.current, /*#__PURE__*/React.createElement(ConfigConsumer, {\n key: \"holder\"\n }, function (context) {\n getPrefixCls = context.getPrefixCls;\n return holder;\n })];\n };\n return useNotification;\n}","export var getRenderPropValue = function getRenderPropValue(propValue) {\n if (!propValue) {\n return null;\n }\n if (typeof propValue === 'function') {\n return propValue();\n }\n return propValue;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Tooltip from '../tooltip';\nimport { getRenderPropValue } from '../_util/getRenderPropValue';\nimport { getTransitionName } from '../_util/motion';\nvar Overlay = function Overlay(_ref) {\n var title = _ref.title,\n content = _ref.content,\n prefixCls = _ref.prefixCls;\n if (!title && !content) {\n return null;\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, title && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-title\")\n }, getRenderPropValue(title)), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-inner-content\")\n }, getRenderPropValue(content)));\n};\nvar Popover = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var customizePrefixCls = props.prefixCls,\n title = props.title,\n content = props.content,\n _overlay = props._overlay,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'top' : _props$placement,\n _props$trigger = props.trigger,\n trigger = _props$trigger === void 0 ? 'hover' : _props$trigger,\n _props$mouseEnterDela = props.mouseEnterDelay,\n mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0.1 : _props$mouseEnterDela,\n _props$mouseLeaveDela = props.mouseLeaveDelay,\n mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n _props$overlayStyle = props.overlayStyle,\n overlayStyle = _props$overlayStyle === void 0 ? {} : _props$overlayStyle,\n otherProps = __rest(props, [\"prefixCls\", \"title\", \"content\", \"_overlay\", \"placement\", \"trigger\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"overlayStyle\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var prefixCls = getPrefixCls('popover', customizePrefixCls);\n var rootPrefixCls = getPrefixCls();\n return /*#__PURE__*/React.createElement(Tooltip, _extends({\n placement: placement,\n trigger: trigger,\n mouseEnterDelay: mouseEnterDelay,\n mouseLeaveDelay: mouseLeaveDelay,\n overlayStyle: overlayStyle\n }, otherProps, {\n prefixCls: prefixCls,\n ref: ref,\n overlay: _overlay || /*#__PURE__*/React.createElement(Overlay, {\n prefixCls: prefixCls,\n title: title,\n content: content\n }),\n transitionName: getTransitionName(rootPrefixCls, 'zoom-big', otherProps.transitionName)\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n Popover.displayName = 'Popover';\n}\nexport default Popover;","import { useRef, useEffect } from 'react';\nexport var defaultProps = {\n percent: 0,\n prefixCls: 'rc-progress',\n strokeColor: '#2db7f5',\n strokeLinecap: 'round',\n strokeWidth: 1,\n trailColor: '#D9D9D9',\n trailWidth: 1,\n gapPosition: 'bottom'\n};\nexport var useTransitionDuration = function useTransitionDuration() {\n var pathsRef = useRef([]);\n var prevTimeStamp = useRef(null);\n useEffect(function () {\n var now = Date.now();\n var updated = false;\n pathsRef.current.forEach(function (path) {\n if (!path) {\n return;\n }\n updated = true;\n var pathStyle = path.style;\n pathStyle.transitionDuration = '.3s, .3s, .3s, .06s';\n if (prevTimeStamp.current && now - prevTimeStamp.current < 100) {\n pathStyle.transitionDuration = '0s, 0s';\n }\n });\n if (updated) {\n prevTimeStamp.current = Date.now();\n }\n });\n return pathsRef.current;\n};","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nvar uuid = 0;\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && canUseDom();\n/** Get unique id for accessibility usage */\nfunction getUUID() {\n var retId;\n // Test never reach\n /* istanbul ignore if */\n if (isBrowserClient) {\n retId = uuid;\n uuid += 1;\n } else {\n retId = 'TEST_OR_SSR';\n }\n return retId;\n}\nexport default (function (id) {\n // Inner id for accessibility usage. Only work in client side\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerId = _React$useState2[0],\n setInnerId = _React$useState2[1];\n React.useEffect(function () {\n setInnerId(\"rc_progress_\".concat(getUUID()));\n }, []);\n return id || innerId;\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"id\", \"prefixCls\", \"steps\", \"strokeWidth\", \"trailWidth\", \"gapDegree\", \"gapPosition\", \"trailColor\", \"strokeLinecap\", \"style\", \"className\", \"strokeColor\", \"percent\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { defaultProps, useTransitionDuration } from './common';\nimport useId from './hooks/useId';\nfunction stripPercentToNumber(percent) {\n return +percent.replace('%', '');\n}\nfunction toArray(value) {\n var mergedValue = value !== null && value !== void 0 ? value : [];\n return Array.isArray(mergedValue) ? mergedValue : [mergedValue];\n}\nvar VIEW_BOX_SIZE = 100;\nvar getCircleStyle = function getCircleStyle(perimeter, perimeterWithoutGap, offset, percent, rotateDeg, gapDegree, gapPosition, strokeColor, strokeLinecap, strokeWidth) {\n var stepSpace = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : 0;\n var offsetDeg = offset / 100 * 360 * ((360 - gapDegree) / 360);\n var positionDeg = gapDegree === 0 ? 0 : {\n bottom: 0,\n top: 180,\n left: 90,\n right: -90\n }[gapPosition];\n var strokeDashoffset = (100 - percent) / 100 * perimeterWithoutGap;\n // Fix percent accuracy when strokeLinecap is round\n // https://github.com/ant-design/ant-design/issues/35009\n if (strokeLinecap === 'round' && percent !== 100) {\n strokeDashoffset += strokeWidth / 2;\n // when percent is small enough (<= 1%), keep smallest value to avoid it's disappearance\n if (strokeDashoffset >= perimeterWithoutGap) {\n strokeDashoffset = perimeterWithoutGap - 0.01;\n }\n }\n return {\n stroke: typeof strokeColor === 'string' ? strokeColor : undefined,\n strokeDasharray: \"\".concat(perimeterWithoutGap, \"px \").concat(perimeter),\n strokeDashoffset: strokeDashoffset + stepSpace,\n transform: \"rotate(\".concat(rotateDeg + offsetDeg + positionDeg, \"deg)\"),\n transformOrigin: '0 0',\n transition: 'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s',\n fillOpacity: 0\n };\n};\nvar Circle = function Circle(props) {\n var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),\n id = _defaultProps$props.id,\n prefixCls = _defaultProps$props.prefixCls,\n steps = _defaultProps$props.steps,\n strokeWidth = _defaultProps$props.strokeWidth,\n trailWidth = _defaultProps$props.trailWidth,\n _defaultProps$props$g = _defaultProps$props.gapDegree,\n gapDegree = _defaultProps$props$g === void 0 ? 0 : _defaultProps$props$g,\n gapPosition = _defaultProps$props.gapPosition,\n trailColor = _defaultProps$props.trailColor,\n strokeLinecap = _defaultProps$props.strokeLinecap,\n style = _defaultProps$props.style,\n className = _defaultProps$props.className,\n strokeColor = _defaultProps$props.strokeColor,\n percent = _defaultProps$props.percent,\n restProps = _objectWithoutProperties(_defaultProps$props, _excluded);\n var mergedId = useId(id);\n var gradientId = \"\".concat(mergedId, \"-gradient\");\n var radius = VIEW_BOX_SIZE / 2 - strokeWidth / 2;\n var perimeter = Math.PI * 2 * radius;\n var rotateDeg = gapDegree > 0 ? 90 + gapDegree / 2 : -90;\n var perimeterWithoutGap = perimeter * ((360 - gapDegree) / 360);\n var _ref = _typeof(steps) === 'object' ? steps : {\n count: steps,\n space: 2\n },\n stepCount = _ref.count,\n stepSpace = _ref.space;\n var circleStyle = getCircleStyle(perimeter, perimeterWithoutGap, 0, 100, rotateDeg, gapDegree, gapPosition, trailColor, strokeLinecap, strokeWidth);\n var percentList = toArray(percent);\n var strokeColorList = toArray(strokeColor);\n var gradient = strokeColorList.find(function (color) {\n return color && _typeof(color) === 'object';\n });\n var paths = useTransitionDuration();\n var getStokeList = function getStokeList() {\n var stackPtg = 0;\n return percentList.map(function (ptg, index) {\n var color = strokeColorList[index] || strokeColorList[strokeColorList.length - 1];\n var stroke = color && _typeof(color) === 'object' ? \"url(#\".concat(gradientId, \")\") : undefined;\n var circleStyleForStack = getCircleStyle(perimeter, perimeterWithoutGap, stackPtg, ptg, rotateDeg, gapDegree, gapPosition, color, strokeLinecap, strokeWidth);\n stackPtg += ptg;\n return /*#__PURE__*/React.createElement(\"circle\", {\n key: index,\n className: \"\".concat(prefixCls, \"-circle-path\"),\n r: radius,\n cx: 0,\n cy: 0,\n stroke: stroke,\n strokeLinecap: strokeLinecap,\n strokeWidth: strokeWidth,\n opacity: ptg === 0 ? 0 : 1,\n style: circleStyleForStack,\n ref: function ref(elem) {\n // https://reactjs.org/docs/refs-and-the-dom.html#callback-refs\n // React will call the ref callback with the DOM element when the component mounts,\n // and call it with `null` when it unmounts.\n // Refs are guaranteed to be up-to-date before componentDidMount or componentDidUpdate fires.\n paths[index] = elem;\n }\n });\n }).reverse();\n };\n var getStepStokeList = function getStepStokeList() {\n // only show the first percent when pass steps\n var current = Math.round(stepCount * (percentList[0] / 100));\n var stepPtg = 100 / stepCount;\n var stackPtg = 0;\n return new Array(stepCount).fill(null).map(function (_, index) {\n var color = index <= current - 1 ? strokeColorList[0] : trailColor;\n var stroke = color && _typeof(color) === 'object' ? \"url(#\".concat(gradientId, \")\") : undefined;\n var circleStyleForStack = getCircleStyle(perimeter, perimeterWithoutGap, stackPtg, stepPtg, rotateDeg, gapDegree, gapPosition, color, 'butt', strokeWidth, stepSpace);\n stackPtg += (perimeterWithoutGap - circleStyleForStack.strokeDashoffset + stepSpace) * 100 / perimeterWithoutGap;\n return /*#__PURE__*/React.createElement(\"circle\", {\n key: index,\n className: \"\".concat(prefixCls, \"-circle-path\"),\n r: radius,\n cx: 0,\n cy: 0,\n stroke: stroke\n // strokeLinecap={strokeLinecap}\n ,\n strokeWidth: strokeWidth,\n opacity: 1,\n style: circleStyleForStack,\n ref: function ref(elem) {\n paths[index] = elem;\n }\n });\n });\n };\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n className: classNames(\"\".concat(prefixCls, \"-circle\"), className),\n viewBox: \"\".concat(-VIEW_BOX_SIZE / 2, \" \").concat(-VIEW_BOX_SIZE / 2, \" \").concat(VIEW_BOX_SIZE, \" \").concat(VIEW_BOX_SIZE),\n style: style,\n id: id,\n role: \"presentation\"\n }, restProps), gradient && /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: gradientId,\n x1: \"100%\",\n y1: \"0%\",\n x2: \"0%\",\n y2: \"0%\"\n }, Object.keys(gradient).sort(function (a, b) {\n return stripPercentToNumber(a) - stripPercentToNumber(b);\n }).map(function (key, index) {\n return /*#__PURE__*/React.createElement(\"stop\", {\n key: index,\n offset: key,\n stopColor: gradient[key]\n });\n }))), !stepCount && /*#__PURE__*/React.createElement(\"circle\", {\n className: \"\".concat(prefixCls, \"-circle-trail\"),\n r: radius,\n cx: 0,\n cy: 0,\n stroke: trailColor,\n strokeLinecap: strokeLinecap,\n strokeWidth: trailWidth || strokeWidth,\n style: circleStyle\n }), stepCount ? getStepStokeList() : getStokeList());\n};\nif (process.env.NODE_ENV !== 'production') {\n Circle.displayName = 'Circle';\n}\nexport default Circle;","import warning from '../_util/warning';\nexport function validProgress(progress) {\n if (!progress || progress < 0) {\n return 0;\n }\n if (progress > 100) {\n return 100;\n }\n return progress;\n}\nexport function getSuccessPercent(_ref) {\n var success = _ref.success,\n successPercent = _ref.successPercent;\n var percent = successPercent;\n /** @deprecated Use `percent` instead */\n if (success && 'progress' in success) {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Progress', '`success.progress` is deprecated. Please use `success.percent` instead.') : void 0;\n percent = success.progress;\n }\n if (success && 'percent' in success) {\n percent = success.percent;\n }\n return percent;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { presetPrimaryColors } from '@ant-design/colors';\nimport classNames from 'classnames';\nimport { Circle as RCCircle } from 'rc-progress';\nimport * as React from 'react';\nimport { getSuccessPercent, validProgress } from './utils';\nfunction getPercentage(_ref) {\n var percent = _ref.percent,\n success = _ref.success,\n successPercent = _ref.successPercent;\n var realSuccessPercent = validProgress(getSuccessPercent({\n success: success,\n successPercent: successPercent\n }));\n return [realSuccessPercent, validProgress(validProgress(percent) - realSuccessPercent)];\n}\nfunction getStrokeColor(_ref2) {\n var _ref2$success = _ref2.success,\n success = _ref2$success === void 0 ? {} : _ref2$success,\n strokeColor = _ref2.strokeColor;\n var successColor = success.strokeColor;\n return [successColor || presetPrimaryColors.green, strokeColor || null];\n}\nvar Circle = function Circle(props) {\n var prefixCls = props.prefixCls,\n width = props.width,\n strokeWidth = props.strokeWidth,\n _props$trailColor = props.trailColor,\n trailColor = _props$trailColor === void 0 ? null : _props$trailColor,\n _props$strokeLinecap = props.strokeLinecap,\n strokeLinecap = _props$strokeLinecap === void 0 ? 'round' : _props$strokeLinecap,\n gapPosition = props.gapPosition,\n gapDegree = props.gapDegree,\n type = props.type,\n children = props.children,\n success = props.success;\n var circleSize = width || 120;\n var circleStyle = {\n width: circleSize,\n height: circleSize,\n fontSize: circleSize * 0.15 + 6\n };\n var circleWidth = strokeWidth || 6;\n var gapPos = gapPosition || type === 'dashboard' && 'bottom' || undefined;\n var getGapDegree = function getGapDegree() {\n // Support gapDeg = 0 when type = 'dashboard'\n if (gapDegree || gapDegree === 0) {\n return gapDegree;\n }\n if (type === 'dashboard') {\n return 75;\n }\n return undefined;\n };\n // using className to style stroke color\n var isGradient = Object.prototype.toString.call(props.strokeColor) === '[object Object]';\n var strokeColor = getStrokeColor({\n success: success,\n strokeColor: props.strokeColor\n });\n var wrapperClassName = classNames(\"\".concat(prefixCls, \"-inner\"), _defineProperty({}, \"\".concat(prefixCls, \"-circle-gradient\"), isGradient));\n return /*#__PURE__*/React.createElement(\"div\", {\n className: wrapperClassName,\n style: circleStyle\n }, /*#__PURE__*/React.createElement(RCCircle, {\n percent: getPercentage(props),\n strokeWidth: circleWidth,\n trailWidth: circleWidth,\n strokeColor: strokeColor,\n strokeLinecap: strokeLinecap,\n trailColor: trailColor,\n prefixCls: prefixCls,\n gapDegree: getGapDegree(),\n gapPosition: gapPos\n }), children);\n};\nexport default Circle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { presetPrimaryColors } from '@ant-design/colors';\nimport * as React from 'react';\nimport { getSuccessPercent, validProgress } from './utils';\n/**\n * @example\n * {\n * \"0%\": \"#afc163\",\n * \"75%\": \"#009900\",\n * \"50%\": \"green\", // ====> '#afc163 0%, #66FF00 25%, #00CC00 50%, #009900 75%, #ffffff 100%'\n * \"25%\": \"#66FF00\",\n * \"100%\": \"#ffffff\"\n * }\n */\nexport var sortGradient = function sortGradient(gradients) {\n var tempArr = [];\n Object.keys(gradients).forEach(function (key) {\n var formattedKey = parseFloat(key.replace(/%/g, ''));\n if (!isNaN(formattedKey)) {\n tempArr.push({\n key: formattedKey,\n value: gradients[key]\n });\n }\n });\n tempArr = tempArr.sort(function (a, b) {\n return a.key - b.key;\n });\n return tempArr.map(function (_ref) {\n var key = _ref.key,\n value = _ref.value;\n return \"\".concat(value, \" \").concat(key, \"%\");\n }).join(', ');\n};\n/**\n * Then this man came to realize the truth: Besides six pence, there is the moon. Besides bread and\n * butter, there is the bug. And... Besides women, there is the code.\n *\n * @example\n * {\n * \"0%\": \"#afc163\",\n * \"25%\": \"#66FF00\",\n * \"50%\": \"#00CC00\", // ====> linear-gradient(to right, #afc163 0%, #66FF00 25%,\n * \"75%\": \"#009900\", // #00CC00 50%, #009900 75%, #ffffff 100%)\n * \"100%\": \"#ffffff\"\n * }\n */\nexport var handleGradient = function handleGradient(strokeColor, directionConfig) {\n var _strokeColor$from = strokeColor.from,\n from = _strokeColor$from === void 0 ? presetPrimaryColors.blue : _strokeColor$from,\n _strokeColor$to = strokeColor.to,\n to = _strokeColor$to === void 0 ? presetPrimaryColors.blue : _strokeColor$to,\n _strokeColor$directio = strokeColor.direction,\n direction = _strokeColor$directio === void 0 ? directionConfig === 'rtl' ? 'to left' : 'to right' : _strokeColor$directio,\n rest = __rest(strokeColor, [\"from\", \"to\", \"direction\"]);\n if (Object.keys(rest).length !== 0) {\n var sortedGradients = sortGradient(rest);\n return {\n backgroundImage: \"linear-gradient(\".concat(direction, \", \").concat(sortedGradients, \")\")\n };\n }\n return {\n backgroundImage: \"linear-gradient(\".concat(direction, \", \").concat(from, \", \").concat(to, \")\")\n };\n};\nvar Line = function Line(props) {\n var prefixCls = props.prefixCls,\n directionConfig = props.direction,\n percent = props.percent,\n strokeWidth = props.strokeWidth,\n size = props.size,\n strokeColor = props.strokeColor,\n _props$strokeLinecap = props.strokeLinecap,\n strokeLinecap = _props$strokeLinecap === void 0 ? 'round' : _props$strokeLinecap,\n children = props.children,\n _props$trailColor = props.trailColor,\n trailColor = _props$trailColor === void 0 ? null : _props$trailColor,\n success = props.success;\n var backgroundProps = strokeColor && typeof strokeColor !== 'string' ? handleGradient(strokeColor, directionConfig) : {\n background: strokeColor\n };\n var borderRadius = strokeLinecap === 'square' || strokeLinecap === 'butt' ? 0 : undefined;\n var trailStyle = {\n backgroundColor: trailColor || undefined,\n borderRadius: borderRadius\n };\n var percentStyle = _extends({\n width: \"\".concat(validProgress(percent), \"%\"),\n height: strokeWidth || (size === 'small' ? 6 : 8),\n borderRadius: borderRadius\n }, backgroundProps);\n var successPercent = getSuccessPercent(props);\n var successPercentStyle = {\n width: \"\".concat(validProgress(successPercent), \"%\"),\n height: strokeWidth || (size === 'small' ? 6 : 8),\n borderRadius: borderRadius,\n backgroundColor: success === null || success === void 0 ? void 0 : success.strokeColor\n };\n var successSegment = successPercent !== undefined ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-success-bg\"),\n style: successPercentStyle\n }) : null;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-outer\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-inner\"),\n style: trailStyle\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-bg\"),\n style: percentStyle\n }), successSegment)), children);\n};\nexport default Line;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar Steps = function Steps(props) {\n var size = props.size,\n steps = props.steps,\n _props$percent = props.percent,\n percent = _props$percent === void 0 ? 0 : _props$percent,\n _props$strokeWidth = props.strokeWidth,\n strokeWidth = _props$strokeWidth === void 0 ? 8 : _props$strokeWidth,\n strokeColor = props.strokeColor,\n _props$trailColor = props.trailColor,\n trailColor = _props$trailColor === void 0 ? null : _props$trailColor,\n prefixCls = props.prefixCls,\n children = props.children;\n var current = Math.round(steps * (percent / 100));\n var stepWidth = size === 'small' ? 2 : 14;\n var styledSteps = new Array(steps);\n for (var i = 0; i < steps; i++) {\n var color = Array.isArray(strokeColor) ? strokeColor[i] : strokeColor;\n styledSteps[i] = /*#__PURE__*/React.createElement(\"div\", {\n key: i,\n className: classNames(\"\".concat(prefixCls, \"-steps-item\"), _defineProperty({}, \"\".concat(prefixCls, \"-steps-item-active\"), i <= current - 1)),\n style: {\n backgroundColor: i <= current - 1 ? color : trailColor,\n width: stepWidth,\n height: strokeWidth\n }\n });\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-steps-outer\")\n }, styledSteps, children);\n};\nexport default Steps;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CheckCircleFilled from \"@ant-design/icons/es/icons/CheckCircleFilled\";\nimport CheckOutlined from \"@ant-design/icons/es/icons/CheckOutlined\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { tuple } from '../_util/type';\nimport warning from '../_util/warning';\nimport Circle from './Circle';\nimport Line from './Line';\nimport Steps from './Steps';\nimport { getSuccessPercent, validProgress } from './utils';\nvar ProgressTypes = tuple('line', 'circle', 'dashboard');\nvar ProgressStatuses = tuple('normal', 'exception', 'active', 'success');\nvar Progress = function Progress(props) {\n var _classNames;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n steps = props.steps,\n strokeColor = props.strokeColor,\n _props$percent = props.percent,\n percent = _props$percent === void 0 ? 0 : _props$percent,\n _props$size = props.size,\n size = _props$size === void 0 ? 'default' : _props$size,\n _props$showInfo = props.showInfo,\n showInfo = _props$showInfo === void 0 ? true : _props$showInfo,\n _props$type = props.type,\n type = _props$type === void 0 ? 'line' : _props$type,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"steps\", \"strokeColor\", \"percent\", \"size\", \"showInfo\", \"type\"]);\n function getPercentNumber() {\n var successPercent = getSuccessPercent(props);\n return parseInt(successPercent !== undefined ? successPercent.toString() : percent.toString(), 10);\n }\n function getProgressStatus() {\n var status = props.status;\n if (!ProgressStatuses.includes(status) && getPercentNumber() >= 100) {\n return 'success';\n }\n return status || 'normal';\n }\n function renderProcessInfo(prefixCls, progressStatus) {\n var format = props.format;\n var successPercent = getSuccessPercent(props);\n if (!showInfo) {\n return null;\n }\n var text;\n var textFormatter = format || function (percentNumber) {\n return \"\".concat(percentNumber, \"%\");\n };\n var isLineType = type === 'line';\n if (format || progressStatus !== 'exception' && progressStatus !== 'success') {\n text = textFormatter(validProgress(percent), validProgress(successPercent));\n } else if (progressStatus === 'exception') {\n text = isLineType ? /*#__PURE__*/React.createElement(CloseCircleFilled, null) : /*#__PURE__*/React.createElement(CloseOutlined, null);\n } else if (progressStatus === 'success') {\n text = isLineType ? /*#__PURE__*/React.createElement(CheckCircleFilled, null) : /*#__PURE__*/React.createElement(CheckOutlined, null);\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-text\"),\n title: typeof text === 'string' ? text : undefined\n }, text);\n }\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var prefixCls = getPrefixCls('progress', customizePrefixCls);\n var progressStatus = getProgressStatus();\n var progressInfo = renderProcessInfo(prefixCls, progressStatus);\n process.env.NODE_ENV !== \"production\" ? warning(!('successPercent' in props), 'Progress', '`successPercent` is deprecated. Please use `success.percent` instead.') : void 0;\n var strokeColorNotArray = Array.isArray(strokeColor) ? strokeColor[0] : strokeColor;\n var strokeColorNotGradient = typeof strokeColor === 'string' || Array.isArray(strokeColor) ? strokeColor : undefined;\n var progress;\n // Render progress shape\n if (type === 'line') {\n progress = steps ? /*#__PURE__*/React.createElement(Steps, _extends({}, props, {\n strokeColor: strokeColorNotGradient,\n prefixCls: prefixCls,\n steps: steps\n }), progressInfo) : /*#__PURE__*/React.createElement(Line, _extends({}, props, {\n strokeColor: strokeColorNotArray,\n prefixCls: prefixCls,\n direction: direction\n }), progressInfo);\n } else if (type === 'circle' || type === 'dashboard') {\n progress = /*#__PURE__*/React.createElement(Circle, _extends({}, props, {\n strokeColor: strokeColorNotArray,\n prefixCls: prefixCls,\n progressStatus: progressStatus\n }), progressInfo);\n }\n var classString = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(type === 'dashboard' && 'circle' || steps && 'steps' || type), true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-\").concat(progressStatus), true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-show-info\"), showInfo), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(size), size), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, omit(restProps, ['status', 'format', 'trailColor', 'strokeWidth', 'width', 'gapDegree', 'gapPosition', 'strokeLinecap', 'success', 'successPercent']), {\n className: classString,\n role: \"progressbar\"\n }), progress);\n};\nexport default Progress;","import Progress from './progress';\nexport default Progress;","import * as React from 'react';\nvar RadioGroupContext = /*#__PURE__*/React.createContext(null);\nexport var RadioGroupContextProvider = RadioGroupContext.Provider;\nexport default RadioGroupContext;\nexport var RadioOptionTypeContext = /*#__PURE__*/React.createContext(null);\nexport var RadioOptionTypeContextProvider = RadioOptionTypeContext.Provider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport SizeContext from '../config-provider/SizeContext';\nimport getDataOrAriaProps from '../_util/getDataOrAriaProps';\nimport { RadioGroupContextProvider } from './context';\nimport Radio from './radio';\nvar RadioGroup = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var size = React.useContext(SizeContext);\n var _useMergedState = useMergedState(props.defaultValue, {\n value: props.value\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n value = _useMergedState2[0],\n setValue = _useMergedState2[1];\n var onRadioChange = function onRadioChange(ev) {\n var lastValue = value;\n var val = ev.target.value;\n if (!('value' in props)) {\n setValue(val);\n }\n var onChange = props.onChange;\n if (onChange && val !== lastValue) {\n onChange(ev);\n }\n };\n var customizePrefixCls = props.prefixCls,\n _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n options = props.options,\n _props$buttonStyle = props.buttonStyle,\n buttonStyle = _props$buttonStyle === void 0 ? 'outline' : _props$buttonStyle,\n disabled = props.disabled,\n children = props.children,\n customizeSize = props.size,\n style = props.style,\n id = props.id,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onFocus = props.onFocus,\n onBlur = props.onBlur;\n var prefixCls = getPrefixCls('radio', customizePrefixCls);\n var groupPrefixCls = \"\".concat(prefixCls, \"-group\");\n var childrenToRender = children;\n // 如果存在 options, 优先使用\n if (options && options.length > 0) {\n childrenToRender = options.map(function (option) {\n if (typeof option === 'string' || typeof option === 'number') {\n // 此处类型自动推导为 string\n return /*#__PURE__*/React.createElement(Radio, {\n key: option.toString(),\n prefixCls: prefixCls,\n disabled: disabled,\n value: option,\n checked: value === option\n }, option);\n }\n // 此处类型自动推导为 { label: string value: string }\n return /*#__PURE__*/React.createElement(Radio, {\n key: \"radio-group-value-options-\".concat(option.value),\n prefixCls: prefixCls,\n disabled: option.disabled || disabled,\n value: option.value,\n checked: value === option.value,\n style: option.style\n }, option.label);\n });\n }\n var mergedSize = customizeSize || size;\n var classString = classNames(groupPrefixCls, \"\".concat(groupPrefixCls, \"-\").concat(buttonStyle), (_classNames = {}, _defineProperty(_classNames, \"\".concat(groupPrefixCls, \"-\").concat(mergedSize), mergedSize), _defineProperty(_classNames, \"\".concat(groupPrefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, getDataOrAriaProps(props), {\n className: classString,\n style: style,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onFocus: onFocus,\n onBlur: onBlur,\n id: id,\n ref: ref\n }), /*#__PURE__*/React.createElement(RadioGroupContextProvider, {\n value: {\n onChange: onRadioChange,\n value: value,\n disabled: props.disabled,\n name: props.name,\n optionType: props.optionType\n }\n }, childrenToRender));\n});\nexport default /*#__PURE__*/React.memo(RadioGroup);","import Group from './group';\nimport InternalRadio from './radio';\nimport Button from './radioButton';\nexport { Button, Group };\nvar Radio = InternalRadio;\nRadio.Button = Button;\nRadio.Group = Group;\nRadio.__ANT_RADIO = true;\nexport default Radio;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport RcCheckbox from 'rc-checkbox';\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport { FormItemInputContext } from '../form/context';\nimport warning from '../_util/warning';\nimport RadioGroupContext, { RadioOptionTypeContext } from './context';\nvar InternalRadio = function InternalRadio(props, ref) {\n var _classNames;\n var groupContext = React.useContext(RadioGroupContext);\n var radioOptionTypeContext = React.useContext(RadioOptionTypeContext);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var innerRef = React.useRef();\n var mergedRef = composeRef(ref, innerRef);\n var _useContext = useContext(FormItemInputContext),\n isFormItemInput = _useContext.isFormItemInput;\n process.env.NODE_ENV !== \"production\" ? warning(!('optionType' in props), 'Radio', '`optionType` is only support in Radio.Group.') : void 0;\n var onChange = function onChange(e) {\n var _a, _b;\n (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, e);\n (_b = groupContext === null || groupContext === void 0 ? void 0 : groupContext.onChange) === null || _b === void 0 ? void 0 : _b.call(groupContext, e);\n };\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n children = props.children,\n style = props.style,\n customDisabled = props.disabled,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"children\", \"style\", \"disabled\"]);\n var radioPrefixCls = getPrefixCls('radio', customizePrefixCls);\n var prefixCls = ((groupContext === null || groupContext === void 0 ? void 0 : groupContext.optionType) || radioOptionTypeContext) === 'button' ? \"\".concat(radioPrefixCls, \"-button\") : radioPrefixCls;\n var radioProps = _extends({}, restProps);\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n radioProps.disabled = customDisabled || disabled;\n if (groupContext) {\n radioProps.name = groupContext.name;\n radioProps.onChange = onChange;\n radioProps.checked = props.value === groupContext.value;\n radioProps.disabled = radioProps.disabled || groupContext.disabled;\n }\n var wrapperClassString = classNames(\"\".concat(prefixCls, \"-wrapper\"), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-wrapper-checked\"), radioProps.checked), _defineProperty(_classNames, \"\".concat(prefixCls, \"-wrapper-disabled\"), radioProps.disabled), _defineProperty(_classNames, \"\".concat(prefixCls, \"-wrapper-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-wrapper-in-form-item\"), isFormItemInput), _classNames), className);\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/label-has-associated-control\n React.createElement(\"label\", {\n className: wrapperClassString,\n style: style,\n onMouseEnter: props.onMouseEnter,\n onMouseLeave: props.onMouseLeave\n }, /*#__PURE__*/React.createElement(RcCheckbox, _extends({}, radioProps, {\n type: \"radio\",\n prefixCls: prefixCls,\n ref: mergedRef\n })), children !== undefined ? /*#__PURE__*/React.createElement(\"span\", null, children) : null)\n );\n};\nvar Radio = /*#__PURE__*/React.forwardRef(InternalRadio);\nif (process.env.NODE_ENV !== 'production') {\n Radio.displayName = 'Radio';\n}\nexport default Radio;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { RadioOptionTypeContextProvider } from './context';\nimport Radio from './radio';\nvar RadioButton = function RadioButton(props, ref) {\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var customizePrefixCls = props.prefixCls,\n radioProps = __rest(props, [\"prefixCls\"]);\n var prefixCls = getPrefixCls('radio', customizePrefixCls);\n return /*#__PURE__*/React.createElement(RadioOptionTypeContextProvider, {\n value: \"button\"\n }, /*#__PURE__*/React.createElement(Radio, _extends({\n prefixCls: prefixCls\n }, radioProps, {\n type: \"radio\",\n ref: ref\n })));\n};\nexport default /*#__PURE__*/React.forwardRef(RadioButton);","import { Row } from '../grid';\nexport default Row;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n// TODO: 4.0 - codemod should help to change `filterOption` to support node props.\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport RcSelect, { OptGroup, Option } from 'rc-select';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { ConfigContext } from '../config-provider';\nimport defaultRenderEmpty from '../config-provider/defaultRenderEmpty';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport SizeContext from '../config-provider/SizeContext';\nimport { FormItemInputContext } from '../form/context';\nimport { getTransitionDirection, getTransitionName } from '../_util/motion';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport getIcons from './utils/iconUtil';\nimport warning from '../_util/warning';\nimport { useCompactItemContext } from '../space/Compact';\nvar SECRET_COMBOBOX_MODE_DO_NOT_USE = 'SECRET_COMBOBOX_MODE_DO_NOT_USE';\nvar InternalSelect = function InternalSelect(_a, ref) {\n var _classNames2;\n var customizePrefixCls = _a.prefixCls,\n _a$bordered = _a.bordered,\n bordered = _a$bordered === void 0 ? true : _a$bordered,\n className = _a.className,\n getPopupContainer = _a.getPopupContainer,\n dropdownClassName = _a.dropdownClassName,\n popupClassName = _a.popupClassName,\n _a$listHeight = _a.listHeight,\n listHeight = _a$listHeight === void 0 ? 256 : _a$listHeight,\n placement = _a.placement,\n _a$listItemHeight = _a.listItemHeight,\n listItemHeight = _a$listItemHeight === void 0 ? 24 : _a$listItemHeight,\n customizeSize = _a.size,\n customDisabled = _a.disabled,\n notFoundContent = _a.notFoundContent,\n customStatus = _a.status,\n showArrow = _a.showArrow,\n props = __rest(_a, [\"prefixCls\", \"bordered\", \"className\", \"getPopupContainer\", \"dropdownClassName\", \"popupClassName\", \"listHeight\", \"placement\", \"listItemHeight\", \"size\", \"disabled\", \"notFoundContent\", \"status\", \"showArrow\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getContextPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n renderEmpty = _React$useContext.renderEmpty,\n direction = _React$useContext.direction,\n virtual = _React$useContext.virtual,\n dropdownMatchSelectWidth = _React$useContext.dropdownMatchSelectWidth;\n var size = React.useContext(SizeContext);\n var prefixCls = getPrefixCls('select', customizePrefixCls);\n var rootPrefixCls = getPrefixCls();\n var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n compactSize = _useCompactItemContex.compactSize,\n compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n var mode = React.useMemo(function () {\n var m = props.mode;\n if (m === 'combobox') {\n return undefined;\n }\n if (m === SECRET_COMBOBOX_MODE_DO_NOT_USE) {\n return 'combobox';\n }\n return m;\n }, [props.mode]);\n var isMultiple = mode === 'multiple' || mode === 'tags';\n var mergedShowArrow = showArrow !== undefined ? showArrow : props.loading || !(isMultiple || mode === 'combobox');\n // =================== Warning =====================\n process.env.NODE_ENV !== \"production\" ? warning(!dropdownClassName, 'Select', '`dropdownClassName` is deprecated which will be removed in next major version. Please use `popupClassName` instead.') : void 0;\n // ===================== Form Status =====================\n var _useContext = useContext(FormItemInputContext),\n contextStatus = _useContext.status,\n hasFeedback = _useContext.hasFeedback,\n isFormItemInput = _useContext.isFormItemInput,\n feedbackIcon = _useContext.feedbackIcon;\n var mergedStatus = getMergedStatus(contextStatus, customStatus);\n // ===================== Empty =====================\n var mergedNotFound;\n if (notFoundContent !== undefined) {\n mergedNotFound = notFoundContent;\n } else if (mode === 'combobox') {\n mergedNotFound = null;\n } else {\n mergedNotFound = (renderEmpty || defaultRenderEmpty)('Select');\n }\n // ===================== Icons =====================\n var _getIcons = getIcons(_extends(_extends({}, props), {\n multiple: isMultiple,\n hasFeedback: hasFeedback,\n feedbackIcon: feedbackIcon,\n showArrow: mergedShowArrow,\n prefixCls: prefixCls\n })),\n suffixIcon = _getIcons.suffixIcon,\n itemIcon = _getIcons.itemIcon,\n removeIcon = _getIcons.removeIcon,\n clearIcon = _getIcons.clearIcon;\n var selectProps = omit(props, ['suffixIcon', 'itemIcon']);\n var rcSelectRtlDropdownClassName = classNames(popupClassName || dropdownClassName, _defineProperty({}, \"\".concat(prefixCls, \"-dropdown-\").concat(direction), direction === 'rtl'));\n var mergedSize = compactSize || customizeSize || size;\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n var mergedClassName = classNames((_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-lg\"), mergedSize === 'large'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-sm\"), mergedSize === 'small'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-borderless\"), !bordered), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-in-form-item\"), isFormItemInput), _classNames2), getStatusClassNames(prefixCls, mergedStatus, hasFeedback), compactItemClassnames, className);\n // ===================== Placement =====================\n var getPlacement = function getPlacement() {\n if (placement !== undefined) {\n return placement;\n }\n return direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n };\n return /*#__PURE__*/React.createElement(RcSelect, _extends({\n ref: ref,\n virtual: virtual,\n dropdownMatchSelectWidth: dropdownMatchSelectWidth\n }, selectProps, {\n transitionName: getTransitionName(rootPrefixCls, getTransitionDirection(placement), props.transitionName),\n listHeight: listHeight,\n listItemHeight: listItemHeight,\n mode: mode,\n prefixCls: prefixCls,\n placement: getPlacement(),\n direction: direction,\n inputIcon: suffixIcon,\n menuItemSelectedIcon: itemIcon,\n removeIcon: removeIcon,\n clearIcon: clearIcon,\n notFoundContent: mergedNotFound,\n className: mergedClassName,\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n dropdownClassName: rcSelectRtlDropdownClassName,\n showArrow: hasFeedback || showArrow,\n disabled: mergedDisabled\n }));\n};\nvar Select = /*#__PURE__*/React.forwardRef(InternalSelect);\nSelect.SECRET_COMBOBOX_MODE_DO_NOT_USE = SECRET_COMBOBOX_MODE_DO_NOT_USE;\nSelect.Option = Option;\nSelect.OptGroup = OptGroup;\nexport default Select;","import CheckOutlined from \"@ant-design/icons/es/icons/CheckOutlined\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport DownOutlined from \"@ant-design/icons/es/icons/DownOutlined\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport SearchOutlined from \"@ant-design/icons/es/icons/SearchOutlined\";\nimport * as React from 'react';\nexport default function getIcons(_ref) {\n var suffixIcon = _ref.suffixIcon,\n clearIcon = _ref.clearIcon,\n menuItemSelectedIcon = _ref.menuItemSelectedIcon,\n removeIcon = _ref.removeIcon,\n loading = _ref.loading,\n multiple = _ref.multiple,\n hasFeedback = _ref.hasFeedback,\n prefixCls = _ref.prefixCls,\n showArrow = _ref.showArrow,\n feedbackIcon = _ref.feedbackIcon;\n // Clear Icon\n var mergedClearIcon = clearIcon !== null && clearIcon !== void 0 ? clearIcon : /*#__PURE__*/React.createElement(CloseCircleFilled, null);\n // Validation Feedback Icon\n var getSuffixIconNode = function getSuffixIconNode(arrowIcon) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, showArrow !== false && arrowIcon, hasFeedback && feedbackIcon);\n };\n // Arrow item icon\n var mergedSuffixIcon = null;\n if (suffixIcon !== undefined) {\n mergedSuffixIcon = getSuffixIconNode(suffixIcon);\n } else if (loading) {\n mergedSuffixIcon = getSuffixIconNode( /*#__PURE__*/React.createElement(LoadingOutlined, {\n spin: true\n }));\n } else {\n var iconCls = \"\".concat(prefixCls, \"-suffix\");\n mergedSuffixIcon = function mergedSuffixIcon(_ref2) {\n var open = _ref2.open,\n showSearch = _ref2.showSearch;\n if (open && showSearch) {\n return getSuffixIconNode( /*#__PURE__*/React.createElement(SearchOutlined, {\n className: iconCls\n }));\n }\n return getSuffixIconNode( /*#__PURE__*/React.createElement(DownOutlined, {\n className: iconCls\n }));\n };\n }\n // Checked item icon\n var mergedItemIcon = null;\n if (menuItemSelectedIcon !== undefined) {\n mergedItemIcon = menuItemSelectedIcon;\n } else if (multiple) {\n mergedItemIcon = /*#__PURE__*/React.createElement(CheckOutlined, null);\n } else {\n mergedItemIcon = null;\n }\n var mergedRemoveIcon = null;\n if (removeIcon !== undefined) {\n mergedRemoveIcon = removeIcon;\n } else {\n mergedRemoveIcon = /*#__PURE__*/React.createElement(CloseOutlined, null);\n }\n return {\n clearIcon: mergedClearIcon,\n suffixIcon: mergedSuffixIcon,\n itemIcon: mergedItemIcon,\n removeIcon: mergedRemoveIcon\n };\n}","import * as React from 'react';\nvar SliderContext = /*#__PURE__*/React.createContext({\n min: 0,\n max: 0,\n direction: 'ltr',\n step: 1,\n includedStart: 0,\n includedEnd: 0,\n tabIndex: 0\n});\nexport default SliderContext;","export function getOffset(value, min, max) {\n return (value - min) / (max - min);\n}\nexport function getDirectionStyle(direction, value, min, max) {\n var offset = getOffset(value, min, max);\n var positionStyle = {};\n\n switch (direction) {\n case 'rtl':\n positionStyle.right = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateX(50%)';\n break;\n\n case 'btt':\n positionStyle.bottom = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateY(50%)';\n break;\n\n case 'ttb':\n positionStyle.top = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateY(-50%)';\n break;\n\n default:\n positionStyle.left = \"\".concat(offset * 100, \"%\");\n positionStyle.transform = 'translateX(-50%)';\n break;\n }\n\n return positionStyle;\n}\n/** Return index value if is list or return value directly */\n\nexport function getIndex(value, index) {\n return Array.isArray(value) ? value[index] : value;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"value\", \"valueIndex\", \"onStartMove\", \"style\", \"render\", \"dragging\", \"onOffsetChange\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport SliderContext from '../context';\nimport { getDirectionStyle, getIndex } from '../util';\nvar Handle = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames, _getIndex;\n\n var prefixCls = props.prefixCls,\n value = props.value,\n valueIndex = props.valueIndex,\n onStartMove = props.onStartMove,\n style = props.style,\n render = props.render,\n dragging = props.dragging,\n onOffsetChange = props.onOffsetChange,\n restProps = _objectWithoutProperties(props, _excluded);\n\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n disabled = _React$useContext.disabled,\n range = _React$useContext.range,\n tabIndex = _React$useContext.tabIndex,\n ariaLabelForHandle = _React$useContext.ariaLabelForHandle,\n ariaLabelledByForHandle = _React$useContext.ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle = _React$useContext.ariaValueTextFormatterForHandle;\n\n var handlePrefixCls = \"\".concat(prefixCls, \"-handle\"); // ============================ Events ============================\n\n var onInternalStartMove = function onInternalStartMove(e) {\n if (!disabled) {\n onStartMove(e, valueIndex);\n }\n }; // =========================== Keyboard ===========================\n\n\n var onKeyDown = function onKeyDown(e) {\n if (!disabled) {\n var offset = null; // Change the value\n\n switch (e.which || e.keyCode) {\n case KeyCode.LEFT:\n offset = direction === 'ltr' || direction === 'btt' ? -1 : 1;\n break;\n\n case KeyCode.RIGHT:\n offset = direction === 'ltr' || direction === 'btt' ? 1 : -1;\n break;\n // Up is plus\n\n case KeyCode.UP:\n offset = direction !== 'ttb' ? 1 : -1;\n break;\n // Down is minus\n\n case KeyCode.DOWN:\n offset = direction !== 'ttb' ? -1 : 1;\n break;\n\n case KeyCode.HOME:\n offset = 'min';\n break;\n\n case KeyCode.END:\n offset = 'max';\n break;\n\n case KeyCode.PAGE_UP:\n offset = 2;\n break;\n\n case KeyCode.PAGE_DOWN:\n offset = -2;\n break;\n }\n\n if (offset !== null) {\n e.preventDefault();\n onOffsetChange(offset, valueIndex);\n }\n }\n }; // ============================ Offset ============================\n\n\n var positionStyle = getDirectionStyle(direction, value, min, max); // ============================ Render ============================\n\n var handleNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n className: classNames(handlePrefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(handlePrefixCls, \"-\").concat(valueIndex + 1), range), _defineProperty(_classNames, \"\".concat(handlePrefixCls, \"-dragging\"), dragging), _classNames)),\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: onInternalStartMove,\n onTouchStart: onInternalStartMove,\n onKeyDown: onKeyDown,\n tabIndex: disabled ? null : getIndex(tabIndex, valueIndex),\n role: \"slider\",\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n \"aria-valuenow\": value,\n \"aria-disabled\": disabled,\n \"aria-label\": getIndex(ariaLabelForHandle, valueIndex),\n \"aria-labelledby\": getIndex(ariaLabelledByForHandle, valueIndex),\n \"aria-valuetext\": (_getIndex = getIndex(ariaValueTextFormatterForHandle, valueIndex)) === null || _getIndex === void 0 ? void 0 : _getIndex(value)\n }, restProps)); // Customize\n\n if (render) {\n handleNode = render(handleNode, {\n index: valueIndex,\n prefixCls: prefixCls,\n value: value,\n dragging: dragging\n });\n }\n\n return handleNode;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Handle.displayName = 'Handle';\n}\n\nexport default Handle;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"style\", \"onStartMove\", \"onOffsetChange\", \"values\", \"handleRender\", \"draggingIndex\"];\nimport * as React from 'react';\nimport Handle from './Handle';\nimport { getIndex } from '../util';\nvar Handles = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n style = props.style,\n onStartMove = props.onStartMove,\n onOffsetChange = props.onOffsetChange,\n values = props.values,\n handleRender = props.handleRender,\n draggingIndex = props.draggingIndex,\n restProps = _objectWithoutProperties(props, _excluded);\n\n var handlesRef = React.useRef({});\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus(index) {\n var _handlesRef$current$i;\n\n (_handlesRef$current$i = handlesRef.current[index]) === null || _handlesRef$current$i === void 0 ? void 0 : _handlesRef$current$i.focus();\n }\n };\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, values.map(function (value, index) {\n return /*#__PURE__*/React.createElement(Handle, _extends({\n ref: function ref(node) {\n if (!node) {\n delete handlesRef.current[index];\n } else {\n handlesRef.current[index] = node;\n }\n },\n dragging: draggingIndex === index,\n prefixCls: prefixCls,\n style: getIndex(style, index),\n key: index,\n value: value,\n valueIndex: index,\n onStartMove: onStartMove,\n onOffsetChange: onOffsetChange,\n render: handleRender\n }, restProps));\n }));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Handles.displayName = 'Handles';\n}\n\nexport default Handles;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n\nfunction getPosition(e) {\n var obj = 'touches' in e ? e.touches[0] : e;\n return {\n pageX: obj.pageX,\n pageY: obj.pageY\n };\n}\n\nexport default function useDrag(containerRef, direction, rawValues, min, max, formatValue, triggerChange, finishChange, offsetValues) {\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n draggingValue = _React$useState2[0],\n setDraggingValue = _React$useState2[1];\n\n var _React$useState3 = React.useState(-1),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n draggingIndex = _React$useState4[0],\n setDraggingIndex = _React$useState4[1];\n\n var _React$useState5 = React.useState(rawValues),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n cacheValues = _React$useState6[0],\n setCacheValues = _React$useState6[1];\n\n var _React$useState7 = React.useState(rawValues),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n originValues = _React$useState8[0],\n setOriginValues = _React$useState8[1];\n\n var mouseMoveEventRef = React.useRef(null);\n var mouseUpEventRef = React.useRef(null);\n React.useEffect(function () {\n if (draggingIndex === -1) {\n setCacheValues(rawValues);\n }\n }, [rawValues, draggingIndex]); // Clean up event\n\n React.useEffect(function () {\n return function () {\n document.removeEventListener('mousemove', mouseMoveEventRef.current);\n document.removeEventListener('mouseup', mouseUpEventRef.current);\n document.removeEventListener('touchmove', mouseMoveEventRef.current);\n document.removeEventListener('touchend', mouseUpEventRef.current);\n };\n }, []);\n\n var flushValues = function flushValues(nextValues, nextValue) {\n // Perf: Only update state when value changed\n if (cacheValues.some(function (val, i) {\n return val !== nextValues[i];\n })) {\n if (nextValue !== undefined) {\n setDraggingValue(nextValue);\n }\n\n setCacheValues(nextValues);\n triggerChange(nextValues);\n }\n };\n\n var updateCacheValue = function updateCacheValue(valueIndex, offsetPercent) {\n // Basic point offset\n if (valueIndex === -1) {\n // >>>> Dragging on the track\n var startValue = originValues[0];\n var endValue = originValues[originValues.length - 1];\n var maxStartOffset = min - startValue;\n var maxEndOffset = max - endValue; // Get valid offset\n\n var offset = offsetPercent * (max - min);\n offset = Math.max(offset, maxStartOffset);\n offset = Math.min(offset, maxEndOffset); // Use first value to revert back of valid offset (like steps marks)\n\n var formatStartValue = formatValue(startValue + offset);\n offset = formatStartValue - startValue;\n var cloneCacheValues = originValues.map(function (val) {\n return val + offset;\n });\n flushValues(cloneCacheValues);\n } else {\n // >>>> Dragging on the handle\n var offsetDist = (max - min) * offsetPercent; // Always start with the valueIndex origin value\n\n var cloneValues = _toConsumableArray(cacheValues);\n\n cloneValues[valueIndex] = originValues[valueIndex];\n var next = offsetValues(cloneValues, offsetDist, valueIndex, 'dist');\n flushValues(next.values, next.value);\n }\n }; // Resolve closure\n\n\n var updateCacheValueRef = React.useRef(updateCacheValue);\n updateCacheValueRef.current = updateCacheValue;\n\n var onStartMove = function onStartMove(e, valueIndex) {\n e.stopPropagation();\n var originValue = rawValues[valueIndex];\n setDraggingIndex(valueIndex);\n setDraggingValue(originValue);\n setOriginValues(rawValues);\n\n var _getPosition = getPosition(e),\n startX = _getPosition.pageX,\n startY = _getPosition.pageY; // Moving\n\n\n var onMouseMove = function onMouseMove(event) {\n event.preventDefault();\n\n var _getPosition2 = getPosition(event),\n moveX = _getPosition2.pageX,\n moveY = _getPosition2.pageY;\n\n var offsetX = moveX - startX;\n var offsetY = moveY - startY;\n\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n width = _containerRef$current.width,\n height = _containerRef$current.height;\n\n var offSetPercent;\n\n switch (direction) {\n case 'btt':\n offSetPercent = -offsetY / height;\n break;\n\n case 'ttb':\n offSetPercent = offsetY / height;\n break;\n\n case 'rtl':\n offSetPercent = -offsetX / width;\n break;\n\n default:\n offSetPercent = offsetX / width;\n }\n\n updateCacheValueRef.current(valueIndex, offSetPercent);\n }; // End\n\n\n var onMouseUp = function onMouseUp(event) {\n event.preventDefault();\n document.removeEventListener('mouseup', onMouseUp);\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('touchend', onMouseUp);\n document.removeEventListener('touchmove', onMouseMove);\n mouseMoveEventRef.current = null;\n mouseUpEventRef.current = null;\n setDraggingIndex(-1);\n finishChange();\n };\n\n document.addEventListener('mouseup', onMouseUp);\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('touchend', onMouseUp);\n document.addEventListener('touchmove', onMouseMove);\n mouseMoveEventRef.current = onMouseMove;\n mouseUpEventRef.current = onMouseUp;\n }; // Only return cache value when it mapping with rawValues\n\n\n var returnValues = React.useMemo(function () {\n var sourceValues = _toConsumableArray(rawValues).sort(function (a, b) {\n return a - b;\n });\n\n var targetValues = _toConsumableArray(cacheValues).sort(function (a, b) {\n return a - b;\n });\n\n return sourceValues.every(function (val, index) {\n return val === targetValues[index];\n }) ? cacheValues : rawValues;\n }, [rawValues, cacheValues]);\n return [draggingIndex, draggingValue, returnValues, onStartMove];\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport SliderContext from '../context';\nimport { getOffset } from '../util';\nexport default function Track(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n start = props.start,\n end = props.end,\n index = props.index,\n onStartMove = props.onStartMove;\n\n var _React$useContext = React.useContext(SliderContext),\n direction = _React$useContext.direction,\n min = _React$useContext.min,\n max = _React$useContext.max,\n disabled = _React$useContext.disabled,\n range = _React$useContext.range;\n\n var trackPrefixCls = \"\".concat(prefixCls, \"-track\");\n var offsetStart = getOffset(start, min, max);\n var offsetEnd = getOffset(end, min, max); // ============================ Events ============================\n\n var onInternalStartMove = function onInternalStartMove(e) {\n if (!disabled && onStartMove) {\n onStartMove(e, -1);\n }\n }; // ============================ Render ============================\n\n\n var positionStyle = {};\n\n switch (direction) {\n case 'rtl':\n positionStyle.right = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n\n case 'btt':\n positionStyle.bottom = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n\n case 'ttb':\n positionStyle.top = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.height = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n break;\n\n default:\n positionStyle.left = \"\".concat(offsetStart * 100, \"%\");\n positionStyle.width = \"\".concat(offsetEnd * 100 - offsetStart * 100, \"%\");\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(trackPrefixCls, range && \"\".concat(trackPrefixCls, \"-\").concat(index + 1)),\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: onInternalStartMove,\n onTouchStart: onInternalStartMove\n });\n}","import * as React from 'react';\nimport SliderContext from '../context';\nimport Track from './Track';\nimport { getIndex } from '../util';\nexport default function Tracks(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n values = props.values,\n startPoint = props.startPoint,\n onStartMove = props.onStartMove;\n\n var _React$useContext = React.useContext(SliderContext),\n included = _React$useContext.included,\n range = _React$useContext.range,\n min = _React$useContext.min;\n\n var trackList = React.useMemo(function () {\n if (!range) {\n // null value do not have track\n if (values.length === 0) {\n return [];\n }\n\n var startValue = startPoint !== null && startPoint !== void 0 ? startPoint : min;\n var endValue = values[0];\n return [{\n start: Math.min(startValue, endValue),\n end: Math.max(startValue, endValue)\n }];\n } // Multiple\n\n\n var list = [];\n\n for (var i = 0; i < values.length - 1; i += 1) {\n list.push({\n start: values[i],\n end: values[i + 1]\n });\n }\n\n return list;\n }, [values, range, startPoint, min]);\n return included ? trackList.map(function (_ref, index) {\n var start = _ref.start,\n end = _ref.end;\n return /*#__PURE__*/React.createElement(Track, {\n index: index,\n prefixCls: prefixCls,\n style: getIndex(style, index),\n start: start,\n end: end,\n key: index,\n onStartMove: onStartMove\n });\n }) : null;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { getDirectionStyle } from '../util';\nimport SliderContext from '../context';\nexport default function Mark(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n children = props.children,\n value = props.value,\n _onClick = props.onClick;\n\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n includedStart = _React$useContext.includedStart,\n includedEnd = _React$useContext.includedEnd,\n included = _React$useContext.included;\n\n var textCls = \"\".concat(prefixCls, \"-text\"); // ============================ Offset ============================\n\n var positionStyle = getDirectionStyle(direction, value, min, max);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(textCls, _defineProperty({}, \"\".concat(textCls, \"-active\"), included && includedStart <= value && value <= includedEnd)),\n style: _objectSpread(_objectSpread({}, positionStyle), style),\n onMouseDown: function onMouseDown(e) {\n e.stopPropagation();\n },\n onClick: function onClick() {\n _onClick(value);\n }\n }, children);\n}","import * as React from 'react';\nimport Mark from './Mark';\nexport default function Marks(props) {\n var prefixCls = props.prefixCls,\n marks = props.marks,\n onClick = props.onClick;\n var markPrefixCls = \"\".concat(prefixCls, \"-mark\"); // Not render mark if empty\n\n if (!marks.length) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: markPrefixCls\n }, marks.map(function (_ref) {\n var value = _ref.value,\n style = _ref.style,\n label = _ref.label;\n return /*#__PURE__*/React.createElement(Mark, {\n key: value,\n prefixCls: markPrefixCls,\n style: style,\n value: value,\n onClick: onClick\n }, label);\n }));\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { getDirectionStyle } from '../util';\nimport SliderContext from '../context';\nexport default function Dot(props) {\n var prefixCls = props.prefixCls,\n value = props.value,\n style = props.style,\n activeStyle = props.activeStyle;\n\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n direction = _React$useContext.direction,\n included = _React$useContext.included,\n includedStart = _React$useContext.includedStart,\n includedEnd = _React$useContext.includedEnd;\n\n var dotClassName = \"\".concat(prefixCls, \"-dot\");\n var active = included && includedStart <= value && value <= includedEnd; // ============================ Offset ============================\n\n var mergedStyle = _objectSpread(_objectSpread({}, getDirectionStyle(direction, value, min, max)), typeof style === 'function' ? style(value) : style);\n\n if (active) {\n mergedStyle = _objectSpread(_objectSpread({}, mergedStyle), typeof activeStyle === 'function' ? activeStyle(value) : activeStyle);\n }\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(dotClassName, _defineProperty({}, \"\".concat(dotClassName, \"-active\"), active)),\n style: mergedStyle\n });\n}","import * as React from 'react';\nimport SliderContext from '../context';\nimport Dot from './Dot';\nexport default function Steps(props) {\n var prefixCls = props.prefixCls,\n marks = props.marks,\n dots = props.dots,\n style = props.style,\n activeStyle = props.activeStyle;\n\n var _React$useContext = React.useContext(SliderContext),\n min = _React$useContext.min,\n max = _React$useContext.max,\n step = _React$useContext.step;\n\n var stepDots = React.useMemo(function () {\n var dotSet = new Set(); // Add marks\n\n marks.forEach(function (mark) {\n dotSet.add(mark.value);\n }); // Fill dots\n\n if (dots && step !== null) {\n var current = min;\n\n while (current <= max) {\n dotSet.add(current);\n current += step;\n }\n }\n\n return Array.from(dotSet);\n }, [min, max, step, dots, marks]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-step\")\n }, stepDots.map(function (dotValue) {\n return /*#__PURE__*/React.createElement(Dot, {\n prefixCls: prefixCls,\n key: dotValue,\n value: dotValue,\n style: style,\n activeStyle: activeStyle\n });\n }));\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport shallowEqual from 'shallowequal';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport Handles from './Handles';\nimport useDrag from './hooks/useDrag';\nimport SliderContext from './context';\nimport Tracks from './Tracks';\nimport Marks from './Marks';\nimport Steps from './Steps';\nimport useOffset from './hooks/useOffset';\nimport warning from \"rc-util/es/warning\";\nvar Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-slider' : _props$prefixCls,\n className = props.className,\n style = props.style,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n autoFocus = props.autoFocus,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n _props$min = props.min,\n min = _props$min === void 0 ? 0 : _props$min,\n _props$max = props.max,\n max = _props$max === void 0 ? 100 : _props$max,\n _props$step = props.step,\n step = _props$step === void 0 ? 1 : _props$step,\n value = props.value,\n defaultValue = props.defaultValue,\n range = props.range,\n count = props.count,\n onChange = props.onChange,\n onBeforeChange = props.onBeforeChange,\n onAfterChange = props.onAfterChange,\n _props$allowCross = props.allowCross,\n allowCross = _props$allowCross === void 0 ? true : _props$allowCross,\n _props$pushable = props.pushable,\n pushable = _props$pushable === void 0 ? false : _props$pushable,\n draggableTrack = props.draggableTrack,\n reverse = props.reverse,\n vertical = props.vertical,\n _props$included = props.included,\n included = _props$included === void 0 ? true : _props$included,\n startPoint = props.startPoint,\n trackStyle = props.trackStyle,\n handleStyle = props.handleStyle,\n railStyle = props.railStyle,\n dotStyle = props.dotStyle,\n activeDotStyle = props.activeDotStyle,\n marks = props.marks,\n dots = props.dots,\n handleRender = props.handleRender,\n _props$tabIndex = props.tabIndex,\n tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n ariaLabelForHandle = props.ariaLabelForHandle,\n ariaLabelledByForHandle = props.ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle = props.ariaValueTextFormatterForHandle;\n var handlesRef = React.useRef();\n var containerRef = React.useRef();\n var direction = React.useMemo(function () {\n if (vertical) {\n return reverse ? 'ttb' : 'btt';\n }\n\n return reverse ? 'rtl' : 'ltr';\n }, [reverse, vertical]); // ============================ Range =============================\n\n var mergedMin = React.useMemo(function () {\n return isFinite(min) ? min : 0;\n }, [min]);\n var mergedMax = React.useMemo(function () {\n return isFinite(max) ? max : 100;\n }, [max]); // ============================= Step =============================\n\n var mergedStep = React.useMemo(function () {\n return step !== null && step <= 0 ? 1 : step;\n }, [step]); // ============================= Push =============================\n\n var mergedPush = React.useMemo(function () {\n if (pushable === true) {\n return mergedStep;\n }\n\n return pushable >= 0 ? pushable : false;\n }, [pushable, mergedStep]); // ============================ Marks =============================\n\n var markList = React.useMemo(function () {\n var keys = Object.keys(marks || {});\n return keys.map(function (key) {\n var mark = marks[key];\n var markObj = {\n value: Number(key)\n };\n\n if (mark && _typeof(mark) === 'object' && ! /*#__PURE__*/React.isValidElement(mark) && ('label' in mark || 'style' in mark)) {\n markObj.style = mark.style;\n markObj.label = mark.label;\n } else {\n markObj.label = mark;\n }\n\n return markObj;\n }).filter(function (_ref) {\n var label = _ref.label;\n return label || typeof label === 'number';\n }).sort(function (a, b) {\n return a.value - b.value;\n });\n }, [marks]); // ============================ Format ============================\n\n var _useOffset = useOffset(mergedMin, mergedMax, mergedStep, markList, allowCross, mergedPush),\n _useOffset2 = _slicedToArray(_useOffset, 2),\n formatValue = _useOffset2[0],\n offsetValues = _useOffset2[1]; // ============================ Values ============================\n\n\n var _useMergedState = useMergedState(defaultValue, {\n value: value\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedValue = _useMergedState2[0],\n setValue = _useMergedState2[1];\n\n var rawValues = React.useMemo(function () {\n var valueList = mergedValue === null || mergedValue === undefined ? [] : Array.isArray(mergedValue) ? mergedValue : [mergedValue];\n\n var _valueList = _slicedToArray(valueList, 1),\n _valueList$ = _valueList[0],\n val0 = _valueList$ === void 0 ? mergedMin : _valueList$;\n\n var returnValues = mergedValue === null ? [] : [val0]; // Format as range\n\n if (range) {\n returnValues = _toConsumableArray(valueList); // When count provided or value is `undefined`, we fill values\n\n if (count || mergedValue === undefined) {\n var pointCount = count >= 0 ? count + 1 : 2;\n returnValues = returnValues.slice(0, pointCount); // Fill with count\n\n while (returnValues.length < pointCount) {\n var _returnValues;\n\n returnValues.push((_returnValues = returnValues[returnValues.length - 1]) !== null && _returnValues !== void 0 ? _returnValues : mergedMin);\n }\n }\n\n returnValues.sort(function (a, b) {\n return a - b;\n });\n } // Align in range\n\n\n returnValues.forEach(function (val, index) {\n returnValues[index] = formatValue(val);\n });\n return returnValues;\n }, [mergedValue, range, mergedMin, count, formatValue]); // =========================== onChange ===========================\n\n var rawValuesRef = React.useRef(rawValues);\n rawValuesRef.current = rawValues;\n\n var getTriggerValue = function getTriggerValue(triggerValues) {\n return range ? triggerValues : triggerValues[0];\n };\n\n var triggerChange = function triggerChange(nextValues) {\n // Order first\n var cloneNextValues = _toConsumableArray(nextValues).sort(function (a, b) {\n return a - b;\n }); // Trigger event if needed\n\n\n if (onChange && !shallowEqual(cloneNextValues, rawValuesRef.current)) {\n onChange(getTriggerValue(cloneNextValues));\n } // We set this later since it will re-render component immediately\n\n\n setValue(cloneNextValues);\n };\n\n var changeToCloseValue = function changeToCloseValue(newValue) {\n if (!disabled) {\n var valueIndex = 0;\n var valueDist = mergedMax - mergedMin;\n rawValues.forEach(function (val, index) {\n var dist = Math.abs(newValue - val);\n\n if (dist <= valueDist) {\n valueDist = dist;\n valueIndex = index;\n }\n }); // Create new values\n\n var cloneNextValues = _toConsumableArray(rawValues);\n\n cloneNextValues[valueIndex] = newValue; // Fill value to match default 2\n\n if (range && !rawValues.length && count === undefined) {\n cloneNextValues.push(newValue);\n }\n\n onBeforeChange === null || onBeforeChange === void 0 ? void 0 : onBeforeChange(getTriggerValue(cloneNextValues));\n triggerChange(cloneNextValues);\n onAfterChange === null || onAfterChange === void 0 ? void 0 : onAfterChange(getTriggerValue(cloneNextValues));\n }\n }; // ============================ Click =============================\n\n\n var onSliderMouseDown = function onSliderMouseDown(e) {\n e.preventDefault();\n\n var _containerRef$current = containerRef.current.getBoundingClientRect(),\n width = _containerRef$current.width,\n height = _containerRef$current.height,\n left = _containerRef$current.left,\n top = _containerRef$current.top,\n bottom = _containerRef$current.bottom,\n right = _containerRef$current.right;\n\n var clientX = e.clientX,\n clientY = e.clientY;\n var percent;\n\n switch (direction) {\n case 'btt':\n percent = (bottom - clientY) / height;\n break;\n\n case 'ttb':\n percent = (clientY - top) / height;\n break;\n\n case 'rtl':\n percent = (right - clientX) / width;\n break;\n\n default:\n percent = (clientX - left) / width;\n }\n\n var nextValue = mergedMin + percent * (mergedMax - mergedMin);\n changeToCloseValue(formatValue(nextValue));\n }; // =========================== Keyboard ===========================\n\n\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n keyboardValue = _React$useState2[0],\n setKeyboardValue = _React$useState2[1];\n\n var onHandleOffsetChange = function onHandleOffsetChange(offset, valueIndex) {\n if (!disabled) {\n var next = offsetValues(rawValues, offset, valueIndex);\n onBeforeChange === null || onBeforeChange === void 0 ? void 0 : onBeforeChange(getTriggerValue(rawValues));\n triggerChange(next.values);\n onAfterChange === null || onAfterChange === void 0 ? void 0 : onAfterChange(getTriggerValue(next.values));\n setKeyboardValue(next.value);\n }\n };\n\n React.useEffect(function () {\n if (keyboardValue !== null) {\n var valueIndex = rawValues.indexOf(keyboardValue);\n\n if (valueIndex >= 0) {\n handlesRef.current.focus(valueIndex);\n }\n }\n\n setKeyboardValue(null);\n }, [keyboardValue]); // ============================= Drag =============================\n\n var mergedDraggableTrack = React.useMemo(function () {\n if (draggableTrack && mergedStep === null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(false, '`draggableTrack` is not supported when `step` is `null`.');\n }\n\n return false;\n }\n\n return draggableTrack;\n }, [draggableTrack, mergedStep]);\n\n var finishChange = function finishChange() {\n onAfterChange === null || onAfterChange === void 0 ? void 0 : onAfterChange(getTriggerValue(rawValuesRef.current));\n };\n\n var _useDrag = useDrag(containerRef, direction, rawValues, mergedMin, mergedMax, formatValue, triggerChange, finishChange, offsetValues),\n _useDrag2 = _slicedToArray(_useDrag, 4),\n draggingIndex = _useDrag2[0],\n draggingValue = _useDrag2[1],\n cacheValues = _useDrag2[2],\n onStartDrag = _useDrag2[3];\n\n var onStartMove = function onStartMove(e, valueIndex) {\n onStartDrag(e, valueIndex);\n onBeforeChange === null || onBeforeChange === void 0 ? void 0 : onBeforeChange(getTriggerValue(rawValuesRef.current));\n }; // Auto focus for updated handle\n\n\n var dragging = draggingIndex !== -1;\n React.useEffect(function () {\n if (!dragging) {\n var valueIndex = rawValues.lastIndexOf(draggingValue);\n handlesRef.current.focus(valueIndex);\n }\n }, [dragging]); // =========================== Included ===========================\n\n var sortedCacheValues = React.useMemo(function () {\n return _toConsumableArray(cacheValues).sort(function (a, b) {\n return a - b;\n });\n }, [cacheValues]); // Provide a range values with included [min, max]\n // Used for Track, Mark & Dot\n\n var _React$useMemo = React.useMemo(function () {\n if (!range) {\n return [mergedMin, sortedCacheValues[0]];\n }\n\n return [sortedCacheValues[0], sortedCacheValues[sortedCacheValues.length - 1]];\n }, [sortedCacheValues, range, mergedMin]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n includedStart = _React$useMemo2[0],\n includedEnd = _React$useMemo2[1]; // ============================= Refs =============================\n\n\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n handlesRef.current.focus(0);\n },\n blur: function blur() {\n var _document = document,\n activeElement = _document.activeElement;\n\n if (containerRef.current.contains(activeElement)) {\n activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur();\n }\n }\n };\n }); // ========================== Auto Focus ==========================\n\n React.useEffect(function () {\n if (autoFocus) {\n handlesRef.current.focus(0);\n }\n }, []); // =========================== Context ============================\n\n var context = React.useMemo(function () {\n return {\n min: mergedMin,\n max: mergedMax,\n direction: direction,\n disabled: disabled,\n step: mergedStep,\n included: included,\n includedStart: includedStart,\n includedEnd: includedEnd,\n range: range,\n tabIndex: tabIndex,\n ariaLabelForHandle: ariaLabelForHandle,\n ariaLabelledByForHandle: ariaLabelledByForHandle,\n ariaValueTextFormatterForHandle: ariaValueTextFormatterForHandle\n };\n }, [mergedMin, mergedMax, direction, disabled, mergedStep, included, includedStart, includedEnd, range, tabIndex, ariaLabelForHandle, ariaLabelledByForHandle, ariaValueTextFormatterForHandle]); // ============================ Render ============================\n\n return /*#__PURE__*/React.createElement(SliderContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: containerRef,\n className: classNames(prefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, \"\".concat(prefixCls, \"-vertical\"), vertical), _defineProperty(_classNames, \"\".concat(prefixCls, \"-horizontal\"), !vertical), _defineProperty(_classNames, \"\".concat(prefixCls, \"-with-marks\"), markList.length), _classNames)),\n style: style,\n onMouseDown: onSliderMouseDown\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-rail\"),\n style: railStyle\n }), /*#__PURE__*/React.createElement(Tracks, {\n prefixCls: prefixCls,\n style: trackStyle,\n values: sortedCacheValues,\n startPoint: startPoint,\n onStartMove: mergedDraggableTrack ? onStartMove : null\n }), /*#__PURE__*/React.createElement(Steps, {\n prefixCls: prefixCls,\n marks: markList,\n dots: dots,\n style: dotStyle,\n activeStyle: activeDotStyle\n }), /*#__PURE__*/React.createElement(Handles, {\n ref: handlesRef,\n prefixCls: prefixCls,\n style: handleStyle,\n values: cacheValues,\n draggingIndex: draggingIndex,\n onStartMove: onStartMove,\n onOffsetChange: onHandleOffsetChange,\n onFocus: onFocus,\n onBlur: onBlur,\n handleRender: handleRender\n }), /*#__PURE__*/React.createElement(Marks, {\n prefixCls: prefixCls,\n marks: markList,\n onClick: changeToCloseValue\n })));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Slider.displayName = 'Slider';\n}\n\nexport default Slider;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nexport default function useOffset(min, max, step, markList, allowCross, pushable) {\n var formatRangeValue = React.useCallback(function (val) {\n var formatNextValue = isFinite(val) ? val : min;\n formatNextValue = Math.min(max, val);\n formatNextValue = Math.max(min, formatNextValue);\n return formatNextValue;\n }, [min, max]);\n var formatStepValue = React.useCallback(function (val) {\n if (step !== null) {\n var stepValue = min + Math.round((formatRangeValue(val) - min) / step) * step; // Cut number in case to be like 0.30000000000000004\n\n var getDecimal = function getDecimal(num) {\n return (String(num).split('.')[1] || '').length;\n };\n\n var maxDecimal = Math.max(getDecimal(step), getDecimal(max), getDecimal(min));\n var fixedValue = Number(stepValue.toFixed(maxDecimal));\n return min <= fixedValue && fixedValue <= max ? fixedValue : null;\n }\n\n return null;\n }, [step, min, max, formatRangeValue]);\n var formatValue = React.useCallback(function (val) {\n var formatNextValue = formatRangeValue(val); // List align values\n\n var alignValues = markList.map(function (mark) {\n return mark.value;\n });\n\n if (step !== null) {\n alignValues.push(formatStepValue(val));\n } // min & max\n\n\n alignValues.push(min, max); // Align with marks\n\n var closeValue = alignValues[0];\n var closeDist = max - min;\n alignValues.forEach(function (alignValue) {\n var dist = Math.abs(formatNextValue - alignValue);\n\n if (dist <= closeDist) {\n closeValue = alignValue;\n closeDist = dist;\n }\n });\n return closeValue;\n }, [min, max, markList, step, formatRangeValue, formatStepValue]); // ========================== Offset ==========================\n // Single Value\n\n var offsetValue = function offsetValue(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n\n if (typeof offset === 'number') {\n var nextValue;\n var originValue = values[valueIndex]; // Only used for `dist` mode\n\n var targetDistValue = originValue + offset; // Compare next step value & mark value which is best match\n\n var potentialValues = [];\n markList.forEach(function (mark) {\n potentialValues.push(mark.value);\n }); // Min & Max\n\n potentialValues.push(min, max); // In case origin value is align with mark but not with step\n\n potentialValues.push(formatStepValue(originValue)); // Put offset step value also\n\n var sign = offset > 0 ? 1 : -1;\n\n if (mode === 'unit') {\n potentialValues.push(formatStepValue(originValue + sign * step));\n } else {\n potentialValues.push(formatStepValue(targetDistValue));\n } // Find close one\n\n\n potentialValues = potentialValues.filter(function (val) {\n return val !== null;\n }) // Remove reverse value\n .filter(function (val) {\n return offset < 0 ? val <= originValue : val >= originValue;\n });\n\n if (mode === 'unit') {\n // `unit` mode can not contain itself\n potentialValues = potentialValues.filter(function (val) {\n return val !== originValue;\n });\n }\n\n var compareValue = mode === 'unit' ? originValue : targetDistValue;\n nextValue = potentialValues[0];\n var valueDist = Math.abs(nextValue - compareValue);\n potentialValues.forEach(function (potentialValue) {\n var dist = Math.abs(potentialValue - compareValue);\n\n if (dist < valueDist) {\n nextValue = potentialValue;\n valueDist = dist;\n }\n }); // Out of range will back to range\n\n if (nextValue === undefined) {\n return offset < 0 ? min : max;\n } // `dist` mode\n\n\n if (mode === 'dist') {\n return nextValue;\n } // `unit` mode may need another round\n\n\n if (Math.abs(offset) > 1) {\n var cloneValues = _toConsumableArray(values);\n\n cloneValues[valueIndex] = nextValue;\n return offsetValue(cloneValues, offset - sign, valueIndex, mode);\n }\n\n return nextValue;\n } else if (offset === 'min') {\n return min;\n } else if (offset === 'max') {\n return max;\n }\n };\n /** Same as `offsetValue` but return `changed` mark to tell value changed */\n\n\n var offsetChangedValue = function offsetChangedValue(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n var originValue = values[valueIndex];\n var nextValue = offsetValue(values, offset, valueIndex, mode);\n return {\n value: nextValue,\n changed: nextValue !== originValue\n };\n };\n\n var needPush = function needPush(dist) {\n return pushable === null && dist === 0 || typeof pushable === 'number' && dist < pushable;\n }; // Values\n\n\n var offsetValues = function offsetValues(values, offset, valueIndex) {\n var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unit';\n var nextValues = values.map(formatValue);\n var originValue = nextValues[valueIndex];\n var nextValue = offsetValue(nextValues, offset, valueIndex, mode);\n nextValues[valueIndex] = nextValue;\n\n if (allowCross === false) {\n // >>>>> Allow Cross\n var pushNum = pushable || 0; // ============ AllowCross ===============\n\n if (valueIndex > 0 && nextValues[valueIndex - 1] !== originValue) {\n nextValues[valueIndex] = Math.max(nextValues[valueIndex], nextValues[valueIndex - 1] + pushNum);\n }\n\n if (valueIndex < nextValues.length - 1 && nextValues[valueIndex + 1] !== originValue) {\n nextValues[valueIndex] = Math.min(nextValues[valueIndex], nextValues[valueIndex + 1] - pushNum);\n }\n } else if (typeof pushable === 'number' || pushable === null) {\n // >>>>> Pushable\n // =============== Push ==================\n // >>>>>> Basic push\n // End values\n for (var i = valueIndex + 1; i < nextValues.length; i += 1) {\n var changed = true;\n\n while (needPush(nextValues[i] - nextValues[i - 1]) && changed) {\n var _offsetChangedValue = offsetChangedValue(nextValues, 1, i);\n\n nextValues[i] = _offsetChangedValue.value;\n changed = _offsetChangedValue.changed;\n }\n } // Start values\n\n\n for (var _i = valueIndex; _i > 0; _i -= 1) {\n var _changed = true;\n\n while (needPush(nextValues[_i] - nextValues[_i - 1]) && _changed) {\n var _offsetChangedValue2 = offsetChangedValue(nextValues, -1, _i - 1);\n\n nextValues[_i - 1] = _offsetChangedValue2.value;\n _changed = _offsetChangedValue2.changed;\n }\n } // >>>>> Revert back to safe push range\n // End to Start\n\n\n for (var _i2 = nextValues.length - 1; _i2 > 0; _i2 -= 1) {\n var _changed2 = true;\n\n while (needPush(nextValues[_i2] - nextValues[_i2 - 1]) && _changed2) {\n var _offsetChangedValue3 = offsetChangedValue(nextValues, -1, _i2 - 1);\n\n nextValues[_i2 - 1] = _offsetChangedValue3.value;\n _changed2 = _offsetChangedValue3.changed;\n }\n } // Start to End\n\n\n for (var _i3 = 0; _i3 < nextValues.length - 1; _i3 += 1) {\n var _changed3 = true;\n\n while (needPush(nextValues[_i3 + 1] - nextValues[_i3]) && _changed3) {\n var _offsetChangedValue4 = offsetChangedValue(nextValues, 1, _i3 + 1);\n\n nextValues[_i3 + 1] = _offsetChangedValue4.value;\n _changed3 = _offsetChangedValue4.changed;\n }\n }\n }\n\n return {\n value: nextValues[valueIndex],\n values: nextValues\n };\n };\n\n return [formatValue, offsetValues];\n}","import Slider from './Slider';\nexport default Slider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport raf from \"rc-util/es/raf\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport Tooltip from '../tooltip';\nvar SliderTooltip = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var open = props.open;\n var innerRef = useRef(null);\n var rafRef = useRef(null);\n function cancelKeepAlign() {\n raf.cancel(rafRef.current);\n rafRef.current = null;\n }\n function keepAlign() {\n rafRef.current = raf(function () {\n var _a;\n (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.forcePopupAlign();\n rafRef.current = null;\n });\n }\n React.useEffect(function () {\n if (open) {\n keepAlign();\n } else {\n cancelKeepAlign();\n }\n return cancelKeepAlign;\n }, [open, props.title]);\n return /*#__PURE__*/React.createElement(Tooltip, _extends({\n ref: composeRef(innerRef, ref)\n }, props));\n});\nexport default SliderTooltip;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport RcSlider from 'rc-slider';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport warning from '../_util/warning';\nimport SliderTooltip from './SliderTooltip';\nvar Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n getPopupContainer = _React$useContext.getPopupContainer;\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n opens = _React$useState2[0],\n setOpens = _React$useState2[1];\n var toggleTooltipOpen = function toggleTooltipOpen(index, open) {\n setOpens(function (prev) {\n return _extends(_extends({}, prev), _defineProperty({}, index, open));\n });\n };\n var getTooltipPlacement = function getTooltipPlacement(tooltipPlacement, vertical) {\n if (tooltipPlacement) {\n return tooltipPlacement;\n }\n if (!vertical) {\n return 'top';\n }\n return direction === 'rtl' ? 'left' : 'right';\n };\n var customizePrefixCls = props.prefixCls,\n range = props.range,\n className = props.className,\n restProps = __rest(props, [\"prefixCls\", \"range\", \"className\"]);\n var prefixCls = getPrefixCls('slider', customizePrefixCls);\n var cls = classNames(className, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'));\n // make reverse default on rtl direction\n if (direction === 'rtl' && !restProps.vertical) {\n restProps.reverse = !restProps.reverse;\n }\n // Range config\n var _React$useMemo = React.useMemo(function () {\n if (!range) {\n return [false];\n }\n return _typeof(range) === 'object' ? [true, range.draggableTrack] : [true, false];\n }, [range]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n mergedRange = _React$useMemo2[0],\n draggableTrack = _React$useMemo2[1];\n // Warning for deprecated usage\n if (process.env.NODE_ENV !== 'production') {\n [['tooltipPrefixCls', 'prefixCls'], ['getTooltipPopupContainer', 'getPopupContainer'], ['tipFormatter', 'formatter'], ['tooltipPlacement', 'placement'], ['tooltipVisible', 'open']].forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n deprecatedName = _ref2[0],\n newName = _ref2[1];\n process.env.NODE_ENV !== \"production\" ? warning(!(deprecatedName in props), 'Slider', \"`\".concat(deprecatedName, \"` is deprecated which will be removed in next major version, please use `tooltip.\").concat(newName, \"` instead.\")) : void 0;\n });\n }\n var handleRender = function handleRender(node, info) {\n var _a;\n var index = info.index,\n dragging = info.dragging;\n var rootPrefixCls = getPrefixCls();\n var _props$tooltip = props.tooltip,\n tooltip = _props$tooltip === void 0 ? {} : _props$tooltip,\n vertical = props.vertical;\n var tooltipProps = _extends({\n formatter: (_a = props.tipFormatter) !== null && _a !== void 0 ? _a :\n // eslint-disable-next-line func-names\n function (value) {\n return typeof value === 'number' ? value.toString() : '';\n },\n open: props.tooltipVisible,\n placement: props.tooltipPlacement,\n getPopupContainer: props.getTooltipPopupContainer\n }, tooltip);\n var tooltipOpen = tooltipProps.open,\n tooltipPlacement = tooltipProps.placement,\n getTooltipPopupContainer = tooltipProps.getPopupContainer,\n customizeTooltipPrefixCls = tooltipProps.prefixCls,\n tipFormatter = tooltipProps.formatter;\n var isTipFormatter = tipFormatter ? opens[index] || dragging : false;\n var open = tooltipOpen || tooltipOpen === undefined && isTipFormatter;\n var passedProps = _extends(_extends({}, node.props), {\n onMouseEnter: function onMouseEnter() {\n return toggleTooltipOpen(index, true);\n },\n onMouseLeave: function onMouseLeave() {\n return toggleTooltipOpen(index, false);\n }\n });\n var tooltipPrefixCls = getPrefixCls('tooltip', customizeTooltipPrefixCls);\n return /*#__PURE__*/React.createElement(SliderTooltip, {\n prefixCls: tooltipPrefixCls,\n title: tipFormatter ? tipFormatter(info.value) : '',\n open: open,\n placement: getTooltipPlacement(tooltipPlacement, vertical),\n transitionName: \"\".concat(rootPrefixCls, \"-zoom-down\"),\n key: index,\n overlayClassName: \"\".concat(prefixCls, \"-tooltip\"),\n getPopupContainer: getTooltipPopupContainer || getPopupContainer\n }, /*#__PURE__*/React.cloneElement(node, passedProps));\n };\n return /*#__PURE__*/React.createElement(RcSlider, _extends({}, restProps, {\n step: restProps.step,\n range: mergedRange,\n draggableTrack: draggableTrack,\n className: cls,\n ref: ref,\n prefixCls: prefixCls,\n handleRender: handleRender\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n Slider.displayName = 'Slider';\n}\nexport default Slider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nexport var SpaceCompactItemContext = /*#__PURE__*/React.createContext(null);\nexport var useCompactItemContext = function useCompactItemContext(prefixCls, direction) {\n var compactItemContext = React.useContext(SpaceCompactItemContext);\n var compactItemClassnames = React.useMemo(function () {\n var _classNames;\n if (!compactItemContext) return '';\n var compactDirection = compactItemContext.compactDirection,\n isFirstItem = compactItemContext.isFirstItem,\n isLastItem = compactItemContext.isLastItem;\n var separator = compactDirection === 'vertical' ? '-vertical-' : '-';\n return classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-compact\").concat(separator, \"item\"), true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-compact\").concat(separator, \"first-item\"), isFirstItem), _defineProperty(_classNames, \"\".concat(prefixCls, \"-compact\").concat(separator, \"last-item\"), isLastItem), _defineProperty(_classNames, \"\".concat(prefixCls, \"-compact\").concat(separator, \"item-rtl\"), direction === 'rtl'), _classNames));\n }, [prefixCls, direction, compactItemContext]);\n return {\n compactSize: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactSize,\n compactDirection: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactDirection,\n compactItemClassnames: compactItemClassnames\n };\n};\nexport var NoCompactStyle = function NoCompactStyle(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/React.createElement(SpaceCompactItemContext.Provider, {\n value: null\n }, children);\n};\nvar CompactItem = function CompactItem(_a) {\n var children = _a.children,\n otherProps = __rest(_a, [\"children\"]);\n return /*#__PURE__*/React.createElement(SpaceCompactItemContext.Provider, {\n value: otherProps\n }, children);\n};\nvar Compact = function Compact(props) {\n var _classNames2;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n directionConfig = _React$useContext.direction;\n var _props$size = props.size,\n size = _props$size === void 0 ? 'middle' : _props$size,\n direction = props.direction,\n block = props.block,\n customizePrefixCls = props.prefixCls,\n className = props.className,\n children = props.children,\n restProps = __rest(props, [\"size\", \"direction\", \"block\", \"prefixCls\", \"className\", \"children\"]);\n var prefixCls = getPrefixCls('space-compact', customizePrefixCls);\n var clx = classNames(prefixCls, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), directionConfig === 'rtl'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-block\"), block), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-vertical\"), direction === 'vertical'), _classNames2), className);\n var compactItemContext = React.useContext(SpaceCompactItemContext);\n var childNodes = toArray(children);\n var nodes = React.useMemo(function () {\n return childNodes.map(function (child, i) {\n var key = child && child.key || \"\".concat(prefixCls, \"-item-\").concat(i);\n return /*#__PURE__*/React.createElement(CompactItem, {\n key: key,\n compactSize: size,\n compactDirection: direction,\n isFirstItem: i === 0 && (!compactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isFirstItem)),\n isLastItem: i === childNodes.length - 1 && (!compactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isLastItem))\n }, child);\n });\n }, [size, childNodes, compactItemContext]);\n // =========================== Render ===========================\n if (childNodes.length === 0) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clx\n }, restProps), nodes);\n};\nexport default Compact;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { SpaceContext } from '.';\nexport default function Item(_ref) {\n var className = _ref.className,\n direction = _ref.direction,\n index = _ref.index,\n marginDirection = _ref.marginDirection,\n children = _ref.children,\n split = _ref.split,\n wrap = _ref.wrap;\n var _React$useContext = React.useContext(SpaceContext),\n horizontalSize = _React$useContext.horizontalSize,\n verticalSize = _React$useContext.verticalSize,\n latestIndex = _React$useContext.latestIndex,\n supportFlexGap = _React$useContext.supportFlexGap;\n var style = {};\n if (!supportFlexGap) {\n if (direction === 'vertical') {\n if (index < latestIndex) {\n style = {\n marginBottom: horizontalSize / (split ? 2 : 1)\n };\n }\n } else {\n style = _extends(_extends({}, index < latestIndex && _defineProperty({}, marginDirection, horizontalSize / (split ? 2 : 1))), wrap && {\n paddingBottom: verticalSize\n });\n }\n }\n if (children === null || children === undefined) {\n return null;\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n style: style\n }, children), index < latestIndex && split && /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(className, \"-split\"),\n style: style\n }, split));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useFlexGapSupport from '../_util/hooks/useFlexGapSupport';\nimport Item from './Item';\nimport Compact from './Compact';\nexport var SpaceContext = /*#__PURE__*/React.createContext({\n latestIndex: 0,\n horizontalSize: 0,\n verticalSize: 0,\n supportFlexGap: false\n});\nvar spaceSize = {\n small: 8,\n middle: 16,\n large: 24\n};\nfunction getNumberSize(size) {\n return typeof size === 'string' ? spaceSize[size] : size || 0;\n}\nvar Space = function Space(props) {\n var _classNames;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n space = _React$useContext.space,\n directionConfig = _React$useContext.direction;\n var _props$size = props.size,\n size = _props$size === void 0 ? (space === null || space === void 0 ? void 0 : space.size) || 'small' : _props$size,\n align = props.align,\n className = props.className,\n children = props.children,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? 'horizontal' : _props$direction,\n customizePrefixCls = props.prefixCls,\n split = props.split,\n style = props.style,\n _props$wrap = props.wrap,\n wrap = _props$wrap === void 0 ? false : _props$wrap,\n otherProps = __rest(props, [\"size\", \"align\", \"className\", \"children\", \"direction\", \"prefixCls\", \"split\", \"style\", \"wrap\"]);\n var supportFlexGap = useFlexGapSupport();\n var _React$useMemo = React.useMemo(function () {\n return (Array.isArray(size) ? size : [size, size]).map(function (item) {\n return getNumberSize(item);\n });\n }, [size]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n horizontalSize = _React$useMemo2[0],\n verticalSize = _React$useMemo2[1];\n var childNodes = toArray(children, {\n keepEmpty: true\n });\n var mergedAlign = align === undefined && direction === 'horizontal' ? 'center' : align;\n var prefixCls = getPrefixCls('space', customizePrefixCls);\n var cn = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(direction), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), directionConfig === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-align-\").concat(mergedAlign), mergedAlign), _classNames), className);\n var itemClassName = \"\".concat(prefixCls, \"-item\");\n var marginDirection = directionConfig === 'rtl' ? 'marginLeft' : 'marginRight';\n // Calculate latest one\n var latestIndex = 0;\n var nodes = childNodes.map(function (child, i) {\n if (child !== null && child !== undefined) {\n latestIndex = i;\n }\n var key = child && child.key || \"\".concat(itemClassName, \"-\").concat(i);\n return /*#__PURE__*/React.createElement(Item, {\n className: itemClassName,\n key: key,\n direction: direction,\n index: i,\n marginDirection: marginDirection,\n split: split,\n wrap: wrap\n }, child);\n });\n var spaceContext = React.useMemo(function () {\n return {\n horizontalSize: horizontalSize,\n verticalSize: verticalSize,\n latestIndex: latestIndex,\n supportFlexGap: supportFlexGap\n };\n }, [horizontalSize, verticalSize, latestIndex, supportFlexGap]);\n // =========================== Render ===========================\n if (childNodes.length === 0) {\n return null;\n }\n var gapStyle = {};\n if (wrap) {\n gapStyle.flexWrap = 'wrap';\n // Patch for gap not support\n if (!supportFlexGap) {\n gapStyle.marginBottom = -verticalSize;\n }\n }\n if (supportFlexGap) {\n gapStyle.columnGap = horizontalSize;\n gapStyle.rowGap = verticalSize;\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: cn,\n style: _extends(_extends({}, gapStyle), style)\n }, otherProps), /*#__PURE__*/React.createElement(SpaceContext.Provider, {\n value: spaceContext\n }, nodes));\n};\nvar CompoundedSpace = Space;\nCompoundedSpace.Compact = Compact;\nexport default CompoundedSpace;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nvar Switch = React.forwardRef(function (_ref, ref) {\n var _classNames;\n\n var _ref$prefixCls = _ref.prefixCls,\n prefixCls = _ref$prefixCls === void 0 ? 'rc-switch' : _ref$prefixCls,\n className = _ref.className,\n checked = _ref.checked,\n defaultChecked = _ref.defaultChecked,\n disabled = _ref.disabled,\n loadingIcon = _ref.loadingIcon,\n checkedChildren = _ref.checkedChildren,\n unCheckedChildren = _ref.unCheckedChildren,\n onClick = _ref.onClick,\n onChange = _ref.onChange,\n onKeyDown = _ref.onKeyDown,\n restProps = _objectWithoutProperties(_ref, [\"prefixCls\", \"className\", \"checked\", \"defaultChecked\", \"disabled\", \"loadingIcon\", \"checkedChildren\", \"unCheckedChildren\", \"onClick\", \"onChange\", \"onKeyDown\"]);\n\n var _useMergedState = useMergedState(false, {\n value: checked,\n defaultValue: defaultChecked\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n innerChecked = _useMergedState2[0],\n setInnerChecked = _useMergedState2[1];\n\n function triggerChange(newChecked, event) {\n var mergedChecked = innerChecked;\n\n if (!disabled) {\n mergedChecked = newChecked;\n setInnerChecked(mergedChecked);\n onChange === null || onChange === void 0 ? void 0 : onChange(mergedChecked, event);\n }\n\n return mergedChecked;\n }\n\n function onInternalKeyDown(e) {\n if (e.which === KeyCode.LEFT) {\n triggerChange(false, e);\n } else if (e.which === KeyCode.RIGHT) {\n triggerChange(true, e);\n }\n\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);\n }\n\n function onInternalClick(e) {\n var ret = triggerChange(!innerChecked, e); // [Legacy] trigger onClick with value\n\n onClick === null || onClick === void 0 ? void 0 : onClick(ret, e);\n }\n\n var switchClassName = classNames(prefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-checked\"), innerChecked), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _classNames));\n return React.createElement(\"button\", Object.assign({}, restProps, {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": innerChecked,\n disabled: disabled,\n className: switchClassName,\n ref: ref,\n onKeyDown: onInternalKeyDown,\n onClick: onInternalClick\n }), loadingIcon, React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-inner\")\n }, innerChecked ? checkedChildren : unCheckedChildren));\n});\nSwitch.displayName = 'Switch';\nexport default Switch;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport classNames from 'classnames';\nimport RcSwitch from 'rc-switch';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport SizeContext from '../config-provider/SizeContext';\nimport warning from '../_util/warning';\nimport Wave from '../_util/wave';\nvar Switch = /*#__PURE__*/React.forwardRef(function (_a, ref) {\n var _classNames;\n var customizePrefixCls = _a.prefixCls,\n customizeSize = _a.size,\n customDisabled = _a.disabled,\n loading = _a.loading,\n _a$className = _a.className,\n className = _a$className === void 0 ? '' : _a$className,\n props = __rest(_a, [\"prefixCls\", \"size\", \"disabled\", \"loading\", \"className\"]);\n process.env.NODE_ENV !== \"production\" ? warning('checked' in props || !('value' in props), 'Switch', '`value` is not a valid prop, do you mean `checked`?') : void 0;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var size = React.useContext(SizeContext);\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n var mergedDisabled = (customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled) || loading;\n var prefixCls = getPrefixCls('switch', customizePrefixCls);\n var loadingIcon = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-handle\")\n }, loading && /*#__PURE__*/React.createElement(LoadingOutlined, {\n className: \"\".concat(prefixCls, \"-loading-icon\")\n }));\n var classes = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-small\"), (customizeSize || size) === 'small'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-loading\"), loading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n return /*#__PURE__*/React.createElement(Wave, {\n insertExtraNode: true\n }, /*#__PURE__*/React.createElement(RcSwitch, _extends({}, props, {\n prefixCls: prefixCls,\n className: classes,\n disabled: mergedDisabled,\n ref: ref,\n loadingIcon: loadingIcon\n })));\n});\nSwitch.__ANT_SWITCH = true;\nif (process.env.NODE_ENV !== 'production') {\n Switch.displayName = 'Switch';\n}\nexport default Switch;","/* istanbul ignore next */\n\n/**\n * This is a syntactic sugar for `columns` prop.\n * So HOC will not work on this.\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction ColumnGroup(_) {\n return null;\n}\n\nexport default ColumnGroup;","/* istanbul ignore next */\n\n/**\n * This is a syntactic sugar for `columns` prop.\n * So HOC will not work on this.\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction Column(_) {\n return null;\n}\n\nexport default Column;","var INTERNAL_KEY_PREFIX = 'RC_TABLE_KEY';\n\nfunction toArray(arr) {\n if (arr === undefined || arr === null) {\n return [];\n }\n\n return Array.isArray(arr) ? arr : [arr];\n}\n\nexport function getPathValue(record, path) {\n // Skip if path is empty\n if (!path && typeof path !== 'number') {\n return record;\n }\n\n var pathList = toArray(path);\n var current = record;\n\n for (var i = 0; i < pathList.length; i += 1) {\n if (!current) {\n return null;\n }\n\n var prop = pathList[i];\n current = current[prop];\n }\n\n return current;\n}\nexport function getColumnsKey(columns) {\n var columnKeys = [];\n var keys = {};\n columns.forEach(function (column) {\n var _ref = column || {},\n key = _ref.key,\n dataIndex = _ref.dataIndex;\n\n var mergedKey = key || toArray(dataIndex).join('-') || INTERNAL_KEY_PREFIX;\n\n while (keys[mergedKey]) {\n mergedKey = \"\".concat(mergedKey, \"_next\");\n }\n\n keys[mergedKey] = true;\n columnKeys.push(mergedKey);\n });\n return columnKeys;\n}\nexport function validateValue(val) {\n return val !== null && val !== undefined;\n}","import * as React from 'react'; // Tell cell that browser support sticky\n\nvar StickyContext = /*#__PURE__*/React.createContext(false);\nexport default StickyContext;","import { createContext } from '../ContextSelector';\nvar HoverContext = createContext();\nexport default HoverContext;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport shallowEqual from 'shallowequal';\nexport function createContext() {\n var Context = /*#__PURE__*/React.createContext(null);\n\n var Provider = function Provider(_ref) {\n var value = _ref.value,\n children = _ref.children;\n var valueRef = React.useRef(value);\n valueRef.current = value;\n\n var _React$useState = React.useState(function () {\n return {\n getValue: function getValue() {\n return valueRef.current;\n },\n listeners: new Set()\n };\n }),\n _React$useState2 = _slicedToArray(_React$useState, 1),\n context = _React$useState2[0];\n\n useLayoutEffect(function () {\n context.listeners.forEach(function (listener) {\n listener(value);\n });\n }, [value]);\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: context\n }, children);\n };\n\n return {\n Context: Context,\n Provider: Provider\n };\n}\nexport function useContextSelector(holder, selector) {\n var eventSelector = useEvent(selector);\n var context = React.useContext(holder === null || holder === void 0 ? void 0 : holder.Context);\n\n var _ref2 = context || {},\n listeners = _ref2.listeners,\n getValue = _ref2.getValue;\n\n var _React$useState3 = React.useState(function () {\n return eventSelector(context ? getValue() : null);\n }),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n value = _React$useState4[0],\n setValue = _React$useState4[1];\n\n useLayoutEffect(function () {\n if (!context) {\n return;\n }\n\n function trigger(nextValue) {\n setValue(function (prev) {\n var selectedValue = eventSelector(nextValue);\n return shallowEqual(prev, selectedValue) ? prev : selectedValue;\n });\n }\n\n listeners.add(trigger);\n return function () {\n listeners.delete(trigger);\n };\n }, [context]);\n return value;\n}","import * as React from 'react';\nvar BodyContext = /*#__PURE__*/React.createContext(null);\nexport default BodyContext;","import * as React from 'react';\nvar PerfContext = /*#__PURE__*/React.createContext({\n renderWithProps: false\n});\nexport default PerfContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"colSpan\", \"rowSpan\", \"style\", \"className\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport shallowEqual from 'shallowequal';\nimport { supportRef } from \"rc-util/es/ref\";\nimport { getPathValue, validateValue } from '../utils/valueUtil';\nimport StickyContext from '../context/StickyContext';\nimport HoverContext from '../context/HoverContext';\nimport BodyContext from '../context/BodyContext';\nimport warning from \"rc-util/es/warning\";\nimport PerfContext from '../context/PerfContext';\nimport { useContextSelector } from '../ContextSelector';\n/** Check if cell is in hover range */\n\nfunction inHoverRange(cellStartRow, cellRowSpan, startRow, endRow) {\n var cellEndRow = cellStartRow + cellRowSpan - 1;\n return cellStartRow <= endRow && cellEndRow >= startRow;\n}\n\nfunction isRenderCell(data) {\n return data && _typeof(data) === 'object' && !Array.isArray(data) && ! /*#__PURE__*/React.isValidElement(data);\n}\n\nfunction isRefComponent(component) {\n // String tag component also support ref\n if (typeof component === 'string') {\n return true;\n }\n\n return supportRef(component);\n}\n\nvar getTitleFromCellRenderChildren = function getTitleFromCellRenderChildren(_ref) {\n var ellipsis = _ref.ellipsis,\n rowType = _ref.rowType,\n children = _ref.children;\n var title;\n var ellipsisConfig = ellipsis === true ? {\n showTitle: true\n } : ellipsis;\n\n if (ellipsisConfig && (ellipsisConfig.showTitle || rowType === 'header')) {\n if (typeof children === 'string' || typeof children === 'number') {\n title = children.toString();\n } else if ( /*#__PURE__*/React.isValidElement(children) && typeof children.props.children === 'string') {\n title = children.props.children;\n }\n }\n\n return title;\n};\n\nfunction Cell(_ref2, ref) {\n var _ref4, _ref5, _classNames;\n\n var prefixCls = _ref2.prefixCls,\n className = _ref2.className,\n record = _ref2.record,\n index = _ref2.index,\n renderIndex = _ref2.renderIndex,\n dataIndex = _ref2.dataIndex,\n render = _ref2.render,\n children = _ref2.children,\n _ref2$component = _ref2.component,\n Component = _ref2$component === void 0 ? 'td' : _ref2$component,\n colSpan = _ref2.colSpan,\n rowSpan = _ref2.rowSpan,\n fixLeft = _ref2.fixLeft,\n fixRight = _ref2.fixRight,\n firstFixLeft = _ref2.firstFixLeft,\n lastFixLeft = _ref2.lastFixLeft,\n firstFixRight = _ref2.firstFixRight,\n lastFixRight = _ref2.lastFixRight,\n appendNode = _ref2.appendNode,\n _ref2$additionalProps = _ref2.additionalProps,\n additionalProps = _ref2$additionalProps === void 0 ? {} : _ref2$additionalProps,\n ellipsis = _ref2.ellipsis,\n align = _ref2.align,\n rowType = _ref2.rowType,\n isSticky = _ref2.isSticky,\n hovering = _ref2.hovering,\n onHover = _ref2.onHover;\n var cellPrefixCls = \"\".concat(prefixCls, \"-cell\");\n var perfRecord = React.useContext(PerfContext);\n var supportSticky = React.useContext(StickyContext);\n\n var _React$useContext = React.useContext(BodyContext),\n allColumnsFixedLeft = _React$useContext.allColumnsFixedLeft; // ==================== Child Node ====================\n\n\n var _React$useMemo = React.useMemo(function () {\n if (validateValue(children)) {\n return [children];\n }\n\n var value = getPathValue(record, dataIndex); // Customize render node\n\n var returnChildNode = value;\n var returnCellProps = undefined;\n\n if (render) {\n var renderData = render(value, record, renderIndex);\n\n if (isRenderCell(renderData)) {\n if (process.env.NODE_ENV !== 'production') {\n warning(false, '`columns.render` return cell props is deprecated with perf issue, please use `onCell` instead.');\n }\n\n returnChildNode = renderData.children;\n returnCellProps = renderData.props;\n perfRecord.renderWithProps = true;\n } else {\n returnChildNode = renderData;\n }\n }\n\n return [returnChildNode, returnCellProps];\n }, [\n /* eslint-disable react-hooks/exhaustive-deps */\n // Always re-render if `renderWithProps`\n perfRecord.renderWithProps ? Math.random() : 0,\n /* eslint-enable */\n children, dataIndex, perfRecord, record, render, renderIndex]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n childNode = _React$useMemo2[0],\n legacyCellProps = _React$useMemo2[1];\n\n var mergedChildNode = childNode; // Not crash if final `childNode` is not validate ReactNode\n\n if (_typeof(mergedChildNode) === 'object' && !Array.isArray(mergedChildNode) && ! /*#__PURE__*/React.isValidElement(mergedChildNode)) {\n mergedChildNode = null;\n }\n\n if (ellipsis && (lastFixLeft || firstFixRight)) {\n mergedChildNode = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(cellPrefixCls, \"-content\")\n }, mergedChildNode);\n }\n\n var _ref3 = legacyCellProps || {},\n cellColSpan = _ref3.colSpan,\n cellRowSpan = _ref3.rowSpan,\n cellStyle = _ref3.style,\n cellClassName = _ref3.className,\n restCellProps = _objectWithoutProperties(_ref3, _excluded);\n\n var mergedColSpan = (_ref4 = cellColSpan !== undefined ? cellColSpan : colSpan) !== null && _ref4 !== void 0 ? _ref4 : 1;\n var mergedRowSpan = (_ref5 = cellRowSpan !== undefined ? cellRowSpan : rowSpan) !== null && _ref5 !== void 0 ? _ref5 : 1;\n\n if (mergedColSpan === 0 || mergedRowSpan === 0) {\n return null;\n } // ====================== Fixed =======================\n\n\n var fixedStyle = {};\n var isFixLeft = typeof fixLeft === 'number' && supportSticky;\n var isFixRight = typeof fixRight === 'number' && supportSticky;\n\n if (isFixLeft) {\n fixedStyle.position = 'sticky';\n fixedStyle.left = fixLeft;\n }\n\n if (isFixRight) {\n fixedStyle.position = 'sticky';\n fixedStyle.right = fixRight;\n } // ====================== Align =======================\n\n\n var alignStyle = {};\n\n if (align) {\n alignStyle.textAlign = align;\n } // ====================== Hover =======================\n\n\n var onMouseEnter = function onMouseEnter(event) {\n var _additionalProps$onMo;\n\n if (record) {\n onHover(index, index + mergedRowSpan - 1);\n }\n\n additionalProps === null || additionalProps === void 0 ? void 0 : (_additionalProps$onMo = additionalProps.onMouseEnter) === null || _additionalProps$onMo === void 0 ? void 0 : _additionalProps$onMo.call(additionalProps, event);\n };\n\n var onMouseLeave = function onMouseLeave(event) {\n var _additionalProps$onMo2;\n\n if (record) {\n onHover(-1, -1);\n }\n\n additionalProps === null || additionalProps === void 0 ? void 0 : (_additionalProps$onMo2 = additionalProps.onMouseLeave) === null || _additionalProps$onMo2 === void 0 ? void 0 : _additionalProps$onMo2.call(additionalProps, event);\n }; // ====================== Render ======================\n\n\n var title = getTitleFromCellRenderChildren({\n rowType: rowType,\n ellipsis: ellipsis,\n children: childNode\n });\n\n var componentProps = _objectSpread(_objectSpread(_objectSpread({\n title: title\n }, restCellProps), additionalProps), {}, {\n colSpan: mergedColSpan !== 1 ? mergedColSpan : null,\n rowSpan: mergedRowSpan !== 1 ? mergedRowSpan : null,\n className: classNames(cellPrefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-fix-left\"), isFixLeft && supportSticky), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-fix-left-first\"), firstFixLeft && supportSticky), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-fix-left-last\"), lastFixLeft && supportSticky), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-fix-left-all\"), lastFixLeft && allColumnsFixedLeft && supportSticky), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-fix-right\"), isFixRight && supportSticky), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-fix-right-first\"), firstFixRight && supportSticky), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-fix-right-last\"), lastFixRight && supportSticky), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-ellipsis\"), ellipsis), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-with-append\"), appendNode), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-fix-sticky\"), (isFixLeft || isFixRight) && isSticky && supportSticky), _defineProperty(_classNames, \"\".concat(cellPrefixCls, \"-row-hover\"), !legacyCellProps && hovering), _classNames), additionalProps.className, cellClassName),\n style: _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, additionalProps.style), alignStyle), fixedStyle), cellStyle),\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n ref: isRefComponent(Component) ? ref : null\n });\n\n return /*#__PURE__*/React.createElement(Component, componentProps, appendNode, mergedChildNode);\n}\n\nvar RefCell = /*#__PURE__*/React.forwardRef(Cell);\nRefCell.displayName = 'Cell';\nvar comparePropList = ['expanded', 'className', 'hovering'];\nvar MemoCell = /*#__PURE__*/React.memo(RefCell, function (prev, next) {\n if (next.shouldCellUpdate) {\n return (// Additional handle of expanded logic\n comparePropList.every(function (propName) {\n return prev[propName] === next[propName];\n }) && // User control update logic\n !next.shouldCellUpdate(next.record, prev.record)\n );\n }\n\n return shallowEqual(prev, next);\n});\n/** Inject hover data here, we still wish MemoCell keep simple `shouldCellUpdate` logic */\n\nvar WrappedCell = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var index = props.index,\n _props$additionalProp = props.additionalProps,\n additionalProps = _props$additionalProp === void 0 ? {} : _props$additionalProp,\n colSpan = props.colSpan,\n rowSpan = props.rowSpan;\n var cellColSpan = additionalProps.colSpan,\n cellRowSpan = additionalProps.rowSpan;\n var mergedColSpan = colSpan !== null && colSpan !== void 0 ? colSpan : cellColSpan;\n var mergedRowSpan = rowSpan !== null && rowSpan !== void 0 ? rowSpan : cellRowSpan;\n\n var _useContextSelector = useContextSelector(HoverContext, function (cxt) {\n var isHovering = inHoverRange(index, mergedRowSpan || 1, cxt === null || cxt === void 0 ? void 0 : cxt.startRow, cxt === null || cxt === void 0 ? void 0 : cxt.endRow);\n return {\n onHover: cxt === null || cxt === void 0 ? void 0 : cxt.onHover,\n hovering: isHovering\n };\n }),\n onHover = _useContextSelector.onHover,\n hovering = _useContextSelector.hovering;\n\n return /*#__PURE__*/React.createElement(MemoCell, _extends({}, props, {\n colSpan: mergedColSpan,\n rowSpan: mergedRowSpan,\n hovering: hovering,\n ref: ref,\n onHover: onHover\n }));\n});\nWrappedCell.displayName = 'WrappedCell';\nexport default WrappedCell;","import * as React from 'react';\nvar TableContext = /*#__PURE__*/React.createContext(null);\nexport default TableContext;","export function getCellFixedInfo(colStart, colEnd, columns, stickyOffsets, direction) {\n var startColumn = columns[colStart] || {};\n var endColumn = columns[colEnd] || {};\n var fixLeft;\n var fixRight;\n\n if (startColumn.fixed === 'left') {\n fixLeft = stickyOffsets.left[colStart];\n } else if (endColumn.fixed === 'right') {\n fixRight = stickyOffsets.right[colEnd];\n }\n\n var lastFixLeft = false;\n var firstFixRight = false;\n var lastFixRight = false;\n var firstFixLeft = false;\n var nextColumn = columns[colEnd + 1];\n var prevColumn = columns[colStart - 1];\n\n if (direction === 'rtl') {\n if (fixLeft !== undefined) {\n var prevFixLeft = prevColumn && prevColumn.fixed === 'left';\n firstFixLeft = !prevFixLeft;\n } else if (fixRight !== undefined) {\n var nextFixRight = nextColumn && nextColumn.fixed === 'right';\n lastFixRight = !nextFixRight;\n }\n } else if (fixLeft !== undefined) {\n var nextFixLeft = nextColumn && nextColumn.fixed === 'left';\n lastFixLeft = !nextFixLeft;\n } else if (fixRight !== undefined) {\n var prevFixRight = prevColumn && prevColumn.fixed === 'right';\n firstFixRight = !prevFixRight;\n }\n\n return {\n fixLeft: fixLeft,\n fixRight: fixRight,\n lastFixLeft: lastFixLeft,\n firstFixRight: firstFixRight,\n lastFixRight: lastFixRight,\n firstFixLeft: firstFixLeft,\n isSticky: stickyOffsets.isSticky\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Cell from '../Cell';\nimport TableContext from '../context/TableContext';\nimport { getCellFixedInfo } from '../utils/fixUtil';\nimport { getColumnsKey } from '../utils/valueUtil';\n\nfunction HeaderRow(_ref) {\n var cells = _ref.cells,\n stickyOffsets = _ref.stickyOffsets,\n flattenColumns = _ref.flattenColumns,\n RowComponent = _ref.rowComponent,\n CellComponent = _ref.cellComponent,\n onHeaderRow = _ref.onHeaderRow,\n index = _ref.index;\n\n var _React$useContext = React.useContext(TableContext),\n prefixCls = _React$useContext.prefixCls,\n direction = _React$useContext.direction;\n\n var rowProps;\n\n if (onHeaderRow) {\n rowProps = onHeaderRow(cells.map(function (cell) {\n return cell.column;\n }), index);\n }\n\n var columnsKey = getColumnsKey(cells.map(function (cell) {\n return cell.column;\n }));\n return /*#__PURE__*/React.createElement(RowComponent, rowProps, cells.map(function (cell, cellIndex) {\n var column = cell.column;\n var fixedInfo = getCellFixedInfo(cell.colStart, cell.colEnd, flattenColumns, stickyOffsets, direction);\n var additionalProps;\n\n if (column && column.onHeaderCell) {\n additionalProps = cell.column.onHeaderCell(column);\n }\n\n return /*#__PURE__*/React.createElement(Cell, _extends({}, cell, {\n ellipsis: column.ellipsis,\n align: column.align,\n component: CellComponent,\n prefixCls: prefixCls,\n key: columnsKey[cellIndex]\n }, fixedInfo, {\n additionalProps: additionalProps,\n rowType: \"header\"\n }));\n }));\n}\n\nHeaderRow.displayName = 'HeaderRow';\nexport default HeaderRow;","import * as React from 'react';\nimport HeaderRow from './HeaderRow';\nimport TableContext from '../context/TableContext';\n\nfunction parseHeaderRows(rootColumns) {\n var rows = [];\n\n function fillRowCells(columns, colIndex) {\n var rowIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n // Init rows\n rows[rowIndex] = rows[rowIndex] || [];\n var currentColIndex = colIndex;\n var colSpans = columns.filter(Boolean).map(function (column) {\n var cell = {\n key: column.key,\n className: column.className || '',\n children: column.title,\n column: column,\n colStart: currentColIndex\n };\n var colSpan = 1;\n var subColumns = column.children;\n\n if (subColumns && subColumns.length > 0) {\n colSpan = fillRowCells(subColumns, currentColIndex, rowIndex + 1).reduce(function (total, count) {\n return total + count;\n }, 0);\n cell.hasSubColumns = true;\n }\n\n if ('colSpan' in column) {\n colSpan = column.colSpan;\n }\n\n if ('rowSpan' in column) {\n cell.rowSpan = column.rowSpan;\n }\n\n cell.colSpan = colSpan;\n cell.colEnd = cell.colStart + colSpan - 1;\n rows[rowIndex].push(cell);\n currentColIndex += colSpan;\n return colSpan;\n });\n return colSpans;\n } // Generate `rows` cell data\n\n\n fillRowCells(rootColumns, 0); // Handle `rowSpan`\n\n var rowCount = rows.length;\n\n var _loop = function _loop(rowIndex) {\n rows[rowIndex].forEach(function (cell) {\n if (!('rowSpan' in cell) && !cell.hasSubColumns) {\n // eslint-disable-next-line no-param-reassign\n cell.rowSpan = rowCount - rowIndex;\n }\n });\n };\n\n for (var rowIndex = 0; rowIndex < rowCount; rowIndex += 1) {\n _loop(rowIndex);\n }\n\n return rows;\n}\n\nfunction Header(_ref) {\n var stickyOffsets = _ref.stickyOffsets,\n columns = _ref.columns,\n flattenColumns = _ref.flattenColumns,\n onHeaderRow = _ref.onHeaderRow;\n\n var _React$useContext = React.useContext(TableContext),\n prefixCls = _React$useContext.prefixCls,\n getComponent = _React$useContext.getComponent;\n\n var rows = React.useMemo(function () {\n return parseHeaderRows(columns);\n }, [columns]);\n var WrapperComponent = getComponent(['header', 'wrapper'], 'thead');\n var trComponent = getComponent(['header', 'row'], 'tr');\n var thComponent = getComponent(['header', 'cell'], 'th');\n return /*#__PURE__*/React.createElement(WrapperComponent, {\n className: \"\".concat(prefixCls, \"-thead\")\n }, rows.map(function (row, rowIndex) {\n var rowNode = /*#__PURE__*/React.createElement(HeaderRow, {\n key: rowIndex,\n flattenColumns: flattenColumns,\n cells: row,\n stickyOffsets: stickyOffsets,\n rowComponent: trComponent,\n cellComponent: thComponent,\n onHeaderRow: onHeaderRow,\n index: rowIndex\n });\n return rowNode;\n }));\n}\n\nexport default Header;","import * as React from 'react';\nvar ExpandedRowContext = /*#__PURE__*/React.createContext(null);\nexport default ExpandedRowContext;","import * as React from 'react';\nimport Cell from '../Cell';\nimport TableContext from '../context/TableContext';\nimport ExpandedRowContext from '../context/ExpandedRowContext';\n\nfunction ExpandedRow(_ref) {\n var prefixCls = _ref.prefixCls,\n children = _ref.children,\n Component = _ref.component,\n cellComponent = _ref.cellComponent,\n className = _ref.className,\n expanded = _ref.expanded,\n colSpan = _ref.colSpan,\n isEmpty = _ref.isEmpty;\n\n var _React$useContext = React.useContext(TableContext),\n scrollbarSize = _React$useContext.scrollbarSize;\n\n var _React$useContext2 = React.useContext(ExpandedRowContext),\n fixHeader = _React$useContext2.fixHeader,\n fixColumn = _React$useContext2.fixColumn,\n componentWidth = _React$useContext2.componentWidth,\n horizonScroll = _React$useContext2.horizonScroll; // Cache render node\n\n\n return React.useMemo(function () {\n var contentNode = children;\n\n if (isEmpty ? horizonScroll : fixColumn) {\n contentNode = /*#__PURE__*/React.createElement(\"div\", {\n style: {\n width: componentWidth - (fixHeader ? scrollbarSize : 0),\n position: 'sticky',\n left: 0,\n overflow: 'hidden'\n },\n className: \"\".concat(prefixCls, \"-expanded-row-fixed\")\n }, componentWidth !== 0 && contentNode);\n }\n\n return /*#__PURE__*/React.createElement(Component, {\n className: className,\n style: {\n display: expanded ? null : 'none'\n }\n }, /*#__PURE__*/React.createElement(Cell, {\n component: cellComponent,\n prefixCls: prefixCls,\n colSpan: colSpan\n }, contentNode));\n }, [children, Component, className, expanded, colSpan, isEmpty, scrollbarSize, componentWidth, fixColumn, fixHeader, horizonScroll]);\n}\n\nexport default ExpandedRow;","import * as React from 'react';\nvar ResizeContext = /*#__PURE__*/React.createContext(null);\nexport default ResizeContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Cell from '../Cell';\nimport TableContext from '../context/TableContext';\nimport BodyContext from '../context/BodyContext';\nimport { getColumnsKey } from '../utils/valueUtil';\nimport ExpandedRow from './ExpandedRow';\n\nfunction BodyRow(props) {\n var className = props.className,\n style = props.style,\n record = props.record,\n index = props.index,\n renderIndex = props.renderIndex,\n rowKey = props.rowKey,\n rowExpandable = props.rowExpandable,\n expandedKeys = props.expandedKeys,\n onRow = props.onRow,\n _props$indent = props.indent,\n indent = _props$indent === void 0 ? 0 : _props$indent,\n RowComponent = props.rowComponent,\n cellComponent = props.cellComponent,\n childrenColumnName = props.childrenColumnName;\n\n var _React$useContext = React.useContext(TableContext),\n prefixCls = _React$useContext.prefixCls,\n fixedInfoList = _React$useContext.fixedInfoList;\n\n var _React$useContext2 = React.useContext(BodyContext),\n flattenColumns = _React$useContext2.flattenColumns,\n expandableType = _React$useContext2.expandableType,\n expandRowByClick = _React$useContext2.expandRowByClick,\n onTriggerExpand = _React$useContext2.onTriggerExpand,\n rowClassName = _React$useContext2.rowClassName,\n expandedRowClassName = _React$useContext2.expandedRowClassName,\n indentSize = _React$useContext2.indentSize,\n expandIcon = _React$useContext2.expandIcon,\n expandedRowRender = _React$useContext2.expandedRowRender,\n expandIconColumnIndex = _React$useContext2.expandIconColumnIndex;\n\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n expandRended = _React$useState2[0],\n setExpandRended = _React$useState2[1];\n\n var expanded = expandedKeys && expandedKeys.has(props.recordKey);\n React.useEffect(function () {\n if (expanded) {\n setExpandRended(true);\n }\n }, [expanded]);\n var rowSupportExpand = expandableType === 'row' && (!rowExpandable || rowExpandable(record)); // Only when row is not expandable and `children` exist in record\n\n var nestExpandable = expandableType === 'nest';\n var hasNestChildren = childrenColumnName && record && record[childrenColumnName];\n var mergedExpandable = rowSupportExpand || nestExpandable; // ======================== Expandable =========================\n\n var onExpandRef = React.useRef(onTriggerExpand);\n onExpandRef.current = onTriggerExpand;\n\n var onInternalTriggerExpand = function onInternalTriggerExpand() {\n onExpandRef.current.apply(onExpandRef, arguments);\n }; // =========================== onRow ===========================\n\n\n var additionalProps = onRow === null || onRow === void 0 ? void 0 : onRow(record, index);\n\n var onClick = function onClick(event) {\n var _additionalProps$onCl;\n\n if (expandRowByClick && mergedExpandable) {\n onInternalTriggerExpand(record, event);\n }\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 additionalProps === null || additionalProps === void 0 ? void 0 : (_additionalProps$onCl = additionalProps.onClick) === null || _additionalProps$onCl === void 0 ? void 0 : _additionalProps$onCl.call.apply(_additionalProps$onCl, [additionalProps, event].concat(args));\n }; // ======================== Base tr row ========================\n\n\n var computeRowClassName;\n\n if (typeof rowClassName === 'string') {\n computeRowClassName = rowClassName;\n } else if (typeof rowClassName === 'function') {\n computeRowClassName = rowClassName(record, index, indent);\n }\n\n var columnsKey = getColumnsKey(flattenColumns);\n var baseRowNode = /*#__PURE__*/React.createElement(RowComponent, _extends({}, additionalProps, {\n \"data-row-key\": rowKey,\n className: classNames(className, \"\".concat(prefixCls, \"-row\"), \"\".concat(prefixCls, \"-row-level-\").concat(indent), computeRowClassName, additionalProps && additionalProps.className),\n style: _objectSpread(_objectSpread({}, style), additionalProps ? additionalProps.style : null),\n onClick: onClick\n }), flattenColumns.map(function (column, colIndex) {\n var render = column.render,\n dataIndex = column.dataIndex,\n columnClassName = column.className;\n var key = columnsKey[colIndex];\n var fixedInfo = fixedInfoList[colIndex]; // ============= Used for nest expandable =============\n\n var appendCellNode;\n\n if (colIndex === (expandIconColumnIndex || 0) && nestExpandable) {\n appendCellNode = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", {\n style: {\n paddingLeft: \"\".concat(indentSize * indent, \"px\")\n },\n className: \"\".concat(prefixCls, \"-row-indent indent-level-\").concat(indent)\n }), expandIcon({\n prefixCls: prefixCls,\n expanded: expanded,\n expandable: hasNestChildren,\n record: record,\n onExpand: onInternalTriggerExpand\n }));\n }\n\n var additionalCellProps;\n\n if (column.onCell) {\n additionalCellProps = column.onCell(record, index);\n }\n\n return /*#__PURE__*/React.createElement(Cell, _extends({\n className: columnClassName,\n ellipsis: column.ellipsis,\n align: column.align,\n component: cellComponent,\n prefixCls: prefixCls,\n key: key,\n record: record,\n index: index,\n renderIndex: renderIndex,\n dataIndex: dataIndex,\n render: render,\n shouldCellUpdate: column.shouldCellUpdate,\n expanded: appendCellNode && expanded\n }, fixedInfo, {\n appendNode: appendCellNode,\n additionalProps: additionalCellProps\n }));\n })); // ======================== Expand Row =========================\n\n var expandRowNode;\n\n if (rowSupportExpand && (expandRended || expanded)) {\n var expandContent = expandedRowRender(record, index, indent + 1, expanded);\n var computedExpandedRowClassName = expandedRowClassName && expandedRowClassName(record, index, indent);\n expandRowNode = /*#__PURE__*/React.createElement(ExpandedRow, {\n expanded: expanded,\n className: classNames(\"\".concat(prefixCls, \"-expanded-row\"), \"\".concat(prefixCls, \"-expanded-row-level-\").concat(indent + 1), computedExpandedRowClassName),\n prefixCls: prefixCls,\n component: RowComponent,\n cellComponent: cellComponent,\n colSpan: flattenColumns.length,\n isEmpty: false\n }, expandContent);\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, baseRowNode, expandRowNode);\n}\n\nBodyRow.displayName = 'BodyRow';\nexport default BodyRow;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react'; // recursion (flat tree structure)\n\nfunction flatRecord(record, indent, childrenColumnName, expandedKeys, getRowKey, index) {\n var arr = [];\n arr.push({\n record: record,\n indent: indent,\n index: index\n });\n var key = getRowKey(record);\n var expanded = expandedKeys === null || expandedKeys === void 0 ? void 0 : expandedKeys.has(key);\n\n if (record && Array.isArray(record[childrenColumnName]) && expanded) {\n // expanded state, flat record\n for (var i = 0; i < record[childrenColumnName].length; i += 1) {\n var tempArr = flatRecord(record[childrenColumnName][i], indent + 1, childrenColumnName, expandedKeys, getRowKey, i);\n arr.push.apply(arr, _toConsumableArray(tempArr));\n }\n }\n\n return arr;\n}\n/**\n * flat tree data on expanded state\n *\n * @export\n * @template T\n * @param {*} data : table data\n * @param {string} childrenColumnName : 指定树形结构的列名\n * @param {Set<Key>} expandedKeys : 展开的行对应的keys\n * @param {GetRowKey<T>} getRowKey : 获取当前rowKey的方法\n * @returns flattened data\n */\n\n\nexport default function useFlattenRecords(data, childrenColumnName, expandedKeys, getRowKey) {\n var arr = React.useMemo(function () {\n if (expandedKeys === null || expandedKeys === void 0 ? void 0 : expandedKeys.size) {\n var temp = []; // collect flattened record\n\n for (var i = 0; i < (data === null || data === void 0 ? void 0 : data.length); i += 1) {\n var record = data[i];\n temp.push.apply(temp, _toConsumableArray(flatRecord(record, 0, childrenColumnName, expandedKeys, getRowKey, i)));\n }\n\n return temp;\n }\n\n return data === null || data === void 0 ? void 0 : data.map(function (item, index) {\n return {\n record: item,\n indent: 0,\n index: index\n };\n });\n }, [data, childrenColumnName, expandedKeys, getRowKey]);\n return arr;\n}","import * as React from 'react';\nimport ResizeObserver from 'rc-resize-observer';\nexport default function MeasureCell(_ref) {\n var columnKey = _ref.columnKey,\n onColumnResize = _ref.onColumnResize;\n var cellRef = React.useRef();\n React.useEffect(function () {\n if (cellRef.current) {\n onColumnResize(columnKey, cellRef.current.offsetWidth);\n }\n }, []);\n return /*#__PURE__*/React.createElement(ResizeObserver, {\n data: columnKey\n }, /*#__PURE__*/React.createElement(\"td\", {\n ref: cellRef,\n style: {\n padding: 0,\n border: 0,\n height: 0\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: {\n height: 0,\n overflow: 'hidden'\n }\n }, \"\\xA0\")));\n}","import * as React from 'react';\nimport ResizeObserver from 'rc-resize-observer';\nimport MeasureCell from './MeasureCell';\nexport default function MeasureRow(_ref) {\n var prefixCls = _ref.prefixCls,\n columnsKey = _ref.columnsKey,\n onColumnResize = _ref.onColumnResize;\n return /*#__PURE__*/React.createElement(\"tr\", {\n \"aria-hidden\": \"true\",\n className: \"\".concat(prefixCls, \"-measure-row\"),\n style: {\n height: 0,\n fontSize: 0\n }\n }, /*#__PURE__*/React.createElement(ResizeObserver.Collection, {\n onBatchResize: function onBatchResize(infoList) {\n infoList.forEach(function (_ref2) {\n var columnKey = _ref2.data,\n size = _ref2.size;\n onColumnResize(columnKey, size.offsetWidth);\n });\n }\n }, columnsKey.map(function (columnKey) {\n return /*#__PURE__*/React.createElement(MeasureCell, {\n key: columnKey,\n columnKey: columnKey,\n onColumnResize: onColumnResize\n });\n })));\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport TableContext from '../context/TableContext';\nimport ExpandedRow from './ExpandedRow';\nimport BodyContext from '../context/BodyContext';\nimport { getColumnsKey } from '../utils/valueUtil';\nimport ResizeContext from '../context/ResizeContext';\nimport BodyRow from './BodyRow';\nimport useFlattenRecords from '../hooks/useFlattenRecords';\nimport HoverContext from '../context/HoverContext';\nimport PerfContext from '../context/PerfContext';\nimport MeasureRow from './MeasureRow';\n\nfunction Body(_ref) {\n var data = _ref.data,\n getRowKey = _ref.getRowKey,\n measureColumnWidth = _ref.measureColumnWidth,\n expandedKeys = _ref.expandedKeys,\n onRow = _ref.onRow,\n rowExpandable = _ref.rowExpandable,\n emptyNode = _ref.emptyNode,\n childrenColumnName = _ref.childrenColumnName;\n\n var _React$useContext = React.useContext(ResizeContext),\n onColumnResize = _React$useContext.onColumnResize;\n\n var _React$useContext2 = React.useContext(TableContext),\n prefixCls = _React$useContext2.prefixCls,\n getComponent = _React$useContext2.getComponent;\n\n var _React$useContext3 = React.useContext(BodyContext),\n flattenColumns = _React$useContext3.flattenColumns;\n\n var flattenData = useFlattenRecords(data, childrenColumnName, expandedKeys, getRowKey); // =================== Performance ====================\n\n var perfRef = React.useRef({\n renderWithProps: false\n }); // ====================== Hover =======================\n\n var _React$useState = React.useState(-1),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n startRow = _React$useState2[0],\n setStartRow = _React$useState2[1];\n\n var _React$useState3 = React.useState(-1),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n endRow = _React$useState4[0],\n setEndRow = _React$useState4[1];\n\n var onHover = React.useCallback(function (start, end) {\n setStartRow(start);\n setEndRow(end);\n }, []); // ====================== Render ======================\n\n var bodyNode = React.useMemo(function () {\n var WrapperComponent = getComponent(['body', 'wrapper'], 'tbody');\n var trComponent = getComponent(['body', 'row'], 'tr');\n var tdComponent = getComponent(['body', 'cell'], 'td');\n var rows;\n\n if (data.length) {\n rows = flattenData.map(function (item, idx) {\n var record = item.record,\n indent = item.indent,\n renderIndex = item.index;\n var key = getRowKey(record, idx);\n return /*#__PURE__*/React.createElement(BodyRow, {\n key: key,\n rowKey: key,\n record: record,\n recordKey: key,\n index: idx,\n renderIndex: renderIndex,\n rowComponent: trComponent,\n cellComponent: tdComponent,\n expandedKeys: expandedKeys,\n onRow: onRow,\n getRowKey: getRowKey,\n rowExpandable: rowExpandable,\n childrenColumnName: childrenColumnName,\n indent: indent\n });\n });\n } else {\n rows = /*#__PURE__*/React.createElement(ExpandedRow, {\n expanded: true,\n className: \"\".concat(prefixCls, \"-placeholder\"),\n prefixCls: prefixCls,\n component: trComponent,\n cellComponent: tdComponent,\n colSpan: flattenColumns.length,\n isEmpty: true\n }, emptyNode);\n }\n\n var columnsKey = getColumnsKey(flattenColumns);\n return /*#__PURE__*/React.createElement(WrapperComponent, {\n className: \"\".concat(prefixCls, \"-tbody\")\n }, measureColumnWidth && /*#__PURE__*/React.createElement(MeasureRow, {\n prefixCls: prefixCls,\n columnsKey: columnsKey,\n onColumnResize: onColumnResize\n }), rows);\n }, [data, prefixCls, onRow, measureColumnWidth, expandedKeys, getRowKey, getComponent, emptyNode, flattenColumns, childrenColumnName, onColumnResize, rowExpandable, flattenData]);\n return /*#__PURE__*/React.createElement(PerfContext.Provider, {\n value: perfRef.current\n }, /*#__PURE__*/React.createElement(HoverContext.Provider, {\n value: {\n startRow: startRow,\n endRow: endRow,\n onHover: onHover\n }\n }, bodyNode));\n}\n\nvar MemoBody = /*#__PURE__*/React.memo(Body);\nMemoBody.displayName = 'Body';\nexport default MemoBody;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"expandable\"];\nimport warning from \"rc-util/es/warning\";\nexport var INTERNAL_COL_DEFINE = 'RC_TABLE_INTERNAL_COL_DEFINE';\nexport function getExpandableProps(props) {\n var expandable = props.expandable,\n legacyExpandableConfig = _objectWithoutProperties(props, _excluded);\n\n var config;\n\n if ('expandable' in props) {\n config = _objectSpread(_objectSpread({}, legacyExpandableConfig), expandable);\n } else {\n if (process.env.NODE_ENV !== 'production' && ['indentSize', 'expandedRowKeys', 'defaultExpandedRowKeys', 'defaultExpandAllRows', 'expandedRowRender', 'expandRowByClick', 'expandIcon', 'onExpand', 'onExpandedRowsChange', 'expandedRowClassName', 'expandIconColumnIndex', 'showExpandColumn'].some(function (prop) {\n return prop in props;\n })) {\n warning(false, 'expanded related props have been moved into `expandable`.');\n }\n\n config = legacyExpandableConfig;\n }\n\n if (config.showExpandColumn === false) {\n config.expandIconColumnIndex = -1;\n }\n\n return config;\n}","export var EXPAND_COLUMN = {};","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\"],\n _excluded2 = [\"fixed\"];\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { INTERNAL_COL_DEFINE } from '../utils/legacyUtil';\nimport { EXPAND_COLUMN } from '../constant';\nexport function convertChildrenToColumns(children) {\n return toArray(children).filter(function (node) {\n return /*#__PURE__*/React.isValidElement(node);\n }).map(function (_ref) {\n var key = _ref.key,\n props = _ref.props;\n\n var nodeChildren = props.children,\n restProps = _objectWithoutProperties(props, _excluded);\n\n var column = _objectSpread({\n key: key\n }, restProps);\n\n if (nodeChildren) {\n column.children = convertChildrenToColumns(nodeChildren);\n }\n\n return column;\n });\n}\n\nfunction flatColumns(columns) {\n return columns.reduce(function (list, column) {\n var fixed = column.fixed; // Convert `fixed='true'` to `fixed='left'` instead\n\n var parsedFixed = fixed === true ? 'left' : fixed;\n var subColumns = column.children;\n\n if (subColumns && subColumns.length > 0) {\n return [].concat(_toConsumableArray(list), _toConsumableArray(flatColumns(subColumns).map(function (subColum) {\n return _objectSpread({\n fixed: parsedFixed\n }, subColum);\n })));\n }\n\n return [].concat(_toConsumableArray(list), [_objectSpread(_objectSpread({}, column), {}, {\n fixed: parsedFixed\n })]);\n }, []);\n}\n\nfunction warningFixed(flattenColumns) {\n var allFixLeft = true;\n\n for (var i = 0; i < flattenColumns.length; i += 1) {\n var col = flattenColumns[i];\n\n if (allFixLeft && col.fixed !== 'left') {\n allFixLeft = false;\n } else if (!allFixLeft && col.fixed === 'left') {\n warning(false, \"Index \".concat(i - 1, \" of `columns` missing `fixed='left'` prop.\"));\n break;\n }\n }\n\n var allFixRight = true;\n\n for (var _i = flattenColumns.length - 1; _i >= 0; _i -= 1) {\n var _col = flattenColumns[_i];\n\n if (allFixRight && _col.fixed !== 'right') {\n allFixRight = false;\n } else if (!allFixRight && _col.fixed === 'right') {\n warning(false, \"Index \".concat(_i + 1, \" of `columns` missing `fixed='right'` prop.\"));\n break;\n }\n }\n}\n\nfunction revertForRtl(columns) {\n return columns.map(function (column) {\n var fixed = column.fixed,\n restProps = _objectWithoutProperties(column, _excluded2); // Convert `fixed='left'` to `fixed='right'` instead\n\n\n var parsedFixed = fixed;\n\n if (fixed === 'left') {\n parsedFixed = 'right';\n } else if (fixed === 'right') {\n parsedFixed = 'left';\n }\n\n return _objectSpread({\n fixed: parsedFixed\n }, restProps);\n });\n}\n/**\n * Parse `columns` & `children` into `columns`.\n */\n\n\nfunction useColumns(_ref2, transformColumns) {\n var prefixCls = _ref2.prefixCls,\n columns = _ref2.columns,\n children = _ref2.children,\n expandable = _ref2.expandable,\n expandedKeys = _ref2.expandedKeys,\n columnTitle = _ref2.columnTitle,\n getRowKey = _ref2.getRowKey,\n onTriggerExpand = _ref2.onTriggerExpand,\n expandIcon = _ref2.expandIcon,\n rowExpandable = _ref2.rowExpandable,\n expandIconColumnIndex = _ref2.expandIconColumnIndex,\n direction = _ref2.direction,\n expandRowByClick = _ref2.expandRowByClick,\n columnWidth = _ref2.columnWidth,\n fixed = _ref2.fixed;\n var baseColumns = React.useMemo(function () {\n return columns || convertChildrenToColumns(children);\n }, [columns, children]); // ========================== Expand ==========================\n\n var withExpandColumns = React.useMemo(function () {\n if (expandable) {\n var _expandColumn;\n\n var cloneColumns = baseColumns.slice(); // >>> Warning if use `expandIconColumnIndex`\n\n if (process.env.NODE_ENV !== 'production' && expandIconColumnIndex >= 0) {\n warning(false, '`expandIconColumnIndex` is deprecated. Please use `Table.EXPAND_COLUMN` in `columns` instead.');\n } // >>> Insert expand column if not exist\n\n\n if (!cloneColumns.includes(EXPAND_COLUMN)) {\n var expandColIndex = expandIconColumnIndex || 0;\n\n if (expandColIndex >= 0) {\n cloneColumns.splice(expandColIndex, 0, EXPAND_COLUMN);\n }\n } // >>> Deduplicate additional expand column\n\n\n if (process.env.NODE_ENV !== 'production' && cloneColumns.filter(function (c) {\n return c === EXPAND_COLUMN;\n }).length > 1) {\n warning(false, 'There exist more than one `EXPAND_COLUMN` in `columns`.');\n }\n\n var expandColumnIndex = cloneColumns.indexOf(EXPAND_COLUMN);\n cloneColumns = cloneColumns.filter(function (column, index) {\n return column !== EXPAND_COLUMN || index === expandColumnIndex;\n }); // >>> Check if expand column need to fixed\n\n var prevColumn = baseColumns[expandColumnIndex];\n var fixedColumn;\n\n if ((fixed === 'left' || fixed) && !expandIconColumnIndex) {\n fixedColumn = 'left';\n } else if ((fixed === 'right' || fixed) && expandIconColumnIndex === baseColumns.length) {\n fixedColumn = 'right';\n } else {\n fixedColumn = prevColumn ? prevColumn.fixed : null;\n } // >>> Create expandable column\n\n\n var expandColumn = (_expandColumn = {}, _defineProperty(_expandColumn, INTERNAL_COL_DEFINE, {\n className: \"\".concat(prefixCls, \"-expand-icon-col\"),\n columnType: 'EXPAND_COLUMN'\n }), _defineProperty(_expandColumn, \"title\", columnTitle), _defineProperty(_expandColumn, \"fixed\", fixedColumn), _defineProperty(_expandColumn, \"className\", \"\".concat(prefixCls, \"-row-expand-icon-cell\")), _defineProperty(_expandColumn, \"width\", columnWidth), _defineProperty(_expandColumn, \"render\", function render(_, record, index) {\n var rowKey = getRowKey(record, index);\n var expanded = expandedKeys.has(rowKey);\n var recordExpandable = rowExpandable ? rowExpandable(record) : true;\n var icon = expandIcon({\n prefixCls: prefixCls,\n expanded: expanded,\n expandable: recordExpandable,\n record: record,\n onExpand: onTriggerExpand\n });\n\n if (expandRowByClick) {\n return /*#__PURE__*/React.createElement(\"span\", {\n onClick: function onClick(e) {\n return e.stopPropagation();\n }\n }, icon);\n }\n\n return icon;\n }), _expandColumn);\n return cloneColumns.map(function (col) {\n return col === EXPAND_COLUMN ? expandColumn : col;\n });\n }\n\n if (process.env.NODE_ENV !== 'production' && baseColumns.includes(EXPAND_COLUMN)) {\n warning(false, '`expandable` is not config but there exist `EXPAND_COLUMN` in `columns`.');\n }\n\n return baseColumns.filter(function (col) {\n return col !== EXPAND_COLUMN;\n });\n }, [expandable, baseColumns, getRowKey, expandedKeys, expandIcon, direction]); // ========================= Transform ========================\n\n var mergedColumns = React.useMemo(function () {\n var finalColumns = withExpandColumns;\n\n if (transformColumns) {\n finalColumns = transformColumns(finalColumns);\n } // Always provides at least one column for table display\n\n\n if (!finalColumns.length) {\n finalColumns = [{\n render: function render() {\n return null;\n }\n }];\n }\n\n return finalColumns;\n }, [transformColumns, withExpandColumns, direction]); // ========================== Flatten =========================\n\n var flattenColumns = React.useMemo(function () {\n if (direction === 'rtl') {\n return revertForRtl(flatColumns(mergedColumns));\n }\n\n return flatColumns(mergedColumns);\n }, [mergedColumns, direction]); // Only check out of production since it's waste for each render\n\n if (process.env.NODE_ENV !== 'production') {\n warningFixed(direction === 'rtl' ? flattenColumns.slice().reverse() : flattenColumns);\n }\n\n return [mergedColumns, flattenColumns];\n}\n\nexport default useColumns;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useRef, useState, useEffect } from 'react';\n/**\n * Execute code before next frame but async\n */\n\nexport function useLayoutState(defaultState) {\n var stateRef = useRef(defaultState);\n\n var _useState = useState({}),\n _useState2 = _slicedToArray(_useState, 2),\n forceUpdate = _useState2[1];\n\n var lastPromiseRef = useRef(null);\n var updateBatchRef = useRef([]);\n\n function setFrameState(updater) {\n updateBatchRef.current.push(updater);\n var promise = Promise.resolve();\n lastPromiseRef.current = promise;\n promise.then(function () {\n if (lastPromiseRef.current === promise) {\n var prevBatch = updateBatchRef.current;\n var prevState = stateRef.current;\n updateBatchRef.current = [];\n prevBatch.forEach(function (batchUpdater) {\n stateRef.current = batchUpdater(stateRef.current);\n });\n lastPromiseRef.current = null;\n\n if (prevState !== stateRef.current) {\n forceUpdate({});\n }\n }\n });\n }\n\n useEffect(function () {\n return function () {\n lastPromiseRef.current = null;\n };\n }, []);\n return [stateRef.current, setFrameState];\n}\n/** Lock frame, when frame pass reset the lock. */\n\nexport function useTimeoutLock(defaultState) {\n var frameRef = useRef(defaultState || null);\n var timeoutRef = useRef();\n\n function cleanUp() {\n window.clearTimeout(timeoutRef.current);\n }\n\n function setState(newState) {\n frameRef.current = newState;\n cleanUp();\n timeoutRef.current = window.setTimeout(function () {\n frameRef.current = null;\n timeoutRef.current = undefined;\n }, 100);\n }\n\n function getState() {\n return frameRef.current;\n }\n\n useEffect(function () {\n return cleanUp;\n }, []);\n return [setState, getState];\n}","import { useMemo } from 'react';\n/**\n * Get sticky column offset width\n */\n\nfunction useStickyOffsets(colWidths, columnCount, direction) {\n var stickyOffsets = useMemo(function () {\n var leftOffsets = [];\n var rightOffsets = [];\n var left = 0;\n var right = 0;\n\n for (var start = 0; start < columnCount; start += 1) {\n if (direction === 'rtl') {\n // Left offset\n rightOffsets[start] = right;\n right += colWidths[start] || 0; // Right offset\n\n var end = columnCount - start - 1;\n leftOffsets[end] = left;\n left += colWidths[end] || 0;\n } else {\n // Left offset\n leftOffsets[start] = left;\n left += colWidths[start] || 0; // Right offset\n\n var _end = columnCount - start - 1;\n\n rightOffsets[_end] = right;\n right += colWidths[_end] || 0;\n }\n }\n\n return {\n left: leftOffsets,\n right: rightOffsets\n };\n }, [colWidths, columnCount, direction]);\n return stickyOffsets;\n}\n\nexport default useStickyOffsets;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"columnType\"];\nimport * as React from 'react';\nimport { INTERNAL_COL_DEFINE } from './utils/legacyUtil';\n\nfunction ColGroup(_ref) {\n var colWidths = _ref.colWidths,\n columns = _ref.columns,\n columCount = _ref.columCount;\n var cols = [];\n var len = columCount || columns.length; // Only insert col with width & additional props\n // Skip if rest col do not have any useful info\n\n var mustInsert = false;\n\n for (var i = len - 1; i >= 0; i -= 1) {\n var width = colWidths[i];\n var column = columns && columns[i];\n var additionalProps = column && column[INTERNAL_COL_DEFINE];\n\n if (width || additionalProps || mustInsert) {\n var _ref2 = additionalProps || {},\n columnType = _ref2.columnType,\n restAdditionalProps = _objectWithoutProperties(_ref2, _excluded);\n\n cols.unshift( /*#__PURE__*/React.createElement(\"col\", _extends({\n key: i,\n style: {\n width: width\n }\n }, restAdditionalProps)));\n mustInsert = true;\n }\n }\n\n return /*#__PURE__*/React.createElement(\"colgroup\", null, cols);\n}\n\nexport default ColGroup;","import * as React from 'react';\n\nfunction Panel(_ref) {\n var className = _ref.className,\n children = _ref.children;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, children);\n}\n\nexport default Panel;","import * as React from 'react';\nvar SummaryContext = /*#__PURE__*/React.createContext({});\nexport default SummaryContext;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport * as React from 'react';\nexport default function FooterRow(_ref) {\n var children = _ref.children,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"tr\", props, children);\n}","import Cell from './Cell';\nimport Row from './Row';\n/**\n * Syntactic sugar. Do not support HOC.\n */\n\nfunction Summary(_ref) {\n var children = _ref.children;\n return children;\n}\n\nSummary.Row = Row;\nSummary.Cell = Cell;\nexport default Summary;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport SummaryContext from './SummaryContext';\nimport Cell from '../Cell';\nimport TableContext from '../context/TableContext';\nimport { getCellFixedInfo } from '../utils/fixUtil';\nexport default function SummaryCell(_ref) {\n var className = _ref.className,\n index = _ref.index,\n children = _ref.children,\n _ref$colSpan = _ref.colSpan,\n colSpan = _ref$colSpan === void 0 ? 1 : _ref$colSpan,\n rowSpan = _ref.rowSpan,\n align = _ref.align;\n\n var _React$useContext = React.useContext(TableContext),\n prefixCls = _React$useContext.prefixCls,\n direction = _React$useContext.direction;\n\n var _React$useContext2 = React.useContext(SummaryContext),\n scrollColumnIndex = _React$useContext2.scrollColumnIndex,\n stickyOffsets = _React$useContext2.stickyOffsets,\n flattenColumns = _React$useContext2.flattenColumns;\n\n var lastIndex = index + colSpan - 1;\n var mergedColSpan = lastIndex + 1 === scrollColumnIndex ? colSpan + 1 : colSpan;\n var fixedInfo = getCellFixedInfo(index, index + mergedColSpan - 1, flattenColumns, stickyOffsets, direction);\n return /*#__PURE__*/React.createElement(Cell, _extends({\n className: className,\n index: index,\n component: \"td\",\n prefixCls: prefixCls,\n record: null,\n dataIndex: null,\n align: align,\n colSpan: mergedColSpan,\n rowSpan: rowSpan,\n render: function render() {\n return children;\n }\n }, fixedInfo));\n}","import * as React from 'react';\nimport TableContext from '../context/TableContext';\nimport Summary from './Summary';\nimport SummaryContext from './SummaryContext';\n\nfunction Footer(_ref) {\n var children = _ref.children,\n stickyOffsets = _ref.stickyOffsets,\n flattenColumns = _ref.flattenColumns;\n var tableContext = React.useContext(TableContext);\n var prefixCls = tableContext.prefixCls;\n var lastColumnIndex = flattenColumns.length - 1;\n var scrollColumn = flattenColumns[lastColumnIndex];\n var summaryContext = React.useMemo(function () {\n return {\n stickyOffsets: stickyOffsets,\n flattenColumns: flattenColumns,\n scrollColumnIndex: (scrollColumn === null || scrollColumn === void 0 ? void 0 : scrollColumn.scrollbar) ? lastColumnIndex : null\n };\n }, [scrollColumn, flattenColumns, lastColumnIndex, stickyOffsets]);\n return /*#__PURE__*/React.createElement(SummaryContext.Provider, {\n value: summaryContext\n }, /*#__PURE__*/React.createElement(\"tfoot\", {\n className: \"\".concat(prefixCls, \"-summary\")\n }, children));\n}\n\nexport default Footer;\nexport var FooterComponents = Summary;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nexport function renderExpandIcon(_ref) {\n var _classNames;\n\n var prefixCls = _ref.prefixCls,\n record = _ref.record,\n onExpand = _ref.onExpand,\n expanded = _ref.expanded,\n expandable = _ref.expandable;\n var expandClassName = \"\".concat(prefixCls, \"-row-expand-icon\");\n\n if (!expandable) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(expandClassName, \"\".concat(prefixCls, \"-row-spaced\"))\n });\n }\n\n var onClick = function onClick(event) {\n onExpand(record, event);\n event.stopPropagation();\n };\n\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(expandClassName, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-row-expanded\"), expanded), _defineProperty(_classNames, \"\".concat(prefixCls, \"-row-collapsed\"), !expanded), _classNames)),\n onClick: onClick\n });\n}\nexport function findAllChildrenKeys(data, getRowKey, childrenColumnName) {\n var keys = [];\n\n function dig(list) {\n (list || []).forEach(function (item, index) {\n keys.push(getRowKey(item, index));\n dig(item[childrenColumnName]);\n });\n }\n\n dig(data);\n return keys;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport getScrollBarSize from \"rc-util/es/getScrollBarSize\";\nimport classNames from 'classnames';\nimport { getOffset } from \"rc-util/es/Dom/css\";\nimport TableContext from './context/TableContext';\nimport { useLayoutState } from './hooks/useFrame';\n\nvar StickyScrollBar = function StickyScrollBar(_ref, ref) {\n var _scrollBodyRef$curren, _scrollBodyRef$curren2;\n\n var scrollBodyRef = _ref.scrollBodyRef,\n onScroll = _ref.onScroll,\n offsetScroll = _ref.offsetScroll,\n container = _ref.container;\n\n var _React$useContext = React.useContext(TableContext),\n prefixCls = _React$useContext.prefixCls;\n\n var bodyScrollWidth = ((_scrollBodyRef$curren = scrollBodyRef.current) === null || _scrollBodyRef$curren === void 0 ? void 0 : _scrollBodyRef$curren.scrollWidth) || 0;\n var bodyWidth = ((_scrollBodyRef$curren2 = scrollBodyRef.current) === null || _scrollBodyRef$curren2 === void 0 ? void 0 : _scrollBodyRef$curren2.clientWidth) || 0;\n var scrollBarWidth = bodyScrollWidth && bodyWidth * (bodyWidth / bodyScrollWidth);\n var scrollBarRef = React.useRef();\n\n var _useLayoutState = useLayoutState({\n scrollLeft: 0,\n isHiddenScrollBar: false\n }),\n _useLayoutState2 = _slicedToArray(_useLayoutState, 2),\n scrollState = _useLayoutState2[0],\n setScrollState = _useLayoutState2[1];\n\n var refState = React.useRef({\n delta: 0,\n x: 0\n });\n\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n isActive = _React$useState2[0],\n setActive = _React$useState2[1];\n\n var onMouseUp = function onMouseUp() {\n setActive(false);\n };\n\n var onMouseDown = function onMouseDown(event) {\n event.persist();\n refState.current.delta = event.pageX - scrollState.scrollLeft;\n refState.current.x = 0;\n setActive(true);\n event.preventDefault();\n };\n\n var onMouseMove = function onMouseMove(event) {\n var _window;\n\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\n var _ref2 = event || ((_window = window) === null || _window === void 0 ? void 0 : _window.event),\n buttons = _ref2.buttons;\n\n if (!isActive || buttons === 0) {\n // If out body mouse up, we can set isActive false when mouse move\n if (isActive) {\n setActive(false);\n }\n\n return;\n }\n\n var left = refState.current.x + event.pageX - refState.current.x - refState.current.delta;\n\n if (left <= 0) {\n left = 0;\n }\n\n if (left + scrollBarWidth >= bodyWidth) {\n left = bodyWidth - scrollBarWidth;\n }\n\n onScroll({\n scrollLeft: left / bodyWidth * (bodyScrollWidth + 2)\n });\n refState.current.x = event.pageX;\n };\n\n var onContainerScroll = function onContainerScroll() {\n if (!scrollBodyRef.current) {\n return;\n }\n\n var tableOffsetTop = getOffset(scrollBodyRef.current).top;\n var tableBottomOffset = tableOffsetTop + scrollBodyRef.current.offsetHeight;\n var currentClientOffset = container === window ? document.documentElement.scrollTop + window.innerHeight : getOffset(container).top + container.clientHeight;\n\n if (tableBottomOffset - getScrollBarSize() <= currentClientOffset || tableOffsetTop >= currentClientOffset - offsetScroll) {\n setScrollState(function (state) {\n return _objectSpread(_objectSpread({}, state), {}, {\n isHiddenScrollBar: true\n });\n });\n } else {\n setScrollState(function (state) {\n return _objectSpread(_objectSpread({}, state), {}, {\n isHiddenScrollBar: false\n });\n });\n }\n };\n\n var setScrollLeft = function setScrollLeft(left) {\n setScrollState(function (state) {\n return _objectSpread(_objectSpread({}, state), {}, {\n scrollLeft: left / bodyScrollWidth * bodyWidth || 0\n });\n });\n };\n\n React.useImperativeHandle(ref, function () {\n return {\n setScrollLeft: setScrollLeft\n };\n });\n React.useEffect(function () {\n var onMouseUpListener = addEventListener(document.body, 'mouseup', onMouseUp, false);\n var onMouseMoveListener = addEventListener(document.body, 'mousemove', onMouseMove, false);\n onContainerScroll();\n return function () {\n onMouseUpListener.remove();\n onMouseMoveListener.remove();\n };\n }, [scrollBarWidth, isActive]);\n React.useEffect(function () {\n var onScrollListener = addEventListener(container, 'scroll', onContainerScroll, false);\n var onResizeListener = addEventListener(window, 'resize', onContainerScroll, false);\n return function () {\n onScrollListener.remove();\n onResizeListener.remove();\n };\n }, [container]);\n React.useEffect(function () {\n if (!scrollState.isHiddenScrollBar) {\n setScrollState(function (state) {\n var bodyNode = scrollBodyRef.current;\n\n if (!bodyNode) {\n return state;\n }\n\n return _objectSpread(_objectSpread({}, state), {}, {\n scrollLeft: bodyNode.scrollLeft / bodyNode.scrollWidth * bodyNode.clientWidth\n });\n });\n }\n }, [scrollState.isHiddenScrollBar]);\n\n if (bodyScrollWidth <= bodyWidth || !scrollBarWidth || scrollState.isHiddenScrollBar) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n height: getScrollBarSize(),\n width: bodyWidth,\n bottom: offsetScroll\n },\n className: \"\".concat(prefixCls, \"-sticky-scroll\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n onMouseDown: onMouseDown,\n ref: scrollBarRef,\n className: classNames(\"\".concat(prefixCls, \"-sticky-scroll-bar\"), _defineProperty({}, \"\".concat(prefixCls, \"-sticky-scroll-bar-active\"), isActive)),\n style: {\n width: \"\".concat(scrollBarWidth, \"px\"),\n transform: \"translate3d(\".concat(scrollState.scrollLeft, \"px, 0, 0)\")\n }\n }));\n};\n\nexport default /*#__PURE__*/React.forwardRef(StickyScrollBar);","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\"; // fix ssr render\n\nvar defaultContainer = canUseDom() ? window : null;\n/** Sticky header hooks */\n\nexport default function useSticky(sticky, prefixCls) {\n var _ref = _typeof(sticky) === 'object' ? sticky : {},\n _ref$offsetHeader = _ref.offsetHeader,\n offsetHeader = _ref$offsetHeader === void 0 ? 0 : _ref$offsetHeader,\n _ref$offsetSummary = _ref.offsetSummary,\n offsetSummary = _ref$offsetSummary === void 0 ? 0 : _ref$offsetSummary,\n _ref$offsetScroll = _ref.offsetScroll,\n offsetScroll = _ref$offsetScroll === void 0 ? 0 : _ref$offsetScroll,\n _ref$getContainer = _ref.getContainer,\n getContainer = _ref$getContainer === void 0 ? function () {\n return defaultContainer;\n } : _ref$getContainer;\n\n var container = getContainer() || defaultContainer;\n return React.useMemo(function () {\n var isSticky = !!sticky;\n return {\n isSticky: isSticky,\n stickyClassName: isSticky ? \"\".concat(prefixCls, \"-sticky-holder\") : '',\n offsetHeader: offsetHeader,\n offsetSummary: offsetSummary,\n offsetScroll: offsetScroll,\n container: container\n };\n }, [offsetScroll, offsetHeader, offsetSummary, prefixCls, container]);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"noData\", \"columns\", \"flattenColumns\", \"colWidths\", \"columCount\", \"stickyOffsets\", \"direction\", \"fixHeader\", \"stickyTopOffset\", \"stickyBottomOffset\", \"stickyClassName\", \"onScroll\", \"maxContentScroll\", \"children\"];\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport classNames from 'classnames';\nimport { fillRef } from \"rc-util/es/ref\";\nimport ColGroup from '../ColGroup';\nimport TableContext from '../context/TableContext';\n\nfunction useColumnWidth(colWidths, columCount) {\n return useMemo(function () {\n var cloneColumns = [];\n\n for (var i = 0; i < columCount; i += 1) {\n var val = colWidths[i];\n\n if (val !== undefined) {\n cloneColumns[i] = val;\n } else {\n return null;\n }\n }\n\n return cloneColumns;\n }, [colWidths.join('_'), columCount]);\n}\n\nvar FixedHolder = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var className = _ref.className,\n noData = _ref.noData,\n columns = _ref.columns,\n flattenColumns = _ref.flattenColumns,\n colWidths = _ref.colWidths,\n columCount = _ref.columCount,\n stickyOffsets = _ref.stickyOffsets,\n direction = _ref.direction,\n fixHeader = _ref.fixHeader,\n stickyTopOffset = _ref.stickyTopOffset,\n stickyBottomOffset = _ref.stickyBottomOffset,\n stickyClassName = _ref.stickyClassName,\n onScroll = _ref.onScroll,\n maxContentScroll = _ref.maxContentScroll,\n children = _ref.children,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _React$useContext = React.useContext(TableContext),\n prefixCls = _React$useContext.prefixCls,\n scrollbarSize = _React$useContext.scrollbarSize,\n isSticky = _React$useContext.isSticky;\n\n var combinationScrollBarSize = isSticky && !fixHeader ? 0 : scrollbarSize; // Pass wheel to scroll event\n\n var scrollRef = React.useRef(null);\n var setScrollRef = React.useCallback(function (element) {\n fillRef(ref, element);\n fillRef(scrollRef, element);\n }, []);\n React.useEffect(function () {\n var _scrollRef$current;\n\n function onWheel(e) {\n var currentTarget = e.currentTarget,\n deltaX = e.deltaX;\n\n if (deltaX) {\n onScroll({\n currentTarget: currentTarget,\n scrollLeft: currentTarget.scrollLeft + deltaX\n });\n e.preventDefault();\n }\n }\n\n (_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 ? void 0 : _scrollRef$current.addEventListener('wheel', onWheel);\n return function () {\n var _scrollRef$current2;\n\n (_scrollRef$current2 = scrollRef.current) === null || _scrollRef$current2 === void 0 ? void 0 : _scrollRef$current2.removeEventListener('wheel', onWheel);\n };\n }, []); // Check if all flattenColumns has width\n\n var allFlattenColumnsWithWidth = React.useMemo(function () {\n return flattenColumns.every(function (column) {\n return column.width >= 0;\n });\n }, [flattenColumns]); // Add scrollbar column\n\n var lastColumn = flattenColumns[flattenColumns.length - 1];\n var ScrollBarColumn = {\n fixed: lastColumn ? lastColumn.fixed : null,\n scrollbar: true,\n onHeaderCell: function onHeaderCell() {\n return {\n className: \"\".concat(prefixCls, \"-cell-scrollbar\")\n };\n }\n };\n var columnsWithScrollbar = useMemo(function () {\n return combinationScrollBarSize ? [].concat(_toConsumableArray(columns), [ScrollBarColumn]) : columns;\n }, [combinationScrollBarSize, columns]);\n var flattenColumnsWithScrollbar = useMemo(function () {\n return combinationScrollBarSize ? [].concat(_toConsumableArray(flattenColumns), [ScrollBarColumn]) : flattenColumns;\n }, [combinationScrollBarSize, flattenColumns]); // Calculate the sticky offsets\n\n var headerStickyOffsets = useMemo(function () {\n var right = stickyOffsets.right,\n left = stickyOffsets.left;\n return _objectSpread(_objectSpread({}, stickyOffsets), {}, {\n left: direction === 'rtl' ? [].concat(_toConsumableArray(left.map(function (width) {\n return width + combinationScrollBarSize;\n })), [0]) : left,\n right: direction === 'rtl' ? right : [].concat(_toConsumableArray(right.map(function (width) {\n return width + combinationScrollBarSize;\n })), [0]),\n isSticky: isSticky\n });\n }, [combinationScrollBarSize, stickyOffsets, isSticky]);\n var mergedColumnWidth = useColumnWidth(colWidths, columCount);\n return /*#__PURE__*/React.createElement(\"div\", {\n style: _objectSpread({\n overflow: 'hidden'\n }, isSticky ? {\n top: stickyTopOffset,\n bottom: stickyBottomOffset\n } : {}),\n ref: setScrollRef,\n className: classNames(className, _defineProperty({}, stickyClassName, !!stickyClassName))\n }, /*#__PURE__*/React.createElement(\"table\", {\n style: {\n tableLayout: 'fixed',\n visibility: noData || mergedColumnWidth ? null : 'hidden'\n }\n }, (!noData || !maxContentScroll || allFlattenColumnsWithWidth) && /*#__PURE__*/React.createElement(ColGroup, {\n colWidths: mergedColumnWidth ? [].concat(_toConsumableArray(mergedColumnWidth), [combinationScrollBarSize]) : [],\n columCount: columCount + 1,\n columns: flattenColumnsWithScrollbar\n }), children(_objectSpread(_objectSpread({}, props), {}, {\n stickyOffsets: headerStickyOffsets,\n columns: columnsWithScrollbar,\n flattenColumns: flattenColumnsWithScrollbar\n }))));\n});\nFixedHolder.displayName = 'FixedHolder';\nexport default FixedHolder;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\n/**\n * Feature:\n * - fixed not need to set width\n * - support `rowExpandable` to config row expand logic\n * - add `summary` to support `() => ReactNode`\n *\n * Update:\n * - `dataIndex` is `array[]` now\n * - `expandable` wrap all the expand related props\n *\n * Removed:\n * - expandIconAsCell\n * - useFixedHeader\n * - rowRef\n * - columns[number].onCellClick\n * - onRowClick\n * - onRowDoubleClick\n * - onRowMouseEnter\n * - onRowMouseLeave\n * - getBodyWrapper\n * - bodyStyle\n *\n * Deprecated:\n * - All expanded props, move into expandable\n */\nimport * as React from 'react';\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport { isStyleSupport } from \"rc-util/es/Dom/styleChecker\";\nimport classNames from 'classnames';\nimport shallowEqual from 'shallowequal';\nimport warning from \"rc-util/es/warning\";\nimport ResizeObserver from 'rc-resize-observer';\nimport { getTargetScrollBarSize } from \"rc-util/es/getScrollBarSize\";\nimport ColumnGroup from './sugar/ColumnGroup';\nimport Column from './sugar/Column';\nimport Header from './Header/Header';\nimport TableContext from './context/TableContext';\nimport BodyContext from './context/BodyContext';\nimport Body from './Body';\nimport useColumns from './hooks/useColumns';\nimport { useLayoutState, useTimeoutLock } from './hooks/useFrame';\nimport { getPathValue, validateValue, getColumnsKey } from './utils/valueUtil';\nimport ResizeContext from './context/ResizeContext';\nimport useStickyOffsets from './hooks/useStickyOffsets';\nimport ColGroup from './ColGroup';\nimport { getExpandableProps } from './utils/legacyUtil';\nimport Panel from './Panel';\nimport Footer, { FooterComponents } from './Footer';\nimport { findAllChildrenKeys, renderExpandIcon } from './utils/expandUtil';\nimport { getCellFixedInfo } from './utils/fixUtil';\nimport StickyScrollBar from './stickyScrollBar';\nimport useSticky from './hooks/useSticky';\nimport FixedHolder from './FixedHolder';\nimport Summary from './Footer/Summary';\nimport StickyContext from './context/StickyContext';\nimport ExpandedRowContext from './context/ExpandedRowContext';\nimport { EXPAND_COLUMN } from './constant'; // Used for conditions cache\n\nvar EMPTY_DATA = []; // Used for customize scroll\n\nvar EMPTY_SCROLL_TARGET = {};\nexport var INTERNAL_HOOKS = 'rc-table-internal-hook';\nvar MemoTableContent = /*#__PURE__*/React.memo(function (_ref) {\n var children = _ref.children;\n return children;\n}, function (prev, next) {\n if (!shallowEqual(prev.props, next.props)) {\n return false;\n } // No additional render when pinged status change.\n // This is not a bug.\n\n\n return prev.pingLeft !== next.pingLeft || prev.pingRight !== next.pingRight;\n});\n\nfunction Table(props) {\n var _classNames;\n\n var prefixCls = props.prefixCls,\n className = props.className,\n rowClassName = props.rowClassName,\n style = props.style,\n data = props.data,\n rowKey = props.rowKey,\n scroll = props.scroll,\n tableLayout = props.tableLayout,\n direction = props.direction,\n title = props.title,\n footer = props.footer,\n summary = props.summary,\n id = props.id,\n showHeader = props.showHeader,\n components = props.components,\n emptyText = props.emptyText,\n onRow = props.onRow,\n onHeaderRow = props.onHeaderRow,\n internalHooks = props.internalHooks,\n transformColumns = props.transformColumns,\n internalRefs = props.internalRefs,\n sticky = props.sticky;\n var mergedData = data || EMPTY_DATA;\n var hasData = !!mergedData.length; // ===================== Warning ======================\n\n if (process.env.NODE_ENV !== 'production') {\n ['onRowClick', 'onRowDoubleClick', 'onRowContextMenu', 'onRowMouseEnter', 'onRowMouseLeave'].forEach(function (name) {\n warning(props[name] === undefined, \"`\".concat(name, \"` is removed, please use `onRow` instead.\"));\n });\n warning(!('getBodyWrapper' in props), '`getBodyWrapper` is deprecated, please use custom `components` instead.');\n } // ==================== Customize =====================\n\n\n var getComponent = React.useCallback(function (path, defaultComponent) {\n return getPathValue(components || {}, path) || defaultComponent;\n }, [components]);\n var getRowKey = React.useMemo(function () {\n if (typeof rowKey === 'function') {\n return rowKey;\n }\n\n return function (record) {\n var key = record && record[rowKey];\n\n if (process.env.NODE_ENV !== 'production') {\n warning(key !== undefined, 'Each record in table should have a unique `key` prop, or set `rowKey` to an unique primary key.');\n }\n\n return key;\n };\n }, [rowKey]); // ====================== Expand ======================\n\n var expandableConfig = getExpandableProps(props);\n var expandIcon = expandableConfig.expandIcon,\n expandedRowKeys = expandableConfig.expandedRowKeys,\n defaultExpandedRowKeys = expandableConfig.defaultExpandedRowKeys,\n defaultExpandAllRows = expandableConfig.defaultExpandAllRows,\n expandedRowRender = expandableConfig.expandedRowRender,\n columnTitle = expandableConfig.columnTitle,\n onExpand = expandableConfig.onExpand,\n onExpandedRowsChange = expandableConfig.onExpandedRowsChange,\n expandRowByClick = expandableConfig.expandRowByClick,\n rowExpandable = expandableConfig.rowExpandable,\n expandIconColumnIndex = expandableConfig.expandIconColumnIndex,\n expandedRowClassName = expandableConfig.expandedRowClassName,\n childrenColumnName = expandableConfig.childrenColumnName,\n indentSize = expandableConfig.indentSize;\n var mergedExpandIcon = expandIcon || renderExpandIcon;\n var mergedChildrenColumnName = childrenColumnName || 'children';\n var expandableType = React.useMemo(function () {\n if (expandedRowRender) {\n return 'row';\n }\n /* eslint-disable no-underscore-dangle */\n\n /**\n * Fix https://github.com/ant-design/ant-design/issues/21154\n * This is a workaround to not to break current behavior.\n * We can remove follow code after final release.\n *\n * To other developer:\n * Do not use `__PARENT_RENDER_ICON__` in prod since we will remove this when refactor\n */\n\n\n if (props.expandable && internalHooks === INTERNAL_HOOKS && props.expandable.__PARENT_RENDER_ICON__ || mergedData.some(function (record) {\n return record && _typeof(record) === 'object' && record[mergedChildrenColumnName];\n })) {\n return 'nest';\n }\n /* eslint-enable */\n\n\n return false;\n }, [!!expandedRowRender, mergedData]);\n\n var _React$useState = React.useState(function () {\n if (defaultExpandedRowKeys) {\n return defaultExpandedRowKeys;\n }\n\n if (defaultExpandAllRows) {\n return findAllChildrenKeys(mergedData, getRowKey, mergedChildrenColumnName);\n }\n\n return [];\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerExpandedKeys = _React$useState2[0],\n setInnerExpandedKeys = _React$useState2[1];\n\n var mergedExpandedKeys = React.useMemo(function () {\n return new Set(expandedRowKeys || innerExpandedKeys || []);\n }, [expandedRowKeys, innerExpandedKeys]);\n var onTriggerExpand = React.useCallback(function (record) {\n var key = getRowKey(record, mergedData.indexOf(record));\n var newExpandedKeys;\n var hasKey = mergedExpandedKeys.has(key);\n\n if (hasKey) {\n mergedExpandedKeys.delete(key);\n newExpandedKeys = _toConsumableArray(mergedExpandedKeys);\n } else {\n newExpandedKeys = [].concat(_toConsumableArray(mergedExpandedKeys), [key]);\n }\n\n setInnerExpandedKeys(newExpandedKeys);\n\n if (onExpand) {\n onExpand(!hasKey, record);\n }\n\n if (onExpandedRowsChange) {\n onExpandedRowsChange(newExpandedKeys);\n }\n }, [getRowKey, mergedExpandedKeys, mergedData, onExpand, onExpandedRowsChange]); // Warning if use `expandedRowRender` and nest children in the same time\n\n if (process.env.NODE_ENV !== 'production' && expandedRowRender && mergedData.some(function (record) {\n return Array.isArray(record === null || record === void 0 ? void 0 : record[mergedChildrenColumnName]);\n })) {\n warning(false, '`expandedRowRender` should not use with nested Table');\n } // ====================== Column ======================\n\n\n var _React$useState3 = React.useState(0),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n componentWidth = _React$useState4[0],\n setComponentWidth = _React$useState4[1];\n\n var _useColumns = useColumns(_objectSpread(_objectSpread(_objectSpread({}, props), expandableConfig), {}, {\n expandable: !!expandedRowRender,\n columnTitle: columnTitle,\n expandedKeys: mergedExpandedKeys,\n getRowKey: getRowKey,\n // https://github.com/ant-design/ant-design/issues/23894\n onTriggerExpand: onTriggerExpand,\n expandIcon: mergedExpandIcon,\n expandIconColumnIndex: expandIconColumnIndex,\n direction: direction\n }), internalHooks === INTERNAL_HOOKS ? transformColumns : null),\n _useColumns2 = _slicedToArray(_useColumns, 2),\n columns = _useColumns2[0],\n flattenColumns = _useColumns2[1];\n\n var columnContext = React.useMemo(function () {\n return {\n columns: columns,\n flattenColumns: flattenColumns\n };\n }, [columns, flattenColumns]); // ====================== Scroll ======================\n\n var fullTableRef = React.useRef();\n var scrollHeaderRef = React.useRef();\n var scrollBodyRef = React.useRef();\n var scrollBodyContainerRef = React.useRef();\n var scrollSummaryRef = React.useRef();\n\n var _React$useState5 = React.useState(false),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n pingedLeft = _React$useState6[0],\n setPingedLeft = _React$useState6[1];\n\n var _React$useState7 = React.useState(false),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n pingedRight = _React$useState8[0],\n setPingedRight = _React$useState8[1];\n\n var _useLayoutState = useLayoutState(new Map()),\n _useLayoutState2 = _slicedToArray(_useLayoutState, 2),\n colsWidths = _useLayoutState2[0],\n updateColsWidths = _useLayoutState2[1]; // Convert map to number width\n\n\n var colsKeys = getColumnsKey(flattenColumns);\n var pureColWidths = colsKeys.map(function (columnKey) {\n return colsWidths.get(columnKey);\n });\n var colWidths = React.useMemo(function () {\n return pureColWidths;\n }, [pureColWidths.join('_')]);\n var stickyOffsets = useStickyOffsets(colWidths, flattenColumns.length, direction);\n var fixHeader = scroll && validateValue(scroll.y);\n var horizonScroll = scroll && validateValue(scroll.x) || Boolean(expandableConfig.fixed);\n var fixColumn = horizonScroll && flattenColumns.some(function (_ref2) {\n var fixed = _ref2.fixed;\n return fixed;\n }); // Sticky\n\n var stickyRef = React.useRef();\n\n var _useSticky = useSticky(sticky, prefixCls),\n isSticky = _useSticky.isSticky,\n offsetHeader = _useSticky.offsetHeader,\n offsetSummary = _useSticky.offsetSummary,\n offsetScroll = _useSticky.offsetScroll,\n stickyClassName = _useSticky.stickyClassName,\n container = _useSticky.container; // Footer (Fix footer must fixed header)\n\n\n var summaryNode = summary === null || summary === void 0 ? void 0 : summary(mergedData);\n var fixFooter = (fixHeader || isSticky) && /*#__PURE__*/React.isValidElement(summaryNode) && summaryNode.type === Summary && summaryNode.props.fixed; // Scroll\n\n var scrollXStyle;\n var scrollYStyle;\n var scrollTableStyle;\n\n if (fixHeader) {\n scrollYStyle = {\n overflowY: 'scroll',\n maxHeight: scroll.y\n };\n }\n\n if (horizonScroll) {\n scrollXStyle = {\n overflowX: 'auto'\n }; // When no vertical scrollbar, should hide it\n // https://github.com/ant-design/ant-design/pull/20705\n // https://github.com/ant-design/ant-design/issues/21879\n\n if (!fixHeader) {\n scrollYStyle = {\n overflowY: 'hidden'\n };\n }\n\n scrollTableStyle = {\n width: (scroll === null || scroll === void 0 ? void 0 : scroll.x) === true ? 'auto' : scroll === null || scroll === void 0 ? void 0 : scroll.x,\n minWidth: '100%'\n };\n }\n\n var onColumnResize = React.useCallback(function (columnKey, width) {\n if (isVisible(fullTableRef.current)) {\n updateColsWidths(function (widths) {\n if (widths.get(columnKey) !== width) {\n var newWidths = new Map(widths);\n newWidths.set(columnKey, width);\n return newWidths;\n }\n\n return widths;\n });\n }\n }, []);\n\n var _useTimeoutLock = useTimeoutLock(null),\n _useTimeoutLock2 = _slicedToArray(_useTimeoutLock, 2),\n setScrollTarget = _useTimeoutLock2[0],\n getScrollTarget = _useTimeoutLock2[1];\n\n function forceScroll(scrollLeft, target) {\n if (!target) {\n return;\n }\n\n if (typeof target === 'function') {\n target(scrollLeft);\n } else if (target.scrollLeft !== scrollLeft) {\n // eslint-disable-next-line no-param-reassign\n target.scrollLeft = scrollLeft;\n }\n }\n\n var onScroll = function onScroll(_ref3) {\n var currentTarget = _ref3.currentTarget,\n scrollLeft = _ref3.scrollLeft;\n var isRTL = direction === 'rtl';\n var mergedScrollLeft = typeof scrollLeft === 'number' ? scrollLeft : currentTarget.scrollLeft;\n var compareTarget = currentTarget || EMPTY_SCROLL_TARGET;\n\n if (!getScrollTarget() || getScrollTarget() === compareTarget) {\n var _stickyRef$current;\n\n setScrollTarget(compareTarget);\n forceScroll(mergedScrollLeft, scrollHeaderRef.current);\n forceScroll(mergedScrollLeft, scrollBodyRef.current);\n forceScroll(mergedScrollLeft, scrollSummaryRef.current);\n forceScroll(mergedScrollLeft, (_stickyRef$current = stickyRef.current) === null || _stickyRef$current === void 0 ? void 0 : _stickyRef$current.setScrollLeft);\n }\n\n if (currentTarget) {\n var scrollWidth = currentTarget.scrollWidth,\n clientWidth = currentTarget.clientWidth; // There is no space to scroll\n\n if (scrollWidth === clientWidth) {\n setPingedLeft(false);\n setPingedRight(false);\n return;\n }\n\n if (isRTL) {\n setPingedLeft(-mergedScrollLeft < scrollWidth - clientWidth);\n setPingedRight(-mergedScrollLeft > 0);\n } else {\n setPingedLeft(mergedScrollLeft > 0);\n setPingedRight(mergedScrollLeft < scrollWidth - clientWidth);\n }\n }\n };\n\n var triggerOnScroll = function triggerOnScroll() {\n if (horizonScroll && scrollBodyRef.current) {\n onScroll({\n currentTarget: scrollBodyRef.current\n });\n } else {\n setPingedLeft(false);\n setPingedRight(false);\n }\n };\n\n var onFullTableResize = function onFullTableResize(_ref4) {\n var width = _ref4.width;\n\n if (width !== componentWidth) {\n triggerOnScroll();\n setComponentWidth(fullTableRef.current ? fullTableRef.current.offsetWidth : width);\n }\n }; // Sync scroll bar when init or `horizonScroll`, `data` and `columns.length` changed\n\n\n var mounted = React.useRef(false);\n React.useEffect(function () {\n // onFullTableResize will be trigger once when ResizeObserver is mounted\n // This will reduce one duplicated triggerOnScroll time\n if (mounted.current) {\n triggerOnScroll();\n }\n }, [horizonScroll, data, columns.length]);\n React.useEffect(function () {\n mounted.current = true;\n }, []); // ===================== Effects ======================\n\n var _React$useState9 = React.useState(0),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n scrollbarSize = _React$useState10[0],\n setScrollbarSize = _React$useState10[1];\n\n var _React$useState11 = React.useState(true),\n _React$useState12 = _slicedToArray(_React$useState11, 2),\n supportSticky = _React$useState12[0],\n setSupportSticky = _React$useState12[1]; // Only IE not support, we mark as support first\n\n\n React.useEffect(function () {\n if (scrollBodyRef.current instanceof Element) {\n setScrollbarSize(getTargetScrollBarSize(scrollBodyRef.current).width);\n } else {\n setScrollbarSize(getTargetScrollBarSize(scrollBodyContainerRef.current).width);\n }\n\n setSupportSticky(isStyleSupport('position', 'sticky'));\n }, []); // ================== INTERNAL HOOKS ==================\n\n React.useEffect(function () {\n if (internalHooks === INTERNAL_HOOKS && internalRefs) {\n internalRefs.body.current = scrollBodyRef.current;\n }\n }); // ====================== Render ======================\n\n var TableComponent = getComponent(['table'], 'table'); // Table layout\n\n var mergedTableLayout = React.useMemo(function () {\n if (tableLayout) {\n return tableLayout;\n } // https://github.com/ant-design/ant-design/issues/25227\n // When scroll.x is max-content, no need to fix table layout\n // it's width should stretch out to fit content\n\n\n if (fixColumn) {\n return (scroll === null || scroll === void 0 ? void 0 : scroll.x) === 'max-content' ? 'auto' : 'fixed';\n }\n\n if (fixHeader || isSticky || flattenColumns.some(function (_ref5) {\n var ellipsis = _ref5.ellipsis;\n return ellipsis;\n })) {\n return 'fixed';\n }\n\n return 'auto';\n }, [fixHeader, fixColumn, flattenColumns, tableLayout, isSticky]);\n var groupTableNode; // Header props\n\n var headerProps = {\n colWidths: colWidths,\n columCount: flattenColumns.length,\n stickyOffsets: stickyOffsets,\n onHeaderRow: onHeaderRow,\n fixHeader: fixHeader,\n scroll: scroll\n }; // Empty\n\n var emptyNode = React.useMemo(function () {\n if (hasData) {\n return null;\n }\n\n if (typeof emptyText === 'function') {\n return emptyText();\n }\n\n return emptyText;\n }, [hasData, emptyText]); // Body\n\n var bodyTable = /*#__PURE__*/React.createElement(Body, {\n data: mergedData,\n measureColumnWidth: fixHeader || horizonScroll || isSticky,\n expandedKeys: mergedExpandedKeys,\n rowExpandable: rowExpandable,\n getRowKey: getRowKey,\n onRow: onRow,\n emptyNode: emptyNode,\n childrenColumnName: mergedChildrenColumnName\n });\n var bodyColGroup = /*#__PURE__*/React.createElement(ColGroup, {\n colWidths: flattenColumns.map(function (_ref6) {\n var width = _ref6.width;\n return width;\n }),\n columns: flattenColumns\n });\n var customizeScrollBody = getComponent(['body']);\n\n if (process.env.NODE_ENV !== 'production' && typeof customizeScrollBody === 'function' && hasData && !fixHeader) {\n warning(false, '`components.body` with render props is only work on `scroll.y`.');\n }\n\n if (fixHeader || isSticky) {\n // >>>>>> Fixed Header\n var bodyContent;\n\n if (typeof customizeScrollBody === 'function') {\n bodyContent = customizeScrollBody(mergedData, {\n scrollbarSize: scrollbarSize,\n ref: scrollBodyRef,\n onScroll: onScroll\n });\n headerProps.colWidths = flattenColumns.map(function (_ref7, index) {\n var width = _ref7.width;\n var colWidth = index === columns.length - 1 ? width - scrollbarSize : width;\n\n if (typeof colWidth === 'number' && !Number.isNaN(colWidth)) {\n return colWidth;\n }\n\n warning(false, 'When use `components.body` with render props. Each column should have a fixed `width` value.');\n return 0;\n });\n } else {\n bodyContent = /*#__PURE__*/React.createElement(\"div\", {\n style: _objectSpread(_objectSpread({}, scrollXStyle), scrollYStyle),\n onScroll: onScroll,\n ref: scrollBodyRef,\n className: classNames(\"\".concat(prefixCls, \"-body\"))\n }, /*#__PURE__*/React.createElement(TableComponent, {\n style: _objectSpread(_objectSpread({}, scrollTableStyle), {}, {\n tableLayout: mergedTableLayout\n })\n }, bodyColGroup, bodyTable, !fixFooter && summaryNode && /*#__PURE__*/React.createElement(Footer, {\n stickyOffsets: stickyOffsets,\n flattenColumns: flattenColumns\n }, summaryNode)));\n } // Fixed holder share the props\n\n\n var fixedHolderProps = _objectSpread(_objectSpread(_objectSpread({\n noData: !mergedData.length,\n maxContentScroll: horizonScroll && scroll.x === 'max-content'\n }, headerProps), columnContext), {}, {\n direction: direction,\n stickyClassName: stickyClassName,\n onScroll: onScroll\n });\n\n groupTableNode = /*#__PURE__*/React.createElement(React.Fragment, null, showHeader !== false && /*#__PURE__*/React.createElement(FixedHolder, _extends({}, fixedHolderProps, {\n stickyTopOffset: offsetHeader,\n className: \"\".concat(prefixCls, \"-header\"),\n ref: scrollHeaderRef\n }), function (fixedHolderPassProps) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Header, fixedHolderPassProps), fixFooter === 'top' && /*#__PURE__*/React.createElement(Footer, fixedHolderPassProps, summaryNode));\n }), bodyContent, fixFooter && fixFooter !== 'top' && /*#__PURE__*/React.createElement(FixedHolder, _extends({}, fixedHolderProps, {\n stickyBottomOffset: offsetSummary,\n className: \"\".concat(prefixCls, \"-summary\"),\n ref: scrollSummaryRef\n }), function (fixedHolderPassProps) {\n return /*#__PURE__*/React.createElement(Footer, fixedHolderPassProps, summaryNode);\n }), isSticky && /*#__PURE__*/React.createElement(StickyScrollBar, {\n ref: stickyRef,\n offsetScroll: offsetScroll,\n scrollBodyRef: scrollBodyRef,\n onScroll: onScroll,\n container: container\n }));\n } else {\n // >>>>>> Unique table\n groupTableNode = /*#__PURE__*/React.createElement(\"div\", {\n style: _objectSpread(_objectSpread({}, scrollXStyle), scrollYStyle),\n className: classNames(\"\".concat(prefixCls, \"-content\")),\n onScroll: onScroll,\n ref: scrollBodyRef\n }, /*#__PURE__*/React.createElement(TableComponent, {\n style: _objectSpread(_objectSpread({}, scrollTableStyle), {}, {\n tableLayout: mergedTableLayout\n })\n }, bodyColGroup, showHeader !== false && /*#__PURE__*/React.createElement(Header, _extends({}, headerProps, columnContext)), bodyTable, summaryNode && /*#__PURE__*/React.createElement(Footer, {\n stickyOffsets: stickyOffsets,\n flattenColumns: flattenColumns\n }, summaryNode)));\n }\n\n var ariaProps = pickAttrs(props, {\n aria: true,\n data: true\n });\n var fullTable = /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classNames(prefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-ping-left\"), pingedLeft), _defineProperty(_classNames, \"\".concat(prefixCls, \"-ping-right\"), pingedRight), _defineProperty(_classNames, \"\".concat(prefixCls, \"-layout-fixed\"), tableLayout === 'fixed'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-fixed-header\"), fixHeader), _defineProperty(_classNames, \"\".concat(prefixCls, \"-fixed-column\"), fixColumn), _defineProperty(_classNames, \"\".concat(prefixCls, \"-scroll-horizontal\"), horizonScroll), _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-fix-left\"), flattenColumns[0] && flattenColumns[0].fixed), _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-fix-right\"), flattenColumns[flattenColumns.length - 1] && flattenColumns[flattenColumns.length - 1].fixed === 'right'), _classNames)),\n style: style,\n id: id,\n ref: fullTableRef\n }, ariaProps), /*#__PURE__*/React.createElement(MemoTableContent, {\n pingLeft: pingedLeft,\n pingRight: pingedRight,\n props: _objectSpread(_objectSpread({}, props), {}, {\n stickyOffsets: stickyOffsets,\n mergedExpandedKeys: mergedExpandedKeys\n })\n }, title && /*#__PURE__*/React.createElement(Panel, {\n className: \"\".concat(prefixCls, \"-title\")\n }, title(mergedData)), /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollBodyContainerRef,\n className: \"\".concat(prefixCls, \"-container\")\n }, groupTableNode), footer && /*#__PURE__*/React.createElement(Panel, {\n className: \"\".concat(prefixCls, \"-footer\")\n }, footer(mergedData))));\n\n if (horizonScroll) {\n fullTable = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onFullTableResize\n }, fullTable);\n }\n\n var TableContextValue = React.useMemo(function () {\n return {\n prefixCls: prefixCls,\n getComponent: getComponent,\n scrollbarSize: scrollbarSize,\n direction: direction,\n fixedInfoList: flattenColumns.map(function (_, colIndex) {\n return getCellFixedInfo(colIndex, colIndex, flattenColumns, stickyOffsets, direction);\n }),\n isSticky: isSticky\n };\n }, [prefixCls, getComponent, scrollbarSize, direction, flattenColumns, stickyOffsets, isSticky]);\n var BodyContextValue = React.useMemo(function () {\n return _objectSpread(_objectSpread({}, columnContext), {}, {\n tableLayout: mergedTableLayout,\n rowClassName: rowClassName,\n expandedRowClassName: expandedRowClassName,\n expandIcon: mergedExpandIcon,\n expandableType: expandableType,\n expandRowByClick: expandRowByClick,\n expandedRowRender: expandedRowRender,\n onTriggerExpand: onTriggerExpand,\n expandIconColumnIndex: expandIconColumnIndex,\n indentSize: indentSize,\n allColumnsFixedLeft: columnContext.flattenColumns.every(function (col) {\n return col.fixed === 'left';\n })\n });\n }, [columnContext, mergedTableLayout, rowClassName, expandedRowClassName, mergedExpandIcon, expandableType, expandRowByClick, expandedRowRender, onTriggerExpand, expandIconColumnIndex, indentSize]);\n var ExpandedRowContextValue = React.useMemo(function () {\n return {\n componentWidth: componentWidth,\n fixHeader: fixHeader,\n fixColumn: fixColumn,\n horizonScroll: horizonScroll\n };\n }, [componentWidth, fixHeader, fixColumn, horizonScroll]);\n var ResizeContextValue = React.useMemo(function () {\n return {\n onColumnResize: onColumnResize\n };\n }, [onColumnResize]);\n return /*#__PURE__*/React.createElement(StickyContext.Provider, {\n value: supportSticky\n }, /*#__PURE__*/React.createElement(TableContext.Provider, {\n value: TableContextValue\n }, /*#__PURE__*/React.createElement(BodyContext.Provider, {\n value: BodyContextValue\n }, /*#__PURE__*/React.createElement(ExpandedRowContext.Provider, {\n value: ExpandedRowContextValue\n }, /*#__PURE__*/React.createElement(ResizeContext.Provider, {\n value: ResizeContextValue\n }, fullTable)))));\n}\n\nTable.EXPAND_COLUMN = EXPAND_COLUMN;\nTable.Column = Column;\nTable.ColumnGroup = ColumnGroup;\nTable.Summary = FooterComponents;\nTable.defaultProps = {\n rowKey: 'key',\n prefixCls: 'rc-table',\n emptyText: function emptyText() {\n return 'No Data';\n }\n};\nexport default Table;","import Table from './Table';\nimport { FooterComponents as Summary } from './Footer';\nimport Column from './sugar/Column';\nimport ColumnGroup from './sugar/ColumnGroup';\nimport { INTERNAL_COL_DEFINE } from './utils/legacyUtil';\nexport { Summary, Column, ColumnGroup, INTERNAL_COL_DEFINE };\nexport default Table;","// This icon file is generated automatically.\nvar DoubleLeftOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z\" } }] }, \"name\": \"double-left\", \"theme\": \"outlined\" };\nexport default DoubleLeftOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport DoubleLeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleLeftOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar DoubleLeftOutlined = function DoubleLeftOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: DoubleLeftOutlinedSvg\n }));\n};\nDoubleLeftOutlined.displayName = 'DoubleLeftOutlined';\nexport default /*#__PURE__*/React.forwardRef(DoubleLeftOutlined);","// This icon file is generated automatically.\nvar DoubleRightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\" } }] }, \"name\": \"double-right\", \"theme\": \"outlined\" };\nexport default DoubleRightOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport DoubleRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleRightOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar DoubleRightOutlined = function DoubleRightOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: DoubleRightOutlinedSvg\n }));\n};\nDoubleRightOutlined.displayName = 'DoubleRightOutlined';\nexport default /*#__PURE__*/React.forwardRef(DoubleRightOutlined);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n/* eslint react/prop-types: 0 */\nimport React from 'react';\nimport classNames from 'classnames';\nvar Pager = function Pager(props) {\n var _classNames;\n var prefixCls = \"\".concat(props.rootPrefixCls, \"-item\");\n var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(props.page), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), props.active), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), !props.page), _defineProperty(_classNames, props.className, !!props.className), _classNames));\n var handleClick = function handleClick() {\n props.onClick(props.page);\n };\n var handleKeyPress = function handleKeyPress(e) {\n props.onKeyPress(e, props.onClick, props.page);\n };\n return /*#__PURE__*/React.createElement(\"li\", {\n title: props.showTitle ? props.page : null,\n className: cls,\n onClick: handleClick,\n onKeyPress: handleKeyPress,\n tabIndex: \"0\"\n }, props.itemRender(props.page, 'page', /*#__PURE__*/React.createElement(\"a\", {\n rel: \"nofollow\"\n }, props.page)));\n};\nexport default Pager;","export default {\n ZERO: 48,\n NINE: 57,\n NUMPAD_ZERO: 96,\n NUMPAD_NINE: 105,\n BACKSPACE: 8,\n DELETE: 46,\n ENTER: 13,\n ARROW_UP: 38,\n ARROW_DOWN: 40\n};","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n/* eslint react/prop-types: 0 */\nimport React from 'react';\nimport KEYCODE from './KeyCode';\nvar Options = /*#__PURE__*/function (_React$Component) {\n _inherits(Options, _React$Component);\n var _super = _createSuper(Options);\n function Options() {\n var _this;\n _classCallCheck(this, Options);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n goInputText: ''\n };\n _this.buildOptionText = function (value) {\n return \"\".concat(value, \" \").concat(_this.props.locale.items_per_page);\n };\n _this.changeSize = function (value) {\n _this.props.changeSize(Number(value));\n };\n _this.handleChange = function (e) {\n _this.setState({\n goInputText: e.target.value\n });\n };\n _this.handleBlur = function (e) {\n var _this$props = _this.props,\n goButton = _this$props.goButton,\n quickGo = _this$props.quickGo,\n rootPrefixCls = _this$props.rootPrefixCls;\n var goInputText = _this.state.goInputText;\n if (goButton || goInputText === '') {\n return;\n }\n _this.setState({\n goInputText: ''\n });\n if (e.relatedTarget && (e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item-link\")) >= 0 || e.relatedTarget.className.indexOf(\"\".concat(rootPrefixCls, \"-item\")) >= 0)) {\n return;\n }\n quickGo(_this.getValidValue());\n };\n _this.go = function (e) {\n var goInputText = _this.state.goInputText;\n if (goInputText === '') {\n return;\n }\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n _this.setState({\n goInputText: ''\n });\n _this.props.quickGo(_this.getValidValue());\n }\n };\n return _this;\n }\n _createClass(Options, [{\n key: \"getValidValue\",\n value: function getValidValue() {\n var goInputText = this.state.goInputText;\n // eslint-disable-next-line no-restricted-globals\n return !goInputText || isNaN(goInputText) ? undefined : Number(goInputText);\n }\n }, {\n key: \"getPageSizeOptions\",\n value: function getPageSizeOptions() {\n var _this$props2 = this.props,\n pageSize = _this$props2.pageSize,\n pageSizeOptions = _this$props2.pageSizeOptions;\n if (pageSizeOptions.some(function (option) {\n return option.toString() === pageSize.toString();\n })) {\n return pageSizeOptions;\n }\n return pageSizeOptions.concat([pageSize.toString()]).sort(function (a, b) {\n // eslint-disable-next-line no-restricted-globals\n var numberA = isNaN(Number(a)) ? 0 : Number(a);\n // eslint-disable-next-line no-restricted-globals\n var numberB = isNaN(Number(b)) ? 0 : Number(b);\n return numberA - numberB;\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props3 = this.props,\n pageSize = _this$props3.pageSize,\n locale = _this$props3.locale,\n rootPrefixCls = _this$props3.rootPrefixCls,\n changeSize = _this$props3.changeSize,\n quickGo = _this$props3.quickGo,\n goButton = _this$props3.goButton,\n selectComponentClass = _this$props3.selectComponentClass,\n buildOptionText = _this$props3.buildOptionText,\n selectPrefixCls = _this$props3.selectPrefixCls,\n disabled = _this$props3.disabled;\n var goInputText = this.state.goInputText;\n var prefixCls = \"\".concat(rootPrefixCls, \"-options\");\n var Select = selectComponentClass;\n var changeSelect = null;\n var goInput = null;\n var gotoButton = null;\n if (!changeSize && !quickGo) {\n return null;\n }\n var pageSizeOptions = this.getPageSizeOptions();\n if (changeSize && Select) {\n var options = pageSizeOptions.map(function (opt, i) {\n return /*#__PURE__*/React.createElement(Select.Option, {\n key: i,\n value: opt.toString()\n }, (buildOptionText || _this2.buildOptionText)(opt));\n });\n changeSelect = /*#__PURE__*/React.createElement(Select, {\n disabled: disabled,\n prefixCls: selectPrefixCls,\n showSearch: false,\n className: \"\".concat(prefixCls, \"-size-changer\"),\n optionLabelProp: \"children\",\n dropdownMatchSelectWidth: false,\n value: (pageSize || pageSizeOptions[0]).toString(),\n onChange: this.changeSize,\n getPopupContainer: function getPopupContainer(triggerNode) {\n return triggerNode.parentNode;\n },\n \"aria-label\": locale.page_size,\n defaultOpen: false\n }, options);\n }\n if (quickGo) {\n if (goButton) {\n gotoButton = typeof goButton === 'boolean' ? /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: this.go,\n onKeyUp: this.go,\n disabled: disabled,\n className: \"\".concat(prefixCls, \"-quick-jumper-button\")\n }, locale.jump_to_confirm) : /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.go,\n onKeyUp: this.go\n }, goButton);\n }\n goInput = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-quick-jumper\")\n }, locale.jump_to, /*#__PURE__*/React.createElement(\"input\", {\n disabled: disabled,\n type: \"text\",\n value: goInputText,\n onChange: this.handleChange,\n onKeyUp: this.go,\n onBlur: this.handleBlur,\n \"aria-label\": locale.page\n }), locale.page, gotoButton);\n }\n return /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls)\n }, changeSelect, goInput);\n }\n }]);\n return Options;\n}(React.Component);\nOptions.defaultProps = {\n pageSizeOptions: ['10', '20', '50', '100']\n};\nexport default Options;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n/* eslint react/prop-types: 0 */\nimport React, { cloneElement, isValidElement } from 'react';\nimport classNames from 'classnames';\nimport Pager from './Pager';\nimport Options from './Options';\nimport KEYCODE from './KeyCode';\nimport LOCALE from './locale/zh_CN';\nfunction noop() {}\nfunction isInteger(v) {\n var value = Number(v);\n return (\n // eslint-disable-next-line no-restricted-globals\n typeof value === 'number' && !isNaN(value) && isFinite(value) && Math.floor(value) === value\n );\n}\nfunction defaultItemRender(page, type, element) {\n return element;\n}\nfunction calculatePage(p, state, props) {\n var pageSize = typeof p === 'undefined' ? state.pageSize : p;\n return Math.floor((props.total - 1) / pageSize) + 1;\n}\nvar Pagination = /*#__PURE__*/function (_React$Component) {\n _inherits(Pagination, _React$Component);\n var _super = _createSuper(Pagination);\n function Pagination(props) {\n var _this;\n _classCallCheck(this, Pagination);\n _this = _super.call(this, props);\n _this.getJumpPrevPage = function () {\n return Math.max(1, _this.state.current - (_this.props.showLessItems ? 3 : 5));\n };\n _this.getJumpNextPage = function () {\n return Math.min(calculatePage(undefined, _this.state, _this.props), _this.state.current + (_this.props.showLessItems ? 3 : 5));\n };\n _this.getItemIcon = function (icon, label) {\n var prefixCls = _this.props.prefixCls;\n var iconNode = icon || /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": label,\n className: \"\".concat(prefixCls, \"-item-link\")\n });\n if (typeof icon === 'function') {\n iconNode = /*#__PURE__*/React.createElement(icon, _objectSpread({}, _this.props));\n }\n return iconNode;\n };\n _this.savePaginationNode = function (node) {\n _this.paginationNode = node;\n };\n _this.isValid = function (page) {\n var total = _this.props.total;\n return isInteger(page) && page !== _this.state.current && isInteger(total) && total > 0;\n };\n _this.shouldDisplayQuickJumper = function () {\n var _this$props = _this.props,\n showQuickJumper = _this$props.showQuickJumper,\n total = _this$props.total;\n var pageSize = _this.state.pageSize;\n if (total <= pageSize) {\n return false;\n }\n return showQuickJumper;\n };\n _this.handleKeyDown = function (e) {\n if (e.keyCode === KEYCODE.ARROW_UP || e.keyCode === KEYCODE.ARROW_DOWN) {\n e.preventDefault();\n }\n };\n _this.handleKeyUp = function (e) {\n var value = _this.getValidValue(e);\n var currentInputValue = _this.state.currentInputValue;\n if (value !== currentInputValue) {\n _this.setState({\n currentInputValue: value\n });\n }\n if (e.keyCode === KEYCODE.ENTER) {\n _this.handleChange(value);\n } else if (e.keyCode === KEYCODE.ARROW_UP) {\n _this.handleChange(value - 1);\n } else if (e.keyCode === KEYCODE.ARROW_DOWN) {\n _this.handleChange(value + 1);\n }\n };\n _this.handleBlur = function (e) {\n var value = _this.getValidValue(e);\n _this.handleChange(value);\n };\n _this.changePageSize = function (size) {\n var current = _this.state.current;\n var newCurrent = calculatePage(size, _this.state, _this.props);\n current = current > newCurrent ? newCurrent : current;\n // fix the issue:\n // Once 'total' is 0, 'current' in 'onShowSizeChange' is 0, which is not correct.\n if (newCurrent === 0) {\n // eslint-disable-next-line prefer-destructuring\n current = _this.state.current;\n }\n if (typeof size === 'number') {\n if (!('pageSize' in _this.props)) {\n _this.setState({\n pageSize: size\n });\n }\n if (!('current' in _this.props)) {\n _this.setState({\n current: current,\n currentInputValue: current\n });\n }\n }\n _this.props.onShowSizeChange(current, size);\n if ('onChange' in _this.props && _this.props.onChange) {\n _this.props.onChange(current, size);\n }\n };\n _this.handleChange = function (page) {\n var _this$props2 = _this.props,\n disabled = _this$props2.disabled,\n onChange = _this$props2.onChange;\n var _this$state = _this.state,\n pageSize = _this$state.pageSize,\n current = _this$state.current,\n currentInputValue = _this$state.currentInputValue;\n if (_this.isValid(page) && !disabled) {\n var currentPage = calculatePage(undefined, _this.state, _this.props);\n var newPage = page;\n if (page > currentPage) {\n newPage = currentPage;\n } else if (page < 1) {\n newPage = 1;\n }\n if (!('current' in _this.props)) {\n _this.setState({\n current: newPage\n });\n }\n if (newPage !== currentInputValue) {\n _this.setState({\n currentInputValue: newPage\n });\n }\n onChange(newPage, pageSize);\n return newPage;\n }\n return current;\n };\n _this.prev = function () {\n if (_this.hasPrev()) {\n _this.handleChange(_this.state.current - 1);\n }\n };\n _this.next = function () {\n if (_this.hasNext()) {\n _this.handleChange(_this.state.current + 1);\n }\n };\n _this.jumpPrev = function () {\n _this.handleChange(_this.getJumpPrevPage());\n };\n _this.jumpNext = function () {\n _this.handleChange(_this.getJumpNextPage());\n };\n _this.hasPrev = function () {\n return _this.state.current > 1;\n };\n _this.hasNext = function () {\n return _this.state.current < calculatePage(undefined, _this.state, _this.props);\n };\n _this.runIfEnter = function (event, callback) {\n if (event.key === 'Enter' || event.charCode === 13) {\n for (var _len = arguments.length, restParams = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n restParams[_key - 2] = arguments[_key];\n }\n callback.apply(void 0, restParams);\n }\n };\n _this.runIfEnterPrev = function (e) {\n _this.runIfEnter(e, _this.prev);\n };\n _this.runIfEnterNext = function (e) {\n _this.runIfEnter(e, _this.next);\n };\n _this.runIfEnterJumpPrev = function (e) {\n _this.runIfEnter(e, _this.jumpPrev);\n };\n _this.runIfEnterJumpNext = function (e) {\n _this.runIfEnter(e, _this.jumpNext);\n };\n _this.handleGoTO = function (e) {\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n _this.handleChange(_this.state.currentInputValue);\n }\n };\n var hasOnChange = props.onChange !== noop;\n var hasCurrent = ('current' in props);\n if (hasCurrent && !hasOnChange) {\n // eslint-disable-next-line no-console\n console.warn('Warning: You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.');\n }\n var _current = props.defaultCurrent;\n if ('current' in props) {\n // eslint-disable-next-line prefer-destructuring\n _current = props.current;\n }\n var _pageSize = props.defaultPageSize;\n if ('pageSize' in props) {\n // eslint-disable-next-line prefer-destructuring\n _pageSize = props.pageSize;\n }\n _current = Math.min(_current, calculatePage(_pageSize, undefined, props));\n _this.state = {\n current: _current,\n currentInputValue: _current,\n pageSize: _pageSize\n };\n return _this;\n }\n _createClass(Pagination, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n // When current page change, fix focused style of prev item\n // A hacky solution of https://github.com/ant-design/ant-design/issues/8948\n var prefixCls = this.props.prefixCls;\n if (prevState.current !== this.state.current && this.paginationNode) {\n var lastCurrentNode = this.paginationNode.querySelector(\".\".concat(prefixCls, \"-item-\").concat(prevState.current));\n if (lastCurrentNode && document.activeElement === lastCurrentNode) {\n lastCurrentNode.blur();\n }\n }\n }\n }, {\n key: \"getValidValue\",\n value: function getValidValue(e) {\n var inputValue = e.target.value;\n var allPages = calculatePage(undefined, this.state, this.props);\n var currentInputValue = this.state.currentInputValue;\n var value;\n if (inputValue === '') {\n value = inputValue;\n // eslint-disable-next-line no-restricted-globals\n } else if (isNaN(Number(inputValue))) {\n value = currentInputValue;\n } else if (inputValue >= allPages) {\n value = allPages;\n } else {\n value = Number(inputValue);\n }\n return value;\n }\n }, {\n key: \"getShowSizeChanger\",\n value: function getShowSizeChanger() {\n var _this$props3 = this.props,\n showSizeChanger = _this$props3.showSizeChanger,\n total = _this$props3.total,\n totalBoundaryShowSizeChanger = _this$props3.totalBoundaryShowSizeChanger;\n if (typeof showSizeChanger !== 'undefined') {\n return showSizeChanger;\n }\n return total > totalBoundaryShowSizeChanger;\n }\n }, {\n key: \"renderPrev\",\n value: function renderPrev(prevPage) {\n var _this$props4 = this.props,\n prevIcon = _this$props4.prevIcon,\n itemRender = _this$props4.itemRender;\n var prevButton = itemRender(prevPage, 'prev', this.getItemIcon(prevIcon, 'prev page'));\n var disabled = !this.hasPrev();\n return /*#__PURE__*/isValidElement(prevButton) ? /*#__PURE__*/cloneElement(prevButton, {\n disabled: disabled\n }) : prevButton;\n }\n }, {\n key: \"renderNext\",\n value: function renderNext(nextPage) {\n var _this$props5 = this.props,\n nextIcon = _this$props5.nextIcon,\n itemRender = _this$props5.itemRender;\n var nextButton = itemRender(nextPage, 'next', this.getItemIcon(nextIcon, 'next page'));\n var disabled = !this.hasNext();\n return /*#__PURE__*/isValidElement(nextButton) ? /*#__PURE__*/cloneElement(nextButton, {\n disabled: disabled\n }) : nextButton;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props6 = this.props,\n prefixCls = _this$props6.prefixCls,\n className = _this$props6.className,\n style = _this$props6.style,\n disabled = _this$props6.disabled,\n hideOnSinglePage = _this$props6.hideOnSinglePage,\n total = _this$props6.total,\n locale = _this$props6.locale,\n showQuickJumper = _this$props6.showQuickJumper,\n showLessItems = _this$props6.showLessItems,\n showTitle = _this$props6.showTitle,\n showTotal = _this$props6.showTotal,\n simple = _this$props6.simple,\n itemRender = _this$props6.itemRender,\n showPrevNextJumpers = _this$props6.showPrevNextJumpers,\n jumpPrevIcon = _this$props6.jumpPrevIcon,\n jumpNextIcon = _this$props6.jumpNextIcon,\n selectComponentClass = _this$props6.selectComponentClass,\n selectPrefixCls = _this$props6.selectPrefixCls,\n pageSizeOptions = _this$props6.pageSizeOptions;\n var _this$state2 = this.state,\n current = _this$state2.current,\n pageSize = _this$state2.pageSize,\n currentInputValue = _this$state2.currentInputValue;\n\n // When hideOnSinglePage is true and there is only 1 page, hide the pager\n if (hideOnSinglePage === true && total <= pageSize) {\n return null;\n }\n var allPages = calculatePage(undefined, this.state, this.props);\n var pagerList = [];\n var jumpPrev = null;\n var jumpNext = null;\n var firstPager = null;\n var lastPager = null;\n var gotoButton = null;\n var goButton = showQuickJumper && showQuickJumper.goButton;\n var pageBufferSize = showLessItems ? 1 : 2;\n var prevPage = current - 1 > 0 ? current - 1 : 0;\n var nextPage = current + 1 < allPages ? current + 1 : allPages;\n var dataOrAriaAttributeProps = Object.keys(this.props).reduce(function (prev, key) {\n if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-' || key === 'role') {\n // eslint-disable-next-line no-param-reassign\n prev[key] = _this2.props[key];\n }\n return prev;\n }, {});\n var totalText = showTotal && /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls, \"-total-text\")\n }, showTotal(total, [total === 0 ? 0 : (current - 1) * pageSize + 1, current * pageSize > total ? total : current * pageSize]));\n if (simple) {\n if (goButton) {\n if (typeof goButton === 'boolean') {\n gotoButton = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: this.handleGoTO,\n onKeyUp: this.handleGoTO\n }, locale.jump_to_confirm);\n } else {\n gotoButton = /*#__PURE__*/React.createElement(\"span\", {\n onClick: this.handleGoTO,\n onKeyUp: this.handleGoTO\n }, goButton);\n }\n gotoButton = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(locale.jump_to).concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, gotoButton);\n }\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-simple\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled), className),\n style: style,\n ref: this.savePaginationNode\n }, dataOrAriaAttributeProps), totalText, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: this.prev,\n tabIndex: this.hasPrev() ? 0 : null,\n onKeyPress: this.runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), !this.hasPrev())),\n \"aria-disabled\": !this.hasPrev()\n }, this.renderPrev(prevPage)), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? \"\".concat(current, \"/\").concat(allPages) : null,\n className: \"\".concat(prefixCls, \"-simple-pager\")\n }, /*#__PURE__*/React.createElement(\"input\", {\n type: \"text\",\n value: currentInputValue,\n disabled: disabled,\n onKeyDown: this.handleKeyDown,\n onKeyUp: this.handleKeyUp,\n onChange: this.handleKeyUp,\n onBlur: this.handleBlur,\n size: \"3\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-slash\")\n }, \"/\"), allPages), /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: this.next,\n tabIndex: this.hasPrev() ? 0 : null,\n onKeyPress: this.runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), !this.hasNext())),\n \"aria-disabled\": !this.hasNext()\n }, this.renderNext(nextPage)), gotoButton);\n }\n if (allPages <= 3 + pageBufferSize * 2) {\n var pagerProps = {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n showTitle: showTitle,\n itemRender: itemRender\n };\n if (!allPages) {\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: \"noPager\",\n page: 1,\n className: \"\".concat(prefixCls, \"-item-disabled\")\n })));\n }\n for (var i = 1; i <= allPages; i += 1) {\n var active = current === i;\n pagerList.push( /*#__PURE__*/React.createElement(Pager, _extends({}, pagerProps, {\n key: i,\n page: i,\n active: active\n })));\n }\n } else {\n var prevItemTitle = showLessItems ? locale.prev_3 : locale.prev_5;\n var nextItemTitle = showLessItems ? locale.next_3 : locale.next_5;\n if (showPrevNextJumpers) {\n jumpPrev = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? prevItemTitle : null,\n key: \"prev\",\n onClick: this.jumpPrev,\n tabIndex: \"0\",\n onKeyPress: this.runIfEnterJumpPrev,\n className: classNames(\"\".concat(prefixCls, \"-jump-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-prev-custom-icon\"), !!jumpPrevIcon))\n }, itemRender(this.getJumpPrevPage(), 'jump-prev', this.getItemIcon(jumpPrevIcon, 'prev page')));\n jumpNext = /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? nextItemTitle : null,\n key: \"next\",\n tabIndex: \"0\",\n onClick: this.jumpNext,\n onKeyPress: this.runIfEnterJumpNext,\n className: classNames(\"\".concat(prefixCls, \"-jump-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-jump-next-custom-icon\"), !!jumpNextIcon))\n }, itemRender(this.getJumpNextPage(), 'jump-next', this.getItemIcon(jumpNextIcon, 'next page')));\n }\n lastPager = /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n last: true,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: allPages,\n page: allPages,\n active: false,\n showTitle: showTitle,\n itemRender: itemRender\n });\n firstPager = /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: 1,\n page: 1,\n active: false,\n showTitle: showTitle,\n itemRender: itemRender\n });\n var left = Math.max(1, current - pageBufferSize);\n var right = Math.min(current + pageBufferSize, allPages);\n if (current - 1 <= pageBufferSize) {\n right = 1 + pageBufferSize * 2;\n }\n if (allPages - current <= pageBufferSize) {\n left = allPages - pageBufferSize * 2;\n }\n for (var _i = left; _i <= right; _i += 1) {\n var _active = current === _i;\n pagerList.push( /*#__PURE__*/React.createElement(Pager, {\n locale: locale,\n rootPrefixCls: prefixCls,\n onClick: this.handleChange,\n onKeyPress: this.runIfEnter,\n key: _i,\n page: _i,\n active: _active,\n showTitle: showTitle,\n itemRender: itemRender\n }));\n }\n if (current - 1 >= pageBufferSize * 2 && current !== 1 + 2) {\n pagerList[0] = /*#__PURE__*/cloneElement(pagerList[0], {\n className: \"\".concat(prefixCls, \"-item-after-jump-prev\")\n });\n pagerList.unshift(jumpPrev);\n }\n if (allPages - current >= pageBufferSize * 2 && current !== allPages - 2) {\n pagerList[pagerList.length - 1] = /*#__PURE__*/cloneElement(pagerList[pagerList.length - 1], {\n className: \"\".concat(prefixCls, \"-item-before-jump-next\")\n });\n pagerList.push(jumpNext);\n }\n if (left !== 1) {\n pagerList.unshift(firstPager);\n }\n if (right !== allPages) {\n pagerList.push(lastPager);\n }\n }\n var prevDisabled = !this.hasPrev() || !allPages;\n var nextDisabled = !this.hasNext() || !allPages;\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, className, _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), disabled)),\n style: style,\n ref: this.savePaginationNode\n }, dataOrAriaAttributeProps), totalText, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.prev_page : null,\n onClick: this.prev,\n tabIndex: prevDisabled ? null : 0,\n onKeyPress: this.runIfEnterPrev,\n className: classNames(\"\".concat(prefixCls, \"-prev\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), prevDisabled)),\n \"aria-disabled\": prevDisabled\n }, this.renderPrev(prevPage)), pagerList, /*#__PURE__*/React.createElement(\"li\", {\n title: showTitle ? locale.next_page : null,\n onClick: this.next,\n tabIndex: nextDisabled ? null : 0,\n onKeyPress: this.runIfEnterNext,\n className: classNames(\"\".concat(prefixCls, \"-next\"), _defineProperty({}, \"\".concat(prefixCls, \"-disabled\"), nextDisabled)),\n \"aria-disabled\": nextDisabled\n }, this.renderNext(nextPage)), /*#__PURE__*/React.createElement(Options, {\n disabled: disabled,\n locale: locale,\n rootPrefixCls: prefixCls,\n selectComponentClass: selectComponentClass,\n selectPrefixCls: selectPrefixCls,\n changeSize: this.getShowSizeChanger() ? this.changePageSize : null,\n current: current,\n pageSize: pageSize,\n pageSizeOptions: pageSizeOptions,\n quickGo: this.shouldDisplayQuickJumper() ? this.handleChange : null,\n goButton: goButton\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, prevState) {\n var newState = {};\n if ('current' in props) {\n newState.current = props.current;\n if (props.current !== prevState.current) {\n newState.currentInputValue = newState.current;\n }\n }\n if ('pageSize' in props && props.pageSize !== prevState.pageSize) {\n var current = prevState.current;\n var newCurrent = calculatePage(props.pageSize, prevState, props);\n current = current > newCurrent ? newCurrent : current;\n if (!('current' in props)) {\n newState.current = current;\n newState.currentInputValue = current;\n }\n newState.pageSize = props.pageSize;\n }\n return newState;\n }\n }]);\n return Pagination;\n}(React.Component);\nPagination.defaultProps = {\n defaultCurrent: 1,\n total: 0,\n defaultPageSize: 10,\n onChange: noop,\n className: '',\n selectPrefixCls: 'rc-select',\n prefixCls: 'rc-pagination',\n selectComponentClass: null,\n hideOnSinglePage: false,\n showPrevNextJumpers: true,\n showQuickJumper: false,\n showLessItems: false,\n showTitle: true,\n onShowSizeChange: noop,\n locale: LOCALE,\n style: {},\n itemRender: defaultItemRender,\n totalBoundaryShowSizeChanger: 50\n};\nexport default Pagination;","export default {\n // Options.jsx\n items_per_page: '条/页',\n jump_to: '跳至',\n jump_to_confirm: '确定',\n page: '页',\n // Pagination.jsx\n prev_page: '上一页',\n next_page: '下一页',\n prev_5: '向前 5 页',\n next_5: '向后 5 页',\n prev_3: '向前 3 页',\n next_3: '向后 3 页',\n page_size: '页码'\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Select from '../select';\nvar MiniSelect = function MiniSelect(props) {\n return /*#__PURE__*/React.createElement(Select, _extends({}, props, {\n size: \"small\"\n }));\n};\nvar MiddleSelect = function MiddleSelect(props) {\n return /*#__PURE__*/React.createElement(Select, _extends({}, props, {\n size: \"middle\"\n }));\n};\nMiniSelect.Option = Select.Option;\nMiddleSelect.Option = Select.Option;\nexport { MiniSelect, MiddleSelect };","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport DoubleLeftOutlined from \"@ant-design/icons/es/icons/DoubleLeftOutlined\";\nimport DoubleRightOutlined from \"@ant-design/icons/es/icons/DoubleRightOutlined\";\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport classNames from 'classnames';\nimport RcPagination from 'rc-pagination';\nimport enUS from \"rc-pagination/es/locale/en_US\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport { MiddleSelect, MiniSelect } from './Select';\nvar Pagination = function Pagination(_a) {\n var customizePrefixCls = _a.prefixCls,\n customizeSelectPrefixCls = _a.selectPrefixCls,\n className = _a.className,\n size = _a.size,\n customLocale = _a.locale,\n selectComponentClass = _a.selectComponentClass,\n responsive = _a.responsive,\n showSizeChanger = _a.showSizeChanger,\n restProps = __rest(_a, [\"prefixCls\", \"selectPrefixCls\", \"className\", \"size\", \"locale\", \"selectComponentClass\", \"responsive\", \"showSizeChanger\"]);\n var _useBreakpoint = useBreakpoint(responsive),\n xs = _useBreakpoint.xs;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n _React$useContext$pag = _React$useContext.pagination,\n pagination = _React$useContext$pag === void 0 ? {} : _React$useContext$pag;\n var prefixCls = getPrefixCls('pagination', customizePrefixCls);\n var mergedShowSizeChanger = showSizeChanger !== null && showSizeChanger !== void 0 ? showSizeChanger : pagination.showSizeChanger;\n var getIconsProps = function getIconsProps() {\n var ellipsis = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-item-ellipsis\")\n }, \"\\u2022\\u2022\\u2022\");\n var prevIcon = /*#__PURE__*/React.createElement(\"button\", {\n className: \"\".concat(prefixCls, \"-item-link\"),\n type: \"button\",\n tabIndex: -1\n }, /*#__PURE__*/React.createElement(LeftOutlined, null));\n var nextIcon = /*#__PURE__*/React.createElement(\"button\", {\n className: \"\".concat(prefixCls, \"-item-link\"),\n type: \"button\",\n tabIndex: -1\n }, /*#__PURE__*/React.createElement(RightOutlined, null));\n var jumpPrevIcon = /*#__PURE__*/React.createElement(\"a\", {\n className: \"\".concat(prefixCls, \"-item-link\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-container\")\n }, /*#__PURE__*/React.createElement(DoubleLeftOutlined, {\n className: \"\".concat(prefixCls, \"-item-link-icon\")\n }), ellipsis));\n var jumpNextIcon = /*#__PURE__*/React.createElement(\"a\", {\n className: \"\".concat(prefixCls, \"-item-link\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-item-container\")\n }, /*#__PURE__*/React.createElement(DoubleRightOutlined, {\n className: \"\".concat(prefixCls, \"-item-link-icon\")\n }), ellipsis));\n // change arrows direction in right-to-left direction\n if (direction === 'rtl') {\n var _ref = [nextIcon, prevIcon];\n prevIcon = _ref[0];\n nextIcon = _ref[1];\n var _ref2 = [jumpNextIcon, jumpPrevIcon];\n jumpPrevIcon = _ref2[0];\n jumpNextIcon = _ref2[1];\n }\n return {\n prevIcon: prevIcon,\n nextIcon: nextIcon,\n jumpPrevIcon: jumpPrevIcon,\n jumpNextIcon: jumpNextIcon\n };\n };\n return /*#__PURE__*/React.createElement(LocaleReceiver, {\n componentName: \"Pagination\",\n defaultLocale: enUS\n }, function (contextLocale) {\n var _classNames;\n var locale = _extends(_extends({}, contextLocale), customLocale);\n var isSmall = size === 'small' || !!(xs && !size && responsive);\n var selectPrefixCls = getPrefixCls('select', customizeSelectPrefixCls);\n var extendedClassName = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-mini\"), isSmall), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n return /*#__PURE__*/React.createElement(RcPagination, _extends({}, getIconsProps(), restProps, {\n prefixCls: prefixCls,\n selectPrefixCls: selectPrefixCls,\n className: extendedClassName,\n selectComponentClass: selectComponentClass || (isSmall ? MiniSelect : MiddleSelect),\n locale: locale,\n showSizeChanger: mergedShowSizeChanger\n }));\n });\n};\nexport default Pagination;","import Pagination from './Pagination';\nexport default Pagination;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport debounce from 'lodash/debounce';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigConsumer, ConfigContext } from '../config-provider';\nimport { cloneElement, isValidElement } from '../_util/reactNode';\nimport { tuple } from '../_util/type';\nvar SpinSizes = tuple('small', 'default', 'large');\n// Render indicator\nvar defaultIndicator = null;\nfunction renderIndicator(prefixCls, props) {\n var indicator = props.indicator;\n var dotClassName = \"\".concat(prefixCls, \"-dot\");\n // should not be render default indicator when indicator value is null\n if (indicator === null) {\n return null;\n }\n if (isValidElement(indicator)) {\n return cloneElement(indicator, {\n className: classNames(indicator.props.className, dotClassName)\n });\n }\n if (isValidElement(defaultIndicator)) {\n return cloneElement(defaultIndicator, {\n className: classNames(defaultIndicator.props.className, dotClassName)\n });\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(dotClassName, \"\".concat(prefixCls, \"-dot-spin\"))\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-dot-item\")\n }), /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-dot-item\")\n }), /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-dot-item\")\n }), /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(prefixCls, \"-dot-item\")\n }));\n}\nfunction shouldDelay(spinning, delay) {\n return !!spinning && !!delay && !isNaN(Number(delay));\n}\nvar Spin = function Spin(props) {\n var prefixCls = props.spinPrefixCls,\n _props$spinning = props.spinning,\n customSpinning = _props$spinning === void 0 ? true : _props$spinning,\n delay = props.delay,\n className = props.className,\n _props$size = props.size,\n size = _props$size === void 0 ? 'default' : _props$size,\n tip = props.tip,\n wrapperClassName = props.wrapperClassName,\n style = props.style,\n children = props.children,\n restProps = __rest(props, [\"spinPrefixCls\", \"spinning\", \"delay\", \"className\", \"size\", \"tip\", \"wrapperClassName\", \"style\", \"children\"]);\n var _React$useState = React.useState(function () {\n return customSpinning && !shouldDelay(customSpinning, delay);\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n spinning = _React$useState2[0],\n setSpinning = _React$useState2[1];\n React.useEffect(function () {\n var updateSpinning = debounce(function () {\n setSpinning(customSpinning);\n }, delay);\n updateSpinning();\n return function () {\n var _a;\n (_a = updateSpinning === null || updateSpinning === void 0 ? void 0 : updateSpinning.cancel) === null || _a === void 0 ? void 0 : _a.call(updateSpinning);\n };\n }, [delay, customSpinning]);\n var isNestedPattern = function isNestedPattern() {\n return typeof children !== 'undefined';\n };\n var renderSpin = function renderSpin(_ref) {\n var _classNames;\n var direction = _ref.direction;\n var spinClassName = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), size === 'small'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), size === 'large'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-spinning\"), spinning), _defineProperty(_classNames, \"\".concat(prefixCls, \"-show-text\"), !!tip), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n // fix https://fb.me/react-unknown-prop\n var divProps = omit(restProps, ['indicator', 'prefixCls']);\n var spinElement = /*#__PURE__*/React.createElement(\"div\", _extends({}, divProps, {\n style: style,\n className: spinClassName,\n \"aria-live\": \"polite\",\n \"aria-busy\": spinning\n }), renderIndicator(prefixCls, props), tip ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-text\")\n }, tip) : null);\n if (isNestedPattern()) {\n var containerClassName = classNames(\"\".concat(prefixCls, \"-container\"), _defineProperty({}, \"\".concat(prefixCls, \"-blur\"), spinning));\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, divProps, {\n className: classNames(\"\".concat(prefixCls, \"-nested-loading\"), wrapperClassName)\n }), spinning && /*#__PURE__*/React.createElement(\"div\", {\n key: \"loading\"\n }, spinElement), /*#__PURE__*/React.createElement(\"div\", {\n className: containerClassName,\n key: \"container\"\n }, children));\n }\n return spinElement;\n };\n return /*#__PURE__*/React.createElement(ConfigConsumer, null, renderSpin);\n};\nvar SpinFC = function SpinFC(props) {\n var customizePrefixCls = props.prefixCls;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var spinPrefixCls = getPrefixCls('spin', customizePrefixCls);\n var spinClassProps = _extends(_extends({}, props), {\n spinPrefixCls: spinPrefixCls\n });\n return /*#__PURE__*/React.createElement(Spin, _extends({}, spinClassProps));\n};\nSpinFC.setDefaultIndicator = function (indicator) {\n defaultIndicator = indicator;\n};\nif (process.env.NODE_ENV !== 'production') {\n SpinFC.displayName = 'Spin';\n}\nexport default SpinFC;","export function isWindow(obj) {\n return obj !== null && obj !== undefined && obj === obj.window;\n}\nexport default function getScroll(target, top) {\n var _a, _b;\n if (typeof window === 'undefined') {\n return 0;\n }\n var method = top ? 'scrollTop' : 'scrollLeft';\n var result = 0;\n if (isWindow(target)) {\n result = target[top ? 'pageYOffset' : 'pageXOffset'];\n } else if (target instanceof Document) {\n result = target.documentElement[method];\n } else if (target instanceof HTMLElement) {\n result = target[method];\n } else if (target) {\n // According to the type inference, the `target` is `never` type.\n // Since we configured the loose mode type checking, and supports mocking the target with such shape below::\n // `{ documentElement: { scrollLeft: 200, scrollTop: 400 } }`,\n // the program may falls into this branch.\n // Check the corresponding tests for details. Don't sure what is the real scenario this happens.\n result = target[method];\n }\n if (target && !isWindow(target) && typeof result !== 'number') {\n result = (_b = ((_a = target.ownerDocument) !== null && _a !== void 0 ? _a : target).documentElement) === null || _b === void 0 ? void 0 : _b[method];\n }\n return result;\n}","import raf from \"rc-util/es/raf\";\nimport { easeInOutCubic } from './easings';\nimport getScroll, { isWindow } from './getScroll';\nexport default function scrollTo(y) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$getContainer = options.getContainer,\n getContainer = _options$getContainer === void 0 ? function () {\n return window;\n } : _options$getContainer,\n callback = options.callback,\n _options$duration = options.duration,\n duration = _options$duration === void 0 ? 450 : _options$duration;\n var container = getContainer();\n var scrollTop = getScroll(container, true);\n var startTime = Date.now();\n var frameFunc = function frameFunc() {\n var timestamp = Date.now();\n var time = timestamp - startTime;\n var nextScrollTop = easeInOutCubic(time > duration ? duration : time, scrollTop, y, duration);\n if (isWindow(container)) {\n container.scrollTo(window.pageXOffset, nextScrollTop);\n } else if (container instanceof Document || container.constructor.name === 'HTMLDocument') {\n container.documentElement.scrollTop = nextScrollTop;\n } else {\n container.scrollTop = nextScrollTop;\n }\n if (time < duration) {\n raf(frameFunc);\n } else if (typeof callback === 'function') {\n callback();\n }\n };\n raf(frameFunc);\n}","// eslint-disable-next-line import/prefer-default-export\nexport function easeInOutCubic(t, b, c, d) {\n var cc = c - b;\n t /= d / 2;\n if (t < 1) {\n return cc / 2 * t * t * t + b;\n }\n // eslint-disable-next-line no-return-assign\n return cc / 2 * ((t -= 2) * t * t + 2) + b;\n}","/* istanbul ignore next */\n/** This is a syntactic sugar for `columns` prop. So HOC will not work on this. */\n// eslint-disable-next-line no-unused-vars\nfunction Column(_) {\n return null;\n}\nexport default Column;","/* istanbul ignore next */\n/** This is a syntactic sugar for `columns` prop. So HOC will not work on this. */\n// eslint-disable-next-line no-unused-vars\nfunction ColumnGroup(_) {\n return null;\n}\nexport default ColumnGroup;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nfunction renderExpandIcon(locale) {\n return function expandIcon(_ref) {\n var _classNames;\n var prefixCls = _ref.prefixCls,\n onExpand = _ref.onExpand,\n record = _ref.record,\n expanded = _ref.expanded,\n expandable = _ref.expandable;\n var iconPrefix = \"\".concat(prefixCls, \"-row-expand-icon\");\n return /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: function onClick(e) {\n onExpand(record, e);\n e.stopPropagation();\n },\n className: classNames(iconPrefix, (_classNames = {}, _defineProperty(_classNames, \"\".concat(iconPrefix, \"-spaced\"), !expandable), _defineProperty(_classNames, \"\".concat(iconPrefix, \"-expanded\"), expandable && expanded), _defineProperty(_classNames, \"\".concat(iconPrefix, \"-collapsed\"), expandable && !expanded), _classNames)),\n \"aria-label\": expanded ? locale.collapse : locale.expand,\n \"aria-expanded\": expanded\n });\n };\n}\nexport default renderExpandIcon;","export function getColumnKey(column, defaultKey) {\n if ('key' in column && column.key !== undefined && column.key !== null) {\n return column.key;\n }\n if (column.dataIndex) {\n return Array.isArray(column.dataIndex) ? column.dataIndex.join('.') : column.dataIndex;\n }\n return defaultKey;\n}\nexport function getColumnPos(index, pos) {\n return pos ? \"\".concat(pos, \"-\").concat(index) : \"\".concat(index);\n}\nexport function renderColumnTitle(title, props) {\n if (typeof title === 'function') {\n return title(props);\n }\n return title;\n}\n/**\n * Safe get column title\n *\n * Should filter [object Object]\n *\n * @param title\n * @returns\n */\nexport function safeColumnTitle(title, props) {\n var res = renderColumnTitle(title, props);\n if (Object.prototype.toString.call(res) === '[object Object]') return '';\n return res;\n}","// This icon file is generated automatically.\nvar FilterFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\" } }] }, \"name\": \"filter\", \"theme\": \"filled\" };\nexport default FilterFilled;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport FilterFilledSvg from \"@ant-design/icons-svg/es/asn/FilterFilled\";\nimport AntdIcon from '../components/AntdIcon';\nvar FilterFilled = function FilterFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: FilterFilledSvg\n }));\n};\nFilterFilled.displayName = 'FilterFilled';\nexport default /*#__PURE__*/React.forwardRef(FilterFilled);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport React from 'react';\nexport var offset = 4;\nexport default function dropIndicatorRender(props) {\n var _style;\n var dropPosition = props.dropPosition,\n dropLevelOffset = props.dropLevelOffset,\n prefixCls = props.prefixCls,\n indent = props.indent,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? 'ltr' : _props$direction;\n var startPosition = direction === 'ltr' ? 'left' : 'right';\n var endPosition = direction === 'ltr' ? 'right' : 'left';\n var style = (_style = {}, _defineProperty(_style, startPosition, -dropLevelOffset * indent + offset), _defineProperty(_style, endPosition, 0), _style);\n switch (dropPosition) {\n case -1:\n style.top = -3;\n break;\n case 1:\n style.bottom = -3;\n break;\n default:\n // dropPosition === 0\n style.bottom = -3;\n style[startPosition] = indent + offset;\n break;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n style: style,\n className: \"\".concat(prefixCls, \"-drop-indicator\")\n });\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport HolderOutlined from \"@ant-design/icons/es/icons/HolderOutlined\";\nimport classNames from 'classnames';\nimport RcTree from 'rc-tree';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport collapseMotion from '../_util/motion';\nimport dropIndicatorRender from './utils/dropIndicator';\nimport renderSwitcherIcon from './utils/iconUtil';\nvar Tree = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n virtual = _React$useContext.virtual;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n _props$showIcon = props.showIcon,\n showIcon = _props$showIcon === void 0 ? false : _props$showIcon,\n showLine = props.showLine,\n _switcherIcon = props.switcherIcon,\n _props$blockNode = props.blockNode,\n blockNode = _props$blockNode === void 0 ? false : _props$blockNode,\n children = props.children,\n _props$checkable = props.checkable,\n checkable = _props$checkable === void 0 ? false : _props$checkable,\n _props$selectable = props.selectable,\n selectable = _props$selectable === void 0 ? true : _props$selectable,\n draggable = props.draggable,\n _props$motion = props.motion,\n motion = _props$motion === void 0 ? _extends(_extends({}, collapseMotion), {\n motionAppear: false\n }) : _props$motion;\n var prefixCls = getPrefixCls('tree', customizePrefixCls);\n var newProps = _extends(_extends({}, props), {\n checkable: checkable,\n selectable: selectable,\n showIcon: showIcon,\n motion: motion,\n blockNode: blockNode,\n showLine: Boolean(showLine),\n dropIndicatorRender: dropIndicatorRender\n });\n var draggableConfig = React.useMemo(function () {\n if (!draggable) {\n return false;\n }\n var mergedDraggable = {};\n switch (_typeof(draggable)) {\n case 'function':\n mergedDraggable.nodeDraggable = draggable;\n break;\n case 'object':\n mergedDraggable = _extends({}, draggable);\n break;\n default:\n break;\n // Do nothing\n }\n\n if (mergedDraggable.icon !== false) {\n mergedDraggable.icon = mergedDraggable.icon || /*#__PURE__*/React.createElement(HolderOutlined, null);\n }\n return mergedDraggable;\n }, [draggable]);\n return /*#__PURE__*/React.createElement(RcTree, _extends({\n itemHeight: 20,\n ref: ref,\n virtual: virtual\n }, newProps, {\n prefixCls: prefixCls,\n className: classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-icon-hide\"), !showIcon), _defineProperty(_classNames, \"\".concat(prefixCls, \"-block-node\"), blockNode), _defineProperty(_classNames, \"\".concat(prefixCls, \"-unselectable\"), !selectable), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className),\n direction: direction,\n checkable: checkable ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-checkbox-inner\")\n }) : checkable,\n selectable: selectable,\n switcherIcon: function switcherIcon(nodeProps) {\n return renderSwitcherIcon(prefixCls, _switcherIcon, showLine, nodeProps);\n },\n draggable: draggableConfig\n }), children);\n});\nexport default Tree;","// This icon file is generated automatically.\nvar FolderOpenOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 00-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12 0-17.7-14.3-32-32-32zM136 256h188.5l119.6 114.4H748V444H238c-13 0-24.8 7.9-29.7 20L136 643.2V256zm635.3 512H159l103.3-256h612.4L771.3 768z\" } }] }, \"name\": \"folder-open\", \"theme\": \"outlined\" };\nexport default FolderOpenOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport FolderOpenOutlinedSvg from \"@ant-design/icons-svg/es/asn/FolderOpenOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar FolderOpenOutlined = function FolderOpenOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: FolderOpenOutlinedSvg\n }));\n};\nFolderOpenOutlined.displayName = 'FolderOpenOutlined';\nexport default /*#__PURE__*/React.forwardRef(FolderOpenOutlined);","// This icon file is generated automatically.\nvar FolderOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M880 298.4H521L403.7 186.2a8.15 8.15 0 00-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z\" } }] }, \"name\": \"folder\", \"theme\": \"outlined\" };\nexport default FolderOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport FolderOutlinedSvg from \"@ant-design/icons-svg/es/asn/FolderOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar FolderOutlined = function FolderOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: FolderOutlinedSvg\n }));\n};\nFolderOutlined.displayName = 'FolderOutlined';\nexport default /*#__PURE__*/React.forwardRef(FolderOutlined);","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar Record;\n(function (Record) {\n Record[Record[\"None\"] = 0] = \"None\";\n Record[Record[\"Start\"] = 1] = \"Start\";\n Record[Record[\"End\"] = 2] = \"End\";\n})(Record || (Record = {}));\nfunction traverseNodesKey(treeData, callback) {\n function processNode(dataNode) {\n var key = dataNode.key,\n children = dataNode.children;\n if (callback(key, dataNode) !== false) {\n traverseNodesKey(children || [], callback);\n }\n }\n treeData.forEach(processNode);\n}\n/** 计算选中范围,只考虑expanded情况以优化性能 */\nexport function calcRangeKeys(_ref) {\n var treeData = _ref.treeData,\n expandedKeys = _ref.expandedKeys,\n startKey = _ref.startKey,\n endKey = _ref.endKey;\n var keys = [];\n var record = Record.None;\n if (startKey && startKey === endKey) {\n return [startKey];\n }\n if (!startKey || !endKey) {\n return [];\n }\n function matchKey(key) {\n return key === startKey || key === endKey;\n }\n traverseNodesKey(treeData, function (key) {\n if (record === Record.End) {\n return false;\n }\n if (matchKey(key)) {\n // Match test\n keys.push(key);\n if (record === Record.None) {\n record = Record.Start;\n } else if (record === Record.Start) {\n record = Record.End;\n return false;\n }\n } else if (record === Record.Start) {\n // Append selection\n keys.push(key);\n }\n return expandedKeys.includes(key);\n });\n return keys;\n}\nexport function convertDirectoryKeysToNodes(treeData, keys) {\n var restKeys = _toConsumableArray(keys);\n var nodes = [];\n traverseNodesKey(treeData, function (key, node) {\n var index = restKeys.indexOf(key);\n if (index !== -1) {\n nodes.push(node);\n restKeys.splice(index, 1);\n }\n return !!restKeys.length;\n });\n return nodes;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport FileOutlined from \"@ant-design/icons/es/icons/FileOutlined\";\nimport FolderOpenOutlined from \"@ant-design/icons/es/icons/FolderOpenOutlined\";\nimport FolderOutlined from \"@ant-design/icons/es/icons/FolderOutlined\";\nimport classNames from 'classnames';\nimport { conductExpandParent } from \"rc-tree/es/util\";\nimport { convertDataToEntities, convertTreeToData } from \"rc-tree/es/utils/treeUtil\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Tree from './Tree';\nimport { calcRangeKeys, convertDirectoryKeysToNodes } from './utils/dictUtil';\nfunction getIcon(props) {\n var isLeaf = props.isLeaf,\n expanded = props.expanded;\n if (isLeaf) {\n return /*#__PURE__*/React.createElement(FileOutlined, null);\n }\n return expanded ? /*#__PURE__*/React.createElement(FolderOpenOutlined, null) : /*#__PURE__*/React.createElement(FolderOutlined, null);\n}\nfunction getTreeData(_ref) {\n var treeData = _ref.treeData,\n children = _ref.children;\n return treeData || convertTreeToData(children);\n}\nvar DirectoryTree = function DirectoryTree(_a, ref) {\n var defaultExpandAll = _a.defaultExpandAll,\n defaultExpandParent = _a.defaultExpandParent,\n defaultExpandedKeys = _a.defaultExpandedKeys,\n props = __rest(_a, [\"defaultExpandAll\", \"defaultExpandParent\", \"defaultExpandedKeys\"]);\n // Shift click usage\n var lastSelectedKey = React.useRef();\n var cachedSelectedKeys = React.useRef();\n var getInitExpandedKeys = function getInitExpandedKeys() {\n var _convertDataToEntitie = convertDataToEntities(getTreeData(props)),\n keyEntities = _convertDataToEntitie.keyEntities;\n var initExpandedKeys;\n // Expanded keys\n if (defaultExpandAll) {\n initExpandedKeys = Object.keys(keyEntities);\n } else if (defaultExpandParent) {\n initExpandedKeys = conductExpandParent(props.expandedKeys || defaultExpandedKeys || [], keyEntities);\n } else {\n initExpandedKeys = props.expandedKeys || defaultExpandedKeys;\n }\n return initExpandedKeys;\n };\n var _React$useState = React.useState(props.selectedKeys || props.defaultSelectedKeys || []),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n selectedKeys = _React$useState2[0],\n setSelectedKeys = _React$useState2[1];\n var _React$useState3 = React.useState(function () {\n return getInitExpandedKeys();\n }),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n expandedKeys = _React$useState4[0],\n setExpandedKeys = _React$useState4[1];\n React.useEffect(function () {\n if ('selectedKeys' in props) {\n setSelectedKeys(props.selectedKeys);\n }\n }, [props.selectedKeys]);\n React.useEffect(function () {\n if ('expandedKeys' in props) {\n setExpandedKeys(props.expandedKeys);\n }\n }, [props.expandedKeys]);\n var onExpand = function onExpand(keys, info) {\n var _a;\n if (!('expandedKeys' in props)) {\n setExpandedKeys(keys);\n }\n // Call origin function\n return (_a = props.onExpand) === null || _a === void 0 ? void 0 : _a.call(props, keys, info);\n };\n var onSelect = function onSelect(keys, event) {\n var _a;\n var multiple = props.multiple;\n var node = event.node,\n nativeEvent = event.nativeEvent;\n var _node$key = node.key,\n key = _node$key === void 0 ? '' : _node$key;\n var treeData = getTreeData(props);\n // const newState: DirectoryTreeState = {};\n // We need wrap this event since some value is not same\n var newEvent = _extends(_extends({}, event), {\n selected: true\n });\n // Windows / Mac single pick\n var ctrlPick = (nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.ctrlKey) || (nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.metaKey);\n var shiftPick = nativeEvent === null || nativeEvent === void 0 ? void 0 : nativeEvent.shiftKey;\n // Generate new selected keys\n var newSelectedKeys;\n if (multiple && ctrlPick) {\n // Control click\n newSelectedKeys = keys;\n lastSelectedKey.current = key;\n cachedSelectedKeys.current = newSelectedKeys;\n newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData, newSelectedKeys);\n } else if (multiple && shiftPick) {\n // Shift click\n newSelectedKeys = Array.from(new Set([].concat(_toConsumableArray(cachedSelectedKeys.current || []), _toConsumableArray(calcRangeKeys({\n treeData: treeData,\n expandedKeys: expandedKeys,\n startKey: key,\n endKey: lastSelectedKey.current\n })))));\n newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData, newSelectedKeys);\n } else {\n // Single click\n newSelectedKeys = [key];\n lastSelectedKey.current = key;\n cachedSelectedKeys.current = newSelectedKeys;\n newEvent.selectedNodes = convertDirectoryKeysToNodes(treeData, newSelectedKeys);\n }\n (_a = props.onSelect) === null || _a === void 0 ? void 0 : _a.call(props, newSelectedKeys, newEvent);\n if (!('selectedKeys' in props)) {\n setSelectedKeys(newSelectedKeys);\n }\n };\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n _props$showIcon = props.showIcon,\n showIcon = _props$showIcon === void 0 ? true : _props$showIcon,\n _props$expandAction = props.expandAction,\n expandAction = _props$expandAction === void 0 ? 'click' : _props$expandAction,\n otherProps = __rest(props, [\"prefixCls\", \"className\", \"showIcon\", \"expandAction\"]);\n var prefixCls = getPrefixCls('tree', customizePrefixCls);\n var connectClassName = classNames(\"\".concat(prefixCls, \"-directory\"), _defineProperty({}, \"\".concat(prefixCls, \"-directory-rtl\"), direction === 'rtl'), className);\n return /*#__PURE__*/React.createElement(Tree, _extends({\n icon: getIcon,\n ref: ref,\n blockNode: true\n }, otherProps, {\n showIcon: showIcon,\n expandAction: expandAction,\n prefixCls: prefixCls,\n className: connectClassName,\n expandedKeys: expandedKeys,\n selectedKeys: selectedKeys,\n onSelect: onSelect,\n onExpand: onExpand\n }));\n};\nvar ForwardDirectoryTree = /*#__PURE__*/React.forwardRef(DirectoryTree);\nif (process.env.NODE_ENV !== 'production') {\n ForwardDirectoryTree.displayName = 'DirectoryTree';\n}\nexport default ForwardDirectoryTree;","import { TreeNode } from 'rc-tree';\nimport TreePure from './Tree';\nimport DirectoryTree from './DirectoryTree';\nvar Tree = TreePure;\nTree.DirectoryTree = DirectoryTree;\nTree.TreeNode = TreeNode;\nexport default Tree;","import SearchOutlined from \"@ant-design/icons/es/icons/SearchOutlined\";\nimport * as React from 'react';\nimport Input from '../../../input';\nfunction FilterSearch(_ref) {\n var value = _ref.value,\n onChange = _ref.onChange,\n filterSearch = _ref.filterSearch,\n tablePrefixCls = _ref.tablePrefixCls,\n locale = _ref.locale;\n if (!filterSearch) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(tablePrefixCls, \"-filter-dropdown-search\")\n }, /*#__PURE__*/React.createElement(Input, {\n prefix: /*#__PURE__*/React.createElement(SearchOutlined, null),\n placeholder: locale.filterSearchPlaceholder,\n onChange: onChange,\n value: value,\n // for skip min-width of input\n htmlSize: 1,\n className: \"\".concat(tablePrefixCls, \"-filter-dropdown-search-input\")\n }));\n}\nexport default FilterSearch;","import * as React from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nvar onKeyDown = function onKeyDown(event) {\n var keyCode = event.keyCode;\n if (keyCode === KeyCode.ENTER) {\n event.stopPropagation();\n }\n};\nvar FilterDropdownMenuWrapper = function FilterDropdownMenuWrapper(props) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: props.className,\n onClick: function onClick(e) {\n return e.stopPropagation();\n },\n onKeyDown: onKeyDown\n }, props.children);\n};\nexport default FilterDropdownMenuWrapper;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport FilterFilled from \"@ant-design/icons/es/icons/FilterFilled\";\nimport classNames from 'classnames';\nimport isEqual from 'lodash/isEqual';\nimport * as React from 'react';\nimport { flattenKeys } from '.';\nimport Button from '../../../button';\nimport Checkbox from '../../../checkbox';\nimport { ConfigContext } from '../../../config-provider/context';\nimport Dropdown from '../../../dropdown';\nimport Empty from '../../../empty';\nimport Menu from '../../../menu';\nimport { OverrideProvider } from '../../../menu/OverrideContext';\nimport Radio from '../../../radio';\nimport Tree from '../../../tree';\nimport useSyncState from '../../../_util/hooks/useSyncState';\nimport FilterSearch from './FilterSearch';\nimport FilterDropdownMenuWrapper from './FilterWrapper';\nfunction hasSubMenu(filters) {\n return filters.some(function (_ref) {\n var children = _ref.children;\n return children;\n });\n}\nfunction searchValueMatched(searchValue, text) {\n if (typeof text === 'string' || typeof text === 'number') {\n return text === null || text === void 0 ? void 0 : text.toString().toLowerCase().includes(searchValue.trim().toLowerCase());\n }\n return false;\n}\nfunction renderFilterItems(_ref2) {\n var filters = _ref2.filters,\n prefixCls = _ref2.prefixCls,\n filteredKeys = _ref2.filteredKeys,\n filterMultiple = _ref2.filterMultiple,\n searchValue = _ref2.searchValue,\n filterSearch = _ref2.filterSearch;\n return filters.map(function (filter, index) {\n var key = String(filter.value);\n if (filter.children) {\n return {\n key: key || index,\n label: filter.text,\n popupClassName: \"\".concat(prefixCls, \"-dropdown-submenu\"),\n children: renderFilterItems({\n filters: filter.children,\n prefixCls: prefixCls,\n filteredKeys: filteredKeys,\n filterMultiple: filterMultiple,\n searchValue: searchValue,\n filterSearch: filterSearch\n })\n };\n }\n var Component = filterMultiple ? Checkbox : Radio;\n var item = {\n key: filter.value !== undefined ? key : index,\n label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Component, {\n checked: filteredKeys.includes(key)\n }), /*#__PURE__*/React.createElement(\"span\", null, filter.text))\n };\n if (searchValue.trim()) {\n if (typeof filterSearch === 'function') {\n return filterSearch(searchValue, filter) ? item : null;\n }\n return searchValueMatched(searchValue, filter.text) ? item : null;\n }\n return item;\n });\n}\nfunction FilterDropdown(props) {\n var _a;\n var tablePrefixCls = props.tablePrefixCls,\n prefixCls = props.prefixCls,\n column = props.column,\n dropdownPrefixCls = props.dropdownPrefixCls,\n columnKey = props.columnKey,\n filterMultiple = props.filterMultiple,\n _props$filterMode = props.filterMode,\n filterMode = _props$filterMode === void 0 ? 'menu' : _props$filterMode,\n _props$filterSearch = props.filterSearch,\n filterSearch = _props$filterSearch === void 0 ? false : _props$filterSearch,\n filterState = props.filterState,\n triggerFilter = props.triggerFilter,\n locale = props.locale,\n children = props.children,\n getPopupContainer = props.getPopupContainer;\n var filterDropdownOpen = column.filterDropdownOpen,\n onFilterDropdownOpenChange = column.onFilterDropdownOpenChange,\n filterDropdownVisible = column.filterDropdownVisible,\n onFilterDropdownVisibleChange = column.onFilterDropdownVisibleChange,\n filterResetToDefaultFilteredValue = column.filterResetToDefaultFilteredValue,\n defaultFilteredValue = column.defaultFilteredValue;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n visible = _React$useState2[0],\n setVisible = _React$useState2[1];\n var filtered = !!(filterState && (((_a = filterState.filteredKeys) === null || _a === void 0 ? void 0 : _a.length) || filterState.forceFiltered));\n var triggerVisible = function triggerVisible(newVisible) {\n setVisible(newVisible);\n onFilterDropdownOpenChange === null || onFilterDropdownOpenChange === void 0 ? void 0 : onFilterDropdownOpenChange(newVisible);\n onFilterDropdownVisibleChange === null || onFilterDropdownVisibleChange === void 0 ? void 0 : onFilterDropdownVisibleChange(newVisible);\n };\n var mergedVisible;\n if (typeof filterDropdownOpen === 'boolean') {\n mergedVisible = filterDropdownOpen;\n } else {\n mergedVisible = typeof filterDropdownVisible === 'boolean' ? filterDropdownVisible : visible;\n }\n // ===================== Select Keys =====================\n var propFilteredKeys = filterState === null || filterState === void 0 ? void 0 : filterState.filteredKeys;\n var _useSyncState = useSyncState(propFilteredKeys || []),\n _useSyncState2 = _slicedToArray(_useSyncState, 2),\n getFilteredKeysSync = _useSyncState2[0],\n setFilteredKeysSync = _useSyncState2[1];\n var onSelectKeys = function onSelectKeys(_ref3) {\n var selectedKeys = _ref3.selectedKeys;\n setFilteredKeysSync(selectedKeys);\n };\n var onCheck = function onCheck(keys, _ref4) {\n var node = _ref4.node,\n checked = _ref4.checked;\n if (!filterMultiple) {\n onSelectKeys({\n selectedKeys: checked && node.key ? [node.key] : []\n });\n } else {\n onSelectKeys({\n selectedKeys: keys\n });\n }\n };\n React.useEffect(function () {\n if (!visible) {\n return;\n }\n onSelectKeys({\n selectedKeys: propFilteredKeys || []\n });\n }, [propFilteredKeys]);\n // ====================== Open Keys ======================\n var _React$useState3 = React.useState([]),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n openKeys = _React$useState4[0],\n setOpenKeys = _React$useState4[1];\n var onOpenChange = function onOpenChange(keys) {\n setOpenKeys(keys);\n };\n // search in tree mode column filter\n var _React$useState5 = React.useState(''),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n searchValue = _React$useState6[0],\n setSearchValue = _React$useState6[1];\n var onSearch = function onSearch(e) {\n var value = e.target.value;\n setSearchValue(value);\n };\n // clear search value after close filter dropdown\n React.useEffect(function () {\n if (!visible) {\n setSearchValue('');\n }\n }, [visible]);\n // ======================= Submit ========================\n var internalTriggerFilter = function internalTriggerFilter(keys) {\n var mergedKeys = keys && keys.length ? keys : null;\n if (mergedKeys === null && (!filterState || !filterState.filteredKeys)) {\n return null;\n }\n if (isEqual(mergedKeys, filterState === null || filterState === void 0 ? void 0 : filterState.filteredKeys)) {\n return null;\n }\n triggerFilter({\n column: column,\n key: columnKey,\n filteredKeys: mergedKeys\n });\n };\n var onConfirm = function onConfirm() {\n triggerVisible(false);\n internalTriggerFilter(getFilteredKeysSync());\n };\n var onReset = function onReset() {\n var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n confirm: false,\n closeDropdown: false\n },\n confirm = _ref5.confirm,\n closeDropdown = _ref5.closeDropdown;\n if (confirm) {\n internalTriggerFilter([]);\n }\n if (closeDropdown) {\n triggerVisible(false);\n }\n setSearchValue('');\n if (filterResetToDefaultFilteredValue) {\n setFilteredKeysSync((defaultFilteredValue || []).map(function (key) {\n return String(key);\n }));\n } else {\n setFilteredKeysSync([]);\n }\n };\n var doFilter = function doFilter() {\n var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n closeDropdown: true\n },\n closeDropdown = _ref6.closeDropdown;\n if (closeDropdown) {\n triggerVisible(false);\n }\n internalTriggerFilter(getFilteredKeysSync());\n };\n var onVisibleChange = function onVisibleChange(newVisible) {\n if (newVisible && propFilteredKeys !== undefined) {\n // Sync filteredKeys on appear in controlled mode (propFilteredKeys !== undefiend)\n setFilteredKeysSync(propFilteredKeys || []);\n }\n triggerVisible(newVisible);\n // Default will filter when closed\n if (!newVisible && !column.filterDropdown) {\n onConfirm();\n }\n };\n // ======================== Style ========================\n var dropdownMenuClass = classNames(_defineProperty({}, \"\".concat(dropdownPrefixCls, \"-menu-without-submenu\"), !hasSubMenu(column.filters || [])));\n var onCheckAll = function onCheckAll(e) {\n if (e.target.checked) {\n var allFilterKeys = flattenKeys(column === null || column === void 0 ? void 0 : column.filters).map(function (key) {\n return String(key);\n });\n setFilteredKeysSync(allFilterKeys);\n } else {\n setFilteredKeysSync([]);\n }\n };\n var getTreeData = function getTreeData(_ref7) {\n var filters = _ref7.filters;\n return (filters || []).map(function (filter, index) {\n var key = String(filter.value);\n var item = {\n title: filter.text,\n key: filter.value !== undefined ? key : index\n };\n if (filter.children) {\n item.children = getTreeData({\n filters: filter.children\n });\n }\n return item;\n });\n };\n var getFilterData = function getFilterData(node) {\n var _a;\n return _extends(_extends({}, node), {\n text: node.title,\n value: node.key,\n children: ((_a = node.children) === null || _a === void 0 ? void 0 : _a.map(function (item) {\n return getFilterData(item);\n })) || []\n });\n };\n var dropdownContent;\n if (typeof column.filterDropdown === 'function') {\n dropdownContent = column.filterDropdown({\n prefixCls: \"\".concat(dropdownPrefixCls, \"-custom\"),\n setSelectedKeys: function setSelectedKeys(selectedKeys) {\n return onSelectKeys({\n selectedKeys: selectedKeys\n });\n },\n selectedKeys: getFilteredKeysSync(),\n confirm: doFilter,\n clearFilters: onReset,\n filters: column.filters,\n visible: mergedVisible,\n close: function close() {\n triggerVisible(false);\n }\n });\n } else if (column.filterDropdown) {\n dropdownContent = column.filterDropdown;\n } else {\n var selectedKeys = getFilteredKeysSync() || [];\n var getFilterComponent = function getFilterComponent() {\n if ((column.filters || []).length === 0) {\n return /*#__PURE__*/React.createElement(Empty, {\n image: Empty.PRESENTED_IMAGE_SIMPLE,\n description: locale.filterEmptyText,\n imageStyle: {\n height: 24\n },\n style: {\n margin: 0,\n padding: '16px 0'\n }\n });\n }\n if (filterMode === 'tree') {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FilterSearch, {\n filterSearch: filterSearch,\n value: searchValue,\n onChange: onSearch,\n tablePrefixCls: tablePrefixCls,\n locale: locale\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(tablePrefixCls, \"-filter-dropdown-tree\")\n }, filterMultiple ? /*#__PURE__*/React.createElement(Checkbox, {\n checked: selectedKeys.length === flattenKeys(column.filters).length,\n indeterminate: selectedKeys.length > 0 && selectedKeys.length < flattenKeys(column.filters).length,\n className: \"\".concat(tablePrefixCls, \"-filter-dropdown-checkall\"),\n onChange: onCheckAll\n }, locale.filterCheckall) : null, /*#__PURE__*/React.createElement(Tree, {\n checkable: true,\n selectable: false,\n blockNode: true,\n multiple: filterMultiple,\n checkStrictly: !filterMultiple,\n className: \"\".concat(dropdownPrefixCls, \"-menu\"),\n onCheck: onCheck,\n checkedKeys: selectedKeys,\n selectedKeys: selectedKeys,\n showIcon: false,\n treeData: getTreeData({\n filters: column.filters\n }),\n autoExpandParent: true,\n defaultExpandAll: true,\n filterTreeNode: searchValue.trim() ? function (node) {\n if (typeof filterSearch === 'function') {\n return filterSearch(searchValue, getFilterData(node));\n }\n return searchValueMatched(searchValue, node.title);\n } : undefined\n })));\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FilterSearch, {\n filterSearch: filterSearch,\n value: searchValue,\n onChange: onSearch,\n tablePrefixCls: tablePrefixCls,\n locale: locale\n }), /*#__PURE__*/React.createElement(Menu, {\n selectable: true,\n multiple: filterMultiple,\n prefixCls: \"\".concat(dropdownPrefixCls, \"-menu\"),\n className: dropdownMenuClass,\n onSelect: onSelectKeys,\n onDeselect: onSelectKeys,\n selectedKeys: selectedKeys,\n getPopupContainer: getPopupContainer,\n openKeys: openKeys,\n onOpenChange: onOpenChange,\n items: renderFilterItems({\n filters: column.filters || [],\n filterSearch: filterSearch,\n prefixCls: prefixCls,\n filteredKeys: getFilteredKeysSync(),\n filterMultiple: filterMultiple,\n searchValue: searchValue\n })\n }));\n };\n var getResetDisabled = function getResetDisabled() {\n if (filterResetToDefaultFilteredValue) {\n return isEqual((defaultFilteredValue || []).map(function (key) {\n return String(key);\n }), selectedKeys);\n }\n return selectedKeys.length === 0;\n };\n dropdownContent = /*#__PURE__*/React.createElement(React.Fragment, null, getFilterComponent(), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-dropdown-btns\")\n }, /*#__PURE__*/React.createElement(Button, {\n type: \"link\",\n size: \"small\",\n disabled: getResetDisabled(),\n onClick: function onClick() {\n return onReset();\n }\n }, locale.filterReset), /*#__PURE__*/React.createElement(Button, {\n type: \"primary\",\n size: \"small\",\n onClick: onConfirm\n }, locale.filterConfirm)));\n }\n // We should not block customize Menu with additional props\n if (column.filterDropdown) {\n dropdownContent = /*#__PURE__*/React.createElement(OverrideProvider, {\n selectable: undefined\n }, dropdownContent);\n }\n var menu = function menu() {\n return /*#__PURE__*/React.createElement(FilterDropdownMenuWrapper, {\n className: \"\".concat(prefixCls, \"-dropdown\")\n }, dropdownContent);\n };\n var filterIcon;\n if (typeof column.filterIcon === 'function') {\n filterIcon = column.filterIcon(filtered);\n } else if (column.filterIcon) {\n filterIcon = column.filterIcon;\n } else {\n filterIcon = /*#__PURE__*/React.createElement(FilterFilled, null);\n }\n var _React$useContext = React.useContext(ConfigContext),\n direction = _React$useContext.direction;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-column\")\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(tablePrefixCls, \"-column-title\")\n }, children), /*#__PURE__*/React.createElement(Dropdown, {\n dropdownRender: menu,\n trigger: ['click'],\n open: mergedVisible,\n onOpenChange: onVisibleChange,\n getPopupContainer: getPopupContainer,\n placement: direction === 'rtl' ? 'bottomLeft' : 'bottomRight'\n }, /*#__PURE__*/React.createElement(\"span\", {\n role: \"button\",\n tabIndex: -1,\n className: classNames(\"\".concat(prefixCls, \"-trigger\"), {\n active: filtered\n }),\n onClick: function onClick(e) {\n e.stopPropagation();\n }\n }, filterIcon)));\n}\nexport default FilterDropdown;","import * as React from 'react';\nimport useForceUpdate from './useForceUpdate';\nexport default function useSyncState(initialValue) {\n var ref = React.useRef(initialValue);\n var forceUpdate = useForceUpdate();\n return [function () {\n return ref.current;\n }, function (newValue) {\n ref.current = newValue;\n // re-render\n forceUpdate();\n }];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport warning from '../../../_util/warning';\nimport { getColumnKey, getColumnPos, renderColumnTitle } from '../../util';\nimport FilterDropdown from './FilterDropdown';\nfunction collectFilterStates(columns, init, pos) {\n var filterStates = [];\n (columns || []).forEach(function (column, index) {\n var _a;\n var columnPos = getColumnPos(index, pos);\n if (column.filters || 'filterDropdown' in column || 'onFilter' in column) {\n if ('filteredValue' in column) {\n // Controlled\n var filteredValues = column.filteredValue;\n if (!('filterDropdown' in column)) {\n filteredValues = (_a = filteredValues === null || filteredValues === void 0 ? void 0 : filteredValues.map(String)) !== null && _a !== void 0 ? _a : filteredValues;\n }\n filterStates.push({\n column: column,\n key: getColumnKey(column, columnPos),\n filteredKeys: filteredValues,\n forceFiltered: column.filtered\n });\n } else {\n // Uncontrolled\n filterStates.push({\n column: column,\n key: getColumnKey(column, columnPos),\n filteredKeys: init && column.defaultFilteredValue ? column.defaultFilteredValue : undefined,\n forceFiltered: column.filtered\n });\n }\n }\n if ('children' in column) {\n filterStates = [].concat(_toConsumableArray(filterStates), _toConsumableArray(collectFilterStates(column.children, init, columnPos)));\n }\n });\n return filterStates;\n}\nfunction injectFilter(prefixCls, dropdownPrefixCls, columns, filterStates, triggerFilter, getPopupContainer, locale, pos) {\n return columns.map(function (column, index) {\n var columnPos = getColumnPos(index, pos);\n var _column$filterMultipl = column.filterMultiple,\n filterMultiple = _column$filterMultipl === void 0 ? true : _column$filterMultipl,\n filterMode = column.filterMode,\n filterSearch = column.filterSearch;\n var newColumn = column;\n if (newColumn.filters || newColumn.filterDropdown) {\n var columnKey = getColumnKey(newColumn, columnPos);\n var filterState = filterStates.find(function (_ref) {\n var key = _ref.key;\n return columnKey === key;\n });\n newColumn = _extends(_extends({}, newColumn), {\n title: function title(renderProps) {\n return /*#__PURE__*/React.createElement(FilterDropdown, {\n tablePrefixCls: prefixCls,\n prefixCls: \"\".concat(prefixCls, \"-filter\"),\n dropdownPrefixCls: dropdownPrefixCls,\n column: newColumn,\n columnKey: columnKey,\n filterState: filterState,\n filterMultiple: filterMultiple,\n filterMode: filterMode,\n filterSearch: filterSearch,\n triggerFilter: triggerFilter,\n locale: locale,\n getPopupContainer: getPopupContainer\n }, renderColumnTitle(column.title, renderProps));\n }\n });\n }\n if ('children' in newColumn) {\n newColumn = _extends(_extends({}, newColumn), {\n children: injectFilter(prefixCls, dropdownPrefixCls, newColumn.children, filterStates, triggerFilter, getPopupContainer, locale, columnPos)\n });\n }\n return newColumn;\n });\n}\nexport function flattenKeys(filters) {\n var keys = [];\n (filters || []).forEach(function (_ref2) {\n var value = _ref2.value,\n children = _ref2.children;\n keys.push(value);\n if (children) {\n keys = [].concat(_toConsumableArray(keys), _toConsumableArray(flattenKeys(children)));\n }\n });\n return keys;\n}\nfunction generateFilterInfo(filterStates) {\n var currentFilters = {};\n filterStates.forEach(function (_ref3) {\n var key = _ref3.key,\n filteredKeys = _ref3.filteredKeys,\n column = _ref3.column;\n var filters = column.filters,\n filterDropdown = column.filterDropdown;\n if (filterDropdown) {\n currentFilters[key] = filteredKeys || null;\n } else if (Array.isArray(filteredKeys)) {\n var keys = flattenKeys(filters);\n currentFilters[key] = keys.filter(function (originKey) {\n return filteredKeys.includes(String(originKey));\n });\n } else {\n currentFilters[key] = null;\n }\n });\n return currentFilters;\n}\nexport function getFilterData(data, filterStates) {\n return filterStates.reduce(function (currentData, filterState) {\n var _filterState$column = filterState.column,\n onFilter = _filterState$column.onFilter,\n filters = _filterState$column.filters,\n filteredKeys = filterState.filteredKeys;\n if (onFilter && filteredKeys && filteredKeys.length) {\n return currentData.filter(function (record) {\n return filteredKeys.some(function (key) {\n var keys = flattenKeys(filters);\n var keyIndex = keys.findIndex(function (k) {\n return String(k) === String(key);\n });\n var realKey = keyIndex !== -1 ? keys[keyIndex] : key;\n return onFilter(realKey, record);\n });\n });\n }\n return currentData;\n }, data);\n}\nfunction useFilter(_ref4) {\n var prefixCls = _ref4.prefixCls,\n dropdownPrefixCls = _ref4.dropdownPrefixCls,\n mergedColumns = _ref4.mergedColumns,\n onFilterChange = _ref4.onFilterChange,\n getPopupContainer = _ref4.getPopupContainer,\n tableLocale = _ref4.locale;\n var _React$useState = React.useState(function () {\n return collectFilterStates(mergedColumns, true);\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n filterStates = _React$useState2[0],\n setFilterStates = _React$useState2[1];\n var mergedFilterStates = React.useMemo(function () {\n var collectedStates = collectFilterStates(mergedColumns, false);\n var filteredKeysIsAllNotControlled = true;\n var filteredKeysIsAllControlled = true;\n collectedStates.forEach(function (_ref5) {\n var filteredKeys = _ref5.filteredKeys;\n if (filteredKeys !== undefined) {\n filteredKeysIsAllNotControlled = false;\n } else {\n filteredKeysIsAllControlled = false;\n }\n });\n // Return if not controlled\n if (filteredKeysIsAllNotControlled) {\n return filterStates;\n }\n process.env.NODE_ENV !== \"production\" ? warning(filteredKeysIsAllControlled, 'Table', 'Columns should all contain `filteredValue` or not contain `filteredValue`.') : void 0;\n return collectedStates;\n }, [mergedColumns, filterStates]);\n var filters = React.useMemo(function () {\n return generateFilterInfo(mergedFilterStates);\n }, [mergedFilterStates]);\n var triggerFilter = function triggerFilter(filterState) {\n var newFilterStates = mergedFilterStates.filter(function (_ref6) {\n var key = _ref6.key;\n return key !== filterState.key;\n });\n newFilterStates.push(filterState);\n setFilterStates(newFilterStates);\n onFilterChange(generateFilterInfo(newFilterStates), newFilterStates);\n };\n var transformColumns = function transformColumns(innerColumns) {\n return injectFilter(prefixCls, dropdownPrefixCls, innerColumns, mergedFilterStates, triggerFilter, getPopupContainer, tableLocale);\n };\n return [transformColumns, mergedFilterStates, filters];\n}\nexport default useFilter;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { useState } from 'react';\nexport var DEFAULT_PAGE_SIZE = 10;\nexport function getPaginationParam(pagination, mergedPagination) {\n var param = {\n current: mergedPagination.current,\n pageSize: mergedPagination.pageSize\n };\n var paginationObj = pagination && _typeof(pagination) === 'object' ? pagination : {};\n Object.keys(paginationObj).forEach(function (pageProp) {\n var value = mergedPagination[pageProp];\n if (typeof value !== 'function') {\n param[pageProp] = value;\n }\n });\n return param;\n}\nfunction extendsObject() {\n var result = {};\n for (var _len = arguments.length, list = new Array(_len), _key = 0; _key < _len; _key++) {\n list[_key] = arguments[_key];\n }\n list.forEach(function (obj) {\n if (obj) {\n Object.keys(obj).forEach(function (key) {\n var val = obj[key];\n if (val !== undefined) {\n result[key] = val;\n }\n });\n }\n });\n return result;\n}\nexport default function usePagination(total, pagination, onChange) {\n var _a = pagination && _typeof(pagination) === 'object' ? pagination : {},\n _a$total = _a.total,\n paginationTotal = _a$total === void 0 ? 0 : _a$total,\n paginationObj = __rest(_a, [\"total\"]);\n var _useState = useState(function () {\n return {\n current: 'defaultCurrent' in paginationObj ? paginationObj.defaultCurrent : 1,\n pageSize: 'defaultPageSize' in paginationObj ? paginationObj.defaultPageSize : DEFAULT_PAGE_SIZE\n };\n }),\n _useState2 = _slicedToArray(_useState, 2),\n innerPagination = _useState2[0],\n setInnerPagination = _useState2[1];\n // ============ Basic Pagination Config ============\n var mergedPagination = extendsObject(innerPagination, paginationObj, {\n total: paginationTotal > 0 ? paginationTotal : total\n });\n // Reset `current` if data length or pageSize changed\n var maxPage = Math.ceil((paginationTotal || total) / mergedPagination.pageSize);\n if (mergedPagination.current > maxPage) {\n // Prevent a maximum page count of 0\n mergedPagination.current = maxPage || 1;\n }\n var refreshPagination = function refreshPagination(current, pageSize) {\n setInnerPagination({\n current: current !== null && current !== void 0 ? current : 1,\n pageSize: pageSize || mergedPagination.pageSize\n });\n };\n var onInternalChange = function onInternalChange(current, pageSize) {\n var _a;\n if (pagination) {\n (_a = pagination.onChange) === null || _a === void 0 ? void 0 : _a.call(pagination, current, pageSize);\n }\n refreshPagination(current, pageSize);\n onChange(current, pageSize || (mergedPagination === null || mergedPagination === void 0 ? void 0 : mergedPagination.pageSize));\n };\n if (pagination === false) {\n return [{}, function () {}];\n }\n return [_extends(_extends({}, mergedPagination), {\n onChange: onInternalChange\n }), refreshPagination];\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport DownOutlined from \"@ant-design/icons/es/icons/DownOutlined\";\nimport { INTERNAL_COL_DEFINE } from 'rc-table';\nimport { arrAdd, arrDel } from \"rc-tree/es/util\";\nimport { conductCheck } from \"rc-tree/es/utils/conductUtil\";\nimport { convertDataToEntities } from \"rc-tree/es/utils/treeUtil\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport * as React from 'react';\nimport { useCallback, useMemo, useState } from 'react';\nimport Checkbox from '../../checkbox';\nimport Dropdown from '../../dropdown';\nimport Radio from '../../radio';\nimport warning from '../../_util/warning';\n// TODO: warning if use ajax!!!\nexport var SELECTION_COLUMN = {};\nexport var SELECTION_ALL = 'SELECT_ALL';\nexport var SELECTION_INVERT = 'SELECT_INVERT';\nexport var SELECTION_NONE = 'SELECT_NONE';\nvar EMPTY_LIST = [];\nfunction flattenData(data, childrenColumnName) {\n var list = [];\n (data || []).forEach(function (record) {\n list.push(record);\n if (record && _typeof(record) === 'object' && childrenColumnName in record) {\n list = [].concat(_toConsumableArray(list), _toConsumableArray(flattenData(record[childrenColumnName], childrenColumnName)));\n }\n });\n return list;\n}\nexport default function useSelection(rowSelection, config) {\n var _ref = rowSelection || {},\n preserveSelectedRowKeys = _ref.preserveSelectedRowKeys,\n selectedRowKeys = _ref.selectedRowKeys,\n defaultSelectedRowKeys = _ref.defaultSelectedRowKeys,\n getCheckboxProps = _ref.getCheckboxProps,\n onSelectionChange = _ref.onChange,\n onSelect = _ref.onSelect,\n onSelectAll = _ref.onSelectAll,\n onSelectInvert = _ref.onSelectInvert,\n onSelectNone = _ref.onSelectNone,\n onSelectMultiple = _ref.onSelectMultiple,\n selectionColWidth = _ref.columnWidth,\n selectionType = _ref.type,\n selections = _ref.selections,\n fixed = _ref.fixed,\n customizeRenderCell = _ref.renderCell,\n hideSelectAll = _ref.hideSelectAll,\n _ref$checkStrictly = _ref.checkStrictly,\n checkStrictly = _ref$checkStrictly === void 0 ? true : _ref$checkStrictly;\n var prefixCls = config.prefixCls,\n data = config.data,\n pageData = config.pageData,\n getRecordByKey = config.getRecordByKey,\n getRowKey = config.getRowKey,\n expandType = config.expandType,\n childrenColumnName = config.childrenColumnName,\n tableLocale = config.locale,\n getPopupContainer = config.getPopupContainer;\n // ========================= Keys =========================\n var _useMergedState = useMergedState(selectedRowKeys || defaultSelectedRowKeys || EMPTY_LIST, {\n value: selectedRowKeys\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedSelectedKeys = _useMergedState2[0],\n setMergedSelectedKeys = _useMergedState2[1];\n // ======================== Caches ========================\n var preserveRecordsRef = React.useRef(new Map());\n var updatePreserveRecordsCache = useCallback(function (keys) {\n if (preserveSelectedRowKeys) {\n var newCache = new Map();\n // Keep key if mark as preserveSelectedRowKeys\n keys.forEach(function (key) {\n var record = getRecordByKey(key);\n if (!record && preserveRecordsRef.current.has(key)) {\n record = preserveRecordsRef.current.get(key);\n }\n newCache.set(key, record);\n });\n // Refresh to new cache\n preserveRecordsRef.current = newCache;\n }\n }, [getRecordByKey, preserveSelectedRowKeys]);\n // Update cache with selectedKeys\n React.useEffect(function () {\n updatePreserveRecordsCache(mergedSelectedKeys);\n }, [mergedSelectedKeys]);\n var _useMemo = useMemo(function () {\n return checkStrictly ? {\n keyEntities: null\n } : convertDataToEntities(data, {\n externalGetKey: getRowKey,\n childrenPropName: childrenColumnName\n });\n }, [data, getRowKey, checkStrictly, childrenColumnName]),\n keyEntities = _useMemo.keyEntities;\n // Get flatten data\n var flattedData = useMemo(function () {\n return flattenData(pageData, childrenColumnName);\n }, [pageData, childrenColumnName]);\n // Get all checkbox props\n var checkboxPropsMap = useMemo(function () {\n var map = new Map();\n flattedData.forEach(function (record, index) {\n var key = getRowKey(record, index);\n var checkboxProps = (getCheckboxProps ? getCheckboxProps(record) : null) || {};\n map.set(key, checkboxProps);\n process.env.NODE_ENV !== \"production\" ? warning(!('checked' in checkboxProps || 'defaultChecked' in checkboxProps), 'Table', 'Do not set `checked` or `defaultChecked` in `getCheckboxProps`. Please use `selectedRowKeys` instead.') : void 0;\n });\n return map;\n }, [flattedData, getRowKey, getCheckboxProps]);\n var isCheckboxDisabled = useCallback(function (r) {\n var _a;\n return !!((_a = checkboxPropsMap.get(getRowKey(r))) === null || _a === void 0 ? void 0 : _a.disabled);\n }, [checkboxPropsMap, getRowKey]);\n var _useMemo2 = useMemo(function () {\n if (checkStrictly) {\n return [mergedSelectedKeys || [], []];\n }\n var _conductCheck = conductCheck(mergedSelectedKeys, true, keyEntities, isCheckboxDisabled),\n checkedKeys = _conductCheck.checkedKeys,\n halfCheckedKeys = _conductCheck.halfCheckedKeys;\n return [checkedKeys || [], halfCheckedKeys];\n }, [mergedSelectedKeys, checkStrictly, keyEntities, isCheckboxDisabled]),\n _useMemo3 = _slicedToArray(_useMemo2, 2),\n derivedSelectedKeys = _useMemo3[0],\n derivedHalfSelectedKeys = _useMemo3[1];\n var derivedSelectedKeySet = useMemo(function () {\n var keys = selectionType === 'radio' ? derivedSelectedKeys.slice(0, 1) : derivedSelectedKeys;\n return new Set(keys);\n }, [derivedSelectedKeys, selectionType]);\n var derivedHalfSelectedKeySet = useMemo(function () {\n return selectionType === 'radio' ? new Set() : new Set(derivedHalfSelectedKeys);\n }, [derivedHalfSelectedKeys, selectionType]);\n // Save last selected key to enable range selection\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n lastSelectedKey = _useState2[0],\n setLastSelectedKey = _useState2[1];\n // Reset if rowSelection reset\n React.useEffect(function () {\n if (!rowSelection) {\n setMergedSelectedKeys(EMPTY_LIST);\n }\n }, [!!rowSelection]);\n var setSelectedKeys = useCallback(function (keys, method) {\n var availableKeys;\n var records;\n updatePreserveRecordsCache(keys);\n if (preserveSelectedRowKeys) {\n availableKeys = keys;\n records = keys.map(function (key) {\n return preserveRecordsRef.current.get(key);\n });\n } else {\n // Filter key which not exist in the `dataSource`\n availableKeys = [];\n records = [];\n keys.forEach(function (key) {\n var record = getRecordByKey(key);\n if (record !== undefined) {\n availableKeys.push(key);\n records.push(record);\n }\n });\n }\n setMergedSelectedKeys(availableKeys);\n onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange(availableKeys, records, {\n type: method\n });\n }, [setMergedSelectedKeys, getRecordByKey, onSelectionChange, preserveSelectedRowKeys]);\n // ====================== Selections ======================\n // Trigger single `onSelect` event\n var triggerSingleSelection = useCallback(function (key, selected, keys, event) {\n if (onSelect) {\n var rows = keys.map(function (k) {\n return getRecordByKey(k);\n });\n onSelect(getRecordByKey(key), selected, rows, event);\n }\n setSelectedKeys(keys, 'single');\n }, [onSelect, getRecordByKey, setSelectedKeys]);\n var mergedSelections = useMemo(function () {\n if (!selections || hideSelectAll) {\n return null;\n }\n var selectionList = selections === true ? [SELECTION_ALL, SELECTION_INVERT, SELECTION_NONE] : selections;\n return selectionList.map(function (selection) {\n if (selection === SELECTION_ALL) {\n return {\n key: 'all',\n text: tableLocale.selectionAll,\n onSelect: function onSelect() {\n setSelectedKeys(data.map(function (record, index) {\n return getRowKey(record, index);\n }).filter(function (key) {\n var checkProps = checkboxPropsMap.get(key);\n return !(checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled) || derivedSelectedKeySet.has(key);\n }), 'all');\n }\n };\n }\n if (selection === SELECTION_INVERT) {\n return {\n key: 'invert',\n text: tableLocale.selectInvert,\n onSelect: function onSelect() {\n var keySet = new Set(derivedSelectedKeySet);\n pageData.forEach(function (record, index) {\n var key = getRowKey(record, index);\n var checkProps = checkboxPropsMap.get(key);\n if (!(checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled)) {\n if (keySet.has(key)) {\n keySet[\"delete\"](key);\n } else {\n keySet.add(key);\n }\n }\n });\n var keys = Array.from(keySet);\n if (onSelectInvert) {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Table', '`onSelectInvert` will be removed in future. Please use `onChange` instead.') : void 0;\n onSelectInvert(keys);\n }\n setSelectedKeys(keys, 'invert');\n }\n };\n }\n if (selection === SELECTION_NONE) {\n return {\n key: 'none',\n text: tableLocale.selectNone,\n onSelect: function onSelect() {\n onSelectNone === null || onSelectNone === void 0 ? void 0 : onSelectNone();\n setSelectedKeys(Array.from(derivedSelectedKeySet).filter(function (key) {\n var checkProps = checkboxPropsMap.get(key);\n return checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled;\n }), 'none');\n }\n };\n }\n return selection;\n }).map(function (selection) {\n return _extends(_extends({}, selection), {\n onSelect: function onSelect() {\n var _a2;\n var _a;\n for (var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++) {\n rest[_key] = arguments[_key];\n }\n (_a = selection.onSelect) === null || _a === void 0 ? void 0 : (_a2 = _a).call.apply(_a2, [selection].concat(rest));\n setLastSelectedKey(null);\n }\n });\n });\n }, [selections, derivedSelectedKeySet, pageData, getRowKey, onSelectInvert, setSelectedKeys]);\n // ======================= Columns ========================\n var transformColumns = useCallback(function (columns) {\n var _a;\n // >>>>>>>>>>> Skip if not exists `rowSelection`\n if (!rowSelection) {\n process.env.NODE_ENV !== \"production\" ? warning(!columns.includes(SELECTION_COLUMN), 'Table', '`rowSelection` is not config but `SELECTION_COLUMN` exists in the `columns`.') : void 0;\n return columns.filter(function (col) {\n return col !== SELECTION_COLUMN;\n });\n }\n // >>>>>>>>>>> Support selection\n var cloneColumns = _toConsumableArray(columns);\n var keySet = new Set(derivedSelectedKeySet);\n // Record key only need check with enabled\n var recordKeys = flattedData.map(getRowKey).filter(function (key) {\n return !checkboxPropsMap.get(key).disabled;\n });\n var checkedCurrentAll = recordKeys.every(function (key) {\n return keySet.has(key);\n });\n var checkedCurrentSome = recordKeys.some(function (key) {\n return keySet.has(key);\n });\n var onSelectAllChange = function onSelectAllChange() {\n var changeKeys = [];\n if (checkedCurrentAll) {\n recordKeys.forEach(function (key) {\n keySet[\"delete\"](key);\n changeKeys.push(key);\n });\n } else {\n recordKeys.forEach(function (key) {\n if (!keySet.has(key)) {\n keySet.add(key);\n changeKeys.push(key);\n }\n });\n }\n var keys = Array.from(keySet);\n onSelectAll === null || onSelectAll === void 0 ? void 0 : onSelectAll(!checkedCurrentAll, keys.map(function (k) {\n return getRecordByKey(k);\n }), changeKeys.map(function (k) {\n return getRecordByKey(k);\n }));\n setSelectedKeys(keys, 'all');\n setLastSelectedKey(null);\n };\n // ===================== Render =====================\n // Title Cell\n var title;\n if (selectionType !== 'radio') {\n var customizeSelections;\n if (mergedSelections) {\n var menu = {\n getPopupContainer: getPopupContainer,\n items: mergedSelections.map(function (selection, index) {\n var key = selection.key,\n text = selection.text,\n onSelectionClick = selection.onSelect;\n return {\n key: key || index,\n onClick: function onClick() {\n onSelectionClick === null || onSelectionClick === void 0 ? void 0 : onSelectionClick(recordKeys);\n },\n label: text\n };\n })\n };\n customizeSelections = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-selection-extra\")\n }, /*#__PURE__*/React.createElement(Dropdown, {\n menu: menu,\n getPopupContainer: getPopupContainer\n }, /*#__PURE__*/React.createElement(\"span\", null, /*#__PURE__*/React.createElement(DownOutlined, null))));\n }\n var allDisabledData = flattedData.map(function (record, index) {\n var key = getRowKey(record, index);\n var checkboxProps = checkboxPropsMap.get(key) || {};\n return _extends({\n checked: keySet.has(key)\n }, checkboxProps);\n }).filter(function (_ref2) {\n var disabled = _ref2.disabled;\n return disabled;\n });\n var allDisabled = !!allDisabledData.length && allDisabledData.length === flattedData.length;\n var allDisabledAndChecked = allDisabled && allDisabledData.every(function (_ref3) {\n var checked = _ref3.checked;\n return checked;\n });\n var allDisabledSomeChecked = allDisabled && allDisabledData.some(function (_ref4) {\n var checked = _ref4.checked;\n return checked;\n });\n title = !hideSelectAll && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-selection\")\n }, /*#__PURE__*/React.createElement(Checkbox, {\n checked: !allDisabled ? !!flattedData.length && checkedCurrentAll : allDisabledAndChecked,\n indeterminate: !allDisabled ? !checkedCurrentAll && checkedCurrentSome : !allDisabledAndChecked && allDisabledSomeChecked,\n onChange: onSelectAllChange,\n disabled: flattedData.length === 0 || allDisabled,\n \"aria-label\": customizeSelections ? 'Custom selection' : 'Select all',\n skipGroup: true\n }), customizeSelections);\n }\n // Body Cell\n var renderCell;\n if (selectionType === 'radio') {\n renderCell = function renderCell(_, record, index) {\n var key = getRowKey(record, index);\n var checked = keySet.has(key);\n return {\n node: /*#__PURE__*/React.createElement(Radio, _extends({}, checkboxPropsMap.get(key), {\n checked: checked,\n onClick: function onClick(e) {\n return e.stopPropagation();\n },\n onChange: function onChange(event) {\n if (!keySet.has(key)) {\n triggerSingleSelection(key, true, [key], event.nativeEvent);\n }\n }\n })),\n checked: checked\n };\n };\n } else {\n renderCell = function renderCell(_, record, index) {\n var _a;\n var key = getRowKey(record, index);\n var checked = keySet.has(key);\n var indeterminate = derivedHalfSelectedKeySet.has(key);\n var checkboxProps = checkboxPropsMap.get(key);\n var mergedIndeterminate;\n if (expandType === 'nest') {\n mergedIndeterminate = indeterminate;\n process.env.NODE_ENV !== \"production\" ? warning(typeof (checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.indeterminate) !== 'boolean', 'Table', 'set `indeterminate` using `rowSelection.getCheckboxProps` is not allowed with tree structured dataSource.') : void 0;\n } else {\n mergedIndeterminate = (_a = checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.indeterminate) !== null && _a !== void 0 ? _a : indeterminate;\n }\n // Record checked\n return {\n node: /*#__PURE__*/React.createElement(Checkbox, _extends({}, checkboxProps, {\n indeterminate: mergedIndeterminate,\n checked: checked,\n skipGroup: true,\n onClick: function onClick(e) {\n return e.stopPropagation();\n },\n onChange: function onChange(_ref5) {\n var nativeEvent = _ref5.nativeEvent;\n var shiftKey = nativeEvent.shiftKey;\n var startIndex = -1;\n var endIndex = -1;\n // Get range of this\n if (shiftKey && checkStrictly) {\n var pointKeys = new Set([lastSelectedKey, key]);\n recordKeys.some(function (recordKey, recordIndex) {\n if (pointKeys.has(recordKey)) {\n if (startIndex === -1) {\n startIndex = recordIndex;\n } else {\n endIndex = recordIndex;\n return true;\n }\n }\n return false;\n });\n }\n if (endIndex !== -1 && startIndex !== endIndex && checkStrictly) {\n // Batch update selections\n var rangeKeys = recordKeys.slice(startIndex, endIndex + 1);\n var changedKeys = [];\n if (checked) {\n rangeKeys.forEach(function (recordKey) {\n if (keySet.has(recordKey)) {\n changedKeys.push(recordKey);\n keySet[\"delete\"](recordKey);\n }\n });\n } else {\n rangeKeys.forEach(function (recordKey) {\n if (!keySet.has(recordKey)) {\n changedKeys.push(recordKey);\n keySet.add(recordKey);\n }\n });\n }\n var keys = Array.from(keySet);\n onSelectMultiple === null || onSelectMultiple === void 0 ? void 0 : onSelectMultiple(!checked, keys.map(function (recordKey) {\n return getRecordByKey(recordKey);\n }), changedKeys.map(function (recordKey) {\n return getRecordByKey(recordKey);\n }));\n setSelectedKeys(keys, 'multiple');\n } else {\n // Single record selected\n var originCheckedKeys = derivedSelectedKeys;\n if (checkStrictly) {\n var checkedKeys = checked ? arrDel(originCheckedKeys, key) : arrAdd(originCheckedKeys, key);\n triggerSingleSelection(key, !checked, checkedKeys, nativeEvent);\n } else {\n // Always fill first\n var result = conductCheck([].concat(_toConsumableArray(originCheckedKeys), [key]), true, keyEntities, isCheckboxDisabled);\n var _checkedKeys = result.checkedKeys,\n halfCheckedKeys = result.halfCheckedKeys;\n var nextCheckedKeys = _checkedKeys;\n // If remove, we do it again to correction\n if (checked) {\n var tempKeySet = new Set(_checkedKeys);\n tempKeySet[\"delete\"](key);\n nextCheckedKeys = conductCheck(Array.from(tempKeySet), {\n checked: false,\n halfCheckedKeys: halfCheckedKeys\n }, keyEntities, isCheckboxDisabled).checkedKeys;\n }\n triggerSingleSelection(key, !checked, nextCheckedKeys, nativeEvent);\n }\n }\n if (checked) {\n setLastSelectedKey(null);\n } else {\n setLastSelectedKey(key);\n }\n }\n })),\n checked: checked\n };\n };\n }\n var renderSelectionCell = function renderSelectionCell(_, record, index) {\n var _renderCell = renderCell(_, record, index),\n node = _renderCell.node,\n checked = _renderCell.checked;\n if (customizeRenderCell) {\n return customizeRenderCell(checked, record, index, node);\n }\n return node;\n };\n // Insert selection column if not exist\n if (!cloneColumns.includes(SELECTION_COLUMN)) {\n // Always after expand icon\n if (cloneColumns.findIndex(function (col) {\n var _a;\n return ((_a = col[INTERNAL_COL_DEFINE]) === null || _a === void 0 ? void 0 : _a.columnType) === 'EXPAND_COLUMN';\n }) === 0) {\n var _cloneColumns = cloneColumns,\n _cloneColumns2 = _toArray(_cloneColumns),\n expandColumn = _cloneColumns2[0],\n restColumns = _cloneColumns2.slice(1);\n cloneColumns = [expandColumn, SELECTION_COLUMN].concat(_toConsumableArray(restColumns));\n } else {\n // Normal insert at first column\n cloneColumns = [SELECTION_COLUMN].concat(_toConsumableArray(cloneColumns));\n }\n }\n // Deduplicate selection column\n var selectionColumnIndex = cloneColumns.indexOf(SELECTION_COLUMN);\n process.env.NODE_ENV !== \"production\" ? warning(cloneColumns.filter(function (col) {\n return col === SELECTION_COLUMN;\n }).length <= 1, 'Table', 'Multiple `SELECTION_COLUMN` exist in `columns`.') : void 0;\n cloneColumns = cloneColumns.filter(function (column, index) {\n return column !== SELECTION_COLUMN || index === selectionColumnIndex;\n });\n // Fixed column logic\n var prevCol = cloneColumns[selectionColumnIndex - 1];\n var nextCol = cloneColumns[selectionColumnIndex + 1];\n var mergedFixed = fixed;\n if (mergedFixed === undefined) {\n if ((nextCol === null || nextCol === void 0 ? void 0 : nextCol.fixed) !== undefined) {\n mergedFixed = nextCol.fixed;\n } else if ((prevCol === null || prevCol === void 0 ? void 0 : prevCol.fixed) !== undefined) {\n mergedFixed = prevCol.fixed;\n }\n }\n if (mergedFixed && prevCol && ((_a = prevCol[INTERNAL_COL_DEFINE]) === null || _a === void 0 ? void 0 : _a.columnType) === 'EXPAND_COLUMN' && prevCol.fixed === undefined) {\n prevCol.fixed = mergedFixed;\n }\n // Replace with real selection column\n var selectionColumn = _defineProperty({\n fixed: mergedFixed,\n width: selectionColWidth,\n className: \"\".concat(prefixCls, \"-selection-column\"),\n title: rowSelection.columnTitle || title,\n render: renderSelectionCell\n }, INTERNAL_COL_DEFINE, {\n className: \"\".concat(prefixCls, \"-selection-col\")\n });\n return cloneColumns.map(function (col) {\n return col === SELECTION_COLUMN ? selectionColumn : col;\n });\n }, [getRowKey, flattedData, rowSelection, derivedSelectedKeys, derivedSelectedKeySet, derivedHalfSelectedKeySet, selectionColWidth, mergedSelections, expandType, lastSelectedKey, checkboxPropsMap, onSelectMultiple, triggerSingleSelection, isCheckboxDisabled]);\n return [transformColumns, derivedSelectedKeySet];\n}","// This icon file is generated automatically.\nvar CaretDownOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\" } }] }, \"name\": \"caret-down\", \"theme\": \"outlined\" };\nexport default CaretDownOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport CaretDownOutlinedSvg from \"@ant-design/icons-svg/es/asn/CaretDownOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar CaretDownOutlined = function CaretDownOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: CaretDownOutlinedSvg\n }));\n};\nCaretDownOutlined.displayName = 'CaretDownOutlined';\nexport default /*#__PURE__*/React.forwardRef(CaretDownOutlined);","// This icon file is generated automatically.\nvar CaretUpOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M858.9 689L530.5 308.2c-9.4-10.9-27.5-10.9-37 0L165.1 689c-12.2 14.2-1.2 35 18.5 35h656.8c19.7 0 30.7-20.8 18.5-35z\" } }] }, \"name\": \"caret-up\", \"theme\": \"outlined\" };\nexport default CaretUpOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport CaretUpOutlinedSvg from \"@ant-design/icons-svg/es/asn/CaretUpOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar CaretUpOutlined = function CaretUpOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: CaretUpOutlinedSvg\n }));\n};\nCaretUpOutlined.displayName = 'CaretUpOutlined';\nexport default /*#__PURE__*/React.forwardRef(CaretUpOutlined);","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport CaretDownOutlined from \"@ant-design/icons/es/icons/CaretDownOutlined\";\nimport CaretUpOutlined from \"@ant-design/icons/es/icons/CaretUpOutlined\";\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport Tooltip from '../../tooltip';\nimport { getColumnKey, getColumnPos, renderColumnTitle, safeColumnTitle } from '../util';\nvar ASCEND = 'ascend';\nvar DESCEND = 'descend';\nfunction getMultiplePriority(column) {\n if (_typeof(column.sorter) === 'object' && typeof column.sorter.multiple === 'number') {\n return column.sorter.multiple;\n }\n return false;\n}\nfunction getSortFunction(sorter) {\n if (typeof sorter === 'function') {\n return sorter;\n }\n if (sorter && _typeof(sorter) === 'object' && sorter.compare) {\n return sorter.compare;\n }\n return false;\n}\nfunction nextSortDirection(sortDirections, current) {\n if (!current) {\n return sortDirections[0];\n }\n return sortDirections[sortDirections.indexOf(current) + 1];\n}\nfunction collectSortStates(columns, init, pos) {\n var sortStates = [];\n function pushState(column, columnPos) {\n sortStates.push({\n column: column,\n key: getColumnKey(column, columnPos),\n multiplePriority: getMultiplePriority(column),\n sortOrder: column.sortOrder\n });\n }\n (columns || []).forEach(function (column, index) {\n var columnPos = getColumnPos(index, pos);\n if (column.children) {\n if ('sortOrder' in column) {\n // Controlled\n pushState(column, columnPos);\n }\n sortStates = [].concat(_toConsumableArray(sortStates), _toConsumableArray(collectSortStates(column.children, init, columnPos)));\n } else if (column.sorter) {\n if ('sortOrder' in column) {\n // Controlled\n pushState(column, columnPos);\n } else if (init && column.defaultSortOrder) {\n // Default sorter\n sortStates.push({\n column: column,\n key: getColumnKey(column, columnPos),\n multiplePriority: getMultiplePriority(column),\n sortOrder: column.defaultSortOrder\n });\n }\n }\n });\n return sortStates;\n}\nfunction injectSorter(prefixCls, columns, sorterStates, triggerSorter, defaultSortDirections, tableLocale, tableShowSorterTooltip, pos) {\n return (columns || []).map(function (column, index) {\n var columnPos = getColumnPos(index, pos);\n var newColumn = column;\n if (newColumn.sorter) {\n var sortDirections = newColumn.sortDirections || defaultSortDirections;\n var showSorterTooltip = newColumn.showSorterTooltip === undefined ? tableShowSorterTooltip : newColumn.showSorterTooltip;\n var columnKey = getColumnKey(newColumn, columnPos);\n var sorterState = sorterStates.find(function (_ref) {\n var key = _ref.key;\n return key === columnKey;\n });\n var sorterOrder = sorterState ? sorterState.sortOrder : null;\n var nextSortOrder = nextSortDirection(sortDirections, sorterOrder);\n var upNode = sortDirections.includes(ASCEND) && /*#__PURE__*/React.createElement(CaretUpOutlined, {\n className: classNames(\"\".concat(prefixCls, \"-column-sorter-up\"), {\n active: sorterOrder === ASCEND\n }),\n role: \"presentation\"\n });\n var downNode = sortDirections.includes(DESCEND) && /*#__PURE__*/React.createElement(CaretDownOutlined, {\n className: classNames(\"\".concat(prefixCls, \"-column-sorter-down\"), {\n active: sorterOrder === DESCEND\n }),\n role: \"presentation\"\n });\n var _ref2 = tableLocale || {},\n cancelSort = _ref2.cancelSort,\n triggerAsc = _ref2.triggerAsc,\n triggerDesc = _ref2.triggerDesc;\n var sortTip = cancelSort;\n if (nextSortOrder === DESCEND) {\n sortTip = triggerDesc;\n } else if (nextSortOrder === ASCEND) {\n sortTip = triggerAsc;\n }\n var tooltipProps = _typeof(showSorterTooltip) === 'object' ? showSorterTooltip : {\n title: sortTip\n };\n newColumn = _extends(_extends({}, newColumn), {\n className: classNames(newColumn.className, _defineProperty({}, \"\".concat(prefixCls, \"-column-sort\"), sorterOrder)),\n title: function title(renderProps) {\n var renderSortTitle = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-column-sorters\")\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-column-title\")\n }, renderColumnTitle(column.title, renderProps)), /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-column-sorter\"), _defineProperty({}, \"\".concat(prefixCls, \"-column-sorter-full\"), !!(upNode && downNode)))\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-column-sorter-inner\")\n }, upNode, downNode)));\n return showSorterTooltip ? /*#__PURE__*/React.createElement(Tooltip, _extends({}, tooltipProps), renderSortTitle) : renderSortTitle;\n },\n onHeaderCell: function onHeaderCell(col) {\n var cell = column.onHeaderCell && column.onHeaderCell(col) || {};\n var originOnClick = cell.onClick;\n var originOKeyDown = cell.onKeyDown;\n cell.onClick = function (event) {\n triggerSorter({\n column: column,\n key: columnKey,\n sortOrder: nextSortOrder,\n multiplePriority: getMultiplePriority(column)\n });\n originOnClick === null || originOnClick === void 0 ? void 0 : originOnClick(event);\n };\n cell.onKeyDown = function (event) {\n if (event.keyCode === KeyCode.ENTER) {\n triggerSorter({\n column: column,\n key: columnKey,\n sortOrder: nextSortOrder,\n multiplePriority: getMultiplePriority(column)\n });\n originOKeyDown === null || originOKeyDown === void 0 ? void 0 : originOKeyDown(event);\n }\n };\n var renderTitle = safeColumnTitle(column.title, {});\n var displayTitle = renderTitle === null || renderTitle === void 0 ? void 0 : renderTitle.toString();\n // Inform the screen-reader so it can tell the visually impaired user which column is sorted\n if (sorterOrder) {\n cell['aria-sort'] = sorterOrder === 'ascend' ? 'ascending' : 'descending';\n } else {\n cell['aria-label'] = displayTitle || '';\n }\n cell.className = classNames(cell.className, \"\".concat(prefixCls, \"-column-has-sorters\"));\n cell.tabIndex = 0;\n if (column.ellipsis) {\n cell.title = (renderTitle !== null && renderTitle !== void 0 ? renderTitle : '').toString();\n }\n return cell;\n }\n });\n }\n if ('children' in newColumn) {\n newColumn = _extends(_extends({}, newColumn), {\n children: injectSorter(prefixCls, newColumn.children, sorterStates, triggerSorter, defaultSortDirections, tableLocale, tableShowSorterTooltip, columnPos)\n });\n }\n return newColumn;\n });\n}\nfunction stateToInfo(sorterStates) {\n var column = sorterStates.column,\n sortOrder = sorterStates.sortOrder;\n return {\n column: column,\n order: sortOrder,\n field: column.dataIndex,\n columnKey: column.key\n };\n}\nfunction generateSorterInfo(sorterStates) {\n var list = sorterStates.filter(function (_ref3) {\n var sortOrder = _ref3.sortOrder;\n return sortOrder;\n }).map(stateToInfo);\n // =========== Legacy compatible support ===========\n // https://github.com/ant-design/ant-design/pull/19226\n if (list.length === 0 && sorterStates.length) {\n return _extends(_extends({}, stateToInfo(sorterStates[sorterStates.length - 1])), {\n column: undefined\n });\n }\n if (list.length <= 1) {\n return list[0] || {};\n }\n return list;\n}\nexport function getSortData(data, sortStates, childrenColumnName) {\n var innerSorterStates = sortStates.slice().sort(function (a, b) {\n return b.multiplePriority - a.multiplePriority;\n });\n var cloneData = data.slice();\n var runningSorters = innerSorterStates.filter(function (_ref4) {\n var sorter = _ref4.column.sorter,\n sortOrder = _ref4.sortOrder;\n return getSortFunction(sorter) && sortOrder;\n });\n // Skip if no sorter needed\n if (!runningSorters.length) {\n return cloneData;\n }\n return cloneData.sort(function (record1, record2) {\n for (var i = 0; i < runningSorters.length; i += 1) {\n var sorterState = runningSorters[i];\n var sorter = sorterState.column.sorter,\n sortOrder = sorterState.sortOrder;\n var compareFn = getSortFunction(sorter);\n if (compareFn && sortOrder) {\n var compareResult = compareFn(record1, record2, sortOrder);\n if (compareResult !== 0) {\n return sortOrder === ASCEND ? compareResult : -compareResult;\n }\n }\n }\n return 0;\n }).map(function (record) {\n var subRecords = record[childrenColumnName];\n if (subRecords) {\n return _extends(_extends({}, record), _defineProperty({}, childrenColumnName, getSortData(subRecords, sortStates, childrenColumnName)));\n }\n return record;\n });\n}\nexport default function useFilterSorter(_ref5) {\n var prefixCls = _ref5.prefixCls,\n mergedColumns = _ref5.mergedColumns,\n onSorterChange = _ref5.onSorterChange,\n sortDirections = _ref5.sortDirections,\n tableLocale = _ref5.tableLocale,\n showSorterTooltip = _ref5.showSorterTooltip;\n var _React$useState = React.useState(collectSortStates(mergedColumns, true)),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n sortStates = _React$useState2[0],\n setSortStates = _React$useState2[1];\n var mergedSorterStates = React.useMemo(function () {\n var validate = true;\n var collectedStates = collectSortStates(mergedColumns, false);\n // Return if not controlled\n if (!collectedStates.length) {\n return sortStates;\n }\n var validateStates = [];\n function patchStates(state) {\n if (validate) {\n validateStates.push(state);\n } else {\n validateStates.push(_extends(_extends({}, state), {\n sortOrder: null\n }));\n }\n }\n var multipleMode = null;\n collectedStates.forEach(function (state) {\n if (multipleMode === null) {\n patchStates(state);\n if (state.sortOrder) {\n if (state.multiplePriority === false) {\n validate = false;\n } else {\n multipleMode = true;\n }\n }\n } else if (multipleMode && state.multiplePriority !== false) {\n patchStates(state);\n } else {\n validate = false;\n patchStates(state);\n }\n });\n return validateStates;\n }, [mergedColumns, sortStates]);\n // Get render columns title required props\n var columnTitleSorterProps = React.useMemo(function () {\n var sortColumns = mergedSorterStates.map(function (_ref6) {\n var column = _ref6.column,\n sortOrder = _ref6.sortOrder;\n return {\n column: column,\n order: sortOrder\n };\n });\n return {\n sortColumns: sortColumns,\n // Legacy\n sortColumn: sortColumns[0] && sortColumns[0].column,\n sortOrder: sortColumns[0] && sortColumns[0].order\n };\n }, [mergedSorterStates]);\n function triggerSorter(sortState) {\n var newSorterStates;\n if (sortState.multiplePriority === false || !mergedSorterStates.length || mergedSorterStates[0].multiplePriority === false) {\n newSorterStates = [sortState];\n } else {\n newSorterStates = [].concat(_toConsumableArray(mergedSorterStates.filter(function (_ref7) {\n var key = _ref7.key;\n return key !== sortState.key;\n })), [sortState]);\n }\n setSortStates(newSorterStates);\n onSorterChange(generateSorterInfo(newSorterStates), newSorterStates);\n }\n var transformColumns = function transformColumns(innerColumns) {\n return injectSorter(prefixCls, innerColumns, mergedSorterStates, triggerSorter, sortDirections, tableLocale, showSorterTooltip);\n };\n var getSorters = function getSorters() {\n return generateSorterInfo(mergedSorterStates);\n };\n return [transformColumns, mergedSorterStates, columnTitleSorterProps, getSorters];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { renderColumnTitle } from '../util';\nfunction fillTitle(columns, columnTitleProps) {\n return columns.map(function (column) {\n var cloneColumn = _extends({}, column);\n cloneColumn.title = renderColumnTitle(column.title, columnTitleProps);\n if ('children' in cloneColumn) {\n cloneColumn.children = fillTitle(cloneColumn.children, columnTitleProps);\n }\n return cloneColumn;\n });\n}\nexport default function useTitleColumns(columnTitleProps) {\n var filledColumns = React.useCallback(function (columns) {\n return fillTitle(columns, columnTitleProps);\n }, [columnTitleProps]);\n return [filledColumns];\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport RcTable, { Summary } from 'rc-table';\nimport { convertChildrenToColumns } from \"rc-table/es/hooks/useColumns\";\nimport { INTERNAL_HOOKS } from \"rc-table/es/Table\";\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider/context';\nimport defaultRenderEmpty from '../config-provider/defaultRenderEmpty';\nimport SizeContext from '../config-provider/SizeContext';\nimport useBreakpoint from '../grid/hooks/useBreakpoint';\nimport defaultLocale from '../locale/en_US';\nimport Pagination from '../pagination';\nimport Spin from '../spin';\nimport scrollTo from '../_util/scrollTo';\nimport warning from '../_util/warning';\nimport Column from './Column';\nimport ColumnGroup from './ColumnGroup';\nimport renderExpandIcon from './ExpandIcon';\nimport useFilter, { getFilterData } from './hooks/useFilter';\nimport useLazyKVMap from './hooks/useLazyKVMap';\nimport usePagination, { DEFAULT_PAGE_SIZE, getPaginationParam } from './hooks/usePagination';\nimport useSelection, { SELECTION_ALL, SELECTION_COLUMN, SELECTION_INVERT, SELECTION_NONE } from './hooks/useSelection';\nimport useSorter, { getSortData } from './hooks/useSorter';\nimport useTitleColumns from './hooks/useTitleColumns';\nvar EMPTY_LIST = [];\nfunction InternalTable(props, ref) {\n var _classNames3;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n customizeSize = props.size,\n bordered = props.bordered,\n customizeDropdownPrefixCls = props.dropdownPrefixCls,\n dataSource = props.dataSource,\n pagination = props.pagination,\n rowSelection = props.rowSelection,\n _props$rowKey = props.rowKey,\n rowKey = _props$rowKey === void 0 ? 'key' : _props$rowKey,\n rowClassName = props.rowClassName,\n columns = props.columns,\n children = props.children,\n legacyChildrenColumnName = props.childrenColumnName,\n onChange = props.onChange,\n getPopupContainer = props.getPopupContainer,\n loading = props.loading,\n expandIcon = props.expandIcon,\n expandable = props.expandable,\n expandedRowRender = props.expandedRowRender,\n expandIconColumnIndex = props.expandIconColumnIndex,\n indentSize = props.indentSize,\n scroll = props.scroll,\n sortDirections = props.sortDirections,\n locale = props.locale,\n _props$showSorterTool = props.showSorterTooltip,\n showSorterTooltip = _props$showSorterTool === void 0 ? true : _props$showSorterTool;\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof rowKey === 'function' && rowKey.length > 1), 'Table', '`index` parameter of `rowKey` function is deprecated. There is no guarantee that it will work as expected.') : void 0;\n [['filterDropdownVisible', 'filterDropdownOpen'], ['onFilterDropdownVisibleChange', 'onFilterDropdownOpenChange']].forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n deprecatedName = _ref2[0],\n newName = _ref2[1];\n process.env.NODE_ENV !== \"production\" ? warning(!(deprecatedName in props), 'Table', \"`\".concat(deprecatedName, \"` is deprecated which will be removed in next major version.Please use `\").concat(newName, \"` instead. \")) : void 0;\n });\n var baseColumns = React.useMemo(function () {\n return columns || convertChildrenToColumns(children);\n }, [columns, children]);\n var needResponsive = React.useMemo(function () {\n return baseColumns.some(function (col) {\n return col.responsive;\n });\n }, [baseColumns]);\n var screens = useBreakpoint(needResponsive);\n var mergedColumns = React.useMemo(function () {\n var matched = new Set(Object.keys(screens).filter(function (m) {\n return screens[m];\n }));\n return baseColumns.filter(function (c) {\n return !c.responsive || c.responsive.some(function (r) {\n return matched.has(r);\n });\n });\n }, [baseColumns, screens]);\n var tableProps = omit(props, ['className', 'style', 'columns']);\n var size = React.useContext(SizeContext);\n var _React$useContext = React.useContext(ConfigContext),\n _React$useContext$loc = _React$useContext.locale,\n contextLocale = _React$useContext$loc === void 0 ? defaultLocale : _React$useContext$loc,\n renderEmpty = _React$useContext.renderEmpty,\n direction = _React$useContext.direction;\n var mergedSize = customizeSize || size;\n var tableLocale = _extends(_extends({}, contextLocale.Table), locale);\n var rawData = dataSource || EMPTY_LIST;\n var _React$useContext2 = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext2.getPrefixCls;\n var prefixCls = getPrefixCls('table', customizePrefixCls);\n var dropdownPrefixCls = getPrefixCls('dropdown', customizeDropdownPrefixCls);\n var mergedExpandable = _extends({\n childrenColumnName: legacyChildrenColumnName,\n expandIconColumnIndex: expandIconColumnIndex\n }, expandable);\n var _mergedExpandable$chi = mergedExpandable.childrenColumnName,\n childrenColumnName = _mergedExpandable$chi === void 0 ? 'children' : _mergedExpandable$chi;\n var expandType = React.useMemo(function () {\n if (rawData.some(function (item) {\n return item === null || item === void 0 ? void 0 : item[childrenColumnName];\n })) {\n return 'nest';\n }\n if (expandedRowRender || expandable && expandable.expandedRowRender) {\n return 'row';\n }\n return null;\n }, [rawData]);\n var internalRefs = {\n body: React.useRef()\n };\n // ============================ RowKey ============================\n var getRowKey = React.useMemo(function () {\n if (typeof rowKey === 'function') {\n return rowKey;\n }\n return function (record) {\n return record === null || record === void 0 ? void 0 : record[rowKey];\n };\n }, [rowKey]);\n var _useLazyKVMap = useLazyKVMap(rawData, childrenColumnName, getRowKey),\n _useLazyKVMap2 = _slicedToArray(_useLazyKVMap, 1),\n getRecordByKey = _useLazyKVMap2[0];\n // ============================ Events =============================\n var changeEventInfo = {};\n var triggerOnChange = function triggerOnChange(info, action) {\n var reset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var changeInfo = _extends(_extends({}, changeEventInfo), info);\n if (reset) {\n changeEventInfo.resetPagination();\n // Reset event param\n if (changeInfo.pagination.current) {\n changeInfo.pagination.current = 1;\n }\n // Trigger pagination events\n if (pagination && pagination.onChange) {\n pagination.onChange(1, changeInfo.pagination.pageSize);\n }\n }\n if (scroll && scroll.scrollToFirstRowOnChange !== false && internalRefs.body.current) {\n scrollTo(0, {\n getContainer: function getContainer() {\n return internalRefs.body.current;\n }\n });\n }\n onChange === null || onChange === void 0 ? void 0 : onChange(changeInfo.pagination, changeInfo.filters, changeInfo.sorter, {\n currentDataSource: getFilterData(getSortData(rawData, changeInfo.sorterStates, childrenColumnName), changeInfo.filterStates),\n action: action\n });\n };\n /**\n * Controlled state in `columns` is not a good idea that makes too many code (1000+ line?) to read\n * state out and then put it back to title render. Move these code into `hooks` but still too\n * complex. We should provides Table props like `sorter` & `filter` to handle control in next big\n * version.\n */\n // ============================ Sorter =============================\n var onSorterChange = function onSorterChange(sorter, sorterStates) {\n triggerOnChange({\n sorter: sorter,\n sorterStates: sorterStates\n }, 'sort', false);\n };\n var _useSorter = useSorter({\n prefixCls: prefixCls,\n mergedColumns: mergedColumns,\n onSorterChange: onSorterChange,\n sortDirections: sortDirections || ['ascend', 'descend'],\n tableLocale: tableLocale,\n showSorterTooltip: showSorterTooltip\n }),\n _useSorter2 = _slicedToArray(_useSorter, 4),\n transformSorterColumns = _useSorter2[0],\n sortStates = _useSorter2[1],\n sorterTitleProps = _useSorter2[2],\n getSorters = _useSorter2[3];\n var sortedData = React.useMemo(function () {\n return getSortData(rawData, sortStates, childrenColumnName);\n }, [rawData, sortStates]);\n changeEventInfo.sorter = getSorters();\n changeEventInfo.sorterStates = sortStates;\n // ============================ Filter ============================\n var onFilterChange = function onFilterChange(filters, filterStates) {\n triggerOnChange({\n filters: filters,\n filterStates: filterStates\n }, 'filter', true);\n };\n var _useFilter = useFilter({\n prefixCls: prefixCls,\n locale: tableLocale,\n dropdownPrefixCls: dropdownPrefixCls,\n mergedColumns: mergedColumns,\n onFilterChange: onFilterChange,\n getPopupContainer: getPopupContainer\n }),\n _useFilter2 = _slicedToArray(_useFilter, 3),\n transformFilterColumns = _useFilter2[0],\n filterStates = _useFilter2[1],\n filters = _useFilter2[2];\n var mergedData = getFilterData(sortedData, filterStates);\n changeEventInfo.filters = filters;\n changeEventInfo.filterStates = filterStates;\n // ============================ Column ============================\n var columnTitleProps = React.useMemo(function () {\n var mergedFilters = {};\n Object.keys(filters).forEach(function (filterKey) {\n if (filters[filterKey] !== null) {\n mergedFilters[filterKey] = filters[filterKey];\n }\n });\n return _extends(_extends({}, sorterTitleProps), {\n filters: mergedFilters\n });\n }, [sorterTitleProps, filters]);\n var _useTitleColumns = useTitleColumns(columnTitleProps),\n _useTitleColumns2 = _slicedToArray(_useTitleColumns, 1),\n transformTitleColumns = _useTitleColumns2[0];\n // ========================== Pagination ==========================\n var onPaginationChange = function onPaginationChange(current, pageSize) {\n triggerOnChange({\n pagination: _extends(_extends({}, changeEventInfo.pagination), {\n current: current,\n pageSize: pageSize\n })\n }, 'paginate');\n };\n var _usePagination = usePagination(mergedData.length, pagination, onPaginationChange),\n _usePagination2 = _slicedToArray(_usePagination, 2),\n mergedPagination = _usePagination2[0],\n resetPagination = _usePagination2[1];\n changeEventInfo.pagination = pagination === false ? {} : getPaginationParam(pagination, mergedPagination);\n changeEventInfo.resetPagination = resetPagination;\n // ============================= Data =============================\n var pageData = React.useMemo(function () {\n if (pagination === false || !mergedPagination.pageSize) {\n return mergedData;\n }\n var _mergedPagination$cur = mergedPagination.current,\n current = _mergedPagination$cur === void 0 ? 1 : _mergedPagination$cur,\n total = mergedPagination.total,\n _mergedPagination$pag = mergedPagination.pageSize,\n pageSize = _mergedPagination$pag === void 0 ? DEFAULT_PAGE_SIZE : _mergedPagination$pag;\n process.env.NODE_ENV !== \"production\" ? warning(current > 0, 'Table', '`current` should be positive number.') : void 0;\n // Dynamic table data\n if (mergedData.length < total) {\n if (mergedData.length > pageSize) {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Table', '`dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode.') : void 0;\n return mergedData.slice((current - 1) * pageSize, current * pageSize);\n }\n return mergedData;\n }\n return mergedData.slice((current - 1) * pageSize, current * pageSize);\n }, [!!pagination, mergedData, mergedPagination && mergedPagination.current, mergedPagination && mergedPagination.pageSize, mergedPagination && mergedPagination.total]);\n // ========================== Selections ==========================\n var _useSelection = useSelection(rowSelection, {\n prefixCls: prefixCls,\n data: mergedData,\n pageData: pageData,\n getRowKey: getRowKey,\n getRecordByKey: getRecordByKey,\n expandType: expandType,\n childrenColumnName: childrenColumnName,\n locale: tableLocale,\n getPopupContainer: getPopupContainer\n }),\n _useSelection2 = _slicedToArray(_useSelection, 2),\n transformSelectionColumns = _useSelection2[0],\n selectedKeySet = _useSelection2[1];\n var internalRowClassName = function internalRowClassName(record, index, indent) {\n var mergedRowClassName;\n if (typeof rowClassName === 'function') {\n mergedRowClassName = classNames(rowClassName(record, index, indent));\n } else {\n mergedRowClassName = classNames(rowClassName);\n }\n return classNames(_defineProperty({}, \"\".concat(prefixCls, \"-row-selected\"), selectedKeySet.has(getRowKey(record, index))), mergedRowClassName);\n };\n // ========================== Expandable ==========================\n // Pass origin render status into `rc-table`, this can be removed when refactor with `rc-table`\n mergedExpandable.__PARENT_RENDER_ICON__ = mergedExpandable.expandIcon;\n // Customize expandable icon\n mergedExpandable.expandIcon = mergedExpandable.expandIcon || expandIcon || renderExpandIcon(tableLocale);\n // Adjust expand icon index, no overwrite expandIconColumnIndex if set.\n if (expandType === 'nest' && mergedExpandable.expandIconColumnIndex === undefined) {\n mergedExpandable.expandIconColumnIndex = rowSelection ? 1 : 0;\n } else if (mergedExpandable.expandIconColumnIndex > 0 && rowSelection) {\n mergedExpandable.expandIconColumnIndex -= 1;\n }\n // Indent size\n if (typeof mergedExpandable.indentSize !== 'number') {\n mergedExpandable.indentSize = typeof indentSize === 'number' ? indentSize : 15;\n }\n // ============================ Render ============================\n var transformColumns = React.useCallback(function (innerColumns) {\n return transformTitleColumns(transformSelectionColumns(transformFilterColumns(transformSorterColumns(innerColumns))));\n }, [transformSorterColumns, transformFilterColumns, transformSelectionColumns]);\n var topPaginationNode;\n var bottomPaginationNode;\n if (pagination !== false && (mergedPagination === null || mergedPagination === void 0 ? void 0 : mergedPagination.total)) {\n var paginationSize;\n if (mergedPagination.size) {\n paginationSize = mergedPagination.size;\n } else {\n paginationSize = mergedSize === 'small' || mergedSize === 'middle' ? 'small' : undefined;\n }\n var renderPagination = function renderPagination(position) {\n return /*#__PURE__*/React.createElement(Pagination, _extends({}, mergedPagination, {\n className: classNames(\"\".concat(prefixCls, \"-pagination \").concat(prefixCls, \"-pagination-\").concat(position), mergedPagination.className),\n size: paginationSize\n }));\n };\n var defaultPosition = direction === 'rtl' ? 'left' : 'right';\n var position = mergedPagination.position;\n if (position !== null && Array.isArray(position)) {\n var topPos = position.find(function (p) {\n return p.includes('top');\n });\n var bottomPos = position.find(function (p) {\n return p.includes('bottom');\n });\n var isDisable = position.every(function (p) {\n return \"\".concat(p) === 'none';\n });\n if (!topPos && !bottomPos && !isDisable) {\n bottomPaginationNode = renderPagination(defaultPosition);\n }\n if (topPos) {\n topPaginationNode = renderPagination(topPos.toLowerCase().replace('top', ''));\n }\n if (bottomPos) {\n bottomPaginationNode = renderPagination(bottomPos.toLowerCase().replace('bottom', ''));\n }\n } else {\n bottomPaginationNode = renderPagination(defaultPosition);\n }\n }\n // >>>>>>>>> Spinning\n var spinProps;\n if (typeof loading === 'boolean') {\n spinProps = {\n spinning: loading\n };\n } else if (_typeof(loading) === 'object') {\n spinProps = _extends({\n spinning: true\n }, loading);\n }\n var wrapperClassNames = classNames(\"\".concat(prefixCls, \"-wrapper\"), _defineProperty({}, \"\".concat(prefixCls, \"-wrapper-rtl\"), direction === 'rtl'), className);\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n className: wrapperClassNames,\n style: style\n }, /*#__PURE__*/React.createElement(Spin, _extends({\n spinning: false\n }, spinProps), topPaginationNode, /*#__PURE__*/React.createElement(RcTable, _extends({}, tableProps, {\n columns: mergedColumns,\n direction: direction,\n expandable: mergedExpandable,\n prefixCls: prefixCls,\n className: classNames((_classNames3 = {}, _defineProperty(_classNames3, \"\".concat(prefixCls, \"-middle\"), mergedSize === 'middle'), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-small\"), mergedSize === 'small'), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-bordered\"), bordered), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-empty\"), rawData.length === 0), _classNames3)),\n data: pageData,\n rowKey: getRowKey,\n rowClassName: internalRowClassName,\n emptyText: locale && locale.emptyText || (renderEmpty || defaultRenderEmpty)('Table'),\n // Internal\n internalHooks: INTERNAL_HOOKS,\n internalRefs: internalRefs,\n transformColumns: transformColumns\n })), bottomPaginationNode));\n}\nvar ForwardTable = /*#__PURE__*/React.forwardRef(InternalTable);\nvar Table = ForwardTable;\nTable.SELECTION_COLUMN = SELECTION_COLUMN;\nTable.EXPAND_COLUMN = RcTable.EXPAND_COLUMN;\nTable.SELECTION_ALL = SELECTION_ALL;\nTable.SELECTION_INVERT = SELECTION_INVERT;\nTable.SELECTION_NONE = SELECTION_NONE;\nTable.Column = Column;\nTable.ColumnGroup = ColumnGroup;\nTable.Summary = Summary;\nexport default Table;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nexport default function useLazyKVMap(data, childrenColumnName, getRowKey) {\n var mapCacheRef = React.useRef({});\n function getRecordByKey(key) {\n if (!mapCacheRef.current || mapCacheRef.current.data !== data || mapCacheRef.current.childrenColumnName !== childrenColumnName || mapCacheRef.current.getRowKey !== getRowKey) {\n var kvMap = new Map();\n /* eslint-disable no-inner-declarations */\n function dig(records) {\n records.forEach(function (record, index) {\n var rowKey = getRowKey(record, index);\n kvMap.set(rowKey, record);\n if (record && _typeof(record) === 'object' && childrenColumnName in record) {\n dig(record[childrenColumnName] || []);\n }\n });\n }\n /* eslint-enable */\n dig(data);\n mapCacheRef.current = {\n data: data,\n childrenColumnName: childrenColumnName,\n kvMap: kvMap,\n getRowKey: getRowKey\n };\n }\n return mapCacheRef.current.kvMap.get(key);\n }\n return [getRecordByKey];\n}","import Table from './Table';\nexport default Table;","import { createContext } from 'react';\nexport default /*#__PURE__*/createContext(null);","import * as React from 'react';\nimport classNames from 'classnames';\nvar TabPane = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var prefixCls = _ref.prefixCls,\n className = _ref.className,\n style = _ref.style,\n id = _ref.id,\n active = _ref.active,\n tabKey = _ref.tabKey,\n children = _ref.children;\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id && \"\".concat(id, \"-panel-\").concat(tabKey),\n role: \"tabpanel\",\n tabIndex: active ? 0 : -1,\n \"aria-labelledby\": id && \"\".concat(id, \"-tab-\").concat(tabKey),\n \"aria-hidden\": !active,\n style: style,\n className: classNames(prefixCls, active && \"\".concat(prefixCls, \"-active\"), className),\n ref: ref\n }, children);\n});\nif (process.env.NODE_ENV !== 'production') {\n TabPane.displayName = 'TabPane';\n}\nexport default TabPane;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"key\", \"forceRender\", \"style\", \"className\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport TabContext from \"../TabContext\";\nimport TabPane from \"./TabPane\";\nexport default function TabPanelList(_ref) {\n var id = _ref.id,\n activeKey = _ref.activeKey,\n animated = _ref.animated,\n tabPosition = _ref.tabPosition,\n destroyInactiveTabPane = _ref.destroyInactiveTabPane;\n var _React$useContext = React.useContext(TabContext),\n prefixCls = _React$useContext.prefixCls,\n tabs = _React$useContext.tabs;\n var tabPaneAnimated = animated.tabPane;\n var tabPanePrefixCls = \"\".concat(prefixCls, \"-tabpane\");\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content-holder\"))\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content\"), \"\".concat(prefixCls, \"-content-\").concat(tabPosition), _defineProperty({}, \"\".concat(prefixCls, \"-content-animated\"), tabPaneAnimated))\n }, tabs.map(function (_ref2) {\n var key = _ref2.key,\n forceRender = _ref2.forceRender,\n paneStyle = _ref2.style,\n paneClassName = _ref2.className,\n restTabProps = _objectWithoutProperties(_ref2, _excluded);\n var active = key === activeKey;\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n key: key,\n visible: active,\n forceRender: forceRender,\n removeOnLeave: !!destroyInactiveTabPane,\n leavedClassName: \"\".concat(tabPanePrefixCls, \"-hidden\")\n }, animated.tabPaneMotion), function (_ref3, ref) {\n var motionStyle = _ref3.style,\n motionClassName = _ref3.className;\n return /*#__PURE__*/React.createElement(TabPane, _extends({}, restTabProps, {\n prefixCls: tabPanePrefixCls,\n id: id,\n tabKey: key,\n animated: tabPaneAnimated,\n active: active,\n style: _objectSpread(_objectSpread({}, paneStyle), motionStyle),\n className: classNames(paneClassName, motionClassName),\n ref: ref\n }));\n });\n })));\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { useMemo } from 'react';\nvar DEFAULT_SIZE = {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n};\nexport default function useOffsets(tabs, tabSizes, holderScrollWidth) {\n return useMemo(function () {\n var _tabs$;\n var map = new Map();\n var lastOffset = tabSizes.get((_tabs$ = tabs[0]) === null || _tabs$ === void 0 ? void 0 : _tabs$.key) || DEFAULT_SIZE;\n var rightOffset = lastOffset.left + lastOffset.width;\n for (var i = 0; i < tabs.length; i += 1) {\n var key = tabs[i].key;\n var data = tabSizes.get(key);\n\n // Reuse last one when not exist yet\n if (!data) {\n var _tabs;\n data = tabSizes.get((_tabs = tabs[i - 1]) === null || _tabs === void 0 ? void 0 : _tabs.key) || DEFAULT_SIZE;\n }\n var entity = map.get(key) || _objectSpread({}, data);\n\n // Right\n entity.right = rightOffset - entity.left - entity.width;\n\n // Update entity\n map.set(key, entity);\n }\n return map;\n }, [tabs.map(function (tab) {\n return tab.key;\n }).join('_'), tabSizes, holderScrollWidth]);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default function useSyncState(defaultState, onChange) {\n var stateRef = React.useRef(defaultState);\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n forceUpdate = _React$useState2[1];\n function setState(updater) {\n var newValue = typeof updater === 'function' ? updater(stateRef.current) : updater;\n if (newValue !== stateRef.current) {\n onChange(newValue, stateRef.current);\n }\n stateRef.current = newValue;\n forceUpdate({});\n }\n return [stateRef.current, setState];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useState, useRef } from 'react';\nvar MIN_SWIPE_DISTANCE = 0.1;\nvar STOP_SWIPE_DISTANCE = 0.01;\nvar REFRESH_INTERVAL = 20;\nvar SPEED_OFF_MULTIPLE = Math.pow(0.995, REFRESH_INTERVAL);\n\n// ================================= Hook =================================\nexport default function useTouchMove(ref, onOffset) {\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n touchPosition = _useState2[0],\n setTouchPosition = _useState2[1];\n var _useState3 = useState(0),\n _useState4 = _slicedToArray(_useState3, 2),\n lastTimestamp = _useState4[0],\n setLastTimestamp = _useState4[1];\n var _useState5 = useState(0),\n _useState6 = _slicedToArray(_useState5, 2),\n lastTimeDiff = _useState6[0],\n setLastTimeDiff = _useState6[1];\n var _useState7 = useState(),\n _useState8 = _slicedToArray(_useState7, 2),\n lastOffset = _useState8[0],\n setLastOffset = _useState8[1];\n var motionRef = useRef();\n\n // ========================= Events =========================\n // >>> Touch events\n function onTouchStart(e) {\n var _e$touches$ = e.touches[0],\n screenX = _e$touches$.screenX,\n screenY = _e$touches$.screenY;\n setTouchPosition({\n x: screenX,\n y: screenY\n });\n window.clearInterval(motionRef.current);\n }\n function onTouchMove(e) {\n if (!touchPosition) return;\n e.preventDefault();\n var _e$touches$2 = e.touches[0],\n screenX = _e$touches$2.screenX,\n screenY = _e$touches$2.screenY;\n setTouchPosition({\n x: screenX,\n y: screenY\n });\n var offsetX = screenX - touchPosition.x;\n var offsetY = screenY - touchPosition.y;\n onOffset(offsetX, offsetY);\n var now = Date.now();\n setLastTimestamp(now);\n setLastTimeDiff(now - lastTimestamp);\n setLastOffset({\n x: offsetX,\n y: offsetY\n });\n }\n function onTouchEnd() {\n if (!touchPosition) return;\n setTouchPosition(null);\n setLastOffset(null);\n\n // Swipe if needed\n if (lastOffset) {\n var distanceX = lastOffset.x / lastTimeDiff;\n var distanceY = lastOffset.y / lastTimeDiff;\n var absX = Math.abs(distanceX);\n var absY = Math.abs(distanceY);\n\n // Skip swipe if low distance\n if (Math.max(absX, absY) < MIN_SWIPE_DISTANCE) return;\n var currentX = distanceX;\n var currentY = distanceY;\n motionRef.current = window.setInterval(function () {\n if (Math.abs(currentX) < STOP_SWIPE_DISTANCE && Math.abs(currentY) < STOP_SWIPE_DISTANCE) {\n window.clearInterval(motionRef.current);\n return;\n }\n currentX *= SPEED_OFF_MULTIPLE;\n currentY *= SPEED_OFF_MULTIPLE;\n onOffset(currentX * REFRESH_INTERVAL, currentY * REFRESH_INTERVAL);\n }, REFRESH_INTERVAL);\n }\n }\n\n // >>> Wheel event\n var lastWheelDirectionRef = useRef();\n function onWheel(e) {\n var deltaX = e.deltaX,\n deltaY = e.deltaY;\n\n // Convert both to x & y since wheel only happened on PC\n var mixed = 0;\n var absX = Math.abs(deltaX);\n var absY = Math.abs(deltaY);\n if (absX === absY) {\n mixed = lastWheelDirectionRef.current === 'x' ? deltaX : deltaY;\n } else if (absX > absY) {\n mixed = deltaX;\n lastWheelDirectionRef.current = 'x';\n } else {\n mixed = deltaY;\n lastWheelDirectionRef.current = 'y';\n }\n if (onOffset(-mixed, -mixed)) {\n e.preventDefault();\n }\n }\n\n // ========================= Effect =========================\n var touchEventsRef = useRef(null);\n touchEventsRef.current = {\n onTouchStart: onTouchStart,\n onTouchMove: onTouchMove,\n onTouchEnd: onTouchEnd,\n onWheel: onWheel\n };\n React.useEffect(function () {\n function onProxyTouchStart(e) {\n touchEventsRef.current.onTouchStart(e);\n }\n function onProxyTouchMove(e) {\n touchEventsRef.current.onTouchMove(e);\n }\n function onProxyTouchEnd(e) {\n touchEventsRef.current.onTouchEnd(e);\n }\n function onProxyWheel(e) {\n touchEventsRef.current.onWheel(e);\n }\n document.addEventListener('touchmove', onProxyTouchMove, {\n passive: false\n });\n document.addEventListener('touchend', onProxyTouchEnd, {\n passive: false\n });\n\n // No need to clean up since element removed\n ref.current.addEventListener('touchstart', onProxyTouchStart, {\n passive: false\n });\n ref.current.addEventListener('wheel', onProxyWheel);\n return function () {\n document.removeEventListener('touchmove', onProxyTouchMove);\n document.removeEventListener('touchend', onProxyTouchEnd);\n };\n }, []);\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useLayoutUpdateEffect } from \"rc-util/es/hooks/useLayoutEffect\";\nimport { useRef, useState } from 'react';\n\n/**\n * Help to merge callback with `useLayoutEffect`.\n * One time will only trigger once.\n */\nexport default function useUpdate(callback) {\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n count = _useState2[0],\n setCount = _useState2[1];\n var effectRef = useRef(0);\n var callbackRef = useRef();\n callbackRef.current = callback;\n\n // Trigger on `useLayoutEffect`\n useLayoutUpdateEffect(function () {\n var _callbackRef$current;\n (_callbackRef$current = callbackRef.current) === null || _callbackRef$current === void 0 ? void 0 : _callbackRef$current.call(callbackRef);\n }, [count]);\n\n // Trigger to update count\n return function () {\n if (effectRef.current !== count) {\n return;\n }\n effectRef.current += 1;\n setCount(effectRef.current);\n };\n}\nexport function useUpdateState(defaultState) {\n var batchRef = useRef([]);\n var _useState3 = useState({}),\n _useState4 = _slicedToArray(_useState3, 2),\n forceUpdate = _useState4[1];\n var state = useRef(typeof defaultState === 'function' ? defaultState() : defaultState);\n var flushUpdate = useUpdate(function () {\n var current = state.current;\n batchRef.current.forEach(function (callback) {\n current = callback(current);\n });\n batchRef.current = [];\n state.current = current;\n forceUpdate({});\n });\n function updater(callback) {\n batchRef.current.push(callback);\n flushUpdate();\n }\n return [state.current, updater];\n}","import { useMemo } from 'react';\nvar DEFAULT_SIZE = {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0\n};\nexport default function useVisibleRange(tabOffsets, visibleTabContentValue, transform, tabContentSizeValue, addNodeSizeValue, operationNodeSizeValue, _ref) {\n var tabs = _ref.tabs,\n tabPosition = _ref.tabPosition,\n rtl = _ref.rtl;\n var charUnit;\n var position;\n var transformSize;\n if (['top', 'bottom'].includes(tabPosition)) {\n charUnit = 'width';\n position = rtl ? 'right' : 'left';\n transformSize = Math.abs(transform);\n } else {\n charUnit = 'height';\n position = 'top';\n transformSize = -transform;\n }\n return useMemo(function () {\n if (!tabs.length) {\n return [0, 0];\n }\n var len = tabs.length;\n var endIndex = len;\n for (var i = 0; i < len; i += 1) {\n var offset = tabOffsets.get(tabs[i].key) || DEFAULT_SIZE;\n if (offset[position] + offset[charUnit] > transformSize + visibleTabContentValue) {\n endIndex = i - 1;\n break;\n }\n }\n var startIndex = 0;\n for (var _i = len - 1; _i >= 0; _i -= 1) {\n var _offset = tabOffsets.get(tabs[_i].key) || DEFAULT_SIZE;\n if (_offset[position] < transformSize) {\n startIndex = _i + 1;\n break;\n }\n }\n return [startIndex, endIndex];\n }, [tabOffsets, visibleTabContentValue, tabContentSizeValue, addNodeSizeValue, operationNodeSizeValue, transformSize, tabPosition, tabs.map(function (tab) {\n return tab.key;\n }).join('_'), rtl]);\n}","/**\n * We trade Map as deps which may change with same value but different ref object.\n * We should make it as hash for deps\n * */\nexport function stringify(obj) {\n var tgt;\n if (obj instanceof Map) {\n tgt = {};\n obj.forEach(function (v, k) {\n tgt[k] = v;\n });\n } else {\n tgt = obj;\n }\n return JSON.stringify(tgt);\n}\nvar RC_TABS_DOUBLE_QUOTE = 'TABS_DQ';\nexport function genDataNodeKey(key) {\n return String(key).replace(/\"/g, RC_TABS_DOUBLE_QUOTE);\n}","import * as React from 'react';\nfunction AddButton(_ref, ref) {\n var prefixCls = _ref.prefixCls,\n editable = _ref.editable,\n locale = _ref.locale,\n style = _ref.style;\n if (!editable || editable.showAdd === false) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"button\", {\n ref: ref,\n type: \"button\",\n className: \"\".concat(prefixCls, \"-nav-add\"),\n style: style,\n \"aria-label\": (locale === null || locale === void 0 ? void 0 : locale.addAriaLabel) || 'Add tab',\n onClick: function onClick(event) {\n editable.onEdit('add', {\n event: event\n });\n }\n }, editable.addIcon || '+');\n}\nexport default /*#__PURE__*/React.forwardRef(AddButton);","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nvar ExtraContent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var position = _ref.position,\n prefixCls = _ref.prefixCls,\n extra = _ref.extra;\n if (!extra) return null;\n var content;\n\n // Parse extra\n var assertExtra = {};\n if (_typeof(extra) === 'object' && ! /*#__PURE__*/React.isValidElement(extra)) {\n assertExtra = extra;\n } else {\n assertExtra.right = extra;\n }\n if (position === 'right') {\n content = assertExtra.right;\n }\n if (position === 'left') {\n content = assertExtra.left;\n }\n return content ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-extra-content\"),\n ref: ref\n }, content) : null;\n});\nif (process.env.NODE_ENV !== 'production') {\n ExtraContent.displayName = 'ExtraContent';\n}\nexport default ExtraContent;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport Dropdown from 'rc-dropdown';\nimport Menu, { MenuItem } from 'rc-menu';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport AddButton from \"./AddButton\";\nfunction OperationNode(_ref, ref) {\n var prefixCls = _ref.prefixCls,\n id = _ref.id,\n tabs = _ref.tabs,\n locale = _ref.locale,\n mobile = _ref.mobile,\n _ref$moreIcon = _ref.moreIcon,\n moreIcon = _ref$moreIcon === void 0 ? 'More' : _ref$moreIcon,\n moreTransitionName = _ref.moreTransitionName,\n style = _ref.style,\n className = _ref.className,\n editable = _ref.editable,\n tabBarGutter = _ref.tabBarGutter,\n rtl = _ref.rtl,\n removeAriaLabel = _ref.removeAriaLabel,\n onTabClick = _ref.onTabClick,\n getPopupContainer = _ref.getPopupContainer,\n popupClassName = _ref.popupClassName;\n // ======================== Dropdown ========================\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n open = _useState2[0],\n setOpen = _useState2[1];\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n selectedKey = _useState4[0],\n setSelectedKey = _useState4[1];\n var popupId = \"\".concat(id, \"-more-popup\");\n var dropdownPrefix = \"\".concat(prefixCls, \"-dropdown\");\n var selectedItemId = selectedKey !== null ? \"\".concat(popupId, \"-\").concat(selectedKey) : null;\n var dropdownAriaLabel = locale === null || locale === void 0 ? void 0 : locale.dropdownAriaLabel;\n function onRemoveTab(event, key) {\n event.preventDefault();\n event.stopPropagation();\n editable.onEdit('remove', {\n key: key,\n event: event\n });\n }\n var menu = /*#__PURE__*/React.createElement(Menu, {\n onClick: function onClick(_ref2) {\n var key = _ref2.key,\n domEvent = _ref2.domEvent;\n onTabClick(key, domEvent);\n setOpen(false);\n },\n prefixCls: \"\".concat(dropdownPrefix, \"-menu\"),\n id: popupId,\n tabIndex: -1,\n role: \"listbox\",\n \"aria-activedescendant\": selectedItemId,\n selectedKeys: [selectedKey],\n \"aria-label\": dropdownAriaLabel !== undefined ? dropdownAriaLabel : 'expanded dropdown'\n }, tabs.map(function (tab) {\n var removable = editable && tab.closable !== false && !tab.disabled;\n return /*#__PURE__*/React.createElement(MenuItem, {\n key: tab.key,\n id: \"\".concat(popupId, \"-\").concat(tab.key),\n role: \"option\",\n \"aria-controls\": id && \"\".concat(id, \"-panel-\").concat(tab.key),\n disabled: tab.disabled\n }, /*#__PURE__*/React.createElement(\"span\", null, tab.label), removable && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": removeAriaLabel || 'remove',\n tabIndex: 0,\n className: \"\".concat(dropdownPrefix, \"-menu-item-remove\"),\n onClick: function onClick(e) {\n e.stopPropagation();\n onRemoveTab(e, tab.key);\n }\n }, tab.closeIcon || editable.removeIcon || '×'));\n }));\n function selectOffset(offset) {\n var enabledTabs = tabs.filter(function (tab) {\n return !tab.disabled;\n });\n var selectedIndex = enabledTabs.findIndex(function (tab) {\n return tab.key === selectedKey;\n }) || 0;\n var len = enabledTabs.length;\n for (var i = 0; i < len; i += 1) {\n selectedIndex = (selectedIndex + offset + len) % len;\n var tab = enabledTabs[selectedIndex];\n if (!tab.disabled) {\n setSelectedKey(tab.key);\n return;\n }\n }\n }\n function onKeyDown(e) {\n var which = e.which;\n if (!open) {\n if ([KeyCode.DOWN, KeyCode.SPACE, KeyCode.ENTER].includes(which)) {\n setOpen(true);\n e.preventDefault();\n }\n return;\n }\n switch (which) {\n case KeyCode.UP:\n selectOffset(-1);\n e.preventDefault();\n break;\n case KeyCode.DOWN:\n selectOffset(1);\n e.preventDefault();\n break;\n case KeyCode.ESC:\n setOpen(false);\n break;\n case KeyCode.SPACE:\n case KeyCode.ENTER:\n if (selectedKey !== null) onTabClick(selectedKey, e);\n break;\n }\n }\n\n // ========================= Effect =========================\n useEffect(function () {\n // We use query element here to avoid React strict warning\n var ele = document.getElementById(selectedItemId);\n if (ele && ele.scrollIntoView) {\n ele.scrollIntoView(false);\n }\n }, [selectedKey]);\n useEffect(function () {\n if (!open) {\n setSelectedKey(null);\n }\n }, [open]);\n\n // ========================= Render =========================\n var moreStyle = _defineProperty({}, rtl ? 'marginRight' : 'marginLeft', tabBarGutter);\n if (!tabs.length) {\n moreStyle.visibility = 'hidden';\n moreStyle.order = 1;\n }\n var overlayClassName = classNames(_defineProperty({}, \"\".concat(dropdownPrefix, \"-rtl\"), rtl));\n var moreNode = mobile ? null : /*#__PURE__*/React.createElement(Dropdown, {\n prefixCls: dropdownPrefix,\n overlay: menu,\n trigger: ['hover'],\n visible: tabs.length ? open : false,\n transitionName: moreTransitionName,\n onVisibleChange: setOpen,\n overlayClassName: classNames(overlayClassName, popupClassName),\n mouseEnterDelay: 0.1,\n mouseLeaveDelay: 0.1,\n getPopupContainer: getPopupContainer\n }, /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n className: \"\".concat(prefixCls, \"-nav-more\"),\n style: moreStyle,\n tabIndex: -1,\n \"aria-hidden\": \"true\",\n \"aria-haspopup\": \"listbox\",\n \"aria-controls\": popupId,\n id: \"\".concat(id, \"-more\"),\n \"aria-expanded\": open,\n onKeyDown: onKeyDown\n }, moreIcon));\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-nav-operations\"), className),\n style: style,\n ref: ref\n }, moreNode, /*#__PURE__*/React.createElement(AddButton, {\n prefixCls: prefixCls,\n locale: locale,\n editable: editable\n }));\n}\nexport default /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(OperationNode), function (_, next) {\n return (\n // https://github.com/ant-design/ant-design/issues/32544\n // We'd better remove syntactic sugar in `rc-menu` since this has perf issue\n next.tabMoving\n );\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport { genDataNodeKey } from \"../util\";\nfunction TabNode(_ref) {\n var _classNames;\n var prefixCls = _ref.prefixCls,\n id = _ref.id,\n active = _ref.active,\n _ref$tab = _ref.tab,\n key = _ref$tab.key,\n label = _ref$tab.label,\n disabled = _ref$tab.disabled,\n closeIcon = _ref$tab.closeIcon,\n closable = _ref.closable,\n renderWrapper = _ref.renderWrapper,\n removeAriaLabel = _ref.removeAriaLabel,\n editable = _ref.editable,\n onClick = _ref.onClick,\n onFocus = _ref.onFocus,\n style = _ref.style;\n var tabPrefix = \"\".concat(prefixCls, \"-tab\");\n var removable = editable && closable !== false && !disabled;\n function onInternalClick(e) {\n if (disabled) {\n return;\n }\n onClick(e);\n }\n function onRemoveTab(event) {\n event.preventDefault();\n event.stopPropagation();\n editable.onEdit('remove', {\n key: key,\n event: event\n });\n }\n var node = /*#__PURE__*/React.createElement(\"div\", {\n key: key\n // ref={ref}\n ,\n \"data-node-key\": genDataNodeKey(key),\n className: classNames(tabPrefix, (_classNames = {}, _defineProperty(_classNames, \"\".concat(tabPrefix, \"-with-remove\"), removable), _defineProperty(_classNames, \"\".concat(tabPrefix, \"-active\"), active), _defineProperty(_classNames, \"\".concat(tabPrefix, \"-disabled\"), disabled), _classNames)),\n style: style,\n onClick: onInternalClick\n }, /*#__PURE__*/React.createElement(\"div\", {\n role: \"tab\",\n \"aria-selected\": active,\n id: id && \"\".concat(id, \"-tab-\").concat(key),\n className: \"\".concat(tabPrefix, \"-btn\"),\n \"aria-controls\": id && \"\".concat(id, \"-panel-\").concat(key),\n \"aria-disabled\": disabled,\n tabIndex: disabled ? null : 0,\n onClick: function onClick(e) {\n e.stopPropagation();\n onInternalClick(e);\n },\n onKeyDown: function onKeyDown(e) {\n if ([KeyCode.SPACE, KeyCode.ENTER].includes(e.which)) {\n e.preventDefault();\n onInternalClick(e);\n }\n },\n onFocus: onFocus\n }, label), removable && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n \"aria-label\": removeAriaLabel || 'remove',\n tabIndex: 0,\n className: \"\".concat(tabPrefix, \"-remove\"),\n onClick: function onClick(e) {\n e.stopPropagation();\n onRemoveTab(e);\n }\n }, closeIcon || editable.removeIcon || '×'));\n return renderWrapper ? renderWrapper(node) : node;\n}\nexport default TabNode;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport raf from \"rc-util/es/raf\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport useOffsets from \"../hooks/useOffsets\";\nimport useSyncState from \"../hooks/useSyncState\";\nimport useTouchMove from \"../hooks/useTouchMove\";\nimport useUpdate, { useUpdateState } from \"../hooks/useUpdate\";\nimport useVisibleRange from \"../hooks/useVisibleRange\";\nimport TabContext from \"../TabContext\";\nimport { genDataNodeKey, stringify } from \"../util\";\nimport AddButton from \"./AddButton\";\nimport ExtraContent from \"./ExtraContent\";\nimport OperationNode from \"./OperationNode\";\nimport TabNode from \"./TabNode\";\nvar getSize = function getSize(refObj) {\n var _ref = refObj.current || {},\n _ref$offsetWidth = _ref.offsetWidth,\n offsetWidth = _ref$offsetWidth === void 0 ? 0 : _ref$offsetWidth,\n _ref$offsetHeight = _ref.offsetHeight,\n offsetHeight = _ref$offsetHeight === void 0 ? 0 : _ref$offsetHeight;\n return [offsetWidth, offsetHeight];\n};\n\n/**\n * Convert `SizeInfo` to unit value. Such as [123, 456] with `top` position get `123`\n */\nvar getUnitValue = function getUnitValue(size, tabPositionTopOrBottom) {\n return size[tabPositionTopOrBottom ? 0 : 1];\n};\nfunction TabNavList(props, ref) {\n var _classNames;\n var _React$useContext = React.useContext(TabContext),\n prefixCls = _React$useContext.prefixCls,\n tabs = _React$useContext.tabs;\n var className = props.className,\n style = props.style,\n id = props.id,\n animated = props.animated,\n activeKey = props.activeKey,\n rtl = props.rtl,\n extra = props.extra,\n editable = props.editable,\n locale = props.locale,\n tabPosition = props.tabPosition,\n tabBarGutter = props.tabBarGutter,\n children = props.children,\n onTabClick = props.onTabClick,\n onTabScroll = props.onTabScroll;\n var containerRef = useRef();\n var extraLeftRef = useRef();\n var extraRightRef = useRef();\n var tabsWrapperRef = useRef();\n var tabListRef = useRef();\n var operationsRef = useRef();\n var innerAddButtonRef = useRef();\n // const [getBtnRef, removeBtnRef] = useRefs<HTMLDivElement>();\n\n var tabPositionTopOrBottom = tabPosition === 'top' || tabPosition === 'bottom';\n var _useSyncState = useSyncState(0, function (next, prev) {\n if (tabPositionTopOrBottom && onTabScroll) {\n onTabScroll({\n direction: next > prev ? 'left' : 'right'\n });\n }\n }),\n _useSyncState2 = _slicedToArray(_useSyncState, 2),\n transformLeft = _useSyncState2[0],\n setTransformLeft = _useSyncState2[1];\n var _useSyncState3 = useSyncState(0, function (next, prev) {\n if (!tabPositionTopOrBottom && onTabScroll) {\n onTabScroll({\n direction: next > prev ? 'top' : 'bottom'\n });\n }\n }),\n _useSyncState4 = _slicedToArray(_useSyncState3, 2),\n transformTop = _useSyncState4[0],\n setTransformTop = _useSyncState4[1];\n var _useState = useState([0, 0]),\n _useState2 = _slicedToArray(_useState, 2),\n containerExcludeExtraSize = _useState2[0],\n setContainerExcludeExtraSize = _useState2[1];\n var _useState3 = useState([0, 0]),\n _useState4 = _slicedToArray(_useState3, 2),\n tabContentSize = _useState4[0],\n setTabContentSize = _useState4[1];\n var _useState5 = useState([0, 0]),\n _useState6 = _slicedToArray(_useState5, 2),\n addSize = _useState6[0],\n setAddSize = _useState6[1];\n var _useState7 = useState([0, 0]),\n _useState8 = _slicedToArray(_useState7, 2),\n operationSize = _useState8[0],\n setOperationSize = _useState8[1];\n var _useUpdateState = useUpdateState(new Map()),\n _useUpdateState2 = _slicedToArray(_useUpdateState, 2),\n tabSizes = _useUpdateState2[0],\n setTabSizes = _useUpdateState2[1];\n var tabOffsets = useOffsets(tabs, tabSizes, tabContentSize[0]);\n\n // ========================== Unit =========================\n var containerExcludeExtraSizeValue = getUnitValue(containerExcludeExtraSize, tabPositionTopOrBottom);\n var tabContentSizeValue = getUnitValue(tabContentSize, tabPositionTopOrBottom);\n var addSizeValue = getUnitValue(addSize, tabPositionTopOrBottom);\n var operationSizeValue = getUnitValue(operationSize, tabPositionTopOrBottom);\n var needScroll = containerExcludeExtraSizeValue < tabContentSizeValue + addSizeValue;\n var visibleTabContentValue = needScroll ? containerExcludeExtraSizeValue - operationSizeValue : containerExcludeExtraSizeValue - addSizeValue;\n\n // ========================== Util =========================\n var operationsHiddenClassName = \"\".concat(prefixCls, \"-nav-operations-hidden\");\n var transformMin = 0;\n var transformMax = 0;\n if (!tabPositionTopOrBottom) {\n transformMin = Math.min(0, visibleTabContentValue - tabContentSizeValue);\n transformMax = 0;\n } else if (rtl) {\n transformMin = 0;\n transformMax = Math.max(0, tabContentSizeValue - visibleTabContentValue);\n } else {\n transformMin = Math.min(0, visibleTabContentValue - tabContentSizeValue);\n transformMax = 0;\n }\n function alignInRange(value) {\n if (value < transformMin) {\n return transformMin;\n }\n if (value > transformMax) {\n return transformMax;\n }\n return value;\n }\n\n // ========================= Mobile ========================\n var touchMovingRef = useRef();\n var _useState9 = useState(),\n _useState10 = _slicedToArray(_useState9, 2),\n lockAnimation = _useState10[0],\n setLockAnimation = _useState10[1];\n function doLockAnimation() {\n setLockAnimation(Date.now());\n }\n function clearTouchMoving() {\n window.clearTimeout(touchMovingRef.current);\n }\n useTouchMove(tabsWrapperRef, function (offsetX, offsetY) {\n function doMove(setState, offset) {\n setState(function (value) {\n var newValue = alignInRange(value + offset);\n return newValue;\n });\n }\n\n // Skip scroll if place is enough\n if (!needScroll) {\n return false;\n }\n if (tabPositionTopOrBottom) {\n doMove(setTransformLeft, offsetX);\n } else {\n doMove(setTransformTop, offsetY);\n }\n clearTouchMoving();\n doLockAnimation();\n return true;\n });\n useEffect(function () {\n clearTouchMoving();\n if (lockAnimation) {\n touchMovingRef.current = window.setTimeout(function () {\n setLockAnimation(0);\n }, 100);\n }\n return clearTouchMoving;\n }, [lockAnimation]);\n\n // ===================== Visible Range =====================\n // Render tab node & collect tab offset\n var _useVisibleRange = useVisibleRange(tabOffsets,\n // Container\n visibleTabContentValue,\n // Transform\n tabPositionTopOrBottom ? transformLeft : transformTop,\n // Tabs\n tabContentSizeValue,\n // Add\n addSizeValue,\n // Operation\n operationSizeValue, _objectSpread(_objectSpread({}, props), {}, {\n tabs: tabs\n })),\n _useVisibleRange2 = _slicedToArray(_useVisibleRange, 2),\n visibleStart = _useVisibleRange2[0],\n visibleEnd = _useVisibleRange2[1];\n\n // ========================= Scroll ========================\n var scrollToTab = useEvent(function () {\n var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : activeKey;\n var tabOffset = tabOffsets.get(key) || {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0\n };\n if (tabPositionTopOrBottom) {\n // ============ Align with top & bottom ============\n var newTransform = transformLeft;\n\n // RTL\n if (rtl) {\n if (tabOffset.right < transformLeft) {\n newTransform = tabOffset.right;\n } else if (tabOffset.right + tabOffset.width > transformLeft + visibleTabContentValue) {\n newTransform = tabOffset.right + tabOffset.width - visibleTabContentValue;\n }\n }\n // LTR\n else if (tabOffset.left < -transformLeft) {\n newTransform = -tabOffset.left;\n } else if (tabOffset.left + tabOffset.width > -transformLeft + visibleTabContentValue) {\n newTransform = -(tabOffset.left + tabOffset.width - visibleTabContentValue);\n }\n setTransformTop(0);\n setTransformLeft(alignInRange(newTransform));\n } else {\n // ============ Align with left & right ============\n var _newTransform = transformTop;\n if (tabOffset.top < -transformTop) {\n _newTransform = -tabOffset.top;\n } else if (tabOffset.top + tabOffset.height > -transformTop + visibleTabContentValue) {\n _newTransform = -(tabOffset.top + tabOffset.height - visibleTabContentValue);\n }\n setTransformLeft(0);\n setTransformTop(alignInRange(_newTransform));\n }\n });\n\n // ========================== Tab ==========================\n var tabNodeStyle = {};\n if (tabPosition === 'top' || tabPosition === 'bottom') {\n tabNodeStyle[rtl ? 'marginRight' : 'marginLeft'] = tabBarGutter;\n } else {\n tabNodeStyle.marginTop = tabBarGutter;\n }\n var tabNodes = tabs.map(function (tab, i) {\n var key = tab.key;\n return /*#__PURE__*/React.createElement(TabNode, {\n id: id,\n prefixCls: prefixCls,\n key: key,\n tab: tab\n /* first node should not have margin left */,\n style: i === 0 ? undefined : tabNodeStyle,\n closable: tab.closable,\n editable: editable,\n active: key === activeKey,\n renderWrapper: children,\n removeAriaLabel: locale === null || locale === void 0 ? void 0 : locale.removeAriaLabel,\n onClick: function onClick(e) {\n onTabClick(key, e);\n },\n onFocus: function onFocus() {\n scrollToTab(key);\n doLockAnimation();\n if (!tabsWrapperRef.current) {\n return;\n }\n // Focus element will make scrollLeft change which we should reset back\n if (!rtl) {\n tabsWrapperRef.current.scrollLeft = 0;\n }\n tabsWrapperRef.current.scrollTop = 0;\n }\n });\n });\n\n // Update buttons records\n var updateTabSizes = function updateTabSizes() {\n return setTabSizes(function () {\n var newSizes = new Map();\n tabs.forEach(function (_ref2) {\n var _tabListRef$current;\n var key = _ref2.key;\n var btnNode = (_tabListRef$current = tabListRef.current) === null || _tabListRef$current === void 0 ? void 0 : _tabListRef$current.querySelector(\"[data-node-key=\\\"\".concat(genDataNodeKey(key), \"\\\"]\"));\n if (btnNode) {\n newSizes.set(key, {\n width: btnNode.offsetWidth,\n height: btnNode.offsetHeight,\n left: btnNode.offsetLeft,\n top: btnNode.offsetTop\n });\n }\n });\n return newSizes;\n });\n };\n useEffect(function () {\n updateTabSizes();\n }, [tabs.map(function (tab) {\n return tab.key;\n }).join('_')]);\n var onListHolderResize = useUpdate(function () {\n // Update wrapper records\n var containerSize = getSize(containerRef);\n var extraLeftSize = getSize(extraLeftRef);\n var extraRightSize = getSize(extraRightRef);\n setContainerExcludeExtraSize([containerSize[0] - extraLeftSize[0] - extraRightSize[0], containerSize[1] - extraLeftSize[1] - extraRightSize[1]]);\n var newAddSize = getSize(innerAddButtonRef);\n setAddSize(newAddSize);\n var newOperationSize = getSize(operationsRef);\n setOperationSize(newOperationSize);\n\n // Which includes add button size\n var tabContentFullSize = getSize(tabListRef);\n setTabContentSize([tabContentFullSize[0] - newAddSize[0], tabContentFullSize[1] - newAddSize[1]]);\n\n // Update buttons records\n updateTabSizes();\n });\n\n // ======================== Dropdown =======================\n var startHiddenTabs = tabs.slice(0, visibleStart);\n var endHiddenTabs = tabs.slice(visibleEnd + 1);\n var hiddenTabs = [].concat(_toConsumableArray(startHiddenTabs), _toConsumableArray(endHiddenTabs));\n\n // =================== Link & Operations ===================\n var _useState11 = useState(),\n _useState12 = _slicedToArray(_useState11, 2),\n inkStyle = _useState12[0],\n setInkStyle = _useState12[1];\n var activeTabOffset = tabOffsets.get(activeKey);\n\n // Delay set ink style to avoid remove tab blink\n var inkBarRafRef = useRef();\n function cleanInkBarRaf() {\n raf.cancel(inkBarRafRef.current);\n }\n useEffect(function () {\n var newInkStyle = {};\n if (activeTabOffset) {\n if (tabPositionTopOrBottom) {\n if (rtl) {\n newInkStyle.right = activeTabOffset.right;\n } else {\n newInkStyle.left = activeTabOffset.left;\n }\n newInkStyle.width = activeTabOffset.width;\n } else {\n newInkStyle.top = activeTabOffset.top;\n newInkStyle.height = activeTabOffset.height;\n }\n }\n cleanInkBarRaf();\n inkBarRafRef.current = raf(function () {\n setInkStyle(newInkStyle);\n });\n return cleanInkBarRaf;\n }, [activeTabOffset, tabPositionTopOrBottom, rtl]);\n\n // ========================= Effect ========================\n useEffect(function () {\n scrollToTab();\n // eslint-disable-next-line\n }, [activeKey, transformMin, transformMax, stringify(activeTabOffset), stringify(tabOffsets), tabPositionTopOrBottom]);\n\n // Should recalculate when rtl changed\n useEffect(function () {\n onListHolderResize();\n // eslint-disable-next-line\n }, [rtl]);\n\n // ========================= Render ========================\n var hasDropdown = !!hiddenTabs.length;\n var wrapPrefix = \"\".concat(prefixCls, \"-nav-wrap\");\n var pingLeft;\n var pingRight;\n var pingTop;\n var pingBottom;\n if (tabPositionTopOrBottom) {\n if (rtl) {\n pingRight = transformLeft > 0;\n pingLeft = transformLeft !== transformMax;\n } else {\n pingLeft = transformLeft < 0;\n pingRight = transformLeft !== transformMin;\n }\n } else {\n pingTop = transformTop < 0;\n pingBottom = transformTop !== transformMin;\n }\n return /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: useComposeRef(ref, containerRef),\n role: \"tablist\",\n className: classNames(\"\".concat(prefixCls, \"-nav\"), className),\n style: style,\n onKeyDown: function onKeyDown() {\n // No need animation when use keyboard\n doLockAnimation();\n }\n }, /*#__PURE__*/React.createElement(ExtraContent, {\n ref: extraLeftRef,\n position: \"left\",\n extra: extra,\n prefixCls: prefixCls\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(wrapPrefix, (_classNames = {}, _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-left\"), pingLeft), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-right\"), pingRight), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-top\"), pingTop), _defineProperty(_classNames, \"\".concat(wrapPrefix, \"-ping-bottom\"), pingBottom), _classNames)),\n ref: tabsWrapperRef\n }, /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onListHolderResize\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: tabListRef,\n className: \"\".concat(prefixCls, \"-nav-list\"),\n style: {\n transform: \"translate(\".concat(transformLeft, \"px, \").concat(transformTop, \"px)\"),\n transition: lockAnimation ? 'none' : undefined\n }\n }, tabNodes, /*#__PURE__*/React.createElement(AddButton, {\n ref: innerAddButtonRef,\n prefixCls: prefixCls,\n locale: locale,\n editable: editable,\n style: _objectSpread(_objectSpread({}, tabNodes.length === 0 ? undefined : tabNodeStyle), {}, {\n visibility: hasDropdown ? 'hidden' : null\n })\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-ink-bar\"), _defineProperty({}, \"\".concat(prefixCls, \"-ink-bar-animated\"), animated.inkBar)),\n style: inkStyle\n })))), /*#__PURE__*/React.createElement(OperationNode, _extends({}, props, {\n removeAriaLabel: locale === null || locale === void 0 ? void 0 : locale.removeAriaLabel,\n ref: operationsRef,\n prefixCls: prefixCls,\n tabs: hiddenTabs,\n className: !hasDropdown && operationsHiddenClassName,\n tabMoving: !!lockAnimation\n })), /*#__PURE__*/React.createElement(ExtraContent, {\n ref: extraRightRef,\n position: \"right\",\n extra: extra,\n prefixCls: prefixCls\n })));\n /* eslint-enable */\n}\n\nexport default /*#__PURE__*/React.forwardRef(TabNavList);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"renderTabBar\"],\n _excluded2 = [\"label\", \"key\"];\n// zombieJ: To compatible with `renderTabBar` usage.\n\nimport * as React from 'react';\nimport TabNavList from '.';\nimport TabContext from \"../TabContext\";\nimport TabPane from \"../TabPanelList/TabPane\";\n// We have to create a TabNavList components.\nexport default function TabNavListWrapper(_ref) {\n var renderTabBar = _ref.renderTabBar,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var _React$useContext = React.useContext(TabContext),\n tabs = _React$useContext.tabs;\n if (renderTabBar) {\n var tabNavBarProps = _objectSpread(_objectSpread({}, restProps), {}, {\n // Legacy support. We do not use this actually\n panes: tabs.map(function (_ref2) {\n var label = _ref2.label,\n key = _ref2.key,\n restTabProps = _objectWithoutProperties(_ref2, _excluded2);\n return /*#__PURE__*/React.createElement(TabPane, _extends({\n tab: label,\n key: key,\n tabKey: key\n }, restTabProps));\n })\n });\n return renderTabBar(tabNavBarProps, TabNavList);\n }\n return /*#__PURE__*/React.createElement(TabNavList, restProps);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"id\", \"prefixCls\", \"className\", \"items\", \"direction\", \"activeKey\", \"defaultActiveKey\", \"editable\", \"animated\", \"tabPosition\", \"tabBarGutter\", \"tabBarStyle\", \"tabBarExtraContent\", \"locale\", \"moreIcon\", \"moreTransitionName\", \"destroyInactiveTabPane\", \"renderTabBar\", \"onChange\", \"onTabClick\", \"onTabScroll\", \"getPopupContainer\", \"popupClassName\"];\n// Accessibility https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/Tab_Role\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport isMobile from \"rc-util/es/isMobile\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport TabPanelList from \"./TabPanelList\";\nimport TabContext from \"./TabContext\";\nimport TabNavListWrapper from \"./TabNavList/Wrapper\";\nimport useAnimateConfig from \"./hooks/useAnimateConfig\";\n\n/**\n * Should added antd:\n * - type\n *\n * Removed:\n * - onNextClick\n * - onPrevClick\n * - keyboard\n */\n\n// Used for accessibility\nvar uuid = 0;\nfunction Tabs(_ref, ref) {\n var _classNames;\n var id = _ref.id,\n _ref$prefixCls = _ref.prefixCls,\n prefixCls = _ref$prefixCls === void 0 ? 'rc-tabs' : _ref$prefixCls,\n className = _ref.className,\n items = _ref.items,\n direction = _ref.direction,\n activeKey = _ref.activeKey,\n defaultActiveKey = _ref.defaultActiveKey,\n editable = _ref.editable,\n animated = _ref.animated,\n _ref$tabPosition = _ref.tabPosition,\n tabPosition = _ref$tabPosition === void 0 ? 'top' : _ref$tabPosition,\n tabBarGutter = _ref.tabBarGutter,\n tabBarStyle = _ref.tabBarStyle,\n tabBarExtraContent = _ref.tabBarExtraContent,\n locale = _ref.locale,\n moreIcon = _ref.moreIcon,\n moreTransitionName = _ref.moreTransitionName,\n destroyInactiveTabPane = _ref.destroyInactiveTabPane,\n renderTabBar = _ref.renderTabBar,\n onChange = _ref.onChange,\n onTabClick = _ref.onTabClick,\n onTabScroll = _ref.onTabScroll,\n getPopupContainer = _ref.getPopupContainer,\n popupClassName = _ref.popupClassName,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var tabs = React.useMemo(function () {\n return (items || []).filter(function (item) {\n return item && _typeof(item) === 'object' && 'key' in item;\n });\n }, [items]);\n var rtl = direction === 'rtl';\n var mergedAnimated = useAnimateConfig(animated);\n\n // ======================== Mobile ========================\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n mobile = _useState2[0],\n setMobile = _useState2[1];\n useEffect(function () {\n // Only update on the client side\n setMobile(isMobile());\n }, []);\n\n // ====================== Active Key ======================\n var _useMergedState = useMergedState(function () {\n var _tabs$;\n return (_tabs$ = tabs[0]) === null || _tabs$ === void 0 ? void 0 : _tabs$.key;\n }, {\n value: activeKey,\n defaultValue: defaultActiveKey\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedActiveKey = _useMergedState2[0],\n setMergedActiveKey = _useMergedState2[1];\n var _useState3 = useState(function () {\n return tabs.findIndex(function (tab) {\n return tab.key === mergedActiveKey;\n });\n }),\n _useState4 = _slicedToArray(_useState3, 2),\n activeIndex = _useState4[0],\n setActiveIndex = _useState4[1];\n\n // Reset active key if not exist anymore\n useEffect(function () {\n var newActiveIndex = tabs.findIndex(function (tab) {\n return tab.key === mergedActiveKey;\n });\n if (newActiveIndex === -1) {\n var _tabs$newActiveIndex;\n newActiveIndex = Math.max(0, Math.min(activeIndex, tabs.length - 1));\n setMergedActiveKey((_tabs$newActiveIndex = tabs[newActiveIndex]) === null || _tabs$newActiveIndex === void 0 ? void 0 : _tabs$newActiveIndex.key);\n }\n setActiveIndex(newActiveIndex);\n }, [tabs.map(function (tab) {\n return tab.key;\n }).join('_'), mergedActiveKey, activeIndex]);\n\n // ===================== Accessibility ====================\n var _useMergedState3 = useMergedState(null, {\n value: id\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n mergedId = _useMergedState4[0],\n setMergedId = _useMergedState4[1];\n\n // Async generate id to avoid ssr mapping failed\n useEffect(function () {\n if (!id) {\n setMergedId(\"rc-tabs-\".concat(process.env.NODE_ENV === 'test' ? 'test' : uuid));\n uuid += 1;\n }\n }, []);\n\n // ======================== Events ========================\n function onInternalTabClick(key, e) {\n onTabClick === null || onTabClick === void 0 ? void 0 : onTabClick(key, e);\n var isActiveChanged = key !== mergedActiveKey;\n setMergedActiveKey(key);\n if (isActiveChanged) {\n onChange === null || onChange === void 0 ? void 0 : onChange(key);\n }\n }\n\n // ======================== Render ========================\n var sharedProps = {\n id: mergedId,\n activeKey: mergedActiveKey,\n animated: mergedAnimated,\n tabPosition: tabPosition,\n rtl: rtl,\n mobile: mobile\n };\n var tabNavBar;\n var tabNavBarProps = _objectSpread(_objectSpread({}, sharedProps), {}, {\n editable: editable,\n locale: locale,\n moreIcon: moreIcon,\n moreTransitionName: moreTransitionName,\n tabBarGutter: tabBarGutter,\n onTabClick: onInternalTabClick,\n onTabScroll: onTabScroll,\n extra: tabBarExtraContent,\n style: tabBarStyle,\n panes: null,\n getPopupContainer: getPopupContainer,\n popupClassName: popupClassName\n });\n return /*#__PURE__*/React.createElement(TabContext.Provider, {\n value: {\n tabs: tabs,\n prefixCls: prefixCls\n }\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n id: id,\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(tabPosition), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-mobile\"), mobile), _defineProperty(_classNames, \"\".concat(prefixCls, \"-editable\"), editable), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), rtl), _classNames), className)\n }, restProps), tabNavBar, /*#__PURE__*/React.createElement(TabNavListWrapper, _extends({}, tabNavBarProps, {\n renderTabBar: renderTabBar\n })), /*#__PURE__*/React.createElement(TabPanelList, _extends({\n destroyInactiveTabPane: destroyInactiveTabPane\n }, sharedProps, {\n animated: mergedAnimated\n }))));\n}\nvar ForwardTabs = /*#__PURE__*/React.forwardRef(Tabs);\nif (process.env.NODE_ENV !== 'production') {\n ForwardTabs.displayName = 'Tabs';\n}\nexport default ForwardTabs;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport warning from \"rc-util/es/warning\";\nexport default function useAnimateConfig() {\n var animated = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n inkBar: true,\n tabPane: false\n };\n var mergedAnimated;\n if (animated === false) {\n mergedAnimated = {\n inkBar: false,\n tabPane: false\n };\n } else if (animated === true) {\n mergedAnimated = {\n inkBar: true,\n tabPane: false\n };\n } else {\n mergedAnimated = _objectSpread({\n inkBar: true\n }, _typeof(animated) === 'object' ? animated : {});\n }\n\n // Enable tabPane animation if provide motion\n if (mergedAnimated.tabPaneMotion && mergedAnimated.tabPane === undefined) {\n mergedAnimated.tabPane = true;\n }\n if (!mergedAnimated.tabPaneMotion && mergedAnimated.tabPane) {\n if (process.env.NODE_ENV !== 'production') {\n warning(false, '`animated.tabPane` is true but `animated.tabPaneMotion` is not provided. Motion will not work.');\n }\n mergedAnimated.tabPane = false;\n }\n return mergedAnimated;\n}","import Tabs from \"./Tabs\";\nexport default Tabs;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getTransitionName } from '../../_util/motion';\nvar motion = {\n motionAppear: false,\n motionEnter: true,\n motionLeave: true\n};\nexport default function useAnimateConfig(prefixCls) {\n var animated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n inkBar: true,\n tabPane: false\n };\n var mergedAnimated;\n if (animated === false) {\n mergedAnimated = {\n inkBar: false,\n tabPane: false\n };\n } else if (animated === true) {\n mergedAnimated = {\n inkBar: true,\n tabPane: true\n };\n } else {\n mergedAnimated = _extends({\n inkBar: true\n }, _typeof(animated) === 'object' ? animated : {});\n }\n if (mergedAnimated.tabPane) {\n mergedAnimated.tabPaneMotion = _extends(_extends({}, motion), {\n motionName: getTransitionName(prefixCls, 'switch')\n });\n }\n return mergedAnimated;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport warning from '../../_util/warning';\nfunction filter(items) {\n return items.filter(function (item) {\n return item;\n });\n}\nexport default function useLegacyItems(items, children) {\n if (items) {\n return items;\n }\n process.env.NODE_ENV !== \"production\" ? warning(!children, 'Tabs', 'Tabs.TabPane is deprecated. Please use `items` directly.') : void 0;\n var childrenItems = toArray(children).map(function (node) {\n if ( /*#__PURE__*/React.isValidElement(node)) {\n var key = node.key,\n props = node.props;\n var _a = props || {},\n tab = _a.tab,\n restProps = __rest(_a, [\"tab\"]);\n var item = _extends(_extends({\n key: String(key)\n }, restProps), {\n label: tab\n });\n return item;\n }\n return null;\n });\n return filter(childrenItems);\n}","var TabPane = function TabPane() {\n return null;\n};\nif (process.env.NODE_ENV !== 'production') {\n TabPane.displayName = 'DeprecatedTabPane';\n}\nexport default TabPane;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport EllipsisOutlined from \"@ant-design/icons/es/icons/EllipsisOutlined\";\nimport PlusOutlined from \"@ant-design/icons/es/icons/PlusOutlined\";\nimport classNames from 'classnames';\nimport RcTabs from 'rc-tabs';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport SizeContext from '../config-provider/SizeContext';\nimport warning from '../_util/warning';\nimport useAnimateConfig from './hooks/useAnimateConfig';\nimport useLegacyItems from './hooks/useLegacyItems';\nimport TabPane from './TabPane';\nfunction Tabs(_a) {\n var type = _a.type,\n className = _a.className,\n propSize = _a.size,\n _onEdit = _a.onEdit,\n hideAdd = _a.hideAdd,\n centered = _a.centered,\n addIcon = _a.addIcon,\n children = _a.children,\n items = _a.items,\n animated = _a.animated,\n props = __rest(_a, [\"type\", \"className\", \"size\", \"onEdit\", \"hideAdd\", \"centered\", \"addIcon\", \"children\", \"items\", \"animated\"]);\n var customizePrefixCls = props.prefixCls,\n _props$moreIcon = props.moreIcon,\n moreIcon = _props$moreIcon === void 0 ? /*#__PURE__*/React.createElement(EllipsisOutlined, null) : _props$moreIcon;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction,\n getPopupContainer = _React$useContext.getPopupContainer;\n var prefixCls = getPrefixCls('tabs', customizePrefixCls);\n var editable;\n if (type === 'editable-card') {\n editable = {\n onEdit: function onEdit(editType, _ref) {\n var key = _ref.key,\n event = _ref.event;\n _onEdit === null || _onEdit === void 0 ? void 0 : _onEdit(editType === 'add' ? event : key, editType);\n },\n removeIcon: /*#__PURE__*/React.createElement(CloseOutlined, null),\n addIcon: addIcon || /*#__PURE__*/React.createElement(PlusOutlined, null),\n showAdd: hideAdd !== true\n };\n }\n var rootPrefixCls = getPrefixCls();\n process.env.NODE_ENV !== \"production\" ? warning(!('onPrevClick' in props) && !('onNextClick' in props), 'Tabs', '`onPrevClick` and `onNextClick` has been removed. Please use `onTabScroll` instead.') : void 0;\n var mergedItems = useLegacyItems(items, children);\n var mergedAnimated = useAnimateConfig(prefixCls, animated);\n return /*#__PURE__*/React.createElement(SizeContext.Consumer, null, function (contextSize) {\n var _classNames;\n var size = propSize !== undefined ? propSize : contextSize;\n return /*#__PURE__*/React.createElement(RcTabs, _extends({\n direction: direction,\n getPopupContainer: getPopupContainer,\n moreTransitionName: \"\".concat(rootPrefixCls, \"-slide-up\")\n }, props, {\n items: mergedItems,\n className: classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(size), size), _defineProperty(_classNames, \"\".concat(prefixCls, \"-card\"), ['card', 'editable-card'].includes(type)), _defineProperty(_classNames, \"\".concat(prefixCls, \"-editable-card\"), type === 'editable-card'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-centered\"), centered), _classNames), className),\n editable: editable,\n moreIcon: moreIcon,\n prefixCls: prefixCls,\n animated: mergedAnimated\n }));\n });\n}\nTabs.TabPane = TabPane;\nexport default Tabs;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nvar CheckableTag = function CheckableTag(_a) {\n var _classNames;\n var customizePrefixCls = _a.prefixCls,\n className = _a.className,\n checked = _a.checked,\n onChange = _a.onChange,\n onClick = _a.onClick,\n restProps = __rest(_a, [\"prefixCls\", \"className\", \"checked\", \"onChange\", \"onClick\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var handleClick = function handleClick(e) {\n onChange === null || onChange === void 0 ? void 0 : onChange(!checked);\n onClick === null || onClick === void 0 ? void 0 : onClick(e);\n };\n var prefixCls = getPrefixCls('tag', customizePrefixCls);\n var cls = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-checkable\"), true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-checkable-checked\"), checked), _classNames), className);\n return /*#__PURE__*/React.createElement(\"span\", _extends({}, restProps, {\n className: cls,\n onClick: handleClick\n }));\n};\nexport default CheckableTag;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { PresetColorTypes, PresetStatusColorTypes } from '../_util/colors';\nimport Wave from '../_util/wave';\nimport warning from '../_util/warning';\nimport CheckableTag from './CheckableTag';\nvar PresetColorRegex = new RegExp(\"^(\".concat(PresetColorTypes.join('|'), \")(-inverse)?$\"));\nvar PresetStatusColorRegex = new RegExp(\"^(\".concat(PresetStatusColorTypes.join('|'), \")$\"));\nvar InternalTag = function InternalTag(_a, ref) {\n var _classNames;\n var customizePrefixCls = _a.prefixCls,\n className = _a.className,\n style = _a.style,\n children = _a.children,\n icon = _a.icon,\n color = _a.color,\n onClose = _a.onClose,\n closeIcon = _a.closeIcon,\n _a$closable = _a.closable,\n closable = _a$closable === void 0 ? false : _a$closable,\n props = __rest(_a, [\"prefixCls\", \"className\", \"style\", \"children\", \"icon\", \"color\", \"onClose\", \"closeIcon\", \"closable\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var _React$useState = React.useState(true),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n visible = _React$useState2[0],\n setVisible = _React$useState2[1];\n // Warning for deprecated usage\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? warning(!('visible' in props), 'Tag', '`visible` will be removed in next major version, please use `visible && <Tag />` instead.') : void 0;\n }\n React.useEffect(function () {\n if ('visible' in props) {\n setVisible(props.visible);\n }\n }, [props.visible]);\n var isPresetColor = function isPresetColor() {\n if (!color) {\n return false;\n }\n return PresetColorRegex.test(color) || PresetStatusColorRegex.test(color);\n };\n var tagStyle = _extends({\n backgroundColor: color && !isPresetColor() ? color : undefined\n }, style);\n var presetColor = isPresetColor();\n var prefixCls = getPrefixCls('tag', customizePrefixCls);\n var tagClassName = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(color), presetColor), _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-color\"), color && !presetColor), _defineProperty(_classNames, \"\".concat(prefixCls, \"-hidden\"), !visible), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n var handleCloseClick = function handleCloseClick(e) {\n e.stopPropagation();\n onClose === null || onClose === void 0 ? void 0 : onClose(e);\n if (e.defaultPrevented) {\n return;\n }\n if (!('visible' in props)) {\n setVisible(false);\n }\n };\n var renderCloseIcon = function renderCloseIcon() {\n if (closable) {\n return closeIcon ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-close-icon\"),\n onClick: handleCloseClick\n }, closeIcon) : /*#__PURE__*/React.createElement(CloseOutlined, {\n className: \"\".concat(prefixCls, \"-close-icon\"),\n onClick: handleCloseClick\n });\n }\n return null;\n };\n var isNeedWave = 'onClick' in props || children && children.type === 'a';\n var tagProps = omit(props, ['visible']);\n var iconNode = icon || null;\n var kids = iconNode ? /*#__PURE__*/React.createElement(React.Fragment, null, iconNode, /*#__PURE__*/React.createElement(\"span\", null, children)) : children;\n var tagNode = /*#__PURE__*/React.createElement(\"span\", _extends({}, tagProps, {\n ref: ref,\n className: tagClassName,\n style: tagStyle\n }), kids, renderCloseIcon());\n return isNeedWave ? /*#__PURE__*/React.createElement(Wave, null, tagNode) : tagNode;\n};\nvar Tag = /*#__PURE__*/React.forwardRef(InternalTag);\nif (process.env.NODE_ENV !== 'production') {\n Tag.displayName = 'Tag';\n}\nTag.CheckableTag = CheckableTag;\nexport default Tag;","var locale = {\n placeholder: 'Select time',\n rangePlaceholder: ['Start time', 'End time']\n};\nexport default locale;","import * as React from 'react';\nimport classNames from 'classnames';\nexport default function Popup(props) {\n var showArrow = props.showArrow,\n arrowContent = props.arrowContent,\n children = props.children,\n prefixCls = props.prefixCls,\n id = props.id,\n overlayInnerStyle = props.overlayInnerStyle,\n className = props.className,\n style = props.style;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-content\"), className),\n style: style\n }, showArrow !== false && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-arrow\"),\n key: \"arrow\"\n }, arrowContent), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-inner\"),\n id: id,\n role: \"tooltip\",\n style: overlayInnerStyle\n }, typeof children === 'function' ? children() : children));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { useRef, useImperativeHandle, forwardRef } from 'react';\nimport Trigger from 'rc-trigger';\nimport { placements } from './placements';\nimport Popup from './Popup';\n\nvar Tooltip = function Tooltip(props, ref) {\n var overlayClassName = props.overlayClassName,\n _props$trigger = props.trigger,\n trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger,\n _props$mouseEnterDela = props.mouseEnterDelay,\n mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0 : _props$mouseEnterDela,\n _props$mouseLeaveDela = props.mouseLeaveDelay,\n mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n overlayStyle = props.overlayStyle,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-tooltip' : _props$prefixCls,\n children = props.children,\n onVisibleChange = props.onVisibleChange,\n afterVisibleChange = props.afterVisibleChange,\n transitionName = props.transitionName,\n animation = props.animation,\n motion = props.motion,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'right' : _props$placement,\n _props$align = props.align,\n align = _props$align === void 0 ? {} : _props$align,\n _props$destroyTooltip = props.destroyTooltipOnHide,\n destroyTooltipOnHide = _props$destroyTooltip === void 0 ? false : _props$destroyTooltip,\n defaultVisible = props.defaultVisible,\n getTooltipContainer = props.getTooltipContainer,\n overlayInnerStyle = props.overlayInnerStyle,\n arrowContent = props.arrowContent,\n overlay = props.overlay,\n id = props.id,\n showArrow = props.showArrow,\n restProps = _objectWithoutProperties(props, [\"overlayClassName\", \"trigger\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"overlayStyle\", \"prefixCls\", \"children\", \"onVisibleChange\", \"afterVisibleChange\", \"transitionName\", \"animation\", \"motion\", \"placement\", \"align\", \"destroyTooltipOnHide\", \"defaultVisible\", \"getTooltipContainer\", \"overlayInnerStyle\", \"arrowContent\", \"overlay\", \"id\", \"showArrow\"]);\n\n var domRef = useRef(null);\n useImperativeHandle(ref, function () {\n return domRef.current;\n });\n\n var extraProps = _objectSpread({}, restProps);\n\n if ('visible' in props) {\n extraProps.popupVisible = props.visible;\n }\n\n var getPopupElement = function getPopupElement() {\n return /*#__PURE__*/React.createElement(Popup, {\n showArrow: showArrow,\n arrowContent: arrowContent,\n key: \"content\",\n prefixCls: prefixCls,\n id: id,\n overlayInnerStyle: overlayInnerStyle\n }, overlay);\n };\n\n var destroyTooltip = false;\n var autoDestroy = false;\n\n if (typeof destroyTooltipOnHide === 'boolean') {\n destroyTooltip = destroyTooltipOnHide;\n } else if (destroyTooltipOnHide && _typeof(destroyTooltipOnHide) === 'object') {\n var keepParent = destroyTooltipOnHide.keepParent;\n destroyTooltip = keepParent === true;\n autoDestroy = keepParent === false;\n }\n\n return /*#__PURE__*/React.createElement(Trigger, _extends({\n popupClassName: overlayClassName,\n prefixCls: prefixCls,\n popup: getPopupElement,\n action: trigger,\n builtinPlacements: placements,\n popupPlacement: placement,\n ref: domRef,\n popupAlign: align,\n getPopupContainer: getTooltipContainer,\n onPopupVisibleChange: onVisibleChange,\n afterPopupVisibleChange: afterVisibleChange,\n popupTransitionName: transitionName,\n popupAnimation: animation,\n popupMotion: motion,\n defaultPopupVisible: defaultVisible,\n destroyPopupOnHide: destroyTooltip,\n autoDestroy: autoDestroy,\n mouseLeaveDelay: mouseLeaveDelay,\n popupStyle: overlayStyle,\n mouseEnterDelay: mouseEnterDelay\n }, extraProps), children);\n};\n\nexport default /*#__PURE__*/forwardRef(Tooltip);","import Tooltip from './Tooltip';\nimport Popup from './Popup';\nexport { Popup };\nexport default Tooltip;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport RcTooltip from 'rc-tooltip';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { PresetColorTypes } from '../_util/colors';\nimport { getTransitionName } from '../_util/motion';\nimport getPlacements from '../_util/placements';\nimport { cloneElement, isValidElement, isFragment } from '../_util/reactNode';\nimport warning from '../_util/warning';\nvar splitObject = function splitObject(obj, keys) {\n var picked = {};\n var omitted = _extends({}, obj);\n keys.forEach(function (key) {\n if (obj && key in obj) {\n picked[key] = obj[key];\n delete omitted[key];\n }\n });\n return {\n picked: picked,\n omitted: omitted\n };\n};\nvar PresetColorRegex = new RegExp(\"^(\".concat(PresetColorTypes.join('|'), \")(-inverse)?$\"));\n// Fix Tooltip won't hide at disabled button\n// mouse events don't trigger at disabled button in Chrome\n// https://github.com/react-component/tooltip/issues/18\nfunction getDisabledCompatibleChildren(element, prefixCls) {\n var elementType = element.type;\n if ((elementType.__ANT_BUTTON === true || element.type === 'button') && element.props.disabled || elementType.__ANT_SWITCH === true && (element.props.disabled || element.props.loading) || elementType.__ANT_RADIO === true && element.props.disabled) {\n // Pick some layout related style properties up to span\n // Prevent layout bugs like https://github.com/ant-design/ant-design/issues/5254\n var _splitObject = splitObject(element.props.style, ['position', 'left', 'right', 'top', 'bottom', 'float', 'display', 'zIndex']),\n picked = _splitObject.picked,\n omitted = _splitObject.omitted;\n var spanStyle = _extends(_extends({\n display: 'inline-block'\n }, picked), {\n cursor: 'not-allowed',\n width: element.props.block ? '100%' : undefined\n });\n var buttonStyle = _extends(_extends({}, omitted), {\n pointerEvents: 'none'\n });\n var child = cloneElement(element, {\n style: buttonStyle,\n className: null\n });\n return /*#__PURE__*/React.createElement(\"span\", {\n style: spanStyle,\n className: classNames(element.props.className, \"\".concat(prefixCls, \"-disabled-compatible-wrapper\"))\n }, child);\n }\n return element;\n}\nvar Tooltip = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames2;\n var _React$useContext = React.useContext(ConfigContext),\n getContextPopupContainer = _React$useContext.getPopupContainer,\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n // Warning for deprecated usage\n if (process.env.NODE_ENV !== 'production') {\n [['visible', 'open'], ['defaultVisible', 'defaultOpen'], ['onVisibleChange', 'onOpenChange'], ['afterVisibleChange', 'afterOpenChange']].forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n deprecatedName = _ref2[0],\n newName = _ref2[1];\n process.env.NODE_ENV !== \"production\" ? warning(!(deprecatedName in props), 'Tooltip', \"`\".concat(deprecatedName, \"` is deprecated which will be removed in next major version, please use `\").concat(newName, \"` instead.\")) : void 0;\n });\n }\n var _useMergedState = useMergedState(false, {\n value: props.open !== undefined ? props.open : props.visible,\n defaultValue: props.defaultOpen !== undefined ? props.defaultOpen : props.defaultVisible\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n open = _useMergedState2[0],\n setOpen = _useMergedState2[1];\n var isNoTitle = function isNoTitle() {\n var title = props.title,\n overlay = props.overlay;\n return !title && !overlay && title !== 0; // overlay for old version compatibility\n };\n\n var onOpenChange = function onOpenChange(vis) {\n var _a, _b;\n setOpen(isNoTitle() ? false : vis);\n if (!isNoTitle()) {\n (_a = props.onOpenChange) === null || _a === void 0 ? void 0 : _a.call(props, vis);\n (_b = props.onVisibleChange) === null || _b === void 0 ? void 0 : _b.call(props, vis);\n }\n };\n var getTooltipPlacements = function getTooltipPlacements() {\n var builtinPlacements = props.builtinPlacements,\n _props$arrowPointAtCe = props.arrowPointAtCenter,\n arrowPointAtCenter = _props$arrowPointAtCe === void 0 ? false : _props$arrowPointAtCe,\n _props$autoAdjustOver = props.autoAdjustOverflow,\n autoAdjustOverflow = _props$autoAdjustOver === void 0 ? true : _props$autoAdjustOver;\n return builtinPlacements || getPlacements({\n arrowPointAtCenter: arrowPointAtCenter,\n autoAdjustOverflow: autoAdjustOverflow\n });\n };\n // 动态设置动画点\n var onPopupAlign = function onPopupAlign(domNode, align) {\n var placements = getTooltipPlacements();\n // 当前返回的位置\n var placement = Object.keys(placements).find(function (key) {\n var _a, _b;\n return placements[key].points[0] === ((_a = align.points) === null || _a === void 0 ? void 0 : _a[0]) && placements[key].points[1] === ((_b = align.points) === null || _b === void 0 ? void 0 : _b[1]);\n });\n if (!placement) {\n return;\n }\n // 根据当前坐标设置动画点\n var rect = domNode.getBoundingClientRect();\n var transformOrigin = {\n top: '50%',\n left: '50%'\n };\n if (/top|Bottom/.test(placement)) {\n transformOrigin.top = \"\".concat(rect.height - align.offset[1], \"px\");\n } else if (/Top|bottom/.test(placement)) {\n transformOrigin.top = \"\".concat(-align.offset[1], \"px\");\n }\n if (/left|Right/.test(placement)) {\n transformOrigin.left = \"\".concat(rect.width - align.offset[0], \"px\");\n } else if (/right|Left/.test(placement)) {\n transformOrigin.left = \"\".concat(-align.offset[0], \"px\");\n }\n domNode.style.transformOrigin = \"\".concat(transformOrigin.left, \" \").concat(transformOrigin.top);\n };\n var getOverlay = function getOverlay() {\n var title = props.title,\n overlay = props.overlay;\n if (title === 0) {\n return title;\n }\n return overlay || title || '';\n };\n var getPopupContainer = props.getPopupContainer,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'top' : _props$placement,\n _props$mouseEnterDela = props.mouseEnterDelay,\n mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0.1 : _props$mouseEnterDela,\n _props$mouseLeaveDela = props.mouseLeaveDelay,\n mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n otherProps = __rest(props, [\"getPopupContainer\", \"placement\", \"mouseEnterDelay\", \"mouseLeaveDelay\"]);\n var customizePrefixCls = props.prefixCls,\n openClassName = props.openClassName,\n getTooltipContainer = props.getTooltipContainer,\n overlayClassName = props.overlayClassName,\n color = props.color,\n overlayInnerStyle = props.overlayInnerStyle,\n children = props.children;\n var prefixCls = getPrefixCls('tooltip', customizePrefixCls);\n var rootPrefixCls = getPrefixCls();\n var tempOpen = open;\n // Hide tooltip when there is no title\n if (!('open' in props) && !('visible' in props) && isNoTitle()) {\n tempOpen = false;\n }\n var child = getDisabledCompatibleChildren(isValidElement(children) && !isFragment(children) ? children : /*#__PURE__*/React.createElement(\"span\", null, children), prefixCls);\n var childProps = child.props;\n var childCls = !childProps.className || typeof childProps.className === 'string' ? classNames(childProps.className, _defineProperty({}, openClassName || \"\".concat(prefixCls, \"-open\"), true)) : childProps.className;\n var customOverlayClassName = classNames(overlayClassName, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-\").concat(color), color && PresetColorRegex.test(color)), _classNames2));\n var formattedOverlayInnerStyle = overlayInnerStyle;\n var arrowContentStyle = {};\n if (color && !PresetColorRegex.test(color)) {\n formattedOverlayInnerStyle = _extends(_extends({}, overlayInnerStyle), {\n background: color\n });\n // @ts-ignore\n arrowContentStyle = {\n '--antd-arrow-background-color': color\n };\n }\n return /*#__PURE__*/React.createElement(RcTooltip, _extends({}, otherProps, {\n placement: placement,\n mouseEnterDelay: mouseEnterDelay,\n mouseLeaveDelay: mouseLeaveDelay,\n prefixCls: prefixCls,\n overlayClassName: customOverlayClassName,\n getTooltipContainer: getPopupContainer || getTooltipContainer || getContextPopupContainer,\n ref: ref,\n builtinPlacements: getTooltipPlacements(),\n overlay: getOverlay(),\n visible: tempOpen,\n onVisibleChange: onOpenChange,\n onPopupAlign: onPopupAlign,\n overlayInnerStyle: formattedOverlayInnerStyle,\n arrowContent: /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-arrow-content\"),\n style: arrowContentStyle\n }),\n motion: {\n motionName: getTransitionName(rootPrefixCls, 'zoom-big-fast', props.transitionName),\n motionDeadline: 1000\n }\n }), tempOpen ? cloneElement(child, {\n className: childCls\n }) : child);\n});\nif (process.env.NODE_ENV !== 'production') {\n Tooltip.displayName = 'Tooltip';\n}\nexport default Tooltip;","// This icon file is generated automatically.\nvar CaretDownFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\" } }] }, \"name\": \"caret-down\", \"theme\": \"filled\" };\nexport default CaretDownFilled;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport CaretDownFilledSvg from \"@ant-design/icons-svg/es/asn/CaretDownFilled\";\nimport AntdIcon from '../components/AntdIcon';\nvar CaretDownFilled = function CaretDownFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: CaretDownFilledSvg\n }));\n};\nCaretDownFilled.displayName = 'CaretDownFilled';\nexport default /*#__PURE__*/React.forwardRef(CaretDownFilled);","// This icon file is generated automatically.\nvar MinusSquareOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M328 544h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\" } }] }, \"name\": \"minus-square\", \"theme\": \"outlined\" };\nexport default MinusSquareOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport MinusSquareOutlinedSvg from \"@ant-design/icons-svg/es/asn/MinusSquareOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar MinusSquareOutlined = function MinusSquareOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: MinusSquareOutlinedSvg\n }));\n};\nMinusSquareOutlined.displayName = 'MinusSquareOutlined';\nexport default /*#__PURE__*/React.forwardRef(MinusSquareOutlined);","// This icon file is generated automatically.\nvar PlusSquareOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M328 544h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\" } }] }, \"name\": \"plus-square\", \"theme\": \"outlined\" };\nexport default PlusSquareOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport PlusSquareOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusSquareOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar PlusSquareOutlined = function PlusSquareOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: PlusSquareOutlinedSvg\n }));\n};\nPlusSquareOutlined.displayName = 'PlusSquareOutlined';\nexport default /*#__PURE__*/React.forwardRef(PlusSquareOutlined);","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport CaretDownFilled from \"@ant-design/icons/es/icons/CaretDownFilled\";\nimport FileOutlined from \"@ant-design/icons/es/icons/FileOutlined\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport MinusSquareOutlined from \"@ant-design/icons/es/icons/MinusSquareOutlined\";\nimport PlusSquareOutlined from \"@ant-design/icons/es/icons/PlusSquareOutlined\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { cloneElement, isValidElement } from '../../_util/reactNode';\nexport default function renderSwitcherIcon(prefixCls, switcherIcon, showLine, treeNodeProps) {\n var isLeaf = treeNodeProps.isLeaf,\n expanded = treeNodeProps.expanded,\n loading = treeNodeProps.loading;\n if (loading) {\n return /*#__PURE__*/React.createElement(LoadingOutlined, {\n className: \"\".concat(prefixCls, \"-switcher-loading-icon\")\n });\n }\n var showLeafIcon;\n if (showLine && _typeof(showLine) === 'object') {\n showLeafIcon = showLine.showLeafIcon;\n }\n if (isLeaf) {\n if (!showLine) {\n return null;\n }\n if (typeof showLeafIcon !== 'boolean' && !!showLeafIcon) {\n var leafIcon = typeof showLeafIcon === 'function' ? showLeafIcon(treeNodeProps) : showLeafIcon;\n var leafCls = \"\".concat(prefixCls, \"-switcher-line-custom-icon\");\n if (isValidElement(leafIcon)) {\n return cloneElement(leafIcon, {\n className: classNames(leafIcon.props.className || '', leafCls)\n });\n }\n return leafIcon;\n }\n return showLeafIcon ? /*#__PURE__*/React.createElement(FileOutlined, {\n className: \"\".concat(prefixCls, \"-switcher-line-icon\")\n }) : /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-switcher-leaf-line\")\n });\n }\n var switcherCls = \"\".concat(prefixCls, \"-switcher-icon\");\n var switcher = typeof switcherIcon === 'function' ? switcherIcon(treeNodeProps) : switcherIcon;\n if (isValidElement(switcher)) {\n return cloneElement(switcher, {\n className: classNames(switcher.props.className || '', switcherCls)\n });\n }\n if (switcher) {\n return switcher;\n }\n if (showLine) {\n return expanded ? /*#__PURE__*/React.createElement(MinusSquareOutlined, {\n className: \"\".concat(prefixCls, \"-switcher-line-icon\")\n }) : /*#__PURE__*/React.createElement(PlusSquareOutlined, {\n className: \"\".concat(prefixCls, \"-switcher-line-icon\")\n });\n }\n return /*#__PURE__*/React.createElement(CaretDownFilled, {\n className: switcherCls\n });\n}","// This icon file is generated automatically.\nvar CopyOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z\" } }] }, \"name\": \"copy\", \"theme\": \"outlined\" };\nexport default CopyOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport CopyOutlinedSvg from \"@ant-design/icons-svg/es/asn/CopyOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar CopyOutlined = function CopyOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: CopyOutlinedSvg\n }));\n};\nCopyOutlined.displayName = 'CopyOutlined';\nexport default /*#__PURE__*/React.forwardRef(CopyOutlined);","// This icon file is generated automatically.\nvar EditOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z\" } }] }, \"name\": \"edit\", \"theme\": \"outlined\" };\nexport default EditOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport EditOutlinedSvg from \"@ant-design/icons-svg/es/asn/EditOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar EditOutlined = function EditOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: EditOutlinedSvg\n }));\n};\nEditOutlined.displayName = 'EditOutlined';\nexport default /*#__PURE__*/React.forwardRef(EditOutlined);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n/**\n * Wrap of sub component which need use as Button capacity (like Icon component).\n *\n * This helps accessibility reader to tread as a interactive button to operation.\n */\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nvar inlineStyle = {\n border: 0,\n background: 'transparent',\n padding: 0,\n lineHeight: 'inherit',\n display: 'inline-block'\n};\nvar TransButton = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var onKeyDown = function onKeyDown(event) {\n var keyCode = event.keyCode;\n if (keyCode === KeyCode.ENTER) {\n event.preventDefault();\n }\n };\n var onKeyUp = function onKeyUp(event) {\n var keyCode = event.keyCode;\n var onClick = props.onClick;\n if (keyCode === KeyCode.ENTER && onClick) {\n onClick();\n }\n };\n var style = props.style,\n noStyle = props.noStyle,\n disabled = props.disabled,\n restProps = __rest(props, [\"style\", \"noStyle\", \"disabled\"]);\n var mergedStyle = {};\n if (!noStyle) {\n mergedStyle = _extends({}, inlineStyle);\n }\n if (disabled) {\n mergedStyle.pointerEvents = 'none';\n }\n mergedStyle = _extends(_extends({}, mergedStyle), style);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n role: \"button\",\n tabIndex: 0,\n ref: ref\n }, restProps, {\n onKeyDown: onKeyDown,\n onKeyUp: onKeyUp,\n style: mergedStyle\n }));\n});\nexport default TransButton;","// This icon file is generated automatically.\nvar EnterOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M864 170h-60c-4.4 0-8 3.6-8 8v518H310v-73c0-6.7-7.8-10.5-13-6.3l-141.9 112a8 8 0 000 12.6l141.9 112c5.3 4.2 13 .4 13-6.3v-75h498c35.3 0 64-28.7 64-64V178c0-4.4-3.6-8-8-8z\" } }] }, \"name\": \"enter\", \"theme\": \"outlined\" };\nexport default EnterOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport EnterOutlinedSvg from \"@ant-design/icons-svg/es/asn/EnterOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar EnterOutlined = function EnterOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: EnterOutlinedSvg\n }));\n};\nEnterOutlined.displayName = 'EnterOutlined';\nexport default /*#__PURE__*/React.forwardRef(EnterOutlined);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport EnterOutlined from \"@ant-design/icons/es/icons/EnterOutlined\";\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport TextArea from '../input/TextArea';\nimport { cloneElement } from '../_util/reactNode';\nvar Editable = function Editable(_ref) {\n var prefixCls = _ref.prefixCls,\n ariaLabel = _ref['aria-label'],\n className = _ref.className,\n style = _ref.style,\n direction = _ref.direction,\n maxLength = _ref.maxLength,\n _ref$autoSize = _ref.autoSize,\n autoSize = _ref$autoSize === void 0 ? true : _ref$autoSize,\n value = _ref.value,\n onSave = _ref.onSave,\n onCancel = _ref.onCancel,\n onEnd = _ref.onEnd,\n component = _ref.component,\n _ref$enterIcon = _ref.enterIcon,\n enterIcon = _ref$enterIcon === void 0 ? /*#__PURE__*/React.createElement(EnterOutlined, null) : _ref$enterIcon;\n var ref = React.useRef(null);\n var inComposition = React.useRef(false);\n var lastKeyCode = React.useRef();\n var _React$useState = React.useState(value),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n current = _React$useState2[0],\n setCurrent = _React$useState2[1];\n React.useEffect(function () {\n setCurrent(value);\n }, [value]);\n React.useEffect(function () {\n if (ref.current && ref.current.resizableTextArea) {\n var textArea = ref.current.resizableTextArea.textArea;\n textArea.focus();\n var length = textArea.value.length;\n textArea.setSelectionRange(length, length);\n }\n }, []);\n var onChange = function onChange(_ref2) {\n var target = _ref2.target;\n setCurrent(target.value.replace(/[\\n\\r]/g, ''));\n };\n var onCompositionStart = function onCompositionStart() {\n inComposition.current = true;\n };\n var onCompositionEnd = function onCompositionEnd() {\n inComposition.current = false;\n };\n var onKeyDown = function onKeyDown(_ref3) {\n var keyCode = _ref3.keyCode;\n // We don't record keyCode when IME is using\n if (inComposition.current) return;\n lastKeyCode.current = keyCode;\n };\n var confirmChange = function confirmChange() {\n onSave(current.trim());\n };\n var onKeyUp = function onKeyUp(_ref4) {\n var keyCode = _ref4.keyCode,\n ctrlKey = _ref4.ctrlKey,\n altKey = _ref4.altKey,\n metaKey = _ref4.metaKey,\n shiftKey = _ref4.shiftKey;\n // Check if it's a real key\n if (lastKeyCode.current === keyCode && !inComposition.current && !ctrlKey && !altKey && !metaKey && !shiftKey) {\n if (keyCode === KeyCode.ENTER) {\n confirmChange();\n onEnd === null || onEnd === void 0 ? void 0 : onEnd();\n } else if (keyCode === KeyCode.ESC) {\n onCancel();\n }\n }\n };\n var onBlur = function onBlur() {\n confirmChange();\n };\n var textClassName = component ? \"\".concat(prefixCls, \"-\").concat(component) : '';\n var textAreaClassName = classNames(prefixCls, \"\".concat(prefixCls, \"-edit-content\"), _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), className, textClassName);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: textAreaClassName,\n style: style\n }, /*#__PURE__*/React.createElement(TextArea, {\n ref: ref,\n maxLength: maxLength,\n value: current,\n onChange: onChange,\n onKeyDown: onKeyDown,\n onKeyUp: onKeyUp,\n onCompositionStart: onCompositionStart,\n onCompositionEnd: onCompositionEnd,\n onBlur: onBlur,\n \"aria-label\": ariaLabel,\n rows: 1,\n autoSize: autoSize\n }), enterIcon !== null ? cloneElement(enterIcon, {\n className: \"\".concat(prefixCls, \"-edit-content-confirm\")\n }) : null);\n};\nexport default Editable;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nexport default function useMergedConfig(propConfig, templateConfig) {\n return React.useMemo(function () {\n var support = !!propConfig;\n return [support, _extends(_extends({}, templateConfig), support && _typeof(propConfig) === 'object' ? propConfig : null)];\n }, [propConfig]);\n}","import * as React from 'react';\n/** Similar with `useEffect` but only trigger after mounted */\nvar useUpdatedEffect = function useUpdatedEffect(callback, conditions) {\n var mountRef = React.useRef(false);\n React.useEffect(function () {\n if (mountRef.current) {\n callback();\n } else {\n mountRef.current = true;\n }\n }, conditions);\n};\nexport default useUpdatedEffect;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport warning from '../_util/warning';\nvar Typography = /*#__PURE__*/React.forwardRef(function (_a, ref) {\n var customizePrefixCls = _a.prefixCls,\n _a$component = _a.component,\n Component = _a$component === void 0 ? 'article' : _a$component,\n className = _a.className,\n setContentRef = _a.setContentRef,\n children = _a.children,\n typographyDirection = _a.direction,\n restProps = __rest(_a, [\"prefixCls\", \"component\", \"className\", \"setContentRef\", \"children\", \"direction\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n contextDirection = _React$useContext.direction;\n var direction = typographyDirection !== null && typographyDirection !== void 0 ? typographyDirection : contextDirection;\n var mergedRef = ref;\n if (setContentRef) {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Typography', '`setContentRef` is deprecated. Please use `ref` instead.') : void 0;\n mergedRef = composeRef(ref, setContentRef);\n }\n var prefixCls = getPrefixCls('typography', customizePrefixCls);\n var componentClassName = classNames(prefixCls, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), className);\n return (\n /*#__PURE__*/\n // @ts-expect-error: Expression produces a union type that is too complex to represent.\n React.createElement(Component, _extends({\n className: componentClassName,\n ref: mergedRef\n }, restProps), children)\n );\n});\nif (process.env.NODE_ENV !== 'production') {\n Typography.displayName = 'Typography';\n}\n// es default export should use const instead of let\nexport default Typography;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport toArray from \"rc-util/es/Children/toArray\";\nimport useIsomorphicLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\nfunction cuttable(node) {\n var type = _typeof(node);\n return type === 'string' || type === 'number';\n}\nfunction getNodesLen(nodeList) {\n var totalLen = 0;\n nodeList.forEach(function (node) {\n if (cuttable(node)) {\n totalLen += String(node).length;\n } else {\n totalLen += 1;\n }\n });\n return totalLen;\n}\nfunction sliceNodes(nodeList, len) {\n var currLen = 0;\n var currentNodeList = [];\n for (var i = 0; i < nodeList.length; i += 1) {\n // Match to return\n if (currLen === len) {\n return currentNodeList;\n }\n var node = nodeList[i];\n var canCut = cuttable(node);\n var nodeLen = canCut ? String(node).length : 1;\n var nextLen = currLen + nodeLen;\n // Exceed but current not which means we need cut this\n // This will not happen on validate ReactElement\n if (nextLen > len) {\n var restLen = len - currLen;\n currentNodeList.push(String(node).slice(0, restLen));\n return currentNodeList;\n }\n currentNodeList.push(node);\n currLen = nextLen;\n }\n return nodeList;\n}\nvar NONE = 0;\nvar PREPARE = 1;\nvar WALKING = 2;\nvar DONE_WITH_ELLIPSIS = 3;\nvar DONE_WITHOUT_ELLIPSIS = 4;\nvar Ellipsis = function Ellipsis(_ref) {\n var enabledMeasure = _ref.enabledMeasure,\n children = _ref.children,\n text = _ref.text,\n width = _ref.width,\n fontSize = _ref.fontSize,\n rows = _ref.rows,\n onEllipsis = _ref.onEllipsis;\n var _React$useState = React.useState([0, 0, 0]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n _React$useState2$ = _slicedToArray(_React$useState2[0], 3),\n startLen = _React$useState2$[0],\n midLen = _React$useState2$[1],\n endLen = _React$useState2$[2],\n setCutLength = _React$useState2[1];\n var _React$useState3 = React.useState(NONE),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n walkingState = _React$useState4[0],\n setWalkingState = _React$useState4[1];\n var _React$useState5 = React.useState(0),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n singleRowHeight = _React$useState6[0],\n setSingleRowHeight = _React$useState6[1];\n var singleRowRef = React.useRef(null);\n var midRowRef = React.useRef(null);\n var nodeList = React.useMemo(function () {\n return toArray(text);\n }, [text]);\n var totalLen = React.useMemo(function () {\n return getNodesLen(nodeList);\n }, [nodeList]);\n var mergedChildren = React.useMemo(function () {\n if (!enabledMeasure || walkingState !== DONE_WITH_ELLIPSIS) {\n return children(nodeList, false);\n }\n return children(sliceNodes(nodeList, midLen), midLen < totalLen);\n }, [enabledMeasure, walkingState, children, nodeList, midLen, totalLen]);\n // ======================== Walk ========================\n useIsomorphicLayoutEffect(function () {\n if (enabledMeasure && width && fontSize && totalLen) {\n setWalkingState(PREPARE);\n setCutLength([0, Math.ceil(totalLen / 2), totalLen]);\n }\n }, [enabledMeasure, width, fontSize, text, totalLen, rows]);\n useIsomorphicLayoutEffect(function () {\n var _a;\n if (walkingState === PREPARE) {\n setSingleRowHeight(((_a = singleRowRef.current) === null || _a === void 0 ? void 0 : _a.offsetHeight) || 0);\n }\n }, [walkingState]);\n useIsomorphicLayoutEffect(function () {\n var _a, _b;\n if (singleRowHeight) {\n if (walkingState === PREPARE) {\n // Ignore if position is enough\n var midHeight = ((_a = midRowRef.current) === null || _a === void 0 ? void 0 : _a.offsetHeight) || 0;\n var maxHeight = rows * singleRowHeight;\n if (midHeight <= maxHeight) {\n setWalkingState(DONE_WITHOUT_ELLIPSIS);\n onEllipsis(false);\n } else {\n setWalkingState(WALKING);\n }\n } else if (walkingState === WALKING) {\n if (startLen !== endLen) {\n var _midHeight = ((_b = midRowRef.current) === null || _b === void 0 ? void 0 : _b.offsetHeight) || 0;\n var _maxHeight = rows * singleRowHeight;\n var nextStartLen = startLen;\n var nextEndLen = endLen;\n // We reach the last round\n if (startLen === endLen - 1) {\n nextEndLen = startLen;\n } else if (_midHeight <= _maxHeight) {\n nextStartLen = midLen;\n } else {\n nextEndLen = midLen;\n }\n var nextMidLen = Math.ceil((nextStartLen + nextEndLen) / 2);\n setCutLength([nextStartLen, nextMidLen, nextEndLen]);\n } else {\n setWalkingState(DONE_WITH_ELLIPSIS);\n onEllipsis(true);\n }\n }\n }\n }, [walkingState, startLen, endLen, rows, singleRowHeight]);\n // ======================= Render =======================\n var measureStyle = {\n width: width,\n whiteSpace: 'normal',\n margin: 0,\n padding: 0\n };\n var renderMeasure = function renderMeasure(content, ref, style) {\n return /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": true,\n ref: ref,\n style: _extends({\n position: 'fixed',\n display: 'block',\n left: 0,\n top: 0,\n zIndex: -9999,\n visibility: 'hidden',\n pointerEvents: 'none',\n fontSize: Math.floor(fontSize / 2) * 2\n }, style)\n }, content);\n };\n var renderMeasureSlice = function renderMeasureSlice(len, ref) {\n var sliceNodeList = sliceNodes(nodeList, len);\n return renderMeasure(children(sliceNodeList, true), ref, measureStyle);\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, mergedChildren, enabledMeasure && walkingState !== DONE_WITH_ELLIPSIS && walkingState !== DONE_WITHOUT_ELLIPSIS && /*#__PURE__*/React.createElement(React.Fragment, null, renderMeasure('lg', singleRowRef, {\n wordBreak: 'keep-all',\n whiteSpace: 'nowrap'\n }), walkingState === PREPARE ? renderMeasure(children(nodeList, false), midRowRef, measureStyle) : renderMeasureSlice(midLen, midRowRef)));\n};\nif (process.env.NODE_ENV !== 'production') {\n Ellipsis.displayName = 'Ellipsis';\n}\nexport default Ellipsis;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Tooltip from '../../tooltip';\nvar EllipsisTooltip = function EllipsisTooltip(_ref) {\n var enabledEllipsis = _ref.enabledEllipsis,\n isEllipsis = _ref.isEllipsis,\n children = _ref.children,\n tooltipProps = _ref.tooltipProps;\n if (!(tooltipProps === null || tooltipProps === void 0 ? void 0 : tooltipProps.title) || !enabledEllipsis) {\n return children;\n }\n return /*#__PURE__*/React.createElement(Tooltip, _extends({\n open: isEllipsis ? undefined : false\n }, tooltipProps), children);\n};\nif (process.env.NODE_ENV !== 'production') {\n EllipsisTooltip.displayName = 'EllipsisTooltip';\n}\nexport default EllipsisTooltip;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport CheckOutlined from \"@ant-design/icons/es/icons/CheckOutlined\";\nimport CopyOutlined from \"@ant-design/icons/es/icons/CopyOutlined\";\nimport EditOutlined from \"@ant-design/icons/es/icons/EditOutlined\";\nimport classNames from 'classnames';\nimport copy from 'copy-to-clipboard';\nimport ResizeObserver from 'rc-resize-observer';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport useIsomorphicLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport omit from \"rc-util/es/omit\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { ConfigContext } from '../../config-provider';\nimport { useLocaleReceiver } from '../../locale-provider/LocaleReceiver';\nimport TransButton from '../../_util/transButton';\nimport { isStyleSupport } from '../../_util/styleChecker';\nimport Tooltip from '../../tooltip';\nimport Editable from '../Editable';\nimport useMergedConfig from '../hooks/useMergedConfig';\nimport useUpdatedEffect from '../hooks/useUpdatedEffect';\nimport Typography from '../Typography';\nimport Ellipsis from './Ellipsis';\nimport EllipsisTooltip from './EllipsisTooltip';\nfunction wrapperDecorations(_ref, content) {\n var mark = _ref.mark,\n code = _ref.code,\n underline = _ref.underline,\n del = _ref[\"delete\"],\n strong = _ref.strong,\n keyboard = _ref.keyboard,\n italic = _ref.italic;\n var currentContent = content;\n function wrap(needed, tag) {\n if (!needed) return;\n currentContent = /*#__PURE__*/React.createElement(tag, {}, currentContent);\n }\n wrap(strong, 'strong');\n wrap(underline, 'u');\n wrap(del, 'del');\n wrap(code, 'code');\n wrap(mark, 'mark');\n wrap(keyboard, 'kbd');\n wrap(italic, 'i');\n return currentContent;\n}\nfunction getNode(dom, defaultNode, needDom) {\n if (dom === true || dom === undefined) {\n return defaultNode;\n }\n return dom || needDom && defaultNode;\n}\nfunction toList(val) {\n if (val === false) {\n return [false, false];\n }\n return Array.isArray(val) ? val : [val];\n}\nvar ELLIPSIS_STR = '...';\nvar Base = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _a, _b, _c;\n var customizePrefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n type = props.type,\n disabled = props.disabled,\n children = props.children,\n ellipsis = props.ellipsis,\n editable = props.editable,\n copyable = props.copyable,\n component = props.component,\n title = props.title,\n restProps = __rest(props, [\"prefixCls\", \"className\", \"style\", \"type\", \"disabled\", \"children\", \"ellipsis\", \"editable\", \"copyable\", \"component\", \"title\"]);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var textLocale = useLocaleReceiver('Text')[0]; // Force TS get this\n var typographyRef = React.useRef(null);\n var editIconRef = React.useRef(null);\n // ============================ MISC ============================\n var prefixCls = getPrefixCls('typography', customizePrefixCls);\n var textProps = omit(restProps, ['mark', 'code', 'delete', 'underline', 'strong', 'keyboard', 'italic']);\n // ========================== Editable ==========================\n var _useMergedConfig = useMergedConfig(editable),\n _useMergedConfig2 = _slicedToArray(_useMergedConfig, 2),\n enableEdit = _useMergedConfig2[0],\n editConfig = _useMergedConfig2[1];\n var _useMergedState = useMergedState(false, {\n value: editConfig.editing\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n editing = _useMergedState2[0],\n setEditing = _useMergedState2[1];\n var _editConfig$triggerTy = editConfig.triggerType,\n triggerType = _editConfig$triggerTy === void 0 ? ['icon'] : _editConfig$triggerTy;\n var triggerEdit = function triggerEdit(edit) {\n var _a;\n if (edit) {\n (_a = editConfig.onStart) === null || _a === void 0 ? void 0 : _a.call(editConfig);\n }\n setEditing(edit);\n };\n // Focus edit icon when back\n useUpdatedEffect(function () {\n var _a;\n if (!editing) {\n (_a = editIconRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n }\n }, [editing]);\n var onEditClick = function onEditClick(e) {\n e === null || e === void 0 ? void 0 : e.preventDefault();\n triggerEdit(true);\n };\n var onEditChange = function onEditChange(value) {\n var _a;\n (_a = editConfig.onChange) === null || _a === void 0 ? void 0 : _a.call(editConfig, value);\n triggerEdit(false);\n };\n var onEditCancel = function onEditCancel() {\n var _a;\n (_a = editConfig.onCancel) === null || _a === void 0 ? void 0 : _a.call(editConfig);\n triggerEdit(false);\n };\n // ========================== Copyable ==========================\n var _useMergedConfig3 = useMergedConfig(copyable),\n _useMergedConfig4 = _slicedToArray(_useMergedConfig3, 2),\n enableCopy = _useMergedConfig4[0],\n copyConfig = _useMergedConfig4[1];\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n copied = _React$useState2[0],\n setCopied = _React$useState2[1];\n var copyIdRef = React.useRef();\n var copyOptions = {};\n if (copyConfig.format) {\n copyOptions.format = copyConfig.format;\n }\n var cleanCopyId = function cleanCopyId() {\n window.clearTimeout(copyIdRef.current);\n };\n var onCopyClick = function onCopyClick(e) {\n var _a;\n e === null || e === void 0 ? void 0 : e.preventDefault();\n e === null || e === void 0 ? void 0 : e.stopPropagation();\n copy(copyConfig.text || String(children) || '', copyOptions);\n setCopied(true);\n // Trigger tips update\n cleanCopyId();\n copyIdRef.current = window.setTimeout(function () {\n setCopied(false);\n }, 3000);\n (_a = copyConfig.onCopy) === null || _a === void 0 ? void 0 : _a.call(copyConfig, e);\n };\n React.useEffect(function () {\n return cleanCopyId;\n }, []);\n // ========================== Ellipsis ==========================\n var _React$useState3 = React.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n isLineClampSupport = _React$useState4[0],\n setIsLineClampSupport = _React$useState4[1];\n var _React$useState5 = React.useState(false),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n isTextOverflowSupport = _React$useState6[0],\n setIsTextOverflowSupport = _React$useState6[1];\n var _React$useState7 = React.useState(false),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n expanded = _React$useState8[0],\n setExpanded = _React$useState8[1];\n var _React$useState9 = React.useState(false),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n isJsEllipsis = _React$useState10[0],\n setIsJsEllipsis = _React$useState10[1];\n var _React$useState11 = React.useState(false),\n _React$useState12 = _slicedToArray(_React$useState11, 2),\n isNativeEllipsis = _React$useState12[0],\n setIsNativeEllipsis = _React$useState12[1];\n var _React$useState13 = React.useState(true),\n _React$useState14 = _slicedToArray(_React$useState13, 2),\n isNativeVisible = _React$useState14[0],\n setIsNativeVisible = _React$useState14[1];\n var _useMergedConfig5 = useMergedConfig(ellipsis, {\n expandable: false\n }),\n _useMergedConfig6 = _slicedToArray(_useMergedConfig5, 2),\n enableEllipsis = _useMergedConfig6[0],\n ellipsisConfig = _useMergedConfig6[1];\n var mergedEnableEllipsis = enableEllipsis && !expanded;\n // Shared prop to reduce bundle size\n var _ellipsisConfig$rows = ellipsisConfig.rows,\n rows = _ellipsisConfig$rows === void 0 ? 1 : _ellipsisConfig$rows;\n var needMeasureEllipsis = React.useMemo(function () {\n return (\n // Disable ellipsis\n !mergedEnableEllipsis ||\n // Provide suffix\n ellipsisConfig.suffix !== undefined || ellipsisConfig.onEllipsis ||\n // Can't use css ellipsis since we need to provide the place for button\n ellipsisConfig.expandable || enableEdit || enableCopy\n );\n }, [mergedEnableEllipsis, ellipsisConfig, enableEdit, enableCopy]);\n useIsomorphicLayoutEffect(function () {\n if (enableEllipsis && !needMeasureEllipsis) {\n setIsLineClampSupport(isStyleSupport('webkitLineClamp'));\n setIsTextOverflowSupport(isStyleSupport('textOverflow'));\n }\n }, [needMeasureEllipsis, enableEllipsis]);\n var cssEllipsis = React.useMemo(function () {\n if (needMeasureEllipsis) {\n return false;\n }\n if (rows === 1) {\n return isTextOverflowSupport;\n }\n return isLineClampSupport;\n }, [needMeasureEllipsis, isTextOverflowSupport, isLineClampSupport]);\n var isMergedEllipsis = mergedEnableEllipsis && (cssEllipsis ? isNativeEllipsis : isJsEllipsis);\n var cssTextOverflow = mergedEnableEllipsis && rows === 1 && cssEllipsis;\n var cssLineClamp = mergedEnableEllipsis && rows > 1 && cssEllipsis;\n // >>>>> Expand\n var onExpandClick = function onExpandClick(e) {\n var _a;\n setExpanded(true);\n (_a = ellipsisConfig.onExpand) === null || _a === void 0 ? void 0 : _a.call(ellipsisConfig, e);\n };\n var _React$useState15 = React.useState(0),\n _React$useState16 = _slicedToArray(_React$useState15, 2),\n ellipsisWidth = _React$useState16[0],\n setEllipsisWidth = _React$useState16[1];\n var _React$useState17 = React.useState(0),\n _React$useState18 = _slicedToArray(_React$useState17, 2),\n ellipsisFontSize = _React$useState18[0],\n setEllipsisFontSize = _React$useState18[1];\n var onResize = function onResize(_ref2, element) {\n var offsetWidth = _ref2.offsetWidth;\n var _a;\n setEllipsisWidth(offsetWidth);\n setEllipsisFontSize(parseInt((_a = window.getComputedStyle) === null || _a === void 0 ? void 0 : _a.call(window, element).fontSize, 10) || 0);\n };\n // >>>>> JS Ellipsis\n var onJsEllipsis = function onJsEllipsis(jsEllipsis) {\n var _a;\n setIsJsEllipsis(jsEllipsis);\n // Trigger if changed\n if (isJsEllipsis !== jsEllipsis) {\n (_a = ellipsisConfig.onEllipsis) === null || _a === void 0 ? void 0 : _a.call(ellipsisConfig, jsEllipsis);\n }\n };\n // >>>>> Native ellipsis\n React.useEffect(function () {\n var textEle = typographyRef.current;\n if (enableEllipsis && cssEllipsis && textEle) {\n var currentEllipsis = cssLineClamp ? textEle.offsetHeight < textEle.scrollHeight : textEle.offsetWidth < textEle.scrollWidth;\n if (isNativeEllipsis !== currentEllipsis) {\n setIsNativeEllipsis(currentEllipsis);\n }\n }\n }, [enableEllipsis, cssEllipsis, children, cssLineClamp, isNativeVisible]);\n // https://github.com/ant-design/ant-design/issues/36786\n // Use IntersectionObserver to check if element is invisible\n React.useEffect(function () {\n var textEle = typographyRef.current;\n if (typeof IntersectionObserver === 'undefined' || !textEle || !cssEllipsis || !mergedEnableEllipsis) {\n return;\n }\n /* eslint-disable-next-line compat/compat */\n var observer = new IntersectionObserver(function () {\n setIsNativeVisible(!!textEle.offsetParent);\n });\n observer.observe(textEle);\n return function () {\n observer.disconnect();\n };\n }, [cssEllipsis, mergedEnableEllipsis]);\n // ========================== Tooltip ===========================\n var tooltipProps = {};\n if (ellipsisConfig.tooltip === true) {\n tooltipProps = {\n title: (_a = editConfig.text) !== null && _a !== void 0 ? _a : children\n };\n } else if ( /*#__PURE__*/React.isValidElement(ellipsisConfig.tooltip)) {\n tooltipProps = {\n title: ellipsisConfig.tooltip\n };\n } else if (_typeof(ellipsisConfig.tooltip) === 'object') {\n tooltipProps = _extends({\n title: (_b = editConfig.text) !== null && _b !== void 0 ? _b : children\n }, ellipsisConfig.tooltip);\n } else {\n tooltipProps = {\n title: ellipsisConfig.tooltip\n };\n }\n var topAriaLabel = React.useMemo(function () {\n var isValid = function isValid(val) {\n return ['string', 'number'].includes(_typeof(val));\n };\n if (!enableEllipsis || cssEllipsis) {\n return undefined;\n }\n if (isValid(editConfig.text)) {\n return editConfig.text;\n }\n if (isValid(children)) {\n return children;\n }\n if (isValid(title)) {\n return title;\n }\n if (isValid(tooltipProps.title)) {\n return tooltipProps.title;\n }\n return undefined;\n }, [enableEllipsis, cssEllipsis, title, tooltipProps.title, isMergedEllipsis]);\n // =========================== Render ===========================\n // >>>>>>>>>>> Editing input\n if (editing) {\n return /*#__PURE__*/React.createElement(Editable, {\n value: (_c = editConfig.text) !== null && _c !== void 0 ? _c : typeof children === 'string' ? children : '',\n onSave: onEditChange,\n onCancel: onEditCancel,\n onEnd: editConfig.onEnd,\n prefixCls: prefixCls,\n className: className,\n style: style,\n direction: direction,\n component: component,\n maxLength: editConfig.maxLength,\n autoSize: editConfig.autoSize,\n enterIcon: editConfig.enterIcon\n });\n }\n // >>>>>>>>>>> Typography\n // Expand\n var renderExpand = function renderExpand() {\n var expandable = ellipsisConfig.expandable,\n symbol = ellipsisConfig.symbol;\n if (!expandable) return null;\n var expandContent;\n if (symbol) {\n expandContent = symbol;\n } else {\n expandContent = textLocale.expand;\n }\n return /*#__PURE__*/React.createElement(\"a\", {\n key: \"expand\",\n className: \"\".concat(prefixCls, \"-expand\"),\n onClick: onExpandClick,\n \"aria-label\": textLocale.expand\n }, expandContent);\n };\n // Edit\n var renderEdit = function renderEdit() {\n if (!enableEdit) return;\n var icon = editConfig.icon,\n tooltip = editConfig.tooltip;\n var editTitle = toArray(tooltip)[0] || textLocale.edit;\n var ariaLabel = typeof editTitle === 'string' ? editTitle : '';\n return triggerType.includes('icon') ? /*#__PURE__*/React.createElement(Tooltip, {\n key: \"edit\",\n title: tooltip === false ? '' : editTitle\n }, /*#__PURE__*/React.createElement(TransButton, {\n ref: editIconRef,\n className: \"\".concat(prefixCls, \"-edit\"),\n onClick: onEditClick,\n \"aria-label\": ariaLabel\n }, icon || /*#__PURE__*/React.createElement(EditOutlined, {\n role: \"button\"\n }))) : null;\n };\n // Copy\n var renderCopy = function renderCopy() {\n if (!enableCopy) return;\n var tooltips = copyConfig.tooltips,\n icon = copyConfig.icon;\n var tooltipNodes = toList(tooltips);\n var iconNodes = toList(icon);\n var copyTitle = copied ? getNode(tooltipNodes[1], textLocale.copied) : getNode(tooltipNodes[0], textLocale.copy);\n var systemStr = copied ? textLocale.copied : textLocale.copy;\n var ariaLabel = typeof copyTitle === 'string' ? copyTitle : systemStr;\n return /*#__PURE__*/React.createElement(Tooltip, {\n key: \"copy\",\n title: copyTitle\n }, /*#__PURE__*/React.createElement(TransButton, {\n className: classNames(\"\".concat(prefixCls, \"-copy\"), copied && \"\".concat(prefixCls, \"-copy-success\")),\n onClick: onCopyClick,\n \"aria-label\": ariaLabel\n }, copied ? getNode(iconNodes[1], /*#__PURE__*/React.createElement(CheckOutlined, null), true) : getNode(iconNodes[0], /*#__PURE__*/React.createElement(CopyOutlined, null), true)));\n };\n var renderOperations = function renderOperations(renderExpanded) {\n return [renderExpanded && renderExpand(), renderEdit(), renderCopy()];\n };\n var renderEllipsis = function renderEllipsis(needEllipsis) {\n return [needEllipsis && /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": true,\n key: \"ellipsis\"\n }, ELLIPSIS_STR), ellipsisConfig.suffix, renderOperations(needEllipsis)];\n };\n return /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onResize,\n disabled: !mergedEnableEllipsis || cssEllipsis\n }, function (resizeRef) {\n var _classNames;\n return /*#__PURE__*/React.createElement(EllipsisTooltip, {\n tooltipProps: tooltipProps,\n enabledEllipsis: mergedEnableEllipsis,\n isEllipsis: isMergedEllipsis\n }, /*#__PURE__*/React.createElement(Typography, _extends({\n className: classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(type), type), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, \"\".concat(prefixCls, \"-ellipsis\"), enableEllipsis), _defineProperty(_classNames, \"\".concat(prefixCls, \"-single-line\"), mergedEnableEllipsis && rows === 1), _defineProperty(_classNames, \"\".concat(prefixCls, \"-ellipsis-single-line\"), cssTextOverflow), _defineProperty(_classNames, \"\".concat(prefixCls, \"-ellipsis-multiple-line\"), cssLineClamp), _classNames), className),\n prefixCls: customizePrefixCls,\n style: _extends(_extends({}, style), {\n WebkitLineClamp: cssLineClamp ? rows : undefined\n }),\n component: component,\n ref: composeRef(resizeRef, typographyRef, ref),\n direction: direction,\n onClick: triggerType.includes('text') ? onEditClick : undefined,\n \"aria-label\": topAriaLabel === null || topAriaLabel === void 0 ? void 0 : topAriaLabel.toString(),\n title: title\n }, textProps), /*#__PURE__*/React.createElement(Ellipsis, {\n enabledMeasure: mergedEnableEllipsis && !cssEllipsis,\n text: children,\n rows: rows,\n width: ellipsisWidth,\n fontSize: ellipsisFontSize,\n onEllipsis: onJsEllipsis\n }, function (node, needEllipsis) {\n var renderNode = node;\n if (node.length && needEllipsis && topAriaLabel) {\n renderNode = /*#__PURE__*/React.createElement(\"span\", {\n key: \"show-content\",\n \"aria-hidden\": true\n }, renderNode);\n }\n var wrappedContext = wrapperDecorations(props, /*#__PURE__*/React.createElement(React.Fragment, null, renderNode, renderEllipsis(needEllipsis)));\n return wrappedContext;\n })));\n });\n});\nexport default Base;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport Base from './Base';\nvar Link = /*#__PURE__*/React.forwardRef(function (_a, ref) {\n var ellipsis = _a.ellipsis,\n rel = _a.rel,\n restProps = __rest(_a, [\"ellipsis\", \"rel\"]);\n process.env.NODE_ENV !== \"production\" ? warning(_typeof(ellipsis) !== 'object', 'Typography.Link', '`ellipsis` only supports boolean value.') : void 0;\n var mergedProps = _extends(_extends({}, restProps), {\n rel: rel === undefined && restProps.target === '_blank' ? 'noopener noreferrer' : rel\n });\n // @ts-expect-error: https://github.com/ant-design/ant-design/issues/26622\n delete mergedProps.navigate;\n return /*#__PURE__*/React.createElement(Base, _extends({}, mergedProps, {\n ref: ref,\n ellipsis: !!ellipsis,\n component: \"a\"\n }));\n});\nexport default Link;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Base from './Base';\nvar Paragraph = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(Base, _extends({\n ref: ref\n }, props, {\n component: \"div\"\n }));\n});\nexport default Paragraph;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport warning from '../_util/warning';\nimport Base from './Base';\nvar Text = function Text(_a, ref) {\n var ellipsis = _a.ellipsis,\n restProps = __rest(_a, [\"ellipsis\"]);\n var mergedEllipsis = React.useMemo(function () {\n if (ellipsis && _typeof(ellipsis) === 'object') {\n return omit(ellipsis, ['expandable', 'rows']);\n }\n return ellipsis;\n }, [ellipsis]);\n process.env.NODE_ENV !== \"production\" ? warning(_typeof(ellipsis) !== 'object' || !ellipsis || !('expandable' in ellipsis) && !('rows' in ellipsis), 'Typography.Text', '`ellipsis` do not support `expandable` or `rows` props.') : void 0;\n return /*#__PURE__*/React.createElement(Base, _extends({\n ref: ref\n }, restProps, {\n ellipsis: mergedEllipsis,\n component: \"span\"\n }));\n};\nexport default /*#__PURE__*/React.forwardRef(Text);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { tupleNum } from '../_util/type';\nimport warning from '../_util/warning';\nimport Base from './Base';\nvar TITLE_ELE_LIST = tupleNum(1, 2, 3, 4, 5);\nvar Title = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$level = props.level,\n level = _props$level === void 0 ? 1 : _props$level,\n restProps = __rest(props, [\"level\"]);\n var component;\n if (TITLE_ELE_LIST.includes(level)) {\n component = \"h\".concat(level);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Typography.Title', 'Title only accept `1 | 2 | 3 | 4 | 5` as `level` value. And `5` need 4.6.0+ version.') : void 0;\n component = 'h1';\n }\n return /*#__PURE__*/React.createElement(Base, _extends({\n ref: ref\n }, restProps, {\n component: component\n }));\n});\nexport default Title;","import Link from './Link';\nimport Paragraph from './Paragraph';\nimport Text from './Text';\nimport Title from './Title';\nimport OriginTypography from './Typography';\nvar Typography = OriginTypography;\nTypography.Text = Text;\nTypography.Link = Link;\nTypography.Title = Title;\nTypography.Paragraph = Paragraph;\nexport default Typography;","function getError(option, xhr) {\n var msg = \"cannot \".concat(option.method, \" \").concat(option.action, \" \").concat(xhr.status, \"'\");\n var err = new Error(msg);\n err.status = xhr.status;\n err.method = option.method;\n err.url = option.action;\n return err;\n}\n\nfunction getBody(xhr) {\n var text = xhr.responseText || xhr.response;\n\n if (!text) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\n\nexport default function upload(option) {\n // eslint-disable-next-line no-undef\n var xhr = new XMLHttpRequest();\n\n if (option.onProgress && xhr.upload) {\n xhr.upload.onprogress = function progress(e) {\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n }\n\n option.onProgress(e);\n };\n } // eslint-disable-next-line no-undef\n\n\n var formData = new FormData();\n\n if (option.data) {\n Object.keys(option.data).forEach(function (key) {\n var value = option.data[key]; // support key-value array data\n\n if (Array.isArray(value)) {\n value.forEach(function (item) {\n // { list: [ 11, 22 ] }\n // formData.append('list[]', 11);\n formData.append(\"\".concat(key, \"[]\"), item);\n });\n return;\n }\n\n formData.append(key, value);\n });\n } // eslint-disable-next-line no-undef\n\n\n if (option.file instanceof Blob) {\n formData.append(option.filename, option.file, option.file.name);\n } else {\n formData.append(option.filename, option.file);\n }\n\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n\n xhr.onload = function onload() {\n // allow success when 2xx status\n // see https://github.com/react-component/upload/issues/34\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(option, xhr), getBody(xhr));\n }\n\n return option.onSuccess(getBody(xhr), xhr);\n };\n\n xhr.open(option.method, option.action, true); // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n var headers = option.headers || {}; // when set headers['X-Requested-With'] = null , can close default XHR header\n // see https://github.com/react-component/upload/issues/33\n\n if (headers['X-Requested-With'] !== null) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n Object.keys(headers).forEach(function (h) {\n if (headers[h] !== null) {\n xhr.setRequestHeader(h, headers[h]);\n }\n });\n xhr.send(formData);\n return {\n abort: function abort() {\n xhr.abort();\n }\n };\n}","var now = +new Date();\nvar index = 0;\nexport default function uid() {\n // eslint-disable-next-line no-plusplus\n return \"rc-upload-\".concat(now, \"-\").concat(++index);\n}","import warning from \"rc-util/es/warning\";\nexport default (function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n var fileName = file.name || '';\n var mimeType = file.type || '';\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim(); // This is something like */*,* allow all files\n\n if (/^\\*(\\/\\*)?$/.test(type)) {\n return true;\n } // like .jpg, .png\n\n\n if (validType.charAt(0) === '.') {\n var lowerFileName = fileName.toLowerCase();\n var lowerType = validType.toLowerCase();\n var affixList = [lowerType];\n\n if (lowerType === '.jpg' || lowerType === '.jpeg') {\n affixList = ['.jpg', '.jpeg'];\n }\n\n return affixList.some(function (affix) {\n return lowerFileName.endsWith(affix);\n });\n } // This is something like a image/* mime type\n\n\n if (/\\/\\*$/.test(validType)) {\n return baseMimeType === validType.replace(/\\/.*$/, '');\n } // Full match\n\n\n if (mimeType === validType) {\n return true;\n } // Invalidate type should skip\n\n\n if (/^\\w+$/.test(validType)) {\n warning(false, \"Upload takes an invalidate 'accept' type '\".concat(validType, \"'.Skip for check.\"));\n return true;\n }\n\n return false;\n });\n }\n\n return true;\n});","function loopFiles(item, callback) {\n var dirReader = item.createReader();\n var fileList = [];\n\n function sequence() {\n dirReader.readEntries(function (entries) {\n var entryList = Array.prototype.slice.apply(entries);\n fileList = fileList.concat(entryList); // Check if all the file has been viewed\n\n var isFinished = !entryList.length;\n\n if (isFinished) {\n callback(fileList);\n } else {\n sequence();\n }\n });\n }\n\n sequence();\n}\n\nvar traverseFileTree = function traverseFileTree(files, callback, isAccepted) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n var _traverseFileTree = function _traverseFileTree(item, path) {\n // eslint-disable-next-line no-param-reassign\n item.path = path || '';\n\n if (item.isFile) {\n item.file(function (file) {\n if (isAccepted(file)) {\n // https://github.com/ant-design/ant-design/issues/16426\n if (item.fullPath && !file.webkitRelativePath) {\n Object.defineProperties(file, {\n webkitRelativePath: {\n writable: true\n }\n }); // eslint-disable-next-line no-param-reassign\n\n file.webkitRelativePath = item.fullPath.replace(/^\\//, '');\n Object.defineProperties(file, {\n webkitRelativePath: {\n writable: false\n }\n });\n }\n\n callback([file]);\n }\n });\n } else if (item.isDirectory) {\n loopFiles(item, function (entries) {\n entries.forEach(function (entryItem) {\n _traverseFileTree(entryItem, \"\".concat(path).concat(item.name, \"/\"));\n });\n });\n }\n };\n\n files.forEach(function (file) {\n _traverseFileTree(file.webkitGetAsEntry());\n });\n};\n\nexport default traverseFileTree;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"component\", \"prefixCls\", \"className\", \"disabled\", \"id\", \"style\", \"multiple\", \"accept\", \"capture\", \"children\", \"directory\", \"openFileDialogOnClick\", \"onMouseEnter\", \"onMouseLeave\"];\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport defaultRequest from './request';\nimport getUid from './uid';\nimport attrAccept from './attr-accept';\nimport traverseFileTree from './traverseFileTree';\n\nvar AjaxUploader = /*#__PURE__*/function (_Component) {\n _inherits(AjaxUploader, _Component);\n\n var _super = _createSuper(AjaxUploader);\n\n function AjaxUploader() {\n var _this;\n\n _classCallCheck(this, AjaxUploader);\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 _this.state = {\n uid: getUid()\n };\n _this.reqs = {};\n _this.fileInput = void 0;\n _this._isMounted = void 0;\n\n _this.onChange = function (e) {\n var _this$props = _this.props,\n accept = _this$props.accept,\n directory = _this$props.directory;\n var files = e.target.files;\n\n var acceptedFiles = _toConsumableArray(files).filter(function (file) {\n return !directory || attrAccept(file, accept);\n });\n\n _this.uploadFiles(acceptedFiles);\n\n _this.reset();\n };\n\n _this.onClick = function (e) {\n var el = _this.fileInput;\n\n if (!el) {\n return;\n }\n\n var _this$props2 = _this.props,\n children = _this$props2.children,\n onClick = _this$props2.onClick;\n\n if (children && children.type === 'button') {\n var parent = el.parentNode;\n parent.focus();\n parent.querySelector('button').blur();\n }\n\n el.click();\n\n if (onClick) {\n onClick(e);\n }\n };\n\n _this.onKeyDown = function (e) {\n if (e.key === 'Enter') {\n _this.onClick(e);\n }\n };\n\n _this.onFileDrop = function (e) {\n var multiple = _this.props.multiple;\n e.preventDefault();\n\n if (e.type === 'dragover') {\n return;\n }\n\n if (_this.props.directory) {\n traverseFileTree(Array.prototype.slice.call(e.dataTransfer.items), _this.uploadFiles, function (_file) {\n return attrAccept(_file, _this.props.accept);\n });\n } else {\n var files = _toConsumableArray(e.dataTransfer.files).filter(function (file) {\n return attrAccept(file, _this.props.accept);\n });\n\n if (multiple === false) {\n files = files.slice(0, 1);\n }\n\n _this.uploadFiles(files);\n }\n };\n\n _this.uploadFiles = function (files) {\n var originFiles = _toConsumableArray(files);\n\n var postFiles = originFiles.map(function (file) {\n // eslint-disable-next-line no-param-reassign\n file.uid = getUid();\n return _this.processFile(file, originFiles);\n }); // Batch upload files\n\n Promise.all(postFiles).then(function (fileList) {\n var onBatchStart = _this.props.onBatchStart;\n onBatchStart === null || onBatchStart === void 0 ? void 0 : onBatchStart(fileList.map(function (_ref) {\n var origin = _ref.origin,\n parsedFile = _ref.parsedFile;\n return {\n file: origin,\n parsedFile: parsedFile\n };\n }));\n fileList.filter(function (file) {\n return file.parsedFile !== null;\n }).forEach(function (file) {\n _this.post(file);\n });\n });\n };\n\n _this.processFile = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(file, fileList) {\n var beforeUpload, transformedFile, action, mergedAction, data, mergedData, parsedData, parsedFile, mergedParsedFile;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n beforeUpload = _this.props.beforeUpload;\n transformedFile = file;\n\n if (!beforeUpload) {\n _context.next = 14;\n break;\n }\n\n _context.prev = 3;\n _context.next = 6;\n return beforeUpload(file, fileList);\n\n case 6:\n transformedFile = _context.sent;\n _context.next = 12;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](3);\n // Rejection will also trade as false\n transformedFile = false;\n\n case 12:\n if (!(transformedFile === false)) {\n _context.next = 14;\n break;\n }\n\n return _context.abrupt(\"return\", {\n origin: file,\n parsedFile: null,\n action: null,\n data: null\n });\n\n case 14:\n // Get latest action\n action = _this.props.action;\n\n if (!(typeof action === 'function')) {\n _context.next = 21;\n break;\n }\n\n _context.next = 18;\n return action(file);\n\n case 18:\n mergedAction = _context.sent;\n _context.next = 22;\n break;\n\n case 21:\n mergedAction = action;\n\n case 22:\n // Get latest data\n data = _this.props.data;\n\n if (!(typeof data === 'function')) {\n _context.next = 29;\n break;\n }\n\n _context.next = 26;\n return data(file);\n\n case 26:\n mergedData = _context.sent;\n _context.next = 30;\n break;\n\n case 29:\n mergedData = data;\n\n case 30:\n parsedData = // string type is from legacy `transformFile`.\n // Not sure if this will work since no related test case works with it\n (_typeof(transformedFile) === 'object' || typeof transformedFile === 'string') && transformedFile ? transformedFile : file;\n\n if (parsedData instanceof File) {\n parsedFile = parsedData;\n } else {\n parsedFile = new File([parsedData], file.name, {\n type: file.type\n });\n }\n\n mergedParsedFile = parsedFile;\n mergedParsedFile.uid = file.uid;\n return _context.abrupt(\"return\", {\n origin: file,\n data: mergedData,\n parsedFile: mergedParsedFile,\n action: mergedAction\n });\n\n case 35:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[3, 9]]);\n }));\n\n return function (_x, _x2) {\n return _ref2.apply(this, arguments);\n };\n }();\n\n _this.saveFileInput = function (node) {\n _this.fileInput = node;\n };\n\n return _this;\n }\n\n _createClass(AjaxUploader, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._isMounted = true;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._isMounted = false;\n this.abort();\n }\n }, {\n key: \"post\",\n value: function post(_ref3) {\n var _this2 = this;\n\n var data = _ref3.data,\n origin = _ref3.origin,\n action = _ref3.action,\n parsedFile = _ref3.parsedFile;\n\n if (!this._isMounted) {\n return;\n }\n\n var _this$props3 = this.props,\n onStart = _this$props3.onStart,\n customRequest = _this$props3.customRequest,\n name = _this$props3.name,\n headers = _this$props3.headers,\n withCredentials = _this$props3.withCredentials,\n method = _this$props3.method;\n var uid = origin.uid;\n var request = customRequest || defaultRequest;\n var requestOption = {\n action: action,\n filename: name,\n data: data,\n file: parsedFile,\n headers: headers,\n withCredentials: withCredentials,\n method: method || 'post',\n onProgress: function onProgress(e) {\n var onProgress = _this2.props.onProgress;\n onProgress === null || onProgress === void 0 ? void 0 : onProgress(e, parsedFile);\n },\n onSuccess: function onSuccess(ret, xhr) {\n var onSuccess = _this2.props.onSuccess;\n onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(ret, parsedFile, xhr);\n delete _this2.reqs[uid];\n },\n onError: function onError(err, ret) {\n var onError = _this2.props.onError;\n onError === null || onError === void 0 ? void 0 : onError(err, ret, parsedFile);\n delete _this2.reqs[uid];\n }\n };\n onStart(origin);\n this.reqs[uid] = request(requestOption);\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.setState({\n uid: getUid()\n });\n }\n }, {\n key: \"abort\",\n value: function abort(file) {\n var reqs = this.reqs;\n\n if (file) {\n var uid = file.uid ? file.uid : file;\n\n if (reqs[uid] && reqs[uid].abort) {\n reqs[uid].abort();\n }\n\n delete reqs[uid];\n } else {\n Object.keys(reqs).forEach(function (uid) {\n if (reqs[uid] && reqs[uid].abort) {\n reqs[uid].abort();\n }\n\n delete reqs[uid];\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames;\n\n var _this$props4 = this.props,\n Tag = _this$props4.component,\n prefixCls = _this$props4.prefixCls,\n className = _this$props4.className,\n disabled = _this$props4.disabled,\n id = _this$props4.id,\n style = _this$props4.style,\n multiple = _this$props4.multiple,\n accept = _this$props4.accept,\n capture = _this$props4.capture,\n children = _this$props4.children,\n directory = _this$props4.directory,\n openFileDialogOnClick = _this$props4.openFileDialogOnClick,\n onMouseEnter = _this$props4.onMouseEnter,\n onMouseLeave = _this$props4.onMouseLeave,\n otherProps = _objectWithoutProperties(_this$props4, _excluded);\n\n var cls = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls, true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, className, className), _classNames)); // because input don't have directory/webkitdirectory type declaration\n\n var dirProps = directory ? {\n directory: 'directory',\n webkitdirectory: 'webkitdirectory'\n } : {};\n var events = disabled ? {} : {\n onClick: openFileDialogOnClick ? this.onClick : function () {},\n onKeyDown: openFileDialogOnClick ? this.onKeyDown : function () {},\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onDrop: this.onFileDrop,\n onDragOver: this.onFileDrop,\n tabIndex: '0'\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({}, events, {\n className: cls,\n role: \"button\",\n style: style\n }), /*#__PURE__*/React.createElement(\"input\", _extends({}, pickAttrs(otherProps, {\n aria: true,\n data: true\n }), {\n id: id,\n type: \"file\",\n ref: this.saveFileInput,\n onClick: function onClick(e) {\n return e.stopPropagation();\n } // https://github.com/ant-design/ant-design/issues/19948\n ,\n key: this.state.uid,\n style: {\n display: 'none'\n },\n accept: accept\n }, dirProps, {\n multiple: multiple,\n onChange: this.onChange\n }, capture != null ? {\n capture: capture\n } : {})), children);\n }\n }]);\n\n return AjaxUploader;\n}(Component);\n\nexport default AjaxUploader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n\n/* eslint react/prop-types:0 */\nimport React, { Component } from 'react';\nimport AjaxUpload from './AjaxUploader';\n\nfunction empty() {}\n\nvar Upload = /*#__PURE__*/function (_Component) {\n _inherits(Upload, _Component);\n\n var _super = _createSuper(Upload);\n\n function Upload() {\n var _this;\n\n _classCallCheck(this, Upload);\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 _this.uploader = void 0;\n\n _this.saveUploader = function (node) {\n _this.uploader = node;\n };\n\n return _this;\n }\n\n _createClass(Upload, [{\n key: \"abort\",\n value: function abort(file) {\n this.uploader.abort(file);\n }\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(AjaxUpload, _extends({}, this.props, {\n ref: this.saveUploader\n }));\n }\n }]);\n\n return Upload;\n}(Component);\n\nUpload.defaultProps = {\n component: 'span',\n prefixCls: 'rc-upload',\n data: {},\n headers: {},\n name: 'file',\n multipart: false,\n onStart: empty,\n onError: empty,\n onSuccess: empty,\n multiple: false,\n beforeUpload: null,\n customRequest: null,\n withCredentials: false,\n openFileDialogOnClick: true\n};\nexport default Upload;","import Upload from './Upload';\nexport default Upload;","// This icon file is generated automatically.\nvar FileTwoTone = { \"icon\": function render(primaryColor, secondaryColor) { return { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M534 352V136H232v752h560V394H576a42 42 0 01-42-42z\", \"fill\": secondaryColor } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM602 137.8L790.2 326H602V137.8zM792 888H232V136h302v216a42 42 0 0042 42h216v494z\", \"fill\": primaryColor } }] }; }, \"name\": \"file\", \"theme\": \"twotone\" };\nexport default FileTwoTone;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport FileTwoToneSvg from \"@ant-design/icons-svg/es/asn/FileTwoTone\";\nimport AntdIcon from '../components/AntdIcon';\nvar FileTwoTone = function FileTwoTone(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: FileTwoToneSvg\n }));\n};\nFileTwoTone.displayName = 'FileTwoTone';\nexport default /*#__PURE__*/React.forwardRef(FileTwoTone);","// This icon file is generated automatically.\nvar PaperClipOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M779.3 196.6c-94.2-94.2-247.6-94.2-341.7 0l-261 260.8c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l261-260.8c32.4-32.4 75.5-50.2 121.3-50.2s88.9 17.8 121.2 50.2c32.4 32.4 50.2 75.5 50.2 121.2 0 45.8-17.8 88.8-50.2 121.2l-266 265.9-43.1 43.1c-40.3 40.3-105.8 40.3-146.1 0-19.5-19.5-30.2-45.4-30.2-73s10.7-53.5 30.2-73l263.9-263.8c6.7-6.6 15.5-10.3 24.9-10.3h.1c9.4 0 18.1 3.7 24.7 10.3 6.7 6.7 10.3 15.5 10.3 24.9 0 9.3-3.7 18.1-10.3 24.7L372.4 653c-1.7 1.7-2.6 4-2.6 6.4s.9 4.7 2.6 6.4l36.9 36.9a9 9 0 0012.7 0l215.6-215.6c19.9-19.9 30.8-46.3 30.8-74.4s-11-54.6-30.8-74.4c-41.1-41.1-107.9-41-149 0L463 364 224.8 602.1A172.22 172.22 0 00174 724.8c0 46.3 18.1 89.8 50.8 122.5 33.9 33.8 78.3 50.7 122.7 50.7 44.4 0 88.8-16.9 122.6-50.7l309.2-309C824.8 492.7 850 432 850 367.5c.1-64.6-25.1-125.3-70.7-170.9z\" } }] }, \"name\": \"paper-clip\", \"theme\": \"outlined\" };\nexport default PaperClipOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport PaperClipOutlinedSvg from \"@ant-design/icons-svg/es/asn/PaperClipOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar PaperClipOutlined = function PaperClipOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: PaperClipOutlinedSvg\n }));\n};\nPaperClipOutlined.displayName = 'PaperClipOutlined';\nexport default /*#__PURE__*/React.forwardRef(PaperClipOutlined);","// This icon file is generated automatically.\nvar PictureTwoTone = { \"icon\": function render(primaryColor, secondaryColor) { return { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M928 160H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zm-40 632H136v-39.9l138.5-164.3 150.1 178L658.1 489 888 761.6V792zm0-129.8L664.2 396.8c-3.2-3.8-9-3.8-12.2 0L424.6 666.4l-144-170.7c-3.2-3.8-9-3.8-12.2 0L136 652.7V232h752v430.2z\", \"fill\": primaryColor } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M424.6 765.8l-150.1-178L136 752.1V792h752v-30.4L658.1 489z\", \"fill\": secondaryColor } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M136 652.7l132.4-157c3.2-3.8 9-3.8 12.2 0l144 170.7L652 396.8c3.2-3.8 9-3.8 12.2 0L888 662.2V232H136v420.7zM304 280a88 88 0 110 176 88 88 0 010-176z\", \"fill\": secondaryColor } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M276 368a28 28 0 1056 0 28 28 0 10-56 0z\", \"fill\": secondaryColor } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M304 456a88 88 0 100-176 88 88 0 000 176zm0-116c15.5 0 28 12.5 28 28s-12.5 28-28 28-28-12.5-28-28 12.5-28 28-28z\", \"fill\": primaryColor } }] }; }, \"name\": \"picture\", \"theme\": \"twotone\" };\nexport default PictureTwoTone;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport PictureTwoToneSvg from \"@ant-design/icons-svg/es/asn/PictureTwoTone\";\nimport AntdIcon from '../components/AntdIcon';\nvar PictureTwoTone = function PictureTwoTone(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: PictureTwoToneSvg\n }));\n};\nPictureTwoTone.displayName = 'PictureTwoTone';\nexport default /*#__PURE__*/React.forwardRef(PictureTwoTone);","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function file2Obj(file) {\n return _extends(_extends({}, file), {\n lastModified: file.lastModified,\n lastModifiedDate: file.lastModifiedDate,\n name: file.name,\n size: file.size,\n type: file.type,\n uid: file.uid,\n percent: 0,\n originFileObj: file\n });\n}\n/** Upload fileList. Replace file if exist or just push into it. */\nexport function updateFileList(file, fileList) {\n var nextFileList = _toConsumableArray(fileList);\n var fileIndex = nextFileList.findIndex(function (_ref) {\n var uid = _ref.uid;\n return uid === file.uid;\n });\n if (fileIndex === -1) {\n nextFileList.push(file);\n } else {\n nextFileList[fileIndex] = file;\n }\n return nextFileList;\n}\nexport function getFileItem(file, fileList) {\n var matchKey = file.uid !== undefined ? 'uid' : 'name';\n return fileList.filter(function (item) {\n return item[matchKey] === file[matchKey];\n })[0];\n}\nexport function removeFileItem(file, fileList) {\n var matchKey = file.uid !== undefined ? 'uid' : 'name';\n var removed = fileList.filter(function (item) {\n return item[matchKey] !== file[matchKey];\n });\n if (removed.length === fileList.length) {\n return null;\n }\n return removed;\n}\n// ==================== Default Image Preview ====================\nvar extname = function extname() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var temp = url.split('/');\n var filename = temp[temp.length - 1];\n var filenameWithoutSuffix = filename.split(/#|\\?/)[0];\n return (/\\.[^./\\\\]*$/.exec(filenameWithoutSuffix) || [''])[0];\n};\nvar isImageFileType = function isImageFileType(type) {\n return type.indexOf('image/') === 0;\n};\nexport var isImageUrl = function isImageUrl(file) {\n if (file.type && !file.thumbUrl) {\n return isImageFileType(file.type);\n }\n var url = file.thumbUrl || file.url || '';\n var extension = extname(url);\n if (/^data:image\\//.test(url) || /(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico|heic|heif)$/i.test(extension)) {\n return true;\n }\n if (/^data:/.test(url)) {\n // other file types of base64\n return false;\n }\n if (extension) {\n // other file types which have extension\n return false;\n }\n return true;\n};\nvar MEASURE_SIZE = 200;\nexport function previewImage(file) {\n return new Promise(function (resolve) {\n if (!file.type || !isImageFileType(file.type)) {\n resolve('');\n return;\n }\n var canvas = document.createElement('canvas');\n canvas.width = MEASURE_SIZE;\n canvas.height = MEASURE_SIZE;\n canvas.style.cssText = \"position: fixed; left: 0; top: 0; width: \".concat(MEASURE_SIZE, \"px; height: \").concat(MEASURE_SIZE, \"px; z-index: 9999; display: none;\");\n document.body.appendChild(canvas);\n var ctx = canvas.getContext('2d');\n var img = new Image();\n img.onload = function () {\n var width = img.width,\n height = img.height;\n var drawWidth = MEASURE_SIZE;\n var drawHeight = MEASURE_SIZE;\n var offsetX = 0;\n var offsetY = 0;\n if (width > height) {\n drawHeight = height * (MEASURE_SIZE / width);\n offsetY = -(drawHeight - drawWidth) / 2;\n } else {\n drawWidth = width * (MEASURE_SIZE / height);\n offsetX = -(drawWidth - drawHeight) / 2;\n }\n ctx.drawImage(img, offsetX, offsetY, drawWidth, drawHeight);\n var dataURL = canvas.toDataURL();\n document.body.removeChild(canvas);\n resolve(dataURL);\n };\n img.crossOrigin = 'anonymous';\n if (file.type.startsWith('image/svg+xml')) {\n var reader = new FileReader();\n reader.addEventListener('load', function () {\n if (reader.result) img.src = reader.result;\n });\n reader.readAsDataURL(file);\n } else {\n img.src = window.URL.createObjectURL(file);\n }\n });\n}","// This icon file is generated automatically.\nvar DeleteOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\" } }] }, \"name\": \"delete\", \"theme\": \"outlined\" };\nexport default DeleteOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport DeleteOutlinedSvg from \"@ant-design/icons-svg/es/asn/DeleteOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar DeleteOutlined = function DeleteOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: DeleteOutlinedSvg\n }));\n};\nDeleteOutlined.displayName = 'DeleteOutlined';\nexport default /*#__PURE__*/React.forwardRef(DeleteOutlined);","// This icon file is generated automatically.\nvar DownloadOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z\" } }] }, \"name\": \"download\", \"theme\": \"outlined\" };\nexport default DownloadOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport DownloadOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownloadOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar DownloadOutlined = function DownloadOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n ref: ref,\n icon: DownloadOutlinedSvg\n }));\n};\nDownloadOutlined.displayName = 'DownloadOutlined';\nexport default /*#__PURE__*/React.forwardRef(DownloadOutlined);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport DeleteOutlined from \"@ant-design/icons/es/icons/DeleteOutlined\";\nimport DownloadOutlined from \"@ant-design/icons/es/icons/DownloadOutlined\";\nimport EyeOutlined from \"@ant-design/icons/es/icons/EyeOutlined\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport * as React from 'react';\nimport { ConfigContext } from '../../config-provider';\nimport Progress from '../../progress';\nimport Tooltip from '../../tooltip';\nvar ListItem = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var _classNames3;\n var prefixCls = _ref.prefixCls,\n className = _ref.className,\n style = _ref.style,\n locale = _ref.locale,\n listType = _ref.listType,\n file = _ref.file,\n items = _ref.items,\n progressProps = _ref.progress,\n iconRender = _ref.iconRender,\n actionIconRender = _ref.actionIconRender,\n itemRender = _ref.itemRender,\n isImgUrl = _ref.isImgUrl,\n showPreviewIcon = _ref.showPreviewIcon,\n showRemoveIcon = _ref.showRemoveIcon,\n showDownloadIcon = _ref.showDownloadIcon,\n customPreviewIcon = _ref.previewIcon,\n customRemoveIcon = _ref.removeIcon,\n customDownloadIcon = _ref.downloadIcon,\n onPreview = _ref.onPreview,\n onDownload = _ref.onDownload,\n onClose = _ref.onClose;\n var _a, _b;\n // Status: which will ignore `removed` status\n var status = file.status;\n var _React$useState = React.useState(status),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mergedStatus = _React$useState2[0],\n setMergedStatus = _React$useState2[1];\n React.useEffect(function () {\n if (status !== 'removed') {\n setMergedStatus(status);\n }\n }, [status]);\n // Delay to show the progress bar\n var _React$useState3 = React.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n showProgress = _React$useState4[0],\n setShowProgress = _React$useState4[1];\n var progressRafRef = React.useRef(null);\n React.useEffect(function () {\n progressRafRef.current = setTimeout(function () {\n setShowProgress(true);\n }, 300);\n return function () {\n if (progressRafRef.current) {\n clearTimeout(progressRafRef.current);\n }\n };\n }, []);\n // This is used for legacy span make scrollHeight the wrong value.\n // We will force these to be `display: block` with non `picture-card`\n var spanClassName = \"\".concat(prefixCls, \"-span\");\n var iconNode = iconRender(file);\n var icon = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-text-icon\")\n }, iconNode);\n if (listType === 'picture' || listType === 'picture-card') {\n if (mergedStatus === 'uploading' || !file.thumbUrl && !file.url) {\n var _classNames;\n var uploadingClassName = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-list-item-thumbnail\"), true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-list-item-file\"), mergedStatus !== 'uploading'), _classNames));\n icon = /*#__PURE__*/React.createElement(\"div\", {\n className: uploadingClassName\n }, iconNode);\n } else {\n var _classNames2;\n var thumbnail = (isImgUrl === null || isImgUrl === void 0 ? void 0 : isImgUrl(file)) ? /*#__PURE__*/React.createElement(\"img\", {\n src: file.thumbUrl || file.url,\n alt: file.name,\n className: \"\".concat(prefixCls, \"-list-item-image\"),\n crossOrigin: file.crossOrigin\n }) : iconNode;\n var aClassName = classNames((_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-list-item-thumbnail\"), true), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-list-item-file\"), isImgUrl && !isImgUrl(file)), _classNames2));\n icon = /*#__PURE__*/React.createElement(\"a\", {\n className: aClassName,\n onClick: function onClick(e) {\n return onPreview(file, e);\n },\n href: file.url || file.thumbUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, thumbnail);\n }\n }\n var infoUploadingClass = classNames((_classNames3 = {}, _defineProperty(_classNames3, \"\".concat(prefixCls, \"-list-item\"), true), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-list-item-\").concat(mergedStatus), true), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-list-item-list-type-\").concat(listType), true), _classNames3));\n var linkProps = typeof file.linkProps === 'string' ? JSON.parse(file.linkProps) : file.linkProps;\n var removeIcon = showRemoveIcon ? actionIconRender((typeof customRemoveIcon === 'function' ? customRemoveIcon(file) : customRemoveIcon) || /*#__PURE__*/React.createElement(DeleteOutlined, null), function () {\n return onClose(file);\n }, prefixCls, locale.removeFile) : null;\n var downloadIcon = showDownloadIcon && mergedStatus === 'done' ? actionIconRender((typeof customDownloadIcon === 'function' ? customDownloadIcon(file) : customDownloadIcon) || /*#__PURE__*/React.createElement(DownloadOutlined, null), function () {\n return onDownload(file);\n }, prefixCls, locale.downloadFile) : null;\n var downloadOrDelete = listType !== 'picture-card' && /*#__PURE__*/React.createElement(\"span\", {\n key: \"download-delete\",\n className: classNames(\"\".concat(prefixCls, \"-list-item-card-actions\"), {\n picture: listType === 'picture'\n })\n }, downloadIcon, removeIcon);\n var listItemNameClass = classNames(\"\".concat(prefixCls, \"-list-item-name\"));\n var preview = file.url ? [/*#__PURE__*/React.createElement(\"a\", _extends({\n key: \"view\",\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: listItemNameClass,\n title: file.name\n }, linkProps, {\n href: file.url,\n onClick: function onClick(e) {\n return onPreview(file, e);\n }\n }), file.name), downloadOrDelete] : [/*#__PURE__*/React.createElement(\"span\", {\n key: \"view\",\n className: listItemNameClass,\n onClick: function onClick(e) {\n return onPreview(file, e);\n },\n title: file.name\n }, file.name), downloadOrDelete];\n var previewStyle = {\n pointerEvents: 'none',\n opacity: 0.5\n };\n var previewIcon = showPreviewIcon ? /*#__PURE__*/React.createElement(\"a\", {\n href: file.url || file.thumbUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n style: file.url || file.thumbUrl ? undefined : previewStyle,\n onClick: function onClick(e) {\n return onPreview(file, e);\n },\n title: locale.previewFile\n }, typeof customPreviewIcon === 'function' ? customPreviewIcon(file) : customPreviewIcon || /*#__PURE__*/React.createElement(EyeOutlined, null)) : null;\n var actions = listType === 'picture-card' && mergedStatus !== 'uploading' && /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-list-item-actions\")\n }, previewIcon, mergedStatus === 'done' && downloadIcon, removeIcon);\n var message;\n if (file.response && typeof file.response === 'string') {\n message = file.response;\n } else {\n message = ((_a = file.error) === null || _a === void 0 ? void 0 : _a.statusText) || ((_b = file.error) === null || _b === void 0 ? void 0 : _b.message) || locale.uploadError;\n }\n var iconAndPreview = /*#__PURE__*/React.createElement(\"span\", {\n className: spanClassName\n }, icon, preview);\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls;\n var rootPrefixCls = getPrefixCls();\n var dom = /*#__PURE__*/React.createElement(\"div\", {\n className: infoUploadingClass\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-list-item-info\")\n }, iconAndPreview), actions, showProgress && /*#__PURE__*/React.createElement(CSSMotion, {\n motionName: \"\".concat(rootPrefixCls, \"-fade\"),\n visible: mergedStatus === 'uploading',\n motionDeadline: 2000\n }, function (_ref2) {\n var motionClassName = _ref2.className;\n // show loading icon if upload progress listener is disabled\n var loadingProgress = 'percent' in file ? /*#__PURE__*/React.createElement(Progress, _extends({}, progressProps, {\n type: \"line\",\n percent: file.percent\n })) : null;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-list-item-progress\"), motionClassName)\n }, loadingProgress);\n }));\n var listContainerNameClass = classNames(\"\".concat(prefixCls, \"-list-\").concat(listType, \"-container\"), className);\n var item = mergedStatus === 'error' ? /*#__PURE__*/React.createElement(Tooltip, {\n title: message,\n getPopupContainer: function getPopupContainer(node) {\n return node.parentNode;\n }\n }, dom) : dom;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: listContainerNameClass,\n style: style,\n ref: ref\n }, itemRender ? itemRender(item, file, items, {\n download: onDownload.bind(null, file),\n preview: onPreview.bind(null, file),\n remove: onClose.bind(null, file)\n }) : item);\n});\nexport default ListItem;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport FileTwoTone from \"@ant-design/icons/es/icons/FileTwoTone\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport PaperClipOutlined from \"@ant-design/icons/es/icons/PaperClipOutlined\";\nimport PictureTwoTone from \"@ant-design/icons/es/icons/PictureTwoTone\";\nimport classNames from 'classnames';\nimport CSSMotion, { CSSMotionList } from 'rc-motion';\nimport * as React from 'react';\nimport Button from '../../button';\nimport { ConfigContext } from '../../config-provider';\nimport useForceUpdate from '../../_util/hooks/useForceUpdate';\nimport collapseMotion from '../../_util/motion';\nimport { cloneElement, isValidElement } from '../../_util/reactNode';\nimport { isImageUrl, previewImage } from '../utils';\nimport ListItem from './ListItem';\nvar listItemMotion = _extends({}, collapseMotion);\ndelete listItemMotion.onAppearEnd;\ndelete listItemMotion.onEnterEnd;\ndelete listItemMotion.onLeaveEnd;\nvar InternalUploadList = function InternalUploadList(props, ref) {\n var _classNames;\n var _props$listType = props.listType,\n listType = _props$listType === void 0 ? 'text' : _props$listType,\n _props$previewFile = props.previewFile,\n previewFile = _props$previewFile === void 0 ? previewImage : _props$previewFile,\n onPreview = props.onPreview,\n onDownload = props.onDownload,\n onRemove = props.onRemove,\n locale = props.locale,\n iconRender = props.iconRender,\n _props$isImageUrl = props.isImageUrl,\n isImgUrl = _props$isImageUrl === void 0 ? isImageUrl : _props$isImageUrl,\n customizePrefixCls = props.prefixCls,\n _props$items = props.items,\n items = _props$items === void 0 ? [] : _props$items,\n _props$showPreviewIco = props.showPreviewIcon,\n showPreviewIcon = _props$showPreviewIco === void 0 ? true : _props$showPreviewIco,\n _props$showRemoveIcon = props.showRemoveIcon,\n showRemoveIcon = _props$showRemoveIcon === void 0 ? true : _props$showRemoveIcon,\n _props$showDownloadIc = props.showDownloadIcon,\n showDownloadIcon = _props$showDownloadIc === void 0 ? false : _props$showDownloadIc,\n removeIcon = props.removeIcon,\n previewIcon = props.previewIcon,\n downloadIcon = props.downloadIcon,\n _props$progress = props.progress,\n progress = _props$progress === void 0 ? {\n strokeWidth: 2,\n showInfo: false\n } : _props$progress,\n appendAction = props.appendAction,\n _props$appendActionVi = props.appendActionVisible,\n appendActionVisible = _props$appendActionVi === void 0 ? true : _props$appendActionVi,\n itemRender = props.itemRender;\n var forceUpdate = useForceUpdate();\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n motionAppear = _React$useState2[0],\n setMotionAppear = _React$useState2[1];\n // ============================= Effect =============================\n React.useEffect(function () {\n if (listType !== 'picture' && listType !== 'picture-card') {\n return;\n }\n (items || []).forEach(function (file) {\n if (typeof document === 'undefined' || typeof window === 'undefined' || !window.FileReader || !window.File || !(file.originFileObj instanceof File || file.originFileObj instanceof Blob) || file.thumbUrl !== undefined) {\n return;\n }\n file.thumbUrl = '';\n if (previewFile) {\n previewFile(file.originFileObj).then(function (previewDataUrl) {\n // Need append '' to avoid dead loop\n file.thumbUrl = previewDataUrl || '';\n forceUpdate();\n });\n }\n });\n }, [listType, items, previewFile]);\n React.useEffect(function () {\n setMotionAppear(true);\n }, []);\n // ============================= Events =============================\n var onInternalPreview = function onInternalPreview(file, e) {\n if (!onPreview) {\n return;\n }\n e === null || e === void 0 ? void 0 : e.preventDefault();\n return onPreview(file);\n };\n var onInternalDownload = function onInternalDownload(file) {\n if (typeof onDownload === 'function') {\n onDownload(file);\n } else if (file.url) {\n window.open(file.url);\n }\n };\n var onInternalClose = function onInternalClose(file) {\n onRemove === null || onRemove === void 0 ? void 0 : onRemove(file);\n };\n var internalIconRender = function internalIconRender(file) {\n if (iconRender) {\n return iconRender(file, listType);\n }\n var isLoading = file.status === 'uploading';\n var fileIcon = isImgUrl && isImgUrl(file) ? /*#__PURE__*/React.createElement(PictureTwoTone, null) : /*#__PURE__*/React.createElement(FileTwoTone, null);\n var icon = isLoading ? /*#__PURE__*/React.createElement(LoadingOutlined, null) : /*#__PURE__*/React.createElement(PaperClipOutlined, null);\n if (listType === 'picture') {\n icon = isLoading ? /*#__PURE__*/React.createElement(LoadingOutlined, null) : fileIcon;\n } else if (listType === 'picture-card') {\n icon = isLoading ? locale.uploading : fileIcon;\n }\n return icon;\n };\n var actionIconRender = function actionIconRender(customIcon, callback, prefixCls, title) {\n var btnProps = {\n type: 'text',\n size: 'small',\n title: title,\n onClick: function onClick(e) {\n callback();\n if (isValidElement(customIcon) && customIcon.props.onClick) {\n customIcon.props.onClick(e);\n }\n },\n className: \"\".concat(prefixCls, \"-list-item-card-actions-btn\")\n };\n if (isValidElement(customIcon)) {\n var btnIcon = cloneElement(customIcon, _extends(_extends({}, customIcon.props), {\n onClick: function onClick() {}\n }));\n return /*#__PURE__*/React.createElement(Button, _extends({}, btnProps, {\n icon: btnIcon\n }));\n }\n return /*#__PURE__*/React.createElement(Button, _extends({}, btnProps), /*#__PURE__*/React.createElement(\"span\", null, customIcon));\n };\n // ============================== Ref ===============================\n // Test needs\n React.useImperativeHandle(ref, function () {\n return {\n handlePreview: onInternalPreview,\n handleDownload: onInternalDownload\n };\n });\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n // ============================= Render =============================\n var prefixCls = getPrefixCls('upload', customizePrefixCls);\n var listClassNames = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-list\"), true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-list-\").concat(listType), true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-list-rtl\"), direction === 'rtl'), _classNames));\n // >>> Motion config\n var motionKeyList = _toConsumableArray(items.map(function (file) {\n return {\n key: file.uid,\n file: file\n };\n }));\n var animationDirection = listType === 'picture-card' ? 'animate-inline' : 'animate';\n // const transitionName = list.length === 0 ? '' : `${prefixCls}-${animationDirection}`;\n var motionConfig = {\n motionDeadline: 2000,\n motionName: \"\".concat(prefixCls, \"-\").concat(animationDirection),\n keys: motionKeyList,\n motionAppear: motionAppear\n };\n if (listType !== 'picture-card') {\n motionConfig = _extends(_extends({}, listItemMotion), motionConfig);\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: listClassNames\n }, /*#__PURE__*/React.createElement(CSSMotionList, _extends({}, motionConfig, {\n component: false\n }), function (_ref) {\n var key = _ref.key,\n file = _ref.file,\n motionClassName = _ref.className,\n motionStyle = _ref.style;\n return /*#__PURE__*/React.createElement(ListItem, {\n key: key,\n locale: locale,\n prefixCls: prefixCls,\n className: motionClassName,\n style: motionStyle,\n file: file,\n items: items,\n progress: progress,\n listType: listType,\n isImgUrl: isImgUrl,\n showPreviewIcon: showPreviewIcon,\n showRemoveIcon: showRemoveIcon,\n showDownloadIcon: showDownloadIcon,\n removeIcon: removeIcon,\n previewIcon: previewIcon,\n downloadIcon: downloadIcon,\n iconRender: internalIconRender,\n actionIconRender: actionIconRender,\n itemRender: itemRender,\n onPreview: onInternalPreview,\n onDownload: onInternalDownload,\n onClose: onInternalClose\n });\n }), appendAction && /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motionConfig, {\n visible: appendActionVisible,\n forceRender: true\n }), function (_ref2) {\n var motionClassName = _ref2.className,\n motionStyle = _ref2.style;\n return cloneElement(appendAction, function (oriProps) {\n return {\n className: classNames(oriProps.className, motionClassName),\n style: _extends(_extends(_extends({}, motionStyle), {\n // prevent the element has hover css pseudo-class that may cause animation to end prematurely.\n pointerEvents: motionClassName ? 'none' : undefined\n }), oriProps.style)\n };\n });\n }));\n};\nvar UploadList = /*#__PURE__*/React.forwardRef(InternalUploadList);\nif (process.env.NODE_ENV !== 'production') {\n UploadList.displayName = 'UploadList';\n}\nexport default UploadList;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport classNames from 'classnames';\nimport RcUpload from 'rc-upload';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport * as React from 'react';\nimport { flushSync } from 'react-dom';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport defaultLocale from '../locale/default';\nimport warning from '../_util/warning';\nimport UploadList from './UploadList';\nimport { file2Obj, getFileItem, removeFileItem, updateFileList } from './utils';\nexport var LIST_IGNORE = \"__LIST_IGNORE_\".concat(Date.now(), \"__\");\nvar InternalUpload = function InternalUpload(props, ref) {\n var _classNames2;\n var fileList = props.fileList,\n defaultFileList = props.defaultFileList,\n onRemove = props.onRemove,\n _props$showUploadList = props.showUploadList,\n showUploadList = _props$showUploadList === void 0 ? true : _props$showUploadList,\n _props$listType = props.listType,\n listType = _props$listType === void 0 ? 'text' : _props$listType,\n onPreview = props.onPreview,\n onDownload = props.onDownload,\n onChange = props.onChange,\n onDrop = props.onDrop,\n previewFile = props.previewFile,\n customDisabled = props.disabled,\n propLocale = props.locale,\n iconRender = props.iconRender,\n isImageUrl = props.isImageUrl,\n progress = props.progress,\n customizePrefixCls = props.prefixCls,\n className = props.className,\n _props$type = props.type,\n type = _props$type === void 0 ? 'select' : _props$type,\n children = props.children,\n style = props.style,\n itemRender = props.itemRender,\n maxCount = props.maxCount,\n _props$data = props.data,\n data = _props$data === void 0 ? {} : _props$data,\n _props$multiple = props.multiple,\n multiple = _props$multiple === void 0 ? false : _props$multiple,\n _props$action = props.action,\n action = _props$action === void 0 ? '' : _props$action,\n _props$accept = props.accept,\n accept = _props$accept === void 0 ? '' : _props$accept,\n _props$supportServerR = props.supportServerRender,\n supportServerRender = _props$supportServerR === void 0 ? true : _props$supportServerR;\n // ===================== Disabled =====================\n var disabled = React.useContext(DisabledContext);\n var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n var _useMergedState = useMergedState(defaultFileList || [], {\n value: fileList,\n postState: function postState(list) {\n return list !== null && list !== void 0 ? list : [];\n }\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedFileList = _useMergedState2[0],\n setMergedFileList = _useMergedState2[1];\n var _React$useState = React.useState('drop'),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n dragState = _React$useState2[0],\n setDragState = _React$useState2[1];\n var upload = React.useRef(null);\n process.env.NODE_ENV !== \"production\" ? warning('fileList' in props || !('value' in props), 'Upload', '`value` is not a valid prop, do you mean `fileList`?') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!('transformFile' in props), 'Upload', '`transformFile` is deprecated. Please use `beforeUpload` directly.') : void 0;\n // Control mode will auto fill file uid if not provided\n React.useMemo(function () {\n var timestamp = Date.now();\n (fileList || []).forEach(function (file, index) {\n if (!file.uid && !Object.isFrozen(file)) {\n file.uid = \"__AUTO__\".concat(timestamp, \"_\").concat(index, \"__\");\n }\n });\n }, [fileList]);\n var onInternalChange = function onInternalChange(file, changedFileList, event) {\n var cloneList = _toConsumableArray(changedFileList);\n // Cut to match count\n if (maxCount === 1) {\n cloneList = cloneList.slice(-1);\n } else if (maxCount) {\n cloneList = cloneList.slice(0, maxCount);\n }\n // Prevent React18 auto batch since input[upload] trigger process at same time\n // which makes fileList closure problem\n flushSync(function () {\n setMergedFileList(cloneList);\n });\n var changeInfo = {\n file: file,\n fileList: cloneList\n };\n if (event) {\n changeInfo.event = event;\n }\n onChange === null || onChange === void 0 ? void 0 : onChange(changeInfo);\n };\n var mergedBeforeUpload = function mergedBeforeUpload(file, fileListArgs) {\n return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var beforeUpload, transformFile, parsedFile, result;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n beforeUpload = props.beforeUpload, transformFile = props.transformFile;\n parsedFile = file;\n if (!beforeUpload) {\n _context.next = 13;\n break;\n }\n _context.next = 5;\n return beforeUpload(file, fileListArgs);\n case 5:\n result = _context.sent;\n if (!(result === false)) {\n _context.next = 8;\n break;\n }\n return _context.abrupt(\"return\", false);\n case 8:\n // Hack for LIST_IGNORE, we add additional info to remove from the list\n delete file[LIST_IGNORE];\n if (!(result === LIST_IGNORE)) {\n _context.next = 12;\n break;\n }\n Object.defineProperty(file, LIST_IGNORE, {\n value: true,\n configurable: true\n });\n return _context.abrupt(\"return\", false);\n case 12:\n if (_typeof(result) === 'object' && result) {\n parsedFile = result;\n }\n case 13:\n if (!transformFile) {\n _context.next = 17;\n break;\n }\n _context.next = 16;\n return transformFile(parsedFile);\n case 16:\n parsedFile = _context.sent;\n case 17:\n return _context.abrupt(\"return\", parsedFile);\n case 18:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n };\n var onBatchStart = function onBatchStart(batchFileInfoList) {\n // Skip file which marked as `LIST_IGNORE`, these file will not add to file list\n var filteredFileInfoList = batchFileInfoList.filter(function (info) {\n return !info.file[LIST_IGNORE];\n });\n // Nothing to do since no file need upload\n if (!filteredFileInfoList.length) {\n return;\n }\n var objectFileList = filteredFileInfoList.map(function (info) {\n return file2Obj(info.file);\n });\n // Concat new files with prev files\n var newFileList = _toConsumableArray(mergedFileList);\n objectFileList.forEach(function (fileObj) {\n // Replace file if exist\n newFileList = updateFileList(fileObj, newFileList);\n });\n objectFileList.forEach(function (fileObj, index) {\n // Repeat trigger `onChange` event for compatible\n var triggerFileObj = fileObj;\n if (!filteredFileInfoList[index].parsedFile) {\n // `beforeUpload` return false\n var originFileObj = fileObj.originFileObj;\n var clone;\n try {\n clone = new File([originFileObj], originFileObj.name, {\n type: originFileObj.type\n });\n } catch (e) {\n clone = new Blob([originFileObj], {\n type: originFileObj.type\n });\n clone.name = originFileObj.name;\n clone.lastModifiedDate = new Date();\n clone.lastModified = new Date().getTime();\n }\n clone.uid = fileObj.uid;\n triggerFileObj = clone;\n } else {\n // Inject `uploading` status\n fileObj.status = 'uploading';\n }\n onInternalChange(triggerFileObj, newFileList);\n });\n };\n var onSuccess = function onSuccess(response, file, xhr) {\n try {\n if (typeof response === 'string') {\n response = JSON.parse(response);\n }\n } catch (e) {\n /* do nothing */\n }\n // removed\n if (!getFileItem(file, mergedFileList)) {\n return;\n }\n var targetItem = file2Obj(file);\n targetItem.status = 'done';\n targetItem.percent = 100;\n targetItem.response = response;\n targetItem.xhr = xhr;\n var nextFileList = updateFileList(targetItem, mergedFileList);\n onInternalChange(targetItem, nextFileList);\n };\n var onProgress = function onProgress(e, file) {\n // removed\n if (!getFileItem(file, mergedFileList)) {\n return;\n }\n var targetItem = file2Obj(file);\n targetItem.status = 'uploading';\n targetItem.percent = e.percent;\n var nextFileList = updateFileList(targetItem, mergedFileList);\n onInternalChange(targetItem, nextFileList, e);\n };\n var onError = function onError(error, response, file) {\n // removed\n if (!getFileItem(file, mergedFileList)) {\n return;\n }\n var targetItem = file2Obj(file);\n targetItem.error = error;\n targetItem.response = response;\n targetItem.status = 'error';\n var nextFileList = updateFileList(targetItem, mergedFileList);\n onInternalChange(targetItem, nextFileList);\n };\n var handleRemove = function handleRemove(file) {\n var currentFile;\n Promise.resolve(typeof onRemove === 'function' ? onRemove(file) : onRemove).then(function (ret) {\n var _a;\n // Prevent removing file\n if (ret === false) {\n return;\n }\n var removedFileList = removeFileItem(file, mergedFileList);\n if (removedFileList) {\n currentFile = _extends(_extends({}, file), {\n status: 'removed'\n });\n mergedFileList === null || mergedFileList === void 0 ? void 0 : mergedFileList.forEach(function (item) {\n var matchKey = currentFile.uid !== undefined ? 'uid' : 'name';\n if (item[matchKey] === currentFile[matchKey] && !Object.isFrozen(item)) {\n item.status = 'removed';\n }\n });\n (_a = upload.current) === null || _a === void 0 ? void 0 : _a.abort(currentFile);\n onInternalChange(currentFile, removedFileList);\n }\n });\n };\n var onFileDrop = function onFileDrop(e) {\n setDragState(e.type);\n if (e.type === 'drop') {\n onDrop === null || onDrop === void 0 ? void 0 : onDrop(e);\n }\n };\n // Test needs\n React.useImperativeHandle(ref, function () {\n return {\n onBatchStart: onBatchStart,\n onSuccess: onSuccess,\n onProgress: onProgress,\n onError: onError,\n fileList: mergedFileList,\n upload: upload.current\n };\n });\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n direction = _React$useContext.direction;\n var prefixCls = getPrefixCls('upload', customizePrefixCls);\n var rcUploadProps = _extends(_extends({\n onBatchStart: onBatchStart,\n onError: onError,\n onProgress: onProgress,\n onSuccess: onSuccess\n }, props), {\n data: data,\n multiple: multiple,\n action: action,\n accept: accept,\n supportServerRender: supportServerRender,\n prefixCls: prefixCls,\n disabled: mergedDisabled,\n beforeUpload: mergedBeforeUpload,\n onChange: undefined\n });\n delete rcUploadProps.className;\n delete rcUploadProps.style;\n // Remove id to avoid open by label when trigger is hidden\n // !children: https://github.com/ant-design/ant-design/issues/14298\n // disabled: https://github.com/ant-design/ant-design/issues/16478\n // https://github.com/ant-design/ant-design/issues/24197\n if (!children || mergedDisabled) {\n delete rcUploadProps.id;\n }\n var renderUploadList = function renderUploadList(button, buttonVisible) {\n return showUploadList ? /*#__PURE__*/React.createElement(LocaleReceiver, {\n componentName: \"Upload\",\n defaultLocale: defaultLocale.Upload\n }, function (contextLocale) {\n var _ref = typeof showUploadList === 'boolean' ? {} : showUploadList,\n showRemoveIcon = _ref.showRemoveIcon,\n showPreviewIcon = _ref.showPreviewIcon,\n showDownloadIcon = _ref.showDownloadIcon,\n removeIcon = _ref.removeIcon,\n previewIcon = _ref.previewIcon,\n downloadIcon = _ref.downloadIcon;\n return /*#__PURE__*/React.createElement(UploadList, {\n prefixCls: prefixCls,\n listType: listType,\n items: mergedFileList,\n previewFile: previewFile,\n onPreview: onPreview,\n onDownload: onDownload,\n onRemove: handleRemove,\n showRemoveIcon: !mergedDisabled && showRemoveIcon,\n showPreviewIcon: showPreviewIcon,\n showDownloadIcon: showDownloadIcon,\n removeIcon: removeIcon,\n previewIcon: previewIcon,\n downloadIcon: downloadIcon,\n iconRender: iconRender,\n locale: _extends(_extends({}, contextLocale), propLocale),\n isImageUrl: isImageUrl,\n progress: progress,\n appendAction: button,\n appendActionVisible: buttonVisible,\n itemRender: itemRender\n });\n }) : button;\n };\n if (type === 'drag') {\n var _classNames;\n var dragCls = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-drag\"), true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-drag-uploading\"), mergedFileList.some(function (file) {\n return file.status === 'uploading';\n })), _defineProperty(_classNames, \"\".concat(prefixCls, \"-drag-hover\"), dragState === 'dragover'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), mergedDisabled), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n return /*#__PURE__*/React.createElement(\"span\", null, /*#__PURE__*/React.createElement(\"div\", {\n className: dragCls,\n onDrop: onFileDrop,\n onDragOver: onFileDrop,\n onDragLeave: onFileDrop,\n style: style\n }, /*#__PURE__*/React.createElement(RcUpload, _extends({}, rcUploadProps, {\n ref: upload,\n className: \"\".concat(prefixCls, \"-btn\")\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-drag-container\")\n }, children))), renderUploadList());\n }\n var uploadButtonCls = classNames(prefixCls, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-select\"), true), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-select-\").concat(listType), true), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-disabled\"), mergedDisabled), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames2));\n var renderUploadButton = function renderUploadButton(uploadButtonStyle) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: uploadButtonCls,\n style: uploadButtonStyle\n }, /*#__PURE__*/React.createElement(RcUpload, _extends({}, rcUploadProps, {\n ref: upload\n })));\n };\n var uploadButton = renderUploadButton(children ? undefined : {\n display: 'none'\n });\n if (listType === 'picture-card') {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-picture-card-wrapper\"), className)\n }, renderUploadList(uploadButton, !!children));\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: className\n }, uploadButton, renderUploadList());\n};\nvar Upload = /*#__PURE__*/React.forwardRef(InternalUpload);\nif (process.env.NODE_ENV !== 'production') {\n Upload.displayName = 'Upload';\n}\nexport default Upload;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport Upload from './Upload';\nvar Dragger = /*#__PURE__*/React.forwardRef(function (_a, ref) {\n var style = _a.style,\n height = _a.height,\n restProps = __rest(_a, [\"style\", \"height\"]);\n return /*#__PURE__*/React.createElement(Upload, _extends({\n ref: ref\n }, restProps, {\n type: \"drag\",\n style: _extends(_extends({}, style), {\n height: height\n })\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n Dragger.displayName = 'Dragger';\n}\nexport default Dragger;","import Dragger from './Dragger';\nimport InternalUpload, { LIST_IGNORE } from './Upload';\nvar Upload = InternalUpload;\nUpload.Dragger = Dragger;\nUpload.LIST_IGNORE = LIST_IGNORE;\nexport default Upload;","import * as React from 'react';\nvar PanelContext = /*#__PURE__*/React.createContext({});\nexport default PanelContext;","import * as React from 'react';\nimport PanelContext from '../PanelContext';\nvar HIDDEN_STYLE = {\n visibility: 'hidden'\n};\nfunction Header(_ref) {\n var prefixCls = _ref.prefixCls,\n _ref$prevIcon = _ref.prevIcon,\n prevIcon = _ref$prevIcon === void 0 ? \"\\u2039\" : _ref$prevIcon,\n _ref$nextIcon = _ref.nextIcon,\n nextIcon = _ref$nextIcon === void 0 ? \"\\u203A\" : _ref$nextIcon,\n _ref$superPrevIcon = _ref.superPrevIcon,\n superPrevIcon = _ref$superPrevIcon === void 0 ? \"\\xAB\" : _ref$superPrevIcon,\n _ref$superNextIcon = _ref.superNextIcon,\n superNextIcon = _ref$superNextIcon === void 0 ? \"\\xBB\" : _ref$superNextIcon,\n onSuperPrev = _ref.onSuperPrev,\n onSuperNext = _ref.onSuperNext,\n onPrev = _ref.onPrev,\n onNext = _ref.onNext,\n children = _ref.children;\n var _React$useContext = React.useContext(PanelContext),\n hideNextBtn = _React$useContext.hideNextBtn,\n hidePrevBtn = _React$useContext.hidePrevBtn;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: prefixCls\n }, onSuperPrev && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: onSuperPrev,\n tabIndex: -1,\n className: \"\".concat(prefixCls, \"-super-prev-btn\"),\n style: hidePrevBtn ? HIDDEN_STYLE : {}\n }, superPrevIcon), onPrev && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: onPrev,\n tabIndex: -1,\n className: \"\".concat(prefixCls, \"-prev-btn\"),\n style: hidePrevBtn ? HIDDEN_STYLE : {}\n }, prevIcon), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-view\")\n }, children), onNext && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: onNext,\n tabIndex: -1,\n className: \"\".concat(prefixCls, \"-next-btn\"),\n style: hideNextBtn ? HIDDEN_STYLE : {}\n }, nextIcon), onSuperNext && /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: onSuperNext,\n tabIndex: -1,\n className: \"\".concat(prefixCls, \"-super-next-btn\"),\n style: hideNextBtn ? HIDDEN_STYLE : {}\n }, superNextIcon));\n}\nexport default Header;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Header from '../Header';\nimport { DECADE_DISTANCE_COUNT } from '.';\nimport PanelContext from '../../PanelContext';\nfunction DecadeHeader(props) {\n var prefixCls = props.prefixCls,\n generateConfig = props.generateConfig,\n viewDate = props.viewDate,\n onPrevDecades = props.onPrevDecades,\n onNextDecades = props.onNextDecades;\n var _React$useContext = React.useContext(PanelContext),\n hideHeader = _React$useContext.hideHeader;\n if (hideHeader) {\n return null;\n }\n var headerPrefixCls = \"\".concat(prefixCls, \"-header\");\n var yearNumber = generateConfig.getYear(viewDate);\n var startYear = Math.floor(yearNumber / DECADE_DISTANCE_COUNT) * DECADE_DISTANCE_COUNT;\n var endYear = startYear + DECADE_DISTANCE_COUNT - 1;\n return /*#__PURE__*/React.createElement(Header, _extends({}, props, {\n prefixCls: headerPrefixCls,\n onSuperPrev: onPrevDecades,\n onSuperNext: onNextDecades\n }), startYear, \"-\", endYear);\n}\nexport default DecadeHeader;","export function setTime(generateConfig, date, hour, minute, second) {\n var nextTime = generateConfig.setHour(date, hour);\n nextTime = generateConfig.setMinute(nextTime, minute);\n nextTime = generateConfig.setSecond(nextTime, second);\n return nextTime;\n}\nexport function setDateTime(generateConfig, date, defaultDate) {\n if (!defaultDate) {\n return date;\n }\n var newDate = date;\n newDate = generateConfig.setHour(newDate, generateConfig.getHour(defaultDate));\n newDate = generateConfig.setMinute(newDate, generateConfig.getMinute(defaultDate));\n newDate = generateConfig.setSecond(newDate, generateConfig.getSecond(defaultDate));\n return newDate;\n}\nexport function getLowerBoundTime(hour, minute, second, hourStep, minuteStep, secondStep) {\n var lowerBoundHour = Math.floor(hour / hourStep) * hourStep;\n if (lowerBoundHour < hour) {\n return [lowerBoundHour, 60 - minuteStep, 60 - secondStep];\n }\n var lowerBoundMinute = Math.floor(minute / minuteStep) * minuteStep;\n if (lowerBoundMinute < minute) {\n return [lowerBoundHour, lowerBoundMinute, 60 - secondStep];\n }\n var lowerBoundSecond = Math.floor(second / secondStep) * secondStep;\n return [lowerBoundHour, lowerBoundMinute, lowerBoundSecond];\n}\nexport function getLastDay(generateConfig, date) {\n var year = generateConfig.getYear(date);\n var month = generateConfig.getMonth(date) + 1;\n var endDate = generateConfig.getEndDate(generateConfig.getFixedDate(\"\".concat(year, \"-\").concat(month, \"-01\")));\n var lastDay = generateConfig.getDate(endDate);\n var monthShow = month < 10 ? \"0\".concat(month) : \"\".concat(month);\n return \"\".concat(year, \"-\").concat(monthShow, \"-\").concat(lastDay);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport PanelContext from '../PanelContext';\nimport { getLastDay } from '../utils/timeUtil';\nimport { getCellDateDisabled } from '../utils/dateUtil';\nexport default function PanelBody(_ref) {\n var prefixCls = _ref.prefixCls,\n disabledDate = _ref.disabledDate,\n onSelect = _ref.onSelect,\n picker = _ref.picker,\n rowNum = _ref.rowNum,\n colNum = _ref.colNum,\n prefixColumn = _ref.prefixColumn,\n rowClassName = _ref.rowClassName,\n baseDate = _ref.baseDate,\n getCellClassName = _ref.getCellClassName,\n getCellText = _ref.getCellText,\n getCellNode = _ref.getCellNode,\n getCellDate = _ref.getCellDate,\n generateConfig = _ref.generateConfig,\n titleCell = _ref.titleCell,\n headerCells = _ref.headerCells;\n var _React$useContext = React.useContext(PanelContext),\n onDateMouseEnter = _React$useContext.onDateMouseEnter,\n onDateMouseLeave = _React$useContext.onDateMouseLeave,\n mode = _React$useContext.mode;\n var cellPrefixCls = \"\".concat(prefixCls, \"-cell\");\n // =============================== Body ===============================\n var rows = [];\n for (var i = 0; i < rowNum; i += 1) {\n var row = [];\n var rowStartDate = void 0;\n var _loop = function _loop() {\n var _objectSpread2;\n var offset = i * colNum + j;\n var currentDate = getCellDate(baseDate, offset);\n var disabled = getCellDateDisabled({\n cellDate: currentDate,\n mode: mode,\n disabledDate: disabledDate,\n generateConfig: generateConfig\n });\n if (j === 0) {\n rowStartDate = currentDate;\n if (prefixColumn) {\n row.push(prefixColumn(rowStartDate));\n }\n }\n var title = titleCell && titleCell(currentDate);\n row.push( /*#__PURE__*/React.createElement(\"td\", {\n key: j,\n title: title,\n className: classNames(cellPrefixCls, _objectSpread((_objectSpread2 = {}, _defineProperty(_objectSpread2, \"\".concat(cellPrefixCls, \"-disabled\"), disabled), _defineProperty(_objectSpread2, \"\".concat(cellPrefixCls, \"-start\"), getCellText(currentDate) === 1 || picker === 'year' && Number(title) % 10 === 0), _defineProperty(_objectSpread2, \"\".concat(cellPrefixCls, \"-end\"), title === getLastDay(generateConfig, currentDate) || picker === 'year' && Number(title) % 10 === 9), _objectSpread2), getCellClassName(currentDate))),\n onClick: function onClick() {\n if (!disabled) {\n onSelect(currentDate);\n }\n },\n onMouseEnter: function onMouseEnter() {\n if (!disabled && onDateMouseEnter) {\n onDateMouseEnter(currentDate);\n }\n },\n onMouseLeave: function onMouseLeave() {\n if (!disabled && onDateMouseLeave) {\n onDateMouseLeave(currentDate);\n }\n }\n }, getCellNode ? getCellNode(currentDate) : /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(cellPrefixCls, \"-inner\")\n }, getCellText(currentDate))));\n };\n for (var j = 0; j < colNum; j += 1) {\n _loop();\n }\n rows.push( /*#__PURE__*/React.createElement(\"tr\", {\n key: i,\n className: rowClassName && rowClassName(rowStartDate)\n }, row));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-body\")\n }, /*#__PURE__*/React.createElement(\"table\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, headerCells && /*#__PURE__*/React.createElement(\"thead\", null, /*#__PURE__*/React.createElement(\"tr\", null, headerCells)), /*#__PURE__*/React.createElement(\"tbody\", null, rows)));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport { DECADE_DISTANCE_COUNT, DECADE_UNIT_DIFF } from '.';\nimport PanelBody from '../PanelBody';\nexport var DECADE_COL_COUNT = 3;\nvar DECADE_ROW_COUNT = 4;\nfunction DecadeBody(props) {\n var DECADE_UNIT_DIFF_DES = DECADE_UNIT_DIFF - 1;\n var prefixCls = props.prefixCls,\n viewDate = props.viewDate,\n generateConfig = props.generateConfig;\n var cellPrefixCls = \"\".concat(prefixCls, \"-cell\");\n var yearNumber = generateConfig.getYear(viewDate);\n var decadeYearNumber = Math.floor(yearNumber / DECADE_UNIT_DIFF) * DECADE_UNIT_DIFF;\n var startDecadeYear = Math.floor(yearNumber / DECADE_DISTANCE_COUNT) * DECADE_DISTANCE_COUNT;\n var endDecadeYear = startDecadeYear + DECADE_DISTANCE_COUNT - 1;\n var baseDecadeYear = generateConfig.setYear(viewDate, startDecadeYear - Math.ceil((DECADE_COL_COUNT * DECADE_ROW_COUNT * DECADE_UNIT_DIFF - DECADE_DISTANCE_COUNT) / 2));\n var getCellClassName = function getCellClassName(date) {\n var _ref;\n var startDecadeNumber = generateConfig.getYear(date);\n var endDecadeNumber = startDecadeNumber + DECADE_UNIT_DIFF_DES;\n return _ref = {}, _defineProperty(_ref, \"\".concat(cellPrefixCls, \"-in-view\"), startDecadeYear <= startDecadeNumber && endDecadeNumber <= endDecadeYear), _defineProperty(_ref, \"\".concat(cellPrefixCls, \"-selected\"), startDecadeNumber === decadeYearNumber), _ref;\n };\n return /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {\n rowNum: DECADE_ROW_COUNT,\n colNum: DECADE_COL_COUNT,\n baseDate: baseDecadeYear,\n getCellText: function getCellText(date) {\n var startDecadeNumber = generateConfig.getYear(date);\n return \"\".concat(startDecadeNumber, \"-\").concat(startDecadeNumber + DECADE_UNIT_DIFF_DES);\n },\n getCellClassName: getCellClassName,\n getCellDate: function getCellDate(date, offset) {\n return generateConfig.addYear(date, offset * DECADE_UNIT_DIFF);\n }\n }));\n}\nexport default DecadeBody;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport raf from \"rc-util/es/raf\";\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nvar scrollIds = new Map();\n/** Trigger when element is visible in view */\nexport function waitElementReady(element, callback) {\n var id;\n function tryOrNextFrame() {\n if (isVisible(element)) {\n callback();\n } else {\n id = raf(function () {\n tryOrNextFrame();\n });\n }\n }\n tryOrNextFrame();\n return function () {\n raf.cancel(id);\n };\n}\n/* eslint-disable no-param-reassign */\nexport function scrollTo(element, to, duration) {\n if (scrollIds.get(element)) {\n cancelAnimationFrame(scrollIds.get(element));\n }\n // jump to target if duration zero\n if (duration <= 0) {\n scrollIds.set(element, requestAnimationFrame(function () {\n element.scrollTop = to;\n }));\n return;\n }\n var difference = to - element.scrollTop;\n var perTick = difference / duration * 10;\n scrollIds.set(element, requestAnimationFrame(function () {\n element.scrollTop += perTick;\n if (element.scrollTop !== to) {\n scrollTo(element, to, duration - 10);\n }\n }));\n}\nexport function createKeyDownHandler(event, _ref) {\n var onLeftRight = _ref.onLeftRight,\n onCtrlLeftRight = _ref.onCtrlLeftRight,\n onUpDown = _ref.onUpDown,\n onPageUpDown = _ref.onPageUpDown,\n onEnter = _ref.onEnter;\n var which = event.which,\n ctrlKey = event.ctrlKey,\n metaKey = event.metaKey;\n switch (which) {\n case KeyCode.LEFT:\n if (ctrlKey || metaKey) {\n if (onCtrlLeftRight) {\n onCtrlLeftRight(-1);\n return true;\n }\n } else if (onLeftRight) {\n onLeftRight(-1);\n return true;\n }\n /* istanbul ignore next */\n break;\n case KeyCode.RIGHT:\n if (ctrlKey || metaKey) {\n if (onCtrlLeftRight) {\n onCtrlLeftRight(1);\n return true;\n }\n } else if (onLeftRight) {\n onLeftRight(1);\n return true;\n }\n /* istanbul ignore next */\n break;\n case KeyCode.UP:\n if (onUpDown) {\n onUpDown(-1);\n return true;\n }\n /* istanbul ignore next */\n break;\n case KeyCode.DOWN:\n if (onUpDown) {\n onUpDown(1);\n return true;\n }\n /* istanbul ignore next */\n break;\n case KeyCode.PAGE_UP:\n if (onPageUpDown) {\n onPageUpDown(-1);\n return true;\n }\n /* istanbul ignore next */\n break;\n case KeyCode.PAGE_DOWN:\n if (onPageUpDown) {\n onPageUpDown(1);\n return true;\n }\n /* istanbul ignore next */\n break;\n case KeyCode.ENTER:\n if (onEnter) {\n onEnter();\n return true;\n }\n /* istanbul ignore next */\n break;\n }\n return false;\n}\n// ===================== Format =====================\nexport function getDefaultFormat(format, picker, showTime, use12Hours) {\n var mergedFormat = format;\n if (!mergedFormat) {\n switch (picker) {\n case 'time':\n mergedFormat = use12Hours ? 'hh:mm:ss a' : 'HH:mm:ss';\n break;\n case 'week':\n mergedFormat = 'gggg-wo';\n break;\n case 'month':\n mergedFormat = 'YYYY-MM';\n break;\n case 'quarter':\n mergedFormat = 'YYYY-[Q]Q';\n break;\n case 'year':\n mergedFormat = 'YYYY';\n break;\n default:\n mergedFormat = showTime ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD';\n }\n }\n return mergedFormat;\n}\nexport function getInputSize(picker, format, generateConfig) {\n var defaultSize = picker === 'time' ? 8 : 10;\n var length = typeof format === 'function' ? format(generateConfig.getNow()).length : format.length;\n return Math.max(defaultSize, length) + 2;\n}\nvar globalClickFunc = null;\nvar clickCallbacks = new Set();\nexport function addGlobalMouseDownEvent(callback) {\n if (!globalClickFunc && typeof window !== 'undefined' && window.addEventListener) {\n globalClickFunc = function globalClickFunc(e) {\n // Clone a new list to avoid repeat trigger events\n _toConsumableArray(clickCallbacks).forEach(function (queueFunc) {\n queueFunc(e);\n });\n };\n window.addEventListener('mousedown', globalClickFunc);\n }\n clickCallbacks.add(callback);\n return function () {\n clickCallbacks.delete(callback);\n if (clickCallbacks.size === 0) {\n window.removeEventListener('mousedown', globalClickFunc);\n globalClickFunc = null;\n }\n };\n}\nexport function getTargetFromEvent(e) {\n var target = e.target;\n // get target if in shadow dom\n if (e.composed && target.shadowRoot) {\n var _e$composedPath;\n return ((_e$composedPath = e.composedPath) === null || _e$composedPath === void 0 ? void 0 : _e$composedPath.call(e)[0]) || target;\n }\n return target;\n}\n// ====================== Mode ======================\nvar getYearNextMode = function getYearNextMode(next) {\n if (next === 'month' || next === 'date') {\n return 'year';\n }\n return next;\n};\nvar getMonthNextMode = function getMonthNextMode(next) {\n if (next === 'date') {\n return 'month';\n }\n return next;\n};\nvar getQuarterNextMode = function getQuarterNextMode(next) {\n if (next === 'month' || next === 'date') {\n return 'quarter';\n }\n return next;\n};\nvar getWeekNextMode = function getWeekNextMode(next) {\n if (next === 'date') {\n return 'week';\n }\n return next;\n};\nexport var PickerModeMap = {\n year: getYearNextMode,\n month: getMonthNextMode,\n quarter: getQuarterNextMode,\n week: getWeekNextMode,\n time: null,\n date: null\n};\nexport function elementsContains(elements, target) {\n return elements.some(function (ele) {\n return ele && ele.contains(target);\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport DecadeHeader from './DecadeHeader';\nimport DecadeBody, { DECADE_COL_COUNT } from './DecadeBody';\nimport { createKeyDownHandler } from '../../utils/uiUtil';\nexport var DECADE_UNIT_DIFF = 10;\nexport var DECADE_DISTANCE_COUNT = DECADE_UNIT_DIFF * 10;\nfunction DecadePanel(props) {\n var prefixCls = props.prefixCls,\n onViewDateChange = props.onViewDateChange,\n generateConfig = props.generateConfig,\n viewDate = props.viewDate,\n operationRef = props.operationRef,\n onSelect = props.onSelect,\n onPanelChange = props.onPanelChange;\n var panelPrefixCls = \"\".concat(prefixCls, \"-decade-panel\");\n // ======================= Keyboard =======================\n operationRef.current = {\n onKeyDown: function onKeyDown(event) {\n return createKeyDownHandler(event, {\n onLeftRight: function onLeftRight(diff) {\n onSelect(generateConfig.addYear(viewDate, diff * DECADE_UNIT_DIFF), 'key');\n },\n onCtrlLeftRight: function onCtrlLeftRight(diff) {\n onSelect(generateConfig.addYear(viewDate, diff * DECADE_DISTANCE_COUNT), 'key');\n },\n onUpDown: function onUpDown(diff) {\n onSelect(generateConfig.addYear(viewDate, diff * DECADE_UNIT_DIFF * DECADE_COL_COUNT), 'key');\n },\n onEnter: function onEnter() {\n onPanelChange('year', viewDate);\n }\n });\n }\n };\n // ==================== View Operation ====================\n var onDecadesChange = function onDecadesChange(diff) {\n var newDate = generateConfig.addYear(viewDate, diff * DECADE_DISTANCE_COUNT);\n onViewDateChange(newDate);\n onPanelChange(null, newDate);\n };\n var onInternalSelect = function onInternalSelect(date) {\n onSelect(date, 'mouse');\n onPanelChange('year', date);\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n className: panelPrefixCls\n }, /*#__PURE__*/React.createElement(DecadeHeader, _extends({}, props, {\n prefixCls: prefixCls,\n onPrevDecades: function onPrevDecades() {\n onDecadesChange(-1);\n },\n onNextDecades: function onNextDecades() {\n onDecadesChange(1);\n }\n })), /*#__PURE__*/React.createElement(DecadeBody, _extends({}, props, {\n prefixCls: prefixCls,\n onSelect: onInternalSelect\n })));\n}\nexport default DecadePanel;","import { DECADE_UNIT_DIFF } from '../panels/DecadePanel/index';\nexport var WEEK_DAY_COUNT = 7;\nexport function isNullEqual(value1, value2) {\n if (!value1 && !value2) {\n return true;\n }\n if (!value1 || !value2) {\n return false;\n }\n return undefined;\n}\nexport function isSameDecade(generateConfig, decade1, decade2) {\n var equal = isNullEqual(decade1, decade2);\n if (typeof equal === 'boolean') {\n return equal;\n }\n var num1 = Math.floor(generateConfig.getYear(decade1) / 10);\n var num2 = Math.floor(generateConfig.getYear(decade2) / 10);\n return num1 === num2;\n}\nexport function isSameYear(generateConfig, year1, year2) {\n var equal = isNullEqual(year1, year2);\n if (typeof equal === 'boolean') {\n return equal;\n }\n return generateConfig.getYear(year1) === generateConfig.getYear(year2);\n}\nexport function getQuarter(generateConfig, date) {\n var quota = Math.floor(generateConfig.getMonth(date) / 3);\n return quota + 1;\n}\nexport function isSameQuarter(generateConfig, quarter1, quarter2) {\n var equal = isNullEqual(quarter1, quarter2);\n if (typeof equal === 'boolean') {\n return equal;\n }\n return isSameYear(generateConfig, quarter1, quarter2) && getQuarter(generateConfig, quarter1) === getQuarter(generateConfig, quarter2);\n}\nexport function isSameMonth(generateConfig, month1, month2) {\n var equal = isNullEqual(month1, month2);\n if (typeof equal === 'boolean') {\n return equal;\n }\n return isSameYear(generateConfig, month1, month2) && generateConfig.getMonth(month1) === generateConfig.getMonth(month2);\n}\nexport function isSameDate(generateConfig, date1, date2) {\n var equal = isNullEqual(date1, date2);\n if (typeof equal === 'boolean') {\n return equal;\n }\n return generateConfig.getYear(date1) === generateConfig.getYear(date2) && generateConfig.getMonth(date1) === generateConfig.getMonth(date2) && generateConfig.getDate(date1) === generateConfig.getDate(date2);\n}\nexport function isSameTime(generateConfig, time1, time2) {\n var equal = isNullEqual(time1, time2);\n if (typeof equal === 'boolean') {\n return equal;\n }\n return generateConfig.getHour(time1) === generateConfig.getHour(time2) && generateConfig.getMinute(time1) === generateConfig.getMinute(time2) && generateConfig.getSecond(time1) === generateConfig.getSecond(time2);\n}\nexport function isSameWeek(generateConfig, locale, date1, date2) {\n var equal = isNullEqual(date1, date2);\n if (typeof equal === 'boolean') {\n return equal;\n }\n return generateConfig.locale.getWeek(locale, date1) === generateConfig.locale.getWeek(locale, date2);\n}\nexport function isEqual(generateConfig, value1, value2) {\n return isSameDate(generateConfig, value1, value2) && isSameTime(generateConfig, value1, value2);\n}\n/** Between in date but not equal of date */\nexport function isInRange(generateConfig, startDate, endDate, current) {\n if (!startDate || !endDate || !current) {\n return false;\n }\n return !isSameDate(generateConfig, startDate, current) && !isSameDate(generateConfig, endDate, current) && generateConfig.isAfter(current, startDate) && generateConfig.isAfter(endDate, current);\n}\nexport function getWeekStartDate(locale, generateConfig, value) {\n var weekFirstDay = generateConfig.locale.getWeekFirstDay(locale);\n var monthStartDate = generateConfig.setDate(value, 1);\n var startDateWeekDay = generateConfig.getWeekDay(monthStartDate);\n var alignStartDate = generateConfig.addDate(monthStartDate, weekFirstDay - startDateWeekDay);\n if (generateConfig.getMonth(alignStartDate) === generateConfig.getMonth(value) && generateConfig.getDate(alignStartDate) > 1) {\n alignStartDate = generateConfig.addDate(alignStartDate, -7);\n }\n return alignStartDate;\n}\nexport function getClosingViewDate(viewDate, picker, generateConfig) {\n var offset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n switch (picker) {\n case 'year':\n return generateConfig.addYear(viewDate, offset * 10);\n case 'quarter':\n case 'month':\n return generateConfig.addYear(viewDate, offset);\n default:\n return generateConfig.addMonth(viewDate, offset);\n }\n}\nexport function formatValue(value, _ref) {\n var generateConfig = _ref.generateConfig,\n locale = _ref.locale,\n format = _ref.format;\n return typeof format === 'function' ? format(value) : generateConfig.locale.format(locale.locale, value, format);\n}\nexport function parseValue(value, _ref2) {\n var generateConfig = _ref2.generateConfig,\n locale = _ref2.locale,\n formatList = _ref2.formatList;\n if (!value || typeof formatList[0] === 'function') {\n return null;\n }\n return generateConfig.locale.parse(locale.locale, value, formatList);\n}\n// eslint-disable-next-line consistent-return\nexport function getCellDateDisabled(_ref3) {\n var cellDate = _ref3.cellDate,\n mode = _ref3.mode,\n disabledDate = _ref3.disabledDate,\n generateConfig = _ref3.generateConfig;\n if (!disabledDate) return false;\n // Whether cellDate is disabled in range\n var getDisabledFromRange = function getDisabledFromRange(currentMode, start, end) {\n var current = start;\n while (current <= end) {\n var date = void 0;\n switch (currentMode) {\n case 'date':\n {\n date = generateConfig.setDate(cellDate, current);\n if (!disabledDate(date)) {\n return false;\n }\n break;\n }\n case 'month':\n {\n date = generateConfig.setMonth(cellDate, current);\n if (!getCellDateDisabled({\n cellDate: date,\n mode: 'month',\n generateConfig: generateConfig,\n disabledDate: disabledDate\n })) {\n return false;\n }\n break;\n }\n case 'year':\n {\n date = generateConfig.setYear(cellDate, current);\n if (!getCellDateDisabled({\n cellDate: date,\n mode: 'year',\n generateConfig: generateConfig,\n disabledDate: disabledDate\n })) {\n return false;\n }\n break;\n }\n }\n current += 1;\n }\n return true;\n };\n switch (mode) {\n case 'date':\n case 'week':\n {\n return disabledDate(cellDate);\n }\n case 'month':\n {\n var startDate = 1;\n var endDate = generateConfig.getDate(generateConfig.getEndDate(cellDate));\n return getDisabledFromRange('date', startDate, endDate);\n }\n case 'quarter':\n {\n var startMonth = Math.floor(generateConfig.getMonth(cellDate) / 3) * 3;\n var endMonth = startMonth + 2;\n return getDisabledFromRange('month', startMonth, endMonth);\n }\n case 'year':\n {\n return getDisabledFromRange('month', 0, 11);\n }\n case 'decade':\n {\n var year = generateConfig.getYear(cellDate);\n var startYear = Math.floor(year / DECADE_UNIT_DIFF) * DECADE_UNIT_DIFF;\n var endYear = startYear + DECADE_UNIT_DIFF - 1;\n return getDisabledFromRange('year', startYear, endYear);\n }\n }\n}","import * as React from 'react';\nimport Header from '../Header';\nimport PanelContext from '../../PanelContext';\nimport { formatValue } from '../../utils/dateUtil';\nfunction TimeHeader(props) {\n var _React$useContext = React.useContext(PanelContext),\n hideHeader = _React$useContext.hideHeader;\n if (hideHeader) {\n return null;\n }\n var prefixCls = props.prefixCls,\n generateConfig = props.generateConfig,\n locale = props.locale,\n value = props.value,\n format = props.format;\n var headerPrefixCls = \"\".concat(prefixCls, \"-header\");\n return /*#__PURE__*/React.createElement(Header, {\n prefixCls: headerPrefixCls\n }, value ? formatValue(value, {\n locale: locale,\n format: format,\n generateConfig: generateConfig\n }) : \"\\xA0\");\n}\nexport default TimeHeader;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport { useRef, useLayoutEffect } from 'react';\nimport classNames from 'classnames';\nimport { scrollTo, waitElementReady } from '../../utils/uiUtil';\nimport PanelContext from '../../PanelContext';\nfunction TimeUnitColumn(props) {\n var prefixCls = props.prefixCls,\n units = props.units,\n onSelect = props.onSelect,\n value = props.value,\n active = props.active,\n hideDisabledOptions = props.hideDisabledOptions;\n var cellPrefixCls = \"\".concat(prefixCls, \"-cell\");\n var _React$useContext = React.useContext(PanelContext),\n open = _React$useContext.open;\n var ulRef = useRef(null);\n var liRefs = useRef(new Map());\n var scrollRef = useRef();\n // `useLayoutEffect` here to avoid blink by duration is 0\n useLayoutEffect(function () {\n var li = liRefs.current.get(value);\n if (li && open !== false) {\n scrollTo(ulRef.current, li.offsetTop, 120);\n }\n }, [value]);\n useLayoutEffect(function () {\n if (open) {\n var li = liRefs.current.get(value);\n if (li) {\n scrollRef.current = waitElementReady(li, function () {\n scrollTo(ulRef.current, li.offsetTop, 0);\n });\n }\n }\n return function () {\n var _scrollRef$current;\n (_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 ? void 0 : _scrollRef$current.call(scrollRef);\n };\n }, [open]);\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: classNames(\"\".concat(prefixCls, \"-column\"), _defineProperty({}, \"\".concat(prefixCls, \"-column-active\"), active)),\n ref: ulRef,\n style: {\n position: 'relative'\n }\n }, units.map(function (unit) {\n var _classNames2;\n if (hideDisabledOptions && unit.disabled) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"li\", {\n key: unit.value,\n ref: function ref(element) {\n liRefs.current.set(unit.value, element);\n },\n className: classNames(cellPrefixCls, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(cellPrefixCls, \"-disabled\"), unit.disabled), _defineProperty(_classNames2, \"\".concat(cellPrefixCls, \"-selected\"), value === unit.value), _classNames2)),\n onClick: function onClick() {\n if (unit.disabled) {\n return;\n }\n onSelect(unit.value);\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(cellPrefixCls, \"-inner\")\n }, unit.label));\n }));\n}\nexport default TimeUnitColumn;","export function leftPad(str, length) {\n var fill = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';\n var current = String(str);\n while (current.length < length) {\n current = \"\".concat(fill).concat(str);\n }\n return current;\n}\nexport var tuple = function tuple() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return args;\n};\nexport function toArray(val) {\n if (val === null || val === undefined) {\n return [];\n }\n return Array.isArray(val) ? val : [val];\n}\nexport default function getDataOrAriaProps(props) {\n var retProps = {};\n Object.keys(props).forEach(function (key) {\n if ((key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-' || key === 'role' || key === 'name') && key.substr(0, 7) !== 'data-__') {\n retProps[key] = props[key];\n }\n });\n return retProps;\n}\nexport function getValue(values, index) {\n return values ? values[index] : null;\n}\nexport function updateValues(values, value, index) {\n var newValues = [getValue(values, 0), getValue(values, 1)];\n newValues[index] = typeof value === 'function' ? value(newValues[index]) : value;\n if (!newValues[0] && !newValues[1]) {\n return null;\n }\n return newValues;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport TimeUnitColumn from './TimeUnitColumn';\nimport { leftPad } from '../../utils/miscUtil';\nimport { setTime as utilSetTime } from '../../utils/timeUtil';\nfunction shouldUnitsUpdate(prevUnits, nextUnits) {\n if (prevUnits.length !== nextUnits.length) return true;\n // if any unit's disabled status is different, the units should be re-evaluted\n for (var i = 0; i < prevUnits.length; i += 1) {\n if (prevUnits[i].disabled !== nextUnits[i].disabled) return true;\n }\n return false;\n}\nfunction generateUnits(start, end, step, disabledUnits) {\n var units = [];\n var integerStep = step >= 1 ? step | 0 : 1;\n for (var i = start; i <= end; i += integerStep) {\n units.push({\n label: leftPad(i, 2),\n value: i,\n disabled: (disabledUnits || []).includes(i)\n });\n }\n return units;\n}\nfunction TimeBody(props) {\n var generateConfig = props.generateConfig,\n prefixCls = props.prefixCls,\n operationRef = props.operationRef,\n activeColumnIndex = props.activeColumnIndex,\n value = props.value,\n showHour = props.showHour,\n showMinute = props.showMinute,\n showSecond = props.showSecond,\n use12Hours = props.use12Hours,\n _props$hourStep = props.hourStep,\n hourStep = _props$hourStep === void 0 ? 1 : _props$hourStep,\n _props$minuteStep = props.minuteStep,\n minuteStep = _props$minuteStep === void 0 ? 1 : _props$minuteStep,\n _props$secondStep = props.secondStep,\n secondStep = _props$secondStep === void 0 ? 1 : _props$secondStep,\n disabledHours = props.disabledHours,\n disabledMinutes = props.disabledMinutes,\n disabledSeconds = props.disabledSeconds,\n disabledTime = props.disabledTime,\n hideDisabledOptions = props.hideDisabledOptions,\n onSelect = props.onSelect;\n // Misc\n var columns = [];\n var contentPrefixCls = \"\".concat(prefixCls, \"-content\");\n var columnPrefixCls = \"\".concat(prefixCls, \"-time-panel\");\n var isPM;\n var originHour = value ? generateConfig.getHour(value) : -1;\n var hour = originHour;\n var minute = value ? generateConfig.getMinute(value) : -1;\n var second = value ? generateConfig.getSecond(value) : -1;\n // Disabled Time\n var now = generateConfig.getNow();\n var _React$useMemo = React.useMemo(function () {\n if (disabledTime) {\n var disabledConfig = disabledTime(now);\n return [disabledConfig.disabledHours, disabledConfig.disabledMinutes, disabledConfig.disabledSeconds];\n }\n return [disabledHours, disabledMinutes, disabledSeconds];\n }, [disabledHours, disabledMinutes, disabledSeconds, disabledTime, now]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 3),\n mergedDisabledHours = _React$useMemo2[0],\n mergedDisabledMinutes = _React$useMemo2[1],\n mergedDisabledSeconds = _React$useMemo2[2];\n // Set Time\n var setTime = function setTime(isNewPM, newHour, newMinute, newSecond) {\n var newDate = value || generateConfig.getNow();\n var mergedHour = Math.max(0, newHour);\n var mergedMinute = Math.max(0, newMinute);\n var mergedSecond = Math.max(0, newSecond);\n newDate = utilSetTime(generateConfig, newDate, !use12Hours || !isNewPM ? mergedHour : mergedHour + 12, mergedMinute, mergedSecond);\n return newDate;\n };\n // ========================= Unit =========================\n var rawHours = generateUnits(0, 23, hourStep, mergedDisabledHours && mergedDisabledHours());\n var memorizedRawHours = useMemo(function () {\n return rawHours;\n }, rawHours, shouldUnitsUpdate);\n // Should additional logic to handle 12 hours\n if (use12Hours) {\n isPM = hour >= 12; // -1 means should display AM\n hour %= 12;\n }\n var _React$useMemo3 = React.useMemo(function () {\n if (!use12Hours) {\n return [false, false];\n }\n var AMPMDisabled = [true, true];\n memorizedRawHours.forEach(function (_ref) {\n var disabled = _ref.disabled,\n hourValue = _ref.value;\n if (disabled) return;\n if (hourValue >= 12) {\n AMPMDisabled[1] = false;\n } else {\n AMPMDisabled[0] = false;\n }\n });\n return AMPMDisabled;\n }, [use12Hours, memorizedRawHours]),\n _React$useMemo4 = _slicedToArray(_React$useMemo3, 2),\n AMDisabled = _React$useMemo4[0],\n PMDisabled = _React$useMemo4[1];\n var hours = React.useMemo(function () {\n if (!use12Hours) return memorizedRawHours;\n return memorizedRawHours.filter(isPM ? function (hourMeta) {\n return hourMeta.value >= 12;\n } : function (hourMeta) {\n return hourMeta.value < 12;\n }).map(function (hourMeta) {\n var hourValue = hourMeta.value % 12;\n var hourLabel = hourValue === 0 ? '12' : leftPad(hourValue, 2);\n return _objectSpread(_objectSpread({}, hourMeta), {}, {\n label: hourLabel,\n value: hourValue\n });\n });\n }, [use12Hours, isPM, memorizedRawHours]);\n var minutes = generateUnits(0, 59, minuteStep, mergedDisabledMinutes && mergedDisabledMinutes(originHour));\n var seconds = generateUnits(0, 59, secondStep, mergedDisabledSeconds && mergedDisabledSeconds(originHour, minute));\n // ====================== Operations ======================\n operationRef.current = {\n onUpDown: function onUpDown(diff) {\n var column = columns[activeColumnIndex];\n if (column) {\n var valueIndex = column.units.findIndex(function (unit) {\n return unit.value === column.value;\n });\n var unitLen = column.units.length;\n for (var i = 1; i < unitLen; i += 1) {\n var nextUnit = column.units[(valueIndex + diff * i + unitLen) % unitLen];\n if (nextUnit.disabled !== true) {\n column.onSelect(nextUnit.value);\n break;\n }\n }\n }\n }\n };\n // ======================== Render ========================\n function addColumnNode(condition, node, columnValue, units, onColumnSelect) {\n if (condition !== false) {\n columns.push({\n node: /*#__PURE__*/React.cloneElement(node, {\n prefixCls: columnPrefixCls,\n value: columnValue,\n active: activeColumnIndex === columns.length,\n onSelect: onColumnSelect,\n units: units,\n hideDisabledOptions: hideDisabledOptions\n }),\n onSelect: onColumnSelect,\n value: columnValue,\n units: units\n });\n }\n }\n // Hour\n addColumnNode(showHour, /*#__PURE__*/React.createElement(TimeUnitColumn, {\n key: \"hour\"\n }), hour, hours, function (num) {\n onSelect(setTime(isPM, num, minute, second), 'mouse');\n });\n // Minute\n addColumnNode(showMinute, /*#__PURE__*/React.createElement(TimeUnitColumn, {\n key: \"minute\"\n }), minute, minutes, function (num) {\n onSelect(setTime(isPM, hour, num, second), 'mouse');\n });\n // Second\n addColumnNode(showSecond, /*#__PURE__*/React.createElement(TimeUnitColumn, {\n key: \"second\"\n }), second, seconds, function (num) {\n onSelect(setTime(isPM, hour, minute, num), 'mouse');\n });\n // 12 Hours\n var PMIndex = -1;\n if (typeof isPM === 'boolean') {\n PMIndex = isPM ? 1 : 0;\n }\n addColumnNode(use12Hours === true, /*#__PURE__*/React.createElement(TimeUnitColumn, {\n key: \"12hours\"\n }), PMIndex, [{\n label: 'AM',\n value: 0,\n disabled: AMDisabled\n }, {\n label: 'PM',\n value: 1,\n disabled: PMDisabled\n }], function (num) {\n onSelect(setTime(!!num, hour, minute, second), 'mouse');\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: contentPrefixCls\n }, columns.map(function (_ref2) {\n var node = _ref2.node;\n return node;\n }));\n}\nexport default TimeBody;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport TimeHeader from './TimeHeader';\nimport TimeBody from './TimeBody';\nimport { createKeyDownHandler } from '../../utils/uiUtil';\nvar countBoolean = function countBoolean(boolList) {\n return boolList.filter(function (bool) {\n return bool !== false;\n }).length;\n};\nfunction TimePanel(props) {\n var generateConfig = props.generateConfig,\n _props$format = props.format,\n format = _props$format === void 0 ? 'HH:mm:ss' : _props$format,\n prefixCls = props.prefixCls,\n active = props.active,\n operationRef = props.operationRef,\n showHour = props.showHour,\n showMinute = props.showMinute,\n showSecond = props.showSecond,\n _props$use12Hours = props.use12Hours,\n use12Hours = _props$use12Hours === void 0 ? false : _props$use12Hours,\n onSelect = props.onSelect,\n value = props.value;\n var panelPrefixCls = \"\".concat(prefixCls, \"-time-panel\");\n var bodyOperationRef = React.useRef();\n // ======================= Keyboard =======================\n var _React$useState = React.useState(-1),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n activeColumnIndex = _React$useState2[0],\n setActiveColumnIndex = _React$useState2[1];\n var columnsCount = countBoolean([showHour, showMinute, showSecond, use12Hours]);\n operationRef.current = {\n onKeyDown: function onKeyDown(event) {\n return createKeyDownHandler(event, {\n onLeftRight: function onLeftRight(diff) {\n setActiveColumnIndex((activeColumnIndex + diff + columnsCount) % columnsCount);\n },\n onUpDown: function onUpDown(diff) {\n if (activeColumnIndex === -1) {\n setActiveColumnIndex(0);\n } else if (bodyOperationRef.current) {\n bodyOperationRef.current.onUpDown(diff);\n }\n },\n onEnter: function onEnter() {\n onSelect(value || generateConfig.getNow(), 'key');\n setActiveColumnIndex(-1);\n }\n });\n },\n onBlur: function onBlur() {\n setActiveColumnIndex(-1);\n }\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(panelPrefixCls, _defineProperty({}, \"\".concat(panelPrefixCls, \"-active\"), active))\n }, /*#__PURE__*/React.createElement(TimeHeader, _extends({}, props, {\n format: format,\n prefixCls: prefixCls\n })), /*#__PURE__*/React.createElement(TimeBody, _extends({}, props, {\n prefixCls: prefixCls,\n activeColumnIndex: activeColumnIndex,\n operationRef: bodyOperationRef\n })));\n}\nexport default TimePanel;","import * as React from 'react';\nvar RangeContext = /*#__PURE__*/React.createContext({});\nexport default RangeContext;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isInRange } from '../utils/dateUtil';\nimport { getValue } from '../utils/miscUtil';\nexport default function useCellClassName(_ref) {\n var cellPrefixCls = _ref.cellPrefixCls,\n generateConfig = _ref.generateConfig,\n rangedValue = _ref.rangedValue,\n hoverRangedValue = _ref.hoverRangedValue,\n isInView = _ref.isInView,\n isSameCell = _ref.isSameCell,\n offsetCell = _ref.offsetCell,\n today = _ref.today,\n value = _ref.value;\n function getClassName(currentDate) {\n var _ref2;\n var prevDate = offsetCell(currentDate, -1);\n var nextDate = offsetCell(currentDate, 1);\n var rangeStart = getValue(rangedValue, 0);\n var rangeEnd = getValue(rangedValue, 1);\n var hoverStart = getValue(hoverRangedValue, 0);\n var hoverEnd = getValue(hoverRangedValue, 1);\n var isRangeHovered = isInRange(generateConfig, hoverStart, hoverEnd, currentDate);\n function isRangeStart(date) {\n return isSameCell(rangeStart, date);\n }\n function isRangeEnd(date) {\n return isSameCell(rangeEnd, date);\n }\n var isHoverStart = isSameCell(hoverStart, currentDate);\n var isHoverEnd = isSameCell(hoverEnd, currentDate);\n var isHoverEdgeStart = (isRangeHovered || isHoverEnd) && (!isInView(prevDate) || isRangeEnd(prevDate));\n var isHoverEdgeEnd = (isRangeHovered || isHoverStart) && (!isInView(nextDate) || isRangeStart(nextDate));\n return _ref2 = {}, _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-in-view\"), isInView(currentDate)), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-in-range\"), isInRange(generateConfig, rangeStart, rangeEnd, currentDate)), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-start\"), isRangeStart(currentDate)), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-end\"), isRangeEnd(currentDate)), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-start-single\"), isRangeStart(currentDate) && !rangeEnd), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-end-single\"), isRangeEnd(currentDate) && !rangeStart), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-start-near-hover\"), isRangeStart(currentDate) && (isSameCell(prevDate, hoverStart) || isInRange(generateConfig, hoverStart, hoverEnd, prevDate))), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-end-near-hover\"), isRangeEnd(currentDate) && (isSameCell(nextDate, hoverEnd) || isInRange(generateConfig, hoverStart, hoverEnd, nextDate))), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-hover\"), isRangeHovered), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-hover-start\"), isHoverStart), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-hover-end\"), isHoverEnd), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-hover-edge-start\"), isHoverEdgeStart), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-hover-edge-end\"), isHoverEdgeEnd), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-hover-edge-start-near-range\"), isHoverEdgeStart && isSameCell(prevDate, rangeEnd)), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-hover-edge-end-near-range\"), isHoverEdgeEnd && isSameCell(nextDate, rangeStart)), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-today\"), isSameCell(today, currentDate)), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-selected\"), isSameCell(value, currentDate)), _ref2;\n }\n return getClassName;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { WEEK_DAY_COUNT, getWeekStartDate, isSameDate, isSameMonth, formatValue } from '../../utils/dateUtil';\nimport RangeContext from '../../RangeContext';\nimport useCellClassName from '../../hooks/useCellClassName';\nimport PanelBody from '../PanelBody';\nfunction DateBody(props) {\n var prefixCls = props.prefixCls,\n generateConfig = props.generateConfig,\n prefixColumn = props.prefixColumn,\n locale = props.locale,\n rowCount = props.rowCount,\n viewDate = props.viewDate,\n value = props.value,\n dateRender = props.dateRender;\n var _React$useContext = React.useContext(RangeContext),\n rangedValue = _React$useContext.rangedValue,\n hoverRangedValue = _React$useContext.hoverRangedValue;\n var baseDate = getWeekStartDate(locale.locale, generateConfig, viewDate);\n var cellPrefixCls = \"\".concat(prefixCls, \"-cell\");\n var weekFirstDay = generateConfig.locale.getWeekFirstDay(locale.locale);\n var today = generateConfig.getNow();\n // ============================== Header ==============================\n var headerCells = [];\n var weekDaysLocale = locale.shortWeekDays || (generateConfig.locale.getShortWeekDays ? generateConfig.locale.getShortWeekDays(locale.locale) : []);\n if (prefixColumn) {\n headerCells.push( /*#__PURE__*/React.createElement(\"th\", {\n key: \"empty\",\n \"aria-label\": \"empty cell\"\n }));\n }\n for (var i = 0; i < WEEK_DAY_COUNT; i += 1) {\n headerCells.push( /*#__PURE__*/React.createElement(\"th\", {\n key: i\n }, weekDaysLocale[(i + weekFirstDay) % WEEK_DAY_COUNT]));\n }\n // =============================== Body ===============================\n var getCellClassName = useCellClassName({\n cellPrefixCls: cellPrefixCls,\n today: today,\n value: value,\n generateConfig: generateConfig,\n rangedValue: prefixColumn ? null : rangedValue,\n hoverRangedValue: prefixColumn ? null : hoverRangedValue,\n isSameCell: function isSameCell(current, target) {\n return isSameDate(generateConfig, current, target);\n },\n isInView: function isInView(date) {\n return isSameMonth(generateConfig, date, viewDate);\n },\n offsetCell: function offsetCell(date, offset) {\n return generateConfig.addDate(date, offset);\n }\n });\n var getCellNode = dateRender ? function (date) {\n return dateRender(date, today);\n } : undefined;\n return /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {\n rowNum: rowCount,\n colNum: WEEK_DAY_COUNT,\n baseDate: baseDate,\n getCellNode: getCellNode,\n getCellText: generateConfig.getDate,\n getCellClassName: getCellClassName,\n getCellDate: generateConfig.addDate,\n titleCell: function titleCell(date) {\n return formatValue(date, {\n locale: locale,\n format: 'YYYY-MM-DD',\n generateConfig: generateConfig\n });\n },\n headerCells: headerCells\n }));\n}\nexport default DateBody;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Header from '../Header';\nimport PanelContext from '../../PanelContext';\nimport { formatValue } from '../../utils/dateUtil';\nfunction DateHeader(props) {\n var prefixCls = props.prefixCls,\n generateConfig = props.generateConfig,\n locale = props.locale,\n viewDate = props.viewDate,\n onNextMonth = props.onNextMonth,\n onPrevMonth = props.onPrevMonth,\n onNextYear = props.onNextYear,\n onPrevYear = props.onPrevYear,\n onYearClick = props.onYearClick,\n onMonthClick = props.onMonthClick;\n var _React$useContext = React.useContext(PanelContext),\n hideHeader = _React$useContext.hideHeader;\n if (hideHeader) {\n return null;\n }\n var headerPrefixCls = \"\".concat(prefixCls, \"-header\");\n var monthsLocale = locale.shortMonths || (generateConfig.locale.getShortMonths ? generateConfig.locale.getShortMonths(locale.locale) : []);\n var month = generateConfig.getMonth(viewDate);\n // =================== Month & Year ===================\n var yearNode = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n key: \"year\",\n onClick: onYearClick,\n tabIndex: -1,\n className: \"\".concat(prefixCls, \"-year-btn\")\n }, formatValue(viewDate, {\n locale: locale,\n format: locale.yearFormat,\n generateConfig: generateConfig\n }));\n var monthNode = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n key: \"month\",\n onClick: onMonthClick,\n tabIndex: -1,\n className: \"\".concat(prefixCls, \"-month-btn\")\n }, locale.monthFormat ? formatValue(viewDate, {\n locale: locale,\n format: locale.monthFormat,\n generateConfig: generateConfig\n }) : monthsLocale[month]);\n var monthYearNodes = locale.monthBeforeYear ? [monthNode, yearNode] : [yearNode, monthNode];\n return /*#__PURE__*/React.createElement(Header, _extends({}, props, {\n prefixCls: headerPrefixCls,\n onSuperPrev: onPrevYear,\n onPrev: onPrevMonth,\n onNext: onNextMonth,\n onSuperNext: onNextYear\n }), monthYearNodes);\n}\nexport default DateHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport DateBody from './DateBody';\nimport DateHeader from './DateHeader';\nimport { WEEK_DAY_COUNT } from '../../utils/dateUtil';\nimport { createKeyDownHandler } from '../../utils/uiUtil';\nvar DATE_ROW_COUNT = 6;\nfunction DatePanel(props) {\n var prefixCls = props.prefixCls,\n _props$panelName = props.panelName,\n panelName = _props$panelName === void 0 ? 'date' : _props$panelName,\n keyboardConfig = props.keyboardConfig,\n active = props.active,\n operationRef = props.operationRef,\n generateConfig = props.generateConfig,\n value = props.value,\n viewDate = props.viewDate,\n onViewDateChange = props.onViewDateChange,\n onPanelChange = props.onPanelChange,\n _onSelect = props.onSelect;\n var panelPrefixCls = \"\".concat(prefixCls, \"-\").concat(panelName, \"-panel\");\n // ======================= Keyboard =======================\n operationRef.current = {\n onKeyDown: function onKeyDown(event) {\n return createKeyDownHandler(event, _objectSpread({\n onLeftRight: function onLeftRight(diff) {\n _onSelect(generateConfig.addDate(value || viewDate, diff), 'key');\n },\n onCtrlLeftRight: function onCtrlLeftRight(diff) {\n _onSelect(generateConfig.addYear(value || viewDate, diff), 'key');\n },\n onUpDown: function onUpDown(diff) {\n _onSelect(generateConfig.addDate(value || viewDate, diff * WEEK_DAY_COUNT), 'key');\n },\n onPageUpDown: function onPageUpDown(diff) {\n _onSelect(generateConfig.addMonth(value || viewDate, diff), 'key');\n }\n }, keyboardConfig));\n }\n };\n // ==================== View Operation ====================\n var onYearChange = function onYearChange(diff) {\n var newDate = generateConfig.addYear(viewDate, diff);\n onViewDateChange(newDate);\n onPanelChange(null, newDate);\n };\n var onMonthChange = function onMonthChange(diff) {\n var newDate = generateConfig.addMonth(viewDate, diff);\n onViewDateChange(newDate);\n onPanelChange(null, newDate);\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(panelPrefixCls, _defineProperty({}, \"\".concat(panelPrefixCls, \"-active\"), active))\n }, /*#__PURE__*/React.createElement(DateHeader, _extends({}, props, {\n prefixCls: prefixCls,\n value: value,\n viewDate: viewDate\n // View Operation\n ,\n onPrevYear: function onPrevYear() {\n onYearChange(-1);\n },\n onNextYear: function onNextYear() {\n onYearChange(1);\n },\n onPrevMonth: function onPrevMonth() {\n onMonthChange(-1);\n },\n onNextMonth: function onNextMonth() {\n onMonthChange(1);\n },\n onMonthClick: function onMonthClick() {\n onPanelChange('month', viewDate);\n },\n onYearClick: function onYearClick() {\n onPanelChange('year', viewDate);\n }\n })), /*#__PURE__*/React.createElement(DateBody, _extends({}, props, {\n onSelect: function onSelect(date) {\n return _onSelect(date, 'mouse');\n },\n prefixCls: prefixCls,\n value: value,\n viewDate: viewDate,\n rowCount: DATE_ROW_COUNT\n })));\n}\nexport default DatePanel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport DatePanel from '../DatePanel';\nimport TimePanel from '../TimePanel';\nimport { tuple } from '../../utils/miscUtil';\nimport { setDateTime as setTime } from '../../utils/timeUtil';\nvar ACTIVE_PANEL = tuple('date', 'time');\nfunction DatetimePanel(props) {\n var prefixCls = props.prefixCls,\n operationRef = props.operationRef,\n generateConfig = props.generateConfig,\n value = props.value,\n defaultValue = props.defaultValue,\n disabledTime = props.disabledTime,\n showTime = props.showTime,\n onSelect = props.onSelect;\n var panelPrefixCls = \"\".concat(prefixCls, \"-datetime-panel\");\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n activePanel = _React$useState2[0],\n setActivePanel = _React$useState2[1];\n var dateOperationRef = React.useRef({});\n var timeOperationRef = React.useRef({});\n var timeProps = _typeof(showTime) === 'object' ? _objectSpread({}, showTime) : {};\n // ======================= Keyboard =======================\n function getNextActive(offset) {\n var activeIndex = ACTIVE_PANEL.indexOf(activePanel) + offset;\n var nextActivePanel = ACTIVE_PANEL[activeIndex] || null;\n return nextActivePanel;\n }\n var onBlur = function onBlur(e) {\n if (timeOperationRef.current.onBlur) {\n timeOperationRef.current.onBlur(e);\n }\n setActivePanel(null);\n };\n operationRef.current = {\n onKeyDown: function onKeyDown(event) {\n // Switch active panel\n if (event.which === KeyCode.TAB) {\n var nextActivePanel = getNextActive(event.shiftKey ? -1 : 1);\n setActivePanel(nextActivePanel);\n if (nextActivePanel) {\n event.preventDefault();\n }\n return true;\n }\n // Operate on current active panel\n if (activePanel) {\n var ref = activePanel === 'date' ? dateOperationRef : timeOperationRef;\n if (ref.current && ref.current.onKeyDown) {\n ref.current.onKeyDown(event);\n }\n return true;\n }\n // Switch first active panel if operate without panel\n if ([KeyCode.LEFT, KeyCode.RIGHT, KeyCode.UP, KeyCode.DOWN].includes(event.which)) {\n setActivePanel('date');\n return true;\n }\n return false;\n },\n onBlur: onBlur,\n onClose: onBlur\n };\n // ======================== Events ========================\n var onInternalSelect = function onInternalSelect(date, source) {\n var selectedDate = date;\n if (source === 'date' && !value && timeProps.defaultValue) {\n // Date with time defaultValue\n selectedDate = generateConfig.setHour(selectedDate, generateConfig.getHour(timeProps.defaultValue));\n selectedDate = generateConfig.setMinute(selectedDate, generateConfig.getMinute(timeProps.defaultValue));\n selectedDate = generateConfig.setSecond(selectedDate, generateConfig.getSecond(timeProps.defaultValue));\n } else if (source === 'time' && !value && defaultValue) {\n selectedDate = generateConfig.setYear(selectedDate, generateConfig.getYear(defaultValue));\n selectedDate = generateConfig.setMonth(selectedDate, generateConfig.getMonth(defaultValue));\n selectedDate = generateConfig.setDate(selectedDate, generateConfig.getDate(defaultValue));\n }\n if (onSelect) {\n onSelect(selectedDate, 'mouse');\n }\n };\n // ======================== Render ========================\n var disabledTimes = disabledTime ? disabledTime(value || null) : {};\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(panelPrefixCls, _defineProperty({}, \"\".concat(panelPrefixCls, \"-active\"), activePanel))\n }, /*#__PURE__*/React.createElement(DatePanel, _extends({}, props, {\n operationRef: dateOperationRef,\n active: activePanel === 'date',\n onSelect: function onSelect(date) {\n onInternalSelect(setTime(generateConfig, date, !value && _typeof(showTime) === 'object' ? showTime.defaultValue : null), 'date');\n }\n })), /*#__PURE__*/React.createElement(TimePanel, _extends({}, props, {\n format: undefined\n }, timeProps, disabledTimes, {\n disabledTime: null,\n defaultValue: undefined,\n operationRef: timeOperationRef,\n active: activePanel === 'time',\n onSelect: function onSelect(date) {\n onInternalSelect(date, 'time');\n }\n })));\n}\nexport default DatetimePanel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport DatePanel from '../DatePanel';\nimport { isSameWeek } from '../../utils/dateUtil';\nfunction WeekPanel(props) {\n var prefixCls = props.prefixCls,\n generateConfig = props.generateConfig,\n locale = props.locale,\n value = props.value;\n // Render additional column\n var cellPrefixCls = \"\".concat(prefixCls, \"-cell\");\n var prefixColumn = function prefixColumn(date) {\n return /*#__PURE__*/React.createElement(\"td\", {\n key: \"week\",\n className: classNames(cellPrefixCls, \"\".concat(cellPrefixCls, \"-week\"))\n }, generateConfig.locale.getWeek(locale.locale, date));\n };\n // Add row className\n var rowPrefixCls = \"\".concat(prefixCls, \"-week-panel-row\");\n var rowClassName = function rowClassName(date) {\n return classNames(rowPrefixCls, _defineProperty({}, \"\".concat(rowPrefixCls, \"-selected\"), isSameWeek(generateConfig, locale.locale, value, date)));\n };\n return /*#__PURE__*/React.createElement(DatePanel, _extends({}, props, {\n panelName: \"week\",\n prefixColumn: prefixColumn,\n rowClassName: rowClassName,\n keyboardConfig: {\n onLeftRight: null\n }\n }));\n}\nexport default WeekPanel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Header from '../Header';\nimport PanelContext from '../../PanelContext';\nimport { formatValue } from '../../utils/dateUtil';\nfunction MonthHeader(props) {\n var prefixCls = props.prefixCls,\n generateConfig = props.generateConfig,\n locale = props.locale,\n viewDate = props.viewDate,\n onNextYear = props.onNextYear,\n onPrevYear = props.onPrevYear,\n onYearClick = props.onYearClick;\n var _React$useContext = React.useContext(PanelContext),\n hideHeader = _React$useContext.hideHeader;\n if (hideHeader) {\n return null;\n }\n var headerPrefixCls = \"\".concat(prefixCls, \"-header\");\n return /*#__PURE__*/React.createElement(Header, _extends({}, props, {\n prefixCls: headerPrefixCls,\n onSuperPrev: onPrevYear,\n onSuperNext: onNextYear\n }), /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: onYearClick,\n className: \"\".concat(prefixCls, \"-year-btn\")\n }, formatValue(viewDate, {\n locale: locale,\n format: locale.yearFormat,\n generateConfig: generateConfig\n })));\n}\nexport default MonthHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { formatValue, isSameMonth } from '../../utils/dateUtil';\nimport RangeContext from '../../RangeContext';\nimport useCellClassName from '../../hooks/useCellClassName';\nimport PanelBody from '../PanelBody';\nexport var MONTH_COL_COUNT = 3;\nvar MONTH_ROW_COUNT = 4;\nfunction MonthBody(props) {\n var prefixCls = props.prefixCls,\n locale = props.locale,\n value = props.value,\n viewDate = props.viewDate,\n generateConfig = props.generateConfig,\n monthCellRender = props.monthCellRender;\n var _React$useContext = React.useContext(RangeContext),\n rangedValue = _React$useContext.rangedValue,\n hoverRangedValue = _React$useContext.hoverRangedValue;\n var cellPrefixCls = \"\".concat(prefixCls, \"-cell\");\n var getCellClassName = useCellClassName({\n cellPrefixCls: cellPrefixCls,\n value: value,\n generateConfig: generateConfig,\n rangedValue: rangedValue,\n hoverRangedValue: hoverRangedValue,\n isSameCell: function isSameCell(current, target) {\n return isSameMonth(generateConfig, current, target);\n },\n isInView: function isInView() {\n return true;\n },\n offsetCell: function offsetCell(date, offset) {\n return generateConfig.addMonth(date, offset);\n }\n });\n var monthsLocale = locale.shortMonths || (generateConfig.locale.getShortMonths ? generateConfig.locale.getShortMonths(locale.locale) : []);\n var baseMonth = generateConfig.setMonth(viewDate, 0);\n var getCellNode = monthCellRender ? function (date) {\n return monthCellRender(date, locale);\n } : undefined;\n return /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {\n rowNum: MONTH_ROW_COUNT,\n colNum: MONTH_COL_COUNT,\n baseDate: baseMonth,\n getCellNode: getCellNode,\n getCellText: function getCellText(date) {\n return locale.monthFormat ? formatValue(date, {\n locale: locale,\n format: locale.monthFormat,\n generateConfig: generateConfig\n }) : monthsLocale[generateConfig.getMonth(date)];\n },\n getCellClassName: getCellClassName,\n getCellDate: generateConfig.addMonth,\n titleCell: function titleCell(date) {\n return formatValue(date, {\n locale: locale,\n format: 'YYYY-MM',\n generateConfig: generateConfig\n });\n }\n }));\n}\nexport default MonthBody;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport MonthHeader from './MonthHeader';\nimport MonthBody, { MONTH_COL_COUNT } from './MonthBody';\nimport { createKeyDownHandler } from '../../utils/uiUtil';\nfunction MonthPanel(props) {\n var prefixCls = props.prefixCls,\n operationRef = props.operationRef,\n onViewDateChange = props.onViewDateChange,\n generateConfig = props.generateConfig,\n value = props.value,\n viewDate = props.viewDate,\n onPanelChange = props.onPanelChange,\n _onSelect = props.onSelect;\n var panelPrefixCls = \"\".concat(prefixCls, \"-month-panel\");\n // ======================= Keyboard =======================\n operationRef.current = {\n onKeyDown: function onKeyDown(event) {\n return createKeyDownHandler(event, {\n onLeftRight: function onLeftRight(diff) {\n _onSelect(generateConfig.addMonth(value || viewDate, diff), 'key');\n },\n onCtrlLeftRight: function onCtrlLeftRight(diff) {\n _onSelect(generateConfig.addYear(value || viewDate, diff), 'key');\n },\n onUpDown: function onUpDown(diff) {\n _onSelect(generateConfig.addMonth(value || viewDate, diff * MONTH_COL_COUNT), 'key');\n },\n onEnter: function onEnter() {\n onPanelChange('date', value || viewDate);\n }\n });\n }\n };\n // ==================== View Operation ====================\n var onYearChange = function onYearChange(diff) {\n var newDate = generateConfig.addYear(viewDate, diff);\n onViewDateChange(newDate);\n onPanelChange(null, newDate);\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n className: panelPrefixCls\n }, /*#__PURE__*/React.createElement(MonthHeader, _extends({}, props, {\n prefixCls: prefixCls,\n onPrevYear: function onPrevYear() {\n onYearChange(-1);\n },\n onNextYear: function onNextYear() {\n onYearChange(1);\n },\n onYearClick: function onYearClick() {\n onPanelChange('year', viewDate);\n }\n })), /*#__PURE__*/React.createElement(MonthBody, _extends({}, props, {\n prefixCls: prefixCls,\n onSelect: function onSelect(date) {\n _onSelect(date, 'mouse');\n onPanelChange('date', date);\n }\n })));\n}\nexport default MonthPanel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Header from '../Header';\nimport PanelContext from '../../PanelContext';\nimport { formatValue } from '../../utils/dateUtil';\nfunction QuarterHeader(props) {\n var prefixCls = props.prefixCls,\n generateConfig = props.generateConfig,\n locale = props.locale,\n viewDate = props.viewDate,\n onNextYear = props.onNextYear,\n onPrevYear = props.onPrevYear,\n onYearClick = props.onYearClick;\n var _React$useContext = React.useContext(PanelContext),\n hideHeader = _React$useContext.hideHeader;\n if (hideHeader) {\n return null;\n }\n var headerPrefixCls = \"\".concat(prefixCls, \"-header\");\n return /*#__PURE__*/React.createElement(Header, _extends({}, props, {\n prefixCls: headerPrefixCls,\n onSuperPrev: onPrevYear,\n onSuperNext: onNextYear\n }), /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: onYearClick,\n className: \"\".concat(prefixCls, \"-year-btn\")\n }, formatValue(viewDate, {\n locale: locale,\n format: locale.yearFormat,\n generateConfig: generateConfig\n })));\n}\nexport default QuarterHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { formatValue, isSameQuarter } from '../../utils/dateUtil';\nimport RangeContext from '../../RangeContext';\nimport useCellClassName from '../../hooks/useCellClassName';\nimport PanelBody from '../PanelBody';\nexport var QUARTER_COL_COUNT = 4;\nvar QUARTER_ROW_COUNT = 1;\nfunction QuarterBody(props) {\n var prefixCls = props.prefixCls,\n locale = props.locale,\n value = props.value,\n viewDate = props.viewDate,\n generateConfig = props.generateConfig;\n var _React$useContext = React.useContext(RangeContext),\n rangedValue = _React$useContext.rangedValue,\n hoverRangedValue = _React$useContext.hoverRangedValue;\n var cellPrefixCls = \"\".concat(prefixCls, \"-cell\");\n var getCellClassName = useCellClassName({\n cellPrefixCls: cellPrefixCls,\n value: value,\n generateConfig: generateConfig,\n rangedValue: rangedValue,\n hoverRangedValue: hoverRangedValue,\n isSameCell: function isSameCell(current, target) {\n return isSameQuarter(generateConfig, current, target);\n },\n isInView: function isInView() {\n return true;\n },\n offsetCell: function offsetCell(date, offset) {\n return generateConfig.addMonth(date, offset * 3);\n }\n });\n var baseQuarter = generateConfig.setDate(generateConfig.setMonth(viewDate, 0), 1);\n return /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {\n rowNum: QUARTER_ROW_COUNT,\n colNum: QUARTER_COL_COUNT,\n baseDate: baseQuarter,\n getCellText: function getCellText(date) {\n return formatValue(date, {\n locale: locale,\n format: locale.quarterFormat || '[Q]Q',\n generateConfig: generateConfig\n });\n },\n getCellClassName: getCellClassName,\n getCellDate: function getCellDate(date, offset) {\n return generateConfig.addMonth(date, offset * 3);\n },\n titleCell: function titleCell(date) {\n return formatValue(date, {\n locale: locale,\n format: 'YYYY-[Q]Q',\n generateConfig: generateConfig\n });\n }\n }));\n}\nexport default QuarterBody;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport QuarterHeader from './QuarterHeader';\nimport QuarterBody from './QuarterBody';\nimport { createKeyDownHandler } from '../../utils/uiUtil';\nfunction QuarterPanel(props) {\n var prefixCls = props.prefixCls,\n operationRef = props.operationRef,\n onViewDateChange = props.onViewDateChange,\n generateConfig = props.generateConfig,\n value = props.value,\n viewDate = props.viewDate,\n onPanelChange = props.onPanelChange,\n _onSelect = props.onSelect;\n var panelPrefixCls = \"\".concat(prefixCls, \"-quarter-panel\");\n // ======================= Keyboard =======================\n operationRef.current = {\n onKeyDown: function onKeyDown(event) {\n return createKeyDownHandler(event, {\n onLeftRight: function onLeftRight(diff) {\n _onSelect(generateConfig.addMonth(value || viewDate, diff * 3), 'key');\n },\n onCtrlLeftRight: function onCtrlLeftRight(diff) {\n _onSelect(generateConfig.addYear(value || viewDate, diff), 'key');\n },\n onUpDown: function onUpDown(diff) {\n _onSelect(generateConfig.addYear(value || viewDate, diff), 'key');\n }\n });\n }\n };\n // ==================== View Operation ====================\n var onYearChange = function onYearChange(diff) {\n var newDate = generateConfig.addYear(viewDate, diff);\n onViewDateChange(newDate);\n onPanelChange(null, newDate);\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n className: panelPrefixCls\n }, /*#__PURE__*/React.createElement(QuarterHeader, _extends({}, props, {\n prefixCls: prefixCls,\n onPrevYear: function onPrevYear() {\n onYearChange(-1);\n },\n onNextYear: function onNextYear() {\n onYearChange(1);\n },\n onYearClick: function onYearClick() {\n onPanelChange('year', viewDate);\n }\n })), /*#__PURE__*/React.createElement(QuarterBody, _extends({}, props, {\n prefixCls: prefixCls,\n onSelect: function onSelect(date) {\n _onSelect(date, 'mouse');\n }\n })));\n}\nexport default QuarterPanel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Header from '../Header';\nimport { YEAR_DECADE_COUNT } from '.';\nimport PanelContext from '../../PanelContext';\nfunction YearHeader(props) {\n var prefixCls = props.prefixCls,\n generateConfig = props.generateConfig,\n viewDate = props.viewDate,\n onPrevDecade = props.onPrevDecade,\n onNextDecade = props.onNextDecade,\n onDecadeClick = props.onDecadeClick;\n var _React$useContext = React.useContext(PanelContext),\n hideHeader = _React$useContext.hideHeader;\n if (hideHeader) {\n return null;\n }\n var headerPrefixCls = \"\".concat(prefixCls, \"-header\");\n var yearNumber = generateConfig.getYear(viewDate);\n var startYear = Math.floor(yearNumber / YEAR_DECADE_COUNT) * YEAR_DECADE_COUNT;\n var endYear = startYear + YEAR_DECADE_COUNT - 1;\n return /*#__PURE__*/React.createElement(Header, _extends({}, props, {\n prefixCls: headerPrefixCls,\n onSuperPrev: onPrevDecade,\n onSuperNext: onNextDecade\n }), /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: onDecadeClick,\n className: \"\".concat(prefixCls, \"-decade-btn\")\n }, startYear, \"-\", endYear));\n}\nexport default YearHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { YEAR_DECADE_COUNT } from '.';\nimport useCellClassName from '../../hooks/useCellClassName';\nimport { formatValue, isSameYear } from '../../utils/dateUtil';\nimport RangeContext from '../../RangeContext';\nimport PanelBody from '../PanelBody';\nexport var YEAR_COL_COUNT = 3;\nvar YEAR_ROW_COUNT = 4;\nfunction YearBody(props) {\n var prefixCls = props.prefixCls,\n value = props.value,\n viewDate = props.viewDate,\n locale = props.locale,\n generateConfig = props.generateConfig;\n var _React$useContext = React.useContext(RangeContext),\n rangedValue = _React$useContext.rangedValue,\n hoverRangedValue = _React$useContext.hoverRangedValue;\n var yearPrefixCls = \"\".concat(prefixCls, \"-cell\");\n // =============================== Year ===============================\n var yearNumber = generateConfig.getYear(viewDate);\n var startYear = Math.floor(yearNumber / YEAR_DECADE_COUNT) * YEAR_DECADE_COUNT;\n var endYear = startYear + YEAR_DECADE_COUNT - 1;\n var baseYear = generateConfig.setYear(viewDate, startYear - Math.ceil((YEAR_COL_COUNT * YEAR_ROW_COUNT - YEAR_DECADE_COUNT) / 2));\n var isInView = function isInView(date) {\n var currentYearNumber = generateConfig.getYear(date);\n return startYear <= currentYearNumber && currentYearNumber <= endYear;\n };\n var getCellClassName = useCellClassName({\n cellPrefixCls: yearPrefixCls,\n value: value,\n generateConfig: generateConfig,\n rangedValue: rangedValue,\n hoverRangedValue: hoverRangedValue,\n isSameCell: function isSameCell(current, target) {\n return isSameYear(generateConfig, current, target);\n },\n isInView: isInView,\n offsetCell: function offsetCell(date, offset) {\n return generateConfig.addYear(date, offset);\n }\n });\n return /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {\n rowNum: YEAR_ROW_COUNT,\n colNum: YEAR_COL_COUNT,\n baseDate: baseYear,\n getCellText: generateConfig.getYear,\n getCellClassName: getCellClassName,\n getCellDate: generateConfig.addYear,\n titleCell: function titleCell(date) {\n return formatValue(date, {\n locale: locale,\n format: 'YYYY',\n generateConfig: generateConfig\n });\n }\n }));\n}\nexport default YearBody;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport YearHeader from './YearHeader';\nimport YearBody, { YEAR_COL_COUNT } from './YearBody';\nimport { createKeyDownHandler } from '../../utils/uiUtil';\nexport var YEAR_DECADE_COUNT = 10;\nfunction YearPanel(props) {\n var prefixCls = props.prefixCls,\n operationRef = props.operationRef,\n onViewDateChange = props.onViewDateChange,\n generateConfig = props.generateConfig,\n value = props.value,\n viewDate = props.viewDate,\n sourceMode = props.sourceMode,\n _onSelect = props.onSelect,\n onPanelChange = props.onPanelChange;\n var panelPrefixCls = \"\".concat(prefixCls, \"-year-panel\");\n // ======================= Keyboard =======================\n operationRef.current = {\n onKeyDown: function onKeyDown(event) {\n return createKeyDownHandler(event, {\n onLeftRight: function onLeftRight(diff) {\n _onSelect(generateConfig.addYear(value || viewDate, diff), 'key');\n },\n onCtrlLeftRight: function onCtrlLeftRight(diff) {\n _onSelect(generateConfig.addYear(value || viewDate, diff * YEAR_DECADE_COUNT), 'key');\n },\n onUpDown: function onUpDown(diff) {\n _onSelect(generateConfig.addYear(value || viewDate, diff * YEAR_COL_COUNT), 'key');\n },\n onEnter: function onEnter() {\n onPanelChange(sourceMode === 'date' ? 'date' : 'month', value || viewDate);\n }\n });\n }\n };\n // ==================== View Operation ====================\n var onDecadeChange = function onDecadeChange(diff) {\n var newDate = generateConfig.addYear(viewDate, diff * 10);\n onViewDateChange(newDate);\n onPanelChange(null, newDate);\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n className: panelPrefixCls\n }, /*#__PURE__*/React.createElement(YearHeader, _extends({}, props, {\n prefixCls: prefixCls,\n onPrevDecade: function onPrevDecade() {\n onDecadeChange(-1);\n },\n onNextDecade: function onNextDecade() {\n onDecadeChange(1);\n },\n onDecadeClick: function onDecadeClick() {\n onPanelChange('decade', viewDate);\n }\n })), /*#__PURE__*/React.createElement(YearBody, _extends({}, props, {\n prefixCls: prefixCls,\n onSelect: function onSelect(date) {\n onPanelChange(sourceMode === 'date' ? 'date' : 'month', date);\n _onSelect(date, 'mouse');\n }\n })));\n}\nexport default YearPanel;","import * as React from 'react';\nexport default function getExtraFooter(prefixCls, mode, renderExtraFooter) {\n if (!renderExtraFooter) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-footer-extra\")\n }, renderExtraFooter(mode));\n}","import * as React from 'react';\nexport default function getRanges(_ref) {\n var prefixCls = _ref.prefixCls,\n _ref$rangeList = _ref.rangeList,\n rangeList = _ref$rangeList === void 0 ? [] : _ref$rangeList,\n _ref$components = _ref.components,\n components = _ref$components === void 0 ? {} : _ref$components,\n needConfirmButton = _ref.needConfirmButton,\n onNow = _ref.onNow,\n onOk = _ref.onOk,\n okDisabled = _ref.okDisabled,\n showNow = _ref.showNow,\n locale = _ref.locale;\n var presetNode;\n var okNode;\n if (rangeList.length) {\n var Item = components.rangeItem || 'span';\n presetNode = /*#__PURE__*/React.createElement(React.Fragment, null, rangeList.map(function (_ref2) {\n var label = _ref2.label,\n onClick = _ref2.onClick,\n onMouseEnter = _ref2.onMouseEnter,\n onMouseLeave = _ref2.onMouseLeave;\n return /*#__PURE__*/React.createElement(\"li\", {\n key: label,\n className: \"\".concat(prefixCls, \"-preset\")\n }, /*#__PURE__*/React.createElement(Item, {\n onClick: onClick,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave\n }, label));\n }));\n }\n if (needConfirmButton) {\n var Button = components.button || 'button';\n if (onNow && !presetNode && showNow !== false) {\n presetNode = /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls, \"-now\")\n }, /*#__PURE__*/React.createElement(\"a\", {\n className: \"\".concat(prefixCls, \"-now-btn\"),\n onClick: onNow\n }, locale.now));\n }\n okNode = needConfirmButton && /*#__PURE__*/React.createElement(\"li\", {\n className: \"\".concat(prefixCls, \"-ok\")\n }, /*#__PURE__*/React.createElement(Button, {\n disabled: okDisabled,\n onClick: onOk\n }, locale.ok));\n }\n if (!presetNode && !okNode) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"ul\", {\n className: \"\".concat(prefixCls, \"-ranges\")\n }, presetNode, okNode);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/**\n * Logic:\n * When `mode` === `picker`,\n * click will trigger `onSelect` (if value changed trigger `onChange` also).\n * Panel change will not trigger `onSelect` but trigger `onPanelChange`\n */\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport warning from \"rc-util/es/warning\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport TimePanel from './panels/TimePanel';\nimport DatetimePanel from './panels/DatetimePanel';\nimport DatePanel from './panels/DatePanel';\nimport WeekPanel from './panels/WeekPanel';\nimport MonthPanel from './panels/MonthPanel';\nimport QuarterPanel from './panels/QuarterPanel';\nimport YearPanel from './panels/YearPanel';\nimport DecadePanel from './panels/DecadePanel';\nimport { WEEK_DAY_COUNT, isEqual } from './utils/dateUtil';\nimport PanelContext from './PanelContext';\nimport { PickerModeMap } from './utils/uiUtil';\nimport { MONTH_COL_COUNT } from './panels/MonthPanel/MonthBody';\nimport RangeContext from './RangeContext';\nimport getExtraFooter from './utils/getExtraFooter';\nimport getRanges from './utils/getRanges';\nimport { getLowerBoundTime, setDateTime, setTime } from './utils/timeUtil';\n// Calendar picker type\nvar CALENDAR_PANEL_MODE = ['date', 'month'];\nfunction PickerPanel(props) {\n var _classNames;\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-picker' : _props$prefixCls,\n className = props.className,\n style = props.style,\n locale = props.locale,\n generateConfig = props.generateConfig,\n value = props.value,\n defaultValue = props.defaultValue,\n pickerValue = props.pickerValue,\n defaultPickerValue = props.defaultPickerValue,\n disabledDate = props.disabledDate,\n mode = props.mode,\n _props$picker = props.picker,\n picker = _props$picker === void 0 ? 'date' : _props$picker,\n _props$tabIndex = props.tabIndex,\n tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n showNow = props.showNow,\n showTime = props.showTime,\n showToday = props.showToday,\n renderExtraFooter = props.renderExtraFooter,\n hideHeader = props.hideHeader,\n onSelect = props.onSelect,\n onChange = props.onChange,\n onPanelChange = props.onPanelChange,\n onMouseDown = props.onMouseDown,\n onPickerValueChange = props.onPickerValueChange,\n _onOk = props.onOk,\n components = props.components,\n direction = props.direction,\n _props$hourStep = props.hourStep,\n hourStep = _props$hourStep === void 0 ? 1 : _props$hourStep,\n _props$minuteStep = props.minuteStep,\n minuteStep = _props$minuteStep === void 0 ? 1 : _props$minuteStep,\n _props$secondStep = props.secondStep,\n secondStep = _props$secondStep === void 0 ? 1 : _props$secondStep;\n var needConfirmButton = picker === 'date' && !!showTime || picker === 'time';\n var isHourStepValid = 24 % hourStep === 0;\n var isMinuteStepValid = 60 % minuteStep === 0;\n var isSecondStepValid = 60 % secondStep === 0;\n if (process.env.NODE_ENV !== 'production') {\n warning(!value || generateConfig.isValidate(value), 'Invalidate date pass to `value`.');\n warning(!value || generateConfig.isValidate(value), 'Invalidate date pass to `defaultValue`.');\n warning(isHourStepValid, \"`hourStep` \".concat(hourStep, \" is invalid. It should be a factor of 24.\"));\n warning(isMinuteStepValid, \"`minuteStep` \".concat(minuteStep, \" is invalid. It should be a factor of 60.\"));\n warning(isSecondStepValid, \"`secondStep` \".concat(secondStep, \" is invalid. It should be a factor of 60.\"));\n }\n // ============================ State =============================\n var panelContext = React.useContext(PanelContext);\n var operationRef = panelContext.operationRef,\n panelDivRef = panelContext.panelRef,\n onContextSelect = panelContext.onSelect,\n hideRanges = panelContext.hideRanges,\n defaultOpenValue = panelContext.defaultOpenValue;\n var _React$useContext = React.useContext(RangeContext),\n inRange = _React$useContext.inRange,\n panelPosition = _React$useContext.panelPosition,\n rangedValue = _React$useContext.rangedValue,\n hoverRangedValue = _React$useContext.hoverRangedValue;\n var panelRef = React.useRef({});\n // Handle init logic\n var initRef = React.useRef(true);\n // Value\n var _useMergedState = useMergedState(null, {\n value: value,\n defaultValue: defaultValue,\n postState: function postState(val) {\n if (!val && defaultOpenValue && picker === 'time') {\n return defaultOpenValue;\n }\n return val;\n }\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedValue = _useMergedState2[0],\n setInnerValue = _useMergedState2[1];\n // View date control\n var _useMergedState3 = useMergedState(null, {\n value: pickerValue,\n defaultValue: defaultPickerValue || mergedValue,\n postState: function postState(date) {\n var now = generateConfig.getNow();\n if (!date) {\n return now;\n }\n // When value is null and set showTime\n if (!mergedValue && showTime) {\n var defaultDateObject = _typeof(showTime) === 'object' ? showTime.defaultValue : defaultValue;\n return setDateTime(generateConfig, Array.isArray(date) ? date[0] : date, defaultDateObject || now);\n }\n return Array.isArray(date) ? date[0] : date;\n }\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n viewDate = _useMergedState4[0],\n setInnerViewDate = _useMergedState4[1];\n var setViewDate = function setViewDate(date) {\n setInnerViewDate(date);\n if (onPickerValueChange) {\n onPickerValueChange(date);\n }\n };\n // Panel control\n var getInternalNextMode = function getInternalNextMode(nextMode) {\n var getNextMode = PickerModeMap[picker];\n if (getNextMode) {\n return getNextMode(nextMode);\n }\n return nextMode;\n };\n // Save panel is changed from which panel\n var _useMergedState5 = useMergedState(function () {\n if (picker === 'time') {\n return 'time';\n }\n return getInternalNextMode('date');\n }, {\n value: mode\n }),\n _useMergedState6 = _slicedToArray(_useMergedState5, 2),\n mergedMode = _useMergedState6[0],\n setInnerMode = _useMergedState6[1];\n React.useEffect(function () {\n setInnerMode(picker);\n }, [picker]);\n var _React$useState = React.useState(function () {\n return mergedMode;\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n sourceMode = _React$useState2[0],\n setSourceMode = _React$useState2[1];\n var onInternalPanelChange = function onInternalPanelChange(newMode, viewValue) {\n var nextMode = getInternalNextMode(newMode || mergedMode);\n setSourceMode(mergedMode);\n setInnerMode(nextMode);\n if (onPanelChange && (mergedMode !== nextMode || isEqual(generateConfig, viewDate, viewDate))) {\n onPanelChange(viewValue, nextMode);\n }\n };\n var triggerSelect = function triggerSelect(date, type) {\n var forceTriggerSelect = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (mergedMode === picker || forceTriggerSelect) {\n setInnerValue(date);\n if (onSelect) {\n onSelect(date);\n }\n if (onContextSelect) {\n onContextSelect(date, type);\n }\n if (onChange && !isEqual(generateConfig, date, mergedValue) && !(disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date))) {\n onChange(date);\n }\n }\n };\n var isSelectable = function isSelectable(key) {\n if (CALENDAR_PANEL_MODE.includes(mergedMode)) {\n var date;\n var operationFnc;\n var isDateMode = mergedMode === 'date';\n if (key === KeyCode.PAGE_UP || key === KeyCode.PAGE_DOWN) {\n operationFnc = isDateMode ? generateConfig.addMonth : generateConfig.addYear;\n } else {\n operationFnc = isDateMode ? generateConfig.addDate : generateConfig.addMonth;\n }\n switch (key) {\n case KeyCode.LEFT:\n case KeyCode.PAGE_UP:\n date = operationFnc(viewDate, -1);\n break;\n case KeyCode.RIGHT:\n case KeyCode.PAGE_DOWN:\n date = operationFnc(viewDate, 1);\n break;\n case KeyCode.UP:\n case KeyCode.DOWN:\n date = operationFnc(viewDate, Number(\"\".concat(key === KeyCode.UP ? '-' : '').concat(isDateMode ? WEEK_DAY_COUNT : MONTH_COL_COUNT)));\n break;\n }\n if (date) {\n return !(disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date));\n }\n }\n return true;\n };\n // ========================= Interactive ==========================\n var onInternalKeyDown = function onInternalKeyDown(e) {\n if (panelRef.current && panelRef.current.onKeyDown) {\n var selectable = true;\n var which = e.which;\n if ([KeyCode.LEFT, KeyCode.RIGHT, KeyCode.UP, KeyCode.DOWN, KeyCode.PAGE_UP, KeyCode.PAGE_DOWN, KeyCode.ENTER].includes(which)) {\n e.preventDefault();\n if (which !== KeyCode.ENTER && tabIndex === 0) {\n selectable = isSelectable(which);\n }\n }\n // Cannot use keyboard to select disabled date\n if (selectable) {\n return panelRef.current.onKeyDown(e);\n }\n }\n /* istanbul ignore next */\n /* eslint-disable no-lone-blocks */\n {\n warning(false, 'Panel not correct handle keyDown event. Please help to fire issue about this.');\n return false;\n }\n /* eslint-enable no-lone-blocks */\n };\n\n var onInternalBlur = function onInternalBlur(e) {\n if (panelRef.current && panelRef.current.onBlur) {\n panelRef.current.onBlur(e);\n }\n };\n if (operationRef && panelPosition !== 'right') {\n operationRef.current = {\n onKeyDown: onInternalKeyDown,\n onClose: function onClose() {\n if (panelRef.current && panelRef.current.onClose) {\n panelRef.current.onClose();\n }\n }\n };\n }\n // ============================ Effect ============================\n React.useEffect(function () {\n if (value && !initRef.current) {\n setInnerViewDate(value);\n }\n }, [value]);\n React.useEffect(function () {\n initRef.current = false;\n }, []);\n // ============================ Panels ============================\n var panelNode;\n var pickerProps = _objectSpread(_objectSpread({}, props), {}, {\n operationRef: panelRef,\n prefixCls: prefixCls,\n viewDate: viewDate,\n value: mergedValue,\n onViewDateChange: setViewDate,\n sourceMode: sourceMode,\n onPanelChange: onInternalPanelChange,\n disabledDate: disabledDate\n });\n delete pickerProps.onChange;\n delete pickerProps.onSelect;\n switch (mergedMode) {\n case 'decade':\n panelNode = /*#__PURE__*/React.createElement(DecadePanel, _extends({}, pickerProps, {\n onSelect: function onSelect(date, type) {\n setViewDate(date);\n triggerSelect(date, type);\n }\n }));\n break;\n case 'year':\n panelNode = /*#__PURE__*/React.createElement(YearPanel, _extends({}, pickerProps, {\n onSelect: function onSelect(date, type) {\n setViewDate(date);\n triggerSelect(date, type);\n }\n }));\n break;\n case 'month':\n panelNode = /*#__PURE__*/React.createElement(MonthPanel, _extends({}, pickerProps, {\n onSelect: function onSelect(date, type) {\n setViewDate(date);\n triggerSelect(date, type);\n }\n }));\n break;\n case 'quarter':\n panelNode = /*#__PURE__*/React.createElement(QuarterPanel, _extends({}, pickerProps, {\n onSelect: function onSelect(date, type) {\n setViewDate(date);\n triggerSelect(date, type);\n }\n }));\n break;\n case 'week':\n panelNode = /*#__PURE__*/React.createElement(WeekPanel, _extends({}, pickerProps, {\n onSelect: function onSelect(date, type) {\n setViewDate(date);\n triggerSelect(date, type);\n }\n }));\n break;\n case 'time':\n delete pickerProps.showTime;\n panelNode = /*#__PURE__*/React.createElement(TimePanel, _extends({}, pickerProps, _typeof(showTime) === 'object' ? showTime : null, {\n onSelect: function onSelect(date, type) {\n setViewDate(date);\n triggerSelect(date, type);\n }\n }));\n break;\n default:\n if (showTime) {\n panelNode = /*#__PURE__*/React.createElement(DatetimePanel, _extends({}, pickerProps, {\n onSelect: function onSelect(date, type) {\n setViewDate(date);\n triggerSelect(date, type);\n }\n }));\n } else {\n panelNode = /*#__PURE__*/React.createElement(DatePanel, _extends({}, pickerProps, {\n onSelect: function onSelect(date, type) {\n setViewDate(date);\n triggerSelect(date, type);\n }\n }));\n }\n }\n // ============================ Footer ============================\n var extraFooter;\n var rangesNode;\n var onNow = function onNow() {\n var now = generateConfig.getNow();\n var lowerBoundTime = getLowerBoundTime(generateConfig.getHour(now), generateConfig.getMinute(now), generateConfig.getSecond(now), isHourStepValid ? hourStep : 1, isMinuteStepValid ? minuteStep : 1, isSecondStepValid ? secondStep : 1);\n var adjustedNow = setTime(generateConfig, now, lowerBoundTime[0],\n // hour\n lowerBoundTime[1],\n // minute\n lowerBoundTime[2]);\n triggerSelect(adjustedNow, 'submit');\n };\n if (!hideRanges) {\n extraFooter = getExtraFooter(prefixCls, mergedMode, renderExtraFooter);\n rangesNode = getRanges({\n prefixCls: prefixCls,\n components: components,\n needConfirmButton: needConfirmButton,\n okDisabled: !mergedValue || disabledDate && disabledDate(mergedValue),\n locale: locale,\n showNow: showNow,\n onNow: needConfirmButton && onNow,\n onOk: function onOk() {\n if (mergedValue) {\n triggerSelect(mergedValue, 'submit', true);\n if (_onOk) {\n _onOk(mergedValue);\n }\n }\n }\n });\n }\n var todayNode;\n if (showToday && mergedMode === 'date' && picker === 'date' && !showTime) {\n var now = generateConfig.getNow();\n var todayCls = \"\".concat(prefixCls, \"-today-btn\");\n var disabled = disabledDate && disabledDate(now);\n todayNode = /*#__PURE__*/React.createElement(\"a\", {\n className: classNames(todayCls, disabled && \"\".concat(todayCls, \"-disabled\")),\n \"aria-disabled\": disabled,\n onClick: function onClick() {\n if (!disabled) {\n triggerSelect(now, 'mouse', true);\n }\n }\n }, locale.today);\n }\n return /*#__PURE__*/React.createElement(PanelContext.Provider, {\n value: _objectSpread(_objectSpread({}, panelContext), {}, {\n mode: mergedMode,\n hideHeader: 'hideHeader' in props ? hideHeader : panelContext.hideHeader,\n hidePrevBtn: inRange && panelPosition === 'right',\n hideNextBtn: inRange && panelPosition === 'left'\n })\n }, /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: tabIndex,\n className: classNames(\"\".concat(prefixCls, \"-panel\"), className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-panel-has-range\"), rangedValue && rangedValue[0] && rangedValue[1]), _defineProperty(_classNames, \"\".concat(prefixCls, \"-panel-has-range-hover\"), hoverRangedValue && hoverRangedValue[0] && hoverRangedValue[1]), _defineProperty(_classNames, \"\".concat(prefixCls, \"-panel-rtl\"), direction === 'rtl'), _classNames)),\n style: style,\n onKeyDown: onInternalKeyDown,\n onBlur: onInternalBlur,\n onMouseDown: onMouseDown,\n ref: panelDivRef\n }, panelNode, extraFooter || rangesNode || todayNode ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-footer\")\n }, extraFooter, rangesNode, todayNode) : null));\n}\nexport default PickerPanel;\n/* eslint-enable */","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Trigger from 'rc-trigger';\nvar BUILT_IN_PLACEMENTS = {\n bottomLeft: {\n points: ['tl', 'bl'],\n offset: [0, 4],\n overflow: {\n adjustX: 1,\n adjustY: 1\n }\n },\n bottomRight: {\n points: ['tr', 'br'],\n offset: [0, 4],\n overflow: {\n adjustX: 1,\n adjustY: 1\n }\n },\n topLeft: {\n points: ['bl', 'tl'],\n offset: [0, -4],\n overflow: {\n adjustX: 0,\n adjustY: 1\n }\n },\n topRight: {\n points: ['br', 'tr'],\n offset: [0, -4],\n overflow: {\n adjustX: 0,\n adjustY: 1\n }\n }\n};\nfunction PickerTrigger(_ref) {\n var _classNames;\n var prefixCls = _ref.prefixCls,\n popupElement = _ref.popupElement,\n popupStyle = _ref.popupStyle,\n visible = _ref.visible,\n dropdownClassName = _ref.dropdownClassName,\n dropdownAlign = _ref.dropdownAlign,\n transitionName = _ref.transitionName,\n getPopupContainer = _ref.getPopupContainer,\n children = _ref.children,\n range = _ref.range,\n popupPlacement = _ref.popupPlacement,\n direction = _ref.direction;\n var dropdownPrefixCls = \"\".concat(prefixCls, \"-dropdown\");\n var getPopupPlacement = function getPopupPlacement() {\n if (popupPlacement !== undefined) {\n return popupPlacement;\n }\n return direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n };\n return /*#__PURE__*/React.createElement(Trigger, {\n showAction: [],\n hideAction: [],\n popupPlacement: getPopupPlacement(),\n builtinPlacements: BUILT_IN_PLACEMENTS,\n prefixCls: dropdownPrefixCls,\n popupTransitionName: transitionName,\n popup: popupElement,\n popupAlign: dropdownAlign,\n popupVisible: visible,\n popupClassName: classNames(dropdownClassName, (_classNames = {}, _defineProperty(_classNames, \"\".concat(dropdownPrefixCls, \"-range\"), range), _defineProperty(_classNames, \"\".concat(dropdownPrefixCls, \"-rtl\"), direction === 'rtl'), _classNames)),\n popupStyle: popupStyle,\n getPopupContainer: getPopupContainer\n }, children);\n}\nexport default PickerTrigger;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useState, useEffect, useRef } from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport { addGlobalMouseDownEvent, getTargetFromEvent } from '../utils/uiUtil';\nexport default function usePickerInput(_ref) {\n var open = _ref.open,\n value = _ref.value,\n isClickOutside = _ref.isClickOutside,\n triggerOpen = _ref.triggerOpen,\n forwardKeyDown = _ref.forwardKeyDown,\n _onKeyDown = _ref.onKeyDown,\n blurToCancel = _ref.blurToCancel,\n onSubmit = _ref.onSubmit,\n onCancel = _ref.onCancel,\n _onFocus = _ref.onFocus,\n _onBlur = _ref.onBlur,\n currentFocusedKey = _ref.currentFocusedKey,\n _ref$key = _ref.key,\n key = _ref$key === void 0 ? 'start' : _ref$key;\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n typing = _useState2[0],\n setTyping = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n focused = _useState4[0],\n setFocused = _useState4[1];\n var delayBlurTimer = useRef();\n /**\n * We will prevent blur to handle open event when user click outside,\n * since this will repeat trigger `onOpenChange` event.\n */\n var preventBlurRef = useRef(false);\n var valueChangedRef = useRef(false);\n var preventDefaultRef = useRef(false);\n var inputProps = {\n onMouseDown: function onMouseDown() {\n setTyping(true);\n triggerOpen(true);\n },\n onKeyDown: function onKeyDown(e) {\n var preventDefault = function preventDefault() {\n preventDefaultRef.current = true;\n };\n _onKeyDown(e, preventDefault);\n if (preventDefaultRef.current) return;\n switch (e.which) {\n case KeyCode.ENTER:\n {\n if (!open) {\n triggerOpen(true);\n } else if (onSubmit() !== false) {\n setTyping(true);\n }\n e.preventDefault();\n return;\n }\n case KeyCode.TAB:\n {\n if (typing && open && !e.shiftKey) {\n setTyping(false);\n e.preventDefault();\n } else if (!typing && open) {\n if (!forwardKeyDown(e) && e.shiftKey) {\n setTyping(true);\n e.preventDefault();\n }\n }\n return;\n }\n case KeyCode.ESC:\n {\n setTyping(true);\n onCancel();\n return;\n }\n }\n if (!open && ![KeyCode.SHIFT].includes(e.which)) {\n triggerOpen(true);\n } else if (!typing) {\n // Let popup panel handle keyboard\n forwardKeyDown(e);\n }\n },\n onFocus: function onFocus(e) {\n setTyping(true);\n setFocused(true);\n if (currentFocusedKey) {\n currentFocusedKey.current = key;\n }\n clearTimeout(delayBlurTimer.current);\n if (_onFocus) {\n _onFocus(e);\n }\n },\n onBlur: function onBlur(e) {\n if (preventBlurRef.current || !isClickOutside(document.activeElement)) {\n preventBlurRef.current = false;\n return;\n }\n if (blurToCancel) {\n setTimeout(function () {\n var _document = document,\n activeElement = _document.activeElement;\n while (activeElement && activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n if (isClickOutside(activeElement)) {\n onCancel();\n }\n }, 0);\n } else if (open) {\n triggerOpen(false);\n if (valueChangedRef.current) {\n onSubmit();\n }\n }\n setFocused(false);\n if (currentFocusedKey) {\n currentFocusedKey.current = '';\n // Delay to prevent 'range' focus transitions from firing resulting in incorrect out-of-focus events\n delayBlurTimer.current = setTimeout(function () {\n // Prevent the 'blur' event from firing when there is currently a focused input\n if (currentFocusedKey.current) {\n return;\n }\n _onBlur === null || _onBlur === void 0 ? void 0 : _onBlur(e);\n }, 100);\n } else {\n _onBlur === null || _onBlur === void 0 ? void 0 : _onBlur(e);\n }\n }\n };\n // check if value changed\n useEffect(function () {\n valueChangedRef.current = false;\n }, [open]);\n useEffect(function () {\n valueChangedRef.current = true;\n }, [value]);\n // Global click handler\n useEffect(function () {\n return addGlobalMouseDownEvent(function (e) {\n var target = getTargetFromEvent(e);\n var clickedOutside = isClickOutside(target);\n if (open) {\n if (!clickedOutside) {\n preventBlurRef.current = true;\n // Always set back in case `onBlur` prevented by user\n requestAnimationFrame(function () {\n preventBlurRef.current = false;\n });\n } else if (!focused || clickedOutside) {\n triggerOpen(false);\n }\n } else if (focused && !clickedOutside) {\n preventBlurRef.current = true;\n }\n });\n });\n useEffect(function () {\n return function () {\n return clearTimeout(delayBlurTimer.current);\n };\n }, []);\n return [inputProps, {\n focused: focused,\n typing: typing\n }];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default function useTextValueMapping(_ref) {\n var valueTexts = _ref.valueTexts,\n onTextChange = _ref.onTextChange;\n var _React$useState = React.useState(''),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n text = _React$useState2[0],\n setInnerText = _React$useState2[1];\n var valueTextsRef = React.useRef([]);\n valueTextsRef.current = valueTexts;\n function triggerTextChange(value) {\n setInnerText(value);\n onTextChange(value);\n }\n function resetText() {\n setInnerText(valueTextsRef.current[0]);\n }\n React.useEffect(function () {\n if (valueTexts.every(function (valText) {\n return valText !== text;\n })) {\n resetText();\n }\n }, [valueTexts.join('||')]);\n return [text, triggerTextChange, resetText];\n}","import shallowEqual from 'shallowequal';\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport { formatValue } from '../utils/dateUtil';\nexport default function useValueTexts(value, _ref) {\n var formatList = _ref.formatList,\n generateConfig = _ref.generateConfig,\n locale = _ref.locale;\n return useMemo(function () {\n if (!value) {\n return [[''], ''];\n }\n // We will convert data format back to first format\n var firstValueText = '';\n var fullValueTexts = [];\n for (var i = 0; i < formatList.length; i += 1) {\n var format = formatList[i];\n var formatStr = formatValue(value, {\n generateConfig: generateConfig,\n locale: locale,\n format: format\n });\n fullValueTexts.push(formatStr);\n if (i === 0) {\n firstValueText = formatStr;\n }\n }\n return [fullValueTexts, firstValueText];\n }, [value, formatList], function (prev, next) {\n return prev[0] !== next[0] || !shallowEqual(prev[1], next[1]);\n });\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useState, useEffect, useRef } from 'react';\nimport useValueTexts from './useValueTexts';\nexport default function useHoverValue(valueText, _ref) {\n var formatList = _ref.formatList,\n generateConfig = _ref.generateConfig,\n locale = _ref.locale;\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n value = _useState2[0],\n internalSetValue = _useState2[1];\n var raf = useRef(null);\n function setValue(val) {\n var immediately = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n cancelAnimationFrame(raf.current);\n if (immediately) {\n internalSetValue(val);\n return;\n }\n raf.current = requestAnimationFrame(function () {\n internalSetValue(val);\n });\n }\n var _useValueTexts = useValueTexts(value, {\n formatList: formatList,\n generateConfig: generateConfig,\n locale: locale\n }),\n _useValueTexts2 = _slicedToArray(_useValueTexts, 2),\n firstText = _useValueTexts2[1];\n function onEnter(date) {\n setValue(date);\n }\n function onLeave() {\n var immediately = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n setValue(null, immediately);\n }\n useEffect(function () {\n onLeave(true);\n }, [valueText]);\n useEffect(function () {\n return function () {\n return cancelAnimationFrame(raf.current);\n };\n }, []);\n return [firstText, onEnter, onLeave];\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/**\n * Removed:\n * - getCalendarContainer: use `getPopupContainer` instead\n * - onOk\n *\n * New Feature:\n * - picker\n * - allowEmpty\n * - selectable\n *\n * Tips: Should add faq about `datetime` mode with `defaultValue`\n */\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport warning from \"rc-util/es/warning\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport PickerPanel from './PickerPanel';\nimport PickerTrigger from './PickerTrigger';\nimport { formatValue, isEqual, parseValue } from './utils/dateUtil';\nimport getDataOrAriaProps, { toArray } from './utils/miscUtil';\nimport PanelContext from './PanelContext';\nimport { getDefaultFormat, getInputSize, elementsContains } from './utils/uiUtil';\nimport usePickerInput from './hooks/usePickerInput';\nimport useTextValueMapping from './hooks/useTextValueMapping';\nimport useValueTexts from './hooks/useValueTexts';\nimport useHoverValue from './hooks/useHoverValue';\nimport { legacyPropsWarning } from './utils/warnUtil';\nfunction InnerPicker(props) {\n var _classNames2;\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-picker' : _props$prefixCls,\n id = props.id,\n tabIndex = props.tabIndex,\n style = props.style,\n className = props.className,\n dropdownClassName = props.dropdownClassName,\n dropdownAlign = props.dropdownAlign,\n popupStyle = props.popupStyle,\n transitionName = props.transitionName,\n generateConfig = props.generateConfig,\n locale = props.locale,\n inputReadOnly = props.inputReadOnly,\n allowClear = props.allowClear,\n autoFocus = props.autoFocus,\n showTime = props.showTime,\n _props$picker = props.picker,\n picker = _props$picker === void 0 ? 'date' : _props$picker,\n format = props.format,\n use12Hours = props.use12Hours,\n value = props.value,\n defaultValue = props.defaultValue,\n open = props.open,\n defaultOpen = props.defaultOpen,\n defaultOpenValue = props.defaultOpenValue,\n suffixIcon = props.suffixIcon,\n clearIcon = props.clearIcon,\n disabled = props.disabled,\n disabledDate = props.disabledDate,\n placeholder = props.placeholder,\n getPopupContainer = props.getPopupContainer,\n pickerRef = props.pickerRef,\n panelRender = props.panelRender,\n onChange = props.onChange,\n onOpenChange = props.onOpenChange,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n onMouseDown = props.onMouseDown,\n onMouseUp = props.onMouseUp,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onContextMenu = props.onContextMenu,\n onClick = props.onClick,\n _onKeyDown = props.onKeyDown,\n _onSelect = props.onSelect,\n direction = props.direction,\n _props$autoComplete = props.autoComplete,\n autoComplete = _props$autoComplete === void 0 ? 'off' : _props$autoComplete,\n inputRender = props.inputRender;\n var inputRef = React.useRef(null);\n var needConfirmButton = picker === 'date' && !!showTime || picker === 'time';\n // ============================ Warning ============================\n if (process.env.NODE_ENV !== 'production') {\n legacyPropsWarning(props);\n }\n // ============================= State =============================\n var formatList = toArray(getDefaultFormat(format, picker, showTime, use12Hours));\n // Panel ref\n var panelDivRef = React.useRef(null);\n var inputDivRef = React.useRef(null);\n var containerRef = React.useRef(null);\n // Real value\n var _useMergedState = useMergedState(null, {\n value: value,\n defaultValue: defaultValue\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedValue = _useMergedState2[0],\n setInnerValue = _useMergedState2[1];\n // Selected value\n var _React$useState = React.useState(mergedValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n selectedValue = _React$useState2[0],\n setSelectedValue = _React$useState2[1];\n // Operation ref\n var operationRef = React.useRef(null);\n // Open\n var _useMergedState3 = useMergedState(false, {\n value: open,\n defaultValue: defaultOpen,\n postState: function postState(postOpen) {\n return disabled ? false : postOpen;\n },\n onChange: function onChange(newOpen) {\n if (onOpenChange) {\n onOpenChange(newOpen);\n }\n if (!newOpen && operationRef.current && operationRef.current.onClose) {\n operationRef.current.onClose();\n }\n }\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n mergedOpen = _useMergedState4[0],\n triggerInnerOpen = _useMergedState4[1];\n // ============================= Text ==============================\n var _useValueTexts = useValueTexts(selectedValue, {\n formatList: formatList,\n generateConfig: generateConfig,\n locale: locale\n }),\n _useValueTexts2 = _slicedToArray(_useValueTexts, 2),\n valueTexts = _useValueTexts2[0],\n firstValueText = _useValueTexts2[1];\n var _useTextValueMapping = useTextValueMapping({\n valueTexts: valueTexts,\n onTextChange: function onTextChange(newText) {\n var inputDate = parseValue(newText, {\n locale: locale,\n formatList: formatList,\n generateConfig: generateConfig\n });\n if (inputDate && (!disabledDate || !disabledDate(inputDate))) {\n setSelectedValue(inputDate);\n }\n }\n }),\n _useTextValueMapping2 = _slicedToArray(_useTextValueMapping, 3),\n text = _useTextValueMapping2[0],\n triggerTextChange = _useTextValueMapping2[1],\n resetText = _useTextValueMapping2[2];\n // ============================ Trigger ============================\n var triggerChange = function triggerChange(newValue) {\n setSelectedValue(newValue);\n setInnerValue(newValue);\n if (onChange && !isEqual(generateConfig, mergedValue, newValue)) {\n onChange(newValue, newValue ? formatValue(newValue, {\n generateConfig: generateConfig,\n locale: locale,\n format: formatList[0]\n }) : '');\n }\n };\n var triggerOpen = function triggerOpen(newOpen) {\n if (disabled && newOpen) {\n return;\n }\n triggerInnerOpen(newOpen);\n };\n var forwardKeyDown = function forwardKeyDown(e) {\n if (mergedOpen && operationRef.current && operationRef.current.onKeyDown) {\n // Let popup panel handle keyboard\n return operationRef.current.onKeyDown(e);\n }\n /* istanbul ignore next */\n /* eslint-disable no-lone-blocks */\n {\n warning(false, 'Picker not correct forward KeyDown operation. Please help to fire issue about this.');\n return false;\n }\n };\n var onInternalClick = function onInternalClick() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n onClick === null || onClick === void 0 ? void 0 : onClick.apply(void 0, args);\n if (inputRef.current) {\n inputRef.current.focus();\n triggerOpen(true);\n }\n };\n // ============================= Input =============================\n var _usePickerInput = usePickerInput({\n blurToCancel: needConfirmButton,\n open: mergedOpen,\n value: text,\n triggerOpen: triggerOpen,\n forwardKeyDown: forwardKeyDown,\n isClickOutside: function isClickOutside(target) {\n return !elementsContains([panelDivRef.current, inputDivRef.current, containerRef.current], target);\n },\n onSubmit: function onSubmit() {\n if (\n // When user typing disabledDate with keyboard and enter, this value will be empty\n !selectedValue ||\n // Normal disabled check\n disabledDate && disabledDate(selectedValue)) {\n return false;\n }\n triggerChange(selectedValue);\n triggerOpen(false);\n resetText();\n return true;\n },\n onCancel: function onCancel() {\n triggerOpen(false);\n setSelectedValue(mergedValue);\n resetText();\n },\n onKeyDown: function onKeyDown(e, preventDefault) {\n _onKeyDown === null || _onKeyDown === void 0 ? void 0 : _onKeyDown(e, preventDefault);\n },\n onFocus: onFocus,\n onBlur: onBlur\n }),\n _usePickerInput2 = _slicedToArray(_usePickerInput, 2),\n inputProps = _usePickerInput2[0],\n _usePickerInput2$ = _usePickerInput2[1],\n focused = _usePickerInput2$.focused,\n typing = _usePickerInput2$.typing;\n // ============================= Sync ==============================\n // Close should sync back with text value\n React.useEffect(function () {\n if (!mergedOpen) {\n setSelectedValue(mergedValue);\n if (!valueTexts.length || valueTexts[0] === '') {\n triggerTextChange('');\n } else if (firstValueText !== text) {\n resetText();\n }\n }\n }, [mergedOpen, valueTexts]);\n // Change picker should sync back with text value\n React.useEffect(function () {\n if (!mergedOpen) {\n resetText();\n }\n }, [picker]);\n // Sync innerValue with control mode\n React.useEffect(function () {\n // Sync select value\n setSelectedValue(mergedValue);\n }, [mergedValue]);\n // ============================ Private ============================\n if (pickerRef) {\n pickerRef.current = {\n focus: function focus() {\n if (inputRef.current) {\n inputRef.current.focus();\n }\n },\n blur: function blur() {\n if (inputRef.current) {\n inputRef.current.blur();\n }\n }\n };\n }\n var _useHoverValue = useHoverValue(text, {\n formatList: formatList,\n generateConfig: generateConfig,\n locale: locale\n }),\n _useHoverValue2 = _slicedToArray(_useHoverValue, 3),\n hoverValue = _useHoverValue2[0],\n onEnter = _useHoverValue2[1],\n onLeave = _useHoverValue2[2];\n // ============================= Panel =============================\n var panelProps = _objectSpread(_objectSpread({}, props), {}, {\n className: undefined,\n style: undefined,\n pickerValue: undefined,\n onPickerValueChange: undefined,\n onChange: null\n });\n var panelNode = /*#__PURE__*/React.createElement(PickerPanel, _extends({}, panelProps, {\n generateConfig: generateConfig,\n className: classNames(_defineProperty({}, \"\".concat(prefixCls, \"-panel-focused\"), !typing)),\n value: selectedValue,\n locale: locale,\n tabIndex: -1,\n onSelect: function onSelect(date) {\n _onSelect === null || _onSelect === void 0 ? void 0 : _onSelect(date);\n setSelectedValue(date);\n },\n direction: direction,\n onPanelChange: function onPanelChange(viewDate, mode) {\n var onPanelChange = props.onPanelChange;\n onLeave(true);\n onPanelChange === null || onPanelChange === void 0 ? void 0 : onPanelChange(viewDate, mode);\n }\n }));\n if (panelRender) {\n panelNode = panelRender(panelNode);\n }\n var panel = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-panel-container\"),\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n }\n }, panelNode);\n var suffixNode;\n if (suffixIcon) {\n suffixNode = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-suffix\")\n }, suffixIcon);\n }\n var clearNode;\n if (allowClear && mergedValue && !disabled) {\n clearNode = /*#__PURE__*/React.createElement(\"span\", {\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n e.stopPropagation();\n },\n onMouseUp: function onMouseUp(e) {\n e.preventDefault();\n e.stopPropagation();\n triggerChange(null);\n triggerOpen(false);\n },\n className: \"\".concat(prefixCls, \"-clear\"),\n role: \"button\"\n }, clearIcon || /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-clear-btn\")\n }));\n }\n var mergedInputProps = _objectSpread(_objectSpread(_objectSpread({\n id: id,\n tabIndex: tabIndex,\n disabled: disabled,\n readOnly: inputReadOnly || typeof formatList[0] === 'function' || !typing,\n value: hoverValue || text,\n onChange: function onChange(e) {\n triggerTextChange(e.target.value);\n },\n autoFocus: autoFocus,\n placeholder: placeholder,\n ref: inputRef,\n title: text\n }, inputProps), {}, {\n size: getInputSize(picker, formatList[0], generateConfig)\n }, getDataOrAriaProps(props)), {}, {\n autoComplete: autoComplete\n });\n var inputNode = inputRender ? inputRender(mergedInputProps) : /*#__PURE__*/React.createElement(\"input\", mergedInputProps);\n // ============================ Warning ============================\n if (process.env.NODE_ENV !== 'production') {\n warning(!defaultOpenValue, '`defaultOpenValue` may confuse user for the current value status. Please use `defaultValue` instead.');\n }\n // ============================ Return =============================\n var onContextSelect = function onContextSelect(date, type) {\n if (type === 'submit' || type !== 'key' && !needConfirmButton) {\n // triggerChange will also update selected values\n triggerChange(date);\n triggerOpen(false);\n }\n };\n var popupPlacement = direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n return /*#__PURE__*/React.createElement(PanelContext.Provider, {\n value: {\n operationRef: operationRef,\n hideHeader: picker === 'time',\n panelRef: panelDivRef,\n onSelect: onContextSelect,\n open: mergedOpen,\n defaultOpenValue: defaultOpenValue,\n onDateMouseEnter: onEnter,\n onDateMouseLeave: onLeave\n }\n }, /*#__PURE__*/React.createElement(PickerTrigger, {\n visible: mergedOpen,\n popupElement: panel,\n popupStyle: popupStyle,\n prefixCls: prefixCls,\n dropdownClassName: dropdownClassName,\n dropdownAlign: dropdownAlign,\n getPopupContainer: getPopupContainer,\n transitionName: transitionName,\n popupPlacement: popupPlacement,\n direction: direction\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: containerRef,\n className: classNames(prefixCls, className, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-focused\"), focused), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames2)),\n style: style,\n onMouseDown: onMouseDown,\n onMouseUp: onMouseUp,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onContextMenu: onContextMenu,\n onClick: onInternalClick\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-input\"), _defineProperty({}, \"\".concat(prefixCls, \"-input-placeholder\"), !!hoverValue)),\n ref: inputDivRef\n }, inputNode, suffixNode, clearNode))));\n}\n// Wrap with class component to enable pass generic with instance method\nvar Picker = /*#__PURE__*/function (_React$Component) {\n _inherits(Picker, _React$Component);\n var _super = _createSuper(Picker);\n function Picker() {\n var _this;\n _classCallCheck(this, Picker);\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.pickerRef = /*#__PURE__*/React.createRef();\n _this.focus = function () {\n if (_this.pickerRef.current) {\n _this.pickerRef.current.focus();\n }\n };\n _this.blur = function () {\n if (_this.pickerRef.current) {\n _this.pickerRef.current.blur();\n }\n };\n return _this;\n }\n _createClass(Picker, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(InnerPicker, _extends({}, this.props, {\n pickerRef: this.pickerRef\n }));\n }\n }]);\n return Picker;\n}(React.Component);\nexport default Picker;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { getValue, updateValues } from '../utils/miscUtil';\nimport { getClosingViewDate, isSameYear, isSameMonth, isSameDecade } from '../utils/dateUtil';\nfunction getStartEndDistance(startDate, endDate, picker, generateConfig) {\n var startNext = getClosingViewDate(startDate, picker, generateConfig, 1);\n function getDistance(compareFunc) {\n if (compareFunc(startDate, endDate)) {\n return 'same';\n }\n if (compareFunc(startNext, endDate)) {\n return 'closing';\n }\n return 'far';\n }\n switch (picker) {\n case 'year':\n return getDistance(function (start, end) {\n return isSameDecade(generateConfig, start, end);\n });\n case 'quarter':\n case 'month':\n return getDistance(function (start, end) {\n return isSameYear(generateConfig, start, end);\n });\n default:\n return getDistance(function (start, end) {\n return isSameMonth(generateConfig, start, end);\n });\n }\n}\nfunction getRangeViewDate(values, index, picker, generateConfig) {\n var startDate = getValue(values, 0);\n var endDate = getValue(values, 1);\n if (index === 0) {\n return startDate;\n }\n if (startDate && endDate) {\n var distance = getStartEndDistance(startDate, endDate, picker, generateConfig);\n switch (distance) {\n case 'same':\n return startDate;\n case 'closing':\n return startDate;\n default:\n return getClosingViewDate(endDate, picker, generateConfig, -1);\n }\n }\n return startDate;\n}\nexport default function useRangeViewDates(_ref) {\n var values = _ref.values,\n picker = _ref.picker,\n defaultDates = _ref.defaultDates,\n generateConfig = _ref.generateConfig;\n var _React$useState = React.useState(function () {\n return [getValue(defaultDates, 0), getValue(defaultDates, 1)];\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n defaultViewDates = _React$useState2[0],\n setDefaultViewDates = _React$useState2[1];\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n viewDates = _React$useState4[0],\n setInternalViewDates = _React$useState4[1];\n var startDate = getValue(values, 0);\n var endDate = getValue(values, 1);\n function getViewDate(index) {\n // If set default view date, use it\n if (defaultViewDates[index]) {\n return defaultViewDates[index];\n }\n return getValue(viewDates, index) || getRangeViewDate(values, index, picker, generateConfig) || startDate || endDate || generateConfig.getNow();\n }\n function setViewDate(viewDate, index) {\n if (viewDate) {\n var newViewDates = updateValues(viewDates, viewDate, index);\n // Set view date will clean up default one\n setDefaultViewDates(\n // Should always be an array\n updateValues(defaultViewDates, null, index) || [null, null]);\n // Reset another one when not have value\n var anotherIndex = (index + 1) % 2;\n if (!getValue(values, anotherIndex)) {\n newViewDates = updateValues(newViewDates, viewDate, anotherIndex);\n }\n setInternalViewDates(newViewDates);\n } else if (startDate || endDate) {\n // Reset all when has values when `viewDate` is `null` which means from open trigger\n setInternalViewDates(null);\n }\n }\n return [getViewDate, setViewDate];\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport warning from \"rc-util/es/warning\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport PickerTrigger from './PickerTrigger';\nimport PickerPanel from './PickerPanel';\nimport usePickerInput from './hooks/usePickerInput';\nimport getDataOrAriaProps, { toArray, getValue, updateValues } from './utils/miscUtil';\nimport { getDefaultFormat, getInputSize, elementsContains } from './utils/uiUtil';\nimport PanelContext from './PanelContext';\nimport { isEqual, getClosingViewDate, isSameDate, isSameWeek, isSameQuarter, formatValue, parseValue } from './utils/dateUtil';\nimport useValueTexts from './hooks/useValueTexts';\nimport useTextValueMapping from './hooks/useTextValueMapping';\nimport RangeContext from './RangeContext';\nimport useRangeDisabled from './hooks/useRangeDisabled';\nimport getExtraFooter from './utils/getExtraFooter';\nimport getRanges from './utils/getRanges';\nimport useRangeViewDates from './hooks/useRangeViewDates';\nimport useHoverValue from './hooks/useHoverValue';\nimport { legacyPropsWarning } from './utils/warnUtil';\nfunction reorderValues(values, generateConfig) {\n if (values && values[0] && values[1] && generateConfig.isAfter(values[0], values[1])) {\n return [values[1], values[0]];\n }\n return values;\n}\nfunction canValueTrigger(value, index, disabled, allowEmpty) {\n if (value) {\n return true;\n }\n if (allowEmpty && allowEmpty[index]) {\n return true;\n }\n if (disabled[(index + 1) % 2]) {\n return true;\n }\n return false;\n}\nfunction InnerRangePicker(props) {\n var _classNames2, _classNames3, _classNames4;\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-picker' : _props$prefixCls,\n id = props.id,\n style = props.style,\n className = props.className,\n popupStyle = props.popupStyle,\n dropdownClassName = props.dropdownClassName,\n transitionName = props.transitionName,\n dropdownAlign = props.dropdownAlign,\n getPopupContainer = props.getPopupContainer,\n generateConfig = props.generateConfig,\n locale = props.locale,\n placeholder = props.placeholder,\n autoFocus = props.autoFocus,\n disabled = props.disabled,\n format = props.format,\n _props$picker = props.picker,\n picker = _props$picker === void 0 ? 'date' : _props$picker,\n showTime = props.showTime,\n use12Hours = props.use12Hours,\n _props$separator = props.separator,\n separator = _props$separator === void 0 ? '~' : _props$separator,\n value = props.value,\n defaultValue = props.defaultValue,\n defaultPickerValue = props.defaultPickerValue,\n open = props.open,\n defaultOpen = props.defaultOpen,\n disabledDate = props.disabledDate,\n _disabledTime = props.disabledTime,\n dateRender = props.dateRender,\n panelRender = props.panelRender,\n ranges = props.ranges,\n allowEmpty = props.allowEmpty,\n allowClear = props.allowClear,\n suffixIcon = props.suffixIcon,\n clearIcon = props.clearIcon,\n pickerRef = props.pickerRef,\n inputReadOnly = props.inputReadOnly,\n mode = props.mode,\n renderExtraFooter = props.renderExtraFooter,\n onChange = props.onChange,\n onOpenChange = props.onOpenChange,\n onPanelChange = props.onPanelChange,\n onCalendarChange = props.onCalendarChange,\n _onFocus = props.onFocus,\n onBlur = props.onBlur,\n onMouseDown = props.onMouseDown,\n onMouseUp = props.onMouseUp,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onClick = props.onClick,\n _onOk = props.onOk,\n _onKeyDown = props.onKeyDown,\n components = props.components,\n order = props.order,\n direction = props.direction,\n activePickerIndex = props.activePickerIndex,\n _props$autoComplete = props.autoComplete,\n autoComplete = _props$autoComplete === void 0 ? 'off' : _props$autoComplete;\n var needConfirmButton = picker === 'date' && !!showTime || picker === 'time';\n // We record opened status here in case repeat open with picker\n var openRecordsRef = useRef({});\n var containerRef = useRef(null);\n var panelDivRef = useRef(null);\n var startInputDivRef = useRef(null);\n var endInputDivRef = useRef(null);\n var separatorRef = useRef(null);\n var startInputRef = useRef(null);\n var endInputRef = useRef(null);\n var arrowRef = useRef(null);\n // ============================ Warning ============================\n if (process.env.NODE_ENV !== 'production') {\n legacyPropsWarning(props);\n }\n // ============================= Misc ==============================\n var formatList = toArray(getDefaultFormat(format, picker, showTime, use12Hours));\n // Active picker\n var _useMergedState = useMergedState(0, {\n value: activePickerIndex\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedActivePickerIndex = _useMergedState2[0],\n setMergedActivePickerIndex = _useMergedState2[1];\n // Operation ref\n var operationRef = useRef(null);\n var mergedDisabled = React.useMemo(function () {\n if (Array.isArray(disabled)) {\n return disabled;\n }\n return [disabled || false, disabled || false];\n }, [disabled]);\n // ============================= Value =============================\n var _useMergedState3 = useMergedState(null, {\n value: value,\n defaultValue: defaultValue,\n postState: function postState(values) {\n return picker === 'time' && !order ? values : reorderValues(values, generateConfig);\n }\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n mergedValue = _useMergedState4[0],\n setInnerValue = _useMergedState4[1];\n // =========================== View Date ===========================\n // Config view panel\n var _useRangeViewDates = useRangeViewDates({\n values: mergedValue,\n picker: picker,\n defaultDates: defaultPickerValue,\n generateConfig: generateConfig\n }),\n _useRangeViewDates2 = _slicedToArray(_useRangeViewDates, 2),\n getViewDate = _useRangeViewDates2[0],\n setViewDate = _useRangeViewDates2[1];\n // ========================= Select Values =========================\n var _useMergedState5 = useMergedState(mergedValue, {\n postState: function postState(values) {\n var postValues = values;\n if (mergedDisabled[0] && mergedDisabled[1]) {\n return postValues;\n }\n // Fill disabled unit\n for (var i = 0; i < 2; i += 1) {\n if (mergedDisabled[i] && !postValues && !getValue(postValues, i) && !getValue(allowEmpty, i)) {\n postValues = updateValues(postValues, generateConfig.getNow(), i);\n }\n }\n return postValues;\n }\n }),\n _useMergedState6 = _slicedToArray(_useMergedState5, 2),\n selectedValue = _useMergedState6[0],\n setSelectedValue = _useMergedState6[1];\n // ============================= Modes =============================\n var _useMergedState7 = useMergedState([picker, picker], {\n value: mode\n }),\n _useMergedState8 = _slicedToArray(_useMergedState7, 2),\n mergedModes = _useMergedState8[0],\n setInnerModes = _useMergedState8[1];\n useEffect(function () {\n setInnerModes([picker, picker]);\n }, [picker]);\n var triggerModesChange = function triggerModesChange(modes, values) {\n setInnerModes(modes);\n if (onPanelChange) {\n onPanelChange(values, modes);\n }\n };\n // ========================= Disable Date ==========================\n var _useRangeDisabled = useRangeDisabled({\n picker: picker,\n selectedValue: selectedValue,\n locale: locale,\n disabled: mergedDisabled,\n disabledDate: disabledDate,\n generateConfig: generateConfig\n }, openRecordsRef.current[1], openRecordsRef.current[0]),\n _useRangeDisabled2 = _slicedToArray(_useRangeDisabled, 2),\n disabledStartDate = _useRangeDisabled2[0],\n disabledEndDate = _useRangeDisabled2[1];\n // ============================= Open ==============================\n var _useMergedState9 = useMergedState(false, {\n value: open,\n defaultValue: defaultOpen,\n postState: function postState(postOpen) {\n return mergedDisabled[mergedActivePickerIndex] ? false : postOpen;\n },\n onChange: function onChange(newOpen) {\n if (onOpenChange) {\n onOpenChange(newOpen);\n }\n if (!newOpen && operationRef.current && operationRef.current.onClose) {\n operationRef.current.onClose();\n }\n }\n }),\n _useMergedState10 = _slicedToArray(_useMergedState9, 2),\n mergedOpen = _useMergedState10[0],\n triggerInnerOpen = _useMergedState10[1];\n var startOpen = mergedOpen && mergedActivePickerIndex === 0;\n var endOpen = mergedOpen && mergedActivePickerIndex === 1;\n // ============================= Popup =============================\n // Popup min width\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n popupMinWidth = _useState2[0],\n setPopupMinWidth = _useState2[1];\n useEffect(function () {\n if (!mergedOpen && containerRef.current) {\n setPopupMinWidth(containerRef.current.offsetWidth);\n }\n }, [mergedOpen]);\n // ============================ Trigger ============================\n var triggerRef = React.useRef();\n function _triggerOpen(newOpen, index) {\n if (newOpen) {\n clearTimeout(triggerRef.current);\n openRecordsRef.current[index] = true;\n setMergedActivePickerIndex(index);\n triggerInnerOpen(newOpen);\n // Open to reset view date\n if (!mergedOpen) {\n setViewDate(null, index);\n }\n } else if (mergedActivePickerIndex === index) {\n triggerInnerOpen(newOpen);\n // Clean up async\n // This makes ref not quick refresh in case user open another input with blur trigger\n var openRecords = openRecordsRef.current;\n triggerRef.current = setTimeout(function () {\n if (openRecords === openRecordsRef.current) {\n openRecordsRef.current = {};\n }\n });\n }\n }\n function triggerOpenAndFocus(index) {\n _triggerOpen(true, index);\n // Use setTimeout to make sure panel DOM exists\n setTimeout(function () {\n var inputRef = [startInputRef, endInputRef][index];\n if (inputRef.current) {\n inputRef.current.focus();\n }\n }, 0);\n }\n function triggerChange(newValue, sourceIndex) {\n var values = newValue;\n var startValue = getValue(values, 0);\n var endValue = getValue(values, 1);\n // >>>>> Format start & end values\n if (startValue && endValue && generateConfig.isAfter(startValue, endValue)) {\n if (\n // WeekPicker only compare week\n picker === 'week' && !isSameWeek(generateConfig, locale.locale, startValue, endValue) ||\n // QuotaPicker only compare week\n picker === 'quarter' && !isSameQuarter(generateConfig, startValue, endValue) ||\n // Other non-TimePicker compare date\n picker !== 'week' && picker !== 'quarter' && picker !== 'time' && !isSameDate(generateConfig, startValue, endValue)) {\n // Clean up end date when start date is after end date\n if (sourceIndex === 0) {\n values = [startValue, null];\n endValue = null;\n } else {\n startValue = null;\n values = [null, endValue];\n }\n // Clean up cache since invalidate\n openRecordsRef.current = _defineProperty({}, sourceIndex, true);\n } else if (picker !== 'time' || order !== false) {\n // Reorder when in same date\n values = reorderValues(values, generateConfig);\n }\n }\n setSelectedValue(values);\n var startStr = values && values[0] ? formatValue(values[0], {\n generateConfig: generateConfig,\n locale: locale,\n format: formatList[0]\n }) : '';\n var endStr = values && values[1] ? formatValue(values[1], {\n generateConfig: generateConfig,\n locale: locale,\n format: formatList[0]\n }) : '';\n if (onCalendarChange) {\n var info = {\n range: sourceIndex === 0 ? 'start' : 'end'\n };\n onCalendarChange(values, [startStr, endStr], info);\n }\n // >>>>> Trigger `onChange` event\n var canStartValueTrigger = canValueTrigger(startValue, 0, mergedDisabled, allowEmpty);\n var canEndValueTrigger = canValueTrigger(endValue, 1, mergedDisabled, allowEmpty);\n var canTrigger = values === null || canStartValueTrigger && canEndValueTrigger;\n if (canTrigger) {\n // Trigger onChange only when value is validate\n setInnerValue(values);\n if (onChange && (!isEqual(generateConfig, getValue(mergedValue, 0), startValue) || !isEqual(generateConfig, getValue(mergedValue, 1), endValue))) {\n onChange(values, [startStr, endStr]);\n }\n }\n // >>>>> Open picker when\n // Always open another picker if possible\n var nextOpenIndex = null;\n if (sourceIndex === 0 && !mergedDisabled[1]) {\n nextOpenIndex = 1;\n } else if (sourceIndex === 1 && !mergedDisabled[0]) {\n nextOpenIndex = 0;\n }\n if (nextOpenIndex !== null && nextOpenIndex !== mergedActivePickerIndex && (!openRecordsRef.current[nextOpenIndex] || !getValue(values, nextOpenIndex)) && getValue(values, sourceIndex)) {\n // Delay to focus to avoid input blur trigger expired selectedValues\n triggerOpenAndFocus(nextOpenIndex);\n } else {\n _triggerOpen(false, sourceIndex);\n }\n }\n var forwardKeyDown = function forwardKeyDown(e) {\n if (mergedOpen && operationRef.current && operationRef.current.onKeyDown) {\n // Let popup panel handle keyboard\n return operationRef.current.onKeyDown(e);\n }\n /* istanbul ignore next */\n /* eslint-disable no-lone-blocks */\n {\n warning(false, 'Picker not correct forward KeyDown operation. Please help to fire issue about this.');\n return false;\n }\n };\n // ============================= Text ==============================\n var sharedTextHooksProps = {\n formatList: formatList,\n generateConfig: generateConfig,\n locale: locale\n };\n var _useValueTexts = useValueTexts(getValue(selectedValue, 0), sharedTextHooksProps),\n _useValueTexts2 = _slicedToArray(_useValueTexts, 2),\n startValueTexts = _useValueTexts2[0],\n firstStartValueText = _useValueTexts2[1];\n var _useValueTexts3 = useValueTexts(getValue(selectedValue, 1), sharedTextHooksProps),\n _useValueTexts4 = _slicedToArray(_useValueTexts3, 2),\n endValueTexts = _useValueTexts4[0],\n firstEndValueText = _useValueTexts4[1];\n var _onTextChange = function onTextChange(newText, index) {\n var inputDate = parseValue(newText, {\n locale: locale,\n formatList: formatList,\n generateConfig: generateConfig\n });\n var disabledFunc = index === 0 ? disabledStartDate : disabledEndDate;\n if (inputDate && !disabledFunc(inputDate)) {\n setSelectedValue(updateValues(selectedValue, inputDate, index));\n setViewDate(inputDate, index);\n }\n };\n var _useTextValueMapping = useTextValueMapping({\n valueTexts: startValueTexts,\n onTextChange: function onTextChange(newText) {\n return _onTextChange(newText, 0);\n }\n }),\n _useTextValueMapping2 = _slicedToArray(_useTextValueMapping, 3),\n startText = _useTextValueMapping2[0],\n triggerStartTextChange = _useTextValueMapping2[1],\n resetStartText = _useTextValueMapping2[2];\n var _useTextValueMapping3 = useTextValueMapping({\n valueTexts: endValueTexts,\n onTextChange: function onTextChange(newText) {\n return _onTextChange(newText, 1);\n }\n }),\n _useTextValueMapping4 = _slicedToArray(_useTextValueMapping3, 3),\n endText = _useTextValueMapping4[0],\n triggerEndTextChange = _useTextValueMapping4[1],\n resetEndText = _useTextValueMapping4[2];\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n rangeHoverValue = _useState4[0],\n setRangeHoverValue = _useState4[1];\n // ========================== Hover Range ==========================\n var _useState5 = useState(null),\n _useState6 = _slicedToArray(_useState5, 2),\n hoverRangedValue = _useState6[0],\n setHoverRangedValue = _useState6[1];\n var _useHoverValue = useHoverValue(startText, {\n formatList: formatList,\n generateConfig: generateConfig,\n locale: locale\n }),\n _useHoverValue2 = _slicedToArray(_useHoverValue, 3),\n startHoverValue = _useHoverValue2[0],\n onStartEnter = _useHoverValue2[1],\n onStartLeave = _useHoverValue2[2];\n var _useHoverValue3 = useHoverValue(endText, {\n formatList: formatList,\n generateConfig: generateConfig,\n locale: locale\n }),\n _useHoverValue4 = _slicedToArray(_useHoverValue3, 3),\n endHoverValue = _useHoverValue4[0],\n onEndEnter = _useHoverValue4[1],\n onEndLeave = _useHoverValue4[2];\n var onDateMouseEnter = function onDateMouseEnter(date) {\n setHoverRangedValue(updateValues(selectedValue, date, mergedActivePickerIndex));\n if (mergedActivePickerIndex === 0) {\n onStartEnter(date);\n } else {\n onEndEnter(date);\n }\n };\n var onDateMouseLeave = function onDateMouseLeave() {\n setHoverRangedValue(updateValues(selectedValue, null, mergedActivePickerIndex));\n if (mergedActivePickerIndex === 0) {\n onStartLeave();\n } else {\n onEndLeave();\n }\n };\n // ============================= Input =============================\n var getSharedInputHookProps = function getSharedInputHookProps(index, resetText) {\n return {\n blurToCancel: needConfirmButton,\n forwardKeyDown: forwardKeyDown,\n onBlur: onBlur,\n isClickOutside: function isClickOutside(target) {\n return !elementsContains([panelDivRef.current, startInputDivRef.current, endInputDivRef.current, containerRef.current], target);\n },\n onFocus: function onFocus(e) {\n setMergedActivePickerIndex(index);\n if (_onFocus) {\n _onFocus(e);\n }\n },\n triggerOpen: function triggerOpen(newOpen) {\n _triggerOpen(newOpen, index);\n },\n onSubmit: function onSubmit() {\n if (\n // When user typing disabledDate with keyboard and enter, this value will be empty\n !selectedValue ||\n // Normal disabled check\n disabledDate && disabledDate(selectedValue[index])) {\n return false;\n }\n triggerChange(selectedValue, index);\n resetText();\n },\n onCancel: function onCancel() {\n _triggerOpen(false, index);\n setSelectedValue(mergedValue);\n resetText();\n }\n };\n };\n var currentFocusedKey = useRef('');\n var _usePickerInput = usePickerInput(_objectSpread(_objectSpread({}, getSharedInputHookProps(0, resetStartText)), {}, {\n open: startOpen,\n value: startText,\n currentFocusedKey: currentFocusedKey,\n key: 'start',\n onKeyDown: function onKeyDown(e, preventDefault) {\n _onKeyDown === null || _onKeyDown === void 0 ? void 0 : _onKeyDown(e, preventDefault);\n }\n })),\n _usePickerInput2 = _slicedToArray(_usePickerInput, 2),\n startInputProps = _usePickerInput2[0],\n _usePickerInput2$ = _usePickerInput2[1],\n startFocused = _usePickerInput2$.focused,\n startTyping = _usePickerInput2$.typing;\n var _usePickerInput3 = usePickerInput(_objectSpread(_objectSpread({}, getSharedInputHookProps(1, resetEndText)), {}, {\n open: endOpen,\n value: endText,\n currentFocusedKey: currentFocusedKey,\n key: 'end',\n onKeyDown: function onKeyDown(e, preventDefault) {\n _onKeyDown === null || _onKeyDown === void 0 ? void 0 : _onKeyDown(e, preventDefault);\n }\n })),\n _usePickerInput4 = _slicedToArray(_usePickerInput3, 2),\n endInputProps = _usePickerInput4[0],\n _usePickerInput4$ = _usePickerInput4[1],\n endFocused = _usePickerInput4$.focused,\n endTyping = _usePickerInput4$.typing;\n // ========================== Click Picker ==========================\n var onPickerClick = function onPickerClick(e) {\n // When click inside the picker & outside the picker's input elements\n // the panel should still be opened\n if (onClick) {\n onClick(e);\n }\n if (!mergedOpen && !startInputRef.current.contains(e.target) && !endInputRef.current.contains(e.target)) {\n if (!mergedDisabled[0]) {\n triggerOpenAndFocus(0);\n } else if (!mergedDisabled[1]) {\n triggerOpenAndFocus(1);\n }\n }\n };\n var onPickerMouseDown = function onPickerMouseDown(e) {\n // shouldn't affect input elements if picker is active\n if (onMouseDown) {\n onMouseDown(e);\n }\n if (mergedOpen && (startFocused || endFocused) && !startInputRef.current.contains(e.target) && !endInputRef.current.contains(e.target)) {\n e.preventDefault();\n }\n };\n // ============================= Sync ==============================\n // Close should sync back with text value\n var startStr = mergedValue && mergedValue[0] ? formatValue(mergedValue[0], {\n locale: locale,\n format: 'YYYYMMDDHHmmss',\n generateConfig: generateConfig\n }) : '';\n var endStr = mergedValue && mergedValue[1] ? formatValue(mergedValue[1], {\n locale: locale,\n format: 'YYYYMMDDHHmmss',\n generateConfig: generateConfig\n }) : '';\n useEffect(function () {\n if (!mergedOpen) {\n setSelectedValue(mergedValue);\n if (!startValueTexts.length || startValueTexts[0] === '') {\n triggerStartTextChange('');\n } else if (firstStartValueText !== startText) {\n resetStartText();\n }\n if (!endValueTexts.length || endValueTexts[0] === '') {\n triggerEndTextChange('');\n } else if (firstEndValueText !== endText) {\n resetEndText();\n }\n }\n }, [mergedOpen, startValueTexts, endValueTexts]);\n // Sync innerValue with control mode\n useEffect(function () {\n setSelectedValue(mergedValue);\n }, [startStr, endStr]);\n // ============================ Warning ============================\n if (process.env.NODE_ENV !== 'production') {\n if (value && Array.isArray(disabled) && (getValue(disabled, 0) && !getValue(value, 0) || getValue(disabled, 1) && !getValue(value, 1))) {\n warning(false, '`disabled` should not set with empty `value`. You should set `allowEmpty` or `value` instead.');\n }\n }\n // ============================ Private ============================\n if (pickerRef) {\n pickerRef.current = {\n focus: function focus() {\n if (startInputRef.current) {\n startInputRef.current.focus();\n }\n },\n blur: function blur() {\n if (startInputRef.current) {\n startInputRef.current.blur();\n }\n if (endInputRef.current) {\n endInputRef.current.blur();\n }\n }\n };\n }\n // ============================ Ranges =============================\n var rangeLabels = Object.keys(ranges || {});\n var rangeList = rangeLabels.map(function (label) {\n var range = ranges[label];\n var newValues = typeof range === 'function' ? range() : range;\n return {\n label: label,\n onClick: function onClick() {\n triggerChange(newValues, null);\n _triggerOpen(false, mergedActivePickerIndex);\n },\n onMouseEnter: function onMouseEnter() {\n setRangeHoverValue(newValues);\n },\n onMouseLeave: function onMouseLeave() {\n setRangeHoverValue(null);\n }\n };\n });\n // ============================= Panel =============================\n function renderPanel() {\n var panelPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var panelProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var panelHoverRangedValue = null;\n if (mergedOpen && hoverRangedValue && hoverRangedValue[0] && hoverRangedValue[1] && generateConfig.isAfter(hoverRangedValue[1], hoverRangedValue[0])) {\n panelHoverRangedValue = hoverRangedValue;\n }\n var panelShowTime = showTime;\n if (showTime && _typeof(showTime) === 'object' && showTime.defaultValue) {\n var timeDefaultValues = showTime.defaultValue;\n panelShowTime = _objectSpread(_objectSpread({}, showTime), {}, {\n defaultValue: getValue(timeDefaultValues, mergedActivePickerIndex) || undefined\n });\n }\n var panelDateRender = null;\n if (dateRender) {\n panelDateRender = function panelDateRender(date, today) {\n return dateRender(date, today, {\n range: mergedActivePickerIndex ? 'end' : 'start'\n });\n };\n }\n return /*#__PURE__*/React.createElement(RangeContext.Provider, {\n value: {\n inRange: true,\n panelPosition: panelPosition,\n rangedValue: rangeHoverValue || selectedValue,\n hoverRangedValue: panelHoverRangedValue\n }\n }, /*#__PURE__*/React.createElement(PickerPanel, _extends({}, props, panelProps, {\n dateRender: panelDateRender,\n showTime: panelShowTime,\n mode: mergedModes[mergedActivePickerIndex],\n generateConfig: generateConfig,\n style: undefined,\n direction: direction,\n disabledDate: mergedActivePickerIndex === 0 ? disabledStartDate : disabledEndDate,\n disabledTime: function disabledTime(date) {\n if (_disabledTime) {\n return _disabledTime(date, mergedActivePickerIndex === 0 ? 'start' : 'end');\n }\n return false;\n },\n className: classNames(_defineProperty({}, \"\".concat(prefixCls, \"-panel-focused\"), mergedActivePickerIndex === 0 ? !startTyping : !endTyping)),\n value: getValue(selectedValue, mergedActivePickerIndex),\n locale: locale,\n tabIndex: -1,\n onPanelChange: function onPanelChange(date, newMode) {\n // clear hover value when panel change\n if (mergedActivePickerIndex === 0) {\n onStartLeave(true);\n }\n if (mergedActivePickerIndex === 1) {\n onEndLeave(true);\n }\n triggerModesChange(updateValues(mergedModes, newMode, mergedActivePickerIndex), updateValues(selectedValue, date, mergedActivePickerIndex));\n var viewDate = date;\n if (panelPosition === 'right' && mergedModes[mergedActivePickerIndex] === newMode) {\n viewDate = getClosingViewDate(viewDate, newMode, generateConfig, -1);\n }\n setViewDate(viewDate, mergedActivePickerIndex);\n },\n onOk: null,\n onSelect: undefined,\n onChange: undefined,\n defaultValue: mergedActivePickerIndex === 0 ? getValue(selectedValue, 1) : getValue(selectedValue, 0)\n })));\n }\n var arrowLeft = 0;\n var panelLeft = 0;\n if (mergedActivePickerIndex && startInputDivRef.current && separatorRef.current && panelDivRef.current) {\n // Arrow offset\n arrowLeft = startInputDivRef.current.offsetWidth + separatorRef.current.offsetWidth;\n // If panelWidth - arrowWidth - arrowMarginLeft < arrowLeft, panel should move to right side.\n // If arrowOffsetLeft > arrowLeft, arrowMarginLeft = arrowOffsetLeft - arrowLeft\n var arrowMarginLeft = arrowRef.current.offsetLeft > arrowLeft ? arrowRef.current.offsetLeft - arrowLeft : arrowRef.current.offsetLeft;\n if (panelDivRef.current.offsetWidth && arrowRef.current.offsetWidth && arrowLeft > panelDivRef.current.offsetWidth - arrowRef.current.offsetWidth - (direction === 'rtl' ? 0 : arrowMarginLeft)) {\n panelLeft = arrowLeft;\n }\n }\n var arrowPositionStyle = direction === 'rtl' ? {\n right: arrowLeft\n } : {\n left: arrowLeft\n };\n function renderPanels() {\n var panels;\n var extraNode = getExtraFooter(prefixCls, mergedModes[mergedActivePickerIndex], renderExtraFooter);\n var rangesNode = getRanges({\n prefixCls: prefixCls,\n components: components,\n needConfirmButton: needConfirmButton,\n okDisabled: !getValue(selectedValue, mergedActivePickerIndex) || disabledDate && disabledDate(selectedValue[mergedActivePickerIndex]),\n locale: locale,\n rangeList: rangeList,\n onOk: function onOk() {\n if (getValue(selectedValue, mergedActivePickerIndex)) {\n // triggerChangeOld(selectedValue);\n triggerChange(selectedValue, mergedActivePickerIndex);\n if (_onOk) {\n _onOk(selectedValue);\n }\n }\n }\n });\n if (picker !== 'time' && !showTime) {\n var viewDate = getViewDate(mergedActivePickerIndex);\n var nextViewDate = getClosingViewDate(viewDate, picker, generateConfig);\n var currentMode = mergedModes[mergedActivePickerIndex];\n var showDoublePanel = currentMode === picker;\n var leftPanel = renderPanel(showDoublePanel ? 'left' : false, {\n pickerValue: viewDate,\n onPickerValueChange: function onPickerValueChange(newViewDate) {\n setViewDate(newViewDate, mergedActivePickerIndex);\n }\n });\n var rightPanel = renderPanel('right', {\n pickerValue: nextViewDate,\n onPickerValueChange: function onPickerValueChange(newViewDate) {\n setViewDate(getClosingViewDate(newViewDate, picker, generateConfig, -1), mergedActivePickerIndex);\n }\n });\n if (direction === 'rtl') {\n panels = /*#__PURE__*/React.createElement(React.Fragment, null, rightPanel, showDoublePanel && leftPanel);\n } else {\n panels = /*#__PURE__*/React.createElement(React.Fragment, null, leftPanel, showDoublePanel && rightPanel);\n }\n } else {\n panels = renderPanel();\n }\n var mergedNodes = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-panels\")\n }, panels), (extraNode || rangesNode) && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-footer\")\n }, extraNode, rangesNode));\n if (panelRender) {\n mergedNodes = panelRender(mergedNodes);\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-panel-container\"),\n style: {\n marginLeft: panelLeft\n },\n ref: panelDivRef,\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n }\n }, mergedNodes);\n }\n var rangePanel = /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-range-wrapper\"), \"\".concat(prefixCls, \"-\").concat(picker, \"-range-wrapper\")),\n style: {\n minWidth: popupMinWidth\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: arrowRef,\n className: \"\".concat(prefixCls, \"-range-arrow\"),\n style: arrowPositionStyle\n }), renderPanels());\n // ============================= Icons =============================\n var suffixNode;\n if (suffixIcon) {\n suffixNode = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-suffix\")\n }, suffixIcon);\n }\n var clearNode;\n if (allowClear && (getValue(mergedValue, 0) && !mergedDisabled[0] || getValue(mergedValue, 1) && !mergedDisabled[1])) {\n clearNode = /*#__PURE__*/React.createElement(\"span\", {\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n e.stopPropagation();\n },\n onMouseUp: function onMouseUp(e) {\n e.preventDefault();\n e.stopPropagation();\n var values = mergedValue;\n if (!mergedDisabled[0]) {\n values = updateValues(values, null, 0);\n }\n if (!mergedDisabled[1]) {\n values = updateValues(values, null, 1);\n }\n triggerChange(values, null);\n _triggerOpen(false, mergedActivePickerIndex);\n },\n className: \"\".concat(prefixCls, \"-clear\")\n }, clearIcon || /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-clear-btn\")\n }));\n }\n var inputSharedProps = {\n size: getInputSize(picker, formatList[0], generateConfig)\n };\n var activeBarLeft = 0;\n var activeBarWidth = 0;\n if (startInputDivRef.current && endInputDivRef.current && separatorRef.current) {\n if (mergedActivePickerIndex === 0) {\n activeBarWidth = startInputDivRef.current.offsetWidth;\n } else {\n activeBarLeft = arrowLeft;\n activeBarWidth = endInputDivRef.current.offsetWidth;\n }\n }\n var activeBarPositionStyle = direction === 'rtl' ? {\n right: activeBarLeft\n } : {\n left: activeBarLeft\n };\n // ============================ Return =============================\n var onContextSelect = function onContextSelect(date, type) {\n var values = updateValues(selectedValue, date, mergedActivePickerIndex);\n if (type === 'submit' || type !== 'key' && !needConfirmButton) {\n // triggerChange will also update selected values\n triggerChange(values, mergedActivePickerIndex);\n // clear hover value style\n if (mergedActivePickerIndex === 0) {\n onStartLeave();\n } else {\n onEndLeave();\n }\n } else {\n setSelectedValue(values);\n }\n };\n return /*#__PURE__*/React.createElement(PanelContext.Provider, {\n value: {\n operationRef: operationRef,\n hideHeader: picker === 'time',\n onDateMouseEnter: onDateMouseEnter,\n onDateMouseLeave: onDateMouseLeave,\n hideRanges: true,\n onSelect: onContextSelect,\n open: mergedOpen\n }\n }, /*#__PURE__*/React.createElement(PickerTrigger, {\n visible: mergedOpen,\n popupElement: rangePanel,\n popupStyle: popupStyle,\n prefixCls: prefixCls,\n dropdownClassName: dropdownClassName,\n dropdownAlign: dropdownAlign,\n getPopupContainer: getPopupContainer,\n transitionName: transitionName,\n range: true,\n direction: direction\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: containerRef,\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-range\"), className, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-disabled\"), mergedDisabled[0] && mergedDisabled[1]), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-focused\"), mergedActivePickerIndex === 0 ? startFocused : endFocused), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames2)),\n style: style,\n onClick: onPickerClick,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseDown: onPickerMouseDown,\n onMouseUp: onMouseUp\n }, getDataOrAriaProps(props)), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-input\"), (_classNames3 = {}, _defineProperty(_classNames3, \"\".concat(prefixCls, \"-input-active\"), mergedActivePickerIndex === 0), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-input-placeholder\"), !!startHoverValue), _classNames3)),\n ref: startInputDivRef\n }, /*#__PURE__*/React.createElement(\"input\", _extends({\n id: id,\n disabled: mergedDisabled[0],\n readOnly: inputReadOnly || typeof formatList[0] === 'function' || !startTyping,\n value: startHoverValue || startText,\n onChange: function onChange(e) {\n triggerStartTextChange(e.target.value);\n },\n autoFocus: autoFocus,\n placeholder: getValue(placeholder, 0) || '',\n ref: startInputRef\n }, startInputProps, inputSharedProps, {\n autoComplete: autoComplete\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-range-separator\"),\n ref: separatorRef\n }, separator), /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(\"\".concat(prefixCls, \"-input\"), (_classNames4 = {}, _defineProperty(_classNames4, \"\".concat(prefixCls, \"-input-active\"), mergedActivePickerIndex === 1), _defineProperty(_classNames4, \"\".concat(prefixCls, \"-input-placeholder\"), !!endHoverValue), _classNames4)),\n ref: endInputDivRef\n }, /*#__PURE__*/React.createElement(\"input\", _extends({\n disabled: mergedDisabled[1],\n readOnly: inputReadOnly || typeof formatList[0] === 'function' || !endTyping,\n value: endHoverValue || endText,\n onChange: function onChange(e) {\n triggerEndTextChange(e.target.value);\n },\n placeholder: getValue(placeholder, 1) || '',\n ref: endInputRef\n }, endInputProps, inputSharedProps, {\n autoComplete: autoComplete\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-active-bar\"),\n style: _objectSpread(_objectSpread({}, activeBarPositionStyle), {}, {\n width: activeBarWidth,\n position: 'absolute'\n })\n }), suffixNode, clearNode)));\n}\n// Wrap with class component to enable pass generic with instance method\nvar RangePicker = /*#__PURE__*/function (_React$Component) {\n _inherits(RangePicker, _React$Component);\n var _super = _createSuper(RangePicker);\n function RangePicker() {\n var _this;\n _classCallCheck(this, RangePicker);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.pickerRef = /*#__PURE__*/React.createRef();\n _this.focus = function () {\n if (_this.pickerRef.current) {\n _this.pickerRef.current.focus();\n }\n };\n _this.blur = function () {\n if (_this.pickerRef.current) {\n _this.pickerRef.current.blur();\n }\n };\n return _this;\n }\n _createClass(RangePicker, [{\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(InnerRangePicker, _extends({}, this.props, {\n pickerRef: this.pickerRef\n }));\n }\n }]);\n return RangePicker;\n}(React.Component);\nexport default RangePicker;","import * as React from 'react';\nimport { getValue } from '../utils/miscUtil';\nimport { isSameDate, getQuarter } from '../utils/dateUtil';\nexport default function useRangeDisabled(_ref, disabledStart, disabledEnd) {\n var picker = _ref.picker,\n locale = _ref.locale,\n selectedValue = _ref.selectedValue,\n disabledDate = _ref.disabledDate,\n disabled = _ref.disabled,\n generateConfig = _ref.generateConfig;\n var startDate = getValue(selectedValue, 0);\n var endDate = getValue(selectedValue, 1);\n function weekFirstDate(date) {\n return generateConfig.locale.getWeekFirstDate(locale.locale, date);\n }\n function monthNumber(date) {\n var year = generateConfig.getYear(date);\n var month = generateConfig.getMonth(date);\n return year * 100 + month;\n }\n function quarterNumber(date) {\n var year = generateConfig.getYear(date);\n var quarter = getQuarter(generateConfig, date);\n return year * 10 + quarter;\n }\n var disabledStartDate = React.useCallback(function (date) {\n if (disabledDate && disabledDate(date)) {\n return true;\n }\n // Disabled range\n if (disabled[1] && endDate) {\n return !isSameDate(generateConfig, date, endDate) && generateConfig.isAfter(date, endDate);\n }\n // Disabled part\n if (disabledStart && endDate) {\n switch (picker) {\n case 'quarter':\n return quarterNumber(date) > quarterNumber(endDate);\n case 'month':\n return monthNumber(date) > monthNumber(endDate);\n case 'week':\n return weekFirstDate(date) > weekFirstDate(endDate);\n default:\n return !isSameDate(generateConfig, date, endDate) && generateConfig.isAfter(date, endDate);\n }\n }\n return false;\n }, [disabledDate, disabled[1], endDate, disabledStart]);\n var disabledEndDate = React.useCallback(function (date) {\n if (disabledDate && disabledDate(date)) {\n return true;\n }\n // Disabled range\n if (disabled[0] && startDate) {\n return !isSameDate(generateConfig, date, endDate) && generateConfig.isAfter(startDate, date);\n }\n // Disabled part\n if (disabledEnd && startDate) {\n switch (picker) {\n case 'quarter':\n return quarterNumber(date) < quarterNumber(startDate);\n case 'month':\n return monthNumber(date) < monthNumber(startDate);\n case 'week':\n return weekFirstDate(date) < weekFirstDate(startDate);\n default:\n return !isSameDate(generateConfig, date, startDate) && generateConfig.isAfter(startDate, date);\n }\n }\n return false;\n }, [disabledDate, disabled[0], startDate, disabledEnd]);\n return [disabledStartDate, disabledEndDate];\n}","import Picker from './Picker';\nimport PickerPanel from './PickerPanel';\nimport RangePicker from './RangePicker';\nexport { PickerPanel, RangePicker };\nexport default Picker;","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","'use strict';\n\nconst denyList = new Set([\n\t'ENOTFOUND',\n\t'ENETUNREACH',\n\n\t// SSL errors from https://github.com/nodejs/node/blob/fc8e3e2cdc521978351de257030db0076d79e0ab/src/crypto/crypto_common.cc#L301-L328\n\t'UNABLE_TO_GET_ISSUER_CERT',\n\t'UNABLE_TO_GET_CRL',\n\t'UNABLE_TO_DECRYPT_CERT_SIGNATURE',\n\t'UNABLE_TO_DECRYPT_CRL_SIGNATURE',\n\t'UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY',\n\t'CERT_SIGNATURE_FAILURE',\n\t'CRL_SIGNATURE_FAILURE',\n\t'CERT_NOT_YET_VALID',\n\t'CERT_HAS_EXPIRED',\n\t'CRL_NOT_YET_VALID',\n\t'CRL_HAS_EXPIRED',\n\t'ERROR_IN_CERT_NOT_BEFORE_FIELD',\n\t'ERROR_IN_CERT_NOT_AFTER_FIELD',\n\t'ERROR_IN_CRL_LAST_UPDATE_FIELD',\n\t'ERROR_IN_CRL_NEXT_UPDATE_FIELD',\n\t'OUT_OF_MEM',\n\t'DEPTH_ZERO_SELF_SIGNED_CERT',\n\t'SELF_SIGNED_CERT_IN_CHAIN',\n\t'UNABLE_TO_GET_ISSUER_CERT_LOCALLY',\n\t'UNABLE_TO_VERIFY_LEAF_SIGNATURE',\n\t'CERT_CHAIN_TOO_LONG',\n\t'CERT_REVOKED',\n\t'INVALID_CA',\n\t'PATH_LENGTH_EXCEEDED',\n\t'INVALID_PURPOSE',\n\t'CERT_UNTRUSTED',\n\t'CERT_REJECTED',\n\t'HOSTNAME_MISMATCH'\n]);\n\n// TODO: Use `error?.code` when targeting Node.js 14\nmodule.exports = error => !denyList.has(error && error.code);\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nmodule.exports = require('./browser/algorithms.json');\n","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar createHash = require('create-hash');\nvar stream = require('readable-stream');\nvar inherits = require('inherits');\nvar sign = require('./sign');\nvar verify = require('./verify');\n\nvar algorithms = require('./algorithms.json');\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex');\n algorithms[key.toLowerCase()] = algorithms[key];\n});\n\nfunction Sign(algorithm) {\n stream.Writable.call(this);\n\n var data = algorithms[algorithm];\n if (!data) { throw new Error('Unknown message digest'); }\n\n this._hashType = data.hash;\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\ninherits(Sign, stream.Writable);\n\nSign.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\n\nSign.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n\n return this;\n};\n\nSign.prototype.sign = function signMethod(key, enc) {\n this.end();\n var hash = this._hash.digest();\n var sig = sign(hash, key, this._hashType, this._signType, this._tag);\n\n return enc ? sig.toString(enc) : sig;\n};\n\nfunction Verify(algorithm) {\n stream.Writable.call(this);\n\n var data = algorithms[algorithm];\n if (!data) { throw new Error('Unknown message digest'); }\n\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\ninherits(Verify, stream.Writable);\n\nVerify.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\n\nVerify.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n\n return this;\n};\n\nVerify.prototype.verify = function verifyMethod(key, sig, enc) {\n var sigBuffer = typeof sig === 'string' ? Buffer.from(sig, enc) : sig;\n\n this.end();\n var hash = this._hash.digest();\n return verify(sigBuffer, hash, key, this._signType, this._tag);\n};\n\nfunction createSign(algorithm) {\n return new Sign(algorithm);\n}\n\nfunction createVerify(algorithm) {\n return new Verify(algorithm);\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n};\n","'use strict';\n\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\nvar createHmac = require('create-hmac');\nvar crt = require('browserify-rsa');\nvar EC = require('elliptic').ec;\nvar BN = require('bn.js');\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\n\nvar RSA_PKCS1_PADDING = 1;\n\nfunction sign(hash, key, hashType, signType, tag) {\n var priv = parseKeys(key);\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }\n return ecSign(hash, priv);\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') { throw new Error('wrong private key type'); }\n return dsaSign(hash, priv, hashType);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }\n if (key.padding !== undefined && key.padding !== RSA_PKCS1_PADDING) { throw new Error('illegal or unsupported padding mode'); }\n\n hash = Buffer.concat([tag, hash]);\n var len = priv.modulus.byteLength();\n var pad = [0, 1];\n while (hash.length + pad.length + 1 < len) { pad.push(0xff); }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) { pad.push(hash[i]); }\n\n var out = crt(pad, priv);\n return out;\n}\n\nfunction ecSign(hash, priv) {\n var curveId = curves[priv.curve.join('.')];\n if (!curveId) { throw new Error('unknown curve ' + priv.curve.join('.')); }\n\n var curve = new EC(curveId);\n var key = curve.keyFromPrivate(priv.privateKey);\n var out = key.sign(hash);\n\n return Buffer.from(out.toDER());\n}\n\nfunction dsaSign(hash, priv, algo) {\n var x = priv.params.priv_key;\n var p = priv.params.p;\n var q = priv.params.q;\n var g = priv.params.g;\n var r = new BN(0);\n var k;\n var H = bits2int(hash, q).mod(q);\n var s = false;\n var kv = getKey(x, q, hash, algo);\n while (s === false) {\n k = makeKey(q, kv, algo);\n r = makeR(g, k, p, q);\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q);\n if (s.cmpn(0) === 0) {\n s = false;\n r = new BN(0);\n }\n }\n return toDER(r, s);\n}\n\nfunction toDER(r, s) {\n r = r.toArray();\n s = s.toArray();\n\n // Pad values\n if (r[0] & 0x80) { r = [0].concat(r); }\n if (s[0] & 0x80) { s = [0].concat(s); }\n\n var total = r.length + s.length + 4;\n var res = [\n 0x30, total, 0x02, r.length\n ];\n res = res.concat(r, [0x02, s.length], s);\n return Buffer.from(res);\n}\n\nfunction getKey(x, q, hash, algo) {\n x = Buffer.from(x.toArray());\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length);\n x = Buffer.concat([zeros, x]);\n }\n var hlen = hash.length;\n var hbits = bits2octets(hash, q);\n var v = Buffer.alloc(hlen);\n v.fill(1);\n var k = Buffer.alloc(hlen);\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n return { k: k, v: v };\n}\n\nfunction bits2int(obits, q) {\n var bits = new BN(obits);\n var shift = (obits.length << 3) - q.bitLength();\n if (shift > 0) { bits.ishrn(shift); }\n return bits;\n}\n\nfunction bits2octets(bits, q) {\n bits = bits2int(bits, q);\n bits = bits.mod(q);\n var out = Buffer.from(bits.toArray());\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length);\n out = Buffer.concat([zeros, out]);\n }\n return out;\n}\n\nfunction makeKey(q, kv, algo) {\n var t;\n var k;\n\n do {\n t = Buffer.alloc(0);\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n t = Buffer.concat([t, kv.v]);\n }\n\n k = bits2int(t, q);\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest();\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n } while (k.cmp(q) !== -1);\n\n return k;\n}\n\nfunction makeR(g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q);\n}\n\nmodule.exports = sign;\nmodule.exports.getKey = getKey;\nmodule.exports.makeKey = makeKey;\n","'use strict';\n\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\nvar BN = require('bn.js');\nvar EC = require('elliptic').ec;\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\n\nfunction verify(sig, hash, key, signType, tag) {\n var pub = parseKeys(key);\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong public key type'); }\n return ecVerify(sig, hash, pub);\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') { throw new Error('wrong public key type'); }\n return dsaVerify(sig, hash, pub);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong public key type'); }\n\n hash = Buffer.concat([tag, hash]);\n var len = pub.modulus.byteLength();\n var pad = [1];\n var padNum = 0;\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff);\n padNum += 1;\n }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\n pad = Buffer.from(pad);\n var red = BN.mont(pub.modulus);\n sig = new BN(sig).toRed(red);\n\n sig = sig.redPow(new BN(pub.publicExponent));\n sig = Buffer.from(sig.fromRed().toArray());\n var out = padNum < 8 ? 1 : 0;\n len = Math.min(sig.length, pad.length);\n if (sig.length !== pad.length) { out = 1; }\n\n i = -1;\n while (++i < len) { out |= sig[i] ^ pad[i]; }\n return out === 0;\n}\n\nfunction ecVerify(sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')];\n if (!curveId) { throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.')); }\n\n var curve = new EC(curveId);\n var pubkey = pub.data.subjectPrivateKey.data;\n\n return curve.verify(hash, sig, pubkey);\n}\n\nfunction dsaVerify(sig, hash, pub) {\n var p = pub.data.p;\n var q = pub.data.q;\n var g = pub.data.g;\n var y = pub.data.pub_key;\n var unpacked = parseKeys.signature.decode(sig, 'der');\n var s = unpacked.s;\n var r = unpacked.r;\n checkValue(s, q);\n checkValue(r, q);\n var montp = BN.mont(p);\n var w = s.invm(q);\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q);\n return v.cmp(r) === 0;\n}\n\nfunction checkValue(b, q) {\n if (b.cmpn(0) <= 0) { throw new Error('invalid sig'); }\n if (b.cmp(q) >= 0) { throw new Error('invalid sig'); }\n}\n\nmodule.exports = verify;\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define(\"chop-lines\",[\"React\"],t):\"object\"==typeof exports?exports[\"chop-lines\"]=t(require(\"react\")):e[\"chop-lines\"]=t(e.React)}(this,(function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"dist/\",r(r.s=6)}([function(e,t,r){\"use strict\";e.exports=r(3)},function(t,r){t.exports=e},function(e,t,r){\"use strict\";(function(e){r.d(t,\"c\",(function(){return s})),r.d(t,\"a\",(function(){return f})),r.d(t,\"b\",(function(){return p}));var n,o=r(1);function i(){return(i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function c(e,t){if(null==e)return{};var r,n,o=l(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function l(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(n=(\"undefined\"!=typeof reactHotLoaderGlobal?reactHotLoaderGlobal:r(0)).enterModule)&&n(e),function(){var t=(\"undefined\"!=typeof reactHotLoaderGlobal?reactHotLoaderGlobal:r(0)).enterModule;t&&t(e)}();var u,a,s=function(e){var t=e.lineHeight,r=e.maxHeight,n=e.overflow,l=e.children,u=c(e,[\"lineHeight\",\"maxHeight\",\"overflow\",\"children\"]);return o.createElement(\"div\",i({},u,{style:{position:\"relative\",lineHeight:t,maxHeight:r,overflow:n}}),l)},f=function(e){var t=e.children,r=e.forwardedRef;return o.createElement(\"div\",{style:{opacity:0,pointerEvents:\"none\",left:0,position:\"absolute\",right:0,top:0,visibility:\"hidden\",zIndex:-1},ref:r},t)},p=function(e){var t=e.children;return o.createElement(\"div\",{style:{bottom:0,lineHeight:\"inherit\",position:\"absolute\",right:0,userSelect:\"none\"}},t)};(u=(\"undefined\"!=typeof reactHotLoaderGlobal?reactHotLoaderGlobal:r(0)).default)&&(u.register(s,\"Wrapper\",\"/home/circleci/chop-lines/src/components.tsx\"),u.register(f,\"AutoSizer\",\"/home/circleci/chop-lines/src/components.tsx\"),u.register(p,\"Ellipsis\",\"/home/circleci/chop-lines/src/components.tsx\")),(a=(\"undefined\"!=typeof reactHotLoaderGlobal?reactHotLoaderGlobal:r(0)).leaveModule)&&a(e),function(){var e=(\"undefined\"!=typeof reactHotLoaderGlobal?reactHotLoaderGlobal:r(0)).default;e&&(e.register(i,\"_extends\",\"/home/circleci/chop-lines/src/components.tsx\"),e.register(c,\"_objectWithoutProperties\",\"/home/circleci/chop-lines/src/components.tsx\"),e.register(l,\"_objectWithoutPropertiesLoose\",\"/home/circleci/chop-lines/src/components.tsx\"),e.register(s,\"Wrapper\",\"/home/circleci/chop-lines/src/components.tsx\"),e.register(f,\"AutoSizer\",\"/home/circleci/chop-lines/src/components.tsx\"),e.register(p,\"Ellipsis\",\"/home/circleci/chop-lines/src/components.tsx\"))}(),function(){var t=(\"undefined\"!=typeof reactHotLoaderGlobal?reactHotLoaderGlobal:r(0)).leaveModule;t&&t(e)}()}).call(this,r(4)(e))},function(e,t,r){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n,o=(n=r(1))&&\"object\"==typeof n&&\"default\"in n?n.default:n;t.AppContainer=function(e){return o.Children.only(e.children)},t.hot=function(){return function(e){return e}},t.areComponentsEqual=function(e,t){return e===t},t.setConfig=function(){},t.cold=function(e){return e},t.configureComponent=function(){}},function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,\"loaded\",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,\"id\",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,\"exports\",{enumerable:!0}),t.webpackPolyfill=1}return t}},function(e,t,r){(function(t){var r=\"Expected a function\",n=NaN,o=\"[object Symbol]\",i=/^\\s+|\\s+$/g,c=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,u=/^0o[0-7]+$/i,a=parseInt,s=\"object\"==typeof t&&t&&t.Object===Object&&t,f=\"object\"==typeof self&&self&&self.Object===Object&&self,p=s||f||Function(\"return this\")(),d=Object.prototype.toString,h=Math.max,b=Math.min,y=function(){return p.Date.now()};function v(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function m(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&d.call(e)==o}(e))return n;if(v(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=v(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(i,\"\");var r=l.test(e);return r||u.test(e)?a(e.slice(2),r?2:8):c.test(e)?n:+e}e.exports=function(e,t,n){var o,i,c,l,u,a,s=0,f=!1,p=!1,d=!0;if(\"function\"!=typeof e)throw new TypeError(r);function g(t){var r=o,n=i;return o=i=void 0,s=t,l=e.apply(n,r)}function x(e){var r=e-a;return void 0===a||r>=t||r<0||p&&e-s>=c}function j(){var e=y();if(x(e))return O(e);u=setTimeout(j,function(e){var r=t-(e-a);return p?b(r,c-(e-s)):r}(e))}function O(e){return u=void 0,d&&o?g(e):(o=i=void 0,l)}function H(){var e=y(),r=x(e);if(o=arguments,i=this,a=e,r){if(void 0===u)return function(e){return s=e,u=setTimeout(j,t),f?g(e):l}(a);if(p)return u=setTimeout(j,t),g(a)}return void 0===u&&(u=setTimeout(j,t)),l}return t=m(t)||0,v(n)&&(f=!!n.leading,c=(p=\"maxWait\"in n)?h(m(n.maxWait)||0,t):c,d=\"trailing\"in n?!!n.trailing:d),H.cancel=function(){void 0!==u&&clearTimeout(u),s=0,o=a=i=u=void 0},H.flush=function(){return void 0===u?l:O(y())},H}}).call(this,r(9))},function(e,t,r){r(7),e.exports=r(8)},function(e,t,r){\"use strict\";e.exports=r(3)},function(e,t,r){\"use strict\";r.r(t),function(e){var n,o=r(1),i=r.n(o),c=r(5),l=r.n(c),u=r(2);function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function s(e,t){return d(e)||p(e,t)||f()}function f(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}function p(e,t){var r=[],n=!0,o=!1,i=void 0;try{for(var c,l=e[Symbol.iterator]();!(n=(c=l.next()).done)&&(r.push(c.value),!t||r.length!==t);n=!0);}catch(e){o=!0,i=e}finally{try{n||null==l.return||l.return()}finally{if(o)throw i}}return r}function d(e){if(Array.isArray(e))return e}function h(e,t){if(null==e)return{};var r,n,o=b(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function b(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(n=(\"undefined\"!=typeof reactHotLoaderGlobal?reactHotLoaderGlobal:r(0)).enterModule)&&n(e),function(){var t=(\"undefined\"!=typeof reactHotLoaderGlobal?reactHotLoaderGlobal:r(0)).enterModule;t&&t(e)}();var y,v,m=function(e){var t=e.lines,r=void 0===t?0:t,n=e.lineHeight,c=void 0===n?0:n,f=e.maxHeight,p=void 0===f?0:f,d=e.ellipsis,b=void 0===d?\"…\":d,y=e.children,v=h(e,[\"lines\",\"lineHeight\",\"maxHeight\",\"ellipsis\",\"children\"]),m=Object(o.useRef)(null),g=s(Object(o.useState)(0),2),x=g[0],j=g[1],O=\"\".concat(p||c*r,\"px\"),H=x>(p||c*r),w=function(){var e=m.current.getBoundingClientRect().height;j(e)};return Object(o.useEffect)((function(){var e=l()((function(){window.requestAnimationFrame(w)}),50);return w(),window.addEventListener(\"resize\",e),function(){return window.removeEventListener(\"resize\",e)}}),[]),i.a.createElement(u.c,a({},v,{lineHeight:p?\"unset\":\"\".concat(c,\"px\"),maxHeight:!x||H?O:\"unset\",overflow:!x||H?\"hidden\":\"unset\"}),i.a.createElement(u.a,{forwardedRef:m,\"aria-hidden\":!0},y),y,H&&i.a.createElement(u.b,null,b))},g=m,x=g;t.default=x,(y=(\"undefined\"!=typeof reactHotLoaderGlobal?reactHotLoaderGlobal:r(0)).default)&&(y.register(m,\"ChopLines\",\"/home/circleci/chop-lines/src/chop-lines.tsx\"),y.register(g,\"default\",\"/home/circleci/chop-lines/src/chop-lines.tsx\")),(v=(\"undefined\"!=typeof reactHotLoaderGlobal?reactHotLoaderGlobal:r(0)).leaveModule)&&v(e),function(){var e=(\"undefined\"!=typeof reactHotLoaderGlobal?reactHotLoaderGlobal:r(0)).default;e&&(e.register(a,\"_extends\",\"/home/circleci/chop-lines/src/chop-lines.tsx\"),e.register(s,\"_slicedToArray\",\"/home/circleci/chop-lines/src/chop-lines.tsx\"),e.register(f,\"_nonIterableRest\",\"/home/circleci/chop-lines/src/chop-lines.tsx\"),e.register(p,\"_iterableToArrayLimit\",\"/home/circleci/chop-lines/src/chop-lines.tsx\"),e.register(d,\"_arrayWithHoles\",\"/home/circleci/chop-lines/src/chop-lines.tsx\"),e.register(h,\"_objectWithoutProperties\",\"/home/circleci/chop-lines/src/chop-lines.tsx\"),e.register(b,\"_objectWithoutPropertiesLoose\",\"/home/circleci/chop-lines/src/chop-lines.tsx\"),e.register(m,\"ChopLines\",\"/home/circleci/chop-lines/src/chop-lines.tsx\"),e.register(g,\"_default\",\"/home/circleci/chop-lines/src/chop-lines.tsx\"),e.register(x,\"default\",\"/home/circleci/chop-lines/src/chop-lines.tsx\"))}(),function(){var t=(\"undefined\"!=typeof reactHotLoaderGlobal?reactHotLoaderGlobal:r(0)).leaveModule;t&&t(e)}()}.call(this,r(4)(e))},function(e,t){var r;r=function(){return this}();try{r=r||new Function(\"return this\")()}catch(e){\"object\"==typeof window&&(r=window)}e.exports=r}])}));","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\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[\"ClassicEditor\"] = factory();\n\telse\n\t\troot[\"ClassicEditor\"] = factory();\n})(self, () => {\nreturn ","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-content .audio{clear:both;display:table;margin:1em auto;text-align:center}.ck-content .audio audio{display:block;margin:0 auto;max-width:100%;min-width:50px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@flockjay/ckeditor5-audio/theme/audio.css\"],\"names\":[],\"mappings\":\"AAAA,mBAEI,UAAW,CADX,aAAc,CAGd,eAAgB,CADhB,iBASJ,CANI,yBACI,aAAc,CACd,aAAc,CACd,cAAe,CACf,cACJ\",\"sourcesContent\":[\".ck-content .audio {\\n display: table;\\n clear: both;\\n text-align: center;\\n margin: 1em auto;\\n\\n & audio {\\n display: block;\\n margin: 0 auto;\\n max-width: 100%;\\n min-width: 50px;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-content .audio.audio_resized{box-sizing:border-box;display:block;max-width:100%}.ck-content .audio.audio_resized audio{width:100%}.ck-content .audio.audio_resized>figcaption{display:block}[dir=ltr] .ck.ck-button.ck-button_with-text.ck-resize-audio-button .ck-button__icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-button.ck-button_with-text.ck-resize-audio-button .ck-button__icon{margin-left:var(--ck-spacing-standard)}.ck.ck-dropdown .ck-button.ck-resize-audio-button .ck-button__label{width:4em}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@flockjay/ckeditor5-audio/theme/audioresize.css\"],\"names\":[],\"mappings\":\"AAAA,iCAQI,qBAAsB,CADtB,aAAc,CANd,cAkBJ,CATI,uCAEM,UACJ,CAEF,4CAEM,aACJ,CAGN,oFACI,uCACJ,CAEA,oFACI,sCACJ,CAEA,oEACI,SACJ\",\"sourcesContent\":[\".ck-content .audio.audio_resized {\\n max-width: 100%;\\n /*\\n The `<figure>` element for resized audios must not use `display:table` as browsers do not support `max-width` for it well.\\n See https://stackoverflow.com/questions/4019604/chrome-safari-ignoring-max-width-in-table/14420691#14420691 for more.\\n Fortunately, since we control the width, there is no risk that the audio will look bad.\\n */\\n display: block;\\n box-sizing: border-box;\\n\\n & audio {\\n /* For resized audios it is the `<figure>` element that determines the audio width. */\\n width: 100%;\\n }\\n\\n & > figcaption {\\n /* The `<figure>` element uses `display:block`, so `<figcaption>` also has to. */\\n display: block;\\n }\\n}\\n\\n[dir=\\\"ltr\\\"] .ck.ck-button.ck-button_with-text.ck-resize-audio-button .ck-button__icon {\\n margin-right: var(--ck-spacing-standard);\\n}\\n\\n[dir=\\\"rtl\\\"] .ck.ck-button.ck-button_with-text.ck-resize-audio-button .ck-button__icon {\\n margin-left: var(--ck-spacing-standard);\\n}\\n\\n.ck.ck-dropdown .ck-button.ck-resize-audio-button .ck-button__label {\\n width: 4em;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-audio-style-spacing:1.5em}.ck-content .audio-style-side{float:right;margin-left:var(--ck-audio-style-spacing);max-width:50%}.ck-content .audio-style-align-left{float:left;margin-right:var(--ck-audio-style-spacing)}.ck-content .audio-style-align-center{margin-left:auto;margin-right:auto}.ck-content .audio-style-align-right{float:right;margin-left:var(--ck-audio-style-spacing)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@flockjay/ckeditor5-audio/theme/audiostyle.css\"],\"names\":[],\"mappings\":\"AAAA,MACI,8BACJ,CAGI,8BACI,WAAY,CACZ,yCAA0C,CAC1C,aACJ,CAEA,oCACI,UAAW,CACX,0CACJ,CAEA,sCACI,gBAAiB,CACjB,iBACJ,CAEA,qCACI,WAAY,CACZ,yCACJ\",\"sourcesContent\":[\":root {\\n --ck-audio-style-spacing: 1.5em;\\n}\\n\\n.ck-content {\\n & .audio-style-side {\\n float: right;\\n margin-left: var(--ck-audio-style-spacing);\\n max-width: 50%;\\n }\\n\\n & .audio-style-align-left {\\n float: left;\\n margin-right: var(--ck-audio-style-spacing);\\n }\\n\\n & .audio-style-align-center {\\n margin-left: auto;\\n margin-right: auto;\\n }\\n\\n & .audio-style-align-right {\\n float: right;\\n margin-left: var(--ck-audio-style-spacing);\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-audio-upload-complete-icon{border-radius:50%;display:block;position:absolute;right:10px;top:10px}.ck-audio-upload-complete-icon:after{content:\\\"\\\";position:absolute}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@flockjay/ckeditor5-audio/theme/audiouploadicon.css\"],\"names\":[],\"mappings\":\"AAAA,+BAKI,iBAAkB,CAJlB,aAAc,CACd,iBAAkB,CAElB,UAAW,CADX,QAQJ,CAJI,qCACK,UAAW,CACX,iBACJ\",\"sourcesContent\":[\".ck-audio-upload-complete-icon {\\n display: block;\\n position: absolute;\\n top: 10px;\\n right: 10px;\\n border-radius: 50%;\\n\\n &::after {\\n content: \\\"\\\";\\n position: absolute;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck .ck-upload-placeholder-loader{align-items:center;display:flex;justify-content:center;left:0;position:absolute;top:0}.ck .ck-upload-placeholder-loader:before{content:\\\"\\\";position:relative}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@flockjay/ckeditor5-audio/theme/audiouploadloader.css\"],\"names\":[],\"mappings\":\"AAAA,kCAGI,kBAAmB,CADnB,YAAa,CAEb,sBAAuB,CAEvB,MAAO,CALP,iBAAkB,CAIlB,KAOJ,CAJI,yCACK,UAAW,CACX,iBACJ\",\"sourcesContent\":[\".ck .ck-upload-placeholder-loader {\\n position: absolute;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n top: 0;\\n left: 0;\\n\\n &::before {\\n content: '';\\n position: relative;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-editor__editable .audio{position:relative}.ck.ck-editor__editable .audio .ck-progress-bar{left:0;position:absolute;top:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@flockjay/ckeditor5-audio/theme/audiouploadprogress.css\"],\"names\":[],\"mappings\":\"AAAA,+BACI,iBACJ,CAGA,gDAGI,MAAO,CAFP,iBAAkB,CAClB,KAEJ\",\"sourcesContent\":[\".ck.ck-editor__editable .audio {\\n position: relative;\\n}\\n\\n/* Upload progress bar. */\\n.ck.ck-editor__editable .audio .ck-progress-bar {\\n position: absolute;\\n top: 0;\\n left: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-content .video{clear:both;display:table;margin:1em auto;text-align:center}.ck-content .video video{display:block;margin:0 auto;max-width:100%;min-width:50px}.ck.ck-editor__editable .video>figcaption.ck-placeholder:before{position:static}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@flockjay/ckeditor5-video/theme/video.css\"],\"names\":[],\"mappings\":\"AAAA,mBAEI,UAAW,CADX,aAAc,CAGd,eAAgB,CADhB,iBASJ,CANI,yBACI,aAAc,CACd,aAAc,CACd,cAAe,CACf,cACJ,CAGJ,gEACI,eACJ\",\"sourcesContent\":[\".ck-content .video {\\n display: table;\\n clear: both;\\n text-align: center;\\n margin: 1em auto;\\n\\n & video {\\n display: block;\\n margin: 0 auto;\\n max-width: 100%;\\n min-width: 50px;\\n }\\n}\\n\\n.ck.ck-editor__editable .video > figcaption.ck-placeholder::before {\\n position: static;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-video-insert__panel{padding:var(--ck-spacing-large)}.ck.ck-video-insert__ck-finder-button{border:1px solid #ccc;border-radius:var(--ck-border-radius);display:block;margin:var(--ck-spacing-standard) auto;width:100%}.ck.ck-splitbutton>.ck-file-dialog-button.ck-button{border:none;margin:0;padding:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@flockjay/ckeditor5-video/theme/videoinsert.css\"],\"names\":[],\"mappings\":\"AAAA,2BACI,+BACJ,CAEA,sCAII,qBAAiC,CACjC,qCAAsC,CAJtC,aAAc,CAEd,sCAAuC,CADvC,UAIJ,CAEA,oDAGI,WAAY,CADZ,QAAS,CADT,SAGJ\",\"sourcesContent\":[\".ck.ck-video-insert__panel {\\n padding: var(--ck-spacing-large);\\n}\\n\\n.ck.ck-video-insert__ck-finder-button {\\n display: block;\\n width: 100%;\\n margin: var(--ck-spacing-standard) auto;\\n border: 1px solid hsl(0, 0%, 80%);\\n border-radius: var(--ck-border-radius);\\n}\\n\\n.ck.ck-splitbutton > .ck-file-dialog-button.ck-button {\\n padding: 0;\\n margin: 0;\\n border: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-video-insert-form:focus{outline:none}.ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-video-insert-form__action-row{margin-top:var(--ck-spacing-standard)}.ck.ck-form__row.ck-video-insert-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-video-insert-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row.ck-video-insert-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@flockjay/ckeditor5-video/theme/videoinsertformrowview.css\"],\"names\":[],\"mappings\":\"AACI,+BACI,YACJ,CAGJ,iBACI,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAkBJ,CAhBI,iCACI,WACJ,CAEA,kDACI,qCAUJ,CARI,sIAEI,sBACJ,CAEA,+EACI,0BACJ\",\"sourcesContent\":[\".ck.ck-video-insert-form {\\n &:focus {\\n outline: none;\\n }\\n}\\n\\n.ck.ck-form__row {\\n display: flex;\\n flex-direction: row;\\n flex-wrap: nowrap;\\n justify-content: space-between;\\n\\n & > *:not(.ck-label) {\\n flex-grow: 1;\\n }\\n\\n &.ck-video-insert-form__action-row {\\n margin-top: var(--ck-spacing-standard);\\n\\n & .ck-button-save,\\n & .ck-button-cancel {\\n justify-content: center;\\n }\\n\\n & .ck-button .ck-button__label {\\n color: var(--ck-color-text);\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-content .video.video_resized{box-sizing:border-box;display:block;max-width:100%}.ck-content .video.video_resized video{width:100%}.ck-content .video.video_resized>figcaption{display:block}[dir=ltr] .ck.ck-button.ck-button_with-text.ck-resize-video-button .ck-button__icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-button.ck-button_with-text.ck-resize-video-button .ck-button__icon{margin-left:var(--ck-spacing-standard)}.ck.ck-dropdown .ck-button.ck-resize-video-button .ck-button__label{width:4em}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@flockjay/ckeditor5-video/theme/videoresize.css\"],\"names\":[],\"mappings\":\"AAAA,iCAQI,qBAAsB,CADtB,aAAc,CANd,cAkBJ,CATI,uCAEM,UACJ,CAEF,4CAEM,aACJ,CAGN,oFACI,uCACJ,CAEA,oFACI,sCACJ,CAEA,oEACI,SACJ\",\"sourcesContent\":[\".ck-content .video.video_resized {\\n max-width: 100%;\\n /*\\n The `<figure>` element for resized videos must not use `display:table` as browsers do not support `max-width` for it well.\\n See https://stackoverflow.com/questions/4019604/chrome-safari-ignoring-max-width-in-table/14420691#14420691 for more.\\n Fortunately, since we control the width, there is no risk that the video will look bad.\\n */\\n display: block;\\n box-sizing: border-box;\\n\\n & video {\\n /* For resized videos it is the `<figure>` element that determines the video width. */\\n width: 100%;\\n }\\n\\n & > figcaption {\\n /* The `<figure>` element uses `display:block`, so `<figcaption>` also has to. */\\n display: block;\\n }\\n}\\n\\n[dir=\\\"ltr\\\"] .ck.ck-button.ck-button_with-text.ck-resize-video-button .ck-button__icon {\\n margin-right: var(--ck-spacing-standard);\\n}\\n\\n[dir=\\\"rtl\\\"] .ck.ck-button.ck-button_with-text.ck-resize-video-button .ck-button__icon {\\n margin-left: var(--ck-spacing-standard);\\n}\\n\\n.ck.ck-dropdown .ck-button.ck-resize-video-button .ck-button__label {\\n width: 4em;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-video-style-spacing:1.5em}.ck-content .video-style-side{float:right;margin-left:var(--ck-video-style-spacing);max-width:50%}.ck-content .video-style-align-left{float:left;margin-right:var(--ck-video-style-spacing)}.ck-content .video-style-align-center{margin-left:auto;margin-right:auto}.ck-content .video-style-align-right{float:right;margin-left:var(--ck-video-style-spacing)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@flockjay/ckeditor5-video/theme/videostyle.css\"],\"names\":[],\"mappings\":\"AAAA,MACI,8BACJ,CAGI,8BACI,WAAY,CACZ,yCAA0C,CAC1C,aACJ,CAEA,oCACI,UAAW,CACX,0CACJ,CAEA,sCACI,gBAAiB,CACjB,iBACJ,CAEA,qCACI,WAAY,CACZ,yCACJ\",\"sourcesContent\":[\":root {\\n --ck-video-style-spacing: 1.5em;\\n}\\n\\n.ck-content {\\n & .video-style-side {\\n float: right;\\n margin-left: var(--ck-video-style-spacing);\\n max-width: 50%;\\n }\\n\\n & .video-style-align-left {\\n float: left;\\n margin-right: var(--ck-video-style-spacing);\\n }\\n\\n & .video-style-align-center {\\n margin-left: auto;\\n margin-right: auto;\\n }\\n\\n & .video-style-align-right {\\n float: right;\\n margin-left: var(--ck-video-style-spacing);\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-video-upload-complete-icon{border-radius:50%;display:block;position:absolute;right:10px;top:10px}.ck-video-upload-complete-icon:after{content:\\\"\\\";position:absolute}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@flockjay/ckeditor5-video/theme/videouploadicon.css\"],\"names\":[],\"mappings\":\"AAAA,+BAKI,iBAAkB,CAJlB,aAAc,CACd,iBAAkB,CAElB,UAAW,CADX,QAQJ,CAJI,qCACK,UAAW,CACX,iBACJ\",\"sourcesContent\":[\".ck-video-upload-complete-icon {\\n display: block;\\n position: absolute;\\n top: 10px;\\n right: 10px;\\n border-radius: 50%;\\n\\n &::after {\\n content: \\\"\\\";\\n position: absolute;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck .ck-upload-placeholder-loader{align-items:center;display:flex;justify-content:center;left:0;position:absolute;top:0}.ck .ck-upload-placeholder-loader:before{content:\\\"\\\";position:relative}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@flockjay/ckeditor5-video/theme/videouploadloader.css\"],\"names\":[],\"mappings\":\"AAAA,kCAGI,kBAAmB,CADnB,YAAa,CAEb,sBAAuB,CAEvB,MAAO,CALP,iBAAkB,CAIlB,KAOJ,CAJI,yCACK,UAAW,CACX,iBACJ\",\"sourcesContent\":[\".ck .ck-upload-placeholder-loader {\\n position: absolute;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n top: 0;\\n left: 0;\\n\\n &::before {\\n content: '';\\n position: relative;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-editor__editable .video{position:relative}.ck.ck-editor__editable .video .ck-progress-bar{left:0;position:absolute;top:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@flockjay/ckeditor5-video/theme/videouploadprogress.css\"],\"names\":[],\"mappings\":\"AAAA,+BACI,iBACJ,CAGA,gDAGI,MAAO,CAFP,iBAAkB,CAClB,KAEJ\",\"sourcesContent\":[\".ck.ck-editor__editable .video {\\n position: relative;\\n}\\n\\n/* Upload progress bar. */\\n.ck.ck-editor__editable .video .ck-progress-bar {\\n position: absolute;\\n top: 0;\\n left: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-character-grid{max-width:100%}.ck.ck-character-grid.ck-character-grid__tiles{display:grid}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@phudak/ckeditor5-emoji/theme/charactergrid.css\"],\"names\":[],\"mappings\":\"AAKA,sBACC,cACD,CAEA,+CACI,YACJ\",\"sourcesContent\":[\"/*\\r\\n * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.\\r\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\r\\n */\\r\\n\\r\\n.ck.ck-character-grid {\\r\\n\\tmax-width: 100%;\\r\\n}\\r\\n\\r\\n.ck.ck-character-grid.ck-character-grid__tiles {\\r\\n display: grid;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-character-info{display:flex;justify-content:space-between}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@phudak/ckeditor5-emoji/theme/characterinfo.css\"],\"names\":[],\"mappings\":\"AAKA,sBACC,YAAa,CACb,6BACD\",\"sourcesContent\":[\"/*\\r\\n * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.\\r\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\r\\n */\\r\\n\\r\\n.ck.ck-character-info {\\r\\n\\tdisplay: flex;\\r\\n\\tjustify-content: space-between;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-emoji-grid-font-size{font-size:1.4em!important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../node_modules/@phudak/ckeditor5-emoji/theme/emoji-characters.css\"],\"names\":[],\"mappings\":\"AAAA,yBACI,yBACJ\",\"sourcesContent\":[\".ck-emoji-grid-font-size {\\r\\n font-size: 1.4em !important;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-content code{background-color:hsla(0,0%,78%,.3);border-radius:2px;padding:.15em}.ck.ck-editor__editable .ck-code_selected{background-color:hsla(0,0%,78%,.5)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-basic-styles/theme/code.css\"],\"names\":[],\"mappings\":\"AAKA,iBACC,kCAAuC,CAEvC,iBAAkB,CADlB,aAED,CAEA,0CACC,kCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck-content code {\\n\\tbackground-color: hsla(0, 0%, 78%, 0.3);\\n\\tpadding: .15em;\\n\\tborder-radius: 2px;\\n}\\n\\n.ck.ck-editor__editable .ck-code_selected {\\n\\tbackground-color: hsla(0, 0%, 78%, 0.5);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-content blockquote{border-left:5px solid #ccc;font-style:italic;margin-left:0;margin-right:0;overflow:hidden;padding-left:1.5em;padding-right:1.5em}.ck-content[dir=rtl] blockquote{border-left:0;border-right:5px solid #ccc}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-block-quote/theme/blockquote.css\"],\"names\":[],\"mappings\":\"AAKA,uBAWC,0BAAsC,CADtC,iBAAkB,CAFlB,aAAc,CACd,cAAe,CAPf,eAAgB,CAIhB,kBAAmB,CADnB,mBAOD,CAEA,gCACC,aAAc,CACd,2BACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck-content blockquote {\\n\\t/* See #12 */\\n\\toverflow: hidden;\\n\\n\\t/* https://github.com/ckeditor/ckeditor5-block-quote/issues/15 */\\n\\tpadding-right: 1.5em;\\n\\tpadding-left: 1.5em;\\n\\n\\tmargin-left: 0;\\n\\tmargin-right: 0;\\n\\tfont-style: italic;\\n\\tborder-left: solid 5px hsl(0, 0%, 80%);\\n}\\n\\n.ck-content[dir=\\\"rtl\\\"] blockquote {\\n\\tborder-left: 0;\\n\\tborder-right: solid 5px hsl(0, 0%, 80%);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-character-grid__tiles{display:flex;flex-wrap:wrap;height:400px;overflow:auto;width:420px}@media (max-width:575.98px){.ck.ck-character-grid__tiles{height:290px;width:230px}}.ck.ck-character-grid__tiles .ck.ck-button__label{font-family:Segoe UI Emoji,Segoe UI Symbol,Segoe UI,Apple Color Emoji,Twemoji Mozilla,Noto Color Emoji,EmojiOne Color,Android Emoji,sans-serif}\", \"\",{\"version\":3,\"sources\":[\"webpack://./theme/emoji.css\"],\"names\":[],\"mappings\":\"AAMA,6BAEC,YAAa,CACb,cAAe,CACf,YAAa,CACb,aAAc,CAJd,WAKD,CAEA,4BACC,6BAEC,YAAa,CADb,WAED,CACD,CAEA,kDACC,8IAGD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n\\n.ck.ck-character-grid__tiles {\\n\\twidth: 420px;\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\theight: 400px;\\n\\toverflow: auto;\\n}\\n\\n@media (max-width: 575.98px) {\\n\\t.ck.ck-character-grid__tiles {\\n\\t\\twidth: 230px;\\n\\t\\theight: 290px;\\n\\t}\\n}\\n\\n.ck.ck-character-grid__tiles .ck.ck-button__label {\\n\\tfont-family: \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Segoe UI\\\",\\n\\t\\t\\\"Apple Color Emoji\\\", \\\"Twemoji Mozilla\\\", \\\"Noto Color Emoji\\\",\\n\\t\\t\\\"EmojiOne Color\\\", \\\"Android Emoji\\\", sans-serif;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-editor__editable .ck.ck-clipboard-drop-target-position{display:inline;pointer-events:none;position:relative}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{position:absolute;width:0}.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__selection-handle,.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__type-around{display:none}.ck.ck-clipboard-drop-target-line{pointer-events:none;position:absolute}:root{--ck-clipboard-drop-target-dot-width:12px;--ck-clipboard-drop-target-dot-height:8px;--ck-clipboard-drop-target-color:var(--ck-color-focus-border)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{background:var(--ck-clipboard-drop-target-color);border:1px solid var(--ck-clipboard-drop-target-color);bottom:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);margin-left:-1px;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span:after{border-color:var(--ck-clipboard-drop-target-color) transparent transparent transparent;border-style:solid;border-width:calc(var(--ck-clipboard-drop-target-dot-height)) calc(var(--ck-clipboard-drop-target-dot-width)*.5) 0 calc(var(--ck-clipboard-drop-target-dot-width)*.5);content:\\\"\\\";display:block;height:0;left:50%;position:absolute;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);transform:translateX(-50%);width:0}.ck.ck-editor__editable .ck-widget.ck-clipboard-drop-target-range{outline:var(--ck-widget-outline-thickness) solid var(--ck-clipboard-drop-target-color)!important}.ck.ck-editor__editable .ck-widget:-webkit-drag{zoom:.6;outline:none!important}.ck.ck-clipboard-drop-target-line{background:var(--ck-clipboard-drop-target-color);border:1px solid var(--ck-clipboard-drop-target-color);height:0;margin-top:-1px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-clipboard/theme/clipboard.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-clipboard/clipboard.css\"],\"names\":[],\"mappings\":\"AASC,8DACC,cAAe,CAEf,mBAAoB,CADpB,iBAOD,CAJC,mEACC,iBAAkB,CAClB,OACD,CAWA,qJACC,YACD,CAIF,kCAEC,mBAAoB,CADpB,iBAED,CChCA,MACC,yCAA0C,CAC1C,yCAA0C,CAC1C,6DACD,CAOE,mEAIC,gDAAiD,CADjD,sDAAuD,CAFvD,2DAA8D,CAI9D,gBAAiB,CAHjB,wDAqBD,CAfC,yEAWC,sFAAuF,CAEvF,kBAAmB,CADnB,qKAA0K,CAX1K,UAAW,CAIX,aAAc,CAFd,QAAS,CAIT,QAAS,CADT,iBAAkB,CAElB,wDAA2D,CAE3D,0BAA2B,CAR3B,OAYD,CAOF,kEACC,gGACD,CAKA,gDACC,OAAS,CACT,sBACD,CAGD,kCAGC,gDAAiD,CADjD,sDAAuD,CADvD,QAAS,CAGT,eACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-editor__editable {\\n\\t/*\\n\\t * Vertical drop target (in text).\\n\\t */\\n\\t& .ck.ck-clipboard-drop-target-position {\\n\\t\\tdisplay: inline;\\n\\t\\tposition: relative;\\n\\t\\tpointer-events: none;\\n\\n\\t\\t& span {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\twidth: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Styles of the widget being dragged (its preview).\\n\\t */\\n\\t& .ck-widget:-webkit-drag {\\n\\t\\t& > .ck-widget__selection-handle {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\n\\t\\t& > .ck-widget__type-around {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck.ck-clipboard-drop-target-line {\\n\\tposition: absolute;\\n\\tpointer-events: none;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-clipboard-drop-target-dot-width: 12px;\\n\\t--ck-clipboard-drop-target-dot-height: 8px;\\n\\t--ck-clipboard-drop-target-color: var(--ck-color-focus-border)\\n}\\n\\n.ck.ck-editor__editable {\\n\\t/*\\n\\t * Vertical drop target (in text).\\n\\t */\\n\\t& .ck.ck-clipboard-drop-target-position {\\n\\t\\t& span {\\n\\t\\t\\tbottom: calc(-.5 * var(--ck-clipboard-drop-target-dot-height));\\n\\t\\t\\ttop: calc(-.5 * var(--ck-clipboard-drop-target-dot-height));\\n\\t\\t\\tborder: 1px solid var(--ck-clipboard-drop-target-color);\\n\\t\\t\\tbackground: var(--ck-clipboard-drop-target-color);\\n\\t\\t\\tmargin-left: -1px;\\n\\n\\t\\t\\t/* The triangle above the marker */\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\tcontent: \\\"\\\";\\n\\t\\t\\t\\twidth: 0;\\n\\t\\t\\t\\theight: 0;\\n\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tleft: 50%;\\n\\t\\t\\t\\ttop: calc(var(--ck-clipboard-drop-target-dot-height) * -.5);\\n\\n\\t\\t\\t\\ttransform: translateX(-50%);\\n\\t\\t\\t\\tborder-color: var(--ck-clipboard-drop-target-color) transparent transparent transparent;\\n\\t\\t\\t\\tborder-width: calc(var(--ck-clipboard-drop-target-dot-height)) calc(.5 * var(--ck-clipboard-drop-target-dot-width)) 0 calc(.5 * var(--ck-clipboard-drop-target-dot-width));\\n\\t\\t\\t\\tborder-style: solid;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Styles of the widget that it a drop target.\\n\\t */\\n\\t& .ck-widget.ck-clipboard-drop-target-range {\\n\\t\\toutline: var(--ck-widget-outline-thickness) solid var(--ck-clipboard-drop-target-color) !important;\\n\\t}\\n\\n\\t/*\\n\\t * Styles of the widget being dragged (its preview).\\n\\t */\\n\\t& .ck-widget:-webkit-drag {\\n\\t\\tzoom: 0.6;\\n\\t\\toutline: none !important;\\n\\t}\\n}\\n\\n.ck.ck-clipboard-drop-target-line {\\n\\theight: 0;\\n\\tborder: 1px solid var(--ck-clipboard-drop-target-color);\\n\\tbackground: var(--ck-clipboard-drop-target-color);\\n\\tmargin-top: -1px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-editor{position:relative}.ck.ck-editor .ck-editor__top .ck-sticky-panel .ck-toolbar{z-index:var(--ck-z-modal)}.ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar,.ck.ck-editor__top .ck-sticky-panel .ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-bottom-width:0}.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar{border-bottom-width:1px;border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar,.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:0}.ck.ck-editor__main>.ck-editor__editable{background:var(--ck-color-base-background);border-radius:0}.ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,.ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}.ck.ck-editor__main>.ck-editor__editable:not(.ck-focused){border-color:var(--ck-color-base-border)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-editor-classic/theme/classiceditor.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-editor-classic/classiceditor.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css\"],\"names\":[],\"mappings\":\"AAKA,cAIC,iBAMD,CAJC,2DAEC,yBACD,CCLC,gDCED,eDKC,CAPA,uICMA,qCAAsC,CDJpC,2BAA4B,CAC5B,4BAIF,CAPA,gDAMC,qBACD,CAEA,iFACC,uBAAwB,CCR1B,eDaC,CANA,yMCHA,qCAAsC,CDOpC,eAEF,CAKF,yCAEC,0CAA2C,CCpB3C,eD8BD,CAZA,yHCdE,qCAAsC,CDmBtC,wBAAyB,CACzB,yBAMF,CAHC,0DACC,wCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-editor {\\n\\t/* All the elements within `.ck-editor` are positioned relatively to it.\\n\\t If any element needs to be positioned with respect to the <body>, etc.,\\n\\t it must land outside of the `.ck-editor` in DOM. */\\n\\tposition: relative;\\n\\n\\t& .ck-editor__top .ck-sticky-panel .ck-toolbar {\\n\\t\\t/* https://github.com/ckeditor/ckeditor5-editor-classic/issues/62 */\\n\\t\\tz-index: var(--ck-z-modal);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../mixins/_rounded.css\\\";\\n\\n.ck.ck-editor__top {\\n\\t& .ck-sticky-panel {\\n\\t\\t& .ck-toolbar {\\n\\t\\t\\t@mixin ck-rounded-corners {\\n\\t\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t\\t\\tborder-bottom-right-radius: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\tborder-bottom-width: 0;\\n\\t\\t}\\n\\n\\t\\t& .ck-sticky-panel__content_sticky .ck-toolbar {\\n\\t\\t\\tborder-bottom-width: 1px;\\n\\n\\t\\t\\t@mixin ck-rounded-corners {\\n\\t\\t\\t\\tborder-radius: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n/* Note: Use ck-editor__main to make sure these styles don't apply to other editor types */\\n.ck.ck-editor__main > .ck-editor__editable {\\n\\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/113 */\\n\\tbackground: var(--ck-color-base-background);\\n\\n\\t@mixin ck-rounded-corners {\\n\\t\\tborder-top-left-radius: 0;\\n\\t\\tborder-top-right-radius: 0;\\n\\t}\\n\\n\\t&:not(.ck-focused) {\\n\\t\\tborder-color: var(--ck-color-base-border);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t@nest .ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck .ck-placeholder,.ck.ck-placeholder{position:relative}.ck .ck-placeholder:before,.ck.ck-placeholder:before{content:attr(data-placeholder);left:0;pointer-events:none;position:absolute;right:0}.ck.ck-read-only .ck-placeholder:before{display:none}.ck.ck-reset_all .ck-placeholder{position:relative}.ck .ck-placeholder:before,.ck.ck-placeholder:before{color:var(--ck-color-engine-placeholder-text);cursor:text}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-engine/theme/placeholder.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-engine/placeholder.css\"],\"names\":[],\"mappings\":\"AAMA,uCAEC,iBAWD,CATC,qDAIC,8BAA+B,CAF/B,MAAO,CAKP,mBAAoB,CANpB,iBAAkB,CAElB,OAKD,CAKA,wCACC,YACD,CAQD,iCACC,iBACD,CC5BC,qDAEC,6CAA8C,CAD9C,WAED\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/* See ckeditor/ckeditor5#936. */\\n.ck.ck-placeholder,\\n.ck .ck-placeholder {\\n\\tposition: relative;\\n\\n\\t&::before {\\n\\t\\tposition: absolute;\\n\\t\\tleft: 0;\\n\\t\\tright: 0;\\n\\t\\tcontent: attr(data-placeholder);\\n\\n\\t\\t/* See ckeditor/ckeditor5#469. */\\n\\t\\tpointer-events: none;\\n\\t}\\n}\\n\\n/* See ckeditor/ckeditor5#1987. */\\n.ck.ck-read-only .ck-placeholder {\\n\\t&::before {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\\n/*\\n * Rules for the `ck-placeholder` are loaded before the rules for `ck-reset_all` in the base CKEditor 5 DLL build.\\n * This fix overwrites the incorrectly set `position: static` from `ck-reset_all`.\\n * See https://github.com/ckeditor/ckeditor5/issues/11418.\\n */\\n.ck.ck-reset_all .ck-placeholder {\\n\\tposition: relative;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/* See ckeditor/ckeditor5#936. */\\n.ck.ck-placeholder, .ck .ck-placeholder {\\n\\t&::before {\\n\\t\\tcursor: text;\\n\\t\\tcolor: var(--ck-color-engine-placeholder-text);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-editor__editable span[data-ck-unsafe-element]{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-engine/theme/renderer.css\"],\"names\":[],\"mappings\":\"AAMA,qDACC,YACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/* Elements marked by the Renderer as hidden should be invisible in the editor. */\\n.ck.ck-editor__editable span[data-ck-unsafe-element] {\\n\\tdisplay: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-content .text-tiny{font-size:.7em}.ck-content .text-small{font-size:.85em}.ck-content .text-big{font-size:1.4em}.ck-content .text-huge{font-size:1.8em}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-font/theme/fontsize.css\"],\"names\":[],\"mappings\":\"AAUC,uBACC,cACD,CAEA,wBACC,eACD,CAEA,sBACC,eACD,CAEA,uBACC,eACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/* The values should be synchronized with the \\\"FONT_SIZE_PRESET_UNITS\\\" object in the \\\"/src/fontsize/utils.js\\\" file. */\\n\\n/* Styles should be prefixed with the `.ck-content` class.\\nSee https://github.com/ckeditor/ckeditor5/issues/6636 */\\n.ck-content {\\n\\t& .text-tiny {\\n\\t\\tfont-size: .7em;\\n\\t}\\n\\n\\t& .text-small {\\n\\t\\tfont-size: .85em;\\n\\t}\\n\\n\\t& .text-big {\\n\\t\\tfont-size: 1.4em;\\n\\t}\\n\\n\\t& .text-huge {\\n\\t\\tfont-size: 1.8em;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-heading_heading1{font-size:20px}.ck.ck-heading_heading2{font-size:17px}.ck.ck-heading_heading3{font-size:14px}.ck[class*=ck-heading_heading]{font-weight:700}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__button .ck-button__label{width:8em}.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__panel .ck-list__item{min-width:18em}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-heading/theme/heading.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-heading/heading.css\"],\"names\":[],\"mappings\":\"AAKA,wBACC,cACD,CAEA,wBACC,cACD,CAEA,wBACC,cACD,CAEA,+BACC,eACD,CCZC,2EACC,SACD,CAEA,uEACC,cACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-heading_heading1 {\\n\\tfont-size: 20px;\\n}\\n\\n.ck.ck-heading_heading2 {\\n\\tfont-size: 17px;\\n}\\n\\n.ck.ck-heading_heading3 {\\n\\tfont-size: 14px;\\n}\\n\\n.ck[class*=\\\"ck-heading_heading\\\"] {\\n\\tfont-weight: bold;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/* Resize dropdown's button label. */\\n.ck.ck-dropdown.ck-heading-dropdown {\\n\\t& .ck-dropdown__button .ck-button__label {\\n\\t\\twidth: 8em;\\n\\t}\\n\\n\\t& .ck-dropdown__panel .ck-list__item {\\n\\t\\tmin-width: 18em;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-widget.raw-html-embed{display:flow-root;font-style:normal;margin:.9em auto;min-width:15em;position:relative}.ck-widget.raw-html-embed:before{position:absolute;z-index:1}.ck-widget.raw-html-embed .raw-html-embed__buttons-wrapper{display:flex;flex-direction:column;position:absolute}.ck-widget.raw-html-embed .raw-html-embed__preview{display:flex;overflow:hidden;position:relative}.ck-widget.raw-html-embed .raw-html-embed__preview-content{border-collapse:separate;border-spacing:7px;display:table;margin:auto;position:relative;width:100%}.ck-widget.raw-html-embed .raw-html-embed__preview-placeholder{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}:root{--ck-html-embed-content-width:calc(100% - var(--ck-icon-size)*1.5);--ck-html-embed-source-height:10em;--ck-html-embed-unfocused-outline-width:1px;--ck-html-embed-content-min-height:calc(var(--ck-icon-size) + var(--ck-spacing-standard));--ck-html-embed-source-disabled-background:var(--ck-color-base-foreground);--ck-html-embed-source-disabled-color:#737373}.ck-widget.raw-html-embed{background-color:var(--ck-color-base-foreground);font-size:var(--ck-font-size-base)}.ck-widget.raw-html-embed:not(.ck-widget_selected):not(:hover){outline:var(--ck-html-embed-unfocused-outline-width) dashed var(--ck-color-widget-blurred-border)}.ck-widget.raw-html-embed[dir=ltr]{text-align:left}.ck-widget.raw-html-embed[dir=rtl]{text-align:right}.ck-widget.raw-html-embed:before{background:#999;border-radius:0 0 var(--ck-border-radius) var(--ck-border-radius);color:var(--ck-color-base-background);content:attr(data-html-embed-label);font-family:var(--ck-font-face);font-size:var(--ck-font-size-tiny);left:var(--ck-spacing-standard);padding:calc(var(--ck-spacing-tiny) + var(--ck-html-embed-unfocused-outline-width)) var(--ck-spacing-small) var(--ck-spacing-tiny);top:calc(var(--ck-html-embed-unfocused-outline-width)*-1);transition:background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck-widget.raw-html-embed[dir=rtl]:before{left:auto;right:var(--ck-spacing-standard)}.ck-widget.raw-html-embed[dir=ltr] .ck-widget__type-around .ck-widget__type-around__button.ck-widget__type-around__button_before{margin-left:50px}.ck.ck-editor__editable.ck-blurred .ck-widget.raw-html-embed.ck-widget_selected:before{padding:var(--ck-spacing-tiny) var(--ck-spacing-small);top:0}.ck.ck-editor__editable:not(.ck-blurred) .ck-widget.raw-html-embed.ck-widget_selected:before{background:var(--ck-color-focus-border);padding:var(--ck-spacing-tiny) var(--ck-spacing-small);top:0}.ck.ck-editor__editable .ck-widget.raw-html-embed:not(.ck-widget_selected):hover:before{padding:var(--ck-spacing-tiny) var(--ck-spacing-small);top:0}.ck-widget.raw-html-embed .raw-html-embed__content-wrapper{padding:var(--ck-spacing-standard)}.ck-widget.raw-html-embed .raw-html-embed__buttons-wrapper{right:var(--ck-spacing-standard);top:var(--ck-spacing-standard)}.ck-widget.raw-html-embed .raw-html-embed__buttons-wrapper .ck-button.raw-html-embed__save-button{color:var(--ck-color-button-save)}.ck-widget.raw-html-embed .raw-html-embed__buttons-wrapper .ck-button.raw-html-embed__cancel-button{color:var(--ck-color-button-cancel)}.ck-widget.raw-html-embed .raw-html-embed__buttons-wrapper .ck-button:not(:first-child){margin-top:var(--ck-spacing-small)}.ck-widget.raw-html-embed[dir=rtl] .raw-html-embed__buttons-wrapper{left:var(--ck-spacing-standard);right:auto}.ck-widget.raw-html-embed .raw-html-embed__source{box-sizing:border-box;direction:ltr;font-family:monospace;font-size:var(--ck-font-size-base);height:var(--ck-html-embed-source-height);min-width:0;padding:var(--ck-spacing-standard);resize:none;tab-size:4;text-align:left;white-space:pre-wrap;width:var(--ck-html-embed-content-width)}.ck-widget.raw-html-embed .raw-html-embed__source[disabled]{-webkit-text-fill-color:var(--ck-html-embed-source-disabled-color);background:var(--ck-html-embed-source-disabled-background);color:var(--ck-html-embed-source-disabled-color);opacity:1}.ck-widget.raw-html-embed .raw-html-embed__preview{min-height:var(--ck-html-embed-content-min-height);width:var(--ck-html-embed-content-width)}.ck-editor__editable:not(.ck-read-only) .ck-widget.raw-html-embed .raw-html-embed__preview{pointer-events:none}.ck-widget.raw-html-embed .raw-html-embed__preview-content{background-color:var(--ck-color-base-foreground);box-sizing:border-box}.ck-widget.raw-html-embed .raw-html-embed__preview-content>*{margin-left:auto;margin-right:auto}.ck-widget.raw-html-embed .raw-html-embed__preview-placeholder{color:var(--ck-html-embed-source-disabled-color)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-html-embed/theme/htmlembed.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-html-embed/htmlembed.css\"],\"names\":[],\"mappings\":\"AAMA,0BAMC,iBAAkB,CAOlB,iBAAkB,CATlB,gBAAkB,CAMlB,cAAe,CALf,iBAwDD,CA5CC,iCACC,iBAAkB,CAGlB,SACD,CAKA,2DAEC,YAAa,CACb,qBAAsB,CAFtB,iBAGD,CAEA,mDAGC,YAAa,CADb,eAAgB,CADhB,iBAGD,CAEA,2DAOC,wBAAyB,CACzB,kBAAmB,CAFnB,aAAc,CAHd,WAAY,CADZ,iBAAkB,CADlB,UAQD,CAEA,+DAQC,kBAAmB,CAHnB,QAAS,CAET,YAAa,CAEb,sBAAuB,CAPvB,MAAO,CADP,iBAAkB,CAGlB,OAAQ,CADR,KAOD,CC7DD,MACC,kEAAqE,CACrE,kCAAmC,CACnC,2CAA4C,CAC5C,yFAA0F,CAE1F,0EAA2E,CAC3E,6CACD,CAGA,0BAEC,gDAAiD,CADjD,kCA0ID,CAvIC,+DACC,iGACD,CAGA,mCACC,eACD,CAEA,mCACC,gBACD,CAIA,iCAIC,eAA4B,CAG5B,iEAAkE,CAClE,qCAAsC,CAPtC,mCAAoC,CASpC,+BAAgC,CADhC,kCAAmC,CANnC,+BAAgC,CAGhC,kIAAmI,CAJnI,yDAA4D,CAG5D,0GAMD,CAEA,0CACC,SAAU,CACV,gCACD,CAGA,iIACC,gBACD,CAxCD,uFA4CE,sDAAuD,CADvD,KAgGF,CA3IA,6FAkDE,uCAAwC,CADxC,sDAAuD,CADvD,KA2FF,CA3IA,wFAuDE,sDAAuD,CADvD,KAqFF,CA/EC,2DACC,kCACD,CAGA,2DAEC,gCAAiC,CADjC,8BAcD,CAXC,kGACC,iCACD,CAEA,oGACC,mCACD,CAEA,wFACC,kCACD,CAGD,oEACC,+BAAgC,CAChC,UACD,CAGA,kDACC,qBAAsB,CActB,aAAc,CAPd,qBAAsB,CAGtB,kCAAmC,CATnC,yCAA0C,CAG1C,WAAY,CACZ,kCAAmC,CAFnC,WAAY,CAKZ,UAAW,CAKX,eAAgB,CAJhB,oBAAqB,CAPrB,wCAsBD,CARC,4DAKC,kEAAmE,CAJnE,0DAA2D,CAC3D,gDAAiD,CAIjD,SACD,CAID,mDACC,kDAAmD,CACnD,wCAMD,CARA,2FAME,mBAEF,CAEA,2DAEC,gDAAiD,CADjD,qBAOD,CAJC,6DACC,gBAAiB,CACjB,iBACD,CAGD,+DACC,gDACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/* The feature container. */\\n.ck-widget.raw-html-embed {\\n\\t/* Give the embed some air. */\\n\\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\\n\\tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\\n\\tmargin: 0.9em auto;\\n\\tposition: relative;\\n\\tdisplay: flow-root;\\n\\n\\t/* Give the html embed some minimal width in the content to prevent them\\n\\tfrom being \\\"squashed\\\" in tight spaces, e.g. in table cells (https://github.com/ckeditor/ckeditor5/issues/8331) */\\n\\tmin-width: 15em;\\n\\n\\t/* Don't inherit the style, e.g. when in a block quote. */\\n\\tfont-style: normal;\\n\\n\\t/* ----- Emebed label in the upper left corner ----------------------------------------------- */\\n\\n\\t&::before {\\n\\t\\tposition: absolute;\\n\\n\\t\\t/* Make sure the content does not cover the label. */\\n\\t\\tz-index: 1;\\n\\t}\\n\\n\\t/* ----- Emebed internals --------------------------------------------------------------------- */\\n\\n\\t/* The switch mode button wrapper. */\\n\\t& .raw-html-embed__buttons-wrapper {\\n\\t\\tposition: absolute;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t}\\n\\n\\t& .raw-html-embed__preview {\\n\\t\\tposition: relative;\\n\\t\\toverflow: hidden;\\n\\t\\tdisplay: flex;\\n\\t}\\n\\n\\t& .raw-html-embed__preview-content {\\n\\t\\twidth: 100%;\\n\\t\\tposition: relative;\\n\\t\\tmargin: auto;\\n\\n\\t\\t/* Gives spacing to the small renderable elements, so they always cover the placeholder. */\\n\\t\\tdisplay: table;\\n\\t\\tborder-collapse: separate;\\n\\t\\tborder-spacing: 7px;\\n\\t}\\n\\n\\t& .raw-html-embed__preview-placeholder {\\n\\t\\tposition: absolute;\\n\\t\\tleft: 0;\\n\\t\\ttop: 0;\\n\\t\\tright: 0;\\n\\t\\tbottom: 0;\\n\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-html-embed-content-width: calc(100% - 1.5 * var(--ck-icon-size));\\n\\t--ck-html-embed-source-height: 10em;\\n\\t--ck-html-embed-unfocused-outline-width: 1px;\\n\\t--ck-html-embed-content-min-height: calc(var(--ck-icon-size) + var(--ck-spacing-standard));\\n\\n\\t--ck-html-embed-source-disabled-background: var(--ck-color-base-foreground);\\n\\t--ck-html-embed-source-disabled-color: hsl(0deg 0% 45%);\\n}\\n\\n/* The feature container. */\\n.ck-widget.raw-html-embed {\\n\\tfont-size: var(--ck-font-size-base);\\n\\tbackground-color: var(--ck-color-base-foreground);\\n\\n\\t&:not(.ck-widget_selected):not(:hover) {\\n\\t\\toutline: var(--ck-html-embed-unfocused-outline-width) dashed var(--ck-color-widget-blurred-border);\\n\\t}\\n\\n\\t/* HTML embed widget itself should respect UI language direction */\\n\\t&[dir=\\\"ltr\\\"] {\\n\\t\\ttext-align: left;\\n\\t}\\n\\n\\t&[dir=\\\"rtl\\\"] {\\n\\t\\ttext-align: right;\\n\\t}\\n\\n\\t/* ----- Embed label in the upper left corner ----------------------------------------------- */\\n\\n\\t&::before {\\n\\t\\tcontent: attr(data-html-embed-label);\\n\\t\\ttop: calc(-1 * var(--ck-html-embed-unfocused-outline-width));\\n\\t\\tleft: var(--ck-spacing-standard);\\n\\t\\tbackground: hsl(0deg 0% 60%);\\n\\t\\ttransition: background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\\n\\t\\tpadding: calc(var(--ck-spacing-tiny) + var(--ck-html-embed-unfocused-outline-width)) var(--ck-spacing-small) var(--ck-spacing-tiny);\\n\\t\\tborder-radius: 0 0 var(--ck-border-radius) var(--ck-border-radius);\\n\\t\\tcolor: var(--ck-color-base-background);\\n\\t\\tfont-size: var(--ck-font-size-tiny);\\n\\t\\tfont-family: var(--ck-font-face);\\n\\t}\\n\\n\\t&[dir=\\\"rtl\\\"]::before {\\n\\t\\tleft: auto;\\n\\t\\tright: var(--ck-spacing-standard);\\n\\t}\\n\\n\\t/* Make space for label but it only collides in LTR languages */\\n\\t&[dir=\\\"ltr\\\"] .ck-widget__type-around .ck-widget__type-around__button.ck-widget__type-around__button_before {\\n\\t\\tmargin-left: 50px;\\n\\t}\\n\\n\\t@nest .ck.ck-editor__editable.ck-blurred &.ck-widget_selected::before {\\n\\t\\ttop: 0px;\\n\\t\\tpadding: var(--ck-spacing-tiny) var(--ck-spacing-small);\\n\\t}\\n\\n\\t@nest .ck.ck-editor__editable:not(.ck-blurred) &.ck-widget_selected::before {\\n\\t\\ttop: 0;\\n\\t\\tpadding: var(--ck-spacing-tiny) var(--ck-spacing-small);\\n\\t\\tbackground: var(--ck-color-focus-border);\\n\\t}\\n\\n\\t@nest .ck.ck-editor__editable &:not(.ck-widget_selected):hover::before {\\n\\t\\ttop: 0px;\\n\\t\\tpadding: var(--ck-spacing-tiny) var(--ck-spacing-small);\\n\\t}\\n\\n\\t/* ----- Emebed internals --------------------------------------------------------------------- */\\n\\n\\t& .raw-html-embed__content-wrapper {\\n\\t\\tpadding: var(--ck-spacing-standard);\\n\\t}\\n\\n\\t/* The switch mode button wrapper. */\\n\\t& .raw-html-embed__buttons-wrapper {\\n\\t\\ttop: var(--ck-spacing-standard);\\n\\t\\tright: var(--ck-spacing-standard);\\n\\n\\t\\t& .ck-button.raw-html-embed__save-button {\\n\\t\\t\\tcolor: var(--ck-color-button-save);\\n\\t\\t}\\n\\n\\t\\t& .ck-button.raw-html-embed__cancel-button {\\n\\t\\t\\tcolor: var(--ck-color-button-cancel);\\n\\t\\t}\\n\\n\\t\\t& .ck-button:not(:first-child) {\\n\\t\\t\\tmargin-top: var(--ck-spacing-small);\\n\\t\\t}\\n\\t}\\n\\n\\t&[dir=\\\"rtl\\\"] .raw-html-embed__buttons-wrapper {\\n\\t\\tleft: var(--ck-spacing-standard);\\n\\t\\tright: auto;\\n\\t}\\n\\n\\t/* The edit source element. */\\n\\t& .raw-html-embed__source {\\n\\t\\tbox-sizing: border-box;\\n\\t\\theight: var(--ck-html-embed-source-height);\\n\\t\\twidth: var(--ck-html-embed-content-width);\\n\\t\\tresize: none;\\n\\t\\tmin-width: 0;\\n\\t\\tpadding: var(--ck-spacing-standard);\\n\\n\\t\\tfont-family: monospace;\\n\\t\\ttab-size: 4;\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tfont-size: var(--ck-font-size-base); /* Safari needs this. */\\n\\n\\t\\t/* HTML code is direction–agnostic. */\\n\\t\\ttext-align: left;\\n\\t\\tdirection: ltr;\\n\\n\\t\\t&[disabled] {\\n\\t\\t\\tbackground: var(--ck-html-embed-source-disabled-background);\\n\\t\\t\\tcolor: var(--ck-html-embed-source-disabled-color);\\n\\n\\t\\t\\t/* Safari needs this for the proper text color in disabled input (https://github.com/ckeditor/ckeditor5/issues/8320). */\\n\\t\\t\\t-webkit-text-fill-color: var(--ck-html-embed-source-disabled-color);\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n\\n\\t/* The preview data container. */\\n\\t& .raw-html-embed__preview {\\n\\t\\tmin-height: var(--ck-html-embed-content-min-height);\\n\\t\\twidth: var(--ck-html-embed-content-width);\\n\\n\\t\\t/* Disable all mouse interaction as long as the editor is not read–only. */\\n\\t\\t@nest .ck-editor__editable:not(.ck-read-only) & {\\n\\t\\t\\tpointer-events: none;\\n\\t\\t}\\n\\t}\\n\\n\\t& .raw-html-embed__preview-content {\\n\\t\\tbox-sizing: border-box;\\n\\t\\tbackground-color: var(--ck-color-base-foreground);\\n\\n\\t\\t& > * {\\n\\t\\t\\tmargin-left: auto;\\n\\t\\t\\tmargin-right: auto;\\n\\t\\t}\\n\\t}\\n\\n\\t& .raw-html-embed__preview-placeholder {\\n\\t\\tcolor: var(--ck-html-embed-source-disabled-color)\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-content .image{clear:both;display:table;margin:.9em auto;min-width:50px;text-align:center}.ck-content .image img{display:block;margin:0 auto;max-width:100%;min-width:100%}.ck-content .image-inline{align-items:flex-start;display:inline-flex;max-width:100%}.ck-content .image-inline picture{display:flex}.ck-content .image-inline img,.ck-content .image-inline picture{flex-grow:1;flex-shrink:1;max-width:100%}.ck.ck-editor__editable .image>figcaption.ck-placeholder:before{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}.ck.ck-editor__editable .image-inline.ck-widget_selected,.ck.ck-editor__editable .image.ck-widget_selected{z-index:1}.ck.ck-editor__editable .image-inline.ck-widget_selected ::selection{display:none}.ck.ck-editor__editable td .image-inline img,.ck.ck-editor__editable th .image-inline img{max-width:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-image/theme/image.css\"],\"names\":[],\"mappings\":\"AAMC,mBAEC,UAAW,CADX,aAAc,CAOd,gBAAkB,CAGlB,cAAe,CARf,iBAuBD,CAbC,uBAEC,aAAc,CAGd,aAAc,CAGd,cAAe,CAGf,cACD,CAGD,0BAYC,sBAAuB,CANvB,mBAAoB,CAGpB,cAoBD,CAdC,kCACC,YACD,CAGA,gEAGC,WAAY,CACZ,aAAc,CAGd,cACD,CAUD,gEASC,eAAgB,CARhB,oBAAqB,CACrB,qBAAsB,CAQtB,sBAAuB,CAFvB,kBAGD,CAWA,2GACC,SAUD,CAHC,qEACC,YACD,CAOA,0FACC,cACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck-content {\\n\\t& .image {\\n\\t\\tdisplay: table;\\n\\t\\tclear: both;\\n\\t\\ttext-align: center;\\n\\n\\t\\t/* Make sure there is some space between the content and the image. Center image by default. */\\n\\t\\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\\n\\t \\tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\\n\\t\\tmargin: 0.9em auto;\\n\\n\\t\\t/* Make sure the caption will be displayed properly (See: https://github.com/ckeditor/ckeditor5/issues/1870). */\\n\\t\\tmin-width: 50px;\\n\\n\\t\\t& img {\\n\\t\\t\\t/* Prevent unnecessary margins caused by line-height (see #44). */\\n\\t\\t\\tdisplay: block;\\n\\n\\t\\t\\t/* Center the image if its width is smaller than the content's width. */\\n\\t\\t\\tmargin: 0 auto;\\n\\n\\t\\t\\t/* Make sure the image never exceeds the size of the parent container (ckeditor/ckeditor5-ui#67). */\\n\\t\\t\\tmax-width: 100%;\\n\\n\\t\\t\\t/* Make sure the image is never smaller than the parent container (See: https://github.com/ckeditor/ckeditor5/issues/9300). */\\n\\t\\t\\tmin-width: 100%\\n\\t\\t}\\n\\t}\\n\\n\\t& .image-inline {\\n\\t\\t/*\\n\\t\\t * Normally, the .image-inline would have \\\"display: inline-block\\\" and \\\"img { width: 100% }\\\" (to follow the wrapper while resizing).\\n\\t\\t * Unfortunately, together with \\\"srcset\\\", it gets automatically stretched up to the width of the editing root.\\n\\t\\t * This strange behavior does not happen with inline-flex.\\n\\t\\t */\\n\\t\\tdisplay: inline-flex;\\n\\n\\t\\t/* While being resized, don't allow the image to exceed the width of the editing root. */\\n\\t\\tmax-width: 100%;\\n\\n\\t\\t/* This is required by Safari to resize images in a sensible way. Without this, the browser breaks the ratio. */\\n\\t\\talign-items: flex-start;\\n\\n\\t\\t/* When the picture is present it must act as a flex container to let the img resize properly */\\n\\t\\t& picture {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t}\\n\\n\\t\\t/* When the picture is present, it must act like a resizable img. */\\n\\t\\t& picture,\\n\\t\\t& img {\\n\\t\\t\\t/* This is necessary for the img to span the entire .image-inline wrapper and to resize properly. */\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tflex-shrink: 1;\\n\\n\\t\\t\\t/* Prevents overflowing the editing root boundaries when an inline image is very wide. */\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck.ck-editor__editable {\\n\\t/*\\n\\t * Inhertit the content styles padding of the <figcaption> in case the integration overrides `text-align: center`\\n\\t * of `.image` (e.g. to the left/right). This ensures the placeholder stays at the padding just like the native\\n\\t * caret does, and not at the edge of <figcaption>.\\n\\t */\\n\\t& .image > figcaption.ck-placeholder::before {\\n\\t\\tpadding-left: inherit;\\n\\t\\tpadding-right: inherit;\\n\\n\\t\\t/*\\n\\t\\t * Make sure the image caption placeholder doesn't overflow the placeholder area.\\n\\t\\t * See https://github.com/ckeditor/ckeditor5/issues/9162.\\n\\t\\t */\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\n\\n\\t/*\\n\\t * Make sure the selected inline image always stays on top of its siblings.\\n\\t * See https://github.com/ckeditor/ckeditor5/issues/9108.\\n\\t */\\n\\t& .image.ck-widget_selected {\\n\\t\\tz-index: 1;\\n\\t}\\n\\n\\t& .image-inline.ck-widget_selected {\\n\\t\\tz-index: 1;\\n\\n\\t\\t/*\\n\\t\\t * Make sure the native browser selection style is not displayed.\\n\\t\\t * Inline image widgets have their own styles for the selected state and\\n\\t\\t * leaving this up to the browser is asking for a visual collision.\\n\\t\\t */\\n\\t\\t& ::selection {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\n\\t/* The inline image nested in the table should have its original size if not resized.\\n\\tSee https://github.com/ckeditor/ckeditor5/issues/9117. */\\n\\t& td,\\n\\t& th {\\n\\t\\t& .image-inline img {\\n\\t\\t\\tmax-width: none;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-color-image-caption-background:#f7f7f7;--ck-color-image-caption-text:#333;--ck-color-image-caption-highligted-background:#fd0}.ck-content .image>figcaption{background-color:var(--ck-color-image-caption-background);caption-side:bottom;color:var(--ck-color-image-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;word-break:break-word}.ck.ck-editor__editable .image>figcaption.image__caption_highlighted{animation:ck-image-caption-highlight .6s ease-out}@keyframes ck-image-caption-highlight{0%{background-color:var(--ck-color-image-caption-highligted-background)}to{background-color:var(--ck-color-image-caption-background)}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-image/theme/imagecaption.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,2CAAoD,CACpD,kCAA8C,CAC9C,mDACD,CAGA,8BAKC,yDAA0D,CAH1D,mBAAoB,CAEpB,wCAAyC,CAHzC,qBAAsB,CAMtB,eAAgB,CAChB,mBAAoB,CAFpB,YAAa,CAHb,qBAMD,CAGA,qEACC,iDACD,CAEA,sCACC,GACC,oEACD,CAEA,GACC,yDACD,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-color-image-caption-background: hsl(0, 0%, 97%);\\n\\t--ck-color-image-caption-text: hsl(0, 0%, 20%);\\n\\t--ck-color-image-caption-highligted-background: hsl(52deg 100% 50%);\\n}\\n\\n/* Content styles */\\n.ck-content .image > figcaption {\\n\\tdisplay: table-caption;\\n\\tcaption-side: bottom;\\n\\tword-break: break-word;\\n\\tcolor: var(--ck-color-image-caption-text);\\n\\tbackground-color: var(--ck-color-image-caption-background);\\n\\tpadding: .6em;\\n\\tfont-size: .75em;\\n\\toutline-offset: -1px;\\n}\\n\\n/* Editing styles */\\n.ck.ck-editor__editable .image > figcaption.image__caption_highlighted {\\n\\tanimation: ck-image-caption-highlight .6s ease-out;\\n}\\n\\n@keyframes ck-image-caption-highlight {\\n\\t0% {\\n\\t\\tbackground-color: var(--ck-color-image-caption-highligted-background);\\n\\t}\\n\\n\\t100% {\\n\\t\\tbackground-color: var(--ck-color-image-caption-background);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-image-insert__panel{padding:var(--ck-spacing-large)}.ck.ck-image-insert__ck-finder-button{border:1px solid #ccc;border-radius:var(--ck-border-radius);display:block;margin:var(--ck-spacing-standard) auto;width:100%}.ck.ck-splitbutton>.ck-file-dialog-button.ck-button{border:none;margin:0;padding:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-image/theme/imageinsert.css\"],\"names\":[],\"mappings\":\"AAKA,2BACC,+BACD,CAEA,sCAIC,qBAAiC,CACjC,qCAAsC,CAJtC,aAAc,CAEd,sCAAuC,CADvC,UAID,CAGA,oDAGC,WAAY,CADZ,QAAS,CADT,SAGD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-image-insert__panel {\\n\\tpadding: var(--ck-spacing-large);\\n}\\n\\n.ck.ck-image-insert__ck-finder-button {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\tmargin: var(--ck-spacing-standard) auto;\\n\\tborder: 1px solid hsl(0, 0%, 80%);\\n\\tborder-radius: var(--ck-border-radius);\\n}\\n\\n/* https://github.com/ckeditor/ckeditor5/issues/7986 */\\n.ck.ck-splitbutton > .ck-file-dialog-button.ck-button {\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\tborder: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-image-insert-form:focus{outline:none}.ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-image-insert-form__action-row{margin-top:var(--ck-spacing-standard)}.ck.ck-form__row.ck-image-insert-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-image-insert-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row.ck-image-insert-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-image/theme/imageinsertformrowview.css\"],\"names\":[],\"mappings\":\"AAMC,+BAEC,YACD,CAGD,iBACC,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAmBD,CAhBC,iCACC,WACD,CAEA,kDACC,qCAUD,CARC,sIAEC,sBACD,CAEA,+EACC,0BACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-image-insert-form {\\n\\t&:focus {\\n\\t\\t/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */\\n\\t\\toutline: none;\\n\\t}\\n}\\n\\n.ck.ck-form__row {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-wrap: nowrap;\\n\\tjustify-content: space-between;\\n\\n\\t/* Ignore labels that work as fieldset legends */\\n\\t& > *:not(.ck-label) {\\n\\t\\tflex-grow: 1;\\n\\t}\\n\\n\\t&.ck-image-insert-form__action-row {\\n\\t\\tmargin-top: var(--ck-spacing-standard);\\n\\n\\t\\t& .ck-button-save,\\n\\t\\t& .ck-button-cancel {\\n\\t\\t\\tjustify-content: center;\\n\\t\\t}\\n\\n\\t\\t& .ck-button .ck-button__label {\\n\\t\\t\\tcolor: var(--ck-color-text);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-content .image.image_resized{box-sizing:border-box;display:block;max-width:100%}.ck-content .image.image_resized img{width:100%}.ck-content .image.image_resized>figcaption{display:block}.ck.ck-editor__editable td .image-inline.image_resized img,.ck.ck-editor__editable th .image-inline.image_resized img{max-width:100%}[dir=ltr] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{margin-left:var(--ck-spacing-standard)}.ck.ck-dropdown .ck-button.ck-resize-image-button .ck-button__label{width:4em}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-image/theme/imageresize.css\"],\"names\":[],\"mappings\":\"AAKA,iCAQC,qBAAsB,CADtB,aAAc,CANd,cAkBD,CATC,qCAEC,UACD,CAEA,4CAEC,aACD,CAQC,sHACC,cACD,CAIF,oFACC,uCACD,CAEA,oFACC,sCACD,CAEA,oEACC,SACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck-content .image.image_resized {\\n\\tmax-width: 100%;\\n\\t/*\\n\\tThe `<figure>` element for resized images must not use `display:table` as browsers do not support `max-width` for it well.\\n\\tSee https://stackoverflow.com/questions/4019604/chrome-safari-ignoring-max-width-in-table/14420691#14420691 for more.\\n\\tFortunately, since we control the width, there is no risk that the image will look bad.\\n\\t*/\\n\\tdisplay: block;\\n\\tbox-sizing: border-box;\\n\\n\\t& img {\\n\\t\\t/* For resized images it is the `<figure>` element that determines the image width. */\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t& > figcaption {\\n\\t\\t/* The `<figure>` element uses `display:block`, so `<figcaption>` also has to. */\\n\\t\\tdisplay: block;\\n\\t}\\n}\\n\\n.ck.ck-editor__editable {\\n\\t/* The resized inline image nested in the table should respect its parent size.\\n\\tSee https://github.com/ckeditor/ckeditor5/issues/9117. */\\n\\t& td,\\n\\t& th {\\n\\t\\t& .image-inline.image_resized img {\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t}\\n\\t}\\n}\\n\\n[dir=\\\"ltr\\\"] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon {\\n\\tmargin-right: var(--ck-spacing-standard);\\n}\\n\\n[dir=\\\"rtl\\\"] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon {\\n\\tmargin-left: var(--ck-spacing-standard);\\n}\\n\\n.ck.ck-dropdown .ck-button.ck-resize-image-button .ck-button__label {\\n\\twidth: 4em;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-image-style-spacing:1.5em;--ck-inline-image-style-spacing:calc(var(--ck-image-style-spacing)/2)}.ck-content .image-style-block-align-left,.ck-content .image-style-block-align-right{max-width:calc(100% - var(--ck-image-style-spacing))}.ck-content .image-style-align-left,.ck-content .image-style-align-right{clear:none}.ck-content .image-style-side{float:right;margin-left:var(--ck-image-style-spacing);max-width:50%}.ck-content .image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image-style-align-center{margin-left:auto;margin-right:auto}.ck-content .image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}.ck-content .image-style-block-align-right{margin-left:auto;margin-right:0}.ck-content .image-style-block-align-left{margin-left:0;margin-right:auto}.ck-content p+.image-style-align-left,.ck-content p+.image-style-align-right,.ck-content p+.image-style-side{margin-top:0}.ck-content .image-inline.image-style-align-left,.ck-content .image-inline.image-style-align-right{margin-bottom:var(--ck-inline-image-style-spacing);margin-top:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-left{margin-right:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-right{margin-left:var(--ck-inline-image-style-spacing)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-background)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after{display:none}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-hover-background)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-image/theme/imagestyle.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,8BAA+B,CAC/B,qEACD,CAMC,qFAEC,oDACD,CAIA,yEAEC,UACD,CAEA,8BACC,WAAY,CACZ,yCAA0C,CAC1C,aACD,CAEA,oCACC,UAAW,CACX,0CACD,CAEA,sCACC,gBAAiB,CACjB,iBACD,CAEA,qCACC,WAAY,CACZ,yCACD,CAEA,2CAEC,gBAAiB,CADjB,cAED,CAEA,0CACC,aAAc,CACd,iBACD,CAGA,6GAGC,YACD,CAGC,mGAGC,kDAAmD,CADnD,+CAED,CAEA,iDACC,iDACD,CAEA,kDACC,gDACD,CAUC,0lBAGC,qDAKD,CAHC,8nBACC,YACD,CAKD,oVAGC,2DACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-image-style-spacing: 1.5em;\\n\\t--ck-inline-image-style-spacing: calc(var(--ck-image-style-spacing) / 2);\\n}\\n\\n.ck-content {\\n\\t/* Provides a minimal side margin for the left and right aligned images, so that the user has a visual feedback\\n\\tconfirming successful application of the style if image width exceeds the editor's size.\\n\\tSee https://github.com/ckeditor/ckeditor5/issues/9342 */\\n\\t& .image-style-block-align-left,\\n\\t& .image-style-block-align-right {\\n\\t\\tmax-width: calc(100% - var(--ck-image-style-spacing));\\n\\t}\\n\\n\\t/* Allows displaying multiple floating images in the same line.\\n\\tSee https://github.com/ckeditor/ckeditor5/issues/9183#issuecomment-804988132 */\\n\\t& .image-style-align-left,\\n\\t& .image-style-align-right {\\n\\t\\tclear: none;\\n\\t}\\n\\n\\t& .image-style-side {\\n\\t\\tfloat: right;\\n\\t\\tmargin-left: var(--ck-image-style-spacing);\\n\\t\\tmax-width: 50%;\\n\\t}\\n\\n\\t& .image-style-align-left {\\n\\t\\tfloat: left;\\n\\t\\tmargin-right: var(--ck-image-style-spacing);\\n\\t}\\n\\n\\t& .image-style-align-center {\\n\\t\\tmargin-left: auto;\\n\\t\\tmargin-right: auto;\\n\\t}\\n\\n\\t& .image-style-align-right {\\n\\t\\tfloat: right;\\n\\t\\tmargin-left: var(--ck-image-style-spacing);\\n\\t}\\n\\n\\t& .image-style-block-align-right {\\n\\t\\tmargin-right: 0;\\n\\t\\tmargin-left: auto;\\n\\t}\\n\\n\\t& .image-style-block-align-left {\\n\\t\\tmargin-left: 0;\\n\\t\\tmargin-right: auto;\\n\\t}\\n\\n\\t/* Simulates margin collapsing with the preceding paragraph, which does not work for the floating elements. */\\n\\t& p + .image-style-align-left,\\n\\t& p + .image-style-align-right,\\n\\t& p + .image-style-side {\\n\\t\\tmargin-top: 0;\\n\\t}\\n\\n\\t& .image-inline {\\n\\t\\t&.image-style-align-left,\\n\\t\\t&.image-style-align-right {\\n\\t\\t\\tmargin-top: var(--ck-inline-image-style-spacing);\\n\\t\\t\\tmargin-bottom: var(--ck-inline-image-style-spacing);\\n\\t\\t}\\n\\n\\t\\t&.image-style-align-left {\\n\\t\\t\\tmargin-right: var(--ck-inline-image-style-spacing);\\n\\t\\t}\\n\\n\\t\\t&.image-style-align-right {\\n\\t\\t\\tmargin-left: var(--ck-inline-image-style-spacing);\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck.ck-splitbutton {\\n\\t/* The button should display as a regular drop-down if the action button\\n\\tis forced to fire the same action as the arrow button. */\\n\\t&.ck-splitbutton_flatten {\\n\\t\\t&:hover,\\n\\t\\t&.ck-splitbutton_open {\\n\\t\\t\\t& > .ck-splitbutton__action:not(.ck-disabled),\\n\\t\\t\\t& > .ck-splitbutton__arrow:not(.ck-disabled),\\n\\t\\t\\t& > .ck-splitbutton__arrow:not(.ck-disabled):not(:hover) {\\n\\t\\t\\t\\tbackground-color: var(--ck-color-button-on-background);\\n\\n\\t\\t\\t\\t&::after {\\n\\t\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&.ck-splitbutton_open:hover {\\n\\t\\t\\t& > .ck-splitbutton__action:not(.ck-disabled),\\n\\t\\t\\t& > .ck-splitbutton__arrow:not(.ck-disabled),\\n\\t\\t\\t& > .ck-splitbutton__arrow:not(.ck-disabled):not(:hover) {\\n\\t\\t\\t\\tbackground-color: var(--ck-color-button-on-hover-background);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-image-upload-complete-icon{border-radius:50%;display:block;position:absolute;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);z-index:1}.ck-image-upload-complete-icon:after{content:\\\"\\\";position:absolute}:root{--ck-color-image-upload-icon:#fff;--ck-color-image-upload-icon-background:#008a00;--ck-image-upload-icon-size:20;--ck-image-upload-icon-width:2px;--ck-image-upload-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck-image-upload-complete-icon{animation-delay:0ms,3s;animation-duration:.5s,.5s;animation-fill-mode:forwards,forwards;animation-name:ck-upload-complete-icon-show,ck-upload-complete-icon-hide;background:var(--ck-color-image-upload-icon-background);font-size:calc(1px*var(--ck-image-upload-icon-size));height:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size));opacity:0;overflow:hidden;width:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size))}.ck-image-upload-complete-icon:after{animation-delay:.5s;animation-duration:.5s;animation-fill-mode:forwards;animation-name:ck-upload-complete-icon-check;border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);box-sizing:border-box;height:0;left:25%;opacity:0;top:50%;transform:scaleX(-1) rotate(135deg);transform-origin:left top;width:0}@keyframes ck-upload-complete-icon-show{0%{opacity:0}to{opacity:1}}@keyframes ck-upload-complete-icon-hide{0%{opacity:1}to{opacity:0}}@keyframes ck-upload-complete-icon-check{0%{height:0;opacity:1;width:0}33%{height:0;width:.3em}to{height:.45em;opacity:1;width:.3em}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-image/theme/imageuploadicon.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadicon.css\"],\"names\":[],\"mappings\":\"AAKA,+BAUC,iBAAkB,CATlB,aAAc,CACd,iBAAkB,CAOlB,sCAAwC,CADxC,oCAAsC,CAGtC,SAMD,CAJC,qCACC,UAAW,CACX,iBACD,CChBD,MACC,iCAA8C,CAC9C,+CAA4D,CAG5D,8BAA+B,CAC/B,gCAAiC,CACjC,4DACD,CAEA,+BAWC,sBAA4B,CAN5B,0BAAgC,CADhC,qCAAuC,CADvC,wEAA0E,CAD1E,uDAAwD,CAMxD,oDAAuD,CAWvD,oFAAuF,CAlBvF,SAAU,CAgBV,eAAgB,CAChB,mFA0BD,CAtBC,qCAgBC,mBAAsB,CADtB,sBAAyB,CAEzB,4BAA6B,CAH7B,4CAA6C,CAF7C,sFAAuF,CADvF,oFAAqF,CASrF,qBAAsB,CAdtB,QAAS,CAJT,QAAS,CAGT,SAAU,CADV,OAAQ,CAKR,mCAAoC,CACpC,yBAA0B,CAH1B,OAcD,CAGD,wCACC,GACC,SACD,CAEA,GACC,SACD,CACD,CAEA,wCACC,GACC,SACD,CAEA,GACC,SACD,CACD,CAEA,yCACC,GAGC,QAAS,CAFT,SAAU,CACV,OAED,CACA,IAEC,QAAS,CADT,UAED,CACA,GAGC,YAAc,CAFd,SAAU,CACV,UAED,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck-image-upload-complete-icon {\\n\\tdisplay: block;\\n\\tposition: absolute;\\n\\n\\t/*\\n\\t * Smaller images should have the icon closer to the border.\\n\\t * Match the icon position with the linked image indicator brought by the link image feature.\\n\\t */\\n\\ttop: min(var(--ck-spacing-medium), 6%);\\n\\tright: min(var(--ck-spacing-medium), 6%);\\n\\tborder-radius: 50%;\\n\\tz-index: 1;\\n\\n\\t&::after {\\n\\t\\tcontent: \\\"\\\";\\n\\t\\tposition: absolute;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-color-image-upload-icon: hsl(0, 0%, 100%);\\n\\t--ck-color-image-upload-icon-background: hsl(120, 100%, 27%);\\n\\n\\t/* Match the icon size with the linked image indicator brought by the link image feature. */\\n\\t--ck-image-upload-icon-size: 20;\\n\\t--ck-image-upload-icon-width: 2px;\\n\\t--ck-image-upload-icon-is-visible: clamp(0px, 100% - 50px, 1px);\\n}\\n\\n.ck-image-upload-complete-icon {\\n\\topacity: 0;\\n\\tbackground: var(--ck-color-image-upload-icon-background);\\n\\tanimation-name: ck-upload-complete-icon-show, ck-upload-complete-icon-hide;\\n\\tanimation-fill-mode: forwards, forwards;\\n\\tanimation-duration: 500ms, 500ms;\\n\\n\\t/* To make animation scalable. */\\n\\tfont-size: calc(1px * var(--ck-image-upload-icon-size));\\n\\n\\t/* Hide completed upload icon after 3 seconds. */\\n\\tanimation-delay: 0ms, 3000ms;\\n\\n\\t/*\\n\\t * Use CSS math to simulate container queries.\\n\\t * https://css-tricks.com/the-raven-technique-one-step-closer-to-container-queries/#what-about-showing-and-hiding-things\\n\\t */\\n\\toverflow: hidden;\\n\\twidth: calc(var(--ck-image-upload-icon-is-visible) * var(--ck-image-upload-icon-size));\\n\\theight: calc(var(--ck-image-upload-icon-is-visible) * var(--ck-image-upload-icon-size));\\n\\n\\t/* This is check icon element made from border-width mixed with animations. */\\n\\t&::after {\\n\\t\\t/* Because of border transformation we need to \\\"hard code\\\" left position. */\\n\\t\\tleft: 25%;\\n\\n\\t\\ttop: 50%;\\n\\t\\topacity: 0;\\n\\t\\theight: 0;\\n\\t\\twidth: 0;\\n\\n\\t\\ttransform: scaleX(-1) rotate(135deg);\\n\\t\\ttransform-origin: left top;\\n\\t\\tborder-top: var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);\\n\\t\\tborder-right: var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);\\n\\n\\t\\tanimation-name: ck-upload-complete-icon-check;\\n\\t\\tanimation-duration: 500ms;\\n\\t\\tanimation-delay: 500ms;\\n\\t\\tanimation-fill-mode: forwards;\\n\\n\\t\\t/* #1095. While reset is not providing proper box-sizing for pseudoelements, we need to handle it. */\\n\\t\\tbox-sizing: border-box;\\n\\t}\\n}\\n\\n@keyframes ck-upload-complete-icon-show {\\n\\tfrom {\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\tto {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n@keyframes ck-upload-complete-icon-hide {\\n\\tfrom {\\n\\t\\topacity: 1;\\n\\t}\\n\\n\\tto {\\n\\t\\topacity: 0;\\n\\t}\\n}\\n\\n@keyframes ck-upload-complete-icon-check {\\n\\t0% {\\n\\t\\topacity: 1;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t}\\n\\t33% {\\n\\t\\twidth: 0.3em;\\n\\t\\theight: 0;\\n\\t}\\n\\t100% {\\n\\t\\topacity: 1;\\n\\t\\twidth: 0.3em;\\n\\t\\theight: 0.45em;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck .ck-upload-placeholder-loader{align-items:center;display:flex;justify-content:center;left:0;position:absolute;top:0}.ck .ck-upload-placeholder-loader:before{content:\\\"\\\";position:relative}:root{--ck-color-upload-placeholder-loader:#b3b3b3;--ck-upload-placeholder-loader-size:32px;--ck-upload-placeholder-image-aspect-ratio:2.8}.ck .ck-image-upload-placeholder{margin:0;width:100%}.ck .ck-image-upload-placeholder.image-inline{width:calc(var(--ck-upload-placeholder-loader-size)*2*var(--ck-upload-placeholder-image-aspect-ratio))}.ck .ck-image-upload-placeholder img{aspect-ratio:var(--ck-upload-placeholder-image-aspect-ratio)}.ck .ck-upload-placeholder-loader{height:100%;width:100%}.ck .ck-upload-placeholder-loader:before{animation:ck-upload-placeholder-loader 1s linear infinite;border-radius:50%;border-right:2px solid transparent;border-top:3px solid var(--ck-color-upload-placeholder-loader);height:var(--ck-upload-placeholder-loader-size);width:var(--ck-upload-placeholder-loader-size)}@keyframes ck-upload-placeholder-loader{to{transform:rotate(1turn)}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-image/theme/imageuploadloader.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadloader.css\"],\"names\":[],\"mappings\":\"AAKA,kCAGC,kBAAmB,CADnB,YAAa,CAEb,sBAAuB,CAEvB,MAAO,CALP,iBAAkB,CAIlB,KAOD,CAJC,yCACC,UAAW,CACX,iBACD,CCXD,MACC,4CAAqD,CACrD,wCAAyC,CACzC,8CACD,CAEA,iCAGC,QAAS,CADT,UAgBD,CAbC,8CACC,sGACD,CAEA,qCAOC,4DACD,CAGD,kCAEC,WAAY,CADZ,UAWD,CARC,yCAMC,yDAA0D,CAH1D,iBAAkB,CAElB,kCAAmC,CADnC,8DAA+D,CAF/D,+CAAgD,CADhD,8CAMD,CAGD,wCACC,GACC,uBACD,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck .ck-upload-placeholder-loader {\\n\\tposition: absolute;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\n\\t&::before {\\n\\t\\tcontent: '';\\n\\t\\tposition: relative;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-color-upload-placeholder-loader: hsl(0, 0%, 70%);\\n\\t--ck-upload-placeholder-loader-size: 32px;\\n\\t--ck-upload-placeholder-image-aspect-ratio: 2.8;\\n}\\n\\n.ck .ck-image-upload-placeholder {\\n\\t/* We need to control the full width of the SVG gray background. */\\n\\twidth: 100%;\\n\\tmargin: 0;\\n\\n\\t&.image-inline {\\n\\t\\twidth: calc( 2 * var(--ck-upload-placeholder-loader-size) * var(--ck-upload-placeholder-image-aspect-ratio) );\\n\\t}\\n\\n\\t& img {\\n\\t\\t/*\\n\\t\\t * This is an arbitrary aspect for a 1x1 px GIF to display to the user. Not too tall, not too short.\\n\\t\\t * There's nothing special about this number except that it should make the image placeholder look like\\n\\t\\t * a real image during this short period after the upload started and before the image was read from the\\n\\t\\t * file system (and a rich preview was loaded).\\n\\t\\t */\\n\\t\\taspect-ratio: var(--ck-upload-placeholder-image-aspect-ratio);\\n\\t}\\n}\\n\\n.ck .ck-upload-placeholder-loader {\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\n\\t&::before {\\n\\t\\twidth: var(--ck-upload-placeholder-loader-size);\\n\\t\\theight: var(--ck-upload-placeholder-loader-size);\\n\\t\\tborder-radius: 50%;\\n\\t\\tborder-top: 3px solid var(--ck-color-upload-placeholder-loader);\\n\\t\\tborder-right: 2px solid transparent;\\n\\t\\tanimation: ck-upload-placeholder-loader 1s linear infinite;\\n\\t}\\n}\\n\\n@keyframes ck-upload-placeholder-loader {\\n\\tto {\\n\\t\\ttransform: rotate( 360deg );\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-editor__editable .image,.ck.ck-editor__editable .image-inline{position:relative}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{left:0;position:absolute;top:0}.ck.ck-editor__editable .image-inline.ck-appear,.ck.ck-editor__editable .image.ck-appear{animation:fadeIn .7s}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{background:var(--ck-color-upload-bar-background);height:2px;transition:width .1s;width:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-image/theme/imageuploadprogress.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadprogress.css\"],\"names\":[],\"mappings\":\"AAMC,qEAEC,iBACD,CAGA,uGAIC,MAAO,CAFP,iBAAkB,CAClB,KAED,CCRC,yFACC,oBACD,CAID,uGAIC,gDAAiD,CAFjD,UAAW,CAGX,oBAAuB,CAFvB,OAGD,CAGD,kBACC,GAAO,SAAY,CACnB,GAAO,SAAY,CACpB\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-editor__editable {\\n\\t& .image,\\n\\t& .image-inline {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t/* Upload progress bar. */\\n\\t& .image .ck-progress-bar,\\n\\t& .image-inline .ck-progress-bar {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-editor__editable {\\n\\t& .image,\\n\\t& .image-inline {\\n\\t\\t/* Showing animation. */\\n\\t\\t&.ck-appear {\\n\\t\\t\\tanimation: fadeIn 700ms;\\n\\t\\t}\\n\\t}\\n\\n\\t/* Upload progress bar. */\\n\\t& .image .ck-progress-bar,\\n\\t& .image-inline .ck-progress-bar {\\n\\t\\theight: 2px;\\n\\t\\twidth: 0;\\n\\t\\tbackground: var(--ck-color-upload-bar-background);\\n\\t\\ttransition: width 100ms;\\n\\t}\\n}\\n\\n@keyframes fadeIn {\\n\\tfrom { opacity: 0; }\\n\\tto { opacity: 1; }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-text-alternative-form{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-text-alternative-form .ck-labeled-field-view{display:inline-block}.ck.ck-text-alternative-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-text-alternative-form{flex-wrap:wrap}.ck.ck-text-alternative-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-text-alternative-form .ck-button{flex-basis:50%}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-image/theme/textalternativeform.css\",\"webpack://./../ckeditor5-ui/theme/mixins/_rwd.css\"],\"names\":[],\"mappings\":\"AAOA,6BACC,YAAa,CACb,kBAAmB,CACnB,gBAqBD,CAnBC,oDACC,oBACD,CAEA,uCACC,YACD,CCZA,oCDCD,6BAcE,cAUF,CARE,oDACC,eACD,CAEA,wCACC,cACD,CCrBD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\\\";\\n\\n.ck.ck-text-alternative-form {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-wrap: nowrap;\\n\\n\\t& .ck-labeled-field-view {\\n\\t\\tdisplay: inline-block;\\n\\t}\\n\\n\\t& .ck-label {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t@mixin ck-media-phone {\\n\\t\\tflex-wrap: wrap;\\n\\n\\t\\t& .ck-labeled-field-view {\\n\\t\\t\\tflex-basis: 100%;\\n\\t\\t}\\n\\n\\t\\t& .ck-button {\\n\\t\\t\\tflex-basis: 50%;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@define-mixin ck-media-phone {\\n\\t@media screen and (max-width: 600px) {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck .ck-link_selected{background:var(--ck-color-link-selected-background)}.ck .ck-link_selected span.image-inline{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-link-selected-background)}.ck .ck-fake-link-selection{background:var(--ck-color-link-fake-selection)}.ck .ck-fake-link-selection_collapsed{border-right:1px solid var(--ck-color-base-text);height:100%;margin-right:-1px;outline:1px solid hsla(0,0%,100%,.5)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-link/link.css\"],\"names\":[],\"mappings\":\"AAMA,sBACC,mDAMD,CAHC,wCACC,yFACD,CAOD,4BACC,8CACD,CAGA,sCAEC,gDAAiD,CADjD,WAAY,CAEZ,iBAAkB,CAClB,oCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/* Class added to span element surrounding currently selected link. */\\n.ck .ck-link_selected {\\n\\tbackground: var(--ck-color-link-selected-background);\\n\\n\\t/* Give linked inline images some outline to let the user know they are also part of the link. */\\n\\t& span.image-inline {\\n\\t\\toutline: var(--ck-widget-outline-thickness) solid var(--ck-color-link-selected-background);\\n\\t}\\n}\\n\\n/*\\n * Classes used by the \\\"fake visual selection\\\" displayed in the content when an input\\n * in the link UI has focus (the browser does not render the native selection in this state).\\n */\\n.ck .ck-fake-link-selection {\\n\\tbackground: var(--ck-color-link-fake-selection);\\n}\\n\\n/* A collapsed fake visual selection. */\\n.ck .ck-fake-link-selection_collapsed {\\n\\theight: 100%;\\n\\tborder-right: 1px solid var(--ck-color-base-text);\\n\\tmargin-right: -1px;\\n\\toutline: solid 1px hsla(0, 0%, 100%, .5);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-link-actions{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-link-actions .ck-link-actions__preview{display:inline-block}.ck.ck-link-actions .ck-link-actions__preview .ck-button__label{overflow:hidden}@media screen and (max-width:600px){.ck.ck-link-actions{flex-wrap:wrap}.ck.ck-link-actions .ck-link-actions__preview{flex-basis:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){flex-basis:50%}}.ck.ck-link-actions .ck-button.ck-link-actions__preview{padding-left:0;padding-right:0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{color:var(--ck-color-link-default);cursor:pointer;max-width:var(--ck-input-width);min-width:3em;padding:0 var(--ck-spacing-medium);text-align:center;text-overflow:ellipsis}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label:hover{text-decoration:underline}.ck.ck-link-actions .ck-button.ck-link-actions__preview,.ck.ck-link-actions .ck-button.ck-link-actions__preview:active,.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus,.ck.ck-link-actions .ck-button.ck-link-actions__preview:hover{background:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:active{box-shadow:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus .ck-button__label{text-decoration:underline}[dir=ltr] .ck.ck-link-actions .ck-button:not(:first-child),[dir=rtl] .ck.ck-link-actions .ck-button:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-actions .ck-button.ck-link-actions__preview{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{max-width:100%;min-width:0}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview),[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-link/theme/linkactions.css\",\"webpack://./../ckeditor5-ui/theme/mixins/_rwd.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-link/linkactions.css\"],\"names\":[],\"mappings\":\"AAOA,oBACC,YAAa,CACb,kBAAmB,CACnB,gBAqBD,CAnBC,8CACC,oBAKD,CAHC,gEACC,eACD,CCXD,oCDCD,oBAcE,cAUF,CARE,8CACC,eACD,CAEA,8DACC,cACD,CCrBD,CCIA,wDACC,cAAe,CACf,eAmCD,CAjCC,0EAEC,kCAAmC,CAEnC,cAAe,CAIf,+BAAgC,CAChC,aAAc,CARd,kCAAmC,CASnC,iBAAkB,CAPlB,sBAYD,CAHC,gFACC,yBACD,CAGD,mPAIC,eACD,CAEA,+DACC,eACD,CAGC,gFACC,yBACD,CAWD,qHACC,sCACD,CDtDD,oCC0DC,wDACC,8DAMD,CAJC,0EAEC,cAAe,CADf,WAED,CAGD,gJAME,aAEF,CDzED\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\\\";\\n\\n.ck.ck-link-actions {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-wrap: nowrap;\\n\\n\\t& .ck-link-actions__preview {\\n\\t\\tdisplay: inline-block;\\n\\n\\t\\t& .ck-button__label {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t}\\n\\t}\\n\\n\\t@mixin ck-media-phone {\\n\\t\\tflex-wrap: wrap;\\n\\n\\t\\t& .ck-link-actions__preview {\\n\\t\\t\\tflex-basis: 100%;\\n\\t\\t}\\n\\n\\t\\t& .ck-button:not(.ck-link-actions__preview) {\\n\\t\\t\\tflex-basis: 50%;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@define-mixin ck-media-phone {\\n\\t@media screen and (max-width: 600px) {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n@import \\\"../mixins/_focus.css\\\";\\n@import \\\"../mixins/_shadow.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\\\";\\n\\n.ck.ck-link-actions {\\n\\t& .ck-button.ck-link-actions__preview {\\n\\t\\tpadding-left: 0;\\n\\t\\tpadding-right: 0;\\n\\n\\t\\t& .ck-button__label {\\n\\t\\t\\tpadding: 0 var(--ck-spacing-medium);\\n\\t\\t\\tcolor: var(--ck-color-link-default);\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t/* Match the box model of the link editor form's input so the balloon\\n\\t\\t\\tdoes not change width when moving between actions and the form. */\\n\\t\\t\\tmax-width: var(--ck-input-width);\\n\\t\\t\\tmin-width: 3em;\\n\\t\\t\\ttext-align: center;\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\ttext-decoration: underline;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&,\\n\\t\\t&:hover,\\n\\t\\t&:focus,\\n\\t\\t&:active {\\n\\t\\t\\tbackground: none;\\n\\t\\t}\\n\\n\\t\\t&:active {\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t}\\n\\n\\t\\t&:focus {\\n\\t\\t\\t& .ck-button__label {\\n\\t\\t\\t\\ttext-decoration: underline;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t@mixin ck-dir ltr {\\n\\t\\t& .ck-button:not(:first-child) {\\n\\t\\t\\tmargin-left: var(--ck-spacing-standard);\\n\\t\\t}\\n\\t}\\n\\n\\t@mixin ck-dir rtl {\\n\\t\\t& .ck-button:not(:last-child) {\\n\\t\\t\\tmargin-left: var(--ck-spacing-standard);\\n\\t\\t}\\n\\t}\\n\\n\\t@mixin ck-media-phone {\\n\\t\\t& .ck-button.ck-link-actions__preview {\\n\\t\\t\\tmargin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;\\n\\n\\t\\t\\t& .ck-button__label {\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\tmax-width: 100%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t& .ck-button:not(.ck-link-actions__preview) {\\n\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\tmargin-left: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tmargin-left: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-link-form{display:flex}.ck.ck-link-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-link-form{flex-wrap:wrap}.ck.ck-link-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-link-form .ck-button{flex-basis:50%}}.ck.ck-link-form_layout-vertical{display:block}.ck.ck-link-form_layout-vertical .ck-button.ck-button-cancel,.ck.ck-link-form_layout-vertical .ck-button.ck-button-save{margin-top:var(--ck-spacing-medium)}.ck.ck-link-form_layout-vertical{min-width:var(--ck-input-width);padding:0}.ck.ck-link-form_layout-vertical .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-link-form_layout-vertical>.ck-button{border-radius:0;margin:0;padding:var(--ck-spacing-standard);width:50%}.ck.ck-link-form_layout-vertical>.ck-button:not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-link-form_layout-vertical>.ck-button,[dir=rtl] .ck.ck-link-form_layout-vertical>.ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form_layout-vertical>.ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}.ck.ck-link-form_layout-vertical .ck.ck-list{margin:var(--ck-spacing-standard) var(--ck-spacing-large)}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton{padding:0;width:100%}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover{background:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-link/theme/linkform.css\",\"webpack://./../ckeditor5-ui/theme/mixins/_rwd.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-link/linkform.css\"],\"names\":[],\"mappings\":\"AAOA,iBACC,YAiBD,CAfC,2BACC,YACD,CCNA,oCDCD,iBAQE,cAUF,CARE,wCACC,eACD,CAEA,4BACC,cACD,CCfD,CDuBD,iCACC,aAYD,CALE,wHAEC,mCACD,CE/BF,iCAEC,+BAAgC,CADhC,SAgDD,CA7CC,wDACC,8EAMD,CAJC,uEACC,WAAY,CACZ,UACD,CAGD,4CAIC,eAAgB,CAFhB,QAAS,CADT,kCAAmC,CAEnC,SAkBD,CAfC,wDACC,gDACD,CARD,4GAeE,aAMF,CAJE,mEACC,kDACD,CAKF,6CACC,yDAUD,CARC,wEACC,SAAU,CACV,UAKD,CAHC,8EACC,eACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\\\";\\n\\n.ck.ck-link-form {\\n\\tdisplay: flex;\\n\\n\\t& .ck-label {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t@mixin ck-media-phone {\\n\\t\\tflex-wrap: wrap;\\n\\n\\t\\t& .ck-labeled-field-view {\\n\\t\\t\\tflex-basis: 100%;\\n\\t\\t}\\n\\n\\t\\t& .ck-button {\\n\\t\\t\\tflex-basis: 50%;\\n\\t\\t}\\n\\t}\\n}\\n\\n/*\\n * Style link form differently when manual decorators are available.\\n * See: https://github.com/ckeditor/ckeditor5-link/issues/186.\\n */\\n.ck.ck-link-form_layout-vertical {\\n\\tdisplay: block;\\n\\n\\t/*\\n\\t * Whether the form is in the responsive mode or not, if there are decorator buttons\\n\\t * keep the top margin of action buttons medium.\\n\\t */\\n\\t& .ck-button {\\n\\t\\t&.ck-button-save,\\n\\t\\t&.ck-button-cancel {\\n\\t\\t\\tmargin-top: var(--ck-spacing-medium);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@define-mixin ck-media-phone {\\n\\t@media screen and (max-width: 600px) {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n/*\\n * Style link form differently when manual decorators are available.\\n * See: https://github.com/ckeditor/ckeditor5-link/issues/186.\\n */\\n.ck.ck-link-form_layout-vertical {\\n\\tpadding: 0;\\n\\tmin-width: var(--ck-input-width);\\n\\n\\t& .ck-labeled-field-view {\\n\\t\\tmargin: var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small);\\n\\n\\t\\t& .ck-input-text {\\n\\t\\t\\tmin-width: 0;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck-button {\\n\\t\\tpadding: var(--ck-spacing-standard);\\n\\t\\tmargin: 0;\\n\\t\\twidth: 50%;\\n\\t\\tborder-radius: 0;\\n\\n\\t\\t&:not(:focus) {\\n\\t\\t\\tborder-top: 1px solid var(--ck-color-base-border);\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\tmargin-left: 0;\\n\\n\\t\\t\\t&:last-of-type {\\n\\t\\t\\t\\tborder-right: 1px solid var(--ck-color-base-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/* Using additional `.ck` class for stronger CSS specificity than `.ck.ck-link-form > :not(:first-child)`. */\\n\\t& .ck.ck-list {\\n\\t\\tmargin: var(--ck-spacing-standard) var(--ck-spacing-large);\\n\\n\\t\\t& .ck-button.ck-switchbutton {\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tbackground: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-editor__editable a span.image-inline:after,.ck.ck-editor__editable figure.image>a:after{display:block;position:absolute}:root{--ck-link-image-indicator-icon-size:20;--ck-link-image-indicator-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck.ck-editor__editable a span.image-inline:after,.ck.ck-editor__editable figure.image>a:after{background-color:rgba(0,0,0,.4);background-image:url(\\\"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzQ4Ljc0OCAwIDAgMS0uMjE3LjIwNiA1LjI1MSA1LjI1MSAwIDAgMS04LjUwMy01Ljk1NS43NDEuNzQxIDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NGwuMDA2LjAwNHptNS40OTQtNS4zMzVhLjc0OC43NDggMCAwIDEtLjEyLjI3NGwtMS4xNDcgMS42MzlhLjc1Ljc1IDAgMSAxLTEuMjI4LS44NmwuODYtMS4yM2EzLjc1IDMuNzUgMCAwIDAtNi4xNDQtNC4zMDFsLS44NiAxLjIyOWEuNzUuNzUgMCAwIDEtMS4yMjktLjg2bDEuMTQ4LTEuNjRhLjc0OC43NDggMCAwIDEgLjIxNy0uMjA2IDUuMjUxIDUuMjUxIDAgMCAxIDguNTAzIDUuOTU1em0tNC41NjMtMi41MzJhLjc1Ljc1IDAgMCAxIC4xODQgMS4wNDVsLTMuMTU1IDQuNTA1YS43NS43NSAwIDEgMS0xLjIyOS0uODZsMy4xNTUtNC41MDZhLjc1Ljc1IDAgMCAxIDEuMDQ1LS4xODR6Ii8+PC9zdmc+\\\");background-position:50%;background-repeat:no-repeat;background-size:14px;border-radius:100%;content:\\\"\\\";height:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size));overflow:hidden;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);width:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size))}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-link/theme/linkimage.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-link/linkimage.css\"],\"names\":[],\"mappings\":\"AASE,+FACC,aAAc,CACd,iBACD,CCPF,MAEC,sCAAuC,CACvC,oEACD,CAME,+FAUC,+BAAqC,CACrC,83BAA+3B,CAG/3B,uBAA2B,CAD3B,2BAA4B,CAD5B,oBAAqB,CAGrB,kBAAmB,CAdnB,UAAW,CAsBX,oGAAuG,CAFvG,eAAgB,CAbhB,sCAAwC,CADxC,oCAAsC,CAetC,mGAED\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-editor__editable {\\n\\t/* Linked image indicator */\\n\\t& figure.image > a,\\n\\t& a span.image-inline {\\n\\t\\t&::after {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tposition: absolute;\\n\\t\\t}\\n\\t}\\n}\\n\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t/* Match the icon size with the upload indicator brought by the image upload feature. */\\n\\t--ck-link-image-indicator-icon-size: 20;\\n\\t--ck-link-image-indicator-icon-is-visible: clamp(0px, 100% - 50px, 1px);\\n}\\n\\n.ck.ck-editor__editable {\\n\\t/* Linked image indicator */\\n\\t& figure.image > a,\\n\\t& a span.image-inline {\\n\\t\\t&::after {\\n\\t\\t\\tcontent: \\\"\\\";\\n\\n\\t\\t\\t/*\\n\\t\\t\\t * Smaller images should have the icon closer to the border.\\n\\t\\t\\t * Match the icon position with the upload indicator brought by the image upload feature.\\n\\t\\t\\t */\\n\\t\\t\\ttop: min(var(--ck-spacing-medium), 6%);\\n\\t\\t\\tright: min(var(--ck-spacing-medium), 6%);\\n\\n\\t\\t\\tbackground-color: hsla(0, 0%, 0%, .4);\\n\\t\\t\\tbackground-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzQ4Ljc0OCAwIDAgMS0uMjE3LjIwNiA1LjI1MSA1LjI1MSAwIDAgMS04LjUwMy01Ljk1NS43NDEuNzQxIDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NGwuMDA2LjAwNHptNS40OTQtNS4zMzVhLjc0OC43NDggMCAwIDEtLjEyLjI3NGwtMS4xNDcgMS42MzlhLjc1Ljc1IDAgMSAxLTEuMjI4LS44NmwuODYtMS4yM2EzLjc1IDMuNzUgMCAwIDAtNi4xNDQtNC4zMDFsLS44NiAxLjIyOWEuNzUuNzUgMCAwIDEtMS4yMjktLjg2bDEuMTQ4LTEuNjRhLjc0OC43NDggMCAwIDEgLjIxNy0uMjA2IDUuMjUxIDUuMjUxIDAgMCAxIDguNTAzIDUuOTU1em0tNC41NjMtMi41MzJhLjc1Ljc1IDAgMCAxIC4xODQgMS4wNDVsLTMuMTU1IDQuNTA1YS43NS43NSAwIDEgMS0xLjIyOS0uODZsMy4xNTUtNC41MDZhLjc1Ljc1IDAgMCAxIDEuMDQ1LS4xODR6Ii8+PC9zdmc+\\\");\\n\\t\\t\\tbackground-size: 14px;\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tborder-radius: 100%;\\n\\n\\t\\t\\t/*\\n\\t\\t\\t* Use CSS math to simulate container queries.\\n\\t\\t\\t* https://css-tricks.com/the-raven-technique-one-step-closer-to-container-queries/#what-about-showing-and-hiding-things\\n\\t\\t\\t*/\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\twidth: calc(var(--ck-link-image-indicator-icon-is-visible) * var(--ck-link-image-indicator-icon-size));\\n\\t\\t\\theight: calc(var(--ck-link-image-indicator-icon-is-visible) * var(--ck-link-image-indicator-icon-size));\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-collapsible.ck-collapsible_collapsed>.ck-collapsible__children{display:none}:root{--ck-collapsible-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-collapsible>.ck.ck-button{border-radius:0;color:inherit;font-weight:700;padding:var(--ck-spacing-medium) var(--ck-spacing-large);width:100%}.ck.ck-collapsible>.ck.ck-button:focus{background:transparent}.ck.ck-collapsible>.ck.ck-button:active,.ck.ck-collapsible>.ck.ck-button:hover:not(:focus),.ck.ck-collapsible>.ck.ck-button:not(:focus){background:transparent;border-color:transparent;box-shadow:none}.ck.ck-collapsible>.ck.ck-button>.ck-icon{margin-right:var(--ck-spacing-medium);width:var(--ck-collapsible-arrow-size)}.ck.ck-collapsible>.ck-collapsible__children{padding:0 var(--ck-spacing-large) var(--ck-spacing-large)}.ck.ck-collapsible.ck-collapsible_collapsed>.ck.ck-button .ck-icon{transform:rotate(-90deg)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-list/theme/collapsible.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-list/collapsible.css\"],\"names\":[],\"mappings\":\"AAMC,sEACC,YACD,CCHD,MACC,yDACD,CAGC,iCAIC,eAAgB,CAChB,aAAc,CAHd,eAAiB,CACjB,wDAAyD,CAFzD,UAoBD,CAdC,uCACC,sBACD,CAEA,wIACC,sBAAuB,CACvB,wBAAyB,CACzB,eACD,CAEA,0CACC,qCAAsC,CACtC,sCACD,CAGD,6CACC,yDACD,CAGC,mEACC,wBACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-collapsible.ck-collapsible_collapsed {\\n\\t& > .ck-collapsible__children {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-collapsible-arrow-size: calc(0.5 * var(--ck-icon-size));\\n}\\n\\n.ck.ck-collapsible {\\n\\t& > .ck.ck-button {\\n\\t\\twidth: 100%;\\n\\t\\tfont-weight: bold;\\n\\t\\tpadding: var(--ck-spacing-medium) var(--ck-spacing-large);\\n\\t\\tborder-radius: 0;\\n\\t\\tcolor: inherit;\\n\\n\\t\\t&:focus {\\n\\t\\t\\tbackground: transparent;\\n\\t\\t}\\n\\n\\t\\t&:active, &:not(:focus), &:hover:not(:focus) {\\n\\t\\t\\tbackground: transparent;\\n\\t\\t\\tborder-color: transparent;\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t}\\n\\n\\t\\t& > .ck-icon {\\n\\t\\t\\tmargin-right: var(--ck-spacing-medium);\\n\\t\\t\\twidth: var(--ck-collapsible-arrow-size);\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck-collapsible__children {\\n\\t\\tpadding: 0 var(--ck-spacing-large) var(--ck-spacing-large);\\n\\t}\\n\\n\\t&.ck-collapsible_collapsed {\\n\\t\\t& > .ck.ck-button .ck-icon {\\n\\t\\t\\ttransform: rotate(-90deg);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-editor__editable .ck-list-bogus-paragraph{display:block}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-list/theme/documentlist.css\"],\"names\":[],\"mappings\":\"AAKA,8CACC,aACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck-editor__editable .ck-list-bogus-paragraph {\\n\\tdisplay: block;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-content ol{list-style-type:decimal}.ck-content ol ol{list-style-type:lower-latin}.ck-content ol ol ol{list-style-type:lower-roman}.ck-content ol ol ol ol{list-style-type:upper-latin}.ck-content ol ol ol ol ol{list-style-type:upper-roman}.ck-content ul{list-style-type:disc}.ck-content ul ul{list-style-type:circle}.ck-content ul ul ul,.ck-content ul ul ul ul{list-style-type:square}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-list/theme/list.css\"],\"names\":[],\"mappings\":\"AAKA,eACC,uBAiBD,CAfC,kBACC,2BAaD,CAXC,qBACC,2BASD,CAPC,wBACC,2BAKD,CAHC,2BACC,2BACD,CAMJ,eACC,oBAaD,CAXC,kBACC,sBASD,CAJE,6CACC,sBACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck-content ol {\\n\\tlist-style-type: decimal;\\n\\n\\t& ol {\\n\\t\\tlist-style-type: lower-latin;\\n\\n\\t\\t& ol {\\n\\t\\t\\tlist-style-type: lower-roman;\\n\\n\\t\\t\\t& ol {\\n\\t\\t\\t\\tlist-style-type: upper-latin;\\n\\n\\t\\t\\t\\t& ol {\\n\\t\\t\\t\\t\\tlist-style-type: upper-roman;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck-content ul {\\n\\tlist-style-type: disc;\\n\\n\\t& ul {\\n\\t\\tlist-style-type: circle;\\n\\n\\t\\t& ul {\\n\\t\\t\\tlist-style-type: square;\\n\\n\\t\\t\\t& ul {\\n\\t\\t\\t\\tlist-style-type: square;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-list-properties.ck-list-properties_without-styles{padding:var(--ck-spacing-large)}.ck.ck-list-properties.ck-list-properties_without-styles>*{min-width:14em}.ck.ck-list-properties.ck-list-properties_without-styles>*+*{margin-top:var(--ck-spacing-standard)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-list-styles-list{grid-template-columns:repeat(4,auto)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible{border-top:1px solid var(--ck-color-base-border)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible>.ck-collapsible__children>*{width:100%}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible>.ck-collapsible__children>*+*{margin-top:var(--ck-spacing-standard)}.ck.ck-list-properties .ck.ck-numbered-list-properties__start-index .ck-input{min-width:auto;width:100%}.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order{background:transparent;margin-bottom:calc(var(--ck-spacing-tiny)*-1);padding-left:0;padding-right:0}.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:active,.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:hover{background:none;border-color:transparent;box-shadow:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-list/listproperties.css\"],\"names\":[],\"mappings\":\"AAOC,yDACC,+BASD,CAPC,2DACC,cAKD,CAHC,6DACC,qCACD,CASD,wFACC,oCACD,CAGA,mFACC,gDAWD,CARE,+GACC,UAKD,CAHC,iHACC,qCACD,CAMJ,8EACC,cAAe,CACf,UACD,CAEA,uEACC,sBAAuB,CAGvB,6CAAgD,CAFhD,cAAe,CACf,eAQD,CALC,2JAGC,eAAgB,CADhB,wBAAyB,CADzB,eAGD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-list-properties {\\n\\t/* When there are no list styles and there is no collapsible. */\\n\\t&.ck-list-properties_without-styles {\\n\\t\\tpadding: var(--ck-spacing-large);\\n\\n\\t\\t& > * {\\n\\t\\t\\tmin-width: 14em;\\n\\n\\t\\t\\t& + * {\\n\\t\\t\\t\\tmargin-top: var(--ck-spacing-standard);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * When the numbered list property fields (start at, reversed) should be displayed,\\n\\t * more horizontal space is needed. Reconfigure the style grid to create that space.\\n\\t */\\n\\t&.ck-list-properties_with-numbered-properties {\\n\\t\\t& > .ck-list-styles-list {\\n\\t\\t\\tgrid-template-columns: repeat( 4, auto );\\n\\t\\t}\\n\\n\\t\\t/* When list styles are rendered and property fields are in a collapsible. */\\n\\t\\t& > .ck-collapsible {\\n\\t\\t\\tborder-top: 1px solid var(--ck-color-base-border);\\n\\n\\t\\t\\t& > .ck-collapsible__children {\\n\\t\\t\\t\\t& > * {\\n\\t\\t\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t\\t\\t& + * {\\n\\t\\t\\t\\t\\t\\tmargin-top: var(--ck-spacing-standard);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck.ck-numbered-list-properties__start-index .ck-input {\\n\\t\\tmin-width: auto;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t& .ck.ck-numbered-list-properties__reversed-order {\\n\\t\\tbackground: transparent;\\n\\t\\tpadding-left: 0;\\n\\t\\tpadding-right: 0;\\n\\t\\tmargin-bottom: calc(-1 * var(--ck-spacing-tiny));\\n\\n\\t\\t&:active, &:hover {\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t\\tborder-color: transparent;\\n\\t\\t\\tbackground: none;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-list-styles-list{display:grid}:root{--ck-list-style-button-size:44px}.ck.ck-list-styles-list{column-gap:var(--ck-spacing-medium);grid-template-columns:repeat(3,auto);padding:var(--ck-spacing-large);row-gap:var(--ck-spacing-medium)}.ck.ck-list-styles-list .ck-button{box-sizing:content-box;margin:0;padding:0}.ck.ck-list-styles-list .ck-button,.ck.ck-list-styles-list .ck-button .ck-icon{height:var(--ck-list-style-button-size);width:var(--ck-list-style-button-size)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-list/theme/liststyles.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-list/liststyles.css\"],\"names\":[],\"mappings\":\"AAKA,wBACC,YACD,CCFA,MACC,gCACD,CAEA,wBAGC,mCAAoC,CAFpC,oCAAwC,CAGxC,+BAAgC,CAFhC,gCA4BD,CAxBC,mCAiBC,sBAAuB,CAPvB,QAAS,CANT,SAmBD,CAJC,+EAhBA,uCAAwC,CADxC,sCAoBA\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-list-styles-list {\\n\\tdisplay: grid;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-list-style-button-size: 44px;\\n}\\n\\n.ck.ck-list-styles-list {\\n\\tgrid-template-columns: repeat( 3, auto );\\n\\trow-gap: var(--ck-spacing-medium);\\n\\tcolumn-gap: var(--ck-spacing-medium);\\n\\tpadding: var(--ck-spacing-large);\\n\\n\\t& .ck-button {\\n\\t\\t/* Make the button look like a thumbnail (the icon \\\"takes it all\\\"). */\\n\\t\\twidth: var(--ck-list-style-button-size);\\n\\t\\theight: var(--ck-list-style-button-size);\\n\\t\\tpadding: 0;\\n\\n\\t\\t/*\\n\\t\\t * Buttons are aligned by the grid so disable default button margins to not collide with the\\n\\t\\t * gaps in the grid.\\n\\t\\t */\\n\\t\\tmargin: 0;\\n\\n\\t\\t/*\\n\\t\\t * Make sure the button border (which is displayed on focus, BTW) does not steal pixels\\n\\t\\t * from the button dimensions and, as a result, decrease the size of the icon\\n\\t\\t * (which becomes blurry as it scales down).\\n\\t\\t */\\n\\t\\tbox-sizing: content-box;\\n\\n\\t\\t& .ck-icon {\\n\\t\\t\\twidth: var(--ck-list-style-button-size);\\n\\t\\t\\theight: var(--ck-list-style-button-size);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-todo-list-checkmark-size:16px}.ck-content .todo-list{list-style:none}.ck-content .todo-list li{margin-bottom:5px}.ck-content .todo-list li .todo-list{margin-top:5px}.ck-content .todo-list .todo-list__label>input{-webkit-appearance:none;border:0;display:inline-block;height:var(--ck-todo-list-checkmark-size);left:-25px;margin-left:0;margin-right:-15px;position:relative;right:0;vertical-align:middle;width:var(--ck-todo-list-checkmark-size)}.ck-content .todo-list .todo-list__label>input:before{border:1px solid #333;border-radius:2px;box-sizing:border-box;content:\\\"\\\";display:block;height:100%;position:absolute;transition:box-shadow .25s ease-in-out,background .25s ease-in-out,border .25s ease-in-out;width:100%}.ck-content .todo-list .todo-list__label>input:after{border-color:transparent;border-style:solid;border-width:0 calc(var(--ck-todo-list-checkmark-size)/8) calc(var(--ck-todo-list-checkmark-size)/8) 0;box-sizing:content-box;content:\\\"\\\";display:block;height:calc(var(--ck-todo-list-checkmark-size)/2.6);left:calc(var(--ck-todo-list-checkmark-size)/3);pointer-events:none;position:absolute;top:calc(var(--ck-todo-list-checkmark-size)/5.3);transform:rotate(45deg);width:calc(var(--ck-todo-list-checkmark-size)/5.3)}.ck-content .todo-list .todo-list__label>input[checked]:before{background:#26ab33;border-color:#26ab33}.ck-content .todo-list .todo-list__label>input[checked]:after{border-color:#fff}.ck-content .todo-list .todo-list__label .todo-list__label__description{vertical-align:middle}[dir=rtl] .todo-list .todo-list__label>input{left:0;margin-left:-15px;margin-right:0;right:-25px}.ck-editor__editable .todo-list .todo-list__label>input{cursor:pointer}.ck-editor__editable .todo-list .todo-list__label>input:hover:before{box-shadow:0 0 0 5px rgba(0,0,0,.1)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-list/theme/todolist.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,kCACD,CAEA,uBACC,eA0ED,CAxEC,0BACC,iBAKD,CAHC,qCACC,cACD,CAIA,+CACC,uBAAwB,CAQxB,QAAS,CAPT,oBAAqB,CAGrB,yCAA0C,CAO1C,UAAW,CAGX,aAAc,CAFd,kBAAmB,CAVnB,iBAAkB,CAWlB,OAAQ,CARR,qBAAsB,CAFtB,wCAqDD,CAxCC,sDAOC,qBAAiC,CACjC,iBAAkB,CALlB,qBAAsB,CACtB,UAAW,CAHX,aAAc,CAKd,WAAY,CAJZ,iBAAkB,CAOlB,0FAAgG,CAJhG,UAKD,CAEA,qDAaC,wBAAyB,CADzB,kBAAmB,CAEnB,sGAA+G,CAX/G,sBAAuB,CAEvB,UAAW,CAJX,aAAc,CAUd,mDAAwD,CAHxD,+CAAoD,CAJpD,mBAAoB,CAFpB,iBAAkB,CAOlB,gDAAqD,CAMrD,uBAAwB,CALxB,kDAMD,CAGC,+DACC,kBAA8B,CAC9B,oBACD,CAEA,8DACC,iBACD,CAIF,wEACC,qBACD,CAKF,6CACC,MAAO,CAGP,iBAAkB,CAFlB,cAAe,CACf,WAED,CAMA,wDACC,cAKD,CAHC,qEACC,mCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-todo-list-checkmark-size: 16px;\\n}\\n\\n.ck-content .todo-list {\\n\\tlist-style: none;\\n\\n\\t& li {\\n\\t\\tmargin-bottom: 5px;\\n\\n\\t\\t& .todo-list {\\n\\t\\t\\tmargin-top: 5px;\\n\\t\\t}\\n\\t}\\n\\n\\t& .todo-list__label {\\n\\t\\t& > input {\\n\\t\\t\\t-webkit-appearance: none;\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\tposition: relative;\\n\\t\\t\\twidth: var(--ck-todo-list-checkmark-size);\\n\\t\\t\\theight: var(--ck-todo-list-checkmark-size);\\n\\t\\t\\tvertical-align: middle;\\n\\n\\t\\t\\t/* Needed on iOS */\\n\\t\\t\\tborder: 0;\\n\\n\\t\\t\\t/* LTR styles */\\n\\t\\t\\tleft: -25px;\\n\\t\\t\\tmargin-right: -15px;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\n\\t\\t\\t&::before {\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\t\\tcontent: '';\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\tborder: 1px solid hsl(0, 0%, 20%);\\n\\t\\t\\t\\tborder-radius: 2px;\\n\\t\\t\\t\\ttransition: 250ms ease-in-out box-shadow, 250ms ease-in-out background, 250ms ease-in-out border;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tbox-sizing: content-box;\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t\\tcontent: '';\\n\\n\\t\\t\\t\\t/* Calculate tick position, size and border-width proportional to the checkmark size. */\\n\\t\\t\\t\\tleft: calc( var(--ck-todo-list-checkmark-size) / 3 );\\n\\t\\t\\t\\ttop: calc( var(--ck-todo-list-checkmark-size) / 5.3 );\\n\\t\\t\\t\\twidth: calc( var(--ck-todo-list-checkmark-size) / 5.3 );\\n\\t\\t\\t\\theight: calc( var(--ck-todo-list-checkmark-size) / 2.6 );\\n\\t\\t\\t\\tborder-style: solid;\\n\\t\\t\\t\\tborder-color: transparent;\\n\\t\\t\\t\\tborder-width: 0 calc( var(--ck-todo-list-checkmark-size) / 8 ) calc( var(--ck-todo-list-checkmark-size) / 8 ) 0;\\n\\t\\t\\t\\ttransform: rotate(45deg);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&[checked] {\\n\\t\\t\\t\\t&::before {\\n\\t\\t\\t\\t\\tbackground: hsl(126, 64%, 41%);\\n\\t\\t\\t\\t\\tborder-color: hsl(126, 64%, 41%);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&::after {\\n\\t\\t\\t\\t\\tborder-color: hsl(0, 0%, 100%);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t& .todo-list__label__description {\\n\\t\\t\\tvertical-align: middle;\\n\\t\\t}\\n\\t}\\n}\\n\\n/* RTL styles */\\n[dir=\\\"rtl\\\"] .todo-list .todo-list__label > input {\\n\\tleft: 0;\\n\\tmargin-right: 0;\\n\\tright: -25px;\\n\\tmargin-left: -15px;\\n}\\n\\n/*\\n * To-do list should be interactive only during the editing\\n * (https://github.com/ckeditor/ckeditor5/issues/2090).\\n */\\n.ck-editor__editable .todo-list .todo-list__label > input {\\n\\tcursor: pointer;\\n\\n\\t&:hover::before {\\n\\t\\tbox-shadow: 0 0 0 5px hsla(0, 0%, 0%, 0.1);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-content .media{clear:both;display:block;margin:.9em 0;min-width:15em}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-media-embed/theme/mediaembed.css\"],\"names\":[],\"mappings\":\"AAKA,mBAGC,UAAW,CASX,aAAc,CAJd,aAAe,CAQf,cACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck-content .media {\\n\\t/* Don't allow floated content overlap the media.\\n\\thttps://github.com/ckeditor/ckeditor5-media-embed/issues/53 */\\n\\tclear: both;\\n\\n\\t/* Make sure there is some space between the content and the media. */\\n\\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\\n\\tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\\n\\tmargin: 0.9em 0;\\n\\n\\t/* Make sure media is not overriden with Bootstrap default `flex` value.\\n\\tSee: https://github.com/ckeditor/ckeditor5/issues/1373. */\\n\\tdisplay: block;\\n\\n\\t/* Give the media some minimal width in the content to prevent them\\n\\tfrom being \\\"squashed\\\" in tight spaces, e.g. in table cells (#44) */\\n\\tmin-width: 15em;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-media__wrapper .ck-media__placeholder{align-items:center;display:flex;flex-direction:column}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url{max-width:100%;position:relative}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-media__placeholder__url__text{display:block;overflow:hidden}.ck-media__wrapper[data-oembed-url*=\\\"facebook.com\\\"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*=\\\"goo.gl/maps\\\"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*=\\\"google.com/maps\\\"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*=\\\"instagram.com\\\"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*=\\\"maps.app.goo.gl\\\"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*=\\\"maps.google.com\\\"] .ck-media__placeholder__icon *,.ck-media__wrapper[data-oembed-url*=\\\"twitter.com\\\"] .ck-media__placeholder__icon *{display:none}.ck-editor__editable:not(.ck-read-only) .ck-media__wrapper>:not(.ck-media__placeholder),.ck-editor__editable:not(.ck-read-only) .ck-widget:not(.ck-widget_selected) .ck-media__placeholder{pointer-events:none}:root{--ck-media-embed-placeholder-icon-size:3em;--ck-color-media-embed-placeholder-url-text:#757575;--ck-color-media-embed-placeholder-url-text-hover:var(--ck-color-base-text)}.ck-media__wrapper{margin:0 auto}.ck-media__wrapper .ck-media__placeholder{background:var(--ck-color-base-foreground);padding:calc(var(--ck-spacing-standard)*3)}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon{background-position:50%;background-size:cover;height:var(--ck-media-embed-placeholder-icon-size);margin-bottom:var(--ck-spacing-large);min-width:var(--ck-media-embed-placeholder-icon-size)}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon .ck-icon{height:100%;width:100%}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url__text{color:var(--ck-color-media-embed-placeholder-url-text);font-style:italic;text-align:center;text-overflow:ellipsis;white-space:nowrap}.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:var(--ck-color-media-embed-placeholder-url-text-hover);cursor:pointer;text-decoration:underline}.ck-media__wrapper[data-oembed-url*=\\\"open.spotify.com\\\"]{max-height:380px;max-width:300px}.ck-media__wrapper[data-oembed-url*=\\\"goo.gl/maps\\\"] .ck-media__placeholder__icon,.ck-media__wrapper[data-oembed-url*=\\\"google.com/maps\\\"] .ck-media__placeholder__icon,.ck-media__wrapper[data-oembed-url*=\\\"maps.app.goo.gl\\\"] .ck-media__placeholder__icon,.ck-media__wrapper[data-oembed-url*=\\\"maps.google.com\\\"] .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAuMzc4IiBoZWlnaHQ9IjI1NC4xNjciIHZpZXdCb3g9IjAgMCA2Ni4yNDYgNjcuMjQ4Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTcyLjUzMSAtMjE4LjQ1NSkgc2NhbGUoLjk4MDEyKSI+PHJlY3Qgcnk9IjUuMjM4IiByeD0iNS4yMzgiIHk9IjIzMS4zOTkiIHg9IjE3Ni4wMzEiIGhlaWdodD0iNjAuMDk5IiB3aWR0aD0iNjAuMDk5IiBmaWxsPSIjMzRhNjY4IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Im0yMDYuNDc3IDI2MC45LTI4Ljk4NyAyOC45ODdhNS4yMTggNS4yMTggMCAwIDAgMy43OCAxLjYxaDQ5LjYyMWMxLjY5NCAwIDMuMTktLjc5OCA0LjE0Ni0yLjAzN3oiIGZpbGw9IiM1Yzg4YzUiLz48cGF0aCBkPSJNMjI2Ljc0MiAyMjIuOTg4Yy05LjI2NiAwLTE2Ljc3NyA3LjE3LTE2Ljc3NyAxNi4wMTQuMDA3IDIuNzYyLjY2MyA1LjQ3NCAyLjA5MyA3Ljg3NS40My43MDMuODMgMS40MDggMS4xOSAyLjEwNy4zMzMuNTAyLjY1IDEuMDA1Ljk1IDEuNTA4LjM0My40NzcuNjczLjk1Ny45ODggMS40NCAxLjMxIDEuNzY5IDIuNSAzLjUwMiAzLjYzNyA1LjE2OC43OTMgMS4yNzUgMS42ODMgMi42NCAyLjQ2NiAzLjk5IDIuMzYzIDQuMDk0IDQuMDA3IDguMDkyIDQuNiAxMy45MTR2LjAxMmMuMTgyLjQxMi41MTYuNjY2Ljg3OS42NjcuNDAzLS4wMDEuNzY4LS4zMTQuOTMtLjc5OS42MDMtNS43NTYgMi4yMzgtOS43MjkgNC41ODUtMTMuNzk0Ljc4Mi0xLjM1IDEuNjczLTIuNzE1IDIuNDY1LTMuOTkgMS4xMzctMS42NjYgMi4zMjgtMy40IDMuNjM4LTUuMTY5LjMxNS0uNDgyLjY0NS0uOTYyLjk4OC0xLjQzOS4zLS41MDMuNjE3LTEuMDA2Ljk1LTEuNTA4LjM1OS0uNy43Ni0xLjQwNCAxLjE5LTIuMTA3IDEuNDI2LTIuNDAyIDItNS4xMTQgMi4wMDQtNy44NzUgMC04Ljg0NC03LjUxMS0xNi4wMTQtMTYuNzc2LTE2LjAxNHoiIGZpbGw9IiNkZDRiM2UiIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PGVsbGlwc2Ugcnk9IjUuNTY0IiByeD0iNS44MjgiIGN5PSIyMzkuMDAyIiBjeD0iMjI2Ljc0MiIgZmlsbD0iIzgwMmQyNyIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48cGF0aCBkPSJNMTkwLjMwMSAyMzcuMjgzYy00LjY3IDAtOC40NTcgMy44NTMtOC40NTcgOC42MDZzMy43ODYgOC42MDcgOC40NTcgOC42MDdjMy4wNDMgMCA0LjgwNi0uOTU4IDYuMzM3LTIuNTE2IDEuNTMtMS41NTcgMi4wODctMy45MTMgMi4wODctNi4yOSAwLS4zNjItLjAyMy0uNzIyLS4wNjQtMS4wNzloLTguMjU3djMuMDQzaDQuODVjLS4xOTcuNzU5LS41MzEgMS40NS0xLjA1OCAxLjk4Ni0uOTQyLjk1OC0yLjAyOCAxLjU0OC0zLjkwMSAxLjU0OC0yLjg3NiAwLTUuMjA4LTIuMzcyLTUuMjA4LTUuMjk5IDAtMi45MjYgMi4zMzItNS4yOTkgNS4yMDgtNS4yOTkgMS4zOTkgMCAyLjYxOC40MDcgMy41ODQgMS4yOTNsMi4zODEtMi4zOGMwLS4wMDItLjAwMy0uMDA0LS4wMDQtLjAwNS0xLjU4OC0xLjUyNC0zLjYyLTIuMjE1LTUuOTU1LTIuMjE1em00LjQzIDUuNjYuMDAzLjAwNnYtLjAwM3oiIGZpbGw9IiNmZmYiIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0ibTIxNS4xODQgMjUxLjkyOS03Ljk4IDcuOTc5IDI4LjQ3NyAyOC40NzVhNS4yMzMgNS4yMzMgMCAwIDAgLjQ0OS0yLjEyM3YtMzEuMTY1Yy0uNDY5LjY3NS0uOTM0IDEuMzQ5LTEuMzgyIDIuMDA1LS43OTIgMS4yNzUtMS42ODIgMi42NC0yLjQ2NSAzLjk5LTIuMzQ3IDQuMDY1LTMuOTgyIDguMDM4LTQuNTg1IDEzLjc5NC0uMTYyLjQ4NS0uNTI3Ljc5OC0uOTMuNzk5LS4zNjMtLjAwMS0uNjk3LS4yNTUtLjg3OS0uNjY3di0uMDEyYy0uNTkzLTUuODIyLTIuMjM3LTkuODItNC42LTEzLjkxNC0uNzgzLTEuMzUtMS42NzMtMi43MTUtMi40NjYtMy45OS0xLjEzNy0xLjY2Ni0yLjMyNy0zLjQtMy42MzctNS4xNjlsLS4wMDItLjAwM3oiIGZpbGw9IiNjM2MzYzMiLz48cGF0aCBkPSJtMjEyLjk4MyAyNDguNDk1LTM2Ljk1MiAzNi45NTN2LjgxMmE1LjIyNyA1LjIyNyAwIDAgMCA1LjIzOCA1LjIzOGgxLjAxNWwzNS42NjYtMzUuNjY2YTEzNi4yNzUgMTM2LjI3NSAwIDAgMC0yLjc2NC0zLjkgMzcuNTc1IDM3LjU3NSAwIDAgMC0uOTg5LTEuNDQgMzUuMTI3IDM1LjEyNyAwIDAgMC0uOTUtMS41MDhjLS4wODMtLjE2Mi0uMTc2LS4zMjYtLjI2NC0uNDg5eiIgZmlsbD0iI2ZkZGM0ZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48cGF0aCBkPSJtMjExLjk5OCAyNjEuMDgzLTYuMTUyIDYuMTUxIDI0LjI2NCAyNC4yNjRoLjc4MWE1LjIyNyA1LjIyNyAwIDAgMCA1LjIzOS01LjIzOHYtMS4wNDV6IiBmaWxsPSIjZmZmIiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjwvZz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*=\\\"facebook.com\\\"] .ck-media__placeholder{background:#4268b3}.ck-media__wrapper[data-oembed-url*=\\\"facebook.com\\\"] .ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik05NjcuNDg0IDBINTYuNTE3QzI1LjMwNCAwIDAgMjUuMzA0IDAgNTYuNTE3djkxMC45NjZDMCA5OTguNjk0IDI1LjI5NyAxMDI0IDU2LjUyMiAxMDI0SDU0N1Y2MjhINDE0VjQ3M2gxMzNWMzU5LjAyOWMwLTEzMi4yNjIgODAuNzczLTIwNC4yODIgMTk4Ljc1Ni0yMDQuMjgyIDU2LjUxMyAwIDEwNS4wODYgNC4yMDggMTE5LjI0NCA2LjA4OVYyOTlsLTgxLjYxNi4wMzdjLTYzLjk5MyAwLTc2LjM4NCAzMC40OTItNzYuMzg0IDc1LjIzNlY0NzNoMTUzLjQ4N2wtMTkuOTg2IDE1NUg3MDd2Mzk2aDI2MC40ODRjMzEuMjEzIDAgNTYuNTE2LTI1LjMwMyA1Ni41MTYtNTYuNTE2VjU2LjUxNUMxMDI0IDI1LjMwMyA5OTguNjk3IDAgOTY3LjQ4NCAwIiBmaWxsPSIjRkZGRkZFIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*=\\\"facebook.com\\\"] .ck-media__placeholder .ck-media__placeholder__url__text{color:#cdf}.ck-media__wrapper[data-oembed-url*=\\\"facebook.com\\\"] .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}.ck-media__wrapper[data-oembed-url*=\\\"instagram.com\\\"] .ck-media__placeholder{background:linear-gradient(-135deg,#1400c7,#b800b1,#f50000)}.ck-media__wrapper[data-oembed-url*=\\\"instagram.com\\\"] .ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTA0IiBoZWlnaHQ9IjUwNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGRlZnM+PHBhdGggaWQ9ImEiIGQ9Ik0wIC4xNTloNTAzLjg0MVY1MDMuOTRIMHoiLz48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+PHVzZSB4bGluazpocmVmPSIjYSIvPjwvbWFzaz48cGF0aCBkPSJNMjUxLjkyMS4xNTljLTY4LjQxOCAwLTc2Ljk5Ny4yOS0xMDMuODY3IDEuNTE2LTI2LjgxNCAxLjIyMy00NS4xMjcgNS40ODItNjEuMTUxIDExLjcxLTE2LjU2NiA2LjQzNy0zMC42MTUgMTUuMDUxLTQ0LjYyMSAyOS4wNTYtMTQuMDA1IDE0LjAwNi0yMi42MTkgMjguMDU1LTI5LjA1NiA0NC42MjEtNi4yMjggMTYuMDI0LTEwLjQ4NyAzNC4zMzctMTEuNzEgNjEuMTUxQy4yOSAxNzUuMDgzIDAgMTgzLjY2MiAwIDI1Mi4wOGMwIDY4LjQxNy4yOSA3Ni45OTYgMS41MTYgMTAzLjg2NiAxLjIyMyAyNi44MTQgNS40ODIgNDUuMTI3IDExLjcxIDYxLjE1MSA2LjQzNyAxNi41NjYgMTUuMDUxIDMwLjYxNSAyOS4wNTYgNDQuNjIxIDE0LjAwNiAxNC4wMDUgMjguMDU1IDIyLjYxOSA0NC42MjEgMjkuMDU3IDE2LjAyNCA2LjIyNyAzNC4zMzcgMTAuNDg2IDYxLjE1MSAxMS43MDkgMjYuODcgMS4yMjYgMzUuNDQ5IDEuNTE2IDEwMy44NjcgMS41MTYgNjguNDE3IDAgNzYuOTk2LS4yOSAxMDMuODY2LTEuNTE2IDI2LjgxNC0xLjIyMyA0NS4xMjctNS40ODIgNjEuMTUxLTExLjcwOSAxNi41NjYtNi40MzggMzAuNjE1LTE1LjA1MiA0NC42MjEtMjkuMDU3IDE0LjAwNS0xNC4wMDYgMjIuNjE5LTI4LjA1NSAyOS4wNTctNDQuNjIxIDYuMjI3LTE2LjAyNCAxMC40ODYtMzQuMzM3IDExLjcwOS02MS4xNTEgMS4yMjYtMjYuODcgMS41MTYtMzUuNDQ5IDEuNTE2LTEwMy44NjYgMC02OC40MTgtLjI5LTc2Ljk5Ny0xLjUxNi0xMDMuODY3LTEuMjIzLTI2LjgxNC01LjQ4Mi00NS4xMjctMTEuNzA5LTYxLjE1MS02LjQzOC0xNi41NjYtMTUuMDUyLTMwLjYxNS0yOS4wNTctNDQuNjIxLTE0LjAwNi0xNC4wMDUtMjguMDU1LTIyLjYxOS00NC42MjEtMjkuMDU2LTE2LjAyNC02LjIyOC0zNC4zMzctMTAuNDg3LTYxLjE1MS0xMS43MUMzMjguOTE3LjQ0OSAzMjAuMzM4LjE1OSAyNTEuOTIxLjE1OVptMCA0NS4zOTFjNjcuMjY1IDAgNzUuMjMzLjI1NyAxMDEuNzk3IDEuNDY5IDI0LjU2MiAxLjEyIDM3LjkwMSA1LjIyNCA0Ni43NzggOC42NzQgMTEuNzU5IDQuNTcgMjAuMTUxIDEwLjAyOSAyOC45NjYgMTguODQ1IDguODE2IDguODE1IDE0LjI3NSAxNy4yMDcgMTguODQ1IDI4Ljk2NiAzLjQ1IDguODc3IDcuNTU0IDIyLjIxNiA4LjY3NCA0Ni43NzggMS4yMTIgMjYuNTY0IDEuNDY5IDM0LjUzMiAxLjQ2OSAxMDEuNzk4IDAgNjcuMjY1LS4yNTcgNzUuMjMzLTEuNDY5IDEwMS43OTctMS4xMiAyNC41NjItNS4yMjQgMzcuOTAxLTguNjc0IDQ2Ljc3OC00LjU3IDExLjc1OS0xMC4wMjkgMjAuMTUxLTE4Ljg0NSAyOC45NjYtOC44MTUgOC44MTYtMTcuMjA3IDE0LjI3NS0yOC45NjYgMTguODQ1LTguODc3IDMuNDUtMjIuMjE2IDcuNTU0LTQ2Ljc3OCA4LjY3NC0yNi41NiAxLjIxMi0zNC41MjcgMS40NjktMTAxLjc5NyAxLjQ2OS02Ny4yNzEgMC03NS4yMzctLjI1Ny0xMDEuNzk4LTEuNDY5LTI0LjU2Mi0xLjEyLTM3LjkwMS01LjIyNC00Ni43NzgtOC42NzQtMTEuNzU5LTQuNTctMjAuMTUxLTEwLjAyOS0yOC45NjYtMTguODQ1LTguODE1LTguODE1LTE0LjI3NS0xNy4yMDctMTguODQ1LTI4Ljk2Ni0zLjQ1LTguODc3LTcuNTU0LTIyLjIxNi04LjY3NC00Ni43NzgtMS4yMTItMjYuNTY0LTEuNDY5LTM0LjUzMi0xLjQ2OS0xMDEuNzk3IDAtNjcuMjY2LjI1Ny03NS4yMzQgMS40NjktMTAxLjc5OCAxLjEyLTI0LjU2MiA1LjIyNC0zNy45MDEgOC42NzQtNDYuNzc4IDQuNTctMTEuNzU5IDEwLjAyOS0yMC4xNTEgMTguODQ1LTI4Ljk2NiA4LjgxNS04LjgxNiAxNy4yMDctMTQuMjc1IDI4Ljk2Ni0xOC44NDUgOC44NzctMy40NSAyMi4yMTYtNy41NTQgNDYuNzc4LTguNjc0IDI2LjU2NC0xLjIxMiAzNC41MzItMS40NjkgMTAxLjc5OC0xLjQ2OVoiIGZpbGw9IiNGRkYiIG1hc2s9InVybCgjYikiLz48cGF0aCBkPSJNMjUxLjkyMSAzMzYuMDUzYy00Ni4zNzggMC04My45NzQtMzcuNTk2LTgzLjk3NC04My45NzMgMC00Ni4zNzggMzcuNTk2LTgzLjk3NCA4My45NzQtODMuOTc0IDQ2LjM3NyAwIDgzLjk3MyAzNy41OTYgODMuOTczIDgzLjk3NCAwIDQ2LjM3Ny0zNy41OTYgODMuOTczLTgzLjk3MyA4My45NzNabTAtMjEzLjMzOGMtNzEuNDQ3IDAtMTI5LjM2NSA1Ny45MTgtMTI5LjM2NSAxMjkuMzY1IDAgNzEuNDQ2IDU3LjkxOCAxMjkuMzY0IDEyOS4zNjUgMTI5LjM2NCA3MS40NDYgMCAxMjkuMzY0LTU3LjkxOCAxMjkuMzY0LTEyOS4zNjQgMC03MS40NDctNTcuOTE4LTEyOS4zNjUtMTI5LjM2NC0xMjkuMzY1Wk00MTYuNjI3IDExNy42MDRjMCAxNi42OTYtMTMuNTM1IDMwLjIzLTMwLjIzMSAzMC4yMy0xNi42OTUgMC0zMC4yMy0xMy41MzQtMzAuMjMtMzAuMjMgMC0xNi42OTYgMTMuNTM1LTMwLjIzMSAzMC4yMy0zMC4yMzEgMTYuNjk2IDAgMzAuMjMxIDEzLjUzNSAzMC4yMzEgMzAuMjMxIiBmaWxsPSIjRkZGIi8+PC9nPjwvc3ZnPg==)}.ck-media__wrapper[data-oembed-url*=\\\"instagram.com\\\"] .ck-media__placeholder .ck-media__placeholder__url__text{color:#ffe0fe}.ck-media__wrapper[data-oembed-url*=\\\"instagram.com\\\"] .ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}.ck-media__wrapper[data-oembed-url*=\\\"twitter.com\\\"] .ck.ck-media__placeholder{background:linear-gradient(90deg,#71c6f4,#0d70a5)}.ck-media__wrapper[data-oembed-url*=\\\"twitter.com\\\"] .ck.ck-media__placeholder .ck-media__placeholder__icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MDAgNDAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBkPSJNNDAwIDIwMGMwIDExMC41LTg5LjUgMjAwLTIwMCAyMDBTMCAzMTAuNSAwIDIwMCA4OS41IDAgMjAwIDBzMjAwIDg5LjUgMjAwIDIwMHpNMTYzLjQgMzA1LjVjODguNyAwIDEzNy4yLTczLjUgMTM3LjItMTM3LjIgMC0yLjEgMC00LjItLjEtNi4yIDkuNC02LjggMTcuNi0xNS4zIDI0LjEtMjUtOC42IDMuOC0xNy45IDYuNC0yNy43IDcuNiAxMC02IDE3LjYtMTUuNCAyMS4yLTI2LjctOS4zIDUuNS0xOS42IDkuNS0zMC42IDExLjctOC44LTkuNC0yMS4zLTE1LjItMzUuMi0xNS4yLTI2LjYgMC00OC4yIDIxLjYtNDguMiA0OC4yIDAgMy44LjQgNy41IDEuMyAxMS00MC4xLTItNzUuNi0yMS4yLTk5LjQtNTAuNC00LjEgNy4xLTYuNSAxNS40LTYuNSAyNC4yIDAgMTYuNyA4LjUgMzEuNSAyMS41IDQwLjEtNy45LS4yLTE1LjMtMi40LTIxLjgtNnYuNmMwIDIzLjQgMTYuNiA0Mi44IDM4LjcgNDcuMy00IDEuMS04LjMgMS43LTEyLjcgMS43LTMuMSAwLTYuMS0uMy05LjEtLjkgNi4xIDE5LjIgMjMuOSAzMy4xIDQ1IDMzLjUtMTYuNSAxMi45LTM3LjMgMjAuNi01OS45IDIwLjYtMy45IDAtNy43LS4yLTExLjUtLjcgMjEuMSAxMy44IDQ2LjUgMjEuOCA3My43IDIxLjgiIHN0eWxlPSJmaWxsOiNmZmYiLz48L3N2Zz4=)}.ck-media__wrapper[data-oembed-url*=\\\"twitter.com\\\"] .ck.ck-media__placeholder .ck-media__placeholder__url__text{color:#b8e6ff}.ck-media__wrapper[data-oembed-url*=\\\"twitter.com\\\"] .ck.ck-media__placeholder .ck-media__placeholder__url__text:hover{color:#fff}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-media-embed/theme/mediaembedediting.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-media-embed/mediaembedediting.css\"],\"names\":[],\"mappings\":\"AAMC,0CAGC,kBAAmB,CAFnB,YAAa,CACb,qBAcD,CAXC,sEAEC,cAAe,CAEf,iBAMD,CAJC,wGAEC,aAAc,CADd,eAED,CAWD,6kBACC,YACD,CAYF,2LACC,mBACD,CC1CA,MACC,0CAA2C,CAE3C,mDAA4D,CAC5D,2EACD,CAEA,mBACC,aA+FD,CA7FC,0CAEC,0CAA2C,CAD3C,0CA6BD,CA1BC,uEAIC,uBAA2B,CAC3B,qBAAsB,CAHtB,kDAAmD,CACnD,qCAAsC,CAFtC,qDAUD,CAJC,gFAEC,WAAY,CADZ,UAED,CAGD,4EACC,sDAAuD,CAGvD,iBAAkB,CADlB,iBAAkB,CAElB,sBAAuB,CAHvB,kBAUD,CALC,kFACC,4DAA6D,CAC7D,cAAe,CACf,yBACD,CAIF,wDAEC,gBAAiB,CADjB,eAED,CAEA,4UAIC,wvGACD,CAEA,2EACC,kBAaD,CAXC,wGACC,orBACD,CAEA,6GACC,UAKD,CAHC,mHACC,UACD,CAIF,4EACC,2DAcD,CAZC,yGACC,4jHACD,CAGA,8GACC,aAKD,CAHC,oHACC,UACD,CAIF,6EAEC,iDAaD,CAXC,0GACC,wiCACD,CAEA,+GACC,aAKD,CAHC,qHACC,UACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck-media__wrapper {\\n\\t& .ck-media__placeholder {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\n\\t\\t& .ck-media__placeholder__url {\\n\\t\\t\\t/* Otherwise the URL will overflow when the content is very narrow. */\\n\\t\\t\\tmax-width: 100%;\\n\\n\\t\\t\\tposition: relative;\\n\\n\\t\\t\\t& .ck-media__placeholder__url__text {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&[data-oembed-url*=\\\"twitter.com\\\"],\\n\\t&[data-oembed-url*=\\\"google.com/maps\\\"],\\n\\t&[data-oembed-url*=\\\"goo.gl/maps\\\"],\\n\\t&[data-oembed-url*=\\\"maps.google.com\\\"],\\n\\t&[data-oembed-url*=\\\"maps.app.goo.gl\\\"],\\n\\t&[data-oembed-url*=\\\"facebook.com\\\"],\\n\\t&[data-oembed-url*=\\\"instagram.com\\\"] {\\n\\t\\t& .ck-media__placeholder__icon * {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n/* Disable all mouse interaction as long as the editor is not read–only.\\n https://github.com/ckeditor/ckeditor5-media-embed/issues/58 */\\n.ck-editor__editable:not(.ck-read-only) .ck-media__wrapper > *:not(.ck-media__placeholder) {\\n\\tpointer-events: none;\\n}\\n\\n/* Disable all mouse interaction when the widget is not selected (e.g. to avoid opening links by accident).\\n https://github.com/ckeditor/ckeditor5-media-embed/issues/18 */\\n.ck-editor__editable:not(.ck-read-only) .ck-widget:not(.ck-widget_selected) .ck-media__placeholder {\\n\\tpointer-events: none;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-media-embed-placeholder-icon-size: 3em;\\n\\n\\t--ck-color-media-embed-placeholder-url-text: hsl(0, 0%, 46%);\\n\\t--ck-color-media-embed-placeholder-url-text-hover: var(--ck-color-base-text);\\n}\\n\\n.ck-media__wrapper {\\n\\tmargin: 0 auto;\\n\\n\\t& .ck-media__placeholder {\\n\\t\\tpadding: calc( 3 * var(--ck-spacing-standard) );\\n\\t\\tbackground: var(--ck-color-base-foreground);\\n\\n\\t\\t& .ck-media__placeholder__icon {\\n\\t\\t\\tmin-width: var(--ck-media-embed-placeholder-icon-size);\\n\\t\\t\\theight: var(--ck-media-embed-placeholder-icon-size);\\n\\t\\t\\tmargin-bottom: var(--ck-spacing-large);\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-size: cover;\\n\\n\\t\\t\\t& .ck-icon {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t& .ck-media__placeholder__url__text {\\n\\t\\t\\tcolor: var(--ck-color-media-embed-placeholder-url-text);\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tfont-style: italic;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tcolor: var(--ck-color-media-embed-placeholder-url-text-hover);\\n\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t\\ttext-decoration: underline;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&[data-oembed-url*=\\\"open.spotify.com\\\"] {\\n\\t\\tmax-width: 300px;\\n\\t\\tmax-height: 380px;\\n\\t}\\n\\n\\t&[data-oembed-url*=\\\"google.com/maps\\\"] .ck-media__placeholder__icon,\\n\\t&[data-oembed-url*=\\\"goo.gl/maps\\\"] .ck-media__placeholder__icon,\\n\\t&[data-oembed-url*=\\\"maps.google.com\\\"] .ck-media__placeholder__icon,\\n\\t&[data-oembed-url*=\\\"maps.app.goo.gl\\\"] .ck-media__placeholder__icon {\\n\\t\\tbackground-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAuMzc4IiBoZWlnaHQ9IjI1NC4xNjciIHZpZXdCb3g9IjAgMCA2Ni4yNDYgNjcuMjQ4Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTcyLjUzMSAtMjE4LjQ1NSkgc2NhbGUoLjk4MDEyKSI+PHJlY3Qgcnk9IjUuMjM4IiByeD0iNS4yMzgiIHk9IjIzMS4zOTkiIHg9IjE3Ni4wMzEiIGhlaWdodD0iNjAuMDk5IiB3aWR0aD0iNjAuMDk5IiBmaWxsPSIjMzRhNjY4IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Ik0yMDYuNDc3IDI2MC45bC0yOC45ODcgMjguOTg3YTUuMjE4IDUuMjE4IDAgMCAwIDMuNzggMS42MWg0OS42MjFjMS42OTQgMCAzLjE5LS43OTggNC4xNDYtMi4wMzd6IiBmaWxsPSIjNWM4OGM1Ii8+PHBhdGggZD0iTTIyNi43NDIgMjIyLjk4OGMtOS4yNjYgMC0xNi43NzcgNy4xNy0xNi43NzcgMTYuMDE0LjAwNyAyLjc2Mi42NjMgNS40NzQgMi4wOTMgNy44NzUuNDMuNzAzLjgzIDEuNDA4IDEuMTkgMi4xMDcuMzMzLjUwMi42NSAxLjAwNS45NSAxLjUwOC4zNDMuNDc3LjY3My45NTcuOTg4IDEuNDQgMS4zMSAxLjc2OSAyLjUgMy41MDIgMy42MzcgNS4xNjguNzkzIDEuMjc1IDEuNjgzIDIuNjQgMi40NjYgMy45OSAyLjM2MyA0LjA5NCA0LjAwNyA4LjA5MiA0LjYgMTMuOTE0di4wMTJjLjE4Mi40MTIuNTE2LjY2Ni44NzkuNjY3LjQwMy0uMDAxLjc2OC0uMzE0LjkzLS43OTkuNjAzLTUuNzU2IDIuMjM4LTkuNzI5IDQuNTg1LTEzLjc5NC43ODItMS4zNSAxLjY3My0yLjcxNSAyLjQ2NS0zLjk5IDEuMTM3LTEuNjY2IDIuMzI4LTMuNCAzLjYzOC01LjE2OS4zMTUtLjQ4Mi42NDUtLjk2Mi45ODgtMS40MzkuMy0uNTAzLjYxNy0xLjAwNi45NS0xLjUwOC4zNTktLjcuNzYtMS40MDQgMS4xOS0yLjEwNyAxLjQyNi0yLjQwMiAyLTUuMTE0IDIuMDA0LTcuODc1IDAtOC44NDQtNy41MTEtMTYuMDE0LTE2Ljc3Ni0xNi4wMTR6IiBmaWxsPSIjZGQ0YjNlIiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxlbGxpcHNlIHJ5PSI1LjU2NCIgcng9IjUuODI4IiBjeT0iMjM5LjAwMiIgY3g9IjIyNi43NDIiIGZpbGw9IiM4MDJkMjciIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0iTTE5MC4zMDEgMjM3LjI4M2MtNC42NyAwLTguNDU3IDMuODUzLTguNDU3IDguNjA2czMuNzg2IDguNjA3IDguNDU3IDguNjA3YzMuMDQzIDAgNC44MDYtLjk1OCA2LjMzNy0yLjUxNiAxLjUzLTEuNTU3IDIuMDg3LTMuOTEzIDIuMDg3LTYuMjkgMC0uMzYyLS4wMjMtLjcyMi0uMDY0LTEuMDc5aC04LjI1N3YzLjA0M2g0Ljg1Yy0uMTk3Ljc1OS0uNTMxIDEuNDUtMS4wNTggMS45ODYtLjk0Mi45NTgtMi4wMjggMS41NDgtMy45MDEgMS41NDgtMi44NzYgMC01LjIwOC0yLjM3Mi01LjIwOC01LjI5OSAwLTIuOTI2IDIuMzMyLTUuMjk5IDUuMjA4LTUuMjk5IDEuMzk5IDAgMi42MTguNDA3IDMuNTg0IDEuMjkzbDIuMzgxLTIuMzhjMC0uMDAyLS4wMDMtLjAwNC0uMDA0LS4wMDUtMS41ODgtMS41MjQtMy42Mi0yLjIxNS01Ljk1NS0yLjIxNXptNC40MyA1LjY2bC4wMDMuMDA2di0uMDAzeiIgZmlsbD0iI2ZmZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48cGF0aCBkPSJNMjE1LjE4NCAyNTEuOTI5bC03Ljk4IDcuOTc5IDI4LjQ3NyAyOC40NzVjLjI4Ny0uNjQ5LjQ0OS0xLjM2Ni40NDktMi4xMjN2LTMxLjE2NWMtLjQ2OS42NzUtLjkzNCAxLjM0OS0xLjM4MiAyLjAwNS0uNzkyIDEuMjc1LTEuNjgyIDIuNjQtMi40NjUgMy45OS0yLjM0NyA0LjA2NS0zLjk4MiA4LjAzOC00LjU4NSAxMy43OTQtLjE2Mi40ODUtLjUyNy43OTgtLjkzLjc5OS0uMzYzLS4wMDEtLjY5Ny0uMjU1LS44NzktLjY2N3YtLjAxMmMtLjU5My01LjgyMi0yLjIzNy05LjgyLTQuNi0xMy45MTQtLjc4My0xLjM1LTEuNjczLTIuNzE1LTIuNDY2LTMuOTktMS4xMzctMS42NjYtMi4zMjctMy40LTMuNjM3LTUuMTY5bC0uMDAyLS4wMDN6IiBmaWxsPSIjYzNjM2MzIi8+PHBhdGggZD0iTTIxMi45ODMgMjQ4LjQ5NWwtMzYuOTUyIDM2Ljk1M3YuODEyYTUuMjI3IDUuMjI3IDAgMCAwIDUuMjM4IDUuMjM4aDEuMDE1bDM1LjY2Ni0zNS42NjZhMTM2LjI3NSAxMzYuMjc1IDAgMCAwLTIuNzY0LTMuOSAzNy41NzUgMzcuNTc1IDAgMCAwLS45ODktMS40NGMtLjI5OS0uNTAzLS42MTYtMS4wMDYtLjk1LTEuNTA4LS4wODMtLjE2Mi0uMTc2LS4zMjYtLjI2NC0uNDg5eiIgZmlsbD0iI2ZkZGM0ZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48cGF0aCBkPSJNMjExLjk5OCAyNjEuMDgzbC02LjE1MiA2LjE1MSAyNC4yNjQgMjQuMjY0aC43ODFhNS4yMjcgNS4yMjcgMCAwIDAgNS4yMzktNS4yMzh2LTEuMDQ1eiIgZmlsbD0iI2ZmZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48L2c+PC9zdmc+);\\n\\t}\\n\\n\\t&[data-oembed-url*=\\\"facebook.com\\\"] .ck-media__placeholder {\\n\\t\\tbackground: hsl(220, 46%, 48%);\\n\\n\\t\\t& .ck-media__placeholder__icon {\\n\\t\\t\\tbackground-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMDI0cHgiIGhlaWdodD0iMTAyNHB4IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPiAgICAgICAgPHRpdGxlPkZpbGwgMTwvdGl0bGU+ICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPiAgICA8ZGVmcz48L2RlZnM+ICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImZMb2dvX1doaXRlIiBmaWxsPSIjRkZGRkZFIj4gICAgICAgICAgICA8cGF0aCBkPSJNOTY3LjQ4NCwwIEw1Ni41MTcsMCBDMjUuMzA0LDAgMCwyNS4zMDQgMCw1Ni41MTcgTDAsOTY3LjQ4MyBDMCw5OTguNjk0IDI1LjI5NywxMDI0IDU2LjUyMiwxMDI0IEw1NDcsMTAyNCBMNTQ3LDYyOCBMNDE0LDYyOCBMNDE0LDQ3MyBMNTQ3LDQ3MyBMNTQ3LDM1OS4wMjkgQzU0NywyMjYuNzY3IDYyNy43NzMsMTU0Ljc0NyA3NDUuNzU2LDE1NC43NDcgQzgwMi4yNjksMTU0Ljc0NyA4NTAuODQyLDE1OC45NTUgODY1LDE2MC44MzYgTDg2NSwyOTkgTDc4My4zODQsMjk5LjAzNyBDNzE5LjM5MSwyOTkuMDM3IDcwNywzMjkuNTI5IDcwNywzNzQuMjczIEw3MDcsNDczIEw4NjAuNDg3LDQ3MyBMODQwLjUwMSw2MjggTDcwNyw2MjggTDcwNywxMDI0IEw5NjcuNDg0LDEwMjQgQzk5OC42OTcsMTAyNCAxMDI0LDk5OC42OTcgMTAyNCw5NjcuNDg0IEwxMDI0LDU2LjUxNSBDMTAyNCwyNS4zMDMgOTk4LjY5NywwIDk2Ny40ODQsMCIgaWQ9IkZpbGwtMSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+);\\n\\t\\t}\\n\\n\\t\\t& .ck-media__placeholder__url__text {\\n\\t\\t\\tcolor: hsl(220, 100%, 90%);\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tcolor: hsl(0, 0%, 100%);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&[data-oembed-url*=\\\"instagram.com\\\"] .ck-media__placeholder {\\n\\t\\tbackground: linear-gradient(-135deg,hsl(246, 100%, 39%),hsl(302, 100%, 36%),hsl(0, 100%, 48%));\\n\\n\\t\\t& .ck-media__placeholder__icon {\\n\\t\\t\\tbackground-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSI1MDRweCIgaGVpZ2h0PSI1MDRweCIgdmlld0JveD0iMCAwIDUwNCA1MDQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+ICAgICAgICA8dGl0bGU+Z2x5cGgtbG9nb19NYXkyMDE2PC90aXRsZT4gICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+ICAgIDxkZWZzPiAgICAgICAgPHBvbHlnb24gaWQ9InBhdGgtMSIgcG9pbnRzPSIwIDAuMTU5IDUwMy44NDEgMC4xNTkgNTAzLjg0MSA1MDMuOTQgMCA1MDMuOTQiPjwvcG9seWdvbj4gICAgPC9kZWZzPiAgICA8ZyBpZD0iZ2x5cGgtbG9nb19NYXkyMDE2IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4gICAgICAgIDxnIGlkPSJHcm91cC0zIj4gICAgICAgICAgICA8bWFzayBpZD0ibWFzay0yIiBmaWxsPSJ3aGl0ZSI+ICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+ICAgICAgICAgICAgPC9tYXNrPiAgICAgICAgICAgIDxnIGlkPSJDbGlwLTIiPjwvZz4gICAgICAgICAgICA8cGF0aCBkPSJNMjUxLjkyMSwwLjE1OSBDMTgzLjUwMywwLjE1OSAxNzQuOTI0LDAuNDQ5IDE0OC4wNTQsMS42NzUgQzEyMS4yNCwyLjg5OCAxMDIuOTI3LDcuMTU3IDg2LjkwMywxMy4zODUgQzcwLjMzNywxOS44MjIgNTYuMjg4LDI4LjQzNiA0Mi4yODIsNDIuNDQxIEMyOC4yNzcsNTYuNDQ3IDE5LjY2Myw3MC40OTYgMTMuMjI2LDg3LjA2MiBDNi45OTgsMTAzLjA4NiAyLjczOSwxMjEuMzk5IDEuNTE2LDE0OC4yMTMgQzAuMjksMTc1LjA4MyAwLDE4My42NjIgMCwyNTIuMDggQzAsMzIwLjQ5NyAwLjI5LDMyOS4wNzYgMS41MTYsMzU1Ljk0NiBDMi43MzksMzgyLjc2IDYuOTk4LDQwMS4wNzMgMTMuMjI2LDQxNy4wOTcgQzE5LjY2Myw0MzMuNjYzIDI4LjI3Nyw0NDcuNzEyIDQyLjI4Miw0NjEuNzE4IEM1Ni4yODgsNDc1LjcyMyA3MC4zMzcsNDg0LjMzNyA4Ni45MDMsNDkwLjc3NSBDMTAyLjkyNyw0OTcuMDAyIDEyMS4yNCw1MDEuMjYxIDE0OC4wNTQsNTAyLjQ4NCBDMTc0LjkyNCw1MDMuNzEgMTgzLjUwMyw1MDQgMjUxLjkyMSw1MDQgQzMyMC4zMzgsNTA0IDMyOC45MTcsNTAzLjcxIDM1NS43ODcsNTAyLjQ4NCBDMzgyLjYwMSw1MDEuMjYxIDQwMC45MTQsNDk3LjAwMiA0MTYuOTM4LDQ5MC43NzUgQzQzMy41MDQsNDg0LjMzNyA0NDcuNTUzLDQ3NS43MjMgNDYxLjU1OSw0NjEuNzE4IEM0NzUuNTY0LDQ0Ny43MTIgNDg0LjE3OCw0MzMuNjYzIDQ5MC42MTYsNDE3LjA5NyBDNDk2Ljg0Myw0MDEuMDczIDUwMS4xMDIsMzgyLjc2IDUwMi4zMjUsMzU1Ljk0NiBDNTAzLjU1MSwzMjkuMDc2IDUwMy44NDEsMzIwLjQ5NyA1MDMuODQxLDI1Mi4wOCBDNTAzLjg0MSwxODMuNjYyIDUwMy41NTEsMTc1LjA4MyA1MDIuMzI1LDE0OC4yMTMgQzUwMS4xMDIsMTIxLjM5OSA0OTYuODQzLDEwMy4wODYgNDkwLjYxNiw4Ny4wNjIgQzQ4NC4xNzgsNzAuNDk2IDQ3NS41NjQsNTYuNDQ3IDQ2MS41NTksNDIuNDQxIEM0NDcuNTUzLDI4LjQzNiA0MzMuNTA0LDE5LjgyMiA0MTYuOTM4LDEzLjM4NSBDNDAwLjkxNCw3LjE1NyAzODIuNjAxLDIuODk4IDM1NS43ODcsMS42NzUgQzMyOC45MTcsMC40NDkgMzIwLjMzOCwwLjE1OSAyNTEuOTIxLDAuMTU5IFogTTI1MS45MjEsNDUuNTUgQzMxOS4xODYsNDUuNTUgMzI3LjE1NCw0NS44MDcgMzUzLjcxOCw0Ny4wMTkgQzM3OC4yOCw0OC4xMzkgMzkxLjYxOSw1Mi4yNDMgNDAwLjQ5Niw1NS42OTMgQzQxMi4yNTUsNjAuMjYzIDQyMC42NDcsNjUuNzIyIDQyOS40NjIsNzQuNTM4IEM0MzguMjc4LDgzLjM1MyA0NDMuNzM3LDkxLjc0NSA0NDguMzA3LDEwMy41MDQgQzQ1MS43NTcsMTEyLjM4MSA0NTUuODYxLDEyNS43MiA0NTYuOTgxLDE1MC4yODIgQzQ1OC4xOTMsMTc2Ljg0NiA0NTguNDUsMTg0LjgxNCA0NTguNDUsMjUyLjA4IEM0NTguNDUsMzE5LjM0NSA0NTguMTkzLDMyNy4zMTMgNDU2Ljk4MSwzNTMuODc3IEM0NTUuODYxLDM3OC40MzkgNDUxLjc1NywzOTEuNzc4IDQ0OC4zMDcsNDAwLjY1NSBDNDQzLjczNyw0MTIuNDE0IDQzOC4yNzgsNDIwLjgwNiA0MjkuNDYyLDQyOS42MjEgQzQyMC42NDcsNDM4LjQzNyA0MTIuMjU1LDQ0My44OTYgNDAwLjQ5Niw0NDguNDY2IEMzOTEuNjE5LDQ1MS45MTYgMzc4LjI4LDQ1Ni4wMiAzNTMuNzE4LDQ1Ny4xNCBDMzI3LjE1OCw0NTguMzUyIDMxOS4xOTEsNDU4LjYwOSAyNTEuOTIxLDQ1OC42MDkgQzE4NC42NSw0NTguNjA5IDE3Ni42ODQsNDU4LjM1MiAxNTAuMTIzLDQ1Ny4xNCBDMTI1LjU2MSw0NTYuMDIgMTEyLjIyMiw0NTEuOTE2IDEwMy4zNDUsNDQ4LjQ2NiBDOTEuNTg2LDQ0My44OTYgODMuMTk0LDQzOC40MzcgNzQuMzc5LDQyOS42MjEgQzY1LjU2NCw0MjAuODA2IDYwLjEwNCw0MTIuNDE0IDU1LjUzNCw0MDAuNjU1IEM1Mi4wODQsMzkxLjc3OCA0Ny45OCwzNzguNDM5IDQ2Ljg2LDM1My44NzcgQzQ1LjY0OCwzMjcuMzEzIDQ1LjM5MSwzMTkuMzQ1IDQ1LjM5MSwyNTIuMDggQzQ1LjM5MSwxODQuODE0IDQ1LjY0OCwxNzYuODQ2IDQ2Ljg2LDE1MC4yODIgQzQ3Ljk4LDEyNS43MiA1Mi4wODQsMTEyLjM4MSA1NS41MzQsMTAzLjUwNCBDNjAuMTA0LDkxLjc0NSA2NS41NjMsODMuMzUzIDc0LjM3OSw3NC41MzggQzgzLjE5NCw2NS43MjIgOTEuNTg2LDYwLjI2MyAxMDMuMzQ1LDU1LjY5MyBDMTEyLjIyMiw1Mi4yNDMgMTI1LjU2MSw0OC4xMzkgMTUwLjEyMyw0Ny4wMTkgQzE3Ni42ODcsNDUuODA3IDE4NC42NTUsNDUuNTUgMjUxLjkyMSw0NS41NSBaIiBpZD0iRmlsbC0xIiBmaWxsPSIjRkZGRkZGIiBtYXNrPSJ1cmwoI21hc2stMikiPjwvcGF0aD4gICAgICAgIDwvZz4gICAgICAgIDxwYXRoIGQ9Ik0yNTEuOTIxLDMzNi4wNTMgQzIwNS41NDMsMzM2LjA1MyAxNjcuOTQ3LDI5OC40NTcgMTY3Ljk0NywyNTIuMDggQzE2Ny45NDcsMjA1LjcwMiAyMDUuNTQzLDE2OC4xMDYgMjUxLjkyMSwxNjguMTA2IEMyOTguMjk4LDE2OC4xMDYgMzM1Ljg5NCwyMDUuNzAyIDMzNS44OTQsMjUyLjA4IEMzMzUuODk0LDI5OC40NTcgMjk4LjI5OCwzMzYuMDUzIDI1MS45MjEsMzM2LjA1MyBaIE0yNTEuOTIxLDEyMi43MTUgQzE4MC40NzQsMTIyLjcxNSAxMjIuNTU2LDE4MC42MzMgMTIyLjU1NiwyNTIuMDggQzEyMi41NTYsMzIzLjUyNiAxODAuNDc0LDM4MS40NDQgMjUxLjkyMSwzODEuNDQ0IEMzMjMuMzY3LDM4MS40NDQgMzgxLjI4NSwzMjMuNTI2IDM4MS4yODUsMjUyLjA4IEMzODEuMjg1LDE4MC42MzMgMzIzLjM2NywxMjIuNzE1IDI1MS45MjEsMTIyLjcxNSBaIiBpZD0iRmlsbC00IiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+ICAgICAgICA8cGF0aCBkPSJNNDE2LjYyNywxMTcuNjA0IEM0MTYuNjI3LDEzNC4zIDQwMy4wOTIsMTQ3LjgzNCAzODYuMzk2LDE0Ny44MzQgQzM2OS43MDEsMTQ3LjgzNCAzNTYuMTY2LDEzNC4zIDM1Ni4xNjYsMTE3LjYwNCBDMzU2LjE2NiwxMDAuOTA4IDM2OS43MDEsODcuMzczIDM4Ni4zOTYsODcuMzczIEM0MDMuMDkyLDg3LjM3MyA0MTYuNjI3LDEwMC45MDggNDE2LjYyNywxMTcuNjA0IiBpZD0iRmlsbC01IiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+ICAgIDwvZz48L3N2Zz4=);\\n\\t\\t}\\n\\n\\t\\t/* stylelint-disable-next-line no-descending-specificity */\\n\\t\\t& .ck-media__placeholder__url__text {\\n\\t\\t\\tcolor: hsl(302, 100%, 94%);\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tcolor: hsl(0, 0%, 100%);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&[data-oembed-url*=\\\"twitter.com\\\"] .ck.ck-media__placeholder {\\n\\t\\t/* Use gradient to contrast with focused widget (ckeditor/ckeditor5-media-embed#22). */\\n\\t\\tbackground: linear-gradient( to right, hsl(201, 85%, 70%), hsl(201, 85%, 35%) );\\n\\n\\t\\t& .ck-media__placeholder__icon {\\n\\t\\t\\tbackground-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IldoaXRlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQwMCA0MDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQwMCA0MDA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7ZmlsbDojRkZGRkZGO308L3N0eWxlPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MDAsMjAwYzAsMTEwLjUtODkuNSwyMDAtMjAwLDIwMFMwLDMxMC41LDAsMjAwUzg5LjUsMCwyMDAsMFM0MDAsODkuNSw0MDAsMjAweiBNMTYzLjQsMzA1LjVjODguNywwLDEzNy4yLTczLjUsMTM3LjItMTM3LjJjMC0yLjEsMC00LjItMC4xLTYuMmM5LjQtNi44LDE3LjYtMTUuMywyNC4xLTI1Yy04LjYsMy44LTE3LjksNi40LTI3LjcsNy42YzEwLTYsMTcuNi0xNS40LDIxLjItMjYuN2MtOS4zLDUuNS0xOS42LDkuNS0zMC42LDExLjdjLTguOC05LjQtMjEuMy0xNS4yLTM1LjItMTUuMmMtMjYuNiwwLTQ4LjIsMjEuNi00OC4yLDQ4LjJjMCwzLjgsMC40LDcuNSwxLjMsMTFjLTQwLjEtMi03NS42LTIxLjItOTkuNC01MC40Yy00LjEsNy4xLTYuNSwxNS40LTYuNSwyNC4yYzAsMTYuNyw4LjUsMzEuNSwyMS41LDQwLjFjLTcuOS0wLjItMTUuMy0yLjQtMjEuOC02YzAsMC4yLDAsMC40LDAsMC42YzAsMjMuNCwxNi42LDQyLjgsMzguNyw0Ny4zYy00LDEuMS04LjMsMS43LTEyLjcsMS43Yy0zLjEsMC02LjEtMC4zLTkuMS0wLjljNi4xLDE5LjIsMjMuOSwzMy4xLDQ1LDMzLjVjLTE2LjUsMTIuOS0zNy4zLDIwLjYtNTkuOSwyMC42Yy0zLjksMC03LjctMC4yLTExLjUtMC43QzExMC44LDI5Ny41LDEzNi4yLDMwNS41LDE2My40LDMwNS41Ii8+PC9zdmc+);\\n\\t\\t}\\n\\n\\t\\t& .ck-media__placeholder__url__text {\\n\\t\\t\\tcolor: hsl(201, 100%, 86%);\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tcolor: hsl(0, 0%, 100%);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-media-form{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-media-form .ck-labeled-field-view{display:inline-block}.ck.ck-media-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-media-form{flex-wrap:wrap}.ck.ck-media-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-media-form .ck-button{flex-basis:50%}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-media-embed/theme/mediaform.css\",\"webpack://./../ckeditor5-ui/theme/mixins/_rwd.css\"],\"names\":[],\"mappings\":\"AAOA,kBAEC,sBAAuB,CADvB,YAAa,CAEb,kBAAmB,CACnB,gBAqBD,CAnBC,yCACC,oBACD,CAEA,4BACC,YACD,CCbA,oCDCD,kBAeE,cAUF,CARE,yCACC,eACD,CAEA,6BACC,cACD,CCtBD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\\\";\\n\\n.ck.ck-media-form {\\n\\tdisplay: flex;\\n\\talign-items: flex-start;\\n\\tflex-direction: row;\\n\\tflex-wrap: nowrap;\\n\\n\\t& .ck-labeled-field-view {\\n\\t\\tdisplay: inline-block;\\n\\t}\\n\\n\\t& .ck-label {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t@mixin ck-media-phone {\\n\\t\\tflex-wrap: wrap;\\n\\n\\t\\t& .ck-labeled-field-view {\\n\\t\\t\\tflex-basis: 100%;\\n\\t\\t}\\n\\n\\t\\t& .ck-button {\\n\\t\\t\\tflex-basis: 50%;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@define-mixin ck-media-phone {\\n\\t@media screen and (max-width: 600px) {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-color-mention-background:rgba(153,0,48,.1);--ck-color-mention-text:#990030}.ck-content .mention{background:var(--ck-color-mention-background);color:var(--ck-color-mention-text)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-mention/mention.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,+CAAwD,CACxD,+BACD,CAEA,qBACC,6CAA8C,CAC9C,kCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-color-mention-background: hsla(341, 100%, 30%, 0.1);\\n\\t--ck-color-mention-text: hsl(341, 100%, 30%);\\n}\\n\\n.ck-content .mention {\\n\\tbackground: var(--ck-color-mention-background);\\n\\tcolor: var(--ck-color-mention-text);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-mention-list-max-height:300px}.ck.ck-mentions{max-height:var(--ck-mention-list-max-height);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.ck.ck-mentions>.ck-list__item{flex-shrink:0;overflow:hidden}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-mention/theme/mentionui.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,kCACD,CAEA,gBACC,4CAA6C,CAM7C,iBAAkB,CAJlB,eAAgB,CAMhB,2BAQD,CAJC,+BAEC,aAAc,CADd,eAED\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-mention-list-max-height: 300px;\\n}\\n\\n.ck.ck-mentions {\\n\\tmax-height: var(--ck-mention-list-max-height);\\n\\n\\toverflow-y: auto;\\n\\n\\t/* Prevent unnecessary horizontal scrollbar in Safari\\n\\thttps://github.com/ckeditor/ckeditor5-mention/issues/41 */\\n\\toverflow-x: hidden;\\n\\n\\toverscroll-behavior: contain;\\n\\n\\t/* Prevent unnecessary vertical scrollbar in Safari\\n\\thttps://github.com/ckeditor/ckeditor5-mention/issues/41 */\\n\\t& > .ck-list__item {\\n\\t\\toverflow: hidden;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-input-color{display:flex;flex-direction:row-reverse;width:100%}.ck.ck-input-color>input.ck.ck-input-text{flex-grow:1;min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown{min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown>.ck-input-color__button .ck-dropdown__arrow{display:none}.ck.ck-input-color .ck.ck-input-color__button{display:flex}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview{overflow:hidden;position:relative}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{display:block;position:absolute}[dir=ltr] .ck.ck-input-color>.ck.ck-input-text{border-bottom-right-radius:0;border-top-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-input-text{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-input-color>.ck.ck-input-text:focus{z-index:0}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{padding:0}[dir=ltr] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-bottom-left-radius:0;border-top-left-radius:0}[dir=ltr] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button:not(:focus){border-left:1px solid transparent}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-bottom-right-radius:0;border-top-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button:not(:focus){border-right:1px solid transparent}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button.ck-disabled{background:var(--ck-color-input-disabled-background)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{border-radius:0}.ck-rounded-corners .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview,.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{border:1px solid var(--ck-color-input-border);height:20px;width:20px}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{background:red;border-radius:2px;height:150%;left:50%;top:-30%;transform:rotate(45deg);transform-origin:50%;width:8%}.ck.ck-input-color .ck.ck-input-color__remove-color{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard);width:100%}.ck.ck-input-color .ck.ck-input-color__remove-color:not(:focus){border-bottom:1px solid var(--ck-color-input-border)}[dir=ltr] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-right-radius:0}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-left-radius:0}.ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-left:var(--ck-spacing-standard);margin-right:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-table/theme/colorinput.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/colorinput.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css\"],\"names\":[],\"mappings\":\"AAKA,mBAEC,YAAa,CACb,0BAA2B,CAF3B,UAgCD,CA5BC,0CAEC,WAAY,CADZ,cAED,CAEA,sCACC,cAMD,CAHC,kFACC,YACD,CAGD,8CAEC,YAWD,CATC,kFAEC,eAAgB,CADhB,iBAOD,CAJC,0IAEC,aAAc,CADd,iBAED,CC1BF,+CAGE,4BAA6B,CAD7B,yBAcF,CAhBA,+CAQE,2BAA4B,CAD5B,wBASF,CAHC,2CACC,SACD,CAIA,wEACC,SA0CD,CA3CA,kFAKE,2BAA4B,CAD5B,wBAuCF,CApCE,8FACC,iCACD,CATF,kFAcE,4BAA6B,CAD7B,yBA8BF,CA3BE,8FACC,kCACD,CAGD,oFACC,oDACD,CAEA,4GC1CF,eD2DE,CAjBA,+PCtCD,qCDuDC,CAjBA,4GAKC,6CAA8C,CAD9C,WAAY,CADZ,UAcD,CAVC,oKAKC,cAA6B,CAC7B,iBAAkB,CAHlB,WAAY,CADZ,QAAS,CADT,QAAS,CAMT,uBAAwB,CACxB,oBAAqB,CAJrB,QAKD,CAKH,oDAIC,2BAA4B,CAC5B,4BAA6B,CAH7B,qEAAwE,CADxE,UA0BD,CApBC,gEACC,oDACD,CATD,8DAYE,yBAeF,CA3BA,8DAgBE,wBAWF,CARC,gEACC,uCAMD,CAPA,0EAKE,sCAAuC,CADvC,cAGF\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-input-color {\\n\\twidth: 100%;\\n\\tdisplay: flex;\\n\\tflex-direction: row-reverse;\\n\\n\\t& > input.ck.ck-input-text {\\n\\t\\tmin-width: auto;\\n\\t\\tflex-grow: 1;\\n\\t}\\n\\n\\t& > div.ck.ck-dropdown {\\n\\t\\tmin-width: auto;\\n\\n\\t\\t/* This dropdown has no arrow but a color preview instead. */\\n\\t\\t& > .ck-input-color__button .ck-dropdown__arrow {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck.ck-input-color__button {\\n\\t\\t/* Resolving issue with misaligned buttons on Safari (see #10589) */\\n\\t\\tdisplay: flex;\\n\\n\\t\\t& .ck.ck-input-color__button__preview {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\toverflow: hidden;\\n\\n\\t\\t\\t& > .ck.ck-input-color__button__preview__no-color-indicator {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n@import \\\"../mixins/_rounded.css\\\";\\n\\n.ck.ck-input-color {\\n\\t& > .ck.ck-input-text {\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\tborder-top-right-radius: 0;\\n\\t\\t\\tborder-bottom-right-radius: 0;\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\tborder-top-left-radius: 0;\\n\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t}\\n\\n\\t\\t/* Make sure the focused input is always on top of the dropdown button so its\\n\\t\\t outline and border are never cropped (also when the input is read-only). */\\n\\t\\t&:focus {\\n\\t\\t\\tz-index: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck.ck-dropdown {\\n\\t\\t& > .ck.ck-button.ck-input-color__button {\\n\\t\\t\\tpadding: 0;\\n\\n\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\tborder-top-left-radius: 0;\\n\\t\\t\\t\\tborder-bottom-left-radius: 0;\\n\\n\\t\\t\\t\\t&:not(:focus) {\\n\\t\\t\\t\\t\\tborder-left: 1px solid transparent;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tborder-top-right-radius: 0;\\n\\t\\t\\t\\tborder-bottom-right-radius: 0;\\n\\n\\t\\t\\t\\t&:not(:focus) {\\n\\t\\t\\t\\t\\tborder-right: 1px solid transparent;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&.ck-disabled {\\n\\t\\t\\t\\tbackground: var(--ck-color-input-disabled-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t& > .ck.ck-input-color__button__preview {\\n\\t\\t\\t\\t@mixin ck-rounded-corners;\\n\\n\\t\\t\\t\\twidth: 20px;\\n\\t\\t\\t\\theight: 20px;\\n\\t\\t\\t\\tborder: 1px solid var(--ck-color-input-border);\\n\\n\\t\\t\\t\\t& > .ck.ck-input-color__button__preview__no-color-indicator {\\n\\t\\t\\t\\t\\ttop: -30%;\\n\\t\\t\\t\\t\\tleft: 50%;\\n\\t\\t\\t\\t\\theight: 150%;\\n\\t\\t\\t\\t\\twidth: 8%;\\n\\t\\t\\t\\t\\tbackground: hsl(0, 100%, 50%);\\n\\t\\t\\t\\t\\tborder-radius: 2px;\\n\\t\\t\\t\\t\\ttransform: rotate(45deg);\\n\\t\\t\\t\\t\\ttransform-origin: 50%;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck.ck-input-color__remove-color {\\n\\t\\twidth: 100%;\\n\\t\\tpadding: calc(var(--ck-spacing-standard) / 2) var(--ck-spacing-standard);\\n\\n\\t\\tborder-bottom-left-radius: 0;\\n\\t\\tborder-bottom-right-radius: 0;\\n\\n\\t\\t&:not(:focus) {\\n\\t\\t\\tborder-bottom: 1px solid var(--ck-color-input-border);\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\tborder-top-right-radius: 0;\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\tborder-top-left-radius: 0;\\n\\t\\t}\\n\\n\\t\\t& .ck.ck-icon {\\n\\t\\t\\tmargin-right: var(--ck-spacing-standard);\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tmargin-right: 0;\\n\\t\\t\\t\\tmargin-left: var(--ck-spacing-standard);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t@nest .ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-form{padding:0 0 var(--ck-spacing-large)}.ck.ck-form:focus{outline:none}.ck.ck-form .ck.ck-input-text{min-width:100%;width:0}.ck.ck-form .ck.ck-dropdown{min-width:100%}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button:not(:focus){border:1px solid var(--ck-color-base-border)}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button .ck-button__label{width:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/form.css\"],\"names\":[],\"mappings\":\"AAKA,YACC,mCAyBD,CAvBC,kBAEC,YACD,CAEA,8BACC,cAAe,CACf,OACD,CAEA,4BACC,cAWD,CARE,6DACC,4CACD,CAEA,mEACC,UACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-form {\\n\\tpadding: 0 0 var(--ck-spacing-large);\\n\\n\\t&:focus {\\n\\t\\t/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */\\n\\t\\toutline: none;\\n\\t}\\n\\n\\t& .ck.ck-input-text {\\n\\t\\tmin-width: 100%;\\n\\t\\twidth: 0;\\n\\t}\\n\\n\\t& .ck.ck-dropdown {\\n\\t\\tmin-width: 100%;\\n\\n\\t\\t& .ck-dropdown__button {\\n\\t\\t\\t&:not(:focus) {\\n\\t\\t\\t\\tborder: 1px solid var(--ck-color-base-border);\\n\\t\\t\\t}\\n\\n\\t\\t\\t& .ck-button__label {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-table-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-table-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row{padding:var(--ck-spacing-standard) var(--ck-spacing-large) 0}[dir=ltr] .ck.ck-form__row>:not(.ck-label)+*{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-form__row>:not(.ck-label)+*{margin-right:var(--ck-spacing-large)}.ck.ck-form__row>.ck-label{min-width:100%;width:100%}.ck.ck-form__row.ck-table-form__action-row{margin-top:var(--ck-spacing-large)}.ck.ck-form__row.ck-table-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-table/theme/formrow.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/formrow.css\"],\"names\":[],\"mappings\":\"AAKA,iBACC,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAaD,CAVC,iCACC,WACD,CAGC,wHAEC,sBACD,CCbF,iBACC,4DA2BD,CAvBE,6CAEE,mCAMF,CARA,6CAME,oCAEF,CAGD,2BAEC,cAAe,CADf,UAED,CAEA,2CACC,kCAKD,CAHC,wEACC,0BACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-form__row {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-wrap: nowrap;\\n\\tjustify-content: space-between;\\n\\n\\t/* Ignore labels that work as fieldset legends */\\n\\t& > *:not(.ck-label) {\\n\\t\\tflex-grow: 1;\\n\\t}\\n\\n\\t&.ck-table-form__action-row {\\n\\t\\t& .ck-button-save,\\n\\t\\t& .ck-button-cancel {\\n\\t\\t\\tjustify-content: center;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck.ck-form__row {\\n\\tpadding: var(--ck-spacing-standard) var(--ck-spacing-large) 0;\\n\\n\\t/* Ignore labels that work as fieldset legends */\\n\\t& > *:not(.ck-label) {\\n\\t\\t& + * {\\n\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\tmargin-left: var(--ck-spacing-large);\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tmargin-right: var(--ck-spacing-large);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck-label {\\n\\t\\twidth: 100%;\\n\\t\\tmin-width: 100%;\\n\\t}\\n\\n\\t&.ck-table-form__action-row {\\n\\t\\tmargin-top: var(--ck-spacing-large);\\n\\n\\t\\t& .ck-button .ck-button__label {\\n\\t\\t\\tcolor: var(--ck-color-text);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck .ck-insert-table-dropdown__grid{display:flex;flex-direction:row;flex-wrap:wrap}:root{--ck-insert-table-dropdown-padding:10px;--ck-insert-table-dropdown-box-height:11px;--ck-insert-table-dropdown-box-width:12px;--ck-insert-table-dropdown-box-margin:1px}.ck .ck-insert-table-dropdown__grid{padding:var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0;width:calc(var(--ck-insert-table-dropdown-box-width)*10 + var(--ck-insert-table-dropdown-box-margin)*20 + var(--ck-insert-table-dropdown-padding)*2)}.ck .ck-insert-table-dropdown__label,.ck[dir=rtl] .ck-insert-table-dropdown__label{text-align:center}.ck .ck-insert-table-dropdown-grid-box{border:1px solid var(--ck-color-base-border);border-radius:1px;margin:var(--ck-insert-table-dropdown-box-margin);min-height:var(--ck-insert-table-dropdown-box-height);min-width:var(--ck-insert-table-dropdown-box-width);outline:none;transition:none}.ck .ck-insert-table-dropdown-grid-box:focus{box-shadow:none}.ck .ck-insert-table-dropdown-grid-box.ck-on{background:var(--ck-color-focus-outer-shadow);border-color:var(--ck-color-focus-border)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-table/theme/inserttable.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/inserttable.css\"],\"names\":[],\"mappings\":\"AAKA,oCACC,YAAa,CACb,kBAAmB,CACnB,cACD,CCJA,MACC,uCAAwC,CACxC,0CAA2C,CAC3C,yCAA0C,CAC1C,yCACD,CAEA,oCAGC,yFAA0F,CAD1F,oJAED,CAEA,mFAEC,iBACD,CAEA,uCAIC,4CAA6C,CAC7C,iBAAkB,CAFlB,iDAAkD,CADlD,qDAAsD,CADtD,mDAAoD,CAKpD,YAAa,CACb,eAUD,CARC,6CACC,eACD,CAEA,6CAEC,6CAA8C,CAD9C,yCAED\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck .ck-insert-table-dropdown__grid {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-wrap: wrap;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-insert-table-dropdown-padding: 10px;\\n\\t--ck-insert-table-dropdown-box-height: 11px;\\n\\t--ck-insert-table-dropdown-box-width: 12px;\\n\\t--ck-insert-table-dropdown-box-margin: 1px;\\n}\\n\\n.ck .ck-insert-table-dropdown__grid {\\n\\t/* The width of a container should match 10 items in a row so there will be a 10x10 grid. */\\n\\twidth: calc(var(--ck-insert-table-dropdown-box-width) * 10 + var(--ck-insert-table-dropdown-box-margin) * 20 + var(--ck-insert-table-dropdown-padding) * 2);\\n\\tpadding: var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0;\\n}\\n\\n.ck .ck-insert-table-dropdown__label,\\n.ck[dir=rtl] .ck-insert-table-dropdown__label {\\n\\ttext-align: center;\\n}\\n\\n.ck .ck-insert-table-dropdown-grid-box {\\n\\tmin-width: var(--ck-insert-table-dropdown-box-width);\\n\\tmin-height: var(--ck-insert-table-dropdown-box-height);\\n\\tmargin: var(--ck-insert-table-dropdown-box-margin);\\n\\tborder: 1px solid var(--ck-color-base-border);\\n\\tborder-radius: 1px;\\n\\toutline: none;\\n\\ttransition: none;\\n\\n\\t&:focus {\\n\\t\\tbox-shadow: none;\\n\\t}\\n\\n\\t&.ck-on {\\n\\t\\tborder-color: var(--ck-color-focus-border);\\n\\t\\tbackground: var(--ck-color-focus-outer-shadow);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-content .table{display:table;margin:.9em auto}.ck-content .table table{border:1px double #b3b3b3;border-collapse:collapse;border-spacing:0;height:100%;width:100%}.ck-content .table table td,.ck-content .table table th{border:1px solid #bfbfbf;min-width:2em;padding:.4em}.ck-content .table table th{background:rgba(0,0,0,.05);font-weight:700}.ck-content[dir=rtl] .table th{text-align:right}.ck-content[dir=ltr] .table th{text-align:left}.ck-editor__editable .ck-table-bogus-paragraph{display:inline-block;width:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-table/theme/table.css\"],\"names\":[],\"mappings\":\"AAKA,mBAKC,aAAc,CADd,gBAiCD,CA9BC,yBAYC,yBAAkC,CAVlC,wBAAyB,CACzB,gBAAiB,CAKjB,WAAY,CADZ,UAsBD,CAfC,wDAQC,wBAAiC,CANjC,aAAc,CACd,YAMD,CAEA,4BAEC,0BAA+B,CAD/B,eAED,CAMF,+BACC,gBACD,CAEA,+BACC,eACD,CAEA,+CAKC,oBAAqB,CAMrB,UACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck-content .table {\\n\\t/* Give the table widget some air and center it horizontally */\\n\\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\\n\\tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\\n\\tmargin: 0.9em auto;\\n\\tdisplay: table;\\n\\n\\t& table {\\n\\t\\t/* The table cells should have slight borders */\\n\\t\\tborder-collapse: collapse;\\n\\t\\tborder-spacing: 0;\\n\\n\\t\\t/* Table width and height are set on the parent <figure>. Make sure the table inside stretches\\n\\t\\tto the full dimensions of the container (https://github.com/ckeditor/ckeditor5/issues/6186). */\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\n\\t\\t/* The outer border of the table should be slightly darker than the inner lines.\\n\\t\\tAlso see https://github.com/ckeditor/ckeditor5-table/issues/50. */\\n\\t\\tborder: 1px double hsl(0, 0%, 70%);\\n\\n\\t\\t& td,\\n\\t\\t& th {\\n\\t\\t\\tmin-width: 2em;\\n\\t\\t\\tpadding: .4em;\\n\\n\\t\\t\\t/* The border is inherited from .ck-editor__nested-editable styles, so theoretically it's not necessary here.\\n\\t\\t\\tHowever, the border is a content style, so it should use .ck-content (so it works outside the editor).\\n\\t\\t\\tHence, the duplication. See https://github.com/ckeditor/ckeditor5/issues/6314 */\\n\\t\\t\\tborder: 1px solid hsl(0, 0%, 75%);\\n\\t\\t}\\n\\n\\t\\t& th {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tbackground: hsla(0, 0%, 0%, 5%);\\n\\t\\t}\\n\\t}\\n}\\n\\n/* Text alignment of the table header should match the editor settings and override the native browser styling,\\nwhen content is available outside the editor. See https://github.com/ckeditor/ckeditor5/issues/6638 */\\n.ck-content[dir=\\\"rtl\\\"] .table th {\\n\\ttext-align: right;\\n}\\n\\n.ck-content[dir=\\\"ltr\\\"] .table th {\\n\\ttext-align: left;\\n}\\n\\n.ck-editor__editable .ck-table-bogus-paragraph {\\n\\t/*\\n\\t * Use display:inline-block to force Chrome/Safari to limit text mutations to this element.\\n\\t * See https://github.com/ckeditor/ckeditor5/issues/6062.\\n\\t */\\n\\tdisplay: inline-block;\\n\\n\\t/*\\n\\t * Inline HTML elements nested in the span should always be dimensioned in relation to the whole cell width.\\n\\t * See https://github.com/ckeditor/ckeditor5/issues/9117.\\n\\t */\\n\\twidth: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-color-selector-caption-background:#f7f7f7;--ck-color-selector-caption-text:#333;--ck-color-selector-caption-highlighted-background:#fd0}.ck-content .table>figcaption{background-color:var(--ck-color-selector-caption-background);caption-side:top;color:var(--ck-color-selector-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;text-align:center;word-break:break-word}.ck.ck-editor__editable .table>figcaption.table__caption_highlighted{animation:ck-table-caption-highlight .6s ease-out}.ck.ck-editor__editable .table>figcaption.ck-placeholder:before{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}@keyframes ck-table-caption-highlight{0%{background-color:var(--ck-color-selector-caption-highlighted-background)}to{background-color:var(--ck-color-selector-caption-background)}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-table/theme/tablecaption.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,8CAAuD,CACvD,qCAAiD,CACjD,uDACD,CAGA,8BAMC,4DAA6D,CAJ7D,gBAAiB,CAGjB,2CAA4C,CAJ5C,qBAAsB,CAOtB,eAAgB,CAChB,mBAAoB,CAFpB,YAAa,CAHb,iBAAkB,CADlB,qBAOD,CAIC,qEACC,iDACD,CAEA,gEASC,eAAgB,CARhB,oBAAqB,CACrB,qBAAsB,CAQtB,sBAAuB,CAFvB,kBAGD,CAGD,sCACC,GACC,wEACD,CAEA,GACC,4DACD,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-color-selector-caption-background: hsl(0, 0%, 97%);\\n\\t--ck-color-selector-caption-text: hsl(0, 0%, 20%);\\n\\t--ck-color-selector-caption-highlighted-background: hsl(52deg 100% 50%);\\n}\\n\\n/* Content styles */\\n.ck-content .table > figcaption {\\n\\tdisplay: table-caption;\\n\\tcaption-side: top;\\n\\tword-break: break-word;\\n\\ttext-align: center;\\n\\tcolor: var(--ck-color-selector-caption-text);\\n\\tbackground-color: var(--ck-color-selector-caption-background);\\n\\tpadding: .6em;\\n\\tfont-size: .75em;\\n\\toutline-offset: -1px;\\n}\\n\\n/* Editing styles */\\n.ck.ck-editor__editable .table > figcaption {\\n\\t&.table__caption_highlighted {\\n\\t\\tanimation: ck-table-caption-highlight .6s ease-out;\\n\\t}\\n\\n\\t&.ck-placeholder::before {\\n\\t\\tpadding-left: inherit;\\n\\t\\tpadding-right: inherit;\\n\\n\\t\\t/*\\n\\t\\t * Make sure the table caption placeholder doesn't overflow the placeholder area.\\n\\t\\t * See https://github.com/ckeditor/ckeditor5/issues/9162.\\n\\t\\t */\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n@keyframes ck-table-caption-highlight {\\n\\t0% {\\n\\t\\tbackground-color: var(--ck-color-selector-caption-highlighted-background);\\n\\t}\\n\\n\\t100% {\\n\\t\\tbackground-color: var(--ck-color-selector-caption-background);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row{flex-wrap:wrap}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:first-of-type{flex-grow:0.57}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:last-of-type{flex-grow:0.43}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar .ck-button{flex-grow:1}.ck.ck-table-cell-properties-form{width:320px}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__padding-row{align-self:flex-end;padding:0;width:25%}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar{background:none;margin-top:var(--ck-spacing-standard)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-table/theme/tablecellproperties.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/tablecellproperties.css\"],\"names\":[],\"mappings\":\"AAOE,6FACC,cAiBD,CAdE,0HAEC,cACD,CAEA,yHAEC,cACD,CAEA,uHACC,WACD,CClBJ,kCACC,WAkBD,CAfE,2FACC,mBAAoB,CACpB,SAAU,CACV,SACD,CAGC,4GACC,eAAgB,CAGhB,qCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-table-cell-properties-form {\\n\\t& .ck-form__row {\\n\\t\\t&.ck-table-cell-properties-form__alignment-row {\\n\\t\\t\\tflex-wrap: wrap;\\n\\n\\t\\t\\t& .ck.ck-toolbar {\\n\\t\\t\\t\\t&:first-of-type {\\n\\t\\t\\t\\t\\t/* 4 buttons out of 7 (h-alignment + v-alignment) = 0.57 */\\n\\t\\t\\t\\t\\tflex-grow: 0.57;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&:last-of-type {\\n\\t\\t\\t\\t\\t/* 3 buttons out of 7 (h-alignment + v-alignment) = 0.43 */\\n\\t\\t\\t\\t\\tflex-grow: 0.43;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t& .ck-button {\\n\\t\\t\\t\\t\\tflex-grow: 1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-table-cell-properties-form {\\n\\twidth: 320px;\\n\\n\\t& .ck-form__row {\\n\\t\\t&.ck-table-cell-properties-form__padding-row {\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\twidth: 25%;\\n\\t\\t}\\n\\n\\t\\t&.ck-table-cell-properties-form__alignment-row {\\n\\t\\t\\t& .ck.ck-toolbar {\\n\\t\\t\\t\\tbackground: none;\\n\\n\\t\\t\\t\\t/* Compensate for missing input label that would push the margin (toolbar has no inputs). */\\n\\t\\t\\t\\tmargin-top: var(--ck-spacing-standard);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-color-selector-column-resizer-hover:var(--ck-color-base-active);--ck-table-column-resizer-width:7px;--ck-table-column-resizer-position-offset:calc(var(--ck-table-column-resizer-width)*-0.5 - 0.5px)}.ck-content .table .ck-table-resized{table-layout:fixed}.ck-content .table table{overflow:hidden}.ck-content .table td,.ck-content .table th{overflow-wrap:break-word;position:relative}.ck.ck-editor__editable .table .ck-table-column-resizer{bottom:-999999px;cursor:col-resize;position:absolute;right:var(--ck-table-column-resizer-position-offset);top:-999999px;user-select:none;width:var(--ck-table-column-resizer-width);z-index:var(--ck-z-default)}.ck.ck-editor__editable .table[draggable] .ck-table-column-resizer,.ck.ck-editor__editable.ck-column-resize_disabled .table .ck-table-column-resizer{display:none}.ck.ck-editor__editable .table .ck-table-column-resizer:hover,.ck.ck-editor__editable .table .ck-table-column-resizer__active{background-color:var(--ck-color-selector-column-resizer-hover);opacity:.25}.ck.ck-editor__editable[dir=rtl] .table .ck-table-column-resizer{left:var(--ck-table-column-resizer-position-offset);right:unset}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-table/theme/tablecolumnresize.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,oEAAqE,CACrE,mCAAoC,CAIpC,iGACD,CAEA,qCACC,kBACD,CAEA,yBACC,eACD,CAEA,4CAIC,wBAAyB,CACzB,iBACD,CAEA,wDAOC,gBAAiB,CAGjB,iBAAkB,CATlB,iBAAkB,CAOlB,oDAAqD,CAFrD,aAAc,CAKd,gBAAiB,CAFjB,0CAA2C,CAG3C,2BACD,CAQA,qJACC,YACD,CAEA,8HAEC,8DAA+D,CAC/D,WACD,CAEA,iEACC,mDAAoD,CACpD,WACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-color-selector-column-resizer-hover: var(--ck-color-base-active);\\n\\t--ck-table-column-resizer-width: 7px;\\n\\n\\t/* The offset used for absolute positioning of the resizer element, so that it is placed exactly above the cell border.\\n\\t The value is: minus half the width of the resizer decreased additionaly by the half the width of the border (0.5px). */\\n\\t--ck-table-column-resizer-position-offset: calc(var(--ck-table-column-resizer-width) * -0.5 - 0.5px);\\n}\\n\\n.ck-content .table .ck-table-resized {\\n\\ttable-layout: fixed;\\n}\\n\\n.ck-content .table table {\\n\\toverflow: hidden;\\n}\\n\\n.ck-content .table td,\\n.ck-content .table th {\\n\\t/* To prevent text overflowing beyond its cell when columns are resized by resize handler\\n\\t(https://github.com/ckeditor/ckeditor5/pull/14379#issuecomment-1589460978). */\\n\\toverflow-wrap: break-word;\\n\\tposition: relative;\\n}\\n\\n.ck.ck-editor__editable .table .ck-table-column-resizer {\\n\\tposition: absolute;\\n\\t/* The resizer element resides in each cell so to occupy the entire height of the table, which is unknown from a CSS point of view,\\n\\t it is extended to an extremely high height. Even for screens with a very high pixel density, the resizer will fulfill its role as\\n\\t it should, i.e. for a screen of 476 ppi the total height of the resizer will take over 350 sheets of A4 format, which is totally\\n\\t unrealistic height for a single table. */\\n\\ttop: -999999px;\\n\\tbottom: -999999px;\\n\\tright: var(--ck-table-column-resizer-position-offset);\\n\\twidth: var(--ck-table-column-resizer-width);\\n\\tcursor: col-resize;\\n\\tuser-select: none;\\n\\tz-index: var(--ck-z-default);\\n}\\n\\n.ck.ck-editor__editable.ck-column-resize_disabled .table .ck-table-column-resizer {\\n\\tdisplay: none;\\n}\\n\\n/* The resizer elements, which are extended to an extremely high height, break the drag & drop feature in Chrome. To make it work again,\\n all resizers must be hidden while the table is dragged. */\\n.ck.ck-editor__editable .table[draggable] .ck-table-column-resizer {\\n\\tdisplay: none;\\n}\\n\\n.ck.ck-editor__editable .table .ck-table-column-resizer:hover,\\n.ck.ck-editor__editable .table .ck-table-column-resizer__active {\\n\\tbackground-color: var(--ck-color-selector-column-resizer-hover);\\n\\topacity: 0.25;\\n}\\n\\n.ck.ck-editor__editable[dir=rtl] .table .ck-table-column-resizer {\\n\\tleft: var(--ck-table-column-resizer-position-offset);\\n\\tright: unset;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-color-selector-focused-cell-background:rgba(158,201,250,.3)}.ck-widget.table td.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table td.ck-editor__nested-editable:focus,.ck-widget.table th.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table th.ck-editor__nested-editable:focus{background:var(--ck-color-selector-focused-cell-background);border-style:none;outline:1px solid var(--ck-color-focus-border);outline-offset:-1px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/tableediting.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,gEACD,CAKE,8QAGC,2DAA4D,CAK5D,iBAAkB,CAClB,8CAA+C,CAC/C,mBACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-color-selector-focused-cell-background: hsla(212, 90%, 80%, .3);\\n}\\n\\n.ck-widget.table {\\n\\t& td,\\n\\t& th {\\n\\t\\t&.ck-editor__nested-editable.ck-editor__nested-editable_focused,\\n\\t\\t&.ck-editor__nested-editable:focus {\\n\\t\\t\\t/* A very slight background to highlight the focused cell */\\n\\t\\t\\tbackground: var(--ck-color-selector-focused-cell-background);\\n\\n\\t\\t\\t/* Fixes the problem where surrounding cells cover the focused cell's border.\\n\\t\\t\\tIt does not fix the problem in all places but the UX is improved.\\n\\t\\t\\tSee https://github.com/ckeditor/ckeditor5-table/issues/29. */\\n\\t\\t\\tborder-style: none;\\n\\t\\t\\toutline: 1px solid var(--ck-color-focus-border);\\n\\t\\t\\toutline-offset: -1px; /* progressive enhancement - no IE support */\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-table-form .ck-form__row.ck-table-form__background-row,.ck.ck-table-form .ck-form__row.ck-table-form__border-row{flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{align-items:center;flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view{align-items:center;display:flex;flex-direction:column-reverse}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view .ck.ck-dropdown,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{flex-grow:0}.ck.ck-table-form .ck.ck-labeled-field-view{position:relative}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{bottom:calc(var(--ck-table-properties-error-arrow-size)*-1);left:50%;position:absolute;transform:translate(-50%,100%);z-index:1}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{content:\\\"\\\";left:50%;position:absolute;top:calc(var(--ck-table-properties-error-arrow-size)*-1);transform:translateX(-50%)}:root{--ck-table-properties-error-arrow-size:6px;--ck-table-properties-min-error-width:150px}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-labeled-field-view>.ck-label{font-size:var(--ck-font-size-tiny);text-align:center}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-style,.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-width{max-width:80px;min-width:80px;width:80px}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{padding:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__height,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__width{margin:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{align-self:flex-end;display:inline-block;height:var(--ck-ui-component-min-height);line-height:var(--ck-ui-component-min-height);margin:0 var(--ck-spacing-small)}.ck.ck-table-form .ck.ck-labeled-field-view{padding-top:var(--ck-spacing-standard)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{border-radius:0}.ck-rounded-corners .ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status,.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{background:var(--ck-color-base-error);color:var(--ck-color-base-background);min-width:var(--ck-table-properties-min-error-width);padding:var(--ck-spacing-small) var(--ck-spacing-medium);text-align:center}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{border-color:transparent transparent var(--ck-color-base-error) transparent;border-style:solid;border-width:0 var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{animation:ck-table-form-labeled-view-status-appear .15s ease both}.ck.ck-table-form .ck.ck-labeled-field-view .ck-input.ck-error:not(:focus)+.ck.ck-labeled-field-view__status{display:none}@keyframes ck-table-form-labeled-view-status-appear{0%{opacity:0}to{opacity:1}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-table/theme/tableform.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/tableform.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css\"],\"names\":[],\"mappings\":\"AAWE,wHACC,cACD,CAEA,8DAEC,kBAAmB,CADnB,cAgBD,CAbC,qFAGC,kBAAmB,CAFnB,YAAa,CACb,6BAMD,CAEA,sMACC,WACD,CAIF,4CAEC,iBAoBD,CAlBC,8EAGC,2DAAgE,CADhE,QAAS,CADT,iBAAkB,CAGlB,8BAA+B,CAG/B,SAUD,CAPC,oFACC,UAAW,CAGX,QAAS,CAFT,iBAAkB,CAClB,wDAA6D,CAE7D,0BACD,CChDH,MACC,0CAA2C,CAC3C,2CACD,CAMI,2FACC,kCAAmC,CACnC,iBACD,CAGD,8KAIC,cAAe,CADf,cAAe,CADf,UAGD,CAGD,8DACC,SAcD,CAZC,yMAEC,QACD,CAEA,iGACC,mBAAoB,CACpB,oBAAqB,CACrB,wCAAyC,CACzC,6CAA8C,CAC9C,gCACD,CAIF,4CACC,sCAyBD,CAvBC,8ECxCD,eDyDC,CAjBA,mMCpCA,qCDqDA,CAjBA,8EAGC,qCAAsC,CACtC,qCAAsC,CAEtC,oDAAqD,CADrD,wDAAyD,CAEzD,iBAUD,CAPC,oFACC,2EAA4E,CAE5E,kBAAmB,CADnB,kJAED,CAdD,8EAgBC,iEACD,CAGA,6GACC,YACD,CAIF,oDACC,GACC,SACD,CAEA,GACC,SACD,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-table-form {\\n\\t& .ck-form__row {\\n\\t\\t&.ck-table-form__border-row {\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t}\\n\\n\\t\\t&.ck-table-form__background-row {\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t}\\n\\n\\t\\t&.ck-table-form__dimensions-row {\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\t& .ck-labeled-field-view {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\tflex-direction: column-reverse;\\n\\t\\t\\t\\talign-items: center;\\n\\n\\t\\t\\t\\t& .ck.ck-dropdown {\\n\\t\\t\\t\\t\\tflex-grow: 0;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t& .ck-table-form__dimension-operator {\\n\\t\\t\\t\\tflex-grow: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck.ck-labeled-field-view {\\n\\t\\t/* Allow absolute positioning of the status (error) balloons. */\\n\\t\\tposition: relative;\\n\\n\\t\\t& .ck.ck-labeled-field-view__status {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tleft: 50%;\\n\\t\\t\\tbottom: calc( -1 * var(--ck-table-properties-error-arrow-size) );\\n\\t\\t\\ttransform: translate(-50%,100%);\\n\\n\\t\\t\\t/* Make sure the balloon status stays on top of other form elements. */\\n\\t\\t\\tz-index: 1;\\n\\n\\t\\t\\t/* The arrow pointing towards the field. */\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\tcontent: \\\"\\\";\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: calc( -1 * var(--ck-table-properties-error-arrow-size) );\\n\\t\\t\\t\\tleft: 50%;\\n\\t\\t\\t\\ttransform: translateX( -50% );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../mixins/_rounded.css\\\";\\n\\n:root {\\n\\t--ck-table-properties-error-arrow-size: 6px;\\n\\t--ck-table-properties-min-error-width: 150px;\\n}\\n\\n.ck.ck-table-form {\\n\\t& .ck-form__row {\\n\\t\\t&.ck-table-form__border-row {\\n\\t\\t\\t& .ck-labeled-field-view {\\n\\t\\t\\t\\t& > .ck-label {\\n\\t\\t\\t\\t\\tfont-size: var(--ck-font-size-tiny);\\n\\t\\t\\t\\t\\ttext-align: center;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t& .ck-table-form__border-style,\\n\\t\\t\\t& .ck-table-form__border-width {\\n\\t\\t\\t\\twidth: 80px;\\n\\t\\t\\t\\tmin-width: 80px;\\n\\t\\t\\t\\tmax-width: 80px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&.ck-table-form__dimensions-row {\\n\\t\\t\\tpadding: 0;\\n\\n\\t\\t\\t& .ck-table-form__dimensions-row__width,\\n\\t\\t\\t& .ck-table-form__dimensions-row__height {\\n\\t\\t\\t\\tmargin: 0\\n\\t\\t\\t}\\n\\n\\t\\t\\t& .ck-table-form__dimension-operator {\\n\\t\\t\\t\\talign-self: flex-end;\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\theight: var(--ck-ui-component-min-height);\\n\\t\\t\\t\\tline-height: var(--ck-ui-component-min-height);\\n\\t\\t\\t\\tmargin: 0 var(--ck-spacing-small);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck.ck-labeled-field-view {\\n\\t\\tpadding-top: var(--ck-spacing-standard);\\n\\n\\t\\t& .ck.ck-labeled-field-view__status {\\n\\t\\t\\t@mixin ck-rounded-corners;\\n\\n\\t\\t\\tbackground: var(--ck-color-base-error);\\n\\t\\t\\tcolor: var(--ck-color-base-background);\\n\\t\\t\\tpadding: var(--ck-spacing-small) var(--ck-spacing-medium);\\n\\t\\t\\tmin-width: var(--ck-table-properties-min-error-width);\\n\\t\\t\\ttext-align: center;\\n\\n\\t\\t\\t/* The arrow pointing towards the field. */\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\tborder-color: transparent transparent var(--ck-color-base-error) transparent;\\n\\t\\t\\t\\tborder-width: 0 var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size);\\n\\t\\t\\t\\tborder-style: solid;\\n\\t\\t\\t}\\n\\n\\t\\t\\tanimation: ck-table-form-labeled-view-status-appear .15s ease both;\\n\\t\\t}\\n\\n\\t\\t/* Hide the error balloon when the field is blurred. Makes the experience much more clear. */\\n\\t\\t& .ck-input.ck-error:not(:focus) + .ck.ck-labeled-field-view__status {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n@keyframes ck-table-form-labeled-view-status-appear {\\n\\t0% {\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t100% {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t@nest .ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-content:baseline;flex-basis:0;flex-wrap:wrap}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items{flex-wrap:nowrap}.ck.ck-table-properties-form{width:320px}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-self:flex-end;padding:0}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar{background:none;margin-top:var(--ck-spacing-standard)}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items>*{width:40px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-table/theme/tableproperties.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/tableproperties.css\"],\"names\":[],\"mappings\":\"AAOE,mFAGC,sBAAuB,CADvB,YAAa,CADb,cAOD,CAHC,qHACC,gBACD,CCTH,6BACC,WAmBD,CAhBE,mFACC,mBAAoB,CACpB,SAYD,CAVC,kGACC,eAAgB,CAGhB,qCAKD,CAHC,uHACC,UACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-table-properties-form {\\n\\t& .ck-form__row {\\n\\t\\t&.ck-table-properties-form__alignment-row {\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t\\tflex-basis: 0;\\n\\t\\t\\talign-content: baseline;\\n\\n\\t\\t\\t& .ck.ck-toolbar .ck-toolbar__items {\\n\\t\\t\\t\\tflex-wrap: nowrap;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-table-properties-form {\\n\\twidth: 320px;\\n\\n\\t& .ck-form__row {\\n\\t\\t&.ck-table-properties-form__alignment-row {\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\tpadding: 0;\\n\\n\\t\\t\\t& .ck.ck-toolbar {\\n\\t\\t\\t\\tbackground: none;\\n\\n\\t\\t\\t\\t/* Compensate for missing input label that would push the margin (toolbar has no inputs). */\\n\\t\\t\\t\\tmargin-top: var(--ck-spacing-standard);\\n\\n\\t\\t\\t\\t& .ck-toolbar__items > * {\\n\\t\\t\\t\\t\\twidth: 40px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-table-selected-cell-background:rgba(158,207,250,.3)}.ck.ck-editor__editable .table table td.ck-editor__editable_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected{box-shadow:unset;caret-color:transparent;outline:unset;position:relative}.ck.ck-editor__editable .table table td.ck-editor__editable_selected:after,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:after{background-color:var(--ck-table-selected-cell-background);bottom:0;content:\\\"\\\";left:0;pointer-events:none;position:absolute;right:0;top:0}.ck.ck-editor__editable .table table td.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table td.ck-editor__editable_selected:focus,.ck.ck-editor__editable .table table th.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:focus{background-color:transparent}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget{outline:unset}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget>.ck-widget__selection-handle,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget>.ck-widget__selection-handle{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/tableselection.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,wDACD,CAGC,0IAKC,gBAAiB,CAFjB,uBAAwB,CACxB,aAAc,CAFd,iBAiCD,CA3BC,sJAGC,yDAA0D,CAK1D,QAAS,CAPT,UAAW,CAKX,MAAO,CAJP,mBAAoB,CAEpB,iBAAkB,CAGlB,OAAQ,CAFR,KAID,CAEA,wTAEC,4BACD,CAMA,gKACC,aAKD,CAHC,0NACC,YACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-table-selected-cell-background: hsla(208, 90%, 80%, .3);\\n}\\n\\n.ck.ck-editor__editable .table table {\\n\\t& td.ck-editor__editable_selected,\\n\\t& th.ck-editor__editable_selected {\\n\\t\\tposition: relative;\\n\\t\\tcaret-color: transparent;\\n\\t\\toutline: unset;\\n\\t\\tbox-shadow: unset;\\n\\n\\t\\t/* https://github.com/ckeditor/ckeditor5/issues/6446 */\\n\\t\\t&:after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tpointer-events: none;\\n\\t\\t\\tbackground-color: var(--ck-table-selected-cell-background);\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tbottom: 0;\\n\\t\\t}\\n\\n\\t\\t& ::selection,\\n\\t\\t&:focus {\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\n\\t\\t/*\\n\\t\\t * To reduce the amount of noise, all widgets in the table selection have no outline and no selection handle.\\n\\t\\t * See https://github.com/ckeditor/ckeditor5/issues/9491.\\n\\t\\t */\\n\\t\\t& .ck-widget {\\n\\t\\t\\toutline: unset;\\n\\n\\t\\t\\t& > .ck-widget__selection-handle {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-button,a.ck.ck-button{align-items:center;display:inline-flex;justify-content:left;position:relative;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{display:none}.ck.ck-button.ck-button_with-text .ck-button__label,a.ck.ck-button.ck-button_with-text .ck-button__label{display:inline-block}.ck.ck-button:not(.ck-button_with-text),a.ck.ck-button:not(.ck-button_with-text){justify-content:center}.ck.ck-button,a.ck.ck-button{background:var(--ck-color-button-default-background)}.ck.ck-button:not(.ck-disabled):hover,a.ck.ck-button:not(.ck-disabled):hover{background:var(--ck-color-button-default-hover-background)}.ck.ck-button:not(.ck-disabled):active,a.ck.ck-button:not(.ck-disabled):active{background:var(--ck-color-button-default-active-background)}.ck.ck-button.ck-disabled,a.ck.ck-button.ck-disabled{background:var(--ck-color-button-default-disabled-background)}.ck.ck-button,a.ck.ck-button{border-radius:0}.ck-rounded-corners .ck.ck-button,.ck-rounded-corners a.ck.ck-button,.ck.ck-button.ck-rounded-corners,a.ck.ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-button,a.ck.ck-button{-webkit-appearance:none;border:1px solid transparent;cursor:default;font-size:inherit;line-height:1;min-height:var(--ck-ui-component-min-height);min-width:var(--ck-ui-component-min-height);padding:var(--ck-spacing-tiny);text-align:center;transition:box-shadow .2s ease-in-out,border .2s ease-in-out;vertical-align:middle;white-space:nowrap}.ck.ck-button:active,.ck.ck-button:focus,a.ck.ck-button:active,a.ck.ck-button:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-button .ck-button__icon use,.ck.ck-button .ck-button__icon use *,a.ck.ck-button .ck-button__icon use,a.ck.ck-button .ck-button__icon use *{color:inherit}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{color:inherit;cursor:inherit;font-size:inherit;font-weight:inherit;vertical-align:middle}[dir=ltr] .ck.ck-button .ck-button__label,[dir=ltr] a.ck.ck-button .ck-button__label{text-align:left}[dir=rtl] .ck.ck-button .ck-button__label,[dir=rtl] a.ck.ck-button .ck-button__label{text-align:right}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{color:inherit}[dir=ltr] .ck.ck-button .ck-button__keystroke,[dir=ltr] a.ck.ck-button .ck-button__keystroke{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-button .ck-button__keystroke,[dir=rtl] a.ck.ck-button .ck-button__keystroke{margin-right:var(--ck-spacing-large)}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{font-weight:700;opacity:.7}.ck.ck-button.ck-disabled:active,.ck.ck-button.ck-disabled:focus,a.ck.ck-button.ck-disabled:active,a.ck.ck-button.ck-disabled:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-button.ck-disabled .ck-button__icon,.ck.ck-button.ck-disabled .ck-button__label,a.ck.ck-button.ck-disabled .ck-button__icon,a.ck.ck-button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-disabled .ck-button__keystroke,a.ck.ck-button.ck-disabled .ck-button__keystroke{opacity:.3}.ck.ck-button.ck-button_with-text,a.ck.ck-button.ck-button_with-text{padding:var(--ck-spacing-tiny) var(--ck-spacing-standard)}[dir=ltr] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=ltr] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:calc(var(--ck-spacing-small)*-1);margin-right:var(--ck-spacing-small)}[dir=rtl] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=rtl] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:var(--ck-spacing-small);margin-right:calc(var(--ck-spacing-small)*-1)}.ck.ck-button.ck-button_with-keystroke .ck-button__label,a.ck.ck-button.ck-button_with-keystroke .ck-button__label{flex-grow:1}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{background:var(--ck-color-button-on-background)}.ck.ck-button.ck-on:not(.ck-disabled):hover,a.ck.ck-button.ck-on:not(.ck-disabled):hover{background:var(--ck-color-button-on-hover-background)}.ck.ck-button.ck-on:not(.ck-disabled):active,a.ck.ck-button.ck-on:not(.ck-disabled):active{background:var(--ck-color-button-on-active-background)}.ck.ck-button.ck-on.ck-disabled,a.ck.ck-button.ck-on.ck-disabled{background:var(--ck-color-button-on-disabled-background)}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{color:var(--ck-color-button-on-color)}.ck.ck-button.ck-button-save,a.ck.ck-button.ck-button-save{color:var(--ck-color-button-save)}.ck.ck-button.ck-button-cancel,a.ck.ck-button.ck-button-cancel{color:var(--ck-color-button-cancel)}.ck.ck-button-action,a.ck.ck-button-action{background:var(--ck-color-button-action-background)}.ck.ck-button-action:not(.ck-disabled):hover,a.ck.ck-button-action:not(.ck-disabled):hover{background:var(--ck-color-button-action-hover-background)}.ck.ck-button-action:not(.ck-disabled):active,a.ck.ck-button-action:not(.ck-disabled):active{background:var(--ck-color-button-action-active-background)}.ck.ck-button-action.ck-disabled,a.ck.ck-button-action.ck-disabled{background:var(--ck-color-button-action-disabled-background)}.ck.ck-button-action,a.ck.ck-button-action{color:var(--ck-color-button-action-text)}.ck.ck-button-bold,a.ck.ck-button-bold{font-weight:700}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/button/button.css\",\"webpack://./../ckeditor5-ui/theme/mixins/_unselectable.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/button.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/mixins/_button.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_focus.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_disabled.css\"],\"names\":[],\"mappings\":\"AAOA,6BAMC,kBAAmB,CADnB,mBAAoB,CAEpB,oBAAqB,CAHrB,iBAAkB,CCFlB,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBDkBD,CAdC,iEACC,YACD,CAGC,yGACC,oBACD,CAID,iFACC,sBACD,CEjBD,6BCAC,oDD4ID,CCzIE,6EACC,0DACD,CAEA,+EACC,2DACD,CAID,qDACC,6DACD,CDfD,6BEDC,eF6ID,CA5IA,wIEGE,qCFyIF,CA5IA,6BA6BC,uBAAwB,CANxB,4BAA6B,CAjB7B,cAAe,CAcf,iBAAkB,CAHlB,aAAc,CAJd,4CAA6C,CAD7C,2CAA4C,CAJ5C,8BAA+B,CAC/B,iBAAkB,CAiBlB,4DAA8D,CAnB9D,qBAAsB,CAFtB,kBAuID,CA7GC,oFGhCA,2BAA2B,CCF3B,2CAA8B,CDC9B,YHqCA,CAIC,kJAEC,aACD,CAGD,iEAIC,aAAc,CACd,cAAe,CAHf,iBAAkB,CAClB,mBAAoB,CAMpB,qBASD,CAlBA,qFAYE,eAMF,CAlBA,qFAgBE,gBAEF,CAEA,yEACC,aAYD,CAbA,6FAIE,mCASF,CAbA,6FAQE,oCAKF,CAbA,yEAWC,eAAiB,CACjB,UACD,CAIC,oIIrFD,oDJyFC,CAOA,gLKhGD,kCLkGC,CAEA,iGACC,UACD,CAGD,qEACC,yDAcD,CAXC,2HAEE,4CAA+C,CAC/C,oCAOF,CAVA,2HAQE,mCAAoC,CADpC,6CAGF,CAKA,mHACC,WACD,CAID,yCC/HA,+CDmIA,CChIC,yFACC,qDACD,CAEA,2FACC,sDACD,CAID,iEACC,wDACD,CDgHA,yCAGC,qCACD,CAEA,2DACC,iCACD,CAEA,+DACC,mCACD,CAID,2CC/IC,mDDoJD,CCjJE,2FACC,yDACD,CAEA,6FACC,0DACD,CAID,mEACC,4DACD,CDgID,2CAIC,wCACD,CAEA,uCAEC,eACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../mixins/_unselectable.css\\\";\\n\\n.ck.ck-button,\\na.ck.ck-button {\\n\\t@mixin ck-unselectable;\\n\\n\\tposition: relative;\\n\\tdisplay: inline-flex;\\n\\talign-items: center;\\n\\tjustify-content: left;\\n\\n\\t& .ck-button__label {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t&.ck-button_with-text {\\n\\t\\t& .ck-button__label {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\t}\\n\\n\\t/* Center the icon horizontally in a button without text. */\\n\\t&:not(.ck-button_with-text) {\\n\\t\\tjustify-content: center;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Makes element unselectable.\\n */\\n@define-mixin ck-unselectable {\\n\\t-moz-user-select: none;\\n\\t-webkit-user-select: none;\\n\\t-ms-user-select: none;\\n\\tuser-select: none\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../../mixins/_focus.css\\\";\\n@import \\\"../../../mixins/_shadow.css\\\";\\n@import \\\"../../../mixins/_disabled.css\\\";\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"../../mixins/_button.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck.ck-button,\\na.ck.ck-button {\\n\\t@mixin ck-button-colors --ck-color-button-default;\\n\\t@mixin ck-rounded-corners;\\n\\n\\twhite-space: nowrap;\\n\\tcursor: default;\\n\\tvertical-align: middle;\\n\\tpadding: var(--ck-spacing-tiny);\\n\\ttext-align: center;\\n\\n\\t/* A very important piece of styling. Go to variable declaration to learn more. */\\n\\tmin-width: var(--ck-ui-component-min-height);\\n\\tmin-height: var(--ck-ui-component-min-height);\\n\\n\\t/* Normalize the height of the line. Removing this will break consistent height\\n\\tamong text and text-less buttons (with icons). */\\n\\tline-height: 1;\\n\\n\\t/* Enable font size inheritance, which allows fluid UI scaling. */\\n\\tfont-size: inherit;\\n\\n\\t/* Avoid flickering when the foucs border shows up. */\\n\\tborder: 1px solid transparent;\\n\\n\\t/* Apply some smooth transition to the box-shadow and border. */\\n\\ttransition: box-shadow .2s ease-in-out, border .2s ease-in-out;\\n\\n\\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/189 */\\n\\t-webkit-appearance: none;\\n\\n\\t&:active,\\n\\t&:focus {\\n\\t\\t@mixin ck-focus-ring;\\n\\t\\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\\n\\t}\\n\\n\\t/* Allow icon coloring using the text \\\"color\\\" property. */\\n\\t& .ck-button__icon {\\n\\t\\t& use,\\n\\t\\t& use * {\\n\\t\\t\\tcolor: inherit;\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck-button__label {\\n\\t\\t/* Enable font size inheritance, which allows fluid UI scaling. */\\n\\t\\tfont-size: inherit;\\n\\t\\tfont-weight: inherit;\\n\\t\\tcolor: inherit;\\n\\t\\tcursor: inherit;\\n\\n\\t\\t/* Must be consistent with .ck-icon's vertical align. Otherwise, buttons with and\\n\\t\\twithout labels (but with icons) have different sizes in Chrome */\\n\\t\\tvertical-align: middle;\\n\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\ttext-align: left;\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\ttext-align: right;\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck-button__keystroke {\\n\\t\\tcolor: inherit;\\n\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\tmargin-left: var(--ck-spacing-large);\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\tmargin-right: var(--ck-spacing-large);\\n\\t\\t}\\n\\n\\t\\tfont-weight: bold;\\n\\t\\topacity: .7;\\n\\t}\\n\\n\\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/70 */\\n\\t&.ck-disabled {\\n\\t\\t&:active,\\n\\t\\t&:focus {\\n\\t\\t\\t/* The disabled button should have a slightly less visible shadow when focused. */\\n\\t\\t\\t@mixin ck-box-shadow var(--ck-focus-disabled-outer-shadow);\\n\\t\\t}\\n\\n\\t\\t& .ck-button__icon {\\n\\t\\t\\t@mixin ck-disabled;\\n\\t\\t}\\n\\n\\t\\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */\\n\\t\\t& .ck-button__label {\\n\\t\\t\\t@mixin ck-disabled;\\n\\t\\t}\\n\\n\\t\\t& .ck-button__keystroke {\\n\\t\\t\\topacity: .3;\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-button_with-text {\\n\\t\\tpadding: var(--ck-spacing-tiny) var(--ck-spacing-standard);\\n\\n\\t\\t/* stylelint-disable-next-line no-descending-specificity */\\n\\t\\t& .ck-button__icon {\\n\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\tmargin-left: calc(-1 * var(--ck-spacing-small));\\n\\t\\t\\t\\tmargin-right: var(--ck-spacing-small);\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tmargin-right: calc(-1 * var(--ck-spacing-small));\\n\\t\\t\\t\\tmargin-left: var(--ck-spacing-small);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-button_with-keystroke {\\n\\t\\t/* stylelint-disable-next-line no-descending-specificity */\\n\\t\\t& .ck-button__label {\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t}\\n\\t}\\n\\n\\t/* A style of the button which is currently on, e.g. its feature is active. */\\n\\t&.ck-on {\\n\\t\\t@mixin ck-button-colors --ck-color-button-on;\\n\\n\\t\\tcolor: var(--ck-color-button-on-color);\\n\\t}\\n\\n\\t&.ck-button-save {\\n\\t\\tcolor: var(--ck-color-button-save);\\n\\t}\\n\\n\\t&.ck-button-cancel {\\n\\t\\tcolor: var(--ck-color-button-cancel);\\n\\t}\\n}\\n\\n/* A style of the button which handles the primary action. */\\n.ck.ck-button-action,\\na.ck.ck-button-action {\\n\\t@mixin ck-button-colors --ck-color-button-action;\\n\\n\\tcolor: var(--ck-color-button-action-text);\\n}\\n\\n.ck.ck-button-bold,\\na.ck.ck-button-bold {\\n\\tfont-weight: bold;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Implements a button of given background color.\\n *\\n * @param {String} $background - Background color of the button.\\n * @param {String} $border - Border color of the button.\\n */\\n@define-mixin ck-button-colors $prefix {\\n\\tbackground: var($(prefix)-background);\\n\\n\\t&:not(.ck-disabled) {\\n\\t\\t&:hover {\\n\\t\\t\\tbackground: var($(prefix)-hover-background);\\n\\t\\t}\\n\\n\\t\\t&:active {\\n\\t\\t\\tbackground: var($(prefix)-active-background);\\n\\t\\t}\\n\\t}\\n\\n\\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */\\n\\t&.ck-disabled {\\n\\t\\tbackground: var($(prefix)-disabled-background);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t@nest .ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A visual style of focused element's border.\\n */\\n@define-mixin ck-focus-ring {\\n\\t/* Disable native outline. */\\n\\toutline: none;\\n\\tborder: var(--ck-focus-ring)\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A class which indicates that an element holding it is disabled.\\n */\\n@define-mixin ck-disabled {\\n\\topacity: var(--ck-disabled-opacity);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{display:block}:root{--ck-switch-button-toggle-width:2.6153846154em;--ck-switch-button-toggle-inner-size:calc(1.07692em + 1px);--ck-switch-button-translation:calc(var(--ck-switch-button-toggle-width) - var(--ck-switch-button-toggle-inner-size) - 2px);--ck-switch-button-inner-hover-shadow:0 0 0 5px var(--ck-color-switch-button-inner-shadow)}.ck.ck-button.ck-switchbutton,.ck.ck-button.ck-switchbutton.ck-on:active,.ck.ck-button.ck-switchbutton.ck-on:focus,.ck.ck-button.ck-switchbutton.ck-on:hover,.ck.ck-button.ck-switchbutton:active,.ck.ck-button.ck-switchbutton:focus,.ck.ck-button.ck-switchbutton:hover{background:transparent;color:inherit}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__label{margin-right:calc(var(--ck-spacing-large)*2)}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__label{margin-left:calc(var(--ck-spacing-large)*2)}.ck.ck-button.ck-switchbutton .ck-button__toggle{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle.ck-rounded-corners{border-radius:var(--ck-border-radius)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-left:auto}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-right:auto}.ck.ck-button.ck-switchbutton .ck-button__toggle{background:var(--ck-color-switch-button-off-background);border:1px solid transparent;transition:background .4s ease,box-shadow .2s ease-in-out,outline .2s ease-in-out;width:var(--ck-switch-button-toggle-width)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:calc(var(--ck-border-radius)*.5)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{background:var(--ck-color-switch-button-inner-background);height:var(--ck-switch-button-toggle-inner-size);transition:all .3s ease;width:var(--ck-switch-button-toggle-inner-size)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover{background:var(--ck-color-switch-button-off-hover-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover .ck-button__toggle__inner{box-shadow:var(--ck-switch-button-inner-hover-shadow)}.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-switchbutton:focus{border-color:transparent;box-shadow:none;outline:none}.ck.ck-button.ck-switchbutton:focus .ck-button__toggle{box-shadow:0 0 0 1px var(--ck-color-base-background),0 0 0 5px var(--ck-color-focus-outer-shadow);outline:var(--ck-focus-ring);outline-offset:1px}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle{background:var(--ck-color-switch-button-on-background)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle:hover{background:var(--ck-color-switch-button-on-hover-background)}[dir=ltr] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(var( --ck-switch-button-translation ))}[dir=rtl] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(calc(var( --ck-switch-button-translation )*-1))}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/button/switchbutton.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/switchbutton.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_disabled.css\"],\"names\":[],\"mappings\":\"AASE,4HACC,aACD,CCCF,MAEC,8CAA+C,CAE/C,0DAAgE,CAChE,2HAIC,CACD,0FACD,CAOC,0QAEC,sBAAuB,CADvB,aAED,CAEA,0DAGE,4CAOF,CAVA,0DAQE,2CAEF,CAEA,iDCpCA,eD4EA,CAxCA,yIChCC,qCDwED,CAxCA,2DAKE,gBAmCF,CAxCA,2DAUE,iBA8BF,CAxCA,iDAkBC,uDAAwD,CAFxD,4BAA6B,CAD7B,iFAAsF,CAEtF,0CAuBD,CApBC,2ECxDD,eDmEC,CAXA,6LCpDA,qCAAsC,CDsDpC,8CASF,CAXA,2EAOC,yDAA0D,CAD1D,gDAAiD,CAIjD,uBAA0B,CAL1B,+CAMD,CAEA,uDACC,6DAKD,CAHC,iFACC,qDACD,CAIF,6DEhFA,kCFkFA,CAGA,oCACC,wBAAyB,CAEzB,eAAgB,CADhB,YAQD,CALC,uDACC,iGAAmG,CAEnG,4BAA6B,CAD7B,kBAED,CAKA,uDACC,sDAkBD,CAhBC,6DACC,4DACD,CAEA,2FAKE,2DAMF,CAXA,2FASE,oEAEF\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-button.ck-switchbutton {\\n\\t& .ck-button__toggle {\\n\\t\\tdisplay: block;\\n\\n\\t\\t& .ck-button__toggle__inner {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"../../../mixins/_disabled.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n/* Note: To avoid rendering issues (aliasing) but to preserve the responsive nature\\nof the component, floating–point numbers have been used which, for the default font size\\n(see: --ck-font-size-base), will generate simple integers. */\\n:root {\\n\\t/* 34px at 13px font-size */\\n\\t--ck-switch-button-toggle-width: 2.6153846154em;\\n\\t/* 14px at 13px font-size */\\n\\t--ck-switch-button-toggle-inner-size: calc(1.0769230769em + 1px);\\n\\t--ck-switch-button-translation: calc(\\n\\t\\tvar(--ck-switch-button-toggle-width) -\\n\\t\\tvar(--ck-switch-button-toggle-inner-size) -\\n\\t\\t2px /* Border */\\n\\t);\\n\\t--ck-switch-button-inner-hover-shadow: 0 0 0 5px var(--ck-color-switch-button-inner-shadow);\\n}\\n\\n.ck.ck-button.ck-switchbutton {\\n\\t/* Unlike a regular button, the switch button text color and background should never change.\\n\\t * Changing toggle switch (background, outline) is enough to carry the information about the\\n\\t * state of the entire component (https://github.com/ckeditor/ckeditor5/issues/12519)\\n\\t */\\n\\t&, &:hover, &:focus, &:active, &.ck-on:hover, &.ck-on:focus, &.ck-on:active {\\n\\t\\tcolor: inherit;\\n\\t\\tbackground: transparent;\\n\\t}\\n\\n\\t& .ck-button__label {\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t/* Separate the label from the switch */\\n\\t\\t\\tmargin-right: calc(2 * var(--ck-spacing-large));\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t/* Separate the label from the switch */\\n\\t\\t\\tmargin-left: calc(2 * var(--ck-spacing-large));\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck-button__toggle {\\n\\t\\t@mixin ck-rounded-corners;\\n\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t/* Make sure the toggle is always to the right as far as possible. */\\n\\t\\t\\tmargin-left: auto;\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t/* Make sure the toggle is always to the left as far as possible. */\\n\\t\\t\\tmargin-right: auto;\\n\\t\\t}\\n\\n\\t\\t/* Apply some smooth transition to the box-shadow and border. */\\n\\t\\t/* Gently animate the background color of the toggle switch */\\n\\t\\ttransition: background 400ms ease, box-shadow .2s ease-in-out, outline .2s ease-in-out;\\n\\t\\tborder: 1px solid transparent;\\n\\t\\twidth: var(--ck-switch-button-toggle-width);\\n\\t\\tbackground: var(--ck-color-switch-button-off-background);\\n\\n\\t\\t& .ck-button__toggle__inner {\\n\\t\\t\\t@mixin ck-rounded-corners {\\n\\t\\t\\t\\tborder-radius: calc(.5 * var(--ck-border-radius));\\n\\t\\t\\t}\\n\\n\\t\\t\\twidth: var(--ck-switch-button-toggle-inner-size);\\n\\t\\t\\theight: var(--ck-switch-button-toggle-inner-size);\\n\\t\\t\\tbackground: var(--ck-color-switch-button-inner-background);\\n\\n\\t\\t\\t/* Gently animate the inner part of the toggle switch */\\n\\t\\t\\ttransition: all 300ms ease;\\n\\t\\t}\\n\\n\\t\\t&:hover {\\n\\t\\t\\tbackground: var(--ck-color-switch-button-off-hover-background);\\n\\n\\t\\t\\t& .ck-button__toggle__inner {\\n\\t\\t\\t\\tbox-shadow: var(--ck-switch-button-inner-hover-shadow);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-disabled .ck-button__toggle {\\n\\t\\t@mixin ck-disabled;\\n\\t}\\n\\n\\t/* Overriding default .ck-button:focus styles + an outline around the toogle */\\n\\t&:focus {\\n\\t\\tborder-color: transparent;\\n\\t\\toutline: none;\\n\\t\\tbox-shadow: none;\\n\\n\\t\\t& .ck-button__toggle {\\n\\t\\t\\tbox-shadow: 0 0 0 1px var(--ck-color-base-background), 0 0 0 5px var(--ck-color-focus-outer-shadow);\\n\\t\\t\\toutline-offset: 1px;\\n\\t\\t\\toutline: var(--ck-focus-ring);\\n\\t\\t}\\n\\t}\\n\\n\\t/* stylelint-disable-next-line no-descending-specificity */\\n\\t&.ck-on {\\n\\t\\t& .ck-button__toggle {\\n\\t\\t\\tbackground: var(--ck-color-switch-button-on-background);\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tbackground: var(--ck-color-switch-button-on-hover-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t& .ck-button__toggle__inner {\\n\\t\\t\\t\\t/*\\n\\t\\t\\t\\t* Move the toggle switch to the right. It will be animated.\\n\\t\\t\\t\\t*/\\n\\t\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\t\\ttransform: translateX( var( --ck-switch-button-translation ) );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\t\\ttransform: translateX( calc( -1 * var( --ck-switch-button-translation ) ) );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t@nest .ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A class which indicates that an element holding it is disabled.\\n */\\n@define-mixin ck-disabled {\\n\\topacity: var(--ck-disabled-opacity);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-color-grid{display:grid}:root{--ck-color-grid-tile-size:24px;--ck-color-color-grid-check-icon:#166fd4}.ck.ck-color-grid{grid-gap:5px;padding:8px}.ck.ck-color-grid__tile{border:0;height:var(--ck-color-grid-tile-size);min-height:var(--ck-color-grid-tile-size);min-width:var(--ck-color-grid-tile-size);padding:0;transition:box-shadow .2s ease;width:var(--ck-color-grid-tile-size)}.ck.ck-color-grid__tile.ck-disabled{cursor:unset;transition:unset}.ck.ck-color-grid__tile.ck-color-selector__color-tile_bordered{box-shadow:0 0 0 1px var(--ck-color-base-border)}.ck.ck-color-grid__tile .ck.ck-icon{color:var(--ck-color-color-grid-check-icon);display:none}.ck.ck-color-grid__tile.ck-on{box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-base-text)}.ck.ck-color-grid__tile.ck-on .ck.ck-icon{display:block}.ck.ck-color-grid__tile.ck-on,.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){border:0}.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-color-grid__label{padding:0 var(--ck-spacing-standard)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/colorgrid/colorgrid.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/colorgrid/colorgrid.css\"],\"names\":[],\"mappings\":\"AAKA,kBACC,YACD,CCAA,MACC,8BAA+B,CAK/B,wCACD,CAEA,kBACC,YAAa,CACb,WACD,CAEA,wBAOC,QAAS,CALT,qCAAsC,CAEtC,yCAA0C,CAD1C,wCAAyC,CAEzC,SAAU,CACV,8BAA+B,CAL/B,oCAyCD,CAjCC,oCACC,YAAa,CACb,gBACD,CAEA,+DACC,gDACD,CAEA,oCAEC,2CAA4C,CAD5C,YAED,CAEA,8BACC,8FAKD,CAHC,0CACC,aACD,CAGD,8HAIC,QACD,CAEA,gGAEC,iGACD,CAGD,yBACC,oCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-color-grid {\\n\\tdisplay: grid;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n\\n:root {\\n\\t--ck-color-grid-tile-size: 24px;\\n\\n\\t/* Not using global colors here because these may change but some colors in a pallette\\n\\t * require special treatment. For instance, this ensures no matter what the UI text color is,\\n\\t * the check icon will look good on the black color tile. */\\n\\t--ck-color-color-grid-check-icon: hsl(212, 81%, 46%);\\n}\\n\\n.ck.ck-color-grid {\\n\\tgrid-gap: 5px;\\n\\tpadding: 8px;\\n}\\n\\n.ck.ck-color-grid__tile {\\n\\twidth: var(--ck-color-grid-tile-size);\\n\\theight: var(--ck-color-grid-tile-size);\\n\\tmin-width: var(--ck-color-grid-tile-size);\\n\\tmin-height: var(--ck-color-grid-tile-size);\\n\\tpadding: 0;\\n\\ttransition: .2s ease box-shadow;\\n\\tborder: 0;\\n\\n\\t&.ck-disabled {\\n\\t\\tcursor: unset;\\n\\t\\ttransition: unset;\\n\\t}\\n\\n\\t&.ck-color-selector__color-tile_bordered {\\n\\t\\tbox-shadow: 0 0 0 1px var(--ck-color-base-border);\\n\\t}\\n\\n\\t& .ck.ck-icon {\\n\\t\\tdisplay: none;\\n\\t\\tcolor: var(--ck-color-color-grid-check-icon);\\n\\t}\\n\\n\\t&.ck-on {\\n\\t\\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-base-text);\\n\\n\\t\\t& .ck.ck-icon {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-on,\\n\\t&:focus:not( .ck-disabled ),\\n\\t&:hover:not( .ck-disabled ) {\\n\\t\\t/* Disable the default .ck-button's border ring. */\\n\\t\\tborder: 0;\\n\\t}\\n\\n\\t&:focus:not( .ck-disabled ),\\n\\t&:hover:not( .ck-disabled ) {\\n\\t\\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-focus-border);\\n\\t}\\n}\\n\\n.ck.ck-color-grid__label {\\n\\tpadding: 0 var(--ck-spacing-standard);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".color-picker-hex-input{width:max-content}.color-picker-hex-input .ck.ck-input{min-width:unset}.ck.ck-color-picker__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;margin:var(--ck-spacing-large) 0 0;width:unset}.ck.ck-color-picker__row .ck.ck-labeled-field-view{padding-top:unset}.ck.ck-color-picker__row .ck.ck-input-text{width:unset}.ck.ck-color-picker__row .ck-color-picker__hash-view{padding-right:var(--ck-spacing-medium);padding-top:var(--ck-spacing-tiny)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/colorpicker/colorpicker.css\"],\"names\":[],\"mappings\":\"AAKA,wBACC,iBAKD,CAHC,qCACC,eACD,CAGD,yBACC,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAA8B,CAC9B,kCAAmC,CACnC,WAcD,CAZC,mDACC,iBACD,CAEA,2CACC,WACD,CAEA,qDAEC,sCAAuC,CADvC,kCAED\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.color-picker-hex-input {\\n\\twidth: max-content;\\n\\n\\t& .ck.ck-input {\\n\\t\\tmin-width: unset;\\n\\t}\\n}\\n\\n.ck.ck-color-picker__row {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-wrap: nowrap;\\n\\tjustify-content: space-between;\\n\\tmargin: var(--ck-spacing-large) 0 0;\\n\\twidth: unset;\\n\\n\\t& .ck.ck-labeled-field-view {\\n\\t\\tpadding-top: unset;\\n\\t}\\n\\n\\t& .ck.ck-input-text {\\n\\t\\twidth: unset;\\n\\t}\\n\\n\\t& .ck-color-picker__hash-view {\\n\\t\\tpadding-top: var(--ck-spacing-tiny);\\n\\t\\tpadding-right: var(--ck-spacing-medium);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker,.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color{align-items:center;display:flex}[dir=rtl] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker,[dir=rtl] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color{justify-content:flex-start}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar{display:flex;flex-direction:row;justify-content:space-around}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar .ck-button-cancel,.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar .ck-button-save{flex:1}.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker,.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color{width:100%}.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard)}.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker:not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker .ck.ck-icon{margin-left:var(--ck-spacing-standard)}.ck.ck-color-selector .ck-color-grids-fragment label.ck.ck-color-grid__label{font-weight:unset}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker{padding:8px}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker{height:100px;min-width:180px}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(saturation){border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(hue){border-radius:0 0 var(--ck-border-radius) var(--ck-border-radius)}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(hue-pointer),.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(saturation-pointer){height:15px;width:15px}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar{padding:0 8px 8px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/colorselector/colorselector.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/colorselector/colorselector.css\"],\"names\":[],\"mappings\":\"AAUE,oLAGC,kBAAmB,CADnB,YAMD,CARA,wMAME,0BAEF,CAKA,iFACC,YAAa,CACb,kBAAmB,CACnB,4BAMD,CAJC,oMAEC,MACD,CCrBD,oLAEC,UACD,CAEA,0FAEC,2BAA4B,CAC5B,4BAA6B,CAF7B,qEAiBD,CAbC,sGACC,gDACD,CAEA,gHAEE,uCAMF,CARA,gHAME,sCAEF,CAGD,6EACC,iBACD,CAKA,oEACC,WAoBD,CAlBC,sFACC,YAAa,CACb,eAeD,CAbC,wGACC,iEACD,CAEA,iGACC,iEACD,CAEA,yNAGC,WAAY,CADZ,UAED,CAIF,iFACC,iBACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck.ck-color-selector {\\n\\t/* View fragment with color grids. */\\n\\t& .ck-color-grids-fragment {\\n\\t\\t& .ck-button.ck-color-selector__remove-color,\\n\\t\\t& .ck-button.ck-color-selector__color-picker {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tjustify-content: flex-start;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/* View fragment with a color picker. */\\n\\t& .ck-color-picker-fragment {\\n\\t\\t& .ck.ck-color-selector_action-bar {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\tjustify-content: space-around;\\n\\n\\t\\t\\t& .ck-button-save,\\n\\t\\t\\t& .ck-button-cancel {\\n\\t\\t\\t\\tflex: 1\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck.ck-color-selector {\\n\\t/* View fragment with color grids. */\\n\\t& .ck-color-grids-fragment {\\n\\t\\t& .ck-button.ck-color-selector__remove-color,\\n\\t\\t& .ck-button.ck-color-selector__color-picker {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t& .ck-button.ck-color-selector__color-picker {\\n\\t\\t\\tpadding: calc(var(--ck-spacing-standard) / 2) var(--ck-spacing-standard);\\n\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t\\tborder-bottom-right-radius: 0;\\n\\n\\t\\t\\t&:not(:focus) {\\n\\t\\t\\t\\tborder-top: 1px solid var(--ck-color-base-border);\\n\\t\\t\\t}\\n\\n\\t\\t\\t& .ck.ck-icon {\\n\\t\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\t\\tmargin-right: var(--ck-spacing-standard);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\t\\tmargin-left: var(--ck-spacing-standard);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t& label.ck.ck-color-grid__label {\\n\\t\\t\\tfont-weight: unset;\\n\\t\\t}\\n\\t}\\n\\n\\t/* View fragment with a color picker. */\\n\\t& .ck-color-picker-fragment {\\n\\t\\t& .ck.ck-color-picker {\\n\\t\\t\\tpadding: 8px;\\n\\n\\t\\t\\t& .hex-color-picker {\\n\\t\\t\\t\\theight: 100px;\\n\\t\\t\\t\\tmin-width: 180px;\\n\\n\\t\\t\\t\\t&::part(saturation) {\\n\\t\\t\\t\\t\\tborder-radius: var(--ck-border-radius) var(--ck-border-radius) 0 0;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&::part(hue) {\\n\\t\\t\\t\\t\\tborder-radius: 0 0 var(--ck-border-radius) var(--ck-border-radius);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&::part(saturation-pointer),\\n\\t\\t\\t\\t&::part(hue-pointer) {\\n\\t\\t\\t\\t\\twidth: 15px;\\n\\t\\t\\t\\t\\theight: 15px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t& .ck.ck-color-selector_action-bar {\\n\\t\\t\\tpadding: 0 8px 8px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-dropdown-max-width:75vw}.ck.ck-dropdown{display:inline-block;position:relative}.ck.ck-dropdown .ck-dropdown__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-dropdown .ck-button.ck-dropdown__button{width:100%}.ck.ck-dropdown .ck-dropdown__panel{display:none;max-width:var(--ck-dropdown-max-width);position:absolute;z-index:var(--ck-z-modal)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel-visible{display:inline-block}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw{bottom:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{bottom:auto;top:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se{left:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{right:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s{left:50%;transform:translateX(-50%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw{left:75%;transform:translateX(-75%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme{left:25%;transform:translateX(-25%)}.ck.ck-toolbar .ck-dropdown__panel{z-index:calc(var(--ck-z-modal) + 1)}:root{--ck-dropdown-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-dropdown{font-size:inherit}.ck.ck-dropdown .ck-dropdown__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-dropdown .ck-dropdown__arrow{margin-left:var(--ck-spacing-standard);right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-dropdown .ck-dropdown__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}.ck.ck-dropdown.ck-disabled .ck-dropdown__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{overflow:hidden;text-overflow:ellipsis;width:7em}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-dropdown__button_label-width_auto .ck-button__label{width:auto}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active{box-shadow:none}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active:focus,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active:focus{box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-dropdown__panel{border-radius:0}.ck-rounded-corners .ck.ck-dropdown__panel,.ck.ck-dropdown__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dropdown__panel{background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;box-shadow:var(--ck-drop-shadow),0 0;min-width:100%}.ck.ck-dropdown__panel.ck-dropdown__panel_se{border-top-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_sw{border-top-right-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_ne{border-bottom-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_nw{border-bottom-right-radius:0}.ck.ck-dropdown__panel:focus{outline:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/dropdown/dropdown.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/dropdown.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_disabled.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,4BACD,CAEA,gBACC,oBAAqB,CACrB,iBA2ED,CAzEC,oCACC,mBAAoB,CACpB,2BACD,CAGA,+CACC,UACD,CAEA,oCACC,YAAa,CAEb,sCAAuC,CAEvC,iBAAkB,CAHlB,yBA4DD,CAvDC,+DACC,oBACD,CAEA,mSAKC,WACD,CAEA,mSAUC,WAAY,CADZ,QAED,CAEA,oHAEC,MACD,CAEA,oHAEC,OACD,CAEA,kHAGC,QAAS,CACT,0BACD,CAEA,sHAGC,QAAS,CACT,0BACD,CAEA,sHAGC,QAAS,CACT,0BACD,CAQF,mCACC,mCACD,CCpFA,MACC,sDACD,CAEA,gBAEC,iBA2ED,CAzEC,oCACC,mCACD,CAGC,8CAIC,sCAAuC,CAHvC,gCAID,CAIA,8CACC,+BAAgC,CAGhC,oCACD,CAGD,gDC/BA,kCDiCA,CAIE,mFAEC,oCACD,CAIA,mFAEC,qCACD,CAID,iEAEC,eAAgB,CAChB,sBAAuB,CAFvB,SAGD,CAGA,6EC1DD,kCD4DC,CAGA,qDACC,2BAA4B,CAC5B,4BACD,CAEA,sGACC,UACD,CAGA,yHAEC,eAKD,CAHC,qIE7EF,2CF+EE,CAKH,uBGlFC,eHkHD,CAhCA,qFG9EE,qCH8GF,CAhCA,uBAIC,oDAAqD,CACrD,sDAAuD,CACvD,QAAS,CE1FT,oCAA8B,CF6F9B,cAuBD,CAnBC,6CACC,wBACD,CAEA,6CACC,yBACD,CAEA,6CACC,2BACD,CAEA,6CACC,4BACD,CAEA,6BACC,YACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-dropdown-max-width: 75vw;\\n}\\n\\n.ck.ck-dropdown {\\n\\tdisplay: inline-block;\\n\\tposition: relative;\\n\\n\\t& .ck-dropdown__arrow {\\n\\t\\tpointer-events: none;\\n\\t\\tz-index: var(--ck-z-default);\\n\\t}\\n\\n\\t/* Dropdown button should span horizontally, e.g. in vertical toolbars */\\n\\t& .ck-button.ck-dropdown__button {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t& .ck-dropdown__panel {\\n\\t\\tdisplay: none;\\n\\t\\tz-index: var(--ck-z-modal);\\n\\t\\tmax-width: var(--ck-dropdown-max-width);\\n\\n\\t\\tposition: absolute;\\n\\n\\t\\t&.ck-dropdown__panel-visible {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\n\\t\\t&.ck-dropdown__panel_ne,\\n\\t\\t&.ck-dropdown__panel_nw,\\n\\t\\t&.ck-dropdown__panel_n,\\n\\t\\t&.ck-dropdown__panel_nmw,\\n\\t\\t&.ck-dropdown__panel_nme {\\n\\t\\t\\tbottom: 100%;\\n\\t\\t}\\n\\n\\t\\t&.ck-dropdown__panel_se,\\n\\t\\t&.ck-dropdown__panel_sw,\\n\\t\\t&.ck-dropdown__panel_smw,\\n\\t\\t&.ck-dropdown__panel_sme,\\n\\t\\t&.ck-dropdown__panel_s {\\n\\t\\t\\t/*\\n\\t\\t\\t * Using transform: translate3d( 0, 100%, 0 ) causes blurry dropdown on Chrome 67-78+ on non-retina displays.\\n\\t\\t\\t * See https://github.com/ckeditor/ckeditor5/issues/1053.\\n\\t\\t\\t */\\n\\t\\t\\ttop: 100%;\\n\\t\\t\\tbottom: auto;\\n\\t\\t}\\n\\n\\t\\t&.ck-dropdown__panel_ne,\\n\\t\\t&.ck-dropdown__panel_se {\\n\\t\\t\\tleft: 0px;\\n\\t\\t}\\n\\n\\t\\t&.ck-dropdown__panel_nw,\\n\\t\\t&.ck-dropdown__panel_sw {\\n\\t\\t\\tright: 0px;\\n\\t\\t}\\n\\n\\t\\t&.ck-dropdown__panel_s,\\n\\t\\t&.ck-dropdown__panel_n {\\n\\t\\t\\t/* Positioning panels relative to the center of the button */\\n\\t\\t\\tleft: 50%;\\n\\t\\t\\ttransform: translateX(-50%);\\n\\t\\t}\\n\\n\\t\\t&.ck-dropdown__panel_nmw,\\n\\t\\t&.ck-dropdown__panel_smw {\\n\\t\\t\\t/* Positioning panels relative to the middle-west of the button */\\n\\t\\t\\tleft: 75%;\\n\\t\\t\\ttransform: translateX(-75%);\\n\\t\\t}\\n\\n\\t\\t&.ck-dropdown__panel_nme,\\n\\t\\t&.ck-dropdown__panel_sme {\\n\\t\\t\\t/* Positioning panels relative to the middle-east of the button */\\n\\t\\t\\tleft: 25%;\\n\\t\\t\\ttransform: translateX(-25%);\\n\\t\\t}\\n\\t}\\n}\\n\\n/*\\n * Toolbar dropdown panels should be always above the UI (eg. other dropdown panels) from the editor's content.\\n * See https://github.com/ckeditor/ckeditor5/issues/7874\\n */\\n.ck.ck-toolbar .ck-dropdown__panel {\\n\\tz-index: calc( var(--ck-z-modal) + 1 );\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"../../../mixins/_disabled.css\\\";\\n@import \\\"../../../mixins/_shadow.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n:root {\\n\\t--ck-dropdown-arrow-size: calc(0.5 * var(--ck-icon-size));\\n}\\n\\n.ck.ck-dropdown {\\n\\t/* Enable font size inheritance, which allows fluid UI scaling. */\\n\\tfont-size: inherit;\\n\\n\\t& .ck-dropdown__arrow {\\n\\t\\twidth: var(--ck-dropdown-arrow-size);\\n\\t}\\n\\n\\t@mixin ck-dir ltr {\\n\\t\\t& .ck-dropdown__arrow {\\n\\t\\t\\tright: var(--ck-spacing-standard);\\n\\n\\t\\t\\t/* A space to accommodate the triangle. */\\n\\t\\t\\tmargin-left: var(--ck-spacing-standard);\\n\\t\\t}\\n\\t}\\n\\n\\t@mixin ck-dir rtl {\\n\\t\\t& .ck-dropdown__arrow {\\n\\t\\t\\tleft: var(--ck-spacing-standard);\\n\\n\\t\\t\\t/* A space to accommodate the triangle. */\\n\\t\\t\\tmargin-right: var(--ck-spacing-small);\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-disabled .ck-dropdown__arrow {\\n\\t\\t@mixin ck-disabled;\\n\\t}\\n\\n\\t& .ck-button.ck-dropdown__button {\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t&:not(.ck-button_with-text) {\\n\\t\\t\\t\\t/* Make sure dropdowns with just an icon have the right inner spacing */\\n\\t\\t\\t\\tpadding-left: var(--ck-spacing-small);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t&:not(.ck-button_with-text) {\\n\\t\\t\\t\\t/* Make sure dropdowns with just an icon have the right inner spacing */\\n\\t\\t\\t\\tpadding-right: var(--ck-spacing-small);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/* #23 */\\n\\t\\t& .ck-button__label {\\n\\t\\t\\twidth: 7em;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\n\\t\\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/70 */\\n\\t\\t&.ck-disabled .ck-button__label {\\n\\t\\t\\t@mixin ck-disabled;\\n\\t\\t}\\n\\n\\t\\t/* https://github.com/ckeditor/ckeditor5/issues/816 */\\n\\t\\t&.ck-on {\\n\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t\\tborder-bottom-right-radius: 0;\\n\\t\\t}\\n\\n\\t\\t&.ck-dropdown__button_label-width_auto .ck-button__label {\\n\\t\\t\\twidth: auto;\\n\\t\\t}\\n\\n\\t\\t/* https://github.com/ckeditor/ckeditor5/issues/8699 */\\n\\t\\t&.ck-off:active,\\n\\t\\t&.ck-on:active {\\n\\t\\t\\tbox-shadow: none;\\n\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck.ck-dropdown__panel {\\n\\t@mixin ck-rounded-corners;\\n\\t@mixin ck-drop-shadow;\\n\\n\\tbackground: var(--ck-color-dropdown-panel-background);\\n\\tborder: 1px solid var(--ck-color-dropdown-panel-border);\\n\\tbottom: 0;\\n\\n\\t/* Make sure the panel is at least as wide as the drop-down's button. */\\n\\tmin-width: 100%;\\n\\n\\t/* Disabled corner border radius to be consistent with the .dropdown__button\\n\\thttps://github.com/ckeditor/ckeditor5/issues/816 */\\n\\t&.ck-dropdown__panel_se {\\n\\t\\tborder-top-left-radius: 0;\\n\\t}\\n\\n\\t&.ck-dropdown__panel_sw {\\n\\t\\tborder-top-right-radius: 0;\\n\\t}\\n\\n\\t&.ck-dropdown__panel_ne {\\n\\t\\tborder-bottom-left-radius: 0;\\n\\t}\\n\\n\\t&.ck-dropdown__panel_nw {\\n\\t\\tborder-bottom-right-radius: 0;\\n\\t}\\n\\n\\t&:focus {\\n\\t\\toutline: none;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A class which indicates that an element holding it is disabled.\\n */\\n@define-mixin ck-disabled {\\n\\topacity: var(--ck-disabled-opacity);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t@nest .ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-dropdown .ck-dropdown__panel .ck-list{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list,.ck.ck-dropdown .ck-dropdown__panel .ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/listdropdown.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css\"],\"names\":[],\"mappings\":\"AAOA,6CCIC,eDqBD,CAzBA,iICQE,qCAAsC,CDJtC,wBAqBF,CAfE,mFCND,eDYC,CANA,6MCFA,qCAAsC,CDKpC,2BAA4B,CAC5B,4BAA6B,CAF7B,wBAIF,CAEA,kFCdD,eDmBC,CALA,2MCVA,qCAAsC,CDYpC,wBAAyB,CACzB,yBAEF\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n\\n.ck.ck-dropdown .ck-dropdown__panel .ck-list {\\n\\t/* Disabled radius of top-left border to be consistent with .dropdown__button\\n\\thttps://github.com/ckeditor/ckeditor5/issues/816 */\\n\\t@mixin ck-rounded-corners {\\n\\t\\tborder-top-left-radius: 0;\\n\\t}\\n\\n\\t/* Make sure the button belonging to the first/last child of the list goes well with the\\n\\tborder radius of the entire panel. */\\n\\t& .ck-list__item {\\n\\t\\t&:first-child .ck-button {\\n\\t\\t\\t@mixin ck-rounded-corners {\\n\\t\\t\\t\\tborder-top-left-radius: 0;\\n\\t\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t\\t\\tborder-bottom-right-radius: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&:last-child .ck-button {\\n\\t\\t\\t@mixin ck-rounded-corners {\\n\\t\\t\\t\\tborder-top-left-radius: 0;\\n\\t\\t\\t\\tborder-top-right-radius: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t@nest .ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-splitbutton{font-size:inherit}.ck.ck-splitbutton .ck-splitbutton__action:focus{z-index:calc(var(--ck-z-default) + 1)}:root{--ck-color-split-button-hover-background:#ebebeb;--ck-color-split-button-hover-border:#b3b3b3}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-bottom-right-radius:unset;border-top-right-radius:unset}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-bottom-left-radius:unset;border-top-left-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow{min-width:unset}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-left-radius:unset;border-top-left-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-right-radius:unset;border-top-right-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow svg{width:var(--ck-dropdown-arrow-size)}.ck.ck-splitbutton>.ck-splitbutton__arrow:not(:focus){border-bottom-width:0;border-top-width:0}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover),.ck.ck-splitbutton:hover>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover){background:var(--ck-color-split-button-hover-background)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{background-color:var(--ck-color-split-button-hover-border);content:\\\"\\\";height:100%;position:absolute;width:1px}.ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:focus:after,.ck.ck-splitbutton:hover>.ck-splitbutton__arrow:focus:after{--ck-color-split-button-hover-border:var(--ck-color-focus-border)}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{left:-1px}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{right:-1px}.ck.ck-splitbutton.ck-splitbutton_open{border-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__action{border-bottom-left-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__arrow{border-bottom-right-radius:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/dropdown/splitbutton.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/splitbutton.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css\"],\"names\":[],\"mappings\":\"AAKA,mBAEC,iBAKD,CAHC,iDACC,qCACD,CCJD,MACC,gDAAyD,CACzD,4CACD,CAMC,oIAKE,gCAAiC,CADjC,6BASF,CAbA,oIAWE,+BAAgC,CADhC,4BAGF,CAEA,0CAGC,eAiBD,CApBA,oDAQE,+BAAgC,CADhC,4BAaF,CApBA,oDAcE,gCAAiC,CADjC,6BAOF,CAHC,8CACC,mCACD,CAKD,sDAEC,qBAAwB,CADxB,kBAED,CAQC,0KACC,wDACD,CAIA,8JAKC,0DAA2D,CAJ3D,UAAW,CAGX,WAAY,CAFZ,iBAAkB,CAClB,SAGD,CAGA,sIACC,iEACD,CAGC,kLACC,SACD,CAIA,kLACC,UACD,CAMF,uCCzFA,eDmGA,CAVA,qHCrFC,qCD+FD,CARE,qKACC,2BACD,CAEA,mKACC,4BACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-splitbutton {\\n\\t/* Enable font size inheritance, which allows fluid UI scaling. */\\n\\tfont-size: inherit;\\n\\n\\t& .ck-splitbutton__action:focus {\\n\\t\\tz-index: calc(var(--ck-z-default) + 1);\\n\\t}\\n}\\n\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n\\n:root {\\n\\t--ck-color-split-button-hover-background: hsl(0, 0%, 92%);\\n\\t--ck-color-split-button-hover-border: hsl(0, 0%, 70%);\\n}\\n\\n.ck.ck-splitbutton {\\n\\t/*\\n\\t * Note: ck-rounded and ck-dir mixins don't go together (because they both use @nest).\\n\\t */\\n\\t&:hover > .ck-splitbutton__action,\\n\\t&.ck-splitbutton_open > .ck-splitbutton__action {\\n\\t\\t@nest [dir=\\\"ltr\\\"] & {\\n\\t\\t\\t/* Don't round the action button on the right side */\\n\\t\\t\\tborder-top-right-radius: unset;\\n\\t\\t\\tborder-bottom-right-radius: unset;\\n\\t\\t}\\n\\n\\t\\t@nest [dir=\\\"rtl\\\"] & {\\n\\t\\t\\t/* Don't round the action button on the left side */\\n\\t\\t\\tborder-top-left-radius: unset;\\n\\t\\t\\tborder-bottom-left-radius: unset;\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck-splitbutton__arrow {\\n\\t\\t/* It's a text-less button and since the icon is positioned absolutely in such situation,\\n\\t\\tit must get some arbitrary min-width. */\\n\\t\\tmin-width: unset;\\n\\n\\t\\t@nest [dir=\\\"ltr\\\"] & {\\n\\t\\t\\t/* Don't round the arrow button on the left side */\\n\\t\\t\\tborder-top-left-radius: unset;\\n\\t\\t\\tborder-bottom-left-radius: unset;\\n\\t\\t}\\n\\n\\t\\t@nest [dir=\\\"rtl\\\"] & {\\n\\t\\t\\t/* Don't round the arrow button on the right side */\\n\\t\\t\\tborder-top-right-radius: unset;\\n\\t\\t\\tborder-bottom-right-radius: unset;\\n\\t\\t}\\n\\n\\t\\t& svg {\\n\\t\\t\\twidth: var(--ck-dropdown-arrow-size);\\n\\t\\t}\\n\\t}\\n\\n\\t/* Make sure the divider stretches 100% height of the button\\n\\thttps://github.com/ckeditor/ckeditor5/issues/10936 */\\n\\t& > .ck-splitbutton__arrow:not(:focus) {\\n\\t\\tborder-top-width: 0px;\\n\\t\\tborder-bottom-width: 0px;\\n\\t}\\n\\n\\t/* When the split button is \\\"open\\\" (the arrow is on) or being hovered, it should get some styling\\n\\tas a whole. The background of both buttons should stand out and there should be a visual\\n\\tseparation between both buttons. */\\n\\t&.ck-splitbutton_open,\\n\\t&:hover {\\n\\t\\t/* When the split button hovered as a whole, not as individual buttons. */\\n\\t\\t& > .ck-button:not(.ck-on):not(.ck-disabled):not(:hover) {\\n\\t\\t\\tbackground: var(--ck-color-split-button-hover-background);\\n\\t\\t}\\n\\n\\t\\t/* Splitbutton separator needs to be set with the ::after pseudoselector\\n\\t\\tto display properly the borders on focus */\\n\\t\\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\twidth: 1px;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\tbackground-color: var(--ck-color-split-button-hover-border);\\n\\t\\t}\\n\\n\\t\\t/* Make sure the divider between the buttons looks fine when the button is focused */\\n\\t\\t& > .ck-splitbutton__arrow:focus::after {\\n\\t\\t\\t--ck-color-split-button-hover-border: var(--ck-color-focus-border);\\n\\t\\t}\\n\\n\\t\\t@nest [dir=\\\"ltr\\\"] & {\\n\\t\\t\\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\\n\\t\\t\\t\\tleft: -1px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@nest [dir=\\\"rtl\\\"] & {\\n\\t\\t\\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\\n\\t\\t\\t\\tright: -1px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/* Don't round the bottom left and right corners of the buttons when \\\"open\\\"\\n\\thttps://github.com/ckeditor/ckeditor5/issues/816 */\\n\\t&.ck-splitbutton_open {\\n\\t\\t@mixin ck-rounded-corners {\\n\\t\\t\\t& > .ck-splitbutton__action {\\n\\t\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& > .ck-splitbutton__arrow {\\n\\t\\t\\t\\tborder-bottom-right-radius: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t@nest .ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-toolbar-dropdown-max-width:60vw}.ck.ck-toolbar-dropdown>.ck-dropdown__panel{max-width:var(--ck-toolbar-dropdown-max-width);width:max-content}.ck.ck-toolbar-dropdown>.ck-dropdown__panel .ck-button:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-toolbar-dropdown .ck-toolbar{border:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/dropdown/toolbardropdown.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/toolbardropdown.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,oCACD,CAEA,4CAGC,8CAA+C,CAD/C,iBAQD,CAJE,6DACC,qCACD,CCZF,oCACC,QACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-toolbar-dropdown-max-width: 60vw;\\n}\\n\\n.ck.ck-toolbar-dropdown > .ck-dropdown__panel {\\n\\t/* https://github.com/ckeditor/ckeditor5/issues/5586 */\\n\\twidth: max-content;\\n\\tmax-width: var(--ck-toolbar-dropdown-max-width);\\n\\n\\t& .ck-button {\\n\\t\\t&:focus {\\n\\t\\t\\tz-index: calc(var(--ck-z-default) + 1);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-toolbar-dropdown .ck-toolbar {\\n\\tborder: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-color-editable-blur-selection:#d9d9d9}.ck.ck-editor__editable:not(.ck-editor__nested-editable){border-radius:0}.ck-rounded-corners .ck.ck-editor__editable:not(.ck-editor__nested-editable),.ck.ck-editor__editable.ck-rounded-corners:not(.ck-editor__nested-editable){border-radius:var(--ck-border-radius)}.ck.ck-editor__editable.ck-focused:not(.ck-editor__nested-editable){border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck.ck-editor__editable_inline{border:1px solid transparent;overflow:auto;padding:0 var(--ck-spacing-standard)}.ck.ck-editor__editable_inline[dir=ltr]{text-align:left}.ck.ck-editor__editable_inline[dir=rtl]{text-align:right}.ck.ck-editor__editable_inline>:first-child{margin-top:var(--ck-spacing-large)}.ck.ck-editor__editable_inline>:last-child{margin-bottom:var(--ck-spacing-large)}.ck.ck-editor__editable_inline.ck-blurred ::selection{background:var(--ck-color-editable-blur-selection)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_n]:after{border-bottom-color:var(--ck-color-panel-background)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_s]:after{border-top-color:var(--ck-color-panel-background)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/editorui/editorui.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_focus.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css\"],\"names\":[],\"mappings\":\"AAWA,MACC,0CACD,CAEA,yDCJC,eDWD,CAPA,yJCAE,qCDOF,CAJC,oEEPA,2BAA2B,CCF3B,qCAA8B,CDC9B,YFWA,CAGD,+BAGC,4BAA6B,CAF7B,aAAc,CACd,oCA6BD,CA1BC,wCACC,eACD,CAEA,wCACC,gBACD,CAGA,4CACC,kCACD,CAGA,2CAKC,qCACD,CAGA,sDACC,kDACD,CAKA,gEACC,oDACD,CAIA,gEACC,iDACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"../../../mixins/_disabled.css\\\";\\n@import \\\"../../../mixins/_shadow.css\\\";\\n@import \\\"../../../mixins/_focus.css\\\";\\n@import \\\"../../mixins/_button.css\\\";\\n\\n:root {\\n\\t--ck-color-editable-blur-selection: hsl(0, 0%, 85%);\\n}\\n\\n.ck.ck-editor__editable:not(.ck-editor__nested-editable) {\\n\\t@mixin ck-rounded-corners;\\n\\n\\t&.ck-focused {\\n\\t\\t@mixin ck-focus-ring;\\n\\t\\t@mixin ck-box-shadow var(--ck-inner-shadow);\\n\\t}\\n}\\n\\n.ck.ck-editor__editable_inline {\\n\\toverflow: auto;\\n\\tpadding: 0 var(--ck-spacing-standard);\\n\\tborder: 1px solid transparent;\\n\\n\\t&[dir=\\\"ltr\\\"] {\\n\\t\\ttext-align: left;\\n\\t}\\n\\n\\t&[dir=\\\"rtl\\\"] {\\n\\t\\ttext-align: right;\\n\\t}\\n\\n\\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/116 */\\n\\t& > *:first-child {\\n\\t\\tmargin-top: var(--ck-spacing-large);\\n\\t}\\n\\n\\t/* https://github.com/ckeditor/ckeditor5/issues/847 */\\n\\t& > *:last-child {\\n\\t\\t/*\\n\\t\\t * This value should match with the default margins of the block elements (like .media or .image)\\n\\t\\t * to avoid a content jumping when the fake selection container shows up (See https://github.com/ckeditor/ckeditor5/issues/9825).\\n\\t\\t */\\n\\t\\tmargin-bottom: var(--ck-spacing-large);\\n\\t}\\n\\n\\t/* https://github.com/ckeditor/ckeditor5/issues/6517 */\\n\\t&.ck-blurred ::selection {\\n\\t\\tbackground: var(--ck-color-editable-blur-selection);\\n\\t}\\n}\\n\\n/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/111 */\\n.ck.ck-balloon-panel.ck-toolbar-container[class*=\\\"arrow_n\\\"] {\\n\\t&::after {\\n\\t\\tborder-bottom-color: var(--ck-color-panel-background);\\n\\t}\\n}\\n\\n.ck.ck-balloon-panel.ck-toolbar-container[class*=\\\"arrow_s\\\"] {\\n\\t&::after {\\n\\t\\tborder-top-color: var(--ck-color-panel-background);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t@nest .ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A visual style of focused element's border.\\n */\\n@define-mixin ck-focus-ring {\\n\\t/* Disable native outline. */\\n\\toutline: none;\\n\\tborder: var(--ck-focus-ring)\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-form__header{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}:root{--ck-form-header-height:38px}.ck.ck-form__header{border-bottom:1px solid var(--ck-color-base-border);height:var(--ck-form-header-height);line-height:var(--ck-form-header-height);padding:var(--ck-spacing-small) var(--ck-spacing-large)}.ck.ck-form__header .ck-form__header__label{font-weight:700}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/formheader/formheader.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/formheader/formheader.css\"],\"names\":[],\"mappings\":\"AAKA,oBAIC,kBAAmB,CAHnB,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CAEjB,6BACD,CCNA,MACC,4BACD,CAEA,oBAIC,mDAAoD,CAFpD,mCAAoC,CACpC,wCAAyC,CAFzC,uDAQD,CAHC,4CACC,eACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-form__header {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-wrap: nowrap;\\n\\talign-items: center;\\n\\tjustify-content: space-between;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-form-header-height: 38px;\\n}\\n\\n.ck.ck-form__header {\\n\\tpadding: var(--ck-spacing-small) var(--ck-spacing-large);\\n\\theight: var(--ck-form-header-height);\\n\\tline-height: var(--ck-form-header-height);\\n\\tborder-bottom: 1px solid var(--ck-color-base-border);\\n\\n\\t& .ck-form__header__label {\\n\\t\\tfont-weight: bold;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-icon{vertical-align:middle}:root{--ck-icon-size:calc(var(--ck-line-height-base)*var(--ck-font-size-normal))}.ck.ck-icon{font-size:.8333350694em;height:var(--ck-icon-size);width:var(--ck-icon-size);will-change:transform}.ck.ck-icon,.ck.ck-icon *{cursor:inherit}.ck.ck-icon.ck-icon_inherit-color,.ck.ck-icon.ck-icon_inherit-color *{color:inherit}.ck.ck-icon.ck-icon_inherit-color :not([fill]){fill:currentColor}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/icon/icon.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/icon/icon.css\"],\"names\":[],\"mappings\":\"AAKA,YACC,qBACD,CCFA,MACC,0EACD,CAEA,YAKC,uBAAwB,CAHxB,0BAA2B,CAD3B,yBAA0B,CAU1B,qBAoBD,CAlBC,0BALA,cAQA,CAMC,sEACC,aAMD,CAJC,+CAEC,iBACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-icon {\\n\\tvertical-align: middle;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-icon-size: calc(var(--ck-line-height-base) * var(--ck-font-size-normal));\\n}\\n\\n.ck.ck-icon {\\n\\twidth: var(--ck-icon-size);\\n\\theight: var(--ck-icon-size);\\n\\n\\t/* Multiplied by the height of the line in \\\"px\\\" should give SVG \\\"viewport\\\" dimensions */\\n\\tfont-size: .8333350694em;\\n\\n\\t/* Inherit cursor style (#5). */\\n\\tcursor: inherit;\\n\\n\\t/* This will prevent blurry icons on Firefox. See #340. */\\n\\twill-change: transform;\\n\\n\\t& * {\\n\\t\\t/* Inherit cursor style (#5). */\\n\\t\\tcursor: inherit;\\n\\t}\\n\\n\\t/* Allows dynamic coloring of an icon by inheriting its color from the parent. */\\n\\t&.ck-icon_inherit-color {\\n\\t\\tcolor: inherit;\\n\\n\\t\\t& * {\\n\\t\\t\\tcolor: inherit;\\n\\n\\t\\t\\t&:not([fill]) {\\n\\t\\t\\t\\t/* Needed by FF. */\\n\\t\\t\\t\\tfill: currentColor;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-input-width:18em;--ck-input-text-width:var(--ck-input-width)}.ck.ck-input{border-radius:0}.ck-rounded-corners .ck.ck-input,.ck.ck-input.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input{background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);min-height:var(--ck-ui-component-min-height);min-width:var(--ck-input-width);padding:var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);transition:box-shadow .1s ease-in-out,border .1s ease-in-out}.ck.ck-input:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-input[readonly]{background:var(--ck-color-input-disabled-background);border:1px solid var(--ck-color-input-disabled-border);color:var(--ck-color-input-disabled-text)}.ck.ck-input[readonly]:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-input.ck-error{animation:ck-input-shake .3s ease both;border-color:var(--ck-color-input-error-border)}.ck.ck-input.ck-error:focus{box-shadow:var(--ck-focus-error-outer-shadow),0 0}@keyframes ck-input-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/input/input.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_focus.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css\"],\"names\":[],\"mappings\":\"AASA,MACC,qBAAsB,CAGtB,2CACD,CAEA,aCLC,eD2CD,CAtCA,iECDE,qCDuCF,CAtCA,aAGC,2CAA4C,CAC5C,6CAA8C,CAK9C,4CAA6C,CAH7C,+BAAgC,CADhC,6DAA8D,CAO9D,4DA0BD,CAxBC,mBEnBA,2BAA2B,CCF3B,2CAA8B,CDC9B,YFuBA,CAEA,uBAEC,oDAAqD,CADrD,sDAAuD,CAEvD,yCAMD,CAJC,6BG/BD,oDHkCC,CAGD,sBAEC,sCAAuC,CADvC,+CAMD,CAHC,4BGzCD,iDH2CC,CAIF,0BACC,IACC,0BACD,CAEA,IACC,yBACD,CAEA,IACC,0BACD,CAEA,IACC,yBACD,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"../../../mixins/_focus.css\\\";\\n@import \\\"../../../mixins/_shadow.css\\\";\\n\\n:root {\\n\\t--ck-input-width: 18em;\\n\\n\\t/* Backward compatibility. */\\n\\t--ck-input-text-width: var(--ck-input-width);\\n}\\n\\n.ck.ck-input {\\n\\t@mixin ck-rounded-corners;\\n\\n\\tbackground: var(--ck-color-input-background);\\n\\tborder: 1px solid var(--ck-color-input-border);\\n\\tpadding: var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);\\n\\tmin-width: var(--ck-input-width);\\n\\n\\t/* This is important to stay of the same height as surrounding buttons */\\n\\tmin-height: var(--ck-ui-component-min-height);\\n\\n\\t/* Apply some smooth transition to the box-shadow and border. */\\n\\ttransition: box-shadow .1s ease-in-out, border .1s ease-in-out;\\n\\n\\t&:focus {\\n\\t\\t@mixin ck-focus-ring;\\n\\t\\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\\n\\t}\\n\\n\\t&[readonly] {\\n\\t\\tborder: 1px solid var(--ck-color-input-disabled-border);\\n\\t\\tbackground: var(--ck-color-input-disabled-background);\\n\\t\\tcolor: var(--ck-color-input-disabled-text);\\n\\n\\t\\t&:focus {\\n\\t\\t\\t/* The read-only input should have a slightly less visible shadow when focused. */\\n\\t\\t\\t@mixin ck-box-shadow var(--ck-focus-disabled-outer-shadow);\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-error {\\n\\t\\tborder-color: var(--ck-color-input-error-border);\\n\\t\\tanimation: ck-input-shake .3s ease both;\\n\\n\\t\\t&:focus {\\n\\t\\t\\t@mixin ck-box-shadow var(--ck-focus-error-outer-shadow);\\n\\t\\t}\\n\\t}\\n}\\n\\n@keyframes ck-input-shake {\\n\\t20% {\\n\\t\\ttransform: translateX(-2px);\\n\\t}\\n\\n\\t40% {\\n\\t\\ttransform: translateX(2px);\\n\\t}\\n\\n\\t60% {\\n\\t\\ttransform: translateX(-1px);\\n\\t}\\n\\n\\t80% {\\n\\t\\ttransform: translateX(1px);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t@nest .ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A visual style of focused element's border.\\n */\\n@define-mixin ck-focus-ring {\\n\\t/* Disable native outline. */\\n\\toutline: none;\\n\\tborder: var(--ck-focus-ring)\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/label/label.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/label/label.css\"],\"names\":[],\"mappings\":\"AAKA,aACC,aACD,CAEA,mBACC,YACD,CCNA,aACC,eACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-label {\\n\\tdisplay: block;\\n}\\n\\n.ck.ck-voice-label {\\n\\tdisplay: none;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-label {\\n\\tfont-weight: bold;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{display:flex;position:relative}.ck.ck-labeled-field-view .ck.ck-label{display:block;position:absolute}:root{--ck-labeled-field-view-transition:.1s cubic-bezier(0,0,0.24,0.95);--ck-labeled-field-empty-unfocused-max-width:100% - 2 * var(--ck-spacing-medium);--ck-labeled-field-label-default-position-x:var(--ck-spacing-medium);--ck-labeled-field-label-default-position-y:calc(var(--ck-font-size-base)*0.6);--ck-color-labeled-field-label-background:var(--ck-color-base-background)}.ck.ck-labeled-field-view{border-radius:0}.ck-rounded-corners .ck.ck-labeled-field-view,.ck.ck-labeled-field-view.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{width:100%}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{top:0}[dir=ltr] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{left:0}[dir=rtl] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{right:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{background:var(--ck-color-labeled-field-label-background);font-weight:400;line-height:normal;max-width:100%;overflow:hidden;padding:0 calc(var(--ck-font-size-tiny)*.5);pointer-events:none;text-overflow:ellipsis;transform:translate(var(--ck-spacing-medium),-6px) scale(.75);transform-origin:0 0;transition:transform var(--ck-labeled-field-view-transition),padding var(--ck-labeled-field-view-transition),background var(--ck-labeled-field-view-transition)}.ck.ck-labeled-field-view.ck-error .ck-input:not([readonly])+.ck.ck-label,.ck.ck-labeled-field-view.ck-error>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view .ck-labeled-field-view__status{font-size:var(--ck-font-size-small);margin-top:var(--ck-spacing-small);white-space:normal}.ck.ck-labeled-field-view .ck-labeled-field-view__status.ck-labeled-field-view__status_error{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view.ck-disabled>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-input-disabled-text)}[dir=ltr] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=ltr] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(var(--ck-labeled-field-label-default-position-x),var(--ck-labeled-field-label-default-position-y)) scale(1)}[dir=rtl] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=rtl] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(calc(var(--ck-labeled-field-label-default-position-x)*-1),var(--ck-labeled-field-label-default-position-y)) scale(1)}.ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{background:transparent;max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width));padding:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck.ck-button{background:transparent}.ck.ck-labeled-field-view.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck-button>.ck-button__label{opacity:0}.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown+.ck-label{max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard))}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/labeledfield/labeledfieldview.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css\"],\"names\":[],\"mappings\":\"AAMC,mEACC,YAAa,CACb,iBACD,CAEA,uCACC,aAAc,CACd,iBACD,CCND,MACC,kEAAsE,CACtE,gFAAiF,CACjF,oEAAqE,CACrE,8EAAiF,CACjF,yEACD,CAEA,0BCLC,eD8GD,CAzGA,2FCDE,qCD0GF,CAtGC,mEACC,UAmCD,CAjCC,gFACC,KA+BD,CAhCA,0FAIE,MA4BF,CAhCA,0FAQE,OAwBF,CAhCA,gFAiBC,yDAA0D,CAG1D,eAAmB,CADnB,kBAAoB,CAOpB,cAAe,CAFf,eAAgB,CANhB,2CAA8C,CAP9C,mBAAoB,CAYpB,sBAAuB,CARvB,6DAA+D,CAH/D,oBAAqB,CAgBrB,+JAID,CAQA,mKACC,gCACD,CAGD,yDACC,mCAAoC,CACpC,kCAAmC,CAInC,kBAKD,CAHC,6FACC,gCACD,CAID,4OAEC,yCACD,CAIA,oUAGE,+HAYF,CAfA,oUAOE,wIAQF,CAfA,gTAaC,sBAAuB,CAFvB,iEAAkE,CAGlE,SACD,CAKA,8FACC,sBACD,CAGA,yIACC,SACD,CAGA,kMACC,8HACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-labeled-field-view {\\n\\t& > .ck.ck-labeled-field-view__input-wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t& .ck.ck-label {\\n\\t\\tdisplay: block;\\n\\t\\tposition: absolute;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n@import \\\"../../../mixins/_rounded.css\\\";\\n\\n:root {\\n\\t--ck-labeled-field-view-transition: .1s cubic-bezier(0, 0, 0.24, 0.95);\\n\\t--ck-labeled-field-empty-unfocused-max-width: 100% - 2 * var(--ck-spacing-medium);\\n\\t--ck-labeled-field-label-default-position-x: var(--ck-spacing-medium);\\n\\t--ck-labeled-field-label-default-position-y: calc(0.6 * var(--ck-font-size-base));\\n\\t--ck-color-labeled-field-label-background: var(--ck-color-base-background);\\n}\\n\\n.ck.ck-labeled-field-view {\\n\\t@mixin ck-rounded-corners;\\n\\n\\t& > .ck.ck-labeled-field-view__input-wrapper {\\n\\t\\twidth: 100%;\\n\\n\\t\\t& > .ck.ck-label {\\n\\t\\t\\ttop: 0px;\\n\\n\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\tleft: 0px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tright: 0px;\\n\\t\\t\\t}\\n\\n\\t\\t\\tpointer-events: none;\\n\\t\\t\\ttransform-origin: 0 0;\\n\\n\\t\\t\\t/* By default, display the label scaled down above the field. */\\n\\t\\t\\ttransform: translate(var(--ck-spacing-medium), -6px) scale(.75);\\n\\n\\t\\t\\tbackground: var(--ck-color-labeled-field-label-background);\\n\\t\\t\\tpadding: 0 calc(.5 * var(--ck-font-size-tiny));\\n\\t\\t\\tline-height: initial;\\n\\t\\t\\tfont-weight: normal;\\n\\n\\t\\t\\t/* Prevent overflow when the label is longer than the input */\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\n\\t\\t\\tmax-width: 100%;\\n\\n\\t\\t\\ttransition:\\n\\t\\t\\t\\ttransform var(--ck-labeled-field-view-transition),\\n\\t\\t\\t\\tpadding var(--ck-labeled-field-view-transition),\\n\\t\\t\\t\\tbackground var(--ck-labeled-field-view-transition);\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-error {\\n\\t\\t& > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\\n\\t\\t\\tcolor: var(--ck-color-base-error);\\n\\t\\t}\\n\\n\\t\\t& .ck-input:not([readonly]) + .ck.ck-label {\\n\\t\\t\\tcolor: var(--ck-color-base-error);\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck-labeled-field-view__status {\\n\\t\\tfont-size: var(--ck-font-size-small);\\n\\t\\tmargin-top: var(--ck-spacing-small);\\n\\n\\t\\t/* Let the info wrap to the next line to avoid stretching the layout horizontally.\\n\\t\\tThe status could be very long. */\\n\\t\\twhite-space: normal;\\n\\n\\t\\t&.ck-labeled-field-view__status_error {\\n\\t\\t\\tcolor: var(--ck-color-base-error);\\n\\t\\t}\\n\\t}\\n\\n\\t/* Disabled fields and fields that have no focus should fade out. */\\n\\t&.ck-disabled > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,\\n\\t&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\\n\\t\\tcolor: var(--ck-color-input-disabled-text);\\n\\t}\\n\\n\\t/* Fields that are disabled or not focused and without a placeholder should have full-sized labels. */\\n\\t/* stylelint-disable-next-line no-descending-specificity */\\n\\t&.ck-disabled.ck-labeled-field-view_empty > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,\\n\\t&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\ttransform: translate(var(--ck-labeled-field-label-default-position-x), var(--ck-labeled-field-label-default-position-y)) scale(1);\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\ttransform: translate(calc(-1 * var(--ck-labeled-field-label-default-position-x)), var(--ck-labeled-field-label-default-position-y)) scale(1);\\n\\t\\t}\\n\\n\\t\\t/* Compensate for the default translate position. */\\n\\t\\tmax-width: calc(var(--ck-labeled-field-empty-unfocused-max-width));\\n\\n\\t\\tbackground: transparent;\\n\\t\\tpadding: 0;\\n\\t}\\n\\n\\t/*------ DropdownView integration ----------------------------------------------------------------------------------- */\\n\\n\\t/* Make sure dropdown' background color in any of dropdown's state does not collide with labeled field. */\\n\\t& > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck.ck-button {\\n\\t\\tbackground: transparent;\\n\\t}\\n\\n\\t/* When the dropdown is \\\"empty\\\", the labeled field label replaces its label. */\\n\\t&.ck-labeled-field-view_empty > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck-button > .ck-button__label {\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t/* Make sure the label of the empty, unfocused input does not cover the dropdown arrow. */\\n\\t&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder) > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown + .ck-label {\\n\\t\\tmax-width: calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard));\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t@nest .ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-list{display:flex;flex-direction:column;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-list .ck-list__item,.ck.ck-list .ck-list__separator{display:block}.ck.ck-list .ck-list__item>:focus{position:relative;z-index:var(--ck-z-default)}.ck.ck-list{border-radius:0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list{background:var(--ck-color-list-background);list-style-type:none}.ck.ck-list__item{cursor:default;min-width:12em}.ck.ck-list__item .ck-button{border-radius:0;min-height:unset;padding:calc(var(--ck-line-height-base)*.2*var(--ck-font-size-base)) calc(var(--ck-line-height-base)*.4*var(--ck-font-size-base));text-align:left;width:100%}.ck.ck-list__item .ck-button .ck-button__label{line-height:calc(var(--ck-line-height-base)*1.2*var(--ck-font-size-base))}.ck.ck-list__item .ck-button:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on{background:var(--ck-color-list-button-on-background);color:var(--ck-color-list-button-on-text)}.ck.ck-list__item .ck-button.ck-on:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-on-background-focus)}.ck.ck-list__item .ck-button.ck-on:focus:not(.ck-switchbutton):not(.ck-disabled){border-color:var(--ck-color-base-background)}.ck.ck-list__item .ck-button:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-list__item .ck-switchbutton.ck-on{background:var(--ck-color-list-background);color:inherit}.ck.ck-list__item .ck-switchbutton.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background);color:inherit}.ck.ck-list__separator{background:var(--ck-color-base-border);height:1px;width:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/list/list.css\",\"webpack://./../ckeditor5-ui/theme/mixins/_unselectable.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/list/list.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css\"],\"names\":[],\"mappings\":\"AAOA,YAGC,YAAa,CACb,qBAAsB,CCFtB,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBDaD,CAZC,2DAEC,aACD,CAKA,kCACC,iBAAkB,CAClB,2BACD,CEfD,YCEC,eDGD,CALA,+DCME,qCDDF,CALA,YAIC,0CAA2C,CAD3C,oBAED,CAEA,kBACC,cAAe,CACf,cA2DD,CAzDC,6BAIC,eAAgB,CAHhB,gBAAiB,CAQjB,iIAEiE,CARjE,eAAgB,CADhB,UAwCD,CA7BC,+CAEC,yEACD,CAEA,oCACC,eACD,CAEA,mCACC,oDAAqD,CACrD,yCAaD,CAXC,0CACC,eACD,CAEA,2DACC,0DACD,CAEA,iFACC,4CACD,CAGD,qDACC,uDACD,CAMA,yCACC,0CAA2C,CAC3C,aAMD,CAJC,iEACC,uDAAwD,CACxD,aACD,CAKH,uBAGC,sCAAuC,CAFvC,UAAW,CACX,UAED\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../mixins/_unselectable.css\\\";\\n\\n.ck.ck-list {\\n\\t@mixin ck-unselectable;\\n\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t& .ck-list__item,\\n\\t& .ck-list__separator {\\n\\t\\tdisplay: block;\\n\\t}\\n\\n\\t/* Make sure that whatever child of the list item gets focus, it remains on the\\n\\ttop. Thanks to that, styles like box-shadow, outline, etc. are not masked by\\n\\tadjacent list items. */\\n\\t& .ck-list__item > *:focus {\\n\\t\\tposition: relative;\\n\\t\\tz-index: var(--ck-z-default);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Makes element unselectable.\\n */\\n@define-mixin ck-unselectable {\\n\\t-moz-user-select: none;\\n\\t-webkit-user-select: none;\\n\\t-ms-user-select: none;\\n\\tuser-select: none\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../../mixins/_disabled.css\\\";\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"../../../mixins/_shadow.css\\\";\\n\\n.ck.ck-list {\\n\\t@mixin ck-rounded-corners;\\n\\n\\tlist-style-type: none;\\n\\tbackground: var(--ck-color-list-background);\\n}\\n\\n.ck.ck-list__item {\\n\\tcursor: default;\\n\\tmin-width: 12em;\\n\\n\\t& .ck-button {\\n\\t\\tmin-height: unset;\\n\\t\\twidth: 100%;\\n\\t\\ttext-align: left;\\n\\t\\tborder-radius: 0;\\n\\n\\t\\t/* List items should have the same height. Use absolute units to make sure it is so\\n\\t\\t because e.g. different heading styles may have different height\\n\\t\\t https://github.com/ckeditor/ckeditor5-heading/issues/63 */\\n\\t\\tpadding:\\n\\t\\t\\tcalc(.2 * var(--ck-line-height-base) * var(--ck-font-size-base))\\n\\t\\t\\tcalc(.4 * var(--ck-line-height-base) * var(--ck-font-size-base));\\n\\n\\t\\t& .ck-button__label {\\n\\t\\t\\t/* https://github.com/ckeditor/ckeditor5-heading/issues/63 */\\n\\t\\t\\tline-height: calc(1.2 * var(--ck-line-height-base) * var(--ck-font-size-base));\\n\\t\\t}\\n\\n\\t\\t&:active {\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t}\\n\\n\\t\\t&.ck-on {\\n\\t\\t\\tbackground: var(--ck-color-list-button-on-background);\\n\\t\\t\\tcolor: var(--ck-color-list-button-on-text);\\n\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\tbox-shadow: none;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:hover:not(.ck-disabled) {\\n\\t\\t\\t\\tbackground: var(--ck-color-list-button-on-background-focus);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:focus:not(.ck-switchbutton):not(.ck-disabled) {\\n\\t\\t\\t\\tborder-color: var(--ck-color-base-background);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&:hover:not(.ck-disabled) {\\n\\t\\t\\tbackground: var(--ck-color-list-button-hover-background);\\n\\t\\t}\\n\\t}\\n\\n\\t/* It's unnecessary to change the background/text of a switch toggle; it has different ways\\n\\tof conveying its state (like the switcher) */\\n\\t& .ck-switchbutton {\\n\\t\\t&.ck-on {\\n\\t\\t\\tbackground: var(--ck-color-list-background);\\n\\t\\t\\tcolor: inherit;\\n\\n\\t\\t\\t&:hover:not(.ck-disabled) {\\n\\t\\t\\t\\tbackground: var(--ck-color-list-button-hover-background);\\n\\t\\t\\t\\tcolor: inherit;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck.ck-list__separator {\\n\\theight: 1px;\\n\\twidth: 100%;\\n\\tbackground: var(--ck-color-base-border);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t@nest .ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-balloon-panel-arrow-z-index:calc(var(--ck-z-default) - 3)}.ck.ck-balloon-panel{display:none;position:absolute;z-index:var(--ck-z-modal)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{content:\\\"\\\";position:absolute}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_n]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_n]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_s]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_s]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel.ck-balloon-panel_visible{display:block}:root{--ck-balloon-border-width:1px;--ck-balloon-arrow-offset:2px;--ck-balloon-arrow-height:10px;--ck-balloon-arrow-half-width:8px;--ck-balloon-arrow-drop-shadow:0 2px 2px var(--ck-color-shadow-drop)}.ck.ck-balloon-panel{border-radius:0}.ck-rounded-corners .ck.ck-balloon-panel,.ck.ck-balloon-panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-balloon-panel{background:var(--ck-color-panel-background);border:var(--ck-balloon-border-width) solid var(--ck-color-panel-border);box-shadow:var(--ck-drop-shadow),0 0;min-height:15px}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{border-style:solid;height:0;width:0}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-width:0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_n]:before{border-color:transparent transparent var(--ck-color-panel-border) transparent;margin-top:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_n]:after{border-color:transparent transparent var(--ck-color-panel-background) transparent;margin-top:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-width:var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_s]:before{border-color:var(--ck-color-panel-border) transparent transparent;filter:drop-shadow(var(--ck-balloon-arrow-drop-shadow));margin-bottom:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_s]:after{border-color:var(--ck-color-panel-background) transparent transparent transparent;margin-bottom:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_e]:after,.ck.ck-balloon-panel[class*=arrow_e]:before{border-width:var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height)}.ck.ck-balloon-panel[class*=arrow_e]:before{border-color:transparent transparent transparent var(--ck-color-panel-border);margin-right:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_e]:after{border-color:transparent transparent transparent var(--ck-color-panel-background);margin-right:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_w]:after,.ck.ck-balloon-panel[class*=arrow_w]:before{border-width:var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0}.ck.ck-balloon-panel[class*=arrow_w]:before{border-color:transparent var(--ck-color-panel-border) transparent transparent;margin-left:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_w]:after{border-color:transparent var(--ck-color-panel-background) transparent transparent;margin-left:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:before{left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:before{left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:before{right:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);right:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:before{margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%;top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:before{left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:before{margin-top:calc(var(--ck-balloon-arrow-half-width)*-1);right:calc(var(--ck-balloon-arrow-height)*-1);top:50%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:before{left:calc(var(--ck-balloon-arrow-height)*-1);margin-top:calc(var(--ck-balloon-arrow-half-width)*-1);top:50%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/panel/balloonpanel.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/balloonpanel.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css\"],\"names\":[],\"mappings\":\"AAKA,MAEC,8DACD,CAEA,qBACC,YAAa,CACb,iBAAkB,CAElB,yBAyCD,CAtCE,+GAEC,UAAW,CACX,iBACD,CAEA,wDACC,6CACD,CAEA,uDACC,uDACD,CAIA,4CACC,6CACD,CAEA,2CACC,uDACD,CAIA,4CACC,6CACD,CAEA,2CACC,uDACD,CAGD,8CACC,aACD,CC9CD,MACC,6BAA8B,CAC9B,6BAA8B,CAC9B,8BAA+B,CAC/B,iCAAkC,CAClC,oEACD,CAEA,qBCLC,eDmMD,CA9LA,iFCDE,qCD+LF,CA9LA,qBAMC,2CAA4C,CAC5C,wEAAyE,CEdzE,oCAA8B,CFW9B,eA0LD,CApLE,+GAIC,kBAAmB,CADnB,QAAS,CADT,OAGD,CAIA,uFAEC,mHACD,CAEA,4CACC,6EAA8E,CAC9E,kDACD,CAEA,2CACC,iFAAkF,CAClF,gFACD,CAIA,uFAEC,mHACD,CAEA,4CACC,iEAAkE,CAClE,uDAAwD,CACxD,qDACD,CAEA,2CACC,iFAAkF,CAClF,mFACD,CAIA,uFAEC,mHACD,CAEA,4CACC,6EAA8E,CAC9E,oDACD,CAEA,2CACC,iFAAkF,CAClF,kFACD,CAIA,uFAEC,mHACD,CAEA,4CACC,6EAA8E,CAC9E,mDACD,CAEA,2CACC,iFAAkF,CAClF,iFACD,CAIA,yGAEC,QAAS,CACT,uDAA0D,CAC1D,2CACD,CAIA,2GAEC,+CAAkD,CAClD,2CACD,CAIA,2GAEC,gDAAmD,CACnD,2CACD,CAIA,yGAIC,8CAAiD,CAFjD,QAAS,CACT,uDAED,CAIA,2GAGC,8CAAiD,CADjD,+CAED,CAIA,2GAGC,8CAAiD,CADjD,gDAED,CAIA,6GAIC,8CAAiD,CADjD,uDAA0D,CAD1D,SAGD,CAIA,6GAIC,8CAAiD,CAFjD,QAAS,CACT,sDAED,CAIA,6GAGC,uDAA0D,CAD1D,SAAU,CAEV,2CACD,CAIA,6GAEC,QAAS,CACT,sDAAyD,CACzD,2CACD,CAIA,yGAGC,sDAAyD,CADzD,6CAAgD,CAEhD,OACD,CAIA,yGAEC,4CAA+C,CAC/C,sDAAyD,CACzD,OACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t/* Make sure the balloon arrow does not float over its children. */\\n\\t--ck-balloon-panel-arrow-z-index: calc(var(--ck-z-default) - 3);\\n}\\n\\n.ck.ck-balloon-panel {\\n\\tdisplay: none;\\n\\tposition: absolute;\\n\\n\\tz-index: var(--ck-z-modal);\\n\\n\\t&.ck-balloon-panel_with-arrow {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tcontent: \\\"\\\";\\n\\t\\t\\tposition: absolute;\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tz-index: var(--ck-balloon-panel-arrow-z-index);\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\\n\\t\\t}\\n\\t}\\n\\n\\t&[class*=\\\"arrow_n\\\"] {\\n\\t\\t&::before {\\n\\t\\t\\tz-index: var(--ck-balloon-panel-arrow-z-index);\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\\n\\t\\t}\\n\\t}\\n\\n\\t&[class*=\\\"arrow_s\\\"] {\\n\\t\\t&::before {\\n\\t\\t\\tz-index: var(--ck-balloon-panel-arrow-z-index);\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_visible {\\n\\t\\tdisplay: block;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"../../../mixins/_shadow.css\\\";\\n\\n:root {\\n\\t--ck-balloon-border-width: 1px;\\n\\t--ck-balloon-arrow-offset: 2px;\\n\\t--ck-balloon-arrow-height: 10px;\\n\\t--ck-balloon-arrow-half-width: 8px;\\n\\t--ck-balloon-arrow-drop-shadow: 0 2px 2px var(--ck-color-shadow-drop);\\n}\\n\\n.ck.ck-balloon-panel {\\n\\t@mixin ck-rounded-corners;\\n\\t@mixin ck-drop-shadow;\\n\\n\\tmin-height: 15px;\\n\\n\\tbackground: var(--ck-color-panel-background);\\n\\tborder: var(--ck-balloon-border-width) solid var(--ck-color-panel-border);\\n\\n\\t&.ck-balloon-panel_with-arrow {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\twidth: 0;\\n\\t\\t\\theight: 0;\\n\\t\\t\\tborder-style: solid;\\n\\t\\t}\\n\\t}\\n\\n\\t&[class*=\\\"arrow_n\\\"] {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tborder-width: 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width);\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tborder-color: transparent transparent var(--ck-color-panel-border) transparent;\\n\\t\\t\\tmargin-top: calc( -1 * var(--ck-balloon-border-width) );\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tborder-color: transparent transparent var(--ck-color-panel-background) transparent;\\n\\t\\t\\tmargin-top: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\\n\\t\\t}\\n\\t}\\n\\n\\t&[class*=\\\"arrow_s\\\"] {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tborder-width: var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width);\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tborder-color: var(--ck-color-panel-border) transparent transparent;\\n\\t\\t\\tfilter: drop-shadow(var(--ck-balloon-arrow-drop-shadow));\\n\\t\\t\\tmargin-bottom: calc( -1 * var(--ck-balloon-border-width) );\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tborder-color: var(--ck-color-panel-background) transparent transparent transparent;\\n\\t\\t\\tmargin-bottom: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\\n\\t\\t}\\n\\t}\\n\\n\\t&[class*=\\\"arrow_e\\\"] {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tborder-width: var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height);\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tborder-color: transparent transparent transparent var(--ck-color-panel-border);\\n\\t\\t\\tmargin-right: calc( -1 * var(--ck-balloon-border-width) );\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tborder-color: transparent transparent transparent var(--ck-color-panel-background);\\n\\t\\t\\tmargin-right: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\\n\\t\\t}\\n\\t}\\n\\n\\t&[class*=\\\"arrow_w\\\"] {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tborder-width: var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0;\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tborder-color: transparent var(--ck-color-panel-border) transparent transparent;\\n\\t\\t\\tmargin-left: calc( -1 * var(--ck-balloon-border-width) );\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tborder-color: transparent var(--ck-color-panel-background) transparent transparent;\\n\\t\\t\\tmargin-left: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_n {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tleft: 50%;\\n\\t\\t\\tmargin-left: calc(-1 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\ttop: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_nw {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tleft: calc(2 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\ttop: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_ne {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tright: calc(2 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\ttop: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_s {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tleft: 50%;\\n\\t\\t\\tmargin-left: calc(-1 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_sw {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tleft: calc(2 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_se {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tright: calc(2 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_sme {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tright: 25%;\\n\\t\\t\\tmargin-right: calc(2 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_smw {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tleft: 25%;\\n\\t\\t\\tmargin-left: calc(2 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_nme {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tright: 25%;\\n\\t\\t\\tmargin-right: calc(2 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\ttop: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_nmw {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tleft: 25%;\\n\\t\\t\\tmargin-left: calc(2 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\ttop: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_e {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tright: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t\\tmargin-top: calc(-1 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\ttop: 50%;\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_w {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tleft: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t\\tmargin-top: calc(-1 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\ttop: 50%;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t@nest .ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck .ck-balloon-rotator__navigation{align-items:center;display:flex;justify-content:center}.ck .ck-balloon-rotator__content .ck-toolbar{justify-content:center}.ck .ck-balloon-rotator__navigation{background:var(--ck-color-toolbar-background);border-bottom:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation>*{margin-bottom:var(--ck-spacing-small);margin-right:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter{margin-left:var(--ck-spacing-small);margin-right:var(--ck-spacing-standard)}.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper{box-shadow:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/panel/balloonrotator.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/balloonrotator.css\"],\"names\":[],\"mappings\":\"AAKA,oCAEC,kBAAmB,CADnB,YAAa,CAEb,sBACD,CAKA,6CACC,sBACD,CCXA,oCACC,6CAA8C,CAC9C,sDAAuD,CACvD,iCAgBD,CAbC,sCAGC,qCAAsC,CAFtC,oCAAqC,CACrC,kCAED,CAGA,iEAIC,mCAAoC,CAHpC,uCAID,CAMA,2DACC,eACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck .ck-balloon-rotator__navigation {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\\n/* Buttons inside a toolbar should be centered when rotator bar is wider.\\n * See: https://github.com/ckeditor/ckeditor5-ui/issues/495\\n */\\n.ck .ck-balloon-rotator__content .ck-toolbar {\\n\\tjustify-content: center;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck .ck-balloon-rotator__navigation {\\n\\tbackground: var(--ck-color-toolbar-background);\\n\\tborder-bottom: 1px solid var(--ck-color-toolbar-border);\\n\\tpadding: 0 var(--ck-spacing-small);\\n\\n\\t/* Let's keep similar appearance to `ck-toolbar`. */\\n\\t& > * {\\n\\t\\tmargin-right: var(--ck-spacing-small);\\n\\t\\tmargin-top: var(--ck-spacing-small);\\n\\t\\tmargin-bottom: var(--ck-spacing-small);\\n\\t}\\n\\n\\t/* Gives counter more breath than buttons. */\\n\\t& .ck-balloon-rotator__counter {\\n\\t\\tmargin-right: var(--ck-spacing-standard);\\n\\n\\t\\t/* We need to use smaller margin because of previous button's right margin. */\\n\\t\\tmargin-left: var(--ck-spacing-small);\\n\\t}\\n}\\n\\n.ck .ck-balloon-rotator__content {\\n\\n\\t/* Disable default annotation shadow inside rotator with fake panels. */\\n\\t& .ck.ck-annotation-wrapper {\\n\\t\\tbox-shadow: none;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck .ck-fake-panel{position:absolute;z-index:calc(var(--ck-z-modal) - 1)}.ck .ck-fake-panel div{position:absolute}.ck .ck-fake-panel div:first-child{z-index:2}.ck .ck-fake-panel div:nth-child(2){z-index:1}:root{--ck-balloon-fake-panel-offset-horizontal:6px;--ck-balloon-fake-panel-offset-vertical:6px}.ck .ck-fake-panel div{background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);border-radius:var(--ck-border-radius);box-shadow:var(--ck-drop-shadow),0 0;height:100%;min-height:15px;width:100%}.ck .ck-fake-panel div:first-child{margin-left:var(--ck-balloon-fake-panel-offset-horizontal);margin-top:var(--ck-balloon-fake-panel-offset-vertical)}.ck .ck-fake-panel div:nth-child(2){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*2);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*2)}.ck .ck-fake-panel div:nth-child(3){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*3);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*3)}.ck .ck-balloon-panel_arrow_s+.ck-fake-panel,.ck .ck-balloon-panel_arrow_se+.ck-fake-panel,.ck .ck-balloon-panel_arrow_sw+.ck-fake-panel{--ck-balloon-fake-panel-offset-vertical:-6px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/panel/fakepanel.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/fakepanel.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css\"],\"names\":[],\"mappings\":\"AAKA,mBACC,iBAAkB,CAGlB,mCACD,CAEA,uBACC,iBACD,CAEA,mCACC,SACD,CAEA,oCACC,SACD,CCfA,MACC,6CAA8C,CAC9C,2CACD,CAGA,uBAKC,2CAA4C,CAC5C,6CAA8C,CAC9C,qCAAsC,CCXtC,oCAA8B,CDc9B,WAAY,CAPZ,eAAgB,CAMhB,UAED,CAEA,mCACC,0DAA2D,CAC3D,uDACD,CAEA,oCACC,kEAAqE,CACrE,+DACD,CACA,oCACC,kEAAqE,CACrE,+DACD,CAGA,yIAGC,4CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck .ck-fake-panel {\\n\\tposition: absolute;\\n\\n\\t/* Fake panels should be placed under main balloon content. */\\n\\tz-index: calc(var(--ck-z-modal) - 1);\\n}\\n\\n.ck .ck-fake-panel div {\\n\\tposition: absolute;\\n}\\n\\n.ck .ck-fake-panel div:nth-child( 1 ) {\\n\\tz-index: 2;\\n}\\n\\n.ck .ck-fake-panel div:nth-child( 2 ) {\\n\\tz-index: 1;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../../mixins/_shadow.css\\\";\\n\\n:root {\\n\\t--ck-balloon-fake-panel-offset-horizontal: 6px;\\n\\t--ck-balloon-fake-panel-offset-vertical: 6px;\\n}\\n\\n/* Let's use `.ck-balloon-panel` appearance. See: balloonpanel.css. */\\n.ck .ck-fake-panel div {\\n\\t@mixin ck-drop-shadow;\\n\\n\\tmin-height: 15px;\\n\\n\\tbackground: var(--ck-color-panel-background);\\n\\tborder: 1px solid var(--ck-color-panel-border);\\n\\tborder-radius: var(--ck-border-radius);\\n\\n\\twidth: 100%;\\n\\theight: 100%;\\n}\\n\\n.ck .ck-fake-panel div:nth-child( 1 ) {\\n\\tmargin-left: var(--ck-balloon-fake-panel-offset-horizontal);\\n\\tmargin-top: var(--ck-balloon-fake-panel-offset-vertical);\\n}\\n\\n.ck .ck-fake-panel div:nth-child( 2 ) {\\n\\tmargin-left: calc(var(--ck-balloon-fake-panel-offset-horizontal) * 2);\\n\\tmargin-top: calc(var(--ck-balloon-fake-panel-offset-vertical) * 2);\\n}\\n.ck .ck-fake-panel div:nth-child( 3 ) {\\n\\tmargin-left: calc(var(--ck-balloon-fake-panel-offset-horizontal) * 3);\\n\\tmargin-top: calc(var(--ck-balloon-fake-panel-offset-vertical) * 3);\\n}\\n\\n/* If balloon is positioned above element, we need to move fake panel to the top. */\\n.ck .ck-balloon-panel_arrow_s + .ck-fake-panel,\\n.ck .ck-balloon-panel_arrow_se + .ck-fake-panel,\\n.ck .ck-balloon-panel_arrow_sw + .ck-fake-panel {\\n\\t--ck-balloon-fake-panel-offset-vertical: -6px;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-sticky-panel .ck-sticky-panel__content_sticky{position:fixed;top:0;z-index:var(--ck-z-modal)}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky_bottom-limit{position:absolute;top:auto}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky{border-top-left-radius:0;border-top-right-radius:0;border-width:0 1px 1px;box-shadow:var(--ck-drop-shadow),0 0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/panel/stickypanel.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/stickypanel.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css\"],\"names\":[],\"mappings\":\"AAMC,qDAEC,cAAe,CACf,KAAM,CAFN,yBAGD,CAEA,kEAEC,iBAAkB,CADlB,QAED,CCPA,qDAIC,wBAAyB,CACzB,yBAA0B,CAF1B,sBAAuB,CCFxB,oCDKA\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-sticky-panel {\\n\\t& .ck-sticky-panel__content_sticky {\\n\\t\\tz-index: var(--ck-z-modal); /* #315 */\\n\\t\\tposition: fixed;\\n\\t\\ttop: 0;\\n\\t}\\n\\n\\t& .ck-sticky-panel__content_sticky_bottom-limit {\\n\\t\\ttop: auto;\\n\\t\\tposition: absolute;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../../mixins/_shadow.css\\\";\\n\\n.ck.ck-sticky-panel {\\n\\t& .ck-sticky-panel__content_sticky {\\n\\t\\t@mixin ck-drop-shadow;\\n\\n\\t\\tborder-width: 0 1px 1px;\\n\\t\\tborder-top-left-radius: 0;\\n\\t\\tborder-top-right-radius: 0;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-vertical-form .ck-button:after{bottom:-1px;content:\\\"\\\";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck-vertical-form .ck-button:focus:after{display:none}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{bottom:-1px;content:\\\"\\\";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck.ck-responsive-form .ck-button:focus:after{display:none}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-large)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-width)*.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){border-radius:0;margin-top:var(--ck-spacing-large);padding:var(--ck-spacing-standard)}.ck.ck-responsive-form>.ck-button:last-child:not(:focus),.ck.ck-responsive-form>.ck-button:nth-last-child(2):not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/responsive-form/responsiveform.css\",\"webpack://./../ckeditor5-ui/theme/mixins/_rwd.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/responsive-form/responsiveform.css\"],\"names\":[],\"mappings\":\"AAQC,mCAMC,WAAY,CALZ,UAAW,CAEX,iBAAkB,CAClB,UAAW,CACX,QAAS,CAHT,OAAQ,CAKR,SACD,CAEA,yCACC,YACD,CCdA,oCDoBE,wCAMC,WAAY,CALZ,UAAW,CAEX,iBAAkB,CAClB,UAAW,CACX,QAAS,CAHT,OAAQ,CAKR,SACD,CAEA,8CACC,YACD,CC9BF,CCAD,qDACC,kDACD,CAEA,uBACC,+BAmED,CAjEC,6BAEC,YACD,CASC,uGACC,sCACD,CDvBD,oCCMD,uBAqBE,SAAU,CACV,oCA8CF,CA5CE,8CACC,wDAWD,CATC,6DACC,WAAY,CACZ,UACD,CAGA,4EACC,kBACD,CAKA,0DACC,kDACD,CAGD,iGAIC,eAAgB,CADhB,kCAAmC,CADnC,kCAmBD,CAfC,yHACC,gDACD,CARD,0OAeE,aAMF,CAJE,+IACC,kDACD,CDpEH\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\\\";\\n\\n.ck-vertical-form .ck-button {\\n\\t&::after {\\n\\t\\tcontent: \\\"\\\";\\n\\t\\twidth: 0;\\n\\t\\tposition: absolute;\\n\\t\\tright: -1px;\\n\\t\\ttop: -1px;\\n\\t\\tbottom: -1px;\\n\\t\\tz-index: 1;\\n\\t}\\n\\n\\t&:focus::after {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\\n.ck.ck-responsive-form {\\n\\t@mixin ck-media-phone {\\n\\t\\t& .ck-button {\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\tcontent: \\\"\\\";\\n\\t\\t\\t\\twidth: 0;\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tright: -1px;\\n\\t\\t\\t\\ttop: -1px;\\n\\t\\t\\t\\tbottom: -1px;\\n\\t\\t\\t\\tz-index: 1;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:focus::after {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@define-mixin ck-media-phone {\\n\\t@media screen and (max-width: 600px) {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck-vertical-form > .ck-button:nth-last-child(2)::after {\\n\\tborder-right: 1px solid var(--ck-color-base-border);\\n}\\n\\n.ck.ck-responsive-form {\\n\\tpadding: var(--ck-spacing-large);\\n\\n\\t&:focus {\\n\\t\\t/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */\\n\\t\\toutline: none;\\n\\t}\\n\\n\\t@mixin ck-dir ltr {\\n\\t\\t& > :not(:first-child) {\\n\\t\\t\\tmargin-left: var(--ck-spacing-standard);\\n\\t\\t}\\n\\t}\\n\\n\\t@mixin ck-dir rtl {\\n\\t\\t& > :not(:last-child) {\\n\\t\\t\\tmargin-left: var(--ck-spacing-standard);\\n\\t\\t}\\n\\t}\\n\\n\\t@mixin ck-media-phone {\\n\\t\\tpadding: 0;\\n\\t\\twidth: calc(.8 * var(--ck-input-width));\\n\\n\\t\\t& .ck-labeled-field-view {\\n\\t\\t\\tmargin: var(--ck-spacing-large) var(--ck-spacing-large) 0;\\n\\n\\t\\t\\t& .ck-input-text {\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t}\\n\\n\\t\\t\\t/* Let the long error messages wrap in the narrow form. */\\n\\t\\t\\t& .ck-labeled-field-view__error {\\n\\t\\t\\t\\twhite-space: normal;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/* Styles for two last buttons in the form (save&cancel, edit&unlink, etc.). */\\n\\t\\t& > .ck-button:nth-last-child(2) {\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\tborder-right: 1px solid var(--ck-color-base-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t& > .ck-button:nth-last-child(1),\\n\\t\\t& > .ck-button:nth-last-child(2) {\\n\\t\\t\\tpadding: var(--ck-spacing-standard);\\n\\t\\t\\tmargin-top: var(--ck-spacing-large);\\n\\t\\t\\tborder-radius: 0;\\n\\n\\t\\t\\t&:not(:focus) {\\n\\t\\t\\t\\tborder-top: 1px solid var(--ck-color-base-border);\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\tmargin-left: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tmargin-left: 0;\\n\\n\\t\\t\\t\\t&:last-of-type {\\n\\t\\t\\t\\t\\tborder-right: 1px solid var(--ck-color-base-border);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-block-toolbar-button{position:absolute;z-index:var(--ck-z-default)}:root{--ck-color-block-toolbar-button:var(--ck-color-text);--ck-block-toolbar-button-size:var(--ck-font-size-normal)}.ck.ck-block-toolbar-button{color:var(--ck-color-block-toolbar-button);font-size:var(--ck-block-toolbar-size)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/toolbar/blocktoolbar.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/toolbar/blocktoolbar.css\"],\"names\":[],\"mappings\":\"AAKA,4BACC,iBAAkB,CAClB,2BACD,CCHA,MACC,oDAAqD,CACrD,yDACD,CAEA,4BACC,0CAA2C,CAC3C,sCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-block-toolbar-button {\\n\\tposition: absolute;\\n\\tz-index: var(--ck-z-default);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-color-block-toolbar-button: var(--ck-color-text);\\n\\t--ck-block-toolbar-button-size: var(--ck-font-size-normal);\\n}\\n\\n.ck.ck-block-toolbar-button {\\n\\tcolor: var(--ck-color-block-toolbar-button);\\n\\tfont-size: var(--ck-block-toolbar-size);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-toolbar{align-items:center;display:flex;flex-flow:row nowrap;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-toolbar>.ck-toolbar__items{align-items:center;display:flex;flex-flow:row wrap;flex-grow:1}.ck.ck-toolbar .ck.ck-toolbar__separator{display:inline-block}.ck.ck-toolbar .ck.ck-toolbar__separator:first-child,.ck.ck-toolbar .ck.ck-toolbar__separator:last-child{display:none}.ck.ck-toolbar .ck-toolbar__line-break{flex-basis:100%}.ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items{flex-direction:column}.ck.ck-toolbar.ck-toolbar_floating>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck-dropdown__button .ck-dropdown__arrow{display:none}.ck.ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar{background:var(--ck-color-toolbar-background);border:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck.ck-toolbar .ck.ck-toolbar__separator{align-self:stretch;background:var(--ck-color-toolbar-border);margin-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small);min-width:1px;width:1px}.ck.ck-toolbar .ck-toolbar__line-break{height:0}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break){margin-right:var(--ck-spacing-small)}.ck.ck-toolbar>.ck-toolbar__items:empty+.ck.ck-toolbar__separator{display:none}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break),.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown{margin-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck.ck-toolbar.ck-toolbar_vertical{padding:0}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items>.ck{border-radius:0;margin:0;width:100%}.ck.ck-toolbar.ck-toolbar_compact{padding:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>*{margin:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>:not(:first-child):not(:last-child){border-radius:0}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck.ck-button.ck-dropdown__button{padding-left:var(--ck-spacing-tiny)}.ck.ck-toolbar .ck-toolbar__nested-toolbar-dropdown>.ck-dropdown__panel{min-width:auto}.ck.ck-toolbar .ck-toolbar__nested-toolbar-dropdown>.ck-button>.ck-button__label{max-width:7em;width:auto}.ck.ck-toolbar:focus{outline:none}.ck-toolbar-container .ck.ck-toolbar{border:0}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck{margin-right:0}.ck.ck-toolbar[dir=rtl]:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-left:0}.ck.ck-toolbar.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:first-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=rtl]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__separator,[dir=rtl] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-right:0}.ck.ck-toolbar.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:first-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=ltr]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__separator,[dir=ltr] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-right:var(--ck-spacing-small)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/toolbar/toolbar.css\",\"webpack://./../ckeditor5-ui/theme/mixins/_unselectable.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/toolbar/toolbar.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css\"],\"names\":[],\"mappings\":\"AAOA,eAKC,kBAAmB,CAFnB,YAAa,CACb,oBAAqB,CCFrB,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBD6CD,CA3CC,kCAGC,kBAAmB,CAFnB,YAAa,CACb,kBAAmB,CAEnB,WAED,CAEA,yCACC,oBAWD,CAJC,yGAEC,YACD,CAGD,uCACC,eACD,CAEA,sDACC,gBACD,CAEA,sDACC,qBACD,CAEA,sDACC,gBACD,CAGC,yFACC,YACD,CE/CF,eCGC,eDwGD,CA3GA,qECOE,qCDoGF,CA3GA,eAGC,6CAA8C,CAE9C,+CAAgD,CADhD,iCAuGD,CApGC,yCACC,kBAAmB,CAGnB,yCAA0C,CAO1C,qCAAsC,CADtC,kCAAmC,CAPnC,aAAc,CADd,SAUD,CAEA,uCACC,QACD,CAGC,gEAEC,oCACD,CAIA,kEACC,YACD,CAGD,gHAIC,qCAAsC,CADtC,kCAED,CAEA,mCAEC,SAaD,CAVC,0DAQC,eAAgB,CAHhB,QAAS,CAHT,UAOD,CAGD,kCAEC,SAWD,CATC,uDAEC,QAMD,CAHC,yFACC,eACD,CASD,kFACC,mCACD,CAMA,wEACC,cACD,CAEA,iFACC,aAAc,CACd,UACD,CAGD,qBACC,YACD,CAtGD,qCAyGE,QAEF,CAYC,+FACC,cACD,CAEA,iJAEC,mCACD,CAEA,qHACC,aACD,CAIC,6JAEC,2BAA4B,CAD5B,wBAED,CAGA,2JAEC,4BAA6B,CAD7B,yBAED,CASD,8RACC,mCACD,CAWA,qHACC,cACD,CAIC,6JAEC,4BAA6B,CAD7B,yBAED,CAGA,2JAEC,2BAA4B,CAD5B,wBAED,CASD,8RACC,oCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../mixins/_unselectable.css\\\";\\n\\n.ck.ck-toolbar {\\n\\t@mixin ck-unselectable;\\n\\n\\tdisplay: flex;\\n\\tflex-flow: row nowrap;\\n\\talign-items: center;\\n\\n\\t& > .ck-toolbar__items {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-flow: row wrap;\\n\\t\\talign-items: center;\\n\\t\\tflex-grow: 1;\\n\\n\\t}\\n\\n\\t& .ck.ck-toolbar__separator {\\n\\t\\tdisplay: inline-block;\\n\\n\\t\\t/*\\n\\t\\t * A leading or trailing separator makes no sense (separates from nothing on one side).\\n\\t\\t * For instance, it can happen when toolbar items (also separators) are getting grouped one by one and\\n\\t\\t * moved to another toolbar in the dropdown.\\n\\t\\t */\\n\\t\\t&:first-child,\\n\\t\\t&:last-child {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck-toolbar__line-break {\\n\\t\\tflex-basis: 100%;\\n\\t}\\n\\n\\t&.ck-toolbar_grouping > .ck-toolbar__items {\\n\\t\\tflex-wrap: nowrap;\\n\\t}\\n\\n\\t&.ck-toolbar_vertical > .ck-toolbar__items {\\n\\t\\tflex-direction: column;\\n\\t}\\n\\n\\t&.ck-toolbar_floating > .ck-toolbar__items {\\n\\t\\tflex-wrap: nowrap;\\n\\t}\\n\\n\\t& > .ck.ck-toolbar__grouped-dropdown {\\n\\t\\t& > .ck-dropdown__button .ck-dropdown__arrow {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Makes element unselectable.\\n */\\n@define-mixin ck-unselectable {\\n\\t-moz-user-select: none;\\n\\t-webkit-user-select: none;\\n\\t-ms-user-select: none;\\n\\tuser-select: none\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck.ck-toolbar {\\n\\t@mixin ck-rounded-corners;\\n\\n\\tbackground: var(--ck-color-toolbar-background);\\n\\tpadding: 0 var(--ck-spacing-small);\\n\\tborder: 1px solid var(--ck-color-toolbar-border);\\n\\n\\t& .ck.ck-toolbar__separator {\\n\\t\\talign-self: stretch;\\n\\t\\twidth: 1px;\\n\\t\\tmin-width: 1px;\\n\\t\\tbackground: var(--ck-color-toolbar-border);\\n\\n\\t\\t/*\\n\\t\\t * These margins make the separators look better in balloon toolbars (when aligned with the \\\"tip\\\").\\n\\t\\t * See https://github.com/ckeditor/ckeditor5/issues/7493.\\n\\t\\t */\\n\\t\\tmargin-top: var(--ck-spacing-small);\\n\\t\\tmargin-bottom: var(--ck-spacing-small);\\n\\t}\\n\\n\\t& .ck-toolbar__line-break {\\n\\t\\theight: 0;\\n\\t}\\n\\n\\t& > .ck-toolbar__items {\\n\\t\\t& > *:not(.ck-toolbar__line-break) {\\n\\t\\t\\t/* (#11) Separate toolbar items. */\\n\\t\\t\\tmargin-right: var(--ck-spacing-small);\\n\\t\\t}\\n\\n\\t\\t/* Don't display a separator after an empty items container, for instance,\\n\\t\\twhen all items were grouped */\\n\\t\\t&:empty + .ck.ck-toolbar__separator {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck-toolbar__items > *:not(.ck-toolbar__line-break),\\n\\t& > .ck.ck-toolbar__grouped-dropdown {\\n\\t\\t/* Make sure items wrapped to the next line have v-spacing */\\n\\t\\tmargin-top: var(--ck-spacing-small);\\n\\t\\tmargin-bottom: var(--ck-spacing-small);\\n\\t}\\n\\n\\t&.ck-toolbar_vertical {\\n\\t\\t/* Items in a vertical toolbar span the entire width. */\\n\\t\\tpadding: 0;\\n\\n\\t\\t/* Specificity matters here. See https://github.com/ckeditor/ckeditor5-theme-lark/issues/168. */\\n\\t\\t& > .ck-toolbar__items > .ck {\\n\\t\\t\\t/* Items in a vertical toolbar should span the horizontal space. */\\n\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t/* Items in a vertical toolbar should have no margin. */\\n\\t\\t\\tmargin: 0;\\n\\n\\t\\t\\t/* Items in a vertical toolbar span the entire width so rounded corners are pointless. */\\n\\t\\t\\tborder-radius: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-toolbar_compact {\\n\\t\\t/* No spacing around items. */\\n\\t\\tpadding: 0;\\n\\n\\t\\t& > .ck-toolbar__items > * {\\n\\t\\t\\t/* Compact toolbar items have no spacing between them. */\\n\\t\\t\\tmargin: 0;\\n\\n\\t\\t\\t/* \\\"Middle\\\" children should have no rounded corners. */\\n\\t\\t\\t&:not(:first-child):not(:last-child) {\\n\\t\\t\\t\\tborder-radius: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck.ck-toolbar__grouped-dropdown {\\n\\t\\t/*\\n\\t\\t * Dropdown button has asymmetric padding to fit the arrow.\\n\\t\\t * This button has no arrow so let's revert that padding back to normal.\\n\\t\\t */\\n\\t\\t& > .ck.ck-button.ck-dropdown__button {\\n\\t\\t\\tpadding-left: var(--ck-spacing-tiny);\\n\\t\\t}\\n\\t}\\n\\n\\t/* A drop-down containing the nested toolbar with configured items. */\\n\\t& .ck-toolbar__nested-toolbar-dropdown {\\n\\t\\t/* Prevent empty space in the panel when the dropdown label is visible and long but the toolbar has few items. */\\n\\t\\t& > .ck-dropdown__panel {\\n\\t\\t\\tmin-width: auto;\\n\\t\\t}\\n\\n\\t\\t& > .ck-button > .ck-button__label {\\n\\t\\t\\tmax-width: 7em;\\n\\t\\t\\twidth: auto;\\n\\t\\t}\\n\\t}\\n\\n\\t&:focus {\\n\\t\\toutline: none;\\n\\t}\\n\\n\\t@nest .ck-toolbar-container & {\\n\\t\\tborder: 0;\\n\\t}\\n}\\n\\n/* stylelint-disable */\\n\\n/*\\n * Styles for RTL toolbars.\\n *\\n * Note: In some cases (e.g. a decoupled editor), the toolbar has its own \\\"dir\\\"\\n * because its parent is not controlled by the editor framework.\\n */\\n[dir=\\\"rtl\\\"] .ck.ck-toolbar,\\n.ck.ck-toolbar[dir=\\\"rtl\\\"] {\\n\\t& > .ck-toolbar__items > .ck {\\n\\t\\tmargin-right: 0;\\n\\t}\\n\\n\\t&:not(.ck-toolbar_compact) > .ck-toolbar__items > .ck {\\n\\t\\t/* (#11) Separate toolbar items. */\\n\\t\\tmargin-left: var(--ck-spacing-small);\\n\\t}\\n\\n\\t& > .ck-toolbar__items > .ck:last-child {\\n\\t\\tmargin-left: 0;\\n\\t}\\n\\n\\t&.ck-toolbar_compact > .ck-toolbar__items > .ck {\\n\\t\\t/* No rounded corners on the right side of the first child. */\\n\\t\\t&:first-child {\\n\\t\\t\\tborder-top-left-radius: 0;\\n\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t}\\n\\n\\t\\t/* No rounded corners on the left side of the last child. */\\n\\t\\t&:last-child {\\n\\t\\t\\tborder-top-right-radius: 0;\\n\\t\\t\\tborder-bottom-right-radius: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t/* Separate the the separator form the grouping dropdown when some items are grouped. */\\n\\t& > .ck.ck-toolbar__separator {\\n\\t\\tmargin-left: var(--ck-spacing-small);\\n\\t}\\n\\n\\t/* Some spacing between the items and the separator before the grouped items dropdown. */\\n\\t&.ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) {\\n\\t\\tmargin-left: var(--ck-spacing-small);\\n\\t}\\n}\\n\\n/*\\n * Styles for LTR toolbars.\\n *\\n * Note: In some cases (e.g. a decoupled editor), the toolbar has its own \\\"dir\\\"\\n * because its parent is not controlled by the editor framework.\\n */\\n[dir=\\\"ltr\\\"] .ck.ck-toolbar,\\n.ck.ck-toolbar[dir=\\\"ltr\\\"] {\\n\\t& > .ck-toolbar__items > .ck:last-child {\\n\\t\\tmargin-right: 0;\\n\\t}\\n\\n\\t&.ck-toolbar_compact > .ck-toolbar__items > .ck {\\n\\t\\t/* No rounded corners on the right side of the first child. */\\n\\t\\t&:first-child {\\n\\t\\t\\tborder-top-right-radius: 0;\\n\\t\\t\\tborder-bottom-right-radius: 0;\\n\\t\\t}\\n\\n\\t\\t/* No rounded corners on the left side of the last child. */\\n\\t\\t&:last-child {\\n\\t\\t\\tborder-top-left-radius: 0;\\n\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t/* Separate the the separator form the grouping dropdown when some items are grouped. */\\n\\t& > .ck.ck-toolbar__separator {\\n\\t\\tmargin-right: var(--ck-spacing-small);\\n\\t}\\n\\n\\t/* Some spacing between the items and the separator before the grouped items dropdown. */\\n\\t&.ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) {\\n\\t\\tmargin-right: var(--ck-spacing-small);\\n\\t}\\n}\\n\\n/* stylelint-enable */\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t@nest .ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck.ck-balloon-panel.ck-tooltip{--ck-balloon-border-width:0px;--ck-balloon-arrow-offset:0px;--ck-balloon-arrow-half-width:4px;--ck-balloon-arrow-height:4px;--ck-color-panel-background:var(--ck-color-tooltip-background);padding:0 var(--ck-spacing-medium);pointer-events:none;z-index:calc(var(--ck-z-modal) + 100)}.ck.ck-balloon-panel.ck-tooltip .ck-tooltip__text{color:var(--ck-color-tooltip-text);font-size:.9em;line-height:1.5}.ck.ck-balloon-panel.ck-tooltip{box-shadow:none}.ck.ck-balloon-panel.ck-tooltip:before{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/components/tooltip/tooltip.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/tooltip/tooltip.css\"],\"names\":[],\"mappings\":\"AAKA,gCCGC,6BAA8B,CAC9B,6BAA8B,CAC9B,iCAAkC,CAClC,6BAA8B,CAC9B,8DAA+D,CAE/D,kCAAmC,CDPnC,mBAAoB,CAEpB,qCACD,CCMC,kDAGC,kCAAmC,CAFnC,cAAe,CACf,eAED,CAbD,gCAgBC,eAMD,CAHC,uCACC,YACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-balloon-panel.ck-tooltip {\\n\\t/* Keep tooltips transparent for any interactions. */\\n\\tpointer-events: none;\\n\\n\\tz-index: calc( var(--ck-z-modal) + 100 );\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n\\n.ck.ck-balloon-panel.ck-tooltip {\\n\\t--ck-balloon-border-width: 0px;\\n\\t--ck-balloon-arrow-offset: 0px;\\n\\t--ck-balloon-arrow-half-width: 4px;\\n\\t--ck-balloon-arrow-height: 4px;\\n\\t--ck-color-panel-background: var(--ck-color-tooltip-background);\\n\\n\\tpadding: 0 var(--ck-spacing-medium);\\n\\n\\t& .ck-tooltip__text {\\n\\t\\tfont-size: .9em;\\n\\t\\tline-height: 1.5;\\n\\t\\tcolor: var(--ck-color-tooltip-text);\\n\\t}\\n\\n\\t/* Reset balloon panel styles */\\n\\tbox-shadow: none;\\n\\n\\t/* Hide the default shadow of the .ck-balloon-panel tip */\\n\\t&::before {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck-hidden{display:none!important}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset,.ck.ck-reset_all{box-sizing:border-box;height:auto;position:static;width:auto}:root{--ck-z-default:1;--ck-z-modal:calc(var(--ck-z-default) + 999)}.ck-transitions-disabled,.ck-transitions-disabled *{transition:none!important}:root{--ck-powered-by-line-height:10px;--ck-powered-by-padding-vertical:2px;--ck-powered-by-padding-horizontal:4px;--ck-powered-by-text-color:#4f4f4f;--ck-powered-by-border-radius:var(--ck-border-radius);--ck-powered-by-background:#fff;--ck-powered-by-border-color:var(--ck-color-focus-border)}.ck.ck-balloon-panel.ck-powered-by-balloon{--ck-border-radius:var(--ck-powered-by-border-radius);background:var(--ck-powered-by-background);box-shadow:none;min-height:unset;z-index:calc(var(--ck-z-modal) - 1)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by{line-height:var(--ck-powered-by-line-height)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by a{align-items:center;cursor:pointer;display:flex;filter:grayscale(80%);line-height:var(--ck-powered-by-line-height);opacity:.66;padding:var(--ck-powered-by-padding-vertical) var(--ck-powered-by-padding-horizontal)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by .ck-powered-by__label{color:var(--ck-powered-by-text-color);cursor:pointer;font-size:7.5px;font-weight:700;letter-spacing:-.2px;line-height:normal;margin-right:4px;padding-left:2px;text-transform:uppercase}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by .ck-icon{cursor:pointer;display:block}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by:hover a{filter:grayscale(0);opacity:1}.ck.ck-balloon-panel.ck-powered-by-balloon[class*=position_inside]{border-color:transparent}.ck.ck-balloon-panel.ck-powered-by-balloon[class*=position_border]{border:var(--ck-focus-ring);border-color:var(--ck-powered-by-border-color)}:root{--ck-color-base-foreground:#fafafa;--ck-color-base-background:#fff;--ck-color-base-border:#ccced1;--ck-color-base-action:#53a336;--ck-color-base-focus:#6cb5f9;--ck-color-base-text:#333;--ck-color-base-active:#2977ff;--ck-color-base-active-focus:#0d65ff;--ck-color-base-error:#db3700;--ck-color-focus-border-coordinates:218,81.8%,56.9%;--ck-color-focus-border:hsl(var(--ck-color-focus-border-coordinates));--ck-color-focus-outer-shadow:#cae1fc;--ck-color-focus-disabled-shadow:rgba(119,186,248,.3);--ck-color-focus-error-shadow:rgba(255,64,31,.3);--ck-color-text:var(--ck-color-base-text);--ck-color-shadow-drop:rgba(0,0,0,.15);--ck-color-shadow-drop-active:rgba(0,0,0,.2);--ck-color-shadow-inner:rgba(0,0,0,.1);--ck-color-button-default-background:transparent;--ck-color-button-default-hover-background:#f0f0f0;--ck-color-button-default-active-background:#f0f0f0;--ck-color-button-default-disabled-background:transparent;--ck-color-button-on-background:#f0f7ff;--ck-color-button-on-hover-background:#dbecff;--ck-color-button-on-active-background:#dbecff;--ck-color-button-on-disabled-background:#f0f2f4;--ck-color-button-on-color:#2977ff;--ck-color-button-action-background:var(--ck-color-base-action);--ck-color-button-action-hover-background:#4d9d30;--ck-color-button-action-active-background:#4d9d30;--ck-color-button-action-disabled-background:#7ec365;--ck-color-button-action-text:var(--ck-color-base-background);--ck-color-button-save:#008a00;--ck-color-button-cancel:#db3700;--ck-color-switch-button-off-background:#939393;--ck-color-switch-button-off-hover-background:#7d7d7d;--ck-color-switch-button-on-background:var(--ck-color-button-action-background);--ck-color-switch-button-on-hover-background:#4d9d30;--ck-color-switch-button-inner-background:var(--ck-color-base-background);--ck-color-switch-button-inner-shadow:rgba(0,0,0,.1);--ck-color-dropdown-panel-background:var(--ck-color-base-background);--ck-color-dropdown-panel-border:var(--ck-color-base-border);--ck-color-input-background:var(--ck-color-base-background);--ck-color-input-border:var(--ck-color-base-border);--ck-color-input-error-border:var(--ck-color-base-error);--ck-color-input-text:var(--ck-color-base-text);--ck-color-input-disabled-background:#f2f2f2;--ck-color-input-disabled-border:var(--ck-color-base-border);--ck-color-input-disabled-text:#757575;--ck-color-list-background:var(--ck-color-base-background);--ck-color-list-button-hover-background:var(--ck-color-button-default-hover-background);--ck-color-list-button-on-background:var(--ck-color-button-on-color);--ck-color-list-button-on-background-focus:var(--ck-color-button-on-color);--ck-color-list-button-on-text:var(--ck-color-base-background);--ck-color-panel-background:var(--ck-color-base-background);--ck-color-panel-border:var(--ck-color-base-border);--ck-color-toolbar-background:var(--ck-color-base-background);--ck-color-toolbar-border:var(--ck-color-base-border);--ck-color-tooltip-background:var(--ck-color-base-text);--ck-color-tooltip-text:var(--ck-color-base-background);--ck-color-engine-placeholder-text:#707070;--ck-color-upload-bar-background:#6cb5f9;--ck-color-link-default:#0000f0;--ck-color-link-selected-background:rgba(31,176,255,.1);--ck-color-link-fake-selection:rgba(31,176,255,.3);--ck-color-highlight-background:#ff0;--ck-disabled-opacity:.5;--ck-focus-outer-shadow-geometry:0 0 0 3px;--ck-focus-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-outer-shadow);--ck-focus-disabled-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-disabled-shadow);--ck-focus-error-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-error-shadow);--ck-focus-ring:1px solid var(--ck-color-focus-border);--ck-font-size-base:13px;--ck-line-height-base:1.84615;--ck-font-face:Helvetica,Arial,Tahoma,Verdana,Sans-Serif;--ck-font-size-tiny:0.7em;--ck-font-size-small:0.75em;--ck-font-size-normal:1em;--ck-font-size-big:1.4em;--ck-font-size-large:1.8em;--ck-ui-component-min-height:2.3em}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset,.ck.ck-reset_all{word-wrap:break-word;background:transparent;border:0;margin:0;padding:0;text-decoration:none;transition:none;vertical-align:middle}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset_all{border-collapse:collapse;color:var(--ck-color-text);cursor:auto;float:none;font:normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);text-align:left;white-space:nowrap}.ck-reset_all .ck-rtl :not(.ck-reset_all-excluded *){text-align:right}.ck-reset_all iframe:not(.ck-reset_all-excluded *){vertical-align:inherit}.ck-reset_all textarea:not(.ck-reset_all-excluded *){white-space:pre-wrap}.ck-reset_all input[type=password]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text]:not(.ck-reset_all-excluded *),.ck-reset_all textarea:not(.ck-reset_all-excluded *){cursor:text}.ck-reset_all input[type=password][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all textarea[disabled]:not(.ck-reset_all-excluded *){cursor:default}.ck-reset_all fieldset:not(.ck-reset_all-excluded *){border:2px groove #dfdee3;padding:10px}.ck-reset_all button:not(.ck-reset_all-excluded *)::-moz-focus-inner{border:0;padding:0}.ck[dir=rtl],.ck[dir=rtl] .ck{text-align:right}:root{--ck-border-radius:2px;--ck-inner-shadow:2px 2px 3px var(--ck-color-shadow-inner) inset;--ck-drop-shadow:0 1px 2px 1px var(--ck-color-shadow-drop);--ck-drop-shadow-active:0 3px 6px 1px var(--ck-color-shadow-drop-active);--ck-spacing-unit:0.6em;--ck-spacing-large:calc(var(--ck-spacing-unit)*1.5);--ck-spacing-standard:var(--ck-spacing-unit);--ck-spacing-medium:calc(var(--ck-spacing-unit)*0.8);--ck-spacing-small:calc(var(--ck-spacing-unit)*0.5);--ck-spacing-tiny:calc(var(--ck-spacing-unit)*0.3);--ck-spacing-extra-tiny:calc(var(--ck-spacing-unit)*0.16)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-ui/theme/globals/_hidden.css\",\"webpack://./../ckeditor5-ui/theme/globals/_reset.css\",\"webpack://./../ckeditor5-ui/theme/globals/_zindex.css\",\"webpack://./../ckeditor5-ui/theme/globals/_transition.css\",\"webpack://./../ckeditor5-ui/theme/globals/_poweredby.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_colors.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_disabled.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_focus.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_fonts.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_reset.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_rounded.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_shadow.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_spacing.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A class which hides an element in DOM.\\n */\\n.ck-hidden {\\n\\t/* Override selector specificity. Otherwise, all elements with some display\\n\\tstyle defined will override this one, which is not a desired result. */\\n\\tdisplay: none !important;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck.ck-reset,\\n.ck.ck-reset_all,\\n.ck-reset_all *:not(.ck-reset_all-excluded *) {\\n\\tbox-sizing: border-box;\\n\\twidth: auto;\\n\\theight: auto;\\n\\tposition: static;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-z-default: 1;\\n\\t--ck-z-modal: calc( var(--ck-z-default) + 999 );\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A class that disables all transitions of the element and its children.\\n */\\n.ck-transitions-disabled,\\n.ck-transitions-disabled * {\\n\\ttransition: none !important;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-powered-by-line-height: 10px;\\n\\t--ck-powered-by-padding-vertical: 2px;\\n\\t--ck-powered-by-padding-horizontal: 4px;\\n\\t--ck-powered-by-text-color: hsl(0, 0%, 31%);\\n\\t--ck-powered-by-border-radius: var(--ck-border-radius);\\n\\t--ck-powered-by-background: hsl(0, 0%, 100%);\\n\\t--ck-powered-by-border-color: var(--ck-color-focus-border);\\n}\\n\\n.ck.ck-balloon-panel.ck-powered-by-balloon {\\n\\t--ck-border-radius: var(--ck-powered-by-border-radius);\\n\\n\\tbox-shadow: none;\\n\\tbackground: var(--ck-powered-by-background);\\n\\tmin-height: unset;\\n\\tz-index: calc( var(--ck-z-modal) - 1 );\\n\\n\\t& .ck.ck-powered-by {\\n\\t\\tline-height: var(--ck-powered-by-line-height);\\n\\n\\t\\t& a {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\topacity: .66;\\n\\t\\t\\tfilter: grayscale(80%);\\n\\t\\t\\tline-height: var(--ck-powered-by-line-height);\\n\\t\\t\\tpadding: var(--ck-powered-by-padding-vertical) var(--ck-powered-by-padding-horizontal);\\n\\t\\t}\\n\\n\\t\\t& .ck-powered-by__label {\\n\\t\\t\\tfont-size: 7.5px;\\n\\t\\t\\tletter-spacing: -.2px;\\n\\t\\t\\tpadding-left: 2px;\\n\\t\\t\\ttext-transform: uppercase;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin-right: 4px;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tline-height: normal;\\n\\t\\t\\tcolor: var(--ck-powered-by-text-color);\\n\\n\\t\\t}\\n\\n\\t\\t& .ck-icon {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\n\\t\\t&:hover {\\n\\t\\t\\t& a {\\n\\t\\t\\t\\tfilter: grayscale(0%);\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&[class*=\\\"position_inside\\\"] {\\n\\t\\tborder-color: transparent;\\n\\t}\\n\\n\\t&[class*=\\\"position_border\\\"] {\\n\\t\\tborder: var(--ck-focus-ring);\\n\\t\\tborder-color: var(--ck-powered-by-border-color);\\n\\t}\\n}\\n\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-color-base-foreground: \\t\\t\\t\\t\\t\\t\\t\\thsl(0, 0%, 98%);\\n\\t--ck-color-base-background: \\t\\t\\t\\t\\t\\t\\t\\thsl(0, 0%, 100%);\\n\\t--ck-color-base-border: \\t\\t\\t\\t\\t\\t\\t\\t\\thsl(220, 6%, 81%);\\n\\t--ck-color-base-action: \\t\\t\\t\\t\\t\\t\\t\\t\\thsl(104, 50.2%, 42.5%);\\n\\t--ck-color-base-focus: \\t\\t\\t\\t\\t\\t\\t\\t\\t\\thsl(209, 92%, 70%);\\n\\t--ck-color-base-text: \\t\\t\\t\\t\\t\\t\\t\\t\\t\\thsl(0, 0%, 20%);\\n\\t--ck-color-base-active: \\t\\t\\t\\t\\t\\t\\t\\t\\thsl(218.1, 100%, 58%);\\n\\t--ck-color-base-active-focus:\\t\\t\\t\\t\\t\\t\\t\\thsl(218.2, 100%, 52.5%);\\n\\t--ck-color-base-error:\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thsl(15, 100%, 43%);\\n\\n\\t/* -- Generic colors ------------------------------------------------------------------------ */\\n\\n\\t--ck-color-focus-border-coordinates: \\t\\t\\t\\t\\t\\t218, 81.8%, 56.9%;\\n\\t--ck-color-focus-border: \\t\\t\\t\\t\\t\\t\\t\\t\\thsl(var(--ck-color-focus-border-coordinates));\\n\\t--ck-color-focus-outer-shadow:\\t\\t\\t\\t\\t\\t\\t\\thsl(212.4, 89.3%, 89%);\\n\\t--ck-color-focus-disabled-shadow:\\t\\t\\t\\t\\t\\t\\thsla(209, 90%, 72%,.3);\\n\\t--ck-color-focus-error-shadow:\\t\\t\\t\\t\\t\\t\\t\\thsla(9,100%,56%,.3);\\n\\t--ck-color-text: \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-text);\\n\\t--ck-color-shadow-drop: \\t\\t\\t\\t\\t\\t\\t\\t\\thsla(0, 0%, 0%, 0.15);\\n\\t--ck-color-shadow-drop-active:\\t\\t\\t\\t\\t\\t\\t\\thsla(0, 0%, 0%, 0.2);\\n\\t--ck-color-shadow-inner: \\t\\t\\t\\t\\t\\t\\t\\t\\thsla(0, 0%, 0%, 0.1);\\n\\n\\t/* -- Buttons ------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-button-default-background: \\t\\t\\t\\t\\t\\ttransparent;\\n\\t--ck-color-button-default-hover-background: \\t\\t\\t\\thsl(0, 0%, 94.1%);\\n\\t--ck-color-button-default-active-background: \\t\\t\\t\\thsl(0, 0%, 94.1%);\\n\\t--ck-color-button-default-disabled-background: \\t\\t\\t\\ttransparent;\\n\\n\\t--ck-color-button-on-background: \\t\\t\\t\\t\\t\\t\\thsl(212, 100%, 97.1%);\\n\\t--ck-color-button-on-hover-background: \\t\\t\\t\\t\\t\\thsl(211.7, 100%, 92.9%);\\n\\t--ck-color-button-on-active-background: \\t\\t\\t\\t\\thsl(211.7, 100%, 92.9%);\\n\\t--ck-color-button-on-disabled-background: \\t\\t\\t\\t\\thsl(211, 15%, 95%);\\n\\t--ck-color-button-on-color:\\t\\t\\t\\t\\t\\t\\t\\t\\thsl(218.1, 100%, 58%);\\n\\n\\n\\t--ck-color-button-action-background: \\t\\t\\t\\t\\t\\tvar(--ck-color-base-action);\\n\\t--ck-color-button-action-hover-background: \\t\\t\\t\\t\\thsl(104, 53.2%, 40.2%);\\n\\t--ck-color-button-action-active-background: \\t\\t\\t\\thsl(104, 53.2%, 40.2%);\\n\\t--ck-color-button-action-disabled-background: \\t\\t\\t\\thsl(104, 44%, 58%);\\n\\t--ck-color-button-action-text: \\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\n\\t--ck-color-button-save: \\t\\t\\t\\t\\t\\t\\t\\t\\thsl(120, 100%, 27%);\\n\\t--ck-color-button-cancel: \\t\\t\\t\\t\\t\\t\\t\\t\\thsl(15, 100%, 43%);\\n\\n\\t--ck-color-switch-button-off-background:\\t\\t\\t\\t\\thsl(0, 0%, 57.6%);\\n\\t--ck-color-switch-button-off-hover-background:\\t\\t\\t\\thsl(0, 0%, 49%);\\n\\t--ck-color-switch-button-on-background:\\t\\t\\t\\t\\t\\tvar(--ck-color-button-action-background);\\n\\t--ck-color-switch-button-on-hover-background:\\t\\t\\t\\thsl(104, 53.2%, 40.2%);\\n\\t--ck-color-switch-button-inner-background:\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\t--ck-color-switch-button-inner-shadow:\\t\\t\\t\\t\\t\\thsla(0, 0%, 0%, 0.1);\\n\\n\\t/* -- Dropdown ------------------------------------------------------------------------------ */\\n\\n\\t--ck-color-dropdown-panel-background: \\t\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\t--ck-color-dropdown-panel-border: \\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-border);\\n\\n\\t/* -- Input --------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-input-background: \\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\t--ck-color-input-border: \\t\\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-border);\\n\\t--ck-color-input-error-border:\\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-error);\\n\\t--ck-color-input-text: \\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-text);\\n\\t--ck-color-input-disabled-background: \\t\\t\\t\\t\\t\\thsl(0, 0%, 95%);\\n\\t--ck-color-input-disabled-border: \\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-border);\\n\\t--ck-color-input-disabled-text: \\t\\t\\t\\t\\t\\t\\thsl(0, 0%, 46%);\\n\\n\\t/* -- List ---------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-list-background: \\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\t--ck-color-list-button-hover-background: \\t\\t\\t\\t\\tvar(--ck-color-button-default-hover-background);\\n\\t--ck-color-list-button-on-background: \\t\\t\\t\\t\\t\\tvar(--ck-color-button-on-color);\\n\\t--ck-color-list-button-on-background-focus: \\t\\t\\t\\tvar(--ck-color-button-on-color);\\n\\t--ck-color-list-button-on-text:\\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\n\\t/* -- Panel --------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-panel-background: \\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\t--ck-color-panel-border: \\t\\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-border);\\n\\n\\t/* -- Toolbar ------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-toolbar-background: \\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\t--ck-color-toolbar-border: \\t\\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-border);\\n\\n\\t/* -- Tooltip ------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-tooltip-background: \\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-text);\\n\\t--ck-color-tooltip-text: \\t\\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\n\\t/* -- Engine -------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-engine-placeholder-text: \\t\\t\\t\\t\\t\\thsl(0, 0%, 44%);\\n\\n\\t/* -- Upload -------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-upload-bar-background:\\t\\t \\t\\t\\t\\t\\thsl(209, 92%, 70%);\\n\\n\\t/* -- Link -------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-link-default:\\t\\t\\t\\t\\t\\t\\t\\t\\thsl(240, 100%, 47%);\\n\\t--ck-color-link-selected-background:\\t\\t\\t\\t\\t\\thsla(201, 100%, 56%, 0.1);\\n\\t--ck-color-link-fake-selection:\\t\\t\\t\\t\\t\\t\\t\\thsla(201, 100%, 56%, 0.3);\\n\\n\\t/* -- Search result highlight ---------------------------------------------------------------- */\\n\\n\\t--ck-color-highlight-background:\\t\\t\\t\\t\\t\\t\\thsl(60, 100%, 50%)\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t/**\\n\\t * An opacity value of disabled UI item.\\n\\t */\\n\\t--ck-disabled-opacity: .5;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t/**\\n\\t * The geometry of the of focused element's outer shadow.\\n\\t */\\n\\t--ck-focus-outer-shadow-geometry: 0 0 0 3px;\\n\\n\\t/**\\n\\t * A visual style of focused element's outer shadow.\\n\\t */\\n\\t--ck-focus-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-outer-shadow);\\n\\n\\t/**\\n\\t * A visual style of focused element's outer shadow (when disabled).\\n\\t */\\n\\t--ck-focus-disabled-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-disabled-shadow);\\n\\n\\t/**\\n\\t * A visual style of focused element's outer shadow (when has errors).\\n\\t */\\n\\t--ck-focus-error-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-error-shadow);\\n\\n\\t/**\\n\\t * A visual style of focused element's border or outline.\\n\\t */\\n\\t--ck-focus-ring: 1px solid var(--ck-color-focus-border);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-font-size-base: 13px;\\n\\t--ck-line-height-base: 1.84615;\\n\\t--ck-font-face: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;\\n\\n\\t--ck-font-size-tiny: 0.7em;\\n\\t--ck-font-size-small: 0.75em;\\n\\t--ck-font-size-normal: 1em;\\n\\t--ck-font-size-big: 1.4em;\\n\\t--ck-font-size-large: 1.8em;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t/* This is super-important. This is **manually** adjusted so a button without an icon\\n\\tis never smaller than a button with icon, additionally making sure that text-less buttons\\n\\tare perfect squares. The value is also shared by other components which should stay \\\"in-line\\\"\\n\\twith buttons. */\\n\\t--ck-ui-component-min-height: 2.3em;\\n}\\n\\n/**\\n * Resets an element, ignoring its children.\\n */\\n.ck.ck-reset,\\n.ck.ck-reset_all,\\n.ck-reset_all *:not(.ck-reset_all-excluded *) {\\n\\t/* Do not include inheritable rules here. */\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tborder: 0;\\n\\tbackground: transparent;\\n\\ttext-decoration: none;\\n\\tvertical-align: middle;\\n\\ttransition: none;\\n\\n\\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/105 */\\n\\tword-wrap: break-word;\\n}\\n\\n/**\\n * Resets an element AND its children.\\n */\\n.ck.ck-reset_all,\\n.ck-reset_all *:not(.ck-reset_all-excluded *) {\\n\\t/* These are rule inherited by all children elements. */\\n\\tborder-collapse: collapse;\\n\\tfont: normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);\\n\\tcolor: var(--ck-color-text);\\n\\ttext-align: left;\\n\\twhite-space: nowrap;\\n\\tcursor: auto;\\n\\tfloat: none;\\n}\\n\\n.ck-reset_all {\\n\\t& .ck-rtl *:not(.ck-reset_all-excluded *) {\\n\\t\\ttext-align: right;\\n\\t}\\n\\n\\t& iframe:not(.ck-reset_all-excluded *) {\\n\\t\\t/* For IE */\\n\\t\\tvertical-align: inherit;\\n\\t}\\n\\n\\t& textarea:not(.ck-reset_all-excluded *) {\\n\\t\\twhite-space: pre-wrap;\\n\\t}\\n\\n\\t& textarea:not(.ck-reset_all-excluded *),\\n\\t& input[type=\\\"text\\\"]:not(.ck-reset_all-excluded *),\\n\\t& input[type=\\\"password\\\"]:not(.ck-reset_all-excluded *) {\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t& textarea[disabled]:not(.ck-reset_all-excluded *),\\n\\t& input[type=\\\"text\\\"][disabled]:not(.ck-reset_all-excluded *),\\n\\t& input[type=\\\"password\\\"][disabled]:not(.ck-reset_all-excluded *) {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t& fieldset:not(.ck-reset_all-excluded *) {\\n\\t\\tpadding: 10px;\\n\\t\\tborder: 2px groove hsl(255, 7%, 88%);\\n\\t}\\n\\n\\t& button:not(.ck-reset_all-excluded *)::-moz-focus-inner {\\n\\t\\t/* See http://stackoverflow.com/questions/5517744/remove-extra-button-spacing-padding-in-firefox */\\n\\t\\tpadding: 0;\\n\\t\\tborder: 0\\n\\t}\\n}\\n\\n/**\\n * Default UI rules for RTL languages.\\n */\\n.ck[dir=\\\"rtl\\\"],\\n.ck[dir=\\\"rtl\\\"] .ck {\\n\\ttext-align: right;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * Default border-radius value.\\n */\\n:root{\\n\\t--ck-border-radius: 2px;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t/**\\n\\t * A visual style of element's inner shadow (i.e. input).\\n\\t */\\n\\t--ck-inner-shadow: 2px 2px 3px var(--ck-color-shadow-inner) inset;\\n\\n\\t/**\\n\\t * A visual style of element's drop shadow (i.e. panel).\\n\\t */\\n\\t--ck-drop-shadow: 0 1px 2px 1px var(--ck-color-shadow-drop);\\n\\n\\t/**\\n\\t * A visual style of element's active shadow (i.e. comment or suggestion).\\n\\t */\\n\\t--ck-drop-shadow-active: 0 3px 6px 1px var(--ck-color-shadow-drop-active);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-spacing-unit: \\t\\t\\t\\t\\t\\t0.6em;\\n\\t--ck-spacing-large: \\t\\t\\t\\t\\tcalc(var(--ck-spacing-unit) * 1.5);\\n\\t--ck-spacing-standard: \\t\\t\\t\\t\\tvar(--ck-spacing-unit);\\n\\t--ck-spacing-medium: \\t\\t\\t\\t\\tcalc(var(--ck-spacing-unit) * 0.8);\\n\\t--ck-spacing-small: \\t\\t\\t\\t\\tcalc(var(--ck-spacing-unit) * 0.5);\\n\\t--ck-spacing-tiny: \\t\\t\\t\\t\\t\\tcalc(var(--ck-spacing-unit) * 0.3);\\n\\t--ck-spacing-extra-tiny: \\t\\t\\t\\tcalc(var(--ck-spacing-unit) * 0.16);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":root{--ck-color-resizer:var(--ck-color-focus-border);--ck-color-resizer-tooltip-background:#262626;--ck-color-resizer-tooltip-text:#f2f2f2;--ck-resizer-border-radius:var(--ck-border-radius);--ck-resizer-tooltip-offset:10px;--ck-resizer-tooltip-height:calc(var(--ck-spacing-small)*2 + 10px)}.ck .ck-widget,.ck .ck-widget.ck-widget_with-selection-handle{position:relative}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{position:absolute}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{display:block}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{visibility:visible}.ck .ck-size-view{background:var(--ck-color-resizer-tooltip-background);border:1px solid var(--ck-color-resizer-tooltip-text);border-radius:var(--ck-resizer-border-radius);color:var(--ck-color-resizer-tooltip-text);display:block;font-size:var(--ck-font-size-tiny);height:var(--ck-resizer-tooltip-height);line-height:var(--ck-resizer-tooltip-height);padding:0 var(--ck-spacing-small)}.ck .ck-size-view.ck-orientation-above-center,.ck .ck-size-view.ck-orientation-bottom-left,.ck .ck-size-view.ck-orientation-bottom-right,.ck .ck-size-view.ck-orientation-top-left,.ck .ck-size-view.ck-orientation-top-right{position:absolute}.ck .ck-size-view.ck-orientation-top-left{left:var(--ck-resizer-tooltip-offset);top:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-top-right{right:var(--ck-resizer-tooltip-offset);top:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-right{bottom:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-left{bottom:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-above-center{left:50%;top:calc(var(--ck-resizer-tooltip-height)*-1);transform:translate(-50%)}:root{--ck-widget-outline-thickness:3px;--ck-widget-handler-icon-size:16px;--ck-widget-handler-animation-duration:200ms;--ck-widget-handler-animation-curve:ease;--ck-color-widget-blurred-border:#dedede;--ck-color-widget-hover-border:#ffc83d;--ck-color-widget-editable-focus-background:var(--ck-color-base-background);--ck-color-widget-drag-handler-icon-color:var(--ck-color-base-background)}.ck .ck-widget{outline-color:transparent;outline-style:solid;outline-width:var(--ck-widget-outline-thickness);transition:outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_selected,.ck .ck-widget.ck-widget_selected:hover{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border)}.ck .ck-widget:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-editor__nested-editable{border:1px solid transparent}.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{background-color:var(--ck-color-widget-editable-focus-background);border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{background-color:transparent;border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0;box-sizing:border-box;left:calc(0px - var(--ck-widget-outline-thickness));opacity:0;padding:4px;top:0;transform:translateY(-100%);transition:background-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),visibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{color:var(--ck-color-widget-drag-handler-icon-color);height:var(--ck-widget-handler-icon-size);width:var(--ck-widget-handler-icon-size)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:0;transition:opacity .3s var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover .ck-icon .ck-icon__selected-indicator{opacity:1}.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{background-color:var(--ck-color-widget-hover-border);opacity:1}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{background-color:var(--ck-color-focus-border);opacity:1}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:1}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{left:auto;right:calc(0px - var(--ck-widget-outline-thickness))}.ck.ck-editor__editable.ck-read-only .ck-widget{transition:none}.ck.ck-editor__editable.ck-read-only .ck-widget:not(.ck-widget_selected){--ck-widget-outline-thickness:0px}.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover{outline-color:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle:hover,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable blockquote>.ck-widget.ck-widget_with-selection-handle:first-child,.ck.ck-editor__editable>.ck-widget.ck-widget_with-selection-handle:first-child{margin-top:calc(1em + var(--ck-widget-handler-icon-size))}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-widget/theme/widget.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-widget/widget.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_focus.css\",\"webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,+CAAgD,CAChD,6CAAsD,CACtD,uCAAgD,CAEhD,kDAAmD,CACnD,gCAAiC,CACjC,kEACD,CAOA,8DAEC,iBAqBD,CAnBC,4EACC,iBAOD,CALC,qFAGC,aACD,CASD,iLACC,kBACD,CAGD,kBACC,qDAAsD,CAEtD,qDAAsD,CACtD,6CAA8C,CAF9C,0CAA2C,CAI3C,aAAc,CADd,kCAAmC,CAGnC,uCAAwC,CACxC,4CAA6C,CAF7C,iCAsCD,CAlCC,8NAKC,iBACD,CAEA,0CAEC,qCAAsC,CADtC,oCAED,CAEA,2CAEC,sCAAuC,CADvC,oCAED,CAEA,8CACC,uCAAwC,CACxC,sCACD,CAEA,6CACC,uCAAwC,CACxC,qCACD,CAGA,8CAEC,QAAS,CADT,6CAAgD,CAEhD,yBACD,CCjFD,MACC,iCAAkC,CAClC,kCAAmC,CACnC,4CAA6C,CAC7C,wCAAyC,CAEzC,wCAAiD,CACjD,sCAAkD,CAClD,2EAA4E,CAC5E,yEACD,CAEA,eAGC,yBAA0B,CAD1B,mBAAoB,CADpB,gDAAiD,CAGjD,6GAUD,CARC,0EAEC,6EACD,CAEA,qBACC,iDACD,CAGD,gCACC,4BAWD,CAPC,yGAKC,iEAAkE,CCnCnE,2BAA2B,CCF3B,qCAA8B,CDC9B,YDqCA,CAIA,4EAKC,4BAA6B,CAa7B,iEAAkE,CAhBlE,qBAAsB,CAoBtB,mDAAoD,CAhBpD,SAAU,CALV,WAAY,CAsBZ,KAAM,CAFN,2BAA4B,CAT5B,6SAgCD,CAnBC,qFAIC,oDAAqD,CADrD,yCAA0C,CAD1C,wCAWD,CANC,kHACC,SAAU,CAGV,+DACD,CAID,wHACC,SACD,CAID,kFAEC,oDAAqD,CADrD,SAED,CAKC,oMAEC,6CAA8C,CAD9C,SAOD,CAHC,gRACC,SACD,CAOH,qFACC,SAAU,CACV,oDACD,CAGA,gDAEC,eAkBD,CAhBC,yEAOC,iCACD,CAGC,gOAEC,gDACD,CAOD,wIAEC,mDAQD,CALE,ghBAEC,gDACD,CAKH,yKAOC,yDACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-color-resizer: var(--ck-color-focus-border);\\n\\t--ck-color-resizer-tooltip-background: hsl(0, 0%, 15%);\\n\\t--ck-color-resizer-tooltip-text: hsl(0, 0%, 95%);\\n\\n\\t--ck-resizer-border-radius: var(--ck-border-radius);\\n\\t--ck-resizer-tooltip-offset: 10px;\\n\\t--ck-resizer-tooltip-height: calc(var(--ck-spacing-small) * 2 + 10px);\\n}\\n\\n.ck .ck-widget {\\n\\t/* This is neccessary for type around UI to be positioned properly. */\\n\\tposition: relative;\\n}\\n\\n.ck .ck-widget.ck-widget_with-selection-handle {\\n\\t/* Make the widget wrapper a relative positioning container for the drag handle. */\\n\\tposition: relative;\\n\\n\\t& .ck-widget__selection-handle {\\n\\t\\tposition: absolute;\\n\\n\\t\\t& .ck-icon {\\n\\t\\t\\t/* Make sure the icon in not a subject to font-size or line-height to avoid\\n\\t\\t\\tunnecessary spacing around it. */\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\t}\\n\\n\\t/* Show the selection handle on mouse hover over the widget, but not for nested widgets. */\\n\\t&:hover > .ck-widget__selection-handle {\\n\\t\\tvisibility: visible;\\n\\t}\\n\\n\\t/* Show the selection handle when the widget is selected, but not for nested widgets. */\\n\\t&.ck-widget_selected > .ck-widget__selection-handle {\\n\\t\\tvisibility: visible;\\n\\t}\\n}\\n\\n.ck .ck-size-view {\\n\\tbackground: var(--ck-color-resizer-tooltip-background);\\n\\tcolor: var(--ck-color-resizer-tooltip-text);\\n\\tborder: 1px solid var(--ck-color-resizer-tooltip-text);\\n\\tborder-radius: var(--ck-resizer-border-radius);\\n\\tfont-size: var(--ck-font-size-tiny);\\n\\tdisplay: block;\\n\\tpadding: 0 var(--ck-spacing-small);\\n\\theight: var(--ck-resizer-tooltip-height);\\n\\tline-height: var(--ck-resizer-tooltip-height);\\n\\n\\t&.ck-orientation-top-left,\\n\\t&.ck-orientation-top-right,\\n\\t&.ck-orientation-bottom-right,\\n\\t&.ck-orientation-bottom-left,\\n\\t&.ck-orientation-above-center {\\n\\t\\tposition: absolute;\\n\\t}\\n\\n\\t&.ck-orientation-top-left {\\n\\t\\ttop: var(--ck-resizer-tooltip-offset);\\n\\t\\tleft: var(--ck-resizer-tooltip-offset);\\n\\t}\\n\\n\\t&.ck-orientation-top-right {\\n\\t\\ttop: var(--ck-resizer-tooltip-offset);\\n\\t\\tright: var(--ck-resizer-tooltip-offset);\\n\\t}\\n\\n\\t&.ck-orientation-bottom-right {\\n\\t\\tbottom: var(--ck-resizer-tooltip-offset);\\n\\t\\tright: var(--ck-resizer-tooltip-offset);\\n\\t}\\n\\n\\t&.ck-orientation-bottom-left {\\n\\t\\tbottom: var(--ck-resizer-tooltip-offset);\\n\\t\\tleft: var(--ck-resizer-tooltip-offset);\\n\\t}\\n\\n\\t/* Class applied if the widget is too small to contain the size label */\\n\\t&.ck-orientation-above-center {\\n\\t\\ttop: calc(var(--ck-resizer-tooltip-height) * -1);\\n\\t\\tleft: 50%;\\n\\t\\ttransform: translate(-50%);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n@import \\\"../mixins/_focus.css\\\";\\n@import \\\"../mixins/_shadow.css\\\";\\n\\n:root {\\n\\t--ck-widget-outline-thickness: 3px;\\n\\t--ck-widget-handler-icon-size: 16px;\\n\\t--ck-widget-handler-animation-duration: 200ms;\\n\\t--ck-widget-handler-animation-curve: ease;\\n\\n\\t--ck-color-widget-blurred-border: hsl(0, 0%, 87%);\\n\\t--ck-color-widget-hover-border: hsl(43, 100%, 62%);\\n\\t--ck-color-widget-editable-focus-background: var(--ck-color-base-background);\\n\\t--ck-color-widget-drag-handler-icon-color: var(--ck-color-base-background);\\n}\\n\\n.ck .ck-widget {\\n\\toutline-width: var(--ck-widget-outline-thickness);\\n\\toutline-style: solid;\\n\\toutline-color: transparent;\\n\\ttransition: outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\\n\\n\\t&.ck-widget_selected,\\n\\t&.ck-widget_selected:hover {\\n\\t\\toutline: var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border);\\n\\t}\\n\\n\\t&:hover {\\n\\t\\toutline-color: var(--ck-color-widget-hover-border);\\n\\t}\\n}\\n\\n.ck .ck-editor__nested-editable {\\n\\tborder: 1px solid transparent;\\n\\n\\t/* The :focus style is applied before .ck-editor__nested-editable_focused class is rendered in the view.\\n\\tThese styles show a different border for a blink of an eye, so `:focus` need to have same styles applied. */\\n\\t&.ck-editor__nested-editable_focused,\\n\\t&:focus {\\n\\t\\t@mixin ck-focus-ring;\\n\\t\\t@mixin ck-box-shadow var(--ck-inner-shadow);\\n\\n\\t\\tbackground-color: var(--ck-color-widget-editable-focus-background);\\n\\t}\\n}\\n\\n.ck .ck-widget.ck-widget_with-selection-handle {\\n\\t& .ck-widget__selection-handle {\\n\\t\\tpadding: 4px;\\n\\t\\tbox-sizing: border-box;\\n\\n\\t\\t/* Background and opacity will be animated as the handler shows up or the widget gets selected. */\\n\\t\\tbackground-color: transparent;\\n\\t\\topacity: 0;\\n\\n\\t\\t/* Transition:\\n\\t\\t * background-color for the .ck-widget_selected state change,\\n\\t\\t * visibility for hiding the handler,\\n\\t\\t * opacity for the proper look of the icon when the handler disappears. */\\n\\t\\ttransition:\\n\\t\\t\\tbackground-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),\\n\\t\\t\\tvisibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),\\n\\t\\t\\topacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\\n\\n\\t\\t/* Make only top corners round. */\\n\\t\\tborder-radius: var(--ck-border-radius) var(--ck-border-radius) 0 0;\\n\\n\\t\\t/* Place the drag handler outside the widget wrapper. */\\n\\t\\ttransform: translateY(-100%);\\n\\t\\tleft: calc(0px - var(--ck-widget-outline-thickness));\\n\\t\\ttop: 0;\\n\\n\\t\\t& .ck-icon {\\n\\t\\t\\t/* Make sure the dimensions of the icon are independent of the fon-size of the content. */\\n\\t\\t\\twidth: var(--ck-widget-handler-icon-size);\\n\\t\\t\\theight: var(--ck-widget-handler-icon-size);\\n\\t\\t\\tcolor: var(--ck-color-widget-drag-handler-icon-color);\\n\\n\\t\\t\\t/* The \\\"selected\\\" part of the icon is invisible by default */\\n\\t\\t\\t& .ck-icon__selected-indicator {\\n\\t\\t\\t\\topacity: 0;\\n\\n\\t\\t\\t\\t/* Note: The animation is longer on purpose. Simply feels better. */\\n\\t\\t\\t\\ttransition: opacity 300ms var(--ck-widget-handler-animation-curve);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/* Advertise using the look of the icon that once clicked the handler, the widget will be selected. */\\n\\t\\t&:hover .ck-icon .ck-icon__selected-indicator {\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n\\n\\t/* Show the selection handler on mouse hover over the widget, but not for nested widgets. */\\n\\t&:hover > .ck-widget__selection-handle {\\n\\t\\topacity: 1;\\n\\t\\tbackground-color: var(--ck-color-widget-hover-border);\\n\\t}\\n\\n\\t/* Show the selection handler when the widget is selected, but not for nested widgets. */\\n\\t&.ck-widget_selected,\\n\\t&.ck-widget_selected:hover {\\n\\t\\t& > .ck-widget__selection-handle {\\n\\t\\t\\topacity: 1;\\n\\t\\t\\tbackground-color: var(--ck-color-focus-border);\\n\\n\\t\\t\\t/* When the widget is selected, notify the user using the proper look of the icon. */\\n\\t\\t\\t& .ck-icon .ck-icon__selected-indicator {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n/* In a RTL environment, align the selection handler to the right side of the widget */\\n/* stylelint-disable-next-line no-descending-specificity */\\n.ck[dir=\\\"rtl\\\"] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle {\\n\\tleft: auto;\\n\\tright: calc(0px - var(--ck-widget-outline-thickness));\\n}\\n\\n/* https://github.com/ckeditor/ckeditor5/issues/6415 */\\n.ck.ck-editor__editable.ck-read-only .ck-widget {\\n\\t/* Prevent the :hover outline from showing up because of the used outline-color transition. */\\n\\ttransition: none;\\n\\n\\t&:not(.ck-widget_selected) {\\n\\t\\t/* Disable visual effects of hover/active widget when CKEditor is in readOnly mode.\\n\\t\\t * See: https://github.com/ckeditor/ckeditor5/issues/1261\\n\\t\\t *\\n\\t\\t * Leave the unit because this custom property is used in calc() by other features.\\n\\t\\t * See: https://github.com/ckeditor/ckeditor5/issues/6775\\n\\t\\t */\\n\\t\\t--ck-widget-outline-thickness: 0px;\\n\\t}\\n\\n\\t&.ck-widget_with-selection-handle {\\n\\t\\t& .ck-widget__selection-handle,\\n\\t\\t& .ck-widget__selection-handle:hover {\\n\\t\\t\\tbackground: var(--ck-color-widget-blurred-border);\\n\\t\\t}\\n\\t}\\n}\\n\\n/* Style the widget when it's selected but the editable it belongs to lost focus. */\\n/* stylelint-disable-next-line no-descending-specificity */\\n.ck.ck-editor__editable.ck-blurred .ck-widget {\\n\\t&.ck-widget_selected,\\n\\t&.ck-widget_selected:hover {\\n\\t\\toutline-color: var(--ck-color-widget-blurred-border);\\n\\n\\t\\t&.ck-widget_with-selection-handle {\\n\\t\\t\\t& > .ck-widget__selection-handle,\\n\\t\\t\\t& > .ck-widget__selection-handle:hover {\\n\\t\\t\\t\\tbackground: var(--ck-color-widget-blurred-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck.ck-editor__editable > .ck-widget.ck-widget_with-selection-handle:first-child,\\n.ck.ck-editor__editable blockquote > .ck-widget.ck-widget_with-selection-handle:first-child {\\n\\t/* Do not crop selection handler if a widget is a first-child in the blockquote or in the root editable.\\n\\tIn fact, anything with overflow: hidden.\\n\\thttps://github.com/ckeditor/ckeditor5-block-quote/issues/28\\n\\thttps://github.com/ckeditor/ckeditor5-widget/issues/44\\n\\thttps://github.com/ckeditor/ckeditor5-widget/issues/66 */\\n\\tmargin-top: calc(1em + var(--ck-widget-handler-icon-size));\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A visual style of focused element's border.\\n */\\n@define-mixin ck-focus-ring {\\n\\t/* Disable native outline. */\\n\\toutline: none;\\n\\tborder: var(--ck-focus-ring)\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck .ck-widget_with-resizer{position:relative}.ck .ck-widget__resizer{display:none;left:0;pointer-events:none;position:absolute;top:0}.ck-focused .ck-widget_with-resizer.ck-widget_selected>.ck-widget__resizer{display:block}.ck .ck-widget__resizer__handle{pointer-events:all;position:absolute}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{cursor:nwse-resize}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{cursor:nesw-resize}:root{--ck-resizer-size:10px;--ck-resizer-offset:calc(var(--ck-resizer-size)/-2 - 2px);--ck-resizer-border-width:1px}.ck .ck-widget__resizer{outline:1px solid var(--ck-color-resizer)}.ck .ck-widget__resizer__handle{background:var(--ck-color-focus-border);border:var(--ck-resizer-border-width) solid #fff;border-radius:var(--ck-resizer-border-radius);height:var(--ck-resizer-size);width:var(--ck-resizer-size)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{left:var(--ck-resizer-offset);top:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{right:var(--ck-resizer-offset);top:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right{bottom:var(--ck-resizer-offset);right:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left{bottom:var(--ck-resizer-offset);left:var(--ck-resizer-offset)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-widget/theme/widgetresize.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-widget/widgetresize.css\"],\"names\":[],\"mappings\":\"AAKA,4BAEC,iBACD,CAEA,wBACC,YAAa,CAMb,MAAO,CAFP,mBAAoB,CAHpB,iBAAkB,CAMlB,KACD,CAGC,2EACC,aACD,CAGD,gCAIC,kBAAmB,CAHnB,iBAcD,CATC,4IAEC,kBACD,CAEA,4IAEC,kBACD,CCpCD,MACC,sBAAuB,CAGvB,yDAAiE,CACjE,6BACD,CAEA,wBACC,yCACD,CAEA,gCAGC,uCAAwC,CACxC,gDAA6D,CAC7D,6CAA8C,CAH9C,6BAA8B,CAD9B,4BAyBD,CAnBC,oEAEC,6BAA8B,CAD9B,4BAED,CAEA,qEAEC,8BAA+B,CAD/B,4BAED,CAEA,wEACC,+BAAgC,CAChC,8BACD,CAEA,uEACC,+BAAgC,CAChC,6BACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck .ck-widget_with-resizer {\\n\\t/* Make the widget wrapper a relative positioning container for the drag handle. */\\n\\tposition: relative;\\n}\\n\\n.ck .ck-widget__resizer {\\n\\tdisplay: none;\\n\\tposition: absolute;\\n\\n\\t/* The wrapper itself should not interfere with the pointer device, only the handles should. */\\n\\tpointer-events: none;\\n\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\\n.ck-focused .ck-widget_with-resizer.ck-widget_selected {\\n\\t& > .ck-widget__resizer {\\n\\t\\tdisplay: block;\\n\\t}\\n}\\n\\n.ck .ck-widget__resizer__handle {\\n\\tposition: absolute;\\n\\n\\t/* Resizers are the only UI elements that should interfere with a pointer device. */\\n\\tpointer-events: all;\\n\\n\\t&.ck-widget__resizer__handle-top-left,\\n\\t&.ck-widget__resizer__handle-bottom-right {\\n\\t\\tcursor: nwse-resize;\\n\\t}\\n\\n\\t&.ck-widget__resizer__handle-top-right,\\n\\t&.ck-widget__resizer__handle-bottom-left {\\n\\t\\tcursor: nesw-resize;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-resizer-size: 10px;\\n\\n\\t/* Set the resizer with a 50% offset. */\\n\\t--ck-resizer-offset: calc( ( var(--ck-resizer-size) / -2 ) - 2px);\\n\\t--ck-resizer-border-width: 1px;\\n}\\n\\n.ck .ck-widget__resizer {\\n\\toutline: 1px solid var(--ck-color-resizer);\\n}\\n\\n.ck .ck-widget__resizer__handle {\\n\\twidth: var(--ck-resizer-size);\\n\\theight: var(--ck-resizer-size);\\n\\tbackground: var(--ck-color-focus-border);\\n\\tborder: var(--ck-resizer-border-width) solid hsl(0, 0%, 100%);\\n\\tborder-radius: var(--ck-resizer-border-radius);\\n\\n\\t&.ck-widget__resizer__handle-top-left {\\n\\t\\ttop: var(--ck-resizer-offset);\\n\\t\\tleft: var(--ck-resizer-offset);\\n\\t}\\n\\n\\t&.ck-widget__resizer__handle-top-right {\\n\\t\\ttop: var(--ck-resizer-offset);\\n\\t\\tright: var(--ck-resizer-offset);\\n\\t}\\n\\n\\t&.ck-widget__resizer__handle-bottom-right {\\n\\t\\tbottom: var(--ck-resizer-offset);\\n\\t\\tright: var(--ck-resizer-offset);\\n\\t}\\n\\n\\t&.ck-widget__resizer__handle-bottom-left {\\n\\t\\tbottom: var(--ck-resizer-offset);\\n\\t\\tleft: var(--ck-resizer-offset);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ck .ck-widget .ck-widget__type-around__button{display:block;overflow:hidden;position:absolute;z-index:var(--ck-z-default)}.ck .ck-widget .ck-widget__type-around__button svg{left:50%;position:absolute;top:50%;z-index:calc(var(--ck-z-default) + 2)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_before{left:min(10%,30px);top:calc(var(--ck-widget-outline-thickness)*-.5);transform:translateY(-50%)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_after{bottom:calc(var(--ck-widget-outline-thickness)*-.5);right:min(10%,30px);transform:translateY(50%)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{content:\\\"\\\";display:block;left:1px;position:absolute;top:1px;z-index:calc(var(--ck-z-default) + 1)}.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:none;left:0;position:absolute;right:0}.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__fake-caret{left:calc(var(--ck-widget-outline-thickness)*-1);right:calc(var(--ck-widget-outline-thickness)*-1)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:block;top:calc(var(--ck-widget-outline-thickness)*-1 - 1px)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__fake-caret{bottom:calc(var(--ck-widget-outline-thickness)*-1 - 1px);display:block}.ck.ck-editor__editable.ck-read-only .ck-widget__type-around,.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around,.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around{display:none}:root{--ck-widget-type-around-button-size:20px;--ck-color-widget-type-around-button-active:var(--ck-color-focus-border);--ck-color-widget-type-around-button-hover:var(--ck-color-widget-hover-border);--ck-color-widget-type-around-button-blurred-editable:var(--ck-color-widget-blurred-border);--ck-color-widget-type-around-button-radar-start-alpha:0;--ck-color-widget-type-around-button-radar-end-alpha:.3;--ck-color-widget-type-around-button-icon:var(--ck-color-base-background)}.ck .ck-widget .ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button);border-radius:100px;height:var(--ck-widget-type-around-button-size);opacity:0;pointer-events:none;transition:opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);width:var(--ck-widget-type-around-button-size)}.ck .ck-widget .ck-widget__type-around__button svg{height:8px;margin-top:1px;transform:translate(-50%,-50%);transition:transform .5s ease;width:10px}.ck .ck-widget .ck-widget__type-around__button svg *{stroke-dasharray:10;stroke-dashoffset:0;fill:none;stroke:var(--ck-color-widget-type-around-button-icon);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.ck .ck-widget .ck-widget__type-around__button svg line{stroke-dasharray:7}.ck .ck-widget .ck-widget__type-around__button:hover{animation:ck-widget-type-around-button-sonar 1s ease infinite}.ck .ck-widget .ck-widget__type-around__button:hover svg polyline{animation:ck-widget-type-around-arrow-dash 2s linear}.ck .ck-widget .ck-widget__type-around__button:hover svg line{animation:ck-widget-type-around-arrow-tip-dash 2s linear}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:1;pointer-events:auto}.ck .ck-widget:not(.ck-widget_selected)>.ck-widget__type-around>.ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button-hover)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover{background:var(--ck-color-widget-type-around-button-active)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{background:linear-gradient(135deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.3));border-radius:100px;height:calc(var(--ck-widget-type-around-button-size) - 2px);width:calc(var(--ck-widget-type-around-button-size) - 2px)}.ck .ck-widget.ck-widget_with-selection-handle>.ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:20px}.ck .ck-widget .ck-widget__type-around__fake-caret{animation:ck-widget-type-around-fake-caret-pulse 1s linear infinite normal forwards;background:var(--ck-color-base-text);height:1px;outline:1px solid hsla(0,0%,100%,.5);pointer-events:none}.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_after,.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_before{outline-color:transparent}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected:hover,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{opacity:0}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:0;margin-right:20px}.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover){background:var(--ck-color-widget-type-around-button-blurred-editable)}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover) svg *{stroke:#999}@keyframes ck-widget-type-around-arrow-dash{0%{stroke-dashoffset:10}20%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-arrow-tip-dash{0%,20%{stroke-dashoffset:7}40%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-button-sonar{0%{box-shadow:0 0 0 0 hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}50%{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-end-alpha))}to{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}}@keyframes ck-widget-type-around-fake-caret-pulse{0%{opacity:1}49%{opacity:1}50%{opacity:0}99%{opacity:0}to{opacity:1}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../ckeditor5-widget/theme/widgettypearound.css\",\"webpack://./../ckeditor5-theme-lark/theme/ckeditor5-widget/widgettypearound.css\"],\"names\":[],\"mappings\":\"AASC,+CACC,aAAc,CAEd,eAAgB,CADhB,iBAAkB,CAElB,2BAwBD,CAtBC,mDAGC,QAAS,CAFT,iBAAkB,CAClB,OAAQ,CAER,qCACD,CAEA,qFAGC,kBAAoB,CADpB,gDAAoD,CAGpD,0BACD,CAEA,oFAEC,mDAAuD,CACvD,mBAAqB,CAErB,yBACD,CAUA,mLACC,UAAW,CACX,aAAc,CAGd,QAAS,CAFT,iBAAkB,CAClB,OAAQ,CAER,qCACD,CAMD,2EACC,YAAa,CAEb,MAAO,CADP,iBAAkB,CAElB,OACD,CAOA,iFACC,gDAAqD,CACrD,iDACD,CAKA,wHAEC,aAAc,CADd,qDAED,CAKA,uHACC,wDAA6D,CAC7D,aACD,CAoBD,mOACC,YACD,CC3GA,MACC,wCAAyC,CACzC,wEAAyE,CACzE,8EAA+E,CAC/E,2FAA4F,CAC5F,wDAAyD,CACzD,uDAAwD,CACxD,yEACD,CAgBC,+CAGC,oDAAqD,CACrD,mBAAoB,CAFpB,+CAAgD,CAVjD,SAAU,CACV,mBAAoB,CAYnB,uMAAyM,CAJzM,8CAkDD,CA1CC,mDAEC,UAAW,CAGX,cAAe,CAFf,8BAA+B,CAC/B,6BAA8B,CAH9B,UAoBD,CAdC,qDACC,mBAAoB,CACpB,mBAAoB,CAEpB,SAAU,CACV,qDAAsD,CACtD,kBAAmB,CACnB,oBAAqB,CACrB,qBACD,CAEA,wDACC,kBACD,CAGD,qDAIC,6DAcD,CARE,kEACC,oDACD,CAEA,8DACC,wDACD,CAUF,uKAvED,SAAU,CACV,mBAwEC,CAOD,gGACC,0DACD,CAOA,uKAEC,2DAQD,CANC,mLAIC,uEAAkF,CADlF,mBAAoB,CADpB,2DAA4D,CAD5D,0DAID,CAOD,8GACC,gBACD,CAKA,mDAGC,mFAAoF,CAOpF,oCAAqC,CARrC,UAAW,CAOX,oCAAwC,CARxC,mBAUD,CAOC,6JAEC,yBACD,CAUA,yKACC,iDACD,CAMA,uOAlJD,SAAU,CACV,mBAmJC,CAoBA,6yBACC,SACD,CASF,uHACC,aAAc,CACd,iBACD,CAYG,iRAlMF,SAAU,CACV,mBAmME,CAQH,kIACC,qEAKD,CAHC,wIACC,WACD,CAGD,4CACC,GACC,oBACD,CACA,OACC,mBACD,CACD,CAEA,gDACC,OACC,mBACD,CACA,OACC,mBACD,CACD,CAEA,8CACC,GACC,6HACD,CACA,IACC,6HACD,CACA,GACC,+HACD,CACD,CAEA,kDACC,GACC,SACD,CACA,IACC,SACD,CACA,IACC,SACD,CACA,IACC,SACD,CACA,GACC,SACD,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n.ck .ck-widget {\\n\\t/*\\n\\t * Styles of the type around buttons\\n\\t */\\n\\t& .ck-widget__type-around__button {\\n\\t\\tdisplay: block;\\n\\t\\tposition: absolute;\\n\\t\\toverflow: hidden;\\n\\t\\tz-index: var(--ck-z-default);\\n\\n\\t\\t& svg {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 50%;\\n\\t\\t\\tleft: 50%;\\n\\t\\t\\tz-index: calc(var(--ck-z-default) + 2);\\n\\t\\t}\\n\\n\\t\\t&.ck-widget__type-around__button_before {\\n\\t\\t\\t/* Place it in the middle of the outline */\\n\\t\\t\\ttop: calc(-0.5 * var(--ck-widget-outline-thickness));\\n\\t\\t\\tleft: min(10%, 30px);\\n\\n\\t\\t\\ttransform: translateY(-50%);\\n\\t\\t}\\n\\n\\t\\t&.ck-widget__type-around__button_after {\\n\\t\\t\\t/* Place it in the middle of the outline */\\n\\t\\t\\tbottom: calc(-0.5 * var(--ck-widget-outline-thickness));\\n\\t\\t\\tright: min(10%, 30px);\\n\\n\\t\\t\\ttransform: translateY(50%);\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Styles for the buttons when:\\n\\t * - the widget is selected,\\n\\t * - or the button is being hovered (regardless of the widget state).\\n\\t */\\n\\t&.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button,\\n\\t& > .ck-widget__type-around > .ck-widget__type-around__button:hover {\\n\\t\\t&::after {\\n\\t\\t\\tcontent: \\\"\\\";\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 1px;\\n\\t\\t\\tleft: 1px;\\n\\t\\t\\tz-index: calc(var(--ck-z-default) + 1);\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Styles for the horizontal \\\"fake caret\\\" which is displayed when the user navigates using the keyboard.\\n\\t */\\n\\t& > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\\n\\t\\tdisplay: none;\\n\\t\\tposition: absolute;\\n\\t\\tleft: 0;\\n\\t\\tright: 0;\\n\\t}\\n\\n\\t/*\\n\\t * When the widget is hovered the \\\"fake caret\\\" would normally be narrower than the\\n\\t * extra outline displayed around the widget. Let's extend the \\\"fake caret\\\" to match\\n\\t * the full width of the widget.\\n\\t */\\n\\t&:hover > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\\n\\t\\tleft: calc( -1 * var(--ck-widget-outline-thickness) );\\n\\t\\tright: calc( -1 * var(--ck-widget-outline-thickness) );\\n\\t}\\n\\n\\t/*\\n\\t * Styles for the horizontal \\\"fake caret\\\" when it should be displayed before the widget (backward keyboard navigation).\\n\\t */\\n\\t&.ck-widget_type-around_show-fake-caret_before > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\\n\\t\\ttop: calc( -1 * var(--ck-widget-outline-thickness) - 1px );\\n\\t\\tdisplay: block;\\n\\t}\\n\\n\\t/*\\n\\t * Styles for the horizontal \\\"fake caret\\\" when it should be displayed after the widget (forward keyboard navigation).\\n\\t */\\n\\t&.ck-widget_type-around_show-fake-caret_after > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\\n\\t\\tbottom: calc( -1 * var(--ck-widget-outline-thickness) - 1px );\\n\\t\\tdisplay: block;\\n\\t}\\n}\\n\\n/*\\n * Integration with the read-only mode of the editor.\\n */\\n.ck.ck-editor__editable.ck-read-only .ck-widget__type-around {\\n\\tdisplay: none;\\n}\\n\\n/*\\n * Integration with the restricted editing mode (feature) of the editor.\\n */\\n.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around {\\n\\tdisplay: none;\\n}\\n\\n/*\\n * Integration with the #isEnabled property of the WidgetTypeAround plugin.\\n */\\n.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around {\\n\\tdisplay: none;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\\n */\\n\\n:root {\\n\\t--ck-widget-type-around-button-size: 20px;\\n\\t--ck-color-widget-type-around-button-active: var(--ck-color-focus-border);\\n\\t--ck-color-widget-type-around-button-hover: var(--ck-color-widget-hover-border);\\n\\t--ck-color-widget-type-around-button-blurred-editable: var(--ck-color-widget-blurred-border);\\n\\t--ck-color-widget-type-around-button-radar-start-alpha: 0;\\n\\t--ck-color-widget-type-around-button-radar-end-alpha: .3;\\n\\t--ck-color-widget-type-around-button-icon: var(--ck-color-base-background);\\n}\\n\\n@define-mixin ck-widget-type-around-button-visible {\\n\\topacity: 1;\\n\\tpointer-events: auto;\\n}\\n\\n@define-mixin ck-widget-type-around-button-hidden {\\n\\topacity: 0;\\n\\tpointer-events: none;\\n}\\n\\n.ck .ck-widget {\\n\\t/*\\n\\t * Styles of the type around buttons\\n\\t */\\n\\t& .ck-widget__type-around__button {\\n\\t\\twidth: var(--ck-widget-type-around-button-size);\\n\\t\\theight: var(--ck-widget-type-around-button-size);\\n\\t\\tbackground: var(--ck-color-widget-type-around-button);\\n\\t\\tborder-radius: 100px;\\n\\t\\ttransition: opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve), background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\\n\\n\\t\\t@mixin ck-widget-type-around-button-hidden;\\n\\n\\t\\t& svg {\\n\\t\\t\\twidth: 10px;\\n\\t\\t\\theight: 8px;\\n\\t\\t\\ttransform: translate(-50%,-50%);\\n\\t\\t\\ttransition: transform .5s ease;\\n\\t\\t\\tmargin-top: 1px;\\n\\n\\t\\t\\t& * {\\n\\t\\t\\t\\tstroke-dasharray: 10;\\n\\t\\t\\t\\tstroke-dashoffset: 0;\\n\\n\\t\\t\\t\\tfill: none;\\n\\t\\t\\t\\tstroke: var(--ck-color-widget-type-around-button-icon);\\n\\t\\t\\t\\tstroke-width: 1.5px;\\n\\t\\t\\t\\tstroke-linecap: round;\\n\\t\\t\\t\\tstroke-linejoin: round;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& line {\\n\\t\\t\\t\\tstroke-dasharray: 7;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&:hover {\\n\\t\\t\\t/*\\n\\t\\t\\t * Display the \\\"sonar\\\" around the button when hovered.\\n\\t\\t\\t */\\n\\t\\t\\tanimation: ck-widget-type-around-button-sonar 1s ease infinite;\\n\\n\\t\\t\\t/*\\n\\t\\t\\t * Animate active button's icon.\\n\\t\\t\\t */\\n\\t\\t\\t& svg {\\n\\t\\t\\t\\t& polyline {\\n\\t\\t\\t\\t\\tanimation: ck-widget-type-around-arrow-dash 2s linear;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t& line {\\n\\t\\t\\t\\t\\tanimation: ck-widget-type-around-arrow-tip-dash 2s linear;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Show type around buttons when the widget gets selected or being hovered.\\n\\t */\\n\\t&.ck-widget_selected,\\n\\t&:hover {\\n\\t\\t& > .ck-widget__type-around > .ck-widget__type-around__button {\\n\\t\\t\\t@mixin ck-widget-type-around-button-visible;\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Styles for the buttons when the widget is NOT selected (but the buttons are visible\\n\\t * and still can be hovered).\\n\\t */\\n\\t&:not(.ck-widget_selected) > .ck-widget__type-around > .ck-widget__type-around__button {\\n\\t\\tbackground: var(--ck-color-widget-type-around-button-hover);\\n\\t}\\n\\n\\t/*\\n\\t * Styles for the buttons when:\\n\\t * - the widget is selected,\\n\\t * - or the button is being hovered (regardless of the widget state).\\n\\t */\\n\\t&.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button,\\n\\t& > .ck-widget__type-around > .ck-widget__type-around__button:hover {\\n\\t\\tbackground: var(--ck-color-widget-type-around-button-active);\\n\\n\\t\\t&::after {\\n\\t\\t\\twidth: calc(var(--ck-widget-type-around-button-size) - 2px);\\n\\t\\t\\theight: calc(var(--ck-widget-type-around-button-size) - 2px);\\n\\t\\t\\tborder-radius: 100px;\\n\\t\\t\\tbackground: linear-gradient(135deg, hsla(0,0%,100%,0) 0%, hsla(0,0%,100%,.3) 100%);\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Styles for the \\\"before\\\" button when the widget has a selection handle. Because some space\\n\\t * is consumed by the handle, the button must be moved slightly to the right to let it breathe.\\n\\t */\\n\\t&.ck-widget_with-selection-handle > .ck-widget__type-around > .ck-widget__type-around__button_before {\\n\\t\\tmargin-left: 20px;\\n\\t}\\n\\n\\t/*\\n\\t * Styles for the horizontal \\\"fake caret\\\" which is displayed when the user navigates using the keyboard.\\n\\t */\\n\\t& .ck-widget__type-around__fake-caret {\\n\\t\\tpointer-events: none;\\n\\t\\theight: 1px;\\n\\t\\tanimation: ck-widget-type-around-fake-caret-pulse linear 1s infinite normal forwards;\\n\\n\\t\\t/*\\n\\t\\t * The semi-transparent-outline+background combo improves the contrast\\n\\t\\t * when the background underneath the fake caret is dark.\\n\\t\\t */\\n\\t\\toutline: solid 1px hsla(0, 0%, 100%, .5);\\n\\t\\tbackground: var(--ck-color-base-text);\\n\\t}\\n\\n\\t/*\\n\\t * Styles of the widget when the \\\"fake caret\\\" is blinking (e.g. upon keyboard navigation).\\n\\t * Despite the widget being physically selected in the model, its outline should disappear.\\n\\t */\\n\\t&.ck-widget_selected {\\n\\t\\t&.ck-widget_type-around_show-fake-caret_before,\\n\\t\\t&.ck-widget_type-around_show-fake-caret_after {\\n\\t\\t\\toutline-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-widget_type-around_show-fake-caret_before,\\n\\t&.ck-widget_type-around_show-fake-caret_after {\\n\\t\\t/*\\n\\t\\t * When the \\\"fake caret\\\" is visible we simulate that the widget is not selected\\n\\t\\t * (despite being physically selected), so the outline color should be for the\\n\\t\\t * unselected widget.\\n\\t\\t */\\n\\t\\t&.ck-widget_selected:hover {\\n\\t\\t\\toutline-color: var(--ck-color-widget-hover-border);\\n\\t\\t}\\n\\n\\t\\t/*\\n\\t\\t * Styles of the type around buttons when the \\\"fake caret\\\" is blinking (e.g. upon keyboard navigation).\\n\\t\\t * In this state, the type around buttons would collide with the fake carets so they should disappear.\\n\\t\\t */\\n\\t\\t& > .ck-widget__type-around > .ck-widget__type-around__button {\\n\\t\\t\\t@mixin ck-widget-type-around-button-hidden;\\n\\t\\t}\\n\\n\\t\\t/*\\n\\t\\t * Fake horizontal caret integration with the selection handle. When the caret is visible, simply\\n\\t\\t * hide the handle because it intersects with the caret (and does not make much sense anyway).\\n\\t\\t */\\n\\t\\t&.ck-widget_with-selection-handle {\\n\\t\\t\\t&.ck-widget_selected,\\n\\t\\t\\t&.ck-widget_selected:hover {\\n\\t\\t\\t\\t& > .ck-widget__selection-handle {\\n\\t\\t\\t\\t\\topacity: 0\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/*\\n\\t\\t * Fake horizontal caret integration with the resize UI. When the caret is visible, simply\\n\\t\\t * hide the resize UI because it creates too much noise. It can be visible when the user\\n\\t\\t * hovers the widget, though.\\n\\t\\t */\\n\\t\\t&.ck-widget_selected.ck-widget_with-resizer > .ck-widget__resizer {\\n\\t\\t\\topacity: 0\\n\\t\\t}\\n\\t}\\n}\\n\\n/*\\n * Styles for the \\\"before\\\" button when the widget has a selection handle in an RTL environment.\\n * The selection handler is aligned to the right side of the widget so there is no need to create\\n * additional space for it next to the \\\"before\\\" button.\\n */\\n.ck[dir=\\\"rtl\\\"] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around > .ck-widget__type-around__button_before {\\n\\tmargin-left: 0;\\n\\tmargin-right: 20px;\\n}\\n\\n/*\\n * Hide type around buttons when the widget is selected as a child of a selected\\n * nested editable (e.g. mulit-cell table selection).\\n *\\n * See https://github.com/ckeditor/ckeditor5/issues/7263.\\n */\\n.ck-editor__nested-editable.ck-editor__editable_selected {\\n\\t& .ck-widget {\\n\\t\\t&.ck-widget_selected,\\n\\t\\t&:hover {\\n\\t\\t\\t& > .ck-widget__type-around > .ck-widget__type-around__button {\\n\\t\\t\\t\\t@mixin ck-widget-type-around-button-hidden;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n/*\\n * Styles for the buttons when the widget is selected but the user clicked outside of the editor (blurred the editor).\\n */\\n.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button:not(:hover) {\\n\\tbackground: var(--ck-color-widget-type-around-button-blurred-editable);\\n\\n\\t& svg * {\\n\\t\\tstroke: hsl(0,0%,60%);\\n\\t}\\n}\\n\\n@keyframes ck-widget-type-around-arrow-dash {\\n\\t0% {\\n\\t\\tstroke-dashoffset: 10;\\n\\t}\\n\\t20%, 100% {\\n\\t\\tstroke-dashoffset: 0;\\n\\t}\\n}\\n\\n@keyframes ck-widget-type-around-arrow-tip-dash {\\n\\t0%, 20% {\\n\\t\\tstroke-dashoffset: 7;\\n\\t}\\n\\t40%, 100% {\\n\\t\\tstroke-dashoffset: 0;\\n\\t}\\n}\\n\\n@keyframes ck-widget-type-around-button-sonar {\\n\\t0% {\\n\\t\\tbox-shadow: 0 0 0 0 hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-start-alpha));\\n\\t}\\n\\t50% {\\n\\t\\tbox-shadow: 0 0 0 5px hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-end-alpha));\\n\\t}\\n\\t100% {\\n\\t\\tbox-shadow: 0 0 0 5px hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-start-alpha));\\n\\t}\\n}\\n\\n@keyframes ck-widget-type-around-fake-caret-pulse {\\n\\t0% {\\n\\t\\topacity: 1;\\n\\t}\\n\\t49% {\\n\\t\\topacity: 1;\\n\\t}\\n\\t50% {\\n\\t\\topacity: 0;\\n\\t}\\n\\t99% {\\n\\t\\topacity: 0;\\n\\t}\\n\\t100% {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.nc = undefined;","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/bindings/clickoutsidehandler\n */\n\nimport type { DomEmitter } from '@ckeditor/ckeditor5-utils';\n\n/* global document */\n\n/**\n * Handles clicking **outside** of a specified set of elements, then fires an action.\n *\n * **Note**: Actually, the action is executed upon `mousedown`, not `click`. It prevents\n * certain issues when the user keeps holding the mouse button and the UI cannot react\n * properly.\n *\n * @param options Configuration options.\n * @param options.emitter The emitter to which this behavior should be added.\n * @param options.activator Function returning a `Boolean`, to determine whether the handler is active.\n * @param options.contextElements Array of HTML elements or a callback returning an array of HTML elements\n * that determine the scope of the handler. Clicking any of them or their descendants will **not** fire the callback.\n * @param options.callback An action executed by the handler.\n */\nexport default function clickOutsideHandler(\n\t{ emitter, activator, callback, contextElements }: {\n\t\temitter: DomEmitter;\n\t\tactivator: () => boolean;\n\t\tcontextElements: Array<HTMLElement> | ( () => Array<HTMLElement> );\n\t\tcallback: () => void;\n\t}\n): void {\n\temitter.listenTo( document, 'mousedown', ( evt, domEvt ) => {\n\t\tif ( !activator() ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if `composedPath` is `undefined` in case the browser does not support native shadow DOM.\n\t\t// Can be removed when all supported browsers support native shadow DOM.\n\t\tconst path = typeof domEvt.composedPath == 'function' ? domEvt.composedPath() : [];\n\n\t\tconst contextElementsList = typeof contextElements == 'function' ? contextElements() : contextElements;\n\n\t\tfor ( const contextElement of contextElementsList ) {\n\t\t\tif ( contextElement.contains( domEvt.target as Node ) || path.includes( contextElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tcallback();\n\t} );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/conversion/conversion\n */\n\nimport {\n\tCKEditorError,\n\ttoArray,\n\ttype ArrayOrItem,\n\ttype PriorityString\n} from '@ckeditor/ckeditor5-utils';\n\nimport UpcastHelpers from './upcasthelpers';\nimport DowncastHelpers, {\n\ttype AttributeCreatorFunction,\n\ttype AttributeDescriptor\n} from './downcasthelpers';\n\nimport type DowncastDispatcher from './downcastdispatcher';\nimport type UpcastDispatcher from './upcastdispatcher';\nimport type ElementDefinition from '../view/elementdefinition';\nimport type { MatcherPattern } from '../view/matcher';\n\n/**\n * A utility class that helps add converters to upcast and downcast dispatchers.\n *\n * We recommend reading the {@glink framework/deep-dive/conversion/intro editor conversion} guide first to\n * understand the core concepts of the conversion mechanisms.\n *\n * An instance of the conversion manager is available in the\n * {@link module:core/editor/editor~Editor#conversion `editor.conversion`} property\n * and by default has the following groups of dispatchers (i.e. directions of conversion):\n *\n * * `downcast` (editing and data downcasts)\n * * `editingDowncast`\n * * `dataDowncast`\n * * `upcast`\n *\n * # One-way converters\n *\n * To add a converter to a specific group, use the {@link module:engine/conversion/conversion~Conversion#for `for()`}\n * method:\n *\n * ```ts\n * // Add a converter to editing downcast and data downcast.\n * editor.conversion.for( 'downcast' ).elementToElement( config ) );\n *\n * // Add a converter to the data pipepline only:\n * editor.conversion.for( 'dataDowncast' ).elementToElement( dataConversionConfig ) );\n *\n * // And a slightly different one for the editing pipeline:\n * editor.conversion.for( 'editingDowncast' ).elementToElement( editingConversionConfig ) );\n * ```\n *\n * See {@link module:engine/conversion/conversion~Conversion#for `for()`} method documentation to learn more about\n * available conversion helpers and how to use your custom ones.\n *\n * # Two-way converters\n *\n * Besides using one-way converters via the `for()` method, you can also use other methods available in this\n * class to add two-way converters (upcast and downcast):\n *\n * * {@link module:engine/conversion/conversion~Conversion#elementToElement `elementToElement()`} –\n * Model element to view element and vice versa.\n * * {@link module:engine/conversion/conversion~Conversion#attributeToElement `attributeToElement()`} –\n * Model attribute to view element and vice versa.\n * * {@link module:engine/conversion/conversion~Conversion#attributeToAttribute `attributeToAttribute()`} –\n * Model attribute to view attribute and vice versa.\n */\nexport default class Conversion {\n\t/**\n\t * Maps dispatchers group name to ConversionHelpers instances.\n\t */\n\tprivate readonly _helpers = new Map<string, DowncastHelpers | UpcastHelpers>();\n\n\tprivate readonly _downcast: Array<DowncastDispatcher>;\n\tprivate readonly _upcast: Array<UpcastDispatcher>;\n\n\t/**\n\t * Creates a new conversion instance.\n\t */\n\tconstructor(\n\t\tdowncastDispatchers: ArrayOrItem<DowncastDispatcher>,\n\t\tupcastDispatchers: ArrayOrItem<UpcastDispatcher>\n\t) {\n\t\t// Define default 'downcast' & 'upcast' dispatchers groups. Those groups are always available as two-way converters needs them.\n\t\tthis._downcast = toArray( downcastDispatchers );\n\t\tthis._createConversionHelpers( { name: 'downcast', dispatchers: this._downcast, isDowncast: true } );\n\n\t\tthis._upcast = toArray( upcastDispatchers );\n\t\tthis._createConversionHelpers( { name: 'upcast', dispatchers: this._upcast, isDowncast: false } );\n\t}\n\n\tpublic addAlias(\n\t\talias: `${ string }Downcast`,\n\t\tdispatcher: DowncastDispatcher\n\t): void;\n\tpublic addAlias(\n\t\talias: `${ string }Upcast`,\n\t\tdispatcher: UpcastDispatcher\n\t): void;\n\tpublic addAlias(\n\t\talias: string,\n\t\tdispatcher: DowncastDispatcher | UpcastDispatcher\n\t): void;\n\n\t/**\n\t * Define an alias for registered dispatcher.\n\t *\n\t * ```ts\n\t * const conversion = new Conversion(\n\t * \t[ dataDowncastDispatcher, editingDowncastDispatcher ],\n\t * \tupcastDispatcher\n\t * );\n\t *\n\t * conversion.addAlias( 'dataDowncast', dataDowncastDispatcher );\n\t * ```\n\t *\n\t * @param alias An alias of a dispatcher.\n\t * @param dispatcher Dispatcher which should have an alias.\n\t */\n\tpublic addAlias(\n\t\talias: string,\n\t\tdispatcher: DowncastDispatcher | UpcastDispatcher\n\t): void {\n\t\tconst isDowncast = this._downcast.includes( dispatcher as any );\n\t\tconst isUpcast = this._upcast.includes( dispatcher as any );\n\n\t\tif ( !isUpcast && !isDowncast ) {\n\t\t\t/**\n\t\t\t * Trying to register an alias for a dispatcher that nas not been registered.\n\t\t\t *\n\t\t\t * @error conversion-add-alias-dispatcher-not-registered\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'conversion-add-alias-dispatcher-not-registered',\n\t\t\t\tthis\n\t\t\t);\n\t\t}\n\n\t\tthis._createConversionHelpers( { name: alias, dispatchers: [ dispatcher ], isDowncast } );\n\t}\n\n\tpublic for( groupName: 'downcast' | 'dataDowncast' | 'editingDowncast' ): DowncastHelpers;\n\tpublic for( groupName: 'upcast' ): UpcastHelpers;\n\tpublic for<T extends string>( groupName: T ): ConversionType<T>;\n\n\t/**\n\t * Provides a chainable API to assign converters to a conversion dispatchers group.\n\t *\n\t * If the given group name has not been registered, the\n\t * {@link module:utils/ckeditorerror~CKEditorError `conversion-for-unknown-group` error} is thrown.\n\t *\n\t * You can use conversion helpers available directly in the `for()` chain or your custom ones via\n\t * the {@link module:engine/conversion/conversionhelpers~ConversionHelpers#add `add()`} method.\n\t *\n\t * # Using built-in conversion helpers\n\t *\n\t * The `for()` chain comes with a set of conversion helpers which you can use like this:\n\t *\n\t * ```ts\n\t * editor.conversion.for( 'downcast' )\n\t * \t.elementToElement( config1 ) // Adds an element-to-element downcast converter.\n\t * \t.attributeToElement( config2 ); // Adds an attribute-to-element downcast converter.\n\t *\n\t * editor.conversion.for( 'upcast' )\n\t * \t.elementToAttribute( config3 ); // Adds an element-to-attribute upcast converter.\n\t * ```\n\t *\n\t * Refer to the documentation of built-in conversion helpers to learn about their configuration options.\n\t *\n\t * * downcast (model-to-view) conversion helpers:\n\t *\n\t *\t* {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`},\n\t *\t* {@link module:engine/conversion/downcasthelpers~DowncastHelpers#attributeToElement `attributeToElement()`},\n\t *\t* {@link module:engine/conversion/downcasthelpers~DowncastHelpers#attributeToAttribute `attributeToAttribute()`}.\n\t *\t* {@link module:engine/conversion/downcasthelpers~DowncastHelpers#markerToElement `markerToElement()`}.\n\t *\t* {@link module:engine/conversion/downcasthelpers~DowncastHelpers#markerToHighlight `markerToHighlight()`}.\n\t *\n\t * * upcast (view-to-model) conversion helpers:\n\t *\n\t *\t* {@link module:engine/conversion/upcasthelpers~UpcastHelpers#elementToElement `elementToElement()`},\n\t *\t* {@link module:engine/conversion/upcasthelpers~UpcastHelpers#elementToAttribute `elementToAttribute()`},\n\t *\t* {@link module:engine/conversion/upcasthelpers~UpcastHelpers#attributeToAttribute `attributeToAttribute()`}.\n\t *\t* {@link module:engine/conversion/upcasthelpers~UpcastHelpers#elementToMarker `elementToMarker()`}.\n\t *\n\t * # Using custom conversion helpers\n\t *\n\t * If you need to implement an atypical converter, you can do so by calling:\n\t *\n\t * ```ts\n\t * editor.conversion.for( direction ).add( customHelper );\n\t * ```\n\t *\n\t * The `.add()` method takes exactly one parameter, which is a function. This function should accept one parameter that\n\t * is a dispatcher instance. The function should add an actual converter to the passed dispatcher instance.\n\t *\n\t * Example:\n\t *\n\t * ```ts\n\t * editor.conversion.for( 'upcast' ).add( dispatcher => {\n\t * \tdispatcher.on( 'element:a', ( evt, data, conversionApi ) => {\n\t * \t\t// Do something with a view <a> element.\n\t * \t} );\n\t * } );\n\t * ```\n\t *\n\t * Refer to the documentation of {@link module:engine/conversion/upcastdispatcher~UpcastDispatcher}\n\t * and {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher} to learn how to write\n\t * custom converters.\n\t *\n\t * @param groupName The name of dispatchers group to add the converters to.\n\t */\n\tpublic for( groupName: string ): DowncastHelpers | UpcastHelpers {\n\t\tif ( !this._helpers.has( groupName ) ) {\n\t\t\t/**\n\t\t\t * Trying to add a converter to an unknown dispatchers group.\n\t\t\t *\n\t\t\t * @error conversion-for-unknown-group\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'conversion-for-unknown-group', this );\n\t\t}\n\n\t\treturn this._helpers.get( groupName )!;\n\t}\n\n\t/**\n\t * Sets up converters between the model and the view that convert a model element to a view element (and vice versa).\n\t * For example, the model `<paragraph>Foo</paragraph>` is turned into `<p>Foo</p>` in the view.\n\t *\n\t * ```ts\n\t * // A simple conversion from the `paragraph` model element to the `<p>` view element (and vice versa).\n\t * editor.conversion.elementToElement( { model: 'paragraph', view: 'p' } );\n\t *\n\t * // Override other converters by specifying a converter definition with a higher priority.\n\t * editor.conversion.elementToElement( { model: 'paragraph', view: 'div', converterPriority: 'high' } );\n\t *\n\t * // View specified as an object instead of a string.\n\t * editor.conversion.elementToElement( {\n\t * \tmodel: 'fancyParagraph',\n\t * \tview: {\n\t * \t\tname: 'p',\n\t * \t\tclasses: 'fancy'\n\t * \t}\n\t * } );\n\t *\n\t * // Use `upcastAlso` to define other view elements that should also be converted to a `paragraph` element.\n\t * editor.conversion.elementToElement( {\n\t * \tmodel: 'paragraph',\n\t * \tview: 'p',\n\t * \tupcastAlso: [\n\t * \t\t'div',\n\t * \t\t{\n\t * \t\t\t// Any element with the `display: block` style.\n\t * \t\t\tstyles: {\n\t * \t\t\t\tdisplay: 'block'\n\t * \t\t\t}\n\t * \t\t}\n\t * \t]\n\t * } );\n\t *\n\t * // `upcastAlso` set as callback enables a conversion of a wide range of different view elements.\n\t * editor.conversion.elementToElement( {\n\t * \tmodel: 'heading',\n\t * \tview: 'h2',\n\t * \t// Convert \"heading-like\" paragraphs to headings.\n\t * \tupcastAlso: viewElement => {\n\t * \t\tconst fontSize = viewElement.getStyle( 'font-size' );\n\t *\n\t * \t\tif ( !fontSize ) {\n\t * \t\t\treturn null;\n\t * \t\t}\n\t *\n\t * \t\tconst match = fontSize.match( /(\\d+)\\s*px/ );\n\t *\n\t * \t\tif ( !match ) {\n\t * \t\t\treturn null;\n\t * \t\t}\n\t *\n\t * \t\tconst size = Number( match[ 1 ] );\n\t *\n\t * \t\tif ( size > 26 ) {\n\t * \t\t\t// Returned value can be an object with the matched properties.\n\t * \t\t\t// These properties will be \"consumed\" during the conversion.\n\t * \t\t\t// See `engine.view.Matcher~MatcherPattern` and `engine.view.Matcher#match` for more details.\n\t *\n\t * \t\t\treturn { name: true, styles: [ 'font-size' ] };\n\t * \t\t}\n\t *\n\t * \t\treturn null;\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * `definition.model` is a `String` with a model element name to convert from or to.\n\t *\n\t * @param definition The converter definition.\n\t */\n\tpublic elementToElement( definition: {\n\t\tmodel: string;\n\t\tview: ElementDefinition;\n\t\tupcastAlso?: ArrayOrItem<ElementDefinition | MatcherPattern>;\n\t\tconverterPriority?: PriorityString;\n\t} ): void {\n\t\t// Set up downcast converter.\n\t\tthis.for( 'downcast' ).elementToElement( definition );\n\n\t\t// Set up upcast converter.\n\t\tfor ( const { model, view } of _getAllUpcastDefinitions( definition ) ) {\n\t\t\tthis.for( 'upcast' )\n\t\t\t\t.elementToElement( {\n\t\t\t\t\tmodel,\n\t\t\t\t\tview,\n\t\t\t\t\tconverterPriority: definition.converterPriority\n\t\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Sets up converters between the model and the view that convert a model attribute to a view element (and vice versa).\n\t * For example, a model text node with `\"Foo\"` as data and the `bold` attribute will be turned to `<strong>Foo</strong>` in the view.\n\t *\n\t * ```ts\n\t * // A simple conversion from the `bold=true` attribute to the `<strong>` view element (and vice versa).\n\t * editor.conversion.attributeToElement( { model: 'bold', view: 'strong' } );\n\t *\n\t * // Override other converters by specifying a converter definition with a higher priority.\n\t * editor.conversion.attributeToElement( { model: 'bold', view: 'b', converterPriority: 'high' } );\n\t *\n\t * // View specified as an object instead of a string.\n\t * editor.conversion.attributeToElement( {\n\t * \tmodel: 'bold',\n\t * \tview: {\n\t * \t\tname: 'span',\n\t * \t\tclasses: 'bold'\n\t * \t}\n\t * } );\n\t *\n\t * // Use `config.model.name` to define the conversion only from a given node type, `$text` in this case.\n\t * // The same attribute on different elements may then be handled by a different converter.\n\t * editor.conversion.attributeToElement( {\n\t * \tmodel: {\n\t * \t\tkey: 'textDecoration',\n\t * \t\tvalues: [ 'underline', 'lineThrough' ],\n\t * \t\tname: '$text'\n\t * \t},\n\t * \tview: {\n\t * \t\tunderline: {\n\t * \t\t\tname: 'span',\n\t * \t\t\tstyles: {\n\t * \t\t\t\t'text-decoration': 'underline'\n\t * \t\t\t}\n\t * \t\t},\n\t * \t\tlineThrough: {\n\t * \t\t\tname: 'span',\n\t * \t\t\tstyles: {\n\t * \t\t\t\t'text-decoration': 'line-through'\n\t * \t\t\t}\n\t * \t\t}\n\t * \t}\n\t * } );\n\t *\n\t * // Use `upcastAlso` to define other view elements that should also be converted to the `bold` attribute.\n\t * editor.conversion.attributeToElement( {\n\t * \tmodel: 'bold',\n\t * \tview: 'strong',\n\t * \tupcastAlso: [\n\t * \t\t'b',\n\t * \t\t{\n\t * \t\t\tname: 'span',\n\t * \t\t\tclasses: 'bold'\n\t * \t\t},\n\t * \t\t{\n\t * \t\t\tname: 'span',\n\t * \t\t\tstyles: {\n\t * \t\t\t\t'font-weight': 'bold'\n\t * \t\t\t}\n\t * \t\t},\n\t * \t\tviewElement => {\n\t * \t\t\tconst fontWeight = viewElement.getStyle( 'font-weight' );\n\t *\n\t * \t\t\tif ( viewElement.is( 'element', 'span' ) && fontWeight && /\\d+/.test() && Number( fontWeight ) > 500 ) {\n\t * \t\t\t\t// Returned value can be an object with the matched properties.\n\t * \t\t\t\t// These properties will be \"consumed\" during the conversion.\n\t * \t\t\t\t// See `engine.view.Matcher~MatcherPattern` and `engine.view.Matcher#match` for more details.\n\t *\n\t * \t\t\t\treturn {\n\t * \t\t\t\t\tname: true,\n\t * \t\t\t\t\tstyles: [ 'font-weight' ]\n\t * \t\t\t\t};\n\t * \t\t\t}\n\t * \t\t}\n\t * \t]\n\t * } );\n\t *\n\t * // Conversion from and to a model attribute key whose value is an enum (`fontSize=big|small`).\n\t * // `upcastAlso` set as callback enables a conversion of a wide range of different view elements.\n\t * editor.conversion.attributeToElement( {\n\t * \tmodel: {\n\t * \t\tkey: 'fontSize',\n\t * \t\tvalues: [ 'big', 'small' ]\n\t * \t},\n\t * \tview: {\n\t * \t\tbig: {\n\t * \t\t\tname: 'span',\n\t * \t\t\tstyles: {\n\t * \t\t\t\t'font-size': '1.2em'\n\t * \t\t\t}\n\t * \t\t},\n\t * \t\tsmall: {\n\t * \t\t\tname: 'span',\n\t * \t\t\tstyles: {\n\t * \t\t\t\t'font-size': '0.8em'\n\t * \t\t\t}\n\t * \t\t}\n\t * \t},\n\t * \tupcastAlso: {\n\t * \t\tbig: viewElement => {\n\t * \t\t\tconst fontSize = viewElement.getStyle( 'font-size' );\n\t *\n\t * \t\t\tif ( !fontSize ) {\n\t * \t\t\t\treturn null;\n\t * \t\t\t}\n\t *\n\t * \t\t\tconst match = fontSize.match( /(\\d+)\\s*px/ );\n\t *\n\t * \t\t\tif ( !match ) {\n\t * \t\t\t\treturn null;\n\t * \t\t\t}\n\t *\n\t * \t\t\tconst size = Number( match[ 1 ] );\n\t *\n\t * \t\t\tif ( viewElement.is( 'element', 'span' ) && size > 10 ) {\n\t * \t\t\t\t// Returned value can be an object with the matched properties.\n\t * \t\t\t\t// These properties will be \"consumed\" during the conversion.\n\t * \t\t\t\t// See `engine.view.Matcher~MatcherPattern` and `engine.view.Matcher#match` for more details.\n\t *\n\t * \t\t\t\treturn { name: true, styles: [ 'font-size' ] };\n\t * \t\t\t}\n\t *\n\t * \t\t\treturn null;\n\t * \t\t},\n\t * \t\tsmall: viewElement => {\n\t * \t\t\tconst fontSize = viewElement.getStyle( 'font-size' );\n\t *\n\t * \t\t\tif ( !fontSize ) {\n\t * \t\t\t\treturn null;\n\t * \t\t\t}\n\t *\n\t * \t\t\tconst match = fontSize.match( /(\\d+)\\s*px/ );\n\t *\n\t * \t\t\tif ( !match ) {\n\t * \t\t\t\treturn null;\n\t * \t\t\t}\n\t *\n\t * \t\t\tconst size = Number( match[ 1 ] );\n\t *\n\t * \t\t\tif ( viewElement.is( 'element', 'span' ) && size < 10 ) {\n\t * \t\t\t\t// Returned value can be an object with the matched properties.\n\t * \t\t\t\t// These properties will be \"consumed\" during the conversion.\n\t * \t\t\t\t// See `engine.view.Matcher~MatcherPattern` and `engine.view.Matcher#match` for more details.\n\t *\n\t * \t\t\t\treturn { name: true, styles: [ 'font-size' ] };\n\t * \t\t\t}\n\t *\n\t * \t\t\treturn null;\n\t * \t\t}\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * The `definition.model` parameter specifies which model attribute should be converted from or to. It can be a `{ key, value }` object\n\t * describing the attribute key and value to convert or a `String` specifying just the attribute key (in such a case\n\t * `value` is set to `true`).\n\t *\n\t * @param definition The converter definition.\n\t */\n\tpublic attributeToElement<TValues extends string>(\n\t\tdefinition: {\n\t\t\tmodel: string | {\n\t\t\t\tkey: string;\n\t\t\t\tname?: string;\n\t\t\t};\n\t\t\tview: ElementDefinition;\n\t\t\tupcastAlso?: ArrayOrItem<MatcherPattern>;\n\t\t\tconverterPriority?: PriorityString;\n\t\t} | {\n\t\t\tmodel: {\n\t\t\t\tkey: string;\n\t\t\t\tname?: string;\n\t\t\t\tvalues: Array<TValues>;\n\t\t\t};\n\t\t\tview: Record<TValues, ElementDefinition>;\n\t\t\tupcastAlso?: Record<TValues, ArrayOrItem<MatcherPattern>>;\n\t\t\tconverterPriority?: PriorityString;\n\t\t}\n\t): void {\n\t\t// Set up downcast converter.\n\t\tthis.for( 'downcast' ).attributeToElement( definition );\n\n\t\t// Set up upcast converter.\n\t\tfor ( const { model, view } of _getAllUpcastDefinitions( definition ) ) {\n\t\t\tthis.for( 'upcast' )\n\t\t\t\t.elementToAttribute( {\n\t\t\t\t\tview,\n\t\t\t\t\tmodel,\n\t\t\t\t\tconverterPriority: definition.converterPriority\n\t\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Sets up converters between the model and the view that convert a model attribute to a view attribute (and vice versa). For example,\n\t * `<imageBlock src='foo.jpg'></imageBlock>` is converted to `<img src='foo.jpg'></img>` (the same attribute key and value).\n\t * This type of converters is intended to be used with {@link module:engine/model/element~Element model element} nodes.\n\t * To convert the text attributes,\n\t * the {@link module:engine/conversion/conversion~Conversion#attributeToElement `attributeToElement converter`}should be set up.\n\t *\n\t * ```ts\n\t * // A simple conversion from the `source` model attribute to the `src` view attribute (and vice versa).\n\t * editor.conversion.attributeToAttribute( { model: 'source', view: 'src' } );\n\t *\n\t * // Attribute values are strictly specified.\n\t * editor.conversion.attributeToAttribute( {\n\t * \tmodel: {\n\t * \t\tname: 'imageInline',\n\t * \t\tkey: 'aside',\n\t * \t\tvalues: [ 'aside' ]\n\t * \t},\n\t * \tview: {\n\t * \t\taside: {\n\t * \t\t\tname: 'img',\n\t * \t\t\tkey: 'class',\n\t * \t\t\tvalue: [ 'aside', 'half-size' ]\n\t * \t\t}\n\t * \t}\n\t * } );\n\t *\n\t * // Set the style attribute.\n\t * editor.conversion.attributeToAttribute( {\n\t * \tmodel: {\n\t * \t\tname: 'imageInline',\n\t * \t\tkey: 'aside',\n\t * \t\tvalues: [ 'aside' ]\n\t * \t},\n\t * \tview: {\n\t * \t\taside: {\n\t * \t\t\tname: 'img',\n\t * \t\t\tkey: 'style',\n\t * \t\t\tvalue: {\n\t * \t\t\t\tfloat: 'right',\n\t * \t\t\t\twidth: '50%',\n\t * \t\t\t\tmargin: '5px'\n\t * \t\t\t}\n\t * \t\t}\n\t * \t}\n\t * } );\n\t *\n\t * // Conversion from and to a model attribute key whose value is an enum (`align=right|center`).\n\t * // Use `upcastAlso` to define other view elements that should also be converted to the `align=right` attribute.\n\t * editor.conversion.attributeToAttribute( {\n\t * \tmodel: {\n\t * \t\tkey: 'align',\n\t * \t\tvalues: [ 'right', 'center' ]\n\t * \t},\n\t * \tview: {\n\t * \t\tright: {\n\t * \t\t\tkey: 'class',\n\t * \t\t\tvalue: 'align-right'\n\t * \t\t},\n\t * \t\tcenter: {\n\t * \t\t\tkey: 'class',\n\t * \t\t\tvalue: 'align-center'\n\t * \t\t}\n\t * \t},\n\t * \tupcastAlso: {\n\t * \t\tright: {\n\t * \t\t\tstyles: {\n\t * \t\t\t\t'text-align': 'right'\n\t * \t\t\t}\n\t * \t\t},\n\t * \t\tcenter: {\n\t * \t\t\tstyles: {\n\t * \t\t\t\t'text-align': 'center'\n\t * \t\t\t}\n\t * \t\t}\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * The `definition.model` parameter specifies which model attribute should be converted from and to.\n\t * It can be a `{ key, [ values ], [ name ] }` object or a `String`, which will be treated like `{ key: definition.model }`.\n\t * The `key` property is the model attribute key to convert from and to.\n\t * The `values` are the possible model attribute values. If the `values` parameter is not set, the model attribute value\n\t * will be the same as the view attribute value.\n\t * If `name` is set, the conversion will be set up only for model elements with the given name.\n\t *\n\t * The `definition.view` parameter specifies which view attribute should be converted from and to.\n\t * It can be a `{ key, value, [ name ] }` object or a `String`, which will be treated like `{ key: definition.view }`.\n\t * The `key` property is the view attribute key to convert from and to.\n\t * The `value` is the view attribute value to convert from and to. If `definition.value` is not set, the view attribute value will be\n\t * the same as the model attribute value.\n\t * If `key` is `'class'`, `value` can be a `String` or an array of `String`s.\n\t * If `key` is `'style'`, `value` is an object with key-value pairs.\n\t * In other cases, `value` is a `String`.\n\t * If `name` is set, the conversion will be set up only for model elements with the given name.\n\t * If `definition.model.values` is set, `definition.view` is an object that assigns values from `definition.model.values`\n\t * to `{ key, value, [ name ] }` objects.\n\t *\n\t * `definition.upcastAlso` specifies which other matching view elements should also be upcast to the given model configuration.\n\t * If `definition.model.values` is set, `definition.upcastAlso` should be an object assigning values from `definition.model.values`\n\t * to {@link module:engine/view/matcher~MatcherPattern}s or arrays of {@link module:engine/view/matcher~MatcherPattern}s.\n\t *\n\t * **Note:** `definition.model` and `definition.view` form should be mirrored, so the same types of parameters should\n\t * be given in both parameters.\n\t *\n\t * @param definition The converter definition.\n\t * @param definition.model The model attribute to convert from and to.\n\t * @param definition.view The view attribute to convert from and to.\n\t * @param definition.upcastAlso Any view element matching `definition.upcastAlso` will also be converted to the given model attribute.\n\t * `definition.upcastAlso` is used only if `config.model.values` is specified.\n\t */\n\tpublic attributeToAttribute<TValues extends string>(\n\t\tdefinition: {\n\t\t\tmodel: string | {\n\t\t\t\tkey: string;\n\t\t\t\tname?: string;\n\t\t\t};\n\t\t\tview: string | ( AttributeDescriptor & { name?: string } );\n\t\t\tupcastAlso?: ArrayOrItem<string | ( AttributeDescriptor & { name?: string } ) | AttributeCreatorFunction>;\n\t\t\tconverterPriority?: PriorityString;\n\t\t} | {\n\t\t\tmodel: {\n\t\t\t\tkey: string;\n\t\t\t\tname?: string;\n\t\t\t\tvalues: Array<TValues>;\n\t\t\t};\n\t\t\tview: Record<TValues, ( AttributeDescriptor & { name?: string } )>;\n\t\t\tupcastAlso?: Record<TValues, ( AttributeDescriptor & { name?: string } ) | AttributeCreatorFunction>;\n\t\t\tconverterPriority?: PriorityString;\n\t\t} ): void {\n\t\t// Set up downcast converter.\n\t\tthis.for( 'downcast' ).attributeToAttribute( definition );\n\n\t\t// Set up upcast converter.\n\t\tfor ( const { model, view } of _getAllUpcastDefinitions( definition ) ) {\n\t\t\tthis.for( 'upcast' )\n\t\t\t\t.attributeToAttribute( {\n\t\t\t\t\tview,\n\t\t\t\t\tmodel\n\t\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Creates and caches conversion helpers for given dispatchers group.\n\t *\n\t * @param options.name Group name.\n\t */\n\tprivate _createConversionHelpers(\n\t\t{ name, dispatchers, isDowncast }: {\n\t\t\tname: string;\n\t\t\tdispatchers: Array<DowncastDispatcher | UpcastDispatcher>;\n\t\t\tisDowncast: boolean;\n\t\t}\n\t): void {\n\t\tif ( this._helpers.has( name ) ) {\n\t\t\t/**\n\t\t\t * Trying to register a group name that has already been registered.\n\t\t\t *\n\t\t\t * @error conversion-group-exists\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'conversion-group-exists', this );\n\t\t}\n\n\t\tconst helpers = isDowncast ?\n\t\t\tnew DowncastHelpers( dispatchers as Array<DowncastDispatcher> ) :\n\t\t\tnew UpcastHelpers( dispatchers as Array<UpcastDispatcher> );\n\n\t\tthis._helpers.set( name, helpers );\n\t}\n}\n\n/**\n * Helper function that creates a joint array out of an item passed in `definition.view` and items passed in\n * `definition.upcastAlso`.\n */\nfunction* _getAllUpcastDefinitions( definition: any ): IterableIterator<{ model: any; view: any }> {\n\tif ( definition.model.values ) {\n\t\tfor ( const value of definition.model.values ) {\n\t\t\tconst model = { key: definition.model.key, value };\n\t\t\tconst view = definition.view[ value ];\n\t\t\tconst upcastAlso = definition.upcastAlso ? definition.upcastAlso[ value ] : undefined;\n\n\t\t\tyield* _getUpcastDefinition( model, view, upcastAlso );\n\t\t}\n\t} else {\n\t\tyield* _getUpcastDefinition( definition.model, definition.view, definition.upcastAlso );\n\t}\n}\n\nfunction* _getUpcastDefinition( model: unknown, view: unknown, upcastAlso?: unknown ): any {\n\tyield { model, view };\n\n\tif ( upcastAlso ) {\n\t\tfor ( const upcastAlsoItem of toArray( upcastAlso ) ) {\n\t\t\tyield { model, view: upcastAlsoItem };\n\t\t}\n\t}\n}\n\ntype ConversionType<T extends string> = T extends `${ string }Downcast`\n\t? DowncastHelpers\n\t: T extends `${ string }Upcast`\n\t\t? UpcastHelpers\n\t\t: DowncastHelpers | UpcastHelpers;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module enter/utils\n */\n\nimport type { Schema } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Returns attributes that should be preserved on the enter keystroke.\n *\n * Filtering is realized based on `copyOnEnter` attribute property. Read more about attribute properties\n * {@link module:engine/model/schema~Schema#setAttributeProperties here}.\n *\n * @param schema Model's schema.\n * @param allAttributes Attributes to filter.\n */\nexport function* getCopyOnEnterAttributes(\n\tschema: Schema,\n\tallAttributes: Iterable<[ string, unknown ]>\n): IterableIterator<[ string, unknown ]> {\n\tfor ( const attribute of allAttributes ) {\n\t\tif ( attribute && schema.getAttributeProperties( attribute[ 0 ] ).copyOnEnter ) {\n\t\t\tyield attribute;\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/bindings/csstransitiondisablermixin\n */\n\nimport type { Constructor, Mixed } from '@ckeditor/ckeditor5-utils';\n\nimport type View from '../view';\n\n/**\n * A mixin that brings the possibility to temporarily disable CSS transitions using\n * {@link module:ui/view~View} methods. It is helpful when, for instance, the transitions should not happen\n * when the view is first displayed but they should work normal in other cases.\n *\n * The methods to control the CSS transitions are:\n * * `disableCssTransitions()` – Adds the `.ck-transitions-disabled` class to the\n * {@link module:ui/view~View#element view element}.\n * * `enableCssTransitions()` – Removes the `.ck-transitions-disabled` class from the\n * {@link module:ui/view~View#element view element}.\n *\n * The usage comes down to:\n *\n * ```ts\n * const MyViewWithCssTransitionDisabler = CssTransitionDisablerMixin( MyView );\n * const view = new MyViewWithCssTransitionDisabler();\n *\n * // ...\n *\n * view.disableCssTransitions();\n * view.show();\n * view.enableCssTransitions();\n * ```\n *\n * @param view View instance that should get this functionality.\n */\nexport default function CssTransitionDisablerMixin<Base extends Constructor<View>>( view: Base ): Mixed<Base, ViewWithCssTransitionDisabler>\n{\n\tabstract class Mixin extends view {\n\t\tdeclare public _isCssTransitionsDisabled: boolean;\n\n\t\tpublic disableCssTransitions() {\n\t\t\tthis._isCssTransitionsDisabled = true;\n\t\t}\n\n\t\tpublic enableCssTransitions() {\n\t\t\tthis._isCssTransitionsDisabled = false;\n\t\t}\n\n\t\tconstructor( ...args: Array<any> ) {\n\t\t\tsuper( ...args );\n\n\t\t\tthis.set( '_isCssTransitionsDisabled', false );\n\t\t\tthis.initializeCssTransitionDisablerMixin();\n\t\t}\n\n\t\tprotected initializeCssTransitionDisablerMixin(): void {\n\t\t\tthis.extendTemplate( {\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: [\n\t\t\t\t\t\tthis.bindTemplate.if( '_isCssTransitionsDisabled', 'ck-transitions-disabled' )\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\treturn Mixin as any;\n}\n\nexport type ViewWithCssTransitionDisabler = View & {\n\tdisableCssTransitions(): void;\n\tenableCssTransitions(): void;\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/bindings/submithandler\n */\n\nimport type View from '../view';\n\n/**\n * A handler useful for {@link module:ui/view~View views} working as HTML forms. It intercepts a native DOM\n * `submit` event, prevents the default web browser behavior (navigation and page reload) and\n * fires the `submit` event on a view instead. Such a custom event can be then used by any\n * {@link module:utils/dom/emittermixin~DomEmitter emitter}, e.g. to serialize the form data.\n *\n * ```ts\n * import submitHandler from '@ckeditor/ckeditor5-ui/src/bindings/submithandler';\n *\n * // ...\n *\n * class AnyFormView extends View {\n * \tconstructor() {\n * \t\tsuper();\n *\n * \t\t// ...\n *\n * \t\tsubmitHandler( {\n * \t\t\tview: this\n * \t\t} );\n * \t}\n * }\n *\n * // ...\n *\n * const view = new AnyFormView();\n *\n * // A sample listener attached by an emitter working with the view.\n * this.listenTo( view, 'submit', () => {\n * \tsaveTheFormData();\n * \thideTheForm();\n * } );\n * ```\n *\n * @param options Configuration options.\n * @param options.view The view which DOM `submit` events should be handled.\n */\nexport default function submitHandler( { view }: { view: View } ): void {\n\tview.listenTo( view.element!, 'submit', ( evt, domEvt ) => {\n\t\tdomEvt.preventDefault();\n\t\tview.fire<SubmitHandlerEvent>( 'submit' );\n\t}, { useCapture: true } );\n}\n\n/**\n * Fired by {@link module:ui/bindings/submithandler~submitHandler} helper.\n *\n * @eventName module:ui/view~View#submit\n */\nexport type SubmitHandlerEvent = {\n\tname: 'submit';\n\targs: [];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/bindings/addkeyboardhandlingforgrid\n */\n\nimport type { FocusTracker, KeystrokeHandler } from '@ckeditor/ckeditor5-utils';\nimport type { FocusableView } from '../focuscycler';\nimport type ViewCollection from '../viewcollection';\n\n/**\n * A helper that adds a keyboard navigation support (arrow up/down/left/right) for grids.\n *\n * @param options Configuration options.\n * @param options.keystrokeHandler Keystroke handler to register navigation with arrow keys.\n * @param options.focusTracker A focus tracker for grid elements.\n * @param options.gridItems A collection of grid items.\n * @param options.numberOfColumns Number of columns in the grid. Can be specified as a function that returns\n * the number (e.g. for responsive grids).\n * @param options.uiLanguageDirection String of ui language direction.\n */\nexport default function addKeyboardHandlingForGrid(\n\t{ keystrokeHandler, focusTracker, gridItems, numberOfColumns, uiLanguageDirection }: {\n\t\tkeystrokeHandler: KeystrokeHandler;\n\t\tfocusTracker: FocusTracker;\n\t\tgridItems: ViewCollection;\n\t\tnumberOfColumns: number | ( () => number );\n\t\tuiLanguageDirection?: string;\n\t}\n): void {\n\tconst getNumberOfColumns = typeof numberOfColumns === 'number' ? () => numberOfColumns : numberOfColumns;\n\n\tkeystrokeHandler.set( 'arrowright', getGridItemFocuser( ( focusedElementIndex, gridItems ) => {\n\t\treturn uiLanguageDirection === 'rtl' ?\n\t\t\tgetLeftElementIndex( focusedElementIndex, gridItems.length ) :\n\t\t\tgetRightElementIndex( focusedElementIndex, gridItems.length );\n\t} ) );\n\n\tkeystrokeHandler.set( 'arrowleft', getGridItemFocuser( ( focusedElementIndex, gridItems ) => {\n\t\treturn uiLanguageDirection === 'rtl' ?\n\t\t\tgetRightElementIndex( focusedElementIndex, gridItems.length ) :\n\t\t\tgetLeftElementIndex( focusedElementIndex, gridItems.length );\n\t} ) );\n\n\tkeystrokeHandler.set( 'arrowup', getGridItemFocuser( ( focusedElementIndex, gridItems ) => {\n\t\tlet nextIndex = focusedElementIndex - getNumberOfColumns();\n\n\t\tif ( nextIndex < 0 ) {\n\t\t\tnextIndex = focusedElementIndex + getNumberOfColumns() * Math.floor( gridItems.length / getNumberOfColumns() );\n\n\t\t\tif ( nextIndex > gridItems.length - 1 ) {\n\t\t\t\tnextIndex -= getNumberOfColumns();\n\t\t\t}\n\t\t}\n\n\t\treturn nextIndex;\n\t} ) );\n\n\tkeystrokeHandler.set( 'arrowdown', getGridItemFocuser( ( focusedElementIndex, gridItems ) => {\n\t\tlet nextIndex = focusedElementIndex + getNumberOfColumns();\n\n\t\tif ( nextIndex > gridItems.length - 1 ) {\n\t\t\tnextIndex = focusedElementIndex % getNumberOfColumns();\n\t\t}\n\n\t\treturn nextIndex;\n\t} ) );\n\n\tfunction getGridItemFocuser( getIndexToFocus: ( focusedElementIndex: number, gridItems: ViewCollection ) => number ) {\n\t\treturn ( evt: KeyboardEvent ) => {\n\t\t\tconst focusedElement = gridItems.find( item => item.element === focusTracker.focusedElement );\n\t\t\tconst focusedElementIndex = gridItems.getIndex( focusedElement! );\n\t\t\tconst nextIndexToFocus = getIndexToFocus( focusedElementIndex, gridItems );\n\n\t\t\t( gridItems.get( nextIndexToFocus ) as FocusableView ).focus();\n\n\t\t\tevt.stopPropagation();\n\t\t\tevt.preventDefault();\n\t\t};\n\t}\n\n\t/**\n\t * Function returning the next index.\n\t *\n\t * ```\n\t * before: [ ][x][ ]\tafter: [ ][ ][x]\n\t * index = 1 index = 2\n\t * ```\n\t *\n\t * If current index is last, function returns first index.\n\t *\n\t * ```\n\t * before: [ ][ ][x]\tafter: [x][ ][ ]\n\t * index = 2 index = 0\n\t * ```\n\t *\n\t * @param elementIndex Number of current index.\n\t * @param collectionLength A count of collection items.\n\t */\n\tfunction getRightElementIndex( elementIndex: number, collectionLength: number ) {\n\t\tif ( elementIndex === collectionLength - 1 ) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\treturn elementIndex + 1;\n\t\t}\n\t}\n\n\t/**\n\t * Function returning the previous index.\n\t *\n\t * ```\n\t * before: [ ][x][ ]\tafter: [x][ ][ ]\n\t * index = 1 index = 0\n\t * ```\n\t *\n\t * If current index is first, function returns last index.\n\t *\n\t * ```\n\t * before: [x][ ][ ]\tafter: [ ][ ][x]\n\t * index = 0 index = 2\n\t * ```\n\t *\n\t * @param elementIndex Number of current index.\n\t * @param collectionLength A count of collection items.\n\t */\n\tfunction getLeftElementIndex( elementIndex: number, collectionLength: number ) {\n\t\tif ( elementIndex === 0 ) {\n\t\t\treturn collectionLength - 1;\n\t\t} else {\n\t\t\treturn elementIndex - 1;\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* globals navigator:false */\n\n/**\n * @module utils/env\n */\n\n/**\n * Safely returns `userAgent` from browser's navigator API in a lower case.\n * If navigator API is not available it will return an empty string.\n */\nexport function getUserAgent( ): string {\n\t// In some environments navigator API might not be available.\n\ttry {\n\t\treturn navigator.userAgent.toLowerCase();\n\t} catch ( e ) {\n\t\treturn '';\n\t}\n}\n\nconst userAgent = getUserAgent();\n\n// This interface exists to make our API pages more readable.\n/**\n * A namespace containing environment and browser information.\n */\nexport interface EnvType {\n\n\t/**\n\t * Indicates that the application is running on Macintosh.\n\t */\n\treadonly isMac: boolean;\n\n\t/**\n\t * Indicates that the application is running on Windows.\n\t */\n\treadonly isWindows: boolean;\n\n\t/**\n\t * Indicates that the application is running in Firefox (Gecko).\n\t */\n\treadonly isGecko: boolean;\n\n\t/**\n\t * Indicates that the application is running in Safari.\n\t */\n\treadonly isSafari: boolean;\n\n\t/**\n\t * Indicates the the application is running in iOS.\n\t */\n\treadonly isiOS: boolean;\n\n\t/**\n\t * Indicates that the application is running on Android mobile device.\n\t */\n\treadonly isAndroid: boolean;\n\n\t/**\n\t * Indicates that the application is running in a browser using the Blink engine.\n\t */\n\treadonly isBlink: boolean;\n\n\t/**\n\t * Environment features information.\n\t */\n\treadonly features: EnvFeaturesType;\n}\n\nexport interface EnvFeaturesType {\n\n\t/**\n\t * Indicates that the environment supports ES2018 Unicode property escapes — like `\\p{P}` or `\\p{L}`.\n\t * More information about unicode properties might be found\n\t * [in Unicode Standard Annex #44](https://www.unicode.org/reports/tr44/#GC_Values_Table).\n\t */\n\treadonly isRegExpUnicodePropertySupported: boolean;\n}\n\n/**\n * A namespace containing environment and browser information.\n */\nconst env: EnvType = {\n\tisMac: isMac( userAgent ),\n\n\tisWindows: isWindows( userAgent ),\n\n\tisGecko: isGecko( userAgent ),\n\n\tisSafari: isSafari( userAgent ),\n\n\tisiOS: isiOS( userAgent ),\n\n\tisAndroid: isAndroid( userAgent ),\n\n\tisBlink: isBlink( userAgent ),\n\n\tfeatures: {\n\t\tisRegExpUnicodePropertySupported: isRegExpUnicodePropertySupported()\n\t}\n};\n\nexport default env;\n\n/**\n * Checks if User Agent represented by the string is running on Macintosh.\n *\n * @param userAgent **Lowercase** `navigator.userAgent` string.\n * @returns Whether User Agent is running on Macintosh or not.\n */\nexport function isMac( userAgent: string ): boolean {\n\treturn userAgent.indexOf( 'macintosh' ) > -1;\n}\n\n/**\n * Checks if User Agent represented by the string is running on Windows.\n *\n * @param userAgent **Lowercase** `navigator.userAgent` string.\n * @returns Whether User Agent is running on Windows or not.\n */\nexport function isWindows( userAgent: string ): boolean {\n\treturn userAgent.indexOf( 'windows' ) > -1;\n}\n\n/**\n * Checks if User Agent represented by the string is Firefox (Gecko).\n *\n * @param userAgent **Lowercase** `navigator.userAgent` string.\n * @returns Whether User Agent is Firefox or not.\n */\nexport function isGecko( userAgent: string ): boolean {\n\treturn !!userAgent.match( /gecko\\/\\d+/ );\n}\n\n/**\n * Checks if User Agent represented by the string is Safari.\n *\n * @param userAgent **Lowercase** `navigator.userAgent` string.\n * @returns Whether User Agent is Safari or not.\n */\nexport function isSafari( userAgent: string ): boolean {\n\treturn userAgent.indexOf( ' applewebkit/' ) > -1 && userAgent.indexOf( 'chrome' ) === -1;\n}\n\n/**\n * Checks if User Agent represented by the string is running in iOS.\n *\n * @param userAgent **Lowercase** `navigator.userAgent` string.\n * @returns Whether User Agent is running in iOS or not.\n */\nexport function isiOS( userAgent: string ): boolean {\n\t// \"Request mobile site\" || \"Request desktop site\".\n\treturn !!userAgent.match( /iphone|ipad/i ) || ( isMac( userAgent ) && navigator.maxTouchPoints > 0 );\n}\n\n/**\n * Checks if User Agent represented by the string is Android mobile device.\n *\n * @param userAgent **Lowercase** `navigator.userAgent` string.\n * @returns Whether User Agent is Safari or not.\n */\nexport function isAndroid( userAgent: string ): boolean {\n\treturn userAgent.indexOf( 'android' ) > -1;\n}\n\n/**\n * Checks if User Agent represented by the string is Blink engine.\n *\n * @param userAgent **Lowercase** `navigator.userAgent` string.\n * @returns Whether User Agent is Blink engine or not.\n */\nexport function isBlink( userAgent: string ): boolean {\n\t// The Edge browser before switching to the Blink engine used to report itself as Chrome (and \"Edge/\")\n\t// but after switching to the Blink it replaced \"Edge/\" with \"Edg/\".\n\treturn userAgent.indexOf( 'chrome/' ) > -1 && userAgent.indexOf( 'edge/' ) < 0;\n}\n\n/**\n * Checks if the current environment supports ES2018 Unicode properties like `\\p{P}` or `\\p{L}`.\n * More information about unicode properties might be found\n * [in Unicode Standard Annex #44](https://www.unicode.org/reports/tr44/#GC_Values_Table).\n */\nexport function isRegExpUnicodePropertySupported(): boolean {\n\tlet isSupported = false;\n\n\t// Feature detection for Unicode properties. Added in ES2018. Currently Firefox does not support it.\n\t// See https://github.com/ckeditor/ckeditor5-mention/issues/44#issuecomment-487002174.\n\n\ttry {\n\t\t// Usage of regular expression literal cause error during build (ckeditor/ckeditor5-dev#534).\n\t\tisSupported = 'ć'.search( new RegExp( '[\\\\p{L}]', 'u' ) ) === 0;\n\t} catch ( error ) {\n\t\t// Firefox throws a SyntaxError when the group is unsupported.\n\t}\n\n\treturn isSupported;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport type { DiffResult } from './diff';\nimport type { Change } from './difftochanges';\n\n/**\n * @module utils/fastdiff\n */\n\n/**\n * Finds positions of the first and last change in the given string/array and generates a set of changes:\n *\n * ```ts\n * fastDiff( '12a', '12xyza' );\n * // [ { index: 2, type: 'insert', values: [ 'x', 'y', 'z' ] } ]\n *\n * fastDiff( '12a', '12aa' );\n * // [ { index: 3, type: 'insert', values: [ 'a' ] } ]\n *\n * fastDiff( '12xyza', '12a' );\n * // [ { index: 2, type: 'delete', howMany: 3 } ]\n *\n * fastDiff( [ '1', '2', 'a', 'a' ], [ '1', '2', 'a' ] );\n * // [ { index: 3, type: 'delete', howMany: 1 } ]\n *\n * fastDiff( [ '1', '2', 'a', 'b', 'c', '3' ], [ '2', 'a', 'b' ] );\n * // [ { index: 0, type: 'insert', values: [ '2', 'a', 'b' ] }, { index: 3, type: 'delete', howMany: 6 } ]\n * ```\n *\n * Passed arrays can contain any type of data, however to compare them correctly custom comparator function\n * should be passed as a third parameter:\n *\n * ```ts\n * fastDiff( [ { value: 1 }, { value: 2 } ], [ { value: 1 }, { value: 3 } ], ( a, b ) => {\n * \treturn a.value === b.value;\n * } );\n * // [ { index: 1, type: 'insert', values: [ { value: 3 } ] }, { index: 2, type: 'delete', howMany: 1 } ]\n * ```\n *\n * The resulted set of changes can be applied to the input in order to transform it into the output, for example:\n *\n * ```ts\n * let input = '12abc3';\n * const output = '2ab';\n * const changes = fastDiff( input, output );\n *\n * changes.forEach( change => {\n * \tif ( change.type == 'insert' ) {\n * \t\tinput = input.substring( 0, change.index ) + change.values.join( '' ) + input.substring( change.index );\n * \t} else if ( change.type == 'delete' ) {\n * \t\tinput = input.substring( 0, change.index ) + input.substring( change.index + change.howMany );\n * \t}\n * } );\n *\n * // input equals output now\n * ```\n *\n * or in case of arrays:\n *\n * ```ts\n * let input = [ '1', '2', 'a', 'b', 'c', '3' ];\n * const output = [ '2', 'a', 'b' ];\n * const changes = fastDiff( input, output );\n *\n * changes.forEach( change => {\n * \tif ( change.type == 'insert' ) {\n * \t\tinput = input.slice( 0, change.index ).concat( change.values, input.slice( change.index ) );\n * \t} else if ( change.type == 'delete' ) {\n * \t\tinput = input.slice( 0, change.index ).concat( input.slice( change.index + change.howMany ) );\n * \t}\n * } );\n *\n * // input equals output now\n * ```\n *\n * By passing `true` as the fourth parameter (`atomicChanges`) the output of this function will become compatible with\n * the {@link module:utils/diff~diff `diff()`} function:\n *\n * ```ts\n * fastDiff( '12a', '12xyza', undefined, true );\n * // [ 'equal', 'equal', 'insert', 'insert', 'insert', 'equal' ]\n * ```\n *\n * The default output format of this function is compatible with the output format of\n * {@link module:utils/difftochanges~diffToChanges `diffToChanges()`}. The `diffToChanges()` input format is, in turn,\n * compatible with the output of {@link module:utils/diff~diff `diff()`}:\n *\n * ```ts\n * const a = '1234';\n * const b = '12xyz34';\n *\n * // Both calls will return the same results (grouped changes format).\n * fastDiff( a, b );\n * diffToChanges( diff( a, b ) );\n *\n * // Again, both calls will return the same results (atomic changes format).\n * fastDiff( a, b, undefined, true );\n * diff( a, b );\n * ```\n *\n * @typeParam T The type of array elements.\n * @typeParam AtomicChanges The type of `atomicChanges` parameter (selects the result type).\n * @param a Input array or string.\n * @param b Input array or string.\n * @param cmp Optional function used to compare array values, by default `===` (strict equal operator) is used.\n * @param atomicChanges Whether an array of `inset|delete|equal` operations should\n * be returned instead of changes set. This makes this function compatible with {@link module:utils/diff~diff `diff()`}.\n * Defaults to `false`.\n * @returns Array of changes. The elements are either {@link module:utils/diff~DiffResult} or {@link module:utils/difftochanges~Change},\n * depending on `atomicChanges` parameter.\n */\nexport default function fastDiff<T, AtomicChanges extends boolean = false>(\n\ta: ArrayLike<T>,\n\tb: ArrayLike<T>,\n\tcmp?: ( a: T, b: T ) => boolean,\n\tatomicChanges?: AtomicChanges\n): Array<AtomicChanges extends true ? DiffResult : Change<T>> {\n\t// Set the comparator function.\n\tcmp = cmp || function( a, b ) {\n\t\treturn a === b;\n\t};\n\n\t// Convert the string (or any array-like object - eg. NodeList) to an array by using the slice() method because,\n\t// unlike Array.from(), it returns array of UTF-16 code units instead of the code points of a string.\n\t// One code point might be a surrogate pair of two code units. All text offsets are expected to be in code units.\n\t// See ckeditor/ckeditor5#3147.\n\t//\n\t// We need to make sure here that fastDiff() works identical to diff().\n\tconst arrayA: Array<T> = Array.isArray( a ) ? a : Array.prototype.slice.call( a );\n\tconst arrayB: Array<T> = Array.isArray( b ) ? b : Array.prototype.slice.call( b );\n\n\t// Find first and last change.\n\tconst changeIndexes = findChangeBoundaryIndexes( arrayA, arrayB, cmp );\n\n\t// Transform into changes array.\n\tconst result = atomicChanges ?\n\t\tchangeIndexesToAtomicChanges( changeIndexes, arrayB.length ) :\n\t\tchangeIndexesToChanges( arrayB, changeIndexes );\n\n\treturn result as any;\n}\n\n/**\n * Finds position of the first and last change in the given arrays. For example:\n *\n * ```ts\n * const indexes = findChangeBoundaryIndexes( [ '1', '2', '3', '4' ], [ '1', '3', '4', '2', '4' ] );\n * console.log( indexes ); // { firstIndex: 1, lastIndexOld: 3, lastIndexNew: 4 }\n * ```\n *\n * The above indexes means that in the first array the modified part is `1[23]4` and in the second array it is `1[342]4`.\n * Based on such indexes, array with `insert`/`delete` operations which allows transforming first value into the second one\n * can be generated.\n */\nfunction findChangeBoundaryIndexes<T>( arr1: ReadonlyArray<T>, arr2: ReadonlyArray<T>, cmp: ( a: T, b: T ) => boolean ): ChangeIndexes {\n\t// Find the first difference between passed values.\n\tconst firstIndex = findFirstDifferenceIndex( arr1, arr2, cmp );\n\n\t// If arrays are equal return -1 indexes object.\n\tif ( firstIndex === -1 ) {\n\t\treturn { firstIndex: -1, lastIndexOld: -1, lastIndexNew: -1 };\n\t}\n\n\t// Remove the common part of each value and reverse them to make it simpler to find the last difference between them.\n\tconst oldArrayReversed = cutAndReverse( arr1, firstIndex );\n\tconst newArrayReversed = cutAndReverse( arr2, firstIndex );\n\n\t// Find the first difference between reversed values.\n\t// It should be treated as \"how many elements from the end the last difference occurred\".\n\t//\n\t// For example:\n\t//\n\t// \t\t\t\tinitial\t->\tafter cut\t-> reversed:\n\t// oldValue:\t'321ba'\t->\t'21ba'\t\t-> 'ab12'\n\t// newValue:\t'31xba'\t->\t'1xba'\t\t-> 'abx1'\n\t// lastIndex:\t\t\t\t\t\t\t-> 2\n\t//\n\t// So the last change occurred two characters from the end of the arrays.\n\tconst lastIndex = findFirstDifferenceIndex( oldArrayReversed, newArrayReversed, cmp );\n\n\t// Use `lastIndex` to calculate proper offset, starting from the beginning (`lastIndex` kind of starts from the end).\n\tconst lastIndexOld = arr1.length - lastIndex;\n\tconst lastIndexNew = arr2.length - lastIndex;\n\n\treturn { firstIndex, lastIndexOld, lastIndexNew };\n}\n\n/**\n * Returns a first index on which given arrays differ. If both arrays are the same, -1 is returned.\n */\nfunction findFirstDifferenceIndex<T>( arr1: ReadonlyArray<T>, arr2: ReadonlyArray<T>, cmp: ( a: T, b: T ) => boolean ): number {\n\tfor ( let i = 0; i < Math.max( arr1.length, arr2.length ); i++ ) {\n\t\tif ( arr1[ i ] === undefined || arr2[ i ] === undefined || !cmp( arr1[ i ], arr2[ i ] ) ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\n\treturn -1; // Return -1 if arrays are equal.\n}\n\n/**\n * Returns a copy of the given array with `howMany` elements removed starting from the beginning and in reversed order.\n *\n * @param arr Array to be processed.\n * @param howMany How many elements from array beginning to remove.\n * @returns Shortened and reversed array.\n */\nfunction cutAndReverse<T>( arr: ReadonlyArray<T>, howMany: number ): Array<T> {\n\treturn arr.slice( howMany ).reverse();\n}\n\n/**\n * Generates changes array based on change indexes from `findChangeBoundaryIndexes` function. This function will\n * generate array with 0 (no changes), 1 (deletion or insertion) or 2 records (insertion and deletion).\n *\n * @param newArray New array for which change indexes were calculated.\n * @param changeIndexes Change indexes object from `findChangeBoundaryIndexes` function.\n * @returns Array of changes compatible with {@link module:utils/difftochanges~diffToChanges} format.\n */\nfunction changeIndexesToChanges<T>( newArray: ReadonlyArray<T>, changeIndexes: ChangeIndexes ): Array<Change<T>> {\n\tconst result: Array<Change<T>> = [];\n\tconst { firstIndex, lastIndexOld, lastIndexNew } = changeIndexes;\n\n\t// Order operations as 'insert', 'delete' array to keep compatibility with {@link module:utils/difftochanges~diffToChanges}\n\t// in most cases. However, 'diffToChanges' does not stick to any order so in some cases\n\t// (for example replacing '12345' with 'abcd') it will generate 'delete', 'insert' order.\n\tif ( lastIndexNew - firstIndex > 0 ) {\n\t\tresult.push( {\n\t\t\tindex: firstIndex,\n\t\t\ttype: 'insert',\n\t\t\tvalues: newArray.slice( firstIndex, lastIndexNew )\n\t\t} );\n\t}\n\n\tif ( lastIndexOld - firstIndex > 0 ) {\n\t\tresult.push( {\n\t\t\tindex: firstIndex + ( lastIndexNew - firstIndex ), // Increase index of what was inserted.\n\t\t\ttype: 'delete',\n\t\t\thowMany: lastIndexOld - firstIndex\n\t\t} );\n\t}\n\n\treturn result;\n}\n\n/**\n * Generates array with set `equal|insert|delete` operations based on change indexes from `findChangeBoundaryIndexes` function.\n *\n * @param changeIndexes Change indexes object from `findChangeBoundaryIndexes` function.\n * @param newLength Length of the new array on which `findChangeBoundaryIndexes` calculated change indexes.\n * @returns Array of changes compatible with {@link module:utils/diff~diff} format.\n */\nfunction changeIndexesToAtomicChanges( changeIndexes: ChangeIndexes, newLength: number ): Array<DiffResult> {\n\tconst { firstIndex, lastIndexOld, lastIndexNew } = changeIndexes;\n\n\t// No changes.\n\tif ( firstIndex === -1 ) {\n\t\treturn Array( newLength ).fill( 'equal' );\n\t}\n\n\tlet result: Array<DiffResult> = [];\n\n\tif ( firstIndex > 0 ) {\n\t\tresult = result.concat( Array( firstIndex ).fill( 'equal' ) );\n\t}\n\n\tif ( lastIndexNew - firstIndex > 0 ) {\n\t\tresult = result.concat( Array( lastIndexNew - firstIndex ).fill( 'insert' ) );\n\t}\n\n\tif ( lastIndexOld - firstIndex > 0 ) {\n\t\tresult = result.concat( Array( lastIndexOld - firstIndex ).fill( 'delete' ) );\n\t}\n\n\tif ( lastIndexNew < newLength ) {\n\t\tresult = result.concat( Array( newLength - lastIndexNew ).fill( 'equal' ) );\n\t}\n\n\treturn result;\n}\n\n/**\n * Indexes of the first and the last change in the given arrays.\n */\ninterface ChangeIndexes {\n\n\t/**\n\t * Index of the first change in both values (always the same for both).\n\t */\n\tfirstIndex: number;\n\n\t/**\n\t * Index of the last common value in `arr1`.\n\t */\n\tlastIndexOld: number;\n\n\t/**\n\t * Index of the last common value in `arr2`.\n\t */\n\tlastIndexNew: number;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/diff\n */\n\nimport fastDiff from './fastdiff';\n\n// The following code is based on the \"O(NP) Sequence Comparison Algorithm\"\n// by Sun Wu, Udi Manber, Gene Myers, Webb Miller.\n\n/**\n * Calculates the difference between two arrays or strings producing an array containing a list of changes\n * necessary to transform input into output.\n *\n * ```ts\n * diff( 'aba', 'acca' ); // [ 'equal', 'insert', 'insert', 'delete', 'equal' ]\n * ```\n *\n * This function is based on the \"O(NP) Sequence Comparison Algorithm\" by Sun Wu, Udi Manber, Gene Myers, Webb Miller.\n * Unfortunately, while it gives the most precise results, its to complex for longer strings/arrow (above 200 items).\n * Therefore, `diff()` automatically switches to {@link module:utils/fastdiff~fastDiff `fastDiff()`} when detecting\n * such a scenario. The return formats of both functions are identical.\n *\n * @param a Input array or string.\n * @param b Output array or string.\n * @param cmp Optional function used to compare array values, by default === is used.\n * @returns Array of changes.\n */\nexport default function diff<T>(\n\ta: ArrayLike<T>,\n\tb: ArrayLike<T>,\n\tcmp?: ( a: T, b: T ) => boolean\n): Array<DiffResult> {\n\t// Set the comparator function.\n\tcmp = cmp || function( a, b ) {\n\t\treturn a === b;\n\t};\n\n\tconst aLength = a.length;\n\tconst bLength = b.length;\n\n\t// Perform `fastDiff` for longer strings/arrays (see #269).\n\tif ( aLength > 200 || bLength > 200 || aLength + bLength > 300 ) {\n\t\treturn diff.fastDiff( a, b, cmp, true );\n\t}\n\n\t// Temporary action type statics.\n\tlet _insert: DiffResult, _delete: DiffResult;\n\n\t// Swapped the arrays to use the shorter one as the first one.\n\tif ( bLength < aLength ) {\n\t\tconst tmp = a;\n\n\t\ta = b;\n\t\tb = tmp;\n\n\t\t// We swap the action types as well.\n\t\t_insert = 'delete';\n\t\t_delete = 'insert';\n\t} else {\n\t\t_insert = 'insert';\n\t\t_delete = 'delete';\n\t}\n\n\tconst m = a.length;\n\tconst n = b.length;\n\tconst delta = n - m;\n\n\t// Edit scripts, for each diagonal.\n\tconst es: { [ k: number ]: Array<DiffResult> } = {};\n\t// Furthest points, the furthest y we can get on each diagonal.\n\tconst fp: { [ k: number]: number } = {};\n\n\tfunction snake( k: number ): number {\n\t\t// We use -1 as an alternative below to handle initial values ( instead of filling the fp with -1 first ).\n\t\t// Furthest points (y) on the diagonal below k.\n\t\tconst y1 = ( fp[ k - 1 ] !== undefined ? fp[ k - 1 ] : -1 ) + 1;\n\t\t// Furthest points (y) on the diagonal above k.\n\t\tconst y2 = fp[ k + 1 ] !== undefined ? fp[ k + 1 ] : -1;\n\t\t// The way we should go to get further.\n\t\tconst dir = y1 > y2 ? -1 : 1;\n\n\t\t// Clone previous changes array (if any).\n\t\tif ( es[ k + dir ] ) {\n\t\t\tes[ k ] = es[ k + dir ].slice( 0 );\n\t\t}\n\n\t\t// Create changes array.\n\t\tif ( !es[ k ] ) {\n\t\t\tes[ k ] = [];\n\t\t}\n\n\t\t// Push the action.\n\t\tes[ k ].push( y1 > y2 ? _insert : _delete );\n\n\t\t// Set the beginning coordinates.\n\t\tlet y = Math.max( y1, y2 );\n\t\tlet x = y - k;\n\n\t\t// Traverse the diagonal as long as the values match.\n\t\twhile ( x < m && y < n && cmp!( a[ x ], b[ y ] ) ) {\n\t\t\tx++;\n\t\t\ty++;\n\t\t\t// Push no change action.\n\t\t\tes[ k ].push( 'equal' );\n\t\t}\n\n\t\treturn y;\n\t}\n\n\tlet p = 0;\n\tlet k;\n\n\t// Traverse the graph until we reach the end of the longer string.\n\tdo {\n\t\t// Updates furthest points and edit scripts for diagonals below delta.\n\t\tfor ( k = -p; k < delta; k++ ) {\n\t\t\tfp[ k ] = snake( k );\n\t\t}\n\n\t\t// Updates furthest points and edit scripts for diagonals above delta.\n\t\tfor ( k = delta + p; k > delta; k-- ) {\n\t\t\tfp[ k ] = snake( k );\n\t\t}\n\n\t\t// Updates furthest point and edit script for the delta diagonal.\n\t\t// note that the delta diagonal is the one which goes through the sink (m, n).\n\t\tfp[ delta ] = snake( delta );\n\n\t\tp++;\n\t} while ( fp[ delta ] !== n );\n\n\t// Return the final list of edit changes.\n\t// We remove the first item that represents the action for the injected nulls.\n\treturn es[ delta ].slice( 1 );\n}\n\n// Store the API in static property to easily overwrite it in tests.\n// Too bad dependency injection does not work in Webpack + ES 6 (const) + Babel.\ndiff.fastDiff = fastDiff;\n\n/**\n * The element of the result of {@link module:utils/diff~diff} function.\n */\nexport type DiffResult = 'equal' | 'insert' | 'delete';\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/spy\n */\n\n/**\n * Creates a spy function (ala Sinon.js) that can be used to inspect call to it.\n *\n * The following are the present features:\n *\n * * spy.called: property set to `true` if the function has been called at least once.\n *\n * @returns The spy function.\n */\nfunction spy(): { (): void; called?: boolean } {\n\treturn function spy() {\n\t\t( spy as any ).called = true;\n\t};\n}\n\nexport default spy;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/eventinfo\n */\n\nimport spy from './spy';\n\n/**\n * The event object passed to event callbacks. It is used to provide information about the event as well as a tool to\n * manipulate it.\n */\nexport default class EventInfo<TName extends string = string, TReturn = unknown> {\n\t/**\n\t * The object that fired the event.\n\t */\n\tpublic readonly source: object;\n\n\t/**\n\t * The event name.\n\t */\n\tpublic readonly name: TName;\n\n\t/**\n\t * Path this event has followed. See {@link module:utils/emittermixin~Emitter#delegate}.\n\t */\n\tpublic path: Array<object>;\n\n\t/**\n\t * Stops the event emitter to call further callbacks for this event interaction.\n\t */\n\tpublic readonly stop: { (): void; called?: boolean };\n\n\t/**\n\t * Removes the current callback from future interactions of this event.\n\t */\n\tpublic readonly off: { (): void; called?: boolean };\n\n\t/**\n\t * The value which will be returned by {@link module:utils/emittermixin~Emitter#fire}.\n\t *\n\t * It's `undefined` by default and can be changed by an event listener:\n\t *\n\t * ```ts\n\t * dataController.fire( 'getSelectedContent', ( evt ) => {\n\t * \t// This listener will make `dataController.fire( 'getSelectedContent' )`\n\t * \t// always return an empty DocumentFragment.\n\t * \tevt.return = new DocumentFragment();\n\t *\n\t * \t// Make sure no other listeners are executed.\n\t * \tevt.stop();\n\t * } );\n\t * ```\n\t */\n\tpublic return: TReturn | undefined;\n\n\t/**\n\t * @param source The emitter.\n\t * @param name The event name.\n\t */\n\tconstructor( source: object, name: TName ) {\n\t\tthis.source = source;\n\t\tthis.name = name;\n\t\tthis.path = [];\n\n\t\t// The following methods are defined in the constructor because they must be re-created per instance.\n\t\tthis.stop = spy();\n\t\tthis.off = spy();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/uid\n */\n\n/**\n * A hash table of hex numbers to avoid using toString() in uid() which is costly.\n * [ '00', '01', '02', ..., 'fe', 'ff' ]\n */\nconst HEX_NUMBERS = new Array( 256 ).fill( '' )\n\t.map( ( _, index ) => ( '0' + ( index ).toString( 16 ) ).slice( -2 ) );\n\n/**\n * Returns a unique id. The id starts with an \"e\" character and a randomly generated string of\n * 32 alphanumeric characters.\n *\n * **Note**: The characters the unique id is built from correspond to the hex number notation\n * (from \"0\" to \"9\", from \"a\" to \"f\"). In other words, each id corresponds to an \"e\" followed\n * by 16 8-bit numbers next to each other.\n *\n * @returns An unique id string.\n */\nexport default function uid(): string {\n\t// Let's create some positive random 32bit integers first.\n\t//\n\t// 1. Math.random() is a float between 0 and 1.\n\t// 2. 0x100000000 is 2^32 = 4294967296.\n\t// 3. >>> 0 enforces integer (in JS all numbers are floating point).\n\t//\n\t// For instance:\n\t//\t\tMath.random() * 0x100000000 = 3366450031.853859\n\t// but\n\t//\t\tMath.random() * 0x100000000 >>> 0 = 3366450031.\n\tconst r1 = Math.random() * 0x100000000 >>> 0;\n\tconst r2 = Math.random() * 0x100000000 >>> 0;\n\tconst r3 = Math.random() * 0x100000000 >>> 0;\n\tconst r4 = Math.random() * 0x100000000 >>> 0;\n\n\t// Make sure that id does not start with number.\n\treturn 'e' +\n\t\tHEX_NUMBERS[ r1 >> 0 & 0xFF ] +\n\t\tHEX_NUMBERS[ r1 >> 8 & 0xFF ] +\n\t\tHEX_NUMBERS[ r1 >> 16 & 0xFF ] +\n\t\tHEX_NUMBERS[ r1 >> 24 & 0xFF ] +\n\t\tHEX_NUMBERS[ r2 >> 0 & 0xFF ] +\n\t\tHEX_NUMBERS[ r2 >> 8 & 0xFF ] +\n\t\tHEX_NUMBERS[ r2 >> 16 & 0xFF ] +\n\t\tHEX_NUMBERS[ r2 >> 24 & 0xFF ] +\n\t\tHEX_NUMBERS[ r3 >> 0 & 0xFF ] +\n\t\tHEX_NUMBERS[ r3 >> 8 & 0xFF ] +\n\t\tHEX_NUMBERS[ r3 >> 16 & 0xFF ] +\n\t\tHEX_NUMBERS[ r3 >> 24 & 0xFF ] +\n\t\tHEX_NUMBERS[ r4 >> 0 & 0xFF ] +\n\t\tHEX_NUMBERS[ r4 >> 8 & 0xFF ] +\n\t\tHEX_NUMBERS[ r4 >> 16 & 0xFF ] +\n\t\tHEX_NUMBERS[ r4 >> 24 & 0xFF ];\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/priorities\n */\n\n/**\n * String representing a priority value.\n */\nexport type PriorityString = 'highest' | 'high' | 'normal' | 'low' | 'lowest' | number;\n\n// This interface exists to make our API pages more readable.\n/**\n * Provides group of constants to use instead of hardcoding numeric priority values.\n */\nexport interface PrioritiesType {\n\n\t/**\n\t * Converts a string with priority name to it's numeric value. If `Number` is given, it just returns it.\n\t *\n\t * @param priority Priority to convert.\n\t * @returns Converted priority.\n\t */\n\tget( priority?: PriorityString ): number;\n\n\treadonly highest: number;\n\treadonly high: number;\n\treadonly normal: number;\n\treadonly low: number;\n\treadonly lowest: number;\n}\n\n/**\n * Provides group of constants to use instead of hardcoding numeric priority values.\n */\nconst priorities: PrioritiesType = {\n\tget( priority: PriorityString = 'normal' ): number {\n\t\tif ( typeof priority != 'number' ) {\n\t\t\treturn this[ priority ] || this.normal;\n\t\t} else {\n\t\t\treturn priority;\n\t\t}\n\t},\n\n\thighest: 100000,\n\thigh: 1000,\n\tnormal: 0,\n\tlow: -1000,\n\tlowest: -100000\n};\n\nexport default priorities;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport priorities, { type PriorityString } from './priorities';\n\n/**\n * @module utils/inserttopriorityarray\n */\n\n/**\n * The priority object descriptor.\n *\n * ```ts\n * const objectWithPriority = {\n * \tpriority: 'high'\n * }\n * ```\n */\nexport interface ObjectWithPriority {\n\n\t/**\n\t * Priority of the object.\n\t */\n\tpriority: PriorityString;\n}\n\n/**\n * Inserts any object with priority at correct index by priority so registered objects are always sorted from highest to lowest priority.\n *\n * @param objects Array of objects with priority to insert object to.\n * @param objectToInsert Object with `priority` property.\n */\nexport default function insertToPriorityArray<T extends ObjectWithPriority>( objects: Array<T>, objectToInsert: T ): void {\n\tconst priority = priorities.get( objectToInsert.priority );\n\n\tfor ( let i = 0; i < objects.length; i++ ) {\n\t\tif ( priorities.get( objects[ i ].priority ) < priority ) {\n\t\t\tobjects.splice( i, 0, objectToInsert );\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\tobjects.push( objectToInsert );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/ckeditorerror\n */\n\n/* globals console */\n\n/**\n * URL to the documentation with error codes.\n */\nexport const DOCUMENTATION_URL = 'https://ckeditor.com/docs/ckeditor5/latest/support/error-codes.html';\n\n/**\n * The CKEditor error class.\n *\n * You should throw `CKEditorError` when:\n *\n * * An unexpected situation occurred and the editor (most probably) will not work properly. Such exception will be handled\n * by the {@link module:watchdog/watchdog~Watchdog watchdog} (if it is integrated),\n * * If the editor is incorrectly integrated or the editor API is used in the wrong way. This way you will give\n * feedback to the developer as soon as possible. Keep in mind that for common integration issues which should not\n * stop editor initialization (like missing upload adapter, wrong name of a toolbar component) we use\n * {@link module:utils/ckeditorerror~logWarning `logWarning()`} and\n * {@link module:utils/ckeditorerror~logError `logError()`}\n * to improve developers experience and let them see the a working editor as soon as possible.\n *\n * ```ts\n * /**\n * * Error thrown when a plugin cannot be loaded due to JavaScript errors, lack of plugins with a given name, etc.\n * *\n * * @error plugin-load\n * * @param pluginName The name of the plugin that could not be loaded.\n * * @param moduleName The name of the module which tried to load this plugin.\n * *\\/\n * throw new CKEditorError( 'plugin-load', {\n * \tpluginName: 'foo',\n * \tmoduleName: 'bar'\n * } );\n * ```\n */\nexport default class CKEditorError extends Error {\n\t/**\n\t * A context of the error by which the Watchdog is able to determine which editor crashed.\n\t */\n\tpublic readonly context: object | null | undefined;\n\n\t/**\n\t * The additional error data passed to the constructor. Undefined if none was passed.\n\t */\n\tpublic readonly data?: object;\n\n\t/**\n\t * Creates an instance of the CKEditorError class.\n\t *\n\t * @param errorName The error id in an `error-name` format. A link to this error documentation page will be added\n\t * to the thrown error's `message`.\n\t * @param context A context of the error by which the {@link module:watchdog/watchdog~Watchdog watchdog}\n\t * is able to determine which editor crashed. It should be an editor instance or a property connected to it. It can be also\n\t * a `null` value if the editor should not be restarted in case of the error (e.g. during the editor initialization).\n\t * The error context should be checked using the `areConnectedThroughProperties( editor, context )` utility\n\t * to check if the object works as the context.\n\t * @param data Additional data describing the error. A stringified version of this object\n\t * will be appended to the error message, so the data are quickly visible in the console. The original\n\t * data object will also be later available under the {@link #data} property.\n\t */\n\tconstructor( errorName: string, context?: object | null, data?: object ) {\n\t\tsuper( getErrorMessage( errorName, data ) );\n\n\t\tthis.name = 'CKEditorError';\n\t\tthis.context = context;\n\t\tthis.data = data;\n\t}\n\n\t/**\n\t * Checks if the error is of the `CKEditorError` type.\n\t */\n\tpublic is( type: string ): boolean {\n\t\treturn type === 'CKEditorError';\n\t}\n\n\t/**\n\t * A utility that ensures that the thrown error is a {@link module:utils/ckeditorerror~CKEditorError} one.\n\t * It is useful when combined with the {@link module:watchdog/watchdog~Watchdog} feature, which can restart the editor in case\n\t * of a {@link module:utils/ckeditorerror~CKEditorError} error.\n\t *\n\t * @param err The error to rethrow.\n\t * @param context An object connected through properties with the editor instance. This context will be used\n\t * by the watchdog to verify which editor should be restarted.\n\t */\n\tpublic static rethrowUnexpectedError( err: Error, context: object ): never {\n\t\tif ( ( err as any ).is && ( err as any ).is( 'CKEditorError' ) ) {\n\t\t\tthrow err;\n\t\t}\n\n\t\t/**\n\t\t * An unexpected error occurred inside the CKEditor 5 codebase. This error will look like the original one\n\t\t * to make the debugging easier.\n\t\t *\n\t\t * This error is only useful when the editor is initialized using the {@link module:watchdog/watchdog~Watchdog} feature.\n\t\t * In case of such error (or any {@link module:utils/ckeditorerror~CKEditorError} error) the watchdog should restart the editor.\n\t\t *\n\t\t * @error unexpected-error\n\t\t */\n\t\tconst error = new CKEditorError( err.message, context );\n\n\t\t// Restore the original stack trace to make the error look like the original one.\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/5595 for more details.\n\t\terror.stack = err.stack;\n\n\t\tthrow error;\n\t}\n}\n\n/**\n * Logs a warning to the console with a properly formatted message and adds a link to the documentation.\n * Use whenever you want to log a warning to the console.\n *\n * ```ts\n * /**\n * * There was a problem processing the configuration of the toolbar. The item with the given\n * * name does not exist, so it was omitted when rendering the toolbar.\n * *\n * * @error toolbarview-item-unavailable\n * * @param {String} name The name of the component.\n * *\\/\n * logWarning( 'toolbarview-item-unavailable', { name } );\n * ```\n *\n * See also {@link module:utils/ckeditorerror~CKEditorError} for an explanation when to throw an error and when to log\n * a warning or an error to the console.\n *\n * @param errorName The error name to be logged.\n * @param data Additional data to be logged.\n */\nexport function logWarning( errorName: string, data?: object ): void {\n\tconsole.warn( ...formatConsoleArguments( errorName, data ) );\n}\n\n/**\n * Logs an error to the console with a properly formatted message and adds a link to the documentation.\n * Use whenever you want to log an error to the console.\n *\n * ```ts\n * /**\n * * There was a problem processing the configuration of the toolbar. The item with the given\n * * name does not exist, so it was omitted when rendering the toolbar.\n * *\n * * @error toolbarview-item-unavailable\n * * @param {String} name The name of the component.\n * *\\/\n * logError( 'toolbarview-item-unavailable', { name } );\n * ```\n *\n * **Note**: In most cases logging a warning using {@link module:utils/ckeditorerror~logWarning} is enough.\n *\n * See also {@link module:utils/ckeditorerror~CKEditorError} for an explanation when to use each method.\n *\n * @param errorName The error name to be logged.\n * @param data Additional data to be logged.\n */\nexport function logError( errorName: string, data?: object ): void {\n\tconsole.error( ...formatConsoleArguments( errorName, data ) );\n}\n\n/**\n * Returns formatted link to documentation message.\n */\nfunction getLinkToDocumentationMessage( errorName: string ): string {\n\treturn `\\nRead more: ${ DOCUMENTATION_URL }#error-${ errorName }`;\n}\n\n/**\n * Returns formatted error message.\n */\nfunction getErrorMessage( errorName: string, data?: object ): string {\n\tconst processedObjects = new WeakSet();\n\tconst circularReferencesReplacer = ( key: string, value: unknown ) => {\n\t\tif ( typeof value === 'object' && value !== null ) {\n\t\t\tif ( processedObjects.has( value ) ) {\n\t\t\t\treturn `[object ${ value.constructor.name }]`;\n\t\t\t}\n\n\t\t\tprocessedObjects.add( value );\n\t\t}\n\n\t\treturn value;\n\t};\n\n\tconst stringifiedData = data ? ` ${ JSON.stringify( data, circularReferencesReplacer ) }` : '';\n\tconst documentationLink = getLinkToDocumentationMessage( errorName );\n\n\treturn errorName + stringifiedData + documentationLink;\n}\n\n/**\n * Returns formatted console error arguments.\n */\nfunction formatConsoleArguments( errorName: string, data?: object ): Array<unknown> {\n\tconst documentationMessage = getLinkToDocumentationMessage( errorName );\n\n\treturn data ? [ errorName, data, documentationMessage ] : [ errorName, documentationMessage ];\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/version\n */\n\n/* globals window, global */\n\nimport CKEditorError from './ckeditorerror';\n\nconst version = '39.0.0';\n\nexport default version;\n\n// The second argument is not a month. It is `monthIndex` and starts from `0`.\nexport const releaseDate = new Date( 2023, 7, 2 );\n\n/* istanbul ignore next -- @preserve */\nconst windowOrGlobal = typeof window === 'object' ? window : global;\n\ndeclare global {\n\t// eslint-disable-next-line no-var\n\tvar CKEDITOR_VERSION: string;\n}\n\n/* istanbul ignore next -- @preserve */\nif ( windowOrGlobal.CKEDITOR_VERSION ) {\n\t/**\n\t * This error is thrown when due to a mistake in how CKEditor 5 was installed or initialized, some\n\t * of its modules were duplicated (evaluated and executed twice). Module duplication leads to inevitable runtime\n\t * errors.\n\t *\n\t * There are many situations in which some modules can be loaded twice. In the worst case scenario,\n\t * you may need to check your project for each of these issues and fix them all.\n\t *\n\t * # Trying to add a plugin to an existing build\n\t *\n\t * If you import an existing CKEditor 5 build and a plugin like this:\n\t *\n\t * ```ts\n\t * import ClassicEditor from '@ckeditor/ckeditor5-build-classic';\n\t * import Highlight from '@ckeditor/ckeditor5-highlight/src/highlight';\n\t * ```\n\t *\n\t * Then your project loads some CKEditor 5 packages twice. How does it happen?\n\t *\n\t * The build package contains a file which is already compiled with webpack. This means\n\t * that it contains all the necessary code from e.g. `@ckeditor/ckeditor5-engine` and `@ckeditor/ckeditor5-utils`.\n\t *\n\t * However, the `Highlight` plugin imports some of the modules from these packages, too. If you ask webpack to\n\t * build such a project, you will end up with the modules being included (and run) twice — first, because they are\n\t * included inside the build package, and second, because they are required by the `Highlight` plugin.\n\t *\n\t * Therefore, **you must never add plugins to an existing build** unless your plugin has no dependencies.\n\t *\n\t * Adding plugins to a build is done by taking the source version of this build (so, before it was built with webpack)\n\t * and adding plugins there. In this situation, webpack will know that it only needs to load each plugin once.\n\t *\n\t * Read more in the {@glink installation/plugins/installing-plugins Installing plugins} guide.\n\t *\n\t * # Confused an editor build with an editor implementation\n\t *\n\t * This scenario is very similar to the previous one, but has a different origin.\n\t *\n\t * Let's assume that you wanted to use CKEditor 5 from source, as explained in the\n\t * {@glink installation/advanced/alternative-setups/integrating-from-source-webpack \"Building from source\"} section\n\t * or in the {@glink framework/quick-start \"Quick start\"} guide of CKEditor 5 Framework.\n\t *\n\t * The correct way to do so is to import an editor and plugins and run them together like this:\n\t *\n\t * ```ts\n\t * import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';\n\t * import Essentials from '@ckeditor/ckeditor5-essentials/src/essentials';\n\t * import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';\n\t * import Bold from '@ckeditor/ckeditor5-basic-styles/src/bold';\n\t * import Italic from '@ckeditor/ckeditor5-basic-styles/src/italic';\n\t *\n\t * ClassicEditor\n\t * \t.create( document.querySelector( '#editor' ), {\n\t * \t\tplugins: [ Essentials, Paragraph, Bold, Italic ],\n\t * \t\ttoolbar: [ 'bold', 'italic' ]\n\t * \t} )\n\t * \t.then( editor => {\n\t * \t\tconsole.log( 'Editor was initialized', editor );\n\t * \t} )\n\t * \t.catch( error => {\n\t * \t\tconsole.error( error.stack );\n\t * \t} );\n\t * ```\n\t *\n\t * However, you might have mistakenly imported a build instead of the source `ClassicEditor`. In this case\n\t * your imports will look like this:\n\t *\n\t * ```ts\n\t * import ClassicEditor from '@ckeditor/ckeditor5-build-classic';\n\t * import Essentials from '@ckeditor/ckeditor5-essentials/src/essentials';\n\t * import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';\n\t * import Bold from '@ckeditor/ckeditor5-basic-styles/src/bold';\n\t * import Italic from '@ckeditor/ckeditor5-basic-styles/src/italic';\n\t * ```\n\t *\n\t * This creates the same situation as in the previous section because you use a build together with source plugins.\n\t *\n\t * Remember: `@ckeditor/ckeditor5-build-*` packages contain editor builds and `@ckeditor/ckeditor5-editor-*` contain source editors.\n\t *\n\t * # Loading two or more builds on one page\n\t *\n\t * If you use CKEditor 5 builds, you might have loaded two (or more) `ckeditor.js` files on one web page.\n\t * Check your web page for duplicated `<script>` elements or make sure your page builder/bundler includes CKEditor only once.\n\t *\n\t * If you want to use two different types of editors at once, see the\n\t * {@glink installation/advanced/using-two-editors \"Using two different editors\"}\n\t * section.\n\t *\n\t * # Using outdated packages\n\t *\n\t * Building CKEditor 5 from source requires using multiple npm packages. These packages have their dependencies\n\t * to other packages. If you use the latest version of, for example, `@ckeditor/ckeditor5-editor-classic` with\n\t * an outdated version of `@ckeditor/ckeditor5-image`, npm or yarn will need to install two different versions of\n\t * `@ckeditor/ckeditor5-core` because `@ckeditor/ckeditor5-editor-classic` and `@ckeditor/ckeditor5-image` may require\n\t * different versions of the core package.\n\t *\n\t * The solution to this issue is to update all packages to their latest version. We recommend\n\t * using tools like [`npm-check-updates`](https://www.npmjs.com/package/npm-check-updates) which simplify this process.\n\t *\n\t * # Conflicting version of dependencies\n\t *\n\t * This is a special case of the previous scenario. If you use CKEditor 5 with some third-party plugins,\n\t * it may happen that even if you use the latest versions of the official packages and the latest version of\n\t * these third-party packages, there will be a conflict between some of their dependencies.\n\t *\n\t * Such a problem can be resolved by either downgrading CKEditor 5 packages (which we do not recommend) or\n\t * asking the author of the third-party package to upgrade its depdendencies (or forking their project and doing this yourself).\n\t *\n\t * **Note:** All official CKEditor 5 packages (excluding integrations and `ckeditor5-dev-*` packages) are released in the\n\t * same major version. This is — in the `x.y.z`, the `x` is the same for all packages. This is the simplest way to check\n\t * whether you use packages coming from the same CKEditor 5 version. You can read more about versioning in the\n\t * {@glink updating/versioning-policy Versioning policy} guide.\n\t *\n\t * # Packages were duplicated in `node_modules`\n\t *\n\t * In some situations, especially when calling `npm install` multiple times, it may happen\n\t * that npm will not correctly \"deduplicate\" packages.\n\t *\n\t * Normally, npm deduplicates all packages so, for example, `@ckeditor/ckeditor5-core` is installed only once in `node_modules/`.\n\t * However, it is known to fail to do so from time to time.\n\t *\n\t * We recommend checking if any of the steps listed below help:\n\t *\n\t * * `rm -rf node_modules && npm install` to make sure you have a clean `node_modules/` directory. This step\n\t * is known to help in most cases.\n\t * * If you use `yarn.lock` or `package-lock.json`, remove it before `npm install`.\n\t * * Check whether all CKEditor 5 packages are up to date and reinstall them\n\t * if you changed anything (`rm -rf node_modules && npm install`).\n\t *\n\t * If all packages are correct and compatible with each other, the steps above are known to help. If not, you may\n\t * try to check with `npm ls` how many times packages like `@ckeditor/ckeditor5-core`, `@ckeditor/ckeditor5-engine` and\n\t *`@ckeditor/ckeditor5-utils` are installed. If more than once, verify which package causes that.\n\t *\n\t * @error ckeditor-duplicated-modules\n\t */\n\tthrow new CKEditorError(\n\t\t'ckeditor-duplicated-modules',\n\t\tnull\n\t);\n} else {\n\twindowOrGlobal.CKEDITOR_VERSION = version;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/emittermixin\n */\n\nimport EventInfo from './eventinfo';\nimport uid from './uid';\nimport priorities, { type PriorityString } from './priorities';\nimport insertToPriorityArray from './inserttopriorityarray';\nimport type { Constructor, Mixed } from './mix';\n\n// To check if component is loaded more than once.\nimport './version';\nimport CKEditorError from './ckeditorerror';\n\nconst _listeningTo = Symbol( 'listeningTo' );\nconst _emitterId = Symbol( 'emitterId' );\nconst _delegations = Symbol( 'delegations' );\n\nconst defaultEmitterClass = EmitterMixin( Object );\n\n/**\n * Mixin that injects the {@link ~Emitter events API} into its host.\n *\n * This function creates a class that inherits from the provided `base` and implements `Emitter` interface.\n *\n * ```ts\n * class BaseClass { ... }\n *\n * class MyClass extends EmitterMixin( BaseClass ) {\n * \t// This class derives from `BaseClass` and implements the `Emitter` interface.\n * }\n * ```\n *\n * Read more about the concept of emitters in the:\n * * {@glink framework/architecture/core-editor-architecture#event-system-and-observables Event system and observables}\n * section of the {@glink framework/architecture/core-editor-architecture Core editor architecture} guide.\n * * {@glink framework/deep-dive/event-system Event system} deep-dive guide.\n *\n * @label EXTENDS\n */\nexport default function EmitterMixin<Base extends Constructor>( base: Base ): Mixed<Base, Emitter>;\n\n/**\n * Mixin that injects the {@link ~Emitter events API} into its host.\n *\n * This function creates a class that implements `Emitter` interface.\n *\n * ```ts\n * class MyClass extends EmitterMixin() {\n * \t// This class implements the `Emitter` interface.\n * }\n * ```\n *\n * Read more about the concept of emitters in the:\n * * {@glink framework/architecture/core-editor-architecture#event-system-and-observables Event system and observables}\n * section of the {@glink framework/architecture/core-editor-architecture Core editor architecture} guide.\n * * {@glink framework/deep-dive/event-system Event system} deep dive guide.\n *\n * @label NO_ARGUMENTS\n */\nexport default function EmitterMixin(): {\n\tnew (): Emitter;\n\tprototype: Emitter;\n};\n\nexport default function EmitterMixin( base?: Constructor ): unknown {\n\tif ( !base ) {\n\t\treturn defaultEmitterClass;\n\t}\n\n\tabstract class Mixin extends base implements EmitterInternal {\n\t\tpublic on<TEvent extends BaseEvent>(\n\t\t\tevent: TEvent[ 'name' ],\n\t\t\tcallback: GetCallback<TEvent>,\n\t\t\toptions?: CallbackOptions\n\t\t): void {\n\t\t\tthis.listenTo( this, event, callback, options );\n\t\t}\n\n\t\tpublic once<TEvent extends BaseEvent>(\n\t\t\tevent: TEvent[ 'name' ],\n\t\t\tcallback: GetCallback<TEvent>,\n\t\t\toptions?: CallbackOptions\n\t\t): void {\n\t\t\tlet wasFired = false;\n\n\t\t\tconst onceCallback: typeof callback = ( event, ...args ) => {\n\t\t\t\t// Ensure the callback is called only once even if the callback itself leads to re-firing the event\n\t\t\t\t// (which would call the callback again).\n\t\t\t\tif ( !wasFired ) {\n\t\t\t\t\twasFired = true;\n\n\t\t\t\t\t// Go off() at the first call.\n\t\t\t\t\tevent.off();\n\n\t\t\t\t\t// Go with the original callback.\n\t\t\t\t\tcallback.call( this, event, ...args );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Make a similar on() call, simply replacing the callback.\n\t\t\tthis.listenTo( this, event, onceCallback, options );\n\t\t}\n\n\t\tpublic off( event: string, callback: Function ): void {\n\t\t\tthis.stopListening( this, event, callback );\n\t\t}\n\n\t\tpublic listenTo<TEvent extends BaseEvent>(\n\t\t\temitter: Emitter,\n\t\t\tevent: TEvent[ 'name' ],\n\t\t\tcallback: GetCallback<TEvent>,\n\t\t\toptions: CallbackOptions = {}\n\t\t): void {\n\t\t\tlet emitterInfo, eventCallbacks;\n\n\t\t\t// _listeningTo contains a list of emitters that this object is listening to.\n\t\t\t// This list has the following format:\n\t\t\t//\n\t\t\t// _listeningTo: {\n\t\t\t// emitterId: {\n\t\t\t// emitter: emitter,\n\t\t\t// callbacks: {\n\t\t\t// event1: [ callback1, callback2, ... ]\n\t\t\t// ....\n\t\t\t// }\n\t\t\t// },\n\t\t\t// ...\n\t\t\t// }\n\n\t\t\tif ( !this[ _listeningTo ] ) {\n\t\t\t\tthis[ _listeningTo ] = {};\n\t\t\t}\n\n\t\t\tconst emitters = this[ _listeningTo ]!;\n\n\t\t\tif ( !_getEmitterId( emitter ) ) {\n\t\t\t\t_setEmitterId( emitter );\n\t\t\t}\n\n\t\t\tconst emitterId = _getEmitterId( emitter )!;\n\n\t\t\tif ( !( emitterInfo = emitters[ emitterId ] ) ) {\n\t\t\t\temitterInfo = emitters[ emitterId ] = {\n\t\t\t\t\temitter,\n\t\t\t\t\tcallbacks: {}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( !( eventCallbacks = emitterInfo.callbacks[ event ] ) ) {\n\t\t\t\teventCallbacks = emitterInfo.callbacks[ event ] = [];\n\t\t\t}\n\n\t\t\teventCallbacks.push( callback );\n\n\t\t\t// Finally register the callback to the event.\n\t\t\taddEventListener( this, emitter, event, callback, options );\n\t\t}\n\n\t\tpublic stopListening( emitter?: Emitter, event?: string, callback?: Function ): void {\n\t\t\tconst emitters = this[ _listeningTo ];\n\t\t\tlet emitterId = emitter && _getEmitterId( emitter );\n\t\t\tconst emitterInfo = ( emitters && emitterId ) ? emitters[ emitterId ] : undefined;\n\t\t\tconst eventCallbacks = ( emitterInfo && event ) ? emitterInfo.callbacks[ event ] : undefined;\n\n\t\t\t// Stop if nothing has been listened.\n\t\t\tif ( !emitters || ( emitter && !emitterInfo ) || ( event && !eventCallbacks ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// All params provided. off() that single callback.\n\t\t\tif ( callback ) {\n\t\t\t\tremoveEventListener( this, emitter!, event!, callback );\n\n\t\t\t\t// We must remove callbacks as well in order to prevent memory leaks.\n\t\t\t\t// See https://github.com/ckeditor/ckeditor5/pull/8480\n\t\t\t\tconst index = eventCallbacks!.indexOf( callback );\n\n\t\t\t\tif ( index !== -1 ) {\n\t\t\t\t\tif ( eventCallbacks!.length === 1 ) {\n\t\t\t\t\t\tdelete emitterInfo!.callbacks[ event! ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tremoveEventListener( this, emitter!, event!, callback );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Only `emitter` and `event` provided. off() all callbacks for that event.\n\t\t\telse if ( eventCallbacks ) {\n\t\t\t\twhile ( ( callback = eventCallbacks.pop() ) ) {\n\t\t\t\t\tremoveEventListener( this, emitter!, event!, callback );\n\t\t\t\t}\n\n\t\t\t\tdelete emitterInfo!.callbacks[ event! ];\n\t\t\t}\n\t\t\t// Only `emitter` provided. off() all events for that emitter.\n\t\t\telse if ( emitterInfo ) {\n\t\t\t\tfor ( event in emitterInfo.callbacks ) {\n\t\t\t\t\tthis.stopListening( emitter!, event );\n\t\t\t\t}\n\t\t\t\tdelete emitters[ emitterId! ];\n\t\t\t}\n\t\t\t// No params provided. off() all emitters.\n\t\t\telse {\n\t\t\t\tfor ( emitterId in emitters ) {\n\t\t\t\t\tthis.stopListening( emitters[ emitterId ].emitter );\n\t\t\t\t}\n\t\t\t\tdelete this[ _listeningTo ];\n\t\t\t}\n\t\t}\n\n\t\tpublic fire<TEvent extends BaseEvent>(\n\t\t\teventOrInfo: GetNameOrEventInfo<TEvent>,\n\t\t\t...args: TEvent[ 'args' ]\n\t\t): GetEventInfo<TEvent>[ 'return' ] {\n\t\t\ttry {\n\t\t\t\tconst eventInfo = eventOrInfo instanceof EventInfo ? eventOrInfo : new EventInfo( this, eventOrInfo );\n\t\t\t\tconst event = eventInfo.name;\n\t\t\t\tlet callbacks = getCallbacksForEvent( this, event );\n\n\t\t\t\t// Record that the event passed this emitter on its path.\n\t\t\t\teventInfo.path.push( this );\n\n\t\t\t\t// Handle event listener callbacks first.\n\t\t\t\tif ( callbacks ) {\n\t\t\t\t\t// Arguments passed to each callback.\n\t\t\t\t\tconst callbackArgs = [ eventInfo, ...args ];\n\n\t\t\t\t\t// Copying callbacks array is the easiest and most secure way of preventing infinite loops, when event callbacks\n\t\t\t\t\t// are added while processing other callbacks. Previous solution involved adding counters (unique ids) but\n\t\t\t\t\t// failed if callbacks were added to the queue before currently processed callback.\n\t\t\t\t\t// If this proves to be too inefficient, another method is to change `.on()` so callbacks are stored if same\n\t\t\t\t\t// event is currently processed. Then, `.fire()` at the end, would have to add all stored events.\n\t\t\t\t\tcallbacks = Array.from( callbacks );\n\n\t\t\t\t\tfor ( let i = 0; i < callbacks.length; i++ ) {\n\t\t\t\t\t\tcallbacks[ i ].callback.apply( this, callbackArgs );\n\n\t\t\t\t\t\t// Remove the callback from future requests if off() has been called.\n\t\t\t\t\t\tif ( eventInfo.off.called ) {\n\t\t\t\t\t\t\t// Remove the called mark for the next calls.\n\t\t\t\t\t\t\tdelete eventInfo.off.called;\n\n\t\t\t\t\t\t\tthis._removeEventListener( event, callbacks[ i ].callback );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not execute next callbacks if stop() was called.\n\t\t\t\t\t\tif ( eventInfo.stop.called ) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Delegate event to other emitters if needed.\n\t\t\t\tconst delegations = this[ _delegations ];\n\n\t\t\t\tif ( delegations ) {\n\t\t\t\t\tconst destinations = delegations.get( event );\n\t\t\t\t\tconst passAllDestinations = delegations.get( '*' );\n\n\t\t\t\t\tif ( destinations ) {\n\t\t\t\t\t\tfireDelegatedEvents( destinations, eventInfo, args );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( passAllDestinations ) {\n\t\t\t\t\t\tfireDelegatedEvents( passAllDestinations, eventInfo, args );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn eventInfo.return;\n\t\t\t} catch ( err ) {\n\t\t\t\t// @if CK_DEBUG // throw err;\n\t\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\t\tCKEditorError.rethrowUnexpectedError( err as Error, this );\n\t\t\t}\n\t\t}\n\n\t\tpublic delegate( ...events: Array<string> ): EmitterMixinDelegateChain {\n\t\t\treturn {\n\t\t\t\tto: ( emitter, nameOrFunction ) => {\n\t\t\t\t\tif ( !this[ _delegations ] ) {\n\t\t\t\t\t\tthis[ _delegations ] = new Map();\n\t\t\t\t\t}\n\n\t\t\t\t\t// Originally there was a for..of loop which unfortunately caused an error in Babel that didn't allow\n\t\t\t\t\t// build an application. See: https://github.com/ckeditor/ckeditor5-react/issues/40.\n\t\t\t\t\tevents.forEach( eventName => {\n\t\t\t\t\t\tconst destinations = this[ _delegations ]!.get( eventName );\n\n\t\t\t\t\t\tif ( !destinations ) {\n\t\t\t\t\t\t\tthis[ _delegations ]!.set( eventName, new Map( [ [ emitter, nameOrFunction ] ] ) );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdestinations.set( emitter, nameOrFunction );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tpublic stopDelegating( event?: string, emitter?: Emitter ): void {\n\t\t\tif ( !this[ _delegations ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !event ) {\n\t\t\t\tthis[ _delegations ]!.clear();\n\t\t\t} else if ( !emitter ) {\n\t\t\t\tthis[ _delegations ]!.delete( event );\n\t\t\t} else {\n\t\t\t\tconst destinations = this[ _delegations ]!.get( event );\n\n\t\t\t\tif ( destinations ) {\n\t\t\t\t\tdestinations.delete( emitter );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic _addEventListener<TEvent extends BaseEvent>(\n\t\t\tevent: TEvent[ 'name' ],\n\t\t\tcallback: GetCallback<TEvent>,\n\t\t\toptions: CallbackOptions\n\t\t): void {\n\t\t\tcreateEventNamespace( this, event );\n\n\t\t\tconst lists = getCallbacksListsForNamespace( this, event );\n\t\t\tconst priority = priorities.get( options.priority );\n\n\t\t\tconst callbackDefinition = {\n\t\t\t\tcallback,\n\t\t\t\tpriority\n\t\t\t};\n\n\t\t\t// Add the callback to all callbacks list.\n\t\t\tfor ( const callbacks of lists ) {\n\t\t\t\t// Add the callback to the list in the right priority position.\n\t\t\t\tinsertToPriorityArray( callbacks, callbackDefinition );\n\t\t\t}\n\t\t}\n\n\t\tpublic _removeEventListener( event: string, callback: Function ): void {\n\t\t\tconst lists = getCallbacksListsForNamespace( this, event );\n\n\t\t\tfor ( const callbacks of lists ) {\n\t\t\t\tfor ( let i = 0; i < callbacks.length; i++ ) {\n\t\t\t\t\tif ( callbacks[ i ].callback == callback ) {\n\t\t\t\t\t\t// Remove the callback from the list (fixing the next index).\n\t\t\t\t\t\tcallbacks.splice( i, 1 );\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic _events?: { [ eventName: string ]: EventNode };\n\n\t\tpublic [ _emitterId ]?: string;\n\n\t\tpublic [ _listeningTo ]?: {\n\t\t\t[ emitterId: string ]: {\n\t\t\t\temitter: Emitter;\n\t\t\t\tcallbacks: { [ event: string]: Array<Function> };\n\t\t\t};\n\t\t};\n\n\t\tpublic [ _delegations ]?: Map<string, Map<Emitter, string | ( ( name: string ) => string ) | undefined>>;\n\t}\n\n\treturn Mixin;\n}\n\n// Backward compatibility with `mix`\n( [\n\t'on', 'once', 'off', 'listenTo',\n\t'stopListening', 'fire', 'delegate', 'stopDelegating',\n\t'_addEventListener', '_removeEventListener'\n] ).forEach( key => {\n\t( EmitterMixin as any )[ key ] = ( defaultEmitterClass.prototype as any )[ key ];\n} );\n\n/**\n * Emitter/listener interface.\n *\n * Can be easily implemented by a class by mixing the {@link module:utils/emittermixin~Emitter} mixin.\n *\n * ```ts\n * class MyClass extends EmitterMixin() {\n * \t// This class now implements the `Emitter` interface.\n * }\n * ```\n *\n * Read more about the usage of this interface in the:\n * * {@glink framework/architecture/core-editor-architecture#event-system-and-observables Event system and observables}\n * section of the {@glink framework/architecture/core-editor-architecture Core editor architecture} guide.\n * * {@glink framework/deep-dive/event-system Event system} deep-dive guide.\n */\nexport interface Emitter {\n\n\t/**\n\t * Registers a callback function to be executed when an event is fired.\n\t *\n\t * Shorthand for {@link #listenTo `this.listenTo( this, event, callback, options )`} (it makes the emitter\n\t * listen on itself).\n\t *\n\t * @typeParam TEvent The type descibing the event. See {@link module:utils/emittermixin~BaseEvent}.\n\t * @param event The name of the event.\n\t * @param callback The function to be called on event.\n\t * @param options Additional options.\n\t */\n\ton<TEvent extends BaseEvent>(\n\t\tevent: TEvent[ 'name' ],\n\t\tcallback: GetCallback<TEvent>,\n\t\toptions?: GetCallbackOptions<TEvent>\n\t): void;\n\n\t/**\n\t * Registers a callback function to be executed on the next time the event is fired only. This is similar to\n\t * calling {@link #on} followed by {@link #off} in the callback.\n\t *\n\t * @typeParam TEvent The type descibing the event. See {@link module:utils/emittermixin~BaseEvent}.\n\t * @param event The name of the event.\n\t * @param callback The function to be called on event.\n\t * @param options Additional options.\n\t */\n\tonce<TEvent extends BaseEvent>(\n\t\tevent: TEvent[ 'name' ],\n\t\tcallback: GetCallback<TEvent>,\n\t\toptions?: GetCallbackOptions<TEvent>\n\t): void;\n\n\t/**\n\t * Stops executing the callback on the given event.\n\t * Shorthand for {@link #stopListening `this.stopListening( this, event, callback )`}.\n\t *\n\t * @param event The name of the event.\n\t * @param callback The function to stop being called.\n\t */\n\toff( event: string, callback: Function ): void;\n\n\t/**\n\t * Registers a callback function to be executed when an event is fired in a specific (emitter) object.\n\t *\n\t * Events can be grouped in namespaces using `:`.\n\t * When namespaced event is fired, it additionally fires all callbacks for that namespace.\n\t *\n\t * ```ts\n\t * // myEmitter.on( ... ) is a shorthand for myEmitter.listenTo( myEmitter, ... ).\n\t * myEmitter.on( 'myGroup', genericCallback );\n\t * myEmitter.on( 'myGroup:myEvent', specificCallback );\n\t *\n\t * // genericCallback is fired.\n\t * myEmitter.fire( 'myGroup' );\n\t * // both genericCallback and specificCallback are fired.\n\t * myEmitter.fire( 'myGroup:myEvent' );\n\t * // genericCallback is fired even though there are no callbacks for \"foo\".\n\t * myEmitter.fire( 'myGroup:foo' );\n\t * ```\n\t *\n\t * An event callback can {@link module:utils/eventinfo~EventInfo#stop stop the event} and\n\t * set the {@link module:utils/eventinfo~EventInfo#return return value} of the {@link #fire} method.\n\t *\n\t * @label BASE_EMITTER\n\t * @typeParam TEvent The type describing the event. See {@link module:utils/emittermixin~BaseEvent}.\n\t * @param emitter The object that fires the event.\n\t * @param event The name of the event.\n\t * @param callback The function to be called on event.\n\t * @param options Additional options.\n\t */\n\tlistenTo<TEvent extends BaseEvent>(\n\t\temitter: Emitter,\n\t\tevent: TEvent[ 'name' ],\n\t\tcallback: GetCallback<TEvent>,\n\t\toptions?: GetCallbackOptions<TEvent>\n\t): void;\n\n\t/**\n\t * Stops listening for events. It can be used at different levels:\n\t *\n\t * * To stop listening to a specific callback.\n\t * * To stop listening to a specific event.\n\t * * To stop listening to all events fired by a specific object.\n\t * * To stop listening to all events fired by all objects.\n\t *\n\t * @label BASE_STOP\n\t * @param emitter The object to stop listening to. If omitted, stops it for all objects.\n\t * @param event (Requires the `emitter`) The name of the event to stop listening to. If omitted, stops it\n\t * for all events from `emitter`.\n\t * @param callback (Requires the `event`) The function to be removed from the call list for the given\n\t * `event`.\n\t */\n\tstopListening( emitter?: Emitter, event?: string, callback?: Function ): void;\n\n\t/**\n\t * Fires an event, executing all callbacks registered for it.\n\t *\n\t * The first parameter passed to callbacks is an {@link module:utils/eventinfo~EventInfo} object,\n\t * followed by the optional `args` provided in the `fire()` method call.\n\t *\n\t * @typeParam TEvent The type describing the event. See {@link module:utils/emittermixin~BaseEvent}.\n\t * @param eventOrInfo The name of the event or `EventInfo` object if event is delegated.\n\t * @param args Additional arguments to be passed to the callbacks.\n\t * @returns By default the method returns `undefined`. However, the return value can be changed by listeners\n\t * through modification of the {@link module:utils/eventinfo~EventInfo#return `evt.return`}'s property (the event info\n\t * is the first param of every callback).\n\t */\n\tfire<TEvent extends BaseEvent>(\n\t\teventOrInfo: GetNameOrEventInfo<TEvent>,\n\t\t...args: TEvent[ 'args' ]\n\t): GetEventInfo<TEvent>[ 'return' ];\n\n\t/**\n\t * Delegates selected events to another {@link module:utils/emittermixin~Emitter}. For instance:\n\t *\n\t * ```ts\n\t * emitterA.delegate( 'eventX' ).to( emitterB );\n\t * emitterA.delegate( 'eventX', 'eventY' ).to( emitterC );\n\t * ```\n\t *\n\t * then `eventX` is delegated (fired by) `emitterB` and `emitterC` along with `data`:\n\t *\n\t * ```ts\n\t * emitterA.fire( 'eventX', data );\n\t * ```\n\t *\n\t * and `eventY` is delegated (fired by) `emitterC` along with `data`:\n\t *\n\t * ```ts\n\t * emitterA.fire( 'eventY', data );\n\t * ```\n\t *\n\t * @param events Event names that will be delegated to another emitter.\n\t */\n\tdelegate( ...events: Array<string> ): EmitterMixinDelegateChain;\n\n\t/**\n\t * Stops delegating events. It can be used at different levels:\n\t *\n\t * * To stop delegating all events.\n\t * * To stop delegating a specific event to all emitters.\n\t * * To stop delegating a specific event to a specific emitter.\n\t *\n\t * @param event The name of the event to stop delegating. If omitted, stops it all delegations.\n\t * @param emitter (requires `event`) The object to stop delegating a particular event to.\n\t * If omitted, stops delegation of `event` to all emitters.\n\t */\n\tstopDelegating( event?: string, emitter?: Emitter ): void;\n}\n\ninterface EmitterInternal extends Emitter {\n\n\t/**\n\t * Adds callback to emitter for given event.\n\t *\n\t * @param event The name of the event.\n\t * @param callback The function to be called on event.\n\t * @param options Additional options.\n\t */\n\t_addEventListener?: <TEvent extends BaseEvent>(\n\t\tevent: TEvent[ 'name' ],\n\t\tcallback: GetCallback<TEvent>,\n\t\toptions: CallbackOptions\n\t) => void;\n\n\t/**\n\t * Removes callback from emitter for given event.\n\t *\n\t * @param event The name of the event.\n\t * @param callback The function to stop being called.\n\t */\n\t_removeEventListener?: ( event: string, callback: Function ) => void;\n\n\t_events?: { [ eventName: string ]: EventNode };\n\n\t[ _emitterId ]?: string;\n\n\t[ _listeningTo ]?: {\n\t\t[ emitterId: string ]: {\n\t\t\temitter: Emitter;\n\t\t\tcallbacks: { [ event: string]: Array<Function> };\n\t\t};\n\t};\n\n\t[ _delegations ]?: Map<string, Map<Emitter, string | ( ( name: string ) => string ) | undefined>>;\n}\n\n/**\n * Default type describing any event.\n *\n * Every custom event has to be compatible with `BaseEvent`.\n *\n * ```ts\n * type MyEvent = {\n * \t// In `fire<MyEvent>( name )`, `on<MyEvent>( name )`, `once<MyEvent>( name )` and `listenTo<MyEvent>( name )` calls\n * \t// the `name` argument will be type-checked to ensure it's `'myEvent'` or have `'myEvent:'` prefix.\n * \t// Required.\n * \tname: 'myEvent' | `myEvent:${ string }`;\n *\n * \t// In `fire<MyEvent>( name, a, b )` call, `a` and `b` parameters will be type-checked against `number` and `string`.\n * \t// In `on<MyEvent>`, `once<MyEvent>` and `listenTo<MyEvent>` calls, the parameters of provided callback function\n * \t// will be automatically inferred as `EventInfo`, `number` and `string`.\n * \t// Required.\n * \targs: [ number, string ];\n *\n * \t// `fire<MyEvent>` will have return type `boolean | undefined`.\n * \t// Optional, unknown by default.\n * \treturn: boolean;\n *\n * \t// `fire<MyEvent>( eventInfo )` will type-check that `eventInfo` is `MyEventInfo`, not a base `EventInfo` or string.\n * \t// In `on<MyEvent>`, `once<MyEvent>` and `listenTo<MyEvent>` calls, the first callback parameter will be of this type.\n * \t// Optional.\n * \teventInfo: MyEventInfo;\n *\n * \t// In `on<MyEvent>`, `once<MyEvent>` and `listenTo<MyEvent>` calls, the `options` parameter will be of type\n * \t// `{ myOption?: boolean; priority?: PriorityString }\n * \t// Optional.\n * \tcallbackOptions: { myOption?: boolean };\n * };\n * ```\n */\nexport type BaseEvent = {\n\tname: string;\n\targs: Array<any>;\n};\n\n/**\n * Utility type that gets the `EventInfo` subclass for the given event.\n */\nexport type GetEventInfo<TEvent extends BaseEvent> = TEvent extends { eventInfo: EventInfo } ?\n\tTEvent[ 'eventInfo' ] :\n\tEventInfo<TEvent[ 'name' ], ( TEvent extends { return: infer TReturn } ? TReturn : unknown )>;\n\n/**\n * Utility type that gets the `EventInfo` subclass or event name type for the given event.\n */\nexport type GetNameOrEventInfo<TEvent extends BaseEvent> = TEvent extends { eventInfo: EventInfo } ?\n\tTEvent[ 'eventInfo' ] :\n\tTEvent[ 'name' ] | EventInfo<TEvent[ 'name' ], ( TEvent extends { return: infer TReturn } ? TReturn : unknown )>;\n\n/**\n * Utility type that gets the callback type for the given event.\n */\nexport type GetCallback<TEvent extends BaseEvent> = ( this: Emitter, ev: GetEventInfo<TEvent>, ...args: TEvent[ 'args' ] ) => void;\n\n/**\n * Utility type that gets the callback options for the given event.\n */\nexport type GetCallbackOptions<TEvent extends BaseEvent> = TEvent extends { callbackOptions: infer TOptions } ?\n\tTOptions & CallbackOptions :\n\tCallbackOptions;\n\n/**\n * Additional options for registering a callback.\n */\nexport interface CallbackOptions {\n\n\t/**\n\t * The priority of this event callback. The higher\n\t * the priority value the sooner the callback will be fired. Events having the same priority are called in the\n\t * order they were added.\n\t *\n\t * @defaultValue `'normal'`\n\t */\n\treadonly priority?: PriorityString;\n}\n\n/**\n * Checks if `listeningEmitter` listens to an emitter with given `listenedToEmitterId` and if so, returns that emitter.\n * If not, returns `null`.\n *\n * @internal\n * @param listeningEmitter An emitter that listens.\n * @param listenedToEmitterId Unique emitter id of emitter listened to.\n */\nexport function _getEmitterListenedTo( listeningEmitter: Emitter, listenedToEmitterId: string ): Emitter | null {\n\tconst listeningTo = ( listeningEmitter as EmitterInternal )[ _listeningTo ];\n\tif ( listeningTo && listeningTo[ listenedToEmitterId ] ) {\n\t\treturn listeningTo[ listenedToEmitterId ].emitter;\n\t}\n\n\treturn null;\n}\n\n/**\n * Sets emitter's unique id.\n *\n * **Note:** `_emitterId` can be set only once.\n *\n * @internal\n * @param emitter An emitter for which id will be set.\n * @param id Unique id to set. If not passed, random unique id will be set.\n */\nexport function _setEmitterId( emitter: Emitter, id?: string ): void {\n\tif ( !( emitter as EmitterInternal )[ _emitterId ] ) {\n\t\t( emitter as EmitterInternal )[ _emitterId ] = id || uid();\n\t}\n}\n\n/**\n * Returns emitter's unique id.\n *\n * @internal\n * @param emitter An emitter which id will be returned.\n */\nexport function _getEmitterId( emitter: Emitter ): string | undefined {\n\treturn ( emitter as EmitterInternal )[ _emitterId ];\n}\n\ninterface EventNode {\n\tcallbacks: Array<{ callback: Function; priority: number }>;\n\tchildEvents: Array<string>;\n}\n\n/**\n * Gets the internal `_events` property of the given object.\n * `_events` property store all lists with callbacks for registered event names.\n * If there were no events registered on the object, empty `_events` object is created.\n */\nfunction getEvents( source: EmitterInternal ): { [ eventName: string ]: EventNode } {\n\tif ( !source._events ) {\n\t\tObject.defineProperty( source, '_events', {\n\t\t\tvalue: {}\n\t\t} );\n\t}\n\n\treturn source._events!;\n}\n\n/**\n * Creates event node for generic-specific events relation architecture.\n */\nfunction makeEventNode(): EventNode {\n\treturn {\n\t\tcallbacks: [],\n\t\tchildEvents: []\n\t};\n}\n\n/**\n * Creates an architecture for generic-specific events relation.\n * If needed, creates all events for given eventName, i.e. if the first registered event\n * is foo:bar:abc, it will create foo:bar:abc, foo:bar and foo event and tie them together.\n * It also copies callbacks from more generic events to more specific events when\n * specific events are created.\n */\nfunction createEventNamespace( source: EmitterInternal, eventName: string ): void {\n\tconst events = getEvents( source );\n\n\t// First, check if the event we want to add to the structure already exists.\n\tif ( events[ eventName ] ) {\n\t\t// If it exists, we don't have to do anything.\n\t\treturn;\n\t}\n\n\t// In other case, we have to create the structure for the event.\n\t// Note, that we might need to create intermediate events too.\n\t// I.e. if foo:bar:abc is being registered and we only have foo in the structure,\n\t// we need to also register foo:bar.\n\n\t// Currently processed event name.\n\tlet name = eventName;\n\t// Name of the event that is a child event for currently processed event.\n\tlet childEventName = null;\n\n\t// Array containing all newly created specific events.\n\tconst newEventNodes = [];\n\n\t// While loop can't check for ':' index because we have to handle generic events too.\n\t// In each loop, we truncate event name, going from the most specific name to the generic one.\n\t// I.e. foo:bar:abc -> foo:bar -> foo.\n\twhile ( name !== '' ) {\n\t\tif ( events[ name ] ) {\n\t\t\t// If the currently processed event name is already registered, we can be sure\n\t\t\t// that it already has all the structure created, so we can break the loop here\n\t\t\t// as no more events need to be registered.\n\t\t\tbreak;\n\t\t}\n\n\t\t// If this event is not yet registered, create a new object for it.\n\t\tevents[ name ] = makeEventNode();\n\t\t// Add it to the array with newly created events.\n\t\tnewEventNodes.push( events[ name ] );\n\n\t\t// Add previously processed event name as a child of this event.\n\t\tif ( childEventName ) {\n\t\t\tevents[ name ].childEvents.push( childEventName );\n\t\t}\n\n\t\tchildEventName = name;\n\t\t// If `.lastIndexOf()` returns -1, `.substr()` will return '' which will break the loop.\n\t\tname = name.substr( 0, name.lastIndexOf( ':' ) );\n\t}\n\n\tif ( name !== '' ) {\n\t\t// If name is not empty, we found an already registered event that was a parent of the\n\t\t// event we wanted to register.\n\n\t\t// Copy that event's callbacks to newly registered events.\n\t\tfor ( const node of newEventNodes ) {\n\t\t\tnode.callbacks = events[ name ].callbacks.slice();\n\t\t}\n\n\t\t// Add last newly created event to the already registered event.\n\t\tevents[ name ].childEvents.push( childEventName! );\n\t}\n}\n\n/**\n * Gets an array containing callbacks list for a given event and it's more specific events.\n * I.e. if given event is foo:bar and there is also foo:bar:abc event registered, this will\n * return callback list of foo:bar and foo:bar:abc (but not foo).\n */\nfunction getCallbacksListsForNamespace( source: EmitterInternal, eventName: string ): Array<EventNode[ 'callbacks' ]> {\n\tconst eventNode = getEvents( source )[ eventName ];\n\n\tif ( !eventNode ) {\n\t\treturn [];\n\t}\n\n\tlet callbacksLists = [ eventNode.callbacks ];\n\n\tfor ( let i = 0; i < eventNode.childEvents.length; i++ ) {\n\t\tconst childCallbacksLists = getCallbacksListsForNamespace( source, eventNode.childEvents[ i ] );\n\n\t\tcallbacksLists = callbacksLists.concat( childCallbacksLists );\n\t}\n\n\treturn callbacksLists;\n}\n\n/**\n * Get the list of callbacks for a given event, but only if there any callbacks have been registered.\n * If there are no callbacks registered for given event, it checks if this is a specific event and looks\n * for callbacks for it's more generic version.\n */\nfunction getCallbacksForEvent( source: EmitterInternal, eventName: string ): EventNode[ 'callbacks' ] | null {\n\tlet event;\n\n\tif ( !source._events || !( event = source._events[ eventName ] ) || !event.callbacks.length ) {\n\t\t// There are no callbacks registered for specified eventName.\n\t\t// But this could be a specific-type event that is in a namespace.\n\t\tif ( eventName.indexOf( ':' ) > -1 ) {\n\t\t\t// If the eventName is specific, try to find callback lists for more generic event.\n\t\t\treturn getCallbacksForEvent( source, eventName.substr( 0, eventName.lastIndexOf( ':' ) ) );\n\t\t} else {\n\t\t\t// If this is a top-level generic event, return null;\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn event.callbacks;\n}\n\n/**\n * Fires delegated events for given map of destinations.\n *\n * @param destinations A map containing `[ {@link module:utils/emittermixin~Emitter}, \"event name\" ]` pair destinations.\n * @param eventInfo The original event info object.\n * @param fireArgs Arguments the original event was fired with.\n */\nfunction fireDelegatedEvents(\n\tdestinations: Map<Emitter, string | ( ( name: string ) => string ) | undefined>,\n\teventInfo: EventInfo,\n\tfireArgs: Array<any>\n) {\n\tfor ( let [ emitter, name ] of destinations ) {\n\t\tif ( !name ) {\n\t\t\tname = eventInfo.name;\n\t\t} else if ( typeof name == 'function' ) {\n\t\t\tname = name( eventInfo.name );\n\t\t}\n\n\t\tconst delegatedInfo = new EventInfo( eventInfo.source, name );\n\n\t\tdelegatedInfo.path = [ ...eventInfo.path ];\n\n\t\temitter.fire( delegatedInfo, ...fireArgs );\n\t}\n}\n\n/**\n * Helper for registering event callback on the emitter.\n */\nfunction addEventListener<TEvent extends BaseEvent>(\n\tlistener: EmitterInternal,\n\temitter: EmitterInternal,\n\tevent: TEvent[ 'name' ],\n\tcallback: GetCallback<TEvent>,\n\toptions: CallbackOptions\n) {\n\tif ( emitter._addEventListener ) {\n\t\temitter._addEventListener( event, callback, options );\n\t} else {\n\t\t// Allow listening on objects that do not implement Emitter interface.\n\t\t// This is needed in some tests that are using mocks instead of the real objects with EmitterMixin mixed.\n\t\t( listener._addEventListener!<TEvent> ).call( emitter, event, callback, options );\n\t}\n}\n\n/**\n * Helper for removing event callback from the emitter.\n */\nfunction removeEventListener( listener: EmitterInternal, emitter: EmitterInternal, event: string, callback: Function ): void {\n\tif ( emitter._removeEventListener ) {\n\t\temitter._removeEventListener( event, callback );\n\t} else {\n\t\t// Allow listening on objects that do not implement Emitter interface.\n\t\t// This is needed in some tests that are using mocks instead of the real objects with EmitterMixin mixed.\n\t\tlistener._removeEventListener!.call( emitter, event, callback );\n\t}\n}\n\n/**\n * The return value of {@link ~Emitter#delegate}.\n */\nexport interface EmitterMixinDelegateChain {\n\n\t/**\n\t * Selects destination for {@link module:utils/emittermixin~Emitter#delegate} events.\n\t *\n\t * @param emitter An `EmitterMixin` instance which is the destination for delegated events.\n\t * @param nameOrFunction A custom event name or function which converts the original name string.\n\t */\n\tto( emitter: Emitter, nameOrFunction?: string | ( ( name: string ) => string ) ): void;\n}\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* eslint-disable @typescript-eslint/unified-signatures */\n\n/**\n * @module utils/observablemixin\n */\n\nimport EmitterMixin, { type Emitter } from './emittermixin';\nimport CKEditorError from './ckeditorerror';\nimport type { Constructor, Mixed } from './mix';\n\nimport { isObject } from 'lodash-es';\n\nconst observablePropertiesSymbol = Symbol( 'observableProperties' );\nconst boundObservablesSymbol = Symbol( 'boundObservables' );\nconst boundPropertiesSymbol = Symbol( 'boundProperties' );\n\nconst decoratedMethods = Symbol( 'decoratedMethods' );\nconst decoratedOriginal = Symbol( 'decoratedOriginal' );\n\nconst defaultObservableClass = ObservableMixin( EmitterMixin() );\n\n/**\n * A mixin that injects the \"observable properties\" and data binding functionality described in the\n * {@link ~Observable} interface.\n *\n * This function creates a class that inherits from the provided `base` and implements `Observable` interface.\n *\n * ```ts\n * class BaseClass { ... }\n *\n * class MyClass extends ObservableMixin( BaseClass ) {\n * \t// This class derives from `BaseClass` and implements the `Observable` interface.\n * }\n * ```\n *\n * Read more about the concept of observables in the:\n * * {@glink framework/architecture/core-editor-architecture#event-system-and-observables Event system and observables}\n * section of the {@glink framework/architecture/core-editor-architecture Core editor architecture} guide,\n * * {@glink framework/deep-dive/observables Observables deep-dive} guide.\n *\n * @label EXTENDS\n */\nexport default function ObservableMixin<Base extends Constructor<Emitter>>( base: Base ): Mixed<Base, Observable>;\n\n/**\n * A mixin that injects the \"observable properties\" and data binding functionality described in the\n * {@link ~Observable} interface.\n *\n * This function creates a class that implements `Observable` interface.\n *\n * ```ts\n * class MyClass extends ObservableMixin() {\n * \t// This class implements the `Observable` interface.\n * }\n * ```\n *\n * Read more about the concept of observables in the:\n * * {@glink framework/architecture/core-editor-architecture#event-system-and-observables Event system and observables}\n * section of the {@glink framework/architecture/core-editor-architecture Core editor architecture} guide,\n * * {@glink framework/deep-dive/observables Observables deep dive} guide.\n *\n * @label NO_ARGUMENTS\n */\nexport default function ObservableMixin(): {\n\tnew (): Observable;\n\tprototype: Observable;\n};\n\nexport default function ObservableMixin( base?: Constructor<Emitter> ): unknown {\n\tif ( !base ) {\n\t\treturn defaultObservableClass;\n\t}\n\n\tabstract class Mixin extends base implements ObservableInternal {\n\t\tpublic set( name: string | { [ name: string ]: unknown }, value?: unknown ): void {\n\t\t\t// If the first parameter is an Object, iterate over its properties.\n\t\t\tif ( isObject( name ) ) {\n\t\t\t\tObject.keys( name ).forEach( property => {\n\t\t\t\t\tthis.set( property, name[ property ] );\n\t\t\t\t}, this );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinitObservable( this );\n\n\t\t\tconst properties = this[ observablePropertiesSymbol ];\n\n\t\t\tif ( ( name in this ) && !properties!.has( name ) ) {\n\t\t\t\t/**\n\t\t\t\t * Cannot override an existing property.\n\t\t\t\t *\n\t\t\t\t * This error is thrown when trying to {@link module:utils/observablemixin~Observable#set set} a property with\n\t\t\t\t * a name of an already existing property. For example:\n\t\t\t\t *\n\t\t\t\t * ```ts\n\t\t\t\t * let observable = new Model();\n\t\t\t\t * observable.property = 1;\n\t\t\t\t * observable.set( 'property', 2 );\t\t\t// throws\n\t\t\t\t *\n\t\t\t\t * observable.set( 'property', 1 );\n\t\t\t\t * observable.set( 'property', 2 );\t\t\t// ok, because this is an existing property.\n\t\t\t\t * ```\n\t\t\t\t *\n\t\t\t\t * @error observable-set-cannot-override\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'observable-set-cannot-override', this );\n\t\t\t}\n\n\t\t\tObject.defineProperty( this, name, {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\n\t\t\t\tget() {\n\t\t\t\t\treturn properties!.get( name );\n\t\t\t\t},\n\n\t\t\t\tset( this: Observable, value ) {\n\t\t\t\t\tconst oldValue = properties!.get( name );\n\n\t\t\t\t\t// Fire `set` event before the new value will be set to make it possible\n\t\t\t\t\t// to override observable property without affecting `change` event.\n\t\t\t\t\t// See https://github.com/ckeditor/ckeditor5-utils/issues/171.\n\t\t\t\t\tlet newValue = this.fire<ObservableSetEvent>( `set:${ name }`, name, value, oldValue );\n\n\t\t\t\t\tif ( newValue === undefined ) {\n\t\t\t\t\t\tnewValue = value;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Allow undefined as an initial value like A.define( 'x', undefined ) (#132).\n\t\t\t\t\t// Note: When properties map has no such own property, then its value is undefined.\n\t\t\t\t\tif ( oldValue !== newValue || !properties!.has( name ) ) {\n\t\t\t\t\t\tproperties!.set( name, newValue );\n\t\t\t\t\t\tthis.fire<ObservableChangeEvent>( `change:${ name }`, name, newValue, oldValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t( this as any )[ name ] = value;\n\t\t}\n\n\t\tpublic bind( ...bindProperties: Array<string> ): any {\n\t\t\tif ( !bindProperties.length || !isStringArray( bindProperties ) ) {\n\t\t\t\t/**\n\t\t\t\t * All properties must be strings.\n\t\t\t\t *\n\t\t\t\t * @error observable-bind-wrong-properties\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'observable-bind-wrong-properties', this );\n\t\t\t}\n\n\t\t\tif ( ( new Set( bindProperties ) ).size !== bindProperties.length ) {\n\t\t\t\t/**\n\t\t\t\t * Properties must be unique.\n\t\t\t\t *\n\t\t\t\t * @error observable-bind-duplicate-properties\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'observable-bind-duplicate-properties', this );\n\t\t\t}\n\n\t\t\tinitObservable( this );\n\n\t\t\tconst boundProperties = this[ boundPropertiesSymbol ];\n\n\t\t\tbindProperties.forEach( propertyName => {\n\t\t\t\tif ( boundProperties!.has( propertyName ) ) {\n\t\t\t\t\t/**\n\t\t\t\t\t * Cannot bind the same property more than once.\n\t\t\t\t\t *\n\t\t\t\t\t * @error observable-bind-rebind\n\t\t\t\t\t */\n\t\t\t\t\tthrow new CKEditorError( 'observable-bind-rebind', this );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst bindings = new Map<string, Binding>();\n\n\t\t\tbindProperties.forEach( a => {\n\t\t\t\tconst binding = { property: a, to: [] };\n\n\t\t\t\tboundProperties!.set( a, binding );\n\t\t\t\tbindings.set( a, binding );\n\t\t\t} );\n\n\t\t\treturn {\n\t\t\t\tto: bindTo,\n\t\t\t\ttoMany: bindToMany,\n\n\t\t\t\t_observable: this,\n\t\t\t\t_bindProperties: bindProperties,\n\t\t\t\t_to: [],\n\t\t\t\t_bindings: bindings\n\t\t\t};\n\t\t}\n\n\t\tpublic unbind( ...unbindProperties: Array<keyof this & string> ): void {\n\t\t\t// Nothing to do here if not inited yet.\n\t\t\tif ( !( this[ observablePropertiesSymbol ] ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst boundProperties = this[ boundPropertiesSymbol ]!;\n\t\t\tconst boundObservables = this[ boundObservablesSymbol ]!;\n\n\t\t\tif ( unbindProperties.length ) {\n\t\t\t\tif ( !isStringArray( unbindProperties ) ) {\n\t\t\t\t\t/**\n\t\t\t\t\t * Properties must be strings.\n\t\t\t\t\t *\n\t\t\t\t\t * @error observable-unbind-wrong-properties\n\t\t\t\t\t */\n\t\t\t\t\tthrow new CKEditorError( 'observable-unbind-wrong-properties', this );\n\t\t\t\t}\n\n\t\t\t\tunbindProperties.forEach( propertyName => {\n\t\t\t\t\tconst binding = boundProperties.get( propertyName );\n\n\t\t\t\t\t// Nothing to do if the binding is not defined\n\t\t\t\t\tif ( !binding ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbinding.to.forEach( ( [ toObservable, toProperty ] ) => {\n\t\t\t\t\t\tconst toProperties = boundObservables.get( toObservable )!;\n\t\t\t\t\t\tconst toPropertyBindings = toProperties[ toProperty ];\n\n\t\t\t\t\t\ttoPropertyBindings.delete( binding );\n\n\t\t\t\t\t\tif ( !toPropertyBindings.size ) {\n\t\t\t\t\t\t\tdelete toProperties[ toProperty ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( !Object.keys( toProperties ).length ) {\n\t\t\t\t\t\t\tboundObservables.delete( toObservable );\n\t\t\t\t\t\t\tthis.stopListening( toObservable, 'change' );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\tboundProperties.delete( propertyName );\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tboundObservables.forEach( ( bindings, boundObservable ) => {\n\t\t\t\t\tthis.stopListening( boundObservable, 'change' );\n\t\t\t\t} );\n\n\t\t\t\tboundObservables.clear();\n\t\t\t\tboundProperties.clear();\n\t\t\t}\n\t\t}\n\n\t\tpublic decorate( this: this & { [ x: string ]: any }, methodName: keyof this & string ): void {\n\t\t\tinitObservable( this );\n\n\t\t\tconst originalMethod = this[ methodName ];\n\n\t\t\tif ( !originalMethod ) {\n\t\t\t\t/**\n\t\t\t\t * Cannot decorate an undefined method.\n\t\t\t\t *\n\t\t\t\t * @error observablemixin-cannot-decorate-undefined\n\t\t\t\t * @param {Object} object The object which method should be decorated.\n\t\t\t\t * @param {String} methodName Name of the method which does not exist.\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'observablemixin-cannot-decorate-undefined',\n\t\t\t\t\tthis,\n\t\t\t\t\t{ object: this, methodName }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.on( methodName, ( evt, args ) => {\n\t\t\t\tevt.return = originalMethod.apply( this, args );\n\t\t\t} );\n\n\t\t\tthis[ methodName ] = function( ...args: Array<unknown> ) {\n\t\t\t\treturn this.fire( methodName, args );\n\t\t\t};\n\n\t\t\tthis[ methodName ][ decoratedOriginal ] = originalMethod;\n\n\t\t\tif ( !this[ decoratedMethods ] ) {\n\t\t\t\tthis[ decoratedMethods ] = [];\n\t\t\t}\n\n\t\t\tthis[ decoratedMethods ]!.push( methodName );\n\t\t}\n\n\t\t// Override the EmitterMixin stopListening method to be able to clean (and restore) decorated methods.\n\t\t// This is needed in case of:\n\t\t// 1. Have x.foo() decorated.\n\t\t// 2. Call x.stopListening()\n\t\t// 3. Call x.foo(). Problem: nothing happens (the original foo() method is not executed)\n\t\tpublic override stopListening(\n\t\t\tthis: ObservableInternal & { [ x: string ]: any },\n\t\t\temitter?: Emitter,\n\t\t\tevent?: string,\n\t\t\tcallback?: Function\n\t\t): void {\n\t\t\t// Removing all listeners so let's clean the decorated methods to the original state.\n\t\t\tif ( !emitter && this[ decoratedMethods ] ) {\n\t\t\t\tfor ( const methodName of this[ decoratedMethods ]! ) {\n\t\t\t\t\tthis[ methodName ] = this[ methodName ][ decoratedOriginal ];\n\t\t\t\t}\n\n\t\t\t\tdelete this[ decoratedMethods ];\n\t\t\t}\n\n\t\t\tsuper.stopListening( emitter, event, callback );\n\t\t}\n\n\t\tpublic [ observablePropertiesSymbol ]?: Map<string, unknown>;\n\n\t\tpublic [ decoratedMethods ]?: Array<string>;\n\n\t\tpublic [ boundPropertiesSymbol ]?: Map<string, Binding>;\n\n\t\tpublic [ boundObservablesSymbol]?: Map<Observable, Record<string, Set<Binding>>>;\n\t}\n\n\treturn Mixin;\n}\n\n// Backward compatibility with `mix`\n( [\n\t'set', 'bind', 'unbind', 'decorate',\n\t'on', 'once', 'off', 'listenTo',\n\t'stopListening', 'fire', 'delegate', 'stopDelegating',\n\t'_addEventListener', '_removeEventListener'\n] ).forEach( key => {\n\t( ObservableMixin as any )[ key ] = ( defaultObservableClass.prototype as any )[ key ];\n} );\n\ninterface Binding {\n\n\t/**\n\t * Property which is bound.\n\t */\n\tproperty: string;\n\n\t/**\n\t * Array of observable–property components of the binding (`{ observable: ..., property: .. }`).\n\t */\n\tto: Array<[ Observable, string ]>;\n\n\t/**\n\t * A function which processes `to` components.\n\t */\n\tcallback?: Function;\n}\n\ninterface BindChainInternal {\n\tto: Function;\n\t_observable: Observable;\n\t_bindings: Map<string, Binding>;\n\t_bindProperties: Array<string>;\n\t_to: Array<{\n\t\tobservable: Observable;\n\t\tproperties: Array<string>;\n\t}>;\n}\n\n// Init symbol properties needed for the observable mechanism to work.\nfunction initObservable( observable: ObservableInternal ): void {\n\t// Do nothing if already inited.\n\tif ( observable[ observablePropertiesSymbol ] ) {\n\t\treturn;\n\t}\n\n\t// The internal hash containing the observable's state.\n\tObject.defineProperty( observable, observablePropertiesSymbol, {\n\t\tvalue: new Map()\n\t} );\n\n\t// Map containing bindings to external observables. It shares the binding objects\n\t// (`{ observable: A, property: 'a', to: ... }`) with {@link module:utils/observablemixin~Observable#_boundProperties} and\n\t// it is used to observe external observables to update own properties accordingly.\n\t// See {@link module:utils/observablemixin~Observable#bind}.\n\t//\n\t//\t\tA.bind( 'a', 'b', 'c' ).to( B, 'x', 'y', 'x' );\n\t//\t\tconsole.log( A._boundObservables );\n\t//\n\t//\t\t\tMap( {\n\t//\t\t\t\tB: {\n\t//\t\t\t\t\tx: Set( [\n\t//\t\t\t\t\t\t{ observable: A, property: 'a', to: [ [ B, 'x' ] ] },\n\t//\t\t\t\t\t\t{ observable: A, property: 'c', to: [ [ B, 'x' ] ] }\n\t//\t\t\t\t\t] ),\n\t//\t\t\t\t\ty: Set( [\n\t//\t\t\t\t\t\t{ observable: A, property: 'b', to: [ [ B, 'y' ] ] },\n\t//\t\t\t\t\t] )\n\t//\t\t\t\t}\n\t//\t\t\t} )\n\t//\n\t//\t\tA.bind( 'd' ).to( B, 'z' ).to( C, 'w' ).as( callback );\n\t//\t\tconsole.log( A._boundObservables );\n\t//\n\t//\t\t\tMap( {\n\t//\t\t\t\tB: {\n\t//\t\t\t\t\tx: Set( [\n\t//\t\t\t\t\t\t{ observable: A, property: 'a', to: [ [ B, 'x' ] ] },\n\t//\t\t\t\t\t\t{ observable: A, property: 'c', to: [ [ B, 'x' ] ] }\n\t//\t\t\t\t\t] ),\n\t//\t\t\t\t\ty: Set( [\n\t//\t\t\t\t\t\t{ observable: A, property: 'b', to: [ [ B, 'y' ] ] },\n\t//\t\t\t\t\t] ),\n\t//\t\t\t\t\tz: Set( [\n\t//\t\t\t\t\t\t{ observable: A, property: 'd', to: [ [ B, 'z' ], [ C, 'w' ] ], callback: callback }\n\t//\t\t\t\t\t] )\n\t//\t\t\t\t},\n\t//\t\t\t\tC: {\n\t//\t\t\t\t\tw: Set( [\n\t//\t\t\t\t\t\t{ observable: A, property: 'd', to: [ [ B, 'z' ], [ C, 'w' ] ], callback: callback }\n\t//\t\t\t\t\t] )\n\t//\t\t\t\t}\n\t//\t\t\t} )\n\t//\n\tObject.defineProperty( observable, boundObservablesSymbol, {\n\t\tvalue: new Map()\n\t} );\n\n\t// Object that stores which properties of this observable are bound and how. It shares\n\t// the binding objects (`{ observable: A, property: 'a', to: ... }`) with\n\t// {@link module:utils/observablemixin~Observable#_boundObservables}. This data structure is\n\t// a reverse of {@link module:utils/observablemixin~Observable#_boundObservables} and it is helpful for\n\t// {@link module:utils/observablemixin~Observable#unbind}.\n\t//\n\t// See {@link module:utils/observablemixin~Observable#bind}.\n\t//\n\t//\t\tA.bind( 'a', 'b', 'c' ).to( B, 'x', 'y', 'x' );\n\t//\t\tconsole.log( A._boundProperties );\n\t//\n\t//\t\t\tMap( {\n\t//\t\t\t\ta: { observable: A, property: 'a', to: [ [ B, 'x' ] ] },\n\t//\t\t\t\tb: { observable: A, property: 'b', to: [ [ B, 'y' ] ] },\n\t//\t\t\t\tc: { observable: A, property: 'c', to: [ [ B, 'x' ] ] }\n\t//\t\t\t} )\n\t//\n\t//\t\tA.bind( 'd' ).to( B, 'z' ).to( C, 'w' ).as( callback );\n\t//\t\tconsole.log( A._boundProperties );\n\t//\n\t//\t\t\tMap( {\n\t//\t\t\t\ta: { observable: A, property: 'a', to: [ [ B, 'x' ] ] },\n\t//\t\t\t\tb: { observable: A, property: 'b', to: [ [ B, 'y' ] ] },\n\t//\t\t\t\tc: { observable: A, property: 'c', to: [ [ B, 'x' ] ] },\n\t//\t\t\t\td: { observable: A, property: 'd', to: [ [ B, 'z' ], [ C, 'w' ] ], callback: callback }\n\t//\t\t\t} )\n\tObject.defineProperty( observable, boundPropertiesSymbol, {\n\t\tvalue: new Map()\n\t} );\n}\n\n/**\n * A chaining for {@link module:utils/observablemixin~Observable#bind} providing `.to()` interface.\n *\n * @param args Arguments of the `.to( args )` binding.\n */\nfunction bindTo( this: BindChainInternal, ...args: Array<Observable | string | Function> ): void {\n\tconst parsedArgs = parseBindToArgs( ...args );\n\tconst bindingsKeys = Array.from( this._bindings.keys() );\n\tconst numberOfBindings = bindingsKeys.length;\n\n\t// Eliminate A.bind( 'x' ).to( B, C )\n\tif ( !parsedArgs.callback && parsedArgs.to.length > 1 ) {\n\t\t/**\n\t\t * Binding multiple observables only possible with callback.\n\t\t *\n\t\t * @error observable-bind-to-no-callback\n\t\t */\n\t\tthrow new CKEditorError( 'observable-bind-to-no-callback', this );\n\t}\n\n\t// Eliminate A.bind( 'x', 'y' ).to( B, callback )\n\tif ( numberOfBindings > 1 && parsedArgs.callback ) {\n\t\t/**\n\t\t * Cannot bind multiple properties and use a callback in one binding.\n\t\t *\n\t\t * @error observable-bind-to-extra-callback\n\t\t */\n\t\tthrow new CKEditorError(\n\t\t\t'observable-bind-to-extra-callback',\n\t\t\tthis\n\t\t);\n\t}\n\n\tparsedArgs.to.forEach( to => {\n\t\t// Eliminate A.bind( 'x', 'y' ).to( B, 'a' )\n\t\tif ( to.properties.length && to.properties.length !== numberOfBindings ) {\n\t\t\t/**\n\t\t\t * The number of properties must match.\n\t\t\t *\n\t\t\t * @error observable-bind-to-properties-length\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'observable-bind-to-properties-length', this );\n\t\t}\n\n\t\t// When no to.properties specified, observing source properties instead i.e.\n\t\t// A.bind( 'x', 'y' ).to( B ) -> Observe B.x and B.y\n\t\tif ( !to.properties.length ) {\n\t\t\tto.properties = this._bindProperties;\n\t\t}\n\t} );\n\n\tthis._to = parsedArgs.to;\n\n\t// Fill {@link BindChain#_bindings} with callback. When the callback is set there's only one binding.\n\tif ( parsedArgs.callback ) {\n\t\tthis._bindings.get( bindingsKeys[ 0 ] )!.callback = parsedArgs.callback;\n\t}\n\n\tattachBindToListeners( this._observable, this._to );\n\n\t// Update observable._boundProperties and observable._boundObservables.\n\tupdateBindToBound( this );\n\n\t// Set initial values of bound properties.\n\tthis._bindProperties.forEach( propertyName => {\n\t\tupdateBoundObservableProperty( this._observable, propertyName );\n\t} );\n}\n\n/**\n * Binds to an attribute in a set of iterable observables.\n */\nfunction bindToMany( this: BindChainInternal, observables: Array<Observable>, attribute: string, callback: Function ): void {\n\tif ( this._bindings.size > 1 ) {\n\t\t/**\n\t\t * Binding one attribute to many observables only possible with one attribute.\n\t\t *\n\t\t * @error observable-bind-to-many-not-one-binding\n\t\t */\n\t\tthrow new CKEditorError( 'observable-bind-to-many-not-one-binding', this );\n\t}\n\n\tthis.to(\n\t\t// Bind to #attribute of each observable...\n\t\t...getBindingTargets( observables, attribute ),\n\t\t// ...using given callback to parse attribute values.\n\t\tcallback\n\t);\n}\n\n/**\n * Returns an array of binding components for\n * {@link Observable#bind} from a set of iterable observables.\n */\nfunction getBindingTargets( observables: Array<Observable>, attribute: string ): Array<Observable | string> {\n\tconst observableAndAttributePairs = observables.map( observable => [ observable, attribute ] );\n\n\t// Merge pairs to one-dimension array of observables and attributes.\n\treturn Array.prototype.concat.apply( [], observableAndAttributePairs );\n}\n\n/**\n * Check if all entries of the array are of `String` type.\n */\nfunction isStringArray( arr: Array<unknown> ): arr is Array<string> {\n\treturn arr.every( a => typeof a == 'string' );\n}\n\n/**\n * Parses and validates {@link Observable#bind}`.to( args )` arguments and returns\n * an object with a parsed structure. For example\n *\n * ```ts\n * A.bind( 'x' ).to( B, 'a', C, 'b', call );\n * ```\n *\n * becomes\n *\n * ```ts\n * {\n * \tto: [\n * \t\t{ observable: B, properties: [ 'a' ] },\n * \t\t{ observable: C, properties: [ 'b' ] },\n * \t],\n * \tcallback: call\n * }\n *\n * @param args Arguments of {@link Observable#bind}`.to( args )`.\n */\nfunction parseBindToArgs( ...args: Array<Observable | string | Function> ) {\n\t// Eliminate A.bind( 'x' ).to()\n\tif ( !args.length ) {\n\t\t/**\n\t\t * Invalid argument syntax in `to()`.\n\t\t *\n\t\t * @error observable-bind-to-parse-error\n\t\t */\n\t\tthrow new CKEditorError( 'observable-bind-to-parse-error', null );\n\t}\n\n\tconst parsed: { to: BindChainInternal[ '_to' ]; callback?: Function } = { to: [] };\n\tlet lastObservable: { observable: Observable; properties: Array<string> };\n\n\tif ( typeof args[ args.length - 1 ] == 'function' ) {\n\t\tparsed.callback = args.pop() as Function;\n\t}\n\n\targs.forEach( a => {\n\t\tif ( typeof a == 'string' ) {\n\t\t\tlastObservable.properties.push( a );\n\t\t} else if ( typeof a == 'object' ) {\n\t\t\tlastObservable = { observable: a, properties: [] };\n\t\t\tparsed.to.push( lastObservable );\n\t\t} else {\n\t\t\tthrow new CKEditorError( 'observable-bind-to-parse-error', null );\n\t\t}\n\t} );\n\n\treturn parsed;\n}\n\n/**\n * Synchronizes {@link module:utils/observable#_boundObservables} with {@link Binding}.\n *\n * @param binding A binding to store in {@link Observable#_boundObservables}.\n * @param toObservable A observable, which is a new component of `binding`.\n * @param toPropertyName A name of `toObservable`'s property, a new component of the `binding`.\n */\nfunction updateBoundObservables(\n\tobservable: ObservableInternal,\n\tbinding: Binding,\n\ttoObservable: Observable,\n\ttoPropertyName: string\n): void {\n\tconst boundObservables = observable[ boundObservablesSymbol ]!;\n\tconst bindingsToObservable = boundObservables.get( toObservable );\n\tconst bindings = bindingsToObservable || {};\n\n\tif ( !bindings[ toPropertyName ] ) {\n\t\tbindings[ toPropertyName ] = new Set();\n\t}\n\n\t// Pass the binding to a corresponding Set in `observable._boundObservables`.\n\tbindings[ toPropertyName ].add( binding );\n\n\tif ( !bindingsToObservable ) {\n\t\tboundObservables.set( toObservable, bindings );\n\t}\n}\n\n/**\n * Synchronizes {@link Observable#_boundProperties} and {@link Observable#_boundObservables}\n * with {@link BindChain}.\n *\n * Assuming the following binding being created\n *\n * ```ts\n * A.bind( 'a', 'b' ).to( B, 'x', 'y' );\n * ```\n *\n * the following bindings were initialized by {@link Observable#bind} in {@link BindChain#_bindings}:\n *\n * ```ts\n * {\n * \ta: { observable: A, property: 'a', to: [] },\n * \tb: { observable: A, property: 'b', to: [] },\n * }\n * ```\n *\n * Iterate over all bindings in this chain and fill their `to` properties with\n * corresponding to( ... ) arguments (components of the binding), so\n *\n * ```ts\n * {\n * \ta: { observable: A, property: 'a', to: [ B, 'x' ] },\n * \tb: { observable: A, property: 'b', to: [ B, 'y' ] },\n * }\n * ```\n *\n * Then update the structure of {@link Observable#_boundObservables} with updated\n * binding, so it becomes:\n *\n * ```ts\n * Map( {\n * \tB: {\n * \t\tx: Set( [\n * \t\t\t{ observable: A, property: 'a', to: [ [ B, 'x' ] ] }\n * \t\t] ),\n * \t\ty: Set( [\n * \t\t\t{ observable: A, property: 'b', to: [ [ B, 'y' ] ] },\n * \t\t] )\n * \t}\n * } )\n * ```\n *\n * @param chain The binding initialized by {@link Observable#bind}.\n */\nfunction updateBindToBound( chain: BindChainInternal ): void {\n\tlet toProperty;\n\n\tchain._bindings.forEach( ( binding, propertyName ) => {\n\t\t// Note: For a binding without a callback, this will run only once\n\t\t// like in A.bind( 'x', 'y' ).to( B, 'a', 'b' )\n\t\t// TODO: ES6 destructuring.\n\t\tchain._to.forEach( to => {\n\t\t\ttoProperty = to.properties[ binding.callback ? 0 : chain._bindProperties.indexOf( propertyName ) ];\n\n\t\t\tbinding.to.push( [ to.observable, toProperty ] );\n\t\t\tupdateBoundObservables( chain._observable, binding, to.observable, toProperty );\n\t\t} );\n\t} );\n}\n\n/**\n * Updates an property of a {@link Observable} with a value\n * determined by an entry in {@link Observable#_boundProperties}.\n *\n * @param observable A observable which property is to be updated.\n * @param propertyName An property to be updated.\n */\nfunction updateBoundObservableProperty( observable: ObservableInternal, propertyName: string ): void {\n\tconst boundProperties = observable[ boundPropertiesSymbol ]!;\n\tconst binding = boundProperties.get( propertyName )!;\n\tlet propertyValue;\n\n\t// When a binding with callback is created like\n\t//\n\t// \t\tA.bind( 'a' ).to( B, 'b', C, 'c', callback );\n\t//\n\t// collect B.b and C.c, then pass them to callback to set A.a.\n\tif ( binding.callback ) {\n\t\tpropertyValue = binding.callback.apply( observable, binding.to.map( to => ( to[ 0 ] as any )[ to[ 1 ] ] ) );\n\t} else {\n\t\tpropertyValue = binding.to[ 0 ];\n\t\tpropertyValue = ( propertyValue[ 0 ] as any )[ propertyValue[ 1 ] ];\n\t}\n\n\tif ( Object.prototype.hasOwnProperty.call( observable, propertyName ) ) {\n\t\t( observable as any )[ propertyName ] = propertyValue;\n\t} else {\n\t\tobservable.set( propertyName as any, propertyValue );\n\t}\n}\n\n/**\n * Starts listening to changes in {@link BindChain._to} observables to update\n * {@link BindChain._observable} {@link BindChain._bindProperties}. Also sets the\n * initial state of {@link BindChain._observable}.\n *\n * @param chain The chain initialized by {@link Observable#bind}.\n */\nfunction attachBindToListeners( observable: ObservableInternal, toBindings: BindChainInternal[ '_to' ] ): void {\n\ttoBindings.forEach( to => {\n\t\tconst boundObservables = observable[ boundObservablesSymbol ]!;\n\t\tlet bindings;\n\n\t\t// If there's already a chain between the observables (`observable` listens to\n\t\t// `to.observable`), there's no need to create another `change` event listener.\n\t\tif ( !boundObservables.get( to.observable ) ) {\n\t\t\tobservable.listenTo<ObservableChangeEvent>( to.observable, 'change', ( evt, propertyName ) => {\n\t\t\t\tbindings = boundObservables.get( to.observable )![ propertyName ];\n\n\t\t\t\t// Note: to.observable will fire for any property change, react\n\t\t\t\t// to changes of properties which are bound only.\n\t\t\t\tif ( bindings ) {\n\t\t\t\t\tbindings.forEach( binding => {\n\t\t\t\t\t\tupdateBoundObservableProperty( observable, binding.property );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t} );\n}\n\n/**\n * An interface which adds \"observable properties\" and data binding functionality.\n *\n * Can be easily implemented by a class by mixing the {@link module:utils/observablemixin~Observable} mixin.\n *\n * ```ts\n * class MyClass extends ObservableMixin( OtherBaseClass ) {\n * \t// This class now implements the `Observable` interface.\n * }\n * ```\n *\n * Read more about the usage of this interface in the:\n * * {@glink framework/architecture/core-editor-architecture#event-system-and-observables Event system and observables}\n * section of the {@glink framework/architecture/core-editor-architecture Core editor architecture} guide,\n * * {@glink framework/deep-dive/observables Observables deep-dive} guide.\n */\nexport interface Observable extends Emitter {\n\n\t/**\n\t * Creates and sets the value of an observable property of this object. Such a property becomes a part\n\t * of the state and is observable.\n\t *\n\t * This method throws the `observable-set-cannot-override` error if the observable instance already\n\t * has a property with the given property name. This prevents from mistakenly overriding existing\n\t * properties and methods, but means that `foo.set( 'bar', 1 )` may be slightly slower than `foo.bar = 1`.\n\t *\n\t * In TypeScript, those properties should be declared in class using `declare` keyword. In example:\n\t *\n\t * ```ts\n\t * public declare myProp: number;\n\t *\n\t * constructor() {\n\t * \tthis.set( 'myProp', 2 );\n\t * }\n\t * ```\n\t *\n\t * @label KEY_VALUE\n\t * @param name The property's name.\n\t * @param value The property's value.\n\t */\n\tset<K extends keyof this & string>( name: K, value: this[ K ] ): void;\n\n\t/**\n\t * Creates and sets the value of an observable properties of this object. Such a property becomes a part\n\t * of the state and is observable.\n\t *\n\t * It accepts a single object literal containing key/value pairs with properties to be set.\n\t *\n\t * This method throws the `observable-set-cannot-override` error if the observable instance already\n\t * has a property with the given property name. This prevents from mistakenly overriding existing\n\t * properties and methods, but means that `foo.set( 'bar', 1 )` may be slightly slower than `foo.bar = 1`.\n\t *\n\t * In TypeScript, those properties should be declared in class using `declare` keyword. In example:\n\t *\n\t * ```ts\n\t * public declare myProp1: number;\n\t * public declare myProp2: string;\n\t *\n\t * constructor() {\n\t * \tthis.set( {\n\t * \t\t'myProp1: 2,\n\t * \t\t'myProp2: 'foo'\n\t * \t} );\n\t * }\n\t * ```\n\t * @label OBJECT\n\t * @param values An object with `name=>value` pairs.\n\t */\n\tset( values: object & { readonly [ K in keyof this ]?: unknown } ): void;\n\n\t/**\n\t * Binds {@link #set observable properties} to other objects implementing the\n\t * {@link module:utils/observablemixin~Observable} interface.\n\t *\n\t * Read more in the {@glink framework/deep-dive/observables#property-bindings dedicated} guide\n\t * covering the topic of property bindings with some additional examples.\n\t *\n\t * Consider two objects: a `button` and an associated `command` (both `Observable`).\n\t *\n\t * A simple property binding could be as follows:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\t * ```\n\t *\n\t * or even shorter:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command );\n\t * ```\n\t *\n\t * which works in the following way:\n\t *\n\t * * `button.isEnabled` **instantly equals** `command.isEnabled`,\n\t * * whenever `command.isEnabled` changes, `button.isEnabled` will immediately reflect its value.\n\t *\n\t * **Note**: To release the binding, use {@link module:utils/observablemixin~Observable#unbind}.\n\t *\n\t * You can also \"rename\" the property in the binding by specifying the new name in the `to()` chain:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command, 'isWorking' );\n\t * ```\n\t *\n\t * It is possible to bind more than one property at a time to shorten the code:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled', 'value' ).to( command );\n\t * ```\n\t *\n\t * which corresponds to:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command );\n\t * button.bind( 'value' ).to( command );\n\t * ```\n\t *\n\t * The binding can include more than one observable, combining multiple data sources in a custom callback:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command, 'isEnabled', ui, 'isVisible',\n\t * \t( isCommandEnabled, isUIVisible ) => isCommandEnabled && isUIVisible );\n\t * ```\n\t *\n\t * Using a custom callback allows processing the value before passing it to the target property:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command, 'value', value => value === 'heading1' );\n\t * ```\n\t *\n\t * It is also possible to bind to the same property in an array of observables.\n\t * To bind a `button` to multiple commands (also `Observables`) so that each and every one of them\n\t * must be enabled for the button to become enabled, use the following code:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).toMany( [ commandA, commandB, commandC ], 'isEnabled',\n\t * \t( isAEnabled, isBEnabled, isCEnabled ) => isAEnabled && isBEnabled && isCEnabled );\n\t * ```\n\t *\n\t * @label SINGLE_BIND\n\t * @param bindProperty Observable property that will be bound to other observable(s).\n\t * @returns The bind chain with the `to()` and `toMany()` methods.\n\t */\n\tbind<K extends keyof this & string>(\n\t\tbindProperty: K\n\t): SingleBindChain<K, this[ K ]>;\n\n\t/**\n\t * Binds {@link #set observable properties} to other objects implementing the\n\t * {@link module:utils/observablemixin~Observable} interface.\n\t *\n\t * Read more in the {@glink framework/deep-dive/observables#property-bindings dedicated} guide\n\t * covering the topic of property bindings with some additional examples.\n\t *\n\t * Consider two objects: a `button` and an associated `command` (both `Observable`).\n\t *\n\t * A simple property binding could be as follows:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\t * ```\n\t *\n\t * or even shorter:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command );\n\t * ```\n\t *\n\t * which works in the following way:\n\t *\n\t * * `button.isEnabled` **instantly equals** `command.isEnabled`,\n\t * * whenever `command.isEnabled` changes, `button.isEnabled` will immediately reflect its value.\n\t *\n\t * **Note**: To release the binding, use {@link module:utils/observablemixin~Observable#unbind}.\n\t *\n\t * You can also \"rename\" the property in the binding by specifying the new name in the `to()` chain:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command, 'isWorking' );\n\t * ```\n\t *\n\t * It is possible to bind more than one property at a time to shorten the code:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled', 'value' ).to( command );\n\t * ```\n\t *\n\t * which corresponds to:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command );\n\t * button.bind( 'value' ).to( command );\n\t * ```\n\t *\n\t * The binding can include more than one observable, combining multiple data sources in a custom callback:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command, 'isEnabled', ui, 'isVisible',\n\t * \t( isCommandEnabled, isUIVisible ) => isCommandEnabled && isUIVisible );\n\t * ```\n\t *\n\t * Using a custom callback allows processing the value before passing it to the target property:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command, 'value', value => value === 'heading1' );\n\t * ```\n\t *\n\t * It is also possible to bind to the same property in an array of observables.\n\t * To bind a `button` to multiple commands (also `Observables`) so that each and every one of them\n\t * must be enabled for the button to become enabled, use the following code:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).toMany( [ commandA, commandB, commandC ], 'isEnabled',\n\t * \t( isAEnabled, isBEnabled, isCEnabled ) => isAEnabled && isBEnabled && isCEnabled );\n\t * ```\n\t *\n\t * @label DUAL_BIND\n\t * @param bindProperty1 Observable property that will be bound to other observable(s).\n\t * @param bindProperty2 Observable property that will be bound to other observable(s).\n\t * @returns The bind chain with the `to()` and `toMany()` methods.\n\t */\n\tbind<K1 extends keyof this & string, K2 extends keyof this & string>(\n\t\tbindProperty1: K1,\n\t\tbindProperty2: K2\n\t): DualBindChain<K1, this[ K1 ], K2, this[ K2 ]>;\n\n\t/**\n\t * Binds {@link #set observable properties} to other objects implementing the\n\t * {@link module:utils/observablemixin~Observable} interface.\n\t *\n\t * Read more in the {@glink framework/deep-dive/observables#property-bindings dedicated} guide\n\t * covering the topic of property bindings with some additional examples.\n\t *\n\t * Consider two objects: a `button` and an associated `command` (both `Observable`).\n\t *\n\t * A simple property binding could be as follows:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\t * ```\n\t *\n\t * or even shorter:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command );\n\t * ```\n\t *\n\t * which works in the following way:\n\t *\n\t * * `button.isEnabled` **instantly equals** `command.isEnabled`,\n\t * * whenever `command.isEnabled` changes, `button.isEnabled` will immediately reflect its value.\n\t *\n\t * **Note**: To release the binding, use {@link module:utils/observablemixin~Observable#unbind}.\n\t *\n\t * You can also \"rename\" the property in the binding by specifying the new name in the `to()` chain:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command, 'isWorking' );\n\t * ```\n\t *\n\t * It is possible to bind more than one property at a time to shorten the code:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled', 'value' ).to( command );\n\t * ```\n\t *\n\t * which corresponds to:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command );\n\t * button.bind( 'value' ).to( command );\n\t * ```\n\t *\n\t * The binding can include more than one observable, combining multiple data sources in a custom callback:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command, 'isEnabled', ui, 'isVisible',\n\t * \t( isCommandEnabled, isUIVisible ) => isCommandEnabled && isUIVisible );\n\t * ```\n\t *\n\t * Using a custom callback allows processing the value before passing it to the target property:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).to( command, 'value', value => value === 'heading1' );\n\t * ```\n\t *\n\t * It is also possible to bind to the same property in an array of observables.\n\t * To bind a `button` to multiple commands (also `Observables`) so that each and every one of them\n\t * must be enabled for the button to become enabled, use the following code:\n\t *\n\t * ```ts\n\t * button.bind( 'isEnabled' ).toMany( [ commandA, commandB, commandC ], 'isEnabled',\n\t * \t( isAEnabled, isBEnabled, isCEnabled ) => isAEnabled && isBEnabled && isCEnabled );\n\t * ```\n\t *\n\t * @label MANY_BIND\n\t * @param bindProperties Observable properties that will be bound to other observable(s).\n\t * @returns The bind chain with the `to()` and `toMany()` methods.\n\t */\n\tbind( ...bindProperties: Array<keyof this & string> ): MultiBindChain;\n\n\t/**\n\t * Removes the binding created with {@link #bind}.\n\t *\n\t * ```ts\n\t * // Removes the binding for the 'a' property.\n\t * A.unbind( 'a' );\n\t *\n\t * // Removes bindings for all properties.\n\t * A.unbind();\n\t * ```\n\t *\n\t * @param unbindProperties Observable properties to be unbound. All the bindings will\n\t * be released if no properties are provided.\n\t */\n\tunbind( ...unbindProperties: Array<keyof this & string> ): void;\n\n\t/**\n\t * Turns the given methods of this object into event-based ones. This means that the new method will fire an event\n\t * (named after the method) and the original action will be plugged as a listener to that event.\n\t *\n\t * Read more in the {@glink framework/deep-dive/observables#decorating-object-methods dedicated} guide\n\t * covering the topic of decorating methods with some additional examples.\n\t *\n\t * Decorating the method does not change its behavior (it only adds an event),\n\t * but it allows to modify it later on by listening to the method's event.\n\t *\n\t * For example, to cancel the method execution the event can be {@link module:utils/eventinfo~EventInfo#stop stopped}:\n\t *\n\t * ```ts\n\t * class Foo extends ObservableMixin() {\n\t * \tconstructor() {\n\t * \t\tsuper();\n\t * \t\tthis.decorate( 'method' );\n\t * \t}\n\t *\n\t * \tmethod() {\n\t * \t\tconsole.log( 'called!' );\n\t * \t}\n\t * }\n\t *\n\t * const foo = new Foo();\n\t * foo.on( 'method', ( evt ) => {\n\t * \tevt.stop();\n\t * }, { priority: 'high' } );\n\t *\n\t * foo.method(); // Nothing is logged.\n\t * ```\n\t *\n\t *\n\t * **Note**: The high {@link module:utils/priorities~PriorityString priority} listener\n\t * has been used to execute this particular callback before the one which calls the original method\n\t * (which uses the \"normal\" priority).\n\t *\n\t * It is also possible to change the returned value:\n\t *\n\t * ```ts\n\t * foo.on( 'method', ( evt ) => {\n\t * \tevt.return = 'Foo!';\n\t * } );\n\t *\n\t * foo.method(); // -> 'Foo'\n\t * ```\n\t *\n\t * Finally, it is possible to access and modify the arguments the method is called with:\n\t *\n\t * ```ts\n\t * method( a, b ) {\n\t * \tconsole.log( `${ a }, ${ b }` );\n\t * }\n\t *\n\t * // ...\n\t *\n\t * foo.on( 'method', ( evt, args ) => {\n\t * \targs[ 0 ] = 3;\n\t *\n\t * \tconsole.log( args[ 1 ] ); // -> 2\n\t * }, { priority: 'high' } );\n\t *\n\t * foo.method( 1, 2 ); // -> '3, 2'\n\t * ```\n\t *\n\t * @param methodName Name of the method to decorate.\n\t */\n\tdecorate( methodName: keyof this & string ): void;\n}\n\ninterface ObservableInternal extends Observable {\n\t[ observablePropertiesSymbol ]?: Map<string, unknown>;\n\n\t[ decoratedMethods ]?: Array<string>;\n\n\t[ boundPropertiesSymbol ]?: Map<string, Binding>;\n\n\t[ boundObservablesSymbol]?: Map<Observable, Record<string, Set<Binding>>>;\n}\n\n/**\n * Fired when a property changed value.\n *\n * ```ts\n * observable.set( 'prop', 1 );\n *\n * observable.on<ObservableChangeEvent<number>>( 'change:prop', ( evt, propertyName, newValue, oldValue ) => {\n * \tconsole.log( `${ propertyName } has changed from ${ oldValue } to ${ newValue }` );\n * } );\n *\n * observable.prop = 2; // -> 'prop has changed from 1 to 2'\n * ```\n *\n * @eventName ~Observable#change:\\{property\\}\n * @param {String} name The property name.\n * @param {*} value The new property value.\n * @param {*} oldValue The previous property value.\n */\nexport type ObservableChangeEvent<TValue = any> = {\n\tname: 'change' | `change:${ string }`;\n\targs: [ name: string, value: TValue, oldValue: TValue ];\n};\n\n/**\n * Fired when a property value is going to be set but is not set yet (before the `change` event is fired).\n *\n * You can control the final value of the property by using\n * the {@link module:utils/eventinfo~EventInfo#return event's `return` property}.\n *\n * ```ts\n * observable.set( 'prop', 1 );\n *\n * observable.on<ObservableSetEvent<number>>( 'set:prop', ( evt, propertyName, newValue, oldValue ) => {\n * \tconsole.log( `Value is going to be changed from ${ oldValue } to ${ newValue }` );\n * \tconsole.log( `Current property value is ${ observable[ propertyName ] }` );\n *\n * \t// Let's override the value.\n * \tevt.return = 3;\n * } );\n *\n * observable.on<ObservableChangeEvent<number>>( 'change:prop', ( evt, propertyName, newValue, oldValue ) => {\n * \tconsole.log( `Value has changed from ${ oldValue } to ${ newValue }` );\n * } );\n *\n * observable.prop = 2; // -> 'Value is going to be changed from 1 to 2'\n * // -> 'Current property value is 1'\n * // -> 'Value has changed from 1 to 3'\n * ```\n *\n * **Note:** The event is fired even when the new value is the same as the old value.\n *\n * @eventName ~Observable#set:\\{property\\}\n * @param {String} name The property name.\n * @param {*} value The new property value.\n * @param {*} oldValue The previous property value.\n */\nexport type ObservableSetEvent<TValue = any> = {\n\tname: 'set' | `set:${ string }`;\n\targs: [ name: string, value: TValue, oldValue: TValue ];\n\treturn: TValue;\n};\n\n/**\n * Utility type that creates an event describing type from decorated method.\n *\n * ```ts\n * class Foo extends ObservableMixin() {\n * \tconstructor() {\n * \t\tsuper();\n * \t\tthis.decorate( 'method' );\n * \t}\n *\n * \tmethod( a: number, b: number ): number {\n * \t\treturn a + b;\n * \t}\n * }\n *\n * type FooMethodEvent = DecoratedMethodEvent<Foo, 'method'>;\n *\n * const foo = new Foo();\n *\n * foo.on<FooMethodEvent>( 'method', ( evt, [ a, b ] ) => {\n * \t// `a` and `b` are inferred as numbers.\n * } )\n * ```\n */\nexport type DecoratedMethodEvent<\n\tTObservable extends Observable & { [ N in TName ]: ( ...args: Array<any> ) => any },\n\tTName extends keyof TObservable & string\n> = {\n\tname: TName;\n\targs: [ Parameters<TObservable[ TName ]> ];\n\treturn: ReturnType<TObservable[ TName ]>;\n};\n\ninterface SingleBindChain<TKey extends string, TVal> {\n\ttoMany<O extends Observable, K extends keyof O>(\n\t\tobservables: ReadonlyArray<O>,\n\t\tkey: K,\n\t\tcallback: ( ...values: Array<O[ K ]> ) => TVal\n\t): void;\n\n\tto<O extends ObservableWithProperty<TKey, TVal>>(\n\t\tobservable: O\n\t): void;\n\tto<O extends ObservableWithProperty<TKey>>(\n\t\tobservable: O,\n\t\tcallback: ( value: O[ TKey ] ) => TVal\n\t): void;\n\tto<O extends ObservableWithProperty<K, TVal>, K extends keyof O>(\n\t\tobservable: O,\n\t\tkey: K\n\t): void;\n\tto<O extends Observable, K extends keyof O>(\n\t\tobservable: O,\n\t\tkey: K,\n\t\tcallback: ( value: O[ K ] ) => TVal,\n\t): void;\n\tto<\n\t\tO1 extends ObservableWithProperty<TKey>,\n\t\tO2 extends ObservableWithProperty<TKey>\n\t>(\n\t\tobservable1: O1,\n\t\tobservable2: O2,\n\t\tcallback: ( value1: O1[ TKey ], value2: O2[ TKey ] ) => TVal\n\t): void;\n\tto<\n\t\tO1 extends Observable,\n\t\tK1 extends keyof O1,\n\t\tO2 extends Observable,\n\t\tK2 extends keyof O2\n\t>(\n\t\tobservable1: O1,\n\t\tkey1: K1,\n\t\tobservable2: O2,\n\t\tkey2: K2,\n\t\tcallback: ( value1: O1[ K1 ], value2: O2[ K2 ] ) => TVal\n\t): void;\n\tto<\n\t\tO1 extends ObservableWithProperty<TKey>,\n\t\tO2 extends ObservableWithProperty<TKey>,\n\t\tO3 extends ObservableWithProperty<TKey>\n\t>(\n\t\tobservable1: O1,\n\t\tobservable2: O2,\n\t\tobservable3: O3,\n\t\tcallback: ( value1: O1[ TKey ], value2: O2[ TKey ], value3: O3[ TKey ] ) => TVal\n\t): void;\n\tto<\n\t\tO1 extends Observable,\n\t\tK1 extends keyof O1,\n\t\tO2 extends Observable,\n\t\tK2 extends keyof O2,\n\t\tO3 extends Observable,\n\t\tK3 extends keyof O3\n\t>(\n\t\tobservable1: O1,\n\t\tkey1: K1,\n\t\tobservable2: O2,\n\t\tkey2: K2,\n\t\tobservable3: O3,\n\t\tkey3: K3,\n\t\tcallback: ( value1: O1[ K1 ], value2: O2[ K2 ], value3: O3[ K3 ] ) => TVal\n\t): void;\n\tto<\n\t\tO1 extends ObservableWithProperty<TKey>,\n\t\tO2 extends ObservableWithProperty<TKey>,\n\t\tO3 extends ObservableWithProperty<TKey>,\n\t\tO4 extends ObservableWithProperty<TKey>\n\t>(\n\t\tobservable1: O1,\n\t\tobservable2: O2,\n\t\tobservable3: O3,\n\t\tobservable4: O4,\n\t\tcallback: ( value1: O1[ TKey ], value2: O2[ TKey ], value3: O3[ TKey ], value4: O4[ TKey ] ) => TVal\n\t): void;\n\tto<\n\t\tO1 extends Observable,\n\t\tK1 extends keyof O1,\n\t\tO2 extends Observable,\n\t\tK2 extends keyof O2,\n\t\tO3 extends Observable,\n\t\tK3 extends keyof O3,\n\t\tO4 extends Observable,\n\t\tK4 extends keyof O4\n\t>(\n\t\tobservable1: O1,\n\t\tkey1: K1,\n\t\tobservable2: O2,\n\t\tkey2: K2,\n\t\tobservable3: O3,\n\t\tkey3: K3,\n\t\tobservable4: O4,\n\t\tkey4: K4,\n\t\tcallback: ( value1: O1[ K1 ], value2: O2[ K2 ], value3: O3[ K3 ], value4: O4[ K4 ] ) => TVal\n\t): void;\n\tto<\n\t\tO1 extends ObservableWithProperty<TKey>,\n\t\tO2 extends ObservableWithProperty<TKey>,\n\t\tO3 extends ObservableWithProperty<TKey>,\n\t\tO4 extends ObservableWithProperty<TKey>,\n\t\tO5 extends ObservableWithProperty<TKey>\n\t>(\n\t\tobservable1: O1,\n\t\tobservable2: O2,\n\t\tobservable3: O3,\n\t\tobservable4: O4,\n\t\tobservable5: O5,\n\t\tcallback: ( value1: O1[ TKey ], value2: O2[ TKey ], value3: O3[ TKey ], value4: O4[ TKey ], value5: O5[ TKey ] ) => TVal\n\t): void;\n\tto<\n\t\tO1 extends Observable,\n\t\tK1 extends keyof O1,\n\t\tO2 extends Observable,\n\t\tK2 extends keyof O2,\n\t\tO3 extends Observable,\n\t\tK3 extends keyof O3,\n\t\tO4 extends Observable,\n\t\tK4 extends keyof O4,\n\t\tO5 extends Observable,\n\t\tK5 extends keyof O5\n\t>(\n\t\tobservable1: O1,\n\t\tkey1: K1,\n\t\tobservable2: O2,\n\t\tkey2: K2,\n\t\tobservable3: O3,\n\t\tkey3: K3,\n\t\tobservable4: O4,\n\t\tkey4: K4,\n\t\tobservable5: O5,\n\t\tkey5: K5,\n\t\tcallback: ( value1: O1[ K1 ], value2: O2[ K2 ], value3: O3[ K3 ], value4: O4[ K4 ], value5: O5[ K5 ] ) => TVal\n\t): void;\n}\n\n/**\n * A helper type that can be used as a constraint, ensuring the type is both observable and have the given property.\n *\n * ```ts\n * // Ensures that `obj` is `Observable` and have property named 'abc'.\n * function f<O extends ObservableWithProperty<'abc'>>( obj: O ) {}\n *\n * // Ensures that `obj` is `Observable` and have property named 'abc' with value `number`.\n * function f<O extends ObservableWithProperty<'abc', number>>( obj: O ) {}\n * ```\n */\nexport type ObservableWithProperty<TKey extends PropertyKey, TVal = any> = undefined extends TVal ?\n\tObservable & { [ P in TKey ]?: TVal } :\n\tObservable & { [ P in TKey ]: TVal };\n\ninterface DualBindChain<TKey1 extends string, TVal1, TKey2 extends string, TVal2> {\n\tto<\n\t\tO extends ObservableWithProperty<K1, TVal1> & ObservableWithProperty<K2, TVal2>,\n\t\tK1 extends keyof O,\n\t\tK2 extends keyof O\n\t>(\n\t\tobservable: O,\n\t\tkey1: K1,\n\t\tkey2: K2\n\t): void;\n\n\tto<\n\t\tO extends ObservableWithProperty<TKey1, TVal1> & ObservableWithProperty<TKey2, TVal2>\n\t>(\n\t\tobservable: O\n\t): void;\n}\n\ninterface MultiBindChain {\n\tto<O extends Observable>( observable: O, ...properties: Array<keyof O> ): void;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/elementreplacer\n */\n\n/**\n * Utility class allowing to hide existing HTML elements or replace them with given ones in a way that doesn't remove\n * the original elements from the DOM.\n */\nexport default class ElementReplacer {\n\t/**\n\t * The elements replaced by {@link #replace} and their replacements.\n\t */\n\tprivate _replacedElements: Array<{ element: HTMLElement; newElement?: HTMLElement }>;\n\n\tconstructor() {\n\t\tthis._replacedElements = [];\n\t}\n\n\t/**\n\t * Hides the `element` and, if specified, inserts the the given element next to it.\n\t *\n\t * The effect of this method can be reverted by {@link #restore}.\n\t *\n\t * @param element The element to replace.\n\t * @param newElement The replacement element. If not passed, then the `element` will just be hidden.\n\t */\n\tpublic replace( element: HTMLElement, newElement?: HTMLElement ): void {\n\t\tthis._replacedElements.push( { element, newElement } );\n\n\t\telement.style.display = 'none';\n\n\t\tif ( newElement ) {\n\t\t\telement.parentNode!.insertBefore( newElement, element.nextSibling );\n\t\t}\n\t}\n\n\t/**\n\t * Restores what {@link #replace} did.\n\t */\n\tpublic restore(): void {\n\t\tthis._replacedElements.forEach( ( { element, newElement } ) => {\n\t\t\telement.style.display = '';\n\n\t\t\tif ( newElement ) {\n\t\t\t\tnewElement.remove();\n\t\t\t}\n\t\t} );\n\n\t\tthis._replacedElements = [];\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/count\n */\n\n/**\n * Returns the number of items return by the iterator.\n *\n * ```ts\n * count( [ 1, 2, 3, 4, 5 ] ); // 5;\n * ```\n *\n * @param iterable Any iterable.\n * @returns Number of items returned by that iterable.\n */\nexport default function count( iterable: Iterable<unknown> ): number {\n\tlet count = 0;\n\n\tfor ( const _ of iterable ) { // eslint-disable-line no-unused-vars\n\t\tcount++;\n\t}\n\n\treturn count;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/comparearrays\n */\n\n/**\n * Compares how given arrays relate to each other. One array can be: same as another array, prefix of another array\n * or completely different. If arrays are different, first index at which they differ is returned. Otherwise,\n * a flag specifying the relation is returned. Flags are negative numbers, so whenever a number >= 0 is returned\n * it means that arrays differ.\n *\n * ```ts\n * compareArrays( [ 0, 2 ], [ 0, 2 ] );\t\t// 'same'\n * compareArrays( [ 0, 2 ], [ 0, 2, 1 ] );\t\t// 'prefix'\n * compareArrays( [ 0, 2 ], [ 0 ] );\t\t\t// 'extension'\n * compareArrays( [ 0, 2 ], [ 1, 2 ] );\t\t// 0\n * compareArrays( [ 0, 2 ], [ 0, 1 ] );\t\t// 1\n * ```\n *\n * @param a Array that is compared.\n * @param b Array to compare with.\n * @returns How array `a` is related to `b`.\n */\nexport default function compareArrays( a: ReadonlyArray<unknown>, b: ReadonlyArray<unknown> ): ArrayRelation | number {\n\tconst minLen = Math.min( a.length, b.length );\n\n\tfor ( let i = 0; i < minLen; i++ ) {\n\t\tif ( a[ i ] != b[ i ] ) {\n\t\t\t// The arrays are different.\n\t\t\treturn i;\n\t\t}\n\t}\n\n\t// Both arrays were same at all points.\n\tif ( a.length == b.length ) {\n\t\t// If their length is also same, they are the same.\n\t\treturn 'same';\n\t} else if ( a.length < b.length ) {\n\t\t// Compared array is shorter so it is a prefix of the other array.\n\t\treturn 'prefix';\n\t} else {\n\t\t// Compared array is longer so it is an extension of the other array.\n\t\treturn 'extension';\n\t}\n}\n\n/**\n * Array relation.\n */\nexport type ArrayRelation = 'extension' | 'same' | 'prefix';\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/isiterable\n */\n\n/**\n * Checks if value implements iterator interface.\n *\n * @param value The value to check.\n * @returns True if value implements iterator interface.\n */\nexport default function isIterable( value: any ): value is Iterable<any> {\n\treturn !!( value && value[ Symbol.iterator ] );\n}\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nexport default isString;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/createelement\n */\n\nimport isIterable from '../isiterable';\nimport { isString } from 'lodash-es';\n\n/**\n * Attributes to be applied to the HTML element.\n */\ntype HTMLElementAttributes = { readonly [ key: string ]: string };\n\n/**\n * Attributes to be applied to the SVG element.\n */\ntype SVGElementAttributes = HTMLElementAttributes & { xmlns: string };\n\n/**\n * Element or elements that will be added to the created element as children. Strings will be automatically turned into Text nodes.\n */\ntype ChildrenElements = Node | string | Iterable<Node | string>;\n\n/**\n * Creates an HTML element with attributes and children elements.\n *\n * ```ts\n * createElement( document, 'p' ); // <p>\n * createElement( document, 'p', { class: 'foo' } ); // <p class=\"foo\">\n * createElement( document, 'p', null, 'foo' ); // <p>foo</p>\n * createElement( document, 'p', null, [ createElement(...) ] ); // <p><...></p>\n * ```\n *\n * @label HTML_ELEMENT\n * @param doc Document used to create the element.\n * @param name Name of the HTML element.\n * @param attributes Object where keys represent attribute keys and values represent attribute values.\n * @param children Child or any iterable of children. Strings will be automatically turned into Text nodes.\n * @returns HTML element.\n */\nexport default function createElement<T extends keyof HTMLElementTagNameMap>(\n\tdoc: Document,\n\tname: T,\n\tattributes?: HTMLElementAttributes,\n\tchildren?: ChildrenElements\n): HTMLElementTagNameMap[T];\n\n/**\n * Creates an SVG element with attributes and children elements.\n *\n * ```ts\n * createElement( document, 'mask', { xmlns: 'http://www.w3.org/2000/svg' } ); // <mask>\n * createElement( document, 'mask', { xmlns: 'http://www.w3.org/2000/svg', id: 'foo' } ); // <mask id=\"foo\">\n * createElement( document, 'mask', { xmlns: 'http://www.w3.org/2000/svg' }, 'foo' ); // <mask>foo</mask>\n * createElement( document, 'mask', { xmlns: 'http://www.w3.org/2000/svg' }, [ createElement(...) ] ); // <mask><...></mask>\n * ```\n *\n * @label SVG_ELEMENT\n * @param doc Document used to create the element.\n * @param name Name of the SVG element.\n * @param attributes Object where keys represent attribute keys and values represent attribute values.\n * @param children Child or any iterable of children. Strings will be automatically turned into Text nodes.\n * @returns SVG element.\n */\nexport default function createElement<T extends keyof SVGElementTagNameMap>(\n\tdoc: Document,\n\tname: T,\n\tattributes: SVGElementAttributes,\n\tchildren?: ChildrenElements\n): SVGElementTagNameMap[T];\n\n/**\n * Creates an HTML or SVG element with attributes and children elements.\n *\n * ```ts\n * createElement( document, 'p' ); // <p>\n * createElement( document, 'mask', { xmlns: 'http://www.w3.org/2000/svg' } ); // <mask>\n * ```\n *\n * @param doc Document used to create the element.\n * @param name Name of the element.\n * @param attributes Object where keys represent attribute keys and values represent attribute values.\n * @param children Child or any iterable of children. Strings will be automatically turned into Text nodes.\n * @returns HTML or SVG element.\n */\nexport default function createElement(\n\tdoc: Document,\n\tname: string,\n\tattributes: SVGElementAttributes | HTMLElementAttributes = {},\n\tchildren: ChildrenElements = []\n): Element {\n\tconst namespace = attributes && attributes.xmlns;\n\tconst element = namespace ? doc.createElementNS( namespace, name ) : doc.createElement( name );\n\n\tfor ( const key in attributes ) {\n\t\telement.setAttribute( key, attributes[ key ] );\n\t}\n\n\tif ( isString( children ) || !isIterable( children ) ) {\n\t\tchildren = [ children ];\n\t}\n\n\tfor ( let child of children ) {\n\t\tif ( isString( child ) ) {\n\t\t\tchild = doc.createTextNode( child );\n\t\t}\n\n\t\telement.appendChild( child );\n\t}\n\n\treturn element;\n}\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\nfunction cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n}\n\nexport default cloneDeepWith;\n","import isObjectLike from './isObjectLike.js';\nimport isPlainObject from './isPlainObject.js';\n\n/**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\nfunction isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n}\n\nexport default isElement;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/config\n */\n\nimport { isPlainObject, isElement, cloneDeepWith } from 'lodash-es';\n\n/**\n * Handles a configuration dictionary.\n *\n * @typeParam Cfg A type of the configuration dictionary.\n */\nexport default class Config<Cfg> {\n\t/**\n\t * Store for the whole configuration.\n\t */\n\tprivate readonly _config: Record<string, any>;\n\n\t/**\n\t * Creates an instance of the {@link ~Config} class.\n\t *\n\t * @param configurations The initial configurations to be set. Usually, provided by the user.\n\t * @param defaultConfigurations The default configurations. Usually, provided by the system.\n\t */\n\tconstructor( configurations?: Partial<Cfg>, defaultConfigurations?: Partial<Cfg> ) {\n\t\tthis._config = {};\n\n\t\t// Set default configuration.\n\t\tif ( defaultConfigurations ) {\n\t\t\t// Clone the configuration to make sure that the properties will not be shared\n\t\t\t// between editors and make the watchdog feature work correctly.\n\t\t\tthis.define( cloneConfig( defaultConfigurations ) );\n\t\t}\n\n\t\t// Set initial configuration.\n\t\tif ( configurations ) {\n\t\t\tthis._setObjectToTarget( this._config, configurations );\n\t\t}\n\t}\n\n\t/**\n\t * Set configuration values.\n\t *\n\t * It also accepts setting a \"deep configuration\" by using dots in the name. For example, `'resize.width'` sets\n\t * the value for the `width` configuration in the `resize` subset.\n\t *\n\t * ```ts\n\t * config.set( 'resize.width', 500 );\n\t * ```\n\t *\n\t * It accepts both a name/value pair or an object, which properties and values will be used to set\n\t * configurations. See {@link #set:CONFIG_OBJECT}.\n\t *\n\t * @label KEY_VALUE\n\t * @param name The configuration name. Configuration names are case-sensitive.\n\t * @param value The configuration value.\n\t */\n\tpublic set<K extends string>( name: K, value: GetSubConfig<Cfg, K> ): void;\n\n\t/**\n\t * Set configuration values.\n\t *\n\t * It accepts an object, which properties and values will be used to set configurations.\n\t *\n\t * ```ts\n\t * config.set( {\n\t * \twidth: 500\n\t * \ttoolbar: {\n\t * \t\tcollapsed: true\n\t * \t}\n\t * } );\n\t *\n\t * // Equivalent to:\n\t * config.set( 'width', 500 );\n\t * config.set( 'toolbar.collapsed', true );\n\t * ```\n\t *\n\t * Passing an object as the value will amend the configuration, not replace it.\n\t *\n\t * ```ts\n\t * config.set( 'toolbar', {\n\t * \tcollapsed: true,\n\t * } );\n\t *\n\t * config.set( 'toolbar', {\n\t * \tcolor: 'red',\n\t * } );\n\t *\n\t * config.get( 'toolbar.collapsed' ); // true\n\t * config.get( 'toolbar.color' ); // 'red'\n\t * ```\n\t *\n\t * It accepts both a name/value pair or an object, which properties and values will be used to set\n\t * configurations. See {@link #set:KEY_VALUE}.\n\t *\n\t * @label CONFIG_OBJECT\n\t * @param config The configuration object from which take properties as\n\t * configuration entries. Configuration names are case-sensitive.\n\t */\n\tpublic set( config: Partial<Cfg> ): void;\n\n\tpublic set( name: string | Record<string, any>, value?: any ): void {\n\t\tthis._setToTarget( this._config, name, value );\n\t}\n\n\t/**\n\t * Does exactly the same as {@link #set:KEY_VALUE} with one exception – passed configuration extends\n\t * existing one, but does not overwrite already defined values.\n\t *\n\t * This method is supposed to be called by plugin developers to setup plugin's configurations. It would be\n\t * rarely used for other needs.\n\t *\n\t * @label KEY_VALUE\n\t * @param name The configuration name. Configuration names are case-sensitive.\n\t * @param value The configuration value.\n\t */\n\tpublic define<K extends string>( name: K, value: GetSubConfig<Cfg, K> ): void;\n\n\t/**\n\t * Does exactly the same as {@link #set:CONFIG_OBJECT} with one exception – passed configuration extends\n\t * existing one, but does not overwrite already defined values.\n\t *\n\t * This method is supposed to be called by plugin developers to setup plugin's configurations. It would be\n\t * rarely used for other needs.\n\t *\n\t * @label CONFIG_OBJECT\n\t * @param config The configuration object from which take properties as\n\t * configuration entries. Configuration names are case-sensitive.\n\t */\n\tpublic define( config: Partial<Cfg> ): void;\n\n\tpublic define( name: string | Record<string, any>, value?: any ): void {\n\t\tconst isDefine = true;\n\n\t\tthis._setToTarget( this._config, name, value, isDefine );\n\t}\n\n\t/**\n\t * Gets the value for a configuration entry.\n\t *\n\t * ```ts\n\t * config.get( 'name' );\n\t * ```\n\t *\n\t * Deep configurations can be retrieved by separating each part with a dot.\n\t *\n\t * ```ts\n\t * config.get( 'toolbar.collapsed' );\n\t * ```\n\t *\n\t * @param name The configuration name. Configuration names are case-sensitive.\n\t * @returns The configuration value or `undefined` if the configuration entry was not found.\n\t */\n\tpublic get<K extends string>( name: K ): GetSubConfig<Cfg, K> | undefined {\n\t\treturn this._getFromSource( this._config, name );\n\t}\n\n\t/**\n\t * Iterates over all top level configuration names.\n\t */\n\tpublic* names(): Iterable<string> {\n\t\tfor ( const name of Object.keys( this._config ) ) {\n\t\t\tyield name;\n\t\t}\n\t}\n\n\t/**\n\t * Saves passed configuration to the specified target (nested object).\n\t *\n\t * @param target Nested config object.\n\t * @param name The configuration name or an object from which take properties as\n\t * configuration entries. Configuration names are case-sensitive.\n\t * @param value The configuration value. Used if a name is passed.\n\t * @param isDefine Define if passed configuration should overwrite existing one.\n\t */\n\tprivate _setToTarget( target: any, name: any, value: any, isDefine: boolean = false ): void {\n\t\t// In case of an object, iterate through it and call `_setToTarget` again for each property.\n\t\tif ( isPlainObject( name ) ) {\n\t\t\tthis._setObjectToTarget( target, name, isDefine );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// The configuration name should be split into parts if it has dots. E.g. `resize.width` -> [`resize`, `width`].\n\t\tconst parts = name.split( '.' );\n\n\t\t// Take the name of the configuration out of the parts. E.g. `resize.width` -> `width`.\n\t\tname = parts.pop();\n\n\t\t// Iterate over parts to check if currently stored configuration has proper structure.\n\t\tfor ( const part of parts ) {\n\t\t\t// If there is no object for specified part then create one.\n\t\t\tif ( !isPlainObject( target[ part ] ) ) {\n\t\t\t\ttarget[ part ] = {};\n\t\t\t}\n\n\t\t\t// Nested object becomes a target.\n\t\t\ttarget = target[ part ];\n\t\t}\n\n\t\t// In case of value is an object.\n\t\tif ( isPlainObject( value ) ) {\n\t\t\t// We take care of proper config structure.\n\t\t\tif ( !isPlainObject( target[ name ] ) ) {\n\t\t\t\ttarget[ name ] = {};\n\t\t\t}\n\n\t\t\ttarget = target[ name ];\n\n\t\t\t// And iterate through this object calling `_setToTarget` again for each property.\n\t\t\tthis._setObjectToTarget( target, value, isDefine );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Do nothing if we are defining configuration for non empty name.\n\t\tif ( isDefine && typeof target[ name ] != 'undefined' ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttarget[ name ] = value;\n\t}\n\n\t/**\n\t * Get specified configuration from specified source (nested object).\n\t *\n\t * @param source level of nested object.\n\t * @param name The configuration name. Configuration names are case-sensitive.\n\t * @returns The configuration value or `undefined` if the configuration entry was not found.\n\t */\n\tprivate _getFromSource( source: any, name: string ): any {\n\t\t// The configuration name should be split into parts if it has dots. E.g. `resize.width` -> [`resize`, `width`].\n\t\tconst parts = name.split( '.' );\n\n\t\t// Take the name of the configuration out of the parts. E.g. `resize.width` -> `width`.\n\t\tname = parts.pop()!;\n\n\t\t// Iterate over parts to check if currently stored configuration has proper structure.\n\t\tfor ( const part of parts ) {\n\t\t\tif ( !isPlainObject( source[ part ] ) ) {\n\t\t\t\tsource = null;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Nested object becomes a source.\n\t\t\tsource = source[ part ];\n\t\t}\n\n\t\t// Always returns undefined for non existing configuration.\n\t\treturn source ? cloneConfig( source[ name ] ) : undefined;\n\t}\n\n\t/**\n\t * Iterates through passed object and calls {@link #_setToTarget} method with object key and value for each property.\n\t *\n\t * @param target Nested config object.\n\t * @param configuration Configuration data set\n\t * @param isDefine Defines if passed configuration is default configuration or not.\n\t */\n\tprivate _setObjectToTarget( target: any, configuration: any, isDefine?: boolean ): void {\n\t\tObject.keys( configuration ).forEach( key => {\n\t\t\tthis._setToTarget( target, key, configuration[ key ], isDefine );\n\t\t} );\n\t}\n}\n\n/**\n * Clones configuration object or value.\n */\nfunction cloneConfig<T>( source: T ): T {\n\treturn cloneDeepWith( source, leaveDOMReferences );\n}\n\n/**\n * A customized function for cloneDeepWith.\n * It will leave references to DOM Elements instead of cloning them.\n */\nfunction leaveDOMReferences( value: unknown ): unknown {\n\treturn isElement( value ) ? value : undefined;\n}\n\n/**\n * An utility type excluding primitive values and arrays from the union.\n */\nexport type OnlyObject<T> = Exclude<T, undefined | null | string | number | boolean | Array<any>>;\n\n/**\n * An utility type extracting configuration value from the given name.\n *\n * @typeParam T The type of a configuration dictionary.\n * @typeParam K The literal type of configuration name (dot-separated path).\n */\nexport type GetSubConfig<T, K> = K extends keyof T ?\n\tT[ K ] :\n\tK extends `${ infer K1 }.${ infer K2 }` ?\n\t\tK1 extends keyof T ?\n\t\t\tGetSubConfig<OnlyObject<T[ K1 ]>, K2> :\n\t\t\tunknown :\n\t\tunknown;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/isnode\n */\n\n/**\n * Checks if the object is a native DOM Node.\n */\nexport default function isNode( obj: any ): obj is Node {\n\tif ( obj ) {\n\t\tif ( obj.defaultView ) {\n\t\t\treturn obj instanceof obj.defaultView.Document;\n\t\t} else if ( obj.ownerDocument && obj.ownerDocument.defaultView ) {\n\t\t\treturn obj instanceof obj.ownerDocument.defaultView.Node;\n\t\t}\n\t}\n\n\treturn false;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/iswindow\n */\n\n/**\n * Checks if the object is a native DOM Window.\n */\nexport default function isWindow( obj: unknown ): obj is Window {\n\tconst stringifiedObject = Object.prototype.toString.apply( obj );\n\n\t// Returns `true` for the `window` object in browser environments.\n\tif ( stringifiedObject == '[object Window]' ) {\n\t\treturn true;\n\t}\n\n\t// Returns `true` for the `window` object in the Electron environment.\n\tif ( stringifiedObject == '[object global]' ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/emittermixin\n */\n\nimport EmitterMixin, {\n\t_getEmitterListenedTo,\n\t_setEmitterId,\n\ttype Emitter,\n\ttype CallbackOptions,\n\ttype BaseEvent,\n\ttype GetCallback\n} from '../emittermixin';\nimport uid from '../uid';\nimport isNode from './isnode';\nimport isWindow from './iswindow';\nimport type EventInfo from '../eventinfo';\nimport type { Constructor, Mixed } from '../mix';\n\nconst defaultEmitterClass = DomEmitterMixin( EmitterMixin() );\n\n/**\n * Mixin that injects the DOM events API into its host. It provides the API\n * compatible with {@link module:utils/emittermixin~Emitter}.\n *\n * This function creates a class that inherits from the provided `base` and implements `Emitter` interface.\n *\n * DOM emitter mixin is by default available in the {@link module:ui/view~View} class,\n * but it can also be mixed into any other class:\n *\n * ```ts\n * import DomEmitterMixin from '../utils/dom/emittermixin.js';\n *\n * class BaseClass { ... }\n *\n * class SomeView extends DomEmitterMixin( BaseClass ) {}\n *\n * const view = new SomeView();\n * view.listenTo( domElement, ( evt, domEvt ) => {\n * \tconsole.log( evt, domEvt );\n * } );\n * ```\n *\n * @label EXTENDS\n */\nexport default function DomEmitterMixin<Base extends Constructor<Emitter>>( base: Base ): Mixed<Base, DomEmitter>;\n\n/**\n * Mixin that injects the DOM events API into its host. It provides the API\n * compatible with {@link module:utils/emittermixin~Emitter}.\n *\n * This function creates a class that implements `Emitter` interface.\n *\n * DOM emitter mixin is by default available in the {@link module:ui/view~View} class,\n * but it can also be mixed into any other class:\n *\n * ```ts\n * import DomEmitterMixin from '../utils/dom/emittermixin.js';\n *\n * class SomeView extends DomEmitterMixin() {}\n *\n * const view = new SomeView();\n * view.listenTo( domElement, ( evt, domEvt ) => {\n * \tconsole.log( evt, domEvt );\n * } );\n * ```\n *\n * @label NO_ARGUMENTS\n */\nexport default function DomEmitterMixin(): {\n\tnew (): DomEmitter;\n\tprototype: DomEmitter;\n};\n\nexport default function DomEmitterMixin( base?: Constructor<Emitter> ): unknown {\n\tif ( !base ) {\n\t\treturn defaultEmitterClass;\n\t}\n\n\tabstract class Mixin extends base implements DomEmitter {\n\t\tpublic override listenTo<K extends keyof HTMLElementEventMap>(\n\t\t\temitter: Node | Window,\n\t\t\tevent: K,\n\t\t\tcallback: ( this: this, ev: EventInfo, event: HTMLElementEventMap[ K ] ) => void,\n\t\t\toptions?: CallbackOptions & { readonly useCapture?: boolean; readonly usePassive?: boolean }\n\t\t): void;\n\t\tpublic override listenTo<TEvent extends BaseEvent>(\n\t\t\temitter: Emitter,\n\t\t\tevent: TEvent[ 'name' ],\n\t\t\tcallback: GetCallback<TEvent>,\n\t\t\toptions?: CallbackOptions\n\t\t): void;\n\t\tpublic override listenTo(\n\t\t\temitter: Emitter | Node | Window,\n\t\t\tevent: string,\n\t\t\tcallback: ( ev: EventInfo, ...args: Array<any> ) => void,\n\t\t\toptions: CallbackOptions & { readonly useCapture?: boolean; readonly usePassive?: boolean } = {}\n\t\t): void {\n\t\t\t// Check if emitter is an instance of DOM Node. If so, use corresponding ProxyEmitter (or create one if not existing).\n\t\t\tif ( isNode( emitter ) || isWindow( emitter ) ) {\n\t\t\t\tconst proxyOptions = {\n\t\t\t\t\tcapture: !!options.useCapture,\n\t\t\t\t\tpassive: !!options.usePassive\n\t\t\t\t};\n\n\t\t\t\tconst proxyEmitter = this._getProxyEmitter( emitter, proxyOptions ) || new ProxyEmitter( emitter, proxyOptions );\n\n\t\t\t\tthis.listenTo( proxyEmitter, event, callback, options );\n\t\t\t} else {\n\t\t\t\t// Execute parent class method with Emitter (or ProxyEmitter) instance.\n\t\t\t\tsuper.listenTo( emitter, event, callback, options );\n\t\t\t}\n\t\t}\n\n\t\tpublic override stopListening(\n\t\t\temitter?: Emitter | Node | Window,\n\t\t\tevent?: string,\n\t\t\tcallback?: Function\n\t\t): void {\n\t\t\t// Check if the emitter is an instance of DOM Node. If so, forward the call to the corresponding ProxyEmitters.\n\t\t\tif ( isNode( emitter ) || isWindow( emitter ) ) {\n\t\t\t\tconst proxyEmitters = this._getAllProxyEmitters( emitter );\n\n\t\t\t\tfor ( const proxy of proxyEmitters ) {\n\t\t\t\t\tthis.stopListening( proxy, event, callback );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Execute parent class method with Emitter (or ProxyEmitter) instance.\n\t\t\t\tsuper.stopListening( emitter, event, callback );\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Retrieves ProxyEmitter instance for given DOM Node residing in this Host and given options.\n\t\t *\n\t\t * @param node DOM Node of the ProxyEmitter.\n\t\t * @param options Additional options.\n\t\t * @param options.useCapture Indicates that events of this type will be dispatched to the registered\n\t\t * listener before being dispatched to any EventTarget beneath it in the DOM tree.\n\t\t * @param options.usePassive Indicates that the function specified by listener will never call preventDefault()\n\t\t * and prevents blocking browser's main thread by this event handler.\n\t\t * @returns ProxyEmitter instance bound to the DOM Node.\n\t\t */\n\t\tprivate _getProxyEmitter(\n\t\t\tnode: Node | Window,\n\t\t\toptions: { capture: boolean; passive: boolean }\n\t\t): Emitter | null {\n\t\t\treturn _getEmitterListenedTo( this, getProxyEmitterId( node, options ) );\n\t\t}\n\n\t\t/**\n\t\t * Retrieves all the ProxyEmitter instances for given DOM Node residing in this Host.\n\t\t *\n\t\t * @param node DOM Node of the ProxyEmitter.\n\t\t */\n\t\tprivate _getAllProxyEmitters( node: Node | Window ): Array<ProxyEmitter> {\n\t\t\treturn [\n\t\t\t\t{ capture: false, passive: false },\n\t\t\t\t{ capture: false, passive: true },\n\t\t\t\t{ capture: true, passive: false },\n\t\t\t\t{ capture: true, passive: true }\n\t\t\t].map( options => this._getProxyEmitter( node, options ) ).filter( proxy => !!proxy ) as any;\n\t\t}\n\t}\n\n\treturn Mixin;\n}\n\n// Backward compatibility with `mix`\n( [\n\t'_getProxyEmitter', '_getAllProxyEmitters',\n\t'on', 'once', 'off', 'listenTo',\n\t'stopListening', 'fire', 'delegate', 'stopDelegating',\n\t'_addEventListener', '_removeEventListener'\n] ).forEach( key => {\n\t( DomEmitterMixin as any )[ key ] = ( defaultEmitterClass.prototype as any )[ key ];\n} );\n\n/**\n * Creates a ProxyEmitter instance. Such an instance is a bridge between a DOM Node firing events\n * and any Host listening to them. It is backwards compatible with {@link module:utils/emittermixin~Emitter#on}.\n * There is a separate instance for each combination of modes (useCapture & usePassive). The mode is concatenated with\n * UID stored in HTMLElement to give each instance unique identifier.\n *\n * listenTo( click, ... )\n * +-----------------------------------------+\n * | stopListening( ... ) |\n * +----------------------------+ | addEventListener( click, ... )\n * | Host | | +---------------------------------------------+\n * +----------------------------+ | | removeEventListener( click, ... ) |\n * | _listeningTo: { | +----------v-------------+ |\n * | UID+mode: { | | ProxyEmitter | |\n * | emitter: ProxyEmitter, | +------------------------+ +------------v----------+\n * | callbacks: { | | events: { | | Node (HTMLElement) |\n * | click: [ callbacks ] | | click: [ callbacks ] | +-----------------------+\n * | } | | }, | | data-ck-expando: UID |\n * | } | | _domNode: Node, | +-----------------------+\n * | } | | _domListeners: {}, | |\n * | +------------------------+ | | _emitterId: UID+mode | |\n * | | DomEmitterMixin | | +--------------^---------+ |\n * | +------------------------+ | | | |\n * +--------------^-------------+ | +---------------------------------------------+\n * | | click (DOM Event)\n * +-----------------------------------------+\n * fire( click, DOM Event )\n */\nclass ProxyEmitter extends EmitterMixin() {\n\tprivate readonly _domNode: Node | Window;\n\tprivate readonly _options: { capture: boolean; passive: boolean };\n\n\t/**\n\t * @param node DOM Node that fires events.\n\t * @param options Additional options.\n\t * @param options.useCapture Indicates that events of this type will be dispatched to the registered\n\t * listener before being dispatched to any EventTarget beneath it in the DOM tree.\n\t * @param options.usePassive Indicates that the function specified by listener will never call preventDefault()\n\t * and prevents blocking browser's main thread by this event handler.\n\t */\n\tconstructor(\n\t\tnode: Node | Window,\n\t\toptions: { capture: boolean; passive: boolean }\n\t) {\n\t\tsuper();\n\n\t\t// Set emitter ID to match DOM Node \"expando\" property.\n\t\t_setEmitterId( this, getProxyEmitterId( node, options ) );\n\n\t\t// Remember the DOM Node this ProxyEmitter is bound to.\n\t\tthis._domNode = node;\n\n\t\t// And given options.\n\t\tthis._options = options;\n\t}\n\n\t/**\n\t * Collection of native DOM listeners.\n\t */\n\tprivate _domListeners?: {\n\t\t[ event: string ]: {\n\t\t\t( domEvent: unknown ): void;\n\t\t\tremoveListener(): void;\n\t\t};\n\t};\n\n\t/**\n\t * Registers a callback function to be executed when an event is fired.\n\t *\n\t * It attaches a native DOM listener to the DOM Node. When fired,\n\t * a corresponding Emitter event will also fire with DOM Event object as an argument.\n\t *\n\t * **Note**: This is automatically called by the\n\t * {@link module:utils/emittermixin~Emitter#listenTo `Emitter#listenTo()`}.\n\t *\n\t * @param event The name of the event.\n\t */\n\tpublic attach( event: string ): void {\n\t\t// If the DOM Listener for given event already exist it is pointless\n\t\t// to attach another one.\n\t\tif ( this._domListeners && this._domListeners[ event ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst domListener = this._createDomListener( event );\n\n\t\t// Attach the native DOM listener to DOM Node.\n\t\tthis._domNode.addEventListener( event, domListener, this._options );\n\n\t\tif ( !this._domListeners ) {\n\t\t\tthis._domListeners = {};\n\t\t}\n\n\t\t// Store the native DOM listener in this ProxyEmitter. It will be helpful\n\t\t// when stopping listening to the event.\n\t\tthis._domListeners[ event ] = domListener;\n\t}\n\n\t/**\n\t * Stops executing the callback on the given event.\n\t *\n\t * **Note**: This is automatically called by the\n\t * {@link module:utils/emittermixin~Emitter#stopListening `Emitter#stopListening()`}.\n\t *\n\t * @param event The name of the event.\n\t */\n\tpublic detach( event: string ): void {\n\t\tlet events;\n\n\t\t// Remove native DOM listeners which are orphans. If no callbacks\n\t\t// are awaiting given event, detach native DOM listener from DOM Node.\n\t\t// See: {@link attach}.\n\n\t\tif ( this._domListeners![ event ] && ( !( events = ( this as any )._events![ event ] ) || !events.callbacks.length ) ) {\n\t\t\tthis._domListeners![ event ].removeListener();\n\t\t}\n\t}\n\n\t/**\n\t * Adds callback to emitter for given event.\n\t *\n\t * @internal\n\t * @param event The name of the event.\n\t * @param callback The function to be called on event.\n\t * @param options Additional options.\n\t */\n\tpublic _addEventListener<TEvent extends BaseEvent>(\n\t\tevent: TEvent[ 'name' ],\n\t\tcallback: GetCallback<TEvent>,\n\t\toptions: CallbackOptions\n\t): void {\n\t\tthis.attach( event );\n\t\t( EmitterMixin().prototype as any )._addEventListener.call( this, event, callback, options );\n\t}\n\n\t/**\n\t * Removes callback from emitter for given event.\n\t *\n\t * @internal\n\t * @param event The name of the event.\n\t * @param callback The function to stop being called.\n\t */\n\tpublic _removeEventListener( event: string, callback: Function ) {\n\t\t( EmitterMixin().prototype as any )._removeEventListener.call( this, event, callback );\n\t\tthis.detach( event );\n\t}\n\n\t/**\n\t * Creates a native DOM listener callback. When the native DOM event\n\t * is fired it will fire corresponding event on this ProxyEmitter.\n\t * Note: A native DOM Event is passed as an argument.\n\t *\n\t * @param event The name of the event.\n\t * @returns The DOM listener callback.\n\t */\n\tprivate _createDomListener( event: string ) {\n\t\tconst domListener = ( domEvt: unknown ) => {\n\t\t\tthis.fire( event, domEvt );\n\t\t};\n\n\t\t// Supply the DOM listener callback with a function that will help\n\t\t// detach it from the DOM Node, when it is no longer necessary.\n\t\t// See: {@link detach}.\n\t\tdomListener.removeListener = () => {\n\t\t\tthis._domNode.removeEventListener( event, domListener, this._options );\n\t\t\tdelete this._domListeners![ event ];\n\t\t};\n\n\t\treturn domListener;\n\t}\n}\n\n/**\n * Gets an unique DOM Node identifier. The identifier will be set if not defined.\n *\n * @returns UID for given DOM Node.\n */\nfunction getNodeUID( node: any ): string {\n\treturn node[ 'data-ck-expando' ] || ( node[ 'data-ck-expando' ] = uid() );\n}\n\n/**\n * Gets id of the ProxyEmitter for the given node.\n */\nfunction getProxyEmitterId( node: Node | Window, options: { [ option: string ]: any } ): string {\n\tlet id = getNodeUID( node );\n\n\tfor ( const option of Object.keys( options ).sort() ) {\n\t\tif ( options[ option ] ) {\n\t\t\tid += '-' + option;\n\t\t}\n\t}\n\n\treturn id;\n}\n\nexport interface DomEventMap extends HTMLElementEventMap, WindowEventMap {\n}\n\n/**\n * Interface representing classes which mix in {@link module:utils/dom/emittermixin~DomEmitterMixin}.\n *\n * Can be easily implemented by a class by mixing the {@link module:utils/dom/emittermixin~DomEmitterMixin} mixin.\n *\n * ```ts\n * class MyClass extends DomEmitterMixin( OtherBaseClass ) {\n * \t// This class now implements the `Emitter` interface.\n * }\n * ```\n */\nexport interface DomEmitter extends Emitter {\n\n\t/**\n\t * Registers a callback function to be executed when an event is fired in a specific Emitter or DOM Node.\n\t * It is backwards compatible with {@link module:utils/emittermixin~Emitter#listenTo}.\n\t *\n\t * @label HTML_EMITTER\n\t * @param emitter The object that fires the event.\n\t * @param event The name of the event.\n\t * @param callback The function to be called on event.\n\t * @param options Additional options.\n\t * @param options.useCapture Indicates that events of this type will be dispatched to the registered\n\t * listener before being dispatched to any EventTarget beneath it in the DOM tree.\n\t * @param options.usePassive Indicates that the function specified by listener will never call preventDefault()\n\t * and prevents blocking browser's main thread by this event handler.\n\t */\n\tlistenTo<K extends keyof DomEventMap>(\n\t\temitter: Node | Window,\n\t\tevent: K,\n\t\tcallback: ( this: this, ev: EventInfo, event: DomEventMap[ K ] ) => void,\n\t\toptions?: CallbackOptions & { readonly useCapture?: boolean; readonly usePassive?: boolean }\n\t): void;\n\n\t/**\n\t * Registers a callback function to be executed when an event is fired in a specific (emitter) object.\n\t *\n\t * Events can be grouped in namespaces using `:`.\n\t * When namespaced event is fired, it additionally fires all callbacks for that namespace.\n\t *\n\t * ```ts\n\t * // myEmitter.on( ... ) is a shorthand for myEmitter.listenTo( myEmitter, ... ).\n\t * myEmitter.on( 'myGroup', genericCallback );\n\t * myEmitter.on( 'myGroup:myEvent', specificCallback );\n\t *\n\t * // genericCallback is fired.\n\t * myEmitter.fire( 'myGroup' );\n\t * // both genericCallback and specificCallback are fired.\n\t * myEmitter.fire( 'myGroup:myEvent' );\n\t * // genericCallback is fired even though there are no callbacks for \"foo\".\n\t * myEmitter.fire( 'myGroup:foo' );\n\t * ```\n\t *\n\t * An event callback can {@link module:utils/eventinfo~EventInfo#stop stop the event} and\n\t * set the {@link module:utils/eventinfo~EventInfo#return return value} of the {@link #fire} method.\n\t *\n\t * @label DOM_EMITTER\n\t * @typeParam TEvent The type describing the event. See {@link module:utils/emittermixin~BaseEvent}.\n\t * @param emitter The object that fires the event.\n\t * @param event The name of the event.\n\t * @param callback The function to be called on event.\n\t * @param options Additional options.\n\t */\n\tlistenTo<TEvent extends BaseEvent>(\n\t\temitter: Emitter,\n\t\tevent: TEvent[ 'name' ],\n\t\tcallback: GetCallback<TEvent>,\n\t\toptions?: CallbackOptions\n\t): void;\n\n\t/**\n\t * Stops listening for events. It can be used at different levels:\n\t * It is backwards compatible with {@link module:utils/emittermixin~Emitter#listenTo}.\n\t *\n\t * * To stop listening to a specific callback.\n\t * * To stop listening to a specific event.\n\t * * To stop listening to all events fired by a specific object.\n\t * * To stop listening to all events fired by all objects.\n\t *\n\t * @label DOM_STOP\n\t * @param emitter The object to stop listening to.\n\t * If omitted, stops it for all objects.\n\t * @param event (Requires the `emitter`) The name of the event to stop listening to. If omitted, stops it\n\t * for all events from `emitter`.\n\t * @param callback (Requires the `event`) The function to be removed from the call list for the given\n\t * `event`.\n\t */\n\tstopListening( emitter?: Emitter | Node | Window, event?: string, callback?: Function ): void;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* globals window, document */\n\n/**\n * @module utils/dom/global\n */\n\n// This interface exists to make our API pages more readable.\n/**\n * A helper (module) giving an access to the global DOM objects such as `window` and `document`.\n */\nexport interface GlobalType {\n\treadonly window: Window & typeof globalThis;\n\treadonly document: Document;\n}\n\n/**\n * A helper (module) giving an access to the global DOM objects such as `window` and\n * `document`. Accessing these objects using this helper allows easy and bulletproof\n * testing, i.e. stubbing native properties:\n *\n * ```ts\n * import { global } from 'ckeditor5/utils';\n *\n * // This stub will work for any code using global module.\n * testUtils.sinon.stub( global, 'window', {\n * \tinnerWidth: 10000\n * } );\n *\n * console.log( global.window.innerWidth );\n * ```\n */\nlet globalVar: GlobalType; // named globalVar instead of global: https://github.com/ckeditor/ckeditor5/issues/12971\n\n// In some environments window and document API might not be available.\ntry {\n\tglobalVar = { window, document };\n} catch ( e ) {\n\t// It's not possible to mock a window object to simulate lack of a window object without writing extremely convoluted code.\n\t/* istanbul ignore next -- @preserve */\n\n\t// Let's cast it to not change module's API.\n\t// We only handle this so loading editor in environments without window and document doesn't fail.\n\t// For better DX we shouldn't introduce mixed types and require developers to check the type manually.\n\t// This module should not be used on purpose in any environment outside browser.\n\tglobalVar = { window: {} as any, document: {} as any };\n}\n\nexport default globalVar;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/findclosestscrollableancestor\n */\n\nimport global from './global';\n\n/**\n * Returns the closest scrollable ancestor of a DOM element.\n *\n * @param domElement DOM element.\n * @returns First ancestor of `domElement` that is scrollable or null if such ancestor doesn't exist.\n */\nexport default function findClosestScrollableAncestor( domElement: HTMLElement ): HTMLElement | null {\n\tlet element = domElement.parentElement;\n\tif ( !element ) {\n\t\treturn null;\n\t}\n\n\twhile ( element.tagName != 'BODY' ) {\n\t\tconst overflow = element.style.overflowY || global.window.getComputedStyle( element ).overflowY;\n\n\t\tif ( overflow === 'auto' || overflow === 'scroll' ) {\n\t\t\tbreak;\n\t\t}\n\n\t\telement = element.parentElement;\n\n\t\tif ( !element ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn element;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/isrange\n */\n\n/**\n * Checks if the object is a native DOM Range.\n */\nexport default function isRange( obj: unknown ): obj is Range {\n\treturn Object.prototype.toString.apply( obj ) == '[object Range]';\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/getborderwidths\n */\n\n/**\n * Returns an object containing CSS border widths of a specified HTML element.\n *\n * @param element An element which has CSS borders.\n * @returns An object containing `top`, `left`, `right` and `bottom` properties\n * with numerical values of the `border-[top,left,right,bottom]-width` CSS styles.\n */\nexport default function getBorderWidths( element: HTMLElement ): BorderWidths {\n\t// Call getComputedStyle on the window the element document belongs to.\n\tconst style = element.ownerDocument.defaultView!.getComputedStyle( element );\n\n\treturn {\n\t\ttop: parseInt( style.borderTopWidth, 10 ),\n\t\tright: parseInt( style.borderRightWidth, 10 ),\n\t\tbottom: parseInt( style.borderBottomWidth, 10 ),\n\t\tleft: parseInt( style.borderLeftWidth, 10 )\n\t};\n}\n\n/**\n * An object describing widths of `HTMLElement` borders.\n*/\nexport interface BorderWidths {\n\ttop: number;\n\tright: number;\n\tbottom: number;\n\tleft: number;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/istext\n */\n\n/**\n * Checks if the object is a native DOM Text node.\n */\nexport default function isText( obj: unknown ): obj is Text {\n\treturn Object.prototype.toString.call( obj ) == '[object Text]';\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/rect\n */\n\nimport isRange from './isrange';\nimport isWindow from './iswindow';\nimport getBorderWidths from './getborderwidths';\nimport isText from './istext';\n\nconst rectProperties: Array<keyof RectLike> = [ 'top', 'right', 'bottom', 'left', 'width', 'height' ];\n\n/**\n * A helper class representing a `ClientRect` object, e.g. value returned by\n * the native `object.getBoundingClientRect()` method. Provides a set of methods\n * to manipulate the rect and compare it against other rect instances.\n */\nexport default class Rect {\n\t/**\n\t * The \"top\" value of the rect.\n\t *\n\t * @readonly\n\t */\n\tpublic top!: number;\n\n\t/**\n\t * The \"right\" value of the rect.\n\t *\n\t * @readonly\n\t */\n\tpublic right!: number;\n\n\t/**\n\t * The \"bottom\" value of the rect.\n\t *\n\t * @readonly\n\t */\n\tpublic bottom!: number;\n\n\t/**\n\t * The \"left\" value of the rect.\n\t *\n\t * @readonly\n\t */\n\tpublic left!: number;\n\n\t/**\n\t * The \"width\" value of the rect.\n\t *\n\t * @readonly\n\t */\n\tpublic width!: number;\n\n\t/**\n\t * The \"height\" value of the rect.\n\t *\n\t * @readonly\n\t */\n\tpublic height!: number;\n\n\t/**\n\t * The object this rect is for.\n\t *\n\t * @readonly\n\t */\n\tprivate _source!: RectSource;\n\n\t/**\n\t * Creates an instance of rect.\n\t *\n\t * ```ts\n\t * // Rect of an HTMLElement.\n\t * const rectA = new Rect( document.body );\n\t *\n\t * // Rect of a DOM Range.\n\t * const rectB = new Rect( document.getSelection().getRangeAt( 0 ) );\n\t *\n\t * // Rect of a window (web browser viewport).\n\t * const rectC = new Rect( window );\n\t *\n\t * // Rect out of an object.\n\t * const rectD = new Rect( { top: 0, right: 10, bottom: 10, left: 0, width: 10, height: 10 } );\n\t *\n\t * // Rect out of another Rect instance.\n\t * const rectE = new Rect( rectD );\n\t *\n\t * // Rect out of a ClientRect.\n\t * const rectF = new Rect( document.body.getClientRects().item( 0 ) );\n\t * ```\n\t *\n\t * **Note**: By default a rect of an HTML element includes its CSS borders and scrollbars (if any)\n\t * ant the rect of a `window` includes scrollbars too. Use {@link #excludeScrollbarsAndBorders}\n\t * to get the inner part of the rect.\n\t *\n\t * @param source A source object to create the rect.\n\t */\n\tconstructor( source: RectSource ) {\n\t\tconst isSourceRange = isRange( source );\n\n\t\tObject.defineProperty( this, '_source', {\n\t\t\t// If the source is a Rect instance, copy it's #_source.\n\t\t\tvalue: ( source as any )._source || source,\n\t\t\twritable: true,\n\t\t\tenumerable: false\n\t\t} );\n\n\t\tif ( isDomElement( source ) || isSourceRange ) {\n\t\t\t// The `Rect` class depends on `getBoundingClientRect` and `getClientRects` DOM methods. If the source\n\t\t\t// of a rect in an HTML element or a DOM range but it does not belong to any rendered DOM tree, these methods\n\t\t\t// will fail to obtain the geometry and the rect instance makes little sense to the features using it.\n\t\t\t// To get rid of this warning make sure the source passed to the constructor is a descendant of `window.document.body`.\n\t\t\t// @if CK_DEBUG // const sourceNode = isSourceRange ? source.startContainer : source;\n\t\t\t// @if CK_DEBUG // if ( !sourceNode.ownerDocument || !sourceNode.ownerDocument.body.contains( sourceNode ) ) {\n\t\t\t// @if CK_DEBUG // \tconsole.warn(\n\t\t\t// @if CK_DEBUG // \t\t'rect-source-not-in-dom: The source of this rect does not belong to any rendered DOM tree.',\n\t\t\t// @if CK_DEBUG // \t\t{ source } );\n\t\t\t// @if CK_DEBUG // }\n\n\t\t\tif ( isSourceRange ) {\n\t\t\t\tconst rangeRects = Rect.getDomRangeRects( source );\n\t\t\t\tcopyRectProperties( this, Rect.getBoundingRect( rangeRects )! );\n\t\t\t} else {\n\t\t\t\tcopyRectProperties( this, source.getBoundingClientRect() );\n\t\t\t}\n\t\t} else if ( isWindow( source ) ) {\n\t\t\tconst { innerWidth, innerHeight } = source;\n\n\t\t\tcopyRectProperties( this, {\n\t\t\t\ttop: 0,\n\t\t\t\tright: innerWidth,\n\t\t\t\tbottom: innerHeight,\n\t\t\t\tleft: 0,\n\t\t\t\twidth: innerWidth,\n\t\t\t\theight: innerHeight\n\t\t\t} );\n\t\t} else {\n\t\t\tcopyRectProperties( this, source );\n\t\t}\n\t}\n\n\t/**\n\t * Returns a clone of the rect.\n\t *\n\t * @returns A cloned rect.\n\t */\n\tpublic clone(): Rect {\n\t\treturn new Rect( this );\n\t}\n\n\t/**\n\t * Moves the rect so that its upper–left corner lands in desired `[ x, y ]` location.\n\t *\n\t * @param x Desired horizontal location.\n\t * @param y Desired vertical location.\n\t * @returns A rect which has been moved.\n\t */\n\tpublic moveTo( x: number, y: number ): this {\n\t\tthis.top = y;\n\t\tthis.right = x + this.width;\n\t\tthis.bottom = y + this.height;\n\t\tthis.left = x;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Moves the rect in–place by a dedicated offset.\n\t *\n\t * @param x A horizontal offset.\n\t * @param y A vertical offset\n\t * @returns A rect which has been moved.\n\t */\n\tpublic moveBy( x: number, y: number ): this {\n\t\tthis.top += y;\n\t\tthis.right += x;\n\t\tthis.left += x;\n\t\tthis.bottom += y;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns a new rect a a result of intersection with another rect.\n\t */\n\tpublic getIntersection( anotherRect: Rect ): Rect | null {\n\t\tconst rect = {\n\t\t\ttop: Math.max( this.top, anotherRect.top ),\n\t\t\tright: Math.min( this.right, anotherRect.right ),\n\t\t\tbottom: Math.min( this.bottom, anotherRect.bottom ),\n\t\t\tleft: Math.max( this.left, anotherRect.left ),\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\n\t\trect.width = rect.right - rect.left;\n\t\trect.height = rect.bottom - rect.top;\n\n\t\tif ( rect.width < 0 || rect.height < 0 ) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\treturn new Rect( rect );\n\t\t}\n\t}\n\n\t/**\n\t * Returns the area of intersection with another rect.\n\t *\n\t * @returns Area of intersection.\n\t */\n\tpublic getIntersectionArea( anotherRect: Rect ): number {\n\t\tconst rect = this.getIntersection( anotherRect );\n\n\t\tif ( rect ) {\n\t\t\treturn rect.getArea();\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the area of the rect.\n\t */\n\tpublic getArea(): number {\n\t\treturn this.width * this.height;\n\t}\n\n\t/**\n\t * Returns a new rect, a part of the original rect, which is actually visible to the user,\n\t * e.g. an original rect cropped by parent element rects which have `overflow` set in CSS\n\t * other than `\"visible\"`.\n\t *\n\t * If there's no such visible rect, which is when the rect is limited by one or many of\n\t * the ancestors, `null` is returned.\n\t *\n\t * **Note**: This method does not consider the boundaries of the viewport (window).\n\t * To get a rect cropped by all ancestors and the viewport, use an intersection such as:\n\t *\n\t * ```ts\n\t * const visibleInViewportRect = new Rect( window ).getIntersection( new Rect( source ).getVisible() );\n\t * ```\n\t *\n\t * @returns A visible rect instance or `null`, if there's none.\n\t */\n\tpublic getVisible(): Rect | null {\n\t\tconst source: RectSource & { parentNode?: Node | null; commonAncestorContainer?: Node | null } = this._source;\n\n\t\tlet visibleRect = this.clone();\n\n\t\t// There's no ancestor to crop <body> with the overflow.\n\t\tif ( isBody( source ) ) {\n\t\t\treturn visibleRect;\n\t\t}\n\n\t\tlet child: any = source;\n\t\tlet parent = source.parentNode || source.commonAncestorContainer;\n\t\tlet absolutelyPositionedChildElement;\n\n\t\t// Check the ancestors all the way up to the <body>.\n\t\twhile ( parent && !isBody( parent ) ) {\n\t\t\tif ( child instanceof HTMLElement && getElementPosition( child ) === 'absolute' ) {\n\t\t\t\tabsolutelyPositionedChildElement = child;\n\t\t\t}\n\n\t\t\t// The child will be cropped only if it has `position: absolute` and the parent has `position: relative` + some overflow.\n\t\t\t// Otherwise there's no chance of visual clipping and the parent can be skipped\n\t\t\t// https://github.com/ckeditor/ckeditor5/issues/14107.\n\t\t\tif (\n\t\t\t\tabsolutelyPositionedChildElement &&\n\t\t\t\t( getElementPosition( parent as HTMLElement ) !== 'relative' || getElementOverflow( parent as HTMLElement ) === 'visible' )\n\t\t\t) {\n\t\t\t\tchild = parent;\n\t\t\t\tparent = parent.parentNode;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst parentRect = new Rect( parent as HTMLElement );\n\t\t\tconst intersectionRect = visibleRect.getIntersection( parentRect );\n\n\t\t\tif ( intersectionRect ) {\n\t\t\t\tif ( intersectionRect.getArea() < visibleRect.getArea() ) {\n\t\t\t\t\t// Reduce the visible rect to the intersection.\n\t\t\t\t\tvisibleRect = intersectionRect;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// There's no intersection, the rect is completely invisible.\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tchild = parent;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn visibleRect;\n\t}\n\n\t/**\n\t * Checks if all property values ({@link #top}, {@link #left}, {@link #right},\n\t * {@link #bottom}, {@link #width} and {@link #height}) are the equal in both rect\n\t * instances.\n\t *\n\t * @param anotherRect A rect instance to compare with.\n\t * @returns `true` when Rects are equal. `false` otherwise.\n\t */\n\tpublic isEqual( anotherRect: Rect ): boolean {\n\t\tfor ( const prop of rectProperties ) {\n\t\t\tif ( this[ prop ] !== anotherRect[ prop ] ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Checks whether a rect fully contains another rect instance.\n\t *\n\t * @param anotherRect\n\t * @returns `true` if contains, `false` otherwise.\n\t */\n\tpublic contains( anotherRect: Rect ): boolean {\n\t\tconst intersectRect = this.getIntersection( anotherRect );\n\n\t\treturn !!( intersectRect && intersectRect.isEqual( anotherRect ) );\n\t}\n\n\t/**\n\t * Excludes scrollbars and CSS borders from the rect.\n\t *\n\t * * Borders are removed when {@link #_source} is an HTML element.\n\t * * Scrollbars are excluded from HTML elements and the `window`.\n\t *\n\t * @returns A rect which has been updated.\n\t */\n\tpublic excludeScrollbarsAndBorders(): this {\n\t\tconst source = this._source as ( HTMLElement | Window );\n\t\tlet scrollBarWidth, scrollBarHeight, direction;\n\n\t\tif ( isWindow( source ) ) {\n\t\t\tscrollBarWidth = source.innerWidth - source.document.documentElement.clientWidth;\n\t\t\tscrollBarHeight = source.innerHeight - source.document.documentElement.clientHeight;\n\t\t\tdirection = source.getComputedStyle( source.document.documentElement ).direction;\n\t\t} else {\n\t\t\tconst borderWidths = getBorderWidths( source );\n\n\t\t\tscrollBarWidth = source.offsetWidth - source.clientWidth - borderWidths.left - borderWidths.right;\n\t\t\tscrollBarHeight = source.offsetHeight - source.clientHeight - borderWidths.top - borderWidths.bottom;\n\t\t\tdirection = source.ownerDocument.defaultView!.getComputedStyle( source ).direction;\n\n\t\t\tthis.left += borderWidths.left;\n\t\t\tthis.top += borderWidths.top;\n\t\t\tthis.right -= borderWidths.right;\n\t\t\tthis.bottom -= borderWidths.bottom;\n\t\t\tthis.width = this.right - this.left;\n\t\t\tthis.height = this.bottom - this.top;\n\t\t}\n\n\t\tthis.width -= scrollBarWidth;\n\n\t\tif ( direction === 'ltr' ) {\n\t\t\tthis.right -= scrollBarWidth;\n\t\t} else {\n\t\t\tthis.left += scrollBarWidth;\n\t\t}\n\n\t\tthis.height -= scrollBarHeight;\n\t\tthis.bottom -= scrollBarHeight;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns an array of rects of the given native DOM Range.\n\t *\n\t * @param range A native DOM range.\n\t * @returns DOM Range rects.\n\t */\n\tpublic static getDomRangeRects( range: Range ): Array<Rect> {\n\t\tconst rects: Array<Rect> = [];\n\t\t// Safari does not iterate over ClientRectList using for...of loop.\n\t\tconst clientRects = Array.from( range.getClientRects() );\n\n\t\tif ( clientRects.length ) {\n\t\t\tfor ( const rect of clientRects ) {\n\t\t\t\trects.push( new Rect( rect ) );\n\t\t\t}\n\t\t}\n\t\t// If there's no client rects for the Range, use parent container's bounding rect\n\t\t// instead and adjust rect's width to simulate the actual geometry of such range.\n\t\t// https://github.com/ckeditor/ckeditor5-utils/issues/153\n\t\t// https://github.com/ckeditor/ckeditor5-ui/issues/317\n\t\telse {\n\t\t\tlet startContainer = range.startContainer;\n\n\t\t\tif ( isText( startContainer ) ) {\n\t\t\t\tstartContainer = startContainer.parentNode!;\n\t\t\t}\n\n\t\t\tconst rect = new Rect( ( startContainer as Element ).getBoundingClientRect() );\n\t\t\trect.right = rect.left;\n\t\t\trect.width = 0;\n\n\t\t\trects.push( rect );\n\t\t}\n\n\t\treturn rects;\n\t}\n\n\t/**\n\t * Returns a bounding rectangle that contains all the given `rects`.\n\t *\n\t * @param rects A list of rectangles that should be contained in the result rectangle.\n\t * @returns Bounding rectangle or `null` if no `rects` were given.\n\t */\n\tpublic static getBoundingRect( rects: Iterable<Rect> ): Rect | null {\n\t\tconst boundingRectData = {\n\t\t\tleft: Number.POSITIVE_INFINITY,\n\t\t\ttop: Number.POSITIVE_INFINITY,\n\t\t\tright: Number.NEGATIVE_INFINITY,\n\t\t\tbottom: Number.NEGATIVE_INFINITY,\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t\tlet rectangleCount = 0;\n\n\t\tfor ( const rect of rects ) {\n\t\t\trectangleCount++;\n\n\t\t\tboundingRectData.left = Math.min( boundingRectData.left, rect.left );\n\t\t\tboundingRectData.top = Math.min( boundingRectData.top, rect.top );\n\t\t\tboundingRectData.right = Math.max( boundingRectData.right, rect.right );\n\t\t\tboundingRectData.bottom = Math.max( boundingRectData.bottom, rect.bottom );\n\t\t}\n\n\t\tif ( rectangleCount == 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tboundingRectData.width = boundingRectData.right - boundingRectData.left;\n\t\tboundingRectData.height = boundingRectData.bottom - boundingRectData.top;\n\n\t\treturn new Rect( boundingRectData );\n\t}\n}\n\n/**\n * A source of {@link module:utils/dom/rect~Rect}.\n */\nexport type RectSource = HTMLElement | Range | Window | RectLike;\n\n/**\n * An object that describes properties of `ClientRect` object.\n */\nexport interface RectLike {\n\treadonly top: number;\n\treadonly right: number;\n\treadonly bottom: number;\n\treadonly left: number;\n\treadonly width: number;\n\treadonly height: number;\n}\n\n/**\n * Acquires all the rect properties from the passed source.\n */\nfunction copyRectProperties( rect: Rect, source: RectLike ): void {\n\tfor ( const p of rectProperties ) {\n\t\trect[ p ] = source[ p ];\n\t}\n}\n\n/**\n * Checks if provided object is a <body> HTML element.\n */\nfunction isBody( value: unknown ): value is HTMLBodyElement {\n\tif ( !isDomElement( value ) ) {\n\t\treturn false;\n\t}\n\n\treturn value === value.ownerDocument.body;\n}\n\n/**\n * Checks if provided object \"looks like\" a DOM Element and has API required by `Rect` class.\n */\nfunction isDomElement( value: any ): value is Element {\n\t// Note: earlier we used `isElement()` from lodash library, however that function is less performant because\n\t// it makes complicated checks to make sure that given value is a DOM element.\n\treturn value !== null && typeof value === 'object' && value.nodeType === 1 && typeof value.getBoundingClientRect === 'function';\n}\n\n/**\n * Returns the value of the `position` style of an `HTMLElement`.\n */\nfunction getElementPosition( element: HTMLElement ): string {\n\treturn element.ownerDocument.defaultView!.getComputedStyle( element ).position;\n}\n\n/**\n * Returns the value of the `overflow` style of an `HTMLElement`.\n */\nfunction getElementOverflow( element: HTMLElement ): string {\n\treturn element.ownerDocument.defaultView!.getComputedStyle( element ).overflow;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/resizeobserver\n */\n\nimport global from './global';\n\n/**\n * A helper class which instances allow performing custom actions when native DOM elements are resized.\n *\n * ```ts\n * const editableElement = editor.editing.view.getDomRoot();\n *\n * const observer = new ResizeObserver( editableElement, entry => {\n * \tconsole.log( 'The editable element has been resized in DOM.' );\n * \tconsole.log( entry.target ); // -> editableElement\n * \tconsole.log( entry.contentRect.width ); // -> e.g. '423px'\n * } );\n * ```\n *\n * It uses the [native DOM resize observer](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver)\n * under the hood.\n */\nexport default class ResizeObserver {\n\t/**\n\t * The element observed by this observer.\n\t */\n\tprivate readonly _element: Element;\n\n\t/**\n\t * The callback executed each time {@link #_element} is resized.\n\t */\n\tprivate readonly _callback: ( entry: ResizeObserverEntry ) => void;\n\n\t/**\n\t * The single native observer instance shared across all {@link module:utils/dom/resizeobserver~ResizeObserver} instances.\n\t */\n\tprivate static _observerInstance: InstanceType<typeof global.window.ResizeObserver> | null = null;\n\n\t/**\n\t * A mapping of native DOM elements and their callbacks shared across all\n\t * {@link module:utils/dom/resizeobserver~ResizeObserver} instances.\n\t */\n\tprivate static _elementCallbacks: Map<Element, Set<( entry: ResizeObserverEntry ) => void>> | null = null;\n\n\t/**\n\t * Creates an instance of the `ResizeObserver` class.\n\t *\n\t * @param element A DOM element that is to be observed for resizing. Note that\n\t * the element must be visible (i.e. not detached from DOM) for the observer to work.\n\t * @param callback A function called when the observed element was resized. It passes\n\t * the [`ResizeObserverEntry`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry)\n\t * object with information about the resize event.\n\t */\n\tconstructor( element: Element, callback: ( entry: ResizeObserverEntry ) => void ) {\n\t\t// **Note**: For the maximum performance, this class ensures only a single instance of the native\n\t\t// observer is used no matter how many instances of this class were created.\n\t\tif ( !ResizeObserver._observerInstance ) {\n\t\t\tResizeObserver._createObserver();\n\t\t}\n\n\t\tthis._element = element;\n\t\tthis._callback = callback;\n\n\t\tResizeObserver._addElementCallback( element, callback );\n\t\tResizeObserver._observerInstance!.observe( element );\n\t}\n\n\t/**\n\t * The element observed by this observer.\n\t */\n\tpublic get element(): Element {\n\t\treturn this._element;\n\t}\n\n\t/**\n\t * Destroys the observer which disables the `callback` passed to the {@link #constructor}.\n\t */\n\tpublic destroy(): void {\n\t\tResizeObserver._deleteElementCallback( this._element, this._callback );\n\t}\n\n\t/**\n\t * Registers a new resize callback for the DOM element.\n\t */\n\tprivate static _addElementCallback( element: Element, callback: ( entry: ResizeObserverEntry ) => void ): void {\n\t\tif ( !ResizeObserver._elementCallbacks ) {\n\t\t\tResizeObserver._elementCallbacks = new Map();\n\t\t}\n\n\t\tlet callbacks = ResizeObserver._elementCallbacks.get( element );\n\n\t\tif ( !callbacks ) {\n\t\t\tcallbacks = new Set();\n\t\t\tResizeObserver._elementCallbacks.set( element, callbacks );\n\t\t}\n\n\t\tcallbacks.add( callback );\n\t}\n\n\t/**\n\t * Removes a resize callback from the DOM element. If no callbacks are left\n\t * for the element, it removes the element from the native observer.\n\t */\n\tprivate static _deleteElementCallback( element: Element, callback: ( entry: ResizeObserverEntry ) => void ): void {\n\t\tconst callbacks = ResizeObserver._getElementCallbacks( element );\n\n\t\t// Remove the element callback. Check if exist first in case someone\n\t\t// called destroy() twice.\n\t\tif ( callbacks ) {\n\t\t\tcallbacks.delete( callback );\n\n\t\t\t// If no callbacks left for the element, also remove the element.\n\t\t\tif ( !callbacks.size ) {\n\t\t\t\tResizeObserver._elementCallbacks!.delete( element );\n\t\t\t\tResizeObserver._observerInstance!.unobserve( element );\n\t\t\t}\n\t\t}\n\n\t\tif ( ResizeObserver._elementCallbacks && !ResizeObserver._elementCallbacks.size ) {\n\t\t\tResizeObserver._observerInstance = null;\n\t\t\tResizeObserver._elementCallbacks = null;\n\t\t}\n\t}\n\n\t/**\n\t * Returns are registered resize callbacks for the DOM element.\n\t */\n\tprivate static _getElementCallbacks( element: Element ): Set<( entry: ResizeObserverEntry ) => void> | null | undefined {\n\t\tif ( !ResizeObserver._elementCallbacks ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn ResizeObserver._elementCallbacks.get( element );\n\t}\n\n\t/**\n\t * Creates the single native observer shared across all `ResizeObserver` instances.\n\t */\n\tprivate static _createObserver(): void {\n\t\tResizeObserver._observerInstance = new global.window.ResizeObserver( entries => {\n\t\t\tfor ( const entry of entries ) {\n\t\t\t\tconst callbacks = ResizeObserver._getElementCallbacks( entry.target );\n\n\t\t\t\tif ( callbacks ) {\n\t\t\t\t\tfor ( const callback of callbacks ) {\n\t\t\t\t\t\tcallback( entry );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/setdatainelement\n */\n\n/* globals HTMLTextAreaElement */\n\n/**\n * Sets data in a given element.\n *\n * @param el The element in which the data will be set.\n * @param data The data string.\n */\nexport default function setDataInElement( el: HTMLElement, data: string ): void {\n\tif ( el instanceof HTMLTextAreaElement ) {\n\t\tel.value = data;\n\t}\n\n\tel.innerHTML = data;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/tounit\n */\n\n/**\n * Returns a helper function, which adds a desired trailing\n * `unit` to the passed value.\n *\n * @param unit An unit like \"px\" or \"em\".\n */\nexport default function toUnit( unit: string ): ToUnitHelper {\n\treturn value => value + unit;\n}\n\n/**\n * A function, which adds a pre–defined trailing `unit`\n * to the passed `value`.\n *\n * @param value A value to be given the unit.\n * @returns A value with the trailing unit.\n */\nexport type ToUnitHelper = ( value: string | number ) => string;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/indexof\n */\n\n/**\n * Returns index of the node in the parent element.\n *\n * @param node Node which index is tested.\n * @returns Index of the node in the parent element. Returns 0 if node has no parent.\n */\nexport default function indexOf( node: Node ): number {\n\tlet index = 0;\n\n\twhile ( node.previousSibling ) {\n\t\tnode = node.previousSibling;\n\t\tindex++;\n\t}\n\n\treturn index;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/insertat\n */\n\n/**\n * Inserts node to the parent at given index.\n *\n * @param parentElement Parent element.\n * @param index Insertions index.\n * @param nodeToInsert Node to insert.\n */\nexport default function insertAt(\n\tparentElement: Element,\n\tindex: number,\n\tnodeToInsert: Node\n): void {\n\tparentElement.insertBefore( nodeToInsert, parentElement.childNodes[ index ] || null );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* globals Node */\n\n/**\n * @module utils/dom/iscomment\n */\n\n/**\n * Checks whether the object is a native DOM Comment node.\n */\nexport default function isComment( obj: any ): obj is Comment {\n\treturn obj && obj.nodeType === Node.COMMENT_NODE;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/isvisible\n */\n\n/**\n * Checks whether the element is visible to the user in DOM:\n *\n * * connected to the root of the document,\n * * has no `display: none`,\n * * has no ancestors with `display: none`.\n *\n * **Note**: This helper does not check whether the element is hidden by cropping, overflow, etc..\n * To check that, use {@link module:utils/dom/rect~Rect} instead.\n */\nexport default function isVisible( element: HTMLElement | null | undefined ): boolean {\n\treturn !!( element && element.getClientRects && element.getClientRects().length );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/position\n */\n\nimport global from './global';\nimport Rect, { type RectSource } from './rect';\nimport getPositionedAncestor from './getpositionedancestor';\nimport getBorderWidths from './getborderwidths';\nimport { isFunction } from 'lodash-es';\n\n// @if CK_DEBUG_POSITION // const RectDrawer = require( '@ckeditor/ckeditor5-utils/tests/_utils/rectdrawer' ).default\n\n/**\n * Calculates the `position: absolute` coordinates of a given element so it can be positioned with respect to the\n * target in the visually most efficient way, taking various restrictions like viewport or limiter geometry\n * into consideration.\n *\n * ```ts\n * // The element which is to be positioned.\n * const element = document.body.querySelector( '#toolbar' );\n *\n * // A target to which the element is positioned relatively.\n * const target = document.body.querySelector( '#container' );\n *\n * // Finding the optimal coordinates for the positioning.\n * const { left, top, name } = getOptimalPosition( {\n * \telement: element,\n * \ttarget: target,\n *\n * \t// The algorithm will chose among these positions to meet the requirements such\n * \t// as \"limiter\" element or \"fitInViewport\", set below. The positions are considered\n * \t// in the order of the array.\n * \tpositions: [\n * \t\t//\n * \t \t//\t[ Target ]\n * \t\t//\t+-----------------+\n * \t\t//\t| Element |\n * \t\t//\t+-----------------+\n * \t\t//\n * \t\ttargetRect => ( {\n * \t\t\ttop: targetRect.bottom,\n * \t\t\tleft: targetRect.left,\n * \t\t\tname: 'mySouthEastPosition'\n * \t\t} ),\n *\n * \t\t//\n * \t\t//\t+-----------------+\n * \t\t//\t| Element |\n * \t\t//\t+-----------------+\n * \t\t//\t[ Target ]\n * \t\t//\n * \t\t( targetRect, elementRect ) => ( {\n * \t\t\ttop: targetRect.top - elementRect.height,\n * \t\t\tleft: targetRect.left,\n * \t\t\tname: 'myNorthEastPosition'\n * \t\t} )\n * \t],\n *\n * \t// Find a position such guarantees the element remains within visible boundaries of <body>.\n * \tlimiter: document.body,\n *\n * \t// Find a position such guarantees the element remains within visible boundaries of the browser viewport.\n * \tfitInViewport: true\n * } );\n *\n * // The best position which fits into document.body and the viewport. May be useful\n * // to set proper class on the `element`.\n * console.log( name ); // -> \"myNorthEastPosition\"\n *\n * // Using the absolute coordinates which has been found to position the element\n * // as in the diagram depicting the \"myNorthEastPosition\" position.\n * element.style.top = top;\n * element.style.left = left;\n * ```\n *\n * @param options The input data and configuration of the helper.\n */\nexport function getOptimalPosition( { element, target, positions, limiter, fitInViewport, viewportOffsetConfig }: Options ): Position {\n\t// If the {@link module:utils/dom/position~Options#target} is a function, use what it returns.\n\t// https://github.com/ckeditor/ckeditor5-utils/issues/157\n\tif ( isFunction( target ) ) {\n\t\ttarget = target();\n\t}\n\n\t// If the {@link module:utils/dom/position~Options#limiter} is a function, use what it returns.\n\t// https://github.com/ckeditor/ckeditor5-ui/issues/260\n\tif ( isFunction( limiter ) ) {\n\t\tlimiter = limiter();\n\t}\n\n\tconst positionedElementAncestor = getPositionedAncestor( element );\n\tconst elementRect = new Rect( element );\n\tconst targetRect = new Rect( target );\n\n\tlet bestPosition: Position;\n\n\t// @if CK_DEBUG_POSITION // RectDrawer.clear();\n\t// @if CK_DEBUG_POSITION // RectDrawer.draw( targetRect, { outlineWidth: '5px' }, 'Target' );\n\n\tconst viewportRect = fitInViewport && getConstrainedViewportRect( viewportOffsetConfig ) || null;\n\tconst positionOptions = { targetRect, elementRect, positionedElementAncestor, viewportRect };\n\n\t// If there are no limits, just grab the very first position and be done with that drama.\n\tif ( !limiter && !fitInViewport ) {\n\t\tbestPosition = new PositionObject( positions[ 0 ], positionOptions );\n\t} else {\n\t\tconst limiterRect = limiter && new Rect( limiter ).getVisible();\n\n\t\t// @if CK_DEBUG_POSITION // if ( viewportRect ) {\n\t\t// @if CK_DEBUG_POSITION //\t\tRectDrawer.draw( viewportRect, { outlineWidth: '5px' }, 'Viewport' );\n\t\t// @if CK_DEBUG_POSITION // }\n\n\t\t// @if CK_DEBUG_POSITION // if ( limiter ) {\n\t\t// @if CK_DEBUG_POSITION // \tRectDrawer.draw( limiterRect, { outlineWidth: '5px', outlineColor: 'green' }, 'Visible limiter' );\n\t\t// @if CK_DEBUG_POSITION // }\n\n\t\tObject.assign( positionOptions, { limiterRect, viewportRect } );\n\n\t\t// If there's no best position found, i.e. when all intersections have no area because\n\t\t// rects have no width or height, then just use the first available position.\n\t\tbestPosition = getBestPosition( positions, positionOptions ) || new PositionObject( positions[ 0 ], positionOptions );\n\t}\n\n\treturn bestPosition;\n}\n\n/**\n * Returns a viewport `Rect` shrunk by the viewport offset config from all sides.\n */\nfunction getConstrainedViewportRect( viewportOffsetConfig: Options[ 'viewportOffsetConfig' ] ): Rect {\n\tviewportOffsetConfig = Object.assign( { top: 0, bottom: 0, left: 0, right: 0 }, viewportOffsetConfig );\n\n\tconst viewportRect = new Rect( global.window );\n\n\tviewportRect.top += viewportOffsetConfig.top!;\n\tviewportRect.height -= viewportOffsetConfig.top!;\n\tviewportRect.bottom -= viewportOffsetConfig.bottom!;\n\tviewportRect.height -= viewportOffsetConfig.bottom!;\n\n\treturn viewportRect;\n}\n\n/**\n * For a given array of positioning functions, returns such that provides the best\n * fit of the `elementRect` into the `limiterRect` and `viewportRect`.\n */\nfunction getBestPosition(\n\tpositions: ReadonlyArray<PositioningFunction>,\n\toptions: ConstructorParameters<typeof PositionObject>[ 1 ]\n): Position | null {\n\tconst { elementRect } = options;\n\n\t// This is when element is fully visible.\n\tconst elementRectArea = elementRect.getArea();\n\n\tconst positionInstances = positions\n\t\t.map( positioningFunction => new PositionObject( positioningFunction, options ) )\n\t\t// Some positioning functions may return `null` if they don't want to participate.\n\t\t.filter( position => !!position.name );\n\n\tlet maxFitFactor = 0;\n\tlet bestPosition = null;\n\n\tfor ( const position of positionInstances ) {\n\t\tconst { limiterIntersectionArea, viewportIntersectionArea } = position;\n\n\t\t// If a such position is found that element is fully contained by the limiter then, obviously,\n\t\t// there will be no better one, so finishing.\n\t\tif ( limiterIntersectionArea === elementRectArea ) {\n\t\t\treturn position;\n\t\t}\n\n\t\t// To maximize both viewport and limiter intersection areas we use distance on _viewportIntersectionArea\n\t\t// and _limiterIntersectionArea plane (without sqrt because we are looking for max value).\n\t\tconst fitFactor = viewportIntersectionArea ** 2 + limiterIntersectionArea ** 2;\n\n\t\tif ( fitFactor > maxFitFactor ) {\n\t\t\tmaxFitFactor = fitFactor;\n\t\t\tbestPosition = position;\n\t\t}\n\t}\n\n\treturn bestPosition;\n}\n\n/**\n * For a given absolute Rect coordinates object and a positioned element ancestor, it updates its\n * coordinates that make up for the position and the scroll of the ancestor.\n *\n * This is necessary because while Rects (and DOMRects) are relative to the browser's viewport, their coordinates\n * are used in real–life to position elements with `position: absolute`, which are scoped by any positioned\n * (and scrollable) ancestors.\n */\nfunction shiftRectToCompensatePositionedAncestor( rect: Rect, positionedElementAncestor: HTMLElement ): void {\n\tconst ancestorPosition = getRectForAbsolutePositioning( new Rect( positionedElementAncestor ) );\n\tconst ancestorBorderWidths = getBorderWidths( positionedElementAncestor );\n\n\tlet moveX = 0;\n\tlet moveY = 0;\n\n\t// (https://github.com/ckeditor/ckeditor5-ui-default/issues/126)\n\t// If there's some positioned ancestor of the panel, then its `Rect` must be taken into\n\t// consideration. `Rect` is always relative to the viewport while `position: absolute` works\n\t// with respect to that positioned ancestor.\n\tmoveX -= ancestorPosition.left;\n\tmoveY -= ancestorPosition.top;\n\n\t// (https://github.com/ckeditor/ckeditor5-utils/issues/139)\n\t// If there's some positioned ancestor of the panel, not only its position must be taken into\n\t// consideration (see above) but also its internal scrolls. Scroll have an impact here because `Rect`\n\t// is relative to the viewport (it doesn't care about scrolling), while `position: absolute`\n\t// must compensate that scrolling.\n\tmoveX += positionedElementAncestor.scrollLeft;\n\tmoveY += positionedElementAncestor.scrollTop;\n\n\t// (https://github.com/ckeditor/ckeditor5-utils/issues/139)\n\t// If there's some positioned ancestor of the panel, then its `Rect` includes its CSS `borderWidth`\n\t// while `position: absolute` positioning does not consider it.\n\t// E.g. `{ position: absolute, top: 0, left: 0 }` means upper left corner of the element,\n\t// not upper-left corner of its border.\n\tmoveX -= ancestorBorderWidths.left;\n\tmoveY -= ancestorBorderWidths.top;\n\n\trect.moveBy( moveX, moveY );\n}\n\n/**\n * DOMRect (also Rect) works in a scroll–independent geometry but `position: absolute` doesn't.\n * This function converts Rect to `position: absolute` coordinates.\n */\nfunction getRectForAbsolutePositioning( rect: Rect ): Rect {\n\tconst { scrollX, scrollY } = global.window;\n\n\treturn rect.clone().moveBy( scrollX, scrollY );\n}\n\n/**\n * A position object which instances are created and used by the {@link module:utils/dom/position~getOptimalPosition} helper.\n *\n * {@link module:utils/dom/position~Position#top} and {@link module:utils/dom/position~Position#left} properties of the position instance\n * translate directly to the `top` and `left` properties in CSS \"`position: absolute` coordinate system\". If set on the positioned element\n * in DOM, they will make it display it in the right place in the viewport.\n */\nexport interface Position {\n\n\t/**\n\t * Position name.\n\t */\n\treadonly name?: string;\n\n\t/**\n\t * Additional position configuration, as passed from the {@link module:utils/dom/position~PositioningFunction positioning function}.\n\t *\n\t * This object can be use, for instance, to pass through presentation options used by the consumer of the\n\t * {@link module:utils/dom/position~getOptimalPosition} helper.\n\t */\n\treadonly config?: object;\n\n\t/**\n\t * The left value in pixels in the CSS `position: absolute` coordinate system.\n\t * Set it on the positioned element in DOM to move it to the position.\n\t */\n\treadonly left: number;\n\n\t/**\n\t * The top value in pixels in the CSS `position: absolute` coordinate system.\n\t * Set it on the positioned element in DOM to move it to the position.\n\t */\n\treadonly top: number;\n}\n\n/**\n * A position class which instances are created and used by the {@link module:utils/dom/position~getOptimalPosition} helper.\n *\n * {@link module:utils/dom/position~Position#top} and {@link module:utils/dom/position~Position#left} properties of the position instance\n * translate directly to the `top` and `left` properties in CSS \"`position: absolute` coordinate system\". If set on the positioned element\n * in DOM, they will make it display it in the right place in the viewport.\n */\nclass PositionObject implements Position {\n\tpublic name?: string;\n\tpublic config?: object;\n\n\tprivate _positioningFunctionCorrdinates!: { left: number; top: number };\n\tprivate _options!: ConstructorParameters<typeof PositionObject>[ 1 ];\n\tprivate _cachedRect?: Rect;\n\tprivate _cachedAbsoluteRect?: Rect;\n\n\t/**\n\t * Creates an instance of the {@link module:utils/dom/position~PositionObject} class.\n\t *\n\t * @param positioningFunction function The function that defines the expected\n\t * coordinates the positioned element should move to.\n\t * @param options options object.\n\t * @param options.elementRect The positioned element rect.\n\t * @param options.targetRect The target element rect.\n\t * @param options.viewportRect The viewport rect.\n\t * @param options.limiterRect The limiter rect.\n\t * @param options.positionedElementAncestor Nearest element ancestor element which CSS position is not \"static\".\n\t */\n\tconstructor(\n\t\tpositioningFunction: PositioningFunction,\n\t\toptions: {\n\t\t\treadonly elementRect: Rect;\n\t\t\treadonly targetRect: Rect;\n\t\t\treadonly viewportRect: Rect | null;\n\t\t\treadonly positionedElementAncestor?: HTMLElement | null;\n\t\t\treadonly limiterRect?: Rect;\n\t\t}\n\t) {\n\t\tconst positioningFunctionOutput = positioningFunction( options.targetRect, options.elementRect, options.viewportRect );\n\n\t\t// Nameless position for a function that didn't participate.\n\t\tif ( !positioningFunctionOutput ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { left, top, name, config } = positioningFunctionOutput;\n\n\t\tthis.name = name;\n\t\tthis.config = config;\n\n\t\tthis._positioningFunctionCorrdinates = { left, top };\n\t\tthis._options = options;\n\t}\n\n\t/**\n\t * The left value in pixels in the CSS `position: absolute` coordinate system.\n\t * Set it on the positioned element in DOM to move it to the position.\n\t */\n\tpublic get left(): number {\n\t\treturn this._absoluteRect.left;\n\t}\n\n\t/**\n\t * The top value in pixels in the CSS `position: absolute` coordinate system.\n\t * Set it on the positioned element in DOM to move it to the position.\n\t */\n\tpublic get top(): number {\n\t\treturn this._absoluteRect.top;\n\t}\n\n\t/**\n\t * An intersection area between positioned element and limiter within viewport constraints.\n\t */\n\tpublic get limiterIntersectionArea(): number {\n\t\tconst limiterRect = this._options.limiterRect;\n\n\t\tif ( limiterRect ) {\n\t\t\tconst viewportRect = this._options.viewportRect;\n\n\t\t\tif ( viewportRect ) {\n\t\t\t\t// Consider only the part of the limiter which is visible in the viewport. So the limiter is getting limited.\n\t\t\t\tconst limiterViewportIntersectRect = limiterRect.getIntersection( viewportRect );\n\n\t\t\t\tif ( limiterViewportIntersectRect ) {\n\t\t\t\t\t// If the limiter is within the viewport, then check the intersection between that part of the\n\t\t\t\t\t// limiter and actual position.\n\t\t\t\t\treturn limiterViewportIntersectRect.getIntersectionArea( this._rect );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn limiterRect.getIntersectionArea( this._rect );\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\t/**\n\t * An intersection area between positioned element and viewport.\n\t */\n\tpublic get viewportIntersectionArea(): number {\n\t\tconst viewportRect = this._options.viewportRect;\n\n\t\tif ( viewportRect ) {\n\t\t\treturn viewportRect.getIntersectionArea( this._rect );\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\t/**\n\t * An already positioned element rect. A clone of the element rect passed to the constructor\n\t * but placed in the viewport according to the positioning function.\n\t */\n\tprivate get _rect(): Rect {\n\t\tif ( this._cachedRect ) {\n\t\t\treturn this._cachedRect;\n\t\t}\n\n\t\tthis._cachedRect = this._options.elementRect.clone().moveTo(\n\t\t\tthis._positioningFunctionCorrdinates.left,\n\t\t\tthis._positioningFunctionCorrdinates.top\n\t\t);\n\n\t\treturn this._cachedRect;\n\t}\n\n\t/**\n\t * An already absolutely positioned element rect. See ({@link #_rect}).\n\t */\n\tprivate get _absoluteRect(): Rect {\n\t\tif ( this._cachedAbsoluteRect ) {\n\t\t\treturn this._cachedAbsoluteRect;\n\t\t}\n\n\t\tthis._cachedAbsoluteRect = getRectForAbsolutePositioning( this._rect );\n\n\t\tif ( this._options.positionedElementAncestor ) {\n\t\t\tshiftRectToCompensatePositionedAncestor( this._cachedAbsoluteRect, this._options.positionedElementAncestor );\n\t\t}\n\n\t\treturn this._cachedAbsoluteRect!;\n\t}\n}\n\n/**\n * The `getOptimalPosition()` helper options.\n */\nexport interface Options {\n\n\t/**\n\t * Element that is to be positioned.\n\t */\n\treadonly element: HTMLElement;\n\n\t/**\n\t * Target with respect to which the `element` is to be positioned.\n\t */\n\treadonly target: RectSource | ( () => RectSource );\n\n\t/**\n\t * An array of positioning functions.\n\t *\n\t * **Note**: Positioning functions are processed in the order of preference. The first function that works\n\t * in the current environment (e.g. offers the complete fit in the viewport geometry) will be picked by\n\t * `getOptimalPosition()`.\n\t *\n\t * **Note**: Any positioning function returning `null` is ignored.\n\t */\n\treadonly positions: ReadonlyArray<PositioningFunction>;\n\n\t/**\n\t * When set, the algorithm will chose position which fits the most in the\n\t * limiter's bounding rect.\n\t */\n\treadonly limiter?: RectSource | ( () => ( RectSource | null ) ) | null;\n\n\t/**\n\t * When set, the algorithm will chose such a position which fits `element`\n\t * the most inside visible viewport.\n\t */\n\treadonly fitInViewport?: boolean;\n\n\t/**\n\t * Viewport offset config object. It restricts the visible viewport available to the `getOptimalPosition()` from each side.\n\t *\n\t * ```ts\n\t * {\n\t * \ttop: 50,\n\t * \tright: 50,\n\t * \tbottom: 50,\n\t * \tleft: 50\n\t * }\n\t * ```\n\t */\n\treadonly viewportOffsetConfig?: {\n\t\treadonly top?: number;\n\t\treadonly right?: number;\n\t\treadonly bottom?: number;\n\t\treadonly left?: number;\n\t};\n}\n\n/**\n * A positioning function which, based on positioned element and target {@link module:utils/dom/rect~Rect Rects}, returns rect coordinates\n * representing the geometrical relation between them. Used by the {@link module:utils/dom/position~getOptimalPosition} helper.\n *\n * ```ts\n * // This simple position will place the element directly under the target, in the middle:\n * //\n * //\t [ Target ]\n * //\t+-----------------+\n * //\t| Element |\n * //\t+-----------------+\n * //\n * const position = ( targetRect, elementRect, [ viewportRect ] ) => ( {\n * \ttop: targetRect.bottom,\n * \tleft: targetRect.left + targetRect.width / 2 - elementRect.width / 2,\n * \tname: 'bottomMiddle',\n *\n * \t// Note: The config is optional.\n * \tconfig: {\n * \t\tzIndex: '999'\n * \t}\n * } );\n * ```\n *\n * @param elementRect The rect of the element to be positioned.\n * @param targetRect The rect of the target the element (its rect) is relatively positioned to.\n * @param viewportRect The rect of the visual browser viewport.\n * @returns When the function returns `null`, it will not be considered by {@link module:utils/dom/position~getOptimalPosition}.\n */\nexport type PositioningFunction = ( elementRect: Rect, targetRect: Rect, viewportRect: Rect | null ) => PositioningFunctionResult | null;\n\n/**\n * The result of {@link module:utils/dom/position~PositioningFunction}.\n */\nexport interface PositioningFunctionResult {\n\n\t/**\n\t * The `top` value of the element rect that would represent the position.\n\t */\n\ttop: number;\n\n\t/**\n\t * The `left` value of the element rect that would represent the position.\n\t */\n\tleft: number;\n\n\t/**\n\t * The name of the position. It helps the user of the {@link module:utils/dom/position~getOptimalPosition}\n\t * helper to recognize different positioning function results. It will pass through to the {@link module:utils/dom/position~Position}\n\t * returned by the helper.\n\t */\n\tname?: string;\n\n\t/**\n\t * An optional configuration that will pass-through the {@link module:utils/dom/position~getOptimalPosition} helper\n\t * to the {@link module:utils/dom/position~Position} returned by this helper.\n\t * This configuration may, for instance, let the user of {@link module:utils/dom/position~getOptimalPosition} know that this particular\n\t * position comes with a certain presentation.\n\t */\n\tconfig?: object;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/getpositionedancestor\n */\n\nimport global from './global';\n\n/**\n * For a given element, returns the nearest ancestor element which CSS position is not \"static\".\n *\n * @param element The native DOM element to be checked.\n */\nexport default function getPositionedAncestor( element?: HTMLElement ): HTMLElement | null {\n\tif ( !element || !element.parentNode ) {\n\t\treturn null;\n\t}\n\n\tif ( element.offsetParent === global.document.body ) {\n\t\treturn null;\n\t}\n\n\treturn element.offsetParent as HTMLElement;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/remove\n */\n\n/**\n * Removes given node from parent.\n *\n * @param node Node to remove.\n */\nexport default function remove( node: Node ): void {\n\tconst parent = node.parentNode;\n\n\tif ( parent ) {\n\t\tparent.removeChild( node );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/scroll\n */\n\nimport isRange from './isrange';\nimport Rect from './rect';\nimport isText from './istext';\n\ntype IfTrue<T> = T extends true ? true : never;\n\n/**\n * Makes any page `HTMLElement` or `Range` (`target`) visible inside the browser viewport.\n * This helper will scroll all `target` ancestors and the web browser viewport to reveal the target to\n * the user. If the `target` is already visible, nothing will happen.\n *\n * @param options Additional configuration of the scrolling behavior.\n * @param options.target A target, which supposed to become visible to the user.\n * @param options.viewportOffset An offset from the edge of the viewport (in pixels)\n * the `target` will be moved by if the viewport is scrolled. It enhances the user experience\n * by keeping the `target` some distance from the edge of the viewport and thus making it easier to\n * read or edit by the user.\n * @param options.ancestorOffset An offset from the boundary of scrollable ancestors (if any)\n * the `target` will be moved by if the viewport is scrolled. It enhances the user experience\n * by keeping the `target` some distance from the edge of the ancestors and thus making it easier to\n * read or edit by the user.\n * @param options.alignToTop When set `true`, the helper will make sure the `target` is scrolled up\n * to the top boundary of the viewport and/or scrollable ancestors if scrolled up. When not set\n * (default), the `target` will be revealed by scrolling as little as possible. This option will\n * not affect `targets` that must be scrolled down because they will appear at the top of the boundary\n * anyway.\n *\n * ```\n * scrollViewportToShowTarget() with scrollViewportToShowTarget() with\n * Initial state alignToTop unset (default) alignToTop = true\n *\n * ┌────────────────────────────────┬─┐ ┌────────────────────────────────┬─┐ ┌────────────────────────────────┬─┐\n * │ │▲│ │ │▲│ │ [ Target to be revealed ] │▲│\n * │ │ │ │ │ │ │ │ │\n * │ │█│ │ │ │ │ │ │\n * │ │█│ │ │ │ │ │ │\n * │ │ │ │ │█│ │ │ │\n * │ │ │ │ │█│ │ │█│\n * │ │ │ │ │ │ │ │█│\n * │ │▼│ │ [ Target to be revealed ] │▼│ │ │▼│\n * └────────────────────────────────┴─┘ └────────────────────────────────┴─┘ └────────────────────────────────┴─┘\n *\n *\n * [ Target to be revealed ]\n *```\n *\n * @param options.forceScroll When set `true`, the `target` will be aligned to the top of the viewport\n * and scrollable ancestors whether it is already visible or not. This option will only work when `alignToTop`\n * is `true`\n */\nexport function scrollViewportToShowTarget<T extends boolean, U extends IfTrue<T>>(\n\t{\n\t\ttarget,\n\t\tviewportOffset = 0,\n\t\tancestorOffset = 0,\n\t\talignToTop,\n\t\tforceScroll\n\t}:\n\t{\n\t\treadonly target: HTMLElement | Range;\n\t\treadonly viewportOffset?: number | { top: number; bottom: number; left: number; right: number };\n\t\treadonly ancestorOffset?: number;\n\t\treadonly alignToTop?: T;\n\t\treadonly forceScroll?: U;\n\t}\n): void {\n\tconst targetWindow = getWindow( target );\n\tlet currentWindow: Window | null = targetWindow;\n\tlet currentFrame: HTMLElement | null = null;\n\n\tviewportOffset = normalizeViewportOffset( viewportOffset );\n\n\t// Iterate over all windows, starting from target's parent window up to window#top.\n\twhile ( currentWindow ) {\n\t\tlet firstAncestorToScroll: HTMLElement;\n\n\t\t// Let's scroll target's ancestors first to reveal it. Then, once the ancestor scrolls\n\t\t// settled down, the algorithm can eventually scroll the viewport of the current window.\n\t\t//\n\t\t// Note: If the current window is target's **original** window (e.g. the first one),\n\t\t// start scrolling the closest parent of the target. If not, scroll the closest parent\n\t\t// of an iframe that resides in the current window.\n\t\tif ( currentWindow == targetWindow ) {\n\t\t\tfirstAncestorToScroll = getParentElement( target );\n\t\t} else {\n\t\t\tfirstAncestorToScroll = getParentElement( currentFrame! );\n\t\t}\n\n\t\t// Scroll the target's ancestors first. Once done, scrolling the viewport is easy.\n\t\tscrollAncestorsToShowRect( {\n\t\t\tparent: firstAncestorToScroll,\n\t\t\tgetRect: () => {\n\t\t\t\t// Note: If the target does not belong to the current window **directly**,\n\t\t\t\t// i.e. it resides in an iframe belonging to the window, obtain the target's rect\n\t\t\t\t// in the coordinates of the current window. By default, a Rect returns geometry\n\t\t\t\t// relative to the current window's viewport. To make it work in a parent window,\n\t\t\t\t// it must be shifted.\n\t\t\t\treturn getRectRelativeToWindow( target, currentWindow! );\n\t\t\t},\n\t\t\talignToTop,\n\t\t\tancestorOffset,\n\t\t\tforceScroll\n\t\t} );\n\n\t\t// Obtain the rect of the target after it has been scrolled within its ancestors.\n\t\t// It's time to scroll the viewport.\n\t\tconst targetRect = getRectRelativeToWindow( target, currentWindow );\n\n\t\tscrollWindowToShowRect( {\n\t\t\twindow: currentWindow,\n\t\t\trect: targetRect,\n\t\t\tviewportOffset,\n\t\t\talignToTop,\n\t\t\tforceScroll\n\t\t} );\n\n\t\tif ( currentWindow.parent != currentWindow ) {\n\t\t\t// Keep the reference to the <iframe> element the \"previous current window\" was\n\t\t\t// rendered within. It will be useful to re–calculate the rect of the target\n\t\t\t// in the parent window's relative geometry. The target's rect must be shifted\n\t\t\t// by it's iframe's position.\n\t\t\tcurrentFrame = currentWindow.frameElement as HTMLElement | null;\n\t\t\tcurrentWindow = currentWindow.parent;\n\n\t\t\t// If the current window has some parent but frameElement is inaccessible, then they have\n\t\t\t// different domains/ports and, due to security reasons, accessing and scrolling\n\t\t\t// the parent window won't be possible.\n\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/930.\n\t\t\tif ( !currentFrame ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\tcurrentWindow = null;\n\t\t}\n\t}\n}\n\n/**\n * Makes any page `HTMLElement` or `Range` (target) visible within its scrollable ancestors,\n * e.g. if they have `overflow: scroll` CSS style.\n *\n * @param target A target, which supposed to become visible to the user.\n * @param ancestorOffset An offset between the target and the boundary of scrollable ancestors\n * to be maintained while scrolling.\n * @param limiterElement The outermost ancestor that should be scrolled. If specified, it can prevent\n * scrolling the whole page.\n */\nexport function scrollAncestorsToShowTarget( target: HTMLElement | Range, ancestorOffset?: number, limiterElement?: HTMLElement ): void {\n\tconst targetParent = getParentElement( target );\n\n\tscrollAncestorsToShowRect( {\n\t\tparent: targetParent,\n\t\tgetRect: () => new Rect( target ),\n\t\tancestorOffset,\n\t\tlimiterElement\n\t} );\n}\n\n/**\n * Makes a given rect visible within its parent window.\n *\n * Note: Avoid the situation where the caret is still in the viewport, but totally\n * at the edge of it. In such situation, if it moved beyond the viewport in the next\n * action e.g. after paste, the scrolling would move it to the viewportOffset level\n * and it all would look like the caret visually moved up/down:\n *\n * 1.\n * ```\n * | foo[]\n * | <--- N px of space below the caret\n * +---------------------------------...\n * ```\n *\n * 2. *paste*\n * 3.\n * ```\n * |\n * |\n * +-foo-----------------------------...\n * bar[] <--- caret below viewport, scrolling...\n * ```\n *\n * 4. *scrolling*\n * 5.\n * ```\n * |\n * | foo\n * | bar[] <--- caret precisely at the edge\n * +---------------------------------...\n * ```\n *\n * To prevent this, this method checks the rects moved by the viewportOffset to cover\n * the upper/lower edge of the viewport. It makes sure if the action repeats, there's\n * no twitching – it's a purely visual improvement:\n *\n * 5. (after fix)\n * ```\n * |\n * | foo\n * | bar[]\n * | <--- N px of space below the caret\n * +---------------------------------...\n * ```\n *\n * @param options Additional configuration of the scrolling behavior.\n * @param options.window A window which is scrolled to reveal the rect.\n * @param options.rect A rect which is to be revealed.\n * @param options.viewportOffset An offset from the edge of the viewport (in pixels) the `rect` will be\n * moved by if the viewport is scrolled.\n * @param options.alignToTop When set `true`, the helper will make sure the `rect` is scrolled up\n * to the top boundary of the viewport if scrolled up. When not set (default), the `rect` will be\n * revealed by scrolling as little as possible. This option will not affect rects that must be scrolled\n * down because they will appear at the top of the boundary anyway.\n * @param options.forceScroll When set `true`, the `rect` will be aligned to the top of the viewport\n * whether it is already visible or not. This option will only work when `alignToTop` is `true`\n */\nfunction scrollWindowToShowRect<T extends boolean, U extends IfTrue<T>>(\n\t{\n\t\twindow,\n\t\trect,\n\t\talignToTop,\n\t\tforceScroll,\n\t\tviewportOffset\n\t}: {\n\t\treadonly window: Window;\n\t\treadonly rect: Rect;\n\t\treadonly viewportOffset: { top: number; bottom: number; left: number; right: number };\n\t\treadonly alignToTop?: T;\n\t\treadonly forceScroll?: U;\n\t}\n): void {\n\tconst targetShiftedDownRect = rect.clone().moveBy( 0, viewportOffset.bottom );\n\tconst targetShiftedUpRect = rect.clone().moveBy( 0, -viewportOffset.top );\n\tconst viewportRect = new Rect( window ).excludeScrollbarsAndBorders();\n\n\tconst rects = [ targetShiftedUpRect, targetShiftedDownRect ];\n\tconst forceScrollToTop = alignToTop && forceScroll;\n\tconst allRectsFitInViewport = rects.every( rect => viewportRect.contains( rect ) );\n\n\tlet { scrollX, scrollY } = window;\n\tconst initialScrollX = scrollX;\n\tconst initialScrollY = scrollY;\n\n\tif ( forceScrollToTop ) {\n\t\tscrollY -= ( viewportRect.top - rect.top ) + viewportOffset.top;\n\t} else if ( !allRectsFitInViewport ) {\n\t\tif ( isAbove( targetShiftedUpRect, viewportRect ) ) {\n\t\t\tscrollY -= viewportRect.top - rect.top + viewportOffset.top;\n\t\t} else if ( isBelow( targetShiftedDownRect, viewportRect ) ) {\n\t\t\tif ( alignToTop ) {\n\t\t\t\tscrollY += rect.top - viewportRect.top - viewportOffset.top;\n\t\t\t} else {\n\t\t\t\tscrollY += rect.bottom - viewportRect.bottom + viewportOffset.bottom;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( !allRectsFitInViewport ) {\n\t\t// TODO: Web browsers scroll natively to place the target in the middle\n\t\t// of the viewport. It's not a very popular case, though.\n\t\tif ( isLeftOf( rect, viewportRect ) ) {\n\t\t\tscrollX -= viewportRect.left - rect.left + viewportOffset.left;\n\t\t} else if ( isRightOf( rect, viewportRect ) ) {\n\t\t\tscrollX += rect.right - viewportRect.right + viewportOffset.right;\n\t\t}\n\t}\n\n\tif ( scrollX != initialScrollX || scrollY !== initialScrollY ) {\n\t\twindow.scrollTo( scrollX, scrollY );\n\t}\n}\n\n/**\n * Recursively scrolls element ancestors to visually reveal a rect.\n *\n * @param options Additional configuration of the scrolling behavior.\n * @param options.parent The first parent ancestor to start scrolling.\n * @param options.getRect A function which returns the Rect, which is to be revealed.\n * @param options.ancestorOffset An offset from the boundary of scrollable ancestors (if any)\n * the `Rect` instance will be moved by if the viewport is scrolled.\n * @param options.alignToTop When set `true`, the helper will make sure the `Rect` instance is scrolled up\n * to the top boundary of the scrollable ancestors if scrolled up. When not set (default), the `rect`\n * will be revealed by scrolling as little as possible. This option will not affect rects that must be\n * scrolled down because they will appear at the top of the boundary\n * anyway.\n * @param options.forceScroll When set `true`, the `rect` will be aligned to the top of scrollable ancestors\n * whether it is already visible or not. This option will only work when `alignToTop` is `true`\n * @param options.limiterElement The outermost ancestor that should be scrolled. Defaults to the `<body>` element.\n */\nfunction scrollAncestorsToShowRect<T extends boolean, U extends IfTrue<T>>(\n\t{\n\t\tparent,\n\t\tgetRect,\n\t\talignToTop,\n\t\tforceScroll,\n\t\tancestorOffset = 0,\n\t\tlimiterElement\n\t}: {\n\t\treadonly parent: HTMLElement;\n\t\treadonly getRect: () => Rect;\n\t\treadonly alignToTop?: T;\n\t\treadonly forceScroll?: U;\n\t\treadonly ancestorOffset?: number;\n\t\treadonly limiterElement?: HTMLElement;\n\t}\n): void {\n\tconst parentWindow = getWindow( parent );\n\tconst forceScrollToTop = alignToTop && forceScroll;\n\tlet parentRect: Rect, targetRect: Rect, targetFitsInTarget: boolean;\n\n\tconst limiter = limiterElement || parentWindow.document.body;\n\n\twhile ( parent != limiter ) {\n\t\ttargetRect = getRect();\n\t\tparentRect = new Rect( parent ).excludeScrollbarsAndBorders();\n\t\ttargetFitsInTarget = parentRect.contains( targetRect );\n\n\t\tif ( forceScrollToTop ) {\n\t\t\tparent.scrollTop -= ( parentRect.top - targetRect.top ) + ancestorOffset;\n\t\t} else if ( !targetFitsInTarget ) {\n\t\t\tif ( isAbove( targetRect, parentRect ) ) {\n\t\t\t\tparent.scrollTop -= parentRect.top - targetRect.top + ancestorOffset;\n\t\t\t} else if ( isBelow( targetRect, parentRect ) ) {\n\t\t\t\tif ( alignToTop ) {\n\t\t\t\t\tparent.scrollTop += targetRect.top - parentRect.top - ancestorOffset;\n\t\t\t\t} else {\n\t\t\t\t\tparent.scrollTop += targetRect.bottom - parentRect.bottom + ancestorOffset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( !targetFitsInTarget ) {\n\t\t\tif ( isLeftOf( targetRect, parentRect ) ) {\n\t\t\t\tparent.scrollLeft -= parentRect.left - targetRect.left + ancestorOffset;\n\t\t\t} else if ( isRightOf( targetRect, parentRect ) ) {\n\t\t\t\tparent.scrollLeft += targetRect.right - parentRect.right + ancestorOffset;\n\t\t\t}\n\t\t}\n\n\t\tparent = parent.parentNode as HTMLElement;\n\t}\n}\n\n/**\n * Determines if a given `Rect` extends beyond the bottom edge of the second `Rect`.\n */\nfunction isBelow( firstRect: Rect, secondRect: Rect ): boolean {\n\treturn firstRect.bottom > secondRect.bottom;\n}\n\n/**\n * Determines if a given `Rect` extends beyond the top edge of the second `Rect`.\n */\nfunction isAbove( firstRect: Rect, secondRect: Rect ): boolean {\n\treturn firstRect.top < secondRect.top;\n}\n\n/**\n * Determines if a given `Rect` extends beyond the left edge of the second `Rect`.\n */\nfunction isLeftOf( firstRect: Rect, secondRect: Rect ): boolean {\n\treturn firstRect.left < secondRect.left;\n}\n\n/**\n * Determines if a given `Rect` extends beyond the right edge of the second `Rect`.\n */\nfunction isRightOf( firstRect: Rect, secondRect: Rect ): boolean {\n\treturn firstRect.right > secondRect.right;\n}\n\n/**\n * Returns the closest window of an element or range.\n */\nfunction getWindow( elementOrRange: HTMLElement | Range ): Window {\n\tif ( isRange( elementOrRange ) ) {\n\t\treturn elementOrRange.startContainer.ownerDocument!.defaultView!;\n\t} else {\n\t\treturn elementOrRange.ownerDocument.defaultView!;\n\t}\n}\n\n/**\n * Returns the closest parent of an element or DOM range.\n */\nfunction getParentElement( elementOrRange: HTMLElement | Range ): HTMLElement {\n\tif ( isRange( elementOrRange ) ) {\n\t\tlet parent = elementOrRange.commonAncestorContainer as HTMLElement;\n\n\t\t// If a Range is attached to the Text, use the closest element ancestor.\n\t\tif ( isText( parent ) ) {\n\t\t\tparent = parent.parentNode as HTMLElement;\n\t\t}\n\n\t\treturn parent;\n\t} else {\n\t\treturn elementOrRange.parentNode as HTMLElement;\n\t}\n}\n\n/**\n * Returns the rect of an element or range residing in an iframe.\n * The result rect is relative to the geometry of the passed window instance.\n *\n * @param target Element or range which rect should be returned.\n * @param relativeWindow A window the rect should be relative to.\n */\nfunction getRectRelativeToWindow( target: HTMLElement | Range, relativeWindow: Window ): Rect {\n\tconst targetWindow = getWindow( target );\n\tconst rect = new Rect( target );\n\n\tif ( targetWindow === relativeWindow ) {\n\t\treturn rect;\n\t} else {\n\t\tlet currentWindow = targetWindow;\n\n\t\twhile ( currentWindow != relativeWindow ) {\n\t\t\tconst frame = currentWindow.frameElement as HTMLElement;\n\t\t\tconst frameRect = new Rect( frame ).excludeScrollbarsAndBorders();\n\n\t\t\trect.moveBy( frameRect.left, frameRect.top );\n\n\t\t\tcurrentWindow = currentWindow.parent;\n\t\t}\n\t}\n\n\treturn rect;\n}\n\n/**\n * A helper that explodes the `viewportOffset` configuration if defined as a plain number into an object\n * with `top`, `bottom`, `left`, and `right` properties.\n *\n * If an object value is passed, this helper will pass it through.\n *\n * @param viewportOffset Viewport offset to be normalized.\n */\nfunction normalizeViewportOffset( viewportOffset: number | { top: number; bottom: number; left: number; right: number } ) {\n\tif ( typeof viewportOffset === 'number' ) {\n\t\treturn {\n\t\t\ttop: viewportOffset,\n\t\t\tbottom: viewportOffset,\n\t\t\tleft: viewportOffset,\n\t\t\tright: viewportOffset\n\t\t};\n\t}\n\n\treturn viewportOffset;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * A set of utilities related to keyboard support.\n *\n * @module utils/keyboard\n */\n\nimport type { LanguageDirection } from './language';\nimport CKEditorError from './ckeditorerror';\nimport env from './env';\n\nconst modifiersToGlyphsMac = {\n\tctrl: '⌃',\n\tcmd: '⌘',\n\talt: '⌥',\n\tshift: '⇧'\n} as const;\n\nconst modifiersToGlyphsNonMac = {\n\tctrl: 'Ctrl+',\n\talt: 'Alt+',\n\tshift: 'Shift+'\n} as const;\n\n/**\n * An object with `keyName => keyCode` pairs for a set of known keys.\n *\n * Contains:\n *\n * * `a-z`,\n * * `0-9`,\n * * `f1-f12`,\n * * `` ` ``, `-`, `=`, `[`, `]`, `;`, `'`, `,`, `.`, `/`, `\\`,\n * * `arrow(left|up|right|bottom)`,\n * * `backspace`, `delete`, `enter`, `esc`, `tab`,\n * * `ctrl`, `cmd`, `shift`, `alt`.\n */\nexport const keyCodes = generateKnownKeyCodes();\n\nconst keyCodeNames = Object.fromEntries(\n\tObject.entries( keyCodes ).map( ( [ name, code ] ) => [ code, name.charAt( 0 ).toUpperCase() + name.slice( 1 ) ] )\n);\n\n/**\n * Converts a key name or {@link module:utils/keyboard~KeystrokeInfo keystroke info} into a key code.\n *\n * Note: Key names are matched with {@link module:utils/keyboard#keyCodes} in a case-insensitive way.\n *\n * @param key A key name (see {@link module:utils/keyboard#keyCodes}) or a keystroke data object.\n * @returns Key or keystroke code.\n */\nexport function getCode( key: string | Readonly<KeystrokeInfo> ): number {\n\tlet keyCode: number | undefined;\n\n\tif ( typeof key == 'string' ) {\n\t\tkeyCode = keyCodes[ key.toLowerCase() ];\n\n\t\tif ( !keyCode ) {\n\t\t\t/**\n\t\t\t * Unknown key name. Only key names included in the {@link module:utils/keyboard#keyCodes} can be used.\n\t\t\t *\n\t\t\t * @error keyboard-unknown-key\n\t\t\t * @param {String} key\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'keyboard-unknown-key', null, { key } );\n\t\t}\n\t} else {\n\t\tkeyCode = key.keyCode +\n\t\t\t( key.altKey ? keyCodes.alt : 0 ) +\n\t\t\t( key.ctrlKey ? keyCodes.ctrl : 0 ) +\n\t\t\t( key.shiftKey ? keyCodes.shift : 0 ) +\n\t\t\t( key.metaKey ? keyCodes.cmd : 0 );\n\t}\n\n\treturn keyCode;\n}\n\n/**\n * Parses the keystroke and returns a keystroke code that will match the code returned by\n * {@link module:utils/keyboard~getCode} for the corresponding {@link module:utils/keyboard~KeystrokeInfo keystroke info}.\n *\n * The keystroke can be passed in two formats:\n *\n * * as a single string – e.g. `ctrl + A`,\n * * as an array of {@link module:utils/keyboard~keyCodes known key names} and key codes – e.g.:\n * * `[ 'ctrl', 32 ]` (ctrl + space),\n * * `[ 'ctrl', 'a' ]` (ctrl + A).\n *\n * Note: Key names are matched with {@link module:utils/keyboard#keyCodes} in a case-insensitive way.\n *\n * Note: Only keystrokes with a single non-modifier key are supported (e.g. `ctrl+A` is OK, but `ctrl+A+B` is not).\n *\n * Note: On macOS, keystroke handling is translating the `Ctrl` key to the `Cmd` key and handling only that keystroke.\n * For example, a registered keystroke `Ctrl+A` will be translated to `Cmd+A` on macOS. To disable the translation of some keystroke,\n * use the forced modifier: `Ctrl!+A` (note the exclamation mark).\n *\n * @param keystroke The keystroke definition.\n * @returns Keystroke code.\n */\nexport function parseKeystroke( keystroke: string | ReadonlyArray<number | string> ): number {\n\tif ( typeof keystroke == 'string' ) {\n\t\tkeystroke = splitKeystrokeText( keystroke );\n\t}\n\n\treturn keystroke\n\t\t.map( key => ( typeof key == 'string' ) ? getEnvKeyCode( key ) : key )\n\t\t.reduce( ( key, sum ) => sum + key, 0 );\n}\n\n/**\n * Translates any keystroke string text like `\"Ctrl+A\"` to an\n * environment–specific keystroke, i.e. `\"⌘A\"` on macOS.\n *\n * @param keystroke The keystroke text.\n * @returns The keystroke text specific for the environment.\n */\nexport function getEnvKeystrokeText( keystroke: string ): string {\n\tlet keystrokeCode = parseKeystroke( keystroke );\n\n\tconst modifiersToGlyphs = Object.entries( env.isMac ? modifiersToGlyphsMac : modifiersToGlyphsNonMac );\n\n\tconst modifiers = modifiersToGlyphs.reduce( ( modifiers, [ name, glyph ] ) => {\n\t\t// Modifier keys are stored as a bit mask so extract those from the keystroke code.\n\t\tif ( ( keystrokeCode & keyCodes[ name ] ) != 0 ) {\n\t\t\tkeystrokeCode &= ~keyCodes[ name ];\n\t\t\tmodifiers += glyph;\n\t\t}\n\n\t\treturn modifiers;\n\t}, '' );\n\n\treturn modifiers + ( keystrokeCode ? keyCodeNames[ keystrokeCode ] : '' );\n}\n\n/**\n * Returns `true` if the provided key code represents one of the arrow keys.\n *\n * @param keyCode A key code as in {@link module:utils/keyboard~KeystrokeInfo#keyCode}.\n */\nexport function isArrowKeyCode( keyCode: number ): boolean {\n\treturn keyCode == keyCodes.arrowright ||\n\t\tkeyCode == keyCodes.arrowleft ||\n\t\tkeyCode == keyCodes.arrowup ||\n\t\tkeyCode == keyCodes.arrowdown;\n}\n\n/**\n * String representing a direction of an arrow key kode.\n */\nexport type ArrowKeyCodeDirection = 'left' | 'up' | 'right' | 'down';\n\n/**\n * Returns the direction in which the {@link module:engine/model/documentselection~DocumentSelection selection}\n * will move when the provided arrow key code is pressed considering the language direction of the editor content.\n *\n * For instance, in right–to–left (RTL) content languages, pressing the left arrow means moving the selection right (forward)\n * in the model structure. Similarly, pressing the right arrow moves the selection left (backward).\n *\n * @param keyCode A key code as in {@link module:utils/keyboard~KeystrokeInfo#keyCode}.\n * @param contentLanguageDirection The content language direction, corresponding to\n * {@link module:utils/locale~Locale#contentLanguageDirection}.\n * @returns Localized arrow direction or `undefined` for non-arrow key codes.\n */\nexport function getLocalizedArrowKeyCodeDirection(\n\tkeyCode: number,\n\tcontentLanguageDirection: LanguageDirection\n): ArrowKeyCodeDirection | undefined {\n\tconst isLtrContent = contentLanguageDirection === 'ltr';\n\n\tswitch ( keyCode ) {\n\t\tcase keyCodes.arrowleft:\n\t\t\treturn isLtrContent ? 'left' : 'right';\n\n\t\tcase keyCodes.arrowright:\n\t\t\treturn isLtrContent ? 'right' : 'left';\n\n\t\tcase keyCodes.arrowup:\n\t\t\treturn 'up';\n\n\t\tcase keyCodes.arrowdown:\n\t\t\treturn 'down';\n\t}\n}\n\n/**\n * Converts a key name to the key code with mapping based on the env.\n *\n * See: {@link module:utils/keyboard~getCode}.\n *\n * @param key The key name (see {@link module:utils/keyboard#keyCodes}).\n * @returns Key code.\n */\nfunction getEnvKeyCode( key: string ): number {\n\t// Don't remap modifier key for forced modifiers.\n\tif ( key.endsWith( '!' ) ) {\n\t\treturn getCode( key.slice( 0, -1 ) );\n\t}\n\n\tconst code = getCode( key );\n\n\treturn env.isMac && code == keyCodes.ctrl ? keyCodes.cmd : code;\n}\n\n/**\n * Determines if the provided key code moves the {@link module:engine/model/documentselection~DocumentSelection selection}\n * forward or backward considering the language direction of the editor content.\n *\n * For instance, in right–to–left (RTL) languages, pressing the left arrow means moving forward\n * in the model structure. Similarly, pressing the right arrow moves the selection backward.\n *\n * @param keyCode A key code as in {@link module:utils/keyboard~KeystrokeInfo#keyCode}.\n * @param contentLanguageDirection The content language direction, corresponding to\n * {@link module:utils/locale~Locale#contentLanguageDirection}.\n */\nexport function isForwardArrowKeyCode(\n\tkeyCode: number,\n\tcontentLanguageDirection: LanguageDirection\n): boolean {\n\tconst localizedKeyCodeDirection = getLocalizedArrowKeyCodeDirection( keyCode, contentLanguageDirection );\n\n\treturn localizedKeyCodeDirection === 'down' || localizedKeyCodeDirection === 'right';\n}\n\nfunction generateKnownKeyCodes(): { readonly [ keyCode: string ]: number } {\n\tconst keyCodes: { [keyCode: string]: number } = {\n\t\tarrowleft: 37,\n\t\tarrowup: 38,\n\t\tarrowright: 39,\n\t\tarrowdown: 40,\n\t\tbackspace: 8,\n\t\tdelete: 46,\n\t\tenter: 13,\n\t\tspace: 32,\n\t\tesc: 27,\n\t\ttab: 9,\n\n\t\t// The idea about these numbers is that they do not collide with any real key codes, so we can use them\n\t\t// like bit masks.\n\t\tctrl: 0x110000,\n\t\tshift: 0x220000,\n\t\talt: 0x440000,\n\t\tcmd: 0x880000\n\t};\n\n\t// a-z\n\tfor ( let code = 65; code <= 90; code++ ) {\n\t\tconst letter = String.fromCharCode( code );\n\n\t\tkeyCodes[ letter.toLowerCase() ] = code;\n\t}\n\n\t// 0-9\n\tfor ( let code = 48; code <= 57; code++ ) {\n\t\tkeyCodes[ code - 48 ] = code;\n\t}\n\n\t// F1-F12\n\tfor ( let code = 112; code <= 123; code++ ) {\n\t\tkeyCodes[ 'f' + ( code - 111 ) ] = code;\n\t}\n\n\t// other characters\n\tfor ( const char of '`-=[];\\',./\\\\' ) {\n\t\tkeyCodes[ char ] = char.charCodeAt( 0 );\n\t}\n\n\treturn keyCodes;\n}\n\nfunction splitKeystrokeText( keystroke: string ): Array<string> {\n\treturn keystroke.split( '+' ).map( key => key.trim() );\n}\n\n/**\n * Information about the keystroke.\n */\nexport interface KeystrokeInfo {\n\n\t/**\n\t * The [key code](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode).\n\t */\n\tkeyCode: number;\n\n\t/**\n\t * Whether the <kbd>Alt</kbd> modifier was pressed.\n\t */\n\taltKey: boolean;\n\n\t/**\n\t * Whether the <kbd>Cmd</kbd> modifier was pressed.\n\t */\n\tmetaKey: boolean;\n\n\t/**\n\t * Whether the <kbd>Ctrl</kbd> modifier was pressed.\n\t */\n\tctrlKey: boolean;\n\n\t/**\n\t * Whether the <kbd>Shift</kbd> modifier was pressed.\n\t */\n\tshiftKey: boolean;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/toarray\n */\n\n/**\n * Transforms any value to an array. If the provided value is already an array, it is returned unchanged.\n *\n * @label MUTABLE\n * @param data The value to transform to an array.\n * @returns An array created from data.\n */\nexport default function toArray<T>( data: ArrayOrItem<T> ): Array<T>;\n\n/**\n * Transforms any value to an array. If the provided value is already an array, it is returned unchanged.\n *\n * @label IMMUTABLE\n * @param data The value to transform to an array.\n * @returns An array created from data.\n */\nexport default function toArray<T>( data: ReadonlyArrayOrItem<T> ): ReadonlyArray<T>;\n\nexport default function toArray<T>( data: ArrayOrItem<T> ): Array<T> {\n\treturn Array.isArray( data ) ? data : [ data ];\n}\n\nexport type ArrayOrItem<T> = T | Array<T>;\nexport type ReadonlyArrayOrItem<T> = T | ReadonlyArray<T>;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* eslint-disable no-var */\n\n/**\n * @module utils/translation-service\n */\n\nimport CKEditorError from './ckeditorerror';\nimport global from './dom/global';\n\ndeclare global {\n\tvar CKEDITOR_TRANSLATIONS: {\n\t\t[ language: string ]: {\n\t\t\tdictionary: { [ messageId: string ]: string | ReadonlyArray<string> };\n\t\t\tgetPluralForm?: ( n: number ) => number;\n\t\t};\n\t};\n}\n\n/* istanbul ignore else -- @preserve */\nif ( !global.window.CKEDITOR_TRANSLATIONS ) {\n\tglobal.window.CKEDITOR_TRANSLATIONS = {};\n}\n\n/**\n * Adds translations to existing ones or overrides the existing translations. These translations will later\n * be available for the {@link module:utils/locale~Locale#t `t()`} function.\n *\n * The `translations` is an object which consists of `messageId: translation` pairs. Note that the message ID can be\n * either constructed from the message string or from the message ID if it was passed\n * (this happens rarely and mostly for short messages or messages with placeholders).\n * Since the editor displays only the message string, the message ID can be found either in the source code or in the\n * built translations for another language.\n *\n * ```ts\n * add( 'pl', {\n * \t'Cancel': 'Anuluj',\n * \t'IMAGE': 'obraz', // Note that the `IMAGE` comes from the message ID, while the string can be `image`.\n * } );\n * ```\n *\n * If the message is supposed to support various plural forms, make sure to provide an array with the singular form and all plural forms:\n *\n * ```ts\n * add( 'pl', {\n * \t'Add space': [ 'Dodaj spację', 'Dodaj %0 spacje', 'Dodaj %0 spacji' ]\n * } );\n * ```\n *\n * You should also specify the third argument (the `getPluralForm()` function) that will be used to determine the plural form if no\n * language file was loaded for that language. All language files coming from CKEditor 5 sources will have this option set, so\n * these plural form rules will be reused by other translations added to the registered languages. The `getPluralForm()` function\n * can return either a Boolean or a number.\n *\n * ```ts\n * add( 'en', {\n * \t// ... Translations.\n * }, n => n !== 1 );\n * add( 'pl', {\n * \t// ... Translations.\n * }, n => n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && ( n % 100 < 10 || n % 100 >= 20 ) ? 1 : 2 );\n * ```\n *\n * All translations extend the global `window.CKEDITOR_TRANSLATIONS` object. An example of this object can be found below:\n *\n * ```ts\n * {\n * \tpl: {\n * \t\tdictionary: {\n * \t\t\t'Cancel': 'Anuluj',\n * \t\t\t'Add space': [ 'Dodaj spację', 'Dodaj %0 spacje', 'Dodaj %0 spacji' ]\n * \t\t},\n * \t\t// A function that returns the plural form index.\n * \t\tgetPluralForm: n => n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && ( n % 100 < 10 || n % 100 >= 20 ) ? 1 : 2 );\n * \t}\n * \t// Other languages.\n * \t}\n * ```\n *\n * If you cannot import this function from this module (e.g. because you use a CKEditor 5 build), you can\n * still add translations by extending the global `window.CKEDITOR_TRANSLATIONS` object by using a function like\n * the one below:\n *\n * ```ts\n * function addTranslations( language, translations, getPluralForm ) {\n * \tif ( !global.window.CKEDITOR_TRANSLATIONS ) {\n * \t\tglobal.window.CKEDITOR_TRANSLATIONS = {};\n * \t}\n\n * \tif ( !global.window.CKEDITOR_TRANSLATIONS[ language ] ) {\n * \t\tglobal.window.CKEDITOR_TRANSLATIONS[ language ] = {};\n * \t}\n *\n * \tconst languageTranslations = global.window.CKEDITOR_TRANSLATIONS[ language ];\n *\n * \tlanguageTranslations.dictionary = languageTranslations.dictionary || {};\n * \tlanguageTranslations.getPluralForm = getPluralForm || languageTranslations.getPluralForm;\n *\n * \t// Extend the dictionary for the given language.\n * \tObject.assign( languageTranslations.dictionary, translations );\n * }\n * ```\n *\n * @param language Target language.\n * @param translations An object with translations which will be added to the dictionary.\n * For each message ID the value should be either a translation or an array of translations if the message\n * should support plural forms.\n * @param getPluralForm A function that returns the plural form index (a number).\n */\nexport function add(\n\tlanguage: string,\n\ttranslations: { readonly [ messageId: string ]: string | ReadonlyArray<string> },\n\tgetPluralForm?: ( n: number ) => number\n): void {\n\tif ( !global.window.CKEDITOR_TRANSLATIONS[ language ] ) {\n\t\tglobal.window.CKEDITOR_TRANSLATIONS[ language ] = {} as any;\n\t}\n\n\tconst languageTranslations = global.window.CKEDITOR_TRANSLATIONS[ language ];\n\n\tlanguageTranslations.dictionary = languageTranslations.dictionary || {};\n\tlanguageTranslations.getPluralForm = getPluralForm || languageTranslations.getPluralForm;\n\n\tObject.assign( languageTranslations.dictionary, translations );\n}\n\n/**\n * **Note:** This method is internal, use {@link module:utils/locale~Locale#t the `t()` function} instead to translate\n * the editor UI parts.\n *\n * This function is responsible for translating messages to the specified language. It uses translations added perviously\n * by {@link module:utils/translation-service~add} (a translations dictionary and the `getPluralForm()` function\n * to provide accurate translations of plural forms).\n *\n * When no translation is defined in the dictionary or the dictionary does not exist, this function returns\n * the original message string or the message plural depending on the number of elements.\n *\n * ```ts\n * translate( 'pl', { string: 'Cancel' } ); // 'Cancel'\n * ```\n *\n * The third optional argument is the number of elements, based on which the single form or one of the plural forms\n * should be picked when the message is supposed to support various plural forms.\n *\n * ```ts\n * translate( 'en', { string: 'Add a space', plural: 'Add %0 spaces' }, 1 ); // 'Add a space'\n * translate( 'en', { string: 'Add a space', plural: 'Add %0 spaces' }, 3 ); // 'Add %0 spaces'\n * ```\n *\n * The message should provide an ID using the `id` property when the message strings are not unique and their\n * translations should be different.\n *\n * ```ts\n * translate( 'en', { string: 'image', id: 'ADD_IMAGE' } );\n * translate( 'en', { string: 'image', id: 'AN_IMAGE' } );\n * ```\n *\n * @internal\n * @param language Target language.\n * @param message A message that will be translated.\n * @param quantity The number of elements for which a plural form should be picked from the target language dictionary.\n * @returns Translated sentence.\n */\nexport function _translate( language: string, message: Message, quantity: number = 1 ): string {\n\tif ( typeof quantity !== 'number' ) {\n\t\t/**\n\t\t * An incorrect value was passed to the translation function. This was probably caused\n\t\t * by an incorrect message interpolation of a plural form. Note that for messages supporting plural forms\n\t\t * the second argument of the `t()` function should always be a number or an array with a number as the first element.\n\t\t *\n\t\t * @error translation-service-quantity-not-a-number\n\t\t */\n\t\tthrow new CKEditorError( 'translation-service-quantity-not-a-number', null, { quantity } );\n\t}\n\n\tconst numberOfLanguages = getNumberOfLanguages();\n\n\tif ( numberOfLanguages === 1 ) {\n\t\t// Override the language to the only supported one.\n\t\t// This can't be done in the `Locale` class, because the translations comes after the `Locale` class initialization.\n\t\tlanguage = Object.keys( global.window.CKEDITOR_TRANSLATIONS )[ 0 ];\n\t}\n\n\tconst messageId = message.id || message.string;\n\n\tif ( numberOfLanguages === 0 || !hasTranslation( language, messageId ) ) {\n\t\tif ( quantity !== 1 ) {\n\t\t\t// Return the default plural form that was passed in the `message.plural` parameter.\n\t\t\treturn message.plural!;\n\t\t}\n\n\t\treturn message.string;\n\t}\n\n\tconst dictionary = global.window.CKEDITOR_TRANSLATIONS[ language ].dictionary;\n\tconst getPluralForm = global.window.CKEDITOR_TRANSLATIONS[ language ].getPluralForm || ( n => n === 1 ? 0 : 1 );\n\tconst translation = dictionary[ messageId ];\n\n\tif ( typeof translation === 'string' ) {\n\t\treturn translation;\n\t}\n\n\tconst pluralFormIndex = Number( getPluralForm( quantity ) );\n\n\t// Note: The `translate` function is not responsible for replacing `%0, %1, ...` with values.\n\treturn translation[ pluralFormIndex ];\n}\n\n/**\n * Clears dictionaries for test purposes.\n *\n * @internal\n */\nexport function _clear(): void {\n\tglobal.window.CKEDITOR_TRANSLATIONS = {};\n}\n\n/**\n * Checks whether the dictionary exists and translation in that dictionary exists.\n */\nfunction hasTranslation( language: string, messageId: string ): boolean {\n\treturn (\n\t\t!!global.window.CKEDITOR_TRANSLATIONS[ language ] &&\n\t\t!!global.window.CKEDITOR_TRANSLATIONS[ language ].dictionary[ messageId ]\n\t);\n}\n\nfunction getNumberOfLanguages(): number {\n\treturn Object.keys( global.window.CKEDITOR_TRANSLATIONS ).length;\n}\n\n/**\n * The internationalization message interface. A message that implements this interface can be passed to the `t()` function\n * to be translated to the target UI language.\n */\nexport interface Message {\n\n\t/**\n\t * The message string to translate. Acts as a default translation if the translation for a given language\n\t * is not defined. When the message is supposed to support plural forms, the string should be the English singular form of the message.\n\t */\n\treadonly string: string;\n\n\t/**\n\t * The message ID. If passed, the message ID is taken from this property instead of the `message.string`.\n\t * This property is useful when various messages share the same message string, for example, the `editor` string in `in the editor`\n\t * and `my editor` sentences.\n\t */\n\treadonly id?: string;\n\n\t/**\n\t * The plural form of the message. This property should be skipped when a message is not supposed\n\t * to support plural forms. Otherwise it should always be set to a string with the English plural form of the message.\n\t */\n\treadonly plural?: string;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/language\n */\n\n/**\n * String representing a language direction.\n */\nexport type LanguageDirection = 'ltr' | 'rtl';\n\nconst RTL_LANGUAGE_CODES = [\n\t'ar', 'ara', // Arabic\n\t'fa', 'per', 'fas', // Persian\n\t'he', 'heb', // Hebrew\n\t'ku', 'kur', // Kurdish\n\t'ug', 'uig' // Uighur, Uyghur\n];\n\n/**\n * Helps determine whether a language text direction is LTR or RTL.\n *\n * @param languageCode The ISO 639-1 or ISO 639-2 language code.\n */\nexport function getLanguageDirection( languageCode: string ): LanguageDirection {\n\treturn RTL_LANGUAGE_CODES.includes( languageCode ) ? 'rtl' : 'ltr';\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/locale\n */\n\n/* globals console */\n\nimport toArray from './toarray';\nimport { _translate, type Message } from './translation-service';\nimport { getLanguageDirection, type LanguageDirection } from './language';\n\n/**\n * Represents the localization services.\n */\nexport default class Locale {\n\t/**\n\t * The editor UI language code in the [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.\n\t *\n\t * If the {@link #contentLanguage content language} was not specified in the `Locale` constructor,\n\t * it also defines the language of the content.\n\t */\n\tpublic readonly uiLanguage: string;\n\n\t/**\n\t * Text direction of the {@link #uiLanguage editor UI language}. Either `'ltr'` or `'rtl'`.\n\t */\n\tpublic readonly uiLanguageDirection: LanguageDirection;\n\n\t/**\n\t * The editor content language code in the [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.\n\t *\n\t * Usually the same as the {@link #uiLanguage editor language}, it can be customized by passing an optional\n\t * argument to the `Locale` constructor.\n\t */\n\tpublic readonly contentLanguage: string;\n\n\t/**\n\t * Text direction of the {@link #contentLanguage editor content language}.\n\t *\n\t * If the content language was passed directly to the `Locale` constructor, this property represents the\n\t * direction of that language.\n\t *\n\t * If the {@link #contentLanguage editor content language} was derived from the {@link #uiLanguage editor language},\n\t * the content language direction is the same as the {@link #uiLanguageDirection UI language direction}.\n\t *\n\t * The value is either `'ltr'` or `'rtl'`.\n\t */\n\tpublic readonly contentLanguageDirection: LanguageDirection;\n\n\t/**\n\t * Translates the given message to the {@link #uiLanguage}. This method is also available in\n\t * {@link module:core/editor/editor~Editor#t `Editor`} and {@link module:ui/view~View#t `View`}.\n\t *\n\t * This method's context is statically bound to the `Locale` instance and **should always be called as a function**:\n\t *\n\t * ```ts\n\t * const t = locale.t;\n\t * t( 'Label' );\n\t * ```\n\t *\n\t * The message can be either a string or an object implementing the {@link module:utils/translation-service~Message} interface.\n\t *\n\t * The message may contain placeholders (`%<index>`) for value(s) that are passed as a `values` parameter.\n\t * For an array of values, the `%<index>` will be changed to an element of that array at the given index.\n\t * For a single value passed as the second argument, only the `%0` placeholders will be changed to the provided value.\n\t *\n\t * ```ts\n\t * t( 'Created file \"%0\" in %1ms.', [ fileName, timeTaken ] );\n\t * t( 'Created file \"%0\", fileName );\n\t * ```\n\t *\n\t * The message supports plural forms. To specify the plural form, use the `plural` property. Singular or plural form\n\t * will be chosen depending on the first value from the passed `values`. The value of the `plural` property is used\n\t * as a default plural translation when the translation for the target language is missing.\n\t *\n\t * ```ts\n\t * t( { string: 'Add a space', plural: 'Add %0 spaces' }, 1 ); // 'Add a space' for the English language.\n\t * t( { string: 'Add a space', plural: 'Add %0 spaces' }, 5 ); // 'Add 5 spaces' for the English language.\n\t * t( { string: '%1 a space', plural: '%1 %0 spaces' }, [ 2, 'Add' ] ); // 'Add 2 spaces' for the English language.\n\t *\n\t * t( { string: 'Add a space', plural: 'Add %0 spaces' }, 1 ); // 'Dodaj spację' for the Polish language.\n\t * t( { string: 'Add a space', plural: 'Add %0 spaces' }, 5 ); // 'Dodaj 5 spacji' for the Polish language.\n\t * t( { string: '%1 a space', plural: '%1 %0 spaces' }, [ 2, 'Add' ] ); // 'Dodaj 2 spacje' for the Polish language.\n\t * ```\n\t *\n\t * * The message should provide an ID using the `id` property when the message strings are not unique and their\n\t * translations should be different.\n\t *\n\t * ```ts\n\t * translate( 'en', { string: 'image', id: 'ADD_IMAGE' } );\n\t * translate( 'en', { string: 'image', id: 'AN_IMAGE' } );\n\t * ```\n\t */\n\tpublic readonly t: LocaleTranslate;\n\n\t/**\n\t * Creates a new instance of the locale class. Learn more about\n\t * {@glink features/ui-language configuring the language of the editor}.\n\t *\n\t * @param options Locale configuration.\n\t * @param options.uiLanguage The editor UI language code in the\n\t * [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) format. See {@link #uiLanguage}.\n\t * @param options.contentLanguage The editor content language code in the\n\t * [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) format. If not specified, the same as `options.language`.\n\t * See {@link #contentLanguage}.\n\t */\n\tconstructor( { uiLanguage = 'en', contentLanguage }: { readonly uiLanguage?: string; readonly contentLanguage?: string } = {} ) {\n\t\tthis.uiLanguage = uiLanguage;\n\t\tthis.contentLanguage = contentLanguage || this.uiLanguage;\n\t\tthis.uiLanguageDirection = getLanguageDirection( this.uiLanguage );\n\t\tthis.contentLanguageDirection = getLanguageDirection( this.contentLanguage );\n\n\t\tthis.t = ( message, values ) => this._t( message, values );\n\t}\n\n\t/**\n\t * The editor UI language code in the [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.\n\t *\n\t * **Note**: This property was deprecated. Please use {@link #uiLanguage} and {@link #contentLanguage}\n\t * properties instead.\n\t *\n\t * @deprecated\n\t */\n\tpublic get language(): string {\n\t\t/**\n\t\t * The {@link module:utils/locale~Locale#language `Locale#language`} property was deprecated and will\n\t\t * be removed in the near future. Please use the {@link module:utils/locale~Locale#uiLanguage `Locale#uiLanguage`} and\n\t\t * {@link module:utils/locale~Locale#contentLanguage `Locale#contentLanguage`} properties instead.\n\t\t *\n\t\t * @error locale-deprecated-language-property\n\t\t */\n\t\tconsole.warn(\n\t\t\t'locale-deprecated-language-property: ' +\n\t\t\t'The Locale#language property has been deprecated and will be removed in the near future. ' +\n\t\t\t'Please use #uiLanguage and #contentLanguage properties instead.' );\n\n\t\treturn this.uiLanguage;\n\t}\n\n\t/**\n\t * An unbound version of the {@link #t} method.\n\t */\n\tprivate _t( message: string | Message, values: number | string | ReadonlyArray<number | string> = [] ): string {\n\t\tvalues = toArray( values );\n\n\t\tif ( typeof message === 'string' ) {\n\t\t\tmessage = { string: message };\n\t\t}\n\n\t\tconst hasPluralForm = !!message.plural;\n\t\tconst quantity = hasPluralForm ? values[ 0 ] as number : 1;\n\n\t\tconst translatedString = _translate( this.uiLanguage, message, quantity );\n\n\t\treturn interpolateString( translatedString, values );\n\t}\n}\n\n/**\n * @param message A message that will be localized (translated).\n * @param values A value or an array of values that will fill message placeholders.\n * For messages supporting plural forms the first value will determine the plural form.\n */\nexport type LocaleTranslate = ( message: string | Message, values?: number | string | ReadonlyArray<number | string> ) => string;\n\n/**\n * Fills the `%0, %1, ...` string placeholders with values.\n */\nfunction interpolateString( string: string, values: ReadonlyArray<any> ): string {\n\treturn string.replace( /%(\\d+)/g, ( match, index ) => {\n\t\treturn ( index < values.length ) ? values[ index ] : match;\n\t} );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/collection\n */\n\nimport EmitterMixin from './emittermixin';\nimport CKEditorError from './ckeditorerror';\nimport uid from './uid';\nimport isIterable from './isiterable';\n\n/**\n * Collections are ordered sets of objects. Items in the collection can be retrieved by their indexes\n * in the collection (like in an array) or by their ids.\n *\n * If an object without an `id` property is being added to the collection, the `id` property will be generated\n * automatically. Note that the automatically generated id is unique only within this single collection instance.\n *\n * By default an item in the collection is identified by its `id` property. The name of the identifier can be\n * configured through the constructor of the collection.\n *\n * @typeParam T The type of the collection element.\n */\nexport default class Collection<T extends Record<string, any>> extends EmitterMixin() implements Iterable<T> {\n\t/**\n\t * The internal list of items in the collection.\n\t */\n\tprivate readonly _items: Array<T>;\n\n\t/**\n\t * The internal map of items in the collection.\n\t */\n\tprivate readonly _itemMap: Map<string, T>;\n\n\t/**\n\t * The name of the property which is considered to identify an item.\n\t */\n\tprivate readonly _idProperty: string;\n\n\t/**\n\t * A collection instance this collection is bound to as a result\n\t * of calling {@link #bindTo} method.\n\t */\n\tprivate _bindToCollection?: Collection<any> | null;\n\n\t/**\n\t * A helper mapping external items of a bound collection ({@link #bindTo})\n\t * and actual items of this collection. It provides information\n\t * necessary to properly remove items bound to another collection.\n\t *\n\t * See {@link #_bindToInternalToExternalMap}.\n\t */\n\tprivate readonly _bindToExternalToInternalMap: WeakMap<any, T>;\n\n\t/**\n\t * A helper mapping items of this collection to external items of a bound collection\n\t * ({@link #bindTo}). It provides information necessary to manage the bindings, e.g.\n\t * to avoid loops in two–way bindings.\n\t *\n\t * See {@link #_bindToExternalToInternalMap}.\n\t */\n\tprivate readonly _bindToInternalToExternalMap: WeakMap<T, any>;\n\n\t/**\n\t * Stores indexes of skipped items from bound external collection.\n\t */\n\tprivate _skippedIndexesFromExternal: Array<number>;\n\n\t/**\n\t * Creates a new Collection instance.\n\t *\n\t * You can pass a configuration object as the argument of the constructor:\n\t *\n\t * ```ts\n\t * const emptyCollection = new Collection<{ name: string }>( { idProperty: 'name' } );\n\t * emptyCollection.add( { name: 'John' } );\n\t * console.log( collection.get( 'John' ) ); // -> { name: 'John' }\n\t * ```\n\t *\n\t * The collection is empty by default. You can add new items using the {@link #add} method:\n\t *\n\t * ```ts\n\t * const collection = new Collection<{ id: string }>();\n\t *\n\t * collection.add( { id: 'John' } );\n\t * console.log( collection.get( 0 ) ); // -> { id: 'John' }\n\t * ```\n\t *\n\t * @label NO_ITEMS\n\t * @param options The options object.\n\t * @param options.idProperty The name of the property which is used to identify an item.\n\t * Items that do not have such a property will be assigned one when added to the collection.\n\t */\n\tconstructor( options?: { readonly idProperty?: string } );\n\n\t/**\n\t * Creates a new Collection instance with specified initial items.\n\t *\n\t * ```ts\n\t * const collection = new Collection<{ id: string }>( [ { id: 'John' }, { id: 'Mike' } ] );\n\t *\n\t * console.log( collection.get( 0 ) ); // -> { id: 'John' }\n\t * console.log( collection.get( 1 ) ); // -> { id: 'Mike' }\n\t * console.log( collection.get( 'Mike' ) ); // -> { id: 'Mike' }\n\t * ```\n\t *\n\t * You can always pass a configuration object as the last argument of the constructor:\n\t *\n\t * ```ts\n\t * const nonEmptyCollection = new Collection<{ name: string }>( [ { name: 'John' } ], { idProperty: 'name' } );\n\t * nonEmptyCollection.add( { name: 'George' } );\n\t * console.log( collection.get( 'George' ) ); // -> { name: 'George' }\n\t * console.log( collection.get( 'John' ) ); // -> { name: 'John' }\n\t * ```\n\t *\n\t * @label INITIAL_ITEMS\n\t * @param initialItems The initial items of the collection.\n\t * @param options The options object.\n\t * @param options.idProperty The name of the property which is used to identify an item.\n\t * Items that do not have such a property will be assigned one when added to the collection.\n\t */\n\tconstructor( initialItems: Iterable<T>, options?: { readonly idProperty?: string } );\n\n\tconstructor(\n\t\tinitialItemsOrOptions: Iterable<T> | { readonly idProperty?: string } = {},\n\t\toptions: { readonly idProperty?: string } = {}\n\t) {\n\t\tsuper();\n\n\t\tconst hasInitialItems = isIterable( initialItemsOrOptions );\n\n\t\tif ( !hasInitialItems ) {\n\t\t\toptions = initialItemsOrOptions;\n\t\t}\n\n\t\tthis._items = [];\n\t\tthis._itemMap = new Map();\n\t\tthis._idProperty = options.idProperty || 'id';\n\t\tthis._bindToExternalToInternalMap = new WeakMap();\n\t\tthis._bindToInternalToExternalMap = new WeakMap();\n\t\tthis._skippedIndexesFromExternal = [];\n\n\t\t// Set the initial content of the collection (if provided in the constructor).\n\t\tif ( hasInitialItems ) {\n\t\t\tfor ( const item of initialItemsOrOptions ) {\n\t\t\t\tthis._items.push( item );\n\t\t\t\tthis._itemMap.set( this._getItemIdBeforeAdding( item ), item );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * The number of items available in the collection.\n\t */\n\tpublic get length(): number {\n\t\treturn this._items.length;\n\t}\n\n\t/**\n\t * Returns the first item from the collection or null when collection is empty.\n\t */\n\tpublic get first(): T | null {\n\t\treturn this._items[ 0 ] || null;\n\t}\n\n\t/**\n\t * Returns the last item from the collection or null when collection is empty.\n\t */\n\tpublic get last(): T | null {\n\t\treturn this._items[ this.length - 1 ] || null;\n\t}\n\n\t/**\n\t * Adds an item into the collection.\n\t *\n\t * If the item does not have an id, then it will be automatically generated and set on the item.\n\t *\n\t * @param item\n\t * @param index The position of the item in the collection. The item\n\t * is pushed to the collection when `index` not specified.\n\t * @fires add\n\t * @fires change\n\t */\n\tpublic add( item: T, index?: number ): this {\n\t\treturn this.addMany( [ item ], index );\n\t}\n\n\t/**\n\t * Adds multiple items into the collection.\n\t *\n\t * Any item not containing an id will get an automatically generated one.\n\t *\n\t * @param items\n\t * @param index The position of the insertion. Items will be appended if no `index` is specified.\n\t * @fires add\n\t * @fires change\n\t */\n\tpublic addMany( items: Iterable<T>, index?: number ): this {\n\t\tif ( index === undefined ) {\n\t\t\tindex = this._items.length;\n\t\t} else if ( index > this._items.length || index < 0 ) {\n\t\t\t/**\n\t\t\t * The `index` passed to {@link module:utils/collection~Collection#addMany `Collection#addMany()`}\n\t\t\t * is invalid. It must be a number between 0 and the collection's length.\n\t\t\t *\n\t\t\t * @error collection-add-item-invalid-index\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'collection-add-item-invalid-index', this );\n\t\t}\n\n\t\tlet offset = 0;\n\n\t\tfor ( const item of items ) {\n\t\t\tconst itemId = this._getItemIdBeforeAdding( item );\n\t\t\tconst currentItemIndex = index + offset;\n\n\t\t\tthis._items.splice( currentItemIndex, 0, item );\n\t\t\tthis._itemMap.set( itemId, item );\n\n\t\t\tthis.fire<CollectionAddEvent<T>>( 'add', item, currentItemIndex );\n\n\t\t\toffset++;\n\t\t}\n\n\t\tthis.fire<CollectionChangeEvent<T>>( 'change', {\n\t\t\tadded: items,\n\t\t\tremoved: [],\n\t\t\tindex\n\t\t} );\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Gets an item by its ID or index.\n\t *\n\t * @param idOrIndex The item ID or index in the collection.\n\t * @returns The requested item or `null` if such item does not exist.\n\t */\n\tpublic get( idOrIndex: string | number ): T | null {\n\t\tlet item: T | undefined;\n\n\t\tif ( typeof idOrIndex == 'string' ) {\n\t\t\titem = this._itemMap.get( idOrIndex );\n\t\t} else if ( typeof idOrIndex == 'number' ) {\n\t\t\titem = this._items[ idOrIndex ];\n\t\t} else {\n\t\t\t/**\n\t\t\t * An index or ID must be given.\n\t\t\t *\n\t\t\t * @error collection-get-invalid-arg\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'collection-get-invalid-arg', this );\n\t\t}\n\n\t\treturn item || null;\n\t}\n\n\t/**\n\t * Returns a Boolean indicating whether the collection contains an item.\n\t *\n\t * @param itemOrId The item or its ID in the collection.\n\t * @returns `true` if the collection contains the item, `false` otherwise.\n\t */\n\tpublic has( itemOrId: T | string ): boolean {\n\t\tif ( typeof itemOrId == 'string' ) {\n\t\t\treturn this._itemMap.has( itemOrId );\n\t\t} else { // Object\n\t\t\tconst idProperty = this._idProperty;\n\t\t\tconst id = itemOrId[ idProperty ];\n\n\t\t\treturn id && this._itemMap.has( id );\n\t\t}\n\t}\n\n\t/**\n\t * Gets an index of an item in the collection.\n\t * When an item is not defined in the collection, the index will equal -1.\n\t *\n\t * @param itemOrId The item or its ID in the collection.\n\t * @returns The index of a given item.\n\t */\n\tpublic getIndex( itemOrId: T | string ): number {\n\t\tlet item: T | undefined;\n\n\t\tif ( typeof itemOrId == 'string' ) {\n\t\t\titem = this._itemMap.get( itemOrId );\n\t\t} else {\n\t\t\titem = itemOrId;\n\t\t}\n\n\t\treturn item ? this._items.indexOf( item ) : -1;\n\t}\n\n\t/**\n\t * Removes an item from the collection.\n\t *\n\t * @param subject The item to remove, its ID or index in the collection.\n\t * @returns The removed item.\n\t * @fires remove\n\t * @fires change\n\t */\n\tpublic remove( subject: T | number | string ): T {\n\t\tconst [ item, index ] = this._remove( subject );\n\n\t\tthis.fire<CollectionChangeEvent<T>>( 'change', {\n\t\t\tadded: [],\n\t\t\tremoved: [ item ],\n\t\t\tindex\n\t\t} );\n\n\t\treturn item;\n\t}\n\n\t/**\n\t * Executes the callback for each item in the collection and composes an array or values returned by this callback.\n\t *\n\t * @typeParam U The result type of the callback.\n\t * @param callback\n\t * @param ctx Context in which the `callback` will be called.\n\t * @returns The result of mapping.\n\t */\n\tpublic map<U>(\n\t\tcallback: ( item: T, index: number ) => U,\n\t\tctx?: any\n\t): Array<U> {\n\t\treturn this._items.map( callback, ctx );\n\t}\n\n\t/**\n\t * Finds the first item in the collection for which the `callback` returns a true value.\n\t *\n\t * @param callback\n\t * @param ctx Context in which the `callback` will be called.\n\t * @returns The item for which `callback` returned a true value.\n\t */\n\tpublic find(\n\t\tcallback: ( item: T, index: number ) => boolean,\n\t\tctx?: any\n\t): T | undefined {\n\t\treturn this._items.find( callback, ctx );\n\t}\n\n\t/**\n\t * Returns an array with items for which the `callback` returned a true value.\n\t *\n\t * @param callback\n\t * @param ctx Context in which the `callback` will be called.\n\t * @returns The array with matching items.\n\t */\n\tpublic filter(\n\t\tcallback: ( item: T, index: number ) => boolean,\n\t\tctx?: any\n\t): Array<T> {\n\t\treturn this._items.filter( callback, ctx );\n\t}\n\n\t/**\n\t * Removes all items from the collection and destroys the binding created using\n\t * {@link #bindTo}.\n\t *\n\t * @fires remove\n\t * @fires change\n\t */\n\tpublic clear(): void {\n\t\tif ( this._bindToCollection ) {\n\t\t\tthis.stopListening( this._bindToCollection );\n\t\t\tthis._bindToCollection = null;\n\t\t}\n\n\t\tconst removedItems = Array.from( this._items );\n\n\t\twhile ( this.length ) {\n\t\t\tthis._remove( 0 );\n\t\t}\n\n\t\tthis.fire<CollectionChangeEvent<T>>( 'change', {\n\t\t\tadded: [],\n\t\t\tremoved: removedItems,\n\t\t\tindex: 0\n\t\t} );\n\t}\n\n\t/**\n\t * Binds and synchronizes the collection with another one.\n\t *\n\t * The binding can be a simple factory:\n\t *\n\t * ```ts\n\t * class FactoryClass {\n\t * \tpublic label: string;\n\t *\n\t * \tconstructor( data: { label: string } ) {\n\t * \t\tthis.label = data.label;\n\t * \t}\n\t * }\n\t *\n\t * const source = new Collection<{ label: string }>( { idProperty: 'label' } );\n\t * const target = new Collection<FactoryClass>();\n\t *\n\t * target.bindTo( source ).as( FactoryClass );\n\t *\n\t * source.add( { label: 'foo' } );\n\t * source.add( { label: 'bar' } );\n\t *\n\t * console.log( target.length ); // 2\n\t * console.log( target.get( 1 ).label ); // 'bar'\n\t *\n\t * source.remove( 0 );\n\t * console.log( target.length ); // 1\n\t * console.log( target.get( 0 ).label ); // 'bar'\n\t * ```\n\t *\n\t * or the factory driven by a custom callback:\n\t *\n\t * ```ts\n\t * class FooClass {\n\t * \tpublic label: string;\n\t *\n\t * \tconstructor( data: { label: string } ) {\n\t * \t\tthis.label = data.label;\n\t * \t}\n\t * }\n\t *\n\t * class BarClass {\n\t * \tpublic label: string;\n\t *\n\t * \tconstructor( data: { label: string } ) {\n\t * \t\tthis.label = data.label;\n\t * \t}\n\t * }\n\t *\n\t * const source = new Collection<{ label: string }>( { idProperty: 'label' } );\n\t * const target = new Collection<FooClass | BarClass>();\n\t *\n\t * target.bindTo( source ).using( ( item ) => {\n\t * \tif ( item.label == 'foo' ) {\n\t * \t\treturn new FooClass( item );\n\t * \t} else {\n\t * \t\treturn new BarClass( item );\n\t * \t}\n\t * } );\n\t *\n\t * source.add( { label: 'foo' } );\n\t * source.add( { label: 'bar' } );\n\t *\n\t * console.log( target.length ); // 2\n\t * console.log( target.get( 0 ) instanceof FooClass ); // true\n\t * console.log( target.get( 1 ) instanceof BarClass ); // true\n\t * ```\n\t *\n\t * or the factory out of property name:\n\t *\n\t * ```ts\n\t * const source = new Collection<{ nested: { value: string } }>();\n\t * const target = new Collection<{ value: string }>();\n\t *\n\t * target.bindTo( source ).using( 'nested' );\n\t *\n\t * source.add( { nested: { value: 'foo' } } );\n\t * source.add( { nested: { value: 'bar' } } );\n\t *\n\t * console.log( target.length ); // 2\n\t * console.log( target.get( 0 ).value ); // 'foo'\n\t * console.log( target.get( 1 ).value ); // 'bar'\n\t * ```\n\t *\n\t * It's possible to skip specified items by returning null value:\n\t *\n\t * ```ts\n\t * const source = new Collection<{ hidden: boolean }>();\n\t * const target = new Collection<{ hidden: boolean }>();\n\t *\n\t * target.bindTo( source ).using( item => {\n\t * \tif ( item.hidden ) {\n\t * \t\treturn null;\n\t * \t}\n\t *\n\t * \treturn item;\n\t * } );\n\t *\n\t * source.add( { hidden: true } );\n\t * source.add( { hidden: false } );\n\t *\n\t * console.log( source.length ); // 2\n\t * console.log( target.length ); // 1\n\t * ```\n\t *\n\t * **Note**: {@link #clear} can be used to break the binding.\n\t *\n\t * @typeParam S The type of `externalCollection` element.\n\t * @param externalCollection A collection to be bound.\n\t * @returns The binding chain object.\n\t */\n\tpublic bindTo<S extends Record<string, any>>(\n\t\texternalCollection: Collection<S>\n\t): CollectionBindToChain<S, T> {\n\t\tif ( this._bindToCollection ) {\n\t\t\t/**\n\t\t\t * The collection cannot be bound more than once.\n\t\t\t *\n\t\t\t * @error collection-bind-to-rebind\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'collection-bind-to-rebind', this );\n\t\t}\n\n\t\tthis._bindToCollection = externalCollection;\n\n\t\treturn {\n\t\t\tas: Class => {\n\t\t\t\tthis._setUpBindToBinding<S>( item => new Class( item ) );\n\t\t\t},\n\n\t\t\tusing: callbackOrProperty => {\n\t\t\t\tif ( typeof callbackOrProperty == 'function' ) {\n\t\t\t\t\tthis._setUpBindToBinding<S>( callbackOrProperty );\n\t\t\t\t} else {\n\t\t\t\t\tthis._setUpBindToBinding<S>( item => item[ callbackOrProperty ] );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Finalizes and activates a binding initiated by {@link #bindTo}.\n\t *\n\t * @param factory A function which produces collection items.\n\t */\n\tprivate _setUpBindToBinding<S>( factory: ( item: S ) => T | null ): void {\n\t\tconst externalCollection = this._bindToCollection!;\n\n\t\t// Adds the item to the collection once a change has been done to the external collection.\n\t\tconst addItem = ( evt: unknown, externalItem: S, index: number ) => {\n\t\t\tconst isExternalBoundToThis = externalCollection._bindToCollection == this;\n\t\t\tconst externalItemBound = externalCollection._bindToInternalToExternalMap.get( externalItem );\n\n\t\t\t// If an external collection is bound to this collection, which makes it a 2–way binding,\n\t\t\t// and the particular external collection item is already bound, don't add it here.\n\t\t\t// The external item has been created **out of this collection's item** and (re)adding it will\n\t\t\t// cause a loop.\n\t\t\tif ( isExternalBoundToThis && externalItemBound ) {\n\t\t\t\tthis._bindToExternalToInternalMap.set( externalItem, externalItemBound );\n\t\t\t\tthis._bindToInternalToExternalMap.set( externalItemBound, externalItem );\n\t\t\t} else {\n\t\t\t\tconst item = factory( externalItem );\n\n\t\t\t\t// When there is no item we need to remember skipped index first and then we can skip this item.\n\t\t\t\tif ( !item ) {\n\t\t\t\t\tthis._skippedIndexesFromExternal.push( index );\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Lets try to put item at the same index as index in external collection\n\t\t\t\t// but when there are a skipped items in one or both collections we need to recalculate this index.\n\t\t\t\tlet finalIndex = index;\n\n\t\t\t\t// When we try to insert item after some skipped items from external collection we need\n\t\t\t\t// to include this skipped items and decrease index.\n\t\t\t\t//\n\t\t\t\t// For the following example:\n\t\t\t\t// external -> [ 'A', 'B - skipped for internal', 'C - skipped for internal' ]\n\t\t\t\t// internal -> [ A ]\n\t\t\t\t//\n\t\t\t\t// Another item is been added at the end of external collection:\n\t\t\t\t// external.add( 'D' )\n\t\t\t\t// external -> [ 'A', 'B - skipped for internal', 'C - skipped for internal', 'D' ]\n\t\t\t\t//\n\t\t\t\t// We can't just add 'D' to internal at the same index as index in external because\n\t\t\t\t// this will produce empty indexes what is invalid:\n\t\t\t\t// internal -> [ 'A', empty, empty, 'D' ]\n\t\t\t\t//\n\t\t\t\t// So we need to include skipped items and decrease index\n\t\t\t\t// internal -> [ 'A', 'D' ]\n\t\t\t\tfor ( const skipped of this._skippedIndexesFromExternal ) {\n\t\t\t\t\tif ( index > skipped ) {\n\t\t\t\t\t\tfinalIndex--;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// We need to take into consideration that external collection could skip some items from\n\t\t\t\t// internal collection.\n\t\t\t\t//\n\t\t\t\t// For the following example:\n\t\t\t\t// internal -> [ 'A', 'B - skipped for external', 'C - skipped for external' ]\n\t\t\t\t// external -> [ A ]\n\t\t\t\t//\n\t\t\t\t// Another item is been added at the end of external collection:\n\t\t\t\t// external.add( 'D' )\n\t\t\t\t// external -> [ 'A', 'D' ]\n\t\t\t\t//\n\t\t\t\t// We need to include skipped items and place new item after them:\n\t\t\t\t// internal -> [ 'A', 'B - skipped for external', 'C - skipped for external', 'D' ]\n\t\t\t\tfor ( const skipped of externalCollection._skippedIndexesFromExternal ) {\n\t\t\t\t\tif ( finalIndex >= skipped ) {\n\t\t\t\t\t\tfinalIndex++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._bindToExternalToInternalMap.set( externalItem, item );\n\t\t\t\tthis._bindToInternalToExternalMap.set( item, externalItem );\n\t\t\t\tthis.add( item, finalIndex );\n\n\t\t\t\t// After adding new element to internal collection we need update indexes\n\t\t\t\t// of skipped items in external collection.\n\t\t\t\tfor ( let i = 0; i < externalCollection._skippedIndexesFromExternal.length; i++ ) {\n\t\t\t\t\tif ( finalIndex <= externalCollection._skippedIndexesFromExternal[ i ] ) {\n\t\t\t\t\t\texternalCollection._skippedIndexesFromExternal[ i ]++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Load the initial content of the collection.\n\t\tfor ( const externalItem of externalCollection ) {\n\t\t\taddItem( null, externalItem, externalCollection.getIndex( externalItem ) );\n\t\t}\n\n\t\t// Synchronize the with collection as new items are added.\n\t\tthis.listenTo<CollectionAddEvent<S>>( externalCollection, 'add', addItem );\n\n\t\t// Synchronize the with collection as new items are removed.\n\t\tthis.listenTo<CollectionRemoveEvent<S>>( externalCollection, 'remove', ( evt, externalItem, index ) => {\n\t\t\tconst item = this._bindToExternalToInternalMap.get( externalItem );\n\n\t\t\tif ( item ) {\n\t\t\t\tthis.remove( item );\n\t\t\t}\n\n\t\t\t// After removing element from external collection we need update/remove indexes\n\t\t\t// of skipped items in internal collection.\n\t\t\tthis._skippedIndexesFromExternal = this._skippedIndexesFromExternal.reduce( ( result, skipped ) => {\n\t\t\t\tif ( index < skipped ) {\n\t\t\t\t\tresult.push( skipped - 1 );\n\t\t\t\t}\n\n\t\t\t\tif ( index > skipped ) {\n\t\t\t\t\tresult.push( skipped );\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}, [] as Array<number> );\n\t\t} );\n\t}\n\n\t/**\n\t * Returns an unique id property for a given `item`.\n\t *\n\t * The method will generate new id and assign it to the `item` if it doesn't have any.\n\t *\n\t * @param item Item to be added.\n\t */\n\tprivate _getItemIdBeforeAdding( item: any ): string {\n\t\tconst idProperty = this._idProperty;\n\t\tlet itemId: string | undefined;\n\n\t\tif ( ( idProperty in item ) ) {\n\t\t\titemId = item[ idProperty ];\n\n\t\t\tif ( typeof itemId != 'string' ) {\n\t\t\t\t/**\n\t\t\t\t * This item's ID should be a string.\n\t\t\t\t *\n\t\t\t\t * @error collection-add-invalid-id\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'collection-add-invalid-id', this );\n\t\t\t}\n\n\t\t\tif ( this.get( itemId ) ) {\n\t\t\t\t/**\n\t\t\t\t * This item already exists in the collection.\n\t\t\t\t *\n\t\t\t\t * @error collection-add-item-already-exists\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'collection-add-item-already-exists', this );\n\t\t\t}\n\t\t} else {\n\t\t\titem[ idProperty ] = itemId = uid();\n\t\t}\n\n\t\treturn itemId;\n\t}\n\n\t/**\n\t * Core {@link #remove} method implementation shared in other functions.\n\t *\n\t * In contrast this method **does not** fire the {@link #event:change} event.\n\t *\n\t * @param subject The item to remove, its id or index in the collection.\n\t * @returns Returns an array with the removed item and its index.\n\t * @fires remove\n\t */\n\tprivate _remove( subject: T | number | string ): [ item: T, index: number ] {\n\t\tlet index: number, id: string, item: T;\n\t\tlet itemDoesNotExist = false;\n\t\tconst idProperty = this._idProperty;\n\n\t\tif ( typeof subject == 'string' ) {\n\t\t\tid = subject;\n\t\t\titem = this._itemMap.get( id )!;\n\t\t\titemDoesNotExist = !item;\n\n\t\t\tif ( item ) {\n\t\t\t\tindex = this._items.indexOf( item );\n\t\t\t}\n\t\t} else if ( typeof subject == 'number' ) {\n\t\t\tindex = subject;\n\t\t\titem = this._items[ index ];\n\t\t\titemDoesNotExist = !item;\n\n\t\t\tif ( item ) {\n\t\t\t\tid = item[ idProperty ]!;\n\t\t\t}\n\t\t} else {\n\t\t\titem = subject;\n\t\t\tid = item[ idProperty ]!;\n\t\t\tindex = this._items.indexOf( item );\n\t\t\titemDoesNotExist = ( index == -1 || !this._itemMap.get( id ) );\n\t\t}\n\n\t\tif ( itemDoesNotExist ) {\n\t\t\t/**\n\t\t\t * Item not found.\n\t\t\t *\n\t\t\t * @error collection-remove-404\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'collection-remove-404', this );\n\t\t}\n\n\t\tthis._items.splice( index!, 1 );\n\t\tthis._itemMap.delete( id! );\n\n\t\tconst externalItem = this._bindToInternalToExternalMap.get( item );\n\t\tthis._bindToInternalToExternalMap.delete( item );\n\t\tthis._bindToExternalToInternalMap.delete( externalItem );\n\n\t\tthis.fire<CollectionRemoveEvent<T>>( 'remove', item, index! );\n\n\t\treturn [ item, index! ];\n\t}\n\n\t/**\n\t * Iterable interface.\n\t */\n\tpublic [ Symbol.iterator ](): Iterator<T> {\n\t\treturn this._items[ Symbol.iterator ]();\n\t}\n}\n\n/**\n * Fired when an item is added to the collection.\n *\n * @eventName ~Collection#add\n * @param item The added item.\n * @param index An index where the addition occurred.\n */\nexport type CollectionAddEvent<T = any> = {\n\tname: 'add';\n\targs: [ item: T, index: number ];\n};\n\n/**\n * Fired when the collection was changed due to adding or removing items.\n *\n * @eventName ~Collection#change\n * @param data Changed items.\n */\nexport type CollectionChangeEvent<T = any> = {\n\tname: 'change';\n\targs: [ data: CollectionChangeEventData<T> ];\n};\n\n/**\n * A structure describing the {@link ~Collection#event:change `Collection#change`} event.\n */\nexport type CollectionChangeEventData<T = any> = {\n\n\t/**\n\t * A list of added items.\n\t */\n\tadded: Iterable<T>;\n\n\t/**\n\t * A list of removed items.\n\t */\n\tremoved: Iterable<T>;\n\n\t/**\n\t * An index where the addition or removal occurred.\n\t */\n\tindex: number;\n};\n\n/**\n * Fired when an item is removed from the collection.\n *\n * @eventName ~Collection#remove\n * @param item The removed item.\n * @param index Index from which item was removed.\n */\nexport type CollectionRemoveEvent<T = any> = {\n\tname: 'remove';\n\targs: [ item: T, index: number ];\n};\n\n/**\n * An object returned by the {@link module:utils/collection~Collection#bindTo `bindTo()`} method\n * providing functions that specify the type of the binding.\n *\n * See the {@link module:utils/collection~Collection#bindTo `bindTo()`} documentation for examples.\n */\nexport interface CollectionBindToChain<S, T> {\n\n\t/**\n\t * Creates the class factory binding in which items of the source collection are passed to\n\t * the constructor of the specified class.\n\t *\n\t * @param Class The class constructor used to create instances in the factory.\n\t */\n\tas( Class: new ( item: S ) => T ): void;\n\n\t/**\n\t * Creates a callback or a property binding.\n\t *\n\t * @param callbackOrProperty When the function is passed, it should return\n\t * the collection items. When the string is provided, the property value is used to create the bound collection items.\n\t */\n\tusing( callbackOrProperty: keyof S | ( ( item: S ) => T | null ) ): void;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/first\n */\n\n/**\n * Returns first item of the given `iterator`.\n */\nexport default function first<T>( iterator: Iterator<T> ): T | null {\n\tconst iteratorItem = iterator.next();\n\n\tif ( iteratorItem.done ) {\n\t\treturn null;\n\t}\n\n\treturn iteratorItem.value;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* global setTimeout, clearTimeout */\n\n/**\n * @module utils/focustracker\n */\n\nimport DomEmitterMixin from './dom/emittermixin';\nimport ObservableMixin from './observablemixin';\nimport CKEditorError from './ckeditorerror';\n\n/**\n * Allows observing a group of `Element`s whether at least one of them is focused.\n *\n * Used by the {@link module:core/editor/editor~Editor} in order to track whether the focus is still within the application,\n * or were used outside of its UI.\n *\n * **Note** `focus` and `blur` listeners use event capturing, so it is only needed to register wrapper `Element`\n * which contain other `focusable` elements. But note that this wrapper element has to be focusable too\n * (have e.g. `tabindex=\"-1\"`).\n *\n * Check out the {@glink framework/deep-dive/ui/focus-tracking \"Deep dive into focus tracking\"} guide to learn more.\n */\nexport default class FocusTracker extends DomEmitterMixin( ObservableMixin() ) {\n\t/**\n\t * True when one of the registered elements is focused.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public isFocused: boolean;\n\n\t/**\n\t * The currently focused element.\n\t *\n\t * While {@link #isFocused `isFocused`} remains `true`, the focus can\n\t * move between different UI elements. This property tracks those\n\t * elements and tells which one is currently focused.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public focusedElement: Element | null;\n\n\t/**\n\t * List of registered elements.\n\t *\n\t * @internal\n\t */\n\tpublic _elements: Set<Element> = new Set();\n\n\t/**\n\t * Event loop timeout.\n\t */\n\tprivate _nextEventLoopTimeout: ReturnType<typeof setTimeout> | null = null;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.set( 'isFocused', false );\n\t\tthis.set( 'focusedElement', null );\n\t}\n\n\t/**\n\t * Starts tracking the specified element.\n\t */\n\tpublic add( element: Element ): void {\n\t\tif ( this._elements.has( element ) ) {\n\t\t\t/**\n\t\t\t * This element is already tracked by {@link module:utils/focustracker~FocusTracker}.\n\t\t\t *\n\t\t\t * @error focustracker-add-element-already-exist\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'focustracker-add-element-already-exist', this );\n\t\t}\n\n\t\tthis.listenTo( element, 'focus', () => this._focus( element ), { useCapture: true } );\n\t\tthis.listenTo( element, 'blur', () => this._blur(), { useCapture: true } );\n\t\tthis._elements.add( element );\n\t}\n\n\t/**\n\t * Stops tracking the specified element and stops listening on this element.\n\t */\n\tpublic remove( element: Element ): void {\n\t\tif ( element === this.focusedElement ) {\n\t\t\tthis._blur();\n\t\t}\n\n\t\tif ( this._elements.has( element ) ) {\n\t\t\tthis.stopListening( element );\n\t\t\tthis._elements.delete( element );\n\t\t}\n\t}\n\n\t/**\n\t * Destroys the focus tracker by:\n\t * - Disabling all event listeners attached to tracked elements.\n\t * - Removing all tracked elements that were previously added.\n\t */\n\tpublic destroy(): void {\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * Stores currently focused element and set {@link #isFocused} as `true`.\n\t */\n\tprivate _focus( element: Element ): void {\n\t\tclearTimeout( this._nextEventLoopTimeout! );\n\n\t\tthis.focusedElement = element;\n\t\tthis.isFocused = true;\n\t}\n\n\t/**\n\t * Clears currently focused element and set {@link #isFocused} as `false`.\n\t * This method uses `setTimeout` to change order of fires `blur` and `focus` events.\n\t */\n\tprivate _blur(): void {\n\t\tclearTimeout( this._nextEventLoopTimeout! );\n\n\t\tthis._nextEventLoopTimeout = setTimeout( () => {\n\t\t\tthis.focusedElement = null;\n\t\t\tthis.isFocused = false;\n\t\t}, 0 );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/keystrokehandler\n */\n\nimport DomEmitterMixin, { type DomEmitter } from './dom/emittermixin';\nimport type { Emitter } from './emittermixin';\nimport { getCode, parseKeystroke, type KeystrokeInfo } from './keyboard';\nimport type { PriorityString } from './priorities';\n\n/**\n * Keystroke handler allows registering callbacks for given keystrokes.\n *\n * The most frequent use of this class is through the {@link module:core/editor/editor~Editor#keystrokes `editor.keystrokes`}\n * property. It allows listening to keystrokes executed in the editing view:\n *\n * ```ts\n * editor.keystrokes.set( 'Ctrl+A', ( keyEvtData, cancel ) => {\n * \tconsole.log( 'Ctrl+A has been pressed' );\n * \tcancel();\n * } );\n * ```\n *\n * However, this utility class can be used in various part of the UI. For instance, a certain {@link module:ui/view~View}\n * can use it like this:\n *\n * ```ts\n * class MyView extends View {\n * \tconstructor() {\n * \t\tthis.keystrokes = new KeystrokeHandler();\n *\n * \t\tthis.keystrokes.set( 'tab', handleTabKey );\n * \t}\n *\n * \trender() {\n * \t\tsuper.render();\n *\n * \t\tthis.keystrokes.listenTo( this.element );\n * \t}\n * }\n * ```\n *\n * That keystroke handler will listen to `keydown` events fired in this view's main element.\n *\n */\nexport default class KeystrokeHandler {\n\t/**\n\t * Listener used to listen to events for easier keystroke handler destruction.\n\t */\n\tprivate readonly _listener: DomEmitter;\n\n\t/**\n\t * Creates an instance of the keystroke handler.\n\t */\n\tconstructor() {\n\t\tthis._listener = new ( DomEmitterMixin() )();\n\t}\n\n\t/**\n\t * Starts listening for `keydown` events from a given emitter.\n\t */\n\tpublic listenTo( emitter: Emitter | HTMLElement | Window ): void {\n\t\t// The #_listener works here as a kind of dispatcher. It groups the events coming from the same\n\t\t// keystroke so the listeners can be attached to them with different priorities.\n\t\t//\n\t\t// E.g. all the keystrokes with the `keyCode` of 42 coming from the `emitter` are propagated\n\t\t// as a `_keydown:42` event by the `_listener`. If there's a callback created by the `set`\n\t\t// method for this 42 keystroke, it listens to the `_listener#_keydown:42` event only and interacts\n\t\t// only with other listeners of this particular event, thus making it possible to prioritize\n\t\t// the listeners and safely cancel execution, when needed. Instead of duplicating the Emitter logic,\n\t\t// the KeystrokeHandler re–uses it to do its job.\n\t\tthis._listener.listenTo( emitter as HTMLElement | Window, 'keydown', ( evt, keyEvtData ) => {\n\t\t\tthis._listener.fire( '_keydown:' + getCode( keyEvtData ), keyEvtData );\n\t\t} );\n\t}\n\n\t/**\n\t * Registers a handler for the specified keystroke.\n\t *\n\t * @param keystroke Keystroke defined in a format accepted by\n\t * the {@link module:utils/keyboard~parseKeystroke} function.\n\t * @param callback A function called with the\n\t * {@link module:engine/view/observer/keyobserver~KeyEventData key event data} object and\n\t * a helper function to call both `preventDefault()` and `stopPropagation()` on the underlying event.\n\t * @param options Additional options.\n\t * @param options.priority The priority of the keystroke\n\t * callback. The higher the priority value the sooner the callback will be executed. Keystrokes having the same priority\n\t * are called in the order they were added.\n\t */\n\tpublic set(\n\t\tkeystroke: string | ReadonlyArray<string | number>,\n\t\tcallback: ( ev: KeyboardEvent, cancel: () => void ) => void,\n\t\toptions: { readonly priority?: PriorityString } = {}\n\t): void {\n\t\tconst keyCode = parseKeystroke( keystroke );\n\t\tconst priority = options.priority;\n\n\t\t// Execute the passed callback on KeystrokeHandler#_keydown.\n\t\t// TODO: https://github.com/ckeditor/ckeditor5-utils/issues/144\n\t\tthis._listener.listenTo( this._listener, '_keydown:' + keyCode, ( evt, keyEvtData: KeyboardEvent ) => {\n\t\t\tcallback( keyEvtData, () => {\n\t\t\t\t// Stop the event in the DOM: no listener in the web page\n\t\t\t\t// will be triggered by this event.\n\t\t\t\tkeyEvtData.preventDefault();\n\t\t\t\tkeyEvtData.stopPropagation();\n\n\t\t\t\t// Stop the event in the KeystrokeHandler: no more callbacks\n\t\t\t\t// will be executed for this keystroke.\n\t\t\t\tevt.stop();\n\t\t\t} );\n\n\t\t\t// Mark this keystroke as handled by the callback. See: #press.\n\t\t\tevt.return = true;\n\t\t}, { priority } );\n\t}\n\n\t/**\n\t * Triggers a keystroke handler for a specified key combination, if such a keystroke was {@link #set defined}.\n\t *\n\t * @param keyEvtData Key event data.\n\t * @returns Whether the keystroke was handled.\n\t */\n\tpublic press( keyEvtData: Readonly<KeystrokeInfo> ): boolean {\n\t\treturn !!this._listener.fire( '_keydown:' + getCode( keyEvtData ), keyEvtData );\n\t}\n\n\t/**\n\t * Stops listening to `keydown` events from the given emitter.\n\t */\n\tpublic stopListening( emitter?: Emitter | HTMLElement | Window ): void {\n\t\tthis._listener.stopListening( emitter );\n\t}\n\n\t/**\n\t * Destroys the keystroke handler.\n\t */\n\tpublic destroy(): void {\n\t\tthis.stopListening();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/tomap\n */\n\nimport objectToMap from './objecttomap';\nimport isIterable from './isiterable';\n\n/**\n * Transforms object or iterable to map. Iterable needs to be in the format acceptable by the `Map` constructor.\n *\n * ```ts\n * map = toMap( { 'foo': 1, 'bar': 2 } );\n * map = toMap( [ [ 'foo', 1 ], [ 'bar', 2 ] ] );\n * map = toMap( anotherMap );\n * ```\n *\n * @param data Object or iterable to transform.\n * @returns Map created from data.\n */\nexport default function toMap<T>( data: { readonly [ key: string ]: T } | Iterable<readonly [ string, T ]> | null | undefined ):\n\tMap<string, T>\n{\n\tif ( isIterable( data ) ) {\n\t\treturn new Map( data );\n\t} else {\n\t\treturn objectToMap( data );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/objecttomap\n */\n\n/**\n * Transforms object to map.\n *\n * ```ts\n * const map = objectToMap( { 'foo': 1, 'bar': 2 } );\n * map.get( 'foo' ); // 1\n * ```\n *\n * **Note**: For mixed data (`Object` or `Iterable`) there's a dedicated {@link module:utils/tomap~toMap} function.\n *\n * @param obj Object to transform.\n * @returns Map created from object.\n */\nexport default function objectToMap<T>( obj: { readonly [ key: string ]: T } | null | undefined ): Map<string, T> {\n\tconst map = new Map<string, T>();\n\n\tfor ( const key in obj ) {\n\t\tmap.set( key, obj[ key ] );\n\t}\n\n\treturn map;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/delay\n */\n\n/* globals setTimeout, clearTimeout */\n\n/**\n * Returns a function wrapper that will trigger a function after a specified wait time.\n * The timeout can be canceled by calling the cancel function on the returned wrapped function.\n *\n * @param func The function to wrap.\n * @param wait The timeout in ms.\n */\nexport default function delay<T extends ( ...args: Array<any> ) => any>( func: T, wait: number ): DelayedFunc<T> {\n\tlet timer: ReturnType<typeof setTimeout>;\n\n\tfunction delayed( ...args: Parameters<T> ) {\n\t\tdelayed.cancel();\n\t\ttimer = setTimeout( () => func( ...args ), wait );\n\t}\n\n\tdelayed.cancel = () => {\n\t\tclearTimeout( timer );\n\t};\n\n\treturn delayed;\n}\n\nexport interface DelayedFunc<T extends ( ...args: Array<any> ) => any> {\n\t( ...args: Parameters<T> ): void;\n\tcancel(): void;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Set of utils to handle unicode characters.\n *\n * @module utils/unicode\n */\n\n/**\n * Checks whether given `character` is a combining mark.\n *\n * @param character Character to check.\n */\nexport function isCombiningMark( character: string ): boolean {\n\t// eslint-disable-next-line no-misleading-character-class\n\treturn !!character && character.length == 1 && /[\\u0300-\\u036f\\u1ab0-\\u1aff\\u1dc0-\\u1dff\\u20d0-\\u20ff\\ufe20-\\ufe2f]/.test( character );\n}\n\n/**\n * Checks whether given `character` is a high half of surrogate pair.\n *\n * Using UTF-16 terminology, a surrogate pair denotes UTF-16 character using two UTF-8 characters. The surrogate pair\n * consist of high surrogate pair character followed by low surrogate pair character.\n *\n * @param character Character to check.\n */\nexport function isHighSurrogateHalf( character: string ): boolean {\n\treturn !!character && character.length == 1 && /[\\ud800-\\udbff]/.test( character );\n}\n\n/**\n * Checks whether given `character` is a low half of surrogate pair.\n *\n * Using UTF-16 terminology, a surrogate pair denotes UTF-16 character using two UTF-8 characters. The surrogate pair\n * consist of high surrogate pair character followed by low surrogate pair character.\n *\n * @param character Character to check.\n */\nexport function isLowSurrogateHalf( character: string ): boolean {\n\treturn !!character && character.length == 1 && /[\\udc00-\\udfff]/.test( character );\n}\n\n/**\n * Checks whether given offset in a string is inside a surrogate pair (between two surrogate halves).\n *\n * @param string String to check.\n * @param offset Offset to check.\n */\nexport function isInsideSurrogatePair( string: string, offset: number ): boolean {\n\treturn isHighSurrogateHalf( string.charAt( offset - 1 ) ) && isLowSurrogateHalf( string.charAt( offset ) );\n}\n\n/**\n * Checks whether given offset in a string is between base character and combining mark or between two combining marks.\n *\n * @param string String to check.\n * @param offset Offset to check.\n */\nexport function isInsideCombinedSymbol( string: string, offset: number ): boolean {\n\treturn isCombiningMark( string.charAt( offset ) );\n}\n\nconst EMOJI_PATTERN = buildEmojiRegexp();\n\n/**\n * Checks whether given offset in a string is inside multi-character emoji sequence.\n *\n * @param string String to check.\n * @param offset Offset to check.\n */\nexport function isInsideEmojiSequence( string: string, offset: number ): boolean {\n\tconst matches = String( string ).matchAll( EMOJI_PATTERN );\n\n\treturn Array.from( matches ).some( match => match.index! < offset && offset < match.index! + match[ 0 ].length );\n}\n\nfunction buildEmojiRegexp(): RegExp {\n\tconst parts = [\n\t\t// Emoji Tag Sequence (ETS)\n\t\t/\\p{Emoji}[\\u{E0020}-\\u{E007E}]+\\u{E007F}/u,\n\n\t\t// Emoji Keycap Sequence\n\t\t/\\p{Emoji}\\u{FE0F}?\\u{20E3}/u,\n\n\t\t// Emoji Presentation Sequence\n\t\t/\\p{Emoji}\\u{FE0F}/u,\n\n\t\t// Single-Character Emoji / Emoji Modifier Sequence\n\t\t/(?=\\p{General_Category=Other_Symbol})\\p{Emoji}\\p{Emoji_Modifier}*/u\n\t];\n\n\tconst flagSequence = /\\p{Regional_Indicator}{2}/u.source;\n\tconst emoji = '(?:' + parts.map( part => part.source ).join( '|' ) + ')';\n\tconst sequence = `${ flagSequence }|${ emoji }(?:\\u{200D}${ emoji })*`;\n\n\treturn new RegExp( sequence, 'ug' );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/viewcollection\n */\n\nimport {\n\tCKEditorError,\n\tCollection,\n\ttype CollectionAddEvent,\n\ttype CollectionRemoveEvent,\n\ttype EmitterMixinDelegateChain\n} from '@ckeditor/ckeditor5-utils';\n\nimport type View from './view';\n\n/**\n * Collects {@link module:ui/view~View} instances.\n *\n * ```ts\n * const parentView = new ParentView( locale );\n * const collection = new ViewCollection( locale );\n *\n * collection.setParent( parentView.element );\n *\n * const viewA = new ChildView( locale );\n * const viewB = new ChildView( locale );\n * ```\n *\n * View collection renders and manages view {@link module:ui/view~View#element elements}:\n *\n * ```ts\n * collection.add( viewA );\n * collection.add( viewB );\n *\n * console.log( parentView.element.firsChild ); // -> viewA.element\n * console.log( parentView.element.lastChild ); // -> viewB.element\n * ```\n *\n * It {@link module:ui/viewcollection~ViewCollection#delegate propagates} DOM events too:\n *\n * ```ts\n * // Delegate #click and #keydown events from viewA and viewB to the parentView.\n * collection.delegate( 'click' ).to( parentView );\n *\n * parentView.on( 'click', ( evt ) => {\n * \tconsole.log( `${ evt.source } has been clicked.` );\n * } );\n *\n * // This event will be delegated to the parentView.\n * viewB.fire( 'click' );\n * ```\n *\n * **Note**: A view collection can be used directly in the {@link module:ui/template~TemplateDefinition definition}\n * of a {@link module:ui/template~Template template}.\n */\nexport default class ViewCollection<TView extends View = View> extends Collection<TView> {\n\tpublic id?: string;\n\n\t/**\n\t * A parent element within which child views are rendered and managed in DOM.\n\t */\n\tprivate _parentElement: DocumentFragment | HTMLElement | null;\n\n\t/**\n\t * Creates a new instance of the {@link module:ui/viewcollection~ViewCollection}.\n\t *\n\t * @param initialItems The initial items of the collection.\n\t */\n\tconstructor( initialItems: Iterable<TView> = [] ) {\n\t\tsuper( initialItems, {\n\t\t\t// An #id Number attribute should be legal and not break the `ViewCollection` instance.\n\t\t\t// https://github.com/ckeditor/ckeditor5-ui/issues/93\n\t\t\tidProperty: 'viewUid'\n\t\t} );\n\n\t\t// Handle {@link module:ui/view~View#element} in DOM when a new view is added to the collection.\n\t\tthis.on<CollectionAddEvent<TView>>( 'add', ( evt, view, index ) => {\n\t\t\tthis._renderViewIntoCollectionParent( view, index );\n\t\t} );\n\n\t\t// Handle {@link module:ui/view~View#element} in DOM when a view is removed from the collection.\n\t\tthis.on<CollectionRemoveEvent<TView>>( 'remove', ( evt, view ) => {\n\t\t\tif ( view.element && this._parentElement ) {\n\t\t\t\tview.element.remove();\n\t\t\t}\n\t\t} );\n\n\t\tthis._parentElement = null;\n\t}\n\n\t/**\n\t * Destroys the view collection along with child views.\n\t * See the view {@link module:ui/view~View#destroy} method.\n\t */\n\tpublic destroy(): void {\n\t\tthis.map( view => view.destroy() );\n\t}\n\n\t/**\n\t * Sets the parent HTML element of this collection. When parent is set, {@link #add adding} and\n\t * {@link #remove removing} views in the collection synchronizes their\n\t * {@link module:ui/view~View#element elements} in the parent element.\n\t *\n\t * @param element A new parent element.\n\t */\n\tpublic setParent( elementOrDocFragment: DocumentFragment | HTMLElement ): void {\n\t\tthis._parentElement = elementOrDocFragment;\n\n\t\t// Take care of the initial collection items passed to the constructor.\n\t\tfor ( const view of this ) {\n\t\t\tthis._renderViewIntoCollectionParent( view );\n\t\t}\n\t}\n\n\t/**\n\t * Delegates selected events coming from within views in the collection to any\n\t * {@link module:utils/emittermixin~Emitter}.\n\t *\n\t * For the following views and collection:\n\t *\n\t * ```ts\n\t * const viewA = new View();\n\t * const viewB = new View();\n\t * const viewC = new View();\n\t *\n\t * const views = parentView.createCollection();\n\t *\n\t * views.delegate( 'eventX' ).to( viewB );\n\t * views.delegate( 'eventX', 'eventY' ).to( viewC );\n\t *\n\t * views.add( viewA );\n\t * ```\n\t *\n\t * the `eventX` is delegated (fired by) `viewB` and `viewC` along with `customData`:\n\t *\n\t * ```ts\n\t * viewA.fire( 'eventX', customData );\n\t * ```\n\t *\n\t * and `eventY` is delegated (fired by) `viewC` along with `customData`:\n\t *\n\t * ```ts\n\t * viewA.fire( 'eventY', customData );\n\t * ```\n\t *\n\t * See {@link module:utils/emittermixin~Emitter#delegate}.\n\t *\n\t * @param events {@link module:ui/view~View} event names to be delegated to another\n\t * {@link module:utils/emittermixin~Emitter}.\n\t * @returns Object with `to` property, a function which accepts the destination\n\t * of {@link module:utils/emittermixin~Emitter#delegate delegated} events.\n\t */\n\tpublic override delegate( ...events: Array<string> ): EmitterMixinDelegateChain {\n\t\tif ( !events.length || !isStringArray( events ) ) {\n\t\t\t/**\n\t\t\t * All event names must be strings.\n\t\t\t *\n\t\t\t * @error ui-viewcollection-delegate-wrong-events\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'ui-viewcollection-delegate-wrong-events',\n\t\t\t\tthis\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\tto: dest => {\n\t\t\t\t// Activate delegating on existing views in this collection.\n\t\t\t\tfor ( const view of this ) {\n\t\t\t\t\tfor ( const evtName of events ) {\n\t\t\t\t\t\tview.delegate( evtName ).to( dest );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Activate delegating on future views in this collection.\n\t\t\t\tthis.on<CollectionAddEvent<View>>( 'add', ( evt, view ) => {\n\t\t\t\t\tfor ( const evtName of events ) {\n\t\t\t\t\t\tview.delegate( evtName ).to( dest );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\t// Deactivate delegating when view is removed from this collection.\n\t\t\t\tthis.on<CollectionRemoveEvent<View>>( 'remove', ( evt, view ) => {\n\t\t\t\t\tfor ( const evtName of events ) {\n\t\t\t\t\t\tview.stopDelegating( evtName, dest );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * This method {@link module:ui/view~View#render renders} a new view added to the collection.\n\t *\n\t * If the {@link #_parentElement parent element} of the collection is set, this method also adds\n\t * the view's {@link module:ui/view~View#element} as a child of the parent in DOM at a specified index.\n\t *\n\t * **Note**: If index is not specified, the view's element is pushed as the last child\n\t * of the parent element.\n\t *\n\t * @param view A new view added to the collection.\n\t * @param index An index the view holds in the collection. When not specified,\n\t * the view is added at the end.\n\t */\n\tprivate _renderViewIntoCollectionParent( view: View, index?: number ): void {\n\t\tif ( !view.isRendered ) {\n\t\t\tview.render();\n\t\t}\n\n\t\tif ( view.element && this._parentElement ) {\n\t\t\tthis._parentElement.insertBefore( view.element, this._parentElement.children[ index! ] );\n\t\t}\n\t}\n\n\t/**\n\t * Removes a child view from the collection. If the {@link #setParent parent element} of the\n\t * collection has been set, the {@link module:ui/view~View#element element} of the view is also removed\n\t * in DOM, reflecting the order of the collection.\n\t *\n\t * See the {@link #add} method.\n\t *\n\t * @param subject The view to remove, its id or index in the collection.\n\t * @returns The removed view.\n\t */\n\tpublic override remove( subject: TView | number | string ): TView {\n\t\treturn super.remove( subject );\n\t}\n}\n\n/**\n * Check if all entries of the array are of `String` type.\n *\n * @param arr An array to be checked.\n */\nfunction isStringArray( arr: Array<unknown> ): arr is Array<string> {\n\treturn arr.every( a => typeof a == 'string' );\n}\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./globals.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* eslint-disable @typescript-eslint/no-invalid-void-type */\n\n/**\n * @module ui/view\n */\n\nimport ViewCollection from './viewcollection';\nimport Template, { type BindChain, type TemplateDefinition } from './template';\n\nimport {\n\tCKEditorError,\n\tCollection,\n\tDomEmitterMixin,\n\tObservableMixin,\n\tisIterable,\n\ttype CollectionAddEvent,\n\ttype DecoratedMethodEvent,\n\ttype Locale,\n\ttype LocaleTranslate\n} from '@ckeditor/ckeditor5-utils';\n\nimport '../theme/globals/globals.css';\n\n/**\n * The basic view class, which represents an HTML element created out of a\n * {@link module:ui/view~View#template}. Views are building blocks of the user interface and handle\n * interaction\n *\n * Views {@link module:ui/view~View#registerChild aggregate} children in\n * {@link module:ui/view~View#createCollection collections} and manage the life cycle of DOM\n * listeners e.g. by handling rendering and destruction.\n *\n * See the {@link module:ui/template~TemplateDefinition} syntax to learn more about shaping view\n * elements, attributes and listeners.\n *\n * ```ts\n * class SampleView extends View {\n * \tconstructor( locale ) {\n * \t\tsuper( locale );\n *\n * \t\tconst bind = this.bindTemplate;\n *\n * \t\t// Views define their interface (state) using observable attributes.\n * \t\tthis.set( 'elementClass', 'bar' );\n *\n * \t\tthis.setTemplate( {\n * \t\t\ttag: 'p',\n *\n * \t\t\t// The element of the view can be defined with its children.\n * \t\t\tchildren: [\n * \t\t\t\t'Hello',\n * \t\t\t\t{\n * \t\t\t\t\ttag: 'b',\n * \t\t\t\t\tchildren: [ 'world!' ]\n * \t\t\t\t}\n * \t\t\t],\n * \t\t\tattributes: {\n * \t\t\t\tclass: [\n * \t\t\t\t\t'foo',\n *\n * \t\t\t\t\t// Observable attributes control the state of the view in DOM.\n * \t\t\t\t\tbind.to( 'elementClass' )\n * \t\t\t\t]\n * \t\t\t},\n * \t\t\ton: {\n * \t\t\t\t// Views listen to DOM events and propagate them.\n * \t\t\t\tclick: bind.to( 'clicked' )\n * \t\t\t}\n * \t\t} );\n * \t}\n * }\n *\n * const view = new SampleView( locale );\n *\n * view.render();\n *\n * // Append <p class=\"foo bar\">Hello<b>world</b></p> to the <body>\n * document.body.appendChild( view.element );\n *\n * // Change the class attribute to <p class=\"foo baz\">Hello<b>world</b></p>\n * view.elementClass = 'baz';\n *\n * // Respond to the \"click\" event in DOM by executing a custom action.\n * view.on( 'clicked', () => {\n * \tconsole.log( 'The view has been clicked!' );\n * } );\n * ```\n */\nexport default class View<TElement extends HTMLElement = HTMLElement> extends DomEmitterMixin( ObservableMixin() ) {\n\t/**\n\t * An HTML element of the view. `null` until {@link #render rendered}\n\t * from the {@link #template}.\n\t *\n\t * ```ts\n\t * class SampleView extends View {\n\t * \tconstructor() {\n\t * \t\tsuper();\n\t *\n\t * \t\t// A template instance the #element will be created from.\n\t * \t\tthis.setTemplate( {\n\t * \t\t\ttag: 'p'\n\t *\n\t * \t\t\t// ...\n\t * \t\t} );\n\t * \t}\n\t * }\n\t *\n\t * const view = new SampleView();\n\t *\n\t * // Renders the #template.\n\t * view.render();\n\t *\n\t * // Append the HTML element of the view to <body>.\n\t * document.body.appendChild( view.element );\n\t * ```\n\t *\n\t * **Note**: The element of the view can also be assigned directly:\n\t *\n\t * ```ts\n\t * view.element = document.querySelector( '#my-container' );\n\t * ```\n\t */\n\tpublic element: TElement | null;\n\n\t/**\n\t * Set `true` when the view has already been {@link module:ui/view~View#render rendered}.\n\t *\n\t * @readonly\n\t */\n\tpublic isRendered: boolean;\n\n\t/**\n\t * A set of tools to localize the user interface.\n\t *\n\t * Also see {@link module:core/editor/editor~Editor#locale}.\n\t *\n\t * @readonly\n\t */\n\tpublic locale: Locale | undefined;\n\n\t/**\n\t * Shorthand for {@link module:utils/locale~Locale#t}.\n\t *\n\t * Note: If {@link #locale} instance hasn't been passed to the view this method may not\n\t * be available.\n\t *\n\t * @see module:utils/locale~Locale#t\n\t */\n\tpublic t: LocaleTranslate | undefined;\n\n\t/**\n\t * Template of this view. It provides the {@link #element} representing\n\t * the view in DOM, which is {@link #render rendered}.\n\t */\n\tpublic template?: Template;\n\n\tpublic viewUid?: string;\n\n\t/**\n\t * Collections registered with {@link #createCollection}.\n\t */\n\tprotected _viewCollections: Collection<ViewCollection>;\n\n\t/**\n\t * A collection of view instances, which have been added directly\n\t * into the {@link module:ui/template~Template#children}.\n\t */\n\tprotected _unboundChildren: ViewCollection;\n\n\t/**\n\t * Cached {@link module:ui/template~BindChain bind chain} object created by the\n\t * {@link #template}. See {@link #bindTemplate}.\n\t */\n\tprivate _bindTemplate?: BindChain<this>;\n\n\t/**\n\t * Creates an instance of the {@link module:ui/view~View} class.\n\t *\n\t * Also see {@link #render}.\n\t *\n\t * @param locale The localization services instance.\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper();\n\n\t\tthis.element = null;\n\t\tthis.isRendered = false;\n\n\t\tthis.locale = locale;\n\t\tthis.t = locale && locale.t;\n\n\t\tthis._viewCollections = new Collection();\n\t\tthis._unboundChildren = this.createCollection();\n\n\t\t// Pass parent locale to its children.\n\t\tthis._viewCollections.on<CollectionAddEvent<View>>( 'add', ( evt, collection ) => {\n\t\t\tcollection.locale = locale;\n\t\t\tcollection.t = locale && locale.t;\n\t\t} );\n\n\t\tthis.decorate( 'render' );\n\t}\n\n\t/**\n\t * Shorthand for {@link module:ui/template~Template.bind}, a binding\n\t * {@link module:ui/template~BindChain interface} pre–configured for the view instance.\n\t *\n\t * It provides {@link module:ui/template~BindChain#to `to()`} and\n\t * {@link module:ui/template~BindChain#if `if()`} methods that initialize bindings with\n\t * observable attributes and attach DOM listeners.\n\t *\n\t * ```ts\n\t * class SampleView extends View {\n\t * \tconstructor( locale ) {\n\t * \t\tsuper( locale );\n\t *\n\t * \t\tconst bind = this.bindTemplate;\n\t *\n\t * \t\t// These {@link module:utils/observablemixin~Observable observable} attributes will control\n\t * \t\t// the state of the view in DOM.\n\t * \t\tthis.set( {\n\t * \t\t\telementClass: 'foo',\n\t * \t\t \tisEnabled: true\n\t * \t\t } );\n\t *\n\t * \t\tthis.setTemplate( {\n\t * \t\t\ttag: 'p',\n\t *\n\t * \t\t\tattributes: {\n\t * \t\t\t\t// The class HTML attribute will follow elementClass\n\t * \t\t\t\t// and isEnabled view attributes.\n\t * \t\t\t\tclass: [\n\t * \t\t\t\t\tbind.to( 'elementClass' )\n\t * \t\t\t\t\tbind.if( 'isEnabled', 'present-when-enabled' )\n\t * \t\t\t\t]\n\t * \t\t\t},\n\t *\n\t * \t\t\ton: {\n\t * \t\t\t\t// The view will fire the \"clicked\" event upon clicking <p> in DOM.\n\t * \t\t\t\tclick: bind.to( 'clicked' )\n\t * \t\t\t}\n\t * \t\t} );\n\t * \t}\n\t * }\n\t * ```\n\t */\n\tpublic get bindTemplate(): BindChain<this> {\n\t\tif ( this._bindTemplate ) {\n\t\t\treturn this._bindTemplate;\n\t\t}\n\n\t\treturn ( this._bindTemplate = Template.bind( this, this ) );\n\t}\n\n\t/**\n\t * Creates a new collection of views, which can be used as\n\t * {@link module:ui/template~Template#children} of this view.\n\t *\n\t * ```ts\n\t * class SampleView extends View {\n\t * \tconstructor( locale ) {\n\t * \t\tsuper( locale );\n\t *\n\t * \t\tconst child = new ChildView( locale );\n\t * \t\tthis.items = this.createCollection( [ child ] );\n \t *\n\t * \t\tthis.setTemplate( {\n\t * \t\t\ttag: 'p',\n\t *\n\t * \t\t\t// `items` collection will render here.\n\t * \t\t\tchildren: this.items\n\t * \t\t} );\n\t * \t}\n\t * }\n\t *\n\t * const view = new SampleView( locale );\n\t * view.render();\n\t *\n\t * // It will append <p><child#element></p> to the <body>.\n\t * document.body.appendChild( view.element );\n\t * ```\n\t *\n\t * @param views Initial views of the collection.\n\t * @returns A new collection of view instances.\n\t */\n\tpublic createCollection<T extends View = View>( views?: Iterable<T> ): ViewCollection<T> {\n\t\tconst collection = new ViewCollection<T>( views );\n\n\t\tthis._viewCollections.add( collection );\n\n\t\treturn collection;\n\t}\n\n\t/**\n\t * Registers a new child view under the view instance. Once registered, a child\n\t * view is managed by its parent, including {@link #render rendering}\n\t * and {@link #destroy destruction}.\n\t *\n\t * To revert this, use {@link #deregisterChild}.\n\t *\n\t * ```ts\n\t * class SampleView extends View {\n\t * \tconstructor( locale ) {\n\t * \t\tsuper( locale );\n\t *\n\t * \t\tthis.childA = new SomeChildView( locale );\n\t * \t\tthis.childB = new SomeChildView( locale );\n\t *\n\t * \t\tthis.setTemplate( { tag: 'p' } );\n\t *\n\t * \t\t// Register the children.\n\t * \t\tthis.registerChild( [ this.childA, this.childB ] );\n\t * \t}\n\t *\n\t * \trender() {\n\t * \t\tsuper.render();\n\t *\n\t * \t\tthis.element.appendChild( this.childA.element );\n\t * \t\tthis.element.appendChild( this.childB.element );\n\t * \t}\n\t * }\n\t *\n\t * const view = new SampleView( locale );\n\t *\n\t * view.render();\n\t *\n\t * // Will append <p><childA#element><b></b><childB#element></p>.\n\t * document.body.appendChild( view.element );\n\t * ```\n\t *\n\t * **Note**: There's no need to add child views if they're already referenced in the\n\t * {@link #template}:\n\t *\n\t * ```ts\n\t * class SampleView extends View {\n\t * \tconstructor( locale ) {\n\t * \t\tsuper( locale );\n\t *\n\t * \t\tthis.childA = new SomeChildView( locale );\n\t * \t\tthis.childB = new SomeChildView( locale );\n\t *\n\t * \t\tthis.setTemplate( {\n\t * \t\t\ttag: 'p',\n\t *\n \t * \t\t\t// These children will be added automatically. There's no\n \t * \t\t\t// need to call {@link #registerChild} for any of them.\n\t * \t\t\tchildren: [ this.childA, this.childB ]\n\t * \t\t} );\n\t * \t}\n\t *\n\t * \t// ...\n\t * }\n\t * ```\n\t *\n\t * @param children Children views to be registered.\n\t */\n\tpublic registerChild( children: View | Iterable<View> ): void {\n\t\tif ( !isIterable( children ) ) {\n\t\t\tchildren = [ children ];\n\t\t}\n\n\t\tfor ( const child of children ) {\n\t\t\tthis._unboundChildren.add( child );\n\t\t}\n\t}\n\n\t/**\n\t * The opposite of {@link #registerChild}. Removes a child view from this view instance.\n\t * Once removed, the child is no longer managed by its parent, e.g. it can safely\n\t * become a child of another parent view.\n\t *\n\t * @see #registerChild\n\t * @param children Child views to be removed.\n\t */\n\tpublic deregisterChild( children: View | Iterable<View> ): void {\n\t\tif ( !isIterable( children ) ) {\n\t\t\tchildren = [ children ];\n\t\t}\n\n\t\tfor ( const child of children ) {\n\t\t\tthis._unboundChildren.remove( child );\n\t\t}\n\t}\n\n\t/**\n\t * Sets the {@link #template} of the view with with given definition.\n\t *\n\t * A shorthand for:\n\t *\n\t * ```ts\n\t * view.setTemplate( definition );\n\t * ```\n\t *\n\t * @param definition Definition of view's template.\n\t */\n\tpublic setTemplate( definition: TemplateDefinition ): void {\n\t\tthis.template = new Template( definition );\n\t}\n\n\t/**\n\t * {@link module:ui/template~Template.extend Extends} the {@link #template} of the view with\n\t * with given definition.\n\t *\n\t * A shorthand for:\n\t *\n\t * ```ts\n\t * Template.extend( view.template, definition );\n\t * ```\n\t *\n\t * **Note**: Is requires the {@link #template} to be already set. See {@link #setTemplate}.\n\t *\n\t * @param definition Definition which extends the {@link #template}.\n\t */\n\tpublic extendTemplate( definition: Partial<TemplateDefinition> ): void {\n\t\tTemplate.extend( this.template!, definition );\n\t}\n\n\t/**\n\t * Recursively renders the view.\n\t *\n\t * Once the view is rendered:\n\t * * the {@link #element} becomes an HTML element out of {@link #template},\n\t * * the {@link #isRendered} flag is set `true`.\n\t *\n\t * **Note**: The children of the view:\n\t * * defined directly in the {@link #template}\n\t * * residing in collections created by the {@link #createCollection} method,\n\t * * and added by {@link #registerChild}\n\t * are also rendered in the process.\n\t *\n\t * In general, `render()` method is the right place to keep the code which refers to the\n\t * {@link #element} and should be executed at the very beginning of the view's life cycle.\n\t *\n\t * It is possible to {@link module:ui/template~Template.extend} the {@link #template} before\n\t * the view is rendered. To allow an early customization of the view (e.g. by its parent),\n\t * such references should be done in `render()`.\n\t *\n\t * ```ts\n\t * class SampleView extends View {\n\t * \tconstructor() {\n\t * \t\tthis.setTemplate( {\n\t * \t\t\t// ...\n\t * \t\t} );\n\t * \t},\n\t *\n\t * \trender() {\n\t * \t\t// View#element becomes available.\n\t * \t\tsuper.render();\n\t *\n\t * \t\t// The \"scroll\" listener depends on #element.\n\t * \t\tthis.listenTo( window, 'scroll', () => {\n\t * \t\t\t// A reference to #element would render the #template and make it non-extendable.\n\t * \t\t\tif ( window.scrollY > 0 ) {\n\t * \t\t\t\tthis.element.scrollLeft = 100;\n\t * \t\t\t} else {\n\t * \t\t\t\tthis.element.scrollLeft = 0;\n\t * \t\t\t}\n\t * \t\t} );\n\t * \t}\n\t * }\n\t *\n\t * const view = new SampleView();\n\t *\n\t * // Let's customize the view before it gets rendered.\n\t * view.extendTemplate( {\n\t * \tattributes: {\n\t * \t\tclass: [\n\t * \t\t\t'additional-class'\n\t * \t\t]\n\t * \t}\n\t * } );\n\t *\n\t * // Late rendering allows customization of the view.\n\t * view.render();\n\t * ```\n\t */\n\tpublic render(): void {\n\t\tif ( this.isRendered ) {\n\t\t\t/**\n\t\t\t * This View has already been rendered.\n\t\t\t *\n\t\t\t * @error ui-view-render-already-rendered\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'ui-view-render-already-rendered', this );\n\t\t}\n\n\t\t// Render #element of the view.\n\t\tif ( this.template ) {\n\t\t\tthis.element = this.template.render() as TElement;\n\n\t\t\t// Auto–register view children from #template.\n\t\t\tthis.registerChild( this.template.getViews() );\n\t\t}\n\n\t\tthis.isRendered = true;\n\t}\n\n\t/**\n\t * Recursively destroys the view instance and child views added by {@link #registerChild} and\n\t * residing in collections created by the {@link #createCollection}.\n\t *\n\t * Destruction disables all event listeners:\n\t * * created on the view, e.g. `view.on( 'event', () => {} )`,\n\t * * defined in the {@link #template} for DOM events.\n\t */\n\tpublic destroy(): void {\n\t\tthis.stopListening();\n\n\t\tthis._viewCollections.map( c => c.destroy() );\n\n\t\t// Template isn't obligatory for views.\n\t\tif ( this.template && ( this.template as any )._revertData ) {\n\t\t\tthis.template.revert( this.element! );\n\t\t}\n\t}\n}\n\n/**\n * Event fired by the {@link module:ui/view~View#render} method. Actual rendering is executed as a listener to\n * this event with the default priority.\n *\n * See {@link module:utils/observablemixin~Observable#decorate} for more information and samples.\n *\n * @eventName ~View#render\n */\nexport type UIViewRenderEvent = DecoratedMethodEvent<View, 'render'>;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/template\n */\n\n/* global document */\n\nimport View from './view';\nimport ViewCollection from './viewcollection';\n\nimport {\n\tCKEditorError,\n\tEmitterMixin,\n\tisNode,\n\ttoArray,\n\ttype ArrayOrItem,\n\ttype Emitter,\n\ttype Observable,\n\ttype ObservableChangeEvent\n} from '@ckeditor/ckeditor5-utils';\n\nimport { isObject, cloneDeepWith } from 'lodash-es';\n\nconst xhtmlNs = 'http://www.w3.org/1999/xhtml';\n\n/**\n * A basic Template class. It renders a DOM HTML element or text from a\n * {@link module:ui/template~TemplateDefinition definition} and supports element attributes, children,\n * bindings to {@link module:utils/observablemixin~Observable observables} and DOM event propagation.\n *\n * A simple template can look like this:\n *\n * ```ts\n * const bind = Template.bind( observable, emitter );\n *\n * new Template( {\n * \ttag: 'p',\n * \tattributes: {\n * \t\tclass: 'foo',\n * \t\tstyle: {\n * \t\t\tbackgroundColor: 'yellow'\n * \t\t}\n * \t},\n * \ton: {\n * \t\tclick: bind.to( 'clicked' )\n * \t},\n * \tchildren: [\n * \t\t'A paragraph.'\n * \t]\n * } ).render();\n * ```\n *\n * and it will render the following HTML element:\n *\n * ```html\n * <p class=\"foo\" style=\"background-color: yellow;\">A paragraph.</p>\n * ```\n *\n * Additionally, the `observable` will always fire `clicked` upon clicking `<p>` in the DOM.\n *\n * See {@link module:ui/template~TemplateDefinition} to know more about templates and complex\n * template definitions.\n */\nexport default class Template extends EmitterMixin() {\n\tpublic ns?: string;\n\n\t/**\n\t * The tag (`tagName`) of this template, e.g. `div`. It also indicates that the template\n\t * renders to an HTML element.\n\t */\n\tpublic tag?: string;\n\n\t/**\n\t * The text of the template. It also indicates that the template renders to a DOM text node.\n\t */\n\tpublic text?: Array<TemplateSimpleValue | TemplateBinding>;\n\n\t/**\n\t * The attributes of the template, e.g. `{ id: [ 'ck-id' ] }`, corresponding with\n\t * the attributes of an HTML element.\n\t *\n\t * **Note**: This property only makes sense when {@link #tag} is defined.\n\t */\n\tpublic attributes?: Record<string, AttributeValues>;\n\n\t/**\n\t * The children of the template. They can be either:\n\t * * independent instances of {@link ~Template} (sub–templates),\n\t * * native DOM Nodes.\n\t *\n\t * **Note**: This property only makes sense when {@link #tag} is defined.\n\t */\n\tpublic children?: Array<ViewCollection | View | Node | Template>;\n\n\t/**\n\t * The DOM event listeners of the template.\n\t */\n\tpublic eventListeners?: Record<string, Array<TemplateToBinding>>;\n\n\t/**\n\t * Indicates whether this particular Template instance has been\n\t * {@link #render rendered}.\n\t */\n\tprivate _isRendered: boolean;\n\n\t/**\n\t * The data used by the {@link #revert} method to restore a node to its original state.\n\t *\n\t * See: {@link #apply}.\n\t */\n\tprivate _revertData: RevertData | null;\n\n\t/**\n\t * Creates an instance of the {@link ~Template} class.\n\t *\n\t * @param def The definition of the template.\n\t */\n\tconstructor( def: TemplateDefinition ) {\n\t\tsuper();\n\n\t\tObject.assign( this, normalize( clone( def ) ) );\n\n\t\tthis._isRendered = false;\n\t\tthis._revertData = null;\n\t}\n\n\t/**\n\t * Renders a DOM Node (an HTML element or text) out of the template.\n\t *\n\t * ```ts\n\t * const domNode = new Template( { ... } ).render();\n\t * ```\n\t *\n\t * See: {@link #apply}.\n\t */\n\tpublic render(): HTMLElement | Text {\n\t\tconst node = this._renderNode( {\n\t\t\tintoFragment: true\n\t\t} as any );\n\n\t\tthis._isRendered = true;\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Applies the template to an existing DOM Node, either HTML element or text.\n\t *\n\t * **Note:** No new DOM nodes will be created. Applying extends:\n\t *\n\t * {@link module:ui/template~TemplateDefinition attributes},\n\t * {@link module:ui/template~TemplateDefinition event listeners}, and\n\t * `textContent` of {@link module:ui/template~TemplateDefinition children} only.\n\t *\n\t * **Note:** Existing `class` and `style` attributes are extended when a template\n\t * is applied to an HTML element, while other attributes and `textContent` are overridden.\n\t *\n\t * **Note:** The process of applying a template can be easily reverted using the\n\t * {@link module:ui/template~Template#revert} method.\n\t *\n\t * ```ts\n\t * const element = document.createElement( 'div' );\n\t * const observable = new Model( { divClass: 'my-div' } );\n\t * const emitter = Object.create( EmitterMixin );\n\t * const bind = Template.bind( observable, emitter );\n\t *\n\t * new Template( {\n\t * \tattributes: {\n\t * \t\tid: 'first-div',\n\t * \t\tclass: bind.to( 'divClass' )\n\t * \t},\n\t * \ton: {\n\t * \t\tclick: bind( 'elementClicked' ) // Will be fired by the observable.\n\t * \t},\n\t * \tchildren: [\n\t * \t\t'Div text.'\n\t * \t]\n\t * } ).apply( element );\n\t *\n\t * console.log( element.outerHTML ); // -> '<div id=\"first-div\" class=\"my-div\"></div>'\n\t * ```\n\t *\n\t * @see module:ui/template~Template#render\n\t * @see module:ui/template~Template#revert\n\t * @param node Root node for the template to apply.\n\t */\n\tpublic apply( node: HTMLElement | Text ): HTMLElement | Text {\n\t\tthis._revertData = getEmptyRevertData();\n\n\t\tthis._renderNode( {\n\t\t\tnode,\n\t\t\tintoFragment: false,\n\t\t\tisApplying: true,\n\t\t\trevertData: this._revertData\n\t\t} );\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Reverts a template {@link module:ui/template~Template#apply applied} to a DOM node.\n\t *\n\t * @param node The root node for the template to revert. In most of the cases, it is the\n\t * same node used by {@link module:ui/template~Template#apply}.\n\t */\n\tpublic revert( node: HTMLElement | Text ): void {\n\t\tif ( !this._revertData ) {\n\t\t\t/**\n\t\t\t * Attempting to revert a template which has not been applied yet.\n\t\t\t *\n\t\t\t * @error ui-template-revert-not-applied\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'ui-template-revert-not-applied',\n\t\t\t\t[ this, node ]\n\t\t\t);\n\t\t}\n\n\t\tthis._revertTemplateFromNode( node, this._revertData );\n\t}\n\n\t/**\n\t * Returns an iterator which traverses the template in search of {@link module:ui/view~View}\n\t * instances and returns them one by one.\n\t *\n\t * ```ts\n\t * const viewFoo = new View();\n\t * const viewBar = new View();\n\t * const viewBaz = new View();\n\t * const template = new Template( {\n\t * \ttag: 'div',\n\t * \tchildren: [\n\t * \t\tviewFoo,\n\t * \t\t{\n\t * \t\t\ttag: 'div',\n\t * \t\t\tchildren: [\n\t * \t\t\t\tviewBar\n\t * \t\t\t]\n\t * \t\t},\n\t * \t\tviewBaz\n\t * \t]\n\t * } );\n\t *\n\t * // Logs: viewFoo, viewBar, viewBaz\n\t * for ( const view of template.getViews() ) {\n\t * \tconsole.log( view );\n\t * }\n\t * ```\n\t */\n\tpublic* getViews(): IterableIterator<View> {\n\t\tfunction* search( def: Template ): Iterable<View> {\n\t\t\tif ( def.children ) {\n\t\t\t\tfor ( const child of def.children ) {\n\t\t\t\t\tif ( isView( child ) ) {\n\t\t\t\t\t\tyield child;\n\t\t\t\t\t} else if ( isTemplate( child ) ) {\n\t\t\t\t\t\tyield* search( child );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tyield* search( this );\n\t}\n\n\t/**\n\t * An entry point to the interface which binds DOM nodes to\n\t * {@link module:utils/observablemixin~Observable observables}.\n\t * There are two types of bindings:\n\t *\n\t * * HTML element attributes or text `textContent` synchronized with attributes of an\n\t * {@link module:utils/observablemixin~Observable}. Learn more about {@link module:ui/template~BindChain#to}\n\t * and {@link module:ui/template~BindChain#if}.\n\t *\n\t * ```ts\n\t * const bind = Template.bind( observable, emitter );\n\t *\n\t * new Template( {\n\t * \tattributes: {\n\t * \t\t// Binds the element \"class\" attribute to observable#classAttribute.\n\t * \t\tclass: bind.to( 'classAttribute' )\n\t * \t}\n\t * } ).render();\n\t * ```\n\t *\n\t * * DOM events fired on HTML element propagated through\n\t * {@link module:utils/observablemixin~Observable}. Learn more about {@link module:ui/template~BindChain#to}.\n\t *\n\t * ```ts\n\t * const bind = Template.bind( observable, emitter );\n\t *\n\t * new Template( {\n\t * \ton: {\n\t * \t\t// Will be fired by the observable.\n\t * \t\tclick: bind( 'elementClicked' )\n\t * \t}\n\t * } ).render();\n\t * ```\n\t *\n\t * Also see {@link module:ui/view~View#bindTemplate}.\n\t *\n\t * @param observable An observable which provides boundable attributes.\n\t * @param emitter An emitter that listens to observable attribute\n\t * changes or DOM Events (depending on the kind of the binding). Usually, a {@link module:ui/view~View} instance.\n\t */\n\tpublic static override bind<TObservable extends Observable>(\n\t\tobservable: TObservable,\n\t\temitter: Emitter\n\t): BindChain<TObservable> {\n\t\treturn {\n\t\t\tto( eventNameOrFunctionOrAttribute: any, callback?: any ) {\n\t\t\t\treturn new TemplateToBinding( {\n\t\t\t\t\teventNameOrFunction: eventNameOrFunctionOrAttribute,\n\t\t\t\t\tattribute: eventNameOrFunctionOrAttribute,\n\t\t\t\t\tobservable, emitter, callback\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\tif( attribute: string, valueIfTrue?: string, callback?: any ) {\n\t\t\t\treturn new TemplateIfBinding( {\n\t\t\t\t\tobservable, emitter, attribute, valueIfTrue, callback\n\t\t\t\t} );\n\t\t\t}\n\t\t} as any;\n\t}\n\n\t/**\n\t * Extends an existing {@link module:ui/template~Template} instance with some additional content\n\t * from another {@link module:ui/template~TemplateDefinition}.\n\t *\n\t * ```ts\n\t * const bind = Template.bind( observable, emitter );\n\t *\n\t * const template = new Template( {\n\t * \ttag: 'p',\n\t * \tattributes: {\n\t * \t\tclass: 'a',\n\t * \t\tdata-x: bind.to( 'foo' )\n\t * \t},\n\t * \tchildren: [\n\t * \t\t{\n\t * \t\t\ttag: 'span',\n\t * \t\t\tattributes: {\n\t * \t\t\t\tclass: 'b'\n\t * \t\t\t},\n\t * \t\t\tchildren: [\n\t * \t\t\t\t'Span'\n\t * \t\t\t]\n\t * \t\t}\n\t * \t]\n\t * } );\n\t *\n\t * // Instance-level extension.\n\t * Template.extend( template, {\n\t * \tattributes: {\n\t * \t\tclass: 'b',\n\t * \t\tdata-x: bind.to( 'bar' )\n\t * \t},\n\t * \tchildren: [\n\t * \t\t{\n\t * \t\t\tattributes: {\n\t * \t\t\t\tclass: 'c'\n\t * \t\t\t}\n\t * \t\t}\n\t * \t]\n\t * } );\n\t *\n\t * // Child extension.\n\t * Template.extend( template.children[ 0 ], {\n\t * \tattributes: {\n\t * \t\tclass: 'd'\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * the `outerHTML` of `template.render()` is:\n\t *\n\t * ```html\n\t * <p class=\"a b\" data-x=\"{ observable.foo } { observable.bar }\">\n\t * \t<span class=\"b c d\">Span</span>\n\t * </p>\n\t * ```\n\t *\n\t * @param template An existing template instance to be extended.\n\t * @param def Additional definition to be applied to a template.\n\t */\n\tpublic static extend( template: Template, def: Partial<TemplateDefinition> ): void {\n\t\tif ( template._isRendered ) {\n\t\t\t/**\n\t\t\t * Extending a template after rendering may not work as expected. To make sure\n\t\t\t * the {@link module:ui/template~Template.extend extending} works for an element,\n\t\t\t * make sure it happens before {@link module:ui/template~Template#render} is called.\n\t\t\t *\n\t\t\t * @error template-extend-render\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'template-extend-render',\n\t\t\t\t[ this, template ]\n\t\t\t);\n\t\t}\n\n\t\textendTemplate( template, normalize( clone( def ) ) );\n\t}\n\n\t/**\n\t * Renders a DOM Node (either an HTML element or text) out of the template.\n\t *\n\t * @param data Rendering data.\n\t */\n\tprivate _renderNode( data: RenderData ) {\n\t\tlet isInvalid;\n\n\t\tif ( data.node ) {\n\t\t\t// When applying, a definition cannot have \"tag\" and \"text\" at the same time.\n\t\t\tisInvalid = this.tag && this.text;\n\t\t} else {\n\t\t\t// When rendering, a definition must have either \"tag\" or \"text\": XOR( this.tag, this.text ).\n\t\t\tisInvalid = this.tag ? this.text : !this.text;\n\t\t}\n\n\t\tif ( isInvalid ) {\n\t\t\t/**\n\t\t\t * Node definition cannot have the \"tag\" and \"text\" properties at the same time.\n\t\t\t * Node definition must have either \"tag\" or \"text\" when rendering a new Node.\n\t\t\t *\n\t\t\t * @error ui-template-wrong-syntax\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'ui-template-wrong-syntax',\n\t\t\t\tthis\n\t\t\t);\n\t\t}\n\n\t\tif ( this.text ) {\n\t\t\treturn this._renderText( data );\n\t\t} else {\n\t\t\treturn this._renderElement( data );\n\t\t}\n\t}\n\n\t/**\n\t * Renders an HTML element out of the template.\n\t *\n\t * @param data Rendering data.\n\t */\n\tprivate _renderElement( data: RenderData ) {\n\t\tlet node = data.node;\n\n\t\tif ( !node ) {\n\t\t\tnode = data.node = document.createElementNS( this.ns || xhtmlNs, this.tag! ) as any;\n\t\t}\n\n\t\tthis._renderAttributes( data );\n\t\tthis._renderElementChildren( data );\n\t\tthis._setUpListeners( data );\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Renders a text node out of {@link module:ui/template~Template#text}.\n\t *\n\t * @param data Rendering data.\n\t */\n\tprivate _renderText( data: RenderData ) {\n\t\tlet node = data.node;\n\n\t\t// Save the original textContent to revert it in #revert().\n\t\tif ( node ) {\n\t\t\tdata.revertData!.text = node.textContent;\n\t\t} else {\n\t\t\tnode = data.node = document.createTextNode( '' );\n\t\t}\n\n\t\t// Check if this Text Node is bound to Observable. Cases:\n\t\t//\n\t\t//\t\ttext: [ Template.bind( ... ).to( ... ) ]\n\t\t//\n\t\t//\t\ttext: [\n\t\t//\t\t\t'foo',\n\t\t//\t\t\tTemplate.bind( ... ).to( ... ),\n\t\t//\t\t\t...\n\t\t//\t\t]\n\t\t//\n\t\tif ( hasTemplateBinding( this.text ) ) {\n\t\t\tthis._bindToObservable( {\n\t\t\t\tschema: this.text!,\n\t\t\t\tupdater: getTextUpdater( node ),\n\t\t\t\tdata\n\t\t\t} );\n\t\t}\n\t\t// Simply set text. Cases:\n\t\t//\n\t\t//\t\ttext: [ 'all', 'are', 'static' ]\n\t\t//\n\t\t//\t\ttext: [ 'foo' ]\n\t\t//\n\t\telse {\n\t\t\tnode.textContent = this.text!.join( '' );\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Renders HTML element attributes out of {@link module:ui/template~Template#attributes}.\n\t *\n\t * @param data Rendering data.\n\t */\n\tprivate _renderAttributes( data: RenderData ) {\n\t\tif ( !this.attributes ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst node = data.node as HTMLElement;\n\t\tconst revertData = data.revertData;\n\n\t\tfor ( const attrName in this.attributes ) {\n\t\t\t// Current attribute value in DOM.\n\t\t\tconst domAttrValue = node.getAttribute( attrName );\n\n\t\t\t// The value to be set.\n\t\t\tconst attrValue = this.attributes[ attrName ];\n\n\t\t\t// Save revert data.\n\t\t\tif ( revertData ) {\n\t\t\t\trevertData.attributes[ attrName ] = domAttrValue;\n\t\t\t}\n\n\t\t\t// Detect custom namespace:\n\t\t\t//\n\t\t\t//\t\tclass: {\n\t\t\t//\t\t\tns: 'abc',\n\t\t\t//\t\t\tvalue: Template.bind( ... ).to( ... )\n\t\t\t//\t\t}\n\t\t\t//\n\t\t\tconst attrNs = isNamespaced( attrValue ) ? attrValue[ 0 ].ns : null;\n\n\t\t\t// Activate binding if one is found. Cases:\n\t\t\t//\n\t\t\t//\t\tclass: [\n\t\t\t//\t\t\tTemplate.bind( ... ).to( ... )\n\t\t\t//\t\t]\n\t\t\t//\n\t\t\t//\t\tclass: [\n\t\t\t//\t\t\t'bar',\n\t\t\t//\t\t\tTemplate.bind( ... ).to( ... ),\n\t\t\t//\t\t\t'baz'\n\t\t\t//\t\t]\n\t\t\t//\n\t\t\t//\t\tclass: {\n\t\t\t//\t\t\tns: 'abc',\n\t\t\t//\t\t\tvalue: Template.bind( ... ).to( ... )\n\t\t\t//\t\t}\n\t\t\t//\n\t\t\tif ( hasTemplateBinding( attrValue ) ) {\n\t\t\t\t// Normalize attributes with additional data like namespace:\n\t\t\t\t//\n\t\t\t\t//\t\tclass: {\n\t\t\t\t//\t\t\tns: 'abc',\n\t\t\t\t//\t\t\tvalue: [ ... ]\n\t\t\t\t//\t\t}\n\t\t\t\t//\n\t\t\t\tconst valueToBind = isNamespaced( attrValue ) ? attrValue[ 0 ].value : attrValue;\n\n\t\t\t\t// Extend the original value of attributes like \"style\" and \"class\",\n\t\t\t\t// don't override them.\n\t\t\t\tif ( revertData && shouldExtend( attrName ) ) {\n\t\t\t\t\tvalueToBind.unshift( domAttrValue );\n\t\t\t\t}\n\n\t\t\t\tthis._bindToObservable( {\n\t\t\t\t\tschema: valueToBind,\n\t\t\t\t\tupdater: getAttributeUpdater( node, attrName, attrNs ),\n\t\t\t\t\tdata\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Style attribute could be an Object so it needs to be parsed in a specific way.\n\t\t\t//\n\t\t\t//\t\tstyle: {\n\t\t\t//\t\t\twidth: '100px',\n\t\t\t//\t\t\theight: Template.bind( ... ).to( ... )\n\t\t\t//\t\t}\n\t\t\t//\n\t\t\telse if ( attrName == 'style' && typeof attrValue[ 0 ] !== 'string' ) {\n\t\t\t\tthis._renderStyleAttribute( attrValue[ 0 ] as any, data );\n\t\t\t}\n\n\t\t\t// Otherwise simply set the static attribute:\n\t\t\t//\n\t\t\t//\t\tclass: [ 'foo' ]\n\t\t\t//\n\t\t\t//\t\tclass: [ 'all', 'are', 'static' ]\n\t\t\t//\n\t\t\t//\t\tclass: [\n\t\t\t//\t\t\t{\n\t\t\t//\t\t\t\tns: 'abc',\n\t\t\t//\t\t\t\tvalue: [ 'foo' ]\n\t\t\t//\t\t\t}\n\t\t\t//\t\t]\n\t\t\t//\n\t\t\telse {\n\t\t\t\t// Extend the original value of attributes like \"style\" and \"class\",\n\t\t\t\t// don't override them.\n\t\t\t\tif ( revertData && domAttrValue && shouldExtend( attrName ) ) {\n\t\t\t\t\tattrValue.unshift( domAttrValue as any );\n\t\t\t\t}\n\n\t\t\t\tconst value: any = attrValue\n\t\t\t\t\t// Retrieve \"values\" from:\n\t\t\t\t\t//\n\t\t\t\t\t//\t\tclass: [\n\t\t\t\t\t//\t\t\t{\n\t\t\t\t\t//\t\t\t\tns: 'abc',\n\t\t\t\t\t//\t\t\t\tvalue: [ ... ]\n\t\t\t\t\t//\t\t\t}\n\t\t\t\t\t//\t\t]\n\t\t\t\t\t//\n\t\t\t\t\t.map( ( val: any ) => val ? ( val.value || val ) : val )\n\t\t\t\t\t// Flatten the array.\n\t\t\t\t\t.reduce( ( prev, next ) => prev.concat( next ), [] )\n\t\t\t\t\t// Convert into string.\n\t\t\t\t\t.reduce( arrayValueReducer, '' );\n\n\t\t\t\tif ( !isFalsy( value ) ) {\n\t\t\t\t\tnode.setAttributeNS( attrNs, attrName, value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Renders the `style` attribute of an HTML element based on\n\t * {@link module:ui/template~Template#attributes}.\n\t *\n\t * A style attribute is an object with static values:\n\t *\n\t * ```ts\n\t * attributes: {\n\t * \tstyle: {\n\t * \t\tcolor: 'red'\n\t * \t}\n\t * }\n\t * ```\n\t *\n\t * or values bound to {@link module:ui/model~Model} properties:\n\t *\n\t * ```ts\n\t * attributes: {\n\t * \tstyle: {\n\t * \t\tcolor: bind.to( ... )\n\t * \t}\n\t * }\n\t * ```\n\t *\n\t * Note: The `style` attribute is rendered without setting the namespace. It does not seem to be\n\t * needed.\n\t *\n\t * @param styles Styles located in `attributes.style` of {@link module:ui/template~TemplateDefinition}.\n\t * @param data Rendering data.\n\t */\n\tprivate _renderStyleAttribute( styles: Record<string, TemplateSimpleValue | TemplateBinding>, data: RenderData ) {\n\t\tconst node = data.node;\n\n\t\tfor ( const styleName in styles ) {\n\t\t\tconst styleValue = styles[ styleName ];\n\n\t\t\t// Cases:\n\t\t\t//\n\t\t\t//\t\tstyle: {\n\t\t\t//\t\t\tcolor: bind.to( 'attribute' )\n\t\t\t//\t\t}\n\t\t\t//\n\t\t\tif ( hasTemplateBinding( styleValue ) ) {\n\t\t\t\tthis._bindToObservable( {\n\t\t\t\t\tschema: [ styleValue ],\n\t\t\t\t\tupdater: getStyleUpdater( node, styleName ),\n\t\t\t\t\tdata\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Cases:\n\t\t\t//\n\t\t\t//\t\tstyle: {\n\t\t\t//\t\t\tcolor: 'red'\n\t\t\t//\t\t}\n\t\t\t//\n\t\t\telse {\n\t\t\t\t( node as any ).style[ styleName ] = styleValue;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Recursively renders HTML element's children from {@link module:ui/template~Template#children}.\n\t *\n\t * @param data Rendering data.\n\t */\n\tprivate _renderElementChildren( data: RenderData ) {\n\t\tconst node = data.node as HTMLElement;\n\t\tconst container = data.intoFragment ? document.createDocumentFragment() : node;\n\t\tconst isApplying = data.isApplying;\n\t\tlet childIndex = 0;\n\n\t\tfor ( const child of this.children! ) {\n\t\t\tif ( isViewCollection( child ) ) {\n\t\t\t\tif ( !isApplying ) {\n\t\t\t\t\tchild.setParent( node );\n\n\t\t\t\t\t// Note: ViewCollection renders its children.\n\t\t\t\t\tfor ( const view of child ) {\n\t\t\t\t\t\tcontainer.appendChild( view.element! );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if ( isView( child ) ) {\n\t\t\t\tif ( !isApplying ) {\n\t\t\t\t\tif ( !child.isRendered ) {\n\t\t\t\t\t\tchild.render();\n\t\t\t\t\t}\n\n\t\t\t\t\tcontainer.appendChild( child.element! );\n\t\t\t\t}\n\t\t\t} else if ( isNode( child ) ) {\n\t\t\t\tcontainer.appendChild( child );\n\t\t\t} else {\n\t\t\t\tif ( isApplying ) {\n\t\t\t\t\tconst revertData = data.revertData!;\n\t\t\t\t\tconst childRevertData = getEmptyRevertData();\n\n\t\t\t\t\trevertData.children.push( childRevertData );\n\n\t\t\t\t\tchild._renderNode( {\n\t\t\t\t\t\tintoFragment: false,\n\t\t\t\t\t\tnode: container.childNodes[ childIndex++ ] as any,\n\t\t\t\t\t\tisApplying: true,\n\t\t\t\t\t\trevertData: childRevertData\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tcontainer.appendChild( child.render() );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( data.intoFragment ) {\n\t\t\tnode.appendChild( container );\n\t\t}\n\t}\n\n\t/**\n\t * Activates `on` event listeners from the {@link module:ui/template~TemplateDefinition}\n\t * on an HTML element.\n\t *\n\t * @param data Rendering data.\n\t */\n\tprivate _setUpListeners( data: RenderData ) {\n\t\tif ( !this.eventListeners ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( const key in this.eventListeners ) {\n\t\t\tconst revertBindings = this.eventListeners[ key ].map( schemaItem => {\n\t\t\t\tconst [ domEvtName, domSelector ] = key.split( '@' );\n\n\t\t\t\treturn schemaItem.activateDomEventListener( domEvtName, domSelector, data );\n\t\t\t} );\n\n\t\t\tif ( data.revertData ) {\n\t\t\t\tdata.revertData.bindings.push( revertBindings );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * For a given {@link module:ui/template~TemplateValueSchema} containing {@link module:ui/template~TemplateBinding}\n\t * activates the binding and sets its initial value.\n\t *\n\t * Note: {@link module:ui/template~TemplateValueSchema} can be for HTML element attributes or\n\t * text node `textContent`.\n\t *\n\t * @param options Binding options.\n\t * @param options.updater A function which updates the DOM (like attribute or text).\n\t * @param options.data Rendering data.\n\t */\n\tprivate _bindToObservable( { schema, updater, data }: {\n\t\tschema: Array<TemplateSimpleValue | TemplateBinding>;\n\t\tupdater: Updater;\n\t\tdata: RenderData;\n\t} ) {\n\t\tconst revertData = data.revertData;\n\n\t\t// Set initial values.\n\t\tsyncValueSchemaValue( schema, updater, data );\n\n\t\tconst revertBindings = schema\n\t\t\t// Filter \"falsy\" (false, undefined, null, '') value schema components out.\n\t\t\t.filter( item => !isFalsy( item ) )\n\t\t\t// Filter inactive bindings from schema, like static strings ('foo'), numbers (42), etc.\n\t\t\t.filter( ( item: any ): item is TemplateBinding => item.observable )\n\t\t\t// Once only the actual binding are left, let the emitter listen to observable change:attribute event.\n\t\t\t// TODO: Reduce the number of listeners attached as many bindings may listen\n\t\t\t// to the same observable attribute.\n\t\t\t.map( templateBinding => templateBinding.activateAttributeListener( schema, updater, data ) );\n\n\t\tif ( revertData ) {\n\t\t\trevertData.bindings.push( revertBindings );\n\t\t}\n\t}\n\n\t/**\n\t * Reverts {@link module:ui/template~RenderData#revertData template data} from a node to\n\t * return it to the original state.\n\t *\n\t * @param node A node to be reverted.\n\t * @param revertData An object that stores information about what changes have been made by\n\t * {@link #apply} to the node. See {@link module:ui/template~RenderData#revertData} for more information.\n\t */\n\tprivate _revertTemplateFromNode( node: HTMLElement | Text, revertData: RevertData ) {\n\t\tfor ( const binding of revertData.bindings ) {\n\t\t\t// Each binding may consist of several observable+observable#attribute.\n\t\t\t// like the following has 2:\n\t\t\t//\n\t\t\t//\t\tclass: [\n\t\t\t//\t\t\t'x',\n\t\t\t//\t\t\tbind.to( 'foo' ),\n\t\t\t//\t\t\t'y',\n\t\t\t//\t\t\tbind.to( 'bar' )\n\t\t\t//\t\t]\n\t\t\t//\n\t\t\tfor ( const revertBinding of binding ) {\n\t\t\t\trevertBinding();\n\t\t\t}\n\t\t}\n\n\t\tif ( revertData.text ) {\n\t\t\tnode.textContent = revertData.text;\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst element = node as HTMLElement;\n\n\t\tfor ( const attrName in revertData.attributes ) {\n\t\t\tconst attrValue = revertData.attributes[ attrName ];\n\n\t\t\t// When the attribute has **not** been set before #apply().\n\t\t\tif ( attrValue === null ) {\n\t\t\t\telement.removeAttribute( attrName );\n\t\t\t} else {\n\t\t\t\telement.setAttribute( attrName, attrValue );\n\t\t\t}\n\t\t}\n\n\t\tfor ( let i = 0; i < revertData.children.length; ++i ) {\n\t\t\tthis._revertTemplateFromNode( element.childNodes[ i ] as any, revertData.children[ i ] );\n\t\t}\n\t}\n}\n\ntype AttributeValues = Array<TemplateSimpleValue | TemplateBinding> |\n\t[ NamespacedValue<Array<TemplateSimpleValue | TemplateBinding>> ];\n\n/**\n * Describes a binding created by the {@link module:ui/template~Template.bind} interface.\n *\n * @internal\n */\nexport abstract class TemplateBinding {\n\t/**\n\t * The name of the {@link module:ui/template~TemplateBinding#observable observed attribute}.\n\t */\n\tpublic readonly attribute: string;\n\n\t/**\n\t * An observable instance of the binding. It either:\n\t *\n\t * * provides the attribute with the value,\n\t * * or passes the event when a corresponding DOM event is fired.\n\t */\n\tpublic readonly observable: Observable;\n\n\t/**\n\t * An {@link module:utils/emittermixin~Emitter} used by the binding to:\n\t *\n\t * * listen to the attribute change in the {@link module:ui/template~TemplateBinding#observable},\n\t * * or listen to the event in the DOM.\n\t */\n\tpublic readonly emitter: Emitter;\n\n\t/**\n\t * A custom function to process the value of the {@link module:ui/template~TemplateBinding#attribute}.\n\t */\n\tpublic readonly callback?: ( value: any, node: Node ) => TemplateSimpleValue;\n\n\t/**\n\t * Creates an instance of the {@link module:ui/template~TemplateBinding} class.\n\t *\n\t * @param def The definition of the binding.\n\t */\n\tconstructor( def: {\n\t\tattribute: string;\n\t\tobservable: Observable;\n\t\temitter: Emitter;\n\t\tcallback?: ( value: any, node: Node ) => TemplateSimpleValue;\n\t} ) {\n\t\tthis.attribute = def.attribute;\n\t\tthis.observable = def.observable;\n\t\tthis.emitter = def.emitter;\n\t\tthis.callback = def.callback;\n\t}\n\n\t/**\n\t * Returns the value of the binding. It is the value of the {@link module:ui/template~TemplateBinding#attribute} in\n\t * {@link module:ui/template~TemplateBinding#observable}. The value may be processed by the\n\t * {@link module:ui/template~TemplateBinding#callback}, if such has been passed to the binding.\n\t *\n\t * @param node A native DOM node, passed to the custom {@link module:ui/template~TemplateBinding#callback}.\n\t * @returns The value of {@link module:ui/template~TemplateBinding#attribute} in\n\t * {@link module:ui/template~TemplateBinding#observable}.\n\t */\n\tpublic getValue( node: Node ): TemplateSimpleValue {\n\t\tconst value = ( this.observable as any )[ this.attribute ];\n\n\t\treturn this.callback ? this.callback( value, node ) : value;\n\t}\n\n\t/**\n\t * Activates the listener which waits for changes of the {@link module:ui/template~TemplateBinding#attribute} in\n\t * {@link module:ui/template~TemplateBinding#observable}, then updates the DOM with the aggregated\n\t * value of {@link module:ui/template~TemplateValueSchema}.\n\t *\n\t * @param schema A full schema to generate an attribute or text in the DOM.\n\t * @param updater A DOM updater function used to update the native DOM attribute or text.\n\t * @param data Rendering data.\n\t * @returns A function to sever the listener binding.\n\t */\n\tpublic activateAttributeListener(\n\t\tschema: Array<TemplateSimpleValue | TemplateBinding>,\n\t\tupdater: Updater,\n\t\tdata: RenderData\n\t): () => void {\n\t\tconst callback = () => syncValueSchemaValue( schema, updater, data );\n\n\t\tthis.emitter.listenTo<ObservableChangeEvent>( this.observable, `change:${ this.attribute }`, callback );\n\n\t\t// Allows revert of the listener.\n\t\treturn () => {\n\t\t\tthis.emitter.stopListening( this.observable, `change:${ this.attribute }`, callback );\n\t\t};\n\t}\n}\n\n/**\n * Describes either:\n *\n * * a binding to an {@link module:utils/observablemixin~Observable},\n * * or a native DOM event binding.\n *\n * It is created by the {@link module:ui/template~BindChain#to} method.\n *\n * @internal\n */\nexport class TemplateToBinding extends TemplateBinding {\n\tpublic readonly eventNameOrFunction: string | ( ( domEvent: Event ) => void );\n\n\tconstructor( def: ConstructorParameters<typeof TemplateBinding>[ 0 ] & {\n\t\teventNameOrFunction: string | ( ( domEvent: Event ) => void );\n\t} ) {\n\t\tsuper( def );\n\n\t\tthis.eventNameOrFunction = def.eventNameOrFunction;\n\t}\n\n\t/**\n\t * Activates the listener for the native DOM event, which when fired, is propagated by\n\t * the {@link module:ui/template~TemplateBinding#emitter}.\n\t *\n\t * @param domEvtName The name of the native DOM event.\n\t * @param domSelector The selector in the DOM to filter delegated events.\n\t * @param data Rendering data.\n\t * @returns A function to sever the listener binding.\n\t */\n\tpublic activateDomEventListener(\n\t\tdomEvtName: string,\n\t\tdomSelector: string,\n\t\tdata: { node: any }\n\t): () => void {\n\t\tconst callback = ( evt: unknown, domEvt: Event ) => {\n\t\t\tif ( !domSelector || ( domEvt.target as Element ).matches( domSelector ) ) {\n\t\t\t\tif ( typeof this.eventNameOrFunction == 'function' ) {\n\t\t\t\t\tthis.eventNameOrFunction( domEvt );\n\t\t\t\t} else {\n\t\t\t\t\tthis.observable.fire( this.eventNameOrFunction, domEvt );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tthis.emitter.listenTo( data.node, domEvtName, callback );\n\n\t\t// Allows revert of the listener.\n\t\treturn () => {\n\t\t\tthis.emitter.stopListening( data.node, domEvtName, callback );\n\t\t};\n\t}\n}\n\n/**\n * Describes a binding to {@link module:utils/observablemixin~Observable} created by the {@link module:ui/template~BindChain#if}\n * method.\n *\n * @internal\n */\nexport class TemplateIfBinding extends TemplateBinding {\n\t/**\n\t * The value of the DOM attribute or text to be set if the {@link module:ui/template~TemplateBinding#attribute} in\n\t * {@link module:ui/template~TemplateBinding#observable} is `true`.\n\t */\n\tpublic readonly valueIfTrue?: string;\n\n\tconstructor( def: ConstructorParameters<typeof TemplateBinding>[ 0 ] & {\n\t\tvalueIfTrue?: string;\n\t} ) {\n\t\tsuper( def );\n\n\t\tthis.valueIfTrue = def.valueIfTrue;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override getValue( node: Node ): TemplateSimpleValue {\n\t\tconst value = super.getValue( node );\n\n\t\treturn isFalsy( value ) ? false : ( this.valueIfTrue || true ) as any;\n\t}\n}\n\n/**\n * Checks whether given {@link module:ui/template~TemplateValueSchema} contains a\n * {@link module:ui/template~TemplateBinding}.\n */\nfunction hasTemplateBinding( schema: any ) {\n\tif ( !schema ) {\n\t\treturn false;\n\t}\n\n\t// Normalize attributes with additional data like namespace:\n\t//\n\t//\t\tclass: {\n\t//\t\t\tns: 'abc',\n\t//\t\t\tvalue: [ ... ]\n\t//\t\t}\n\t//\n\tif ( schema.value ) {\n\t\tschema = schema.value;\n\t}\n\n\tif ( Array.isArray( schema ) ) {\n\t\treturn schema.some( hasTemplateBinding );\n\t} else if ( schema instanceof TemplateBinding ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * Assembles the value using {@link module:ui/template~TemplateValueSchema} and stores it in a form of\n * an Array. Each entry of the Array corresponds to one of {@link module:ui/template~TemplateValueSchema}\n * items.\n *\n * @param node DOM Node updated when {@link module:utils/observablemixin~Observable} changes.\n */\nfunction getValueSchemaValue( schema: Array<TemplateSimpleValue | TemplateBinding>, node: Node ) {\n\treturn schema.map( schemaItem => {\n\t\t// Process {@link module:ui/template~TemplateBinding} bindings.\n\t\tif ( schemaItem instanceof TemplateBinding ) {\n\t\t\treturn schemaItem.getValue( node );\n\t\t}\n\n\t\t// All static values like strings, numbers, and \"falsy\" values (false, null, undefined, '', etc.) just pass.\n\t\treturn schemaItem;\n\t} );\n}\n\n/**\n * A function executed each time the bound Observable attribute changes, which updates the DOM with a value\n * constructed from {@link module:ui/template~TemplateValueSchema}.\n *\n * @param updater A function which updates the DOM (like attribute or text).\n * @param node DOM Node updated when {@link module:utils/observablemixin~Observable} changes.\n */\nfunction syncValueSchemaValue(\n\tschema: Array<TemplateSimpleValue | TemplateBinding>,\n\tupdater: Updater,\n\t{ node }: { node: Node }\n) {\n\tconst values = getValueSchemaValue( schema, node );\n\tlet value: TemplateSimpleValue;\n\n\t// Check if schema is a single Template.bind.if, like:\n\t//\n\t//\t\tclass: Template.bind.if( 'foo' )\n\t//\n\tif ( schema.length == 1 && schema[ 0 ] instanceof TemplateIfBinding ) {\n\t\tvalue = values[ 0 ];\n\t} else {\n\t\tvalue = values.reduce( arrayValueReducer, '' );\n\t}\n\n\tif ( isFalsy( value ) ) {\n\t\tupdater.remove();\n\t} else {\n\t\tupdater.set( value );\n\t}\n}\n\ninterface Updater {\n\tset( value: any ): void;\n\tremove(): void;\n}\n\n/**\n * Returns an object consisting of `set` and `remove` functions, which\n * can be used in the context of DOM Node to set or reset `textContent`.\n * @see module:ui/view~View#_bindToObservable\n *\n * @param node DOM Node to be modified.\n */\nfunction getTextUpdater( node: Node ): Updater {\n\treturn {\n\t\tset( value ) {\n\t\t\tnode.textContent = value;\n\t\t},\n\n\t\tremove() {\n\t\t\tnode.textContent = '';\n\t\t}\n\t};\n}\n\n/**\n * Returns an object consisting of `set` and `remove` functions, which\n * can be used in the context of DOM Node to set or reset an attribute.\n * @see module:ui/view~View#_bindToObservable\n *\n * @param el DOM Node to be modified.\n * @param attrName Name of the attribute to be modified.\n * @param ns Namespace to use.\n */\nfunction getAttributeUpdater( el: Element, attrName: string, ns: string | null ): Updater {\n\treturn {\n\t\tset( value ) {\n\t\t\tel.setAttributeNS( ns, attrName, value );\n\t\t},\n\n\t\tremove() {\n\t\t\tel.removeAttributeNS( ns, attrName );\n\t\t}\n\t};\n}\n\n/**\n * Returns an object consisting of `set` and `remove` functions, which\n * can be used in the context of CSSStyleDeclaration to set or remove a style.\n * @see module:ui/view~View#_bindToObservable\n *\n * @param el DOM Node to be modified.\n * @param styleName Name of the style to be modified.\n */\nfunction getStyleUpdater( el: any, styleName: string ): Updater {\n\treturn {\n\t\tset( value ) {\n\t\t\tel.style[ styleName ] = value;\n\t\t},\n\n\t\tremove() {\n\t\t\tel.style[ styleName ] = null;\n\t\t}\n\t};\n}\n\n/**\n * Clones definition of the template.\n */\nfunction clone( def: unknown ) {\n\tconst clone = cloneDeepWith( def, value => {\n\t\t// Don't clone the `Template.bind`* bindings because of the references to Observable\n\t\t// and DomEmitterMixin instances inside, which would also be traversed and cloned by greedy\n\t\t// cloneDeepWith algorithm. There's no point in cloning Observable/DomEmitterMixins\n\t\t// along with the definition.\n\t\t//\n\t\t// Don't clone Template instances if provided as a child. They're simply #render()ed\n\t\t// and nothing should interfere.\n\t\t//\n\t\t// Also don't clone View instances if provided as a child of the Template. The template\n\t\t// instance will be extracted from the View during the normalization and there's no need\n\t\t// to clone it.\n\t\tif ( value && ( value instanceof TemplateBinding || isTemplate( value ) || isView( value ) || isViewCollection( value ) ) ) {\n\t\t\treturn value;\n\t\t}\n\t} );\n\n\treturn clone;\n}\n\n/**\n * Normalizes given {@link module:ui/template~TemplateDefinition}.\n *\n * See:\n * * {@link normalizeAttributes}\n * * {@link normalizeListeners}\n * * {@link normalizePlainTextDefinition}\n * * {@link normalizeTextDefinition}\n *\n * @param def A template definition.\n * @returns Normalized definition.\n */\nfunction normalize( def: any ) {\n\tif ( typeof def == 'string' ) {\n\t\tdef = normalizePlainTextDefinition( def );\n\t} else if ( def.text ) {\n\t\tnormalizeTextDefinition( def );\n\t}\n\n\tif ( def.on ) {\n\t\tdef.eventListeners = normalizeListeners( def.on );\n\n\t\t// Template mixes EmitterMixin, so delete #on to avoid collision.\n\t\tdelete def.on;\n\t}\n\n\tif ( !def.text ) {\n\t\tif ( def.attributes ) {\n\t\t\tnormalizeAttributes( def.attributes );\n\t\t}\n\n\t\tconst children = [];\n\n\t\tif ( def.children ) {\n\t\t\tif ( isViewCollection( def.children ) ) {\n\t\t\t\tchildren.push( def.children );\n\t\t\t} else {\n\t\t\t\tfor ( const child of def.children ) {\n\t\t\t\t\tif ( isTemplate( child ) || isView( child ) || isNode( child ) ) {\n\t\t\t\t\t\tchildren.push( child );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchildren.push( new Template( child ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdef.children = children;\n\t}\n\n\treturn def;\n}\n\n/**\n * Normalizes \"attributes\" section of {@link module:ui/template~TemplateDefinition}.\n *\n * ```\n * attributes: {\n * \ta: 'bar',\n * \tb: {@link module:ui/template~TemplateBinding},\n * \tc: {\n * \t\tvalue: 'bar'\n * \t}\n * }\n * ```\n *\n * becomes\n *\n * ```\n * attributes: {\n * \ta: [ 'bar' ],\n * \tb: [ {@link module:ui/template~TemplateBinding} ],\n * \tc: {\n * \t\tvalue: [ 'bar' ]\n * \t}\n * }\n * ```\n */\nfunction normalizeAttributes( attributes: any ) {\n\tfor ( const a in attributes ) {\n\t\tif ( attributes[ a ].value ) {\n\t\t\tattributes[ a ].value = toArray( attributes[ a ].value );\n\t\t}\n\n\t\tarrayify( attributes, a );\n\t}\n}\n\n/**\n * Normalizes \"on\" section of {@link module:ui/template~TemplateDefinition}.\n *\n * ```\n * on: {\n * \ta: 'bar',\n * \tb: {@link module:ui/template~TemplateBinding},\n * \tc: [ {@link module:ui/template~TemplateBinding}, () => { ... } ]\n * }\n * ```\n *\n * becomes\n *\n * ```\n * on: {\n * \ta: [ 'bar' ],\n * \tb: [ {@link module:ui/template~TemplateBinding} ],\n * \tc: [ {@link module:ui/template~TemplateBinding}, () => { ... } ]\n * }\n * ```\n *\n * @returns Object containing normalized listeners.\n */\nfunction normalizeListeners( listeners: any ) {\n\tfor ( const l in listeners ) {\n\t\tarrayify( listeners, l );\n\t}\n\n\treturn listeners;\n}\n\n/**\n * Normalizes \"string\" {@link module:ui/template~TemplateDefinition}.\n *\n * ```\n * \"foo\"\n * ```\n *\n * becomes\n *\n * ```\n * { text: [ 'foo' ] },\n * ```\n *\n * @returns Normalized template definition.\n */\nfunction normalizePlainTextDefinition( def: string ) {\n\treturn {\n\t\ttext: [ def ]\n\t};\n}\n\n/**\n * Normalizes text {@link module:ui/template~TemplateDefinition}.\n *\n * ```\n * children: [\n * \t{ text: 'def' },\n * \t{ text: {@link module:ui/template~TemplateBinding} }\n * ]\n * ```\n *\n * becomes\n *\n * ```\n * children: [\n * \t{ text: [ 'def' ] },\n * \t{ text: [ {@link module:ui/template~TemplateBinding} ] }\n * ]\n * ```\n */\nfunction normalizeTextDefinition( def: any ) {\n\tdef.text = toArray( def.text );\n}\n\n/**\n * Wraps an entry in Object in an Array, if not already one.\n *\n * ```\n * {\n * \tx: 'y',\n * \ta: [ 'b' ]\n * }\n * ```\n *\n * becomes\n *\n * ```\n * {\n * \tx: [ 'y' ],\n * \ta: [ 'b' ]\n * }\n * ```\n */\nfunction arrayify( obj: any, key: string ) {\n\tobj[ key ] = toArray( obj[ key ] );\n}\n\n/**\n * A helper which concatenates the value avoiding unwanted\n * leading white spaces.\n */\nfunction arrayValueReducer( prev: TemplateSimpleValue, cur: TemplateSimpleValue ) {\n\tif ( isFalsy( cur ) ) {\n\t\treturn prev;\n\t} else if ( isFalsy( prev ) ) {\n\t\treturn cur;\n\t} else {\n\t\treturn `${ prev } ${ cur }`;\n\t}\n}\n\n/**\n * Extends one object defined in the following format:\n *\n * ```\n * {\n * \tkey1: [Array1],\n * \tkey2: [Array2],\n * \t...\n * \tkeyN: [ArrayN]\n * }\n * ```\n *\n * with another object of the same data format.\n *\n * @param obj Base object.\n * @param ext Object extending base.\n */\nfunction extendObjectValueArray( obj: any, ext: any ) {\n\tfor ( const a in ext ) {\n\t\tif ( obj[ a ] ) {\n\t\t\tobj[ a ].push( ...ext[ a ] );\n\t\t} else {\n\t\t\tobj[ a ] = ext[ a ];\n\t\t}\n\t}\n}\n\n/**\n * A helper for {@link module:ui/template~Template#extend}. Recursively extends {@link module:ui/template~Template} instance\n * with content from {@link module:ui/template~TemplateDefinition}. See {@link module:ui/template~Template#extend} to learn more.\n *\n * @param def A template instance to be extended.\n * @param def A definition which is to extend the template instance.\n * @param Error context.\n */\nfunction extendTemplate( template: Template, def: any ) {\n\tif ( def.attributes ) {\n\t\tif ( !template.attributes ) {\n\t\t\ttemplate.attributes = {};\n\t\t}\n\n\t\textendObjectValueArray( template.attributes, def.attributes );\n\t}\n\n\tif ( def.eventListeners ) {\n\t\tif ( !template.eventListeners ) {\n\t\t\ttemplate.eventListeners = {};\n\t\t}\n\n\t\textendObjectValueArray( template.eventListeners, def.eventListeners );\n\t}\n\n\tif ( def.text ) {\n\t\ttemplate.text!.push( ...def.text );\n\t}\n\n\tif ( def.children && def.children.length ) {\n\t\tif ( template.children!.length != def.children.length ) {\n\t\t\t/**\n\t\t\t * The number of children in extended definition does not match.\n\t\t\t *\n\t\t\t * @error ui-template-extend-children-mismatch\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'ui-template-extend-children-mismatch',\n\t\t\t\ttemplate\n\t\t\t);\n\t\t}\n\n\t\tlet childIndex = 0;\n\n\t\tfor ( const childDef of def.children ) {\n\t\t\textendTemplate( template.children![ childIndex++ ] as any, childDef );\n\t\t}\n\t}\n}\n\n/**\n * Checks if value is \"falsy\".\n * Note: 0 (Number) is not \"falsy\" in this context.\n *\n * @param value Value to be checked.\n */\nfunction isFalsy( value: unknown ): value is FalsyValue {\n\treturn !value && value !== 0;\n}\n\n/**\n * Checks if the item is an instance of {@link module:ui/view~View}\n *\n * @param value Value to be checked.\n */\nfunction isView( item: unknown ): item is View {\n\treturn item instanceof View;\n}\n\n/**\n * Checks if the item is an instance of {@link module:ui/template~Template}\n *\n * @param value Value to be checked.\n */\nfunction isTemplate( item: unknown ): item is Template {\n\treturn item instanceof Template;\n}\n\n/**\n * Checks if the item is an instance of {@link module:ui/viewcollection~ViewCollection}\n *\n * @param value Value to be checked.\n */\nfunction isViewCollection( item: unknown ): item is ViewCollection {\n\treturn item instanceof ViewCollection;\n}\n\n/**\n * Checks if value array contains the one with namespace.\n */\nfunction isNamespaced(\n\tattrValue: AttributeValues\n): attrValue is [ NamespacedValue<Array<TemplateSimpleValue | TemplateBinding>> ] {\n\treturn isObject( attrValue[ 0 ] ) && ( attrValue[ 0 ] as any ).ns;\n}\n\n/**\n * Creates an empty skeleton for {@link module:ui/template~Template#revert}\n * data.\n */\nfunction getEmptyRevertData(): RevertData {\n\treturn {\n\t\tchildren: [],\n\t\tbindings: [],\n\t\tattributes: {}\n\t};\n}\n\n/**\n * Checks whether an attribute should be extended when\n * {@link module:ui/template~Template#apply} is called.\n *\n * @param attrName Attribute name to check.\n */\nfunction shouldExtend( attrName: string ) {\n\treturn attrName == 'class' || attrName == 'style';\n}\n\n/**\n * A definition of the {@link module:ui/template~Template}. It describes what kind of\n * node a template will render (HTML element or text), attributes of an element, DOM event\n * listeners and children.\n *\n * Also see:\n * * {@link module:ui/template~TemplateValueSchema} to learn about HTML element attributes,\n * * {@link module:ui/template~TemplateListenerSchema} to learn about DOM event listeners.\n *\n * A sample definition on an HTML element can look like this:\n *\n * ```ts\n * new Template( {\n * \ttag: 'p',\n * \tchildren: [\n * \t\t{\n * \t\t\ttag: 'span',\n * \t\t\tattributes: { ... },\n * \t\t\tchildren: [ ... ],\n * \t\t},\n * \t\t{\n * \t\t\ttext: 'static–text'\n * \t\t},\n * \t\t'also-static–text',\n * \t],\n * \tattributes: {\n * \t\tclass: {@link module:ui/template~TemplateValueSchema},\n * \t\tid: {@link module:ui/template~TemplateValueSchema},\n * \t\tstyle: {@link module:ui/template~TemplateValueSchema}\n *\n * \t\t// ...\n * \t},\n * \ton: {\n * \t\t'click': {@link module:ui/template~TemplateListenerSchema}\n *\n * \t\t// Document.querySelector format is also accepted.\n * \t\t'keyup@a.some-class': {@link module:ui/template~TemplateListenerSchema}\n *\n * \t\t// ...\n * \t}\n * } );\n * ```\n *\n * A {@link module:ui/view~View}, another {@link module:ui/template~Template} or a native DOM node\n * can also become a child of a template. When a view is passed, its {@link module:ui/view~View#element} is used:\n *\n * ```ts\n * const view = new SomeView();\n * const childTemplate = new Template( { ... } );\n * const childNode = document.createElement( 'b' );\n *\n * new Template( {\n * \ttag: 'p',\n *\n * \tchildren: [\n * \t\t// view#element will be added as a child of this <p>.\n * \t\tview,\n *\n * \t\t// The output of childTemplate.render() will be added here.\n * \t\tchildTemplate,\n *\n * \t\t// Native DOM nodes are included directly in the rendered output.\n * \t\tchildNode\n * \t]\n * } );\n * ```\n *\n * An entire {@link module:ui/viewcollection~ViewCollection} can be used as a child in the definition:\n *\n * ```ts\n * const collection = new ViewCollection();\n * collection.add( someView );\n *\n * new Template( {\n * \ttag: 'p',\n *\n * \tchildren: collection\n * } );\n * ```\n */\nexport type TemplateDefinition = string |\n\tTemplate |\n\tTemplateElementDefinition |\n\tTemplateTextDefinition;\n\nexport type TemplateElementDefinition = {\n\n\t/**\n\t * See the template {@link module:ui/template~Template#tag} property.\n\t */\n\ttag: string;\n\n\t/**\n\t * See the template {@link module:ui/template~Template#attributes} property.\n\t */\n\tattributes?: Record<string, TemplateValueSchema>;\n\n\t/**\n\t * See the template {@link module:ui/template~Template#children} property.\n\t */\n\tchildren?: Iterable<View | Node | Template | TemplateDefinition>;\n\n\t/**\n\t * See the template {@link module:ui/template~Template#eventListeners} property.\n\t */\n\ton?: Record<string, TemplateListenerSchema>;\n};\n\nexport type TemplateTextDefinition = {\n\n\t/**\n\t * See the template {@link module:ui/template~Template#text} property.\n\t */\n\ttext: ArrayOrItem<TemplateSimpleValueSchema>;\n};\n\nexport type FalsyValue = false | null | undefined | '';\n\nexport type NamespacedValue<T> = { ns: string; value: T };\n\nexport type TemplateSimpleValue = string | boolean | number | null | undefined;\n\nexport type TemplateSimpleValueSchema = TemplateSimpleValue | AttributeBinding;\n\n/**\n * Describes a value of an HTML element attribute or `textContent`. It allows combining multiple\n * data sources like static values and {@link module:utils/observablemixin~Observable} attributes.\n *\n * Also see:\n * * {@link module:ui/template~TemplateDefinition} to learn where to use it,\n * * {@link module:ui/template~Template.bind} to learn how to configure\n * {@link module:utils/observablemixin~Observable} attribute bindings,\n * * {@link module:ui/template~Template#render} to learn how to render a template,\n * * {@link module:ui/template~BindChain#to `to()`} and {@link module:ui/template~BindChain#if `if()`}\n * methods to learn more about bindings.\n *\n * Attribute values can be described in many different ways:\n *\n * ```ts\n * // Bind helper will create bindings to attributes of the observable.\n * const bind = Template.bind( observable, emitter );\n *\n * new Template( {\n * \ttag: 'p',\n * \tattributes: {\n * \t\t// A plain string schema.\n * \t\t'class': 'static-text',\n *\n * \t\t// An object schema, binds to the \"foo\" attribute of the\n * \t\t// observable and follows its value.\n * \t\t'class': bind.to( 'foo' ),\n *\n * \t\t// An array schema, combines the above.\n * \t\t'class': [\n * \t\t\t'static-text',\n * \t\t\tbind.to( 'bar', () => { ... } ),\n *\n * \t\t\t// Bindings can also be conditional.\n * \t\t\tbind.if( 'baz', 'class-when-baz-is-true' )\n * \t\t],\n *\n * \t\t// An array schema, with a custom namespace, e.g. useful for creating SVGs.\n * \t\t'class': {\n * \t\t\tns: 'http://ns.url',\n * \t\t\tvalue: [\n * \t\t\t\tbind.if( 'baz', 'value-when-true' ),\n * \t\t\t\t'static-text'\n * \t\t\t]\n * \t\t},\n *\n * \t\t// An object schema, specific for styles.\n * \t\tstyle: {\n * \t\t\tcolor: 'red',\n * \t\t\tbackgroundColor: bind.to( 'qux', () => { ... } )\n * \t\t}\n * \t}\n * } );\n * ```\n *\n * Text nodes can also have complex values:\n *\n * ```ts\n * const bind = Template.bind( observable, emitter );\n *\n * // Will render a \"foo\" text node.\n * new Template( {\n * \ttext: 'foo'\n * } );\n *\n * // Will render a \"static text: {observable.foo}\" text node.\n * // The text of the node will be updated as the \"foo\" attribute changes.\n * new Template( {\n * \ttext: [\n * \t\t'static text: ',\n * \t\tbind.to( 'foo', () => { ... } )\n * \t]\n * } );\n * ```\n */\nexport type TemplateValueSchema = ArrayOrItem<\n\tTemplateSimpleValueSchema |\n\tNamespacedValue<TemplateSimpleValueSchema>\n> |\n\tRecord<string, TemplateSimpleValueSchema>;\n\n/**\n * Describes an event listener attached to an HTML element. Such listener can propagate DOM events\n * through an {@link module:utils/observablemixin~Observable} instance, execute custom callbacks\n * or both, if necessary.\n *\n * Also see:\n * * {@link module:ui/template~TemplateDefinition} to learn more about template definitions,\n * * {@link module:ui/template~BindChain#to `to()`} method to learn more about bindings.\n *\n * Check out different ways of attaching event listeners below:\n *\n * ```ts\n * // Bind helper will propagate events through the observable.\n * const bind = Template.bind( observable, emitter );\n *\n * new Template( {\n * \ttag: 'p',\n * \ton: {\n * \t\t// An object schema. The observable will fire the \"clicked\" event upon DOM \"click\".\n * \t\tclick: bind.to( 'clicked' )\n *\n * \t\t// An object schema. It will work for \"click\" event on \"a.foo\" children only.\n * \t\t'click@a.foo': bind.to( 'clicked' )\n *\n * \t\t// An array schema, makes the observable propagate multiple events.\n * \t\tclick: [\n * \t\t\tbind.to( 'clicked' ),\n * \t\t\tbind.to( 'executed' )\n * \t\t],\n *\n * \t\t// An array schema with a custom callback.\n * \t\t'click@a.foo': {\n * \t\t\tbind.to( 'clicked' ),\n * \t\t\tbind.to( evt => {\n * \t\t\t\tconsole.log( `${ evt.target } has been clicked!` );\n * \t\t\t} }\n * \t\t}\n * \t}\n * } );\n * ```\n */\nexport type TemplateListenerSchema = ArrayOrItem<ListenerBinding>;\n\n// `Template.bind( observable, emitter ).to( name )` is used in two different contexts:\n// - in `attribute` (or `text`) section of the `TemplateDefinition` - `name` is an observed property of the provided `observable`, or\n// - in `on` section - `name` is the event to be fired.\n//\n// In both cases, the returned type is `TemplateToBinding` which can be misleading.\n// Moreover, some forms of `to()` can be used in specific context only:\n// - `to( name, callback )` can only be used in `attribute` or `text`\n// - `to( callback )` can only be used in `on`.\n//\n// But note, that the fact it's `Template{To,If}Binding` is not relevant to the user.\n// The instances are both produced and consumed by this file only.\n// So let's invent some opaque types for outside use and only keep using `TemplateBinding` internally. They can be different for\n// `attribute` and `on` contexts.\n// To make them opaque, a non-exported symbol is used, so it's not possible to accidentally create an instance outside.\ndeclare const AttributeBindingSymbol: unique symbol;\ndeclare const ListenerBindingSymbol: unique symbol;\n\nexport interface AttributeBinding { _opaqueAttributeBinding: typeof AttributeBindingSymbol }\nexport interface ListenerBinding { _opaqueListenerBinding: typeof ListenerBindingSymbol }\n\n/**\n * The return value of {@link ~Template.bind `Template.bind()`}. It provides `to()` and `if()`\n * methods to create the {@link module:utils/observablemixin~Observable observable} attribute and event bindings.\n */\nexport interface BindChain<TObservable> {\n\n\t/**\n\t * Binds an {@link module:utils/observablemixin~Observable observable} to either:\n\t *\n\t * * an HTML element attribute or a text node `textContent`, so it remains in sync with the observable\n\t * attribute as it changes,\n\t * * or an HTML element DOM event, so the DOM events are propagated through an observable.\n\t *\n\t * Some common use cases of `to()` bindings are presented below:\n\t *\n\t * ```ts\n\t * const bind = Template.bind( observable, emitter );\n\t *\n\t * new Template( {\n\t * \ttag: 'p',\n\t * \tattributes: {\n\t * \t\t// class=\"...\" attribute gets bound to `observable#a`\n\t * \t\tclass: bind.to( 'a' )\n\t * \t},\n\t * \tchildren: [\n\t * \t\t// <p>...</p> gets bound to observable#b; always `toUpperCase()`.\n\t * \t\t{\n\t * \t\t\ttext: bind.to( 'b', ( value, node ) => value.toUpperCase() )\n\t * \t\t}\n\t * \t],\n\t * \ton: {\n\t * \t\tclick: [\n\t * \t\t\t// An observable will fire \"clicked\" upon \"click\" in the DOM.\n\t * \t\t\tbind.to( 'clicked' ),\n\t *\n\t * \t\t\t// A custom callback will be executed upon \"click\" in the DOM.\n\t * \t\t\tbind.to( () => {\n\t * \t\t\t\t...\n\t * \t\t\t} )\n\t * \t\t]\n\t * \t}\n\t * } ).render();\n\t * ```\n\t *\n\t * Learn more about using `to()` in the {@link module:ui/template~TemplateValueSchema} and\n\t * {@link module:ui/template~TemplateListenerSchema}.\n\t *\n\t * @label ATTRIBUTE\n\t * @param attribute An attribute name of {@link module:utils/observablemixin~Observable}.\n\t */\n\tto<TAttribute extends keyof TObservable & string>(\n\t\tattribute: TAttribute\n\t): AttributeBinding & ListenerBinding;\n\n\t/**\n\t * Binds an {@link module:utils/observablemixin~Observable observable} to either:\n\t *\n\t * * an HTML element attribute or a text node `textContent`, so it remains in sync with the observable\n\t * attribute as it changes,\n\t * * or an HTML element DOM event, so the DOM events are propagated through an observable.\n\t *\n\t * Some common use cases of `to()` bindings are presented below:\n\t *\n\t * ```ts\n\t * const bind = Template.bind( observable, emitter );\n\t *\n\t * new Template( {\n\t * \ttag: 'p',\n\t * \tattributes: {\n\t * \t\t// class=\"...\" attribute gets bound to `observable#a`\n\t * \t\tclass: bind.to( 'a' )\n\t * \t},\n\t * \tchildren: [\n\t * \t\t// <p>...</p> gets bound to observable#b; always `toUpperCase()`.\n\t * \t\t{\n\t * \t\t\ttext: bind.to( 'b', ( value, node ) => value.toUpperCase() )\n\t * \t\t}\n\t * \t],\n\t * \ton: {\n\t * \t\tclick: [\n\t * \t\t\t// An observable will fire \"clicked\" upon \"click\" in the DOM.\n\t * \t\t\tbind.to( 'clicked' ),\n\t *\n\t * \t\t\t// A custom callback will be executed upon \"click\" in the DOM.\n\t * \t\t\tbind.to( () => {\n\t * \t\t\t\t...\n\t * \t\t\t} )\n\t * \t\t]\n\t * \t}\n\t * } ).render();\n\t * ```\n\t *\n\t * Learn more about using `to()` in the {@link module:ui/template~TemplateValueSchema} and\n\t * {@link module:ui/template~TemplateListenerSchema}.\n\t *\n\t * @label ATTRIBUTE_CALLBACK\n\t * @param attribute An attribute name of {@link module:utils/observablemixin~Observable}.\n\t * @param callback Allows for processing of the value. Accepts `Node` and `value` as arguments.\n\t */\n\tto<TAttribute extends keyof TObservable & string>(\n\t\tattribute: TAttribute,\n\t\tcallback: ( value: TObservable[ TAttribute ], node: Node ) => ( TemplateSimpleValue )\n\t): AttributeBinding;\n\n\t/**\n\t * Binds an {@link module:utils/observablemixin~Observable observable} to either:\n\t *\n\t * * an HTML element attribute or a text node `textContent`, so it remains in sync with the observable\n\t * attribute as it changes,\n\t * * or an HTML element DOM event, so the DOM events are propagated through an observable.\n\t *\n\t * Some common use cases of `to()` bindings are presented below:\n\t *\n\t * ```ts\n\t * const bind = Template.bind( observable, emitter );\n\t *\n\t * new Template( {\n\t * \ttag: 'p',\n\t * \tattributes: {\n\t * \t\t// class=\"...\" attribute gets bound to `observable#a`\n\t * \t\tclass: bind.to( 'a' )\n\t * \t},\n\t * \tchildren: [\n\t * \t\t// <p>...</p> gets bound to observable#b; always `toUpperCase()`.\n\t * \t\t{\n\t * \t\t\ttext: bind.to( 'b', ( value, node ) => value.toUpperCase() )\n\t * \t\t}\n\t * \t],\n\t * \ton: {\n\t * \t\tclick: [\n\t * \t\t\t// An observable will fire \"clicked\" upon \"click\" in the DOM.\n\t * \t\t\tbind.to( 'clicked' ),\n\t *\n\t * \t\t\t// A custom callback will be executed upon \"click\" in the DOM.\n\t * \t\t\tbind.to( () => {\n\t * \t\t\t\t...\n\t * \t\t\t} )\n\t * \t\t]\n\t * \t}\n\t * } ).render();\n\t * ```\n\t *\n\t * Learn more about using `to()` in the {@link module:ui/template~TemplateValueSchema} and\n\t * {@link module:ui/template~TemplateListenerSchema}.\n\t *\n\t * @label EVENT\n\t * @param eventNameOrCallback A DOM event name or an event callback.\n\t */\n\tto( eventNameOrCallback: string | ( ( domEvent: Event ) => void ) ): ListenerBinding;\n\n\t/**\n\t * Binds an {@link module:utils/observablemixin~Observable observable} to an HTML element attribute or a text\n\t * node `textContent` so it remains in sync with the observable attribute as it changes.\n\t *\n\t * Unlike {@link module:ui/template~BindChain#to}, it controls the presence of the attribute or `textContent`\n\t * depending on the \"falseness\" of an {@link module:utils/observablemixin~Observable} attribute.\n\t *\n\t * ```ts\n\t * const bind = Template.bind( observable, emitter );\n\t *\n\t * new Template( {\n\t * \ttag: 'input',\n\t * \tattributes: {\n\t * \t\t// <input checked> when `observable#a` is not undefined/null/false/''\n\t * \t\t// <input> when `observable#a` is undefined/null/false\n\t * \t\tchecked: bind.if( 'a' )\n\t * \t},\n\t * \tchildren: [\n\t * \t\t{\n\t * \t\t\t// <input>\"b-is-not-set\"</input> when `observable#b` is undefined/null/false/''\n\t * \t\t\t// <input></input> when `observable#b` is not \"falsy\"\n\t * \t\t\ttext: bind.if( 'b', 'b-is-not-set', ( value, node ) => !value )\n\t * \t\t}\n\t * \t]\n\t * } ).render();\n\t * ```\n\t *\n\t * Learn more about using `if()` in the {@link module:ui/template~TemplateValueSchema}.\n\t *\n\t * @param attribute An attribute name of {@link module:utils/observablemixin~Observable} used in the binding.\n\t * @param valueIfTrue Value set when the {@link module:utils/observablemixin~Observable} attribute is not\n\t * undefined/null/false/'' (empty string).\n\t * @param callback Allows for processing of the value. Accepts `Node` and `value` as arguments.\n\t */\n\tif<TAttribute extends keyof TObservable & string>(\n\t\tattribute: TAttribute,\n\t\tvalueIfTrue?: unknown,\n\t\tcallback?: ( value: TObservable[ TAttribute ], node: Node ) => ( boolean | FalsyValue )\n\t): AttributeBinding;\n}\n\n/**\n * The {@link module:ui/template~Template#_renderNode} configuration.\n */\nexport interface RenderData {\n\n\t/**\n\t * A node which is being rendered.\n\t */\n\tnode: HTMLElement | Text;\n\n\t/**\n\t * Tells {@link module:ui/template~Template#_renderNode} to render\n\t * children into `DocumentFragment` first and then append the fragment\n\t * to the parent element. It is a speed optimization.\n\t */\n\tintoFragment: boolean;\n\n\t/**\n\t * Indicates whether the {@link #node} has been provided by {@link module:ui/template~Template#apply}.\n\t */\n\tisApplying: boolean;\n\n\t/**\n\t * An object storing the data that helps {@link module:ui/template~Template#revert}\n\t * bringing back an element to its initial state, i.e. before\n\t * {@link module:ui/template~Template#apply} was called.\n\t */\n\trevertData?: RevertData;\n}\n\ninterface RevertData {\n\ttext?: string | null;\n\tchildren: Array<RevertData>;\n\tbindings: Array<Array<() => void>>;\n\tattributes: Record<string, string | null>;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/editorui/bodycollection\n */\n\n/* globals document */\n\nimport Template from '../template';\nimport ViewCollection from '../viewcollection';\nimport type View from '../view';\n\nimport { createElement, type Locale } from '@ckeditor/ckeditor5-utils';\n\n/**\n * This is a special {@link module:ui/viewcollection~ViewCollection} dedicated to elements that are detached\n * from the DOM structure of the editor, like panels, icons, etc.\n *\n * The body collection is available in the {@link module:ui/editorui/editoruiview~EditorUIView#body `editor.ui.view.body`} property.\n * Any plugin can add a {@link module:ui/view~View view} to this collection.\n * These views will render in a container placed directly in the `<body>` element.\n * The editor will detach and destroy this collection when the editor will be {@link module:core/editor/editor~Editor#destroy destroyed}.\n *\n * If you need to control the life cycle of the body collection on your own, you can create your own instance of this class.\n *\n * A body collection will render itself automatically in the DOM body element as soon as you call {@link ~BodyCollection#attachToDom}.\n * If you create multiple body collections, this class will create a special wrapper element in the DOM to limit the number of\n * elements created directly in the body and remove it when the last body collection will be\n * {@link ~BodyCollection#detachFromDom detached}.\n */\nexport default class BodyCollection extends ViewCollection {\n\t/**\n\t * The {@link module:core/editor/editor~Editor#locale editor's locale} instance.\n\t * See the view {@link module:ui/view~View#locale locale} property.\n\t */\n\tpublic readonly locale: Locale;\n\n\t/**\n\t * The element holding elements of the body region.\n\t */\n\tprivate _bodyCollectionContainer?: HTMLElement;\n\n\t/**\n\t * Creates a new instance of the {@link module:ui/editorui/bodycollection~BodyCollection}.\n\t *\n\t * @param locale The {@link module:core/editor/editor~Editor editor's locale} instance.\n\t * @param initialItems The initial items of the collection.\n\t */\n\tconstructor( locale: Locale, initialItems: Iterable<View> = [] ) {\n\t\tsuper( initialItems );\n\n\t\tthis.locale = locale;\n\t}\n\n\t/**\n\t * The element holding elements of the body region.\n\t */\n\tpublic get bodyCollectionContainer(): HTMLElement | undefined {\n\t\treturn this._bodyCollectionContainer;\n\t}\n\n\t/**\n\t * Attaches the body collection to the DOM body element. You need to execute this method to render the content of\n\t * the body collection.\n\t */\n\tpublic attachToDom(): void {\n\t\tthis._bodyCollectionContainer = new Template( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-reset_all',\n\t\t\t\t\t'ck-body',\n\t\t\t\t\t'ck-rounded-corners'\n\t\t\t\t],\n\t\t\t\tdir: this.locale.uiLanguageDirection\n\t\t\t},\n\t\t\tchildren: this\n\t\t} ).render() as HTMLElement;\n\n\t\tlet wrapper = document.querySelector( '.ck-body-wrapper' );\n\n\t\tif ( !wrapper ) {\n\t\t\twrapper = createElement( document, 'div', { class: 'ck-body-wrapper' } );\n\t\t\tdocument.body.appendChild( wrapper );\n\t\t}\n\n\t\twrapper.appendChild( this._bodyCollectionContainer );\n\t}\n\n\t/**\n\t * Detaches the collection from the DOM structure. Use this method when you do not need to use the body collection\n\t * anymore to clean-up the DOM structure.\n\t */\n\tpublic detachFromDom(): void {\n\t\tsuper.destroy();\n\n\t\tif ( this._bodyCollectionContainer ) {\n\t\t\tthis._bodyCollectionContainer.remove();\n\t\t}\n\n\t\tconst wrapper = document.querySelector( '.ck-body-wrapper' );\n\n\t\tif ( wrapper && wrapper.childElementCount == 0 ) {\n\t\t\twrapper.remove();\n\t\t}\n\t}\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./icon.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* global DOMParser */\n\n/**\n * @module ui/icon/iconview\n */\n\nimport View from '../view';\n\nimport type { ObservableChangeEvent } from '@ckeditor/ckeditor5-utils';\n\nimport '../../theme/components/icon/icon.css';\n\n/**\n * The icon view class.\n */\nexport default class IconView extends View {\n\t/**\n\t * The SVG source of the icon.\n\t *\n\t * @observable\n\t */\n\tdeclare public content: string | undefined;\n\n\t/**\n\t * This attribute specifies the boundaries to which the\n\t * icon content should stretch.\n\t *\n\t * @observable\n\t * @default '0 0 20 20'\n\t */\n\tdeclare public viewBox: string;\n\n\t/**\n\t * The fill color of the child `path.ck-icon__fill`.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tdeclare public fillColor: string;\n\n\t/**\n\t * When set true (default), all parts of the icon inherit the fill color from the CSS `color` property of the\n\t * icon's DOM parent.\n\t *\n\t * This effectively makes the icon monochromatic and allows it to change its fill color dynamically, for instance,\n\t * when a {@link module:ui/button/buttonview~ButtonView} displays an icon and it switches between different states\n\t * (pushed, hovered, etc.) the icon will follow along.\n\t *\n\t * **Note**: For the monochromatic icon to render properly, it must be made up of shapes that can be filled\n\t * with color instead of, for instance, paths with strokes. Be sure to use the *outline stroke* tool\n\t * (the name could be different in your vector graphics editor) before exporting your icon. Also, remove any\n\t * excess `fill=\"...\"` attributes that could break the color inheritance.\n\t *\n\t * **Note**: If you want to preserve the original look of your icon and disable dynamic color inheritance,\n\t * set this flag to `false`.\n\t *\n\t * @observable\n\t * @default true\n\t */\n\tdeclare public isColorInherited: boolean;\n\n\t/**\n\t * A list of presentational attributes that can be set on the `<svg>` element and should be preserved\n\t * when the icon {@link module:ui/icon/iconview~IconView#content content} is loaded.\n\t *\n\t * See the [specification](https://www.w3.org/TR/SVG/styling.html#TermPresentationAttribute) to learn more.\n\t */\n\tprivate static presentationalAttributeNames: Array<string> = [\n\t\t'alignment-baseline', 'baseline-shift', 'clip-path', 'clip-rule', 'color', 'color-interpolation',\n\t\t'color-interpolation-filters', 'color-rendering', 'cursor', 'direction', 'display', 'dominant-baseline', 'fill', 'fill-opacity',\n\t\t'fill-rule', 'filter', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style',\n\t\t'font-variant', 'font-weight', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start',\n\t\t'mask', 'opacity', 'overflow', 'paint-order', 'pointer-events', 'shape-rendering', 'stop-color', 'stop-opacity', 'stroke',\n\t\t'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width',\n\t\t'text-anchor', 'text-decoration', 'text-overflow', 'text-rendering', 'transform', 'unicode-bidi', 'vector-effect',\n\t\t'visibility', 'white-space', 'word-spacing', 'writing-mode'\n\t];\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor() {\n\t\tsuper();\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.set( 'content', '' );\n\t\tthis.set( 'viewBox', '0 0 20 20' );\n\t\tthis.set( 'fillColor', '' );\n\t\tthis.set( 'isColorInherited', true );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'svg',\n\t\t\tns: 'http://www.w3.org/2000/svg',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-icon',\n\n\t\t\t\t\t// Exclude icon internals from the CSS reset to allow rich (non-monochromatic) icons\n\t\t\t\t\t// (https://github.com/ckeditor/ckeditor5/issues/12599).\n\t\t\t\t\t'ck-reset_all-excluded',\n\n\t\t\t\t\t// The class to remove the dynamic color inheritance is toggleable\n\t\t\t\t\t// (https://github.com/ckeditor/ckeditor5/issues/12599).\n\t\t\t\t\tbind.if( 'isColorInherited', 'ck-icon_inherit-color' )\n\t\t\t\t],\n\t\t\t\tviewBox: bind.to( 'viewBox' )\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis._updateXMLContent();\n\t\tthis._colorFillPaths();\n\n\t\t// This is a hack for lack of innerHTML binding.\n\t\t// See: https://github.com/ckeditor/ckeditor5-ui/issues/99.\n\t\tthis.on<ObservableChangeEvent>( 'change:content', () => {\n\t\t\tthis._updateXMLContent();\n\t\t\tthis._colorFillPaths();\n\t\t} );\n\n\t\tthis.on<ObservableChangeEvent>( 'change:fillColor', () => {\n\t\t\tthis._colorFillPaths();\n\t\t} );\n\t}\n\n\t/**\n\t * Updates the {@link #element} with the value of {@link #content}.\n\t */\n\tprivate _updateXMLContent() {\n\t\tif ( this.content ) {\n\t\t\tconst parsed = new DOMParser().parseFromString( this.content.trim(), 'image/svg+xml' );\n\t\t\tconst svg = parsed.querySelector( 'svg' )!;\n\t\t\tconst viewBox = svg.getAttribute( 'viewBox' );\n\n\t\t\tif ( viewBox ) {\n\t\t\t\tthis.viewBox = viewBox;\n\t\t\t}\n\n\t\t\t// Preserve presentational attributes of the <svg> element from the source.\n\t\t\t// They can affect rendering of the entire icon (https://github.com/ckeditor/ckeditor5/issues/12597).\n\t\t\tfor ( const { name, value } of Array.from( svg.attributes ) ) {\n\t\t\t\tif ( IconView.presentationalAttributeNames.includes( name ) ) {\n\t\t\t\t\tthis.element!.setAttribute( name, value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twhile ( this.element!.firstChild ) {\n\t\t\t\tthis.element!.removeChild( this.element!.firstChild );\n\t\t\t}\n\n\t\t\twhile ( svg.childNodes.length > 0 ) {\n\t\t\t\tthis.element!.appendChild( svg.childNodes[ 0 ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fills all child `path.ck-icon__fill` with the `#fillColor`.\n\t */\n\tprivate _colorFillPaths() {\n\t\tif ( this.fillColor ) {\n\t\t\tthis.element!.querySelectorAll( '.ck-icon__fill' ).forEach( path => {\n\t\t\t\t( path as HTMLElement ).style.fill = this.fillColor;\n\t\t\t} );\n\t\t}\n\t}\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./button.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/button/buttonview\n */\n\nimport View from '../view';\nimport IconView from '../icon/iconview';\n\nimport type { TemplateDefinition } from '../template';\nimport type ViewCollection from '../viewcollection';\nimport type { default as Button, ButtonExecuteEvent } from './button';\n\nimport {\n\tenv,\n\tgetEnvKeystrokeText,\n\tuid,\n\tdelay,\n\ttype Locale,\n\ttype DelayedFunc\n} from '@ckeditor/ckeditor5-utils';\n\nimport '../../theme/components/button/button.css';\n\n/**\n * The button view class.\n *\n * ```ts\n * const view = new ButtonView();\n *\n * view.set( {\n * \tlabel: 'A button',\n * \tkeystroke: 'Ctrl+B',\n * \ttooltip: true,\n * \twithText: true\n * } );\n *\n * view.render();\n *\n * document.body.append( view.element );\n * ```\n */\nexport default class ButtonView extends View<HTMLButtonElement> implements Button {\n\t/**\n\t * Collection of the child views inside of the button {@link #element}.\n\t */\n\tpublic readonly children: ViewCollection;\n\n\t/**\n\t * Label of the button view. It is configurable using the {@link #label label attribute}.\n\t */\n\tpublic readonly labelView: View;\n\n\t/**\n\t * The icon view of the button. Will be added to {@link #children} when the\n\t * {@link #icon icon attribute} is defined.\n\t */\n\tpublic readonly iconView: IconView;\n\n\t/**\n\t * A view displaying the keystroke of the button next to the {@link #labelView label}.\n\t * Added to {@link #children} when the {@link #withKeystroke `withKeystroke` attribute}\n\t * is defined.\n\t */\n\tpublic readonly keystrokeView: View;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public class: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public labelStyle: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public icon: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public isEnabled: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public isOn: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public isVisible: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public isToggleable: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public keystroke: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public label: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public tabindex: number;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public tooltip: Button[ 'tooltip' ];\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public tooltipPosition: Button[ 'tooltipPosition' ];\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public type: Button[ 'type' ];\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public withText: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public withKeystroke: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public role: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public ariaChecked: boolean | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public ariaLabel?: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public ariaLabelledBy: string | undefined;\n\n\t/**\n\t * Tooltip of the button bound to the template.\n\t *\n\t * @see #tooltip\n\t * @see module:ui/button/buttonview~ButtonView#_getTooltipString\n\t * @internal\n\t * @observable\n\t */\n\tdeclare public _tooltipString: string;\n\n\t/**\n\t * Delayed focus function for focus handling in Safari.\n\t */\n\tprivate _focusDelayed: DelayedFunc<() => void> | null = null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\t\tconst ariaLabelUid = uid();\n\n\t\t// Implement the Button interface.\n\t\tthis.set( 'ariaChecked', undefined );\n\t\tthis.set( 'ariaLabel', undefined );\n\t\tthis.set( 'ariaLabelledBy', `ck-editor__aria-label_${ ariaLabelUid }` );\n\t\tthis.set( 'class', undefined );\n\t\tthis.set( 'labelStyle', undefined );\n\t\tthis.set( 'icon', undefined );\n\t\tthis.set( 'isEnabled', true );\n\t\tthis.set( 'isOn', false );\n\t\tthis.set( 'isVisible', true );\n\t\tthis.set( 'isToggleable', false );\n\t\tthis.set( 'keystroke', undefined );\n\t\tthis.set( 'label', undefined );\n\t\tthis.set( 'role', undefined );\n\t\tthis.set( 'tabindex', -1 );\n\t\tthis.set( 'tooltip', false );\n\t\tthis.set( 'tooltipPosition', 's' );\n\t\tthis.set( 'type', 'button' );\n\t\tthis.set( 'withText', false );\n\t\tthis.set( 'withKeystroke', false );\n\n\t\tthis.children = this.createCollection();\n\t\tthis.labelView = this._createLabelView();\n\n\t\tthis.iconView = new IconView();\n\t\tthis.iconView.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: 'ck-button__icon'\n\t\t\t}\n\t\t} );\n\n\t\tthis.keystrokeView = this._createKeystrokeView();\n\n\t\tthis.bind( '_tooltipString' ).to(\n\t\t\tthis, 'tooltip',\n\t\t\tthis, 'label',\n\t\t\tthis, 'keystroke',\n\t\t\tthis._getTooltipString.bind( this )\n\t\t);\n\n\t\tconst template: TemplateDefinition & { on: object } = {\n\t\t\ttag: 'button',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-button',\n\t\t\t\t\tbind.to( 'class' ),\n\t\t\t\t\tbind.if( 'isEnabled', 'ck-disabled', value => !value ),\n\t\t\t\t\tbind.if( 'isVisible', 'ck-hidden', value => !value ),\n\t\t\t\t\tbind.to( 'isOn', value => value ? 'ck-on' : 'ck-off' ),\n\t\t\t\t\tbind.if( 'withText', 'ck-button_with-text' ),\n\t\t\t\t\tbind.if( 'withKeystroke', 'ck-button_with-keystroke' )\n\t\t\t\t],\n\t\t\t\trole: bind.to( 'role' ),\n\t\t\t\ttype: bind.to( 'type', value => value ? value : 'button' ),\n\t\t\t\ttabindex: bind.to( 'tabindex' ),\n\t\t\t\t'aria-label': bind.to( 'ariaLabel' ),\n\t\t\t\t'aria-labelledby': bind.to( 'ariaLabelledBy' ),\n\t\t\t\t'aria-disabled': bind.if( 'isEnabled', true, value => !value ),\n\t\t\t\t'aria-checked': bind.to( 'isOn' ),\n\t\t\t\t'aria-pressed': bind.to( 'isOn', value => this.isToggleable ? String( !!value ) : false ),\n\t\t\t\t'data-cke-tooltip-text': bind.to( '_tooltipString' ),\n\t\t\t\t'data-cke-tooltip-position': bind.to( 'tooltipPosition' )\n\t\t\t},\n\n\t\t\tchildren: this.children,\n\n\t\t\ton: {\n\t\t\t\tclick: bind.to( evt => {\n\t\t\t\t\t// We can't make the button disabled using the disabled attribute, because it won't be focusable.\n\t\t\t\t\t// Though, shouldn't this condition be moved to the button controller?\n\t\t\t\t\tif ( this.isEnabled ) {\n\t\t\t\t\t\tthis.fire<ButtonExecuteEvent>( 'execute' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Prevent the default when button is disabled, to block e.g.\n\t\t\t\t\t\t// automatic form submitting. See ckeditor/ckeditor5-link#74.\n\t\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t}\n\t\t};\n\n\t\t// On Safari we have to force the focus on a button on click as it's the only browser\n\t\t// that doesn't do that automatically. See #12115.\n\t\tif ( env.isSafari ) {\n\t\t\tif ( !this._focusDelayed ) {\n\t\t\t\tthis._focusDelayed = delay( () => this.focus(), 0 );\n\t\t\t}\n\n\t\t\ttemplate.on.mousedown = bind.to( () => {\n\t\t\t\tthis._focusDelayed!();\n\t\t\t} );\n\n\t\t\ttemplate.on.mouseup = bind.to( () => {\n\t\t\t\tthis._focusDelayed!.cancel();\n\t\t\t} );\n\t\t}\n\n\t\tthis.setTemplate( template );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tif ( this.icon ) {\n\t\t\tthis.iconView.bind( 'content' ).to( this, 'icon' );\n\t\t\tthis.children.add( this.iconView );\n\t\t}\n\n\t\tthis.children.add( this.labelView );\n\n\t\tif ( this.withKeystroke && this.keystroke ) {\n\t\t\tthis.children.add( this.keystrokeView );\n\t\t}\n\t}\n\n\t/**\n\t * Focuses the {@link #element} of the button.\n\t */\n\tpublic focus(): void {\n\t\tthis.element!.focus();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tif ( this._focusDelayed ) {\n\t\t\tthis._focusDelayed.cancel();\n\t\t}\n\n\t\tsuper.destroy();\n\t}\n\n\t/**\n\t * Creates a label view instance and binds it with button attributes.\n\t */\n\tprivate _createLabelView() {\n\t\tconst labelView = new View();\n\t\tconst bind = this.bindTemplate;\n\n\t\tlabelView.setTemplate( {\n\t\t\ttag: 'span',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-button__label'\n\t\t\t\t],\n\t\t\t\tstyle: bind.to( 'labelStyle' ),\n\t\t\t\tid: this.ariaLabelledBy\n\t\t\t},\n\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttext: bind.to( 'label' )\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\n\t\treturn labelView;\n\t}\n\n\t/**\n\t * Creates a view that displays a keystroke next to a {@link #labelView label }\n\t * and binds it with button attributes.\n\t */\n\tprivate _createKeystrokeView() {\n\t\tconst keystrokeView = new View();\n\n\t\tkeystrokeView.setTemplate( {\n\t\t\ttag: 'span',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-button__keystroke'\n\t\t\t\t]\n\t\t\t},\n\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttext: this.bindTemplate.to( 'keystroke', text => getEnvKeystrokeText( text! ) )\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\n\t\treturn keystrokeView;\n\t}\n\n\t/**\n\t * Gets the text for the tooltip from the combination of\n\t * {@link #tooltip}, {@link #label} and {@link #keystroke} attributes.\n\t *\n\t * @see #tooltip\n\t * @see #_tooltipString\n\t * @param tooltip Button tooltip.\n\t * @param label Button label.\n\t * @param keystroke Button keystroke.\n\t */\n\tprivate _getTooltipString(\n\t\ttooltip: Button[ 'tooltip' ],\n\t\tlabel: string | undefined,\n\t\tkeystroke: string | undefined\n\t): string {\n\t\tif ( tooltip ) {\n\t\t\tif ( typeof tooltip == 'string' ) {\n\t\t\t\treturn tooltip;\n\t\t\t} else {\n\t\t\t\tif ( keystroke ) {\n\t\t\t\t\tkeystroke = getEnvKeystrokeText( keystroke );\n\t\t\t\t}\n\n\t\t\t\tif ( tooltip instanceof Function ) {\n\t\t\t\t\treturn tooltip( label!, keystroke );\n\t\t\t\t} else {\n\t\t\t\t\treturn `${ label }${ keystroke ? ` (${ keystroke })` : '' }`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\t}\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./switchbutton.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/button/switchbuttonview\n */\n\nimport View from '../view';\nimport ButtonView from './buttonview';\n\nimport type { Locale } from '@ckeditor/ckeditor5-utils';\n\nimport '../../theme/components/button/switchbutton.css';\n\n/**\n * The switch button view class.\n *\n * ```ts\n * const view = new SwitchButtonView();\n *\n * view.set( {\n * \twithText: true,\n * \tlabel: 'Switch me!'\n * } );\n *\n * view.render();\n *\n * document.body.append( view.element );\n * ```\n */\nexport default class SwitchButtonView extends ButtonView {\n\t/**\n\t * The toggle switch of the button.\n\t */\n\tpublic readonly toggleSwitchView: View;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.isToggleable = true;\n\t\tthis.toggleSwitchView = this._createToggleView();\n\n\t\tthis.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: 'ck-switchbutton'\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis.children.add( this.toggleSwitchView );\n\t}\n\n\t/**\n\t * Creates a toggle child view.\n\t */\n\tprivate _createToggleView() {\n\t\tconst toggleSwitchView = new View();\n\n\t\ttoggleSwitchView.setTemplate( {\n\t\t\ttag: 'span',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-button__toggle'\n\t\t\t\t]\n\t\t\t},\n\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttag: 'span',\n\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: [\n\t\t\t\t\t\t\t'ck',\n\t\t\t\t\t\t\t'ck-button__toggle__inner'\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\n\t\treturn toggleSwitchView;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/colorgrid/utils\n */\n\nimport type { Locale } from '@ckeditor/ckeditor5-utils';\n\nexport type ColorOption = string | {\n\tcolor: string;\n\tlabel?: string;\n\thasBorder?: boolean;\n};\n\nexport interface NormalizedColorOption {\n\tmodel: string;\n\tlabel: string;\n\thasBorder: boolean;\n\tview: {\n\t\tname: string;\n\t\tstyles: {\n\t\t\tcolor: string;\n\t\t};\n\t};\n}\n\n/**\n * Returns color configuration options as defined in `editor.config.(fontColor|fontBackgroundColor).colors` or\n * `editor.config.table.(tableProperties|tableCellProperties).(background|border).colors\n * but processed to account for editor localization in the correct language.\n *\n * Note: The reason behind this method is that there is no way to use {@link module:utils/locale~Locale#t}\n * when the user configuration is defined because the editor does not exist yet.\n *\n * @param locale The {@link module:core/editor/editor~Editor#locale} instance.\n */\nexport function getLocalizedColorOptions(\n\tlocale: Locale,\n\toptions: Array<NormalizedColorOption>\n): Array<NormalizedColorOption> {\n\tconst t = locale.t;\n\tconst localizedColorNames: Record<string, string | undefined> = {\n\t\tBlack: t( 'Black' ),\n\t\t'Dim grey': t( 'Dim grey' ),\n\t\tGrey: t( 'Grey' ),\n\t\t'Light grey': t( 'Light grey' ),\n\t\tWhite: t( 'White' ),\n\t\tRed: t( 'Red' ),\n\t\tOrange: t( 'Orange' ),\n\t\tYellow: t( 'Yellow' ),\n\t\t'Light green': t( 'Light green' ),\n\t\tGreen: t( 'Green' ),\n\t\tAquamarine: t( 'Aquamarine' ),\n\t\tTurquoise: t( 'Turquoise' ),\n\t\t'Light blue': t( 'Light blue' ),\n\t\tBlue: t( 'Blue' ),\n\t\tPurple: t( 'Purple' )\n\t};\n\n\treturn options.map( colorOption => {\n\t\tconst label = localizedColorNames[ colorOption.label ];\n\n\t\tif ( label && label != colorOption.label ) {\n\t\t\tcolorOption.label = label;\n\t\t}\n\n\t\treturn colorOption;\n\t} );\n}\n\n/**\n * Creates a unified color definition object from color configuration options.\n * The object contains the information necessary to both render the UI and initialize the conversion.\n */\nexport function normalizeColorOptions( options: Array<ColorOption> ): Array<NormalizedColorOption> {\n\treturn options\n\t\t.map( normalizeSingleColorDefinition )\n\t\t.filter( option => !!option );\n}\n\n/**\n * Creates a normalized color definition from the user-defined configuration.\n * The \"normalization\" means it will create full\n * {@link module:ui/colorgrid/colorgridview~ColorDefinition `ColorDefinition-like`}\n * object for string values, and add a `view` property, for each definition.\n */\nexport function normalizeSingleColorDefinition( color: ColorOption ): NormalizedColorOption {\n\tif ( typeof color === 'string' ) {\n\t\treturn {\n\t\t\tmodel: color,\n\t\t\tlabel: color,\n\t\t\thasBorder: false,\n\t\t\tview: {\n\t\t\t\tname: 'span',\n\t\t\t\tstyles: {\n\t\t\t\t\tcolor\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} else {\n\t\treturn {\n\t\t\tmodel: color.color,\n\t\t\tlabel: color.label || color.color,\n\t\t\thasBorder: color.hasBorder === undefined ? false : color.hasBorder,\n\t\t\tview: {\n\t\t\t\tname: 'span',\n\t\t\t\tstyles: {\n\t\t\t\t\tcolor: `${ color.color }`\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/colorgrid/colortileview\n */\n\nimport ButtonView from '../button/buttonview';\n\nimport type { Locale } from '@ckeditor/ckeditor5-utils';\n\nimport checkIcon from '../../theme/icons/color-tile-check.svg';\n\n/**\n * This class represents a single color tile in the {@link module:ui/colorgrid/colorgridview~ColorGridView}.\n */\nexport default class ColorTileView extends ButtonView {\n\t/**\n\t * String representing a color shown as tile's background.\n\t */\n\tdeclare public color: string | undefined;\n\n\t/**\n\t * A flag that toggles a special CSS class responsible for displaying\n\t * a border around the button.\n\t */\n\tdeclare public hasBorder: boolean;\n\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.set( 'color', undefined );\n\t\tthis.set( 'hasBorder', false );\n\n\t\tthis.icon = checkIcon;\n\n\t\tthis.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tstyle: {\n\t\t\t\t\tbackgroundColor: bind.to( 'color' )\n\t\t\t\t},\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-color-grid__tile',\n\t\t\t\t\tbind.if( 'hasBorder', 'ck-color-selector__color-tile_bordered' )\n\t\t\t\t]\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis.iconView.fillColor = 'hsl(0, 0%, 100%)';\n\t}\n}\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path class=\\\"ck-icon__fill\\\" d=\\\"M16.935 5.328a2 2 0 0 1 0 2.829l-7.778 7.778a2 2 0 0 1-2.829 0L3.5 13.107a1.999 1.999 0 1 1 2.828-2.829l.707.707a1 1 0 0 0 1.414 0l5.658-5.657a2 2 0 0 1 2.828 0z\\\"/><path d=\\\"M14.814 6.035 8.448 12.4a1 1 0 0 1-1.414 0l-1.413-1.415A1 1 0 1 0 4.207 12.4l2.829 2.829a1 1 0 0 0 1.414 0l7.778-7.778a1 1 0 1 0-1.414-1.415z\\\"/></svg>\";","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./colorgrid.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/colorgrid/colorgridview\n */\n\nimport View from '../view';\nimport ColorTileView from './colortileview';\nimport addKeyboardHandlingForGrid from '../bindings/addkeyboardhandlingforgrid';\n\nimport type { ButtonExecuteEvent } from '../button/button';\nimport type DropdownPanelFocusable from '../dropdown/dropdownpanelfocusable';\nimport type ViewCollection from '../viewcollection';\n\nimport {\n\tFocusTracker,\n\tKeystrokeHandler,\n\ttype CollectionAddEvent,\n\ttype CollectionRemoveEvent,\n\ttype Locale,\n\ttype ObservableChangeEvent\n} from '@ckeditor/ckeditor5-utils';\n\nimport '../../theme/components/colorgrid/colorgrid.css';\n\n/**\n * A grid of {@link module:ui/colorgrid/colortileview~ColorTileView color tiles}.\n */\nexport default class ColorGridView extends View implements DropdownPanelFocusable {\n\t/**\n\t * A number of columns for the tiles grid.\n\t */\n\tpublic readonly columns: number;\n\n\t/**\n\t * Collection of the child tile views.\n\t */\n\tpublic readonly items: ViewCollection<ColorTileView>;\n\n\t/**\n\t * Tracks information about DOM focus in the grid.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * Instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * The color of the currently selected color tile in {@link #items}.\n\t *\n\t * @observable\n\t */\n\tdeclare public selectedColor: string | undefined | null;\n\n\t/**\n\t * Creates an instance of a color grid containing {@link module:ui/colorgrid/colortileview~ColorTileView tiles}.\n\t *\n\t * @fires execute\n\t * @param locale The localization services instance.\n\t * @param options Component configuration\n\t * @param options.colorDefinitions Array with definitions\n\t * required to create the {@link module:ui/colorgrid/colortileview~ColorTileView tiles}.\n\t * @param options.columns A number of columns to display the tiles.\n\t */\n\tconstructor(\n\t\tlocale?: Locale,\n\t\toptions?: {\n\t\t\tcolorDefinitions?: Array<ColorDefinition>;\n\t\t\tcolumns?: number;\n\t\t}\n\t) {\n\t\tsuper( locale );\n\n\t\tconst colorDefinitions = options && options.colorDefinitions ? options.colorDefinitions : [];\n\n\t\tthis.columns = options && options.columns ? options.columns : 5;\n\n\t\tconst viewStyleAttribute = {\n\t\t\tgridTemplateColumns: `repeat( ${ this.columns }, 1fr)`\n\t\t};\n\n\t\tthis.set( 'selectedColor', undefined );\n\n\t\tthis.items = this.createCollection();\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\n\t\tthis.items.on<CollectionAddEvent<ColorTileView>>( 'add', ( evt, colorTile ) => {\n\t\t\tcolorTile.isOn = colorTile.color === this.selectedColor;\n\t\t} );\n\n\t\tcolorDefinitions.forEach( color => {\n\t\t\tconst colorTile = new ColorTileView();\n\n\t\t\tcolorTile.set( {\n\t\t\t\tcolor: color.color,\n\t\t\t\tlabel: color.label,\n\t\t\t\ttooltip: true,\n\t\t\t\thasBorder: color.options.hasBorder\n\t\t\t} );\n\n\t\t\tcolorTile.on<ButtonExecuteEvent>( 'execute', () => {\n\t\t\t\tthis.fire<ColorGridViewExecuteEvent>( 'execute', {\n\t\t\t\t\tvalue: color.color,\n\t\t\t\t\thasBorder: color.options.hasBorder,\n\t\t\t\t\tlabel: color.label\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tthis.items.add( colorTile );\n\t\t} );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tchildren: this.items,\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-color-grid'\n\t\t\t\t],\n\t\t\t\tstyle: viewStyleAttribute\n\t\t\t}\n\t\t} );\n\n\t\tthis.on<ObservableChangeEvent<string | undefined>>( 'change:selectedColor', ( evt, name, selectedColor ) => {\n\t\t\tfor ( const item of this.items ) {\n\t\t\t\titem.isOn = item.color === selectedColor;\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Focuses the first focusable in {@link #items}.\n\t */\n\tpublic focus(): void {\n\t\tif ( this.items.length ) {\n\t\t\tthis.items.first!.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Focuses the last focusable in {@link #items}.\n\t */\n\tpublic focusLast(): void {\n\t\tif ( this.items.length ) {\n\t\t\tthis.items.last!.focus();\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\t// Items added before rendering should be known to the #focusTracker.\n\t\tfor ( const item of this.items ) {\n\t\t\tthis.focusTracker.add( item.element! );\n\t\t}\n\n\t\tthis.items.on<CollectionAddEvent<ColorTileView>>( 'add', ( evt, item ) => {\n\t\t\tthis.focusTracker.add( item.element! );\n\t\t} );\n\n\t\tthis.items.on<CollectionRemoveEvent<ColorTileView>>( 'remove', ( evt, item ) => {\n\t\t\tthis.focusTracker.remove( item.element! );\n\t\t} );\n\n\t\t// Start listening for the keystrokes coming from #element.\n\t\tthis.keystrokes.listenTo( this.element! );\n\n\t\taddKeyboardHandlingForGrid( {\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tgridItems: this.items,\n\t\t\tnumberOfColumns: this.columns,\n\t\t\tuiLanguageDirection: this.locale && this.locale.uiLanguageDirection\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n}\n\n/**\n * A color definition used to create a {@link module:ui/colorgrid/colortileview~ColorTileView}.\n *\n * ```json\n * {\n * \tcolor: 'hsl(0, 0%, 75%)',\n * \tlabel: 'Light Grey',\n * \toptions: {\n * \t\thasBorder: true\n * \t}\n * }\n * ```\n */\nexport interface ColorDefinition {\n\n\t/**\n\t * String representing a color.\n\t * It is used as value of background-color style in {@link module:ui/colorgrid/colortileview~ColorTileView}.\n\t */\n\tcolor: string;\n\n\t/**\n\t * String used as label for {@link module:ui/colorgrid/colortileview~ColorTileView}.\n\t */\n\tlabel: string;\n\n\t/**\n\t * Additional options passed to create a {@link module:ui/colorgrid/colortileview~ColorTileView}.\n\t */\n\toptions: {\n\n\t\t/**\n\t\t * A flag that indicates if special a CSS class should be added\n\t\t * to {@link module:ui/colorgrid/colortileview~ColorTileView}, which renders a border around it.\n\t\t */\n\t\thasBorder: boolean;\n\t};\n}\n\n/**\n * Fired when the `ColorTileView` for the picked item is executed.\n *\n * @eventName ~ColorGridView#execute\n * @param data Additional information about the event.\n*/\nexport type ColorGridViewExecuteEvent = {\n\tname: 'execute';\n\targs: [ data: ColorGridViewExecuteEventData ];\n};\n\n/**\n * The data of {@link ~ColorGridViewExecuteEvent execute event}.\n */\nexport interface ColorGridViewExecuteEventData {\n\n\t/**\n\t * The value of the selected color ({@link module:ui/colorgrid/colorgridview~ColorDefinition#color `color.color`}).\n\t */\n\tvalue: string;\n\n\t/**\n\t * The `hasBorder` property of the selected color\n\t * ({@link module:ui/colorgrid/colorgridview~ColorDefinition#options `color.options.hasBorder`}).\n\t */\n\thasBorder: boolean;\n\n\t/**\n\t * The label of the selected color ({@link module:ui/colorgrid/colorgridview~ColorDefinition#label `color.label`})\n\t */\n\tlabel: string;\n}\n","/**\r\n * @module color-parse\r\n */\r\nimport names from 'color-name'\r\n\r\nexport default parse\r\n\r\n/**\r\n * Base hues\r\n * http://dev.w3.org/csswg/css-color/#typedef-named-hue\r\n */\r\n//FIXME: use external hue detector\r\nvar baseHues = {\r\n\tred: 0,\r\n\torange: 60,\r\n\tyellow: 120,\r\n\tgreen: 180,\r\n\tblue: 240,\r\n\tpurple: 300\r\n}\r\n\r\n/**\r\n * Parse color from the string passed\r\n *\r\n * @return {Object} A space indicator `space`, an array `values` and `alpha`\r\n */\r\nfunction parse (cstr) {\r\n\tvar m, parts = [], alpha = 1, space\r\n\r\n\tif (typeof cstr === 'string') {\r\n\t\t//keyword\r\n\t\tif (names[cstr]) {\r\n\t\t\tparts = names[cstr].slice()\r\n\t\t\tspace = 'rgb'\r\n\t\t}\r\n\r\n\t\t//reserved words\r\n\t\telse if (cstr === 'transparent') {\r\n\t\t\talpha = 0\r\n\t\t\tspace = 'rgb'\r\n\t\t\tparts = [0,0,0]\r\n\t\t}\r\n\r\n\t\t//hex\r\n\t\telse if (/^#[A-Fa-f0-9]+$/.test(cstr)) {\r\n\t\t\tvar base = cstr.slice(1)\r\n\t\t\tvar size = base.length\r\n\t\t\tvar isShort = size <= 4\r\n\t\t\talpha = 1\r\n\r\n\t\t\tif (isShort) {\r\n\t\t\t\tparts = [\r\n\t\t\t\t\tparseInt(base[0] + base[0], 16),\r\n\t\t\t\t\tparseInt(base[1] + base[1], 16),\r\n\t\t\t\t\tparseInt(base[2] + base[2], 16)\r\n\t\t\t\t]\r\n\t\t\t\tif (size === 4) {\r\n\t\t\t\t\talpha = parseInt(base[3] + base[3], 16) / 255\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tparts = [\r\n\t\t\t\t\tparseInt(base[0] + base[1], 16),\r\n\t\t\t\t\tparseInt(base[2] + base[3], 16),\r\n\t\t\t\t\tparseInt(base[4] + base[5], 16)\r\n\t\t\t\t]\r\n\t\t\t\tif (size === 8) {\r\n\t\t\t\t\talpha = parseInt(base[6] + base[7], 16) / 255\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!parts[0]) parts[0] = 0\r\n\t\t\tif (!parts[1]) parts[1] = 0\r\n\t\t\tif (!parts[2]) parts[2] = 0\r\n\r\n\t\t\tspace = 'rgb'\r\n\t\t}\r\n\r\n\t\t//color space\r\n\t\telse if (m = /^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\\s*\\(([^\\)]*)\\)/.exec(cstr)) {\r\n\t\t\tvar name = m[1]\r\n\t\t\tvar isRGB = name === 'rgb'\r\n\t\t\tvar base = name.replace(/a$/, '')\r\n\t\t\tspace = base\r\n\t\t\tvar size = base === 'cmyk' ? 4 : base === 'gray' ? 1 : 3\r\n\t\t\tparts = m[2].trim()\r\n\t\t\t\t.split(/\\s*[,\\/]\\s*|\\s+/)\r\n\t\t\t\t.map(function (x, i) {\r\n\t\t\t\t\t//<percentage>\r\n\t\t\t\t\tif (/%$/.test(x)) {\r\n\t\t\t\t\t\t//alpha\r\n\t\t\t\t\t\tif (i === size)\treturn parseFloat(x) / 100\r\n\t\t\t\t\t\t//rgb\r\n\t\t\t\t\t\tif (base === 'rgb') return parseFloat(x) * 255 / 100\r\n\t\t\t\t\t\treturn parseFloat(x)\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//hue\r\n\t\t\t\t\telse if (base[i] === 'h') {\r\n\t\t\t\t\t\t//<deg>\r\n\t\t\t\t\t\tif (/deg$/.test(x)) {\r\n\t\t\t\t\t\t\treturn parseFloat(x)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t//<base-hue>\r\n\t\t\t\t\t\telse if (baseHues[x] !== undefined) {\r\n\t\t\t\t\t\t\treturn baseHues[x]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn parseFloat(x)\r\n\t\t\t\t})\r\n\r\n\t\t\tif (name === base) parts.push(1)\r\n\t\t\talpha = (isRGB) ? 1 : (parts[size] === undefined) ? 1 : parts[size]\r\n\t\t\tparts = parts.slice(0, size)\r\n\t\t}\r\n\r\n\t\t//named channels case\r\n\t\telse if (cstr.length > 10 && /[0-9](?:\\s|\\/)/.test(cstr)) {\r\n\t\t\tparts = cstr.match(/([0-9]+)/g).map(function (value) {\r\n\t\t\t\treturn parseFloat(value)\r\n\t\t\t})\r\n\r\n\t\t\tspace = cstr.match(/([a-z])/ig).join('').toLowerCase()\r\n\t\t}\r\n\t}\r\n\r\n\t//numeric case\r\n\telse if (!isNaN(cstr)) {\r\n\t\tspace = 'rgb'\r\n\t\tparts = [cstr >>> 16, (cstr & 0x00ff00) >>> 8, cstr & 0x0000ff]\r\n\t}\r\n\r\n\t//array-like\r\n\telse if (Array.isArray(cstr) || cstr.length) {\r\n\t\tparts = [cstr[0], cstr[1], cstr[2]]\r\n\t\tspace = 'rgb'\r\n\t\talpha = cstr.length === 4 ? cstr[3] : 1\r\n\t}\r\n\r\n\t//object case - detects css cases of rgb and hsl\r\n\telse if (cstr instanceof Object) {\r\n\t\tif (cstr.r != null || cstr.red != null || cstr.R != null) {\r\n\t\t\tspace = 'rgb'\r\n\t\t\tparts = [\r\n\t\t\t\tcstr.r || cstr.red || cstr.R || 0,\r\n\t\t\t\tcstr.g || cstr.green || cstr.G || 0,\r\n\t\t\t\tcstr.b || cstr.blue || cstr.B || 0\r\n\t\t\t]\r\n\t\t}\r\n\t\telse {\r\n\t\t\tspace = 'hsl'\r\n\t\t\tparts = [\r\n\t\t\t\tcstr.h || cstr.hue || cstr.H || 0,\r\n\t\t\t\tcstr.s || cstr.saturation || cstr.S || 0,\r\n\t\t\t\tcstr.l || cstr.lightness || cstr.L || cstr.b || cstr.brightness\r\n\t\t\t]\r\n\t\t}\r\n\r\n\t\talpha = cstr.a || cstr.alpha || cstr.opacity || 1\r\n\r\n\t\tif (cstr.opacity != null) alpha /= 100\r\n\t}\r\n\r\n\treturn {\r\n\t\tspace: space,\r\n\t\tvalues: parts,\r\n\t\talpha: alpha\r\n\t}\r\n}\r\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/colorpicker/utils\n */\n\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n\n// There are no available types for 'color-parse' module.\n// @ts-ignore\nimport { default as parse } from 'color-parse';\nimport * as convert from 'color-convert';\nimport type { RGB, HSL, HSV, HWB, CMYK, XYZ, LAB, LCH, HEX, KEYWORD, ANSI16, ANSI256, HCG, APPLE, GRAY } from 'color-convert/conversions';\n\n/**\n * Color formats handled by color converter.\n */\nexport type ColorPickerOutputFormat = 'hex' | 'rgb' | 'hsl' | 'hwb' | 'lab' | 'lch';\n\n/**\n * Configuration of the color picker feature.\n *\n * It can be forced to apply colors in the editor in a particular format.\n *\n * @default `{\n * \tformat: 'hsl'\n * }`\n */\nexport type ColorPickerConfig = {\n\tformat?: ColorPickerOutputFormat;\n};\n\n/**\n * Configuration of the color picker view.\n *\n * It can be used to enforce a particular color format or hide the color input.\n */\nexport type ColorPickerViewConfig = ColorPickerConfig & {\n\thideInput?: boolean;\n};\n\n/**\n * Parses and converts the color string to requested format. Handles variety of color spaces\n * like `hsl`, `hex` or `rgb`.\n *\n * @param color\n * @returns A color string.\n */\nexport function convertColor( color: string, outputFormat: ColorPickerOutputFormat ): string {\n\tif ( !color ) {\n\t\treturn '';\n\t}\n\n\tconst colorObject = parseColorString( color );\n\n\tif ( !colorObject ) {\n\t\treturn '';\n\t}\n\n\tif ( colorObject.space === outputFormat ) {\n\t\treturn color;\n\t}\n\n\tif ( !canConvertParsedColor( colorObject ) ) {\n\t\treturn '';\n\t}\n\n\tconst fromColorSpace = ( convert as Conversion )[ colorObject.space ];\n\tconst toColorSpace = fromColorSpace[ outputFormat ];\n\n\tif ( !toColorSpace ) {\n\t\treturn '';\n\t}\n\n\tconst convertedColorChannels = toColorSpace( colorObject.space === 'hex' ? colorObject.hexValue : colorObject.values );\n\n\treturn formatColorOutput( convertedColorChannels, outputFormat );\n}\n\n/**\n * Converts a color string to hex format.\n *\n * @param color\n * @returns A color string.\n */\nexport function convertToHex( color: string ): string {\n\tif ( !color ) {\n\t\treturn '';\n\t}\n\n\tconst colorObject = parseColorString( color );\n\n\tif ( !colorObject ) {\n\t\treturn '#000';\n\t}\n\n\tif ( colorObject.space === 'hex' ) {\n\t\treturn colorObject.hexValue;\n\t}\n\n\treturn convertColor( color, 'hex' );\n}\n\n/**\n * Formats the passed color channels according to the requested format.\n *\n * @param values\n * @param format\n * @returns A color string.\n */\nfunction formatColorOutput( values: FormatTableColor, format: ColorPickerOutputFormat ): string {\n\tswitch ( format ) {\n\t\tcase 'hex': return `#${ values }`;\n\t\tcase 'rgb': return `rgb( ${ values[ 0 ] }, ${ values[ 1 ] }, ${ values[ 2 ] } )`;\n\t\tcase 'hsl': return `hsl( ${ values[ 0 ] }, ${ values[ 1 ] }%, ${ values[ 2 ] }% )`;\n\t\tcase 'hwb': return `hwb( ${ values[ 0 ] }, ${ values[ 1 ] }, ${ values[ 2 ] } )`;\n\t\tcase 'lab': return `lab( ${ values[ 0 ] }% ${ values[ 1 ] } ${ values[ 2 ] } )`;\n\t\tcase 'lch': return `lch( ${ values[ 0 ] }% ${ values[ 1 ] } ${ values[ 2 ] } )`;\n\n\t\tdefault: return '';\n\t}\n}\n\ntype FormatTableColor = HEX | RGB | HSL | HWB | LAB | LCH;\ntype ConversionFunctionInput = RGB | HSL | HSV | HWB | CMYK | XYZ | LAB | LCH | HEX | KEYWORD | ANSI16 | ANSI256 | HCG | APPLE | GRAY;\ntype ConversionInputSpaces = typeof convert;\ntype ConversionFunction = ( value: ConversionFunctionInput ) => FormatTableColor;\ntype Conversion = Record<keyof ConversionInputSpaces, Partial<Record<ColorPickerOutputFormat, ConversionFunction>>>;\n\ntype ParserColorSpaces =\n\t'rgb' | 'hsl' | 'hsv' | 'hsb' | 'hwb' | 'cmy' | 'cmyk' | 'xyz' | 'xyy' | 'gray' | 'lab' | 'lch' | 'lchu' | 'lchv' | 'lchuv' |\n\t'luv' | 'yuv' | 'lms' | 'hex';\n\ntype ParsedColor<T extends ParserColorSpaces> = {\n\treadonly space: T;\n\treadonly alpha: number;\n\treadonly values: T extends 'cmyk' ? [ number, number, number, number ] : [ number, number, number ];\n\treadonly hexValue: T extends 'hex' ? string : never;\n};\n\ntype ConvertableParsedColor = ParsedColor<ParserColorSpaces> & {\n\treadonly space: keyof ConversionInputSpaces;\n};\n\nfunction parseColorString( colorString: string ): ParsedColor<ParserColorSpaces> | null {\n\t// Parser library treats `hex` format as belonging to `rgb` space | which messes up further conversion.\n\t// Let's parse such strings on our own.\n\tif ( colorString.startsWith( '#' ) ) {\n\t\tconst parsedHex = parse( colorString );\n\n\t\treturn {\n\t\t\tspace: 'hex',\n\t\t\tvalues: parsedHex.values,\n\t\t\thexValue: colorString,\n\t\t\talpha: parsedHex.alpha\n\t\t};\n\t}\n\n\tconst parsed = parse( colorString );\n\n\tif ( !parsed.space ) {\n\t\treturn null;\n\t}\n\n\treturn parsed;\n}\n\nfunction canConvertParsedColor( parsedColor: ParsedColor<ParserColorSpaces> ): parsedColor is ConvertableParsedColor {\n\treturn Object.keys( convert ).includes( parsedColor.space );\n}\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./label.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/label/labelview\n */\n\nimport View from '../view';\n\nimport { uid, type Locale } from '@ckeditor/ckeditor5-utils';\n\nimport '../../theme/components/label/label.css';\n\n/**\n * The label view class.\n */\nexport default class LabelView extends View {\n\t/**\n\t * An unique id of the label. It can be used by other UI components to reference\n\t * the label, for instance, using the `aria-describedby` DOM attribute.\n\t */\n\tpublic readonly id: string;\n\n\t/**\n\t * The text of the label.\n\t *\n\t * @observable\n\t */\n\tdeclare public text: string | undefined;\n\n\t/**\n\t * The `for` attribute of the label (i.e. to pair with an `<input>` element).\n\t *\n\t * @observable\n\t */\n\tdeclare public for: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.set( 'text', undefined );\n\t\tthis.set( 'for', undefined );\n\n\t\tthis.id = `ck-editor__label_${ uid() }`;\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'label',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-label'\n\t\t\t\t],\n\t\t\t\tid: this.id,\n\t\t\t\tfor: bind.to( 'for' )\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttext: bind.to( 'text' )\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./labeledfieldview.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/labeledfield/labeledfieldview\n */\n\nimport View from '../view';\nimport LabelView from '../label/labelview';\n\nimport type { FocusableView } from '../focuscycler';\nimport type ViewCollection from '../viewcollection';\n\nimport { uid, type Locale } from '@ckeditor/ckeditor5-utils';\n\nimport '../../theme/components/labeledfield/labeledfieldview.css';\n\n/**\n * The labeled field view class. It can be used to enhance any view with the following features:\n *\n * * a label,\n * * (optional) an error message,\n * * (optional) an info (status) text,\n *\n * all bound logically by proper DOM attributes for UX and accessibility. It also provides an interface\n * (e.g. observable properties) that allows controlling those additional features.\n *\n * The constructor of this class requires a callback that returns a view to be labeled. The callback\n * is called with unique ids that allow binding of DOM properties:\n *\n * ```ts\n * const labeledInputView = new LabeledFieldView( locale, ( labeledFieldView, viewUid, statusUid ) => {\n * \tconst inputView = new InputTextView( labeledFieldView.locale );\n *\n * \tinputView.set( {\n * \t\tid: viewUid,\n * \t\tariaDescribedById: statusUid\n * \t} );\n *\n * \tinputView.bind( 'isReadOnly' ).to( labeledFieldView, 'isEnabled', value => !value );\n * \tinputView.bind( 'hasError' ).to( labeledFieldView, 'errorText', value => !!value );\n *\n * \treturn inputView;\n * } );\n *\n * labeledInputView.label = 'User name';\n * labeledInputView.infoText = 'Full name like for instance, John Doe.';\n * labeledInputView.render();\n *\n * document.body.append( labeledInputView.element );\n * ```\n *\n * See {@link module:ui/labeledfield/utils} to discover ready–to–use labeled input helpers for common\n * UI components.\n */\nexport default class LabeledFieldView<TFieldView extends FocusableView = FocusableView> extends View {\n\t/**\n\t * The field view that gets labeled.\n\t */\n\tpublic readonly fieldView: TFieldView;\n\n\t/**\n\t * The label view instance that describes the entire view.\n\t */\n\tpublic readonly labelView: LabelView;\n\n\t/**\n\t * The status view for the {@link #fieldView}. It displays {@link #errorText} and\n\t * {@link #infoText}.\n\t */\n\tpublic readonly statusView: View;\n\n\t/**\n\t * A collection of children of the internal wrapper element. Allows inserting additional DOM elements (views) next to\n\t * the {@link #fieldView} for easy styling (e.g. positioning).\n\t *\n\t * By default, the collection contains {@link #fieldView} and {@link #labelView}.\n\t */\n\tpublic readonly fieldWrapperChildren: ViewCollection;\n\n\t/**\n\t * The text of the label.\n\t *\n\t * @observable\n\t */\n\tdeclare public label: string | undefined;\n\n\t/**\n\t * Controls whether the component is in read-only mode.\n\t *\n\t * @observable\n\t */\n\tdeclare public isEnabled: boolean;\n\n\t/**\n\t * An observable flag set to `true` when {@link #fieldView} is empty (`false` otherwise).\n\t *\n\t * @readonly\n\t * @observable\n\t * @default true\n\t */\n\tdeclare public isEmpty: boolean;\n\n\t/**\n\t * An observable flag set to `true` when {@link #fieldView} is currently focused by\n\t * the user (`false` otherwise).\n\t *\n\t * @readonly\n\t * @observable\n\t * @default false\n\t */\n\tdeclare public isFocused: boolean;\n\n\t/**\n\t * The validation error text. When set, it will be displayed\n\t * next to the {@link #fieldView} as a typical validation error message.\n\t * Set it to `null` to hide the message.\n\t *\n\t * **Note:** Setting this property to anything but `null` will automatically\n\t * make the `hasError` of the {@link #fieldView} `true`.\n\t *\n\t * @observable\n\t */\n\tdeclare public errorText: string | null;\n\n\t/**\n\t * The additional information text displayed next to the {@link #fieldView} which can\n\t * be used to inform the user about its purpose, provide help or hints.\n\t *\n\t * Set it to `null` to hide the message.\n\t *\n\t * **Note:** This text will be displayed in the same place as {@link #errorText} but the\n\t * latter always takes precedence: if the {@link #errorText} is set, it replaces\n\t * {@link #infoText}.\n\t *\n\t * @observable\n\t * @default null\n\t */\n\tdeclare public infoText: string | null;\n\n\t/**\n\t * (Optional) The additional CSS class set on the dropdown {@link #element}.\n\t *\n\t * @observable\n\t */\n\tdeclare public class: string | undefined;\n\n\t/**\n\t * The content of the `placeholder` attribute of the {@link #fieldView}.\n\t *\n\t * @observable\n\t */\n\tdeclare public placeholder: string | undefined;\n\n\t/**\n\t * The combined status text made of {@link #errorText} and {@link #infoText}.\n\t * Note that when present, {@link #errorText} always takes precedence in the\n\t * status.\n\t *\n\t * @see #errorText\n\t * @see #infoText\n\t * @see #statusView\n\t * @private\n\t * @observable\n\t */\n\tdeclare public _statusText: string | null;\n\n\t/**\n\t * Creates an instance of the labeled field view class using a provided creator function\n\t * that provides the view to be labeled.\n\t *\n\t * @param locale The locale instance.\n\t * @param viewCreator A function that returns a {@link module:ui/view~View}\n\t * that will be labeled. The following arguments are passed to the creator function:\n\t *\n\t * * an instance of the `LabeledFieldView` to allow binding observable properties,\n\t * * an UID string that connects the {@link #labelView label} and the labeled field view in DOM,\n\t * * an UID string that connects the {@link #statusView status} and the labeled field view in DOM.\n\t */\n\tconstructor(\n\t\tlocale: Locale | undefined,\n\t\tviewCreator: ( labeledFieldView: LabeledFieldView, viewUid: string, statusUid: string ) => TFieldView\n\t) {\n\t\tsuper( locale );\n\n\t\tconst viewUid = `ck-labeled-field-view-${ uid() }`;\n\t\tconst statusUid = `ck-labeled-field-view-status-${ uid() }`;\n\n\t\tthis.fieldView = viewCreator( this, viewUid, statusUid );\n\n\t\tthis.set( 'label', undefined );\n\t\tthis.set( 'isEnabled', true );\n\t\tthis.set( 'isEmpty', true );\n\t\tthis.set( 'isFocused', false );\n\t\tthis.set( 'errorText', null );\n\t\tthis.set( 'infoText', null );\n\t\tthis.set( 'class', undefined );\n\t\tthis.set( 'placeholder', undefined );\n\n\t\tthis.labelView = this._createLabelView( viewUid );\n\t\tthis.statusView = this._createStatusView( statusUid );\n\t\tthis.fieldWrapperChildren = this.createCollection( [ this.fieldView, this.labelView ] );\n\n\t\tthis.bind( '_statusText' ).to(\n\t\t\tthis, 'errorText',\n\t\t\tthis, 'infoText',\n\t\t\t( errorText, infoText ) => errorText || infoText\n\t\t);\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-labeled-field-view',\n\t\t\t\t\tbind.to( 'class' ),\n\t\t\t\t\tbind.if( 'isEnabled', 'ck-disabled', value => !value ),\n\t\t\t\t\tbind.if( 'isEmpty', 'ck-labeled-field-view_empty' ),\n\t\t\t\t\tbind.if( 'isFocused', 'ck-labeled-field-view_focused' ),\n\t\t\t\t\tbind.if( 'placeholder', 'ck-labeled-field-view_placeholder' ),\n\t\t\t\t\tbind.if( 'errorText', 'ck-error' )\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttag: 'div',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: [\n\t\t\t\t\t\t\t'ck',\n\t\t\t\t\t\t\t'ck-labeled-field-view__input-wrapper'\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\tchildren: this.fieldWrapperChildren\n\t\t\t\t},\n\t\t\t\tthis.statusView\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * Creates label view class instance and bind with view.\n\t *\n\t * @param id Unique id to set as labelView#for attribute.\n\t */\n\tprivate _createLabelView( id: string ): LabelView {\n\t\tconst labelView = new LabelView( this.locale );\n\n\t\tlabelView.for = id;\n\t\tlabelView.bind( 'text' ).to( this, 'label' );\n\n\t\treturn labelView;\n\t}\n\n\t/**\n\t * Creates the status view instance. It displays {@link #errorText} and {@link #infoText}\n\t * next to the {@link #fieldView}. See {@link #_statusText}.\n\t *\n\t * @param statusUid Unique id of the status, shared with the {@link #fieldView view's}\n\t * `aria-describedby` attribute.\n\t */\n\tprivate _createStatusView( statusUid: string ): View {\n\t\tconst statusView = new View( this.locale );\n\t\tconst bind = this.bindTemplate;\n\n\t\tstatusView.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-labeled-field-view__status',\n\t\t\t\t\tbind.if( 'errorText', 'ck-labeled-field-view__status_error' ),\n\t\t\t\t\tbind.if( '_statusText', 'ck-hidden', value => !value )\n\t\t\t\t],\n\t\t\t\tid: statusUid,\n\t\t\t\trole: bind.if( 'errorText', 'alert' )\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttext: bind.to( '_statusText' )\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\n\t\treturn statusView;\n\t}\n\n\t/**\n\t * Focuses the {@link #fieldView}.\n\t */\n\tpublic focus(): void {\n\t\tthis.fieldView.focus();\n\t}\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./input.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/input/inputview\n */\n\nimport View from '../view';\n\nimport {\n\tFocusTracker,\n\ttype Locale,\n\ttype ObservableChangeEvent\n} from '@ckeditor/ckeditor5-utils';\n\nimport '../../theme/components/input/input.css';\n\n/**\n * The base input view class.\n */\nexport default class InputView extends View<HTMLInputElement> {\n\t/**\n\t * Stores information about the editor UI focus and propagates it so various plugins and components\n\t * are unified as a focus group.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * The value of the input.\n\t *\n\t * @observable\n\t */\n\tdeclare public value: string | undefined;\n\n\t/**\n\t * The `id` attribute of the input (i.e. to pair with a `<label>` element).\n\t *\n\t * @observable\n\t */\n\tdeclare public id: string | undefined;\n\n\t/**\n\t * The `placeholder` attribute of the input.\n\t *\n\t * @observable\n\t */\n\tdeclare public placeholder: string | undefined;\n\n\t/**\n\t * Controls whether the input view is in read-only mode.\n\t *\n\t * @observable\n\t */\n\tdeclare public isReadOnly: boolean;\n\n\t/**\n\t * Set to `true` when the field has some error. Usually controlled via\n\t * {@link module:ui/labeledinput/labeledinputview~LabeledInputView#errorText}.\n\t *\n\t * @observable\n\t */\n\tdeclare public hasError: boolean;\n\n\t/**\n\t * The `id` of the element describing this field, e.g. when it has\n\t * some error; it helps screen readers read the error text.\n\t *\n\t * @observable\n\t */\n\tdeclare public ariaDescribedById: string | undefined;\n\n\t/**\n\t * An observable flag set to `true` when the input is currently focused by the user.\n\t * Set to `false` otherwise.\n\t *\n\t * @readonly\n\t * @observable\n\t * @default false\n\t */\n\tdeclare public isFocused: boolean;\n\n\t/**\n\t * An observable flag set to `true` when the input contains no text, i.e.\n\t * when {@link #value} is `''`, `null`, or `false`.\n\t *\n\t * @readonly\n\t * @observable\n\t * @default true\n\t */\n\tdeclare public isEmpty: boolean;\n\n\t/**\n\t * Corresponds to the `inputmode` DOM attribute. Can be `text`, `numeric`, `decimal`, etc.\n\t *\n\t * @observable\n\t * @default 'text'\n\t */\n\tdeclare public inputMode: string;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.set( 'value', undefined );\n\t\tthis.set( 'id', undefined );\n\t\tthis.set( 'placeholder', undefined );\n\t\tthis.set( 'isReadOnly', false );\n\t\tthis.set( 'hasError', false );\n\t\tthis.set( 'ariaDescribedById', undefined );\n\n\t\tthis.focusTracker = new FocusTracker();\n\n\t\tthis.bind( 'isFocused' ).to( this.focusTracker );\n\t\tthis.set( 'isEmpty', true );\n\t\tthis.set( 'inputMode', 'text' );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'input',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-input',\n\t\t\t\t\tbind.if( 'isFocused', 'ck-input_focused' ),\n\t\t\t\t\tbind.if( 'isEmpty', 'ck-input-text_empty' ),\n\t\t\t\t\tbind.if( 'hasError', 'ck-error' )\n\t\t\t\t],\n\t\t\t\tid: bind.to( 'id' ),\n\t\t\t\tplaceholder: bind.to( 'placeholder' ),\n\t\t\t\treadonly: bind.to( 'isReadOnly' ),\n\t\t\t\tinputmode: bind.to( 'inputMode' ),\n\t\t\t\t'aria-invalid': bind.if( 'hasError', true ),\n\t\t\t\t'aria-describedby': bind.to( 'ariaDescribedById' )\n\t\t\t},\n\t\t\ton: {\n\t\t\t\tinput: bind.to( ( ...args ) => {\n\t\t\t\t\tthis.fire( 'input', ...args );\n\t\t\t\t\tthis._updateIsEmpty();\n\t\t\t\t} ),\n\t\t\t\tchange: bind.to( this._updateIsEmpty.bind( this ) )\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis.focusTracker.add( this.element! );\n\n\t\tthis._setDomElementValue( this.value );\n\t\tthis._updateIsEmpty();\n\n\t\t// Bind `this.value` to the DOM element's value.\n\t\t// We cannot use `value` DOM attribute because removing it on Edge does not clear the DOM element's value property.\n\t\tthis.on<ObservableChangeEvent>( 'change:value', ( evt, name, value ) => {\n\t\t\tthis._setDomElementValue( value );\n\t\t\tthis._updateIsEmpty();\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t}\n\n\t/**\n\t * Moves the focus to the input and selects the value.\n\t */\n\tpublic select(): void {\n\t\tthis.element!.select();\n\t}\n\n\t/**\n\t * Focuses the input.\n\t */\n\tpublic focus(): void {\n\t\tthis.element!.focus();\n\t}\n\n\t/**\n\t * Updates the {@link #isEmpty} property value on demand.\n\t */\n\tprivate _updateIsEmpty() {\n\t\tthis.isEmpty = isInputElementEmpty( this.element! );\n\t}\n\n\t/**\n\t * Sets the `value` property of the {@link #element DOM element} on demand.\n\t */\n\tprivate _setDomElementValue( value: any ) {\n\t\tthis.element!.value = ( !value && value !== 0 ) ? '' : value;\n\t}\n}\n\nfunction isInputElementEmpty( domElement: HTMLInputElement ) {\n\treturn !domElement.value;\n}\n\n/**\n * Fired when the user types in the input. Corresponds to the native\n * DOM `input` event.\n *\n * @eventName ~InputView#input\n */\nexport type InputViewInputEvent = {\n\tname: 'input';\n\targs: [ InputEvent ];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/inputtext/inputtextview\n */\n\nimport InputView from '../input/inputview';\n\nimport type { Locale } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The text input view class.\n */\nexport default class InputTextView extends InputView {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\ttype: 'text',\n\t\t\t\tclass: [\n\t\t\t\t\t'ck-input-text'\n\t\t\t\t]\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/dropdown/dropdownpanelview\n */\n\nimport View from '../view';\nimport type ViewCollection from '../viewcollection';\nimport type DropdownPanelFocusable from './dropdownpanelfocusable';\n\nimport { logWarning, type Locale } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The dropdown panel view class.\n *\n * See {@link module:ui/dropdown/dropdownview~DropdownView} to learn about the common usage.\n */\nexport default class DropdownPanelView extends View implements DropdownPanelFocusable {\n\t/**\n\t * Collection of the child views in this panel.\n\t *\n\t * A common child type is the {@link module:ui/list/listview~ListView} and {@link module:ui/toolbar/toolbarview~ToolbarView}.\n\t * See {@link module:ui/dropdown/utils~addListToDropdown} and\n\t * {@link module:ui/dropdown/utils~addToolbarToDropdown} to learn more about child views of dropdowns.\n\t */\n\tpublic readonly children: ViewCollection;\n\n\t/**\n\t * Controls whether the panel is visible.\n\t *\n\t * @observable\n\t */\n\tdeclare public isVisible: boolean;\n\n\t/**\n\t * The position of the panel, relative to the parent.\n\t *\n\t * This property is reflected in the CSS class set to {@link #element} that controls\n\t * the position of the panel.\n\t *\n\t * @observable\n\t * @default 'se'\n\t */\n\tdeclare public position: PanelPosition;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.set( 'isVisible', false );\n\t\tthis.set( 'position', 'se' );\n\n\t\tthis.children = this.createCollection();\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-reset',\n\t\t\t\t\t'ck-dropdown__panel',\n\t\t\t\t\tbind.to( 'position', value => `ck-dropdown__panel_${ value }` ),\n\t\t\t\t\tbind.if( 'isVisible', 'ck-dropdown__panel-visible' )\n\t\t\t\t],\n\t\t\t\ttabindex: '-1'\n\t\t\t},\n\n\t\t\tchildren: this.children,\n\n\t\t\ton: {\n\t\t\t\t// Drag and drop in the panel should not break the selection in the editor.\n\t\t\t\t// https://github.com/ckeditor/ckeditor5-ui/issues/228\n\t\t\t\tselectstart: bind.to( evt => {\n\t\t\t\t\tif ( ( evt.target as HTMLElement ).tagName.toLocaleLowerCase() === 'input' ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t} )\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Focuses the first view in the {@link #children} collection.\n\t *\n\t * See also {@link module:ui/dropdown/dropdownpanelfocusable~DropdownPanelFocusable}.\n\t */\n\tpublic focus(): void {\n\t\tif ( this.children.length ) {\n\t\t\tconst firstChild: any = this.children.first;\n\n\t\t\tif ( typeof firstChild.focus === 'function' ) {\n\t\t\t\tfirstChild.focus();\n\t\t\t} else {\n\t\t\t\t/**\n\t\t\t\t * The child view of a dropdown could not be focused because it is missing the `focus()` method.\n\t\t\t\t *\n\t\t\t\t * This warning appears when a dropdown {@link module:ui/dropdown/dropdownview~DropdownView#isOpen gets open} and it\n\t\t\t\t * attempts to focus the {@link module:ui/dropdown/dropdownpanelview~DropdownPanelView#children first child} of its panel\n\t\t\t\t * but the child does not implement the\n\t\t\t\t * {@link module:ui/dropdown/dropdownpanelfocusable~DropdownPanelFocusable focusable interface}.\n\t\t\t\t *\n\t\t\t\t * Focusing the content of a dropdown on open greatly improves the accessibility. Please make sure the view instance\n\t\t\t\t * provides the `focus()` method for the best user experience.\n\t\t\t\t *\n\t\t\t\t * @error ui-dropdown-panel-focus-child-missing-focus\n\t\t\t\t * @param childView\n\t\t\t\t * @param dropdownPanel\n\t\t\t\t */\n\t\t\t\tlogWarning( 'ui-dropdown-panel-focus-child-missing-focus', { childView: this.children.first, dropdownPanel: this } );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Focuses the view element or last item in view collection on opening dropdown's panel.\n\t *\n\t * See also {@link module:ui/dropdown/dropdownpanelfocusable~DropdownPanelFocusable}.\n\t */\n\tpublic focusLast(): void {\n\t\tif ( this.children.length ) {\n\t\t\tconst lastChild: any = this.children.last;\n\n\t\t\tif ( typeof lastChild.focusLast === 'function' ) {\n\t\t\t\tlastChild.focusLast();\n\t\t\t} else {\n\t\t\t\tlastChild.focus();\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * The position of the panel, relative to the parent.\n */\nexport type PanelPosition = 's' | 'se' | 'sw' | 'sme' | 'smw' | 'n' | 'ne' | 'nw' | 'nme' | 'nmw';\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./dropdown.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/dropdown/dropdownview\n */\n\nimport View from '../view';\n\nimport type { default as DropdownButton, DropdownButtonOpenEvent } from './button/dropdownbutton';\nimport type { default as DropdownPanelView, PanelPosition } from './dropdownpanelview';\nimport type { FocusableView } from '../focuscycler';\nimport type ListView from '../list/listview';\nimport type ToolbarView from '../toolbar/toolbarview';\n\nimport {\n\tKeystrokeHandler,\n\tFocusTracker,\n\tgetOptimalPosition,\n\ttype Locale,\n\ttype ObservableChangeEvent,\n\ttype PositioningFunction\n} from '@ckeditor/ckeditor5-utils';\n\nimport '../../theme/components/dropdown/dropdown.css';\n\n/**\n * The dropdown view class. It manages the dropdown button and dropdown panel.\n *\n * In most cases, the easiest way to create a dropdown is by using the {@link module:ui/dropdown/utils~createDropdown}\n * util:\n *\n * ```ts\n * const dropdown = createDropdown( locale );\n *\n * // Configure dropdown's button properties:\n * dropdown.buttonView.set( {\n * \tlabel: 'A dropdown',\n * \twithText: true\n * } );\n *\n * dropdown.render();\n *\n * dropdown.panelView.element.textContent = 'Content of the panel';\n *\n * // Will render a dropdown with a panel containing a \"Content of the panel\" text.\n * document.body.appendChild( dropdown.element );\n * ```\n *\n * If you want to add a richer content to the dropdown panel, you can use the {@link module:ui/dropdown/utils~addListToDropdown}\n * and {@link module:ui/dropdown/utils~addToolbarToDropdown} helpers. See more examples in\n * {@link module:ui/dropdown/utils~createDropdown} documentation.\n *\n * If you want to create a completely custom dropdown, then you can compose it manually:\n *\n * ```ts\n * const button = new DropdownButtonView( locale );\n * const panel = new DropdownPanelView( locale );\n * const dropdown = new DropdownView( locale, button, panel );\n *\n * button.set( {\n * \tlabel: 'A dropdown',\n * \twithText: true\n * } );\n *\n * dropdown.render();\n *\n * panel.element.textContent = 'Content of the panel';\n *\n * // Will render a dropdown with a panel containing a \"Content of the panel\" text.\n * document.body.appendChild( dropdown.element );\n * ```\n *\n * However, dropdown created this way will contain little behavior. You will need to implement handlers for actions\n * such as {@link module:ui/bindings/clickoutsidehandler~clickOutsideHandler clicking outside an open dropdown}\n * (which should close it) and support for arrow keys inside the panel. Therefore, unless you really know what\n * you do and you really need to do it, it is recommended to use the {@link module:ui/dropdown/utils~createDropdown} helper.\n */\nexport default class DropdownView extends View<HTMLDivElement> {\n\t/**\n\t * Button of the dropdown view. Clicking the button opens the {@link #panelView}.\n\t */\n\tpublic readonly buttonView: DropdownButton & FocusableView;\n\n\t/**\n\t * Panel of the dropdown. It opens when the {@link #buttonView} is\n\t * {@link module:ui/button/button~Button#event:execute executed} (i.e. clicked).\n\t *\n\t * Child views can be added to the panel's `children` collection:\n\t *\n\t * ```ts\n\t * dropdown.panelView.children.add( childView );\n\t * ```\n\t *\n\t * See {@link module:ui/dropdown/dropdownpanelview~DropdownPanelView#children} and\n\t * {@link module:ui/viewcollection~ViewCollection#add}.\n\t */\n\tpublic readonly panelView: DropdownPanelView;\n\n\t/**\n\t * Tracks information about the DOM focus in the dropdown.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * Instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}. It manages\n\t * keystrokes of the dropdown:\n\t *\n\t * * <kbd>▼</kbd> opens the dropdown,\n\t * * <kbd>◀</kbd> and <kbd>Esc</kbd> closes the dropdown.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * A child {@link module:ui/list/listview~ListView list view} of the dropdown located\n\t * in its {@link module:ui/dropdown/dropdownview~DropdownView#panelView panel}.\n\t *\n\t * **Note**: Only supported when dropdown has list view added using {@link module:ui/dropdown/utils~addListToDropdown}.\n\t */\n\tpublic listView?: ListView;\n\n\t/**\n\t * A child toolbar of the dropdown located in the\n\t * {@link module:ui/dropdown/dropdownview~DropdownView#panelView panel}.\n\t *\n\t * **Note**: Only supported when dropdown has list view added using {@link module:ui/dropdown/utils~addToolbarToDropdown}.\n\t */\n\tpublic toolbarView?: ToolbarView;\n\n\t/**\n\t * Controls whether the dropdown view is open, i.e. shows or hides the {@link #panelView panel}.\n\t *\n\t * **Note**: When the dropdown gets open, it will attempt to call `focus()` on the first child of its {@link #panelView}.\n\t * See {@link module:ui/dropdown/utils~addToolbarToDropdown}, {@link module:ui/dropdown/utils~addListToDropdown}, and\n\t * {@link module:ui/dropdown/utils~focusChildOnDropdownOpen} to learn more about focus management in dropdowns.\n\t *\n\t * @observable\n\t */\n\tdeclare public isOpen: boolean;\n\n\t/**\n\t * Controls whether the dropdown is enabled, i.e. it can be clicked and execute an action.\n\t *\n\t * See {@link module:ui/button/buttonview~ButtonView#isEnabled}.\n\t *\n\t * @observable\n\t */\n\tdeclare public isEnabled: boolean;\n\n\t/**\n\t * (Optional) The additional CSS class set on the dropdown {@link #element}.\n\t *\n\t * @observable\n\t */\n\tdeclare public class: string | undefined;\n\n\t/**\n\t * (Optional) The `id` attribute of the dropdown (i.e. to pair with a `<label>` element).\n\t *\n\t * @observable\n\t */\n\tdeclare public id: string | undefined;\n\n\t/**\n\t * The position of the panel, relative to the dropdown.\n\t *\n\t * **Note**: When `'auto'`, the panel will use one of the remaining positions to stay\n\t * in the viewport, visible to the user. The positions correspond directly to\n\t * {@link module:ui/dropdown/dropdownview~DropdownView.defaultPanelPositions default panel positions}.\n\t *\n\t * **Note**: This value has an impact on the\n\t * {@link module:ui/dropdown/dropdownpanelview~DropdownPanelView#position} property\n\t * each time the panel becomes {@link #isOpen open}.\n\t *\n\t * @observable\n\t * @default 'auto'\n\t */\n\tdeclare public panelPosition: PanelPosition | 'auto';\n\n\t/**\n\t * @observable\n\t */\n\tdeclare public ariaDescribedById: string | undefined;\n\n\t/**\n\t * Creates an instance of the dropdown.\n\t *\n\t * Also see {@link #render}.\n\t *\n\t * @param locale The localization services instance.\n\t */\n\tconstructor(\n\t\tlocale: Locale | undefined,\n\t\tbuttonView: DropdownButton & FocusableView,\n\t\tpanelView: DropdownPanelView\n\t) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.buttonView = buttonView;\n\t\tthis.panelView = panelView;\n\n\t\tthis.set( 'isOpen', false );\n\t\tthis.set( 'isEnabled', true );\n\t\tthis.set( 'class', undefined );\n\t\tthis.set( 'id', undefined );\n\t\tthis.set( 'panelPosition', 'auto' );\n\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis.focusTracker = new FocusTracker();\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-dropdown',\n\t\t\t\t\tbind.to( 'class' ),\n\t\t\t\t\tbind.if( 'isEnabled', 'ck-disabled', value => !value )\n\t\t\t\t],\n\t\t\t\tid: bind.to( 'id' ),\n\t\t\t\t'aria-describedby': bind.to( 'ariaDescribedById' )\n\t\t\t},\n\n\t\t\tchildren: [\n\t\t\t\tbuttonView,\n\t\t\t\tpanelView\n\t\t\t]\n\t\t} );\n\n\t\tbuttonView.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck-dropdown__button'\n\t\t\t\t],\n\t\t\t\t'data-cke-tooltip-disabled': bind.to( 'isOpen' )\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis.focusTracker.add( this.buttonView.element! );\n\t\tthis.focusTracker.add( this.panelView.element! );\n\n\t\t// Toggle the dropdown when its button has been clicked.\n\t\tthis.listenTo<DropdownButtonOpenEvent>( this.buttonView, 'open', () => {\n\t\t\tthis.isOpen = !this.isOpen;\n\t\t} );\n\n\t\t// Toggle the visibility of the panel when the dropdown becomes open.\n\t\tthis.panelView.bind( 'isVisible' ).to( this, 'isOpen' );\n\n\t\t// Let the dropdown control the position of the panel. The position must\n\t\t// be updated every time the dropdown is open.\n\t\tthis.on<ObservableChangeEvent<boolean>>( 'change:isOpen', ( evt, name, isOpen ) => {\n\t\t\tif ( !isOpen ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If \"auto\", find the best position of the panel to fit into the viewport.\n\t\t\t// Otherwise, simply assign the static position.\n\t\t\tif ( this.panelPosition === 'auto' ) {\n\t\t\t\tthis.panelView.position = DropdownView._getOptimalPosition( {\n\t\t\t\t\telement: this.panelView.element!,\n\t\t\t\t\ttarget: this.buttonView.element!,\n\t\t\t\t\tfitInViewport: true,\n\t\t\t\t\tpositions: this._panelPositions\n\t\t\t\t} ).name as PanelPosition;\n\t\t\t} else {\n\t\t\t\tthis.panelView.position = this.panelPosition;\n\t\t\t}\n\t\t} );\n\n\t\t// Listen for keystrokes coming from within #element.\n\t\tthis.keystrokes.listenTo( this.element! );\n\n\t\tconst closeDropdown = ( data: unknown, cancel: () => void ) => {\n\t\t\tif ( this.isOpen ) {\n\t\t\t\tthis.isOpen = false;\n\t\t\t\tcancel();\n\t\t\t}\n\t\t};\n\n\t\t// Open the dropdown panel using the arrow down key, just like with return or space.\n\t\tthis.keystrokes.set( 'arrowdown', ( data, cancel ) => {\n\t\t\t// Don't open if the dropdown is disabled or already open.\n\t\t\tif ( this.buttonView.isEnabled && !this.isOpen ) {\n\t\t\t\tthis.isOpen = true;\n\t\t\t\tcancel();\n\t\t\t}\n\t\t} );\n\n\t\t// Block the right arrow key (until nested dropdowns are implemented).\n\t\tthis.keystrokes.set( 'arrowright', ( data, cancel ) => {\n\t\t\tif ( this.isOpen ) {\n\t\t\t\tcancel();\n\t\t\t}\n\t\t} );\n\n\t\t// Close the dropdown using the arrow left/escape key.\n\t\tthis.keystrokes.set( 'arrowleft', closeDropdown );\n\t\tthis.keystrokes.set( 'esc', closeDropdown );\n\t}\n\n\t/**\n\t * Focuses the {@link #buttonView}.\n\t */\n\tpublic focus(): void {\n\t\tthis.buttonView.focus();\n\t}\n\n\t/**\n\t * Returns {@link #panelView panel} positions to be used by the\n\t * {@link module:utils/dom/position~getOptimalPosition `getOptimalPosition()`}\n\t * utility considering the direction of the language the UI of the editor is displayed in.\n\t */\n\tprivate get _panelPositions(): Array<PositioningFunction> {\n\t\tconst {\n\t\t\tsouth, north,\n\t\t\tsouthEast, southWest,\n\t\t\tnorthEast, northWest,\n\t\t\tsouthMiddleEast, southMiddleWest,\n\t\t\tnorthMiddleEast, northMiddleWest\n\t\t} = DropdownView.defaultPanelPositions;\n\n\t\tif ( this.locale!.uiLanguageDirection !== 'rtl' ) {\n\t\t\treturn [\n\t\t\t\tsouthEast, southWest, southMiddleEast, southMiddleWest, south,\n\t\t\t\tnorthEast, northWest, northMiddleEast, northMiddleWest, north\n\t\t\t];\n\t\t} else {\n\t\t\treturn [\n\t\t\t\tsouthWest, southEast, southMiddleWest, southMiddleEast, south,\n\t\t\t\tnorthWest, northEast, northMiddleWest, northMiddleEast, north\n\t\t\t];\n\t\t}\n\t}\n\n\t/**\n\t * A set of positioning functions used by the dropdown view to determine\n\t * the optimal position (i.e. fitting into the browser viewport) of its\n\t * {@link module:ui/dropdown/dropdownview~DropdownView#panelView panel} when\n\t * {@link module:ui/dropdown/dropdownview~DropdownView#panelPosition} is set to 'auto'`.\n\t *\n\t * The available positioning functions are as follow:\n\t *\n\t * **South**\n\t *\n\t * * `south`\n\t *\n\t * ```\n\t *\t\t\t[ Button ]\n\t *\t\t+-----------------+\n\t *\t\t| Panel |\n\t *\t\t+-----------------+\n\t * ```\n\t *\n\t * * `southEast`\n\t *\n\t * ```\n\t *\t\t[ Button ]\n\t *\t\t+-----------------+\n\t *\t\t| Panel |\n\t *\t\t+-----------------+\n\t * ```\n\t *\n\t * * `southWest`\n\t *\n\t * ```\n\t *\t\t [ Button ]\n\t *\t\t+-----------------+\n\t *\t\t| Panel |\n\t *\t\t+-----------------+\n\t * ```\n\t *\n\t * * `southMiddleEast`\n\t *\n\t * ```\n\t *\t\t [ Button ]\n\t *\t\t+-----------------+\n\t *\t\t| Panel |\n\t *\t\t+-----------------+\n\t * ```\n\t *\n\t * * `southMiddleWest`\n\t *\n\t * ```\n\t *\t\t [ Button ]\n\t *\t\t+-----------------+\n\t *\t\t| Panel |\n\t *\t\t+-----------------+\n\t * ```\n\t *\n\t * **North**\n\t *\n\t * * `north`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Panel |\n\t *\t\t+-----------------+\n\t *\t\t [ Button ]\n\t * ```\n\t *\n\t * * `northEast`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Panel |\n\t *\t\t+-----------------+\n\t *\t\t[ Button ]\n\t * ```\n\t *\n\t * * `northWest`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Panel |\n\t *\t\t+-----------------+\n\t *\t\t [ Button ]\n\t * ```\n\t *\n\t * * `northMiddleEast`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Panel |\n\t *\t\t+-----------------+\n\t *\t\t [ Button ]\n\t * ```\n\t *\n\t * * `northMiddleWest`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Panel |\n\t *\t\t+-----------------+\n\t *\t\t [ Button ]\n\t * ```\n\t *\n\t * Positioning functions are compatible with {@link module:utils/dom/position~Position}.\n\t *\n\t * The name that position function returns will be reflected in dropdown panel's class that\n\t * controls its placement. See {@link module:ui/dropdown/dropdownview~DropdownView#panelPosition}\n\t * to learn more.\n\t */\n\tpublic static defaultPanelPositions: Record<string, PositioningFunction> = {\n\t\tsouth: ( buttonRect, panelRect ) => {\n\t\t\treturn {\n\t\t\t\ttop: buttonRect.bottom,\n\t\t\t\tleft: buttonRect.left - ( panelRect.width - buttonRect.width ) / 2,\n\t\t\t\tname: 's'\n\t\t\t};\n\t\t},\n\t\tsouthEast: buttonRect => {\n\t\t\treturn {\n\t\t\t\ttop: buttonRect.bottom,\n\t\t\t\tleft: buttonRect.left,\n\t\t\t\tname: 'se'\n\t\t\t};\n\t\t},\n\t\tsouthWest: ( buttonRect, panelRect ) => {\n\t\t\treturn {\n\t\t\t\ttop: buttonRect.bottom,\n\t\t\t\tleft: buttonRect.left - panelRect.width + buttonRect.width,\n\t\t\t\tname: 'sw'\n\t\t\t};\n\t\t},\n\t\tsouthMiddleEast: ( buttonRect, panelRect ) => {\n\t\t\treturn {\n\t\t\t\ttop: buttonRect.bottom,\n\t\t\t\tleft: buttonRect.left - ( panelRect.width - buttonRect.width ) / 4,\n\t\t\t\tname: 'sme'\n\t\t\t};\n\t\t},\n\t\tsouthMiddleWest: ( buttonRect, panelRect ) => {\n\t\t\treturn {\n\t\t\t\ttop: buttonRect.bottom,\n\t\t\t\tleft: buttonRect.left - ( panelRect.width - buttonRect.width ) * 3 / 4,\n\t\t\t\tname: 'smw'\n\t\t\t};\n\t\t},\n\t\tnorth: ( buttonRect, panelRect ) => {\n\t\t\treturn {\n\t\t\t\ttop: buttonRect.top - panelRect.height,\n\t\t\t\tleft: buttonRect.left - ( panelRect.width - buttonRect.width ) / 2,\n\t\t\t\tname: 'n'\n\t\t\t};\n\t\t},\n\t\tnorthEast: ( buttonRect, panelRect ) => {\n\t\t\treturn {\n\t\t\t\ttop: buttonRect.top - panelRect.height,\n\t\t\t\tleft: buttonRect.left,\n\t\t\t\tname: 'ne'\n\t\t\t};\n\t\t},\n\t\tnorthWest: ( buttonRect, panelRect ) => {\n\t\t\treturn {\n\t\t\t\ttop: buttonRect.top - panelRect.height,\n\t\t\t\tleft: buttonRect.left - panelRect.width + buttonRect.width,\n\t\t\t\tname: 'nw'\n\t\t\t};\n\t\t},\n\t\tnorthMiddleEast: ( buttonRect, panelRect ) => {\n\t\t\treturn {\n\t\t\t\ttop: buttonRect.top - panelRect.height,\n\t\t\t\tleft: buttonRect.left - ( panelRect.width - buttonRect.width ) / 4,\n\t\t\t\tname: 'nme'\n\t\t\t};\n\t\t},\n\t\tnorthMiddleWest: ( buttonRect, panelRect ) => {\n\t\t\treturn {\n\t\t\t\ttop: buttonRect.top - panelRect.height,\n\t\t\t\tleft: buttonRect.left - ( panelRect.width - buttonRect.width ) * 3 / 4,\n\t\t\t\tname: 'nmw'\n\t\t\t};\n\t\t}\n\t};\n\n\t/**\n\t * A function used to calculate the optimal position for the dropdown panel.\n\t */\n\tprivate static _getOptimalPosition = getOptimalPosition;\n}\n\n/**\n * Fired when the toolbar button or list item is executed.\n *\n * For {@link ~DropdownView#listView} It fires when a child of some {@link module:ui/list/listitemview~ListItemView}\n * fired `execute`.\n *\n * For {@link ~DropdownView#toolbarView} It fires when one of the buttons has been\n * {@link module:ui/button/button~Button#event:execute executed}.\n *\n * **Note**: Only supported when dropdown has list view added using {@link module:ui/dropdown/utils~addListToDropdown}\n * or {@link module:ui/dropdown/utils~addToolbarToDropdown}.\n *\n * @eventName ~DropdownView#execute\n */\nexport type DropdownViewEvent = {\n\tname: 'execute';\n\targs: [];\n};\n","export default \"<svg viewBox=\\\"0 0 10 10\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M.941 4.523a.75.75 0 1 1 1.06-1.06l3.006 3.005 3.005-3.005a.75.75 0 1 1 1.06 1.06l-3.549 3.55a.75.75 0 0 1-1.168-.136L.941 4.523z\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/dropdown/button/dropdownbuttonview\n */\n\nimport ButtonView from '../../button/buttonview';\nimport type DropdownButton from './dropdownbutton';\nimport IconView from '../../icon/iconview';\n\nimport type { Locale } from '@ckeditor/ckeditor5-utils';\n\nimport dropdownArrowIcon from '../../../theme/icons/dropdown-arrow.svg';\n\n/**\n * The default dropdown button view class.\n *\n * ```ts\n * const view = new DropdownButtonView();\n *\n * view.set( {\n * \tlabel: 'A button',\n * \tkeystroke: 'Ctrl+B',\n * \ttooltip: true\n * } );\n *\n * view.render();\n *\n * document.body.append( view.element );\n * ```\n *\n * Also see the {@link module:ui/dropdown/utils~createDropdown `createDropdown()` util}.\n */\nexport default class DropdownButtonView extends ButtonView implements DropdownButton {\n\t/**\n\t * An icon that displays arrow to indicate a dropdown button.\n\t */\n\tpublic readonly arrowView: IconView;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.arrowView = this._createArrowView();\n\n\t\tthis.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\t'aria-haspopup': true,\n\t\t\t\t'aria-expanded': this.bindTemplate.to( 'isOn', value => String( value ) )\n\t\t\t}\n\t\t} );\n\n\t\t// The DropdownButton interface expects the open event upon which will open the dropdown.\n\t\tthis.delegate( 'execute' ).to( this, 'open' );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis.children.add( this.arrowView );\n\t}\n\n\t/**\n\t * Creates a {@link module:ui/icon/iconview~IconView} instance as {@link #arrowView}.\n\t */\n\tprivate _createArrowView() {\n\t\tconst arrowView = new IconView();\n\n\t\tarrowView.content = dropdownArrowIcon;\n\n\t\tarrowView.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: 'ck-dropdown__arrow'\n\t\t\t}\n\t\t} );\n\n\t\treturn arrowView;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/focuscycler\n */\n\nimport {\n\tisVisible,\n\ttype ArrayOrItem,\n\ttype FocusTracker,\n\ttype KeystrokeHandler\n} from '@ckeditor/ckeditor5-utils';\n\nimport type View from './view';\nimport type ViewCollection from './viewcollection';\n\n/**\n * A utility class that helps cycling over focusable {@link module:ui/view~View views} in a\n * {@link module:ui/viewcollection~ViewCollection} when the focus is tracked by the\n * {@link module:utils/focustracker~FocusTracker} instance. It helps implementing keyboard\n * navigation in HTML forms, toolbars, lists and the like.\n *\n * To work properly it requires:\n * * a collection of focusable (HTML `tabindex` attribute) views that implement the `focus()` method,\n * * an associated focus tracker to determine which view is focused.\n *\n * A simple cycler setup can look like this:\n *\n * ```ts\n * const focusables = new ViewCollection();\n * const focusTracker = new FocusTracker();\n *\n * // Add focusable views to the focus tracker.\n * focusTracker.add( ... );\n * ```\n *\n * Then, the cycler can be used manually:\n *\n * ```ts\n * const cycler = new FocusCycler( { focusables, focusTracker } );\n *\n * // Will focus the first focusable view in #focusables.\n * cycler.focusFirst();\n *\n * // Will log the next focusable item in #focusables.\n * console.log( cycler.next );\n * ```\n *\n * Alternatively, it can work side by side with the {@link module:utils/keystrokehandler~KeystrokeHandler}:\n *\n * ```ts\n * const keystrokeHandler = new KeystrokeHandler();\n *\n * // Activate the keystroke handler.\n * keystrokeHandler.listenTo( sourceOfEvents );\n *\n * const cycler = new FocusCycler( {\n * \tfocusables, focusTracker, keystrokeHandler,\n * \tactions: {\n * \t\t// When arrowup of arrowleft is detected by the #keystrokeHandler,\n * \t\t// focusPrevious() will be called on the cycler.\n * \t\tfocusPrevious: [ 'arrowup', 'arrowleft' ],\n * \t}\n * } );\n * ```\n *\n * Check out the {@glink framework/deep-dive/ui/focus-tracking \"Deep dive into focus tracking\"} guide to learn more.\n */\nexport default class FocusCycler {\n\t/**\n\t * A {@link module:ui/view~View view} collection that the cycler operates on.\n\t */\n\tpublic readonly focusables: ViewCollection;\n\n\t/**\n\t * A focus tracker instance that the cycler uses to determine the current focus\n\t * state in {@link #focusables}.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}\n\t * which can respond to certain keystrokes and cycle the focus.\n\t */\n\tpublic readonly keystrokeHandler?: KeystrokeHandler;\n\n\t/**\n\t * Actions that the cycler can take when a keystroke is pressed. Requires\n\t * `options.keystrokeHandler` to be passed and working. When an action is\n\t * performed, `preventDefault` and `stopPropagation` will be called on the event\n\t * the keystroke fired in the DOM.\n\t *\n\t * ```ts\n\t * actions: {\n\t * \t// Will call #focusPrevious() when arrowleft or arrowup is pressed.\n\t * \tfocusPrevious: [ 'arrowleft', 'arrowup' ],\n\t *\n\t * \t// Will call #focusNext() when arrowdown is pressed.\n\t * \tfocusNext: 'arrowdown'\n\t * }\n\t * ```\n\t */\n\tpublic readonly actions?: FocusCyclerActions;\n\n\t/**\n\t * Creates an instance of the focus cycler utility.\n\t *\n\t * @param options Configuration options.\n\t */\n\tconstructor( options: {\n\t\tfocusables: ViewCollection;\n\t\tfocusTracker: FocusTracker;\n\t\tkeystrokeHandler?: KeystrokeHandler;\n\t\tactions?: FocusCyclerActions;\n\t} ) {\n\t\tthis.focusables = options.focusables;\n\t\tthis.focusTracker = options.focusTracker;\n\t\tthis.keystrokeHandler = options.keystrokeHandler;\n\t\tthis.actions = options.actions;\n\n\t\tif ( options.actions && options.keystrokeHandler ) {\n\t\t\tfor ( const methodName in options.actions ) {\n\t\t\t\tlet actions = options.actions[ methodName as keyof FocusCyclerActions ]!;\n\n\t\t\t\tif ( typeof actions == 'string' ) {\n\t\t\t\t\tactions = [ actions ];\n\t\t\t\t}\n\n\t\t\t\tfor ( const keystroke of actions ) {\n\t\t\t\t\toptions.keystrokeHandler.set( keystroke, ( data, cancel ) => {\n\t\t\t\t\t\tthis[ methodName as keyof FocusCyclerActions ]();\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns the first focusable view in {@link #focusables}.\n\t * Returns `null` if there is none.\n\t *\n\t * **Note**: Hidden views (e.g. with `display: none`) are ignored.\n\t */\n\tpublic get first(): FocusableView | null {\n\t\treturn ( this.focusables.find( isFocusable ) || null ) as FocusableView | null;\n\t}\n\n\t/**\n\t * Returns the last focusable view in {@link #focusables}.\n\t * Returns `null` if there is none.\n\t *\n\t * **Note**: Hidden views (e.g. with `display: none`) are ignored.\n\t */\n\tpublic get last(): FocusableView | null {\n\t\treturn ( this.focusables.filter( isFocusable ).slice( -1 )[ 0 ] || null ) as FocusableView | null;\n\t}\n\n\t/**\n\t * Returns the next focusable view in {@link #focusables} based on {@link #current}.\n\t * Returns `null` if there is none.\n\t *\n\t * **Note**: Hidden views (e.g. with `display: none`) are ignored.\n\t */\n\tpublic get next(): FocusableView | null {\n\t\treturn this._getFocusableItem( 1 );\n\t}\n\n\t/**\n\t * Returns the previous focusable view in {@link #focusables} based on {@link #current}.\n\t * Returns `null` if there is none.\n\t *\n\t * **Note**: Hidden views (e.g. with `display: none`) are ignored.\n\t */\n\tpublic get previous(): FocusableView | null {\n\t\treturn this._getFocusableItem( -1 );\n\t}\n\n\t/**\n\t * An index of the view in the {@link #focusables} which is focused according\n\t * to {@link #focusTracker}. Returns `null` when there is no such view.\n\t */\n\tpublic get current(): number | null {\n\t\tlet index: number | null = null;\n\n\t\t// There's no focused view in the focusables.\n\t\tif ( this.focusTracker.focusedElement === null ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tthis.focusables.find( ( view, viewIndex ) => {\n\t\t\tconst focused = view.element === this.focusTracker.focusedElement;\n\n\t\t\tif ( focused ) {\n\t\t\t\tindex = viewIndex;\n\t\t\t}\n\n\t\t\treturn focused;\n\t\t} );\n\n\t\treturn index;\n\t}\n\n\t/**\n\t * Focuses the {@link #first} item in {@link #focusables}.\n\t *\n\t * **Note**: Hidden views (e.g. with `display: none`) are ignored.\n\t */\n\tpublic focusFirst(): void {\n\t\tthis._focus( this.first );\n\t}\n\n\t/**\n\t * Focuses the {@link #last} item in {@link #focusables}.\n\t *\n\t * **Note**: Hidden views (e.g. with `display: none`) are ignored.\n\t */\n\tpublic focusLast(): void {\n\t\tthis._focus( this.last );\n\t}\n\n\t/**\n\t * Focuses the {@link #next} item in {@link #focusables}.\n\t *\n\t * **Note**: Hidden views (e.g. with `display: none`) are ignored.\n\t */\n\tpublic focusNext(): void {\n\t\tthis._focus( this.next );\n\t}\n\n\t/**\n\t * Focuses the {@link #previous} item in {@link #focusables}.\n\t *\n\t * **Note**: Hidden views (e.g. with `display: none`) are ignored.\n\t */\n\tpublic focusPrevious(): void {\n\t\tthis._focus( this.previous );\n\t}\n\n\t/**\n\t * Focuses the given view if it exists.\n\t */\n\tprivate _focus( view: FocusableView | null ) {\n\t\tif ( view ) {\n\t\t\tview.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Returns the next or previous focusable view in {@link #focusables} with respect\n\t * to {@link #current}.\n\t *\n\t * @param step Either `1` for checking forward from {@link #current} or `-1` for checking backwards.\n\t */\n\tprivate _getFocusableItem( step: 1 | -1 ): FocusableView | null {\n\t\t// Cache for speed.\n\t\tconst current = this.current;\n\t\tconst collectionLength = this.focusables.length;\n\n\t\tif ( !collectionLength ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Start from the beginning if no view is focused.\n\t\t// https://github.com/ckeditor/ckeditor5-ui/issues/206\n\t\tif ( current === null ) {\n\t\t\treturn this[ step === 1 ? 'first' : 'last' ];\n\t\t}\n\n\t\t// Cycle in both directions.\n\t\tlet index = ( current + collectionLength + step ) % collectionLength;\n\n\t\tdo {\n\t\t\tconst view = this.focusables.get( index )!;\n\n\t\t\tif ( isFocusable( view ) ) {\n\t\t\t\treturn view as FocusableView;\n\t\t\t}\n\n\t\t\t// Cycle in both directions.\n\t\t\tindex = ( index + collectionLength + step ) % collectionLength;\n\t\t} while ( index !== current );\n\n\t\treturn null;\n\t}\n}\n\nexport type FocusableView = View & { focus(): void };\n\nexport interface FocusCyclerActions {\n\tfocusFirst?: ArrayOrItem<string>;\n\tfocusLast?: ArrayOrItem<string>;\n\tfocusNext?: ArrayOrItem<string>;\n\tfocusPrevious?: ArrayOrItem<string>;\n}\n\n/**\n * Checks whether a view is focusable.\n *\n * @param view A view to be checked.\n */\nfunction isFocusable( view: View & { focus?: unknown } ) {\n\treturn !!( view.focus && isVisible( view.element ) );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/toolbar/toolbarseparatorview\n */\n\nimport View from '../view';\n\nimport type { Locale } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The toolbar separator view class.\n */\nexport default class ToolbarSeparatorView extends View {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'span',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-toolbar__separator'\n\t\t\t\t]\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/toolbar/toolbarlinebreakview\n */\n\nimport View from '../view';\n\nimport type { Locale } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The toolbar line break view class.\n */\nexport default class ToolbarLineBreakView extends View {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'span',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-toolbar__line-break'\n\t\t\t\t]\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport type { ToolbarConfig, ToolbarConfigItem } from '@ckeditor/ckeditor5-core';\n\n/**\n * @module ui/toolbar/normalizetoolbarconfig\n */\n\n/**\n * Normalizes the toolbar configuration (`config.toolbar`), which:\n *\n * * may be defined as an `Array`:\n *\n * ```\n * toolbar: [ 'heading', 'bold', 'italic', 'link', ... ]\n * ```\n *\n * * or an `Object`:\n *\n * ```\n * toolbar: {\n * \titems: [ 'heading', 'bold', 'italic', 'link', ... ],\n * \tremoveItems: [ 'bold' ],\n * \t...\n * }\n * ```\n *\n * * or may not be defined at all (`undefined`)\n *\n * and returns it in the object form.\n *\n * @param config The value of `config.toolbar`.\n * @returns A normalized toolbar config object.\n */\nexport default function normalizeToolbarConfig(\n\tconfig: ToolbarConfig | undefined\n): {\n\titems: Array<ToolbarConfigItem>;\n\tremoveItems: Array<string>;\n\tshouldNotGroupWhenFull?: boolean;\n} {\n\tif ( Array.isArray( config ) ) {\n\t\treturn {\n\t\t\titems: config,\n\t\t\tremoveItems: []\n\t\t};\n\t}\n\n\tif ( !config ) {\n\t\treturn {\n\t\t\titems: [],\n\t\t\tremoveItems: []\n\t\t};\n\t}\n\n\treturn Object.assign( {\n\t\titems: [],\n\t\tremoveItems: []\n\t}, config );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module core/plugin\n */\n\n/* eslint-disable @typescript-eslint/no-invalid-void-type */\n\nimport { ObservableMixin, type ObservableSetEvent, type EventInfo } from '@ckeditor/ckeditor5-utils';\n\nimport type Editor from './editor/editor';\n\n/**\n * The base class for CKEditor plugin classes.\n */\nexport default class Plugin extends ObservableMixin() implements PluginInterface {\n\t/**\n\t * The editor instance.\n\t *\n\t * Note that most editors implement the {@link module:core/editor/editor~Editor#ui} property.\n\t * However, editors with an external UI (i.e. Bootstrap-based) or a headless editor may not have this property or\n\t * throw an error when accessing it.\n\t *\n\t * Because of above, to make plugins more universal, it is recommended to split features into:\n\t * - The \"editing\" part that uses the {@link module:core/editor/editor~Editor} class without `ui` property.\n\t * - The \"UI\" part that uses the {@link module:core/editor/editor~Editor} class and accesses `ui` property.\n\t */\n\tpublic readonly editor: Editor;\n\n\t/**\n\t * Flag indicating whether a plugin is enabled or disabled.\n\t * A disabled plugin will not transform text.\n\t *\n\t * Plugin can be simply disabled like that:\n\t *\n\t * ```ts\n\t * // Disable the plugin so that no toolbars are visible.\n\t * editor.plugins.get( 'TextTransformation' ).isEnabled = false;\n\t * ```\n\t *\n\t * You can also use {@link #forceDisabled} method.\n\t *\n\t * @observable\n\t * @readonly\n\t */\n\tpublic declare isEnabled: boolean;\n\n\t/**\n\t * Holds identifiers for {@link #forceDisabled} mechanism.\n\t */\n\tprivate _disableStack = new Set<string>();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper();\n\n\t\tthis.editor = editor;\n\n\t\tthis.set( 'isEnabled', true );\n\t}\n\n\t/**\n\t * Disables the plugin.\n\t *\n\t * Plugin may be disabled by multiple features or algorithms (at once). When disabling a plugin, unique id should be passed\n\t * (e.g. feature name). The same identifier should be used when {@link #clearForceDisabled enabling back} the plugin.\n\t * The plugin becomes enabled only after all features {@link #clearForceDisabled enabled it back}.\n\t *\n\t * Disabling and enabling a plugin:\n\t *\n\t * ```ts\n\t * plugin.isEnabled; // -> true\n\t * plugin.forceDisabled( 'MyFeature' );\n\t * plugin.isEnabled; // -> false\n\t * plugin.clearForceDisabled( 'MyFeature' );\n\t * plugin.isEnabled; // -> true\n\t * ```\n\t *\n\t * Plugin disabled by multiple features:\n\t *\n\t * ```ts\n\t * plugin.forceDisabled( 'MyFeature' );\n\t * plugin.forceDisabled( 'OtherFeature' );\n\t * plugin.clearForceDisabled( 'MyFeature' );\n\t * plugin.isEnabled; // -> false\n\t * plugin.clearForceDisabled( 'OtherFeature' );\n\t * plugin.isEnabled; // -> true\n\t * ```\n\t *\n\t * Multiple disabling with the same identifier is redundant:\n\t *\n\t * ```ts\n\t * plugin.forceDisabled( 'MyFeature' );\n\t * plugin.forceDisabled( 'MyFeature' );\n\t * plugin.clearForceDisabled( 'MyFeature' );\n\t * plugin.isEnabled; // -> true\n\t * ```\n\t *\n\t * **Note:** some plugins or algorithms may have more complex logic when it comes to enabling or disabling certain plugins,\n\t * so the plugin might be still disabled after {@link #clearForceDisabled} was used.\n\t *\n\t * @param id Unique identifier for disabling. Use the same id when {@link #clearForceDisabled enabling back} the plugin.\n\t */\n\tpublic forceDisabled( id: string ): void {\n\t\tthis._disableStack.add( id );\n\n\t\tif ( this._disableStack.size == 1 ) {\n\t\t\tthis.on<ObservableSetEvent<boolean>>( 'set:isEnabled', forceDisable, { priority: 'highest' } );\n\t\t\tthis.isEnabled = false;\n\t\t}\n\t}\n\n\t/**\n\t * Clears forced disable previously set through {@link #forceDisabled}. See {@link #forceDisabled}.\n\t *\n\t * @param id Unique identifier, equal to the one passed in {@link #forceDisabled} call.\n\t */\n\tpublic clearForceDisabled( id: string ): void {\n\t\tthis._disableStack.delete( id );\n\n\t\tif ( this._disableStack.size == 0 ) {\n\t\t\tthis.off( 'set:isEnabled', forceDisable );\n\t\t\tthis.isEnabled = true;\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic destroy(): void {\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get isContextPlugin(): false {\n\t\treturn false;\n\t}\n}\n\n/**\n * The base interface for CKEditor plugins.\n *\n * In its minimal form a plugin can be a simple function that accepts {@link module:core/editor/editor~Editor the editor}\n * as a parameter:\n *\n * ```ts\n * // A simple plugin that enables a data processor.\n * function MyPlugin( editor ) {\n * \teditor.data.processor = new MyDataProcessor();\n * }\n * ```\n *\n * In most cases however, you will want to inherit from the {@link ~Plugin} class which implements the\n * {@link module:utils/observablemixin~Observable} and is, therefore, more convenient:\n *\n * ```ts\n * class MyPlugin extends Plugin {\n * \tinit() {\n * \t\t// `listenTo()` and `editor` are available thanks to `Plugin`.\n * \t\t// By using `listenTo()` you will ensure that the listener is removed when\n * \t\t// the plugin is destroyed.\n * \t\tthis.listenTo( this.editor.data, 'ready', () => {\n * \t\t\t// Do something when the data is ready.\n * \t\t} );\n * \t}\n * }\n * ```\n *\n * The plugin class can have `pluginName` and `requires` static members. See {@link ~PluginStaticMembers} for more details.\n *\n * The plugin can also implement methods (e.g. {@link ~PluginInterface#init `init()`} or\n * {@link ~PluginInterface#destroy `destroy()`}) which, when present, will be used to properly\n * initialize and destroy the plugin.\n *\n * **Note:** When defined as a plain function, the plugin acts as a constructor and will be\n * called in parallel with other plugins' {@link ~PluginConstructor constructors}.\n * This means the code of that plugin will be executed **before** {@link ~PluginInterface#init `init()`} and\n * {@link ~PluginInterface#afterInit `afterInit()`} methods of other plugins and, for instance,\n * you cannot use it to extend other plugins' {@glink framework/architecture/editing-engine#schema schema}\n * rules as they are defined later on during the `init()` stage.\n */\nexport interface PluginInterface {\n\n\t/**\n\t * The second stage (after plugin constructor) of the plugin initialization.\n\t * Unlike the plugin constructor this method can be asynchronous.\n\t *\n\t * A plugin's `init()` method is called after its {@link ~PluginStaticMembers#requires dependencies} are initialized,\n\t * so in the same order as the constructors of these plugins.\n\t *\n\t * **Note:** This method is optional. A plugin instance does not need to have it defined.\n\t */\n\tinit?(): Promise<unknown> | null | undefined | void;\n\n\t/**\n\t * The third (and last) stage of the plugin initialization. See also {@link ~PluginConstructor} and {@link ~PluginInterface#init}.\n\t *\n\t * **Note:** This method is optional. A plugin instance does not need to have it defined.\n\t */\n\tafterInit?(): Promise<unknown> | null | undefined | void;\n\n\t/**\n\t * Destroys the plugin.\n\t *\n\t * **Note:** This method is optional. A plugin instance does not need to have it defined.\n\t */\n\tdestroy(): Promise<unknown> | null | undefined | void;\n}\n\n/**\n * Creates a new plugin instance. This is the first step of the plugin initialization.\n * See also {@link ~PluginInterface#init} and {@link ~PluginInterface#afterInit}.\n *\n * The plugin static properties should conform to {@link ~PluginStaticMembers `PluginStaticMembers` interface}.\n *\n * A plugin is always instantiated after its {@link ~PluginStaticMembers#requires dependencies} and the\n * {@link ~PluginInterface#init} and {@link ~PluginInterface#afterInit} methods are called in the same order.\n *\n * Usually, you will want to put your plugin's initialization code in the {@link ~PluginInterface#init} method.\n * The constructor can be understood as \"before init\" and used in special cases, just like\n * {@link ~PluginInterface#afterInit} serves the special \"after init\" scenarios (e.g.the code which depends on other\n * plugins, but which does not {@link ~PluginStaticMembers#requires explicitly require} them).\n */\nexport type PluginConstructor<TContext = Editor> =\n\t( PluginClassConstructor<TContext> | PluginFunctionConstructor<TContext> ) & PluginStaticMembers<TContext>;\n\n/**\n * In most cases, you will want to inherit from the {@link ~Plugin} class which implements the\n * {@link module:utils/observablemixin~Observable} and is, therefore, more convenient:\n *\n * ```ts\n * class MyPlugin extends Plugin {\n * \tinit() {\n * \t\t// `listenTo()` and `editor` are available thanks to `Plugin`.\n * \t\t// By using `listenTo()` you will ensure that the listener is removed when\n * \t\t// the plugin is destroyed.\n * \t\tthis.listenTo( this.editor.data, 'ready', () => {\n * \t\t\t// Do something when the data is ready.\n * \t\t} );\n * \t}\n * }\n * ```\n */\nexport type PluginClassConstructor<TContext = Editor> = new ( editor: TContext ) => PluginInterface;\n\n/**\n * In its minimal form a plugin can be a simple function that accepts {@link module:core/editor/editor~Editor the editor}\n * as a parameter:\n *\n * ```ts\n * // A simple plugin that enables a data processor.\n * function MyPlugin( editor ) {\n * \teditor.data.processor = new MyDataProcessor();\n * }\n * ```\n */\nexport type PluginFunctionConstructor<TContext = Editor> = ( editor: TContext ) => void;\n\n/**\n * Static properties of a plugin.\n */\nexport interface PluginStaticMembers<TContext = Editor> {\n\n\t/**\n\t * An array of plugins required by this plugin.\n\t *\n\t * To keep the plugin class definition tight it is recommended to define this property as a static getter:\n\t *\n\t * ```ts\n\t * import Image from './image.js';\n\t *\n\t * export default class ImageCaption {\n\t * \tstatic get requires() {\n\t * \t\treturn [ Image ];\n\t * \t}\n\t * }\n\t * ```\n\t */\n\treadonly requires?: PluginDependencies<TContext>;\n\n\t/**\n\t * An optional name of the plugin. If set, the plugin will be available in\n\t * {@link module:core/plugincollection~PluginCollection#get} by its\n\t * name and its constructor. If not, then only by its constructor.\n\t *\n\t * The name should reflect the constructor name.\n\t *\n\t * To keep the plugin class definition tight, it is recommended to define this property as a static getter:\n\t *\n\t * ```ts\n\t * export default class ImageCaption {\n\t * \tstatic get pluginName() {\n\t * \t\treturn 'ImageCaption';\n\t * \t}\n\t * }\n\t * ```\n\t *\n\t * Note: The native `Function.name` property could not be used to keep the plugin name because\n\t * it will be mangled during code minification.\n\t *\n\t * Naming a plugin is necessary to enable removing it through the\n\t * {@link module:core/editor/editorconfig~EditorConfig#removePlugins `config.removePlugins`} option.\n\t */\n\treadonly pluginName?: string;\n\n\t/**\n\t * A flag which defines if a plugin is allowed or not allowed to be used directly by a {@link module:core/context~Context}.\n\t */\n\treadonly isContextPlugin?: boolean;\n}\n\nexport type PluginDependencies<TContext = Editor> = ReadonlyArray<PluginConstructor<TContext> | string>;\n\n/**\n * An array of loaded plugins.\n */\nexport type LoadedPlugins = Array<PluginInterface>;\n\n/**\n * Helper function that forces plugin to be disabled.\n */\nfunction forceDisable( evt: EventInfo<string, boolean> ) {\n\tevt.return = false;\n\tevt.stop();\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module core/command\n */\n\nimport {\n\tObservableMixin,\n\ttype EventInfo,\n\ttype ObservableChangeEvent,\n\ttype DecoratedMethodEvent,\n\ttype ObservableSetEvent\n} from '@ckeditor/ckeditor5-utils';\n\nimport type Editor from './editor/editor';\n\n/**\n * Base class for the CKEditor commands.\n *\n * Commands are the main way to manipulate the editor contents and state. They are mostly used by UI elements (or by other\n * commands) to make changes in the model. Commands are available in every part of the code that has access to\n * the {@link module:core/editor/editor~Editor editor} instance.\n *\n * Instances of registered commands can be retrieved from {@link module:core/editor/editor~Editor#commands `editor.commands`}.\n * The easiest way to execute a command is through {@link module:core/editor/editor~Editor#execute `editor.execute()`}.\n *\n * By default, commands are disabled when the editor is in the {@link module:core/editor/editor~Editor#isReadOnly read-only} mode\n * but commands with the {@link module:core/command~Command#affectsData `affectsData`} flag set to `false` will not be disabled.\n */\nexport default class Command extends ObservableMixin() {\n\t/**\n\t * The editor on which this command will be used.\n\t */\n\tpublic readonly editor: Editor;\n\n\t/**\n\t * The value of the command. A given command class should define what it represents for it.\n\t *\n\t * For example, the `'bold'` command's value indicates whether the selection starts in a bolded text.\n\t * And the value of the `'link'` command may be an object with link details.\n\t *\n\t * It is possible for a command to have no value (e.g. for stateless actions such as `'uploadImage'`).\n\t *\n\t * A given command class should control this value by overriding the {@link #refresh `refresh()`} method.\n\t *\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public value: unknown;\n\n\t/**\n\t * Flag indicating whether a command is enabled or disabled.\n\t * A disabled command will do nothing when executed.\n\t *\n\t * A given command class should control this value by overriding the {@link #refresh `refresh()`} method.\n\t *\n\t * It is possible to disable a command \"from outside\" using {@link #forceDisabled} method.\n\t *\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public isEnabled: boolean;\n\n\t/**\n\t * A flag indicating whether a command's `isEnabled` state should be changed depending on where the document\n\t * selection is placed.\n\t *\n\t * By default, it is set to `true`. If the document selection is placed in a\n\t * {@link module:engine/model/model~Model#canEditAt non-editable} place (such as non-editable root), the command becomes disabled.\n\t *\n\t * The flag should be changed to `false` in a concrete command's constructor if the command should not change its `isEnabled`\n\t * accordingly to the document selection.\n\t */\n\tprotected _isEnabledBasedOnSelection: boolean;\n\n\t/**\n\t * A flag indicating whether a command execution changes the editor data or not.\n\t *\n\t * @see #affectsData\n\t */\n\tprivate _affectsData: boolean;\n\n\t/**\n\t * Holds identifiers for {@link #forceDisabled} mechanism.\n\t */\n\tprivate readonly _disableStack: Set<string>;\n\n\t/**\n\t * Creates a new `Command` instance.\n\t *\n\t * @param editor The editor on which this command will be used.\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper();\n\n\t\tthis.editor = editor;\n\t\tthis.set( 'value', undefined );\n\t\tthis.set( 'isEnabled', false );\n\n\t\tthis._affectsData = true;\n\t\tthis._isEnabledBasedOnSelection = true;\n\t\tthis._disableStack = new Set();\n\n\t\tthis.decorate( 'execute' );\n\n\t\t// By default, every command is refreshed when changes are applied to the model.\n\t\tthis.listenTo( this.editor.model.document, 'change', () => {\n\t\t\tthis.refresh();\n\t\t} );\n\n\t\tthis.listenTo<ObservableChangeEvent<boolean>>( editor, 'change:isReadOnly', () => {\n\t\t\tthis.refresh();\n\t\t} );\n\n\t\t// By default, commands are disabled if the selection is in non-editable place or editor is in read-only mode.\n\t\tthis.on<ObservableSetEvent<boolean>>( 'set:isEnabled', evt => {\n\t\t\tif ( !this.affectsData ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selection = editor.model.document.selection;\n\t\t\tconst selectionInGraveyard = selection.getFirstPosition()!.root.rootName == '$graveyard';\n\t\t\tconst canEditAtSelection = !selectionInGraveyard && editor.model.canEditAt( selection );\n\n\t\t\t// Disable if editor is read only, or when selection is in a place which cannot be edited.\n\t\t\t//\n\t\t\t// Checking `editor.isReadOnly` is needed for all commands that have `_isEnabledBasedOnSelection == false`.\n\t\t\t// E.g. undo does not base on selection, but affects data and should be disabled when the editor is in read-only mode.\n\t\t\tif ( editor.isReadOnly || this._isEnabledBasedOnSelection && !canEditAtSelection ) {\n\t\t\t\tevt.return = false;\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'highest' } );\n\n\t\tthis.on<CommandExecuteEvent>( 'execute', evt => {\n\t\t\tif ( !this.isEnabled ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * A flag indicating whether a command execution changes the editor data or not.\n\t *\n\t * Commands with `affectsData` set to `false` will not be automatically disabled in\n\t * the {@link module:core/editor/editor~Editor#isReadOnly read-only mode} and\n\t * {@glink features/read-only#related-features other editor modes} with restricted user write permissions.\n\t *\n\t * **Note:** You do not have to set it for your every command. It is `true` by default.\n\t *\n\t * @default true\n\t */\n\tpublic get affectsData(): boolean {\n\t\treturn this._affectsData;\n\t}\n\n\tprotected set affectsData( affectsData: boolean ) {\n\t\tthis._affectsData = affectsData;\n\t}\n\n\t/**\n\t * Refreshes the command. The command should update its {@link #isEnabled} and {@link #value} properties\n\t * in this method.\n\t *\n\t * This method is automatically called when\n\t * {@link module:engine/model/document~Document#event:change any changes are applied to the document}.\n\t */\n\tpublic refresh(): void {\n\t\tthis.isEnabled = true;\n\t}\n\n\t/**\n\t * Disables the command.\n\t *\n\t * Command may be disabled by multiple features or algorithms (at once). When disabling a command, unique id should be passed\n\t * (e.g. the feature name). The same identifier should be used when {@link #clearForceDisabled enabling back} the command.\n\t * The command becomes enabled only after all features {@link #clearForceDisabled enabled it back}.\n\t *\n\t * Disabling and enabling a command:\n\t *\n\t * ```ts\n\t * command.isEnabled; // -> true\n\t * command.forceDisabled( 'MyFeature' );\n\t * command.isEnabled; // -> false\n\t * command.clearForceDisabled( 'MyFeature' );\n\t * command.isEnabled; // -> true\n\t * ```\n\t *\n\t * Command disabled by multiple features:\n\t *\n\t * ```ts\n\t * command.forceDisabled( 'MyFeature' );\n\t * command.forceDisabled( 'OtherFeature' );\n\t * command.clearForceDisabled( 'MyFeature' );\n\t * command.isEnabled; // -> false\n\t * command.clearForceDisabled( 'OtherFeature' );\n\t * command.isEnabled; // -> true\n\t * ```\n\t *\n\t * Multiple disabling with the same identifier is redundant:\n\t *\n\t * ```ts\n\t * command.forceDisabled( 'MyFeature' );\n\t * command.forceDisabled( 'MyFeature' );\n\t * command.clearForceDisabled( 'MyFeature' );\n\t * command.isEnabled; // -> true\n\t * ```\n\t *\n\t * **Note:** some commands or algorithms may have more complex logic when it comes to enabling or disabling certain commands,\n\t * so the command might be still disabled after {@link #clearForceDisabled} was used.\n\t *\n\t * @param id Unique identifier for disabling. Use the same id when {@link #clearForceDisabled enabling back} the command.\n\t */\n\tpublic forceDisabled( id: string ): void {\n\t\tthis._disableStack.add( id );\n\n\t\tif ( this._disableStack.size == 1 ) {\n\t\t\tthis.on<ObservableSetEvent<boolean>>( 'set:isEnabled', forceDisable, { priority: 'highest' } );\n\t\t\tthis.isEnabled = false;\n\t\t}\n\t}\n\n\t/**\n\t * Clears forced disable previously set through {@link #forceDisabled}. See {@link #forceDisabled}.\n\t *\n\t * @param id Unique identifier, equal to the one passed in {@link #forceDisabled} call.\n\t */\n\tpublic clearForceDisabled( id: string ): void {\n\t\tthis._disableStack.delete( id );\n\n\t\tif ( this._disableStack.size == 0 ) {\n\t\t\tthis.off( 'set:isEnabled', forceDisable );\n\t\t\tthis.refresh();\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * A command may accept parameters. They will be passed from {@link module:core/editor/editor~Editor#execute `editor.execute()`}\n\t * to the command.\n\t *\n\t * The `execute()` method will automatically abort when the command is disabled ({@link #isEnabled} is `false`).\n\t * This behavior is implemented by a high priority listener to the {@link #event:execute} event.\n\t *\n\t * In order to see how to disable a command from \"outside\" see the {@link #isEnabled} documentation.\n\t *\n\t * This method may return a value, which would be forwarded all the way down to the\n\t * {@link module:core/editor/editor~Editor#execute `editor.execute()`}.\n\t *\n\t * @fires execute\n\t */\n\tpublic execute( ...args: Array<unknown> ): unknown { return undefined; }\n\n\t/**\n\t * Destroys the command.\n\t */\n\tpublic destroy(): void {\n\t\tthis.stopListening();\n\t}\n}\n\n/**\n * Helper function that forces command to be disabled.\n */\nfunction forceDisable( evt: EventInfo<string, boolean> ) {\n\tevt.return = false;\n\tevt.stop();\n}\n\n/**\n * Event fired by the {@link module:core/command~Command#execute} method. The command action is a listener to this event so it's\n * possible to change/cancel the behavior of the command by listening to this event.\n *\n * See {@link module:utils/observablemixin~Observable#decorate} for more information and samples.\n *\n * **Note:** This event is fired even if command is disabled. However, it is automatically blocked\n * by a high priority listener in order to prevent command execution.\n *\n * @eventName ~Command#execute\n */\nexport type CommandExecuteEvent = DecoratedMethodEvent<Command, 'execute'>;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module core/multicommand\n */\n\nimport Command from './command';\nimport type Editor from './editor/editor';\n\nimport {\n\tinsertToPriorityArray,\n\ttype PriorityString,\n\ttype ObservableChangeEvent\n} from '@ckeditor/ckeditor5-utils';\n\n/**\n * A CKEditor command that aggregates other commands.\n *\n * This command is used to proxy multiple commands. The multi-command is enabled when\n * at least one of its registered child commands is enabled.\n * When executing a multi-command, the first enabled command with highest priority will be executed.\n *\n * ```ts\n * const multiCommand = new MultiCommand( editor );\n *\n * const commandFoo = new Command( editor );\n * const commandBar = new Command( editor );\n *\n * // Register a child command.\n * multiCommand.registerChildCommand( commandFoo );\n * // Register a child command with a low priority.\n * multiCommand.registerChildCommand( commandBar, { priority: 'low' } );\n *\n * // Enable one of the commands.\n * commandBar.isEnabled = true;\n *\n * multiCommand.execute(); // Will execute commandBar.\n * ```\n */\nexport default class MultiCommand extends Command {\n\t/**\n\t * Registered child commands definitions.\n\t */\n\tprivate _childCommandsDefinitions: Array<{ command: Command; priority: PriorityString }> = [];\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\t// Override base command refresh(): the command's state is changed when one of child commands changes states.\n\t}\n\n\t/**\n\t * Executes the first enabled command which has the highest priority of all registered child commands.\n\t *\n\t * @returns The value returned by the {@link module:core/command~Command#execute `command.execute()`}.\n\t */\n\tpublic override execute( ...args: Array<unknown> ): unknown {\n\t\tconst command = this._getFirstEnabledCommand();\n\n\t\treturn !!command && command.execute( args );\n\t}\n\n\t/**\n\t * Registers a child command.\n\t *\n\t * @param options An object with configuration options.\n\t * @param options.priority Priority of a command to register.\n\t */\n\tpublic registerChildCommand(\n\t\tcommand: Command,\n\t\toptions: { priority?: PriorityString } = {}\n\t): void {\n\t\tinsertToPriorityArray( this._childCommandsDefinitions, { command, priority: options.priority || 'normal' } );\n\n\t\t// Change multi-command enabled state when one of registered commands changes state.\n\t\tcommand.on<ObservableChangeEvent<boolean>>( 'change:isEnabled', () => this._checkEnabled() );\n\n\t\tthis._checkEnabled();\n\t}\n\n\t/**\n\t * Checks if any of child commands is enabled.\n\t */\n\tprivate _checkEnabled(): void {\n\t\tthis.isEnabled = !!this._getFirstEnabledCommand();\n\t}\n\n\t/**\n\t * Returns a first enabled command with the highest priority or `undefined` if none of them is enabled.\n\t */\n\tprivate _getFirstEnabledCommand(): Command | undefined {\n\t\tconst commandDefinition = this._childCommandsDefinitions.find( ( { command } ) => command.isEnabled );\n\n\t\treturn commandDefinition && commandDefinition.command;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module core/plugincollection\n */\n\nimport { CKEditorError, EmitterMixin } from '@ckeditor/ckeditor5-utils';\nimport type { LoadedPlugins, PluginClassConstructor, PluginConstructor, PluginInterface } from './plugin';\n\n/**\n * Manages a list of CKEditor plugins, including loading, resolving dependencies and initialization.\n */\nexport default class PluginCollection<TContext extends object> extends EmitterMixin() implements Iterable<PluginEntry<TContext>> {\n\tprivate _context: TContext;\n\n\tprivate _plugins = new Map<PluginConstructor<TContext> | string, PluginInterface>();\n\n\t/**\n\t * A map of plugin constructors that can be retrieved by their names.\n\t */\n\tprivate _availablePlugins: Map<string, PluginConstructor<TContext>>;\n\n\t/**\n\t * Map of {@link module:core/contextplugin~ContextPlugin context plugins} which can be retrieved by their constructors or instances.\n\t */\n\tprivate _contextPlugins: Map<PluginConstructor<TContext> | PluginInterface, PluginConstructor<TContext> | PluginInterface>;\n\n\t/**\n\t * Creates an instance of the plugin collection class.\n\t * Allows loading and initializing plugins and their dependencies.\n\t * Allows providing a list of already loaded plugins. These plugins will not be destroyed along with this collection.\n\t *\n\t * @param availablePlugins Plugins (constructors) which the collection will be able to use\n\t * when {@link module:core/plugincollection~PluginCollection#init} is used with the plugin names (strings, instead of constructors).\n\t * Usually, the editor will pass its built-in plugins to the collection so they can later be\n\t * used in `config.plugins` or `config.removePlugins` by names.\n\t * @param contextPlugins A list of already initialized plugins represented by a `[ PluginConstructor, pluginInstance ]` pair.\n\t */\n\tconstructor(\n\t\tcontext: TContext,\n\t\tavailablePlugins: Iterable<PluginConstructor<TContext>> = [],\n\t\tcontextPlugins: Iterable<PluginEntry<TContext>> = []\n\t) {\n\t\tsuper();\n\n\t\tthis._context = context;\n\t\tthis._availablePlugins = new Map();\n\n\t\tfor ( const PluginConstructor of availablePlugins ) {\n\t\t\tif ( PluginConstructor.pluginName ) {\n\t\t\t\tthis._availablePlugins.set( PluginConstructor.pluginName, PluginConstructor );\n\t\t\t}\n\t\t}\n\n\t\tthis._contextPlugins = new Map();\n\n\t\tfor ( const [ PluginConstructor, pluginInstance ] of contextPlugins ) {\n\t\t\tthis._contextPlugins.set( PluginConstructor, pluginInstance );\n\t\t\tthis._contextPlugins.set( pluginInstance, PluginConstructor );\n\n\t\t\t// To make it possible to require a plugin by its name.\n\t\t\tif ( PluginConstructor.pluginName ) {\n\t\t\t\tthis._availablePlugins.set( PluginConstructor.pluginName, PluginConstructor );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Iterable interface.\n\t *\n\t * Returns `[ PluginConstructor, pluginInstance ]` pairs.\n\t */\n\tpublic* [ Symbol.iterator ](): IterableIterator<PluginEntry<TContext>> {\n\t\tfor ( const entry of this._plugins ) {\n\t\t\tif ( typeof entry[ 0 ] == 'function' ) {\n\t\t\t\tyield entry as any;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic get<TConstructor extends PluginClassConstructor<TContext>>( key: TConstructor ): InstanceType<TConstructor>;\n\tpublic get<TName extends string>( key: TName ): PluginsMap[ TName ];\n\n\t/**\n\t * Gets the plugin instance by its constructor or name.\n\t *\n\t * ```ts\n\t * // Check if 'Clipboard' plugin was loaded.\n\t * if ( editor.plugins.has( 'ClipboardPipeline' ) ) {\n\t * \t// Get clipboard plugin instance\n\t * \tconst clipboard = editor.plugins.get( 'ClipboardPipeline' );\n\t *\n\t * \tthis.listenTo( clipboard, 'inputTransformation', ( evt, data ) => {\n\t * \t\t// Do something on clipboard input.\n\t * \t} );\n\t * }\n\t * ```\n\t *\n\t * **Note**: This method will throw an error if a plugin is not loaded. Use `{@link #has editor.plugins.has()}`\n\t * to check if a plugin is available.\n\t *\n\t * @param key The plugin constructor or {@link module:core/plugin~PluginStaticMembers#pluginName name}.\n\t */\n\tpublic get( key: PluginConstructor<TContext> | string ): PluginInterface {\n\t\tconst plugin = this._plugins.get( key );\n\n\t\tif ( !plugin ) {\n\t\t\tlet pluginName = key;\n\n\t\t\tif ( typeof key == 'function' ) {\n\t\t\t\tpluginName = key.pluginName || key.name;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * The plugin is not loaded and could not be obtained.\n\t\t\t *\n\t\t\t * Plugin classes (constructors) need to be provided to the editor and must be loaded before they can be obtained from\n\t\t\t * the plugin collection.\n\t\t\t * This is usually done in CKEditor 5 builds by setting the {@link module:core/editor/editor~Editor.builtinPlugins}\n\t\t\t * property.\n\t\t\t *\n\t\t\t * **Note**: You can use `{@link module:core/plugincollection~PluginCollection#has editor.plugins.has()}`\n\t\t\t * to check if a plugin was loaded.\n\t\t\t *\n\t\t\t * @error plugincollection-plugin-not-loaded\n\t\t\t * @param plugin The name of the plugin which is not loaded.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'plugincollection-plugin-not-loaded', this._context, { plugin: pluginName } );\n\t\t}\n\n\t\treturn plugin;\n\t}\n\n\t/**\n\t * Checks if a plugin is loaded.\n\t *\n\t * ```ts\n\t * // Check if the 'Clipboard' plugin was loaded.\n\t * if ( editor.plugins.has( 'ClipboardPipeline' ) ) {\n\t * \t// Now use the clipboard plugin instance:\n\t * \tconst clipboard = editor.plugins.get( 'ClipboardPipeline' );\n\t *\n\t * \t// ...\n\t * }\n\t * ```\n\t *\n\t * @param key The plugin constructor or {@link module:core/plugin~PluginStaticMembers#pluginName name}.\n\t */\n\tpublic has( key: PluginConstructor<TContext> | string ): boolean {\n\t\treturn this._plugins.has( key );\n\t}\n\n\t/**\n\t * Initializes a set of plugins and adds them to the collection.\n\t *\n\t * @param plugins An array of {@link module:core/plugin~PluginInterface plugin constructors}\n\t * or {@link module:core/plugin~PluginStaticMembers#pluginName plugin names}.\n\t * @param pluginsToRemove Names of the plugins or plugin constructors\n\t * that should not be loaded (despite being specified in the `plugins` array).\n\t * @param pluginsSubstitutions An array of {@link module:core/plugin~PluginInterface plugin constructors}\n\t * that will be used to replace plugins of the same names that were passed in `plugins` or that are in their dependency tree.\n\t * A useful option for replacing built-in plugins while creating tests (for mocking their APIs). Plugins that will be replaced\n\t * must follow these rules:\n\t * * The new plugin must be a class.\n\t * * The new plugin must be named.\n\t * * Both plugins must not depend on other plugins.\n\t * @returns A promise which gets resolved once all plugins are loaded and available in the collection.\n\t */\n\tpublic init(\n\t\tplugins: ReadonlyArray<PluginConstructor<TContext> | string>,\n\t\tpluginsToRemove: ReadonlyArray<PluginConstructor<TContext> | string> = [],\n\t\tpluginsSubstitutions: ReadonlyArray<PluginConstructor<TContext>> = []\n\t): Promise<LoadedPlugins> {\n\t\t// Plugin initialization procedure consists of 2 main steps:\n\t\t// 1) collecting all available plugin constructors,\n\t\t// 2) verification whether all required plugins can be instantiated.\n\t\t//\n\t\t// In the first step, all plugin constructors, available in the provided `plugins` array and inside\n\t\t// plugin's dependencies (from the `Plugin.requires` array), are recursively collected and added to the existing\n\t\t// `this._availablePlugins` map, but without any verification at the given moment. Performing the verification\n\t\t// at this point (during the plugin constructor searching) would cause false errors to occur, that some plugin\n\t\t// is missing but in fact it may be defined further in the array as the dependency of other plugin. After\n\t\t// traversing the entire dependency tree, it will be checked if all required \"top level\" plugins are available.\n\t\t//\n\t\t// In the second step, the list of plugins that have not been explicitly removed is traversed to get all the\n\t\t// plugin constructors to be instantiated in the correct order and to validate against some rules. Finally, if\n\t\t// no plugin is missing and no other error has been found, they all will be instantiated.\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias\n\t\tconst that = this;\n\t\tconst context = this._context;\n\n\t\tfindAvailablePluginConstructors( plugins );\n\n\t\tvalidatePlugins( plugins );\n\n\t\tconst pluginsToLoad = plugins.filter( plugin => !isPluginRemoved( plugin, pluginsToRemove ) );\n\n\t\tconst pluginConstructors = [ ...getPluginConstructors( pluginsToLoad ) ];\n\n\t\tsubstitutePlugins( pluginConstructors, pluginsSubstitutions );\n\n\t\tconst pluginInstances = loadPlugins( pluginConstructors );\n\n\t\treturn initPlugins( pluginInstances, 'init' )\n\t\t\t.then( () => initPlugins( pluginInstances, 'afterInit' ) )\n\t\t\t.then( () => pluginInstances );\n\n\t\tfunction isPluginConstructor( plugin: PluginConstructor<TContext> | string | null ): plugin is PluginConstructor<TContext> {\n\t\t\treturn typeof plugin === 'function';\n\t\t}\n\n\t\tfunction isContextPlugin(\n\t\t\tplugin: PluginConstructor<TContext> | string | null\n\t\t): plugin is PluginConstructor<TContext> & { isContextPlugin: true } {\n\t\t\treturn isPluginConstructor( plugin ) && !!plugin.isContextPlugin;\n\t\t}\n\n\t\tfunction isPluginRemoved(\n\t\t\tplugin: PluginConstructor<TContext> | string,\n\t\t\tpluginsToRemove: ReadonlyArray<PluginConstructor<TContext> | string>\n\t\t) {\n\t\t\treturn pluginsToRemove.some( removedPlugin => {\n\t\t\t\tif ( removedPlugin === plugin ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif ( getPluginName( plugin ) === removedPlugin ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif ( getPluginName( removedPlugin ) === plugin ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t} );\n\t\t}\n\n\t\tfunction getPluginName( plugin: PluginConstructor<TContext> | string ) {\n\t\t\treturn isPluginConstructor( plugin ) ?\n\t\t\t\tplugin.pluginName || plugin.name :\n\t\t\t\tplugin;\n\t\t}\n\n\t\tfunction findAvailablePluginConstructors(\n\t\t\tplugins: ReadonlyArray<PluginConstructor<TContext> | string>,\n\t\t\tprocessed = new Set<PluginConstructor<TContext>>()\n\t\t) {\n\t\t\tplugins.forEach( plugin => {\n\t\t\t\tif ( !isPluginConstructor( plugin ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( processed.has( plugin ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tprocessed.add( plugin );\n\n\t\t\t\tif ( plugin.pluginName && !that._availablePlugins.has( plugin.pluginName ) ) {\n\t\t\t\t\tthat._availablePlugins.set( plugin.pluginName, plugin );\n\t\t\t\t}\n\n\t\t\t\tif ( plugin.requires ) {\n\t\t\t\t\tfindAvailablePluginConstructors( plugin.requires, processed );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tfunction getPluginConstructors(\n\t\t\tplugins: ReadonlyArray<PluginConstructor<TContext> | string>,\n\t\t\tprocessed = new Set<PluginConstructor<TContext>>()\n\t\t) {\n\t\t\treturn plugins\n\t\t\t\t.map( plugin => {\n\t\t\t\t\treturn isPluginConstructor( plugin ) ?\n\t\t\t\t\t\tplugin :\n\t\t\t\t\t\tthat._availablePlugins.get( plugin )!;\n\t\t\t\t} )\n\t\t\t\t.reduce( ( result, plugin ) => {\n\t\t\t\t\tif ( processed.has( plugin ) ) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t\tprocessed.add( plugin );\n\n\t\t\t\t\tif ( plugin.requires ) {\n\t\t\t\t\t\tvalidatePlugins( plugin.requires, plugin );\n\n\t\t\t\t\t\tgetPluginConstructors( plugin.requires, processed ).forEach( plugin => result.add( plugin ) );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn result.add( plugin );\n\t\t\t\t}, new Set<PluginConstructor<TContext>>() );\n\t\t}\n\n\t\tfunction validatePlugins(\n\t\t\tplugins: ReadonlyArray<PluginConstructor<TContext> | string>,\n\t\t\tparentPluginConstructor: PluginConstructor<TContext> | null = null\n\t\t) {\n\t\t\tplugins\n\t\t\t\t.map( plugin => {\n\t\t\t\t\treturn isPluginConstructor( plugin ) ?\n\t\t\t\t\t\tplugin :\n\t\t\t\t\t\tthat._availablePlugins.get( plugin ) || plugin;\n\t\t\t\t} )\n\t\t\t\t.forEach( plugin => {\n\t\t\t\t\tcheckMissingPlugin( plugin, parentPluginConstructor );\n\t\t\t\t\tcheckContextPlugin( plugin, parentPluginConstructor );\n\t\t\t\t\tcheckRemovedPlugin( plugin, parentPluginConstructor );\n\t\t\t\t} );\n\t\t}\n\n\t\tfunction checkMissingPlugin(\n\t\t\tplugin: PluginConstructor<TContext> | string,\n\t\t\tparentPluginConstructor: PluginConstructor<TContext> | null\n\t\t) {\n\t\t\tif ( isPluginConstructor( plugin ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( parentPluginConstructor ) {\n\t\t\t\t/**\n\t\t\t\t * A required \"soft\" dependency was not found on the plugin list.\n\t\t\t\t *\n\t\t\t\t * When configuring the editor, either prior to building (via\n\t\t\t\t * {@link module:core/editor/editor~Editor.builtinPlugins `Editor.builtinPlugins`}) or when\n\t\t\t\t * creating a new instance of the editor (e.g. via\n\t\t\t\t * {@link module:core/editor/editorconfig~EditorConfig#plugins `config.plugins`}), you need to provide\n\t\t\t\t * some of the dependencies for other plugins that you used.\n\t\t\t\t *\n\t\t\t\t * This error is thrown when one of these dependencies was not provided. The name of the missing plugin\n\t\t\t\t * can be found in `missingPlugin` and the plugin that required it in `requiredBy`.\n\t\t\t\t *\n\t\t\t\t * In order to resolve it, you need to import the missing plugin and add it to the\n\t\t\t\t * current list of plugins (`Editor.builtinPlugins` or `config.plugins`/`config.extraPlugins`).\n\t\t\t\t *\n\t\t\t\t * Soft requirements were introduced in version 26.0.0. If you happen to stumble upon this error\n\t\t\t\t * when upgrading to version 26.0.0, read also the\n\t\t\t\t * {@glink updating/guides/update-to-26 Migration to 26.0.0} guide.\n\t\t\t\t *\n\t\t\t\t * @error plugincollection-soft-required\n\t\t\t\t * @param missingPlugin The name of the required plugin.\n\t\t\t\t * @param requiredBy The name of the plugin that requires the other plugin.\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'plugincollection-soft-required',\n\t\t\t\t\tcontext,\n\t\t\t\t\t{ missingPlugin: plugin, requiredBy: getPluginName( parentPluginConstructor ) }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * A plugin is not available and could not be loaded.\n\t\t\t *\n\t\t\t * Plugin classes (constructors) need to be provided to the editor before they can be loaded by name.\n\t\t\t * This is usually done in CKEditor 5 builds by setting the {@link module:core/editor/editor~Editor.builtinPlugins}\n\t\t\t * property.\n\t\t\t *\n\t\t\t * **If you see this warning when using one of the {@glink installation/getting-started/predefined-builds\n\t\t\t * CKEditor 5 Builds}**,\n\t\t\t * it means that you try to enable a plugin which was not included in that build. This may be due to a typo\n\t\t\t * in the plugin name or simply because that plugin is not a part of this build. In the latter scenario,\n\t\t\t * read more about {@glink installation/getting-started/quick-start custom builds}.\n\t\t\t *\n\t\t\t * **If you see this warning when using one of the editor creators directly** (not a build), then it means\n\t\t\t * that you tried loading plugins by name. However, unlike CKEditor 4, CKEditor 5 does not implement a \"plugin loader\".\n\t\t\t * This means that CKEditor 5 does not know where to load the plugin modules from. Therefore, you need to\n\t\t\t * provide each plugin through a reference (as a constructor function). Check out the examples in\n\t\t\t * {@glink installation/advanced/alternative-setups/integrating-from-source-webpack \"Building from source\"}.\n\t\t\t *\n\t\t\t * @error plugincollection-plugin-not-found\n\t\t\t * @param plugin The name of the plugin which could not be loaded.\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'plugincollection-plugin-not-found',\n\t\t\t\tcontext,\n\t\t\t\t{ plugin }\n\t\t\t);\n\t\t}\n\n\t\tfunction checkContextPlugin(\n\t\t\tplugin: PluginConstructor<TContext> | string,\n\t\t\tparentPluginConstructor: PluginConstructor<TContext> | null\n\t\t) {\n\t\t\tif ( !isContextPlugin( parentPluginConstructor ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isContextPlugin( plugin ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * If a plugin is a context plugin, all plugins it requires should also be context plugins\n\t\t\t * instead of plugins. In other words, if one plugin can be used in the context,\n\t\t\t * all its requirements should also be ready to be used in the context. Note that the context\n\t\t\t * provides only a part of the API provided by the editor. If one plugin needs a full\n\t\t\t * editor API, all plugins which require it are considered as plugins that need a full\n\t\t\t * editor API.\n\t\t\t *\n\t\t\t * @error plugincollection-context-required\n\t\t\t * @param plugin The name of the required plugin.\n\t\t\t * @param requiredBy The name of the parent plugin.\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'plugincollection-context-required',\n\t\t\t\tcontext,\n\t\t\t\t{ plugin: getPluginName( plugin ), requiredBy: getPluginName( parentPluginConstructor ) }\n\t\t\t);\n\t\t}\n\n\t\tfunction checkRemovedPlugin(\n\t\t\tplugin: PluginConstructor<TContext> | string,\n\t\t\tparentPluginConstructor: PluginConstructor<TContext> | null\n\t\t) {\n\t\t\tif ( !parentPluginConstructor ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !isPluginRemoved( plugin, pluginsToRemove ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Cannot load a plugin because one of its dependencies is listed in the `removePlugins` option.\n\t\t\t *\n\t\t\t * @error plugincollection-required\n\t\t\t * @param plugin The name of the required plugin.\n\t\t\t * @param requiredBy The name of the parent plugin.\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'plugincollection-required',\n\t\t\t\tcontext,\n\t\t\t\t{ plugin: getPluginName( plugin ), requiredBy: getPluginName( parentPluginConstructor ) }\n\t\t\t);\n\t\t}\n\n\t\tfunction loadPlugins( pluginConstructors: ReadonlyArray<PluginConstructor<TContext>> ) {\n\t\t\treturn pluginConstructors.map( PluginConstructor => {\n\t\t\t\tlet pluginInstance = that._contextPlugins.get( PluginConstructor ) as ( PluginInterface | undefined );\n\n\t\t\t\tpluginInstance = pluginInstance || new ( PluginConstructor as PluginClassConstructor<TContext> )( context );\n\n\t\t\t\tthat._add( PluginConstructor, pluginInstance );\n\n\t\t\t\treturn pluginInstance;\n\t\t\t} );\n\t\t}\n\n\t\tfunction initPlugins( pluginInstances: ReadonlyArray<PluginInterface>, method: 'init' | 'afterInit' ) {\n\t\t\treturn pluginInstances.reduce<Promise<unknown>>( ( promise, plugin ) => {\n\t\t\t\tif ( !plugin[ method ] ) {\n\t\t\t\t\treturn promise;\n\t\t\t\t}\n\n\t\t\t\tif ( that._contextPlugins.has( plugin ) ) {\n\t\t\t\t\treturn promise;\n\t\t\t\t}\n\n\t\t\t\treturn promise.then( plugin[ method ]!.bind( plugin ) );\n\t\t\t}, Promise.resolve() );\n\t\t}\n\n\t\t/**\n\t\t * Replaces plugin constructors with the specified set of plugins.\n\t\t */\n\t\tfunction substitutePlugins(\n\t\t\tpluginConstructors: Array<PluginConstructor<TContext>>,\n\t\t\tpluginsSubstitutions: ReadonlyArray<PluginConstructor<TContext>>\n\t\t) {\n\t\t\tfor ( const pluginItem of pluginsSubstitutions ) {\n\t\t\t\tif ( typeof pluginItem != 'function' ) {\n\t\t\t\t\t/**\n\t\t\t\t\t * The plugin replacing an existing plugin must be a function.\n\t\t\t\t\t *\n\t\t\t\t\t * @error plugincollection-replace-plugin-invalid-type\n\t\t\t\t\t */\n\t\t\t\t\tthrow new CKEditorError( 'plugincollection-replace-plugin-invalid-type', null, { pluginItem } );\n\t\t\t\t}\n\n\t\t\t\tconst pluginName = pluginItem.pluginName;\n\n\t\t\t\tif ( !pluginName ) {\n\t\t\t\t\t/**\n\t\t\t\t\t * The plugin replacing an existing plugin must have a name.\n\t\t\t\t\t *\n\t\t\t\t\t * @error plugincollection-replace-plugin-missing-name\n\t\t\t\t\t */\n\t\t\t\t\tthrow new CKEditorError( 'plugincollection-replace-plugin-missing-name', null, { pluginItem } );\n\t\t\t\t}\n\n\t\t\t\tif ( pluginItem.requires && pluginItem.requires.length ) {\n\t\t\t\t\t/**\n\t\t\t\t\t * The plugin replacing an existing plugin cannot depend on other plugins.\n\t\t\t\t\t *\n\t\t\t\t\t * @error plugincollection-plugin-for-replacing-cannot-have-dependencies\n\t\t\t\t\t */\n\t\t\t\t\tthrow new CKEditorError( 'plugincollection-plugin-for-replacing-cannot-have-dependencies', null, { pluginName } );\n\t\t\t\t}\n\n\t\t\t\tconst pluginToReplace = that._availablePlugins.get( pluginName );\n\n\t\t\t\tif ( !pluginToReplace ) {\n\t\t\t\t\t/**\n\t\t\t\t\t * The replaced plugin does not exist in the\n\t\t\t\t\t * {@link module:core/plugincollection~PluginCollection available plugins} collection.\n\t\t\t\t\t *\n\t\t\t\t\t * @error plugincollection-plugin-for-replacing-not-exist\n\t\t\t\t\t */\n\t\t\t\t\tthrow new CKEditorError( 'plugincollection-plugin-for-replacing-not-exist', null, { pluginName } );\n\t\t\t\t}\n\n\t\t\t\tconst indexInPluginConstructors = pluginConstructors.indexOf( pluginToReplace );\n\n\t\t\t\tif ( indexInPluginConstructors === -1 ) {\n\t\t\t\t\t// The Context feature can substitute plugins as well.\n\t\t\t\t\t// It may happen that the editor will be created with the given context, where the plugin for substitute\n\t\t\t\t\t// was already replaced. In such a case, we don't want to do it again.\n\t\t\t\t\tif ( that._contextPlugins.has( pluginToReplace ) ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n\t\t\t\t\t * The replaced plugin will not be loaded so it cannot be replaced.\n\t\t\t\t\t *\n\t\t\t\t\t * @error plugincollection-plugin-for-replacing-not-loaded\n\t\t\t\t\t */\n\t\t\t\t\tthrow new CKEditorError( 'plugincollection-plugin-for-replacing-not-loaded', null, { pluginName } );\n\t\t\t\t}\n\n\t\t\t\tif ( pluginToReplace.requires && pluginToReplace.requires.length ) {\n\t\t\t\t\t/**\n\t\t\t\t\t * The replaced plugin cannot depend on other plugins.\n\t\t\t\t\t *\n\t\t\t\t\t * @error plugincollection-replaced-plugin-cannot-have-dependencies\n\t\t\t\t\t */\n\t\t\t\t\tthrow new CKEditorError( 'plugincollection-replaced-plugin-cannot-have-dependencies', null, { pluginName } );\n\t\t\t\t}\n\n\t\t\t\tpluginConstructors.splice( indexInPluginConstructors, 1, pluginItem );\n\t\t\t\tthat._availablePlugins.set( pluginName, pluginItem );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Destroys all loaded plugins.\n\t */\n\tpublic destroy(): Promise<unknown> {\n\t\tconst promises: Array<unknown> = [];\n\n\t\tfor ( const [ , pluginInstance ] of this ) {\n\t\t\tif ( typeof pluginInstance.destroy == 'function' && !this._contextPlugins.has( pluginInstance ) ) {\n\t\t\t\tpromises.push( pluginInstance.destroy() );\n\t\t\t}\n\t\t}\n\n\t\treturn Promise.all( promises );\n\t}\n\n\t/**\n\t * Adds the plugin to the collection. Exposed mainly for testing purposes.\n\t *\n\t * @param PluginConstructor The plugin constructor.\n\t * @param plugin The instance of the plugin.\n\t */\n\tprivate _add( PluginConstructor: PluginConstructor<TContext>, plugin: PluginInterface ) {\n\t\tthis._plugins.set( PluginConstructor, plugin );\n\n\t\tconst pluginName = PluginConstructor.pluginName;\n\n\t\tif ( !pluginName ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this._plugins.has( pluginName ) ) {\n\t\t\t/**\n\t\t\t * Two plugins with the same {@link module:core/plugin~PluginStaticMembers#pluginName} were loaded.\n\t\t\t * This will lead to runtime conflicts between these plugins.\n\t\t\t *\n\t\t\t * In practice, this warning usually means that new plugins were added to an existing CKEditor 5 build.\n\t\t\t * Plugins should always be added to a source version of the editor (`@ckeditor/ckeditor5-editor-*`),\n\t\t\t * not to an editor imported from one of the `@ckeditor/ckeditor5-build-*` packages.\n\t\t\t *\n\t\t\t * Check your import paths and the list of plugins passed to\n\t\t\t * {@link module:core/editor/editor~Editor.create `Editor.create()`}\n\t\t\t * or specified in {@link module:core/editor/editor~Editor.builtinPlugins `Editor.builtinPlugins`}.\n\t\t\t *\n\t\t\t * The second option is that your `node_modules/` directory contains duplicated versions of the same\n\t\t\t * CKEditor 5 packages. Normally, on clean installations, npm deduplicates packages in `node_modules/`, so\n\t\t\t * it may be enough to call `rm -rf node_modules && npm i`. However, if you installed conflicting versions\n\t\t\t * of some packages, their dependencies may need to be installed in more than one version which may lead to this\n\t\t\t * warning.\n\t\t\t *\n\t\t\t * Technically speaking, this error occurs because after adding a plugin to an existing editor build\n\t\t\t * the dependencies of this plugin are being duplicated.\n\t\t\t * They are already built into that editor build and now get added for the second time as dependencies\n\t\t\t * of the plugin you are installing.\n\t\t\t *\n\t\t\t * Read more about {@glink installation/plugins/installing-plugins Installing plugins}.\n\t\t\t *\n\t\t\t * @error plugincollection-plugin-name-conflict\n\t\t\t * @param pluginName The duplicated plugin name.\n\t\t\t * @param plugin1 The first plugin constructor.\n\t\t\t * @param plugin2 The second plugin constructor.\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'plugincollection-plugin-name-conflict',\n\t\t\t\tnull,\n\t\t\t\t{ pluginName, plugin1: this._plugins.get( pluginName )!.constructor, plugin2: PluginConstructor }\n\t\t\t);\n\t\t}\n\n\t\tthis._plugins.set( pluginName, plugin );\n\t}\n}\n\n/**\n * A `[ PluginConstructor, pluginInstance ]` pair.\n */\nexport type PluginEntry<TContext> = [ PluginConstructor<TContext>, PluginInterface ];\n\n/**\n * Helper type that maps plugin names to their types.\n * It is meant to be extended with module augmentation.\n *\n * ```ts\n * class MyPlugin extends Plugin {\n * \tpublic static pluginName() {\n * \t\treturn 'MyPlugin' as const;\n * \t}\n * }\n *\n * declare module '@ckeditor/ckeditor5-core' {\n * \tinterface PluginsMap {\n * \t\t[ MyPlugin.pluginName ]: MyPlugin;\n * \t}\n * }\n *\n * // Returns `MyPlugin`.\n * const myPlugin = editor.plugins.get( 'MyPlugin' );\n * ```\n */\nexport interface PluginsMap {\n\t[ name: string ]: PluginInterface;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module core/context\n */\n\nimport {\n\tConfig,\n\tCollection,\n\tCKEditorError,\n\tLocale,\n\ttype LocaleTranslate\n} from '@ckeditor/ckeditor5-utils';\n\nimport PluginCollection from './plugincollection';\nimport type Editor from './editor/editor';\nimport type { LoadedPlugins, PluginConstructor } from './plugin';\nimport type { EditorConfig } from './editor/editorconfig';\n\n/**\n * Provides a common, higher-level environment for solutions that use multiple {@link module:core/editor/editor~Editor editors}\n * or plugins that work outside the editor. Use it instead of {@link module:core/editor/editor~Editor.create `Editor.create()`}\n * in advanced application integrations.\n *\n * All configuration options passed to a context will be used as default options for the editor instances initialized in that context.\n *\n * {@link module:core/contextplugin~ContextPlugin Context plugins} passed to a context instance will be shared among all\n * editor instances initialized in this context. These will be the same plugin instances for all the editors.\n *\n * **Note:** The context can only be initialized with {@link module:core/contextplugin~ContextPlugin context plugins}\n * (e.g. [comments](https://ckeditor.com/collaboration/comments/)). Regular {@link module:core/plugin~Plugin plugins} require an\n * editor instance to work and cannot be added to a context.\n *\n * **Note:** You can add a context plugin to an editor instance, though.\n *\n * If you are using multiple editor instances on one page and use any context plugins, create a context to share the configuration and\n * plugins among these editors. Some plugins will use the information about all existing editors to better integrate between them.\n *\n * If you are using plugins that do not require an editor to work (e.g. [comments](https://ckeditor.com/collaboration/comments/)),\n * enable and configure them using the context.\n *\n * If you are using only a single editor on each page, use {@link module:core/editor/editor~Editor.create `Editor.create()`} instead.\n * In such a case, a context instance will be created by the editor instance in a transparent way.\n *\n * See {@link ~Context.create `Context.create()`} for usage examples.\n */\nexport default class Context {\n\t/**\n\t * Stores all the configurations specific to this context instance.\n\t */\n\tpublic readonly config: Config<ContextConfig>;\n\n\t/**\n\t * The plugins loaded and in use by this context instance.\n\t */\n\tpublic readonly plugins: PluginCollection<Context | Editor>;\n\n\tpublic readonly locale: Locale;\n\n\t/**\n\t * Shorthand for {@link module:utils/locale~Locale#t}.\n\t */\n\tpublic readonly t: LocaleTranslate;\n\n\t/**\n\t * A list of editors that this context instance is injected to.\n\t */\n\tpublic readonly editors: Collection<Editor>;\n\n\t/**\n\t * The default configuration which is built into the `Context` class.\n\t *\n\t * It is used in CKEditor 5 builds featuring `Context` to provide the default configuration options which are later used during the\n\t * context initialization.\n\t *\n\t * ```ts\n\t * Context.defaultConfig = {\n\t * \tfoo: 1,\n\t * \tbar: 2\n\t * };\n\t *\n\t * Context\n\t * \t.create()\n\t * \t.then( context => {\n\t * \t\tcontext.config.get( 'foo' ); // -> 1\n\t * \t\tcontext.config.get( 'bar' ); // -> 2\n\t * \t} );\n\t *\n\t * // The default options can be overridden by the configuration passed to create().\n\t * Context\n\t * \t.create( { bar: 3 } )\n\t * \t.then( context => {\n\t * \t\tcontext.config.get( 'foo' ); // -> 1\n\t * \t\tcontext.config.get( 'bar' ); // -> 3\n\t * \t} );\n\t * ```\n\t *\n\t * See also {@link module:core/context~Context.builtinPlugins `Context.builtinPlugins`}\n\t * and {@link module:core/editor/editor~Editor.defaultConfig `Editor.defaultConfig`}.\n\t */\n\tpublic static defaultConfig: ContextConfig;\n\n\t/**\n\t * An array of plugins built into the `Context` class.\n\t *\n\t * It is used in CKEditor 5 builds featuring `Context` to provide a list of context plugins which are later automatically initialized\n\t * during the context initialization.\n\t *\n\t * They will be automatically initialized by `Context` unless `config.plugins` is passed.\n\t *\n\t * ```ts\n\t * // Build some context plugins into the Context class first.\n\t * Context.builtinPlugins = [ FooPlugin, BarPlugin ];\n\t *\n\t * // Normally, you need to define config.plugins, but since Context.builtinPlugins was\n\t * // defined, now you can call create() without any configuration.\n\t * Context\n\t * \t.create()\n\t * \t.then( context => {\n\t * \t\tcontext.plugins.get( FooPlugin ); // -> An instance of the Foo plugin.\n\t * \t\tcontext.plugins.get( BarPlugin ); // -> An instance of the Bar plugin.\n\t * \t} );\n\t * ```\n\t *\n\t * See also {@link module:core/context~Context.defaultConfig `Context.defaultConfig`}\n\t * and {@link module:core/editor/editor~Editor.builtinPlugins `Editor.builtinPlugins`}.\n\t */\n\tpublic static builtinPlugins: Array<PluginConstructor<Context | Editor>>;\n\n\t/**\n\t * Reference to the editor which created the context.\n\t * Null when the context was created outside of the editor.\n\t *\n\t * It is used to destroy the context when removing the editor that has created the context.\n\t */\n\tprivate _contextOwner: Editor | null = null;\n\n\t/**\n\t * Creates a context instance with a given configuration.\n\t *\n\t * Usually not to be used directly. See the static {@link module:core/context~Context.create `create()`} method.\n\t *\n\t * @param config The context configuration.\n\t */\n\tconstructor( config?: ContextConfig ) {\n\t\tthis.config = new Config<ContextConfig>( config, ( this.constructor as typeof Context ).defaultConfig );\n\n\t\tconst availablePlugins = ( this.constructor as typeof Context ).builtinPlugins;\n\n\t\tthis.config.define( 'plugins', availablePlugins );\n\n\t\tthis.plugins = new PluginCollection<Context | Editor>( this, availablePlugins );\n\n\t\tconst languageConfig = this.config.get( 'language' ) || {};\n\n\t\tthis.locale = new Locale( {\n\t\t\tuiLanguage: typeof languageConfig === 'string' ? languageConfig : languageConfig.ui,\n\t\t\tcontentLanguage: this.config.get( 'language.content' )\n\t\t} );\n\n\t\tthis.t = this.locale.t;\n\n\t\tthis.editors = new Collection<Editor>();\n\t}\n\n\t/**\n\t * Loads and initializes plugins specified in the configuration.\n\t *\n\t * @returns A promise which resolves once the initialization is completed, providing an array of loaded plugins.\n\t */\n\tpublic initPlugins(): Promise<LoadedPlugins> {\n\t\tconst plugins = this.config.get( 'plugins' ) || [];\n\t\tconst substitutePlugins = this.config.get( 'substitutePlugins' ) || [];\n\n\t\t// Plugins for substitution should be checked as well.\n\t\tfor ( const Plugin of plugins.concat( substitutePlugins ) ) {\n\t\t\tif ( typeof Plugin != 'function' ) {\n\t\t\t\t/**\n\t\t\t\t * Only a constructor function is allowed as a {@link module:core/contextplugin~ContextPlugin context plugin}.\n\t\t\t\t *\n\t\t\t\t * @error context-initplugins-constructor-only\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'context-initplugins-constructor-only',\n\t\t\t\t\tnull,\n\t\t\t\t\t{ Plugin }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( Plugin.isContextPlugin !== true ) {\n\t\t\t\t/**\n\t\t\t\t * Only a plugin marked as a {@link module:core/contextplugin~ContextPlugin.isContextPlugin context plugin}\n\t\t\t\t * is allowed to be used with a context.\n\t\t\t\t *\n\t\t\t\t * @error context-initplugins-invalid-plugin\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'context-initplugins-invalid-plugin',\n\t\t\t\t\tnull,\n\t\t\t\t\t{ Plugin }\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn this.plugins.init( plugins, [], substitutePlugins );\n\t}\n\n\t/**\n\t * Destroys the context instance and all editors used with the context,\n\t * releasing all resources used by the context.\n\t *\n\t * @returns A promise that resolves once the context instance is fully destroyed.\n\t */\n\tpublic destroy(): Promise<unknown> {\n\t\treturn Promise.all( Array.from( this.editors, editor => editor.destroy() ) )\n\t\t\t.then( () => this.plugins.destroy() );\n\t}\n\n\t/**\n\t * Adds a reference to the editor which is used with this context.\n\t *\n\t * When the given editor has created the context, the reference to this editor will be stored\n\t * as a {@link ~Context#_contextOwner}.\n\t *\n\t * This method should only be used by the editor.\n\t *\n\t * @internal\n\t * @param isContextOwner Stores the given editor as a context owner.\n\t */\n\tpublic _addEditor( editor: Editor, isContextOwner: boolean ): void {\n\t\tif ( this._contextOwner ) {\n\t\t\t/**\n\t\t\t * Cannot add multiple editors to the context which is created by the editor.\n\t\t\t *\n\t\t\t * @error context-addeditor-private-context\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'context-addeditor-private-context' );\n\t\t}\n\n\t\tthis.editors.add( editor );\n\n\t\tif ( isContextOwner ) {\n\t\t\tthis._contextOwner = editor;\n\t\t}\n\t}\n\n\t/**\n\t * Removes a reference to the editor which was used with this context.\n\t * When the context was created by the given editor, the context will be destroyed.\n\t *\n\t * This method should only be used by the editor.\n\t *\n\t * @internal\n\t * @return A promise that resolves once the editor is removed from the context or when the context was destroyed.\n\t */\n\tpublic _removeEditor( editor: Editor ): Promise<unknown> {\n\t\tif ( this.editors.has( editor ) ) {\n\t\t\tthis.editors.remove( editor );\n\t\t}\n\n\t\tif ( this._contextOwner === editor ) {\n\t\t\treturn this.destroy();\n\t\t}\n\n\t\treturn Promise.resolve();\n\t}\n\n\t/**\n\t * Returns the context configuration which will be copied to the editors created using this context.\n\t *\n\t * The configuration returned by this method has the plugins configuration removed — plugins are shared with all editors\n\t * through another mechanism.\n\t *\n\t * This method should only be used by the editor.\n\t *\n\t * @internal\n\t * @returns Configuration as a plain object.\n\t */\n\tpublic _getEditorConfig(): Partial<EditorConfig> {\n\t\tconst result: Record<string, unknown> = {};\n\n\t\tfor ( const name of this.config.names() ) {\n\t\t\tif ( ![ 'plugins', 'removePlugins', 'extraPlugins' ].includes( name ) ) {\n\t\t\t\tresult[ name ] = this.config.get( name );\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Creates and initializes a new context instance.\n\t *\n\t * ```ts\n\t * const commonConfig = { ... }; // Configuration for all the plugins and editors.\n\t * const editorPlugins = [ ... ]; // Regular plugins here.\n\t *\n\t * Context\n\t * \t.create( {\n\t * \t\t// Only context plugins here.\n\t * \t\tplugins: [ ... ],\n\t *\n\t * \t\t// Configure the language for all the editors (it cannot be overwritten).\n\t * \t\tlanguage: { ... },\n\t *\n\t * \t\t// Configuration for context plugins.\n\t * \t\tcomments: { ... },\n\t * \t\t...\n\t *\n\t * \t\t// Default configuration for editor plugins.\n\t * \t\ttoolbar: { ... },\n\t * \t\timage: { ... },\n\t * \t\t...\n\t * \t} )\n\t * \t.then( context => {\n\t * \t\tconst promises = [];\n\t *\n\t * \t\tpromises.push( ClassicEditor.create(\n\t * \t\t\tdocument.getElementById( 'editor1' ),\n\t * \t\t\t{\n\t * \t\t\t\teditorPlugins,\n\t * \t\t\t\tcontext\n\t * \t\t\t}\n\t * \t\t) );\n\t *\n\t * \t\tpromises.push( ClassicEditor.create(\n\t * \t\t\tdocument.getElementById( 'editor2' ),\n\t * \t\t\t{\n\t * \t\t\t\teditorPlugins,\n\t * \t\t\t\tcontext,\n\t * \t\t\t\ttoolbar: { ... } // You can overwrite the configuration of the context.\n\t * \t\t\t}\n\t * \t\t) );\n\t *\n\t * \t\treturn Promise.all( promises );\n\t * \t} );\n\t * ```\n\t *\n\t * @param config The context configuration.\n\t * @returns A promise resolved once the context is ready. The promise resolves with the created context instance.\n\t */\n\tpublic static create( config?: ContextConfig ): Promise<Context> {\n\t\treturn new Promise( resolve => {\n\t\t\tconst context = new this( config );\n\n\t\t\tresolve( context.initPlugins().then( () => context ) );\n\t\t} );\n\t}\n}\n\n/**\n * The context configuration.\n */\nexport type ContextConfig = {\n\tplugins?: Array<PluginConstructor<Context | Editor>>;\n\tsubstitutePlugins?: Array<PluginConstructor<Context | Editor>>;\n} & Omit<EditorConfig, 'plugins' | 'substitutePlugins' | 'removePlugins' | 'extraPlugins'>;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module core/contextplugin\n */\n\nimport {\n\tObservableMixin,\n\ttype Collection,\n\ttype Config,\n\ttype Locale,\n\ttype LocaleTranslate\n} from '@ckeditor/ckeditor5-utils';\n\nimport type Editor from './editor/editor';\nimport type { EditorConfig } from './editor/editorconfig';\nimport type Context from './context';\nimport type { PluginDependencies, PluginInterface } from './plugin';\nimport type PluginCollection from './plugincollection';\n\n/**\n * The base class for {@link module:core/context~Context} plugin classes.\n *\n * A context plugin can either be initialized for an {@link module:core/editor/editor~Editor editor} or for\n * a {@link module:core/context~Context context}. In other words, it can either\n * work within one editor instance or with one or more editor instances that use a single context.\n * It is the context plugin's role to implement handling for both modes.\n *\n * There are a few rules for interaction between the editor plugins and context plugins:\n *\n * * A context plugin can require another context plugin.\n * * An {@link module:core/plugin~Plugin editor plugin} can require a context plugin.\n * * A context plugin MUST NOT require an {@link module:core/plugin~Plugin editor plugin}.\n */\nexport default class ContextPlugin extends ObservableMixin() implements PluginInterface {\n\t/**\n\t * The context or editor instance.\n\t */\n\tpublic readonly context: ContextInterface;\n\n\t/**\n\t * Creates a new plugin instance.\n\t */\n\tconstructor( context: Context | Editor ) {\n\t\tsuper();\n\n\t\tthis.context = context as ContextInterface;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic destroy(): void {\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get isContextPlugin(): true {\n\t\treturn true;\n\t}\n}\n\n/**\n * The common interface of {@link module:core/context~Context} and {@link module:core/editor/editor~Editor}.\n */\nexport interface ContextInterface {\n\tconfig: Config<Omit<EditorConfig, 'plugins' | 'substitutePlugins' | 'removePlugins' | 'extraPlugins'>>;\n\tplugins: PluginCollection<Context | Editor>;\n\tlocale: Locale;\n\tt: LocaleTranslate;\n\teditors?: Collection<Editor>;\n}\n\nexport type ContextPluginDependencies = PluginDependencies<Context | Editor>;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module core/editingkeystrokehandler\n */\n\nimport { KeystrokeHandler, type PriorityString } from '@ckeditor/ckeditor5-utils';\n\nimport type Editor from './editor/editor';\n\n/**\n * A keystroke handler for editor editing. Its instance is available\n * in {@link module:core/editor/editor~Editor#keystrokes} so plugins\n * can register their keystrokes.\n *\n * E.g. an undo plugin would do this:\n *\n * ```ts\n * editor.keystrokes.set( 'Ctrl+Z', 'undo' );\n * editor.keystrokes.set( 'Ctrl+Shift+Z', 'redo' );\n * editor.keystrokes.set( 'Ctrl+Y', 'redo' );\n * ```\n */\nexport default class EditingKeystrokeHandler extends KeystrokeHandler {\n\t/**\n\t * The editor instance.\n\t */\n\tpublic readonly editor: Editor;\n\n\t/**\n\t * Creates an instance of the keystroke handler.\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper();\n\t\tthis.editor = editor;\n\t}\n\n\t/**\n\t * Registers a handler for the specified keystroke.\n\t *\n\t * The handler can be specified as a command name or a callback.\n\t *\n\t * @param keystroke Keystroke defined in a format accepted by\n\t * the {@link module:utils/keyboard~parseKeystroke} function.\n\t * @param callback If a string is passed, then the keystroke will\n\t * {@link module:core/editor/editor~Editor#execute execute a command}.\n\t * If a function, then it will be called with the\n\t * {@link module:engine/view/observer/keyobserver~KeyEventData key event data} object and\n\t * a `cancel()` helper to both `preventDefault()` and `stopPropagation()` of the event.\n\t * @param options Additional options.\n\t * @param options.priority The priority of the keystroke callback. The higher the priority value\n\t * the sooner the callback will be executed. Keystrokes having the same priority\n\t * are called in the order they were added.\n\t */\n\tpublic override set(\n\t\tkeystroke: string | Array<string | number>,\n\t\tcallback: EditingKeystrokeCallback,\n\t\toptions: { readonly priority?: PriorityString } = {}\n\t): void {\n\t\tif ( typeof callback == 'string' ) {\n\t\t\tconst commandName = callback;\n\n\t\t\tcallback = ( evtData, cancel ) => {\n\t\t\t\tthis.editor.execute( commandName );\n\t\t\t\tcancel();\n\t\t\t};\n\t\t}\n\n\t\tsuper.set( keystroke, callback, options );\n\t}\n}\n\n/**\n * Command name or a callback to be executed when a given keystroke is pressed.\n */\nexport type EditingKeystrokeCallback = string | ( ( ev: KeyboardEvent, cancel: () => void ) => void );\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./placeholder.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/placeholder\n */\n\nimport '../../theme/placeholder.css';\n\nimport type Document from './document';\nimport type DowncastWriter from './downcastwriter';\nimport type EditableElement from './editableelement';\nimport type Element from './element';\nimport type View from './view';\n\nimport { logWarning, type ObservableChangeEvent } from '@ckeditor/ckeditor5-utils';\n\n// Each document stores information about its placeholder elements and check functions.\nconst documentPlaceholders = new WeakMap<Document, Map<Element, PlaceholderConfig>>();\n\nlet hasDisplayedPlaceholderDeprecationWarning = false;\n\n/**\n * A helper that enables a placeholder on the provided view element (also updates its visibility).\n * The placeholder is a CSS pseudo–element (with a text content) attached to the element.\n *\n * To change the placeholder text, change value of the `placeholder` property in the provided `element`.\n *\n * To disable the placeholder, use {@link module:engine/view/placeholder~disablePlaceholder `disablePlaceholder()`} helper.\n *\n * @param options Configuration options of the placeholder.\n * @param options.view Editing view instance.\n * @param options.element Element that will gain a placeholder. See `options.isDirectHost` to learn more.\n * @param options.isDirectHost If set `false`, the placeholder will not be enabled directly\n * in the passed `element` but in one of its children (selected automatically, i.e. a first empty child element).\n * Useful when attaching placeholders to elements that can host other elements (not just text), for instance,\n * editable root elements.\n * @param options.text Placeholder text. It's **deprecated** and will be removed soon. Use\n * {@link module:engine/view/placeholder~PlaceholderableElement#placeholder `options.element.placeholder`} instead.\n * @param options.keepOnFocus If set `true`, the placeholder stay visible when the host element is focused.\n */\nexport function enablePlaceholder( { view, element, text, isDirectHost = true, keepOnFocus = false }: {\n\tview: View;\n\telement: PlaceholderableElement | EditableElement;\n\tisDirectHost?: boolean;\n\ttext?: string;\n\tkeepOnFocus?: boolean;\n} ): void {\n\tconst doc = view.document;\n\n\t// Use a single a single post fixer per—document to update all placeholders.\n\tif ( !documentPlaceholders.has( doc ) ) {\n\t\tdocumentPlaceholders.set( doc, new Map() );\n\n\t\t// If a post-fixer callback makes a change, it should return `true` so other post–fixers\n\t\t// can re–evaluate the document again.\n\t\tdoc.registerPostFixer( writer => updateDocumentPlaceholders( doc, writer ) );\n\n\t\t// Update placeholders on isComposing state change since rendering is disabled while in composition mode.\n\t\tdoc.on<ObservableChangeEvent>( 'change:isComposing', () => {\n\t\t\tview.change( writer => updateDocumentPlaceholders( doc, writer ) );\n\t\t}, { priority: 'high' } );\n\t}\n\n\tif ( element.is( 'editableElement' ) ) {\n\t\telement.on( 'change:placeholder', ( evtInfo, evt, text ) => {\n\t\t\tsetPlaceholder( text );\n\t\t} );\n\t}\n\n\tif ( element.placeholder ) {\n\t\tsetPlaceholder( element.placeholder );\n\t} else if ( text ) {\n\t\tsetPlaceholder( text );\n\t}\n\n\tif ( text ) {\n\t\tshowPlaceholderTextDeprecationWarning();\n\t}\n\n\tfunction setPlaceholder( text: string ) {\n\t\t// Store information about the element placeholder under its document.\n\t\tdocumentPlaceholders.get( doc )!.set( element, {\n\t\t\ttext,\n\t\t\tisDirectHost,\n\t\t\tkeepOnFocus,\n\t\t\thostElement: isDirectHost ? element : null\n\t\t} );\n\n\t\t// Update the placeholders right away.\n\t\tview.change( writer => updateDocumentPlaceholders( doc, writer ) );\n\t}\n}\n\n/**\n * Disables the placeholder functionality from a given element.\n *\n * See {@link module:engine/view/placeholder~enablePlaceholder `enablePlaceholder()`} to learn more.\n */\nexport function disablePlaceholder( view: View, element: Element ): void {\n\tconst doc = element.document;\n\n\tif ( !documentPlaceholders.has( doc ) ) {\n\t\treturn;\n\t}\n\n\tview.change( writer => {\n\t\tconst placeholders = documentPlaceholders.get( doc )!;\n\t\tconst config = placeholders.get( element )!;\n\n\t\twriter.removeAttribute( 'data-placeholder', config.hostElement! );\n\t\thidePlaceholder( writer, config.hostElement! );\n\n\t\tplaceholders.delete( element );\n\t} );\n}\n\n/**\n * Shows a placeholder in the provided element by changing related attributes and CSS classes.\n *\n * **Note**: This helper will not update the placeholder visibility nor manage the\n * it in any way in the future. What it does is a one–time state change of an element. Use\n * {@link module:engine/view/placeholder~enablePlaceholder `enablePlaceholder()`} and\n * {@link module:engine/view/placeholder~disablePlaceholder `disablePlaceholder()`} for full\n * placeholder functionality.\n *\n * **Note**: This helper will blindly show the placeholder directly in the root editable element if\n * one is passed, which could result in a visual clash if the editable element has some children\n * (for instance, an empty paragraph). Use {@link module:engine/view/placeholder~enablePlaceholder `enablePlaceholder()`}\n * in that case or make sure the correct element is passed to the helper.\n *\n * @returns `true`, if any changes were made to the `element`.\n */\nexport function showPlaceholder( writer: DowncastWriter, element: Element ): boolean {\n\tif ( !element.hasClass( 'ck-placeholder' ) ) {\n\t\twriter.addClass( 'ck-placeholder', element );\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * Hides a placeholder in the element by changing related attributes and CSS classes.\n *\n * **Note**: This helper will not update the placeholder visibility nor manage the\n * it in any way in the future. What it does is a one–time state change of an element. Use\n * {@link module:engine/view/placeholder~enablePlaceholder `enablePlaceholder()`} and\n * {@link module:engine/view/placeholder~disablePlaceholder `disablePlaceholder()`} for full\n * placeholder functionality.\n *\n * @returns `true`, if any changes were made to the `element`.\n */\nexport function hidePlaceholder( writer: DowncastWriter, element: Element ): boolean {\n\tif ( element.hasClass( 'ck-placeholder' ) ) {\n\t\twriter.removeClass( 'ck-placeholder', element );\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * Checks if a placeholder should be displayed in the element.\n *\n * **Note**: This helper will blindly check the possibility of showing a placeholder directly in the\n * root editable element if one is passed, which may not be the expected result. If an element can\n * host other elements (not just text), most likely one of its children should be checked instead\n * because it will be the final host for the placeholder. Use\n * {@link module:engine/view/placeholder~enablePlaceholder `enablePlaceholder()`} in that case or make\n * sure the correct element is passed to the helper.\n *\n * @param element Element that holds the placeholder.\n * @param keepOnFocus Focusing the element will keep the placeholder visible.\n */\nexport function needsPlaceholder( element: Element, keepOnFocus: boolean ): boolean {\n\tif ( !element.isAttached() ) {\n\t\treturn false;\n\t}\n\n\t// Anything but uiElement(s) counts as content.\n\tconst hasContent = Array.from( element.getChildren() )\n\t\t.some( element => !element.is( 'uiElement' ) );\n\n\tif ( hasContent ) {\n\t\treturn false;\n\t}\n\n\tconst doc = element.document;\n\tconst viewSelection = doc.selection;\n\tconst selectionAnchor = viewSelection.anchor;\n\n\tif ( doc.isComposing && selectionAnchor && selectionAnchor.parent === element ) {\n\t\treturn false;\n\t}\n\n\t// Skip the focus check and make the placeholder visible already regardless of document focus state.\n\tif ( keepOnFocus ) {\n\t\treturn true;\n\t}\n\n\t// If the document is blurred.\n\tif ( !doc.isFocused ) {\n\t\treturn true;\n\t}\n\n\t// If document is focused and the element is empty but the selection is not anchored inside it.\n\treturn !!selectionAnchor && selectionAnchor.parent !== element;\n}\n\n/**\n * Updates all placeholders associated with a document in a post–fixer callback.\n *\n * @returns True if any changes were made to the view document.\n */\nfunction updateDocumentPlaceholders( doc: Document, writer: DowncastWriter ): boolean {\n\tconst placeholders = documentPlaceholders.get( doc )!;\n\tconst directHostElements: Array<Element> = [];\n\tlet wasViewModified = false;\n\n\t// First set placeholders on the direct hosts.\n\tfor ( const [ element, config ] of placeholders ) {\n\t\tif ( config.isDirectHost ) {\n\t\t\tdirectHostElements.push( element );\n\n\t\t\tif ( updatePlaceholder( writer, element, config ) ) {\n\t\t\t\twasViewModified = true;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Then set placeholders on the indirect hosts but only on those that does not already have an direct host placeholder.\n\tfor ( const [ element, config ] of placeholders ) {\n\t\tif ( config.isDirectHost ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst hostElement = getChildPlaceholderHostSubstitute( element );\n\n\t\t// When not a direct host, it could happen that there is no child element\n\t\t// capable of displaying a placeholder.\n\t\tif ( !hostElement ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Don't override placeholder if the host element already has some direct placeholder.\n\t\tif ( directHostElements.includes( hostElement ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Update the host element (used for setting and removing the placeholder).\n\t\tconfig.hostElement = hostElement;\n\n\t\tif ( updatePlaceholder( writer, element, config ) ) {\n\t\t\twasViewModified = true;\n\t\t}\n\t}\n\n\treturn wasViewModified;\n}\n\n/**\n * Updates a single placeholder in a post–fixer callback.\n *\n * @returns True if any changes were made to the view document.\n */\nfunction updatePlaceholder( writer: DowncastWriter, element: Element, config: PlaceholderConfig ) {\n\tconst { text, isDirectHost, hostElement } = config;\n\n\tlet wasViewModified = false;\n\n\t// This may be necessary when updating the placeholder text to something else.\n\tif ( hostElement!.getAttribute( 'data-placeholder' ) !== text ) {\n\t\twriter.setAttribute( 'data-placeholder', text, hostElement! );\n\t\twasViewModified = true;\n\t}\n\n\t// If the host element is not a direct host then placeholder is needed only when there is only one element.\n\tconst isOnlyChild = isDirectHost || element.childCount == 1;\n\n\tif ( isOnlyChild && needsPlaceholder( hostElement!, config.keepOnFocus ) ) {\n\t\tif ( showPlaceholder( writer, hostElement! ) ) {\n\t\t\twasViewModified = true;\n\t\t}\n\t} else if ( hidePlaceholder( writer, hostElement! ) ) {\n\t\twasViewModified = true;\n\t}\n\n\treturn wasViewModified;\n}\n\n/**\n * Gets a child element capable of displaying a placeholder if a parent element can host more\n * than just text (for instance, when it is a root editable element). The child element\n * can then be used in other placeholder helpers as a substitute of its parent.\n */\nfunction getChildPlaceholderHostSubstitute( parent: Element ): Element | null {\n\tif ( parent.childCount ) {\n\t\tconst firstChild = parent.getChild( 0 )!;\n\n\t\tif ( firstChild.is( 'element' ) && !firstChild.is( 'uiElement' ) && !firstChild.is( 'attributeElement' ) ) {\n\t\t\treturn firstChild;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Displays a deprecation warning message in the console, but only once per page load.\n */\nfunction showPlaceholderTextDeprecationWarning() {\n\tif ( !hasDisplayedPlaceholderDeprecationWarning ) {\n\t\t/**\n\t\t * The \"text\" option in the {@link module:engine/view/placeholder~enablePlaceholder `enablePlaceholder()`}\n\t\t * function is deprecated and will be removed soon.\n\t\t *\n\t\t * See the {@glink updating/guides/update-to-39#view-element-placeholder Migration to v39} guide for\n\t\t * more information on how to apply this change.\n\t\t *\n\t\t * @error enableplaceholder-deprecated-text-option\n\t\t */\n\t\tlogWarning( 'enableplaceholder-deprecated-text-option' );\n\t}\n\n\thasDisplayedPlaceholderDeprecationWarning = true;\n}\n\n/**\n * Configuration of the placeholder.\n */\ninterface PlaceholderConfig {\n\ttext: string;\n\tisDirectHost: boolean;\n\tkeepOnFocus: boolean;\n\thostElement: Element | null;\n}\n\n/**\n * Element that could have a placeholder.\n */\nexport interface PlaceholderableElement extends Element {\n\n\t/**\n\t * The text of element's placeholder.\n\t */\n\tplaceholder?: string;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport type AttributeElement from './attributeelement';\nimport type ContainerElement from './containerelement';\nimport type DocumentFragment from './documentfragment';\nimport type DocumentSelection from './documentselection';\nimport type EditableElement from './editableelement';\nimport type Element from './element';\nimport type EmptyElement from './emptyelement';\nimport type Node from './node';\nimport type Position from './position';\nimport type Range from './range';\nimport type RawElement from './rawelement';\nimport type RootEditableElement from './rooteditableelement';\nimport type Selection from './selection';\nimport type Text from './text';\nimport type TextProxy from './textproxy';\nimport type UIElement from './uielement';\n\n/**\n * @module engine/view/typecheckable\n */\n\nexport default abstract class TypeCheckable {\n\t/**\n\t * Checks whether this object is of type {@link module:engine/view/node~Node} or its subclass.\n\t *\n\t * This method is useful when processing view objects that are of unknown type. For example, a function\n\t * may return a {@link module:engine/view/documentfragment~DocumentFragment} or a {@link module:engine/view/node~Node}\n\t * that can be either a text node or an element. This method can be used to check what kind of object is returned.\n\t *\n\t * ```ts\n\t * someObject.is( 'element' ); // -> true if this is an element\n\t * someObject.is( 'node' ); // -> true if this is a node (a text node or an element)\n\t * someObject.is( 'documentFragment' ); // -> true if this is a document fragment\n\t * ```\n\t *\n\t * Since this method is also available on a range of model objects, you can prefix the type of the object with\n\t * `model:` or `view:` to check, for example, if this is the model's or view's element:\n\t *\n\t * ```ts\n\t * viewElement.is( 'view:element' ); // -> true\n\t * viewElement.is( 'model:element' ); // -> false\n\t * ```\n\t *\n\t * By using this method it is also possible to check a name of an element:\n\t *\n\t * ```ts\n\t * imgElement.is( 'element', 'img' ); // -> true\n\t * imgElement.is( 'view:element', 'img' ); // -> same as above, but more precise\n\t * ```\n\t * @label NODE\n\t */\n\tpublic is( type: 'node' | 'view:node' ): this is (\n\t\tNode |\n\t\tText |\n\t\tElement |\n\t\tAttributeElement |\n\t\tContainerElement |\n\t\tEditableElement |\n\t\tEmptyElement |\n\t\tRawElement |\n\t\tRootEditableElement |\n\t\tUIElement\n\t);\n\n\t/**\n\t * Checks whether this object is of type {@link module:engine/view/element~Element} or its subclass.\n\t *\n\t * ```ts\n\t * element.is( 'element' ); // -> true\n\t * element.is( 'node' ); // -> true\n\t * element.is( 'view:element' ); // -> true\n\t * element.is( 'view:node' ); // -> true\n\t *\n\t * element.is( 'model:element' ); // -> false\n\t * element.is( 'documentSelection' ); // -> false\n\t * ```\n\t *\n\t * Assuming that the object being checked is an element, you can also check its\n\t * {@link module:engine/view/element~Element#name name}:\n\t *\n\t * ```ts\n\t * element.is( 'element', 'img' ); // -> true if this is an <img> element\n\t * text.is( 'element', 'img' ); -> false\n\t * ```\n\t *\n\t * @label ELEMENT\n\t */\n\tpublic is( type: 'element' | 'view:element' ): this is (\n\t\tElement |\n\t\tAttributeElement |\n\t\tContainerElement |\n\t\tEditableElement |\n\t\tEmptyElement |\n\t\tRawElement |\n\t\tRootEditableElement |\n\t\tUIElement\n\t);\n\n\t/**\n\t * Checks whether this object is of type {@link module:engine/view/attributeelement~AttributeElement}.\n\t *\n\t * ```ts\n\t * attributeElement.is( 'attributeElement' ); // -> true\n\t * attributeElement.is( 'element' ); // -> true\n\t * attributeElement.is( 'node' ); // -> true\n\t * attributeElement.is( 'view:attributeElement' ); // -> true\n\t * attributeElement.is( 'view:element' ); // -> true\n\t * attributeElement.is( 'view:node' ); // -> true\n\t *\n\t * attributeElement.is( 'model:element' ); // -> false\n\t * attributeElement.is( 'documentFragment' ); // -> false\n\t * ```\n\t *\n\t * Assuming that the object being checked is an attribute element, you can also check its\n\t * {@link module:engine/view/attributeelement~AttributeElement#name name}:\n\t *\n\t * ```ts\n\t * attributeElement.is( 'element', 'b' ); // -> true if this is a bold element\n\t * attributeElement.is( 'attributeElement', 'b' ); // -> same as above\n\t * text.is( 'element', 'b' ); -> false\n\t * ```\n\t *\n\t * @label ATTRIBUTE_ELEMENT\n\t */\n\tpublic is( type: 'attributeElement' | 'view:attributeElement' ): this is AttributeElement;\n\n\t/**\n\t * Checks whether this object is of type {@link module:engine/view/containerelement~ContainerElement} or its subclass.\n\t *\n\t * ```ts\n\t * containerElement.is( 'containerElement' ); // -> true\n\t * containerElement.is( 'element' ); // -> true\n\t * containerElement.is( 'node' ); // -> true\n\t * containerElement.is( 'view:containerElement' ); // -> true\n\t * containerElement.is( 'view:element' ); // -> true\n\t * containerElement.is( 'view:node' ); // -> true\n\t *\n\t * containerElement.is( 'model:element' ); // -> false\n\t * containerElement.is( 'documentFragment' ); // -> false\n\t * ```\n\t *\n\t * Assuming that the object being checked is a container element, you can also check its\n\t * {@link module:engine/view/containerelement~ContainerElement#name name}:\n\t *\n\t * ```ts\n\t * containerElement.is( 'element', 'div' ); // -> true if this is a div container element\n\t * containerElement.is( 'contaienrElement', 'div' ); // -> same as above\n\t * text.is( 'element', 'div' ); -> false\n\t * ```\n\t *\n\t * @label CONTAINER_ELEMENT\n\t */\n\tpublic is( type: 'containerElement' | 'view:containerElement' ): this is ContainerElement | EditableElement | RootEditableElement;\n\n\t/**\n\t * Checks whether this object is of type {@link module:engine/view/editableelement~EditableElement} or its subclass.\n\t *\n\t * ```ts\n\t * editableElement.is( 'editableElement' ); // -> true\n\t * editableElement.is( 'element' ); // -> true\n\t * editableElement.is( 'node' ); // -> true\n\t * editableElement.is( 'view:editableElement' ); // -> true\n\t * editableElement.is( 'view:element' ); // -> true\n\t * editableElement.is( 'view:node' ); // -> true\n\t *\n\t * editableElement.is( 'model:element' ); // -> false\n\t * editableElement.is( 'documentFragment' ); // -> false\n\t * ```\n\t *\n\t * Assuming that the object being checked is an editbale element, you can also check its\n\t * {@link module:engine/view/editableelement~EditableElement#name name}:\n\t *\n\t * ```ts\n\t * editableElement.is( 'element', 'div' ); // -> true if this is a div element\n\t * editableElement.is( 'editableElement', 'div' ); // -> same as above\n\t * text.is( 'element', 'div' ); -> false\n\t * ```\n\t *\n\t * @label EDITABLE_ELEMENT\n\t */\n\tpublic is( type: 'editableElement' | 'view:editableElement' ): this is EditableElement | RootEditableElement;\n\n\t/**\n\t * Checks whether this object is of type {@link module:engine/view/emptyelement~EmptyElement}.\n\t *\n\t * ```ts\n\t * emptyElement.is( 'emptyElement' ); // -> true\n\t * emptyElement.is( 'element' ); // -> true\n\t * emptyElement.is( 'node' ); // -> true\n\t * emptyElement.is( 'view:emptyElement' ); // -> true\n\t * emptyElement.is( 'view:element' ); // -> true\n\t * emptyElement.is( 'view:node' ); // -> true\n\t *\n\t * emptyElement.is( 'model:element' ); // -> false\n\t * emptyElement.is( 'documentFragment' ); // -> false\n\t * ```\n\t *\n\t * Assuming that the object being checked is an empty element, you can also check its\n\t * {@link module:engine/view/emptyelement~EmptyElement#name name}:\n\t *\n\t * ```ts\n\t * emptyElement.is( 'element', 'img' ); // -> true if this is a img element\n\t * emptyElement.is( 'emptyElement', 'img' ); // -> same as above\n\t * text.is( 'element', 'img' ); -> false\n\t * ```\n\t *\n\t * @label EMPTY_ELEMENT\n\t */\n\tpublic is( type: 'emptyElement' | 'view:emptyElement' ): this is EmptyElement;\n\n\t/**\n\t * Checks whether this object is of type {@link module:engine/view/rawelement~RawElement}.\n\t *\n\t * ```ts\n\t * rawElement.is( 'rawElement' ); // -> true\n\t * rawElement.is( 'element' ); // -> true\n\t * rawElement.is( 'node' ); // -> true\n\t * rawElement.is( 'view:rawElement' ); // -> true\n\t * rawElement.is( 'view:element' ); // -> true\n\t * rawElement.is( 'view:node' ); // -> true\n\t *\n\t * rawElement.is( 'model:element' ); // -> false\n\t * rawElement.is( 'documentFragment' ); // -> false\n\t * ```\n\t *\n\t * Assuming that the object being checked is a raw element, you can also check its\n\t * {@link module:engine/view/rawelement~RawElement#name name}:\n\t *\n\t * ```ts\n\t * rawElement.is( 'img' ); // -> true if this is an img element\n\t * rawElement.is( 'rawElement', 'img' ); // -> same as above\n\t * text.is( 'img' ); -> false\n\t * ```\n\t *\n\t * @label RAW_ELEMENT\n\t */\n\tpublic is( type: 'rawElement' | 'view:rawElement' ): this is RawElement;\n\n\t/**\n\t * Checks whether this object is of type {@link module:engine/view/rooteditableelement~RootEditableElement}.\n\t *\n\t * ```ts\n\t * rootEditableElement.is( 'rootElement' ); // -> true\n\t * rootEditableElement.is( 'editableElement' ); // -> true\n\t * rootEditableElement.is( 'element' ); // -> true\n\t * rootEditableElement.is( 'node' ); // -> true\n\t * rootEditableElement.is( 'view:editableElement' ); // -> true\n\t * rootEditableElement.is( 'view:element' ); // -> true\n\t * rootEditableElement.is( 'view:node' ); // -> true\n\t *\n\t * rootEditableElement.is( 'model:element' ); // -> false\n\t * rootEditableElement.is( 'documentFragment' ); // -> false\n\t * ```\n\t *\n\t * Assuming that the object being checked is a root editable element, you can also check its\n\t * {@link module:engine/view/rooteditableelement~RootEditableElement#name name}:\n\t *\n\t * ```ts\n\t * rootEditableElement.is( 'element', 'div' ); // -> true if this is a div root editable element\n\t * rootEditableElement.is( 'rootElement', 'div' ); // -> same as above\n\t * text.is( 'element', 'div' ); -> false\n\t * ```\n\t *\n\t * @label ROOT_ELEMENT\n\t */\n\tpublic is( type: 'rootElement' | 'view:rootElement' ): this is RootEditableElement;\n\n\t/**\n\t * Checks whether this object is of type {@link module:engine/view/uielement~UIElement}.\n\t *\n\t * ```ts\n\t * uiElement.is( 'uiElement' ); // -> true\n\t * uiElement.is( 'element' ); // -> true\n\t * uiElement.is( 'node' ); // -> true\n\t * uiElement.is( 'view:uiElement' ); // -> true\n\t * uiElement.is( 'view:element' ); // -> true\n\t * uiElement.is( 'view:node' ); // -> true\n\t *\n\t * uiElement.is( 'model:element' ); // -> false\n\t * uiElement.is( 'documentFragment' ); // -> false\n\t * ```\n\t *\n\t * Assuming that the object being checked is an ui element, you can also check its\n\t * {@link module:engine/view/uielement~UIElement#name name}:\n\t *\n\t * ```ts\n\t * uiElement.is( 'element', 'span' ); // -> true if this is a span ui element\n\t * uiElement.is( 'uiElement', 'span' ); // -> same as above\n\t * text.is( 'element', 'span' ); -> false\n\t * ```\n\t *\n\t * @label UI_ELEMENT\n\t */\n\tpublic is( type: 'uiElement' | 'view:uiElement' ): this is UIElement;\n\n\t/**\n\t * Checks whether this object is of type {@link module:engine/view/text~Text}.\n\t *\n\t * ```ts\n\t * text.is( '$text' ); // -> true\n\t * text.is( 'node' ); // -> true\n\t * text.is( 'view:$text' ); // -> true\n\t * text.is( 'view:node' ); // -> true\n\t *\n\t * text.is( 'model:$text' ); // -> false\n\t * text.is( 'element' ); // -> false\n\t * text.is( 'range' ); // -> false\n\t * ```\n\t *\n\t * @label TEXT\n\t */\n\tpublic is( type: '$text' | 'view:$text' ): this is Text;\n\n\t/**\n\t * hecks whether this object is of type {@link module:engine/view/documentfragment~DocumentFragment}.\n\t *\n\t * ```ts\n\t * docFrag.is( 'documentFragment' ); // -> true\n\t * docFrag.is( 'view:documentFragment' ); // -> true\n\t *\n\t * docFrag.is( 'model:documentFragment' ); // -> false\n\t * docFrag.is( 'element' ); // -> false\n\t * docFrag.is( 'node' ); // -> false\n\t * ```\n\t *\n\t * @label DOCUMENT_FRAGMENT\n\t */\n\tpublic is( type: 'documentFragment' | 'view:documentFragment' ): this is DocumentFragment;\n\n\t/**\n\t * Checks whether this object is of type {@link module:engine/view/textproxy~TextProxy}.\n\t *\n\t * ```ts\n\t * textProxy.is( '$textProxy' ); // -> true\n\t * textProxy.is( 'view:$textProxy' ); // -> true\n\t *\n\t * textProxy.is( 'model:$textProxy' ); // -> false\n\t * textProxy.is( 'element' ); // -> false\n\t * textProxy.is( 'range' ); // -> false\n\t * ```\n\t *\n\t * **Note:** Until version 20.0.0 this method wasn't accepting `'$textProxy'` type. The legacy `'textProxy'` type is still\n\t * accepted for backward compatibility.\n\t *\n\t * @label TEXT_PROXY\n\t */\n\tpublic is( type: '$textProxy' | 'view:$textProxy' ): this is TextProxy;\n\n\t/**\n\t * Checks whether this object is of type {@link module:engine/view/position~Position}.\n\t *\n\t * ```ts\n\t * position.is( 'position' ); // -> true\n\t * position.is( 'view:position' ); // -> true\n\t *\n\t * position.is( 'model:position' ); // -> false\n\t * position.is( 'element' ); // -> false\n\t * position.is( 'range' ); // -> false\n\t * ```\n\t *\n\t * @label POSITION\n\t */\n\tpublic is( type: 'position' | 'view:position' ): this is Position;\n\n\t/**\n\t * Checks whether this object is of type {@link module:engine/view/range~Range}.\n\t *\n\t * ```ts\n\t * range.is( 'range' ); // -> true\n\t * range.is( 'view:range' ); // -> true\n\t *\n\t * range.is( 'model:range' ); // -> false\n\t * range.is( 'element' ); // -> false\n\t * range.is( 'selection' ); // -> false\n\t * ```\n\t *\n\t * @label RANGE\n\t */\n\tpublic is( type: 'range' | 'view:range' ): this is Range;\n\n\t/**\n\t * Checks whether this object is of type {@link module:engine/view/selection~Selection} or\n\t * {@link module:engine/view/documentselection~DocumentSelection}.\n\t *\n\t * ```ts\n\t * selection.is( 'selection' ); // -> true\n\t * selection.is( 'view:selection' ); // -> true\n\t *\n\t * selection.is( 'model:selection' ); // -> false\n\t * selection.is( 'element' ); // -> false\n\t * selection.is( 'range' ); // -> false\n\t * ```\n\t *\n\t * @label SELECTION\n\t */\n\tpublic is( type: 'selection' | 'view:selection' ): this is Selection | DocumentSelection;\n\n\t/**\n\t * Checks whether this object is of type {@link module:engine/view/documentselection~DocumentSelection}.\n\t *\n\t * ```ts\n\t * `docSelection.is( 'selection' ); // -> true\n\t * docSelection.is( 'documentSelection' ); // -> true\n\t * docSelection.is( 'view:selection' ); // -> true\n\t * docSelection.is( 'view:documentSelection' ); // -> true\n\t *\n\t * docSelection.is( 'model:documentSelection' ); // -> false\n\t * docSelection.is( 'element' ); // -> false\n\t * docSelection.is( 'node' ); // -> false\n\t * ```\n\t *\n\t * @label DOCUMENT_SELECTION\n\t */\n\tpublic is( type: 'documentSelection' | 'view:documentSelection' ): this is DocumentSelection;\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/view/element~Element} or its subclass and has the specified `name`.\n\t *\n\t * @label ELEMENT_NAME\n\t */\n\tpublic is<N extends string>( type: 'element' | 'view:element', name: N ): this is (\n\t\tElement |\n\t\tAttributeElement |\n\t\tContainerElement |\n\t\tEditableElement |\n\t\tEmptyElement |\n\t\tRawElement |\n\t\tRootEditableElement |\n\t\tUIElement\n\t) & { name: N };\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/view/attributeelement~AttributeElement} and has the specified `name`.\n\t *\n\t * @label ATTRIBUTE_ELEMENT_NAME\n\t */\n\tpublic is<N extends string>( type: 'attributeElement' | 'view:attributeElement', name: N ): this is AttributeElement & { name: N };\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/view/containerelement~ContainerElement}\n\t * or its subclass and has the specified `name`.\n\t *\n\t * @label CONTAINER_ELEMENT_NAME\n\t */\n\tpublic is<N extends string>( type: 'containerElement' | 'view:containerElement', name: N ): this is (\n\t\tContainerElement |\n\t\tEditableElement |\n\t\tRootEditableElement\n\t) & { name: N };\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/view/editableelement~EditableElement}\n\t * or its subclass and has the specified `name`.\n\t *\n\t * @label EDITABLE_ELEMENT_NAME\n\t */\n\tpublic is<N extends string>( type: 'editableElement' | 'view:editableElement', name: N ): this is (\n\t\tEditableElement |\n\t\tRootEditableElement\n\t) & { name: N };\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/view/emptyelement~EmptyElement} has the specified `name`.\n\t *\n\t * @label EMPTY_ELEMENT_NAME\n\t */\n\tpublic is<N extends string>( type: 'emptyElement' | 'view:emptyElement', name: N ): this is EmptyElement & { name: N };\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/view/rawelement~RawElement} and has the specified `name`.\n\t *\n\t * @label RAW_ELEMENT_NAME\n\t */\n\tpublic is<N extends string>( type: 'rawElement' | 'view:rawElement', name: N ): this is RawElement & { name: N };\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/view/rooteditableelement~RootEditableElement} and has the specified `name`.\n\t *\n\t * @label ROOT_ELEMENT_NAME\n\t */\n\tpublic is<N extends string>( type: 'rootElement' | 'view:rootElement', name: N ): this is RootEditableElement & { name: N };\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/view/uielement~UIElement} and has the specified `name`.\n\t *\n\t * @label UI_ELEMENT_NAME\n\t */\n\tpublic is<N extends string>( type: 'uiElement' | 'view:uiElement', name: N ): this is UIElement & { name: N };\n\n\t/* istanbul ignore next -- @preserve */\n\tpublic is(): boolean {\n\t\t// There are a lot of overloads above.\n\t\t// Overriding method in derived classes remove them and only `is( type: string ): boolean` is visible which we don't want.\n\t\t// One option would be to copy them all to all classes, but that's ugly.\n\t\t// It's best when TypeScript compiler doesn't see those overloads, except the one in the top base class.\n\t\t// To overload a method, but not let the compiler see it, do after class definition:\n\t\t// `MyClass.prototype.is = function( type: string ) {...}`\n\t\tthrow new Error( 'is() method is abstract' );\n\t}\n}\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/node\n */\n\nimport TypeCheckable from './typecheckable';\n\nimport {\n\tCKEditorError,\n\tEmitterMixin,\n\tcompareArrays\n} from '@ckeditor/ckeditor5-utils';\n\nimport { clone } from 'lodash-es';\n\n// To check if component is loaded more than once.\nimport '@ckeditor/ckeditor5-utils/src/version';\n\nimport type { default as Document, ChangeType } from './document';\nimport type DocumentFragment from './documentfragment';\nimport type Element from './element';\n\n/**\n * Abstract view node class.\n *\n * This is an abstract class. Its constructor should not be used directly.\n * Use the {@link module:engine/view/downcastwriter~DowncastWriter} or {@link module:engine/view/upcastwriter~UpcastWriter}\n * to create new instances of view nodes.\n */\nexport default abstract class Node extends EmitterMixin( TypeCheckable ) {\n\t/**\n\t * The document instance to which this node belongs.\n\t */\n\tpublic readonly document: Document;\n\n\t/**\n\t * Parent element. Null by default. Set by {@link module:engine/view/element~Element#_insertChild}.\n\t */\n\tpublic readonly parent: Element | DocumentFragment | null;\n\n\t/**\n\t * Creates a tree view node.\n\t *\n\t * @param document The document instance to which this node belongs.\n\t */\n\tprotected constructor( document: Document ) {\n\t\tsuper();\n\n\t\tthis.document = document;\n\t\tthis.parent = null;\n\t}\n\n\t/**\n\t * Index of the node in the parent element or null if the node has no parent.\n\t *\n\t * Accessing this property throws an error if this node's parent element does not contain it.\n\t * This means that view tree got broken.\n\t */\n\tpublic get index(): number | null {\n\t\tlet pos;\n\n\t\tif ( !this.parent ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// No parent or child doesn't exist in parent's children.\n\t\tif ( ( pos = this.parent.getChildIndex( this ) ) == -1 ) {\n\t\t\t/**\n\t\t\t * The node's parent does not contain this node. It means that the document tree is corrupted.\n\t\t\t *\n\t\t\t * @error view-node-not-found-in-parent\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-node-not-found-in-parent', this );\n\t\t}\n\n\t\treturn pos;\n\t}\n\n\t/**\n\t * Node's next sibling, or `null` if it is the last child.\n\t */\n\tpublic get nextSibling(): Node | null {\n\t\tconst index = this.index;\n\n\t\treturn ( index !== null && this.parent!.getChild( index + 1 ) ) || null;\n\t}\n\n\t/**\n\t * Node's previous sibling, or `null` if it is the first child.\n\t */\n\tpublic get previousSibling(): Node | null {\n\t\tconst index = this.index;\n\n\t\treturn ( index !== null && this.parent!.getChild( index - 1 ) ) || null;\n\t}\n\n\t/**\n\t * Top-most ancestor of the node. If the node has no parent it is the root itself.\n\t */\n\tpublic get root(): Element | DocumentFragment {\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n\t\tlet root: Node | DocumentFragment = this;\n\n\t\twhile ( root.parent ) {\n\t\t\troot = root.parent;\n\t\t}\n\n\t\treturn root as any;\n\t}\n\n\t/**\n\t * Returns true if the node is in a tree rooted in the document (is a descendant of one of its roots).\n\t */\n\tpublic isAttached(): boolean {\n\t\treturn this.root.is( 'rootElement' );\n\t}\n\n\t/**\n\t * Gets a path to the node. The path is an array containing indices of consecutive ancestors of this node,\n\t * beginning from {@link module:engine/view/node~Node#root root}, down to this node's index.\n\t *\n\t * ```ts\n\t * const abc = downcastWriter.createText( 'abc' );\n\t * const foo = downcastWriter.createText( 'foo' );\n\t * const h1 = downcastWriter.createElement( 'h1', null, downcastWriter.createText( 'header' ) );\n\t * const p = downcastWriter.createElement( 'p', null, [ abc, foo ] );\n\t * const div = downcastWriter.createElement( 'div', null, [ h1, p ] );\n\t * foo.getPath(); // Returns [ 1, 3 ]. `foo` is in `p` which is in `div`. `p` starts at offset 1, while `foo` at 3.\n\t * h1.getPath(); // Returns [ 0 ].\n\t * div.getPath(); // Returns [].\n\t * ```\n\t *\n\t * @returns The path.\n\t */\n\tpublic getPath(): Array<number> {\n\t\tconst path = [];\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n\t\tlet node: Node | DocumentFragment = this;\n\n\t\twhile ( node.parent ) {\n\t\t\tpath.unshift( node.index! );\n\t\t\tnode = node.parent;\n\t\t}\n\n\t\treturn path;\n\t}\n\n\t/**\n\t * Returns ancestors array of this node.\n\t *\n\t * @param options Options object.\n\t * @param options.includeSelf When set to `true` this node will be also included in parent's array.\n\t * @param options.parentFirst When set to `true`, array will be sorted from node's parent to root element,\n\t * otherwise root element will be the first item in the array.\n\t * @returns Array with ancestors.\n\t */\n\tpublic getAncestors( options: { includeSelf?: boolean; parentFirst?: boolean } = {} ): Array<Node | DocumentFragment> {\n\t\tconst ancestors: Array<Node | DocumentFragment> = [];\n\t\tlet parent = options.includeSelf ? this : this.parent;\n\n\t\twhile ( parent ) {\n\t\t\tancestors[ options.parentFirst ? 'push' : 'unshift' ]( parent );\n\t\t\tparent = parent.parent;\n\t\t}\n\n\t\treturn ancestors;\n\t}\n\n\t/**\n\t * Returns a {@link module:engine/view/element~Element} or {@link module:engine/view/documentfragment~DocumentFragment}\n\t * which is a common ancestor of both nodes.\n\t *\n\t * @param node The second node.\n\t * @param options Options object.\n\t * @param options.includeSelf When set to `true` both nodes will be considered \"ancestors\" too.\n\t * Which means that if e.g. node A is inside B, then their common ancestor will be B.\n\t */\n\tpublic getCommonAncestor( node: Node, options: { includeSelf?: boolean } = {} ): Element | DocumentFragment | null {\n\t\tconst ancestorsA = this.getAncestors( options );\n\t\tconst ancestorsB = node.getAncestors( options );\n\n\t\tlet i = 0;\n\n\t\twhile ( ancestorsA[ i ] == ancestorsB[ i ] && ancestorsA[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i === 0 ? null : ancestorsA[ i - 1 ] as ( Element | DocumentFragment );\n\t}\n\n\t/**\n\t * Returns whether this node is before given node. `false` is returned if nodes are in different trees (for example,\n\t * in different {@link module:engine/view/documentfragment~DocumentFragment}s).\n\t *\n\t * @param node Node to compare with.\n\t */\n\tpublic isBefore( node: Node ): boolean {\n\t\t// Given node is not before this node if they are same.\n\t\tif ( this == node ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Return `false` if it is impossible to compare nodes.\n\t\tif ( this.root !== node.root ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst thisPath = this.getPath();\n\t\tconst nodePath = node.getPath();\n\n\t\tconst result = compareArrays( thisPath, nodePath );\n\n\t\tswitch ( result ) {\n\t\t\tcase 'prefix':\n\t\t\t\treturn true;\n\n\t\t\tcase 'extension':\n\t\t\t\treturn false;\n\n\t\t\tdefault:\n\t\t\t\treturn thisPath[ result as number ] < nodePath[ result as number ];\n\t\t}\n\t}\n\n\t/**\n\t * Returns whether this node is after given node. `false` is returned if nodes are in different trees (for example,\n\t * in different {@link module:engine/view/documentfragment~DocumentFragment}s).\n\t *\n\t * @param node Node to compare with.\n\t */\n\tpublic isAfter( node: Node ): boolean {\n\t\t// Given node is not before this node if they are same.\n\t\tif ( this == node ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Return `false` if it is impossible to compare nodes.\n\t\tif ( this.root !== node.root ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// In other cases, just check if the `node` is before, and return the opposite.\n\t\treturn !this.isBefore( node );\n\t}\n\n\t/**\n\t * Removes node from parent.\n\t *\n\t * @internal\n\t */\n\tpublic _remove(): void {\n\t\tthis.parent!._removeChildren( this.index! );\n\t}\n\n\t/**\n\t * @internal\n\t * @param type Type of the change.\n\t * @param node Changed node.\n\t * @fires change\n\t */\n\tpublic _fireChange( type: ChangeType, node: Node ): void {\n\t\tthis.fire<ViewNodeChangeEvent>( `change:${ type }`, node );\n\n\t\tif ( this.parent ) {\n\t\t\tthis.parent._fireChange( type, node );\n\t\t}\n\t}\n\n\t/**\n\t * Custom toJSON method to solve child-parent circular dependencies.\n\t *\n\t * @returns Clone of this object with the parent property removed.\n\t */\n\tpublic toJSON(): unknown {\n\t\tconst json: any = clone( this );\n\n\t\t// Due to circular references we need to remove parent reference.\n\t\tdelete json.parent;\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * Clones this node.\n\t *\n\t * @internal\n\t * @returns Clone of this node.\n\t */\n\tpublic abstract _clone( deep?: boolean ): Node;\n\n\t/**\n\t * Checks if provided node is similar to this node.\n\t *\n\t * @returns True if nodes are similar.\n\t */\n\tpublic abstract isSimilar( other: Node ): boolean;\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nNode.prototype.is = function( type: string ): boolean {\n\treturn type === 'node' || type === 'view:node';\n};\n\n/**\n * Fired when list of {@link module:engine/view/element~Element elements} children, attributes or data changes.\n *\n * Change event is bubbled – it is fired on all ancestors.\n *\n * @eventName ~Node#change\n * @eventName ~Node#change:children\n * @eventName ~Node#change:attributes\n * @eventName ~Node#change:text\n */\nexport type ViewNodeChangeEvent = {\n\tname: 'change' | `change:${ ChangeType }`;\n\targs: [ changedNode: Node ];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/text\n */\n\nimport Node from './node';\n\nimport type Document from './document';\n\n/**\n * Tree view text node.\n *\n * The constructor of this class should not be used directly. To create a new text node instance\n * use the {@link module:engine/view/downcastwriter~DowncastWriter#createText `DowncastWriter#createText()`}\n * method when working on data downcasted from the model or the\n * {@link module:engine/view/upcastwriter~UpcastWriter#createText `UpcastWriter#createText()`}\n * method when working on non-semantic views.\n */\nexport default class Text extends Node {\n\t/**\n\t * The text content.\n\t *\n\t * Setting the data fires the {@link module:engine/view/node~Node#event:change:text change event}.\n\t */\n\tprivate _textData: string;\n\n\t/**\n\t * Creates a tree view text node.\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#createText\n\t * @internal\n\t * @param document The document instance to which this text node belongs.\n\t * @param data The text's data.\n\t */\n\tconstructor( document: Document, data: string ) {\n\t\tsuper( document );\n\n\t\tthis._textData = data;\n\t}\n\n\t/**\n\t * The text content.\n\t */\n\tpublic get data(): string {\n\t\treturn this._textData;\n\t}\n\n\t/**\n\t * The `_data` property is controlled by a getter and a setter.\n\t *\n\t * The getter is required when using the addition assignment operator on protected property:\n\t *\n\t * ```ts\n\t * const foo = downcastWriter.createText( 'foo' );\n\t * const bar = downcastWriter.createText( 'bar' );\n\t *\n\t * foo._data += bar.data; // executes: `foo._data = foo._data + bar.data`\n\t * console.log( foo.data ); // prints: 'foobar'\n\t * ```\n\t *\n\t * If the protected getter didn't exist, `foo._data` will return `undefined` and result of the merge will be invalid.\n\t *\n\t * The setter sets data and fires the {@link module:engine/view/node~Node#event:change:text change event}.\n\t *\n\t * @internal\n\t */\n\tpublic get _data(): string {\n\t\treturn this.data;\n\t}\n\n\tpublic set _data( data: string ) {\n\t\tthis._fireChange( 'text', this );\n\n\t\tthis._textData = data;\n\t}\n\n\t/**\n\t * Checks if this text node is similar to other text node.\n\t * Both nodes should have the same data to be considered as similar.\n\t *\n\t * @param otherNode Node to check if it is same as this node.\n\t */\n\tpublic isSimilar( otherNode: Node ): boolean {\n\t\tif ( !( otherNode instanceof Text ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this === otherNode || this.data === otherNode.data;\n\t}\n\n\t/**\n\t * Clones this node.\n\t *\n\t * @internal\n\t * @returns Text node that is a clone of this node.\n\t */\n\tpublic _clone(): Text {\n\t\treturn new Text( this.document, this.data );\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \treturn `#${ this.data }`;\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public log(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( 'ViewText: ' + this );\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public logExtended(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( 'ViewText: ' + this );\n\t// @if CK_DEBUG_ENGINE // }\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nText.prototype.is = function( type: string ): boolean {\n\treturn type === '$text' || type === 'view:$text' ||\n\t\t// This are legacy values kept for backward compatibility.\n\t\ttype === 'text' || type === 'view:text' ||\n\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\ttype === 'node' || type === 'view:node';\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/textproxy\n */\n\nimport TypeCheckable from './typecheckable';\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\n\nimport type Document from './document';\nimport type DocumentFragment from './documentfragment';\nimport type Element from './element';\nimport type Node from './node';\nimport type Text from './text';\n\n/**\n * TextProxy is a wrapper for substring of {@link module:engine/view/text~Text}. Instance of this class is created by\n * {@link module:engine/view/treewalker~TreeWalker} when only a part of {@link module:engine/view/text~Text} needs to be returned.\n *\n * `TextProxy` has an API similar to {@link module:engine/view/text~Text Text} and allows to do most of the common tasks performed\n * on view nodes.\n *\n * **Note:** Some `TextProxy` instances may represent whole text node, not just a part of it.\n * See {@link module:engine/view/textproxy~TextProxy#isPartial}.\n *\n * **Note:** `TextProxy` is a readonly interface.\n *\n * **Note:** `TextProxy` instances are created on the fly basing on the current state of parent {@link module:engine/view/text~Text}.\n * Because of this it is highly unrecommended to store references to `TextProxy instances because they might get\n * invalidated due to operations on Document. Also TextProxy is not a {@link module:engine/view/node~Node} so it can not be\n * inserted as a child of {@link module:engine/view/element~Element}.\n *\n * `TextProxy` instances are created by {@link module:engine/view/treewalker~TreeWalker view tree walker}. You should not need to create\n * an instance of this class by your own.\n */\nexport default class TextProxy extends TypeCheckable {\n\t/**\n\t * Reference to the {@link module:engine/view/text~Text} element which TextProxy is a substring.\n\t */\n\tpublic readonly textNode: Text;\n\n\t/**\n\t * Text data represented by this text proxy.\n\t */\n\tpublic readonly data: string;\n\n\t/**\n\t * Offset in the `textNode` where this `TextProxy` instance starts.\n\t */\n\tpublic readonly offsetInText: number;\n\n\t/**\n\t * Creates a text proxy.\n\t *\n\t * @internal\n\t * @param textNode Text node which part is represented by this text proxy.\n\t * @param offsetInText Offset in {@link module:engine/view/textproxy~TextProxy#textNode text node}\n\t * from which the text proxy starts.\n\t * @param length Text proxy length, that is how many text node's characters, starting from `offsetInText` it represents.\n\t * @constructor\n\t */\n\tconstructor( textNode: Text, offsetInText: number, length: number ) {\n\t\tsuper();\n\n\t\tthis.textNode = textNode;\n\n\t\tif ( offsetInText < 0 || offsetInText > textNode.data.length ) {\n\t\t\t/**\n\t\t\t * Given offsetInText value is incorrect.\n\t\t\t *\n\t\t\t * @error view-textproxy-wrong-offsetintext\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-textproxy-wrong-offsetintext', this );\n\t\t}\n\n\t\tif ( length < 0 || offsetInText + length > textNode.data.length ) {\n\t\t\t/**\n\t\t\t * Given length value is incorrect.\n\t\t\t *\n\t\t\t * @error view-textproxy-wrong-length\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-textproxy-wrong-length', this );\n\t\t}\n\n\t\tthis.data = textNode.data.substring( offsetInText, offsetInText + length );\n\t\tthis.offsetInText = offsetInText;\n\t}\n\n\t/**\n\t * Offset size of this node.\n\t */\n\tpublic get offsetSize(): number {\n\t\treturn this.data.length;\n\t}\n\n\t/**\n\t * Flag indicating whether `TextProxy` instance covers only part of the original {@link module:engine/view/text~Text text node}\n\t * (`true`) or the whole text node (`false`).\n\t *\n\t * This is `false` when text proxy starts at the very beginning of {@link module:engine/view/textproxy~TextProxy#textNode textNode}\n\t * ({@link module:engine/view/textproxy~TextProxy#offsetInText offsetInText} equals `0`) and text proxy sizes is equal to\n\t * text node size.\n\t */\n\tpublic get isPartial(): boolean {\n\t\treturn this.data.length !== this.textNode.data.length;\n\t}\n\n\t/**\n\t * Parent of this text proxy, which is same as parent of text node represented by this text proxy.\n\t */\n\tpublic get parent(): Element | DocumentFragment | null {\n\t\treturn this.textNode.parent;\n\t}\n\n\t/**\n\t * Root of this text proxy, which is same as root of text node represented by this text proxy.\n\t */\n\tpublic get root(): Node | DocumentFragment {\n\t\treturn this.textNode.root;\n\t}\n\n\t/**\n\t * {@link module:engine/view/document~Document View document} that owns this text proxy, or `null` if the text proxy is inside\n\t * {@link module:engine/view/documentfragment~DocumentFragment document fragment}.\n\t */\n\tpublic get document(): Document | null {\n\t\treturn this.textNode.document;\n\t}\n\n\t/**\n\t * Returns ancestors array of this text proxy.\n\t *\n\t * @param options Options object.\n\t * @param options.includeSelf When set to `true`, textNode will be also included in parent's array.\n\t * @param options.parentFirst When set to `true`, array will be sorted from text proxy parent to\n\t * root element, otherwise root element will be the first item in the array.\n\t * @returns Array with ancestors.\n\t */\n\tpublic getAncestors( options: {\n\t\tincludeSelf?: boolean;\n\t\tparentFirst?: boolean;\n\t} = {} ): Array<Text | Element | DocumentFragment> {\n\t\tconst ancestors: Array<Text | Element | DocumentFragment> = [];\n\t\tlet parent: Text | Element | DocumentFragment | null = options.includeSelf ? this.textNode : this.parent;\n\n\t\twhile ( parent !== null ) {\n\t\t\tancestors[ options.parentFirst ? 'push' : 'unshift' ]( parent );\n\t\t\tparent = parent.parent;\n\t\t}\n\n\t\treturn ancestors;\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \treturn `#${ this.data }`;\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public log(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( 'ViewTextProxy: ' + this );\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public logExtended(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( 'ViewTextProxy: ' + this );\n\t// @if CK_DEBUG_ENGINE // }\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nTextProxy.prototype.is = function( type: string ): boolean {\n\treturn type === '$textProxy' || type === 'view:$textProxy' ||\n\t\t// This are legacy values kept for backward compatibility.\n\t\ttype === 'textProxy' || type === 'view:textProxy';\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/matcher\n */\n\nimport type Element from './element';\n\nimport { isPlainObject } from 'lodash-es';\n\nimport { logWarning } from '@ckeditor/ckeditor5-utils';\n\n/**\n * View matcher class.\n * Instance of this class can be used to find {@link module:engine/view/element~Element elements} that match given pattern.\n */\nexport default class Matcher {\n\tprivate readonly _patterns: Array<MatcherFunctionPattern | MatcherObjectPattern> = [];\n\n\t/**\n\t * Creates new instance of Matcher.\n\t *\n\t * @param pattern Match patterns. See {@link module:engine/view/matcher~Matcher#add add method} for more information.\n\t */\n\tconstructor( ...pattern: Array<MatcherPattern> ) {\n\t\tthis.add( ...pattern );\n\t}\n\n\t/**\n\t * Adds pattern or patterns to matcher instance.\n\t *\n\t * ```ts\n\t * // String.\n\t * matcher.add( 'div' );\n\t *\n\t * // Regular expression.\n\t * matcher.add( /^\\w/ );\n\t *\n\t * // Single class.\n\t * matcher.add( {\n\t * \tclasses: 'foobar'\n\t * } );\n\t * ```\n\t *\n\t * See {@link module:engine/view/matcher~MatcherPattern} for more examples.\n\t *\n\t * Multiple patterns can be added in one call:\n\t *\n\t * ```ts\n\t * matcher.add( 'div', { classes: 'foobar' } );\n\t * ```\n\t *\n\t * @param pattern Object describing pattern details. If string or regular expression\n\t * is provided it will be used to match element's name. Pattern can be also provided in a form\n\t * of a function - then this function will be called with each {@link module:engine/view/element~Element element} as a parameter.\n\t * Function's return value will be stored under `match` key of the object returned from\n\t * {@link module:engine/view/matcher~Matcher#match match} or {@link module:engine/view/matcher~Matcher#matchAll matchAll} methods.\n\t */\n\tpublic add( ...pattern: Array<MatcherPattern> ): void {\n\t\tfor ( let item of pattern ) {\n\t\t\t// String or RegExp pattern is used as element's name.\n\t\t\tif ( typeof item == 'string' || item instanceof RegExp ) {\n\t\t\t\titem = { name: item };\n\t\t\t}\n\n\t\t\tthis._patterns.push( item );\n\t\t}\n\t}\n\n\t/**\n\t * Matches elements for currently stored patterns. Returns match information about first found\n\t * {@link module:engine/view/element~Element element}, otherwise returns `null`.\n\t *\n\t * Example of returned object:\n\t *\n\t * ```ts\n\t * {\n\t * \telement: <instance of found element>,\n\t * \tpattern: <pattern used to match found element>,\n\t * \tmatch: {\n\t * \t\tname: true,\n\t * \t\tattributes: [ 'title', 'href' ],\n\t * \t\tclasses: [ 'foo' ],\n\t * \t\tstyles: [ 'color', 'position' ]\n\t * \t}\n\t * }\n\t * ```\n\t *\n\t * @see module:engine/view/matcher~Matcher#add\n\t * @see module:engine/view/matcher~Matcher#matchAll\n\t * @param element View element to match against stored patterns.\n\t */\n\tpublic match( ...element: Array<Element> ): MatchResult | null {\n\t\tfor ( const singleElement of element ) {\n\t\t\tfor ( const pattern of this._patterns ) {\n\t\t\t\tconst match = isElementMatching( singleElement, pattern );\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\telement: singleElement,\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tmatch\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Matches elements for currently stored patterns. Returns array of match information with all found\n\t * {@link module:engine/view/element~Element elements}. If no element is found - returns `null`.\n\t *\n\t * @see module:engine/view/matcher~Matcher#add\n\t * @see module:engine/view/matcher~Matcher#match\n\t * @param element View element to match against stored patterns.\n\t * @returns Array with match information about found elements or `null`. For more information\n\t * see {@link module:engine/view/matcher~Matcher#match match method} description.\n\t */\n\tpublic matchAll( ...element: Array<Element> ): Array<MatchResult> | null {\n\t\tconst results: Array<MatchResult> = [];\n\n\t\tfor ( const singleElement of element ) {\n\t\t\tfor ( const pattern of this._patterns ) {\n\t\t\t\tconst match = isElementMatching( singleElement, pattern );\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\tresults.push( {\n\t\t\t\t\t\telement: singleElement,\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tmatch\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn results.length > 0 ? results : null;\n\t}\n\n\t/**\n\t * Returns the name of the element to match if there is exactly one pattern added to the matcher instance\n\t * and it matches element name defined by `string` (not `RegExp`). Otherwise, returns `null`.\n\t *\n\t * @returns Element name trying to match.\n\t */\n\tpublic getElementName(): string | null {\n\t\tif ( this._patterns.length !== 1 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst pattern = this._patterns[ 0 ];\n\t\tconst name = pattern.name;\n\n\t\treturn ( typeof pattern != 'function' && name && !( name instanceof RegExp ) ) ? name : null;\n\t}\n}\n\n/**\n * Returns match information if {@link module:engine/view/element~Element element} is matching provided pattern.\n * If element cannot be matched to provided pattern - returns `null`.\n *\n * @returns Returns object with match information or null if element is not matching.\n */\nfunction isElementMatching( element: Element, pattern: MatcherFunctionPattern | MatcherObjectPattern ): Match | null {\n\t// If pattern is provided as function - return result of that function;\n\tif ( typeof pattern == 'function' ) {\n\t\treturn pattern( element );\n\t}\n\n\tconst match: Match = {};\n\n\t// Check element's name.\n\tif ( pattern.name ) {\n\t\tmatch.name = matchName( pattern.name, element.name );\n\n\t\tif ( !match.name ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t// Check element's attributes.\n\tif ( pattern.attributes ) {\n\t\tmatch.attributes = matchAttributes( pattern.attributes, element );\n\n\t\tif ( !match.attributes ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t// Check element's classes.\n\tif ( pattern.classes ) {\n\t\tmatch.classes = matchClasses( pattern.classes, element );\n\n\t\tif ( !match.classes ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t// Check element's styles.\n\tif ( pattern.styles ) {\n\t\tmatch.styles = matchStyles( pattern.styles, element );\n\n\t\tif ( !match.styles ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn match;\n}\n\n/**\n * Checks if name can be matched by provided pattern.\n *\n * @returns Returns `true` if name can be matched, `false` otherwise.\n */\nfunction matchName( pattern: string | RegExp, name: string ): boolean {\n\t// If pattern is provided as RegExp - test against this regexp.\n\tif ( pattern instanceof RegExp ) {\n\t\treturn !!name.match( pattern );\n\t}\n\n\treturn pattern === name;\n}\n\n/**\n * Checks if an array of key/value pairs can be matched against provided patterns.\n *\n * Patterns can be provided in a following ways:\n * - a boolean value matches any attribute with any value (or no value):\n *\n * ```ts\n * pattern: true\n * ```\n *\n * - a RegExp expression or object matches any attribute name:\n *\n * ```ts\n * pattern: /h[1-6]/\n * ```\n *\n * - an object matches any attribute that has the same name as the object item's key, where object item's value is:\n * \t- equal to `true`, which matches any attribute value:\n *\n * ```ts\n * pattern: {\n * \trequired: true\n * }\n * ```\n *\n * \t- a string that is equal to attribute value:\n *\n * ```ts\n * pattern: {\n * \trel: 'nofollow'\n * }\n * ```\n *\n * \t- a regular expression that matches attribute value,\n *\n * ```ts\n * pattern: {\n * \tsrc: /^https/\n * }\n * ```\n *\n * - an array with items, where the item is:\n * \t- a string that is equal to attribute value:\n *\n * ```ts\n * pattern: [ 'data-property-1', 'data-property-2' ],\n * ```\n *\n * \t- an object with `key` and `value` property, where `key` is a regular expression matching attribute name and\n * \t\t`value` is either regular expression matching attribute value or a string equal to attribute value:\n *\n * ```ts\n * pattern: [\n * \t{ key: /^data-property-/, value: true },\n * \t// or:\n * \t{ key: /^data-property-/, value: 'foobar' },\n * \t// or:\n * \t{ key: /^data-property-/, value: /^foo/ }\n * ]\n * ```\n *\n * @param patterns Object with information about attributes to match.\n * @param keys Attribute, style or class keys.\n * @param valueGetter A function providing value for a given item key.\n * @returns Returns array with matched attribute names or `null` if no attributes were matched.\n */\nfunction matchPatterns(\n\tpatterns: PropertyPatterns,\n\tkeys: Iterable<string>,\n\tvalueGetter: ( value: string ) => unknown\n): Array<string> | undefined {\n\tconst normalizedPatterns = normalizePatterns( patterns );\n\tconst normalizedItems = Array.from( keys );\n\tconst match: Array<string> = [];\n\n\tnormalizedPatterns.forEach( ( [ patternKey, patternValue ] ) => {\n\t\tnormalizedItems.forEach( itemKey => {\n\t\t\tif (\n\t\t\t\tisKeyMatched( patternKey, itemKey ) &&\n\t\t\t\tisValueMatched( patternValue, itemKey, valueGetter )\n\t\t\t) {\n\t\t\t\tmatch.push( itemKey );\n\t\t\t}\n\t\t} );\n\t} );\n\n\t// Return matches only if there are at least as many of them as there are patterns.\n\t// The RegExp pattern can match more than one item.\n\tif ( !normalizedPatterns.length || match.length < normalizedPatterns.length ) {\n\t\treturn undefined;\n\t}\n\n\treturn match;\n}\n\n/**\n * Bring all the possible pattern forms to an array of arrays where first item is a key and second is a value.\n *\n * Examples:\n *\n * Boolean pattern value:\n *\n * ```ts\n * true\n * ```\n *\n * to\n *\n * ```ts\n * [ [ true, true ] ]\n * ```\n *\n * Textual pattern value:\n *\n * ```ts\n * 'attribute-name-or-class-or-style'\n * ```\n *\n * to\n *\n * ```ts\n * [ [ 'attribute-name-or-class-or-style', true ] ]\n * ```\n *\n * Regular expression:\n *\n * ```ts\n * /^data-.*$/\n * ```\n *\n * to\n *\n * ```ts\n * [ [ /^data-.*$/, true ] ]\n * ```\n *\n * Objects (plain or with `key` and `value` specified explicitly):\n *\n * ```ts\n * {\n * \tsrc: /^https:.*$/\n * }\n * ```\n *\n * or\n *\n * ```ts\n * [ {\n * \tkey: 'src',\n * \tvalue: /^https:.*$/\n * } ]\n * ```\n *\n * to:\n *\n * ```ts\n * [ [ 'src', /^https:.*$/ ] ]\n * ```\n *\n * @returns Returns an array of objects or null if provided patterns were not in an expected form.\n */\nfunction normalizePatterns( patterns: PropertyPatterns ): Array<[ true | string | RegExp, true | string | RegExp ]> {\n\tif ( Array.isArray( patterns ) ) {\n\t\treturn patterns.map( ( pattern: any ) => {\n\t\t\tif ( isPlainObject( pattern ) ) {\n\t\t\t\tif ( pattern.key === undefined || pattern.value === undefined ) {\n\t\t\t\t\t// Documented at the end of matcher.js.\n\t\t\t\t\tlogWarning( 'matcher-pattern-missing-key-or-value', pattern );\n\t\t\t\t}\n\n\t\t\t\treturn [ pattern.key, pattern.value ];\n\t\t\t}\n\n\t\t\t// Assume the pattern is either String or RegExp.\n\t\t\treturn [ pattern, true ];\n\t\t} );\n\t}\n\n\tif ( isPlainObject( patterns ) ) {\n\t\treturn Object.entries( patterns );\n\t}\n\n\t// Other cases (true, string or regexp).\n\treturn [ [ patterns as any, true ] ];\n}\n\n/**\n * @param patternKey A pattern representing a key we want to match.\n * @param itemKey An actual item key (e.g. `'src'`, `'background-color'`, `'ck-widget'`) we're testing against pattern.\n */\nfunction isKeyMatched( patternKey: true | string | RegExp, itemKey: string ): unknown {\n\treturn patternKey === true ||\n\t\tpatternKey === itemKey ||\n\t\tpatternKey instanceof RegExp && itemKey.match( patternKey );\n}\n\n/**\n * @param patternValue A pattern representing a value we want to match.\n * @param itemKey An item key, e.g. `background`, `href`, 'rel', etc.\n * @param valueGetter A function used to provide a value for a given `itemKey`.\n */\nfunction isValueMatched(\n\tpatternValue: true | string | RegExp,\n\titemKey: string,\n\tvalueGetter: ( itemKey: string ) => unknown\n): boolean {\n\tif ( patternValue === true ) {\n\t\treturn true;\n\t}\n\n\tconst itemValue = valueGetter( itemKey );\n\n\t// For now, the reducers are not returning the full tree of properties.\n\t// Casting to string preserves the old behavior until the root cause is fixed.\n\t// More can be found in https://github.com/ckeditor/ckeditor5/issues/10399.\n\treturn patternValue === itemValue ||\n\t\tpatternValue instanceof RegExp && !!String( itemValue ).match( patternValue );\n}\n\n/**\n * Checks if attributes of provided element can be matched against provided patterns.\n *\n * @param patterns Object with information about attributes to match. Each key of the object will be\n * used as attribute name. Value of each key can be a string or regular expression to match against attribute value.\n * @param element Element which attributes will be tested.\n * @returns Returns array with matched attribute names or `null` if no attributes were matched.\n */\nfunction matchAttributes(\n\tpatterns: AttributePatterns,\n\telement: Element\n): Array<string> | undefined {\n\tconst attributeKeys = new Set( element.getAttributeKeys() );\n\n\t// `style` and `class` attribute keys are deprecated. Only allow them in object pattern\n\t// for backward compatibility.\n\tif ( isPlainObject( patterns ) ) {\n\t\tif ( ( patterns as any ).style !== undefined ) {\n\t\t\t// Documented at the end of matcher.js.\n\t\t\tlogWarning( 'matcher-pattern-deprecated-attributes-style-key', patterns as any );\n\t\t}\n\t\tif ( ( patterns as any ).class !== undefined ) {\n\t\t\t// Documented at the end of matcher.js.\n\t\t\tlogWarning( 'matcher-pattern-deprecated-attributes-class-key', patterns as any );\n\t\t}\n\t} else {\n\t\tattributeKeys.delete( 'style' );\n\t\tattributeKeys.delete( 'class' );\n\t}\n\n\treturn matchPatterns( patterns, attributeKeys, key => element.getAttribute( key ) );\n}\n\n/**\n * Checks if classes of provided element can be matched against provided patterns.\n *\n * @param patterns Array of strings or regular expressions to match against element's classes.\n * @param element Element which classes will be tested.\n * @returns Returns array with matched class names or `null` if no classes were matched.\n */\nfunction matchClasses( patterns: ClassPatterns, element: Element ): Array<string> | undefined {\n\t// We don't need `getter` here because patterns for classes are always normalized to `[ className, true ]`.\n\treturn matchPatterns( patterns, element.getClassNames(), /* istanbul ignore next -- @preserve */ () => {} );\n}\n\n/**\n * Checks if styles of provided element can be matched against provided patterns.\n *\n * @param patterns Object with information about styles to match. Each key of the object will be\n * used as style name. Value of each key can be a string or regular expression to match against style value.\n * @param element Element which styles will be tested.\n * @returns Returns array with matched style names or `null` if no styles were matched.\n */\nfunction matchStyles( patterns: StylePatterns, element: Element ): Array<string> | undefined {\n\treturn matchPatterns( patterns, element.getStyleNames( true ), key => element.getStyle( key ) );\n}\n\n/**\n * An entity that is a valid pattern recognized by a matcher. `MatcherPattern` is used by {@link ~Matcher} to recognize\n * if a view element fits in a group of view elements described by the pattern.\n *\n * `MatcherPattern` can be given as a `String`, a `RegExp`, an `Object` or a `Function`.\n *\n * If `MatcherPattern` is given as a `String` or `RegExp`, it will match any view element that has a matching name:\n *\n * ```ts\n * // Match any element with name equal to 'div'.\n * const pattern = 'div';\n *\n * // Match any element which name starts on 'p'.\n * const pattern = /^p/;\n * ```\n *\n * If `MatcherPattern` is given as an `Object`, all the object's properties will be matched with view element properties.\n * If the view element does not meet all of the object's pattern properties, the match will not happen.\n * Available `Object` matching properties:\n *\n * Matching view element:\n *\n * ```ts\n * // Match view element's name using String:\n * const pattern = { name: 'p' };\n *\n * // or by providing RegExp:\n * const pattern = { name: /^(ul|ol)$/ };\n *\n * // The name can also be skipped to match any view element with matching attributes:\n * const pattern = {\n * \tattributes: {\n * \t\t'title': true\n * \t}\n * };\n * ```\n *\n * Matching view element attributes:\n *\n * ```ts\n * // Match view element with any attribute value.\n * const pattern = {\n * \tname: 'p',\n * \tattributes: true\n * };\n *\n * // Match view element which has matching attributes (String).\n * const pattern = {\n * \tname: 'figure',\n * \tattributes: 'title' // Match title attribute (can be empty).\n * };\n *\n * // Match view element which has matching attributes (RegExp).\n * const pattern = {\n * \tname: 'figure',\n * \tattributes: /^data-.*$/ // Match attributes starting with `data-` e.g. `data-foo` with any value (can be empty).\n * };\n *\n * // Match view element which has matching attributes (Object).\n * const pattern = {\n * \tname: 'figure',\n * \tattributes: {\n * \t\ttitle: 'foobar', // Match `title` attribute with 'foobar' value.\n * \t\talt: true, // Match `alt` attribute with any value (can be empty).\n * \t\t'data-type': /^(jpg|png)$/ // Match `data-type` attribute with `jpg` or `png` value.\n * \t}\n * };\n *\n * // Match view element which has matching attributes (Array).\n * const pattern = {\n * \tname: 'figure',\n * \tattributes: [\n * \t\t'title', // Match `title` attribute (can be empty).\n * \t\t/^data-*$/ // Match attributes starting with `data-` e.g. `data-foo` with any value (can be empty).\n * \t]\n * };\n *\n * // Match view element which has matching attributes (key-value pairs).\n * const pattern = {\n * \tname: 'input',\n * \tattributes: [\n * \t\t{\n * \t\t\tkey: 'type', // Match `type` as an attribute key.\n * \t\t\tvalue: /^(text|number|date)$/\t // Match `text`, `number` or `date` values.\n * \t\t},\n * \t\t{\n * \t\t\tkey: /^data-.*$/, // Match attributes starting with `data-` e.g. `data-foo`.\n * \t\t\tvalue: true // Match any value (can be empty).\n * \t\t}\n * \t]\n * };\n * ```\n *\n * Matching view element styles:\n *\n * ```ts\n * // Match view element with any style.\n * const pattern = {\n * \tname: 'p',\n * \tstyles: true\n * };\n *\n * // Match view element which has matching styles (String).\n * const pattern = {\n * \tname: 'p',\n * \tstyles: 'color' // Match attributes with `color` style.\n * };\n *\n * // Match view element which has matching styles (RegExp).\n * const pattern = {\n * \tname: 'p',\n * \tstyles: /^border.*$/ // Match view element with any border style.\n * };\n *\n * // Match view element which has matching styles (Object).\n * const pattern = {\n * \tname: 'p',\n * \tstyles: {\n * \t\tcolor: /rgb\\((\\d{1,3}), (\\d{1,3}), (\\d{1,3})\\)/, // Match `color` in RGB format only.\n * \t\t'font-weight': 600, // Match `font-weight` only if it's `600`.\n * \t\t'text-decoration': true // Match any text decoration.\n * \t}\n * };\n *\n * // Match view element which has matching styles (Array).\n * const pattern = {\n * \tname: 'p',\n * \tstyles: [\n * \t\t'color', // Match `color` with any value.\n * \t\t/^border.*$/ // Match all border properties.\n * \t]\n * };\n *\n * // Match view element which has matching styles (key-value pairs).\n * const pattern = {\n * \tname: 'p',\n * \tstyles: [\n * \t\t{\n * \t\t\tkey: 'color', \t\t// Match `color` as an property key.\n * \t\t\tvalue: /rgb\\((\\d{1,3}), (\\d{1,3}), (\\d{1,3})\\)/\t\t// Match RGB format only.\n * \t\t},\n * \t\t{\n * \t\t\tkey: /^border.*$/, // Match any border style.\n * \t\t\tvalue: true // Match any value.\n * \t\t}\n * \t]\n * };\n * ```\n *\n * Matching view element classes:\n *\n * ```ts\n * // Match view element with any class.\n * const pattern = {\n * \tname: 'p',\n * \tclasses: true\n * };\n *\n * // Match view element which has matching class (String).\n * const pattern = {\n * \tname: 'p',\n * \tclasses: 'highlighted' // Match `highlighted` class.\n * };\n *\n * // Match view element which has matching classes (RegExp).\n * const pattern = {\n * \tname: 'figure',\n * \tclasses: /^image-side-(left|right)$/ // Match `image-side-left` or `image-side-right` class.\n * };\n *\n * // Match view element which has matching classes (Object).\n * const pattern = {\n * \tname: 'p',\n * \tclasses: {\n * \t\thighlighted: true, // Match `highlighted` class.\n * \t\tmarker: true // Match `marker` class.\n * \t}\n * };\n *\n * // Match view element which has matching classes (Array).\n * const pattern = {\n * \tname: 'figure',\n * \tclasses: [\n * \t\t'image', // Match `image` class.\n * \t\t/^image-side-(left|right)$/ // Match `image-side-left` or `image-side-right` class.\n * \t]\n * };\n *\n * // Match view element which has matching classes (key-value pairs).\n * const pattern = {\n * \tname: 'figure',\n * \tclasses: [\n * \t\t{\n * \t\t\tkey: 'image', // Match `image` class.\n * \t\t\tvalue: true\n * \t\t},\n * \t\t{\n * \t\t\tkey: /^image-side-(left|right)$/, // Match `image-side-left` or `image-side-right` class.\n * \t\t\tvalue: true\n * \t\t}\n * \t]\n * };\n * ```\n *\n * Pattern can combine multiple properties allowing for more complex view element matching:\n *\n * ```ts\n * const pattern = {\n * \tname: 'span',\n * \tattributes: [ 'title' ],\n * \tstyles: {\n * \t\t'font-weight': 'bold'\n * \t},\n * \tclasses: 'highlighted'\n * };\n * ```\n *\n * If `MatcherPattern` is given as a `Function`, the function takes a view element as a first and only parameter and\n * the function should decide whether that element matches. If so, it should return what part of the view element has been matched.\n * Otherwise, the function should return `null`. The returned result will be included in `match` property of the object\n * returned by {@link ~Matcher#match} call.\n *\n * ```ts\n * // Match an empty <div> element.\n * const pattern = element => {\n * \tif ( element.name == 'div' && element.childCount > 0 ) {\n * \t\t// Return which part of the element was matched.\n * \t\treturn { name: true };\n * \t}\n *\n * \treturn null;\n * };\n *\n * // Match a <p> element with big font (\"heading-like\" element).\n * const pattern = element => {\n * \tif ( element.name == 'p' ) {\n * \t\tconst fontSize = element.getStyle( 'font-size' );\n * \t\tconst size = fontSize.match( /(\\d+)/px );\n *\n * \t\tif ( size && Number( size[ 1 ] ) > 26 ) {\n * \t\t\treturn { name: true, attributes: [ 'font-size' ] };\n * \t\t}\n * \t}\n *\n * \treturn null;\n * };\n * ```\n *\n * `MatcherPattern` is defined in a way that it is a superset of {@link module:engine/view/elementdefinition~ElementDefinition},\n * that is, every `ElementDefinition` also can be used as a `MatcherPattern`.\n */\nexport type MatcherPattern = string | RegExp | MatcherFunctionPattern | MatcherObjectPattern;\n\n/**\n * A function describing `MatcherPattern`. See {@link ~MatcherPattern} for examples and other options.\n */\nexport type MatcherFunctionPattern = ( element: Element ) => Match | null;\n\n/**\n * An object describing `MatcherPattern`. See {@link ~MatcherPattern} for examples and other options.\n */\nexport interface MatcherObjectPattern {\n\n\t/**\n\t * View element name to match.\n\t */\n\tname?: string | RegExp;\n\n\tkey?: string;\n\n\t/**\n\t * View element's classes to match.\n\t */\n\tclasses?: ClassPatterns;\n\n\t/**\n\t * View element's styles to match.\n\t */\n\tstyles?: StylePatterns;\n\n\t/**\n\t * View element's attributes to match.\n\t */\n\tattributes?: AttributePatterns;\n}\n\n/**\n * An object representing matched element parts.\n */\nexport interface Match {\n\n\t/**\n\t * True if name of the element was matched.\n\t */\n\tname?: boolean;\n\n\t/**\n\t * Array with matched attribute names.\n\t */\n\tattributes?: Array<string>;\n\n\t/**\n\t * Array with matched class names.\n\t */\n\tclasses?: Array<string>;\n\n\t/**\n\t * Array with matched style names.\n\t */\n\tstyles?: Array<string>;\n}\n\n/**\n * The result of {@link ~Matcher#match}.\n */\nexport interface MatchResult {\n\n\t/**\n\t * Matched view element.\n\t */\n\telement: Element;\n\n\t/**\n\t * Pattern that was used to find matched element.\n\t */\n\tpattern: MatcherFunctionPattern | MatcherObjectPattern;\n\n\t/**\n\t * An object representing matched element parts.\n\t */\n\tmatch: Match;\n}\n\nexport type PropertyPatterns<ValuePattern = string | RegExp> =\n\ttrue |\n\tstring |\n\tRegExp |\n\tRecord<string, true | ValuePattern> |\n\tArray<string | RegExp | { key: string | RegExp; value: true | ValuePattern }>;\n\nexport type AttributePatterns = PropertyPatterns;\nexport type StylePatterns = PropertyPatterns;\nexport type ClassPatterns = PropertyPatterns<never>;\n\n/**\n * The key-value matcher pattern is missing key or value. Both must be present.\n * Refer the documentation: {@link module:engine/view/matcher~MatcherPattern}.\n *\n * @param pattern Pattern with missing properties.\n * @error matcher-pattern-missing-key-or-value\n */\n\n/**\n * The key-value matcher pattern for `attributes` option is using deprecated `style` key.\n *\n * Use `styles` matcher pattern option instead:\n *\n * ```ts\n * // Instead of:\n * const pattern = {\n * \tattributes: {\n * \t\tkey1: 'value1',\n * \t\tkey2: 'value2',\n * \t\tstyle: /^border.*$/\n * \t}\n * }\n *\n * // Use:\n * const pattern = {\n * \tattributes: {\n * \t\tkey1: 'value1',\n * \t\tkey2: 'value2'\n * \t},\n * \tstyles: /^border.*$/\n * }\n * ```\n *\n * Refer to the {@glink updating/guides/update-to-29##update-to-ckeditor-5-v2910 Migration to v29.1.0} guide\n * and {@link module:engine/view/matcher~MatcherPattern} documentation.\n *\n * @param pattern Pattern with missing properties.\n * @error matcher-pattern-deprecated-attributes-style-key\n */\n\n/**\n * The key-value matcher pattern for `attributes` option is using deprecated `class` key.\n *\n * Use `classes` matcher pattern option instead:\n *\n * ```ts\n * // Instead of:\n * const pattern = {\n * \tattributes: {\n * \t\tkey1: 'value1',\n * \t\tkey2: 'value2',\n * \t\tclass: 'foobar'\n * \t}\n * }\n *\n * // Use:\n * const pattern = {\n * \tattributes: {\n * \t\tkey1: 'value1',\n * \t\tkey2: 'value2'\n * \t},\n * \tclasses: 'foobar'\n * }\n * ```\n *\n * Refer to the {@glink updating/guides/update-to-29##update-to-ckeditor-5-v2910 Migration to v29.1.0} guide\n * and the {@link module:engine/view/matcher~MatcherPattern} documentation.\n *\n * @param pattern Pattern with missing properties.\n * @error matcher-pattern-deprecated-attributes-class-key\n */\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n","import castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nexport default baseUnset;\n","import baseUnset from './_baseUnset.js';\n\n/**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\nfunction unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n}\n\nexport default unset;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n","import baseSet from './_baseSet.js';\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nexport default set;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/stylesmap\n */\n\nimport { get, isObject, merge, set, unset } from 'lodash-es';\n\n/**\n * Styles map. Allows handling (adding, removing, retrieving) a set of style rules (usually, of an element).\n *\n * The styles map is capable of normalizing style names so e.g. the following operations are possible:\n */\nexport default class StylesMap {\n\t/**\n\t * Keeps an internal representation of styles map. Normalized styles are kept as object tree to allow unified modification and\n\t * value access model using lodash's get, set, unset, etc methods.\n\t *\n\t * When no style processor rules are defined it acts as simple key-value storage.\n\t */\n\tprivate _styles: Record<string, string>;\n\n\t/**\n\t * An instance of the {@link module:engine/view/stylesmap~StylesProcessor}.\n\t */\n\tprivate readonly _styleProcessor: StylesProcessor;\n\n\t/**\n\t * Creates Styles instance.\n\t */\n\tconstructor( styleProcessor: StylesProcessor ) {\n\t\tthis._styles = {};\n\t\tthis._styleProcessor = styleProcessor;\n\t}\n\n\t/**\n\t * Returns true if style map has no styles set.\n\t */\n\tpublic get isEmpty(): boolean {\n\t\tconst entries = Object.entries( this._styles );\n\t\tconst from = Array.from( entries );\n\n\t\treturn !from.length;\n\t}\n\n\t/**\n\t * Number of styles defined.\n\t */\n\tpublic get size(): number {\n\t\tif ( this.isEmpty ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn this.getStyleNames().length;\n\t}\n\n\t/**\n\t * Set styles map to a new value.\n\t *\n\t * ```ts\n\t * styles.setTo( 'border:1px solid blue;margin-top:1px;' );\n\t * ```\n\t */\n\tpublic setTo( inlineStyle: string ): void {\n\t\tthis.clear();\n\n\t\tconst parsedStyles = Array.from( parseInlineStyles( inlineStyle ).entries() );\n\n\t\tfor ( const [ key, value ] of parsedStyles ) {\n\t\t\tthis._styleProcessor.toNormalizedForm( key, value, this._styles );\n\t\t}\n\t}\n\n\t/**\n\t * Checks if a given style is set.\n\t *\n\t * ```ts\n\t * styles.setTo( 'margin-left:1px;' );\n\t *\n\t * styles.has( 'margin-left' ); // -> true\n\t * styles.has( 'padding' ); // -> false\n\t * ```\n\t *\n\t * **Note**: This check supports normalized style names.\n\t *\n\t * ```ts\n\t * // Enable 'margin' shorthand processing:\n\t * editor.data.addStyleProcessorRules( addMarginRules );\n\t *\n\t * styles.setTo( 'margin:2px;' );\n\t *\n\t * styles.has( 'margin' ); // -> true\n\t * styles.has( 'margin-top' ); // -> true\n\t * styles.has( 'margin-left' ); // -> true\n\t *\n\t * styles.remove( 'margin-top' );\n\t *\n\t * styles.has( 'margin' ); // -> false\n\t * styles.has( 'margin-top' ); // -> false\n\t * styles.has( 'margin-left' ); // -> true\n\t * ```\n\t *\n\t * @param name Style name.\n\t */\n\tpublic has( name: string ): boolean {\n\t\tif ( this.isEmpty ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst styles = this._styleProcessor.getReducedForm( name, this._styles );\n\n\t\tconst propertyDescriptor = styles.find( ( [ property ] ) => property === name );\n\n\t\t// Only return a value if it is set;\n\t\treturn Array.isArray( propertyDescriptor );\n\t}\n\n\t/**\n\t * Sets a given style.\n\t *\n\t * Can insert one by one:\n\t *\n\t * ```ts\n\t * styles.set( 'color', 'blue' );\n\t * styles.set( 'margin-right', '1em' );\n\t * ```\n\t *\n\t * ***Note**:* This method uses {@link module:engine/controller/datacontroller~DataController#addStyleProcessorRules\n\t * enabled style processor rules} to normalize passed values.\n\t *\n\t * ```ts\n\t * // Enable 'margin' shorthand processing:\n\t * editor.data.addStyleProcessorRules( addMarginRules );\n\t *\n\t * styles.set( 'margin', '2px' );\n\t * ```\n\t *\n\t * The above code will set margin to:\n\t *\n\t * ```ts\n\t * styles.getNormalized( 'margin' );\n\t * // -> { top: '2px', right: '2px', bottom: '2px', left: '2px' }\n\t * ```\n\t *\n\t * Which makes it possible to retrieve a \"sub-value\":\n\t *\n\t * ```ts\n\t * styles.get( 'margin-left' ); // -> '2px'\n\t * ```\n\t *\n\t * Or modify it:\n\t *\n\t * ```ts\n\t * styles.remove( 'margin-left' );\n\t *\n\t * styles.getNormalized( 'margin' ); // -> { top: '1px', bottom: '1px', right: '1px' }\n\t * styles.toString(); // -> 'margin-bottom:1px;margin-right:1px;margin-top:1px;'\n\t * ```\n\t *\n\t * This method also allows to set normalized values directly (if a particular styles processor rule was enabled):\n\t *\n\t * ```ts\n\t * styles.set( 'border-color', { top: 'blue' } );\n\t * styles.set( 'margin', { right: '2em' } );\n\t *\n\t * styles.toString(); // -> 'border-color-top:blue;margin-right:2em;'\n\t * ```\n\t *\n\t * @label KEY_VALUE\n\t * @param name Style property name.\n\t * @param value Value to set.\n\t */\n\tpublic set( name: string, value: StyleValue ): void;\n\n\t/**\n\t * Sets many styles at once:\n\t *\n\t * ```ts\n\t * styles.set( {\n\t * \tcolor: 'blue',\n\t * \t'margin-right': '1em'\n\t * } );\n\t * ```\n\t *\n\t * It is equivalent to:\n\t *\n\t * ```ts\n\t * styles.set( 'color', 'blue' );\n\t * styles.set( 'margin-right', '1em' );\n\t * ```\n\t *\n\t * See {@link #set:KEY_VALUE}\n\t *\n\t * @label CONFIG_OBJECT\n\t */\n\tpublic set( styles: Styles ): void;\n\n\tpublic set( nameOrObject: string | Styles, valueOrObject?: StyleValue ): void {\n\t\tif ( isObject( nameOrObject ) ) {\n\t\t\tfor ( const [ key, value ] of Object.entries( nameOrObject ) ) {\n\t\t\t\tthis._styleProcessor.toNormalizedForm( key, value, this._styles );\n\t\t\t}\n\t\t} else {\n\t\t\tthis._styleProcessor.toNormalizedForm( nameOrObject, valueOrObject!, this._styles );\n\t\t}\n\t}\n\n\t/**\n\t * Removes given style.\n\t *\n\t * ```ts\n\t * styles.setTo( 'background:#f00;margin-right:2px;' );\n\t *\n\t * styles.remove( 'background' );\n\t *\n\t * styles.toString(); // -> 'margin-right:2px;'\n\t * ```\n\t *\n\t * ***Note**:* This method uses {@link module:engine/controller/datacontroller~DataController#addStyleProcessorRules\n\t * enabled style processor rules} to normalize passed values.\n\t *\n\t * ```ts\n\t * // Enable 'margin' shorthand processing:\n\t * editor.data.addStyleProcessorRules( addMarginRules );\n\t *\n\t * styles.setTo( 'margin:1px' );\n\t *\n\t * styles.remove( 'margin-top' );\n\t * styles.remove( 'margin-right' );\n\t *\n\t * styles.toString(); // -> 'margin-bottom:1px;margin-left:1px;'\n\t * ```\n\t *\n\t * @param name Style name.\n\t */\n\tpublic remove( name: string ): void {\n\t\tconst path = toPath( name );\n\n\t\tunset( this._styles, path );\n\t\tdelete this._styles[ name ];\n\n\t\tthis._cleanEmptyObjectsOnPath( path );\n\t}\n\n\t/**\n\t * Returns a normalized style object or a single value.\n\t *\n\t * ```ts\n\t * // Enable 'margin' shorthand processing:\n\t * editor.data.addStyleProcessorRules( addMarginRules );\n\t *\n\t * const styles = new Styles();\n\t * styles.setTo( 'margin:1px 2px 3em;' );\n\t *\n\t * styles.getNormalized( 'margin' );\n\t * // will log:\n\t * // {\n\t * // top: '1px',\n\t * // right: '2px',\n\t * // bottom: '3em',\n\t * // left: '2px' // normalized value from margin shorthand\n\t * // }\n\t *\n\t * styles.getNormalized( 'margin-left' ); // -> '2px'\n\t * ```\n\t *\n\t * **Note**: This method will only return normalized styles if a style processor was defined.\n\t *\n\t * @param name Style name.\n\t */\n\tpublic getNormalized( name?: string ): StyleValue {\n\t\treturn this._styleProcessor.getNormalized( name, this._styles );\n\t}\n\n\t/**\n\t * Returns a normalized style string. Styles are sorted by name.\n\t *\n\t * ```ts\n\t * styles.set( 'margin' , '1px' );\n\t * styles.set( 'background', '#f00' );\n\t *\n\t * styles.toString(); // -> 'background:#f00;margin:1px;'\n\t * ```\n\t *\n\t * **Note**: This method supports normalized styles if defined.\n\t *\n\t * ```ts\n\t * // Enable 'margin' shorthand processing:\n\t * editor.data.addStyleProcessorRules( addMarginRules );\n\t *\n\t * styles.set( 'margin' , '1px' );\n\t * styles.set( 'background', '#f00' );\n\t * styles.remove( 'margin-top' );\n\t * styles.remove( 'margin-right' );\n\t *\n\t * styles.toString(); // -> 'background:#f00;margin-bottom:1px;margin-left:1px;'\n\t * ```\n\t */\n\tpublic toString(): string {\n\t\tif ( this.isEmpty ) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn this._getStylesEntries()\n\t\t\t.map( arr => arr.join( ':' ) )\n\t\t\t.sort()\n\t\t\t.join( ';' ) + ';';\n\t}\n\n\t/**\n\t * Returns property as a value string or undefined if property is not set.\n\t *\n\t * ```ts\n\t * // Enable 'margin' shorthand processing:\n\t * editor.data.addStyleProcessorRules( addMarginRules );\n\t *\n\t * const styles = new Styles();\n\t * styles.setTo( 'margin:1px;' );\n\t * styles.set( 'margin-bottom', '3em' );\n\t *\n\t * styles.getAsString( 'margin' ); // -> 'margin: 1px 1px 3em;'\n\t * ```\n\t *\n\t * Note, however, that all sub-values must be set for the longhand property name to return a value:\n\t *\n\t * ```ts\n\t * const styles = new Styles();\n\t * styles.setTo( 'margin:1px;' );\n\t * styles.remove( 'margin-bottom' );\n\t *\n\t * styles.getAsString( 'margin' ); // -> undefined\n\t * ```\n\t *\n\t * In the above scenario, it is not possible to return a `margin` value, so `undefined` is returned.\n\t * Instead, you should use:\n\t *\n\t * ```ts\n\t * const styles = new Styles();\n\t * styles.setTo( 'margin:1px;' );\n\t * styles.remove( 'margin-bottom' );\n\t *\n\t * for ( const styleName of styles.getStyleNames() ) {\n\t * \tconsole.log( styleName, styles.getAsString( styleName ) );\n\t * }\n\t * // 'margin-top', '1px'\n\t * // 'margin-right', '1px'\n\t * // 'margin-left', '1px'\n\t * ```\n\t *\n\t * In general, it is recommend to iterate over style names like in the example above. This way, you will always get all\n\t * the currently set style values. So, if all the 4 margin values would be set\n\t * the for-of loop above would yield only `'margin'`, `'1px'`:\n\t *\n\t * ```ts\n\t * const styles = new Styles();\n\t * styles.setTo( 'margin:1px;' );\n\t *\n\t * for ( const styleName of styles.getStyleNames() ) {\n\t * \tconsole.log( styleName, styles.getAsString( styleName ) );\n\t * }\n\t * // 'margin', '1px'\n\t * ```\n\t *\n\t * **Note**: To get a normalized version of a longhand property use the {@link #getNormalized `#getNormalized()`} method.\n\t */\n\tpublic getAsString( propertyName: string ): string | undefined {\n\t\tif ( this.isEmpty ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this._styles[ propertyName ] && !isObject( this._styles[ propertyName ] ) ) {\n\t\t\t// Try return styles set directly - values that are not parsed.\n\t\t\treturn this._styles[ propertyName ];\n\t\t}\n\n\t\tconst styles = this._styleProcessor.getReducedForm( propertyName, this._styles );\n\n\t\tconst propertyDescriptor = styles.find( ( [ property ] ) => property === propertyName );\n\n\t\t// Only return a value if it is set;\n\t\tif ( Array.isArray( propertyDescriptor ) ) {\n\t\t\treturn propertyDescriptor[ 1 ];\n\t\t}\n\t}\n\n\t/**\n\t * Returns all style properties names as they would appear when using {@link #toString `#toString()`}.\n\t *\n\t * When `expand` is set to true and there's a shorthand style property set, it will also return all equivalent styles:\n\t *\n\t * ```ts\n\t * stylesMap.setTo( 'margin: 1em' )\n\t * ```\n\t *\n\t * will be expanded to:\n\t *\n\t * ```ts\n\t * [ 'margin', 'margin-top', 'margin-right', 'margin-bottom', 'margin-left' ]\n\t * ```\n\t *\n\t * @param expand Expand shorthand style properties and all return equivalent style representations.\n\t */\n\tpublic getStyleNames( expand = false ): Array<string> {\n\t\tif ( this.isEmpty ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif ( expand ) {\n\t\t\treturn this._styleProcessor.getStyleNames( this._styles );\n\t\t}\n\n\t\tconst entries = this._getStylesEntries();\n\n\t\treturn entries.map( ( [ key ] ) => key );\n\t}\n\n\t/**\n\t * Removes all styles.\n\t */\n\tpublic clear(): void {\n\t\tthis._styles = {};\n\t}\n\n\t/**\n\t * Returns normalized styles entries for further processing.\n\t */\n\tprivate _getStylesEntries(): Array<PropertyDescriptor> {\n\t\tconst parsed: Array<PropertyDescriptor> = [];\n\n\t\tconst keys = Object.keys( this._styles );\n\n\t\tfor ( const key of keys ) {\n\t\t\tparsed.push( ...this._styleProcessor.getReducedForm( key, this._styles ) );\n\t\t}\n\n\t\treturn parsed;\n\t}\n\n\t/**\n\t * Removes empty objects upon removing an entry from internal object.\n\t */\n\tprivate _cleanEmptyObjectsOnPath( path: string ): void {\n\t\tconst pathParts = path.split( '.' );\n\t\tconst isChildPath = pathParts.length > 1;\n\n\t\tif ( !isChildPath ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst parentPath = pathParts.splice( 0, pathParts.length - 1 ).join( '.' );\n\n\t\tconst parentObject = get( this._styles, parentPath );\n\n\t\tif ( !parentObject ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isParentEmpty = !Array.from( Object.keys( parentObject ) ).length;\n\n\t\tif ( isParentEmpty ) {\n\t\t\tthis.remove( parentPath );\n\t\t}\n\t}\n}\n\n/**\n * Style processor is responsible for writing and reading a normalized styles object.\n */\nexport class StylesProcessor {\n\tprivate readonly _normalizers: Map<string, Normalizer>;\n\tprivate readonly _extractors: Map<string, Extractor>;\n\tprivate readonly _reducers: Map<string, Reducer>;\n\tprivate readonly _consumables: Map<string, Array<string>>;\n\n\t/**\n\t * Creates StylesProcessor instance.\n\t *\n\t * @internal\n\t */\n\tconstructor() {\n\t\tthis._normalizers = new Map();\n\t\tthis._extractors = new Map();\n\t\tthis._reducers = new Map();\n\t\tthis._consumables = new Map();\n\t}\n\n\t/**\n\t * Parse style string value to a normalized object and appends it to styles object.\n\t *\n\t * ```ts\n\t * const styles = {};\n\t *\n\t * stylesProcessor.toNormalizedForm( 'margin', '1px', styles );\n\t *\n\t * // styles will consist: { margin: { top: '1px', right: '1px', bottom: '1px', left: '1px; } }\n\t * ```\n\t *\n\t * **Note**: To define normalizer callbacks use {@link #setNormalizer}.\n\t *\n\t * @param name Name of style property.\n\t * @param propertyValue Value of style property.\n\t * @param styles Object holding normalized styles.\n\t */\n\tpublic toNormalizedForm( name: string, propertyValue: StyleValue, styles: Styles ): void {\n\t\tif ( isObject( propertyValue ) ) {\n\t\t\tappendStyleValue( styles, toPath( name ), propertyValue );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this._normalizers.has( name ) ) {\n\t\t\tconst normalizer = this._normalizers.get( name )!;\n\n\t\t\tconst { path, value } = normalizer( propertyValue );\n\n\t\t\tappendStyleValue( styles, path, value );\n\t\t} else {\n\t\t\tappendStyleValue( styles, name, propertyValue );\n\t\t}\n\t}\n\n\t/**\n\t * Returns a normalized version of a style property.\n\t *\n\t * ```ts\n\t * const styles = {\n\t * \tmargin: { top: '1px', right: '1px', bottom: '1px', left: '1px; },\n\t * \tbackground: { color: '#f00' }\n\t * };\n\t *\n\t * stylesProcessor.getNormalized( 'background' );\n\t * // will return: { color: '#f00' }\n\t *\n\t * stylesProcessor.getNormalized( 'margin-top' );\n\t * // will return: '1px'\n\t * ```\n\t *\n\t * **Note**: In some cases extracting single value requires defining an extractor callback {@link #setExtractor}.\n\t *\n\t * @param name Name of style property.\n\t * @param styles Object holding normalized styles.\n\t */\n\tpublic getNormalized( name: string | undefined, styles: Styles ): StyleValue {\n\t\tif ( !name ) {\n\t\t\treturn merge( {}, styles );\n\t\t}\n\n\t\t// Might be empty string.\n\t\tif ( styles[ name ] !== undefined ) {\n\t\t\treturn styles[ name ];\n\t\t}\n\n\t\tif ( this._extractors.has( name ) ) {\n\t\t\tconst extractor = this._extractors.get( name )!;\n\n\t\t\tif ( typeof extractor === 'string' ) {\n\t\t\t\treturn get( styles, extractor );\n\t\t\t}\n\n\t\t\tconst value = extractor( name, styles );\n\n\t\t\tif ( value ) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\n\t\treturn get( styles, toPath( name ) );\n\t}\n\n\t/**\n\t * Returns a reduced form of style property form normalized object.\n\t *\n\t * For default margin reducer, the below code:\n\t *\n\t * ```ts\n\t * stylesProcessor.getReducedForm( 'margin', {\n\t * \tmargin: { top: '1px', right: '1px', bottom: '2px', left: '1px; }\n\t * } );\n\t * ```\n\t *\n\t * will return:\n\t *\n\t * ```ts\n\t * [\n\t * \t[ 'margin', '1px 1px 2px' ]\n\t * ]\n\t * ```\n\t *\n\t * because it might be represented as a shorthand 'margin' value. However if one of margin long hand values is missing it should return:\n\t *\n\t * ```ts\n\t * [\n\t * \t[ 'margin-top', '1px' ],\n\t * \t[ 'margin-right', '1px' ],\n\t * \t[ 'margin-bottom', '2px' ]\n\t * \t// the 'left' value is missing - cannot use 'margin' shorthand.\n\t * ]\n\t * ```\n\t *\n\t * **Note**: To define reducer callbacks use {@link #setReducer}.\n\t *\n\t * @param name Name of style property.\n\t */\n\tpublic getReducedForm( name: string, styles: Styles ): Array<PropertyDescriptor> {\n\t\tconst normalizedValue = this.getNormalized( name, styles );\n\n\t\t// Might be empty string.\n\t\tif ( normalizedValue === undefined ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif ( this._reducers.has( name ) ) {\n\t\t\tconst reducer = this._reducers.get( name )!;\n\n\t\t\treturn reducer( normalizedValue );\n\t\t}\n\n\t\treturn [ [ name, normalizedValue as string ] ];\n\t}\n\n\t/**\n\t * Return all style properties. Also expand shorthand properties (e.g. `margin`, `background`) if respective extractor is available.\n\t *\n\t * @param styles Object holding normalized styles.\n\t */\n\tpublic getStyleNames( styles: Styles ): Array<string> {\n\t\t// Find all extractable styles that have a value.\n\t\tconst expandedStyleNames = Array.from( this._consumables.keys() ).filter( name => {\n\t\t\tconst style = this.getNormalized( name, styles );\n\n\t\t\tif ( style && typeof style == 'object' ) {\n\t\t\t\treturn Object.keys( style ).length;\n\t\t\t}\n\n\t\t\treturn style;\n\t\t} );\n\n\t\t// For simple styles (for example `color`) we don't have a map of those styles\n\t\t// but they are 1 to 1 with normalized object keys.\n\t\tconst styleNamesKeysSet = new Set( [\n\t\t\t...expandedStyleNames,\n\t\t\t...Object.keys( styles )\n\t\t] );\n\n\t\treturn Array.from( styleNamesKeysSet.values() );\n\t}\n\n\t/**\n\t * Returns related style names.\n\t *\n\t * ```ts\n\t * stylesProcessor.getRelatedStyles( 'margin' );\n\t * // will return: [ 'margin-top', 'margin-right', 'margin-bottom', 'margin-left' ];\n\t *\n\t * stylesProcessor.getRelatedStyles( 'margin-top' );\n\t * // will return: [ 'margin' ];\n\t * ```\n\t *\n\t * **Note**: To define new style relations load an existing style processor or use\n\t * {@link module:engine/view/stylesmap~StylesProcessor#setStyleRelation `StylesProcessor.setStyleRelation()`}.\n\t */\n\tpublic getRelatedStyles( name: string ): Array<string> {\n\t\treturn this._consumables.get( name ) || [];\n\t}\n\n\t/**\n\t * Adds a normalizer method for a style property.\n\t *\n\t * A normalizer returns describing how the value should be normalized.\n\t *\n\t * For instance 'margin' style is a shorthand for four margin values:\n\t *\n\t * - 'margin-top'\n\t * - 'margin-right'\n\t * - 'margin-bottom'\n\t * - 'margin-left'\n\t *\n\t * and can be written in various ways if some values are equal to others. For instance `'margin: 1px 2em;'` is a shorthand for\n\t * `'margin-top: 1px;margin-right: 2em;margin-bottom: 1px;margin-left: 2em'`.\n\t *\n\t * A normalizer should parse various margin notations as a single object:\n\t *\n\t * ```ts\n\t * const styles = {\n\t * \tmargin: {\n\t * \t\ttop: '1px',\n\t * \t\tright: '2em',\n\t * \t\tbottom: '1px',\n\t * \t\tleft: '2em'\n\t * \t}\n\t * };\n\t * ```\n\t *\n\t * Thus a normalizer for 'margin' style should return an object defining style path and value to store:\n\t *\n\t * ```ts\n\t * const returnValue = {\n\t * \tpath: 'margin',\n\t * \tvalue: {\n\t * \t\ttop: '1px',\n\t * \t\tright: '2em',\n\t * \t\tbottom: '1px',\n\t * \t\tleft: '2em'\n\t * \t}\n\t * };\n\t * ```\n\t *\n\t * Additionally to fully support all margin notations there should be also defined 4 normalizers for longhand margin notations. Below\n\t * is an example for 'margin-top' style property normalizer:\n\t *\n\t * ```ts\n\t * stylesProcessor.setNormalizer( 'margin-top', valueString => {\n\t * \treturn {\n\t * \t\tpath: 'margin.top',\n\t * \t\tvalue: valueString\n\t * \t}\n\t * } );\n\t * ```\n\t */\n\tpublic setNormalizer( name: string, callback: Normalizer ): void {\n\t\tthis._normalizers.set( name, callback );\n\t}\n\n\t/**\n\t * Adds a extractor callback for a style property.\n\t *\n\t * Most normalized style values are stored as one level objects. It is assumed that `'margin-top'` style will be stored as:\n\t *\n\t * ```ts\n\t * const styles = {\n\t * \tmargin: {\n\t * \t\ttop: 'value'\n\t * \t}\n\t * }\n\t * ```\n\t *\n\t * However, some styles can have conflicting notations and thus it might be harder to extract a style value from shorthand. For instance\n\t * the 'border-top-style' can be defined using `'border-top:solid'`, `'border-style:solid none none none'` or by `'border:solid'`\n\t * shorthands. The default border styles processors stores styles as:\n\t *\n\t * ```ts\n\t * const styles = {\n\t * \tborder: {\n\t * \t\tstyle: {\n\t * \t\t\ttop: 'solid'\n\t * \t\t}\n\t * \t}\n\t * }\n\t * ```\n\t *\n\t * as it is better to modify border style independently from other values. On the other part the output of the border might be\n\t * desired as `border-top`, `border-left`, etc notation.\n\t *\n\t * In the above example an extractor should return a side border value that combines style, color and width:\n\t *\n\t * ```ts\n\t * styleProcessor.setExtractor( 'border-top', styles => {\n\t * \treturn {\n\t * \t\tcolor: styles.border.color.top,\n\t * \t\tstyle: styles.border.style.top,\n\t * \t\twidth: styles.border.width.top\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * @param callbackOrPath Callback that return a requested value or path string for single values.\n\t */\n\tpublic setExtractor( name: string, callbackOrPath: Extractor ): void {\n\t\tthis._extractors.set( name, callbackOrPath );\n\t}\n\n\t/**\n\t * Adds a reducer callback for a style property.\n\t *\n\t * Reducer returns a minimal notation for given style name. For longhand properties it is not required to write a reducer as\n\t * by default the direct value from style path is taken.\n\t *\n\t * For shorthand styles a reducer should return minimal style notation either by returning single name-value tuple or multiple tuples\n\t * if a shorthand cannot be used. For instance for a margin shorthand a reducer might return:\n\t *\n\t * ```ts\n\t * const marginShortHandTuple = [\n\t * \t[ 'margin', '1px 1px 2px' ]\n\t * ];\n\t * ```\n\t *\n\t * or a longhand tuples for defined values:\n\t *\n\t * ```ts\n\t * // Considering margin.bottom and margin.left are undefined.\n\t * const marginLonghandsTuples = [\n\t * \t[ 'margin-top', '1px' ],\n\t * \t[ 'margin-right', '1px' ]\n\t * ];\n\t * ```\n\t *\n\t * A reducer obtains a normalized style value:\n\t *\n\t * ```ts\n\t * // Simplified reducer that always outputs 4 values which are always present:\n\t * stylesProcessor.setReducer( 'margin', margin => {\n\t * \treturn [\n\t * \t\t[ 'margin', `${ margin.top } ${ margin.right } ${ margin.bottom } ${ margin.left }` ]\n\t * \t]\n\t * } );\n\t * ```\n\t */\n\tpublic setReducer( name: string, callback: Reducer ): void {\n\t\tthis._reducers.set( name, callback );\n\t}\n\n\t/**\n\t * Defines a style shorthand relation to other style notations.\n\t *\n\t * ```ts\n\t * stylesProcessor.setStyleRelation( 'margin', [\n\t * \t'margin-top',\n\t * \t'margin-right',\n\t * \t'margin-bottom',\n\t * \t'margin-left'\n\t * ] );\n\t * ```\n\t *\n\t * This enables expanding of style names for shorthands. For instance, if defined,\n\t * {@link module:engine/conversion/viewconsumable~ViewConsumable view consumable} items are automatically created\n\t * for long-hand margin style notation alongside the `'margin'` item.\n\t *\n\t * This means that when an element being converted has a style `margin`, a converter for `margin-left` will work just\n\t * fine since the view consumable will contain a consumable `margin-left` item (thanks to the relation) and\n\t * `element.getStyle( 'margin-left' )` will work as well assuming that the style processor was correctly configured.\n\t * However, once `margin-left` is consumed, `margin` will not be consumable anymore.\n\t */\n\tpublic setStyleRelation( shorthandName: string, styleNames: Array<string> ): void {\n\t\tthis._mapStyleNames( shorthandName, styleNames );\n\n\t\tfor ( const alsoName of styleNames ) {\n\t\t\tthis._mapStyleNames( alsoName, [ shorthandName ] );\n\t\t}\n\t}\n\n\t/**\n\t * Set two-way binding of style names.\n\t */\n\tprivate _mapStyleNames( name: string, styleNames: Array<string> ) {\n\t\tif ( !this._consumables.has( name ) ) {\n\t\t\tthis._consumables.set( name, [] );\n\t\t}\n\n\t\tthis._consumables.get( name )!.push( ...styleNames );\n\t}\n}\n\n/**\n * Parses inline styles and puts property - value pairs into styles map.\n *\n * @param stylesString Styles to parse.\n * @returns Map of parsed properties and values.\n */\nfunction parseInlineStyles( stylesString: string ): Map<string, string> {\n\t// `null` if no quote was found in input string or last found quote was a closing quote. See below.\n\tlet quoteType = null;\n\tlet propertyNameStart = 0;\n\tlet propertyValueStart = 0;\n\tlet propertyName = null;\n\n\tconst stylesMap = new Map();\n\n\t// Do not set anything if input string is empty.\n\tif ( stylesString === '' ) {\n\t\treturn stylesMap;\n\t}\n\n\t// Fix inline styles that do not end with `;` so they are compatible with algorithm below.\n\tif ( stylesString.charAt( stylesString.length - 1 ) != ';' ) {\n\t\tstylesString = stylesString + ';';\n\t}\n\n\t// Seek the whole string for \"special characters\".\n\tfor ( let i = 0; i < stylesString.length; i++ ) {\n\t\tconst char = stylesString.charAt( i );\n\n\t\tif ( quoteType === null ) {\n\t\t\t// No quote found yet or last found quote was a closing quote.\n\t\t\tswitch ( char ) {\n\t\t\t\tcase ':':\n\t\t\t\t\t// Most of time colon means that property name just ended.\n\t\t\t\t\t// Sometimes however `:` is found inside property value (for example in background image url).\n\t\t\t\t\tif ( !propertyName ) {\n\t\t\t\t\t\t// Treat this as end of property only if property name is not already saved.\n\t\t\t\t\t\t// Save property name.\n\t\t\t\t\t\tpropertyName = stylesString.substr( propertyNameStart, i - propertyNameStart );\n\t\t\t\t\t\t// Save this point as the start of property value.\n\t\t\t\t\t\tpropertyValueStart = i + 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase '\"':\n\t\t\t\tcase '\\'':\n\t\t\t\t\t// Opening quote found (this is an opening quote, because `quoteType` is `null`).\n\t\t\t\t\tquoteType = char;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ';': {\n\t\t\t\t\t// Property value just ended.\n\t\t\t\t\t// Use previously stored property value start to obtain property value.\n\t\t\t\t\tconst propertyValue = stylesString.substr( propertyValueStart, i - propertyValueStart );\n\n\t\t\t\t\tif ( propertyName ) {\n\t\t\t\t\t\t// Save parsed part.\n\t\t\t\t\t\tstylesMap.set( propertyName.trim(), propertyValue.trim() );\n\t\t\t\t\t}\n\n\t\t\t\t\tpropertyName = null;\n\n\t\t\t\t\t// Save this point as property name start. Property name starts immediately after previous property value ends.\n\t\t\t\t\tpropertyNameStart = i + 1;\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( char === quoteType ) {\n\t\t\t// If a quote char is found and it is a closing quote, mark this fact by `null`-ing `quoteType`.\n\t\t\tquoteType = null;\n\t\t}\n\t}\n\n\treturn stylesMap;\n}\n\n/**\n * Return lodash compatible path from style name.\n */\nfunction toPath( name: string ): string {\n\treturn name.replace( '-', '.' );\n}\n\n/**\n * Appends style definition to the styles object.\n */\nfunction appendStyleValue( stylesObject: Styles, nameOrPath: string, valueOrObject: StyleValue ) {\n\tlet valueToSet = valueOrObject;\n\n\tif ( isObject( valueOrObject ) ) {\n\t\tvalueToSet = merge( {}, get( stylesObject, nameOrPath ), valueOrObject );\n\t}\n\n\tset( stylesObject, nameOrPath, valueToSet );\n}\n\n/**\n * A CSS style property descriptor that contains tuplet of two strings:\n *\n * - first string describes property name\n * - second string describes property value\n *\n * ```ts\n * const marginDescriptor = [ 'margin', '2px 3em' ];\n * const marginTopDescriptor = [ 'margin-top', '2px' ];\n * ```\n */\nexport type PropertyDescriptor = [ name: string, value: string ];\n\n/**\n * An object describing values associated with the sides of a box, for instance margins, paddings,\n * border widths, border colors, etc.\n *\n * ```ts\n * const margin = {\n * \ttop: '1px',\n * \tright: '3px',\n * \tbottom: '3px',\n * \tleft: '7px'\n * };\n *\n * const borderColor = {\n * \ttop: 'red',\n * \tright: 'blue',\n * \tbottom: 'blue',\n * \tleft: 'red'\n * };\n * ```\n */\nexport type BoxSides = {\n\n\t/**\n\t * Top side value.\n\t */\n\ttop: undefined | string;\n\n\t/**\n\t * Left side value.\n\t */\n\tleft: undefined | string;\n\n\t/**\n\t * Right side value.\n\t */\n\tright: undefined | string;\n\n\t/**\n\t * Bottom side value.\n\t */\n\tbottom: undefined | string;\n};\n\n/**\n * Object holding styles as key-value pairs.\n */\nexport interface Styles {\n\t[ name: string ]: StyleValue;\n}\n\n/**\n * The value of style.\n */\nexport type StyleValue = string | Array<string> | Styles | BoxSides;\n\n/**\n * A normalizer method for a style property.\n *\n * @see ~StylesProcessor#setNormalizer\n */\nexport type Normalizer = ( name: string ) => { path: string; value: StyleValue };\n\n/**\n * An extractor callback for a style property or path string for single values.\n *\n * @see ~StylesProcessor#setExtractor\n */\nexport type Extractor = string | ( ( name: string, styles: Styles ) => StyleValue | undefined );\n\n/**\n * A reducer callback for a style property.\n *\n * @see ~StylesProcessor#setReducer\n */\nexport type Reducer = ( value: StyleValue ) => Array<PropertyDescriptor>;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/element\n */\n\nimport Node from './node';\nimport Text from './text';\nimport TextProxy from './textproxy';\nimport { isIterable, toArray, toMap, type ArrayOrItem } from '@ckeditor/ckeditor5-utils';\nimport { default as Matcher, type MatcherPattern } from './matcher';\nimport { default as StylesMap, type StyleValue } from './stylesmap';\n\nimport type Document from './document';\nimport type Item from './item';\n\n// @if CK_DEBUG_ENGINE // const { convertMapToTags } = require( '../dev-utils/utils' );\n\n/**\n * View element.\n *\n * The editing engine does not define a fixed semantics of its elements (it is \"DTD-free\").\n * This is why the type of the {@link module:engine/view/element~Element} need to\n * be defined by the feature developer. When creating an element you should use one of the following methods:\n *\n * * {@link module:engine/view/downcastwriter~DowncastWriter#createContainerElement `downcastWriter#createContainerElement()`}\n * in order to create a {@link module:engine/view/containerelement~ContainerElement},\n * * {@link module:engine/view/downcastwriter~DowncastWriter#createAttributeElement `downcastWriter#createAttributeElement()`}\n * in order to create a {@link module:engine/view/attributeelement~AttributeElement},\n * * {@link module:engine/view/downcastwriter~DowncastWriter#createEmptyElement `downcastWriter#createEmptyElement()`}\n * in order to create a {@link module:engine/view/emptyelement~EmptyElement}.\n * * {@link module:engine/view/downcastwriter~DowncastWriter#createUIElement `downcastWriter#createUIElement()`}\n * in order to create a {@link module:engine/view/uielement~UIElement}.\n * * {@link module:engine/view/downcastwriter~DowncastWriter#createEditableElement `downcastWriter#createEditableElement()`}\n * in order to create a {@link module:engine/view/editableelement~EditableElement}.\n *\n * Note that for view elements which are not created from the model, like elements from mutations, paste or\n * {@link module:engine/controller/datacontroller~DataController#set data.set} it is not possible to define the type of the element.\n * In such cases the {@link module:engine/view/upcastwriter~UpcastWriter#createElement `UpcastWriter#createElement()`} method\n * should be used to create generic view elements.\n */\nexport default class Element extends Node {\n\t/**\n\t * Name of the element.\n\t */\n\tpublic readonly name: string;\n\n\t/**\n\t * A list of attribute names that should be rendered in the editing pipeline even though filtering mechanisms\n\t * implemented in the {@link module:engine/view/domconverter~DomConverter} (for instance,\n\t * {@link module:engine/view/domconverter~DomConverter#shouldRenderAttribute}) would filter them out.\n\t *\n\t * These attributes can be specified as an option when the element is created by\n\t * the {@link module:engine/view/downcastwriter~DowncastWriter}. To check whether an unsafe an attribute should\n\t * be permitted, use the {@link #shouldRenderUnsafeAttribute} method.\n\t *\n\t * @internal\n\t */\n\tpublic readonly _unsafeAttributesToRender: Array<string> = [];\n\n\t/**\n\t * Map of attributes, where attributes names are keys and attributes values are values.\n\t */\n\tprivate readonly _attrs: Map<string, string>;\n\n\t/**\n\t * Array of child nodes.\n\t */\n\tprivate readonly _children: Array<Node>;\n\n\t/**\n\t * Set of classes associated with element instance.\n\t */\n\tprivate readonly _classes: Set<string>;\n\n\t/**\n\t * Normalized styles.\n\t */\n\tprivate readonly _styles: StylesMap;\n\n\t/**\n\t * Map of custom properties.\n\t * Custom properties can be added to element instance, will be cloned but not rendered into DOM.\n\t */\n\tprivate readonly _customProperties = new Map<string | symbol, unknown>();\n\n\t/**\n\t * Creates a view element.\n\t *\n\t * Attributes can be passed in various formats:\n\t *\n\t * ```ts\n\t * new Element( viewDocument, 'div', { class: 'editor', contentEditable: 'true' } ); // object\n\t * new Element( viewDocument, 'div', [ [ 'class', 'editor' ], [ 'contentEditable', 'true' ] ] ); // map-like iterator\n\t * new Element( viewDocument, 'div', mapOfAttributes ); // map\n\t * ```\n\t *\n\t * @internal\n\t * @param document The document instance to which this element belongs.\n\t * @param name Node name.\n\t * @param attrs Collection of attributes.\n\t * @param children A list of nodes to be inserted into created element.\n\t */\n\tconstructor(\n\t\tdocument: Document,\n\t\tname: string,\n\t\tattrs?: ElementAttributes,\n\t\tchildren?: Node | Iterable<Node>\n\t) {\n\t\tsuper( document );\n\n\t\tthis.name = name;\n\n\t\tthis._attrs = parseAttributes( attrs );\n\t\tthis._children = [];\n\n\t\tif ( children ) {\n\t\t\tthis._insertChild( 0, children );\n\t\t}\n\n\t\tthis._classes = new Set();\n\n\t\tif ( this._attrs.has( 'class' ) ) {\n\t\t\t// Remove class attribute and handle it by class set.\n\t\t\tconst classString = this._attrs.get( 'class' );\n\t\t\tparseClasses( this._classes, classString! );\n\t\t\tthis._attrs.delete( 'class' );\n\t\t}\n\n\t\tthis._styles = new StylesMap( this.document.stylesProcessor );\n\n\t\tif ( this._attrs.has( 'style' ) ) {\n\t\t\t// Remove style attribute and handle it by styles map.\n\t\t\tthis._styles.setTo( this._attrs.get( 'style' )! );\n\n\t\t\tthis._attrs.delete( 'style' );\n\t\t}\n\t}\n\n\t/**\n\t * Number of element's children.\n\t */\n\tpublic get childCount(): number {\n\t\treturn this._children.length;\n\t}\n\n\t/**\n\t * Is `true` if there are no nodes inside this element, `false` otherwise.\n\t */\n\tpublic get isEmpty(): boolean {\n\t\treturn this._children.length === 0;\n\t}\n\n\t/**\n\t * Gets child at the given index.\n\t *\n\t * @param index Index of child.\n\t * @returns Child node.\n\t */\n\tpublic getChild( index: number ): Node | undefined {\n\t\treturn this._children[ index ];\n\t}\n\n\t/**\n\t * Gets index of the given child node. Returns `-1` if child node is not found.\n\t *\n\t * @param node Child node.\n\t * @returns Index of the child node.\n\t */\n\tpublic getChildIndex( node: Node ): number {\n\t\treturn this._children.indexOf( node );\n\t}\n\n\t/**\n\t * Gets child nodes iterator.\n\t *\n\t * @returns Child nodes iterator.\n\t */\n\tpublic getChildren(): IterableIterator<Node> {\n\t\treturn this._children[ Symbol.iterator ]();\n\t}\n\n\t/**\n\t * Returns an iterator that contains the keys for attributes. Order of inserting attributes is not preserved.\n\t *\n\t * @returns Keys for attributes.\n\t */\n\tpublic* getAttributeKeys(): IterableIterator<string> {\n\t\tif ( this._classes.size > 0 ) {\n\t\t\tyield 'class';\n\t\t}\n\n\t\tif ( !this._styles.isEmpty ) {\n\t\t\tyield 'style';\n\t\t}\n\n\t\tyield* this._attrs.keys();\n\t}\n\n\t/**\n\t * Returns iterator that iterates over this element's attributes.\n\t *\n\t * Attributes are returned as arrays containing two items. First one is attribute key and second is attribute value.\n\t * This format is accepted by native `Map` object and also can be passed in `Node` constructor.\n\t */\n\tpublic* getAttributes(): IterableIterator<[ string, string ]> {\n\t\tyield* this._attrs.entries();\n\n\t\tif ( this._classes.size > 0 ) {\n\t\t\tyield [ 'class', this.getAttribute( 'class' )! ];\n\t\t}\n\n\t\tif ( !this._styles.isEmpty ) {\n\t\t\tyield [ 'style', this.getAttribute( 'style' )! ];\n\t\t}\n\t}\n\n\t/**\n\t * Gets attribute by key. If attribute is not present - returns undefined.\n\t *\n\t * @param key Attribute key.\n\t * @returns Attribute value.\n\t */\n\tpublic getAttribute( key: string ): string | undefined {\n\t\tif ( key == 'class' ) {\n\t\t\tif ( this._classes.size > 0 ) {\n\t\t\t\treturn [ ...this._classes ].join( ' ' );\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( key == 'style' ) {\n\t\t\tconst inlineStyle = this._styles.toString();\n\n\t\t\treturn inlineStyle == '' ? undefined : inlineStyle;\n\t\t}\n\n\t\treturn this._attrs.get( key );\n\t}\n\n\t/**\n\t * Returns a boolean indicating whether an attribute with the specified key exists in the element.\n\t *\n\t * @param key Attribute key.\n\t * @returns `true` if attribute with the specified key exists in the element, `false` otherwise.\n\t */\n\tpublic hasAttribute( key: string ): boolean {\n\t\tif ( key == 'class' ) {\n\t\t\treturn this._classes.size > 0;\n\t\t}\n\n\t\tif ( key == 'style' ) {\n\t\t\treturn !this._styles.isEmpty;\n\t\t}\n\n\t\treturn this._attrs.has( key );\n\t}\n\n\t/**\n\t * Checks if this element is similar to other element.\n\t * Both elements should have the same name and attributes to be considered as similar. Two similar elements\n\t * can contain different set of children nodes.\n\t */\n\tpublic isSimilar( otherElement: Item ): boolean {\n\t\tif ( !( otherElement instanceof Element ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// If exactly the same Element is provided - return true immediately.\n\t\tif ( this === otherElement ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Check element name.\n\t\tif ( this.name != otherElement.name ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check number of attributes, classes and styles.\n\t\tif ( this._attrs.size !== otherElement._attrs.size || this._classes.size !== otherElement._classes.size ||\n\t\t\tthis._styles.size !== otherElement._styles.size ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check if attributes are the same.\n\t\tfor ( const [ key, value ] of this._attrs ) {\n\t\t\tif ( !otherElement._attrs.has( key ) || otherElement._attrs.get( key ) !== value ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Check if classes are the same.\n\t\tfor ( const className of this._classes ) {\n\t\t\tif ( !otherElement._classes.has( className ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Check if styles are the same.\n\t\tfor ( const property of this._styles.getStyleNames() ) {\n\t\t\tif (\n\t\t\t\t!otherElement._styles.has( property ) ||\n\t\t\t\totherElement._styles.getAsString( property ) !== this._styles.getAsString( property )\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Returns true if class is present.\n\t * If more then one class is provided - returns true only when all classes are present.\n\t *\n\t * ```ts\n\t * element.hasClass( 'foo' ); // Returns true if 'foo' class is present.\n\t * element.hasClass( 'foo', 'bar' ); // Returns true if 'foo' and 'bar' classes are both present.\n\t * ```\n\t */\n\tpublic hasClass( ...className: Array<string> ): boolean {\n\t\tfor ( const name of className ) {\n\t\t\tif ( !this._classes.has( name ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Returns iterator that contains all class names.\n\t */\n\tpublic getClassNames(): Iterable<string> {\n\t\treturn this._classes.keys();\n\t}\n\n\t/**\n\t * Returns style value for the given property mae.\n\t * If the style does not exist `undefined` is returned.\n\t *\n\t * **Note**: This method can work with normalized style names if\n\t * {@link module:engine/controller/datacontroller~DataController#addStyleProcessorRules a particular style processor rule is enabled}.\n\t * See {@link module:engine/view/stylesmap~StylesMap#getAsString `StylesMap#getAsString()`} for details.\n\t *\n\t * For an element with style set to `'margin:1px'`:\n\t *\n\t * ```ts\n\t * // Enable 'margin' shorthand processing:\n\t * editor.data.addStyleProcessorRules( addMarginRules );\n\t *\n\t * const element = view.change( writer => {\n\t * \tconst element = writer.createElement();\n\t * \twriter.setStyle( 'margin', '1px' );\n\t * \twriter.setStyle( 'margin-bottom', '3em' );\n\t *\n\t * \treturn element;\n\t * } );\n\t *\n\t * element.getStyle( 'margin' ); // -> 'margin: 1px 1px 3em;'\n\t * ```\n\t */\n\tpublic getStyle( property: string ): string | undefined {\n\t\treturn this._styles.getAsString( property );\n\t}\n\n\t/**\n\t * Returns a normalized style object or single style value.\n\t *\n\t * For an element with style set to: margin:1px 2px 3em;\n\t *\n\t * ```ts\n\t * element.getNormalizedStyle( 'margin' ) );\n\t * ```\n\t *\n\t * will return:\n\t *\n\t * ```ts\n\t * {\n\t * \ttop: '1px',\n\t * \tright: '2px',\n\t * \tbottom: '3em',\n\t * \tleft: '2px' // a normalized value from margin shorthand\n\t * }\n\t * ```\n\t *\n\t * and reading for single style value:\n\t *\n\t * ```ts\n\t * styles.getNormalizedStyle( 'margin-left' );\n\t * ```\n\t *\n\t * Will return a `2px` string.\n\t *\n\t * **Note**: This method will return normalized values only if\n\t * {@link module:engine/controller/datacontroller~DataController#addStyleProcessorRules a particular style processor rule is enabled}.\n\t * See {@link module:engine/view/stylesmap~StylesMap#getNormalized `StylesMap#getNormalized()`} for details.\n\t *\n\t * @param property Name of CSS property\n\t */\n\tpublic getNormalizedStyle( property: string ): StyleValue {\n\t\treturn this._styles.getNormalized( property );\n\t}\n\n\t/**\n\t * Returns iterator that contains all style names.\n\t *\n\t * @param expand Expand shorthand style properties and return all equivalent style representations.\n\t */\n\tpublic getStyleNames( expand?: boolean ): Iterable<string> {\n\t\treturn this._styles.getStyleNames( expand );\n\t}\n\n\t/**\n\t * Returns true if style keys are present.\n\t * If more then one style property is provided - returns true only when all properties are present.\n\t *\n\t * ```ts\n\t * element.hasStyle( 'color' ); // Returns true if 'border-top' style is present.\n\t * element.hasStyle( 'color', 'border-top' ); // Returns true if 'color' and 'border-top' styles are both present.\n\t * ```\n\t */\n\tpublic hasStyle( ...property: Array<string> ): boolean {\n\t\tfor ( const name of property ) {\n\t\t\tif ( !this._styles.has( name ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Returns ancestor element that match specified pattern.\n\t * Provided patterns should be compatible with {@link module:engine/view/matcher~Matcher Matcher} as it is used internally.\n\t *\n\t * @see module:engine/view/matcher~Matcher\n\t * @param patterns Patterns used to match correct ancestor. See {@link module:engine/view/matcher~Matcher}.\n\t * @returns Found element or `null` if no matching ancestor was found.\n\t */\n\tpublic findAncestor( ...patterns: Array<MatcherPattern | ( ( element: Element ) => boolean )> ): Element | null {\n\t\tconst matcher = new Matcher( ...patterns as any );\n\t\tlet parent = this.parent;\n\n\t\twhile ( parent && !parent.is( 'documentFragment' ) ) {\n\t\t\tif ( matcher.match( parent ) ) {\n\t\t\t\treturn parent;\n\t\t\t}\n\n\t\t\tparent = parent.parent;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the custom property value for the given key.\n\t */\n\tpublic getCustomProperty( key: string | symbol ): unknown {\n\t\treturn this._customProperties.get( key );\n\t}\n\n\t/**\n\t * Returns an iterator which iterates over this element's custom properties.\n\t * Iterator provides `[ key, value ]` pairs for each stored property.\n\t */\n\tpublic* getCustomProperties(): IterableIterator<[ string | symbol, unknown ]> {\n\t\tyield* this._customProperties.entries();\n\t}\n\n\t/**\n\t * Returns identity string based on element's name, styles, classes and other attributes.\n\t * Two elements that {@link #isSimilar are similar} will have same identity string.\n\t * It has the following format:\n\t *\n\t * ```ts\n\t * 'name class=\"class1,class2\" style=\"style1:value1;style2:value2\" attr1=\"val1\" attr2=\"val2\"'\n\t * ```\n \t *\n\t * For example:\n\t *\n\t * ```ts\n\t * const element = writer.createContainerElement( 'foo', {\n\t * \tbanana: '10',\n\t * \tapple: '20',\n\t * \tstyle: 'color: red; border-color: white;',\n\t * \tclass: 'baz'\n\t * } );\n\t *\n\t * // returns 'foo class=\"baz\" style=\"border-color:white;color:red\" apple=\"20\" banana=\"10\"'\n\t * element.getIdentity();\n\t * ```\n\t *\n\t * **Note**: Classes, styles and other attributes are sorted alphabetically.\n\t */\n\tpublic getIdentity(): string {\n\t\tconst classes = Array.from( this._classes ).sort().join( ',' );\n\t\tconst styles = this._styles.toString();\n\t\tconst attributes = Array.from( this._attrs ).map( i => `${ i[ 0 ] }=\"${ i[ 1 ] }\"` ).sort().join( ' ' );\n\n\t\treturn this.name +\n\t\t\t( classes == '' ? '' : ` class=\"${ classes }\"` ) +\n\t\t\t( !styles ? '' : ` style=\"${ styles }\"` ) +\n\t\t\t( attributes == '' ? '' : ` ${ attributes }` );\n\t}\n\n\t/**\n\t * Decides whether an unsafe attribute is whitelisted and should be rendered in the editing pipeline even though filtering mechanisms\n\t * like {@link module:engine/view/domconverter~DomConverter#shouldRenderAttribute} say it should not.\n\t *\n\t * Unsafe attribute names can be specified when creating an element via {@link module:engine/view/downcastwriter~DowncastWriter}.\n\t *\n\t * @param attributeName The name of the attribute to be checked.\n\t */\n\tpublic shouldRenderUnsafeAttribute( attributeName: string ): boolean {\n\t\treturn this._unsafeAttributesToRender.includes( attributeName );\n\t}\n\n\t/**\n\t * Clones provided element.\n\t *\n\t * @internal\n\t * @param deep If set to `true` clones element and all its children recursively. When set to `false`,\n\t * element will be cloned without any children.\n\t * @returns Clone of this element.\n\t */\n\tpublic _clone( deep = false ): this {\n\t\tconst childrenClone: Array<Node> = [];\n\n\t\tif ( deep ) {\n\t\t\tfor ( const child of this.getChildren() ) {\n\t\t\t\tchildrenClone.push( child._clone( deep ) );\n\t\t\t}\n\t\t}\n\n\t\t// ContainerElement and AttributeElement should be also cloned properly.\n\t\tconst cloned = new ( this.constructor as any )( this.document, this.name, this._attrs, childrenClone );\n\n\t\t// Classes and styles are cloned separately - this solution is faster than adding them back to attributes and\n\t\t// parse once again in constructor.\n\t\tcloned._classes = new Set( this._classes );\n\t\tcloned._styles.set( this._styles.getNormalized() );\n\n\t\t// Clone custom properties.\n\t\tcloned._customProperties = new Map( this._customProperties );\n\n\t\t// Clone filler offset method.\n\t\t// We can't define this method in a prototype because it's behavior which\n\t\t// is changed by e.g. toWidget() function from ckeditor5-widget. Perhaps this should be one of custom props.\n\t\tcloned.getFillerOffset = this.getFillerOffset;\n\n\t\t// Clone unsafe attributes list.\n\t\tcloned._unsafeAttributesToRender = this._unsafeAttributesToRender;\n\n\t\treturn cloned;\n\t}\n\n\t/**\n\t * {@link module:engine/view/element~Element#_insertChild Insert} a child node or a list of child nodes at the end of this node\n\t * and sets the parent of these nodes to this element.\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#insert\n\t * @internal\n\t * @param items Items to be inserted.\n\t * @fires change\n\t * @returns Number of appended nodes.\n\t */\n\tpublic _appendChild( items: Item | string | Iterable<Item | string> ): number {\n\t\treturn this._insertChild( this.childCount, items );\n\t}\n\n\t/**\n\t * Inserts a child node or a list of child nodes on the given index and sets the parent of these nodes to\n\t * this element.\n\t *\n\t * @internal\n\t * @see module:engine/view/downcastwriter~DowncastWriter#insert\n\t * @param index Position where nodes should be inserted.\n\t * @param items Items to be inserted.\n\t * @fires change\n\t * @returns Number of inserted nodes.\n\t */\n\tpublic _insertChild( index: number, items: Item | string | Iterable<Item | string> ): number {\n\t\tthis._fireChange( 'children', this );\n\t\tlet count = 0;\n\n\t\tconst nodes = normalize( this.document, items );\n\n\t\tfor ( const node of nodes ) {\n\t\t\t// If node that is being added to this element is already inside another element, first remove it from the old parent.\n\t\t\tif ( node.parent !== null ) {\n\t\t\t\tnode._remove();\n\t\t\t}\n\n\t\t\t( node as any ).parent = this;\n\t\t\t( node as any ).document = this.document;\n\n\t\t\tthis._children.splice( index, 0, node );\n\t\t\tindex++;\n\t\t\tcount++;\n\t\t}\n\n\t\treturn count;\n\t}\n\n\t/**\n\t * Removes number of child nodes starting at the given index and set the parent of these nodes to `null`.\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#remove\n\t * @internal\n\t * @param index Number of the first node to remove.\n\t * @param howMany Number of nodes to remove.\n\t * @fires change\n\t * @returns The array of removed nodes.\n\t */\n\tpublic _removeChildren( index: number, howMany: number = 1 ): Array<Node> {\n\t\tthis._fireChange( 'children', this );\n\n\t\tfor ( let i = index; i < index + howMany; i++ ) {\n\t\t\t( this._children[ i ] as any ).parent = null;\n\t\t}\n\n\t\treturn this._children.splice( index, howMany );\n\t}\n\n\t/**\n\t * Adds or overwrite attribute with a specified key and value.\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#setAttribute\n\t * @internal\n\t * @param key Attribute key.\n\t * @param value Attribute value.\n\t * @fires change\n\t */\n\tpublic _setAttribute( key: string, value: unknown ): void {\n\t\tconst stringValue = String( value );\n\n\t\tthis._fireChange( 'attributes', this );\n\n\t\tif ( key == 'class' ) {\n\t\t\tparseClasses( this._classes, stringValue );\n\t\t} else if ( key == 'style' ) {\n\t\t\tthis._styles.setTo( stringValue );\n\t\t} else {\n\t\t\tthis._attrs.set( key, stringValue );\n\t\t}\n\t}\n\n\t/**\n\t * Removes attribute from the element.\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#removeAttribute\n\t * @internal\n\t * @param key Attribute key.\n\t * @returns Returns true if an attribute existed and has been removed.\n\t * @fires change\n\t */\n\tpublic _removeAttribute( key: string ): boolean {\n\t\tthis._fireChange( 'attributes', this );\n\n\t\t// Remove class attribute.\n\t\tif ( key == 'class' ) {\n\t\t\tif ( this._classes.size > 0 ) {\n\t\t\t\tthis._classes.clear();\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t// Remove style attribute.\n\t\tif ( key == 'style' ) {\n\t\t\tif ( !this._styles.isEmpty ) {\n\t\t\t\tthis._styles.clear();\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\t// Remove other attributes.\n\t\treturn this._attrs.delete( key );\n\t}\n\n\t/**\n\t * Adds specified class.\n\t *\n\t * ```ts\n\t * element._addClass( 'foo' ); // Adds 'foo' class.\n\t * element._addClass( [ 'foo', 'bar' ] ); // Adds 'foo' and 'bar' classes.\n\t * ```\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#addClass\n\t * @internal\n\t * @fires change\n\t */\n\tpublic _addClass( className: ArrayOrItem<string> ): void {\n\t\tthis._fireChange( 'attributes', this );\n\n\t\tfor ( const name of toArray( className ) ) {\n\t\t\tthis._classes.add( name );\n\t\t}\n\t}\n\n\t/**\n\t * Removes specified class.\n\t *\n\t * ```ts\n\t * element._removeClass( 'foo' ); // Removes 'foo' class.\n\t * element._removeClass( [ 'foo', 'bar' ] ); // Removes both 'foo' and 'bar' classes.\n\t * ```\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#removeClass\n\t * @internal\n\t * @fires change\n\t */\n\tpublic _removeClass( className: string | Array<string> ): void {\n\t\tthis._fireChange( 'attributes', this );\n\n\t\tfor ( const name of toArray( className ) ) {\n\t\t\tthis._classes.delete( name );\n\t\t}\n\t}\n\n\t/**\n\t * Adds style to the element.\n\t *\n\t * ```ts\n\t * element._setStyle( 'color', 'red' );\n\t * ```\n\t *\n\t * **Note**: This method can work with normalized style names if\n\t * {@link module:engine/controller/datacontroller~DataController#addStyleProcessorRules a particular style processor rule is enabled}.\n\t * See {@link module:engine/view/stylesmap~StylesMap#set `StylesMap#set()`} for details.\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#setStyle\n\t * @label KEY_VALUE\n\t * @internal\n\t * @param property Property name.\n\t * @param value Value to set.\n\t * @fires change\n\t */\n\tpublic _setStyle( property: string, value: string ): void;\n\n\t/**\n\t * Adds style to the element.\n\t *\n\t * ```ts\n\t * element._setStyle( {\n\t * \tcolor: 'red',\n\t * \tposition: 'fixed'\n\t * } );\n\t * ```\n\t *\n\t * **Note**: This method can work with normalized style names if\n\t * {@link module:engine/controller/datacontroller~DataController#addStyleProcessorRules a particular style processor rule is enabled}.\n\t * See {@link module:engine/view/stylesmap~StylesMap#set `StylesMap#set()`} for details.\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#setStyle\n\t * @label OBJECT\n\t * @internal\n\t * @param properties Object with key - value pairs.\n\t * @fires change\n\t */\n\tpublic _setStyle( properties: Record<string, string> ): void;\n\n\tpublic _setStyle( property: string | Record<string, string>, value?: string ): void {\n\t\tthis._fireChange( 'attributes', this );\n\n\t\tif ( typeof property != 'string' ) {\n\t\t\tthis._styles.set( property );\n\t\t} else {\n\t\t\tthis._styles.set( property, value! );\n\t\t}\n\t}\n\n\t/**\n\t * Removes specified style.\n\t *\n\t * ```ts\n\t * element._removeStyle( 'color' ); // Removes 'color' style.\n\t * element._removeStyle( [ 'color', 'border-top' ] ); // Removes both 'color' and 'border-top' styles.\n\t * ```\n\t *\n\t * **Note**: This method can work with normalized style names if\n\t * {@link module:engine/controller/datacontroller~DataController#addStyleProcessorRules a particular style processor rule is enabled}.\n\t * See {@link module:engine/view/stylesmap~StylesMap#remove `StylesMap#remove()`} for details.\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#removeStyle\n\t * @internal\n\t * @fires change\n\t */\n\tpublic _removeStyle( property: ArrayOrItem<string> ): void {\n\t\tthis._fireChange( 'attributes', this );\n\n\t\tfor ( const name of toArray( property ) ) {\n\t\t\tthis._styles.remove( name );\n\t\t}\n\t}\n\n\t/**\n\t * Sets a custom property. Unlike attributes, custom properties are not rendered to the DOM,\n\t * so they can be used to add special data to elements.\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#setCustomProperty\n\t * @internal\n\t */\n\tpublic _setCustomProperty( key: string | symbol, value: unknown ): void {\n\t\tthis._customProperties.set( key, value );\n\t}\n\n\t/**\n\t * Removes the custom property stored under the given key.\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#removeCustomProperty\n\t * @internal\n\t * @returns Returns true if property was removed.\n\t */\n\tpublic _removeCustomProperty( key: string | symbol ): boolean {\n\t\treturn this._customProperties.delete( key );\n\t}\n\n\t/**\n\t * Returns block {@link module:engine/view/filler filler} offset or `null` if block filler is not needed.\n\t */\n\tpublic getFillerOffset?(): number | null;\n\n\t// @if CK_DEBUG_ENGINE // public printTree( level = 0 ): string {\n\t// @if CK_DEBUG_ENGINE // \tlet string = '';\n\n\t// @if CK_DEBUG_ENGINE // \tstring += '\\t'.repeat( level ) + `<${ this.name }${ convertMapToTags( this.getAttributes() ) }>`;\n\n\t// @if CK_DEBUG_ENGINE // \tfor ( const child of this.getChildren() as any ) {\n\t// @if CK_DEBUG_ENGINE // \t\tif ( child.is( '$text' ) ) {\n\t// @if CK_DEBUG_ENGINE // \t\t\tstring += '\\n' + '\\t'.repeat( level + 1 ) + child.data;\n\t// @if CK_DEBUG_ENGINE // \t\t} else {\n\t// @if CK_DEBUG_ENGINE // \t\t\tstring += '\\n' + child.printTree( level + 1 );\n\t// @if CK_DEBUG_ENGINE // \t\t}\n\t// @if CK_DEBUG_ENGINE // \t}\n\n\t// @if CK_DEBUG_ENGINE // \tif ( this.childCount ) {\n\t// @if CK_DEBUG_ENGINE // \t\tstring += '\\n' + '\\t'.repeat( level );\n\t// @if CK_DEBUG_ENGINE // \t}\n\n\t// @if CK_DEBUG_ENGINE // \tstring += `</${ this.name }>`;\n\n\t// @if CK_DEBUG_ENGINE // \treturn string;\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public logTree(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( this.printTree() );\n\t// @if CK_DEBUG_ENGINE // }\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nElement.prototype.is = function( type: string, name?: string ): boolean {\n\tif ( !name ) {\n\t\treturn type === 'element' || type === 'view:element' ||\n\t\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\t\ttype === 'node' || type === 'view:node';\n\t} else {\n\t\treturn name === this.name && ( type === 'element' || type === 'view:element' );\n\t}\n};\n\n/**\n * Collection of attributes.\n */\nexport type ElementAttributes = Record<string, unknown> | Iterable<[ string, unknown ]> | null;\n\n/**\n * Parses attributes provided to the element constructor before they are applied to an element. If attributes are passed\n * as an object (instead of `Iterable`), the object is transformed to the map. Attributes with `null` value are removed.\n * Attributes with non-`String` value are converted to `String`.\n *\n * @param attrs Attributes to parse.\n * @returns Parsed attributes.\n */\nfunction parseAttributes( attrs?: ElementAttributes ) {\n\tconst attrsMap = toMap( attrs );\n\n\tfor ( const [ key, value ] of attrsMap ) {\n\t\tif ( value === null ) {\n\t\t\tattrsMap.delete( key );\n\t\t} else if ( typeof value != 'string' ) {\n\t\t\tattrsMap.set( key, String( value ) );\n\t\t}\n\t}\n\n\treturn attrsMap as Map<string, string>;\n}\n\n/**\n * Parses class attribute and puts all classes into classes set.\n * Classes set s cleared before insertion.\n *\n * @param classesSet Set to insert parsed classes.\n * @param classesString String with classes to parse.\n */\nfunction parseClasses( classesSet: Set<string>, classesString: string ) {\n\tconst classArray = classesString.split( /\\s+/ );\n\tclassesSet.clear();\n\tclassArray.forEach( name => classesSet.add( name ) );\n}\n\n/**\n * Converts strings to Text and non-iterables to arrays.\n */\nfunction normalize( document: Document, nodes: string | Item | Iterable<string | Item> ): Array<Node> {\n\t// Separate condition because string is iterable.\n\tif ( typeof nodes == 'string' ) {\n\t\treturn [ new Text( document, nodes ) ];\n\t}\n\n\tif ( !isIterable( nodes ) ) {\n\t\tnodes = [ nodes ];\n\t}\n\n\t// Array.from to enable .map() on non-arrays.\n\treturn Array.from( nodes )\n\t\t.map( node => {\n\t\t\tif ( typeof node == 'string' ) {\n\t\t\t\treturn new Text( document, node );\n\t\t\t}\n\n\t\t\tif ( node instanceof TextProxy ) {\n\t\t\t\treturn new Text( document, node.data );\n\t\t\t}\n\n\t\t\treturn node;\n\t\t} );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/containerelement\n */\n\nimport Element, { type ElementAttributes } from './element';\nimport type Document from './document';\nimport type Node from './node';\n\n/**\n * Containers are elements which define document structure. They define boundaries for\n * {@link module:engine/view/attributeelement~AttributeElement attributes}. They are mostly used for block elements like `<p>` or `<div>`.\n *\n * Editing engine does not define a fixed HTML DTD. This is why a feature developer needs to choose between various\n * types (container element, {@link module:engine/view/attributeelement~AttributeElement attribute element},\n * {@link module:engine/view/emptyelement~EmptyElement empty element}, etc) when developing a feature.\n *\n * The container element should be your default choice when writing a converter, unless:\n *\n * * this element represents a model text attribute (then use {@link module:engine/view/attributeelement~AttributeElement}),\n * * this is an empty element like `<img>` (then use {@link module:engine/view/emptyelement~EmptyElement}),\n * * this is a root element,\n * * this is a nested editable element (then use {@link module:engine/view/editableelement~EditableElement}).\n *\n * To create a new container element instance use the\n * {@link module:engine/view/downcastwriter~DowncastWriter#createContainerElement `DowncastWriter#createContainerElement()`}\n * method.\n */\nexport default class ContainerElement extends Element {\n\t/**\n\t * Creates a container element.\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#createContainerElement\n\t * @see module:engine/view/element~Element\n\t * @internal\n\t * @param document The document instance to which this element belongs.\n\t * @param name Node name.\n\t * @param attrs Collection of attributes.\n\t * @param children A list of nodes to be inserted into created element.\n\t */\n\tconstructor(\n\t\tdocument: Document,\n\t\tname: string,\n\t\tattrs?: ElementAttributes,\n\t\tchildren?: Node | Iterable<Node>\n\t) {\n\t\tsuper( document, name, attrs, children );\n\n\t\tthis.getFillerOffset = getFillerOffset;\n\t}\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nContainerElement.prototype.is = function( type: string, name?: string ): boolean {\n\tif ( !name ) {\n\t\treturn type === 'containerElement' || type === 'view:containerElement' ||\n\t\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\t\ttype === 'element' || type === 'view:element' ||\n\t\t\ttype === 'node' || type === 'view:node';\n\t} else {\n\t\treturn name === this.name && (\n\t\t\ttype === 'containerElement' || type === 'view:containerElement' ||\n\t\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\t\ttype === 'element' || type === 'view:element'\n\t\t);\n\t}\n};\n\n/**\n * Returns block {@link module:engine/view/filler filler} offset or `null` if block filler is not needed.\n *\n * @returns Block filler offset or `null` if block filler is not needed.\n */\nexport function getFillerOffset( this: ContainerElement ): number | null {\n\tconst children = [ ...this.getChildren() ];\n\tconst lastChild = children[ this.childCount - 1 ];\n\n\t// Block filler is required after a `<br>` if it's the last element in its container. See #1422.\n\tif ( lastChild && lastChild.is( 'element', 'br' ) ) {\n\t\treturn this.childCount;\n\t}\n\n\tfor ( const child of children ) {\n\t\t// If there's any non-UI element – don't render the bogus.\n\t\tif ( !child.is( 'uiElement' ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t// If there are only UI elements – render the bogus at the end of the element.\n\treturn this.childCount;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/editableelement\n */\n\nimport ContainerElement from './containerelement';\nimport { ObservableMixin } from '@ckeditor/ckeditor5-utils';\nimport type { ViewSelectionChangeEvent } from './selection';\nimport type { ElementAttributes } from './element';\nimport type Document from './document';\nimport type Node from './node';\n\n/**\n * Editable element which can be a {@link module:engine/view/rooteditableelement~RootEditableElement root}\n * or nested editable area in the editor.\n *\n * Editable is automatically read-only when its {@link module:engine/view/document~Document Document} is read-only.\n *\n * The constructor of this class shouldn't be used directly. To create new `EditableElement` use the\n * {@link module:engine/view/downcastwriter~DowncastWriter#createEditableElement `downcastWriter#createEditableElement()`} method.\n */\nexport default class EditableElement extends ObservableMixin( ContainerElement ) {\n\t/**\n\t * Whether the editable is in read-write or read-only mode.\n\t *\n\t * @observable\n\t */\n\tdeclare public isReadOnly: boolean;\n\n\t/**\n\t * Whether the editable is focused.\n\t *\n\t * This property updates when {@link module:engine/view/document~Document#isFocused document.isFocused} or view\n\t * selection is changed.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public isFocused: boolean;\n\n\t/**\n\t * Placeholder of editable element.\n\t *\n\t * ```ts\n\t * editor.editing.view.document.getRoot( 'main' ).placeholder = 'New placeholder';\n\t * ```\n\t *\n\t * @observable\n\t */\n\tdeclare public placeholder?: string;\n\n\t/**\n\t * Creates an editable element.\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#createEditableElement\n\t * @internal\n\t * @param document The document instance to which this element belongs.\n\t * @param name Node name.\n\t * @param attrs Collection of attributes.\n\t * @param children A list of nodes to be inserted into created element.\n\t */\n\tconstructor(\n\t\tdocument: Document,\n\t\tname: string,\n\t\tattributes?: ElementAttributes,\n\t\tchildren?: Node | Iterable<Node>\n\t) {\n\t\tsuper( document, name, attributes, children );\n\n\t\tthis.set( 'isReadOnly', false );\n\t\tthis.set( 'isFocused', false );\n\t\tthis.set( 'placeholder', undefined );\n\n\t\tthis.bind( 'isReadOnly' ).to( document );\n\n\t\tthis.bind( 'isFocused' ).to(\n\t\t\tdocument,\n\t\t\t'isFocused',\n\t\t\tisFocused => isFocused && document.selection.editableElement == this\n\t\t);\n\n\t\t// Update focus state based on selection changes.\n\t\tthis.listenTo<ViewSelectionChangeEvent>( document.selection, 'change', () => {\n\t\t\tthis.isFocused = document.isFocused && document.selection.editableElement == this;\n\t\t} );\n\t}\n\n\tpublic destroy(): void {\n\t\tthis.stopListening();\n\t}\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nEditableElement.prototype.is = function( type: string, name?: string ): boolean {\n\tif ( !name ) {\n\t\treturn type === 'editableElement' || type === 'view:editableElement' ||\n\t\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\t\ttype === 'containerElement' || type === 'view:containerElement' ||\n\t\t\ttype === 'element' || type === 'view:element' ||\n\t\t\ttype === 'node' || type === 'view:node';\n\t} else {\n\t\treturn name === this.name && (\n\t\t\ttype === 'editableElement' || type === 'view:editableElement' ||\n\t\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\t\ttype === 'containerElement' || type === 'view:containerElement' ||\n\t\t\ttype === 'element' || type === 'view:element'\n\t\t);\n\t}\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/rooteditableelement\n */\n\nimport EditableElement from './editableelement';\n\nimport type Document from './document';\n\nconst rootNameSymbol = Symbol( 'rootName' );\n\n/**\n * Class representing a single root in the data view. A root can be either {@link ~RootEditableElement#isReadOnly editable or read-only},\n * but in both cases it is called \"an editable\". Roots can contain other {@link module:engine/view/editableelement~EditableElement\n * editable elements} making them \"nested editables\".\n */\nexport default class RootEditableElement extends EditableElement {\n\t/**\n\t * Creates root editable element.\n\t *\n\t * @param document The document instance to which this element belongs.\n\t * @param name Node name.\n\t */\n\tconstructor(\n\t\tdocument: Document,\n\t\tname: string\n\t) {\n\t\tsuper( document, name );\n\n\t\tthis.rootName = 'main';\n\t}\n\n\t/**\n\t * Name of this root inside {@link module:engine/view/document~Document} that is an owner of this root. If no\n\t * other name is set, `main` name is used.\n\t *\n\t * @readonly\n\t */\n\tpublic get rootName(): string {\n\t\treturn this.getCustomProperty( rootNameSymbol ) as string;\n\t}\n\n\tpublic set rootName( rootName: string ) {\n\t\tthis._setCustomProperty( rootNameSymbol, rootName );\n\t}\n\n\t/**\n\t * Overrides old element name and sets new one.\n\t * This is needed because view roots are created before they are attached to the DOM.\n\t * The name of the root element is temporary at this stage. It has to be changed when the\n\t * view root element is attached to the DOM element.\n\t *\n\t * @internal\n\t * @param name The new name of element.\n\t */\n\tpublic set _name( name: string ) {\n\t\t( this as any ).name = name;\n\t}\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nRootEditableElement.prototype.is = function( type: string, name?: string ): boolean {\n\tif ( !name ) {\n\t\treturn type === 'rootElement' || type === 'view:rootElement' ||\n\t\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\t\ttype === 'editableElement' || type === 'view:editableElement' ||\n\t\t\ttype === 'containerElement' || type === 'view:containerElement' ||\n\t\t\ttype === 'element' || type === 'view:element' ||\n\t\t\ttype === 'node' || type === 'view:node';\n\t} else {\n\t\treturn name === this.name && (\n\t\t\ttype === 'rootElement' || type === 'view:rootElement' ||\n\t\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\t\ttype === 'editableElement' || type === 'view:editableElement' ||\n\t\t\ttype === 'containerElement' || type === 'view:containerElement' ||\n\t\t\ttype === 'element' || type === 'view:element'\n\t\t);\n\t}\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/treewalker\n */\n\nimport Element from './element';\nimport Text from './text';\nimport TextProxy from './textproxy';\nimport Position from './position';\nimport type Item from './item';\nimport type DocumentFragment from './documentfragment';\nimport type Range from './range';\nimport type Node from './node';\n\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Position iterator class. It allows to iterate forward and backward over the document.\n */\nexport default class TreeWalker implements IterableIterator<TreeWalkerValue> {\n\t/**\n\t * Walking direction. Defaults `'forward'`.\n\t */\n\tpublic readonly direction: TreeWalkerDirection;\n\n\t/**\n\t * Iterator boundaries.\n\t *\n\t * When the iterator is walking `'forward'` on the end of boundary or is walking `'backward'`\n\t * on the start of boundary, then `{ done: true }` is returned.\n\t *\n\t * If boundaries are not defined they are set before first and after last child of the root node.\n\t */\n\tpublic readonly boundaries: Range | null;\n\n\t/**\n\t * Flag indicating whether all characters from {@link module:engine/view/text~Text} should be returned as one\n\t * {@link module:engine/view/text~Text} or one by one as {@link module:engine/view/textproxy~TextProxy}.\n\t */\n\tpublic readonly singleCharacters: boolean;\n\n\t/**\n\t * Flag indicating whether iterator should enter elements or not. If the iterator is shallow child nodes of any\n\t * iterated node will not be returned along with `elementEnd` tag.\n\t */\n\tpublic readonly shallow: boolean;\n\n\t/**\n\t * Flag indicating whether iterator should ignore `elementEnd` tags. If set to `true`, walker will not\n\t * return a parent node of the start position. Each {@link module:engine/view/element~Element} will be returned once.\n\t * When set to `false` each element might be returned twice: for `'elementStart'` and `'elementEnd'`.\n\t */\n\tpublic readonly ignoreElementEnd: boolean;\n\n\t/**\n\t * Iterator position. If start position is not defined then position depends on {@link #direction}. If direction is\n\t * `'forward'` position starts form the beginning, when direction is `'backward'` position starts from the end.\n\t */\n\tprivate _position: Position;\n\n\t/**\n\t * Start boundary parent.\n\t */\n\tprivate readonly _boundaryStartParent: Node | DocumentFragment | null;\n\n\t/**\n\t * End boundary parent.\n\t */\n\tprivate readonly _boundaryEndParent: Node | DocumentFragment | null;\n\n\t/**\n\t * Creates a range iterator. All parameters are optional, but you have to specify either `boundaries` or `startPosition`.\n\t *\n\t * @param options Object with configuration.\n\t */\n\tconstructor( options: TreeWalkerOptions = {} ) {\n\t\tif ( !options.boundaries && !options.startPosition ) {\n\t\t\t/**\n\t\t\t * Neither boundaries nor starting position have been defined.\n\t\t\t *\n\t\t\t * @error view-tree-walker-no-start-position\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'view-tree-walker-no-start-position',\n\t\t\t\tnull\n\t\t\t);\n\t\t}\n\n\t\tif ( options.direction && options.direction != 'forward' && options.direction != 'backward' ) {\n\t\t\t/**\n\t\t\t * Only `backward` and `forward` direction allowed.\n\t\t\t *\n\t\t\t * @error view-tree-walker-unknown-direction\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-tree-walker-unknown-direction', options.startPosition, { direction: options.direction } );\n\t\t}\n\n\t\tthis.boundaries = options.boundaries || null;\n\n\t\tif ( options.startPosition ) {\n\t\t\tthis._position = Position._createAt( options.startPosition );\n\t\t} else {\n\t\t\tthis._position = Position._createAt( options.boundaries![ options.direction == 'backward' ? 'end' : 'start' ] );\n\t\t}\n\n\t\tthis.direction = options.direction || 'forward';\n\t\tthis.singleCharacters = !!options.singleCharacters;\n\t\tthis.shallow = !!options.shallow;\n\t\tthis.ignoreElementEnd = !!options.ignoreElementEnd;\n\n\t\tthis._boundaryStartParent = this.boundaries ? this.boundaries.start.parent : null;\n\t\tthis._boundaryEndParent = this.boundaries ? this.boundaries.end.parent : null;\n\t}\n\n\t/**\n\t * Iterable interface.\n\t */\n\tpublic [ Symbol.iterator ](): IterableIterator<TreeWalkerValue> {\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterator position. If start position is not defined then position depends on {@link #direction}. If direction is\n\t * `'forward'` position starts form the beginning, when direction is `'backward'` position starts from the end.\n\t */\n\tpublic get position(): Position {\n\t\treturn this._position;\n\t}\n\n\t/**\n\t * Moves {@link #position} in the {@link #direction} skipping values as long as the callback function returns `true`.\n\t *\n\t * For example:\n\t *\n\t * ```ts\n\t * walker.skip( value => value.type == 'text' ); // <p>{}foo</p> -> <p>foo[]</p>\n\t * walker.skip( value => true ); // Move the position to the end: <p>{}foo</p> -> <p>foo</p>[]\n\t * walker.skip( value => false ); // Do not move the position.\n\t * ```\n\t *\n\t * @param skip Callback function. Gets {@link module:engine/view/treewalker~TreeWalkerValue} and should\n\t * return `true` if the value should be skipped or `false` if not.\n\t */\n\tpublic skip( skip: ( value: TreeWalkerValue ) => boolean ): void {\n\t\tlet nextResult: IteratorResult<TreeWalkerValue>;\n\t\tlet prevPosition: Position;\n\n\t\tdo {\n\t\t\tprevPosition = this.position;\n\t\t\tnextResult = this.next();\n\t\t} while ( !nextResult.done && skip( nextResult.value ) );\n\n\t\tif ( !nextResult.done ) {\n\t\t\tthis._position = prevPosition;\n\t\t}\n\t}\n\n\t/**\n\t * Gets the next tree walker's value.\n\t *\n\t * @returns Object implementing iterator interface, returning\n\t * information about taken step.\n\t */\n\tpublic next(): IteratorResult<TreeWalkerValue, undefined> {\n\t\tif ( this.direction == 'forward' ) {\n\t\t\treturn this._next();\n\t\t} else {\n\t\t\treturn this._previous();\n\t\t}\n\t}\n\n\t/**\n\t * Makes a step forward in view. Moves the {@link #position} to the next position and returns the encountered value.\n\t */\n\tprivate _next(): IteratorResult<TreeWalkerValue, undefined> {\n\t\tlet position = this.position.clone();\n\t\tconst previousPosition = this.position;\n\t\tconst parent = position.parent;\n\n\t\t// We are at the end of the root.\n\t\tif ( parent.parent === null && position.offset === ( parent as any ).childCount ) {\n\t\t\treturn { done: true, value: undefined };\n\t\t}\n\n\t\t// We reached the walker boundary.\n\t\tif ( parent === this._boundaryEndParent && position.offset == this.boundaries!.end.offset ) {\n\t\t\treturn { done: true, value: undefined };\n\t\t}\n\n\t\t// Get node just after current position.\n\t\tlet node;\n\n\t\t// Text is a specific parent because it contains string instead of child nodes.\n\t\tif ( parent instanceof Text ) {\n\t\t\tif ( position.isAtEnd ) {\n\t\t\t\t// Prevent returning \"elementEnd\" for Text node. Skip that value and return the next walker step.\n\t\t\t\tthis._position = Position._createAfter( parent );\n\n\t\t\t\treturn this._next();\n\t\t\t}\n\n\t\t\tnode = parent.data[ position.offset ];\n\t\t} else {\n\t\t\tnode = ( parent as Element | DocumentFragment ).getChild( position.offset );\n\t\t}\n\n\t\tif ( node instanceof Element ) {\n\t\t\tif ( !this.shallow ) {\n\t\t\t\tposition = new Position( node, 0 );\n\t\t\t} else {\n\t\t\t\t// We are past the walker boundaries.\n\t\t\t\tif ( this.boundaries && this.boundaries.end.isBefore( position ) ) {\n\t\t\t\t\treturn { done: true, value: undefined };\n\t\t\t\t}\n\n\t\t\t\tposition.offset++;\n\t\t\t}\n\n\t\t\tthis._position = position;\n\n\t\t\treturn this._formatReturnValue( 'elementStart', node, previousPosition, position, 1 );\n\t\t}\n\n\t\tif ( node instanceof Text ) {\n\t\t\tif ( this.singleCharacters ) {\n\t\t\t\tposition = new Position( node, 0 );\n\t\t\t\tthis._position = position;\n\n\t\t\t\treturn this._next();\n\t\t\t}\n\n\t\t\tlet charactersCount = node.data.length;\n\t\t\tlet item;\n\n\t\t\t// If text stick out of walker range, we need to cut it and wrap in TextProxy.\n\t\t\tif ( node == this._boundaryEndParent ) {\n\t\t\t\tcharactersCount = this.boundaries!.end.offset;\n\t\t\t\titem = new TextProxy( node, 0, charactersCount );\n\t\t\t\tposition = Position._createAfter( item );\n\t\t\t} else {\n\t\t\t\titem = new TextProxy( node, 0, node.data.length );\n\t\t\t\t// If not just keep moving forward.\n\t\t\t\tposition.offset++;\n\t\t\t}\n\n\t\t\tthis._position = position;\n\n\t\t\treturn this._formatReturnValue( 'text', item, previousPosition, position, charactersCount );\n\t\t}\n\n\t\tif ( typeof node == 'string' ) {\n\t\t\tlet textLength;\n\n\t\t\tif ( this.singleCharacters ) {\n\t\t\t\ttextLength = 1;\n\t\t\t} else {\n\t\t\t\t// Check if text stick out of walker range.\n\t\t\t\tconst endOffset = parent === this._boundaryEndParent ? this.boundaries!.end.offset : ( parent as Text ).data.length;\n\n\t\t\t\ttextLength = endOffset - position.offset;\n\t\t\t}\n\n\t\t\tconst textProxy = new TextProxy( parent as Text, position.offset, textLength );\n\n\t\t\tposition.offset += textLength;\n\t\t\tthis._position = position;\n\n\t\t\treturn this._formatReturnValue( 'text', textProxy, previousPosition, position, textLength );\n\t\t}\n\n\t\t// `node` is not set, we reached the end of current `parent`.\n\t\tposition = Position._createAfter( parent as any );\n\t\tthis._position = position;\n\n\t\tif ( this.ignoreElementEnd ) {\n\t\t\treturn this._next();\n\t\t}\n\n\t\treturn this._formatReturnValue( 'elementEnd', parent as any, previousPosition, position );\n\t}\n\n\t/**\n\t * Makes a step backward in view. Moves the {@link #position} to the previous position and returns the encountered value.\n\t */\n\tprivate _previous(): IteratorResult<TreeWalkerValue, undefined> {\n\t\tlet position = this.position.clone();\n\t\tconst previousPosition = this.position;\n\t\tconst parent = position.parent;\n\n\t\t// We are at the beginning of the root.\n\t\tif ( parent.parent === null && position.offset === 0 ) {\n\t\t\treturn { done: true, value: undefined };\n\t\t}\n\n\t\t// We reached the walker boundary.\n\t\tif ( parent == this._boundaryStartParent && position.offset == this.boundaries!.start.offset ) {\n\t\t\treturn { done: true, value: undefined };\n\t\t}\n\n\t\t// Get node just before current position.\n\t\tlet node;\n\n\t\t// Text {@link module:engine/view/text~Text} element is a specific parent because contains string instead of child nodes.\n\t\tif ( parent instanceof Text ) {\n\t\t\tif ( position.isAtStart ) {\n\t\t\t\t// Prevent returning \"elementStart\" for Text node. Skip that value and return the next walker step.\n\t\t\t\tthis._position = Position._createBefore( parent );\n\n\t\t\t\treturn this._previous();\n\t\t\t}\n\n\t\t\tnode = parent.data[ position.offset - 1 ];\n\t\t} else {\n\t\t\tnode = ( parent as Element | DocumentFragment ).getChild( position.offset - 1 );\n\t\t}\n\n\t\tif ( node instanceof Element ) {\n\t\t\tif ( this.shallow ) {\n\t\t\t\tposition.offset--;\n\t\t\t\tthis._position = position;\n\n\t\t\t\treturn this._formatReturnValue( 'elementStart', node, previousPosition, position, 1 );\n\t\t\t}\n\n\t\t\tposition = new Position( node, node.childCount );\n\t\t\tthis._position = position;\n\n\t\t\tif ( this.ignoreElementEnd ) {\n\t\t\t\treturn this._previous();\n\t\t\t}\n\n\t\t\treturn this._formatReturnValue( 'elementEnd', node, previousPosition, position );\n\t\t}\n\n\t\tif ( node instanceof Text ) {\n\t\t\tif ( this.singleCharacters ) {\n\t\t\t\tposition = new Position( node, node.data.length );\n\t\t\t\tthis._position = position;\n\n\t\t\t\treturn this._previous();\n\t\t\t}\n\n\t\t\tlet charactersCount = node.data.length;\n\t\t\tlet item;\n\n\t\t\t// If text stick out of walker range, we need to cut it and wrap in TextProxy.\n\t\t\tif ( node == this._boundaryStartParent ) {\n\t\t\t\tconst offset = this.boundaries!.start.offset;\n\n\t\t\t\titem = new TextProxy( node, offset, node.data.length - offset );\n\t\t\t\tcharactersCount = item.data.length;\n\t\t\t\tposition = Position._createBefore( item );\n\t\t\t} else {\n\t\t\t\titem = new TextProxy( node, 0, node.data.length );\n\t\t\t\t// If not just keep moving backward.\n\t\t\t\tposition.offset--;\n\t\t\t}\n\n\t\t\tthis._position = position;\n\n\t\t\treturn this._formatReturnValue( 'text', item, previousPosition, position, charactersCount );\n\t\t}\n\n\t\tif ( typeof node == 'string' ) {\n\t\t\tlet textLength;\n\n\t\t\tif ( !this.singleCharacters ) {\n\t\t\t\t// Check if text stick out of walker range.\n\t\t\t\tconst startOffset = parent === this._boundaryStartParent ? this.boundaries!.start.offset : 0;\n\n\t\t\t\ttextLength = position.offset - startOffset;\n\t\t\t} else {\n\t\t\t\ttextLength = 1;\n\t\t\t}\n\n\t\t\tposition.offset -= textLength;\n\n\t\t\tconst textProxy = new TextProxy( parent as Text, position.offset, textLength );\n\n\t\t\tthis._position = position;\n\n\t\t\treturn this._formatReturnValue( 'text', textProxy, previousPosition, position, textLength );\n\t\t}\n\n\t\t// `node` is not set, we reached the beginning of current `parent`.\n\t\tposition = Position._createBefore( parent as any );\n\t\tthis._position = position;\n\n\t\treturn this._formatReturnValue( 'elementStart', parent as Element, previousPosition, position, 1 );\n\t}\n\n\t/**\n\t * Format returned data and adjust `previousPosition` and `nextPosition` if reach the bound of the {@link module:engine/view/text~Text}.\n\t *\n\t * @param type Type of step.\n\t * @param item Item between old and new position.\n\t * @param previousPosition Previous position of iterator.\n\t * @param nextPosition Next position of iterator.\n\t * @param length Length of the item.\n\t */\n\tprivate _formatReturnValue(\n\t\ttype: TreeWalkerValueType,\n\t\titem: Item,\n\t\tpreviousPosition: Position,\n\t\tnextPosition: Position,\n\t\tlength?: number\n\t): IteratorYieldResult<TreeWalkerValue> {\n\t\t// Text is a specific parent, because contains string instead of children.\n\t\t// Walker doesn't enter to the Text except situations when walker is iterating over every single character,\n\t\t// or the bound starts/ends inside the Text. So when the position is at the beginning or at the end of the Text\n\t\t// we move it just before or just after Text.\n\t\tif ( item instanceof TextProxy ) {\n\t\t\t// Position is at the end of Text.\n\t\t\tif ( item.offsetInText + item.data.length == item.textNode.data.length ) {\n\t\t\t\tif ( this.direction == 'forward' && !( this.boundaries && this.boundaries.end.isEqual( this.position ) ) ) {\n\t\t\t\t\tnextPosition = Position._createAfter( item.textNode );\n\t\t\t\t\t// When we change nextPosition of returned value we need also update walker current position.\n\t\t\t\t\tthis._position = nextPosition;\n\t\t\t\t} else {\n\t\t\t\t\tpreviousPosition = Position._createAfter( item.textNode );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Position is at the begining ot the text.\n\t\t\tif ( item.offsetInText === 0 ) {\n\t\t\t\tif ( this.direction == 'backward' && !( this.boundaries && this.boundaries.start.isEqual( this.position ) ) ) {\n\t\t\t\t\tnextPosition = Position._createBefore( item.textNode );\n\t\t\t\t\t// When we change nextPosition of returned value we need also update walker current position.\n\t\t\t\t\tthis._position = nextPosition;\n\t\t\t\t} else {\n\t\t\t\t\tpreviousPosition = Position._createBefore( item.textNode );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tdone: false,\n\t\t\tvalue: {\n\t\t\t\ttype,\n\t\t\t\titem,\n\t\t\t\tpreviousPosition,\n\t\t\t\tnextPosition,\n\t\t\t\tlength\n\t\t\t}\n\t\t};\n\t}\n}\n\n/**\n * Type of the step made by {@link module:engine/view/treewalker~TreeWalker}.\n * Possible values: `'elementStart'` if walker is at the beginning of a node, `'elementEnd'` if walker is at the end\n * of node, or `'text'` if walker traversed over single and multiple characters.\n * For {@link module:engine/view/text~Text} `elementStart` and `elementEnd` is not returned.\n */\nexport type TreeWalkerValueType = 'elementStart' | 'elementEnd' | 'text';\n\n/**\n * Object returned by {@link module:engine/view/treewalker~TreeWalker} when traversing tree view.\n */\nexport interface TreeWalkerValue {\n\n\t/**\n\t * Type of the step made by {@link module:engine/view/treewalker~TreeWalker}.\n\t */\n\ttype: TreeWalkerValueType;\n\n\t/**\n\t * Item between the old and the new positions of the tree walker.\n\t */\n\titem: Item;\n\n\t/**\n\t * Previous position of the iterator.\n\t * * Forward iteration: For `'elementEnd'` it is the last position inside the element. For all other types it is the\n\t * position before the item.\n\t * * Backward iteration: For `'elementStart'` it is the first position inside the element. For all other types it is\n\t * the position after item.\n\t * * If the position is at the beginning or at the end of the {@link module:engine/view/text~Text} it is always moved from the\n\t * inside of the text to its parent just before or just after that text.\n\t */\n\tpreviousPosition: Position;\n\n\t/**\n\t * Next position of the iterator.\n\t * * Forward iteration: For `'elementStart'` it is the first position inside the element. For all other types it is\n\t * the position after the item.\n\t * * Backward iteration: For `'elementEnd'` it is last position inside element. For all other types it is the position\n\t * before the item.\n\t * * If the position is at the beginning or at the end of the {@link module:engine/view/text~Text} it is always moved from the\n\t * inside of the text to its parent just before or just after that text.\n\t */\n\tnextPosition: Position;\n\n\t/**\n\t * Length of the item. For `'elementStart'` it is `1`. For `'text'` it is\n\t * the length of that text. For `'elementEnd'` it is `undefined`.\n\t */\n\tlength?: number;\n}\n\n/**\n * Tree walking direction.\n */\nexport type TreeWalkerDirection = 'forward' | 'backward';\n\n/**\n * The configuration of {@link ~TreeWalker}.\n */\nexport interface TreeWalkerOptions {\n\n\t/**\n\t * Walking direction.\n\t *\n\t * @default 'forward'\n\t */\n\tdirection?: TreeWalkerDirection;\n\n\t/**\n\t * Range to define boundaries of the iterator.\n\t */\n\tboundaries?: Range | null;\n\n\t/**\n\t * Starting position.\n\t */\n\tstartPosition?: Position;\n\n\t/**\n\t * Flag indicating whether all characters from\n\t * {@link module:engine/view/text~Text} should be returned as one {@link module:engine/view/text~Text} (`false`) or one by one as\n\t * {@link module:engine/view/textproxy~TextProxy} (`true`).\n\t */\n\tsingleCharacters?: boolean;\n\n\t/**\n\t * Flag indicating whether iterator should enter elements or not. If the\n\t * iterator is shallow child nodes of any iterated node will not be returned along with `elementEnd` tag.\n\t */\n\tshallow?: boolean;\n\n\t/**\n\t * Flag indicating whether iterator should ignore `elementEnd`\n\t * tags. If the option is true walker will not return a parent node of start position. If this option is `true`\n\t * each {@link module:engine/view/element~Element} will be returned once, while if the option is `false` they might be returned\n\t * twice: for `'elementStart'` and `'elementEnd'`.\n\t */\n\tignoreElementEnd?: boolean;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/position\n */\n\nimport TypeCheckable from './typecheckable';\n\nimport { CKEditorError, compareArrays } from '@ckeditor/ckeditor5-utils';\n\nimport EditableElement from './editableelement';\n\n// To check if component is loaded more than once.\nimport '@ckeditor/ckeditor5-utils/src/version';\n\nimport type DocumentFragment from './documentfragment';\nimport type Element from './element';\nimport type Item from './item';\nimport type Node from './node';\nimport { default as TreeWalker, type TreeWalkerValue, type TreeWalkerOptions } from './treewalker';\n\n/**\n * Position in the view tree. Position is represented by its parent node and an offset in this parent.\n *\n * In order to create a new position instance use the `createPosition*()` factory methods available in:\n *\n * * {@link module:engine/view/view~View}\n * * {@link module:engine/view/downcastwriter~DowncastWriter}\n * * {@link module:engine/view/upcastwriter~UpcastWriter}\n */\nexport default class Position extends TypeCheckable {\n\t/**\n\t * Position parent.\n\t */\n\tpublic readonly parent: Node | DocumentFragment;\n\n\t/**\n\t * Position offset.\n\t */\n\tpublic offset: number;\n\n\t/**\n\t * Creates a position.\n\t *\n\t * @param parent Position parent.\n\t * @param offset Position offset.\n\t */\n\tconstructor( parent: Node | DocumentFragment, offset: number ) {\n\t\tsuper();\n\n\t\tthis.parent = parent;\n\t\tthis.offset = offset;\n\t}\n\n\t/**\n\t * Node directly after the position. Equals `null` when there is no node after position or position is located\n\t * inside text node.\n\t */\n\tpublic get nodeAfter(): Node | null {\n\t\tif ( this.parent.is( '$text' ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn ( this.parent as Element ).getChild( this.offset ) || null;\n\t}\n\n\t/**\n\t * Node directly before the position. Equals `null` when there is no node before position or position is located\n\t * inside text node.\n\t */\n\tpublic get nodeBefore(): Node | null {\n\t\tif ( this.parent.is( '$text' ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn ( this.parent as Element ).getChild( this.offset - 1 ) || null;\n\t}\n\n\t/**\n\t * Is `true` if position is at the beginning of its {@link module:engine/view/position~Position#parent parent}, `false` otherwise.\n\t */\n\tpublic get isAtStart(): boolean {\n\t\treturn this.offset === 0;\n\t}\n\n\t/**\n\t * Is `true` if position is at the end of its {@link module:engine/view/position~Position#parent parent}, `false` otherwise.\n\t */\n\tpublic get isAtEnd(): boolean {\n\t\tconst endOffset = this.parent.is( '$text' ) ? this.parent.data.length : ( this.parent as any ).childCount;\n\n\t\treturn this.offset === endOffset;\n\t}\n\n\t/**\n\t * Position's root, that is the root of the position's parent element.\n\t */\n\tpublic get root(): Node | DocumentFragment {\n\t\treturn this.parent.root;\n\t}\n\n\t/**\n\t * {@link module:engine/view/editableelement~EditableElement EditableElement} instance that contains this position, or `null` if\n\t * position is not inside an editable element.\n\t */\n\tpublic get editableElement(): EditableElement | null {\n\t\tlet editable = this.parent;\n\n\t\twhile ( !( editable instanceof EditableElement ) ) {\n\t\t\tif ( editable.parent ) {\n\t\t\t\teditable = editable.parent;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\treturn editable;\n\t}\n\n\t/**\n\t * Returns a new instance of Position with offset incremented by `shift` value.\n\t *\n\t * @param shift How position offset should get changed. Accepts negative values.\n\t * @returns Shifted position.\n\t */\n\tpublic getShiftedBy( shift: number ): Position {\n\t\tconst shifted = Position._createAt( this );\n\n\t\tconst offset = shifted.offset + shift;\n\t\tshifted.offset = offset < 0 ? 0 : offset;\n\n\t\treturn shifted;\n\t}\n\n\t/**\n\t * Gets the farthest position which matches the callback using\n\t * {@link module:engine/view/treewalker~TreeWalker TreeWalker}.\n\t *\n\t * For example:\n\t *\n\t * ```ts\n\t * getLastMatchingPosition( value => value.type == 'text' ); // <p>{}foo</p> -> <p>foo[]</p>\n\t * getLastMatchingPosition( value => value.type == 'text', { direction: 'backward' } ); // <p>foo[]</p> -> <p>{}foo</p>\n\t * getLastMatchingPosition( value => false ); // Do not move the position.\n\t * ```\n\t *\n\t * @param skip Callback function. Gets {@link module:engine/view/treewalker~TreeWalkerValue} and should\n\t * return `true` if the value should be skipped or `false` if not.\n\t * @param options Object with configuration options. See {@link module:engine/view/treewalker~TreeWalker}.\n\t * @returns The position after the last item which matches the `skip` callback test.\n\t */\n\tpublic getLastMatchingPosition( skip: ( value: TreeWalkerValue ) => boolean, options: TreeWalkerOptions = {} ): Position {\n\t\toptions.startPosition = this;\n\n\t\tconst treeWalker = new TreeWalker( options );\n\t\ttreeWalker.skip( skip );\n\n\t\treturn treeWalker.position;\n\t}\n\n\t/**\n\t * Returns ancestors array of this position, that is this position's parent and it's ancestors.\n\t *\n\t * @returns Array with ancestors.\n\t */\n\tpublic getAncestors(): Array<Node | DocumentFragment> {\n\t\tif ( this.parent.is( 'documentFragment' ) ) {\n\t\t\treturn [ this.parent ];\n\t\t} else {\n\t\t\treturn this.parent.getAncestors( { includeSelf: true } );\n\t\t}\n\t}\n\n\t/**\n\t * Returns a {@link module:engine/view/node~Node} or {@link module:engine/view/documentfragment~DocumentFragment}\n\t * which is a common ancestor of both positions.\n\t */\n\tpublic getCommonAncestor( position: Position ): Node | DocumentFragment | null {\n\t\tconst ancestorsA = this.getAncestors();\n\t\tconst ancestorsB = position.getAncestors();\n\n\t\tlet i = 0;\n\n\t\twhile ( ancestorsA[ i ] == ancestorsB[ i ] && ancestorsA[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i === 0 ? null : ancestorsA[ i - 1 ];\n\t}\n\n\t/**\n\t * Checks whether this position equals given position.\n\t *\n\t * @param otherPosition Position to compare with.\n\t * @returns True if positions are same.\n\t */\n\tpublic isEqual( otherPosition: Position ): boolean {\n\t\treturn ( this.parent == otherPosition.parent && this.offset == otherPosition.offset );\n\t}\n\n\t/**\n\t * Checks whether this position is located before given position. When method returns `false` it does not mean that\n\t * this position is after give one. Two positions may be located inside separate roots and in that situation this\n\t * method will still return `false`.\n\t *\n\t * @see module:engine/view/position~Position#isAfter\n\t * @see module:engine/view/position~Position#compareWith\n\t * @param otherPosition Position to compare with.\n\t * @returns Returns `true` if this position is before given position.\n\t */\n\tpublic isBefore( otherPosition: Position ): boolean {\n\t\treturn this.compareWith( otherPosition ) == 'before';\n\t}\n\n\t/**\n\t * Checks whether this position is located after given position. When method returns `false` it does not mean that\n\t * this position is before give one. Two positions may be located inside separate roots and in that situation this\n\t * method will still return `false`.\n\t *\n\t * @see module:engine/view/position~Position#isBefore\n\t * @see module:engine/view/position~Position#compareWith\n\t * @param otherPosition Position to compare with.\n\t * @returns Returns `true` if this position is after given position.\n\t */\n\tpublic isAfter( otherPosition: Position ): boolean {\n\t\treturn this.compareWith( otherPosition ) == 'after';\n\t}\n\n\t/**\n\t * Checks whether this position is before, after or in same position that other position. Two positions may be also\n\t * different when they are located in separate roots.\n\t *\n\t * @param otherPosition Position to compare with.\n\t */\n\tpublic compareWith( otherPosition: Position ): PositionRelation {\n\t\tif ( this.root !== otherPosition.root ) {\n\t\t\treturn 'different';\n\t\t}\n\n\t\tif ( this.isEqual( otherPosition ) ) {\n\t\t\treturn 'same';\n\t\t}\n\n\t\t// Get path from root to position's parent element.\n\t\tconst thisPath = this.parent.is( 'node' ) ? this.parent.getPath() : [];\n\t\tconst otherPath = otherPosition.parent.is( 'node' ) ? otherPosition.parent.getPath() : [];\n\n\t\t// Add the positions' offsets to the parents offsets.\n\t\tthisPath.push( this.offset );\n\t\totherPath.push( otherPosition.offset );\n\n\t\t// Compare both path arrays to find common ancestor.\n\t\tconst result = compareArrays( thisPath, otherPath );\n\n\t\tswitch ( result ) {\n\t\t\tcase 'prefix':\n\t\t\t\treturn 'before';\n\n\t\t\tcase 'extension':\n\t\t\t\treturn 'after';\n\n\t\t\tdefault:\n\t\t\t\t// Cast to number to avoid having 'same' as a type of `result`.\n\t\t\t\treturn thisPath[ result as number ] < otherPath[ result as number ] ? 'before' : 'after';\n\t\t}\n\t}\n\n\t/**\n\t * Creates a {@link module:engine/view/treewalker~TreeWalker TreeWalker} instance with this positions as a start position.\n\t *\n\t * @param options Object with configuration options. See {@link module:engine/view/treewalker~TreeWalker}\n\t */\n\tpublic getWalker( options: TreeWalkerOptions = {} ): TreeWalker {\n\t\toptions.startPosition = this;\n\n\t\treturn new TreeWalker( options );\n\t}\n\n\t/**\n\t * Clones this position.\n\t */\n\tpublic clone(): Position {\n\t\treturn new Position( this.parent, this.offset );\n\t}\n\n\t/**\n\t * Creates position at the given location. The location can be specified as:\n\t *\n\t * * a {@link module:engine/view/position~Position position},\n\t * * parent element and offset (offset defaults to `0`),\n\t * * parent element and `'end'` (sets position at the end of that element),\n\t * * {@link module:engine/view/item~Item view item} and `'before'` or `'after'` (sets position before or after given view item).\n\t *\n\t * This method is a shortcut to other constructors such as:\n\t *\n\t * * {@link module:engine/view/position~Position._createBefore},\n\t * * {@link module:engine/view/position~Position._createAfter}.\n\t *\n\t * @internal\n\t * @param offset Offset or one of the flags. Used only when first parameter is a {@link module:engine/view/item~Item view item}.\n\t */\n\tpublic static _createAt( itemOrPosition: Item | Position, offset?: PositionOffset ): Position {\n\t\tif ( itemOrPosition instanceof Position ) {\n\t\t\treturn new this( itemOrPosition.parent, itemOrPosition.offset );\n\t\t} else {\n\t\t\tconst node = itemOrPosition;\n\n\t\t\tif ( offset == 'end' ) {\n\t\t\t\toffset = node.is( '$text' ) ? node.data.length : ( node as any ).childCount;\n\t\t\t} else if ( offset == 'before' ) {\n\t\t\t\treturn this._createBefore( node );\n\t\t\t} else if ( offset == 'after' ) {\n\t\t\t\treturn this._createAfter( node );\n\t\t\t} else if ( offset !== 0 && !offset ) {\n\t\t\t\t/**\n\t\t\t\t * {@link module:engine/view/view~View#createPositionAt `View#createPositionAt()`}\n\t\t\t\t * requires the offset to be specified when the first parameter is a view item.\n\t\t\t\t *\n\t\t\t\t * @error view-createpositionat-offset-required\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'view-createpositionat-offset-required', node );\n\t\t\t}\n\n\t\t\treturn new Position( node as any, offset as number );\n\t\t}\n\t}\n\n\t/**\n\t * Creates a new position after given view item.\n\t *\n\t * @internal\n\t * @param item View item after which the position should be located.\n\t */\n\tpublic static _createAfter( item: Item ): Position {\n\t\t// TextProxy is not a instance of Node so we need do handle it in specific way.\n\t\tif ( item.is( '$textProxy' ) ) {\n\t\t\treturn new Position( item.textNode, item.offsetInText + item.data.length );\n\t\t}\n\n\t\tif ( !item.parent ) {\n\t\t\t/**\n\t\t\t * You can not make a position after a root.\n\t\t\t *\n\t\t\t * @error view-position-after-root\n\t\t\t * @param {module:engine/view/node~Node} root\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-position-after-root', item, { root: item } );\n\t\t}\n\n\t\treturn new Position( item.parent, ( item.index as number ) + 1 );\n\t}\n\n\t/**\n\t * Creates a new position before given view item.\n\t *\n\t * @internal\n\t * @param item View item before which the position should be located.\n\t */\n\tpublic static _createBefore( item: Item ): Position {\n\t\t// TextProxy is not a instance of Node so we need do handle it in specific way.\n\t\tif ( item.is( '$textProxy' ) ) {\n\t\t\treturn new Position( item.textNode, item.offsetInText );\n\t\t}\n\n\t\tif ( !item.parent ) {\n\t\t\t/**\n\t\t\t * You cannot make a position before a root.\n\t\t\t *\n\t\t\t * @error view-position-before-root\n\t\t\t * @param {module:engine/view/node~Node} root\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-position-before-root', item, { root: item } );\n\t\t}\n\n\t\treturn new Position( item.parent, item.index as number );\n\t}\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nPosition.prototype.is = function( type: string ): boolean {\n\treturn type === 'position' || type === 'view:position';\n};\n\n/**\n * A flag indicating whether this position is `'before'` or `'after'` or `'same'` as given position.\n * If positions are in different roots `'different'` flag is returned.\n */\nexport type PositionRelation = 'before' | 'after' | 'same' | 'different';\n\n/**\n * Offset or one of the flags.\n */\nexport type PositionOffset = number | 'before' | 'after' | 'end';\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/range\n */\n\nimport TypeCheckable from './typecheckable';\nimport Position from './position';\n\nimport type DocumentFragment from './documentfragment';\nimport type Element from './element';\nimport type Item from './item';\nimport type Node from './node';\nimport { default as TreeWalker, type TreeWalkerValue, type TreeWalkerOptions } from './treewalker';\n\n/**\n * Range in the view tree. A range is represented by its start and end {@link module:engine/view/position~Position positions}.\n *\n * In order to create a new position instance use the `createPosition*()` factory methods available in:\n *\n * * {@link module:engine/view/view~View}\n * * {@link module:engine/view/downcastwriter~DowncastWriter}\n * * {@link module:engine/view/upcastwriter~UpcastWriter}\n */\nexport default class Range extends TypeCheckable implements Iterable<TreeWalkerValue> {\n\t/**\n\t * Start position.\n\t */\n\tpublic readonly start: Position;\n\n\t/**\n\t * End position.\n\t */\n\tpublic readonly end: Position;\n\n\t/**\n\t * Creates a range spanning from `start` position to `end` position.\n\t *\n\t * **Note:** Constructor creates it's own {@link module:engine/view/position~Position} instances basing on passed values.\n\t *\n\t * @param start Start position.\n\t * @param end End position. If not set, range will be collapsed at the `start` position.\n\t */\n\tconstructor( start: Position, end: Position | null = null ) {\n\t\tsuper();\n\n\t\tthis.start = start.clone();\n\t\tthis.end = end ? end.clone() : start.clone();\n\t}\n\n\t/**\n\t * Iterable interface.\n\t *\n\t * Iterates over all {@link module:engine/view/item~Item view items} that are in this range and returns\n\t * them together with additional information like length or {@link module:engine/view/position~Position positions},\n\t * grouped as {@link module:engine/view/treewalker~TreeWalkerValue}.\n\t *\n\t * This iterator uses {@link module:engine/view/treewalker~TreeWalker TreeWalker} with `boundaries` set to this range and\n\t * `ignoreElementEnd` option\n\t * set to `true`.\n\t */\n\tpublic* [ Symbol.iterator ](): IterableIterator<TreeWalkerValue> {\n\t\tyield* new TreeWalker( { boundaries: this, ignoreElementEnd: true } );\n\t}\n\n\t/**\n\t * Returns whether the range is collapsed, that is it start and end positions are equal.\n\t */\n\tpublic get isCollapsed(): boolean {\n\t\treturn this.start.isEqual( this.end );\n\t}\n\n\t/**\n\t * Returns whether this range is flat, that is if {@link module:engine/view/range~Range#start start} position and\n\t * {@link module:engine/view/range~Range#end end} position are in the same {@link module:engine/view/position~Position#parent parent}.\n\t */\n\tpublic get isFlat(): boolean {\n\t\treturn this.start.parent === this.end.parent;\n\t}\n\n\t/**\n\t * Range root element.\n\t */\n\tpublic get root(): Node | DocumentFragment {\n\t\treturn this.start.root;\n\t}\n\n\t/**\n\t * Creates a maximal range that has the same content as this range but is expanded in both ways (at the beginning\n\t * and at the end).\n\t *\n\t * For example:\n\t *\n\t * ```html\n\t * <p>Foo</p><p><b>{Bar}</b></p> -> <p>Foo</p>[<p><b>Bar</b>]</p>\n\t * <p><b>foo</b>{bar}<span></span></p> -> <p><b>foo[</b>bar<span></span>]</p>\n\t * ```\n\t *\n\t * Note that in the sample above:\n\t *\n\t * - `<p>` have type of {@link module:engine/view/containerelement~ContainerElement},\n\t * - `<b>` have type of {@link module:engine/view/attributeelement~AttributeElement},\n\t * - `<span>` have type of {@link module:engine/view/uielement~UIElement}.\n\t *\n\t * @returns Enlarged range.\n\t */\n\tpublic getEnlarged(): Range {\n\t\tlet start = this.start.getLastMatchingPosition( enlargeTrimSkip, { direction: 'backward' } );\n\t\tlet end = this.end.getLastMatchingPosition( enlargeTrimSkip );\n\n\t\t// Fix positions, in case if they are in Text node.\n\t\tif ( start.parent.is( '$text' ) && start.isAtStart ) {\n\t\t\tstart = Position._createBefore( start.parent );\n\t\t}\n\n\t\tif ( end.parent.is( '$text' ) && end.isAtEnd ) {\n\t\t\tend = Position._createAfter( end.parent );\n\t\t}\n\n\t\treturn new Range( start, end );\n\t}\n\n\t/**\n\t * Creates a minimum range that has the same content as this range but is trimmed in both ways (at the beginning\n\t * and at the end).\n\t *\n\t * For example:\n\t *\n\t * ```html\n\t * <p>Foo</p>[<p><b>Bar</b>]</p> -> <p>Foo</p><p><b>{Bar}</b></p>\n\t * <p><b>foo[</b>bar<span></span>]</p> -> <p><b>foo</b>{bar}<span></span></p>\n\t * ```\n\t *\n\t * Note that in the sample above:\n\t *\n\t * - `<p>` have type of {@link module:engine/view/containerelement~ContainerElement},\n\t * - `<b>` have type of {@link module:engine/view/attributeelement~AttributeElement},\n\t * - `<span>` have type of {@link module:engine/view/uielement~UIElement}.\n\t *\n\t * @returns Shrunk range.\n\t */\n\tpublic getTrimmed(): Range {\n\t\tlet start = this.start.getLastMatchingPosition( enlargeTrimSkip );\n\n\t\tif ( start.isAfter( this.end ) || start.isEqual( this.end ) ) {\n\t\t\treturn new Range( start, start );\n\t\t}\n\n\t\tlet end = this.end.getLastMatchingPosition( enlargeTrimSkip, { direction: 'backward' } );\n\t\tconst nodeAfterStart = start.nodeAfter;\n\t\tconst nodeBeforeEnd = end.nodeBefore;\n\n\t\t// Because TreeWalker prefers positions next to text node, we need to move them manually into these text nodes.\n\t\tif ( nodeAfterStart && nodeAfterStart.is( '$text' ) ) {\n\t\t\tstart = new Position( nodeAfterStart, 0 );\n\t\t}\n\n\t\tif ( nodeBeforeEnd && nodeBeforeEnd.is( '$text' ) ) {\n\t\t\tend = new Position( nodeBeforeEnd, nodeBeforeEnd.data.length );\n\t\t}\n\n\t\treturn new Range( start, end );\n\t}\n\n\t/**\n\t * Two ranges are equal if their start and end positions are equal.\n\t *\n\t * @param otherRange Range to compare with.\n\t * @returns `true` if ranges are equal, `false` otherwise\n\t */\n\tpublic isEqual( otherRange: Range ): boolean {\n\t\treturn this == otherRange || ( this.start.isEqual( otherRange.start ) && this.end.isEqual( otherRange.end ) );\n\t}\n\n\t/**\n\t * Checks whether this range contains given {@link module:engine/view/position~Position position}.\n\t *\n\t * @param position Position to check.\n\t * @returns `true` if given {@link module:engine/view/position~Position position} is contained in this range, `false` otherwise.\n\t */\n\tpublic containsPosition( position: Position ): boolean {\n\t\treturn position.isAfter( this.start ) && position.isBefore( this.end );\n\t}\n\n\t/**\n\t * Checks whether this range contains given {@link module:engine/view/range~Range range}.\n\t *\n\t * @param otherRange Range to check.\n\t * @param loose Whether the check is loose or strict. If the check is strict (`false`), compared range cannot\n\t * start or end at the same position as this range boundaries. If the check is loose (`true`), compared range can start, end or\n\t * even be equal to this range. Note that collapsed ranges are always compared in strict mode.\n\t * @returns `true` if given {@link module:engine/view/range~Range range} boundaries are contained by this range, `false`\n\t * otherwise.\n\t */\n\tpublic containsRange( otherRange: Range, loose: boolean = false ): boolean {\n\t\tif ( otherRange.isCollapsed ) {\n\t\t\tloose = false;\n\t\t}\n\n\t\tconst containsStart = this.containsPosition( otherRange.start ) || ( loose && this.start.isEqual( otherRange.start ) );\n\t\tconst containsEnd = this.containsPosition( otherRange.end ) || ( loose && this.end.isEqual( otherRange.end ) );\n\n\t\treturn containsStart && containsEnd;\n\t}\n\n\t/**\n\t * Computes which part(s) of this {@link module:engine/view/range~Range range} is not a part of given\n\t * {@link module:engine/view/range~Range range}.\n\t * Returned array contains zero, one or two {@link module:engine/view/range~Range ranges}.\n\t *\n\t * Examples:\n\t *\n\t * ```ts\n\t * let foo = downcastWriter.createText( 'foo' );\n\t * let img = downcastWriter.createContainerElement( 'img' );\n\t * let bar = downcastWriter.createText( 'bar' );\n\t * let p = downcastWriter.createContainerElement( 'p', null, [ foo, img, bar ] );\n\t *\n\t * let range = view.createRange( view.createPositionAt( foo, 2 ), view.createPositionAt( bar, 1 ); // \"o\", img, \"b\" are in range.\n\t * let otherRange = view.createRange( // \"oo\", img, \"ba\" are in range.\n\t * \tview.createPositionAt( foo, 1 ),\n\t * \tview.createPositionAt( bar, 2 )\n\t * );\n\t * let transformed = range.getDifference( otherRange );\n\t * // transformed array has no ranges because `otherRange` contains `range`\n\t *\n\t * otherRange = view.createRange( view.createPositionAt( foo, 1 ), view.createPositionAt( p, 2 ); // \"oo\", img are in range.\n\t * transformed = range.getDifference( otherRange );\n\t * // transformed array has one range: from ( p, 2 ) to ( bar, 1 )\n\t *\n\t * otherRange = view.createRange( view.createPositionAt( p, 1 ), view.createPositionAt( p, 2 ) ); // img is in range.\n\t * transformed = range.getDifference( otherRange );\n\t * // transformed array has two ranges: from ( foo, 1 ) to ( p, 1 ) and from ( p, 2 ) to ( bar, 1 )\n\t * ```\n\t *\n\t * @param otherRange Range to differentiate against.\n\t * @returns The difference between ranges.\n\t */\n\tpublic getDifference( otherRange: Range ): Array<Range> {\n\t\tconst ranges: Array<Range> = [];\n\n\t\tif ( this.isIntersecting( otherRange ) ) {\n\t\t\t// Ranges intersect.\n\n\t\t\tif ( this.containsPosition( otherRange.start ) ) {\n\t\t\t\t// Given range start is inside this range. This means that we have to\n\t\t\t\t// add shrunken range - from the start to the middle of this range.\n\t\t\t\tranges.push( new Range( this.start, otherRange.start ) );\n\t\t\t}\n\n\t\t\tif ( this.containsPosition( otherRange.end ) ) {\n\t\t\t\t// Given range end is inside this range. This means that we have to\n\t\t\t\t// add shrunken range - from the middle of this range to the end.\n\t\t\t\tranges.push( new Range( otherRange.end, this.end ) );\n\t\t\t}\n\t\t} else {\n\t\t\t// Ranges do not intersect, return the original range.\n\t\t\tranges.push( this.clone() );\n\t\t}\n\n\t\treturn ranges;\n\t}\n\n\t/**\n\t * Returns an intersection of this {@link module:engine/view/range~Range range} and given {@link module:engine/view/range~Range range}.\n\t * Intersection is a common part of both of those ranges. If ranges has no common part, returns `null`.\n\t *\n\t * Examples:\n\t *\n\t * ```ts\n\t * let foo = downcastWriter.createText( 'foo' );\n\t * let img = downcastWriter.createContainerElement( 'img' );\n\t * let bar = downcastWriter.createText( 'bar' );\n\t * let p = downcastWriter.createContainerElement( 'p', null, [ foo, img, bar ] );\n\t *\n\t * let range = view.createRange( view.createPositionAt( foo, 2 ), view.createPositionAt( bar, 1 ); // \"o\", img, \"b\" are in range.\n\t * let otherRange = view.createRange( view.createPositionAt( foo, 1 ), view.createPositionAt( p, 2 ); // \"oo\", img are in range.\n\t * let transformed = range.getIntersection( otherRange ); // range from ( foo, 1 ) to ( p, 2 ).\n\t *\n\t * otherRange = view.createRange( view.createPositionAt( bar, 1 ), view.createPositionAt( bar, 3 ); \"ar\" is in range.\n\t * transformed = range.getIntersection( otherRange ); // null - no common part.\n\t * ```\n\t *\n\t * @param otherRange Range to check for intersection.\n\t * @returns A common part of given ranges or `null` if ranges have no common part.\n\t */\n\tpublic getIntersection( otherRange: Range ): Range | null {\n\t\tif ( this.isIntersecting( otherRange ) ) {\n\t\t\t// Ranges intersect, so a common range will be returned.\n\t\t\t// At most, it will be same as this range.\n\t\t\tlet commonRangeStart = this.start;\n\t\t\tlet commonRangeEnd = this.end;\n\n\t\t\tif ( this.containsPosition( otherRange.start ) ) {\n\t\t\t\t// Given range start is inside this range. This means thaNt we have to\n\t\t\t\t// shrink common range to the given range start.\n\t\t\t\tcommonRangeStart = otherRange.start;\n\t\t\t}\n\n\t\t\tif ( this.containsPosition( otherRange.end ) ) {\n\t\t\t\t// Given range end is inside this range. This means that we have to\n\t\t\t\t// shrink common range to the given range end.\n\t\t\t\tcommonRangeEnd = otherRange.end;\n\t\t\t}\n\n\t\t\treturn new Range( commonRangeStart, commonRangeEnd );\n\t\t}\n\n\t\t// Ranges do not intersect, so they do not have common part.\n\t\treturn null;\n\t}\n\n\t/**\n\t * Creates a {@link module:engine/view/treewalker~TreeWalker TreeWalker} instance with this range as a boundary.\n\t *\n\t * @param options Object with configuration options. See {@link module:engine/view/treewalker~TreeWalker}.\n\t */\n\tpublic getWalker( options: TreeWalkerOptions = {} ): TreeWalker {\n\t\toptions.boundaries = this;\n\n\t\treturn new TreeWalker( options );\n\t}\n\n\t/**\n\t * Returns a {@link module:engine/view/node~Node} or {@link module:engine/view/documentfragment~DocumentFragment}\n\t * which is a common ancestor of range's both ends (in which the entire range is contained).\n\t */\n\tpublic getCommonAncestor(): Node | DocumentFragment | null {\n\t\treturn this.start.getCommonAncestor( this.end );\n\t}\n\n\t/**\n\t * Returns an {@link module:engine/view/element~Element Element} contained by the range.\n\t * The element will be returned when it is the **only** node within the range and **fully–contained**\n\t * at the same time.\n\t */\n\tpublic getContainedElement(): Element | null {\n\t\tif ( this.isCollapsed ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tlet nodeAfterStart = this.start.nodeAfter;\n\t\tlet nodeBeforeEnd = this.end.nodeBefore;\n\n\t\t// Handle the situation when the range position is at the beginning / at the end of a text node.\n\t\t// In such situation `.nodeAfter` and `.nodeBefore` are `null` but the range still might be spanning\n\t\t// over one element.\n\t\t//\n\t\t// <p>Foo{<span class=\"widget\"></span>}bar</p> vs <p>Foo[<span class=\"widget\"></span>]bar</p>\n\t\t//\n\t\t// These are basically the same range, only the difference is if the range position is at\n\t\t// at the end/at the beginning of a text node or just before/just after the text node.\n\t\t//\n\t\tif ( this.start.parent.is( '$text' ) && this.start.isAtEnd && this.start.parent.nextSibling ) {\n\t\t\tnodeAfterStart = this.start.parent.nextSibling;\n\t\t}\n\n\t\tif ( this.end.parent.is( '$text' ) && this.end.isAtStart && this.end.parent.previousSibling ) {\n\t\t\tnodeBeforeEnd = this.end.parent.previousSibling;\n\t\t}\n\n\t\tif ( nodeAfterStart && nodeAfterStart.is( 'element' ) && nodeAfterStart === nodeBeforeEnd ) {\n\t\t\treturn nodeAfterStart;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Clones this range.\n\t */\n\tpublic clone(): Range {\n\t\treturn new Range( this.start, this.end );\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all {@link module:engine/view/item~Item view items} that are in this range and returns\n\t * them.\n\t *\n\t * This method uses {@link module:engine/view/treewalker~TreeWalker} with `boundaries` set to this range and `ignoreElementEnd` option\n\t * set to `true`. However it returns only {@link module:engine/view/item~Item items},\n\t * not {@link module:engine/view/treewalker~TreeWalkerValue}.\n\t *\n\t * You may specify additional options for the tree walker. See {@link module:engine/view/treewalker~TreeWalker} for\n\t * a full list of available options.\n\t *\n\t * @param options Object with configuration options. See {@link module:engine/view/treewalker~TreeWalker}.\n\t */\n\tpublic* getItems( options: TreeWalkerOptions = {} ): IterableIterator<Item> {\n\t\toptions.boundaries = this;\n\t\toptions.ignoreElementEnd = true;\n\n\t\tconst treeWalker = new TreeWalker( options );\n\n\t\tfor ( const value of treeWalker ) {\n\t\t\tyield value.item;\n\t\t}\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all {@link module:engine/view/position~Position positions} that are boundaries or\n\t * contained in this range.\n\t *\n\t * This method uses {@link module:engine/view/treewalker~TreeWalker} with `boundaries` set to this range. However it returns only\n\t * {@link module:engine/view/position~Position positions}, not {@link module:engine/view/treewalker~TreeWalkerValue}.\n\t *\n\t * You may specify additional options for the tree walker. See {@link module:engine/view/treewalker~TreeWalker} for\n\t * a full list of available options.\n\t *\n\t * @param options Object with configuration options. See {@link module:engine/view/treewalker~TreeWalker}.\n\t */\n\tpublic* getPositions( options: TreeWalkerOptions = {} ): IterableIterator<Position> {\n\t\toptions.boundaries = this;\n\n\t\tconst treeWalker = new TreeWalker( options );\n\n\t\tyield treeWalker.position;\n\n\t\tfor ( const value of treeWalker ) {\n\t\t\tyield value.nextPosition;\n\t\t}\n\t}\n\n\t/**\n\t * Checks and returns whether this range intersects with the given range.\n\t *\n\t * @param otherRange Range to compare with.\n\t * @returns True if ranges intersect.\n\t */\n\tpublic isIntersecting( otherRange: Range ): boolean {\n\t\treturn this.start.isBefore( otherRange.end ) && this.end.isAfter( otherRange.start );\n\t}\n\n\t/**\n\t * Creates a range from the given parents and offsets.\n\t *\n\t * @internal\n\t * @param startElement Start position parent element.\n\t * @param startOffset Start position offset.\n\t * @param endElement End position parent element.\n\t * @param endOffset End position offset.\n\t * @returns Created range.\n\t */\n\tpublic static _createFromParentsAndOffsets(\n\t\tstartElement: Element | DocumentFragment,\n\t\tstartOffset: number,\n\t\tendElement: Element | DocumentFragment,\n\t\tendOffset: number\n\t): Range {\n\t\treturn new this(\n\t\t\tnew Position( startElement, startOffset ),\n\t\t\tnew Position( endElement, endOffset )\n\t\t);\n\t}\n\n\t/**\n\t * Creates a new range, spreading from specified {@link module:engine/view/position~Position position} to a position moved by\n\t * given `shift`. If `shift` is a negative value, shifted position is treated as the beginning of the range.\n\t *\n\t * @internal\n\t * @param position Beginning of the range.\n\t * @param shift How long the range should be.\n\t */\n\tpublic static _createFromPositionAndShift( position: Position, shift: number ): Range {\n\t\tconst start = position;\n\t\tconst end = position.getShiftedBy( shift );\n\n\t\treturn shift > 0 ? new this( start, end ) : new this( end, start );\n\t}\n\n\t/**\n\t * Creates a range inside an {@link module:engine/view/element~Element element} which starts before the first child of\n\t * that element and ends after the last child of that element.\n\t *\n\t * @internal\n\t * @param element Element which is a parent for the range.\n\t */\n\tpublic static _createIn( element: Element | DocumentFragment ): Range {\n\t\treturn this._createFromParentsAndOffsets( element, 0, element, element.childCount );\n\t}\n\n\t/**\n\t * Creates a range that starts before given {@link module:engine/view/item~Item view item} and ends after it.\n\t *\n\t * @internal\n\t */\n\tpublic static _createOn( item: Item ): Range {\n\t\tconst size = item.is( '$textProxy' ) ? item.offsetSize : 1;\n\n\t\treturn this._createFromPositionAndShift( Position._createBefore( item ), size );\n\t}\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nRange.prototype.is = function( type: string ): boolean {\n\treturn type === 'range' || type === 'view:range';\n};\n\n/**\n * Function used by getEnlarged and getTrimmed methods.\n */\nfunction enlargeTrimSkip( value: TreeWalkerValue ): boolean {\n\tif ( value.item.is( 'attributeElement' ) || value.item.is( 'uiElement' ) ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/selection\n */\n\nimport TypeCheckable from './typecheckable';\nimport Range from './range';\nimport Position, { type PositionOffset } from './position';\nimport Node from './node';\nimport DocumentSelection from './documentselection';\n\nimport {\n\tCKEditorError,\n\tEmitterMixin,\n\tcount,\n\tisIterable\n} from '@ckeditor/ckeditor5-utils';\n\nimport type Element from './element';\nimport type Item from './item';\nimport type EditableElement from './editableelement';\n\n/**\n * Class representing an arbirtary selection in the view.\n * See also {@link module:engine/view/documentselection~DocumentSelection}.\n *\n * New selection instances can be created via the constructor or one these methods:\n *\n * * {@link module:engine/view/view~View#createSelection `View#createSelection()`},\n * * {@link module:engine/view/upcastwriter~UpcastWriter#createSelection `UpcastWriter#createSelection()`}.\n *\n * A selection can consist of {@link module:engine/view/range~Range ranges} that can be set by using\n * the {@link module:engine/view/selection~Selection#setTo `Selection#setTo()`} method.\n */\nexport default class Selection extends EmitterMixin( TypeCheckable ) {\n\t/**\n\t * Stores all ranges that are selected.\n\t */\n\tprivate _ranges: Array<Range>;\n\n\t/**\n\t * Specifies whether the last added range was added as a backward or forward range.\n\t */\n\tprivate _lastRangeBackward: boolean;\n\n\t/**\n\t * Specifies whether selection instance is fake.\n\t */\n\tprivate _isFake: boolean;\n\n\t/**\n\t * Fake selection's label.\n\t */\n\tprivate _fakeSelectionLabel: string;\n\n\t/**\n\t * Creates new selection instance.\n\t *\n\t * **Note**: The selection constructor is available as a factory method:\n\t *\n\t * * {@link module:engine/view/view~View#createSelection `View#createSelection()`},\n\t * * {@link module:engine/view/upcastwriter~UpcastWriter#createSelection `UpcastWriter#createSelection()`}.\n\t *\n\t * ```ts\n\t * // Creates empty selection without ranges.\n\t * const selection = writer.createSelection();\n\t *\n\t * // Creates selection at the given range.\n\t * const range = writer.createRange( start, end );\n\t * const selection = writer.createSelection( range );\n\t *\n\t * // Creates selection at the given ranges\n\t * const ranges = [ writer.createRange( start1, end2 ), writer.createRange( star2, end2 ) ];\n\t * const selection = writer.createSelection( ranges );\n\t *\n\t * // Creates selection from the other selection.\n\t * const otherSelection = writer.createSelection();\n\t * const selection = writer.createSelection( otherSelection );\n\t *\n\t * // Creates selection from the document selection.\n\t * const selection = writer.createSelection( editor.editing.view.document.selection );\n\t *\n\t * // Creates selection at the given position.\n\t * const position = writer.createPositionFromPath( root, path );\n\t * const selection = writer.createSelection( position );\n\t *\n\t * // Creates collapsed selection at the position of given item and offset.\n\t * const paragraph = writer.createContainerElement( 'paragraph' );\n\t * const selection = writer.createSelection( paragraph, offset );\n\t *\n\t * // Creates a range inside an {@link module:engine/view/element~Element element} which starts before the\n\t * // first child of that element and ends after the last child of that element.\n\t * const selection = writer.createSelection( paragraph, 'in' );\n\t *\n\t * // Creates a range on an {@link module:engine/view/item~Item item} which starts before the item and ends\n\t * // just after the item.\n\t * const selection = writer.createSelection( paragraph, 'on' );\n\t * ```\n\t *\n\t * `Selection`'s constructor allow passing additional options (`backward`, `fake` and `label`) as the last argument.\n\t *\n\t * ```ts\n\t * // Creates backward selection.\n\t * const selection = writer.createSelection( range, { backward: true } );\n\t * ```\n\t *\n\t * Fake selection does not render as browser native selection over selected elements and is hidden to the user.\n\t * This way, no native selection UI artifacts are displayed to the user and selection over elements can be\n\t * represented in other way, for example by applying proper CSS class.\n\t *\n\t * Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM\n\t * (and be properly handled by screen readers).\n\t *\n\t * ```ts\n\t * // Creates fake selection with label.\n\t * const selection = writer.createSelection( range, { fake: true, label: 'foo' } );\n\t * ```\n\t *\n\t * @internal\n\t */\n\tconstructor(\n\t\t...args: [] | [\n\t\t\tselectable: Node,\n\t\t\tplaceOrOffset: PlaceOrOffset,\n\t\t\toptions?: SelectionOptions\n\t\t] | [\n\t\t\tselectable?: Exclude<Selectable, Node>,\n\t\t\toptions?: SelectionOptions\n\t\t]\n\t) {\n\t\tsuper();\n\n\t\tthis._ranges = [];\n\t\tthis._lastRangeBackward = false;\n\t\tthis._isFake = false;\n\t\tthis._fakeSelectionLabel = '';\n\n\t\tif ( args.length ) {\n\t\t\tthis.setTo( ...args );\n\t\t}\n\t}\n\n\t/**\n\t * Returns true if selection instance is marked as `fake`.\n\t *\n\t * @see #setTo\n\t */\n\tpublic get isFake(): boolean {\n\t\treturn this._isFake;\n\t}\n\n\t/**\n\t * Returns fake selection label.\n\t *\n\t * @see #setTo\n\t */\n\tpublic get fakeSelectionLabel(): string {\n\t\treturn this._fakeSelectionLabel;\n\t}\n\n\t/**\n\t * Selection anchor. Anchor may be described as a position where the selection starts. Together with\n\t * {@link #focus focus} they define the direction of selection, which is important\n\t * when expanding/shrinking selection. Anchor is always the start or end of the most recent added range.\n\t * It may be a bit unintuitive when there are multiple ranges in selection.\n\t *\n\t * @see #focus\n\t */\n\tpublic get anchor(): Position | null {\n\t\tif ( !this._ranges.length ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst range = this._ranges[ this._ranges.length - 1 ];\n\t\tconst anchor = this._lastRangeBackward ? range.end : range.start;\n\n\t\treturn anchor.clone();\n\t}\n\n\t/**\n\t * Selection focus. Focus is a position where the selection ends.\n\t *\n\t * @see #anchor\n\t */\n\tpublic get focus(): Position | null {\n\t\tif ( !this._ranges.length ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst range = this._ranges[ this._ranges.length - 1 ];\n\t\tconst focus = this._lastRangeBackward ? range.start : range.end;\n\n\t\treturn focus.clone();\n\t}\n\n\t/**\n\t * Returns whether the selection is collapsed. Selection is collapsed when there is exactly one range which is\n\t * collapsed.\n\t */\n\tpublic get isCollapsed(): boolean {\n\t\treturn this.rangeCount === 1 && this._ranges[ 0 ].isCollapsed;\n\t}\n\n\t/**\n\t * Returns number of ranges in selection.\n\t */\n\tpublic get rangeCount(): number {\n\t\treturn this._ranges.length;\n\t}\n\n\t/**\n\t * Specifies whether the {@link #focus} precedes {@link #anchor}.\n\t */\n\tpublic get isBackward(): boolean {\n\t\treturn !this.isCollapsed && this._lastRangeBackward;\n\t}\n\n\t/**\n\t * {@link module:engine/view/editableelement~EditableElement EditableElement} instance that contains this selection, or `null`\n\t * if the selection is not inside an editable element.\n\t */\n\tpublic get editableElement(): EditableElement | null {\n\t\tif ( this.anchor ) {\n\t\t\treturn this.anchor.editableElement;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns an iterable that contains copies of all ranges added to the selection.\n\t */\n\tpublic* getRanges(): IterableIterator<Range> {\n\t\tfor ( const range of this._ranges ) {\n\t\t\tyield range.clone();\n\t\t}\n\t}\n\n\t/**\n\t * Returns copy of the first range in the selection. First range is the one which\n\t * {@link module:engine/view/range~Range#start start} position {@link module:engine/view/position~Position#isBefore is before} start\n\t * position of all other ranges (not to confuse with the first range added to the selection).\n\t * Returns `null` if no ranges are added to selection.\n\t */\n\tpublic getFirstRange(): Range | null {\n\t\tlet first = null;\n\n\t\tfor ( const range of this._ranges ) {\n\t\t\tif ( !first || range.start.isBefore( first.start ) ) {\n\t\t\t\tfirst = range;\n\t\t\t}\n\t\t}\n\n\t\treturn first ? first.clone() : null;\n\t}\n\n\t/**\n\t * Returns copy of the last range in the selection. Last range is the one which {@link module:engine/view/range~Range#end end}\n\t * position {@link module:engine/view/position~Position#isAfter is after} end position of all other ranges (not to confuse\n\t * with the last range added to the selection). Returns `null` if no ranges are added to selection.\n\t */\n\tpublic getLastRange(): Range | null {\n\t\tlet last = null;\n\n\t\tfor ( const range of this._ranges ) {\n\t\t\tif ( !last || range.end.isAfter( last.end ) ) {\n\t\t\t\tlast = range;\n\t\t\t}\n\t\t}\n\n\t\treturn last ? last.clone() : null;\n\t}\n\n\t/**\n\t * Returns copy of the first position in the selection. First position is the position that\n\t * {@link module:engine/view/position~Position#isBefore is before} any other position in the selection ranges.\n\t * Returns `null` if no ranges are added to selection.\n\t */\n\tpublic getFirstPosition(): Position | null {\n\t\tconst firstRange = this.getFirstRange();\n\n\t\treturn firstRange ? firstRange.start.clone() : null;\n\t}\n\n\t/**\n\t * Returns copy of the last position in the selection. Last position is the position that\n\t * {@link module:engine/view/position~Position#isAfter is after} any other position in the selection ranges.\n\t * Returns `null` if no ranges are added to selection.\n\t */\n\tpublic getLastPosition(): Position | null {\n\t\tconst lastRange = this.getLastRange();\n\n\t\treturn lastRange ? lastRange.end.clone() : null;\n\t}\n\n\t/**\n\t * Checks whether, this selection is equal to given selection. Selections are equal if they have same directions,\n\t * same number of ranges and all ranges from one selection equal to a range from other selection.\n\t *\n\t * @param otherSelection Selection to compare with.\n\t * @returns `true` if selections are equal, `false` otherwise.\n\t */\n\tpublic isEqual( otherSelection: Selection | DocumentSelection ): boolean {\n\t\tif ( this.isFake != otherSelection.isFake ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.isFake && this.fakeSelectionLabel != otherSelection.fakeSelectionLabel ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.rangeCount != otherSelection.rangeCount ) {\n\t\t\treturn false;\n\t\t} else if ( this.rangeCount === 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( !this.anchor!.isEqual( otherSelection.anchor! ) || !this.focus!.isEqual( otherSelection.focus! ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor ( const thisRange of this._ranges ) {\n\t\t\tlet found = false;\n\n\t\t\tfor ( const otherRange of ( otherSelection as any )._ranges ) {\n\t\t\t\tif ( thisRange.isEqual( otherRange ) ) {\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !found ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Checks whether this selection is similar to given selection. Selections are similar if they have same directions, same\n\t * number of ranges, and all {@link module:engine/view/range~Range#getTrimmed trimmed} ranges from one selection are\n\t * equal to any trimmed range from other selection.\n\t *\n\t * @param otherSelection Selection to compare with.\n\t * @returns `true` if selections are similar, `false` otherwise.\n\t */\n\tpublic isSimilar( otherSelection: Selection | DocumentSelection ): boolean {\n\t\tif ( this.isBackward != otherSelection.isBackward ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst numOfRangesA = count( this.getRanges() );\n\t\tconst numOfRangesB = count( otherSelection.getRanges() );\n\n\t\t// If selections have different number of ranges, they cannot be similar.\n\t\tif ( numOfRangesA != numOfRangesB ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// If both selections have no ranges, they are similar.\n\t\tif ( numOfRangesA == 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Check if each range in one selection has a similar range in other selection.\n\t\tfor ( let rangeA of this.getRanges() ) {\n\t\t\trangeA = rangeA.getTrimmed();\n\n\t\t\tlet found = false;\n\n\t\t\tfor ( let rangeB of otherSelection.getRanges() ) {\n\t\t\t\trangeB = rangeB.getTrimmed();\n\n\t\t\t\tif ( rangeA.start.isEqual( rangeB.start ) && rangeA.end.isEqual( rangeB.end ) ) {\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For `rangeA`, neither range in `otherSelection` was similar. So selections are not similar.\n\t\t\tif ( !found ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// There were no ranges that weren't matched. Selections are similar.\n\t\treturn true;\n\t}\n\n\t/**\n\t * Returns the selected element. {@link module:engine/view/element~Element Element} is considered as selected if there is only\n\t * one range in the selection, and that range contains exactly one element.\n\t * Returns `null` if there is no selected element.\n\t */\n\tpublic getSelectedElement(): Element | null {\n\t\tif ( this.rangeCount !== 1 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this.getFirstRange()!.getContainedElement();\n\t}\n\n\t/**\n\t * Sets this selection's ranges and direction to the specified location based on the given\n\t * {@link module:engine/view/selection~Selectable selectable}.\n\t *\n\t * ```ts\n\t * // Sets selection to the given range.\n\t * const range = writer.createRange( start, end );\n\t * selection.setTo( range );\n\t *\n\t * // Sets selection to given ranges.\n\t * const ranges = [ writer.createRange( start1, end2 ), writer.createRange( star2, end2 ) ];\n\t * selection.setTo( range );\n\t *\n\t * // Sets selection to the other selection.\n\t * const otherSelection = writer.createSelection();\n\t * selection.setTo( otherSelection );\n\t *\n\t * // Sets selection to contents of DocumentSelection.\n\t * selection.setTo( editor.editing.view.document.selection );\n\t *\n\t * // Sets collapsed selection at the given position.\n\t * const position = writer.createPositionAt( root, path );\n\t * selection.setTo( position );\n\t *\n\t * // Sets collapsed selection at the position of given item and offset.\n\t * selection.setTo( paragraph, offset );\n\t * ```\n\t *\n\t * Creates a range inside an {@link module:engine/view/element~Element element} which starts before the first child of\n\t * that element and ends after the last child of that element.\n\t *\n\t * ```ts\n\t * selection.setTo( paragraph, 'in' );\n\t * ```\n\t *\n\t * Creates a range on an {@link module:engine/view/item~Item item} which starts before the item and ends just after the item.\n\t *\n\t * ```ts\n\t * selection.setTo( paragraph, 'on' );\n\t *\n\t * // Clears selection. Removes all ranges.\n\t * selection.setTo( null );\n\t * ```\n\t *\n\t * `Selection#setTo()` method allow passing additional options (`backward`, `fake` and `label`) as the last argument.\n\t *\n\t * ```ts\n\t * // Sets selection as backward.\n\t * selection.setTo( range, { backward: true } );\n\t * ```\n\t *\n\t * Fake selection does not render as browser native selection over selected elements and is hidden to the user.\n\t * This way, no native selection UI artifacts are displayed to the user and selection over elements can be\n\t * represented in other way, for example by applying proper CSS class.\n\t *\n\t * Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM\n\t * (and be properly handled by screen readers).\n\t *\n\t * ```ts\n\t * // Creates fake selection with label.\n\t * selection.setTo( range, { fake: true, label: 'foo' } );\n\t * ```\n\t *\n\t * @fires change\n\t */\n\tpublic setTo(\n\t\t...args: [\n\t\t\tselectable: Node,\n\t\t\tplaceOrOffset: PlaceOrOffset,\n\t\t\toptions?: SelectionOptions\n\t\t] | [\n\t\t\tselectable?: Exclude<Selectable, Node>,\n\t\t\toptions?: SelectionOptions\n\t\t]\n\t): void {\n\t\tlet [ selectable, placeOrOffset, options ] = args;\n\n\t\tif ( typeof placeOrOffset == 'object' ) {\n\t\t\toptions = placeOrOffset;\n\t\t\tplaceOrOffset = undefined;\n\t\t}\n\n\t\tif ( selectable === null ) {\n\t\t\tthis._setRanges( [] );\n\t\t\tthis._setFakeOptions( options );\n\t\t} else if ( selectable instanceof Selection || selectable instanceof DocumentSelection ) {\n\t\t\tthis._setRanges( selectable.getRanges(), selectable.isBackward );\n\t\t\tthis._setFakeOptions( { fake: selectable.isFake, label: selectable.fakeSelectionLabel } );\n\t\t} else if ( selectable instanceof Range ) {\n\t\t\tthis._setRanges( [ selectable ], options && options.backward );\n\t\t\tthis._setFakeOptions( options );\n\t\t} else if ( selectable instanceof Position ) {\n\t\t\tthis._setRanges( [ new Range( selectable ) ] );\n\t\t\tthis._setFakeOptions( options );\n\t\t} else if ( selectable instanceof Node ) {\n\t\t\tconst backward = !!options && !!options.backward;\n\t\t\tlet range;\n\n\t\t\tif ( placeOrOffset === undefined ) {\n\t\t\t\t/**\n\t\t\t\t * selection.setTo requires the second parameter when the first parameter is a node.\n\t\t\t\t *\n\t\t\t\t * @error view-selection-setto-required-second-parameter\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'view-selection-setto-required-second-parameter', this );\n\t\t\t} else if ( placeOrOffset == 'in' ) {\n\t\t\t\trange = Range._createIn( selectable as Element );\n\t\t\t} else if ( placeOrOffset == 'on' ) {\n\t\t\t\trange = Range._createOn( selectable );\n\t\t\t} else {\n\t\t\t\trange = new Range( Position._createAt( selectable, placeOrOffset ) );\n\t\t\t}\n\n\t\t\tthis._setRanges( [ range ], backward );\n\t\t\tthis._setFakeOptions( options );\n\t\t} else if ( isIterable( selectable ) ) {\n\t\t\t// We assume that the selectable is an iterable of ranges.\n\t\t\t// Array.from() is used to prevent setting ranges to the old iterable\n\t\t\tthis._setRanges( selectable, options && options.backward );\n\t\t\tthis._setFakeOptions( options );\n\t\t} else {\n\t\t\t/**\n\t\t\t * Cannot set selection to given place.\n\t\t\t *\n\t\t\t * @error view-selection-setto-not-selectable\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-selection-setto-not-selectable', this );\n\t\t}\n\n\t\tthis.fire<ViewSelectionChangeEvent>( 'change' );\n\t}\n\n\t/**\n\t * Moves {@link #focus} to the specified location.\n\t *\n\t * The location can be specified in the same form as {@link module:engine/view/view~View#createPositionAt view.createPositionAt()}\n\t * parameters.\n\t *\n\t * @fires change\n\t * @param offset Offset or one of the flags. Used only when first parameter is a {@link module:engine/view/item~Item view item}.\n\t */\n\tpublic setFocus( itemOrPosition: Item | Position, offset?: PositionOffset ): void {\n\t\tif ( this.anchor === null ) {\n\t\t\t/**\n\t\t\t * Cannot set selection focus if there are no ranges in selection.\n\t\t\t *\n\t\t\t * @error view-selection-setfocus-no-ranges\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-selection-setfocus-no-ranges', this );\n\t\t}\n\n\t\tconst newFocus = Position._createAt( itemOrPosition, offset );\n\n\t\tif ( newFocus.compareWith( this.focus! ) == 'same' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst anchor = this.anchor;\n\n\t\tthis._ranges.pop();\n\n\t\tif ( newFocus.compareWith( anchor ) == 'before' ) {\n\t\t\tthis._addRange( new Range( newFocus, anchor ), true );\n\t\t} else {\n\t\t\tthis._addRange( new Range( anchor, newFocus ) );\n\t\t}\n\n\t\tthis.fire<ViewSelectionChangeEvent>( 'change' );\n\t}\n\n\t/**\n\t * Replaces all ranges that were added to the selection with given array of ranges. Last range of the array\n\t * is treated like the last added range and is used to set {@link #anchor anchor} and {@link #focus focus}.\n\t * Accepts a flag describing in which way the selection is made.\n\t *\n\t * @param newRanges Iterable object of ranges to set.\n\t * @param isLastBackward Flag describing if last added range was selected forward - from start to end\n\t * (`false`) or backward - from end to start (`true`). Defaults to `false`.\n\t */\n\tprivate _setRanges( newRanges: Iterable<Range>, isLastBackward: boolean = false ) {\n\t\t// New ranges should be copied to prevent removing them by setting them to `[]` first.\n\t\t// Only applies to situations when selection is set to the same selection or same selection's ranges.\n\t\tnewRanges = Array.from( newRanges );\n\n\t\tthis._ranges = [];\n\n\t\tfor ( const range of newRanges ) {\n\t\t\tthis._addRange( range );\n\t\t}\n\n\t\tthis._lastRangeBackward = !!isLastBackward;\n\t}\n\n\t/**\n\t * Sets this selection instance to be marked as `fake`. A fake selection does not render as browser native selection\n\t * over selected elements and is hidden to the user. This way, no native selection UI artifacts are displayed to\n\t * the user and selection over elements can be represented in other way, for example by applying proper CSS class.\n\t *\n\t * Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM (and be\n\t * properly handled by screen readers).\n\t */\n\tprivate _setFakeOptions( options: SelectionOptions = {} ) {\n\t\tthis._isFake = !!options.fake;\n\t\tthis._fakeSelectionLabel = options.fake ? options.label || '' : '';\n\t}\n\n\t/**\n\t * Adds a range to the selection. Added range is copied. This means that passed range is not saved in the\n\t * selection instance and you can safely operate on it.\n\t *\n\t * Accepts a flag describing in which way the selection is made - passed range might be selected from\n\t * {@link module:engine/view/range~Range#start start} to {@link module:engine/view/range~Range#end end}\n\t * or from {@link module:engine/view/range~Range#end end} to {@link module:engine/view/range~Range#start start}.\n\t * The flag is used to set {@link #anchor anchor} and {@link #focus focus} properties.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-selection-range-intersects` if added range intersects\n\t * with ranges already stored in Selection instance.\n\t */\n\tprivate _addRange( range: Range, isBackward: boolean = false ): void {\n\t\tif ( !( range instanceof Range ) ) {\n\t\t\t/**\n\t\t\t * Selection range set to an object that is not an instance of {@link module:engine/view/range~Range}.\n\t\t\t *\n\t\t\t * @error view-selection-add-range-not-range\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'view-selection-add-range-not-range',\n\t\t\t\tthis\n\t\t\t);\n\t\t}\n\n\t\tthis._pushRange( range );\n\t\tthis._lastRangeBackward = !!isBackward;\n\t}\n\n\t/**\n\t * Adds range to selection - creates copy of given range so it can be safely used and modified.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-selection-range-intersects` if added range intersects\n\t * with ranges already stored in selection instance.\n\t */\n\tprivate _pushRange( range: Range ): void {\n\t\tfor ( const storedRange of this._ranges ) {\n\t\t\tif ( range.isIntersecting( storedRange ) ) {\n\t\t\t\t/**\n\t\t\t\t * Trying to add a range that intersects with another range from selection.\n\t\t\t\t *\n\t\t\t\t * @error view-selection-range-intersects\n\t\t\t\t * @param {module:engine/view/range~Range} addedRange Range that was added to the selection.\n\t\t\t\t * @param {module:engine/view/range~Range} intersectingRange Range from selection that intersects with `addedRange`.\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'view-selection-range-intersects',\n\t\t\t\t\tthis,\n\t\t\t\t\t{ addedRange: range, intersectingRange: storedRange }\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tthis._ranges.push( new Range( range.start, range.end ) );\n\t}\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nSelection.prototype.is = function( type: string ): boolean {\n\treturn type === 'selection' || type === 'view:selection';\n};\n\n/**\n * Additional options for {@link ~Selection}.\n */\nexport interface SelectionOptions {\n\n\t/**\n\t * Sets this selection instance to be backward.\n\t */\n\tbackward?: boolean;\n\n\t/**\n\t * Sets this selection instance to be marked as `fake`.\n\t */\n\tfake?: boolean;\n\n\t/**\n\t * Label for the fake selection.\n\t */\n\tlabel?: string;\n}\n\n/**\n * The place or offset of the selection.\n */\nexport type PlaceOrOffset = number | 'before' | 'end' | 'after' | 'on' | 'in';\n\n/**\n * Fired whenever selection ranges are changed through {@link ~Selection Selection API}.\n *\n * @eventName ~Selection#change\n */\nexport type ViewSelectionChangeEvent = {\n\tname: 'change';\n\targs: [];\n};\n\n/**\n * An entity that is used to set selection.\n *\n * See also {@link module:engine/view/selection~Selection#setTo}\n */\nexport type Selectable = Selection | DocumentSelection | Position | Iterable<Range> | Range | Node | null;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/documentselection\n */\n\nimport TypeCheckable from './typecheckable';\nimport Selection, {\n\ttype PlaceOrOffset,\n\ttype Selectable,\n\ttype SelectionOptions,\n\ttype ViewSelectionChangeEvent\n} from './selection';\n\nimport { EmitterMixin } from '@ckeditor/ckeditor5-utils';\n\nimport type EditableElement from './editableelement';\nimport type Element from './element';\nimport type Node from './node';\nimport type Item from './item';\nimport type { default as Position, PositionOffset } from './position';\nimport type Range from './range';\n\n/**\n * Class representing the document selection in the view.\n *\n * Its instance is available in {@link module:engine/view/document~Document#selection `Document#selection`}.\n *\n * It is similar to {@link module:engine/view/selection~Selection} but\n * it has a read-only API and can be modified only by the writer available in\n * the {@link module:engine/view/view~View#change `View#change()`} block\n * (so via {@link module:engine/view/downcastwriter~DowncastWriter#setSelection `DowncastWriter#setSelection()`}).\n */\nexport default class DocumentSelection extends EmitterMixin( TypeCheckable ) {\n\t/**\n\t * Selection is used internally (`DocumentSelection` is a proxy to that selection).\n\t */\n\tprivate readonly _selection: Selection;\n\n\t/**\n\t * Creates new DocumentSelection instance.\n\t *\n\t * ```ts\n\t * // Creates collapsed selection at the position of given item and offset.\n\t * const paragraph = writer.createContainerElement( 'paragraph' );\n\t * const selection = new DocumentSelection( paragraph, offset );\n\t *\n\t * // Creates a range inside an {@link module:engine/view/element~Element element} which starts before the\n\t * // first child of that element and ends after the last child of that element.\n\t * const selection = new DocumentSelection( paragraph, 'in' );\n\t *\n\t * // Creates a range on an {@link module:engine/view/item~Item item} which starts before the item and ends\n\t * // just after the item.\n\t * const selection = new DocumentSelection( paragraph, 'on' );\n\t * ```\n\t *\n\t * `Selection`'s constructor allow passing additional options (`backward`, `fake` and `label`) as the last argument.\n\t *\n\t * ```ts\n\t * // Creates backward selection.\n\t * const selection = new DocumentSelection( element, 'in', { backward: true } );\n\t * ```\n\t *\n\t * Fake selection does not render as browser native selection over selected elements and is hidden to the user.\n\t * This way, no native selection UI artifacts are displayed to the user and selection over elements can be\n\t * represented in other way, for example by applying proper CSS class.\n\t *\n\t * Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM\n\t * (and be properly handled by screen readers).\n\t *\n\t * ```ts\n\t * // Creates fake selection with label.\n\t * const selection = new DocumentSelection( element, 'in', { fake: true, label: 'foo' } );\n\t * ```\n\t *\n\t * See also: {@link #constructor:SELECTABLE `constructor( selectable, options )`}.\n\t *\n\t * @label NODE_OFFSET\n\t */\n\tpublic constructor( selectable: Node, placeOrOffset: PlaceOrOffset, options?: SelectionOptions );\n\n\t/**\n\t * Creates new DocumentSelection instance.\n\t *\n\t * ```ts\n\t * // Creates empty selection without ranges.\n\t * const selection = new DocumentSelection();\n\t *\n\t * // Creates selection at the given range.\n\t * const range = writer.createRange( start, end );\n\t * const selection = new DocumentSelection( range );\n\t *\n\t * // Creates selection at the given ranges\n\t * const ranges = [ writer.createRange( start1, end2 ), writer.createRange( start2, end2 ) ];\n\t * const selection = new DocumentSelection( ranges );\n\t *\n\t * // Creates selection from the other selection.\n\t * const otherSelection = writer.createSelection();\n\t * const selection = new DocumentSelection( otherSelection );\n\t *\n\t * // Creates selection at the given position.\n\t * const position = writer.createPositionAt( root, offset );\n\t * const selection = new DocumentSelection( position );\n\t * ```\n\t *\n\t * `Selection`'s constructor allow passing additional options (`backward`, `fake` and `label`) as the last argument.\n\t *\n\t * ```ts\n\t * // Creates backward selection.\n\t * const selection = new DocumentSelection( range, { backward: true } );\n\t * ```\n\t *\n\t * Fake selection does not render as browser native selection over selected elements and is hidden to the user.\n\t * This way, no native selection UI artifacts are displayed to the user and selection over elements can be\n\t * represented in other way, for example by applying proper CSS class.\n\t *\n\t * Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM\n\t * (and be properly handled by screen readers).\n\t *\n\t * ```ts\n\t * // Creates fake selection with label.\n\t * const selection = new DocumentSelection( range, { fake: true, label: 'foo' } );\n\t * ```\n\t *\n\t * See also: {@link #constructor:NODE_OFFSET `constructor( node, placeOrOffset, options )`}.\n\t *\n\t * @label SELECTABLE\n\t */\n\tpublic constructor( selectable?: Exclude<Selectable, Node>, options?: SelectionOptions );\n\n\tconstructor( ...args: ConstructorParameters<typeof Selection> ) {\n\t\tsuper();\n\n\t\tthis._selection = new Selection();\n\n\t\t// Delegate change event to be fired on DocumentSelection instance.\n\t\tthis._selection.delegate( 'change' ).to( this );\n\n\t\t// Set selection data.\n\t\tif ( args.length ) {\n\t\t\tthis._selection.setTo( ...args );\n\t\t}\n\t}\n\n\t/**\n\t * Returns true if selection instance is marked as `fake`.\n\t *\n\t * @see #_setTo\n\t */\n\tpublic get isFake(): boolean {\n\t\treturn this._selection.isFake;\n\t}\n\n\t/**\n\t * Returns fake selection label.\n\t *\n\t * @see #_setTo\n\t */\n\tpublic get fakeSelectionLabel(): string {\n\t\treturn this._selection.fakeSelectionLabel;\n\t}\n\n\t/**\n\t * Selection anchor. Anchor may be described as a position where the selection starts. Together with\n\t * {@link #focus focus} they define the direction of selection, which is important\n\t * when expanding/shrinking selection. Anchor is always the start or end of the most recent added range.\n\t * It may be a bit unintuitive when there are multiple ranges in selection.\n\t *\n\t * @see #focus\n\t */\n\tpublic get anchor(): Position | null {\n\t\treturn this._selection.anchor;\n\t}\n\n\t/**\n\t * Selection focus. Focus is a position where the selection ends.\n\t *\n\t * @see #anchor\n\t */\n\tpublic get focus(): Position | null {\n\t\treturn this._selection.focus;\n\t}\n\n\t/**\n\t * Returns whether the selection is collapsed. Selection is collapsed when there is exactly one range which is\n\t * collapsed.\n\t */\n\tpublic get isCollapsed(): boolean {\n\t\treturn this._selection.isCollapsed;\n\t}\n\n\t/**\n\t * Returns number of ranges in selection.\n\t */\n\tpublic get rangeCount(): number {\n\t\treturn this._selection.rangeCount;\n\t}\n\n\t/**\n\t * Specifies whether the {@link #focus} precedes {@link #anchor}.\n\t */\n\tpublic get isBackward(): boolean {\n\t\treturn this._selection.isBackward;\n\t}\n\n\t/**\n\t * {@link module:engine/view/editableelement~EditableElement EditableElement} instance that contains this selection, or `null`\n\t * if the selection is not inside an editable element.\n\t */\n\tpublic get editableElement(): EditableElement | null {\n\t\treturn this._selection.editableElement;\n\t}\n\n\t/**\n\t * Used for the compatibility with the {@link module:engine/view/selection~Selection#isEqual} method.\n\t *\n\t * @internal\n\t */\n\tpublic get _ranges(): Array<Range> {\n\t\treturn ( this._selection as any )._ranges;\n\t}\n\n\t/**\n\t * Returns an iterable that contains copies of all ranges added to the selection.\n\t */\n\tpublic* getRanges(): IterableIterator<Range> {\n\t\tyield* this._selection.getRanges();\n\t}\n\n\t/**\n\t * Returns copy of the first range in the selection. First range is the one which\n\t * {@link module:engine/view/range~Range#start start} position {@link module:engine/view/position~Position#isBefore is before} start\n\t * position of all other ranges (not to confuse with the first range added to the selection).\n\t * Returns `null` if no ranges are added to selection.\n\t */\n\tpublic getFirstRange(): Range | null {\n\t\treturn this._selection.getFirstRange();\n\t}\n\n\t/**\n\t * Returns copy of the last range in the selection. Last range is the one which {@link module:engine/view/range~Range#end end}\n\t * position {@link module:engine/view/position~Position#isAfter is after} end position of all other ranges (not to confuse\n\t * with the last range added to the selection). Returns `null` if no ranges are added to selection.\n\t */\n\tpublic getLastRange(): Range | null {\n\t\treturn this._selection.getLastRange();\n\t}\n\n\t/**\n\t * Returns copy of the first position in the selection. First position is the position that\n\t * {@link module:engine/view/position~Position#isBefore is before} any other position in the selection ranges.\n\t * Returns `null` if no ranges are added to selection.\n\t */\n\tpublic getFirstPosition(): Position | null {\n\t\treturn this._selection.getFirstPosition();\n\t}\n\n\t/**\n\t * Returns copy of the last position in the selection. Last position is the position that\n\t * {@link module:engine/view/position~Position#isAfter is after} any other position in the selection ranges.\n\t * Returns `null` if no ranges are added to selection.\n\t */\n\tpublic getLastPosition(): Position | null {\n\t\treturn this._selection.getLastPosition();\n\t}\n\n\t/**\n\t * Returns the selected element. {@link module:engine/view/element~Element Element} is considered as selected if there is only\n\t * one range in the selection, and that range contains exactly one element.\n\t * Returns `null` if there is no selected element.\n\t */\n\tpublic getSelectedElement(): Element | null {\n\t\treturn this._selection.getSelectedElement();\n\t}\n\n\t/**\n\t * Checks whether, this selection is equal to given selection. Selections are equal if they have same directions,\n\t * same number of ranges and all ranges from one selection equal to a range from other selection.\n\t *\n\t * @param otherSelection Selection to compare with.\n\t * @returns `true` if selections are equal, `false` otherwise.\n\t */\n\tpublic isEqual( otherSelection: Selection | DocumentSelection ): boolean {\n\t\treturn this._selection.isEqual( otherSelection );\n\t}\n\n\t/**\n\t * Checks whether this selection is similar to given selection. Selections are similar if they have same directions, same\n\t * number of ranges, and all {@link module:engine/view/range~Range#getTrimmed trimmed} ranges from one selection are\n\t * equal to any trimmed range from other selection.\n\t *\n\t * @param otherSelection Selection to compare with.\n\t * @returns `true` if selections are similar, `false` otherwise.\n\t */\n\tpublic isSimilar( otherSelection: Selection | DocumentSelection ): boolean {\n\t\treturn this._selection.isSimilar( otherSelection );\n\t}\n\n\t/**\n\t * Sets this selection's ranges and direction to the specified location based on the given\n\t * {@link module:engine/view/selection~Selectable selectable}.\n\t *\n\t * ```ts\n\t * // Sets selection to the given range.\n\t * const range = writer.createRange( start, end );\n\t * documentSelection._setTo( range );\n\t *\n\t * // Sets selection to given ranges.\n\t * const ranges = [ writer.createRange( start1, end2 ), writer.createRange( start2, end2 ) ];\n\t * documentSelection._setTo( range );\n\t *\n\t * // Sets selection to the other selection.\n\t * const otherSelection = writer.createSelection();\n\t * documentSelection._setTo( otherSelection );\n\t *\n\t * // Sets collapsed selection at the given position.\n\t * const position = writer.createPositionAt( root, offset );\n\t * documentSelection._setTo( position );\n\t *\n\t * // Sets collapsed selection at the position of given item and offset.\n\t * documentSelection._setTo( paragraph, offset );\n\t * ```\n\t *\n\t * Creates a range inside an {@link module:engine/view/element~Element element} which starts before the first child of\n\t * that element and ends after the last child of that element.\n\t *\n\t * ```ts\n\t * documentSelection._setTo( paragraph, 'in' );\n\t * ```\n\t *\n\t * Creates a range on an {@link module:engine/view/item~Item item} which starts before the item and ends just after the item.\n\t *\n\t * ```ts\n\t * documentSelection._setTo( paragraph, 'on' );\n\t *\n\t * // Clears selection. Removes all ranges.\n\t * documentSelection._setTo( null );\n\t * ```\n\t *\n\t * `Selection#_setTo()` method allow passing additional options (`backward`, `fake` and `label`) as the last argument.\n\t *\n\t * ```ts\n\t * // Sets selection as backward.\n\t * documentSelection._setTo( range, { backward: true } );\n\t * ```\n\t *\n\t * Fake selection does not render as browser native selection over selected elements and is hidden to the user.\n\t * This way, no native selection UI artifacts are displayed to the user and selection over elements can be\n\t * represented in other way, for example by applying proper CSS class.\n\t *\n\t * Additionally fake's selection label can be provided. It will be used to des cribe fake selection in DOM\n\t * (and be properly handled by screen readers).\n\t *\n\t * ```ts\n\t * // Creates fake selection with label.\n\t * documentSelection._setTo( range, { fake: true, label: 'foo' } );\n\t * ```\n\t *\n\t * @internal\n\t * @fires change\n\t */\n\tpublic _setTo( ...args: Parameters<Selection[ 'setTo' ]> ): void {\n\t\tthis._selection.setTo( ...args );\n\t}\n\n\t/**\n\t * Moves {@link #focus} to the specified location.\n\t *\n\t * The location can be specified in the same form as {@link module:engine/view/view~View#createPositionAt view.createPositionAt()}\n\t * parameters.\n\t *\n\t * @internal\n\t * @fires change\n\t * @param offset Offset or one of the flags. Used only when first parameter is a {@link module:engine/view/item~Item view item}.\n\t */\n\tpublic _setFocus( itemOrPosition: Item | Position, offset?: PositionOffset ): void {\n\t\tthis._selection.setFocus( itemOrPosition, offset );\n\t}\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nDocumentSelection.prototype.is = function( type: string ): boolean {\n\treturn type === 'selection' ||\n\t\ttype == 'documentSelection' ||\n\t\ttype == 'view:selection' ||\n\t\ttype == 'view:documentSelection';\n};\n\n/**\n * Fired whenever selection ranges are changed through {@link ~DocumentSelection Selection API}.\n *\n * @eventName ~DocumentSelection#change\n */\nexport type ViewDocumentSelectionChangeEvent = ViewSelectionChangeEvent;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/bubblingeventinfo\n */\n\nimport { EventInfo } from '@ckeditor/ckeditor5-utils';\nimport type Document from '../document';\nimport type Node from '../node';\nimport type Range from '../range';\n\n/**\n * The event object passed to bubbling event callbacks. It is used to provide information about the event as well as a tool to\n * manipulate it.\n */\nexport default class BubblingEventInfo<TName extends string = string, TReturn = unknown> extends EventInfo<TName, TReturn> {\n\t/**\n\t * The view range that the bubbling should start from.\n\t */\n\tpublic readonly startRange: Range;\n\n\t/**\n\t * The current event phase.\n\t */\n\tprivate _eventPhase: EventPhase;\n\n\t/**\n\t * The current bubbling target.\n\t */\n\tprivate _currentTarget: Document | Node | null;\n\n\t/**\n\t * @param source The emitter.\n\t * @param name The event name.\n\t * @param startRange The view range that the bubbling should start from.\n\t */\n\tconstructor( source: object, name: TName, startRange: Range ) {\n\t\tsuper( source, name );\n\n\t\tthis.startRange = startRange;\n\t\tthis._eventPhase = 'none';\n\t\tthis._currentTarget = null;\n\t}\n\n\t/**\n\t * The current event phase.\n\t */\n\tpublic get eventPhase(): EventPhase {\n\t\treturn this._eventPhase;\n\t}\n\n\t/**\n\t * The current bubbling target.\n\t */\n\tpublic get currentTarget(): Document | Node | null {\n\t\treturn this._currentTarget;\n\t}\n}\n\n/**\n * The phase the event is in.\n */\nexport type EventPhase = 'none' | 'capturing' | 'atTarget' | 'bubbling';\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/bubblingemittermixin\n */\n\nimport {\n\tCKEditorError,\n\tEmitterMixin,\n\tEventInfo,\n\ttoArray,\n\ttype ArrayOrItem,\n\ttype Emitter,\n\ttype GetEventInfo,\n\ttype GetNameOrEventInfo,\n\ttype BaseEvent,\n\ttype CallbackOptions,\n\ttype Constructor,\n\ttype Mixed\n} from '@ckeditor/ckeditor5-utils';\n\nimport BubblingEventInfo, { type EventPhase } from './bubblingeventinfo';\nimport type Document from '../document';\nimport type Node from '../node';\nimport type Range from '../range';\nimport type Element from '../element';\nimport type DocumentSelection from '../documentselection';\n\nconst contextsSymbol = Symbol( 'bubbling contexts' );\n\n/**\n * Bubbling emitter mixin for the view document as described in the {@link ~BubblingEmitter} interface.\n *\n * This function creates a class that inherits from the provided `base` and implements `Emitter` interface.\n * The base class must implement {@link module:utils/emittermixin~Emitter} interface.\n *\n * ```ts\n * class BaseClass extends EmitterMixin() {\n * \t// ...\n * }\n *\n * class MyClass extends BubblingEmitterMixin( BaseClass ) {\n * \t// This class derives from `BaseClass` and implements the `BubblingEmitter` interface.\n * }\n * ```\n */\nexport default function BubblingEmitterMixin<Base extends Constructor<Emitter>>( base: Base ): Mixed<Base, BubblingEmitter> {\n\tabstract class Mixin extends base implements BubblingEmitter {\n\t\tpublic abstract get selection(): DocumentSelection;\n\n\t\tpublic override fire<TEvent extends BaseEvent>(\n\t\t\teventOrInfo: GetNameOrEventInfo<TEvent>,\n\t\t\t...eventArgs: TEvent[ 'args' ]\n\t\t): GetEventInfo<TEvent>[ 'return' ] {\n\t\t\ttry {\n\t\t\t\tconst eventInfo = eventOrInfo instanceof EventInfo ? eventOrInfo : new EventInfo( this, eventOrInfo );\n\t\t\t\tconst eventContexts = getBubblingContexts( this );\n\n\t\t\t\tif ( !eventContexts.size ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tupdateEventInfo( eventInfo, 'capturing', this );\n\n\t\t\t\t// The capture phase of the event.\n\t\t\t\tif ( fireListenerFor( eventContexts, '$capture', eventInfo, ...eventArgs ) ) {\n\t\t\t\t\treturn eventInfo.return;\n\t\t\t\t}\n\n\t\t\t\tconst startRange = ( eventInfo as BubblingEventInfo ).startRange || this.selection.getFirstRange();\n\t\t\t\tconst selectedElement = startRange ? startRange.getContainedElement() : null;\n\t\t\t\tconst isCustomContext = selectedElement ? Boolean( getCustomContext( eventContexts, selectedElement ) ) : false;\n\n\t\t\t\tlet node: Node | null = selectedElement || getDeeperRangeParent( startRange );\n\n\t\t\t\tupdateEventInfo( eventInfo, 'atTarget', node );\n\n\t\t\t\t// For the not yet bubbling event trigger for $text node if selection can be there and it's not a custom context selected.\n\t\t\t\tif ( !isCustomContext ) {\n\t\t\t\t\tif ( fireListenerFor( eventContexts, '$text', eventInfo, ...eventArgs ) ) {\n\t\t\t\t\t\treturn eventInfo.return;\n\t\t\t\t\t}\n\n\t\t\t\t\tupdateEventInfo( eventInfo, 'bubbling', node );\n\t\t\t\t}\n\n\t\t\t\twhile ( node ) {\n\t\t\t\t\t// Root node handling.\n\t\t\t\t\tif ( node.is( 'rootElement' ) ) {\n\t\t\t\t\t\tif ( fireListenerFor( eventContexts, '$root', eventInfo, ...eventArgs ) ) {\n\t\t\t\t\t\t\treturn eventInfo.return;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Element node handling.\n\t\t\t\t\telse if ( node.is( 'element' ) ) {\n\t\t\t\t\t\tif ( fireListenerFor( eventContexts, node.name, eventInfo, ...eventArgs ) ) {\n\t\t\t\t\t\t\treturn eventInfo.return;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check custom contexts (i.e., a widget).\n\t\t\t\t\tif ( fireListenerFor( eventContexts, node, eventInfo, ...eventArgs ) ) {\n\t\t\t\t\t\treturn eventInfo.return;\n\t\t\t\t\t}\n\n\t\t\t\t\tnode = node.parent as Node;\n\n\t\t\t\t\tupdateEventInfo( eventInfo, 'bubbling', node );\n\t\t\t\t}\n\n\t\t\t\tupdateEventInfo( eventInfo, 'bubbling', this );\n\n\t\t\t\t// Document context.\n\t\t\t\tfireListenerFor( eventContexts, '$document', eventInfo, ...eventArgs );\n\n\t\t\t\treturn eventInfo.return;\n\t\t\t} catch ( err: any ) {\n\t\t\t\t// @if CK_DEBUG // throw err;\n\t\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\t\tCKEditorError.rethrowUnexpectedError( err, this );\n\t\t\t}\n\t\t}\n\n\t\tpublic _addEventListener(\n\t\t\tthis: Document,\n\t\t\tevent: string,\n\t\t\tcallback: ( ev: EventInfo, ...args: Array<any> ) => void,\n\t\t\toptions: BubblingCallbackOptions\n\t\t) {\n\t\t\tconst contexts = toArray( options.context || '$document' );\n\t\t\tconst eventContexts = getBubblingContexts( this );\n\n\t\t\tfor ( const context of contexts ) {\n\t\t\t\tlet emitter = eventContexts.get( context );\n\n\t\t\t\tif ( !emitter ) {\n\t\t\t\t\temitter = new ( EmitterMixin() )();\n\t\t\t\t\teventContexts.set( context, emitter! );\n\t\t\t\t}\n\n\t\t\t\tthis.listenTo( emitter!, event, callback, options );\n\t\t\t}\n\t\t}\n\n\t\tpublic _removeEventListener( this: Document, event: string, callback: Function ): void {\n\t\t\tconst eventContexts = getBubblingContexts( this );\n\n\t\t\tfor ( const emitter of eventContexts.values() ) {\n\t\t\t\tthis.stopListening( emitter, event, callback );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn Mixin as any;\n}\n\n// Backward compatibility with `mix`.\n{\n\tconst mixin = ( BubblingEmitterMixin as any )( Object );\n\n\t[ 'fire', '_addEventListener', '_removeEventListener' ].forEach( key => {\n\t\t( BubblingEmitterMixin as any )[ key ] = mixin.prototype[ key ];\n\t} );\n}\n\n/**\n * Update the event info bubbling fields.\n *\n * @param eventInfo The event info object to update.\n * @param eventPhase The current event phase.\n * @param currentTarget The current bubbling target.\n */\nfunction updateEventInfo(\n\teventInfo: EventInfo,\n\teventPhase: EventPhase,\n\tcurrentTarget: unknown\n) {\n\tif ( eventInfo instanceof BubblingEventInfo ) {\n\t\t( eventInfo as any )._eventPhase = eventPhase;\n\t\t( eventInfo as any )._currentTarget = currentTarget;\n\t}\n}\n\n/**\n * Fires the listener for the specified context. Returns `true` if event was stopped.\n *\n * @param eventInfo The `EventInfo` object.\n * @param eventArgs Additional arguments to be passed to the callbacks.\n * @returns True if event stop was called.\n */\nfunction fireListenerFor(\n\teventContexts: BubblingEventContexts,\n\tcontext: string | Node,\n\teventInfo: EventInfo,\n\t...eventArgs: Array<unknown>\n) {\n\tconst emitter = typeof context == 'string' ? eventContexts.get( context ) : getCustomContext( eventContexts, context );\n\n\tif ( !emitter ) {\n\t\treturn false;\n\t}\n\n\temitter.fire( eventInfo, ...eventArgs );\n\n\treturn eventInfo.stop.called;\n}\n\n/**\n * Returns an emitter for a specified view node.\n */\nfunction getCustomContext( eventContexts: BubblingEventContexts, node: Node ): Emitter | null {\n\tfor ( const [ context, emitter ] of eventContexts ) {\n\t\tif ( typeof context == 'function' && context( node ) ) {\n\t\t\treturn emitter;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns bubbling contexts map for the source (emitter).\n */\nfunction getBubblingContexts( source: { [ x: string ]: any; [ contextsSymbol ]?: BubblingEventContexts } ) {\n\tif ( !source[ contextsSymbol ] ) {\n\t\tsource[ contextsSymbol ] = new Map();\n\t}\n\n\treturn source[ contextsSymbol ];\n}\n\n/**\n * Returns the deeper parent element for the range.\n */\nfunction getDeeperRangeParent( range: Range ): Node | null {\n\tif ( !range ) {\n\t\treturn null;\n\t}\n\n\tconst startParent = range.start.parent as Element;\n\tconst endParent = range.end.parent as Element;\n\n\tconst startPath = startParent.getPath();\n\tconst endPath = endParent.getPath();\n\n\treturn startPath.length > endPath.length ? startParent : endParent;\n}\n\n/**\n * Bubbling emitter for the view document.\n *\n * Bubbling emitter is triggering events in the context of specified {@link module:engine/view/element~Element view element} name,\n * predefined `'$text'`, `'$root'`, `'$document'` and `'$capture'` contexts, and context matchers provided as a function.\n *\n * Before bubbling starts, listeners for `'$capture'` context are triggered. Then the bubbling starts from the deeper selection\n * position (by firing event on the `'$text'` context) and propagates the view document tree up to the `'$root'` and finally\n * the listeners at `'$document'` context are fired (this is the default context).\n *\n * Examples:\n *\n * ```ts\n * // Listeners registered in the context of the view element names:\n * this.listenTo( viewDocument, 'enter', ( evt, data ) => {\n * \t// ...\n * }, { context: 'blockquote' } );\n *\n * this.listenTo( viewDocument, 'enter', ( evt, data ) => {\n * \t// ...\n * }, { context: 'li' } );\n *\n * // Listeners registered in the context of the '$text' and '$root' nodes.\n * this.listenTo( view.document, 'arrowKey', ( evt, data ) => {\n * \t// ...\n * }, { context: '$text', priority: 'high' } );\n *\n * this.listenTo( view.document, 'arrowKey', ( evt, data ) => {\n * \t// ...\n * }, { context: '$root' } );\n *\n * // Listeners registered in the context of custom callback function.\n * this.listenTo( view.document, 'arrowKey', ( evt, data ) => {\n * \t// ...\n * }, { context: isWidget } );\n *\n * this.listenTo( view.document, 'arrowKey', ( evt, data ) => {\n * \t// ...\n * }, { context: isWidget, priority: 'high' } );\n * ```\n *\n * Example flow for selection in text:\n *\n * ```xml\n * <blockquote><p>Foo[]bar</p></blockquote>\n * ```\n *\n * Fired events on contexts:\n * 1. `'$capture'`\n * 2. `'$text'`\n * 3. `'p'`\n * 4. `'blockquote'`\n * 5. `'$root'`\n * 6. `'$document'`\n *\n * Example flow for selection on element (i.e., Widget):\n *\n * ```xml\n * <blockquote><p>Foo[<widget/>]bar</p></blockquote>\n * ```\n *\n * Fired events on contexts:\n * 1. `'$capture'`\n * 2. *widget* (custom matcher)\n * 3. `'p'`\n * 4. `'blockquote'`\n * 5. `'$root'`\n * 6. `'$document'`\n *\n * There could be multiple listeners registered for the same context and at different priority levels:\n *\n * ```html\n * <p>Foo[]bar</p>\n * ```\n *\n * 1. `'$capture'` at priorities:\n * 1. `'highest'`\n * 2. `'high'`\n * 3. `'normal'`\n * 4. `'low'`\n * 5. `'lowest'`\n * 2. `'$text'` at priorities:\n * 1. `'highest'`\n * 2. `'high'`\n * 3. `'normal'`\n * 4. `'low'`\n * 5. `'lowest'`\n * 3. `'p'` at priorities:\n * 1. `'highest'`\n * 2. `'high'`\n * 3. `'normal'`\n * 4. `'low'`\n * 5. `'lowest'`\n * 4. `'$root'` at priorities:\n * 1. `'highest'`\n * 2. `'high'`\n * 3. `'normal'`\n * 4. `'low'`\n * 5. `'lowest'`\n * 5. `'$document'` at priorities:\n * 1. `'highest'`\n * 2. `'high'`\n * 3. `'normal'`\n * 4. `'low'`\n * 5. `'lowest'`\n */\nexport type BubblingEmitter = Emitter;\n\n/**\n * A context matcher function.\n *\n * Should return true for nodes that that match the custom context.\n */\nexport type BubblingEventContextFunction = ( node: Node ) => boolean;\n\n/**\n * Helper type that allows describing bubbling event. Extends `TEvent` so that:\n *\n * * the event is called with {@link module:engine/view/observer/bubblingeventinfo~BubblingEventInfo}`\n * instead of {@link module:utils/eventinfo~EventInfo}, and\n * * {@link ~BubblingCallbackOptions} can be specified as additional options.\n *\n * @typeParam TEvent The event description to extend.\n */\nexport type BubblingEvent<TEvent extends BaseEvent> = TEvent & {\n\teventInfo: BubblingEventInfo<TEvent[ 'name' ], ( TEvent extends { return: infer TReturn } ? TReturn : unknown )>;\n\tcallbackOptions: BubblingCallbackOptions;\n};\n\n/**\n * Additional options for registering a callback.\n */\nexport interface BubblingCallbackOptions extends CallbackOptions {\n\n\t/**\n\t * Specifies the context in which the event should be triggered to call the callback.\n\t *\n\t * @see ~BubblingEmitter\n\t */\n\tcontext?: ArrayOrItem<string | BubblingEventContextFunction>;\n}\n\ntype BubblingEventContexts = Map<string | BubblingEventContextFunction, Emitter>;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/document\n */\n\nimport DocumentSelection from './documentselection';\nimport BubblingEmitterMixin from './observer/bubblingemittermixin';\n\nimport { Collection, ObservableMixin } from '@ckeditor/ckeditor5-utils';\n\nimport type { StylesProcessor } from './stylesmap';\nimport type RootEditableElement from './rooteditableelement';\nimport type DowncastWriter from './downcastwriter';\n\n// @if CK_DEBUG_ENGINE // const { logDocument } = require( '../dev-utils/utils' );\n\n/**\n * Document class creates an abstract layer over the content editable area, contains a tree of view elements and\n * {@link module:engine/view/documentselection~DocumentSelection view selection} associated with this document.\n */\nexport default class Document extends BubblingEmitterMixin( ObservableMixin() ) {\n\t/**\n\t * Selection done on this document.\n\t */\n\tpublic readonly selection: DocumentSelection;\n\n\t/**\n\t * Roots of the view tree. Collection of the {@link module:engine/view/element~Element view elements}.\n\t *\n\t * View roots are created as a result of binding between {@link module:engine/view/document~Document#roots} and\n\t * {@link module:engine/model/document~Document#roots} and this is handled by\n\t * {@link module:engine/controller/editingcontroller~EditingController}, so to create view root we need to create\n\t * model root using {@link module:engine/model/document~Document#createRoot}.\n\t */\n\tpublic readonly roots: Collection<RootEditableElement>;\n\n\t/**\n\t * The styles processor instance used by this document when normalizing styles.\n\t */\n\tpublic readonly stylesProcessor: StylesProcessor;\n\n\t/**\n\t * Defines whether document is in read-only mode.\n\t *\n\t * When document is read-ony then all roots are read-only as well and caret placed inside this root is hidden.\n\t *\n\t * @observable\n\t */\n\tdeclare public isReadOnly: boolean;\n\n\t/**\n\t * True if document is focused.\n\t *\n\t * This property is updated by the {@link module:engine/view/observer/focusobserver~FocusObserver}.\n\t * If the {@link module:engine/view/observer/focusobserver~FocusObserver} is disabled this property will not change.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public isFocused: boolean;\n\n\t/**\n\t * `true` while the user is making a selection in the document (e.g. holding the mouse button and moving the cursor).\n\t * When they stop selecting, the property goes back to `false`.\n\t *\n\t * This property is updated by the {@link module:engine/view/observer/selectionobserver~SelectionObserver}.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public isSelecting: boolean;\n\n\t/**\n\t * True if composition is in progress inside the document.\n\t *\n\t * This property is updated by the {@link module:engine/view/observer/compositionobserver~CompositionObserver}.\n\t * If the {@link module:engine/view/observer/compositionobserver~CompositionObserver} is disabled this property will not change.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public isComposing: boolean;\n\n\t/**\n\t * Post-fixer callbacks registered to the view document.\n\t */\n\tprivate readonly _postFixers = new Set<ViewDocumentPostFixer>();\n\n\t/**\n\t * Creates a Document instance.\n\t *\n\t * @param stylesProcessor The styles processor instance.\n\t */\n\tconstructor( stylesProcessor: StylesProcessor ) {\n\t\tsuper();\n\n\t\tthis.selection = new DocumentSelection();\n\t\tthis.roots = new Collection( { idProperty: 'rootName' } );\n\t\tthis.stylesProcessor = stylesProcessor;\n\n\t\tthis.set( 'isReadOnly', false );\n\t\tthis.set( 'isFocused', false );\n\t\tthis.set( 'isSelecting', false );\n\t\tthis.set( 'isComposing', false );\n\t}\n\n\t/**\n\t * Gets a {@link module:engine/view/document~Document#roots view root element} with the specified name. If the name is not\n\t * specific \"main\" root is returned.\n\t *\n\t * @param name Name of the root.\n\t * @returns The view root element with the specified name or null when there is no root of given name.\n\t */\n\tpublic getRoot( name: string = 'main' ): RootEditableElement | null {\n\t\treturn this.roots.get( name );\n\t}\n\n\t/**\n\t * Allows registering post-fixer callbacks. A post-fixers mechanism allows to update the view tree just before it is rendered\n\t * to the DOM.\n\t *\n\t * Post-fixers are executed right after all changes from the outermost change block were applied but\n\t * before the {@link module:engine/view/view~View#event:render render event} is fired. If a post-fixer callback made\n\t * a change, it should return `true`. When this happens, all post-fixers are fired again to check if something else should\n\t * not be fixed in the new document tree state.\n\t *\n\t * View post-fixers are useful when you want to apply some fixes whenever the view structure changes. Keep in mind that\n\t * changes executed in a view post-fixer should not break model-view mapping.\n\t *\n\t * The types of changes which should be safe:\n\t *\n\t * * adding or removing attribute from elements,\n\t * * changes inside of {@link module:engine/view/uielement~UIElement UI elements},\n\t * * {@link module:engine/controller/editingcontroller~EditingController#reconvertItem marking some of the model elements to be\n\t * re-converted}.\n\t *\n\t * Try to avoid changes which touch view structure:\n\t *\n\t * * you should not add or remove nor wrap or unwrap any view elements,\n\t * * you should not change the editor data model in a view post-fixer.\n\t *\n\t * As a parameter, a post-fixer callback receives a {@link module:engine/view/downcastwriter~DowncastWriter downcast writer}.\n\t *\n\t * Typically, a post-fixer will look like this:\n\t *\n\t * ```ts\n\t * editor.editing.view.document.registerPostFixer( writer => {\n\t * \tif ( checkSomeCondition() ) {\n\t * \t\twriter.doSomething();\n\t *\n\t * \t\t// Let other post-fixers know that something changed.\n\t * \t\treturn true;\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * Note that nothing happens right after you register a post-fixer (e.g. execute such a code in the console).\n\t * That is because adding a post-fixer does not execute it.\n\t * The post-fixer will be executed as soon as any change in the document needs to cause its rendering.\n\t * If you want to re-render the editor's view after registering the post-fixer then you should do it manually by calling\n\t * {@link module:engine/view/view~View#forceRender `view.forceRender()`}.\n\t *\n\t * If you need to register a callback which is executed when DOM elements are already updated,\n\t * use {@link module:engine/view/view~View#event:render render event}.\n\t */\n\tpublic registerPostFixer( postFixer: ViewDocumentPostFixer ): void {\n\t\tthis._postFixers.add( postFixer );\n\t}\n\n\t/**\n\t * Destroys this instance. Makes sure that all observers are destroyed and listeners removed.\n\t */\n\tpublic destroy(): void {\n\t\tthis.roots.map( root => root.destroy() );\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * Performs post-fixer loops. Executes post-fixer callbacks as long as none of them has done any changes to the model.\n\t *\n\t * @internal\n\t */\n\tpublic _callPostFixers( writer: DowncastWriter ): void {\n\t\tlet wasFixed = false;\n\n\t\tdo {\n\t\t\tfor ( const callback of this._postFixers ) {\n\t\t\t\twasFixed = callback( writer );\n\n\t\t\t\tif ( wasFixed ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} while ( wasFixed );\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public log( version: any ): void {\n\t// @if CK_DEBUG_ENGINE // \tlogDocument( this, version );\n\t// @if CK_DEBUG_ENGINE // }\n}\n\n/**\n * Document PostFixer.\n *\n * @see module:engine/view/document~Document#registerPostFixer\n */\nexport type ViewDocumentPostFixer = ( writer: DowncastWriter ) => boolean;\n\n/**\n * Enum representing type of the change.\n *\n * Possible values:\n *\n * * `children` - for child list changes,\n * * `attributes` - for element attributes changes,\n * * `text` - for text nodes changes.\n *\n * @typedef {String} module:engine/view/document~ChangeType\n */\nexport type ChangeType = 'children' | 'attributes' | 'text';\n\n/**\n * Event fired whenever document content layout changes. It is fired whenever content is\n * {@link module:engine/view/view~View#event:render rendered}, but should be also fired by observers in case of\n * other actions which may change layout, for instance when image loads.\n *\n * @eventName ~Document#layoutChanged\n */\nexport type ViewDocumentLayoutChangedEvent = {\n\tname: 'layoutChanged';\n\targs: [];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/attributeelement\n */\n\nimport Element, { type ElementAttributes } from './element';\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\n\nimport type DocumentFragment from './documentfragment';\nimport type Document from './document';\nimport type Node from './node';\n\n// Default attribute priority.\nconst DEFAULT_PRIORITY = 10;\n\n/**\n * Attribute elements are used to represent formatting elements in the view (think – `<b>`, `<span style=\"font-size: 2em\">`, etc.).\n * Most often they are created when downcasting model text attributes.\n *\n * Editing engine does not define a fixed HTML DTD. This is why a feature developer needs to choose between various\n * types (container element, {@link module:engine/view/attributeelement~AttributeElement attribute element},\n * {@link module:engine/view/emptyelement~EmptyElement empty element}, etc) when developing a feature.\n *\n * To create a new attribute element instance use the\n * {@link module:engine/view/downcastwriter~DowncastWriter#createAttributeElement `DowncastWriter#createAttributeElement()`} method.\n */\nexport default class AttributeElement extends Element {\n\tpublic static readonly DEFAULT_PRIORITY: number = DEFAULT_PRIORITY;\n\n\t/**\n\t * Element priority. Decides in what order elements are wrapped by {@link module:engine/view/downcastwriter~DowncastWriter}.\n\t *\n\t * @internal\n\t * @readonly\n\t */\n\tpublic _priority: number = DEFAULT_PRIORITY;\n\n\t/**\n\t * Element identifier. If set, it is used by {@link module:engine/view/element~Element#isSimilar},\n\t * and then two elements are considered similar if, and only if they have the same `_id`.\n\t *\n\t * @internal\n\t * @readonly\n\t */\n\tpublic _id: string | number | null = null;\n\n\t/**\n\t * Keeps all the attribute elements that have the same {@link module:engine/view/attributeelement~AttributeElement#id ids}\n\t * and still exist in the view tree.\n\t *\n\t * This property is managed by {@link module:engine/view/downcastwriter~DowncastWriter}.\n\t */\n\tprivate readonly _clonesGroup: Set<AttributeElement> | null = null;\n\n\t/**\n\t * Creates an attribute element.\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#createAttributeElement\n\t * @see module:engine/view/element~Element\n\t * @protected\n\t * @param document The document instance to which this element belongs.\n\t * @param name Node name.\n\t * @param attrs Collection of attributes.\n\t * @param children A list of nodes to be inserted into created element.\n\t */\n\tconstructor(\n\t\tdocument: Document,\n\t\tname: string,\n\t\tattrs?: ElementAttributes,\n\t\tchildren?: Node | Iterable<Node>\n\t) {\n\t\tsuper( document, name, attrs, children );\n\n\t\tthis.getFillerOffset = getFillerOffset;\n\t}\n\n\t/**\n\t * Element priority. Decides in what order elements are wrapped by {@link module:engine/view/downcastwriter~DowncastWriter}.\n\t */\n\tpublic get priority(): number {\n\t\treturn this._priority;\n\t}\n\n\t/**\n\t * Element identifier. If set, it is used by {@link module:engine/view/element~Element#isSimilar},\n\t * and then two elements are considered similar if, and only if they have the same `id`.\n\t */\n\tpublic get id(): string | number | null {\n\t\treturn this._id;\n\t}\n\n\t/**\n\t * Returns all {@link module:engine/view/attributeelement~AttributeElement attribute elements} that has the\n\t * same {@link module:engine/view/attributeelement~AttributeElement#id id} and are in the view tree (were not removed).\n\t *\n\t * Note: If this element has been removed from the tree, returned set will not include it.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError attribute-element-get-elements-with-same-id-no-id}\n\t * if this element has no `id`.\n\t *\n\t * @returns Set containing all the attribute elements\n\t * with the same `id` that were added and not removed from the view tree.\n\t */\n\tpublic getElementsWithSameId(): Set<AttributeElement> {\n\t\tif ( this.id === null ) {\n\t\t\t/**\n\t\t\t * Cannot get elements with the same id for an attribute element without id.\n\t\t\t *\n\t\t\t * @error attribute-element-get-elements-with-same-id-no-id\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'attribute-element-get-elements-with-same-id-no-id',\n\t\t\t\tthis\n\t\t\t);\n\t\t}\n\n\t\treturn new Set( this._clonesGroup );\n\t}\n\n\t/**\n\t * Checks if this element is similar to other element.\n\t *\n\t * If none of elements has set {@link module:engine/view/attributeelement~AttributeElement#id}, then both elements\n\t * should have the same name, attributes and priority to be considered as similar. Two similar elements can contain\n\t * different set of children nodes.\n\t *\n\t * If at least one element has {@link module:engine/view/attributeelement~AttributeElement#id} set, then both\n\t * elements have to have the same {@link module:engine/view/attributeelement~AttributeElement#id} value to be\n\t * considered similar.\n\t *\n\t * Similarity is important for {@link module:engine/view/downcastwriter~DowncastWriter}. For example:\n\t *\n\t * * two following similar elements can be merged together into one, longer element,\n\t * * {@link module:engine/view/downcastwriter~DowncastWriter#unwrap} checks similarity of passed element and processed element to\n\t * decide whether processed element should be unwrapped,\n\t * * etc.\n\t */\n\tpublic override isSimilar( otherElement: Element ): boolean {\n\t\t// If any element has an `id` set, just compare the ids.\n\t\tif ( this.id !== null || ( otherElement as any ).id !== null ) {\n\t\t\treturn this.id === ( otherElement as any ).id;\n\t\t}\n\n\t\treturn super.isSimilar( otherElement ) && this.priority == ( otherElement as any ).priority;\n\t}\n\n\t/**\n\t * Clones provided element with priority.\n\t *\n\t * @internal\n\t * @param deep If set to `true` clones element and all its children recursively. When set to `false`,\n\t * element will be cloned without any children.\n\t * @returns Clone of this element.\n\t */\n\tpublic override _clone( deep: boolean = false ): this {\n\t\tconst cloned = super._clone( deep );\n\n\t\t// Clone priority too.\n\t\tcloned._priority = this._priority;\n\n\t\t// And id too.\n\t\tcloned._id = this._id;\n\n\t\treturn cloned;\n\t}\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nAttributeElement.prototype.is = function( type: string, name?: string ): boolean {\n\tif ( !name ) {\n\t\treturn type === 'attributeElement' || type === 'view:attributeElement' ||\n\t\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\t\ttype === 'element' || type === 'view:element' ||\n\t\t\ttype === 'node' || type === 'view:node';\n\t} else {\n\t\treturn name === this.name && (\n\t\t\ttype === 'attributeElement' || type === 'view:attributeElement' ||\n\t\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\t\ttype === 'element' || type === 'view:element'\n\t\t);\n\t}\n};\n\n/**\n * Returns block {@link module:engine/view/filler~Filler filler} offset or `null` if block filler is not needed.\n *\n * @returns Block filler offset or `null` if block filler is not needed.\n */\nfunction getFillerOffset( this: AttributeElement ): number | null {\n\t// <b>foo</b> does not need filler.\n\tif ( nonUiChildrenCount( this ) ) {\n\t\treturn null;\n\t}\n\n\tlet element = this.parent;\n\n\t// <p><b></b></p> needs filler -> <p><b><br></b></p>\n\twhile ( element && element.is( 'attributeElement' ) ) {\n\t\tif ( nonUiChildrenCount( element ) > 1 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\telement = element.parent;\n\t}\n\n\tif ( !element || nonUiChildrenCount( element ) > 1 ) {\n\t\treturn null;\n\t}\n\n\t// Render block filler at the end of element (after all ui elements).\n\treturn this.childCount;\n}\n\n/**\n * Returns total count of children that are not {@link module:engine/view/uielement~UIElement UIElements}.\n */\nfunction nonUiChildrenCount( element: Element | DocumentFragment ): number {\n\treturn Array.from( element.getChildren() ).filter( element => !element.is( 'uiElement' ) ).length;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/emptyelement\n */\n\nimport Element, { type ElementAttributes } from './element';\nimport Node from './node';\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\n\nimport type Document from './document';\nimport type Item from './item';\n\n/**\n * Empty element class. It is used to represent elements that cannot contain any child nodes (for example `<img>` elements).\n *\n * To create a new empty element use the\n * {@link module:engine/view/downcastwriter~DowncastWriter#createEmptyElement `downcastWriter#createEmptyElement()`} method.\n */\nexport default class EmptyElement extends Element {\n\t/**\n\t * Creates new instance of EmptyElement.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-emptyelement-cannot-add` when third parameter is passed,\n\t * to inform that usage of EmptyElement is incorrect (adding child nodes to EmptyElement is forbidden).\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#createEmptyElement\n\t * @internal\n\t * @param document The document instance to which this element belongs.\n\t * @param name Node name.\n\t * @param attrs Collection of attributes.\n\t * @param children A list of nodes to be inserted into created element.\n\t */\n\tconstructor(\n\t\tdocument: Document,\n\t\tname: string,\n\t\tattributes?: ElementAttributes,\n\t\tchildren?: Node | Iterable<Node>\n\t) {\n\t\tsuper( document, name, attributes, children );\n\n\t\tthis.getFillerOffset = getFillerOffset;\n\t}\n\n\t/**\n\t * Overrides {@link module:engine/view/element~Element#_insertChild} method.\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-emptyelement-cannot-add` to prevent\n\t * adding any child nodes to EmptyElement.\n\t *\n\t * @internal\n\t */\n\tpublic override _insertChild( index: number, items: Item | Iterable<Item> ): number {\n\t\tif ( items && ( items instanceof Node || Array.from( items as Iterable<Item> ).length > 0 ) ) {\n\t\t\t/**\n\t\t\t * Cannot add children to {@link module:engine/view/emptyelement~EmptyElement}.\n\t\t\t *\n\t\t\t * @error view-emptyelement-cannot-add\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'view-emptyelement-cannot-add',\n\t\t\t\t[ this, items ]\n\t\t\t);\n\t\t}\n\n\t\treturn 0;\n\t}\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nEmptyElement.prototype.is = function( type: string, name?: string ): boolean {\n\tif ( !name ) {\n\t\treturn type === 'emptyElement' || type === 'view:emptyElement' ||\n\t\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\t\ttype === 'element' || type === 'view:element' ||\n\t\t\ttype === 'node' || type === 'view:node';\n\t} else {\n\t\treturn name === this.name && (\n\t\t\ttype === 'emptyElement' || type === 'view:emptyElement' ||\n\t\t\ttype === 'element' || type === 'view:element'\n\t\t);\n\t}\n};\n\n/**\n * Returns `null` because block filler is not needed for EmptyElements.\n */\nfunction getFillerOffset() {\n\treturn null;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/uielement\n */\n\nimport Element, { type ElementAttributes } from './element';\nimport Node from './node';\nimport { CKEditorError, keyCodes } from '@ckeditor/ckeditor5-utils';\n\nimport type View from './view';\nimport type Document from './document';\nimport type DomConverter from './domconverter';\nimport type Item from './item';\nimport type { ViewDocumentArrowKeyEvent } from './observer/arrowkeysobserver';\nimport type { KeyEventData } from './observer/keyobserver';\n\ntype DomDocument = globalThis.Document;\ntype DomElement = globalThis.HTMLElement;\n\n/**\n * UI element class. It should be used to represent editing UI which needs to be injected into the editing view\n * If possible, you should keep your UI outside the editing view. However, if that is not possible,\n * UI elements can be used.\n *\n * How a UI element is rendered is in your control (you pass a callback to\n * {@link module:engine/view/downcastwriter~DowncastWriter#createUIElement `downcastWriter#createUIElement()`}).\n * The editor will ignore your UI element – the selection cannot be placed in it, it is skipped (invisible) when\n * the user modifies the selection by using arrow keys and the editor does not listen to any mutations which\n * happen inside your UI elements.\n *\n * The limitation is that you cannot convert a model element to a UI element. UI elements need to be\n * created for {@link module:engine/model/markercollection~Marker markers} or as additinal elements\n * inside normal {@link module:engine/view/containerelement~ContainerElement container elements}.\n *\n * To create a new UI element use the\n * {@link module:engine/view/downcastwriter~DowncastWriter#createUIElement `downcastWriter#createUIElement()`} method.\n */\nexport default class UIElement extends Element {\n\t/**\n\t * Creates new instance of UIElement.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-uielement-cannot-add` when third parameter is passed,\n\t * to inform that usage of UIElement is incorrect (adding child nodes to UIElement is forbidden).\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#createUIElement\n\t * @internal\n\t * @param document The document instance to which this element belongs.\n\t * @param name Node name.\n\t * @param attrs Collection of attributes.\n\t * @param children A list of nodes to be inserted into created element.\n\t */\n\tconstructor(\n\t\tdocument: Document,\n\t\tname: string,\n\t\tattrs?: ElementAttributes,\n\t\tchildren?: Node | Iterable<Node>\n\t) {\n\t\tsuper( document, name, attrs, children );\n\n\t\tthis.getFillerOffset = getFillerOffset;\n\t}\n\n\t/**\n\t * Overrides {@link module:engine/view/element~Element#_insertChild} method.\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-uielement-cannot-add` to prevent adding any child nodes\n\t * to UIElement.\n\t *\n\t * @internal\n\t */\n\tpublic override _insertChild( index: number, items: Item | Iterable<Item> ): number {\n\t\tif ( items && ( items instanceof Node || Array.from( items as Iterable<Item> ).length > 0 ) ) {\n\t\t\t/**\n\t\t\t * Cannot add children to {@link module:engine/view/uielement~UIElement}.\n\t\t\t *\n\t\t\t * @error view-uielement-cannot-add\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-uielement-cannot-add', [ this, items ] );\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\t/**\n\t * Renders this {@link module:engine/view/uielement~UIElement} to DOM. This method is called by\n\t * {@link module:engine/view/domconverter~DomConverter}.\n\t * Do not use inheritance to create custom rendering method, replace `render()` method instead:\n\t *\n\t * ```ts\n\t * const myUIElement = downcastWriter.createUIElement( 'span' );\n\t * myUIElement.render = function( domDocument, domConverter ) {\n\t * \tconst domElement = this.toDomElement( domDocument );\n\t *\n\t * \tdomConverter.setContentOf( domElement, '<b>this is ui element</b>' );\n\t *\n\t * \treturn domElement;\n\t * };\n\t * ```\n\t *\n\t * If changes in your UI element should trigger some editor UI update you should call\n\t * the {@link module:ui/editorui/editorui~EditorUI#update `editor.ui.update()`} method\n\t * after rendering your UI element.\n\t *\n\t * @param domConverter Instance of the DomConverter used to optimize the output.\n\t */\n\tpublic render( domDocument: DomDocument, domConverter: DomConverter ): DomElement {\n\t\t// Provide basic, default output.\n\t\treturn this.toDomElement( domDocument );\n\t}\n\n\t/**\n\t * Creates DOM element based on this view UIElement.\n\t * Note that each time this method is called new DOM element is created.\n\t */\n\tpublic toDomElement( domDocument: DomDocument ): DomElement {\n\t\tconst domElement = domDocument.createElement( this.name );\n\n\t\tfor ( const key of this.getAttributeKeys() ) {\n\t\t\tdomElement.setAttribute( key, this.getAttribute( key )! );\n\t\t}\n\n\t\treturn domElement;\n\t}\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nUIElement.prototype.is = function( type: string, name?: string ): boolean {\n\tif ( !name ) {\n\t\treturn type === 'uiElement' || type === 'view:uiElement' ||\n\t\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\t\ttype === 'element' || type === 'view:element' ||\n\t\t\ttype === 'node' || type === 'view:node';\n\t} else {\n\t\treturn name === this.name && (\n\t\t\ttype === 'uiElement' || type === 'view:uiElement' ||\n\t\t\ttype === 'element' || type === 'view:element'\n\t\t);\n\t}\n};\n\n/**\n * This function injects UI element handling to the given {@link module:engine/view/document~Document document}.\n *\n * A callback is added to {@link module:engine/view/document~Document#event:keydown document keydown event}.\n * The callback handles the situation when right arrow key is pressed and selection is collapsed before a UI element.\n * Without this handler, it would be impossible to \"jump over\" UI element using right arrow key.\n *\n * @param view View controller to which the quirks handling will be injected.\n */\nexport function injectUiElementHandling( view: View ): void {\n\tview.document.on<ViewDocumentArrowKeyEvent>( 'arrowKey', ( evt, data ) =>\n\t\tjumpOverUiElement( evt, data, view.domConverter ), { priority: 'low' } );\n}\n\n/**\n * Returns `null` because block filler is not needed for UIElements.\n */\nfunction getFillerOffset() {\n\treturn null;\n}\n\n/**\n * Selection cannot be placed in a `UIElement`. Whenever it is placed there, it is moved before it. This\n * causes a situation when it is impossible to jump over `UIElement` using right arrow key, because the selection\n * ends up in ui element (in DOM) and is moved back to the left. This handler fixes this situation.\n */\nfunction jumpOverUiElement( evt: unknown, data: KeyEventData, domConverter: DomConverter ) {\n\tif ( data.keyCode == keyCodes.arrowright ) {\n\t\tconst domSelection = data.domTarget.ownerDocument.defaultView!.getSelection()!;\n\t\tconst domSelectionCollapsed = domSelection.rangeCount == 1 && domSelection.getRangeAt( 0 ).collapsed;\n\n\t\t// Jump over UI element if selection is collapsed or shift key is pressed. These are the cases when selection would extend.\n\t\tif ( domSelectionCollapsed || data.shiftKey ) {\n\t\t\tconst domParent = domSelection.focusNode!;\n\t\t\tconst domOffset = domSelection.focusOffset;\n\n\t\t\tconst viewPosition = domConverter.domPositionToView( domParent, domOffset );\n\n\t\t\t// In case if dom element is not converted to view or is not mapped or something. Happens for example in some tests.\n\t\t\tif ( viewPosition === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Skip all following ui elements.\n\t\t\tlet jumpedOverAnyUiElement = false;\n\n\t\t\tconst nextViewPosition = viewPosition.getLastMatchingPosition( value => {\n\t\t\t\tif ( value.item.is( 'uiElement' ) ) {\n\t\t\t\t\t// Remember that there was at least one ui element.\n\t\t\t\t\tjumpedOverAnyUiElement = true;\n\t\t\t\t}\n\n\t\t\t\t// Jump over ui elements, jump over empty attribute elements, move up from inside of attribute element.\n\t\t\t\tif ( value.item.is( 'uiElement' ) || value.item.is( 'attributeElement' ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Don't jump over text or don't get out of container element.\n\t\t\t\treturn false;\n\t\t\t} );\n\n\t\t\t// If anything has been skipped, fix position.\n\t\t\t// This `if` could be possibly omitted but maybe it is better not to mess with DOM selection if not needed.\n\t\t\tif ( jumpedOverAnyUiElement ) {\n\t\t\t\tconst newDomPosition = domConverter.viewPositionToDom( nextViewPosition )!;\n\n\t\t\t\tif ( domSelectionCollapsed ) {\n\t\t\t\t\t// Selection was collapsed, so collapse it at further position.\n\t\t\t\t\tdomSelection.collapse( newDomPosition.parent, newDomPosition.offset );\n\t\t\t\t} else {\n\t\t\t\t\t// Selection was not collapse, so extend it instead of collapsing.\n\t\t\t\t\tdomSelection.extend( newDomPosition.parent, newDomPosition.offset );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\n\n/**\n * @module engine/view/rawelement\n */\n\nimport Element, { type ElementAttributes } from './element';\nimport Node from './node';\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\n\nimport type Document from './document';\nimport type DomConverter from './domconverter';\nimport type Item from './item';\n\ntype DomElement = globalThis.HTMLElement;\n\n/**\n * The raw element class.\n *\n * The raw elements work as data containers (\"wrappers\", \"sandboxes\") but their children are not managed or\n * even recognized by the editor. This encapsulation allows integrations to maintain custom DOM structures\n * in the editor content without, for instance, worrying about compatibility with other editor features.\n * Raw elements are a perfect tool for integration with external frameworks and data sources.\n *\n * Unlike {@link module:engine/view/uielement~UIElement UI elements}, raw elements act like real editor\n * content (similar to {@link module:engine/view/containerelement~ContainerElement} or\n * {@link module:engine/view/emptyelement~EmptyElement}), they are considered by the editor selection and\n * {@link module:widget/utils~toWidget they can work as widgets}.\n *\n * To create a new raw element, use the\n * {@link module:engine/view/downcastwriter~DowncastWriter#createRawElement `downcastWriter#createRawElement()`} method.\n */\nexport default class RawElement extends Element {\n\t/**\n\t * Creates a new instance of a raw element.\n\t *\n\t * Throws the `view-rawelement-cannot-add` {@link module:utils/ckeditorerror~CKEditorError CKEditorError} when the `children`\n\t * parameter is passed to inform that the usage of `RawElement` is incorrect (adding child nodes to `RawElement` is forbidden).\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#createRawElement\n\t * @internal\n\t * @param document The document instance to which this element belongs.\n\t * @param name Node name.\n\t * @param attrs Collection of attributes.\n\t * @param children A list of nodes to be inserted into created element.\n\t */\n\tconstructor(\n\t\tdocument: Document,\n\t\tname: string,\n\t\tattrs?: ElementAttributes,\n\t\tchildren?: Node | Iterable<Node>\n\t) {\n\t\tsuper( document, name, attrs, children );\n\n\t\t// Returns `null` because filler is not needed for raw elements.\n\t\tthis.getFillerOffset = getFillerOffset;\n\t}\n\n\t/**\n\t * Overrides the {@link module:engine/view/element~Element#_insertChild} method.\n\t * Throws the `view-rawelement-cannot-add` {@link module:utils/ckeditorerror~CKEditorError CKEditorError} to prevent\n\t * adding any child nodes to a raw element.\n\t *\n\t * @internal\n\t */\n\tpublic override _insertChild( index: number, items: Item | Iterable<Item> ): number {\n\t\tif ( items && ( items instanceof Node || Array.from( items as Iterable<Item> ).length > 0 ) ) {\n\t\t\t/**\n\t\t\t * Cannot add children to a {@link module:engine/view/rawelement~RawElement} instance.\n\t\t\t *\n\t\t\t * @error view-rawelement-cannot-add\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'view-rawelement-cannot-add',\n\t\t\t\t[ this, items ]\n\t\t\t);\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\t/**\n\t * This allows rendering the children of a {@link module:engine/view/rawelement~RawElement} on the DOM level.\n\t * This method is called by the {@link module:engine/view/domconverter~DomConverter} with the raw DOM element\n\t * passed as an argument, leaving the number and shape of the children up to the integrator.\n\t *\n\t * This method **must be defined** for the raw element to work:\n\t *\n\t * ```ts\n\t * const myRawElement = downcastWriter.createRawElement( 'div' );\n\t *\n\t * myRawElement.render = function( domElement, domConverter ) {\n\t * \tdomConverter.setContentOf( domElement, '<b>This is the raw content of myRawElement.</b>' );\n\t * };\n\t * ```\n\t *\n\t * @param domElement The native DOM element representing the raw view element.\n\t * @param domConverter Instance of the DomConverter used to optimize the output.\n\t */\n\tpublic render( domElement: DomElement, domConverter: DomConverter ): void {}\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nRawElement.prototype.is = function( type: string, name?: string ): boolean {\n\tif ( !name ) {\n\t\treturn type === 'rawElement' || type === 'view:rawElement' ||\n\t\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\t\ttype === this.name || type === 'view:' + this.name ||\n\t\t\ttype === 'element' || type === 'view:element' ||\n\t\t\ttype === 'node' || type === 'view:node';\n\t} else {\n\t\treturn name === this.name && (\n\t\t\ttype === 'rawElement' || type === 'view:rawElement' ||\n\t\t\ttype === 'element' || type === 'view:element'\n\t\t);\n\t}\n};\n\n/**\n * Returns `null` because block filler is not needed for raw elements.\n */\nfunction getFillerOffset() {\n\treturn null;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/documentfragment\n */\n\nimport TypeCheckable from './typecheckable';\nimport Text from './text';\nimport TextProxy from './textproxy';\n\nimport { EmitterMixin, isIterable } from '@ckeditor/ckeditor5-utils';\n\nimport type { default as Document, ChangeType } from './document';\n\nimport type Item from './item';\nimport type Node from './node';\n\n/**\n * Document fragment.\n *\n * To create a new document fragment instance use the\n * {@link module:engine/view/upcastwriter~UpcastWriter#createDocumentFragment `UpcastWriter#createDocumentFragment()`}\n * method.\n */\nexport default class DocumentFragment extends EmitterMixin( TypeCheckable ) implements Iterable<Node> {\n\t/**\n\t * The document to which this document fragment belongs.\n\t */\n\tpublic readonly document: Document;\n\n\t/**\n\t * Array of child nodes.\n\t */\n\tprivate readonly _children: Array<Node> = [];\n\n\t/**\n\t * Map of custom properties.\n\t * Custom properties can be added to document fragment instance.\n\t */\n\tprivate readonly _customProperties = new Map<string | symbol, unknown>();\n\n\t/**\n\t * Creates new DocumentFragment instance.\n\t *\n\t * @internal\n\t * @param document The document to which this document fragment belongs.\n\t * @param children A list of nodes to be inserted into the created document fragment.\n\t */\n\tconstructor( document: Document, children?: Node | Iterable<Node> ) {\n\t\tsuper();\n\n\t\tthis.document = document;\n\n\t\tif ( children ) {\n\t\t\tthis._insertChild( 0, children );\n\t\t}\n\t}\n\n\t/**\n\t * Iterable interface.\n\t *\n\t * Iterates over nodes added to this document fragment.\n\t */\n\tpublic [ Symbol.iterator ](): Iterator<Node> {\n\t\treturn this._children[ Symbol.iterator ]();\n\t}\n\n\t/**\n\t * Number of child nodes in this document fragment.\n\t */\n\tpublic get childCount(): number {\n\t\treturn this._children.length;\n\t}\n\n\t/**\n\t * Is `true` if there are no nodes inside this document fragment, `false` otherwise.\n\t */\n\tpublic get isEmpty(): boolean {\n\t\treturn this.childCount === 0;\n\t}\n\n\t/**\n\t * Artificial root of `DocumentFragment`. Returns itself. Added for compatibility reasons.\n\t */\n\tpublic get root(): this {\n\t\treturn this;\n\t}\n\n\t/**\n\t * Artificial parent of `DocumentFragment`. Returns `null`. Added for compatibility reasons.\n\t */\n\tpublic get parent(): null {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Artificial element name. Returns `undefined`. Added for compatibility reasons.\n\t */\n\tpublic get name(): undefined {\n\t\treturn undefined;\n\t}\n\n\t/**\n\t * Returns the custom property value for the given key.\n\t */\n\tpublic getCustomProperty( key: string | symbol ): unknown {\n\t\treturn this._customProperties.get( key );\n\t}\n\n\t/**\n\t * Returns an iterator which iterates over this document fragment's custom properties.\n\t * Iterator provides `[ key, value ]` pairs for each stored property.\n\t */\n\tpublic* getCustomProperties(): Iterable<[ string | symbol, unknown ]> {\n\t\tyield* this._customProperties.entries();\n\t}\n\n\t/**\n\t * {@link module:engine/view/documentfragment~DocumentFragment#_insertChild Insert} a child node or a list of child nodes at the end\n\t * and sets the parent of these nodes to this fragment.\n\t *\n\t * @internal\n\t * @param items Items to be inserted.\n\t * @returns Number of appended nodes.\n\t */\n\tpublic _appendChild( items: Item | string | Iterable<Item | string> ): number {\n\t\treturn this._insertChild( this.childCount, items );\n\t}\n\n\t/**\n\t * Gets child at the given index.\n\t *\n\t * @param index Index of child.\n\t * @returns Child node.\n\t */\n\tpublic getChild( index: number ): Node {\n\t\treturn this._children[ index ];\n\t}\n\n\t/**\n\t * Gets index of the given child node. Returns `-1` if child node is not found.\n\t *\n\t * @param node Child node.\n\t * @returns Index of the child node.\n\t */\n\tpublic getChildIndex( node: Node ): number {\n\t\treturn this._children.indexOf( node );\n\t}\n\n\t/**\n\t * Gets child nodes iterator.\n\t *\n\t * @returns Child nodes iterator.\n\t */\n\tpublic getChildren(): IterableIterator<Node> {\n\t\treturn this._children[ Symbol.iterator ]();\n\t}\n\n\t/**\n\t * Inserts a child node or a list of child nodes on the given index and sets the parent of these nodes to\n\t * this fragment.\n\t *\n\t * @internal\n\t * @param index Position where nodes should be inserted.\n\t * @param items Items to be inserted.\n\t * @returns Number of inserted nodes.\n\t */\n\tpublic _insertChild( index: number, items: Item | string | Iterable<Item | string> ): number {\n\t\tthis._fireChange( 'children', this );\n\t\tlet count = 0;\n\n\t\tconst nodes = normalize( this.document, items );\n\n\t\tfor ( const node of nodes ) {\n\t\t\t// If node that is being added to this element is already inside another element, first remove it from the old parent.\n\t\t\tif ( node.parent !== null ) {\n\t\t\t\tnode._remove();\n\t\t\t}\n\n\t\t\t( node as any ).parent = this;\n\n\t\t\tthis._children.splice( index, 0, node );\n\t\t\tindex++;\n\t\t\tcount++;\n\t\t}\n\n\t\treturn count;\n\t}\n\n\t/**\n\t * Removes number of child nodes starting at the given index and set the parent of these nodes to `null`.\n\t *\n\t * @internal\n\t * @param index Number of the first node to remove.\n\t * @param howMany Number of nodes to remove.\n\t * @returns The array of removed nodes.\n\t */\n\tpublic _removeChildren( index: number, howMany: number = 1 ): Array<Node> {\n\t\tthis._fireChange( 'children', this );\n\n\t\tfor ( let i = index; i < index + howMany; i++ ) {\n\t\t\t( this._children[ i ] as any ).parent = null;\n\t\t}\n\n\t\treturn this._children.splice( index, howMany );\n\t}\n\n\t/**\n\t * Fires `change` event with given type of the change.\n\t *\n\t * @internal\n\t * @param type Type of the change.\n\t * @param node Changed node.\n\t */\n\tpublic _fireChange( type: ChangeType, node: Node | DocumentFragment ): void {\n\t\tthis.fire( 'change:' + type, node );\n\t}\n\n\t/**\n\t * Sets a custom property. They can be used to add special data to elements.\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#setCustomProperty\n\t * @internal\n\t */\n\tpublic _setCustomProperty( key: string | symbol, value: unknown ): void {\n\t\tthis._customProperties.set( key, value );\n\t}\n\n\t/**\n\t * Removes the custom property stored under the given key.\n\t *\n\t * @see module:engine/view/downcastwriter~DowncastWriter#removeCustomProperty\n\t * @internal\n\t * @returns Returns true if property was removed.\n\t */\n\tpublic _removeCustomProperty( key: string | symbol ): boolean {\n\t\treturn this._customProperties.delete( key );\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public printTree(): string {\n\t// @if CK_DEBUG_ENGINE // \tlet string = 'ViewDocumentFragment: [';\n\n\t// @if CK_DEBUG_ENGINE // \tfor ( const child of this.getChildren() as any ) {\n\t// @if CK_DEBUG_ENGINE // \t\tif ( child.is( '$text' ) ) {\n\t// @if CK_DEBUG_ENGINE // \t\t\tstring += '\\n' + '\\t'.repeat( 1 ) + child.data;\n\t// @if CK_DEBUG_ENGINE // \t\t} else {\n\t// @if CK_DEBUG_ENGINE // \t\t\tstring += '\\n' + child.printTree( 1 );\n\t// @if CK_DEBUG_ENGINE // \t\t}\n\t// @if CK_DEBUG_ENGINE // \t}\n\n\t// @if CK_DEBUG_ENGINE // \tstring += '\\n]';\n\n\t// @if CK_DEBUG_ENGINE // \treturn string;\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public logTree(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( this.printTree() );\n\t// @if CK_DEBUG_ENGINE // }\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nDocumentFragment.prototype.is = function( type: string ): boolean {\n\treturn type === 'documentFragment' || type === 'view:documentFragment';\n};\n\n/**\n * Converts strings to Text and non-iterables to arrays.\n */\nfunction normalize( document: Document, nodes: Item | string | Iterable<Item | string> ): Array<Node> {\n\t// Separate condition because string is iterable.\n\tif ( typeof nodes == 'string' ) {\n\t\treturn [ new Text( document, nodes ) ];\n\t}\n\n\tif ( !isIterable( nodes ) ) {\n\t\tnodes = [ nodes ];\n\t}\n\n\t// Array.from to enable .map() on non-arrays.\n\treturn Array.from( nodes )\n\t\t.map( node => {\n\t\t\tif ( typeof node == 'string' ) {\n\t\t\t\treturn new Text( document, node );\n\t\t\t}\n\n\t\t\tif ( node instanceof TextProxy ) {\n\t\t\t\treturn new Text( document, node.data );\n\t\t\t}\n\n\t\t\treturn node;\n\t\t} );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/downcastwriter\n */\n\nimport Position, { type PositionOffset } from './position';\nimport Range from './range';\nimport Selection, {\n\ttype PlaceOrOffset,\n\ttype Selectable,\n\ttype SelectionOptions\n} from './selection';\nimport ContainerElement from './containerelement';\nimport AttributeElement from './attributeelement';\nimport EmptyElement from './emptyelement';\nimport UIElement from './uielement';\nimport RawElement from './rawelement';\nimport { CKEditorError, isIterable } from '@ckeditor/ckeditor5-utils';\nimport DocumentFragment from './documentfragment';\nimport Text from './text';\nimport EditableElement from './editableelement';\nimport { isPlainObject } from 'lodash-es';\n\nimport type Document from './document';\nimport type Node from './node';\nimport type { default as Element, ElementAttributes } from './element';\nimport type DomConverter from './domconverter';\nimport type Item from './item';\nimport type { SlotFilter } from '../conversion/downcasthelpers';\n\ntype DomDocument = globalThis.Document;\ntype DomElement = globalThis.HTMLElement;\n\n/**\n * View downcast writer.\n *\n * It provides a set of methods used to manipulate view nodes.\n *\n * Do not create an instance of this writer manually. To modify a view structure, use\n * the {@link module:engine/view/view~View#change `View#change()`} block.\n *\n * The `DowncastWriter` is designed to work with semantic views which are the views that were/are being downcasted from the model.\n * To work with ordinary views (e.g. parsed from a pasted content) use the\n * {@link module:engine/view/upcastwriter~UpcastWriter upcast writer}.\n *\n * Read more about changing the view in the {@glink framework/architecture/editing-engine#changing-the-view Changing the view}\n * section of the {@glink framework/architecture/editing-engine Editing engine architecture} guide.\n */\nexport default class DowncastWriter {\n\t/**\n\t * The view document instance in which this writer operates.\n\t */\n\tpublic readonly document: Document;\n\n\t/**\n\t * Holds references to the attribute groups that share the same {@link module:engine/view/attributeelement~AttributeElement#id id}.\n\t * The keys are `id`s, the values are `Set`s holding {@link module:engine/view/attributeelement~AttributeElement}s.\n\t */\n\tprivate readonly _cloneGroups = new Map<string | number, Set<AttributeElement>>();\n\n\t/**\n\t * The slot factory used by the `elementToStructure` downcast helper.\n\t */\n\tprivate _slotFactory: ( ( writer: DowncastWriter, modeOrFilter: string | SlotFilter ) => Element ) | null = null;\n\n\t/**\n\t * @param document The view document instance.\n\t */\n\tconstructor( document: Document ) {\n\t\tthis.document = document;\n\t}\n\n\t/**\n\t * Sets {@link module:engine/view/documentselection~DocumentSelection selection's} ranges and direction to the\n\t * specified location based on the given {@link module:engine/view/selection~Selectable selectable}.\n\t *\n\t * Usage:\n\t *\n\t * ```ts\n\t * // Sets collapsed selection at the position of given item and offset.\n\t * const paragraph = writer.createContainerElement( 'p' );\n\t * writer.setSelection( paragraph, offset );\n\t * ```\n\t *\n\t * Creates a range inside an {@link module:engine/view/element~Element element} which starts before the first child of\n\t * that element and ends after the last child of that element.\n\t *\n\t * ```ts\n\t * writer.setSelection( paragraph, 'in' );\n\t * ```\n\t *\n\t * Creates a range on the {@link module:engine/view/item~Item item} which starts before the item and ends just after the item.\n\t *\n\t * ```ts\n\t * writer.setSelection( paragraph, 'on' );\n\t * ```\n\t *\n\t * `DowncastWriter#setSelection()` allow passing additional options (`backward`, `fake` and `label`) as the last argument.\n\t *\n\t * ```ts\n\t * // Sets selection as backward.\n\t * writer.setSelection( element, 'in', { backward: true } );\n\t *\n\t * // Sets selection as fake.\n\t * // Fake selection does not render as browser native selection over selected elements and is hidden to the user.\n\t * // This way, no native selection UI artifacts are displayed to the user and selection over elements can be\n\t * // represented in other way, for example by applying proper CSS class.\n\t * writer.setSelection( element, 'in', { fake: true } );\n\t *\n\t * // Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM\n\t * // (and be properly handled by screen readers).\n\t * writer.setSelection( element, 'in', { fake: true, label: 'foo' } );\n\t * ```\n\t *\n\t * See also: {@link #setSelection:SELECTABLE `setSelection( selectable, options )`}.\n\t *\n\t * @label NODE_OFFSET\n\t */\n\tpublic setSelection( selectable: Node, placeOrOffset: PlaceOrOffset, options?: SelectionOptions ): void;\n\n\t/**\n\t * Sets {@link module:engine/view/documentselection~DocumentSelection selection's} ranges and direction to the\n\t * specified location based on the given {@link module:engine/view/selection~Selectable selectable}.\n\t *\n\t * Usage:\n\t *\n\t * ```ts\n\t * // Sets selection to the given range.\n\t * const range = writer.createRange( start, end );\n\t * writer.setSelection( range );\n\t *\n\t * // Sets backward selection to the given range.\n\t * const range = writer.createRange( start, end );\n\t * writer.setSelection( range );\n\t *\n\t * // Sets selection to given ranges.\n\t * const ranges = [ writer.createRange( start1, end2 ), writer.createRange( start2, end2 ) ];\n\t * writer.setSelection( range );\n\t *\n\t * // Sets selection to the other selection.\n\t * const otherSelection = writer.createSelection();\n\t * writer.setSelection( otherSelection );\n\t *\n\t * // Sets collapsed selection at the given position.\n\t * const position = writer.createPositionFromPath( root, path );\n\t * writer.setSelection( position );\n\t *\n\t * // Removes all ranges.\n\t * writer.setSelection( null );\n\t * ```\n\t *\n\t * `DowncastWriter#setSelection()` allow passing additional options (`backward`, `fake` and `label`) as the last argument.\n\t *\n\t * ```ts\n\t * // Sets selection as backward.\n\t * writer.setSelection( range, { backward: true } );\n\t *\n\t * // Sets selection as fake.\n\t * // Fake selection does not render as browser native selection over selected elements and is hidden to the user.\n\t * // This way, no native selection UI artifacts are displayed to the user and selection over elements can be\n\t * // represented in other way, for example by applying proper CSS class.\n\t * writer.setSelection( range, { fake: true } );\n\t *\n\t * // Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM\n\t * // (and be properly handled by screen readers).\n\t * writer.setSelection( range, { fake: true, label: 'foo' } );\n\t * ```\n\t *\n\t * See also: {@link #setSelection:NODE_OFFSET `setSelection( node, placeOrOffset, options )`}.\n\t *\n\t * @label SELECTABLE\n\t */\n\tpublic setSelection( selectable: Exclude<Selectable, Node>, options?: SelectionOptions ): void;\n\n\tpublic setSelection( ...args: Parameters<Selection[ 'setTo' ]> ): void {\n\t\tthis.document.selection._setTo( ...args );\n\t}\n\n\t/**\n\t * Moves {@link module:engine/view/documentselection~DocumentSelection#focus selection's focus} to the specified location.\n\t *\n\t * The location can be specified in the same form as {@link module:engine/view/view~View#createPositionAt view.createPositionAt()}\n\t * parameters.\n\t *\n\t * @param Offset or one of the flags. Used only when the first parameter is a {@link module:engine/view/item~Item view item}.\n\t */\n\tpublic setSelectionFocus( itemOrPosition: Item | Position, offset?: PositionOffset ): void {\n\t\tthis.document.selection._setFocus( itemOrPosition, offset );\n\t}\n\n\t/**\n\t * Creates a new {@link module:engine/view/documentfragment~DocumentFragment} instance.\n\t *\n\t * @param children A list of nodes to be inserted into the created document fragment.\n\t * @returns The created document fragment.\n\t */\n\tpublic createDocumentFragment( children?: Node | Iterable<Node> ): DocumentFragment {\n\t\treturn new DocumentFragment( this.document, children );\n\t}\n\n\t/**\n\t * Creates a new {@link module:engine/view/text~Text text node}.\n\t *\n\t * ```ts\n\t * writer.createText( 'foo' );\n\t * ```\n\t *\n\t * @param data The text's data.\n\t * @returns The created text node.\n\t */\n\tpublic createText( data: string ): Text {\n\t\treturn new Text( this.document, data );\n\t}\n\n\t/**\n\t * Creates a new {@link module:engine/view/attributeelement~AttributeElement}.\n\t *\n\t * ```ts\n\t * writer.createAttributeElement( 'strong' );\n\t * writer.createAttributeElement( 'a', { href: 'foo.bar' } );\n\t *\n\t * // Make `<a>` element contain other attributes element so the `<a>` element is not broken.\n\t * writer.createAttributeElement( 'a', { href: 'foo.bar' }, { priority: 5 } );\n\t *\n\t * // Set `id` of a marker element so it is not joined or merged with \"normal\" elements.\n\t * writer.createAttributeElement( 'span', { class: 'my-marker' }, { id: 'marker:my' } );\n\t * ```\n\t *\n\t * @param name Name of the element.\n\t * @param attributes Element's attributes.\n\t * @param options Element's options.\n\t * @param options.priority Element's {@link module:engine/view/attributeelement~AttributeElement#priority priority}.\n\t * @param options.id Element's {@link module:engine/view/attributeelement~AttributeElement#id id}.\n\t * @param options.renderUnsafeAttributes A list of attribute names that should be rendered in the editing\n\t * pipeline even though they would normally be filtered out by unsafe attribute detection mechanisms.\n\t * @returns Created element.\n\t */\n\tpublic createAttributeElement(\n\t\tname: string,\n\t\tattributes?: ElementAttributes,\n\t\toptions: {\n\t\t\tpriority?: number;\n\t\t\tid?: number | string;\n\t\t\trenderUnsafeAttributes?: Array<string>;\n\t\t} = {}\n\t): AttributeElement {\n\t\tconst attributeElement = new AttributeElement( this.document, name, attributes );\n\n\t\tif ( typeof options.priority === 'number' ) {\n\t\t\tattributeElement._priority = options.priority;\n\t\t}\n\n\t\tif ( options.id ) {\n\t\t\tattributeElement._id = options.id;\n\t\t}\n\n\t\tif ( options.renderUnsafeAttributes ) {\n\t\t\tattributeElement._unsafeAttributesToRender.push( ...options.renderUnsafeAttributes );\n\t\t}\n\n\t\treturn attributeElement;\n\t}\n\n\t/**\n\t * Creates a new {@link module:engine/view/containerelement~ContainerElement}.\n\t *\n\t * ```ts\n\t * writer.createContainerElement( 'p' );\n\t *\n\t * // Create element with custom attributes.\n\t * writer.createContainerElement( 'div', { id: 'foo-bar', 'data-baz': '123' } );\n\t *\n\t * // Create element with custom styles.\n\t * writer.createContainerElement( 'p', { style: 'font-weight: bold; padding-bottom: 10px' } );\n\t *\n\t * // Create element with custom classes.\n\t * writer.createContainerElement( 'p', { class: 'foo bar baz' } );\n\t *\n\t * // Create element with specific options.\n\t * writer.createContainerElement( 'span', { class: 'placeholder' }, { renderUnsafeAttributes: [ 'foo' ] } );\n\t * ```\n\t *\n\t * @label WITHOUT_CHILDREN\n\t * @param name Name of the element.\n\t * @param attributes Elements attributes.\n\t * @param options Element's options.\n\t * @param options.renderUnsafeAttributes A list of attribute names that should be rendered in the editing\n\t * pipeline even though they would normally be filtered out by unsafe attribute detection mechanisms.\n\t * @returns Created element.\n\t */\n\tpublic createContainerElement(\n\t\tname: string,\n\t\tattributes?: ElementAttributes,\n\t\toptions?: { renderUnsafeAttributes?: Array<string> }\n\t): ContainerElement;\n\n\t/**\n\t * Creates a new {@link module:engine/view/containerelement~ContainerElement} with children.\n\t *\n\t * ```ts\n\t * // Create element with children.\n\t * writer.createContainerElement( 'figure', { class: 'image' }, [\n\t * \twriter.createEmptyElement( 'img' ),\n\t * \twriter.createContainerElement( 'figcaption' )\n\t * ] );\n\t *\n\t * // Create element with specific options.\n\t * writer.createContainerElement( 'figure', { class: 'image' }, [\n\t * \twriter.createEmptyElement( 'img' ),\n\t * \twriter.createContainerElement( 'figcaption' )\n\t * ], { renderUnsafeAttributes: [ 'foo' ] } );\n\t * ```\n\t *\n\t * @label WITH_CHILDREN\n\t * @param name Name of the element.\n\t * @param attributes Elements attributes.\n\t * @param children A node or a list of nodes to be inserted into the created element.\n\t * If no children were specified, element's `options` can be passed in this argument.\n\t * @param options Element's options.\n\t * @param options.renderUnsafeAttributes A list of attribute names that should be rendered in the editing\n\t * pipeline even though they would normally be filtered out by unsafe attribute detection mechanisms.\n\t * @returns Created element.\n\t */\n\tpublic createContainerElement(\n\t\tname: string,\n\t\tattributes: ElementAttributes,\n\t\tchildren: Node | Iterable<Node>,\n\t\toptions?: { renderUnsafeAttributes?: Array<string> }\n\t): ContainerElement;\n\n\tpublic createContainerElement(\n\t\tname: string,\n\t\tattributes?: ElementAttributes,\n\t\tchildrenOrOptions: Node | Iterable<Node> | { renderUnsafeAttributes?: Array<string> } = {},\n\t\toptions: { renderUnsafeAttributes?: Array<string> } = {}\n\t): ContainerElement {\n\t\tlet children = null;\n\n\t\tif ( isPlainObject( childrenOrOptions ) ) {\n\t\t\toptions = childrenOrOptions as { renderUnsafeAttributes?: Array<string> };\n\t\t} else {\n\t\t\tchildren = childrenOrOptions;\n\t\t}\n\n\t\tconst containerElement = new ContainerElement( this.document, name, attributes, children as Node | Iterable<Node> );\n\n\t\tif ( options.renderUnsafeAttributes ) {\n\t\t\tcontainerElement._unsafeAttributesToRender.push( ...options.renderUnsafeAttributes );\n\t\t}\n\n\t\treturn containerElement;\n\t}\n\n\t/**\n\t * Creates a new {@link module:engine/view/editableelement~EditableElement}.\n\t *\n\t * ```ts\n\t * writer.createEditableElement( 'div' );\n\t * writer.createEditableElement( 'div', { id: 'foo-1234' } );\n\t * ```\n\t *\n\t * Note: The editable element is to be used in the editing pipeline. Usually, together with\n\t * {@link module:widget/utils~toWidgetEditable `toWidgetEditable()`}.\n\t *\n\t * @param name Name of the element.\n\t * @param attributes Elements attributes.\n\t * @param options Element's options.\n\t * @param options.renderUnsafeAttributes A list of attribute names that should be rendered in the editing\n\t * pipeline even though they would normally be filtered out by unsafe attribute detection mechanisms.\n\t * @returns Created element.\n\t */\n\tpublic createEditableElement(\n\t\tname: string,\n\t\tattributes?: ElementAttributes,\n\t\toptions: {\n\t\t\trenderUnsafeAttributes?: Array<string>;\n\t\t} = {}\n\t): EditableElement {\n\t\tconst editableElement = new EditableElement( this.document, name, attributes );\n\n\t\tif ( options.renderUnsafeAttributes ) {\n\t\t\teditableElement._unsafeAttributesToRender.push( ...options.renderUnsafeAttributes );\n\t\t}\n\n\t\treturn editableElement;\n\t}\n\n\t/**\n\t * Creates a new {@link module:engine/view/emptyelement~EmptyElement}.\n\t *\n\t * ```ts\n\t * writer.createEmptyElement( 'img' );\n\t * writer.createEmptyElement( 'img', { id: 'foo-1234' } );\n\t * ```\n\t *\n\t * @param name Name of the element.\n\t * @param attributes Elements attributes.\n\t * @param options Element's options.\n\t * @param options.renderUnsafeAttributes A list of attribute names that should be rendered in the editing\n\t * pipeline even though they would normally be filtered out by unsafe attribute detection mechanisms.\n\t * @returns Created element.\n\t */\n\tpublic createEmptyElement(\n\t\tname: string,\n\t\tattributes?: ElementAttributes,\n\t\toptions: {\n\t\t\trenderUnsafeAttributes?: Array<string>;\n\t\t} = {}\n\t): EmptyElement {\n\t\tconst emptyElement = new EmptyElement( this.document, name, attributes );\n\n\t\tif ( options.renderUnsafeAttributes ) {\n\t\t\temptyElement._unsafeAttributesToRender.push( ...options.renderUnsafeAttributes );\n\t\t}\n\n\t\treturn emptyElement;\n\t}\n\n\t/**\n\t * Creates a new {@link module:engine/view/uielement~UIElement}.\n\t *\n\t * ```ts\n\t * writer.createUIElement( 'span' );\n\t * writer.createUIElement( 'span', { id: 'foo-1234' } );\n\t * ```\n\t *\n\t * A custom render function can be provided as the third parameter:\n\t *\n\t * ```ts\n\t * writer.createUIElement( 'span', null, function( domDocument ) {\n\t * \tconst domElement = this.toDomElement( domDocument );\n\t * \tdomElement.innerHTML = '<b>this is ui element</b>';\n\t *\n\t * \treturn domElement;\n\t * } );\n\t * ```\n\t *\n\t * Unlike {@link #createRawElement raw elements}, UI elements are by no means editor content, for instance,\n\t * they are ignored by the editor selection system.\n\t *\n\t * You should not use UI elements as data containers. Check out {@link #createRawElement} instead.\n\t *\n\t * @param name The name of the element.\n\t * @param attributes Element attributes.\n\t * @param renderFunction A custom render function.\n\t * @returns The created element.\n\t */\n\tpublic createUIElement(\n\t\tname: string,\n\t\tattributes?: ElementAttributes,\n\t\trenderFunction?: ( this: UIElement, domDocument: DomDocument, domConverter: DomConverter ) => DomElement\n\t): UIElement {\n\t\tconst uiElement = new UIElement( this.document, name, attributes );\n\n\t\tif ( renderFunction ) {\n\t\t\tuiElement.render = renderFunction;\n\t\t}\n\n\t\treturn uiElement;\n\t}\n\n\t/**\n\t * Creates a new {@link module:engine/view/rawelement~RawElement}.\n\t *\n\t * ```ts\n\t * writer.createRawElement( 'span', { id: 'foo-1234' }, function( domElement ) {\n\t * \tdomElement.innerHTML = '<b>This is the raw content of the raw element.</b>';\n\t * } );\n\t * ```\n\t *\n\t * Raw elements work as data containers (\"wrappers\", \"sandboxes\") but their children are not managed or\n\t * even recognized by the editor. This encapsulation allows integrations to maintain custom DOM structures\n\t * in the editor content without, for instance, worrying about compatibility with other editor features.\n\t * Raw elements are a perfect tool for integration with external frameworks and data sources.\n\t *\n\t * Unlike {@link #createUIElement UI elements}, raw elements act like \"real\" editor content (similar to\n\t * {@link module:engine/view/containerelement~ContainerElement} or {@link module:engine/view/emptyelement~EmptyElement}),\n\t * and they are considered by the editor selection.\n\t *\n\t * You should not use raw elements to render the UI in the editor content. Check out {@link #createUIElement `#createUIElement()`}\n\t * instead.\n\t *\n\t * @param name The name of the element.\n\t * @param attributes Element attributes.\n\t * @param renderFunction A custom render function.\n\t * @param options Element's options.\n\t * @param options.renderUnsafeAttributes A list of attribute names that should be rendered in the editing\n\t * pipeline even though they would normally be filtered out by unsafe attribute detection mechanisms.\n\t * @returns The created element.\n\t */\n\tpublic createRawElement(\n\t\tname: string,\n\t\tattributes?: ElementAttributes,\n\t\trenderFunction?: ( domElement: DomElement, domConverter: DomConverter ) => void,\n\t\toptions: {\n\t\t\trenderUnsafeAttributes?: Array<string>;\n\t\t} = {}\n\t): RawElement {\n\t\tconst rawElement = new RawElement( this.document, name, attributes );\n\n\t\tif ( renderFunction ) {\n\t\t\trawElement.render = renderFunction;\n\t\t}\n\n\t\tif ( options.renderUnsafeAttributes ) {\n\t\t\trawElement._unsafeAttributesToRender.push( ...options.renderUnsafeAttributes );\n\t\t}\n\n\t\treturn rawElement;\n\t}\n\n\t/**\n\t * Adds or overwrites the element's attribute with a specified key and value.\n\t *\n\t * ```ts\n\t * writer.setAttribute( 'href', 'http://ckeditor.com', linkElement );\n\t * ```\n\t *\n\t * @param key The attribute key.\n\t * @param value The attribute value.\n\t */\n\tpublic setAttribute( key: string, value: unknown, element: Element ): void {\n\t\telement._setAttribute( key, value );\n\t}\n\n\t/**\n\t * Removes attribute from the element.\n\t *\n\t * ```ts\n\t * writer.removeAttribute( 'href', linkElement );\n\t * ```\n\t *\n\t * @param key Attribute key.\n\t */\n\tpublic removeAttribute( key: string, element: Element ): void {\n\t\telement._removeAttribute( key );\n\t}\n\n\t/**\n\t * Adds specified class to the element.\n\t *\n\t * ```ts\n\t * writer.addClass( 'foo', linkElement );\n\t * writer.addClass( [ 'foo', 'bar' ], linkElement );\n\t * ```\n\t */\n\tpublic addClass( className: string | Array<string>, element: Element ): void {\n\t\telement._addClass( className );\n\t}\n\n\t/**\n\t * Removes specified class from the element.\n\t *\n\t * ```ts\n\t * writer.removeClass( 'foo', linkElement );\n\t * writer.removeClass( [ 'foo', 'bar' ], linkElement );\n\t * ```\n\t */\n\tpublic removeClass( className: string | Array<string>, element: Element ): void {\n\t\telement._removeClass( className );\n\t}\n\n\t/**\n\t * Adds style to the element.\n\t *\n\t * ```ts\n\t * writer.setStyle( 'color', 'red', element );\n\t * ```\n\t *\n\t * **Note**: The passed style can be normalized if\n\t * {@link module:engine/controller/datacontroller~DataController#addStyleProcessorRules a particular style processor rule is enabled}.\n\t * See {@link module:engine/view/stylesmap~StylesMap#set `StylesMap#set()`} for details.\n\t *\n\t * @label KEY_VALUE\n\t * @param property Property name.\n\t * @param value Value to set.\n\t * @param element Element to set styles on.\n\t */\n\tpublic setStyle( property: string, value: string, element: Element ): void;\n\n\t/**\n\t * Adds many styles to the element.\n\t *\n\t * ```ts\n\t * writer.setStyle( {\n\t * \tcolor: 'red',\n\t * \tposition: 'fixed'\n\t * }, element );\n\t * ```\n\t *\n\t * **Note**: The passed style can be normalized if\n\t * {@link module:engine/controller/datacontroller~DataController#addStyleProcessorRules a particular style processor rule is enabled}.\n\t * See {@link module:engine/view/stylesmap~StylesMap#set `StylesMap#set()`} for details.\n\t *\n\t * @label OBJECT\n\t * @param property Object with key - value pairs.\n\t * @param element Element to set styles on.\n\t */\n\tpublic setStyle( property: Record<string, string>, element: Element ): void;\n\n\tpublic setStyle(\n\t\tproperty: string | Record<string, string>,\n\t\tvalue: string | Element,\n\t\telement?: Element\n\t): void\n\t{\n\t\tif ( isPlainObject( property ) && element === undefined ) {\n\t\t\t( value as Element )._setStyle( property as Record<string, string> );\n\t\t} else {\n\t\t\telement!._setStyle( property as string, value as string );\n\t\t}\n\t}\n\n\t/**\n\t * Removes specified style from the element.\n\t *\n\t * ```ts\n\t * writer.removeStyle( 'color', element ); // Removes 'color' style.\n\t * writer.removeStyle( [ 'color', 'border-top' ], element ); // Removes both 'color' and 'border-top' styles.\n\t * ```\n\t *\n\t * **Note**: This method can work with normalized style names if\n\t * {@link module:engine/controller/datacontroller~DataController#addStyleProcessorRules a particular style processor rule is enabled}.\n\t * See {@link module:engine/view/stylesmap~StylesMap#remove `StylesMap#remove()`} for details.\n\t */\n\tpublic removeStyle( property: string | Array<string>, element: Element ): void {\n\t\telement._removeStyle( property );\n\t}\n\n\t/**\n\t * Sets a custom property on element. Unlike attributes, custom properties are not rendered to the DOM,\n\t * so they can be used to add special data to elements.\n\t */\n\tpublic setCustomProperty( key: string | symbol, value: unknown, element: Element | DocumentFragment ): void {\n\t\telement._setCustomProperty( key, value );\n\t}\n\n\t/**\n\t * Removes a custom property stored under the given key.\n\t *\n\t * @returns Returns true if property was removed.\n\t */\n\tpublic removeCustomProperty( key: string | symbol, element: Element | DocumentFragment ): boolean {\n\t\treturn element._removeCustomProperty( key );\n\t}\n\n\t/**\n\t * Breaks attribute elements at the provided position or at the boundaries of a provided range. It breaks attribute elements\n\t * up to their first ancestor that is a container element.\n\t *\n\t * In following examples `<p>` is a container, `<b>` and `<u>` are attribute elements:\n\t *\n\t * ```html\n\t * <p>foo<b><u>bar{}</u></b></p> -> <p>foo<b><u>bar</u></b>[]</p>\n\t * <p>foo<b><u>{}bar</u></b></p> -> <p>foo{}<b><u>bar</u></b></p>\n\t * <p>foo<b><u>b{}ar</u></b></p> -> <p>foo<b><u>b</u></b>[]<b><u>ar</u></b></p>\n\t * <p><b>fo{o</b><u>ba}r</u></p> -> <p><b>fo</b><b>o</b><u>ba</u><u>r</u></b></p>\n\t * ```\n\t *\n\t * **Note:** {@link module:engine/view/documentfragment~DocumentFragment DocumentFragment} is treated like a container.\n\t *\n\t * **Note:** The difference between {@link module:engine/view/downcastwriter~DowncastWriter#breakAttributes breakAttributes()} and\n\t * {@link module:engine/view/downcastwriter~DowncastWriter#breakContainer breakContainer()} is that `breakAttributes()` breaks all\n\t * {@link module:engine/view/attributeelement~AttributeElement attribute elements} that are ancestors of a given `position`,\n\t * up to the first encountered {@link module:engine/view/containerelement~ContainerElement container element}.\n\t * `breakContainer()` assumes that a given `position` is directly in the container element and breaks that container element.\n\t *\n\t * Throws the `view-writer-invalid-range-container` {@link module:utils/ckeditorerror~CKEditorError CKEditorError}\n\t * when the {@link module:engine/view/range~Range#start start}\n\t * and {@link module:engine/view/range~Range#end end} positions of a passed range are not placed inside same parent container.\n\t *\n\t * Throws the `view-writer-cannot-break-empty-element` {@link module:utils/ckeditorerror~CKEditorError CKEditorError}\n\t * when trying to break attributes inside an {@link module:engine/view/emptyelement~EmptyElement EmptyElement}.\n\t *\n\t * Throws the `view-writer-cannot-break-ui-element` {@link module:utils/ckeditorerror~CKEditorError CKEditorError}\n\t * when trying to break attributes inside a {@link module:engine/view/uielement~UIElement UIElement}.\n\t *\n\t * @see module:engine/view/attributeelement~AttributeElement\n\t * @see module:engine/view/containerelement~ContainerElement\n\t * @see module:engine/view/downcastwriter~DowncastWriter#breakContainer\n\t * @param positionOrRange The position where to break attribute elements.\n\t * @returns The new position or range, after breaking the attribute elements.\n\t */\n\tpublic breakAttributes( positionOrRange: Position | Range ): Position | Range {\n\t\tif ( positionOrRange instanceof Position ) {\n\t\t\treturn this._breakAttributes( positionOrRange );\n\t\t} else {\n\t\t\treturn this._breakAttributesRange( positionOrRange );\n\t\t}\n\t}\n\n\t/**\n\t * Breaks a {@link module:engine/view/containerelement~ContainerElement container view element} into two, at the given position.\n\t * The position has to be directly inside the container element and cannot be in the root. It does not break the conrainer view element\n\t * if the position is at the beginning or at the end of its parent element.\n\t *\n\t * ```html\n\t * <p>foo^bar</p> -> <p>foo</p><p>bar</p>\n\t * <div><p>foo</p>^<p>bar</p></div> -> <div><p>foo</p></div><div><p>bar</p></div>\n\t * <p>^foobar</p> -> ^<p>foobar</p>\n\t * <p>foobar^</p> -> <p>foobar</p>^\n\t * ```\n\t *\n\t * **Note:** The difference between {@link module:engine/view/downcastwriter~DowncastWriter#breakAttributes breakAttributes()} and\n\t * {@link module:engine/view/downcastwriter~DowncastWriter#breakContainer breakContainer()} is that `breakAttributes()` breaks all\n\t * {@link module:engine/view/attributeelement~AttributeElement attribute elements} that are ancestors of a given `position`,\n\t * up to the first encountered {@link module:engine/view/containerelement~ContainerElement container element}.\n\t * `breakContainer()` assumes that the given `position` is directly in the container element and breaks that container element.\n\t *\n\t * @see module:engine/view/attributeelement~AttributeElement\n\t * @see module:engine/view/containerelement~ContainerElement\n\t * @see module:engine/view/downcastwriter~DowncastWriter#breakAttributes\n\t * @param position The position where to break the element.\n\t * @returns The position between broken elements. If an element has not been broken,\n\t * the returned position is placed either before or after it.\n\t */\n\tpublic breakContainer( position: Position ): Position {\n\t\tconst element = position.parent;\n\n\t\tif ( !( element.is( 'containerElement' ) ) ) {\n\t\t\t/**\n\t\t\t * Trying to break an element which is not a container element.\n\t\t\t *\n\t\t\t * @error view-writer-break-non-container-element\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-writer-break-non-container-element', this.document );\n\t\t}\n\n\t\tif ( !element.parent ) {\n\t\t\t/**\n\t\t\t * Trying to break root element.\n\t\t\t *\n\t\t\t * @error view-writer-break-root\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-writer-break-root', this.document );\n\t\t}\n\n\t\tif ( position.isAtStart ) {\n\t\t\treturn Position._createBefore( element );\n\t\t} else if ( !position.isAtEnd ) {\n\t\t\tconst newElement = element._clone( false );\n\n\t\t\tthis.insert( Position._createAfter( element ), newElement as any );\n\n\t\t\tconst sourceRange = new Range( position, Position._createAt( element, 'end' ) );\n\t\t\tconst targetPosition = new Position( newElement, 0 );\n\n\t\t\tthis.move( sourceRange, targetPosition );\n\t\t}\n\n\t\treturn Position._createAfter( element );\n\t}\n\n\t/**\n\t * Merges {@link module:engine/view/attributeelement~AttributeElement attribute elements}. It also merges text nodes if needed.\n\t * Only {@link module:engine/view/attributeelement~AttributeElement#isSimilar similar} attribute elements can be merged.\n\t *\n\t * In following examples `<p>` is a container and `<b>` is an attribute element:\n\t *\n\t * ```html\n\t * <p>foo[]bar</p> -> <p>foo{}bar</p>\n\t * <p><b>foo</b>[]<b>bar</b></p> -> <p><b>foo{}bar</b></p>\n\t * <p><b foo=\"bar\">a</b>[]<b foo=\"baz\">b</b></p> -> <p><b foo=\"bar\">a</b>[]<b foo=\"baz\">b</b></p>\n\t * ```\n\t *\n\t * It will also take care about empty attributes when merging:\n\t *\n\t * ```html\n\t * <p><b>[]</b></p> -> <p>[]</p>\n\t * <p><b>foo</b><i>[]</i><b>bar</b></p> -> <p><b>foo{}bar</b></p>\n\t * ```\n\t *\n\t * **Note:** Difference between {@link module:engine/view/downcastwriter~DowncastWriter#mergeAttributes mergeAttributes} and\n\t * {@link module:engine/view/downcastwriter~DowncastWriter#mergeContainers mergeContainers} is that `mergeAttributes` merges two\n\t * {@link module:engine/view/attributeelement~AttributeElement attribute elements} or {@link module:engine/view/text~Text text nodes}\n\t * while `mergeContainer` merges two {@link module:engine/view/containerelement~ContainerElement container elements}.\n\t *\n\t * @see module:engine/view/attributeelement~AttributeElement\n\t * @see module:engine/view/containerelement~ContainerElement\n\t * @see module:engine/view/downcastwriter~DowncastWriter#mergeContainers\n\t * @param position Merge position.\n\t * @returns Position after merge.\n\t */\n\tpublic mergeAttributes( position: Position ): Position {\n\t\tconst positionOffset = position.offset;\n\t\tconst positionParent = position.parent;\n\n\t\t// When inside text node - nothing to merge.\n\t\tif ( positionParent.is( '$text' ) ) {\n\t\t\treturn position;\n\t\t}\n\n\t\t// When inside empty attribute - remove it.\n\t\tif ( positionParent.is( 'attributeElement' ) && positionParent.childCount === 0 ) {\n\t\t\tconst parent = positionParent.parent;\n\t\t\tconst offset = positionParent.index;\n\n\t\t\tpositionParent._remove();\n\t\t\tthis._removeFromClonedElementsGroup( positionParent );\n\n\t\t\treturn this.mergeAttributes( new Position( parent!, offset! ) );\n\t\t}\n\n\t\tconst nodeBefore = ( positionParent as Element ).getChild( positionOffset - 1 );\n\t\tconst nodeAfter = ( positionParent as Element ).getChild( positionOffset );\n\n\t\t// Position should be placed between two nodes.\n\t\tif ( !nodeBefore || !nodeAfter ) {\n\t\t\treturn position;\n\t\t}\n\n\t\t// When position is between two text nodes.\n\t\tif ( nodeBefore.is( '$text' ) && nodeAfter.is( '$text' ) ) {\n\t\t\treturn mergeTextNodes( nodeBefore, nodeAfter );\n\t\t}\n\t\t// When position is between two same attribute elements.\n\t\telse if ( nodeBefore.is( 'attributeElement' ) && nodeAfter.is( 'attributeElement' ) && nodeBefore.isSimilar( nodeAfter ) ) {\n\t\t\t// Move all children nodes from node placed after selection and remove that node.\n\t\t\tconst count = nodeBefore.childCount;\n\t\t\tnodeBefore._appendChild( nodeAfter.getChildren() );\n\n\t\t\tnodeAfter._remove();\n\t\t\tthis._removeFromClonedElementsGroup( nodeAfter );\n\n\t\t\t// New position is located inside the first node, before new nodes.\n\t\t\t// Call this method recursively to merge again if needed.\n\t\t\treturn this.mergeAttributes( new Position( nodeBefore, count ) );\n\t\t}\n\n\t\treturn position;\n\t}\n\n\t/**\n\t * Merges two {@link module:engine/view/containerelement~ContainerElement container elements} that are before and after given position.\n\t * Precisely, the element after the position is removed and it's contents are moved to element before the position.\n\t *\n\t * ```html\n\t * <p>foo</p>^<p>bar</p> -> <p>foo^bar</p>\n\t * <div>foo</div>^<p>bar</p> -> <div>foo^bar</div>\n\t * ```\n\t *\n\t * **Note:** Difference between {@link module:engine/view/downcastwriter~DowncastWriter#mergeAttributes mergeAttributes} and\n\t * {@link module:engine/view/downcastwriter~DowncastWriter#mergeContainers mergeContainers} is that `mergeAttributes` merges two\n\t * {@link module:engine/view/attributeelement~AttributeElement attribute elements} or {@link module:engine/view/text~Text text nodes}\n\t * while `mergeContainer` merges two {@link module:engine/view/containerelement~ContainerElement container elements}.\n\t *\n\t * @see module:engine/view/attributeelement~AttributeElement\n\t * @see module:engine/view/containerelement~ContainerElement\n\t * @see module:engine/view/downcastwriter~DowncastWriter#mergeAttributes\n\t * @param position Merge position.\n\t * @returns Position after merge.\n\t */\n\tpublic mergeContainers( position: Position ): Position {\n\t\tconst prev = position.nodeBefore;\n\t\tconst next = position.nodeAfter;\n\n\t\tif ( !prev || !next || !prev.is( 'containerElement' ) || !next.is( 'containerElement' ) ) {\n\t\t\t/**\n\t\t\t * Element before and after given position cannot be merged.\n\t\t\t *\n\t\t\t * @error view-writer-merge-containers-invalid-position\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-writer-merge-containers-invalid-position', this.document );\n\t\t}\n\n\t\tconst lastChild = prev.getChild( prev.childCount - 1 );\n\t\tconst newPosition = lastChild instanceof Text ? Position._createAt( lastChild, 'end' ) : Position._createAt( prev, 'end' );\n\n\t\tthis.move( Range._createIn( next ), Position._createAt( prev, 'end' ) );\n\t\tthis.remove( Range._createOn( next ) );\n\n\t\treturn newPosition;\n\t}\n\n\t/**\n\t * Inserts a node or nodes at specified position. Takes care about breaking attributes before insertion\n\t * and merging them afterwards.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-insert-invalid-node` when nodes to insert\n\t * contains instances that are not {@link module:engine/view/text~Text Texts},\n\t * {@link module:engine/view/attributeelement~AttributeElement AttributeElements},\n\t * {@link module:engine/view/containerelement~ContainerElement ContainerElements},\n\t * {@link module:engine/view/emptyelement~EmptyElement EmptyElements},\n\t * {@link module:engine/view/rawelement~RawElement RawElements} or\n\t * {@link module:engine/view/uielement~UIElement UIElements}.\n\t *\n\t * @param position Insertion position.\n\t * @param nodes Node or nodes to insert.\n\t * @returns Range around inserted nodes.\n\t */\n\tpublic insert( position: Position, nodes: Node | Iterable<Node> ): Range {\n\t\tnodes = isIterable( nodes ) ? [ ...nodes ] : [ nodes ];\n\n\t\t// Check if nodes to insert are instances of AttributeElements, ContainerElements, EmptyElements, UIElements or Text.\n\t\tvalidateNodesToInsert( nodes, this.document );\n\n\t\t// Group nodes in batches of nodes that require or do not require breaking an AttributeElements.\n\t\tconst nodeGroups = ( nodes as Array<Node> ).reduce( ( groups: Array<{ breakAttributes: boolean; nodes: Array<Node> }>, node ) => {\n\t\t\tconst lastGroup = groups[ groups.length - 1 ];\n\n\t\t\t// Break attributes on nodes that do exist in the model tree so they can have attributes, other elements\n\t\t\t// can't have an attribute in model and won't get wrapped with an AttributeElement while down-casted.\n\t\t\tconst breakAttributes = !node.is( 'uiElement' );\n\n\t\t\tif ( !lastGroup || lastGroup.breakAttributes != breakAttributes ) {\n\t\t\t\tgroups.push( {\n\t\t\t\t\tbreakAttributes,\n\t\t\t\t\tnodes: [ node ]\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tlastGroup.nodes.push( node );\n\t\t\t}\n\n\t\t\treturn groups;\n\t\t}, [] );\n\n\t\t// Insert nodes in batches.\n\t\tlet start = null;\n\t\tlet end = position;\n\n\t\tfor ( const { nodes, breakAttributes } of nodeGroups ) {\n\t\t\tconst range = this._insertNodes( end, nodes, breakAttributes );\n\n\t\t\tif ( !start ) {\n\t\t\t\tstart = range.start;\n\t\t\t}\n\n\t\t\tend = range.end;\n\t\t}\n\n\t\t// When no nodes were inserted - return collapsed range.\n\t\tif ( !start ) {\n\t\t\treturn new Range( position );\n\t\t}\n\n\t\treturn new Range( start, end );\n\t}\n\n\t/**\n\t * Removes provided range from the container.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when\n\t * {@link module:engine/view/range~Range#start start} and {@link module:engine/view/range~Range#end end} positions are not placed inside\n\t * same parent container.\n\t *\n\t * @param rangeOrItem Range to remove from container\n\t * or an {@link module:engine/view/item~Item item} to remove. If range is provided, after removing, it will be updated\n\t * to a collapsed range showing the new position.\n\t * @returns Document fragment containing removed nodes.\n\t */\n\tpublic remove( rangeOrItem: Range | Item ): DocumentFragment {\n\t\tconst range = rangeOrItem instanceof Range ? rangeOrItem : Range._createOn( rangeOrItem );\n\n\t\tvalidateRangeContainer( range, this.document );\n\n\t\t// If range is collapsed - nothing to remove.\n\t\tif ( range.isCollapsed ) {\n\t\t\treturn new DocumentFragment( this.document );\n\t\t}\n\n\t\t// Break attributes at range start and end.\n\t\tconst { start: breakStart, end: breakEnd } = this._breakAttributesRange( range, true );\n\t\tconst parentContainer = breakStart.parent as Element;\n\n\t\tconst count = breakEnd.offset - breakStart.offset;\n\n\t\t// Remove nodes in range.\n\t\tconst removed = parentContainer._removeChildren( breakStart.offset, count );\n\n\t\tfor ( const node of removed ) {\n\t\t\tthis._removeFromClonedElementsGroup( node );\n\t\t}\n\n\t\t// Merge after removing.\n\t\tconst mergePosition = this.mergeAttributes( breakStart );\n\t\t( range as any ).start = mergePosition;\n\t\t( range as any ).end = mergePosition.clone();\n\n\t\t// Return removed nodes.\n\t\treturn new DocumentFragment( this.document, removed );\n\t}\n\n\t/**\n\t * Removes matching elements from given range.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when\n\t * {@link module:engine/view/range~Range#start start} and {@link module:engine/view/range~Range#end end} positions are not placed inside\n\t * same parent container.\n\t *\n\t * @param range Range to clear.\n\t * @param element Element to remove.\n\t */\n\tpublic clear( range: Range, element: Element ): void {\n\t\tvalidateRangeContainer( range, this.document );\n\n\t\t// Create walker on given range.\n\t\t// We walk backward because when we remove element during walk it modifies range end position.\n\t\tconst walker = range.getWalker( {\n\t\t\tdirection: 'backward',\n\t\t\tignoreElementEnd: true\n\t\t} );\n\n\t\t// Let's walk.\n\t\tfor ( const current of walker ) {\n\t\t\tconst item = current.item;\n\t\t\tlet rangeToRemove;\n\n\t\t\t// When current item matches to the given element.\n\t\t\tif ( item.is( 'element' ) && element.isSimilar( item ) ) {\n\t\t\t\t// Create range on this element.\n\t\t\t\trangeToRemove = Range._createOn( item );\n\t\t\t\t// When range starts inside Text or TextProxy element.\n\t\t\t} else if ( !current.nextPosition.isAfter( range.start ) && item.is( '$textProxy' ) ) {\n\t\t\t\t// We need to check if parent of this text matches to given element.\n\t\t\t\tconst parentElement = item.getAncestors().find( ancestor => {\n\t\t\t\t\treturn ancestor.is( 'element' ) && element.isSimilar( ancestor );\n\t\t\t\t} );\n\n\t\t\t\t// If it is then create range inside this element.\n\t\t\t\tif ( parentElement ) {\n\t\t\t\t\trangeToRemove = Range._createIn( parentElement as Element );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If we have found element to remove.\n\t\t\tif ( rangeToRemove ) {\n\t\t\t\t// We need to check if element range stick out of the given range and truncate if it is.\n\t\t\t\tif ( rangeToRemove.end.isAfter( range.end ) ) {\n\t\t\t\t\t( rangeToRemove as any ).end = range.end;\n\t\t\t\t}\n\n\t\t\t\tif ( rangeToRemove.start.isBefore( range.start ) ) {\n\t\t\t\t\t( rangeToRemove as any ).start = range.start;\n\t\t\t\t}\n\n\t\t\t\t// At the end we remove range with found element.\n\t\t\t\tthis.remove( rangeToRemove );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Moves nodes from provided range to target position.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when\n\t * {@link module:engine/view/range~Range#start start} and {@link module:engine/view/range~Range#end end} positions are not placed inside\n\t * same parent container.\n\t *\n\t * @param sourceRange Range containing nodes to move.\n\t * @param targetPosition Position to insert.\n\t * @returns Range in target container. Inserted nodes are placed between\n\t * {@link module:engine/view/range~Range#start start} and {@link module:engine/view/range~Range#end end} positions.\n\t */\n\tpublic move( sourceRange: Range, targetPosition: Position ): Range {\n\t\tlet nodes;\n\n\t\tif ( targetPosition.isAfter( sourceRange.end ) ) {\n\t\t\ttargetPosition = this._breakAttributes( targetPosition, true );\n\n\t\t\tconst parent = targetPosition.parent as Element;\n\t\t\tconst countBefore = parent.childCount;\n\n\t\t\tsourceRange = this._breakAttributesRange( sourceRange, true );\n\n\t\t\tnodes = this.remove( sourceRange );\n\n\t\t\ttargetPosition.offset += ( parent.childCount - countBefore );\n\t\t} else {\n\t\t\tnodes = this.remove( sourceRange );\n\t\t}\n\n\t\treturn this.insert( targetPosition, nodes );\n\t}\n\n\t/**\n\t * Wraps elements within range with provided {@link module:engine/view/attributeelement~AttributeElement AttributeElement}.\n\t * If a collapsed range is provided, it will be wrapped only if it is equal to view selection.\n\t *\n\t * If a collapsed range was passed and is same as selection, the selection\n\t * will be moved to the inside of the wrapped attribute element.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError} `view-writer-invalid-range-container`\n\t * when {@link module:engine/view/range~Range#start}\n\t * and {@link module:engine/view/range~Range#end} positions are not placed inside same parent container.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError} `view-writer-wrap-invalid-attribute` when passed attribute element is not\n\t * an instance of {@link module:engine/view/attributeelement~AttributeElement AttributeElement}.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError} `view-writer-wrap-nonselection-collapsed-range` when passed range\n\t * is collapsed and different than view selection.\n\t *\n\t * @param range Range to wrap.\n\t * @param attribute Attribute element to use as wrapper.\n\t * @returns range Range after wrapping, spanning over wrapping attribute element.\n\t */\n\tpublic wrap( range: Range, attribute: AttributeElement ): Range {\n\t\tif ( !( attribute instanceof AttributeElement ) ) {\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'view-writer-wrap-invalid-attribute',\n\t\t\t\tthis.document\n\t\t\t);\n\t\t}\n\n\t\tvalidateRangeContainer( range, this.document );\n\n\t\tif ( !range.isCollapsed ) {\n\t\t\t// Non-collapsed range. Wrap it with the attribute element.\n\t\t\treturn this._wrapRange( range, attribute );\n\t\t} else {\n\t\t\t// Collapsed range. Wrap position.\n\t\t\tlet position = range.start;\n\n\t\t\tif ( position.parent.is( 'element' ) && !_hasNonUiChildren( position.parent ) ) {\n\t\t\t\tposition = position.getLastMatchingPosition( value => value.item.is( 'uiElement' ) );\n\t\t\t}\n\n\t\t\tposition = this._wrapPosition( position, attribute );\n\t\t\tconst viewSelection = this.document.selection;\n\n\t\t\t// If wrapping position is equal to view selection, move view selection inside wrapping attribute element.\n\t\t\tif ( viewSelection.isCollapsed && viewSelection.getFirstPosition()!.isEqual( range.start ) ) {\n\t\t\t\tthis.setSelection( position );\n\t\t\t}\n\n\t\t\treturn new Range( position );\n\t\t}\n\t}\n\n\t/**\n\t * Unwraps nodes within provided range from attribute element.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when\n\t * {@link module:engine/view/range~Range#start start} and {@link module:engine/view/range~Range#end end} positions are not placed inside\n\t * same parent container.\n\t */\n\tpublic unwrap( range: Range, attribute: AttributeElement ): Range {\n\t\tif ( !( attribute instanceof AttributeElement ) ) {\n\t\t\t/**\n\t\t\t * The `attribute` passed to {@link module:engine/view/downcastwriter~DowncastWriter#unwrap `DowncastWriter#unwrap()`}\n\t\t\t * must be an instance of {@link module:engine/view/attributeelement~AttributeElement `AttributeElement`}.\n\t\t\t *\n\t\t\t * @error view-writer-unwrap-invalid-attribute\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'view-writer-unwrap-invalid-attribute',\n\t\t\t\tthis.document\n\t\t\t);\n\t\t}\n\n\t\tvalidateRangeContainer( range, this.document );\n\n\t\t// If range is collapsed - nothing to unwrap.\n\t\tif ( range.isCollapsed ) {\n\t\t\treturn range;\n\t\t}\n\n\t\t// Break attributes at range start and end.\n\t\tconst { start: breakStart, end: breakEnd } = this._breakAttributesRange( range, true );\n\t\tconst parentContainer = breakStart.parent as Element;\n\n\t\t// Unwrap children located between break points.\n\t\tconst newRange = this._unwrapChildren( parentContainer, breakStart.offset, breakEnd.offset, attribute );\n\n\t\t// Merge attributes at the both ends and return a new range.\n\t\tconst start = this.mergeAttributes( newRange.start );\n\n\t\t// If start position was merged - move end position back.\n\t\tif ( !start.isEqual( newRange.start ) ) {\n\t\t\tnewRange.end.offset--;\n\t\t}\n\n\t\tconst end = this.mergeAttributes( newRange.end );\n\n\t\treturn new Range( start, end );\n\t}\n\n\t/**\n\t * Renames element by creating a copy of renamed element but with changed name and then moving contents of the\n\t * old element to the new one. Keep in mind that this will invalidate all {@link module:engine/view/position~Position positions} which\n\t * has renamed element as {@link module:engine/view/position~Position#parent a parent}.\n\t *\n\t * New element has to be created because `Element#tagName` property in DOM is readonly.\n\t *\n\t * Since this function creates a new element and removes the given one, the new element is returned to keep reference.\n\t *\n\t * @param newName New name for element.\n\t * @param viewElement Element to be renamed.\n\t * @returns Element created due to rename.\n\t */\n\tpublic rename( newName: string, viewElement: ContainerElement ): ContainerElement {\n\t\tconst newElement = new ContainerElement( this.document, newName, viewElement.getAttributes() );\n\n\t\tthis.insert( Position._createAfter( viewElement ), newElement );\n\t\tthis.move( Range._createIn( viewElement ), Position._createAt( newElement, 0 ) );\n\t\tthis.remove( Range._createOn( viewElement ) );\n\n\t\treturn newElement;\n\t}\n\n\t/**\n\t * Cleans up memory by removing obsolete cloned elements group from the writer.\n\t *\n\t * Should be used whenever all {@link module:engine/view/attributeelement~AttributeElement attribute elements}\n\t * with the same {@link module:engine/view/attributeelement~AttributeElement#id id} are going to be removed from the view and\n\t * the group will no longer be needed.\n\t *\n\t * Cloned elements group are not removed automatically in case if the group is still needed after all its elements\n\t * were removed from the view.\n\t *\n\t * Keep in mind that group names are equal to the `id` property of the attribute element.\n\t *\n\t * @param groupName Name of the group to clear.\n\t */\n\tpublic clearClonedElementsGroup( groupName: string ): void {\n\t\tthis._cloneGroups.delete( groupName );\n\t}\n\n\t/**\n\t * Creates position at the given location. The location can be specified as:\n\t *\n\t * * a {@link module:engine/view/position~Position position},\n\t * * parent element and offset (offset defaults to `0`),\n\t * * parent element and `'end'` (sets position at the end of that element),\n\t * * {@link module:engine/view/item~Item view item} and `'before'` or `'after'` (sets position before or after given view item).\n\t *\n\t * This method is a shortcut to other constructors such as:\n\t *\n\t * * {@link #createPositionBefore},\n\t * * {@link #createPositionAfter},\n\t *\n\t * @param offset Offset or one of the flags. Used only when the first parameter is a {@link module:engine/view/item~Item view item}.\n\t */\n\tpublic createPositionAt( itemOrPosition: Item | Position, offset?: PositionOffset ): Position {\n\t\treturn Position._createAt( itemOrPosition, offset );\n\t}\n\n\t/**\n\t * Creates a new position after given view item.\n\t *\n\t * @param item View item after which the position should be located.\n\t */\n\tpublic createPositionAfter( item: Item ): Position {\n\t\treturn Position._createAfter( item );\n\t}\n\n\t/**\n\t * Creates a new position before given view item.\n\t *\n\t * @param item View item before which the position should be located.\n\t */\n\tpublic createPositionBefore( item: Item ): Position {\n\t\treturn Position._createBefore( item );\n\t}\n\n\t/**\n\t * Creates a range spanning from `start` position to `end` position.\n\t *\n\t * **Note:** This factory method creates its own {@link module:engine/view/position~Position} instances basing on passed values.\n\t *\n\t * @param start Start position.\n\t * @param end End position. If not set, range will be collapsed at `start` position.\n\t */\n\tpublic createRange( start: Position, end?: Position | null ): Range {\n\t\treturn new Range( start, end );\n\t}\n\n\t/**\n\t * Creates a range that starts before given {@link module:engine/view/item~Item view item} and ends after it.\n\t */\n\tpublic createRangeOn( item: Item ): Range {\n\t\treturn Range._createOn( item );\n\t}\n\n\t/**\n\t * Creates a range inside an {@link module:engine/view/element~Element element} which starts before the first child of\n\t * that element and ends after the last child of that element.\n\t *\n\t * @param element Element which is a parent for the range.\n\t */\n\tpublic createRangeIn( element: Element | DocumentFragment ): Range {\n\t\treturn Range._createIn( element );\n\t}\n\n\t/**\n\t * Creates new {@link module:engine/view/selection~Selection} instance.\n\t *\n\t * ```ts\n\t * // Creates collapsed selection at the position of given item and offset.\n\t * const paragraph = writer.createContainerElement( 'p' );\n\t * const selection = writer.createSelection( paragraph, offset );\n\t *\n\t * // Creates a range inside an {@link module:engine/view/element~Element element} which starts before the\n\t * // first child of that element and ends after the last child of that element.\n\t * const selection = writer.createSelection( paragraph, 'in' );\n\t *\n\t * // Creates a range on an {@link module:engine/view/item~Item item} which starts before the item and ends\n\t * // just after the item.\n\t * const selection = writer.createSelection( paragraph, 'on' );\n\t * ```\n\t *\n\t * `Selection`'s constructor allow passing additional options (`backward`, `fake` and `label`) as the last argument.\n\t *\n\t * ```ts\n\t * // Creates backward selection.\n\t * const selection = writer.createSelection( element, 'in', { backward: true } );\n\t * ```\n\t *\n\t * Fake selection does not render as browser native selection over selected elements and is hidden to the user.\n\t * This way, no native selection UI artifacts are displayed to the user and selection over elements can be\n\t * represented in other way, for example by applying proper CSS class.\n\t *\n\t * Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM\n\t * (and be properly handled by screen readers).\n\t *\n\t * ```ts\n\t * // Creates fake selection with label.\n\t * const selection = writer.createSelection( element, 'in', { fake: true, label: 'foo' } );\n\t * ```\n\t *\n\t * See also: {@link #createSelection:SELECTABLE `createSelection( selectable, options )`}.\n\t *\n\t * @label NODE_OFFSET\n\t */\n\tpublic createSelection( selectable: Node, placeOrOffset: PlaceOrOffset, options?: SelectionOptions ): Selection;\n\n\t/**\n\t * Creates new {@link module:engine/view/selection~Selection} instance.\n\t *\n\t * ```ts\n\t * // Creates empty selection without ranges.\n\t * const selection = writer.createSelection();\n\t *\n\t * // Creates selection at the given range.\n\t * const range = writer.createRange( start, end );\n\t * const selection = writer.createSelection( range );\n\t *\n\t * // Creates selection at the given ranges\n\t * const ranges = [ writer.createRange( start1, end2 ), writer.createRange( star2, end2 ) ];\n\t * const selection = writer.createSelection( ranges );\n\t *\n\t * // Creates selection from the other selection.\n\t * const otherSelection = writer.createSelection();\n\t * const selection = writer.createSelection( otherSelection );\n\t *\n\t * // Creates selection from the document selection.\n\t * const selection = writer.createSelection( editor.editing.view.document.selection );\n\t *\n\t * // Creates selection at the given position.\n\t * const position = writer.createPositionFromPath( root, path );\n\t * const selection = writer.createSelection( position );\n\t * ```\n\t *\n\t * `Selection`'s constructor allow passing additional options (`backward`, `fake` and `label`) as the last argument.\n\t *\n\t * ```ts\n\t * // Creates backward selection.\n\t * const selection = writer.createSelection( range, { backward: true } );\n\t * ```\n\t *\n\t * Fake selection does not render as browser native selection over selected elements and is hidden to the user.\n\t * This way, no native selection UI artifacts are displayed to the user and selection over elements can be\n\t * represented in other way, for example by applying proper CSS class.\n\t *\n\t * Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM\n\t * (and be properly handled by screen readers).\n\t *\n\t * ```ts\n\t * // Creates fake selection with label.\n\t * const selection = writer.createSelection( range, { fake: true, label: 'foo' } );\n\t * ```\n\t *\n\t * See also: {@link #createSelection:NODE_OFFSET `createSelection( node, placeOrOffset, options )`}.\n\t *\n\t * @label SELECTABLE\n\t */\n\tpublic createSelection( selectable?: Exclude<Selectable, Node>, option?: SelectionOptions ): Selection;\n\n\tpublic createSelection( ...args: ConstructorParameters<typeof Selection> ): Selection {\n\t\treturn new Selection( ...args );\n\t}\n\n\t/**\n\t * Creates placeholders for child elements of the {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToStructure\n\t * `elementToStructure()`} conversion helper.\n\t *\n\t * ```ts\n\t * const viewSlot = conversionApi.writer.createSlot();\n\t * const viewPosition = conversionApi.writer.createPositionAt( viewElement, 0 );\n\t *\n\t * conversionApi.writer.insert( viewPosition, viewSlot );\n\t * ```\n\t *\n\t * It could be filtered down to a specific subset of children (only `<foo>` model elements in this case):\n\t *\n\t * ```ts\n\t * const viewSlot = conversionApi.writer.createSlot( node => node.is( 'element', 'foo' ) );\n\t * const viewPosition = conversionApi.writer.createPositionAt( viewElement, 0 );\n\t *\n\t * conversionApi.writer.insert( viewPosition, viewSlot );\n\t * ```\n\t *\n\t * While providing a filtered slot, make sure to provide slots for all child nodes. A single node can not be downcasted into\n\t * multiple slots.\n\t *\n\t * **Note**: You should not change the order of nodes. View elements should be in the same order as model nodes.\n\t *\n\t * @param modeOrFilter The filter for child nodes.\n\t * @returns The slot element to be placed in to the view structure while processing\n\t * {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToStructure `elementToStructure()`}.\n\t */\n\tpublic createSlot( modeOrFilter: 'children' | SlotFilter = 'children' ): Element {\n\t\tif ( !this._slotFactory ) {\n\t\t\t/**\n\t\t\t * The `createSlot()` method is only allowed inside the `elementToStructure` downcast helper callback.\n\t\t\t *\n\t\t\t * @error view-writer-invalid-create-slot-context\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-writer-invalid-create-slot-context', this.document );\n\t\t}\n\n\t\treturn this._slotFactory( this, modeOrFilter );\n\t}\n\n\t/**\n\t * Registers a slot factory.\n\t *\n\t * @internal\n\t * @param slotFactory The slot factory.\n\t */\n\tpublic _registerSlotFactory( slotFactory: ( writer: DowncastWriter, modeOrFilter: string | SlotFilter ) => Element ): void {\n\t\tthis._slotFactory = slotFactory;\n\t}\n\n\t/**\n\t * Clears the registered slot factory.\n\t *\n\t * @internal\n\t */\n\tpublic _clearSlotFactory(): void {\n\t\tthis._slotFactory = null;\n\t}\n\n\t/**\n\t * Inserts a node or nodes at the specified position. Takes care of breaking attributes before insertion\n\t * and merging them afterwards if requested by the breakAttributes param.\n\t *\n\t * @param position Insertion position.\n\t * @param nodes Node or nodes to insert.\n\t * @param breakAttributes Whether attributes should be broken.\n\t * @returns Range around inserted nodes.\n\t */\n\tprivate _insertNodes( position: Position, nodes: Iterable<Node>, breakAttributes: boolean ): Range {\n\t\tlet parentElement;\n\n\t\t// Break attributes on nodes that do exist in the model tree so they can have attributes, other elements\n\t\t// can't have an attribute in model and won't get wrapped with an AttributeElement while down-casted.\n\t\tif ( breakAttributes ) {\n\t\t\tparentElement = getParentContainer( position );\n\t\t} else {\n\t\t\tparentElement = position.parent.is( '$text' ) ? position.parent.parent : position.parent;\n\t\t}\n\n\t\tif ( !parentElement ) {\n\t\t\t/**\n\t\t\t * Position's parent container cannot be found.\n\t\t\t *\n\t\t\t * @error view-writer-invalid-position-container\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'view-writer-invalid-position-container',\n\t\t\t\tthis.document\n\t\t\t);\n\t\t}\n\n\t\tlet insertionPosition;\n\n\t\tif ( breakAttributes ) {\n\t\t\tinsertionPosition = this._breakAttributes( position, true );\n\t\t} else {\n\t\t\tinsertionPosition = position.parent.is( '$text' ) ? breakTextNode( position ) : position;\n\t\t}\n\n\t\tconst length = ( parentElement as Element | DocumentFragment )._insertChild( insertionPosition.offset, nodes );\n\n\t\tfor ( const node of nodes ) {\n\t\t\tthis._addToClonedElementsGroup( node );\n\t\t}\n\n\t\tconst endPosition = insertionPosition.getShiftedBy( length );\n\t\tconst start = this.mergeAttributes( insertionPosition );\n\n\t\t// If start position was merged - move end position.\n\t\tif ( !start.isEqual( insertionPosition ) ) {\n\t\t\tendPosition.offset--;\n\t\t}\n\n\t\tconst end = this.mergeAttributes( endPosition );\n\n\t\treturn new Range( start, end );\n\t}\n\n\t/**\n\t * Wraps children with provided `wrapElement`. Only children contained in `parent` element between\n\t * `startOffset` and `endOffset` will be wrapped.\n\t */\n\tprivate _wrapChildren( parent: Element, startOffset: number, endOffset: number, wrapElement: AttributeElement ) {\n\t\tlet i = startOffset;\n\t\tconst wrapPositions: Array<Position> = [];\n\n\t\twhile ( i < endOffset ) {\n\t\t\tconst child = parent.getChild( i )!;\n\t\t\tconst isText = child.is( '$text' );\n\t\t\tconst isAttribute = child.is( 'attributeElement' );\n\n\t\t\t//\n\t\t\t// (In all examples, assume that `wrapElement` is `<span class=\"foo\">` element.)\n\t\t\t//\n\t\t\t// Check if `wrapElement` can be joined with the wrapped element. One of requirements is having same name.\n\t\t\t// If possible, join elements.\n\t\t\t//\n\t\t\t// <p><span class=\"bar\">abc</span></p> --> <p><span class=\"foo bar\">abc</span></p>\n\t\t\t//\n\t\t\tif ( isAttribute && this._wrapAttributeElement( wrapElement, child ) ) {\n\t\t\t\twrapPositions.push( new Position( parent, i ) );\n\t\t\t}\n\t\t\t//\n\t\t\t// Wrap the child if it is not an attribute element or if it is an attribute element that should be inside\n\t\t\t// `wrapElement` (due to priority).\n\t\t\t//\n\t\t\t// <p>abc</p> --> <p><span class=\"foo\">abc</span></p>\n\t\t\t// <p><strong>abc</strong></p> --> <p><span class=\"foo\"><strong>abc</strong></span></p>\n\t\t\telse if ( isText || !isAttribute || shouldABeOutsideB( wrapElement, child ) ) {\n\t\t\t\t// Clone attribute.\n\t\t\t\tconst newAttribute = wrapElement._clone();\n\n\t\t\t\t// Wrap current node with new attribute.\n\t\t\t\tchild._remove();\n\t\t\t\tnewAttribute._appendChild( child );\n\n\t\t\t\tparent._insertChild( i, newAttribute );\n\t\t\t\tthis._addToClonedElementsGroup( newAttribute );\n\n\t\t\t\twrapPositions.push( new Position( parent, i ) );\n\t\t\t}\n\t\t\t//\n\t\t\t// If other nested attribute is found and it wasn't wrapped (see above), continue wrapping inside it.\n\t\t\t//\n\t\t\t// <p><a href=\"foo.html\">abc</a></p> --> <p><a href=\"foo.html\"><span class=\"foo\">abc</span></a></p>\n\t\t\t//\n\t\t\telse /* if ( isAttribute ) */ {\n\t\t\t\tthis._wrapChildren( child, 0, child.childCount, wrapElement );\n\t\t\t}\n\n\t\t\ti++;\n\t\t}\n\n\t\t// Merge at each wrap.\n\t\tlet offsetChange = 0;\n\n\t\tfor ( const position of wrapPositions ) {\n\t\t\tposition.offset -= offsetChange;\n\n\t\t\t// Do not merge with elements outside selected children.\n\t\t\tif ( position.offset == startOffset ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst newPosition = this.mergeAttributes( position );\n\n\t\t\t// If nodes were merged - other merge offsets will change.\n\t\t\tif ( !newPosition.isEqual( position ) ) {\n\t\t\t\toffsetChange++;\n\t\t\t\tendOffset--;\n\t\t\t}\n\t\t}\n\n\t\treturn Range._createFromParentsAndOffsets( parent, startOffset, parent, endOffset );\n\t}\n\n\t/**\n\t * Unwraps children from provided `unwrapElement`. Only children contained in `parent` element between\n\t * `startOffset` and `endOffset` will be unwrapped.\n\t */\n\tprivate _unwrapChildren( parent: Element, startOffset: number, endOffset: number, unwrapElement: AttributeElement ) {\n\t\tlet i = startOffset;\n\t\tconst unwrapPositions: Array<Position> = [];\n\n\t\t// Iterate over each element between provided offsets inside parent.\n\t\t// We don't use tree walker or range iterator because we will be removing and merging potentially multiple nodes,\n\t\t// so it could get messy. It is safer to it manually in this case.\n\t\twhile ( i < endOffset ) {\n\t\t\tconst child = parent.getChild( i )!;\n\n\t\t\t// Skip all text nodes. There should be no container element's here either.\n\t\t\tif ( !child.is( 'attributeElement' ) ) {\n\t\t\t\ti++;\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t//\n\t\t\t// (In all examples, assume that `unwrapElement` is `<span class=\"foo\">` element.)\n\t\t\t//\n\t\t\t// If the child is similar to the given attribute element, unwrap it - it will be completely removed.\n\t\t\t//\n\t\t\t// <p><span class=\"foo\">abc</span>xyz</p> --> <p>abcxyz</p>\n\t\t\t//\n\t\t\tif ( child.isSimilar( unwrapElement ) ) {\n\t\t\t\tconst unwrapped = child.getChildren();\n\t\t\t\tconst count = child.childCount;\n\n\t\t\t\t// Replace wrapper element with its children\n\t\t\t\tchild._remove();\n\t\t\t\tparent._insertChild( i, unwrapped );\n\n\t\t\t\tthis._removeFromClonedElementsGroup( child );\n\n\t\t\t\t// Save start and end position of moved items.\n\t\t\t\tunwrapPositions.push(\n\t\t\t\t\tnew Position( parent, i ),\n\t\t\t\t\tnew Position( parent, i + count )\n\t\t\t\t);\n\n\t\t\t\t// Skip elements that were unwrapped. Assuming there won't be another element to unwrap in child elements.\n\t\t\t\ti += count;\n\t\t\t\tendOffset += count - 1;\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t//\n\t\t\t// If the child is not similar but is an attribute element, try partial unwrapping - remove the same attributes/styles/classes.\n\t\t\t// Partial unwrapping will happen only if the elements have the same name.\n\t\t\t//\n\t\t\t// <p><span class=\"foo bar\">abc</span>xyz</p> --> <p><span class=\"bar\">abc</span>xyz</p>\n\t\t\t// <p><i class=\"foo\">abc</i>xyz</p> --> <p><i class=\"foo\">abc</i>xyz</p>\n\t\t\t//\n\t\t\tif ( this._unwrapAttributeElement( unwrapElement, child ) ) {\n\t\t\t\tunwrapPositions.push(\n\t\t\t\t\tnew Position( parent, i ),\n\t\t\t\t\tnew Position( parent, i + 1 )\n\t\t\t\t);\n\n\t\t\t\ti++;\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t//\n\t\t\t// If other nested attribute is found, look through it's children for elements to unwrap.\n\t\t\t//\n\t\t\t// <p><i><span class=\"foo\">abc</span></i><p> --> <p><i>abc</i><p>\n\t\t\t//\n\t\t\tthis._unwrapChildren( child, 0, child.childCount, unwrapElement );\n\n\t\t\ti++;\n\t\t}\n\n\t\t// Merge at each unwrap.\n\t\tlet offsetChange = 0;\n\n\t\tfor ( const position of unwrapPositions ) {\n\t\t\tposition.offset -= offsetChange;\n\n\t\t\t// Do not merge with elements outside selected children.\n\t\t\tif ( position.offset == startOffset || position.offset == endOffset ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst newPosition = this.mergeAttributes( position );\n\n\t\t\t// If nodes were merged - other merge offsets will change.\n\t\t\tif ( !newPosition.isEqual( position ) ) {\n\t\t\t\toffsetChange++;\n\t\t\t\tendOffset--;\n\t\t\t}\n\t\t}\n\n\t\treturn Range._createFromParentsAndOffsets( parent, startOffset, parent, endOffset );\n\t}\n\n\t/**\n\t * Helper function for `view.writer.wrap`. Wraps range with provided attribute element.\n\t * This method will also merge newly added attribute element with its siblings whenever possible.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError} `view-writer-wrap-invalid-attribute` when passed attribute element is not\n\t * an instance of {@link module:engine/view/attributeelement~AttributeElement AttributeElement}.\n\t *\n\t * @returns New range after wrapping, spanning over wrapping attribute element.\n\t */\n\tprivate _wrapRange( range: Range, attribute: AttributeElement ): Range {\n\t\t// Break attributes at range start and end.\n\t\tconst { start: breakStart, end: breakEnd } = this._breakAttributesRange( range, true );\n\t\tconst parentContainer = breakStart.parent as Element;\n\n\t\t// Wrap all children with attribute.\n\t\tconst newRange = this._wrapChildren( parentContainer, breakStart.offset, breakEnd.offset, attribute );\n\n\t\t// Merge attributes at the both ends and return a new range.\n\t\tconst start = this.mergeAttributes( newRange.start );\n\n\t\t// If start position was merged - move end position back.\n\t\tif ( !start.isEqual( newRange.start ) ) {\n\t\t\tnewRange.end.offset--;\n\t\t}\n\t\tconst end = this.mergeAttributes( newRange.end );\n\n\t\treturn new Range( start, end );\n\t}\n\n\t/**\n\t * Helper function for {@link #wrap}. Wraps position with provided attribute element.\n\t * This method will also merge newly added attribute element with its siblings whenever possible.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError} `view-writer-wrap-invalid-attribute` when passed attribute element is not\n\t * an instance of {@link module:engine/view/attributeelement~AttributeElement AttributeElement}.\n\t *\n\t * @returns New position after wrapping.\n\t */\n\tprivate _wrapPosition( position: Position, attribute: AttributeElement ): Position {\n\t\t// Return same position when trying to wrap with attribute similar to position parent.\n\t\tif ( attribute.isSimilar( position.parent as any ) ) {\n\t\t\treturn movePositionToTextNode( position.clone() );\n\t\t}\n\n\t\t// When position is inside text node - break it and place new position between two text nodes.\n\t\tif ( position.parent.is( '$text' ) ) {\n\t\t\tposition = breakTextNode( position );\n\t\t}\n\n\t\t// Create fake element that will represent position, and will not be merged with other attributes.\n\t\tconst fakeElement = this.createAttributeElement( '_wrapPosition-fake-element' );\n\t\t( fakeElement as any )._priority = Number.POSITIVE_INFINITY;\n\t\tfakeElement.isSimilar = () => false;\n\n\t\t// Insert fake element in position location.\n\t\t( position.parent as Element )._insertChild( position.offset, fakeElement );\n\n\t\t// Range around inserted fake attribute element.\n\t\tconst wrapRange = new Range( position, position.getShiftedBy( 1 ) );\n\n\t\t// Wrap fake element with attribute (it will also merge if possible).\n\t\tthis.wrap( wrapRange, attribute );\n\n\t\t// Remove fake element and place new position there.\n\t\tconst newPosition = new Position( fakeElement.parent!, fakeElement.index! );\n\t\tfakeElement._remove();\n\n\t\t// If position is placed between text nodes - merge them and return position inside.\n\t\tconst nodeBefore = newPosition.nodeBefore;\n\t\tconst nodeAfter = newPosition.nodeAfter;\n\n\t\tif ( nodeBefore instanceof Text && nodeAfter instanceof Text ) {\n\t\t\treturn mergeTextNodes( nodeBefore, nodeAfter );\n\t\t}\n\n\t\t// If position is next to text node - move position inside.\n\t\treturn movePositionToTextNode( newPosition );\n\t}\n\n\t/**\n\t * Wraps one {@link module:engine/view/attributeelement~AttributeElement AttributeElement} into another by\n\t * merging them if possible. When merging is possible - all attributes, styles and classes are moved from wrapper\n\t * element to element being wrapped.\n\t *\n\t * @param wrapper Wrapper AttributeElement.\n\t * @param toWrap AttributeElement to wrap using wrapper element.\n\t * @returns Returns `true` if elements are merged.\n\t */\n\tprivate _wrapAttributeElement( wrapper: AttributeElement, toWrap: AttributeElement ): boolean {\n\t\tif ( !canBeJoined( wrapper, toWrap ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Can't merge if name or priority differs.\n\t\tif ( wrapper.name !== toWrap.name || wrapper.priority !== toWrap.priority ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check if attributes can be merged.\n\t\tfor ( const key of wrapper.getAttributeKeys() ) {\n\t\t\t// Classes and styles should be checked separately.\n\t\t\tif ( key === 'class' || key === 'style' ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If some attributes are different we cannot wrap.\n\t\t\tif ( toWrap.hasAttribute( key ) && toWrap.getAttribute( key ) !== wrapper.getAttribute( key ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Check if styles can be merged.\n\t\tfor ( const key of wrapper.getStyleNames() ) {\n\t\t\tif ( toWrap.hasStyle( key ) && toWrap.getStyle( key ) !== wrapper.getStyle( key ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Move all attributes/classes/styles from wrapper to wrapped AttributeElement.\n\t\tfor ( const key of wrapper.getAttributeKeys() ) {\n\t\t\t// Classes and styles should be checked separately.\n\t\t\tif ( key === 'class' || key === 'style' ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Move only these attributes that are not present - other are similar.\n\t\t\tif ( !toWrap.hasAttribute( key ) ) {\n\t\t\t\tthis.setAttribute( key, wrapper.getAttribute( key )!, toWrap );\n\t\t\t}\n\t\t}\n\n\t\tfor ( const key of wrapper.getStyleNames() ) {\n\t\t\tif ( !toWrap.hasStyle( key ) ) {\n\t\t\t\tthis.setStyle( key, wrapper.getStyle( key )!, toWrap );\n\t\t\t}\n\t\t}\n\n\t\tfor ( const key of wrapper.getClassNames() ) {\n\t\t\tif ( !toWrap.hasClass( key ) ) {\n\t\t\t\tthis.addClass( key, toWrap );\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Unwraps {@link module:engine/view/attributeelement~AttributeElement AttributeElement} from another by removing\n\t * corresponding attributes, classes and styles. All attributes, classes and styles from wrapper should be present\n\t * inside element being unwrapped.\n\t *\n\t * @param wrapper Wrapper AttributeElement.\n\t * @param toUnwrap AttributeElement to unwrap using wrapper element.\n\t * @returns Returns `true` if elements are unwrapped.\n\t **/\n\tprivate _unwrapAttributeElement( wrapper: AttributeElement, toUnwrap: AttributeElement ): boolean {\n\t\tif ( !canBeJoined( wrapper, toUnwrap ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Can't unwrap if name or priority differs.\n\t\tif ( wrapper.name !== toUnwrap.name || wrapper.priority !== toUnwrap.priority ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check if AttributeElement has all wrapper attributes.\n\t\tfor ( const key of wrapper.getAttributeKeys() ) {\n\t\t\t// Classes and styles should be checked separately.\n\t\t\tif ( key === 'class' || key === 'style' ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If some attributes are missing or different we cannot unwrap.\n\t\t\tif ( !toUnwrap.hasAttribute( key ) || toUnwrap.getAttribute( key ) !== wrapper.getAttribute( key ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Check if AttributeElement has all wrapper classes.\n\t\tif ( !toUnwrap.hasClass( ...wrapper.getClassNames() ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check if AttributeElement has all wrapper styles.\n\t\tfor ( const key of wrapper.getStyleNames() ) {\n\t\t\t// If some styles are missing or different we cannot unwrap.\n\t\t\tif ( !toUnwrap.hasStyle( key ) || toUnwrap.getStyle( key ) !== wrapper.getStyle( key ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// Remove all wrapper's attributes from unwrapped element.\n\t\tfor ( const key of wrapper.getAttributeKeys() ) {\n\t\t\t// Classes and styles should be checked separately.\n\t\t\tif ( key === 'class' || key === 'style' ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis.removeAttribute( key, toUnwrap );\n\t\t}\n\n\t\t// Remove all wrapper's classes from unwrapped element.\n\t\tthis.removeClass( Array.from( wrapper.getClassNames() ), toUnwrap );\n\n\t\t// Remove all wrapper's styles from unwrapped element.\n\t\tthis.removeStyle( Array.from( wrapper.getStyleNames() ), toUnwrap );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Helper function used by other `DowncastWriter` methods. Breaks attribute elements at the boundaries of given range.\n\t *\n\t * @param range Range which `start` and `end` positions will be used to break attributes.\n\t * @param forceSplitText If set to `true`, will break text nodes even if they are directly in container element.\n\t * This behavior will result in incorrect view state, but is needed by other view writing methods which then fixes view state.\n\t * @returns New range with located at break positions.\n\t */\n\tprivate _breakAttributesRange( range: Range, forceSplitText: boolean = false ) {\n\t\tconst rangeStart = range.start;\n\t\tconst rangeEnd = range.end;\n\n\t\tvalidateRangeContainer( range, this.document );\n\n\t\t// Break at the collapsed position. Return new collapsed range.\n\t\tif ( range.isCollapsed ) {\n\t\t\tconst position = this._breakAttributes( range.start, forceSplitText );\n\n\t\t\treturn new Range( position, position );\n\t\t}\n\n\t\tconst breakEnd = this._breakAttributes( rangeEnd, forceSplitText );\n\t\tconst count = ( breakEnd.parent as Element ).childCount;\n\t\tconst breakStart = this._breakAttributes( rangeStart, forceSplitText );\n\n\t\t// Calculate new break end offset.\n\t\tbreakEnd.offset += ( breakEnd.parent as Element ).childCount - count;\n\n\t\treturn new Range( breakStart, breakEnd );\n\t}\n\n\t/**\n\t * Helper function used by other `DowncastWriter` methods. Breaks attribute elements at given position.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-cannot-break-empty-element` when break position\n\t * is placed inside {@link module:engine/view/emptyelement~EmptyElement EmptyElement}.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-cannot-break-ui-element` when break position\n\t * is placed inside {@link module:engine/view/uielement~UIElement UIElement}.\n\t *\n\t * @param position Position where to break attributes.\n\t * @param forceSplitText If set to `true`, will break text nodes even if they are directly in container element.\n\t * This behavior will result in incorrect view state, but is needed by other view writing methods which then fixes view state.\n\t * @returns New position after breaking the attributes.\n\t */\n\tprivate _breakAttributes( position: Position, forceSplitText: boolean = false ): Position {\n\t\tconst positionOffset = position.offset;\n\t\tconst positionParent = position.parent;\n\n\t\t// If position is placed inside EmptyElement - throw an exception as we cannot break inside.\n\t\tif ( position.parent.is( 'emptyElement' ) ) {\n\t\t\t/**\n\t\t\t * Cannot break an `EmptyElement` instance.\n\t\t\t *\n\t\t\t * This error is thrown if\n\t\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#breakAttributes `DowncastWriter#breakAttributes()`}\n\t\t\t * was executed in an incorrect position.\n\t\t\t *\n\t\t\t * @error view-writer-cannot-break-empty-element\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-writer-cannot-break-empty-element', this.document );\n\t\t}\n\n\t\t// If position is placed inside UIElement - throw an exception as we cannot break inside.\n\t\tif ( position.parent.is( 'uiElement' ) ) {\n\t\t\t/**\n\t\t\t * Cannot break a `UIElement` instance.\n\t\t\t *\n\t\t\t * This error is thrown if\n\t\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#breakAttributes `DowncastWriter#breakAttributes()`}\n\t\t\t * was executed in an incorrect position.\n\t\t\t *\n\t\t\t * @error view-writer-cannot-break-ui-element\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-writer-cannot-break-ui-element', this.document );\n\t\t}\n\n\t\t// If position is placed inside RawElement - throw an exception as we cannot break inside.\n\t\tif ( position.parent.is( 'rawElement' ) ) {\n\t\t\t/**\n\t\t\t * Cannot break a `RawElement` instance.\n\t\t\t *\n\t\t\t * This error is thrown if\n\t\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#breakAttributes `DowncastWriter#breakAttributes()`}\n\t\t\t * was executed in an incorrect position.\n\t\t\t *\n\t\t\t * @error view-writer-cannot-break-raw-element\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-writer-cannot-break-raw-element', this.document );\n\t\t}\n\n\t\t// There are no attributes to break and text nodes breaking is not forced.\n\t\tif ( !forceSplitText && positionParent.is( '$text' ) && isContainerOrFragment( positionParent.parent! ) ) {\n\t\t\treturn position.clone();\n\t\t}\n\n\t\t// Position's parent is container, so no attributes to break.\n\t\tif ( isContainerOrFragment( positionParent ) ) {\n\t\t\treturn position.clone();\n\t\t}\n\n\t\t// Break text and start again in new position.\n\t\tif ( positionParent.is( '$text' ) ) {\n\t\t\treturn this._breakAttributes( breakTextNode( position ), forceSplitText );\n\t\t}\n\n\t\tconst length = ( positionParent as any ).childCount;\n\n\t\t// <p>foo<b><u>bar{}</u></b></p>\n\t\t// <p>foo<b><u>bar</u>[]</b></p>\n\t\t// <p>foo<b><u>bar</u></b>[]</p>\n\t\tif ( positionOffset == length ) {\n\t\t\tconst newPosition = new Position( positionParent.parent as any, ( positionParent as any ).index + 1 );\n\n\t\t\treturn this._breakAttributes( newPosition, forceSplitText );\n\t\t} else {\n\t\t\t// <p>foo<b><u>{}bar</u></b></p>\n\t\t\t// <p>foo<b>[]<u>bar</u></b></p>\n\t\t\t// <p>foo{}<b><u>bar</u></b></p>\n\t\t\tif ( positionOffset === 0 ) {\n\t\t\t\tconst newPosition = new Position( positionParent.parent as Element, ( positionParent as any ).index );\n\n\t\t\t\treturn this._breakAttributes( newPosition, forceSplitText );\n\t\t\t}\n\t\t\t// <p>foo<b><u>b{}ar</u></b></p>\n\t\t\t// <p>foo<b><u>b[]ar</u></b></p>\n\t\t\t// <p>foo<b><u>b</u>[]<u>ar</u></b></p>\n\t\t\t// <p>foo<b><u>b</u></b>[]<b><u>ar</u></b></p>\n\t\t\telse {\n\t\t\t\tconst offsetAfter = ( positionParent as any ).index + 1;\n\n\t\t\t\t// Break element.\n\t\t\t\tconst clonedNode = ( positionParent as any )._clone();\n\n\t\t\t\t// Insert cloned node to position's parent node.\n\t\t\t\t( positionParent.parent as any )._insertChild( offsetAfter, clonedNode );\n\t\t\t\tthis._addToClonedElementsGroup( clonedNode );\n\n\t\t\t\t// Get nodes to move.\n\t\t\t\tconst count = ( positionParent as any ).childCount - positionOffset;\n\t\t\t\tconst nodesToMove = ( positionParent as any )._removeChildren( positionOffset, count );\n\n\t\t\t\t// Move nodes to cloned node.\n\t\t\t\tclonedNode._appendChild( nodesToMove );\n\n\t\t\t\t// Create new position to work on.\n\t\t\t\tconst newPosition = new Position( ( positionParent as any ).parent, offsetAfter );\n\n\t\t\t\treturn this._breakAttributes( newPosition, forceSplitText );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Stores the information that an {@link module:engine/view/attributeelement~AttributeElement attribute element} was\n\t * added to the tree. Saves the reference to the group in the given element and updates the group, so other elements\n\t * from the group now keep a reference to the given attribute element.\n\t *\n\t * The clones group can be obtained using {@link module:engine/view/attributeelement~AttributeElement#getElementsWithSameId}.\n\t *\n\t * Does nothing if added element has no {@link module:engine/view/attributeelement~AttributeElement#id id}.\n\t *\n\t * @param element Attribute element to save.\n\t */\n\tprivate _addToClonedElementsGroup( element: Node ): void {\n\t\t// Add only if the element is in document tree.\n\t\tif ( !element.root.is( 'rootElement' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Traverse the element's children recursively to find other attribute elements that also might got inserted.\n\t\t// The loop is at the beginning so we can make fast returns later in the code.\n\t\tif ( element.is( 'element' ) ) {\n\t\t\tfor ( const child of element.getChildren() ) {\n\t\t\t\tthis._addToClonedElementsGroup( child );\n\t\t\t}\n\t\t}\n\n\t\tconst id = ( element as any ).id;\n\n\t\tif ( !id ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet group = this._cloneGroups.get( id );\n\n\t\tif ( !group ) {\n\t\t\tgroup = new Set();\n\t\t\tthis._cloneGroups.set( id, group );\n\t\t}\n\n\t\tgroup.add( element as AttributeElement );\n\t\t( element as any )._clonesGroup = group;\n\t}\n\n\t/**\n\t * Removes all the information about the given {@link module:engine/view/attributeelement~AttributeElement attribute element}\n\t * from its clones group.\n\t *\n\t * Keep in mind, that the element will still keep a reference to the group (but the group will not keep a reference to it).\n\t * This allows to reference the whole group even if the element was already removed from the tree.\n\t *\n\t * Does nothing if the element has no {@link module:engine/view/attributeelement~AttributeElement#id id}.\n\t *\n\t * @param element Attribute element to remove.\n\t */\n\tprivate _removeFromClonedElementsGroup( element: Node ) {\n\t\t// Traverse the element's children recursively to find other attribute elements that also got removed.\n\t\t// The loop is at the beginning so we can make fast returns later in the code.\n\t\tif ( element.is( 'element' ) ) {\n\t\t\tfor ( const child of element.getChildren() ) {\n\t\t\t\tthis._removeFromClonedElementsGroup( child );\n\t\t\t}\n\t\t}\n\n\t\tconst id = ( element as any ).id;\n\n\t\tif ( !id ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst group = this._cloneGroups.get( id );\n\n\t\tif ( !group ) {\n\t\t\treturn;\n\t\t}\n\n\t\tgroup.delete( element as AttributeElement );\n\t\t// Not removing group from element on purpose!\n\t\t// If other parts of code have reference to this element, they will be able to get references to other elements from the group.\n\t}\n}\n\n// Helper function for `view.writer.wrap`. Checks if given element has any children that are not ui elements.\nfunction _hasNonUiChildren( parent: Element ): boolean {\n\treturn Array.from( parent.getChildren() ).some( child => !child.is( 'uiElement' ) );\n}\n\n/**\n * The `attribute` passed to {@link module:engine/view/downcastwriter~DowncastWriter#wrap `DowncastWriter#wrap()`}\n * must be an instance of {@link module:engine/view/attributeelement~AttributeElement `AttributeElement`}.\n *\n * @error view-writer-wrap-invalid-attribute\n */\n\n/**\n * Returns first parent container of specified {@link module:engine/view/position~Position Position}.\n * Position's parent node is checked as first, then next parents are checked.\n * Note that {@link module:engine/view/documentfragment~DocumentFragment DocumentFragment} is treated like a container.\n *\n * @param position Position used as a start point to locate parent container.\n * @returns Parent container element or `undefined` if container is not found.\n */\nfunction getParentContainer( position: Position ): ContainerElement | DocumentFragment | undefined {\n\tlet parent = position.parent;\n\n\twhile ( !isContainerOrFragment( parent ) ) {\n\t\tif ( !parent ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tparent = parent.parent as any;\n\t}\n\n\treturn ( parent as ContainerElement | DocumentFragment );\n}\n\n/**\n * Checks if first {@link module:engine/view/attributeelement~AttributeElement AttributeElement} provided to the function\n * can be wrapped outside second element. It is done by comparing elements'\n * {@link module:engine/view/attributeelement~AttributeElement#priority priorities}, if both have same priority\n * {@link module:engine/view/element~Element#getIdentity identities} are compared.\n */\nfunction shouldABeOutsideB( a: AttributeElement, b: AttributeElement ): boolean {\n\tif ( a.priority < b.priority ) {\n\t\treturn true;\n\t} else if ( a.priority > b.priority ) {\n\t\treturn false;\n\t}\n\n\t// When priorities are equal and names are different - use identities.\n\treturn a.getIdentity() < b.getIdentity();\n}\n\n/**\n * Returns new position that is moved to near text node. Returns same position if there is no text node before of after\n * specified position.\n *\n * ```html\n * <p>foo[]</p> -> <p>foo{}</p>\n * <p>[]foo</p> -> <p>{}foo</p>\n * ```\n *\n * @returns Position located inside text node or same position if there is no text nodes\n * before or after position location.\n */\nfunction movePositionToTextNode( position: Position ): Position {\n\tconst nodeBefore = position.nodeBefore;\n\n\tif ( nodeBefore && nodeBefore.is( '$text' ) ) {\n\t\treturn new Position( nodeBefore, nodeBefore.data.length );\n\t}\n\n\tconst nodeAfter = position.nodeAfter;\n\n\tif ( nodeAfter && nodeAfter.is( '$text' ) ) {\n\t\treturn new Position( nodeAfter, 0 );\n\t}\n\n\treturn position;\n}\n\n/**\n * Breaks text node into two text nodes when possible.\n *\n * ```html\n * <p>foo{}bar</p> -> <p>foo[]bar</p>\n * <p>{}foobar</p> -> <p>[]foobar</p>\n * <p>foobar{}</p> -> <p>foobar[]</p>\n * ```\n *\n * @param position Position that need to be placed inside text node.\n * @returns New position after breaking text node.\n */\nfunction breakTextNode( position: Position ): Position {\n\tif ( position.offset == ( position.parent as Text ).data.length ) {\n\t\treturn new Position( position.parent.parent as any, ( position.parent as Text ).index! + 1 );\n\t}\n\n\tif ( position.offset === 0 ) {\n\t\treturn new Position( position.parent.parent as any, ( position.parent as Text ).index! );\n\t}\n\n\t// Get part of the text that need to be moved.\n\tconst textToMove = ( position.parent as Text ).data.slice( position.offset );\n\n\t// Leave rest of the text in position's parent.\n\t( position.parent as Text )._data = ( position.parent as Text ).data.slice( 0, position.offset );\n\n\t// Insert new text node after position's parent text node.\n\t( position.parent.parent as any )._insertChild(\n\t\t( position.parent as Text ).index! + 1,\n\t\tnew Text( position.root.document, textToMove )\n\t);\n\n\t// Return new position between two newly created text nodes.\n\treturn new Position( position.parent.parent as any, ( position.parent as Text ).index! + 1 );\n}\n\n/**\n * Merges two text nodes into first node. Removes second node and returns merge position.\n *\n * @param t1 First text node to merge. Data from second text node will be moved at the end of this text node.\n * @param t2 Second text node to merge. This node will be removed after merging.\n * @returns Position after merging text nodes.\n */\nfunction mergeTextNodes( t1: Text, t2: Text ): Position {\n\t// Merge text data into first text node and remove second one.\n\tconst nodeBeforeLength = t1.data.length;\n\tt1._data += t2.data;\n\tt2._remove();\n\n\treturn new Position( t1, nodeBeforeLength );\n}\n\nconst validNodesToInsert = [ Text, AttributeElement, ContainerElement, EmptyElement, RawElement, UIElement ];\n\n/**\n * Checks if provided nodes are valid to insert.\n *\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-insert-invalid-node` when nodes to insert\n * contains instances that are not supported ones (see error description for valid ones.\n */\nfunction validateNodesToInsert( nodes: Iterable<Node>, errorContext: Document ): void {\n\tfor ( const node of nodes ) {\n\t\tif ( !validNodesToInsert.some( ( validNode => node instanceof validNode ) ) ) { // eslint-disable-line no-use-before-define\n\t\t\t/**\n\t\t\t * One of the nodes to be inserted is of an invalid type.\n\t\t\t *\n\t\t\t * Nodes to be inserted with {@link module:engine/view/downcastwriter~DowncastWriter#insert `DowncastWriter#insert()`} should be\n\t\t\t * of the following types:\n\t\t\t *\n\t\t\t * * {@link module:engine/view/attributeelement~AttributeElement AttributeElement},\n\t\t\t * * {@link module:engine/view/containerelement~ContainerElement ContainerElement},\n\t\t\t * * {@link module:engine/view/emptyelement~EmptyElement EmptyElement},\n\t\t\t * * {@link module:engine/view/uielement~UIElement UIElement},\n\t\t\t * * {@link module:engine/view/rawelement~RawElement RawElement},\n\t\t\t * * {@link module:engine/view/text~Text Text}.\n\t\t\t *\n\t\t\t * @error view-writer-insert-invalid-node-type\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-writer-insert-invalid-node-type', errorContext );\n\t\t}\n\n\t\tif ( !node.is( '$text' ) ) {\n\t\t\tvalidateNodesToInsert( ( node as Element ).getChildren(), errorContext );\n\t\t}\n\t}\n}\n\n/**\n * Checks if node is ContainerElement or DocumentFragment, because in most cases they should be treated the same way.\n *\n * @returns Returns `true` if node is instance of ContainerElement or DocumentFragment.\n */\nfunction isContainerOrFragment( node: Node | DocumentFragment ): boolean {\n\treturn node && ( node.is( 'containerElement' ) || node.is( 'documentFragment' ) );\n}\n\n/**\n * Checks if {@link module:engine/view/range~Range#start range start} and {@link module:engine/view/range~Range#end range end} are placed\n * inside same {@link module:engine/view/containerelement~ContainerElement container element}.\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when validation fails.\n */\nfunction validateRangeContainer( range: Range, errorContext: Document ) {\n\tconst startContainer = getParentContainer( range.start );\n\tconst endContainer = getParentContainer( range.end );\n\n\tif ( !startContainer || !endContainer || startContainer !== endContainer ) {\n\t\t/**\n\t\t * The container of the given range is invalid.\n\t\t *\n\t\t * This may happen if {@link module:engine/view/range~Range#start range start} and\n\t\t * {@link module:engine/view/range~Range#end range end} positions are not placed inside the same container element or\n\t\t * a parent container for these positions cannot be found.\n\t\t *\n\t\t * Methods like {@link module:engine/view/downcastwriter~DowncastWriter#wrap `DowncastWriter#remove()`},\n\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#wrap `DowncastWriter#clean()`},\n\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#wrap `DowncastWriter#wrap()`},\n\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#wrap `DowncastWriter#unwrap()`} need to be called\n\t\t * on a range that has its start and end positions located in the same container element. Both positions can be\n\t\t * nested within other elements (e.g. an attribute element) but the closest container ancestor must be the same.\n\t\t *\n\t\t * @error view-writer-invalid-range-container\n\t\t */\n\t\tthrow new CKEditorError( 'view-writer-invalid-range-container', errorContext );\n\t}\n}\n\n/**\n * Checks if two attribute elements can be joined together. Elements can be joined together if, and only if\n * they do not have ids specified.\n */\nfunction canBeJoined( a: AttributeElement, b: AttributeElement ) {\n\treturn a.id === null && b.id === null;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport { keyCodes, isText, type KeystrokeInfo } from '@ckeditor/ckeditor5-utils';\nimport type View from './view';\nimport type DomEventData from './observer/domeventdata';\nimport type { ViewDocumentArrowKeyEvent } from './observer/arrowkeysobserver';\n\n/**\n * Set of utilities related to handling block and inline fillers.\n *\n * Browsers do not allow to put caret in elements which does not have height. Because of it, we need to fill all\n * empty elements which should be selectable with elements or characters called \"fillers\". Unfortunately there is no one\n * universal filler, this is why two types are uses:\n *\n * * Block filler is an element which fill block elements, like `<p>`. CKEditor uses `<br>` as a block filler during the editing,\n * as browsers do natively. So instead of an empty `<p>` there will be `<p><br></p>`. The advantage of block filler is that\n * it is transparent for the selection, so when the caret is before the `<br>` and user presses right arrow he will be\n * moved to the next paragraph, not after the `<br>`. The disadvantage is that it breaks a block, so it can not be used\n * in the middle of a line of text. The {@link module:engine/view/filler~BR_FILLER `<br>` filler} can be replaced with any other\n * character in the data output, for instance {@link module:engine/view/filler~NBSP_FILLER non-breaking space} or\n * {@link module:engine/view/filler~MARKED_NBSP_FILLER marked non-breaking space}.\n *\n * * Inline filler is a filler which does not break a line of text, so it can be used inside the text, for instance in the empty\n * `<b>` surrendered by text: `foo<b></b>bar`, if we want to put the caret there. CKEditor uses a sequence of the zero-width\n * spaces as an {@link module:engine/view/filler~INLINE_FILLER inline filler} having the predetermined\n * {@link module:engine/view/filler~INLINE_FILLER_LENGTH length}. A sequence is used, instead of a single character to\n * avoid treating random zero-width spaces as the inline filler. Disadvantage of the inline filler is that it is not\n * transparent for the selection. The arrow key moves the caret between zero-width spaces characters, so the additional\n * code is needed to handle the caret.\n *\n * Both inline and block fillers are handled by the {@link module:engine/view/renderer~Renderer renderer} and are not present in the\n * view.\n *\n * @module engine/view/filler\n */\n\n/**\n * Non-breaking space filler creator. This function creates the ` ` text node.\n * It defines how the filler is created.\n *\n * @see module:engine/view/filler~MARKED_NBSP_FILLER\n * @see module:engine/view/filler~BR_FILLER\n */\nexport const NBSP_FILLER = ( domDocument: Document ): Text => domDocument.createTextNode( '\\u00A0' );\n\n/**\n * Marked non-breaking space filler creator. This function creates the `<span data-cke-filler=\"true\"> </span>` element.\n * It defines how the filler is created.\n *\n * @see module:engine/view/filler~NBSP_FILLER\n * @see module:engine/view/filler~BR_FILLER\n */\nexport const MARKED_NBSP_FILLER = ( domDocument: Document ): HTMLSpanElement => {\n\tconst span = domDocument.createElement( 'span' );\n\tspan.dataset.ckeFiller = 'true';\n\tspan.innerText = '\\u00A0';\n\n\treturn span;\n};\n\n/**\n * `<br>` filler creator. This function creates the `<br data-cke-filler=\"true\">` element.\n * It defines how the filler is created.\n *\n * @see module:engine/view/filler~NBSP_FILLER\n * @see module:engine/view/filler~MARKED_NBSP_FILLER\n */\nexport const BR_FILLER = ( domDocument: Document ): HTMLBRElement => {\n\tconst fillerBr = domDocument.createElement( 'br' );\n\tfillerBr.dataset.ckeFiller = 'true';\n\n\treturn fillerBr;\n};\n\n/**\n * Length of the {@link module:engine/view/filler~INLINE_FILLER INLINE_FILLER}.\n */\nexport const INLINE_FILLER_LENGTH = 7;\n\n/**\n * Inline filler which is a sequence of the word joiners.\n */\nexport const INLINE_FILLER = '\\u2060'.repeat( INLINE_FILLER_LENGTH );\n\n/**\n * Checks if the node is a text node which starts with the {@link module:engine/view/filler~INLINE_FILLER inline filler}.\n *\n * ```ts\n * startsWithFiller( document.createTextNode( INLINE_FILLER ) ); // true\n * startsWithFiller( document.createTextNode( INLINE_FILLER + 'foo' ) ); // true\n * startsWithFiller( document.createTextNode( 'foo' ) ); // false\n * startsWithFiller( document.createElement( 'p' ) ); // false\n * ```\n *\n * @param domNode DOM node.\n * @returns True if the text node starts with the {@link module:engine/view/filler~INLINE_FILLER inline filler}.\n */\nexport function startsWithFiller( domNode: Node | string ): boolean {\n\tif ( typeof domNode == 'string' ) {\n\t\treturn domNode.substr( 0, INLINE_FILLER_LENGTH ) === INLINE_FILLER;\n\t}\n\n\treturn isText( domNode ) && ( domNode.data.substr( 0, INLINE_FILLER_LENGTH ) === INLINE_FILLER );\n}\n\n/**\n * Checks if the text node contains only the {@link module:engine/view/filler~INLINE_FILLER inline filler}.\n *\n * ```ts\n * isInlineFiller( document.createTextNode( INLINE_FILLER ) ); // true\n * isInlineFiller( document.createTextNode( INLINE_FILLER + 'foo' ) ); // false\n * ```\n *\n * @param domText DOM text node.\n * @returns True if the text node contains only the {@link module:engine/view/filler~INLINE_FILLER inline filler}.\n */\nexport function isInlineFiller( domText: Text ): boolean {\n\treturn domText.data.length == INLINE_FILLER_LENGTH && startsWithFiller( domText );\n}\n\n/**\n * Get string data from the text node, removing an {@link module:engine/view/filler~INLINE_FILLER inline filler} from it,\n * if text node contains it.\n *\n * ```ts\n * getDataWithoutFiller( document.createTextNode( INLINE_FILLER + 'foo' ) ) == 'foo' // true\n * getDataWithoutFiller( document.createTextNode( 'foo' ) ) == 'foo' // true\n * ```\n *\n * @param domText DOM text node, possible with inline filler.\n * @returns Data without filler.\n */\nexport function getDataWithoutFiller( domText: Text | string ): string {\n\tconst data = typeof domText == 'string' ? domText : domText.data;\n\n\tif ( startsWithFiller( domText ) ) {\n\t\treturn data.slice( INLINE_FILLER_LENGTH );\n\t}\n\n\treturn data;\n}\n\n/**\n * Assign key observer which move cursor from the end of the inline filler to the beginning of it when\n * the left arrow is pressed, so the filler does not break navigation.\n *\n * @param view View controller instance we should inject quirks handling on.\n */\nexport function injectQuirksHandling( view: View ): void {\n\tview.document.on<ViewDocumentArrowKeyEvent>( 'arrowKey', jumpOverInlineFiller, { priority: 'low' } );\n}\n\n/**\n * Move cursor from the end of the inline filler to the beginning of it when, so the filler does not break navigation.\n */\nfunction jumpOverInlineFiller( evt: unknown, data: DomEventData & KeystrokeInfo ) {\n\tif ( data.keyCode == keyCodes.arrowleft ) {\n\t\tconst domSelection = data.domTarget.ownerDocument.defaultView!.getSelection()!;\n\n\t\tif ( domSelection.rangeCount == 1 && domSelection.getRangeAt( 0 ).collapsed ) {\n\t\t\tconst domParent = domSelection.getRangeAt( 0 ).startContainer;\n\t\t\tconst domOffset = domSelection.getRangeAt( 0 ).startOffset;\n\n\t\t\tif ( startsWithFiller( domParent ) && domOffset <= INLINE_FILLER_LENGTH ) {\n\t\t\t\tdomSelection.collapse( domParent, 0 );\n\t\t\t}\n\t\t}\n\t}\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./renderer.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/renderer\n */\n\nimport ViewText from './text';\nimport ViewPosition from './position';\nimport { INLINE_FILLER, INLINE_FILLER_LENGTH, startsWithFiller, isInlineFiller } from './filler';\n\nimport {\n\tCKEditorError,\n\tObservableMixin,\n\tdiff,\n\tenv,\n\tfastDiff,\n\tinsertAt,\n\tisComment,\n\tisNode,\n\tisText,\n\tremove,\n\ttype DiffResult,\n\ttype ObservableChangeEvent\n} from '@ckeditor/ckeditor5-utils';\n\nimport type { ChangeType } from './document';\nimport type DocumentSelection from './documentselection';\nimport type DomConverter from './domconverter';\nimport type ViewElement from './element';\nimport type ViewNode from './node';\n\nimport '../../theme/renderer.css';\n\ntype DomText = globalThis.Text;\ntype DomNode = globalThis.Node;\ntype DomDocument = globalThis.Document;\ntype DomElement = globalThis.HTMLElement;\ntype DomSelection = globalThis.Selection;\n\n/**\n * Renderer is responsible for updating the DOM structure and the DOM selection based on\n * the {@link module:engine/view/renderer~Renderer#markToSync information about updated view nodes}.\n * In other words, it renders the view to the DOM.\n *\n * Its main responsibility is to make only the necessary, minimal changes to the DOM. However, unlike in many\n * virtual DOM implementations, the primary reason for doing minimal changes is not the performance but ensuring\n * that native editing features such as text composition, autocompletion, spell checking, selection's x-index are\n * affected as little as possible.\n *\n * Renderer uses {@link module:engine/view/domconverter~DomConverter} to transform view nodes and positions\n * to and from the DOM.\n */\nexport default class Renderer extends ObservableMixin() {\n\t/**\n\t * Set of DOM Documents instances.\n\t */\n\tpublic readonly domDocuments: Set<DomDocument> = new Set();\n\n\t/**\n\t * Converter instance.\n\t */\n\tpublic readonly domConverter: DomConverter;\n\n\t/**\n\t * Set of nodes which attributes changed and may need to be rendered.\n\t */\n\tpublic readonly markedAttributes: Set<ViewElement> = new Set();\n\n\t/**\n\t * Set of elements which child lists changed and may need to be rendered.\n\t */\n\tpublic readonly markedChildren: Set<ViewElement> = new Set();\n\n\t/**\n\t * Set of text nodes which text data changed and may need to be rendered.\n\t */\n\tpublic readonly markedTexts: Set<ViewNode> = new Set();\n\n\t/**\n\t * View selection. Renderer updates DOM selection based on the view selection.\n\t */\n\tpublic readonly selection: DocumentSelection;\n\n\t/**\n\t * Indicates if the view document is focused and selection can be rendered. Selection will not be rendered if\n\t * this is set to `false`.\n\t *\n\t * @observable\n\t */\n\tdeclare public readonly isFocused: boolean;\n\n\t/**\n\t * Indicates whether the user is making a selection in the document (e.g. holding the mouse button and moving the cursor).\n\t * When they stop selecting, the property goes back to `false`.\n\t *\n\t * Note: In some browsers, the renderer will stop rendering the selection and inline fillers while the user is making\n\t * a selection to avoid glitches in DOM selection\n\t * (https://github.com/ckeditor/ckeditor5/issues/10562, https://github.com/ckeditor/ckeditor5/issues/10723).\n\t *\n\t * @observable\n\t */\n\tdeclare public readonly isSelecting: boolean;\n\n\t/**\n\t * True if composition is in progress inside the document.\n\t *\n\t * This property is bound to the {@link module:engine/view/document~Document#isComposing `Document#isComposing`} property.\n\t *\n\t * @observable\n\t */\n\tdeclare public readonly isComposing: boolean;\n\n\t/**\n\t * The text node in which the inline filler was rendered.\n\t */\n\tprivate _inlineFiller: DomText | null = null;\n\n\t/**\n\t * DOM element containing fake selection.\n\t */\n\tprivate _fakeSelectionContainer: DomElement | null = null;\n\n\t/**\n\t * Creates a renderer instance.\n\t *\n\t * @param domConverter Converter instance.\n\t * @param selection View selection.\n\t */\n\tconstructor( domConverter: DomConverter, selection: DocumentSelection ) {\n\t\tsuper();\n\n\t\tthis.domConverter = domConverter;\n\t\tthis.selection = selection;\n\n\t\tthis.set( 'isFocused', false );\n\t\tthis.set( 'isSelecting', false );\n\n\t\t// Rendering the selection and inline filler manipulation should be postponed in (non-Android) Blink until the user finishes\n\t\t// creating the selection in DOM to avoid accidental selection collapsing\n\t\t// (https://github.com/ckeditor/ckeditor5/issues/10562, https://github.com/ckeditor/ckeditor5/issues/10723).\n\t\t// When the user stops selecting, all pending changes should be rendered ASAP, though.\n\t\tif ( env.isBlink && !env.isAndroid ) {\n\t\t\tthis.on<ObservableChangeEvent>( 'change:isSelecting', () => {\n\t\t\t\tif ( !this.isSelecting ) {\n\t\t\t\t\tthis.render();\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tthis.set( 'isComposing', false );\n\n\t\tthis.on<ObservableChangeEvent>( 'change:isComposing', () => {\n\t\t\tif ( !this.isComposing ) {\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Marks a view node to be updated in the DOM by {@link #render `render()`}.\n\t *\n\t * Note that only view nodes whose parents have corresponding DOM elements need to be marked to be synchronized.\n\t *\n\t * @see #markedAttributes\n\t * @see #markedChildren\n\t * @see #markedTexts\n\t *\n\t * @param type Type of the change.\n\t * @param node ViewNode to be marked.\n\t */\n\tpublic markToSync( type: ChangeType, node: ViewNode ): void {\n\t\tif ( type === 'text' ) {\n\t\t\tif ( this.domConverter.mapViewToDom( node.parent! ) ) {\n\t\t\t\tthis.markedTexts.add( node );\n\t\t\t}\n\t\t} else {\n\t\t\t// If the node has no DOM element it is not rendered yet,\n\t\t\t// its children/attributes do not need to be marked to be sync.\n\t\t\tif ( !this.domConverter.mapViewToDom( node as ViewElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( type === 'attributes' ) {\n\t\t\t\tthis.markedAttributes.add( node as ViewElement );\n\t\t\t} else if ( type === 'children' ) {\n\t\t\t\tthis.markedChildren.add( node as ViewElement );\n\t\t\t} else {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t\t\tconst unreachable: never = type;\n\n\t\t\t\t/**\n\t\t\t\t * Unknown type passed to Renderer.markToSync.\n\t\t\t\t *\n\t\t\t\t * @error view-renderer-unknown-type\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'view-renderer-unknown-type', this );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Renders all buffered changes ({@link #markedAttributes}, {@link #markedChildren} and {@link #markedTexts}) and\n\t * the current view selection (if needed) to the DOM by applying a minimal set of changes to it.\n\t *\n\t * Renderer tries not to break the text composition (e.g. IME) and x-index of the selection,\n\t * so it does as little as it is needed to update the DOM.\n\t *\n\t * Renderer also handles {@link module:engine/view/filler fillers}. Especially, it checks if the inline filler is needed\n\t * at the selection position and adds or removes it. To prevent breaking text composition inline filler will not be\n\t * removed as long as the selection is in the text node which needed it at first.\n\t */\n\tpublic render(): void {\n\t\t// Ignore rendering while in the composition mode. Composition events are not cancellable and browser will modify the DOM tree.\n\t\t// All marked elements, attributes, etc. will wait until next render after the composition ends.\n\t\t// On Android composition events are immediately applied to the model, so we don't need to skip rendering,\n\t\t// and we should not do it because the difference between view and DOM could lead to position mapping problems.\n\t\tif ( this.isComposing && !env.isAndroid ) {\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[Renderer]%c Rendering aborted while isComposing',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'color: green;font-weight: bold', ''\n\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\treturn;\n\t\t}\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.group( '%c[Renderer]%c Rendering',\n\t\t// @if CK_DEBUG_TYPING // \t\t'color: green;font-weight: bold', ''\n\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t// @if CK_DEBUG_TYPING // }\n\n\t\tlet inlineFillerPosition: ViewPosition | null = null;\n\t\tconst isInlineFillerRenderingPossible = env.isBlink && !env.isAndroid ? !this.isSelecting : true;\n\n\t\t// Refresh mappings.\n\t\tfor ( const element of this.markedChildren ) {\n\t\t\tthis._updateChildrenMappings( element );\n\t\t}\n\n\t\t// Don't manipulate inline fillers while the selection is being made in (non-Android) Blink to prevent accidental\n\t\t// DOM selection collapsing\n\t\t// (https://github.com/ckeditor/ckeditor5/issues/10562, https://github.com/ckeditor/ckeditor5/issues/10723).\n\t\tif ( isInlineFillerRenderingPossible ) {\n\t\t\t// There was inline filler rendered in the DOM but it's not\n\t\t\t// at the selection position any more, so we can remove it\n\t\t\t// (cause even if it's needed, it must be placed in another location).\n\t\t\tif ( this._inlineFiller && !this._isSelectionInInlineFiller() ) {\n\t\t\t\tthis._removeInlineFiller();\n\t\t\t}\n\n\t\t\t// If we've got the filler, let's try to guess its position in the view.\n\t\t\tif ( this._inlineFiller ) {\n\t\t\t\tinlineFillerPosition = this._getInlineFillerPosition();\n\t\t\t}\n\t\t\t// Otherwise, if it's needed, create it at the selection position.\n\t\t\telse if ( this._needsInlineFillerAtSelection() ) {\n\t\t\t\tinlineFillerPosition = this.selection.getFirstPosition()!;\n\n\t\t\t\t// Do not use `markToSync` so it will be added even if the parent is already added.\n\t\t\t\tthis.markedChildren.add( inlineFillerPosition.parent as ViewElement );\n\t\t\t}\n\t\t}\n\t\t// Make sure the inline filler has any parent, so it can be mapped to view position by DomConverter.\n\t\telse if ( this._inlineFiller && this._inlineFiller.parentNode ) {\n\t\t\t// While the user is making selection, preserve the inline filler at its original position.\n\t\t\tinlineFillerPosition = this.domConverter.domPositionToView( this._inlineFiller )!;\n\n\t\t\t// While down-casting the document selection attributes, all existing empty\n\t\t\t// attribute elements (for selection position) are removed from the view and DOM,\n\t\t\t// so make sure that we were able to map filler position.\n\t\t\t// https://github.com/ckeditor/ckeditor5/issues/12026\n\t\t\tif ( inlineFillerPosition && inlineFillerPosition.parent.is( '$text' ) ) {\n\t\t\t\t// The inline filler position is expected to be before the text node.\n\t\t\t\tinlineFillerPosition = ViewPosition._createBefore( inlineFillerPosition.parent );\n\t\t\t}\n\t\t}\n\n\t\tfor ( const element of this.markedAttributes ) {\n\t\t\tthis._updateAttrs( element );\n\t\t}\n\n\t\tfor ( const element of this.markedChildren ) {\n\t\t\tthis._updateChildren( element, { inlineFillerPosition } );\n\t\t}\n\n\t\tfor ( const node of this.markedTexts ) {\n\t\t\tif ( !this.markedChildren.has( node.parent as ViewElement ) && this.domConverter.mapViewToDom( node.parent as ViewElement ) ) {\n\t\t\t\tthis._updateText( node as ViewText, { inlineFillerPosition } );\n\t\t\t}\n\t\t}\n\n\t\t// * Check whether the inline filler is required and where it really is in the DOM.\n\t\t// At this point in most cases it will be in the DOM, but there are exceptions.\n\t\t// For example, if the inline filler was deep in the created DOM structure, it will not be created.\n\t\t// Similarly, if it was removed at the beginning of this function and then neither text nor children were updated,\n\t\t// it will not be present. Fix those and similar scenarios.\n\t\t// * Don't manipulate inline fillers while the selection is being made in (non-Android) Blink to prevent accidental\n\t\t// DOM selection collapsing\n\t\t// (https://github.com/ckeditor/ckeditor5/issues/10562, https://github.com/ckeditor/ckeditor5/issues/10723).\n\t\tif ( isInlineFillerRenderingPossible ) {\n\t\t\tif ( inlineFillerPosition ) {\n\t\t\t\tconst fillerDomPosition = this.domConverter.viewPositionToDom( inlineFillerPosition )!;\n\t\t\t\tconst domDocument = fillerDomPosition.parent.ownerDocument!;\n\n\t\t\t\tif ( !startsWithFiller( fillerDomPosition.parent ) ) {\n\t\t\t\t\t// Filler has not been created at filler position. Create it now.\n\t\t\t\t\tthis._inlineFiller = addInlineFiller( domDocument, fillerDomPosition.parent, fillerDomPosition.offset );\n\t\t\t\t} else {\n\t\t\t\t\t// Filler has been found, save it.\n\t\t\t\t\tthis._inlineFiller = fillerDomPosition.parent as DomText;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// There is no filler needed.\n\t\t\t\tthis._inlineFiller = null;\n\t\t\t}\n\t\t}\n\n\t\t// First focus the new editing host, then update the selection.\n\t\t// Otherwise, FF may throw an error (https://github.com/ckeditor/ckeditor5/issues/721).\n\t\tthis._updateFocus();\n\t\tthis._updateSelection();\n\n\t\tthis.markedTexts.clear();\n\t\tthis.markedAttributes.clear();\n\t\tthis.markedChildren.clear();\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n\t\t// @if CK_DEBUG_TYPING // }\n\t}\n\n\t/**\n\t * Updates mappings of view element's children.\n\t *\n\t * Children that were replaced in the view structure by similar elements (same tag name) are treated as 'replaced'.\n\t * This means that their mappings can be updated so the new view elements are mapped to the existing DOM elements.\n\t * Thanks to that these elements do not need to be re-rendered completely.\n\t *\n\t * @param viewElement The view element whose children mappings will be updated.\n\t */\n\tprivate _updateChildrenMappings( viewElement: ViewElement ): void {\n\t\tconst domElement = this.domConverter.mapViewToDom( viewElement );\n\n\t\tif ( !domElement ) {\n\t\t\t// If there is no `domElement` it means that it was already removed from DOM and there is no need to process it.\n\t\t\treturn;\n\t\t}\n\n\t\t// Removing nodes from the DOM as we iterate can cause `actualDomChildren`\n\t\t// (which is a live-updating `NodeList`) to get out of sync with the\n\t\t// indices that we compute as we iterate over `actions`.\n\t\t// This would produce incorrect element mappings.\n\t\t//\n\t\t// Converting live list to an array to make the list static.\n\t\tconst actualDomChildren = Array.from(\n\t\t\tthis.domConverter.mapViewToDom( viewElement )!.childNodes\n\t\t);\n\t\tconst expectedDomChildren = Array.from(\n\t\t\tthis.domConverter.viewChildrenToDom( viewElement, { withChildren: false } )\n\t\t);\n\t\tconst diff = this._diffNodeLists( actualDomChildren, expectedDomChildren );\n\t\tconst actions = this._findUpdateActions( diff, actualDomChildren, expectedDomChildren, areSimilarElements );\n\n\t\tif ( actions.indexOf( 'update' ) !== -1 ) {\n\t\t\tconst counter = { equal: 0, insert: 0, delete: 0 };\n\n\t\t\tfor ( const action of actions ) {\n\t\t\t\tif ( action === 'update' ) {\n\t\t\t\t\tconst insertIndex = counter.equal + counter.insert;\n\t\t\t\t\tconst deleteIndex = counter.equal + counter.delete;\n\t\t\t\t\tconst viewChild = viewElement.getChild( insertIndex );\n\n\t\t\t\t\t// UIElement and RawElement are special cases. Their children are not stored in a view (#799)\n\t\t\t\t\t// so we cannot use them with replacing flow (since they use view children during rendering\n\t\t\t\t\t// which will always result in rendering empty elements).\n\t\t\t\t\tif ( viewChild && !( viewChild.is( 'uiElement' ) || viewChild.is( 'rawElement' ) ) ) {\n\t\t\t\t\t\tthis._updateElementMappings( viewChild as ViewElement, actualDomChildren[ deleteIndex ] as DomElement );\n\t\t\t\t\t}\n\n\t\t\t\t\tremove( expectedDomChildren[ insertIndex ] );\n\t\t\t\t\tcounter.equal++;\n\t\t\t\t} else {\n\t\t\t\t\tcounter[ action ]++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Updates mappings of a given view element.\n\t *\n\t * @param viewElement The view element whose mappings will be updated.\n\t * @param domElement The DOM element representing the given view element.\n\t */\n\tprivate _updateElementMappings( viewElement: ViewElement, domElement: DomElement ): void {\n\t\t// Remap 'DomConverter' bindings.\n\t\tthis.domConverter.unbindDomElement( domElement );\n\t\tthis.domConverter.bindElements( domElement, viewElement );\n\n\t\t// View element may have children which needs to be updated, but are not marked, mark them to update.\n\t\tthis.markedChildren.add( viewElement );\n\n\t\t// Because we replace new view element mapping with the existing one, the corresponding DOM element\n\t\t// will not be rerendered. The new view element may have different attributes than the previous one.\n\t\t// Since its corresponding DOM element will not be rerendered, new attributes will not be added\n\t\t// to the DOM, so we need to mark it here to make sure its attributes gets updated. See #1427 for more\n\t\t// detailed case study.\n\t\t// Also there are cases where replaced element is removed from the view structure and then has\n\t\t// its attributes changed or removed. In such cases the element will not be present in `markedAttributes`\n\t\t// and also may be the same (`element.isSimilar()`) as the reused element not having its attributes updated.\n\t\t// To prevent such situations we always mark reused element to have its attributes rerenderd (#1560).\n\t\tthis.markedAttributes.add( viewElement );\n\t}\n\n\t/**\n\t * Gets the position of the inline filler based on the current selection.\n\t * Here, we assume that we know that the filler is needed and\n\t * {@link #_isSelectionInInlineFiller is at the selection position}, and, since it is needed,\n\t * it is somewhere at the selection position.\n\t *\n\t * Note: The filler position cannot be restored based on the filler's DOM text node, because\n\t * when this method is called (before rendering), the bindings will often be broken. View-to-DOM\n\t * bindings are only dependable after rendering.\n\t */\n\tprivate _getInlineFillerPosition(): ViewPosition {\n\t\tconst firstPos = this.selection.getFirstPosition()!;\n\n\t\tif ( firstPos.parent.is( '$text' ) ) {\n\t\t\treturn ViewPosition._createBefore( firstPos.parent );\n\t\t} else {\n\t\t\treturn firstPos;\n\t\t}\n\t}\n\n\t/**\n\t * Returns `true` if the selection has not left the inline filler's text node.\n\t * If it is `true`, it means that the filler had been added for a reason and the selection did not\n\t * leave the filler's text node. For example, the user can be in the middle of a composition so it should not be touched.\n\t *\n\t * @returns `true` if the inline filler and selection are in the same place.\n\t */\n\tprivate _isSelectionInInlineFiller(): boolean {\n\t\tif ( this.selection.rangeCount != 1 || !this.selection.isCollapsed ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Note, we can't check if selection's position equals position of the\n\t\t// this._inlineFiller node, because of #663. We may not be able to calculate\n\t\t// the filler's position in the view at this stage.\n\t\t// Instead, we check it the other way – whether selection is anchored in\n\t\t// that text node or next to it.\n\n\t\t// Possible options are:\n\t\t// \"FILLER{}\"\n\t\t// \"FILLERadded-text{}\"\n\t\tconst selectionPosition = this.selection.getFirstPosition()!;\n\t\tconst position = this.domConverter.viewPositionToDom( selectionPosition );\n\n\t\tif ( position && isText( position.parent ) && startsWithFiller( position.parent ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Removes the inline filler.\n\t */\n\tprivate _removeInlineFiller(): void {\n\t\tconst domFillerNode = this._inlineFiller!;\n\n\t\t// Something weird happened and the stored node doesn't contain the filler's text.\n\t\tif ( !startsWithFiller( domFillerNode ) ) {\n\t\t\t/**\n\t\t\t * The inline filler node was lost. Most likely, something overwrote the filler text node\n\t\t\t * in the DOM.\n\t\t\t *\n\t\t\t * @error view-renderer-filler-was-lost\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-renderer-filler-was-lost', this );\n\t\t}\n\n\t\tif ( isInlineFiller( domFillerNode ) ) {\n\t\t\tdomFillerNode.remove();\n\t\t} else {\n\t\t\tdomFillerNode.data = domFillerNode.data.substr( INLINE_FILLER_LENGTH );\n\t\t}\n\n\t\tthis._inlineFiller = null;\n\t}\n\n\t/**\n\t * Checks if the inline {@link module:engine/view/filler filler} should be added.\n\t *\n\t * @returns `true` if the inline filler should be added.\n\t */\n\tprivate _needsInlineFillerAtSelection(): boolean {\n\t\tif ( this.selection.rangeCount != 1 || !this.selection.isCollapsed ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst selectionPosition = this.selection.getFirstPosition()!;\n\t\tconst selectionParent = selectionPosition.parent;\n\t\tconst selectionOffset = selectionPosition.offset;\n\n\t\t// If there is no DOM root we do not care about fillers.\n\t\tif ( !this.domConverter.mapViewToDom( selectionParent.root ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !( selectionParent.is( 'element' ) ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Prevent adding inline filler inside elements with contenteditable=false.\n\t\t// https://github.com/ckeditor/ckeditor5-engine/issues/1170\n\t\tif ( !isEditable( selectionParent ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// We have block filler, we do not need inline one.\n\t\tif ( selectionOffset === selectionParent.getFillerOffset!() ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst nodeBefore = selectionPosition.nodeBefore;\n\t\tconst nodeAfter = selectionPosition.nodeAfter;\n\n\t\tif ( nodeBefore instanceof ViewText || nodeAfter instanceof ViewText ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Do not use inline filler while typing outside inline elements on Android.\n\t\t// The deleteContentBackward would remove part of the inline filler instead of removing last letter in a link.\n\t\tif ( env.isAndroid && ( nodeBefore || nodeAfter ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Checks if text needs to be updated and possibly updates it.\n\t *\n\t * @param viewText View text to update.\n\t * @param options.inlineFillerPosition The position where the inline filler should be rendered.\n\t */\n\tprivate _updateText( viewText: ViewText, options: { inlineFillerPosition?: ViewPosition | null } ) {\n\t\tconst domText = this.domConverter.findCorrespondingDomText( viewText )!;\n\t\tconst newDomText = this.domConverter.viewToDom( viewText ) as DomText;\n\n\t\tlet expectedText = newDomText.data;\n\t\tconst filler = options.inlineFillerPosition;\n\n\t\tif ( filler && filler.parent == viewText.parent && filler.offset == viewText.index ) {\n\t\t\texpectedText = INLINE_FILLER + expectedText;\n\t\t}\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.group( '%c[Renderer]%c Update text',\n\t\t// @if CK_DEBUG_TYPING // \t\t'color: green;font-weight: bold', ''\n\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t// @if CK_DEBUG_TYPING // }\n\n\t\tupdateTextNode( domText, expectedText );\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n\t\t// @if CK_DEBUG_TYPING // }\n\t}\n\n\t/**\n\t * Checks if attribute list needs to be updated and possibly updates it.\n\t *\n\t * @param viewElement The view element to update.\n\t */\n\tprivate _updateAttrs( viewElement: ViewElement ): void {\n\t\tconst domElement = this.domConverter.mapViewToDom( viewElement );\n\n\t\tif ( !domElement ) {\n\t\t\t// If there is no `domElement` it means that 'viewElement' is outdated as its mapping was updated\n\t\t\t// in 'this._updateChildrenMappings()'. There is no need to process it as new view element which\n\t\t\t// replaced old 'viewElement' mapping was also added to 'this.markedAttributes'\n\t\t\t// in 'this._updateChildrenMappings()' so it will be processed separately.\n\t\t\treturn;\n\t\t}\n\n\t\tconst domAttrKeys = Array.from( ( domElement as DomElement ).attributes ).map( attr => attr.name );\n\t\tconst viewAttrKeys = viewElement.getAttributeKeys();\n\n\t\t// Add or overwrite attributes.\n\t\tfor ( const key of viewAttrKeys ) {\n\t\t\tthis.domConverter.setDomElementAttribute( domElement as DomElement, key, viewElement.getAttribute( key )!, viewElement );\n\t\t}\n\n\t\t// Remove from DOM attributes which do not exists in the view.\n\t\tfor ( const key of domAttrKeys ) {\n\t\t\t// All other attributes not present in the DOM should be removed.\n\t\t\tif ( !viewElement.hasAttribute( key ) ) {\n\t\t\t\tthis.domConverter.removeDomElementAttribute( domElement as DomElement, key );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if elements child list needs to be updated and possibly updates it.\n\t *\n\t * Note that on Android, to reduce the risk of composition breaks, it tries to update data of an existing\n\t * child text nodes instead of replacing them completely.\n\t *\n\t * @param viewElement View element to update.\n\t * @param options.inlineFillerPosition The position where the inline filler should be rendered.\n\t */\n\tprivate _updateChildren( viewElement: ViewElement, options: { inlineFillerPosition: ViewPosition | null } ) {\n\t\tconst domElement = this.domConverter.mapViewToDom( viewElement );\n\n\t\tif ( !domElement ) {\n\t\t\t// If there is no `domElement` it means that it was already removed from DOM.\n\t\t\t// There is no need to process it. It will be processed when re-inserted.\n\t\t\treturn;\n\t\t}\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.group( '%c[Renderer]%c Update children',\n\t\t// @if CK_DEBUG_TYPING // \t\t'color: green;font-weight: bold', ''\n\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t// IME on Android inserts a new text node while typing after a link\n\t\t// instead of updating an existing text node that follows the link.\n\t\t// We must normalize those text nodes so the diff won't get confused.\n\t\t// https://github.com/ckeditor/ckeditor5/issues/12574.\n\t\tif ( env.isAndroid ) {\n\t\t\tlet previousDomNode = null;\n\n\t\t\tfor ( const domNode of Array.from( domElement.childNodes ) ) {\n\t\t\t\tif ( previousDomNode && isText( previousDomNode ) && isText( domNode ) ) {\n\t\t\t\t\tdomElement.normalize();\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tpreviousDomNode = domNode;\n\t\t\t}\n\t\t}\n\n\t\tconst inlineFillerPosition = options.inlineFillerPosition;\n\t\tconst actualDomChildren = domElement.childNodes;\n\t\tconst expectedDomChildren = Array.from(\n\t\t\tthis.domConverter.viewChildrenToDom( viewElement, { bind: true } )\n\t\t);\n\n\t\t// Inline filler element has to be created as it is present in the DOM, but not in the view. It is required\n\t\t// during diffing so text nodes could be compared correctly and also during rendering to maintain\n\t\t// proper order and indexes while updating the DOM.\n\t\tif ( inlineFillerPosition && inlineFillerPosition.parent === viewElement ) {\n\t\t\taddInlineFiller( ( domElement as DomElement ).ownerDocument, expectedDomChildren, inlineFillerPosition.offset );\n\t\t}\n\n\t\tconst diff = this._diffNodeLists( actualDomChildren, expectedDomChildren );\n\n\t\t// We need to make sure that we update the existing text node and not replace it with another one.\n\t\t// The composition and different \"language\" browser extensions are fragile to text node being completely replaced.\n\t\tconst actions = this._findUpdateActions( diff, actualDomChildren, expectedDomChildren, areTextNodes );\n\n\t\tlet i = 0;\n\t\tconst nodesToUnbind: Set<DomNode> = new Set();\n\n\t\t// Handle deletions first.\n\t\t// This is to prevent a situation where an element that already exists in `actualDomChildren` is inserted at a different\n\t\t// index in `actualDomChildren`. Since `actualDomChildren` is a `NodeList`, this works like move, not like an insert,\n\t\t// and it disrupts the whole algorithm. See https://github.com/ckeditor/ckeditor5/issues/6367.\n\t\t//\n\t\t// It doesn't matter in what order we remove or add nodes, as long as we remove and add correct nodes at correct indexes.\n\t\tfor ( const action of actions ) {\n\t\t\tif ( action === 'delete' ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[Renderer]%c Remove node',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'color: green;font-weight: bold', '', actualDomChildren[ i ]\n\t\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\t\t\t\tnodesToUnbind.add( actualDomChildren[ i ] as DomElement );\n\t\t\t\tremove( actualDomChildren[ i ] );\n\t\t\t} else if ( action === 'equal' || action === 'update' ) {\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\n\t\ti = 0;\n\n\t\tfor ( const action of actions ) {\n\t\t\tif ( action === 'insert' ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[Renderer]%c Insert node',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'color: green;font-weight: bold', '', expectedDomChildren[ i ]\n\t\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\tinsertAt( domElement as DomElement, i, expectedDomChildren[ i ] );\n\t\t\t\ti++;\n\t\t\t}\n\t\t\t// Update the existing text node data. Note that replace action is generated only for Android for now.\n\t\t\telse if ( action === 'update' ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.group( '%c[Renderer]%c Update text node',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'color: green;font-weight: bold', ''\n\t\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\tupdateTextNode( actualDomChildren[ i ] as DomText, ( expectedDomChildren[ i ] as DomText ).data );\n\t\t\t\ti++;\n\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\t\t\t} else if ( action === 'equal' ) {\n\t\t\t\t// Force updating text nodes inside elements which did not change and do not need to be re-rendered (#1125).\n\t\t\t\t// Do it here (not in the loop above) because only after insertions the `i` index is correct.\n\t\t\t\tthis._markDescendantTextToSync( this.domConverter.domToView( expectedDomChildren[ i ] ) as any );\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\n\t\t// Unbind removed nodes. When node does not have a parent it means that it was removed from DOM tree during\n\t\t// comparison with the expected DOM. We don't need to check child nodes, because if child node was reinserted,\n\t\t// it was moved to DOM tree out of the removed node.\n\t\tfor ( const node of nodesToUnbind ) {\n\t\t\tif ( !node.parentNode ) {\n\t\t\t\tthis.domConverter.unbindDomElement( node as DomElement );\n\t\t\t}\n\t\t}\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n\t\t// @if CK_DEBUG_TYPING // }\n\t}\n\n\t/**\n\t * Shorthand for diffing two arrays or node lists of DOM nodes.\n\t *\n\t * @param actualDomChildren Actual DOM children\n\t * @param expectedDomChildren Expected DOM children.\n\t * @returns The list of actions based on the {@link module:utils/diff~diff} function.\n\t */\n\tprivate _diffNodeLists( actualDomChildren: Array<DomNode> | NodeList, expectedDomChildren: Array<DomNode> | NodeList ) {\n\t\tactualDomChildren = filterOutFakeSelectionContainer( actualDomChildren, this._fakeSelectionContainer );\n\n\t\treturn diff( actualDomChildren, expectedDomChildren, sameNodes.bind( null, this.domConverter ) );\n\t}\n\n\t/**\n\t * Finds DOM nodes that were replaced with the similar nodes (same tag name) in the view. All nodes are compared\n\t * within one `insert`/`delete` action group, for example:\n\t *\n\t * ```\n\t * Actual DOM:\t\t<p><b>Foo</b>Bar<i>Baz</i><b>Bax</b></p>\n\t * Expected DOM:\t<p>Bar<b>123</b><i>Baz</i><b>456</b></p>\n\t * Input actions:\t[ insert, insert, delete, delete, equal, insert, delete ]\n\t * Output actions:\t[ insert, replace, delete, equal, replace ]\n\t * ```\n\t *\n\t * @param actions Actions array which is a result of the {@link module:utils/diff~diff} function.\n\t * @param actualDom Actual DOM children\n\t * @param expectedDom Expected DOM children.\n\t * @param comparator A comparator function that should return `true` if the given node should be reused\n\t * (either by the update of a text node data or an element children list for similar elements).\n\t * @returns Actions array modified with the `update` actions.\n\t */\n\tprivate _findUpdateActions(\n\t\tactions: Array<DiffResult>,\n\t\tactualDom: Array<DomNode> | NodeList,\n\t\texpectedDom: Array<DomNode>,\n\t\tcomparator: ( a: DomNode, b: DomNode ) => boolean\n\t): Array<DiffResult | 'update'> {\n\t\t// If there is no both 'insert' and 'delete' actions, no need to check for replaced elements.\n\t\tif ( actions.indexOf( 'insert' ) === -1 || actions.indexOf( 'delete' ) === -1 ) {\n\t\t\treturn actions;\n\t\t}\n\n\t\tlet newActions: Array<DiffResult | 'update'> = [];\n\t\tlet actualSlice = [];\n\t\tlet expectedSlice = [];\n\n\t\tconst counter = { equal: 0, insert: 0, delete: 0 };\n\n\t\tfor ( const action of actions ) {\n\t\t\tif ( action === 'insert' ) {\n\t\t\t\texpectedSlice.push( expectedDom[ counter.equal + counter.insert ] );\n\t\t\t} else if ( action === 'delete' ) {\n\t\t\t\tactualSlice.push( actualDom[ counter.equal + counter.delete ] );\n\t\t\t} else { // equal\n\t\t\t\tnewActions = newActions.concat(\n\t\t\t\t\tdiff( actualSlice, expectedSlice, comparator )\n\t\t\t\t\t\t.map( action => action === 'equal' ? 'update' : action )\n\t\t\t\t);\n\n\t\t\t\tnewActions.push( 'equal' );\n\n\t\t\t\t// Reset stored elements on 'equal'.\n\t\t\t\tactualSlice = [];\n\t\t\t\texpectedSlice = [];\n\t\t\t}\n\t\t\tcounter[ action ]++;\n\t\t}\n\n\t\treturn newActions.concat(\n\t\t\tdiff( actualSlice, expectedSlice, comparator )\n\t\t\t\t.map( action => action === 'equal' ? 'update' : action )\n\t\t);\n\t}\n\n\t/**\n\t * Marks text nodes to be synchronized.\n\t *\n\t * If a text node is passed, it will be marked. If an element is passed, all descendant text nodes inside it will be marked.\n\t *\n\t * @param viewNode View node to sync.\n\t */\n\tprivate _markDescendantTextToSync( viewNode: ViewNode | undefined ): void {\n\t\tif ( !viewNode ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( viewNode.is( '$text' ) ) {\n\t\t\tthis.markedTexts.add( viewNode );\n\t\t} else if ( viewNode.is( 'element' ) ) {\n\t\t\tfor ( const child of viewNode.getChildren() ) {\n\t\t\t\tthis._markDescendantTextToSync( child );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the selection needs to be updated and possibly updates it.\n\t */\n\tprivate _updateSelection(): void {\n\t\t// Block updating DOM selection in (non-Android) Blink while the user is selecting to prevent accidental selection collapsing.\n\t\t// Note: Structural changes in DOM must trigger selection rendering, though. Nodes the selection was anchored\n\t\t// to, may disappear in DOM which would break the selection (e.g. in real-time collaboration scenarios).\n\t\t// https://github.com/ckeditor/ckeditor5/issues/10562, https://github.com/ckeditor/ckeditor5/issues/10723\n\t\tif ( env.isBlink && !env.isAndroid && this.isSelecting && !this.markedChildren.size ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there is no selection - remove DOM and fake selections.\n\t\tif ( this.selection.rangeCount === 0 ) {\n\t\t\tthis._removeDomSelection();\n\t\t\tthis._removeFakeSelection();\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst domRoot = this.domConverter.mapViewToDom( this.selection.editableElement! );\n\n\t\t// Do nothing if there is no focus, or there is no DOM element corresponding to selection's editable element.\n\t\tif ( !this.isFocused || !domRoot ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Render fake selection - create the fake selection container (if needed) and move DOM selection to it.\n\t\tif ( this.selection.isFake ) {\n\t\t\tthis._updateFakeSelection( domRoot );\n\t\t}\n\t\t// There was a fake selection so remove it and update the DOM selection.\n\t\t// This is especially important on Android because otherwise IME will try to compose over the fake selection container.\n\t\telse if ( this._fakeSelectionContainer && this._fakeSelectionContainer.isConnected ) {\n\t\t\tthis._removeFakeSelection();\n\t\t\tthis._updateDomSelection( domRoot );\n\t\t}\n\t\t// Update the DOM selection in case of a plain selection change (no fake selection is involved).\n\t\t// On non-Android the whole rendering is disabled in composition mode (including DOM selection update),\n\t\t// but updating DOM selection should be also disabled on Android if in the middle of the composition\n\t\t// (to not interrupt it).\n\t\telse if ( !( this.isComposing && env.isAndroid ) ) {\n\t\t\tthis._updateDomSelection( domRoot );\n\t\t}\n\t}\n\n\t/**\n\t * Updates the fake selection.\n\t *\n\t * @param domRoot A valid DOM root where the fake selection container should be added.\n\t */\n\tprivate _updateFakeSelection( domRoot: DomElement ): void {\n\t\tconst domDocument = domRoot.ownerDocument;\n\n\t\tif ( !this._fakeSelectionContainer ) {\n\t\t\tthis._fakeSelectionContainer = createFakeSelectionContainer( domDocument );\n\t\t}\n\n\t\tconst container = this._fakeSelectionContainer;\n\n\t\t// Bind fake selection container with the current selection *position*.\n\t\tthis.domConverter.bindFakeSelection( container, this.selection );\n\n\t\tif ( !this._fakeSelectionNeedsUpdate( domRoot ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !container.parentElement || container.parentElement != domRoot ) {\n\t\t\tdomRoot.appendChild( container );\n\t\t}\n\n\t\tcontainer.textContent = this.selection.fakeSelectionLabel || '\\u00A0';\n\n\t\tconst domSelection = domDocument.getSelection()!;\n\t\tconst domRange = domDocument.createRange();\n\n\t\tdomSelection.removeAllRanges();\n\t\tdomRange.selectNodeContents( container );\n\t\tdomSelection.addRange( domRange );\n\t}\n\n\t/**\n\t * Updates the DOM selection.\n\t *\n\t * @param domRoot A valid DOM root where the DOM selection should be rendered.\n\t */\n\tprivate _updateDomSelection( domRoot: DomElement ) {\n\t\tconst domSelection = domRoot.ownerDocument.defaultView!.getSelection()!;\n\n\t\t// Let's check whether DOM selection needs updating at all.\n\t\tif ( !this._domSelectionNeedsUpdate( domSelection ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Multi-range selection is not available in most browsers, and, at least in Chrome, trying to\n\t\t// set such selection, that is not continuous, throws an error. Because of that, we will just use anchor\n\t\t// and focus of view selection.\n\t\t// Since we are not supporting multi-range selection, we also do not need to check if proper editable is\n\t\t// selected. If there is any editable selected, it is okay (editable is taken from selection anchor).\n\t\tconst anchor = this.domConverter.viewPositionToDom( this.selection.anchor! )!;\n\t\tconst focus = this.domConverter.viewPositionToDom( this.selection.focus! )!;\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[Renderer]%c Update DOM selection:',\n\t\t// @if CK_DEBUG_TYPING // \t\t'color: green;font-weight: bold', '', anchor, focus\n\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t// @if CK_DEBUG_TYPING // }\n\n\t\tdomSelection.setBaseAndExtent( anchor.parent, anchor.offset, focus.parent, focus.offset );\n\n\t\t// Firefox–specific hack (https://github.com/ckeditor/ckeditor5-engine/issues/1439).\n\t\tif ( env.isGecko ) {\n\t\t\tfixGeckoSelectionAfterBr( focus, domSelection );\n\t\t}\n\t}\n\n\t/**\n\t * Checks whether a given DOM selection needs to be updated.\n\t *\n\t * @param domSelection The DOM selection to check.\n\t */\n\tprivate _domSelectionNeedsUpdate( domSelection: Selection ): boolean {\n\t\tif ( !this.domConverter.isDomSelectionCorrect( domSelection ) ) {\n\t\t\t// Current DOM selection is in incorrect position. We need to update it.\n\t\t\treturn true;\n\t\t}\n\n\t\tconst oldViewSelection = domSelection && this.domConverter.domSelectionToView( domSelection );\n\n\t\tif ( oldViewSelection && this.selection.isEqual( oldViewSelection ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// If selection is not collapsed, it does not need to be updated if it is similar.\n\t\tif ( !this.selection.isCollapsed && this.selection.isSimilar( oldViewSelection ) ) {\n\t\t\t// Selection did not changed and is correct, do not update.\n\t\t\treturn false;\n\t\t}\n\n\t\t// Selections are not similar.\n\t\treturn true;\n\t}\n\n\t/**\n\t * Checks whether the fake selection needs to be updated.\n\t *\n\t * @param domRoot A valid DOM root where a new fake selection container should be added.\n\t */\n\tprivate _fakeSelectionNeedsUpdate( domRoot: DomElement ): boolean {\n\t\tconst container = this._fakeSelectionContainer;\n\t\tconst domSelection = domRoot.ownerDocument.getSelection()!;\n\n\t\t// Fake selection needs to be updated if there's no fake selection container, or the container currently sits\n\t\t// in a different root.\n\t\tif ( !container || container.parentElement !== domRoot ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Make sure that the selection actually is within the fake selection.\n\t\tif ( domSelection.anchorNode !== container && !container.contains( domSelection.anchorNode ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn container.textContent !== this.selection.fakeSelectionLabel;\n\t}\n\n\t/**\n\t * Removes the DOM selection.\n\t */\n\tprivate _removeDomSelection(): void {\n\t\tfor ( const doc of this.domDocuments ) {\n\t\t\tconst domSelection = doc.getSelection()!;\n\n\t\t\tif ( domSelection.rangeCount ) {\n\t\t\t\tconst activeDomElement = doc.activeElement!;\n\t\t\t\tconst viewElement = this.domConverter.mapDomToView( activeDomElement as DomElement );\n\n\t\t\t\tif ( activeDomElement && viewElement ) {\n\t\t\t\t\tdomSelection.removeAllRanges();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Removes the fake selection.\n\t */\n\tprivate _removeFakeSelection(): void {\n\t\tconst container = this._fakeSelectionContainer;\n\n\t\tif ( container ) {\n\t\t\tcontainer.remove();\n\t\t}\n\t}\n\n\t/**\n\t * Checks if focus needs to be updated and possibly updates it.\n\t */\n\tprivate _updateFocus(): void {\n\t\tif ( this.isFocused ) {\n\t\t\tconst editable = this.selection.editableElement;\n\n\t\t\tif ( editable ) {\n\t\t\t\tthis.domConverter.focus( editable );\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Checks if provided element is editable.\n */\nfunction isEditable( element: ViewElement ): boolean {\n\tif ( element.getAttribute( 'contenteditable' ) == 'false' ) {\n\t\treturn false;\n\t}\n\n\tconst parent = element.findAncestor( element => element.hasAttribute( 'contenteditable' ) );\n\n\treturn !parent || parent.getAttribute( 'contenteditable' ) == 'true';\n}\n\n/**\n * Adds inline filler at a given position.\n *\n * The position can be given as an array of DOM nodes and an offset in that array,\n * or a DOM parent element and an offset in that element.\n *\n * @returns The DOM text node that contains an inline filler.\n */\nfunction addInlineFiller( domDocument: DomDocument, domParentOrArray: DomNode | Array<DomNode>, offset: number ): DomText {\n\tconst childNodes = domParentOrArray instanceof Array ? domParentOrArray : domParentOrArray.childNodes;\n\tconst nodeAfterFiller = childNodes[ offset ];\n\n\tif ( isText( nodeAfterFiller ) ) {\n\t\tnodeAfterFiller.data = INLINE_FILLER + nodeAfterFiller.data;\n\n\t\treturn nodeAfterFiller;\n\t} else {\n\t\tconst fillerNode = domDocument.createTextNode( INLINE_FILLER );\n\n\t\tif ( Array.isArray( domParentOrArray ) ) {\n\t\t\t( childNodes as Array<DomNode> ).splice( offset, 0, fillerNode );\n\t\t} else {\n\t\t\tinsertAt( domParentOrArray as DomElement, offset, fillerNode );\n\t\t}\n\n\t\treturn fillerNode;\n\t}\n}\n\n/**\n * Whether two DOM nodes should be considered as similar.\n * Nodes are considered similar if they have the same tag name.\n */\nfunction areSimilarElements( node1: DomNode, node2: DomNode ): boolean {\n\treturn isNode( node1 ) && isNode( node2 ) &&\n\t\t!isText( node1 ) && !isText( node2 ) &&\n\t\t!isComment( node1 ) && !isComment( node2 ) &&\n\t\t( node1 as DomElement ).tagName.toLowerCase() === ( node2 as DomElement ).tagName.toLowerCase();\n}\n\n/**\n * Whether two DOM nodes are text nodes.\n */\nfunction areTextNodes( node1: DomNode, node2: DomNode ): boolean {\n\treturn isNode( node1 ) && isNode( node2 ) &&\n\t\tisText( node1 ) && isText( node2 );\n}\n\n/**\n * Whether two dom nodes should be considered as the same.\n * Two nodes which are considered the same are:\n *\n * * Text nodes with the same text.\n * * Element nodes represented by the same object.\n * * Two block filler elements.\n *\n * @param blockFillerMode Block filler mode, see {@link module:engine/view/domconverter~DomConverter#blockFillerMode}.\n */\nfunction sameNodes( domConverter: DomConverter, actualDomChild: DomNode, expectedDomChild: DomNode ): boolean {\n\t// Elements.\n\tif ( actualDomChild === expectedDomChild ) {\n\t\treturn true;\n\t}\n\t// Texts.\n\telse if ( isText( actualDomChild ) && isText( expectedDomChild ) ) {\n\t\treturn actualDomChild.data === expectedDomChild.data;\n\t}\n\t// Block fillers.\n\telse if ( domConverter.isBlockFiller( actualDomChild ) &&\n\t\tdomConverter.isBlockFiller( expectedDomChild ) ) {\n\t\treturn true;\n\t}\n\n\t// Not matching types.\n\treturn false;\n}\n\n/**\n * The following is a Firefox–specific hack (https://github.com/ckeditor/ckeditor5-engine/issues/1439).\n * When the native DOM selection is at the end of the block and preceded by <br /> e.g.\n *\n * ```html\n * <p>foo<br/>[]</p>\n * ```\n *\n * which happens a lot when using the soft line break, the browser fails to (visually) move the\n * caret to the new line. A quick fix is as simple as force–refreshing the selection with the same range.\n */\nfunction fixGeckoSelectionAfterBr( focus: ReturnType<DomConverter[ 'viewPositionToDom' ]>, domSelection: DomSelection ) {\n\tconst parent = focus!.parent;\n\n\t// This fix works only when the focus point is at the very end of an element.\n\t// There is no point in running it in cases unrelated to the browser bug.\n\tif ( parent.nodeType != Node.ELEMENT_NODE || focus!.offset != parent.childNodes.length - 1 ) {\n\t\treturn;\n\t}\n\n\tconst childAtOffset = parent.childNodes[ focus!.offset ];\n\n\t// To stay on the safe side, the fix being as specific as possible, it targets only the\n\t// selection which is at the very end of the element and preceded by <br />.\n\tif ( childAtOffset && ( childAtOffset as DomElement ).tagName == 'BR' ) {\n\t\tdomSelection.addRange( domSelection.getRangeAt( 0 ) );\n\t}\n}\n\nfunction filterOutFakeSelectionContainer( domChildList: Array<DomNode> | NodeList, fakeSelectionContainer: DomElement | null ) {\n\tconst childList = Array.from( domChildList );\n\n\tif ( childList.length == 0 || !fakeSelectionContainer ) {\n\t\treturn childList;\n\t}\n\n\tconst last = childList[ childList.length - 1 ];\n\n\tif ( last == fakeSelectionContainer ) {\n\t\tchildList.pop();\n\t}\n\n\treturn childList;\n}\n\n/**\n * Creates a fake selection container for a given document.\n */\nfunction createFakeSelectionContainer( domDocument: DomDocument ): DomElement {\n\tconst container = domDocument.createElement( 'div' );\n\n\tcontainer.className = 'ck-fake-selection-container';\n\n\tObject.assign( container.style, {\n\t\tposition: 'fixed',\n\t\ttop: 0,\n\t\tleft: '-9999px',\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/752.\n\t\twidth: '42px'\n\t} );\n\n\t// Fill it with a text node so we can update it later.\n\tcontainer.textContent = '\\u00A0';\n\n\treturn container;\n}\n\n/**\n * Checks if text needs to be updated and possibly updates it by removing and inserting only parts\n * of the data from the existing text node to reduce impact on the IME composition.\n *\n * @param domText DOM text node to update.\n * @param expectedText The expected data of a text node.\n */\nfunction updateTextNode( domText: DomText, expectedText: string ) {\n\tconst actualText = domText.data;\n\n\tif ( actualText == expectedText ) {\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[Renderer]%c Text node does not need update:',\n\t\t// @if CK_DEBUG_TYPING // \t\t'color: green;font-weight: bold', '',\n\t\t// @if CK_DEBUG_TYPING // \t\t`\"${ domText.data }\" (${ domText.data.length })`\n\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t// @if CK_DEBUG_TYPING // }\n\n\t\treturn;\n\t}\n\n\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[Renderer]%c Update text node:',\n\t// @if CK_DEBUG_TYPING // \t\t'color: green;font-weight: bold', '',\n\t// @if CK_DEBUG_TYPING // \t\t`\"${ domText.data }\" (${ domText.data.length }) -> \"${ expectedText }\" (${ expectedText.length })`\n\t// @if CK_DEBUG_TYPING // \t);\n\t// @if CK_DEBUG_TYPING // }\n\n\tconst actions = fastDiff( actualText, expectedText );\n\n\tfor ( const action of actions ) {\n\t\tif ( action.type === 'insert' ) {\n\t\t\tdomText.insertData( action.index, action.values.join( '' ) );\n\t\t} else { // 'delete'\n\t\t\tdomText.deleteData( action.index, action.howMany );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/domconverter\n */\n\n/* globals Node, NodeFilter, DOMParser, Text */\n\nimport ViewText from './text';\nimport ViewElement from './element';\nimport ViewUIElement from './uielement';\nimport ViewPosition from './position';\nimport ViewRange from './range';\nimport ViewSelection from './selection';\nimport ViewDocumentFragment from './documentfragment';\nimport ViewTreeWalker from './treewalker';\nimport { default as Matcher, type MatcherPattern } from './matcher';\nimport {\n\tBR_FILLER, INLINE_FILLER_LENGTH, NBSP_FILLER, MARKED_NBSP_FILLER,\n\tgetDataWithoutFiller, isInlineFiller, startsWithFiller\n} from './filler';\n\nimport {\n\tglobal,\n\tlogWarning,\n\tindexOf,\n\tgetAncestors,\n\tisText,\n\tisComment,\n\tisValidAttributeName,\n\tfirst\n} from '@ckeditor/ckeditor5-utils';\n\nimport type ViewNode from './node';\nimport type Document from './document';\nimport type DocumentSelection from './documentselection';\nimport type EditableElement from './editableelement';\nimport type ViewTextProxy from './textproxy';\nimport type ViewRawElement from './rawelement';\n\ntype DomNode = globalThis.Node;\ntype DomElement = globalThis.HTMLElement;\ntype DomDocument = globalThis.Document;\ntype DomDocumentFragment = globalThis.DocumentFragment;\ntype DomComment = globalThis.Comment;\ntype DomRange = globalThis.Range;\ntype DomText = globalThis.Text;\ntype DomSelection = globalThis.Selection;\n\nconst BR_FILLER_REF = BR_FILLER( global.document ); // eslint-disable-line new-cap\nconst NBSP_FILLER_REF = NBSP_FILLER( global.document ); // eslint-disable-line new-cap\nconst MARKED_NBSP_FILLER_REF = MARKED_NBSP_FILLER( global.document ); // eslint-disable-line new-cap\nconst UNSAFE_ATTRIBUTE_NAME_PREFIX = 'data-ck-unsafe-attribute-';\nconst UNSAFE_ELEMENT_REPLACEMENT_ATTRIBUTE = 'data-ck-unsafe-element';\n\n/**\n * `DomConverter` is a set of tools to do transformations between DOM nodes and view nodes. It also handles\n * {@link module:engine/view/domconverter~DomConverter#bindElements bindings} between these nodes.\n *\n * An instance of the DOM converter is available under\n * {@link module:engine/view/view~View#domConverter `editor.editing.view.domConverter`}.\n *\n * The DOM converter does not check which nodes should be rendered (use {@link module:engine/view/renderer~Renderer}), does not keep the\n * state of a tree nor keeps the synchronization between the tree view and the DOM tree (use {@link module:engine/view/document~Document}).\n *\n * The DOM converter keeps DOM elements to view element bindings, so when the converter gets destroyed, the bindings are lost.\n * Two converters will keep separate binding maps, so one tree view can be bound with two DOM trees.\n */\nexport default class DomConverter {\n\tpublic readonly document: Document;\n\n\t/**\n\t * Whether to leave the View-to-DOM conversion result unchanged or improve editing experience by filtering out interactive data.\n\t */\n\tpublic readonly renderingMode: 'data' | 'editing';\n\n\t/**\n\t * The mode of a block filler used by the DOM converter.\n\t */\n\tpublic blockFillerMode: BlockFillerMode;\n\n\t/**\n\t * Elements which are considered pre-formatted elements.\n\t */\n\tpublic readonly preElements: Array<string>;\n\n\t/**\n\t * Elements which are considered block elements (and hence should be filled with a\n\t * {@link #isBlockFiller block filler}).\n\t *\n\t * Whether an element is considered a block element also affects handling of trailing whitespaces.\n\t *\n\t * You can extend this array if you introduce support for block elements which are not yet recognized here.\n\t */\n\tpublic readonly blockElements: Array<string>;\n\n\t/**\n\t * A list of elements that exist inline (in text) but their inner structure cannot be edited because\n\t * of the way they are rendered by the browser. They are mostly HTML form elements but there are other\n\t * elements such as `<img>` or `<iframe>` that also have non-editable children or no children whatsoever.\n\t *\n\t * Whether an element is considered an inline object has an impact on white space rendering (trimming)\n\t * around (and inside of it). In short, white spaces in text nodes next to inline objects are not trimmed.\n\t *\n\t * You can extend this array if you introduce support for inline object elements which are not yet recognized here.\n\t */\n\tpublic readonly inlineObjectElements: Array<string>;\n\n\t/**\n\t * A list of elements which may affect the editing experience. To avoid this, those elements are replaced with\n\t * `<span data-ck-unsafe-element=\"[element name]\"></span>` while rendering in the editing mode.\n\t */\n\tpublic readonly unsafeElements: Array<string>;\n\n\t/**\n\t * The DOM Document used to create DOM nodes.\n\t */\n\tprivate readonly _domDocument: DomDocument;\n\n\t/**\n\t * The DOM-to-view mapping.\n\t */\n\tprivate readonly _domToViewMapping = new WeakMap<DomElement | DomDocumentFragment, ViewElement | ViewDocumentFragment>();\n\n\t/**\n\t * The view-to-DOM mapping.\n\t */\n\tprivate readonly _viewToDomMapping = new WeakMap<ViewElement | ViewDocumentFragment, DomElement | DomDocumentFragment>();\n\n\t/**\n\t * Holds the mapping between fake selection containers and corresponding view selections.\n\t */\n\tprivate readonly _fakeSelectionMapping = new WeakMap<DomElement, ViewSelection>();\n\n\t/**\n\t * Matcher for view elements whose content should be treated as raw data\n\t * and not processed during the conversion from DOM nodes to view elements.\n\t */\n\tprivate readonly _rawContentElementMatcher = new Matcher();\n\n\t/**\n\t * Matcher for inline object view elements. This is an extension of a simple {@link #inlineObjectElements} array of element names.\n\t */\n\tprivate readonly _inlineObjectElementMatcher = new Matcher();\n\n\t/**\n\t * Creates a DOM converter.\n\t *\n\t * @param document The view document instance.\n\t * @param options An object with configuration options.\n\t * @param options.blockFillerMode The type of the block filler to use.\n\t * Default value depends on the options.renderingMode:\n\t * 'nbsp' when options.renderingMode == 'data',\n\t * 'br' when options.renderingMode == 'editing'.\n\t * @param options.renderingMode Whether to leave the View-to-DOM conversion result unchanged\n\t * or improve editing experience by filtering out interactive data.\n\t */\n\tconstructor(\n\t\tdocument: Document,\n\t\t{ blockFillerMode, renderingMode = 'editing' }: {\n\t\t\tblockFillerMode?: BlockFillerMode;\n\t\t\trenderingMode?: 'data' | 'editing';\n\t\t} = {}\n\t) {\n\t\tthis.document = document;\n\t\tthis.renderingMode = renderingMode;\n\t\tthis.blockFillerMode = blockFillerMode || ( renderingMode === 'editing' ? 'br' : 'nbsp' );\n\t\tthis.preElements = [ 'pre' ];\n\t\tthis.blockElements = [\n\t\t\t'address', 'article', 'aside', 'blockquote', 'caption', 'center', 'dd', 'details', 'dir', 'div',\n\t\t\t'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header',\n\t\t\t'hgroup', 'legend', 'li', 'main', 'menu', 'nav', 'ol', 'p', 'pre', 'section', 'summary', 'table', 'tbody',\n\t\t\t'td', 'tfoot', 'th', 'thead', 'tr', 'ul'\n\t\t];\n\t\tthis.inlineObjectElements = [\n\t\t\t'object', 'iframe', 'input', 'button', 'textarea', 'select', 'option', 'video', 'embed', 'audio', 'img', 'canvas'\n\t\t];\n\t\tthis.unsafeElements = [ 'script', 'style' ];\n\n\t\tthis._domDocument = this.renderingMode === 'editing' ? global.document : global.document.implementation.createHTMLDocument( '' );\n\t}\n\n\t/**\n\t * Binds a given DOM element that represents fake selection to a **position** of a\n\t * {@link module:engine/view/documentselection~DocumentSelection document selection}.\n\t * Document selection copy is stored and can be retrieved by the\n\t * {@link module:engine/view/domconverter~DomConverter#fakeSelectionToView} method.\n\t */\n\tpublic bindFakeSelection( domElement: DomElement, viewDocumentSelection: DocumentSelection ): void {\n\t\tthis._fakeSelectionMapping.set( domElement, new ViewSelection( viewDocumentSelection ) );\n\t}\n\n\t/**\n\t * Returns a {@link module:engine/view/selection~Selection view selection} instance corresponding to a given\n\t * DOM element that represents fake selection. Returns `undefined` if binding to the given DOM element does not exist.\n\t */\n\tpublic fakeSelectionToView( domElement: DomElement ): ViewSelection | undefined {\n\t\treturn this._fakeSelectionMapping.get( domElement );\n\t}\n\n\t/**\n\t * Binds DOM and view elements, so it will be possible to get corresponding elements using\n\t * {@link module:engine/view/domconverter~DomConverter#mapDomToView} and\n\t * {@link module:engine/view/domconverter~DomConverter#mapViewToDom}.\n\t *\n\t * @param domElement The DOM element to bind.\n\t * @param viewElement The view element to bind.\n\t */\n\tpublic bindElements( domElement: DomElement, viewElement: ViewElement ): void {\n\t\tthis._domToViewMapping.set( domElement, viewElement );\n\t\tthis._viewToDomMapping.set( viewElement, domElement );\n\t}\n\n\t/**\n\t * Unbinds a given DOM element from the view element it was bound to. Unbinding is deep, meaning that all children of\n\t * the DOM element will be unbound too.\n\t *\n\t * @param domElement The DOM element to unbind.\n\t */\n\tpublic unbindDomElement( domElement: DomElement ): void {\n\t\tconst viewElement = this._domToViewMapping.get( domElement );\n\n\t\tif ( viewElement ) {\n\t\t\tthis._domToViewMapping.delete( domElement );\n\t\t\tthis._viewToDomMapping.delete( viewElement );\n\n\t\t\tfor ( const child of Array.from( domElement.children ) ) {\n\t\t\t\tthis.unbindDomElement( child as DomElement );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Binds DOM and view document fragments, so it will be possible to get corresponding document fragments using\n\t * {@link module:engine/view/domconverter~DomConverter#mapDomToView} and\n\t * {@link module:engine/view/domconverter~DomConverter#mapViewToDom}.\n\t *\n\t * @param domFragment The DOM document fragment to bind.\n\t * @param viewFragment The view document fragment to bind.\n\t */\n\tpublic bindDocumentFragments( domFragment: DomDocumentFragment, viewFragment: ViewDocumentFragment ): void {\n\t\tthis._domToViewMapping.set( domFragment, viewFragment );\n\t\tthis._viewToDomMapping.set( viewFragment, domFragment );\n\t}\n\n\t/**\n\t * Decides whether a given pair of attribute key and value should be passed further down the pipeline.\n\t *\n\t * @param elementName Element name in lower case.\n\t */\n\tpublic shouldRenderAttribute( attributeKey: string, attributeValue: string, elementName: string ): boolean {\n\t\tif ( this.renderingMode === 'data' ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tattributeKey = attributeKey.toLowerCase();\n\n\t\tif ( attributeKey.startsWith( 'on' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (\n\t\t\tattributeKey === 'srcdoc' &&\n\t\t\tattributeValue.match( /\\bon\\S+\\s*=|javascript:|<\\s*\\/*script/i )\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (\n\t\t\telementName === 'img' &&\n\t\t\t( attributeKey === 'src' || attributeKey === 'srcset' )\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( elementName === 'source' && attributeKey === 'srcset' ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( attributeValue.match( /^\\s*(javascript:|data:(image\\/svg|text\\/x?html))/i ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Set `domElement`'s content using provided `html` argument. Apply necessary filtering for the editing pipeline.\n\t *\n\t * @param domElement DOM element that should have `html` set as its content.\n\t * @param html Textual representation of the HTML that will be set on `domElement`.\n\t */\n\tpublic setContentOf( domElement: DomElement, html: string ): void {\n\t\t// For data pipeline we pass the HTML as-is.\n\t\tif ( this.renderingMode === 'data' ) {\n\t\t\tdomElement.innerHTML = html;\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst document = new DOMParser().parseFromString( html, 'text/html' );\n\t\tconst fragment = document.createDocumentFragment();\n\t\tconst bodyChildNodes = document.body.childNodes;\n\n\t\twhile ( bodyChildNodes.length > 0 ) {\n\t\t\tfragment.appendChild( bodyChildNodes[ 0 ] );\n\t\t}\n\n\t\tconst treeWalker = document.createTreeWalker( fragment, NodeFilter.SHOW_ELEMENT );\n\t\tconst nodes: Array<DomElement> = [];\n\n\t\tlet currentNode;\n\n\t\t// eslint-disable-next-line no-cond-assign\n\t\twhile ( currentNode = treeWalker.nextNode() ) {\n\t\t\tnodes.push( currentNode as DomElement );\n\t\t}\n\n\t\tfor ( const currentNode of nodes ) {\n\t\t\t// Go through nodes to remove those that are prohibited in editing pipeline.\n\t\t\tfor ( const attributeName of currentNode.getAttributeNames() ) {\n\t\t\t\tthis.setDomElementAttribute( currentNode, attributeName, currentNode.getAttribute( attributeName )! );\n\t\t\t}\n\n\t\t\tconst elementName = currentNode.tagName.toLowerCase();\n\n\t\t\t// There are certain nodes, that should be renamed to <span> in editing pipeline.\n\t\t\tif ( this._shouldRenameElement( elementName ) ) {\n\t\t\t\t_logUnsafeElement( elementName );\n\n\t\t\t\tcurrentNode.replaceWith( this._createReplacementDomElement( elementName, currentNode ) );\n\t\t\t}\n\t\t}\n\n\t\t// Empty the target element.\n\t\twhile ( domElement.firstChild ) {\n\t\t\tdomElement.firstChild.remove();\n\t\t}\n\n\t\tdomElement.append( fragment );\n\t}\n\n\t/**\n\t * Converts the view to the DOM. For all text nodes, not bound elements and document fragments new items will\n\t * be created. For bound elements and document fragments the method will return corresponding items.\n\t *\n\t * @param viewNode View node or document fragment to transform.\n\t * @param options Conversion options.\n\t * @param options.bind Determines whether new elements will be bound.\n\t * @param options.withChildren If `false`, node's and document fragment's children will not be converted.\n\t * @returns Converted node or DocumentFragment.\n\t */\n\tpublic viewToDom(\n\t\tviewNode: ViewNode | ViewDocumentFragment,\n\t\toptions: { bind?: boolean; withChildren?: boolean } = {}\n\t): DomNode | DomDocumentFragment {\n\t\tif ( viewNode.is( '$text' ) ) {\n\t\t\tconst textData = this._processDataFromViewText( viewNode );\n\n\t\t\treturn this._domDocument.createTextNode( textData );\n\t\t} else {\n\t\t\tif ( this.mapViewToDom( viewNode as ViewElement ) ) {\n\t\t\t\treturn this.mapViewToDom( viewNode as ViewElement )!;\n\t\t\t}\n\n\t\t\tlet domElement: DomElement | DomDocumentFragment | DomComment;\n\n\t\t\tif ( viewNode.is( 'documentFragment' ) ) {\n\t\t\t\t// Create DOM document fragment.\n\t\t\t\tdomElement = this._domDocument.createDocumentFragment();\n\n\t\t\t\tif ( options.bind ) {\n\t\t\t\t\tthis.bindDocumentFragments( domElement, viewNode );\n\t\t\t\t}\n\t\t\t} else if ( viewNode.is( 'uiElement' ) ) {\n\t\t\t\tif ( viewNode.name === '$comment' ) {\n\t\t\t\t\tdomElement = this._domDocument.createComment( viewNode.getCustomProperty( '$rawContent' ) as string );\n\t\t\t\t} else {\n\t\t\t\t\t// UIElement has its own render() method (see #799).\n\t\t\t\t\tdomElement = viewNode.render( this._domDocument, this );\n\t\t\t\t}\n\n\t\t\t\tif ( options.bind ) {\n\t\t\t\t\tthis.bindElements( domElement as DomElement, viewNode );\n\t\t\t\t}\n\n\t\t\t\treturn domElement;\n\t\t\t} else {\n\t\t\t\t// Create DOM element.\n\t\t\t\tif ( this._shouldRenameElement( ( viewNode as ViewElement ).name ) ) {\n\t\t\t\t\t_logUnsafeElement( ( viewNode as ViewElement ).name );\n\n\t\t\t\t\tdomElement = this._createReplacementDomElement( ( viewNode as ViewElement ).name );\n\t\t\t\t} else if ( ( viewNode as ViewElement ).hasAttribute( 'xmlns' ) ) {\n\t\t\t\t\tdomElement = this._domDocument.createElementNS(\n\t\t\t\t\t\t( viewNode as ViewElement ).getAttribute( 'xmlns' )!,\n\t\t\t\t\t\t( viewNode as ViewElement ).name\n\t\t\t\t\t) as HTMLElement;\n\t\t\t\t} else {\n\t\t\t\t\tdomElement = this._domDocument.createElement( ( viewNode as ViewElement ).name );\n\t\t\t\t}\n\n\t\t\t\t// RawElement take care of their children in RawElement#render() method which can be customized\n\t\t\t\t// (see https://github.com/ckeditor/ckeditor5/issues/4469).\n\t\t\t\tif ( viewNode.is( 'rawElement' ) ) {\n\t\t\t\t\tviewNode.render( domElement, this );\n\t\t\t\t}\n\n\t\t\t\tif ( options.bind ) {\n\t\t\t\t\tthis.bindElements( domElement, ( viewNode as ViewElement ) );\n\t\t\t\t}\n\n\t\t\t\t// Copy element's attributes.\n\t\t\t\tfor ( const key of ( viewNode as ViewElement ).getAttributeKeys() ) {\n\t\t\t\t\tthis.setDomElementAttribute(\n\t\t\t\t\t\tdomElement,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\t( viewNode as ViewElement ).getAttribute( key )!,\n\t\t\t\t\t\t( viewNode as ViewElement )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( options.withChildren !== false ) {\n\t\t\t\tfor ( const child of this.viewChildrenToDom( viewNode as ViewElement, options ) ) {\n\t\t\t\t\tdomElement!.appendChild( child );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn domElement!;\n\t\t}\n\t}\n\n\t/**\n\t * Sets the attribute on a DOM element.\n\t *\n\t * **Note**: To remove the attribute, use {@link #removeDomElementAttribute}.\n\t *\n\t * @param domElement The DOM element the attribute should be set on.\n\t * @param key The name of the attribute.\n\t * @param value The value of the attribute.\n\t * @param relatedViewElement The view element related to the `domElement` (if there is any).\n\t * It helps decide whether the attribute set is unsafe. For instance, view elements created via the\n\t * {@link module:engine/view/downcastwriter~DowncastWriter} methods can allow certain attributes that would normally be filtered out.\n\t */\n\tpublic setDomElementAttribute( domElement: DomElement, key: string, value: string, relatedViewElement?: ViewElement ): void {\n\t\tconst shouldRenderAttribute = this.shouldRenderAttribute( key, value, domElement.tagName.toLowerCase() ) ||\n\t\t\trelatedViewElement && relatedViewElement.shouldRenderUnsafeAttribute( key );\n\n\t\tif ( !shouldRenderAttribute ) {\n\t\t\tlogWarning( 'domconverter-unsafe-attribute-detected', { domElement, key, value } );\n\t\t}\n\n\t\tif ( !isValidAttributeName( key ) ) {\n\t\t\t/**\n\t\t\t * Invalid attribute name was ignored during rendering.\n\t\t\t *\n\t\t\t * @error domconverter-invalid-attribute-detected\n\t\t\t */\n\t\t\tlogWarning( 'domconverter-invalid-attribute-detected', { domElement, key, value } );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// The old value was safe but the new value is unsafe.\n\t\tif ( domElement.hasAttribute( key ) && !shouldRenderAttribute ) {\n\t\t\tdomElement.removeAttribute( key );\n\t\t}\n\t\t// The old value was unsafe (but prefixed) but the new value will be safe (will be unprefixed).\n\t\telse if ( domElement.hasAttribute( UNSAFE_ATTRIBUTE_NAME_PREFIX + key ) && shouldRenderAttribute ) {\n\t\t\tdomElement.removeAttribute( UNSAFE_ATTRIBUTE_NAME_PREFIX + key );\n\t\t}\n\n\t\t// If the attribute should not be rendered, rename it (instead of removing) to give developers some idea of what\n\t\t// is going on (https://github.com/ckeditor/ckeditor5/issues/10801).\n\t\tdomElement.setAttribute( shouldRenderAttribute ? key : UNSAFE_ATTRIBUTE_NAME_PREFIX + key, value );\n\t}\n\n\t/**\n\t * Removes an attribute from a DOM element.\n\t *\n\t * **Note**: To set the attribute, use {@link #setDomElementAttribute}.\n\t *\n\t * @param domElement The DOM element the attribute should be removed from.\n\t * @param key The name of the attribute.\n\t */\n\tpublic removeDomElementAttribute( domElement: DomElement, key: string ): void {\n\t\t// See #_createReplacementDomElement() to learn what this is.\n\t\tif ( key == UNSAFE_ELEMENT_REPLACEMENT_ATTRIBUTE ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdomElement.removeAttribute( key );\n\n\t\t// See setDomElementAttribute() to learn what this is.\n\t\tdomElement.removeAttribute( UNSAFE_ATTRIBUTE_NAME_PREFIX + key );\n\t}\n\n\t/**\n\t * Converts children of the view element to DOM using the\n\t * {@link module:engine/view/domconverter~DomConverter#viewToDom} method.\n\t * Additionally, this method adds block {@link module:engine/view/filler filler} to the list of children, if needed.\n\t *\n\t * @param viewElement Parent view element.\n\t * @param options See {@link module:engine/view/domconverter~DomConverter#viewToDom} options parameter.\n\t * @returns DOM nodes.\n\t */\n\tpublic* viewChildrenToDom(\n\t\tviewElement: ViewElement,\n\t\toptions: { bind?: boolean; withChildren?: boolean } = {}\n\t): IterableIterator<Node> {\n\t\tconst fillerPositionOffset = viewElement.getFillerOffset && viewElement.getFillerOffset();\n\t\tlet offset = 0;\n\n\t\tfor ( const childView of viewElement.getChildren() ) {\n\t\t\tif ( fillerPositionOffset === offset ) {\n\t\t\t\tyield this._getBlockFiller();\n\t\t\t}\n\n\t\t\tconst transparentRendering = childView.is( 'element' ) &&\n\t\t\t\t!!childView.getCustomProperty( 'dataPipeline:transparentRendering' ) &&\n\t\t\t\t!first( childView.getAttributes() );\n\n\t\t\tif ( transparentRendering && this.renderingMode == 'data' ) {\n\t\t\t\tyield* this.viewChildrenToDom( childView, options );\n\t\t\t} else {\n\t\t\t\tif ( transparentRendering ) {\n\t\t\t\t\t/**\n\t\t\t\t\t * The `dataPipeline:transparentRendering` flag is supported only in the data pipeline.\n\t\t\t\t\t *\n\t\t\t\t\t * @error domconverter-transparent-rendering-unsupported-in-editing-pipeline\n\t\t\t\t\t */\n\t\t\t\t\tlogWarning( 'domconverter-transparent-rendering-unsupported-in-editing-pipeline', { viewElement: childView } );\n\t\t\t\t}\n\n\t\t\t\tyield this.viewToDom( childView, options );\n\t\t\t}\n\n\t\t\toffset++;\n\t\t}\n\n\t\tif ( fillerPositionOffset === offset ) {\n\t\t\tyield this._getBlockFiller();\n\t\t}\n\t}\n\n\t/**\n\t * Converts view {@link module:engine/view/range~Range} to DOM range.\n\t * Inline and block {@link module:engine/view/filler fillers} are handled during the conversion.\n\t *\n\t * @param viewRange View range.\n\t * @returns DOM range.\n\t */\n\tpublic viewRangeToDom( viewRange: ViewRange ): DomRange {\n\t\tconst domStart = this.viewPositionToDom( viewRange.start )!;\n\t\tconst domEnd = this.viewPositionToDom( viewRange.end )!;\n\n\t\tconst domRange = this._domDocument.createRange();\n\t\tdomRange.setStart( domStart.parent, domStart.offset );\n\t\tdomRange.setEnd( domEnd.parent, domEnd.offset );\n\n\t\treturn domRange;\n\t}\n\n\t/**\n\t * Converts view {@link module:engine/view/position~Position} to DOM parent and offset.\n\t *\n\t * Inline and block {@link module:engine/view/filler fillers} are handled during the conversion.\n\t * If the converted position is directly before inline filler it is moved inside the filler.\n\t *\n\t * @param viewPosition View position.\n\t * @returns DOM position or `null` if view position could not be converted to DOM.\n\t * DOM position has two properties:\n\t * * `parent` - DOM position parent.\n\t * * `offset` - DOM position offset.\n\t */\n\tpublic viewPositionToDom( viewPosition: ViewPosition ): { parent: DomNode; offset: number } | null {\n\t\tconst viewParent = viewPosition.parent;\n\n\t\tif ( viewParent.is( '$text' ) ) {\n\t\t\tconst domParent = this.findCorrespondingDomText( viewParent );\n\n\t\t\tif ( !domParent ) {\n\t\t\t\t// Position is in a view text node that has not been rendered to DOM yet.\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet offset = viewPosition.offset;\n\n\t\t\tif ( startsWithFiller( domParent ) ) {\n\t\t\t\toffset += INLINE_FILLER_LENGTH;\n\t\t\t}\n\n\t\t\treturn { parent: domParent, offset };\n\t\t} else {\n\t\t\t// viewParent is instance of ViewElement.\n\t\t\tlet domParent, domBefore, domAfter;\n\n\t\t\tif ( viewPosition.offset === 0 ) {\n\t\t\t\tdomParent = this.mapViewToDom( viewParent as ViewElement );\n\n\t\t\t\tif ( !domParent ) {\n\t\t\t\t\t// Position is in a view element that has not been rendered to DOM yet.\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tdomAfter = domParent.childNodes[ 0 ];\n\t\t\t} else {\n\t\t\t\tconst nodeBefore = viewPosition.nodeBefore!;\n\n\t\t\t\tdomBefore = nodeBefore.is( '$text' ) ?\n\t\t\t\t\tthis.findCorrespondingDomText( nodeBefore ) :\n\t\t\t\t\tthis.mapViewToDom( nodeBefore as ViewElement );\n\n\t\t\t\tif ( !domBefore ) {\n\t\t\t\t\t// Position is after a view element that has not been rendered to DOM yet.\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tdomParent = domBefore.parentNode;\n\t\t\t\tdomAfter = domBefore.nextSibling;\n\t\t\t}\n\n\t\t\t// If there is an inline filler at position return position inside the filler. We should never return\n\t\t\t// the position before the inline filler.\n\t\t\tif ( isText( domAfter ) && startsWithFiller( domAfter ) ) {\n\t\t\t\treturn { parent: domAfter, offset: INLINE_FILLER_LENGTH };\n\t\t\t}\n\n\t\t\tconst offset = domBefore ? indexOf( domBefore ) + 1 : 0;\n\n\t\t\treturn { parent: domParent!, offset };\n\t\t}\n\t}\n\n\t/**\n\t * Converts DOM to view. For all text nodes, not bound elements and document fragments new items will\n\t * be created. For bound elements and document fragments function will return corresponding items. For\n\t * {@link module:engine/view/filler fillers} `null` will be returned.\n\t * For all DOM elements rendered by {@link module:engine/view/uielement~UIElement} that UIElement will be returned.\n\t *\n\t * @param domNode DOM node or document fragment to transform.\n\t * @param options Conversion options.\n\t * @param options.bind Determines whether new elements will be bound. False by default.\n\t * @param options.withChildren If `true`, node's and document fragment's children will be converted too. True by default.\n\t * @param options.keepOriginalCase If `false`, node's tag name will be converted to lower case. False by default.\n\t * @param options.skipComments If `false`, comment nodes will be converted to `$comment`\n\t * {@link module:engine/view/uielement~UIElement view UI elements}. False by default.\n\t * @returns Converted node or document fragment or `null` if DOM node is a {@link module:engine/view/filler filler}\n\t * or the given node is an empty text node.\n\t */\n\tpublic domToView(\n\t\tdomNode: DomNode,\n\t\toptions: {\n\t\t\tbind?: boolean;\n\t\t\twithChildren?: boolean;\n\t\t\tkeepOriginalCase?: boolean;\n\t\t\tskipComments?: boolean;\n\t\t} = {}\n\t): ViewNode | ViewDocumentFragment | null {\n\t\tconst inlineNodes: Array<ViewNode> = [];\n\t\tconst generator = this._domToView( domNode, options, inlineNodes );\n\n\t\t// Get the first yielded value or a returned value.\n\t\tconst node = generator.next().value;\n\n\t\tif ( !node ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Trigger children handling.\n\t\tgenerator.next();\n\n\t\t// Whitespace cleaning.\n\t\tthis._processDomInlineNodes( null, inlineNodes, options );\n\n\t\t// Text not got trimmed to an empty string so there is no result node.\n\t\tif ( node.is( '$text' ) && node.data.length == 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Converts children of the DOM element to view nodes using\n\t * the {@link module:engine/view/domconverter~DomConverter#domToView} method.\n\t * Additionally this method omits block {@link module:engine/view/filler filler}, if it exists in the DOM parent.\n\t *\n\t * @param domElement Parent DOM element.\n\t * @param options See {@link module:engine/view/domconverter~DomConverter#domToView} options parameter.\n\t * @param inlineNodes An array that will be populated with inline nodes. It's used internally for whitespace processing.\n\t * @returns View nodes.\n\t */\n\tpublic* domChildrenToView(\n\t\tdomElement: DomElement,\n\t\toptions: Parameters<DomConverter[ 'domToView' ]>[ 1 ] = {},\n\t\tinlineNodes: Array<ViewNode> = []\n\t): IterableIterator<ViewNode> {\n\t\tfor ( let i = 0; i < domElement.childNodes.length; i++ ) {\n\t\t\tconst domChild = domElement.childNodes[ i ];\n\t\t\tconst generator = this._domToView( domChild, options, inlineNodes );\n\n\t\t\t// Get the first yielded value or a returned value.\n\t\t\tconst viewChild = generator.next().value as ViewNode | null;\n\n\t\t\tif ( viewChild !== null ) {\n\t\t\t\t// Whitespace cleaning before entering a block element (between block elements).\n\t\t\t\tif ( this._isBlockViewElement( viewChild ) ) {\n\t\t\t\t\tthis._processDomInlineNodes( domElement, inlineNodes, options );\n\t\t\t\t}\n\n\t\t\t\tyield viewChild;\n\n\t\t\t\t// Trigger children handling.\n\t\t\t\tgenerator.next();\n\t\t\t}\n\t\t}\n\n\t\t// Whitespace cleaning before leaving a block element (content of block element).\n\t\tthis._processDomInlineNodes( domElement, inlineNodes, options );\n\t}\n\n\t/**\n\t * Converts DOM selection to view {@link module:engine/view/selection~Selection}.\n\t * Ranges which cannot be converted will be omitted.\n\t *\n\t * @param domSelection DOM selection.\n\t * @returns View selection.\n\t */\n\tpublic domSelectionToView( domSelection: DomSelection ): ViewSelection {\n\t\t// DOM selection might be placed in fake selection container.\n\t\t// If container contains fake selection - return corresponding view selection.\n\t\tif ( domSelection.rangeCount === 1 ) {\n\t\t\tlet container: Node | null = domSelection.getRangeAt( 0 ).startContainer;\n\n\t\t\t// The DOM selection might be moved to the text node inside the fake selection container.\n\t\t\tif ( isText( container ) ) {\n\t\t\t\tcontainer = container.parentNode;\n\t\t\t}\n\n\t\t\tconst viewSelection = this.fakeSelectionToView( container as DomElement );\n\n\t\t\tif ( viewSelection ) {\n\t\t\t\treturn viewSelection;\n\t\t\t}\n\t\t}\n\n\t\tconst isBackward = this.isDomSelectionBackward( domSelection );\n\n\t\tconst viewRanges: Array<ViewRange> = [];\n\n\t\tfor ( let i = 0; i < domSelection.rangeCount; i++ ) {\n\t\t\t// DOM Range have correct start and end, no matter what is the DOM Selection direction. So we don't have to fix anything.\n\t\t\tconst domRange = domSelection.getRangeAt( i );\n\t\t\tconst viewRange = this.domRangeToView( domRange );\n\n\t\t\tif ( viewRange ) {\n\t\t\t\tviewRanges.push( viewRange );\n\t\t\t}\n\t\t}\n\n\t\treturn new ViewSelection( viewRanges, { backward: isBackward } );\n\t}\n\n\t/**\n\t * Converts DOM Range to view {@link module:engine/view/range~Range}.\n\t * If the start or end position can not be converted `null` is returned.\n\t *\n\t * @param domRange DOM range.\n\t * @returns View range.\n\t */\n\tpublic domRangeToView( domRange: DomRange | StaticRange ): ViewRange | null {\n\t\tconst viewStart = this.domPositionToView( domRange.startContainer, domRange.startOffset );\n\t\tconst viewEnd = this.domPositionToView( domRange.endContainer, domRange.endOffset );\n\n\t\tif ( viewStart && viewEnd ) {\n\t\t\treturn new ViewRange( viewStart, viewEnd );\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Converts DOM parent and offset to view {@link module:engine/view/position~Position}.\n\t *\n\t * If the position is inside a {@link module:engine/view/filler filler} which has no corresponding view node,\n\t * position of the filler will be converted and returned.\n\t *\n\t * If the position is inside DOM element rendered by {@link module:engine/view/uielement~UIElement}\n\t * that position will be converted to view position before that UIElement.\n\t *\n\t * If structures are too different and it is not possible to find corresponding position then `null` will be returned.\n\t *\n\t * @param domParent DOM position parent.\n\t * @param domOffset DOM position offset. You can skip it when converting the inline filler node.\n\t * @returns View position.\n\t */\n\tpublic domPositionToView( domParent: DomNode, domOffset: number = 0 ): ViewPosition | null {\n\t\tif ( this.isBlockFiller( domParent ) ) {\n\t\t\treturn this.domPositionToView( domParent.parentNode!, indexOf( domParent ) );\n\t\t}\n\n\t\t// If position is somewhere inside UIElement or a RawElement - return position before that element.\n\t\tconst viewElement = this.mapDomToView( domParent as DomElement );\n\n\t\tif ( viewElement && ( viewElement.is( 'uiElement' ) || viewElement.is( 'rawElement' ) ) ) {\n\t\t\treturn ViewPosition._createBefore( viewElement );\n\t\t}\n\n\t\tif ( isText( domParent ) ) {\n\t\t\tif ( isInlineFiller( domParent ) ) {\n\t\t\t\treturn this.domPositionToView( domParent.parentNode!, indexOf( domParent ) );\n\t\t\t}\n\n\t\t\tconst viewParent = this.findCorrespondingViewText( domParent );\n\t\t\tlet offset = domOffset;\n\n\t\t\tif ( !viewParent ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( startsWithFiller( domParent ) ) {\n\t\t\t\toffset -= INLINE_FILLER_LENGTH;\n\t\t\t\toffset = offset < 0 ? 0 : offset;\n\t\t\t}\n\n\t\t\treturn new ViewPosition( viewParent, offset );\n\t\t}\n\t\t// domParent instanceof HTMLElement.\n\t\telse {\n\t\t\tif ( domOffset === 0 ) {\n\t\t\t\tconst viewParent = this.mapDomToView( domParent as DomElement );\n\n\t\t\t\tif ( viewParent ) {\n\t\t\t\t\treturn new ViewPosition( viewParent, 0 );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst domBefore = domParent.childNodes[ domOffset - 1 ];\n\n\t\t\t\t// Jump over an inline filler (and also on Firefox jump over a block filler while pressing backspace in an empty paragraph).\n\t\t\t\tif ( isText( domBefore ) && isInlineFiller( domBefore ) || domBefore && this.isBlockFiller( domBefore ) ) {\n\t\t\t\t\treturn this.domPositionToView( domBefore.parentNode!, indexOf( domBefore ) );\n\t\t\t\t}\n\n\t\t\t\tconst viewBefore = isText( domBefore ) ?\n\t\t\t\t\tthis.findCorrespondingViewText( domBefore ) :\n\t\t\t\t\tthis.mapDomToView( domBefore as DomElement );\n\n\t\t\t\t// TODO #663\n\t\t\t\tif ( viewBefore && viewBefore.parent ) {\n\t\t\t\t\treturn new ViewPosition( viewBefore.parent, viewBefore.index! + 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Returns corresponding view {@link module:engine/view/element~Element Element} or\n\t * {@link module:engine/view/documentfragment~DocumentFragment} for provided DOM element or\n\t * document fragment. If there is no view item {@link module:engine/view/domconverter~DomConverter#bindElements bound}\n\t * to the given DOM - `undefined` is returned.\n\t *\n\t * For all DOM elements rendered by a {@link module:engine/view/uielement~UIElement} or\n\t * a {@link module:engine/view/rawelement~RawElement}, the parent `UIElement` or `RawElement` will be returned.\n\t *\n\t * @param domElementOrDocumentFragment DOM element or document fragment.\n\t * @returns Corresponding view element, document fragment or `undefined` if no element was bound.\n\t */\n\tpublic mapDomToView( domElementOrDocumentFragment: DomElement | DomDocumentFragment ): ViewElement | ViewDocumentFragment | undefined {\n\t\tconst hostElement = this.getHostViewElement( domElementOrDocumentFragment );\n\n\t\treturn hostElement || this._domToViewMapping.get( domElementOrDocumentFragment );\n\t}\n\n\t/**\n\t * Finds corresponding text node. Text nodes are not {@link module:engine/view/domconverter~DomConverter#bindElements bound},\n\t * corresponding text node is returned based on the sibling or parent.\n\t *\n\t * If the directly previous sibling is a {@link module:engine/view/domconverter~DomConverter#bindElements bound} element, it is used\n\t * to find the corresponding text node.\n\t *\n\t * If this is a first child in the parent and the parent is a {@link module:engine/view/domconverter~DomConverter#bindElements bound}\n\t * element, it is used to find the corresponding text node.\n\t *\n\t * For all text nodes rendered by a {@link module:engine/view/uielement~UIElement} or\n\t * a {@link module:engine/view/rawelement~RawElement}, the parent `UIElement` or `RawElement` will be returned.\n\t *\n\t * Otherwise `null` is returned.\n\t *\n\t * Note that for the block or inline {@link module:engine/view/filler filler} this method returns `null`.\n\t *\n\t * @param domText DOM text node.\n\t * @returns Corresponding view text node or `null`, if it was not possible to find a corresponding node.\n\t */\n\tpublic findCorrespondingViewText( domText: DomText ): ViewText | ViewUIElement | ViewRawElement | null {\n\t\tif ( isInlineFiller( domText ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// If DOM text was rendered by a UIElement or a RawElement - return this parent element.\n\t\tconst hostElement = this.getHostViewElement( domText );\n\n\t\tif ( hostElement ) {\n\t\t\treturn hostElement;\n\t\t}\n\n\t\tconst previousSibling = domText.previousSibling;\n\n\t\t// Try to use previous sibling to find the corresponding text node.\n\t\tif ( previousSibling ) {\n\t\t\tif ( !( this.isElement( previousSibling ) ) ) {\n\t\t\t\t// The previous is text or comment.\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst viewElement = this.mapDomToView( previousSibling );\n\n\t\t\tif ( viewElement ) {\n\t\t\t\tconst nextSibling = ( viewElement as ViewElement ).nextSibling;\n\n\t\t\t\t// It might be filler which has no corresponding view node.\n\t\t\t\tif ( nextSibling instanceof ViewText ) {\n\t\t\t\t\treturn nextSibling;\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Try to use parent to find the corresponding text node.\n\t\telse {\n\t\t\tconst viewElement = this.mapDomToView( domText.parentNode as ( DomElement | DomDocumentFragment ) );\n\n\t\t\tif ( viewElement ) {\n\t\t\t\tconst firstChild = ( viewElement as ViewElement ).getChild( 0 );\n\n\t\t\t\t// It might be filler which has no corresponding view node.\n\t\t\t\tif ( firstChild instanceof ViewText ) {\n\t\t\t\t\treturn firstChild;\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns corresponding DOM item for provided {@link module:engine/view/element~Element Element} or\n\t * {@link module:engine/view/documentfragment~DocumentFragment DocumentFragment}.\n\t * To find a corresponding text for {@link module:engine/view/text~Text view Text instance}\n\t * use {@link #findCorrespondingDomText}.\n\t *\n\t * @label ELEMENT\n\t * @param element View element or document fragment.\n\t * @returns Corresponding DOM node or document fragment.\n\t */\n\tpublic mapViewToDom( element: ViewElement ): DomElement | undefined;\n\n\t/**\n\t * Returns corresponding DOM item for provided {@link module:engine/view/element~Element Element} or\n\t * {@link module:engine/view/documentfragment~DocumentFragment DocumentFragment}.\n\t * To find a corresponding text for {@link module:engine/view/text~Text view Text instance}\n\t * use {@link #findCorrespondingDomText}.\n\t *\n\t * @label DOCUMENT_FRAGMENT\n\t * @param documentFragment View element or document fragment.\n\t * @returns Corresponding DOM node or document fragment.\n\t */\n\tpublic mapViewToDom( documentFragment: ViewDocumentFragment ): DomDocumentFragment | undefined;\n\n\t/**\n\t * Returns corresponding DOM item for provided {@link module:engine/view/element~Element Element} or\n\t * {@link module:engine/view/documentfragment~DocumentFragment DocumentFragment}.\n\t * To find a corresponding text for {@link module:engine/view/text~Text view Text instance}\n\t * use {@link #findCorrespondingDomText}.\n\t *\n\t * @label DOCUMENT_FRAGMENT_OR_ELEMENT\n\t * @param documentFragmentOrElement View element or document fragment.\n\t * @returns Corresponding DOM node or document fragment.\n\t */\n\tpublic mapViewToDom( documentFragmentOrElement: ViewElement | ViewDocumentFragment ): DomElement | DomDocumentFragment | undefined;\n\n\tpublic mapViewToDom( documentFragmentOrElement: ViewElement | ViewDocumentFragment ): DomElement | DomDocumentFragment | undefined {\n\t\treturn this._viewToDomMapping.get( documentFragmentOrElement );\n\t}\n\n\t/**\n\t * Finds corresponding text node. Text nodes are not {@link module:engine/view/domconverter~DomConverter#bindElements bound},\n\t * corresponding text node is returned based on the sibling or parent.\n\t *\n\t * If the directly previous sibling is a {@link module:engine/view/domconverter~DomConverter#bindElements bound} element, it is used\n\t * to find the corresponding text node.\n\t *\n\t * If this is a first child in the parent and the parent is a {@link module:engine/view/domconverter~DomConverter#bindElements bound}\n\t * element, it is used to find the corresponding text node.\n\t *\n\t * Otherwise `null` is returned.\n\t *\n\t * @param viewText View text node.\n\t * @returns Corresponding DOM text node or `null`, if it was not possible to find a corresponding node.\n\t */\n\tpublic findCorrespondingDomText( viewText: ViewText ): DomText | null {\n\t\tconst previousSibling = viewText.previousSibling;\n\n\t\t// Try to use previous sibling to find the corresponding text node.\n\t\tif ( previousSibling && this.mapViewToDom( previousSibling as ViewElement ) ) {\n\t\t\treturn this.mapViewToDom( previousSibling as ViewElement )!.nextSibling as DomText;\n\t\t}\n\n\t\t// If this is a first node, try to use parent to find the corresponding text node.\n\t\tif ( !previousSibling && viewText.parent && this.mapViewToDom( viewText.parent ) ) {\n\t\t\treturn this.mapViewToDom( viewText.parent )!.childNodes[ 0 ] as DomText;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Focuses DOM editable that is corresponding to provided {@link module:engine/view/editableelement~EditableElement}.\n\t */\n\tpublic focus( viewEditable: EditableElement ): void {\n\t\tconst domEditable = this.mapViewToDom( viewEditable );\n\n\t\tif ( domEditable && domEditable.ownerDocument.activeElement !== domEditable ) {\n\t\t\t// Save the scrollX and scrollY positions before the focus.\n\t\t\tconst { scrollX, scrollY } = global.window;\n\t\t\tconst scrollPositions: Array<[ number, number ]> = [];\n\n\t\t\t// Save all scrollLeft and scrollTop values starting from domEditable up to\n\t\t\t// document#documentElement.\n\t\t\tforEachDomElementAncestor( domEditable, node => {\n\t\t\t\tconst { scrollLeft, scrollTop } = ( node as DomElement );\n\n\t\t\t\tscrollPositions.push( [ scrollLeft, scrollTop ] );\n\t\t\t} );\n\n\t\t\tdomEditable.focus();\n\n\t\t\t// Restore scrollLeft and scrollTop values starting from domEditable up to\n\t\t\t// document#documentElement.\n\t\t\t// https://github.com/ckeditor/ckeditor5-engine/issues/951\n\t\t\t// https://github.com/ckeditor/ckeditor5-engine/issues/957\n\t\t\tforEachDomElementAncestor( domEditable, node => {\n\t\t\t\tconst [ scrollLeft, scrollTop ] = scrollPositions.shift() as [ number, number ];\n\n\t\t\t\tnode.scrollLeft = scrollLeft;\n\t\t\t\tnode.scrollTop = scrollTop;\n\t\t\t} );\n\n\t\t\t// Restore the scrollX and scrollY positions after the focus.\n\t\t\t// https://github.com/ckeditor/ckeditor5-engine/issues/951\n\t\t\tglobal.window.scrollTo( scrollX, scrollY );\n\t\t}\n\t}\n\n\t/**\n\t * Remove DOM selection from blurred editable, so it won't interfere with clicking on dropdowns (especially on iOS).\n\t *\n\t * @internal\n\t */\n\tpublic _clearDomSelection(): void {\n\t\tconst domEditable = this.mapViewToDom( this.document.selection.editableElement! );\n\n\t\tif ( !domEditable ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if DOM selection is inside editor editable element.\n\t\tconst domSelection = domEditable.ownerDocument.defaultView!.getSelection()!;\n\t\tconst newViewSelection = this.domSelectionToView( domSelection );\n\t\tconst selectionInEditable = newViewSelection && newViewSelection.rangeCount > 0;\n\n\t\tif ( selectionInEditable ) {\n\t\t\tdomSelection.removeAllRanges();\n\t\t}\n\t}\n\n\t/**\n\t * Returns `true` when `node.nodeType` equals `Node.ELEMENT_NODE`.\n\t *\n\t * @param node Node to check.\n\t */\n\tpublic isElement( node: DomNode ): node is DomElement {\n\t\treturn node && node.nodeType == Node.ELEMENT_NODE;\n\t}\n\n\t/**\n\t * Returns `true` when `node.nodeType` equals `Node.DOCUMENT_FRAGMENT_NODE`.\n\t *\n\t * @param node Node to check.\n\t */\n\tpublic isDocumentFragment( node: DomNode ): node is DomDocumentFragment {\n\t\treturn node && node.nodeType == Node.DOCUMENT_FRAGMENT_NODE;\n\t}\n\n\t/**\n\t * Checks if the node is an instance of the block filler for this DOM converter.\n\t *\n\t * ```ts\n\t * const converter = new DomConverter( viewDocument, { blockFillerMode: 'br' } );\n\t *\n\t * converter.isBlockFiller( BR_FILLER( document ) ); // true\n\t * converter.isBlockFiller( NBSP_FILLER( document ) ); // false\n\t * ```\n\t *\n\t * **Note:**: For the `'nbsp'` mode the method also checks context of a node so it cannot be a detached node.\n\t *\n\t * **Note:** A special case in the `'nbsp'` mode exists where the `<br>` in `<p><br></p>` is treated as a block filler.\n\t *\n\t * @param domNode DOM node to check.\n\t * @returns True if a node is considered a block filler for given mode.\n\t */\n\tpublic isBlockFiller( domNode: DomNode ): boolean {\n\t\tif ( this.blockFillerMode == 'br' ) {\n\t\t\treturn domNode.isEqualNode( BR_FILLER_REF );\n\t\t}\n\n\t\t// Special case for <p><br></p> in which <br> should be treated as filler even when we are not in the 'br' mode. See ckeditor5#5564.\n\t\tif (\n\t\t\t( domNode as DomElement ).tagName === 'BR' &&\n\t\t\thasBlockParent( domNode, this.blockElements ) &&\n\t\t\t( domNode as DomElement ).parentNode!.childNodes.length === 1\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// If not in 'br' mode, try recognizing both marked and regular nbsp block fillers.\n\t\treturn domNode.isEqualNode( MARKED_NBSP_FILLER_REF ) || isNbspBlockFiller( domNode, this.blockElements );\n\t}\n\n\t/**\n\t * Returns `true` if given selection is a backward selection, that is, if it's `focus` is before `anchor`.\n\t *\n\t * @param DOM Selection instance to check.\n\t */\n\tpublic isDomSelectionBackward( selection: DomSelection ): boolean {\n\t\tif ( selection.isCollapsed ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Since it takes multiple lines of code to check whether a \"DOM Position\" is before/after another \"DOM Position\",\n\t\t// we will use the fact that range will collapse if it's end is before it's start.\n\t\tconst range = this._domDocument.createRange();\n\n\t\ttry {\n\t\t\trange.setStart( selection.anchorNode!, selection.anchorOffset );\n\t\t\trange.setEnd( selection.focusNode!, selection.focusOffset );\n\t\t} catch ( e ) {\n\t\t\t// Safari sometimes gives us a selection that makes Range.set{Start,End} throw.\n\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/12375.\n\t\t\treturn false;\n\t\t}\n\n\t\tconst backward = range.collapsed;\n\n\t\trange.detach();\n\n\t\treturn backward;\n\t}\n\n\t/**\n\t * Returns a parent {@link module:engine/view/uielement~UIElement} or {@link module:engine/view/rawelement~RawElement}\n\t * that hosts the provided DOM node. Returns `null` if there is no such parent.\n\t */\n\tpublic getHostViewElement( domNode: DomNode ): ViewUIElement | ViewRawElement | null {\n\t\tconst ancestors = getAncestors( domNode );\n\n\t\t// Remove domNode from the list.\n\t\tancestors.pop();\n\n\t\twhile ( ancestors.length ) {\n\t\t\tconst domNode = ancestors.pop();\n\t\t\tconst viewNode = this._domToViewMapping.get( domNode as DomElement );\n\n\t\t\tif ( viewNode && ( viewNode.is( 'uiElement' ) || viewNode.is( 'rawElement' ) ) ) {\n\t\t\t\treturn viewNode;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Checks if the given selection's boundaries are at correct places.\n\t *\n\t * The following places are considered as incorrect for selection boundaries:\n\t *\n\t * * before or in the middle of an inline filler sequence,\n\t * * inside a DOM element which represents {@link module:engine/view/uielement~UIElement a view UI element},\n\t * * inside a DOM element which represents {@link module:engine/view/rawelement~RawElement a view raw element}.\n\t *\n\t * @param domSelection The DOM selection object to be checked.\n\t * @returns `true` if the given selection is at a correct place, `false` otherwise.\n\t */\n\tpublic isDomSelectionCorrect( domSelection: DomSelection ): boolean {\n\t\treturn this._isDomSelectionPositionCorrect( domSelection.anchorNode!, domSelection.anchorOffset ) &&\n\t\t\tthis._isDomSelectionPositionCorrect( domSelection.focusNode!, domSelection.focusOffset );\n\t}\n\n\t/**\n\t * Registers a {@link module:engine/view/matcher~MatcherPattern} for view elements whose content should be treated as raw data\n\t * and not processed during the conversion from DOM nodes to view elements.\n\t *\n\t * This is affecting how {@link module:engine/view/domconverter~DomConverter#domToView} and\n\t * {@link module:engine/view/domconverter~DomConverter#domChildrenToView} process DOM nodes.\n\t *\n\t * The raw data can be later accessed by a\n\t * {@link module:engine/view/element~Element#getCustomProperty custom property of a view element} called `\"$rawContent\"`.\n\t *\n\t * @param pattern Pattern matching a view element whose content should\n\t * be treated as raw data.\n\t */\n\tpublic registerRawContentMatcher( pattern: MatcherPattern ): void {\n\t\tthis._rawContentElementMatcher.add( pattern );\n\t}\n\n\t/**\n\t * Registers a {@link module:engine/view/matcher~MatcherPattern} for inline object view elements.\n\t *\n\t * This is affecting how {@link module:engine/view/domconverter~DomConverter#domToView} and\n\t * {@link module:engine/view/domconverter~DomConverter#domChildrenToView} process DOM nodes.\n\t *\n\t * This is an extension of a simple {@link #inlineObjectElements} array of element names.\n\t *\n\t * @param pattern Pattern matching a view element which should be treated as an inline object.\n\t */\n\tpublic registerInlineObjectMatcher( pattern: MatcherPattern ): void {\n\t\tthis._inlineObjectElementMatcher.add( pattern );\n\t}\n\n\t/**\n\t * Returns the block {@link module:engine/view/filler filler} node based on the current {@link #blockFillerMode} setting.\n\t */\n\tprivate _getBlockFiller(): DomNode {\n\t\tswitch ( this.blockFillerMode ) {\n\t\t\tcase 'nbsp':\n\t\t\t\treturn NBSP_FILLER( this._domDocument ); // eslint-disable-line new-cap\n\t\t\tcase 'markedNbsp':\n\t\t\t\treturn MARKED_NBSP_FILLER( this._domDocument ); // eslint-disable-line new-cap\n\t\t\tcase 'br':\n\t\t\t\treturn BR_FILLER( this._domDocument ); // eslint-disable-line new-cap\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given DOM position is a correct place for selection boundary. See {@link #isDomSelectionCorrect}.\n\t *\n\t * @param domParent Position parent.\n\t * @param offset Position offset.\n\t * @returns `true` if given position is at a correct place for selection boundary, `false` otherwise.\n\t */\n\tprivate _isDomSelectionPositionCorrect( domParent: DomNode, offset: number ): boolean {\n\t\t// If selection is before or in the middle of inline filler string, it is incorrect.\n\t\tif ( isText( domParent ) && startsWithFiller( domParent ) && offset < INLINE_FILLER_LENGTH ) {\n\t\t\t// Selection in a text node, at wrong position (before or in the middle of filler).\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.isElement( domParent ) && startsWithFiller( domParent.childNodes[ offset ] ) ) {\n\t\t\t// Selection in an element node, before filler text node.\n\t\t\treturn false;\n\t\t}\n\n\t\tconst viewParent = this.mapDomToView( domParent as DomElement );\n\n\t\t// The position is incorrect when anchored inside a UIElement or a RawElement.\n\t\t// Note: In case of UIElement and RawElement, mapDomToView() returns a parent element for any DOM child\n\t\t// so there's no need to perform any additional checks.\n\t\tif ( viewParent && ( viewParent.is( 'uiElement' ) || viewParent.is( 'rawElement' ) ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Internal generator for {@link #domToView}. Also used by {@link #domChildrenToView}.\n\t * Separates DOM nodes conversion from whitespaces processing.\n\t *\n\t * @param domNode DOM node or document fragment to transform.\n\t * @param inlineNodes An array of recently encountered inline nodes truncated to the block element boundaries.\n\t * Used later to process whitespaces.\n\t */\n\tprivate* _domToView(\n\t\tdomNode: DomNode,\n\t\toptions: {\n\t\t\tbind?: boolean;\n\t\t\twithChildren?: boolean;\n\t\t\tkeepOriginalCase?: boolean;\n\t\t\tskipComments?: boolean;\n\t\t},\n\t\tinlineNodes: Array<ViewNode>\n\t): IterableIterator<ViewNode | ViewDocumentFragment | null> {\n\t\tif ( this.isBlockFiller( domNode ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// When node is inside a UIElement or a RawElement return that parent as it's view representation.\n\t\tconst hostElement = this.getHostViewElement( domNode );\n\n\t\tif ( hostElement ) {\n\t\t\treturn hostElement;\n\t\t}\n\n\t\tif ( isComment( domNode ) && options.skipComments ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( isText( domNode ) ) {\n\t\t\tif ( isInlineFiller( domNode ) ) {\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\tconst textData = domNode.data;\n\n\t\t\t\tif ( textData === '' ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst textNode = new ViewText( this.document, textData );\n\n\t\t\t\tinlineNodes.push( textNode );\n\n\t\t\t\treturn textNode;\n\t\t\t}\n\t\t} else {\n\t\t\tlet viewElement = this.mapDomToView( domNode as ( DomElement | DomDocumentFragment ) );\n\n\t\t\tif ( viewElement ) {\n\t\t\t\tif ( this._isInlineObjectElement( viewElement ) ) {\n\t\t\t\t\tinlineNodes.push( viewElement );\n\t\t\t\t}\n\n\t\t\t\treturn viewElement;\n\t\t\t}\n\n\t\t\tif ( this.isDocumentFragment( domNode ) ) {\n\t\t\t\t// Create view document fragment.\n\t\t\t\tviewElement = new ViewDocumentFragment( this.document );\n\n\t\t\t\tif ( options.bind ) {\n\t\t\t\t\tthis.bindDocumentFragments( domNode, viewElement );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Create view element.\n\t\t\t\tviewElement = this._createViewElement( domNode, options );\n\n\t\t\t\tif ( options.bind ) {\n\t\t\t\t\tthis.bindElements( domNode as DomElement, viewElement );\n\t\t\t\t}\n\n\t\t\t\t// Copy element's attributes.\n\t\t\t\tconst attrs = ( domNode as DomElement ).attributes;\n\n\t\t\t\tif ( attrs ) {\n\t\t\t\t\tfor ( let l = attrs.length, i = 0; i < l; i++ ) {\n\t\t\t\t\t\tviewElement._setAttribute( attrs[ i ].name, attrs[ i ].value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Treat this element's content as a raw data if it was registered as such.\n\t\t\t\tif ( this._isViewElementWithRawContent( viewElement, options ) ) {\n\t\t\t\t\tviewElement._setCustomProperty( '$rawContent', ( domNode as DomElement ).innerHTML );\n\n\t\t\t\t\tif ( !this._isBlockViewElement( viewElement ) ) {\n\t\t\t\t\t\tinlineNodes.push( viewElement );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn viewElement;\n\t\t\t\t}\n\n\t\t\t\t// Comment node is also treated as an element with raw data.\n\t\t\t\tif ( isComment( domNode ) ) {\n\t\t\t\t\tviewElement._setCustomProperty( '$rawContent', domNode.data );\n\n\t\t\t\t\treturn viewElement;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Yield the element first so the flow of nested inline nodes is not reversed inside elements.\n\t\t\tyield viewElement;\n\n\t\t\tconst nestedInlineNodes: Array<ViewNode> = [];\n\n\t\t\tif ( options.withChildren !== false ) {\n\t\t\t\tfor ( const child of this.domChildrenToView( domNode as DomElement, options, nestedInlineNodes ) ) {\n\t\t\t\t\tviewElement._appendChild( child );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Check if this is an inline object after processing child nodes so matcher\n\t\t\t// for inline objects can verify if the element is empty.\n\t\t\tif ( this._isInlineObjectElement( viewElement ) ) {\n\t\t\t\tinlineNodes.push( viewElement );\n\t\t\t} else {\n\t\t\t\t// It's an inline element that is not an object (like <b>, <i>) or a block element.\n\t\t\t\tfor ( const inlineNode of nestedInlineNodes ) {\n\t\t\t\t\tinlineNodes.push( inlineNode );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Internal helper that walks the list of inline view nodes already generated from DOM nodes\n\t * and handles whitespaces and NBSPs.\n\t *\n\t * @param domParent The DOM parent of the given inline nodes. This should be a document fragment or\n\t * a block element to whitespace processing start cleaning.\n\t * @param inlineNodes An array of recently encountered inline nodes truncated to the block element boundaries.\n\t */\n\tprivate _processDomInlineNodes(\n\t\tdomParent: DomElement | null,\n\t\tinlineNodes: Array<ViewNode>,\n\t\toptions: { withChildren?: boolean }\n\t): void {\n\t\tif ( !inlineNodes.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Process text nodes only after reaching a block or document fragment,\n\t\t// do not alter whitespaces while processing an inline element like <b> or <i>.\n\t\tif ( domParent && !this.isDocumentFragment( domParent ) && !this._isBlockDomElement( domParent ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet prevNodeEndsWithSpace = false;\n\n\t\tfor ( let i = 0; i < inlineNodes.length; i++ ) {\n\t\t\tconst node = inlineNodes[ i ];\n\n\t\t\tif ( !node.is( '$text' ) ) {\n\t\t\t\tprevNodeEndsWithSpace = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet data: string;\n\t\t\tlet nodeEndsWithSpace: boolean = false;\n\n\t\t\tif ( _hasViewParentOfType( node, this.preElements ) ) {\n\t\t\t\tdata = getDataWithoutFiller( node.data );\n\t\t\t} else {\n\t\t\t\t// Change all consecutive whitespace characters (from the [ \\n\\t\\r] set –\n\t\t\t\t// see https://github.com/ckeditor/ckeditor5-engine/issues/822#issuecomment-311670249) to a single space character.\n\t\t\t\t// That's how multiple whitespaces are treated when rendered, so we normalize those whitespaces.\n\t\t\t\t// We're replacing 1+ (and not 2+) to also normalize singular \\n\\t\\r characters (#822).\n\t\t\t\tdata = node.data.replace( /[ \\n\\t\\r]{1,}/g, ' ' );\n\t\t\t\tnodeEndsWithSpace = /[^\\S\\u00A0]/.test( data.charAt( data.length - 1 ) );\n\n\t\t\t\tconst prevNode = i > 0 ? inlineNodes[ i - 1 ] : null;\n\t\t\t\tconst nextNode = i + 1 < inlineNodes.length ? inlineNodes[ i + 1 ] : null;\n\n\t\t\t\tconst shouldLeftTrim = !prevNode || prevNode.is( 'element' ) && prevNode.name == 'br' || prevNodeEndsWithSpace;\n\t\t\t\tconst shouldRightTrim = nextNode ? false : !startsWithFiller( node.data );\n\n\t\t\t\t// Do not try to clear whitespaces if this is flat mapping for the purpose of mutation observer and differ in rendering.\n\t\t\t\tif ( options.withChildren !== false ) {\n\t\t\t\t\t// If the previous dom text node does not exist or it ends by whitespace character, remove space character from the\n\t\t\t\t\t// beginning of this text node. Such space character is treated as a whitespace.\n\t\t\t\t\tif ( shouldLeftTrim ) {\n\t\t\t\t\t\tdata = data.replace( /^ /, '' );\n\t\t\t\t\t}\n\n\t\t\t\t\t// If the next text node does not exist remove space character from the end of this text node.\n\t\t\t\t\tif ( shouldRightTrim ) {\n\t\t\t\t\t\tdata = data.replace( / $/, '' );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// At the beginning and end of a block element, Firefox inserts normal space + <br> instead of non-breaking space.\n\t\t\t\t// This means that the text node starts/end with normal space instead of non-breaking space.\n\t\t\t\t// This causes a problem because the normal space would be removed in `.replace` calls above. To prevent that,\n\t\t\t\t// the inline filler is removed only after the data is initially processed (by the `.replace` above). See ckeditor5#692.\n\t\t\t\tdata = getDataWithoutFiller( data );\n\n\t\t\t\t// At this point we should have removed all whitespaces from DOM text data.\n\t\t\t\t//\n\t\t\t\t// Now, We will reverse the process that happens in `_processDataFromViewText`.\n\t\t\t\t//\n\t\t\t\t// We have to change   chars, that were in DOM text data because of rendering reasons, to spaces.\n\t\t\t\t// First, change all ` \\u00A0` pairs (space +  ) to two spaces. DOM converter changes two spaces from model/view to\n\t\t\t\t// ` \\u00A0` to ensure proper rendering. Since here we convert back, we recognize those pairs and change them back to ` `.\n\t\t\t\tdata = data.replace( / \\u00A0/g, ' ' );\n\n\t\t\t\tconst isNextNodeInlineObjectElement = nextNode && nextNode.is( 'element' ) && nextNode.name != 'br';\n\t\t\t\tconst isNextNodeStartingWithSpace = nextNode && nextNode.is( '$text' ) && nextNode.data.charAt( 0 ) == ' ';\n\n\t\t\t\t// Then, let's change the last nbsp to a space.\n\t\t\t\tif ( /[ \\u00A0]\\u00A0$/.test( data ) || !nextNode || isNextNodeInlineObjectElement || isNextNodeStartingWithSpace ) {\n\t\t\t\t\tdata = data.replace( /\\u00A0$/, ' ' );\n\t\t\t\t}\n\n\t\t\t\t// Then, change   character that is at the beginning of the text node to space character.\n\t\t\t\t// We do that replacement only if this is the first node or the previous node ends on whitespace character.\n\t\t\t\tif ( shouldLeftTrim || prevNode && prevNode.is( 'element' ) && prevNode.name != 'br' ) {\n\t\t\t\t\tdata = data.replace( /^\\u00A0/, ' ' );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// At this point, all whitespaces should be removed and all   created for rendering reasons should be\n\t\t\t// changed to normal space. All left   are   inserted intentionally.\n\n\t\t\tif ( data.length == 0 && node.parent ) {\n\t\t\t\tnode._remove();\n\t\t\t\tinlineNodes.splice( i, 1 );\n\t\t\t\ti--;\n\t\t\t} else {\n\t\t\t\tnode._data = data;\n\t\t\t\tprevNodeEndsWithSpace = nodeEndsWithSpace;\n\t\t\t}\n\t\t}\n\n\t\tinlineNodes.length = 0;\n\t}\n\n\t/**\n\t * Takes text data from a given {@link module:engine/view/text~Text#data} and processes it so\n\t * it is correctly displayed in the DOM.\n\t *\n\t * Following changes are done:\n\t *\n\t * * a space at the beginning is changed to ` ` if this is the first text node in its container\n\t * element or if a previous text node ends with a space character,\n\t * * space at the end of the text node is changed to ` ` if there are two spaces at the end of a node or if next node\n\t * starts with a space or if it is the last text node in its container,\n\t * * remaining spaces are replaced to a chain of spaces and ` ` (e.g. `'x x'` becomes `'x   x'`).\n\t *\n\t * Content of {@link #preElements} is not processed.\n\t *\n\t * @param node View text node to process.\n\t * @returns Processed text data.\n\t */\n\tprivate _processDataFromViewText( node: ViewText | ViewTextProxy ): string {\n\t\tlet data = node.data;\n\n\t\t// If any of node ancestors has a name which is in `preElements` array, then currently processed\n\t\t// view text node is (will be) in preformatted element. We should not change whitespaces then.\n\t\tif ( node.getAncestors().some( parent => this.preElements.includes( ( parent as ViewElement ).name ) ) ) {\n\t\t\treturn data;\n\t\t}\n\n\t\t// 1. Replace the first space with a nbsp if the previous node ends with a space or there is no previous node\n\t\t// (container element boundary).\n\t\tif ( data.charAt( 0 ) == ' ' ) {\n\t\t\tconst prevNode = this._getTouchingInlineViewNode( node as ViewText, false );\n\t\t\tconst prevEndsWithSpace = prevNode && prevNode.is( '$textProxy' ) && this._nodeEndsWithSpace( prevNode as ViewTextProxy );\n\n\t\t\tif ( prevEndsWithSpace || !prevNode ) {\n\t\t\t\tdata = '\\u00A0' + data.substr( 1 );\n\t\t\t}\n\t\t}\n\n\t\t// 2. Replace the last space with nbsp if there are two spaces at the end or if the next node starts with space or there is no\n\t\t// next node (container element boundary).\n\t\t//\n\t\t// Keep in mind that Firefox prefers $nbsp; before tag, not inside it:\n\t\t//\n\t\t// Foo <span> bar</span> <-- bad.\n\t\t// Foo <span> bar</span> <-- good.\n\t\t//\n\t\t// More here: https://github.com/ckeditor/ckeditor5-engine/issues/1747.\n\t\tif ( data.charAt( data.length - 1 ) == ' ' ) {\n\t\t\tconst nextNode = this._getTouchingInlineViewNode( node as ViewText, true );\n\t\t\tconst nextStartsWithSpace = nextNode && nextNode.is( '$textProxy' ) && nextNode.data.charAt( 0 ) == ' ';\n\n\t\t\tif ( data.charAt( data.length - 2 ) == ' ' || !nextNode || nextStartsWithSpace ) {\n\t\t\t\tdata = data.substr( 0, data.length - 1 ) + '\\u00A0';\n\t\t\t}\n\t\t}\n\n\t\t// 3. Create space+nbsp pairs.\n\t\treturn data.replace( / {2}/g, ' \\u00A0' );\n\t}\n\n\t/**\n\t * Checks whether given node ends with a space character after changing appropriate space characters to ` `s.\n\t *\n\t * @param node Node to check.\n\t * @returns `true` if given `node` ends with space, `false` otherwise.\n\t */\n\tprivate _nodeEndsWithSpace( node: ViewTextProxy ): boolean {\n\t\tif ( node.getAncestors().some( parent => this.preElements.includes( ( parent as ViewElement ).name ) ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst data = this._processDataFromViewText( node );\n\n\t\treturn data.charAt( data.length - 1 ) == ' ';\n\t}\n\n\t/**\n\t * Helper function. For given {@link module:engine/view/text~Text view text node}, it finds previous or next sibling\n\t * that is contained in the same container element. If there is no such sibling, `null` is returned.\n\t *\n\t * @param node Reference node.\n\t * @returns Touching text node, an inline object\n\t * or `null` if there is no next or previous touching text node.\n\t */\n\tprivate _getTouchingInlineViewNode( node: ViewText, getNext: boolean ): ViewElement | ViewTextProxy | null {\n\t\tconst treeWalker = new ViewTreeWalker( {\n\t\t\tstartPosition: getNext ? ViewPosition._createAfter( node ) : ViewPosition._createBefore( node ),\n\t\t\tdirection: getNext ? 'forward' : 'backward'\n\t\t} );\n\n\t\tfor ( const value of treeWalker ) {\n\t\t\t// <br> found – it works like a block boundary, so do not scan further.\n\t\t\tif ( value.item.is( 'element', 'br' ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t// Found an inline object (for example an image).\n\t\t\telse if ( this._isInlineObjectElement( value.item ) ) {\n\t\t\t\treturn value.item;\n\t\t\t}\n\t\t\t// ViewContainerElement is found on a way to next ViewText node, so given `node` was first/last\n\t\t\t// text node in its container element.\n\t\t\telse if ( value.item.is( 'containerElement' ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t// Found a text node in the same container element.\n\t\t\telse if ( value.item.is( '$textProxy' ) ) {\n\t\t\t\treturn value.item;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns `true` if a DOM node belongs to {@link #blockElements}. `false` otherwise.\n\t */\n\tprivate _isBlockDomElement( node: DomNode ): boolean {\n\t\treturn this.isElement( node ) && this.blockElements.includes( node.tagName.toLowerCase() );\n\t}\n\n\t/**\n\t * Returns `true` if a view node belongs to {@link #blockElements}. `false` otherwise.\n\t */\n\tprivate _isBlockViewElement( node: ViewNode ): boolean {\n\t\treturn node.is( 'element' ) && this.blockElements.includes( node.name );\n\t}\n\n\t/**\n\t * Returns `true` if a DOM node belongs to {@link #inlineObjectElements}. `false` otherwise.\n\t */\n\tprivate _isInlineObjectElement( node: ViewNode | ViewTextProxy | ViewDocumentFragment ): node is ViewElement {\n\t\tif ( !node.is( 'element' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn node.name == 'br' ||\n\t\t\tthis.inlineObjectElements.includes( node.name ) ||\n\t\t\t!!this._inlineObjectElementMatcher.match( node );\n\t}\n\n\t/**\n\t * Creates view element basing on the node type.\n\t *\n\t * @param node DOM node to check.\n\t * @param options Conversion options. See {@link module:engine/view/domconverter~DomConverter#domToView} options parameter.\n\t */\n\tprivate _createViewElement( node: DomNode, options: { keepOriginalCase?: boolean } ): ViewElement {\n\t\tif ( isComment( node ) ) {\n\t\t\treturn new ViewUIElement( this.document, '$comment' );\n\t\t}\n\n\t\tconst viewName = options.keepOriginalCase ? ( node as DomElement ).tagName : ( node as DomElement ).tagName.toLowerCase();\n\n\t\treturn new ViewElement( this.document, viewName );\n\t}\n\n\t/**\n\t * Checks if view element's content should be treated as a raw data.\n\t *\n\t * @param viewElement View element to check.\n\t * @param options Conversion options. See {@link module:engine/view/domconverter~DomConverter#domToView} options parameter.\n\t */\n\tprivate _isViewElementWithRawContent( viewElement: ViewElement | ViewDocumentFragment, options: { withChildren?: boolean } ): boolean {\n\t\treturn options.withChildren !== false && viewElement.is( 'element' ) && !!this._rawContentElementMatcher.match( viewElement );\n\t}\n\n\t/**\n\t * Checks whether a given element name should be renamed in a current rendering mode.\n\t *\n\t * @param elementName The name of view element.\n\t */\n\tprivate _shouldRenameElement( elementName: string ): boolean {\n\t\tconst name = elementName.toLowerCase();\n\n\t\treturn this.renderingMode === 'editing' && this.unsafeElements.includes( name );\n\t}\n\n\t/**\n\t * Return a <span> element with a special attribute holding the name of the original element.\n\t * Optionally, copy all the attributes of the original element if that element is provided.\n\t *\n\t * @param elementName The name of view element.\n\t * @param originalDomElement The original DOM element to copy attributes and content from.\n\t */\n\tprivate _createReplacementDomElement( elementName: string, originalDomElement?: DomElement ): DomElement {\n\t\tconst newDomElement = this._domDocument.createElement( 'span' );\n\n\t\t// Mark the span replacing a script as hidden.\n\t\tnewDomElement.setAttribute( UNSAFE_ELEMENT_REPLACEMENT_ATTRIBUTE, elementName );\n\n\t\tif ( originalDomElement ) {\n\t\t\twhile ( originalDomElement.firstChild ) {\n\t\t\t\tnewDomElement.appendChild( originalDomElement.firstChild );\n\t\t\t}\n\n\t\t\tfor ( const attributeName of originalDomElement.getAttributeNames() ) {\n\t\t\t\tnewDomElement.setAttribute( attributeName, originalDomElement.getAttribute( attributeName )! );\n\t\t\t}\n\t\t}\n\n\t\treturn newDomElement;\n\t}\n}\n\n/**\n * Helper function.\n * Used to check if given native `Element` or `Text` node has parent with tag name from `types` array.\n *\n * @returns`true` if such parent exists or `false` if it does not.\n */\nfunction _hasViewParentOfType( node: ViewNode, types: ReadonlyArray<string> ) {\n\treturn node.getAncestors().some( parent => parent.is( 'element' ) && types.includes( parent.name ) );\n}\n\n/**\n * A helper that executes given callback for each DOM node's ancestor, starting from the given node\n * and ending in document#documentElement.\n *\n * @param callback A callback to be executed for each ancestor.\n */\nfunction forEachDomElementAncestor( element: DomElement, callback: ( node: DomElement ) => void ) {\n\tlet node: DomElement | null = element;\n\n\twhile ( node ) {\n\t\tcallback( node as DomElement );\n\t\tnode = node.parentElement;\n\t}\n}\n\n/**\n * Checks if given node is a nbsp block filler.\n *\n * A   is a block filler only if it is a single child of a block element.\n *\n * @param domNode DOM node.\n */\nfunction isNbspBlockFiller( domNode: DomNode, blockElements: ReadonlyArray<string> ): boolean {\n\tconst isNBSP = domNode.isEqualNode( NBSP_FILLER_REF );\n\n\treturn isNBSP && hasBlockParent( domNode, blockElements ) && ( domNode as DomElement ).parentNode!.childNodes.length === 1;\n}\n\n/**\n * Checks if domNode has block parent.\n *\n * @param domNode DOM node.\n */\nfunction hasBlockParent( domNode: DomNode, blockElements: ReadonlyArray<string> ): boolean {\n\tconst parent = domNode.parentNode;\n\n\treturn !!parent && !!( parent as DomElement ).tagName && blockElements.includes( ( parent as DomElement ).tagName.toLowerCase() );\n}\n\n/**\n * Log to console the information about element that was replaced.\n * Check UNSAFE_ELEMENTS for all recognized unsafe elements.\n *\n * @param elementName The name of the view element.\n */\nfunction _logUnsafeElement( elementName: string ): void {\n\tif ( elementName === 'script' ) {\n\t\tlogWarning( 'domconverter-unsafe-script-element-detected' );\n\t}\n\n\tif ( elementName === 'style' ) {\n\t\tlogWarning( 'domconverter-unsafe-style-element-detected' );\n\t}\n}\n\n/**\n * Enum representing the type of the block filler.\n *\n * Possible values:\n *\n * * `br` – For the `<br data-cke-filler=\"true\">` block filler used in the editing view.\n * * `nbsp` – For the ` ` block fillers used in the data.\n * * `markedNbsp` – For the ` ` block fillers wrapped in `<span>` elements: `<span data-cke-filler=\"true\"> </span>`\n * used in the data.\n */\ntype BlockFillerMode = 'br' | 'nbsp' | 'markedNbsp';\n\n/**\n * While rendering the editor content, the {@link module:engine/view/domconverter~DomConverter} detected a `<script>` element that may\n * disrupt the editing experience. To avoid this, the `<script>` element was replaced with `<span data-ck-unsafe-element=\"script\"></span>`.\n *\n * @error domconverter-unsafe-script-element-detected\n */\n\n/**\n * While rendering the editor content, the {@link module:engine/view/domconverter~DomConverter} detected a `<style>` element that may affect\n * the editing experience. To avoid this, the `<style>` element was replaced with `<span data-ck-unsafe-element=\"style\"></span>`.\n *\n * @error domconverter-unsafe-style-element-detected\n */\n\n/**\n * The {@link module:engine/view/domconverter~DomConverter} detected an interactive attribute in the\n * {@glink framework/architecture/editing-engine#editing-pipeline editing pipeline}. For the best\n * editing experience, the attribute was renamed to `data-ck-unsafe-attribute-[original attribute name]`.\n *\n * If you are the author of the plugin that generated this attribute and you want it to be preserved\n * in the editing pipeline, you can configure this when creating the element\n * using {@link module:engine/view/downcastwriter~DowncastWriter} during the\n * {@glink framework/architecture/editing-engine#conversion model–view conversion}. Methods such as\n * {@link module:engine/view/downcastwriter~DowncastWriter#createContainerElement},\n * {@link module:engine/view/downcastwriter~DowncastWriter#createAttributeElement}, or\n * {@link module:engine/view/downcastwriter~DowncastWriter#createEmptyElement}\n * accept an option that will disable filtering of specific attributes:\n *\n * ```ts\n * const paragraph = writer.createContainerElement( 'p',\n * \t{\n * \t\tclass: 'clickable-paragraph',\n * \t\tonclick: 'alert( \"Paragraph clicked!\" )'\n * \t},\n * \t{\n * \t\t// Make sure the \"onclick\" attribute will pass through.\n * \t\trenderUnsafeAttributes: [ 'onclick' ]\n * \t}\n * );\n * ```\n *\n * @error domconverter-unsafe-attribute-detected\n * @param domElement The DOM element the attribute was set on.\n * @param key The original name of the attribute\n * @param value The value of the original attribute\n */\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/isvalidattributename\n */\n\nimport global from './global';\n\n/**\n * Checks if the given attribute name is valid in terms of HTML.\n *\n * @param name Attribute name.\n */\nexport default function isValidAttributeName( name: string ): boolean {\n\ttry {\n\t\tglobal.document.createAttribute( name );\n\t} catch ( error ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* globals Node */\n\n/**\n * @module utils/dom/getancestors\n */\n\n/**\n * Returns all ancestors of given DOM node, starting from the top-most (root). Includes the given node itself. If the\n * node is a part of `DocumentFragment` that `DocumentFragment` will be returned. In contrary, if the node is\n * appended to a `Document`, that `Document` will not be returned (algorithms operating on DOM tree care for `Document#documentElement`\n * at most, which will be returned).\n *\n * @param node DOM node.\n * @returns Array of given `node` parents.\n */\nexport default function getAncestors( node: Node ): Array<Node> {\n\tconst nodes: Array<Node> = [];\n\tlet currentNode: Node | null = node;\n\n\t// We are interested in `Node`s `DocumentFragment`s only.\n\twhile ( currentNode && currentNode.nodeType != Node.DOCUMENT_NODE ) {\n\t\tnodes.unshift( currentNode );\n\t\tcurrentNode = currentNode.parentNode;\n\t}\n\n\treturn nodes;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/observer\n */\n\nimport { DomEmitterMixin } from '@ckeditor/ckeditor5-utils';\n\nimport type Document from '../document';\nimport type View from '../view';\n\n/**\n * Abstract base observer class. Observers are classes which listen to DOM events, do the preliminary\n * processing and fire events on the {@link module:engine/view/document~Document} objects.\n * Observers can also add features to the view, for instance by updating its status or marking elements\n * which need a refresh on DOM events.\n */\nexport default abstract class Observer extends DomEmitterMixin() {\n\t/**\n\t * An instance of the view controller.\n\t */\n\tpublic readonly view: View;\n\n\t/**\n\t * A reference to the {@link module:engine/view/document~Document} object.\n\t */\n\tpublic readonly document: Document;\n\n\t/**\n\t * The state of the observer. If it is disabled, no events will be fired.\n\t */\n\tprivate _isEnabled: boolean = false;\n\n\t/**\n\t * Creates an instance of the observer.\n\t */\n\tconstructor( view: View ) {\n\t\tsuper();\n\n\t\tthis.view = view;\n\t\tthis.document = view.document;\n\t}\n\n\t/**\n\t * The state of the observer. If it is disabled, no events will be fired.\n\t */\n\tpublic get isEnabled(): boolean {\n\t\treturn this._isEnabled;\n\t}\n\n\t/**\n\t * Enables the observer. This method is called when the observer is registered to the\n\t * {@link module:engine/view/view~View} and after {@link module:engine/view/view~View#forceRender rendering}\n\t * (all observers are {@link #disable disabled} before rendering).\n\t *\n\t * A typical use case for disabling observers is that mutation observers need to be disabled for the rendering.\n\t * However, a child class may not need to be disabled, so it can implement an empty method.\n\t *\n\t * @see module:engine/view/observer/observer~Observer#disable\n\t */\n\tpublic enable(): void {\n\t\tthis._isEnabled = true;\n\t}\n\n\t/**\n\t * Disables the observer. This method is called before\n\t * {@link module:engine/view/view~View#forceRender rendering} to prevent firing events during rendering.\n\t *\n\t * @see module:engine/view/observer/observer~Observer#enable\n\t */\n\tpublic disable(): void {\n\t\tthis._isEnabled = false;\n\t}\n\n\t/**\n\t * Disables and destroys the observer, among others removes event listeners created by the observer.\n\t */\n\tpublic destroy(): void {\n\t\tthis.disable();\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * Checks whether a given DOM event should be ignored (should not be turned into a synthetic view document event).\n\t *\n\t * Currently, an event will be ignored only if its target or any of its ancestors has the `data-cke-ignore-events` attribute.\n\t * This attribute can be used inside the structures generated by\n\t * {@link module:engine/view/downcastwriter~DowncastWriter#createUIElement `DowncastWriter#createUIElement()`} to ignore events\n\t * fired within a UI that should be excluded from CKEditor 5's realms.\n\t *\n\t * @param domTarget The DOM event target to check (usually an element, sometimes a text node and\n\t * potentially sometimes a document, too).\n\t * @returns Whether this event should be ignored by the observer.\n\t */\n\tpublic checkShouldIgnoreEventFromTarget( domTarget: Node | null ): boolean {\n\t\tif ( domTarget && domTarget.nodeType === 3 ) {\n\t\t\tdomTarget = domTarget.parentNode as any;\n\t\t}\n\n\t\tif ( !domTarget || domTarget.nodeType !== 1 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn ( domTarget as any ).matches( '[data-cke-ignore-events], [data-cke-ignore-events] *' );\n\t}\n\n\t/**\n\t * Starts observing given DOM element.\n\t *\n\t * @param domElement DOM element to observe.\n\t * @param name The name of the related root element.\n\t */\n\tpublic abstract observe( domElement: HTMLElement, name: string ): void;\n\n\t/**\n\t * Stops observing given DOM element.\n\t */\n\tpublic abstract stopObserving( domElement: HTMLElement ): void;\n}\n\n/**\n * The constructor of {@link ~Observer} subclass.\n */\nexport type ObserverConstructor = new ( view: View ) => Observer;\n","import copyObject from './_copyObject.js';\nimport createAssigner from './_createAssigner.js';\nimport keysIn from './keysIn.js';\n\n/**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\nvar assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n});\n\nexport default assignIn;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/domeventdata\n */\n\nimport { extend } from 'lodash-es';\n\nimport type Document from '../document';\nimport type Element from '../element';\nimport type View from '../view';\n\n/**\n * Information about a DOM event in context of the {@link module:engine/view/document~Document}.\n * It wraps the native event, which usually should not be used as the wrapper contains\n * additional data (like key code for keyboard events).\n *\n * @typeParam TEvent The type of DOM Event that this class represents.\n */\nexport default class DomEventData<TEvent extends Event = Event> {\n\t/**\n\t * Instance of the view controller.\n\t */\n\tpublic readonly view: View;\n\n\t/**\n\t * The instance of the document.\n\t */\n\tpublic readonly document: Document;\n\n\t/**\n\t * The DOM event.\n\t */\n\tpublic readonly domEvent: TEvent;\n\n\t/**\n\t * The DOM target.\n\t */\n\tpublic readonly domTarget: HTMLElement;\n\n\t/**\n\t * @param view The instance of the view controller.\n\t * @param domEvent The DOM event.\n\t * @param additionalData Additional properties that the instance should contain.\n\t */\n\tconstructor( view: View, domEvent: TEvent, additionalData?: object ) {\n\t\tthis.view = view;\n\t\tthis.document = view.document;\n\t\tthis.domEvent = domEvent;\n\t\tthis.domTarget = domEvent.target as any;\n\n\t\textend( this, additionalData );\n\t}\n\n\t/**\n\t * The tree view element representing the target.\n\t */\n\tpublic get target(): Element {\n\t\treturn this.view.domConverter.mapDomToView( this.domTarget ) as Element;\n\t}\n\n\t/**\n\t * Prevents the native's event default action.\n\t */\n\tpublic preventDefault(): void {\n\t\tthis.domEvent.preventDefault();\n\t}\n\n\t/**\n\t * Stops native event propagation.\n\t */\n\tpublic stopPropagation(): void {\n\t\tthis.domEvent.stopPropagation();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/domeventobserver\n */\n\nimport Observer from './observer';\nimport DomEventData from './domeventdata';\n\nimport type { EventInfo } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Base class for DOM event observers. This class handles\n * {@link module:engine/view/observer/observer~Observer#observe adding} listeners to DOM elements,\n * {@link module:engine/view/observer/observer~Observer#disable disabling} and\n * {@link module:engine/view/observer/observer~Observer#enable re-enabling} events.\n * Child class needs to define\n * {@link module:engine/view/observer/domeventobserver~DomEventObserver#domEventType DOM event type} and\n * {@link module:engine/view/observer/domeventobserver~DomEventObserver#onDomEvent callback}.\n *\n * For instance:\n *\n * ```ts\n * class ClickObserver extends DomEventObserver<'click'> {\n * \t// It can also be defined as a normal property in the constructor.\n * \tget domEventType(): 'click' {\n * \t\treturn 'click';\n * \t}\n *\n * \tonDomEvent( domEvent: MouseEvent ): void {\n * \t\tthis.fire( 'click', domEvent );\n * \t}\n * }\n * ```\n *\n * @typeParam EventType DOM Event type name or an union of those.\n * @typeParam AdditionalData Additional data passed along with the event.\n */\n\nexport default abstract class DomEventObserver<\n\tEventType extends keyof HTMLElementEventMap,\n\tAdditionalData extends object = object\n> extends Observer {\n\t/**\n\t * Type of the DOM event the observer should listen to. Array of types can be defined\n\t * if the observer should listen to multiple DOM events.\n\t */\n\tpublic abstract get domEventType(): EventType | ReadonlyArray<EventType>;\n\n\t/**\n\t * If set to `true` DOM events will be listened on the capturing phase.\n\t * Default value is `false`.\n\t */\n\tpublic useCapture: boolean = false;\n\n\t/**\n\t * Callback which should be called when the DOM event occurred. Note that the callback will not be called if\n\t * observer {@link #isEnabled is not enabled}.\n\t *\n\t * @see #domEventType\n\t */\n\tpublic abstract onDomEvent( event: HTMLElementEventMap[ EventType ] ): void;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override observe( domElement: HTMLElement ): void {\n\t\tconst types = typeof this.domEventType == 'string' ? [ this.domEventType ] : this.domEventType;\n\n\t\ttypes.forEach( type => {\n\t\t\tthis.listenTo( domElement, type, ( eventInfo, domEvent ) => {\n\t\t\t\tif ( this.isEnabled && !this.checkShouldIgnoreEventFromTarget( domEvent.target as any ) ) {\n\t\t\t\t\tthis.onDomEvent( domEvent );\n\t\t\t\t}\n\t\t\t}, { useCapture: this.useCapture } );\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override stopObserving( domElement: HTMLElement ): void {\n\t\tthis.stopListening( domElement );\n\t}\n\n\t/**\n\t * Calls `Document#fire()` if observer {@link #isEnabled is enabled}.\n\t *\n\t * @see module:utils/emittermixin~Emitter#fire\n\t * @param eventType The event type (name).\n\t * @param domEvent The DOM event.\n\t * @param additionalData The additional data which should extend the\n\t * {@link module:engine/view/observer/domeventdata~DomEventData event data} object.\n\t */\n\tpublic override fire( eventType: string | EventInfo, domEvent: Event, additionalData?: AdditionalData ): void {\n\t\tif ( this.isEnabled ) {\n\t\t\tthis.document.fire( eventType, new DomEventData( this.view, domEvent, additionalData ) );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/keyobserver\n */\n\nimport DomEventObserver from './domeventobserver';\nimport type DomEventData from './domeventdata';\nimport { getCode, type KeystrokeInfo } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Observer for events connected with pressing keyboard keys.\n *\n * Note that this observer is attached by the {@link module:engine/view/view~View} and is available by default.\n */\nexport default class KeyObserver extends DomEventObserver<'keydown' | 'keyup', KeystrokeInfo & { keystroke: number }> {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic readonly domEventType = [ 'keydown', 'keyup' ] as const;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic onDomEvent( domEvt: KeyboardEvent ): void {\n\t\tconst data = {\n\t\t\tkeyCode: domEvt.keyCode,\n\n\t\t\taltKey: domEvt.altKey,\n\t\t\tctrlKey: domEvt.ctrlKey,\n\t\t\tshiftKey: domEvt.shiftKey,\n\t\t\tmetaKey: domEvt.metaKey,\n\n\t\t\tget keystroke() {\n\t\t\t\treturn getCode( this );\n\t\t\t}\n\t\t};\n\n\t\tthis.fire( domEvt.type, domEvt, data );\n\t}\n}\n\n/**\n * Fired when a key has been pressed.\n *\n * Introduced by {@link module:engine/view/observer/keyobserver~KeyObserver}.\n *\n * Note that because {@link module:engine/view/observer/keyobserver~KeyObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/keyobserver~KeyObserver\n * @eventName module:engine/view/document~Document#keydown\n */\nexport type ViewDocumentKeyDownEvent = {\n\tname: 'keydown';\n\targs: [ data: KeyEventData ];\n};\n\n/**\n * Fired when a key has been released.\n *\n * Introduced by {@link module:engine/view/observer/keyobserver~KeyObserver}.\n *\n * Note that because {@link module:engine/view/observer/keyobserver~KeyObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/keyobserver~KeyObserver\n * @eventName module:engine/view/document~Document#keyup\n */\nexport type ViewDocumentKeyUpEvent = {\n\tname: 'keyup';\n\targs: [ data: KeyEventData ];\n};\n\n/**\n * The value of both events - {@link ~ViewDocumentKeyDownEvent} and {@link ~ViewDocumentKeyUpEvent}.\n */\nexport interface KeyEventData extends DomEventData<KeyboardEvent>, KeystrokeInfo {\n\n\t/**\n\t * Code of the whole keystroke. See {@link module:utils/keyboard~getCode}.\n\t */\n\tkeystroke: number;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/fakeselectionobserver\n */\n\nimport Observer from './observer';\nimport type { ViewDocumentArrowKeyEvent } from './arrowkeysobserver';\nimport ViewSelection from '../selection';\nimport type View from '../view';\nimport type {\n\tViewDocumentSelectionChangeEvent,\n\tViewDocumentSelectionChangeDoneEvent,\n\tViewDocumentSelectionEventData\n} from './selectionobserver';\nimport { keyCodes } from '@ckeditor/ckeditor5-utils';\nimport { debounce, type DebouncedFunc } from 'lodash-es';\n\n/**\n * Fake selection observer class. If view selection is fake it is placed in dummy DOM container. This observer listens\n * on {@link module:engine/view/document~Document#event:keydown keydown} events and handles moving fake view selection to the correct place\n * if arrow keys are pressed.\n * Fires {@link module:engine/view/document~Document#event:selectionChange selectionChange event} simulating natural behaviour of\n * {@link module:engine/view/observer/selectionobserver~SelectionObserver SelectionObserver}.\n */\nexport default class FakeSelectionObserver extends Observer {\n\t/**\n\t * Fires debounced event `selectionChangeDone`. It uses `lodash#debounce` method to delay function call.\n\t */\n\tprivate readonly _fireSelectionChangeDoneDebounced: DebouncedFunc<( data: ViewDocumentSelectionEventData ) => void>;\n\n\t/**\n\t * Creates new FakeSelectionObserver instance.\n\t */\n\tconstructor( view: View ) {\n\t\tsuper( view );\n\n\t\tthis._fireSelectionChangeDoneDebounced = debounce( data => {\n\t\t\tthis.document.fire<ViewDocumentSelectionChangeDoneEvent>( 'selectionChangeDone', data );\n\t\t}, 200 );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override observe(): void {\n\t\tconst document = this.document;\n\n\t\tdocument.on<ViewDocumentArrowKeyEvent>( 'arrowKey', ( eventInfo, data ) => {\n\t\t\tconst selection = document.selection;\n\n\t\t\tif ( selection.isFake && this.isEnabled ) {\n\t\t\t\t// Prevents default key down handling - no selection change will occur.\n\t\t\t\tdata.preventDefault();\n\t\t\t}\n\t\t}, { context: '$capture' } );\n\n\t\tdocument.on<ViewDocumentArrowKeyEvent>( 'arrowKey', ( eventInfo, data ) => {\n\t\t\tconst selection = document.selection;\n\n\t\t\tif ( selection.isFake && this.isEnabled ) {\n\t\t\t\tthis._handleSelectionMove( data.keyCode );\n\t\t\t}\n\t\t}, { priority: 'lowest' } );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override stopObserving(): void {}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._fireSelectionChangeDoneDebounced.cancel();\n\t}\n\n\t/**\n\t * Handles collapsing view selection according to given key code. If left or up key is provided - new selection will be\n\t * collapsed to left. If right or down key is pressed - new selection will be collapsed to right.\n\t *\n\t * This method fires {@link module:engine/view/document~Document#event:selectionChange} and\n\t * {@link module:engine/view/document~Document#event:selectionChangeDone} events imitating behaviour of\n\t * {@link module:engine/view/observer/selectionobserver~SelectionObserver}.\n\t */\n\tprivate _handleSelectionMove( keyCode: number ): void {\n\t\tconst selection = this.document.selection;\n\t\tconst newSelection = new ViewSelection( selection.getRanges(), { backward: selection.isBackward, fake: false } );\n\n\t\t// Left or up arrow pressed - move selection to start.\n\t\tif ( keyCode == keyCodes.arrowleft || keyCode == keyCodes.arrowup ) {\n\t\t\tnewSelection.setTo( newSelection.getFirstPosition() );\n\t\t}\n\n\t\t// Right or down arrow pressed - move selection to end.\n\t\tif ( keyCode == keyCodes.arrowright || keyCode == keyCodes.arrowdown ) {\n\t\t\tnewSelection.setTo( newSelection.getLastPosition() );\n\t\t}\n\n\t\tconst data = {\n\t\t\toldSelection: selection,\n\t\t\tnewSelection,\n\t\t\tdomSelection: null\n\t\t};\n\n\t\t// Fire dummy selection change event.\n\t\tthis.document.fire<ViewDocumentSelectionChangeEvent>( 'selectionChange', data );\n\n\t\t// Call` #_fireSelectionChangeDoneDebounced` every time when `selectionChange` event is fired.\n\t\t// This function is debounced what means that `selectionChangeDone` event will be fired only when\n\t\t// defined int the function time will elapse since the last time the function was called.\n\t\t// So `selectionChangeDone` will be fired when selection will stop changing.\n\t\tthis._fireSelectionChangeDoneDebounced( data );\n\t}\n}\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\nfunction isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n}\n\nexport default isEqualWith;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/mutationobserver\n */\n\n/* globals window */\n\nimport Observer from './observer';\nimport { startsWithFiller } from '../filler';\nimport { isEqualWith } from 'lodash-es';\n\nimport type DomConverter from '../domconverter';\nimport type Renderer from '../renderer';\nimport type View from '../view';\nimport type ViewElement from '../element';\nimport type ViewNode from '../node';\nimport type ViewText from '../text';\n\n/**\n * Mutation observer's role is to watch for any DOM changes inside the editor that weren't\n * done by the editor's {@link module:engine/view/renderer~Renderer} itself and reverting these changes.\n *\n * It does this by observing all mutations in the DOM, marking related view elements as changed and calling\n * {@link module:engine/view/renderer~Renderer#render}. Because all mutated nodes are marked as\n * \"to be rendered\" and the {@link module:engine/view/renderer~Renderer#render `render()`} method is called,\n * all changes are reverted in the DOM (the DOM is synced with the editor's view structure).\n *\n * Note that this observer is attached by the {@link module:engine/view/view~View} and is available by default.\n */\nexport default class MutationObserver extends Observer {\n\t/**\n\t * Reference to the {@link module:engine/view/view~View#domConverter}.\n\t */\n\tpublic readonly domConverter: DomConverter;\n\n\t/**\n\t * Reference to the {@link module:engine/view/view~View#_renderer}.\n\t */\n\tpublic readonly renderer: Renderer;\n\n\t/**\n\t * Native mutation observer config.\n\t */\n\tprivate readonly _config: MutationObserverInit;\n\n\t/**\n\t * Observed DOM elements.\n\t */\n\tprivate readonly _domElements: Set<HTMLElement>;\n\n\t/**\n\t * Native mutation observer.\n\t */\n\tprivate _mutationObserver: InstanceType<typeof global.MutationObserver>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( view: View ) {\n\t\tsuper( view );\n\n\t\tthis._config = {\n\t\t\tchildList: true,\n\t\t\tcharacterData: true,\n\t\t\tsubtree: true\n\t\t};\n\n\t\tthis.domConverter = view.domConverter;\n\t\tthis.renderer = view._renderer;\n\n\t\tthis._domElements = new Set();\n\t\tthis._mutationObserver = new window.MutationObserver( this._onMutations.bind( this ) );\n\t}\n\n\t/**\n\t * Synchronously handles mutations and empties the queue.\n\t */\n\tpublic flush(): void {\n\t\tthis._onMutations( this._mutationObserver.takeRecords() );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic observe( domElement: HTMLElement ): void {\n\t\tthis._domElements.add( domElement );\n\n\t\tif ( this.isEnabled ) {\n\t\t\tthis._mutationObserver.observe( domElement, this._config );\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override stopObserving( domElement: HTMLElement ): void {\n\t\tthis._domElements.delete( domElement );\n\n\t\tif ( this.isEnabled ) {\n\t\t\t// Unfortunately, it is not possible to stop observing particular DOM element.\n\t\t\t// In order to stop observing one of multiple DOM elements, we need to re-connect the mutation observer.\n\t\t\tthis._mutationObserver.disconnect();\n\n\t\t\tfor ( const domElement of this._domElements ) {\n\t\t\t\tthis._mutationObserver.observe( domElement, this._config );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override enable(): void {\n\t\tsuper.enable();\n\n\t\tfor ( const domElement of this._domElements ) {\n\t\t\tthis._mutationObserver.observe( domElement, this._config );\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override disable(): void {\n\t\tsuper.disable();\n\n\t\tthis._mutationObserver.disconnect();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._mutationObserver.disconnect();\n\t}\n\n\t/**\n\t * Handles mutations. Mark view elements to sync and call render.\n\t *\n\t * @param domMutations Array of native mutations.\n\t */\n\tprivate _onMutations( domMutations: Array<MutationRecord> ) {\n\t\t// As a result of this.flush() we can have an empty collection.\n\t\tif ( domMutations.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst domConverter = this.domConverter;\n\n\t\t// Use map and set for deduplication.\n\t\tconst mutatedTextNodes = new Set<ViewText>();\n\t\tconst elementsWithMutatedChildren = new Set<ViewElement>();\n\n\t\t// Handle `childList` mutations first, so we will be able to check if the `characterData` mutation is in the\n\t\t// element with changed structure anyway.\n\t\tfor ( const mutation of domMutations ) {\n\t\t\tconst element = domConverter.mapDomToView( mutation.target as HTMLElement );\n\n\t\t\tif ( !element ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Do not collect mutations from UIElements and RawElements.\n\t\t\tif ( element.is( 'uiElement' ) || element.is( 'rawElement' ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( mutation.type === 'childList' && !this._isBogusBrMutation( mutation ) ) {\n\t\t\t\telementsWithMutatedChildren.add( element as ViewElement );\n\t\t\t}\n\t\t}\n\n\t\t// Handle `characterData` mutations later, when we have the full list of nodes which changed structure.\n\t\tfor ( const mutation of domMutations ) {\n\t\t\tconst element = domConverter.mapDomToView( mutation.target as HTMLElement );\n\n\t\t\t// Do not collect mutations from UIElements and RawElements.\n\t\t\tif ( element && ( element.is( 'uiElement' ) || element.is( 'rawElement' ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( mutation.type === 'characterData' ) {\n\t\t\t\tconst text = domConverter.findCorrespondingViewText( mutation.target as Text ) as ViewText;\n\n\t\t\t\tif ( text && !elementsWithMutatedChildren.has( text.parent as ViewElement ) ) {\n\t\t\t\t\tmutatedTextNodes.add( text );\n\t\t\t\t}\n\t\t\t\t// When we added first letter to the text node which had only inline filler, for the DOM it is mutation\n\t\t\t\t// on text, but for the view, where filler text node did not exist, new text node was created, so we\n\t\t\t\t// need to handle it as a 'children' mutation instead of 'text'.\n\t\t\t\telse if ( !text && startsWithFiller( mutation.target ) ) {\n\t\t\t\t\telementsWithMutatedChildren.add(\n\t\t\t\t\t\tdomConverter.mapDomToView( mutation.target.parentNode as HTMLElement ) as ViewElement\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Now we build the list of mutations to mark elements. We did not do it earlier to avoid marking the\n\t\t// same node multiple times in case of duplication.\n\n\t\tlet hasMutations = false;\n\n\t\tfor ( const textNode of mutatedTextNodes ) {\n\t\t\thasMutations = true;\n\t\t\tthis.renderer.markToSync( 'text', textNode );\n\t\t}\n\n\t\tfor ( const viewElement of elementsWithMutatedChildren ) {\n\t\t\tconst domElement = domConverter.mapViewToDom( viewElement )!;\n\t\t\tconst viewChildren = Array.from( viewElement.getChildren() );\n\t\t\tconst newViewChildren = Array.from( domConverter.domChildrenToView( domElement, { withChildren: false } ) );\n\n\t\t\t// It may happen that as a result of many changes (sth was inserted and then removed),\n\t\t\t// both elements haven't really changed. #1031\n\t\t\tif ( !isEqualWith( viewChildren, newViewChildren, sameNodes ) ) {\n\t\t\t\thasMutations = true;\n\t\t\t\tthis.renderer.markToSync( 'children', viewElement );\n\t\t\t}\n\t\t}\n\n\t\t// In case only non-relevant mutations were recorded it skips the event and force render (#5600).\n\t\tif ( hasMutations ) {\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.group( '%c[MutationObserver]%c Mutations detected',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight:bold;color:green', ''\n\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t// At this point we have \"dirty DOM\" (changed) and de-synched view (which has not been changed).\n\t\t\t// In order to \"reset DOM\" we render the view again.\n\t\t\tthis.view.forceRender();\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n\t\t\t// @if CK_DEBUG_TYPING // }\n\t\t}\n\t}\n\n\t/**\n\t * Checks if mutation was generated by the browser inserting bogus br on the end of the block element.\n\t * Such mutations are generated while pressing space or performing native spellchecker correction\n\t * on the end of the block element in Firefox browser.\n\t *\n\t * @param mutation Native mutation object.\n\t */\n\tprivate _isBogusBrMutation( mutation: MutationRecord ) {\n\t\tlet addedNode = null;\n\n\t\t// Check if mutation added only one node on the end of its parent.\n\t\tif ( mutation.nextSibling === null && mutation.removedNodes.length === 0 && mutation.addedNodes.length == 1 ) {\n\t\t\taddedNode = this.domConverter.domToView( mutation.addedNodes[ 0 ], {\n\t\t\t\twithChildren: false\n\t\t\t} );\n\t\t}\n\n\t\treturn addedNode && addedNode.is( 'element', 'br' );\n\t}\n}\n\nfunction sameNodes( child1: ViewNode, child2: ViewNode ) {\n\t// First level of comparison (array of children vs array of children) – use the Lodash's default behavior.\n\tif ( Array.isArray( child1 ) ) {\n\t\treturn;\n\t}\n\n\t// Elements.\n\tif ( child1 === child2 ) {\n\t\treturn true;\n\t}\n\t// Texts.\n\telse if ( child1.is( '$text' ) && child2.is( '$text' ) ) {\n\t\treturn child1.data === child2.data;\n\t}\n\n\t// Not matching types.\n\treturn false;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/focusobserver\n */\n\n/* globals setTimeout, clearTimeout */\n\nimport DomEventObserver from './domeventobserver';\nimport type DomEventData from './domeventdata';\nimport type View from '../view';\n\n/**\n * {@link module:engine/view/document~Document#event:focus Focus}\n * and {@link module:engine/view/document~Document#event:blur blur} events observer.\n * Focus observer handle also {@link module:engine/view/rooteditableelement~RootEditableElement#isFocused isFocused} property of the\n * {@link module:engine/view/rooteditableelement~RootEditableElement root elements}.\n *\n * Note that this observer is attached by the {@link module:engine/view/view~View} and is available by default.\n */\nexport default class FocusObserver extends DomEventObserver<'focus' | 'blur'> {\n\t/**\n\t * Identifier of the timeout currently used by focus listener to delay rendering execution.\n\t */\n\tprivate _renderTimeoutId!: ReturnType<typeof setTimeout>;\n\n\t/**\n\t * Set to `true` if the document is in the process of setting the focus.\n\t *\n\t * The flag is used to indicate that setting the focus is in progress.\n\t */\n\tprivate _isFocusChanging: boolean = false;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic readonly domEventType = [ 'focus', 'blur' ] as const;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( view: View ) {\n\t\tsuper( view );\n\n\t\tthis.useCapture = true;\n\t\tconst document = this.document;\n\n\t\tdocument.on<ViewDocumentFocusEvent>( 'focus', () => {\n\t\t\tthis._isFocusChanging = true;\n\n\t\t\t// Unfortunately native `selectionchange` event is fired asynchronously.\n\t\t\t// We need to wait until `SelectionObserver` handle the event and then render. Otherwise rendering will\n\t\t\t// overwrite new DOM selection with selection from the view.\n\t\t\t// See https://github.com/ckeditor/ckeditor5-engine/issues/795 for more details.\n\t\t\t// Long timeout is needed to solve #676 and https://github.com/ckeditor/ckeditor5-engine/issues/1157 issues.\n\t\t\t//\n\t\t\t// Using `view.change()` instead of `view.forceRender()` to prevent double rendering\n\t\t\t// in a situation where `selectionchange` already caused selection change.\n\t\t\tthis._renderTimeoutId = setTimeout( () => {\n\t\t\t\tthis.flush();\n\t\t\t\tview.change( () => {} );\n\t\t\t}, 50 );\n\t\t} );\n\n\t\tdocument.on<ViewDocumentBlurEvent>( 'blur', ( evt, data ) => {\n\t\t\tconst selectedEditable = document.selection.editableElement;\n\n\t\t\tif ( selectedEditable === null || selectedEditable === data.target ) {\n\t\t\t\tdocument.isFocused = false;\n\t\t\t\tthis._isFocusChanging = false;\n\n\t\t\t\t// Re-render the document to update view elements\n\t\t\t\t// (changing document.isFocused already marked view as changed since last rendering).\n\t\t\t\tview.change( () => {} );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Finishes setting the document focus state.\n\t */\n\tpublic flush(): void {\n\t\tif ( this._isFocusChanging ) {\n\t\t\tthis._isFocusChanging = false;\n\t\t\tthis.document.isFocused = true;\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic onDomEvent( domEvent: FocusEvent ): void {\n\t\tthis.fire( domEvent.type, domEvent );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tif ( this._renderTimeoutId ) {\n\t\t\tclearTimeout( this._renderTimeoutId );\n\t\t}\n\n\t\tsuper.destroy();\n\t}\n}\n\n/**\n * Fired when one of the editables gets focus.\n *\n * Introduced by {@link module:engine/view/observer/focusobserver~FocusObserver}.\n *\n * Note that because {@link module:engine/view/observer/focusobserver~FocusObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/focusobserver~FocusObserver\n * @eventName module:engine/view/document~Document#focus\n * @param data Event data.\n */\nexport type ViewDocumentFocusEvent = {\n\tname: 'focus';\n\targs: [ data: DomEventData<FocusEvent> ];\n};\n\n/**\n * Fired when one of the editables loses focus.\n *\n * Introduced by {@link module:engine/view/observer/focusobserver~FocusObserver}.\n *\n * Note that because {@link module:engine/view/observer/focusobserver~FocusObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/focusobserver~FocusObserver\n * @eventName module:engine/view/document~Document#blur\n * @param data Event data.\n */\nexport type ViewDocumentBlurEvent = {\n\tname: 'blur';\n\targs: [ data: DomEventData<FocusEvent> ];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/selectionobserver\n */\n\n/* global setInterval, clearInterval */\n\nimport Observer from './observer';\nimport MutationObserver from './mutationobserver';\nimport { env } from '@ckeditor/ckeditor5-utils';\nimport { debounce, type DebouncedFunc } from 'lodash-es';\n\nimport type View from '../view';\nimport type DocumentSelection from '../documentselection';\nimport type DomConverter from '../domconverter';\nimport type Selection from '../selection';\nimport FocusObserver from './focusobserver';\n\ntype DomSelection = globalThis.Selection;\n\n/**\n * Selection observer class observes selection changes in the document. If a selection changes on the document this\n * observer checks if the DOM selection is different from the {@link module:engine/view/document~Document#selection view selection}.\n * The selection observer fires {@link module:engine/view/document~Document#event:selectionChange} event only if\n * a selection change was the only change in the document and the DOM selection is different from the view selection.\n *\n * This observer also manages the {@link module:engine/view/document~Document#isSelecting} property of the view document.\n *\n * Note that this observer is attached by the {@link module:engine/view/view~View} and is available by default.\n */\nexport default class SelectionObserver extends Observer {\n\t/**\n\t * Instance of the mutation observer. Selection observer calls\n\t * {@link module:engine/view/observer/mutationobserver~MutationObserver#flush} to ensure that the mutations will be handled\n\t * before the {@link module:engine/view/document~Document#event:selectionChange} event is fired.\n\t */\n\tpublic readonly mutationObserver: MutationObserver;\n\n\t/**\n\t * Instance of the focus observer. Focus observer calls\n\t * {@link module:engine/view/observer/focusobserver~FocusObserver#flush} to mark the latest focus change as complete.\n\t */\n\tpublic readonly focusObserver: FocusObserver;\n\n\t/**\n\t * Reference to the view {@link module:engine/view/documentselection~DocumentSelection} object used to compare\n\t * new selection with it.\n\t */\n\tpublic readonly selection: DocumentSelection;\n\n\t/**\n\t * Reference to the {@link module:engine/view/view~View#domConverter}.\n\t */\n\tpublic readonly domConverter: DomConverter;\n\n\t/**\n\t * A set of documents which have added `selectionchange` listener to avoid adding a listener twice to the same\n\t * document.\n\t */\n\tprivate readonly _documents: WeakSet<Document>;\n\n\t/**\n\t * Fires debounced event `selectionChangeDone`. It uses `lodash#debounce` method to delay function call.\n\t */\n\tprivate readonly _fireSelectionChangeDoneDebounced: DebouncedFunc<( data: ViewDocumentSelectionEventData ) => void>;\n\n\t/**\n\t * When called, starts clearing the {@link #_loopbackCounter} counter in time intervals. When the number of selection\n\t * changes exceeds a certain limit within the interval of time, the observer will not fire `selectionChange` but warn about\n\t * possible infinite selection loop.\n\t */\n\tprivate readonly _clearInfiniteLoopInterval: ReturnType<typeof setInterval>;\n\n\t/**\n\t * Unlocks the `isSelecting` state of the view document in case the selection observer did not record this fact\n\t * correctly (for whatever reason). It is a safeguard (paranoid check), that returns document to the normal state\n\t * after a certain period of time (debounced, postponed by each selectionchange event).\n\t */\n\tprivate readonly _documentIsSelectingInactivityTimeoutDebounced: DebouncedFunc<() => void>;\n\n\t/**\n\t * Private property to check if the code does not enter infinite loop.\n\t */\n\tprivate _loopbackCounter: number;\n\n\tconstructor( view: View ) {\n\t\tsuper( view );\n\n\t\tthis.mutationObserver = view.getObserver( MutationObserver );\n\t\tthis.focusObserver = view.getObserver( FocusObserver );\n\t\tthis.selection = this.document.selection;\n\t\tthis.domConverter = view.domConverter;\n\n\t\tthis._documents = new WeakSet();\n\n\t\tthis._fireSelectionChangeDoneDebounced = debounce( data => {\n\t\t\tthis.document.fire<ViewDocumentSelectionChangeDoneEvent>( 'selectionChangeDone', data );\n\t\t}, 200 );\n\n\t\tthis._clearInfiniteLoopInterval = setInterval( () => this._clearInfiniteLoop(), 1000 );\n\n\t\tthis._documentIsSelectingInactivityTimeoutDebounced = debounce( () => ( this.document.isSelecting = false ), 5000 );\n\n\t\tthis._loopbackCounter = 0;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override observe( domElement: HTMLElement ): void {\n\t\tconst domDocument = domElement.ownerDocument;\n\n\t\tconst startDocumentIsSelecting = () => {\n\t\t\tthis.document.isSelecting = true;\n\n\t\t\t// Let's activate the safety timeout each time the document enters the \"is selecting\" state.\n\t\t\tthis._documentIsSelectingInactivityTimeoutDebounced();\n\t\t};\n\n\t\tconst endDocumentIsSelecting = () => {\n\t\t\tif ( !this.document.isSelecting ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Make sure that model selection is up-to-date at the end of selecting process.\n\t\t\t// Sometimes `selectionchange` events could arrive after the `mouseup` event and that selection could be already outdated.\n\t\t\tthis._handleSelectionChange( null, domDocument );\n\n\t\t\tthis.document.isSelecting = false;\n\n\t\t\t// The safety timeout can be canceled when the document leaves the \"is selecting\" state.\n\t\t\tthis._documentIsSelectingInactivityTimeoutDebounced.cancel();\n\t\t};\n\n\t\t// The document has the \"is selecting\" state while the user keeps making (extending) the selection\n\t\t// (e.g. by holding the mouse button and moving the cursor). The state resets when they either released\n\t\t// the mouse button or interrupted the process by pressing or releasing any key.\n\t\tthis.listenTo( domElement, 'selectstart', startDocumentIsSelecting, { priority: 'highest' } );\n\n\t\tthis.listenTo( domElement, 'keydown', endDocumentIsSelecting, { priority: 'highest', useCapture: true } );\n\t\tthis.listenTo( domElement, 'keyup', endDocumentIsSelecting, { priority: 'highest', useCapture: true } );\n\n\t\t// Add document-wide listeners only once. This method could be called for multiple editing roots.\n\t\tif ( this._documents.has( domDocument ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// This listener is using capture mode to make sure that selection is upcasted before any other\n\t\t// handler would like to check it and update (for example table multi cell selection).\n\t\tthis.listenTo( domDocument, 'mouseup', endDocumentIsSelecting, { priority: 'highest', useCapture: true } );\n\n\t\tthis.listenTo( domDocument, 'selectionchange', ( evt, domEvent ) => {\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconst domSelection = domDocument.defaultView!.getSelection();\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.group( '%c[SelectionObserver]%c selectionchange', 'color:green', ''\n\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[SelectionObserver]%c DOM Selection:', 'font-weight:bold;color:green', '',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t{ node: domSelection!.anchorNode, offset: domSelection!.anchorOffset },\n\t\t\t// @if CK_DEBUG_TYPING // \t\t{ node: domSelection!.focusNode, offset: domSelection!.focusOffset }\n\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t// The Renderer is disabled while composing on non-android browsers, so we can't update the view selection\n\t\t\t// because the DOM and view tree drifted apart. Position mapping could fail because of it.\n\t\t\tif ( this.document.isComposing && !env.isAndroid ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[SelectionObserver]%c Selection change ignored (isComposing)',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight:bold;color:green', ''\n\t\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._handleSelectionChange( domEvent, domDocument );\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t// Defer the safety timeout when the selection changes (e.g. the user keeps extending the selection\n\t\t\t// using their mouse).\n\t\t\tthis._documentIsSelectingInactivityTimeoutDebounced();\n\t\t} );\n\n\t\tthis._documents.add( domDocument );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override stopObserving( domElement: HTMLElement ): void {\n\t\tthis.stopListening( domElement );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tclearInterval( this._clearInfiniteLoopInterval );\n\t\tthis._fireSelectionChangeDoneDebounced.cancel();\n\t\tthis._documentIsSelectingInactivityTimeoutDebounced.cancel();\n\t}\n\n\t/* istanbul ignore next -- @preserve */\n\tprivate _reportInfiniteLoop() {\n\t// @if CK_DEBUG //\t\tthrow new Error(\n\t// @if CK_DEBUG //\t\t\t'Selection change observer detected an infinite rendering loop.\\n\\n' +\n\t// @if CK_DEBUG //\t \t\t'⚠️⚠️ Report this error on https://github.com/ckeditor/ckeditor5/issues/11658.'\n\t// @if CK_DEBUG //\t\t);\n\t}\n\n\t/**\n\t * Selection change listener. {@link module:engine/view/observer/mutationobserver~MutationObserver#flush Flush} mutations, check if\n\t * a selection changes and fires {@link module:engine/view/document~Document#event:selectionChange} event on every change\n\t * and {@link module:engine/view/document~Document#event:selectionChangeDone} when a selection stop changing.\n\t *\n\t * @param domEvent DOM event.\n\t * @param domDocument DOM document.\n\t */\n\tprivate _handleSelectionChange( domEvent: unknown, domDocument: Document ) {\n\t\tif ( !this.isEnabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst domSelection = domDocument.defaultView!.getSelection()!;\n\n\t\tif ( this.checkShouldIgnoreEventFromTarget( domSelection.anchorNode! ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ensure the mutation event will be before selection event on all browsers.\n\t\tthis.mutationObserver.flush();\n\n\t\tconst newViewSelection = this.domConverter.domSelectionToView( domSelection );\n\n\t\t// Do not convert selection change if the new view selection has no ranges in it.\n\t\t//\n\t\t// It means that the DOM selection is in some way incorrect. Ranges that were in the DOM selection could not be\n\t\t// converted to the view. This happens when the DOM selection was moved outside of the editable element.\n\t\tif ( newViewSelection.rangeCount == 0 ) {\n\t\t\tthis.view.hasDomSelection = false;\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.view.hasDomSelection = true;\n\n\t\t// Mark the latest focus change as complete (we got new selection after the focus so the selection is in the focused element).\n\t\tthis.focusObserver.flush();\n\n\t\tif ( this.selection.isEqual( newViewSelection ) && this.domConverter.isDomSelectionCorrect( domSelection ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ensure we are not in the infinite loop (#400).\n\t\t// This counter is reset each second. 60 selection changes in 1 second is enough high number\n\t\t// to be very difficult (impossible) to achieve using just keyboard keys (during normal editor use).\n\t\tif ( ++this._loopbackCounter > 60 ) {\n\t\t\t// Selection change observer detected an infinite rendering loop.\n\t\t\t// Most probably you try to put the selection in the position which is not allowed\n\t\t\t// by the browser and browser fixes it automatically what causes `selectionchange` event on\n\t\t\t// which a loopback through a model tries to re-render the wrong selection and again.\n\t\t\tthis._reportInfiniteLoop();\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.selection.isSimilar( newViewSelection ) ) {\n\t\t\t// If selection was equal and we are at this point of algorithm, it means that it was incorrect.\n\t\t\t// Just re-render it, no need to fire any events, etc.\n\t\t\tthis.view.forceRender();\n\t\t} else {\n\t\t\tconst data: ViewDocumentSelectionEventData = {\n\t\t\t\toldSelection: this.selection,\n\t\t\t\tnewSelection: newViewSelection,\n\t\t\t\tdomSelection\n\t\t\t};\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[SelectionObserver]%c Fire selection change:',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight:bold;color:green', '',\n\t\t\t// @if CK_DEBUG_TYPING // \t\tnewViewSelection.getFirstRange()\n\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t// Prepare data for new selection and fire appropriate events.\n\t\t\tthis.document.fire<ViewDocumentSelectionChangeEvent>( 'selectionChange', data );\n\n\t\t\t// Call `#_fireSelectionChangeDoneDebounced` every time when `selectionChange` event is fired.\n\t\t\t// This function is debounced what means that `selectionChangeDone` event will be fired only when\n\t\t\t// defined int the function time will elapse since the last time the function was called.\n\t\t\t// So `selectionChangeDone` will be fired when selection will stop changing.\n\t\t\tthis._fireSelectionChangeDoneDebounced( data );\n\t\t}\n\t}\n\n\t/**\n\t * Clears `SelectionObserver` internal properties connected with preventing infinite loop.\n\t */\n\tprivate _clearInfiniteLoop(): void {\n\t\tthis._loopbackCounter = 0;\n\t}\n}\n\n/**\n * The value of {@link ~ViewDocumentSelectionChangeEvent} and {@link ~ViewDocumentSelectionChangeDoneEvent} events.\n */\nexport type ViewDocumentSelectionEventData = {\n\n\t/**\n\t * Old View selection which is {@link module:engine/view/document~Document#selection}.\n\t */\n\toldSelection: DocumentSelection;\n\n\t/**\n\t * New View selection which is converted DOM selection.\n\t */\n\tnewSelection: Selection;\n\n\t/**\n\t * Native DOM selection.\n\t */\n\tdomSelection: DomSelection | null;\n};\n\n/**\n * Fired when a selection has changed. This event is fired only when the selection change was the only change that happened\n * in the document, and the old selection is different then the new selection.\n *\n * Introduced by {@link module:engine/view/observer/selectionobserver~SelectionObserver}.\n *\n * Note that because {@link module:engine/view/observer/selectionobserver~SelectionObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/selectionobserver~SelectionObserver\n * @eventName module:engine/view/document~Document#selectionChange\n */\nexport type ViewDocumentSelectionChangeEvent = {\n\tname: 'selectionChange';\n\targs: [ ViewDocumentSelectionEventData ];\n};\n\n/**\n * Fired when selection stops changing.\n *\n * Introduced by {@link module:engine/view/observer/selectionobserver~SelectionObserver}.\n *\n * Note that because {@link module:engine/view/observer/selectionobserver~SelectionObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/selectionobserver~SelectionObserver\n * @eventName module:engine/view/document~Document#selectionChangeDone\n */\nexport type ViewDocumentSelectionChangeDoneEvent = {\n\tname: 'selectionChangeDone';\n\targs: [ ViewDocumentSelectionEventData ];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/compositionobserver\n */\n\nimport DomEventObserver from './domeventobserver';\nimport type View from '../view';\nimport type DomEventData from './domeventdata';\n\n/**\n * {@link module:engine/view/document~Document#event:compositionstart Compositionstart},\n * {@link module:engine/view/document~Document#event:compositionupdate compositionupdate} and\n * {@link module:engine/view/document~Document#event:compositionend compositionend} events observer.\n *\n * Note that this observer is attached by the {@link module:engine/view/view~View} and is available by default.\n */\nexport default class CompositionObserver extends DomEventObserver<'compositionstart' | 'compositionupdate' | 'compositionend'> {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic readonly domEventType = [ 'compositionstart', 'compositionupdate', 'compositionend' ] as const;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( view: View ) {\n\t\tsuper( view );\n\n\t\tconst document = this.document;\n\n\t\tdocument.on<ViewDocumentCompositionStartEvent>( 'compositionstart', () => {\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( '%c[CompositionObserver] ' +\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'┌───────────────────────────── isComposing = true ─────────────────────────────┐',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold; color: green'\n\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t// @if CK_DEBUG_TYPING // }\n\t\t\tdocument.isComposing = true;\n\t\t}, { priority: 'low' } );\n\n\t\tdocument.on<ViewDocumentCompositionEndEvent>( 'compositionend', () => {\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( '%c[CompositionObserver] ' +\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'└───────────────────────────── isComposing = false ─────────────────────────────┘',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold; color: green'\n\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t// @if CK_DEBUG_TYPING // }\n\t\t\tdocument.isComposing = false;\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic onDomEvent( domEvent: CompositionEvent ): void {\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.group( `%c[CompositionObserver]%c ${ domEvent.type }`, 'color: green', '' );\n\t\t// @if CK_DEBUG_TYPING // }\n\n\t\tthis.fire( domEvent.type, domEvent, {\n\t\t\tdata: domEvent.data\n\t\t} );\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n\t\t// @if CK_DEBUG_TYPING // }\n\t}\n}\n\nexport interface CompositionEventData extends DomEventData<CompositionEvent> {\n\tdata: string | null;\n}\n\n/**\n * Fired when composition starts inside one of the editables.\n *\n * Introduced by {@link module:engine/view/observer/compositionobserver~CompositionObserver}.\n *\n * Note that because {@link module:engine/view/observer/compositionobserver~CompositionObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/compositionobserver~CompositionObserver\n * @eventName module:engine/view/document~Document#compositionstart\n * @param data Event data.\n */\nexport type ViewDocumentCompositionStartEvent = {\n\tname: 'compositionstart';\n\targs: [ data: CompositionEventData ];\n};\n\n/**\n * Fired when composition is updated inside one of the editables.\n *\n * Introduced by {@link module:engine/view/observer/compositionobserver~CompositionObserver}.\n *\n * Note that because {@link module:engine/view/observer/compositionobserver~CompositionObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/compositionobserver~CompositionObserver\n * @eventName module:engine/view/document~Document#compositionupdate\n * @param data Event data.\n */\nexport type ViewDocumentCompositionUpdateEvent = {\n\tname: 'compositionupdate';\n\targs: [ data: CompositionEventData ];\n};\n\n/**\n * Fired when composition ends inside one of the editables.\n *\n * Introduced by {@link module:engine/view/observer/compositionobserver~CompositionObserver}.\n *\n * Note that because {@link module:engine/view/observer/compositionobserver~CompositionObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @see module:engine/view/observer/compositionobserver~CompositionObserver\n * @eventName module:engine/view/document~Document#compositionend\n * @param data Event data.\n */\nexport type ViewDocumentCompositionEndEvent = {\n\tname: 'compositionend';\n\targs: [ data: CompositionEventData ];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/datatransfer\n */\n\ntype DomDataTransfer = globalThis.DataTransfer;\n\n/**\n * A facade over the native [`DataTransfer`](https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer) object.\n */\nexport default class DataTransfer {\n\t/**\n\t * The array of files created from the native `DataTransfer#files` or `DataTransfer#items`.\n\t */\n\tprivate _files: Array<File> | null;\n\n\t/**\n\t * The native DataTransfer object.\n\t */\n\tprivate _native: DomDataTransfer;\n\n\t/**\n\t * @param nativeDataTransfer The native [`DataTransfer`](https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer) object.\n\t * @param options.cacheFiles Whether `files` list should be initialized in the constructor.\n\t */\n\tconstructor( nativeDataTransfer: DomDataTransfer, options: { cacheFiles?: boolean } = {} ) {\n\t\t// We should store references to the File instances in case someone would like to process this files\n\t\t// outside the event handler. Files are stored only for `drop` and `paste` events because they are not usable\n\t\t// in other events and are generating a huge delay on Firefox while dragging.\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/13366.\n\t\tthis._files = options.cacheFiles ? getFiles( nativeDataTransfer ) : null;\n\n\t\tthis._native = nativeDataTransfer;\n\t}\n\n\t/**\n\t * The array of files created from the native `DataTransfer#files` or `DataTransfer#items`.\n\t */\n\tpublic get files(): Array<File> {\n\t\tif ( !this._files ) {\n\t\t\tthis._files = getFiles( this._native );\n\t\t}\n\n\t\treturn this._files;\n\t}\n\n\t/**\n\t * Returns an array of available native content types.\n\t */\n\tpublic get types(): ReadonlyArray<string> {\n\t\treturn this._native.types;\n\t}\n\n\t/**\n\t * Gets the data from the data transfer by its MIME type.\n\t *\n\t * ```ts\n\t * dataTransfer.getData( 'text/plain' );\n\t * ```\n\t *\n\t * @param type The MIME type. E.g. `text/html` or `text/plain`.\n\t */\n\tpublic getData( type: string ): string {\n\t\treturn this._native.getData( type );\n\t}\n\n\t/**\n\t * Sets the data in the data transfer.\n\t *\n\t * @param type The MIME type. E.g. `text/html` or `text/plain`.\n\t */\n\tpublic setData( type: string, data: string ): void {\n\t\tthis._native.setData( type, data );\n\t}\n\n\t/**\n\t * The effect that is allowed for a drag operation.\n\t */\n\tpublic set effectAllowed( value: EffectAllowed ) {\n\t\tthis._native.effectAllowed = value;\n\t}\n\n\tpublic get effectAllowed(): EffectAllowed {\n\t\treturn this._native.effectAllowed;\n\t}\n\n\t/**\n\t * The actual drop effect.\n\t */\n\tpublic set dropEffect( value: DropEffect ) {\n\t\tthis._native.dropEffect = value;\n\t}\n\n\tpublic get dropEffect(): DropEffect {\n\t\treturn this._native.dropEffect;\n\t}\n\n\t/**\n\t * Set a preview image of the dragged content.\n\t */\n\tpublic setDragImage( image: Element, x: number, y: number ): void {\n\t\tthis._native.setDragImage( image, x, y );\n\t}\n\n\t/**\n\t * Whether the dragging operation was canceled.\n\t */\n\tpublic get isCanceled(): boolean {\n\t\treturn this._native.dropEffect == 'none' || !!( this._native as any ).mozUserCancelled;\n\t}\n}\n\n/**\n * The effect that is allowed for a drag operation.\n */\nexport type EffectAllowed = DomDataTransfer[ 'effectAllowed' ];\n\n/**\n * The actual drop effect.\n */\nexport type DropEffect = DomDataTransfer[ 'dropEffect' ];\n\nfunction getFiles( nativeDataTransfer: DomDataTransfer ): Array<File> {\n\t// DataTransfer.files and items are array-like and might not have an iterable interface.\n\tconst files = Array.from( nativeDataTransfer.files || [] );\n\tconst items = Array.from( nativeDataTransfer.items || [] );\n\n\tif ( files.length ) {\n\t\treturn files;\n\t}\n\n\t// Chrome has empty DataTransfer.files, but allows getting files through the items interface.\n\treturn items\n\t\t.filter( item => item.kind === 'file' )\n\t\t.map( item => item.getAsFile()! );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/inputobserver\n */\n\nimport DomEventObserver from './domeventobserver';\nimport type DomEventData from './domeventdata';\nimport type ViewRange from '../range';\nimport DataTransfer from '../datatransfer';\nimport { env } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Observer for events connected with data input.\n *\n * **Note**: This observer is attached by {@link module:engine/view/view~View} and available by default in all\n * editor instances.\n */\nexport default class InputObserver extends DomEventObserver<'beforeinput'> {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic readonly domEventType = 'beforeinput' as const;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic onDomEvent( domEvent: InputEvent ): void {\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.group( `%c[InputObserver]%c ${ domEvent.type }: ${ domEvent.inputType }`,\n\t\t// @if CK_DEBUG_TYPING // \t\t'color: green', 'color: default'\n\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t// @if CK_DEBUG_TYPING // }\n\n\t\tconst domTargetRanges = domEvent.getTargetRanges();\n\t\tconst view = this.view;\n\t\tconst viewDocument = view.document;\n\n\t\tlet dataTransfer: DataTransfer | null = null;\n\t\tlet data: string | null = null;\n\t\tlet targetRanges: Array<ViewRange> = [];\n\n\t\tif ( domEvent.dataTransfer ) {\n\t\t\tdataTransfer = new DataTransfer( domEvent.dataTransfer );\n\t\t}\n\n\t\tif ( domEvent.data !== null ) {\n\t\t\tdata = domEvent.data;\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.info( `%c[InputObserver]%c event data: %c${ JSON.stringify( data ) }`,\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'color: green;font-weight: bold', 'font-weight:bold', 'color: blue;'\n\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t// @if CK_DEBUG_TYPING // }\n\t\t} else if ( dataTransfer ) {\n\t\t\tdata = dataTransfer.getData( 'text/plain' );\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.info( `%c[InputObserver]%c event data transfer: %c${ JSON.stringify( data ) }`,\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'color: green;font-weight: bold', 'font-weight:bold', 'color: blue;'\n\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t// @if CK_DEBUG_TYPING // }\n\t\t}\n\n\t\t// If the editor selection is fake (an object is selected), the DOM range does not make sense because it is anchored\n\t\t// in the fake selection container.\n\t\tif ( viewDocument.selection.isFake ) {\n\t\t\t// Future-proof: in case of multi-range fake selections being possible.\n\t\t\ttargetRanges = Array.from( viewDocument.selection.getRanges() );\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[InputObserver]%c using fake selection:',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'color: green;font-weight: bold', 'font-weight:bold', targetRanges,\n\t\t\t// @if CK_DEBUG_TYPING // \t\tviewDocument.selection.isFake ? 'fake view selection' : 'fake DOM parent'\n\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t// @if CK_DEBUG_TYPING // }\n\t\t} else if ( domTargetRanges.length ) {\n\t\t\ttargetRanges = domTargetRanges.map( domRange => {\n\t\t\t\t// Sometimes browser provides range that starts before editable node.\n\t\t\t\t// We try to fall back to collapsed range at the valid end position.\n\t\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/14411.\n\t\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/14050.\n\t\t\t\tconst viewStart = view.domConverter.domPositionToView( domRange.startContainer, domRange.startOffset );\n\t\t\t\tconst viewEnd = view.domConverter.domPositionToView( domRange.endContainer, domRange.endOffset );\n\n\t\t\t\tif ( viewStart ) {\n\t\t\t\t\treturn view.createRange( viewStart, viewEnd );\n\t\t\t\t} else if ( viewEnd ) {\n\t\t\t\t\treturn view.createRange( viewEnd );\n\t\t\t\t}\n\t\t\t} ).filter( ( range ): range is ViewRange => !!range );\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[InputObserver]%c using target ranges:',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'color: green;font-weight: bold', 'font-weight:bold', targetRanges\n\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t// @if CK_DEBUG_TYPING // }\n\t\t}\n\t\t// For Android devices we use a fallback to the current DOM selection, Android modifies it according\n\t\t// to the expected target ranges of input event.\n\t\telse if ( env.isAndroid ) {\n\t\t\tconst domSelection = ( domEvent.target as HTMLElement ).ownerDocument.defaultView!.getSelection()!;\n\n\t\t\ttargetRanges = Array.from( view.domConverter.domSelectionToView( domSelection ).getRanges() );\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[InputObserver]%c using selection ranges:',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'color: green;font-weight: bold', 'font-weight:bold', targetRanges\n\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t// @if CK_DEBUG_TYPING // }\n\t\t}\n\n\t\t// Android sometimes fires insertCompositionText with a new-line character at the end of the data\n\t\t// instead of firing insertParagraph beforeInput event.\n\t\t// Fire the correct type of beforeInput event and ignore the replaced fragment of text because\n\t\t// it wants to replace \"test\" with \"test\\n\".\n\t\t// https://github.com/ckeditor/ckeditor5/issues/12368.\n\t\tif ( env.isAndroid && domEvent.inputType == 'insertCompositionText' && data && data.endsWith( '\\n' ) ) {\n\t\t\tthis.fire( domEvent.type, domEvent, {\n\t\t\t\tinputType: 'insertParagraph',\n\t\t\t\ttargetRanges: [ view.createRange( targetRanges[ 0 ].end ) ]\n\t\t\t} );\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Normalize the insertText data that includes new-line characters.\n\t\t// https://github.com/ckeditor/ckeditor5/issues/2045.\n\t\tif ( domEvent.inputType == 'insertText' && data && data.includes( '\\n' ) ) {\n\t\t\t// There might be a single new-line or double for new paragraph, but we translate\n\t\t\t// it to paragraphs as it is our default action for enter handling.\n\t\t\tconst parts = data.split( /\\n{1,2}/g );\n\n\t\t\tlet partTargetRanges = targetRanges;\n\n\t\t\tfor ( let i = 0; i < parts.length; i++ ) {\n\t\t\t\tconst dataPart = parts[ i ];\n\n\t\t\t\tif ( dataPart != '' ) {\n\t\t\t\t\tthis.fire( domEvent.type, domEvent, {\n\t\t\t\t\t\tdata: dataPart,\n\t\t\t\t\t\tdataTransfer,\n\t\t\t\t\t\ttargetRanges: partTargetRanges,\n\t\t\t\t\t\tinputType: domEvent.inputType,\n\t\t\t\t\t\tisComposing: domEvent.isComposing\n\t\t\t\t\t} );\n\n\t\t\t\t\t// Use the result view selection so following events will be added one after another.\n\t\t\t\t\tpartTargetRanges = [ viewDocument.selection.getFirstRange()! ];\n\t\t\t\t}\n\n\t\t\t\tif ( i + 1 < parts.length ) {\n\t\t\t\t\tthis.fire( domEvent.type, domEvent, {\n\t\t\t\t\t\tinputType: 'insertParagraph',\n\t\t\t\t\t\ttargetRanges: partTargetRanges\n\t\t\t\t\t} );\n\n\t\t\t\t\t// Use the result view selection so following events will be added one after another.\n\t\t\t\t\tpartTargetRanges = [ viewDocument.selection.getFirstRange()! ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Fire the normalized beforeInput event.\n\t\tthis.fire( domEvent.type, domEvent, {\n\t\t\tdata,\n\t\t\tdataTransfer,\n\t\t\ttargetRanges,\n\t\t\tinputType: domEvent.inputType,\n\t\t\tisComposing: domEvent.isComposing\n\t\t} );\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n\t\t// @if CK_DEBUG_TYPING // }\n\t}\n}\n\n/**\n * Fired before the web browser inputs, deletes, or formats some data.\n *\n * This event is introduced by {@link module:engine/view/observer/inputobserver~InputObserver} and available\n * by default in all editor instances (attached by {@link module:engine/view/view~View}).\n *\n * @see module:engine/view/observer/inputobserver~InputObserver\n * @eventName module:engine/view/document~Document#beforeinput\n * @param data Event data containing detailed information about the event.\n */\nexport type ViewDocumentInputEvent = {\n\tname: 'beforeinput';\n\targs: [ data: InputEventData ];\n};\n\n/**\n * The value of the {@link ~ViewDocumentInputEvent} event.\n */\nexport interface InputEventData extends DomEventData<InputEvent> {\n\n\t/**\n\t * The type of the input event (e.g. \"insertText\" or \"deleteWordBackward\"). Corresponds to native `InputEvent#inputType`.\n\t */\n\treadonly inputType: string;\n\n\t/**\n\t * A unified text data passed along with the input event. Depending on:\n\t *\n\t * * the web browser and input events implementation (for instance [Level 1](https://www.w3.org/TR/input-events-1/) or\n\t * [Level 2](https://www.w3.org/TR/input-events-2/)),\n\t * * {@link module:engine/view/observer/inputobserver~InputEventData#inputType input type}\n\t *\n\t * text data is sometimes passed in the `data` and sometimes in the `dataTransfer` property.\n\t *\n\t * * If `InputEvent#data` was set, this property reflects its value.\n\t * * If `InputEvent#data` is unavailable, this property contains the `'text/plain'` data from\n\t * {@link module:engine/view/observer/inputobserver~InputEventData#dataTransfer}.\n\t * * If the event ({@link module:engine/view/observer/inputobserver~InputEventData#inputType input type})\n\t * provides no data whatsoever, this property is `null`.\n\t */\n\treadonly data: string | null;\n\n\t/**\n\t * The data transfer instance of the input event. Corresponds to native `InputEvent#dataTransfer`.\n\t *\n\t * The value is `null` when no `dataTransfer` was passed along with the input event.\n\t */\n\treadonly dataTransfer: DataTransfer;\n\n\t/**\n\t * A flag indicating that the `beforeinput` event was fired during composition.\n\t *\n\t * Corresponds to the\n\t * {@link module:engine/view/document~Document#event:compositionstart},\n\t * {@link module:engine/view/document~Document#event:compositionupdate},\n\t * and {@link module:engine/view/document~Document#event:compositionend } trio.\n\t */\n\treadonly isComposing: boolean;\n\n\t/**\n\t * Editing {@link module:engine/view/range~Range view ranges} corresponding to DOM ranges provided by the web browser\n\t * (as returned by `InputEvent#getTargetRanges()`).\n\t */\n\treadonly targetRanges: Array<ViewRange>;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/arrowkeysobserver\n */\n\nimport Observer from './observer';\nimport BubblingEventInfo from './bubblingeventinfo';\nimport type View from '../view';\nimport type { KeyEventData, ViewDocumentKeyDownEvent } from './keyobserver';\nimport type { BubblingEvent } from './bubblingemittermixin';\n\nimport { isArrowKeyCode } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Arrow keys observer introduces the {@link module:engine/view/document~Document#event:arrowKey `Document#arrowKey`} event.\n *\n * Note that this observer is attached by the {@link module:engine/view/view~View} and is available by default.\n */\nexport default class ArrowKeysObserver extends Observer {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( view: View ) {\n\t\tsuper( view );\n\n\t\tthis.document.on<ViewDocumentKeyDownEvent>( 'keydown', ( event, data ) => {\n\t\t\tif ( this.isEnabled && isArrowKeyCode( data.keyCode ) ) {\n\t\t\t\tconst eventInfo = new BubblingEventInfo( this.document, 'arrowKey', this.document.selection.getFirstRange()! );\n\n\t\t\t\tthis.document.fire<ViewDocumentArrowKeyEvent>( eventInfo, data );\n\n\t\t\t\tif ( eventInfo.stop.called ) {\n\t\t\t\t\tevent.stop();\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override observe(): void {}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override stopObserving(): void {}\n}\n\n/**\n * Event fired when the user presses an arrow keys.\n *\n * Introduced by {@link module:engine/view/observer/arrowkeysobserver~ArrowKeysObserver}.\n *\n * Note that because {@link module:engine/view/observer/arrowkeysobserver~ArrowKeysObserver} is attached by the\n * {@link module:engine/view/view~View} this event is available by default.\n *\n * @eventName module:engine/view/document~Document#arrowKey\n * @param data\n */\n\nexport type ViewDocumentArrowKeyEvent = BubblingEvent<{\n\tname: 'arrowKey';\n\targs: [ data: KeyEventData ];\n}>;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/tabobserver\n */\n\nimport type View from '../view';\nimport Observer from './observer';\nimport BubblingEventInfo from './bubblingeventinfo';\nimport type { KeyEventData, ViewDocumentKeyDownEvent } from './keyobserver';\nimport type { BubblingEvent } from './bubblingemittermixin';\n\nimport { keyCodes } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Tab observer introduces the {@link module:engine/view/document~Document#event:tab `Document#tab`} event.\n *\n * Note that because {@link module:engine/view/observer/tabobserver~TabObserver} is attached by the\n * {@link module:engine/view/view~View}, this event is available by default.\n */\nexport default class TabObserver extends Observer {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( view: View ) {\n\t\tsuper( view );\n\n\t\tconst doc = this.document;\n\n\t\tdoc.on<ViewDocumentKeyDownEvent>( 'keydown', ( evt, data ) => {\n\t\t\tif (\n\t\t\t\t!this.isEnabled ||\n\t\t\t\tdata.keyCode != keyCodes.tab ||\n\t\t\t\tdata.ctrlKey\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst event = new BubblingEventInfo( doc, 'tab', doc.selection.getFirstRange()! );\n\n\t\t\tdoc.fire<ViewDocumentTabEvent>( event, data );\n\n\t\t\tif ( event.stop.called ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override observe(): void {}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override stopObserving(): void {}\n}\n\n/**\n * Event fired when the user presses a tab key.\n *\n * Introduced by {@link module:engine/view/observer/tabobserver~TabObserver}.\n *\n * Note that because {@link module:engine/view/observer/tabobserver~TabObserver} is attached by the\n * {@link module:engine/view/view~View}, this event is available by default.\n *\n * @eventName module:engine/view/document~Document#tab\n * @param data\n */\nexport type ViewDocumentTabEvent = BubblingEvent<{\n\tname: 'tab';\n\targs: [ data: KeyEventData ];\n}>;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/view\n */\n\nimport Document, { type ViewDocumentLayoutChangedEvent } from './document';\nimport DowncastWriter from './downcastwriter';\nimport Renderer from './renderer';\nimport DomConverter from './domconverter';\nimport Position, { type PositionOffset } from './position';\nimport Range from './range';\nimport Selection, {\n\ttype PlaceOrOffset,\n\ttype Selectable,\n\ttype SelectionOptions\n} from './selection';\n\nimport type { default as Observer, ObserverConstructor } from './observer/observer';\nimport type { ViewDocumentSelectionChangeEvent } from './documentselection';\nimport type { StylesProcessor } from './stylesmap';\nimport type Element from './element';\nimport type Node from './node';\nimport type Item from './item';\n\nimport KeyObserver from './observer/keyobserver';\nimport FakeSelectionObserver from './observer/fakeselectionobserver';\nimport MutationObserver from './observer/mutationobserver';\nimport SelectionObserver from './observer/selectionobserver';\nimport FocusObserver, { type ViewDocumentBlurEvent } from './observer/focusobserver';\nimport CompositionObserver from './observer/compositionobserver';\nimport InputObserver from './observer/inputobserver';\nimport ArrowKeysObserver from './observer/arrowkeysobserver';\nimport TabObserver from './observer/tabobserver';\n\nimport {\n\tCKEditorError,\n\tenv,\n\tObservableMixin,\n\tscrollViewportToShowTarget,\n\ttype ObservableChangeEvent\n} from '@ckeditor/ckeditor5-utils';\nimport { injectUiElementHandling } from './uielement';\nimport { injectQuirksHandling } from './filler';\n\nimport { cloneDeep } from 'lodash-es';\n\ntype IfTrue<T> = T extends true ? true : never;\ntype DomRange = globalThis.Range;\n\n/**\n * Editor's view controller class. Its main responsibility is DOM - View management for editing purposes, to provide\n * abstraction over the DOM structure and events and hide all browsers quirks.\n *\n * View controller renders view document to DOM whenever view structure changes. To determine when view can be rendered,\n * all changes need to be done using the {@link module:engine/view/view~View#change} method, using\n * {@link module:engine/view/downcastwriter~DowncastWriter}:\n *\n * ```ts\n * view.change( writer => {\n * \twriter.insert( position, writer.createText( 'foo' ) );\n * } );\n * ```\n *\n * View controller also register {@link module:engine/view/observer/observer~Observer observers} which observes changes\n * on DOM and fire events on the {@link module:engine/view/document~Document Document}.\n * Note that the following observers are added by the class constructor and are always available:\n *\n * * {@link module:engine/view/observer/selectionobserver~SelectionObserver},\n * * {@link module:engine/view/observer/focusobserver~FocusObserver},\n * * {@link module:engine/view/observer/keyobserver~KeyObserver},\n * * {@link module:engine/view/observer/fakeselectionobserver~FakeSelectionObserver}.\n * * {@link module:engine/view/observer/compositionobserver~CompositionObserver}.\n * * {@link module:engine/view/observer/inputobserver~InputObserver}.\n * * {@link module:engine/view/observer/arrowkeysobserver~ArrowKeysObserver}.\n * * {@link module:engine/view/observer/tabobserver~TabObserver}.\n *\n * This class also {@link module:engine/view/view~View#attachDomRoot binds the DOM and the view elements}.\n *\n * If you do not need full a DOM - view management, and only want to transform a tree of view elements to a tree of DOM\n * elements you do not need this controller. You can use the {@link module:engine/view/domconverter~DomConverter DomConverter} instead.\n */\nexport default class View extends ObservableMixin() {\n\t/**\n\t * Instance of the {@link module:engine/view/document~Document} associated with this view controller.\n\t */\n\tpublic readonly document: Document;\n\n\t/**\n\t * Instance of the {@link module:engine/view/domconverter~DomConverter domConverter} used by\n\t * {@link module:engine/view/view~View#_renderer renderer}\n\t * and {@link module:engine/view/observer/observer~Observer observers}.\n\t */\n\tpublic readonly domConverter: DomConverter;\n\n\t/**\n\t * Roots of the DOM tree. Map on the `HTMLElement`s with roots names as keys.\n\t */\n\tpublic readonly domRoots: Map<string, HTMLElement> = new Map();\n\n\t/**\n\t * Used to prevent calling {@link #forceRender} and {@link #change} during rendering view to the DOM.\n\t *\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public isRenderingInProgress: boolean;\n\n\t/**\n\t * Informs whether the DOM selection is inside any of the DOM roots managed by the view.\n\t *\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public hasDomSelection: boolean;\n\n\t/**\n\t * Instance of the {@link module:engine/view/renderer~Renderer renderer}.\n\t *\n\t * @internal\n\t */\n\tpublic readonly _renderer: Renderer;\n\n\t/**\n\t * A DOM root attributes cache. It saves the initial values of DOM root attributes before the DOM element\n\t * is {@link module:engine/view/view~View#attachDomRoot attached} to the view so later on, when\n\t * the view is destroyed ({@link module:engine/view/view~View#detachDomRoot}), they can be easily restored.\n\t * This way, the DOM element can go back to the (clean) state as if the editing view never used it.\n\t */\n\tprivate readonly _initialDomRootAttributes: WeakMap<HTMLElement, Record<string, string>> = new WeakMap();\n\n\t/**\n\t * Map of registered {@link module:engine/view/observer/observer~Observer observers}.\n\t */\n\tprivate readonly _observers: Map<ObserverConstructor, Observer> = new Map();\n\n\t/**\n\t * DowncastWriter instance used in {@link #change change method} callbacks.\n\t */\n\tprivate readonly _writer: DowncastWriter;\n\n\t/**\n\t * Is set to `true` when {@link #change view changes} are currently in progress.\n\t */\n\tprivate _ongoingChange: boolean = false;\n\n\t/**\n\t * Used to prevent calling {@link #forceRender} and {@link #change} during rendering view to the DOM.\n\t */\n\tprivate _postFixersInProgress: boolean = false;\n\n\t/**\n\t * Internal flag to temporary disable rendering. See the usage in the {@link #_disableRendering}.\n\t */\n\tprivate _renderingDisabled: boolean = false;\n\n\t/**\n\t * Internal flag that disables rendering when there are no changes since the last rendering.\n\t * It stores information about changed selection and changed elements from attached document roots.\n\t */\n\tprivate _hasChangedSinceTheLastRendering: boolean = false;\n\n\t/**\n\t * @param stylesProcessor The styles processor instance.\n\t */\n\tconstructor( stylesProcessor: StylesProcessor ) {\n\t\tsuper();\n\n\t\tthis.document = new Document( stylesProcessor );\n\t\tthis.domConverter = new DomConverter( this.document );\n\n\t\tthis.set( 'isRenderingInProgress', false );\n\t\tthis.set( 'hasDomSelection', false );\n\n\t\tthis._renderer = new Renderer( this.domConverter, this.document.selection );\n\t\tthis._renderer.bind( 'isFocused', 'isSelecting', 'isComposing' )\n\t\t\t.to( this.document, 'isFocused', 'isSelecting', 'isComposing' );\n\n\t\tthis._writer = new DowncastWriter( this.document );\n\n\t\t// Add default observers.\n\t\t// Make sure that this list matches AlwaysRegisteredObservers type.\n\t\tthis.addObserver( MutationObserver );\n\t\tthis.addObserver( FocusObserver );\n\t\tthis.addObserver( SelectionObserver );\n\t\tthis.addObserver( KeyObserver );\n\t\tthis.addObserver( FakeSelectionObserver );\n\t\tthis.addObserver( CompositionObserver );\n\t\tthis.addObserver( ArrowKeysObserver );\n\t\tthis.addObserver( InputObserver );\n\t\tthis.addObserver( TabObserver );\n\n\t\t// Inject quirks handlers.\n\t\tinjectQuirksHandling( this );\n\t\tinjectUiElementHandling( this );\n\n\t\t// Use 'normal' priority so that rendering is performed as first when using that priority.\n\t\tthis.on<ViewRenderEvent>( 'render', () => {\n\t\t\tthis._render();\n\n\t\t\t// Informs that layout has changed after render.\n\t\t\tthis.document.fire<ViewDocumentLayoutChangedEvent>( 'layoutChanged' );\n\n\t\t\t// Reset the `_hasChangedSinceTheLastRendering` flag after rendering.\n\t\t\tthis._hasChangedSinceTheLastRendering = false;\n\t\t} );\n\n\t\t// Listen to the document selection changes directly.\n\t\tthis.listenTo<ViewDocumentSelectionChangeEvent>( this.document.selection, 'change', () => {\n\t\t\tthis._hasChangedSinceTheLastRendering = true;\n\t\t} );\n\n\t\t// Trigger re-render if only the focus changed.\n\t\tthis.listenTo<ObservableChangeEvent>( this.document, 'change:isFocused', () => {\n\t\t\tthis._hasChangedSinceTheLastRendering = true;\n\t\t} );\n\n\t\t// Remove ranges from DOM selection if editor is blurred.\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/5753.\n\t\tif ( env.isiOS ) {\n\t\t\tthis.listenTo<ViewDocumentBlurEvent>( this.document, 'blur', ( evt, data ) => {\n\t\t\t\tconst relatedViewElement = this.domConverter.mapDomToView( data.domEvent.relatedTarget as HTMLElement );\n\n\t\t\t\t// Do not modify DOM selection if focus is moved to other editable of the same editor.\n\t\t\t\tif ( !relatedViewElement ) {\n\t\t\t\t\tthis.domConverter._clearDomSelection();\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Attaches a DOM root element to the view element and enable all observers on that element.\n\t * Also {@link module:engine/view/renderer~Renderer#markToSync mark element} to be synchronized\n\t * with the view what means that all child nodes will be removed and replaced with content of the view root.\n\t *\n\t * This method also will change view element name as the same as tag name of given dom root.\n\t * Name is always transformed to lower case.\n\t *\n\t * **Note:** Use {@link #detachDomRoot `detachDomRoot()`} to revert this action.\n\t *\n\t * @param domRoot DOM root element.\n\t * @param name Name of the root.\n\t */\n\tpublic attachDomRoot( domRoot: HTMLElement, name: string = 'main' ): void {\n\t\tconst viewRoot = this.document.getRoot( name )!;\n\n\t\t// Set view root name the same as DOM root tag name.\n\t\tviewRoot._name = domRoot.tagName.toLowerCase();\n\n\t\tconst initialDomRootAttributes: Record<string, string> = {};\n\n\t\t// 1. Copy and cache the attributes to remember the state of the element before attaching.\n\t\t// The cached attributes will be restored in detachDomRoot() so the element goes to the\n\t\t// clean state as if the editing view never used it.\n\t\t// 2. Apply the attributes using the view writer, so they all go under the control of the engine.\n\t\t// The editing view takes over the attribute management completely because various\n\t\t// features (e.g. addPlaceholder()) require dynamic changes of those attributes and they\n\t\t// cannot be managed by the engine and the UI library at the same time.\n\t\tfor ( const { name, value } of Array.from( domRoot.attributes ) ) {\n\t\t\tinitialDomRootAttributes[ name ] = value;\n\n\t\t\t// Do not use writer.setAttribute() for the class attribute. The EditableUIView class\n\t\t\t// and its descendants could have already set some using the writer.addClass() on the view\n\t\t\t// document root. They haven't been rendered yet so they are not present in the DOM root.\n\t\t\t// Using writer.setAttribute( 'class', ... ) would override them completely.\n\t\t\tif ( name === 'class' ) {\n\t\t\t\tthis._writer.addClass( value.split( ' ' ), viewRoot );\n\t\t\t} else {\n\t\t\t\tthis._writer.setAttribute( name, value, viewRoot );\n\t\t\t}\n\t\t}\n\n\t\tthis._initialDomRootAttributes.set( domRoot, initialDomRootAttributes );\n\n\t\tconst updateContenteditableAttribute = () => {\n\t\t\tthis._writer.setAttribute( 'contenteditable', ( !viewRoot.isReadOnly ).toString(), viewRoot );\n\n\t\t\tif ( viewRoot.isReadOnly ) {\n\t\t\t\tthis._writer.addClass( 'ck-read-only', viewRoot );\n\t\t\t} else {\n\t\t\t\tthis._writer.removeClass( 'ck-read-only', viewRoot );\n\t\t\t}\n\t\t};\n\n\t\t// Set initial value.\n\t\tupdateContenteditableAttribute();\n\n\t\tthis.domRoots.set( name, domRoot );\n\t\tthis.domConverter.bindElements( domRoot, viewRoot );\n\t\tthis._renderer.markToSync( 'children', viewRoot );\n\t\tthis._renderer.markToSync( 'attributes', viewRoot );\n\t\tthis._renderer.domDocuments.add( domRoot.ownerDocument );\n\n\t\tviewRoot.on( 'change:children', ( evt, node ) => this._renderer.markToSync( 'children', node ) );\n\t\tviewRoot.on( 'change:attributes', ( evt, node ) => this._renderer.markToSync( 'attributes', node ) );\n\t\tviewRoot.on( 'change:text', ( evt, node ) => this._renderer.markToSync( 'text', node ) );\n\t\tviewRoot.on( 'change:isReadOnly', () => this.change( updateContenteditableAttribute ) );\n\n\t\tviewRoot.on( 'change', () => {\n\t\t\tthis._hasChangedSinceTheLastRendering = true;\n\t\t} );\n\n\t\tfor ( const observer of this._observers.values() ) {\n\t\t\tobserver.observe( domRoot, name );\n\t\t}\n\t}\n\n\t/**\n\t * Detaches a DOM root element from the view element and restores its attributes to the state before\n\t * {@link #attachDomRoot `attachDomRoot()`}.\n\t *\n\t * @param name Name of the root to detach.\n\t */\n\tpublic detachDomRoot( name: string ): void {\n\t\tconst domRoot = this.domRoots.get( name )!;\n\n\t\t// Remove all root attributes so the DOM element is \"bare\".\n\t\tArray.from( domRoot.attributes ).forEach( ( { name } ) => domRoot.removeAttribute( name ) );\n\n\t\tconst initialDomRootAttributes = this._initialDomRootAttributes.get( domRoot );\n\n\t\t// Revert all view root attributes back to the state before attachDomRoot was called.\n\t\tfor ( const attribute in initialDomRootAttributes ) {\n\t\t\tdomRoot.setAttribute( attribute, initialDomRootAttributes[ attribute ] );\n\t\t}\n\n\t\tthis.domRoots.delete( name );\n\t\tthis.domConverter.unbindDomElement( domRoot );\n\n\t\tfor ( const observer of this._observers.values() ) {\n\t\t\tobserver.stopObserving( domRoot );\n\t\t}\n\t}\n\n\t/**\n\t * Gets DOM root element.\n\t *\n\t * @param name Name of the root.\n\t * @returns DOM root element instance.\n\t */\n\tpublic getDomRoot( name: string = 'main' ): HTMLElement | undefined {\n\t\treturn this.domRoots.get( name );\n\t}\n\n\t/**\n\t * Creates observer of the given type if not yet created, {@link module:engine/view/observer/observer~Observer#enable enables} it\n\t * and {@link module:engine/view/observer/observer~Observer#observe attaches} to all existing and future\n\t * {@link #domRoots DOM roots}.\n\t *\n\t * Note: Observers are recognized by their constructor (classes). A single observer will be instantiated and used only\n\t * when registered for the first time. This means that features and other components can register a single observer\n\t * multiple times without caring whether it has been already added or not.\n\t *\n\t * @param ObserverConstructor The constructor of an observer to add.\n\t * Should create an instance inheriting from {@link module:engine/view/observer/observer~Observer}.\n\t * @returns Added observer instance.\n\t */\n\tpublic addObserver( ObserverConstructor: ObserverConstructor ): Observer {\n\t\tlet observer = this._observers.get( ObserverConstructor );\n\n\t\tif ( observer ) {\n\t\t\treturn observer;\n\t\t}\n\n\t\tobserver = new ObserverConstructor( this );\n\n\t\tthis._observers.set( ObserverConstructor, observer );\n\n\t\tfor ( const [ name, domElement ] of this.domRoots ) {\n\t\t\tobserver.observe( domElement, name );\n\t\t}\n\n\t\tobserver.enable();\n\n\t\treturn observer;\n\t}\n\n\tpublic getObserver<T extends ObserverConstructor>( ObserverConstructor: T ):\n\t\tT extends AlwaysRegisteredObservers ? InstanceType<T> : InstanceType<T> | undefined;\n\n\t/**\n\t * Returns observer of the given type or `undefined` if such observer has not been added yet.\n\t *\n\t * @param ObserverConstructor The constructor of an observer to get.\n\t * @returns Observer instance or undefined.\n\t */\n\tpublic getObserver<T extends ObserverConstructor>( ObserverConstructor: T ): InstanceType<T> | undefined {\n\t\treturn this._observers.get( ObserverConstructor ) as ( InstanceType<T> | undefined );\n\t}\n\n\t/**\n\t * Disables all added observers.\n\t */\n\tpublic disableObservers(): void {\n\t\tfor ( const observer of this._observers.values() ) {\n\t\t\tobserver.disable();\n\t\t}\n\t}\n\n\t/**\n\t * Enables all added observers.\n\t */\n\tpublic enableObservers(): void {\n\t\tfor ( const observer of this._observers.values() ) {\n\t\t\tobserver.enable();\n\t\t}\n\t}\n\n\t/**\n\t * Scrolls the page viewport and {@link #domRoots} with their ancestors to reveal the\n\t * caret, **if not already visible to the user**.\n\t *\n\t * **Note**: Calling this method fires the {@link module:engine/view/view~ViewScrollToTheSelectionEvent} event that\n\t * allows custom behaviors.\n\t *\n\t * @param options Additional configuration of the scrolling behavior.\n\t * @param options.viewportOffset A distance between the DOM selection and the viewport boundary to be maintained\n\t * while scrolling to the selection (default is 20px). Setting this value to `0` will reveal the selection precisely at\n\t * the viewport boundary.\n\t * @param options.ancestorOffset A distance between the DOM selection and scrollable DOM root ancestor(s) to be maintained\n\t * while scrolling to the selection (default is 20px). Setting this value to `0` will reveal the selection precisely at\n\t * the scrollable ancestor(s) boundary.\n\t * @param options.alignToTop When set `true`, the DOM selection will be aligned to the top of the viewport if not already visible\n\t * (see `forceScroll` to learn more).\n\t * @param options.forceScroll When set `true`, the DOM selection will be aligned to the top of the viewport and scrollable ancestors\n\t * whether it is already visible or not. This option will only work when `alignToTop` is `true`.\n\t */\n\tpublic scrollToTheSelection<T extends boolean, U extends IfTrue<T>>( {\n\t\talignToTop,\n\t\tforceScroll,\n\t\tviewportOffset = 20,\n\t\tancestorOffset = 20\n\t}: {\n\t\treadonly viewportOffset?: number | { top: number; bottom: number; left: number; right: number };\n\t\treadonly ancestorOffset?: number;\n\t\treadonly alignToTop?: T;\n\t\treadonly forceScroll?: U;\n\t} = {} ): void {\n\t\tconst range = this.document.selection.getFirstRange();\n\n\t\tif ( !range ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clone to make sure properties like `viewportOffset` are not mutated in the event listeners.\n\t\tconst originalArgs = cloneDeep( { alignToTop, forceScroll, viewportOffset, ancestorOffset } );\n\n\t\tif ( typeof viewportOffset === 'number' ) {\n\t\t\tviewportOffset = {\n\t\t\t\ttop: viewportOffset,\n\t\t\t\tbottom: viewportOffset,\n\t\t\t\tleft: viewportOffset,\n\t\t\t\tright: viewportOffset\n\t\t\t};\n\t\t}\n\n\t\tconst options = {\n\t\t\ttarget: this.domConverter.viewRangeToDom( range ),\n\t\t\tviewportOffset,\n\t\t\tancestorOffset,\n\t\t\talignToTop,\n\t\t\tforceScroll\n\t\t};\n\n\t\tthis.fire<ViewScrollToTheSelectionEvent>( 'scrollToTheSelection', options, originalArgs );\n\n\t\tscrollViewportToShowTarget( options );\n\t}\n\n\t/**\n\t * It will focus DOM element representing {@link module:engine/view/editableelement~EditableElement EditableElement}\n\t * that is currently having selection inside.\n\t */\n\tpublic focus(): void {\n\t\tif ( !this.document.isFocused ) {\n\t\t\tconst editable = this.document.selection.editableElement;\n\n\t\t\tif ( editable ) {\n\t\t\t\tthis.domConverter.focus( editable );\n\t\t\t\tthis.forceRender();\n\t\t\t} else {\n\t\t\t\t// Before focusing view document, selection should be placed inside one of the view's editables.\n\t\t\t\t// Normally its selection will be converted from model document (which have default selection), but\n\t\t\t\t// when using view document on its own, we need to manually place selection before focusing it.\n\t\t\t\t//\n\t\t\t\t// @if CK_DEBUG // console.warn( 'There is no selection in any editable to focus.' );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * The `change()` method is the primary way of changing the view. You should use it to modify any node in the view tree.\n\t * It makes sure that after all changes are made the view is rendered to the DOM (assuming that the view will be changed\n\t * inside the callback). It prevents situations when the DOM is updated when the view state is not yet correct. It allows\n\t * to nest calls one inside another and still performs a single rendering after all those changes are made.\n\t * It also returns the return value of its callback.\n\t *\n\t * ```ts\n\t * const text = view.change( writer => {\n\t * \tconst newText = writer.createText( 'foo' );\n\t * \twriter.insert( position1, newText );\n\t *\n\t * \tview.change( writer => {\n\t * \t\twriter.insert( position2, writer.createText( 'bar' ) );\n\t * \t} );\n\t *\n\t * \twriter.remove( range );\n\t *\n\t * \treturn newText;\n\t * } );\n\t * ```\n\t *\n\t * When the outermost change block is done and rendering to the DOM is over the\n\t * {@link module:engine/view/view~View#event:render `View#render`} event is fired.\n\t *\n\t * This method throws a `applying-view-changes-on-rendering` error when\n\t * the change block is used after rendering to the DOM has started.\n\t *\n\t * @param callback Callback function which may modify the view.\n\t * @returns Value returned by the callback.\n\t */\n\tpublic change<TReturn>( callback: ( writer: DowncastWriter ) => TReturn ): TReturn {\n\t\tif ( this.isRenderingInProgress || this._postFixersInProgress ) {\n\t\t\t/**\n\t\t\t * Thrown when there is an attempt to make changes to the view tree when it is in incorrect state. This may\n\t\t\t * cause some unexpected behaviour and inconsistency between the DOM and the view.\n\t\t\t * This may be caused by:\n\t\t\t *\n\t\t\t * * calling {@link module:engine/view/view~View#change} or {@link module:engine/view/view~View#forceRender} during rendering\n\t\t\t * process,\n\t\t\t * * calling {@link module:engine/view/view~View#change} or {@link module:engine/view/view~View#forceRender} inside of\n\t\t\t * {@link module:engine/view/document~Document#registerPostFixer post-fixer function}.\n\t\t\t *\n\t\t\t * @error cannot-change-view-tree\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'cannot-change-view-tree',\n\t\t\t\tthis\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\t// Recursive call to view.change() method - execute listener immediately.\n\t\t\tif ( this._ongoingChange ) {\n\t\t\t\treturn callback( this._writer );\n\t\t\t}\n\n\t\t\t// This lock will assure that all recursive calls to view.change() will end up in same block - one \"render\"\n\t\t\t// event for all nested calls.\n\t\t\tthis._ongoingChange = true;\n\t\t\tconst callbackResult = callback( this._writer );\n\t\t\tthis._ongoingChange = false;\n\n\t\t\t// This lock is used by editing controller to render changes from outer most model.change() once. As plugins might call\n\t\t\t// view.change() inside model.change() block - this will ensures that postfixers and rendering are called once after all\n\t\t\t// changes. Also, we don't need to render anything if there're no changes since last rendering.\n\t\t\tif ( !this._renderingDisabled && this._hasChangedSinceTheLastRendering ) {\n\t\t\t\tthis._postFixersInProgress = true;\n\t\t\t\tthis.document._callPostFixers( this._writer );\n\t\t\t\tthis._postFixersInProgress = false;\n\n\t\t\t\tthis.fire<ViewRenderEvent>( 'render' );\n\t\t\t}\n\n\t\t\treturn callbackResult;\n\t\t} catch ( err: any ) {\n\t\t\t// @if CK_DEBUG // throw err;\n\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\tCKEditorError.rethrowUnexpectedError( err, this );\n\t\t}\n\t}\n\n\t/**\n\t * Forces rendering {@link module:engine/view/document~Document view document} to DOM. If any view changes are\n\t * currently in progress, rendering will start after all {@link #change change blocks} are processed.\n\t *\n\t * Note that this method is dedicated for special cases. All view changes should be wrapped in the {@link #change}\n\t * block and the view will automatically check whether it needs to render DOM or not.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `applying-view-changes-on-rendering` when\n\t * trying to re-render when rendering to DOM has already started.\n\t */\n\tpublic forceRender(): void {\n\t\tthis._hasChangedSinceTheLastRendering = true;\n\t\tthis.getObserver( FocusObserver ).flush();\n\t\tthis.change( () => {} );\n\t}\n\n\t/**\n\t * Destroys this instance. Makes sure that all observers are destroyed and listeners removed.\n\t */\n\tpublic destroy(): void {\n\t\tfor ( const observer of this._observers.values() ) {\n\t\t\tobserver.destroy();\n\t\t}\n\n\t\tthis.document.destroy();\n\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * Creates position at the given location. The location can be specified as:\n\t *\n\t * * a {@link module:engine/view/position~Position position},\n\t * * parent element and offset (offset defaults to `0`),\n\t * * parent element and `'end'` (sets position at the end of that element),\n\t * * {@link module:engine/view/item~Item view item} and `'before'` or `'after'` (sets position before or after given view item).\n\t *\n\t * This method is a shortcut to other constructors such as:\n\t *\n\t * * {@link #createPositionBefore},\n\t * * {@link #createPositionAfter},\n\t *\n\t * @param offset Offset or one of the flags. Used only when first parameter is a {@link module:engine/view/item~Item view item}.\n\t */\n\tpublic createPositionAt( itemOrPosition: Item | Position, offset?: PositionOffset ): Position {\n\t\treturn Position._createAt( itemOrPosition, offset );\n\t}\n\n\t/**\n\t * Creates a new position after given view item.\n\t *\n\t * @param item View item after which the position should be located.\n\t */\n\tpublic createPositionAfter( item: Item ): Position {\n\t\treturn Position._createAfter( item );\n\t}\n\n\t/**\n\t * Creates a new position before given view item.\n\t *\n\t * @param item View item before which the position should be located.\n\t */\n\tpublic createPositionBefore( item: Item ): Position {\n\t\treturn Position._createBefore( item );\n\t}\n\n\t/**\n\t * Creates a range spanning from `start` position to `end` position.\n\t *\n\t * **Note:** This factory method creates it's own {@link module:engine/view/position~Position} instances basing on passed values.\n\t *\n\t * @param start Start position.\n\t * @param end End position. If not set, range will be collapsed at `start` position.\n\t */\n\tpublic createRange( start: Position, end?: Position | null ): Range {\n\t\treturn new Range( start, end );\n\t}\n\n\t/**\n\t * Creates a range that starts before given {@link module:engine/view/item~Item view item} and ends after it.\n\t */\n\tpublic createRangeOn( item: Item ): Range {\n\t\treturn Range._createOn( item );\n\t}\n\n\t/**\n\t * Creates a range inside an {@link module:engine/view/element~Element element} which starts before the first child of\n\t * that element and ends after the last child of that element.\n\t *\n\t * @param element Element which is a parent for the range.\n\t */\n\tpublic createRangeIn( element: Element ): Range {\n\t\treturn Range._createIn( element );\n\t}\n\n\t/**\n\t * Creates new {@link module:engine/view/selection~Selection} instance.\n\t *\n\t * ```ts\n\t * // Creates collapsed selection at the position of given item and offset.\n\t * const paragraph = view.createContainerElement( 'paragraph' );\n\t * const selection = view.createSelection( paragraph, offset );\n\t *\n\t * // Creates a range inside an {@link module:engine/view/element~Element element} which starts before the\n\t * // first child of that element and ends after the last child of that element.\n\t * const selection = view.createSelection( paragraph, 'in' );\n\t *\n\t * // Creates a range on an {@link module:engine/view/item~Item item} which starts before the item and ends\n\t * // just after the item.\n\t * const selection = view.createSelection( paragraph, 'on' );\n\t * ```\n\t *\n\t * `Selection`'s factory method allow passing additional options (`backward`, `fake` and `label`) as the last argument.\n\t *\n\t * ```ts\n\t * // Creates backward selection.\n\t * const selection = view.createSelection( paragraph, 'in', { backward: true } );\n\t * ```\n\t *\n\t * Fake selection does not render as browser native selection over selected elements and is hidden to the user.\n\t * This way, no native selection UI artifacts are displayed to the user and selection over elements can be\n\t * represented in other way, for example by applying proper CSS class.\n\t *\n\t * Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM\n\t * (and be properly handled by screen readers).\n\t *\n\t * ```ts\n\t * // Creates fake selection with label.\n\t * const selection = view.createSelection( element, 'in', { fake: true, label: 'foo' } );\n\t * ```\n\t *\n\t * See also: {@link #createSelection:SELECTABLE `createSelection( selectable, options )`}.\n\t *\n\t * @label NODE_OFFSET\n\t */\n\tpublic createSelection( selectable: Node, placeOrOffset: PlaceOrOffset, options?: SelectionOptions ): Selection;\n\n\t/**\n\t * Creates new {@link module:engine/view/selection~Selection} instance.\n\t *\n\t * ```ts\n\t * // Creates empty selection without ranges.\n\t * const selection = view.createSelection();\n\t *\n\t * // Creates selection at the given range.\n\t * const range = view.createRange( start, end );\n\t * const selection = view.createSelection( range );\n\t *\n\t * // Creates selection at the given ranges\n\t * const ranges = [ view.createRange( start1, end2 ), view.createRange( star2, end2 ) ];\n\t * const selection = view.createSelection( ranges );\n\t *\n\t * // Creates selection from the other selection.\n\t * const otherSelection = view.createSelection();\n\t * const selection = view.createSelection( otherSelection );\n\t *\n\t * // Creates selection from the document selection.\n\t * const selection = view.createSelection( editor.editing.view.document.selection );\n\t *\n\t * // Creates selection at the given position.\n\t * const position = view.createPositionFromPath( root, path );\n\t * const selection = view.createSelection( position );\n\t * ```\n\t *\n\t * `Selection`'s factory method allow passing additional options (`backward`, `fake` and `label`) as the last argument.\n\t *\n\t * ```ts\n\t * // Creates backward selection.\n\t * const selection = view.createSelection( range, { backward: true } );\n\t * ```\n\t *\n\t * Fake selection does not render as browser native selection over selected elements and is hidden to the user.\n\t * This way, no native selection UI artifacts are displayed to the user and selection over elements can be\n\t * represented in other way, for example by applying proper CSS class.\n\t *\n\t * Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM\n\t * (and be properly handled by screen readers).\n\t *\n\t * ```ts\n\t * // Creates fake selection with label.\n\t * const selection = view.createSelection( range, { fake: true, label: 'foo' } );\n\t * ```\n\t *\n\t * See also: {@link #createSelection:NODE_OFFSET `createSelection( node, placeOrOffset, options )`}.\n\t *\n\t * @label SELECTABLE\n\t */\n\tpublic createSelection( selectable?: Exclude<Selectable, Node>, options?: SelectionOptions ): Selection;\n\n\tpublic createSelection( ...args: ConstructorParameters<typeof Selection> ): Selection {\n\t\treturn new Selection( ...args );\n\t}\n\n\t/**\n\t * Disables or enables rendering. If the flag is set to `true` then the rendering will be disabled.\n\t * If the flag is set to `false` and if there was some change in the meantime, then the rendering action will be performed.\n\t *\n\t * @internal\n\t * @param flag A flag indicates whether the rendering should be disabled.\n\t */\n\tpublic _disableRendering( flag: boolean ): void {\n\t\tthis._renderingDisabled = flag;\n\n\t\tif ( flag == false ) {\n\t\t\t// Render when you stop blocking rendering.\n\t\t\tthis.change( () => {} );\n\t\t}\n\t}\n\n\t/**\n\t * Renders all changes. In order to avoid triggering the observers (e.g. selection) all observers are disabled\n\t * before rendering and re-enabled after that.\n\t */\n\tprivate _render(): void {\n\t\tthis.isRenderingInProgress = true;\n\t\tthis.disableObservers();\n\t\tthis._renderer.render();\n\t\tthis.enableObservers();\n\t\tthis.isRenderingInProgress = false;\n\t}\n}\n\n/**\n * Fired after a topmost {@link module:engine/view/view~View#change change block} and all\n * {@link module:engine/view/document~Document#registerPostFixer post-fixers} are executed.\n *\n * Actual rendering is performed as a first listener on 'normal' priority.\n *\n * ```ts\n * view.on( 'render', () => {\n * \t// Rendering to the DOM is complete.\n * } );\n * ```\n *\n * This event is useful when you want to update interface elements after the rendering, e.g. position of the\n * balloon panel. If you wants to change view structure use\n * {@link module:engine/view/document~Document#registerPostFixer post-fixers}.\n *\n * @eventName ~View#render\n */\nexport type ViewRenderEvent = {\n\tname: 'render';\n\targs: [];\n};\n\n/**\n * An event fired at the moment of {@link module:engine/view/view~View#scrollToTheSelection} being called. It\n * carries two objects in its payload (`args`):\n *\n * * The first argument is the {@link module:engine/view/view~ViewScrollToTheSelectionEventData object containing data} that gets\n * passed down to the {@link module:utils/dom/scroll~scrollViewportToShowTarget} helper. If some event listener modifies it, it can\n * adjust the behavior of the scrolling (e.g. include additional `viewportOffset`).\n * * The second argument corresponds to the original arguments passed to {@link module:utils/dom/scroll~scrollViewportToShowTarget}.\n * It allows listeners to re-execute the `scrollViewportToShowTarget()` method with its original arguments if there is such a need,\n * for instance, if the integration requires re–scrolling after certain interaction.\n *\n * @eventName ~View#scrollToTheSelection\n */\nexport type ViewScrollToTheSelectionEvent = {\n\tname: 'scrollToTheSelection';\n\targs: [\n\t\tViewScrollToTheSelectionEventData,\n\t\tParameters<View[ 'scrollToTheSelection' ]>[ 0 ]\n\t];\n};\n\n/**\n * An object passed down to the {@link module:utils/dom/scroll~scrollViewportToShowTarget} helper while calling\n * {@link module:engine/view/view~View#scrollToTheSelection}.\n */\nexport type ViewScrollToTheSelectionEventData = {\n\ttarget: DomRange;\n\tviewportOffset: { top: number; bottom: number; left: number; right: number };\n\tancestorOffset: number;\n\talignToTop?: boolean;\n\tforceScroll?: boolean;\n};\n\n/**\n * Observers that are always registered.\n */\nexport type AlwaysRegisteredObservers =\n\t| typeof MutationObserver\n\t| typeof FocusObserver\n\t| typeof SelectionObserver\n\t| typeof KeyObserver\n\t| typeof FakeSelectionObserver\n\t| typeof CompositionObserver\n\t| typeof ArrowKeysObserver\n\t| typeof InputObserver\n\t| typeof TabObserver;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/typecheckable\n */\n\nimport type { Marker } from './markercollection';\nimport type DocumentFragment from './documentfragment';\nimport type DocumentSelection from './documentselection';\nimport type Element from './element';\nimport type LivePosition from './liveposition';\nimport type LiveRange from './liverange';\nimport type Node from './node';\nimport type Position from './position';\nimport type Range from './range';\nimport type RootElement from './rootelement';\nimport type Selection from './selection';\nimport type Text from './text';\nimport type TextProxy from './textproxy';\n\nexport default abstract class TypeCheckable {\n\t/**\n\t * Checks whether the object is of type {@link module:engine/model/node~Node} or its subclass.\n\t *\n\t * This method is useful when processing model objects that are of unknown type. For example, a function\n\t * may return a {@link module:engine/model/documentfragment~DocumentFragment} or a {@link module:engine/model/node~Node}\n\t * that can be either a text node or an element. This method can be used to check what kind of object is returned.\n\t *\n\t * ```ts\n\t * someObject.is( 'element' ); // -> true if this is an element\n\t * someObject.is( 'node' ); // -> true if this is a node (a text node or an element)\n\t * someObject.is( 'documentFragment' ); // -> true if this is a document fragment\n\t * ```\n\t *\n\t * Since this method is also available on a range of view objects, you can prefix the type of the object with\n\t * `model:` or `view:` to check, for example, if this is the model's or view's element:\n\t *\n\t * ```ts\n\t * modelElement.is( 'model:element' ); // -> true\n\t * modelElement.is( 'view:element' ); // -> false\n\t * ```\n\t *\n\t * By using this method it is also possible to check a name of an element:\n\t *\n\t * ```ts\n\t * imageElement.is( 'element', 'imageBlock' ); // -> true\n\t * imageElement.is( 'element', 'imageBlock' ); // -> same as above\n\t * imageElement.is( 'model:element', 'imageBlock' ); // -> same as above, but more precise\n\t * ```\n\t *\n\t * @label NODE\n\t */\n\tpublic is( type: 'node' | 'model:node' ): this is Node | Element | Text | RootElement;\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/model/element~Element} or its subclass.\n\t *\n\t * ```ts\n\t * element.is( 'element' ); // -> true\n\t * element.is( 'node' ); // -> true\n\t * element.is( 'model:element' ); // -> true\n\t * element.is( 'model:node' ); // -> true\n\t *\n\t * element.is( 'view:element' ); // -> false\n\t * element.is( 'documentSelection' ); // -> false\n\t * ```\n\t *\n\t * Assuming that the object being checked is an element, you can also check its\n\t * {@link module:engine/model/element~Element#name name}:\n\t *\n\t * ```ts\n\t * element.is( 'element', 'imageBlock' ); // -> true if this is an <imageBlock> element\n\t * text.is( 'element', 'imageBlock' ); -> false\n\t * ```\n\t *\n\t * @label ELEMENT\n\t */\n\tpublic is( type: 'element' | 'model:element' ): this is Element | RootElement;\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/model/rootelement~RootElement}.\n\t *\n\t * ```ts\n\t * rootElement.is( 'rootElement' ); // -> true\n\t * rootElement.is( 'element' ); // -> true\n\t * rootElement.is( 'node' ); // -> true\n\t * rootElement.is( 'model:rootElement' ); // -> true\n\t * rootElement.is( 'model:element' ); // -> true\n\t * rootElement.is( 'model:node' ); // -> true\n\t *\n\t * rootElement.is( 'view:element' ); // -> false\n\t * rootElement.is( 'documentFragment' ); // -> false\n\t * ```\n\t *\n\t * Assuming that the object being checked is an element, you can also check its\n\t * {@link module:engine/model/element~Element#name name}:\n\t *\n\t * ```ts\n\t * rootElement.is( 'rootElement', '$root' ); // -> same as above\n\t * ```\n\t *\n\t * @label ROOT_ELEMENT\n\t */\n\tpublic is( type: 'rootElement' | 'model:rootElement' ): this is RootElement;\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/model/text~Text}.\n\t *\n\t * ```ts\n\t * text.is( '$text' ); // -> true\n\t * text.is( 'node' ); // -> true\n\t * text.is( 'model:$text' ); // -> true\n\t * text.is( 'model:node' ); // -> true\n\t *\n\t * text.is( 'view:$text' ); // -> false\n\t * text.is( 'documentSelection' ); // -> false\n\t * ```\n\t *\n\t * **Note:** Until version 20.0.0 this method wasn't accepting `'$text'` type. The legacy `'text'` type is still\n\t * accepted for backward compatibility.\n\t *\n\t * @label TEXT\n\t */\n\tpublic is( type: '$text' | 'model:$text' ): this is Text;\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/model/position~Position} or its subclass.\n\t *\n\t * ```ts\n\t * position.is( 'position' ); // -> true\n\t * position.is( 'model:position' ); // -> true\n\t *\n\t * position.is( 'view:position' ); // -> false\n\t * position.is( 'documentSelection' ); // -> false\n\t * ```\n\t *\n\t * @label POSITION\n\t */\n\tpublic is( type: 'position' | 'model:position' ): this is Position | LivePosition;\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/model/liveposition~LivePosition}.\n\t *\n\t * ```ts\n\t * livePosition.is( 'position' ); // -> true\n\t * livePosition.is( 'model:position' ); // -> true\n\t * livePosition.is( 'liveposition' ); // -> true\n\t * livePosition.is( 'model:livePosition' ); // -> true\n\t *\n\t * livePosition.is( 'view:position' ); // -> false\n\t * livePosition.is( 'documentSelection' ); // -> false\n\t * ```\n\t *\n\t * @label LIVE_POSITION\n\t */\n\tpublic is( type: 'livePosition' | 'model:livePosition' ): this is LivePosition;\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/model/range~Range} or its subclass.\n\t *\n\t * ```ts\n\t * range.is( 'range' ); // -> true\n\t * range.is( 'model:range' ); // -> true\n\t *\n\t * range.is( 'view:range' ); // -> false\n\t * range.is( 'documentSelection' ); // -> false\n\t * ```\n\t *\n\t * @label RANGE\n\t */\n\tpublic is( type: 'range' | 'model:range' ): this is Range | LiveRange;\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/model/liverange~LiveRange}.\n\t *\n\t * ```ts\n\t * liveRange.is( 'range' ); // -> true\n\t * liveRange.is( 'model:range' ); // -> true\n\t * liveRange.is( 'liveRange' ); // -> true\n\t * liveRange.is( 'model:liveRange' ); // -> true\n\t *\n\t * liveRange.is( 'view:range' ); // -> false\n\t * liveRange.is( 'documentSelection' ); // -> false\n\t * ```\n\t *\n\t * @label LIVE_RANGE\n\t */\n\tpublic is( type: 'liveRange' | 'model:liveRange' ): this is LiveRange;\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/model/documentfragment~DocumentFragment}.\n\t *\n\t * ```ts\n\t * docFrag.is( 'documentFragment' ); // -> true\n\t * docFrag.is( 'model:documentFragment' ); // -> true\n\t *\n\t * docFrag.is( 'view:documentFragment' ); // -> false\n\t * docFrag.is( 'element' ); // -> false\n\t * docFrag.is( 'node' ); // -> false\n\t * ```\n\t *\n\t * @label DOCUMENT_FRAGMENT\n\t */\n\tpublic is( type: 'documentFragment' | 'model:documentFragment' ): this is DocumentFragment;\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/model/selection~Selection}\n\t * or {@link module:engine/model/documentselection~DocumentSelection}.\n\t *\n\t * ```ts\n\t * selection.is( 'selection' ); // -> true\n\t * selection.is( 'model:selection' ); // -> true\n\t *\n\t * selection.is( 'view:selection' ); // -> false\n\t * selection.is( 'range' ); // -> false\n\t * ```\n\t *\n\t * @label SELECTION\n\t */\n\tpublic is( type: 'selection' | 'model:selection' ): this is Selection | DocumentSelection;\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/model/documentselection~DocumentSelection}.\n\t *\n\t * ```ts\n\t * selection.is( 'selection' ); // -> true\n\t * selection.is( 'documentSelection' ); // -> true\n\t * selection.is( 'model:selection' ); // -> true\n\t * selection.is( 'model:documentSelection' ); // -> true\n\t *\n\t * selection.is( 'view:selection' ); // -> false\n\t * selection.is( 'element' ); // -> false\n\t * selection.is( 'node' ); // -> false\n\t * ```\n\t *\n\t * @label DOCUMENT_SELECTION\n\t */\n\tpublic is( type: 'documentSelection' | 'model:documentSelection' ): this is DocumentSelection;\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/model/markercollection~Marker}.\n\t *\n\t * ```ts\n\t * marker.is( 'marker' ); // -> true\n\t * marker.is( 'model:marker' ); // -> true\n\t *\n\t * marker.is( 'view:element' ); // -> false\n\t * marker.is( 'documentSelection' ); // -> false\n\t * ```\n\t *\n\t * @label MARKER\n\t */\n\tpublic is( type: 'marker' | 'model:marker' ): this is Marker;\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/model/textproxy~TextProxy}.\n\t *\n\t * ```ts\n\t * textProxy.is( '$textProxy' ); // -> true\n\t * textProxy.is( 'model:$textProxy' ); // -> true\n\t *\n\t * textProxy.is( 'view:$textProxy' ); // -> false\n\t * textProxy.is( 'range' ); // -> false\n\t * ```\n\t *\n\t * **Note:** Until version 20.0.0 this method wasn't accepting `'$textProxy'` type. The legacy `'textProxt'` type is still\n\t * accepted for backward compatibility.\n\t *\n\t * @label TEXT_PROXY\n\t */\n\tpublic is( type: '$textProxy' | 'model:$textProxy' ): this is TextProxy;\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/model/element~Element} or its subclass and has the specified `name`.\n\t *\n\t * ```ts\n\t * element.is( 'element', 'imageBlock' ); // -> true if this is an <imageBlock> element\n\t * text.is( 'element', 'imageBlock' ); -> false\n\t * ```\n\t *\n\t * @label ELEMENT_NAME\n\t */\n\tpublic is<N extends string>( type: 'element' | 'model:element', name: N ): this is ( Element | RootElement ) & { name: N };\n\n\t/**\n\t * Checks whether the object is of type {@link module:engine/model/rootelement~RootElement} and has the specified `name`.\n\t *\n\t * ```ts\n\t * rootElement.is( 'rootElement', '$root' );\n\t * ```\n\t *\n\t * @label ROOT_ELEMENT_NAME\n\t */\n\tpublic is<N extends string>( type: 'rootElement' | 'model:rootElement', name: N ): this is RootElement & { name: N };\n\n\t/* istanbul ignore next -- @preserve */\n\tpublic is(): boolean {\n\t\t// There are a lot of overloads above.\n\t\t// Overriding method in derived classes remove them and only `is( type: string ): boolean` is visible which we don't want.\n\t\t// One option would be to copy them all to all classes, but that's ugly.\n\t\t// It's best when TypeScript compiler doesn't see those overloads, except the one in the top base class.\n\t\t// To overload a method, but not let the compiler see it, do after class definition:\n\t\t// `MyClass.prototype.is = function( type: string ) {...}`\n\t\tthrow new Error( 'is() method is abstract' );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\n\n/**\n * @module engine/model/node\n */\n\nimport TypeCheckable from './typecheckable';\n\nimport type Document from './document';\nimport type DocumentFragment from './documentfragment';\nimport type Element from './element';\n\nimport { CKEditorError, compareArrays, toMap } from '@ckeditor/ckeditor5-utils';\n\n// To check if component is loaded more than once.\nimport '@ckeditor/ckeditor5-utils/src/version';\n\n/**\n * Model node. Most basic structure of model tree.\n *\n * This is an abstract class that is a base for other classes representing different nodes in model.\n *\n * **Note:** If a node is detached from the model tree, you can manipulate it using it's API.\n * However, it is **very important** that nodes already attached to model tree should be only changed through\n * {@link module:engine/model/writer~Writer Writer API}.\n *\n * Changes done by `Node` methods, like {@link module:engine/model/element~Element#_insertChild _insertChild} or\n * {@link module:engine/model/node~Node#_setAttribute _setAttribute}\n * do not generate {@link module:engine/model/operation/operation~Operation operations}\n * which are essential for correct editor work if you modify nodes in {@link module:engine/model/document~Document document} root.\n *\n * The flow of working on `Node` (and classes that inherits from it) is as such:\n * 1. You can create a `Node` instance, modify it using it's API.\n * 2. Add `Node` to the model using `Batch` API.\n * 3. Change `Node` that was already added to the model using `Batch` API.\n *\n * Similarly, you cannot use `Batch` API on a node that has not been added to the model tree, with the exception\n * of {@link module:engine/model/writer~Writer#insert inserting} that node to the model tree.\n *\n * Be aware that using {@link module:engine/model/writer~Writer#remove remove from Batch API} does not allow to use `Node` API because\n * the information about `Node` is still kept in model document.\n *\n * In case of {@link module:engine/model/element~Element element node}, adding and removing children also counts as changing a node and\n * follows same rules.\n */\nexport default abstract class Node extends TypeCheckable {\n\t/**\n\t * Parent of this node. It could be {@link module:engine/model/element~Element}\n\t * or {@link module:engine/model/documentfragment~DocumentFragment}.\n\t * Equals to `null` if the node has no parent.\n\t */\n\tpublic readonly parent: Element | DocumentFragment | null = null;\n\n\t/**\n\t * Unique root name used to identify this root element by {@link module:engine/model/document~Document}.\n\t */\n\tdeclare public readonly rootName: string | undefined;\n\n\t/**\n\t * Attributes set on this node.\n\t */\n\tprivate _attrs: Map<string, unknown>;\n\n\t/**\n\t * Creates a model node.\n\t *\n\t * This is an abstract class, so this constructor should not be used directly.\n\t *\n\t * @param attrs Node's attributes. See {@link module:utils/tomap~toMap} for a list of accepted values.\n\t */\n\tconstructor( attrs?: NodeAttributes ) {\n\t\tsuper();\n\n\t\tthis._attrs = toMap( attrs! );\n\t}\n\n\t/**\n\t * {@link module:engine/model/document~Document Document} that owns this root element.\n\t */\n\tpublic get document(): Document | null {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Index of this node in its parent or `null` if the node has no parent.\n\t *\n\t * Accessing this property throws an error if this node's parent element does not contain it.\n\t * This means that model tree got broken.\n\t */\n\tpublic get index(): number | null {\n\t\tlet pos;\n\n\t\tif ( !this.parent ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( ( pos = this.parent.getChildIndex( this ) ) === null ) {\n\t\t\tthrow new CKEditorError( 'model-node-not-found-in-parent', this );\n\t\t}\n\n\t\treturn pos;\n\t}\n\n\t/**\n\t * Offset at which this node starts in its parent. It is equal to the sum of {@link #offsetSize offsetSize}\n\t * of all its previous siblings. Equals to `null` if node has no parent.\n\t *\n\t * Accessing this property throws an error if this node's parent element does not contain it.\n\t * This means that model tree got broken.\n\t */\n\tpublic get startOffset(): number | null {\n\t\tlet pos;\n\n\t\tif ( !this.parent ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( ( pos = this.parent.getChildStartOffset( this ) ) === null ) {\n\t\t\tthrow new CKEditorError( 'model-node-not-found-in-parent', this );\n\t\t}\n\n\t\treturn pos;\n\t}\n\n\t/**\n\t * Offset size of this node. Represents how much \"offset space\" is occupied by the node in it's parent.\n\t * It is important for {@link module:engine/model/position~Position position}. When node has `offsetSize` greater than `1`, position\n\t * can be placed between that node start and end. `offsetSize` greater than `1` is for nodes that represents more\n\t * than one entity, i.e. {@link module:engine/model/text~Text text node}.\n\t */\n\tpublic get offsetSize(): number {\n\t\treturn 1;\n\t}\n\n\t/**\n\t * Offset at which this node ends in it's parent. It is equal to the sum of this node's\n\t * {@link module:engine/model/node~Node#startOffset start offset} and {@link #offsetSize offset size}.\n\t * Equals to `null` if the node has no parent.\n\t */\n\tpublic get endOffset(): number | null {\n\t\tif ( !this.parent ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this.startOffset! + this.offsetSize;\n\t}\n\n\t/**\n\t * Node's next sibling or `null` if the node is a last child of it's parent or if the node has no parent.\n\t */\n\tpublic get nextSibling(): Node | null {\n\t\tconst index = this.index;\n\n\t\treturn ( index !== null && this.parent!.getChild( index + 1 ) ) || null;\n\t}\n\n\t/**\n\t * Node's previous sibling or `null` if the node is a first child of it's parent or if the node has no parent.\n\t */\n\tpublic get previousSibling(): Node | null {\n\t\tconst index = this.index;\n\n\t\treturn ( index !== null && this.parent!.getChild( index - 1 ) ) || null;\n\t}\n\n\t/**\n\t * The top-most ancestor of the node. If node has no parent it is the root itself. If the node is a part\n\t * of {@link module:engine/model/documentfragment~DocumentFragment}, it's `root` is equal to that `DocumentFragment`.\n\t */\n\tpublic get root(): Node | DocumentFragment {\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n\t\tlet root: Node | DocumentFragment = this;\n\n\t\twhile ( root.parent ) {\n\t\t\troot = root.parent;\n\t\t}\n\n\t\treturn root;\n\t}\n\n\t/**\n\t * Returns `true` if the node is inside a document root that is attached to the document.\n\t */\n\tpublic isAttached(): boolean {\n\t\t// If the node has no parent it means that it is a root.\n\t\t// But this is not a `RootElement`, so it means that it is not attached.\n\t\t//\n\t\t// If this is not the root, check if this element's root is attached.\n\t\treturn this.parent === null ? false : this.root.isAttached();\n\t}\n\n\t/**\n\t * Gets path to the node. The path is an array containing starting offsets of consecutive ancestors of this node,\n\t * beginning from {@link module:engine/model/node~Node#root root}, down to this node's starting offset. The path can be used to\n\t * create {@link module:engine/model/position~Position Position} instance.\n\t *\n\t * ```ts\n\t * const abc = new Text( 'abc' );\n\t * const foo = new Text( 'foo' );\n\t * const h1 = new Element( 'h1', null, new Text( 'header' ) );\n\t * const p = new Element( 'p', null, [ abc, foo ] );\n\t * const div = new Element( 'div', null, [ h1, p ] );\n\t * foo.getPath(); // Returns [ 1, 3 ]. `foo` is in `p` which is in `div`. `p` starts at offset 1, while `foo` at 3.\n\t * h1.getPath(); // Returns [ 0 ].\n\t * div.getPath(); // Returns [].\n\t * ```\n\t */\n\tpublic getPath(): Array<number> {\n\t\tconst path = [];\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n\t\tlet node: Node | DocumentFragment = this;\n\n\t\twhile ( node.parent ) {\n\t\t\tpath.unshift( node.startOffset! );\n\t\t\tnode = node.parent;\n\t\t}\n\n\t\treturn path;\n\t}\n\n\t/**\n\t * Returns ancestors array of this node.\n\t *\n\t * @param options Options object.\n\t * @param options.includeSelf When set to `true` this node will be also included in parent's array.\n\t * @param options.parentFirst When set to `true`, array will be sorted from node's parent to root element,\n\t * otherwise root element will be the first item in the array.\n\t * @returns Array with ancestors.\n\t */\n\tpublic getAncestors( options: { includeSelf?: boolean; parentFirst?: boolean } = {} ): Array<Node | DocumentFragment> {\n\t\tconst ancestors: Array<Node | DocumentFragment> = [];\n\t\tlet parent = options.includeSelf ? this : this.parent;\n\n\t\twhile ( parent ) {\n\t\t\tancestors[ options.parentFirst ? 'push' : 'unshift' ]( parent );\n\t\t\tparent = parent.parent;\n\t\t}\n\n\t\treturn ancestors;\n\t}\n\n\t/**\n\t * Returns a {@link module:engine/model/element~Element} or {@link module:engine/model/documentfragment~DocumentFragment}\n\t * which is a common ancestor of both nodes.\n\t *\n\t * @param node The second node.\n\t * @param options Options object.\n\t * @param options.includeSelf When set to `true` both nodes will be considered \"ancestors\" too.\n\t * Which means that if e.g. node A is inside B, then their common ancestor will be B.\n\t */\n\tpublic getCommonAncestor( node: Node, options: { includeSelf?: boolean } = {} ): Element | DocumentFragment | null {\n\t\tconst ancestorsA = this.getAncestors( options );\n\t\tconst ancestorsB = node.getAncestors( options );\n\n\t\tlet i = 0;\n\n\t\twhile ( ancestorsA[ i ] == ancestorsB[ i ] && ancestorsA[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i === 0 ? null : ancestorsA[ i - 1 ] as ( Element | DocumentFragment );\n\t}\n\n\t/**\n\t * Returns whether this node is before given node. `false` is returned if nodes are in different trees (for example,\n\t * in different {@link module:engine/model/documentfragment~DocumentFragment}s).\n\t *\n\t * @param node Node to compare with.\n\t */\n\tpublic isBefore( node: Node ): boolean {\n\t\t// Given node is not before this node if they are same.\n\t\tif ( this == node ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Return `false` if it is impossible to compare nodes.\n\t\tif ( this.root !== node.root ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst thisPath = this.getPath();\n\t\tconst nodePath = node.getPath();\n\n\t\tconst result = compareArrays( thisPath, nodePath );\n\n\t\tswitch ( result ) {\n\t\t\tcase 'prefix':\n\t\t\t\treturn true;\n\n\t\t\tcase 'extension':\n\t\t\t\treturn false;\n\n\t\t\tdefault:\n\t\t\t\treturn thisPath[ result as number ] < nodePath[ result as number ];\n\t\t}\n\t}\n\n\t/**\n\t * Returns whether this node is after given node. `false` is returned if nodes are in different trees (for example,\n\t * in different {@link module:engine/model/documentfragment~DocumentFragment}s).\n\t *\n\t * @param node Node to compare with.\n\t */\n\tpublic isAfter( node: Node ): boolean {\n\t\t// Given node is not before this node if they are same.\n\t\tif ( this == node ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Return `false` if it is impossible to compare nodes.\n\t\tif ( this.root !== node.root ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// In other cases, just check if the `node` is before, and return the opposite.\n\t\treturn !this.isBefore( node );\n\t}\n\n\t/**\n\t * Checks if the node has an attribute with given key.\n\t *\n\t * @param key Key of attribute to check.\n\t * @returns `true` if attribute with given key is set on node, `false` otherwise.\n\t */\n\tpublic hasAttribute( key: string ): boolean {\n\t\treturn this._attrs.has( key );\n\t}\n\n\t/**\n\t * Gets an attribute value for given key or `undefined` if that attribute is not set on node.\n\t *\n\t * @param key Key of attribute to look for.\n\t * @returns Attribute value or `undefined`.\n\t */\n\tpublic getAttribute( key: string ): unknown {\n\t\treturn this._attrs.get( key );\n\t}\n\n\t/**\n\t * Returns iterator that iterates over this node's attributes.\n\t *\n\t * Attributes are returned as arrays containing two items. First one is attribute key and second is attribute value.\n\t * This format is accepted by native `Map` object and also can be passed in `Node` constructor.\n\t */\n\tpublic getAttributes(): IterableIterator<[ string, unknown ]> {\n\t\treturn this._attrs.entries();\n\t}\n\n\t/**\n\t * Returns iterator that iterates over this node's attribute keys.\n\t */\n\tpublic getAttributeKeys(): IterableIterator<string> {\n\t\treturn this._attrs.keys();\n\t}\n\n\t/**\n\t * Converts `Node` to plain object and returns it.\n\t *\n\t * @returns `Node` converted to plain object.\n\t */\n\tpublic toJSON(): unknown {\n\t\tconst json: any = {};\n\n\t\t// Serializes attributes to the object.\n\t\t// attributes = { a: 'foo', b: 1, c: true }.\n\t\tif ( this._attrs.size ) {\n\t\t\tjson.attributes = Array.from( this._attrs ).reduce( ( result, attr ) => {\n\t\t\t\tresult[ attr[ 0 ] ] = attr[ 1 ];\n\n\t\t\t\treturn result;\n\t\t\t}, {} as any );\n\t\t}\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * Creates a copy of this node, that is a node with exactly same attributes, and returns it.\n\t *\n\t * @internal\n\t * @returns Node with same attributes as this node.\n\t */\n\tpublic _clone( _deep?: boolean ): Node {\n\t\treturn new ( this.constructor as any )( this._attrs );\n\t}\n\n\t/**\n\t * Removes this node from it's parent.\n\t *\n\t * @internal\n\t * @see module:engine/model/writer~Writer#remove\n\t */\n\tpublic _remove(): void {\n\t\tthis.parent!._removeChildren( this.index! );\n\t}\n\n\t/**\n\t * Sets attribute on the node. If attribute with the same key already is set, it's value is overwritten.\n\t *\n\t * @see module:engine/model/writer~Writer#setAttribute\n\t * @internal\n\t * @param key Key of attribute to set.\n\t * @param value Attribute value.\n\t */\n\tpublic _setAttribute( key: string, value: unknown ): void {\n\t\tthis._attrs.set( key, value );\n\t}\n\n\t/**\n\t * Removes all attributes from the node and sets given attributes.\n\t *\n\t * @see module:engine/model/writer~Writer#setAttributes\n\t * @internal\n\t * @param attrs Attributes to set. See {@link module:utils/tomap~toMap} for a list of accepted values.\n\t */\n\tpublic _setAttributesTo( attrs: NodeAttributes ): void {\n\t\tthis._attrs = toMap( attrs );\n\t}\n\n\t/**\n\t * Removes an attribute with given key from the node.\n\t *\n\t * @see module:engine/model/writer~Writer#removeAttribute\n\t * @internal\n\t * @param key Key of attribute to remove.\n\t * @returns `true` if the attribute was set on the element, `false` otherwise.\n\t */\n\tpublic _removeAttribute( key: string ): boolean {\n\t\treturn this._attrs.delete( key );\n\t}\n\n\t/**\n\t * Removes all attributes from the node.\n\t *\n\t * @see module:engine/model/writer~Writer#clearAttributes\n\t * @internal\n\t */\n\tpublic _clearAttributes(): void {\n\t\tthis._attrs.clear();\n\t}\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nNode.prototype.is = function( type: string ): boolean {\n\treturn type === 'node' || type === 'model:node';\n};\n\n/**\n * The node's parent does not contain this node.\n *\n * @error model-node-not-found-in-parent\n */\n\n/**\n * Node's attributes. See {@link module:utils/tomap~toMap} for a list of accepted values.\n */\nexport type NodeAttributes = Record<string, unknown> | Iterable<[ string, unknown ]>;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/nodelist\n */\n\nimport Node from './node';\n\nimport { CKEditorError, spliceArray } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Provides an interface to operate on a list of {@link module:engine/model/node~Node nodes}. `NodeList` is used internally\n * in classes like {@link module:engine/model/element~Element Element}\n * or {@link module:engine/model/documentfragment~DocumentFragment DocumentFragment}.\n */\nexport default class NodeList implements Iterable<Node> {\n\t/**\n\t * Nodes contained in this node list.\n\t */\n\tprivate _nodes: Array<Node> = [];\n\n\t/**\n\t * Creates an empty node list.\n\t *\n\t * @internal\n\t * @param nodes Nodes contained in this node list.\n\t */\n\tconstructor( nodes?: Iterable<Node> ) {\n\t\tif ( nodes ) {\n\t\t\tthis._insertNodes( 0, nodes );\n\t\t}\n\t}\n\n\t/**\n\t * Iterable interface.\n\t *\n\t * Iterates over all nodes contained inside this node list.\n\t */\n\tpublic [ Symbol.iterator ](): IterableIterator<Node> {\n\t\treturn this._nodes[ Symbol.iterator ]();\n\t}\n\n\t/**\n\t * Number of nodes contained inside this node list.\n\t */\n\tpublic get length(): number {\n\t\treturn this._nodes.length;\n\t}\n\n\t/**\n\t * Sum of {@link module:engine/model/node~Node#offsetSize offset sizes} of all nodes contained inside this node list.\n\t */\n\tpublic get maxOffset(): number {\n\t\treturn this._nodes.reduce( ( sum, node ) => sum + node.offsetSize, 0 );\n\t}\n\n\t/**\n\t * Gets the node at the given index. Returns `null` if incorrect index was passed.\n\t */\n\tpublic getNode( index: number ): Node | null {\n\t\treturn this._nodes[ index ] || null;\n\t}\n\n\t/**\n\t * Returns an index of the given node. Returns `null` if given node is not inside this node list.\n\t */\n\tpublic getNodeIndex( node: Node ): number | null {\n\t\tconst index = this._nodes.indexOf( node );\n\n\t\treturn index == -1 ? null : index;\n\t}\n\n\t/**\n\t * Returns the starting offset of given node. Starting offset is equal to the sum of\n\t * {@link module:engine/model/node~Node#offsetSize offset sizes} of all nodes that are before this node in this node list.\n\t */\n\tpublic getNodeStartOffset( node: Node ): number | null {\n\t\tconst index = this.getNodeIndex( node );\n\n\t\treturn index === null ? null : this._nodes.slice( 0, index ).reduce( ( sum, node ) => sum + node.offsetSize, 0 );\n\t}\n\n\t/**\n\t * Converts index to offset in node list.\n\t *\n\t * Returns starting offset of a node that is at given index. Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError}\n\t * `model-nodelist-index-out-of-bounds` if given index is less than `0` or more than {@link #length}.\n\t */\n\tpublic indexToOffset( index: number ): number {\n\t\tif ( index == this._nodes.length ) {\n\t\t\treturn this.maxOffset;\n\t\t}\n\n\t\tconst node = this._nodes[ index ];\n\n\t\tif ( !node ) {\n\t\t\t/**\n\t\t\t * Given index cannot be found in the node list.\n\t\t\t *\n\t\t\t * @error model-nodelist-index-out-of-bounds\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-nodelist-index-out-of-bounds', this );\n\t\t}\n\n\t\treturn this.getNodeStartOffset( node )!;\n\t}\n\n\t/**\n\t * Converts offset in node list to index.\n\t *\n\t * Returns index of a node that occupies given offset. Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError}\n\t * `model-nodelist-offset-out-of-bounds` if given offset is less than `0` or more than {@link #maxOffset}.\n\t */\n\tpublic offsetToIndex( offset: number ): number {\n\t\tlet totalOffset = 0;\n\n\t\tfor ( const node of this._nodes ) {\n\t\t\tif ( offset >= totalOffset && offset < totalOffset + node.offsetSize ) {\n\t\t\t\treturn this.getNodeIndex( node )!;\n\t\t\t}\n\n\t\t\ttotalOffset += node.offsetSize;\n\t\t}\n\n\t\tif ( totalOffset != offset ) {\n\t\t\t/**\n\t\t\t * Given offset cannot be found in the node list.\n\t\t\t *\n\t\t\t * @error model-nodelist-offset-out-of-bounds\n\t\t\t * @param offset\n\t\t\t * @param nodeList Stringified node list.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-nodelist-offset-out-of-bounds',\n\t\t\t\tthis,\n\t\t\t\t{\n\t\t\t\t\toffset,\n\t\t\t\t\tnodeList: this\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\treturn this.length;\n\t}\n\n\t/**\n\t * Inserts given nodes at given index.\n\t *\n\t * @internal\n\t * @param index Index at which nodes should be inserted.\n\t * @param nodes Nodes to be inserted.\n\t */\n\tpublic _insertNodes( index: number, nodes: Iterable<Node> ): void {\n\t\t// Validation.\n\t\tfor ( const node of nodes ) {\n\t\t\tif ( !( node instanceof Node ) ) {\n\t\t\t\t/**\n\t\t\t\t * Trying to insert an object which is not a Node instance.\n\t\t\t\t *\n\t\t\t\t * @error model-nodelist-insertnodes-not-node\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'model-nodelist-insertnodes-not-node', this );\n\t\t\t}\n\t\t}\n\n\t\tthis._nodes = spliceArray<Node>( this._nodes, Array.from( nodes ), index, 0 );\n\t}\n\n\t/**\n\t * Removes one or more nodes starting at the given index.\n\t *\n\t * @internal\n\t * @param indexStart Index of the first node to remove.\n\t * @param howMany Number of nodes to remove.\n\t * @returns Array containing removed nodes.\n\t */\n\tpublic _removeNodes( indexStart: number, howMany: number = 1 ): Array<Node> {\n\t\treturn this._nodes.splice( indexStart, howMany );\n\t}\n\n\t/**\n\t * Converts `NodeList` instance to an array containing nodes that were inserted in the node list. Nodes\n\t * are also converted to their plain object representation.\n\t *\n\t * @returns `NodeList` instance converted to `Array`.\n\t */\n\tpublic toJSON(): unknown {\n\t\treturn this._nodes.map( node => node.toJSON() );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/splicearray\n */\n\nconst BIG_CHUNK_SIZE = 10000;\n\n/**\n * Splices one array into another. To be used instead of `Array.prototype.splice` as the latter may\n * throw \"Maximum call stack size exceeded\" when passed huge number of items to insert.\n *\n * Note: in contrary to Array.splice, this function does not modify the original `target`.\n *\n * ```ts\n * spliceArray( [ 1, 2 ], [ 3, 4 ], 0, 0 );\t// [ 3, 4, 1, 2 ]\n * spliceArray( [ 1, 2 ], [ 3, 4 ], 1, 1 );\t// [ 1, 3, 4 ]\n * spliceArray( [ 1, 2 ], [ 3, 4 ], 1, 0 );\t// [ 1, 3, 4, 2 ]\n * spliceArray( [ 1, 2 ], [ 3, 4 ], 2, 0 );\t// [ 1, 2, 3, 4 ]\n * spliceArray( [ 1, 2 ], [], 0, 1 );\t// [ 2 ]\n * ```\n *\n * @param target Array to be spliced.\n * @param source Array of elements to be inserted to target.\n * @param start Index at which nodes should be inserted/removed.\n * @param count Number of items.\n *\n * @returns New spliced array.\n */\nexport default function spliceArray<T>( target: Array<T>, source: Array<T>, start: number, count: number ): Array<T> {\n\t// In case of performance problems, see: https://github.com/ckeditor/ckeditor5/pull/12429/files#r965850568\n\tif ( Math.max( source.length, target.length ) > BIG_CHUNK_SIZE ) {\n\t\treturn target.slice( 0, start ).concat( source ).concat( target.slice( start + count, target.length ) );\n\t} else {\n\t\tconst newTarget = Array.from( target );\n\t\tnewTarget.splice( start, count, ...source );\n\n\t\treturn newTarget;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/text\n */\n\nimport Node, { type NodeAttributes } from './node';\n\n// @if CK_DEBUG_ENGINE // const { convertMapToStringifiedObject } = require( '../dev-utils/utils' );\n\n/**\n * Model text node. Type of {@link module:engine/model/node~Node node} that contains {@link module:engine/model/text~Text#data text data}.\n *\n * **Important:** see {@link module:engine/model/node~Node} to read about restrictions using `Text` and `Node` API.\n *\n * **Note:** keep in mind that `Text` instances might indirectly got removed from model tree when model is changed.\n * This happens when {@link module:engine/model/writer~Writer model writer} is used to change model and the text node is merged with\n * another text node. Then, both text nodes are removed and a new text node is inserted into the model. Because of\n * this behavior, keeping references to `Text` is not recommended. Instead, consider creating\n * {@link module:engine/model/liveposition~LivePosition live position} placed before the text node.\n */\nexport default class Text extends Node {\n\t/**\n\t * Text data contained in this text node.\n\t *\n\t * @internal\n\t */\n\tpublic _data: string;\n\n\t/**\n\t * Creates a text node.\n\t *\n\t * **Note:** Constructor of this class shouldn't be used directly in the code.\n\t * Use the {@link module:engine/model/writer~Writer#createText} method instead.\n\t *\n\t * @internal\n\t * @param data Node's text.\n\t * @param attrs Node's attributes. See {@link module:utils/tomap~toMap} for a list of accepted values.\n\t */\n\tconstructor( data?: string, attrs?: NodeAttributes ) {\n\t\tsuper( attrs );\n\t\tthis._data = data || '';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override get offsetSize(): number {\n\t\treturn this.data.length;\n\t}\n\n\t/**\n\t * Returns a text data contained in the node.\n\t */\n\tpublic get data(): string {\n\t\treturn this._data;\n\t}\n\n\t/**\n\t * Converts `Text` instance to plain object and returns it.\n\t *\n\t * @returns`Text` instance converted to plain object.\n\t */\n\tpublic override toJSON(): unknown {\n\t\tconst json: any = super.toJSON();\n\n\t\tjson.data = this.data;\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * Creates a copy of this text node and returns it. Created text node has same text data and attributes as original text node.\n\t *\n\t * @internal\n\t * @returns `Text` instance created using given plain object.\n\t */\n\tpublic override _clone(): Text {\n\t\treturn new Text( this.data, this.getAttributes() );\n\t}\n\n\t/**\n\t * Creates a `Text` instance from given plain object (i.e. parsed JSON string).\n\t *\n\t * @param json Plain object to be converted to `Text`.\n\t * @returns `Text` instance created using given plain object.\n\t */\n\tpublic static fromJSON( json: any ): Text {\n\t\treturn new Text( json.data, json.attributes );\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \treturn `#${ this.data }`;\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public logExtended(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( `ModelText: ${ this }, attrs: ${ convertMapToStringifiedObject( this.getAttributes() ) }` );\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public log(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( 'ModelText: ' + this );\n\t// @if CK_DEBUG_ENGINE // }\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nText.prototype.is = function( type: string ): boolean {\n\treturn type === '$text' || type === 'model:$text' ||\n\t\t// This are legacy values kept for backward compatibility.\n\t\ttype === 'text' || type === 'model:text' ||\n\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\ttype === 'node' || type === 'model:node';\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/textproxy\n */\n\nimport TypeCheckable from './typecheckable';\nimport type DocumentFragment from './documentfragment';\nimport type Element from './element';\nimport type Node from './node';\nimport type Text from './text';\n\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\n\n// @if CK_DEBUG_ENGINE // const { convertMapToStringifiedObject } = require( '../dev-utils/utils' );\n\n/**\n * `TextProxy` represents a part of {@link module:engine/model/text~Text text node}.\n *\n * Since {@link module:engine/model/position~Position positions} can be placed between characters of a text node,\n * {@link module:engine/model/range~Range ranges} may contain only parts of text nodes. When {@link module:engine/model/range~Range#getItems\n * getting items}\n * contained in such range, we need to represent a part of that text node, since returning the whole text node would be incorrect.\n * `TextProxy` solves this issue.\n *\n * `TextProxy` has an API similar to {@link module:engine/model/text~Text Text} and allows to do most of the common tasks performed\n * on model nodes.\n *\n * **Note:** Some `TextProxy` instances may represent whole text node, not just a part of it.\n * See {@link module:engine/model/textproxy~TextProxy#isPartial}.\n *\n * **Note:** `TextProxy` is not an instance of {@link module:engine/model/node~Node node}. Keep this in mind when using it as a\n * parameter of methods.\n *\n * **Note:** `TextProxy` is a readonly interface. If you want to perform changes on model data represented by a `TextProxy`\n * use {@link module:engine/model/writer~Writer model writer API}.\n *\n * **Note:** `TextProxy` instances are created on the fly, basing on the current state of model. Because of this, it is\n * highly unrecommended to store references to `TextProxy` instances. `TextProxy` instances are not refreshed when\n * model changes, so they might get invalidated. Instead, consider creating {@link module:engine/model/liveposition~LivePosition live\n * position}.\n *\n * `TextProxy` instances are created by {@link module:engine/model/treewalker~TreeWalker model tree walker}. You should not need to create\n * an instance of this class by your own.\n */\nexport default class TextProxy extends TypeCheckable {\n\t/**\n\t * Text node which part is represented by this text proxy.\n\t */\n\tpublic readonly textNode: Text;\n\n\t/**\n\t * Text data represented by this text proxy.\n\t */\n\tpublic readonly data: string;\n\n\t/**\n\t * Offset in {@link module:engine/model/textproxy~TextProxy#textNode text node} from which the text proxy starts.\n\t */\n\tpublic readonly offsetInText: number;\n\n\t/**\n\t * Creates a text proxy.\n\t *\n\t * @internal\n\t * @param textNode Text node which part is represented by this text proxy.\n\t * @param offsetInText Offset in {@link module:engine/model/textproxy~TextProxy#textNode text node} from which the text proxy\n\t * starts.\n\t * @param length Text proxy length, that is how many text node's characters, starting from `offsetInText` it represents.\n\t */\n\tconstructor( textNode: Text, offsetInText: number, length: number ) {\n\t\tsuper();\n\n\t\tthis.textNode = textNode;\n\n\t\tif ( offsetInText < 0 || offsetInText > textNode.offsetSize ) {\n\t\t\t/**\n\t\t\t * Given `offsetInText` value is incorrect.\n\t\t\t *\n\t\t\t * @error model-textproxy-wrong-offsetintext\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-textproxy-wrong-offsetintext', this );\n\t\t}\n\n\t\tif ( length < 0 || offsetInText + length > textNode.offsetSize ) {\n\t\t\t/**\n\t\t\t * Given `length` value is incorrect.\n\t\t\t *\n\t\t\t * @error model-textproxy-wrong-length\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-textproxy-wrong-length', this );\n\t\t}\n\t\tthis.data = textNode.data.substring( offsetInText, offsetInText + length );\n\n\t\tthis.offsetInText = offsetInText;\n\t}\n\n\t/**\n\t * Offset at which this text proxy starts in it's parent.\n\t *\n\t * @see module:engine/model/node~Node#startOffset\n\t */\n\tpublic get startOffset(): number | null {\n\t\treturn this.textNode.startOffset !== null ? this.textNode.startOffset + this.offsetInText : null;\n\t}\n\n\t/**\n\t * Offset size of this text proxy. Equal to the number of characters represented by the text proxy.\n\t *\n\t * @see module:engine/model/node~Node#offsetSize\n\t */\n\tpublic get offsetSize(): number {\n\t\treturn this.data.length;\n\t}\n\n\t/**\n\t * Offset at which this text proxy ends in it's parent.\n\t *\n\t * @see module:engine/model/node~Node#endOffset\n\t */\n\tpublic get endOffset(): number | null {\n\t\treturn this.startOffset !== null ? this.startOffset + this.offsetSize : null;\n\t}\n\n\t/**\n\t * Flag indicating whether `TextProxy` instance covers only part of the original {@link module:engine/model/text~Text text node}\n\t * (`true`) or the whole text node (`false`).\n\t *\n\t * This is `false` when text proxy starts at the very beginning of {@link module:engine/model/textproxy~TextProxy#textNode textNode}\n\t * ({@link module:engine/model/textproxy~TextProxy#offsetInText offsetInText} equals `0`) and text proxy sizes is equal to\n\t * text node size.\n\t */\n\tpublic get isPartial(): boolean {\n\t\treturn this.offsetSize !== this.textNode.offsetSize;\n\t}\n\n\t/**\n\t * Parent of this text proxy, which is same as parent of text node represented by this text proxy.\n\t */\n\tpublic get parent(): Element | DocumentFragment | null {\n\t\treturn this.textNode.parent;\n\t}\n\n\t/**\n\t * Root of this text proxy, which is same as root of text node represented by this text proxy.\n\t */\n\tpublic get root(): Node | DocumentFragment {\n\t\treturn this.textNode.root;\n\t}\n\n\t/**\n\t * Gets path to this text proxy.\n\t *\n\t * @see module:engine/model/node~Node#getPath\n\t */\n\tpublic getPath(): Array<number> {\n\t\tconst path = this.textNode.getPath();\n\n\t\tif ( path.length > 0 ) {\n\t\t\tpath[ path.length - 1 ] += this.offsetInText;\n\t\t}\n\n\t\treturn path;\n\t}\n\n\t/**\n\t * Returns ancestors array of this text proxy.\n\t *\n\t * @param options Options object.\n\t * @param options.includeSelf When set to `true` this text proxy will be also included in parent's array.\n\t * @param options.parentFirst When set to `true`, array will be sorted from text proxy parent to root element,\n\t * otherwise root element will be the first item in the array.\n\t * @returns Array with ancestors.\n\t */\n\tpublic getAncestors( options: {\n\t\tincludeSelf?: boolean;\n\t\tparentFirst?: boolean;\n\t} = {} ): Array<TextProxy | Element | DocumentFragment> {\n\t\tconst ancestors: Array<TextProxy | Element | DocumentFragment> = [];\n\t\tlet parent: TextProxy | Element | DocumentFragment | null = options.includeSelf ? this : this.parent;\n\n\t\twhile ( parent ) {\n\t\t\tancestors[ options.parentFirst ? 'push' : 'unshift' ]( parent );\n\t\t\tparent = parent.parent;\n\t\t}\n\n\t\treturn ancestors;\n\t}\n\n\t/**\n\t * Checks if this text proxy has an attribute for given key.\n\t *\n\t * @param key Key of attribute to check.\n\t * @returns `true` if attribute with given key is set on text proxy, `false` otherwise.\n\t */\n\tpublic hasAttribute( key: string ): boolean {\n\t\treturn this.textNode.hasAttribute( key );\n\t}\n\n\t/**\n\t * Gets an attribute value for given key or `undefined` if that attribute is not set on text proxy.\n\t *\n\t * @param key Key of attribute to look for.\n\t * @returns Attribute value or `undefined`.\n\t */\n\tpublic getAttribute( key: string ): unknown {\n\t\treturn this.textNode.getAttribute( key );\n\t}\n\n\t/**\n\t * Returns iterator that iterates over this node's attributes. Attributes are returned as arrays containing two\n\t * items. First one is attribute key and second is attribute value.\n\t *\n\t * This format is accepted by native `Map` object and also can be passed in `Node` constructor.\n\t */\n\tpublic getAttributes(): IterableIterator<[ string, unknown ]> {\n\t\treturn this.textNode.getAttributes();\n\t}\n\n\t/**\n\t * Returns iterator that iterates over this node's attribute keys.\n\t */\n\tpublic getAttributeKeys(): IterableIterator<string> {\n\t\treturn this.textNode.getAttributeKeys();\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \treturn `#${ this.data }`;\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public log(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( 'ModelTextProxy: ' + this );\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public logExtended(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( `ModelTextProxy: ${ this }, ` +\n\t// @if CK_DEBUG_ENGINE // \t\t`attrs: ${ convertMapToStringifiedObject( this.getAttributes() ) }` );\n\t// @if CK_DEBUG_ENGINE // }\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nTextProxy.prototype.is = function( type: string ): boolean {\n\treturn type === '$textProxy' || type === 'model:$textProxy' ||\n\t\t// This are legacy values kept for backward compatibility.\n\t\ttype === 'textProxy' || type === 'model:textProxy';\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/element\n */\n\nimport Node, { type NodeAttributes } from './node';\nimport NodeList from './nodelist';\nimport Text from './text';\nimport TextProxy from './textproxy';\n\nimport type Item from './item';\n\nimport { isIterable } from '@ckeditor/ckeditor5-utils';\n\n// @if CK_DEBUG_ENGINE // const { stringifyMap, convertMapToStringifiedObject, convertMapToTags } = require( '../dev-utils/utils' );\n\n/**\n * Model element. Type of {@link module:engine/model/node~Node node} that has a {@link module:engine/model/element~Element#name name} and\n * {@link module:engine/model/element~Element#getChildren child nodes}.\n *\n * **Important**: see {@link module:engine/model/node~Node} to read about restrictions using `Element` and `Node` API.\n */\nexport default class Element extends Node {\n\t/**\n\t * Element name.\n\t */\n\tpublic readonly name: string;\n\n\t/**\n\t * List of children nodes.\n\t */\n\tprivate readonly _children: NodeList = new NodeList();\n\n\t/**\n\t * Creates a model element.\n\t *\n\t * **Note:** Constructor of this class shouldn't be used directly in the code.\n\t * Use the {@link module:engine/model/writer~Writer#createElement} method instead.\n\t *\n\t * @internal\n\t * @param name Element's name.\n\t * @param attrs Element's attributes. See {@link module:utils/tomap~toMap} for a list of accepted values.\n\t * @param children One or more nodes to be inserted as children of created element.\n\t */\n\tconstructor(\n\t\tname: string,\n\t\tattrs?: NodeAttributes,\n\t\tchildren?: string | Item | Iterable<string | Item>\n\t) {\n\t\tsuper( attrs );\n\n\t\tthis.name = name;\n\n\t\tif ( children ) {\n\t\t\tthis._insertChild( 0, children );\n\t\t}\n\t}\n\n\t/**\n\t * Number of this element's children.\n\t */\n\tpublic get childCount(): number {\n\t\treturn this._children.length;\n\t}\n\n\t/**\n\t * Sum of {@link module:engine/model/node~Node#offsetSize offset sizes} of all of this element's children.\n\t */\n\tpublic get maxOffset(): number {\n\t\treturn this._children.maxOffset;\n\t}\n\n\t/**\n\t * Is `true` if there are no nodes inside this element, `false` otherwise.\n\t */\n\tpublic get isEmpty(): boolean {\n\t\treturn this.childCount === 0;\n\t}\n\n\t/**\n\t * Gets the child at the given index.\n\t */\n\tpublic getChild( index: number ): Node | null {\n\t\treturn this._children.getNode( index );\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all of this element's children.\n\t */\n\tpublic getChildren(): IterableIterator<Node> {\n\t\treturn this._children[ Symbol.iterator ]();\n\t}\n\n\t/**\n\t * Returns an index of the given child node. Returns `null` if given node is not a child of this element.\n\t *\n\t * @param node Child node to look for.\n\t * @returns Child node's index in this element.\n\t */\n\tpublic getChildIndex( node: Node ): number | null {\n\t\treturn this._children.getNodeIndex( node );\n\t}\n\n\t/**\n\t * Returns the starting offset of given child. Starting offset is equal to the sum of\n\t * {@link module:engine/model/node~Node#offsetSize offset sizes} of all node's siblings that are before it. Returns `null` if\n\t * given node is not a child of this element.\n\t *\n\t * @param node Child node to look for.\n\t * @returns Child node's starting offset.\n\t */\n\tpublic getChildStartOffset( node: Node ): number | null {\n\t\treturn this._children.getNodeStartOffset( node );\n\t}\n\n\t/**\n\t * Returns index of a node that occupies given offset. If given offset is too low, returns `0`. If given offset is\n\t * too high, returns {@link module:engine/model/element~Element#getChildIndex index after last child}.\n\t *\n\t * ```ts\n\t * const textNode = new Text( 'foo' );\n\t * const pElement = new Element( 'p' );\n\t * const divElement = new Element( [ textNode, pElement ] );\n\t * divElement.offsetToIndex( -1 ); // Returns 0, because offset is too low.\n\t * divElement.offsetToIndex( 0 ); // Returns 0, because offset 0 is taken by `textNode` which is at index 0.\n\t * divElement.offsetToIndex( 1 ); // Returns 0, because `textNode` has `offsetSize` equal to 3, so it occupies offset 1 too.\n\t * divElement.offsetToIndex( 2 ); // Returns 0.\n\t * divElement.offsetToIndex( 3 ); // Returns 1.\n\t * divElement.offsetToIndex( 4 ); // Returns 2. There are no nodes at offset 4, so last available index is returned.\n\t * ```\n\t */\n\tpublic offsetToIndex( offset: number ): number {\n\t\treturn this._children.offsetToIndex( offset );\n\t}\n\n\t/**\n\t * Returns a descendant node by its path relative to this element.\n\t *\n\t * ```ts\n\t * // <this>a<b>c</b></this>\n\t * this.getNodeByPath( [ 0 ] ); // -> \"a\"\n\t * this.getNodeByPath( [ 1 ] ); // -> <b>\n\t * this.getNodeByPath( [ 1, 0 ] ); // -> \"c\"\n\t * ```\n\t *\n\t * @param relativePath Path of the node to find, relative to this element.\n\t */\n\tpublic getNodeByPath( relativePath: Array<number> ): Node {\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n\t\tlet node: Node = this;\n\n\t\tfor ( const index of relativePath ) {\n\t\t\tnode = ( node as Element ).getChild( ( node as Element ).offsetToIndex( index ) )!;\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Returns the parent element of the given name. Returns null if the element is not inside the desired parent.\n\t *\n\t * @param parentName The name of the parent element to find.\n\t * @param options Options object.\n\t * @param options.includeSelf When set to `true` this node will be also included while searching.\n\t */\n\tpublic findAncestor( parentName: string, options: { includeSelf?: boolean } = {} ): Element | null {\n\t\tlet parent = options.includeSelf ? this : this.parent;\n\n\t\twhile ( parent ) {\n\t\t\tif ( parent.name === parentName ) {\n\t\t\t\treturn parent;\n\t\t\t}\n\n\t\t\tparent = parent.parent;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Converts `Element` instance to plain object and returns it. Takes care of converting all of this element's children.\n\t *\n\t * @returns `Element` instance converted to plain object.\n\t */\n\tpublic override toJSON(): unknown {\n\t\tconst json: any = super.toJSON();\n\n\t\tjson.name = this.name;\n\n\t\tif ( this._children.length > 0 ) {\n\t\t\tjson.children = [];\n\n\t\t\tfor ( const node of this._children ) {\n\t\t\t\tjson.children.push( node.toJSON() );\n\t\t\t}\n\t\t}\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * Creates a copy of this element and returns it. Created element has the same name and attributes as the original element.\n\t * If clone is deep, the original element's children are also cloned. If not, then empty element is returned.\n\t *\n\t * @internal\n\t * @param deep If set to `true` clones element and all its children recursively. When set to `false`,\n\t * element will be cloned without any child.\n\t */\n\tpublic override _clone( deep = false ): Element {\n\t\tconst children = deep ? Array.from( this._children ).map( node => node._clone( true ) ) : undefined;\n\n\t\treturn new Element( this.name, this.getAttributes(), children );\n\t}\n\n\t/**\n\t * {@link module:engine/model/element~Element#_insertChild Inserts} one or more nodes at the end of this element.\n\t *\n\t * @see module:engine/model/writer~Writer#append\n\t * @internal\n\t * @param nodes Nodes to be inserted.\n\t */\n\tpublic _appendChild( nodes: string | Item | Iterable<string | Item> ): void {\n\t\tthis._insertChild( this.childCount, nodes );\n\t}\n\n\t/**\n\t * Inserts one or more nodes at the given index and sets {@link module:engine/model/node~Node#parent parent} of these nodes\n\t * to this element.\n\t *\n\t * @see module:engine/model/writer~Writer#insert\n\t * @internal\n\t * @param index Index at which nodes should be inserted.\n\t * @param items Items to be inserted.\n\t */\n\tpublic _insertChild( index: number, items: string | Item | Iterable<string | Item> ): void {\n\t\tconst nodes = normalize( items );\n\n\t\tfor ( const node of nodes ) {\n\t\t\t// If node that is being added to this element is already inside another element, first remove it from the old parent.\n\t\t\tif ( node.parent !== null ) {\n\t\t\t\tnode._remove();\n\t\t\t}\n\n\t\t\t( node as any ).parent = this;\n\t\t}\n\n\t\tthis._children._insertNodes( index, nodes );\n\t}\n\n\t/**\n\t * Removes one or more nodes starting at the given index and sets\n\t * {@link module:engine/model/node~Node#parent parent} of these nodes to `null`.\n\t *\n\t * @see module:engine/model/writer~Writer#remove\n\t * @internal\n\t * @param index Index of the first node to remove.\n\t * @param howMany Number of nodes to remove.\n\t * @returns Array containing removed nodes.\n\t */\n\tpublic _removeChildren( index: number, howMany: number = 1 ): Array<Node> {\n\t\tconst nodes = this._children._removeNodes( index, howMany );\n\n\t\tfor ( const node of nodes ) {\n\t\t\t( node as any ).parent = null;\n\t\t}\n\n\t\treturn nodes;\n\t}\n\n\t/**\n\t * Creates an `Element` instance from given plain object (i.e. parsed JSON string).\n\t * Converts `Element` children to proper nodes.\n\t *\n\t * @param json Plain object to be converted to `Element`.\n\t * @returns `Element` instance created using given plain object.\n\t */\n\tpublic static fromJSON( json: any ): Element {\n\t\tlet children: Array<Node> | undefined;\n\n\t\tif ( json.children ) {\n\t\t\tchildren = [];\n\n\t\t\tfor ( const child of json.children ) {\n\t\t\t\tif ( child.name ) {\n\t\t\t\t\t// If child has name property, it is an Element.\n\t\t\t\t\tchildren.push( Element.fromJSON( child ) );\n\t\t\t\t} else {\n\t\t\t\t\t// Otherwise, it is a Text node.\n\t\t\t\t\tchildren.push( Text.fromJSON( child ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn new Element( json.name, json.attributes, children );\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \treturn `<${ this.rootName || this.name }>`;\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public log(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( 'ModelElement: ' + this );\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public logExtended(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( `ModelElement: ${ this }, ${ this.childCount } children,\n\t// @if CK_DEBUG_ENGINE // \tattrs: ${ convertMapToStringifiedObject( this.getAttributes() ) }` );\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public logAll(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( '--------------------' );\n\n\t// @if CK_DEBUG_ENGINE // \tthis.logExtended();\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( 'List of children:' );\n\n\t// @if CK_DEBUG_ENGINE // \tfor ( const child of this.getChildren() as any ) {\n\t// @if CK_DEBUG_ENGINE // \t\tchild.log();\n\t// @if CK_DEBUG_ENGINE // \t}\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public printTree( level = 0 ): string {\n\t// @if CK_DEBUG_ENGINE // \tlet string = '';\n\n\t// @if CK_DEBUG_ENGINE // \tstring += '\\t'.repeat( level );\n\t// @if CK_DEBUG_ENGINE // \tstring += `<${ this.rootName || this.name }${ convertMapToTags( this.getAttributes() ) }>`;\n\n\t// @if CK_DEBUG_ENGINE // \tfor ( const child of this.getChildren() as any ) {\n\t// @if CK_DEBUG_ENGINE // \t\tstring += '\\n';\n\n\t// @if CK_DEBUG_ENGINE // \t\tif ( child.is( '$text' ) ) {\n\t// @if CK_DEBUG_ENGINE // \t\t\tconst textAttrs = convertMapToTags( child._attrs );\n\n\t// @if CK_DEBUG_ENGINE // \t\t\tstring += '\\t'.repeat( level + 1 );\n\n\t// @if CK_DEBUG_ENGINE // \t\t\tif ( textAttrs !== '' ) {\n\t// @if CK_DEBUG_ENGINE // \t\t\t\tstring += `<$text${ textAttrs }>` + child.data + '</$text>';\n\t// @if CK_DEBUG_ENGINE // \t\t\t} else {\n\t// @if CK_DEBUG_ENGINE // \t\t\t\tstring += child.data;\n\t// @if CK_DEBUG_ENGINE // \t\t\t}\n\t// @if CK_DEBUG_ENGINE // \t\t} else {\n\t// @if CK_DEBUG_ENGINE // \t\t\tstring += child.printTree( level + 1 );\n\t// @if CK_DEBUG_ENGINE // \t\t}\n\t// @if CK_DEBUG_ENGINE // \t}\n\n\t// @if CK_DEBUG_ENGINE // \tif ( this.childCount ) {\n\t// @if CK_DEBUG_ENGINE // \t\tstring += '\\n' + '\\t'.repeat( level );\n\t// @if CK_DEBUG_ENGINE // \t}\n\n\t// @if CK_DEBUG_ENGINE // \tstring += `</${ this.rootName || this.name }>`;\n\n\t// @if CK_DEBUG_ENGINE // \treturn string;\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public logTree(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( this.printTree() );\n\t// @if CK_DEBUG_ENGINE // }\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nElement.prototype.is = function( type: string, name?: string ): boolean {\n\tif ( !name ) {\n\t\treturn type === 'element' || type === 'model:element' ||\n\t\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\t\ttype === 'node' || type === 'model:node';\n\t}\n\n\treturn name === this.name && ( type === 'element' || type === 'model:element' );\n};\n\n/**\n * Converts strings to Text and non-iterables to arrays.\n */\nfunction normalize( nodes: string | Item | Iterable<string | Item> ): Iterable<Node> {\n\t// Separate condition because string is iterable.\n\tif ( typeof nodes == 'string' ) {\n\t\treturn [ new Text( nodes ) ];\n\t}\n\n\tif ( !isIterable( nodes ) ) {\n\t\tnodes = [ nodes ];\n\t}\n\n\t// Array.from to enable .map() on non-arrays.\n\treturn Array.from( nodes )\n\t\t.map( node => {\n\t\t\tif ( typeof node == 'string' ) {\n\t\t\t\treturn new Text( node );\n\t\t\t}\n\n\t\t\tif ( node instanceof TextProxy ) {\n\t\t\t\treturn new Text( node.data, node.getAttributes() );\n\t\t\t}\n\n\t\t\treturn node;\n\t\t} );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/treewalker\n */\n\nimport Element from './element';\nimport {\n\tdefault as Position,\n\tgetTextNodeAtPosition,\n\tgetNodeAfterPosition,\n\tgetNodeBeforePosition\n} from './position';\nimport Text from './text';\nimport TextProxy from './textproxy';\n\nimport type DocumentFragment from './documentfragment';\nimport type Item from './item';\nimport type Range from './range';\n\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Position iterator class. It allows to iterate forward and backward over the document.\n */\nexport default class TreeWalker implements Iterable<TreeWalkerValue> {\n\t/**\n\t * Walking direction. Defaults `'forward'`.\n\t */\n\tpublic readonly direction: TreeWalkerDirection;\n\n\t/**\n\t * Iterator boundaries.\n\t *\n\t * When the iterator is walking `'forward'` on the end of boundary or is walking `'backward'`\n\t * on the start of boundary, then `{ done: true }` is returned.\n\t *\n\t * If boundaries are not defined they are set before first and after last child of the root node.\n\t */\n\tpublic readonly boundaries: Range | null;\n\n\t/**\n\t * Flag indicating whether all consecutive characters with the same attributes should be\n\t * returned as one {@link module:engine/model/textproxy~TextProxy} (`true`) or one by one (`false`).\n\t */\n\tpublic readonly singleCharacters: boolean;\n\n\t/**\n\t * Flag indicating whether iterator should enter elements or not. If the iterator is shallow child nodes of any\n\t * iterated node will not be returned along with `elementEnd` tag.\n\t */\n\tpublic readonly shallow: boolean;\n\n\t/**\n\t * Flag indicating whether iterator should ignore `elementEnd` tags. If the option is true walker will not\n\t * return a parent node of the start position. If this option is `true` each {@link module:engine/model/element~Element} will\n\t * be returned once, while if the option is `false` they might be returned twice:\n\t * for `'elementStart'` and `'elementEnd'`.\n\t */\n\tpublic readonly ignoreElementEnd: boolean;\n\n\t/**\n\t * Iterator position. This is always static position, even if the initial position was a\n\t * {@link module:engine/model/liveposition~LivePosition live position}. If start position is not defined then position depends\n\t * on {@link #direction}. If direction is `'forward'` position starts form the beginning, when direction\n\t * is `'backward'` position starts from the end.\n\t */\n\tprivate _position: Position;\n\n\t/**\n\t * Start boundary cached for optimization purposes.\n\t */\n\tprivate _boundaryStartParent: Element | DocumentFragment | null;\n\n\t/**\n\t * End boundary cached for optimization purposes.\n\t */\n\tprivate _boundaryEndParent: Element | DocumentFragment | null;\n\n\t/**\n\t * Parent of the most recently visited node. Cached for optimization purposes.\n\t */\n\tprivate _visitedParent: Element | DocumentFragment;\n\n\t/**\n\t * Creates a range iterator. All parameters are optional, but you have to specify either `boundaries` or `startPosition`.\n\t *\n\t * @param options Object with configuration.\n\t */\n\tconstructor( options: TreeWalkerOptions ) {\n\t\tif ( !options || ( !options.boundaries && !options.startPosition ) ) {\n\t\t\t/**\n\t\t\t * Neither boundaries nor starting position of a `TreeWalker` have been defined.\n\t\t\t *\n\t\t\t * @error model-tree-walker-no-start-position\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'model-tree-walker-no-start-position',\n\t\t\t\tnull\n\t\t\t);\n\t\t}\n\n\t\tconst direction = options.direction || 'forward';\n\n\t\tif ( direction != 'forward' && direction != 'backward' ) {\n\t\t\t/**\n\t\t\t * Only `backward` and `forward` direction allowed.\n\t\t\t *\n\t\t\t * @error model-tree-walker-unknown-direction\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-tree-walker-unknown-direction', options, { direction } );\n\t\t}\n\n\t\tthis.direction = direction;\n\t\tthis.boundaries = options.boundaries || null;\n\n\t\tif ( options.startPosition ) {\n\t\t\tthis._position = options.startPosition.clone();\n\t\t} else {\n\t\t\tthis._position = Position._createAt( this.boundaries![ this.direction == 'backward' ? 'end' : 'start' ] );\n\t\t}\n\n\t\t// Reset position stickiness in case it was set to other value, as the stickiness is kept after cloning.\n\t\tthis.position.stickiness = 'toNone';\n\n\t\tthis.singleCharacters = !!options.singleCharacters;\n\t\tthis.shallow = !!options.shallow;\n\t\tthis.ignoreElementEnd = !!options.ignoreElementEnd;\n\n\t\tthis._boundaryStartParent = this.boundaries ? this.boundaries.start.parent : null;\n\t\tthis._boundaryEndParent = this.boundaries ? this.boundaries.end.parent : null;\n\t\tthis._visitedParent = this.position.parent;\n\t}\n\n\t/**\n\t * Iterable interface.\n\t *\n\t * @returns {Iterable.<module:engine/model/treewalker~TreeWalkerValue>}\n\t */\n\tpublic [ Symbol.iterator ](): IterableIterator<TreeWalkerValue> {\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterator position. This is always static position, even if the initial position was a\n\t * {@link module:engine/model/liveposition~LivePosition live position}. If start position is not defined then position depends\n\t * on {@link #direction}. If direction is `'forward'` position starts form the beginning, when direction\n\t * is `'backward'` position starts from the end.\n\t */\n\tpublic get position(): Position {\n\t\treturn this._position;\n\t}\n\n\t/**\n\t * Moves {@link #position} in the {@link #direction} skipping values as long as the callback function returns `true`.\n\t *\n\t * For example:\n\t *\n\t * ```ts\n\t * walker.skip( value => value.type == 'text' ); // <paragraph>[]foo</paragraph> -> <paragraph>foo[]</paragraph>\n\t * walker.skip( () => true ); // Move the position to the end: <paragraph>[]foo</paragraph> -> <paragraph>foo</paragraph>[]\n\t * walker.skip( () => false ); // Do not move the position.\n\t * ```\n\t *\n\t * @param skip Callback function. Gets {@link module:engine/model/treewalker~TreeWalkerValue} and should\n\t * return `true` if the value should be skipped or `false` if not.\n\t */\n\tpublic skip( skip: ( value: TreeWalkerValue ) => boolean ): void {\n\t\tlet done, value, prevPosition, prevVisitedParent;\n\n\t\tdo {\n\t\t\tprevPosition = this.position;\n\t\t\tprevVisitedParent = this._visitedParent;\n\n\t\t\t( { done, value } = this.next() );\n\t\t} while ( !done && skip( value ) );\n\n\t\tif ( !done ) {\n\t\t\tthis._position = prevPosition;\n\t\t\tthis._visitedParent = prevVisitedParent;\n\t\t}\n\t}\n\n\t/**\n\t * Gets the next tree walker's value.\n\t */\n\tpublic next(): IteratorResult<TreeWalkerValue> {\n\t\tif ( this.direction == 'forward' ) {\n\t\t\treturn this._next();\n\t\t} else {\n\t\t\treturn this._previous();\n\t\t}\n\t}\n\n\t/**\n\t * Makes a step forward in model. Moves the {@link #position} to the next position and returns the encountered value.\n\t */\n\tprivate _next(): IteratorResult<TreeWalkerValue> {\n\t\tconst previousPosition = this.position;\n\t\tconst position = this.position.clone();\n\t\tconst parent = this._visitedParent;\n\n\t\t// We are at the end of the root.\n\t\tif ( parent.parent === null && position.offset === parent.maxOffset ) {\n\t\t\treturn { done: true, value: undefined };\n\t\t}\n\n\t\t// We reached the walker boundary.\n\t\tif ( parent === this._boundaryEndParent && position.offset == this.boundaries!.end.offset ) {\n\t\t\treturn { done: true, value: undefined };\n\t\t}\n\n\t\t// Get node just after the current position.\n\t\t// Use a highly optimized version instead of checking the text node first and then getting the node after. See #6582.\n\t\tconst textNodeAtPosition = getTextNodeAtPosition( position, parent );\n\t\tconst node = textNodeAtPosition || getNodeAfterPosition( position, parent, textNodeAtPosition );\n\n\t\tif ( node instanceof Element ) {\n\t\t\tif ( !this.shallow ) {\n\t\t\t\t// Manual operations on path internals for optimization purposes. Here and in the rest of the method.\n\t\t\t\t( position.path as Array<number> ).push( 0 );\n\t\t\t\tthis._visitedParent = node;\n\t\t\t} else {\n\t\t\t\t// We are past the walker boundaries.\n\t\t\t\tif ( this.boundaries && this.boundaries.end.isBefore( position ) ) {\n\t\t\t\t\treturn { done: true, value: undefined };\n\t\t\t\t}\n\n\t\t\t\tposition.offset++;\n\t\t\t}\n\n\t\t\tthis._position = position;\n\n\t\t\treturn formatReturnValue( 'elementStart', node, previousPosition, position, 1 );\n\t\t}\n\n\t\tif ( node instanceof Text ) {\n\t\t\tlet charactersCount;\n\n\t\t\tif ( this.singleCharacters ) {\n\t\t\t\tcharactersCount = 1;\n\t\t\t} else {\n\t\t\t\tlet offset = node.endOffset!;\n\n\t\t\t\tif ( this._boundaryEndParent == parent && this.boundaries!.end.offset < offset ) {\n\t\t\t\t\toffset = this.boundaries!.end.offset;\n\t\t\t\t}\n\n\t\t\t\tcharactersCount = offset - position.offset;\n\t\t\t}\n\n\t\t\tconst offsetInTextNode = position.offset - node.startOffset!;\n\t\t\tconst item = new TextProxy( node, offsetInTextNode, charactersCount );\n\n\t\t\tposition.offset += charactersCount;\n\t\t\tthis._position = position;\n\n\t\t\treturn formatReturnValue( 'text', item, previousPosition, position, charactersCount );\n\t\t}\n\n\t\t// `node` is not set, we reached the end of current `parent`.\n\t\t( position.path as Array<number> ).pop();\n\t\tposition.offset++;\n\t\tthis._position = position;\n\t\tthis._visitedParent = parent.parent!;\n\n\t\tif ( this.ignoreElementEnd ) {\n\t\t\treturn this._next();\n\t\t}\n\n\t\treturn formatReturnValue( 'elementEnd', parent as Element, previousPosition, position );\n\t}\n\n\t/**\n\t * Makes a step backward in model. Moves the {@link #position} to the previous position and returns the encountered value.\n\t */\n\tprivate _previous(): IteratorResult<TreeWalkerValue> {\n\t\tconst previousPosition = this.position;\n\t\tconst position = this.position.clone();\n\t\tconst parent = this._visitedParent;\n\n\t\t// We are at the beginning of the root.\n\t\tif ( parent.parent === null && position.offset === 0 ) {\n\t\t\treturn { done: true, value: undefined };\n\t\t}\n\n\t\t// We reached the walker boundary.\n\t\tif ( parent == this._boundaryStartParent && position.offset == this.boundaries!.start.offset ) {\n\t\t\treturn { done: true, value: undefined };\n\t\t}\n\n\t\t// Get node just before the current position.\n\t\t// Use a highly optimized version instead of checking the text node first and then getting the node before. See #6582.\n\t\tconst positionParent = position.parent;\n\t\tconst textNodeAtPosition = getTextNodeAtPosition( position, positionParent );\n\t\tconst node = textNodeAtPosition || getNodeBeforePosition( position, positionParent, textNodeAtPosition );\n\n\t\tif ( node instanceof Element ) {\n\t\t\tposition.offset--;\n\n\t\t\tif ( this.shallow ) {\n\t\t\t\tthis._position = position;\n\n\t\t\t\treturn formatReturnValue( 'elementStart', node, previousPosition, position, 1 );\n\t\t\t}\n\n\t\t\t( position.path as Array<number> ).push( node.maxOffset );\n\t\t\tthis._position = position;\n\t\t\tthis._visitedParent = node;\n\n\t\t\tif ( this.ignoreElementEnd ) {\n\t\t\t\treturn this._previous();\n\t\t\t}\n\n\t\t\treturn formatReturnValue( 'elementEnd', node, previousPosition, position );\n\t\t}\n\n\t\tif ( node instanceof Text ) {\n\t\t\tlet charactersCount;\n\n\t\t\tif ( this.singleCharacters ) {\n\t\t\t\tcharactersCount = 1;\n\t\t\t} else {\n\t\t\t\tlet offset = node.startOffset!;\n\n\t\t\t\tif ( this._boundaryStartParent == parent && this.boundaries!.start.offset > offset ) {\n\t\t\t\t\toffset = this.boundaries!.start.offset;\n\t\t\t\t}\n\n\t\t\t\tcharactersCount = position.offset - offset;\n\t\t\t}\n\n\t\t\tconst offsetInTextNode = position.offset - node.startOffset!;\n\t\t\tconst item = new TextProxy( node, offsetInTextNode - charactersCount, charactersCount );\n\n\t\t\tposition.offset -= charactersCount;\n\t\t\tthis._position = position;\n\n\t\t\treturn formatReturnValue( 'text', item, previousPosition, position, charactersCount );\n\t\t}\n\n\t\t// `node` is not set, we reached the beginning of current `parent`.\n\t\t( position.path as Array<number> ).pop();\n\t\tthis._position = position;\n\t\tthis._visitedParent = parent.parent!;\n\n\t\treturn formatReturnValue( 'elementStart', parent as Element, previousPosition, position, 1 );\n\t}\n}\n\nfunction formatReturnValue(\n\ttype: TreeWalkerValueType,\n\titem: Item,\n\tpreviousPosition: Position,\n\tnextPosition: Position,\n\tlength?: number\n): IteratorYieldResult<TreeWalkerValue> {\n\treturn {\n\t\tdone: false,\n\t\tvalue: {\n\t\t\ttype,\n\t\t\titem,\n\t\t\tpreviousPosition,\n\t\t\tnextPosition,\n\t\t\tlength\n\t\t}\n\t};\n}\n\n/**\n * Type of the step made by {@link module:engine/model/treewalker~TreeWalker}.\n * Possible values: `'elementStart'` if walker is at the beginning of a node, `'elementEnd'` if walker is at the end of node,\n * or `'text'` if walker traversed over text.\n */\nexport type TreeWalkerValueType = 'elementStart' | 'elementEnd' | 'text';\n\n/**\n * Object returned by {@link module:engine/model/treewalker~TreeWalker} when traversing tree model.\n */\nexport interface TreeWalkerValue {\n\ttype: TreeWalkerValueType;\n\n\t/**\n\t * Item between old and new positions of {@link module:engine/model/treewalker~TreeWalker}.\n\t */\n\titem: Item;\n\n\t/**\n\t * Previous position of the iterator.\n\t * * Forward iteration: For `'elementEnd'` it is the last position inside the element. For all other types it is the\n\t * position before the item.\n\t * * Backward iteration: For `'elementStart'` it is the first position inside the element. For all other types it is\n\t * the position after item.\n\t */\n\tpreviousPosition: Position;\n\n\t/**\n\t * Next position of the iterator.\n\t * * Forward iteration: For `'elementStart'` it is the first position inside the element. For all other types it is\n\t * the position after the item.\n\t * * Backward iteration: For `'elementEnd'` it is last position inside element. For all other types it is the position\n\t * before the item.\n\t */\n\tnextPosition: Position;\n\n\t/**\n\t * Length of the item. For `'elementStart'` it is 1. For `'text'` it is the length of the text. For `'elementEnd'` it is `undefined`.\n\t */\n\tlength?: number;\n}\n\n/**\n * Tree walking direction.\n */\nexport type TreeWalkerDirection = 'forward' | 'backward';\n\n/**\n * The configuration of TreeWalker.\n *\n * All parameters are optional, but you have to specify either `boundaries` or `startPosition`.\n */\nexport interface TreeWalkerOptions {\n\n\t/**\n\t * Walking direction.\n\t *\n\t * @default 'forward'\n\t */\n\tdirection?: TreeWalkerDirection;\n\n\t/**\n\t * Range to define boundaries of the iterator.\n\t */\n\tboundaries?: Range | null;\n\n\t/**\n\t * Starting position.\n\t */\n\tstartPosition?: Position;\n\n\t/**\n\t * Flag indicating whether all consecutive characters with the same attributes\n\t * should be returned one by one as multiple {@link module:engine/model/textproxy~TextProxy} (`true`) objects or as one\n\t * {@link module:engine/model/textproxy~TextProxy} (`false`).\n\t */\n\tsingleCharacters?: boolean;\n\n\t/**\n\t * Flag indicating whether iterator should enter elements or not. If the\n\t * iterator is shallow child nodes of any iterated node will not be returned along with `elementEnd` tag.\n\t */\n\tshallow?: boolean;\n\n\t/**\n\t * Flag indicating whether iterator should ignore `elementEnd` tags.\n\t * If the option is true walker will not return a parent node of start position. If this option is `true`\n\t * each {@link module:engine/model/element~Element} will be returned once, while if the option is `false` they might be returned\n\t * twice: for `'elementStart'` and `'elementEnd'`.\n\t */\n\tignoreElementEnd?: boolean;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/position\n */\n\nimport TypeCheckable from './typecheckable';\nimport TreeWalker, { type TreeWalkerOptions, type TreeWalkerValue } from './treewalker';\n\nimport type Document from './document';\nimport type DocumentFragment from './documentfragment';\nimport type Element from './element';\nimport type InsertOperation from './operation/insertoperation';\nimport type Item from './item';\nimport type MergeOperation from './operation/mergeoperation';\nimport type MoveOperation from './operation/moveoperation';\nimport type Node from './node';\nimport type Operation from './operation/operation';\nimport type SplitOperation from './operation/splitoperation';\nimport type Text from './text';\n\nimport { CKEditorError, compareArrays } from '@ckeditor/ckeditor5-utils';\n\n// To check if component is loaded more than once.\nimport '@ckeditor/ckeditor5-utils/src/version';\n\n/**\n * Represents a position in the model tree.\n *\n * A position is represented by its {@link module:engine/model/position~Position#root} and\n * a {@link module:engine/model/position~Position#path} in that root.\n *\n * You can create position instances via its constructor or the `createPosition*()` factory methods of\n * {@link module:engine/model/model~Model} and {@link module:engine/model/writer~Writer}.\n *\n * **Note:** Position is based on offsets, not indexes. This means that a position between two text nodes\n * `foo` and `bar` has offset `3`, not `1`. See {@link module:engine/model/position~Position#path} for more information.\n *\n * Since a position in the model is represented by a {@link module:engine/model/position~Position#root position root} and\n * {@link module:engine/model/position~Position#path position path} it is possible to create positions placed in non-existing places.\n * This requirement is important for operational transformation algorithms.\n *\n * Also, {@link module:engine/model/operation/operation~Operation operations}\n * kept in the {@link module:engine/model/document~Document#history document history}\n * are storing positions (and ranges) which were correct when those operations were applied, but may not be correct\n * after the document has changed.\n *\n * When changes are applied to the model, it may also happen that {@link module:engine/model/position~Position#parent position parent}\n * will change even if position path has not changed. Keep in mind, that if a position leads to non-existing element,\n * {@link module:engine/model/position~Position#parent} and some other properties and methods will throw errors.\n *\n * In most cases, position with wrong path is caused by an error in code, but it is sometimes needed, as described above.\n */\nexport default class Position extends TypeCheckable {\n\t/**\n\t * Root of the position path.\n\t */\n\tpublic readonly root: Element | DocumentFragment;\n\n\t/**\n\t * Position of the node in the tree. **Path contains offsets, not indexes.**\n\t *\n\t * Position can be placed before, after or in a {@link module:engine/model/node~Node node} if that node has\n\t * {@link module:engine/model/node~Node#offsetSize} greater than `1`. Items in position path are\n\t * {@link module:engine/model/node~Node#startOffset starting offsets} of position ancestors, starting from direct root children,\n\t * down to the position offset in it's parent.\n\t *\n\t * ```\n\t * ROOT\n\t * |- P before: [ 0 ] after: [ 1 ]\n\t * |- UL before: [ 1 ] after: [ 2 ]\n\t * |- LI before: [ 1, 0 ] after: [ 1, 1 ]\n\t * | |- foo before: [ 1, 0, 0 ] after: [ 1, 0, 3 ]\n\t * |- LI before: [ 1, 1 ] after: [ 1, 2 ]\n\t * |- bar before: [ 1, 1, 0 ] after: [ 1, 1, 3 ]\n\t * ```\n\t *\n\t * `foo` and `bar` are representing {@link module:engine/model/text~Text text nodes}. Since text nodes has offset size\n\t * greater than `1` you can place position offset between their start and end:\n\t *\n\t * ```\n\t * ROOT\n\t * |- P\n\t * |- UL\n\t * |- LI\n\t * | |- f^o|o ^ has path: [ 1, 0, 1 ] | has path: [ 1, 0, 2 ]\n\t * |- LI\n\t * |- b^a|r ^ has path: [ 1, 1, 1 ] | has path: [ 1, 1, 2 ]\n\t * ```\n\t */\n\tpublic readonly path: ReadonlyArray<number>;\n\n\t/**\n\t * Position stickiness. See {@link module:engine/model/position~PositionStickiness}.\n\t */\n\tpublic stickiness: PositionStickiness;\n\n\t/**\n\t * Creates a position.\n\t *\n\t * @param root Root of the position.\n\t * @param path Position path. See {@link module:engine/model/position~Position#path}.\n\t * @param stickiness Position stickiness. See {@link module:engine/model/position~PositionStickiness}.\n\t */\n\tconstructor(\n\t\troot: Element | DocumentFragment,\n\t\tpath: ReadonlyArray<number>,\n\t\tstickiness: PositionStickiness = 'toNone'\n\t) {\n\t\tsuper();\n\n\t\tif ( !root.is( 'element' ) && !root.is( 'documentFragment' ) ) {\n\t\t\t/**\n\t\t\t * Position root is invalid.\n\t\t\t *\n\t\t\t * Positions can only be anchored in elements or document fragments.\n\t\t\t *\n\t\t\t * @error model-position-root-invalid\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'model-position-root-invalid',\n\t\t\t\troot\n\t\t\t);\n\t\t}\n\n\t\tif ( !( path instanceof Array ) || path.length === 0 ) {\n\t\t\t/**\n\t\t\t * Position path must be an array with at least one item.\n\t\t\t *\n\t\t\t * @error model-position-path-incorrect-format\n\t\t\t * @param path\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'model-position-path-incorrect-format',\n\t\t\t\troot,\n\t\t\t\t{ path }\n\t\t\t);\n\t\t}\n\n\t\t// Normalize the root and path when element (not root) is passed.\n\t\tif ( root.is( 'rootElement' ) ) {\n\t\t\tpath = path.slice();\n\t\t} else {\n\t\t\tpath = [ ...root.getPath(), ...path ];\n\t\t\troot = root.root as any;\n\t\t}\n\n\t\tthis.root = root;\n\t\tthis.path = path;\n\t\tthis.stickiness = stickiness;\n\t}\n\n\t/**\n\t * Offset at which this position is located in its {@link module:engine/model/position~Position#parent parent}. It is equal\n\t * to the last item in position {@link module:engine/model/position~Position#path path}.\n\t *\n\t * @type {Number}\n\t */\n\tpublic get offset(): number {\n\t\treturn this.path[ this.path.length - 1 ];\n\t}\n\n\tpublic set offset( newOffset: number ) {\n\t\t( this.path as Array<number> )[ this.path.length - 1 ] = newOffset;\n\t}\n\n\t/**\n\t * Parent element of this position.\n\t *\n\t * Keep in mind that `parent` value is calculated when the property is accessed.\n\t * If {@link module:engine/model/position~Position#path position path}\n\t * leads to a non-existing element, `parent` property will throw error.\n\t *\n\t * Also it is a good idea to cache `parent` property if it is used frequently in an algorithm (i.e. in a long loop).\n\t */\n\tpublic get parent(): Element | DocumentFragment {\n\t\tlet parent: any = this.root;\n\n\t\tfor ( let i = 0; i < this.path.length - 1; i++ ) {\n\t\t\tparent = parent.getChild( parent.offsetToIndex( this.path[ i ] ) );\n\n\t\t\tif ( !parent ) {\n\t\t\t\t/**\n\t\t\t\t * The position's path is incorrect. This means that a position does not point to\n\t\t\t\t * a correct place in the tree and hence, some of its methods and getters cannot work correctly.\n\t\t\t\t *\n\t\t\t\t * **Note**: Unlike DOM and view positions, in the model, the\n\t\t\t\t * {@link module:engine/model/position~Position#parent position's parent} is always an element or a document fragment.\n\t\t\t\t * The last offset in the {@link module:engine/model/position~Position#path position's path} is the point in this element\n\t\t\t\t * where this position points.\n\t\t\t\t *\n\t\t\t\t * Read more about model positions and offsets in\n\t\t\t\t * the {@glink framework/architecture/editing-engine#indexes-and-offsets Editing engine architecture} guide.\n\t\t\t\t *\n\t\t\t\t * @error model-position-path-incorrect\n\t\t\t\t * @param position The incorrect position.\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'model-position-path-incorrect', this, { position: this } );\n\t\t\t}\n\t\t}\n\n\t\tif ( parent.is( '$text' ) ) {\n\t\t\tthrow new CKEditorError( 'model-position-path-incorrect', this, { position: this } );\n\t\t}\n\n\t\treturn parent;\n\t}\n\n\t/**\n\t * Position {@link module:engine/model/position~Position#offset offset} converted to an index in position's parent node. It is\n\t * equal to the {@link module:engine/model/node~Node#index index} of a node after this position. If position is placed\n\t * in text node, position index is equal to the index of that text node.\n\t */\n\tpublic get index(): number {\n\t\treturn this.parent.offsetToIndex( this.offset );\n\t}\n\n\t/**\n\t * Returns {@link module:engine/model/text~Text text node} instance in which this position is placed or `null` if this\n\t * position is not in a text node.\n\t */\n\tpublic get textNode(): Text | null {\n\t\treturn getTextNodeAtPosition( this, this.parent );\n\t}\n\n\t/**\n\t * Node directly after this position or `null` if this position is in text node.\n\t */\n\tpublic get nodeAfter(): Node | null {\n\t\t// Cache the parent and reuse for performance reasons. See #6579 and #6582.\n\t\tconst parent = this.parent;\n\n\t\treturn getNodeAfterPosition( this, parent, getTextNodeAtPosition( this, parent ) );\n\t}\n\n\t/**\n\t * Node directly before this position or `null` if this position is in text node.\n\t */\n\tpublic get nodeBefore(): Node | null {\n\t\t// Cache the parent and reuse for performance reasons. See #6579 and #6582.\n\t\tconst parent = this.parent;\n\n\t\treturn getNodeBeforePosition( this, parent, getTextNodeAtPosition( this, parent ) );\n\t}\n\n\t/**\n\t * Is `true` if position is at the beginning of its {@link module:engine/model/position~Position#parent parent}, `false` otherwise.\n\t */\n\tpublic get isAtStart(): boolean {\n\t\treturn this.offset === 0;\n\t}\n\n\t/**\n\t * Is `true` if position is at the end of its {@link module:engine/model/position~Position#parent parent}, `false` otherwise.\n\t */\n\tpublic get isAtEnd(): boolean {\n\t\treturn this.offset == this.parent.maxOffset;\n\t}\n\n\t/**\n\t * Checks whether this position is before or after given position.\n\t *\n\t * This method is safe to use it on non-existing positions (for example during operational transformation).\n\t */\n\tpublic compareWith( otherPosition: Position ): PositionRelation {\n\t\tif ( this.root != otherPosition.root ) {\n\t\t\treturn 'different';\n\t\t}\n\n\t\tconst result = compareArrays( this.path, otherPosition.path );\n\n\t\tswitch ( result ) {\n\t\t\tcase 'same':\n\t\t\t\treturn 'same';\n\n\t\t\tcase 'prefix':\n\t\t\t\treturn 'before';\n\n\t\t\tcase 'extension':\n\t\t\t\treturn 'after';\n\n\t\t\tdefault:\n\t\t\t\treturn this.path[ result ] < otherPosition.path[ result ] ? 'before' : 'after';\n\t\t}\n\t}\n\n\t/**\n\t * Gets the farthest position which matches the callback using\n\t * {@link module:engine/model/treewalker~TreeWalker TreeWalker}.\n\t *\n\t * For example:\n\t *\n\t * ```ts\n\t * getLastMatchingPosition( value => value.type == 'text' );\n\t * // <paragraph>[]foo</paragraph> -> <paragraph>foo[]</paragraph>\n\t *\n\t * getLastMatchingPosition( value => value.type == 'text', { direction: 'backward' } );\n\t * // <paragraph>foo[]</paragraph> -> <paragraph>[]foo</paragraph>\n\t *\n\t * getLastMatchingPosition( value => false );\n\t * // Do not move the position.\n\t * ```\n\t *\n\t * @param skip Callback function. Gets {@link module:engine/model/treewalker~TreeWalkerValue} and should\n\t * return `true` if the value should be skipped or `false` if not.\n\t * @param options Object with configuration options. See {@link module:engine/model/treewalker~TreeWalker}.\n\t *\n\t * @returns The position after the last item which matches the `skip` callback test.\n\t */\n\tpublic getLastMatchingPosition(\n\t\tskip: ( value: TreeWalkerValue ) => boolean,\n\t\toptions: TreeWalkerOptions = {}\n\t): Position {\n\t\toptions.startPosition = this;\n\n\t\tconst treeWalker = new TreeWalker( options );\n\t\ttreeWalker.skip( skip );\n\n\t\treturn treeWalker.position;\n\t}\n\n\t/**\n\t * Returns a path to this position's parent. Parent path is equal to position {@link module:engine/model/position~Position#path path}\n\t * but without the last item.\n\t *\n\t * This method is safe to use it on non-existing positions (for example during operational transformation).\n\t *\n\t * @returns Path to the parent.\n\t */\n\tpublic getParentPath(): Array<number> {\n\t\treturn this.path.slice( 0, -1 );\n\t}\n\n\t/**\n\t * Returns ancestors array of this position, that is this position's parent and its ancestors.\n\t *\n\t * @returns Array with ancestors.\n\t */\n\tpublic getAncestors(): Array<Element | DocumentFragment> {\n\t\tconst parent = this.parent;\n\n\t\tif ( parent.is( 'documentFragment' ) ) {\n\t\t\treturn [ parent ];\n\t\t} else {\n\t\t\treturn parent.getAncestors( { includeSelf: true } ) as any;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the parent element of the given name. Returns null if the position is not inside the desired parent.\n\t *\n\t * @param parentName The name of the parent element to find.\n\t */\n\tpublic findAncestor( parentName: string ): Element | null {\n\t\tconst parent = this.parent;\n\n\t\tif ( parent.is( 'element' ) ) {\n\t\t\treturn parent.findAncestor( parentName, { includeSelf: true } );\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the slice of two position {@link #path paths} which is identical. The {@link #root roots}\n\t * of these two paths must be identical.\n\t *\n\t * This method is safe to use it on non-existing positions (for example during operational transformation).\n\t *\n\t * @param position The second position.\n\t * @returns The common path.\n\t */\n\tpublic getCommonPath( position: Position ): Array<number> {\n\t\tif ( this.root != position.root ) {\n\t\t\treturn [];\n\t\t}\n\n\t\t// We find on which tree-level start and end have the lowest common ancestor\n\t\tconst cmp = compareArrays( this.path, position.path );\n\t\t// If comparison returned string it means that arrays are same.\n\t\tconst diffAt = ( typeof cmp == 'string' ) ? Math.min( this.path.length, position.path.length ) : cmp;\n\n\t\treturn this.path.slice( 0, diffAt );\n\t}\n\n\t/**\n\t * Returns an {@link module:engine/model/element~Element} or {@link module:engine/model/documentfragment~DocumentFragment}\n\t * which is a common ancestor of both positions. The {@link #root roots} of these two positions must be identical.\n\t *\n\t * @param position The second position.\n\t */\n\tpublic getCommonAncestor( position: Position ): Element | DocumentFragment | null {\n\t\tconst ancestorsA = this.getAncestors();\n\t\tconst ancestorsB = position.getAncestors();\n\n\t\tlet i = 0;\n\n\t\twhile ( ancestorsA[ i ] == ancestorsB[ i ] && ancestorsA[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i === 0 ? null : ancestorsA[ i - 1 ];\n\t}\n\n\t/**\n\t * Returns a new instance of `Position`, that has same {@link #parent parent} but it's offset\n\t * is shifted by `shift` value (can be a negative value).\n\t *\n\t * This method is safe to use it on non-existing positions (for example during operational transformation).\n\t *\n\t * @param shift Offset shift. Can be a negative value.\n\t * @returns Shifted position.\n\t */\n\tpublic getShiftedBy( shift: number ): Position {\n\t\tconst shifted = this.clone();\n\n\t\tconst offset = shifted.offset + shift;\n\t\tshifted.offset = offset < 0 ? 0 : offset;\n\n\t\treturn shifted;\n\t}\n\n\t/**\n\t * Checks whether this position is after given position.\n\t *\n\t * This method is safe to use it on non-existing positions (for example during operational transformation).\n\t *\n\t * @see module:engine/model/position~Position#isBefore\n\t * @param otherPosition Position to compare with.\n\t * @returns True if this position is after given position.\n\t */\n\tpublic isAfter( otherPosition: Position ): boolean {\n\t\treturn this.compareWith( otherPosition ) == 'after';\n\t}\n\n\t/**\n\t * Checks whether this position is before given position.\n\t *\n\t * **Note:** watch out when using negation of the value returned by this method, because the negation will also\n\t * be `true` if positions are in different roots and you might not expect this. You should probably use\n\t * `a.isAfter( b ) || a.isEqual( b )` or `!a.isBefore( p ) && a.root == b.root` in most scenarios. If your\n\t * condition uses multiple `isAfter` and `isBefore` checks, build them so they do not use negated values, i.e.:\n\t *\n\t * ```ts\n\t * if ( a.isBefore( b ) && c.isAfter( d ) ) {\n\t * \t// do A.\n\t * } else {\n\t * \t// do B.\n\t * }\n\t * ```\n\t *\n\t * or, if you have only one if-branch:\n\t *\n\t * ```ts\n\t * if ( !( a.isBefore( b ) && c.isAfter( d ) ) {\n\t * \t// do B.\n\t * }\n\t * ```\n\t *\n\t * rather than:\n\t *\n\t * ```ts\n\t * if ( !a.isBefore( b ) || && !c.isAfter( d ) ) {\n\t * \t// do B.\n\t * } else {\n\t * \t// do A.\n\t * }\n\t * ```\n\t *\n\t * This method is safe to use it on non-existing positions (for example during operational transformation).\n\t *\n\t * @param otherPosition Position to compare with.\n\t * @returns True if this position is before given position.\n\t */\n\tpublic isBefore( otherPosition: Position ): boolean {\n\t\treturn this.compareWith( otherPosition ) == 'before';\n\t}\n\n\t/**\n\t * Checks whether this position is equal to given position.\n\t *\n\t * This method is safe to use it on non-existing positions (for example during operational transformation).\n\t *\n\t * @param otherPosition Position to compare with.\n\t * @returns True if positions are same.\n\t */\n\tpublic isEqual( otherPosition: Position ): boolean {\n\t\treturn this.compareWith( otherPosition ) == 'same';\n\t}\n\n\t/**\n\t * Checks whether this position is touching given position. Positions touch when there are no text nodes\n\t * or empty nodes in a range between them. Technically, those positions are not equal but in many cases\n\t * they are very similar or even indistinguishable.\n\t *\n\t * @param otherPosition Position to compare with.\n\t * @returns True if positions touch.\n\t */\n\tpublic isTouching( otherPosition: Position ): boolean {\n\t\tif ( this.root !== otherPosition.root ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst commonLevel = Math.min( this.path.length, otherPosition.path.length );\n\n\t\tfor ( let level = 0; level < commonLevel; level++ ) {\n\t\t\tconst diff = this.path[ level ] - otherPosition.path[ level ];\n\n\t\t\t// Positions are spread by a node, so they are not touching.\n\t\t\tif ( diff < -1 || diff > 1 ) {\n\t\t\t\treturn false;\n\t\t\t} else if ( diff === 1 ) {\n\t\t\t\t// `otherPosition` is on the left.\n\t\t\t\t// `this` is on the right.\n\t\t\t\treturn checkTouchingBranch( otherPosition, this, level );\n\t\t\t} else if ( diff === -1 ) {\n\t\t\t\t// `this` is on the left.\n\t\t\t\t// `otherPosition` is on the right.\n\t\t\t\treturn checkTouchingBranch( this, otherPosition, level );\n\t\t\t}\n\t\t\t// `diff === 0`.\n\t\t\t// Positions are inside the same element on this level, compare deeper.\n\t\t}\n\n\t\t// If we ended up here, it means that positions paths have the same beginning.\n\t\t// If the paths have the same length, then it means that they are identical, so the positions are same.\n\t\tif ( this.path.length === otherPosition.path.length ) {\n\t\t\treturn true;\n\t\t}\n\t\t// If positions have different length of paths, then the common part is the same.\n\t\t// In this case, the \"shorter\" position is on the left, the \"longer\" position is on the right.\n\t\t//\n\t\t// If the positions are touching, the \"longer\" position must have only zeroes. For example:\n\t\t// [ 1, 2 ] vs [ 1, 2, 0 ]\n\t\t// [ 1, 2 ] vs [ 1, 2, 0, 0, 0 ]\n\t\telse if ( this.path.length > otherPosition.path.length ) {\n\t\t\treturn checkOnlyZeroes( this.path, commonLevel );\n\t\t} else {\n\t\t\treturn checkOnlyZeroes( otherPosition.path, commonLevel );\n\t\t}\n\t}\n\n\t/**\n\t * Checks if two positions are in the same parent.\n\t *\n\t * This method is safe to use it on non-existing positions (for example during operational transformation).\n\t *\n\t * @param position Position to compare with.\n\t * @returns `true` if positions have the same parent, `false` otherwise.\n\t */\n\tpublic hasSameParentAs( position: Position ): boolean {\n\t\tif ( this.root !== position.root ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst thisParentPath = this.getParentPath();\n\t\tconst posParentPath = position.getParentPath();\n\n\t\treturn compareArrays( thisParentPath, posParentPath ) == 'same';\n\t}\n\n\t/**\n\t * Returns a copy of this position that is transformed by given `operation`.\n\t *\n\t * The new position's parameters are updated accordingly to the effect of the `operation`.\n\t *\n\t * For example, if `n` nodes are inserted before the position, the returned position {@link ~Position#offset} will be\n\t * increased by `n`. If the position was in a merged element, it will be accordingly moved to the new element, etc.\n\t *\n\t * This method is safe to use it on non-existing positions (for example during operational transformation).\n\t *\n\t * @param operation Operation to transform by.\n\t * @returns Transformed position.\n\t */\n\tpublic getTransformedByOperation( operation: Operation ): Position {\n\t\tlet result;\n\n\t\tswitch ( operation.type ) {\n\t\t\tcase 'insert':\n\t\t\t\tresult = this._getTransformedByInsertOperation( operation as InsertOperation );\n\t\t\t\tbreak;\n\t\t\tcase 'move':\n\t\t\tcase 'remove':\n\t\t\tcase 'reinsert':\n\t\t\t\tresult = this._getTransformedByMoveOperation( operation as MoveOperation );\n\t\t\t\tbreak;\n\t\t\tcase 'split':\n\t\t\t\tresult = this._getTransformedBySplitOperation( operation as SplitOperation );\n\t\t\t\tbreak;\n\t\t\tcase 'merge':\n\t\t\t\tresult = this._getTransformedByMergeOperation( operation as MergeOperation );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tresult = Position._createAt( this );\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Returns a copy of this position transformed by an insert operation.\n\t *\n\t * @internal\n\t */\n\tpublic _getTransformedByInsertOperation( operation: InsertOperation ): Position {\n\t\treturn this._getTransformedByInsertion( operation.position, operation.howMany );\n\t}\n\n\t/**\n\t * Returns a copy of this position transformed by a move operation.\n\t *\n\t * @internal\n\t */\n\tpublic _getTransformedByMoveOperation( operation: MoveOperation ): Position {\n\t\treturn this._getTransformedByMove( operation.sourcePosition, operation.targetPosition, operation.howMany );\n\t}\n\n\t/**\n\t * Returns a copy of this position transformed by a split operation.\n\t *\n\t * @internal\n\t */\n\tpublic _getTransformedBySplitOperation( operation: SplitOperation ): Position {\n\t\tconst movedRange = operation.movedRange;\n\n\t\tconst isContained = movedRange.containsPosition( this ) ||\n\t\t\t( movedRange.start.isEqual( this ) && this.stickiness == 'toNext' );\n\n\t\tif ( isContained ) {\n\t\t\treturn this._getCombined( operation.splitPosition, operation.moveTargetPosition );\n\t\t} else {\n\t\t\tif ( operation.graveyardPosition ) {\n\t\t\t\treturn this._getTransformedByMove( operation.graveyardPosition, operation.insertionPosition, 1 );\n\t\t\t} else {\n\t\t\t\treturn this._getTransformedByInsertion( operation.insertionPosition, 1 );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns a copy of this position transformed by merge operation.\n\t *\n\t * @internal\n\t */\n\tpublic _getTransformedByMergeOperation( operation: MergeOperation ): Position {\n\t\tconst movedRange = operation.movedRange;\n\t\tconst isContained = movedRange.containsPosition( this ) || movedRange.start.isEqual( this );\n\n\t\tlet pos;\n\n\t\tif ( isContained ) {\n\t\t\tpos = this._getCombined( operation.sourcePosition, operation.targetPosition );\n\n\t\t\tif ( operation.sourcePosition.isBefore( operation.targetPosition ) ) {\n\t\t\t\t// Above happens during OT when the merged element is moved before the merged-to element.\n\t\t\t\tpos = pos._getTransformedByDeletion( operation.deletionPosition, 1 )!;\n\t\t\t}\n\t\t} else if ( this.isEqual( operation.deletionPosition ) ) {\n\t\t\tpos = Position._createAt( operation.deletionPosition );\n\t\t} else {\n\t\t\tpos = this._getTransformedByMove( operation.deletionPosition, operation.graveyardPosition, 1 );\n\t\t}\n\n\t\treturn pos;\n\t}\n\n\t/**\n\t * Returns a copy of this position that is updated by removing `howMany` nodes starting from `deletePosition`.\n\t * It may happen that this position is in a removed node. If that is the case, `null` is returned instead.\n\t *\n\t * @internal\n\t * @param deletePosition Position before the first removed node.\n\t * @param howMany How many nodes are removed.\n\t * @returns Transformed position or `null`.\n\t */\n\tpublic _getTransformedByDeletion( deletePosition: Position, howMany: number ): Position | null {\n\t\tconst transformed = Position._createAt( this );\n\n\t\t// This position can't be affected if deletion was in a different root.\n\t\tif ( this.root != deletePosition.root ) {\n\t\t\treturn transformed;\n\t\t}\n\n\t\tif ( compareArrays( deletePosition.getParentPath(), this.getParentPath() ) == 'same' ) {\n\t\t\t// If nodes are removed from the node that is pointed by this position...\n\t\t\tif ( deletePosition.offset < this.offset ) {\n\t\t\t\t// And are removed from before an offset of that position...\n\t\t\t\tif ( deletePosition.offset + howMany > this.offset ) {\n\t\t\t\t\t// Position is in removed range, it's no longer in the tree.\n\t\t\t\t\treturn null;\n\t\t\t\t} else {\n\t\t\t\t\t// Decrement the offset accordingly.\n\t\t\t\t\ttransformed.offset -= howMany;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( compareArrays( deletePosition.getParentPath(), this.getParentPath() ) == 'prefix' ) {\n\t\t\t// If nodes are removed from a node that is on a path to this position...\n\t\t\tconst i = deletePosition.path.length - 1;\n\n\t\t\tif ( deletePosition.offset <= this.path[ i ] ) {\n\t\t\t\t// And are removed from before next node of that path...\n\t\t\t\tif ( deletePosition.offset + howMany > this.path[ i ] ) {\n\t\t\t\t\t// If the next node of that path is removed return null\n\t\t\t\t\t// because the node containing this position got removed.\n\t\t\t\t\treturn null;\n\t\t\t\t} else {\n\t\t\t\t\t// Otherwise, decrement index on that path.\n\t\t\t\t\t( transformed.path as Array<number> )[ i ] -= howMany;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn transformed;\n\t}\n\n\t/**\n\t * Returns a copy of this position that is updated by inserting `howMany` nodes at `insertPosition`.\n\t *\n\t * @internal\n\t * @param insertPosition Position where nodes are inserted.\n\t * @param howMany How many nodes are inserted.\n\t * @returns Transformed position.\n\t */\n\tpublic _getTransformedByInsertion( insertPosition: Position, howMany: number ): Position {\n\t\tconst transformed = Position._createAt( this );\n\n\t\t// This position can't be affected if insertion was in a different root.\n\t\tif ( this.root != insertPosition.root ) {\n\t\t\treturn transformed;\n\t\t}\n\n\t\tif ( compareArrays( insertPosition.getParentPath(), this.getParentPath() ) == 'same' ) {\n\t\t\t// If nodes are inserted in the node that is pointed by this position...\n\t\t\tif ( insertPosition.offset < this.offset || ( insertPosition.offset == this.offset && this.stickiness != 'toPrevious' ) ) {\n\t\t\t\t// And are inserted before an offset of that position...\n\t\t\t\t// \"Push\" this positions offset.\n\t\t\t\ttransformed.offset += howMany;\n\t\t\t}\n\t\t} else if ( compareArrays( insertPosition.getParentPath(), this.getParentPath() ) == 'prefix' ) {\n\t\t\t// If nodes are inserted in a node that is on a path to this position...\n\t\t\tconst i = insertPosition.path.length - 1;\n\n\t\t\tif ( insertPosition.offset <= this.path[ i ] ) {\n\t\t\t\t// And are inserted before next node of that path...\n\t\t\t\t// \"Push\" the index on that path.\n\t\t\t\t( transformed.path as Array<number> )[ i ] += howMany;\n\t\t\t}\n\t\t}\n\n\t\treturn transformed;\n\t}\n\n\t/**\n\t * Returns a copy of this position that is updated by moving `howMany` nodes from `sourcePosition` to `targetPosition`.\n\t *\n\t * @internal\n\t * @param sourcePosition Position before the first element to move.\n\t * @param targetPosition Position where moved elements will be inserted.\n\t * @param howMany How many consecutive nodes to move, starting from `sourcePosition`.\n\t * @returns Transformed position.\n\t */\n\tpublic _getTransformedByMove( sourcePosition: Position, targetPosition: Position, howMany: number ): Position {\n\t\t// Update target position, as it could be affected by nodes removal.\n\t\ttargetPosition = targetPosition._getTransformedByDeletion( sourcePosition, howMany )!;\n\n\t\tif ( sourcePosition.isEqual( targetPosition ) ) {\n\t\t\t// If `targetPosition` is equal to `sourcePosition` this isn't really any move. Just return position as it is.\n\t\t\treturn Position._createAt( this );\n\t\t}\n\n\t\t// Moving a range removes nodes from their original position. We acknowledge this by proper transformation.\n\t\tconst transformed = this._getTransformedByDeletion( sourcePosition, howMany );\n\n\t\tconst isMoved = transformed === null ||\n\t\t\t( sourcePosition.isEqual( this ) && this.stickiness == 'toNext' ) ||\n\t\t\t( sourcePosition.getShiftedBy( howMany ).isEqual( this ) && this.stickiness == 'toPrevious' );\n\n\t\tif ( isMoved ) {\n\t\t\t// This position is inside moved range (or sticks to it).\n\t\t\t// In this case, we calculate a combination of this position, move source position and target position.\n\t\t\treturn this._getCombined( sourcePosition, targetPosition );\n\t\t} else {\n\t\t\t// This position is not inside a removed range.\n\t\t\t//\n\t\t\t// In next step, we simply reflect inserting `howMany` nodes, which might further affect the position.\n\t\t\treturn transformed._getTransformedByInsertion( targetPosition, howMany );\n\t\t}\n\t}\n\n\t/**\n\t * Returns a new position that is a combination of this position and given positions.\n\t *\n\t * The combined position is a copy of this position transformed by moving a range starting at `source` position\n\t * to the `target` position. It is expected that this position is inside the moved range.\n\t *\n\t * Example:\n\t *\n\t * ```ts\n\t * let original = model.createPositionFromPath( root, [ 2, 3, 1 ] );\n\t * let source = model.createPositionFromPath( root, [ 2, 2 ] );\n\t * let target = model.createPositionFromPath( otherRoot, [ 1, 1, 3 ] );\n\t * original._getCombined( source, target ); // path is [ 1, 1, 4, 1 ], root is `otherRoot`\n\t * ```\n\t *\n\t * Explanation:\n\t *\n\t * We have a position `[ 2, 3, 1 ]` and move some nodes from `[ 2, 2 ]` to `[ 1, 1, 3 ]`. The original position\n\t * was inside moved nodes and now should point to the new place. The moved nodes will be after\n\t * positions `[ 1, 1, 3 ]`, `[ 1, 1, 4 ]`, `[ 1, 1, 5 ]`. Since our position was in the second moved node,\n\t * the transformed position will be in a sub-tree of a node at `[ 1, 1, 4 ]`. Looking at original path, we\n\t * took care of `[ 2, 3 ]` part of it. Now we have to add the rest of the original path to the transformed path.\n\t * Finally, the transformed position will point to `[ 1, 1, 4, 1 ]`.\n\t *\n\t * @internal\n\t * @param source Beginning of the moved range.\n\t * @param target Position where the range is moved.\n\t * @returns Combined position.\n\t */\n\tpublic _getCombined( source: Position, target: Position ): Position {\n\t\tconst i = source.path.length - 1;\n\n\t\t// The first part of a path to combined position is a path to the place where nodes were moved.\n\t\tconst combined = Position._createAt( target );\n\t\tcombined.stickiness = this.stickiness;\n\n\t\t// Then we have to update the rest of the path.\n\n\t\t// Fix the offset because this position might be after `from` position and we have to reflect that.\n\t\tcombined.offset = combined.offset + this.path[ i ] - source.offset;\n\n\t\t// Then, add the rest of the path.\n\t\t// If this position is at the same level as `from` position nothing will get added.\n\t\t( combined as any ).path = [ ...combined.path, ...this.path.slice( i + 1 ) ];\n\n\t\treturn combined;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic toJSON(): unknown {\n\t\treturn {\n\t\t\troot: this.root.toJSON(),\n\t\t\tpath: Array.from( this.path ),\n\t\t\tstickiness: this.stickiness\n\t\t};\n\t}\n\n\t/**\n\t * Returns a new position that is equal to current position.\n\t */\n\tpublic clone(): this {\n\t\treturn new ( this.constructor as any )( this.root, this.path, this.stickiness );\n\t}\n\n\t/**\n\t * Creates position at the given location. The location can be specified as:\n\t *\n\t * * a {@link module:engine/model/position~Position position},\n\t * * parent element and offset (offset defaults to `0`),\n\t * * parent element and `'end'` (sets position at the end of that element),\n\t * * {@link module:engine/model/item~Item model item} and `'before'` or `'after'` (sets position before or after given model item).\n\t *\n\t * This method is a shortcut to other factory methods such as:\n\t *\n\t * * {@link module:engine/model/position~Position._createBefore},\n\t * * {@link module:engine/model/position~Position._createAfter}.\n\t *\n\t * @internal\n\t * @param offset Offset or one of the flags. Used only when the first parameter is a {@link module:engine/model/item~Item model item}.\n\t * @param stickiness Position stickiness. Used only when the first parameter is a {@link module:engine/model/item~Item model item}.\n\t */\n\tpublic static _createAt(\n\t\titemOrPosition: Item | Position | DocumentFragment,\n\t\toffset?: PositionOffset,\n\t\tstickiness: PositionStickiness = 'toNone'\n\t): Position {\n\t\tif ( itemOrPosition instanceof Position ) {\n\t\t\treturn new Position( itemOrPosition.root, itemOrPosition.path, itemOrPosition.stickiness );\n\t\t} else {\n\t\t\tconst node = itemOrPosition;\n\n\t\t\tif ( offset == 'end' ) {\n\t\t\t\toffset = ( node as any ).maxOffset;\n\t\t\t} else if ( offset == 'before' ) {\n\t\t\t\treturn this._createBefore( node, stickiness );\n\t\t\t} else if ( offset == 'after' ) {\n\t\t\t\treturn this._createAfter( node, stickiness );\n\t\t\t} else if ( offset !== 0 && !offset ) {\n\t\t\t\t/**\n\t\t\t\t * {@link module:engine/model/model~Model#createPositionAt `Model#createPositionAt()`}\n\t\t\t\t * requires the offset to be specified when the first parameter is a model item.\n\t\t\t\t *\n\t\t\t\t * @error model-createpositionat-offset-required\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'model-createpositionat-offset-required', [ this, itemOrPosition ] );\n\t\t\t}\n\n\t\t\tif ( !node.is( 'element' ) && !node.is( 'documentFragment' ) ) {\n\t\t\t\t/**\n\t\t\t\t * Position parent have to be a model element or model document fragment.\n\t\t\t\t *\n\t\t\t\t * @error model-position-parent-incorrect\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'model-position-parent-incorrect',\n\t\t\t\t\t[ this, itemOrPosition ]\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst path = node.getPath();\n\n\t\t\tpath.push( offset as any );\n\n\t\t\treturn new this( node.root as any, path, stickiness );\n\t\t}\n\t}\n\n\t/**\n\t * Creates a new position, after given {@link module:engine/model/item~Item model item}.\n\t *\n\t * @internal\n\t * @param item Item after which the position should be placed.\n\t * @param stickiness Position stickiness.\n\t */\n\tpublic static _createAfter( item: Item | DocumentFragment, stickiness?: PositionStickiness ): Position {\n\t\tif ( !item.parent ) {\n\t\t\t/**\n\t\t\t * You can not make a position after a root element.\n\t\t\t *\n\t\t\t * @error model-position-after-root\n\t\t\t * @param root\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'model-position-after-root',\n\t\t\t\t[ this, item ],\n\t\t\t\t{ root: item }\n\t\t\t);\n\t\t}\n\n\t\treturn this._createAt( item.parent, item.endOffset!, stickiness );\n\t}\n\n\t/**\n\t * Creates a new position, before the given {@link module:engine/model/item~Item model item}.\n\t *\n\t * @internal\n\t * @param item Item before which the position should be placed.\n\t * @param stickiness Position stickiness.\n\t */\n\tpublic static _createBefore( item: Item | DocumentFragment, stickiness?: PositionStickiness ): Position {\n\t\tif ( !item.parent ) {\n\t\t\t/**\n\t\t\t * You can not make a position before a root element.\n\t\t\t *\n\t\t\t * @error model-position-before-root\n\t\t\t * @param root\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'model-position-before-root',\n\t\t\t\titem,\n\t\t\t\t{ root: item }\n\t\t\t);\n\t\t}\n\n\t\treturn this._createAt( item.parent, item.startOffset!, stickiness );\n\t}\n\n\t/**\n\t * Creates a `Position` instance from given plain object (i.e. parsed JSON string).\n\t *\n\t * @param json Plain object to be converted to `Position`.\n\t * @param doc Document object that will be position owner.\n\t * @returns `Position` instance created using given plain object.\n\t */\n\tpublic static fromJSON( json: any, doc: Document ): Position {\n\t\tif ( json.root === '$graveyard' ) {\n\t\t\tconst pos = new Position( doc.graveyard, json.path );\n\t\t\tpos.stickiness = json.stickiness;\n\n\t\t\treturn pos;\n\t\t}\n\n\t\tif ( !doc.getRoot( json.root ) ) {\n\t\t\t/**\n\t\t\t * Cannot create position for document. Root with specified name does not exist.\n\t\t\t *\n\t\t\t * @error model-position-fromjson-no-root\n\t\t\t * @param rootName\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'model-position-fromjson-no-root',\n\t\t\t\tdoc,\n\t\t\t\t{ rootName: json.root }\n\t\t\t);\n\t\t}\n\n\t\treturn new Position( doc.getRoot( json.root )!, json.path, json.stickiness );\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \treturn `${ this.root } [ ${ this.path.join( ', ' ) } ]`;\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public log(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( 'ModelPosition: ' + this );\n\t// @if CK_DEBUG_ENGINE // }\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nPosition.prototype.is = function( type: string ): boolean {\n\treturn type === 'position' || type === 'model:position';\n};\n\n/**\n * A flag indicating whether this position is `'before'` or `'after'` or `'same'` as given position.\n * If positions are in different roots `'different'` flag is returned.\n */\nexport type PositionRelation = 'before' | 'after' | 'same' | 'different';\n\n/**\n * Offset or one of the flags.\n */\nexport type PositionOffset = number | 'before' | 'after' | 'end';\n\n/**\n * Represents how position is \"sticking\" with neighbour nodes. Used to define how position should be transformed (moved)\n * in edge cases. Possible values: `'toNone'`, `'toNext'`, `'toPrevious'`.\n *\n * Examples:\n *\n * ```\n * Insert. Position is at | and nodes are inserted at the same position, marked as ^:\n *\n * - sticks to none: <p>f^|oo</p> -> <p>fbar|oo</p>\n * - sticks to next node: <p>f^|oo</p> -> <p>fbar|oo</p>\n * - sticks to previous node: <p>f|^oo</p> -> <p>f|baroo</p>\n * ```\n *\n *\n * Move. Position is at | and range [oo] is moved to position ^:\n *\n * ```\n * - sticks to none: <p>f|[oo]</p><p>b^ar</p> -> <p>f|</p><p>booar</p>\n * - sticks to none: <p>f[oo]|</p><p>b^ar</p> -> <p>f|</p><p>booar</p>\n *\n * - sticks to next node: <p>f|[oo]</p><p>b^ar</p> -> <p>f</p><p>b|ooar</p>\n * - sticks to next node: <p>f[oo]|</p><p>b^ar</p> -> <p>f|</p><p>booar</p>\n *\n * - sticks to previous node: <p>f|[oo]</p><p>b^ar</p> -> <p>f|</p><p>booar</p>\n * - sticks to previous node: <p>f[oo]|</p><p>b^ar</p> -> <p>f</p><p>boo|ar</p>\n * ```\n */\nexport type PositionStickiness = 'toNone' | 'toNext' | 'toPrevious';\n\n/**\n * Returns a text node at the given position.\n *\n * This is a helper function optimized to reuse the position parent instance for performance reasons.\n *\n * Normally, you should use {@link module:engine/model/position~Position#textNode `Position#textNode`}.\n * If you start hitting performance issues with {@link module:engine/model/position~Position#parent `Position#parent`}\n * check if your algorithm does not access it multiple times (which can happen directly or indirectly via other position properties).\n *\n * See https://github.com/ckeditor/ckeditor5/issues/6579.\n *\n * See also:\n *\n * * {@link module:engine/model/position~getNodeAfterPosition}\n * * {@link module:engine/model/position~getNodeBeforePosition}\n *\n * @param positionParent The parent of the given position.\n */\nexport function getTextNodeAtPosition( position: Position, positionParent: Element | DocumentFragment ): Text | null {\n\tconst node = positionParent.getChild( positionParent.offsetToIndex( position.offset ) );\n\n\tif ( node && node.is( '$text' ) && node.startOffset! < position.offset ) {\n\t\treturn node;\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns the node after the given position.\n *\n * This is a helper function optimized to reuse the position parent instance and the calculation of the text node at the\n * specific position for performance reasons.\n *\n * Normally, you should use {@link module:engine/model/position~Position#nodeAfter `Position#nodeAfter`}.\n * If you start hitting performance issues with {@link module:engine/model/position~Position#parent `Position#parent`} and/or\n * {@link module:engine/model/position~Position#textNode `Position#textNode`}\n * check if your algorithm does not access those properties multiple times\n * (which can happen directly or indirectly via other position properties).\n *\n * See https://github.com/ckeditor/ckeditor5/issues/6579 and https://github.com/ckeditor/ckeditor5/issues/6582.\n *\n * See also:\n *\n * * {@link module:engine/model/position~getTextNodeAtPosition}\n * * {@link module:engine/model/position~getNodeBeforePosition}\n *\n * @param positionParent The parent of the given position.\n * @param textNode Text node at the given position.\n */\nexport function getNodeAfterPosition(\n\tposition: Position,\n\tpositionParent: Element | DocumentFragment,\n\ttextNode: Text | null\n): Node | null {\n\tif ( textNode !== null ) {\n\t\treturn null;\n\t}\n\n\treturn positionParent.getChild( positionParent.offsetToIndex( position.offset ) );\n}\n\n/**\n * Returns the node before the given position.\n *\n * Refer to {@link module:engine/model/position~getNodeBeforePosition} for documentation on when to use this util method.\n *\n * See also:\n *\n * * {@link module:engine/model/position~getTextNodeAtPosition}\n * * {@link module:engine/model/position~getNodeAfterPosition}\n *\n * @param positionParent The parent of the given position.\n * @param textNode Text node at the given position.\n */\nexport function getNodeBeforePosition(\n\tposition: Position,\n\tpositionParent: Element | DocumentFragment,\n\ttextNode: Text | null\n): Node | null {\n\tif ( textNode !== null ) {\n\t\treturn null;\n\t}\n\n\treturn positionParent.getChild( positionParent.offsetToIndex( position.offset ) - 1 );\n}\n\n/**\n * This is a helper function for `Position#isTouching()`.\n *\n * It checks whether to given positions are touching, considering that they have the same root and paths\n * until given level, and at given level they differ by 1 (so they are branching at `level` point).\n *\n * The exact requirements for touching positions are described in `Position#isTouching()` and also\n * in the body of this function.\n *\n * @param left Position \"on the left\" (it is before `right`).\n * @param right Position \"on the right\" (it is after `left`).\n * @param level Level on which the positions are different.\n */\nfunction checkTouchingBranch( left: Position, right: Position, level: number ): boolean {\n\tif ( level + 1 === left.path.length ) {\n\t\t// Left position does not have any more entries after the point where the positions differ.\n\t\t// [ 2 ] vs [ 3 ]\n\t\t// [ 2 ] vs [ 3, 0, 0 ]\n\t\t// The positions are spread by node at [ 2 ].\n\t\treturn false;\n\t}\n\n\tif ( !checkOnlyZeroes( right.path, level + 1 ) ) {\n\t\t// Right position does not have only zeroes, so we have situation like:\n\t\t// [ 2, maxOffset ] vs [ 3, 1 ]\n\t\t// [ 2, maxOffset ] vs [ 3, 1, 0, 0 ]\n\t\t// The positions are spread by node at [ 3, 0 ].\n\t\treturn false;\n\t}\n\n\tif ( !checkOnlyMaxOffset( left, level + 1 ) ) {\n\t\t// Left position does not have only max offsets, so we have situation like:\n\t\t// [ 2, 4 ] vs [ 3 ]\n\t\t// [ 2, 4 ] vs [ 3, 0, 0 ]\n\t\t// The positions are spread by node at [ 2, 5 ].\n\t\treturn false;\n\t}\n\n\t// Left position has only max offsets and right position has only zeroes or nothing.\n\t// [ 2, maxOffset ] vs [ 3 ]\n\t// [ 2, maxOffset, maxOffset ] vs [ 3, 0 ]\n\t// There are not elements between positions. The positions are touching.\n\treturn true;\n}\n\n/**\n * Checks whether for given array, starting from given index until the end of the array, all items are `0`s.\n *\n * This is a helper function for `Position#isTouching()`.\n */\nfunction checkOnlyZeroes( arr: ReadonlyArray<number>, idx: number ): boolean {\n\twhile ( idx < arr.length ) {\n\t\tif ( arr[ idx ] !== 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tidx++;\n\t}\n\n\treturn true;\n}\n\n/**\n * Checks whether for given position, starting from given path level, whether the position is at the end of\n * its parent and whether each element on the path to the position is also at at the end of its parent.\n *\n * This is a helper function for `Position#isTouching()`.\n */\nfunction checkOnlyMaxOffset( pos: Position, level: number ): boolean {\n\tlet parent = pos.parent;\n\tlet idx = pos.path.length - 1;\n\tlet add = 0;\n\n\twhile ( idx >= level ) {\n\t\tif ( pos.path[ idx ] + add !== parent.maxOffset ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// After the first check, we \"go up\", and check whether the position's parent-parent is the last element.\n\t\t// However, we need to add 1 to the value in the path to \"simulate\" moving the path after the parent.\n\t\t// It happens just once.\n\t\tadd = 1;\n\t\tidx--;\n\t\tparent = parent.parent!;\n\t}\n\n\treturn true;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/range\n */\n\nimport TypeCheckable from './typecheckable';\nimport Position from './position';\nimport TreeWalker, { type TreeWalkerOptions, type TreeWalkerValue } from './treewalker';\n\nimport type Document from './document';\nimport type DocumentFragment from './documentfragment';\nimport type Element from './element';\nimport type InsertOperation from './operation/insertoperation';\nimport type Item from './item';\nimport type MergeOperation from './operation/mergeoperation';\nimport type MoveOperation from './operation/moveoperation';\nimport type Operation from './operation/operation';\nimport type SplitOperation from './operation/splitoperation';\n\nimport { CKEditorError, compareArrays } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Represents a range in the model tree.\n *\n * A range is defined by its {@link module:engine/model/range~Range#start} and {@link module:engine/model/range~Range#end}\n * positions.\n *\n * You can create range instances via its constructor or the `createRange*()` factory methods of\n * {@link module:engine/model/model~Model} and {@link module:engine/model/writer~Writer}.\n */\nexport default class Range extends TypeCheckable implements Iterable<TreeWalkerValue> {\n\t/**\n\t * Start position.\n\t */\n\tpublic readonly start: Position;\n\n\t/**\n\t * End position.\n\t */\n\tpublic readonly end: Position;\n\n\t/**\n\t * Creates a range spanning from `start` position to `end` position.\n\t *\n\t * @param start The start position.\n\t * @param end The end position. If not set, the range will be collapsed at the `start` position.\n\t */\n\tconstructor( start: Position, end?: Position | null ) {\n\t\tsuper();\n\n\t\tthis.start = Position._createAt( start );\n\t\tthis.end = end ? Position._createAt( end ) : Position._createAt( start );\n\n\t\t// If the range is collapsed, treat in a similar way as a position and set its boundaries stickiness to 'toNone'.\n\t\t// In other case, make the boundaries stick to the \"inside\" of the range.\n\t\tthis.start.stickiness = this.isCollapsed ? 'toNone' : 'toNext';\n\t\tthis.end.stickiness = this.isCollapsed ? 'toNone' : 'toPrevious';\n\t}\n\n\t/**\n\t * Iterable interface.\n\t *\n\t * Iterates over all {@link module:engine/model/item~Item items} that are in this range and returns\n\t * them together with additional information like length or {@link module:engine/model/position~Position positions},\n\t * grouped as {@link module:engine/model/treewalker~TreeWalkerValue}.\n\t * It iterates over all {@link module:engine/model/textproxy~TextProxy text contents} that are inside the range\n\t * and all the {@link module:engine/model/element~Element}s that are entered into when iterating over this range.\n\t *\n\t * This iterator uses {@link module:engine/model/treewalker~TreeWalker} with `boundaries` set to this range\n\t * and `ignoreElementEnd` option set to `true`.\n\t */\n\tpublic* [ Symbol.iterator ](): IterableIterator<TreeWalkerValue> {\n\t\tyield* new TreeWalker( { boundaries: this, ignoreElementEnd: true } );\n\t}\n\n\t/**\n\t * Describes whether the range is collapsed, that is if {@link #start} and\n\t * {@link #end} positions are equal.\n\t */\n\tpublic get isCollapsed(): boolean {\n\t\treturn this.start.isEqual( this.end );\n\t}\n\n\t/**\n\t * Describes whether this range is flat, that is if {@link #start} position and\n\t * {@link #end} position are in the same {@link module:engine/model/position~Position#parent}.\n\t */\n\tpublic get isFlat(): boolean {\n\t\tconst startParentPath = this.start.getParentPath();\n\t\tconst endParentPath = this.end.getParentPath();\n\n\t\treturn compareArrays( startParentPath, endParentPath ) == 'same';\n\t}\n\n\t/**\n\t * Range root element.\n\t */\n\tpublic get root(): Element | DocumentFragment {\n\t\treturn this.start.root;\n\t}\n\n\t/**\n\t * Checks whether this range contains given {@link module:engine/model/position~Position position}.\n\t *\n\t * @param position Position to check.\n\t * @returns `true` if given {@link module:engine/model/position~Position position} is contained\n\t * in this range,`false` otherwise.\n\t */\n\tpublic containsPosition( position: Position ): boolean {\n\t\treturn position.isAfter( this.start ) && position.isBefore( this.end );\n\t}\n\n\t/**\n\t * Checks whether this range contains given {@link ~Range range}.\n\t *\n\t * @param otherRange Range to check.\n\t * @param loose Whether the check is loose or strict. If the check is strict (`false`), compared range cannot\n\t * start or end at the same position as this range boundaries. If the check is loose (`true`), compared range can start, end or\n\t * even be equal to this range. Note that collapsed ranges are always compared in strict mode.\n\t * @returns {Boolean} `true` if given {@link ~Range range} boundaries are contained by this range, `false` otherwise.\n\t */\n\tpublic containsRange( otherRange: Range, loose: boolean = false ): boolean {\n\t\tif ( otherRange.isCollapsed ) {\n\t\t\tloose = false;\n\t\t}\n\n\t\tconst containsStart = this.containsPosition( otherRange.start ) || ( loose && this.start.isEqual( otherRange.start ) );\n\t\tconst containsEnd = this.containsPosition( otherRange.end ) || ( loose && this.end.isEqual( otherRange.end ) );\n\n\t\treturn containsStart && containsEnd;\n\t}\n\n\t/**\n\t * Checks whether given {@link module:engine/model/item~Item} is inside this range.\n\t */\n\tpublic containsItem( item: Item ): boolean {\n\t\tconst pos = Position._createBefore( item );\n\n\t\treturn this.containsPosition( pos ) || this.start.isEqual( pos );\n\t}\n\n\t/**\n\t * Two ranges are equal if their {@link #start} and {@link #end} positions are equal.\n\t *\n\t * @param otherRange Range to compare with.\n\t * @returns `true` if ranges are equal, `false` otherwise.\n\t */\n\tpublic isEqual( otherRange: Range ): boolean {\n\t\treturn this.start.isEqual( otherRange.start ) && this.end.isEqual( otherRange.end );\n\t}\n\n\t/**\n\t * Checks and returns whether this range intersects with given range.\n\t *\n\t * @param otherRange Range to compare with.\n\t * @returns `true` if ranges intersect, `false` otherwise.\n\t */\n\tpublic isIntersecting( otherRange: Range ): boolean {\n\t\treturn this.start.isBefore( otherRange.end ) && this.end.isAfter( otherRange.start );\n\t}\n\n\t/**\n\t * Computes which part(s) of this {@link ~Range range} is not a part of given {@link ~Range range}.\n\t * Returned array contains zero, one or two {@link ~Range ranges}.\n\t *\n\t * Examples:\n\t *\n\t * ```ts\n\t * let range = model.createRange(\n\t * \tmodel.createPositionFromPath( root, [ 2, 7 ] ),\n\t * \tmodel.createPositionFromPath( root, [ 4, 0, 1 ] )\n\t * );\n\t * let otherRange = model.createRange( model.createPositionFromPath( root, [ 1 ] ), model.createPositionFromPath( root, [ 5 ] ) );\n\t * let transformed = range.getDifference( otherRange );\n\t * // transformed array has no ranges because `otherRange` contains `range`\n\t *\n\t * otherRange = model.createRange( model.createPositionFromPath( root, [ 1 ] ), model.createPositionFromPath( root, [ 3 ] ) );\n\t * transformed = range.getDifference( otherRange );\n\t * // transformed array has one range: from [ 3 ] to [ 4, 0, 1 ]\n\t *\n\t * otherRange = model.createRange( model.createPositionFromPath( root, [ 3 ] ), model.createPositionFromPath( root, [ 4 ] ) );\n\t * transformed = range.getDifference( otherRange );\n\t * // transformed array has two ranges: from [ 2, 7 ] to [ 3 ] and from [ 4 ] to [ 4, 0, 1 ]\n\t * ```\n\t *\n\t * @param otherRange Range to differentiate against.\n\t * @returns The difference between ranges.\n\t */\n\tpublic getDifference( otherRange: Range ): Array<Range> {\n\t\tconst ranges = [];\n\n\t\tif ( this.isIntersecting( otherRange ) ) {\n\t\t\t// Ranges intersect.\n\n\t\t\tif ( this.containsPosition( otherRange.start ) ) {\n\t\t\t\t// Given range start is inside this range. This means that we have to\n\t\t\t\t// add shrunken range - from the start to the middle of this range.\n\t\t\t\tranges.push( new Range( this.start, otherRange.start ) );\n\t\t\t}\n\n\t\t\tif ( this.containsPosition( otherRange.end ) ) {\n\t\t\t\t// Given range end is inside this range. This means that we have to\n\t\t\t\t// add shrunken range - from the middle of this range to the end.\n\t\t\t\tranges.push( new Range( otherRange.end, this.end ) );\n\t\t\t}\n\t\t} else {\n\t\t\t// Ranges do not intersect, return the original range.\n\t\t\tranges.push( new Range( this.start, this.end ) );\n\t\t}\n\n\t\treturn ranges;\n\t}\n\n\t/**\n\t * Returns an intersection of this {@link ~Range range} and given {@link ~Range range}.\n\t * Intersection is a common part of both of those ranges. If ranges has no common part, returns `null`.\n\t *\n\t * Examples:\n\t *\n\t * ```ts\n\t * let range = model.createRange(\n\t * \tmodel.createPositionFromPath( root, [ 2, 7 ] ),\n\t * \tmodel.createPositionFromPath( root, [ 4, 0, 1 ] )\n\t * );\n\t * let otherRange = model.createRange( model.createPositionFromPath( root, [ 1 ] ), model.createPositionFromPath( root, [ 2 ] ) );\n\t * let transformed = range.getIntersection( otherRange ); // null - ranges have no common part\n\t *\n\t * otherRange = model.createRange( model.createPositionFromPath( root, [ 3 ] ), model.createPositionFromPath( root, [ 5 ] ) );\n\t * transformed = range.getIntersection( otherRange ); // range from [ 3 ] to [ 4, 0, 1 ]\n\t * ```\n\t *\n\t * @param otherRange Range to check for intersection.\n\t * @returns A common part of given ranges or `null` if ranges have no common part.\n\t */\n\tpublic getIntersection( otherRange: Range ): Range | null {\n\t\tif ( this.isIntersecting( otherRange ) ) {\n\t\t\t// Ranges intersect, so a common range will be returned.\n\t\t\t// At most, it will be same as this range.\n\t\t\tlet commonRangeStart = this.start;\n\t\t\tlet commonRangeEnd = this.end;\n\n\t\t\tif ( this.containsPosition( otherRange.start ) ) {\n\t\t\t\t// Given range start is inside this range. This means thaNt we have to\n\t\t\t\t// shrink common range to the given range start.\n\t\t\t\tcommonRangeStart = otherRange.start;\n\t\t\t}\n\n\t\t\tif ( this.containsPosition( otherRange.end ) ) {\n\t\t\t\t// Given range end is inside this range. This means that we have to\n\t\t\t\t// shrink common range to the given range end.\n\t\t\t\tcommonRangeEnd = otherRange.end;\n\t\t\t}\n\n\t\t\treturn new Range( commonRangeStart, commonRangeEnd );\n\t\t}\n\n\t\t// Ranges do not intersect, so they do not have common part.\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns a range created by joining this {@link ~Range range} with the given {@link ~Range range}.\n\t * If ranges have no common part, returns `null`.\n\t *\n\t * Examples:\n\t *\n\t * ```ts\n\t * let range = model.createRange(\n\t * \tmodel.createPositionFromPath( root, [ 2, 7 ] ),\n\t * \tmodel.createPositionFromPath( root, [ 4, 0, 1 ] )\n\t * );\n\t * let otherRange = model.createRange(\n\t * \tmodel.createPositionFromPath( root, [ 1 ] ),\n\t * \tmodel.createPositionFromPath( root, [ 2 ] )\n \t * );\n\t * let transformed = range.getJoined( otherRange ); // null - ranges have no common part\n\t *\n\t * otherRange = model.createRange(\n\t * \tmodel.createPositionFromPath( root, [ 3 ] ),\n\t * \tmodel.createPositionFromPath( root, [ 5 ] )\n\t * );\n\t * transformed = range.getJoined( otherRange ); // range from [ 2, 7 ] to [ 5 ]\n\t * ```\n\t *\n\t * @param otherRange Range to be joined.\n\t * @param loose Whether the intersection check is loose or strict. If the check is strict (`false`),\n\t * ranges are tested for intersection or whether start/end positions are equal. If the check is loose (`true`),\n\t * compared range is also checked if it's {@link module:engine/model/position~Position#isTouching touching} current range.\n\t * @returns A sum of given ranges or `null` if ranges have no common part.\n\t */\n\tpublic getJoined( otherRange: Range, loose: boolean = false ): Range | null {\n\t\tlet shouldJoin = this.isIntersecting( otherRange );\n\n\t\tif ( !shouldJoin ) {\n\t\t\tif ( this.start.isBefore( otherRange.start ) ) {\n\t\t\t\tshouldJoin = loose ? this.end.isTouching( otherRange.start ) : this.end.isEqual( otherRange.start );\n\t\t\t} else {\n\t\t\t\tshouldJoin = loose ? otherRange.end.isTouching( this.start ) : otherRange.end.isEqual( this.start );\n\t\t\t}\n\t\t}\n\n\t\tif ( !shouldJoin ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tlet startPosition = this.start;\n\t\tlet endPosition = this.end;\n\n\t\tif ( otherRange.start.isBefore( startPosition ) ) {\n\t\t\tstartPosition = otherRange.start;\n\t\t}\n\n\t\tif ( otherRange.end.isAfter( endPosition ) ) {\n\t\t\tendPosition = otherRange.end;\n\t\t}\n\n\t\treturn new Range( startPosition, endPosition );\n\t}\n\n\t/**\n\t * Computes and returns the smallest set of {@link #isFlat flat} ranges, that covers this range in whole.\n\t *\n\t * See an example of a model structure (`[` and `]` are range boundaries):\n\t *\n\t * ```\n\t * root root\n\t * |- element DIV DIV P2 P3 DIV\n\t * | |- element H H P1 f o o b a r H P4\n\t * | | |- \"fir[st\" fir[st lorem se]cond ipsum\n\t * | |- element P1\n\t * | | |- \"lorem\" ||\n\t * |- element P2 ||\n\t * | |- \"foo\" VV\n\t * |- element P3\n\t * | |- \"bar\" root\n\t * |- element DIV DIV [P2 P3] DIV\n\t * | |- element H H [P1] f o o b a r H P4\n\t * | | |- \"se]cond\" fir[st] lorem [se]cond ipsum\n\t * | |- element P4\n\t * | | |- \"ipsum\"\n\t * ```\n\t *\n\t * As it can be seen, letters contained in the range are: `stloremfoobarse`, spread across different parents.\n\t * We are looking for minimal set of flat ranges that contains the same nodes.\n\t *\n\t * Minimal flat ranges for above range `( [ 0, 0, 3 ], [ 3, 0, 2 ] )` will be:\n\t *\n\t * ```\n\t * ( [ 0, 0, 3 ], [ 0, 0, 5 ] ) = \"st\"\n\t * ( [ 0, 1 ], [ 0, 2 ] ) = element P1 (\"lorem\")\n\t * ( [ 1 ], [ 3 ] ) = element P2, element P3 (\"foobar\")\n\t * ( [ 3, 0, 0 ], [ 3, 0, 2 ] ) = \"se\"\n\t * ```\n\t *\n\t * **Note:** if an {@link module:engine/model/element~Element element} is not wholly contained in this range, it won't be returned\n\t * in any of the returned flat ranges. See in the example how `H` elements at the beginning and at the end of the range\n\t * were omitted. Only their parts that were wholly in the range were returned.\n\t *\n\t * **Note:** this method is not returning flat ranges that contain no nodes.\n\t *\n\t * @returns Array of flat ranges covering this range.\n\t */\n\tpublic getMinimalFlatRanges(): Array<Range> {\n\t\tconst ranges = [];\n\t\tconst diffAt = this.start.getCommonPath( this.end ).length;\n\n\t\tconst pos = Position._createAt( this.start );\n\t\tlet posParent = pos.parent;\n\n\t\t// Go up.\n\t\twhile ( pos.path.length > diffAt + 1 ) {\n\t\t\tconst howMany = posParent.maxOffset - pos.offset;\n\n\t\t\tif ( howMany !== 0 ) {\n\t\t\t\tranges.push( new Range( pos, pos.getShiftedBy( howMany ) ) );\n\t\t\t}\n\n\t\t\t( pos as any ).path = pos.path.slice( 0, -1 );\n\t\t\tpos.offset++;\n\t\t\tposParent = posParent.parent!;\n\t\t}\n\n\t\t// Go down.\n\t\twhile ( pos.path.length <= this.end.path.length ) {\n\t\t\tconst offset = this.end.path[ pos.path.length - 1 ];\n\t\t\tconst howMany = offset - pos.offset;\n\n\t\t\tif ( howMany !== 0 ) {\n\t\t\t\tranges.push( new Range( pos, pos.getShiftedBy( howMany ) ) );\n\t\t\t}\n\n\t\t\tpos.offset = offset;\n\t\t\t( pos.path as Array<number> ).push( 0 );\n\t\t}\n\n\t\treturn ranges;\n\t}\n\n\t/**\n\t * Creates a {@link module:engine/model/treewalker~TreeWalker TreeWalker} instance with this range as a boundary.\n\t *\n\t * For example, to iterate over all items in the entire document root:\n\t *\n\t * ```ts\n\t * // Create a range spanning over the entire root content:\n\t * const range = editor.model.createRangeIn( editor.model.document.getRoot() );\n\t *\n\t * // Iterate over all items in this range:\n\t * for ( const value of range.getWalker() ) {\n\t * \tconsole.log( value.item );\n\t * }\n\t * ```\n\t *\n\t * @param options Object with configuration options. See {@link module:engine/model/treewalker~TreeWalker}.\n\t */\n\tpublic getWalker( options: TreeWalkerOptions = {} ): TreeWalker {\n\t\toptions.boundaries = this;\n\n\t\treturn new TreeWalker( options );\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all {@link module:engine/model/item~Item items} that are in this range and returns\n\t * them.\n\t *\n\t * This method uses {@link module:engine/model/treewalker~TreeWalker} with `boundaries` set to this range and `ignoreElementEnd` option\n\t * set to `true`. However it returns only {@link module:engine/model/item~Item model items},\n\t * not {@link module:engine/model/treewalker~TreeWalkerValue}.\n\t *\n\t * You may specify additional options for the tree walker. See {@link module:engine/model/treewalker~TreeWalker} for\n\t * a full list of available options.\n\t *\n\t * @param options Object with configuration options. See {@link module:engine/model/treewalker~TreeWalker}.\n\t */\n\tpublic* getItems( options: TreeWalkerOptions = {} ): IterableIterator<Item> {\n\t\toptions.boundaries = this;\n\t\toptions.ignoreElementEnd = true;\n\n\t\tconst treeWalker = new TreeWalker( options );\n\n\t\tfor ( const value of treeWalker ) {\n\t\t\tyield value.item;\n\t\t}\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all {@link module:engine/model/position~Position positions} that are boundaries or\n\t * contained in this range.\n\t *\n\t * This method uses {@link module:engine/model/treewalker~TreeWalker} with `boundaries` set to this range. However it returns only\n\t * {@link module:engine/model/position~Position positions}, not {@link module:engine/model/treewalker~TreeWalkerValue}.\n\t *\n\t * You may specify additional options for the tree walker. See {@link module:engine/model/treewalker~TreeWalker} for\n\t * a full list of available options.\n\t *\n\t * @param options Object with configuration options. See {@link module:engine/model/treewalker~TreeWalker}.\n\t */\n\tpublic* getPositions( options: TreeWalkerOptions = {} ): IterableIterator<Position> {\n\t\toptions.boundaries = this;\n\n\t\tconst treeWalker = new TreeWalker( options );\n\n\t\tyield treeWalker.position;\n\n\t\tfor ( const value of treeWalker ) {\n\t\t\tyield value.nextPosition;\n\t\t}\n\t}\n\n\t/**\n\t * Returns a range that is a result of transforming this range by given `operation`.\n\t *\n\t * **Note:** transformation may break one range into multiple ranges (for example, when a part of the range is\n\t * moved to a different part of document tree). For this reason, an array is returned by this method and it\n\t * may contain one or more `Range` instances.\n\t *\n\t * @param operation Operation to transform range by.\n\t * @returns Range which is the result of transformation.\n\t */\n\tpublic getTransformedByOperation( operation: Operation ): Array<Range> {\n\t\tswitch ( operation.type ) {\n\t\t\tcase 'insert':\n\t\t\t\treturn this._getTransformedByInsertOperation( operation as InsertOperation );\n\t\t\tcase 'move':\n\t\t\tcase 'remove':\n\t\t\tcase 'reinsert':\n\t\t\t\treturn this._getTransformedByMoveOperation( operation as MoveOperation );\n\t\t\tcase 'split':\n\t\t\t\treturn [ this._getTransformedBySplitOperation( operation as SplitOperation ) ];\n\t\t\tcase 'merge':\n\t\t\t\treturn [ this._getTransformedByMergeOperation( operation as MergeOperation ) ];\n\t\t}\n\n\t\treturn [ new Range( this.start, this.end ) ];\n\t}\n\n\t/**\n\t * Returns a range that is a result of transforming this range by multiple `operations`.\n\t *\n\t * @see ~Range#getTransformedByOperation\n\t * @param operations Operations to transform the range by.\n\t * @returns Range which is the result of transformation.\n\t */\n\tpublic getTransformedByOperations( operations: Iterable<Operation> ): Array<Range> {\n\t\tconst ranges = [ new Range( this.start, this.end ) ];\n\n\t\tfor ( const operation of operations ) {\n\t\t\tfor ( let i = 0; i < ranges.length; i++ ) {\n\t\t\t\tconst result = ranges[ i ].getTransformedByOperation( operation );\n\n\t\t\t\tranges.splice( i, 1, ...result );\n\t\t\t\ti += result.length - 1;\n\t\t\t}\n\t\t}\n\n\t\t// It may happen that a range is split into two, and then the part of second \"piece\" is moved into first\n\t\t// \"piece\". In this case we will have incorrect third range, which should not be included in the result --\n\t\t// because it is already included in the first \"piece\". In this loop we are looking for all such ranges that\n\t\t// are inside other ranges and we simply remove them.\n\t\tfor ( let i = 0; i < ranges.length; i++ ) {\n\t\t\tconst range = ranges[ i ];\n\n\t\t\tfor ( let j = i + 1; j < ranges.length; j++ ) {\n\t\t\t\tconst next = ranges[ j ];\n\n\t\t\t\tif ( range.containsRange( next ) || next.containsRange( range ) || range.isEqual( next ) ) {\n\t\t\t\t\tranges.splice( j, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn ranges;\n\t}\n\n\t/**\n\t * Returns an {@link module:engine/model/element~Element} or {@link module:engine/model/documentfragment~DocumentFragment}\n\t * which is a common ancestor of the range's both ends (in which the entire range is contained).\n\t */\n\tpublic getCommonAncestor(): Element | DocumentFragment | null {\n\t\treturn this.start.getCommonAncestor( this.end );\n\t}\n\n\t/**\n\t * Returns an {@link module:engine/model/element~Element Element} contained by the range.\n\t * The element will be returned when it is the **only** node within the range and **fully–contained**\n\t * at the same time.\n\t */\n\tpublic getContainedElement(): Element | null {\n\t\tif ( this.isCollapsed ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst nodeAfterStart = this.start.nodeAfter;\n\t\tconst nodeBeforeEnd = this.end.nodeBefore;\n\n\t\tif ( nodeAfterStart && nodeAfterStart.is( 'element' ) && nodeAfterStart === nodeBeforeEnd ) {\n\t\t\treturn nodeAfterStart;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Converts `Range` to plain object and returns it.\n\t *\n\t * @returns `Node` converted to plain object.\n\t */\n\tpublic toJSON(): unknown {\n\t\treturn {\n\t\t\tstart: this.start.toJSON(),\n\t\t\tend: this.end.toJSON()\n\t\t};\n\t}\n\n\t/**\n\t * Returns a new range that is equal to current range.\n\t */\n\tpublic clone(): this {\n\t\treturn new ( this.constructor as any )( this.start, this.end );\n\t}\n\n\t/**\n\t * Returns a result of transforming a copy of this range by insert operation.\n\t *\n\t * One or more ranges may be returned as a result of this transformation.\n\t *\n\t * @internal\n\t */\n\tpublic _getTransformedByInsertOperation( operation: InsertOperation, spread: boolean = false ): Array<Range> {\n\t\treturn this._getTransformedByInsertion( operation.position, operation.howMany, spread );\n\t}\n\n\t/**\n\t * Returns a result of transforming a copy of this range by move operation.\n\t *\n\t * One or more ranges may be returned as a result of this transformation.\n\t *\n\t * @internal\n\t */\n\tpublic _getTransformedByMoveOperation( operation: MoveOperation, spread: boolean = false ): Array<Range> {\n\t\tconst sourcePosition = operation.sourcePosition;\n\t\tconst howMany = operation.howMany;\n\t\tconst targetPosition = operation.targetPosition;\n\n\t\treturn this._getTransformedByMove( sourcePosition, targetPosition, howMany, spread );\n\t}\n\n\t/**\n\t * Returns a result of transforming a copy of this range by split operation.\n\t *\n\t * Always one range is returned. The transformation is done in a way to not break the range.\n\t *\n\t * @internal\n\t */\n\tpublic _getTransformedBySplitOperation( operation: SplitOperation ): Range {\n\t\tconst start = this.start._getTransformedBySplitOperation( operation );\n\t\tlet end = this.end._getTransformedBySplitOperation( operation );\n\n\t\tif ( this.end.isEqual( operation.insertionPosition ) ) {\n\t\t\tend = this.end.getShiftedBy( 1 );\n\t\t}\n\n\t\t// Below may happen when range contains graveyard element used by split operation.\n\t\tif ( start.root != end.root ) {\n\t\t\t// End position was next to the moved graveyard element and was moved with it.\n\t\t\t// Fix it by using old `end` which has proper `root`.\n\t\t\tend = this.end.getShiftedBy( -1 );\n\t\t}\n\n\t\treturn new Range( start, end );\n\t}\n\n\t/**\n\t * Returns a result of transforming a copy of this range by merge operation.\n\t *\n\t * Always one range is returned. The transformation is done in a way to not break the range.\n\t *\n\t * @internal\n\t */\n\tpublic _getTransformedByMergeOperation( operation: MergeOperation ): Range {\n\t\t// Special case when the marker is set on \"the closing tag\" of an element. Marker can be set like that during\n\t\t// transformations, especially when a content of a few block elements were removed. For example:\n\t\t//\n\t\t// {} is the transformed range, [] is the removed range.\n\t\t// <p>F[o{o</p><p>B}ar</p><p>Xy]z</p>\n\t\t//\n\t\t// <p>Fo{o</p><p>B}ar</p><p>z</p>\n\t\t// <p>F{</p><p>B}ar</p><p>z</p>\n\t\t// <p>F{</p>}<p>z</p>\n\t\t// <p>F{}z</p>\n\t\t//\n\t\tif ( this.start.isEqual( operation.targetPosition ) && this.end.isEqual( operation.deletionPosition ) ) {\n\t\t\treturn new Range( this.start );\n\t\t}\n\n\t\tlet start = this.start._getTransformedByMergeOperation( operation );\n\t\tlet end = this.end._getTransformedByMergeOperation( operation );\n\n\t\tif ( start.root != end.root ) {\n\t\t\t// This happens when the end position was next to the merged (deleted) element.\n\t\t\t// Then, the end position was moved to the graveyard root. In this case we need to fix\n\t\t\t// the range cause its boundaries would be in different roots.\n\t\t\tend = this.end.getShiftedBy( -1 );\n\t\t}\n\n\t\tif ( start.isAfter( end ) ) {\n\t\t\t// This happens in three following cases:\n\t\t\t//\n\t\t\t// Case 1: Merge operation source position is before the target position (due to some transformations, OT, etc.)\n\t\t\t// This means that start can be moved before the end of the range.\n\t\t\t//\n\t\t\t// Before: <p>a{a</p><p>b}b</p><p>cc</p>\n\t\t\t// Merge: <p>b}b</p><p>cca{a</p>\n\t\t\t// Fix: <p>{b}b</p><p>ccaa</p>\n\t\t\t//\n\t\t\t// Case 2: Range start is before merged node but not directly.\n\t\t\t// Result should include all nodes that were in the original range.\n\t\t\t//\n\t\t\t// Before: <p>aa</p>{<p>cc</p><p>b}b</p>\n\t\t\t// Merge: <p>aab}b</p>{<p>cc</p>\n\t\t\t// Fix: <p>aa{bb</p><p>cc</p>}\n\t\t\t//\n\t\t\t// The range is expanded by an additional `b` letter but it is better than dropping the whole `cc` paragraph.\n\t\t\t//\n\t\t\t// Case 3: Range start is directly before merged node.\n\t\t\t// Resulting range should include only nodes from the merged element:\n\t\t\t//\n\t\t\t// Before: <p>aa</p>{<p>b}b</p><p>cc</p>\n\t\t\t// Merge: <p>aab}b</p>{<p>cc</p>\n\t\t\t// Fix: <p>aa{b}b</p><p>cc</p>\n\t\t\t//\n\n\t\t\tif ( operation.sourcePosition.isBefore( operation.targetPosition ) ) {\n\t\t\t\t// Case 1.\n\t\t\t\tstart = Position._createAt( end );\n\t\t\t\tstart.offset = 0;\n\t\t\t} else {\n\t\t\t\tif ( !operation.deletionPosition.isEqual( start ) ) {\n\t\t\t\t\t// Case 2.\n\t\t\t\t\tend = operation.deletionPosition;\n\t\t\t\t}\n\n\t\t\t\t// In both case 2 and 3 start is at the end of the merge-to element.\n\t\t\t\tstart = operation.targetPosition;\n\t\t\t}\n\n\t\t\treturn new Range( start, end );\n\t\t}\n\n\t\treturn new Range( start, end );\n\t}\n\n\t/**\n\t * Returns an array containing one or two {@link ~Range ranges} that are a result of transforming this\n\t * {@link ~Range range} by inserting `howMany` nodes at `insertPosition`. Two {@link ~Range ranges} are\n\t * returned if the insertion was inside this {@link ~Range range} and `spread` is set to `true`.\n\t *\n\t * Examples:\n\t *\n\t * ```ts\n\t * let range = model.createRange(\n\t * \tmodel.createPositionFromPath( root, [ 2, 7 ] ),\n\t * \tmodel.createPositionFromPath( root, [ 4, 0, 1 ] )\n\t * );\n\t * let transformed = range._getTransformedByInsertion( model.createPositionFromPath( root, [ 1 ] ), 2 );\n\t * // transformed array has one range from [ 4, 7 ] to [ 6, 0, 1 ]\n\t *\n\t * transformed = range._getTransformedByInsertion( model.createPositionFromPath( root, [ 4, 0, 0 ] ), 4 );\n\t * // transformed array has one range from [ 2, 7 ] to [ 4, 0, 5 ]\n\t *\n\t * transformed = range._getTransformedByInsertion( model.createPositionFromPath( root, [ 3, 2 ] ), 4 );\n\t * // transformed array has one range, which is equal to original range\n\t *\n\t * transformed = range._getTransformedByInsertion( model.createPositionFromPath( root, [ 3, 2 ] ), 4, true );\n\t * // transformed array has two ranges: from [ 2, 7 ] to [ 3, 2 ] and from [ 3, 6 ] to [ 4, 0, 1 ]\n\t * ```\n\t *\n\t * @internal\n\t * @param insertPosition Position where nodes are inserted.\n\t * @param howMany How many nodes are inserted.\n\t * @param spread Flag indicating whether this range should be spread if insertion\n\t * was inside the range. Defaults to `false`.\n\t * @returns Result of the transformation.\n\t */\n\tpublic _getTransformedByInsertion( insertPosition: Position, howMany: number, spread: boolean = false ): Array<Range> {\n\t\tif ( spread && this.containsPosition( insertPosition ) ) {\n\t\t\t// Range has to be spread. The first part is from original start to the spread point.\n\t\t\t// The other part is from spread point to the original end, but transformed by\n\t\t\t// insertion to reflect insertion changes.\n\n\t\t\treturn [\n\t\t\t\tnew Range( this.start, insertPosition ),\n\t\t\t\tnew Range(\n\t\t\t\t\tinsertPosition.getShiftedBy( howMany ),\n\t\t\t\t\tthis.end._getTransformedByInsertion( insertPosition, howMany )\n\t\t\t\t)\n\t\t\t];\n\t\t} else {\n\t\t\tconst range = new Range( this.start, this.end );\n\n\t\t\t( range as any ).start = range.start._getTransformedByInsertion( insertPosition, howMany );\n\t\t\t( range as any ).end = range.end._getTransformedByInsertion( insertPosition, howMany );\n\n\t\t\treturn [ range ];\n\t\t}\n\t}\n\n\t/**\n\t * Returns an array containing {@link ~Range ranges} that are a result of transforming this\n\t * {@link ~Range range} by moving `howMany` nodes from `sourcePosition` to `targetPosition`.\n\t *\n\t * @internal\n\t * @param sourcePosition Position from which nodes are moved.\n\t * @param targetPosition Position to where nodes are moved.\n\t * @param howMany How many nodes are moved.\n\t * @param spread Whether the range should be spread if the move points inside the range.\n\t * @returns Result of the transformation.\n\t */\n\tpublic _getTransformedByMove(\n\t\tsourcePosition: Position,\n\t\ttargetPosition: Position,\n\t\thowMany: number,\n\t\tspread: boolean = false\n\t): Array<Range> {\n\t\t// Special case for transforming a collapsed range. Just transform it like a position.\n\t\tif ( this.isCollapsed ) {\n\t\t\tconst newPos = this.start._getTransformedByMove( sourcePosition, targetPosition, howMany );\n\n\t\t\treturn [ new Range( newPos ) ];\n\t\t}\n\n\t\t// Special case for transformation when a part of the range is moved towards the range.\n\t\t//\n\t\t// Examples:\n\t\t//\n\t\t// <div><p>ab</p><p>c[d</p></div><p>e]f</p> --> <div><p>ab</p></div><p>c[d</p><p>e]f</p>\n\t\t// <p>e[f</p><div><p>a]b</p><p>cd</p></div> --> <p>e[f</p><p>a]b</p><div><p>cd</p></div>\n\t\t//\n\t\t// Without this special condition, the default algorithm leaves an \"artifact\" range from one of `differenceSet` parts:\n\t\t//\n\t\t// <div><p>ab</p><p>c[d</p></div><p>e]f</p> --> <div><p>ab</p>{</div>}<p>c[d</p><p>e]f</p>\n\t\t//\n\t\t// This special case is applied only if the range is to be kept together (not spread).\n\t\tconst moveRange = Range._createFromPositionAndShift( sourcePosition, howMany );\n\t\tconst insertPosition = targetPosition._getTransformedByDeletion( sourcePosition, howMany );\n\n\t\tif ( this.containsPosition( targetPosition ) && !spread ) {\n\t\t\tif ( moveRange.containsPosition( this.start ) || moveRange.containsPosition( this.end ) ) {\n\t\t\t\tconst start = this.start._getTransformedByMove( sourcePosition, targetPosition, howMany );\n\t\t\t\tconst end = this.end._getTransformedByMove( sourcePosition, targetPosition, howMany );\n\n\t\t\t\treturn [ new Range( start, end ) ];\n\t\t\t}\n\t\t}\n\n\t\t// Default algorithm.\n\t\tlet result: Array<Range>;\n\n\t\tconst differenceSet = this.getDifference( moveRange );\n\t\tlet difference = null;\n\n\t\tconst common = this.getIntersection( moveRange );\n\n\t\tif ( differenceSet.length == 1 ) {\n\t\t\t// `moveRange` and this range may intersect but may be separate.\n\t\t\tdifference = new Range(\n\t\t\t\tdifferenceSet[ 0 ].start._getTransformedByDeletion( sourcePosition, howMany )!,\n\t\t\t\tdifferenceSet[ 0 ].end._getTransformedByDeletion( sourcePosition, howMany )!\n\t\t\t);\n\t\t} else if ( differenceSet.length == 2 ) {\n\t\t\t// `moveRange` is inside this range.\n\t\t\tdifference = new Range(\n\t\t\t\tthis.start,\n\t\t\t\tthis.end._getTransformedByDeletion( sourcePosition, howMany )\n\t\t\t);\n\t\t} // else, `moveRange` contains this range.\n\n\t\tif ( difference ) {\n\t\t\tresult = difference._getTransformedByInsertion( insertPosition!, howMany, common !== null || spread );\n\t\t} else {\n\t\t\tresult = [];\n\t\t}\n\n\t\tif ( common ) {\n\t\t\tconst transformedCommon = new Range(\n\t\t\t\tcommon.start._getCombined( moveRange.start, insertPosition! ),\n\t\t\t\tcommon.end._getCombined( moveRange.start, insertPosition! )\n\t\t\t);\n\n\t\t\tif ( result.length == 2 ) {\n\t\t\t\tresult.splice( 1, 0, transformedCommon );\n\t\t\t} else {\n\t\t\t\tresult.push( transformedCommon );\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Returns a copy of this range that is transformed by deletion of `howMany` nodes from `deletePosition`.\n\t *\n\t * If the deleted range is intersecting with the transformed range, the transformed range will be shrank.\n\t *\n\t * If the deleted range contains transformed range, `null` will be returned.\n\t *\n\t * @internal\n\t * @param deletionPosition Position from which nodes are removed.\n\t * @param howMany How many nodes are removed.\n\t * @returns Result of the transformation.\n\t */\n\tpublic _getTransformedByDeletion( deletePosition: Position, howMany: number ): Range | null {\n\t\tlet newStart = this.start._getTransformedByDeletion( deletePosition, howMany );\n\t\tlet newEnd = this.end._getTransformedByDeletion( deletePosition, howMany );\n\n\t\tif ( newStart == null && newEnd == null ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( newStart == null ) {\n\t\t\tnewStart = deletePosition;\n\t\t}\n\n\t\tif ( newEnd == null ) {\n\t\t\tnewEnd = deletePosition;\n\t\t}\n\n\t\treturn new Range( newStart, newEnd );\n\t}\n\n\t/**\n\t * Creates a new range, spreading from specified {@link module:engine/model/position~Position position} to a position moved by\n\t * given `shift`. If `shift` is a negative value, shifted position is treated as the beginning of the range.\n\t *\n\t * @internal\n\t * @param position Beginning of the range.\n\t * @param shift How long the range should be.\n\t */\n\tpublic static _createFromPositionAndShift( position: Position, shift: number ): Range {\n\t\tconst start = position;\n\t\tconst end = position.getShiftedBy( shift );\n\n\t\treturn shift > 0 ? new this( start, end ) : new this( end, start );\n\t}\n\n\t/**\n\t * Creates a range inside an {@link module:engine/model/element~Element element} which starts before the first child of\n\t * that element and ends after the last child of that element.\n\t *\n\t * @internal\n\t * @param element Element which is a parent for the range.\n\t */\n\tpublic static _createIn( element: Element | DocumentFragment ): Range {\n\t\treturn new this( Position._createAt( element, 0 ), Position._createAt( element, element.maxOffset ) );\n\t}\n\n\t/**\n\t * Creates a range that starts before given {@link module:engine/model/item~Item model item} and ends after it.\n\t *\n\t * @internal\n\t */\n\tpublic static _createOn( item: Item ): Range {\n\t\treturn this._createFromPositionAndShift( Position._createBefore( item ), item.offsetSize );\n\t}\n\n\t/**\n\t * Combines all ranges from the passed array into a one range. At least one range has to be passed.\n\t * Passed ranges must not have common parts.\n\t *\n\t * The first range from the array is a reference range. If other ranges start or end on the exactly same position where\n\t * the reference range, they get combined into one range.\n\t *\n\t * ```\n\t * [ ][] [ ][ ][ ][ ][] [ ] // Passed ranges, shown sorted\n\t * [ ] // The result of the function if the first range was a reference range.\n\t * [ ] // The result of the function if the third-to-seventh range was a reference range.\n\t * [ ] // The result of the function if the last range was a reference range.\n\t * ```\n\t *\n\t * @internal\n\t * @param ranges Ranges to combine.\n\t * @returns Combined range.\n\t */\n\tpublic static _createFromRanges( ranges: Array<Range> ): Range {\n\t\tif ( ranges.length === 0 ) {\n\t\t\t/**\n\t\t\t * At least one range has to be passed to\n\t\t\t * {@link module:engine/model/range~Range._createFromRanges `Range._createFromRanges()`}.\n\t\t\t *\n\t\t\t * @error range-create-from-ranges-empty-array\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'range-create-from-ranges-empty-array',\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if ( ranges.length == 1 ) {\n\t\t\treturn ranges[ 0 ].clone();\n\t\t}\n\n\t\t// 1. Set the first range in `ranges` array as a reference range.\n\t\t// If we are going to return just a one range, one of the ranges need to be the reference one.\n\t\t// Other ranges will be stuck to that range, if possible.\n\t\tconst ref = ranges[ 0 ];\n\n\t\t// 2. Sort all the ranges so it's easier to process them.\n\t\tranges.sort( ( a, b ) => {\n\t\t\treturn a.start.isAfter( b.start ) ? 1 : -1;\n\t\t} );\n\n\t\t// 3. Check at which index the reference range is now.\n\t\tconst refIndex = ranges.indexOf( ref );\n\n\t\t// 4. At this moment we don't need the original range.\n\t\t// We are going to modify the result and we need to return a new instance of Range.\n\t\t// We have to create a copy of the reference range.\n\t\tconst result = new this( ref.start, ref.end );\n\n\t\t// 5. Ranges should be checked and glued starting from the range that is closest to the reference range.\n\t\t// Since ranges are sorted, start with the range with index that is closest to reference range index.\n\t\tif ( refIndex > 0 ) {\n\t\t\t// eslint-disable-next-line no-constant-condition\n\t\t\tfor ( let i = refIndex - 1; true; i++ ) {\n\t\t\t\tif ( ranges[ i ].end.isEqual( result.start ) ) {\n\t\t\t\t\t( result as any ).start = Position._createAt( ranges[ i ].start );\n\t\t\t\t} else {\n\t\t\t\t\t// If ranges are not starting/ending at the same position there is no point in looking further.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// 6. Ranges should be checked and glued starting from the range that is closest to the reference range.\n\t\t// Since ranges are sorted, start with the range with index that is closest to reference range index.\n\t\tfor ( let i = refIndex + 1; i < ranges.length; i++ ) {\n\t\t\tif ( ranges[ i ].start.isEqual( result.end ) ) {\n\t\t\t\t( result as any ).end = Position._createAt( ranges[ i ].end );\n\t\t\t} else {\n\t\t\t\t// If ranges are not starting/ending at the same position there is no point in looking further.\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Creates a `Range` instance from given plain object (i.e. parsed JSON string).\n\t *\n\t * @param json Plain object to be converted to `Range`.\n\t * @param doc Document object that will be range owner.\n\t * @returns `Range` instance created using given plain object.\n\t */\n\tpublic static fromJSON( json: any, doc: Document ): Range {\n\t\treturn new this( Position.fromJSON( json.start, doc ), Position.fromJSON( json.end, doc ) );\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \treturn `${ this.root } [ ${ this.start.path.join( ', ' ) } ] - [ ${ this.end.path.join( ', ' ) } ]`;\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public log(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( 'ModelPosition: ' + this );\n\t// @if CK_DEBUG_ENGINE // }\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nRange.prototype.is = function( type: string ): boolean {\n\treturn type === 'range' || type === 'model:range';\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/conversion/mapper\n */\n\nimport ModelPosition from '../model/position';\nimport ModelRange from '../model/range';\n\nimport ViewPosition from '../view/position';\nimport ViewRange from '../view/range';\nimport ViewText from '../view/text';\n\nimport { CKEditorError, EmitterMixin } from '@ckeditor/ckeditor5-utils';\n\nimport type ViewDocumentFragment from '../view/documentfragment';\nimport type ViewElement from '../view/element';\nimport type ModelElement from '../model/element';\nimport type ModelDocumentFragment from '../model/documentfragment';\nimport type ViewNode from '../view/node';\n\n/**\n * Maps elements, positions and markers between the {@link module:engine/view/document~Document view} and\n * the {@link module:engine/model/model model}.\n *\n * The instance of the Mapper used for the editing pipeline is available in\n * {@link module:engine/controller/editingcontroller~EditingController#mapper `editor.editing.mapper`}.\n *\n * Mapper uses bound elements to find corresponding elements and positions, so, to get proper results,\n * all model elements should be {@link module:engine/conversion/mapper~Mapper#bindElements bound}.\n *\n * To map the complex model to/from view relations, you may provide custom callbacks for the\n * {@link module:engine/conversion/mapper~Mapper#event:modelToViewPosition modelToViewPosition event} and\n * {@link module:engine/conversion/mapper~Mapper#event:viewToModelPosition viewToModelPosition event} that are fired whenever\n * a position mapping request occurs.\n * Those events are fired by the {@link module:engine/conversion/mapper~Mapper#toViewPosition toViewPosition}\n * and {@link module:engine/conversion/mapper~Mapper#toModelPosition toModelPosition} methods. `Mapper` adds its own default callbacks\n * with `'lowest'` priority. To override default `Mapper` mapping, add custom callback with higher priority and\n * stop the event.\n */\nexport default class Mapper extends EmitterMixin() {\n\t/**\n\t * Model element to view element mapping.\n\t */\n\tprivate _modelToViewMapping = new WeakMap<ModelElement | ModelDocumentFragment, ViewElement | ViewDocumentFragment>();\n\n\t/**\n\t * View element to model element mapping.\n\t */\n\tprivate _viewToModelMapping = new WeakMap<ViewElement | ViewDocumentFragment, ModelElement | ModelDocumentFragment>();\n\n\t/**\n\t * A map containing callbacks between view element names and functions evaluating length of view elements\n\t * in model.\n\t */\n\tprivate _viewToModelLengthCallbacks = new Map<string, ( element: ViewElement ) => number>();\n\n\t/**\n\t * Model marker name to view elements mapping.\n\t *\n\t * Keys are `String`s while values are `Set`s with {@link module:engine/view/element~Element view elements}.\n\t * One marker (name) can be mapped to multiple elements.\n\t */\n\tprivate _markerNameToElements = new Map<string, Set<ViewElement>>();\n\n\t/**\n\t * View element to model marker names mapping.\n\t *\n\t * This is reverse to {@link ~Mapper#_markerNameToElements} map.\n\t */\n\tprivate _elementToMarkerNames = new Map<ViewElement, Set<string>>();\n\n\t/**\n\t * The map of removed view elements with their current root (used for deferred unbinding).\n\t */\n\tprivate _deferredBindingRemovals = new Map<ViewElement, ViewElement | ViewDocumentFragment>();\n\n\t/**\n\t * Stores marker names of markers which have changed due to unbinding a view element (so it is assumed that the view element\n\t * has been removed, moved or renamed).\n\t */\n\tprivate _unboundMarkerNames = new Set<string>();\n\n\t/**\n\t * Creates an instance of the mapper.\n\t */\n\tconstructor() {\n\t\tsuper();\n\n\t\t// Default mapper algorithm for mapping model position to view position.\n\t\tthis.on<MapperModelToViewPositionEvent>( 'modelToViewPosition', ( evt, data ) => {\n\t\t\tif ( data.viewPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst viewContainer = this._modelToViewMapping.get( data.modelPosition.parent as ModelElement );\n\n\t\t\tif ( !viewContainer ) {\n\t\t\t\t/**\n\t\t\t\t * A model position could not be mapped to the view because the parent of the model position\n\t\t\t\t * does not have a mapped view element (might have not been converted yet or it has no converter).\n\t\t\t\t *\n\t\t\t\t * Make sure that the model element is correctly converted to the view.\n\t\t\t\t *\n\t\t\t\t * @error mapping-model-position-view-parent-not-found\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'mapping-model-position-view-parent-not-found', this, { modelPosition: data.modelPosition } );\n\t\t\t}\n\n\t\t\tdata.viewPosition = this.findPositionIn( viewContainer, data.modelPosition.offset );\n\t\t}, { priority: 'low' } );\n\n\t\t// Default mapper algorithm for mapping view position to model position.\n\t\tthis.on<MapperViewToModelPositionEvent>( 'viewToModelPosition', ( evt, data ) => {\n\t\t\tif ( data.modelPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst viewBlock = this.findMappedViewAncestor( data.viewPosition );\n\t\t\tconst modelParent = this._viewToModelMapping.get( viewBlock );\n\t\t\tconst modelOffset = this._toModelOffset( data.viewPosition.parent as ViewElement, data.viewPosition.offset, viewBlock );\n\n\t\t\tdata.modelPosition = ModelPosition._createAt( modelParent!, modelOffset );\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * Marks model and view elements as corresponding. Corresponding elements can be retrieved by using\n\t * the {@link module:engine/conversion/mapper~Mapper#toModelElement toModelElement} and\n\t * {@link module:engine/conversion/mapper~Mapper#toViewElement toViewElement} methods.\n\t * The information that elements are bound is also used to translate positions.\n\t *\n\t * @param modelElement Model element.\n\t * @param viewElement View element.\n\t */\n\tpublic bindElements(\n\t\tmodelElement: ModelElement | ModelDocumentFragment,\n\t\tviewElement: ViewElement | ViewDocumentFragment\n\t): void {\n\t\tthis._modelToViewMapping.set( modelElement, viewElement );\n\t\tthis._viewToModelMapping.set( viewElement, modelElement );\n\t}\n\n\t/**\n\t * Unbinds the given {@link module:engine/view/element~Element view element} from the map.\n\t *\n\t * **Note:** view-to-model binding will be removed, if it existed. However, corresponding model-to-view binding\n\t * will be removed only if model element is still bound to the passed `viewElement`.\n\t *\n\t * This behavior allows for re-binding model element to another view element without fear of losing the new binding\n\t * when the previously bound view element is unbound.\n\t *\n\t * @param viewElement View element to unbind.\n\t * @param options The options object.\n\t * @param options.defer Controls whether the binding should be removed immediately or deferred until a\n\t * {@link #flushDeferredBindings `flushDeferredBindings()`} call.\n\t */\n\tpublic unbindViewElement(\n\t\tviewElement: ViewElement,\n\t\toptions: { defer?: boolean } = {}\n\t): void {\n\t\tconst modelElement = this.toModelElement( viewElement )!;\n\n\t\tif ( this._elementToMarkerNames.has( viewElement ) ) {\n\t\t\tfor ( const markerName of this._elementToMarkerNames.get( viewElement )! ) {\n\t\t\t\tthis._unboundMarkerNames.add( markerName );\n\t\t\t}\n\t\t}\n\n\t\tif ( options.defer ) {\n\t\t\tthis._deferredBindingRemovals.set( viewElement, viewElement.root );\n\t\t} else {\n\t\t\tthis._viewToModelMapping.delete( viewElement );\n\n\t\t\tif ( this._modelToViewMapping.get( modelElement ) == viewElement ) {\n\t\t\t\tthis._modelToViewMapping.delete( modelElement );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Unbinds the given {@link module:engine/model/element~Element model element} from the map.\n\t *\n\t * **Note:** the model-to-view binding will be removed, if it existed. However, the corresponding view-to-model binding\n\t * will be removed only if the view element is still bound to the passed `modelElement`.\n\t *\n\t * This behavior lets for re-binding view element to another model element without fear of losing the new binding\n\t * when the previously bound model element is unbound.\n\t *\n\t * @param modelElement Model element to unbind.\n\t */\n\tpublic unbindModelElement( modelElement: ModelElement ): void {\n\t\tconst viewElement = this.toViewElement( modelElement )!;\n\n\t\tthis._modelToViewMapping.delete( modelElement );\n\n\t\tif ( this._viewToModelMapping.get( viewElement ) == modelElement ) {\n\t\t\tthis._viewToModelMapping.delete( viewElement );\n\t\t}\n\t}\n\n\t/**\n\t * Binds the given marker name with the given {@link module:engine/view/element~Element view element}. The element\n\t * will be added to the current set of elements bound with the given marker name.\n\t *\n\t * @param element Element to bind.\n\t * @param name Marker name.\n\t */\n\tpublic bindElementToMarker( element: ViewElement, name: string ): void {\n\t\tconst elements = this._markerNameToElements.get( name ) || new Set();\n\t\telements.add( element );\n\n\t\tconst names = this._elementToMarkerNames.get( element ) || new Set();\n\t\tnames.add( name );\n\n\t\tthis._markerNameToElements.set( name, elements );\n\t\tthis._elementToMarkerNames.set( element, names );\n\t}\n\n\t/**\n\t * Unbinds an element from given marker name.\n\t *\n\t * @param element Element to unbind.\n\t * @param name Marker name.\n\t */\n\tpublic unbindElementFromMarkerName( element: ViewElement, name: string ): void {\n\t\tconst nameToElements = this._markerNameToElements.get( name );\n\n\t\tif ( nameToElements ) {\n\t\t\tnameToElements.delete( element );\n\n\t\t\tif ( nameToElements.size == 0 ) {\n\t\t\t\tthis._markerNameToElements.delete( name );\n\t\t\t}\n\t\t}\n\n\t\tconst elementToNames = this._elementToMarkerNames.get( element );\n\n\t\tif ( elementToNames ) {\n\t\t\telementToNames.delete( name );\n\n\t\t\tif ( elementToNames.size == 0 ) {\n\t\t\t\tthis._elementToMarkerNames.delete( element );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns all marker names of markers which have changed due to unbinding a view element (so it is assumed that the view element\n\t * has been removed, moved or renamed) since the last flush. After returning, the marker names list is cleared.\n\t */\n\tpublic flushUnboundMarkerNames(): Array<string> {\n\t\tconst markerNames = Array.from( this._unboundMarkerNames );\n\n\t\tthis._unboundMarkerNames.clear();\n\n\t\treturn markerNames;\n\t}\n\n\t/**\n\t * Unbinds all deferred binding removals of view elements that in the meantime were not re-attached to some root or document fragment.\n\t *\n\t * See: {@link #unbindViewElement `unbindViewElement()`}.\n\t */\n\tpublic flushDeferredBindings(): void {\n\t\tfor ( const [ viewElement, root ] of this._deferredBindingRemovals ) {\n\t\t\t// Unbind it only if it wasn't re-attached to some root or document fragment.\n\t\t\tif ( viewElement.root == root ) {\n\t\t\t\tthis.unbindViewElement( viewElement );\n\t\t\t}\n\t\t}\n\n\t\tthis._deferredBindingRemovals = new Map();\n\t}\n\n\t/**\n\t * Removes all model to view and view to model bindings.\n\t */\n\tpublic clearBindings(): void {\n\t\tthis._modelToViewMapping = new WeakMap();\n\t\tthis._viewToModelMapping = new WeakMap();\n\t\tthis._markerNameToElements = new Map();\n\t\tthis._elementToMarkerNames = new Map();\n\t\tthis._unboundMarkerNames = new Set();\n\t\tthis._deferredBindingRemovals = new Map();\n\t}\n\n\t/**\n\t * Gets the corresponding model element.\n\t *\n\t * **Note:** {@link module:engine/view/uielement~UIElement} does not have corresponding element in model.\n\t *\n\t * @label ELEMENT\n\t * @param viewElement View element.\n\t * @returns Corresponding model element or `undefined` if not found.\n\t */\n\tpublic toModelElement( viewElement: ViewElement ): ModelElement | undefined;\n\n\t/**\n\t * Gets the corresponding model document fragment.\n\t *\n\t * @label DOCUMENT_FRAGMENT\n\t * @param viewDocumentFragment View document fragment.\n\t * @returns Corresponding model document fragment or `undefined` if not found.\n\t */\n\tpublic toModelElement( viewDocumentFragment: ViewDocumentFragment ): ModelDocumentFragment | undefined;\n\n\tpublic toModelElement( viewElement: ViewElement | ViewDocumentFragment ): ModelElement | ModelDocumentFragment | undefined {\n\t\treturn this._viewToModelMapping.get( viewElement );\n\t}\n\n\t/**\n\t * Gets the corresponding view element.\n\t *\n\t * @label ELEMENT\n\t * @param modelElement Model element.\n\t * @returns Corresponding view element or `undefined` if not found.\n\t */\n\tpublic toViewElement( modelElement: ModelElement ): ViewElement | undefined;\n\n\t/**\n\t * Gets the corresponding view document fragment.\n\t *\n\t * @label DOCUMENT_FRAGMENT\n\t * @param modelDocumentFragment Model document fragment.\n\t * @returns Corresponding view document fragment or `undefined` if not found.\n\t */\n\tpublic toViewElement( modelDocumentFragment: ModelDocumentFragment ): ViewDocumentFragment | undefined;\n\n\tpublic toViewElement( modelElement: ModelElement | ModelDocumentFragment ): ViewElement | ViewDocumentFragment | undefined {\n\t\treturn this._modelToViewMapping.get( modelElement );\n\t}\n\n\t/**\n\t * Gets the corresponding model range.\n\t *\n\t * @param viewRange View range.\n\t * @returns Corresponding model range.\n\t */\n\tpublic toModelRange( viewRange: ViewRange ): ModelRange {\n\t\treturn new ModelRange( this.toModelPosition( viewRange.start ), this.toModelPosition( viewRange.end ) );\n\t}\n\n\t/**\n\t * Gets the corresponding view range.\n\t *\n\t * @param modelRange Model range.\n\t * @returns Corresponding view range.\n\t */\n\tpublic toViewRange( modelRange: ModelRange ): ViewRange {\n\t\treturn new ViewRange( this.toViewPosition( modelRange.start ), this.toViewPosition( modelRange.end ) );\n\t}\n\n\t/**\n\t * Gets the corresponding model position.\n\t *\n\t * @fires viewToModelPosition\n\t * @param viewPosition View position.\n\t * @returns Corresponding model position.\n\t */\n\tpublic toModelPosition( viewPosition: ViewPosition ): ModelPosition {\n\t\tconst data: MapperViewToModelPositionEvent[ 'args' ][ 0 ] = {\n\t\t\tviewPosition,\n\t\t\tmapper: this\n\t\t};\n\n\t\tthis.fire<MapperViewToModelPositionEvent>( 'viewToModelPosition', data );\n\n\t\treturn data.modelPosition!;\n\t}\n\n\t/**\n\t * Gets the corresponding view position.\n\t *\n\t * @fires modelToViewPosition\n\t * @param modelPosition Model position.\n\t * @param options Additional options for position mapping process.\n\t * @param options.isPhantom Should be set to `true` if the model position to map is pointing to a place\n\t * in model tree which no longer exists. For example, it could be an end of a removed model range.\n\t * @returns Corresponding view position.\n\t */\n\tpublic toViewPosition(\n\t\tmodelPosition: ModelPosition,\n\t\toptions: { isPhantom?: boolean } = {}\n\t): ViewPosition {\n\t\tconst data: MapperModelToViewPositionEvent[ 'args' ][ 0 ] = {\n\t\t\tmodelPosition,\n\t\t\tmapper: this,\n\t\t\tisPhantom: options.isPhantom\n\t\t};\n\n\t\tthis.fire<MapperModelToViewPositionEvent>( 'modelToViewPosition', data );\n\n\t\treturn data.viewPosition!;\n\t}\n\n\t/**\n\t * Gets all view elements bound to the given marker name.\n\t *\n\t * @param name Marker name.\n\t * @returns View elements bound with the given marker name or `null`\n\t * if no elements are bound to the given marker name.\n\t */\n\tpublic markerNameToElements( name: string ): Set<ViewElement> | null {\n\t\tconst boundElements = this._markerNameToElements.get( name );\n\n\t\tif ( !boundElements ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst elements = new Set<ViewElement>();\n\n\t\tfor ( const element of boundElements ) {\n\t\t\tif ( element.is( 'attributeElement' ) ) {\n\t\t\t\tfor ( const clone of element.getElementsWithSameId() ) {\n\t\t\t\t\telements.add( clone );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements.add( element );\n\t\t\t}\n\t\t}\n\n\t\treturn elements;\n\t}\n\n\t/**\n\t * Registers a callback that evaluates the length in the model of a view element with the given name.\n\t *\n\t * The callback is fired with one argument, which is a view element instance. The callback is expected to return\n\t * a number representing the length of the view element in the model.\n\t *\n\t * ```ts\n\t * // List item in view may contain nested list, which have other list items. In model though,\n\t * // the lists are represented by flat structure. Because of those differences, length of list view element\n\t * // may be greater than one. In the callback it's checked how many nested list items are in evaluated list item.\n\t *\n\t * function getViewListItemLength( element ) {\n\t * \tlet length = 1;\n\t *\n\t * \tfor ( let child of element.getChildren() ) {\n\t * \t\tif ( child.name == 'ul' || child.name == 'ol' ) {\n\t * \t\t\tfor ( let item of child.getChildren() ) {\n\t * \t\t\t\tlength += getViewListItemLength( item );\n\t * \t\t\t}\n\t * \t\t}\n\t * \t}\n\t *\n\t * \treturn length;\n\t * }\n\t *\n\t * mapper.registerViewToModelLength( 'li', getViewListItemLength );\n\t * ```\n\t *\n\t * @param viewElementName Name of view element for which callback is registered.\n\t * @param lengthCallback Function return a length of view element instance in model.\n\t */\n\tpublic registerViewToModelLength(\n\t\tviewElementName: string,\n\t\tlengthCallback: ( element: ViewElement ) => number\n\t): void {\n\t\tthis._viewToModelLengthCallbacks.set( viewElementName, lengthCallback );\n\t}\n\n\t/**\n\t * For the given `viewPosition`, finds and returns the closest ancestor of this position that has a mapping to\n\t * the model.\n\t *\n\t * @param viewPosition Position for which a mapped ancestor should be found.\n\t */\n\tpublic findMappedViewAncestor( viewPosition: ViewPosition ): ViewElement {\n\t\tlet parent: any = viewPosition.parent;\n\n\t\twhile ( !this._viewToModelMapping.has( parent ) ) {\n\t\t\tparent = parent.parent;\n\t\t}\n\n\t\treturn parent;\n\t}\n\n\t/**\n\t * Calculates model offset based on the view position and the block element.\n\t *\n\t * Example:\n\t *\n\t * ```html\n\t * <p>foo<b>ba|r</b></p> // _toModelOffset( b, 2, p ) -> 5\n\t * ```\n\t *\n\t * Is a sum of:\n\t *\n\t * ```html\n\t * <p>foo|<b>bar</b></p> // _toModelOffset( p, 3, p ) -> 3\n\t * <p>foo<b>ba|r</b></p> // _toModelOffset( b, 2, b ) -> 2\n\t * ```\n\t *\n\t * @param viewParent Position parent.\n\t * @param viewOffset Position offset.\n\t * @param viewBlock Block used as a base to calculate offset.\n\t * @returns Offset in the model.\n\t */\n\tprivate _toModelOffset(\n\t\tviewParent: ViewElement,\n\t\tviewOffset: number,\n\t\tviewBlock: ViewElement\n\t): number {\n\t\tif ( viewBlock != viewParent ) {\n\t\t\t// See example.\n\t\t\tconst offsetToParentStart = this._toModelOffset( viewParent.parent as any, viewParent.index!, viewBlock );\n\t\t\tconst offsetInParent = this._toModelOffset( viewParent, viewOffset, viewParent );\n\n\t\t\treturn offsetToParentStart + offsetInParent;\n\t\t}\n\n\t\t// viewBlock == viewParent, so we need to calculate the offset in the parent element.\n\n\t\t// If the position is a text it is simple (\"ba|r\" -> 2).\n\t\tif ( viewParent.is( '$text' ) ) {\n\t\t\treturn viewOffset;\n\t\t}\n\n\t\t// If the position is in an element we need to sum lengths of siblings ( <b> bar </b> foo | -> 3 + 3 = 6 ).\n\t\tlet modelOffset = 0;\n\n\t\tfor ( let i = 0; i < viewOffset; i++ ) {\n\t\t\tmodelOffset += this.getModelLength( viewParent.getChild( i ) as any );\n\t\t}\n\n\t\treturn modelOffset;\n\t}\n\n\t/**\n\t * Gets the length of the view element in the model.\n\t *\n\t * The length is calculated as follows:\n\t * * if a {@link #registerViewToModelLength length mapping callback} is provided for the given `viewNode`, it is used to\n\t * evaluate the model length (`viewNode` is used as first and only parameter passed to the callback),\n\t * * length of a {@link module:engine/view/text~Text text node} is equal to the length of its\n\t * {@link module:engine/view/text~Text#data data},\n\t * * length of a {@link module:engine/view/uielement~UIElement ui element} is equal to 0,\n\t * * length of a mapped {@link module:engine/view/element~Element element} is equal to 1,\n\t * * length of a non-mapped {@link module:engine/view/element~Element element} is equal to the length of its children.\n\t *\n\t * Examples:\n\t *\n\t * ```\n\t * foo -> 3 // Text length is equal to its data length.\n\t * <p>foo</p> -> 1 // Length of an element which is mapped is by default equal to 1.\n\t * <b>foo</b> -> 3 // Length of an element which is not mapped is a length of its children.\n\t * <div><p>x</p><p>y</p></div> -> 2 // Assuming that <div> is not mapped and <p> are mapped.\n\t * ```\n\t *\n\t * @param viewNode View node.\n\t * @returns Length of the node in the tree model.\n\t */\n\tpublic getModelLength( viewNode: ViewNode | ViewDocumentFragment ): number {\n\t\tif ( this._viewToModelLengthCallbacks.get( ( viewNode as any ).name ) ) {\n\t\t\tconst callback = this._viewToModelLengthCallbacks.get( ( viewNode as any ).name )!;\n\n\t\t\treturn callback( viewNode as ViewElement );\n\t\t} else if ( this._viewToModelMapping.has( viewNode as ViewElement ) ) {\n\t\t\treturn 1;\n\t\t} else if ( viewNode.is( '$text' ) ) {\n\t\t\treturn viewNode.data.length;\n\t\t} else if ( viewNode.is( 'uiElement' ) ) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\tlet len = 0;\n\n\t\t\tfor ( const child of ( viewNode as ViewElement ).getChildren() ) {\n\t\t\t\tlen += this.getModelLength( child );\n\t\t\t}\n\n\t\t\treturn len;\n\t\t}\n\t}\n\n\t/**\n\t * Finds the position in the view node (or in its children) with the expected model offset.\n\t *\n\t * Example:\n\t *\n\t * ```\n\t * <p>fo<b>bar</b>bom</p> -> expected offset: 4\n\t *\n\t * findPositionIn( p, 4 ):\n\t * <p>|fo<b>bar</b>bom</p> -> expected offset: 4, actual offset: 0\n\t * <p>fo|<b>bar</b>bom</p> -> expected offset: 4, actual offset: 2\n\t * <p>fo<b>bar</b>|bom</p> -> expected offset: 4, actual offset: 5 -> we are too far\n\t *\n\t * findPositionIn( b, 4 - ( 5 - 3 ) ):\n\t * <p>fo<b>|bar</b>bom</p> -> expected offset: 2, actual offset: 0\n\t * <p>fo<b>bar|</b>bom</p> -> expected offset: 2, actual offset: 3 -> we are too far\n\t *\n\t * findPositionIn( bar, 2 - ( 3 - 3 ) ):\n\t * We are in the text node so we can simple find the offset.\n\t * <p>fo<b>ba|r</b>bom</p> -> expected offset: 2, actual offset: 2 -> position found\n\t * ```\n\t *\n\t * @param viewParent Tree view element in which we are looking for the position.\n\t * @param expectedOffset Expected offset.\n\t * @returns Found position.\n\t */\n\tpublic findPositionIn( viewParent: ViewNode | ViewDocumentFragment, expectedOffset: number ): ViewPosition {\n\t\t// Last scanned view node.\n\t\tlet viewNode: ViewNode;\n\t\t// Length of the last scanned view node.\n\t\tlet lastLength = 0;\n\n\t\tlet modelOffset = 0;\n\t\tlet viewOffset = 0;\n\n\t\t// In the text node it is simple: the offset in the model equals the offset in the text.\n\t\tif ( viewParent.is( '$text' ) ) {\n\t\t\treturn new ViewPosition( viewParent, expectedOffset );\n\t\t}\n\n\t\t// In other cases we add lengths of child nodes to find the proper offset.\n\n\t\t// If it is smaller we add the length.\n\t\twhile ( modelOffset < expectedOffset ) {\n\t\t\tviewNode = ( viewParent as ViewElement | ViewDocumentFragment ).getChild( viewOffset )!;\n\t\t\tlastLength = this.getModelLength( viewNode );\n\t\t\tmodelOffset += lastLength;\n\t\t\tviewOffset++;\n\t\t}\n\n\t\t// If it equals we found the position.\n\t\tif ( modelOffset == expectedOffset ) {\n\t\t\treturn this._moveViewPositionToTextNode( new ViewPosition( viewParent, viewOffset ) );\n\t\t}\n\t\t// If it is higher we need to enter last child.\n\t\telse {\n\t\t\t// ( modelOffset - lastLength ) is the offset to the child we enter,\n\t\t\t// so we subtract it from the expected offset to fine the offset in the child.\n\t\t\treturn this.findPositionIn( viewNode!, expectedOffset - ( modelOffset - lastLength ) );\n\t\t}\n\t}\n\n\t/**\n\t * Because we prefer positions in the text nodes over positions next to text nodes, if the view position was next to a text node,\n\t * it moves it into the text node instead.\n\t *\n\t * ```\n\t * <p>[]<b>foo</b></p> -> <p>[]<b>foo</b></p> // do not touch if position is not directly next to text\n\t * <p>foo[]<b>foo</b></p> -> <p>foo{}<b>foo</b></p> // move to text node\n\t * <p><b>[]foo</b></p> -> <p><b>{}foo</b></p> // move to text node\n\t * ```\n\t *\n\t * @param viewPosition Position potentially next to the text node.\n\t * @returns Position in the text node if possible.\n\t */\n\tprivate _moveViewPositionToTextNode( viewPosition: ViewPosition ): ViewPosition {\n\t\t// If the position is just after a text node, put it at the end of that text node.\n\t\t// If the position is just before a text node, put it at the beginning of that text node.\n\t\tconst nodeBefore = viewPosition.nodeBefore;\n\t\tconst nodeAfter = viewPosition.nodeAfter;\n\n\t\tif ( nodeBefore instanceof ViewText ) {\n\t\t\treturn new ViewPosition( nodeBefore, nodeBefore.data.length );\n\t\t} else if ( nodeAfter instanceof ViewText ) {\n\t\t\treturn new ViewPosition( nodeAfter, 0 );\n\t\t}\n\n\t\t// Otherwise, just return the given position.\n\t\treturn viewPosition;\n\t}\n}\n\n/**\n * Fired for each model-to-view position mapping request. The purpose of this event is to enable custom model-to-view position\n * mapping. Callbacks added to this event take {@link module:engine/model/position~Position model position} and are expected to\n * calculate the {@link module:engine/view/position~Position view position}. The calculated view position should be added as\n * a `viewPosition` value in the `data` object that is passed as one of parameters to the event callback.\n *\n * ```ts\n * // Assume that \"captionedImage\" model element is converted to <img> and following <span> elements in view,\n * // and the model element is bound to <img> element. Force mapping model positions inside \"captionedImage\" to that\n * // <span> element.\n * mapper.on( 'modelToViewPosition', ( evt, data ) => {\n * \tconst positionParent = modelPosition.parent;\n *\n * \tif ( positionParent.name == 'captionedImage' ) {\n * \t\tconst viewImg = data.mapper.toViewElement( positionParent );\n * \t\tconst viewCaption = viewImg.nextSibling; // The <span> element.\n *\n * \t\tdata.viewPosition = new ViewPosition( viewCaption, modelPosition.offset );\n *\n * \t\t// Stop the event if other callbacks should not modify calculated value.\n * \t\tevt.stop();\n * \t}\n * } );\n * ```\n *\n * **Note:** keep in mind that sometimes a \"phantom\" model position is being converted. A \"phantom\" model position is\n * a position that points to a nonexistent place in model. Such a position might still be valid for conversion, though\n * (it would point to a correct place in the view when converted). One example of such a situation is when a range is\n * removed from the model, there may be a need to map the range's end (which is no longer a valid model position). To\n * handle such situations, check the `data.isPhantom` flag:\n *\n * ```ts\n * // Assume that there is a \"customElement\" model element and whenever the position is before it,\n * // we want to move it to the inside of the view element bound to \"customElement\".\n * mapper.on( 'modelToViewPosition', ( evt, data ) => {\n * \tif ( data.isPhantom ) {\n * \t\treturn;\n * \t}\n *\n * \t// Below line might crash for phantom position that does not exist in model.\n * \tconst sibling = data.modelPosition.nodeBefore;\n *\n * \t// Check if this is the element we are interested in.\n * \tif ( !sibling.is( 'element', 'customElement' ) ) {\n * \t\treturn;\n * \t}\n *\n * \tconst viewElement = data.mapper.toViewElement( sibling );\n *\n * \tdata.viewPosition = new ViewPosition( sibling, 0 );\n *\n * \tevt.stop();\n * } );\n * ```\n *\n * **Note:** the default mapping callback is provided with a `low` priority setting and does not cancel the event, so it is possible to\n * attach a custom callback after a default callback and also use `data.viewPosition` calculated by the default callback\n * (for example to fix it).\n *\n * **Note:** the default mapping callback will not fire if `data.viewPosition` is already set.\n *\n * **Note:** these callbacks are called **very often**. For efficiency reasons, it is advised to use them only when position\n * mapping between the given model and view elements is unsolvable by using just elements mapping and default algorithm.\n * Also, the condition that checks if a special case scenario happened should be as simple as possible.\n *\n * @eventName ~Mapper#modelToViewPosition\n */\nexport type MapperModelToViewPositionEvent = {\n\tname: 'modelToViewPosition';\n\targs: [ MapperModelToViewPositionEventData ];\n};\n\n/**\n * Data pipeline object that can store and pass data between callbacks. The callback should add\n * the `viewPosition` value to that object with calculated the {@link module:engine/view/position~Position view position}.\n */\nexport type MapperModelToViewPositionEventData = {\n\n\t/**\n\t * Mapper instance that fired the event.\n\t */\n\tmapper: Mapper;\n\n\t/**\n\t * The model position.\n\t */\n\tmodelPosition: ModelPosition;\n\n\t/**\n\t * The callback should add the `viewPosition` value to that object with calculated the\n\t * {@link module:engine/view/position~Position view position}.\n\t */\n\tviewPosition?: ViewPosition;\n\n\t/**\n\t * Should be set to `true` if the model position to map is pointing to a place\n\t * in model tree which no longer exists. For example, it could be an end of a removed model range.\n\t */\n\tisPhantom?: boolean;\n};\n\n/**\n * Fired for each view-to-model position mapping request. See {@link module:engine/conversion/mapper~Mapper#event:modelToViewPosition}.\n *\n * ```ts\n * // See example in `modelToViewPosition` event description.\n * // This custom mapping will map positions from <span> element next to <img> to the \"captionedImage\" element.\n * mapper.on( 'viewToModelPosition', ( evt, data ) => {\n * \tconst positionParent = viewPosition.parent;\n *\n * \tif ( positionParent.hasClass( 'image-caption' ) ) {\n * \t\tconst viewImg = positionParent.previousSibling;\n * \t\tconst modelImg = data.mapper.toModelElement( viewImg );\n *\n * \t\tdata.modelPosition = new ModelPosition( modelImg, viewPosition.offset );\n * \t\tevt.stop();\n * \t}\n * } );\n * ```\n *\n * **Note:** the default mapping callback is provided with a `low` priority setting and does not cancel the event, so it is possible to\n * attach a custom callback after the default callback and also use `data.modelPosition` calculated by the default callback\n * (for example to fix it).\n *\n * **Note:** the default mapping callback will not fire if `data.modelPosition` is already set.\n *\n * **Note:** these callbacks are called **very often**. For efficiency reasons, it is advised to use them only when position\n * mapping between the given model and view elements is unsolvable by using just elements mapping and default algorithm.\n * Also, the condition that checks if special case scenario happened should be as simple as possible.\n *\n * @eventName ~Mapper#viewToModelPosition\n */\nexport type MapperViewToModelPositionEvent = {\n\tname: 'viewToModelPosition';\n\targs: [ MapperViewToModelPositionEventData ];\n};\n\n/**\n * Data pipeline object that can store and pass data between callbacks. The callback should add\n * `modelPosition` value to that object with calculated {@link module:engine/model/position~Position model position}.\n */\nexport type MapperViewToModelPositionEventData = {\n\n\t/**\n\t * Mapper instance that fired the event.\n\t */\n\tmapper: Mapper;\n\n\t/**\n\t * The callback should add `modelPosition` value to that object with calculated\n\t * {@link module:engine/model/position~Position model position}.\n\t */\n\tmodelPosition?: ModelPosition;\n\n\t/**\n\t * The view position.\n\t */\n\tviewPosition: ViewPosition;\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/conversion/modelconsumable\n */\n\nimport TextProxy from '../model/textproxy';\n\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\n\nimport type Item from '../model/item';\nimport type Selection from '../model/selection';\nimport type DocumentSelection from '../model/documentselection';\nimport type Range from '../model/range';\n\n/**\n * Manages a list of consumable values for the {@link module:engine/model/item~Item model items}.\n *\n * Consumables are various aspects of the model. A model item can be broken down into separate, single properties that might be\n * taken into consideration when converting that item.\n *\n * `ModelConsumable` is used by {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher} while analyzing the changed\n * parts of {@link module:engine/model/document~Document the document}. The added / changed / removed model items are broken down\n * into singular properties (the item itself and its attributes). All those parts are saved in `ModelConsumable`. Then,\n * during conversion, when the given part of a model item is converted (i.e. the view element has been inserted into the view,\n * but without attributes), the consumable value is removed from `ModelConsumable`.\n *\n * For model items, `ModelConsumable` stores consumable values of one of following types: `insert`, `addattribute:<attributeKey>`,\n * `changeattributes:<attributeKey>`, `removeattributes:<attributeKey>`.\n *\n * In most cases, it is enough to let th {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher}\n * gather consumable values, so there is no need to use\n * the {@link module:engine/conversion/modelconsumable~ModelConsumable#add add method} directly.\n * However, it is important to understand how consumable values can be\n * {@link module:engine/conversion/modelconsumable~ModelConsumable#consume consumed}.\n * See {@link module:engine/conversion/downcasthelpers default downcast converters} for more information.\n *\n * Keep in mind that one conversion event may have multiple callbacks (converters) attached to it. Each of those is\n * able to convert one or more parts of the model. However, when one of those callbacks actually converts\n * something, the others should not, because they would duplicate the results. Using `ModelConsumable` helps to avoid\n * this situation, because callbacks should only convert these values that were not yet consumed from `ModelConsumable`.\n *\n * Consuming multiple values in a single callback:\n *\n * ```ts\n * // Converter for custom `imageBlock` element that might have a `caption` element inside which changes\n * // how the image is displayed in the view:\n * //\n * // Model:\n * //\n * // [imageBlock]\n * // └─ [caption]\n * // └─ foo\n * //\n * // View:\n * //\n * // <figure>\n * // ├─ <img />\n * // └─ <caption>\n * // └─ foo\n * modelConversionDispatcher.on( 'insert:imageBlock', ( evt, data, conversionApi ) => {\n * \t// First, consume the `imageBlock` element.\n * \tconversionApi.consumable.consume( data.item, 'insert' );\n *\n * \t// Just create normal image element for the view.\n * \t// Maybe it will be \"decorated\" later.\n * \tconst viewImage = new ViewElement( 'img' );\n * \tconst insertPosition = conversionApi.mapper.toViewPosition( data.range.start );\n * \tconst viewWriter = conversionApi.writer;\n *\n * \t// Check if the `imageBlock` element has children.\n * \tif ( data.item.childCount > 0 ) {\n * \t\tconst modelCaption = data.item.getChild( 0 );\n *\n * \t\t// `modelCaption` insertion change is consumed from consumable values.\n * \t\t// It will not be converted by other converters, but it's children (probably some text) will be.\n * \t\t// Through mapping, converters for text will know where to insert contents of `modelCaption`.\n * \t\tif ( conversionApi.consumable.consume( modelCaption, 'insert' ) ) {\n * \t\t\tconst viewCaption = new ViewElement( 'figcaption' );\n *\n * \t\t\tconst viewImageHolder = new ViewElement( 'figure', null, [ viewImage, viewCaption ] );\n *\n * \t\t\tconversionApi.mapper.bindElements( modelCaption, viewCaption );\n * \t\t\tconversionApi.mapper.bindElements( data.item, viewImageHolder );\n * \t\t\tviewWriter.insert( insertPosition, viewImageHolder );\n * \t\t}\n * \t} else {\n * \t\tconversionApi.mapper.bindElements( data.item, viewImage );\n * \t\tviewWriter.insert( insertPosition, viewImage );\n * \t}\n *\n * \tevt.stop();\n * } );\n * ```\n */\nexport default class ModelConsumable {\n\t/**\n\t * Contains list of consumable values.\n\t */\n\tprivate _consumable = new Map<any, Map<string, boolean>>();\n\n\t/**\n\t * For each {@link module:engine/model/textproxy~TextProxy} added to `ModelConsumable`, this registry holds a parent\n\t * of that `TextProxy` and the start and end indices of that `TextProxy`. This allows identification of the `TextProxy`\n\t * instances that point to the same part of the model but are different instances. Each distinct `TextProxy`\n\t * is given a unique `Symbol` which is then registered as consumable. This process is transparent for the `ModelConsumable`\n\t * API user because whenever `TextProxy` is added, tested, consumed or reverted, the internal mechanisms of\n\t * `ModelConsumable` translate `TextProxy` to that unique `Symbol`.\n\t */\n\tprivate _textProxyRegistry = new Map<number | null, Map<number | null, Map<unknown, symbol>>>();\n\n\t/**\n\t * Adds a consumable value to the consumables list and links it with a given model item.\n\t *\n\t * ```ts\n\t * modelConsumable.add( modelElement, 'insert' ); // Add `modelElement` insertion change to consumable values.\n\t * modelConsumable.add( modelElement, 'addAttribute:bold' ); // Add `bold` attribute insertion on `modelElement` change.\n\t * modelConsumable.add( modelElement, 'removeAttribute:bold' ); // Add `bold` attribute removal on `modelElement` change.\n\t * modelConsumable.add( modelSelection, 'selection' ); // Add `modelSelection` to consumable values.\n\t * modelConsumable.add( modelRange, 'range' ); // Add `modelRange` to consumable values.\n\t * ```\n\t *\n\t * @param item Model item, range or selection that has the consumable.\n\t * @param type Consumable type. Will be normalized to a proper form, that is either `<word>` or `<part>:<part>`.\n\t * Second colon and everything after will be cut. Passing event name is a safe and good practice.\n\t */\n\tpublic add(\n\t\titem: Item | Selection | DocumentSelection | Range,\n\t\ttype: string\n\t): void {\n\t\ttype = _normalizeConsumableType( type );\n\n\t\tif ( item instanceof TextProxy ) {\n\t\t\titem = this._getSymbolForTextProxy( item ) as any;\n\t\t}\n\n\t\tif ( !this._consumable.has( item ) ) {\n\t\t\tthis._consumable.set( item, new Map() );\n\t\t}\n\n\t\tthis._consumable.get( item )!.set( type, true );\n\t}\n\n\t/**\n\t * Removes a given consumable value from a given model item.\n\t *\n\t * ```ts\n\t * modelConsumable.consume( modelElement, 'insert' ); // Remove `modelElement` insertion change from consumable values.\n\t * modelConsumable.consume( modelElement, 'addAttribute:bold' ); // Remove `bold` attribute insertion on `modelElement` change.\n\t * modelConsumable.consume( modelElement, 'removeAttribute:bold' ); // Remove `bold` attribute removal on `modelElement` change.\n\t * modelConsumable.consume( modelSelection, 'selection' ); // Remove `modelSelection` from consumable values.\n\t * modelConsumable.consume( modelRange, 'range' ); // Remove 'modelRange' from consumable values.\n\t * ```\n\t *\n\t * @param item Model item, range or selection from which consumable will be consumed.\n\t * @param type Consumable type. Will be normalized to a proper form, that is either `<word>` or `<part>:<part>`.\n\t * Second colon and everything after will be cut. Passing event name is a safe and good practice.\n\t * @returns `true` if consumable value was available and was consumed, `false` otherwise.\n\t */\n\tpublic consume(\n\t\titem: Item | Selection | DocumentSelection | Range,\n\t\ttype: string\n\t): boolean {\n\t\ttype = _normalizeConsumableType( type );\n\n\t\tif ( item instanceof TextProxy ) {\n\t\t\titem = this._getSymbolForTextProxy( item ) as any;\n\t\t}\n\n\t\tif ( this.test( item, type ) ) {\n\t\t\tthis._consumable.get( item )!.set( type, false );\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Tests whether there is a consumable value of a given type connected with a given model item.\n\t *\n\t * ```ts\n\t * modelConsumable.test( modelElement, 'insert' ); // Check for `modelElement` insertion change.\n\t * modelConsumable.test( modelElement, 'addAttribute:bold' ); // Check for `bold` attribute insertion on `modelElement` change.\n\t * modelConsumable.test( modelElement, 'removeAttribute:bold' ); // Check for `bold` attribute removal on `modelElement` change.\n\t * modelConsumable.test( modelSelection, 'selection' ); // Check if `modelSelection` is consumable.\n\t * modelConsumable.test( modelRange, 'range' ); // Check if `modelRange` is consumable.\n\t * ```\n\t *\n\t * @param item Model item, range or selection to be tested.\n\t * @param type Consumable type. Will be normalized to a proper form, that is either `<word>` or `<part>:<part>`.\n\t * Second colon and everything after will be cut. Passing event name is a safe and good practice.\n\t * @returns `null` if such consumable was never added, `false` if the consumable values was\n\t * already consumed or `true` if it was added and not consumed yet.\n\t */\n\tpublic test(\n\t\titem: Item | Selection | DocumentSelection | Range,\n\t\ttype: string\n\t): boolean | null {\n\t\ttype = _normalizeConsumableType( type );\n\n\t\tif ( item instanceof TextProxy ) {\n\t\t\titem = this._getSymbolForTextProxy( item ) as any;\n\t\t}\n\n\t\tconst itemConsumables = this._consumable.get( item );\n\n\t\tif ( itemConsumables === undefined ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst value = itemConsumables.get( type );\n\n\t\tif ( value === undefined ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t/**\n\t * Reverts consuming of a consumable value.\n\t *\n\t * ```ts\n\t * modelConsumable.revert( modelElement, 'insert' ); // Revert consuming `modelElement` insertion change.\n\t * modelConsumable.revert( modelElement, 'addAttribute:bold' ); // Revert consuming `bold` attribute insert from `modelElement`.\n\t * modelConsumable.revert( modelElement, 'removeAttribute:bold' ); // Revert consuming `bold` attribute remove from `modelElement`.\n\t * modelConsumable.revert( modelSelection, 'selection' ); // Revert consuming `modelSelection`.\n\t * modelConsumable.revert( modelRange, 'range' ); // Revert consuming `modelRange`.\n\t * ```\n\t *\n\t * @param item Model item, range or selection to be reverted.\n\t * @param type Consumable type.\n\t * @returns `true` if consumable has been reversed, `false` otherwise. `null` if the consumable has\n\t * never been added.\n\t */\n\tpublic revert(\n\t\titem: Item | Selection | DocumentSelection | Range,\n\t\ttype: string\n\t): boolean | null {\n\t\ttype = _normalizeConsumableType( type );\n\n\t\tif ( item instanceof TextProxy ) {\n\t\t\titem = this._getSymbolForTextProxy( item ) as any;\n\t\t}\n\n\t\tconst test = this.test( item, type );\n\n\t\tif ( test === false ) {\n\t\t\tthis._consumable.get( item )!.set( type, true );\n\n\t\t\treturn true;\n\t\t} else if ( test === true ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Verifies if all events from the specified group were consumed.\n\t *\n\t * @param eventGroup The events group to verify.\n\t */\n\tpublic verifyAllConsumed( eventGroup: string ): void {\n\t\tconst items = [];\n\n\t\tfor ( const [ item, consumables ] of this._consumable ) {\n\t\t\tfor ( const [ event, canConsume ] of consumables ) {\n\t\t\t\tconst eventPrefix = event.split( ':' )[ 0 ];\n\n\t\t\t\tif ( canConsume && eventGroup == eventPrefix ) {\n\t\t\t\t\titems.push( {\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\titem: item.name || item.description\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( items.length ) {\n\t\t\t/**\n\t\t\t * Some of the {@link module:engine/model/item~Item model items} were not consumed while downcasting the model to view.\n\t\t\t *\n\t\t\t * This might be the effect of:\n\t\t\t *\n\t\t\t * * A missing converter for some model elements. Make sure that you registered downcast converters for all model elements.\n\t\t\t * * A custom converter that does not consume converted items. Make sure that you\n\t\t\t * {@link module:engine/conversion/modelconsumable~ModelConsumable#consume consumed} all model elements that you converted\n\t\t\t * from the model to the view.\n\t\t\t * * A custom converter that called `event.stop()`. When providing a custom converter, keep in mind that you should not stop\n\t\t\t * the event. If you stop it then the default converter at the `lowest` priority will not trigger the conversion of this node's\n\t\t\t * attributes and child nodes.\n\t\t\t *\n\t\t\t * @error conversion-model-consumable-not-consumed\n\t\t\t * @param {Array.<module:engine/model/item~Item>} items Items that were not consumed.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'conversion-model-consumable-not-consumed', null, { items } );\n\t\t}\n\t}\n\n\t/**\n\t * Gets a unique symbol for the passed {@link module:engine/model/textproxy~TextProxy} instance. All `TextProxy` instances that\n\t * have same parent, same start index and same end index will get the same symbol.\n\t *\n\t * Used internally to correctly consume `TextProxy` instances.\n\t *\n\t * @internal\n\t * @param textProxy `TextProxy` instance to get a symbol for.\n\t * @returns Symbol representing all equal instances of `TextProxy`.\n\t */\n\tpublic _getSymbolForTextProxy( textProxy: TextProxy ): symbol {\n\t\tlet symbol = null;\n\n\t\tconst startMap = this._textProxyRegistry.get( textProxy.startOffset );\n\n\t\tif ( startMap ) {\n\t\t\tconst endMap = startMap.get( textProxy.endOffset );\n\n\t\t\tif ( endMap ) {\n\t\t\t\tsymbol = endMap.get( textProxy.parent );\n\t\t\t}\n\t\t}\n\n\t\tif ( !symbol ) {\n\t\t\tsymbol = this._addSymbolForTextProxy( textProxy );\n\t\t}\n\n\t\treturn symbol;\n\t}\n\n\t/**\n\t * Adds a symbol for the given {@link module:engine/model/textproxy~TextProxy} instance.\n\t *\n\t * Used internally to correctly consume `TextProxy` instances.\n\t *\n\t * @param textProxy Text proxy instance.\n\t * @returns Symbol generated for given `TextProxy`.\n\t */\n\tprivate _addSymbolForTextProxy( textProxy: TextProxy ): symbol {\n\t\tconst start = textProxy.startOffset;\n\t\tconst end = textProxy.endOffset;\n\t\tconst parent = textProxy.parent;\n\n\t\tconst symbol = Symbol( '$textProxy:' + textProxy.data );\n\t\tlet startMap: Map<number | null, Map<unknown, symbol>> | undefined;\n\t\tlet endMap: Map<unknown, symbol> | undefined;\n\n\t\tstartMap = this._textProxyRegistry.get( start );\n\n\t\tif ( !startMap ) {\n\t\t\tstartMap = new Map();\n\t\t\tthis._textProxyRegistry.set( start, startMap );\n\t\t}\n\n\t\tendMap = startMap.get( end );\n\n\t\tif ( !endMap ) {\n\t\t\tendMap = new Map();\n\t\t\tstartMap.set( end, endMap );\n\t\t}\n\n\t\tendMap.set( parent, symbol );\n\n\t\treturn symbol;\n\t}\n}\n\n/**\n * Returns a normalized consumable type name from the given string. A normalized consumable type name is a string that has\n * at most one colon, for example: `insert` or `addMarker:highlight`. If a string to normalize has more \"parts\" (more colons),\n * the further parts are dropped, for example: `addattribute:bold:$text` -> `addattributes:bold`.\n *\n * @param type Consumable type.\n * @returns Normalized consumable type.\n */\nfunction _normalizeConsumableType( type: string ) {\n\tconst parts = type.split( ':' );\n\n\t// For inserts allow passing event name, it's stored in the context of a specified element so the element name is not needed.\n\tif ( parts[ 0 ] == 'insert' ) {\n\t\treturn parts[ 0 ];\n\t}\n\n\t// Markers are identified by the whole name (otherwise we would consume the whole markers group).\n\tif ( parts[ 0 ] == 'addMarker' || parts[ 0 ] == 'removeMarker' ) {\n\t\treturn type;\n\t}\n\n\treturn parts.length > 1 ? parts[ 0 ] + ':' + parts[ 1 ] : parts[ 0 ];\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/conversion/downcastdispatcher\n */\n\nimport Consumable from './modelconsumable';\nimport Range from '../model/range';\n\nimport { EmitterMixin } from '@ckeditor/ckeditor5-utils';\n\nimport type { default as Differ, DiffItem } from '../model/differ';\nimport type { default as MarkerCollection, Marker } from '../model/markercollection';\nimport type { TreeWalkerValue } from '../model/treewalker';\nimport type DocumentSelection from '../model/documentselection';\nimport type DowncastWriter from '../view/downcastwriter';\nimport type RootElement from '../model/rootelement';\nimport type Element from '../model/element';\nimport type Item from '../model/item';\nimport type Mapper from './mapper';\nimport type Position from '../model/position';\nimport type Schema from '../model/schema';\nimport type Selection from '../model/selection';\nimport type ViewElement from '../view/element';\n\n/**\n * The downcast dispatcher is a central point of downcasting (conversion from the model to the view), which is a process of reacting\n * to changes in the model and firing a set of events. The callbacks listening to these events are called converters. The\n * converters' role is to convert the model changes to changes in view (for example, adding view nodes or\n * changing attributes on view elements).\n *\n * During the conversion process, downcast dispatcher fires events basing on the state of the model and prepares\n * data for these events. It is important to understand that the events are connected with the changes done on the model,\n * for example: \"a node has been inserted\" or \"an attribute has changed\". This is in contrary to upcasting (a view-to-model conversion)\n * where you convert the view state (view nodes) to a model tree.\n *\n * The events are prepared basing on a diff created by the {@link module:engine/model/differ~Differ Differ}, which buffers them\n * and then passes to the downcast dispatcher as a diff between the old model state and the new model state.\n *\n * Note that because the changes are converted, there is a need to have a mapping between the model structure and the view structure.\n * To map positions and elements during the downcast (a model-to-view conversion), use {@link module:engine/conversion/mapper~Mapper}.\n *\n * Downcast dispatcher fires the following events for model tree changes:\n *\n * * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:insert `insert`} –\n * If a range of nodes was inserted to the model tree.\n * * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:remove `remove`} –\n * If a range of nodes was removed from the model tree.\n * * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:attribute `attribute`} –\n * If an attribute was added, changed or removed from a model node.\n *\n * For {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:insert `insert`}\n * and {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:attribute `attribute`},\n * the downcast dispatcher generates {@link module:engine/conversion/modelconsumable~ModelConsumable consumables}.\n * These are used to have control over which changes have already been consumed. It is useful when some converters\n * overwrite others or convert multiple changes (for example, it converts an insertion of an element and also converts that\n * element's attributes during the insertion).\n *\n * Additionally, downcast dispatcher fires events for {@link module:engine/model/markercollection~Marker marker} changes:\n *\n * * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:addMarker `addMarker`} – If a marker was added.\n * * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:removeMarker `removeMarker`} – If a marker was\n * removed.\n *\n * Note that changing a marker is done through removing the marker from the old range and adding it to the new range,\n * so both of these events are fired.\n *\n * Finally, a downcast dispatcher also handles firing events for the {@link module:engine/model/selection model selection}\n * conversion:\n *\n * * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:selection `selection`}\n * – Converts the selection from the model to the view.\n * * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:attribute `attribute`}\n * – Fired for every selection attribute.\n * * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:addMarker `addMarker`}\n * – Fired for every marker that contains a selection.\n *\n * Unlike the model tree and the markers, the events for selection are not fired for changes but for a selection state.\n *\n * When providing custom listeners for a downcast dispatcher, remember to check whether a given change has not been\n * {@link module:engine/conversion/modelconsumable~ModelConsumable#consume consumed} yet.\n *\n * When providing custom listeners for a downcast dispatcher, keep in mind that you **should not** stop the event. If you stop it,\n * then the default converter at the `lowest` priority will not trigger the conversion of this node's attributes and child nodes.\n *\n * When providing custom listeners for a downcast dispatcher, remember to use the provided\n * {@link module:engine/view/downcastwriter~DowncastWriter view downcast writer} to apply changes to the view document.\n *\n * You can read more about conversion in the following guide:\n *\n * * {@glink framework/deep-dive/conversion/downcast Downcast conversion}\n *\n * An example of a custom converter for the downcast dispatcher:\n *\n * ```ts\n * // You will convert inserting a \"paragraph\" model element into the model.\n * downcastDispatcher.on( 'insert:paragraph', ( evt, data, conversionApi ) => {\n * \t// Remember to check whether the change has not been consumed yet and consume it.\n * \tif ( !conversionApi.consumable.consume( data.item, 'insert' ) ) {\n * \t\treturn;\n * \t}\n *\n * \t// Translate the position in the model to a position in the view.\n * \tconst viewPosition = conversionApi.mapper.toViewPosition( data.range.start );\n *\n * \t// Create a <p> element that will be inserted into the view at the `viewPosition`.\n * \tconst viewElement = conversionApi.writer.createContainerElement( 'p' );\n *\n * \t// Bind the newly created view element to the model element so positions will map accordingly in the future.\n * \tconversionApi.mapper.bindElements( data.item, viewElement );\n *\n * \t// Add the newly created view element to the view.\n * \tconversionApi.writer.insert( viewPosition, viewElement );\n * } );\n * ```\n */\nexport default class DowncastDispatcher extends EmitterMixin() {\n\t/**\n\t * A template for an interface passed by the dispatcher to the event callbacks.\n\t *\n\t * @internal\n\t */\n\tpublic readonly _conversionApi: Pick<DowncastConversionApi, 'dispatcher' | 'mapper' | 'schema'>;\n\n\t/**\n\t * A map of already fired events for a given `ModelConsumable`.\n\t */\n\tprivate readonly _firedEventsMap: WeakMap<DowncastConversionApi, Map<unknown, Set<string>>>;\n\n\t/**\n\t * Creates a downcast dispatcher instance.\n\t *\n\t * @see module:engine/conversion/downcastdispatcher~DowncastConversionApi\n\t *\n\t * @param conversionApi Additional properties for an interface that will be passed to events fired\n\t * by the downcast dispatcher.\n\t */\n\tconstructor( conversionApi: Pick<DowncastConversionApi, 'mapper' | 'schema'> ) {\n\t\tsuper();\n\n\t\tthis._conversionApi = { dispatcher: this, ...conversionApi };\n\t\tthis._firedEventsMap = new WeakMap();\n\t}\n\n\t/**\n\t * Converts changes buffered in the given {@link module:engine/model/differ~Differ model differ}\n\t * and fires conversion events based on it.\n\t *\n\t * @fires insert\n\t * @fires remove\n\t * @fires attribute\n\t * @fires addMarker\n\t * @fires removeMarker\n\t * @fires reduceChanges\n\t * @param differ The differ object with buffered changes.\n\t * @param markers Markers related to the model fragment to convert.\n\t * @param writer The view writer that should be used to modify the view document.\n\t */\n\tpublic convertChanges(\n\t\tdiffer: Differ,\n\t\tmarkers: MarkerCollection,\n\t\twriter: DowncastWriter\n\t): void {\n\t\tconst conversionApi = this._createConversionApi( writer, differ.getRefreshedItems() );\n\n\t\t// Before the view is updated, remove markers which have changed.\n\t\tfor ( const change of differ.getMarkersToRemove() ) {\n\t\t\tthis._convertMarkerRemove( change.name, change.range, conversionApi );\n\t\t}\n\n\t\t// Let features modify the change list (for example to allow reconversion).\n\t\tconst changes = this._reduceChanges( differ.getChanges() );\n\n\t\t// Convert changes that happened on model tree.\n\t\tfor ( const entry of changes ) {\n\t\t\tif ( entry.type === 'insert' ) {\n\t\t\t\tthis._convertInsert( Range._createFromPositionAndShift( entry.position, entry.length ), conversionApi );\n\t\t\t} else if ( entry.type === 'reinsert' ) {\n\t\t\t\tthis._convertReinsert( Range._createFromPositionAndShift( entry.position, entry.length ), conversionApi );\n\t\t\t} else if ( entry.type === 'remove' ) {\n\t\t\t\tthis._convertRemove( entry.position, entry.length, entry.name, conversionApi );\n\t\t\t} else {\n\t\t\t\t// Defaults to 'attribute' change.\n\t\t\t\tthis._convertAttribute( entry.range, entry.attributeKey, entry.attributeOldValue, entry.attributeNewValue, conversionApi );\n\t\t\t}\n\t\t}\n\n\t\tfor ( const markerName of conversionApi.mapper.flushUnboundMarkerNames() ) {\n\t\t\tconst markerRange = markers.get( markerName )!.getRange();\n\n\t\t\tthis._convertMarkerRemove( markerName, markerRange, conversionApi );\n\t\t\tthis._convertMarkerAdd( markerName, markerRange, conversionApi );\n\t\t}\n\n\t\t// After the view is updated, convert markers which have changed.\n\t\tfor ( const change of differ.getMarkersToAdd() ) {\n\t\t\tthis._convertMarkerAdd( change.name, change.range, conversionApi );\n\t\t}\n\n\t\t// Remove mappings for all removed view elements.\n\t\tconversionApi.mapper.flushDeferredBindings();\n\n\t\t// Verify if all insert consumables were consumed.\n\t\tconversionApi.consumable.verifyAllConsumed( 'insert' );\n\t}\n\n\t/**\n\t * Starts a conversion of a model range and the provided markers.\n\t *\n\t * @fires insert\n\t * @fires attribute\n\t * @fires addMarker\n\t * @param range The inserted range.\n\t * @param markers The map of markers that should be down-casted.\n\t * @param writer The view writer that should be used to modify the view document.\n\t * @param options Optional options object passed to `convertionApi.options`.\n\t */\n\tpublic convert(\n\t\trange: Range,\n\t\tmarkers: Map<string, Range>,\n\t\twriter: DowncastWriter,\n\t\toptions: DowncastConversionApi[ 'options' ] = {}\n\t): void {\n\t\tconst conversionApi = this._createConversionApi( writer, undefined, options );\n\n\t\tthis._convertInsert( range, conversionApi );\n\n\t\tfor ( const [ name, range ] of markers ) {\n\t\t\tthis._convertMarkerAdd( name, range, conversionApi );\n\t\t}\n\n\t\t// Verify if all insert consumables were consumed.\n\t\tconversionApi.consumable.verifyAllConsumed( 'insert' );\n\t}\n\n\t/**\n\t * Starts the model selection conversion.\n\t *\n\t * Fires events for a given {@link module:engine/model/selection~Selection selection} to start the selection conversion.\n\t *\n\t * @fires selection\n\t * @fires addMarker\n\t * @fires attribute\n\t * @param selection The selection to convert.\n\t * @param markers Markers connected with the converted model.\n\t * @param writer View writer that should be used to modify the view document.\n\t */\n\tpublic convertSelection(\n\t\tselection: Selection | DocumentSelection,\n\t\tmarkers: MarkerCollection,\n\t\twriter: DowncastWriter\n\t): void {\n\t\tconst conversionApi = this._createConversionApi( writer );\n\n\t\t// First perform a clean-up at the current position of the selection.\n\t\tthis.fire<DowncastCleanSelectionEvent>( 'cleanSelection', { selection }, conversionApi );\n\n\t\t// Don't convert selection if it is in a model root that does not have a view root (for now this is only the graveyard root).\n\t\tconst modelRoot = selection.getFirstPosition()!.root as RootElement;\n\n\t\tif ( !conversionApi.mapper.toViewElement( modelRoot ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Now, perform actual selection conversion.\n\t\tconst markersAtSelection = Array.from( markers.getMarkersAtPosition( selection.getFirstPosition()! ) );\n\n\t\tthis._addConsumablesForSelection( conversionApi.consumable, selection, markersAtSelection );\n\n\t\tthis.fire<DowncastSelectionEvent>( 'selection', { selection }, conversionApi );\n\n\t\tif ( !selection.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( const marker of markersAtSelection ) {\n\t\t\t// Do not fire event if the marker has been consumed.\n\t\t\tif ( conversionApi.consumable.test( selection, 'addMarker:' + marker.name ) ) {\n\t\t\t\tconst markerRange = marker.getRange();\n\n\t\t\t\tif ( !shouldMarkerChangeBeConverted( selection.getFirstPosition()!, marker, conversionApi.mapper ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst data = {\n\t\t\t\t\titem: selection,\n\t\t\t\t\tmarkerName: marker.name,\n\t\t\t\t\tmarkerRange\n\t\t\t\t};\n\n\t\t\t\tthis.fire<DowncastAddMarkerEvent>( `addMarker:${ marker.name }`, data, conversionApi );\n\t\t\t}\n\t\t}\n\n\t\tfor ( const key of selection.getAttributeKeys() ) {\n\t\t\t// Do not fire event if the attribute has been consumed.\n\t\t\tif ( conversionApi.consumable.test( selection, 'attribute:' + key ) ) {\n\t\t\t\tconst data = {\n\t\t\t\t\titem: selection,\n\t\t\t\t\trange: selection.getFirstRange()!,\n\t\t\t\t\tattributeKey: key,\n\t\t\t\t\tattributeOldValue: null,\n\t\t\t\t\tattributeNewValue: selection.getAttribute( key )\n\t\t\t\t};\n\n\t\t\t\tthis.fire<DowncastAttributeEvent>( `attribute:${ key }:$text`, data, conversionApi );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Fires insertion conversion of a range of nodes.\n\t *\n\t * For each node in the range, {@link #event:insert `insert` event is fired}. For each attribute on each node,\n\t * {@link #event:attribute `attribute` event is fired}.\n\t *\n\t * @fires insert\n\t * @fires attribute\n\t * @param range The inserted range.\n\t * @param conversionApi The conversion API object.\n\t * @param options.doNotAddConsumables Whether the ModelConsumable should not get populated\n\t * for items in the provided range.\n\t */\n\tprivate _convertInsert(\n\t\trange: Range,\n\t\tconversionApi: DowncastConversionApi,\n\t\toptions: { doNotAddConsumables?: boolean } = {}\n\t): void {\n\t\tif ( !options.doNotAddConsumables ) {\n\t\t\t// Collect a list of things that can be consumed, consisting of nodes and their attributes.\n\t\t\tthis._addConsumablesForInsert( conversionApi.consumable, Array.from( range ) );\n\t\t}\n\n\t\t// Fire a separate insert event for each node and text fragment contained in the range.\n\t\tfor ( const data of Array.from( range.getWalker( { shallow: true } ) ).map( walkerValueToEventData ) ) {\n\t\t\tthis._testAndFire( 'insert', data, conversionApi );\n\t\t}\n\t}\n\n\t/**\n\t * Fires conversion of a single node removal. Fires {@link #event:remove remove event} with provided data.\n\t *\n\t * @param position Position from which node was removed.\n\t * @param length Offset size of removed node.\n\t * @param name Name of removed node.\n\t * @param conversionApi The conversion API object.\n\t */\n\tprivate _convertRemove(\n\t\tposition: Position,\n\t\tlength: number,\n\t\tname: string,\n\t\tconversionApi: DowncastConversionApi\n\t): void {\n\t\tthis.fire<DowncastRemoveEvent>( `remove:${ name }`, { position, length }, conversionApi );\n\t}\n\n\t/**\n\t * Starts a conversion of an attribute change on a given `range`.\n\t *\n\t * For each node in the given `range`, {@link #event:attribute attribute event} is fired with the passed data.\n\t *\n\t * @fires attribute\n\t * @param range Changed range.\n\t * @param key Key of the attribute that has changed.\n\t * @param oldValue Attribute value before the change or `null` if the attribute has not been set before.\n\t * @param newValue New attribute value or `null` if the attribute has been removed.\n\t * @param conversionApi The conversion API object.\n\t */\n\tprivate _convertAttribute(\n\t\trange: Range,\n\t\tkey: string,\n\t\toldValue: unknown,\n\t\tnewValue: unknown,\n\t\tconversionApi: DowncastConversionApi\n\t): void {\n\t\t// Create a list with attributes to consume.\n\t\tthis._addConsumablesForRange( conversionApi.consumable, range, `attribute:${ key }` );\n\n\t\t// Create a separate attribute event for each node in the range.\n\t\tfor ( const value of range ) {\n\t\t\tconst data = {\n\t\t\t\titem: value.item,\n\t\t\t\trange: Range._createFromPositionAndShift( value.previousPosition, value.length! ),\n\t\t\t\tattributeKey: key,\n\t\t\t\tattributeOldValue: oldValue,\n\t\t\t\tattributeNewValue: newValue\n\t\t\t};\n\n\t\t\tthis._testAndFire( `attribute:${ key }`, data, conversionApi );\n\t\t}\n\t}\n\n\t/**\n\t * Fires re-insertion conversion (with a `reconversion` flag passed to `insert` events)\n\t * of a range of elements (only elements on the range depth, without children).\n\t *\n\t * For each node in the range on its depth (without children), {@link #event:insert `insert` event} is fired.\n\t * For each attribute on each node, {@link #event:attribute `attribute` event} is fired.\n\t *\n\t * @fires insert\n\t * @fires attribute\n\t * @param range The range to reinsert.\n\t * @param conversionApi The conversion API object.\n\t */\n\tprivate _convertReinsert( range: Range, conversionApi: DowncastConversionApi ): void {\n\t\t// Convert the elements - without converting children.\n\t\tconst walkerValues = Array.from( range.getWalker( { shallow: true } ) );\n\n\t\t// Collect a list of things that can be consumed, consisting of nodes and their attributes.\n\t\tthis._addConsumablesForInsert( conversionApi.consumable, walkerValues );\n\n\t\t// Fire a separate insert event for each node and text fragment contained shallowly in the range.\n\t\tfor ( const data of walkerValues.map( walkerValueToEventData ) ) {\n\t\t\tthis._testAndFire( 'insert', { ...data, reconversion: true }, conversionApi );\n\t\t}\n\t}\n\n\t/**\n\t * Converts the added marker. Fires the {@link #event:addMarker `addMarker`} event for each item\n\t * in the marker's range. If the range is collapsed, a single event is dispatched. See the event description for more details.\n\t *\n\t * @fires addMarker\n\t * @param markerName Marker name.\n\t * @param markerRange The marker range.\n\t * @param conversionApi The conversion API object.\n\t */\n\tprivate _convertMarkerAdd(\n\t\tmarkerName: string,\n\t\tmarkerRange: Range,\n\t\tconversionApi: DowncastConversionApi\n\t): void {\n\t\t// Do not convert if range is in graveyard.\n\t\tif ( markerRange.root.rootName == '$graveyard' ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// In markers' case, event name == consumable name.\n\t\tconst eventName = `addMarker:${ markerName }` as const;\n\n\t\t//\n\t\t// First, fire an event for the whole marker.\n\t\t//\n\t\tconversionApi.consumable.add( markerRange, eventName );\n\n\t\tthis.fire<DowncastAddMarkerEvent>( eventName, { markerName, markerRange }, conversionApi );\n\n\t\t//\n\t\t// Do not fire events for each item inside the range if the range got consumed.\n\t\t// Also consume the whole marker consumable if it wasn't consumed.\n\t\t//\n\t\tif ( !conversionApi.consumable.consume( markerRange, eventName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t//\n\t\t// Then, fire an event for each item inside the marker range.\n\t\t//\n\t\tthis._addConsumablesForRange( conversionApi.consumable, markerRange, eventName );\n\n\t\tfor ( const item of markerRange.getItems() ) {\n\t\t\t// Do not fire event for already consumed items.\n\t\t\tif ( !conversionApi.consumable.test( item, eventName ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst data = { item, range: Range._createOn( item ), markerName, markerRange };\n\n\t\t\tthis.fire<DowncastAddMarkerEvent>( eventName, data, conversionApi );\n\t\t}\n\t}\n\n\t/**\n\t * Fires the conversion of the marker removal. Fires the {@link #event:removeMarker `removeMarker`} event with the provided data.\n\t *\n\t * @fires removeMarker\n\t * @param markerName Marker name.\n\t * @param markerRange The marker range.\n\t * @param conversionApi The conversion API object.\n\t */\n\tprivate _convertMarkerRemove( markerName: string, markerRange: Range, conversionApi: DowncastConversionApi ) {\n\t\t// Do not convert if range is in graveyard.\n\t\tif ( markerRange.root.rootName == '$graveyard' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.fire<DowncastRemoveMarkerEvent>( `removeMarker:${ markerName }`, { markerName, markerRange }, conversionApi );\n\t}\n\n\t/**\n\t * Fires the reduction of changes buffered in the {@link module:engine/model/differ~Differ `Differ`}.\n\t *\n\t * Features can replace selected {@link module:engine/model/differ~DiffItem `DiffItem`}s with `reinsert` entries to trigger\n\t * reconversion. The {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToStructure\n\t * `DowncastHelpers.elementToStructure()`} is using this event to trigger reconversion.\n\t *\n\t * @fires reduceChanges\n\t */\n\tprivate _reduceChanges( changes: Iterable<DiffItem> ): Iterable<DiffItem | DiffItemReinsert> {\n\t\tconst data: { changes: Iterable<DiffItem | DiffItemReinsert> } = { changes };\n\n\t\tthis.fire<DowncastReduceChangesEvent>( 'reduceChanges', data );\n\n\t\treturn data.changes;\n\t}\n\n\t/**\n\t * Populates provided {@link module:engine/conversion/modelconsumable~ModelConsumable} with values to consume from a given range,\n\t * assuming that the range has just been inserted to the model.\n\t *\n\t * @param consumable The consumable.\n\t * @param walkerValues The walker values for the inserted range.\n\t * @returns The values to consume.\n\t */\n\tprivate _addConsumablesForInsert(\n\t\tconsumable: Consumable,\n\t\twalkerValues: Iterable<TreeWalkerValue>\n\t): Consumable {\n\t\tfor ( const value of walkerValues ) {\n\t\t\tconst item = value.item;\n\n\t\t\t// Add consumable if it wasn't there yet.\n\t\t\tif ( consumable.test( item, 'insert' ) === null ) {\n\t\t\t\tconsumable.add( item, 'insert' );\n\n\t\t\t\tfor ( const key of item.getAttributeKeys() ) {\n\t\t\t\t\tconsumable.add( item, 'attribute:' + key );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn consumable;\n\t}\n\n\t/**\n\t * Populates provided {@link module:engine/conversion/modelconsumable~ModelConsumable} with values to consume for a given range.\n\t *\n\t * @param consumable The consumable.\n\t * @param range The affected range.\n\t * @param type Consumable type.\n\t * @returns The values to consume.\n\t */\n\tprivate _addConsumablesForRange(\n\t\tconsumable: Consumable,\n\t\trange: Range,\n\t\ttype: string\n\t): Consumable {\n\t\tfor ( const item of range.getItems() ) {\n\t\t\tconsumable.add( item, type );\n\t\t}\n\n\t\treturn consumable;\n\t}\n\n\t/**\n\t * Populates provided {@link module:engine/conversion/modelconsumable~ModelConsumable} with selection consumable values.\n\t *\n\t * @param consumable The consumable.\n\t * @param selection The selection to create the consumable from.\n\t * @param markers Markers that contain the selection.\n\t * @returns The values to consume.\n\t */\n\tprivate _addConsumablesForSelection(\n\t\tconsumable: Consumable,\n\t\tselection: Selection | DocumentSelection,\n\t\tmarkers: Iterable<Marker>\n\t): Consumable {\n\t\tconsumable.add( selection, 'selection' );\n\n\t\tfor ( const marker of markers ) {\n\t\t\tconsumable.add( selection, 'addMarker:' + marker.name );\n\t\t}\n\n\t\tfor ( const key of selection.getAttributeKeys() ) {\n\t\t\tconsumable.add( selection, 'attribute:' + key );\n\t\t}\n\n\t\treturn consumable;\n\t}\n\n\t/**\n\t * Tests whether given event wasn't already fired and if so, fires it.\n\t *\n\t * @fires insert\n\t * @fires attribute\n\t * @param type Event type.\n\t * @param data Event data.\n\t * @param conversionApi The conversion API object.\n\t */\n\tprivate _testAndFire<TType extends 'insert' | 'attribute'>(\n\t\ttype: TType | `${ TType }:${ string }`,\n\t\tdata: EventMap[ TType ],\n\t\tconversionApi: DowncastConversionApi\n\t): void {\n\t\tconst eventName = getEventName( type, data );\n\t\tconst itemKey = data.item.is( '$textProxy' ) ? conversionApi.consumable._getSymbolForTextProxy( data.item ) : data.item;\n\n\t\tconst eventsFiredForConversion = this._firedEventsMap.get( conversionApi )!;\n\t\tconst eventsFiredForItem = eventsFiredForConversion.get( itemKey );\n\n\t\tif ( !eventsFiredForItem ) {\n\t\t\teventsFiredForConversion.set( itemKey, new Set( [ eventName ] ) );\n\t\t} else if ( !eventsFiredForItem.has( eventName ) ) {\n\t\t\teventsFiredForItem.add( eventName );\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.fire<DowncastEvent<TType>>( eventName, data, conversionApi );\n\t}\n\n\t/**\n\t * Fires not already fired events for setting attributes on just inserted item.\n\t *\n\t * @param item The model item to convert attributes for.\n\t * @param conversionApi The conversion API object.\n\t */\n\tprivate _testAndFireAddAttributes(\n\t\titem: Item,\n\t\tconversionApi: DowncastConversionApi\n\t): void {\n\t\tconst data: EventMap[ 'attribute' ] = {\n\t\t\titem,\n\t\t\trange: Range._createOn( item )\n\t\t} as any;\n\n\t\tfor ( const key of data.item.getAttributeKeys() ) {\n\t\t\tdata.attributeKey = key;\n\t\t\tdata.attributeOldValue = null;\n\t\t\tdata.attributeNewValue = data.item.getAttribute( key );\n\n\t\t\tthis._testAndFire( `attribute:${ key }`, data, conversionApi );\n\t\t}\n\t}\n\n\t/**\n\t * Builds an instance of the {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi} from a template and a given\n\t * {@link module:engine/view/downcastwriter~DowncastWriter `DowncastWriter`} and options object.\n\t *\n\t * @param writer View writer that should be used to modify the view document.\n\t * @param refreshedItems A set of model elements that should not reuse their\n\t * previous view representations.\n\t * @param options Optional options passed to `convertionApi.options`.\n\t * @return The conversion API object.\n\t */\n\tprivate _createConversionApi(\n\t\twriter: DowncastWriter,\n\t\trefreshedItems: Set<Item> = new Set(),\n\t\toptions: DowncastConversionApi[ 'options' ] = {}\n\t): DowncastConversionApi {\n\t\tconst conversionApi: DowncastConversionApi = {\n\t\t\t...this._conversionApi,\n\t\t\tconsumable: new Consumable(),\n\t\t\twriter,\n\t\t\toptions,\n\t\t\tconvertItem: item => this._convertInsert( Range._createOn( item ), conversionApi ),\n\t\t\tconvertChildren: element => this._convertInsert( Range._createIn( element ), conversionApi, { doNotAddConsumables: true } ),\n\t\t\tconvertAttributes: item => this._testAndFireAddAttributes( item, conversionApi ),\n\t\t\tcanReuseView: viewElement => !refreshedItems.has( conversionApi.mapper.toModelElement( viewElement )! )\n\t\t};\n\n\t\tthis._firedEventsMap.set( conversionApi, new Map() );\n\n\t\treturn conversionApi;\n\t}\n}\n\n/**\n * Fired to enable reducing (transforming) changes buffered in the {@link module:engine/model/differ~Differ `Differ`} before\n * {@link ~DowncastDispatcher#convertChanges `convertChanges()`} will fire any conversion events.\n *\n * For instance, a feature can replace selected {@link module:engine/model/differ~DiffItem `DiffItem`}s with a `reinsert` entry\n * to trigger reconversion of an element when e.g. its attribute has changes.\n * The {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToStructure\n\t * `DowncastHelpers.elementToStructure()`} helper is using this event to trigger reconversion of an element when the element,\n * its attributes or direct children changed.\n *\n * @eventName ~DowncastDispatcher#reduceChanges\n */\nexport type DowncastReduceChangesEvent = {\n\tname: 'reduceChanges';\n\targs: [ data: DowncastReduceChangesEventData ];\n};\n\nexport type DowncastReduceChangesEventData = {\n\n\t/**\n\t * A buffered changes to get reduced.\n\t */\n\tchanges: Iterable<DiffItem | DiffItemReinsert>;\n};\n\ntype EventMap<TItem = Item> = {\n\tinsert: {\n\t\titem: TItem;\n\t\trange: Range;\n\t\treconversion?: boolean;\n\t};\n\tremove: {\n\t\tposition: Position;\n\t\tlength: number;\n\t};\n\tattribute: {\n\t\titem: TItem;\n\t\trange: Range;\n\t\tattributeKey: string;\n\t\tattributeOldValue: unknown;\n\t\tattributeNewValue: unknown;\n\t};\n\tcleanSelection: {\n\t\tselection: Selection | DocumentSelection;\n\t};\n\tselection: {\n\t\tselection: Selection | DocumentSelection;\n\t};\n\taddMarker: {\n\t\titem?: Item | Selection | DocumentSelection;\n\t\trange?: Range;\n\t\tmarkerRange: Range;\n\t\tmarkerName: string;\n\t};\n\tremoveMarker: {\n\t\tmarkerRange: Range;\n\t\tmarkerName: string;\n\t};\n};\n\nexport type DowncastEvent<TName extends keyof EventMap<TItem>, TItem = Item> = {\n\tname: TName | `${ TName }:${ string }`;\n\targs: [ data: EventMap<TItem>[ TName ], conversionApi: DowncastConversionApi ];\n};\n\n/**\n * Fired for inserted nodes.\n *\n * `insert` is a namespace for a class of events. Names of actually called events follow this pattern:\n * `insert:name`. `name` is either `'$text'`, when {@link module:engine/model/text~Text a text node} has been inserted,\n * or {@link module:engine/model/element~Element#name name} of inserted element.\n *\n * This way, the listeners can either listen to a general `insert` event or specific event (for example `insert:paragraph`).\n *\n * @eventName ~DowncastDispatcher#insert\n * @param {Object} data Additional information about the change.\n * @param {module:engine/model/item~Item} data.item The inserted item.\n * @param {module:engine/model/range~Range} data.range Range spanning over inserted item.\n * @param {module:engine/conversion/downcastdispatcher~DowncastConversionApi} conversionApi Conversion interface\n * to be used by callback, passed in the `DowncastDispatcher` constructor.\n */\nexport type DowncastInsertEvent<TItem extends Item = Item> = DowncastEvent<'insert', TItem>;\n\n/**\n * Fired for removed nodes.\n *\n * `remove` is a namespace for a class of events. Names of actually called events follow this pattern:\n * `remove:name`. `name` is either `'$text'`, when a {@link module:engine/model/text~Text a text node} has been removed,\n * or the {@link module:engine/model/element~Element#name name} of removed element.\n *\n * This way, listeners can either listen to a general `remove` event or specific event (for example `remove:paragraph`).\n *\n * @eventName ~DowncastDispatcher#remove\n * @param {Object} data Additional information about the change.\n * @param {module:engine/model/position~Position} data.position Position from which the node has been removed.\n * @param {Number} data.length Offset size of the removed node.\n * @param {module:engine/conversion/downcastdispatcher~DowncastConversionApi} conversionApi Conversion interface\n * to be used by callback, passed in `DowncastDispatcher` constructor.\n */\nexport type DowncastRemoveEvent = DowncastEvent<'remove'>;\n\n/**\n * Fired in the following cases:\n *\n * * when an attribute has been added, changed, or removed from a node,\n * * when a node with an attribute is inserted,\n * * when a collapsed model selection attribute is converted.\n *\n * `attribute` is a namespace for a class of events. Names of actually called events follow this pattern:\n * `attribute:attributeKey:name`. `attributeKey` is the key of added/changed/removed attribute.\n * `name` is either `'$text'` if change was on {@link module:engine/model/text~Text a text node},\n * or the {@link module:engine/model/element~Element#name name} of element which attribute has changed.\n *\n * This way listeners can either listen to a general `attribute:bold` event or specific event (for example `attribute:src:imageBlock`).\n *\n * @eventName ~DowncastDispatcher#attribute\n * @param {Object} data Additional information about the change.\n * @param {module:engine/model/item~Item|module:engine/model/documentselection~DocumentSelection} data.item Changed item\n * or converted selection.\n * @param {module:engine/model/range~Range} data.range Range spanning over changed item or selection range.\n * @param {String} data.attributeKey Attribute key.\n * @param {*} data.attributeOldValue Attribute value before the change. This is `null` when selection attribute is converted.\n * @param {*} data.attributeNewValue New attribute value.\n * @param {module:engine/conversion/downcastdispatcher~DowncastConversionApi} conversionApi Conversion interface\n * to be used by callback, passed in `DowncastDispatcher` constructor.\n */\nexport type DowncastAttributeEvent<TItem = Item | Selection | DocumentSelection> = DowncastEvent<'attribute', TItem>;\n\n/**\n * Fired for {@link module:engine/model/selection~Selection selection} changes.\n *\n * @eventName ~DowncastDispatcher#selection\n * @param {module:engine/model/selection~Selection} selection Selection that is converted.\n * @param {module:engine/conversion/downcastdispatcher~DowncastConversionApi} conversionApi Conversion interface\n * to be used by callback, passed in `DowncastDispatcher` constructor.\n */\nexport type DowncastSelectionEvent = DowncastEvent<'selection'>;\n\n/**\n * Fired at the beginning of selection conversion, before\n * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:selection selection} events.\n *\n * Should be used to clean up the view state at the current selection position, before the selection is moved to another place.\n *\n * @eventName ~DowncastDispatcher#cleanSelection\n * @param {module:engine/model/selection~Selection} selection Selection that is converted.\n * @param {module:engine/conversion/downcastdispatcher~DowncastConversionApi} conversionApi Conversion interface\n * to be used by callback, passed in `DowncastDispatcher` constructor.\n */\nexport type DowncastCleanSelectionEvent = DowncastEvent<'cleanSelection'>;\n\n/**\n * Fired when a new marker is added to the model. Also fired when a collapsed model selection that is inside a marker is converted.\n *\n * `addMarker` is a namespace for a class of events. Names of actually called events follow this pattern:\n * `addMarker:markerName`. By specifying certain marker names, you can make the events even more gradual. For example,\n * if markers are named `foo:abc`, `foo:bar`, then it is possible to listen to `addMarker:foo` or `addMarker:foo:abc` and\n * `addMarker:foo:bar` events.\n *\n * If the marker range is not collapsed:\n *\n * * the event is fired for each item in the marker range one by one,\n * * `conversionApi.consumable` includes each item of the marker range and the consumable value is same as the event name.\n *\n * If the marker range is collapsed:\n *\n * * there is only one event,\n * * `conversionApi.consumable` includes marker range with the event name.\n *\n * If the selection inside a marker is converted:\n *\n * * there is only one event,\n * * `conversionApi.consumable` includes the selection instance with the event name.\n *\n * @eventName ~DowncastDispatcher#addMarker\n * @param {Object} data Additional information about the change.\n * @param {module:engine/model/item~Item|module:engine/model/selection~Selection} data.item Item inside the new marker or\n * the selection that is being converted.\n * @param {module:engine/model/range~Range} [data.range] Range spanning over converted item. Available only in marker conversion, if\n * the marker range was not collapsed.\n * @param {module:engine/model/range~Range} data.markerRange Marker range.\n * @param {String} data.markerName Marker name.\n * @param {module:engine/conversion/downcastdispatcher~DowncastConversionApi} conversionApi Conversion interface\n * to be used by callback, passed in `DowncastDispatcher` constructor.\n */\nexport type DowncastAddMarkerEvent = DowncastEvent<'addMarker'>;\n\n/**\n * Fired when a marker is removed from the model.\n *\n * `removeMarker` is a namespace for a class of events. Names of actually called events follow this pattern:\n * `removeMarker:markerName`. By specifying certain marker names, you can make the events even more gradual. For example,\n * if markers are named `foo:abc`, `foo:bar`, then it is possible to listen to `removeMarker:foo` or `removeMarker:foo:abc` and\n * `removeMarker:foo:bar` events.\n *\n * @eventName ~DowncastDispatcher#removeMarker\n * @param {Object} data Additional information about the change.\n * @param {module:engine/model/range~Range} data.markerRange Marker range.\n * @param {String} data.markerName Marker name.\n * @param {module:engine/conversion/downcastdispatcher~DowncastConversionApi} conversionApi Conversion interface\n * to be used by callback, passed in `DowncastDispatcher` constructor.\n */\nexport type DowncastRemoveMarkerEvent = DowncastEvent<'removeMarker'>;\n\nexport interface DiffItemReinsert {\n\ttype: 'reinsert';\n\tname: string;\n\tposition: Position;\n\tlength: number;\n}\n\n/**\n * Helper function, checks whether change of `marker` at `modelPosition` should be converted. Marker changes are not\n * converted if they happen inside an element with custom conversion method.\n */\nfunction shouldMarkerChangeBeConverted(\n\tmodelPosition: Position,\n\tmarker: Marker,\n\tmapper: Mapper\n): boolean {\n\tconst range = marker.getRange();\n\tconst ancestors = Array.from( modelPosition.getAncestors() );\n\tancestors.shift(); // Remove root element. It cannot be passed to `model.Range#containsItem`.\n\tancestors.reverse();\n\n\tconst hasCustomHandling = ( ancestors as Array<Element> ).some( element => {\n\t\tif ( range.containsItem( element ) ) {\n\t\t\tconst viewElement = mapper.toViewElement( element )!;\n\n\t\t\treturn !!viewElement.getCustomProperty( 'addHighlight' );\n\t\t}\n\t} );\n\n\treturn !hasCustomHandling;\n}\n\nfunction getEventName<TType extends string>( type: TType, data: { item: Item | Selection | DocumentSelection } ) {\n\tconst name = data.item.is( 'element' ) ? data.item.name : '$text';\n\n\treturn `${ type }:${ name }` as const;\n}\n\nfunction walkerValueToEventData( value: TreeWalkerValue ) {\n\tconst item = value.item;\n\tconst itemRange = Range._createFromPositionAndShift( value.previousPosition, value.length! );\n\n\treturn {\n\t\titem,\n\t\trange: itemRange\n\t};\n}\n\n/**\n * Conversion interface that is registered for given {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher}\n * and is passed as one of parameters when {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher dispatcher}\n * fires its events.\n */\nexport interface DowncastConversionApi {\n\n\t/**\n\t * The {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher} instance.\n\t */\n\tdispatcher: DowncastDispatcher;\n\n\t/**\n\t * Stores the information about what parts of a processed model item are still waiting to be handled. After a piece of a model item was\n\t * converted, an appropriate consumable value should be {@link module:engine/conversion/modelconsumable~ModelConsumable#consume\n\t * consumed}.\n\t */\n\tconsumable: Consumable;\n\n\t/**\n\t * The {@link module:engine/conversion/mapper~Mapper} instance.\n\t */\n\tmapper: Mapper;\n\n\t/**\n\t * The {@link module:engine/model/schema~Schema} instance set for the model that is downcast.\n\t */\n\tschema: Schema;\n\n\t/**\n\t * The {@link module:engine/view/downcastwriter~DowncastWriter} instance used to manipulate the data during conversion.\n\t */\n\twriter: DowncastWriter;\n\n\t/**\n\t * An object with an additional configuration which can be used during the conversion process.\n\t * Available only for data downcast conversion.\n\t */\n\toptions: Record<string, unknown>;\n\n\t/**\n\t * Triggers conversion of a specified item.\n\t * This conversion is triggered within (as a separate process of) the parent conversion.\n\t *\n\t * @param item The model item to trigger nested insert conversion on.\n\t */\n\tconvertItem( item: Item ): void;\n\n\t/**\n\t * Triggers conversion of children of a specified element.\n\t *\n\t * @param element The model element to trigger children insert conversion on.\n\t */\n\tconvertChildren( element: Element ): void;\n\n\t/**\n\t * Triggers conversion of attributes of a specified item.\n\t *\n\t * @param item The model item to trigger attribute conversion on.\n\t */\n\tconvertAttributes( item: Item ): void;\n\tcanReuseView( element: ViewElement ): boolean;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/selection\n */\n\nimport TypeCheckable from './typecheckable';\nimport Node from './node';\nimport Position, { type PositionOffset } from './position';\nimport Range from './range';\n\nimport type DocumentFragment from './documentfragment';\nimport type DocumentSelection from './documentselection';\nimport type Element from './element';\nimport type Item from './item';\n\nimport { CKEditorError, EmitterMixin, isIterable } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Selection is a set of {@link module:engine/model/range~Range ranges}. It has a direction specified by its\n * {@link module:engine/model/selection~Selection#anchor anchor} and {@link module:engine/model/selection~Selection#focus focus}\n * (it can be {@link module:engine/model/selection~Selection#isBackward forward or backward}).\n * Additionally, selection may have its own attributes (think – whether text typed in in this selection\n * should have those attributes – e.g. whether you type a bolded text).\n */\nexport default class Selection extends EmitterMixin( TypeCheckable ) {\n\t/**\n\t * Specifies whether the last added range was added as a backward or forward range.\n\t */\n\tprivate _lastRangeBackward: boolean = false;\n\n\t/**\n\t * List of attributes set on current selection.\n\t */\n\tprotected _attrs: Map<string, unknown> = new Map();\n\n\t/** @internal */\n\tpublic _ranges: Array<Range> = [];\n\n\t/**\n\t * Creates a new selection instance based on the given {@link module:engine/model/selection~Selectable selectable}\n\t * or creates an empty selection if no arguments were passed.\n\t *\n\t * ```ts\n\t * // Creates empty selection without ranges.\n\t * const selection = writer.createSelection();\n\t *\n\t * // Creates selection at the given range.\n\t * const range = writer.createRange( start, end );\n\t * const selection = writer.createSelection( range );\n\t *\n\t * // Creates selection at the given ranges\n\t * const ranges = [ writer.createRange( start1, end2 ), writer.createRange( star2, end2 ) ];\n\t * const selection = writer.createSelection( ranges );\n\t *\n\t * // Creates selection from the other selection.\n\t * // Note: It doesn't copy selection attributes.\n\t * const otherSelection = writer.createSelection();\n\t * const selection = writer.createSelection( otherSelection );\n\t *\n\t * // Creates selection from the given document selection.\n\t * // Note: It doesn't copy selection attributes.\n\t * const documentSelection = model.document.selection;\n\t * const selection = writer.createSelection( documentSelection );\n\t *\n\t * // Creates selection at the given position.\n\t * const position = writer.createPositionFromPath( root, path );\n\t * const selection = writer.createSelection( position );\n\t *\n\t * // Creates selection at the given offset in the given element.\n\t * const paragraph = writer.createElement( 'paragraph' );\n\t * const selection = writer.createSelection( paragraph, offset );\n\t *\n\t * // Creates a range inside an {@link module:engine/model/element~Element element} which starts before the\n\t * // first child of that element and ends after the last child of that element.\n\t * const selection = writer.createSelection( paragraph, 'in' );\n\t *\n\t * // Creates a range on an {@link module:engine/model/item~Item item} which starts before the item and ends\n\t * // just after the item.\n\t * const selection = writer.createSelection( paragraph, 'on' );\n\t * ```\n\t *\n\t * Selection's constructor allow passing additional options (`'backward'`) as the last argument.\n\t *\n\t * ```ts\n\t * // Creates backward selection.\n\t * const selection = writer.createSelection( range, { backward: true } );\n\t * ```\n\t *\n\t * @internal\n\t */\n\tconstructor(\n\t\t...args: [] |\n\t\t[\n\t\t\tselectable: Node,\n\t\t\tplaceOrOffset: PlaceOrOffset,\n\t\t\toptions?: { backward?: boolean }\n\t\t] |\n\t\t[\n\t\t\tselectable?: Exclude<Selectable, Node>,\n\t\t\toptions?: { backward?: boolean }\n\t\t]\n\t) {\n\t\tsuper();\n\n\t\tif ( args.length ) {\n\t\t\tthis.setTo( ...args );\n\t\t}\n\t}\n\n\t/**\n\t * Selection anchor. Anchor is the position from which the selection was started. If a user is making a selection\n\t * by dragging the mouse, the anchor is where the user pressed the mouse button (the beginning of the selection).\n\t *\n\t * Anchor and {@link #focus} define the direction of the selection, which is important\n\t * when expanding/shrinking selection. The focus moves, while the anchor should remain in the same place.\n\t *\n\t * Anchor is always set to the {@link module:engine/model/range~Range#start start} or\n\t * {@link module:engine/model/range~Range#end end} position of the last of selection's ranges. Whether it is\n\t * the `start` or `end` depends on the specified `options.backward`. See the {@link #setTo `setTo()`} method.\n\t *\n\t * May be set to `null` if there are no ranges in the selection.\n\t *\n\t * @see #focus\n\t */\n\tpublic get anchor(): Position | null {\n\t\tif ( this._ranges.length > 0 ) {\n\t\t\tconst range = this._ranges[ this._ranges.length - 1 ];\n\n\t\t\treturn this._lastRangeBackward ? range.end : range.start;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Selection focus. Focus is the position where the selection ends. If a user is making a selection\n\t * by dragging the mouse, the focus is where the mouse cursor is.\n\t *\n\t * May be set to `null` if there are no ranges in the selection.\n\t *\n\t * @see #anchor\n\t */\n\tpublic get focus(): Position | null {\n\t\tif ( this._ranges.length > 0 ) {\n\t\t\tconst range = this._ranges[ this._ranges.length - 1 ];\n\n\t\t\treturn this._lastRangeBackward ? range.start : range.end;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Whether the selection is collapsed. Selection is collapsed when there is exactly one range in it\n\t * and it is collapsed.\n\t */\n\tpublic get isCollapsed(): boolean {\n\t\tconst length = this._ranges.length;\n\n\t\tif ( length === 1 ) {\n\t\t\treturn this._ranges[ 0 ].isCollapsed;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the number of ranges in the selection.\n\t */\n\tpublic get rangeCount(): number {\n\t\treturn this._ranges.length;\n\t}\n\n\t/**\n\t * Specifies whether the selection's {@link #focus} precedes the selection's {@link #anchor}.\n\t */\n\tpublic get isBackward(): boolean {\n\t\treturn !this.isCollapsed && this._lastRangeBackward;\n\t}\n\n\t/**\n\t * Checks whether this selection is equal to the given selection. Selections are equal if they have the same directions,\n\t * the same number of ranges and all ranges from one selection equal to ranges from the another selection.\n\t *\n\t * @param otherSelection Selection to compare with.\n\t * @returns `true` if selections are equal, `false` otherwise.\n\t */\n\tpublic isEqual( otherSelection: Selection | DocumentSelection ): boolean {\n\t\tif ( this.rangeCount != otherSelection.rangeCount ) {\n\t\t\treturn false;\n\t\t} else if ( this.rangeCount === 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( !this.anchor!.isEqual( otherSelection.anchor! ) || !this.focus!.isEqual( otherSelection.focus! ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor ( const thisRange of this._ranges ) {\n\t\t\tlet found = false;\n\n\t\t\tfor ( const otherRange of otherSelection._ranges ) {\n\t\t\t\tif ( thisRange.isEqual( otherRange ) ) {\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !found ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Returns an iterable object that iterates over copies of selection ranges.\n\t */\n\tpublic* getRanges(): IterableIterator<Range> {\n\t\tfor ( const range of this._ranges ) {\n\t\t\tyield new Range( range.start, range.end );\n\t\t}\n\t}\n\n\t/**\n\t * Returns a copy of the first range in the selection.\n\t * First range is the one which {@link module:engine/model/range~Range#start start} position\n\t * {@link module:engine/model/position~Position#isBefore is before} start position of all other ranges\n\t * (not to confuse with the first range added to the selection).\n\t *\n\t * Returns `null` if there are no ranges in selection.\n\t */\n\tpublic getFirstRange(): Range | null {\n\t\tlet first = null;\n\n\t\tfor ( const range of this._ranges ) {\n\t\t\tif ( !first || range.start.isBefore( first.start ) ) {\n\t\t\t\tfirst = range;\n\t\t\t}\n\t\t}\n\n\t\treturn first ? new Range( first.start, first.end ) : null;\n\t}\n\n\t/**\n\t * Returns a copy of the last range in the selection.\n\t * Last range is the one which {@link module:engine/model/range~Range#end end} position\n\t * {@link module:engine/model/position~Position#isAfter is after} end position of all other ranges (not to confuse with the range most\n\t * recently added to the selection).\n\t *\n\t * Returns `null` if there are no ranges in selection.\n\t */\n\tpublic getLastRange(): Range | null {\n\t\tlet last = null;\n\n\t\tfor ( const range of this._ranges ) {\n\t\t\tif ( !last || range.end.isAfter( last.end ) ) {\n\t\t\t\tlast = range;\n\t\t\t}\n\t\t}\n\n\t\treturn last ? new Range( last.start, last.end ) : null;\n\t}\n\n\t/**\n\t * Returns the first position in the selection.\n\t * First position is the position that {@link module:engine/model/position~Position#isBefore is before}\n\t * any other position in the selection.\n\t *\n\t * Returns `null` if there are no ranges in selection.\n\t */\n\tpublic getFirstPosition(): Position | null {\n\t\tconst first = this.getFirstRange();\n\n\t\treturn first ? first.start.clone() : null;\n\t}\n\n\t/**\n\t * Returns the last position in the selection.\n\t * Last position is the position that {@link module:engine/model/position~Position#isAfter is after}\n\t * any other position in the selection.\n\t *\n\t * Returns `null` if there are no ranges in selection.\n\t */\n\tpublic getLastPosition(): Position | null {\n\t\tconst lastRange = this.getLastRange();\n\n\t\treturn lastRange ? lastRange.end.clone() : null;\n\t}\n\n\t/**\n\t * Sets this selection's ranges and direction to the specified location based on the given\n\t * {@link module:engine/model/selection~Selectable selectable}.\n\t *\n\t * ```ts\n\t * // Removes all selection's ranges.\n\t * selection.setTo( null );\n\t *\n\t * // Sets selection to the given range.\n\t * const range = writer.createRange( start, end );\n\t * selection.setTo( range );\n\t *\n\t * // Sets selection to given ranges.\n\t * const ranges = [ writer.createRange( start1, end2 ), writer.createRange( star2, end2 ) ];\n\t * selection.setTo( ranges );\n\t *\n\t * // Sets selection to other selection.\n\t * // Note: It doesn't copy selection attributes.\n\t * const otherSelection = writer.createSelection();\n\t * selection.setTo( otherSelection );\n\t *\n\t * // Sets selection to the given document selection.\n\t * // Note: It doesn't copy selection attributes.\n\t * const documentSelection = new DocumentSelection( doc );\n\t * selection.setTo( documentSelection );\n\t *\n\t * // Sets collapsed selection at the given position.\n\t * const position = writer.createPositionFromPath( root, path );\n\t * selection.setTo( position );\n\t *\n\t * // Sets collapsed selection at the position of the given node and an offset.\n\t * selection.setTo( paragraph, offset );\n\t * ```\n\t *\n\t * Creates a range inside an {@link module:engine/model/element~Element element} which starts before the first child of\n \t * that element and ends after the last child of that element.\n\t *\n\t * ```ts\n\t * selection.setTo( paragraph, 'in' );\n\t * ```\n\t *\n\t * Creates a range on an {@link module:engine/model/item~Item item} which starts before the item and ends just after the item.\n\t *\n\t * ```ts\n\t * selection.setTo( paragraph, 'on' );\n\t * ```\n\t *\n\t * `Selection#setTo()`' method allow passing additional options (`backward`) as the last argument.\n\t *\n\t * ```ts\n\t * // Sets backward selection.\n\t * const selection = writer.createSelection( range, { backward: true } );\n\t * ```\n\t */\n\tpublic setTo(\n\t\t...args: [\n\t\t\tselectable: Node,\n\t\t\tplaceOrOffset: PlaceOrOffset,\n\t\t\toptions?: { backward?: boolean }\n\t\t] | [\n\t\t\tselectable?: Exclude<Selectable, Node>,\n\t\t\toptions?: { backward?: boolean }\n\t\t]\n\t): void {\n\t\tlet [ selectable, placeOrOffset, options ] = args;\n\n\t\tif ( typeof placeOrOffset == 'object' ) {\n\t\t\toptions = placeOrOffset;\n\t\t\tplaceOrOffset = undefined;\n\t\t}\n\n\t\tif ( selectable === null ) {\n\t\t\tthis._setRanges( [] );\n\t\t} else if ( selectable instanceof Selection ) {\n\t\t\tthis._setRanges( selectable.getRanges(), selectable.isBackward );\n\t\t} else if ( selectable && typeof ( selectable as any ).getRanges == 'function' ) {\n\t\t\t// We assume that the selectable is a DocumentSelection.\n\t\t\t// It can't be imported here, because it would lead to circular imports.\n\t\t\tthis._setRanges( ( selectable as DocumentSelection ).getRanges(), ( selectable as DocumentSelection ).isBackward );\n\t\t} else if ( selectable instanceof Range ) {\n\t\t\tthis._setRanges( [ selectable ], !!options && !!options.backward );\n\t\t} else if ( selectable instanceof Position ) {\n\t\t\tthis._setRanges( [ new Range( selectable ) ] );\n\t\t} else if ( selectable instanceof Node ) {\n\t\t\tconst backward = !!options && !!options.backward;\n\t\t\tlet range;\n\n\t\t\tif ( placeOrOffset == 'in' ) {\n\t\t\t\trange = Range._createIn( selectable as Element );\n\t\t\t} else if ( placeOrOffset == 'on' ) {\n\t\t\t\trange = Range._createOn( selectable );\n\t\t\t} else if ( placeOrOffset !== undefined ) {\n\t\t\t\trange = new Range( Position._createAt( selectable, placeOrOffset ) );\n\t\t\t} else {\n\t\t\t\t/**\n\t\t\t\t * selection.setTo requires the second parameter when the first parameter is a node.\n\t\t\t\t *\n\t\t\t\t * @error model-selection-setto-required-second-parameter\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'model-selection-setto-required-second-parameter', [ this, selectable ] );\n\t\t\t}\n\n\t\t\tthis._setRanges( [ range ], backward );\n\t\t} else if ( isIterable( selectable ) ) {\n\t\t\t// We assume that the selectable is an iterable of ranges.\n\t\t\tthis._setRanges( selectable, options && !!options.backward );\n\t\t} else {\n\t\t\t/**\n\t\t\t * Cannot set the selection to the given place.\n\t\t\t *\n\t\t\t * Invalid parameters were specified when setting the selection. Common issues:\n\t\t\t *\n\t\t\t * * A {@link module:engine/model/textproxy~TextProxy} instance was passed instead of\n\t\t\t * a real {@link module:engine/model/text~Text}.\n\t\t\t * * View nodes were passed instead of model nodes.\n\t\t\t * * `null`/`undefined` was passed.\n\t\t\t *\n\t\t\t * @error model-selection-setto-not-selectable\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-selection-setto-not-selectable', [ this, selectable ] );\n\t\t}\n\t}\n\n\t/**\n\t * Replaces all ranges that were added to the selection with given array of ranges. Last range of the array\n\t * is treated like the last added range and is used to set {@link module:engine/model/selection~Selection#anchor} and\n\t * {@link module:engine/model/selection~Selection#focus}. Accepts a flag describing in which direction the selection is made.\n\t *\n\t * @fires change:range\n\t * @param newRanges Ranges to set.\n\t * @param isLastBackward Flag describing if last added range was selected forward - from start to end (`false`)\n\t * or backward - from end to start (`true`).\n\t */\n\tprotected _setRanges( newRanges: Iterable<Range>, isLastBackward: boolean = false ): void {\n\t\tconst ranges = Array.from( newRanges );\n\n\t\t// Check whether there is any range in new ranges set that is different than all already added ranges.\n\t\tconst anyNewRange = ranges.some( newRange => {\n\t\t\tif ( !( newRange instanceof Range ) ) {\n\t\t\t\t/**\n\t\t\t\t * Selection range set to an object that is not an instance of {@link module:engine/model/range~Range}.\n\t\t\t\t *\n\t\t\t\t * Only {@link module:engine/model/range~Range} instances can be used to set a selection.\n\t\t\t\t * Common mistakes leading to this error are:\n\t\t\t\t *\n\t\t\t\t * * using DOM `Range` object,\n\t\t\t\t * * incorrect CKEditor 5 installation with multiple `ckeditor5-engine` packages having different versions.\n\t\t\t\t *\n\t\t\t\t * @error model-selection-set-ranges-not-range\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'model-selection-set-ranges-not-range',\n\t\t\t\t\t[ this, newRanges ]\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn this._ranges.every( oldRange => {\n\t\t\t\treturn !oldRange.isEqual( newRange );\n\t\t\t} );\n\t\t} );\n\n\t\t// Don't do anything if nothing changed.\n\t\tif ( ranges.length === this._ranges.length && !anyNewRange ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._replaceAllRanges( ranges );\n\n\t\tthis._lastRangeBackward = !!isLastBackward;\n\n\t\tthis.fire<SelectionChangeRangeEvent>( 'change:range', { directChange: true } );\n\t}\n\n\t/**\n\t * Moves {@link module:engine/model/selection~Selection#focus} to the specified location.\n\t *\n\t * The location can be specified in the same form as\n\t * {@link module:engine/model/writer~Writer#createPositionAt writer.createPositionAt()} parameters.\n\t *\n\t * @fires change:range\n\t * @param offset Offset or one of the flags. Used only when first parameter is a {@link module:engine/model/item~Item model item}.\n\t */\n\tpublic setFocus( itemOrPosition: Item | Position, offset?: PositionOffset ): void {\n\t\tif ( this.anchor === null ) {\n\t\t\t/**\n\t\t\t * Cannot set selection focus if there are no ranges in selection.\n\t\t\t *\n\t\t\t * @error model-selection-setfocus-no-ranges\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-selection-setfocus-no-ranges', [ this, itemOrPosition ] );\n\t\t}\n\n\t\tconst newFocus = Position._createAt( itemOrPosition, offset );\n\n\t\tif ( newFocus.compareWith( this.focus! ) == 'same' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst anchor = this.anchor;\n\n\t\tif ( this._ranges.length ) {\n\t\t\tthis._popRange();\n\t\t}\n\n\t\tif ( newFocus.compareWith( anchor ) == 'before' ) {\n\t\t\tthis._pushRange( new Range( newFocus, anchor ) );\n\t\t\tthis._lastRangeBackward = true;\n\t\t} else {\n\t\t\tthis._pushRange( new Range( anchor, newFocus ) );\n\t\t\tthis._lastRangeBackward = false;\n\t\t}\n\n\t\tthis.fire<SelectionChangeRangeEvent>( 'change:range', { directChange: true } );\n\t}\n\n\t/**\n\t * Gets an attribute value for given key or `undefined` if that attribute is not set on the selection.\n\t *\n\t * @param key Key of attribute to look for.\n\t * @returns Attribute value or `undefined`.\n\t */\n\tpublic getAttribute( key: string ): unknown {\n\t\treturn this._attrs.get( key );\n\t}\n\n\t/**\n\t * Returns iterable that iterates over this selection's attributes.\n\t *\n\t * Attributes are returned as arrays containing two items. First one is attribute key and second is attribute value.\n\t * This format is accepted by native `Map` object and also can be passed in `Node` constructor.\n\t */\n\tpublic getAttributes(): IterableIterator<[ string, unknown ]> {\n\t\treturn this._attrs.entries();\n\t}\n\n\t/**\n\t * Returns iterable that iterates over this selection's attribute keys.\n\t */\n\tpublic getAttributeKeys(): IterableIterator<string> {\n\t\treturn this._attrs.keys();\n\t}\n\n\t/**\n\t * Checks if the selection has an attribute for given key.\n\t *\n\t * @param key Key of attribute to check.\n\t * @returns `true` if attribute with given key is set on selection, `false` otherwise.\n\t */\n\tpublic hasAttribute( key: string ): boolean {\n\t\treturn this._attrs.has( key );\n\t}\n\n\t/**\n\t * Removes an attribute with given key from the selection.\n\t *\n\t * If given attribute was set on the selection, fires the {@link #event:change:range} event with\n\t * removed attribute key.\n\t *\n\t * @fires change:attribute\n\t * @param key Key of attribute to remove.\n\t */\n\tpublic removeAttribute( key: string ): void {\n\t\tif ( this.hasAttribute( key ) ) {\n\t\t\tthis._attrs.delete( key );\n\n\t\t\tthis.fire<SelectionChangeAttributeEvent>( 'change:attribute', { attributeKeys: [ key ], directChange: true } );\n\t\t}\n\t}\n\n\t/**\n\t * Sets attribute on the selection. If attribute with the same key already is set, it's value is overwritten.\n\t *\n\t * If the attribute value has changed, fires the {@link #event:change:range} event with\n\t * the attribute key.\n\t *\n\t * @fires change:attribute\n\t * @param key Key of attribute to set.\n\t * @param value Attribute value.\n\t */\n\tpublic setAttribute( key: string, value: unknown ): void {\n\t\tif ( this.getAttribute( key ) !== value ) {\n\t\t\tthis._attrs.set( key, value );\n\n\t\t\tthis.fire<SelectionChangeAttributeEvent>( 'change:attribute', { attributeKeys: [ key ], directChange: true } );\n\t\t}\n\t}\n\n\t/**\n\t * Returns the selected element. {@link module:engine/model/element~Element Element} is considered as selected if there is only\n\t * one range in the selection, and that range contains exactly one element.\n\t * Returns `null` if there is no selected element.\n\t */\n\tpublic getSelectedElement(): Element | null {\n\t\tif ( this.rangeCount !== 1 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this.getFirstRange()!.getContainedElement();\n\t}\n\n\t/**\n\t * Gets elements of type {@link module:engine/model/schema~Schema#isBlock \"block\"} touched by the selection.\n\t *\n\t * This method's result can be used for example to apply block styling to all blocks covered by this selection.\n\t *\n\t * **Note:** `getSelectedBlocks()` returns blocks that are nested in other non-block elements\n\t * but will not return blocks nested in other blocks.\n\t *\n\t * In this case the function will return exactly all 3 paragraphs (note: `<blockQuote>` is not a block itself):\n\t *\n\t * ```xml\n\t * <paragraph>[a</paragraph>\n\t * <blockQuote>\n\t * \t<paragraph>b</paragraph>\n\t * </blockQuote>\n\t * <paragraph>c]d</paragraph>\n\t * ```\n\t *\n\t * In this case the paragraph will also be returned, despite the collapsed selection:\n\t *\n\t * ```xml\n\t * <paragraph>[]a</paragraph>\n\t * ```\n\t *\n\t * In such a scenario, however, only blocks A, B & E will be returned as blocks C & D are nested in block B:\n\t *\n\t * ```xml\n\t * [<blockA></blockA>\n\t * <blockB>\n\t * \t<blockC></blockC>\n\t * \t<blockD></blockD>\n\t * </blockB>\n\t * <blockE></blockE>]\n\t * ```\n\t *\n\t * If the selection is inside a block all the inner blocks (A & B) are returned:\n\t *\n\t * ```xml\n\t * <block>\n\t * \t<blockA>[a</blockA>\n\t * \t<blockB>b]</blockB>\n\t * </block>\n\t * ```\n\t *\n\t * **Special case**: Selection ignores first and/or last blocks if nothing (from user perspective) is selected in them.\n\t *\n\t * ```xml\n\t * // Selection ends and the beginning of the last block.\n\t * <paragraph>[a</paragraph>\n\t * <paragraph>b</paragraph>\n\t * <paragraph>]c</paragraph> // This block will not be returned\n\t *\n\t * // Selection begins at the end of the first block.\n\t * <paragraph>a[</paragraph> // This block will not be returned\n\t * <paragraph>b</paragraph>\n\t * <paragraph>c]</paragraph>\n\t *\n\t * // Selection begings at the end of the first block and ends at the beginning of the last block.\n\t * <paragraph>a[</paragraph> // This block will not be returned\n\t * <paragraph>b</paragraph>\n\t * <paragraph>]c</paragraph> // This block will not be returned\n\t * ```\n\t */\n\tpublic* getSelectedBlocks(): IterableIterator<Element> {\n\t\tconst visited = new WeakSet<Node | DocumentFragment>();\n\n\t\tfor ( const range of this.getRanges() ) {\n\t\t\t// Get start block of range in case of a collapsed range.\n\t\t\tconst startBlock = getParentBlock( range.start, visited );\n\n\t\t\tif ( isStartBlockSelected( startBlock, range ) ) {\n\t\t\t\tyield startBlock as any;\n\t\t\t}\n\n\t\t\tfor ( const value of range.getWalker() ) {\n\t\t\t\tconst block = value.item;\n\n\t\t\t\tif ( value.type == 'elementEnd' && isUnvisitedTopBlock( block as any, visited, range ) ) {\n\t\t\t\t\tyield block as Element;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst endBlock = getParentBlock( range.end, visited );\n\n\t\t\tif ( isEndBlockSelected( endBlock, range ) ) {\n\t\t\t\tyield endBlock as any;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks whether the selection contains the entire content of the given element. This means that selection must start\n\t * at a position {@link module:engine/model/position~Position#isTouching touching} the element's start and ends at position\n\t * touching the element's end.\n\t *\n\t * By default, this method will check whether the entire content of the selection's current root is selected.\n\t * Useful to check if e.g. the user has just pressed <kbd>Ctrl</kbd> + <kbd>A</kbd>.\n\t */\n\tpublic containsEntireContent( element: Element = this.anchor!.root as Element ): boolean {\n\t\tconst limitStartPosition = Position._createAt( element, 0 );\n\t\tconst limitEndPosition = Position._createAt( element, 'end' );\n\n\t\treturn limitStartPosition.isTouching( this.getFirstPosition()! ) &&\n\t\t\tlimitEndPosition.isTouching( this.getLastPosition()! );\n\t}\n\n\t/**\n\t * Adds given range to internal {@link #_ranges ranges array}. Throws an error\n\t * if given range is intersecting with any range that is already stored in this selection.\n\t */\n\tprotected _pushRange( range: Range ): void {\n\t\tthis._checkRange( range );\n\t\tthis._ranges.push( new Range( range.start, range.end ) );\n\t}\n\n\t/**\n\t * Checks if given range intersects with ranges that are already in the selection. Throws an error if it does.\n\t */\n\tprotected _checkRange( range: Range ): void {\n\t\tfor ( let i = 0; i < this._ranges.length; i++ ) {\n\t\t\tif ( range.isIntersecting( this._ranges[ i ] ) ) {\n\t\t\t\t/**\n\t\t\t\t * Trying to add a range that intersects with another range in the selection.\n\t\t\t\t *\n\t\t\t\t * @error model-selection-range-intersects\n\t\t\t\t * @param addedRange Range that was added to the selection.\n\t\t\t\t * @param intersectingRange Range in the selection that intersects with `addedRange`.\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'model-selection-range-intersects',\n\t\t\t\t\t[ this, range ],\n\t\t\t\t\t{ addedRange: range, intersectingRange: this._ranges[ i ] }\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Replaces all the ranges by the given ones.\n\t * Uses {@link #_popRange _popRange} and {@link #_pushRange _pushRange} to ensure proper ranges removal and addition.\n\t */\n\tprotected _replaceAllRanges( ranges: Array<Range> ): void {\n\t\tthis._removeAllRanges();\n\n\t\tfor ( const range of ranges ) {\n\t\t\tthis._pushRange( range );\n\t\t}\n\t}\n\n\t/**\n\t * Deletes ranges from internal range array. Uses {@link #_popRange _popRange} to\n\t * ensure proper ranges removal.\n\t */\n\tprotected _removeAllRanges(): void {\n\t\twhile ( this._ranges.length > 0 ) {\n\t\t\tthis._popRange();\n\t\t}\n\t}\n\n\t/**\n\t * Removes most recently added range from the selection.\n\t */\n\tprotected _popRange(): void {\n\t\tthis._ranges.pop();\n\t}\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nSelection.prototype.is = function( type: string ): boolean {\n\treturn type === 'selection' || type === 'model:selection';\n};\n\n/**\n * Describes one of the events: `change:range` or `change:attribute`.\n */\nexport type SelectionChangeEvent = {\n\tname: 'change' | 'change:range' | 'change:attribute';\n\targs: [ {\n\t\tdirectChange: boolean;\n\t\tattributeKeys?: Array<string>;\n\t} ];\n};\n\n/**\n * Fired when selection range(s) changed.\n *\n * @eventName ~Selection#change:range\n * @param directChange In case of {@link module:engine/model/selection~Selection} class it is always set\n * to `true` which indicates that the selection change was caused by a direct use of selection's API.\n * The {@link module:engine/model/documentselection~DocumentSelection}, however, may change because its position\n * was directly changed through the {@link module:engine/model/writer~Writer writer} or because its position was\n * changed because the structure of the model has been changed (which means an indirect change).\n * The indirect change does not occur in case of normal (detached) selections because they are \"static\" (as \"not live\")\n * which mean that they are not updated once the document changes.\n */\nexport type SelectionChangeRangeEvent = {\n\tname: 'change' | 'change:range';\n\targs: [ {\n\t\tdirectChange: boolean;\n\t} ];\n};\n\n/**\n * Fired when selection attribute changed.\n *\n * @eventName ~Selection#change:attribute\n * @param directChange In case of {@link module:engine/model/selection~Selection} class it is always set\n * to `true` which indicates that the selection change was caused by a direct use of selection's API.\n * The {@link module:engine/model/documentselection~DocumentSelection}, however, may change because its attributes\n * were directly changed through the {@link module:engine/model/writer~Writer writer} or because its position was\n * changed in the model and its attributes were refreshed (which means an indirect change).\n * The indirect change does not occur in case of normal (detached) selections because they are \"static\" (as \"not live\")\n * which mean that they are not updated once the document changes.\n * @param attributeKeys Array containing keys of attributes that changed.\n */\nexport type SelectionChangeAttributeEvent = {\n\tname: 'change' | 'change:attribute';\n\targs: [ {\n\t\tdirectChange: boolean;\n\t\tattributeKeys: Array<string>;\n\t} ];\n};\n\n/**\n * Checks whether the given element extends $block in the schema and has a parent (is not a root).\n * Marks it as already visited.\n */\nfunction isUnvisitedBlock( element: Node | DocumentFragment, visited: WeakSet<Node | DocumentFragment> ) {\n\tif ( visited.has( element ) ) {\n\t\treturn false;\n\t}\n\n\tvisited.add( element );\n\n\treturn element.root.document!.model.schema.isBlock( element ) && !!element.parent;\n}\n\n/**\n * Checks if the given element is a $block was not previously visited and is a top block in a range.\n */\nfunction isUnvisitedTopBlock( element: Element, visited: WeakSet<Node | DocumentFragment>, range: Range ) {\n\treturn isUnvisitedBlock( element, visited ) && isTopBlockInRange( element, range );\n}\n\n/**\n * Finds the lowest element in position's ancestors which is a block.\n * It will search until first ancestor that is a limit element.\n * Marks all ancestors as already visited to not include any of them later on.\n */\nfunction getParentBlock( position: Position, visited: WeakSet<Node | DocumentFragment> ) {\n\tconst element = position.parent;\n\tconst schema = element.root.document!.model.schema;\n\n\tconst ancestors = position.parent.getAncestors( { parentFirst: true, includeSelf: true } );\n\n\tlet hasParentLimit = false;\n\n\tconst block = ancestors.find( ( element ): element is Element => {\n\t\t// Stop searching after first parent node that is limit element.\n\t\tif ( hasParentLimit ) {\n\t\t\treturn false;\n\t\t}\n\n\t\thasParentLimit = schema.isLimit( element );\n\n\t\treturn !hasParentLimit && isUnvisitedBlock( element, visited );\n\t} );\n\n\t// Mark all ancestors of this position's parent, because find() might've stopped early and\n\t// the found block may be a child of another block.\n\tancestors.forEach( element => visited.add( element ) );\n\n\treturn block;\n}\n\n/**\n * Checks if the blocks is not nested in other block inside a range.\n */\nfunction isTopBlockInRange( block: Node, range: Range ) {\n\tconst parentBlock = findAncestorBlock( block );\n\n\tif ( !parentBlock ) {\n\t\treturn true;\n\t}\n\n\t// Add loose flag to check as parentRange can be equal to range.\n\tconst isParentInRange = range.containsRange( Range._createOn( parentBlock ), true );\n\n\treturn !isParentInRange;\n}\n\n/**\n * If a selection starts at the end of a block, that block is not returned as from the user's perspective this block wasn't selected.\n * See [#11585](https://github.com/ckeditor/ckeditor5/issues/11585) for more details.\n *\n * ```xml\n * <paragraph>a[</paragraph> // This block will not be returned\n * <paragraph>b</paragraph>\n * <paragraph>c]</paragraph>\n * ```\n *\n * Collapsed selection is not affected by it:\n *\n * ```xml\n * <paragraph>a[]</paragraph> // This block will be returned\n * ```\n */\nfunction isStartBlockSelected( startBlock: Element | undefined, range: Range ): boolean {\n\tif ( !startBlock ) {\n\t\treturn false;\n\t}\n\n\tif ( range.isCollapsed || startBlock.isEmpty ) {\n\t\treturn true;\n\t}\n\n\tif ( range.start.isTouching( Position._createAt( startBlock, startBlock.maxOffset ) ) ) {\n\t\treturn false;\n\t}\n\n\treturn isTopBlockInRange( startBlock, range );\n}\n\n/**\n * If a selection ends at the beginning of a block, that block is not returned as from the user's perspective this block wasn't selected.\n * See [#984](https://github.com/ckeditor/ckeditor5-engine/issues/984) for more details.\n *\n * ```xml\n * <paragraph>[a</paragraph>\n * <paragraph>b</paragraph>\n * <paragraph>]c</paragraph> // this block will not be returned\n * ```\n *\n * Collapsed selection is not affected by it:\n *\n * ```xml\n * <paragraph>[]a</paragraph> // this block will be returned\n * ```\n */\nfunction isEndBlockSelected( endBlock: Element | undefined, range: Range ): boolean {\n\tif ( !endBlock ) {\n\t\treturn false;\n\t}\n\n\tif ( range.isCollapsed || endBlock.isEmpty ) {\n\t\treturn true;\n\t}\n\n\tif ( range.end.isTouching( Position._createAt( endBlock, 0 ) ) ) {\n\t\treturn false;\n\t}\n\n\treturn isTopBlockInRange( endBlock, range );\n}\n\n/**\n * Returns first ancestor block of a node.\n */\nfunction findAncestorBlock( node: Node | DocumentFragment ) {\n\tconst schema = node.root.document!.model.schema;\n\n\tlet parent = node.parent;\n\n\twhile ( parent ) {\n\t\tif ( schema.isBlock( parent ) ) {\n\t\t\treturn parent as Element;\n\t\t}\n\n\t\tparent = parent.parent;\n\t}\n}\n\n/**\n * An entity that is used to set selection.\n *\n * See also {@link module:engine/model/selection~Selection#setTo}.\n */\nexport type Selectable = Selection | DocumentSelection | Position | Range | Node | Iterable<Range> | null;\n\n/**\n * The place or offset of the selection.\n */\nexport type PlaceOrOffset = number | 'before' | 'end' | 'after' | 'on' | 'in';\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/liverange\n */\n\nimport Range from './range';\n\nimport type { ModelApplyOperationEvent } from './model';\nimport type DocumentFragment from './documentfragment';\nimport type Element from './element';\nimport type Item from './item';\nimport type MergeOperation from './operation/mergeoperation';\nimport type MoveOperation from './operation/moveoperation';\nimport type Operation from './operation/operation';\nimport type Position from './position';\n\nimport { EmitterMixin } from '@ckeditor/ckeditor5-utils';\n\n/**\n * `LiveRange` is a type of {@link module:engine/model/range~Range Range}\n * that updates itself as {@link module:engine/model/document~Document document}\n * is changed through operations. It may be used as a bookmark.\n *\n * **Note:** Be very careful when dealing with `LiveRange`. Each `LiveRange` instance bind events that might\n * have to be unbound. Use {@link module:engine/model/liverange~LiveRange#detach detach} whenever you don't need `LiveRange` anymore.\n */\nexport default class LiveRange extends EmitterMixin( Range ) {\n\t/**\n\t * Creates a live range.\n\t *\n\t * @see module:engine/model/range~Range\n\t */\n\tconstructor( start: Position, end?: Position | null ) {\n\t\tsuper( start, end );\n\n\t\tbindWithDocument.call( this );\n\t}\n\n\t/**\n\t * Unbinds all events previously bound by `LiveRange`. Use it whenever you don't need `LiveRange` instance\n\t * anymore (i.e. when leaving scope in which it was declared or before re-assigning variable that was\n\t * referring to it).\n\t */\n\tpublic detach(): void {\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * Creates a {@link module:engine/model/range~Range range instance} that is equal to this live range.\n\t */\n\tpublic toRange(): Range {\n\t\treturn new Range( this.start, this.end );\n\t}\n\n\t/**\n\t * Creates a `LiveRange` instance that is equal to the given range.\n\t */\n\tpublic static fromRange( range: Range ): LiveRange {\n\t\treturn new LiveRange( range.start, range.end );\n\t}\n\n\t/**\n\t * @see module:engine/model/range~Range._createIn\n\t * @internal\n\t */\n\n\tdeclare public static readonly _createIn: ( element: Element | DocumentFragment ) => LiveRange;\n\n\t/**\n\t * @see module:engine/model/range~Range._createOn\n\t * @internal\n\t */\n\n\tdeclare public static readonly _createOn: ( element: Item | DocumentFragment ) => LiveRange;\n\n\t/**\n\t * @see module:engine/model/range~Range._createFromPositionAndShift\n\t * @internal\n\t */\n\n\tdeclare public static readonly _createFromPositionAndShift: ( position: Position, shift: number ) => LiveRange;\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nLiveRange.prototype.is = function( type: string ): boolean {\n\treturn type === 'liveRange' || type === 'model:liveRange' ||\n\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\ttype == 'range' || type === 'model:range';\n};\n\n/**\n * Fired when `LiveRange` instance boundaries have changed due to changes in the\n * {@link module:engine/model/document~Document document}.\n *\n * @eventName ~LiveRange#change:range\n * @param oldRange Range with start and end position equal to start and end position of this live\n * range before it got changed.\n * @param data Object with additional information about the change.\n * @param data.deletionPosition Source position for remove and merge changes.\n * Available if the range was moved to the graveyard root, `null` otherwise.\n */\nexport type LiveRangeChangeRangeEvent = {\n\tname: 'change' | 'change:range';\n\targs: [ range: Range, data: { deletionPosition: Position | null } ];\n};\n\n/**\n * Fired when `LiveRange` instance boundaries have not changed after a change in {@link module:engine/model/document~Document document}\n * but the change took place inside the range, effectively changing its content.\n *\n * @eventName ~LiveRange#change:content\n * @param range Range with start and end position equal to start and end position of\n * change range.\n * @param data Object with additional information about the change.\n * @param data.deletionPosition Due to the nature of this event, this property is always set to `null`. It is passed\n * for compatibility with the {@link module:engine/model/liverange~LiveRange#event:change:range} event.\n */\nexport type LiveRangeChangeContentEvent = {\n\tname: 'change' | 'change:content';\n\targs: [ range: Range, data: { deletionPosition: null } ];\n};\n\n/**\n * Describes `change:range` or `change:content` event.\n */\nexport type LiveRangeChangeEvent = {\n\tname: 'change' | 'change:range' | 'change:content';\n\targs: [ range: Range, data: { deletionPosition: Position | null } ];\n};\n\n/**\n * Binds this `LiveRange` to the {@link module:engine/model/document~Document document}\n * that owns this range's {@link module:engine/model/range~Range#root root}.\n */\nfunction bindWithDocument( this: LiveRange ) {\n\tthis.listenTo<ModelApplyOperationEvent>(\n\t\tthis.root.document!.model,\n\t\t'applyOperation',\n\t\t( event, args ) => {\n\t\t\tconst operation = args[ 0 ];\n\n\t\t\tif ( !operation.isDocumentOperation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttransform.call( this, operation );\n\t\t},\n\t\t{ priority: 'low' }\n\t);\n}\n\n/**\n * Updates this range accordingly to the updates applied to the model. Bases on change events.\n */\nfunction transform( this: LiveRange, operation: Operation ) {\n\t// Transform the range by the operation. Join the result ranges if needed.\n\tconst ranges = this.getTransformedByOperation( operation );\n\tconst result = Range._createFromRanges( ranges );\n\n\tconst boundariesChanged = !result.isEqual( this );\n\tconst contentChanged = doesOperationChangeRangeContent( this, operation );\n\n\tlet deletionPosition = null;\n\n\tif ( boundariesChanged ) {\n\t\t// If range boundaries have changed, fire `change:range` event.\n\t\t//\n\t\tif ( result.root.rootName == '$graveyard' ) {\n\t\t\t// If the range was moved to the graveyard root, set `deletionPosition`.\n\t\t\tif ( operation.type == 'remove' ) {\n\t\t\t\tdeletionPosition = ( operation as MoveOperation ).sourcePosition;\n\t\t\t} else {\n\t\t\t\t// Merge operation.\n\t\t\t\tdeletionPosition = ( operation as MergeOperation ).deletionPosition;\n\t\t\t}\n\t\t}\n\n\t\tconst oldRange = this.toRange();\n\n\t\t( this as any ).start = result.start;\n\t\t( this as any ).end = result.end;\n\n\t\tthis.fire<LiveRangeChangeRangeEvent>( 'change:range', oldRange, { deletionPosition } );\n\t} else if ( contentChanged ) {\n\t\t// If range boundaries have not changed, but there was change inside the range, fire `change:content` event.\n\t\tthis.fire<LiveRangeChangeContentEvent>( 'change:content', this.toRange(), { deletionPosition } );\n\t}\n}\n\n/**\n * Checks whether given operation changes something inside the range (even if it does not change boundaries).\n */\nfunction doesOperationChangeRangeContent( range: Range, operation: any ) {\n\tswitch ( operation.type ) {\n\t\tcase 'insert':\n\t\t\treturn range.containsPosition( operation.position );\n\t\tcase 'move':\n\t\tcase 'remove':\n\t\tcase 'reinsert':\n\t\tcase 'merge':\n\t\t\treturn range.containsPosition( operation.sourcePosition ) ||\n\t\t\t\trange.start.isEqual( operation.sourcePosition ) ||\n\t\t\t\trange.containsPosition( operation.targetPosition );\n\t\tcase 'split':\n\t\t\treturn range.containsPosition( operation.splitPosition ) || range.containsPosition( operation.insertionPosition );\n\t}\n\n\treturn false;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/documentselection\n */\n\nimport TypeCheckable from './typecheckable';\nimport LiveRange from './liverange';\nimport Selection, {\n\ttype SelectionChangeAttributeEvent,\n\ttype SelectionChangeRangeEvent\n} from './selection';\nimport Text from './text';\nimport TextProxy from './textproxy';\n\nimport type { default as Document, DocumentChangeEvent } from './document';\nimport type { default as Model, ModelApplyOperationEvent } from './model';\nimport type { Marker, MarkerCollectionUpdateEvent } from './markercollection';\nimport type Batch from './batch';\nimport type Element from './element';\nimport type Item from './item';\nimport type { default as Position, PositionOffset } from './position';\nimport type Range from './range';\nimport type Schema from './schema';\n\nimport {\n\tCKEditorError,\n\tCollection,\n\tEmitterMixin,\n\ttoMap,\n\tuid\n} from '@ckeditor/ckeditor5-utils';\n\nconst storePrefix = 'selection:';\n\n/**\n * `DocumentSelection` is a special selection which is used as the\n * {@link module:engine/model/document~Document#selection document's selection}.\n * There can be only one instance of `DocumentSelection` per document.\n *\n * Document selection can only be changed by using the {@link module:engine/model/writer~Writer} instance\n * inside the {@link module:engine/model/model~Model#change `change()`} block, as it provides a secure way to modify model.\n *\n * `DocumentSelection` is automatically updated upon changes in the {@link module:engine/model/document~Document document}\n * to always contain valid ranges. Its attributes are inherited from the text unless set explicitly.\n *\n * Differences between {@link module:engine/model/selection~Selection} and `DocumentSelection` are:\n * * there is always a range in `DocumentSelection` - even if no ranges were added there is a \"default range\"\n * present in the selection,\n * * ranges added to this selection updates automatically when the document changes,\n * * attributes of `DocumentSelection` are updated automatically according to selection ranges.\n *\n * Since `DocumentSelection` uses {@link module:engine/model/liverange~LiveRange live ranges}\n * and is updated when {@link module:engine/model/document~Document document}\n * changes, it cannot be set on {@link module:engine/model/node~Node nodes}\n * that are inside {@link module:engine/model/documentfragment~DocumentFragment document fragment}.\n * If you need to represent a selection in document fragment,\n * use {@link module:engine/model/selection~Selection Selection class} instead.\n */\nexport default class DocumentSelection extends EmitterMixin( TypeCheckable ) {\n\t/**\n\t * Selection used internally by that class (`DocumentSelection` is a proxy to that selection).\n\t */\n\tprivate _selection: LiveSelection;\n\n\t/**\n\t * Creates an empty live selection for given {@link module:engine/model/document~Document}.\n\t *\n\t * @param doc Document which owns this selection.\n\t */\n\tconstructor( doc: Document ) {\n\t\tsuper();\n\n\t\tthis._selection = new LiveSelection( doc );\n\n\t\tthis._selection.delegate( 'change:range' ).to( this );\n\t\tthis._selection.delegate( 'change:attribute' ).to( this );\n\t\tthis._selection.delegate( 'change:marker' ).to( this );\n\t}\n\n\t/**\n\t * Describes whether the selection is collapsed. Selection is collapsed when there is exactly one range which is\n\t * collapsed.\n\t */\n\tpublic get isCollapsed(): boolean {\n\t\treturn this._selection.isCollapsed;\n\t}\n\n\t/**\n\t * Selection anchor. Anchor may be described as a position where the most recent part of the selection starts.\n\t * Together with {@link #focus} they define the direction of selection, which is important\n\t * when expanding/shrinking selection. Anchor is always {@link module:engine/model/range~Range#start start} or\n\t * {@link module:engine/model/range~Range#end end} position of the most recently added range.\n\t *\n\t * Is set to `null` if there are no ranges in selection.\n\t *\n\t * @see #focus\n\t */\n\tpublic get anchor(): Position | null {\n\t\treturn this._selection.anchor;\n\t}\n\n\t/**\n\t * Selection focus. Focus is a position where the selection ends.\n\t *\n\t * Is set to `null` if there are no ranges in selection.\n\t *\n\t * @see #anchor\n\t */\n\tpublic get focus(): Position | null {\n\t\treturn this._selection.focus;\n\t}\n\n\t/**\n\t * Number of ranges in selection.\n\t */\n\tpublic get rangeCount(): number {\n\t\treturn this._selection.rangeCount;\n\t}\n\n\t/**\n\t * Describes whether `Documentselection` has own range(s) set, or if it is defaulted to\n\t * {@link module:engine/model/document~Document#_getDefaultRange document's default range}.\n\t */\n\tpublic get hasOwnRange(): boolean {\n\t\treturn this._selection.hasOwnRange;\n\t}\n\n\t/**\n\t * Specifies whether the {@link #focus}\n\t * precedes {@link #anchor}.\n\t *\n\t * @readonly\n\t * @type {Boolean}\n\t */\n\tpublic get isBackward(): boolean {\n\t\treturn this._selection.isBackward;\n\t}\n\n\t/**\n\t * Describes whether the gravity is overridden (using {@link module:engine/model/writer~Writer#overrideSelectionGravity}) or not.\n\t *\n\t * Note that the gravity remains overridden as long as will not be restored the same number of times as it was overridden.\n\t */\n\tpublic get isGravityOverridden(): boolean {\n\t\treturn this._selection.isGravityOverridden;\n\t}\n\n\t/**\n\t * A collection of selection {@link module:engine/model/markercollection~Marker markers}.\n\t * Marker is a selection marker when selection range is inside the marker range.\n\t *\n\t * **Note**: Only markers from {@link ~DocumentSelection#observeMarkers observed markers groups} are collected.\n\t */\n\tpublic get markers(): Collection<Marker> {\n\t\treturn this._selection.markers;\n\t}\n\n\t/**\n\t * Used for the compatibility with the {@link module:engine/model/selection~Selection#isEqual} method.\n\t *\n\t * @internal\n\t */\n\tpublic get _ranges(): Array<Range> {\n\t\treturn this._selection._ranges;\n\t}\n\n\t/**\n\t * Returns an iterable that iterates over copies of selection ranges.\n\t */\n\tpublic getRanges(): IterableIterator<Range> {\n\t\treturn this._selection.getRanges();\n\t}\n\n\t/**\n\t * Returns the first position in the selection.\n\t * First position is the position that {@link module:engine/model/position~Position#isBefore is before}\n\t * any other position in the selection.\n\t *\n\t * Returns `null` if there are no ranges in selection.\n\t */\n\tpublic getFirstPosition(): Position | null {\n\t\treturn this._selection.getFirstPosition();\n\t}\n\n\t/**\n\t * Returns the last position in the selection.\n\t * Last position is the position that {@link module:engine/model/position~Position#isAfter is after}\n\t * any other position in the selection.\n\t *\n\t * Returns `null` if there are no ranges in selection.\n\t */\n\tpublic getLastPosition(): Position | null {\n\t\treturn this._selection.getLastPosition();\n\t}\n\n\t/**\n\t * Returns a copy of the first range in the selection.\n\t * First range is the one which {@link module:engine/model/range~Range#start start} position\n\t * {@link module:engine/model/position~Position#isBefore is before} start position of all other ranges\n\t * (not to confuse with the first range added to the selection).\n\t *\n\t * Returns `null` if there are no ranges in selection.\n\t */\n\tpublic getFirstRange(): Range | null {\n\t\treturn this._selection.getFirstRange();\n\t}\n\n\t/**\n\t * Returns a copy of the last range in the selection.\n\t * Last range is the one which {@link module:engine/model/range~Range#end end} position\n\t * {@link module:engine/model/position~Position#isAfter is after} end position of all other ranges (not to confuse with the range most\n\t * recently added to the selection).\n\t *\n\t * Returns `null` if there are no ranges in selection.\n\t */\n\tpublic getLastRange(): Range | null {\n\t\treturn this._selection.getLastRange();\n\t}\n\n\t/**\n\t * Gets elements of type {@link module:engine/model/schema~Schema#isBlock \"block\"} touched by the selection.\n\t *\n\t * This method's result can be used for example to apply block styling to all blocks covered by this selection.\n\t *\n\t * **Note:** `getSelectedBlocks()` returns blocks that are nested in other non-block elements\n\t * but will not return blocks nested in other blocks.\n\t *\n\t * In this case the function will return exactly all 3 paragraphs (note: `<blockQuote>` is not a block itself):\n\t *\n\t * ```\n\t * <paragraph>[a</paragraph>\n\t * <blockQuote>\n\t * \t<paragraph>b</paragraph>\n\t * </blockQuote>\n\t * <paragraph>c]d</paragraph>\n\t * ```\n\t *\n\t * In this case the paragraph will also be returned, despite the collapsed selection:\n\t *\n\t * ```\n\t * <paragraph>[]a</paragraph>\n\t * ```\n\t *\n\t * In such a scenario, however, only blocks A, B & E will be returned as blocks C & D are nested in block B:\n\t *\n\t * ```\n\t * [<blockA></blockA>\n\t * <blockB>\n\t * \t<blockC></blockC>\n\t * \t<blockD></blockD>\n\t * </blockB>\n\t * <blockE></blockE>]\n\t * ```\n\t *\n\t * If the selection is inside a block all the inner blocks (A & B) are returned:\n\t *\n\t * ```\n\t * <block>\n\t * \t<blockA>[a</blockA>\n\t * \t<blockB>b]</blockB>\n\t * </block>\n\t * ```\n\t *\n\t * **Special case**: If a selection ends at the beginning of a block, that block is not returned as from user perspective\n\t * this block wasn't selected. See [#984](https://github.com/ckeditor/ckeditor5-engine/issues/984) for more details.\n\t *\n\t * ```\n\t * <paragraph>[a</paragraph>\n\t * <paragraph>b</paragraph>\n\t * <paragraph>]c</paragraph> // this block will not be returned\n\t * ```\n\t */\n\tpublic getSelectedBlocks(): IterableIterator<Element> {\n\t\treturn this._selection.getSelectedBlocks();\n\t}\n\n\t/**\n\t * Returns the selected element. {@link module:engine/model/element~Element Element} is considered as selected if there is only\n\t * one range in the selection, and that range contains exactly one element.\n\t * Returns `null` if there is no selected element.\n\t */\n\tpublic getSelectedElement(): Element | null {\n\t\treturn this._selection.getSelectedElement();\n\t}\n\n\t/**\n\t * Checks whether the selection contains the entire content of the given element. This means that selection must start\n\t * at a position {@link module:engine/model/position~Position#isTouching touching} the element's start and ends at position\n\t * touching the element's end.\n\t *\n\t * By default, this method will check whether the entire content of the selection's current root is selected.\n\t * Useful to check if e.g. the user has just pressed <kbd>Ctrl</kbd> + <kbd>A</kbd>.\n\t */\n\tpublic containsEntireContent( element: Element ): boolean {\n\t\treturn this._selection.containsEntireContent( element );\n\t}\n\n\t/**\n\t * Unbinds all events previously bound by document selection.\n\t */\n\tpublic destroy(): void {\n\t\tthis._selection.destroy();\n\t}\n\n\t/**\n\t * Returns iterable that iterates over this selection's attribute keys.\n\t */\n\tpublic getAttributeKeys(): IterableIterator<string> {\n\t\treturn this._selection.getAttributeKeys();\n\t}\n\n\t/**\n\t * Returns iterable that iterates over this selection's attributes.\n\t *\n\t * Attributes are returned as arrays containing two items. First one is attribute key and second is attribute value.\n\t * This format is accepted by native `Map` object and also can be passed in `Node` constructor.\n\t */\n\tpublic getAttributes(): IterableIterator<[ string, unknown ]> {\n\t\treturn this._selection.getAttributes();\n\t}\n\n\t/**\n\t * Gets an attribute value for given key or `undefined` if that attribute is not set on the selection.\n\t *\n\t * @param key Key of attribute to look for.\n\t * @returns Attribute value or `undefined`.\n\t */\n\tpublic getAttribute( key: string ): unknown {\n\t\treturn this._selection.getAttribute( key );\n\t}\n\n\t/**\n\t * Checks if the selection has an attribute for given key.\n\t *\n\t * @param key Key of attribute to check.\n\t * @returns `true` if attribute with given key is set on selection, `false` otherwise.\n\t */\n\tpublic hasAttribute( key: string ): boolean {\n\t\treturn this._selection.hasAttribute( key );\n\t}\n\n\t/**\n\t * Refreshes selection attributes and markers according to the current position in the model.\n\t */\n\tpublic refresh(): void {\n\t\tthis._selection.updateMarkers();\n\t\tthis._selection._updateAttributes( false );\n\t}\n\n\t/**\n\t * Registers a marker group prefix or a marker name to be collected in the\n\t * {@link ~DocumentSelection#markers selection markers collection}.\n\t *\n\t * See also {@link module:engine/model/markercollection~MarkerCollection#getMarkersGroup `MarkerCollection#getMarkersGroup()`}.\n\t *\n\t * @param prefixOrName The marker group prefix or marker name.\n\t */\n\tpublic observeMarkers( prefixOrName: string ): void {\n\t\tthis._selection.observeMarkers( prefixOrName );\n\t}\n\n\t/**\n\t * Moves {@link module:engine/model/documentselection~DocumentSelection#focus} to the specified location.\n\t * Should be used only within the {@link module:engine/model/writer~Writer#setSelectionFocus} method.\n\t *\n\t * The location can be specified in the same form as\n\t * {@link module:engine/model/writer~Writer#createPositionAt writer.createPositionAt()} parameters.\n\t *\n\t * @see module:engine/model/writer~Writer#setSelectionFocus\n\t * @internal\n\t * @param offset Offset or one of the flags. Used only when\n\t * first parameter is a {@link module:engine/model/item~Item model item}.\n\t */\n\tpublic _setFocus( itemOrPosition: Item | Position, offset?: PositionOffset ): void {\n\t\tthis._selection.setFocus( itemOrPosition, offset );\n\t}\n\n\t/**\n\t * Sets this selection's ranges and direction to the specified location based on the given\n\t * {@link module:engine/model/selection~Selectable selectable}.\n\t * Should be used only within the {@link module:engine/model/writer~Writer#setSelection} method.\n\t *\n\t * @see module:engine/model/writer~Writer#setSelection\n\t * @internal\n\t */\n\tpublic _setTo( ...args: Parameters<Selection[ 'setTo' ]> ): void {\n\t\tthis._selection.setTo( ...args );\n\t}\n\n\t/**\n\t * Sets attribute on the selection. If attribute with the same key already is set, it's value is overwritten.\n\t * Should be used only within the {@link module:engine/model/writer~Writer#setSelectionAttribute} method.\n\t *\n\t * @see module:engine/model/writer~Writer#setSelectionAttribute\n\t * @internal\n\t * @param key Key of the attribute to set.\n\t * @param value Attribute value.\n\t */\n\tpublic _setAttribute( key: string, value: unknown ): void {\n\t\tthis._selection.setAttribute( key, value );\n\t}\n\n\t/**\n\t * Removes an attribute with given key from the selection.\n\t * If the given attribute was set on the selection, fires the {@link module:engine/model/selection~Selection#event:change:range}\n\t * event with removed attribute key.\n\t * Should be used only within the {@link module:engine/model/writer~Writer#removeSelectionAttribute} method.\n\t *\n\t * @see module:engine/model/writer~Writer#removeSelectionAttribute\n\t * @internal\n\t * @param key Key of the attribute to remove.\n\t */\n\tpublic _removeAttribute( key: string ): void {\n\t\tthis._selection.removeAttribute( key );\n\t}\n\n\t/**\n\t * Returns an iterable that iterates through all selection attributes stored in current selection's parent.\n\t *\n\t * @internal\n\t */\n\tpublic _getStoredAttributes(): Iterable<[ string, unknown ]> {\n\t\treturn this._selection.getStoredAttributes();\n\t}\n\n\t/**\n\t * Temporarily changes the gravity of the selection from the left to the right.\n\t *\n\t * The gravity defines from which direction the selection inherits its attributes. If it's the default left\n\t * gravity, the selection (after being moved by the the user) inherits attributes from its left hand side.\n\t * This method allows to temporarily override this behavior by forcing the gravity to the right.\n\t *\n\t * It returns an unique identifier which is required to restore the gravity. It guarantees the symmetry\n\t * of the process.\n\t *\n\t * @see module:engine/model/writer~Writer#overrideSelectionGravity\n\t * @internal\n\t * @returns The unique id which allows restoring the gravity.\n\t */\n\tpublic _overrideGravity(): string {\n\t\treturn this._selection.overrideGravity();\n\t}\n\n\t/**\n\t * Restores the {@link ~DocumentSelection#_overrideGravity overridden gravity}.\n\t *\n\t * Restoring the gravity is only possible using the unique identifier returned by\n\t * {@link ~DocumentSelection#_overrideGravity}. Note that the gravity remains overridden as long as won't be restored\n\t * the same number of times it was overridden.\n\t *\n\t * @see module:engine/model/writer~Writer#restoreSelectionGravity\n\t * @internal\n\t * @param uid The unique id returned by {@link #_overrideGravity}.\n\t */\n\tpublic _restoreGravity( uid: string ): void {\n\t\tthis._selection.restoreGravity( uid );\n\t}\n\n\t/**\n\t * Generates and returns an attribute key for selection attributes store, basing on original attribute key.\n\t *\n\t * @internal\n\t * @param key Attribute key to convert.\n\t * @returns Converted attribute key, applicable for selection store.\n\t */\n\tpublic static _getStoreAttributeKey( key: string ): string {\n\t\treturn storePrefix + key;\n\t}\n\n\t/**\n\t * Checks whether the given attribute key is an attribute stored on an element.\n\t *\n\t * @internal\n\t */\n\tpublic static _isStoreAttributeKey( key: string ): boolean {\n\t\treturn key.startsWith( storePrefix );\n\t}\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nDocumentSelection.prototype.is = function( type: string ): boolean {\n\treturn type === 'selection' ||\n\t\ttype == 'model:selection' ||\n\t\ttype == 'documentSelection' ||\n\t\ttype == 'model:documentSelection';\n};\n\n/**\n * Fired when selection range(s) changed.\n *\n * @eventName ~DocumentSelection#change:range\n * @param directChange In case of {@link module:engine/model/selection~Selection} class it is always set\n * to `true` which indicates that the selection change was caused by a direct use of selection's API.\n * The {@link module:engine/model/documentselection~DocumentSelection}, however, may change because its position\n * was directly changed through the {@link module:engine/model/writer~Writer writer} or because its position was\n * changed because the structure of the model has been changed (which means an indirect change).\n * The indirect change does not occur in case of normal (detached) selections because they are \"static\" (as \"not live\")\n * which mean that they are not updated once the document changes.\n */\nexport type DocumentSelectionChangeRangeEvent = SelectionChangeRangeEvent;\n\n/**\n * Fired when selection attribute changed.\n *\n * @eventName ~DocumentSelection#change:attribute\n * @param directChange In case of {@link module:engine/model/selection~Selection} class it is always set\n * to `true` which indicates that the selection change was caused by a direct use of selection's API.\n * The {@link module:engine/model/documentselection~DocumentSelection}, however, may change because its attributes\n * were directly changed through the {@link module:engine/model/writer~Writer writer} or because its position was\n * changed in the model and its attributes were refreshed (which means an indirect change).\n * The indirect change does not occur in case of normal (detached) selections because they are \"static\" (as \"not live\")\n * which mean that they are not updated once the document changes.\n * @param attributeKeys Array containing keys of attributes that changed.\n*/\nexport type DocumentSelectionChangeAttributeEvent = SelectionChangeAttributeEvent;\n\n/**\n * Fired when selection marker(s) changed.\n *\n * @eventName ~DocumentSelection#change:marker\n * @param directChange This is always set to `false` in case of `change:marker` event as there is no possibility\n * to change markers directly through {@link module:engine/model/documentselection~DocumentSelection} API.\n * See also {@link module:engine/model/documentselection~DocumentSelection#event:change:range} and\n * {@link module:engine/model/documentselection~DocumentSelection#event:change:attribute}.\n * @param oldMarkers Markers in which the selection was before the change.\n */\nexport type DocumentSelectionChangeMarkerEvent = {\n\tname: 'change:marker';\n\targs: [ {\n\t\tdirectChange: boolean;\n\t\toldMarkers: Array<Marker>;\n\t} ];\n};\n\n/**\n * Fired when selection range(s), attribute(s) or marker(s) changed.\n *\n * @eventName ~DocumentSelection#change\n * @param directChange This is always set to `false` in case of `change:marker` event as there is no possibility\n * to change markers directly through {@link module:engine/model/documentselection~DocumentSelection} API.\n * See also {@link module:engine/model/documentselection~DocumentSelection#event:change:range} and\n * {@link module:engine/model/documentselection~DocumentSelection#event:change:attribute}.\n * @param attributeKeys Array containing keys of attributes that changed.\n * @param oldMarkers Markers in which the selection was before the change.\n */\nexport type DocumentSelectionChangeEvent = {\n\tname: 'change' | 'change:attribute' | 'change:marker' | 'change:range';\n\targs: [ {\n\t\tdirectChange: boolean;\n\t\tattributeKeys?: Array<string>;\n\t\toldMarkers?: Array<Marker>;\n\t} ];\n};\n\n/**\n * `LiveSelection` is used internally by {@link module:engine/model/documentselection~DocumentSelection} and shouldn't be used directly.\n *\n * LiveSelection` is automatically updated upon changes in the {@link module:engine/model/document~Document document}\n * to always contain valid ranges. Its attributes are inherited from the text unless set explicitly.\n *\n * Differences between {@link module:engine/model/selection~Selection} and `LiveSelection` are:\n * * there is always a range in `LiveSelection` - even if no ranges were added there is a \"default range\"\n * present in the selection,\n * * ranges added to this selection updates automatically when the document changes,\n * * attributes of `LiveSelection` are updated automatically according to selection ranges.\n */\nclass LiveSelection extends Selection {\n\t/**\n\t * List of selection markers.\n\t * Marker is a selection marker when selection range is inside the marker range.\n\t */\n\tpublic markers: Collection<Marker> = new Collection( { idProperty: 'name' } );\n\n\t/**\n\t * Document which owns this selection.\n\t */\n\tprivate _model: Model;\n\n\t/**\n\t * Document which owns this selection.\n\t */\n\tprivate _document: Document;\n\n\t/**\n\t * Stores selection ranges.\n\t *\n\t * @internal\n\t */\n\tpublic declare _ranges: Array<LiveRange>;\n\n\t/**\n\t * Keeps mapping of attribute name to priority with which the attribute got modified (added/changed/removed)\n\t * last time. Possible values of priority are: `'low'` and `'normal'`.\n\t *\n\t * Priorities are used by internal `LiveSelection` mechanisms. All attributes set using `LiveSelection`\n\t * attributes API are set with `'normal'` priority.\n\t */\n\tprivate _attributePriority: Map<string, 'low' | 'normal'> = new Map();\n\n\t/**\n\t * Position to which the selection should be set if the last selection range was moved to the graveyard.\n\t */\n\tprivate _selectionRestorePosition: Position | null = null;\n\n\t/**\n\t * Flag that informs whether the selection ranges have changed. It is changed on true when `LiveRange#change:range` event is fired.\n\t */\n\tprivate _hasChangedRange: boolean = false;\n\n\t/**\n\t * Each overriding gravity adds an UID to the set and each removal removes it.\n\t * Gravity is overridden when there's at least one UID in the set.\n\t * Gravity is restored when the set is empty.\n\t * This is to prevent conflicts when gravity is overridden by more than one feature at the same time.\n\t */\n\tprivate _overriddenGravityRegister: Set<string> = new Set();\n\n\t/**\n\t * Prefixes of marker names that should affect `LiveSelection#markers` collection.\n\t */\n\tprivate _observedMarkers: Set<string> = new Set();\n\n\t/**\n\t * Creates an empty live selection for given {@link module:engine/model/document~Document}.\n\t *\n\t * @param doc Document which owns this selection.\n\t */\n\tconstructor( doc: Document ) {\n\t\tsuper();\n\n\t\tthis._model = doc.model;\n\t\tthis._document = doc;\n\n\t\t// Ensure selection is correct after each operation.\n\t\tthis.listenTo<ModelApplyOperationEvent>( this._model, 'applyOperation', ( evt, args ) => {\n\t\t\tconst operation = args[ 0 ];\n\n\t\t\tif ( !operation.isDocumentOperation || operation.type == 'marker' || operation.type == 'rename' || operation.type == 'noop' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Fix selection if the last range was removed from it and we have a position to which we can restore the selection.\n\t\t\tif ( this._ranges.length == 0 && this._selectionRestorePosition ) {\n\t\t\t\tthis._fixGraveyardSelection( this._selectionRestorePosition );\n\t\t\t}\n\n\t\t\t// \"Forget\" the restore position even if it was not \"used\".\n\t\t\tthis._selectionRestorePosition = null;\n\n\t\t\tif ( this._hasChangedRange ) {\n\t\t\t\tthis._hasChangedRange = false;\n\t\t\t\tthis.fire<DocumentSelectionChangeRangeEvent>( 'change:range', { directChange: false } );\n\t\t\t}\n\t\t}, { priority: 'lowest' } );\n\n\t\t// Ensure selection is correct and up to date after each range change.\n\t\tthis.on<DocumentSelectionChangeRangeEvent>( 'change:range', () => {\n\t\t\tthis._validateSelectionRanges( this.getRanges() );\n\t\t} );\n\n\t\t// Update markers data stored by the selection after each marker change.\n\t\t// This handles only marker changes done through marker operations (not model tree changes).\n\t\tthis.listenTo<MarkerCollectionUpdateEvent>( this._model.markers, 'update', ( evt, marker, oldRange, newRange ) => {\n\t\t\tthis._updateMarker( marker, newRange );\n\t\t} );\n\n\t\t// Ensure selection is up to date after each change block.\n\t\tthis.listenTo<DocumentChangeEvent>( this._document, 'change', ( evt, batch ) => {\n\t\t\tclearAttributesStoredInElement( this._model, batch );\n\t\t} );\n\t}\n\n\tpublic override get isCollapsed(): boolean {\n\t\tconst length = this._ranges.length;\n\n\t\treturn length === 0 ? this._document._getDefaultRange().isCollapsed : super.isCollapsed;\n\t}\n\n\tpublic override get anchor(): Position {\n\t\treturn super.anchor || this._document._getDefaultRange().start;\n\t}\n\n\tpublic override get focus(): Position {\n\t\treturn super.focus || this._document._getDefaultRange().end;\n\t}\n\n\tpublic override get rangeCount(): number {\n\t\treturn this._ranges.length ? this._ranges.length : 1;\n\t}\n\n\t/**\n\t * Describes whether `LiveSelection` has own range(s) set, or if it is defaulted to\n\t * {@link module:engine/model/document~Document#_getDefaultRange document's default range}.\n\t */\n\tpublic get hasOwnRange(): boolean {\n\t\treturn this._ranges.length > 0;\n\t}\n\n\t/**\n\t * When set to `true` then selection attributes on node before the caret won't be taken\n\t * into consideration while updating selection attributes.\n\t */\n\tpublic get isGravityOverridden(): boolean {\n\t\treturn !!this._overriddenGravityRegister.size;\n\t}\n\n\t/**\n\t * Unbinds all events previously bound by live selection.\n\t */\n\tpublic destroy(): void {\n\t\tfor ( let i = 0; i < this._ranges.length; i++ ) {\n\t\t\tthis._ranges[ i ].detach();\n\t\t}\n\n\t\tthis.stopListening();\n\t}\n\n\tpublic override* getRanges(): IterableIterator<Range> {\n\t\tif ( this._ranges.length ) {\n\t\t\tyield* super.getRanges();\n\t\t} else {\n\t\t\tyield this._document._getDefaultRange();\n\t\t}\n\t}\n\n\tpublic override getFirstRange(): Range {\n\t\treturn super.getFirstRange() || this._document._getDefaultRange();\n\t}\n\n\tpublic override getLastRange(): Range {\n\t\treturn super.getLastRange() || this._document._getDefaultRange();\n\t}\n\n\tpublic override setTo( ...args: Parameters<Selection[ 'setTo' ]> ) {\n\t\tsuper.setTo( ...args );\n\t\tthis._updateAttributes( true );\n\t\tthis.updateMarkers();\n\t}\n\n\tpublic override setFocus( itemOrPosition: Item | Position, offset?: PositionOffset ): void {\n\t\tsuper.setFocus( itemOrPosition, offset );\n\t\tthis._updateAttributes( true );\n\t\tthis.updateMarkers();\n\t}\n\n\tpublic override setAttribute( key: string, value: unknown ): void {\n\t\tif ( this._setAttribute( key, value ) ) {\n\t\t\t// Fire event with exact data.\n\t\t\tconst attributeKeys = [ key ];\n\t\t\tthis.fire<DocumentSelectionChangeAttributeEvent>( 'change:attribute', { attributeKeys, directChange: true } );\n\t\t}\n\t}\n\n\tpublic override removeAttribute( key: string ): void {\n\t\tif ( this._removeAttribute( key ) ) {\n\t\t\t// Fire event with exact data.\n\t\t\tconst attributeKeys = [ key ];\n\t\t\tthis.fire<DocumentSelectionChangeAttributeEvent>( 'change:attribute', { attributeKeys, directChange: true } );\n\t\t}\n\t}\n\n\tpublic overrideGravity(): string {\n\t\tconst overrideUid = uid();\n\n\t\t// Remember that another overriding has been requested. It will need to be removed\n\t\t// before the gravity is to be restored.\n\t\tthis._overriddenGravityRegister.add( overrideUid );\n\n\t\tif ( this._overriddenGravityRegister.size === 1 ) {\n\t\t\tthis._updateAttributes( true );\n\t\t}\n\n\t\treturn overrideUid;\n\t}\n\n\tpublic restoreGravity( uid: string ): void {\n\t\tif ( !this._overriddenGravityRegister.has( uid ) ) {\n\t\t\t/**\n\t\t\t * Restoring gravity for an unknown UID is not possible. Make sure you are using a correct\n\t\t\t * UID obtained from the {@link module:engine/model/writer~Writer#overrideSelectionGravity} to restore.\n\t\t\t *\n\t\t\t * @error document-selection-gravity-wrong-restore\n\t\t\t * @param uid The unique identifier returned by\n\t\t\t * {@link module:engine/model/documentselection~DocumentSelection#_overrideGravity}.\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'document-selection-gravity-wrong-restore',\n\t\t\t\tthis,\n\t\t\t\t{ uid }\n\t\t\t);\n\t\t}\n\n\t\tthis._overriddenGravityRegister.delete( uid );\n\n\t\t// Restore gravity only when all overriding have been restored.\n\t\tif ( !this.isGravityOverridden ) {\n\t\t\tthis._updateAttributes( true );\n\t\t}\n\t}\n\n\tpublic observeMarkers( prefixOrName: string ): void {\n\t\tthis._observedMarkers.add( prefixOrName );\n\t\tthis.updateMarkers();\n\t}\n\n\tprotected override _replaceAllRanges( ranges: Array<Range> ): void {\n\t\tthis._validateSelectionRanges( ranges );\n\n\t\tsuper._replaceAllRanges( ranges );\n\t}\n\n\tprotected override _popRange(): void {\n\t\tthis._ranges.pop()!.detach();\n\t}\n\n\tprotected override _pushRange( range: Range ): void {\n\t\tconst liveRange = this._prepareRange( range );\n\n\t\t// `undefined` is returned when given `range` is in graveyard root.\n\t\tif ( liveRange ) {\n\t\t\tthis._ranges.push( liveRange );\n\t\t}\n\t}\n\n\tprivate _validateSelectionRanges( ranges: Iterable<Range> ) {\n\t\tfor ( const range of ranges ) {\n\t\t\tif ( !this._document._validateSelectionRange( range ) ) {\n\t\t\t\t/**\n\t\t\t\t * Range from {@link module:engine/model/documentselection~DocumentSelection document selection}\n\t\t\t\t * starts or ends at incorrect position.\n\t\t\t\t *\n\t\t\t\t * @error document-selection-wrong-position\n\t\t\t\t * @param range\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'document-selection-wrong-position',\n\t\t\t\t\tthis,\n\t\t\t\t\t{ range }\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Prepares given range to be added to selection. Checks if it is correct,\n\t * converts it to {@link module:engine/model/liverange~LiveRange LiveRange}\n\t * and sets listeners listening to the range's change event.\n\t */\n\tprivate _prepareRange( range: Range ): LiveRange | undefined {\n\t\tthis._checkRange( range );\n\n\t\tif ( range.root == this._document.graveyard ) {\n\t\t\t// @if CK_DEBUG // console.warn( 'Trying to add a Range that is in the graveyard root. Range rejected.' );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst liveRange = LiveRange.fromRange( range );\n\n\t\t// If selection range is moved to the graveyard remove it from the selection object.\n\t\t// Also, save some data that can be used to restore selection later, on `Model#applyOperation` event.\n\t\tliveRange.on( 'change:range', ( evt, oldRange, data ) => {\n\t\t\tthis._hasChangedRange = true;\n\n\t\t\tif ( liveRange.root == this._document.graveyard ) {\n\t\t\t\tthis._selectionRestorePosition = data.deletionPosition;\n\n\t\t\t\tconst index = this._ranges.indexOf( liveRange );\n\t\t\t\tthis._ranges.splice( index, 1 );\n\t\t\t\tliveRange.detach();\n\t\t\t}\n\t\t} );\n\n\t\treturn liveRange;\n\t}\n\n\tpublic updateMarkers(): void {\n\t\tif ( !this._observedMarkers.size ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst markers = [];\n\t\tlet changed = false;\n\n\t\tfor ( const marker of this._model.markers ) {\n\t\t\tconst markerGroup = marker.name.split( ':', 1 )[ 0 ];\n\n\t\t\tif ( !this._observedMarkers.has( markerGroup ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst markerRange = marker.getRange();\n\n\t\t\tfor ( const selectionRange of this.getRanges() ) {\n\t\t\t\tif ( markerRange.containsRange( selectionRange, !selectionRange.isCollapsed ) ) {\n\t\t\t\t\tmarkers.push( marker );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst oldMarkers = Array.from( this.markers );\n\n\t\tfor ( const marker of markers ) {\n\t\t\tif ( !this.markers.has( marker ) ) {\n\t\t\t\tthis.markers.add( marker );\n\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}\n\n\t\tfor ( const marker of Array.from( this.markers ) ) {\n\t\t\tif ( !markers.includes( marker ) ) {\n\t\t\t\tthis.markers.remove( marker );\n\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}\n\n\t\tif ( changed ) {\n\t\t\tthis.fire<DocumentSelectionChangeMarkerEvent>( 'change:marker', { oldMarkers, directChange: false } );\n\t\t}\n\t}\n\n\tprivate _updateMarker( marker: Marker, markerRange: Range | null ): void {\n\t\tconst markerGroup = marker.name.split( ':', 1 )[ 0 ];\n\n\t\tif ( !this._observedMarkers.has( markerGroup ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet changed = false;\n\n\t\tconst oldMarkers = Array.from( this.markers );\n\t\tconst hasMarker = this.markers.has( marker );\n\n\t\tif ( !markerRange ) {\n\t\t\tif ( hasMarker ) {\n\t\t\t\tthis.markers.remove( marker );\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t} else {\n\t\t\tlet contained = false;\n\n\t\t\tfor ( const selectionRange of this.getRanges() ) {\n\t\t\t\tif ( markerRange.containsRange( selectionRange, !selectionRange.isCollapsed ) ) {\n\t\t\t\t\tcontained = true;\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( contained && !hasMarker ) {\n\t\t\t\tthis.markers.add( marker );\n\n\t\t\t\tchanged = true;\n\t\t\t} else if ( !contained && hasMarker ) {\n\t\t\t\tthis.markers.remove( marker );\n\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}\n\n\t\tif ( changed ) {\n\t\t\tthis.fire<DocumentSelectionChangeMarkerEvent>( 'change:marker', { oldMarkers, directChange: false } );\n\t\t}\n\t}\n\n\t/**\n\t * Updates this selection attributes according to its ranges and the {@link module:engine/model/document~Document model document}.\n\t */\n\tpublic _updateAttributes( clearAll: boolean ): void {\n\t\tconst newAttributes = toMap( this._getSurroundingAttributes() );\n\t\tconst oldAttributes = toMap( this.getAttributes() );\n\n\t\tif ( clearAll ) {\n\t\t\t// If `clearAll` remove all attributes and reset priorities.\n\t\t\tthis._attributePriority = new Map();\n\t\t\tthis._attrs = new Map();\n\t\t} else {\n\t\t\t// If not, remove only attributes added with `low` priority.\n\t\t\tfor ( const [ key, priority ] of this._attributePriority ) {\n\t\t\t\tif ( priority == 'low' ) {\n\t\t\t\t\tthis._attrs.delete( key );\n\t\t\t\t\tthis._attributePriority.delete( key );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._setAttributesTo( newAttributes );\n\n\t\t// Let's evaluate which attributes really changed.\n\t\tconst changed = [];\n\n\t\t// First, loop through all attributes that are set on selection right now.\n\t\t// Check which of them are different than old attributes.\n\t\tfor ( const [ newKey, newValue ] of this.getAttributes() ) {\n\t\t\tif ( !oldAttributes.has( newKey ) || oldAttributes.get( newKey ) !== newValue ) {\n\t\t\t\tchanged.push( newKey );\n\t\t\t}\n\t\t}\n\n\t\t// Then, check which of old attributes got removed.\n\t\tfor ( const [ oldKey ] of oldAttributes ) {\n\t\t\tif ( !this.hasAttribute( oldKey ) ) {\n\t\t\t\tchanged.push( oldKey );\n\t\t\t}\n\t\t}\n\n\t\t// Fire event with exact data (fire only if anything changed).\n\t\tif ( changed.length > 0 ) {\n\t\t\tthis.fire<DocumentSelectionChangeAttributeEvent>( 'change:attribute', { attributeKeys: changed, directChange: false } );\n\t\t}\n\t}\n\n\t/**\n\t * Internal method for setting `LiveSelection` attribute. Supports attribute priorities (through `directChange`\n\t * parameter).\n\t */\n\tprivate _setAttribute( key: string, value: unknown, directChange: boolean = true ): boolean {\n\t\tconst priority = directChange ? 'normal' : 'low';\n\n\t\tif ( priority == 'low' && this._attributePriority.get( key ) == 'normal' ) {\n\t\t\t// Priority too low.\n\t\t\treturn false;\n\t\t}\n\n\t\tconst oldValue = super.getAttribute( key );\n\n\t\t// Don't do anything if value has not changed.\n\t\tif ( oldValue === value ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis._attrs.set( key, value );\n\n\t\t// Update priorities map.\n\t\tthis._attributePriority.set( key, priority );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Internal method for removing `LiveSelection` attribute. Supports attribute priorities (through `directChange`\n\t * parameter).\n\t *\n\t * NOTE: Even if attribute is not present in the selection but is provided to this method, it's priority will\n\t * be changed according to `directChange` parameter.\n\t */\n\tprivate _removeAttribute( key: string, directChange: boolean = true ): boolean {\n\t\tconst priority = directChange ? 'normal' : 'low';\n\n\t\tif ( priority == 'low' && this._attributePriority.get( key ) == 'normal' ) {\n\t\t\t// Priority too low.\n\t\t\treturn false;\n\t\t}\n\n\t\t// Update priorities map.\n\t\tthis._attributePriority.set( key, priority );\n\n\t\t// Don't do anything if value has not changed.\n\t\tif ( !super.hasAttribute( key ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis._attrs.delete( key );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Internal method for setting multiple `LiveSelection` attributes. Supports attribute priorities (through\n\t * `directChange` parameter).\n\t */\n\tprivate _setAttributesTo( attrs: Map<string, unknown> ): Set<string> {\n\t\tconst changed = new Set<string>();\n\n\t\tfor ( const [ oldKey, oldValue ] of this.getAttributes() ) {\n\t\t\t// Do not remove attribute if attribute with same key and value is about to be set.\n\t\t\tif ( attrs.get( oldKey ) === oldValue ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// All rest attributes will be removed so changed attributes won't change .\n\t\t\tthis._removeAttribute( oldKey, false );\n\t\t}\n\n\t\tfor ( const [ key, value ] of attrs ) {\n\t\t\t// Attribute may not be set because of attributes or because same key/value is already added.\n\t\t\tconst gotAdded = this._setAttribute( key, value, false );\n\n\t\t\tif ( gotAdded ) {\n\t\t\t\tchanged.add( key );\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n\n\t/**\n\t * Returns an iterable that iterates through all selection attributes stored in current selection's parent.\n\t */\n\tpublic* getStoredAttributes(): IterableIterator<[ string, unknown ]> {\n\t\tconst selectionParent = this.getFirstPosition()!.parent as Element;\n\n\t\tif ( this.isCollapsed && selectionParent.isEmpty ) {\n\t\t\tfor ( const key of selectionParent.getAttributeKeys() ) {\n\t\t\t\tif ( key.startsWith( storePrefix ) ) {\n\t\t\t\t\tconst realKey = key.substr( storePrefix.length );\n\n\t\t\t\t\tyield [ realKey, selectionParent.getAttribute( key ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks model text nodes that are closest to the selection's first position and returns attributes of first\n\t * found element. If there are no text nodes in selection's first position parent, it returns selection\n\t * attributes stored in that parent.\n\t */\n\tprivate _getSurroundingAttributes(): Iterable<[ string, unknown ]> | null {\n\t\tconst position = this.getFirstPosition()!;\n\t\tconst schema = this._model.schema;\n\n\t\tif ( position.root.rootName == '$graveyard' ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tlet attrs = null;\n\n\t\tif ( !this.isCollapsed ) {\n\t\t\t// 1. If selection is a range...\n\t\t\tconst range = this.getFirstRange();\n\n\t\t\t// ...look for a first character node in that range and take attributes from it.\n\t\t\tfor ( const value of range ) {\n\t\t\t\t// If the item is an object, we don't want to get attributes from its children...\n\t\t\t\tif ( value.item.is( 'element' ) && schema.isObject( value.item ) ) {\n\t\t\t\t\t// ...but collect attributes from inline object.\n\t\t\t\t\tattrs = getTextAttributes( value.item, schema );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( value.type == 'text' ) {\n\t\t\t\t\tattrs = value.item.getAttributes();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// 2. If the selection is a caret or the range does not contain a character node...\n\n\t\t\tconst nodeBefore = position.textNode ? position.textNode : position.nodeBefore;\n\t\t\tconst nodeAfter = position.textNode ? position.textNode : position.nodeAfter;\n\n\t\t\t// When gravity is overridden then don't take node before into consideration.\n\t\t\tif ( !this.isGravityOverridden ) {\n\t\t\t\t// ...look at the node before caret and take attributes from it if it is a character node.\n\t\t\t\tattrs = getTextAttributes( nodeBefore, schema );\n\t\t\t}\n\n\t\t\t// 3. If not, look at the node after caret...\n\t\t\tif ( !attrs ) {\n\t\t\t\tattrs = getTextAttributes( nodeAfter, schema );\n\t\t\t}\n\n\t\t\t// 4. If not, try to find the first character on the left, that is in the same node.\n\t\t\t// When gravity is overridden then don't take node before into consideration.\n\t\t\tif ( !this.isGravityOverridden && !attrs ) {\n\t\t\t\tlet node = nodeBefore;\n\n\t\t\t\twhile ( node && !attrs ) {\n\t\t\t\t\tnode = node.previousSibling;\n\t\t\t\t\tattrs = getTextAttributes( node, schema );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// 5. If not found, try to find the first character on the right, that is in the same node.\n\t\t\tif ( !attrs ) {\n\t\t\t\tlet node = nodeAfter;\n\n\t\t\t\twhile ( node && !attrs ) {\n\t\t\t\t\tnode = node.nextSibling;\n\t\t\t\t\tattrs = getTextAttributes( node, schema );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// 6. If not found, selection should retrieve attributes from parent.\n\t\t\tif ( !attrs ) {\n\t\t\t\tattrs = this.getStoredAttributes();\n\t\t\t}\n\t\t}\n\n\t\treturn attrs;\n\t}\n\n\t/**\n\t * Fixes the selection after all its ranges got removed.\n\t * @param deletionPosition Position where the deletion happened.\n\t */\n\tprivate _fixGraveyardSelection( deletionPosition: Position ): void {\n\t\t// Find a range that is a correct selection range and is closest to the position where the deletion happened.\n\t\tconst selectionRange = this._model.schema.getNearestSelectionRange( deletionPosition );\n\n\t\t// If nearest valid selection range has been found - add it in the place of old range.\n\t\tif ( selectionRange ) {\n\t\t\t// Check the range, convert it to live range, bind events, etc.\n\t\t\tthis._pushRange( selectionRange );\n\t\t}\n\t\t// If nearest valid selection range cannot be found don't add any range. Selection will be set to the default range.\n\t}\n}\n\n/**\n * Helper function for {@link module:engine/model/liveselection~LiveSelection#_updateAttributes}.\n *\n * It checks if the passed model item is a text node (or text proxy) and, if so, returns it's attributes.\n * If not, it checks if item is an inline object and does the same. Otherwise it returns `null`.\n */\nfunction getTextAttributes( node: Item | null, schema: Schema ): Iterable<[string, unknown]> | null {\n\tif ( !node ) {\n\t\treturn null;\n\t}\n\n\tif ( node instanceof TextProxy || node instanceof Text ) {\n\t\treturn node.getAttributes();\n\t}\n\n\tif ( !schema.isInline( node ) ) {\n\t\treturn null;\n\t}\n\n\t// Stop on inline elements (such as `<softBreak>`) that are not objects (such as `<imageInline>` or `<mathml>`).\n\tif ( !schema.isObject( node ) ) {\n\t\treturn [];\n\t}\n\n\tconst attributes: Array<[string, unknown]> = [];\n\n\t// Collect all attributes that can be applied to the text node.\n\tfor ( const [ key, value ] of node.getAttributes() ) {\n\t\tif (\n\t\t\tschema.checkAttribute( '$text', key ) &&\n\t\t\tschema.getAttributeProperties( key ).copyFromObject !== false\n\t\t) {\n\t\t\tattributes.push( [ key, value ] );\n\t\t}\n\t}\n\n\treturn attributes;\n}\n\n/**\n * Removes selection attributes from element which is not empty anymore.\n */\nfunction clearAttributesStoredInElement( model: Model, batch: Batch ) {\n\tconst differ = model.document.differ;\n\n\tfor ( const entry of differ.getChanges() ) {\n\t\tif ( entry.type != 'insert' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst changeParent = entry.position.parent as Element;\n\t\tconst isNoLongerEmpty = entry.length === changeParent.maxOffset;\n\n\t\tif ( isNoLongerEmpty ) {\n\t\t\tmodel.enqueueChange( batch, writer => {\n\t\t\t\tconst storedAttributes = Array.from( changeParent.getAttributeKeys() )\n\t\t\t\t\t.filter( key => key.startsWith( storePrefix ) );\n\n\t\t\t\tfor ( const key of storedAttributes ) {\n\t\t\t\t\twriter.removeAttribute( key, changeParent );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/conversion/conversionhelpers\n */\n\n/**\n * Base class for conversion helpers.\n */\nexport default class ConversionHelpers<TDispatcher> {\n\tprivate readonly _dispatchers: Array<TDispatcher>;\n\n\t/**\n\t * Creates a conversion helpers instance.\n\t */\n\tconstructor( dispatchers: Array<TDispatcher> ) {\n\t\tthis._dispatchers = dispatchers;\n\t}\n\n\t/**\n\t * Registers a conversion helper.\n\t *\n\t * **Note**: See full usage example in the `{@link module:engine/conversion/conversion~Conversion#for conversion.for()}`\n\t * method description.\n\t *\n\t * @param conversionHelper The function to be called on event.\n\t */\n\tpublic add( conversionHelper: ( dispatcher: TDispatcher ) => void ): this {\n\t\tfor ( const dispatcher of this._dispatchers ) {\n\t\t\tconversionHelper( dispatcher );\n\t\t}\n\n\t\treturn this;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * Contains downcast (model-to-view) converters for {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher}.\n *\n * @module engine/conversion/downcasthelpers\n */\n\nimport ModelRange from '../model/range';\nimport ModelSelection from '../model/selection';\nimport ModelDocumentSelection from '../model/documentselection';\nimport ModelElement from '../model/element';\nimport ModelPosition from '../model/position';\n\nimport ViewAttributeElement from '../view/attributeelement';\nimport ConversionHelpers from './conversionhelpers';\n\nimport type {\n\tdefault as DowncastDispatcher,\n\tDiffItemReinsert,\n\tDowncastConversionApi,\n\tDowncastInsertEvent,\n\tDowncastAddMarkerEvent,\n\tDowncastAttributeEvent,\n\tDowncastReduceChangesEvent,\n\tDowncastRemoveMarkerEvent\n} from './downcastdispatcher';\nimport type ModelConsumable from './modelconsumable';\nimport type { DiffItem } from '../model/differ';\nimport type ModelNode from '../model/node';\nimport type ModelItem from '../model/item';\nimport type ModelTextProxy from '../model/textproxy';\nimport type ModelText from '../model/text';\n\nimport type DowncastWriter from '../view/downcastwriter';\nimport type ElementDefinition from '../view/elementdefinition';\nimport type ViewDocumentFragment from '../view/documentfragment';\nimport type UIElement from '../view/uielement';\nimport type ViewElement from '../view/element';\nimport type ViewNode from '../view/node';\nimport type ViewPosition from '../view/position';\nimport type ViewRange from '../view/range';\nimport type {\n\tdefault as Mapper,\n\tMapperModelToViewPositionEvent\n} from './mapper';\n\nimport {\n\tCKEditorError,\n\ttoArray,\n\ttype EventInfo,\n\ttype PriorityString\n} from '@ckeditor/ckeditor5-utils';\n\nimport { cloneDeep } from 'lodash-es';\n\n/**\n * Downcast conversion helper functions.\n *\n * Learn more about {@glink framework/deep-dive/conversion/downcast downcast helpers}.\n *\n * @extends module:engine/conversion/conversionhelpers~ConversionHelpers\n */\nexport default class DowncastHelpers extends ConversionHelpers<DowncastDispatcher> {\n\t/**\n\t * Model element to view element conversion helper.\n\t *\n\t * This conversion results in creating a view element. For example, model `<paragraph>Foo</paragraph>` becomes `<p>Foo</p>` in the view.\n\t *\n\t * ```ts\n\t * editor.conversion.for( 'downcast' ).elementToElement( {\n\t * \tmodel: 'paragraph',\n\t * \tview: 'p'\n\t * } );\n\t *\n\t * editor.conversion.for( 'downcast' ).elementToElement( {\n\t * \tmodel: 'paragraph',\n\t * \tview: 'div',\n\t * \tconverterPriority: 'high'\n\t * } );\n\t *\n\t * editor.conversion.for( 'downcast' ).elementToElement( {\n\t * \tmodel: 'fancyParagraph',\n\t * \tview: {\n\t * \t\tname: 'p',\n\t * \t\tclasses: 'fancy'\n\t * \t}\n\t * } );\n\t *\n\t * editor.conversion.for( 'downcast' ).elementToElement( {\n\t * \tmodel: 'heading',\n\t * \tview: ( modelElement, conversionApi ) => {\n\t * \t\tconst { writer } = conversionApi;\n\t *\n\t * \t\treturn writer.createContainerElement( 'h' + modelElement.getAttribute( 'level' ) );\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * The element-to-element conversion supports the reconversion mechanism. It can be enabled by using either the `attributes` or\n\t * the `children` props on a model description. You will find a couple examples below.\n\t *\n\t * In order to reconvert an element if any of its direct children have been added or removed, use the `children` property on a `model`\n\t * description. For example, this model:\n\t *\n\t * ```xml\n\t * <box>\n\t * \t<paragraph>Some text.</paragraph>\n\t * </box>\n\t * ```\n\t *\n\t * will be converted into this structure in the view:\n\t *\n\t * ```html\n\t * <div class=\"box\" data-type=\"single\">\n\t * \t<p>Some text.</p>\n\t * </div>\n\t * ```\n\t *\n\t * But if more items were inserted in the model:\n\t *\n\t * ```xml\n\t * <box>\n\t * \t<paragraph>Some text.</paragraph>\n\t * \t<paragraph>Other item.</paragraph>\n\t * </box>\n\t * ```\n\t *\n\t * it will be converted into this structure in the view (note the element `data-type` change):\n\t *\n\t * ```html\n\t * <div class=\"box\" data-type=\"multiple\">\n\t * \t<p>Some text.</p>\n\t * \t<p>Other item.</p>\n\t * </div>\n\t * ```\n\t *\n\t * Such a converter would look like this (note that the `paragraph` elements are converted separately):\n\t *\n\t * ```ts\n\t * editor.conversion.for( 'downcast' ).elementToElement( {\n\t * \tmodel: {\n\t * \t\tname: 'box',\n\t * \t\tchildren: true\n\t * \t},\n\t * \tview: ( modelElement, conversionApi ) => {\n\t * \t\tconst { writer } = conversionApi;\n\t *\n\t * \t\treturn writer.createContainerElement( 'div', {\n\t * \t\t\tclass: 'box',\n\t * \t\t\t'data-type': modelElement.childCount == 1 ? 'single' : 'multiple'\n\t * \t\t} );\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * In order to reconvert element if any of its attributes have been updated, use the `attributes` property on a `model`\n\t * description. For example, this model:\n\t *\n\t * ```xml\n\t * <heading level=\"2\">Some text.</heading>\n\t * ```\n\t *\n\t * will be converted into this structure in the view:\n\t *\n\t * ```html\n\t * <h2>Some text.</h2>\n\t * ```\n\t *\n\t * But if the `heading` element's `level` attribute has been updated to `3` for example, then\n\t * it will be converted into this structure in the view:\n\t *\n\t * ```html\n\t * <h3>Some text.</h3>\n\t * ```\n\t *\n\t * Such a converter would look as follows:\n\t *\n\t * ```ts\n\t * editor.conversion.for( 'downcast' ).elementToElement( {\n\t * \tmodel: {\n\t * \t\tname: 'heading',\n\t * \t\tattributes: 'level'\n\t * \t},\n\t * \tview: ( modelElement, conversionApi ) => {\n\t * \t\tconst { writer } = conversionApi;\n\t *\n\t * \t\treturn writer.createContainerElement( 'h' + modelElement.getAttribute( 'level' ) );\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * See {@link module:engine/conversion/conversion~Conversion#for `conversion.for()`} to learn how to add a converter\n\t * to the conversion process.\n\t *\n\t * You can read more about the element-to-element conversion in the\n\t * {@glink framework/deep-dive/conversion/downcast downcast conversion} guide.\n\t *\n\t * @param config Conversion configuration.\n\t * @param config.model The description or a name of the model element to convert.\n\t * @param config.model.attributes The list of attribute names that should be consumed while creating\n\t * the view element. Note that the view will be reconverted if any of the listed attributes changes.\n \t * @param config.model.children Specifies whether the view element requires reconversion if the list\n\t * of the model child nodes changed.\n\t * @param config.view A view element definition or a function that takes the model element and\n\t * {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi downcast conversion API}\n\t * as parameters and returns a view container element.\n\t */\n\tpublic elementToElement( config: {\n\t\tmodel: string | {\n\t\t\tname: string;\n\t\t\tattributes?: string | Array<string>;\n\t\t\tchildren?: boolean;\n\t\t};\n\t\tview: ElementDefinition | ElementCreatorFunction;\n\t\tconverterPriority?: PriorityString;\n\t} ): this {\n\t\treturn this.add( downcastElementToElement( config ) );\n\t}\n\n\t/**\n\t * The model element to view structure (several elements) conversion helper.\n\t *\n\t * This conversion results in creating a view structure with one or more slots defined for the child nodes.\n\t * For example, a model `<table>` may become this structure in the view:\n\t *\n\t * ```html\n\t * <figure class=\"table\">\n\t * \t<table>\n\t * \t\t<tbody>${ slot for table rows }</tbody>\n\t * \t</table>\n\t * </figure>\n\t * ```\n\t *\n\t * The children of the model's `<table>` element will be inserted into the `<tbody>` element.\n\t * If the `elementToElement()` helper was used, the children would be inserted into the `<figure>`.\n\t *\n\t * An example converter that converts the following model structure:\n\t *\n\t * ```xml\n\t * <wrappedParagraph>Some text.</wrappedParagraph>\n\t * ```\n\t *\n\t * into this structure in the view:\n\t *\n\t * ```html\n\t * <div class=\"wrapper\">\n\t * \t<p>Some text.</p>\n\t * </div>\n\t * ```\n\t *\n\t * would look like this:\n\t *\n\t * ```ts\n\t * editor.conversion.for( 'downcast' ).elementToStructure( {\n\t * \tmodel: 'wrappedParagraph',\n\t * \tview: ( modelElement, conversionApi ) => {\n\t * \t\tconst { writer } = conversionApi;\n\t *\n\t * \t\tconst wrapperViewElement = writer.createContainerElement( 'div', { class: 'wrapper' } );\n\t * \t\tconst paragraphViewElement = writer.createContainerElement( 'p' );\n\t *\n\t * \t\twriter.insert( writer.createPositionAt( wrapperViewElement, 0 ), paragraphViewElement );\n\t * \t\twriter.insert( writer.createPositionAt( paragraphViewElement, 0 ), writer.createSlot() );\n\t *\n\t * \t\treturn wrapperViewElement;\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * The `createSlot()` function can also take a callback that allows filtering which children of the model element\n\t * should be converted into this slot.\n\t *\n\t * Imagine a table feature where for this model structure:\n\t *\n\t * ```xml\n\t * <table headingRows=\"1\">\n\t * \t<tableRow> ... table cells 1 ... </tableRow>\n\t * \t<tableRow> ... table cells 2 ... </tableRow>\n\t * \t<tableRow> ... table cells 3 ... </tableRow>\n\t * \t<caption>Caption text</caption>\n\t * </table>\n\t * ```\n\t *\n\t * we want to generate this view structure:\n\t *\n\t * ```html\n\t * <figure class=\"table\">\n\t * \t<table>\n\t * \t\t<thead>\n\t * \t\t\t<tr> ... table cells 1 ... </tr>\n\t * \t\t</thead>\n\t * \t\t<tbody>\n\t * \t\t\t<tr> ... table cells 2 ... </tr>\n\t * \t\t\t<tr> ... table cells 3 ... </tr>\n\t * \t\t</tbody>\n\t * \t</table>\n\t * \t<figcaption>Caption text</figcaption>\n\t * </figure>\n\t * ```\n\t *\n\t * The converter has to take the `headingRows` attribute into consideration when allocating the `<tableRow>` elements\n\t * into the `<tbody>` and `<thead>` elements. Hence, we need two slots and need to define proper filter callbacks for them.\n\t *\n\t * Additionally, all elements other than `<tableRow>` should be placed outside the `<table>` tag.\n\t * In the example above, this will handle the table caption.\n\t *\n\t * Such a converter would look like this:\n\t *\n\t * ```ts\n\t * editor.conversion.for( 'downcast' ).elementToStructure( {\n\t * \tmodel: {\n\t * \t\tname: 'table',\n\t * \t\tattributes: [ 'headingRows' ]\n\t * \t},\n\t * \tview: ( modelElement, conversionApi ) => {\n\t * \t\tconst { writer } = conversionApi;\n\t *\n\t * \t\tconst figureElement = writer.createContainerElement( 'figure', { class: 'table' } );\n\t * \t\tconst tableElement = writer.createContainerElement( 'table' );\n\t *\n\t * \t\twriter.insert( writer.createPositionAt( figureElement, 0 ), tableElement );\n\t *\n\t * \t\tconst headingRows = modelElement.getAttribute( 'headingRows' ) || 0;\n\t *\n\t * \t\tif ( headingRows > 0 ) {\n\t * \t\t\tconst tableHead = writer.createContainerElement( 'thead' );\n\t *\n\t * \t\t\tconst headSlot = writer.createSlot( node => node.is( 'element', 'tableRow' ) && node.index < headingRows );\n\t *\n\t * \t\t\twriter.insert( writer.createPositionAt( tableElement, 'end' ), tableHead );\n\t * \t\t\twriter.insert( writer.createPositionAt( tableHead, 0 ), headSlot );\n\t * \t\t}\n\t *\n\t * \t\tif ( headingRows < tableUtils.getRows( table ) ) {\n\t * \t\t\tconst tableBody = writer.createContainerElement( 'tbody' );\n\t *\n\t * \t\t\tconst bodySlot = writer.createSlot( node => node.is( 'element', 'tableRow' ) && node.index >= headingRows );\n\t *\n\t * \t\t\twriter.insert( writer.createPositionAt( tableElement, 'end' ), tableBody );\n\t * \t\t\twriter.insert( writer.createPositionAt( tableBody, 0 ), bodySlot );\n\t * \t\t}\n\t *\n\t * \t\tconst restSlot = writer.createSlot( node => !node.is( 'element', 'tableRow' ) );\n\t *\n\t * \t\twriter.insert( writer.createPositionAt( figureElement, 'end' ), restSlot );\n\t *\n\t * \t\treturn figureElement;\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * Note: The children of a model element that's being converted must be allocated in the same order in the view\n\t * in which they are placed in the model.\n\t *\n\t * See {@link module:engine/conversion/conversion~Conversion#for `conversion.for()`} to learn how to add a converter\n\t * to the conversion process.\n\t *\n\t * @param config Conversion configuration.\n \t * @param config.model The description or a name of the model element to convert.\n\t * @param config.model.name The name of the model element to convert.\n \t * @param config.model.attributes The list of attribute names that should be consumed while creating\n\t * the view structure. Note that the view will be reconverted if any of the listed attributes will change.\n\t * @param config.view A function that takes the model element and\n\t * {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi downcast conversion API} as parameters\n\t * and returns a view container element with slots for model child nodes to be converted into.\n\t */\n\tpublic elementToStructure( config: {\n\t\tmodel: string | {\n\t\t\tname: string;\n\t\t\tattributes?: string | Array<string>;\n\t\t};\n\t\tview: StructureCreatorFunction;\n\t\tconverterPriority?: PriorityString;\n\t} ): this {\n\t\treturn this.add( downcastElementToStructure( config ) );\n\t}\n\n\t/**\n\t * Model attribute to view element conversion helper.\n\t *\n\t * This conversion results in wrapping view nodes with a view attribute element. For example, a model text node with\n\t * `\"Foo\"` as data and the `bold` attribute becomes `<strong>Foo</strong>` in the view.\n\t *\n\t * ```ts\n\t * editor.conversion.for( 'downcast' ).attributeToElement( {\n\t * \tmodel: 'bold',\n\t * \tview: 'strong'\n\t * } );\n\t *\n\t * editor.conversion.for( 'downcast' ).attributeToElement( {\n\t * \tmodel: 'bold',\n\t * \tview: 'b',\n\t * \tconverterPriority: 'high'\n\t * } );\n\t *\n\t * editor.conversion.for( 'downcast' ).attributeToElement( {\n\t * \tmodel: 'invert',\n\t * \tview: {\n\t * \t\tname: 'span',\n\t * \t\tclasses: [ 'font-light', 'bg-dark' ]\n\t * \t}\n\t * } );\n\t *\n\t * editor.conversion.for( 'downcast' ).attributeToElement( {\n\t * \tmodel: {\n\t * \t\tkey: 'fontSize',\n\t * \t\tvalues: [ 'big', 'small' ]\n\t * \t},\n\t * \tview: {\n\t * \t\tbig: {\n\t * \t\t\tname: 'span',\n\t * \t\t\tstyles: {\n\t * \t\t\t\t'font-size': '1.2em'\n\t * \t\t\t}\n\t * \t\t},\n\t * \t\tsmall: {\n\t * \t\t\tname: 'span',\n\t * \t\t\tstyles: {\n\t * \t\t\t\t'font-size': '0.8em'\n\t * \t\t\t}\n\t * \t\t}\n\t * \t}\n\t * } );\n\t *\n\t * editor.conversion.for( 'downcast' ).attributeToElement( {\n\t * \tmodel: 'bold',\n\t * \tview: ( modelAttributeValue, conversionApi ) => {\n\t * \t\tconst { writer } = conversionApi;\n\t *\n\t * \t\treturn writer.createAttributeElement( 'span', {\n\t * \t\t\tstyle: 'font-weight:' + modelAttributeValue\n\t * \t\t} );\n\t * \t}\n\t * } );\n\t *\n\t * editor.conversion.for( 'downcast' ).attributeToElement( {\n\t * \tmodel: {\n\t * \t\tkey: 'color',\n\t * \t\tname: '$text'\n\t * \t},\n\t * \tview: ( modelAttributeValue, conversionApi ) => {\n\t * \t\tconst { writer } = conversionApi;\n\t *\n\t * \t\treturn writer.createAttributeElement( 'span', {\n\t * \t\t\tstyle: 'color:' + modelAttributeValue\n\t * \t\t} );\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * See {@link module:engine/conversion/conversion~Conversion#for `conversion.for()`} to learn how to add a converter\n\t * to the conversion process.\n\t *\n\t * @param config Conversion configuration.\n\t * @param config.model The key of the attribute to convert from or a `{ key, values }` object. `values` is an array\n\t * of `String`s with possible values if the model attribute is an enumerable.\n\t * @param config.view A view element definition or a function\n\t * that takes the model attribute value and\n\t * {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi downcast conversion API} as parameters and returns a view\n\t * attribute element. If `config.model.values` is given, `config.view` should be an object assigning values from `config.model.values`\n\t * to view element definitions or functions.\n\t * @param config.converterPriority Converter priority.\n\t */\n\tpublic attributeToElement<TValues extends string>(\n\t\tconfig: {\n\t\t\tmodel: string | {\n\t\t\t\tkey: string;\n\t\t\t\tname?: string;\n\t\t\t};\n\t\t\tview: ElementDefinition | AttributeElementCreatorFunction;\n\t\t\tconverterPriority?: PriorityString;\n\t\t} | {\n\t\t\tmodel: {\n\t\t\t\tkey: string;\n\t\t\t\tname?: string;\n\t\t\t\tvalues: Array<TValues>;\n\t\t\t};\n\t\t\tview: Record<TValues, ElementDefinition | AttributeElementCreatorFunction>;\n\t\t\tconverterPriority?: PriorityString;\n\t\t}\n\t): this {\n\t\treturn this.add( downcastAttributeToElement( config ) );\n\t}\n\n\t/**\n\t * Model attribute to view attribute conversion helper.\n\t *\n\t * This conversion results in adding an attribute to a view node, basing on an attribute from a model node. For example,\n\t * `<imageInline src='foo.jpg'></imageInline>` is converted to `<img src='foo.jpg'></img>`.\n\t *\n\t * ```ts\n\t * editor.conversion.for( 'downcast' ).attributeToAttribute( {\n\t * \tmodel: 'source',\n\t * \tview: 'src'\n\t * } );\n\t *\n\t * editor.conversion.for( 'downcast' ).attributeToAttribute( {\n\t * \tmodel: 'source',\n\t * \tview: 'href',\n\t * \tconverterPriority: 'high'\n\t * } );\n\t *\n\t * editor.conversion.for( 'downcast' ).attributeToAttribute( {\n\t * \tmodel: {\n\t * \t\tname: 'imageInline',\n\t * \t\tkey: 'source'\n\t * \t},\n\t * \tview: 'src'\n\t * } );\n\t *\n\t * editor.conversion.for( 'downcast' ).attributeToAttribute( {\n\t * \tmodel: {\n\t * \t\tname: 'styled',\n\t * \t\tvalues: [ 'dark', 'light' ]\n\t * \t},\n\t * \tview: {\n\t * \t\tdark: {\n\t * \t\t\tkey: 'class',\n\t * \t\t\tvalue: [ 'styled', 'styled-dark' ]\n\t * \t\t},\n\t * \t\tlight: {\n\t * \t\t\tkey: 'class',\n\t * \t\t\tvalue: [ 'styled', 'styled-light' ]\n\t * \t\t}\n\t * \t}\n\t * } );\n\t *\n\t * editor.conversion.for( 'downcast' ).attributeToAttribute( {\n\t * \tmodel: 'styled',\n\t * \tview: modelAttributeValue => ( {\n\t * \t\tkey: 'class',\n\t * \t\tvalue: 'styled-' + modelAttributeValue\n\t * \t} )\n\t * } );\n\t * ```\n\t *\n\t * **Note**: Downcasting to a style property requires providing `value` as an object:\n\t *\n\t * ```ts\n\t * editor.conversion.for( 'downcast' ).attributeToAttribute( {\n\t * \tmodel: 'lineHeight',\n\t * \tview: modelAttributeValue => ( {\n\t * \t\tkey: 'style',\n\t * \t\tvalue: {\n\t * \t\t\t'line-height': modelAttributeValue,\n\t * \t\t\t'border-bottom': '1px dotted #ba2'\n\t * \t\t}\n\t * \t} )\n\t * } );\n\t * ```\n\t *\n\t * See {@link module:engine/conversion/conversion~Conversion#for `conversion.for()`} to learn how to add a converter\n\t * to the conversion process.\n\t *\n\t * @param config Conversion configuration.\n\t * @param config.model The key of the attribute to convert from or a `{ key, values, [ name ] }` object describing\n\t * the attribute key, possible values and, optionally, an element name to convert from.\n\t * @param config.view A view attribute key, or a `{ key, value }` object or a function that takes the model attribute value and\n\t * {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi downcast conversion API}\n\t * as parameters and returns a `{ key, value }` object. If the `key` is `'class'`, the `value` can be a `String` or an\n\t * array of `String`s. If the `key` is `'style'`, the `value` is an object with key-value pairs. In other cases, `value` is a `String`.\n\t * If `config.model.values` is set, `config.view` should be an object assigning values from `config.model.values` to\n\t * `{ key, value }` objects or a functions.\n\t * @param config.converterPriority Converter priority.\n\t */\n\tpublic attributeToAttribute<TValues extends string>(\n\t\tconfig: {\n\t\t\tmodel: string | {\n\t\t\t\tkey: string;\n\t\t\t\tname?: string;\n\t\t\t};\n\t\t\tview: string | AttributeDescriptor | AttributeCreatorFunction;\n\t\t\tconverterPriority?: PriorityString;\n\t\t} | {\n\t\t\tmodel: {\n\t\t\t\tkey: string;\n\t\t\t\tname?: string;\n\t\t\t\tvalues?: Array<TValues>;\n\t\t\t};\n\t\t\tview: Record<TValues, AttributeDescriptor | AttributeCreatorFunction>;\n\t\t\tconverterPriority?: PriorityString;\n\t\t}\n\t): this {\n\t\treturn this.add( downcastAttributeToAttribute( config ) );\n\t}\n\n\t/**\n\t * Model marker to view element conversion helper.\n\t *\n\t * **Note**: This method should be used mainly for editing the downcast and it is recommended\n\t * to use the {@link #markerToData `#markerToData()`} helper instead.\n\t *\n\t * This helper may produce invalid HTML code (e.g. a span between table cells).\n\t * It should only be used when you are sure that the produced HTML will be semantically correct.\n\t *\n\t * This conversion results in creating a view element on the boundaries of the converted marker. If the converted marker\n\t * is collapsed, only one element is created. For example, a model marker set like this: `<paragraph>F[oo b]ar</paragraph>`\n\t * becomes `<p>F<span data-marker=\"search\"></span>oo b<span data-marker=\"search\"></span>ar</p>` in the view.\n\t *\n\t * ```ts\n\t * editor.conversion.for( 'editingDowncast' ).markerToElement( {\n\t * \tmodel: 'search',\n\t * \tview: 'marker-search'\n\t * } );\n\t *\n\t * editor.conversion.for( 'editingDowncast' ).markerToElement( {\n\t * \tmodel: 'search',\n\t * \tview: 'search-result',\n\t * \tconverterPriority: 'high'\n\t * } );\n\t *\n\t * editor.conversion.for( 'editingDowncast' ).markerToElement( {\n\t * \tmodel: 'search',\n\t * \tview: {\n\t * \t\tname: 'span',\n\t * \t\tattributes: {\n\t * \t\t\t'data-marker': 'search'\n\t * \t\t}\n\t * \t}\n\t * } );\n\t *\n\t * editor.conversion.for( 'editingDowncast' ).markerToElement( {\n\t * \tmodel: 'search',\n\t * \tview: ( markerData, conversionApi ) => {\n\t * \t\tconst { writer } = conversionApi;\n\t *\n\t * \t\treturn writer.createUIElement( 'span', {\n\t * \t\t\t'data-marker': 'search',\n\t * \t\t\t'data-start': markerData.isOpening\n\t * \t\t} );\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * If a function is passed as the `config.view` parameter, it will be used to generate both boundary elements. The function\n\t * receives the `data` object and {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi downcast conversion API}\n\t * as a parameters and should return an instance of the\n\t * {@link module:engine/view/uielement~UIElement view UI element}. The `data` object and\n\t * {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi `conversionApi`} are passed from\n\t * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:addMarker}. Additionally,\n\t * the `data.isOpening` parameter is passed, which is set to `true` for the marker start boundary element, and `false` for\n\t * the marker end boundary element.\n\t *\n\t * See {@link module:engine/conversion/conversion~Conversion#for `conversion.for()`} to learn how to add a converter\n\t * to the conversion process.\n\t *\n\t * @param config Conversion configuration.\n\t * @param config.model The name of the model marker (or model marker group) to convert.\n\t * @param config.view A view element definition or a function that takes the model marker data and\n\t * {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi downcast conversion API} as a parameters\n\t * and returns a view UI element.\n\t * @param config.converterPriority Converter priority.\n\t */\n\tpublic markerToElement( config: {\n\t\tmodel: string;\n\t\tview: ElementDefinition | MarkerElementCreatorFunction;\n\t\tconverterPriority?: PriorityString;\n\t} ): this {\n\t\treturn this.add( downcastMarkerToElement( config ) );\n\t}\n\n\t/**\n\t * Model marker to highlight conversion helper.\n\t *\n\t * This conversion results in creating a highlight on view nodes. For this kind of conversion,\n\t * the {@link module:engine/conversion/downcasthelpers~HighlightDescriptor} should be provided.\n\t *\n\t * For text nodes, a `<span>` {@link module:engine/view/attributeelement~AttributeElement} is created and it wraps all text nodes\n\t * in the converted marker range. For example, a model marker set like this: `<paragraph>F[oo b]ar</paragraph>` becomes\n\t * `<p>F<span class=\"comment\">oo b</span>ar</p>` in the view.\n\t *\n\t * {@link module:engine/view/containerelement~ContainerElement} may provide a custom way of handling highlight. Most often,\n\t * the element itself is given classes and attributes described in the highlight descriptor (instead of being wrapped in `<span>`).\n\t * For example, a model marker set like this:\n\t * `[<imageInline src=\"foo.jpg\"></imageInline>]` becomes `<img src=\"foo.jpg\" class=\"comment\"></img>` in the view.\n\t *\n\t * For container elements, the conversion is two-step. While the converter processes the highlight descriptor and passes it\n\t * to a container element, it is the container element instance itself that applies values from the highlight descriptor.\n\t * So, in a sense, the converter takes care of stating what should be applied on what, while the element decides how to apply that.\n\t *\n\t * ```ts\n\t * editor.conversion.for( 'downcast' ).markerToHighlight( { model: 'comment', view: { classes: 'comment' } } );\n\t *\n\t * editor.conversion.for( 'downcast' ).markerToHighlight( {\n\t * \tmodel: 'comment',\n\t * \tview: { classes: 'comment' },\n\t * \tconverterPriority: 'high'\n\t * } );\n\t *\n\t * editor.conversion.for( 'downcast' ).markerToHighlight( {\n\t * \tmodel: 'comment',\n\t * \tview: ( data, conversionApi ) => {\n\t * \t\t// Assuming that the marker name is in a form of comment:commentType:commentId.\n\t * \t\tconst [ , commentType, commentId ] = data.markerName.split( ':' );\n\t *\n\t * \t\treturn {\n\t * \t\t\tclasses: [ 'comment', 'comment-' + commentType ],\n\t * \t\t\tattributes: { 'data-comment-id': commentId }\n\t * \t\t};\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * If a function is passed as the `config.view` parameter, it will be used to generate the highlight descriptor. The function\n\t * receives the `data` object and {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi downcast conversion API}\n\t * as the parameters and should return a\n\t * {@link module:engine/conversion/downcasthelpers~HighlightDescriptor highlight descriptor}.\n\t * The `data` object properties are passed from {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:addMarker}.\n\t *\n\t * See {@link module:engine/conversion/conversion~Conversion#for `conversion.for()`} to learn how to add a converter\n\t * to the conversion process.\n\t *\n\t * @param config Conversion configuration.\n\t * @param config.model The name of the model marker (or model marker group) to convert.\n\t * @param config.view A highlight descriptor that will be used for highlighting or a function that takes the model marker data and\n\t * {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi downcast conversion API} as a parameters\n\t * and returns a highlight descriptor.\n\t * @param config.converterPriority Converter priority.\n\t */\n\tpublic markerToHighlight( config: {\n\t\tmodel: string;\n\t\tview: HighlightDescriptor | HighlightDescriptorCreatorFunction;\n\t\tconverterPriority?: PriorityString;\n\t} ): this {\n\t\treturn this.add( downcastMarkerToHighlight( config ) );\n\t}\n\n\t/**\n\t * Model marker converter for data downcast.\n\t *\n\t * This conversion creates a representation for model marker boundaries in the view:\n\t *\n\t * * If the marker boundary is before or after a model element, a view attribute is set on a corresponding view element.\n\t * * In other cases, a view element with the specified tag name is inserted at the corresponding view position.\n\t *\n\t * Typically, the marker names use the `group:uniqueId:otherData` convention. For example: `comment:e34zfk9k2n459df53sjl34:zx32c`.\n\t * The default configuration for this conversion is that the first part is the `group` part and the rest of\n\t * the marker name becomes the `name` part.\n\t *\n\t * Tag and attribute names and values are generated from the marker name:\n\t *\n\t * * The templates for attributes are `data-[group]-start-before=\"[name]\"`, `data-[group]-start-after=\"[name]\"`,\n\t * `data-[group]-end-before=\"[name]\"` and `data-[group]-end-after=\"[name]\"`.\n\t * * The templates for view elements are `<[group]-start name=\"[name]\">` and `<[group]-end name=\"[name]\">`.\n\t *\n\t * Attributes mark whether the given marker's start or end boundary is before or after the given element.\n\t * The `data-[group]-start-before` and `data-[group]-end-after` attributes are favored.\n\t * The other two are used when the former two cannot be used.\n\t *\n\t * The conversion configuration can take a function that will generate different group and name parts.\n\t * If such a function is set as the `config.view` parameter, it is passed a marker name and it is expected to return an object with two\n\t * properties: `group` and `name`. If the function returns a falsy value, the conversion will not take place.\n\t *\n\t * Basic usage:\n\t *\n\t * ```ts\n\t * // Using the default conversion.\n\t * // In this case, all markers with names starting with 'comment:' will be converted.\n\t * // The `group` parameter will be set to `comment`.\n\t * // The `name` parameter will be the rest of the marker name (without the `:`).\n\t * editor.conversion.for( 'dataDowncast' ).markerToData( {\n\t * \tmodel: 'comment'\n\t * } );\n\t * ```\n\t *\n\t * An example of a view that may be generated by this conversion (assuming a marker with the name `comment:commentId:uid` marked\n\t * by `[]`):\n\t *\n\t * ```\n\t * // Model:\n\t * <paragraph>Foo[bar</paragraph>\n\t * <imageBlock src=\"abc.jpg\"></imageBlock>]\n\t *\n\t * // View:\n\t * <p>Foo<comment-start name=\"commentId:uid\"></comment-start>bar</p>\n\t * <figure data-comment-end-after=\"commentId:uid\" class=\"image\"><img src=\"abc.jpg\" /></figure>\n\t * ```\n\t *\n\t * In the example above, the comment starts before \"bar\" and ends after the image.\n\t *\n\t * If the `name` part is empty, the following view may be generated:\n\t *\n\t * ```html\n\t * <p>Foo <myMarker-start></myMarker-start>bar</p>\n\t * <figure data-myMarker-end-after=\"\" class=\"image\"><img src=\"abc.jpg\" /></figure>\n\t * ```\n\t *\n\t * **Note:** A situation where some markers have the `name` part and some do not, is incorrect and should be avoided.\n\t *\n\t * Examples where `data-group-start-after` and `data-group-end-before` are used:\n\t *\n\t * ```\n\t * // Model:\n\t * <blockQuote>[]<paragraph>Foo</paragraph></blockQuote>\n\t *\n\t * // View:\n\t * <blockquote><p data-group-end-before=\"name\" data-group-start-before=\"name\">Foo</p></blockquote>\n\t * ```\n\t *\n\t * Similarly, when a marker is collapsed after the last element:\n\t *\n\t * ```\n\t * // Model:\n\t * <blockQuote><paragraph>Foo</paragraph>[]</blockQuote>\n\t *\n\t * // View:\n\t * <blockquote><p data-group-end-after=\"name\" data-group-start-after=\"name\">Foo</p></blockquote>\n\t * ```\n\t *\n\t * When there are multiple markers from the same group stored in the same attribute of the same element, their\n\t * name parts are put together in the attribute value, for example: `data-group-start-before=\"name1,name2,name3\"`.\n\t *\n\t * Other examples of usage:\n\t *\n\t * ```ts\n\t * // Using a custom function which is the same as the default conversion:\n\t * editor.conversion.for( 'dataDowncast' ).markerToData( {\n\t * \tmodel: 'comment',\n\t * \tview: markerName => ( {\n\t * \t\tgroup: 'comment',\n\t * \t\tname: markerName.substr( 8 ) // Removes 'comment:' part.\n\t * \t} )\n\t * } );\n\t *\n\t * // Using the converter priority:\n\t * editor.conversion.for( 'dataDowncast' ).markerToData( {\n\t * \tmodel: 'comment',\n\t * \tview: markerName => ( {\n\t * \t\tgroup: 'comment',\n\t * \t\tname: markerName.substr( 8 ) // Removes 'comment:' part.\n\t * \t} ),\n\t * \tconverterPriority: 'high'\n\t * } );\n\t * ```\n\t *\n\t * This kind of conversion is useful for saving data into the database, so it should be used in the data conversion pipeline.\n\t *\n\t * See the {@link module:engine/conversion/conversion~Conversion#for `conversion.for()`} API guide to learn how to\n\t * add a converter to the conversion process.\n\t *\n\t * @param config Conversion configuration.\n\t * @param config.model The name of the model marker (or the model marker group) to convert.\n\t * @param config.view A function that takes the model marker name and\n\t * {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi downcast conversion API} as the parameters\n\t * and returns an object with the `group` and `name` properties.\n\t * @param config.converterPriority Converter priority.\n\t */\n\tpublic markerToData( config: {\n\t\tmodel: string;\n\t\tview?: MarkerDataCreatorFunction;\n\t\tconverterPriority?: PriorityString;\n\t} ): this {\n\t\treturn this.add( downcastMarkerToData( config ) );\n\t}\n}\n\n/**\n * Function factory that creates a default downcast converter for text insertion changes.\n *\n * The converter automatically consumes the corresponding value from the consumables list and stops the event (see\n * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher}).\n *\n * ```ts\n * modelDispatcher.on( 'insert:$text', insertText() );\n * ```\n *\n * @returns Insert text event converter.\n */\nexport function insertText() {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: { item: ModelText | ModelTextProxy; range: ModelRange },\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst viewPosition = conversionApi.mapper.toViewPosition( data.range.start );\n\t\tconst viewText = viewWriter.createText( data.item.data );\n\n\t\tviewWriter.insert( viewPosition, viewText );\n\t};\n}\n\n/**\n * Function factory that creates a default downcast converter for triggering attributes and children conversion.\n *\n * @returns The converter.\n */\nexport function insertAttributesAndChildren() {\n\treturn (\n\t\tevt: unknown,\n\t\tdata: { item: ModelItem; reconversion?: boolean },\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\tconversionApi.convertAttributes( data.item );\n\n\t\t// Start converting children of the current item.\n\t\t// In case of reconversion children were already re-inserted or converted separately.\n\t\tif ( !data.reconversion && data.item.is( 'element' ) && !data.item.isEmpty ) {\n\t\t\tconversionApi.convertChildren( data.item );\n\t\t}\n\t};\n}\n\n/**\n * Function factory that creates a default downcast converter for node remove changes.\n *\n * ```ts\n * modelDispatcher.on( 'remove', remove() );\n * ```\n *\n * @returns Remove event converter.\n */\nexport function remove() {\n\treturn (\n\t\tevt: unknown,\n\t\tdata: { position: ModelPosition; length: number },\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\t// Find the view range start position by mapping the model position at which the remove happened.\n\t\tconst viewStart = conversionApi.mapper.toViewPosition( data.position );\n\n\t\tconst modelEnd = data.position.getShiftedBy( data.length );\n\t\tconst viewEnd = conversionApi.mapper.toViewPosition( modelEnd, { isPhantom: true } );\n\n\t\tconst viewRange = conversionApi.writer.createRange( viewStart, viewEnd );\n\n\t\t// Trim the range to remove in case some UI elements are on the view range boundaries.\n\t\tconst removed = conversionApi.writer.remove( viewRange.getTrimmed() );\n\n\t\t// After the range is removed, unbind all view elements from the model.\n\t\t// Range inside view document fragment is used to unbind deeply.\n\t\tfor ( const child of conversionApi.writer.createRangeIn( removed ).getItems() ) {\n\t\t\tconversionApi.mapper.unbindViewElement( child as ViewElement, { defer: true } );\n\t\t}\n\t};\n}\n\n/**\n * Creates a `<span>` {@link module:engine/view/attributeelement~AttributeElement view attribute element} from the information\n * provided by the {@link module:engine/conversion/downcasthelpers~HighlightDescriptor highlight descriptor} object. If the priority\n * is not provided in the descriptor, the default priority will be used.\n */\nexport function createViewElementFromHighlightDescriptor( writer: DowncastWriter, descriptor: HighlightDescriptor ): ViewAttributeElement {\n\tconst viewElement = writer.createAttributeElement( 'span', descriptor.attributes );\n\n\tif ( descriptor.classes ) {\n\t\tviewElement._addClass( descriptor.classes );\n\t}\n\n\tif ( typeof descriptor.priority === 'number' ) {\n\t\t( viewElement as any )._priority = descriptor.priority;\n\t}\n\n\t( viewElement as any )._id = descriptor.id;\n\n\treturn viewElement;\n}\n\n/**\n * Function factory that creates a converter which converts a non-collapsed {@link module:engine/model/selection~Selection model selection}\n * to a {@link module:engine/view/documentselection~DocumentSelection view selection}. The converter consumes appropriate\n * value from the `consumable` object and maps model positions from the selection to view positions.\n *\n * ```ts\n * modelDispatcher.on( 'selection', convertRangeSelection() );\n * ```\n *\n * @returns Selection converter.\n */\nexport function convertRangeSelection() {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: { selection: ModelSelection | ModelDocumentSelection },\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\tconst selection = data.selection;\n\n\t\tif ( selection.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !conversionApi.consumable.consume( selection, 'selection' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewRanges: Array<ViewRange> = [];\n\n\t\tfor ( const range of selection.getRanges() ) {\n\t\t\tviewRanges.push( conversionApi.mapper.toViewRange( range ) );\n\t\t}\n\n\t\tconversionApi.writer.setSelection( viewRanges, { backward: selection.isBackward } );\n\t};\n}\n\n/**\n * Function factory that creates a converter which converts a collapsed {@link module:engine/model/selection~Selection model selection} to\n * a {@link module:engine/view/documentselection~DocumentSelection view selection}. The converter consumes appropriate\n * value from the `consumable` object, maps the model selection position to the view position and breaks\n * {@link module:engine/view/attributeelement~AttributeElement attribute elements} at the selection position.\n *\n * ```ts\n * modelDispatcher.on( 'selection', convertCollapsedSelection() );\n * ```\n *\n * An example of the view state before and after converting the collapsed selection:\n *\n * ```\n * <p><strong>f^oo<strong>bar</p>\n * -> <p><strong>f</strong>^<strong>oo</strong>bar</p>\n * ```\n *\n * By breaking attribute elements like `<strong>`, the selection is in a correct element. Then, when the selection attribute is\n * converted, broken attributes might be merged again, or the position where the selection is may be wrapped\n * with different, appropriate attribute elements.\n *\n * See also {@link module:engine/conversion/downcasthelpers~cleanSelection} which does a clean-up\n * by merging attributes.\n *\n * @returns Selection converter.\n */\nexport function convertCollapsedSelection() {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: { selection: ModelSelection | ModelDocumentSelection },\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\tconst selection = data.selection;\n\n\t\tif ( !selection.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !conversionApi.consumable.consume( selection, 'selection' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst modelPosition = selection.getFirstPosition()!;\n\t\tconst viewPosition = conversionApi.mapper.toViewPosition( modelPosition );\n\t\tconst brokenPosition = viewWriter.breakAttributes( viewPosition );\n\n\t\tviewWriter.setSelection( brokenPosition );\n\t};\n}\n\n/**\n * Function factory that creates a converter which cleans artifacts after the previous\n * {@link module:engine/model/selection~Selection model selection} conversion. It removes all empty\n * {@link module:engine/view/attributeelement~AttributeElement view attribute elements} and merges sibling attributes at all start and end\n * positions of all ranges.\n *\n * ```\n * <p><strong>^</strong></p>\n * -> <p>^</p>\n *\n * <p><strong>foo</strong>^<strong>bar</strong>bar</p>\n * -> <p><strong>foo^bar<strong>bar</p>\n *\n * <p><strong>foo</strong><em>^</em><strong>bar</strong>bar</p>\n * -> <p><strong>foo^bar<strong>bar</p>\n * ```\n *\n * This listener should be assigned before any converter for the new selection:\n *\n * ```ts\n * modelDispatcher.on( 'cleanSelection', cleanSelection() );\n * ```\n *\n * See {@link module:engine/conversion/downcasthelpers~convertCollapsedSelection}\n * which does the opposite by breaking attributes in the selection position.\n *\n * @returns Selection converter.\n */\nexport function cleanSelection() {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: unknown,\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst viewSelection = viewWriter.document.selection;\n\n\t\tfor ( const range of viewSelection.getRanges() ) {\n\t\t\t// Not collapsed selection should not have artifacts.\n\t\t\tif ( range.isCollapsed ) {\n\t\t\t\t// Position might be in the node removed by the view writer.\n\t\t\t\tif ( ( range.end.parent as ViewNode ).isAttached() ) {\n\t\t\t\t\tconversionApi.writer.mergeAttributes( range.start );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tviewWriter.setSelection( null );\n\t};\n}\n\n/**\n * Function factory that creates a converter which converts the set/change/remove attribute changes from the model to the view.\n * It can also be used to convert selection attributes. In that case, an empty attribute element will be created and the\n * selection will be put inside it.\n *\n * Attributes from the model are converted to a view element that will be wrapping these view nodes that are bound to\n * model elements having the given attribute. This is useful for attributes like `bold` that may be set on text nodes in the model\n * but are represented as an element in the view:\n *\n * ```\n * [paragraph] MODEL ====> VIEW <p>\n * \t|- a {bold: true} |- <b>\n * \t|- b {bold: true} | |- ab\n * \t|- c |- c\n * \t```\n *\n * Passed `Function` will be provided with the attribute value and then all the parameters of the\n * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:attribute `attribute` event}.\n * It is expected that the function returns an {@link module:engine/view/element~Element}.\n * The result of the function will be the wrapping element.\n * When the provided `Function` does not return any element, no conversion will take place.\n *\n * The converter automatically consumes the corresponding value from the consumables list and stops the event (see\n * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher}).\n *\n * ```ts\n * modelDispatcher.on( 'attribute:bold', wrap( ( modelAttributeValue, { writer } ) => {\n * \treturn writer.createAttributeElement( 'strong' );\n * } );\n * ```\n *\n * @internal\n * @param elementCreator Function returning a view element that will be used for wrapping.\n * @returns Set/change attribute converter.\n */\nexport function wrap( elementCreator: AttributeElementCreatorFunction ) {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: {\n\t\t\titem: ModelItem | ModelSelection | ModelDocumentSelection;\n\t\t\trange: ModelRange;\n\t\t\tattributeKey: string;\n\t\t\tattributeOldValue: unknown;\n\t\t\tattributeNewValue: unknown;\n\t\t},\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\tif ( !conversionApi.consumable.test( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Recreate current wrapping node. It will be used to unwrap view range if the attribute value has changed\n\t\t// or the attribute was removed.\n\t\tconst oldViewElement = elementCreator( data.attributeOldValue, conversionApi, data );\n\n\t\t// Create node to wrap with.\n\t\tconst newViewElement = elementCreator( data.attributeNewValue, conversionApi, data );\n\n\t\tif ( !oldViewElement && !newViewElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconversionApi.consumable.consume( data.item, evt.name );\n\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst viewSelection = viewWriter.document.selection;\n\n\t\tif ( data.item instanceof ModelSelection || data.item instanceof ModelDocumentSelection ) {\n\t\t\t// Selection attribute conversion.\n\t\t\tviewWriter.wrap( viewSelection.getFirstRange()!, newViewElement! );\n\t\t} else {\n\t\t\t// Node attribute conversion.\n\t\t\tlet viewRange = conversionApi.mapper.toViewRange( data.range );\n\n\t\t\t// First, unwrap the range from current wrapper.\n\t\t\tif ( data.attributeOldValue !== null && oldViewElement ) {\n\t\t\t\tviewRange = viewWriter.unwrap( viewRange, oldViewElement );\n\t\t\t}\n\n\t\t\tif ( data.attributeNewValue !== null && newViewElement ) {\n\t\t\t\tviewWriter.wrap( viewRange, newViewElement );\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * Function factory that creates a converter which converts node insertion changes from the model to the view.\n * The function passed will be provided with all the parameters of the dispatcher's\n * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:insert `insert` event}.\n * It is expected that the function returns an {@link module:engine/view/element~Element}.\n * The result of the function will be inserted into the view.\n *\n * The converter automatically consumes the corresponding value from the consumables list and binds the model and view elements.\n *\n * ```ts\n * downcastDispatcher.on(\n * \t'insert:myElem',\n * \tinsertElement( ( modelItem, { writer } ) => {\n * \t\tconst text = writer.createText( 'myText' );\n * \t\tconst myElem = writer.createElement( 'myElem', { myAttr: 'my-' + modelItem.getAttribute( 'myAttr' ) }, text );\n *\n * \t\t// Do something fancy with `myElem` using `modelItem` or other parameters.\n *\n * \t\treturn myElem;\n * \t}\n * ) );\n * ```\n *\n * @internal\n * @param elementCreator Function returning a view element, which will be inserted.\n * @param consumer Function defining element consumption process.\n * By default this function just consume passed item insertion.\n * @returns Insert element event converter.\n */\nexport function insertElement( elementCreator: ElementCreatorFunction, consumer: ConsumerFunction = defaultConsumer ) {\n\treturn (\n\t\tevt: unknown,\n\t\tdata: { item: ModelElement; range: ModelRange; reconversion?: boolean },\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\tif ( !consumer( data.item, conversionApi.consumable, { preflight: true } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewElement = elementCreator( data.item, conversionApi, data );\n\n\t\tif ( !viewElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Consume an element insertion and all present attributes that are specified as a reconversion triggers.\n\t\tconsumer( data.item, conversionApi.consumable );\n\n\t\tconst viewPosition = conversionApi.mapper.toViewPosition( data.range.start );\n\n\t\tconversionApi.mapper.bindElements( data.item, viewElement );\n\t\tconversionApi.writer.insert( viewPosition, viewElement );\n\n\t\t// Convert attributes before converting children.\n\t\tconversionApi.convertAttributes( data.item );\n\n\t\t// Convert children or reinsert previous view elements.\n\t\treinsertOrConvertNodes( viewElement, data.item.getChildren(), conversionApi, { reconversion: data.reconversion } );\n\t};\n}\n\n/**\n * Function factory that creates a converter which converts a single model node insertion to a view structure.\n *\n * It is expected that the passed element creator function returns an {@link module:engine/view/element~Element} with attached slots\n * created with `writer.createSlot()` to indicate where child nodes should be converted.\n *\n * @see module:engine/conversion/downcasthelpers~DowncastHelpers#elementToStructure\n *\n * @internal\n * @param elementCreator Function returning a view structure, which will be inserted.\n * @param consumer A callback that is expected to consume all the consumables\n * that were used by the element creator.\n * @returns Insert element event converter.\n*/\nexport function insertStructure( elementCreator: StructureCreatorFunction, consumer: ConsumerFunction ) {\n\treturn (\n\t\tevt: unknown,\n\t\tdata: { item: ModelElement; range: ModelRange; reconversion?: boolean },\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\tif ( !consumer( data.item, conversionApi.consumable, { preflight: true } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst slotsMap = new Map<ViewElement, Array<ModelNode>>();\n\n\t\tconversionApi.writer._registerSlotFactory( createSlotFactory( data.item, slotsMap, conversionApi ) );\n\n\t\t// View creation.\n\t\tconst viewElement = elementCreator( data.item, conversionApi, data );\n\n\t\tconversionApi.writer._clearSlotFactory();\n\n\t\tif ( !viewElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if all children are covered by slots and there is no child that landed in multiple slots.\n\t\tvalidateSlotsChildren( data.item, slotsMap, conversionApi );\n\n\t\t// Consume an element insertion and all present attributes that are specified as a reconversion triggers.\n\t\tconsumer( data.item, conversionApi.consumable );\n\n\t\tconst viewPosition = conversionApi.mapper.toViewPosition( data.range.start );\n\n\t\tconversionApi.mapper.bindElements( data.item, viewElement );\n\t\tconversionApi.writer.insert( viewPosition, viewElement );\n\n\t\t// Convert attributes before converting children.\n\t\tconversionApi.convertAttributes( data.item );\n\n\t\t// Fill view slots with previous view elements or create new ones.\n\t\tfillSlots( viewElement, slotsMap, conversionApi, { reconversion: data.reconversion } );\n\t};\n}\n\n/**\n * Function factory that creates a converter which converts marker adding change to the\n * {@link module:engine/view/uielement~UIElement view UI element}.\n *\n * The view UI element that will be added to the view depends on the passed parameter. See {@link ~insertElement}.\n * In case of a non-collapsed range, the UI element will not wrap nodes but separate elements will be placed at the beginning\n * and at the end of the range.\n *\n * This converter binds created UI elements with the marker name using {@link module:engine/conversion/mapper~Mapper#bindElementToMarker}.\n *\n * @internal\n * @param elementCreator A view UI element or a function returning the view element that will be inserted.\n * @returns Insert element event converter.\n */\nexport function insertUIElement( elementCreator: MarkerElementCreatorFunction ) {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: {\n\t\t\tmarkerRange: ModelRange;\n\t\t\tmarkerName: string;\n\t\t\tisOpening?: boolean;\n\t\t},\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\t// Create two view elements. One will be inserted at the beginning of marker, one at the end.\n\t\t// If marker is collapsed, only \"opening\" element will be inserted.\n\t\tdata.isOpening = true;\n\t\tconst viewStartElement = elementCreator( data, conversionApi );\n\n\t\tdata.isOpening = false;\n\t\tconst viewEndElement = elementCreator( data, conversionApi );\n\n\t\tif ( !viewStartElement || !viewEndElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst markerRange = data.markerRange;\n\n\t\t// Marker that is collapsed has consumable build differently that non-collapsed one.\n\t\t// For more information see `addMarker` event description.\n\t\t// If marker's range is collapsed - check if it can be consumed.\n\t\tif ( markerRange.isCollapsed && !conversionApi.consumable.consume( markerRange, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If marker's range is not collapsed - consume all items inside.\n\t\tfor ( const value of markerRange ) {\n\t\t\tif ( !conversionApi.consumable.consume( value.item, evt.name ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst mapper = conversionApi.mapper;\n\t\tconst viewWriter = conversionApi.writer;\n\n\t\t// Add \"opening\" element.\n\t\tviewWriter.insert( mapper.toViewPosition( markerRange.start ), viewStartElement );\n\t\tconversionApi.mapper.bindElementToMarker( viewStartElement, data.markerName );\n\n\t\t// Add \"closing\" element only if range is not collapsed.\n\t\tif ( !markerRange.isCollapsed ) {\n\t\t\tviewWriter.insert( mapper.toViewPosition( markerRange.end ), viewEndElement );\n\t\t\tconversionApi.mapper.bindElementToMarker( viewEndElement, data.markerName );\n\t\t}\n\n\t\tevt.stop();\n\t};\n}\n\n/**\n * Function factory that returns a default downcast converter for removing a {@link module:engine/view/uielement~UIElement UI element}\n * based on marker remove change.\n *\n * This converter unbinds elements from the marker name.\n *\n * @returns Removed UI element converter.\n */\nfunction removeUIElement() {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: { markerName: string },\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\tconst elements = conversionApi.mapper.markerNameToElements( data.markerName );\n\n\t\tif ( !elements ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( const element of elements ) {\n\t\t\tconversionApi.mapper.unbindElementFromMarkerName( element, data.markerName );\n\t\t\tconversionApi.writer.clear( conversionApi.writer.createRangeOn( element ), element );\n\t\t}\n\n\t\tconversionApi.writer.clearClonedElementsGroup( data.markerName );\n\n\t\tevt.stop();\n\t};\n}\n\n/**\n * Function factory that creates a default converter for model markers.\n *\n * See {@link DowncastHelpers#markerToData} for more information what type of view is generated.\n *\n * This converter binds created UI elements and affected view elements with the marker name\n * using {@link module:engine/conversion/mapper~Mapper#bindElementToMarker}.\n *\n * @returns Add marker converter.\n */\nfunction insertMarkerData( viewCreator: MarkerDataCreatorFunction ) {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: {\n\t\t\tmarkerName: string;\n\t\t\tmarkerRange: ModelRange;\n\t\t},\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\tconst viewMarkerData = viewCreator( data.markerName, conversionApi );\n\n\t\tif ( !viewMarkerData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst markerRange = data.markerRange;\n\n\t\tif ( !conversionApi.consumable.consume( markerRange, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Adding closing data first to keep the proper order in the view.\n\t\thandleMarkerBoundary( markerRange, false, conversionApi, data, viewMarkerData );\n\t\thandleMarkerBoundary( markerRange, true, conversionApi, data, viewMarkerData );\n\n\t\tevt.stop();\n\t};\n}\n\n/**\n * Helper function for `insertMarkerData()` that marks a marker boundary at the beginning or end of given `range`.\n */\nfunction handleMarkerBoundary(\n\trange: ModelRange,\n\tisStart: boolean,\n\tconversionApi: DowncastConversionApi,\n\tdata: { markerName: string },\n\tviewMarkerData: { name: string; group: string }\n): void {\n\tconst modelPosition = isStart ? range.start : range.end;\n\tconst elementAfter = modelPosition.nodeAfter && modelPosition.nodeAfter.is( 'element' ) ? modelPosition.nodeAfter : null;\n\tconst elementBefore = modelPosition.nodeBefore && modelPosition.nodeBefore.is( 'element' ) ? modelPosition.nodeBefore : null;\n\n\tif ( elementAfter || elementBefore ) {\n\t\tlet modelElement;\n\t\tlet isBefore;\n\n\t\t// If possible, we want to add `data-group-start-before` and `data-group-end-after` attributes.\n\t\tif ( isStart && elementAfter || !isStart && !elementBefore ) {\n\t\t\t// [<elementAfter>...</elementAfter> -> <elementAfter data-group-start-before=\"...\">...</elementAfter>\n\t\t\t// <parent>]<elementAfter> -> <parent><elementAfter data-group-end-before=\"...\">\n\t\t\tmodelElement = elementAfter;\n\t\t\tisBefore = true;\n\t\t} else {\n\t\t\t// <elementBefore>...</elementBefore>] -> <elementBefore data-group-end-after=\"...\">...</elementBefore>\n\t\t\t// </elementBefore>[</parent> -> </elementBefore data-group-start-after=\"...\"></parent>\n\t\t\tmodelElement = elementBefore;\n\t\t\tisBefore = false;\n\t\t}\n\n\t\tconst viewElement = conversionApi.mapper.toViewElement( modelElement! );\n\n\t\t// In rare circumstances, the model element may be not mapped to any view element and that would cause an error.\n\t\t// One of those situations is a soft break inside code block.\n\t\tif ( viewElement ) {\n\t\t\tinsertMarkerAsAttribute( viewElement, isStart, isBefore, conversionApi, data, viewMarkerData );\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\tconst viewPosition = conversionApi.mapper.toViewPosition( modelPosition );\n\n\tinsertMarkerAsElement( viewPosition, isStart, conversionApi, data, viewMarkerData );\n}\n\n/**\n * Helper function for `insertMarkerData()` that marks a marker boundary in the view as an attribute on a view element.\n */\nfunction insertMarkerAsAttribute(\n\tviewElement: ViewElement,\n\tisStart: boolean,\n\tisBefore: boolean,\n\tconversionApi: DowncastConversionApi,\n\tdata: { markerName: string },\n\tviewMarkerData: { name: string; group: string }\n) {\n\tconst attributeName = `data-${ viewMarkerData.group }-${ isStart ? 'start' : 'end' }-${ isBefore ? 'before' : 'after' }`;\n\n\tconst markerNames = viewElement.hasAttribute( attributeName ) ? viewElement.getAttribute( attributeName )!.split( ',' ) : [];\n\n\t// Adding marker name at the beginning to have the same order in the attribute as there is with marker elements.\n\tmarkerNames.unshift( viewMarkerData.name );\n\n\tconversionApi.writer.setAttribute( attributeName, markerNames.join( ',' ), viewElement );\n\tconversionApi.mapper.bindElementToMarker( viewElement, data.markerName );\n}\n\n/**\n * Helper function for `insertMarkerData()` that marks a marker boundary in the view as a separate view ui element.\n */\nfunction insertMarkerAsElement(\n\tposition: ViewPosition,\n\tisStart: boolean,\n\tconversionApi: DowncastConversionApi,\n\tdata: { markerName: string },\n\tviewMarkerData: { name: string; group: string }\n) {\n\tconst viewElementName = `${ viewMarkerData.group }-${ isStart ? 'start' : 'end' }`;\n\n\tconst attrs = viewMarkerData.name ? { 'name': viewMarkerData.name } : null;\n\tconst viewElement = conversionApi.writer.createUIElement( viewElementName, attrs );\n\n\tconversionApi.writer.insert( position, viewElement );\n\tconversionApi.mapper.bindElementToMarker( viewElement, data.markerName );\n}\n\n/**\n * Function factory that creates a converter for removing a model marker data added by the {@link #insertMarkerData} converter.\n *\n * @returns Remove marker converter.\n */\nfunction removeMarkerData( viewCreator: MarkerDataCreatorFunction ) {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: { markerName: string },\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\tconst viewData = viewCreator( data.markerName, conversionApi );\n\n\t\tif ( !viewData ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst elements = conversionApi.mapper.markerNameToElements( data.markerName );\n\n\t\tif ( !elements ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( const element of elements ) {\n\t\t\tconversionApi.mapper.unbindElementFromMarkerName( element, data.markerName );\n\n\t\t\tif ( element.is( 'containerElement' ) ) {\n\t\t\t\tremoveMarkerFromAttribute( `data-${ viewData.group }-start-before`, element );\n\t\t\t\tremoveMarkerFromAttribute( `data-${ viewData.group }-start-after`, element );\n\t\t\t\tremoveMarkerFromAttribute( `data-${ viewData.group }-end-before`, element );\n\t\t\t\tremoveMarkerFromAttribute( `data-${ viewData.group }-end-after`, element );\n\t\t\t} else {\n\t\t\t\tconversionApi.writer.clear( conversionApi.writer.createRangeOn( element ), element );\n\t\t\t}\n\t\t}\n\n\t\tconversionApi.writer.clearClonedElementsGroup( data.markerName );\n\n\t\tevt.stop();\n\n\t\tfunction removeMarkerFromAttribute( attributeName: string, element: ViewElement ): void {\n\t\t\tif ( element.hasAttribute( attributeName ) ) {\n\t\t\t\tconst markerNames = new Set( element.getAttribute( attributeName )!.split( ',' ) );\n\n\t\t\t\tmarkerNames.delete( viewData!.name );\n\n\t\t\t\tif ( markerNames.size == 0 ) {\n\t\t\t\t\tconversionApi.writer.removeAttribute( attributeName, element );\n\t\t\t\t} else {\n\t\t\t\t\tconversionApi.writer.setAttribute( attributeName, Array.from( markerNames ).join( ',' ), element );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * Function factory that creates a converter which converts the set/change/remove attribute changes from the model to the view.\n *\n * Attributes from the model are converted to the view element attributes in the view. You may provide a custom function to generate\n * a key-value attribute pair to add/change/remove. If not provided, model attributes will be converted to view element\n * attributes on a one-to-one basis.\n *\n * *Note:** The provided attribute creator should always return the same `key` for a given attribute from the model.\n *\n * The converter automatically consumes the corresponding value from the consumables list and stops the event (see\n * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher}).\n *\n * ```ts\n * modelDispatcher.on( 'attribute:customAttr:myElem', changeAttribute( ( value, data ) => {\n * \t// Change attribute key from `customAttr` to `class` in the view.\n * \tconst key = 'class';\n * \tlet value = data.attributeNewValue;\n *\n * \t// Force attribute value to 'empty' if the model element is empty.\n * \tif ( data.item.childCount === 0 ) {\n * \t\tvalue = 'empty';\n * \t}\n *\n * \t// Return the key-value pair.\n * \treturn { key, value };\n * } ) );\n * ```\n *\n * @param attributeCreator Function returning an object with two properties: `key` and `value`, which\n * represent the attribute key and attribute value to be set on a {@link module:engine/view/element~Element view element}.\n * The function is passed the model attribute value as the first parameter and additional data about the change as the second parameter.\n * @returns Set/change attribute converter.\n */\nfunction changeAttribute( attributeCreator: AttributeCreatorFunction ) {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: {\n\t\t\titem: ModelElement;\n\t\t\trange: ModelRange;\n\t\t\tattributeKey: string;\n\t\t\tattributeOldValue: unknown;\n\t\t\tattributeNewValue: unknown;\n\t\t},\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\tif ( !conversionApi.consumable.test( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst oldAttribute = attributeCreator( data.attributeOldValue, conversionApi, data );\n\t\tconst newAttribute = attributeCreator( data.attributeNewValue, conversionApi, data );\n\n\t\tif ( !oldAttribute && !newAttribute ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconversionApi.consumable.consume( data.item, evt.name );\n\n\t\tconst viewElement = conversionApi.mapper.toViewElement( data.item );\n\t\tconst viewWriter = conversionApi.writer;\n\n\t\t// If model item cannot be mapped to a view element, it means item is not an `Element` instance but a `TextProxy` node.\n\t\t// Only elements can have attributes in a view so do not proceed for anything else (#1587).\n\t\tif ( !viewElement ) {\n\t\t\t/**\n\t\t\t * This error occurs when a {@link module:engine/model/textproxy~TextProxy text node's} attribute is to be downcasted\n\t\t\t * by an {@link module:engine/conversion/conversion~Conversion#attributeToAttribute `Attribute to Attribute converter`}.\n\t\t\t * In most cases it is caused by converters misconfiguration when only \"generic\" converter is defined:\n\t\t\t *\n\t\t\t * ```ts\n\t\t\t * editor.conversion.for( 'downcast' ).attributeToAttribute( {\n\t\t\t * \tmodel: 'attribute-name',\n\t\t\t * \tview: 'attribute-name'\n\t\t\t * } ) );\n\t\t\t * ```\n\t\t\t *\n\t\t\t * and given attribute is used on text node, for example:\n\t\t\t *\n\t\t\t * ```ts\n\t\t\t * model.change( writer => {\n\t\t\t * \twriter.insertText( 'Foo', { 'attribute-name': 'bar' }, parent, 0 );\n\t\t\t * } );\n\t\t\t * ```\n\t\t\t *\n\t\t\t * In such cases, to convert the same attribute for both {@link module:engine/model/element~Element}\n\t\t\t * and {@link module:engine/model/textproxy~TextProxy `Text`} nodes, text specific\n\t\t\t * {@link module:engine/conversion/conversion~Conversion#attributeToElement `Attribute to Element converter`}\n\t\t\t * with higher {@link module:utils/priorities~PriorityString priority} must also be defined:\n\t\t\t *\n\t\t\t * ```ts\n\t\t\t * editor.conversion.for( 'downcast' ).attributeToElement( {\n\t\t\t * \tmodel: {\n\t\t\t * \t\tkey: 'attribute-name',\n\t\t\t * \t\tname: '$text'\n\t\t\t * \t},\n\t\t\t * \tview: ( value, { writer } ) => {\n\t\t\t * \t\treturn writer.createAttributeElement( 'span', { 'attribute-name': value } );\n\t\t\t * \t},\n\t\t\t * \tconverterPriority: 'high'\n\t\t\t * } ) );\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @error conversion-attribute-to-attribute-on-text\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'conversion-attribute-to-attribute-on-text', conversionApi.dispatcher, data );\n\t\t}\n\n\t\t// First remove the old attribute if there was one.\n\t\tif ( data.attributeOldValue !== null && oldAttribute ) {\n\t\t\tif ( oldAttribute.key == 'class' ) {\n\t\t\t\tconst classes = toArray( oldAttribute.value );\n\n\t\t\t\tfor ( const className of classes ) {\n\t\t\t\t\tviewWriter.removeClass( className, viewElement );\n\t\t\t\t}\n\t\t\t} else if ( oldAttribute.key == 'style' ) {\n\t\t\t\tconst keys = Object.keys( oldAttribute.value );\n\n\t\t\t\tfor ( const key of keys ) {\n\t\t\t\t\tviewWriter.removeStyle( key, viewElement );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tviewWriter.removeAttribute( oldAttribute.key, viewElement );\n\t\t\t}\n\t\t}\n\n\t\t// Then set the new attribute.\n\t\tif ( data.attributeNewValue !== null && newAttribute ) {\n\t\t\tif ( newAttribute.key == 'class' ) {\n\t\t\t\tconst classes = toArray( newAttribute.value );\n\n\t\t\t\tfor ( const className of classes ) {\n\t\t\t\t\tviewWriter.addClass( className, viewElement );\n\t\t\t\t}\n\t\t\t} else if ( newAttribute.key == 'style' ) {\n\t\t\t\tconst keys = Object.keys( newAttribute.value );\n\n\t\t\t\tfor ( const key of keys ) {\n\t\t\t\t\tviewWriter.setStyle( key, ( newAttribute.value as Record<string, string> )[ key ], viewElement );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tviewWriter.setAttribute( newAttribute.key, newAttribute.value as string, viewElement );\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * Function factory that creates a converter which converts the text inside marker's range. The converter wraps the text with\n * {@link module:engine/view/attributeelement~AttributeElement} created from the provided descriptor.\n * See {link module:engine/conversion/downcasthelpers~createViewElementFromHighlightDescriptor}.\n *\n * It can also be used to convert the selection that is inside a marker. In that case, an empty attribute element will be\n * created and the selection will be put inside it.\n *\n * If the highlight descriptor does not provide the `priority` property, `10` will be used.\n *\n * If the highlight descriptor does not provide the `id` property, the name of the marker will be used.\n *\n * This converter binds the created {@link module:engine/view/attributeelement~AttributeElement attribute elemens} with the marker name\n * using the {@link module:engine/conversion/mapper~Mapper#bindElementToMarker} method.\n */\nfunction highlightText( highlightDescriptor: HighlightDescriptor | HighlightDescriptorCreatorFunction ) {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: {\n\t\t\titem?: ModelItem | ModelSelection | ModelDocumentSelection;\n\t\t\trange?: ModelRange;\n\t\t\tmarkerRange: ModelRange;\n\t\t\tmarkerName: string;\n\t\t},\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\tif ( !data.item ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !( data.item instanceof ModelSelection || data.item instanceof ModelDocumentSelection ) && !data.item.is( '$textProxy' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst descriptor = prepareDescriptor( highlightDescriptor, data, conversionApi );\n\n\t\tif ( !descriptor ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst viewElement = createViewElementFromHighlightDescriptor( viewWriter, descriptor );\n\t\tconst viewSelection = viewWriter.document.selection;\n\n\t\tif ( data.item instanceof ModelSelection || data.item instanceof ModelDocumentSelection ) {\n\t\t\tviewWriter.wrap( viewSelection.getFirstRange()!, viewElement );\n\t\t} else {\n\t\t\tconst viewRange = conversionApi.mapper.toViewRange( data.range! );\n\t\t\tconst rangeAfterWrap = viewWriter.wrap( viewRange, viewElement );\n\n\t\t\tfor ( const element of rangeAfterWrap.getItems() ) {\n\t\t\t\tif ( element.is( 'attributeElement' ) && element.isSimilar( viewElement ) ) {\n\t\t\t\t\tconversionApi.mapper.bindElementToMarker( element, data.markerName );\n\n\t\t\t\t\t// One attribute element is enough, because all of them are bound together by the view writer.\n\t\t\t\t\t// Mapper uses this binding to get all the elements no matter how many of them are registered in the mapper.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * Converter function factory. It creates a function which applies the marker's highlight to an element inside the marker's range.\n *\n * The converter checks if an element has the `addHighlight` function stored as a\n * {@link module:engine/view/element~Element#_setCustomProperty custom property} and, if so, uses it to apply the highlight.\n * In such case the converter will consume all element's children, assuming that they were handled by the element itself.\n *\n * When the `addHighlight` custom property is not present, the element is not converted in any special way.\n * This means that converters will proceed to convert the element's child nodes.\n *\n * If the highlight descriptor does not provide the `priority` property, `10` will be used.\n *\n * If the highlight descriptor does not provide the `id` property, the name of the marker will be used.\n *\n * This converter binds altered {@link module:engine/view/containerelement~ContainerElement container elements} with the marker name using\n * the {@link module:engine/conversion/mapper~Mapper#bindElementToMarker} method.\n */\nfunction highlightElement( highlightDescriptor: HighlightDescriptor | HighlightDescriptorCreatorFunction ) {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: {\n\t\t\titem?: ModelItem | ModelSelection | ModelDocumentSelection;\n\t\t\tmarkerName: string;\n\t\t\tmarkerRange: ModelRange;\n\t\t},\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\tif ( !data.item ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !( data.item instanceof ModelElement ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst descriptor = prepareDescriptor( highlightDescriptor, data, conversionApi );\n\n\t\tif ( !descriptor ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !conversionApi.consumable.test( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewElement = conversionApi.mapper.toViewElement( data.item );\n\n\t\tif ( viewElement && viewElement.getCustomProperty( 'addHighlight' ) ) {\n\t\t\t// Consume element itself.\n\t\t\tconversionApi.consumable.consume( data.item, evt.name );\n\n\t\t\t// Consume all children nodes.\n\t\t\tfor ( const value of ModelRange._createIn( data.item ) ) {\n\t\t\t\tconversionApi.consumable.consume( value.item, evt.name );\n\t\t\t}\n\n\t\t\tconst addHighlightCallback = viewElement.getCustomProperty( 'addHighlight' ) as AddHighlightCallback;\n\n\t\t\taddHighlightCallback( viewElement, descriptor, conversionApi.writer );\n\n\t\t\tconversionApi.mapper.bindElementToMarker( viewElement, data.markerName );\n\t\t}\n\t};\n}\n\n/**\n * Function factory that creates a converter which converts the removing model marker to the view.\n *\n * Both text nodes and elements are handled by this converter but they are handled a bit differently.\n *\n * Text nodes are unwrapped using the {@link module:engine/view/attributeelement~AttributeElement attribute element} created from the\n * provided highlight descriptor. See {link module:engine/conversion/downcasthelpers~HighlightDescriptor}.\n *\n * For elements, the converter checks if an element has the `removeHighlight` function stored as a\n * {@link module:engine/view/element~Element#_setCustomProperty custom property}. If so, it uses it to remove the highlight.\n * In such case, the children of that element will not be converted.\n *\n * When `removeHighlight` is not present, the element is not converted in any special way.\n * The converter will proceed to convert the element's child nodes instead.\n *\n * If the highlight descriptor does not provide the `priority` property, `10` will be used.\n *\n * If the highlight descriptor does not provide the `id` property, the name of the marker will be used.\n *\n * This converter unbinds elements from the marker name.\n */\nfunction removeHighlight( highlightDescriptor: HighlightDescriptor | HighlightDescriptorCreatorFunction ) {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: {\n\t\t\tmarkerName: string;\n\t\t\tmarkerRange: ModelRange;\n\t\t},\n\t\tconversionApi: DowncastConversionApi\n\t): void => {\n\t\t// This conversion makes sense only for non-collapsed range.\n\t\tif ( data.markerRange.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst descriptor = prepareDescriptor( highlightDescriptor, data, conversionApi );\n\n\t\tif ( !descriptor ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// View element that will be used to unwrap `AttributeElement`s.\n\t\tconst viewHighlightElement = createViewElementFromHighlightDescriptor( conversionApi.writer, descriptor );\n\n\t\t// Get all elements bound with given marker name.\n\t\tconst elements = conversionApi.mapper.markerNameToElements( data.markerName );\n\n\t\tif ( !elements ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( const element of elements ) {\n\t\t\tconversionApi.mapper.unbindElementFromMarkerName( element, data.markerName );\n\n\t\t\tif ( element.is( 'attributeElement' ) ) {\n\t\t\t\tconversionApi.writer.unwrap( conversionApi.writer.createRangeOn( element ), viewHighlightElement );\n\t\t\t} else {\n\t\t\t\t// if element.is( 'containerElement' ).\n\t\t\t\tconst removeHighlightCallback = element.getCustomProperty( 'removeHighlight' ) as RemoveHighlightCallback;\n\n\t\t\t\tremoveHighlightCallback( element, descriptor.id!, conversionApi.writer );\n\t\t\t}\n\t\t}\n\n\t\tconversionApi.writer.clearClonedElementsGroup( data.markerName );\n\n\t\tevt.stop();\n\t};\n}\n\n/**\n * Model element to view element conversion helper.\n *\n * See {@link ~DowncastHelpers#elementToElement `.elementToElement()` downcast helper} for examples and config params description.\n *\n * @param config Conversion configuration.\n * @param config.model The description or a name of the model element to convert.\n * @param config.model.attributes List of attributes triggering element reconversion.\n * @param config.model.children Should reconvert element if the list of model child nodes changed.\n * @returns Conversion helper.\n */\nfunction downcastElementToElement( config: {\n\tmodel: string | {\n\t\tname: string;\n\t\tattributes?: string | Array<string>;\n\t\tchildren?: boolean;\n\t};\n\tview: ElementDefinition | ElementCreatorFunction;\n\tconverterPriority?: PriorityString;\n} ) {\n\tconst model = normalizeModelElementConfig( config.model );\n\tconst view = normalizeToElementConfig( config.view, 'container' );\n\n\t// Trigger reconversion on children list change if element is a subject to any reconversion.\n\t// This is required to be able to trigger Differ#refreshItem() on a direct child of the reconverted element.\n\tif ( model.attributes.length ) {\n\t\tmodel.children = true;\n\t}\n\n\treturn ( dispatcher: DowncastDispatcher ) => {\n\t\tdispatcher.on<DowncastInsertEvent<ModelElement>>(\n\t\t\t`insert:${ model.name }`,\n\t\t\tinsertElement( view, createConsumer( model ) ),\n\t\t\t{ priority: config.converterPriority || 'normal' }\n\t\t);\n\n\t\tif ( model.children || model.attributes.length ) {\n\t\t\tdispatcher.on<DowncastReduceChangesEvent>( 'reduceChanges', createChangeReducer( model ), { priority: 'low' } );\n\t\t}\n\t};\n}\n\n/**\n * Model element to view structure conversion helper.\n *\n * See {@link ~DowncastHelpers#elementToStructure `.elementToStructure()` downcast helper} for examples and config params description.\n *\n * @param config Conversion configuration.\n * @returns Conversion helper.\n */\nfunction downcastElementToStructure(\n\tconfig: {\n\t\tmodel: string | {\n\t\t\tname: string;\n\t\t\tattributes?: string | Array<string>;\n\t\t};\n\t\tview: StructureCreatorFunction;\n\t\tconverterPriority?: PriorityString;\n\t}\n) {\n\tconst model = normalizeModelElementConfig( config.model );\n\tconst view = normalizeToElementConfig( config.view, 'container' );\n\n\t// Trigger reconversion on children list change because it always needs to use slots to put children in proper places.\n\t// This is required to be able to trigger Differ#refreshItem() on a direct child of the reconverted element.\n\tmodel.children = true;\n\n\treturn ( dispatcher: DowncastDispatcher ) => {\n\t\tif ( dispatcher._conversionApi.schema.checkChild( model.name, '$text' ) ) {\n\t\t\t/**\n\t\t\t * This error occurs when a {@link module:engine/model/element~Element model element} is downcasted\n\t\t\t * via {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToStructure} helper but the element was\n\t\t\t * allowed to host `$text` by the {@link module:engine/model/schema~Schema model schema}.\n\t\t\t *\n\t\t\t * For instance, this may be the result of `myElement` allowing the content of\n\t\t\t * {@glink framework/deep-dive/schema#generic-items `$block`} in its schema definition:\n\t\t\t *\n\t\t\t * ```ts\n\t\t\t * // Element definition in schema.\n\t\t\t * schema.register( 'myElement', {\n\t\t\t * \tallowContentOf: '$block',\n\t\t\t *\n\t\t\t * \t// ...\n\t\t\t * } );\n\t\t\t *\n\t\t\t * // ...\n\t\t\t *\n\t\t\t * // Conversion of myElement with the use of elementToStructure().\n\t\t\t * editor.conversion.for( 'downcast' ).elementToStructure( {\n\t\t\t * \tmodel: 'myElement',\n\t\t\t * \tview: ( modelElement, { writer } ) => {\n\t\t\t * \t\t// ...\n\t\t\t * \t}\n\t\t\t * } );\n\t\t\t * ```\n\t\t\t *\n\t\t\t * In such case, {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`} helper\n\t\t\t * can be used instead to get around this problem:\n\t\t\t *\n\t\t\t * ```ts\n\t\t\t * editor.conversion.for( 'downcast' ).elementToElement( {\n\t\t\t * \tmodel: 'myElement',\n\t\t\t * \tview: ( modelElement, { writer } ) => {\n\t\t\t * \t\t// ...\n\t\t\t * \t}\n\t\t\t * } );\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @error conversion-element-to-structure-disallowed-text\n\t\t\t * @param {String} elementName The name of the element the structure is to be created for.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'conversion-element-to-structure-disallowed-text', dispatcher, { elementName: model.name } );\n\t\t}\n\n\t\tdispatcher.on<DowncastInsertEvent<ModelElement>>(\n\t\t\t`insert:${ model.name }`,\n\t\t\tinsertStructure( view, createConsumer( model ) ),\n\t\t\t{ priority: config.converterPriority || 'normal' }\n\t\t);\n\n\t\tdispatcher.on<DowncastReduceChangesEvent>( 'reduceChanges', createChangeReducer( model ), { priority: 'low' } );\n\t};\n}\n\n/**\n * Model attribute to view element conversion helper.\n *\n * See {@link ~DowncastHelpers#attributeToElement `.attributeToElement()` downcast helper} for examples.\n *\n * @param config Conversion configuration.\n * @param config.model The key of the attribute to convert from or a `{ key, values }` object. `values` is an array\n * of `String`s with possible values if the model attribute is an enumerable.\n * @param config.view A view element definition or a function that takes the model attribute value and\n * {@link module:engine/view/downcastwriter~DowncastWriter view downcast writer} as parameters and returns a view attribute element.\n * If `config.model.values` is given, `config.view` should be an object assigning values from `config.model.values` to view element\n * definitions or functions.\n * @param config.converterPriority Converter priority.\n * @returns Conversion helper.\n */\nfunction downcastAttributeToElement( config: {\n\tmodel: string | {\n\t\tkey: string;\n\t\tname?: string;\n\t\tvalues?: Array<string>;\n\t};\n\tview: ElementDefinition | AttributeElementCreatorFunction | Record<string, ElementDefinition | AttributeElementCreatorFunction>;\n\tconverterPriority?: PriorityString;\n} ) {\n\tconfig = cloneDeep( config );\n\n\tlet model = config.model;\n\n\tif ( typeof model == 'string' ) {\n\t\tmodel = { key: model };\n\t}\n\n\tlet eventName = `attribute:${ model.key }` as const;\n\n\tif ( model.name ) {\n\t\teventName += ':' + model.name;\n\t}\n\n\tif ( model.values ) {\n\t\tfor ( const modelValue of model.values ) {\n\t\t\t( config.view as any )[ modelValue ] = normalizeToElementConfig( ( config.view as any )[ modelValue ], 'attribute' );\n\t\t}\n\t} else {\n\t\tconfig.view = normalizeToElementConfig( config.view as any, 'attribute' );\n\t}\n\n\tconst elementCreator = getFromAttributeCreator<AttributeElementCreatorFunction>( config );\n\n\treturn ( dispatcher: DowncastDispatcher ) => {\n\t\tdispatcher.on<DowncastAttributeEvent>(\n\t\t\teventName,\n\t\t\twrap( elementCreator ),\n\t\t\t{ priority: config.converterPriority || 'normal' }\n\t\t);\n\t};\n}\n\n/**\n * Model attribute to view attribute conversion helper.\n *\n * See {@link ~DowncastHelpers#attributeToAttribute `.attributeToAttribute()` downcast helper} for examples.\n *\n * @param config Conversion configuration.\n * @param config.model The key of the attribute to convert from or a `{ key, values, [ name ] }` object describing\n * the attribute key, possible values and, optionally, an element name to convert from.\n * @param config.view A view attribute key, or a `{ key, value }` object or a function that takes the model attribute value and returns\n * a `{ key, value }` object.\n * If `key` is `'class'`, `value` can be a `String` or an array of `String`s. If `key` is `'style'`, `value` is an object with\n * key-value pairs. In other cases, `value` is a `String`.\n * If `config.model.values` is set, `config.view` should be an object assigning values from `config.model.values` to\n * `{ key, value }` objects or a functions.\n * @param config.converterPriority Converter priority.\n * @returns Conversion helper.\n */\nfunction downcastAttributeToAttribute( config: {\n\tmodel: string | {\n\t\tkey: string;\n\t\tname?: string;\n\t\tvalues?: Array<string>;\n\t};\n\tview: string | AttributeDescriptor | AttributeCreatorFunction | Record<string, AttributeDescriptor | AttributeCreatorFunction>;\n\tconverterPriority?: PriorityString;\n} ) {\n\tconfig = cloneDeep( config );\n\n\tlet model = config.model;\n\n\tif ( typeof model == 'string' ) {\n\t\tmodel = { key: model };\n\t}\n\n\tlet eventName = `attribute:${ model.key }` as const;\n\n\tif ( model.name ) {\n\t\teventName += ':' + model.name;\n\t}\n\n\tif ( model.values ) {\n\t\tfor ( const modelValue of model.values ) {\n\t\t\t( config.view as any )[ modelValue ] = normalizeToAttributeConfig( ( config.view as any )[ modelValue ] );\n\t\t}\n\t} else {\n\t\tconfig.view = normalizeToAttributeConfig( config.view );\n\t}\n\n\tconst elementCreator = getFromAttributeCreator<AttributeCreatorFunction>( config );\n\n\treturn ( dispatcher: DowncastDispatcher ) => {\n\t\tdispatcher.on<DowncastAttributeEvent<ModelElement>>(\n\t\t\teventName,\n\t\t\tchangeAttribute( elementCreator ),\n\t\t\t{ priority: config.converterPriority || 'normal' }\n\t\t);\n\t};\n}\n\n/**\n * Model marker to view element conversion helper.\n *\n * See {@link ~DowncastHelpers#markerToElement `.markerToElement()` downcast helper} for examples.\n *\n * @param config Conversion configuration.\n * @param config.model The name of the model marker (or model marker group) to convert.\n * @param config.view A view element definition or a function that takes the model marker data as a parameter and returns a view UI element.\n * @param config.converterPriority Converter priority.\n * @returns Conversion helper.\n */\nfunction downcastMarkerToElement( config: {\n\tmodel: string;\n\tview: ElementDefinition | MarkerElementCreatorFunction;\n\tconverterPriority?: PriorityString;\n} ) {\n\tconst view = normalizeToElementConfig( config.view, 'ui' );\n\n\treturn ( dispatcher: DowncastDispatcher ) => {\n\t\tdispatcher.on<DowncastAddMarkerEvent>(\n\t\t\t`addMarker:${ config.model }`,\n\t\t\tinsertUIElement( view ),\n\t\t\t{ priority: config.converterPriority || 'normal' }\n\t\t);\n\t\tdispatcher.on<DowncastRemoveMarkerEvent>(\n\t\t\t`removeMarker:${ config.model }`,\n\t\t\tremoveUIElement(),\n\t\t\t{ priority: config.converterPriority || 'normal' }\n\t\t);\n\t};\n}\n\n/**\n * Model marker to view data conversion helper.\n *\n * See {@link ~DowncastHelpers#markerToData `markerToData()` downcast helper} to learn more.\n *\n * @returns Conversion helper.\n */\nfunction downcastMarkerToData( config: {\n\tmodel: string;\n\tview?: MarkerDataCreatorFunction;\n\tconverterPriority?: PriorityString;\n} ) {\n\tconfig = cloneDeep( config );\n\n\tconst group = config.model;\n\tlet view = config.view;\n\n\t// Default conversion.\n\tif ( !view ) {\n\t\tview = markerName => ( {\n\t\t\tgroup,\n\t\t\tname: markerName.substr( config.model.length + 1 )\n\t\t} );\n\t}\n\n\treturn ( dispatcher: DowncastDispatcher ) => {\n\t\tdispatcher.on<DowncastAddMarkerEvent>(\n\t\t\t`addMarker:${ group }`,\n\t\t\tinsertMarkerData( view! ),\n\t\t\t{ priority: config.converterPriority || 'normal' }\n\t\t);\n\t\tdispatcher.on<DowncastRemoveMarkerEvent>(\n\t\t\t`removeMarker:${ group }`,\n\t\t\tremoveMarkerData( view! ),\n\t\t\t{ priority: config.converterPriority || 'normal' }\n\t\t);\n\t};\n}\n\n/**\n * Model marker to highlight conversion helper.\n *\n * See {@link ~DowncastHelpers#markerToElement `.markerToElement()` downcast helper} for examples.\n *\n * @param config Conversion configuration.\n * @param config.model The name of the model marker (or model marker group) to convert.\n * @param config.view A highlight descriptor that will be used for highlighting or a function that takes\n * the model marker data as a parameter and returns a highlight descriptor.\n * @param config.converterPriority Converter priority.\n * @returns Conversion helper.\n */\nfunction downcastMarkerToHighlight( config: {\n\tmodel: string;\n\tview: HighlightDescriptor | HighlightDescriptorCreatorFunction;\n\tconverterPriority?: PriorityString;\n} ) {\n\treturn ( dispatcher: DowncastDispatcher ) => {\n\t\tdispatcher.on<DowncastAddMarkerEvent>(\n\t\t\t`addMarker:${ config.model }`,\n\t\t\thighlightText( config.view ),\n\t\t\t{ priority: config.converterPriority || 'normal' }\n\t\t);\n\t\tdispatcher.on<DowncastAddMarkerEvent>(\n\t\t\t`addMarker:${ config.model }`,\n\t\t\thighlightElement( config.view ),\n\t\t\t{ priority: config.converterPriority || 'normal' }\n\t\t);\n\t\tdispatcher.on<DowncastRemoveMarkerEvent>(\n\t\t\t`removeMarker:${ config.model }`,\n\t\t\tremoveHighlight( config.view ),\n\t\t\t{ priority: config.converterPriority || 'normal' }\n\t\t);\n\t};\n}\n\n/**\n * Takes `config.model`, and converts it to an object with normalized structure.\n *\n * @param model Model configuration or element name.\n */\nfunction normalizeModelElementConfig( model: string | {\n\tname: string;\n\tattributes?: string | Array<string>;\n\tchildren?: boolean;\n} ): NormalizedModelElementConfig {\n\tif ( typeof model == 'string' ) {\n\t\tmodel = { name: model };\n\t}\n\n\t// List of attributes that should trigger reconversion.\n\tif ( !model.attributes ) {\n\t\tmodel.attributes = [];\n\t} else if ( !Array.isArray( model.attributes ) ) {\n\t\tmodel.attributes = [ model.attributes ];\n\t}\n\n\t// Whether a children insertion/deletion should trigger reconversion.\n\tmodel.children = !!model.children;\n\n\treturn model as any;\n}\n\ninterface NormalizedModelElementConfig {\n\tname: string;\n\tattributes: Array<string>;\n\tchildren: boolean;\n}\n\n/**\n * Takes `config.view`, and if it is an {@link module:engine/view/elementdefinition~ElementDefinition}, converts it\n * to a function (because lower level converters accept only element creator functions).\n *\n * @param view View configuration.\n * @param viewElementType View element type to create.\n * @returns Element creator function to use in lower level converters.\n */\nfunction normalizeToElementConfig<T extends Function>(\n\tview: ElementDefinition | T,\n\tviewElementType: 'container' | 'attribute' | 'ui'\n): T {\n\tif ( typeof view == 'function' ) {\n\t\t// If `view` is already a function, don't do anything.\n\t\treturn view as any;\n\t}\n\n\treturn ( ( modelData: unknown, conversionApi: DowncastConversionApi ) =>\n\t\tcreateViewElementFromDefinition( view, conversionApi, viewElementType ) ) as any;\n}\n\n/**\n * Creates a view element instance from the provided {@link module:engine/view/elementdefinition~ElementDefinition} and class.\n */\nfunction createViewElementFromDefinition(\n\tviewElementDefinition: ElementDefinition,\n\tconversionApi: DowncastConversionApi,\n\tviewElementType: 'container' | 'attribute' | 'ui'\n): ViewElement {\n\tif ( typeof viewElementDefinition == 'string' ) {\n\t\t// If `viewElementDefinition` is given as a `String`, normalize it to an object with `name` property.\n\t\tviewElementDefinition = { name: viewElementDefinition };\n\t}\n\n\tlet element: ViewElement;\n\tconst viewWriter = conversionApi.writer;\n\tconst attributes = Object.assign( {}, viewElementDefinition.attributes );\n\n\tif ( viewElementType == 'container' ) {\n\t\telement = viewWriter.createContainerElement( viewElementDefinition.name, attributes );\n\t} else if ( viewElementType == 'attribute' ) {\n\t\tconst options = {\n\t\t\tpriority: viewElementDefinition.priority || ViewAttributeElement.DEFAULT_PRIORITY\n\t\t};\n\n\t\telement = viewWriter.createAttributeElement( viewElementDefinition.name, attributes, options );\n\t} else {\n\t\t// 'ui'.\n\t\telement = viewWriter.createUIElement( viewElementDefinition.name, attributes );\n\t}\n\n\tif ( viewElementDefinition.styles ) {\n\t\tconst keys = Object.keys( viewElementDefinition.styles );\n\n\t\tfor ( const key of keys ) {\n\t\t\tviewWriter.setStyle( key, viewElementDefinition.styles[ key ], element );\n\t\t}\n\t}\n\n\tif ( viewElementDefinition.classes ) {\n\t\tconst classes = viewElementDefinition.classes;\n\n\t\tif ( typeof classes == 'string' ) {\n\t\t\tviewWriter.addClass( classes, element );\n\t\t} else {\n\t\t\tfor ( const className of classes ) {\n\t\t\t\tviewWriter.addClass( className, element );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn element;\n}\n\nfunction getFromAttributeCreator<T extends AttributeElementCreatorFunction | AttributeCreatorFunction>( config: any ): T {\n\tif ( config.model.values ) {\n\t\treturn ( ( modelAttributeValue: any, conversionApi: DowncastConversionApi, data: any ) => {\n\t\t\tconst view = config.view[ modelAttributeValue ];\n\n\t\t\tif ( view ) {\n\t\t\t\treturn view( modelAttributeValue, conversionApi, data );\n\t\t\t}\n\n\t\t\treturn null;\n\t\t} ) as any;\n\t} else {\n\t\treturn config.view;\n\t}\n}\n\n/**\n * Takes the configuration, adds default parameters if they do not exist and normalizes other parameters to be used in downcast converters\n * for generating a view attribute.\n *\n * @param view View configuration.\n */\nfunction normalizeToAttributeConfig( view: any ): AttributeCreatorFunction {\n\tif ( typeof view == 'string' ) {\n\t\treturn modelAttributeValue => ( { key: view, value: modelAttributeValue as string } );\n\t} else if ( typeof view == 'object' ) {\n\t\t// { key, value, ... }\n\t\tif ( view.value ) {\n\t\t\treturn () => view;\n\t\t}\n\t\t// { key, ... }\n\t\telse {\n\t\t\treturn modelAttributeValue => ( { key: view.key, value: modelAttributeValue as string } );\n\t\t}\n\t} else {\n\t\t// function.\n\t\treturn view;\n\t}\n}\n\n/**\n * Helper function for `highlight`. Prepares the actual descriptor object using value passed to the converter.\n */\nfunction prepareDescriptor(\n\thighlightDescriptor: HighlightDescriptor | HighlightDescriptorCreatorFunction,\n\tdata: {\n\t\tmarkerName: string;\n\t\tmarkerRange: ModelRange;\n\t},\n\tconversionApi: DowncastConversionApi\n): HighlightDescriptor | null {\n\t// If passed descriptor is a creator function, call it. If not, just use passed value.\n\tconst descriptor = typeof highlightDescriptor == 'function' ?\n\t\thighlightDescriptor( data, conversionApi ) :\n\t\thighlightDescriptor;\n\n\tif ( !descriptor ) {\n\t\treturn null;\n\t}\n\n\t// Apply default descriptor priority.\n\tif ( !descriptor.priority ) {\n\t\tdescriptor.priority = 10;\n\t}\n\n\t// Default descriptor id is marker name.\n\tif ( !descriptor.id ) {\n\t\tdescriptor.id = data.markerName;\n\t}\n\n\treturn descriptor;\n}\n\n/**\n * Creates a function that checks a single differ diff item whether it should trigger reconversion.\n *\n * @param model A normalized `config.model` converter configuration.\n * @param model.name The name of element.\n * @param model.attributes The list of attribute names that should trigger reconversion.\n * @param model.children Whether the child list change should trigger reconversion.\n */\nfunction createChangeReducerCallback( model: NormalizedModelElementConfig ) {\n\treturn ( node: ModelNode, change: DiffItem | DiffItemReinsert ): boolean => {\n\t\tif ( !node.is( 'element', model.name ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( change.type == 'attribute' ) {\n\t\t\tif ( model.attributes.includes( change.attributeKey ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else {\n\t\t\t/* istanbul ignore else: This is always true because otherwise it would not register a reducer callback. -- @preserve */\n\t\t\tif ( model.children ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n}\n\n/**\n * Creates a `reduceChanges` event handler for reconversion.\n *\n * @param model A normalized `config.model` converter configuration.\n * @param model.name The name of element.\n * @param model.attributes The list of attribute names that should trigger reconversion.\n * @param model.children Whether the child list change should trigger reconversion.\n */\nfunction createChangeReducer( model: NormalizedModelElementConfig ) {\n\tconst shouldReplace = createChangeReducerCallback( model );\n\n\treturn (\n\t\tevt: unknown,\n\t\tdata: { changes: Iterable<DiffItem | DiffItemReinsert>; reconvertedElements?: Set<ModelNode> }\n\t) => {\n\t\tconst reducedChanges: Array<DiffItem | DiffItemReinsert> = [];\n\n\t\tif ( !data.reconvertedElements ) {\n\t\t\tdata.reconvertedElements = new Set();\n\t\t}\n\n\t\tfor ( const change of data.changes ) {\n\t\t\t// For attribute use node affected by the change.\n\t\t\t// For insert or remove use parent element because we need to check if it's added/removed child.\n\t\t\tconst node = change.type == 'attribute' ? change.range.start.nodeAfter : change.position.parent as ModelNode;\n\n\t\t\tif ( !node || !shouldReplace( node, change ) ) {\n\t\t\t\treducedChanges.push( change );\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If it's already marked for reconversion, so skip this change, otherwise add the diff items.\n\t\t\tif ( !data.reconvertedElements.has( node ) ) {\n\t\t\t\tdata.reconvertedElements.add( node );\n\n\t\t\t\tconst position = ModelPosition._createBefore( node );\n\t\t\t\tlet changeIndex = reducedChanges.length;\n\n\t\t\t\t// We need to insert remove+reinsert before any other change on and inside the re-converted element.\n\t\t\t\t// This is important because otherwise we would remove element that had already been modified by the previous change.\n\t\t\t\t// Note that there could be some element removed before the re-converted element, so we must not break this behavior.\n\t\t\t\tfor ( let i = reducedChanges.length - 1; i >= 0; i-- ) {\n\t\t\t\t\tconst change = reducedChanges[ i ];\n\t\t\t\t\tconst changePosition = change.type == 'attribute' ? change.range.start : change.position;\n\t\t\t\t\tconst positionRelation = changePosition.compareWith( position );\n\n\t\t\t\t\tif ( positionRelation == 'before' || change.type == 'remove' && positionRelation == 'same' ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tchangeIndex = i;\n\t\t\t\t}\n\n\t\t\t\treducedChanges.splice( changeIndex, 0, {\n\t\t\t\t\ttype: 'remove',\n\t\t\t\t\tname: ( node as ModelElement ).name,\n\t\t\t\t\tposition,\n\t\t\t\t\tlength: 1\n\t\t\t\t} as any, {\n\t\t\t\t\ttype: 'reinsert',\n\t\t\t\t\tname: ( node as ModelElement ).name,\n\t\t\t\t\tposition,\n\t\t\t\t\tlength: 1\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tdata.changes = reducedChanges;\n\t};\n}\n\n/**\n * Creates a function that checks if an element and its watched attributes can be consumed and consumes them.\n *\n * @param model A normalized `config.model` converter configuration.\n * @param model.name The name of element.\n * @param model.attributes The list of attribute names that should trigger reconversion.\n * @param model.children Whether the child list change should trigger reconversion.\n */\nfunction createConsumer( model: NormalizedModelElementConfig ): ConsumerFunction {\n\treturn ( node, consumable, options = {} ) => {\n\t\tconst events = [ 'insert' ];\n\n\t\t// Collect all set attributes that are triggering conversion.\n\t\tfor ( const attributeName of model.attributes ) {\n\t\t\tif ( node.hasAttribute( attributeName ) ) {\n\t\t\t\tevents.push( `attribute:${ attributeName }` );\n\t\t\t}\n\t\t}\n\n\t\tif ( !events.every( event => consumable.test( node, event ) ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !options.preflight ) {\n\t\t\tevents.forEach( event => consumable.consume( node, event ) );\n\t\t}\n\n\t\treturn true;\n\t};\n}\n\n/**\n * Creates a function that create view slots.\n *\n * @returns Function exposed by writer as createSlot().\n */\nfunction createSlotFactory( element: ModelElement, slotsMap: Map<ViewElement, Array<ModelNode>>, conversionApi: DowncastConversionApi ) {\n\treturn ( writer: DowncastWriter, modeOrFilter: string | SlotFilter ) => {\n\t\tconst slot = writer.createContainerElement( '$slot' );\n\n\t\tlet children: Array<ModelNode> | null = null;\n\n\t\tif ( modeOrFilter === 'children' ) {\n\t\t\tchildren = Array.from( element.getChildren() );\n\t\t} else if ( typeof modeOrFilter == 'function' ) {\n\t\t\tchildren = Array.from( element.getChildren() ).filter( element => modeOrFilter( element ) );\n\t\t} else {\n\t\t\t/**\n\t\t\t * Unknown slot mode was provided to `writer.createSlot()` in downcast converter.\n\t\t\t *\n\t\t\t * @error conversion-slot-mode-unknown\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'conversion-slot-mode-unknown', conversionApi.dispatcher, { modeOrFilter } );\n\t\t}\n\n\t\tslotsMap.set( slot, children );\n\n\t\treturn slot;\n\t};\n}\n\n/**\n * Checks if all children are covered by slots and there is no child that landed in multiple slots.\n */\nfunction validateSlotsChildren(\n\telement: ModelElement,\n\tslotsMap: Map<ViewElement, Array<ModelNode>>,\n\tconversionApi: DowncastConversionApi\n) {\n\tconst childrenInSlots = Array.from( slotsMap.values() ).flat();\n\tconst uniqueChildrenInSlots = new Set( childrenInSlots );\n\n\tif ( uniqueChildrenInSlots.size != childrenInSlots.length ) {\n\t\t/**\n\t\t * Filters provided to `writer.createSlot()` overlap (at least two filters accept the same child element).\n\t\t *\n\t\t * @error conversion-slot-filter-overlap\n\t\t * @param {module:engine/model/element~Element} element The element of which children would not be properly\n\t\t * allocated to multiple slots.\n\t\t */\n\t\tthrow new CKEditorError( 'conversion-slot-filter-overlap', conversionApi.dispatcher, { element } );\n\t}\n\n\tif ( uniqueChildrenInSlots.size != element.childCount ) {\n\t\t/**\n\t\t * Filters provided to `writer.createSlot()` are incomplete and exclude at least one children element (one of\n\t\t * the children elements would not be assigned to any of the slots).\n\t\t *\n\t\t * @error conversion-slot-filter-incomplete\n\t\t * @param {module:engine/model/element~Element} element The element of which children would not be properly\n\t\t * allocated to multiple slots.\n\t\t */\n\t\tthrow new CKEditorError( 'conversion-slot-filter-incomplete', conversionApi.dispatcher, { element } );\n\t}\n}\n\n/**\n * Fill slots with appropriate view elements.\n */\nfunction fillSlots(\n\tviewElement: ViewElement,\n\tslotsMap: Map<ViewElement, Array<ModelNode>>,\n\tconversionApi: DowncastConversionApi,\n\toptions: { reconversion?: boolean }\n): void {\n\t// Set temporary position mapping to redirect child view elements into a proper slots.\n\tconversionApi.mapper.on<MapperModelToViewPositionEvent>( 'modelToViewPosition', toViewPositionMapping, { priority: 'highest' } );\n\n\tlet currentSlot: ViewElement | null = null;\n\tlet currentSlotNodes: Array<ModelNode> | null = null;\n\n\t// Fill slots with nested view nodes.\n\tfor ( [ currentSlot, currentSlotNodes ] of slotsMap ) {\n\t\treinsertOrConvertNodes( viewElement, currentSlotNodes, conversionApi, options );\n\n\t\tconversionApi.writer.move(\n\t\t\tconversionApi.writer.createRangeIn( currentSlot ),\n\t\t\tconversionApi.writer.createPositionBefore( currentSlot )\n\t\t);\n\t\tconversionApi.writer.remove( currentSlot );\n\t}\n\n\tconversionApi.mapper.off( 'modelToViewPosition', toViewPositionMapping );\n\n\tfunction toViewPositionMapping( evt: unknown, data: {\n\t\tmapper: Mapper;\n\t\tmodelPosition: ModelPosition;\n\t\tviewPosition?: ViewPosition;\n\t\tisPhantom?: boolean;\n\t} ) {\n\t\tconst element = data.modelPosition.nodeAfter!;\n\n\t\t// Find the proper offset within the slot.\n\t\tconst index = currentSlotNodes!.indexOf( element );\n\n\t\tif ( index < 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata.viewPosition = data.mapper.findPositionIn( currentSlot!, index );\n\t}\n}\n\n/**\n * Inserts view representation of `nodes` into the `viewElement` either by bringing back just removed view nodes\n * or by triggering conversion for them.\n */\nfunction reinsertOrConvertNodes(\n\tviewElement: ViewElement,\n\tmodelNodes: Iterable<ModelNode>,\n\tconversionApi: DowncastConversionApi,\n\toptions: { reconversion?: boolean }\n) {\n\t// Fill with nested view nodes.\n\tfor ( const modelChildNode of modelNodes ) {\n\t\t// Try reinserting the view node for the specified model node...\n\t\tif ( !reinsertNode( viewElement.root, modelChildNode, conversionApi, options ) ) {\n\t\t\t// ...or else convert the model element to the view.\n\t\t\tconversionApi.convertItem( modelChildNode );\n\t\t}\n\t}\n}\n\n/**\n * Checks if the view for the given model element could be reused and reinserts it to the view.\n *\n * @returns `false` if view element can't be reused.\n */\nfunction reinsertNode(\n\tviewRoot: ViewElement | ViewDocumentFragment,\n\tmodelNode: ModelNode,\n\tconversionApi: DowncastConversionApi,\n\toptions: { reconversion?: boolean }\n): boolean {\n\tconst { writer, mapper } = conversionApi;\n\n\t// Don't reinsert if this is not a reconversion...\n\tif ( !options.reconversion ) {\n\t\treturn false;\n\t}\n\n\tconst viewChildNode = mapper.toViewElement( modelNode as ModelElement );\n\n\t// ...or there is no view to reinsert or it was already inserted to the view structure...\n\tif ( !viewChildNode || viewChildNode.root == viewRoot ) {\n\t\treturn false;\n\t}\n\n\t// ...or it was strictly marked as not to be reused.\n\tif ( !conversionApi.canReuseView( viewChildNode ) ) {\n\t\treturn false;\n\t}\n\n\t// Otherwise reinsert the view node.\n\twriter.move(\n\t\twriter.createRangeOn( viewChildNode ),\n\t\tmapper.toViewPosition( ModelPosition._createBefore( modelNode ) )\n\t);\n\n\treturn true;\n}\n\n/**\n * The default consumer for insert events.\n *\n * @param item Model item.\n * @param consumable The model consumable.\n * @param options.preflight Whether should consume or just check if can be consumed.\n */\nfunction defaultConsumer(\n\titem: ModelItem,\n\tconsumable: ModelConsumable,\n\t{ preflight }: { preflight?: boolean } = {}\n): boolean | null {\n\tif ( preflight ) {\n\t\treturn consumable.test( item, 'insert' );\n\t} else {\n\t\treturn consumable.consume( item, 'insert' );\n\t}\n}\n\n/**\n * An object describing how the marker highlight should be represented in the view.\n *\n * Each text node contained in a highlighted range will be wrapped in a `<span>`\n * {@link module:engine/view/attributeelement~AttributeElement view attribute element} with CSS class(es), attributes and a priority\n * described by this object.\n *\n * Additionally, each {@link module:engine/view/containerelement~ContainerElement container element} can handle displaying the highlight\n * separately by providing the `addHighlight` and `removeHighlight` custom properties. In this case:\n *\n * * The `HighlightDescriptor` object is passed to the `addHighlight` function upon conversion and should be used to apply the highlight to\n * the element.\n * * The descriptor `id` is passed to the `removeHighlight` function upon conversion and should be used to remove the highlight with the\n * given ID from the element.\n */\nexport interface HighlightDescriptor {\n\n\t/**\n\t * A CSS class or an array of classes to set. If the descriptor is used to\n\t * create an {@link module:engine/view/attributeelement~AttributeElement attribute element} over text nodes, these classes will be set\n\t * on that attribute element. If the descriptor is applied to an element, usually these classes will be set on that element, however,\n\t * this depends on how the element converts the descriptor.\n\t */\n\tclasses: string | Array<string>;\n\n\t/**\n\t * Descriptor identifier. If not provided, it defaults to the converted marker's name.\n\t */\n\tid?: string;\n\n\t/**\n\t * Descriptor priority. If not provided, it defaults to `10`. If the descriptor is used to create\n\t * an {@link module:engine/view/attributeelement~AttributeElement attribute element}, it will be that element's\n\t * {@link module:engine/view/attributeelement~AttributeElement#priority priority}. If the descriptor is applied to an element,\n\t * the priority will be used to determine which descriptor is more important.\n\t */\n\tpriority?: number;\n\n\t/**\n\t * Attributes to set. If the descriptor is used to create\n\t * an {@link module:engine/view/attributeelement~AttributeElement attribute element} over text nodes, these attributes will be set\n\t * on that attribute element. If the descriptor is applied to an element, usually these attributes will be set on that element, however,\n\t * this depends on how the element converts the descriptor.\n\t */\n\tattributes?: Record<string, string>;\n}\n\n/**\n * A filtering function used to choose model child nodes to be downcasted into the specific view\n * {@link module:engine/view/downcastwriter~DowncastWriter#createSlot \"slot\"} while executing the\n * {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToStructure `elementToStructure()`} converter.\n *\n * @callback module:engine/conversion/downcasthelpers~SlotFilter\n *\n * @param node A model node.\n * @returns Whether the provided model node should be downcasted into this slot.\n *\n * @see module:engine/view/downcastwriter~DowncastWriter#createSlot\n * @see module:engine/conversion/downcasthelpers~DowncastHelpers#elementToStructure\n * @see module:engine/conversion/downcasthelpers~insertStructure\n */\nexport type SlotFilter = ( node: ModelNode ) => boolean;\n\n/**\n * A view element creator function that takes the model element and {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi\n * downcast conversion API} as parameters and returns a view container element.\n *\n * @callback module:engine/conversion/downcasthelpers~ElementCreatorFunction\n *\n * @param element The model element to be converted to the view structure.\n * @param conversionApi The conversion interface.\n * @param data Additional information about the change (same as for\n * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:insert `insert`} event).\n * @param data.item Inserted item.\n * @param data.range Range spanning over inserted item.\n * @returns The view element.\n *\n * @see module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement\n * @see module:engine/conversion/downcasthelpers~insertElement\n */\nexport type ElementCreatorFunction = (\n\telement: ModelElement,\n\tconversionApi: DowncastConversionApi,\n\tdata: {\n\t\titem: ModelItem;\n\t\trange: ModelRange;\n\t}\n) => ViewElement | null;\n\n/**\n * A function that takes the model element and {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi downcast\n * conversion API} as parameters and returns a view container element with slots for model child nodes to be converted into.\n *\n * @callback module:engine/conversion/downcasthelpers~StructureCreatorFunction\n *\n * @param element The model element to be converted to the view structure.\n * @param conversionApi The conversion interface.\n * @param data Additional information about the change (same as for\n * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:insert `insert`} event).\n * @param data.item Inserted item.\n * @param data.range Range spanning over inserted item.\n * @returns The view structure with slots for model child nodes.\n *\n * @see module:engine/conversion/downcasthelpers~DowncastHelpers#elementToStructure\n * @see module:engine/conversion/downcasthelpers~insertStructure\n */\nexport type StructureCreatorFunction = ElementCreatorFunction;\n\n/**\n * A view element creator function that takes the model attribute value and\n * {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi downcast conversion API} as parameters and returns a view\n * attribute element.\n *\n * @callback module:engine/conversion/downcasthelpers~AttributeElementCreatorFunction\n *\n * @param attributeValue The model attribute value to be converted to the view attribute element.\n * @param conversionApi The conversion interface.\n * @param data Additional information about the change (same as for\n * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:attribute `attribute`} event).\n * @param data.item Changed item or converted selection.\n * @param data.range Range spanning over changed item or selection range.\n * @param data.attributeKey Attribute key.\n * @param data.attributeOldValue Attribute value before the change. This is `null` when selection attribute is converted.\n * @param data.attributeNewValue New attribute value.\n * @returns The view attribute element.\n *\n * @see module:engine/conversion/downcasthelpers~DowncastHelpers#attributeToElement\n * @see module:engine/conversion/downcasthelpers~wrap\n */\nexport type AttributeElementCreatorFunction = (\n\tattributeValue: any,\n\tconversionApi: DowncastConversionApi,\n\tdata: {\n\t\titem: ModelItem | ModelSelection | ModelDocumentSelection;\n\t\trange: ModelRange;\n\t\tattributeKey: string;\n\t\tattributeOldValue: unknown;\n\t\tattributeNewValue: unknown;\n\t}\n) => ViewAttributeElement | null;\n\n/**\n * A function that takes the model attribute value and\n * {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi downcast conversion API}\n * as parameters.\n *\n * @callback module:engine/conversion/downcasthelpers~AttributeCreatorFunction\n *\n * @param attributeValue The model attribute value to be converted to the view attribute element.\n * @param conversionApi The conversion interface.\n * @param data Additional information about the change (same as for\n * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:attribute `attribute`} event).\n * @param data.item Changed item or converted selection.\n * @param data.range Range spanning over changed item or selection range.\n * @param data.attributeKey Attribute key.\n * @param data.attributeOldValue Attribute value before the change. This is `null` when selection attribute is converted.\n * @param data.attributeNewValue New attribute value.\n * @returns A `{ key, value }` object. If `key` is `'class'`, `value` can be a `String` or an\n * array of `String`s. If `key` is `'style'`, `value` is an object with key-value pairs. In other cases, `value` is a `String`.\n *\n * @see module:engine/conversion/downcasthelpers~DowncastHelpers#attributeToAttribute\n */\nexport type AttributeCreatorFunction = (\n\tattributeValue: unknown,\n\tconversionApi: DowncastConversionApi,\n\tdata: {\n\t\titem: ModelItem;\n\t\trange: ModelRange;\n\t\tattributeKey: string;\n\t\tattributeOldValue: unknown;\n\t\tattributeNewValue: unknown;\n\t}\n) => AttributeDescriptor | null;\n\nexport type AttributeDescriptor = {\n\tkey: 'class';\n\tvalue: string | Array<string>;\n} | {\n\tkey: 'style';\n\tvalue: Record<string, string>;\n} | {\n\tkey: Exclude<string, 'class' | 'style'>;\n\tvalue: string;\n};\n\nexport type MarkerElementCreatorFunction = (\n\tdata: {\n\t\tmarkerRange: ModelRange;\n\t\tmarkerName: string;\n\t\tisOpening?: boolean;\n\t},\n\tconversionApi: DowncastConversionApi\n) => UIElement | null;\n\nexport type HighlightDescriptorCreatorFunction = (\n\tdata: {\n\t\tmarkerRange: ModelRange;\n\t\tmarkerName: string;\n\t},\n\tconversionApi: DowncastConversionApi\n) => HighlightDescriptor | null;\n\nexport type AddHighlightCallback = (\n\tviewElement: ViewElement,\n\tdescriptor: HighlightDescriptor,\n\twriter: DowncastWriter\n) => void;\n\nexport type RemoveHighlightCallback = (\n\tviewElement: ViewElement,\n\tid: string,\n\twriter: DowncastWriter\n) => void;\n\nexport type MarkerDataCreatorFunction = (\n\tmarkerName: string,\n\tconversionApi: DowncastConversionApi\n) => { name: string; group: string } | null;\n\n/**\n * A function that is expected to consume all the consumables that were used by the element creator.\n *\n * @callback module:engine/conversion/downcasthelpers~ConsumerFunction\n *\n * @param element The model element to be converted to the view structure.\n * @param consumable The `ModelConsumable` same as in\n * {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi#consumable `DowncastConversionApi.consumable`}.\n * @param options.preflight Whether should consume or just check if can be consumed.\n * @returns `true` if all consumable values were available and were consumed, `false` otherwise.\n *\n * @see module:engine/conversion/downcasthelpers~insertStructure\n */\nexport type ConsumerFunction = (\n\telement: ModelElement,\n\tconsumable: ModelConsumable,\n\toptions?: { preflight?: boolean }\n) => boolean | null;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport type Node from '../node';\nimport type Position from '../position';\nimport type Schema from '../schema';\nimport type Writer from '../writer';\n\n/**\n * @module engine/model/utils/autoparagraphing\n */\n\n/**\n * Fixes all empty roots.\n *\n * @internal\n * @param writer The model writer.\n * @returns `true` if any change has been applied, `false` otherwise.\n */\nexport function autoParagraphEmptyRoots( writer: Writer ): boolean {\n\tconst { schema, document } = writer.model;\n\n\tfor ( const root of document.getRoots() ) {\n\t\tif ( root.isEmpty && !schema.checkChild( root, '$text' ) ) {\n\t\t\t// If paragraph element is allowed in the root, create paragraph element.\n\t\t\tif ( schema.checkChild( root, 'paragraph' ) ) {\n\t\t\t\twriter.insertElement( 'paragraph', root );\n\n\t\t\t\t// Other roots will get fixed in the next post-fixer round. Those will be triggered\n\t\t\t\t// in the same batch no matter if this method was triggered by the post-fixing or not\n\t\t\t\t// (the above insertElement call will trigger the post-fixers).\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Checks if the given node wrapped with a paragraph would be accepted by the schema in the given position.\n *\n * @internal\n * @param position The position at which to check.\n * @param nodeOrType The child node or child type to check.\n * @param schema A schema instance used for element validation.\n */\nexport function isParagraphable(\n\tposition: Position,\n\tnodeOrType: Node | string,\n\tschema: Schema\n): boolean {\n\tconst context = schema.createContext( position );\n\n\t// When paragraph is allowed in this context...\n\tif ( !schema.checkChild( context, 'paragraph' ) ) {\n\t\treturn false;\n\t}\n\n\t// And a node would be allowed in this paragraph...\n\tif ( !schema.checkChild( context.push( 'paragraph' ), nodeOrType ) ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n/**\n * Inserts a new paragraph at the given position and returns a position inside that paragraph.\n *\n * @internal\n * @param position The position where a paragraph should be inserted.\n * @param writer The model writer.\n * @returns Position inside the created paragraph.\n */\nexport function wrapInParagraph( position: Position, writer: Writer ): Position {\n\tconst paragraph = writer.createElement( 'paragraph' );\n\n\twriter.insert( paragraph, position );\n\n\treturn writer.createPositionAt( paragraph, 0 );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport Matcher, { type ClassPatterns, type MatcherPattern, type PropertyPatterns } from '../view/matcher';\nimport ConversionHelpers from './conversionhelpers';\n\nimport type { default as UpcastDispatcher, UpcastElementEvent, UpcastConversionApi, UpcastConversionData } from './upcastdispatcher';\nimport type ModelElement from '../model/element';\nimport type ModelRange from '../model/range';\nimport type ModelPosition from '../model/position';\nimport type { ViewDocumentFragment, ViewElement, ViewText } from '../index';\nimport type Mapper from './mapper';\nimport type Model from '../model/model';\nimport type ViewSelection from '../view/selection';\nimport type ViewDocumentSelection from '../view/documentselection';\nimport { isParagraphable, wrapInParagraph } from '../model/utils/autoparagraphing';\n\nimport { priorities, type EventInfo, type PriorityString } from '@ckeditor/ckeditor5-utils';\n\nimport { cloneDeep } from 'lodash-es';\n\n/**\n * Contains the {@link module:engine/view/view view} to {@link module:engine/model/model model} converters for\n * {@link module:engine/conversion/upcastdispatcher~UpcastDispatcher}.\n *\n * @module engine/conversion/upcasthelpers\n */\n\n/**\n * Upcast conversion helper functions.\n *\n * Learn more about {@glink framework/deep-dive/conversion/upcast upcast helpers}.\n *\n * @extends module:engine/conversion/conversionhelpers~ConversionHelpers\n */\nexport default class UpcastHelpers extends ConversionHelpers<UpcastDispatcher> {\n\t/**\n\t * View element to model element conversion helper.\n\t *\n\t * This conversion results in creating a model element. For example,\n\t * view `<p>Foo</p>` becomes `<paragraph>Foo</paragraph>` in the model.\n\t *\n\t * Keep in mind that the element will be inserted only if it is allowed\n\t * by {@link module:engine/model/schema~Schema schema} configuration.\n\t *\n\t * ```ts\n\t * editor.conversion.for( 'upcast' ).elementToElement( {\n\t * \tview: 'p',\n\t * \tmodel: 'paragraph'\n\t * } );\n\t *\n\t * editor.conversion.for( 'upcast' ).elementToElement( {\n\t * \tview: 'p',\n\t * \tmodel: 'paragraph',\n\t * \tconverterPriority: 'high'\n\t * } );\n\t *\n\t * editor.conversion.for( 'upcast' ).elementToElement( {\n\t * \tview: {\n\t * \t\tname: 'p',\n\t * \t\tclasses: 'fancy'\n\t * \t},\n\t * \tmodel: 'fancyParagraph'\n\t * } );\n\t *\n\t * editor.conversion.for( 'upcast' ).elementToElement( {\n\t * \tview: {\n\t * \t\tname: 'p',\n\t * \t\tclasses: 'heading'\n\t * \t},\n\t * \tmodel: ( viewElement, conversionApi ) => {\n\t * \t\tconst modelWriter = conversionApi.writer;\n\t *\n\t * \t\treturn modelWriter.createElement( 'heading', { level: viewElement.getAttribute( 'data-level' ) } );\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * See {@link module:engine/conversion/conversion~Conversion#for `conversion.for()`} to learn how to add a converter\n\t * to the conversion process.\n\t *\n\t * @param config Conversion configuration.\n\t * @param config.view Pattern matching all view elements which should be converted. If not set, the converter\n\t * will fire for every view element.\n\t * @param config.model Name of the model element, a model element instance or a function that takes a view element\n\t * and {@link module:engine/conversion/upcastdispatcher~UpcastConversionApi upcast conversion API}\n\t * and returns a model element. The model element will be inserted in the model.\n\t * @param config.converterPriority Converter priority.\n\t */\n\tpublic elementToElement( config: {\n\t\tview: MatcherPattern;\n\t\tmodel: string | ElementCreatorFunction;\n\t\tconverterPriority?: PriorityString;\n\t} ): this {\n\t\treturn this.add( upcastElementToElement( config ) );\n\t}\n\n\t/**\n\t * View element to model attribute conversion helper.\n\t *\n\t * This conversion results in setting an attribute on a model node. For example, view `<strong>Foo</strong>` becomes\n\t * `Foo` {@link module:engine/model/text~Text model text node} with `bold` attribute set to `true`.\n\t *\n\t * This helper is meant to set a model attribute on all the elements that are inside the converted element:\n\t *\n\t * ```\n\t * <strong>Foo</strong> --> <strong><p>Foo</p></strong> --> <paragraph><$text bold=\"true\">Foo</$text></paragraph>\n\t * ```\n\t *\n\t * Above is a sample of HTML code, that goes through autoparagraphing (first step) and then is converted (second step).\n\t * Even though `<strong>` is over `<p>` element, `bold=\"true\"` was added to the text. See\n\t * {@link module:engine/conversion/upcasthelpers~UpcastHelpers#attributeToAttribute} for comparison.\n\t *\n\t * Keep in mind that the attribute will be set only if it is allowed by {@link module:engine/model/schema~Schema schema} configuration.\n\t *\n\t * ```ts\n\t * editor.conversion.for( 'upcast' ).elementToAttribute( {\n\t * \tview: 'strong',\n\t * \tmodel: 'bold'\n\t * } );\n\t *\n\t * editor.conversion.for( 'upcast' ).elementToAttribute( {\n\t * \tview: 'strong',\n\t * \tmodel: 'bold',\n\t * \tconverterPriority: 'high'\n\t * } );\n\t *\n\t * editor.conversion.for( 'upcast' ).elementToAttribute( {\n\t * \tview: {\n\t * \t\tname: 'span',\n\t * \t\tclasses: 'bold'\n\t * \t},\n\t * \tmodel: 'bold'\n\t * } );\n\t *\n\t * editor.conversion.for( 'upcast' ).elementToAttribute( {\n\t * \tview: {\n\t * \t\tname: 'span',\n\t * \t\tclasses: [ 'styled', 'styled-dark' ]\n\t * \t},\n\t * \tmodel: {\n\t * \t\tkey: 'styled',\n\t * \t\tvalue: 'dark'\n\t * \t}\n\t * } );\n\t *\n\t * editor.conversion.for( 'upcast' ).elementToAttribute( {\n\t * \tview: {\n\t * \t\tname: 'span',\n\t * \t\tstyles: {\n\t * \t\t\t'font-size': /[\\s\\S]+/\n\t * \t\t}\n\t * \t},\n\t * \tmodel: {\n\t * \t\tkey: 'fontSize',\n\t * \t\tvalue: ( viewElement, conversionApi ) => {\n\t * \t\t\tconst fontSize = viewElement.getStyle( 'font-size' );\n\t * \t\t\tconst value = fontSize.substr( 0, fontSize.length - 2 );\n\t *\n\t * \t\t\tif ( value <= 10 ) {\n\t * \t\t\t\treturn 'small';\n\t * \t\t\t} else if ( value > 12 ) {\n\t * \t\t\t\treturn 'big';\n\t * \t\t\t}\n\t *\n\t * \t\t\treturn null;\n\t * \t\t}\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * See {@link module:engine/conversion/conversion~Conversion#for `conversion.for()`} to learn how to add a converter\n\t * to the conversion process.\n\t *\n\t * @param config Conversion configuration.\n\t * @param config.view Pattern matching all view elements which should be converted.\n\t * @param config.model Model attribute key or an object with `key` and `value` properties, describing\n\t * the model attribute. `value` property may be set as a function that takes a view element and\n\t * {@link module:engine/conversion/upcastdispatcher~UpcastConversionApi upcast conversion API} and returns the value.\n\t * If `String` is given, the model attribute value will be set to `true`.\n\t * @param config.converterPriority Converter priority. Defaults to `low`.\n\t */\n\tpublic elementToAttribute( config: {\n\t\tview: MatcherPattern;\n\t\tmodel: string | {\n\t\t\tkey: string;\n\t\t\tvalue?: unknown;\n\t\t};\n\t\tconverterPriority?: PriorityString;\n\t} ): this {\n\t\treturn this.add( upcastElementToAttribute( config ) );\n\t}\n\n\t/**\n\t * View attribute to model attribute conversion helper.\n\t *\n\t * This conversion results in setting an attribute on a model node. For example, view `<img src=\"foo.jpg\"></img>` becomes\n\t * `<imageBlock source=\"foo.jpg\"></imageBlock>` in the model.\n\t *\n\t * This helper is meant to convert view attributes from view elements which got converted to the model, so the view attribute\n\t * is set only on the corresponding model node:\n\t *\n\t * ```\n\t * <div class=\"dark\"><div>foo</div></div> --> <div dark=\"true\"><div>foo</div></div>\n\t * ```\n\t *\n\t * Above, `class=\"dark\"` attribute is added only to the `<div>` elements that has it. This is in contrary to\n\t * {@link module:engine/conversion/upcasthelpers~UpcastHelpers#elementToAttribute} which sets attributes for\n\t * all the children in the model:\n\t *\n\t * ```\n\t * <strong>Foo</strong> --> <strong><p>Foo</p></strong> --> <paragraph><$text bold=\"true\">Foo</$text></paragraph>\n\t * ```\n\t *\n\t * Above is a sample of HTML code, that goes through autoparagraphing (first step) and then is converted (second step).\n\t * Even though `<strong>` is over `<p>` element, `bold=\"true\"` was added to the text.\n\t *\n\t * Keep in mind that the attribute will be set only if it is allowed by {@link module:engine/model/schema~Schema schema} configuration.\n\t *\n\t * ```ts\n\t * editor.conversion.for( 'upcast' ).attributeToAttribute( {\n\t * \tview: 'src',\n\t * \tmodel: 'source'\n\t * } );\n\t *\n\t * editor.conversion.for( 'upcast' ).attributeToAttribute( {\n\t * \tview: { key: 'src' },\n\t * \tmodel: 'source'\n\t * } );\n\t *\n\t * editor.conversion.for( 'upcast' ).attributeToAttribute( {\n\t * \tview: { key: 'src' },\n\t * \tmodel: 'source',\n\t * \tconverterPriority: 'normal'\n\t * } );\n\t *\n\t * editor.conversion.for( 'upcast' ).attributeToAttribute( {\n\t * \tview: {\n\t * \t\tkey: 'data-style',\n\t * \t\tvalue: /[\\s\\S]+/\n\t * \t},\n\t * \tmodel: 'styled'\n\t * } );\n\t *\n\t * editor.conversion.for( 'upcast' ).attributeToAttribute( {\n\t * \tview: {\n\t * \t\tname: 'img',\n\t * \t\tkey: 'class',\n\t * \t\tvalue: 'styled-dark'\n\t * \t},\n\t * \tmodel: {\n\t * \t\tkey: 'styled',\n\t * \t\tvalue: 'dark'\n\t * \t}\n\t * } );\n\t *\n\t * editor.conversion.for( 'upcast' ).attributeToAttribute( {\n\t * \tview: {\n\t * \t\tkey: 'class',\n\t * \t\tvalue: /styled-[\\S]+/\n\t * \t},\n\t * \tmodel: {\n\t * \t\tkey: 'styled'\n\t * \t\tvalue: ( viewElement, conversionApi ) => {\n\t * \t\t\tconst regexp = /styled-([\\S]+)/;\n\t * \t\t\tconst match = viewElement.getAttribute( 'class' ).match( regexp );\n\t *\n\t * \t\t\treturn match[ 1 ];\n\t * \t\t}\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * Converting styles works a bit differently as it requires `view.styles` to be an object and by default\n\t * a model attribute will be set to `true` by such a converter. You can set the model attribute to any value by providing the `value`\n\t * callback that returns the desired value.\n\t *\n\t * ```ts\n\t * // Default conversion of font-weight style will result in setting bold attribute to true.\n\t * editor.conversion.for( 'upcast' ).attributeToAttribute( {\n\t * \tview: {\n\t * \t\tstyles: {\n\t * \t\t\t'font-weight': 'bold'\n\t * \t\t}\n\t * \t},\n\t * \tmodel: 'bold'\n\t * } );\n\t *\n\t * // This converter will pass any style value to the `lineHeight` model attribute.\n\t * editor.conversion.for( 'upcast' ).attributeToAttribute( {\n\t * \tview: {\n\t * \t\tstyles: {\n\t * \t\t\t'line-height': /[\\s\\S]+/\n\t * \t\t}\n\t * \t},\n\t * \tmodel: {\n\t * \t\tkey: 'lineHeight',\n\t * \t\tvalue: ( viewElement, conversionApi ) => viewElement.getStyle( 'line-height' )\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * See {@link module:engine/conversion/conversion~Conversion#for `conversion.for()`} to learn how to add a converter\n\t * to the conversion process.\n\t *\n\t * @param config Conversion configuration.\n\t * @param config.view Specifies which view attribute will be converted. If a `String` is passed,\n\t * attributes with given key will be converted. If an `Object` is passed, it must have a required `key` property,\n\t * specifying view attribute key, and may have an optional `value` property, specifying view attribute value and optional `name`\n\t * property specifying a view element name from/on which the attribute should be converted. `value` can be given as a `String`,\n\t * a `RegExp` or a function callback, that takes view attribute value as the only parameter and returns `Boolean`.\n\t * @param config.model Model attribute key or an object with `key` and `value` properties, describing\n\t * the model attribute. `value` property may be set as a function that takes a view element and\n\t * {@link module:engine/conversion/upcastdispatcher~UpcastConversionApi upcast conversion API} and returns the value.\n\t * If `String` is given, the model attribute value will be same as view attribute value.\n\t * @param config.converterPriority Converter priority. Defaults to `low`.\n\t */\n\tpublic attributeToAttribute( config: {\n\t\tview: string | {\n\t\t\tkey: string;\n\t\t\tvalue?: string | RegExp | Array<string> | Record<string, string> | Record<string, RegExp> | ( ( value: unknown ) => boolean );\n\t\t\tname?: string;\n\t\t} | {\n\t\t\tname?: string | RegExp;\n\t\t\tstyles?: PropertyPatterns;\n\t\t\tclasses?: ClassPatterns;\n\t\t\tattributes?: PropertyPatterns;\n\t\t};\n\t\tmodel: string | {\n\t\t\tkey: string;\n\t\t\tvalue: unknown | ( ( viewElement: ViewElement, conversionApi: UpcastConversionApi ) => unknown );\n\t\t\tname?: string;\n\t\t};\n\t\tconverterPriority?: PriorityString;\n\t} ): this {\n\t\treturn this.add( upcastAttributeToAttribute( config ) );\n\t}\n\n\t/**\n\t * View element to model marker conversion helper.\n\t *\n\t * This conversion results in creating a model marker. For example, if the marker was stored in a view as an element:\n\t * `<p>Fo<span data-marker=\"comment\" data-comment-id=\"7\"></span>o</p><p>B<span data-marker=\"comment\" data-comment-id=\"7\"></span>ar</p>`,\n\t * after the conversion is done, the marker will be available in\n\t * {@link module:engine/model/model~Model#markers model document markers}.\n\t *\n\t * **Note**: When this helper is used in the data upcast in combination with\n\t * {@link module:engine/conversion/downcasthelpers~DowncastHelpers#markerToData `#markerToData()`} in the data downcast,\n\t * then invalid HTML code (e.g. a span between table cells) may be produced by the latter converter.\n\t *\n\t * In most of the cases, the {@link #dataToMarker} should be used instead.\n\t *\n\t * ```ts\n\t * editor.conversion.for( 'upcast' ).elementToMarker( {\n\t * \tview: 'marker-search',\n\t * \tmodel: 'search'\n\t * } );\n\t *\n\t * editor.conversion.for( 'upcast' ).elementToMarker( {\n\t * \tview: 'marker-search',\n\t * \tmodel: 'search',\n\t * \tconverterPriority: 'high'\n\t * } );\n\t *\n\t * editor.conversion.for( 'upcast' ).elementToMarker( {\n\t * \tview: 'marker-search',\n\t * \tmodel: ( viewElement, conversionApi ) => 'comment:' + viewElement.getAttribute( 'data-comment-id' )\n\t * } );\n\t *\n\t * editor.conversion.for( 'upcast' ).elementToMarker( {\n\t * \tview: {\n\t * \t\tname: 'span',\n\t * \t\tattributes: {\n\t * \t\t\t'data-marker': 'search'\n\t * \t\t}\n\t * \t},\n\t * \tmodel: 'search'\n\t * } );\n\t * ```\n\t *\n\t * See {@link module:engine/conversion/conversion~Conversion#for `conversion.for()`} to learn how to add a converter\n\t * to the conversion process.\n\t *\n\t * @param config Conversion configuration.\n\t * @param config.view Pattern matching all view elements which should be converted.\n\t * @param config.model Name of the model marker, or a function that takes a view element and returns\n\t * a model marker name.\n\t * @param config.converterPriority Converter priority.\n\t */\n\tpublic elementToMarker( config: {\n\t\tview: MatcherPattern;\n\t\tmodel: string | MarkerFromElementCreatorFunction;\n\t\tconverterPriority?: PriorityString;\n\t} ): this {\n\t\treturn this.add( upcastElementToMarker( config ) );\n\t}\n\n\t/**\n\t * View-to-model marker conversion helper.\n\t *\n\t * Converts view data created by {@link module:engine/conversion/downcasthelpers~DowncastHelpers#markerToData `#markerToData()`}\n\t * back to a model marker.\n\t *\n\t * This converter looks for specific view elements and view attributes that mark marker boundaries. See\n\t * {@link module:engine/conversion/downcasthelpers~DowncastHelpers#markerToData `#markerToData()`} to learn what view data\n\t * is expected by this converter.\n\t *\n\t * The `config.view` property is equal to the marker group name to convert.\n\t *\n\t * By default, this converter creates markers with the `group:name` name convention (to match the default `markerToData` conversion).\n\t *\n\t * The conversion configuration can take a function that will generate a marker name.\n\t * If such function is set as the `config.model` parameter, it is passed the `name` part from the view element or attribute and it is\n\t * expected to return a string with the marker name.\n\t *\n\t * Basic usage:\n\t *\n\t * ```ts\n\t * // Using the default conversion.\n\t * // In this case, all markers from the `comment` group will be converted.\n\t * // The conversion will look for `<comment-start>` and `<comment-end>` tags and\n\t * // `data-comment-start-before`, `data-comment-start-after`,\n\t * // `data-comment-end-before` and `data-comment-end-after` attributes.\n\t * editor.conversion.for( 'upcast' ).dataToMarker( {\n\t * \tview: 'comment'\n\t * } );\n\t * ```\n\t *\n\t * An example of a model that may be generated by this conversion:\n\t *\n\t * ```\n\t * // View:\n\t * <p>Foo<comment-start name=\"commentId:uid\"></comment-start>bar</p>\n\t * <figure data-comment-end-after=\"commentId:uid\" class=\"image\"><img src=\"abc.jpg\" /></figure>\n\t *\n\t * // Model:\n\t * <paragraph>Foo[bar</paragraph>\n\t * <imageBlock src=\"abc.jpg\"></imageBlock>]\n\t * ```\n\t *\n\t * Where `[]` are boundaries of a marker that will receive the `comment:commentId:uid` name.\n\t *\n\t * Other examples of usage:\n\t *\n\t * ```ts\n\t * // Using a custom function which is the same as the default conversion:\n\t * editor.conversion.for( 'upcast' ).dataToMarker( {\n\t * \tview: 'comment',\n\t * \tmodel: ( name, conversionApi ) => 'comment:' + name,\n\t * } );\n\t *\n\t * // Using the converter priority:\n\t * editor.conversion.for( 'upcast' ).dataToMarker( {\n\t * \tview: 'comment',\n\t * \tmodel: ( name, conversionApi ) => 'comment:' + name,\n\t * \tconverterPriority: 'high'\n\t * } );\n\t * ```\n\t *\n\t * See {@link module:engine/conversion/conversion~Conversion#for `conversion.for()`} to learn how to add a converter\n\t * to the conversion process.\n\t *\n\t * @param config Conversion configuration.\n\t * @param config.view The marker group name to convert.\n\t * @param config.model A function that takes the `name` part from the view element or attribute and\n\t * {@link module:engine/conversion/upcastdispatcher~UpcastConversionApi upcast conversion API} and returns the marker name.\n\t * @param config.converterPriority Converter priority.\n\t */\n\tpublic dataToMarker( config: {\n\t\tview: string;\n\t\tmodel?: MarkerFromAttributeCreatorFunction;\n\t\tconverterPriority?: PriorityString;\n\t} ): this {\n\t\treturn this.add( upcastDataToMarker( config ) );\n\t}\n}\n\n/**\n * Function factory, creates a converter that converts {@link module:engine/view/documentfragment~DocumentFragment view document fragment}\n * or all children of {@link module:engine/view/element~Element} into\n * {@link module:engine/model/documentfragment~DocumentFragment model document fragment}.\n * This is the \"entry-point\" converter for upcast (view to model conversion). This converter starts the conversion of all children\n * of passed view document fragment. Those children {@link module:engine/view/node~Node view nodes} are then handled by other converters.\n *\n * This also a \"default\", last resort converter for all view elements that has not been converted by other converters.\n * When a view element is being converted to the model but it does not have converter specified, that view element\n * will be converted to {@link module:engine/model/documentfragment~DocumentFragment model document fragment} and returned.\n *\n * @returns Universal converter for view {@link module:engine/view/documentfragment~DocumentFragment fragments} and\n * {@link module:engine/view/element~Element elements} that returns\n * {@link module:engine/model/documentfragment~DocumentFragment model fragment} with children of converted view item.\n */\nexport function convertToModelFragment() {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: UpcastConversionData<ViewElement | ViewDocumentFragment>,\n\t\tconversionApi: UpcastConversionApi\n\t): void => {\n\t\t// Second argument in `consumable.consume` is discarded for ViewDocumentFragment but is needed for ViewElement.\n\t\tif ( !data.modelRange && conversionApi.consumable.consume( data.viewItem, { name: true } ) ) {\n\t\t\tconst { modelRange, modelCursor } = conversionApi.convertChildren( data.viewItem, data.modelCursor );\n\n\t\t\tdata.modelRange = modelRange;\n\t\t\tdata.modelCursor = modelCursor;\n\t\t}\n\t};\n}\n\n/**\n * Function factory, creates a converter that converts {@link module:engine/view/text~Text} to {@link module:engine/model/text~Text}.\n *\n * @returns {@link module:engine/view/text~Text View text} converter.\n */\nexport function convertText() {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: UpcastConversionData<ViewText>,\n\t\t{ schema, consumable, writer }: UpcastConversionApi\n\t): void => {\n\t\tlet position = data.modelCursor;\n\n\t\t// When node is already converted then do nothing.\n\t\tif ( !consumable.test( data.viewItem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !schema.checkChild( position, '$text' ) ) {\n\t\t\tif ( !isParagraphable( position, '$text', schema ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Do not auto-paragraph whitespaces.\n\t\t\tif ( data.viewItem.data.trim().length == 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Wrap `$text` in paragraph and include any marker that is directly before `$text`. See #13053.\n\t\t\tconst nodeBefore = position.nodeBefore;\n\n\t\t\tposition = wrapInParagraph( position, writer );\n\n\t\t\tif ( nodeBefore && nodeBefore.is( 'element', '$marker' ) ) {\n\t\t\t\t// Move `$marker` to the paragraph.\n\t\t\t\twriter.move( writer.createRangeOn( nodeBefore ), position );\n\t\t\t\tposition = writer.createPositionAfter( nodeBefore );\n\t\t\t}\n\t\t}\n\n\t\tconsumable.consume( data.viewItem );\n\n\t\tconst text = writer.createText( data.viewItem.data );\n\n\t\twriter.insert( text, position );\n\n\t\tdata.modelRange = writer.createRange(\n\t\t\tposition,\n\t\t\tposition.getShiftedBy( text.offsetSize )\n\t\t);\n\t\tdata.modelCursor = data.modelRange.end;\n\t};\n}\n\n/**\n * Function factory, creates a callback function which converts a {@link module:engine/view/selection~Selection\n * view selection} taken from the {@link module:engine/view/document~Document#event:selectionChange} event\n * and sets in on the {@link module:engine/model/document~Document#selection model}.\n *\n * **Note**: because there is no view selection change dispatcher nor any other advanced view selection to model\n * conversion mechanism, the callback should be set directly on view document.\n *\n * ```ts\n * view.document.on( 'selectionChange', convertSelectionChange( modelDocument, mapper ) );\n * ```\n *\n * @param model Data model.\n * @param mapper Conversion mapper.\n * @returns {@link module:engine/view/document~Document#event:selectionChange} callback function.\n */\nexport function convertSelectionChange( model: Model, mapper: Mapper ) {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: { newSelection: ViewSelection | ViewDocumentSelection }\n\t): void => {\n\t\tconst viewSelection = data.newSelection;\n\n\t\tconst ranges: Array<ModelRange> = [];\n\n\t\tfor ( const viewRange of viewSelection.getRanges() ) {\n\t\t\tranges.push( mapper.toModelRange( viewRange ) );\n\t\t}\n\n\t\tconst modelSelection = model.createSelection( ranges, { backward: viewSelection.isBackward } );\n\n\t\tif ( !modelSelection.isEqual( model.document.selection ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.setSelection( modelSelection );\n\t\t\t} );\n\t\t}\n\t};\n}\n\n/**\n * View element to model element conversion helper.\n *\n * See {@link ~UpcastHelpers#elementToElement `.elementToElement()` upcast helper} for examples.\n *\n * @param config Conversion configuration.\n * @param config.view Pattern matching all view elements which should be converted. If not\n * set, the converter will fire for every view element.\n * @param config.model Name of the model element, a model element\n * instance or a function that takes a view element and returns a model element. The model element will be inserted in the model.\n * @param config.converterPriority Converter priority.\n * @returns Conversion helper.\n */\nfunction upcastElementToElement( config: {\n\tview: MatcherPattern;\n\tmodel: string | ElementCreatorFunction;\n\tconverterPriority?: PriorityString;\n} ) {\n\tconfig = cloneDeep( config );\n\n\tconst converter = prepareToElementConverter( config );\n\n\tconst elementName = getViewElementNameFromConfig( config.view );\n\tconst eventName = elementName ? `element:${ elementName }` as const : 'element';\n\n\treturn ( dispatcher: UpcastDispatcher ) => {\n\t\tdispatcher.on<UpcastElementEvent>( eventName, converter, { priority: config.converterPriority || 'normal' } );\n\t};\n}\n\n/**\n * View element to model attribute conversion helper.\n *\n * See {@link ~UpcastHelpers#elementToAttribute `.elementToAttribute()` upcast helper} for examples.\n *\n * @param config Conversion configuration.\n * @param config.view Pattern matching all view elements which should be converted.\n * @param config.model Model attribute key or an object with `key` and `value` properties, describing\n * the model attribute. `value` property may be set as a function that takes a view element and returns the value.\n * If `String` is given, the model attribute value will be set to `true`.\n * @param config.converterPriority Converter priority. Defaults to `low`.\n * @returns Conversion helper.\n */\nfunction upcastElementToAttribute( config: {\n\tview: MatcherPattern;\n\tmodel: string | {\n\t\tkey: string;\n\t\tvalue?: unknown | AttributeCreatorFunction;\n\t};\n\tconverterPriority?: PriorityString;\n} ) {\n\tconfig = cloneDeep( config );\n\n\tnormalizeModelAttributeConfig( config );\n\n\tconst converter = prepareToAttributeConverter( config as any, false );\n\n\tconst elementName = getViewElementNameFromConfig( config.view );\n\tconst eventName = elementName ? `element:${ elementName }` as const : 'element';\n\n\treturn ( dispatcher: UpcastDispatcher ) => {\n\t\tdispatcher.on<UpcastElementEvent>( eventName, converter, { priority: config.converterPriority || 'low' } );\n\t};\n}\n\n/**\n * View attribute to model attribute conversion helper.\n *\n * See {@link ~UpcastHelpers#attributeToAttribute `.attributeToAttribute()` upcast helper} for examples.\n *\n * @param config Conversion configuration.\n * @param config.view Specifies which view attribute will be converted. If a `String` is passed,\n * attributes with given key will be converted. If an `Object` is passed, it must have a required `key` property,\n * specifying view attribute key, and may have an optional `value` property, specifying view attribute value and optional `name`\n * property specifying a view element name from/on which the attribute should be converted. `value` can be given as a `String`,\n * a `RegExp` or a function callback, that takes view attribute value as the only parameter and returns `Boolean`.\n * @param config.model Model attribute key or an object with `key` and `value` properties, describing\n * the model attribute. `value` property may be set as a function that takes a view element and returns the value.\n * If `String` is given, the model attribute value will be same as view attribute value.\n * @param config.converterPriority Converter priority. Defaults to `low`.\n * @returns Conversion helper.\n */\nfunction upcastAttributeToAttribute( config: {\n\tview: string | {\n\t\tkey?: string;\n\t\tvalue?: string | RegExp | Array<string> | Record<string, string> | Record<string, RegExp> | ( ( value: unknown ) => boolean );\n\t\tname?: string | RegExp;\n\t\tstyles?: PropertyPatterns;\n\t\tclasses?: ClassPatterns;\n\t\tattributes?: PropertyPatterns;\n\t};\n\tmodel: string | {\n\t\tkey: string;\n\t\tvalue: unknown | ( ( viewElement: ViewElement, conversionApi: UpcastConversionApi ) => unknown );\n\t};\n\tconverterPriority?: PriorityString;\n} ) {\n\tconfig = cloneDeep( config );\n\n\tlet viewKey: string | null = null;\n\n\tif ( typeof config.view == 'string' || config.view.key ) {\n\t\tviewKey = normalizeViewAttributeKeyValueConfig( config );\n\t}\n\n\tnormalizeModelAttributeConfig( config, viewKey );\n\n\tconst converter = prepareToAttributeConverter( config as any, true );\n\n\treturn ( dispatcher: UpcastDispatcher ) => {\n\t\tdispatcher.on<UpcastElementEvent>( 'element', converter, { priority: config.converterPriority || 'low' } );\n\t};\n}\n\n/**\n * View element to model marker conversion helper.\n *\n * See {@link ~UpcastHelpers#elementToMarker `.elementToMarker()` upcast helper} for examples.\n *\n * @param config Conversion configuration.\n * @param config.view Pattern matching all view elements which should be converted.\n * @param config.model Name of the model marker, or a function that takes a view element and returns\n * a model marker name.\n * @param config.converterPriority Converter priority.\n * @returns Conversion helper.\n */\nfunction upcastElementToMarker( config: {\n\tview: MatcherPattern;\n\tmodel: string | MarkerFromElementCreatorFunction;\n\tconverterPriority?: PriorityString;\n} ) {\n\tconst model = normalizeElementToMarkerModelConfig( config.model );\n\n\treturn upcastElementToElement( { ...config, model } );\n}\n\n/**\n * View data to model marker conversion helper.\n *\n * See {@link ~UpcastHelpers#dataToMarker} to learn more.\n *\n * @returns Conversion helper.\n */\nfunction upcastDataToMarker( config: {\n\tview: string;\n\tmodel?: MarkerFromAttributeCreatorFunction;\n\tconverterPriority?: PriorityString;\n} ) {\n\tconfig = cloneDeep( config );\n\n\t// Default conversion.\n\tif ( !config.model ) {\n\t\tconfig.model = name => {\n\t\t\treturn name ? config.view + ':' + name : config.view;\n\t\t};\n\t}\n\n\tconst normalizedConfig = {\n\t\tview: config.view,\n\t\tmodel: config.model!\n\t};\n\n\tconst converterStart = prepareToElementConverter( normalizeDataToMarkerConfig( normalizedConfig, 'start' ) );\n\tconst converterEnd = prepareToElementConverter( normalizeDataToMarkerConfig( normalizedConfig, 'end' ) );\n\n\treturn ( dispatcher: UpcastDispatcher ): void => {\n\t\tdispatcher.on<UpcastElementEvent>(\n\t\t\t`element:${ config.view }-start`,\n\t\t\tconverterStart,\n\t\t\t{ priority: config.converterPriority || 'normal' }\n\t\t);\n\t\tdispatcher.on<UpcastElementEvent>(\n\t\t\t`element:${ config.view }-end`,\n\t\t\tconverterEnd,\n\t\t\t{ priority: config.converterPriority || 'normal' }\n\t\t);\n\n\t\t// Below is a hack that is needed to properly handle `converterPriority` for both elements and attributes.\n\t\t// Attribute conversion needs to be performed *after* element conversion.\n\t\t// This converter handles both element conversion and attribute conversion, which means that if a single\n\t\t// `config.converterPriority` is used, it will lead to problems. For example, if the `'high'` priority is used,\n\t\t// the attribute conversion will be performed before a lot of element upcast converters.\n\t\t// On the other hand, we want to support `config.converterPriority` and converter overwriting.\n\t\t//\n\t\t// To make it work, we need to do some extra processing for priority for attribute converter.\n\t\t// Priority `'low'` value should be the base value and then we will change it depending on `config.converterPriority` value.\n\t\t//\n\t\t// This hack probably would not be needed if attributes are upcasted separately.\n\t\t//\n\t\tconst basePriority = priorities.low;\n\t\tconst maxPriority = priorities.highest;\n\t\tconst priorityFactor = priorities.get( config.converterPriority ) / maxPriority; // Number in range [ -1, 1 ].\n\n\t\tdispatcher.on<UpcastElementEvent>(\n\t\t\t'element',\n\t\t\tupcastAttributeToMarker( normalizedConfig ),\n\t\t\t{ priority: basePriority + priorityFactor }\n\t\t);\n\t};\n}\n\n/**\n * Function factory, returns a callback function which converts view attributes to a model marker.\n *\n * The converter looks for elements with `data-group-start-before`, `data-group-start-after`, `data-group-end-before`\n * and `data-group-end-after` attributes and inserts `$marker` model elements before/after those elements.\n * `group` part is specified in `config.view`.\n *\n * @returns Marker converter.\n */\nfunction upcastAttributeToMarker( config: {\n\tview: string;\n\tmodel: MarkerFromAttributeCreatorFunction;\n} ) {\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: UpcastConversionData<ViewElement>,\n\t\tconversionApi: UpcastConversionApi\n\t) => {\n\t\tconst attrName = `data-${ config.view }`;\n\n\t\t// Check if any attribute for the given view item can be consumed before changing the conversion data\n\t\t// and consuming view items with these attributes.\n\t\tif (\n\t\t\t!conversionApi.consumable.test( data.viewItem, { attributes: attrName + '-end-after' } ) &&\n\t\t\t!conversionApi.consumable.test( data.viewItem, { attributes: attrName + '-start-after' } ) &&\n\t\t\t!conversionApi.consumable.test( data.viewItem, { attributes: attrName + '-end-before' } ) &&\n\t\t\t!conversionApi.consumable.test( data.viewItem, { attributes: attrName + '-start-before' } )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// This converter wants to add a model element, marking a marker, before/after an element (or maybe even group of elements).\n\t\t// To do that, we can use `data.modelRange` which is set on an element (or a group of elements) that has been upcasted.\n\t\t// But, if the processed view element has not been upcasted yet (it does not have been converted), we need to\n\t\t// fire conversion for its children first, then we will have `data.modelRange` available.\n\t\tif ( !data.modelRange ) {\n\t\t\tObject.assign( data, conversionApi.convertChildren( data.viewItem, data.modelCursor ) );\n\t\t}\n\n\t\tif ( conversionApi.consumable.consume( data.viewItem, { attributes: attrName + '-end-after' } ) ) {\n\t\t\taddMarkerElements( data.modelRange!.end, data.viewItem.getAttribute( attrName + '-end-after' )!.split( ',' ) );\n\t\t}\n\n\t\tif ( conversionApi.consumable.consume( data.viewItem, { attributes: attrName + '-start-after' } ) ) {\n\t\t\taddMarkerElements( data.modelRange!.end, data.viewItem.getAttribute( attrName + '-start-after' )!.split( ',' ) );\n\t\t}\n\n\t\tif ( conversionApi.consumable.consume( data.viewItem, { attributes: attrName + '-end-before' } ) ) {\n\t\t\taddMarkerElements( data.modelRange!.start, data.viewItem.getAttribute( attrName + '-end-before' )!.split( ',' ) );\n\t\t}\n\n\t\tif ( conversionApi.consumable.consume( data.viewItem, { attributes: attrName + '-start-before' } ) ) {\n\t\t\taddMarkerElements( data.modelRange!.start, data.viewItem.getAttribute( attrName + '-start-before' )!.split( ',' ) );\n\t\t}\n\n\t\tfunction addMarkerElements( position: ModelPosition, markerViewNames: Array<string> ): void {\n\t\t\tfor ( const markerViewName of markerViewNames ) {\n\t\t\t\tconst markerName = config.model( markerViewName, conversionApi );\n\t\t\t\tconst element = conversionApi.writer.createElement( '$marker', { 'data-name': markerName } );\n\n\t\t\t\tconversionApi.writer.insert( element, position );\n\n\t\t\t\tif ( data.modelCursor.isEqual( position ) ) {\n\t\t\t\t\tdata.modelCursor = data.modelCursor.getShiftedBy( 1 );\n\t\t\t\t} else {\n\t\t\t\t\tdata.modelCursor = data.modelCursor._getTransformedByInsertion( position, 1 );\n\t\t\t\t}\n\n\t\t\t\tdata.modelRange = data.modelRange!._getTransformedByInsertion( position, 1 )[ 0 ];\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * Helper function for from-view-element conversion. Checks if `config.view` directly specifies converted view element's name\n * and if so, returns it.\n *\n * @param config Conversion view config.\n * @returns View element name or `null` if name is not directly set.\n */\nfunction getViewElementNameFromConfig( viewConfig: any ): string | null {\n\tif ( typeof viewConfig == 'string' ) {\n\t\treturn viewConfig;\n\t}\n\n\tif ( typeof viewConfig == 'object' && typeof viewConfig.name == 'string' ) {\n\t\treturn viewConfig.name;\n\t}\n\n\treturn null;\n}\n\n/**\n * Helper for to-model-element conversion. Takes a config object and returns a proper converter function.\n *\n * @param config Conversion configuration.\n * @returns View to model converter.\n */\nfunction prepareToElementConverter( config: {\n\tview: MatcherPattern;\n\tmodel: string | ElementCreatorFunction;\n} ) {\n\tconst matcher = new Matcher( config.view );\n\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: UpcastConversionData<ViewElement>,\n\t\tconversionApi: UpcastConversionApi\n\t): void => {\n\t\tconst matcherResult = matcher.match( data.viewItem );\n\n\t\tif ( !matcherResult ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst match = matcherResult.match;\n\n\t\t// Force consuming element's name.\n\t\tmatch.name = true;\n\n\t\tif ( !conversionApi.consumable.test( data.viewItem, match ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst modelElement = getModelElement( config.model, data.viewItem, conversionApi );\n\n\t\tif ( !modelElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !conversionApi.safeInsert( modelElement, data.modelCursor ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconversionApi.consumable.consume( data.viewItem, match );\n\t\tconversionApi.convertChildren( data.viewItem, modelElement );\n\t\tconversionApi.updateConversionResult( modelElement, data );\n\t};\n}\n\n/**\n * Helper function for upcasting-to-element converter. Takes the model configuration, the converted view element\n * and a writer instance and returns a model element instance to be inserted in the model.\n *\n * @param model Model conversion configuration.\n * @param input The converted view node.\n * @param conversionApi The upcast conversion API.\n */\nfunction getModelElement(\n\tmodel: string | ElementCreatorFunction,\n\tinput: ViewElement,\n\tconversionApi: UpcastConversionApi\n): ModelElement | null {\n\tif ( model instanceof Function ) {\n\t\treturn model( input, conversionApi );\n\t} else {\n\t\treturn conversionApi.writer.createElement( model );\n\t}\n}\n\n/**\n * Helper function view-attribute-to-model-attribute helper. Normalizes `config.view` which was set as `String` or\n * as an `Object` with `key`, `value` and `name` properties. Normalized `config.view` has is compatible with\n * {@link module:engine/view/matcher~MatcherPattern}.\n *\n * @param config Conversion config.\n * @returns Key of the converted view attribute.\n */\nfunction normalizeViewAttributeKeyValueConfig( config: any ) {\n\tif ( typeof config.view == 'string' ) {\n\t\tconfig.view = { key: config.view };\n\t}\n\n\tconst key: string = config.view.key;\n\tlet normalized: MatcherPattern;\n\n\tif ( key == 'class' || key == 'style' ) {\n\t\tconst keyName = key == 'class' ? 'classes' : 'styles';\n\n\t\tnormalized = {\n\t\t\t[ keyName ]: config.view.value\n\t\t};\n\t} else {\n\t\tconst value = typeof config.view.value == 'undefined' ? /[\\s\\S]*/ : config.view.value;\n\n\t\tnormalized = {\n\t\t\tattributes: {\n\t\t\t\t[ key ]: value\n\t\t\t}\n\t\t};\n\t}\n\n\tif ( config.view.name ) {\n\t\tnormalized.name = config.view.name;\n\t}\n\n\tconfig.view = normalized;\n\n\treturn key;\n}\n\n/**\n * Helper function that normalizes `config.model` in from-model-attribute conversion. `config.model` can be set\n * as a `String`, an `Object` with only `key` property or an `Object` with `key` and `value` properties. Normalized\n * `config.model` is an `Object` with `key` and `value` properties.\n *\n * @param config Conversion config.\n * @param viewAttributeKeyToCopy Key of the converted view attribute. If it is set, model attribute value\n * will be equal to view attribute value.\n */\nfunction normalizeModelAttributeConfig( config: any, viewAttributeKeyToCopy: string | null = null ) {\n\tconst defaultModelValue = viewAttributeKeyToCopy === null ? true :\n\t\t( viewElement: ViewElement ) => viewElement.getAttribute( viewAttributeKeyToCopy );\n\n\tconst key = typeof config.model != 'object' ? config.model : config.model.key;\n\tconst value = typeof config.model != 'object' || typeof config.model.value == 'undefined' ? defaultModelValue : config.model.value;\n\n\tconfig.model = { key, value };\n}\n\n/**\n * Helper for to-model-attribute conversion. Takes the model attribute name and conversion configuration and returns\n * a proper converter function.\n *\n * @param config Conversion configuration. It is possible to provide multiple configurations in an array.\n * @param shallow If set to `true` the attribute will be set only on top-level nodes. Otherwise, it will be set\n * on all elements in the range.\n */\nfunction prepareToAttributeConverter(\n\tconfig: {\n\t\tview: MatcherPattern;\n\t\tmodel: {\n\t\t\tkey: string;\n\t\t\tvalue: AttributeCreatorFunction | unknown;\n\t\t};\n\t},\n\tshallow: boolean\n) {\n\tconst matcher = new Matcher( config.view );\n\n\treturn (\n\t\tevt: EventInfo,\n\t\tdata: UpcastConversionData<ViewElement>,\n\t\tconversionApi: UpcastConversionApi\n\t): void => {\n\t\t// Converting an attribute of an element that has not been converted to anything does not make sense\n\t\t// because there will be nowhere to set that attribute on. At this stage, the element should've already\n\t\t// been converted (https://github.com/ckeditor/ckeditor5/issues/11000).\n\t\tif ( !data.modelRange && shallow ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst match = matcher.match( data.viewItem );\n\n\t\t// If there is no match, this callback should not do anything.\n\t\tif ( !match ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( onlyViewNameIsDefined( config.view, data.viewItem ) ) {\n\t\t\tmatch.match.name = true;\n\t\t} else {\n\t\t\t// Do not test `name` consumable because it could get consumed already while upcasting some other attribute\n\t\t\t// on the same element (for example <span class=\"big\" style=\"color: red\">foo</span>).\n\t\t\tdelete match.match.name;\n\t\t}\n\n\t\t// Try to consume appropriate values from consumable values list.\n\t\tif ( !conversionApi.consumable.test( data.viewItem, match.match ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst modelKey = config.model.key;\n\t\tconst modelValue: unknown = typeof config.model.value == 'function' ?\n\t\t\tconfig.model.value( data.viewItem, conversionApi ) : config.model.value;\n\n\t\t// Do not convert if attribute building function returned falsy value.\n\t\tif ( modelValue === null ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Since we are converting to attribute we need a range on which we will set the attribute.\n\t\t// If the range is not created yet, let's create it by converting children of the current node first.\n\t\tif ( !data.modelRange ) {\n\t\t\t// Convert children and set conversion result as a current data.\n\t\t\tObject.assign( data, conversionApi.convertChildren( data.viewItem, data.modelCursor ) );\n\t\t}\n\n\t\t// Set attribute on current `output`. `Schema` is checked inside this helper function.\n\t\tconst attributeWasSet = setAttributeOn( data.modelRange!, { key: modelKey, value: modelValue }, shallow, conversionApi );\n\n\t\t// It may happen that a converter will try to set an attribute that is not allowed in the given context.\n\t\t// In such a situation we cannot consume the attribute. See: https://github.com/ckeditor/ckeditor5/pull/9249#issuecomment-815658459.\n\t\tif ( attributeWasSet ) {\n\t\t\t// Verify if the element itself wasn't consumed yet. It could be consumed already while upcasting some other attribute\n\t\t\t// on the same element (for example <span class=\"big\" style=\"color: red\">foo</span>).\n\t\t\t// We need to consume it so other features (especially GHS) won't try to convert it.\n\t\t\t// Note that it's not tested by the other element-to-attribute converters whether an element was consumed before\n\t\t\t// (in case of converters that the element itself is just a context and not the primary information to convert).\n\t\t\tif ( conversionApi.consumable.test( data.viewItem, { name: true } ) ) {\n\t\t\t\tmatch.match.name = true;\n\t\t\t}\n\n\t\t\tconversionApi.consumable.consume( data.viewItem, match.match );\n\t\t}\n\t};\n}\n\n/**\n * Helper function that checks if element name should be consumed in attribute converters.\n *\n * @param viewConfig Conversion view config.\n */\nfunction onlyViewNameIsDefined( viewConfig: any, viewItem: ViewElement ): boolean {\n\t// https://github.com/ckeditor/ckeditor5-engine/issues/1786\n\tconst configToTest = typeof viewConfig == 'function' ? viewConfig( viewItem ) : viewConfig;\n\n\tif ( typeof configToTest == 'object' && !getViewElementNameFromConfig( configToTest ) ) {\n\t\treturn false;\n\t}\n\n\treturn !configToTest.classes && !configToTest.attributes && !configToTest.styles;\n}\n\n/**\n * Helper function for to-model-attribute converter. Sets model attribute on given range. Checks {@link module:engine/model/schema~Schema}\n * to ensure proper model structure.\n *\n * If any node on the given range has already defined an attribute with the same name, its value will not be updated.\n *\n * @param modelRange Model range on which attribute should be set.\n * @param modelAttribute Model attribute to set.\n * @param conversionApi Conversion API.\n * @param shallow If set to `true` the attribute will be set only on top-level nodes. Otherwise, it will be set\n * on all elements in the range.\n * @returns `true` if attribute was set on at least one node from given `modelRange`.\n */\nfunction setAttributeOn(\n\tmodelRange: ModelRange,\n\tmodelAttribute: {\n\t\tkey: string;\n\t\tvalue: unknown;\n\t},\n\tshallow: boolean,\n\tconversionApi: UpcastConversionApi\n): boolean {\n\tlet result = false;\n\n\t// Set attribute on each item in range according to Schema.\n\tfor ( const node of Array.from( modelRange.getItems( { shallow } ) ) ) {\n\t\t// Skip if not allowed.\n\t\tif ( !conversionApi.schema.checkAttribute( node, modelAttribute.key ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Mark the node as consumed even if the attribute will not be updated because it's in a valid context (schema)\n\t\t// and would be converted if the attribute wouldn't be present. See #8921.\n\t\tresult = true;\n\n\t\t// Do not override the attribute if it's already present.\n\t\tif ( node.hasAttribute( modelAttribute.key ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversionApi.writer.setAttribute( modelAttribute.key, modelAttribute.value, node );\n\t}\n\n\treturn result;\n}\n\n/**\n * Helper function for upcasting-to-marker conversion. Takes the config in a format requested by `upcastElementToMarker()`\n * function and converts it to a format that is supported by `upcastElementToElement()` function.\n */\nfunction normalizeElementToMarkerModelConfig( model: string | MarkerFromElementCreatorFunction ): ElementCreatorFunction {\n\treturn ( viewElement, conversionApi ) => {\n\t\tconst markerName = typeof model == 'string' ? model : model( viewElement, conversionApi );\n\n\t\treturn conversionApi.writer.createElement( '$marker', { 'data-name': markerName } );\n\t};\n}\n\n/**\n * Helper function for upcasting-to-marker conversion. Takes the config in a format requested by `upcastDataToMarker()`\n * function and converts it to a format that is supported by `upcastElementToElement()` function.\n */\nfunction normalizeDataToMarkerConfig(\n\tconfig: {\n\t\tview: string;\n\t\tmodel: MarkerFromAttributeCreatorFunction;\n\t},\n\ttype: string\n) {\n\tconst elementCreatorFunction: ElementCreatorFunction = ( viewElement, conversionApi ) => {\n\t\tconst viewName = viewElement.getAttribute( 'name' )!;\n\t\tconst markerName = config.model( viewName, conversionApi );\n\n\t\treturn conversionApi.writer.createElement( '$marker', { 'data-name': markerName } );\n\t};\n\n\treturn {\n\t\t// Upcast <markerGroup-start> and <markerGroup-end> elements.\n\t\tview: `${ config.view }-${ type }`,\n\t\tmodel: elementCreatorFunction\n\t};\n}\n\nexport type ElementCreatorFunction = (\n\tviewElement: ViewElement,\n\tconversionApi: UpcastConversionApi\n) => ModelElement | null;\n\nexport type AttributeCreatorFunction = (\n\tmodelElement: ModelElement,\n\tconversionApi: UpcastConversionApi\n) => unknown;\n\nexport type MarkerFromElementCreatorFunction = (\n\tviewElement: ViewElement,\n\tconversionApi: UpcastConversionApi\n) => string;\n\nexport type MarkerFromAttributeCreatorFunction = (\n\tattributeValue: string,\n\tconversionApi: UpcastConversionApi\n) => string;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/utils/selection-post-fixer\n */\n\nimport Position from '../position';\nimport Range from '../range';\n\nimport type DocumentFragment from '../documentfragment';\nimport type Model from '../model';\nimport type Node from '../node';\nimport type Schema from '../schema';\nimport type Writer from '../writer';\nimport type Element from '../element';\n\n/**\n * Injects selection post-fixer to the model.\n *\n * The role of the selection post-fixer is to ensure that the selection is in a correct place\n * after a {@link module:engine/model/model~Model#change `change()`} block was executed.\n *\n * The correct position means that:\n *\n * * All collapsed selection ranges are in a place where the {@link module:engine/model/schema~Schema}\n * allows a `$text`.\n * * None of the selection's non-collapsed ranges crosses a {@link module:engine/model/schema~Schema#isLimit limit element}\n * boundary (a range must be rooted within one limit element).\n * * Only {@link module:engine/model/schema~Schema#isSelectable selectable elements} can be selected from the outside\n * (e.g. `[<paragraph>foo</paragraph>]` is invalid). This rule applies independently to both selection ends, so this\n * selection is correct: `<paragraph>f[oo</paragraph><imageBlock></imageBlock>]`.\n *\n * If the position is not correct, the post-fixer will automatically correct it.\n *\n * ## Fixing a non-collapsed selection\n *\n * See as an example a selection that starts in a P1 element and ends inside the text of a TD element\n * (`[` and `]` are range boundaries and `(l)` denotes an element defined as `isLimit=true`):\n *\n * ```\n * root\n * |- element P1\n * | |- \"foo\" root\n * |- element TABLE (l) P1 TABLE P2\n * | |- element TR (l) f o[o TR TR b a r\n * | | |- element TD (l) TD TD\n * | | |- \"aaa\" a]a a b b b\n * | |- element TR (l)\n * | | |- element TD (l) ||\n * | | |- \"bbb\" ||\n * |- element P2 VV\n * | |- \"bar\"\n * root\n * P1 TABLE] P2\n * f o[o TR TR b a r\n * TD TD\n * a a a b b b\n * ```\n *\n * In the example above, the TABLE, TR and TD are defined as `isLimit=true` in the schema. The range which is not contained within\n * a single limit element must be expanded to select the outermost limit element. The range end is inside the text node of the TD element.\n * As the TD element is a child of the TR and TABLE elements, where both are defined as `isLimit=true` in the schema, the range must be\n * expanded to select the whole TABLE element.\n *\n * **Note** If the selection contains multiple ranges, the method returns a minimal set of ranges that are not intersecting after expanding\n * them to select `isLimit=true` elements.\n */\nexport function injectSelectionPostFixer( model: Model ): void {\n\tmodel.document.registerPostFixer( writer => selectionPostFixer( writer, model ) );\n}\n\n/**\n * The selection post-fixer.\n */\nfunction selectionPostFixer( writer: Writer, model: Model ): boolean {\n\tconst selection = model.document.selection;\n\tconst schema = model.schema;\n\n\tconst ranges = [];\n\n\tlet wasFixed = false;\n\n\tfor ( const modelRange of selection.getRanges() ) {\n\t\t// Go through all ranges in selection and try fixing each of them.\n\t\t// Those ranges might overlap but will be corrected later.\n\t\tconst correctedRange = tryFixingRange( modelRange, schema );\n\n\t\t// \"Selection fixing\" algorithms sometimes get lost. In consequence, it may happen\n\t\t// that a new range is returned but, in fact, it has the same positions as the original\n\t\t// range anyway. If this range is not discarded, a new selection will be set and that,\n\t\t// for instance, would destroy the selection attributes. Let's make sure that the post-fixer\n\t\t// actually worked first before setting a new selection.\n\t\t//\n\t\t// https://github.com/ckeditor/ckeditor5/issues/6693\n\t\tif ( correctedRange && !correctedRange.isEqual( modelRange ) ) {\n\t\t\tranges.push( correctedRange );\n\t\t\twasFixed = true;\n\t\t} else {\n\t\t\tranges.push( modelRange );\n\t\t}\n\t}\n\n\t// If any of ranges were corrected update the selection.\n\tif ( wasFixed ) {\n\t\twriter.setSelection( mergeIntersectingRanges( ranges ), { backward: selection.isBackward } );\n\t}\n\n\treturn false;\n}\n\n/**\n * Tries fixing a range if it's incorrect.\n *\n * **Note:** This helper is used by the selection post-fixer and to fix the `beforeinput` target ranges.\n *\n * @returns Returns fixed range or null if range is valid.\n */\nexport function tryFixingRange( range: Range, schema: Schema ): Range | null {\n\tif ( range.isCollapsed ) {\n\t\treturn tryFixingCollapsedRange( range, schema );\n\t}\n\n\treturn tryFixingNonCollapsedRage( range, schema );\n}\n\n/**\n * Tries to fix collapsed ranges.\n *\n * * Fixes situation when a range is in a place where $text is not allowed\n *\n * @param range Collapsed range to fix.\n * @returns Returns fixed range or null if range is valid.\n */\nfunction tryFixingCollapsedRange( range: Range, schema: Schema ) {\n\tconst originalPosition = range.start;\n\n\tconst nearestSelectionRange = schema.getNearestSelectionRange( originalPosition );\n\n\t// This might be null, i.e. when the editor data is empty or the selection is inside a limit element\n\t// that doesn't allow text inside.\n\t// In the first case, there is no need to fix the selection range.\n\t// In the second, let's go up to the outer selectable element\n\tif ( !nearestSelectionRange ) {\n\t\tconst ancestorObject = originalPosition.getAncestors().reverse().find( ( item ): item is Element => schema.isObject( item ) );\n\n\t\tif ( ancestorObject ) {\n\t\t\treturn Range._createOn( ancestorObject );\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tif ( !nearestSelectionRange.isCollapsed ) {\n\t\treturn nearestSelectionRange;\n\t}\n\n\tconst fixedPosition = nearestSelectionRange.start;\n\n\t// Fixed position is the same as original - no need to return corrected range.\n\tif ( originalPosition.isEqual( fixedPosition ) ) {\n\t\treturn null;\n\t}\n\n\treturn new Range( fixedPosition );\n}\n\n/**\n * Tries to fix an expanded range.\n *\n * @param range Expanded range to fix.\n * @returns Returns fixed range or null if range is valid.\n */\nfunction tryFixingNonCollapsedRage( range: Range, schema: Schema ) {\n\tconst { start, end } = range;\n\n\tconst isTextAllowedOnStart = schema.checkChild( start, '$text' );\n\tconst isTextAllowedOnEnd = schema.checkChild( end, '$text' );\n\n\tconst startLimitElement = schema.getLimitElement( start );\n\tconst endLimitElement = schema.getLimitElement( end );\n\n\t// Ranges which both end are inside the same limit element (or root) might needs only minor fix.\n\tif ( startLimitElement === endLimitElement ) {\n\t\t// Range is valid when both position allows to place a text:\n\t\t// - <block>f[oobarba]z</block>\n\t\t// This would be \"fixed\" by a next check but as it will be the same it's better to return null so the selection stays the same.\n\t\tif ( isTextAllowedOnStart && isTextAllowedOnEnd ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Range that is on non-limit element (or is partially) must be fixed so it is placed inside the block around $text:\n\t\t// - [<block>foo</block>] -> <block>[foo]</block>\n\t\t// - [<block>foo]</block> -> <block>[foo]</block>\n\t\t// - <block>f[oo</block>] -> <block>f[oo]</block>\n\t\t// - [<block>foo</block><selectable></selectable>] -> <block>[foo</block><selectable></selectable>]\n\t\tif ( checkSelectionOnNonLimitElements( start, end, schema ) ) {\n\t\t\tconst isStartBeforeSelectable = start.nodeAfter && schema.isSelectable( start.nodeAfter );\n\t\t\tconst fixedStart = isStartBeforeSelectable ? null : schema.getNearestSelectionRange( start, 'forward' );\n\n\t\t\tconst isEndAfterSelectable = end.nodeBefore && schema.isSelectable( end.nodeBefore );\n\t\t\tconst fixedEnd = isEndAfterSelectable ? null : schema.getNearestSelectionRange( end, 'backward' );\n\n\t\t\t// The schema.getNearestSelectionRange might return null - if that happens use original position.\n\t\t\tconst rangeStart = fixedStart ? fixedStart.start : start;\n\t\t\tconst rangeEnd = fixedEnd ? fixedEnd.end : end;\n\n\t\t\treturn new Range( rangeStart, rangeEnd );\n\t\t}\n\t}\n\n\tconst isStartInLimit = startLimitElement && !startLimitElement.is( 'rootElement' );\n\tconst isEndInLimit = endLimitElement && !endLimitElement.is( 'rootElement' );\n\n\t// At this point we eliminated valid positions on text nodes so if one of range positions is placed inside a limit element\n\t// then the range crossed limit element boundaries and needs to be fixed.\n\tif ( isStartInLimit || isEndInLimit ) {\n\t\tconst bothInSameParent = ( start.nodeAfter && end.nodeBefore ) && start.nodeAfter.parent === end.nodeBefore.parent;\n\n\t\tconst expandStart = isStartInLimit && ( !bothInSameParent || !isSelectable( start.nodeAfter, schema ) );\n\t\tconst expandEnd = isEndInLimit && ( !bothInSameParent || !isSelectable( end.nodeBefore, schema ) );\n\n\t\t// Although we've already found limit element on start/end positions we must find the outer-most limit element.\n\t\t// as limit elements might be nested directly inside (ie table > tableRow > tableCell).\n\t\tlet fixedStart = start;\n\t\tlet fixedEnd = end;\n\n\t\tif ( expandStart ) {\n\t\t\tfixedStart = Position._createBefore( findOutermostLimitAncestor( startLimitElement, schema ) );\n\t\t}\n\n\t\tif ( expandEnd ) {\n\t\t\tfixedEnd = Position._createAfter( findOutermostLimitAncestor( endLimitElement, schema ) );\n\t\t}\n\n\t\treturn new Range( fixedStart, fixedEnd );\n\t}\n\n\t// Range was not fixed at this point so it is valid - ie it was placed around limit element already.\n\treturn null;\n}\n\n/**\n * Finds the outer-most ancestor.\n */\nfunction findOutermostLimitAncestor( startingNode: Node, schema: Schema ): Node {\n\tlet isLimitNode = startingNode;\n\tlet parent: Node | DocumentFragment = isLimitNode;\n\n\t// Find outer most isLimit block as such blocks might be nested (ie. in tables).\n\twhile ( schema.isLimit( parent ) && parent.parent ) {\n\t\tisLimitNode = parent;\n\t\tparent = parent.parent;\n\t}\n\n\treturn isLimitNode;\n}\n\n/**\n * Checks whether any of range boundaries is placed around non-limit elements.\n */\nfunction checkSelectionOnNonLimitElements( start: Position, end: Position, schema: Schema ) {\n\tconst startIsOnBlock = ( start.nodeAfter && !schema.isLimit( start.nodeAfter ) ) || schema.checkChild( start, '$text' );\n\tconst endIsOnBlock = ( end.nodeBefore && !schema.isLimit( end.nodeBefore ) ) || schema.checkChild( end, '$text' );\n\n\t// We should fix such selection when one of those nodes needs fixing.\n\treturn startIsOnBlock || endIsOnBlock;\n}\n\n/**\n * Returns a minimal non-intersecting array of ranges without duplicates.\n *\n * @param ranges Ranges to merge.\n * @returns Array of unique and non-intersecting ranges.\n */\nexport function mergeIntersectingRanges( ranges: Array<Range> ): Array<Range> {\n\tconst rangesToMerge = [ ...ranges ];\n\tconst rangeIndexesToRemove = new Set();\n\tlet currentRangeIndex = 1;\n\n\twhile ( currentRangeIndex < rangesToMerge.length ) {\n\t\tconst currentRange = rangesToMerge[ currentRangeIndex ];\n\t\tconst previousRanges = rangesToMerge.slice( 0, currentRangeIndex );\n\n\t\tfor ( const [ previousRangeIndex, previousRange ] of previousRanges.entries() ) {\n\t\t\tif ( rangeIndexesToRemove.has( previousRangeIndex ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( currentRange.isEqual( previousRange ) ) {\n\t\t\t\trangeIndexesToRemove.add( previousRangeIndex );\n\t\t\t} else if ( currentRange.isIntersecting( previousRange ) ) {\n\t\t\t\trangeIndexesToRemove.add( previousRangeIndex );\n\t\t\t\trangeIndexesToRemove.add( currentRangeIndex );\n\n\t\t\t\tconst mergedRange = currentRange.getJoined( previousRange );\n\t\t\t\trangesToMerge.push( mergedRange! );\n\t\t\t}\n\t\t}\n\n\t\tcurrentRangeIndex++;\n\t}\n\n\tconst nonIntersectingRanges = rangesToMerge.filter( ( _, index ) => !rangeIndexesToRemove.has( index ) );\n\n\treturn nonIntersectingRanges;\n}\n\n/**\n * Checks if node exists and if it's a selectable.\n */\nfunction isSelectable( node: Node, schema: Schema ) {\n\treturn node && schema.isSelectable( node );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/controller/editingcontroller\n */\n\nimport {\n\tCKEditorError,\n\tObservableMixin,\n\tenv,\n\ttype GetCallback\n} from '@ckeditor/ckeditor5-utils';\n\nimport RootEditableElement from '../view/rooteditableelement';\nimport View from '../view/view';\nimport Mapper from '../conversion/mapper';\nimport DowncastDispatcher, {\n\ttype DowncastInsertEvent,\n\ttype DowncastRemoveEvent,\n\ttype DowncastSelectionEvent,\n\ttype DowncastCleanSelectionEvent\n} from '../conversion/downcastdispatcher';\nimport {\n\tcleanSelection,\n\tconvertCollapsedSelection,\n\tconvertRangeSelection,\n\tinsertAttributesAndChildren,\n\tinsertText,\n\tremove\n} from '../conversion/downcasthelpers';\n\nimport { convertSelectionChange } from '../conversion/upcasthelpers';\n\nimport { tryFixingRange } from '../model/utils/selection-post-fixer';\n\nimport type { default as Model, AfterChangesEvent, BeforeChangesEvent } from '../model/model';\nimport type ModelItem from '../model/item';\nimport type ModelText from '../model/text';\nimport type ModelTextProxy from '../model/textproxy';\nimport type Schema from '../model/schema';\nimport type { DocumentChangeEvent } from '../model/document';\nimport type { Marker } from '../model/markercollection';\nimport type { StylesProcessor } from '../view/stylesmap';\nimport type { ViewDocumentSelectionChangeEvent } from '../view/observer/selectionobserver';\nimport type { ViewDocumentInputEvent } from '../view/observer/inputobserver';\n\n// @if CK_DEBUG_ENGINE // const { dumpTrees, initDocumentDumping } = require( '../dev-utils/utils' );\n\n/**\n * A controller for the editing pipeline. The editing pipeline controls the {@link ~EditingController#model model} rendering,\n * including selection handling. It also creates the {@link ~EditingController#view view} which builds a\n * browser-independent virtualization over the DOM elements. The editing controller also attaches default converters.\n */\nexport default class EditingController extends ObservableMixin() {\n\t/**\n\t * Editor model.\n\t */\n\tpublic readonly model: Model;\n\n\t/**\n\t * Editing view controller.\n\t */\n\tpublic readonly view: View;\n\n\t/**\n\t * A mapper that describes the model-view binding.\n\t */\n\tpublic readonly mapper: Mapper;\n\n\t/**\n\t * Downcast dispatcher that converts changes from the model to the {@link #view editing view}.\n\t */\n\tpublic readonly downcastDispatcher: DowncastDispatcher;\n\n\t/**\n\t * Creates an editing controller instance.\n\t *\n\t * @param model Editing model.\n\t * @param stylesProcessor The styles processor instance.\n\t */\n\tconstructor( model: Model, stylesProcessor: StylesProcessor ) {\n\t\tsuper();\n\n\t\tthis.model = model;\n\t\tthis.view = new View( stylesProcessor );\n\t\tthis.mapper = new Mapper();\n\n\t\tthis.downcastDispatcher = new DowncastDispatcher( {\n\t\t\tmapper: this.mapper,\n\t\t\tschema: model.schema\n\t\t} );\n\n\t\tconst doc = this.model.document;\n\t\tconst selection = doc.selection;\n\t\tconst markers = this.model.markers;\n\n\t\t// When plugins listen on model changes (on selection change, post fixers, etc.) and change the view as a result of\n\t\t// the model's change, they might trigger view rendering before the conversion is completed (e.g. before the selection\n\t\t// is converted). We disable rendering for the length of the outermost model change() block to prevent that.\n\t\t//\n\t\t// See https://github.com/ckeditor/ckeditor5-engine/issues/1528\n\t\tthis.listenTo<BeforeChangesEvent>( this.model, '_beforeChanges', () => {\n\t\t\tthis.view._disableRendering( true );\n\t\t}, { priority: 'highest' } );\n\n\t\tthis.listenTo<AfterChangesEvent>( this.model, '_afterChanges', () => {\n\t\t\tthis.view._disableRendering( false );\n\t\t}, { priority: 'lowest' } );\n\n\t\t// Whenever model document is changed, convert those changes to the view (using model.Document#differ).\n\t\t// Do it on 'low' priority, so changes are converted after other listeners did their job.\n\t\t// Also convert model selection.\n\t\tthis.listenTo<DocumentChangeEvent>( doc, 'change', () => {\n\t\t\tthis.view.change( writer => {\n\t\t\t\tthis.downcastDispatcher.convertChanges( doc.differ, markers, writer );\n\t\t\t\tthis.downcastDispatcher.convertSelection( selection, markers, writer );\n\t\t\t} );\n\t\t}, { priority: 'low' } );\n\n\t\t// Convert selection from the view to the model when it changes in the view.\n\t\tthis.listenTo<ViewDocumentSelectionChangeEvent>( this.view.document, 'selectionChange',\n\t\t\tconvertSelectionChange( this.model, this.mapper )\n\t\t);\n\n\t\t// Fix `beforeinput` target ranges so that they map to the valid model ranges.\n\t\tthis.listenTo<ViewDocumentInputEvent>( this.view.document, 'beforeinput',\n\t\t\tfixTargetRanges( this.mapper, this.model.schema, this.view ),\n\t\t\t{ priority: 'high' }\n\t\t);\n\n\t\t// Attach default model converters.\n\t\tthis.downcastDispatcher.on<DowncastInsertEvent<ModelText | ModelTextProxy>>( 'insert:$text', insertText(), { priority: 'lowest' } );\n\t\tthis.downcastDispatcher.on<DowncastInsertEvent>( 'insert', insertAttributesAndChildren(), { priority: 'lowest' } );\n\t\tthis.downcastDispatcher.on<DowncastRemoveEvent>( 'remove', remove(), { priority: 'low' } );\n\n\t\t// Attach default model selection converters.\n\t\tthis.downcastDispatcher.on<DowncastCleanSelectionEvent>( 'cleanSelection', cleanSelection() );\n\t\tthis.downcastDispatcher.on<DowncastSelectionEvent>( 'selection', convertRangeSelection(), { priority: 'low' } );\n\t\tthis.downcastDispatcher.on<DowncastSelectionEvent>( 'selection', convertCollapsedSelection(), { priority: 'low' } );\n\n\t\t// Binds {@link module:engine/view/document~Document#roots view roots collection} to\n\t\t// {@link module:engine/model/document~Document#roots model roots collection} so creating\n\t\t// model root automatically creates corresponding view root.\n\t\tthis.view.document.roots.bindTo( this.model.document.roots ).using( root => {\n\t\t\t// $graveyard is a special root that has no reflection in the view.\n\t\t\tif ( root.rootName == '$graveyard' ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst viewRoot = new RootEditableElement( this.view.document, root.name );\n\n\t\t\tviewRoot.rootName = root.rootName;\n\t\t\tthis.mapper.bindElements( root, viewRoot );\n\n\t\t\treturn viewRoot;\n\t\t} );\n\n\t\t// @if CK_DEBUG_ENGINE // initDocumentDumping( this.model.document );\n\t\t// @if CK_DEBUG_ENGINE // initDocumentDumping( this.view.document );\n\n\t\t// @if CK_DEBUG_ENGINE // dumpTrees( this.model.document, this.model.document.version );\n\t\t// @if CK_DEBUG_ENGINE // dumpTrees( this.view.document, this.model.document.version );\n\n\t\t// @if CK_DEBUG_ENGINE // this.model.document.on( 'change', () => {\n\t\t// @if CK_DEBUG_ENGINE //\tdumpTrees( this.view.document, this.model.document.version );\n\t\t// @if CK_DEBUG_ENGINE // }, { priority: 'lowest' } );\n\t}\n\n\t/**\n\t * Removes all event listeners attached to the `EditingController`. Destroys all objects created\n\t * by `EditingController` that need to be destroyed.\n\t */\n\tpublic destroy(): void {\n\t\tthis.view.destroy();\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * Calling this method will refresh the marker by triggering the downcast conversion for it.\n\t *\n\t * Reconverting the marker is useful when you want to change its {@link module:engine/view/element~Element view element}\n\t * without changing any marker data. For instance:\n\t *\n\t * ```ts\n\t * let isCommentActive = false;\n\t *\n\t * model.conversion.markerToHighlight( {\n\t * \tmodel: 'comment',\n\t * \tview: data => {\n\t * \t\tconst classes = [ 'comment-marker' ];\n\t *\n\t * \t\tif ( isCommentActive ) {\n\t * \t\t\tclasses.push( 'comment-marker--active' );\n\t * \t\t}\n\t *\n\t * \t\treturn { classes };\n\t * \t}\n\t * } );\n\t *\n\t * // ...\n\t *\n\t * // Change the property that indicates if marker is displayed as active or not.\n\t * isCommentActive = true;\n\t *\n\t * // Reconverting will downcast and synchronize the marker with the new isCommentActive state value.\n\t * editor.editing.reconvertMarker( 'comment' );\n\t * ```\n\t *\n\t * **Note**: If you want to reconvert a model item, use {@link #reconvertItem} instead.\n\t *\n\t * @param markerOrName Name of a marker to update, or a marker instance.\n\t */\n\tpublic reconvertMarker( markerOrName: Marker | string ): void {\n\t\tconst markerName = typeof markerOrName == 'string' ? markerOrName : markerOrName.name;\n\t\tconst currentMarker = this.model.markers.get( markerName );\n\n\t\tif ( !currentMarker ) {\n\t\t\t/**\n\t\t\t * The marker with the provided name does not exist and cannot be reconverted.\n\t\t\t *\n\t\t\t * @error editingcontroller-reconvertmarker-marker-not-exist\n\t\t\t * @param {String} markerName The name of the reconverted marker.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'editingcontroller-reconvertmarker-marker-not-exist', this, { markerName } );\n\t\t}\n\n\t\tthis.model.change( () => {\n\t\t\tthis.model.markers._refresh( currentMarker );\n\t\t} );\n\t}\n\n\t/**\n\t * Calling this method will downcast a model item on demand (by requesting a refresh in the {@link module:engine/model/differ~Differ}).\n\t *\n\t * You can use it if you want the view representation of a specific item updated as a response to external modifications. For instance,\n\t * when the view structure depends not only on the associated model data but also on some external state.\n\t *\n\t * **Note**: If you want to reconvert a model marker, use {@link #reconvertMarker} instead.\n\t *\n\t * @param item Item to refresh.\n\t */\n\tpublic reconvertItem( item: ModelItem ): void {\n\t\tthis.model.change( () => {\n\t\t\tthis.model.document.differ._refreshItem( item );\n\t\t} );\n\t}\n}\n\n/**\n * Checks whether the target ranges provided by the `beforeInput` event can be properly mapped to model ranges and fixes them if needed.\n *\n * This is using the same logic as the selection post-fixer.\n */\nfunction fixTargetRanges( mapper: Mapper, schema: Schema, view: View ): GetCallback<ViewDocumentInputEvent> {\n\treturn ( evt, data ) => {\n\t\t// The Renderer is disabled while composing on non-android browsers, so we can't be sure that target ranges\n\t\t// could be properly mapped to view and model because the DOM and view tree drifted apart.\n\t\tif ( view.document.isComposing && !env.isAndroid ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( let i = 0; i < data.targetRanges.length; i++ ) {\n\t\t\tconst viewRange = data.targetRanges[ i ];\n\t\t\tconst modelRange = mapper.toModelRange( viewRange );\n\t\t\tconst correctedRange = tryFixingRange( modelRange, schema );\n\n\t\t\tif ( !correctedRange || correctedRange.isEqual( modelRange ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tdata.targetRanges[ i ] = mapper.toViewRange( correctedRange );\n\t\t}\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/conversion/viewconsumable\n */\n\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\n\nimport type Element from '../view/element';\nimport type Node from '../view/node';\nimport type Text from '../view/text';\nimport type DocumentFragment from '../view/documentfragment';\nimport type { Match } from '../view/matcher';\n\nimport { isArray } from 'lodash-es';\n\n/**\n * Class used for handling consumption of view {@link module:engine/view/element~Element elements},\n * {@link module:engine/view/text~Text text nodes} and {@link module:engine/view/documentfragment~DocumentFragment document fragments}.\n * Element's name and its parts (attributes, classes and styles) can be consumed separately. Consuming an element's name\n * does not consume its attributes, classes and styles.\n * To add items for consumption use {@link module:engine/conversion/viewconsumable~ViewConsumable#add add method}.\n * To test items use {@link module:engine/conversion/viewconsumable~ViewConsumable#test test method}.\n * To consume items use {@link module:engine/conversion/viewconsumable~ViewConsumable#consume consume method}.\n * To revert already consumed items use {@link module:engine/conversion/viewconsumable~ViewConsumable#revert revert method}.\n *\n * ```ts\n * viewConsumable.add( element, { name: true } ); // Adds element's name as ready to be consumed.\n * viewConsumable.add( textNode ); // Adds text node for consumption.\n * viewConsumable.add( docFragment ); // Adds document fragment for consumption.\n * viewConsumable.test( element, { name: true } ); // Tests if element's name can be consumed.\n * viewConsumable.test( textNode ); // Tests if text node can be consumed.\n * viewConsumable.test( docFragment ); // Tests if document fragment can be consumed.\n * viewConsumable.consume( element, { name: true } ); // Consume element's name.\n * viewConsumable.consume( textNode ); // Consume text node.\n * viewConsumable.consume( docFragment ); // Consume document fragment.\n * viewConsumable.revert( element, { name: true } ); // Revert already consumed element's name.\n * viewConsumable.revert( textNode ); // Revert already consumed text node.\n * viewConsumable.revert( docFragment ); // Revert already consumed document fragment.\n * ```\n */\nexport default class ViewConsumable {\n\t/**\n\t * Map of consumable elements. If {@link module:engine/view/element~Element element} is used as a key,\n\t * {@link module:engine/conversion/viewconsumable~ViewElementConsumables ViewElementConsumables} instance is stored as value.\n\t * For {@link module:engine/view/text~Text text nodes} and\n\t * {@link module:engine/view/documentfragment~DocumentFragment document fragments} boolean value is stored as value.\n\t */\n\tprivate _consumables = new Map<Node | DocumentFragment, ViewElementConsumables | boolean>();\n\n\t/**\n\t * Adds {@link module:engine/view/text~Text text node} or\n\t * {@link module:engine/view/documentfragment~DocumentFragment document fragment} as ready to be consumed.\n\t *\n\t * ```ts\n\t * viewConsumable.add( textNode ); // Adds text node to consume.\n\t * viewConsumable.add( docFragment ); // Adds document fragment to consume.\n\t * ```\n\t *\n\t * See also: {@link #add:ELEMENT `add( element, consumables )`}.\n\t *\n\t * @label TEXT_OR_FRAGMENT\n\t */\n\tpublic add(\n\t\ttextOrDocumentFragment: Text | DocumentFragment\n\t): void;\n\n\t/**\n\t * Adds {@link module:engine/view/element~Element view element} as ready to be consumed.\n\t *\n\t * ```ts\n\t * viewConsumable.add( p, { name: true } ); // Adds element's name to consume.\n\t * viewConsumable.add( p, { attributes: 'name' } ); // Adds element's attribute.\n\t * viewConsumable.add( p, { classes: 'foobar' } ); // Adds element's class.\n\t * viewConsumable.add( p, { styles: 'color' } ); // Adds element's style\n\t * viewConsumable.add( p, { attributes: 'name', styles: 'color' } ); // Adds attribute and style.\n\t * viewConsumable.add( p, { classes: [ 'baz', 'bar' ] } ); // Multiple consumables can be provided.\n\t * ```\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `viewconsumable-invalid-attribute` when `class` or `style`\n\t * attribute is provided - it should be handled separately by providing actual style/class.\n\t *\n\t * ```ts\n\t * viewConsumable.add( p, { attributes: 'style' } ); // This call will throw an exception.\n\t * viewConsumable.add( p, { styles: 'color' } ); // This is properly handled style.\n\t * ```\n\t *\n\t * See also: {@link #add:TEXT_OR_FRAGMENT `add( textOrDocumentFragment )`}.\n\t *\n\t * @label ELEMENT\n\t * @param consumables Used only if first parameter is {@link module:engine/view/element~Element view element} instance.\n\t * @param consumables.name If set to true element's name will be included.\n\t * @param consumables.attributes Attribute name or array of attribute names.\n\t * @param consumables.classes Class name or array of class names.\n\t * @param consumables.styles Style name or array of style names.\n\t */\n\tpublic add(\n\t\telement: Element,\n\t\tconsumables: Consumables\n\t): void;\n\n\tpublic add(\n\t\telement: Node | DocumentFragment,\n\t\tconsumables?: Consumables\n\t): void {\n\t\tlet elementConsumables: ViewElementConsumables;\n\n\t\t// For text nodes and document fragments just mark them as consumable.\n\t\tif ( element.is( '$text' ) || element.is( 'documentFragment' ) ) {\n\t\t\tthis._consumables.set( element, true );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// For elements create new ViewElementConsumables or update already existing one.\n\t\tif ( !this._consumables.has( element ) ) {\n\t\t\telementConsumables = new ViewElementConsumables( element );\n\t\t\tthis._consumables.set( element, elementConsumables );\n\t\t} else {\n\t\t\telementConsumables = this._consumables.get( element ) as any;\n\t\t}\n\n\t\telementConsumables.add( consumables! );\n\t}\n\n\t/**\n\t * Tests if {@link module:engine/view/element~Element view element}, {@link module:engine/view/text~Text text node} or\n\t * {@link module:engine/view/documentfragment~DocumentFragment document fragment} can be consumed.\n\t * It returns `true` when all items included in method's call can be consumed. Returns `false` when\n\t * first already consumed item is found and `null` when first non-consumable item is found.\n\t *\n\t * ```ts\n\t * viewConsumable.test( p, { name: true } ); // Tests element's name.\n\t * viewConsumable.test( p, { attributes: 'name' } ); // Tests attribute.\n\t * viewConsumable.test( p, { classes: 'foobar' } ); // Tests class.\n\t * viewConsumable.test( p, { styles: 'color' } ); // Tests style.\n\t * viewConsumable.test( p, { attributes: 'name', styles: 'color' } ); // Tests attribute and style.\n\t * viewConsumable.test( p, { classes: [ 'baz', 'bar' ] } ); // Multiple consumables can be tested.\n\t * viewConsumable.test( textNode ); // Tests text node.\n\t * viewConsumable.test( docFragment ); // Tests document fragment.\n\t * ```\n\t *\n\t * Testing classes and styles as attribute will test if all added classes/styles can be consumed.\n\t *\n\t * ```ts\n\t * viewConsumable.test( p, { attributes: 'class' } ); // Tests if all added classes can be consumed.\n\t * viewConsumable.test( p, { attributes: 'style' } ); // Tests if all added styles can be consumed.\n\t * ```\n\t *\n\t * @param consumables Used only if first parameter is {@link module:engine/view/element~Element view element} instance.\n\t * @param consumables.name If set to true element's name will be included.\n\t * @param consumables.attributes Attribute name or array of attribute names.\n\t * @param consumables.classes Class name or array of class names.\n\t * @param consumables.styles Style name or array of style names.\n\t * @returns Returns `true` when all items included in method's call can be consumed. Returns `false`\n\t * when first already consumed item is found and `null` when first non-consumable item is found.\n\t */\n\tpublic test( element: Node | DocumentFragment, consumables?: Consumables | Match ): boolean | null {\n\t\tconst elementConsumables = this._consumables.get( element );\n\n\t\tif ( elementConsumables === undefined ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// For text nodes and document fragments return stored boolean value.\n\t\tif ( element.is( '$text' ) || element.is( 'documentFragment' ) ) {\n\t\t\treturn elementConsumables as boolean;\n\t\t}\n\n\t\t// For elements test consumables object.\n\t\treturn ( elementConsumables as ViewElementConsumables ).test( consumables! );\n\t}\n\n\t/**\n\t * Consumes {@link module:engine/view/element~Element view element}, {@link module:engine/view/text~Text text node} or\n\t * {@link module:engine/view/documentfragment~DocumentFragment document fragment}.\n\t * It returns `true` when all items included in method's call can be consumed, otherwise returns `false`.\n\t *\n\t * ```ts\n\t * viewConsumable.consume( p, { name: true } ); // Consumes element's name.\n\t * viewConsumable.consume( p, { attributes: 'name' } ); // Consumes element's attribute.\n\t * viewConsumable.consume( p, { classes: 'foobar' } ); // Consumes element's class.\n\t * viewConsumable.consume( p, { styles: 'color' } ); // Consumes element's style.\n\t * viewConsumable.consume( p, { attributes: 'name', styles: 'color' } ); // Consumes attribute and style.\n\t * viewConsumable.consume( p, { classes: [ 'baz', 'bar' ] } ); // Multiple consumables can be consumed.\n\t * viewConsumable.consume( textNode ); // Consumes text node.\n\t * viewConsumable.consume( docFragment ); // Consumes document fragment.\n\t * ```\n\t *\n\t * Consuming classes and styles as attribute will test if all added classes/styles can be consumed.\n\t *\n\t * ```ts\n\t * viewConsumable.consume( p, { attributes: 'class' } ); // Consume only if all added classes can be consumed.\n\t * viewConsumable.consume( p, { attributes: 'style' } ); // Consume only if all added styles can be consumed.\n\t * ```\n\t *\n\t * @param consumables Used only if first parameter is {@link module:engine/view/element~Element view element} instance.\n\t * @param consumables.name If set to true element's name will be included.\n\t * @param consumables.attributes Attribute name or array of attribute names.\n\t * @param consumables.classes Class name or array of class names.\n\t * @param consumables.styles Style name or array of style names.\n\t * @returns Returns `true` when all items included in method's call can be consumed,\n\t * otherwise returns `false`.\n\t */\n\tpublic consume( element: Node | DocumentFragment, consumables?: Consumables | Match ): boolean {\n\t\tif ( this.test( element, consumables ) ) {\n\t\t\tif ( element.is( '$text' ) || element.is( 'documentFragment' ) ) {\n\t\t\t\t// For text nodes and document fragments set value to false.\n\t\t\t\tthis._consumables.set( element, false );\n\t\t\t} else {\n\t\t\t\t// For elements - consume consumables object.\n\t\t\t\t( this._consumables.get( element ) as ViewElementConsumables ).consume( consumables! );\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Reverts {@link module:engine/view/element~Element view element}, {@link module:engine/view/text~Text text node} or\n\t * {@link module:engine/view/documentfragment~DocumentFragment document fragment} so they can be consumed once again.\n\t * Method does not revert items that were never previously added for consumption, even if they are included in\n\t * method's call.\n\t *\n\t * ```ts\n\t * viewConsumable.revert( p, { name: true } ); // Reverts element's name.\n\t * viewConsumable.revert( p, { attributes: 'name' } ); // Reverts element's attribute.\n\t * viewConsumable.revert( p, { classes: 'foobar' } ); // Reverts element's class.\n\t * viewConsumable.revert( p, { styles: 'color' } ); // Reverts element's style.\n\t * viewConsumable.revert( p, { attributes: 'name', styles: 'color' } ); // Reverts attribute and style.\n\t * viewConsumable.revert( p, { classes: [ 'baz', 'bar' ] } ); // Multiple names can be reverted.\n\t * viewConsumable.revert( textNode ); // Reverts text node.\n\t * viewConsumable.revert( docFragment ); // Reverts document fragment.\n\t * ```\n\t *\n\t * Reverting classes and styles as attribute will revert all classes/styles that were previously added for\n\t * consumption.\n\t *\n\t * ```ts\n\t * viewConsumable.revert( p, { attributes: 'class' } ); // Reverts all classes added for consumption.\n\t * viewConsumable.revert( p, { attributes: 'style' } ); // Reverts all styles added for consumption.\n\t * ```\n\t *\n\t * @param consumables Used only if first parameter is {@link module:engine/view/element~Element view element} instance.\n\t * @param consumables.name If set to true element's name will be included.\n\t * @param consumables.attributes Attribute name or array of attribute names.\n\t * @param consumables.classes Class name or array of class names.\n\t * @param consumables.styles Style name or array of style names.\n\t */\n\tpublic revert( element: Node, consumables: Consumables ): void {\n\t\tconst elementConsumables = this._consumables.get( element );\n\n\t\tif ( elementConsumables !== undefined ) {\n\t\t\tif ( element.is( '$text' ) || element.is( 'documentFragment' ) ) {\n\t\t\t\t// For text nodes and document fragments - set consumable to true.\n\t\t\t\tthis._consumables.set( element, true );\n\t\t\t} else {\n\t\t\t\t// For elements - revert items from consumables object.\n\t\t\t\t( elementConsumables as ViewElementConsumables ).revert( consumables );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Creates consumable object from {@link module:engine/view/element~Element view element}. Consumable object will include\n\t * element's name and all its attributes, classes and styles.\n\t */\n\tpublic static consumablesFromElement( element: Element ): Consumables & { element: Element } {\n\t\tconst consumables = {\n\t\t\telement,\n\t\t\tname: true,\n\t\t\tattributes: [] as Array<string>,\n\t\t\tclasses: [] as Array<string>,\n\t\t\tstyles: [] as Array<string>\n\t\t};\n\n\t\tconst attributes = element.getAttributeKeys();\n\n\t\tfor ( const attribute of attributes ) {\n\t\t\t// Skip classes and styles - will be added separately.\n\t\t\tif ( attribute == 'style' || attribute == 'class' ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconsumables.attributes.push( attribute );\n\t\t}\n\n\t\tconst classes = element.getClassNames();\n\n\t\tfor ( const className of classes ) {\n\t\t\tconsumables.classes.push( className );\n\t\t}\n\n\t\tconst styles = element.getStyleNames();\n\n\t\tfor ( const style of styles ) {\n\t\t\tconsumables.styles.push( style );\n\t\t}\n\n\t\treturn consumables;\n\t}\n\n\t/**\n\t * Creates {@link module:engine/conversion/viewconsumable~ViewConsumable ViewConsumable} instance from\n\t * {@link module:engine/view/node~Node node} or {@link module:engine/view/documentfragment~DocumentFragment document fragment}.\n\t * Instance will contain all elements, child nodes, attributes, styles and classes added for consumption.\n\t *\n\t * @param from View node or document fragment from which `ViewConsumable` will be created.\n\t * @param instance If provided, given `ViewConsumable` instance will be used\n\t * to add all consumables. It will be returned instead of a new instance.\n\t */\n\tpublic static createFrom( from: Node | DocumentFragment, instance?: ViewConsumable ): ViewConsumable {\n\t\tif ( !instance ) {\n\t\t\tinstance = new ViewConsumable();\n\t\t}\n\n\t\tif ( from.is( '$text' ) ) {\n\t\t\tinstance.add( from );\n\n\t\t\treturn instance;\n\t\t}\n\n\t\t// Add `from` itself, if it is an element.\n\t\tif ( from.is( 'element' ) ) {\n\t\t\tinstance.add( from, ViewConsumable.consumablesFromElement( from ) );\n\t\t}\n\n\t\tif ( from.is( 'documentFragment' ) ) {\n\t\t\tinstance.add( from );\n\t\t}\n\n\t\tfor ( const child of ( from as Element | DocumentFragment ).getChildren() ) {\n\t\t\tinstance = ViewConsumable.createFrom( child, instance );\n\t\t}\n\n\t\treturn instance;\n\t}\n}\n\nexport interface Consumables {\n\n\t/**\n\t * If set to true element's name will be included.\n\t */\n\tname?: boolean;\n\n\t/**\n\t * Attribute name or array of attribute names.\n\t */\n\tattributes?: string | Array<string>;\n\n\t/**\n\t * Class name or array of class names.\n\t */\n\tclasses?: string | Array<string>;\n\n\t/**\n\t * Style name or array of style names.\n\t */\n\tstyles?: string | Array<string>;\n}\n\nconst CONSUMABLE_TYPES = [ 'attributes', 'classes', 'styles' ] as const;\n\ntype ConsumableType = ( typeof CONSUMABLE_TYPES )[ number ];\n\n/**\n * This is a private helper-class for {@link module:engine/conversion/viewconsumable~ViewConsumable}.\n * It represents and manipulates consumable parts of a single {@link module:engine/view/element~Element}.\n */\nexport class ViewElementConsumables {\n\tpublic readonly element: Node | DocumentFragment;\n\n\t/**\n\t * Flag indicating if name of the element can be consumed.\n\t */\n\tprivate _canConsumeName: boolean | null;\n\n\t/**\n\t * Contains maps of element's consumables: attributes, classes and styles.\n\t */\n\tprivate readonly _consumables: Record<ConsumableType, Map<string, boolean>>;\n\n\t/**\n\t * Creates ViewElementConsumables instance.\n\t *\n\t * @param from View node or document fragment from which `ViewElementConsumables` is being created.\n\t */\n\tconstructor( from: Node | DocumentFragment ) {\n\t\tthis.element = from;\n\t\tthis._canConsumeName = null;\n\t\tthis._consumables = {\n\t\t\tattributes: new Map(),\n\t\t\tstyles: new Map(),\n\t\t\tclasses: new Map()\n\t\t};\n\t}\n\n\t/**\n\t * Adds consumable parts of the {@link module:engine/view/element~Element view element}.\n\t * Element's name itself can be marked to be consumed (when element's name is consumed its attributes, classes and\n\t * styles still could be consumed):\n\t *\n\t * ```ts\n\t * consumables.add( { name: true } );\n\t * ```\n\t *\n\t * Attributes classes and styles:\n\t *\n\t * ```ts\n\t * consumables.add( { attributes: 'title', classes: 'foo', styles: 'color' } );\n\t * consumables.add( { attributes: [ 'title', 'name' ], classes: [ 'foo', 'bar' ] );\n\t * ```\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `viewconsumable-invalid-attribute` when `class` or `style`\n\t * attribute is provided - it should be handled separately by providing `style` and `class` in consumables object.\n\t *\n\t * @param consumables Object describing which parts of the element can be consumed.\n\t * @param consumables.name If set to `true` element's name will be added as consumable.\n\t * @param consumables.attributes Attribute name or array of attribute names to add as consumable.\n\t * @param consumables.classes Class name or array of class names to add as consumable.\n\t * @param consumables.styles Style name or array of style names to add as consumable.\n\t */\n\tpublic add( consumables: Consumables ): void {\n\t\tif ( consumables.name ) {\n\t\t\tthis._canConsumeName = true;\n\t\t}\n\n\t\tfor ( const type of CONSUMABLE_TYPES ) {\n\t\t\tif ( type in consumables ) {\n\t\t\t\tthis._add( type, consumables[ type ]! );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Tests if parts of the {@link module:engine/view/node~Node view node} can be consumed.\n\t *\n\t * Element's name can be tested:\n\t *\n\t * ```ts\n\t * consumables.test( { name: true } );\n\t * ```\n\t *\n\t * Attributes classes and styles:\n\t *\n\t * ```ts\n\t * consumables.test( { attributes: 'title', classes: 'foo', styles: 'color' } );\n\t * consumables.test( { attributes: [ 'title', 'name' ], classes: [ 'foo', 'bar' ] );\n\t * ```\n\t *\n\t * @param consumables Object describing which parts of the element should be tested.\n\t * @param consumables.name If set to `true` element's name will be tested.\n\t * @param consumables.attributes Attribute name or array of attribute names to test.\n\t * @param consumables.classes Class name or array of class names to test.\n\t * @param consumables.styles Style name or array of style names to test.\n\t * @returns `true` when all tested items can be consumed, `null` when even one of the items\n\t * was never marked for consumption and `false` when even one of the items was already consumed.\n\t */\n\tpublic test( consumables: Consumables | Match ): boolean | null {\n\t\t// Check if name can be consumed.\n\t\tif ( consumables.name && !this._canConsumeName ) {\n\t\t\treturn this._canConsumeName;\n\t\t}\n\n\t\tfor ( const type of CONSUMABLE_TYPES ) {\n\t\t\tif ( type in consumables ) {\n\t\t\t\tconst value = this._test( type, consumables[ type ]! );\n\n\t\t\t\tif ( value !== true ) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return true only if all can be consumed.\n\t\treturn true;\n\t}\n\n\t/**\n\t * Consumes parts of {@link module:engine/view/element~Element view element}. This function does not check if consumable item\n\t * is already consumed - it consumes all consumable items provided.\n\t * Element's name can be consumed:\n\t *\n\t * ```ts\n\t * consumables.consume( { name: true } );\n\t * ```\n\t *\n\t * Attributes classes and styles:\n\t *\n\t * ```ts\n\t * consumables.consume( { attributes: 'title', classes: 'foo', styles: 'color' } );\n\t * consumables.consume( { attributes: [ 'title', 'name' ], classes: [ 'foo', 'bar' ] );\n\t * ```\n\t *\n\t * @param consumables Object describing which parts of the element should be consumed.\n\t * @param consumables.name If set to `true` element's name will be consumed.\n\t * @param consumables.attributes Attribute name or array of attribute names to consume.\n\t * @param consumables.classes Class name or array of class names to consume.\n\t * @param consumables.styles Style name or array of style names to consume.\n\t */\n\tpublic consume( consumables: Consumables | Match ): void {\n\t\tif ( consumables.name ) {\n\t\t\tthis._canConsumeName = false;\n\t\t}\n\n\t\tfor ( const type of CONSUMABLE_TYPES ) {\n\t\t\tif ( type in consumables ) {\n\t\t\t\tthis._consume( type, consumables[ type ]! );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Revert already consumed parts of {@link module:engine/view/element~Element view Element}, so they can be consumed once again.\n\t * Element's name can be reverted:\n\t *\n\t * ```ts\n\t * consumables.revert( { name: true } );\n\t * ```\n\t *\n\t * Attributes classes and styles:\n\t *\n\t * ```ts\n\t * consumables.revert( { attributes: 'title', classes: 'foo', styles: 'color' } );\n\t * consumables.revert( { attributes: [ 'title', 'name' ], classes: [ 'foo', 'bar' ] );\n\t * ```\n\t *\n\t * @param consumables Object describing which parts of the element should be reverted.\n\t * @param consumables.name If set to `true` element's name will be reverted.\n\t * @param consumables.attributes Attribute name or array of attribute names to revert.\n\t * @param consumables.classes Class name or array of class names to revert.\n\t * @param consumables.styles Style name or array of style names to revert.\n\t */\n\tpublic revert( consumables: Consumables ): void {\n\t\tif ( consumables.name ) {\n\t\t\tthis._canConsumeName = true;\n\t\t}\n\n\t\tfor ( const type of CONSUMABLE_TYPES ) {\n\t\t\tif ( type in consumables ) {\n\t\t\t\tthis._revert( type, consumables[ type ]! );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Helper method that adds consumables of a given type: attribute, class or style.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `viewconsumable-invalid-attribute` when `class` or `style`\n\t * type is provided - it should be handled separately by providing actual style/class type.\n\t *\n\t * @param type Type of the consumable item: `attributes`, `classes` or `styles`.\n\t * @param item Consumable item or array of items.\n\t */\n\tprivate _add( type: ConsumableType, item: string | Array<string> ) {\n\t\tconst items = isArray( item ) ? item : [ item ];\n\t\tconst consumables = this._consumables[ type ];\n\n\t\tfor ( const name of items ) {\n\t\t\tif ( type === 'attributes' && ( name === 'class' || name === 'style' ) ) {\n\t\t\t\t/**\n\t\t\t\t * Class and style attributes should be handled separately in\n\t\t\t\t * {@link module:engine/conversion/viewconsumable~ViewConsumable#add `ViewConsumable#add()`}.\n\t\t\t\t *\n\t\t\t\t * What you have done is trying to use:\n\t\t\t\t *\n\t\t\t\t *\t\tconsumables.add( { attributes: [ 'class', 'style' ] } );\n\t\t\t\t *\n\t\t\t\t * While each class and style should be registered separately:\n\t\t\t\t *\n\t\t\t\t *\t\tconsumables.add( { classes: 'some-class', styles: 'font-weight' } );\n\t\t\t\t *\n\t\t\t\t * @error viewconsumable-invalid-attribute\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'viewconsumable-invalid-attribute', this );\n\t\t\t}\n\n\t\t\tconsumables.set( name, true );\n\n\t\t\tif ( type === 'styles' ) {\n\t\t\t\tfor ( const alsoName of this.element.document.stylesProcessor.getRelatedStyles( name ) ) {\n\t\t\t\t\tconsumables.set( alsoName, true );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Helper method that tests consumables of a given type: attribute, class or style.\n\t *\n\t * @param type Type of the consumable item: `attributes`, `classes` or `styles`.\n\t * @param item Consumable item or array of items.\n\t * @returns Returns `true` if all items can be consumed, `null` when one of the items cannot be\n\t * consumed and `false` when one of the items is already consumed.\n\t */\n\tprivate _test( type: ConsumableType, item: string | Array<string> ): boolean | null {\n\t\tconst items = isArray( item ) ? item : [ item ];\n\t\tconst consumables = this._consumables[ type ];\n\n\t\tfor ( const name of items ) {\n\t\t\tif ( type === 'attributes' && ( name === 'class' || name === 'style' ) ) {\n\t\t\t\tconst consumableName = name == 'class' ? 'classes' : 'styles';\n\n\t\t\t\t// Check all classes/styles if class/style attribute is tested.\n\t\t\t\tconst value = this._test( consumableName, [ ...this._consumables[ consumableName ].keys() ] );\n\n\t\t\t\tif ( value !== true ) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst value = consumables.get( name );\n\t\t\t\t// Return null if attribute is not found.\n\t\t\t\tif ( value === undefined ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tif ( !value ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Helper method that consumes items of a given type: attribute, class or style.\n\t *\n\t * @param type Type of the consumable item: `attributes`, `classes` or `styles`.\n\t * @param item Consumable item or array of items.\n\t */\n\tprivate _consume( type: ConsumableType, item: string | Array<string> ) {\n\t\tconst items = isArray( item ) ? item : [ item ];\n\t\tconst consumables = this._consumables[ type ];\n\n\t\tfor ( const name of items ) {\n\t\t\tif ( type === 'attributes' && ( name === 'class' || name === 'style' ) ) {\n\t\t\t\tconst consumableName = name == 'class' ? 'classes' : 'styles';\n\n\t\t\t\t// If class or style is provided for consumption - consume them all.\n\t\t\t\tthis._consume( consumableName, [ ...this._consumables[ consumableName ].keys() ] );\n\t\t\t} else {\n\t\t\t\tconsumables.set( name, false );\n\n\t\t\t\tif ( type == 'styles' ) {\n\t\t\t\t\tfor ( const toConsume of this.element.document.stylesProcessor.getRelatedStyles( name ) ) {\n\t\t\t\t\t\tconsumables.set( toConsume, false );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Helper method that reverts items of a given type: attribute, class or style.\n\t *\n\t * @param type Type of the consumable item: `attributes`, `classes` or , `styles`.\n\t * @param item Consumable item or array of items.\n\t */\n\tprivate _revert( type: ConsumableType, item: string | Array<string> ) {\n\t\tconst items = isArray( item ) ? item : [ item ];\n\t\tconst consumables = this._consumables[ type ];\n\n\t\tfor ( const name of items ) {\n\t\t\tif ( type === 'attributes' && ( name === 'class' || name === 'style' ) ) {\n\t\t\t\tconst consumableName = name == 'class' ? 'classes' : 'styles';\n\n\t\t\t\t// If class or style is provided for reverting - revert them all.\n\t\t\t\tthis._revert( consumableName, [ ...this._consumables[ consumableName ].keys() ] );\n\t\t\t} else {\n\t\t\t\tconst value = consumables.get( name );\n\n\t\t\t\tif ( value === false ) {\n\t\t\t\t\tconsumables.set( name, true );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/schema\n */\n\nimport Element from './element';\nimport Position from './position';\nimport Range from './range';\nimport Text from './text';\nimport TreeWalker from './treewalker';\n\nimport type DocumentFragment from './documentfragment';\nimport type DocumentSelection from './documentselection';\nimport type Item from './item';\nimport type Node from './node';\nimport type Selection from './selection';\nimport type Writer from './writer';\n\nimport { CKEditorError, ObservableMixin } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The model's schema. It defines the allowed and disallowed structures of nodes as well as nodes' attributes.\n * The schema is usually defined by the features and based on them, the editing framework and features\n * make decisions on how to change and process the model.\n *\n * The instance of schema is available in {@link module:engine/model/model~Model#schema `editor.model.schema`}.\n *\n * Read more about the schema in:\n *\n * * The {@glink framework/architecture/editing-engine#schema schema section} of the\n * {@glink framework/architecture/editing-engine Introduction to the Editing engine architecture} guide.\n * * The {@glink framework/deep-dive/schema Schema deep-dive} guide.\n */\nexport default class Schema extends ObservableMixin() {\n\tprivate readonly _sourceDefinitions: Record<string, Array<SchemaItemDefinition>> = {};\n\n\t/**\n\t * A dictionary containing attribute properties.\n\t */\n\tprivate readonly _attributeProperties: Record<string, AttributeProperties> = {};\n\tprivate _compiledDefinitions?: Record<string, SchemaCompiledItemDefinition> | null;\n\n\t/**\n\t * Creates a schema instance.\n\t */\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.decorate( 'checkChild' );\n\t\tthis.decorate( 'checkAttribute' );\n\n\t\tthis.on( 'checkAttribute', ( evt, args ) => {\n\t\t\targs[ 0 ] = new SchemaContext( args[ 0 ] );\n\t\t}, { priority: 'highest' } );\n\n\t\tthis.on( 'checkChild', ( evt, args ) => {\n\t\t\targs[ 0 ] = new SchemaContext( args[ 0 ] );\n\t\t\targs[ 1 ] = this.getDefinition( args[ 1 ] );\n\t\t}, { priority: 'highest' } );\n\t}\n\n\t/**\n\t * Registers a schema item. Can only be called once for every item name.\n\t *\n\t * ```ts\n\t * schema.register( 'paragraph', {\n\t * \tinheritAllFrom: '$block'\n\t * } );\n\t * ```\n\t */\n\tpublic register( itemName: string, definition?: SchemaItemDefinition ): void {\n\t\tif ( this._sourceDefinitions[ itemName ] ) {\n\t\t\t/**\n\t\t\t * A single item cannot be registered twice in the schema.\n\t\t\t *\n\t\t\t * This situation may happen when:\n\t\t\t *\n\t\t\t * * Two or more plugins called {@link module:engine/model/schema~Schema#register `register()`} with the same name.\n\t\t\t * This will usually mean that there is a collision between plugins which try to use the same element in the model.\n\t\t\t * Unfortunately, the only way to solve this is by modifying one of these plugins to use a unique model element name.\n\t\t\t * * A single plugin was loaded twice. This happens when it is installed by npm/yarn in two versions\n\t\t\t * and usually means one or more of the following issues:\n\t\t\t * * a version mismatch (two of your dependencies require two different versions of this plugin),\n\t\t\t * * incorrect imports (this plugin is somehow imported twice in a way which confuses webpack),\n\t\t\t * * mess in `node_modules/` (`rm -rf node_modules/` may help).\n\t\t\t *\n\t\t\t * **Note:** Check the logged `itemName` to better understand which plugin was duplicated/conflicting.\n\t\t\t *\n\t\t\t * @param itemName The name of the model element that is being registered twice.\n\t\t\t * @error schema-cannot-register-item-twice\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'schema-cannot-register-item-twice',\n\t\t\t\tthis,\n\t\t\t\t{\n\t\t\t\t\titemName\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tthis._sourceDefinitions[ itemName ] = [\n\t\t\tObject.assign( {}, definition )\n\t\t];\n\n\t\tthis._clearCache();\n\t}\n\n\t/**\n\t * Extends a {@link #register registered} item's definition.\n\t *\n\t * Extending properties such as `allowIn` will add more items to the existing properties,\n\t * while redefining properties such as `isBlock` will override the previously defined ones.\n\t *\n\t * ```ts\n\t * schema.register( 'foo', {\n\t * \tallowIn: '$root',\n\t * \tisBlock: true;\n\t * } );\n\t * schema.extend( 'foo', {\n\t * \tallowIn: 'blockQuote',\n\t * \tisBlock: false\n\t * } );\n\t *\n\t * schema.getDefinition( 'foo' );\n\t * //\t{\n\t * //\t\tallowIn: [ '$root', 'blockQuote' ],\n\t * // \t\tisBlock: false\n\t * //\t}\n\t * ```\n\t */\n\tpublic extend( itemName: string, definition: SchemaItemDefinition ): void {\n\t\tif ( !this._sourceDefinitions[ itemName ] ) {\n\t\t\t/**\n\t\t\t * Cannot extend an item which was not registered yet.\n\t\t\t *\n\t\t\t * This error happens when a plugin tries to extend the schema definition of an item which was not\n\t\t\t * {@link module:engine/model/schema~Schema#register registered} yet.\n\t\t\t *\n\t\t\t * @param itemName The name of the model element which is being extended.\n\t\t\t * @error schema-cannot-extend-missing-item\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'schema-cannot-extend-missing-item', this, {\n\t\t\t\titemName\n\t\t\t} );\n\t\t}\n\n\t\tthis._sourceDefinitions[ itemName ].push( Object.assign( {}, definition ) );\n\n\t\tthis._clearCache();\n\t}\n\n\t/**\n\t * Returns data of all registered items.\n\t *\n\t * This method should normally be used for reflection purposes (e.g. defining a clone of a certain element,\n\t * checking a list of all block elements, etc).\n\t * Use specific methods (such as {@link #checkChild `checkChild()`} or {@link #isLimit `isLimit()`})\n\t * in other cases.\n\t */\n\tpublic getDefinitions(): Record<string, SchemaCompiledItemDefinition> {\n\t\tif ( !this._compiledDefinitions ) {\n\t\t\tthis._compile();\n\t\t}\n\n\t\treturn this._compiledDefinitions!;\n\t}\n\n\t/**\n\t * Returns a definition of the given item or `undefined` if an item is not registered.\n\t *\n\t * This method should normally be used for reflection purposes (e.g. defining a clone of a certain element,\n\t * checking a list of all block elements, etc).\n\t * Use specific methods (such as {@link #checkChild `checkChild()`} or {@link #isLimit `isLimit()`})\n\t * in other cases.\n\t */\n\tpublic getDefinition( item: string | Item | DocumentFragment | SchemaContextItem ): SchemaCompiledItemDefinition | undefined {\n\t\tlet itemName: string;\n\n\t\tif ( typeof item == 'string' ) {\n\t\t\titemName = item;\n\t\t} else if ( 'is' in item && ( item.is( '$text' ) || item.is( '$textProxy' ) ) ) {\n\t\t\titemName = '$text';\n\t\t}\n\t\t// Element or module:engine/model/schema~SchemaContextItem.\n\t\telse {\n\t\t\titemName = ( item as any ).name;\n\t\t}\n\n\t\treturn this.getDefinitions()[ itemName ];\n\t}\n\n\t/**\n\t * Returns `true` if the given item is registered in the schema.\n\t *\n\t * ```ts\n\t * schema.isRegistered( 'paragraph' ); // -> true\n\t * schema.isRegistered( editor.model.document.getRoot() ); // -> true\n\t * schema.isRegistered( 'foo' ); // -> false\n\t * ```\n\t */\n\tpublic isRegistered( item: string | Item | DocumentFragment | SchemaContextItem ): boolean {\n\t\treturn !!this.getDefinition( item );\n\t}\n\n\t/**\n\t * Returns `true` if the given item is defined to be\n\t * a block by the {@link module:engine/model/schema~SchemaItemDefinition}'s `isBlock` property.\n\t *\n\t * ```ts\n\t * schema.isBlock( 'paragraph' ); // -> true\n\t * schema.isBlock( '$root' ); // -> false\n\t *\n\t * const paragraphElement = writer.createElement( 'paragraph' );\n\t * schema.isBlock( paragraphElement ); // -> true\n\t * ```\n\t *\n\t * See the {@glink framework/deep-dive/schema#block-elements Block elements} section of\n\t * the {@glink framework/deep-dive/schema Schema deep-dive} guide for more details.\n\t */\n\tpublic isBlock( item: string | Item | DocumentFragment | SchemaContextItem ): boolean {\n\t\tconst def = this.getDefinition( item );\n\n\t\treturn !!( def && def.isBlock );\n\t}\n\n\t/**\n\t * Returns `true` if the given item should be treated as a limit element.\n\t *\n\t * It considers an item to be a limit element if its\n\t * {@link module:engine/model/schema~SchemaItemDefinition}'s\n\t * {@link module:engine/model/schema~SchemaItemDefinition#isLimit `isLimit`} or\n\t * {@link module:engine/model/schema~SchemaItemDefinition#isObject `isObject`} property\n\t * was set to `true`.\n\t *\n\t * ```ts\n\t * schema.isLimit( 'paragraph' ); // -> false\n\t * schema.isLimit( '$root' ); // -> true\n\t * schema.isLimit( editor.model.document.getRoot() ); // -> true\n\t * schema.isLimit( 'imageBlock' ); // -> true\n\t * ```\n\t *\n\t * See the {@glink framework/deep-dive/schema#limit-elements Limit elements} section of\n\t * the {@glink framework/deep-dive/schema Schema deep-dive} guide for more details.\n\t */\n\tpublic isLimit( item: string | Item | DocumentFragment | SchemaContextItem ): boolean {\n\t\tconst def = this.getDefinition( item );\n\n\t\tif ( !def ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !!( def.isLimit || def.isObject );\n\t}\n\n\t/**\n\t * Returns `true` if the given item should be treated as an object element.\n\t *\n\t * It considers an item to be an object element if its\n\t * {@link module:engine/model/schema~SchemaItemDefinition}'s\n\t * {@link module:engine/model/schema~SchemaItemDefinition#isObject `isObject`} property\n\t * was set to `true`.\n\t *\n\t * ```ts\n\t * schema.isObject( 'paragraph' ); // -> false\n\t * schema.isObject( 'imageBlock' ); // -> true\n\t *\n\t * const imageElement = writer.createElement( 'imageBlock' );\n\t * schema.isObject( imageElement ); // -> true\n\t * ```\n\t *\n\t * See the {@glink framework/deep-dive/schema#object-elements Object elements} section of\n\t * the {@glink framework/deep-dive/schema Schema deep-dive} guide for more details.\n\t */\n\tpublic isObject( item: string | Item | DocumentFragment | SchemaContextItem ): boolean {\n\t\tconst def = this.getDefinition( item );\n\n\t\tif ( !def ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Note: Check out the implementation of #isLimit(), #isSelectable(), and #isContent()\n\t\t// to understand why these three constitute an object.\n\t\treturn !!( def.isObject || ( def.isLimit && def.isSelectable && def.isContent ) );\n\t}\n\n\t/**\n\t * Returns `true` if the given item is defined to be\n\t * an inline element by the {@link module:engine/model/schema~SchemaItemDefinition}'s `isInline` property.\n\t *\n\t * ```ts\n\t * schema.isInline( 'paragraph' ); // -> false\n\t * schema.isInline( 'softBreak' ); // -> true\n\t *\n\t * const text = writer.createText( 'foo' );\n\t * schema.isInline( text ); // -> true\n\t * ```\n\t *\n\t * See the {@glink framework/deep-dive/schema#inline-elements Inline elements} section of\n\t * the {@glink framework/deep-dive/schema Schema deep-dive} guide for more details.\n\t */\n\tpublic isInline( item: string | Item | DocumentFragment | SchemaContextItem ): boolean {\n\t\tconst def = this.getDefinition( item );\n\n\t\treturn !!( def && def.isInline );\n\t}\n\n\t/**\n\t * Returns `true` if the given item is defined to be\n\t * a selectable element by the {@link module:engine/model/schema~SchemaItemDefinition}'s `isSelectable` property.\n\t *\n\t * ```ts\n\t * schema.isSelectable( 'paragraph' ); // -> false\n\t * schema.isSelectable( 'heading1' ); // -> false\n\t * schema.isSelectable( 'imageBlock' ); // -> true\n\t * schema.isSelectable( 'tableCell' ); // -> true\n\t *\n\t * const text = writer.createText( 'foo' );\n\t * schema.isSelectable( text ); // -> false\n\t * ```\n\t *\n\t * See the {@glink framework/deep-dive/schema#selectable-elements Selectable elements section} of\n\t * the {@glink framework/deep-dive/schema Schema deep-dive} guide for more details.\n\t */\n\tpublic isSelectable( item: string | Item | DocumentFragment | SchemaContextItem ): boolean {\n\t\tconst def = this.getDefinition( item );\n\n\t\tif ( !def ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !!( def.isSelectable || def.isObject );\n\t}\n\n\t/**\n\t * Returns `true` if the given item is defined to be\n\t * a content by the {@link module:engine/model/schema~SchemaItemDefinition}'s `isContent` property.\n\t *\n\t * ```ts\n\t * schema.isContent( 'paragraph' ); // -> false\n\t * schema.isContent( 'heading1' ); // -> false\n\t * schema.isContent( 'imageBlock' ); // -> true\n\t * schema.isContent( 'horizontalLine' ); // -> true\n\t *\n\t * const text = writer.createText( 'foo' );\n\t * schema.isContent( text ); // -> true\n\t * ```\n\t *\n\t * See the {@glink framework/deep-dive/schema#content-elements Content elements section} of\n\t * the {@glink framework/deep-dive/schema Schema deep-dive} guide for more details.\n\t */\n\tpublic isContent( item: string | Item | DocumentFragment | SchemaContextItem ): boolean {\n\t\tconst def = this.getDefinition( item );\n\n\t\tif ( !def ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !!( def.isContent || def.isObject );\n\t}\n\n\t/**\n\t * Checks whether the given node (`child`) can be a child of the given context.\n\t *\n\t * ```ts\n\t * schema.checkChild( model.document.getRoot(), paragraph ); // -> false\n\t *\n\t * schema.register( 'paragraph', {\n\t * \tallowIn: '$root'\n\t * } );\n\t * schema.checkChild( model.document.getRoot(), paragraph ); // -> true\n\t * ```\n\t *\n\t * Note: When verifying whether the given node can be a child of the given context, the\n\t * schema also verifies the entire context — from its root to its last element. Therefore, it is possible\n\t * for `checkChild()` to return `false` even though the context's last element can contain the checked child.\n\t * It happens if one of the context's elements does not allow its child.\n\t *\n\t * @fires checkChild\n\t * @param context The context in which the child will be checked.\n\t * @param def The child to check.\n\t */\n\tpublic checkChild( context: SchemaContextDefinition, def: string | Node | DocumentFragment ): boolean {\n\t\t// Note: context and child are already normalized here to a SchemaContext and SchemaCompiledItemDefinition.\n\t\tif ( !def ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this._checkContextMatch( def as any, context as any );\n\t}\n\n\t/**\n\t * Checks whether the given attribute can be applied in the given context (on the last\n\t * item of the context).\n\t *\n\t * ```ts\n\t * schema.checkAttribute( textNode, 'bold' ); // -> false\n\t *\n\t * schema.extend( '$text', {\n\t * \tallowAttributes: 'bold'\n\t * } );\n\t * schema.checkAttribute( textNode, 'bold' ); // -> true\n\t * ```\n\t *\n\t * @fires checkAttribute\n\t * @param context The context in which the attribute will be checked.\n\t */\n\tpublic checkAttribute( context: SchemaContextDefinition, attributeName: string ): boolean {\n\t\tconst def = this.getDefinition( ( context as any ).last );\n\n\t\tif ( !def ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn def.allowAttributes.includes( attributeName );\n\t}\n\n\t/**\n\t * Checks whether the given element (`elementToMerge`) can be merged with the specified base element (`positionOrBaseElement`).\n\t *\n\t * In other words — whether `elementToMerge`'s children {@link #checkChild are allowed} in the `positionOrBaseElement`.\n\t *\n\t * This check ensures that elements merged with {@link module:engine/model/writer~Writer#merge `Writer#merge()`}\n\t * will be valid.\n\t *\n\t * Instead of elements, you can pass the instance of the {@link module:engine/model/position~Position} class as the\n\t * `positionOrBaseElement`. It means that the elements before and after the position will be checked whether they can be merged.\n\t *\n\t * @param positionOrBaseElement The position or base element to which the `elementToMerge` will be merged.\n\t * @param elementToMerge The element to merge. Required if `positionOrBaseElement` is an element.\n\t */\n\tpublic checkMerge( positionOrBaseElement: Position | Element, elementToMerge: Element ): boolean {\n\t\tif ( positionOrBaseElement instanceof Position ) {\n\t\t\tconst nodeBefore = positionOrBaseElement.nodeBefore;\n\t\t\tconst nodeAfter = positionOrBaseElement.nodeAfter;\n\n\t\t\tif ( !( nodeBefore instanceof Element ) ) {\n\t\t\t\t/**\n\t\t\t\t * The node before the merge position must be an element.\n\t\t\t\t *\n\t\t\t\t * @error schema-check-merge-no-element-before\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'schema-check-merge-no-element-before',\n\t\t\t\t\tthis\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( !( nodeAfter instanceof Element ) ) {\n\t\t\t\t/**\n\t\t\t\t * The node after the merge position must be an element.\n\t\t\t\t *\n\t\t\t\t * @error schema-check-merge-no-element-after\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'schema-check-merge-no-element-after',\n\t\t\t\t\tthis\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn this.checkMerge( nodeBefore, nodeAfter );\n\t\t}\n\n\t\tfor ( const child of elementToMerge.getChildren() ) {\n\t\t\tif ( !this.checkChild( positionOrBaseElement, child ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Allows registering a callback to the {@link #checkChild} method calls.\n\t *\n\t * Callbacks allow you to implement rules which are not otherwise possible to achieve\n\t * by using the declarative API of {@link module:engine/model/schema~SchemaItemDefinition}.\n\t * For example, by using this method you can disallow elements in specific contexts.\n\t *\n\t * This method is a shorthand for using the {@link #event:checkChild} event. For even better control,\n\t * you can use that event instead.\n\t *\n\t * Example:\n\t *\n\t * ```ts\n\t * // Disallow heading1 directly inside a blockQuote.\n\t * schema.addChildCheck( ( context, childDefinition ) => {\n\t * \tif ( context.endsWith( 'blockQuote' ) && childDefinition.name == 'heading1' ) {\n\t * \t\treturn false;\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * Which translates to:\n\t *\n\t * ```ts\n\t * schema.on( 'checkChild', ( evt, args ) => {\n\t * \tconst context = args[ 0 ];\n\t * \tconst childDefinition = args[ 1 ];\n\t *\n\t * \tif ( context.endsWith( 'blockQuote' ) && childDefinition && childDefinition.name == 'heading1' ) {\n\t * \t\t// Prevent next listeners from being called.\n\t * \t\tevt.stop();\n\t * \t\t// Set the checkChild()'s return value.\n\t * \t\tevt.return = false;\n\t * \t}\n\t * }, { priority: 'high' } );\n\t * ```\n\t *\n\t * @param callback The callback to be called. It is called with two parameters:\n\t * {@link module:engine/model/schema~SchemaContext} (context) instance and\n\t * {@link module:engine/model/schema~SchemaCompiledItemDefinition} (child-to-check definition).\n\t * The callback may return `true/false` to override `checkChild()`'s return value. If it does not return\n\t * a boolean value, the default algorithm (or other callbacks) will define `checkChild()`'s return value.\n\t */\n\tpublic addChildCheck( callback: SchemaChildCheckCallback ): void {\n\t\tthis.on<SchemaCheckChildEvent>( 'checkChild', ( evt, [ ctx, childDef ] ) => {\n\t\t\t// checkChild() was called with a non-registered child.\n\t\t\t// In 99% cases such check should return false, so not to overcomplicate all callbacks\n\t\t\t// don't even execute them.\n\t\t\tif ( !childDef ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst retValue = callback( ctx, childDef );\n\n\t\t\tif ( typeof retValue == 'boolean' ) {\n\t\t\t\tevt.stop();\n\t\t\t\tevt.return = retValue;\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Allows registering a callback to the {@link #checkAttribute} method calls.\n\t *\n\t * Callbacks allow you to implement rules which are not otherwise possible to achieve\n\t * by using the declarative API of {@link module:engine/model/schema~SchemaItemDefinition}.\n\t * For example, by using this method you can disallow attribute if node to which it is applied\n\t * is contained within some other element (e.g. you want to disallow `bold` on `$text` within `heading1`).\n\t *\n\t * This method is a shorthand for using the {@link #event:checkAttribute} event. For even better control,\n\t * you can use that event instead.\n\t *\n\t * Example:\n\t *\n\t * ```ts\n\t * // Disallow bold on $text inside heading1.\n\t * schema.addAttributeCheck( ( context, attributeName ) => {\n\t * \tif ( context.endsWith( 'heading1 $text' ) && attributeName == 'bold' ) {\n\t * \t\treturn false;\n\t * \t}\n\t * } );\n\t * ```\n\t *\n\t * Which translates to:\n\t *\n\t * ```ts\n\t * schema.on( 'checkAttribute', ( evt, args ) => {\n\t * \tconst context = args[ 0 ];\n\t * \tconst attributeName = args[ 1 ];\n\t *\n\t * \tif ( context.endsWith( 'heading1 $text' ) && attributeName == 'bold' ) {\n\t * \t\t// Prevent next listeners from being called.\n\t * \t\tevt.stop();\n\t * \t\t// Set the checkAttribute()'s return value.\n\t * \t\tevt.return = false;\n\t * \t}\n\t * }, { priority: 'high' } );\n\t * ```\n\t *\n\t * @param callback The callback to be called. It is called with two parameters:\n\t * {@link module:engine/model/schema~SchemaContext} (context) instance and attribute name.\n\t * The callback may return `true/false` to override `checkAttribute()`'s return value. If it does not return\n\t * a boolean value, the default algorithm (or other callbacks) will define `checkAttribute()`'s return value.\n\t */\n\tpublic addAttributeCheck( callback: SchemaAttributeCheckCallback ): void {\n\t\tthis.on<SchemaCheckAttributeEvent>( 'checkAttribute', ( evt, [ ctx, attributeName ] ) => {\n\t\t\tconst retValue = callback( ctx, attributeName );\n\n\t\t\tif ( typeof retValue == 'boolean' ) {\n\t\t\t\tevt.stop();\n\t\t\t\tevt.return = retValue;\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * This method allows assigning additional metadata to the model attributes. For example,\n\t * {@link module:engine/model/schema~AttributeProperties `AttributeProperties#isFormatting` property} is\n\t * used to mark formatting attributes (like `bold` or `italic`).\n\t *\n\t * ```ts\n\t * // Mark bold as a formatting attribute.\n\t * schema.setAttributeProperties( 'bold', {\n\t * \tisFormatting: true\n\t * } );\n\t *\n\t * // Override code not to be considered a formatting markup.\n\t * schema.setAttributeProperties( 'code', {\n\t * \tisFormatting: false\n\t * } );\n\t * ```\n\t *\n\t * Properties are not limited to members defined in the\n\t * {@link module:engine/model/schema~AttributeProperties `AttributeProperties` type} and you can also use custom properties:\n\t *\n\t * ```ts\n\t * schema.setAttributeProperties( 'blockQuote', {\n\t * \tcustomProperty: 'value'\n\t * } );\n\t * ```\n\t *\n\t * Subsequent calls with the same attribute will extend its custom properties:\n\t *\n\t * ```ts\n\t * schema.setAttributeProperties( 'blockQuote', {\n\t * \tone: 1\n\t * } );\n\t *\n\t * schema.setAttributeProperties( 'blockQuote', {\n\t * \ttwo: 2\n\t * } );\n\t *\n\t * console.log( schema.getAttributeProperties( 'blockQuote' ) );\n\t * // Logs: { one: 1, two: 2 }\n\t * ```\n\t *\n\t * @param attributeName A name of the attribute to receive the properties.\n\t * @param properties A dictionary of properties.\n\t */\n\tpublic setAttributeProperties( attributeName: string, properties: AttributeProperties ): void {\n\t\tthis._attributeProperties[ attributeName ] = Object.assign( this.getAttributeProperties( attributeName ), properties );\n\t}\n\n\t/**\n\t * Returns properties associated with a given model attribute. See {@link #setAttributeProperties `setAttributeProperties()`}.\n\t *\n\t * @param attributeName A name of the attribute.\n\t */\n\tpublic getAttributeProperties( attributeName: string ): AttributeProperties {\n\t\treturn this._attributeProperties[ attributeName ] || {};\n\t}\n\n\t/**\n\t * Returns the lowest {@link module:engine/model/schema~Schema#isLimit limit element} containing the entire\n\t * selection/range/position or the root otherwise.\n\t *\n\t * @param selectionOrRangeOrPosition The selection/range/position to check.\n\t * @returns The lowest limit element containing the entire `selectionOrRangeOrPosition`.\n\t */\n\tpublic getLimitElement( selectionOrRangeOrPosition: Selection | DocumentSelection | Range | Position ): Element {\n\t\tlet element: Element;\n\n\t\tif ( selectionOrRangeOrPosition instanceof Position ) {\n\t\t\telement = selectionOrRangeOrPosition.parent as Element;\n\t\t} else {\n\t\t\tconst ranges = selectionOrRangeOrPosition instanceof Range ?\n\t\t\t\t[ selectionOrRangeOrPosition ] :\n\t\t\t\tArray.from( selectionOrRangeOrPosition.getRanges() );\n\n\t\t\t// Find the common ancestor for all selection's ranges.\n\t\t\telement = ranges\n\t\t\t\t.reduce<Element | null>( ( element, range ) => {\n\t\t\t\t\tconst rangeCommonAncestor = range.getCommonAncestor() as ( Element | null );\n\n\t\t\t\t\tif ( !element ) {\n\t\t\t\t\t\treturn rangeCommonAncestor;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn element.getCommonAncestor( rangeCommonAncestor as Element, { includeSelf: true } ) as Element;\n\t\t\t\t}, null )!;\n\t\t}\n\n\t\twhile ( !this.isLimit( element ) ) {\n\t\t\tif ( element.parent ) {\n\t\t\t\telement = element.parent as Element;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn element;\n\t}\n\n\t/**\n\t * Checks whether the attribute is allowed in selection:\n\t *\n\t * * if the selection is not collapsed, then checks if the attribute is allowed on any of nodes in that range,\n\t * * if the selection is collapsed, then checks if on the selection position there's a text with the\n\t * specified attribute allowed.\n\t *\n\t * @param selection Selection which will be checked.\n\t * @param attribute The name of the attribute to check.\n\t */\n\tpublic checkAttributeInSelection( selection: Selection | DocumentSelection, attribute: string ): boolean {\n\t\tif ( selection.isCollapsed ) {\n\t\t\tconst firstPosition = selection.getFirstPosition()!;\n\t\t\tconst context = [\n\t\t\t\t...firstPosition.getAncestors() as Array<Element>,\n\t\t\t\tnew Text( '', selection.getAttributes() )\n\t\t\t];\n\n\t\t\t// Check whether schema allows for a text with the attribute in the selection.\n\t\t\treturn this.checkAttribute( context, attribute );\n\t\t} else {\n\t\t\tconst ranges = selection.getRanges();\n\n\t\t\t// For all ranges, check nodes in them until you find a node that is allowed to have the attribute.\n\t\t\tfor ( const range of ranges ) {\n\t\t\t\tfor ( const value of range ) {\n\t\t\t\t\tif ( this.checkAttribute( value.item, attribute ) ) {\n\t\t\t\t\t\t// If we found a node that is allowed to have the attribute, return true.\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If we haven't found such node, return false.\n\t\treturn false;\n\t}\n\n\t/**\n\t * Transforms the given set of ranges into a set of ranges where the given attribute is allowed (and can be applied).\n\t *\n\t * @param ranges Ranges to be validated.\n\t * @param attribute The name of the attribute to check.\n\t * @returns Ranges in which the attribute is allowed.\n\t */\n\tpublic* getValidRanges( ranges: Iterable<Range>, attribute: string ): IterableIterator<Range> {\n\t\tranges = convertToMinimalFlatRanges( ranges );\n\n\t\tfor ( const range of ranges ) {\n\t\t\tyield* this._getValidRangesForRange( range, attribute );\n\t\t}\n\t}\n\n\t/**\n\t * Basing on given `position`, finds and returns a {@link module:engine/model/range~Range range} which is\n\t * nearest to that `position` and is a correct range for selection.\n\t *\n\t * The correct selection range might be collapsed when it is located in a position where the text node can be placed.\n\t * Non-collapsed range is returned when selection can be placed around element marked as an \"object\" in\n\t * the {@link module:engine/model/schema~Schema schema}.\n\t *\n\t * Direction of searching for the nearest correct selection range can be specified as:\n\t *\n\t * * `both` - searching will be performed in both ways,\n\t * * `forward` - searching will be performed only forward,\n\t * * `backward` - searching will be performed only backward.\n\t *\n\t * When valid selection range cannot be found, `null` is returned.\n\t *\n\t * @param position Reference position where new selection range should be looked for.\n\t * @param direction Search direction.\n\t * @returns Nearest selection range or `null` if one cannot be found.\n\t */\n\tpublic getNearestSelectionRange( position: Position, direction: 'both' | 'forward' | 'backward' = 'both' ): Range | null {\n\t\tif ( position.root.rootName == '$graveyard' ) {\n\t\t\t// No valid selection range in the graveyard.\n\t\t\t// This is important when getting the document selection default range.\n\t\t\treturn null;\n\t\t}\n\n\t\t// Return collapsed range if provided position is valid.\n\t\tif ( this.checkChild( position, '$text' ) ) {\n\t\t\treturn new Range( position );\n\t\t}\n\n\t\tlet backwardWalker, forwardWalker;\n\n\t\t// Never leave a limit element.\n\t\tconst limitElement = ( position.getAncestors() as Array<Element> ).reverse().find( item => this.isLimit( item ) ) ||\n\t\t\tposition.root as Element;\n\n\t\tif ( direction == 'both' || direction == 'backward' ) {\n\t\t\tbackwardWalker = new TreeWalker( {\n\t\t\t\tboundaries: Range._createIn( limitElement ),\n\t\t\t\tstartPosition: position,\n\t\t\t\tdirection: 'backward'\n\t\t\t} );\n\t\t}\n\n\t\tif ( direction == 'both' || direction == 'forward' ) {\n\t\t\tforwardWalker = new TreeWalker( {\n\t\t\t\tboundaries: Range._createIn( limitElement ),\n\t\t\t\tstartPosition: position\n\t\t\t} );\n\t\t}\n\n\t\tfor ( const data of combineWalkers( backwardWalker, forwardWalker ) ) {\n\t\t\tconst type = ( data.walker == backwardWalker ? 'elementEnd' : 'elementStart' );\n\t\t\tconst value = data.value;\n\n\t\t\tif ( value.type == type && this.isObject( value.item ) ) {\n\t\t\t\treturn Range._createOn( value.item );\n\t\t\t}\n\n\t\t\tif ( this.checkChild( value.nextPosition, '$text' ) ) {\n\t\t\t\treturn new Range( value.nextPosition );\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Tries to find position ancestors that allow to insert a given node.\n\t * It starts searching from the given position and goes node by node to the top of the model tree\n\t * as long as a {@link module:engine/model/schema~Schema#isLimit limit element}, an\n\t * {@link module:engine/model/schema~Schema#isObject object element} or a topmost ancestor is not reached.\n\t *\n\t * @param position The position that the search will start from.\n\t * @param node The node for which an allowed parent should be found or its name.\n\t * @returns Allowed parent or null if nothing was found.\n\t */\n\tpublic findAllowedParent( position: Position, node: Node | string ): Element | null {\n\t\tlet parent = position.parent as ( Element | null );\n\n\t\twhile ( parent ) {\n\t\t\tif ( this.checkChild( parent, node ) ) {\n\t\t\t\treturn parent;\n\t\t\t}\n\n\t\t\t// Do not split limit elements.\n\t\t\tif ( this.isLimit( parent ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tparent = parent.parent as ( Element | null );\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Sets attributes allowed by the schema on a given node.\n\t *\n\t * @param node A node to set attributes on.\n\t * @param attributes Attributes keys and values.\n\t * @param writer An instance of the model writer.\n\t */\n\tpublic setAllowedAttributes(\n\t\tnode: Node,\n\t\tattributes: Record<string, unknown>,\n\t\twriter: Writer\n\t): void {\n\t\tconst model = writer.model;\n\n\t\tfor ( const [ attributeName, attributeValue ] of Object.entries( attributes ) ) {\n\t\t\tif ( model.schema.checkAttribute( node, attributeName ) ) {\n\t\t\t\twriter.setAttribute( attributeName, attributeValue, node );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Removes attributes disallowed by the schema.\n\t *\n\t * @param nodes Nodes that will be filtered.\n\t */\n\tpublic removeDisallowedAttributes( nodes: Iterable<Node>, writer: Writer ): void {\n\t\tfor ( const node of nodes ) {\n\t\t\t// When node is a `Text` it has no children, so just filter it out.\n\t\t\tif ( node.is( '$text' ) ) {\n\t\t\t\tremoveDisallowedAttributeFromNode( this, node, writer );\n\t\t\t}\n\t\t\t// In a case of `Element` iterates through positions between nodes inside this element\n\t\t\t// and filter out node before the current position, or position parent when position\n\t\t\t// is at start of an element. Using positions prevent from omitting merged nodes\n\t\t\t// see https://github.com/ckeditor/ckeditor5-engine/issues/1789.\n\t\t\telse {\n\t\t\t\tconst rangeInNode = Range._createIn( node as Element );\n\t\t\t\tconst positionsInRange = rangeInNode.getPositions();\n\n\t\t\t\tfor ( const position of positionsInRange ) {\n\t\t\t\t\tconst item = position.nodeBefore || position.parent;\n\n\t\t\t\t\tremoveDisallowedAttributeFromNode( this, item as any, writer );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Gets attributes of a node that have a given property.\n\t *\n\t * @param node Node to get attributes from.\n\t * @param propertyName Name of the property that attribute must have to return it.\n\t * @param propertyValue Desired value of the property that we want to check.\n\t * When `undefined` attributes will be returned if they have set a given property no matter what the value is. If specified it will\n\t * return attributes which given property's value is equal to this parameter.\n\t * @returns Object with attributes' names as key and attributes' values as value.\n\t */\n\tpublic getAttributesWithProperty( node: Node, propertyName: string, propertyValue: unknown ): Record<string, unknown> {\n\t\tconst attributes: Record<string, unknown> = {};\n\n\t\tfor ( const [ attributeName, attributeValue ] of node.getAttributes() ) {\n\t\t\tconst attributeProperties = this.getAttributeProperties( attributeName );\n\n\t\t\tif ( attributeProperties[ propertyName ] === undefined ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( propertyValue === undefined || propertyValue === attributeProperties[ propertyName ] ) {\n\t\t\t\tattributes[ attributeName ] = attributeValue;\n\t\t\t}\n\t\t}\n\n\t\treturn attributes;\n\t}\n\n\t/**\n\t * Creates an instance of the schema context.\n\t */\n\tpublic createContext( context: SchemaContextDefinition ): SchemaContext {\n\t\treturn new SchemaContext( context );\n\t}\n\n\tprivate _clearCache(): void {\n\t\tthis._compiledDefinitions = null;\n\t}\n\n\tprivate _compile(): void {\n\t\tconst compiledDefinitions: Record<string, SchemaCompiledItemDefinitionInternal> = {};\n\t\tconst sourceRules = this._sourceDefinitions;\n\t\tconst itemNames = Object.keys( sourceRules );\n\n\t\tfor ( const itemName of itemNames ) {\n\t\t\tcompiledDefinitions[ itemName ] = compileBaseItemRule( sourceRules[ itemName ], itemName );\n\t\t}\n\n\t\tfor ( const itemName of itemNames ) {\n\t\t\tcompileAllowChildren( compiledDefinitions, itemName );\n\t\t}\n\n\t\tfor ( const itemName of itemNames ) {\n\t\t\tcompileAllowContentOf( compiledDefinitions, itemName );\n\t\t}\n\n\t\tfor ( const itemName of itemNames ) {\n\t\t\tcompileAllowWhere( compiledDefinitions, itemName );\n\t\t}\n\n\t\tfor ( const itemName of itemNames ) {\n\t\t\tcompileAllowAttributesOf( compiledDefinitions, itemName );\n\t\t\tcompileInheritPropertiesFrom( compiledDefinitions, itemName );\n\t\t}\n\n\t\tfor ( const itemName of itemNames ) {\n\t\t\tcleanUpAllowIn( compiledDefinitions, itemName );\n\t\t\tsetupAllowChildren( compiledDefinitions, itemName );\n\t\t\tcleanUpAllowAttributes( compiledDefinitions, itemName );\n\t\t}\n\n\t\tthis._compiledDefinitions = compiledDefinitions as any;\n\t}\n\n\tprivate _checkContextMatch(\n\t\tdef: SchemaCompiledItemDefinition,\n\t\tcontext: SchemaContext,\n\t\tcontextItemIndex: number = context.length - 1\n\t): boolean {\n\t\tconst contextItem = context.getItem( contextItemIndex );\n\n\t\tif ( def.allowIn.includes( contextItem.name ) ) {\n\t\t\tif ( contextItemIndex == 0 ) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tconst parentRule = this.getDefinition( contextItem );\n\n\t\t\t\treturn this._checkContextMatch( parentRule!, context, contextItemIndex - 1 );\n\t\t\t}\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Takes a flat range and an attribute name. Traverses the range recursively and deeply to find and return all ranges\n\t * inside the given range on which the attribute can be applied.\n\t *\n\t * This is a helper function for {@link ~Schema#getValidRanges}.\n\t *\n\t * @param range The range to process.\n\t * @param attribute The name of the attribute to check.\n\t * @returns Ranges in which the attribute is allowed.\n\t */\n\tprivate* _getValidRangesForRange( range: Range, attribute: string ): Iterable<Range> {\n\t\tlet start = range.start;\n\t\tlet end = range.start;\n\n\t\tfor ( const item of range.getItems( { shallow: true } ) ) {\n\t\t\tif ( item.is( 'element' ) ) {\n\t\t\t\tyield* this._getValidRangesForRange( Range._createIn( item ), attribute );\n\t\t\t}\n\n\t\t\tif ( !this.checkAttribute( item, attribute ) ) {\n\t\t\t\tif ( !start.isEqual( end ) ) {\n\t\t\t\t\tyield new Range( start, end );\n\t\t\t\t}\n\n\t\t\t\tstart = Position._createAfter( item );\n\t\t\t}\n\n\t\t\tend = Position._createAfter( item );\n\t\t}\n\n\t\tif ( !start.isEqual( end ) ) {\n\t\t\tyield new Range( start, end );\n\t\t}\n\t}\n}\n\n/**\n * Event fired when the {@link ~Schema#checkChild} method is called. It allows plugging in\n * additional behavior, for example implementing rules which cannot be defined using the declarative\n * {@link module:engine/model/schema~SchemaItemDefinition} interface.\n *\n * **Note:** The {@link ~Schema#addChildCheck} method is a more handy way to register callbacks. Internally,\n * it registers a listener to this event but comes with a simpler API and it is the recommended choice\n * in most of the cases.\n *\n * The {@link ~Schema#checkChild} method fires an event because it is\n * {@link module:utils/observablemixin~Observable#decorate decorated} with it. Thanks to that you can\n * use this event in various ways, but the most important use case is overriding standard behavior of the\n * `checkChild()` method. Let's see a typical listener template:\n *\n * ```ts\n * schema.on( 'checkChild', ( evt, args ) => {\n * \tconst context = args[ 0 ];\n * \tconst childDefinition = args[ 1 ];\n * }, { priority: 'high' } );\n * ```\n *\n * The listener is added with a `high` priority to be executed before the default method is really called. The `args` callback\n * parameter contains arguments passed to `checkChild( context, child )`. However, the `context` parameter is already\n * normalized to a {@link module:engine/model/schema~SchemaContext} instance and `child` to a\n * {@link module:engine/model/schema~SchemaCompiledItemDefinition} instance, so you do not have to worry about\n * the various ways how `context` and `child` may be passed to `checkChild()`.\n *\n * **Note:** `childDefinition` may be `undefined` if `checkChild()` was called with a non-registered element.\n *\n * So, in order to implement a rule \"disallow `heading1` in `blockQuote`\", you can add such a listener:\n *\n * ```ts\n * schema.on( 'checkChild', ( evt, args ) => {\n * \tconst context = args[ 0 ];\n * \tconst childDefinition = args[ 1 ];\n *\n * \tif ( context.endsWith( 'blockQuote' ) && childDefinition && childDefinition.name == 'heading1' ) {\n * \t\t// Prevent next listeners from being called.\n * \t\tevt.stop();\n * \t\t// Set the checkChild()'s return value.\n * \t\tevt.return = false;\n * \t}\n * }, { priority: 'high' } );\n * ```\n *\n * Allowing elements in specific contexts will be a far less common use case, because it is normally handled by the\n * `allowIn` rule from {@link module:engine/model/schema~SchemaItemDefinition}. But if you have a complex scenario\n * where `listItem` should be allowed only in element `foo` which must be in element `bar`, then this would be the way:\n *\n * ```ts\n * schema.on( 'checkChild', ( evt, args ) => {\n * \tconst context = args[ 0 ];\n * \tconst childDefinition = args[ 1 ];\n *\n * \tif ( context.endsWith( 'bar foo' ) && childDefinition.name == 'listItem' ) {\n * \t\t// Prevent next listeners from being called.\n * \t\tevt.stop();\n * \t\t// Set the checkChild()'s return value.\n * \t\tevt.return = true;\n * \t}\n * }, { priority: 'high' } );\n * ```\n *\n * @eventName ~Schema#checkChild\n * @param args The `checkChild()`'s arguments.\n */\nexport type SchemaCheckChildEvent = {\n\tname: 'checkChild';\n\targs: [ [ context: SchemaContext, def: SchemaCompiledItemDefinition ] ];\n};\n\n/**\n * Event fired when the {@link ~Schema#checkAttribute} method is called. It allows plugging in\n * additional behavior, for example implementing rules which cannot be defined using the declarative\n * {@link module:engine/model/schema~SchemaItemDefinition} interface.\n *\n * **Note:** The {@link ~Schema#addAttributeCheck} method is a more handy way to register callbacks. Internally,\n * it registers a listener to this event but comes with a simpler API and it is the recommended choice\n * in most of the cases.\n *\n * The {@link ~Schema#checkAttribute} method fires an event because it is\n * {@link module:utils/observablemixin~Observable#decorate decorated} with it. Thanks to that you can\n * use this event in various ways, but the most important use case is overriding the standard behavior of the\n * `checkAttribute()` method. Let's see a typical listener template:\n *\n * ```ts\n * schema.on( 'checkAttribute', ( evt, args ) => {\n * \tconst context = args[ 0 ];\n * \tconst attributeName = args[ 1 ];\n * }, { priority: 'high' } );\n * ```\n *\n * The listener is added with a `high` priority to be executed before the default method is really called. The `args` callback\n * parameter contains arguments passed to `checkAttribute( context, attributeName )`. However, the `context` parameter is already\n * normalized to a {@link module:engine/model/schema~SchemaContext} instance, so you do not have to worry about\n * the various ways how `context` may be passed to `checkAttribute()`.\n *\n * So, in order to implement a rule \"disallow `bold` in a text which is in a `heading1`, you can add such a listener:\n *\n * ```ts\n * schema.on( 'checkAttribute', ( evt, args ) => {\n * \tconst context = args[ 0 ];\n * \tconst attributeName = args[ 1 ];\n *\n * \tif ( context.endsWith( 'heading1 $text' ) && attributeName == 'bold' ) {\n * \t\t// Prevent next listeners from being called.\n * \t\tevt.stop();\n * \t\t// Set the checkAttribute()'s return value.\n * \t\tevt.return = false;\n * \t}\n * }, { priority: 'high' } );\n * ```\n *\n * Allowing attributes in specific contexts will be a far less common use case, because it is normally handled by the\n * `allowAttributes` rule from {@link module:engine/model/schema~SchemaItemDefinition}. But if you have a complex scenario\n * where `bold` should be allowed only in element `foo` which must be in element `bar`, then this would be the way:\n *\n * ```ts\n * schema.on( 'checkAttribute', ( evt, args ) => {\n * \tconst context = args[ 0 ];\n * \tconst attributeName = args[ 1 ];\n *\n * \tif ( context.endsWith( 'bar foo $text' ) && attributeName == 'bold' ) {\n * \t\t// Prevent next listeners from being called.\n * \t\tevt.stop();\n * \t\t// Set the checkAttribute()'s return value.\n * \t\tevt.return = true;\n * \t}\n * }, { priority: 'high' } );\n * ```\n *\n * @eventName ~Schema#checkAttribute\n * @param args The `checkAttribute()`'s arguments.\n */\nexport type SchemaCheckAttributeEvent = {\n\tname: 'checkAttribute';\n\targs: [ [ context: SchemaContext, attributeName: string ] ];\n};\n\n/**\n * A definition of a {@link module:engine/model/schema~Schema schema} item.\n *\n * You can define the following rules:\n *\n * * {@link ~SchemaItemDefinition#allowIn `allowIn`} – Defines in which other items this item will be allowed.\n * * {@link ~SchemaItemDefinition#allowChildren `allowChildren`} – Defines which other items are allowed inside this item.\n * * {@link ~SchemaItemDefinition#allowAttributes `allowAttributes`} – Defines allowed attributes of the given item.\n * * {@link ~SchemaItemDefinition#allowContentOf `allowContentOf`} – Inherits \"allowed children\" from other items.\n * * {@link ~SchemaItemDefinition#allowWhere `allowWhere`} – Inherits \"allowed in\" from other items.\n * * {@link ~SchemaItemDefinition#allowAttributesOf `allowAttributesOf`} – Inherits attributes from other items.\n * * {@link ~SchemaItemDefinition#inheritTypesFrom `inheritTypesFrom`} – Inherits `is*` properties of other items.\n * * {@link ~SchemaItemDefinition#inheritAllFrom `inheritAllFrom`} –\n * A shorthand for `allowContentOf`, `allowWhere`, `allowAttributesOf`, `inheritTypesFrom`.\n *\n * # The `is*` properties\n *\n * There are a couple commonly used `is*` properties. Their role is to assign additional semantics to schema items.\n * You can define more properties but you will also need to implement support for them in the existing editor features.\n *\n * * {@link ~SchemaItemDefinition#isBlock `isBlock`} – Whether this item is paragraph-like.\n * Generally speaking, content is usually made out of blocks like paragraphs, list items, images, headings, etc.\n * * {@link ~SchemaItemDefinition#isInline `isInline`} – Whether an item is \"text-like\" and should be treated as an inline node.\n * Examples of inline elements: `$text`, `softBreak` (`<br>`), etc.\n * * {@link ~SchemaItemDefinition#isLimit `isLimit`} – It can be understood as whether this element\n * should not be split by <kbd>Enter</kbd>. Examples of limit elements: `$root`, table cell, image caption, etc.\n * In other words, all actions that happen inside a limit element are limited to its content.\n * All objects are treated as limit elements, too.\n * * {@link ~SchemaItemDefinition#isObject `isObject`} – Whether an item is \"self-contained\" and should be treated as a whole.\n * Examples of object elements: `imageBlock`, `table`, `video`, etc. An object is also a limit, so\n * {@link module:engine/model/schema~Schema#isLimit `isLimit()`} returns `true` for object elements automatically.\n *\n * Read more about the meaning of these types in the\n * {@glink framework/deep-dive/schema#defining-additional-semantics dedicated section of the Schema deep-dive} guide.\n *\n * # Generic items\n *\n * There are several generic items (classes of elements) available: `$root`, `$container`, `$block`, `$blockObject`,\n * `$inlineObject`, and `$text`. They are defined as follows:\n *\n * ```ts\n * schema.register( '$root', {\n * \tisLimit: true\n * } );\n *\n * schema.register( '$container', {\n * \tallowIn: [ '$root', '$container' ]\n * } );\n *\n * schema.register( '$block', {\n * \tallowIn: [ '$root', '$container' ],\n * \tisBlock: true\n * } );\n *\n * schema.register( '$blockObject', {\n * \tallowWhere: '$block',\n * \tisBlock: true,\n * \tisObject: true\n * } );\n *\n * schema.register( '$inlineObject', {\n * \tallowWhere: '$text',\n * \tallowAttributesOf: '$text',\n * \tisInline: true,\n * \tisObject: true\n * } );\n *\n * schema.register( '$text', {\n * \tallowIn: '$block',\n * \tisInline: true,\n * \tisContent: true\n * } );\n * ```\n *\n * They reflect typical editor content that is contained within one root, consists of several blocks\n * (paragraphs, lists items, headings, images) which, in turn, may contain text inside.\n *\n * By inheriting from the generic items you can define new items which will get extended by other editor features.\n * Read more about generic types in the {@glink framework/deep-dive/schema Schema deep-dive} guide.\n *\n * # Example definitions\n *\n * Allow `paragraph` in roots and block quotes:\n *\n * ```ts\n * schema.register( 'paragraph', {\n * \tallowIn: [ '$root', 'blockQuote' ],\n * \tisBlock: true\n * } );\n * ```\n *\n * Allow `paragraph` everywhere where `$block` is allowed (i.e. in `$root`):\n *\n * ```ts\n * schema.register( 'paragraph', {\n * \tallowWhere: '$block',\n * \tisBlock: true\n * } );\n * ```\n *\n * Allow `paragraph` inside a `$root` and allow `$text` as a `paragraph` child:\n *\n * ```ts\n * schema.register( 'paragraph', {\n * \tallowIn: '$root',\n * \tallowChildren: '$text',\n * \tisBlock: true\n * } );\n * ```\n *\n * The previous rule can be written in a shorter form using inheritance:\n *\n * ```ts\n * schema.register( 'paragraph', {\n * \tinheritAllFrom: '$block'\n * } );\n * ```\n *\n * Make `imageBlock` a block object, which is allowed everywhere where `$block` is.\n * Also, allow `src` and `alt` attributes in it:\n *\n * ```ts\n * schema.register( 'imageBlock', {\n * \tinheritAllFrom: '$blockObject',\n * \tallowAttributes: [ 'src', 'alt' ],\n * } );\n * ```\n *\n * Make `caption` allowed in `imageBlock` and make it allow all the content of `$block`s (usually, `$text`).\n * Also, mark it as a limit element so it cannot be split:\n *\n * ```ts\n * schema.register( 'caption', {\n * \tallowIn: 'imageBlock',\n * \tallowContentOf: '$block',\n * \tisLimit: true\n * } );\n * ```\n *\n * Make `listItem` inherit all from `$block` but also allow additional attributes:\n *\n * ```ts\n * schema.register( 'listItem', {\n * \tinheritAllFrom: '$block',\n * \tallowAttributes: [ 'listType', 'listIndent' ]\n * } );\n * ```\n *\n * Which translates to:\n *\n * ```ts\n * schema.register( 'listItem', {\n * \tallowWhere: '$block',\n * \tallowContentOf: '$block',\n * \tallowAttributesOf: '$block',\n * \tinheritTypesFrom: '$block',\n * \tallowAttributes: [ 'listType', 'listIndent' ]\n * } );\n * ```\n *\n * # Tips\n *\n * * Check schema definitions of existing features to see how they are defined.\n * * If you want to publish your feature so other developers can use it, try to use\n * generic items as much as possible.\n * * Keep your model clean. Limit it to the actual data and store information in a normalized way.\n * * Remember about defining the `is*` properties. They do not affect the allowed structures, but they can\n * affect how the editor features treat your elements.\n */\nexport interface SchemaItemDefinition {\n\n\t/**\n\t * Defines in which other items this item will be allowed.\n\t */\n\tallowIn?: string | Array<string>;\n\n\t/**\n\t * Defines which other items are allowed inside this item.\n\t */\n\tallowChildren?: string | Array<string>;\n\n\t/**\n\t * Defines allowed attributes of the given item.\n\t */\n\tallowAttributes?: string | Array<string>;\n\n\t/**\n\t * Inherits \"allowed children\" from other items.\n\t */\n\tallowContentOf?: string | Array<string>;\n\n\t/**\n\t * Inherits \"allowed in\" from other items.\n\t */\n\tallowWhere?: string | Array<string>;\n\n\t/**\n\t * Inherits attributes from other items.\n\t */\n\tallowAttributesOf?: string | Array<string>;\n\n\t/**\n\t * Inherits `is*` properties of other items.\n\t */\n\tinheritTypesFrom?: string | Array<string>;\n\n\t/**\n\t * A shorthand for `allowContentOf`, `allowWhere`, `allowAttributesOf`, `inheritTypesFrom`.\n\t */\n\tinheritAllFrom?: string;\n\n\t/**\n\t * Whether this item is paragraph-like. Generally speaking, content is usually made out of blocks\n\t * like paragraphs, list items, images, headings, etc. All these elements are marked as blocks. A block\n\t * should not allow another block inside. Note: There is also the `$block` generic item which has `isBlock` set to `true`.\n\t * Most block type items will inherit from `$block` (through `inheritAllFrom`).\n\t *\n\t * Read more about the block elements in the\n\t * {@glink framework/deep-dive/schema#block-elements Block elements section} of\n\t * the {@glink framework/deep-dive/schema Schema deep-dive} guide.\n\t */\n\tisBlock?: boolean;\n\n\t/**\n\t * Whether an item is \"text-like\" and should be treated as an inline node. Examples of inline elements:\n\t * `$text`, `softBreak` (`<br>`), etc.\n\t *\n\t * Read more about the inline elements in the\n\t * {@glink framework/deep-dive/schema#inline-elements Inline elements section} of the Schema deep-dive guide.\n\t */\n\tisInline?: boolean;\n\n\t/**\n\t * It can be understood as whether this element should not be split by <kbd>Enter</kbd>.\n\t * Examples of limit elements: `$root`, table cell, image caption, etc. In other words, all actions that happen inside\n\t * a limit element are limited to its content.\n\t *\n\t * Read more about the limit elements in the\n\t * {@glink framework/deep-dive/schema#limit-elements Limit elements section} of\n\t * the {@glink framework/deep-dive/schema Schema deep-dive} guide.\n\t */\n\tisLimit?: boolean;\n\n\t/**\n\t * Whether an item is \"self-contained\" and should be treated as a whole. Examples of object elements:\n\t * `imageBlock`, `table`, `video`, etc.\n\t *\n\t * **Note:** An object is also a limit, so\n\t * {@link module:engine/model/schema~Schema#isLimit `isLimit()`} returns `true` for object elements automatically.\n\t *\n\t * Read more about the object elements in the\n\t * {@glink framework/deep-dive/schema#object-elements Object elements section} of the Schema deep-dive guide.\n\t */\n\tisObject?: boolean;\n\n\t/**\n\t * `true` when an element should be selectable as a whole by the user.\n\t * Examples of selectable elements: `imageBlock`, `table`, `tableCell`, etc.\n\t *\n\t * **Note:** An object is also a selectable element, so\n\t * {@link module:engine/model/schema~Schema#isSelectable `isSelectable()`} returns `true` for object elements automatically.\n\t *\n\t * Read more about selectable elements in the\n\t * {@glink framework/deep-dive/schema#selectable-elements Selectable elements section} of\n\t * the {@glink framework/deep-dive/schema Schema deep-dive} guide.\n\t */\n\tisSelectable?: boolean;\n\n\t/**\n\t * An item is a content when it always finds its way to the editor data output regardless of the number and type of its descendants.\n\t * Examples of content elements: `$text`, `imageBlock`, `table`, etc. (but not `paragraph`, `heading1` or `tableCell`).\n\t *\n\t * **Note:** An object is also a content element, so\n\t * {@link module:engine/model/schema~Schema#isContent `isContent()`} returns `true` for object elements automatically.\n\t *\n\t * Read more about content elements in the\n\t * {@glink framework/deep-dive/schema#content-elements Content elements section} of\n\t * the {@glink framework/deep-dive/schema Schema deep-dive} guide.\n\t */\n\tisContent?: boolean;\n}\n\n/**\n * A simplified version of {@link module:engine/model/schema~SchemaItemDefinition} after\n * compilation by the {@link module:engine/model/schema~Schema schema}.\n * Rules fed to the schema by {@link module:engine/model/schema~Schema#register}\n * and {@link module:engine/model/schema~Schema#extend} methods are defined in the\n * {@link module:engine/model/schema~SchemaItemDefinition} format.\n * Later on, they are compiled to `SchemaCompiledItemDefinition` so when you use e.g.\n * the {@link module:engine/model/schema~Schema#getDefinition} method you get the compiled version.\n *\n * The compiled version contains only the following properties:\n *\n * * The `name` property,\n * * The `is*` properties,\n * * The `allowIn` array,\n * * The `allowChildren` array,\n * * The `allowAttributes` array.\n */\nexport interface SchemaCompiledItemDefinition {\n\tname: string;\n\tisBlock: boolean;\n\tisContent: boolean;\n\tisInline: boolean;\n\tisLimit: boolean;\n\tisObject: boolean;\n\tisSelectable: boolean;\n\tallowIn: Array<string>;\n\tallowChildren: Array<string>;\n\tallowAttributes: Array<string>;\n}\n\ninterface SchemaCompiledItemDefinitionInternal {\n\tname: string;\n\n\tisBlock?: boolean;\n\tisContent?: boolean;\n\tisInline?: boolean;\n\tisLimit?: boolean;\n\tisObject?: boolean;\n\tisSelectable?: boolean;\n\n\tallowIn: Array<string>;\n\tallowChildren: Array<string>;\n\tallowAttributes: Array<string>;\n\n\tallowAttributesOf?: Array<string>;\n\tallowContentOf?: Array<string>;\n\tallowWhere?: Array<string>;\n\tinheritTypesFrom?: Array<string>;\n}\n\ntype TypeNames = Array<'isBlock' | 'isContent' | 'isInline' | 'isLimit' | 'isObject' | 'isSelectable'>;\n\n/**\n * A schema context — a list of ancestors of a given position in the document.\n *\n * Considering such position:\n *\n * ```xml\n * <$root>\n * \t<blockQuote>\n * \t\t<paragraph>\n * \t\t\t^\n * \t\t</paragraph>\n * \t</blockQuote>\n * </$root>\n * ```\n *\n * The context of this position is its {@link module:engine/model/position~Position#getAncestors lists of ancestors}:\n *\n *\t\t[ rootElement, blockQuoteElement, paragraphElement ]\n *\n * Contexts are used in the {@link module:engine/model/schema~Schema#event:checkChild `Schema#checkChild`} and\n * {@link module:engine/model/schema~Schema#event:checkAttribute `Schema#checkAttribute`} events as a definition\n * of a place in the document where the check occurs. The context instances are created based on the first arguments\n * of the {@link module:engine/model/schema~Schema#checkChild `Schema#checkChild()`} and\n * {@link module:engine/model/schema~Schema#checkAttribute `Schema#checkAttribute()`} methods so when\n * using these methods you need to use {@link module:engine/model/schema~SchemaContextDefinition}s.\n */\nexport class SchemaContext implements Iterable<SchemaContextItem> {\n\tprivate _items!: Array<SchemaContextItem>;\n\n\t/**\n\t * Creates an instance of the context.\n\t */\n\tconstructor( context: SchemaContextDefinition ) {\n\t\tif ( context instanceof SchemaContext ) {\n\t\t\treturn context;\n\t\t}\n\n\t\tlet items: Array<string | Item | DocumentFragment>;\n\n\t\tif ( typeof context == 'string' ) {\n\t\t\titems = [ context ];\n\t\t} else if ( !Array.isArray( context ) ) {\n\t\t\t// `context` is item or position.\n\t\t\t// Position#getAncestors() doesn't accept any parameters but it works just fine here.\n\t\t\titems = context.getAncestors( { includeSelf: true } );\n\t\t} else {\n\t\t\titems = context;\n\t\t}\n\n\t\tthis._items = items.map( mapContextItem );\n\t}\n\n\t/**\n\t * The number of items.\n\t */\n\tpublic get length(): number {\n\t\treturn this._items.length;\n\t}\n\n\t/**\n\t * The last item (the lowest node).\n\t */\n\tpublic get last(): SchemaContextItem {\n\t\treturn this._items[ this._items.length - 1 ]!;\n\t}\n\n\t/**\n\t * Iterable interface.\n\t *\n\t * Iterates over all context items.\n\t */\n\tpublic [ Symbol.iterator ](): IterableIterator<SchemaContextItem> {\n\t\treturn this._items[ Symbol.iterator ]();\n\t}\n\n\t/**\n\t * Returns a new schema context instance with an additional item.\n\t *\n\t * Item can be added as:\n\t *\n\t * ```ts\n\t * const context = new SchemaContext( [ '$root' ] );\n\t *\n\t * // An element.\n\t * const fooElement = writer.createElement( 'fooElement' );\n\t * const newContext = context.push( fooElement ); // [ '$root', 'fooElement' ]\n\t *\n\t * // A text node.\n\t * const text = writer.createText( 'foobar' );\n\t * const newContext = context.push( text ); // [ '$root', '$text' ]\n\t *\n\t * // A string (element name).\n\t * const newContext = context.push( 'barElement' ); // [ '$root', 'barElement' ]\n\t * ```\n\t *\n\t * **Note** {@link module:engine/model/node~Node} that is already in the model tree will be added as the only item\n\t * (without ancestors).\n\t *\n\t * @param item An item that will be added to the current context.\n\t * @returns A new schema context instance with an additional item.\n\t */\n\tpublic push( item: string | Node ): SchemaContext {\n\t\tconst ctx = new SchemaContext( [ item ] );\n\n\t\tctx._items = [ ...this._items, ...ctx._items ];\n\n\t\treturn ctx;\n\t}\n\n\t/**\n\t * Gets an item on the given index.\n\t */\n\tpublic getItem( index: number ): SchemaContextItem {\n\t\treturn this._items[ index ];\n\t}\n\n\t/**\n\t * Returns the names of items.\n\t */\n\tpublic* getNames(): IterableIterator<string> {\n\t\tyield* this._items.map( item => item.name );\n\t}\n\n\t/**\n\t * Checks whether the context ends with the given nodes.\n\t *\n\t * ```ts\n\t * const ctx = new SchemaContext( [ rootElement, paragraphElement, textNode ] );\n\t *\n\t * ctx.endsWith( '$text' ); // -> true\n\t * ctx.endsWith( 'paragraph $text' ); // -> true\n\t * ctx.endsWith( '$root' ); // -> false\n\t * ctx.endsWith( 'paragraph' ); // -> false\n\t * ```\n\t */\n\tpublic endsWith( query: string ): boolean {\n\t\treturn Array.from( this.getNames() ).join( ' ' ).endsWith( query );\n\t}\n\n\t/**\n\t * Checks whether the context starts with the given nodes.\n\t *\n\t * ```ts\n\t * const ctx = new SchemaContext( [ rootElement, paragraphElement, textNode ] );\n\t *\n\t * ctx.endsWith( '$root' ); // -> true\n\t * ctx.endsWith( '$root paragraph' ); // -> true\n\t * ctx.endsWith( '$text' ); // -> false\n\t * ctx.endsWith( 'paragraph' ); // -> false\n\t * ```\n\t */\n\tpublic startsWith( query: string ): boolean {\n\t\treturn Array.from( this.getNames() ).join( ' ' ).startsWith( query );\n\t}\n}\n\n/**\n * The definition of a {@link module:engine/model/schema~SchemaContext schema context}.\n *\n * Contexts can be created in multiple ways:\n *\n * * By defining a **node** – in this cases this node and all its ancestors will be used.\n * * By defining a **position** in the document – in this case all its ancestors will be used.\n * * By defining an **array of nodes** – in this case this array defines the entire context.\n * * By defining a **name of node** - in this case node will be \"mocked\". It is not recommended because context\n * will be unrealistic (e.g. attributes of these nodes are not specified). However, at times this may be the only\n * way to define the context (e.g. when checking some hypothetical situation).\n * * By defining an **array of node names** (potentially, mixed with real nodes) – The same as **name of node**\n * but it is possible to create a path.\n * * By defining a {@link module:engine/model/schema~SchemaContext} instance - in this case the same instance as provided\n * will be return.\n *\n * Examples of context definitions passed to the {@link module:engine/model/schema~Schema#checkChild `Schema#checkChild()`}\n * method:\n *\n * ```ts\n * // Assuming that we have a $root > blockQuote > paragraph structure, the following code\n * // will check node 'foo' in the following context:\n * // [ rootElement, blockQuoteElement, paragraphElement ]\n * const contextDefinition = paragraphElement;\n * const childToCheck = 'foo';\n * schema.checkChild( contextDefinition, childToCheck );\n *\n * // Also check in [ rootElement, blockQuoteElement, paragraphElement ].\n * schema.checkChild( model.createPositionAt( paragraphElement, 0 ), 'foo' );\n *\n * // Check in [ rootElement, paragraphElement ].\n * schema.checkChild( [ rootElement, paragraphElement ], 'foo' );\n *\n * // Check only fakeParagraphElement.\n * schema.checkChild( 'paragraph', 'foo' );\n *\n * // Check in [ fakeRootElement, fakeBarElement, paragraphElement ].\n * schema.checkChild( [ '$root', 'bar', paragraphElement ], 'foo' );\n * ```\n *\n * All these `checkChild()` calls will fire {@link module:engine/model/schema~Schema#event:checkChild `Schema#checkChild`}\n * events in which `args[ 0 ]` is an instance of the context. Therefore, you can write a listener like this:\n *\n * ```ts\n * schema.on( 'checkChild', ( evt, args ) => {\n * \tconst ctx = args[ 0 ];\n *\n * \tconsole.log( Array.from( ctx.getNames() ) );\n * } );\n * ```\n *\n * Which will log the following:\n *\n * ```ts\n * [ '$root', 'blockQuote', 'paragraph' ]\n * [ '$root', 'paragraph' ]\n * [ '$root', 'bar', 'paragraph' ]\n * ```\n *\n * Note: When using the {@link module:engine/model/schema~Schema#checkAttribute `Schema#checkAttribute()`} method\n * you may want to check whether a text node may have an attribute. A {@link module:engine/model/text~Text} is a\n * correct way to define a context so you can do this:\n *\n * ```ts\n * schema.checkAttribute( textNode, 'bold' );\n * ```\n *\n * But sometimes you want to check whether a text at a given position might've had some attribute,\n * in which case you can create a context by mixing in an array of elements with a `'$text'` string:\n *\n * ```ts\n * // Check in [ rootElement, paragraphElement, textNode ].\n * schema.checkChild( [ ...positionInParagraph.getAncestors(), '$text' ], 'bold' );\n * ```\n */\nexport type SchemaContextDefinition = Item | Position | SchemaContext | string | Array<string | Item>;\n\n/**\n * An item of the {@link module:engine/model/schema~SchemaContext schema context}.\n *\n * It contains 3 properties:\n *\n * * `name` – the name of this item,\n * * `* getAttributeKeys()` – a generator of keys of item attributes,\n * * `getAttribute( keyName )` – a method to get attribute values.\n *\n * The context item interface is a highly simplified version of {@link module:engine/model/node~Node} and its role\n * is to expose only the information which schema checks are able to provide (which is the name of the node and\n * node's attributes).\n *\n * ```ts\n * schema.on( 'checkChild', ( evt, args ) => {\n * \tconst ctx = args[ 0 ];\n * \tconst firstItem = ctx.getItem( 0 );\n *\n * \tconsole.log( firstItem.name ); // -> '$root'\n * \tconsole.log( firstItem.getAttribute( 'foo' ) ); // -> 'bar'\n * \tconsole.log( Array.from( firstItem.getAttributeKeys() ) ); // -> [ 'foo', 'faa' ]\n * } );\n * ```\n */\nexport interface SchemaContextItem {\n\tname: string;\n\tgetAttributeKeys(): Generator<string>;\n\tgetAttribute( keyName: string ): unknown;\n}\n\n/**\n * A structure containing additional metadata describing the attribute.\n *\n * See {@link module:engine/model/schema~Schema#setAttributeProperties `Schema#setAttributeProperties()`} for usage examples.\n */\nexport interface AttributeProperties {\n\n\t/**\n\t * Indicates that the attribute should be considered as a visual formatting, like `bold`, `italic` or\n\t * `fontSize` rather than semantic attribute (such as `src`, `listType`, etc.). For example, it is used by the \"Remove format\" feature.\n\t */\n\tisFormatting?: boolean;\n\n\t/**\n\t * Indicates that given text attribute should be copied to the next block when enter is pressed.\n\t */\n\tcopyOnEnter?: boolean;\n\n\t/**\n\t * Indicates that given attribute should be preserved while replacing the element.\n\t */\n\tcopyOnReplace?: boolean;\n\n\t/**\n\t * Indicates that given text attribute should be copied from an inline object to the next inserted inline content.\n\t *\n\t * @default true\n\t */\n\tcopyFromObject?: boolean;\n\n\t[ name: string ]: unknown;\n}\n\nexport type SchemaAttributeCheckCallback = ( context: SchemaContext, attributeName: string ) => unknown;\n\nexport type SchemaChildCheckCallback = ( ctx: SchemaContext, def: SchemaCompiledItemDefinition ) => unknown;\n\nfunction compileBaseItemRule( sourceItemRules: Array<SchemaItemDefinition>, itemName: string ): SchemaCompiledItemDefinitionInternal {\n\tconst itemRule = {\n\t\tname: itemName,\n\n\t\tallowIn: [],\n\t\tallowContentOf: [],\n\t\tallowWhere: [],\n\n\t\tallowAttributes: [],\n\t\tallowAttributesOf: [],\n\n\t\tallowChildren: [],\n\n\t\tinheritTypesFrom: []\n\t};\n\n\tcopyTypes( sourceItemRules, itemRule );\n\n\tcopyProperty( sourceItemRules, itemRule, 'allowIn' );\n\tcopyProperty( sourceItemRules, itemRule, 'allowContentOf' );\n\tcopyProperty( sourceItemRules, itemRule, 'allowWhere' );\n\n\tcopyProperty( sourceItemRules, itemRule, 'allowAttributes' );\n\tcopyProperty( sourceItemRules, itemRule, 'allowAttributesOf' );\n\n\tcopyProperty( sourceItemRules, itemRule, 'allowChildren' );\n\n\tcopyProperty( sourceItemRules, itemRule, 'inheritTypesFrom' );\n\n\tmakeInheritAllWork( sourceItemRules, itemRule );\n\n\treturn itemRule;\n}\n\nfunction compileAllowChildren(\n\tcompiledDefinitions: Record<string, SchemaCompiledItemDefinitionInternal>,\n\titemName: string\n) {\n\tconst item = compiledDefinitions[ itemName ];\n\n\tfor ( const allowChildrenItem of item.allowChildren ) {\n\t\tconst allowedChildren = compiledDefinitions[ allowChildrenItem ];\n\n\t\t// The allowChildren property may point to an unregistered element.\n\t\tif ( !allowedChildren ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tallowedChildren.allowIn.push( itemName );\n\t}\n\n\t// The allowIn property already includes correct items, reset the allowChildren property\n\t// to avoid duplicates later when setting up compilation results.\n\titem.allowChildren.length = 0;\n}\n\nfunction compileAllowContentOf(\n\tcompiledDefinitions: Record<string, SchemaCompiledItemDefinitionInternal>,\n\titemName: string\n) {\n\tfor ( const allowContentOfItemName of compiledDefinitions[ itemName ].allowContentOf! ) {\n\t\t// The allowContentOf property may point to an unregistered element.\n\t\tif ( compiledDefinitions[ allowContentOfItemName ] ) {\n\t\t\tconst allowedChildren = getAllowedChildren( compiledDefinitions, allowContentOfItemName );\n\n\t\t\tallowedChildren.forEach( allowedItem => {\n\t\t\t\tallowedItem.allowIn.push( itemName );\n\t\t\t} );\n\t\t}\n\t}\n\n\tdelete compiledDefinitions[ itemName ].allowContentOf;\n}\n\nfunction compileAllowWhere(\n\tcompiledDefinitions: Record<string, SchemaCompiledItemDefinitionInternal>,\n\titemName: string\n) {\n\tfor ( const allowWhereItemName of compiledDefinitions[ itemName ].allowWhere! ) {\n\t\tconst inheritFrom = compiledDefinitions[ allowWhereItemName ];\n\n\t\t// The allowWhere property may point to an unregistered element.\n\t\tif ( inheritFrom ) {\n\t\t\tconst allowedIn = inheritFrom.allowIn;\n\n\t\t\tcompiledDefinitions[ itemName ].allowIn.push( ...allowedIn );\n\t\t}\n\t}\n\n\tdelete compiledDefinitions[ itemName ].allowWhere;\n}\n\nfunction compileAllowAttributesOf(\n\tcompiledDefinitions: Record<string, SchemaCompiledItemDefinitionInternal>,\n\titemName: string\n) {\n\tfor ( const allowAttributeOfItem of compiledDefinitions[ itemName ].allowAttributesOf! ) {\n\t\tconst inheritFrom = compiledDefinitions[ allowAttributeOfItem ];\n\n\t\tif ( inheritFrom ) {\n\t\t\tconst inheritAttributes = inheritFrom.allowAttributes;\n\n\t\t\tcompiledDefinitions[ itemName ].allowAttributes.push( ...inheritAttributes );\n\t\t}\n\t}\n\n\tdelete compiledDefinitions[ itemName ].allowAttributesOf;\n}\n\nfunction compileInheritPropertiesFrom(\n\tcompiledDefinitions: Record<string, SchemaCompiledItemDefinitionInternal>,\n\titemName: string\n) {\n\tconst item = compiledDefinitions[ itemName ];\n\n\tfor ( const inheritPropertiesOfItem of item.inheritTypesFrom! ) {\n\t\tconst inheritFrom = compiledDefinitions[ inheritPropertiesOfItem ];\n\n\t\tif ( inheritFrom ) {\n\t\t\tconst typeNames = Object.keys( inheritFrom ).filter( name => name.startsWith( 'is' ) ) as TypeNames;\n\n\t\t\tfor ( const name of typeNames ) {\n\t\t\t\tif ( !( name in item ) ) {\n\t\t\t\t\titem[ name ] = inheritFrom[ name ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tdelete item.inheritTypesFrom;\n}\n\n// Remove items which weren't registered (because it may break some checks or we'd need to complicate them).\n// Make sure allowIn doesn't contain repeated values.\nfunction cleanUpAllowIn(\n\tcompiledDefinitions: Record<string, SchemaCompiledItemDefinitionInternal>,\n\titemName: string\n) {\n\tconst itemRule = compiledDefinitions[ itemName ];\n\tconst existingItems = itemRule.allowIn.filter( itemToCheck => compiledDefinitions[ itemToCheck ] );\n\n\titemRule.allowIn = Array.from( new Set( existingItems ) );\n}\n\n// Setup allowChildren items based on allowIn.\nfunction setupAllowChildren(\n\tcompiledDefinitions: Record<string, SchemaCompiledItemDefinitionInternal>,\n\titemName: string\n) {\n\tconst itemRule = compiledDefinitions[ itemName ];\n\n\tfor ( const allowedParentItemName of itemRule.allowIn ) {\n\t\tconst allowedParentItem = compiledDefinitions[ allowedParentItemName ];\n\n\t\tallowedParentItem.allowChildren.push( itemName );\n\t}\n}\n\nfunction cleanUpAllowAttributes(\n\tcompiledDefinitions: Record<string, SchemaCompiledItemDefinitionInternal>,\n\titemName: string\n) {\n\tconst itemRule = compiledDefinitions[ itemName ];\n\n\titemRule.allowAttributes = Array.from( new Set( itemRule.allowAttributes ) );\n}\n\nfunction copyTypes( sourceItemRules: Array<SchemaItemDefinition>, itemRule: SchemaCompiledItemDefinitionInternal ) {\n\tfor ( const sourceItemRule of sourceItemRules ) {\n\t\tconst typeNames = Object.keys( sourceItemRule ).filter( name => name.startsWith( 'is' ) ) as TypeNames;\n\n\t\tfor ( const name of typeNames ) {\n\t\t\titemRule[ name ] = !!sourceItemRule[ name ];\n\t\t}\n\t}\n}\n\nfunction copyProperty(\n\tsourceItemRules: Array<SchemaItemDefinition>,\n\titemRule: SchemaCompiledItemDefinitionInternal,\n\tpropertyName: 'allowIn' |\n\t\t'allowContentOf' |\n\t\t'allowWhere' |\n\t\t'allowAttributes' |\n\t\t'allowAttributesOf' |\n\t\t'allowChildren' |\n\t\t'inheritTypesFrom'\n) {\n\tfor ( const sourceItemRule of sourceItemRules ) {\n\t\tconst value = sourceItemRule[ propertyName ];\n\n\t\tif ( typeof value == 'string' ) {\n\t\t\titemRule[ propertyName ]!.push( value );\n\t\t} else if ( Array.isArray( value ) ) {\n\t\t\titemRule[ propertyName ]!.push( ...value );\n\t\t}\n\t}\n}\n\nfunction makeInheritAllWork( sourceItemRules: Array<SchemaItemDefinition>, itemRule: SchemaCompiledItemDefinitionInternal ) {\n\tfor ( const sourceItemRule of sourceItemRules ) {\n\t\tconst inheritFrom = sourceItemRule.inheritAllFrom;\n\n\t\tif ( inheritFrom ) {\n\t\t\titemRule.allowContentOf!.push( inheritFrom );\n\t\t\titemRule.allowWhere!.push( inheritFrom );\n\t\t\titemRule.allowAttributesOf!.push( inheritFrom );\n\t\t\titemRule.inheritTypesFrom!.push( inheritFrom );\n\t\t}\n\t}\n}\n\nfunction getAllowedChildren( compiledDefinitions: Record<string, SchemaCompiledItemDefinitionInternal>, itemName: string ) {\n\tconst itemRule = compiledDefinitions[ itemName ];\n\n\treturn getValues( compiledDefinitions ).filter( def => def.allowIn.includes( itemRule.name ) );\n}\n\nfunction getValues( obj: Record<string, SchemaCompiledItemDefinitionInternal> ) {\n\treturn Object.keys( obj ).map( key => obj[ key ] );\n}\n\nfunction mapContextItem( ctxItem: string | Item | DocumentFragment ): SchemaContextItem {\n\tif ( typeof ctxItem == 'string' || ctxItem.is( 'documentFragment' ) ) {\n\t\treturn {\n\t\t\tname: typeof ctxItem == 'string' ? ctxItem : '$documentFragment',\n\n\t\t\t* getAttributeKeys() {},\n\n\t\t\tgetAttribute() {}\n\t\t};\n\t} else {\n\t\treturn {\n\t\t\t// '$text' means text nodes and text proxies.\n\t\t\tname: ctxItem.is( 'element' ) ? ctxItem.name : '$text',\n\n\t\t\t* getAttributeKeys() {\n\t\t\t\tyield* ctxItem.getAttributeKeys();\n\t\t\t},\n\n\t\t\tgetAttribute( key ) {\n\t\t\t\treturn ctxItem.getAttribute( key );\n\t\t\t}\n\t\t};\n\t}\n}\n\n/**\n * Generator function returning values from provided walkers, switching between them at each iteration. If only one walker\n * is provided it will return data only from that walker.\n *\n * @param backward Walker iterating in backward direction.\n * @param forward Walker iterating in forward direction.\n * @returns Object returned at each iteration contains `value` and `walker` (informing which walker returned\n * given value) fields.\n */\nfunction* combineWalkers( backward: TreeWalker | undefined, forward: TreeWalker | undefined ) {\n\tlet done = false;\n\n\twhile ( !done ) {\n\t\tdone = true;\n\n\t\tif ( backward ) {\n\t\t\tconst step = backward.next();\n\n\t\t\tif ( !step.done ) {\n\t\t\t\tdone = false;\n\t\t\t\tyield {\n\t\t\t\t\twalker: backward,\n\t\t\t\t\tvalue: step.value\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( forward ) {\n\t\t\tconst step = forward.next();\n\n\t\t\tif ( !step.done ) {\n\t\t\t\tdone = false;\n\t\t\t\tyield {\n\t\t\t\t\twalker: forward,\n\t\t\t\t\tvalue: step.value\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Takes an array of non-intersecting ranges. For each of them gets minimal flat ranges covering that range and returns\n * all those minimal flat ranges.\n *\n * @param ranges Ranges to process.\n * @returns Minimal flat ranges of given `ranges`.\n */\nfunction* convertToMinimalFlatRanges( ranges: Iterable<Range> ): Iterable<Range> {\n\tfor ( const range of ranges ) {\n\t\tyield* range.getMinimalFlatRanges();\n\t}\n}\n\nfunction removeDisallowedAttributeFromNode( schema: Schema, node: Node, writer: Writer ) {\n\tfor ( const attribute of node.getAttributeKeys() ) {\n\t\tif ( !schema.checkAttribute( node, attribute ) ) {\n\t\t\twriter.removeAttribute( attribute, node );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/conversion/upcastdispatcher\n */\n\nimport ViewConsumable from './viewconsumable';\nimport ModelRange from '../model/range';\nimport ModelPosition from '../model/position';\nimport type ModelElement from '../model/element';\nimport type ModelNode from '../model/node';\nimport type ViewElement from '../view/element';\nimport type ViewText from '../view/text';\nimport type ViewDocumentFragment from '../view/documentfragment';\nimport type ModelDocumentFragment from '../model/documentfragment';\nimport type { default as Schema, SchemaContextDefinition } from '../model/schema';\nimport { SchemaContext } from '../model/schema'; // eslint-disable-line no-duplicate-imports\nimport type ModelWriter from '../model/writer';\nimport { isParagraphable, wrapInParagraph } from '../model/utils/autoparagraphing';\n\nimport type ViewItem from '../view/item';\n\nimport { CKEditorError, EmitterMixin } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Upcast dispatcher is a central point of the view-to-model conversion, which is a process of\n * converting a given {@link module:engine/view/documentfragment~DocumentFragment view document fragment} or\n * {@link module:engine/view/element~Element view element} into a correct model structure.\n *\n * During the conversion process, the dispatcher fires events for all {@link module:engine/view/node~Node view nodes}\n * from the converted view document fragment.\n * Special callbacks called \"converters\" should listen to these events in order to convert the view nodes.\n *\n * The second parameter of the callback is the `data` object with the following properties:\n *\n * * `data.viewItem` contains a {@link module:engine/view/node~Node view node} or a\n * {@link module:engine/view/documentfragment~DocumentFragment view document fragment}\n * that is converted at the moment and might be handled by the callback.\n * * `data.modelRange` is used to point to the result\n * of the current conversion (e.g. the element that is being inserted)\n * and is always a {@link module:engine/model/range~Range} when the conversion succeeds.\n * * `data.modelCursor` is a {@link module:engine/model/position~Position position} on which the converter should insert\n * the newly created items.\n *\n * The third parameter of the callback is an instance of {@link module:engine/conversion/upcastdispatcher~UpcastConversionApi}\n * which provides additional tools for converters.\n *\n * You can read more about conversion in the {@glink framework/deep-dive/conversion/upcast Upcast conversion} guide.\n *\n * Examples of event-based converters:\n *\n * ```ts\n * // A converter for links (<a>).\n * editor.data.upcastDispatcher.on( 'element:a', ( evt, data, conversionApi ) => {\n * \tif ( conversionApi.consumable.consume( data.viewItem, { name: true, attributes: [ 'href' ] } ) ) {\n * \t\t// The <a> element is inline and is represented by an attribute in the model.\n * \t\t// This is why you need to convert only children.\n * \t\tconst { modelRange } = conversionApi.convertChildren( data.viewItem, data.modelCursor );\n *\n * \t\tfor ( let item of modelRange.getItems() ) {\n * \t\t\tif ( conversionApi.schema.checkAttribute( item, 'linkHref' ) ) {\n * \t\t\t\tconversionApi.writer.setAttribute( 'linkHref', data.viewItem.getAttribute( 'href' ), item );\n * \t\t\t}\n * \t\t}\n * \t}\n * } );\n *\n * // Convert <p> element's font-size style.\n * // Note: You should use a low-priority observer in order to ensure that\n * // it is executed after the element-to-element converter.\n * editor.data.upcastDispatcher.on( 'element:p', ( evt, data, conversionApi ) => {\n * \tconst { consumable, schema, writer } = conversionApi;\n *\n * \tif ( !consumable.consume( data.viewItem, { style: 'font-size' } ) ) {\n * \t\treturn;\n * \t}\n *\n * \tconst fontSize = data.viewItem.getStyle( 'font-size' );\n *\n * \t// Do not go for the model element after data.modelCursor because it might happen\n * \t// that a single view element was converted to multiple model elements. Get all of them.\n * \tfor ( const item of data.modelRange.getItems( { shallow: true } ) ) {\n * \t\tif ( schema.checkAttribute( item, 'fontSize' ) ) {\n * \t\t\twriter.setAttribute( 'fontSize', fontSize, item );\n * \t\t}\n * \t}\n * }, { priority: 'low' } );\n *\n * // Convert all elements which have no custom converter into a paragraph (autoparagraphing).\n * editor.data.upcastDispatcher.on( 'element', ( evt, data, conversionApi ) => {\n * \t// Check if an element can be converted.\n * \tif ( !conversionApi.consumable.test( data.viewItem, { name: data.viewItem.name } ) ) {\n * \t\t// When an element is already consumed by higher priority converters, do nothing.\n * \t\treturn;\n * \t}\n *\n * \tconst paragraph = conversionApi.writer.createElement( 'paragraph' );\n *\n * \t// Try to safely insert a paragraph at the model cursor - it will find an allowed parent for the current element.\n * \tif ( !conversionApi.safeInsert( paragraph, data.modelCursor ) ) {\n * \t\t// When an element was not inserted, it means that you cannot insert a paragraph at this position.\n * \t\treturn;\n * \t}\n *\n * \t// Consume the inserted element.\n * \tconversionApi.consumable.consume( data.viewItem, { name: data.viewItem.name } ) );\n *\n * \t// Convert the children to a paragraph.\n * \tconst { modelRange } = conversionApi.convertChildren( data.viewItem, paragraph ) );\n *\n * \t// Update `modelRange` and `modelCursor` in the `data` as a conversion result.\n * \tconversionApi.updateConversionResult( paragraph, data );\n * }, { priority: 'low' } );\n * ```\n *\n * @fires viewCleanup\n * @fires element\n * @fires text\n * @fires documentFragment\n */\nexport default class UpcastDispatcher extends EmitterMixin() {\n\t/**\n\t * An interface passed by the dispatcher to the event callbacks.\n\t */\n\tpublic conversionApi: UpcastConversionApi;\n\n\t/**\n\t * The list of elements that were created during splitting.\n\t *\n\t * After the conversion process, the list is cleared.\n\t */\n\tprivate _splitParts = new Map<ModelElement, Array<ModelElement>>();\n\n\t/**\n\t * The list of cursor parent elements that were created during splitting.\n\t *\n\t * After the conversion process the list is cleared.\n\t */\n\tprivate _cursorParents = new Map<ModelNode, ModelElement | ModelDocumentFragment>();\n\n\t/**\n\t * The position in the temporary structure where the converted content is inserted. The structure reflects the context of\n\t * the target position where the content will be inserted. This property is built based on the context parameter of the\n\t * convert method.\n\t */\n\tprivate _modelCursor: ModelPosition | null = null;\n\n\t/**\n\t * The list of elements that were created during the splitting but should not get removed on conversion end even if they are empty.\n\t *\n\t * The list is cleared after the conversion process.\n\t */\n\tprivate _emptyElementsToKeep = new Set<ModelElement>();\n\n\t/**\n\t * Creates an upcast dispatcher that operates using the passed API.\n\t *\n\t * @see module:engine/conversion/upcastdispatcher~UpcastConversionApi\n\t * @param conversionApi Additional properties for an interface that will be passed to events fired\n\t * by the upcast dispatcher.\n\t */\n\tconstructor( conversionApi: Pick<UpcastConversionApi, 'schema'> ) {\n\t\tsuper();\n\n\t\tthis.conversionApi = {\n\t\t\t...conversionApi,\n\t\t\tconsumable: null as any,\n\t\t\twriter: null as any,\n\t\t\tstore: null,\n\t\t\tconvertItem: ( viewItem, modelCursor ) => this._convertItem( viewItem, modelCursor ),\n\t\t\tconvertChildren: ( viewElement, positionOrElement ) => this._convertChildren( viewElement, positionOrElement ),\n\t\t\tsafeInsert: ( modelNode, position ) => this._safeInsert( modelNode, position ),\n\t\t\tupdateConversionResult: ( modelElement, data ) => this._updateConversionResult( modelElement, data ),\n\t\t\t// Advanced API - use only if custom position handling is needed.\n\t\t\tsplitToAllowedParent: ( modelNode, modelCursor ) => this._splitToAllowedParent( modelNode, modelCursor ),\n\t\t\tgetSplitParts: modelElement => this._getSplitParts( modelElement ),\n\t\t\tkeepEmptyElement: modelElement => this._keepEmptyElement( modelElement )\n\t\t};\n\t}\n\n\t/**\n\t * Starts the conversion process. The entry point for the conversion.\n\t *\n\t * @fires element\n\t * @fires text\n\t * @fires documentFragment\n\t * @param viewElement The part of the view to be converted.\n\t * @param writer An instance of the model writer.\n\t * @param context Elements will be converted according to this context.\n\t * @returns Model data that is the result of the conversion process\n\t * wrapped in `DocumentFragment`. Converted marker elements will be set as the document fragment's\n\t * {@link module:engine/model/documentfragment~DocumentFragment#markers static markers map}.\n\t */\n\tpublic convert(\n\t\tviewElement: ViewElement | ViewDocumentFragment,\n\t\twriter: ModelWriter,\n\t\tcontext: SchemaContextDefinition = [ '$root' ]\n\t): ModelDocumentFragment {\n\t\tthis.fire<UpcastViewCleanupEvent>( 'viewCleanup', viewElement );\n\n\t\t// Create context tree and set position in the top element.\n\t\t// Items will be converted according to this position.\n\t\tthis._modelCursor = createContextTree( context, writer )!;\n\n\t\t// Store writer in conversion as a conversion API\n\t\t// to be sure that conversion process will use the same batch.\n\t\tthis.conversionApi.writer = writer;\n\n\t\t// Create consumable values list for conversion process.\n\t\tthis.conversionApi.consumable = ViewConsumable.createFrom( viewElement );\n\n\t\t// Custom data stored by converter for conversion process.\n\t\tthis.conversionApi.store = {};\n\n\t\t// Do the conversion.\n\t\tconst { modelRange } = this._convertItem( viewElement, this._modelCursor );\n\n\t\t// Conversion result is always a document fragment so let's create it.\n\t\tconst documentFragment = writer.createDocumentFragment();\n\n\t\t// When there is a conversion result.\n\t\tif ( modelRange ) {\n\t\t\t// Remove all empty elements that were create while splitting.\n\t\t\tthis._removeEmptyElements();\n\n\t\t\t// Move all items that were converted in context tree to the document fragment.\n\t\t\tfor ( const item of Array.from( this._modelCursor.parent.getChildren() ) ) {\n\t\t\t\twriter.append( item, documentFragment );\n\t\t\t}\n\n\t\t\t// Extract temporary markers elements from model and set as static markers collection.\n\t\t\t( documentFragment as any ).markers = extractMarkersFromModelFragment( documentFragment, writer );\n\t\t}\n\n\t\t// Clear context position.\n\t\tthis._modelCursor = null;\n\n\t\t// Clear split elements & parents lists.\n\t\tthis._splitParts.clear();\n\t\tthis._cursorParents.clear();\n\t\tthis._emptyElementsToKeep.clear();\n\n\t\t// Clear conversion API.\n\t\t( this.conversionApi as any ).writer = null;\n\t\tthis.conversionApi.store = null;\n\n\t\t// Return fragment as conversion result.\n\t\treturn documentFragment;\n\t}\n\n\t/**\n\t * @see module:engine/conversion/upcastdispatcher~UpcastConversionApi#convertItem\n\t */\n\tprivate _convertItem( viewItem: ViewItem | ViewDocumentFragment, modelCursor: ModelPosition ): {\n\t\tmodelRange: ModelRange | null;\n\t\tmodelCursor: ModelPosition;\n\t} {\n\t\tconst data: UpcastConversionData = { viewItem, modelCursor, modelRange: null };\n\n\t\tif ( viewItem.is( 'element' ) ) {\n\t\t\tthis.fire<UpcastElementEvent>(\n\t\t\t\t`element:${ viewItem.name }`,\n\t\t\t\tdata as UpcastConversionData<ViewElement>,\n\t\t\t\tthis.conversionApi\n\t\t\t);\n\t\t} else if ( viewItem.is( '$text' ) ) {\n\t\t\tthis.fire<UpcastTextEvent>(\n\t\t\t\t'text',\n\t\t\t\tdata as UpcastConversionData<ViewText>,\n\t\t\t\tthis.conversionApi\n\t\t\t);\n\t\t} else {\n\t\t\tthis.fire<UpcastDocumentFragmentEvent>(\n\t\t\t\t'documentFragment',\n\t\t\t\tdata as UpcastConversionData<ViewDocumentFragment>,\n\t\t\t\tthis.conversionApi\n\t\t\t);\n\t\t}\n\n\t\t// Handle incorrect conversion result.\n\t\tif ( data.modelRange && !( data.modelRange instanceof ModelRange ) ) {\n\t\t\t/**\n\t\t\t * Incorrect conversion result was dropped.\n\t\t\t *\n\t\t\t * {@link module:engine/model/range~Range Model range} should be a conversion result.\n\t\t\t *\n\t\t\t * @error view-conversion-dispatcher-incorrect-result\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'view-conversion-dispatcher-incorrect-result', this );\n\t\t}\n\n\t\treturn { modelRange: data.modelRange, modelCursor: data.modelCursor };\n\t}\n\n\t/**\n\t * @see module:engine/conversion/upcastdispatcher~UpcastConversionApi#convertChildren\n\t */\n\tprivate _convertChildren(\n\t\tviewItem: ViewElement | ViewDocumentFragment,\n\t\telementOrModelCursor: ModelPosition | ModelElement\n\t): {\n\t\tmodelRange: ModelRange;\n\t\tmodelCursor: ModelPosition;\n\t} {\n\t\tlet nextModelCursor = elementOrModelCursor.is( 'position' ) ?\n\t\t\telementOrModelCursor : ModelPosition._createAt( elementOrModelCursor, 0 );\n\n\t\tconst modelRange = new ModelRange( nextModelCursor );\n\n\t\tfor ( const viewChild of Array.from( viewItem.getChildren() ) ) {\n\t\t\tconst result = this._convertItem( viewChild, nextModelCursor );\n\n\t\t\tif ( result.modelRange instanceof ModelRange ) {\n\t\t\t\t( modelRange as any ).end = result.modelRange.end;\n\t\t\t\tnextModelCursor = result.modelCursor;\n\t\t\t}\n\t\t}\n\n\t\treturn { modelRange, modelCursor: nextModelCursor };\n\t}\n\n\t/**\n\t * @see module:engine/conversion/upcastdispatcher~UpcastConversionApi#safeInsert\n\t */\n\tprivate _safeInsert(\n\t\tmodelNode: ModelNode,\n\t\tposition: ModelPosition\n\t): boolean {\n\t\t// Find allowed parent for element that we are going to insert.\n\t\t// If current parent does not allow to insert element but one of the ancestors does\n\t\t// then split nodes to allowed parent.\n\t\tconst splitResult = this._splitToAllowedParent( modelNode, position );\n\n\t\t// When there is no split result it means that we can't insert element to model tree, so let's skip it.\n\t\tif ( !splitResult ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Insert element on allowed position.\n\t\tthis.conversionApi.writer!.insert( modelNode, splitResult.position );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * @see module:engine/conversion/upcastdispatcher~UpcastConversionApi#updateConversionResult\n\t */\n\tprivate _updateConversionResult( modelElement: ModelElement, data: UpcastConversionData ): void {\n\t\tconst parts = this._getSplitParts( modelElement );\n\n\t\tconst writer = this.conversionApi.writer!;\n\n\t\t// Set conversion result range - only if not set already.\n\t\tif ( !data.modelRange ) {\n\t\t\tdata.modelRange = writer.createRange(\n\t\t\t\twriter.createPositionBefore( modelElement ),\n\t\t\t\twriter.createPositionAfter( parts[ parts.length - 1 ] )\n\t\t\t);\n\t\t}\n\n\t\tconst savedCursorParent = this._cursorParents.get( modelElement );\n\n\t\t// Now we need to check where the `modelCursor` should be.\n\t\tif ( savedCursorParent ) {\n\t\t\t// If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n\t\t\t//\n\t\t\t// before: <allowed><notAllowed>foo[]</notAllowed></allowed>\n\t\t\t// after: <allowed><notAllowed>foo</notAllowed> <converted></converted> <notAllowed>[]</notAllowed></allowed>\n\n\t\t\tdata.modelCursor = writer.createPositionAt( savedCursorParent, 0 );\n\t\t} else {\n\t\t\t// Otherwise just continue after inserted element.\n\n\t\t\tdata.modelCursor = data.modelRange.end;\n\t\t}\n\t}\n\n\t/**\n\t * @see module:engine/conversion/upcastdispatcher~UpcastConversionApi#splitToAllowedParent\n\t */\n\tprivate _splitToAllowedParent( node: ModelNode, modelCursor: ModelPosition ): {\n\t\tposition: ModelPosition;\n\t\tcursorParent?: ModelElement | ModelDocumentFragment;\n\t} | null {\n\t\tconst { schema, writer } = this.conversionApi;\n\n\t\t// Try to find allowed parent.\n\t\tlet allowedParent = schema.findAllowedParent( modelCursor, node );\n\n\t\tif ( allowedParent ) {\n\t\t\t// When current position parent allows to insert node then return this position.\n\t\t\tif ( allowedParent === modelCursor.parent ) {\n\t\t\t\treturn { position: modelCursor };\n\t\t\t}\n\n\t\t\t// When allowed parent is in context tree (it's outside the converted tree).\n\t\t\tif ( this._modelCursor!.parent.getAncestors().includes( allowedParent ) ) {\n\t\t\t\tallowedParent = null;\n\t\t\t}\n\t\t}\n\n\t\tif ( !allowedParent ) {\n\t\t\t// Check if the node wrapped with a paragraph would be accepted by the schema.\n\t\t\tif ( !isParagraphable( modelCursor, node, schema ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tposition: wrapInParagraph( modelCursor, writer! )\n\t\t\t};\n\t\t}\n\n\t\t// Split element to allowed parent.\n\t\tconst splitResult = this.conversionApi.writer!.split( modelCursor, allowedParent );\n\n\t\t// Using the range returned by `model.Writer#split`, we will pair original elements with their split parts.\n\t\t//\n\t\t// The range returned from the writer spans \"over the split\" or, precisely saying, from the end of the original element (the one\n\t\t// that got split) to the beginning of the other part of that element:\n\t\t//\n\t\t// <limit><a><b><c>X[]Y</c></b><a></limit> ->\n\t\t// <limit><a><b><c>X[</c></b></a><a><b><c>]Y</c></b></a>\n\t\t//\n\t\t// After the split there cannot be any full node between the positions in `splitRange`. The positions are touching.\n\t\t// Also, because of how splitting works, it is easy to notice, that \"closing tags\" are in the reverse order than \"opening tags\".\n\t\t// Also, since we split all those elements, each of them has to have the other part.\n\t\t//\n\t\t// With those observations in mind, we will pair the original elements with their split parts by saving \"closing tags\" and matching\n\t\t// them with \"opening tags\" in the reverse order. For that we can use a stack.\n\t\tconst stack: Array<ModelElement> = [];\n\n\t\tfor ( const treeWalkerValue of splitResult.range.getWalker() ) {\n\t\t\tif ( treeWalkerValue.type == 'elementEnd' ) {\n\t\t\t\tstack.push( treeWalkerValue.item as ModelElement );\n\t\t\t} else {\n\t\t\t\t// There should not be any text nodes after the element is split, so the only other value is `elementStart`.\n\t\t\t\tconst originalPart = stack.pop();\n\t\t\t\tconst splitPart = treeWalkerValue.item as ModelElement;\n\n\t\t\t\tthis._registerSplitPair( originalPart!, splitPart );\n\t\t\t}\n\t\t}\n\n\t\tconst cursorParent = splitResult.range.end.parent;\n\t\tthis._cursorParents.set( node, cursorParent );\n\n\t\treturn {\n\t\t\tposition: splitResult.position,\n\t\t\tcursorParent\n\t\t};\n\t}\n\n\t/**\n\t * Registers that a `splitPart` element is a split part of the `originalPart` element.\n\t *\n\t * The data set by this method is used by {@link #_getSplitParts} and {@link #_removeEmptyElements}.\n\t */\n\tprivate _registerSplitPair( originalPart: ModelElement, splitPart: ModelElement ): void {\n\t\tif ( !this._splitParts.has( originalPart ) ) {\n\t\t\tthis._splitParts.set( originalPart, [ originalPart ] );\n\t\t}\n\n\t\tconst list = this._splitParts.get( originalPart )!;\n\n\t\tthis._splitParts.set( splitPart, list );\n\t\tlist.push( splitPart );\n\t}\n\n\t/**\n\t * @see module:engine/conversion/upcastdispatcher~UpcastConversionApi#getSplitParts\n\t */\n\tprivate _getSplitParts( element: ModelElement ): Array<ModelElement> {\n\t\tlet parts: Array<ModelElement>;\n\n\t\tif ( !this._splitParts.has( element ) ) {\n\t\t\tparts = [ element ];\n\t\t} else {\n\t\t\tparts = this._splitParts.get( element )!;\n\t\t}\n\n\t\treturn parts;\n\t}\n\n\t/**\n\t * Mark an element that were created during the splitting to not get removed on conversion end even if it is empty.\n\t */\n\tprivate _keepEmptyElement( element: ModelElement ): void {\n\t\tthis._emptyElementsToKeep.add( element );\n\t}\n\n\t/**\n\t * Checks if there are any empty elements created while splitting and removes them.\n\t *\n\t * This method works recursively to re-check empty elements again after at least one element was removed in the initial call,\n\t * as some elements might have become empty after other empty elements were removed from them.\n\t */\n\tprivate _removeEmptyElements(): void {\n\t\tlet anyRemoved = false;\n\n\t\tfor ( const element of this._splitParts.keys() ) {\n\t\t\tif ( element.isEmpty && !this._emptyElementsToKeep.has( element ) ) {\n\t\t\t\tthis.conversionApi.writer!.remove( element );\n\t\t\t\tthis._splitParts.delete( element );\n\n\t\t\t\tanyRemoved = true;\n\t\t\t}\n\t\t}\n\n\t\tif ( anyRemoved ) {\n\t\t\tthis._removeEmptyElements();\n\t\t}\n\t}\n}\n\n/**\n * Fired before the first conversion event, at the beginning of the upcast (view-to-model conversion) process.\n *\n * @eventName ~UpcastDispatcher#viewCleanup\n * @param viewItem A part of the view to be converted.\n */\nexport type UpcastViewCleanupEvent = {\n\tname: 'viewCleanup';\n\targs: [ ViewElement | ViewDocumentFragment ];\n};\n\ntype UpcastEvent<TName extends string, TItem extends ViewItem | ViewDocumentFragment> = {\n\tname: TName | `${ TName }:${ string }`;\n\targs: [ data: UpcastConversionData<TItem>, conversionApi: UpcastConversionApi ];\n};\n\n/**\n * Conversion data.\n *\n * **Note:** Keep in mind that this object is shared by reference between all conversion callbacks that will be called.\n * This means that callbacks can override values if needed, and these values will be available in other callbacks.\n */\nexport interface UpcastConversionData<TItem extends ViewItem | ViewDocumentFragment = ViewItem | ViewDocumentFragment> {\n\n\t/**\n\t * The converted item.\n\t */\n\tviewItem: TItem;\n\n\t/**\n\t * The position where the converter should start changes.\n\t * Change this value for the next converter to tell where the conversion should continue.\n\t */\n\tmodelCursor: ModelPosition;\n\n\t/**\n\t * The current state of conversion result. Every change to\n\t * the converted element should be reflected by setting or modifying this property.\n\t */\n\tmodelRange: ModelRange | null;\n}\n\n/**\n * Fired when an {@link module:engine/view/element~Element} is converted.\n *\n * `element` is a namespace event for a class of events. Names of actually called events follow the pattern of\n * `element:<elementName>` where `elementName` is the name of the converted element. This way listeners may listen to\n * a conversion of all or just specific elements.\n *\n * @eventName ~UpcastDispatcher#element\n * @param data The conversion data. Keep in mind that this object is shared by reference between all callbacks\n * that will be called. This means that callbacks can override values if needed, and these values\n * will be available in other callbacks.\n * @param conversionApi Conversion utilities to be used by the callback.\n */\nexport type UpcastElementEvent = UpcastEvent<'element', ViewElement>;\n\n/**\n * Fired when a {@link module:engine/view/text~Text} is converted.\n *\n * @eventName ~UpcastDispatcher#text\n * @see ~UpcastDispatcher#event:element\n */\nexport type UpcastTextEvent = UpcastEvent<'text', ViewText>;\n\n/**\n * Fired when a {@link module:engine/view/documentfragment~DocumentFragment} is converted.\n *\n * @eventName ~UpcastDispatcher#documentFragment\n * @see ~UpcastDispatcher#event:element\n */\nexport type UpcastDocumentFragmentEvent = UpcastEvent<'documentFragment', ViewDocumentFragment>;\n\n/**\n * Traverses given model item and searches elements which marks marker range. Found element is removed from\n * DocumentFragment but path of this element is stored in a Map which is then returned.\n *\n * @param modelItem Fragment of model.\n * @returns List of static markers.\n */\nfunction extractMarkersFromModelFragment( modelItem: ModelDocumentFragment, writer: ModelWriter ): Map<string, ModelRange> {\n\tconst markerElements = new Set<ModelElement>();\n\tconst markers = new Map<string, ModelRange>();\n\n\t// Create ModelTreeWalker.\n\tconst range = ModelRange._createIn( modelItem ).getItems();\n\n\t// Walk through DocumentFragment and collect marker elements.\n\tfor ( const item of range ) {\n\t\t// Check if current element is a marker.\n\t\tif ( item.is( 'element', '$marker' ) ) {\n\t\t\tmarkerElements.add( item );\n\t\t}\n\t}\n\n\t// Walk through collected marker elements store its path and remove its from the DocumentFragment.\n\tfor ( const markerElement of markerElements ) {\n\t\tconst markerName = markerElement.getAttribute( 'data-name' ) as string;\n\t\tconst currentPosition = writer.createPositionBefore( markerElement );\n\n\t\t// When marker of given name is not stored it means that we have found the beginning of the range.\n\t\tif ( !markers.has( markerName ) ) {\n\t\t\tmarkers.set( markerName, new ModelRange( currentPosition.clone() ) );\n\t\t// Otherwise is means that we have found end of the marker range.\n\t\t} else {\n\t\t\t( markers.get( markerName ) as any ).end = currentPosition.clone();\n\t\t}\n\n\t\t// Remove marker element from DocumentFragment.\n\t\twriter.remove( markerElement );\n\t}\n\n\treturn markers;\n}\n\n/**\n * Creates model fragment according to given context and returns position in the bottom (the deepest) element.\n */\nfunction createContextTree(\n\tcontextDefinition: SchemaContextDefinition,\n\twriter: ModelWriter\n): ModelPosition | undefined {\n\tlet position: ModelPosition | undefined;\n\n\tfor ( const item of new SchemaContext( contextDefinition ) ) {\n\t\tconst attributes: Record<string, unknown> = {};\n\n\t\tfor ( const key of item.getAttributeKeys() ) {\n\t\t\tattributes[ key ] = item.getAttribute( key );\n\t\t}\n\n\t\tconst current = writer.createElement( item.name, attributes );\n\n\t\tif ( position ) {\n\t\t\twriter.insert( current, position );\n\t\t}\n\n\t\tposition = ModelPosition._createAt( current, 0 );\n\t}\n\n\treturn position;\n}\n\n/**\n * A set of conversion utilities available as the third parameter of the\n * {@link module:engine/conversion/upcastdispatcher~UpcastDispatcher upcast dispatcher}'s events.\n */\nexport interface UpcastConversionApi {\n\n\t/**\n\t * Stores information about what parts of the processed view item are still waiting to be handled. After a piece of view item\n\t * was converted, an appropriate consumable value should be\n\t * {@link module:engine/conversion/viewconsumable~ViewConsumable#consume consumed}.\n\t */\n\tconsumable: ViewConsumable;\n\n\t/**\n\t * The model's schema instance.\n\t */\n\tschema: Schema;\n\n\t/**\n\t * The {@link module:engine/model/writer~Writer} instance used to manipulate the data during conversion.\n\t */\n\twriter: ModelWriter;\n\n\t/**\n\t * Custom data stored by converters for the conversion process. Custom properties of this object can be defined and use to\n\t * pass parameters between converters.\n\t *\n\t * The difference between this property and the `data` parameter of\n\t * {@link module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:element} is that the `data` parameters allow you\n\t * to pass parameters within a single event and `store` within the whole conversion.\n\t */\n\tstore: unknown;\n\n\t/**\n\t * Starts the conversion of a given item by firing an appropriate event.\n\t *\n\t * Every fired event is passed (as the first parameter) an object with the `modelRange` property. Every event may set and/or\n\t * modify that property. When all callbacks are done, the final value of the `modelRange` property is returned by this method.\n\t * The `modelRange` must be a {@link module:engine/model/range~Range model range} or `null` (as set by default).\n\t *\n\t * @fires module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:element\n\t * @fires module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:text\n\t * @fires module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:documentFragment\n\t * @param viewItem Item to convert.\n\t * @param modelCursor The conversion position.\n\t * @returns The conversion result:\n\t * * `result.modelRange` The model range containing the result of the item conversion,\n\t * created and modified by callbacks attached to the fired event, or `null` if the conversion result was incorrect.\n\t * * `result.modelCursor` The position where the conversion should be continued.\n\t */\n\tconvertItem( viewItem: ViewItem, modelCursor: ModelPosition ): {\n\t\tmodelRange: ModelRange | null;\n\t\tmodelCursor: ModelPosition;\n\t};\n\n\t/**\n\t * Starts the conversion of all children of a given item by firing appropriate events for all the children.\n\t *\n\t * @fires module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:element\n\t * @fires module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:text\n\t * @fires module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:documentFragment\n\t * @param viewElement An element whose children should be converted.\n\t * @param positionOrElement A position or an element of\n\t * the conversion.\n\t * @returns The conversion result:\n\t * * `result.modelRange` The model range containing the results of the conversion of all children\n\t * of the given item. When no child was converted, the range is collapsed.\n\t * * `result.modelCursor` The position where the conversion should be continued.\n\t */\n\tconvertChildren( viewElement: ViewElement | ViewDocumentFragment, positionOrElement: ModelPosition | ModelElement ): {\n\t\tmodelRange: ModelRange | null;\n\t\tmodelCursor: ModelPosition;\n\t};\n\n\t/**\n\t * Safely inserts an element to the document, checking the {@link module:engine/model/schema~Schema schema} to find an allowed parent\n\t * for an element that you are going to insert, starting from the given position. If the current parent does not allow to insert\n\t * the element but one of the ancestors does, then splits the nodes to allowed parent.\n\t *\n\t * If the schema allows to insert the node in a given position, nothing is split.\n\t *\n\t * If it was not possible to find an allowed parent, `false` is returned and nothing is split.\n\t *\n\t * Otherwise, ancestors are split.\n\t *\n\t * For instance, if `<imageBlock>` is not allowed in `<paragraph>` but is allowed in `$root`:\n\t *\n\t * ```\n\t * <paragraph>foo[]bar</paragraph>\n\t *\n\t * -> safe insert for `<imageBlock>` will split ->\n\t *\n\t * <paragraph>foo</paragraph>[]<paragraph>bar</paragraph>\n\t *```\n\t *\n\t * Example usage:\n\t *\n\t * ```\n\t * const myElement = conversionApi.writer.createElement( 'myElement' );\n\t *\n\t * if ( !conversionApi.safeInsert( myElement, data.modelCursor ) ) {\n\t * \treturn;\n\t * }\n\t *```\n\t *\n\t * The split result is saved and {@link #updateConversionResult} should be used to update the\n\t * {@link module:engine/conversion/upcastdispatcher~UpcastConversionData conversion data}.\n\t *\n\t * @param modelNode The node to insert.\n\t * @param position The position where an element is going to be inserted.\n\t * @returns The split result. If it was not possible to find an allowed position, `false` is returned.\n\t */\n\tsafeInsert( modelNode: ModelNode, position: ModelPosition ): boolean;\n\n\t/**\n\t * Updates the conversion result and sets a proper {@link module:engine/conversion/upcastdispatcher~UpcastConversionData#modelRange} and\n\t * the next {@link module:engine/conversion/upcastdispatcher~UpcastConversionData#modelCursor} after the conversion.\n\t * Used together with {@link #safeInsert}, it enables you to easily convert elements without worrying if the node was split\n\t * during the conversion of its children.\n\t *\n\t * A usage example in converter code:\n\t *\n\t * ```ts\n\t * const myElement = conversionApi.writer.createElement( 'myElement' );\n\t *\n\t * if ( !conversionApi.safeInsert( myElement, data.modelCursor ) ) {\n\t * \treturn;\n\t * }\n\t *\n\t * // Children conversion may split `myElement`.\n\t * conversionApi.convertChildren( data.viewItem, myElement );\n\t *\n\t * conversionApi.updateConversionResult( myElement, data );\n\t * ```\n\t */\n\tupdateConversionResult( modelElement: ModelElement, data: UpcastConversionData ): void;\n\n\t/**\n\t * Checks the {@link module:engine/model/schema~Schema schema} to find an allowed parent for an element that is going to be inserted\n\t * starting from the given position. If the current parent does not allow inserting an element but one of the ancestors does, the method\n\t * splits nodes to allowed parent.\n\t *\n\t * If the schema allows inserting the node in the given position, nothing is split and an object with that position is returned.\n\t *\n\t * If it was not possible to find an allowed parent, `null` is returned and nothing is split.\n\t *\n\t * Otherwise, ancestors are split and an object with a position and the copy of the split element is returned.\n\t *\n\t * For instance, if `<imageBlock>` is not allowed in `<paragraph>` but is allowed in `$root`:\n\t *\n\t * ```\n\t * <paragraph>foo[]bar</paragraph>\n\t *\n\t * -> split for `<imageBlock>` ->\n\t *\n\t * <paragraph>foo</paragraph>[]<paragraph>bar</paragraph>\n\t * ```\n\t *\n\t * In the example above, the position between `<paragraph>` elements will be returned as `position` and the second `paragraph`\n\t * as `cursorParent`.\n\t *\n\t * **Note:** This is an advanced method. For most cases {@link #safeInsert} and {@link #updateConversionResult} should be used.\n\t *\n\t * @param modelNode The node to insert.\n\t * @param modelCursor The position where the element is going to be inserted.\n\t * @returns The split result. If it was not possible to find an allowed position, `null` is returned.\n\t * * `position` The position between split elements.\n\t * * `cursorParent` The element inside which the cursor should be placed to\n\t * continue the conversion. When the element is not defined it means that there was no split.\n\t */\n\tsplitToAllowedParent( modelNode: ModelNode, modelCursor: ModelPosition ): {\n\t\tposition: ModelPosition;\n\t\tcursorParent?: ModelElement | ModelDocumentFragment;\n\t} | null;\n\n\t/**\n\t * Returns all the split parts of the given `element` that were created during upcasting through using {@link #splitToAllowedParent}.\n\t * It enables you to easily track these elements and continue processing them after they are split during the conversion of their\n\t * children.\n\t *\n\t * ```\n\t * <paragraph>Foo<imageBlock />bar<imageBlock />baz</paragraph> ->\n\t * <paragraph>Foo</paragraph><imageBlock /><paragraph>bar</paragraph><imageBlock /><paragraph>baz</paragraph>\n\t * ```\n\t *\n\t * For a reference to any of above paragraphs, the function will return all three paragraphs (the original element included),\n\t * sorted in the order of their creation (the original element is the first one).\n\t *\n\t * If the given `element` was not split, an array with a single element is returned.\n\t *\n\t * A usage example in the converter code:\n\t *\n\t * ```ts\n\t * const myElement = conversionApi.writer.createElement( 'myElement' );\n\t *\n\t * // Children conversion may split `myElement`.\n\t * conversionApi.convertChildren( data.viewItem, data.modelCursor );\n\t *\n\t * const splitParts = conversionApi.getSplitParts( myElement );\n\t * const lastSplitPart = splitParts[ splitParts.length - 1 ];\n\t *\n\t * // Setting `data.modelRange` basing on split parts:\n\t * data.modelRange = conversionApi.writer.createRange(\n\t * \tconversionApi.writer.createPositionBefore( myElement ),\n\t * \tconversionApi.writer.createPositionAfter( lastSplitPart )\n\t * );\n\t *\n\t * // Setting `data.modelCursor` to continue after the last split element:\n\t * data.modelCursor = conversionApi.writer.createPositionAfter( lastSplitPart );\n\t * ```\n\t *\n\t * **Tip:** If you are unable to get a reference to the original element (for example because the code is split into multiple converters\n\t * or even classes) but it has already been converted, you may want to check the first element in `data.modelRange`. This is a common\n\t * situation if an attribute converter is separated from an element converter.\n\t *\n\t * **Note:** This is an advanced method. For most cases {@link #safeInsert} and {@link #updateConversionResult} should be used.\n\t */\n\tgetSplitParts( modelElement: ModelElement ): Array<ModelElement>;\n\n\t/**\n\t * Mark an element that was created during splitting to not get removed on conversion end even if it is empty.\n\t *\n\t * **Note:** This is an advanced method. For most cases you will not need to keep the split empty element.\n\t */\n\tkeepEmptyElement( modelElement: ModelElement ): void;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/dataprocessor/basichtmlwriter\n */\n\n/* globals document */\n\nimport type HtmlWriter from './htmlwriter';\n\n/**\n * Basic HTML writer. It uses the native `innerHTML` property for basic conversion\n * from a document fragment to an HTML string.\n */\nexport default class BasicHtmlWriter implements HtmlWriter {\n\t/**\n\t * Returns an HTML string created from the document fragment.\n\t */\n\tpublic getHtml( fragment: DocumentFragment ): string {\n\t\tconst doc = document.implementation.createHTMLDocument( '' );\n\t\tconst container = doc.createElement( 'div' );\n\n\t\tcontainer.appendChild( fragment );\n\n\t\treturn container.innerHTML;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/dataprocessor/htmldataprocessor\n */\n\n/* globals DOMParser */\n\nimport BasicHtmlWriter from './basichtmlwriter';\nimport DomConverter from '../view/domconverter';\n\nimport type DataProcessor from './dataprocessor';\nimport type HtmlWriter from './htmlwriter';\nimport type ViewDocument from '../view/document';\nimport type ViewDocumentFragment from '../view/documentfragment';\nimport type { MatcherPattern } from '../view/matcher';\n\n/**\n * The HTML data processor class.\n * This data processor implementation uses HTML as input and output data.\n */\nexport default class HtmlDataProcessor implements DataProcessor {\n\t/**\n\t * A DOM parser instance used to parse an HTML string to an HTML document.\n\t */\n\tpublic domParser: DOMParser;\n\n\t/**\n\t * A DOM converter used to convert DOM elements to view elements.\n\t */\n\tpublic domConverter: DomConverter;\n\n\t/**\n\t * A basic HTML writer instance used to convert DOM elements to an HTML string.\n\t */\n\tpublic htmlWriter: HtmlWriter;\n\n\tpublic skipComments: boolean = true;\n\n\t/**\n\t * Creates a new instance of the HTML data processor class.\n\t *\n\t * @param document The view document instance.\n\t */\n\tconstructor( document: ViewDocument ) {\n\t\tthis.domParser = new DOMParser();\n\t\tthis.domConverter = new DomConverter( document, { renderingMode: 'data' } );\n\t\tthis.htmlWriter = new BasicHtmlWriter();\n\t}\n\n\t/**\n\t * Converts a provided {@link module:engine/view/documentfragment~DocumentFragment document fragment}\n\t * to data format — in this case to an HTML string.\n\t *\n\t * @returns HTML string.\n\t */\n\tpublic toData( viewFragment: ViewDocumentFragment ): string {\n\t\t// Convert view DocumentFragment to DOM DocumentFragment.\n\t\tconst domFragment = this.domConverter.viewToDom( viewFragment ) as DocumentFragment;\n\n\t\t// Convert DOM DocumentFragment to HTML output.\n\t\treturn this.htmlWriter.getHtml( domFragment );\n\t}\n\n\t/**\n\t * Converts the provided HTML string to a view tree.\n\t *\n\t * @param data An HTML string.\n\t * @returns A converted view element.\n\t */\n\tpublic toView( data: string ): ViewDocumentFragment {\n\t\t// Convert input HTML data to DOM DocumentFragment.\n\t\tconst domFragment = this._toDom( data );\n\n\t\t// Convert DOM DocumentFragment to view DocumentFragment.\n\t\treturn this.domConverter.domToView( domFragment, { skipComments: this.skipComments } ) as ViewDocumentFragment;\n\t}\n\n\t/**\n\t * Registers a {@link module:engine/view/matcher~MatcherPattern} for view elements whose content should be treated as raw data\n\t * and not processed during the conversion from the DOM to the view elements.\n\t *\n\t * The raw data can be later accessed by a\n\t * {@link module:engine/view/element~Element#getCustomProperty custom property of a view element} called `\"$rawContent\"`.\n\t *\n\t * @param pattern Pattern matching all view elements whose content should be treated as raw data.\n\t */\n\tpublic registerRawContentMatcher( pattern: MatcherPattern ): void {\n\t\tthis.domConverter.registerRawContentMatcher( pattern );\n\t}\n\n\t/**\n\t * If the processor is set to use marked fillers, it will insert ` ` fillers wrapped in `<span>` elements\n\t * (`<span data-cke-filler=\"true\"> </span>`) instead of regular ` ` characters.\n\t *\n\t * This mode allows for a more precise handling of the block fillers (so they do not leak into the editor content) but\n\t * bloats the editor data with additional markup.\n\t *\n\t * This mode may be required by some features and will be turned on by them automatically.\n\t *\n\t * @param type Whether to use the default or the marked ` ` block fillers.\n\t */\n\tpublic useFillerType( type: 'default' | 'marked' ): void {\n\t\tthis.domConverter.blockFillerMode = type == 'marked' ? 'markedNbsp' : 'nbsp';\n\t}\n\n\t/**\n\t * Converts an HTML string to its DOM representation. Returns a document fragment containing nodes parsed from\n\t * the provided data.\n\t */\n\tprotected _toDom( data: string ): DocumentFragment {\n\t\t// Wrap data with a <body> tag so leading non-layout nodes (like <script>, <style>, HTML comment)\n\t\t// will be preserved in the body collection.\n\t\t// Do it only for data that is not a full HTML document.\n\t\tif ( !data.match( /<(?:html|body|head|meta)(?:\\s[^>]*)?>/i ) ) {\n\t\t\tdata = `<body>${ data }</body>`;\n\t\t}\n\n\t\tconst document = this.domParser.parseFromString( data, 'text/html' );\n\t\tconst fragment = document.createDocumentFragment();\n\t\tconst bodyChildNodes = document.body.childNodes;\n\n\t\twhile ( bodyChildNodes.length > 0 ) {\n\t\t\tfragment.appendChild( bodyChildNodes[ 0 ] );\n\t\t}\n\n\t\treturn fragment;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/controller/datacontroller\n */\n\nimport {\n\tCKEditorError,\n\tEmitterMixin,\n\tObservableMixin,\n\tlogWarning\n} from '@ckeditor/ckeditor5-utils';\n\nimport Mapper from '../conversion/mapper';\n\nimport DowncastDispatcher, { type DowncastInsertEvent } from '../conversion/downcastdispatcher';\nimport { insertAttributesAndChildren, insertText } from '../conversion/downcasthelpers';\n\nimport UpcastDispatcher, {\n\ttype UpcastDocumentFragmentEvent,\n\ttype UpcastElementEvent,\n\ttype UpcastTextEvent\n} from '../conversion/upcastdispatcher';\nimport { convertText, convertToModelFragment } from '../conversion/upcasthelpers';\n\nimport ViewDocumentFragment from '../view/documentfragment';\nimport ViewDocument from '../view/document';\nimport ViewDowncastWriter from '../view/downcastwriter';\nimport type ViewElement from '../view/element';\nimport type { StylesProcessor } from '../view/stylesmap';\nimport type { MatcherPattern } from '../view/matcher';\n\nimport ModelRange from '../model/range';\nimport type Model from '../model/model';\nimport type ModelText from '../model/text';\nimport type ModelElement from '../model/element';\nimport type ModelTextProxy from '../model/textproxy';\nimport type ModelDocumentFragment from '../model/documentfragment';\nimport type { SchemaContextDefinition } from '../model/schema';\nimport type { BatchType } from '../model/batch';\nimport { autoParagraphEmptyRoots } from '../model/utils/autoparagraphing';\n\nimport HtmlDataProcessor from '../dataprocessor/htmldataprocessor';\nimport type DataProcessor from '../dataprocessor/dataprocessor';\n\n/**\n * Controller for the data pipeline. The data pipeline controls how data is retrieved from the document\n * and set inside it. Hence, the controller features two methods which allow to {@link ~DataController#get get}\n * and {@link ~DataController#set set} data of the {@link ~DataController#model model}\n * using the given:\n *\n * * {@link module:engine/dataprocessor/dataprocessor~DataProcessor data processor},\n * * downcast converters,\n * * upcast converters.\n *\n * An instance of the data controller is always available in the {@link module:core/editor/editor~Editor#data `editor.data`}\n * property:\n *\n * ```ts\n * editor.data.get( { rootName: 'customRoot' } ); // -> '<p>Hello!</p>'\n * ```\n */\nexport default class DataController extends EmitterMixin() {\n\t/**\n\t * Data model.\n\t */\n\tpublic readonly model: Model;\n\n\t/**\n\t * Mapper used for the conversion. It has no permanent bindings, because these are created while getting data and\n\t * ae cleared directly after the data are converted. However, the mapper is defined as a class property, because\n\t * it needs to be passed to the `DowncastDispatcher` as a conversion API.\n\t */\n\tpublic readonly mapper: Mapper;\n\n\t/**\n\t * Downcast dispatcher used by the {@link #get get method}. Downcast converters should be attached to it.\n\t */\n\tpublic readonly downcastDispatcher: DowncastDispatcher;\n\n\t/**\n\t * Upcast dispatcher used by the {@link #set set method}. Upcast converters should be attached to it.\n\t */\n\tpublic readonly upcastDispatcher: UpcastDispatcher;\n\n\t/**\n\t * The view document used by the data controller.\n\t */\n\tpublic readonly viewDocument: ViewDocument;\n\n\t/**\n\t * Styles processor used during the conversion.\n\t */\n\tpublic readonly stylesProcessor: StylesProcessor;\n\n\t/**\n\t * Data processor used specifically for HTML conversion.\n\t */\n\tpublic readonly htmlProcessor: HtmlDataProcessor;\n\n\t/**\n\t * Data processor used during the conversion.\n\t * Same instance as {@link #htmlProcessor} by default. Can be replaced at run time to handle different format, e.g. XML or Markdown.\n\t */\n\tpublic processor: DataProcessor;\n\n\t/**\n\t * The view downcast writer just for data conversion purposes, i.e. to modify\n\t * the {@link #viewDocument}.\n\t */\n\tprivate readonly _viewWriter: ViewDowncastWriter;\n\n\t/**\n\t * Creates a data controller instance.\n\t *\n\t * @param model Data model.\n\t * @param stylesProcessor The styles processor instance.\n\t */\n\tconstructor( model: Model, stylesProcessor: StylesProcessor ) {\n\t\tsuper();\n\n\t\tthis.model = model;\n\t\tthis.mapper = new Mapper();\n\n\t\tthis.downcastDispatcher = new DowncastDispatcher( {\n\t\t\tmapper: this.mapper,\n\t\t\tschema: model.schema\n\t\t} );\n\t\tthis.downcastDispatcher.on<DowncastInsertEvent<ModelText | ModelTextProxy>>( 'insert:$text', insertText(), { priority: 'lowest' } );\n\t\tthis.downcastDispatcher.on<DowncastInsertEvent>( 'insert', insertAttributesAndChildren(), { priority: 'lowest' } );\n\n\t\tthis.upcastDispatcher = new UpcastDispatcher( {\n\t\t\tschema: model.schema\n\t\t} );\n\n\t\tthis.viewDocument = new ViewDocument( stylesProcessor );\n\t\tthis.stylesProcessor = stylesProcessor;\n\t\tthis.htmlProcessor = new HtmlDataProcessor( this.viewDocument );\n\t\tthis.processor = this.htmlProcessor;\n\t\tthis._viewWriter = new ViewDowncastWriter( this.viewDocument );\n\n\t\t// Define default converters for text and elements.\n\t\t//\n\t\t// Note that if there is no default converter for the element it will be skipped, for instance `<b>foo</b>` will be\n\t\t// converted to nothing. We therefore add `convertToModelFragment` as a last converter so it converts children of that\n\t\t// element to the document fragment so `<b>foo</b>` will still be converted to `foo` even if there is no converter for `<b>`.\n\t\tthis.upcastDispatcher.on<UpcastTextEvent>( 'text', convertText(), { priority: 'lowest' } );\n\t\tthis.upcastDispatcher.on<UpcastElementEvent>( 'element', convertToModelFragment(), { priority: 'lowest' } );\n\t\tthis.upcastDispatcher.on<UpcastDocumentFragmentEvent>( 'documentFragment', convertToModelFragment(), { priority: 'lowest' } );\n\n\t\tObservableMixin().prototype.decorate.call( this, 'init' as any );\n\t\tObservableMixin().prototype.decorate.call( this, 'set' as any );\n\t\tObservableMixin().prototype.decorate.call( this, 'get' as any );\n\t\tObservableMixin().prototype.decorate.call( this, 'toView' as any );\n\t\tObservableMixin().prototype.decorate.call( this, 'toModel' as any );\n\n\t\t// Fire the `ready` event when the initialization has completed. Such low-level listener offers the possibility\n\t\t// to plug into the initialization pipeline without interrupting the initialization flow.\n\t\tthis.on<DataControllerInitEvent>( 'init', () => {\n\t\t\tthis.fire<DataControllerReadyEvent>( 'ready' );\n\t\t}, { priority: 'lowest' } );\n\n\t\t// Fix empty roots after DataController is 'ready' (note that the init method could be decorated and stopped).\n\t\t// We need to handle this event because initial data could be empty and the post-fixer would not get triggered.\n\t\tthis.on<DataControllerReadyEvent>( 'ready', () => {\n\t\t\tthis.model.enqueueChange( { isUndoable: false }, autoParagraphEmptyRoots );\n\t\t}, { priority: 'lowest' } );\n\t}\n\n\t/**\n\t * Returns the model's data converted by downcast dispatchers attached to {@link #downcastDispatcher} and\n\t * formatted by the {@link #processor data processor}.\n\t *\n\t * A warning is logged when you try to retrieve data for a detached root, as most probably this is a mistake. A detached root should\n\t * be treated like it is removed, and you should not save its data. Note, that the detached root data is always an empty string.\n\t *\n\t * @fires get\n\t * @param options Additional configuration for the retrieved data. `DataController` provides two optional\n\t * properties: `rootName` and `trim`. Other properties of this object are specified by various editor features.\n\t * @param options.rootName Root name. Default 'main'.\n\t * @param options.trim Whether returned data should be trimmed. This option is set to `empty` by default,\n\t * which means whenever editor content is considered empty, an empty string will be returned. To turn off trimming completely\n\t * use `'none'`. In such cases the exact content will be returned (for example a `<p> </p>` for an empty editor).\n\t * @returns Output data.\n\t */\n\tpublic get(\n\t\toptions: {\n\t\t\trootName?: string;\n\t\t\ttrim?: 'empty' | 'none';\n\t\t\t[ key: string ]: unknown;\n\t\t} = {}\n\t): string {\n\t\tconst { rootName = 'main', trim = 'empty' } = options;\n\n\t\tif ( !this._checkIfRootsExists( [ rootName ] ) ) {\n\t\t\t/**\n\t\t\t * Cannot get data from a non-existing root. This error is thrown when\n\t\t\t * {@link module:engine/controller/datacontroller~DataController#get `DataController#get()` method}\n\t\t\t * is called with a non-existent root name. For example, if there is an editor instance with only `main` root,\n\t\t\t * calling {@link module:engine/controller/datacontroller~DataController#get} like:\n\t\t\t *\n\t\t\t * ```ts\n\t\t\t * data.get( { rootName: 'root2' } );\n\t\t\t * ```\n\t\t\t *\n\t\t\t * will throw this error.\n\t\t\t *\n\t\t\t * @error datacontroller-get-non-existent-root\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'datacontroller-get-non-existent-root', this );\n\t\t}\n\n\t\tconst root = this.model.document.getRoot( rootName )!;\n\n\t\tif ( !root.isAttached() ) {\n\t\t\t/**\n\t\t\t * Retrieving document data for a detached root.\n\t\t\t *\n\t\t\t * This usually indicates an error as a detached root should be considered \"removed\" and should not be included in the\n\t\t\t * document data.\n\t\t\t *\n\t\t\t * @error datacontroller-get-detached-root\n\t\t\t */\n\t\t\tlogWarning( 'datacontroller-get-detached-root', this );\n\t\t}\n\n\t\tif ( trim === 'empty' && !this.model.hasContent( root, { ignoreWhitespaces: true } ) ) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn this.stringify( root, options );\n\t}\n\n\t/**\n\t * Returns the content of the given {@link module:engine/model/element~Element model's element} or\n\t * {@link module:engine/model/documentfragment~DocumentFragment model document fragment} converted by the downcast converters\n\t * attached to the {@link #downcastDispatcher} and formatted by the {@link #processor data processor}.\n\t *\n\t * @param modelElementOrFragment The element whose content will be stringified.\n\t * @param options Additional configuration passed to the conversion process.\n\t * @returns Output data.\n\t */\n\tpublic stringify(\n\t\tmodelElementOrFragment: ModelElement | ModelDocumentFragment,\n\t\toptions: Record<string, unknown> = {}\n\t): string {\n\t\t// Model -> view.\n\t\tconst viewDocumentFragment = this.toView( modelElementOrFragment, options );\n\n\t\t// View -> data.\n\t\treturn this.processor.toData( viewDocumentFragment );\n\t}\n\n\t/**\n\t * Returns the content of the given {@link module:engine/model/element~Element model element} or\n\t * {@link module:engine/model/documentfragment~DocumentFragment model document fragment} converted by the downcast\n\t * converters attached to {@link #downcastDispatcher} into a\n\t * {@link module:engine/view/documentfragment~DocumentFragment view document fragment}.\n\t *\n\t * @fires toView\n\t * @param modelElementOrFragment Element or document fragment whose content will be converted.\n\t * @param options Additional configuration that will be available through the\n\t * {@link module:engine/conversion/downcastdispatcher~DowncastConversionApi#options} during the conversion process.\n\t * @returns Output view DocumentFragment.\n\t */\n\tpublic toView(\n\t\tmodelElementOrFragment: ModelElement | ModelDocumentFragment,\n\t\toptions: Record<string, unknown> = {}\n\t): ViewDocumentFragment {\n\t\tconst viewDocument = this.viewDocument;\n\t\tconst viewWriter = this._viewWriter;\n\n\t\t// Clear bindings so the call to this method returns correct results.\n\t\tthis.mapper.clearBindings();\n\n\t\t// First, convert elements.\n\t\tconst modelRange = ModelRange._createIn( modelElementOrFragment );\n\t\tconst viewDocumentFragment = new ViewDocumentFragment( viewDocument );\n\n\t\tthis.mapper.bindElements( modelElementOrFragment, viewDocumentFragment );\n\n\t\t// Prepare list of markers.\n\t\t// For document fragment, simply take the markers assigned to this document fragment.\n\t\t// For model root, all markers in that root will be taken.\n\t\t// For model element, we need to check which markers are intersecting with this element and relatively modify the markers' ranges.\n\t\t// Collapsed markers at element boundary, although considered as not intersecting with the element, will also be returned.\n\t\tconst markers = modelElementOrFragment.is( 'documentFragment' ) ?\n\t\t\tmodelElementOrFragment.markers :\n\t\t\t_getMarkersRelativeToElement( modelElementOrFragment );\n\n\t\tthis.downcastDispatcher.convert( modelRange, markers, viewWriter, options );\n\n\t\treturn viewDocumentFragment;\n\t}\n\n\t/**\n\t * Sets the initial input data parsed by the {@link #processor data processor} and\n\t * converted by the {@link #upcastDispatcher view-to-model converters}.\n\t * Initial data can be only set to a document whose {@link module:engine/model/document~Document#version} is equal 0.\n\t *\n\t * **Note** This method is {@link module:utils/observablemixin~Observable#decorate decorated} which is\n\t * used by e.g. collaborative editing plugin that syncs remote data on init.\n\t *\n\t * When data is passed as a string, it is initialized on the default `main` root:\n\t *\n\t * ```ts\n\t * dataController.init( '<p>Foo</p>' ); // Initializes data on the `main` root only, as no other is specified.\n\t * ```\n\t *\n\t * To initialize data on a different root or multiple roots at once, an object containing `rootName` - `data` pairs should be passed:\n\t *\n\t * ```ts\n\t * dataController.init( { main: '<p>Foo</p>', title: '<h1>Bar</h1>' } ); // Initializes data on both the `main` and `title` roots.\n\t * ```\n\t *\n\t * @fires init\n\t * @param data Input data as a string or an object containing the `rootName` - `data`\n\t * pairs to initialize data on multiple roots at once.\n\t * @returns Promise that is resolved after the data is set on the editor.\n\t */\n\tpublic init( data: string | Record<string, string> ): Promise<void> {\n\t\tif ( this.model.document.version ) {\n\t\t\t/**\n\t\t\t * Cannot set initial data to a non-empty {@link module:engine/model/document~Document}.\n\t\t\t * Initial data should be set once, during the {@link module:core/editor/editor~Editor} initialization,\n\t\t\t * when the {@link module:engine/model/document~Document#version} is equal 0.\n\t\t\t *\n\t\t\t * @error datacontroller-init-document-not-empty\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'datacontroller-init-document-not-empty', this );\n\t\t}\n\n\t\tlet initialData: Record<string, string> = {};\n\n\t\tif ( typeof data === 'string' ) {\n\t\t\tinitialData.main = data; // Default root is 'main'. To initiate data on a different root, object should be passed.\n\t\t} else {\n\t\t\tinitialData = data;\n\t\t}\n\n\t\tif ( !this._checkIfRootsExists( Object.keys( initialData ) ) ) {\n\t\t\t/**\n\t\t\t * Cannot init data on a non-existent root. This error is thrown when\n\t\t\t * {@link module:engine/controller/datacontroller~DataController#init DataController#init() method}\n\t\t\t * is called with non-existent root name. For example, if there is an editor instance with only `main` root,\n\t\t\t * calling {@link module:engine/controller/datacontroller~DataController#init} like:\n\t\t\t *\n\t\t\t * ```ts\n\t\t\t * data.init( { main: '<p>Foo</p>', root2: '<p>Bar</p>' } );\n\t\t\t * ```\n\t\t\t *\n\t\t\t * will throw this error.\n\t\t\t *\n\t\t\t * @error datacontroller-init-non-existent-root\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'datacontroller-init-non-existent-root', this );\n\t\t}\n\n\t\tthis.model.enqueueChange( { isUndoable: false }, writer => {\n\t\t\tfor ( const rootName of Object.keys( initialData ) ) {\n\t\t\t\tconst modelRoot = this.model.document.getRoot( rootName )!;\n\n\t\t\t\twriter.insert( this.parse( initialData[ rootName ], modelRoot ), modelRoot, 0 );\n\t\t\t}\n\t\t} );\n\n\t\treturn Promise.resolve();\n\t}\n\n\t/**\n\t * Sets the input data parsed by the {@link #processor data processor} and\n\t * converted by the {@link #upcastDispatcher view-to-model converters}.\n\t * This method can be used any time to replace existing editor data with the new one without clearing the\n\t * {@link module:engine/model/document~Document#history document history}.\n\t *\n\t * This method also creates a batch with all the changes applied. If all you need is to parse data, use\n\t * the {@link #parse} method.\n\t *\n\t * When data is passed as a string it is set on the default `main` root:\n\t *\n\t * ```ts\n\t * dataController.set( '<p>Foo</p>' ); // Sets data on the `main` root, as no other is specified.\n\t * ```\n\t *\n\t * To set data on a different root or multiple roots at once, an object containing `rootName` - `data` pairs should be passed:\n\t *\n\t * ```ts\n\t * dataController.set( { main: '<p>Foo</p>', title: '<h1>Bar</h1>' } ); // Sets data on the `main` and `title` roots as specified.\n\t * ```\n\t *\n\t * To set the data with a preserved undo stack and add the change to the undo stack, set `{ isUndoable: true }` as a `batchType` option.\n\t *\n\t * ```ts\n\t * dataController.set( '<p>Foo</p>', { batchType: { isUndoable: true } } );\n\t * ```\n\t *\n\t * @fires set\n\t * @param data Input data as a string or an object containing the `rootName` - `data`\n\t * pairs to set data on multiple roots at once.\n\t * @param options Options for setting data.\n\t * @param options.batchType The batch type that will be used to create a batch for the changes applied by this method.\n\t * By default, the batch will be set as {@link module:engine/model/batch~Batch#isUndoable not undoable} and the undo stack will be\n\t * cleared after the new data is applied (all undo steps will be removed). If the batch type `isUndoable` flag is be set to `true`,\n\t * the undo stack will be preserved instead and not cleared when new data is applied.\n\t */\n\tpublic set( data: string | Record<string, string>, options: { batchType?: BatchType } = {} ): void {\n\t\tlet newData: Record<string, string> = {};\n\n\t\tif ( typeof data === 'string' ) {\n\t\t\tnewData.main = data; // The default root is 'main'. To set data on a different root, an object should be passed.\n\t\t} else {\n\t\t\tnewData = data;\n\t\t}\n\n\t\tif ( !this._checkIfRootsExists( Object.keys( newData ) ) ) {\n\t\t\t/**\n\t\t\t * Cannot set data on a non-existent root. This error is thrown when the\n\t\t\t * {@link module:engine/controller/datacontroller~DataController#set DataController#set() method}\n\t\t\t * is called with non-existent root name. For example, if there is an editor instance with only the default `main` root,\n\t\t\t * calling {@link module:engine/controller/datacontroller~DataController#set} like:\n\t\t\t *\n\t\t\t * ```ts\n\t\t\t * data.set( { main: '<p>Foo</p>', root2: '<p>Bar</p>' } );\n\t\t\t * ```\n\t\t\t *\n\t\t\t * will throw this error.\n\t\t\t *\n\t\t\t * @error datacontroller-set-non-existent-root\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'datacontroller-set-non-existent-root', this );\n\t\t}\n\n\t\tthis.model.enqueueChange( options.batchType || {}, writer => {\n\t\t\twriter.setSelection( null );\n\t\t\twriter.removeSelectionAttribute( this.model.document.selection.getAttributeKeys() );\n\n\t\t\tfor ( const rootName of Object.keys( newData ) ) {\n\t\t\t\t// Save to model.\n\t\t\t\tconst modelRoot = this.model.document.getRoot( rootName )!;\n\n\t\t\t\twriter.remove( writer.createRangeIn( modelRoot ) );\n\t\t\t\twriter.insert( this.parse( newData[ rootName ], modelRoot ), modelRoot, 0 );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Returns the data parsed by the {@link #processor data processor} and then converted by upcast converters\n\t * attached to the {@link #upcastDispatcher}.\n\t *\n\t * @see #set\n\t * @param data Data to parse.\n\t * @param context Base context in which the view will be converted to the model.\n\t * See: {@link module:engine/conversion/upcastdispatcher~UpcastDispatcher#convert}.\n\t * @returns Parsed data.\n\t */\n\tpublic parse( data: string, context: SchemaContextDefinition = '$root' ): ModelDocumentFragment {\n\t\t// data -> view\n\t\tconst viewDocumentFragment = this.processor.toView( data );\n\n\t\t// view -> model\n\t\treturn this.toModel( viewDocumentFragment, context );\n\t}\n\n\t/**\n\t * Returns the result of the given {@link module:engine/view/element~Element view element} or\n\t * {@link module:engine/view/documentfragment~DocumentFragment view document fragment} converted by the\n\t * {@link #upcastDispatcher view-to-model converters}, wrapped by {@link module:engine/model/documentfragment~DocumentFragment}.\n\t *\n\t * When marker elements were converted during the conversion process, it will be set as a document fragment's\n\t * {@link module:engine/model/documentfragment~DocumentFragment#markers static markers map}.\n\t *\n\t * @fires toModel\n\t * @param viewElementOrFragment The element or document fragment whose content will be converted.\n\t * @param context Base context in which the view will be converted to the model.\n\t * See: {@link module:engine/conversion/upcastdispatcher~UpcastDispatcher#convert}.\n\t * @returns Output document fragment.\n\t */\n\tpublic toModel(\n\t\tviewElementOrFragment: ViewElement | ViewDocumentFragment,\n\t\tcontext: SchemaContextDefinition = '$root'\n\t): ModelDocumentFragment {\n\t\treturn this.model.change( writer => {\n\t\t\treturn this.upcastDispatcher.convert( viewElementOrFragment, writer, context );\n\t\t} );\n\t}\n\n\t/**\n\t * Adds the style processor normalization rules.\n\t *\n\t * You can implement your own rules as well as use one of the available processor rules:\n\t *\n\t * * background: {@link module:engine/view/styles/background~addBackgroundRules}\n\t * * border: {@link module:engine/view/styles/border~addBorderRules}\n\t * * margin: {@link module:engine/view/styles/margin~addMarginRules}\n\t * * padding: {@link module:engine/view/styles/padding~addPaddingRules}\n\t */\n\tpublic addStyleProcessorRules( callback: ( stylesProcessor: StylesProcessor ) => void ): void {\n\t\tcallback( this.stylesProcessor );\n\t}\n\n\t/**\n\t * Registers a {@link module:engine/view/matcher~MatcherPattern} on an {@link #htmlProcessor htmlProcessor}\n\t * and a {@link #processor processor} for view elements whose content should be treated as raw data\n\t * and not processed during the conversion from DOM to view elements.\n\t *\n\t * The raw data can be later accessed by the {@link module:engine/view/element~Element#getCustomProperty view element custom property}\n\t * `\"$rawContent\"`.\n\t *\n\t * @param pattern Pattern matching all view elements whose content should be treated as a raw data.\n\t */\n\tpublic registerRawContentMatcher( pattern: MatcherPattern ): void {\n\t\t// No need to register the pattern if both the `htmlProcessor` and `processor` are the same instances.\n\t\tif ( this.processor && this.processor !== this.htmlProcessor ) {\n\t\t\tthis.processor.registerRawContentMatcher( pattern );\n\t\t}\n\n\t\tthis.htmlProcessor.registerRawContentMatcher( pattern );\n\t}\n\n\t/**\n\t * Removes all event listeners set by the DataController.\n\t */\n\tpublic destroy(): void {\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * Checks whether all provided root names are actually existing editor roots.\n\t *\n\t * @param rootNames Root names to check.\n\t * @returns Whether all provided root names are existing editor roots.\n\t */\n\tprivate _checkIfRootsExists( rootNames: Array<string> ): boolean {\n\t\tfor ( const rootName of rootNames ) {\n\t\t\tif ( !this.model.document.getRoot( rootName ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n}\n\n/**\n * Event fired once the data initialization has finished.\n *\n * @eventName ~DataController#ready\n */\nexport type DataControllerReadyEvent = {\n\tname: 'ready';\n\targs: [];\n};\n\n/**\n * An event fired after the {@link ~DataController#init `init()` method} was run. It can be {@link ~DataController#listenTo listened to} in\n * order to adjust or modify the initialization flow. However, if the `init` event is stopped or prevented,\n * the {@link ~DataController#event:ready `ready` event} should be fired manually.\n *\n * The `init` event is fired by the decorated {@link ~DataController#init} method.\n * See {@link module:utils/observablemixin~Observable#decorate} for more information and samples.\n *\n * @eventName ~DataController#init\n */\nexport type DataControllerInitEvent = {\n\tname: 'init';\n\targs: [ Parameters<DataController[ 'init' ]> ];\n\treturn: ReturnType<DataController[ 'init' ]>;\n};\n\n/**\n * An event fired after {@link ~DataController#set set() method} has been run.\n *\n * The `set` event is fired by the decorated {@link ~DataController#set} method.\n * See {@link module:utils/observablemixin~Observable#decorate} for more information and samples.\n *\n * @eventName ~DataController#set\n */\nexport type DataControllerSetEvent = {\n\tname: 'set';\n\targs: [ Parameters<DataController[ 'set' ]> ];\n\treturn: ReturnType<DataController[ 'set' ]>;\n};\n\n/**\n * Event fired after the {@link ~DataController#get get() method} has been run.\n *\n * The `get` event is fired by the decorated {@link ~DataController#get} method.\n * See {@link module:utils/observablemixin~Observable#decorate} for more information and samples.\n *\n * @eventName ~DataController#get\n */\nexport type DataControllerGetEvent = {\n\tname: 'get';\n\targs: [ Parameters<DataController[ 'get' ]> ];\n\treturn: ReturnType<DataController[ 'get' ]>;\n};\n\n/**\n * Event fired after the {@link ~DataController#toView toView() method} has been run.\n *\n * The `toView` event is fired by the decorated {@link ~DataController#toView} method.\n * See {@link module:utils/observablemixin~Observable#decorate} for more information and samples.\n *\n * @eventName ~DataController#toView\n */\nexport type DataControllerToViewEvent = {\n\tname: 'toView';\n\targs: [ Parameters<DataController[ 'toView' ]> ];\n\treturn: ReturnType<DataController[ 'toView' ]>;\n};\n\n/**\n * Event fired after the {@link ~DataController#toModel toModel() method} has been run.\n *\n * The `toModel` event is fired by the decorated {@link ~DataController#toModel} method.\n * See {@link module:utils/observablemixin~Observable#decorate} for more information and samples.\n *\n * @eventName ~DataController#toModel\n */\nexport type DataControllerToModelEvent = {\n\tname: 'toModel';\n\targs: [ Parameters<DataController[ 'toModel' ]> ];\n\treturn: ReturnType<DataController[ 'toModel' ]>;\n};\n\n/**\n * Helper function for downcast conversion.\n *\n * Takes a document element (element that is added to a model document) and checks which markers are inside it. If the marker is collapsed\n * at element boundary, it is considered as contained inside the element and marker range is returned. Otherwise, if the marker is\n * intersecting with the element, the intersection is returned.\n */\nfunction _getMarkersRelativeToElement( element: ModelElement ): Map<string, ModelRange> {\n\tconst result: Array<[ string, ModelRange ]> = [];\n\tconst doc = element.root.document;\n\n\tif ( !doc ) {\n\t\treturn new Map();\n\t}\n\n\tconst elementRange = ModelRange._createIn( element );\n\n\tfor ( const marker of doc.model.markers ) {\n\t\tconst markerRange = marker.getRange();\n\n\t\tconst isMarkerCollapsed = markerRange.isCollapsed;\n\t\tconst isMarkerAtElementBoundary = markerRange.start.isEqual( elementRange.start ) || markerRange.end.isEqual( elementRange.end );\n\n\t\tif ( isMarkerCollapsed && isMarkerAtElementBoundary ) {\n\t\t\tresult.push( [ marker.name, markerRange ] );\n\t\t} else {\n\t\t\tconst updatedMarkerRange = elementRange.getIntersection( markerRange );\n\n\t\t\tif ( updatedMarkerRange ) {\n\t\t\t\tresult.push( [ marker.name, updatedMarkerRange ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Sort the markers in a stable fashion to ensure that the order in which they are\n\t// added to the model's marker collection does not affect how they are\n\t// downcast. One particular use case that we are targeting here, is one where\n\t// two markers are adjacent but not overlapping, such as an insertion/deletion\n\t// suggestion pair representing the replacement of a range of text. In this\n\t// case, putting the markers in DOM order causes the first marker's end to be\n\t// serialized right after the second marker's start, while putting the markers\n\t// in reverse DOM order causes it to be right before the second marker's\n\t// start. So, we sort these in a way that ensures non-intersecting ranges are in\n\t// reverse DOM order, and intersecting ranges are in something approximating\n\t// reverse DOM order (since reverse DOM order doesn't have a precise meaning\n\t// when working with intersecting ranges).\n\tresult.sort( ( [ n1, r1 ], [ n2, r2 ] ) => {\n\t\tif ( r1.end.compareWith( r2.start ) !== 'after' ) {\n\t\t\t// m1.end <= m2.start -- m1 is entirely <= m2\n\t\t\treturn 1;\n\t\t} else if ( r1.start.compareWith( r2.end ) !== 'before' ) {\n\t\t\t// m1.start >= m2.end -- m1 is entirely >= m2\n\t\t\treturn -1;\n\t\t} else {\n\t\t\t// they overlap, so use their start positions as the primary sort key and\n\t\t\t// end positions as the secondary sort key\n\t\t\tswitch ( r1.start.compareWith( r2.start ) ) {\n\t\t\t\tcase 'before':\n\t\t\t\t\treturn 1;\n\t\t\t\tcase 'after':\n\t\t\t\t\treturn -1;\n\t\t\t\tdefault:\n\t\t\t\t\tswitch ( r1.end.compareWith( r2.end ) ) {\n\t\t\t\t\t\tcase 'before':\n\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\tcase 'after':\n\t\t\t\t\t\t\treturn -1;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn n2.localeCompare( n1 );\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} );\n\n\treturn new Map( result );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport type Batch from '../batch';\nimport type Document from '../document';\nimport type { Selectable } from '../selection';\n\n/**\n * @module engine/model/operation/operation\n */\n\n/**\n * Abstract base operation class.\n */\nexport default abstract class Operation {\n\t/**\n\t * {@link module:engine/model/document~Document#version} on which operation can be applied. If you try to\n\t * {@link module:engine/model/model~Model#applyOperation apply} operation with different base version than the\n\t * {@link module:engine/model/document~Document#version document version} the\n\t * {@link module:utils/ckeditorerror~CKEditorError model-document-applyOperation-wrong-version} error is thrown.\n\t */\n\tpublic baseVersion: number | null;\n\n\t/**\n\t * Defines whether operation is executed on attached or detached {@link module:engine/model/item~Item items}.\n\t */\n\tpublic readonly isDocumentOperation: boolean;\n\n\t/**\n\t * {@link module:engine/model/batch~Batch Batch} to which the operation is added or `null` if the operation is not\n\t * added to any batch yet.\n\t */\n\tpublic batch: Batch | null;\n\n\t/**\n\t * Operation type.\n\t */\n\tpublic readonly abstract type: string;\n\n\t/**\n\t * Base operation constructor.\n\t *\n\t * @param baseVersion Document {@link module:engine/model/document~Document#version} on which operation\n\t * can be applied or `null` if the operation operates on detached (non-document) tree.\n\t */\n\tconstructor( baseVersion: number | null ) {\n\t\tthis.baseVersion = baseVersion;\n\t\tthis.isDocumentOperation = this.baseVersion !== null;\n\t\tthis.batch = null;\n\t}\n\n\t/**\n\t * A selectable that will be affected by the operation after it is executed.\n\t *\n\t * The exact returned parameter differs between operation types.\n\t */\n\tpublic abstract get affectedSelectable(): Selectable;\n\n\t/**\n\t * Creates and returns an operation that has the same parameters as this operation.\n\t *\n\t * @returns Clone of this operation.\n\t */\n\tpublic abstract clone(): Operation;\n\n\t/**\n\t * Creates and returns a reverse operation. Reverse operation when executed right after\n\t * the original operation will bring back tree model state to the point before the original\n\t * operation execution. In other words, it reverses changes done by the original operation.\n\t *\n\t * Keep in mind that tree model state may change since executing the original operation,\n\t * so reverse operation will be \"outdated\". In that case you will need to transform it by\n\t * all operations that were executed after the original operation.\n\t *\n\t * @returns Reversed operation.\n\t */\n\tpublic abstract getReversed(): Operation;\n\n\t/**\n\t * Executes the operation - modifications described by the operation properties will be applied to the model tree.\n\t *\n\t * @internal\n\t */\n\tpublic abstract _execute(): void;\n\n\t/**\n\t * Checks whether the operation's parameters are correct and the operation can be correctly executed. Throws\n\t * an error if operation is not valid.\n\t *\n\t * @internal\n\t */\n\tpublic _validate(): void {\n\t}\n\n\t/**\n\t * Custom toJSON method to solve child-parent circular dependencies.\n\t *\n\t * @returns Clone of this object with the operation property replaced with string.\n\t */\n\tpublic toJSON(): unknown {\n\t\t// This method creates only a shallow copy, all nested objects should be defined separately.\n\t\t// See https://github.com/ckeditor/ckeditor5-engine/issues/1477.\n\t\tconst json: any = Object.assign( {}, this );\n\n\t\tjson.__className = ( this.constructor as any ).className;\n\n\t\t// Remove reference to the parent `Batch` to avoid circular dependencies.\n\t\tdelete json.batch;\n\n\t\t// Only document operations are shared with other clients so it is not necessary to keep this information.\n\t\tdelete json.isDocumentOperation;\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * Name of the operation class used for serialization.\n\t */\n\tpublic static get className(): string {\n\t\treturn 'Operation';\n\t}\n\n\t/**\n\t * Creates `Operation` object from deserialized object, i.e. from parsed JSON string.\n\t *\n\t * @param json Deserialized JSON object.\n\t * @param doc Document on which this operation will be applied.\n\t */\n\tpublic static fromJSON( json: any, document: Document ): Operation {\n\t\treturn new ( this as any )( json.baseVersion );\n\t}\n\n\t// @if CK_DEBUG_ENGINE // log() {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( this.toString() );\n\t// @if CK_DEBUG_ENGINE // }\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/operation/utils\n */\n\nimport Node from '../node';\nimport Range from '../range';\nimport Text from '../text';\nimport TextProxy from '../textproxy';\n\nimport type DocumentFragment from '../documentfragment';\nimport type Element from '../element';\nimport type Item from '../item';\nimport type NodeList from '../nodelist';\nimport type Position from '../position';\n\nimport { CKEditorError, isIterable } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Inserts given nodes at given position.\n *\n * @internal\n * @param position Position at which nodes should be inserted.\n * @param normalizedNodes Nodes to insert.\n * @returns Range spanning over inserted elements.\n */\nexport function _insert( position: Position, nodes: NodeSet ): Range {\n\tconst normalizedNodes = _normalizeNodes( nodes );\n\n\t// We have to count offset before inserting nodes because they can get merged and we would get wrong offsets.\n\tconst offset = normalizedNodes.reduce( ( sum, node ) => sum + node.offsetSize, 0 );\n\tconst parent = position.parent;\n\n\t// Insertion might be in a text node, we should split it if that's the case.\n\t_splitNodeAtPosition( position );\n\tconst index = position.index;\n\n\t// Insert nodes at given index. After splitting we have a proper index and insertion is between nodes,\n\t// using basic `Element` API.\n\tparent._insertChild( index, normalizedNodes );\n\n\t// Merge text nodes, if possible. Merging is needed only at points where inserted nodes \"touch\" \"old\" nodes.\n\t_mergeNodesAtIndex( parent, index + normalizedNodes.length );\n\t_mergeNodesAtIndex( parent, index );\n\n\treturn new Range( position, position.getShiftedBy( offset ) );\n}\n\n/**\n * Removed nodes in given range. Only {@link module:engine/model/range~Range#isFlat flat} ranges are accepted.\n *\n * @internal\n * @param range Range containing nodes to remove.\n */\nexport function _remove( this: any, range: Range ): Array<Node> {\n\tif ( !range.isFlat ) {\n\t\t/**\n\t\t * Trying to remove a range which starts and ends in different element.\n\t\t *\n\t\t * @error operation-utils-remove-range-not-flat\n\t\t */\n\t\tthrow new CKEditorError(\n\t\t\t'operation-utils-remove-range-not-flat',\n\t\t\tthis\n\t\t);\n\t}\n\n\tconst parent = range.start.parent;\n\n\t// Range may be inside text nodes, we have to split them if that's the case.\n\t_splitNodeAtPosition( range.start );\n\t_splitNodeAtPosition( range.end );\n\n\t// Remove the text nodes using basic `Element` API.\n\tconst removed = parent._removeChildren( range.start.index, range.end.index - range.start.index );\n\n\t// Merge text nodes, if possible. After some nodes were removed, node before and after removed range will be\n\t// touching at the position equal to the removed range beginning. We check merging possibility there.\n\t_mergeNodesAtIndex( parent, range.start.index );\n\n\treturn removed;\n}\n\n/**\n * Moves nodes in given range to given target position. Only {@link module:engine/model/range~Range#isFlat flat} ranges are accepted.\n *\n * @internal\n * @param sourceRange Range containing nodes to move.\n * @param targetPosition Position to which nodes should be moved.\n * @returns Range containing moved nodes.\n */\nexport function _move( this: any, sourceRange: Range, targetPosition: Position ): Range {\n\tif ( !sourceRange.isFlat ) {\n\t\t/**\n\t\t * Trying to move a range which starts and ends in different element.\n\t\t *\n\t\t * @error operation-utils-move-range-not-flat\n\t\t */\n\t\tthrow new CKEditorError(\n\t\t\t'operation-utils-move-range-not-flat',\n\t\t\tthis\n\t\t);\n\t}\n\n\tconst nodes = _remove( sourceRange );\n\n\t// We have to fix `targetPosition` because model changed after nodes from `sourceRange` got removed and\n\t// that change might have an impact on `targetPosition`.\n\ttargetPosition = targetPosition._getTransformedByDeletion( sourceRange.start, sourceRange.end.offset - sourceRange.start.offset )!;\n\n\treturn _insert( targetPosition, nodes );\n}\n\n/**\n * Sets given attribute on nodes in given range. The attributes are only set on top-level nodes of the range, not on its children.\n *\n * @internal\n * @param range Range containing nodes that should have the attribute set. Must be a flat range.\n * @param key Key of attribute to set.\n * @param value Attribute value.\n */\nexport function _setAttribute( range: Range, key: string, value: unknown ): void {\n\t// Range might start or end in text nodes, so we have to split them.\n\t_splitNodeAtPosition( range.start );\n\t_splitNodeAtPosition( range.end );\n\n\t// Iterate over all items in the range.\n\tfor ( const item of range.getItems( { shallow: true } ) ) {\n\t\t// Iterator will return `TextProxy` instances but we know that those text proxies will\n\t\t// always represent full text nodes (this is guaranteed thanks to splitting we did before).\n\t\t// So, we can operate on those text proxies' text nodes.\n\t\tconst node = item.is( '$textProxy' ) ? item.textNode : item;\n\n\t\tif ( value !== null ) {\n\t\t\tnode._setAttribute( key, value );\n\t\t} else {\n\t\t\tnode._removeAttribute( key );\n\t\t}\n\n\t\t// After attributes changing it may happen that some text nodes can be merged. Try to merge with previous node.\n\t\t_mergeNodesAtIndex( node.parent!, node.index! );\n\t}\n\n\t// Try to merge last changed node with it's previous sibling (not covered by the loop above).\n\t_mergeNodesAtIndex( range.end.parent, range.end.index );\n}\n\n/**\n * Normalizes given object or an array of objects to an array of {@link module:engine/model/node~Node nodes}. See\n * {@link ~NodeSet NodeSet} for details on how normalization is performed.\n *\n * @internal\n * @param nodes Objects to normalize.\n * @returns Normalized nodes.\n */\nexport function _normalizeNodes( nodes: NodeSet ): Array<Node> {\n\tconst normalized: Array<Node> = [];\n\n\tfunction convert( nodes: NodeSet ) {\n\t\tif ( typeof nodes == 'string' ) {\n\t\t\tnormalized.push( new Text( nodes ) );\n\t\t} else if ( nodes instanceof TextProxy ) {\n\t\t\tnormalized.push( new Text( nodes.data, nodes.getAttributes() ) );\n\t\t} else if ( nodes instanceof Node ) {\n\t\t\tnormalized.push( nodes );\n\t\t} else if ( isIterable( nodes ) ) {\n\t\t\tfor ( const node of nodes ) {\n\t\t\t\tconvert( node );\n\t\t\t}\n\t\t}\n\t\t// Skip unrecognized type.\n\t}\n\n\tconvert( nodes );\n\n\t// Merge text nodes.\n\tfor ( let i = 1; i < normalized.length; i++ ) {\n\t\tconst node = normalized[ i ];\n\t\tconst prev = normalized[ i - 1 ];\n\n\t\tif ( node instanceof Text && prev instanceof Text && _haveSameAttributes( node, prev ) ) {\n\t\t\t// Doing this instead changing `prev.data` because `data` is readonly.\n\t\t\tnormalized.splice( i - 1, 2, new Text( prev.data + node.data, prev.getAttributes() ) );\n\t\t\ti--;\n\t\t}\n\t}\n\n\treturn normalized;\n}\n\n/**\n * Checks if nodes before and after given index in given element are {@link module:engine/model/text~Text text nodes} and\n * merges them into one node if they have same attributes.\n *\n * Merging is done by removing two text nodes and inserting a new text node containing data from both merged text nodes.\n *\n * @param element Parent element of nodes to merge.\n * @param index Index between nodes to merge.\n */\nfunction _mergeNodesAtIndex( element: Element | DocumentFragment, index: number ) {\n\tconst nodeBefore = element.getChild( index - 1 );\n\tconst nodeAfter = element.getChild( index );\n\n\t// Check if both of those nodes are text objects with same attributes.\n\tif ( nodeBefore && nodeAfter && nodeBefore.is( '$text' ) && nodeAfter.is( '$text' ) && _haveSameAttributes( nodeBefore, nodeAfter ) ) {\n\t\t// Append text of text node after index to the before one.\n\t\tconst mergedNode = new Text( nodeBefore.data + nodeAfter.data, nodeBefore.getAttributes() );\n\n\t\t// Remove separate text nodes.\n\t\telement._removeChildren( index - 1, 2 );\n\n\t\t// Insert merged text node.\n\t\telement._insertChild( index - 1, mergedNode );\n\t}\n}\n\n/**\n * Checks if given position is in a text node, and if so, splits the text node in two text nodes, each of them\n * containing a part of original text node.\n *\n * @param position Position at which node should be split.\n */\nfunction _splitNodeAtPosition( position: Position ): void {\n\tconst textNode = position.textNode;\n\tconst element = position.parent;\n\n\tif ( textNode ) {\n\t\tconst offsetDiff = position.offset - textNode.startOffset!;\n\t\tconst index = textNode.index!;\n\n\t\telement._removeChildren( index, 1 );\n\n\t\tconst firstPart = new Text( textNode.data.substr( 0, offsetDiff ), textNode.getAttributes() );\n\t\tconst secondPart = new Text( textNode.data.substr( offsetDiff ), textNode.getAttributes() );\n\n\t\telement._insertChild( index, [ firstPart, secondPart ] );\n\t}\n}\n\n/**\n * Checks whether two given nodes have same attributes.\n *\n * @param nodeA Node to check.\n * @param nodeB Node to check.\n * @returns `true` if nodes have same attributes, `false` otherwise.\n */\nfunction _haveSameAttributes( nodeA: Node, nodeB: Node ): boolean | undefined {\n\tconst iteratorA = nodeA.getAttributes();\n\tconst iteratorB = nodeB.getAttributes();\n\n\tfor ( const attr of iteratorA ) {\n\t\tif ( attr[ 1 ] !== nodeB.getAttribute( attr[ 0 ] ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\titeratorB.next();\n\t}\n\n\treturn iteratorB.next().done;\n}\n\n/**\n * Value that can be normalized to an array of {@link module:engine/model/node~Node nodes}.\n *\n * Non-arrays are normalized as follows:\n * * {@link module:engine/model/node~Node Node} is left as is,\n * * {@link module:engine/model/textproxy~TextProxy TextProxy} and `string` are normalized to {@link module:engine/model/text~Text Text},\n * * {@link module:engine/model/nodelist~NodeList NodeList} is normalized to an array containing all nodes that are in that node list,\n * * {@link module:engine/model/documentfragment~DocumentFragment DocumentFragment} is normalized to an array containing all of it's\n * * children.\n *\n * Arrays are processed item by item like non-array values and flattened to one array. Normalization always results in\n * a flat array of {@link module:engine/model/node~Node nodes}. Consecutive text nodes (or items normalized to text nodes) will be\n * merged if they have same attributes.\n */\nexport type NodeSet = Item | string | NodeList | DocumentFragment | Iterable<Item | string | NodeList | DocumentFragment>;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/operation/moveoperation\n */\n\nimport Operation from './operation';\nimport Position from '../position';\nimport Range from '../range';\nimport { _move } from './utils';\nimport type { Selectable } from '../selection';\n\nimport { CKEditorError, compareArrays } from '@ckeditor/ckeditor5-utils';\n\nimport type Document from '../document';\n\n// @if CK_DEBUG_ENGINE // const ModelRange = require( '../range' ).default;\n\n/**\n * Operation to move a range of {@link module:engine/model/item~Item model items}\n * to given {@link module:engine/model/position~Position target position}.\n */\nexport default class MoveOperation extends Operation {\n\t/**\n\t * Position before the first {@link module:engine/model/item~Item model item} to move.\n\t */\n\tpublic sourcePosition: Position;\n\n\t/**\n\t * Offset size of moved range.\n\t */\n\tpublic howMany: number;\n\n\t/**\n\t * Position at which moved nodes will be inserted.\n\t */\n\tpublic targetPosition: Position;\n\n\t/**\n\t * Creates a move operation.\n\t *\n\t * @param sourcePosition Position before the first {@link module:engine/model/item~Item model item} to move.\n\t * @param howMany Offset size of moved range. Moved range will start from `sourcePosition` and end at\n\t * `sourcePosition` with offset shifted by `howMany`.\n\t * @param targetPosition Position at which moved nodes will be inserted.\n\t * @param baseVersion Document {@link module:engine/model/document~Document#version} on which operation\n\t * can be applied or `null` if the operation operates on detached (non-document) tree.\n\t */\n\tconstructor( sourcePosition: Position, howMany: number, targetPosition: Position, baseVersion: number | null ) {\n\t\tsuper( baseVersion );\n\n\t\tthis.sourcePosition = sourcePosition.clone();\n\t\t// `'toNext'` because `sourcePosition` is a bit like a start of the moved range.\n\t\tthis.sourcePosition.stickiness = 'toNext';\n\n\t\tthis.howMany = howMany;\n\n\t\tthis.targetPosition = targetPosition.clone();\n\t\tthis.targetPosition.stickiness = 'toNone';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get type(): 'move' | 'remove' | 'reinsert' {\n\t\tif ( this.targetPosition.root.rootName == '$graveyard' ) {\n\t\t\treturn 'remove';\n\t\t} else if ( this.sourcePosition.root.rootName == '$graveyard' ) {\n\t\t\treturn 'reinsert';\n\t\t}\n\n\t\treturn 'move';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get affectedSelectable(): Selectable {\n\t\treturn [\n\t\t\tRange._createFromPositionAndShift( this.sourcePosition, this.howMany ),\n\t\t\tRange._createFromPositionAndShift( this.targetPosition, 0 )\n\t\t];\n\t}\n\n\t/**\n\t * Creates and returns an operation that has the same parameters as this operation.\n\t */\n\tpublic clone(): MoveOperation {\n\t\treturn new MoveOperation( this.sourcePosition, this.howMany, this.targetPosition, this.baseVersion );\n\t}\n\n\t/**\n\t * Returns the start position of the moved range after it got moved. This may be different than\n\t * {@link module:engine/model/operation/moveoperation~MoveOperation#targetPosition} in some cases, i.e. when a range is moved\n\t * inside the same parent but {@link module:engine/model/operation/moveoperation~MoveOperation#targetPosition targetPosition}\n\t * is after {@link module:engine/model/operation/moveoperation~MoveOperation#sourcePosition sourcePosition}.\n\t *\n\t * ```\n\t * vv vv\n\t * abcdefg ===> adefbcg\n\t * ^ ^\n\t * targetPos movedRangeStart\n\t * offset 6 offset 4\n\t *```\n\t */\n\tpublic getMovedRangeStart(): Position {\n\t\treturn this.targetPosition._getTransformedByDeletion( this.sourcePosition, this.howMany )!;\n\t}\n\n\t/**\n\t * See {@link module:engine/model/operation/operation~Operation#getReversed `Operation#getReversed()`}.\n\t */\n\tpublic getReversed(): Operation {\n\t\tconst newTargetPosition = this.sourcePosition._getTransformedByInsertion( this.targetPosition, this.howMany );\n\n\t\treturn new MoveOperation( this.getMovedRangeStart(), this.howMany, newTargetPosition, this.baseVersion! + 1 );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic override _validate(): void {\n\t\tconst sourceElement = this.sourcePosition.parent;\n\t\tconst targetElement = this.targetPosition.parent;\n\t\tconst sourceOffset = this.sourcePosition.offset;\n\t\tconst targetOffset = this.targetPosition.offset;\n\n\t\t// Validate whether move operation has correct parameters.\n\t\t// Validation is pretty complex but move operation is one of the core ways to manipulate the document state.\n\t\t// We expect that many errors might be connected with one of scenarios described below.\n\t\tif ( sourceOffset + this.howMany > sourceElement.maxOffset ) {\n\t\t\t/**\n\t\t\t * The nodes which should be moved do not exist.\n\t\t\t *\n\t\t\t * @error move-operation-nodes-do-not-exist\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'move-operation-nodes-do-not-exist', this\n\t\t\t);\n\t\t} else if ( sourceElement === targetElement && sourceOffset < targetOffset && targetOffset < sourceOffset + this.howMany ) {\n\t\t\t/**\n\t\t\t * Trying to move a range of nodes into the middle of that range.\n\t\t\t *\n\t\t\t * @error move-operation-range-into-itself\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'move-operation-range-into-itself', this\n\t\t\t);\n\t\t} else if ( this.sourcePosition.root == this.targetPosition.root ) {\n\t\t\tif ( compareArrays( this.sourcePosition.getParentPath(), this.targetPosition.getParentPath() ) == 'prefix' ) {\n\t\t\t\tconst i = this.sourcePosition.path.length - 1;\n\n\t\t\t\tif ( this.targetPosition.path[ i ] >= sourceOffset && this.targetPosition.path[ i ] < sourceOffset + this.howMany ) {\n\t\t\t\t\t/**\n\t\t\t\t\t * Trying to move a range of nodes into one of nodes from that range.\n\t\t\t\t\t *\n\t\t\t\t\t * @error move-operation-node-into-itself\n\t\t\t\t\t */\n\t\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t\t'move-operation-node-into-itself', this\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic _execute(): void {\n\t\t_move( Range._createFromPositionAndShift( this.sourcePosition, this.howMany ), this.targetPosition );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override toJSON(): unknown {\n\t\tconst json: any = super.toJSON();\n\n\t\tjson.sourcePosition = this.sourcePosition.toJSON();\n\t\tjson.targetPosition = this.targetPosition.toJSON();\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get className(): string {\n\t\treturn 'MoveOperation';\n\t}\n\n\t/**\n\t * Creates `MoveOperation` object from deserialized object, i.e. from parsed JSON string.\n\t *\n\t * @param json Deserialized JSON object.\n\t * @param document Document on which this operation will be applied.\n\t */\n\tpublic static override fromJSON( json: any, document: Document ): MoveOperation {\n\t\tconst sourcePosition = Position.fromJSON( json.sourcePosition, document );\n\t\tconst targetPosition = Position.fromJSON( json.targetPosition, document );\n\n\t\treturn new this( sourcePosition, json.howMany, targetPosition, json.baseVersion );\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \tconst range = ModelRange._createFromPositionAndShift( this.sourcePosition, this.howMany );\n\n\t// @if CK_DEBUG_ENGINE // \treturn `MoveOperation( ${ this.baseVersion } ): ${ range } -> ${ this.targetPosition }`;\n\t// @if CK_DEBUG_ENGINE // }\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/operation/insertoperation\n */\n\nimport Operation from './operation';\nimport Position from '../position';\nimport NodeList from '../nodelist';\nimport MoveOperation from './moveoperation';\nimport { _insert, _normalizeNodes, type NodeSet } from './utils';\nimport Text from '../text';\nimport Element from '../element';\nimport type { Selectable } from '../selection';\n\nimport type Document from '../document';\n\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Operation to insert one or more nodes at given position in the model.\n */\nexport default class InsertOperation extends Operation {\n\t/**\n\t * Position of insertion.\n\t *\n\t * @readonly\n\t */\n\tpublic position: Position;\n\n\t/**\n\t * List of nodes to insert.\n\t *\n\t * @readonly\n\t */\n\tpublic nodes: NodeList;\n\n\t/**\n\t * Flag deciding how the operation should be transformed. If set to `true`, nodes might get additional attributes\n\t * during operational transformation. This happens when the operation insertion position is inside of a range\n\t * where attributes have changed.\n\t */\n\tpublic shouldReceiveAttributes: boolean;\n\n\t/**\n\t * Creates an insert operation.\n\t *\n\t * @param position Position of insertion.\n\t * @param nodes The list of nodes to be inserted.\n\t * @param baseVersion Document {@link module:engine/model/document~Document#version} on which operation\n\t * can be applied or `null` if the operation operates on detached (non-document) tree.\n\t */\n\tconstructor( position: Position, nodes: NodeSet, baseVersion: number | null ) {\n\t\tsuper( baseVersion );\n\n\t\tthis.position = position.clone();\n\t\tthis.position.stickiness = 'toNone';\n\t\tthis.nodes = new NodeList( _normalizeNodes( nodes ) );\n\t\tthis.shouldReceiveAttributes = false;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get type(): 'insert' {\n\t\treturn 'insert';\n\t}\n\n\t/**\n\t * Total offset size of inserted nodes.\n\t */\n\tpublic get howMany(): number {\n\t\treturn this.nodes.maxOffset;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get affectedSelectable(): Selectable {\n\t\treturn this.position.clone();\n\t}\n\n\t/**\n\t * Creates and returns an operation that has the same parameters as this operation.\n\t */\n\tpublic clone(): InsertOperation {\n\t\tconst nodes = new NodeList( [ ...this.nodes ].map( node => node._clone( true ) ) );\n\t\tconst insert = new InsertOperation( this.position, nodes, this.baseVersion );\n\n\t\tinsert.shouldReceiveAttributes = this.shouldReceiveAttributes;\n\n\t\treturn insert;\n\t}\n\n\t/**\n\t * See {@link module:engine/model/operation/operation~Operation#getReversed `Operation#getReversed()`}.\n\t */\n\tpublic getReversed(): Operation {\n\t\tconst graveyard = this.position.root.document!.graveyard;\n\t\tconst gyPosition = new Position( graveyard, [ 0 ] );\n\n\t\treturn new MoveOperation( this.position, this.nodes.maxOffset, gyPosition, this.baseVersion! + 1 );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic override _validate(): void {\n\t\tconst targetElement = this.position.parent;\n\n\t\tif ( !targetElement || targetElement.maxOffset < this.position.offset ) {\n\t\t\t/**\n\t\t\t * Insertion position is invalid.\n\t\t\t *\n\t\t\t * @error insert-operation-position-invalid\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'insert-operation-position-invalid',\n\t\t\t\tthis\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic _execute(): void {\n\t\t// What happens here is that we want original nodes be passed to writer because we want original nodes\n\t\t// to be inserted to the model. But in InsertOperation, we want to keep those nodes as they were added\n\t\t// to the operation, not modified. For example, text nodes can get merged or cropped while Elements can\n\t\t// get children. It is important that InsertOperation has the copy of original nodes in intact state.\n\t\tconst originalNodes = this.nodes;\n\t\tthis.nodes = new NodeList( [ ...originalNodes ].map( node => node._clone( true ) ) );\n\n\t\t_insert( this.position, originalNodes );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override toJSON(): unknown {\n\t\tconst json: any = super.toJSON();\n\n\t\tjson.position = this.position.toJSON();\n\t\tjson.nodes = this.nodes.toJSON();\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get className(): string {\n\t\treturn 'InsertOperation';\n\t}\n\n\t/**\n\t * Creates `InsertOperation` object from deserialized object, i.e. from parsed JSON string.\n\t *\n\t * @param json Deserialized JSON object.\n\t * @param document Document on which this operation will be applied.\n\t */\n\tpublic static override fromJSON( json: any, document: Document ): InsertOperation {\n\t\tconst children = [];\n\n\t\tfor ( const child of json.nodes ) {\n\t\t\tif ( child.name ) {\n\t\t\t\t// If child has name property, it is an Element.\n\t\t\t\tchildren.push( Element.fromJSON( child ) );\n\t\t\t} else {\n\t\t\t\t// Otherwise, it is a Text node.\n\t\t\t\tchildren.push( Text.fromJSON( child ) );\n\t\t\t}\n\t\t}\n\n\t\tconst insert = new InsertOperation( Position.fromJSON( json.position, document ), children, json.baseVersion );\n\t\tinsert.shouldReceiveAttributes = json.shouldReceiveAttributes;\n\n\t\treturn insert;\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \tconst nodeString = this.nodes.length > 1 ? `[ ${ this.nodes.length } ]` : this.nodes.getNode( 0 );\n\n\t// @if CK_DEBUG_ENGINE // \treturn `InsertOperation( ${ this.baseVersion } ): ${ nodeString } -> ${ this.position }`;\n\t// @if CK_DEBUG_ENGINE // }\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/operation/splitoperation\n */\n\nimport Operation from './operation';\nimport MergeOperation from './mergeoperation';\nimport Position from '../position';\nimport Range from '../range';\nimport { _insert, _move } from './utils';\n\nimport type Document from '../document';\n\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\nimport type { Selectable } from '../selection';\n\n/**\n * Operation to split {@link module:engine/model/element~Element an element} at given\n * {@link module:engine/model/operation/splitoperation~SplitOperation#splitPosition split position} into two elements,\n * both containing a part of the element's original content.\n */\nexport default class SplitOperation extends Operation {\n\t/**\n\t * Position at which an element should be split.\n\t */\n\tpublic splitPosition: Position;\n\n\t/**\n\t * Total offset size of elements that are in the split element after `position`.\n\t */\n\tpublic howMany: number;\n\n\t/**\n\t * Position at which the clone of split element (or element from graveyard) will be inserted.\n\t */\n\tpublic insertionPosition: Position;\n\n\t/**\n\t * Position in the graveyard root before the element which should be used as a parent of the nodes after `position`.\n\t * If it is not set, a copy of the the `position` parent will be used.\n\t *\n\t * The default behavior is to clone the split element. Element from graveyard is used during undo.\n\t */\n\tpublic graveyardPosition: Position | null;\n\n\t/**\n\t * Creates a split operation.\n\t *\n\t * @param splitPosition Position at which an element should be split.\n\t * @param howMany Total offset size of elements that are in the split element after `position`.\n\t * @param insertionPosition Position at which the clone of split element (or element from graveyard) will be inserted.\n\t * @param graveyardPosition Position in the graveyard root before the element which\n\t * should be used as a parent of the nodes after `position`. If it is not set, a copy of the the `position` parent will be used.\n\t * @param baseVersion Document {@link module:engine/model/document~Document#version} on which operation\n\t * can be applied or `null` if the operation operates on detached (non-document) tree.\n\t */\n\tconstructor(\n\t\tsplitPosition: Position,\n\t\thowMany: number,\n\t\tinsertionPosition: Position,\n\t\tgraveyardPosition: Position | null,\n\t\tbaseVersion: number | null\n\t) {\n\t\tsuper( baseVersion );\n\n\t\tthis.splitPosition = splitPosition.clone();\n\t\t// Keep position sticking to the next node. This way any new content added at the place where the element is split\n\t\t// will be left in the original element.\n\t\tthis.splitPosition.stickiness = 'toNext';\n\n\t\tthis.howMany = howMany;\n\t\tthis.insertionPosition = insertionPosition;\n\t\tthis.graveyardPosition = graveyardPosition ? graveyardPosition.clone() : null;\n\n\t\tif ( this.graveyardPosition ) {\n\t\t\tthis.graveyardPosition.stickiness = 'toNext';\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get type(): 'split' {\n\t\treturn 'split';\n\t}\n\n\t/**\n\t * Position inside the new clone of a split element.\n\t *\n\t * This is a position where nodes that are after the split position will be moved to.\n\t */\n\tpublic get moveTargetPosition(): Position {\n\t\tconst path = this.insertionPosition.path.slice();\n\t\tpath.push( 0 );\n\n\t\treturn new Position( this.insertionPosition.root, path );\n\t}\n\n\t/**\n\t * Artificial range that contains all the nodes from the split element that will be moved to the new element.\n\t * The range starts at {@link #splitPosition} and ends in the same parent, at `POSITIVE_INFINITY` offset.\n\t */\n\tpublic get movedRange(): Range {\n\t\tconst end = this.splitPosition.getShiftedBy( Number.POSITIVE_INFINITY );\n\n\t\treturn new Range( this.splitPosition, end );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get affectedSelectable(): Selectable {\n\t\t// These could be positions but `Selectable` type only supports `Iterable<Range>`.\n\t\tconst ranges = [\n\t\t\tRange._createFromPositionAndShift( this.splitPosition, 0 ),\n\t\t\tRange._createFromPositionAndShift( this.insertionPosition, 0 )\n\t\t];\n\n\t\tif ( this.graveyardPosition ) {\n\t\t\tranges.push( Range._createFromPositionAndShift( this.graveyardPosition, 0 ) );\n\t\t}\n\n\t\treturn ranges;\n\t}\n\n\t/**\n\t * Creates and returns an operation that has the same parameters as this operation.\n\t *\n\t * @returns Clone of this operation.\n\t */\n\tpublic clone(): SplitOperation {\n\t\treturn new SplitOperation( this.splitPosition, this.howMany, this.insertionPosition, this.graveyardPosition, this.baseVersion );\n\t}\n\n\t/**\n\t * See {@link module:engine/model/operation/operation~Operation#getReversed `Operation#getReversed()`}.\n\t */\n\tpublic getReversed(): Operation {\n\t\tconst graveyard = this.splitPosition.root.document!.graveyard;\n\t\tconst graveyardPosition = new Position( graveyard, [ 0 ] );\n\n\t\treturn new MergeOperation( this.moveTargetPosition, this.howMany, this.splitPosition, graveyardPosition, this.baseVersion! + 1 );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic override _validate(): void {\n\t\tconst element = this.splitPosition.parent;\n\t\tconst offset = this.splitPosition.offset;\n\n\t\t// Validate whether split operation has correct parameters.\n\t\tif ( !element || element.maxOffset < offset ) {\n\t\t\t/**\n\t\t\t * Split position is invalid.\n\t\t\t *\n\t\t\t * @error split-operation-position-invalid\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'split-operation-position-invalid', this );\n\t\t} else if ( !element.parent ) {\n\t\t\t/**\n\t\t\t * Cannot split root element.\n\t\t\t *\n\t\t\t * @error split-operation-split-in-root\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'split-operation-split-in-root', this );\n\t\t} else if ( this.howMany != element.maxOffset - this.splitPosition.offset ) {\n\t\t\t/**\n\t\t\t * Split operation specifies wrong number of nodes to move.\n\t\t\t *\n\t\t\t * @error split-operation-how-many-invalid\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'split-operation-how-many-invalid', this );\n\t\t} else if ( this.graveyardPosition && !this.graveyardPosition.nodeAfter ) {\n\t\t\t/**\n\t\t\t * Graveyard position invalid.\n\t\t\t *\n\t\t\t * @error split-operation-graveyard-position-invalid\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'split-operation-graveyard-position-invalid', this );\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic _execute(): void {\n\t\tconst splitElement = this.splitPosition.parent;\n\n\t\tif ( this.graveyardPosition ) {\n\t\t\t_move( Range._createFromPositionAndShift( this.graveyardPosition, 1 ), this.insertionPosition );\n\t\t} else {\n\t\t\tconst newElement = ( splitElement as any )._clone();\n\n\t\t\t_insert( this.insertionPosition, newElement );\n\t\t}\n\n\t\tconst sourceRange = new Range(\n\t\t\tPosition._createAt( splitElement, this.splitPosition.offset ),\n\t\t\tPosition._createAt( splitElement, splitElement.maxOffset )\n\t\t);\n\n\t\t_move( sourceRange, this.moveTargetPosition );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override toJSON(): unknown {\n\t\tconst json: any = super.toJSON();\n\n\t\tjson.splitPosition = this.splitPosition.toJSON();\n\t\tjson.insertionPosition = this.insertionPosition.toJSON();\n\n\t\tif ( this.graveyardPosition ) {\n\t\t\tjson.graveyardPosition = this.graveyardPosition.toJSON();\n\t\t}\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get className(): string {\n\t\treturn 'SplitOperation';\n\t}\n\n\t/**\n\t * Helper function that returns a default insertion position basing on given `splitPosition`. The default insertion\n\t * position is after the split element.\n\t */\n\tpublic static getInsertionPosition( splitPosition: Position ): Position {\n\t\tconst path = splitPosition.path.slice( 0, -1 );\n\t\tpath[ path.length - 1 ]++;\n\n\t\treturn new Position( splitPosition.root, path, 'toPrevious' );\n\t}\n\n\t/**\n\t * Creates `SplitOperation` object from deserialized object, i.e. from parsed JSON string.\n\t *\n\t * @param json Deserialized JSON object.\n\t * @param document Document on which this operation will be applied.\n\t */\n\tpublic static override fromJSON( json: any, document: Document ): SplitOperation {\n\t\tconst splitPosition = Position.fromJSON( json.splitPosition, document );\n\t\tconst insertionPosition = Position.fromJSON( json.insertionPosition, document );\n\t\tconst graveyardPosition = json.graveyardPosition ? Position.fromJSON( json.graveyardPosition, document ) : null;\n\n\t\treturn new this( splitPosition, json.howMany, insertionPosition, graveyardPosition, json.baseVersion );\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \treturn `SplitOperation( ${ this.baseVersion } ): ${ this.splitPosition } ` +\n\t// @if CK_DEBUG_ENGINE // \t`( ${ this.howMany } ) -> ${ this.insertionPosition }` +\n\t// @if CK_DEBUG_ENGINE // \t`${ this.graveyardPosition ? ' with ' + this.graveyardPosition : '' }`;\n\t// @if CK_DEBUG_ENGINE // }\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/operation/mergeoperation\n */\n\nimport Operation from './operation';\nimport SplitOperation from './splitoperation';\nimport Position from '../position';\nimport Range from '../range';\nimport { _move } from './utils';\n\nimport type Document from '../document';\nimport type Element from '../element';\nimport type { Selectable } from '../selection';\n\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Operation to merge two {@link module:engine/model/element~Element elements}.\n *\n * The merged element is the parent of {@link ~MergeOperation#sourcePosition} and it is merged into the parent of\n * {@link ~MergeOperation#targetPosition}. All nodes from the merged element are moved to {@link ~MergeOperation#targetPosition}.\n *\n * The merged element is moved to the graveyard at {@link ~MergeOperation#graveyardPosition}.\n */\nexport default class MergeOperation extends Operation {\n\t/**\n\t * Position inside the merged element. All nodes from that element after that position will be moved to {@link #targetPosition}.\n\t */\n\tpublic sourcePosition: Position;\n\n\t/**\n\t * Summary offset size of nodes which will be moved from the merged element to the new parent.\n\t */\n\tpublic howMany: number;\n\n\t/**\n\t * Position which the nodes from the merged elements will be moved to.\n\t */\n\tpublic targetPosition: Position;\n\n\t/**\n\t * Position in graveyard to which the merged element will be moved.\n\t */\n\tpublic graveyardPosition: Position;\n\n\t/**\n\t * Creates a merge operation.\n\t *\n\t * @param sourcePosition Position inside the merged element. All nodes from that\n\t * element after that position will be moved to {@link #targetPosition}.\n\t * @param howMany Summary offset size of nodes which will be moved from the merged element to the new parent.\n\t * @param targetPosition Position which the nodes from the merged elements will be moved to.\n\t * @param graveyardPosition Position in graveyard to which the merged element will be moved.\n\t * @param baseVersion Document {@link module:engine/model/document~Document#version} on which operation\n\t * can be applied or `null` if the operation operates on detached (non-document) tree.\n\t */\n\tconstructor(\n\t\tsourcePosition: Position,\n\t\thowMany: number,\n\t\ttargetPosition: Position,\n\t\tgraveyardPosition: Position,\n\t\tbaseVersion: number | null\n\t) {\n\t\tsuper( baseVersion );\n\n\t\tthis.sourcePosition = sourcePosition.clone();\n\t\t// This is, and should always remain, the first position in its parent.\n\t\tthis.sourcePosition.stickiness = 'toPrevious';\n\n\t\tthis.howMany = howMany;\n\t\tthis.targetPosition = targetPosition.clone();\n\n\t\t// Except of a rare scenario in `MergeOperation` x `MergeOperation` transformation,\n\t\t// this is, and should always remain, the last position in its parent.\n\t\tthis.targetPosition.stickiness = 'toNext';\n\t\tthis.graveyardPosition = graveyardPosition.clone();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get type(): 'merge' {\n\t\treturn 'merge';\n\t}\n\n\t/**\n\t * Position before the merged element (which will be deleted).\n\t */\n\tpublic get deletionPosition(): Position {\n\t\treturn new Position( this.sourcePosition.root, this.sourcePosition.path.slice( 0, -1 ) );\n\t}\n\n\t/**\n\t * Artificial range that contains all the nodes from the merged element that will be moved to {@link ~MergeOperation#sourcePosition}.\n\t * The range starts at {@link ~MergeOperation#sourcePosition} and ends in the same parent, at `POSITIVE_INFINITY` offset.\n\t */\n\tpublic get movedRange(): Range {\n\t\tconst end = this.sourcePosition.getShiftedBy( Number.POSITIVE_INFINITY );\n\n\t\treturn new Range( this.sourcePosition, end );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get affectedSelectable(): Selectable {\n\t\tconst mergedElement = this.sourcePosition.parent as Element;\n\n\t\treturn [\n\t\t\tRange._createOn( mergedElement ),\n\n\t\t\t// These could be positions but `Selectable` type only supports `Iterable<Range>`.\n\t\t\tRange._createFromPositionAndShift( this.targetPosition, 0 ),\n\t\t\tRange._createFromPositionAndShift( this.graveyardPosition, 0 )\n\t\t];\n\t}\n\n\t/**\n\t * Creates and returns an operation that has the same parameters as this operation.\n\t */\n\tpublic clone(): MergeOperation {\n\t\treturn new MergeOperation( this.sourcePosition, this.howMany, this.targetPosition, this.graveyardPosition, this.baseVersion );\n\t}\n\n\t/**\n\t * See {@link module:engine/model/operation/operation~Operation#getReversed `Operation#getReversed()`}.\n\t */\n\tpublic getReversed(): Operation {\n\t\t// Positions in this method are transformed by this merge operation because the split operation bases on\n\t\t// the context after this merge operation happened (because split operation reverses it).\n\t\t// So we need to acknowledge that the merge operation happened and those positions changed a little.\n\t\tconst targetPosition = this.targetPosition._getTransformedByMergeOperation( this );\n\n\t\tconst path = this.sourcePosition.path.slice( 0, -1 );\n\t\tconst insertionPosition = new Position( this.sourcePosition.root, path )._getTransformedByMergeOperation( this );\n\n\t\treturn new SplitOperation( targetPosition, this.howMany, insertionPosition, this.graveyardPosition, this.baseVersion! + 1 );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic override _validate(): void {\n\t\tconst sourceElement = this.sourcePosition.parent;\n\t\tconst targetElement = this.targetPosition.parent;\n\n\t\t// Validate whether merge operation has correct parameters.\n\t\tif ( !sourceElement.parent ) {\n\t\t\t/**\n\t\t\t * Merge source position is invalid. The element to be merged must have a parent node.\n\t\t\t *\n\t\t\t * @error merge-operation-source-position-invalid\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'merge-operation-source-position-invalid', this );\n\t\t} else if ( !targetElement.parent ) {\n\t\t\t/**\n\t\t\t * Merge target position is invalid. The element to be merged must have a parent node.\n\t\t\t *\n\t\t\t * @error merge-operation-target-position-invalid\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'merge-operation-target-position-invalid', this );\n\t\t} else if ( this.howMany != sourceElement.maxOffset ) {\n\t\t\t/**\n\t\t\t * Merge operation specifies wrong number of nodes to move.\n\t\t\t *\n\t\t\t * @error merge-operation-how-many-invalid\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'merge-operation-how-many-invalid', this );\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic _execute(): void {\n\t\tconst mergedElement = this.sourcePosition.parent as Element;\n\t\tconst sourceRange = Range._createIn( mergedElement );\n\n\t\t_move( sourceRange, this.targetPosition );\n\t\t_move( Range._createOn( mergedElement ), this.graveyardPosition );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override toJSON(): unknown {\n\t\tconst json: any = super.toJSON();\n\n\t\tjson.sourcePosition = json.sourcePosition.toJSON();\n\t\tjson.targetPosition = json.targetPosition.toJSON();\n\t\tjson.graveyardPosition = json.graveyardPosition.toJSON();\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get className(): string {\n\t\treturn 'MergeOperation';\n\t}\n\n\t/**\n\t * Creates `MergeOperation` object from deserialized object, i.e. from parsed JSON string.\n\t *\n\t * @param json Deserialized JSON object.\n\t * @param document Document on which this operation will be applied.\n\t */\n\tpublic static override fromJSON( json: any, document: Document ): MergeOperation {\n\t\tconst sourcePosition = Position.fromJSON( json.sourcePosition, document );\n\t\tconst targetPosition = Position.fromJSON( json.targetPosition, document );\n\t\tconst graveyardPosition = Position.fromJSON( json.graveyardPosition, document );\n\n\t\treturn new this( sourcePosition, json.howMany, targetPosition, graveyardPosition, json.baseVersion );\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \treturn `MergeOperation( ${ this.baseVersion } ): ` +\n\t// @if CK_DEBUG_ENGINE // \t\t`${ this.sourcePosition } -> ${ this.targetPosition }` +\n\t// @if CK_DEBUG_ENGINE // \t\t` ( ${ this.howMany } ), ${ this.graveyardPosition }`;\n\t// @if CK_DEBUG_ENGINE // }\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/operation/markeroperation\n */\n\nimport Operation from './operation';\nimport Range from '../range';\n\nimport type Document from '../document';\nimport type MarkerCollection from '../markercollection';\nimport type { Selectable } from '../selection';\n\nexport default class MarkerOperation extends Operation {\n\t/**\n\t * Marker name.\n\t *\n\t * @readonly\n\t */\n\tpublic name: string;\n\n\t/**\n\t * Marker range before the change.\n\t *\n\t * @readonly\n\t */\n\tpublic oldRange: Range | null;\n\n\t/**\n\t * Marker range after the change.\n\t *\n\t * @readonly\n\t */\n\tpublic newRange: Range | null;\n\n\t/**\n\t * Specifies whether the marker operation affects the data produced by the data pipeline\n\t * (is persisted in the editor's data).\n\t *\n\t * @readonly\n\t */\n\tpublic affectsData: boolean;\n\n\t/**\n\t * Marker collection on which change should be executed.\n\t */\n\tprivate readonly _markers: MarkerCollection;\n\n\t/**\n\t * @param name Marker name.\n\t * @param oldRange Marker range before the change.\n\t * @param newRange Marker range after the change.\n\t * @param markers Marker collection on which change should be executed.\n\t * @param affectsData Specifies whether the marker operation affects the data produced by the data pipeline\n\t * (is persisted in the editor's data).\n\t * @param baseVersion Document {@link module:engine/model/document~Document#version} on which operation\n\t * can be applied or `null` if the operation operates on detached (non-document) tree.\n\t */\n\tconstructor(\n\t\tname: string,\n\t\toldRange: Range | null,\n\t\tnewRange: Range | null,\n\t\tmarkers: MarkerCollection,\n\t\taffectsData: boolean,\n\t\tbaseVersion: number | null\n\t) {\n\t\tsuper( baseVersion );\n\n\t\tthis.name = name;\n\t\tthis.oldRange = oldRange ? oldRange.clone() : null;\n\t\tthis.newRange = newRange ? newRange.clone() : null;\n\t\tthis.affectsData = affectsData;\n\n\t\tthis._markers = markers;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get type(): 'marker' {\n\t\treturn 'marker';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get affectedSelectable(): Selectable {\n\t\tconst ranges = [];\n\n\t\tif ( this.oldRange ) {\n\t\t\tranges.push( this.oldRange.clone() );\n\t\t}\n\n\t\tif ( this.newRange ) {\n\t\t\tif ( this.oldRange ) {\n\t\t\t\tranges.push( ...this.newRange.getDifference( this.oldRange ) );\n\t\t\t} else {\n\t\t\t\tranges.push( this.newRange.clone() );\n\t\t\t}\n\t\t}\n\n\t\treturn ranges;\n\t}\n\n\t/**\n\t * Creates and returns an operation that has the same parameters as this operation.\n\t */\n\tpublic clone(): MarkerOperation {\n\t\treturn new MarkerOperation( this.name, this.oldRange, this.newRange, this._markers, this.affectsData, this.baseVersion );\n\t}\n\n\t/**\n\t * See {@link module:engine/model/operation/operation~Operation#getReversed `Operation#getReversed()`}.\n\t */\n\tpublic getReversed(): Operation {\n\t\treturn new MarkerOperation( this.name, this.newRange, this.oldRange, this._markers, this.affectsData, this.baseVersion! + 1 );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic _execute(): void {\n\t\tif ( this.newRange ) {\n\t\t\tthis._markers._set( this.name, this.newRange, true, this.affectsData );\n\t\t} else {\n\t\t\tthis._markers._remove( this.name );\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic override toJSON(): unknown {\n\t\tconst json: any = super.toJSON();\n\n\t\tif ( this.oldRange ) {\n\t\t\tjson.oldRange = this.oldRange.toJSON();\n\t\t}\n\n\t\tif ( this.newRange ) {\n\t\t\tjson.newRange = this.newRange.toJSON();\n\t\t}\n\n\t\tdelete json._markers;\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get className(): string {\n\t\treturn 'MarkerOperation';\n\t}\n\n\t/**\n\t * Creates `MarkerOperation` object from deserialized object, i.e. from parsed JSON string.\n\t *\n\t * @param json Deserialized JSON object.\n\t * @param document Document on which this operation will be applied.\n\t */\n\tpublic static override fromJSON( json: any, document: Document ): MarkerOperation {\n\t\treturn new MarkerOperation(\n\t\t\tjson.name,\n\t\t\tjson.oldRange ? Range.fromJSON( json.oldRange, document ) : null,\n\t\t\tjson.newRange ? Range.fromJSON( json.newRange, document ) : null,\n\t\t\tdocument.model.markers,\n\t\t\tjson.affectsData,\n\t\t\tjson.baseVersion\n\t\t);\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \treturn `MarkerOperation( ${ this.baseVersion } ): ` +\n\t// @if CK_DEBUG_ENGINE //\t\t`\"${ this.name }\": ${ this.oldRange } -> ${ this.newRange }`;\n\t// @if CK_DEBUG_ENGINE // }\n}\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/operation/attributeoperation\n */\n\nimport Operation from './operation';\nimport { _setAttribute } from './utils';\nimport Range from '../range';\n\nimport type Document from '../document';\n\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\nimport { isEqual } from 'lodash-es';\nimport type { Selectable } from '../selection';\n\n/**\n * Operation to change nodes' attribute.\n *\n * Using this class you can add, remove or change value of the attribute.\n */\nexport default class AttributeOperation extends Operation {\n\t/**\n\t * Range on which operation should be applied.\n\t *\n\t * @readonly\n\t */\n\tpublic range: Range;\n\n\t/**\n\t * Key of an attribute to change or remove.\n\t *\n\t * @readonly\n\t */\n\tpublic key: string;\n\n\t/**\n\t * Old value of the attribute with given key or `null`, if attribute was not set before.\n\t *\n\t * @readonly\n\t */\n\tpublic oldValue: unknown;\n\n\t/**\n\t * New value of the attribute with given key or `null`, if operation should remove attribute.\n\t *\n\t * @readonly\n\t */\n\tpublic newValue: unknown;\n\n\t/**\n\t * Creates an operation that changes, removes or adds attributes.\n\t *\n\t * If only `newValue` is set, attribute will be added on a node. Note that all nodes in operation's range must not\n\t * have an attribute with the same key as the added attribute.\n\t *\n\t * If only `oldValue` is set, then attribute with given key will be removed. Note that all nodes in operation's range\n\t * must have an attribute with that key added.\n\t *\n\t * If both `newValue` and `oldValue` are set, then the operation will change the attribute value. Note that all nodes in\n\t * operation's ranges must already have an attribute with given key and `oldValue` as value\n\t *\n\t * @param range Range on which the operation should be applied. Must be a flat range.\n\t * @param key Key of an attribute to change or remove.\n\t * @param oldValue Old value of the attribute with given key or `null`, if attribute was not set before.\n\t * @param newValue New value of the attribute with given key or `null`, if operation should remove attribute.\n\t * @param baseVersion Document {@link module:engine/model/document~Document#version} on which operation\n\t * can be applied or `null` if the operation operates on detached (non-document) tree.\n\t */\n\tconstructor( range: Range, key: string, oldValue: unknown, newValue: unknown, baseVersion: number | null ) {\n\t\tsuper( baseVersion );\n\n\t\tthis.range = range.clone();\n\t\tthis.key = key;\n\t\tthis.oldValue = oldValue === undefined ? null : oldValue;\n\t\tthis.newValue = newValue === undefined ? null : newValue;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get type(): 'addAttribute' | 'removeAttribute' | 'changeAttribute' {\n\t\tif ( this.oldValue === null ) {\n\t\t\treturn 'addAttribute';\n\t\t} else if ( this.newValue === null ) {\n\t\t\treturn 'removeAttribute';\n\t\t} else {\n\t\t\treturn 'changeAttribute';\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get affectedSelectable(): Selectable {\n\t\treturn this.range.clone();\n\t}\n\n\t/**\n\t * Creates and returns an operation that has the same parameters as this operation.\n\t */\n\tpublic clone(): AttributeOperation {\n\t\treturn new AttributeOperation( this.range, this.key, this.oldValue, this.newValue, this.baseVersion );\n\t}\n\n\t/**\n\t * See {@link module:engine/model/operation/operation~Operation#getReversed `Operation#getReversed()`}.\n\t */\n\tpublic getReversed(): Operation {\n\t\treturn new AttributeOperation( this.range, this.key, this.newValue, this.oldValue, this.baseVersion! + 1 );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override toJSON(): unknown {\n\t\tconst json: any = super.toJSON();\n\n\t\tjson.range = this.range.toJSON();\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic override _validate(): void {\n\t\tif ( !this.range.isFlat ) {\n\t\t\t/**\n\t\t\t * The range to change is not flat.\n\t\t\t *\n\t\t\t * @error attribute-operation-range-not-flat\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'attribute-operation-range-not-flat', this );\n\t\t}\n\n\t\tfor ( const item of this.range.getItems( { shallow: true } ) ) {\n\t\t\tif ( this.oldValue !== null && !isEqual( item.getAttribute( this.key ), this.oldValue ) ) {\n\t\t\t\t/**\n\t\t\t\t * Changed node has different attribute value than operation's old attribute value.\n\t\t\t\t *\n\t\t\t\t * @error attribute-operation-wrong-old-value\n\t\t\t\t * @param item\n\t\t\t\t * @param key\n\t\t\t\t * @param value\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'attribute-operation-wrong-old-value',\n\t\t\t\t\tthis,\n\t\t\t\t\t{ item, key: this.key, value: this.oldValue }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( this.oldValue === null && this.newValue !== null && item.hasAttribute( this.key ) ) {\n\t\t\t\t/**\n\t\t\t\t * The attribute with given key already exists for the given node.\n\t\t\t\t *\n\t\t\t\t * @error attribute-operation-attribute-exists\n\t\t\t\t * @param node\n\t\t\t\t * @param key\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'attribute-operation-attribute-exists',\n\t\t\t\t\tthis,\n\t\t\t\t\t{ node: item, key: this.key }\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic _execute(): void {\n\t\t// If value to set is same as old value, don't do anything.\n\t\tif ( !isEqual( this.oldValue, this.newValue ) ) {\n\t\t\t// Execution.\n\t\t\t_setAttribute( this.range, this.key, this.newValue );\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get className(): string {\n\t\treturn 'AttributeOperation';\n\t}\n\n\t/**\n\t * Creates `AttributeOperation` object from deserialized object, i.e. from parsed JSON string.\n\t *\n\t * @param json Deserialized JSON object.\n\t * @param document Document on which this operation will be applied.\n\t */\n\tpublic static override fromJSON( json: any, document: Document ): AttributeOperation {\n\t\treturn new AttributeOperation( Range.fromJSON( json.range, document ), json.key, json.oldValue, json.newValue, json.baseVersion );\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \treturn `AttributeOperation( ${ this.baseVersion } ): ` +\n\t// @if CK_DEBUG_ENGINE // \t\t`\"${ this.key }\": ${ JSON.stringify( this.oldValue ) }` +\n\t// @if CK_DEBUG_ENGINE // \t\t` -> ${ JSON.stringify( this.newValue ) }, ${ this.range }`;\n\t// @if CK_DEBUG_ENGINE // }\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/operation/nooperation\n */\n\nimport Operation from './operation';\nimport type { Selectable } from '../selection';\n\n/**\n * Operation which is doing nothing (\"empty operation\", \"do-nothing operation\", \"noop\"). This is an operation,\n * which when executed does not change the tree model. It still has some parameters defined for transformation purposes.\n *\n * In most cases this operation is a result of transforming operations. When transformation returns\n * {@link module:engine/model/operation/nooperation~NoOperation} it means that changes done by the transformed operation\n * have already been applied.\n */\nexport default class NoOperation extends Operation {\n\tpublic get type(): 'noop' {\n\t\treturn 'noop';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get affectedSelectable(): Selectable {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Creates and returns an operation that has the same parameters as this operation.\n\t */\n\tpublic clone(): NoOperation {\n\t\treturn new NoOperation( this.baseVersion );\n\t}\n\n\t/**\n\t * See {@link module:engine/model/operation/operation~Operation#getReversed `Operation#getReversed()`}.\n\t */\n\tpublic getReversed(): Operation {\n\t\treturn new NoOperation( this.baseVersion! + 1 );\n\t}\n\n\t/** @internal */\n\tpublic _execute(): void {\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get className(): string {\n\t\treturn 'NoOperation';\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \treturn `NoOperation( ${ this.baseVersion } )`;\n\t// @if CK_DEBUG_ENGINE // }\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/operation/renameoperation\n */\n\nimport Operation from './operation';\nimport Element from '../element';\nimport Position from '../position';\n\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\n\nimport type Document from '../document';\nimport type { Selectable } from '../selection';\n\n/**\n * Operation to change element's name.\n *\n * Using this class you can change element's name.\n */\nexport default class RenameOperation extends Operation {\n\t/**\n\t * Position before an element to change.\n\t */\n\tpublic position: Position;\n\n\t/**\n\t * Current name of the element.\n\t */\n\tpublic oldName: string;\n\n\t/**\n\t * New name for the element.\n\t */\n\tpublic newName: string;\n\n\t/**\n\t * Creates an operation that changes element's name.\n\t *\n\t * @param position Position before an element to change.\n\t * @param oldName Current name of the element.\n\t * @param newName New name for the element.\n\t * @param baseVersion Document {@link module:engine/model/document~Document#version} on which operation\n\t * can be applied or `null` if the operation operates on detached (non-document) tree.\n\t */\n\tconstructor( position: Position, oldName: string, newName: string, baseVersion: number | null ) {\n\t\tsuper( baseVersion );\n\n\t\tthis.position = position;\n\t\t// This position sticks to the next node because it is a position before the node that we want to change.\n\t\tthis.position.stickiness = 'toNext';\n\n\t\tthis.oldName = oldName;\n\t\tthis.newName = newName;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get type(): 'rename' {\n\t\treturn 'rename';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get affectedSelectable(): Selectable {\n\t\treturn this.position.nodeAfter;\n\t}\n\n\t/**\n\t * Creates and returns an operation that has the same parameters as this operation.\n\t *\n\t * @returns Clone of this operation.\n\t */\n\tpublic clone(): RenameOperation {\n\t\treturn new RenameOperation( this.position.clone(), this.oldName, this.newName, this.baseVersion );\n\t}\n\n\t/**\n\t * See {@link module:engine/model/operation/operation~Operation#getReversed `Operation#getReversed()`}.\n\t */\n\tpublic getReversed(): Operation {\n\t\treturn new RenameOperation( this.position.clone(), this.newName, this.oldName, this.baseVersion! + 1 );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic override _validate(): void {\n\t\tconst element = this.position.nodeAfter;\n\n\t\tif ( !( element instanceof Element ) ) {\n\t\t\t/**\n\t\t\t * Given position is invalid or node after it is not instance of Element.\n\t\t\t *\n\t\t\t * @error rename-operation-wrong-position\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'rename-operation-wrong-position',\n\t\t\t\tthis\n\t\t\t);\n\t\t} else if ( element.name !== this.oldName ) {\n\t\t\t/**\n\t\t\t * Element to change has different name than operation's old name.\n\t\t\t *\n\t\t\t * @error rename-operation-wrong-name\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'rename-operation-wrong-name',\n\t\t\t\tthis\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic _execute(): void {\n\t\tconst element = this.position.nodeAfter;\n\n\t\t( element as any ).name = this.newName;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override toJSON(): unknown {\n\t\tconst json: any = super.toJSON();\n\n\t\tjson.position = this.position.toJSON();\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get className(): string {\n\t\treturn 'RenameOperation';\n\t}\n\n\t/**\n\t * Creates `RenameOperation` object from deserialized object, i.e. from parsed JSON string.\n\t *\n\t * @param json Deserialized JSON object.\n\t * @param document Document on which this operation will be applied.\n\t */\n\tpublic static override fromJSON( json: any, document: Document ): RenameOperation {\n\t\treturn new RenameOperation( Position.fromJSON( json.position, document ), json.oldName, json.newName, json.baseVersion );\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \treturn `RenameOperation( ${ this.baseVersion } ): ` +\n\t// @if CK_DEBUG_ENGINE // \t\t`${ this.position }: \"${ this.oldName }\" -> \"${ this.newName }\"`;\n\t// @if CK_DEBUG_ENGINE // }\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/operation/rootattributeoperation\n */\n\nimport Operation from './operation';\n\nimport type Document from '../document';\nimport type RootElement from '../rootelement';\n\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\nimport type { Selectable } from '../selection';\n\n/**\n * Operation to change root element's attribute. Using this class you can add, remove or change value of the attribute.\n *\n * This operation is needed, because root elements can't be changed through\n * {@link module:engine/model/operation/attributeoperation~AttributeOperation}.\n * It is because {@link module:engine/model/operation/attributeoperation~AttributeOperation}\n * requires a range to change and root element can't\n * be a part of range because every {@link module:engine/model/position~Position} has to be inside a root.\n * {@link module:engine/model/position~Position} can't be created before a root element.\n */\nexport default class RootAttributeOperation extends Operation {\n\t/**\n\t * Root element to change.\n\t */\n\tpublic readonly root: RootElement;\n\n\t/**\n\t * Key of an attribute to change or remove.\n\t */\n\tpublic readonly key: string;\n\n\t/**\n\t * Old value of the attribute with given key or `null`, if attribute was not set before.\n\t *\n\t * @readonly\n\t */\n\tpublic oldValue: unknown;\n\n\t/**\n\t * New value of the attribute with given key or `null`, if operation should remove attribute.\n\t *\n\t * @readonly\n\t */\n\tpublic newValue: unknown;\n\n\t/**\n\t * Creates an operation that changes, removes or adds attributes on root element.\n\t *\n\t * @see module:engine/model/operation/attributeoperation~AttributeOperation\n\t * @param root Root element to change.\n\t * @param key Key of an attribute to change or remove.\n\t * @param oldValue Old value of the attribute with given key or `null`, if attribute was not set before.\n\t * @param newValue New value of the attribute with given key or `null`, if operation should remove attribute.\n\t * @param baseVersion Document {@link module:engine/model/document~Document#version} on which operation\n\t * can be applied or `null` if the operation operates on detached (non-document) tree.\n\t */\n\tconstructor(\n\t\troot: RootElement,\n\t\tkey: string,\n\t\toldValue: unknown,\n\t\tnewValue: unknown,\n\t\tbaseVersion: number | null\n\t) {\n\t\tsuper( baseVersion );\n\n\t\tthis.root = root;\n\t\tthis.key = key;\n\t\tthis.oldValue = oldValue === undefined ? null : oldValue;\n\t\tthis.newValue = newValue === undefined ? null : newValue;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get type(): 'addRootAttribute' | 'removeRootAttribute' | 'changeRootAttribute' {\n\t\tif ( this.oldValue === null ) {\n\t\t\treturn 'addRootAttribute';\n\t\t} else if ( this.newValue === null ) {\n\t\t\treturn 'removeRootAttribute';\n\t\t} else {\n\t\t\treturn 'changeRootAttribute';\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get affectedSelectable(): Selectable {\n\t\treturn this.root;\n\t}\n\n\t/**\n\t * Creates and returns an operation that has the same parameters as this operation.\n\t *\n\t * @returns Clone of this operation.\n\t */\n\tpublic clone(): RootAttributeOperation {\n\t\treturn new RootAttributeOperation( this.root, this.key, this.oldValue, this.newValue, this.baseVersion );\n\t}\n\n\t/**\n\t * See {@link module:engine/model/operation/operation~Operation#getReversed `Operation#getReversed()`}.\n\t */\n\tpublic getReversed(): Operation {\n\t\treturn new RootAttributeOperation( this.root, this.key, this.newValue, this.oldValue, this.baseVersion! + 1 );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic override _validate(): void {\n\t\tif ( this.root != this.root.root || this.root.is( 'documentFragment' ) ) {\n\t\t\t/**\n\t\t\t * The element to change is not a root element.\n\t\t\t *\n\t\t\t * @error rootattribute-operation-not-a-root\n\t\t\t * @param root\n\t\t\t * @param key\n\t\t\t * @param value\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'rootattribute-operation-not-a-root',\n\t\t\t\tthis,\n\t\t\t\t{ root: this.root, key: this.key }\n\t\t\t);\n\t\t}\n\n\t\tif ( this.oldValue !== null && this.root.getAttribute( this.key ) !== this.oldValue ) {\n\t\t\t/**\n\t\t\t * The attribute which should be removed does not exist for the given node.\n\t\t\t *\n\t\t\t * @error rootattribute-operation-wrong-old-value\n\t\t\t * @param root\n\t\t\t * @param key\n\t\t\t * @param value\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'rootattribute-operation-wrong-old-value',\n\t\t\t\tthis,\n\t\t\t\t{ root: this.root, key: this.key }\n\t\t\t);\n\t\t}\n\n\t\tif ( this.oldValue === null && this.newValue !== null && this.root.hasAttribute( this.key ) ) {\n\t\t\t/**\n\t\t\t * The attribute with given key already exists for the given node.\n\t\t\t *\n\t\t\t * @error rootattribute-operation-attribute-exists\n\t\t\t * @param root\n\t\t\t * @param key\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'rootattribute-operation-attribute-exists',\n\t\t\t\tthis,\n\t\t\t\t{ root: this.root, key: this.key }\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic override _execute(): void {\n\t\tif ( this.newValue !== null ) {\n\t\t\tthis.root._setAttribute( this.key, this.newValue );\n\t\t} else {\n\t\t\tthis.root._removeAttribute( this.key );\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override toJSON(): unknown {\n\t\tconst json: any = super.toJSON();\n\n\t\tjson.root = this.root.toJSON();\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get className(): string {\n\t\treturn 'RootAttributeOperation';\n\t}\n\n\t/**\n\t * Creates `RootAttributeOperation` object from deserialized object, i.e. from parsed JSON string.\n\t *\n\t * @param json Deserialized JSON object.\n\t * @param document Document on which this operation will be applied.\n\t */\n\tpublic static override fromJSON( json: any, document: Document ): RootAttributeOperation {\n\t\tif ( !document.getRoot( json.root ) ) {\n\t\t\t/**\n\t\t\t * Cannot create RootAttributeOperation for document. Root with specified name does not exist.\n\t\t\t *\n\t\t\t * @error rootattribute-operation-fromjson-no-root\n\t\t\t * @param rootName\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'rootattribute-operation-fromjson-no-root', this, { rootName: json.root } );\n\t\t}\n\n\t\treturn new RootAttributeOperation( document.getRoot( json.root )!, json.key, json.oldValue, json.newValue, json.baseVersion );\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \treturn `RootAttributeOperation( ${ this.baseVersion } ): ` +\n\t// @if CK_DEBUG_ENGINE //\t\t`\"${ this.key }\": ${ JSON.stringify( this.oldValue ) }` +\n\t// @if CK_DEBUG_ENGINE //\t\t` -> ${ JSON.stringify( this.newValue ) }, ${ this.root.rootName }`;\n\t// @if CK_DEBUG_ENGINE // }\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/operation/rootoperation\n */\n\nimport Operation from './operation';\n\nimport type Document from '../document';\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\nimport type { Selectable } from '../selection';\n\n/**\n * Operation that creates (or attaches) or detaches a root element.\n */\nexport default class RootOperation extends Operation {\n\t/**\n\t * Root name to create or detach.\n\t */\n\tpublic readonly rootName: string;\n\n\t/**\n\t * Root element name.\n\t */\n\tpublic readonly elementName: string;\n\n\t/**\n\t * Specifies whether the operation adds (`true`) or detaches the root (`false`).\n\t */\n\tpublic readonly isAdd: boolean;\n\n\t/**\n\t * Document which owns the root.\n\t */\n\tprivate readonly _document: Document;\n\n\t/**\n\t * Creates an operation that creates or removes a root element.\n\t *\n\t * @param rootName Root name to create or detach.\n\t * @param elementName Root element name.\n\t * @param isAdd Specifies whether the operation adds (`true`) or detaches the root (`false`).\n\t * @param document Document which owns the root.\n\t * @param baseVersion Document {@link module:engine/model/document~Document#version} on which operation can be applied.\n\t */\n\tconstructor(\n\t\trootName: string,\n\t\telementName: string,\n\t\tisAdd: boolean,\n\t\tdocument: Document,\n\t\tbaseVersion: number\n\t) {\n\t\tsuper( baseVersion );\n\n\t\tthis.rootName = rootName;\n\t\tthis.elementName = elementName;\n\t\tthis.isAdd = isAdd;\n\t\tthis._document = document;\n\n\t\t// Make sure that the root exists ASAP, this is important for RTC.\n\t\t// If the root was dynamically added, there will be more operations that operate on/in this root.\n\t\t// These operations will require root element instance (in operation property or in position instance).\n\t\t// If the root is not created ahead of time, instantiating such operations may fail.\n\t\tif ( !this._document.getRoot( this.rootName ) ) {\n\t\t\tconst root = this._document.createRoot( this.elementName, this.rootName );\n\n\t\t\troot._isAttached = false;\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override get type(): 'addRoot' | 'detachRoot' {\n\t\treturn this.isAdd ? 'addRoot' : 'detachRoot';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get affectedSelectable(): Selectable {\n\t\treturn this._document.getRoot( this.rootName );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override clone(): RootOperation {\n\t\treturn new RootOperation( this.rootName, this.elementName, this.isAdd, this._document, this.baseVersion! );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override getReversed(): RootOperation {\n\t\treturn new RootOperation( this.rootName, this.elementName, !this.isAdd, this._document, this.baseVersion! + 1 );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override _execute(): void {\n\t\tthis._document.getRoot( this.rootName )!._isAttached = this.isAdd;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override toJSON(): unknown {\n\t\tconst json: any = super.toJSON();\n\n\t\tdelete json._document;\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get className(): string {\n\t\treturn 'RootOperation';\n\t}\n\n\t/**\n\t * Creates `RootOperation` object from deserialized object, i.e. from parsed JSON string.\n\t *\n\t * @param json Deserialized JSON object.\n\t * @param document Document on which this operation will be applied.\n\t */\n\tpublic static override fromJSON( json: any, document: Document ): RootOperation {\n\t\treturn new RootOperation( json.rootName, json.elementName, json.isAdd, document, json.baseVersion );\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \treturn `RootOperation( ${ this.baseVersion } ): ` +\n\t// @if CK_DEBUG_ENGINE //\t\t`${ this.type } -> \"${ this.rootName }\" (${ this.elementName })`;\n\t// @if CK_DEBUG_ENGINE // }\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/operation/operationfactory\n */\n\nimport AttributeOperation from './attributeoperation';\nimport InsertOperation from './insertoperation';\nimport MarkerOperation from './markeroperation';\nimport MoveOperation from './moveoperation';\nimport NoOperation from './nooperation';\nimport Operation from './operation';\nimport RenameOperation from './renameoperation';\nimport RootAttributeOperation from './rootattributeoperation';\nimport RootOperation from './rootoperation';\nimport SplitOperation from './splitoperation';\nimport MergeOperation from './mergeoperation';\n\nimport type Document from '../document';\n\nconst operations: {\n\t[ className: string ]: {\n\t\tfromJSON( json: any, document: Document ): Operation;\n\t};\n} = {};\n\noperations[ AttributeOperation.className ] = AttributeOperation;\noperations[ InsertOperation.className ] = InsertOperation;\noperations[ MarkerOperation.className ] = MarkerOperation;\noperations[ MoveOperation.className ] = MoveOperation;\noperations[ NoOperation.className ] = NoOperation;\noperations[ Operation.className ] = Operation;\noperations[ RenameOperation.className ] = RenameOperation;\noperations[ RootAttributeOperation.className ] = RootAttributeOperation;\noperations[ RootOperation.className ] = RootOperation;\noperations[ SplitOperation.className ] = SplitOperation;\noperations[ MergeOperation.className ] = MergeOperation;\n\n/**\n * A factory class for creating operations.\n */\nexport default abstract class OperationFactory {\n\t/**\n\t * Creates an operation instance from a JSON object (parsed JSON string).\n\t *\n\t * @param json Deserialized JSON object.\n\t * @param document Document on which this operation will be applied.\n\t */\n\tpublic static fromJSON( json: any, document: Document ): Operation {\n\t\treturn operations[ json.__className ].fromJSON( json, document );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport InsertOperation from './insertoperation';\nimport AttributeOperation from './attributeoperation';\nimport RenameOperation from './renameoperation';\nimport MarkerOperation from './markeroperation';\nimport MoveOperation from './moveoperation';\nimport RootAttributeOperation from './rootattributeoperation';\nimport RootOperation from './rootoperation';\nimport MergeOperation from './mergeoperation';\nimport SplitOperation from './splitoperation';\nimport NoOperation from './nooperation';\nimport Range from '../range';\nimport Position from '../position';\n\nimport type Operation from './operation';\nimport type Document from '../document';\nimport type History from '../history';\n\nimport { compareArrays } from '@ckeditor/ckeditor5-utils';\n\ntype TransformationFunction = ( a: Operation, b: Operation, context: TransformationContext ) => Array<Operation>;\n\nconst transformations = new Map<Function, Map<Function, TransformationFunction>>();\n\n/**\n * @module engine/model/operation/transform\n */\n\n/**\n * Sets a transformation function to be be used to transform instances of class `OperationA` by instances of class `OperationB`.\n *\n * The `transformationFunction` is passed three parameters:\n *\n * * `a` - operation to be transformed, an instance of `OperationA`,\n * * `b` - operation to be transformed by, an instance of `OperationB`,\n * * {@link module:engine/model/operation/transform~TransformationContext `context`} - object with additional information about\n * transformation context.\n *\n * The `transformationFunction` should return transformation result, which is an array with one or multiple\n * {@link module:engine/model/operation/operation~Operation operation} instances.\n *\n * @param transformationFunction Function to use for transforming.\n */\nfunction setTransformation<\n\tClassA extends new ( ...args: Array<any> ) => Operation,\n\tClassB extends new ( ...args: Array<any> ) => Operation\n>(\n\tOperationA: ClassA,\n\tOperationB: ClassB,\n\ttransformationFunction: ( a: InstanceType<ClassA>, b: InstanceType<ClassB>, context: TransformationContext ) => Array<Operation>\n) {\n\tlet aGroup = transformations.get( OperationA );\n\n\tif ( !aGroup ) {\n\t\taGroup = new Map();\n\t\ttransformations.set( OperationA, aGroup );\n\t}\n\n\taGroup.set( OperationB, transformationFunction as TransformationFunction );\n}\n\n/**\n * Returns a previously set transformation function for transforming an instance of `OperationA` by an instance of `OperationB`.\n *\n * If no transformation was set for given pair of operations, {@link module:engine/model/operation/transform~noUpdateTransformation}\n * is returned. This means that if no transformation was set, the `OperationA` instance will not change when transformed\n * by the `OperationB` instance.\n *\n * @returns Function set to transform an instance of `OperationA` by an instance of `OperationB`.\n */\nfunction getTransformation( OperationA: Function, OperationB: Function ): TransformationFunction {\n\tconst aGroup = transformations.get( OperationA );\n\n\tif ( aGroup && aGroup.has( OperationB ) ) {\n\t\treturn aGroup.get( OperationB )!;\n\t}\n\n\treturn noUpdateTransformation;\n}\n\n/**\n * A transformation function that only clones operation to transform, without changing it.\n */\nfunction noUpdateTransformation( a: Operation ): Array<Operation> {\n\treturn [ a ];\n}\n\n/**\n * Transforms operation `a` by operation `b`.\n *\n * @param a Operation to be transformed.\n * @param b Operation to transform by.\n * @param context Transformation context for this transformation.\n * @returns Transformation result.\n */\nexport function transform( a: Operation, b: Operation, context: TransformationContext = {} ): Array<Operation> {\n\tconst transformationFunction = getTransformation( a.constructor, b.constructor );\n\n\t/* eslint-disable no-useless-catch */\n\ttry {\n\t\ta = a.clone();\n\n\t\treturn transformationFunction( a, b, context );\n\t} catch ( e: any ) {\n\t\t// @if CK_DEBUG // console.warn( 'Error during operation transformation!', e.message );\n\t\t// @if CK_DEBUG // console.warn( 'Transformed operation', a );\n\t\t// @if CK_DEBUG // console.warn( 'Operation transformed by', b );\n\t\t// @if CK_DEBUG // console.warn( 'context.aIsStrong', context.aIsStrong );\n\t\t// @if CK_DEBUG // console.warn( 'context.aWasUndone', context.aWasUndone );\n\t\t// @if CK_DEBUG // console.warn( 'context.bWasUndone', context.bWasUndone );\n\t\t// @if CK_DEBUG // console.warn( 'context.abRelation', context.abRelation );\n\t\t// @if CK_DEBUG // console.warn( 'context.baRelation', context.baRelation );\n\n\t\tthrow e;\n\t}\n\t/* eslint-enable no-useless-catch */\n}\n\n/**\n * Performs a transformation of two sets of operations - `operationsA` and `operationsB`. The transformation is two-way -\n * both transformed `operationsA` and transformed `operationsB` are returned.\n *\n * Note, that the first operation in each set should base on the same document state (\n * {@link module:engine/model/document~Document#version document version}).\n *\n * It is assumed that `operationsA` are \"more important\" during conflict resolution between two operations.\n *\n * New copies of both passed arrays and operations inside them are returned. Passed arguments are not altered.\n *\n * Base versions of the transformed operations sets are updated accordingly. For example, assume that base versions are `4`\n * and there are `3` operations in `operationsA` and `5` operations in `operationsB`. Then:\n *\n * * transformed `operationsA` will start from base version `9` (`4` base version + `5` operations B),\n * * transformed `operationsB` will start from base version `7` (`4` base version + `3` operations A).\n *\n * If no operation was broken into two during transformation, then both sets will end up with an operation that bases on version `11`:\n *\n * * transformed `operationsA` start from `9` and there are `3` of them, so the last will have `baseVersion` equal to `11`,\n * * transformed `operationsB` start from `7` and there are `5` of them, so the last will have `baseVersion` equal to `11`.\n *\n * @param operationsA\n * @param operationsB\n * @param options Additional transformation options.\n * @param options.document Document which the operations change.\n * @param options.useRelations Whether during transformation relations should be used (used during undo for better conflict resolution).\n * @param options.padWithNoOps Whether additional {@link module:engine/model/operation/nooperation~NoOperation}s\n * should be added to the transformation results to force the same last base version for both transformed sets (in case\n * if some operations got broken into multiple operations during transformation).\n * @param options.forceWeakRemove If set to `false`, remove operation will be always stronger than move operation,\n * so the removed nodes won't end up back in the document root. When set to `true`, context data will be used.\n * @returns Transformation result.\n */\nexport function transformSets(\n\toperationsA: Array<Operation>,\n\toperationsB: Array<Operation>,\n\toptions: {\n\t\tdocument: Document;\n\t\tuseRelations?: boolean;\n\t\tpadWithNoOps?: boolean;\n\t\tforceWeakRemove?: boolean;\n\t}\n): TransformSetsResult {\n\t// Create new arrays so the originally passed arguments are not changed.\n\t// No need to clone operations, they are cloned as they are transformed.\n\toperationsA = operationsA.slice();\n\toperationsB = operationsB.slice();\n\n\tconst contextFactory = new ContextFactory( options.document, options.useRelations, options.forceWeakRemove );\n\tcontextFactory.setOriginalOperations( operationsA );\n\tcontextFactory.setOriginalOperations( operationsB );\n\n\tconst originalOperations = contextFactory.originalOperations;\n\n\t// If one of sets is empty there is simply nothing to transform, so return sets as they are.\n\tif ( operationsA.length == 0 || operationsB.length == 0 ) {\n\t\treturn { operationsA, operationsB, originalOperations };\n\t}\n\t//\n\t// Following is a description of transformation process:\n\t//\n\t// There are `operationsA` and `operationsB` to be transformed, both by both.\n\t//\n\t// So, suppose we have sets of two operations each: `operationsA` = `[ a1, a2 ]`, `operationsB` = `[ b1, b2 ]`.\n\t//\n\t// Remember, that we can only transform operations that base on the same context. We assert that `a1` and `b1` base on\n\t// the same context and we transform them. Then, we get `a1'` and `b1'`. `a2` bases on a context with `a1` -- `a2`\n\t// is an operation that followed `a1`. Similarly, `b2` bases on a context with `b1`.\n\t//\n\t// However, since `a1'` is a result of transformation by `b1`, `a1'` now also has a context with `b1`. This means that\n\t// we can safely transform `a1'` by `b2`. As we finish transforming `a1`, we also transformed all `operationsB`.\n\t// All `operationsB` also have context including `a1`. Now, we can properly transform `a2` by those operations.\n\t//\n\t// The transformation process can be visualized on a transformation diagram (\"diamond diagram\"):\n\t//\n\t// [the initial state]\n\t// [common for a1 and b1]\n\t//\n\t// *\n\t// / \\\n\t// / \\\n\t// b1 a1\n\t// / \\\n\t// / \\\n\t// * *\n\t// / \\ / \\\n\t// / \\ / \\\n\t// b2 a1' b1' a2\n\t// / \\ / \\\n\t// / \\ / \\\n\t// * * *\n\t// \\ / \\ /\n\t// \\ / \\ /\n\t// a1'' b2' a2' b1''\n\t// \\ / \\ /\n\t// \\ / \\ /\n\t// * *\n\t// \\ /\n\t// \\ /\n\t// a2'' b2''\n\t// \\ /\n\t// \\ /\n\t// *\n\t//\n\t// [the final state]\n\t//\n\t// The final state can be reached from the initial state by applying `a1`, `a2`, `b1''` and `b2''`, as well as by\n\t// applying `b1`, `b2`, `a1''`, `a2''`. Note how the operations get to a proper common state before each pair is\n\t// transformed.\n\t//\n\t// Another thing to consider is that an operation during transformation can be broken into multiple operations.\n\t// Suppose that `a1` * `b1` = `[ a11', a12' ]` (instead of `a1'` that we considered previously).\n\t//\n\t// In that case, we leave `a12'` for later and we continue transforming `a11'` until it is transformed by all `operationsB`\n\t// (in our case it is just `b2`). At this point, `b1` is transformed by \"whole\" `a1`, while `b2` is only transformed\n\t// by `a11'`. Similarly, `a12'` is only transformed by `b1`. This leads to a conclusion that we need to start transforming `a12'`\n\t// from the moment just after it was broken. So, `a12'` is transformed by `b2`. Now, \"the whole\" `a1` is transformed\n\t// by `operationsB`, while all `operationsB` are transformed by \"the whole\" `a1`. This means that we can continue with\n\t// following `operationsA` (in our case it is just `a2`).\n\t//\n\t// Of course, also `operationsB` can be broken. However, since we focus on transforming operation `a` to the end,\n\t// the only thing to do is to store both pieces of operation `b`, so that the next transformed operation `a` will\n\t// be transformed by both of them.\n\t//\n\t// *\n\t// / \\\n\t// / \\\n\t// / \\\n\t// b1 a1\n\t// / \\\n\t// / \\\n\t// / \\\n\t// * *\n\t// / \\ / \\\n\t// / a11' / \\\n\t// / \\ / \\\n\t// b2 * b1' a2\n\t// / / \\ / \\\n\t// / / a12' / \\\n\t// / / \\ / \\\n\t// * b2' * *\n\t// \\ / / \\ /\n\t// a11'' / b21'' \\ /\n\t// \\ / / \\ /\n\t// * * a2' b1''\n\t// \\ / \\ \\ /\n\t// a12'' b22''\\ \\ /\n\t// \\ / \\ \\ /\n\t// * a2'' *\n\t// \\ \\ /\n\t// \\ \\ b21'''\n\t// \\ \\ /\n\t// a2''' *\n\t// \\ /\n\t// \\ b22'''\n\t// \\ /\n\t// *\n\t//\n\t// Note, how `a1` is broken and transformed into `a11'` and `a12'`, while `b2'` got broken and transformed into `b21''` and `b22''`.\n\t//\n\t// Having all that on mind, here is an outline for the transformation process algorithm:\n\t//\n\t// 1. We have `operationsA` and `operationsB` array, which we dynamically update as the transformation process goes.\n\t//\n\t// 2. We take next (or first) operation from `operationsA` and check from which operation `b` we need to start transforming it.\n\t// All original `operationsA` are set to be transformed starting from the first operation `b`.\n\t//\n\t// 3. We take operations from `operationsB`, one by one, starting from the correct one, and transform operation `a`\n\t// by operation `b` (and vice versa). We update `operationsA` and `operationsB` by replacing the original operations\n\t// with the transformation results.\n\t//\n\t// 4. If operation is broken into multiple operations, we save all the new operations in the place of the\n\t// original operation.\n\t//\n\t// 5. Additionally, if operation `a` was broken, for the \"new\" operation, we remember from which operation `b` it should\n\t// be transformed by.\n\t//\n\t// 6. We continue transforming \"current\" operation `a` until it is transformed by all `operationsB`. Then, go to 2.\n\t// unless the last operation `a` was transformed.\n\t//\n\t// The actual implementation of the above algorithm is slightly different, as only one loop (while) is used.\n\t// The difference is that we have \"current\" `a` operation to transform and we store the index of the next `b` operation\n\t// to transform by. Each loop operates on two indexes then: index pointing to currently processed `a` operation and\n\t// index pointing to next `b` operation. Each loop is just one `a * b` + `b * a` transformation. After each loop\n\t// operation `b` index is updated. If all `b` operations were visited for the current `a` operation, we change\n\t// current `a` operation index to the next one.\n\t//\n\n\t// For each operation `a`, keeps information what is the index in `operationsB` from which the transformation should start.\n\tconst nextTransformIndex = new WeakMap<Operation, number>();\n\n\t// For all the original `operationsA`, set that they should be transformed starting from the first of `operationsB`.\n\tfor ( const op of operationsA ) {\n\t\tnextTransformIndex.set( op, 0 );\n\t}\n\n\t// Additional data that is used for some postprocessing after the main transformation process is done.\n\tconst data = {\n\t\tnextBaseVersionA: operationsA[ operationsA.length - 1 ].baseVersion! + 1,\n\t\tnextBaseVersionB: operationsB[ operationsB.length - 1 ].baseVersion! + 1,\n\t\toriginalOperationsACount: operationsA.length,\n\t\toriginalOperationsBCount: operationsB.length\n\t};\n\n\t// Index of currently transformed operation `a`.\n\tlet i = 0;\n\n\t// While not all `operationsA` are transformed...\n\twhile ( i < operationsA.length ) {\n\t\t// Get \"current\" operation `a`.\n\t\tconst opA = operationsA[ i ];\n\n\t\t// For the \"current\" operation `a`, get the index of the next operation `b` to transform by.\n\t\tconst indexB = nextTransformIndex.get( opA )!;\n\n\t\t// If operation `a` was already transformed by every operation `b`, change \"current\" operation `a` to the next one.\n\t\tif ( indexB == operationsB.length ) {\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst opB = operationsB[ indexB ];\n\n\t\t// Transform `a` by `b` and `b` by `a`.\n\t\tconst newOpsA = transform( opA, opB, contextFactory.getContext( opA, opB, true ) );\n\t\tconst newOpsB = transform( opB, opA, contextFactory.getContext( opB, opA, false ) );\n\t\t// As a result we get one or more `newOpsA` and one or more `newOpsB` operations.\n\n\t\t// Update contextual information about operations.\n\t\tcontextFactory.updateRelation( opA, opB );\n\n\t\tcontextFactory.setOriginalOperations( newOpsA, opA );\n\t\tcontextFactory.setOriginalOperations( newOpsB, opB );\n\n\t\t// For new `a` operations, update their index of the next operation `b` to transform them by.\n\t\t//\n\t\t// This is needed even if there was only one result (`a` was not broken) because that information is used\n\t\t// at the beginning of this loop every time.\n\t\tfor ( const newOpA of newOpsA ) {\n\t\t\t// Acknowledge, that operation `b` also might be broken into multiple operations.\n\t\t\t//\n\t\t\t// This is why we raise `indexB` not just by 1. If `newOpsB` are multiple operations, they will be\n\t\t\t// spliced in the place of `opB`. So we need to change `transformBy` accordingly, so that an operation won't\n\t\t\t// be transformed by the same operation (part of it) again.\n\t\t\tnextTransformIndex.set( newOpA, indexB + newOpsB.length );\n\t\t}\n\n\t\t// Update `operationsA` and `operationsB` with the transformed versions.\n\t\toperationsA.splice( i, 1, ...newOpsA );\n\t\toperationsB.splice( indexB, 1, ...newOpsB );\n\t}\n\n\tif ( options.padWithNoOps ) {\n\t\t// If no-operations padding is enabled, count how many extra `a` and `b` operations were generated.\n\t\tconst brokenOperationsACount = operationsA.length - data.originalOperationsACount;\n\t\tconst brokenOperationsBCount = operationsB.length - data.originalOperationsBCount;\n\n\t\t// Then, if that number is not the same, pad `operationsA` or `operationsB` with correct number of no-ops so\n\t\t// that the base versions are equalled.\n\t\t//\n\t\t// Note that only one array will be updated, as only one of those subtractions can be greater than zero.\n\t\tpadWithNoOps( operationsA, brokenOperationsBCount - brokenOperationsACount );\n\t\tpadWithNoOps( operationsB, brokenOperationsACount - brokenOperationsBCount );\n\t}\n\n\t// Finally, update base versions of transformed operations.\n\tupdateBaseVersions( operationsA, data.nextBaseVersionB );\n\tupdateBaseVersions( operationsB, data.nextBaseVersionA );\n\n\treturn { operationsA, operationsB, originalOperations };\n}\n\n/**\n * The result of {@link module:engine/model/operation/transform~transformSets}.\n */\nexport interface TransformSetsResult {\n\n\t/**\n\t * Transformed `operationsA`.\n\t */\n\toperationsA: Array<Operation>;\n\n\t/**\n\t * Transformed `operationsB`.\n\t */\n\toperationsB: Array<Operation>;\n\n\t/**\n\t * A map that links transformed operations to original operations. The keys are the transformed\n\t * operations and the values are the original operations from the input (`operationsA` and `operationsB`).\n\t */\n\toriginalOperations: Map<Operation, Operation>;\n}\n\n/**\n * Gathers additional data about operations processed during transformation. Can be used to obtain contextual information\n * about two operations that are about to be transformed. This contextual information can be used for better conflict resolution.\n */\nclass ContextFactory {\n\tpublic readonly originalOperations: Map<Operation, Operation>;\n\n\tprivate readonly _history: History;\n\tprivate readonly _useRelations?: boolean;\n\tprivate readonly _forceWeakRemove: boolean;\n\tprivate readonly _relations: Map<Operation, Map<Operation, any>>;\n\n\t/**\n\t * Creates `ContextFactory` instance.\n\t *\n\t * @param document Document which the operations change.\n\t * @param useRelations Whether during transformation relations should be used (used during undo for\n\t * better conflict resolution).\n\t * @param forceWeakRemove If set to `false`, remove operation will be always stronger than move operation,\n\t * so the removed nodes won't end up back in the document root. When set to `true`, context data will be used.\n\t */\n\tconstructor( document: Document, useRelations: boolean | undefined, forceWeakRemove = false ) {\n\t\t// For each operation that is created during transformation process, we keep a reference to the original operation\n\t\t// which it comes from. The original operation works as a kind of \"identifier\". Every contextual information\n\t\t// gathered during transformation that we want to save for given operation, is actually saved for the original operation.\n\t\t// This way no matter if operation `a` is cloned, then transformed, even breaks, we still have access to the previously\n\t\t// gathered data through original operation reference.\n\t\tthis.originalOperations = new Map();\n\n\t\t// `model.History` instance which information about undone operations will be taken from.\n\t\tthis._history = document.history;\n\n\t\t// Whether additional context should be used.\n\t\tthis._useRelations = useRelations;\n\n\t\tthis._forceWeakRemove = !!forceWeakRemove;\n\n\t\t// Relations is a double-map structure (maps in map) where for two operations we store how those operations were related\n\t\t// to each other. Those relations are evaluated during transformation process. For every transformated pair of operations\n\t\t// we keep relations between them.\n\t\tthis._relations = new Map();\n\t}\n\n\t/**\n\t * Sets \"original operation\" for given operations.\n\t *\n\t * During transformation process, operations are cloned, then changed, then processed again, sometimes broken into two\n\t * or multiple operations. When gathering additional data it is important that all operations can be somehow linked\n\t * so a cloned and transformed \"version\" still kept track of the data assigned earlier to it.\n\t *\n\t * The original operation object will be used as such an universal linking id. Throughout the transformation process\n\t * all cloned operations will refer to \"the original operation\" when storing and reading additional data.\n\t *\n\t * If `takeFrom` is not set, each operation from `operations` array will be assigned itself as \"the original operation\".\n\t * This should be used as an initialization step.\n\t *\n\t * If `takeFrom` is set, each operation from `operations` will be assigned the same original operation as assigned\n\t * for `takeFrom` operation. This should be used to update original operations. It should be used in a way that\n\t * `operations` are the result of `takeFrom` transformation to ensure proper \"original operation propagation\".\n\t */\n\tpublic setOriginalOperations( operations: Array<Operation>, takeFrom: Operation | null = null ): void {\n\t\tconst originalOperation = takeFrom ? this.originalOperations.get( takeFrom ) : null;\n\n\t\tfor ( const operation of operations ) {\n\t\t\tthis.originalOperations.set( operation, originalOperation || operation );\n\t\t}\n\t}\n\n\t/**\n\t * Saves a relation between operations `opA` and `opB`.\n\t *\n\t * Relations are then later used to help solve conflicts when operations are transformed.\n\t */\n\tpublic updateRelation( opA: Operation, opB: Operation ): void {\n\t\t// The use of relations is described in a bigger detail in transformation functions.\n\t\t//\n\t\t// In brief, this function, for specified pairs of operation types, checks how positions defined in those operations relate.\n\t\t// Then those relations are saved. For example, for two move operations, it is saved if one of those operations target\n\t\t// position is before the other operation source position. This kind of information gives contextual information when\n\t\t// transformation is used during undo. Similar checks are done for other pairs of operations.\n\t\t//\n\t\tif ( opA instanceof MoveOperation ) {\n\t\t\tif ( opB instanceof MergeOperation ) {\n\t\t\t\tif ( opA.targetPosition.isEqual( opB.sourcePosition ) || opB.movedRange.containsPosition( opA.targetPosition ) ) {\n\t\t\t\t\tthis._setRelation( opA, opB, 'insertAtSource' );\n\t\t\t\t} else if ( opA.targetPosition.isEqual( opB.deletionPosition ) ) {\n\t\t\t\t\tthis._setRelation( opA, opB, 'insertBetween' );\n\t\t\t\t} else if ( opA.targetPosition.isAfter( opB.sourcePosition ) ) {\n\t\t\t\t\tthis._setRelation( opA, opB, 'moveTargetAfter' );\n\t\t\t\t}\n\t\t\t} else if ( opB instanceof MoveOperation ) {\n\t\t\t\tif ( opA.targetPosition.isEqual( opB.sourcePosition ) || opA.targetPosition.isBefore( opB.sourcePosition ) ) {\n\t\t\t\t\tthis._setRelation( opA, opB, 'insertBefore' );\n\t\t\t\t} else {\n\t\t\t\t\tthis._setRelation( opA, opB, 'insertAfter' );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( opA instanceof SplitOperation ) {\n\t\t\tif ( opB instanceof MergeOperation ) {\n\t\t\t\tif ( opA.splitPosition.isBefore( opB.sourcePosition ) ) {\n\t\t\t\t\tthis._setRelation( opA, opB, 'splitBefore' );\n\t\t\t\t}\n\t\t\t} else if ( opB instanceof MoveOperation ) {\n\t\t\t\tif ( opA.splitPosition.isEqual( opB.sourcePosition ) || opA.splitPosition.isBefore( opB.sourcePosition ) ) {\n\t\t\t\t\tthis._setRelation( opA, opB, 'splitBefore' );\n\t\t\t\t} else {\n\t\t\t\t\tconst range = Range._createFromPositionAndShift( opB.sourcePosition, opB.howMany );\n\n\t\t\t\t\tif ( opA.splitPosition.hasSameParentAs( opB.sourcePosition ) && range.containsPosition( opA.splitPosition ) ) {\n\t\t\t\t\t\tconst howMany = range.end.offset - opA.splitPosition.offset;\n\t\t\t\t\t\tconst offset = opA.splitPosition.offset - range.start.offset;\n\n\t\t\t\t\t\tthis._setRelation( opA, opB, { howMany, offset } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( opA instanceof MergeOperation ) {\n\t\t\tif ( opB instanceof MergeOperation ) {\n\t\t\t\tif ( !opA.targetPosition.isEqual( opB.sourcePosition ) ) {\n\t\t\t\t\tthis._setRelation( opA, opB, 'mergeTargetNotMoved' );\n\t\t\t\t}\n\n\t\t\t\tif ( opA.sourcePosition.isEqual( opB.targetPosition ) ) {\n\t\t\t\t\tthis._setRelation( opA, opB, 'mergeSourceNotMoved' );\n\t\t\t\t}\n\n\t\t\t\tif ( opA.sourcePosition.isEqual( opB.sourcePosition ) ) {\n\t\t\t\t\tthis._setRelation( opA, opB, 'mergeSameElement' );\n\t\t\t\t}\n\t\t\t} else if ( opB instanceof SplitOperation ) {\n\t\t\t\tif ( opA.sourcePosition.isEqual( opB.splitPosition ) ) {\n\t\t\t\t\tthis._setRelation( opA, opB, 'splitAtSource' );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( opA instanceof MarkerOperation ) {\n\t\t\tconst markerRange = opA.newRange;\n\n\t\t\tif ( !markerRange ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( opB instanceof MoveOperation ) {\n\t\t\t\tconst movedRange = Range._createFromPositionAndShift( opB.sourcePosition, opB.howMany );\n\n\t\t\t\tconst affectedLeft = movedRange.containsPosition( markerRange.start ) ||\n\t\t\t\t\tmovedRange.start.isEqual( markerRange.start );\n\n\t\t\t\tconst affectedRight = movedRange.containsPosition( markerRange.end ) ||\n\t\t\t\t\tmovedRange.end.isEqual( markerRange.end );\n\n\t\t\t\tif ( ( affectedLeft || affectedRight ) && !movedRange.containsRange( markerRange ) ) {\n\t\t\t\t\tthis._setRelation( opA, opB, {\n\t\t\t\t\t\tside: affectedLeft ? 'left' : 'right',\n\t\t\t\t\t\tpath: affectedLeft ? markerRange.start.path.slice() : markerRange.end.path.slice()\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} else if ( opB instanceof MergeOperation ) {\n\t\t\t\tconst wasInLeftElement = markerRange.start.isEqual( opB.targetPosition );\n\t\t\t\tconst wasStartBeforeMergedElement = markerRange.start.isEqual( opB.deletionPosition );\n\t\t\t\tconst wasEndBeforeMergedElement = markerRange.end.isEqual( opB.deletionPosition );\n\t\t\t\tconst wasInRightElement = markerRange.end.isEqual( opB.sourcePosition );\n\n\t\t\t\tif ( wasInLeftElement || wasStartBeforeMergedElement || wasEndBeforeMergedElement || wasInRightElement ) {\n\t\t\t\t\tthis._setRelation( opA, opB, {\n\t\t\t\t\t\twasInLeftElement,\n\t\t\t\t\t\twasStartBeforeMergedElement,\n\t\t\t\t\t\twasEndBeforeMergedElement,\n\t\t\t\t\t\twasInRightElement\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Evaluates and returns contextual information about two given operations `opA` and `opB` which are about to be transformed.\n\t */\n\tpublic getContext( opA: Operation, opB: Operation, aIsStrong: boolean ): TransformationContext {\n\t\treturn {\n\t\t\taIsStrong,\n\t\t\taWasUndone: this._wasUndone( opA ),\n\t\t\tbWasUndone: this._wasUndone( opB ),\n\t\t\tabRelation: this._useRelations ? this._getRelation( opA, opB ) : null,\n\t\t\tbaRelation: this._useRelations ? this._getRelation( opB, opA ) : null,\n\t\t\tforceWeakRemove: this._forceWeakRemove\n\t\t};\n\t}\n\n\t/**\n\t * Returns whether given operation `op` has already been undone.\n\t *\n\t * Information whether an operation was undone gives more context when making a decision when two operations are in conflict.\n\t */\n\tpublic _wasUndone( op: Operation ): boolean {\n\t\t// For `op`, get its original operation. After all, if `op` is a clone (or even transformed clone) of another\n\t\t// operation, literally `op` couldn't be undone. It was just generated. If anything, it was the operation it origins\n\t\t// from which was undone. So get that original operation.\n\t\tconst originalOp = this.originalOperations.get( op )!;\n\n\t\t// And check with the document if the original operation was undone.\n\t\treturn ( originalOp as any ).wasUndone || this._history.isUndoneOperation( originalOp );\n\t}\n\n\t/**\n\t * Returns a relation between `opA` and an operation which is undone by `opB`. This can be `String` value if a relation\n\t * was set earlier or `null` if there was no relation between those operations.\n\t *\n\t * This is a little tricky to understand, so let's compare it to `ContextFactory#_wasUndone`.\n\t *\n\t * When `wasUndone( opB )` is used, we check if the `opB` has already been undone. It is obvious, that the\n\t * undoing operation must happen after the undone operation. So, essentially, we have `opB`, we take document history,\n\t * we look forward in the future and ask if in that future `opB` was undone.\n\t *\n\t * Relations is a backward process to `wasUndone()`.\n\t *\n\t * Long story short - using relations is asking what happened in the past. Looking back. This time we have an undoing\n\t * operation `opB` which has undone some other operation. When there is a transformation `opA` x `opB` and there is\n\t * a conflict to solve and `opB` is an undoing operation, we can look back in the history and see what was a relation\n\t * between `opA` and the operation which `opB` undone. Basing on that relation from the past, we can now make\n\t * a better decision when resolving a conflict between two operations, because we know more about the context of\n\t * those two operations.\n\t *\n\t * This is why this function does not return a relation directly between `opA` and `opB` because we need to look\n\t * back to search for a meaningful contextual information.\n\t */\n\tpublic _getRelation( opA: Operation, opB: Operation ): any {\n\t\t// Get the original operation. Similarly as in `wasUndone()` it is used as an universal identifier for stored data.\n\t\tconst origB = this.originalOperations.get( opB )!;\n\t\tconst undoneB = this._history.getUndoneOperation( origB );\n\n\t\t// If `opB` is not undoing any operation, there is no relation.\n\t\tif ( !undoneB ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst origA = this.originalOperations.get( opA )!;\n\t\tconst relationsA = this._relations.get( origA );\n\n\t\t// Get all relations for `opA`, and check if there is a relation with `opB`-undone-counterpart. If so, return it.\n\t\tif ( relationsA ) {\n\t\t\treturn relationsA.get( undoneB ) || null;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Helper function for `ContextFactory#updateRelations`.\n\t */\n\tprivate _setRelation( opA: Operation, opB: Operation, relation: any ): void {\n\t\t// As always, setting is for original operations, not the clones/transformed operations.\n\t\tconst origA = this.originalOperations.get( opA )!;\n\t\tconst origB = this.originalOperations.get( opB )!;\n\n\t\tlet relationsA = this._relations.get( origA );\n\n\t\tif ( !relationsA ) {\n\t\t\trelationsA = new Map();\n\t\t\tthis._relations.set( origA, relationsA );\n\t\t}\n\n\t\trelationsA.set( origB, relation );\n\t}\n}\n\n/**\n * Holds additional contextual information about a transformed pair of operations (`a` and `b`). Those information\n * can be used for better conflict resolving.\n */\n\nexport type TransformationContext = {\n\n\t/**\n\t * Whether `a` is strong operation in this transformation, or weak.\n\t */\n\taIsStrong?: boolean;\n\n\t/**\n\t * Whether `a` operation was undone.\n\t */\n\taWasUndone?: boolean;\n\n\t/**\n\t * Whether `b` operation was undone.\n\t */\n\tbWasUndone?: boolean;\n\n\t/**\n\t * The relation between `a` operation and an operation undone by `b` operation.\n\t */\n\tabRelation?: any;\n\n\t/**\n\t * The relation between `b` operation and an operation undone by `a` operation.\n\t */\n\tbaRelation?: any;\n\n\tforceWeakRemove?: boolean;\n};\n\n/**\n * An utility function that updates {@link module:engine/model/operation/operation~Operation#baseVersion base versions}\n * of passed operations.\n *\n * The function simply sets `baseVersion` as a base version of the first passed operation and then increments it for\n * each following operation in `operations`.\n *\n * @param operations Operations to update.\n * @param baseVersion Base version to set for the first operation in `operations`.\n */\nfunction updateBaseVersions( operations: ReadonlyArray<Operation>, baseVersion: number ) {\n\tfor ( const operation of operations ) {\n\t\toperation.baseVersion = baseVersion++;\n\t}\n}\n\n/**\n * Adds `howMany` instances of {@link module:engine/model/operation/nooperation~NoOperation} to `operations` set.\n */\nfunction padWithNoOps( operations: Array<Operation>, howMany: number ) {\n\tfor ( let i = 0; i < howMany; i++ ) {\n\t\toperations.push( new NoOperation( 0 ) );\n\t}\n}\n\n// -----------------------\n\nsetTransformation( AttributeOperation, AttributeOperation, ( a, b, context ) => {\n\t// If operations in conflict, check if their ranges intersect and manage them properly.\n\t//\n\t// Operations can be in conflict only if:\n\t//\n\t// * their key is the same (they change the same attribute), and\n\t// * they are in the same parent (operations for ranges [ 1 ] - [ 3 ] and [ 2, 0 ] - [ 2, 5 ] change different\n\t// elements and can't be in conflict).\n\tif ( a.key === b.key && a.range.start.hasSameParentAs( b.range.start ) ) {\n\t\t// First, we want to apply change to the part of a range that has not been changed by the other operation.\n\t\tconst operations = a.range.getDifference( b.range ).map( range => {\n\t\t\treturn new AttributeOperation( range, a.key, a.oldValue, a.newValue, 0 );\n\t\t} );\n\n\t\t// Then we take care of the common part of ranges.\n\t\tconst common = a.range.getIntersection( b.range );\n\n\t\tif ( common ) {\n\t\t\t// If this operation is more important, we also want to apply change to the part of the\n\t\t\t// original range that has already been changed by the other operation. Since that range\n\t\t\t// got changed we also have to update `oldValue`.\n\t\t\tif ( context.aIsStrong ) {\n\t\t\t\toperations.push( new AttributeOperation( common, b.key, b.newValue, a.newValue, 0 ) );\n\t\t\t}\n\t\t}\n\n\t\tif ( operations.length == 0 ) {\n\t\t\treturn [ new NoOperation( 0 ) ];\n\t\t}\n\n\t\treturn operations;\n\t} else {\n\t\t// If operations don't conflict, simply return an array containing just a clone of this operation.\n\t\treturn [ a ];\n\t}\n} );\n\nsetTransformation( AttributeOperation, InsertOperation, ( a, b ) => {\n\t// Case 1:\n\t//\n\t// The attribute operation range includes the position where nodes were inserted.\n\t// There are two possible scenarios: the inserted nodes were text and they should receive attributes or\n\t// the inserted nodes were elements and they should not receive attributes.\n\t//\n\tif ( a.range.start.hasSameParentAs( b.position ) && a.range.containsPosition( b.position ) ) {\n\t\t// If new nodes should not receive attributes, two separated ranges will be returned.\n\t\t// Otherwise, one expanded range will be returned.\n\t\tconst range = a.range._getTransformedByInsertion( b.position, b.howMany, !b.shouldReceiveAttributes );\n\t\tconst result = range.map( r => {\n\t\t\treturn new AttributeOperation( r, a.key, a.oldValue, a.newValue, a.baseVersion );\n\t\t} );\n\n\t\tif ( b.shouldReceiveAttributes ) {\n\t\t\t// `AttributeOperation#range` includes some newly inserted text.\n\t\t\t// The operation should also change the attribute of that text. An example:\n\t\t\t//\n\t\t\t// Bold should be applied on the following range:\n\t\t\t// <p>Fo[zb]ar</p>\n\t\t\t//\n\t\t\t// In meantime, new text is typed:\n\t\t\t// <p>Fozxxbar</p>\n\t\t\t//\n\t\t\t// Bold should be applied also on the new text:\n\t\t\t// <p>Fo[zxxb]ar</p>\n\t\t\t// <p>Fo<$text bold=\"true\">zxxb</$text>ar</p>\n\t\t\t//\n\t\t\t// There is a special case to consider here to consider.\n\t\t\t//\n\t\t\t// Consider setting an attribute with multiple possible values, for example `highlight`. The inserted text might\n\t\t\t// have already an attribute value applied and the `oldValue` property of the attribute operation might be wrong:\n\t\t\t//\n\t\t\t// Attribute `highlight=\"yellow\"` should be applied on the following range:\n\t\t\t// <p>Fo[zb]ar<p>\n\t\t\t//\n\t\t\t// In meantime, character `x` with `highlight=\"red\"` is typed:\n\t\t\t// <p>Fo[z<$text highlight=\"red\">x</$text>b]ar</p>\n\t\t\t//\n\t\t\t// In this case we cannot simply apply operation changing the attribute value from `null` to `\"yellow\"` for the whole range\n\t\t\t// because that would lead to an exception (`oldValue` is incorrect for `x`).\n\t\t\t//\n\t\t\t// We also cannot break the original range as this would mess up a scenario when there are multiple following\n\t\t\t// insert operations, because then only the first inserted character is included in those ranges:\n\t\t\t// <p>Fo[z][x][b]ar</p> --> <p>Fo[z][x]x[b]ar</p> --> <p>Fo[z][x]xx[b]ar</p>\n\t\t\t//\n\t\t\t// So, the attribute range needs be expanded, no matter what attributes are set on the inserted nodes:\n\t\t\t//\n\t\t\t// <p>Fo[z<$text highlight=\"red\">x</$text>b]ar</p> <--- Change from `null` to `yellow`, throwing an exception.\n\t\t\t//\n\t\t\t// But before that operation would be applied, we will add an additional attribute operation that will change\n\t\t\t// attributes on the inserted nodes in a way which would make the original operation correct:\n\t\t\t//\n\t\t\t// <p>Fo[z{<$text highlight=\"red\">}x</$text>b]ar</p> <--- Change range `{}` from `red` to `null`.\n\t\t\t// <p>Fo[zxb]ar</p> <--- Now change from `null` to `yellow` is completely fine.\n\t\t\t//\n\n\t\t\t// Generate complementary attribute operation. Be sure to add it before the original operation.\n\t\t\tconst op = _getComplementaryAttributeOperations( b, a.key, a.oldValue );\n\n\t\t\tif ( op ) {\n\t\t\t\tresult.unshift( op );\n\t\t\t}\n\t\t}\n\n\t\t// If nodes should not receive new attribute, we are done here.\n\t\treturn result;\n\t}\n\n\t// If insert operation is not expanding the attribute operation range, simply transform the range.\n\ta.range = a.range._getTransformedByInsertion( b.position, b.howMany, false )[ 0 ];\n\n\treturn [ a ];\n} );\n\n/**\n * Helper function for `AttributeOperation` x `InsertOperation` (and reverse) transformation.\n *\n * For given `insertOperation` it checks the inserted node if it has an attribute `key` set to a value different\n * than `newValue`. If so, it generates an `AttributeOperation` which changes the value of `key` attribute to `newValue`.\n */\nfunction _getComplementaryAttributeOperations( insertOperation: InsertOperation, key: string, newValue: unknown ) {\n\tconst nodes = insertOperation.nodes;\n\n\t// At the beginning we store the attribute value from the first node.\n\tconst insertValue = nodes.getNode( 0 )!.getAttribute( key );\n\n\tif ( insertValue == newValue ) {\n\t\treturn null;\n\t}\n\n\tconst range = new Range( insertOperation.position, insertOperation.position.getShiftedBy( insertOperation.howMany ) );\n\n\treturn new AttributeOperation( range, key, insertValue, newValue, 0 );\n}\n\nsetTransformation( AttributeOperation, MergeOperation, ( a, b ) => {\n\tconst ranges = [];\n\n\t// Case 1:\n\t//\n\t// Attribute change on the merged element. In this case, the merged element was moved to the graveyard.\n\t// An additional attribute operation that will change the (re)moved element needs to be generated.\n\t//\n\tif ( a.range.start.hasSameParentAs( b.deletionPosition ) ) {\n\t\tif ( a.range.containsPosition( b.deletionPosition ) || a.range.start.isEqual( b.deletionPosition ) ) {\n\t\t\tranges.push( Range._createFromPositionAndShift( b.graveyardPosition, 1 ) );\n\t\t}\n\t}\n\n\tconst range = a.range._getTransformedByMergeOperation( b );\n\n\t// Do not add empty (collapsed) ranges to the result. `range` may be collapsed if it contained only the merged element.\n\tif ( !range.isCollapsed ) {\n\t\tranges.push( range );\n\t}\n\n\t// Create `AttributeOperation`s out of the ranges.\n\treturn ranges.map( range => {\n\t\treturn new AttributeOperation( range, a.key, a.oldValue, a.newValue, a.baseVersion );\n\t} );\n} );\n\nsetTransformation( AttributeOperation, MoveOperation, ( a, b ) => {\n\tconst ranges = _breakRangeByMoveOperation( a.range, b );\n\n\t// Create `AttributeOperation`s out of the ranges.\n\treturn ranges.map( range => new AttributeOperation( range, a.key, a.oldValue, a.newValue, a.baseVersion ) );\n} );\n\n/**\n * Helper function for `AttributeOperation` x `MoveOperation` transformation.\n *\n * Takes the passed `range` and transforms it by move operation `moveOp` in a specific way. Only top-level nodes of `range`\n * are considered to be in the range. If move operation moves nodes deep from inside of the range, those nodes won't\n * be included in the result. In other words, top-level nodes of the ranges from the result are exactly the same as\n * top-level nodes of the original `range`.\n *\n * This is important for `AttributeOperation` because, for its range, it changes only the top-level nodes. So we need to\n * track only how those nodes have been affected by `MoveOperation`.\n */\nfunction _breakRangeByMoveOperation( range: Range, moveOp: MoveOperation ) {\n\tconst moveRange = Range._createFromPositionAndShift( moveOp.sourcePosition, moveOp.howMany );\n\n\t// We are transforming `range` (original range) by `moveRange` (range moved by move operation). As usual when it comes to\n\t// transforming a ranges, we may have a common part of the ranges and we may have a difference part (zero to two ranges).\n\tlet common = null;\n\tlet difference: Array<Range> = [];\n\n\t// Let's compare the ranges.\n\tif ( moveRange.containsRange( range, true ) ) {\n\t\t// If the whole original range is moved, treat it whole as a common part. There's also no difference part.\n\t\tcommon = range;\n\t} else if ( range.start.hasSameParentAs( moveRange.start ) ) {\n\t\t// If the ranges are \"on the same level\" (in the same parent) then move operation may move exactly those nodes\n\t\t// that are changed by the attribute operation. In this case we get common part and difference part in the usual way.\n\t\tdifference = range.getDifference( moveRange );\n\t\tcommon = range.getIntersection( moveRange );\n\t} else {\n\t\t// In any other situation we assume that original range is different than move range, that is that move operation\n\t\t// moves other nodes that attribute operation change. Even if the moved range is deep inside in the original range.\n\t\t//\n\t\t// Note that this is different than in `.getIntersection` (we would get a common part in that case) and different\n\t\t// than `.getDifference` (we would get two ranges).\n\t\tdifference = [ range ];\n\t}\n\n\tconst result: Array<Range> = [];\n\n\t// The default behaviour of `_getTransformedByMove` might get wrong results for difference part, though, so\n\t// we do it by hand.\n\tfor ( let diff of difference ) {\n\t\t// First, transform the range by removing moved nodes. Since this is a difference, this is safe, `null` won't be returned\n\t\t// as the range is different than the moved range.\n\t\tdiff = diff._getTransformedByDeletion( moveOp.sourcePosition, moveOp.howMany )!;\n\n\t\t// Transform also `targetPosition`.\n\t\tconst targetPosition = moveOp.getMovedRangeStart();\n\n\t\t// Spread the range only if moved nodes are inserted only between the top-level nodes of the `diff` range.\n\t\tconst spread = diff.start.hasSameParentAs( targetPosition );\n\n\t\t// Transform by insertion of moved nodes.\n\t\tconst diffs = diff._getTransformedByInsertion( targetPosition, moveOp.howMany, spread );\n\n\t\tresult.push( ...diffs );\n\t}\n\n\t// Common part can be simply transformed by the move operation. This is because move operation will not target to\n\t// that common part (the operation would have to target inside its own moved range).\n\tif ( common ) {\n\t\tresult.push(\n\t\t\tcommon._getTransformedByMove( moveOp.sourcePosition, moveOp.targetPosition, moveOp.howMany, false )[ 0 ]\n\t\t);\n\t}\n\n\treturn result;\n}\n\nsetTransformation( AttributeOperation, SplitOperation, ( a, b ) => {\n\t// Case 1:\n\t//\n\t// Split node is the last node in `AttributeOperation#range`.\n\t// `AttributeOperation#range` needs to be expanded to include the new (split) node.\n\t//\n\t// Attribute `type` to be changed to `numbered` but the `listItem` is split.\n\t// <listItem type=\"bulleted\">foobar</listItem>\n\t//\n\t// After split:\n\t// <listItem type=\"bulleted\">foo</listItem><listItem type=\"bulleted\">bar</listItem>\n\t//\n\t// After attribute change:\n\t// <listItem type=\"numbered\">foo</listItem><listItem type=\"numbered\">foo</listItem>\n\t//\n\tif ( a.range.end.isEqual( b.insertionPosition ) ) {\n\t\tif ( !b.graveyardPosition ) {\n\t\t\ta.range.end.offset++;\n\t\t}\n\n\t\treturn [ a ];\n\t}\n\n\t// Case 2:\n\t//\n\t// Split position is inside `AttributeOperation#range`, at the same level, so the nodes to change are\n\t// not going to make a flat range.\n\t//\n\t// Content with range-to-change and split position:\n\t// <p>Fo[zb^a]r</p>\n\t//\n\t// After split:\n\t// <p>Fozb</p><p>ar</p>\n\t//\n\t// Make two separate ranges containing all nodes to change:\n\t// <p>Fo[zb]</p><p>[a]r</p>\n\t//\n\tif ( a.range.start.hasSameParentAs( b.splitPosition ) && a.range.containsPosition( b.splitPosition ) ) {\n\t\tconst secondPart = a.clone();\n\n\t\tsecondPart.range = new Range(\n\t\t\tb.moveTargetPosition.clone(),\n\t\t\ta.range.end._getCombined( b.splitPosition, b.moveTargetPosition )\n\t\t);\n\n\t\t( a.range as any ).end = b.splitPosition.clone();\n\t\ta.range.end.stickiness = 'toPrevious';\n\n\t\treturn [ a, secondPart ];\n\t}\n\n\t// The default case.\n\t//\n\ta.range = a.range._getTransformedBySplitOperation( b );\n\n\treturn [ a ];\n} );\n\nsetTransformation( InsertOperation, AttributeOperation, ( a, b ) => {\n\tconst result: Array<Operation> = [ a ];\n\n\t// Case 1:\n\t//\n\t// The attribute operation range includes the position where nodes were inserted.\n\t// There are two possible scenarios: the inserted nodes were text and they should receive attributes or\n\t// the inserted nodes were elements and they should not receive attributes.\n\t//\n\t// This is a mirror scenario to the one described in `AttributeOperation` x `InsertOperation` transformation,\n\t// although this case is a little less complicated. In this case we simply need to change attributes of the\n\t// inserted nodes and that's it.\n\t//\n\tif ( a.shouldReceiveAttributes && a.position.hasSameParentAs( b.range.start ) && b.range.containsPosition( a.position ) ) {\n\t\tconst op = _getComplementaryAttributeOperations( a, b.key, b.newValue );\n\n\t\tif ( op ) {\n\t\t\tresult.push( op );\n\t\t}\n\t}\n\n\t// The default case is: do nothing.\n\t// `AttributeOperation` does not change the model tree structure so `InsertOperation` does not need to be changed.\n\t//\n\treturn result;\n} );\n\nsetTransformation( InsertOperation, InsertOperation, ( a, b, context ) => {\n\t// Case 1:\n\t//\n\t// Two insert operations insert nodes at the same position. Since they are the same, it needs to be decided\n\t// what will be the order of inserted nodes. However, there is no additional information to help in that\n\t// decision. Also, when `b` will be transformed by `a`, the same order must be maintained.\n\t//\n\t// To achieve that, we will check if the operation is strong.\n\t// If it is, it won't get transformed. If it is not, it will be moved.\n\t//\n\tif ( a.position.isEqual( b.position ) && context.aIsStrong ) {\n\t\treturn [ a ];\n\t}\n\n\t// The default case.\n\t//\n\ta.position = a.position._getTransformedByInsertOperation( b );\n\n\treturn [ a ];\n} );\n\nsetTransformation( InsertOperation, MoveOperation, ( a, b ) => {\n\t// The default case.\n\t//\n\ta.position = a.position._getTransformedByMoveOperation( b );\n\n\treturn [ a ];\n} );\n\nsetTransformation( InsertOperation, SplitOperation, ( a, b ) => {\n\t// The default case.\n\t//\n\ta.position = a.position._getTransformedBySplitOperation( b );\n\n\treturn [ a ];\n} );\n\nsetTransformation( InsertOperation, MergeOperation, ( a, b ) => {\n\ta.position = a.position._getTransformedByMergeOperation( b );\n\n\treturn [ a ];\n} );\n\n// -----------------------\n\nsetTransformation( MarkerOperation, InsertOperation, ( a, b ) => {\n\tif ( a.oldRange ) {\n\t\ta.oldRange = a.oldRange._getTransformedByInsertOperation( b )[ 0 ];\n\t}\n\n\tif ( a.newRange ) {\n\t\ta.newRange = a.newRange._getTransformedByInsertOperation( b )[ 0 ];\n\t}\n\n\treturn [ a ];\n} );\n\nsetTransformation( MarkerOperation, MarkerOperation, ( a, b, context ) => {\n\tif ( a.name == b.name ) {\n\t\tif ( context.aIsStrong ) {\n\t\t\ta.oldRange = b.newRange ? b.newRange.clone() : null;\n\t\t} else {\n\t\t\treturn [ new NoOperation( 0 ) ];\n\t\t}\n\t}\n\n\treturn [ a ];\n} );\n\nsetTransformation( MarkerOperation, MergeOperation, ( a, b ) => {\n\tif ( a.oldRange ) {\n\t\ta.oldRange = a.oldRange._getTransformedByMergeOperation( b );\n\t}\n\n\tif ( a.newRange ) {\n\t\ta.newRange = a.newRange._getTransformedByMergeOperation( b );\n\t}\n\n\treturn [ a ];\n} );\n\nsetTransformation( MarkerOperation, MoveOperation, ( a, b, context ) => {\n\tif ( a.oldRange ) {\n\t\ta.oldRange = Range._createFromRanges( a.oldRange._getTransformedByMoveOperation( b ) );\n\t}\n\n\tif ( a.newRange ) {\n\t\tif ( context.abRelation ) {\n\t\t\tconst aNewRange = Range._createFromRanges( a.newRange._getTransformedByMoveOperation( b ) );\n\n\t\t\tif ( context.abRelation.side == 'left' && b.targetPosition.isEqual( a.newRange.start ) ) {\n\t\t\t\t( a.newRange as any ).end = aNewRange.end;\n\t\t\t\t( a.newRange.start as any ).path = context.abRelation.path;\n\n\t\t\t\treturn [ a ];\n\t\t\t} else if ( context.abRelation.side == 'right' && b.targetPosition.isEqual( a.newRange.end ) ) {\n\t\t\t\t( a.newRange as any ).start = aNewRange.start;\n\t\t\t\t( a.newRange.end as any ).path = context.abRelation.path;\n\n\t\t\t\treturn [ a ];\n\t\t\t}\n\t\t}\n\n\t\ta.newRange = Range._createFromRanges( a.newRange._getTransformedByMoveOperation( b ) );\n\t}\n\n\treturn [ a ];\n} );\n\nsetTransformation( MarkerOperation, SplitOperation, ( a, b, context ) => {\n\tif ( a.oldRange ) {\n\t\ta.oldRange = a.oldRange._getTransformedBySplitOperation( b );\n\t}\n\n\tif ( a.newRange ) {\n\t\tif ( context.abRelation ) {\n\t\t\tconst aNewRange = a.newRange._getTransformedBySplitOperation( b );\n\n\t\t\tif ( a.newRange.start.isEqual( b.splitPosition ) && context.abRelation.wasStartBeforeMergedElement ) {\n\t\t\t\t( a.newRange as any ).start = Position._createAt( b.insertionPosition );\n\t\t\t} else if ( a.newRange.start.isEqual( b.splitPosition ) && !context.abRelation.wasInLeftElement ) {\n\t\t\t\t( a.newRange as any ).start = Position._createAt( b.moveTargetPosition );\n\t\t\t}\n\n\t\t\tif ( a.newRange.end.isEqual( b.splitPosition ) && context.abRelation.wasInRightElement ) {\n\t\t\t\t( a.newRange as any ).end = Position._createAt( b.moveTargetPosition );\n\t\t\t} else if ( a.newRange.end.isEqual( b.splitPosition ) && context.abRelation.wasEndBeforeMergedElement ) {\n\t\t\t\t( a.newRange as any ).end = Position._createAt( b.insertionPosition );\n\t\t\t} else {\n\t\t\t\t( a.newRange as any ).end = aNewRange.end;\n\t\t\t}\n\n\t\t\treturn [ a ];\n\t\t}\n\n\t\ta.newRange = a.newRange._getTransformedBySplitOperation( b );\n\t}\n\n\treturn [ a ];\n} );\n\n// -----------------------\n\nsetTransformation( MergeOperation, InsertOperation, ( a, b ) => {\n\tif ( a.sourcePosition.hasSameParentAs( b.position ) ) {\n\t\ta.howMany += b.howMany;\n\t}\n\n\ta.sourcePosition = a.sourcePosition._getTransformedByInsertOperation( b );\n\ta.targetPosition = a.targetPosition._getTransformedByInsertOperation( b );\n\n\treturn [ a ];\n} );\n\nsetTransformation( MergeOperation, MergeOperation, ( a, b, context ) => {\n\t// Case 1:\n\t//\n\t// Same merge operations.\n\t//\n\t// Both operations have same source and target positions. So the element already got merged and there is\n\t// theoretically nothing to do.\n\t//\n\tif ( a.sourcePosition.isEqual( b.sourcePosition ) && a.targetPosition.isEqual( b.targetPosition ) ) {\n\t\t// There are two ways that we can provide a do-nothing operation.\n\t\t//\n\t\t// First is simply a NoOperation instance. We will use it if `b` operation was not undone.\n\t\t//\n\t\t// Second is a merge operation that has the source operation in the merged element - in the graveyard -\n\t\t// same target position and `howMany` equal to `0`. So it is basically merging an empty element from graveyard\n\t\t// which is almost the same as NoOperation.\n\t\t//\n\t\t// This way the merge operation can be later transformed by split operation\n\t\t// to provide correct undo. This will be used if `b` operation was undone (only then it is correct).\n\t\t//\n\t\tif ( !context.bWasUndone ) {\n\t\t\treturn [ new NoOperation( 0 ) ];\n\t\t} else {\n\t\t\tconst path = b.graveyardPosition.path.slice();\n\t\t\tpath.push( 0 );\n\n\t\t\ta.sourcePosition = new Position( b.graveyardPosition.root, path );\n\t\t\ta.howMany = 0;\n\n\t\t\treturn [ a ];\n\t\t}\n\t}\n\n\t// Case 2:\n\t//\n\t// Same merge source position but different target position.\n\t//\n\t// This can happen during collaboration. For example, if one client merged a paragraph to the previous paragraph\n\t// and the other person removed that paragraph and merged the same paragraph to something before:\n\t//\n\t// Client A:\n\t// <p>Foo</p><p>Bar</p><p>[]Xyz</p>\n\t// <p>Foo</p><p>BarXyz</p>\n\t//\n\t// Client B:\n\t// <p>Foo</p>[<p>Bar</p>]<p>Xyz</p>\n\t// <p>Foo</p><p>[]Xyz</p>\n\t// <p>FooXyz</p>\n\t//\n\t// In this case we need to decide where finally \"Xyz\" will land:\n\t//\n\t// <p>FooXyz</p> graveyard: <p>Bar</p>\n\t// <p>Foo</p> graveyard: <p>BarXyz</p>\n\t//\n\t// Let's move it in a way so that a merge operation that does not target to graveyard is more important so that\n\t// nodes does not end up in the graveyard. It makes sense. Both for Client A and for Client B \"Xyz\" finally did not\n\t// end up in the graveyard (see above).\n\t//\n\t// If neither or both operations point to graveyard, then let `aIsStrong` decide.\n\t//\n\tif (\n\t\ta.sourcePosition.isEqual( b.sourcePosition ) && !a.targetPosition.isEqual( b.targetPosition ) &&\n\t\t!context.bWasUndone && context.abRelation != 'splitAtSource'\n\t) {\n\t\tconst aToGraveyard = a.targetPosition.root.rootName == '$graveyard';\n\t\tconst bToGraveyard = b.targetPosition.root.rootName == '$graveyard';\n\n\t\t// If `aIsWeak` it means that `a` points to graveyard while `b` doesn't. Don't move nodes then.\n\t\tconst aIsWeak = aToGraveyard && !bToGraveyard;\n\n\t\t// If `bIsWeak` it means that `b` points to graveyard while `a` doesn't. Force moving nodes then.\n\t\tconst bIsWeak = bToGraveyard && !aToGraveyard;\n\n\t\t// Force move if `b` is weak or neither operation is weak but `a` is stronger through `context.aIsStrong`.\n\t\tconst forceMove = bIsWeak || ( !aIsWeak && context.aIsStrong );\n\n\t\tif ( forceMove ) {\n\t\t\tconst sourcePosition = b.targetPosition._getTransformedByMergeOperation( b );\n\t\t\tconst targetPosition = a.targetPosition._getTransformedByMergeOperation( b );\n\n\t\t\treturn [ new MoveOperation( sourcePosition, a.howMany, targetPosition, 0 ) ];\n\t\t} else {\n\t\t\treturn [ new NoOperation( 0 ) ];\n\t\t}\n\t}\n\n\t// The default case.\n\t//\n\tif ( a.sourcePosition.hasSameParentAs( b.targetPosition ) ) {\n\t\ta.howMany += b.howMany;\n\t}\n\n\ta.sourcePosition = a.sourcePosition._getTransformedByMergeOperation( b );\n\ta.targetPosition = a.targetPosition._getTransformedByMergeOperation( b );\n\n\t// Handle positions in graveyard.\n\t// If graveyard positions are same and `a` operation is strong - do not transform.\n\tif ( !a.graveyardPosition.isEqual( b.graveyardPosition ) || !context.aIsStrong ) {\n\t\ta.graveyardPosition = a.graveyardPosition._getTransformedByMergeOperation( b );\n\t}\n\n\treturn [ a ];\n} );\n\nsetTransformation( MergeOperation, MoveOperation, ( a, b, context ) => {\n\t// Case 1:\n\t//\n\t// The element to merge got removed.\n\t//\n\t// Merge operation does support merging elements which are not siblings. So it would not be a problem\n\t// from technical point of view. However, if the element was removed, the intention of the user deleting it\n\t// was to have it all deleted, together with its children. From user experience point of view, moving back the\n\t// removed nodes might be unexpected. This means that in this scenario we will block the merging.\n\t//\n\t// The exception of this rule would be if the remove operation was later undone.\n\t//\n\tconst removedRange = Range._createFromPositionAndShift( b.sourcePosition, b.howMany );\n\n\tif ( b.type == 'remove' && !context.bWasUndone && !context.forceWeakRemove ) {\n\t\tif ( a.deletionPosition.hasSameParentAs( b.sourcePosition ) && removedRange.containsPosition( a.sourcePosition ) ) {\n\t\t\treturn [ new NoOperation( 0 ) ];\n\t\t}\n\t}\n\n\t// The default case.\n\t//\n\tif ( a.sourcePosition.hasSameParentAs( b.targetPosition ) ) {\n\t\ta.howMany += b.howMany;\n\t}\n\n\tif ( a.sourcePosition.hasSameParentAs( b.sourcePosition ) ) {\n\t\ta.howMany -= b.howMany;\n\t}\n\n\ta.sourcePosition = a.sourcePosition._getTransformedByMoveOperation( b );\n\ta.targetPosition = a.targetPosition._getTransformedByMoveOperation( b );\n\n\t// `MergeOperation` graveyard position is like `MoveOperation` target position. It is a position where element(s) will\n\t// be moved. Like in other similar cases, we need to consider the scenario when those positions are same.\n\t// Here, we will treat `MergeOperation` like it is always strong (see `InsertOperation` x `InsertOperation` for comparison).\n\t// This means that we won't transform graveyard position if it is equal to move operation target position.\n\tif ( !a.graveyardPosition.isEqual( b.targetPosition ) ) {\n\t\ta.graveyardPosition = a.graveyardPosition._getTransformedByMoveOperation( b );\n\t}\n\n\treturn [ a ];\n} );\n\nsetTransformation( MergeOperation, SplitOperation, ( a, b, context ) => {\n\tif ( b.graveyardPosition ) {\n\t\t// If `b` operation defines graveyard position, a node from graveyard will be moved. This means that we need to\n\t\t// transform `a.graveyardPosition` accordingly.\n\t\ta.graveyardPosition = a.graveyardPosition._getTransformedByDeletion( b.graveyardPosition, 1 )!;\n\n\t\t// This is a scenario foreseen in `MergeOperation` x `MergeOperation`, with two identical merge operations.\n\t\t//\n\t\t// So, there was `MergeOperation` x `MergeOperation` transformation earlier. Now, `a` is a merge operation which\n\t\t// source position is in graveyard. Interestingly, split operation wants to use the node to be merged by `a`. This\n\t\t// means that `b` is undoing that merge operation from earlier, which caused `a` to be in graveyard.\n\t\t//\n\t\t// If that's the case, at this point, we will only \"fix\" `a.howMany`. It was earlier set to `0` in\n\t\t// `MergeOperation` x `MergeOperation` transformation. Later transformations in this function will change other\n\t\t// properties.\n\t\t//\n\t\tif ( a.deletionPosition.isEqual( b.graveyardPosition ) ) {\n\t\t\ta.howMany = b.howMany;\n\t\t}\n\t}\n\n\t// Case 1:\n\t//\n\t// Merge operation moves nodes to the place where split happens.\n\t// This is a classic situation when there are two paragraphs, and there is a split (enter) after the first\n\t// paragraph and there is a merge (delete) at the beginning of the second paragraph:\n\t//\n\t// <p>Foo{}</p><p>[]Bar</p>.\n\t//\n\t// Split is after `Foo`, while merge is from `Bar` to the end of `Foo`.\n\t//\n\t// State after split:\n\t// <p>Foo</p><p></p><p>Bar</p>\n\t//\n\t// Now, `Bar` should be merged to the new paragraph:\n\t// <p>Foo</p><p>Bar</p>\n\t//\n\t// Instead of merging it to the original paragraph:\n\t// <p>FooBar</p><p></p>\n\t//\n\t// This means that `targetPosition` needs to be transformed. This is the default case though.\n\t// For example, if the split would be after `F`, `targetPosition` should also be transformed.\n\t//\n\t// There are three exceptions, though, when we want to keep `targetPosition` as it was.\n\t//\n\t// First exception is when the merge target position is inside an element (not at the end, as usual). This\n\t// happens when the merge operation earlier was transformed by \"the same\" merge operation. If merge operation\n\t// targets inside the element we want to keep the original target position (and not transform it) because\n\t// we have additional context telling us that we want to merge to the original element. We can check if the\n\t// merge operation points inside element by checking what is `SplitOperation#howMany`. Since merge target position\n\t// is same as split position, if `howMany` is non-zero, it means that the merge target position is inside an element.\n\t//\n\t// Second exception is when the element to merge is in the graveyard and split operation uses it. In that case\n\t// if target position would be transformed, the merge operation would target at the source position:\n\t//\n\t// root: <p>Foo</p>\t\t\t\tgraveyard: <p></p>\n\t//\n\t// SplitOperation: root [ 0, 3 ] using graveyard [ 0 ] (howMany = 0)\n\t// MergeOperation: graveyard [ 0, 0 ] -> root [ 0, 3 ] (howMany = 0)\n\t//\n\t// Since split operation moves the graveyard node back to the root, the merge operation source position changes.\n\t// We would like to merge from the empty <p> to the \"Foo\" <p>:\n\t//\n\t// root: <p>Foo</p><p></p>\t\t\tgraveyard:\n\t//\n\t// MergeOperation#sourcePosition = root [ 1, 0 ]\n\t//\n\t// If `targetPosition` is transformed, it would become root [ 1, 0 ] as well. It has to be kept as it was.\n\t//\n\t// Third exception is connected with relations. If this happens during undo and we have explicit information\n\t// that target position has not been affected by the operation which is undone by this split then this split should\n\t// not move the target position either.\n\t//\n\tif ( a.targetPosition.isEqual( b.splitPosition ) ) {\n\t\tconst mergeInside = b.howMany != 0;\n\t\tconst mergeSplittingElement = b.graveyardPosition && a.deletionPosition.isEqual( b.graveyardPosition );\n\n\t\tif ( mergeInside || mergeSplittingElement || context.abRelation == 'mergeTargetNotMoved' ) {\n\t\t\ta.sourcePosition = a.sourcePosition._getTransformedBySplitOperation( b );\n\n\t\t\treturn [ a ];\n\t\t}\n\t}\n\n\t// Case 2:\n\t//\n\t// Merge source is at the same position as split position. This sometimes happen, mostly during undo.\n\t// The decision here is mostly to choose whether merge source position should stay where it is (so it will be at the end of the\n\t// split element) or should be move to the beginning of the new element.\n\t//\n\tif ( a.sourcePosition.isEqual( b.splitPosition ) ) {\n\t\t// Use context to check if `SplitOperation` is not undoing a merge operation, that didn't change the `a` operation.\n\t\t// This scenario happens the undone merge operation moved nodes at the source position of `a` operation.\n\t\t// In that case `a` operation source position should stay where it is.\n\t\tif ( context.abRelation == 'mergeSourceNotMoved' ) {\n\t\t\ta.howMany = 0;\n\t\t\ta.targetPosition = a.targetPosition._getTransformedBySplitOperation( b );\n\n\t\t\treturn [ a ];\n\t\t}\n\n\t\t// This merge operation might have been earlier transformed by a merge operation which both merged the same element.\n\t\t// See that case in `MergeOperation` x `MergeOperation` transformation. In that scenario, if the merge operation has been undone,\n\t\t// the special case is not applied.\n\t\t//\n\t\t// Now, the merge operation is transformed by the split which has undone that previous merge operation.\n\t\t// So now we are fixing situation which was skipped in `MergeOperation` x `MergeOperation` case.\n\t\t//\n\t\tif ( context.abRelation == 'mergeSameElement' || a.sourcePosition.offset > 0 ) {\n\t\t\ta.sourcePosition = b.moveTargetPosition.clone();\n\t\t\ta.targetPosition = a.targetPosition._getTransformedBySplitOperation( b );\n\n\t\t\treturn [ a ];\n\t\t}\n\t}\n\n\t// The default case.\n\t//\n\tif ( a.sourcePosition.hasSameParentAs( b.splitPosition ) ) {\n\t\ta.howMany = b.splitPosition.offset;\n\t}\n\n\ta.sourcePosition = a.sourcePosition._getTransformedBySplitOperation( b );\n\ta.targetPosition = a.targetPosition._getTransformedBySplitOperation( b );\n\n\treturn [ a ];\n} );\n\n// -----------------------\n\nsetTransformation( MoveOperation, InsertOperation, ( a, b ) => {\n\tconst moveRange = Range._createFromPositionAndShift( a.sourcePosition, a.howMany );\n\tconst transformed = moveRange._getTransformedByInsertOperation( b, false )[ 0 ];\n\n\ta.sourcePosition = transformed.start;\n\ta.howMany = transformed.end.offset - transformed.start.offset;\n\n\t// See `InsertOperation` x `MoveOperation` transformation for details on this case.\n\t//\n\t// In summary, both operations point to the same place, so the order of nodes needs to be decided.\n\t// `MoveOperation` is considered weaker, so it is always transformed, unless there was a certain relation\n\t// between operations.\n\t//\n\tif ( !a.targetPosition.isEqual( b.position ) ) {\n\t\ta.targetPosition = a.targetPosition._getTransformedByInsertOperation( b );\n\t}\n\n\treturn [ a ];\n} );\n\nsetTransformation( MoveOperation, MoveOperation, ( a, b, context ) => {\n\t//\n\t// Setting and evaluating some variables that will be used in special cases and default algorithm.\n\t//\n\t// Create ranges from `MoveOperations` properties.\n\tconst rangeA = Range._createFromPositionAndShift( a.sourcePosition, a.howMany );\n\tconst rangeB = Range._createFromPositionAndShift( b.sourcePosition, b.howMany );\n\n\t// Assign `context.aIsStrong` to a different variable, because the value may change during execution of\n\t// this algorithm and we do not want to override original `context.aIsStrong` that will be used in later transformations.\n\tlet aIsStrong = context.aIsStrong;\n\n\t// This will be used to decide the order of nodes if both operations target at the same position.\n\t// By default, use strong/weak operation mechanism.\n\tlet insertBefore = !context.aIsStrong;\n\n\t// If the relation is set, then use it to decide nodes order.\n\tif ( context.abRelation == 'insertBefore' || context.baRelation == 'insertAfter' ) {\n\t\tinsertBefore = true;\n\t} else if ( context.abRelation == 'insertAfter' || context.baRelation == 'insertBefore' ) {\n\t\tinsertBefore = false;\n\t}\n\n\t// `a.targetPosition` could be affected by the `b` operation. We will transform it.\n\tlet newTargetPosition;\n\n\tif ( a.targetPosition.isEqual( b.targetPosition ) && insertBefore ) {\n\t\tnewTargetPosition = a.targetPosition._getTransformedByDeletion(\n\t\t\tb.sourcePosition,\n\t\t\tb.howMany\n\t\t);\n\t} else {\n\t\tnewTargetPosition = a.targetPosition._getTransformedByMove(\n\t\t\tb.sourcePosition,\n\t\t\tb.targetPosition,\n\t\t\tb.howMany\n\t\t);\n\t}\n\n\t//\n\t// Special case #1 + mirror.\n\t//\n\t// Special case when both move operations' target positions are inside nodes that are\n\t// being moved by the other move operation. So in other words, we move ranges into inside of each other.\n\t// This case can't be solved reasonably (on the other hand, it should not happen often).\n\tif ( _moveTargetIntoMovedRange( a, b ) && _moveTargetIntoMovedRange( b, a ) ) {\n\t\t// Instead of transforming operation, we return a reverse of the operation that we transform by.\n\t\t// So when the results of this \"transformation\" will be applied, `b` MoveOperation will get reversed.\n\t\treturn [ b.getReversed() ];\n\t}\n\t//\n\t// End of special case #1.\n\t//\n\n\t//\n\t// Special case #2.\n\t//\n\t// Check if `b` operation targets inside `rangeA`.\n\tconst bTargetsToA = rangeA.containsPosition( b.targetPosition );\n\n\t// If `b` targets to `rangeA` and `rangeA` contains `rangeB`, `b` operation has no influence on `a` operation.\n\t// You might say that operation `b` is captured inside operation `a`.\n\tif ( bTargetsToA && rangeA.containsRange( rangeB, true ) ) {\n\t\t// There is a mini-special case here, where `rangeB` is on other level than `rangeA`. That's why\n\t\t// we need to transform `a` operation anyway.\n\t\t( rangeA as any ).start = rangeA.start._getTransformedByMove( b.sourcePosition, b.targetPosition, b.howMany );\n\t\t( rangeA as any ).end = rangeA.end._getTransformedByMove( b.sourcePosition, b.targetPosition, b.howMany );\n\n\t\treturn _makeMoveOperationsFromRanges( [ rangeA ], newTargetPosition! );\n\t}\n\n\t//\n\t// Special case #2 mirror.\n\t//\n\tconst aTargetsToB = rangeB.containsPosition( a.targetPosition );\n\n\tif ( aTargetsToB && rangeB.containsRange( rangeA, true ) ) {\n\t\t// `a` operation is \"moved together\" with `b` operation.\n\t\t// Here, just move `rangeA` \"inside\" `rangeB`.\n\t\t( rangeA as any ).start = rangeA.start._getCombined( b.sourcePosition, b.getMovedRangeStart() );\n\t\t( rangeA as any ).end = rangeA.end._getCombined( b.sourcePosition, b.getMovedRangeStart() );\n\n\t\treturn _makeMoveOperationsFromRanges( [ rangeA ], newTargetPosition! );\n\t}\n\t//\n\t// End of special case #2.\n\t//\n\n\t//\n\t// Special case #3 + mirror.\n\t//\n\t// `rangeA` has a node which is an ancestor of `rangeB`. In other words, `rangeB` is inside `rangeA`\n\t// but not on the same tree level. In such case ranges have common part but we have to treat it\n\t// differently, because in such case those ranges are not really conflicting and should be treated like\n\t// two separate ranges. Also we have to discard two difference parts.\n\tconst aCompB = compareArrays( a.sourcePosition.getParentPath(), b.sourcePosition.getParentPath() );\n\n\tif ( aCompB == 'prefix' || aCompB == 'extension' ) {\n\t\t// Transform `rangeA` by `b` operation and make operation out of it, and that's all.\n\t\t// Note that this is a simplified version of default case, but here we treat the common part (whole `rangeA`)\n\t\t// like a one difference part.\n\t\t( rangeA as any ).start = rangeA.start._getTransformedByMove( b.sourcePosition, b.targetPosition, b.howMany );\n\t\t( rangeA as any ).end = rangeA.end._getTransformedByMove( b.sourcePosition, b.targetPosition, b.howMany );\n\n\t\treturn _makeMoveOperationsFromRanges( [ rangeA ], newTargetPosition! );\n\t}\n\t//\n\t// End of special case #3.\n\t//\n\n\t//\n\t// Default case - ranges are on the same level or are not connected with each other.\n\t//\n\t// Modifier for default case.\n\t// Modifies `aIsStrong` flag in certain conditions.\n\t//\n\t// If only one of operations is a remove operation, we force remove operation to be the \"stronger\" one\n\t// to provide more expected results.\n\tif ( a.type == 'remove' && b.type != 'remove' && !context.aWasUndone && !context.forceWeakRemove ) {\n\t\taIsStrong = true;\n\t} else if ( a.type != 'remove' && b.type == 'remove' && !context.bWasUndone && !context.forceWeakRemove ) {\n\t\taIsStrong = false;\n\t}\n\n\t// Handle operation's source ranges - check how `rangeA` is affected by `b` operation.\n\t// This will aggregate transformed ranges.\n\tconst ranges = [];\n\n\t// Get the \"difference part\" of `a` operation source range.\n\t// This is an array with one or two ranges. Two ranges if `rangeB` is inside `rangeA`.\n\tconst difference = rangeA.getDifference( rangeB );\n\n\tfor ( const range of difference ) {\n\t\t// Transform those ranges by `b` operation. For example if `b` moved range from before those ranges, fix those ranges.\n\t\t( range as any ).start = range.start._getTransformedByDeletion( b.sourcePosition, b.howMany );\n\t\t( range as any ).end = range.end._getTransformedByDeletion( b.sourcePosition, b.howMany );\n\n\t\t// If `b` operation targets into `rangeA` on the same level, spread `rangeA` into two ranges.\n\t\tconst shouldSpread = compareArrays( range.start.getParentPath(), b.getMovedRangeStart().getParentPath() ) == 'same';\n\t\tconst newRanges = range._getTransformedByInsertion( b.getMovedRangeStart(), b.howMany, shouldSpread );\n\n\t\tranges.push( ...newRanges );\n\t}\n\n\t// Then, we have to manage the \"common part\" of both move ranges.\n\tconst common = rangeA.getIntersection( rangeB );\n\n\tif ( common !== null && aIsStrong ) {\n\t\t// Calculate the new position of that part of original range.\n\t\t( common as any ).start = common.start._getCombined( b.sourcePosition, b.getMovedRangeStart() );\n\t\t( common as any ).end = common.end._getCombined( b.sourcePosition, b.getMovedRangeStart() );\n\n\t\t// Take care of proper range order.\n\t\t//\n\t\t// Put `common` at appropriate place. Keep in mind that we are interested in original order.\n\t\t// Basically there are only three cases: there is zero, one or two difference ranges.\n\t\t//\n\t\t// If there is zero difference ranges, just push `common` in the array.\n\t\tif ( ranges.length === 0 ) {\n\t\t\tranges.push( common );\n\t\t}\n\t\t// If there is one difference range, we need to check whether common part was before it or after it.\n\t\telse if ( ranges.length == 1 ) {\n\t\t\tif ( rangeB.start.isBefore( rangeA.start ) || rangeB.start.isEqual( rangeA.start ) ) {\n\t\t\t\tranges.unshift( common );\n\t\t\t} else {\n\t\t\t\tranges.push( common );\n\t\t\t}\n\t\t}\n\t\t// If there are more ranges (which means two), put common part between them. This is the only scenario\n\t\t// where there could be two difference ranges so we don't have to make any comparisons.\n\t\telse {\n\t\t\tranges.splice( 1, 0, common );\n\t\t}\n\t}\n\n\tif ( ranges.length === 0 ) {\n\t\t// If there are no \"source ranges\", nothing should be changed.\n\t\t// Note that this can happen only if `aIsStrong == false` and `rangeA.isEqual( rangeB )`.\n\t\treturn [ new NoOperation( a.baseVersion ) ];\n\t}\n\n\treturn _makeMoveOperationsFromRanges( ranges, newTargetPosition! );\n} );\n\nsetTransformation( MoveOperation, SplitOperation, ( a, b, context ) => {\n\tlet newTargetPosition = a.targetPosition.clone();\n\n\t// Do not transform if target position is same as split insertion position and this split comes from undo.\n\t// This should be done on relations but it is too much work for now as it would require relations working in collaboration.\n\t// We need to make a decision how we will resolve such conflict and this is less harmful way.\n\tif ( !a.targetPosition.isEqual( b.insertionPosition ) || !b.graveyardPosition || context.abRelation == 'moveTargetAfter' ) {\n\t\tnewTargetPosition = a.targetPosition._getTransformedBySplitOperation( b );\n\t}\n\n\t// Case 1:\n\t//\n\t// Last element in the moved range got split.\n\t//\n\t// In this case the default range transformation will not work correctly as the element created by\n\t// split operation would be outside the range. The range to move needs to be fixed manually.\n\t//\n\tconst moveRange = Range._createFromPositionAndShift( a.sourcePosition, a.howMany );\n\n\tif ( moveRange.end.isEqual( b.insertionPosition ) ) {\n\t\t// Do it only if this is a \"natural\" split, not a one that comes from undo.\n\t\t// If this is undo split, only `targetPosition` needs to be changed (if the move is a remove).\n\t\tif ( !b.graveyardPosition ) {\n\t\t\ta.howMany++;\n\t\t}\n\n\t\ta.targetPosition = newTargetPosition;\n\n\t\treturn [ a ];\n\t}\n\n\t// Case 2:\n\t//\n\t// Split happened between the moved nodes. In this case two ranges to move need to be generated.\n\t//\n\t// Characters `ozba` are moved to the end of paragraph `Xyz` but split happened.\n\t// <p>F[oz|ba]r</p><p>Xyz</p>\n\t//\n\t// After split:\n\t// <p>F[oz</p><p>ba]r</p><p>Xyz</p>\n\t//\n\t// Correct ranges:\n\t// <p>F[oz]</p><p>[ba]r</p><p>Xyz</p>\n\t//\n\t// After move:\n\t// <p>F</p><p>r</p><p>Xyzozba</p>\n\t//\n\tif ( moveRange.start.hasSameParentAs( b.splitPosition ) && moveRange.containsPosition( b.splitPosition ) ) {\n\t\tlet rightRange = new Range( b.splitPosition, moveRange.end );\n\t\trightRange = rightRange._getTransformedBySplitOperation( b );\n\n\t\tconst ranges = [\n\t\t\tnew Range( moveRange.start, b.splitPosition ),\n\t\t\trightRange\n\t\t];\n\n\t\treturn _makeMoveOperationsFromRanges( ranges, newTargetPosition );\n\t}\n\n\t// Case 3:\n\t//\n\t// Move operation targets at the split position. We need to decide if the nodes should be inserted\n\t// at the end of the split element or at the beginning of the new element.\n\t//\n\tif ( a.targetPosition.isEqual( b.splitPosition ) && context.abRelation == 'insertAtSource' ) {\n\t\tnewTargetPosition = b.moveTargetPosition;\n\t}\n\n\t// Case 4:\n\t//\n\t// Move operation targets just after the split element. We need to decide if the nodes should be inserted\n\t// between two parts of split element, or after the new element.\n\t//\n\t// Split at `|`, while move operation moves `<p>Xyz</p>` and targets at `^`:\n\t// <p>Foo|bar</p>^<p>baz</p>\n\t// <p>Foo</p>^<p>bar</p><p>baz</p> or <p>Foo</p><p>bar</p>^<p>baz</p>?\n\t//\n\t// If there is no contextual information between operations (for example, they come from collaborative\n\t// editing), we don't want to put some unrelated content (move) between parts of related content (split parts).\n\t// However, if the split is from undo, in the past, the moved content might be targeting between the\n\t// split parts, meaning that was exactly user's intention:\n\t//\n\t// <p>Foo</p>^<p>bar</p>\t\t<--- original situation, in \"past\".\n\t// <p>Foobar</p>^\t\t\t\t<--- after merge target position is transformed.\n\t// <p>Foo|bar</p>^\t\t\t\t<--- then the merge is undone, and split happens, which leads us to current situation.\n\t//\n\t// In this case it is pretty clear that the intention was to put new paragraph between those nodes,\n\t// so we need to transform accordingly. We can detect this scenario thanks to relations.\n\t//\n\tif ( a.targetPosition.isEqual( b.insertionPosition ) && context.abRelation == 'insertBetween' ) {\n\t\tnewTargetPosition = a.targetPosition;\n\t}\n\n\t// The default case.\n\t//\n\tconst transformed = moveRange._getTransformedBySplitOperation( b );\n\tconst ranges = [ transformed ];\n\n\t// Case 5:\n\t//\n\t// Moved range contains graveyard element used by split operation. Add extra move operation to the result.\n\t//\n\tif ( b.graveyardPosition ) {\n\t\tconst movesGraveyardElement = moveRange.start.isEqual( b.graveyardPosition ) || moveRange.containsPosition( b.graveyardPosition );\n\n\t\tif ( a.howMany > 1 && movesGraveyardElement && !context.aWasUndone ) {\n\t\t\tranges.push( Range._createFromPositionAndShift( b.insertionPosition, 1 ) );\n\t\t}\n\t}\n\n\treturn _makeMoveOperationsFromRanges( ranges, newTargetPosition );\n} );\n\nsetTransformation( MoveOperation, MergeOperation, ( a, b, context ) => {\n\tconst movedRange = Range._createFromPositionAndShift( a.sourcePosition, a.howMany );\n\n\tif ( b.deletionPosition.hasSameParentAs( a.sourcePosition ) && movedRange.containsPosition( b.sourcePosition ) ) {\n\t\tif ( a.type == 'remove' && !context.forceWeakRemove ) {\n\t\t\t// Case 1:\n\t\t\t//\n\t\t\t// The element to remove got merged.\n\t\t\t//\n\t\t\t// Merge operation does support merging elements which are not siblings. So it would not be a problem\n\t\t\t// from technical point of view. However, if the element was removed, the intention of the user\n\t\t\t// deleting it was to have it all deleted. From user experience point of view, moving back the\n\t\t\t// removed nodes might be unexpected. This means that in this scenario we will reverse merging and remove the element.\n\t\t\t//\n\t\t\tif ( !context.aWasUndone ) {\n\t\t\t\tconst results = [];\n\n\t\t\t\tlet gyMoveSource = b.graveyardPosition.clone();\n\t\t\t\tlet splitNodesMoveSource = b.targetPosition._getTransformedByMergeOperation( b );\n\n\t\t\t\tif ( a.howMany > 1 ) {\n\t\t\t\t\tresults.push( new MoveOperation( a.sourcePosition, a.howMany - 1, a.targetPosition, 0 ) );\n\n\t\t\t\t\tgyMoveSource = gyMoveSource._getTransformedByMove( a.sourcePosition, a.targetPosition, a.howMany - 1 );\n\t\t\t\t\tsplitNodesMoveSource = splitNodesMoveSource._getTransformedByMove( a.sourcePosition, a.targetPosition, a.howMany - 1 );\n\t\t\t\t}\n\n\t\t\t\tconst gyMoveTarget = b.deletionPosition._getCombined( a.sourcePosition, a.targetPosition );\n\t\t\t\tconst gyMove = new MoveOperation( gyMoveSource, 1, gyMoveTarget, 0 );\n\n\t\t\t\tconst splitNodesMoveTargetPath = gyMove.getMovedRangeStart().path.slice();\n\t\t\t\tsplitNodesMoveTargetPath.push( 0 );\n\n\t\t\t\tconst splitNodesMoveTarget = new Position( gyMove.targetPosition.root, splitNodesMoveTargetPath );\n\t\t\t\tsplitNodesMoveSource = splitNodesMoveSource._getTransformedByMove( gyMoveSource, gyMoveTarget, 1 );\n\t\t\t\tconst splitNodesMove = new MoveOperation( splitNodesMoveSource, b.howMany, splitNodesMoveTarget, 0 );\n\n\t\t\t\tresults.push( gyMove );\n\t\t\t\tresults.push( splitNodesMove );\n\n\t\t\t\treturn results;\n\t\t\t}\n\t\t} else {\n\t\t\t// Case 2:\n\t\t\t//\n\t\t\t// The element to move got merged and it was the only element to move.\n\t\t\t// In this case just don't do anything, leave the node in the graveyard. Without special case\n\t\t\t// it would be a move operation that moves 0 nodes, so maybe it is better just to return no-op.\n\t\t\t//\n\t\t\tif ( a.howMany == 1 ) {\n\t\t\t\tif ( !context.bWasUndone ) {\n\t\t\t\t\treturn [ new NoOperation( 0 ) ];\n\t\t\t\t} else {\n\t\t\t\t\ta.sourcePosition = b.graveyardPosition.clone();\n\t\t\t\t\ta.targetPosition = a.targetPosition._getTransformedByMergeOperation( b );\n\n\t\t\t\t\treturn [ a ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// The default case.\n\t//\n\tconst moveRange = Range._createFromPositionAndShift( a.sourcePosition, a.howMany );\n\tconst transformed = moveRange._getTransformedByMergeOperation( b );\n\n\ta.sourcePosition = transformed.start;\n\ta.howMany = transformed.end.offset - transformed.start.offset;\n\ta.targetPosition = a.targetPosition._getTransformedByMergeOperation( b );\n\n\treturn [ a ];\n} );\n\n// -----------------------\n\nsetTransformation( RenameOperation, InsertOperation, ( a, b ) => {\n\ta.position = a.position._getTransformedByInsertOperation( b );\n\n\treturn [ a ];\n} );\n\nsetTransformation( RenameOperation, MergeOperation, ( a, b ) => {\n\t// Case 1:\n\t//\n\t// Element to rename got merged, so it was moved to `b.graveyardPosition`.\n\t//\n\tif ( a.position.isEqual( b.deletionPosition ) ) {\n\t\ta.position = b.graveyardPosition.clone();\n\t\ta.position.stickiness = 'toNext';\n\n\t\treturn [ a ];\n\t}\n\n\ta.position = a.position._getTransformedByMergeOperation( b );\n\n\treturn [ a ];\n} );\n\nsetTransformation( RenameOperation, MoveOperation, ( a, b ) => {\n\ta.position = a.position._getTransformedByMoveOperation( b );\n\n\treturn [ a ];\n} );\n\nsetTransformation( RenameOperation, RenameOperation, ( a, b, context ) => {\n\tif ( a.position.isEqual( b.position ) ) {\n\t\tif ( context.aIsStrong ) {\n\t\t\ta.oldName = b.newName;\n\t\t} else {\n\t\t\treturn [ new NoOperation( 0 ) ];\n\t\t}\n\t}\n\n\treturn [ a ];\n} );\n\nsetTransformation( RenameOperation, SplitOperation, ( a, b ) => {\n\t// Case 1:\n\t//\n\t// The element to rename has been split. In this case, the new element should be also renamed.\n\t//\n\t// User decides to change the paragraph to a list item:\n\t// <paragraph>Foobar</paragraph>\n\t//\n\t// However, in meantime, split happens:\n\t// <paragraph>Foo</paragraph><paragraph>bar</paragraph>\n\t//\n\t// As a result, rename both elements:\n\t// <listItem>Foo</listItem><listItem>bar</listItem>\n\t//\n\tconst renamePath = a.position.path;\n\tconst splitPath = b.splitPosition.getParentPath();\n\n\tif ( compareArrays( renamePath, splitPath ) == 'same' && !b.graveyardPosition ) {\n\t\tconst extraRename = new RenameOperation( a.position.getShiftedBy( 1 ), a.oldName, a.newName, 0 );\n\n\t\treturn [ a, extraRename ];\n\t}\n\n\t// The default case.\n\t//\n\ta.position = a.position._getTransformedBySplitOperation( b );\n\n\treturn [ a ];\n} );\n\n// -----------------------\n\nsetTransformation( RootAttributeOperation, RootAttributeOperation, ( a, b, context ) => {\n\tif ( a.root === b.root && a.key === b.key ) {\n\t\tif ( !context.aIsStrong || a.newValue === b.newValue ) {\n\t\t\treturn [ new NoOperation( 0 ) ];\n\t\t} else {\n\t\t\ta.oldValue = b.newValue;\n\t\t}\n\t}\n\n\treturn [ a ];\n} );\n\n// -----------------------\n\nsetTransformation( RootOperation, RootOperation, ( a, b ) => {\n\tif ( a.rootName === b.rootName && a.isAdd === b.isAdd ) {\n\t\treturn [ new NoOperation( 0 ) ];\n\t}\n\n\treturn [ a ];\n} );\n\n// -----------------------\n\nsetTransformation( SplitOperation, InsertOperation, ( a, b ) => {\n\t// The default case.\n\t//\n\tif ( a.splitPosition.hasSameParentAs( b.position ) && a.splitPosition.offset < b.position.offset ) {\n\t\ta.howMany += b.howMany;\n\t}\n\n\ta.splitPosition = a.splitPosition._getTransformedByInsertOperation( b );\n\ta.insertionPosition = a.insertionPosition._getTransformedByInsertOperation( b );\n\n\treturn [ a ];\n} );\n\nsetTransformation( SplitOperation, MergeOperation, ( a, b, context ) => {\n\t// Case 1:\n\t//\n\t// Split element got merged. If two different elements were merged, clients will have different content.\n\t//\n\t// Example. Merge at `{}`, split at `[]`:\n\t// <heading>Foo</heading>{}<paragraph>B[]ar</paragraph>\n\t//\n\t// On merge side it will look like this:\n\t// <heading>FooB[]ar</heading>\n\t// <heading>FooB</heading><heading>ar</heading>\n\t//\n\t// On split side it will look like this:\n\t// <heading>Foo</heading>{}<paragraph>B</paragraph><paragraph>ar</paragraph>\n\t// <heading>FooB</heading><paragraph>ar</paragraph>\n\t//\n\t// Clearly, the second element is different for both clients.\n\t//\n\t// We could use the removed merge element from graveyard as a split element but then clients would have a different\n\t// model state (in graveyard), because the split side client would still have an element in graveyard (removed by merge).\n\t//\n\t// To overcome this, in `SplitOperation` x `MergeOperation` transformation we will add additional `SplitOperation`\n\t// in the graveyard, which will actually clone the merged-and-deleted element. Then, that cloned element will be\n\t// used for splitting. Example below.\n\t//\n\t// Original state:\n\t// <heading>Foo</heading>{}<paragraph>B[]ar</paragraph>\n\t//\n\t// Merge side client:\n\t//\n\t// After merge:\n\t// <heading>FooB[]ar</heading> graveyard: <paragraph></paragraph>\n\t//\n\t// Extra split:\n\t// <heading>FooB[]ar</heading> graveyard: <paragraph></paragraph><paragraph></paragraph>\n\t//\n\t// Use the \"cloned\" element from graveyard:\n\t// <heading>FooB</heading><paragraph>ar</paragraph> graveyard: <paragraph></paragraph>\n\t//\n\t// Split side client:\n\t//\n\t// After split:\n\t// <heading>Foo</heading>{}<paragraph>B</paragraph><paragraph>ar</paragraph>\n\t//\n\t// After merge:\n\t// <heading>FooB</heading><paragraph>ar</paragraph> graveyard: <paragraph></paragraph>\n\t//\n\t// This special case scenario only applies if the original split operation clones the split element.\n\t// If the original split operation has `graveyardPosition` set, it all doesn't have sense because split operation\n\t// knows exactly which element it should use. So there would be no original problem with different contents.\n\t//\n\t// Additionally, the special case applies only if the merge wasn't already undone.\n\t//\n\tif ( !a.graveyardPosition && !context.bWasUndone && a.splitPosition.hasSameParentAs( b.sourcePosition ) ) {\n\t\tconst splitPath = b.graveyardPosition.path.slice();\n\t\tsplitPath.push( 0 );\n\n\t\tconst splitPosition = new Position( b.graveyardPosition.root, splitPath );\n\t\tconst insertionPosition = SplitOperation.getInsertionPosition( new Position( b.graveyardPosition.root, splitPath ) );\n\n\t\tconst additionalSplit = new SplitOperation( splitPosition, 0, insertionPosition, null, 0 );\n\n\t\ta.splitPosition = a.splitPosition._getTransformedByMergeOperation( b );\n\t\ta.insertionPosition = SplitOperation.getInsertionPosition( a.splitPosition );\n\t\ta.graveyardPosition = additionalSplit.insertionPosition.clone();\n\t\ta.graveyardPosition.stickiness = 'toNext';\n\n\t\treturn [ additionalSplit, a ];\n\t}\n\n\t// The default case.\n\t//\n\tif ( a.splitPosition.hasSameParentAs( b.deletionPosition ) && !a.splitPosition.isAfter( b.deletionPosition ) ) {\n\t\ta.howMany--;\n\t}\n\n\tif ( a.splitPosition.hasSameParentAs( b.targetPosition ) ) {\n\t\ta.howMany += b.howMany;\n\t}\n\n\ta.splitPosition = a.splitPosition._getTransformedByMergeOperation( b );\n\ta.insertionPosition = SplitOperation.getInsertionPosition( a.splitPosition );\n\n\tif ( a.graveyardPosition ) {\n\t\ta.graveyardPosition = a.graveyardPosition._getTransformedByMergeOperation( b );\n\t}\n\n\treturn [ a ];\n} );\n\nsetTransformation( SplitOperation, MoveOperation, ( a, b, context ) => {\n\tconst rangeToMove = Range._createFromPositionAndShift( b.sourcePosition, b.howMany );\n\n\tif ( a.graveyardPosition ) {\n\t\t// Case 1:\n\t\t//\n\t\t// Split operation graveyard node was moved. In this case move operation is stronger. Since graveyard element\n\t\t// is already moved to the correct position, we need to only move the nodes after the split position.\n\t\t// This will be done by `MoveOperation` instead of `SplitOperation`.\n\t\t//\n\t\tconst gyElementMoved = rangeToMove.start.isEqual( a.graveyardPosition ) || rangeToMove.containsPosition( a.graveyardPosition );\n\n\t\tif ( !context.bWasUndone && gyElementMoved ) {\n\t\t\tconst sourcePosition = a.splitPosition._getTransformedByMoveOperation( b );\n\n\t\t\tconst newParentPosition = a.graveyardPosition._getTransformedByMoveOperation( b );\n\t\t\tconst newTargetPath = newParentPosition.path.slice();\n\t\t\tnewTargetPath.push( 0 );\n\n\t\t\tconst newTargetPosition = new Position( newParentPosition.root, newTargetPath );\n\t\t\tconst moveOp = new MoveOperation( sourcePosition, a.howMany, newTargetPosition, 0 );\n\n\t\t\treturn [ moveOp ];\n\t\t}\n\n\t\ta.graveyardPosition = a.graveyardPosition._getTransformedByMoveOperation( b );\n\t}\n\n\t// Case 2:\n\t//\n\t// Split is at a position where nodes were moved.\n\t//\n\t// This is a scenario described in `MoveOperation` x `SplitOperation` transformation but from the\n\t// \"split operation point of view\".\n\t//\n\tconst splitAtTarget = a.splitPosition.isEqual( b.targetPosition );\n\n\tif ( splitAtTarget && ( context.baRelation == 'insertAtSource' || context.abRelation == 'splitBefore' ) ) {\n\t\ta.howMany += b.howMany;\n\t\ta.splitPosition = a.splitPosition._getTransformedByDeletion( b.sourcePosition, b.howMany )!;\n\t\ta.insertionPosition = SplitOperation.getInsertionPosition( a.splitPosition );\n\n\t\treturn [ a ];\n\t}\n\n\tif ( splitAtTarget && context.abRelation && context.abRelation.howMany ) {\n\t\tconst { howMany, offset } = context.abRelation;\n\n\t\ta.howMany += howMany;\n\t\ta.splitPosition = a.splitPosition.getShiftedBy( offset );\n\n\t\treturn [ a ];\n\t}\n\n\t// Case 3:\n\t//\n\t// If the split position is inside the moved range, we need to shift the split position to a proper place.\n\t// The position cannot be moved together with moved range because that would result in splitting of an incorrect element.\n\t//\n\t// Characters `bc` should be moved to the second paragraph while split position is between them:\n\t// <paragraph>A[b|c]d</paragraph><paragraph>Xyz</paragraph>\n\t//\n\t// After move, new split position is incorrect:\n\t// <paragraph>Ad</paragraph><paragraph>Xb|cyz</paragraph>\n\t//\n\t// Correct split position:\n\t// <paragraph>A|d</paragraph><paragraph>Xbcyz</paragraph>\n\t//\n\t// After split:\n\t// <paragraph>A</paragraph><paragraph>d</paragraph><paragraph>Xbcyz</paragraph>\n\t//\n\tif ( a.splitPosition.hasSameParentAs( b.sourcePosition ) && rangeToMove.containsPosition( a.splitPosition ) ) {\n\t\tconst howManyRemoved = b.howMany - ( a.splitPosition.offset - b.sourcePosition.offset );\n\t\ta.howMany -= howManyRemoved;\n\n\t\tif ( a.splitPosition.hasSameParentAs( b.targetPosition ) && a.splitPosition.offset < b.targetPosition.offset ) {\n\t\t\ta.howMany += b.howMany;\n\t\t}\n\n\t\ta.splitPosition = b.sourcePosition.clone();\n\t\ta.insertionPosition = SplitOperation.getInsertionPosition( a.splitPosition );\n\n\t\treturn [ a ];\n\t}\n\n\t// The default case.\n\t// Don't change `howMany` if move operation does not really move anything.\n\t//\n\tif ( !b.sourcePosition.isEqual( b.targetPosition ) ) {\n\t\tif ( a.splitPosition.hasSameParentAs( b.sourcePosition ) && a.splitPosition.offset <= b.sourcePosition.offset ) {\n\t\t\ta.howMany -= b.howMany;\n\t\t}\n\n\t\tif ( a.splitPosition.hasSameParentAs( b.targetPosition ) && a.splitPosition.offset < b.targetPosition.offset ) {\n\t\t\ta.howMany += b.howMany;\n\t\t}\n\t}\n\n\t// Change position stickiness to force a correct transformation.\n\ta.splitPosition.stickiness = 'toNone';\n\ta.splitPosition = a.splitPosition._getTransformedByMoveOperation( b );\n\ta.splitPosition.stickiness = 'toNext';\n\n\tif ( a.graveyardPosition ) {\n\t\ta.insertionPosition = a.insertionPosition._getTransformedByMoveOperation( b );\n\t} else {\n\t\ta.insertionPosition = SplitOperation.getInsertionPosition( a.splitPosition );\n\t}\n\n\treturn [ a ];\n} );\n\nsetTransformation( SplitOperation, SplitOperation, ( a, b, context ) => {\n\t// Case 1:\n\t//\n\t// Split at the same position.\n\t//\n\t// If there already was a split at the same position as in `a` operation, it means that the intention\n\t// conveyed by `a` operation has already been fulfilled and `a` should not do anything (to avoid double split).\n\t//\n\t// However, there is a difference if these are new splits or splits created by undo. These have different\n\t// intentions. Also splits moving back different elements from graveyard have different intentions. They\n\t// are just different operations.\n\t//\n\t// So we cancel split operation only if it was really identical.\n\t//\n\t// Also, there is additional case, where split operations aren't identical and should not be cancelled, however the\n\t// default transformation is incorrect too.\n\t//\n\tif ( a.splitPosition.isEqual( b.splitPosition ) ) {\n\t\tif ( !a.graveyardPosition && !b.graveyardPosition ) {\n\t\t\treturn [ new NoOperation( 0 ) ];\n\t\t}\n\n\t\tif ( a.graveyardPosition && b.graveyardPosition && a.graveyardPosition.isEqual( b.graveyardPosition ) ) {\n\t\t\treturn [ new NoOperation( 0 ) ];\n\t\t}\n\n\t\t// Use context to know that the `a.splitPosition` should stay where it is.\n\t\t// This happens during undo when first a merge operation moved nodes to `a.splitPosition` and now `b` operation undoes that merge.\n\t\tif ( context.abRelation == 'splitBefore' ) {\n\t\t\t// Since split is at the same position, there are no nodes left to split.\n\t\t\ta.howMany = 0;\n\n\t\t\t// Note: there was `if ( a.graveyardPosition )` here but it was uncovered in tests and I couldn't find any scenarios for now.\n\t\t\t// That would have to be a `SplitOperation` that didn't come from undo but is transformed by operations that were undone.\n\t\t\t// It could happen if `context` is enabled in collaboration.\n\t\t\ta.graveyardPosition = a.graveyardPosition!._getTransformedBySplitOperation( b );\n\n\t\t\treturn [ a ];\n\t\t}\n\t}\n\n\t// Case 2:\n\t//\n\t// Same node is using to split different elements. This happens in undo when previously same element was merged to\n\t// two different elements. This is described in `MergeOperation` x `MergeOperation` transformation.\n\t//\n\t// In this case we will follow the same logic. We will assume that `insertionPosition` is same for both\n\t// split operations. This might not always be true but in the real cases that were experienced it was. After all,\n\t// if these splits are reverses of merge operations that were merging the same element, then the `insertionPosition`\n\t// should be same for both of those splits.\n\t//\n\t// Again, we will decide which operation is stronger by checking if split happens in graveyard or in non-graveyard root.\n\t//\n\tif ( a.graveyardPosition && b.graveyardPosition && a.graveyardPosition.isEqual( b.graveyardPosition ) ) {\n\t\tconst aInGraveyard = a.splitPosition.root.rootName == '$graveyard';\n\t\tconst bInGraveyard = b.splitPosition.root.rootName == '$graveyard';\n\n\t\t// If `aIsWeak` it means that `a` points to graveyard while `b` doesn't. Don't move nodes then.\n\t\tconst aIsWeak = aInGraveyard && !bInGraveyard;\n\n\t\t// If `bIsWeak` it means that `b` points to graveyard while `a` doesn't. Force moving nodes then.\n\t\tconst bIsWeak = bInGraveyard && !aInGraveyard;\n\n\t\t// Force move if `b` is weak or neither operation is weak but `a` is stronger through `context.aIsStrong`.\n\t\tconst forceMove = bIsWeak || ( !aIsWeak && context.aIsStrong );\n\n\t\tif ( forceMove ) {\n\t\t\tconst result = [];\n\n\t\t\t// First we need to move any nodes split by `b` back to where they were.\n\t\t\t// Do it only if `b` actually moved something.\n\t\t\tif ( b.howMany ) {\n\t\t\t\tresult.push( new MoveOperation( b.moveTargetPosition, b.howMany, b.splitPosition, 0 ) );\n\t\t\t}\n\n\t\t\t// Then we need to move nodes from `a` split position to their new element.\n\t\t\t// Do it only if `a` actually should move something.\n\t\t\tif ( a.howMany ) {\n\t\t\t\tresult.push( new MoveOperation( a.splitPosition, a.howMany, a.moveTargetPosition, 0 ) );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t} else {\n\t\t\treturn [ new NoOperation( 0 ) ];\n\t\t}\n\t}\n\n\tif ( a.graveyardPosition ) {\n\t\ta.graveyardPosition = a.graveyardPosition._getTransformedBySplitOperation( b );\n\t}\n\n\t// Case 3:\n\t//\n\t// Position where operation `b` inserted a new node after split is the same as the operation `a` split position.\n\t// As in similar cases, there is ambiguity if the split should be before the new node (created by `b`) or after.\n\t//\n\tif ( a.splitPosition.isEqual( b.insertionPosition ) && context.abRelation == 'splitBefore' ) {\n\t\ta.howMany++;\n\n\t\treturn [ a ];\n\t}\n\n\t// Case 4:\n\t//\n\t// This is a mirror to the case 2. above.\n\t//\n\tif ( b.splitPosition.isEqual( a.insertionPosition ) && context.baRelation == 'splitBefore' ) {\n\t\tconst newPositionPath = b.insertionPosition.path.slice();\n\t\tnewPositionPath.push( 0 );\n\n\t\tconst newPosition = new Position( b.insertionPosition.root, newPositionPath );\n\t\tconst moveOp = new MoveOperation( a.insertionPosition, 1, newPosition, 0 );\n\n\t\treturn [ a, moveOp ];\n\t}\n\n\t// The default case.\n\t//\n\tif ( a.splitPosition.hasSameParentAs( b.splitPosition ) && a.splitPosition.offset < b.splitPosition.offset ) {\n\t\ta.howMany -= b.howMany;\n\t}\n\n\ta.splitPosition = a.splitPosition._getTransformedBySplitOperation( b );\n\ta.insertionPosition = SplitOperation.getInsertionPosition( a.splitPosition );\n\n\treturn [ a ];\n} );\n\n/**\n * Checks whether `MoveOperation` `targetPosition` is inside a node from the moved range of the other `MoveOperation`.\n */\nfunction _moveTargetIntoMovedRange( a: MoveOperation, b: MoveOperation ) {\n\treturn a.targetPosition._getTransformedByDeletion( b.sourcePosition, b.howMany ) === null;\n}\n\n/**\n * Helper function for `MoveOperation` x `MoveOperation` transformation. Converts given ranges and target position to\n * move operations and returns them.\n *\n * Ranges and target position will be transformed on-the-fly when generating operations.\n *\n * Given `ranges` should be in the order of how they were in the original transformed operation.\n *\n * Given `targetPosition` is the target position of the first range from `ranges`.\n */\nfunction _makeMoveOperationsFromRanges( ranges: Array<Range>, targetPosition: Position ) {\n\t// At this moment we have some ranges and a target position, to which those ranges should be moved.\n\t// Order in `ranges` array is the go-to order of after transformation.\n\t//\n\t// We are almost done. We have `ranges` and `targetPosition` to make operations from.\n\t// Unfortunately, those operations may affect each other. Precisely, first operation after move\n\t// may affect source range and target position of second and third operation. Same with second\n\t// operation affecting third.\n\t//\n\t// We need to fix those source ranges and target positions once again, before converting `ranges` to operations.\n\tconst operations = [];\n\n\t// Keep in mind that nothing will be transformed if there is just one range in `ranges`.\n\tfor ( let i = 0; i < ranges.length; i++ ) {\n\t\t// Create new operation out of a range and target position.\n\t\tconst range = ranges[ i ];\n\t\tconst op = new MoveOperation(\n\t\t\trange.start,\n\t\t\trange.end.offset - range.start.offset,\n\t\t\ttargetPosition,\n\t\t\t0\n\t\t);\n\n\t\toperations.push( op );\n\n\t\t// Transform other ranges by the generated operation.\n\t\tfor ( let j = i + 1; j < ranges.length; j++ ) {\n\t\t\t// All ranges in `ranges` array should be:\n\t\t\t//\n\t\t\t// * non-intersecting (these are part of original operation source range), and\n\t\t\t// * `targetPosition` does not target into them (opposite would mean that transformed operation targets \"inside itself\").\n\t\t\t//\n\t\t\t// This means that the transformation will be \"clean\" and always return one result.\n\t\t\tranges[ j ] = ranges[ j ]._getTransformedByMove( op.sourcePosition, op.targetPosition, op.howMany )[ 0 ];\n\t\t}\n\n\t\ttargetPosition = targetPosition._getTransformedByMove( op.sourcePosition, op.targetPosition, op.howMany );\n\t}\n\n\treturn operations;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/liveposition\n */\n\nimport Position, { type PositionOffset, type PositionStickiness } from './position';\n\nimport type { ModelApplyOperationEvent } from './model';\nimport type DocumentFragment from './documentfragment';\nimport type Item from './item';\nimport type Operation from './operation/operation';\nimport type RootElement from './rootelement';\n\nimport { CKEditorError, EmitterMixin } from '@ckeditor/ckeditor5-utils';\n\n/**\n * `LivePosition` is a type of {@link module:engine/model/position~Position Position}\n * that updates itself as {@link module:engine/model/document~Document document}\n * is changed through operations. It may be used as a bookmark.\n *\n * **Note:** Contrary to {@link module:engine/model/position~Position}, `LivePosition` works only in roots that are\n * {@link module:engine/model/rootelement~RootElement}.\n * If {@link module:engine/model/documentfragment~DocumentFragment} is passed, error will be thrown.\n *\n * **Note:** Be very careful when dealing with `LivePosition`. Each `LivePosition` instance bind events that might\n * have to be unbound.\n * Use {@link module:engine/model/liveposition~LivePosition#detach} whenever you don't need `LivePosition` anymore.\n */\nexport default class LivePosition extends EmitterMixin( Position ) {\n\t/**\n\t * Root of the position path.\n\t */\n\tdeclare public readonly root: RootElement;\n\n\t/**\n\t * Creates a live position.\n\t *\n\t * @see module:engine/model/position~Position\n\t */\n\tconstructor( root: RootElement, path: Array<number>, stickiness: PositionStickiness = 'toNone' ) {\n\t\tsuper( root, path, stickiness );\n\n\t\tif ( !this.root.is( 'rootElement' ) ) {\n\t\t\t/**\n\t\t\t * LivePosition's root has to be an instance of RootElement.\n\t\t\t *\n\t\t\t * @error model-liveposition-root-not-rootelement\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-liveposition-root-not-rootelement', root );\n\t\t}\n\n\t\tbindWithDocument.call( this );\n\t}\n\n\t/**\n\t * Unbinds all events previously bound by `LivePosition`. Use it whenever you don't need `LivePosition` instance\n\t * anymore (i.e. when leaving scope in which it was declared or before re-assigning variable that was\n\t * referring to it).\n\t */\n\tpublic detach(): void {\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * Creates a {@link module:engine/model/position~Position position instance}, which is equal to this live position.\n\t */\n\tpublic toPosition(): Position {\n\t\treturn new Position( this.root, this.path.slice(), this.stickiness );\n\t}\n\n\t/**\n\t * Creates a `LivePosition` instance that is equal to position.\n\t */\n\tpublic static fromPosition( position: Position, stickiness?: PositionStickiness ): LivePosition {\n\t\treturn new this( position.root as RootElement, position.path.slice(), stickiness ? stickiness : position.stickiness );\n\t}\n\n\t/**\n\t * @internal\n\t * @see module:engine/model/position~Position._createAfter\n\t */\n\tdeclare public static readonly _createAfter: ( item: Item | DocumentFragment, stickiness?: PositionStickiness ) => LivePosition;\n\n\t/**\n\t * @internal\n\t * @see module:engine/model/position~Position._createBefore\n\t */\n\tdeclare public static readonly _createBefore: ( item: Item | DocumentFragment, stickiness?: PositionStickiness ) => LivePosition;\n\n\t/**\n\t * @internal\n\t * @see module:engine/model/position~Position._createAt\n\t */\n\tdeclare public static readonly _createAt: (\n\t\titemOrPosition: Item | Position | DocumentFragment,\n\t\toffset?: PositionOffset,\n\t\tstickiness?: PositionStickiness\n\t) => LivePosition;\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nLivePosition.prototype.is = function( type: string ): boolean {\n\treturn type === 'livePosition' || type === 'model:livePosition' ||\n\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\ttype == 'position' || type === 'model:position';\n};\n\n/**\n * Binds this `LivePosition` to the {@link module:engine/model/document~Document document} that owns\n * this position's {@link module:engine/model/position~Position#root root}.\n */\nfunction bindWithDocument( this: LivePosition ) {\n\tthis.listenTo<ModelApplyOperationEvent>(\n\t\tthis.root.document!.model,\n\t\t'applyOperation',\n\t\t( event, args ) => {\n\t\t\tconst operation = args[ 0 ];\n\n\t\t\tif ( !operation.isDocumentOperation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttransform.call( this, operation );\n\t\t},\n\t\t{ priority: 'low' }\n\t);\n}\n\n/**\n * Updates this position accordingly to the updates applied to the model. Bases on change events.\n */\nfunction transform( this: LivePosition, operation: Operation ) {\n\tconst result = this.getTransformedByOperation( operation );\n\n\tif ( !this.isEqual( result ) ) {\n\t\tconst oldPosition = this.toPosition();\n\n\t\t( this as any ).path = result.path;\n\t\t( this as any ).root = result.root;\n\n\t\tthis.fire<LivePositionChangeEvent>( 'change', oldPosition );\n\t}\n}\n\n/**\n * Fired when `LivePosition` instance is changed due to changes on {@link module:engine/model/document~Document}.\n *\n * @eventName ~LivePosition#change\n * @param oldPosition Position equal to this live position before it got changed.\n */\nexport type LivePositionChangeEvent = {\n\tname: 'change';\n\targs: [ oldPosition: Position ];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/batch\n */\n\nimport { logWarning } from '@ckeditor/ckeditor5-utils';\nimport type Operation from './operation/operation';\n\n/**\n * A batch instance groups model changes ({@link module:engine/model/operation/operation~Operation operations}). All operations\n * grouped in a single batch can be reverted together, so you can also think about a batch as of a single undo step. If you want\n * to extend a given undo step, you can add more changes to the batch using {@link module:engine/model/model~Model#enqueueChange}:\n *\n * ```ts\n * model.enqueueChange( batch, writer => {\n * \twriter.insertText( 'foo', paragraph, 'end' );\n * } );\n * ```\n *\n * @see module:engine/model/model~Model#enqueueChange\n * @see module:engine/model/model~Model#change\n */\nexport default class Batch {\n\t/**\n\t * An array of operations that compose this batch.\n\t */\n\tpublic readonly operations: Array<Operation>;\n\n\t/**\n\t * Whether the batch can be undone through the undo feature.\n\t */\n\tpublic readonly isUndoable: boolean;\n\n\t/**\n\t * Whether the batch includes operations created locally (`true`) or operations created on other, remote editors (`false`).\n\t */\n\tpublic readonly isLocal: boolean;\n\n\t/**\n\t * Whether the batch was created by the undo feature and undoes other operations.\n\t */\n\tpublic readonly isUndo: boolean;\n\n\t/**\n\t * Whether the batch includes operations connected with typing.\n\t */\n\tpublic readonly isTyping: boolean;\n\n\t/**\n\t * Creates a batch instance.\n\t *\n\t * @see module:engine/model/model~Model#enqueueChange\n\t * @see module:engine/model/model~Model#change\n\t * @param type A set of flags that specify the type of the batch. Batch type can alter how some of the features work\n\t * when encountering a given `Batch` instance (for example, when a feature listens to applied operations).\n\t */\n\tconstructor( type: BatchType = {} ) {\n\t\tif ( typeof type === 'string' ) {\n\t\t\ttype = type === 'transparent' ? { isUndoable: false } : {};\n\n\t\t\t/**\n\t\t\t * The string value for a `type` property of the `Batch` constructor has been deprecated and will be removed in the near future.\n\t\t\t * Please refer to the {@link module:engine/model/batch~Batch#constructor `Batch` constructor API documentation} for more\n\t\t\t * information.\n\t\t\t *\n\t\t\t * @error batch-constructor-deprecated-string-type\n\t\t\t */\n\t\t\tlogWarning( 'batch-constructor-deprecated-string-type' );\n\t\t}\n\n\t\tconst { isUndoable = true, isLocal = true, isUndo = false, isTyping = false } = type;\n\n\t\tthis.operations = [];\n\t\tthis.isUndoable = isUndoable;\n\t\tthis.isLocal = isLocal;\n\t\tthis.isUndo = isUndo;\n\t\tthis.isTyping = isTyping;\n\t}\n\n\t/**\n\t * The type of the batch.\n\t *\n\t * **This property has been deprecated and is always set to the `'default'` value.**\n\t *\n\t * It can be one of the following values:\n\t * * `'default'` – All \"normal\" batches. This is the most commonly used type.\n\t * * `'transparent'` – A batch that should be ignored by other features, i.e. an initial batch or collaborative editing\n\t * changes.\n\t *\n\t * @deprecated\n\t */\n\tpublic get type(): 'default' {\n\t\t/**\n\t\t * The {@link module:engine/model/batch~Batch#type `Batch#type` } property has been deprecated and will be removed in the near\n\t\t * future. Use `Batch#isLocal`, `Batch#isUndoable`, `Batch#isUndo` and `Batch#isTyping` instead.\n\t\t *\n\t\t * @error batch-type-deprecated\n\t\t */\n\t\tlogWarning( 'batch-type-deprecated' );\n\n\t\treturn 'default';\n\t}\n\n\t/**\n\t * Returns the base version of this batch, which is equal to the base version of the first operation in the batch.\n\t * If there are no operations in the batch or neither operation has the base version set, it returns `null`.\n\t */\n\tpublic get baseVersion(): number | null {\n\t\tfor ( const op of this.operations ) {\n\t\t\tif ( op.baseVersion !== null ) {\n\t\t\t\treturn op.baseVersion;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Adds an operation to the batch instance.\n\t *\n\t * @param operation An operation to add.\n\t * @returns The added operation.\n\t */\n\tpublic addOperation( operation: Operation ): Operation {\n\t\toperation.batch = this;\n\t\tthis.operations.push( operation );\n\n\t\treturn operation;\n\t}\n}\n\n/**\n * A set of flags that specify the type of the batch. Batch type can alter how some of the features work\n * when encountering a given `Batch` instance (for example, when a feature listens to applied operations).\n */\nexport interface BatchType {\n\n\t/**\n\t * Whether a batch can be undone through undo feature.\n\t *\n\t * @default true\n\t */\n\tisUndoable?: boolean;\n\n\t/**\n\t * Whether a batch includes operations created locally (`true`) or operations created on\n\t * other, remote editors (`false`).\n\t *\n\t * @default true\n\t */\n\tisLocal?: boolean;\n\n\t/**\n\t * Whether a batch was created by the undo feature and undoes other operations.\n\t *\n\t * @default false\n\t */\n\tisUndo?: boolean;\n\n\t/**\n\t * Whether a batch includes operations connected with a typing action.\n\t *\n\t * @default false\n\t */\n\tisTyping?: boolean;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/differ\n */\n\nimport Position from './position';\nimport Range from './range';\n\nimport type { default as MarkerCollection, MarkerData } from './markercollection';\nimport type AttributeOperation from './operation/attributeoperation';\nimport type DocumentFragment from './documentfragment';\nimport type Element from './element';\nimport type InsertOperation from './operation/insertoperation';\nimport type Item from './item';\nimport type MergeOperation from './operation/mergeoperation';\nimport type MoveOperation from './operation/moveoperation';\nimport type Node from './node';\nimport type RootElement from './rootelement';\nimport type Operation from './operation/operation';\nimport type RenameOperation from './operation/renameoperation';\nimport type SplitOperation from './operation/splitoperation';\nimport type RootOperation from './operation/rootoperation';\nimport type RootAttributeOperation from './operation/rootattributeoperation';\n\n/**\n * Calculates the difference between two model states.\n *\n * Receives operations that are to be applied on the model document. Marks parts of the model document tree which\n * are changed and saves the state of these elements before the change. Then, it compares saved elements with the\n * changed elements, after all changes are applied on the model document. Calculates the diff between saved\n * elements and new ones and returns a change set.\n */\nexport default class Differ {\n\t/**\n\t * Reference to the model's marker collection.\n\t */\n\tprivate readonly _markerCollection: MarkerCollection;\n\n\t/**\n\t * A map that stores changes that happened in a given element.\n\t *\n\t * The keys of the map are references to the model elements.\n\t * The values of the map are arrays with changes that were done on this element.\n\t */\n\tprivate readonly _changesInElement: Map<Element | DocumentFragment, Array<ChangeItem>> = new Map();\n\n\t/**\n\t * A map that stores \"element's children snapshots\". A snapshot is representing children of a given element before\n\t * the first change was applied on that element. Snapshot items are objects with two properties: `name`,\n\t * containing the element name (or `'$text'` for a text node) and `attributes` which is a map of the node's attributes.\n\t */\n\tprivate readonly _elementSnapshots: Map<Element | DocumentFragment, Array<{ name: string; attributes: Map<string, unknown> }>>\n\t\t= new Map();\n\n\t/**\n\t * A map that stores all changed markers.\n\t *\n\t * The keys of the map are marker names.\n\t * The values of the map are objects with the following properties:\n\t * - `oldMarkerData`,\n\t * - `newMarkerData`.\n\t */\n\tprivate readonly _changedMarkers: Map<string, { newMarkerData: MarkerData; oldMarkerData: MarkerData }> = new Map();\n\n\t/**\n\t * A map that stores all roots that have been changed.\n\t *\n\t * The keys are the names of the roots while value represents the changes.\n\t */\n\tprivate readonly _changedRoots: Map<string, DiffItemRoot> = new Map();\n\n\t/**\n\t * Stores the number of changes that were processed. Used to order the changes chronologically. It is important\n\t * when changes are sorted.\n\t */\n\tprivate _changeCount: number = 0;\n\n\t/**\n\t * For efficiency purposes, `Differ` stores the change set returned by the differ after {@link #getChanges} call.\n\t * Cache is reset each time a new operation is buffered. If the cache has not been reset, {@link #getChanges} will\n\t * return the cached value instead of calculating it again.\n\t *\n\t * This property stores those changes that did not take place in graveyard root.\n\t */\n\tprivate _cachedChanges: Array<DiffItem> | null = null;\n\n\t/**\n\t * For efficiency purposes, `Differ` stores the change set returned by the differ after the {@link #getChanges} call.\n\t * The cache is reset each time a new operation is buffered. If the cache has not been reset, {@link #getChanges} will\n\t * return the cached value instead of calculating it again.\n\t *\n\t * This property stores all changes evaluated by `Differ`, including those that took place in the graveyard.\n\t */\n\tprivate _cachedChangesWithGraveyard: Array<DiffItem> | null = null;\n\n\t/**\n\t * Set of model items that were marked to get refreshed in {@link #_refreshItem}.\n\t */\n\tprivate _refreshedItems: Set<Item> = new Set();\n\n\t/**\n\t * Creates a `Differ` instance.\n\t *\n\t * @param markerCollection Model's marker collection.\n\t */\n\tconstructor( markerCollection: MarkerCollection ) {\n\t\tthis._markerCollection = markerCollection;\n\t}\n\n\t/**\n\t * Informs whether there are any changes buffered in `Differ`.\n\t */\n\tpublic get isEmpty(): boolean {\n\t\treturn this._changesInElement.size == 0 && this._changedMarkers.size == 0 && this._changedRoots.size == 0;\n\t}\n\n\t/**\n\t * Buffers the given operation. An operation has to be buffered before it is executed.\n\t *\n\t * @param operationToBuffer An operation to buffer.\n\t */\n\tpublic bufferOperation( operationToBuffer: Operation ): void {\n\t\t// Below we take an operation, check its type, then use its parameters in marking (private) methods.\n\t\t// The general rule is to not mark elements inside inserted element. All inserted elements are re-rendered.\n\t\t// Marking changes in them would cause a \"double\" changing then.\n\t\t//\n\t\tconst operation = operationToBuffer as (\n\t\t\tInsertOperation |\n\t\t\tAttributeOperation |\n\t\t\tMoveOperation |\n\t\t\tRenameOperation |\n\t\t\tSplitOperation |\n\t\t\tMergeOperation |\n\t\t\tRootOperation |\n\t\t\tRootAttributeOperation\n\t\t);\n\n\t\t// Note: an operation that happens inside a non-loaded root will be ignored. If the operation happens partially inside\n\t\t// a non-loaded root, that part will be ignored (this may happen for move or marker operations).\n\t\t//\n\t\tswitch ( operation.type ) {\n\t\t\tcase 'insert': {\n\t\t\t\tif ( this._isInInsertedElement( operation.position.parent ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis._markInsert( operation.position.parent, operation.position.offset, operation.nodes.maxOffset );\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'addAttribute':\n\t\t\tcase 'removeAttribute':\n\t\t\tcase 'changeAttribute': {\n\t\t\t\tfor ( const item of operation.range.getItems( { shallow: true } ) ) {\n\t\t\t\t\tif ( this._isInInsertedElement( item.parent! ) ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._markAttribute( item );\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'remove':\n\t\t\tcase 'move':\n\t\t\tcase 'reinsert': {\n\t\t\t\t// When range is moved to the same position then not mark it as a change.\n\t\t\t\t// See: https://github.com/ckeditor/ckeditor5-engine/issues/1664.\n\t\t\t\tif (\n\t\t\t\t\toperation.sourcePosition.isEqual( operation.targetPosition ) ||\n\t\t\t\t\toperation.sourcePosition.getShiftedBy( operation.howMany ).isEqual( operation.targetPosition )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst sourceParentInserted = this._isInInsertedElement( operation.sourcePosition.parent );\n\t\t\t\tconst targetParentInserted = this._isInInsertedElement( operation.targetPosition.parent );\n\n\t\t\t\tif ( !sourceParentInserted ) {\n\t\t\t\t\tthis._markRemove( operation.sourcePosition.parent, operation.sourcePosition.offset, operation.howMany );\n\t\t\t\t}\n\n\t\t\t\tif ( !targetParentInserted ) {\n\t\t\t\t\tthis._markInsert( operation.targetPosition.parent, operation.getMovedRangeStart().offset, operation.howMany );\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'rename': {\n\t\t\t\tif ( this._isInInsertedElement( operation.position.parent ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis._markRemove( operation.position.parent, operation.position.offset, 1 );\n\t\t\t\tthis._markInsert( operation.position.parent, operation.position.offset, 1 );\n\n\t\t\t\tconst range = Range._createFromPositionAndShift( operation.position, 1 );\n\n\t\t\t\tfor ( const marker of this._markerCollection.getMarkersIntersectingRange( range ) ) {\n\t\t\t\t\tconst markerData = marker.getData();\n\n\t\t\t\t\tthis.bufferMarkerChange( marker.name, markerData, markerData );\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'split': {\n\t\t\t\tconst splitElement = operation.splitPosition.parent;\n\n\t\t\t\t// Mark that children of the split element were removed.\n\t\t\t\tif ( !this._isInInsertedElement( splitElement ) ) {\n\t\t\t\t\tthis._markRemove( splitElement, operation.splitPosition.offset, operation.howMany );\n\t\t\t\t}\n\n\t\t\t\t// Mark that the new element (split copy) was inserted.\n\t\t\t\tif ( !this._isInInsertedElement( operation.insertionPosition.parent ) ) {\n\t\t\t\t\tthis._markInsert( operation.insertionPosition.parent, operation.insertionPosition.offset, 1 );\n\t\t\t\t}\n\n\t\t\t\t// If the split took the element from the graveyard, mark that the element from the graveyard was removed.\n\t\t\t\tif ( operation.graveyardPosition ) {\n\t\t\t\t\tthis._markRemove( operation.graveyardPosition.parent, operation.graveyardPosition.offset, 1 );\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'merge': {\n\t\t\t\t// Mark that the merged element was removed.\n\t\t\t\tconst mergedElement = operation.sourcePosition.parent;\n\n\t\t\t\tif ( !this._isInInsertedElement( mergedElement.parent! ) ) {\n\t\t\t\t\tthis._markRemove( mergedElement.parent!, ( mergedElement as any ).startOffset, 1 );\n\t\t\t\t}\n\n\t\t\t\t// Mark that the merged element was inserted into graveyard.\n\t\t\t\tconst graveyardParent = operation.graveyardPosition.parent;\n\n\t\t\t\tthis._markInsert( graveyardParent, operation.graveyardPosition.offset, 1 );\n\n\t\t\t\t// Mark that children of merged element were inserted at new parent.\n\t\t\t\tconst mergedIntoElement = operation.targetPosition.parent;\n\n\t\t\t\tif ( !this._isInInsertedElement( mergedIntoElement ) ) {\n\t\t\t\t\tthis._markInsert( mergedIntoElement, operation.targetPosition.offset, mergedElement.maxOffset );\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'detachRoot':\n\t\t\tcase 'addRoot': {\n\t\t\t\tconst root = operation.affectedSelectable as RootElement;\n\n\t\t\t\tif ( !root._isLoaded ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Don't buffer if the root state does not change.\n\t\t\t\tif ( root.isAttached() == operation.isAdd ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis._bufferRootStateChange( operation.rootName, operation.isAdd );\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'addRootAttribute':\n\t\t\tcase 'removeRootAttribute':\n\t\t\tcase 'changeRootAttribute': {\n\t\t\t\tif ( !operation.root._isLoaded ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst rootName = operation.root.rootName;\n\n\t\t\t\tthis._bufferRootAttributeChange( rootName, operation.key, operation.oldValue, operation.newValue );\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Clear cache after each buffered operation as it is no longer valid.\n\t\tthis._cachedChanges = null;\n\t}\n\n\t/**\n\t * Buffers a marker change.\n\t *\n\t * @param markerName The name of the marker that changed.\n\t * @param oldMarkerData Marker data before the change.\n\t * @param newMarkerData Marker data after the change.\n\t */\n\tpublic bufferMarkerChange( markerName: string, oldMarkerData: MarkerData, newMarkerData: MarkerData ): void {\n\t\tif ( oldMarkerData.range && oldMarkerData.range.root.is( 'rootElement' ) && !oldMarkerData.range.root._isLoaded ) {\n\t\t\toldMarkerData.range = null;\n\t\t}\n\n\t\tif ( newMarkerData.range && newMarkerData.range.root.is( 'rootElement' ) && !newMarkerData.range.root._isLoaded ) {\n\t\t\tnewMarkerData.range = null;\n\t\t}\n\n\t\tlet buffered = this._changedMarkers.get( markerName );\n\n\t\tif ( !buffered ) {\n\t\t\tbuffered = { newMarkerData, oldMarkerData };\n\n\t\t\tthis._changedMarkers.set( markerName, buffered );\n\t\t} else {\n\t\t\tbuffered.newMarkerData = newMarkerData;\n\t\t}\n\n\t\tif ( buffered.oldMarkerData.range == null && newMarkerData.range == null ) {\n\t\t\t// The marker is going to be removed (`newMarkerData.range == null`) but it did not exist before the first buffered change\n\t\t\t// (`buffered.oldMarkerData.range == null`). In this case, do not keep the marker in buffer at all.\n\t\t\tthis._changedMarkers.delete( markerName );\n\t\t}\n\t}\n\n\t/**\n\t * Returns all markers that should be removed as a result of buffered changes.\n\t *\n\t * @returns Markers to remove. Each array item is an object containing the `name` and `range` properties.\n\t */\n\tpublic getMarkersToRemove(): Array<{ name: string; range: Range }> {\n\t\tconst result = [];\n\n\t\tfor ( const [ name, change ] of this._changedMarkers ) {\n\t\t\tif ( change.oldMarkerData.range != null ) {\n\t\t\t\tresult.push( { name, range: change.oldMarkerData.range } );\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Returns all markers which should be added as a result of buffered changes.\n\t *\n\t * @returns Markers to add. Each array item is an object containing the `name` and `range` properties.\n\t */\n\tpublic getMarkersToAdd(): Array<{ name: string; range: Range }> {\n\t\tconst result = [];\n\n\t\tfor ( const [ name, change ] of this._changedMarkers ) {\n\t\t\tif ( change.newMarkerData.range != null ) {\n\t\t\t\tresult.push( { name, range: change.newMarkerData.range } );\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Returns all markers which changed.\n\t */\n\tpublic getChangedMarkers(): Array<{\n\t\tname: string;\n\t\tdata: {\n\t\t\toldRange: Range | null;\n\t\t\tnewRange: Range | null;\n\t\t};\n\t}> {\n\t\treturn Array.from( this._changedMarkers ).map( ( [ name, change ] ) => (\n\t\t\t{\n\t\t\t\tname,\n\t\t\t\tdata: {\n\t\t\t\t\toldRange: change.oldMarkerData.range,\n\t\t\t\t\tnewRange: change.newMarkerData.range\n\t\t\t\t}\n\t\t\t}\n\t\t) );\n\t}\n\n\t/**\n\t * Checks whether some of the buffered changes affect the editor data.\n\t *\n\t * Types of changes which affect the editor data:\n\t *\n\t * * model structure changes,\n\t * * attribute changes,\n\t * * a root is added or detached,\n\t * * changes of markers which were defined as `affectsData`,\n\t * * changes of markers' `affectsData` property.\n\t */\n\tpublic hasDataChanges(): boolean {\n\t\tif ( this._changesInElement.size > 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( this._changedRoots.size > 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tfor ( const { newMarkerData, oldMarkerData } of this._changedMarkers.values() ) {\n\t\t\tif ( newMarkerData.affectsData !== oldMarkerData.affectsData ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif ( newMarkerData.affectsData ) {\n\t\t\t\tconst markerAdded = newMarkerData.range && !oldMarkerData.range;\n\t\t\t\tconst markerRemoved = !newMarkerData.range && oldMarkerData.range;\n\t\t\t\tconst markerChanged = newMarkerData.range && oldMarkerData.range && !newMarkerData.range.isEqual( oldMarkerData.range );\n\n\t\t\t\tif ( markerAdded || markerRemoved || markerChanged ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Calculates the diff between the old model tree state (the state before the first buffered operations since the last {@link #reset}\n\t * call) and the new model tree state (actual one). It should be called after all buffered operations are executed.\n\t *\n\t * The diff set is returned as an array of {@link module:engine/model/differ~DiffItem diff items}, each describing a change done\n\t * on the model. The items are sorted by the position on which the change happened. If a position\n\t * {@link module:engine/model/position~Position#isBefore is before} another one, it will be on an earlier index in the diff set.\n\t *\n\t * **Note**: Elements inside inserted element will not have a separate diff item, only the top most element change will be reported.\n\t *\n\t * Because calculating the diff is a costly operation, the result is cached. If no new operation was buffered since the\n\t * previous {@link #getChanges} call, the next call will return the cached value.\n\t *\n\t * @param options Additional options.\n\t * @param options.includeChangesInGraveyard If set to `true`, also changes that happened\n\t * in the graveyard root will be returned. By default, changes in the graveyard root are not returned.\n\t * @returns Diff between the old and the new model tree state.\n\t */\n\tpublic getChanges( options: { includeChangesInGraveyard?: boolean } = {} ): Array<DiffItem> {\n\t\t// If there are cached changes, just return them instead of calculating changes again.\n\t\tif ( this._cachedChanges ) {\n\t\t\tif ( options.includeChangesInGraveyard ) {\n\t\t\t\treturn this._cachedChangesWithGraveyard!.slice();\n\t\t\t} else {\n\t\t\t\treturn this._cachedChanges.slice();\n\t\t\t}\n\t\t}\n\n\t\t// Will contain returned results.\n\t\tlet diffSet: Array<DiffItem & DiffItemInternal> = [];\n\n\t\t// Check all changed elements.\n\t\tfor ( const element of this._changesInElement.keys() ) {\n\t\t\t// Get changes for this element and sort them.\n\t\t\tconst changes = this._changesInElement.get( element )!.sort( ( a, b ) => {\n\t\t\t\tif ( a.offset === b.offset ) {\n\t\t\t\t\tif ( a.type != b.type ) {\n\t\t\t\t\t\t// If there are multiple changes at the same position, \"remove\" change should be first.\n\t\t\t\t\t\t// If the order is different, for example, we would first add some nodes and then removed them\n\t\t\t\t\t\t// (instead of the nodes that we should remove).\n\t\t\t\t\t\treturn a.type == 'remove' ? -1 : 1;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn a.offset < b.offset ? -1 : 1;\n\t\t\t} );\n\n\t\t\t// Get children of this element before any change was applied on it.\n\t\t\tconst snapshotChildren = this._elementSnapshots.get( element )!;\n\t\t\t// Get snapshot of current element's children.\n\t\t\tconst elementChildren = _getChildrenSnapshot( element.getChildren() );\n\n\t\t\t// Generate actions basing on changes done on element.\n\t\t\tconst actions = _generateActionsFromChanges( snapshotChildren.length, changes );\n\n\t\t\tlet i = 0; // Iterator in `elementChildren` array -- iterates through current children of element.\n\t\t\tlet j = 0; // Iterator in `snapshotChildren` array -- iterates through old children of element.\n\n\t\t\t// Process every action.\n\t\t\tfor ( const action of actions ) {\n\t\t\t\tif ( action === 'i' ) {\n\t\t\t\t\t// Generate diff item for this element and insert it into the diff set.\n\t\t\t\t\tdiffSet.push( this._getInsertDiff( element, i, elementChildren[ i ] ) );\n\n\t\t\t\t\ti++;\n\t\t\t\t} else if ( action === 'r' ) {\n\t\t\t\t\t// Generate diff item for this element and insert it into the diff set.\n\t\t\t\t\tdiffSet.push( this._getRemoveDiff( element, i, snapshotChildren[ j ] ) );\n\n\t\t\t\t\tj++;\n\t\t\t\t} else if ( action === 'a' ) {\n\t\t\t\t\t// Take attributes from saved and current children.\n\t\t\t\t\tconst elementAttributes = elementChildren[ i ].attributes;\n\t\t\t\t\tconst snapshotAttributes = snapshotChildren[ j ].attributes;\n\t\t\t\t\tlet range;\n\n\t\t\t\t\tif ( elementChildren[ i ].name == '$text' ) {\n\t\t\t\t\t\trange = new Range( Position._createAt( element, i ), Position._createAt( element, i + 1 ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst index = element.offsetToIndex( i );\n\t\t\t\t\t\trange = new Range( Position._createAt( element, i ), Position._createAt( element.getChild( index )!, 0 ) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Generate diff items for this change (there might be multiple attributes changed and\n\t\t\t\t\t// there is a single diff for each of them) and insert them into the diff set.\n\t\t\t\t\tdiffSet.push( ...this._getAttributesDiff( range, snapshotAttributes, elementAttributes ) );\n\n\t\t\t\t\ti++;\n\t\t\t\t\tj++;\n\t\t\t\t} else {\n\t\t\t\t\t// `action` is 'equal'. Child not changed.\n\t\t\t\t\ti++;\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Then, sort the changes by the position (change at position before other changes is first).\n\t\tdiffSet.sort( ( a, b ) => {\n\t\t\t// If the change is in different root, we don't care much, but we'd like to have all changes in given\n\t\t\t// root \"together\" in the array. So let's just sort them by the root name. It does not matter which root\n\t\t\t// will be processed first.\n\t\t\tif ( a.position!.root != b.position!.root ) {\n\t\t\t\treturn a.position!.root.rootName! < b.position!.root.rootName! ? -1 : 1;\n\t\t\t}\n\n\t\t\t// If change happens at the same position...\n\t\t\tif ( a.position!.isEqual( b.position! ) ) {\n\t\t\t\t// Keep chronological order of operations.\n\t\t\t\treturn a.changeCount! - b.changeCount!;\n\t\t\t}\n\n\t\t\t// If positions differ, position \"on the left\" should be earlier in the result.\n\t\t\treturn a.position!.isBefore( b.position! ) ? -1 : 1;\n\t\t} );\n\n\t\t// Glue together multiple changes (mostly on text nodes).\n\t\tfor ( let i = 1, prevIndex = 0; i < diffSet.length; i++ ) {\n\t\t\tconst prevDiff = diffSet[ prevIndex ];\n\t\t\tconst thisDiff = diffSet[ i ];\n\n\t\t\t// Glue remove changes if they happen on text on same position.\n\t\t\tconst isConsecutiveTextRemove =\n\t\t\t\tprevDiff.type == 'remove' && thisDiff.type == 'remove' &&\n\t\t\t\tprevDiff.name == '$text' && thisDiff.name == '$text' &&\n\t\t\t\tprevDiff.position.isEqual( thisDiff.position );\n\n\t\t\t// Glue insert changes if they happen on text on consecutive fragments.\n\t\t\tconst isConsecutiveTextAdd =\n\t\t\t\tprevDiff.type == 'insert' && thisDiff.type == 'insert' &&\n\t\t\t\tprevDiff.name == '$text' && thisDiff.name == '$text' &&\n\t\t\t\tprevDiff.position.parent == thisDiff.position.parent &&\n\t\t\t\tprevDiff.position.offset + prevDiff.length == thisDiff.position.offset;\n\n\t\t\t// Glue attribute changes if they happen on consecutive fragments and have same key, old value and new value.\n\t\t\tconst isConsecutiveAttributeChange =\n\t\t\t\tprevDiff.type == 'attribute' && thisDiff.type == 'attribute' &&\n\t\t\t\tprevDiff.position!.parent == thisDiff.position!.parent &&\n\t\t\t\tprevDiff.range.isFlat && thisDiff.range.isFlat &&\n\t\t\t\t( prevDiff.position!.offset + prevDiff.length! ) == thisDiff.position!.offset &&\n\t\t\t\tprevDiff.attributeKey == thisDiff.attributeKey &&\n\t\t\t\tprevDiff.attributeOldValue == thisDiff.attributeOldValue &&\n\t\t\t\tprevDiff.attributeNewValue == thisDiff.attributeNewValue;\n\n\t\t\tif ( isConsecutiveTextRemove || isConsecutiveTextAdd || isConsecutiveAttributeChange ) {\n\t\t\t\tprevDiff.length!++;\n\n\t\t\t\tif ( isConsecutiveAttributeChange ) {\n\t\t\t\t\t( prevDiff.range as any ).end = prevDiff.range.end.getShiftedBy( 1 );\n\t\t\t\t}\n\n\t\t\t\tdiffSet[ i ] = null as any;\n\t\t\t} else {\n\t\t\t\tprevIndex = i;\n\t\t\t}\n\t\t}\n\n\t\tdiffSet = diffSet.filter( v => v );\n\n\t\t// Remove `changeCount` property from diff items. It is used only for sorting and is internal thing.\n\t\tfor ( const item of diffSet ) {\n\t\t\tdelete item.changeCount;\n\n\t\t\tif ( item.type == 'attribute' ) {\n\t\t\t\tdelete item.position;\n\t\t\t\tdelete item.length;\n\t\t\t}\n\t\t}\n\n\t\tthis._changeCount = 0;\n\n\t\t// Cache changes.\n\t\tthis._cachedChangesWithGraveyard = diffSet;\n\t\tthis._cachedChanges = diffSet.filter( _changesInGraveyardFilter );\n\n\t\tif ( options.includeChangesInGraveyard ) {\n\t\t\treturn this._cachedChangesWithGraveyard.slice();\n\t\t} else {\n\t\t\treturn this._cachedChanges.slice();\n\t\t}\n\t}\n\n\t/**\n\t * Returns all roots that have changed (either were attached, or detached, or their attributes changed).\n\t *\n\t * @returns Diff between the old and the new roots state.\n\t */\n\tpublic getChangedRoots(): Array<DiffItemRoot> {\n\t\treturn Array.from( this._changedRoots.values() ).map( diffItem => {\n\t\t\tconst entry = { ...diffItem };\n\n\t\t\tif ( entry.state !== undefined ) {\n\t\t\t\t// The root was attached or detached -- do not return its attributes changes.\n\t\t\t\t// If the root was attached, it should be handled as a whole, together with its attributes, the same way as model nodes.\n\t\t\t\t// If the root was detached, its attributes should be discarded anyway.\n\t\t\t\t//\n\t\t\t\t// Keep in mind that filtering must happen on this stage (when retrieving changes). If filtering happens on-the-fly as\n\t\t\t\t// the attributes change, it may lead to incorrect situation, e.g.: detach root, change attribute, re-attach root.\n\t\t\t\t// In this case, attribute change cannot be filtered. After the root is re-attached, the attribute change must be kept.\n\t\t\t\tdelete entry.attributes;\n\t\t\t}\n\n\t\t\treturn entry;\n\t\t} );\n\t}\n\n\t/**\n\t * Returns a set of model items that were marked to get refreshed.\n\t */\n\tpublic getRefreshedItems(): Set<Item> {\n\t\treturn new Set( this._refreshedItems );\n\t}\n\n\t/**\n\t * Resets `Differ`. Removes all buffered changes.\n\t */\n\tpublic reset(): void {\n\t\tthis._changesInElement.clear();\n\t\tthis._elementSnapshots.clear();\n\t\tthis._changedMarkers.clear();\n\t\tthis._changedRoots.clear();\n\t\tthis._refreshedItems = new Set();\n\t\tthis._cachedChanges = null;\n\t}\n\n\t/**\n\t * Buffers the root state change after the root was attached or detached\n\t */\n\tprivate _bufferRootStateChange( rootName: string, isAttached: boolean ): void {\n\t\tif ( !this._changedRoots.has( rootName ) ) {\n\t\t\tthis._changedRoots.set( rootName, { name: rootName, state: isAttached ? 'attached' : 'detached' } );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst diffItem = this._changedRoots.get( rootName )!;\n\n\t\tif ( diffItem.state !== undefined ) {\n\t\t\t// Root `state` can only toggle between one of the values and no value. It cannot be any other way,\n\t\t\t// because if the root was originally attached it can only become detached. Then, if it is re-attached in the same batch of\n\t\t\t// changes, it gets back to \"no change\" (which means no value). Same if the root was originally detached.\n\t\t\tdelete diffItem.state;\n\n\t\t\tif ( diffItem.attributes === undefined ) {\n\t\t\t\t// If there is no `state` change and no `attributes` change, remove the entry.\n\t\t\t\tthis._changedRoots.delete( rootName );\n\t\t\t}\n\t\t} else {\n\t\t\tdiffItem.state = isAttached ? 'attached' : 'detached';\n\t\t}\n\t}\n\n\t/**\n\t * Buffers a root attribute change.\n\t */\n\tprivate _bufferRootAttributeChange( rootName: string, key: string, oldValue: unknown, newValue: unknown ): void {\n\t\tconst diffItem: DiffItemRoot = this._changedRoots.get( rootName ) || { name: rootName };\n\t\tconst attrs: Record<string, { oldValue: unknown; newValue: unknown }> = diffItem.attributes || {};\n\n\t\tif ( attrs[ key ] ) {\n\t\t\t// If this attribute or metadata was already changed earlier and is changed again, check to what value it is changed.\n\t\t\tconst attrEntry = attrs[ key ];\n\n\t\t\tif ( newValue === attrEntry.oldValue ) {\n\t\t\t\t// If it was changed back to the old value, remove the entry.\n\t\t\t\tdelete attrs[ key ];\n\t\t\t} else {\n\t\t\t\t// If it was changed to a different value, update the entry.\n\t\t\t\tattrEntry.newValue = newValue;\n\t\t\t}\n\t\t} else {\n\t\t\t// If this attribute or metadata was not set earlier, add an entry.\n\t\t\tattrs[ key ] = { oldValue, newValue };\n\t\t}\n\n\t\tif ( Object.entries( attrs ).length === 0 ) {\n\t\t\t// If attributes or metadata changes set became empty, remove it from the diff item.\n\t\t\tdelete diffItem.attributes;\n\n\t\t\tif ( diffItem.state === undefined ) {\n\t\t\t\t// If there is no `state` change and no `attributes` change, remove the entry.\n\t\t\t\tthis._changedRoots.delete( rootName );\n\t\t\t}\n\t\t} else {\n\t\t\t// Make sure that, if a new object in the structure was created, it gets set.\n\t\t\tdiffItem.attributes = attrs;\n\n\t\t\tthis._changedRoots.set( rootName, diffItem );\n\t\t}\n\t}\n\n\t/**\n\t * Marks the given `item` in differ to be \"refreshed\". It means that the item will be marked as removed and inserted\n\t * in the differ changes set, so it will be effectively re-converted when the differ changes are handled by a dispatcher.\n\t *\n\t * @internal\n\t * @param item Item to refresh.\n\t */\n\tpublic _refreshItem( item: Item ): void {\n\t\tif ( this._isInInsertedElement( item.parent! ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._markRemove( item.parent!, item.startOffset!, item.offsetSize );\n\t\tthis._markInsert( item.parent!, item.startOffset!, item.offsetSize );\n\n\t\tthis._refreshedItems.add( item );\n\n\t\tconst range = Range._createOn( item );\n\n\t\tfor ( const marker of this._markerCollection.getMarkersIntersectingRange( range ) ) {\n\t\t\tconst markerData = marker.getData();\n\n\t\t\tthis.bufferMarkerChange( marker.name, markerData, markerData );\n\t\t}\n\n\t\t// Clear cache after each buffered operation as it is no longer valid.\n\t\tthis._cachedChanges = null;\n\t}\n\n\t/**\n\t * Buffers all the data related to given root like it was all just added to the editor.\n\t *\n\t * Following changes are buffered:\n\t *\n\t * * root is attached,\n\t * * all root content is inserted,\n\t * * all root attributes are added,\n\t * * all markers inside the root are added.\n\t *\n\t * @internal\n\t */\n\tpublic _bufferRootLoad( root: RootElement ): void {\n\t\tif ( !root.isAttached() ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._bufferRootStateChange( root.rootName, true );\n\t\tthis._markInsert( root, 0, root.maxOffset );\n\n\t\t// Buffering root attribute changes makes sense and is actually needed, even though we buffer root state change above.\n\t\t// Because the root state change is buffered, the root attributes changes are not returned by the differ.\n\t\t// But, if the root attribute is removed in the same change block, or the root is detached, then the differ results would be wrong.\n\t\t//\n\t\tfor ( const key of root.getAttributeKeys() ) {\n\t\t\tthis._bufferRootAttributeChange( root.rootName, key, null, root.getAttribute( key ) );\n\t\t}\n\n\t\tfor ( const marker of this._markerCollection ) {\n\t\t\tif ( marker.getRange().root == root ) {\n\t\t\t\tconst markerData = marker.getData();\n\n\t\t\t\tthis.bufferMarkerChange( marker.name, { ...markerData, range: null }, markerData );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Saves and handles an insert change.\n\t */\n\tprivate _markInsert( parent: Element | DocumentFragment, offset: number, howMany: number ) {\n\t\tif ( parent.root.is( 'rootElement' ) && !parent.root._isLoaded ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst changeItem = { type: 'insert', offset, howMany, count: this._changeCount++ } as const;\n\n\t\tthis._markChange( parent, changeItem );\n\t}\n\n\t/**\n\t * Saves and handles a remove change.\n\t */\n\tprivate _markRemove( parent: Element | DocumentFragment, offset: number, howMany: number ) {\n\t\tif ( parent.root.is( 'rootElement' ) && !parent.root._isLoaded ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst changeItem = { type: 'remove', offset, howMany, count: this._changeCount++ } as const;\n\n\t\tthis._markChange( parent, changeItem );\n\n\t\tthis._removeAllNestedChanges( parent, offset, howMany );\n\t}\n\n\t/**\n\t * Saves and handles an attribute change.\n\t */\n\tprivate _markAttribute( item: Item ): void {\n\t\tif ( item.root.is( 'rootElement' ) && !item.root._isLoaded ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst changeItem = { type: 'attribute', offset: item.startOffset!, howMany: item.offsetSize, count: this._changeCount++ } as const;\n\n\t\tthis._markChange( item.parent as Element, changeItem );\n\t}\n\n\t/**\n\t * Saves and handles a model change.\n\t */\n\tprivate _markChange( parent: Element | DocumentFragment, changeItem: ChangeItem ): void {\n\t\t// First, make a snapshot of this parent's children (it will be made only if it was not made before).\n\t\tthis._makeSnapshot( parent );\n\n\t\t// Then, get all changes that already were done on the element (empty array if this is the first change).\n\t\tconst changes = this._getChangesForElement( parent );\n\n\t\t// Then, look through all the changes, and transform them or the new change.\n\t\tthis._handleChange( changeItem, changes );\n\n\t\t// Add the new change.\n\t\tchanges.push( changeItem );\n\n\t\t// Remove incorrect changes. During transformation some change might be, for example, included in another.\n\t\t// In that case, the change will have `howMany` property set to `0` or less. We need to remove those changes.\n\t\tfor ( let i = 0; i < changes.length; i++ ) {\n\t\t\tif ( changes[ i ].howMany < 1 ) {\n\t\t\t\tchanges.splice( i, 1 );\n\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Gets an array of changes that have already been saved for a given element.\n\t */\n\tprivate _getChangesForElement( element: Element | DocumentFragment ): Array<ChangeItem> {\n\t\tlet changes: Array<ChangeItem>;\n\n\t\tif ( this._changesInElement.has( element ) ) {\n\t\t\tchanges = this._changesInElement.get( element )!;\n\t\t} else {\n\t\t\tchanges = [];\n\n\t\t\tthis._changesInElement.set( element, changes );\n\t\t}\n\n\t\treturn changes;\n\t}\n\n\t/**\n\t * Saves a children snapshot for a given element.\n\t */\n\tprivate _makeSnapshot( element: Element | DocumentFragment ): void {\n\t\tif ( !this._elementSnapshots.has( element ) ) {\n\t\t\tthis._elementSnapshots.set( element, _getChildrenSnapshot( element.getChildren() ) );\n\t\t}\n\t}\n\n\t/**\n\t * For a given newly saved change, compares it with a change already done on the element and modifies the incoming\n\t * change and/or the old change.\n\t *\n\t * @param inc Incoming (new) change.\n\t * @param changes An array containing all the changes done on that element.\n\t */\n\tprivate _handleChange( inc: ChangeItem, changes: Array<ChangeItem> ): void {\n\t\t// We need a helper variable that will store how many nodes are to be still handled for this change item.\n\t\t// `nodesToHandle` (how many nodes still need to be handled) and `howMany` (how many nodes were affected)\n\t\t// needs to be differentiated.\n\t\t//\n\t\t// This comes up when there are multiple changes that are affected by `inc` change item.\n\t\t//\n\t\t// For example: assume two insert changes: `{ offset: 2, howMany: 1 }` and `{ offset: 5, howMany: 1 }`.\n\t\t// Assume that `inc` change is remove `{ offset: 2, howMany: 2, nodesToHandle: 2 }`.\n\t\t//\n\t\t// Then, we:\n\t\t// - \"forget\" about first insert change (it is \"eaten\" by remove),\n\t\t// - because of that, at the end we will want to remove only one node (`nodesToHandle = 1`),\n\t\t// - but still we have to change offset of the second insert change from `5` to `3`!\n\t\t//\n\t\t// So, `howMany` does not change throughout items transformation and keeps information about how many nodes were affected,\n\t\t// while `nodesToHandle` means how many nodes need to be handled after the change item is transformed by other changes.\n\t\tinc.nodesToHandle = inc.howMany;\n\n\t\tfor ( const old of changes ) {\n\t\t\tconst incEnd = inc.offset + inc.howMany;\n\t\t\tconst oldEnd = old.offset + old.howMany;\n\n\t\t\tif ( inc.type == 'insert' ) {\n\t\t\t\tif ( old.type == 'insert' ) {\n\t\t\t\t\tif ( inc.offset <= old.offset ) {\n\t\t\t\t\t\told.offset += inc.howMany;\n\t\t\t\t\t} else if ( inc.offset < oldEnd ) {\n\t\t\t\t\t\told.howMany += inc.nodesToHandle;\n\t\t\t\t\t\tinc.nodesToHandle = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( old.type == 'remove' ) {\n\t\t\t\t\tif ( inc.offset < old.offset ) {\n\t\t\t\t\t\told.offset += inc.howMany;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( old.type == 'attribute' ) {\n\t\t\t\t\tif ( inc.offset <= old.offset ) {\n\t\t\t\t\t\told.offset += inc.howMany;\n\t\t\t\t\t} else if ( inc.offset < oldEnd ) {\n\t\t\t\t\t\t// This case is more complicated, because attribute change has to be split into two.\n\t\t\t\t\t\t// Example (assume that uppercase and lowercase letters mean different attributes):\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// initial state:\t\tabcxyz\n\t\t\t\t\t\t// attribute change:\taBCXYz\n\t\t\t\t\t\t// incoming insert:\t\taBCfooXYz\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// Change ranges cannot intersect because each item has to be described exactly (it was either\n\t\t\t\t\t\t// not changed, inserted, removed, or its attribute was changed). That's why old attribute\n\t\t\t\t\t\t// change has to be split and both parts has to be handled separately from now on.\n\t\t\t\t\t\tconst howMany = old.howMany;\n\n\t\t\t\t\t\told.howMany = inc.offset - old.offset;\n\n\t\t\t\t\t\t// Add the second part of attribute change to the beginning of processed array so it won't\n\t\t\t\t\t\t// be processed again in this loop.\n\t\t\t\t\t\tchanges.unshift( {\n\t\t\t\t\t\t\ttype: 'attribute',\n\t\t\t\t\t\t\toffset: incEnd,\n\t\t\t\t\t\t\thowMany: howMany - old.howMany,\n\t\t\t\t\t\t\tcount: this._changeCount++\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( inc.type == 'remove' ) {\n\t\t\t\tif ( old.type == 'insert' ) {\n\t\t\t\t\tif ( incEnd <= old.offset ) {\n\t\t\t\t\t\told.offset -= inc.howMany;\n\t\t\t\t\t} else if ( incEnd <= oldEnd ) {\n\t\t\t\t\t\tif ( inc.offset < old.offset ) {\n\t\t\t\t\t\t\tconst intersectionLength = incEnd - old.offset;\n\n\t\t\t\t\t\t\told.offset = inc.offset;\n\n\t\t\t\t\t\t\told.howMany -= intersectionLength;\n\t\t\t\t\t\t\tinc.nodesToHandle -= intersectionLength;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\told.howMany -= inc.nodesToHandle;\n\t\t\t\t\t\t\tinc.nodesToHandle = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( inc.offset <= old.offset ) {\n\t\t\t\t\t\t\tinc.nodesToHandle -= old.howMany;\n\t\t\t\t\t\t\told.howMany = 0;\n\t\t\t\t\t\t} else if ( inc.offset < oldEnd ) {\n\t\t\t\t\t\t\tconst intersectionLength = oldEnd - inc.offset;\n\n\t\t\t\t\t\t\told.howMany -= intersectionLength;\n\t\t\t\t\t\t\tinc.nodesToHandle -= intersectionLength;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( old.type == 'remove' ) {\n\t\t\t\t\tif ( incEnd <= old.offset ) {\n\t\t\t\t\t\told.offset -= inc.howMany;\n\t\t\t\t\t} else if ( inc.offset < old.offset ) {\n\t\t\t\t\t\tinc.nodesToHandle += old.howMany;\n\t\t\t\t\t\told.howMany = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( old.type == 'attribute' ) {\n\t\t\t\t\tif ( incEnd <= old.offset ) {\n\t\t\t\t\t\told.offset -= inc.howMany;\n\t\t\t\t\t} else if ( inc.offset < old.offset ) {\n\t\t\t\t\t\tconst intersectionLength = incEnd - old.offset;\n\n\t\t\t\t\t\told.offset = inc.offset;\n\t\t\t\t\t\told.howMany -= intersectionLength;\n\t\t\t\t\t} else if ( inc.offset < oldEnd ) {\n\t\t\t\t\t\tif ( incEnd <= oldEnd ) {\n\t\t\t\t\t\t\t// On first sight in this case we don't need to split attribute operation into two.\n\t\t\t\t\t\t\t// However the changes set is later converted to actions (see `_generateActionsFromChanges`).\n\t\t\t\t\t\t\t// For that reason, no two changes may intersect.\n\t\t\t\t\t\t\t// So we cannot have an attribute change that \"contains\" remove change.\n\t\t\t\t\t\t\t// Attribute change needs to be split.\n\t\t\t\t\t\t\tconst howMany = old.howMany;\n\n\t\t\t\t\t\t\told.howMany = inc.offset - old.offset;\n\n\t\t\t\t\t\t\tconst howManyAfter = howMany - old.howMany - inc.nodesToHandle;\n\n\t\t\t\t\t\t\t// Add the second part of attribute change to the beginning of processed array so it won't\n\t\t\t\t\t\t\t// be processed again in this loop.\n\t\t\t\t\t\t\tchanges.unshift( {\n\t\t\t\t\t\t\t\ttype: 'attribute',\n\t\t\t\t\t\t\t\toffset: inc.offset,\n\t\t\t\t\t\t\t\thowMany: howManyAfter,\n\t\t\t\t\t\t\t\tcount: this._changeCount++\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\told.howMany -= oldEnd - inc.offset;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( inc.type == 'attribute' ) {\n\t\t\t\t// In case of attribute change, `howMany` should be kept same as `nodesToHandle`. It's not an error.\n\t\t\t\tif ( old.type == 'insert' ) {\n\t\t\t\t\tif ( inc.offset < old.offset && incEnd > old.offset ) {\n\t\t\t\t\t\tif ( incEnd > oldEnd ) {\n\t\t\t\t\t\t\t// This case is similar to a case described when incoming change was insert and old change was attribute.\n\t\t\t\t\t\t\t// See comment above.\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t// This time incoming change is attribute. We need to split incoming change in this case too.\n\t\t\t\t\t\t\t// However this time, the second part of the attribute change needs to be processed further\n\t\t\t\t\t\t\t// because there might be other changes that it collides with.\n\t\t\t\t\t\t\tconst attributePart = {\n\t\t\t\t\t\t\t\ttype: 'attribute',\n\t\t\t\t\t\t\t\toffset: oldEnd,\n\t\t\t\t\t\t\t\thowMany: incEnd - oldEnd,\n\t\t\t\t\t\t\t\tcount: this._changeCount++\n\t\t\t\t\t\t\t} as const;\n\n\t\t\t\t\t\t\tthis._handleChange( attributePart, changes );\n\n\t\t\t\t\t\t\tchanges.push( attributePart );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tinc.nodesToHandle = old.offset - inc.offset;\n\t\t\t\t\t\tinc.howMany = inc.nodesToHandle;\n\t\t\t\t\t} else if ( inc.offset >= old.offset && inc.offset < oldEnd ) {\n\t\t\t\t\t\tif ( incEnd > oldEnd ) {\n\t\t\t\t\t\t\tinc.nodesToHandle = incEnd - oldEnd;\n\t\t\t\t\t\t\tinc.offset = oldEnd;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tinc.nodesToHandle = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( old.type == 'remove' ) {\n\t\t\t\t\t// This is a case when attribute change \"contains\" remove change.\n\t\t\t\t\t// The attribute change needs to be split into two because changes cannot intersect.\n\t\t\t\t\tif ( inc.offset < old.offset && incEnd > old.offset ) {\n\t\t\t\t\t\tconst attributePart = {\n\t\t\t\t\t\t\ttype: 'attribute',\n\t\t\t\t\t\t\toffset: old.offset,\n\t\t\t\t\t\t\thowMany: incEnd - old.offset,\n\t\t\t\t\t\t\tcount: this._changeCount++\n\t\t\t\t\t\t} as const;\n\n\t\t\t\t\t\tthis._handleChange( attributePart, changes );\n\n\t\t\t\t\t\tchanges.push( attributePart );\n\n\t\t\t\t\t\tinc.nodesToHandle = old.offset - inc.offset;\n\t\t\t\t\t\tinc.howMany = inc.nodesToHandle;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( old.type == 'attribute' ) {\n\t\t\t\t\t// There are only two conflicting scenarios possible here:\n\t\t\t\t\tif ( inc.offset >= old.offset && incEnd <= oldEnd ) {\n\t\t\t\t\t\t// `old` change includes `inc` change, or they are the same.\n\t\t\t\t\t\tinc.nodesToHandle = 0;\n\t\t\t\t\t\tinc.howMany = 0;\n\t\t\t\t\t\tinc.offset = 0;\n\t\t\t\t\t} else if ( inc.offset <= old.offset && incEnd >= oldEnd ) {\n\t\t\t\t\t\t// `inc` change includes `old` change.\n\t\t\t\t\t\told.howMany = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinc.howMany = inc.nodesToHandle;\n\t\tdelete inc.nodesToHandle;\n\t}\n\n\t/**\n\t * Returns an object with a single insert change description.\n\t *\n\t * @param parent The element in which the change happened.\n\t * @param offset The offset at which change happened.\n\t * @param elementSnapshot The snapshot of the removed element a character.\n\t * @returns The diff item.\n\t */\n\tprivate _getInsertDiff(\n\t\tparent: Element | DocumentFragment,\n\t\toffset: number,\n\t\telementSnapshot: { name: string; attributes: Map<string, unknown> }\n\t): DiffItemInsert & DiffItemInternal {\n\t\treturn {\n\t\t\ttype: 'insert',\n\t\t\tposition: Position._createAt( parent, offset ),\n\t\t\tname: elementSnapshot.name,\n\t\t\tattributes: new Map( elementSnapshot.attributes ),\n\t\t\tlength: 1,\n\t\t\tchangeCount: this._changeCount++\n\t\t};\n\t}\n\n\t/**\n\t * Returns an object with a single remove change description.\n\t *\n\t * @param parent The element in which change happened.\n\t * @param offset The offset at which change happened.\n\t * @param elementSnapshot The snapshot of the removed element a character.\n\t * @returns The diff item.\n\t */\n\tprivate _getRemoveDiff(\n\t\tparent: Element | DocumentFragment,\n\t\toffset: number,\n\t\telementSnapshot: { name: string; attributes: Map<string, unknown> }\n\t): DiffItemRemove & DiffItemInternal {\n\t\treturn {\n\t\t\ttype: 'remove',\n\t\t\tposition: Position._createAt( parent, offset ),\n\t\t\tname: elementSnapshot.name,\n\t\t\tattributes: new Map( elementSnapshot.attributes ),\n\t\t\tlength: 1,\n\t\t\tchangeCount: this._changeCount++\n\t\t};\n\t}\n\n\t/**\n\t * Returns an array of objects where each one is a single attribute change description.\n\t *\n\t * @param range The range where the change happened.\n\t * @param oldAttributes A map, map iterator or compatible object that contains attributes before the change.\n\t * @param newAttributes A map, map iterator or compatible object that contains attributes after the change.\n\t * @returns An array containing one or more diff items.\n\t */\n\tprivate _getAttributesDiff(\n\t\trange: Range,\n\t\toldAttributes: Map<string, unknown>,\n\t\tnewAttributes: Map<string, unknown>\n\t): Array<DiffItemAttribute & DiffItemInternal> {\n\t\t// Results holder.\n\t\tconst diffs: Array<DiffItemAttribute & DiffItemInternal> = [];\n\n\t\t// Clone new attributes as we will be performing changes on this object.\n\t\tnewAttributes = new Map( newAttributes );\n\n\t\t// Look through old attributes.\n\t\tfor ( const [ key, oldValue ] of oldAttributes ) {\n\t\t\t// Check what is the new value of the attribute (or if it was removed).\n\t\t\tconst newValue = newAttributes.has( key ) ? newAttributes.get( key ) : null;\n\n\t\t\t// If values are different (or attribute was removed)...\n\t\t\tif ( newValue !== oldValue ) {\n\t\t\t\t// Add diff item.\n\t\t\t\tdiffs.push( {\n\t\t\t\t\ttype: 'attribute',\n\t\t\t\t\tposition: range.start,\n\t\t\t\t\trange: range.clone(),\n\t\t\t\t\tlength: 1,\n\t\t\t\t\tattributeKey: key,\n\t\t\t\t\tattributeOldValue: oldValue,\n\t\t\t\t\tattributeNewValue: newValue,\n\t\t\t\t\tchangeCount: this._changeCount++\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Prevent returning two diff items for the same change.\n\t\t\tnewAttributes.delete( key );\n\t\t}\n\n\t\t// Look through new attributes that weren't handled above.\n\t\tfor ( const [ key, newValue ] of newAttributes ) {\n\t\t\t// Each of them is a new attribute. Add diff item.\n\t\t\tdiffs.push( {\n\t\t\t\ttype: 'attribute',\n\t\t\t\tposition: range.start,\n\t\t\t\trange: range.clone(),\n\t\t\t\tlength: 1,\n\t\t\t\tattributeKey: key,\n\t\t\t\tattributeOldValue: null,\n\t\t\t\tattributeNewValue: newValue,\n\t\t\t\tchangeCount: this._changeCount++\n\t\t\t} );\n\t\t}\n\n\t\treturn diffs;\n\t}\n\n\t/**\n\t * Checks whether given element or any of its parents is an element that is buffered as an inserted element.\n\t */\n\tprivate _isInInsertedElement( element: Element | DocumentFragment ): boolean {\n\t\tconst parent = element.parent;\n\n\t\tif ( !parent ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst changes = this._changesInElement.get( parent );\n\t\tconst offset = element.startOffset;\n\n\t\tif ( changes ) {\n\t\t\tfor ( const change of changes ) {\n\t\t\t\tif ( change.type == 'insert' && offset! >= change.offset && offset! < change.offset + change.howMany ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this._isInInsertedElement( parent );\n\t}\n\n\t/**\n\t * Removes deeply all buffered changes that are registered in elements from range specified by `parent`, `offset`\n\t * and `howMany`.\n\t */\n\tprivate _removeAllNestedChanges( parent: Element | DocumentFragment, offset: number, howMany: number ) {\n\t\tconst range = new Range( Position._createAt( parent, offset ), Position._createAt( parent, offset + howMany ) );\n\n\t\tfor ( const item of range.getItems( { shallow: true } ) ) {\n\t\t\tif ( item.is( 'element' ) ) {\n\t\t\t\tthis._elementSnapshots.delete( item );\n\t\t\t\tthis._changesInElement.delete( item );\n\n\t\t\t\tthis._removeAllNestedChanges( item, 0, item.maxOffset );\n\t\t\t}\n\t\t}\n\t}\n}\n\ninterface ChangeItem {\n\ttype: 'insert' | 'remove' | 'attribute';\n\toffset: number;\n\thowMany: number;\n\tcount: number;\n\tnodesToHandle?: number;\n}\n\n/**\n * Returns an array that is a copy of passed child list with the exception that text nodes are split to one or more\n * objects, each representing one character and attributes set on that character.\n */\nfunction _getChildrenSnapshot( children: Iterable<Node> ) {\n\tconst snapshot = [];\n\n\tfor ( const child of children ) {\n\t\tif ( child.is( '$text' ) ) {\n\t\t\tfor ( let i = 0; i < child.data.length; i++ ) {\n\t\t\t\tsnapshot.push( {\n\t\t\t\t\tname: '$text',\n\t\t\t\t\tattributes: new Map( child.getAttributes() )\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\t\t\tsnapshot.push( {\n\t\t\t\tname: ( child as Element ).name,\n\t\t\t\tattributes: new Map( child.getAttributes() )\n\t\t\t} );\n\t\t}\n\t}\n\n\treturn snapshot;\n}\n\n/**\n * Generates array of actions for given changes set.\n * It simulates what `diff` function does.\n * Generated actions are:\n * - 'e' for 'equal' - when item at that position did not change,\n * - 'i' for 'insert' - when item at that position was inserted,\n * - 'r' for 'remove' - when item at that position was removed,\n * - 'a' for 'attribute' - when item at that position has it attributes changed.\n *\n * Example (assume that uppercase letters have bold attribute, compare with function code):\n *\n * children before:\tfooBAR\n * children after:\tfoxybAR\n *\n * changes: type: remove, offset: 1, howMany: 1\n *\t\t\ttype: insert, offset: 2, howMany: 2\n *\t\t\ttype: attribute, offset: 4, howMany: 1\n *\n * expected actions: equal (f), remove (o), equal (o), insert (x), insert (y), attribute (b), equal (A), equal (R)\n *\n * steps taken by th script:\n *\n * 1. change = \"type: remove, offset: 1, howMany: 1\"; offset = 0; oldChildrenHandled = 0\n * 1.1 between this change and the beginning is one not-changed node, fill with one equal action, one old child has been handled\n * 1.2 this change removes one node, add one remove action\n * 1.3 change last visited `offset` to 1\n * 1.4 since an old child has been removed, one more old child has been handled\n * 1.5 actions at this point are: equal, remove\n *\n * 2. change = \"type: insert, offset: 2, howMany: 2\"; offset = 1; oldChildrenHandled = 2\n * 2.1 between this change and previous change is one not-changed node, add equal action, another one old children has been handled\n * 2.2 this change inserts two nodes, add two insert actions\n * 2.3 change last visited offset to the end of the inserted range, that is 4\n * 2.4 actions at this point are: equal, remove, equal, insert, insert\n *\n * 3. change = \"type: attribute, offset: 4, howMany: 1\"; offset = 4, oldChildrenHandled = 3\n * 3.1 between this change and previous change are no not-changed nodes\n * 3.2 this change changes one node, add one attribute action\n * 3.3 change last visited `offset` to the end of change range, that is 5\n * 3.4 since an old child has been changed, one more old child has been handled\n * 3.5 actions at this point are: equal, remove, equal, insert, insert, attribute\n *\n * 4. after loop oldChildrenHandled = 4, oldChildrenLength = 6 (fooBAR is 6 characters)\n * 4.1 fill up with two equal actions\n *\n * The result actions are: equal, remove, equal, insert, insert, attribute, equal, equal.\n */\nfunction _generateActionsFromChanges( oldChildrenLength: number, changes: Array<ChangeItem> ) {\n\tconst actions: Array<string> = [];\n\n\tlet offset = 0;\n\tlet oldChildrenHandled = 0;\n\n\t// Go through all buffered changes.\n\tfor ( const change of changes ) {\n\t\t// First, fill \"holes\" between changes with \"equal\" actions.\n\t\tif ( change.offset > offset ) {\n\t\t\tfor ( let i = 0; i < change.offset - offset; i++ ) {\n\t\t\t\tactions.push( 'e' );\n\t\t\t}\n\n\t\t\toldChildrenHandled += change.offset - offset;\n\t\t}\n\n\t\t// Then, fill up actions accordingly to change type.\n\t\tif ( change.type == 'insert' ) {\n\t\t\tfor ( let i = 0; i < change.howMany; i++ ) {\n\t\t\t\tactions.push( 'i' );\n\t\t\t}\n\n\t\t\t// The last handled offset is after inserted range.\n\t\t\toffset = change.offset + change.howMany;\n\t\t} else if ( change.type == 'remove' ) {\n\t\t\tfor ( let i = 0; i < change.howMany; i++ ) {\n\t\t\t\tactions.push( 'r' );\n\t\t\t}\n\n\t\t\t// The last handled offset is at the position where the nodes were removed.\n\t\t\toffset = change.offset;\n\t\t\t// We removed `howMany` old nodes, update `oldChildrenHandled`.\n\t\t\toldChildrenHandled += change.howMany;\n\t\t} else {\n\t\t\tactions.push( ...'a'.repeat( change.howMany ).split( '' ) );\n\n\t\t\t// The last handled offset is at the position after the changed range.\n\t\t\toffset = change.offset + change.howMany;\n\t\t\t// We changed `howMany` old nodes, update `oldChildrenHandled`.\n\t\t\toldChildrenHandled += change.howMany;\n\t\t}\n\t}\n\n\t// Fill \"equal\" actions at the end of actions set. Use `oldChildrenHandled` to see how many children\n\t// has not been changed / removed at the end of their parent.\n\tif ( oldChildrenHandled < oldChildrenLength ) {\n\t\tfor ( let i = 0; i < oldChildrenLength - oldChildrenHandled - offset; i++ ) {\n\t\t\tactions.push( 'e' );\n\t\t}\n\t}\n\n\treturn actions;\n}\n\n/**\n * Filter callback for Array.filter that filters out change entries that are in graveyard.\n */\nfunction _changesInGraveyardFilter( entry: DiffItem ) {\n\tconst posInGy = 'position' in entry && entry.position!.root.rootName == '$graveyard';\n\tconst rangeInGy = 'range' in entry && entry.range.root.rootName == '$graveyard';\n\n\treturn !posInGy && !rangeInGy;\n}\n\n/**\n * The single diff item.\n *\n * Could be one of:\n *\n * * {@link module:engine/model/differ~DiffItemInsert `DiffItemInsert`},\n * * {@link module:engine/model/differ~DiffItemRemove `DiffItemRemove`},\n * * {@link module:engine/model/differ~DiffItemAttribute `DiffItemAttribute`}.\n */\nexport type DiffItem = DiffItemInsert | DiffItemRemove | DiffItemAttribute;\n\n/**\n * A single diff item for inserted nodes.\n */\nexport interface DiffItemInsert {\n\n\t/**\n\t * The type of diff item.\n\t */\n\ttype: 'insert';\n\n\t/**\n\t * The name of the inserted elements or `'$text'` for a text node.\n\t */\n\tname: string;\n\n\t/**\n\t * Map of attributes that were set on the item while it was inserted.\n\t */\n\tattributes: Map<string, unknown>;\n\n\t/**\n\t * The position where the node was inserted.\n\t */\n\tposition: Position;\n\n\t/**\n\t * The length of an inserted text node. For elements, it is always 1 as each inserted element is counted as a one.\n\t */\n\tlength: number;\n}\n\n/**\n * A single diff item for removed nodes.\n */\nexport interface DiffItemRemove {\n\n\t/**\n\t * The type of diff item.\n\t */\n\ttype: 'remove';\n\n\t/**\n\t * The name of the removed element or `'$text'` for a text node.\n\t */\n\tname: string;\n\n\t/**\n\t * Map of attributes that were set on the item while it was removed.\n\t */\n\tattributes: Map<string, unknown>;\n\n\t/**\n\t * The position where the node was removed.\n\t */\n\tposition: Position;\n\n\t/**\n\t * The length of a removed text node. For elements, it is always 1, as each removed element is counted as a one.\n\t */\n\tlength: number;\n}\n\n/**\n * A single diff item for attribute change.\n */\nexport interface DiffItemAttribute {\n\n\t/**\n\t * The type of diff item.\n\t */\n\ttype: 'attribute';\n\n\t/**\n\t * The name of the changed attribute.\n\t */\n\tattributeKey: string;\n\n\t/**\n\t * An attribute previous value (before change).\n\t */\n\tattributeOldValue: unknown;\n\n\t/**\n\t * An attribute new value (after change).\n\t */\n\tattributeNewValue: unknown;\n\n\t/**\n\t * The range where the change happened.\n\t */\n\trange: Range;\n}\n\n/**\n * A single diff item for a changed root.\n */\nexport interface DiffItemRoot {\n\n\t/**\n\t * Name of the changed root.\n\t */\n\tname: string;\n\n\t/**\n\t * Set accordingly if the root got attached or detached. Otherwise, not set.\n\t */\n\tstate?: 'attached' | 'detached';\n\n\t/**\n\t * Keeps all attribute changes that happened on the root.\n\t *\n\t * The keys are keys of the changed attributes. The values are objects containing the attribute value before the change\n\t * (`oldValue`) and after the change (`newValue`).\n\t *\n\t * Note, that if the root state changed (`state` is set), then `attributes` property will not be set. All attributes should be\n\t * handled together with the root being attached or detached.\n\t */\n\tattributes?: Record<string, { oldValue: unknown; newValue: unknown }>;\n}\n\ninterface DiffItemInternal {\n\tchangeCount?: number;\n\tposition?: Position;\n\tlength?: number;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport type Operation from './operation/operation';\n\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\n\n/**\n * @module engine/model/history\n */\n\n/**\n * `History` keeps the track of all the operations applied to the {@link module:engine/model/document~Document document}.\n */\nexport default class History {\n\t/**\n\t * Operations added to the history.\n\t */\n\tprivate _operations: Array<Operation> = [];\n\n\t/**\n\t * Holds an information which {@link module:engine/model/operation/operation~Operation operation} undoes which\n\t * {@link module:engine/model/operation/operation~Operation operation}.\n\t *\n\t * Keys of the map are \"undoing operations\", that is operations that undone some other operations. For each key, the\n\t * value is an operation that has been undone by the \"undoing operation\".\n\t */\n\tprivate _undoPairs: Map<Operation, Operation> = new Map();\n\n\t/**\n\t * Holds all undone operations.\n\t */\n\tprivate _undoneOperations: Set<Operation> = new Set();\n\n\t/**\n\t * A map that allows retrieving the operations fast based on the given base version.\n\t */\n\tprivate _baseVersionToOperationIndex: Map<number, number> = new Map();\n\n\t/**\n\t * The history version.\n\t */\n\tprivate _version: number = 0;\n\n\t/**\n\t * The gap pairs kept in the <from,to> format.\n\t *\n\t * Anytime the `history.version` is set to a version larger than `history.version + 1`,\n\t * a new <lastHistoryVersion, newHistoryVersion> entry is added to the map.\n\t */\n\tprivate _gaps: Map<number, number> = new Map();\n\n\t/**\n\t * The version of the last operation in the history.\n\t *\n\t * The history version is incremented automatically when a new operation is added to the history.\n\t * Setting the version manually should be done only in rare circumstances when a gap is planned\n\t * between history versions. When doing so, a gap will be created and the history will accept adding\n\t * an operation with base version equal to the new history version.\n\t */\n\tpublic get version(): number {\n\t\treturn this._version;\n\t}\n\n\tpublic set version( version: number ) {\n\t\t// Store a gap if there are some operations already in the history and the\n\t\t// new version does not increment the latest one.\n\t\tif ( this._operations.length && version > this._version + 1 ) {\n\t\t\tthis._gaps.set( this._version, version );\n\t\t}\n\n\t\tthis._version = version;\n\t}\n\n\t/**\n\t * The last history operation.\n\t */\n\tpublic get lastOperation(): Operation | undefined {\n\t\treturn this._operations[ this._operations.length - 1 ];\n\t}\n\n\t/**\n\t * Adds an operation to the history and increments the history version.\n\t *\n\t * The operation's base version should be equal to the history version. Otherwise an error is thrown.\n\t */\n\tpublic addOperation( operation: Operation ): void {\n\t\tif ( operation.baseVersion !== this.version ) {\n\t\t\t/**\n\t\t\t * Only operations with matching versions can be added to the history.\n\t\t\t *\n\t\t\t * @error model-document-history-addoperation-incorrect-version\n\t\t\t * @param errorData The operation and the current document history version.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-document-history-addoperation-incorrect-version', this, {\n\t\t\t\toperation,\n\t\t\t\thistoryVersion: this.version\n\t\t\t} );\n\t\t}\n\n\t\tthis._operations.push( operation );\n\t\tthis._version++;\n\n\t\tthis._baseVersionToOperationIndex.set( operation.baseVersion, this._operations.length - 1 );\n\t}\n\n\t/**\n\t * Returns operations from the given range of operation base versions that were added to the history.\n\t *\n\t * Note that there may be gaps in operations base versions.\n\t *\n\t * @param fromBaseVersion Base version from which operations should be returned (inclusive).\n\t * @param toBaseVersion Base version up to which operations should be returned (exclusive).\n * @returns History operations for the given range, in chronological order.\n\t */\n\tpublic getOperations( fromBaseVersion?: number, toBaseVersion: number = this.version ): Array<Operation> {\n\t\t// When there is no operation in the history, return an empty array.\n\t\t// After that we can be sure that `firstOperation`, `lastOperation` are not nullish.\n\t\tif ( !this._operations.length ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst firstOperation = this._operations[ 0 ];\n\n\t\tif ( fromBaseVersion === undefined ) {\n\t\t\tfromBaseVersion = firstOperation.baseVersion!;\n\t\t}\n\n\t\t// Change exclusive `toBaseVersion` to inclusive, so it will refer to the actual index.\n\t\t// Thanks to that mapping from base versions to operation indexes are possible.\n\t\tlet inclusiveTo = toBaseVersion - 1;\n\n\t\t// Check if \"from\" or \"to\" point to a gap between versions.\n\t\t// If yes, then change the incorrect position to the proper side of the gap.\n\t\t// Thanks to it, it will be possible to get index of the operation.\n\t\tfor ( const [ gapFrom, gapTo ] of this._gaps ) {\n\t\t\tif ( fromBaseVersion > gapFrom && fromBaseVersion < gapTo ) {\n\t\t\t\tfromBaseVersion = gapTo;\n\t\t\t}\n\n\t\t\tif ( inclusiveTo > gapFrom && inclusiveTo < gapTo ) {\n\t\t\t\tinclusiveTo = gapFrom - 1;\n\t\t\t}\n\t\t}\n\n\t\t// If the whole range is outside of the operation versions, then return an empty array.\n\t\tif ( inclusiveTo < firstOperation.baseVersion! || fromBaseVersion > this.lastOperation!.baseVersion! ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tlet fromIndex = this._baseVersionToOperationIndex.get( fromBaseVersion );\n\n\t\t// If the range starts before the first operation, then use the first operation as the range's start.\n\t\tif ( fromIndex === undefined ) {\n\t\t\tfromIndex = 0;\n\t\t}\n\n\t\tlet toIndex = this._baseVersionToOperationIndex.get( inclusiveTo );\n\n\t\t// If the range ends after the last operation, then use the last operation as the range's end.\n\t\tif ( toIndex === undefined ) {\n\t\t\ttoIndex = this._operations.length - 1;\n\t\t}\n\n\t\t// Return the part of the history operations based on the calculated start index and end index.\n\t\treturn this._operations.slice(\n\t\t\tfromIndex,\n\n\t\t\t// The `toIndex` should be included in the returned operations, so add `1`.\n\t\t\ttoIndex + 1\n\t\t);\n\t}\n\n\t/**\n\t * Returns operation from the history that bases on given `baseVersion`.\n\t *\n\t * @param baseVersion Base version of the operation to get.\n\t * @returns Operation with given base version or `undefined` if there is no such operation in history.\n\t */\n\tpublic getOperation( baseVersion: number ): Operation | undefined {\n\t\tconst operationIndex = this._baseVersionToOperationIndex.get( baseVersion );\n\n\t\tif ( operationIndex === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._operations[ operationIndex ];\n\t}\n\n\t/**\n\t * Marks in history that one operation is an operation that is undoing the other operation. By marking operation this way,\n\t * history is keeping more context information about operations, which helps in operational transformation.\n\t *\n\t * @param undoneOperation Operation which is undone by `undoingOperation`.\n\t * @param undoingOperation Operation which undoes `undoneOperation`.\n\t */\n\tpublic setOperationAsUndone( undoneOperation: Operation, undoingOperation: Operation ): void {\n\t\tthis._undoPairs.set( undoingOperation, undoneOperation );\n\t\tthis._undoneOperations.add( undoneOperation );\n\t}\n\n\t/**\n\t * Checks whether given `operation` is undoing any other operation.\n\t *\n\t * @param operation Operation to check.\n\t * @returns `true` if given `operation` is undoing any other operation, `false` otherwise.\n\t */\n\tpublic isUndoingOperation( operation: Operation ): boolean {\n\t\treturn this._undoPairs.has( operation );\n\t}\n\n\t/**\n\t * Checks whether given `operation` has been undone by any other operation.\n\t *\n\t * @param operation Operation to check.\n\t * @returns `true` if given `operation` has been undone any other operation, `false` otherwise.\n\t */\n\tpublic isUndoneOperation( operation: Operation ): boolean {\n\t\treturn this._undoneOperations.has( operation );\n\t}\n\n\t/**\n\t * For given `undoingOperation`, returns the operation which has been undone by it.\n\t *\n\t * @returns Operation that has been undone by given `undoingOperation` or `undefined`\n\t * if given `undoingOperation` is not undoing any other operation.\n\t */\n\tpublic getUndoneOperation( undoingOperation: Operation ): Operation | undefined {\n\t\treturn this._undoPairs.get( undoingOperation );\n\t}\n\n\t/**\n\t * Resets the history of operations.\n\t */\n\tpublic reset(): void {\n\t\tthis._version = 0;\n\t\tthis._undoPairs = new Map();\n\t\tthis._operations = [];\n\t\tthis._undoneOperations = new Set();\n\t\tthis._gaps = new Map();\n\t\tthis._baseVersionToOperationIndex = new Map();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/rootelement\n */\n\nimport Element from './element';\n\nimport type Document from './document';\n\n/**\n * Type of {@link module:engine/model/element~Element} that is a root of a model tree.\n */\nexport default class RootElement extends Element {\n\t/**\n\t * Unique root name used to identify this root element by {@link module:engine/model/document~Document}.\n\t */\n\tpublic override readonly rootName: string;\n\n\t/**\n\t * Document that is an owner of this root.\n\t */\n\tprivate readonly _document: Document;\n\n\t/**\n\t * @internal\n\t */\n\tpublic _isAttached = true;\n\n\t/**\n\t * Informs if the root element is loaded (default).\n\t *\n\t * @internal\n\t */\n\tpublic _isLoaded = true;\n\n\t/**\n\t * Creates root element.\n\t *\n\t * @param document Document that is an owner of this root.\n\t * @param name Node name.\n\t * @param rootName Unique root name used to identify this root element by {@link module:engine/model/document~Document}.\n\t */\n\tconstructor( document: Document, name: string, rootName: string = 'main' ) {\n\t\tsuper( name );\n\n\t\tthis._document = document;\n\t\tthis.rootName = rootName;\n\t}\n\n\t/**\n\t * {@link module:engine/model/document~Document Document} that owns this root element.\n\t */\n\tpublic override get document(): Document {\n\t\treturn this._document;\n\t}\n\n\t/**\n\t * Informs if the root element is currently attached to the document, or not.\n\t *\n\t * A detached root is equivalent to being removed and cannot contain any children or markers.\n\t *\n\t * By default, a newly added root is attached. It can be detached using\n\t * {@link module:engine/model/writer~Writer#detachRoot `Writer#detachRoot`}. A detached root can be re-attached again using\n\t * {@link module:engine/model/writer~Writer#addRoot `Writer#addRoot`}.\n\t */\n\tpublic override isAttached(): boolean {\n\t\treturn this._isAttached;\n\t}\n\n\t/**\n\t * Converts `RootElement` instance to `string` containing its name.\n\t *\n\t * @returns `RootElement` instance converted to `string`.\n\t */\n\tpublic override toJSON(): unknown {\n\t\treturn this.rootName;\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \treturn this.rootName;\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public override log(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( 'ModelRootElement: ' + this );\n\t// @if CK_DEBUG_ENGINE // }\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nRootElement.prototype.is = function( type: string, name?: string ): boolean {\n\tif ( !name ) {\n\t\treturn type === 'rootElement' || type === 'model:rootElement' ||\n\t\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\t\ttype === 'element' || type === 'model:element' ||\n\t\t\ttype === 'node' || type === 'model:node';\n\t}\n\n\treturn name === this.name && (\n\t\ttype === 'rootElement' || type === 'model:rootElement' ||\n\t\t// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.\n\t\ttype === 'element' || type === 'model:element'\n\t);\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/document\n */\n\nimport Differ from './differ';\nimport DocumentSelection from './documentselection';\nimport History from './history';\nimport RootElement from './rootelement';\n\nimport type { SelectionChangeEvent } from './selection';\nimport type { default as Model, ModelApplyOperationEvent } from './model';\nimport type { MarkerCollectionUpdateEvent, MarkerChangeEvent } from './markercollection';\nimport type Batch from './batch';\nimport type Position from './position';\nimport type Range from './range';\nimport type Writer from './writer';\n\nimport {\n\tCKEditorError,\n\tCollection,\n\tEmitterMixin,\n\tisInsideSurrogatePair,\n\tisInsideCombinedSymbol\n} from '@ckeditor/ckeditor5-utils';\n\nimport { clone } from 'lodash-es';\n\n// @if CK_DEBUG_ENGINE // const { logDocument } = require( '../dev-utils/utils' );\n\nconst graveyardName = '$graveyard';\n\n/**\n * Data model's document. It contains the model's structure, its selection and the history of changes.\n *\n * Read more about working with the model in\n * {@glink framework/architecture/editing-engine#model introduction to the the editing engine's architecture}.\n *\n * Usually, the document contains just one {@link module:engine/model/document~Document#roots root element}, so\n * you can retrieve it by just calling {@link module:engine/model/document~Document#getRoot} without specifying its name:\n *\n * ```ts\n * model.document.getRoot(); // -> returns the main root\n * ```\n *\n * However, the document may contain multiple roots – e.g. when the editor has multiple editable areas\n * (e.g. a title and a body of a message).\n */\nexport default class Document extends EmitterMixin() {\n\t/**\n\t * The {@link module:engine/model/model~Model model} that the document is a part of.\n\t */\n\tpublic readonly model: Model;\n\n\t/**\n\t * The document's history.\n\t */\n\tpublic readonly history: History;\n\n\t/**\n\t * The selection in this document.\n\t */\n\tpublic readonly selection: DocumentSelection;\n\n\t/**\n\t * A list of roots that are owned and managed by this document. Use {@link #createRoot}, {@link #getRoot} and\n\t * {@link #getRootNames} to manipulate it.\n\t */\n\tpublic readonly roots: Collection<RootElement>;\n\n\t/**\n\t * The model differ object. Its role is to buffer changes done on the model document and then calculate a diff of those changes.\n\t */\n\tpublic readonly differ: Differ;\n\n\t/**\n\t * Defines whether the document is in a read-only mode.\n\t *\n\t * The user should not be able to change the data of a document that is read-only.\n\t *\n\t * @readonly\n\t */\n\tpublic isReadOnly: boolean;\n\n\t/**\n\t * Post-fixer callbacks registered to the model document.\n\t */\n\tprivate readonly _postFixers: Set<ModelPostFixer>;\n\n\t/**\n\t * A flag that indicates whether the selection has changed since last change block.\n\t */\n\tprivate _hasSelectionChangedFromTheLastChangeBlock: boolean;\n\n\t/**\n\t * Creates an empty document instance with no {@link #roots} (other than\n\t * the {@link #graveyard graveyard root}).\n\t */\n\tconstructor( model: Model ) {\n\t\tsuper();\n\n\t\tthis.model = model;\n\t\tthis.history = new History();\n\t\tthis.selection = new DocumentSelection( this );\n\t\tthis.roots = new Collection( { idProperty: 'rootName' } );\n\t\tthis.differ = new Differ( model.markers );\n\t\tthis.isReadOnly = false;\n\n\t\tthis._postFixers = new Set();\n\t\tthis._hasSelectionChangedFromTheLastChangeBlock = false;\n\n\t\t// Graveyard tree root. Document always have a graveyard root, which stores removed nodes.\n\t\tthis.createRoot( '$root', graveyardName );\n\n\t\t// Then, still before an operation is applied on model, buffer the change in differ.\n\t\tthis.listenTo<ModelApplyOperationEvent>( model, 'applyOperation', ( evt, args ) => {\n\t\t\tconst operation = args[ 0 ];\n\n\t\t\tif ( operation.isDocumentOperation ) {\n\t\t\t\tthis.differ.bufferOperation( operation );\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\n\t\t// After the operation is applied, bump document's version and add the operation to the history.\n\t\tthis.listenTo<ModelApplyOperationEvent>( model, 'applyOperation', ( evt, args ) => {\n\t\t\tconst operation = args[ 0 ];\n\n\t\t\tif ( operation.isDocumentOperation ) {\n\t\t\t\tthis.history.addOperation( operation );\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\n\t\t// Listen to selection changes. If selection changed, mark it.\n\t\tthis.listenTo<SelectionChangeEvent>( this.selection, 'change', () => {\n\t\t\tthis._hasSelectionChangedFromTheLastChangeBlock = true;\n\t\t} );\n\n\t\t// Buffer marker changes.\n\t\t// This is not covered in buffering operations because markers may change outside of them (when they\n\t\t// are modified using `model.markers` collection, not through `MarkerOperation`).\n\t\tthis.listenTo<MarkerCollectionUpdateEvent>( model.markers, 'update', ( evt, marker, oldRange, newRange, oldMarkerData ) => {\n\t\t\t// Copy the `newRange` to the new marker data as during the marker removal the range is not updated.\n\t\t\tconst newMarkerData = { ...marker.getData(), range: newRange };\n\n\t\t\t// Whenever marker is updated, buffer that change.\n\t\t\tthis.differ.bufferMarkerChange( marker.name, oldMarkerData, newMarkerData );\n\n\t\t\tif ( oldRange === null ) {\n\t\t\t\t// If this is a new marker, add a listener that will buffer change whenever marker changes.\n\t\t\t\tmarker.on<MarkerChangeEvent>( 'change', ( evt, oldRange ) => {\n\t\t\t\t\tconst markerData = marker.getData();\n\n\t\t\t\t\tthis.differ.bufferMarkerChange(\n\t\t\t\t\t\tmarker.name,\n\t\t\t\t\t\t{ ...markerData, range: oldRange },\n\t\t\t\t\t\tmarkerData\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\t// This is a solution for a problem that may occur during real-time editing. If one client detached a root and another added\n\t\t// something there at the same moment, the OT does not solve this problem currently. In such situation, the added elements would\n\t\t// stay in the detached root.\n\t\t//\n\t\t// This is incorrect, a detached root should be empty and all elements from it should be removed. To solve this, the post-fixer will\n\t\t// remove any element that is left in a detached root.\n\t\t//\n\t\t// Similarly, markers that are created at the beginning or at the end of the detached root will not be removed as well.\n\t\t//\n\t\t// The drawback of this solution over the OT solution is that the elements removed by the post-fixer will never be brought back.\n\t\t// If the root detachment gets undone (and the root is brought back), the removed elements will not be there.\n\t\tthis.registerPostFixer( writer => {\n\t\t\tlet result = false;\n\n\t\t\tfor ( const root of this.roots ) {\n\t\t\t\tif ( !root.isAttached() && !root.isEmpty ) {\n\t\t\t\t\twriter.remove( writer.createRangeIn( root ) );\n\n\t\t\t\t\tresult = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( const marker of this.model.markers ) {\n\t\t\t\tif ( !marker.getRange().root.isAttached() ) {\n\t\t\t\t\twriter.removeMarker( marker );\n\n\t\t\t\t\tresult = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t} );\n\t}\n\n\t/**\n\t * The document version. Every applied operation increases the version number. It is used to\n\t * ensure that operations are applied on a proper document version.\n\t *\n\t * This property is equal to {@link module:engine/model/history~History#version `model.Document#history#version`}.\n\t *\n\t * If the {@link module:engine/model/operation/operation~Operation#baseVersion base version} does not match the document version,\n\t * a {@link module:utils/ckeditorerror~CKEditorError model-document-applyoperation-wrong-version} error is thrown.\n\t */\n\tpublic get version(): number {\n\t\treturn this.history.version;\n\t}\n\n\tpublic set version( version: number ) {\n\t\tthis.history.version = version;\n\t}\n\n\t/**\n\t * The graveyard tree root. A document always has a graveyard root that stores removed nodes.\n\t */\n\tpublic get graveyard(): RootElement {\n\t\treturn this.getRoot( graveyardName )!;\n\t}\n\n\t/**\n\t * Creates a new root.\n\t *\n\t * **Note:** do not use this method after the editor has been initialized! If you want to dynamically add a root, use\n\t * {@link module:engine/model/writer~Writer#addRoot `model.Writer#addRoot`} instead.\n\t *\n\t * @param elementName The element name. Defaults to `'$root'` which also has some basic schema defined\n\t * (e.g. `$block` elements are allowed inside the `$root`). Make sure to define a proper schema if you use a different name.\n\t * @param rootName A unique root name.\n\t * @returns The created root.\n\t */\n\tpublic createRoot( elementName: string = '$root', rootName: string = 'main' ): RootElement {\n\t\tif ( this.roots.get( rootName ) ) {\n\t\t\t/**\n\t\t\t * A root with the specified name already exists.\n\t\t\t *\n\t\t\t * @error model-document-createroot-name-exists\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'model-document-createroot-name-exists', this, { name: rootName } );\n\t\t}\n\n\t\tconst root = new RootElement( this, elementName, rootName );\n\t\tthis.roots.add( root );\n\n\t\treturn root;\n\t}\n\n\t/**\n\t * Removes all event listeners set by the document instance.\n\t */\n\tpublic destroy(): void {\n\t\tthis.selection.destroy();\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * Returns a root by its name.\n\t *\n\t * Detached roots are returned by this method. This is to be able to operate on the detached root (for example, to be able to create\n\t * a position inside such a root for undo feature purposes).\n\t *\n\t * @param name The root name of the root to return.\n\t * @returns The root registered under a given name or `null` when there is no root with the given name.\n\t */\n\tpublic getRoot( name: string = 'main' ): RootElement | null {\n\t\treturn this.roots.get( name );\n\t}\n\n\t/**\n\t * Returns an array with names of all roots added to the document (except the {@link #graveyard graveyard root}).\n\t *\n\t * Detached roots **are not** returned by this method by default. This is to make sure that all features or algorithms that operate\n\t * on the document data know which roots are still a part of the document and should be processed.\n\t *\n\t * @param includeDetached Specified whether detached roots should be returned as well.\n\t */\n\tpublic getRootNames( includeDetached = false ): Array<string> {\n\t\treturn this.getRoots( includeDetached ).map( root => root.rootName );\n\t}\n\n\t/**\n\t * Returns an array with all roots added to the document (except the {@link #graveyard graveyard root}).\n\t *\n\t * Detached roots **are not** returned by this method by default. This is to make sure that all features or algorithms that operate\n\t * on the document data know which roots are still a part of the document and should be processed.\n\t *\n\t * @param includeDetached Specified whether detached roots should be returned as well.\n\t */\n\tpublic getRoots( includeDetached = false ): Array<RootElement> {\n\t\treturn Array.from( this.roots )\n\t\t\t.filter( root => root != this.graveyard && ( includeDetached || root.isAttached() ) && root._isLoaded );\n\t}\n\n\t/**\n\t * Used to register a post-fixer callback. A post-fixer mechanism guarantees that the features\n\t * will operate on a correct model state.\n\t *\n\t * An execution of a feature may lead to an incorrect document tree state. The callbacks are used to fix the document tree after\n\t * it has changed. Post-fixers are fired just after all changes from the outermost change block were applied but\n\t * before the {@link module:engine/model/document~Document#event:change change event} is fired. If a post-fixer callback made\n\t * a change, it should return `true`. When this happens, all post-fixers are fired again to check if something else should\n\t * not be fixed in the new document tree state.\n\t *\n\t * As a parameter, a post-fixer callback receives a {@link module:engine/model/writer~Writer writer} instance connected with the\n\t * executed changes block. Thanks to that, all changes done by the callback will be added to the same\n\t * {@link module:engine/model/batch~Batch batch} (and undo step) as the original changes. This makes post-fixer changes transparent\n\t * for the user.\n\t *\n\t * An example of a post-fixer is a callback that checks if all the data were removed from the editor. If so, the\n\t * callback should add an empty paragraph so that the editor is never empty:\n\t *\n\t * ```ts\n\t * document.registerPostFixer( writer => {\n\t * \tconst changes = document.differ.getChanges();\n\t *\n\t * \t// Check if the changes lead to an empty root in the editor.\n\t * \tfor ( const entry of changes ) {\n\t * \t\tif ( entry.type == 'remove' && entry.position.root.isEmpty ) {\n\t * \t\t\twriter.insertElement( 'paragraph', entry.position.root, 0 );\n\t *\n\t * \t\t\t// It is fine to return early, even if multiple roots would need to be fixed.\n\t * \t\t\t// All post-fixers will be fired again, so if there are more empty roots, those will be fixed, too.\n\t * \t\t\treturn true;\n\t * \t\t}\n\t * \t}\n\t *\n\t * \treturn false;\n\t * } );\n\t * ```\n\t */\n\tpublic registerPostFixer( postFixer: ModelPostFixer ): void {\n\t\tthis._postFixers.add( postFixer );\n\t}\n\n\t/**\n\t * A custom `toJSON()` method to solve child-parent circular dependencies.\n\t *\n\t * @returns A clone of this object with the document property changed to a string.\n\t */\n\tpublic toJSON(): unknown {\n\t\tconst json: any = clone( this );\n\n\t\t// Due to circular references we need to remove parent reference.\n\t\tjson.selection = '[engine.model.DocumentSelection]';\n\t\tjson.model = '[engine.model.Model]';\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * Check if there were any changes done on document, and if so, call post-fixers,\n\t * fire `change` event for features and conversion and then reset the differ.\n\t * Fire `change:data` event when at least one operation or buffered marker changes the data.\n\t *\n\t * @internal\n\t * @fires change\n\t * @fires change:data\n\t * @param writer The writer on which post-fixers will be called.\n\t */\n\tpublic _handleChangeBlock( writer: Writer ): void {\n\t\tif ( this._hasDocumentChangedFromTheLastChangeBlock() ) {\n\t\t\tthis._callPostFixers( writer );\n\n\t\t\t// Refresh selection attributes according to the final position in the model after the change.\n\t\t\tthis.selection.refresh();\n\n\t\t\tif ( this.differ.hasDataChanges() ) {\n\t\t\t\tthis.fire<DocumentChangeEvent>( 'change:data', writer.batch );\n\t\t\t} else {\n\t\t\t\tthis.fire<DocumentChangeEvent>( 'change', writer.batch );\n\t\t\t}\n\n\t\t\t// Theoretically, it is not necessary to refresh selection after change event because\n\t\t\t// post-fixers are the last who should change the model, but just in case...\n\t\t\tthis.selection.refresh();\n\n\t\t\tthis.differ.reset();\n\t\t}\n\n\t\tthis._hasSelectionChangedFromTheLastChangeBlock = false;\n\t}\n\n\t/**\n\t * Returns whether there is a buffered change or if the selection has changed from the last\n\t * {@link module:engine/model/model~Model#enqueueChange `enqueueChange()` block}\n\t * or {@link module:engine/model/model~Model#change `change()` block}.\n\t *\n\t * @returns Returns `true` if document has changed from the last `change()` or `enqueueChange()` block.\n\t */\n\tprotected _hasDocumentChangedFromTheLastChangeBlock(): boolean {\n\t\treturn !this.differ.isEmpty || this._hasSelectionChangedFromTheLastChangeBlock;\n\t}\n\n\t/**\n\t * Returns the default root for this document which is either the first root that was added to the document using\n\t * {@link #createRoot} or the {@link #graveyard graveyard root} if no other roots were created.\n\t *\n\t * @returns The default root for this document.\n\t */\n\tprotected _getDefaultRoot(): RootElement {\n\t\tconst roots = this.getRoots();\n\n\t\treturn roots.length ? roots[ 0 ] : this.graveyard;\n\t}\n\n\t/**\n\t * Returns the default range for this selection. The default range is a collapsed range that starts and ends\n\t * at the beginning of this selection's document {@link #_getDefaultRoot default root}.\n\t *\n\t * @internal\n\t */\n\tpublic _getDefaultRange(): Range {\n\t\tconst defaultRoot = this._getDefaultRoot();\n\t\tconst model = this.model;\n\t\tconst schema = model.schema;\n\n\t\t// Find the first position where the selection can be put.\n\t\tconst position = model.createPositionFromPath( defaultRoot, [ 0 ] );\n\t\tconst nearestRange = schema.getNearestSelectionRange( position );\n\n\t\t// If valid selection range is not found - return range collapsed at the beginning of the root.\n\t\treturn nearestRange || model.createRange( position );\n\t}\n\n\t/**\n\t * Checks whether a given {@link module:engine/model/range~Range range} is a valid range for\n\t * the {@link #selection document's selection}.\n\t *\n\t * @internal\n\t * @param range A range to check.\n\t * @returns `true` if `range` is valid, `false` otherwise.\n\t */\n\tpublic _validateSelectionRange( range: Range ): boolean {\n\t\treturn validateTextNodePosition( range.start ) && validateTextNodePosition( range.end );\n\t}\n\n\t/**\n\t * Performs post-fixer loops. Executes post-fixer callbacks as long as none of them has done any changes to the model.\n\t *\n\t * @param writer The writer on which post-fixer callbacks will be called.\n\t */\n\tprivate _callPostFixers( writer: Writer ) {\n\t\tlet wasFixed = false;\n\n\t\tdo {\n\t\t\tfor ( const callback of this._postFixers ) {\n\t\t\t\t// Ensure selection attributes are up to date before each post-fixer.\n\t\t\t\t// https://github.com/ckeditor/ckeditor5-engine/issues/1673.\n\t\t\t\t//\n\t\t\t\t// It might be good to refresh the selection after each operation but at the moment it leads\n\t\t\t\t// to losing attributes for composition or and spell checking\n\t\t\t\t// https://github.com/ckeditor/ckeditor5-typing/issues/188\n\t\t\t\tthis.selection.refresh();\n\n\t\t\t\twasFixed = callback( writer );\n\n\t\t\t\tif ( wasFixed ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} while ( wasFixed );\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public log( version: any = null ): void {\n\t// @if CK_DEBUG_ENGINE // \tversion = version === null ? this.version : version;\n\t// @if CK_DEBUG_ENGINE // \tlogDocument( this, version );\n\t// @if CK_DEBUG_ENGINE // }\n}\n\n/**\n * Fired after each {@link module:engine/model/model~Model#enqueueChange `enqueueChange()` block} or the outermost\n * {@link module:engine/model/model~Model#change `change()` block} was executed and the document was changed\n * during that block's execution.\n *\n * The changes which this event will cover include:\n *\n * * document structure changes,\n * * selection changes,\n * * marker changes.\n *\n * If you want to be notified about all these changes, then simply listen to this event like this:\n *\n * ```ts\n * model.document.on( 'change', () => {\n * \tconsole.log( 'The document has changed!' );\n * } );\n * ```\n *\n * If, however, you only want to be notified about the data changes, then use `change:data` event,\n * which is fired for document structure changes and marker changes (which affects the data).\n *\n * ```ts\n * model.document.on( 'change:data', () => {\n * \tconsole.log( 'The data has changed!' );\n * } );\n * ```\n *\n * @eventName ~Document#change\n * @eventName ~Document#change:data\n * @param batch The batch that was used in the executed changes block.\n */\nexport type DocumentChangeEvent = {\n\tname: 'change' | 'change:data';\n\targs: [ batch: Batch ];\n};\n\n/**\n * Callback passed as an argument to the {@link module:engine/model/document~Document#registerPostFixer} method.\n */\nexport type ModelPostFixer = ( writer: Writer ) => boolean;\n\n/**\n * Checks whether given range boundary position is valid for document selection, meaning that is not between\n * unicode surrogate pairs or base character and combining marks.\n */\nfunction validateTextNodePosition( rangeBoundary: Position ) {\n\tconst textNode = rangeBoundary.textNode;\n\n\tif ( textNode ) {\n\t\tconst data = textNode.data;\n\t\tconst offset = rangeBoundary.offset - textNode.startOffset!;\n\n\t\treturn !isInsideSurrogatePair( data, offset ) && !isInsideCombinedSymbol( data, offset );\n\t}\n\n\treturn true;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/markercollection\n */\n\nimport TypeCheckable from './typecheckable';\nimport LiveRange, {\n\ttype LiveRangeChangeContentEvent,\n\ttype LiveRangeChangeRangeEvent,\n\ttype LiveRangeChangeEvent\n} from './liverange';\n\nimport type Position from './position';\nimport type Range from './range';\n\nimport { CKEditorError, EmitterMixin } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The collection of all {@link module:engine/model/markercollection~Marker markers} attached to the document.\n * It lets you {@link module:engine/model/markercollection~MarkerCollection#get get} markers or track them using\n * {@link module:engine/model/markercollection~MarkerCollection#event:update} event.\n *\n * To create, change or remove makers use {@link module:engine/model/writer~Writer model writers'} methods:\n * {@link module:engine/model/writer~Writer#addMarker} or {@link module:engine/model/writer~Writer#removeMarker}. Since\n * the writer is the only proper way to change the data model it is not possible to change markers directly using this\n * collection. All markers created by the writer will be automatically added to this collection.\n *\n * By default there is one marker collection available as {@link module:engine/model/model~Model#markers model property}.\n *\n * @see module:engine/model/markercollection~Marker\n */\nexport default class MarkerCollection extends EmitterMixin() implements Iterable<Marker> {\n\t/**\n\t * Stores {@link ~Marker markers} added to the collection.\n\t */\n\tprivate _markers: Map<string, Marker> = new Map();\n\n\t/**\n\t * Iterable interface.\n\t *\n\t * Iterates over all {@link ~Marker markers} added to the collection.\n\t */\n\tpublic [ Symbol.iterator ](): IterableIterator<Marker> {\n\t\treturn this._markers.values();\n\t}\n\n\t/**\n\t * Checks if given {@link ~Marker marker} or marker name is in the collection.\n\t *\n\t * @param markerOrName Name of marker or marker instance to check.\n\t * @returns `true` if marker is in the collection, `false` otherwise.\n\t */\n\tpublic has( markerOrName: string | Marker ): boolean {\n\t\tconst markerName = markerOrName instanceof Marker ? markerOrName.name : markerOrName;\n\n\t\treturn this._markers.has( markerName );\n\t}\n\n\t/**\n\t * Returns {@link ~Marker marker} with given `markerName`.\n\t *\n\t * @param markerName Name of marker to get.\n\t * @returns Marker with given name or `null` if such marker was\n\t * not added to the collection.\n\t */\n\tpublic get( markerName: string ): Marker | null {\n\t\treturn this._markers.get( markerName ) || null;\n\t}\n\n\t/**\n\t * Creates and adds a {@link ~Marker marker} to the `MarkerCollection` with given name on given\n\t * {@link module:engine/model/range~Range range}.\n\t *\n\t * If `MarkerCollection` already had a marker with given name (or {@link ~Marker marker} was passed), the marker in\n\t * collection is updated and {@link module:engine/model/markercollection~MarkerCollection#event:update} event is fired\n\t * but only if there was a change (marker range or {@link module:engine/model/markercollection~Marker#managedUsingOperations}\n\t * flag has changed.\n\t *\n\t * @internal\n\t * @fires update\n\t * @param markerOrName Name of marker to set or marker instance to update.\n\t * @param range Marker range.\n\t * @param managedUsingOperations Specifies whether the marker is managed using operations.\n\t * @param affectsData Specifies whether the marker affects the data produced by the data pipeline\n\t * (is persisted in the editor's data).\n\t * @returns `Marker` instance which was added or updated.\n\t */\n\tpublic _set(\n\t\tmarkerOrName: string | Marker,\n\t\trange: Range,\n\t\tmanagedUsingOperations: boolean = false,\n\t\taffectsData: boolean = false\n\t): Marker {\n\t\tconst markerName = markerOrName instanceof Marker ? markerOrName.name : markerOrName;\n\n\t\tif ( markerName.includes( ',' ) ) {\n\t\t\t/**\n\t\t\t * Marker name cannot contain the \",\" character.\n\t\t\t *\n\t\t\t * @error markercollection-incorrect-marker-name\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'markercollection-incorrect-marker-name', this );\n\t\t}\n\n\t\tconst oldMarker = this._markers.get( markerName );\n\n\t\tif ( oldMarker ) {\n\t\t\tconst oldMarkerData = oldMarker.getData();\n\n\t\t\tconst oldRange = oldMarker.getRange();\n\t\t\tlet hasChanged = false;\n\n\t\t\tif ( !oldRange.isEqual( range ) ) {\n\t\t\t\toldMarker._attachLiveRange( LiveRange.fromRange( range ) );\n\t\t\t\thasChanged = true;\n\t\t\t}\n\n\t\t\tif ( managedUsingOperations != oldMarker.managedUsingOperations ) {\n\t\t\t\toldMarker._managedUsingOperations = managedUsingOperations;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\n\t\t\tif ( typeof affectsData === 'boolean' && affectsData != oldMarker.affectsData ) {\n\t\t\t\toldMarker._affectsData = affectsData;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\n\t\t\tif ( hasChanged ) {\n\t\t\t\tthis.fire<MarkerCollectionUpdateEvent>( `update:${ markerName }`, oldMarker, oldRange, range, oldMarkerData );\n\t\t\t}\n\n\t\t\treturn oldMarker;\n\t\t}\n\n\t\tconst liveRange = LiveRange.fromRange( range );\n\t\tconst marker = new Marker( markerName, liveRange, managedUsingOperations, affectsData );\n\n\t\tthis._markers.set( markerName, marker );\n\t\tthis.fire<MarkerCollectionUpdateEvent>( `update:${ markerName }`, marker, null, range, { ...marker.getData(), range: null } );\n\n\t\treturn marker;\n\t}\n\n\t/**\n\t * Removes given {@link ~Marker marker} or a marker with given name from the `MarkerCollection`.\n\t *\n\t * @internal\n\t * @fires update\n\t * @param markerOrName Marker or name of a marker to remove.\n\t * @returns `true` if marker was found and removed, `false` otherwise.\n\t */\n\tpublic _remove( markerOrName: string | Marker ): boolean {\n\t\tconst markerName = markerOrName instanceof Marker ? markerOrName.name : markerOrName;\n\t\tconst oldMarker = this._markers.get( markerName );\n\n\t\tif ( oldMarker ) {\n\t\t\tthis._markers.delete( markerName );\n\t\t\tthis.fire<MarkerCollectionUpdateEvent>( `update:${ markerName }`, oldMarker, oldMarker.getRange(), null, oldMarker.getData() );\n\n\t\t\tthis._destroyMarker( oldMarker );\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Fires an {@link module:engine/model/markercollection~MarkerCollection#event:update} event for the given {@link ~Marker marker}\n\t * but does not change the marker. Useful to force {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher downcast\n\t * conversion} for the marker.\n\t *\n\t * @internal\n\t * @fires update\n\t * @param markerOrName Marker or name of a marker to refresh.\n\t */\n\tpublic _refresh( markerOrName: string | Marker ): void {\n\t\tconst markerName = markerOrName instanceof Marker ? markerOrName.name : markerOrName;\n\t\tconst marker = this._markers.get( markerName );\n\n\t\tif ( !marker ) {\n\t\t\t/**\n\t\t\t * Marker with provided name does not exists.\n\t\t\t *\n\t\t\t * @error markercollection-refresh-marker-not-exists\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'markercollection-refresh-marker-not-exists', this );\n\t\t}\n\n\t\tconst range = marker.getRange();\n\n\t\tthis.fire<MarkerCollectionUpdateEvent>( `update:${ markerName }`, marker, range, range, marker.getData() );\n\t}\n\n\t/**\n\t * Returns iterator that iterates over all markers, which ranges contain given {@link module:engine/model/position~Position position}.\n\t */\n\tpublic* getMarkersAtPosition( position: Position ): IterableIterator<Marker> {\n\t\tfor ( const marker of this ) {\n\t\t\tif ( marker.getRange().containsPosition( position ) ) {\n\t\t\t\tyield marker;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Returns iterator that iterates over all markers, which intersects with given {@link module:engine/model/range~Range range}.\n\t */\n\tpublic* getMarkersIntersectingRange( range: Range ): Iterable<Marker> {\n\t\tfor ( const marker of this ) {\n\t\t\tif ( marker.getRange().getIntersection( range ) !== null ) {\n\t\t\t\tyield marker;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Destroys marker collection and all markers inside it.\n\t */\n\tpublic destroy(): void {\n\t\tfor ( const marker of this._markers.values() ) {\n\t\t\tthis._destroyMarker( marker );\n\t\t}\n\n\t\tthis._markers = null as any;\n\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * Iterates over all markers that starts with given `prefix`.\n\t *\n\t * ```ts\n\t * const markerFooA = markersCollection.set( 'foo:a', rangeFooA );\n\t * const markerFooB = markersCollection.set( 'foo:b', rangeFooB );\n\t * const markerBarA = markersCollection.set( 'bar:a', rangeBarA );\n\t * const markerFooBarA = markersCollection.set( 'foobar:a', rangeFooBarA );\n\t * Array.from( markersCollection.getMarkersGroup( 'foo' ) ); // [ markerFooA, markerFooB ]\n\t * Array.from( markersCollection.getMarkersGroup( 'a' ) ); // []\n\t * ```\n\t */\n\tpublic* getMarkersGroup( prefix: string ): IterableIterator<Marker> {\n\t\tfor ( const marker of this._markers.values() ) {\n\t\t\tif ( marker.name.startsWith( prefix + ':' ) ) {\n\t\t\t\tyield marker;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Destroys the marker.\n\t */\n\tprivate _destroyMarker( marker: Marker ): void {\n\t\tmarker.stopListening();\n\t\tmarker._detachLiveRange();\n\t}\n}\n\nexport interface MarkerData {\n\n\t/**\n\t * Marker range. `null` if the marker was removed.\n\t */\n\trange: Range | null;\n\n\t/**\n\t * A property defining if the marker affects data.\n\t */\n\taffectsData: boolean;\n\n\t/**\n\t * A property defining if the marker is managed using operations.\n\t */\n\tmanagedUsingOperations: boolean;\n}\n\n/**\n * `Marker` is a continuous part of the model (like a range), is named and represents some kind of information about the\n * marked part of the model document. In contrary to {@link module:engine/model/node~Node nodes}, which are building blocks of\n * the model document tree, markers are not stored directly in the document tree but in the\n * {@link module:engine/model/model~Model#markers model markers' collection}. Still, they are document data, by giving\n * additional meaning to the part of a model document between marker start and marker end.\n *\n * In this sense, markers are similar to adding and converting attributes on nodes. The difference is that attribute is\n * connected with a given node (e.g. a character is bold no matter if it gets moved or content around it changes).\n * Markers on the other hand are continuous ranges and are characterized by their start and end position. This means that\n * any character in the marker is marked by the marker. For example, if a character is moved outside of marker it stops being\n * \"special\" and the marker is shrunk. Similarly, when a character is moved into the marker from other place in document\n * model, it starts being \"special\" and the marker is enlarged.\n *\n * Another upside of markers is that finding marked part of document is fast and easy. Using attributes to mark some nodes\n * and then trying to find that part of document would require traversing whole document tree. Marker gives instant access\n * to the range which it is marking at the moment.\n *\n * Markers are built from a name and a range.\n *\n * Range of the marker is updated automatically when document changes, using\n * {@link module:engine/model/liverange~LiveRange live range} mechanism.\n *\n * Name is used to group and identify markers. Names have to be unique, but markers can be grouped by\n * using common prefixes, separated with `:`, for example: `user:john` or `search:3`. That's useful in term of creating\n * namespaces for custom elements (e.g. comments, highlights). You can use this prefixes in\n * {@link module:engine/model/markercollection~MarkerCollection#event:update} listeners to listen on changes in a group of markers.\n * For instance: `model.markers.on( 'update:user', callback );` will be called whenever any `user:*` markers changes.\n *\n * There are two types of markers.\n *\n * 1. Markers managed directly, without using operations. They are added directly by {@link module:engine/model/writer~Writer}\n * to the {@link module:engine/model/markercollection~MarkerCollection} without any additional mechanism. They can be used\n * as bookmarks or visual markers. They are great for showing results of the find, or select link when the focus is in the input.\n *\n * 1. Markers managed using operations. These markers are also stored in {@link module:engine/model/markercollection~MarkerCollection}\n * but changes in these markers is managed the same way all other changes in the model structure - using operations.\n * Therefore, they are handled in the undo stack and synchronized between clients if the collaboration plugin is enabled.\n * This type of markers is useful for solutions like spell checking or comments.\n *\n * Both type of them should be added / updated by {@link module:engine/model/writer~Writer#addMarker}\n * and removed by {@link module:engine/model/writer~Writer#removeMarker} methods.\n *\n * ```ts\n * model.change( ( writer ) => {\n * \tconst marker = writer.addMarker( name, { range, usingOperation: true } );\n *\n * \t// ...\n *\n * \twriter.removeMarker( marker );\n * } );\n * ```\n *\n * See {@link module:engine/model/writer~Writer} to find more examples.\n *\n * Since markers need to track change in the document, for efficiency reasons, it is best to create and keep as little\n * markers as possible and remove them as soon as they are not needed anymore.\n *\n * Markers can be downcasted and upcasted.\n *\n * Markers downcast happens on {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:addMarker} and\n * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:removeMarker} events.\n * Use {@link module:engine/conversion/downcasthelpers downcast converters} or attach a custom converter to mentioned events.\n * For {@link module:engine/controller/datacontroller~DataController data pipeline}, marker should be downcasted to an element.\n * Then, it can be upcasted back to a marker. Again, use {@link module:engine/conversion/upcasthelpers upcast converters} or\n * attach a custom converter to {@link module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:element}.\n *\n * `Marker` instances are created and destroyed only by {@link ~MarkerCollection MarkerCollection}.\n */\nclass Marker extends EmitterMixin( TypeCheckable ) {\n\t/**\n\t * Marker's name.\n\t */\n\tpublic readonly name: string;\n\n\t/**\n\t * Flag indicates if the marker is managed using operations or not.\n\t *\n\t * @internal\n\t */\n\tpublic _managedUsingOperations: boolean;\n\n\t/**\n\t * Specifies whether the marker affects the data produced by the data pipeline\n\t * (is persisted in the editor's data).\n\t *\n\t * @internal\n\t */\n\tpublic _affectsData: boolean;\n\n\t/**\n\t * Range marked by the marker.\n\t */\n\tprivate _liveRange: LiveRange | null;\n\n\t/**\n\t * Creates a marker instance.\n\t *\n\t * @param name Marker name.\n\t * @param liveRange Range marked by the marker.\n\t * @param managedUsingOperations Specifies whether the marker is managed using operations.\n\t * @param affectsData Specifies whether the marker affects the data produced by the data pipeline (is persisted in the editor's data).\n\t */\n\tconstructor(\n\t\tname: string,\n\t\tliveRange: LiveRange,\n\t\tmanagedUsingOperations: boolean,\n\t\taffectsData: boolean\n\t) {\n\t\tsuper();\n\n\t\tthis.name = name;\n\t\tthis._liveRange = this._attachLiveRange( liveRange );\n\t\tthis._managedUsingOperations = managedUsingOperations;\n\t\tthis._affectsData = affectsData;\n\t}\n\n\t/**\n\t * A value indicating if the marker is managed using operations.\n\t * See {@link ~Marker marker class description} to learn more about marker types.\n\t * See {@link module:engine/model/writer~Writer#addMarker}.\n\t */\n\tpublic get managedUsingOperations(): boolean {\n\t\tif ( !this._liveRange ) {\n\t\t\tthrow new CKEditorError( 'marker-destroyed', this );\n\t\t}\n\n\t\treturn this._managedUsingOperations;\n\t}\n\n\t/**\n\t * A value indicating if the marker changes the data.\n\t */\n\tpublic get affectsData(): boolean {\n\t\tif ( !this._liveRange ) {\n\t\t\tthrow new CKEditorError( 'marker-destroyed', this );\n\t\t}\n\n\t\treturn this._affectsData;\n\t}\n\n\t/**\n\t * Returns the marker data (properties defining the marker).\n\t */\n\tpublic getData(): MarkerData {\n\t\treturn {\n\t\t\trange: this.getRange(),\n\t\t\taffectsData: this.affectsData,\n\t\t\tmanagedUsingOperations: this.managedUsingOperations\n\t\t};\n\t}\n\n\t/**\n\t * Returns current marker start position.\n\t */\n\tpublic getStart(): Position {\n\t\tif ( !this._liveRange ) {\n\t\t\tthrow new CKEditorError( 'marker-destroyed', this );\n\t\t}\n\n\t\treturn this._liveRange.start.clone();\n\t}\n\n\t/**\n\t * Returns current marker end position.\n\t */\n\tpublic getEnd(): Position {\n\t\tif ( !this._liveRange ) {\n\t\t\tthrow new CKEditorError( 'marker-destroyed', this );\n\t\t}\n\n\t\treturn this._liveRange.end.clone();\n\t}\n\n\t/**\n\t * Returns a range that represents the current state of the marker.\n\t *\n\t * Keep in mind that returned value is a {@link module:engine/model/range~Range Range}, not a\n\t * {@link module:engine/model/liverange~LiveRange LiveRange}. This means that it is up-to-date and relevant only\n\t * until next model document change. Do not store values returned by this method. Instead, store {@link ~Marker#name}\n\t * and get `Marker` instance from {@link module:engine/model/markercollection~MarkerCollection MarkerCollection} every\n\t * time there is a need to read marker properties. This will guarantee that the marker has not been removed and\n\t * that it's data is up-to-date.\n\t */\n\tpublic getRange(): Range {\n\t\tif ( !this._liveRange ) {\n\t\t\tthrow new CKEditorError( 'marker-destroyed', this );\n\t\t}\n\n\t\treturn this._liveRange.toRange();\n\t}\n\n\t/**\n\t * Binds new live range to the marker and detach the old one if is attached.\n\t *\n\t * @internal\n\t * @param liveRange Live range to attach\n\t * @returns Attached live range.\n\t */\n\tpublic _attachLiveRange( liveRange: LiveRange ): LiveRange {\n\t\tif ( this._liveRange ) {\n\t\t\tthis._detachLiveRange();\n\t\t}\n\n\t\t// Delegating does not work with namespaces. Alternatively, we could delegate all events (using `*`).\n\t\tliveRange.delegate( 'change:range' ).to( this );\n\t\tliveRange.delegate( 'change:content' ).to( this );\n\n\t\tthis._liveRange = liveRange;\n\n\t\treturn liveRange;\n\t}\n\n\t/**\n\t * Unbinds and destroys currently attached live range.\n\t *\n\t * @internal\n\t */\n\tpublic _detachLiveRange(): void {\n\t\tthis._liveRange!.stopDelegating( 'change:range', this );\n\t\tthis._liveRange!.stopDelegating( 'change:content', this );\n\t\tthis._liveRange!.detach();\n\t\tthis._liveRange = null;\n\t}\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nMarker.prototype.is = function( type: string ): boolean {\n\treturn type === 'marker' || type === 'model:marker';\n};\n\nexport type { Marker };\n\n/**\n * Fired whenever {@link ~Marker#_liveRange marker range} is changed due to changes on {@link module:engine/model/document~Document}.\n * This is a delegated {@link module:engine/model/liverange~LiveRange#event:change:range LiveRange change:range event}.\n *\n * When marker is removed from {@link module:engine/model/markercollection~MarkerCollection MarkerCollection},\n * all event listeners listening to it should be removed. It is best to do it on\n * {@link module:engine/model/markercollection~MarkerCollection#event:update MarkerCollection update event}.\n *\n * @see module:engine/model/liverange~LiveRange#event:change:range\n * @eventName ~Marker#change:range\n */\nexport type MarkerChangeRangeEvent = LiveRangeChangeRangeEvent;\n\n/**\n * Fired whenever change on {@link module:engine/model/document~Document} is done inside {@link ~Marker#_liveRange marker range}.\n * This is a delegated {@link module:engine/model/liverange~LiveRange#event:change:content LiveRange change:content event}.\n *\n * When marker is removed from {@link module:engine/model/markercollection~MarkerCollection MarkerCollection},\n * all event listeners listening to it should be removed. It is best to do it on\n * {@link module:engine/model/markercollection~MarkerCollection#event:update MarkerCollection update event}.\n *\n * @see module:engine/model/liverange~LiveRange#event:change:content\n * @eventName ~Marker#change:content\n */\nexport type MarkerCollectionChangeContentEvent = LiveRangeChangeContentEvent;\n\n/**\n * Describes `change:range` or `change:content` event.\n */\nexport type MarkerChangeEvent = LiveRangeChangeEvent;\n\n/**\n * Fired whenever marker is added, updated or removed from `MarkerCollection`.\n *\n * @eventName ~MarkerCollection#update\n * @param marker Updated Marker.\n * @param oldRange Marker range before the update. When is not defined it\n * means that marker is just added.\n * @param newRange Marker range after update. When is not defined it\n * means that marker is just removed.\n * @param oldMarkerData Data of the marker before the change.\n */\nexport type MarkerCollectionUpdateEvent = {\n\tname: 'update' | `update:${ string }`;\n\targs: [ marker: Marker, oldRange: Range | null, newRange: Range | null, oldMarkerData: MarkerData ];\n};\n\n/**\n * Cannot use a {@link module:engine/model/markercollection~MarkerCollection#destroy destroyed marker} instance.\n *\n * @error marker-destroyed\n */\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/operation/detachoperation\n */\n\nimport Operation from './operation';\nimport Range from '../range';\nimport { _remove } from './utils';\n\nimport type Position from '../position';\n\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\nimport type { Selectable } from '../selection';\n\n// @if CK_DEBUG_ENGINE // const ModelRange = require( '../range' ).default;\n\n/**\n * Operation to permanently remove node from detached root.\n * Note this operation is only a local operation and won't be send to the other clients.\n */\nexport default class DetachOperation extends Operation {\n\t/**\n\t * Position before the first {@link module:engine/model/item~Item model item} to detach.\n\t */\n\tpublic sourcePosition: Position;\n\n\t/**\n\t * Offset size of moved range.\n\t */\n\tpublic howMany: number;\n\n\t// This class doesn't implement those abstract methods. Let's silence the compiler.\n\tdeclare public clone: never;\n\tdeclare public getReversed: never;\n\n\t/**\n\t * Creates an insert operation.\n\t *\n\t * @param sourcePosition Position before the first {@link module:engine/model/item~Item model item} to move.\n\t * @param howMany Offset size of moved range. Moved range will start from `sourcePosition` and end at\n\t * `sourcePosition` with offset shifted by `howMany`.\n\t */\n\tconstructor( sourcePosition: Position, howMany: number ) {\n\t\tsuper( null );\n\n\t\tthis.sourcePosition = sourcePosition.clone();\n\t\tthis.howMany = howMany;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get type(): 'detach' {\n\t\treturn 'detach';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get affectedSelectable(): Selectable {\n\t\treturn null;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override toJSON(): unknown {\n\t\tconst json: any = super.toJSON();\n\n\t\tjson.sourcePosition = this.sourcePosition.toJSON();\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic override _validate(): void {\n\t\tif ( this.sourcePosition.root.document ) {\n\t\t\t/**\n\t\t\t * Cannot detach document node.\n\t\t\t *\n\t\t\t * @error detach-operation-on-document-node\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'detach-operation-on-document-node', this );\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t * @internal\n\t */\n\tpublic _execute(): void {\n\t\t_remove( Range._createFromPositionAndShift( this.sourcePosition, this.howMany ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get className(): string {\n\t\treturn 'DetachOperation';\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): string {\n\t// @if CK_DEBUG_ENGINE // \tconst range = ModelRange._createFromPositionAndShift( this.sourcePosition, this.howMany );\n\t// @if CK_DEBUG_ENGINE // \tconst nodes = Array.from( range.getItems() );\n\t// @if CK_DEBUG_ENGINE // \tconst nodeString = nodes.length > 1 ? `[ ${ nodes.length } ]` : nodes[ 0 ];\n\n\t// @if CK_DEBUG_ENGINE // \treturn `DetachOperation( ${ this.baseVersion } ): ${ nodeString } -> ${ range }`;\n\t// @if CK_DEBUG_ENGINE // }\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/documentfragment\n */\n\nimport TypeCheckable from './typecheckable';\nimport Element from './element';\nimport NodeList from './nodelist';\nimport Text from './text';\nimport TextProxy from './textproxy';\n\nimport type Item from './item';\nimport type Node from './node';\nimport type Range from './range';\n\nimport { isIterable } from '@ckeditor/ckeditor5-utils';\n\n// @if CK_DEBUG_ENGINE // const { stringifyMap } = require( '../dev-utils/utils' );\n\n/**\n * DocumentFragment represents a part of model which does not have a common root but its top-level nodes\n * can be seen as siblings. In other words, it is a detached part of model tree, without a root.\n *\n * DocumentFragment has own {@link module:engine/model/markercollection~MarkerCollection}. Markers from this collection\n * will be set to the {@link module:engine/model/model~Model#markers model markers} by a\n * {@link module:engine/model/writer~Writer#insert} function.\n */\nexport default class DocumentFragment extends TypeCheckable implements Iterable<Node> {\n\t/**\n\t * DocumentFragment static markers map. This is a list of names and {@link module:engine/model/range~Range ranges}\n\t * which will be set as Markers to {@link module:engine/model/model~Model#markers model markers collection}\n\t * when DocumentFragment will be inserted to the document.\n\t */\n\tpublic readonly markers: Map<string, Range> = new Map();\n\n\t/**\n\t * Artificial element name. Returns `undefined`. Added for compatibility reasons.\n\t */\n\tdeclare public name?: undefined;\n\n\t/**\n\t * Artificial root name. Returns `undefined`. Added for compatibility reasons.\n\t */\n\tdeclare public rootName?: undefined;\n\n\t/**\n\t * List of nodes contained inside the document fragment.\n\t */\n\tprivate readonly _children: NodeList = new NodeList();\n\n\t/**\n\t * Creates an empty `DocumentFragment`.\n\t *\n\t * **Note:** Constructor of this class shouldn't be used directly in the code.\n\t * Use the {@link module:engine/model/writer~Writer#createDocumentFragment} method instead.\n\t *\n\t * @internal\n\t * @param children Nodes to be contained inside the `DocumentFragment`.\n\t */\n\tconstructor( children?: Node | Iterable<Node> ) {\n\t\tsuper();\n\n\t\tif ( children ) {\n\t\t\tthis._insertChild( 0, children );\n\t\t}\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all nodes contained inside this document fragment.\n\t */\n\tpublic [ Symbol.iterator ](): IterableIterator<Node> {\n\t\treturn this.getChildren();\n\t}\n\n\t/**\n\t * Number of this document fragment's children.\n\t */\n\tpublic get childCount(): number {\n\t\treturn this._children.length;\n\t}\n\n\t/**\n\t * Sum of {@link module:engine/model/node~Node#offsetSize offset sizes} of all of this document fragment's children.\n\t */\n\tpublic get maxOffset(): number {\n\t\treturn this._children.maxOffset;\n\t}\n\n\t/**\n\t * Is `true` if there are no nodes inside this document fragment, `false` otherwise.\n\t */\n\tpublic get isEmpty(): boolean {\n\t\treturn this.childCount === 0;\n\t}\n\n\t/**\n\t * Artificial next sibling. Returns `null`. Added for compatibility reasons.\n\t */\n\tpublic get nextSibling(): null {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Artificial previous sibling. Returns `null`. Added for compatibility reasons.\n\t */\n\tpublic get previousSibling(): null {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Artificial root of `DocumentFragment`. Returns itself. Added for compatibility reasons.\n\t */\n\tpublic get root(): DocumentFragment {\n\t\treturn this;\n\t}\n\n\t/**\n\t * Artificial parent of `DocumentFragment`. Returns `null`. Added for compatibility reasons.\n\t */\n\tpublic get parent(): null {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Artificial owner of `DocumentFragment`. Returns `null`. Added for compatibility reasons.\n\t */\n\tpublic get document(): null {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns `false` as `DocumentFragment` by definition is not attached to a document. Added for compatibility reasons.\n\t */\n\tpublic isAttached(): false {\n\t\treturn false;\n\t}\n\n\t/**\n\t * Returns empty array. Added for compatibility reasons.\n\t */\n\tpublic getAncestors(): Array<never> {\n\t\treturn [];\n\t}\n\n\t/**\n\t * Gets the child at the given index. Returns `null` if incorrect index was passed.\n\t *\n\t * @param index Index of child.\n\t * @returns Child node.\n\t */\n\tpublic getChild( index: number ): Node | null {\n\t\treturn this._children.getNode( index );\n\t}\n\n\t/**\n\t * Returns an iterator that iterates over all of this document fragment's children.\n\t */\n\tpublic getChildren(): IterableIterator<Node> {\n\t\treturn this._children[ Symbol.iterator ]();\n\t}\n\n\t/**\n\t * Returns an index of the given child node. Returns `null` if given node is not a child of this document fragment.\n\t *\n\t * @param node Child node to look for.\n\t * @returns Child node's index.\n\t */\n\tpublic getChildIndex( node: Node ): number | null {\n\t\treturn this._children.getNodeIndex( node );\n\t}\n\n\t/**\n\t * Returns the starting offset of given child. Starting offset is equal to the sum of\n\t * {@link module:engine/model/node~Node#offsetSize offset sizes} of all node's siblings that are before it. Returns `null` if\n\t * given node is not a child of this document fragment.\n\t *\n\t * @param node Child node to look for.\n\t * @returns Child node's starting offset.\n\t */\n\tpublic getChildStartOffset( node: Node ): number | null {\n\t\treturn this._children.getNodeStartOffset( node );\n\t}\n\n\t/**\n\t * Returns path to a `DocumentFragment`, which is an empty array. Added for compatibility reasons.\n\t */\n\tpublic getPath(): Array<number> {\n\t\treturn [];\n\t}\n\n\t/**\n\t * Returns a descendant node by its path relative to this element.\n\t *\n\t * ```ts\n\t * // <this>a<b>c</b></this>\n\t * this.getNodeByPath( [ 0 ] ); // -> \"a\"\n\t * this.getNodeByPath( [ 1 ] ); // -> <b>\n\t * this.getNodeByPath( [ 1, 0 ] ); // -> \"c\"\n\t * ```\n\t *\n\t * @param relativePath Path of the node to find, relative to this element.\n\t */\n\tpublic getNodeByPath( relativePath: Array<number> ): Node | DocumentFragment {\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n\t\tlet node: Node | DocumentFragment = this;\n\n\t\tfor ( const index of relativePath ) {\n\t\t\tnode = ( node as Element | DocumentFragment ).getChild( ( node as Element | DocumentFragment ).offsetToIndex( index ) )!;\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Converts offset \"position\" to index \"position\".\n\t *\n\t * Returns index of a node that occupies given offset. If given offset is too low, returns `0`. If given offset is\n\t * too high, returns index after last child.\n\t *\n\t * ```ts\n\t * const textNode = new Text( 'foo' );\n\t * const pElement = new Element( 'p' );\n\t * const docFrag = new DocumentFragment( [ textNode, pElement ] );\n\t * docFrag.offsetToIndex( -1 ); // Returns 0, because offset is too low.\n\t * docFrag.offsetToIndex( 0 ); // Returns 0, because offset 0 is taken by `textNode` which is at index 0.\n\t * docFrag.offsetToIndex( 1 ); // Returns 0, because `textNode` has `offsetSize` equal to 3, so it occupies offset 1 too.\n\t * docFrag.offsetToIndex( 2 ); // Returns 0.\n\t * docFrag.offsetToIndex( 3 ); // Returns 1.\n\t * docFrag.offsetToIndex( 4 ); // Returns 2. There are no nodes at offset 4, so last available index is returned.\n\t * ```\n\t *\n\t * @param offset Offset to look for.\n\t * @returns Index of a node that occupies given offset.\n\t */\n\tpublic offsetToIndex( offset: number ): number {\n\t\treturn this._children.offsetToIndex( offset );\n\t}\n\n\t/**\n\t * Converts `DocumentFragment` instance to plain object and returns it.\n\t * Takes care of converting all of this document fragment's children.\n\t *\n\t * @returns `DocumentFragment` instance converted to plain object.\n\t */\n\tpublic toJSON(): unknown {\n\t\tconst json = [];\n\n\t\tfor ( const node of this._children ) {\n\t\t\tjson.push( node.toJSON() );\n\t\t}\n\n\t\treturn json;\n\t}\n\n\t/**\n\t * Creates a `DocumentFragment` instance from given plain object (i.e. parsed JSON string).\n\t * Converts `DocumentFragment` children to proper nodes.\n\t *\n\t * @param json Plain object to be converted to `DocumentFragment`.\n\t * @returns `DocumentFragment` instance created using given plain object.\n\t */\n\tpublic static fromJSON( json: any ): DocumentFragment {\n\t\tconst children = [];\n\n\t\tfor ( const child of json ) {\n\t\t\tif ( child.name ) {\n\t\t\t\t// If child has name property, it is an Element.\n\t\t\t\tchildren.push( Element.fromJSON( child ) );\n\t\t\t} else {\n\t\t\t\t// Otherwise, it is a Text node.\n\t\t\t\tchildren.push( Text.fromJSON( child ) );\n\t\t\t}\n\t\t}\n\n\t\treturn new DocumentFragment( children );\n\t}\n\n\t/**\n\t * {@link #_insertChild Inserts} one or more nodes at the end of this document fragment.\n\t *\n\t * @internal\n\t * @param items Items to be inserted.\n\t */\n\tpublic _appendChild( items: string | Item | Iterable<string | Item> ): void {\n\t\tthis._insertChild( this.childCount, items );\n\t}\n\n\t/**\n\t * Inserts one or more nodes at the given index and sets {@link module:engine/model/node~Node#parent parent} of these nodes\n\t * to this document fragment.\n\t *\n\t * @internal\n\t * @param index Index at which nodes should be inserted.\n\t * @param items Items to be inserted.\n\t */\n\tpublic _insertChild( index: number, items: string | Item | Iterable<string | Item> ): void {\n\t\tconst nodes = normalize( items );\n\n\t\tfor ( const node of nodes ) {\n\t\t\t// If node that is being added to this element is already inside another element, first remove it from the old parent.\n\t\t\tif ( node.parent !== null ) {\n\t\t\t\tnode._remove();\n\t\t\t}\n\n\t\t\t( node as any ).parent = this;\n\t\t}\n\n\t\tthis._children._insertNodes( index, nodes );\n\t}\n\n\t/**\n\t * Removes one or more nodes starting at the given index\n\t * and sets {@link module:engine/model/node~Node#parent parent} of these nodes to `null`.\n\t *\n\t * @internal\n\t * @param index Index of the first node to remove.\n\t * @param howMany Number of nodes to remove.\n\t * @returns Array containing removed nodes.\n\t */\n\tpublic _removeChildren( index: number, howMany: number = 1 ): Array<Node> {\n\t\tconst nodes = this._children._removeNodes( index, howMany );\n\n\t\tfor ( const node of nodes ) {\n\t\t\t( node as any ).parent = null;\n\t\t}\n\n\t\treturn nodes;\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public override toString(): 'documentFragment' {\n\t// @if CK_DEBUG_ENGINE // \treturn 'documentFragment';\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public log(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( 'ModelDocumentFragment: ' + this );\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public printTree(): string {\n\t// @if CK_DEBUG_ENGINE // \tlet string = 'ModelDocumentFragment: [';\n\n\t// @if CK_DEBUG_ENGINE // \tfor ( const child of this.getChildren() as any ) {\n\t// @if CK_DEBUG_ENGINE // \t\tstring += '\\n';\n\n\t// @if CK_DEBUG_ENGINE // \t\tif ( child.is( '$text' ) ) {\n\t// @if CK_DEBUG_ENGINE // \t\t\tconst textAttrs = stringifyMap( child._attrs );\n\n\t// @if CK_DEBUG_ENGINE // \t\t\tstring += '\\t'.repeat( 1 );\n\n\t// @if CK_DEBUG_ENGINE // \t\t\tif ( textAttrs !== '' ) {\n\t// @if CK_DEBUG_ENGINE // \t\t\t\tstring += `<$text${ textAttrs }>` + child.data + '</$text>';\n\t// @if CK_DEBUG_ENGINE // \t\t\t} else {\n\t// @if CK_DEBUG_ENGINE // \t\t\t\tstring += child.data;\n\t// @if CK_DEBUG_ENGINE // \t\t\t}\n\t// @if CK_DEBUG_ENGINE // \t\t} else {\n\t// @if CK_DEBUG_ENGINE // \t\t\tstring += child.printTree( 1 );\n\t// @if CK_DEBUG_ENGINE // \t\t}\n\t// @if CK_DEBUG_ENGINE // \t}\n\n\t// @if CK_DEBUG_ENGINE // \tstring += '\\n]';\n\n\t// @if CK_DEBUG_ENGINE // \treturn string;\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public logTree(): void {\n\t// @if CK_DEBUG_ENGINE // \tconsole.log( this.printTree() );\n\t// @if CK_DEBUG_ENGINE // }\n}\n\n// The magic of type inference using `is` method is centralized in `TypeCheckable` class.\n// Proper overload would interfere with that.\nDocumentFragment.prototype.is = function( type: string ): boolean {\n\treturn type === 'documentFragment' || type === 'model:documentFragment';\n};\n\n/**\n * Converts strings to Text and non-iterables to arrays.\n */\nfunction normalize( nodes: string | Item | Iterable<string | Item> ): Iterable<Node> {\n\t// Separate condition because string is iterable.\n\tif ( typeof nodes == 'string' ) {\n\t\treturn [ new Text( nodes ) ];\n\t}\n\n\tif ( !isIterable( nodes ) ) {\n\t\tnodes = [ nodes ];\n\t}\n\n\t// Array.from to enable .map() on non-arrays.\n\treturn Array.from( nodes )\n\t\t.map( node => {\n\t\t\tif ( typeof node == 'string' ) {\n\t\t\t\treturn new Text( node );\n\t\t\t}\n\n\t\t\tif ( node instanceof TextProxy ) {\n\t\t\t\treturn new Text( node.data, node.getAttributes() );\n\t\t\t}\n\n\t\t\treturn node;\n\t\t} );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/writer\n */\n\nimport AttributeOperation from './operation/attributeoperation';\nimport DetachOperation from './operation/detachoperation';\nimport InsertOperation from './operation/insertoperation';\nimport MarkerOperation from './operation/markeroperation';\nimport MergeOperation from './operation/mergeoperation';\nimport MoveOperation from './operation/moveoperation';\nimport RenameOperation from './operation/renameoperation';\nimport RootAttributeOperation from './operation/rootattributeoperation';\nimport RootOperation from './operation/rootoperation';\nimport SplitOperation from './operation/splitoperation';\n\nimport DocumentFragment from './documentfragment';\nimport DocumentSelection from './documentselection';\nimport Element from './element';\nimport Position, { type PositionOffset, type PositionStickiness } from './position';\nimport Range from './range';\nimport RootElement from './rootelement';\nimport Text from './text';\n\nimport type { Marker } from './markercollection';\nimport type { default as Selection, PlaceOrOffset, Selectable } from './selection';\nimport type Batch from './batch';\nimport type Item from './item';\nimport type Model from './model';\nimport type { default as Node, NodeAttributes } from './node';\n\nimport { CKEditorError, logWarning, toMap } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The model can only be modified by using the writer. It should be used whenever you want to create a node, modify\n * child nodes, attributes or text, set the selection's position and its attributes.\n *\n * The instance of the writer is only available in the {@link module:engine/model/model~Model#change `change()`} or\n * {@link module:engine/model/model~Model#enqueueChange `enqueueChange()`}.\n *\n * ```ts\n * model.change( writer => {\n * \twriter.insertText( 'foo', paragraph, 'end' );\n * } );\n * ```\n *\n * Note that the writer should never be stored and used outside of the `change()` and\n * `enqueueChange()` blocks.\n *\n * Note that writer's methods do not check the {@link module:engine/model/schema~Schema}. It is possible\n * to create incorrect model structures by using the writer. Read more about in\n * {@glink framework/deep-dive/schema#who-checks-the-schema \"Who checks the schema?\"}.\n *\n * @see module:engine/model/model~Model#change\n * @see module:engine/model/model~Model#enqueueChange\n */\nexport default class Writer {\n\t/**\n\t * Instance of the model on which this writer operates.\n\t */\n\tpublic readonly model: Model;\n\n\t/**\n\t * The batch to which this writer will add changes.\n\t */\n\tpublic readonly batch: Batch;\n\n\t/**\n\t * Creates a writer instance.\n\t *\n\t * **Note:** It is not recommended to use it directly. Use {@link module:engine/model/model~Model#change `Model#change()`} or\n\t * {@link module:engine/model/model~Model#enqueueChange `Model#enqueueChange()`} instead.\n\t *\n\t * @internal\n\t */\n\tconstructor( model: Model, batch: Batch ) {\n\t\tthis.model = model;\n\t\tthis.batch = batch;\n\t}\n\n\t/**\n\t * Creates a new {@link module:engine/model/text~Text text node}.\n\t *\n\t * ```ts\n\t * writer.createText( 'foo' );\n\t * writer.createText( 'foo', { bold: true } );\n\t * ```\n\t *\n\t * @param data Text data.\n\t * @param attributes Text attributes.\n\t * @returns {module:engine/model/text~Text} Created text node.\n\t */\n\tpublic createText(\n\t\tdata: string,\n\t\tattributes?: NodeAttributes\n\t): Text {\n\t\treturn new Text( data, attributes );\n\t}\n\n\t/**\n\t * Creates a new {@link module:engine/model/element~Element element}.\n\t *\n\t * ```ts\n\t * writer.createElement( 'paragraph' );\n\t * writer.createElement( 'paragraph', { alignment: 'center' } );\n\t * ```\n\t *\n\t * @param name Name of the element.\n\t * @param attributes Elements attributes.\n\t * @returns Created element.\n\t */\n\tpublic createElement(\n\t\tname: string,\n\t\tattributes?: NodeAttributes\n\t): Element {\n\t\treturn new Element( name, attributes );\n\t}\n\n\t/**\n\t * Creates a new {@link module:engine/model/documentfragment~DocumentFragment document fragment}.\n\t *\n\t * @returns Created document fragment.\n\t */\n\tpublic createDocumentFragment(): DocumentFragment {\n\t\treturn new DocumentFragment();\n\t}\n\n\t/**\n\t * Creates a copy of the element and returns it. Created element has the same name and attributes as the original element.\n\t * If clone is deep, the original element's children are also cloned. If not, then empty element is returned.\n\t *\n\t * @param element The element to clone.\n\t * @param deep If set to `true` clones element and all its children recursively. When set to `false`,\n\t * element will be cloned without any child.\n\t */\n\tpublic cloneElement( element: Element, deep: boolean = true ): Element {\n\t\treturn element._clone( deep );\n\t}\n\n\t/**\n\t * Inserts item on given position.\n\t *\n\t * ```ts\n\t * const paragraph = writer.createElement( 'paragraph' );\n\t * writer.insert( paragraph, position );\n\t * ```\n\t *\n\t * Instead of using position you can use parent and offset:\n\t *\n\t * ```ts\n\t * const text = writer.createText( 'foo' );\n\t * writer.insert( text, paragraph, 5 );\n\t * ```\n\t *\n\t * You can also use `end` instead of the offset to insert at the end:\n\t *\n\t * ```ts\n\t * const text = writer.createText( 'foo' );\n\t * writer.insert( text, paragraph, 'end' );\n\t * ```\n\t *\n\t * Or insert before or after another element:\n\t *\n\t * ```ts\n\t * const paragraph = writer.createElement( 'paragraph' );\n\t * writer.insert( paragraph, anotherParagraph, 'after' );\n\t * ```\n\t *\n\t * These parameters works the same way as {@link #createPositionAt `writer.createPositionAt()`}.\n\t *\n\t * Note that if the item already has parent it will be removed from the previous parent.\n\t *\n\t * Note that you cannot re-insert a node from a document to a different document or a document fragment. In this case,\n\t * `model-writer-insert-forbidden-move` is thrown.\n\t *\n\t * If you want to move {@link module:engine/model/range~Range range} instead of an\n\t * {@link module:engine/model/item~Item item} use {@link module:engine/model/writer~Writer#move `Writer#move()`}.\n\t *\n\t * **Note:** For a paste-like content insertion mechanism see\n\t * {@link module:engine/model/model~Model#insertContent `model.insertContent()`}.\n\t *\n\t * @param item Item or document fragment to insert.\n\t * @param offset Offset or one of the flags. Used only when second parameter is a {@link module:engine/model/item~Item model item}.\n\t */\n\tpublic insert(\n\t\titem: Item | DocumentFragment,\n\t\titemOrPosition: Item | DocumentFragment | Position,\n\t\toffset: PositionOffset = 0\n\t): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tif ( item instanceof Text && item.data == '' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst position = Position._createAt( itemOrPosition, offset );\n\n\t\t// If item has a parent already.\n\t\tif ( item.parent ) {\n\t\t\t// We need to check if item is going to be inserted within the same document.\n\t\t\tif ( isSameTree( item.root, position.root ) ) {\n\t\t\t\t// If it's we just need to move it.\n\t\t\t\tthis.move( Range._createOn( item ), position );\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// If it isn't the same root.\n\t\t\telse {\n\t\t\t\tif ( item.root.document ) {\n\t\t\t\t\t/**\n\t\t\t\t\t * Cannot move a node from a document to a different tree.\n\t\t\t\t\t * It is forbidden to move a node that was already in a document outside of it.\n\t\t\t\t\t *\n\t\t\t\t\t * @error model-writer-insert-forbidden-move\n\t\t\t\t\t */\n\t\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t\t'model-writer-insert-forbidden-move',\n\t\t\t\t\t\tthis\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t// Move between two different document fragments or from document fragment to a document is possible.\n\t\t\t\t\t// In that case, remove the item from it's original parent.\n\t\t\t\t\tthis.remove( item );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst version = position.root.document ? position.root.document.version : null;\n\n\t\tconst insert = new InsertOperation( position, item, version );\n\n\t\tif ( item instanceof Text ) {\n\t\t\tinsert.shouldReceiveAttributes = true;\n\t\t}\n\n\t\tthis.batch.addOperation( insert );\n\t\tthis.model.applyOperation( insert );\n\n\t\t// When element is a DocumentFragment we need to move its markers to Document#markers.\n\t\tif ( item instanceof DocumentFragment ) {\n\t\t\tfor ( const [ markerName, markerRange ] of item.markers ) {\n\t\t\t\t// We need to migrate marker range from DocumentFragment to Document.\n\t\t\t\tconst rangeRootPosition = Position._createAt( markerRange.root, 0 );\n\t\t\t\tconst range = new Range(\n\t\t\t\t\tmarkerRange.start._getCombined( rangeRootPosition, position ),\n\t\t\t\t\tmarkerRange.end._getCombined( rangeRootPosition, position )\n\t\t\t\t);\n\n\t\t\t\tconst options = { range, usingOperation: true, affectsData: true };\n\n\t\t\t\tif ( this.model.markers.has( markerName ) ) {\n\t\t\t\t\tthis.updateMarker( markerName, options );\n\t\t\t\t} else {\n\t\t\t\t\tthis.addMarker( markerName, options );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Creates and inserts text on given position.\n\t *\n\t * ```ts\n\t * writer.insertText( 'foo', position );\n\t * ```\n\t *\n\t * Instead of using position you can use parent and offset or define that text should be inserted at the end\n\t * or before or after other node:\n\t *\n\t * ```ts\n\t * // Inserts 'foo' in paragraph, at offset 5:\n\t * writer.insertText( 'foo', paragraph, 5 );\n\t * // Inserts 'foo' at the end of a paragraph:\n\t * writer.insertText( 'foo', paragraph, 'end' );\n\t * // Inserts 'foo' after an image:\n\t * writer.insertText( 'foo', image, 'after' );\n\t * ```\n\t *\n\t * These parameters work in the same way as {@link #createPositionAt `writer.createPositionAt()`}.\n\t *\n\t * @label WITHOUT_ATTRIBUTES\n\t * @param text Text data.\n\t * @param offset Offset or one of the flags. Used only when second parameter is a {@link module:engine/model/item~Item model item}.\n\t */\n\tpublic insertText(\n\t\ttext: string,\n\t\titemOrPosition?: Item | Position,\n\t\toffset?: PositionOffset\n\t): void;\n\n\t/**\n\t * Creates and inserts text with specified attributes on given position.\n\t *\n\t * ```ts\n\t * writer.insertText( 'foo', { bold: true }, position );\n\t * ```\n\t *\n\t * Instead of using position you can use parent and offset or define that text should be inserted at the end\n\t * or before or after other node:\n\t *\n\t * ```ts\n\t * // Inserts 'foo' in paragraph, at offset 5:\n\t * writer.insertText( 'foo', { bold: true }, paragraph, 5 );\n\t * // Inserts 'foo' at the end of a paragraph:\n\t * writer.insertText( 'foo', { bold: true }, paragraph, 'end' );\n\t * // Inserts 'foo' after an image:\n\t * writer.insertText( 'foo', { bold: true }, image, 'after' );\n\t * ```\n\t *\n\t * These parameters work in the same way as {@link #createPositionAt `writer.createPositionAt()`}.\n\t *\n\t * @label WITH_ATTRIBUTES\n\t * @param text Text data.\n\t * @param attributes Text attributes.\n\t * @param offset Offset or one of the flags. Used only when third parameter is a {@link module:engine/model/item~Item model item}.\n\t */\n\tpublic insertText(\n\t\ttext: string,\n\t\tattributes?: NodeAttributes,\n\t\titemOrPosition?: Item | Position,\n\t\toffset?: PositionOffset\n\t): void;\n\n\tpublic insertText(\n\t\ttext: string,\n\t\tattributes?: any, // Too complicated when not using `any`.\n\t\titemOrPosition?: any, // Too complicated when not using `any`.\n\t\toffset?: any // Too complicated when not using `any`.\n\t): void {\n\t\tif ( attributes instanceof DocumentFragment || attributes instanceof Element || attributes instanceof Position ) {\n\t\t\tthis.insert( this.createText( text ), attributes, itemOrPosition );\n\t\t} else {\n\t\t\tthis.insert( this.createText( text, attributes ), itemOrPosition, offset );\n\t\t}\n\t}\n\n\t/**\n\t * Creates and inserts element on given position. You can optionally set attributes:\n\t *\n\t * ```ts\n\t * writer.insertElement( 'paragraph', position );\n\t * ```\n\t *\n\t * Instead of using position you can use parent and offset or define that text should be inserted at the end\n\t * or before or after other node:\n\t *\n\t * ```ts\n\t * // Inserts paragraph in the root at offset 5:\n\t * writer.insertElement( 'paragraph', root, 5 );\n\t * // Inserts paragraph at the end of a blockquote:\n\t * writer.insertElement( 'paragraph', blockquote, 'end' );\n\t * // Inserts after an image:\n\t * writer.insertElement( 'paragraph', image, 'after' );\n\t * ```\n\t *\n\t * These parameters works the same way as {@link #createPositionAt `writer.createPositionAt()`}.\n\t *\n\t * @label WITHOUT_ATTRIBUTES\n\t * @param name Name of the element.\n\t * @param offset Offset or one of the flags. Used only when second parameter is a {@link module:engine/model/item~Item model item}.\n\t */\n\tpublic insertElement(\n\t\tname: string,\n\t\titemOrPosition: Item | DocumentFragment | Position,\n\t\toffset?: PositionOffset\n\t): void;\n\n\t/**\n\t * Creates and inserts element with specified attributes on given position.\n\t *\n\t * ```ts\n\t * writer.insertElement( 'paragraph', { alignment: 'center' }, position );\n\t * ```\n\t *\n\t * Instead of using position you can use parent and offset or define that text should be inserted at the end\n\t * or before or after other node:\n\t *\n\t * ```ts\n\t * // Inserts paragraph in the root at offset 5:\n\t * writer.insertElement( 'paragraph', { alignment: 'center' }, root, 5 );\n\t * // Inserts paragraph at the end of a blockquote:\n\t * writer.insertElement( 'paragraph', { alignment: 'center' }, blockquote, 'end' );\n\t * // Inserts after an image:\n\t * writer.insertElement( 'paragraph', { alignment: 'center' }, image, 'after' );\n\t * ```\n\t *\n\t * These parameters works the same way as {@link #createPositionAt `writer.createPositionAt()`}.\n\t *\n\t * @label WITH_ATTRIBUTES\n\t * @param name Name of the element.\n\t * @param attributes Elements attributes.\n\t * @param offset Offset or one of the flags. Used only when third parameter is a {@link module:engine/model/item~Item model item}.\n\t */\n\tpublic insertElement(\n\t\tname: string,\n\t\tattributes: NodeAttributes,\n\t\titemOrPosition: Item | DocumentFragment | Position,\n\t\toffset?: PositionOffset\n\t): void;\n\n\tpublic insertElement(\n\t\tname: string,\n\t\tattributes: any, // Too complicated when not using `any`.\n\t\titemOrPositionOrOffset?: any, // Too complicated when not using `any`.\n\t\toffset?: any // Too complicated when not using `any`.\n\t): void {\n\t\tif ( attributes instanceof DocumentFragment || attributes instanceof Element || attributes instanceof Position ) {\n\t\t\tthis.insert( this.createElement( name ), attributes, itemOrPositionOrOffset );\n\t\t} else {\n\t\t\tthis.insert( this.createElement( name, attributes ), itemOrPositionOrOffset, offset );\n\t\t}\n\t}\n\n\t/**\n\t * Inserts item at the end of the given parent.\n\t *\n\t * ```ts\n\t * const paragraph = writer.createElement( 'paragraph' );\n\t * writer.append( paragraph, root );\n\t * ```\n\t *\n\t * Note that if the item already has parent it will be removed from the previous parent.\n\t *\n\t * If you want to move {@link module:engine/model/range~Range range} instead of an\n\t * {@link module:engine/model/item~Item item} use {@link module:engine/model/writer~Writer#move `Writer#move()`}.\n\t *\n\t * @param item Item or document fragment to insert.\n\t */\n\tpublic append( item: Item | DocumentFragment, parent: Element | DocumentFragment ): void {\n\t\tthis.insert( item, parent, 'end' );\n\t}\n\n\t/**\n\t * Creates text node and inserts it at the end of the parent.\n\t *\n\t * ```ts\n\t * writer.appendText( 'foo', paragraph );\n\t * ```\n\t *\n\t * @label WITHOUT_ATTRIBUTES\n\t * @param text Text data.\n\t */\n\tpublic appendText(\n\t\ttext: string,\n\t\tparent: Element | DocumentFragment\n\t): void;\n\n\t/**\n\t * Creates text node with specified attributes and inserts it at the end of the parent.\n\t *\n\t * ```ts\n\t * writer.appendText( 'foo', { bold: true }, paragraph );\n\t * ```\n\t *\n\t * @label WITH_ATTRIBUTES\n\t * @param text Text data.\n\t * @param attributes Text attributes.\n\t */\n\tpublic appendText(\n\t\ttext: string,\n\t\tattributes: NodeAttributes,\n\t\tparent: Element | DocumentFragment\n\t): void;\n\n\tpublic appendText(\n\t\ttext: string,\n\t\tattributes: NodeAttributes | Element | DocumentFragment,\n\t\tparent?: Element | DocumentFragment\n\t): void {\n\t\tif ( attributes instanceof DocumentFragment || attributes instanceof Element ) {\n\t\t\tthis.insert( this.createText( text ), attributes, 'end' );\n\t\t} else {\n\t\t\tthis.insert( this.createText( text, attributes ), parent!, 'end' );\n\t\t}\n\t}\n\n\t/**\n\t * Creates element and inserts it at the end of the parent.\n\t *\n\t * ```ts\n\t * writer.appendElement( 'paragraph', root );\n\t * ```\n\t *\n\t * @label WITHOUT_ATTRIBUTES\n\t * @param name Name of the element.\n\t */\n\tpublic appendElement(\n\t\tname: string,\n\t\tparent: Element | DocumentFragment\n\t): void;\n\n\t/**\n\t * Creates element with specified attributes and inserts it at the end of the parent.\n\t *\n\t * ```ts\n\t * writer.appendElement( 'paragraph', { alignment: 'center' }, root );\n\t * ```\n\t *\n\t * @label WITH_ATTRIBUTES\n\t * @param name Name of the element.\n\t * @param attributes Elements attributes.\n\t */\n\tpublic appendElement(\n\t\tname: string,\n\t\tattributes: NodeAttributes,\n\t\tparent: Element | DocumentFragment\n\t): void;\n\n\tpublic appendElement(\n\t\tname: string,\n\t\tattributes: NodeAttributes | Element | DocumentFragment,\n\t\tparent?: Element | DocumentFragment\n\t): void {\n\t\tif ( attributes instanceof DocumentFragment || attributes instanceof Element ) {\n\t\t\tthis.insert( this.createElement( name ), attributes, 'end' );\n\t\t} else {\n\t\t\tthis.insert( this.createElement( name, attributes ), parent!, 'end' );\n\t\t}\n\t}\n\n\t/**\n\t * Sets value of the attribute with given key on a {@link module:engine/model/item~Item model item}\n\t * or on a {@link module:engine/model/range~Range range}.\n\t *\n\t * @param key Attribute key.\n\t * @param value Attribute new value.\n\t * @param itemOrRange Model item or range on which the attribute will be set.\n\t */\n\tpublic setAttribute( key: string, value: unknown, itemOrRange: Item | Range ): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tif ( itemOrRange instanceof Range ) {\n\t\t\tconst ranges = itemOrRange.getMinimalFlatRanges();\n\n\t\t\tfor ( const range of ranges ) {\n\t\t\t\tsetAttributeOnRange( this, key, value, range );\n\t\t\t}\n\t\t} else {\n\t\t\tsetAttributeOnItem( this, key, value, itemOrRange );\n\t\t}\n\t}\n\n\t/**\n\t * Sets values of attributes on a {@link module:engine/model/item~Item model item}\n\t * or on a {@link module:engine/model/range~Range range}.\n\t *\n\t * ```ts\n\t * writer.setAttributes( {\n\t * \tbold: true,\n\t * \titalic: true\n\t * }, range );\n\t * ```\n\t *\n\t * @param attributes Attributes keys and values.\n\t * @param itemOrRange Model item or range on which the attributes will be set.\n\t */\n\tpublic setAttributes(\n\t\tattributes: NodeAttributes,\n\t\titemOrRange: Item | Range\n\t): void {\n\t\tfor ( const [ key, val ] of toMap( attributes ) ) {\n\t\t\tthis.setAttribute( key, val, itemOrRange );\n\t\t}\n\t}\n\n\t/**\n\t * Removes an attribute with given key from a {@link module:engine/model/item~Item model item}\n\t * or from a {@link module:engine/model/range~Range range}.\n\t *\n\t * @param key Attribute key.\n\t * @param itemOrRange Model item or range from which the attribute will be removed.\n\t */\n\tpublic removeAttribute( key: string, itemOrRange: Item | Range ): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tif ( itemOrRange instanceof Range ) {\n\t\t\tconst ranges = itemOrRange.getMinimalFlatRanges();\n\n\t\t\tfor ( const range of ranges ) {\n\t\t\t\tsetAttributeOnRange( this, key, null, range );\n\t\t\t}\n\t\t} else {\n\t\t\tsetAttributeOnItem( this, key, null, itemOrRange );\n\t\t}\n\t}\n\n\t/**\n\t * Removes all attributes from all elements in the range or from the given item.\n\t *\n\t * @param itemOrRange Model item or range from which all attributes will be removed.\n\t */\n\tpublic clearAttributes( itemOrRange: Item | Range ): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tconst removeAttributesFromItem = ( item: Item ) => {\n\t\t\tfor ( const attribute of item.getAttributeKeys() ) {\n\t\t\t\tthis.removeAttribute( attribute, item );\n\t\t\t}\n\t\t};\n\n\t\tif ( !( itemOrRange instanceof Range ) ) {\n\t\t\tremoveAttributesFromItem( itemOrRange );\n\t\t} else {\n\t\t\tfor ( const item of itemOrRange.getItems() ) {\n\t\t\t\tremoveAttributesFromItem( item );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Moves all items in the source range to the target position.\n\t *\n\t * ```ts\n\t * writer.move( sourceRange, targetPosition );\n\t * ```\n\t *\n\t * Instead of the target position you can use parent and offset or define that range should be moved to the end\n\t * or before or after chosen item:\n\t *\n\t * ```ts\n\t * // Moves all items in the range to the paragraph at offset 5:\n\t * writer.move( sourceRange, paragraph, 5 );\n\t * // Moves all items in the range to the end of a blockquote:\n\t * writer.move( sourceRange, blockquote, 'end' );\n\t * // Moves all items in the range to a position after an image:\n\t * writer.move( sourceRange, image, 'after' );\n\t * ```\n\t *\n\t * These parameters work the same way as {@link #createPositionAt `writer.createPositionAt()`}.\n\t *\n\t * Note that items can be moved only within the same tree. It means that you can move items within the same root\n\t * (element or document fragment) or between {@link module:engine/model/document~Document#roots documents roots},\n\t * but you can not move items from document fragment to the document or from one detached element to another. Use\n\t * {@link module:engine/model/writer~Writer#insert} in such cases.\n\t *\n\t * @param range Source range.\n\t * @param offset Offset or one of the flags. Used only when second parameter is a {@link module:engine/model/item~Item model item}.\n\t */\n\tpublic move(\n\t\trange: Range,\n\t\titemOrPosition: Item | Position,\n\t\toffset?: PositionOffset\n\t): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tif ( !( range instanceof Range ) ) {\n\t\t\t/**\n\t\t\t * Invalid range to move.\n\t\t\t *\n\t\t\t * @error writer-move-invalid-range\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-move-invalid-range', this );\n\t\t}\n\n\t\tif ( !range.isFlat ) {\n\t\t\t/**\n\t\t\t * Range to move is not flat.\n\t\t\t *\n\t\t\t * @error writer-move-range-not-flat\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-move-range-not-flat', this );\n\t\t}\n\n\t\tconst position = Position._createAt( itemOrPosition, offset );\n\n\t\t// Do not move anything if the move target is same as moved range start.\n\t\tif ( position.isEqual( range.start ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If part of the marker is removed, create additional marker operation for undo purposes.\n\t\tthis._addOperationForAffectedMarkers( 'move', range );\n\n\t\tif ( !isSameTree( range.root, position.root ) ) {\n\t\t\t/**\n\t\t\t * Range is going to be moved within not the same document. Please use\n\t\t\t * {@link module:engine/model/writer~Writer#insert insert} instead.\n\t\t\t *\n\t\t\t * @error writer-move-different-document\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-move-different-document', this );\n\t\t}\n\n\t\tconst version = range.root.document ? range.root.document.version : null;\n\t\tconst operation = new MoveOperation( range.start, range.end.offset - range.start.offset, position, version );\n\n\t\tthis.batch.addOperation( operation );\n\t\tthis.model.applyOperation( operation );\n\t}\n\n\t/**\n\t * Removes given model {@link module:engine/model/item~Item item} or {@link module:engine/model/range~Range range}.\n\t *\n\t * @param itemOrRange Model item or range to remove.\n\t */\n\tpublic remove( itemOrRange: Item | Range ): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tconst rangeToRemove = itemOrRange instanceof Range ? itemOrRange : Range._createOn( itemOrRange );\n\t\tconst ranges = rangeToRemove.getMinimalFlatRanges().reverse();\n\n\t\tfor ( const flat of ranges ) {\n\t\t\t// If part of the marker is removed, create additional marker operation for undo purposes.\n\t\t\tthis._addOperationForAffectedMarkers( 'move', flat );\n\n\t\t\tapplyRemoveOperation( flat.start, flat.end.offset - flat.start.offset, this.batch, this.model );\n\t\t}\n\t}\n\n\t/**\n\t * Merges two siblings at the given position.\n\t *\n\t * Node before and after the position have to be an element. Otherwise `writer-merge-no-element-before` or\n\t * `writer-merge-no-element-after` error will be thrown.\n\t *\n\t * @param position Position between merged elements.\n\t */\n\tpublic merge( position: Position ): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tconst nodeBefore = position.nodeBefore;\n\t\tconst nodeAfter = position.nodeAfter;\n\n\t\t// If part of the marker is removed, create additional marker operation for undo purposes.\n\t\tthis._addOperationForAffectedMarkers( 'merge', position );\n\n\t\tif ( !( nodeBefore instanceof Element ) ) {\n\t\t\t/**\n\t\t\t * Node before merge position must be an element.\n\t\t\t *\n\t\t\t * @error writer-merge-no-element-before\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-merge-no-element-before', this );\n\t\t}\n\n\t\tif ( !( nodeAfter instanceof Element ) ) {\n\t\t\t/**\n\t\t\t * Node after merge position must be an element.\n\t\t\t *\n\t\t\t * @error writer-merge-no-element-after\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-merge-no-element-after', this );\n\t\t}\n\n\t\tif ( !position.root.document ) {\n\t\t\tthis._mergeDetached( position );\n\t\t} else {\n\t\t\tthis._merge( position );\n\t\t}\n\t}\n\n\t/**\n\t * Shortcut for {@link module:engine/model/model~Model#createPositionFromPath `Model#createPositionFromPath()`}.\n\t *\n\t * @param root Root of the position.\n\t * @param path Position path. See {@link module:engine/model/position~Position#path}.\n\t * @param stickiness Position stickiness. See {@link module:engine/model/position~PositionStickiness}.\n\t */\n\tpublic createPositionFromPath(\n\t\troot: Element | DocumentFragment,\n\t\tpath: ReadonlyArray<number>,\n\t\tstickiness?: PositionStickiness\n\t): Position {\n\t\treturn this.model.createPositionFromPath( root, path, stickiness );\n\t}\n\n\t/**\n\t * Shortcut for {@link module:engine/model/model~Model#createPositionAt `Model#createPositionAt()`}.\n\t *\n\t * @param offset Offset or one of the flags. Used only when first parameter is a {@link module:engine/model/item~Item model item}.\n\t */\n\tpublic createPositionAt(\n\t\titemOrPosition: Item | Position | DocumentFragment,\n\t\toffset?: PositionOffset\n\t): Position {\n\t\treturn this.model.createPositionAt( itemOrPosition, offset );\n\t}\n\n\t/**\n\t * Shortcut for {@link module:engine/model/model~Model#createPositionAfter `Model#createPositionAfter()`}.\n\t *\n\t * @param item Item after which the position should be placed.\n\t */\n\tpublic createPositionAfter( item: Item ): Position {\n\t\treturn this.model.createPositionAfter( item );\n\t}\n\n\t/**\n\t * Shortcut for {@link module:engine/model/model~Model#createPositionBefore `Model#createPositionBefore()`}.\n\t *\n\t * @param item Item after which the position should be placed.\n\t */\n\tpublic createPositionBefore( item: Item ): Position {\n\t\treturn this.model.createPositionBefore( item );\n\t}\n\n\t/**\n\t * Shortcut for {@link module:engine/model/model~Model#createRange `Model#createRange()`}.\n\t *\n\t * @param start Start position.\n\t * @param end End position. If not set, range will be collapsed at `start` position.\n\t */\n\tpublic createRange( start: Position, end?: Position ): Range {\n\t\treturn this.model.createRange( start, end );\n\t}\n\n\t/**\n\t * Shortcut for {@link module:engine/model/model~Model#createRangeIn `Model#createRangeIn()`}.\n\t *\n\t * @param element Element which is a parent for the range.\n\t */\n\tpublic createRangeIn( element: Element | DocumentFragment ): Range {\n\t\treturn this.model.createRangeIn( element );\n\t}\n\n\t/**\n\t * Shortcut for {@link module:engine/model/model~Model#createRangeOn `Model#createRangeOn()`}.\n\t *\n\t * @param element Element which is a parent for the range.\n\t */\n\tpublic createRangeOn( element: Item ): Range {\n\t\treturn this.model.createRangeOn( element );\n\t}\n\n\t/**\n\t * Shortcut for {@link module:engine/model/model~Model#createSelection:NODE_OFFSET `Model#createSelection()`}.\n\t *\n\t * @label NODE_OFFSET\n\t */\n\tpublic createSelection( selectable: Node, placeOrOffset: PlaceOrOffset, options?: { backward?: boolean } ): Selection;\n\n\t/**\n\t * Shortcut for {@link module:engine/model/model~Model#createSelection:SELECTABLE `Model#createSelection()`}.\n\t *\n\t * @label SELECTABLE\n\t */\n\tpublic createSelection( selectable?: Exclude<Selectable, Node>, options?: { backward?: boolean } ): Selection;\n\n\tpublic createSelection( ...args: [ any?, any?, any? ] ): Selection {\n\t\treturn this.model.createSelection( ...args );\n\t}\n\n\t/**\n\t * Performs merge action in a detached tree.\n\t *\n\t * @param position Position between merged elements.\n\t */\n\tprivate _mergeDetached( position: Position ): void {\n\t\tconst nodeBefore = position.nodeBefore;\n\t\tconst nodeAfter = position.nodeAfter;\n\n\t\tthis.move( Range._createIn( nodeAfter as any ), Position._createAt( nodeBefore!, 'end' ) );\n\t\tthis.remove( nodeAfter! );\n\t}\n\n\t/**\n\t * Performs merge action in a non-detached tree.\n\t *\n\t * @param position Position between merged elements.\n\t */\n\tprivate _merge( position: Position ): void {\n\t\tconst targetPosition = Position._createAt( position.nodeBefore!, 'end' );\n\t\tconst sourcePosition = Position._createAt( position.nodeAfter!, 0 );\n\n\t\tconst graveyard = position.root.document!.graveyard;\n\t\tconst graveyardPosition = new Position( graveyard, [ 0 ] );\n\n\t\tconst version = position.root.document!.version;\n\n\t\tconst merge = new MergeOperation(\n\t\t\tsourcePosition,\n\t\t\t( position.nodeAfter as any ).maxOffset,\n\t\t\ttargetPosition,\n\t\t\tgraveyardPosition,\n\t\t\tversion\n\t\t);\n\n\t\tthis.batch.addOperation( merge );\n\t\tthis.model.applyOperation( merge );\n\t}\n\n\t/**\n\t * Renames the given element.\n\t *\n\t * @param element The element to rename.\n\t * @param newName New element name.\n\t */\n\tpublic rename( element: Element | DocumentFragment, newName: string ): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tif ( !( element instanceof Element ) ) {\n\t\t\t/**\n\t\t\t * Trying to rename an object which is not an instance of Element.\n\t\t\t *\n\t\t\t * @error writer-rename-not-element-instance\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'writer-rename-not-element-instance',\n\t\t\t\tthis\n\t\t\t);\n\t\t}\n\n\t\tconst version = element.root.document ? element.root.document.version : null;\n\t\tconst renameOperation = new RenameOperation( Position._createBefore( element ), element.name, newName, version );\n\n\t\tthis.batch.addOperation( renameOperation );\n\t\tthis.model.applyOperation( renameOperation );\n\t}\n\n\t/**\n\t * Splits elements starting from the given position and going to the top of the model tree as long as given\n\t * `limitElement` is reached. When `limitElement` is not defined then only the parent of the given position will be split.\n\t *\n\t * The element needs to have a parent. It cannot be a root element nor a document fragment.\n\t * The `writer-split-element-no-parent` error will be thrown if you try to split an element with no parent.\n\t *\n\t * @param position Position of split.\n\t * @param limitElement Stop splitting when this element will be reached.\n\t * @returns Split result with properties:\n\t * * `position` - Position between split elements.\n\t * * `range` - Range that stars from the end of the first split element and ends at the beginning of the first copy element.\n\t */\n\tpublic split( position: Position, limitElement?: Node | DocumentFragment ): { position: Position; range: Range } {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tlet splitElement = position.parent;\n\n\t\tif ( !splitElement.parent ) {\n\t\t\t/**\n\t\t\t * Element with no parent can not be split.\n\t\t\t *\n\t\t\t * @error writer-split-element-no-parent\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-split-element-no-parent', this );\n\t\t}\n\n\t\t// When limit element is not defined lets set splitElement parent as limit.\n\t\tif ( !limitElement ) {\n\t\t\tlimitElement = splitElement.parent;\n\t\t}\n\n\t\tif ( !position.parent.getAncestors( { includeSelf: true } ).includes( limitElement! ) ) {\n\t\t\t/**\n\t\t\t * Limit element is not a position ancestor.\n\t\t\t *\n\t\t\t * @error writer-split-invalid-limit-element\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-split-invalid-limit-element', this );\n\t\t}\n\n\t\t// We need to cache elements that will be created as a result of the first split because\n\t\t// we need to create a range from the end of the first split element to the beginning of the\n\t\t// first copy element. This should be handled by LiveRange but it doesn't work on detached nodes.\n\t\tlet firstSplitElement: Element | DocumentFragment | undefined;\n\t\tlet firstCopyElement: Node | null | undefined;\n\n\t\tdo {\n\t\t\tconst version = splitElement.root.document ? splitElement.root.document.version : null;\n\t\t\tconst howMany = splitElement.maxOffset - position.offset;\n\n\t\t\tconst insertionPosition = SplitOperation.getInsertionPosition( position );\n\t\t\tconst split = new SplitOperation( position, howMany, insertionPosition, null, version );\n\n\t\t\tthis.batch.addOperation( split );\n\t\t\tthis.model.applyOperation( split );\n\n\t\t\t// Cache result of the first split.\n\t\t\tif ( !firstSplitElement && !firstCopyElement ) {\n\t\t\t\tfirstSplitElement = splitElement;\n\t\t\t\tfirstCopyElement = position.parent.nextSibling;\n\t\t\t}\n\n\t\t\tposition = this.createPositionAfter( position.parent as any );\n\t\t\tsplitElement = position.parent;\n\t\t} while ( splitElement !== limitElement );\n\n\t\treturn {\n\t\t\tposition,\n\t\t\trange: new Range( Position._createAt( firstSplitElement!, 'end' ), Position._createAt( firstCopyElement!, 0 ) )\n\t\t};\n\t}\n\n\t/**\n\t * Wraps the given range with the given element or with a new element (if a string was passed).\n\t *\n\t * **Note:** range to wrap should be a \"flat range\" (see {@link module:engine/model/range~Range#isFlat `Range#isFlat`}).\n\t * If not, an error will be thrown.\n\t *\n\t * @param range Range to wrap.\n\t * @param elementOrString Element or name of element to wrap the range with.\n\t */\n\tpublic wrap( range: Range, elementOrString: Element | string ): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tif ( !range.isFlat ) {\n\t\t\t/**\n\t\t\t * Range to wrap is not flat.\n\t\t\t *\n\t\t\t * @error writer-wrap-range-not-flat\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-wrap-range-not-flat', this );\n\t\t}\n\n\t\tconst element = elementOrString instanceof Element ? elementOrString : new Element( elementOrString );\n\n\t\tif ( element.childCount > 0 ) {\n\t\t\t/**\n\t\t\t * Element to wrap with is not empty.\n\t\t\t *\n\t\t\t * @error writer-wrap-element-not-empty\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-wrap-element-not-empty', this );\n\t\t}\n\n\t\tif ( element.parent !== null ) {\n\t\t\t/**\n\t\t\t * Element to wrap with is already attached to a tree model.\n\t\t\t *\n\t\t\t * @error writer-wrap-element-attached\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-wrap-element-attached', this );\n\t\t}\n\n\t\tthis.insert( element, range.start );\n\n\t\t// Shift the range-to-wrap because we just inserted an element before that range.\n\t\tconst shiftedRange = new Range( range.start.getShiftedBy( 1 ), range.end.getShiftedBy( 1 ) );\n\n\t\tthis.move( shiftedRange, Position._createAt( element, 0 ) );\n\t}\n\n\t/**\n\t * Unwraps children of the given element – all its children are moved before it and then the element is removed.\n\t * Throws error if you try to unwrap an element which does not have a parent.\n\t *\n\t * @param element Element to unwrap.\n\t */\n\tpublic unwrap( element: Element ): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tif ( element.parent === null ) {\n\t\t\t/**\n\t\t\t * Trying to unwrap an element which has no parent.\n\t\t\t *\n\t\t\t * @error writer-unwrap-element-no-parent\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-unwrap-element-no-parent', this );\n\t\t}\n\n\t\tthis.move( Range._createIn( element ), this.createPositionAfter( element ) );\n\t\tthis.remove( element );\n\t}\n\n\t/**\n\t * Adds a {@link module:engine/model/markercollection~Marker marker}. Marker is a named range, which tracks\n\t * changes in the document and updates its range automatically, when model tree changes.\n\t *\n\t * As the first parameter you can set marker name.\n\t *\n\t * The required `options.usingOperation` parameter lets you decide if the marker should be managed by operations or not. See\n\t * {@link module:engine/model/markercollection~Marker marker class description} to learn about the difference between\n\t * markers managed by operations and not-managed by operations.\n\t *\n\t * The `options.affectsData` parameter, which defaults to `false`, allows you to define if a marker affects the data. It should be\n\t * `true` when the marker change changes the data returned by the\n\t * {@link module:core/editor/utils/dataapimixin~DataApi#getData `editor.getData()`} method.\n\t * When set to `true` it fires the {@link module:engine/model/document~Document#event:change:data `change:data`} event.\n\t * When set to `false` it fires the {@link module:engine/model/document~Document#event:change `change`} event.\n\t *\n\t * Create marker directly base on marker's name:\n\t *\n\t * ```ts\n\t * addMarker( markerName, { range, usingOperation: false } );\n\t * ```\n\t *\n\t * Create marker using operation:\n\t *\n\t * ```ts\n\t * addMarker( markerName, { range, usingOperation: true } );\n\t * ```\n\t *\n\t * Create marker that affects the editor data:\n\t *\n\t * ```ts\n\t * addMarker( markerName, { range, usingOperation: false, affectsData: true } );\n\t * ```\n\t *\n\t * Note: For efficiency reasons, it's best to create and keep as little markers as possible.\n\t *\n\t * @see module:engine/model/markercollection~Marker\n\t * @param name Name of a marker to create - must be unique.\n\t * @param options.usingOperation Flag indicating that the marker should be added by MarkerOperation.\n\t * See {@link module:engine/model/markercollection~Marker#managedUsingOperations}.\n\t * @param options.range Marker range.\n\t * @param options.affectsData Flag indicating that the marker changes the editor data.\n\t * @returns Marker that was set.\n\t */\n\tpublic addMarker(\n\t\tname: string,\n\t\toptions: {\n\t\t\tusingOperation: boolean;\n\t\t\taffectsData?: boolean;\n\t\t\trange: Range;\n\t\t}\n\t): Marker {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tif ( !options || typeof options.usingOperation != 'boolean' ) {\n\t\t\t/**\n\t\t\t * The `options.usingOperation` parameter is required when adding a new marker.\n\t\t\t *\n\t\t\t * @error writer-addmarker-no-usingoperation\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-addmarker-no-usingoperation', this );\n\t\t}\n\n\t\tconst usingOperation = options.usingOperation;\n\t\tconst range = options.range;\n\t\tconst affectsData = options.affectsData === undefined ? false : options.affectsData;\n\n\t\tif ( this.model.markers.has( name ) ) {\n\t\t\t/**\n\t\t\t * Marker with provided name already exists.\n\t\t\t *\n\t\t\t * @error writer-addmarker-marker-exists\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-addmarker-marker-exists', this );\n\t\t}\n\n\t\tif ( !range ) {\n\t\t\t/**\n\t\t\t * Range parameter is required when adding a new marker.\n\t\t\t *\n\t\t\t * @error writer-addmarker-no-range\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-addmarker-no-range', this );\n\t\t}\n\n\t\tif ( !usingOperation ) {\n\t\t\treturn this.model.markers._set( name, range, usingOperation, affectsData );\n\t\t}\n\n\t\tapplyMarkerOperation( this, name, null, range, affectsData );\n\n\t\treturn this.model.markers.get( name )!;\n\t}\n\n\t/**\n\t * Adds, updates or refreshes a {@link module:engine/model/markercollection~Marker marker}. Marker is a named range, which tracks\n\t * changes in the document and updates its range automatically, when model tree changes. Still, it is possible to change the\n\t * marker's range directly using this method.\n\t *\n\t * As the first parameter you can set marker name or instance. If none of them is provided, new marker, with a unique\n\t * name is created and returned.\n\t *\n\t * **Note**: If you want to change the {@link module:engine/view/element~Element view element} of the marker while its data in the model\n\t * remains the same, use the dedicated {@link module:engine/controller/editingcontroller~EditingController#reconvertMarker} method.\n\t *\n\t * The `options.usingOperation` parameter lets you change if the marker should be managed by operations or not. See\n\t * {@link module:engine/model/markercollection~Marker marker class description} to learn about the difference between\n\t * markers managed by operations and not-managed by operations. It is possible to change this option for an existing marker.\n\t *\n\t * The `options.affectsData` parameter, which defaults to `false`, allows you to define if a marker affects the data. It should be\n\t * `true` when the marker change changes the data returned by\n\t * the {@link module:core/editor/utils/dataapimixin~DataApi#getData `editor.getData()`} method.\n\t * When set to `true` it fires the {@link module:engine/model/document~Document#event:change:data `change:data`} event.\n\t * When set to `false` it fires the {@link module:engine/model/document~Document#event:change `change`} event.\n\t *\n\t * Update marker directly base on marker's name:\n\t *\n\t * ```ts\n\t * updateMarker( markerName, { range } );\n\t * ```\n\t *\n\t * Update marker using operation:\n\t *\n\t * ```ts\n\t * updateMarker( marker, { range, usingOperation: true } );\n\t * updateMarker( markerName, { range, usingOperation: true } );\n\t * ```\n\t *\n\t * Change marker's option (start using operations to manage it):\n\t *\n\t * ```ts\n\t * updateMarker( marker, { usingOperation: true } );\n\t * ```\n\t *\n\t * Change marker's option (inform the engine, that the marker does not affect the data anymore):\n\t *\n\t * ```ts\n\t * updateMarker( markerName, { affectsData: false } );\n\t * ```\n\t *\n\t * @see module:engine/model/markercollection~Marker\n\t * @param markerOrName Name of a marker to update, or a marker instance.\n\t * @param options If options object is not defined then marker will be refreshed by triggering\n\t * downcast conversion for this marker with the same data.\n\t * @param options.range Marker range to update.\n\t * @param options.usingOperation Flag indicated whether the marker should be added by MarkerOperation.\n\t * See {@link module:engine/model/markercollection~Marker#managedUsingOperations}.\n\t * @param options.affectsData Flag indicating that the marker changes the editor data.\n\t */\n\tpublic updateMarker(\n\t\tmarkerOrName: string | Marker,\n\t\toptions?: {\n\t\t\trange?: Range;\n\t\t\tusingOperation?: boolean;\n\t\t\taffectsData?: boolean;\n\t\t}\n\t): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tconst markerName = typeof markerOrName == 'string' ? markerOrName : markerOrName.name;\n\t\tconst currentMarker = this.model.markers.get( markerName );\n\n\t\tif ( !currentMarker ) {\n\t\t\t/**\n\t\t\t * Marker with provided name does not exist and will not be updated.\n\t\t\t *\n\t\t\t * @error writer-updatemarker-marker-not-exists\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-updatemarker-marker-not-exists', this );\n\t\t}\n\n\t\tif ( !options ) {\n\t\t\t/**\n\t\t\t * The usage of `writer.updateMarker()` only to reconvert (refresh) a\n\t\t\t * {@link module:engine/model/markercollection~Marker model marker} was deprecated and may not work in the future.\n\t\t\t * Please update your code to use\n\t\t\t * {@link module:engine/controller/editingcontroller~EditingController#reconvertMarker `editor.editing.reconvertMarker()`}\n\t\t\t * instead.\n\t\t\t *\n\t\t\t * @error writer-updatemarker-reconvert-using-editingcontroller\n\t\t\t * @param markerName The name of the updated marker.\n\t\t\t */\n\t\t\tlogWarning( 'writer-updatemarker-reconvert-using-editingcontroller', { markerName } );\n\n\t\t\tthis.model.markers._refresh( currentMarker );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst hasUsingOperationDefined = typeof options.usingOperation == 'boolean';\n\t\tconst affectsDataDefined = typeof options.affectsData == 'boolean';\n\n\t\t// Use previously defined marker's affectsData if the property is not provided.\n\t\tconst affectsData = affectsDataDefined ? options.affectsData : currentMarker.affectsData;\n\n\t\tif ( !hasUsingOperationDefined && !options.range && !affectsDataDefined ) {\n\t\t\t/**\n\t\t\t * One of the options is required - provide range, usingOperations or affectsData.\n\t\t\t *\n\t\t\t * @error writer-updatemarker-wrong-options\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-updatemarker-wrong-options', this );\n\t\t}\n\n\t\tconst currentRange = currentMarker.getRange();\n\t\tconst updatedRange = options.range ? options.range : currentRange;\n\n\t\tif ( hasUsingOperationDefined && options.usingOperation !== currentMarker.managedUsingOperations ) {\n\t\t\t// The marker type is changed so it's necessary to create proper operations.\n\t\t\tif ( options.usingOperation ) {\n\t\t\t\t// If marker changes to a managed one treat this as synchronizing existing marker.\n\t\t\t\t// Create `MarkerOperation` with `oldRange` set to `null`, so reverse operation will remove the marker.\n\t\t\t\tapplyMarkerOperation( this, markerName, null, updatedRange, affectsData );\n\t\t\t} else {\n\t\t\t\t// If marker changes to a marker that do not use operations then we need to create additional operation\n\t\t\t\t// that removes that marker first.\n\t\t\t\tapplyMarkerOperation( this, markerName, currentRange, null, affectsData );\n\n\t\t\t\t// Although not managed the marker itself should stay in model and its range should be preserver or changed to passed range.\n\t\t\t\tthis.model.markers._set( markerName, updatedRange, undefined, affectsData );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Marker's type doesn't change so update it accordingly.\n\t\tif ( currentMarker.managedUsingOperations ) {\n\t\t\tapplyMarkerOperation( this, markerName, currentRange, updatedRange, affectsData );\n\t\t} else {\n\t\t\tthis.model.markers._set( markerName, updatedRange, undefined, affectsData );\n\t\t}\n\t}\n\n\t/**\n\t * Removes given {@link module:engine/model/markercollection~Marker marker} or marker with given name.\n\t * The marker is removed accordingly to how it has been created, so if the marker was created using operation,\n\t * it will be destroyed using operation.\n\t *\n\t * @param markerOrName Marker or marker name to remove.\n\t */\n\tpublic removeMarker( markerOrName: string | Marker ): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tconst name = typeof markerOrName == 'string' ? markerOrName : markerOrName.name;\n\n\t\tif ( !this.model.markers.has( name ) ) {\n\t\t\t/**\n\t\t\t * Trying to remove marker which does not exist.\n\t\t\t *\n\t\t\t * @error writer-removemarker-no-marker\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-removemarker-no-marker', this );\n\t\t}\n\n\t\tconst marker = this.model.markers.get( name )!;\n\n\t\tif ( !marker.managedUsingOperations ) {\n\t\t\tthis.model.markers._remove( name );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst oldRange = marker.getRange();\n\n\t\tapplyMarkerOperation( this, name, oldRange, null, marker.affectsData );\n\t}\n\n\t/**\n\t * Adds a new root to the document (or re-attaches a {@link #detachRoot detached root}).\n\t *\n\t * Throws an error, if trying to add a root that is already added and attached.\n\t *\n\t * @param rootName Name of the added root.\n\t * @param elementName The element name. Defaults to `'$root'` which also has some basic schema defined\n\t * (e.g. `$block` elements are allowed inside the `$root`). Make sure to define a proper schema if you use a different name.\n\t * @returns The added root element.\n\t */\n\tpublic addRoot( rootName: string, elementName = '$root' ): RootElement {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tconst root = this.model.document.getRoot( rootName );\n\n\t\tif ( root && root.isAttached() ) {\n\t\t\t/**\n\t\t\t * Root with provided name already exists and is attached.\n\t\t\t *\n\t\t\t * @error writer-addroot-root-exists\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-addroot-root-exists', this );\n\t\t}\n\n\t\tconst document = this.model.document;\n\t\tconst operation = new RootOperation( rootName, elementName, true, document, document.version );\n\n\t\tthis.batch.addOperation( operation );\n\t\tthis.model.applyOperation( operation );\n\n\t\treturn this.model.document.getRoot( rootName )!;\n\t}\n\n\t/**\n\t * Detaches the root from the document.\n\t *\n\t * All content and markers are removed from the root upon detaching. New content and new markers cannot be added to the root, as long\n\t * as it is detached.\n\t *\n\t * A root cannot be fully removed from the document, it can be only detached. A root is permanently removed only after you\n\t * re-initialize the editor and do not specify the root in the initial data.\n\t *\n\t * A detached root can be re-attached using {@link #addRoot}.\n\t *\n\t * Throws an error if the root does not exist or the root is already detached.\n\t *\n\t * @param rootOrName Name of the detached root.\n\t */\n\tpublic detachRoot( rootOrName: string | RootElement ): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tconst root = typeof rootOrName == 'string' ? this.model.document.getRoot( rootOrName ) : rootOrName;\n\n\t\tif ( !root || !root.isAttached() ) {\n\t\t\t/**\n\t\t\t * Root with provided name does not exist or is already detached.\n\t\t\t *\n\t\t\t * @error writer-detachroot-no-root\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'writer-detachroot-no-root', this );\n\t\t}\n\n\t\t// First, remove all markers from the root. It is better to do it before removing stuff for undo purposes.\n\t\t// However, looking through all the markers may not be the best performance wise. But there's no better solution for now.\n\t\tfor ( const marker of this.model.markers ) {\n\t\t\tif ( marker.getRange().root === root ) {\n\t\t\t\tthis.removeMarker( marker );\n\t\t\t}\n\t\t}\n\n\t\t// Remove all attributes from the root.\n\t\tfor ( const key of root.getAttributeKeys() ) {\n\t\t\tthis.removeAttribute( key, root );\n\t\t}\n\n\t\t// Remove all contents of the root.\n\t\tthis.remove( this.createRangeIn( root ) );\n\n\t\t// Finally, detach the root.\n\t\tconst document = this.model.document;\n\t\tconst operation = new RootOperation( root.rootName, root.name, false, document, document.version );\n\n\t\tthis.batch.addOperation( operation );\n\t\tthis.model.applyOperation( operation );\n\t}\n\n\t/**\n\t * Sets the document's selection (ranges and direction) to the specified location based on the given\n\t * {@link module:engine/model/selection~Selectable selectable} or creates an empty selection if no arguments were passed.\n\t *\n\t * ```ts\n\t * // Sets collapsed selection at the position of the given node and an offset.\n\t * writer.setSelection( paragraph, offset );\n\t * ```\n\t *\n\t * Creates a range inside an {@link module:engine/model/element~Element element} which starts before the first child of\n\t * that element and ends after the last child of that element.\n\t *\n\t * ```ts\n\t * writer.setSelection( paragraph, 'in' );\n\t * ```\n\t *\n\t * Creates a range on an {@link module:engine/model/item~Item item} which starts before the item and ends just after the item.\n\t *\n\t * ```ts\n\t * writer.setSelection( paragraph, 'on' );\n\t * ```\n\t *\n\t * `Writer#setSelection()` allow passing additional options (`backward`) as the last argument.\n\t *\n\t * ```ts\n\t * // Sets selection as backward.\n\t * writer.setSelection( element, 'in', { backward: true } );\n\t * ```\n\t *\n\t * Throws `writer-incorrect-use` error when the writer is used outside the `change()` block.\n\t *\n\t * See also: {@link #setSelection:SELECTABLE `setSelection( selectable, options )`}.\n\t *\n\t * @label NODE_OFFSET\n\t */\n\tpublic setSelection( selectable: Node, placeOrOffset: PlaceOrOffset, options?: { backward?: boolean } ): void;\n\n\t/**\n\t * Sets the document's selection (ranges and direction) to the specified location based on the given\n\t * {@link module:engine/model/selection~Selectable selectable} or creates an empty selection if no arguments were passed.\n\t *\n\t * ```ts\n\t * // Sets selection to the given range.\n\t * const range = writer.createRange( start, end );\n\t * writer.setSelection( range );\n\t *\n\t * // Sets selection to given ranges.\n\t * const ranges = [ writer.createRange( start1, end2 ), writer.createRange( star2, end2 ) ];\n\t * writer.setSelection( ranges );\n\t *\n\t * // Sets selection to other selection.\n\t * const otherSelection = writer.createSelection();\n\t * writer.setSelection( otherSelection );\n\t *\n\t * // Sets selection to the given document selection.\n\t * const documentSelection = model.document.selection;\n\t * writer.setSelection( documentSelection );\n\t *\n\t * // Sets collapsed selection at the given position.\n\t * const position = writer.createPosition( root, path );\n\t * writer.setSelection( position );\n\t *\n\t * // Removes all selection's ranges.\n\t * writer.setSelection( null );\n\t * ```\n\t *\n\t * `Writer#setSelection()` allow passing additional options (`backward`) as the last argument.\n\t *\n\t * ```ts\n\t * // Sets selection as backward.\n\t * writer.setSelection( range, { backward: true } );\n\t * ```\n\t *\n\t * Throws `writer-incorrect-use` error when the writer is used outside the `change()` block.\n\t *\n\t * See also: {@link #setSelection:NODE_OFFSET `setSelection( node, placeOrOffset, options )`}.\n\t *\n\t * @label SELECTABLE\n\t */\n\tpublic setSelection( selectable: Exclude<Selectable, Node>, options?: { backward?: boolean } ): void;\n\n\tpublic setSelection( ...args: Parameters<Selection[ 'setTo' ]> ): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tthis.model.document.selection._setTo( ...args );\n\t}\n\n\t/**\n\t * Moves {@link module:engine/model/documentselection~DocumentSelection#focus} to the specified location.\n\t *\n\t * The location can be specified in the same form as\n\t * {@link #createPositionAt `writer.createPositionAt()`} parameters.\n\t *\n\t * @param itemOrPosition\n\t * @param offset Offset or one of the flags. Used only when first parameter is a {@link module:engine/model/item~Item model item}.\n\t */\n\tpublic setSelectionFocus(\n\t\titemOrPosition: Item | Position,\n\t\toffset?: PositionOffset\n\t): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tthis.model.document.selection._setFocus( itemOrPosition, offset );\n\t}\n\n\t/**\n\t * Sets attribute on the selection. If attribute with the same key already is set, it's value is overwritten.\n\t *\n\t * ```ts\n\t * writer.setSelectionAttribute( 'italic', true );\n\t * ```\n\t *\n\t * @label KEY_VALUE\n\t * @param key Key of the attribute to set.\n\t * @param value Attribute value.\n\t */\n\tpublic setSelectionAttribute( key: string, value: unknown ): void;\n\n\t/**\n\t * Sets attributes on the selection. If any attribute with the same key already is set, it's value is overwritten.\n\t *\n\t * Using key-value object:\n\t *\n\t * ```ts\n\t * writer.setSelectionAttribute( { italic: true, bold: false } );\n\t * ```\n\t *\n\t * Using iterable object:\n\t *\n\t * ```ts\n\t * writer.setSelectionAttribute( new Map( [ [ 'italic', true ] ] ) );\n\t * ```\n\t *\n\t * @label OBJECT\n\t * @param objectOrIterable Object / iterable of key => value attribute pairs.\n\t */\n\tpublic setSelectionAttribute( objectOrIterable: NodeAttributes ): void;\n\n\tpublic setSelectionAttribute(\n\t\tkeyOrObjectOrIterable: string | NodeAttributes,\n\t\tvalue?: unknown\n\t): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tif ( typeof keyOrObjectOrIterable === 'string' ) {\n\t\t\tthis._setSelectionAttribute( keyOrObjectOrIterable, value );\n\t\t} else {\n\t\t\tfor ( const [ key, value ] of toMap( keyOrObjectOrIterable ) ) {\n\t\t\t\tthis._setSelectionAttribute( key, value );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Removes attribute(s) with given key(s) from the selection.\n\t *\n\t * Remove one attribute:\n\t *\n\t * ```ts\n\t * writer.removeSelectionAttribute( 'italic' );\n\t * ```\n\t *\n\t * Remove multiple attributes:\n\t *\n\t * ```ts\n\t * writer.removeSelectionAttribute( [ 'italic', 'bold' ] );\n\t * ```\n\t *\n\t * @param keyOrIterableOfKeys Key of the attribute to remove or an iterable of attribute keys to remove.\n\t */\n\tpublic removeSelectionAttribute( keyOrIterableOfKeys: string | Iterable<string> ): void {\n\t\tthis._assertWriterUsedCorrectly();\n\n\t\tif ( typeof keyOrIterableOfKeys === 'string' ) {\n\t\t\tthis._removeSelectionAttribute( keyOrIterableOfKeys );\n\t\t} else {\n\t\t\tfor ( const key of keyOrIterableOfKeys ) {\n\t\t\t\tthis._removeSelectionAttribute( key );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Temporarily changes the {@link module:engine/model/documentselection~DocumentSelection#isGravityOverridden gravity}\n\t * of the selection from left to right.\n\t *\n\t * The gravity defines from which direction the selection inherits its attributes. If it's the default left gravity,\n\t * then the selection (after being moved by the user) inherits attributes from its left-hand side.\n\t * This method allows to temporarily override this behavior by forcing the gravity to the right.\n\t *\n\t * For the following model fragment:\n\t *\n\t * ```xml\n\t * <$text bold=\"true\" linkHref=\"url\">bar[]</$text><$text bold=\"true\">biz</$text>\n\t * ```\n\t *\n\t * * Default gravity: selection will have the `bold` and `linkHref` attributes.\n\t * * Overridden gravity: selection will have `bold` attribute.\n\t *\n\t * **Note**: It returns an unique identifier which is required to restore the gravity. It guarantees the symmetry\n\t * of the process.\n\t *\n\t * @returns The unique id which allows restoring the gravity.\n\t */\n\tpublic overrideSelectionGravity(): string {\n\t\treturn this.model.document.selection._overrideGravity();\n\t}\n\n\t/**\n\t * Restores {@link ~Writer#overrideSelectionGravity} gravity to default.\n\t *\n\t * Restoring the gravity is only possible using the unique identifier returned by\n\t * {@link ~Writer#overrideSelectionGravity}. Note that the gravity remains overridden as long as won't be restored\n\t * the same number of times it was overridden.\n\t *\n\t * @param uid The unique id returned by {@link ~Writer#overrideSelectionGravity}.\n\t */\n\tpublic restoreSelectionGravity( uid: string ): void {\n\t\tthis.model.document.selection._restoreGravity( uid );\n\t}\n\n\t/**\n\t * @param key Key of the attribute to remove.\n\t * @param value Attribute value.\n\t */\n\tprivate _setSelectionAttribute( key: string, value: unknown ): void {\n\t\tconst selection = this.model.document.selection;\n\n\t\t// Store attribute in parent element if the selection is collapsed in an empty node.\n\t\tif ( selection.isCollapsed && selection.anchor!.parent.isEmpty ) {\n\t\t\tconst storeKey = DocumentSelection._getStoreAttributeKey( key );\n\n\t\t\tthis.setAttribute( storeKey, value, selection.anchor!.parent as any );\n\t\t}\n\n\t\tselection._setAttribute( key, value );\n\t}\n\n\t/**\n\t * @param key Key of the attribute to remove.\n\t */\n\tprivate _removeSelectionAttribute( key: string ): void {\n\t\tconst selection = this.model.document.selection;\n\n\t\t// Remove stored attribute from parent element if the selection is collapsed in an empty node.\n\t\tif ( selection.isCollapsed && selection.anchor!.parent.isEmpty ) {\n\t\t\tconst storeKey = DocumentSelection._getStoreAttributeKey( key );\n\n\t\t\tthis.removeAttribute( storeKey, selection.anchor!.parent as any );\n\t\t}\n\n\t\tselection._removeAttribute( key );\n\t}\n\n\t/**\n\t * Throws `writer-detached-writer-tries-to-modify-model` error when the writer is used outside of the `change()` block.\n\t */\n\tprivate _assertWriterUsedCorrectly(): void {\n\t\t/**\n\t\t * Trying to use a writer outside a {@link module:engine/model/model~Model#change `change()`} or\n\t\t * {@link module:engine/model/model~Model#enqueueChange `enqueueChange()`} blocks.\n\t\t *\n\t\t * The writer can only be used inside these blocks which ensures that the model\n\t\t * can only be changed during such \"sessions\".\n\t\t *\n\t\t * @error writer-incorrect-use\n\t\t */\n\t\tif ( ( this.model as any )._currentWriter !== this ) {\n\t\t\tthrow new CKEditorError( 'writer-incorrect-use', this );\n\t\t}\n\t}\n\n\t/**\n\t * For given action `type` and `positionOrRange` where the action happens, this function finds all affected markers\n\t * and applies a marker operation with the new marker range equal to the current range. Thanks to this, the marker range\n\t * can be later correctly processed during undo.\n\t *\n\t * @param type Writer action type.\n\t * @param positionOrRange Position or range where the writer action happens.\n\t */\n\tprivate _addOperationForAffectedMarkers(\n\t\ttype: 'move' | 'merge',\n\t\tpositionOrRange: Position | Range\n\t): void {\n\t\tfor ( const marker of this.model.markers ) {\n\t\t\tif ( !marker.managedUsingOperations ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst markerRange = marker.getRange();\n\t\t\tlet isAffected = false;\n\n\t\t\tif ( type === 'move' ) {\n\t\t\t\tconst range = positionOrRange as Range;\n\t\t\t\tisAffected =\n\t\t\t\t\trange.containsPosition( markerRange.start ) ||\n\t\t\t\t\trange.start.isEqual( markerRange.start ) ||\n\t\t\t\t\trange.containsPosition( markerRange.end ) ||\n\t\t\t\t\trange.end.isEqual( markerRange.end );\n\t\t\t} else {\n\t\t\t\t// if type === 'merge'.\n\t\t\t\tconst position = positionOrRange as Position;\n\t\t\t\tconst elementBefore = position.nodeBefore;\n\t\t\t\tconst elementAfter = position.nodeAfter;\n\n\t\t\t\t// Start: <p>Foo[</p><p>Bar]</p>\n\t\t\t\t// After merge: <p>Foo[Bar]</p>\n\t\t\t\t// After undoing split: <p>Foo</p><p>[Bar]</p> <-- incorrect, needs remembering for undo.\n\t\t\t\t//\n\t\t\t\tconst affectedInLeftElement = markerRange.start.parent == elementBefore && markerRange.start.isAtEnd;\n\n\t\t\t\t// Start: <p>[Foo</p><p>]Bar</p>\n\t\t\t\t// After merge: <p>[Foo]Bar</p>\n\t\t\t\t// After undoing split: <p>[Foo]</p><p>Bar</p> <-- incorrect, needs remembering for undo.\n\t\t\t\t//\n\t\t\t\tconst affectedInRightElement = markerRange.end.parent == elementAfter && markerRange.end.offset == 0;\n\n\t\t\t\t// Start: <p>[Foo</p>]<p>Bar</p>\n\t\t\t\t// After merge: <p>[Foo]Bar</p>\n\t\t\t\t// After undoing split: <p>[Foo]</p><p>Bar</p> <-- incorrect, needs remembering for undo.\n\t\t\t\t//\n\t\t\t\tconst affectedAfterLeftElement = markerRange.end.nodeAfter == elementAfter;\n\n\t\t\t\t// Start: <p>Foo</p>[<p>Bar]</p>\n\t\t\t\t// After merge: <p>Foo[Bar]</p>\n\t\t\t\t// After undoing split: <p>Foo</p><p>[Bar]</p> <-- incorrect, needs remembering for undo.\n\t\t\t\t//\n\t\t\t\tconst affectedBeforeRightElement = markerRange.start.nodeAfter == elementAfter;\n\n\t\t\t\tisAffected = affectedInLeftElement || affectedInRightElement || affectedAfterLeftElement || affectedBeforeRightElement;\n\t\t\t}\n\n\t\t\tif ( isAffected ) {\n\t\t\t\tthis.updateMarker( marker.name, { range: markerRange } );\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Sets given attribute to each node in given range. When attribute value is null then attribute will be removed.\n *\n * Because attribute operation needs to have the same attribute value on the whole range, this function splits\n * the range into smaller parts.\n *\n * Given `range` must be flat.\n */\nfunction setAttributeOnRange( writer: Writer, key: string, value: unknown, range: Range ) {\n\tconst model = writer.model;\n\tconst doc = model.document;\n\n\t// Position of the last split, the beginning of the new range.\n\tlet lastSplitPosition = range.start;\n\n\t// Currently position in the scanning range. Because we need value after the position, it is not a current\n\t// position of the iterator but the previous one (we need to iterate one more time to get the value after).\n\tlet position: Position | undefined;\n\n\t// Value before the currently position.\n\tlet valueBefore: unknown;\n\n\t// Value after the currently position.\n\tlet valueAfter;\n\n\tfor ( const val of range.getWalker( { shallow: true } ) ) {\n\t\tvalueAfter = val.item.getAttribute( key );\n\n\t\t// At the first run of the iterator the position in undefined. We also do not have a valueBefore, but\n\t\t// because valueAfter may be null, valueBefore may be equal valueAfter ( undefined == null ).\n\t\tif ( position && valueBefore != valueAfter ) {\n\t\t\t// if valueBefore == value there is nothing to change, so we add operation only if these values are different.\n\t\t\tif ( valueBefore != value ) {\n\t\t\t\taddOperation();\n\t\t\t}\n\n\t\t\tlastSplitPosition = position;\n\t\t}\n\n\t\tposition = val.nextPosition;\n\t\tvalueBefore = valueAfter;\n\t}\n\n\t// Because position in the loop is not the iterator position (see let position comment), the last position in\n\t// the while loop will be last but one position in the range. We need to check the last position manually.\n\tif ( position instanceof Position && position != lastSplitPosition && valueBefore != value ) {\n\t\taddOperation();\n\t}\n\n\tfunction addOperation() {\n\t\tconst range = new Range( lastSplitPosition, position );\n\t\tconst version = range.root.document ? doc.version : null;\n\t\tconst operation = new AttributeOperation( range, key, valueBefore, value, version );\n\n\t\twriter.batch.addOperation( operation );\n\t\tmodel.applyOperation( operation );\n\t}\n}\n\n/**\n * Sets given attribute to the given node. When attribute value is null then attribute will be removed.\n */\nfunction setAttributeOnItem( writer: Writer, key: string, value: unknown, item: Item ) {\n\tconst model = writer.model;\n\tconst doc = model.document;\n\tconst previousValue = item.getAttribute( key );\n\tlet range, operation;\n\n\tif ( previousValue != value ) {\n\t\tconst isRootChanged = item.root === item;\n\n\t\tif ( isRootChanged ) {\n\t\t\t// If we change attributes of root element, we have to use `RootAttributeOperation`.\n\t\t\tconst version = item.document ? doc.version : null;\n\n\t\t\toperation = new RootAttributeOperation( item as any, key, previousValue, value, version );\n\t\t} else {\n\t\t\trange = new Range( Position._createBefore( item ), writer.createPositionAfter( item ) );\n\n\t\t\tconst version = range.root.document ? doc.version : null;\n\n\t\t\toperation = new AttributeOperation( range, key, previousValue, value, version );\n\t\t}\n\n\t\twriter.batch.addOperation( operation );\n\t\tmodel.applyOperation( operation );\n\t}\n}\n\n/**\n * Creates and applies marker operation to {@link module:engine/model/operation/operation~Operation operation}.\n */\nfunction applyMarkerOperation(\n\twriter: Writer,\n\tname: string,\n\toldRange: Range | null,\n\tnewRange: Range | null,\n\taffectsData: boolean | undefined\n) {\n\tconst model = writer.model;\n\tconst doc = model.document;\n\n\tconst operation = new MarkerOperation( name, oldRange, newRange, model.markers, !!affectsData, doc.version );\n\n\twriter.batch.addOperation( operation );\n\tmodel.applyOperation( operation );\n}\n\n/**\n * Creates `MoveOperation` or `DetachOperation` that removes `howMany` nodes starting from `position`.\n * The operation will be applied on given model instance and added to given operation instance.\n *\n * @param position Position from which nodes are removed.\n * @param howMany Number of nodes to remove.\n * @param batch Batch to which the operation will be added.\n * @param model Model instance on which operation will be applied.\n */\nfunction applyRemoveOperation( position: Position, howMany: number, batch: Batch, model: Model ) {\n\tlet operation;\n\n\tif ( position.root.document ) {\n\t\tconst doc = model.document;\n\t\tconst graveyardPosition = new Position( doc.graveyard, [ 0 ] );\n\n\t\toperation = new MoveOperation( position, howMany, graveyardPosition, doc.version );\n\t} else {\n\t\toperation = new DetachOperation( position, howMany );\n\t}\n\n\tbatch.addOperation( operation );\n\tmodel.applyOperation( operation );\n}\n\n/**\n * Returns `true` if both root elements are the same element or both are documents root elements.\n *\n * Elements in the same tree can be moved (for instance you can move element form one documents root to another, or\n * within the same document fragment), but when element supposed to be moved from document fragment to the document, or\n * to another document it should be removed and inserted to avoid problems with OT. This is because features like undo or\n * collaboration may track changes on the document but ignore changes on detached fragments and should not get\n * unexpected `move` operation.\n */\nfunction isSameTree( rootA: Node | DocumentFragment, rootB: Node | DocumentFragment ): boolean {\n\t// If it is the same root this is the same tree.\n\tif ( rootA === rootB ) {\n\t\treturn true;\n\t}\n\n\t// If both roots are documents root it is operation within the document what we still treat as the same tree.\n\tif ( rootA instanceof RootElement && rootB instanceof RootElement ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/utils/deletecontent\n */\n\nimport DocumentSelection from '../documentselection';\nimport LivePosition from '../liveposition';\nimport Range from '../range';\n\nimport type DocumentFragment from '../documentfragment';\nimport type Element from '../element';\nimport type Model from '../model';\nimport type Position from '../position';\nimport type Schema from '../schema';\nimport type Selection from '../selection';\nimport type Writer from '../writer';\n\n/**\n * Deletes content of the selection and merge siblings. The resulting selection is always collapsed.\n *\n * **Note:** Use {@link module:engine/model/model~Model#deleteContent} instead of this function.\n * This function is only exposed to be reusable in algorithms\n * which change the {@link module:engine/model/model~Model#deleteContent}\n * method's behavior.\n *\n * @param model The model in context of which the insertion should be performed.\n * @param selection Selection of which the content should be deleted.\n * @param options.leaveUnmerged Whether to merge elements after removing the content of the selection.\n *\n * For example `<heading>x[x</heading><paragraph>y]y</paragraph>` will become:\n *\n * * `<heading>x^y</heading>` with the option disabled (`leaveUnmerged == false`)\n * * `<heading>x^</heading><paragraph>y</paragraph>` with enabled (`leaveUnmerged == true`).\n *\n * Note: {@link module:engine/model/schema~Schema#isObject object} and {@link module:engine/model/schema~Schema#isLimit limit}\n * elements will not be merged.\n *\n * @param options.doNotResetEntireContent Whether to skip replacing the entire content with a\n * paragraph when the entire content was selected.\n *\n * For example `<heading>[x</heading><paragraph>y]</paragraph>` will become:\n *\n * * `<paragraph>^</paragraph>` with the option disabled (`doNotResetEntireContent == false`)\n * * `<heading>^</heading>` with enabled (`doNotResetEntireContent == true`).\n *\n * @param options.doNotAutoparagraph Whether to create a paragraph if after content deletion selection is moved\n * to a place where text cannot be inserted.\n *\n * For example `<paragraph>x</paragraph>[<imageBlock src=\"foo.jpg\"></imageBlock>]` will become:\n *\n * * `<paragraph>x</paragraph><paragraph>[]</paragraph>` with the option disabled (`doNotAutoparagraph == false`)\n * * `<paragraph>x</paragraph>[]` with the option enabled (`doNotAutoparagraph == true`).\n *\n * If you use this option you need to make sure to handle invalid selections yourself or leave\n * them to the selection post-fixer (may not always work).\n *\n * **Note:** If there is no valid position for the selection, the paragraph will always be created:\n *\n * `[<imageBlock src=\"foo.jpg\"></imageBlock>]` -> `<paragraph>[]</paragraph>`.\n */\nexport default function deleteContent(\n\tmodel: Model,\n\tselection: Selection | DocumentSelection,\n\toptions: {\n\t\tleaveUnmerged?: boolean;\n\t\tdoNotResetEntireContent?: boolean;\n\t\tdoNotAutoparagraph?: boolean;\n\t} = {}\n): void {\n\tif ( selection.isCollapsed ) {\n\t\treturn;\n\t}\n\n\tconst selRange = selection.getFirstRange()!;\n\n\t// If the selection is already removed, don't do anything.\n\tif ( selRange.root.rootName == '$graveyard' ) {\n\t\treturn;\n\t}\n\n\tconst schema = model.schema;\n\n\tmodel.change( writer => {\n\t\t// 1. Replace the entire content with paragraph.\n\t\t// See: https://github.com/ckeditor/ckeditor5-engine/issues/1012#issuecomment-315017594.\n\t\tif ( !options.doNotResetEntireContent && shouldEntireContentBeReplacedWithParagraph( schema, selection ) ) {\n\t\t\treplaceEntireContentWithParagraph( writer, selection );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Collect attributes to copy in case of autoparagraphing.\n\t\tconst attributesForAutoparagraph = {};\n\n\t\tif ( !options.doNotAutoparagraph ) {\n\t\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\t\tif ( selectedElement ) {\n\t\t\t\tObject.assign( attributesForAutoparagraph, schema.getAttributesWithProperty( selectedElement, 'copyOnReplace', true ) );\n\t\t\t}\n\t\t}\n\n\t\t// Get the live positions for the range adjusted to span only blocks selected from the user perspective.\n\t\tconst [ startPosition, endPosition ] = getLivePositionsForSelectedBlocks( selRange );\n\n\t\t// 2. Remove the content if there is any.\n\t\tif ( !startPosition.isTouching( endPosition ) ) {\n\t\t\twriter.remove( writer.createRange( startPosition, endPosition ) );\n\t\t}\n\n\t\t// 3. Merge elements in the right branch to the elements in the left branch.\n\t\t// The only reasonable (in terms of data and selection correctness) case in which we need to do that is:\n\t\t//\n\t\t// <heading type=1>Fo[</heading><paragraph>]ar</paragraph> => <heading type=1>Fo^ar</heading>\n\t\t//\n\t\t// However, the algorithm supports also merging deeper structures (up to the depth of the shallower branch),\n\t\t// as it's hard to imagine what should actually be the default behavior. Usually, specific features will\n\t\t// want to override that behavior anyway.\n\t\tif ( !options.leaveUnmerged ) {\n\t\t\tmergeBranches( writer, startPosition, endPosition );\n\n\t\t\t// TMP this will be replaced with a postfixer.\n\t\t\t// We need to check and strip disallowed attributes in all nested nodes because after merge\n\t\t\t// some attributes could end up in a path where are disallowed.\n\t\t\t//\n\t\t\t// e.g. bold is disallowed for <H1>\n\t\t\t// <h1>Fo{o</h1><p>b}a<b>r</b><p> -> <h1>Fo{}a<b>r</b><h1> -> <h1>Fo{}ar<h1>.\n\t\t\tschema.removeDisallowedAttributes( startPosition.parent.getChildren(), writer );\n\t\t}\n\n\t\tcollapseSelectionAt( writer, selection, startPosition );\n\n\t\t// 4. Add a paragraph to set selection in it.\n\t\t// Check if a text is allowed in the new container. If not, try to create a new paragraph (if it's allowed here).\n\t\t// If autoparagraphing is off, we assume that you know what you do so we leave the selection wherever it was.\n\t\tif ( !options.doNotAutoparagraph && shouldAutoparagraph( schema, startPosition ) ) {\n\t\t\tinsertParagraph( writer, startPosition, selection, attributesForAutoparagraph );\n\t\t}\n\n\t\tstartPosition.detach();\n\t\tendPosition.detach();\n\t} );\n}\n\n/**\n * Returns the live positions for the range adjusted to span only blocks selected from the user perspective. Example:\n *\n * ```\n * <heading1>[foo</heading1>\n * <paragraph>bar</paragraph>\n * <heading1>]abc</heading1> <-- this block is not considered as selected\n * ```\n *\n * This is the same behavior as in Selection#getSelectedBlocks() \"special case\".\n */\nfunction getLivePositionsForSelectedBlocks( range: Range ): [ startPosition: LivePosition, endPosition: LivePosition ] {\n\tconst model = range.root.document!.model;\n\n\tconst startPosition = range.start;\n\tlet endPosition = range.end;\n\n\t// If the end of selection is at the start position of last block in the selection, then\n\t// shrink it to not include that trailing block. Note that this should happen only for not empty selection.\n\tif ( model.hasContent( range, { ignoreMarkers: true } ) ) {\n\t\tconst endBlock = getParentBlock( endPosition );\n\n\t\tif ( endBlock && endPosition.isTouching( model.createPositionAt( endBlock, 0 ) ) ) {\n\t\t\t// Create forward selection as a probe to find a valid position after excluding last block from the range.\n\t\t\tconst selection = model.createSelection( range );\n\n\t\t\t// Modify the forward selection in backward direction to shrink it and remove first position of following block from it.\n\t\t\t// This is how modifySelection works and here we are making use of it.\n\t\t\tmodel.modifySelection( selection, { direction: 'backward' } );\n\n\t\t\tconst newEndPosition = selection.getLastPosition()!;\n\n\t\t\t// For such a model and selection:\n\t\t\t// <paragraph>A[</paragraph><imageBlock></imageBlock><paragraph>]B</paragraph>\n\t\t\t//\n\t\t\t// After modifySelection(), we would end up with this:\n\t\t\t// <paragraph>A[</paragraph>]<imageBlock></imageBlock><paragraph>B</paragraph>\n\t\t\t//\n\t\t\t// So we need to check if there is no content in the skipped range (because we want to include the <imageBlock>).\n\t\t\tconst skippedRange = model.createRange( newEndPosition, endPosition );\n\n\t\t\tif ( !model.hasContent( skippedRange, { ignoreMarkers: true } ) ) {\n\t\t\t\tendPosition = newEndPosition;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn [\n\t\tLivePosition.fromPosition( startPosition, 'toPrevious' ),\n\t\tLivePosition.fromPosition( endPosition, 'toNext' )\n\t];\n}\n\n/**\n * Finds the lowest element in position's ancestors which is a block.\n * Returns null if a limit element is encountered before reaching a block element.\n */\nfunction getParentBlock( position: Position ): Element | null | undefined {\n\tconst element = position.parent;\n\tconst schema = element.root.document!.model.schema;\n\tconst ancestors = element.getAncestors( { parentFirst: true, includeSelf: true } );\n\n\tfor ( const element of ancestors ) {\n\t\tif ( schema.isLimit( element ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( schema.isBlock( element ) ) {\n\t\t\treturn element as Element;\n\t\t}\n\t}\n}\n\n/**\n * This function is a result of reaching the Ballmer's peak for just the right amount of time.\n * Even I had troubles documenting it after a while and after reading it again I couldn't believe that it really works.\n */\nfunction mergeBranches( writer: Writer, startPosition: Position, endPosition: Position ) {\n\tconst model = writer.model;\n\n\t// Verify if there is a need and possibility to merge.\n\tif ( !checkShouldMerge( writer.model.schema, startPosition, endPosition ) ) {\n\t\treturn;\n\t}\n\n\t// If the start element on the common ancestor level is empty, and the end element on the same level is not empty\n\t// then merge those to the right element so that it's properties are preserved (name, attributes).\n\t// Because of OT merging is used instead of removing elements.\n\t//\n\t// Merge left:\n\t// <heading1>foo[</heading1> -> <heading1>foo[]bar</heading1>\n\t// <paragraph>]bar</paragraph> -> --^\n\t//\n\t// Merge right:\n\t// <heading1>[</heading1> ->\n\t// <paragraph>]bar</paragraph> -> <paragraph>[]bar</paragraph>\n\t//\n\t// Merge left:\n\t// <blockQuote> -> <blockQuote>\n\t// <heading1>foo[</heading1> -> <heading1>foo[]bar</heading1>\n\t// <paragraph>]bar</paragraph> -> --^\n\t// </blockQuote> -> </blockQuote>\n\t//\n\t// Merge right:\n\t// <blockQuote> -> <blockQuote>\n\t// <heading1>[</heading1> ->\n\t// <paragraph>]bar</paragraph> -> <paragraph>[]bar</paragraph>\n\t// </blockQuote> -> </blockQuote>\n\n\t// Merging should not go deeper than common ancestor.\n\tconst [ startAncestor, endAncestor ] = getAncestorsJustBelowCommonAncestor( startPosition, endPosition );\n\n\t// Branches can't be merged if one of the positions is directly inside a common ancestor.\n\t//\n\t// Example:\n\t// <blockQuote>\n\t// <paragraph>[foo</paragraph>]\n\t// <table> ... </table>\n\t// <blockQuote>\n\t//\n\tif ( !startAncestor || !endAncestor ) {\n\t\treturn;\n\t}\n\n\tif ( !model.hasContent( startAncestor, { ignoreMarkers: true } ) && model.hasContent( endAncestor, { ignoreMarkers: true } ) ) {\n\t\tmergeBranchesRight( writer, startPosition, endPosition, startAncestor.parent );\n\t} else {\n\t\tmergeBranchesLeft( writer, startPosition, endPosition, startAncestor.parent );\n\t}\n}\n\n/**\n * Merging blocks to the left (properties of the left block are preserved).\n * Simple example:\n *\n * ```\n * <heading1>foo[</heading1> -> <heading1>foo[bar</heading1>]\n * <paragraph>]bar</paragraph> -> --^\n * ```\n *\n * Nested example:\n *\n * ```\n * <blockQuote> -> <blockQuote>\n * <heading1>foo[</heading1> -> <heading1>foo[bar</heading1>\n * </blockQuote> -> </blockQuote>] ^\n * <blockBlock> -> |\n * <paragraph>]bar</paragraph> -> ---\n * </blockBlock> ->\n * ```\n */\nfunction mergeBranchesLeft(\n\twriter: Writer,\n\tstartPosition: Position,\n\tendPosition: Position,\n\tcommonAncestor: Element | DocumentFragment | null\n) {\n\tconst startElement = startPosition.parent as Element;\n\tconst endElement = endPosition.parent as Element;\n\n\t// Merging reached the common ancestor element, stop here.\n\tif ( startElement == commonAncestor || endElement == commonAncestor ) {\n\t\treturn;\n\t}\n\n\t// Remember next positions to merge in next recursive step (also used as modification points pointers).\n\tstartPosition = writer.createPositionAfter( startElement );\n\tendPosition = writer.createPositionBefore( endElement );\n\n\t// Move endElement just after startElement if they aren't siblings.\n\tif ( !endPosition.isEqual( startPosition ) ) {\n\t\t//\n\t\t// <blockQuote> -> <blockQuote>\n\t\t// <heading1>foo[</heading1> -> <heading1>foo</heading1>[<paragraph>bar</paragraph>\n\t\t// </blockQuote> -> </blockQuote> ^\n\t\t// <blockBlock> -> <blockBlock> |\n\t\t// <paragraph>]bar</paragraph> -> ] ---\n\t\t// </blockBlock> -> </blockBlock>\n\t\t//\n\t\twriter.insert( endElement, startPosition );\n\t}\n\n\t// Merge two siblings (nodes on sides of startPosition):\n\t//\n\t// <blockQuote> -> <blockQuote>\n\t// <heading1>foo</heading1>[<paragraph>bar</paragraph> -> <heading1>foo[bar</heading1>\n\t// </blockQuote> -> </blockQuote>\n\t// <blockBlock> -> <blockBlock>\n\t// ] -> ]\n\t// </blockBlock> -> </blockBlock>\n\t//\n\t// Or in simple case (without moving elements in above if):\n\t// <heading1>foo</heading1>[<paragraph>bar</paragraph>] -> <heading1>foo[bar</heading1>]\n\t//\n\twriter.merge( startPosition );\n\n\t// Remove empty end ancestors:\n\t//\n\t// <blockQuote> -> <blockQuote>\n\t// <heading1>foo[bar</heading1> -> <heading1>foo[bar</heading1>\n\t// </blockQuote> -> </blockQuote>\n\t// <blockBlock> ->\n\t// ] -> ]\n\t// </blockBlock> ->\n\t//\n\twhile ( endPosition.parent.isEmpty ) {\n\t\tconst parentToRemove = endPosition.parent as Element;\n\n\t\tendPosition = writer.createPositionBefore( parentToRemove );\n\n\t\twriter.remove( parentToRemove );\n\t}\n\n\t// Verify if there is a need and possibility to merge next level.\n\tif ( !checkShouldMerge( writer.model.schema, startPosition, endPosition ) ) {\n\t\treturn;\n\t}\n\n\t// Continue merging next level (blockQuote with blockBlock in the examples above if it would not be empty and got removed).\n\tmergeBranchesLeft( writer, startPosition, endPosition, commonAncestor );\n}\n\n/**\n * Merging blocks to the right (properties of the right block are preserved).\n * Simple example:\n *\n * ```\n * <heading1>foo[</heading1> -> --v\n * <paragraph>]bar</paragraph> -> [<paragraph>foo]bar</paragraph>\n * ```\n *\n * Nested example:\n *\n * ```\n * <blockQuote> ->\n * <heading1>foo[</heading1> -> ---\n * </blockQuote> -> |\n * <blockBlock> -> [<blockBlock> v\n * <paragraph>]bar</paragraph> -> <paragraph>foo]bar</paragraph>\n * </blockBlock> -> </blockBlock>\n * ```\n */\nfunction mergeBranchesRight(\n\twriter: Writer,\n\tstartPosition: Position,\n\tendPosition: Position,\n\tcommonAncestor: Element | DocumentFragment | null\n) {\n\tconst startElement = startPosition.parent as Element;\n\tconst endElement = endPosition.parent as Element;\n\n\t// Merging reached the common ancestor element, stop here.\n\tif ( startElement == commonAncestor || endElement == commonAncestor ) {\n\t\treturn;\n\t}\n\n\t// Remember next positions to merge in next recursive step (also used as modification points pointers).\n\tstartPosition = writer.createPositionAfter( startElement );\n\tendPosition = writer.createPositionBefore( endElement );\n\n\t// Move startElement just before endElement if they aren't siblings.\n\tif ( !endPosition.isEqual( startPosition ) ) {\n\t\t//\n\t\t// <blockQuote> -> <blockQuote>\n\t\t// <heading1>foo[</heading1> -> [ ---\n\t\t// </blockQuote> -> </blockQuote> |\n\t\t// <blockBlock> -> <blockBlock> v\n\t\t// <paragraph>]bar</paragraph> -> <heading1>foo</heading1>]<paragraph>bar</paragraph>\n\t\t// </blockBlock> -> </blockBlock>\n\t\t//\n\t\twriter.insert( startElement, endPosition );\n\t}\n\n\t// Remove empty end ancestors:\n\t//\n\t// <blockQuote> ->\n\t// [ -> [\n\t// </blockQuote> ->\n\t// <blockBlock> -> <blockBlock>\n\t// <heading1>foo</heading1>]<paragraph>bar</paragraph> -> <heading1>foo</heading1>]<paragraph>bar</paragraph>\n\t// </blockBlock> -> </blockBlock>\n\t//\n\twhile ( startPosition.parent.isEmpty ) {\n\t\tconst parentToRemove = startPosition.parent as Element;\n\n\t\tstartPosition = writer.createPositionBefore( parentToRemove );\n\n\t\twriter.remove( parentToRemove );\n\t}\n\n\t// Update endPosition after inserting and removing elements.\n\tendPosition = writer.createPositionBefore( endElement );\n\n\t// Merge right two siblings (nodes on sides of endPosition):\n\t// ->\n\t// [ -> [\n\t// ->\n\t// <blockBlock> -> <blockBlock>\n\t// <heading1>foo</heading1>]<paragraph>bar</paragraph> -> <paragraph>foo]bar</paragraph>\n\t// </blockBlock> -> </blockBlock>\n\t//\n\t// Or in simple case (without moving elements in above if):\n\t// [<heading1>foo</heading1>]<paragraph>bar</paragraph> -> [<heading1>foo]bar</heading1>\n\t//\n\tmergeRight( writer, endPosition );\n\n\t// Verify if there is a need and possibility to merge next level.\n\tif ( !checkShouldMerge( writer.model.schema, startPosition, endPosition ) ) {\n\t\treturn;\n\t}\n\n\t// Continue merging next level (blockQuote with blockBlock in the examples above if it would not be empty and got removed).\n\tmergeBranchesRight( writer, startPosition, endPosition, commonAncestor );\n}\n\n/**\n * There is no right merge operation so we need to simulate it.\n */\nfunction mergeRight( writer: Writer, position: Position ) {\n\tconst startElement: any = position.nodeBefore;\n\tconst endElement: any = position.nodeAfter;\n\n\tif ( startElement.name != endElement.name ) {\n\t\twriter.rename( startElement, endElement.name );\n\t}\n\n\twriter.clearAttributes( startElement );\n\twriter.setAttributes( Object.fromEntries( endElement.getAttributes() ), startElement );\n\n\twriter.merge( position );\n}\n\n/**\n * Verifies if merging is needed and possible. It's not needed if both positions are in the same element\n * and it's not possible if some element is a limit or the range crosses a limit element.\n */\nfunction checkShouldMerge( schema: Schema, startPosition: Position, endPosition: Position ): boolean {\n\tconst startElement = startPosition.parent;\n\tconst endElement = endPosition.parent;\n\n\t// If both positions ended up in the same parent, then there's nothing more to merge:\n\t// <$root><p>x[</p><p>]y</p></$root> => <$root><p>xy</p>[]</$root>\n\tif ( startElement == endElement ) {\n\t\treturn false;\n\t}\n\n\t// If one of the positions is a limit element, then there's nothing to merge because we don't want to cross the limit boundaries.\n\tif ( schema.isLimit( startElement ) || schema.isLimit( endElement ) ) {\n\t\treturn false;\n\t}\n\n\t// Check if operations we'll need to do won't need to cross object or limit boundaries.\n\t// E.g., we can't merge endElement into startElement in this case:\n\t// <limit><startElement>x[</startElement></limit><endElement>]</endElement>\n\treturn isCrossingLimitElement( startPosition, endPosition, schema );\n}\n\n/**\n * Returns the elements that are the ancestors of the provided positions that are direct children of the common ancestor.\n */\nfunction getAncestorsJustBelowCommonAncestor( positionA: Position, positionB: Position ) {\n\tconst ancestorsA = positionA.getAncestors();\n\tconst ancestorsB = positionB.getAncestors();\n\n\tlet i = 0;\n\n\twhile ( ancestorsA[ i ] && ancestorsA[ i ] == ancestorsB[ i ] ) {\n\t\ti++;\n\t}\n\n\treturn [ ancestorsA[ i ], ancestorsB[ i ] ];\n}\n\nfunction shouldAutoparagraph( schema: Schema, position: Position ) {\n\tconst isTextAllowed = schema.checkChild( position, '$text' );\n\tconst isParagraphAllowed = schema.checkChild( position, 'paragraph' );\n\n\treturn !isTextAllowed && isParagraphAllowed;\n}\n\n/**\n * Check if parents of two positions can be merged by checking if there are no limit/object\n * boundaries between those two positions.\n *\n * E.g. in <bQ><p>x[]</p></bQ><widget><caption>{}</caption></widget>\n * we'll check <p>, <bQ>, <widget> and <caption>.\n * Usually, widget and caption are marked as objects/limits in the schema, so in this case merging will be blocked.\n */\nfunction isCrossingLimitElement( leftPos: Position, rightPos: Position, schema: Schema ) {\n\tconst rangeToCheck = new Range( leftPos, rightPos );\n\n\tfor ( const value of rangeToCheck.getWalker() ) {\n\t\tif ( schema.isLimit( value.item ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction insertParagraph(\n\twriter: Writer,\n\tposition: Position,\n\tselection: Selection | DocumentSelection,\n\tattributes = {}\n) {\n\tconst paragraph = writer.createElement( 'paragraph' );\n\n\twriter.model.schema.setAllowedAttributes( paragraph, attributes, writer );\n\n\twriter.insert( paragraph, position );\n\n\tcollapseSelectionAt( writer, selection, writer.createPositionAt( paragraph, 0 ) );\n}\n\nfunction replaceEntireContentWithParagraph( writer: Writer, selection: Selection | DocumentSelection ) {\n\tconst limitElement = writer.model.schema.getLimitElement( selection );\n\n\twriter.remove( writer.createRangeIn( limitElement ) );\n\tinsertParagraph( writer, writer.createPositionAt( limitElement, 0 ), selection );\n}\n\n/**\n * We want to replace the entire content with a paragraph when:\n * * the entire content is selected,\n * * selection contains at least two elements,\n * * whether the paragraph is allowed in schema in the common ancestor.\n */\nfunction shouldEntireContentBeReplacedWithParagraph( schema: Schema, selection: Selection | DocumentSelection ) {\n\tconst limitElement = schema.getLimitElement( selection );\n\n\tif ( !selection.containsEntireContent( limitElement ) ) {\n\t\treturn false;\n\t}\n\n\tconst range = selection.getFirstRange()!;\n\n\tif ( range.start.parent == range.end.parent ) {\n\t\treturn false;\n\t}\n\n\treturn schema.checkChild( limitElement, 'paragraph' );\n}\n\n/**\n * Helper function that sets the selection. Depending whether given `selection` is a document selection or not,\n * uses a different method to set it.\n */\nfunction collapseSelectionAt(\n\twriter: Writer,\n\tselection: Selection | DocumentSelection,\n\tpositionOrRange: Position | Range\n) {\n\tif ( selection instanceof DocumentSelection ) {\n\t\twriter.setSelection( positionOrRange );\n\t} else {\n\t\tselection.setTo( positionOrRange );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport type DocumentFragment from '../documentfragment';\nimport type DocumentSelection from '../documentselection';\nimport type Element from '../element';\nimport type Model from '../model';\nimport type Range from '../range';\nimport type Selection from '../selection';\nimport type Writer from '../writer';\n\n/**\n * @module engine/model/utils/getselectedcontent\n */\n\n/**\n * Gets a clone of the selected content.\n *\n * For example, for the following selection:\n *\n * ```html\n * <p>x</p><quote><p>y</p><h>fir[st</h></quote><p>se]cond</p><p>z</p>\n * ```\n *\n * It will return a document fragment with such a content:\n *\n * ```html\n * <quote><h>st</h></quote><p>se</p>\n * ```\n *\n * @param model The model in context of which the selection modification should be performed.\n * @param selection The selection of which content will be returned.\n */\nexport default function getSelectedContent(\n\tmodel: Model,\n\tselection: Selection | DocumentSelection\n): DocumentFragment {\n\treturn model.change( writer => {\n\t\tconst frag = writer.createDocumentFragment();\n\t\tconst range = selection.getFirstRange();\n\n\t\tif ( !range || range.isCollapsed ) {\n\t\t\treturn frag;\n\t\t}\n\n\t\tconst root = range.start.root;\n\t\tconst commonPath = range.start.getCommonPath( range.end );\n\t\tconst commonParent = root.getNodeByPath( commonPath );\n\n\t\t// ## 1st step\n\t\t//\n\t\t// First, we'll clone a fragment represented by a minimal flat range\n\t\t// containing the original range to be cloned.\n\t\t// E.g. let's consider such a range:\n\t\t//\n\t\t// <p>x</p><quote><p>y</p><h>fir[st</h></quote><p>se]cond</p><p>z</p>\n\t\t//\n\t\t// A minimal flat range containing this one is:\n\t\t//\n\t\t// <p>x</p>[<quote><p>y</p><h>first</h></quote><p>second</p>]<p>z</p>\n\t\t//\n\t\t// We can easily clone this structure, preserving e.g. the <quote> element.\n\t\tlet flatSubtreeRange: Range;\n\n\t\tif ( range.start.parent == range.end.parent ) {\n\t\t\t// The original range is flat, so take it.\n\t\t\tflatSubtreeRange = range;\n\t\t} else {\n\t\t\tflatSubtreeRange = writer.createRange(\n\t\t\t\twriter.createPositionAt( commonParent, range.start.path[ commonPath.length ] ),\n\t\t\t\twriter.createPositionAt( commonParent, range.end.path[ commonPath.length ] + 1 )\n\t\t\t);\n\t\t}\n\n\t\tconst howMany = flatSubtreeRange.end.offset - flatSubtreeRange.start.offset;\n\n\t\t// Clone the whole contents.\n\t\tfor ( const item of flatSubtreeRange.getItems( { shallow: true } ) ) {\n\t\t\tif ( item.is( '$textProxy' ) ) {\n\t\t\t\twriter.appendText( item.data, item.getAttributes(), frag );\n\t\t\t} else {\n\t\t\t\twriter.append( writer.cloneElement( item as Element, true ), frag );\n\t\t\t}\n\t\t}\n\n\t\t// ## 2nd step\n\t\t//\n\t\t// If the original range wasn't flat, then we need to remove the excess nodes from the both ends of the cloned fragment.\n\t\t//\n\t\t// For example, for the range shown in the 1st step comment, we need to remove these pieces:\n\t\t//\n\t\t// <quote>[<p>y</p>]<h>[fir]st</h></quote><p>se[cond]</p>\n\t\t//\n\t\t// So this will be the final copied content:\n\t\t//\n\t\t// <quote><h>st</h></quote><p>se</p>\n\t\t//\n\t\t// In order to do that, we remove content from these two ranges:\n\t\t//\n\t\t// [<quote><p>y</p><h>fir]st</h></quote><p>se[cond</p>]\n\t\tif ( flatSubtreeRange != range ) {\n\t\t\t// Find the position of the original range in the cloned fragment.\n\t\t\tconst newRange = range._getTransformedByMove( flatSubtreeRange.start, writer.createPositionAt( frag, 0 ), howMany )[ 0 ];\n\n\t\t\tconst leftExcessRange = writer.createRange( writer.createPositionAt( frag, 0 ), newRange.start );\n\t\t\tconst rightExcessRange = writer.createRange( newRange.end, writer.createPositionAt( frag, 'end' ) );\n\n\t\t\tremoveRangeContent( rightExcessRange, writer );\n\t\t\tremoveRangeContent( leftExcessRange, writer );\n\t\t}\n\n\t\treturn frag;\n\t} );\n}\n\n// After https://github.com/ckeditor/ckeditor5-engine/issues/690 is fixed,\n// this function will, most likely, be able to rewritten using getMinimalFlatRanges().\nfunction removeRangeContent( range: Range, writer: Writer ) {\n\tconst parentsToCheck: Array<Element | DocumentFragment> = [];\n\n\tArray.from( range.getItems( { direction: 'backward' } ) )\n\t\t// We should better store ranges because text proxies will lose integrity\n\t\t// with the text nodes when we'll start removing content.\n\t\t.map( item => writer.createRangeOn( item ) )\n\t\t// Filter only these items which are fully contained in the passed range.\n\t\t//\n\t\t// E.g. for the following range: [<quote><p>y</p><h>fir]st</h>\n\t\t// the walker will return the entire <h> element, when only the \"fir\" item inside it is fully contained.\n\t\t.filter( itemRange => {\n\t\t\t// We should be able to use Range.containsRange, but https://github.com/ckeditor/ckeditor5-engine/issues/691.\n\t\t\tconst contained =\n\t\t\t\t( itemRange.start.isAfter( range.start ) || itemRange.start.isEqual( range.start ) ) &&\n\t\t\t\t( itemRange.end.isBefore( range.end ) || itemRange.end.isEqual( range.end ) );\n\n\t\t\treturn contained;\n\t\t} )\n\t\t.forEach( itemRange => {\n\t\t\tparentsToCheck.push( itemRange.start.parent );\n\n\t\t\twriter.remove( itemRange );\n\t\t} );\n\n\t// Remove ancestors of the removed items if they turned to be empty now\n\t// (their whole content was contained in the range).\n\tparentsToCheck.forEach( parentToCheck => {\n\t\tlet parent = parentToCheck;\n\n\t\twhile ( parent.parent && parent.isEmpty ) {\n\t\t\tconst removeRange = writer.createRangeOn( parent );\n\n\t\t\tparent = parent.parent;\n\n\t\t\twriter.remove( removeRange );\n\t\t}\n\t} );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/utils/insertcontent\n */\n\nimport DocumentSelection from '../documentselection';\nimport Element from '../element';\nimport LivePosition from '../liveposition';\nimport LiveRange from '../liverange';\nimport Position from '../position';\nimport Range from '../range';\n\nimport type DocumentFragment from '../documentfragment';\nimport type Item from '../item';\nimport type Model from '../model';\nimport type Schema from '../schema';\nimport type Writer from '../writer';\nimport type Node from '../node';\nimport type Selection from '../selection';\n\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Inserts content into the editor (specified selection) as one would expect the paste functionality to work.\n *\n * It takes care of removing the selected content, splitting elements (if needed), inserting elements and merging elements appropriately.\n *\n * Some examples:\n *\n * ```html\n * <p>x^</p> + <p>y</p> => <p>x</p><p>y</p> => <p>xy[]</p>\n * <p>x^y</p> + <p>z</p> => <p>x</p>^<p>y</p> + <p>z</p> => <p>x</p><p>z</p><p>y</p> => <p>xz[]y</p>\n * <p>x^y</p> + <img /> => <p>x</p>^<p>y</p> + <img /> => <p>x</p><img /><p>y</p>\n * <p>x</p><p>^</p><p>z</p> + <p>y</p> => <p>x</p><p>y[]</p><p>z</p> (no merging)\n * <p>x</p>[<img />]<p>z</p> + <p>y</p> => <p>x</p>^<p>z</p> + <p>y</p> => <p>x</p><p>y[]</p><p>z</p>\n * ```\n *\n * If an instance of {@link module:engine/model/selection~Selection} is passed as `selectable` it will be modified\n * to the insertion selection (equal to a range to be selected after insertion).\n *\n * If `selectable` is not passed, the content will be inserted using the current selection of the model document.\n *\n * **Note:** Use {@link module:engine/model/model~Model#insertContent} instead of this function.\n * This function is only exposed to be reusable in algorithms which change the {@link module:engine/model/model~Model#insertContent}\n * method's behavior.\n *\n * @param model The model in context of which the insertion should be performed.\n * @param content The content to insert.\n * @param selectable Selection into which the content should be inserted.\n * @param placeOrOffset Sets place or offset of the selection.\n * @returns Range which contains all the performed changes. This is a range that, if removed,\n * would return the model to the state before the insertion. If no changes were preformed by `insertContent`, returns a range collapsed\n * at the insertion position.\n */\nexport default function insertContent(\n\tmodel: Model,\n\tcontent: Item | DocumentFragment,\n\tselectable?: Selection | DocumentSelection\n): Range {\n\treturn model.change( writer => {\n\t\tconst selection: Selection | DocumentSelection = selectable ? selectable : model.document.selection;\n\n\t\tif ( !selection.isCollapsed ) {\n\t\t\tmodel.deleteContent( selection, { doNotAutoparagraph: true } );\n\t\t}\n\n\t\tconst insertion = new Insertion( model, writer, selection.anchor! );\n\t\tconst fakeMarkerElements = [];\n\n\t\tlet nodesToInsert: any;\n\n\t\tif ( content.is( 'documentFragment' ) ) {\n\t\t\t// If document fragment has any markers, these markers should be inserted into the model as well.\n\t\t\tif ( content.markers.size ) {\n\t\t\t\tconst markersPosition = [];\n\n\t\t\t\tfor ( const [ name, range ] of content.markers ) {\n\t\t\t\t\tconst { start, end } = range;\n\t\t\t\t\tconst isCollapsed = start.isEqual( end );\n\n\t\t\t\t\tmarkersPosition.push(\n\t\t\t\t\t\t{ position: start, name, isCollapsed },\n\t\t\t\t\t\t{ position: end, name, isCollapsed }\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Markers position is sorted backwards to ensure that the insertion of fake markers will not change\n\t\t\t\t// the position of the next markers.\n\t\t\t\tmarkersPosition.sort( ( { position: posA }, { position: posB } ) => posA.isBefore( posB ) ? 1 : -1 );\n\n\t\t\t\tfor ( const { position, name, isCollapsed } of markersPosition ) {\n\t\t\t\t\tlet fakeElement = null;\n\t\t\t\t\tlet collapsed = null;\n\t\t\t\t\tconst isAtBeginning = position.parent === content && position.isAtStart;\n\t\t\t\t\tconst isAtEnd = position.parent === content && position.isAtEnd;\n\n\t\t\t\t\t// We have two ways of handling markers. In general, we want to add temporary <$marker> model elements to\n\t\t\t\t\t// represent marker boundaries. These elements will be inserted into content together with the rest\n\t\t\t\t\t// of the document fragment. After insertion is done, positions for these elements will be read\n\t\t\t\t\t// and proper, actual markers will be created in the model and fake elements will be removed.\n\t\t\t\t\t//\n\t\t\t\t\t// However, if the <$marker> element is at the beginning or at the end of the document fragment,\n\t\t\t\t\t// it may affect how the inserted content is merged with current model, impacting the insertion\n\t\t\t\t\t// result. To avoid that, we don't add <$marker> elements at these positions. Instead, we will use\n\t\t\t\t\t// `Insertion#getAffectedRange()` to figure out new positions for these marker boundaries.\n\t\t\t\t\tif ( !isAtBeginning && !isAtEnd ) {\n\t\t\t\t\t\tfakeElement = writer.createElement( '$marker' );\n\t\t\t\t\t\twriter.insert( fakeElement, position );\n\t\t\t\t\t} else if ( isCollapsed ) {\n\t\t\t\t\t\t// Save whether the collapsed marker was at the beginning or at the end of document fragment\n\t\t\t\t\t\t// to know where to create it after the insertion is done.\n\t\t\t\t\t\tcollapsed = isAtBeginning ? 'start' as const : 'end' as const;\n\t\t\t\t\t}\n\n\t\t\t\t\tfakeMarkerElements.push( {\n\t\t\t\t\t\tname,\n\t\t\t\t\t\telement: fakeElement,\n\t\t\t\t\t\tcollapsed\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnodesToInsert = content.getChildren();\n\t\t} else {\n\t\t\tnodesToInsert = [ content ];\n\t\t}\n\n\t\tinsertion.handleNodes( nodesToInsert );\n\n\t\tlet newRange = insertion.getSelectionRange();\n\n\t\tif ( content.is( 'documentFragment' ) && fakeMarkerElements.length ) {\n\t\t\t// After insertion was done, the selection was set but the model contains fake <$marker> elements.\n\t\t\t// These <$marker> elements will be now removed. Because of that, we will need to fix the selection.\n\t\t\t// We will create a live range that will automatically be update as <$marker> elements are removed.\n\t\t\tconst selectionLiveRange = newRange ? LiveRange.fromRange( newRange ) : null;\n\n\t\t\t// Marker name -> [ start position, end position ].\n\t\t\tconst markersData: Record<string, Array<Position>> = {};\n\n\t\t\t// Note: `fakeMarkerElements` are sorted backwards. However, now, we want to handle the markers\n\t\t\t// from the beginning, so that existing <$marker> elements do not affect markers positions.\n\t\t\t// This is why we iterate from the end to the start.\n\t\t\tfor ( let i = fakeMarkerElements.length - 1; i >= 0; i-- ) {\n\t\t\t\tconst { name, element, collapsed } = fakeMarkerElements[ i ];\n\t\t\t\tconst isStartBoundary = !markersData[ name ];\n\n\t\t\t\tif ( isStartBoundary ) {\n\t\t\t\t\tmarkersData[ name ] = [];\n\t\t\t\t}\n\n\t\t\t\tif ( element ) {\n\t\t\t\t\t// Read fake marker element position to learn where the marker should be created.\n\t\t\t\t\tconst elementPosition = writer.createPositionAt( element, 'before' );\n\n\t\t\t\t\tmarkersData[ name ].push( elementPosition );\n\n\t\t\t\t\twriter.remove( element );\n\t\t\t\t} else {\n\t\t\t\t\t// If the fake marker element does not exist, it means that the marker boundary was at the beginning or at the end.\n\t\t\t\t\tconst rangeOnInsertion = insertion.getAffectedRange();\n\n\t\t\t\t\tif ( !rangeOnInsertion ) {\n\t\t\t\t\t\t// If affected range is `null` it means that nothing was in the document fragment or all content was filtered out.\n\t\t\t\t\t\t// Some markers that were in the filtered content may be removed (partially or totally).\n\t\t\t\t\t\t// Let's handle only those markers that were at the beginning or at the end of the document fragment.\n\t\t\t\t\t\tif ( collapsed ) {\n\t\t\t\t\t\t\tmarkersData[ name ].push( insertion.position );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( collapsed ) {\n\t\t\t\t\t\t// If the marker was collapsed at the beginning or at the end of the document fragment,\n\t\t\t\t\t\t// put both boundaries at the beginning or at the end of inserted range (to keep the marker collapsed).\n\t\t\t\t\t\tmarkersData[ name ].push( rangeOnInsertion[ collapsed ] );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmarkersData[ name ].push( isStartBoundary ? rangeOnInsertion.start : rangeOnInsertion.end );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( const [ name, [ start, end ] ] of Object.entries( markersData ) ) {\n\t\t\t\t// For now, we ignore markers if they are included in the filtered-out content.\n\t\t\t\t// In the future implementation we will improve that case to create markers that are not filtered out completely.\n\t\t\t\tif ( start && end && start.root === end.root ) {\n\t\t\t\t\twriter.addMarker( name, {\n\t\t\t\t\t\tusingOperation: true,\n\t\t\t\t\t\taffectsData: true,\n\t\t\t\t\t\trange: new Range( start, end )\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( selectionLiveRange ) {\n\t\t\t\tnewRange = selectionLiveRange.toRange();\n\t\t\t\tselectionLiveRange.detach();\n\t\t\t}\n\t\t}\n\n\t\t/* istanbul ignore else -- @preserve */\n\t\tif ( newRange ) {\n\t\t\tif ( selection instanceof DocumentSelection ) {\n\t\t\t\twriter.setSelection( newRange );\n\t\t\t} else {\n\t\t\t\tselection.setTo( newRange );\n\t\t\t}\n\t\t} else {\n\t\t\t// We are not testing else because it's a safe check for unpredictable edge cases:\n\t\t\t// an insertion without proper range to select.\n\t\t\t//\n\t\t\t// @if CK_DEBUG // console.warn( 'Cannot determine a proper selection range after insertion.' );\n\t\t}\n\n\t\tconst affectedRange = insertion.getAffectedRange() || model.createRange( selection.anchor! );\n\n\t\tinsertion.destroy();\n\n\t\treturn affectedRange;\n\t} );\n}\n\n/**\n * Utility class for performing content insertion.\n */\nclass Insertion {\n\t/**\n\t * The model in context of which the insertion should be performed.\n\t */\n\tpublic readonly model: Model;\n\n\t/**\n\t * Batch to which operations will be added.\n\t */\n\tpublic readonly writer: Writer;\n\n\t/**\n\t * The position at which (or near which) the next node will be inserted.\n\t */\n\tpublic position: Position;\n\n\t/**\n\t * Elements with which the inserted elements can be merged.\n\t *\n\t * ```html\n\t * <p>x^</p><p>y</p> + <p>z</p> (can merge to <p>x</p>)\n\t * <p>x</p><p>^y</p> + <p>z</p> (can merge to <p>y</p>)\n\t * <p>x^y</p> + <p>z</p> (can merge to <p>xy</p> which will be split during the action,\n\t * \t\t\t\t\t\tso both its pieces will be added to this set)\n\t * ```\n\t */\n\tpublic readonly canMergeWith: Set<Node | DocumentFragment | null>;\n\n\t/**\n\t * Schema of the model.\n\t */\n\tpublic readonly schema: Schema;\n\n\t/**\n\t * The temporary DocumentFragment used for grouping multiple nodes for single insert operation.\n\t */\n\tprivate readonly _documentFragment: DocumentFragment;\n\n\t/**\n\t * The current position in the temporary DocumentFragment.\n\t */\n\tprivate _documentFragmentPosition: Position;\n\n\t/**\n\t * The reference to the first inserted node.\n\t */\n\tprivate _firstNode: Node | null = null;\n\n\t/**\n\t * The reference to the last inserted node.\n\t */\n\tprivate _lastNode: Node | null = null;\n\n\t/**\n\t * The reference to the last auto paragraph node.\n\t */\n\tprivate _lastAutoParagraph: Element | null = null;\n\n\t/**\n\t * The array of nodes that should be cleaned of not allowed attributes.\n\t */\n\tprivate _filterAttributesOf: Array<Node> = [];\n\n\t/**\n\t * Beginning of the affected range. See {@link module:engine/model/utils/insertcontent~Insertion#getAffectedRange}.\n\t */\n\tprivate _affectedStart: LivePosition | null = null;\n\n\t/**\n\t * End of the affected range. See {@link module:engine/model/utils/insertcontent~Insertion#getAffectedRange}.\n\t */\n\tprivate _affectedEnd: LivePosition | null = null;\n\n\tprivate _nodeToSelect: Node | null = null;\n\n\tconstructor( model: Model, writer: Writer, position: Position ) {\n\t\tthis.model = model;\n\t\tthis.writer = writer;\n\t\tthis.position = position;\n\t\tthis.canMergeWith = new Set( [ this.position.parent ] );\n\t\tthis.schema = model.schema;\n\n\t\tthis._documentFragment = writer.createDocumentFragment();\n\t\tthis._documentFragmentPosition = writer.createPositionAt( this._documentFragment, 0 );\n\t}\n\n\t/**\n\t * Handles insertion of a set of nodes.\n\t *\n\t * @param nodes Nodes to insert.\n\t */\n\tpublic handleNodes( nodes: Iterable<Node> ): void {\n\t\tfor ( const node of Array.from( nodes ) ) {\n\t\t\tthis._handleNode( node );\n\t\t}\n\n\t\t// Insert nodes collected in temporary DocumentFragment.\n\t\tthis._insertPartialFragment();\n\n\t\t// If there was an auto paragraph then we might need to adjust the end of insertion.\n\t\tif ( this._lastAutoParagraph ) {\n\t\t\tthis._updateLastNodeFromAutoParagraph( this._lastAutoParagraph );\n\t\t}\n\n\t\t// After the content was inserted we may try to merge it with its next sibling if the selection was in it initially.\n\t\t// Merging with the previous sibling was performed just after inserting the first node to the document.\n\t\tthis._mergeOnRight();\n\n\t\t// TMP this will become a post-fixer.\n\t\tthis.schema.removeDisallowedAttributes( this._filterAttributesOf, this.writer );\n\t\tthis._filterAttributesOf = [];\n\t}\n\n\t/**\n\t * Updates the last node after the auto paragraphing.\n\t *\n\t * @param node The last auto paragraphing node.\n\t */\n\tprivate _updateLastNodeFromAutoParagraph( node: Node ): void {\n\t\tconst positionAfterLastNode = this.writer.createPositionAfter( this._lastNode! );\n\t\tconst positionAfterNode = this.writer.createPositionAfter( node );\n\n\t\t// If the real end was after the last auto paragraph then update relevant properties.\n\t\tif ( positionAfterNode.isAfter( positionAfterLastNode ) ) {\n\t\t\tthis._lastNode = node;\n\n\t\t\t/* istanbul ignore if -- @preserve */\n\t\t\tif ( this.position.parent != node || !this.position.isAtEnd ) {\n\t\t\t\t// Algorithm's correctness check. We should never end up here but it's good to know that we did.\n\t\t\t\t// At this point the insertion position should be at the end of the last auto paragraph.\n\t\t\t\t// Note: This error is documented in other place in this file.\n\t\t\t\tthrow new CKEditorError( 'insertcontent-invalid-insertion-position', this );\n\t\t\t}\n\n\t\t\tthis.position = positionAfterNode;\n\t\t\tthis._setAffectedBoundaries( this.position );\n\t\t}\n\t}\n\n\t/**\n\t * Returns range to be selected after insertion.\n\t * Returns `null` if there is no valid range to select after insertion.\n\t */\n\tpublic getSelectionRange(): Range | null {\n\t\tif ( this._nodeToSelect ) {\n\t\t\treturn Range._createOn( this._nodeToSelect );\n\t\t}\n\n\t\treturn this.model.schema.getNearestSelectionRange( this.position );\n\t}\n\n\t/**\n\t * Returns a range which contains all the performed changes. This is a range that, if removed, would return the model to the state\n\t * before the insertion. Returns `null` if no changes were done.\n\t */\n\tpublic getAffectedRange(): Range | null {\n\t\tif ( !this._affectedStart ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn new Range( this._affectedStart, this._affectedEnd );\n\t}\n\n\t/**\n\t * Destroys `Insertion` instance.\n\t */\n\tpublic destroy(): void {\n\t\tif ( this._affectedStart ) {\n\t\t\tthis._affectedStart.detach();\n\t\t}\n\n\t\tif ( this._affectedEnd ) {\n\t\t\tthis._affectedEnd.detach();\n\t\t}\n\t}\n\n\t/**\n\t * Handles insertion of a single node.\n\t */\n\tprivate _handleNode( node: Node ): void {\n\t\t// Let's handle object in a special way.\n\t\t// * They should never be merged with other elements.\n\t\t// * If they are not allowed in any of the selection ancestors, they could be either autoparagraphed or totally removed.\n\t\tif ( this.schema.isObject( node ) ) {\n\t\t\tthis._handleObject( node as Element );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Try to find a place for the given node.\n\n\t\t// Check if a node can be inserted in the given position or it would be accepted if a paragraph would be inserted.\n\t\t// Inserts the auto paragraph if it would allow for insertion.\n\t\tlet isAllowed = this._checkAndAutoParagraphToAllowedPosition( node );\n\n\t\tif ( !isAllowed ) {\n\t\t\t// Split the position.parent's branch up to a point where the node can be inserted.\n\t\t\t// If it isn't allowed in the whole branch, then of course don't split anything.\n\t\t\tisAllowed = this._checkAndSplitToAllowedPosition( node );\n\n\t\t\tif ( !isAllowed ) {\n\t\t\t\tthis._handleDisallowedNode( node );\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Add node to the current temporary DocumentFragment.\n\t\tthis._appendToFragment( node );\n\n\t\t// Store the first and last nodes for easy access for merging with sibling nodes.\n\t\tif ( !this._firstNode ) {\n\t\t\tthis._firstNode = node;\n\t\t}\n\n\t\tthis._lastNode = node;\n\t}\n\n\t/**\n\t * Inserts the temporary DocumentFragment into the model.\n\t */\n\tprivate _insertPartialFragment(): void {\n\t\tif ( this._documentFragment.isEmpty ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst livePosition = LivePosition.fromPosition( this.position, 'toNext' );\n\n\t\tthis._setAffectedBoundaries( this.position );\n\n\t\t// If the very first node of the whole insertion process is inserted, insert it separately for OT reasons (undo).\n\t\t// Note: there can be multiple calls to `_insertPartialFragment()` during one insertion process.\n\t\t// Note: only the very first node can be merged so we have to do separate operation only for it.\n\t\tif ( this._documentFragment.getChild( 0 ) == this._firstNode ) {\n\t\t\tthis.writer.insert( this._firstNode!, this.position );\n\n\t\t\t// We must merge the first node just after inserting it to avoid problems with OT.\n\t\t\t// (See: https://github.com/ckeditor/ckeditor5/pull/8773#issuecomment-760945652).\n\t\t\tthis._mergeOnLeft();\n\n\t\t\tthis.position = livePosition.toPosition();\n\t\t}\n\n\t\t// Insert the remaining nodes from document fragment.\n\t\tif ( !this._documentFragment.isEmpty ) {\n\t\t\tthis.writer.insert( this._documentFragment, this.position );\n\t\t}\n\n\t\tthis._documentFragmentPosition = this.writer.createPositionAt( this._documentFragment, 0 );\n\n\t\tthis.position = livePosition.toPosition();\n\t\tlivePosition.detach();\n\t}\n\n\t/**\n\t * @param node The object element.\n\t */\n\tprivate _handleObject( node: Element ): void {\n\t\t// Try finding it a place in the tree.\n\t\tif ( this._checkAndSplitToAllowedPosition( node ) ) {\n\t\t\tthis._appendToFragment( node );\n\t\t}\n\t\t// Try autoparagraphing.\n\t\telse {\n\t\t\tthis._tryAutoparagraphing( node );\n\t\t}\n\t}\n\n\t/**\n\t * @param node The disallowed node which needs to be handled.\n\t */\n\tprivate _handleDisallowedNode( node: Node ): void {\n\t\t// If the node is an element, try inserting its children (strip the parent).\n\t\tif ( node.is( 'element' ) ) {\n\t\t\tthis.handleNodes( node.getChildren() );\n\t\t}\n\t\t// If text is not allowed, try autoparagraphing it.\n\t\telse {\n\t\t\tthis._tryAutoparagraphing( node );\n\t\t}\n\t}\n\n\t/**\n\t * Append a node to the temporary DocumentFragment.\n\t *\n\t * @param node The node to insert.\n\t */\n\tprivate _appendToFragment( node: Node ): void {\n\t\t/* istanbul ignore if -- @preserve */\n\t\tif ( !this.schema.checkChild( this.position, node ) ) {\n\t\t\t// Algorithm's correctness check. We should never end up here but it's good to know that we did.\n\t\t\t// Note that it would often be a silent issue if we insert node in a place where it's not allowed.\n\n\t\t\t/**\n\t\t\t * Given node cannot be inserted on the given position.\n\t\t\t *\n\t\t\t * @error insertcontent-wrong-position\n\t\t\t * @param node Node to insert.\n\t\t\t * @param position Position to insert the node at.\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'insertcontent-wrong-position',\n\t\t\t\tthis,\n\t\t\t\t{ node, position: this.position }\n\t\t\t);\n\t\t}\n\n\t\tthis.writer.insert( node, this._documentFragmentPosition );\n\t\tthis._documentFragmentPosition = this._documentFragmentPosition.getShiftedBy( node.offsetSize );\n\n\t\t// The last inserted object should be selected because we can't put a collapsed selection after it.\n\t\tif ( this.schema.isObject( node ) && !this.schema.checkChild( this.position, '$text' ) ) {\n\t\t\tthis._nodeToSelect = node;\n\t\t} else {\n\t\t\tthis._nodeToSelect = null;\n\t\t}\n\n\t\tthis._filterAttributesOf.push( node );\n\t}\n\n\t/**\n\t * Sets `_affectedStart` and `_affectedEnd` to the given `position`. Should be used before a change is done during insertion process to\n\t * mark the affected range.\n\t *\n\t * This method is used before inserting a node or splitting a parent node. `_affectedStart` and `_affectedEnd` are also changed\n\t * during merging, but the logic there is more complicated so it is left out of this function.\n\t */\n\tprivate _setAffectedBoundaries( position: Position ): void {\n\t\t// Set affected boundaries stickiness so that those position will \"expand\" when something is inserted in between them:\n\t\t// <paragraph>Foo][bar</paragraph> -> <paragraph>Foo]xx[bar</paragraph>\n\t\t// This is why it cannot be a range but two separate positions.\n\t\tif ( !this._affectedStart ) {\n\t\t\tthis._affectedStart = LivePosition.fromPosition( position, 'toPrevious' );\n\t\t}\n\n\t\t// If `_affectedEnd` is before the new boundary position, expand `_affectedEnd`. This can happen if first inserted node was\n\t\t// inserted into the parent but the next node is moved-out of that parent:\n\t\t// (1) <paragraph>Foo][</paragraph> -> <paragraph>Foo]xx[</paragraph>\n\t\t// (2) <paragraph>Foo]xx[</paragraph> -> <paragraph>Foo]xx</paragraph><widget></widget>[\n\t\tif ( !this._affectedEnd || this._affectedEnd.isBefore( position ) ) {\n\t\t\tif ( this._affectedEnd ) {\n\t\t\t\tthis._affectedEnd.detach();\n\t\t\t}\n\n\t\t\tthis._affectedEnd = LivePosition.fromPosition( position, 'toNext' );\n\t\t}\n\t}\n\n\t/**\n\t * Merges the previous sibling of the first node if it should be merged.\n\t *\n\t * After the content was inserted we may try to merge it with its siblings.\n\t * This should happen only if the selection was in those elements initially.\n\t */\n\tprivate _mergeOnLeft(): void {\n\t\tconst node = this._firstNode;\n\n\t\tif ( !( node instanceof Element ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this._canMergeLeft( node ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst mergePosLeft = LivePosition._createBefore( node );\n\t\tmergePosLeft.stickiness = 'toNext';\n\n\t\tconst livePosition = LivePosition.fromPosition( this.position, 'toNext' );\n\n\t\t// If `_affectedStart` is sames as merge position, it means that the element \"marked\" by `_affectedStart` is going to be\n\t\t// removed and its contents will be moved. This won't transform `LivePosition` so `_affectedStart` needs to be moved\n\t\t// by hand to properly reflect affected range. (Due to `_affectedStart` and `_affectedEnd` stickiness, the \"range\" is\n\t\t// shown as `][`).\n\t\t//\n\t\t// Example - insert `<paragraph>Abc</paragraph><paragraph>Xyz</paragraph>` at the end of `<paragraph>Foo^</paragraph>`:\n\t\t//\n\t\t// <paragraph>Foo</paragraph><paragraph>Bar</paragraph> -->\n\t\t// <paragraph>Foo</paragraph>]<paragraph>Abc</paragraph><paragraph>Xyz</paragraph>[<paragraph>Bar</paragraph> -->\n\t\t// <paragraph>Foo]Abc</paragraph><paragraph>Xyz</paragraph>[<paragraph>Bar</paragraph>\n\t\t//\n\t\t// Note, that if we are here then something must have been inserted, so `_affectedStart` and `_affectedEnd` have to be set.\n\t\tif ( this._affectedStart!.isEqual( mergePosLeft ) ) {\n\t\t\tthis._affectedStart!.detach();\n\t\t\tthis._affectedStart = LivePosition._createAt( mergePosLeft.nodeBefore!, 'end', 'toPrevious' );\n\t\t}\n\n\t\t// We need to update the references to the first and last nodes if they will be merged into the previous sibling node\n\t\t// because the reference would point to the removed node.\n\t\t//\n\t\t// <p>A^A</p> + <p>X</p>\n\t\t//\n\t\t// <p>A</p>^<p>A</p>\n\t\t// <p>A</p><p>X</p><p>A</p>\n\t\t// <p>AX</p><p>A</p>\n\t\t// <p>AXA</p>\n\t\tif ( this._firstNode === this._lastNode ) {\n\t\t\tthis._firstNode = mergePosLeft.nodeBefore;\n\t\t\tthis._lastNode = mergePosLeft.nodeBefore;\n\t\t}\n\n\t\tthis.writer.merge( mergePosLeft );\n\n\t\t// If only one element (the merged one) is in the \"affected range\", also move the affected range end appropriately.\n\t\t//\n\t\t// Example - insert `<paragraph>Abc</paragraph>` at the of `<paragraph>Foo^</paragraph>`:\n\t\t//\n\t\t// <paragraph>Foo</paragraph><paragraph>Bar</paragraph> -->\n\t\t// <paragraph>Foo</paragraph>]<paragraph>Abc</paragraph>[<paragraph>Bar</paragraph> -->\n\t\t// <paragraph>Foo]Abc</paragraph>[<paragraph>Bar</paragraph> -->\n\t\t// <paragraph>Foo]Abc[</paragraph><paragraph>Bar</paragraph>\n\t\tif ( mergePosLeft.isEqual( this._affectedEnd! ) && this._firstNode === this._lastNode ) {\n\t\t\tthis._affectedEnd!.detach();\n\t\t\tthis._affectedEnd = LivePosition._createAt( mergePosLeft.nodeBefore!, 'end', 'toNext' );\n\t\t}\n\n\t\tthis.position = livePosition.toPosition();\n\t\tlivePosition.detach();\n\n\t\t// After merge elements that were marked by _insert() to be filtered might be gone so\n\t\t// we need to mark the new container.\n\t\tthis._filterAttributesOf.push( this.position.parent as any );\n\n\t\tmergePosLeft.detach();\n\t}\n\n\t/**\n\t * Merges the next sibling of the last node if it should be merged.\n\t *\n\t * After the content was inserted we may try to merge it with its siblings.\n\t * This should happen only if the selection was in those elements initially.\n\t */\n\tprivate _mergeOnRight(): void {\n\t\tconst node = this._lastNode;\n\n\t\tif ( !( node instanceof Element ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this._canMergeRight( node ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst mergePosRight = LivePosition._createAfter( node );\n\t\tmergePosRight.stickiness = 'toNext';\n\n\t\t/* istanbul ignore if -- @preserve */\n\t\tif ( !this.position.isEqual( mergePosRight ) ) {\n\t\t\t// Algorithm's correctness check. We should never end up here but it's good to know that we did.\n\t\t\t// At this point the insertion position should be after the node we'll merge. If it isn't,\n\t\t\t// it should need to be secured as in the left merge case.\n\t\t\t/**\n\t\t\t * An internal error occurred when merging inserted content with its siblings.\n\t\t\t * The insertion position should equal the merge position.\n\t\t\t *\n\t\t\t * If you encountered this error, report it back to the CKEditor 5 team\n\t\t\t * with as many details as possible regarding the content being inserted and the insertion position.\n\t\t\t *\n\t\t\t * @error insertcontent-invalid-insertion-position\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'insertcontent-invalid-insertion-position', this );\n\t\t}\n\n\t\t// Move the position to the previous node, so it isn't moved to the graveyard on merge.\n\t\t// <p>x</p>[]<p>y</p> => <p>x[]</p><p>y</p>\n\t\tthis.position = Position._createAt( mergePosRight.nodeBefore!, 'end' );\n\n\t\t// Explanation of setting position stickiness to `'toPrevious'`:\n\t\t// OK: <p>xx[]</p> + <p>yy</p> => <p>xx[]yy</p> (when sticks to previous)\n\t\t// NOK: <p>xx[]</p> + <p>yy</p> => <p>xxyy[]</p> (when sticks to next)\n\t\tconst livePosition = LivePosition.fromPosition( this.position, 'toPrevious' );\n\n\t\t// See comment in `_mergeOnLeft()` on moving `_affectedStart`.\n\t\tif ( this._affectedEnd!.isEqual( mergePosRight ) ) {\n\t\t\tthis._affectedEnd!.detach();\n\t\t\tthis._affectedEnd = LivePosition._createAt( mergePosRight.nodeBefore!, 'end', 'toNext' );\n\t\t}\n\n\t\t// We need to update the references to the first and last nodes if they will be merged into the previous sibling node\n\t\t// because the reference would point to the removed node.\n\t\t//\n\t\t// <p>A^A</p> + <p>X</p>\n\t\t//\n\t\t// <p>A</p>^<p>A</p>\n\t\t// <p>A</p><p>X</p><p>A</p>\n\t\t// <p>AX</p><p>A</p>\n\t\t// <p>AXA</p>\n\t\tif ( this._firstNode === this._lastNode ) {\n\t\t\tthis._firstNode = mergePosRight.nodeBefore;\n\t\t\tthis._lastNode = mergePosRight.nodeBefore;\n\t\t}\n\n\t\tthis.writer.merge( mergePosRight );\n\n\t\t// See comment in `_mergeOnLeft()` on moving `_affectedStart`.\n\t\tif ( mergePosRight.getShiftedBy( -1 ).isEqual( this._affectedStart! ) && this._firstNode === this._lastNode ) {\n\t\t\tthis._affectedStart!.detach();\n\t\t\tthis._affectedStart = LivePosition._createAt( mergePosRight.nodeBefore!, 0, 'toPrevious' );\n\t\t}\n\n\t\tthis.position = livePosition.toPosition();\n\t\tlivePosition.detach();\n\n\t\t// After merge elements that were marked by _insert() to be filtered might be gone so\n\t\t// we need to mark the new container.\n\t\tthis._filterAttributesOf.push( this.position.parent as any );\n\n\t\tmergePosRight.detach();\n\t}\n\n\t/**\n\t * Checks whether specified node can be merged with previous sibling element.\n\t *\n\t * @param node The node which could potentially be merged.\n\t */\n\tprivate _canMergeLeft( node: Element ): boolean {\n\t\tconst previousSibling = node.previousSibling;\n\n\t\treturn ( previousSibling instanceof Element ) &&\n\t\t\tthis.canMergeWith.has( previousSibling ) &&\n\t\t\tthis.model.schema.checkMerge( previousSibling, node );\n\t}\n\n\t/**\n\t * Checks whether specified node can be merged with next sibling element.\n\t *\n\t * @param node The node which could potentially be merged.\n\t */\n\tprivate _canMergeRight( node: Element ): boolean {\n\t\tconst nextSibling = node.nextSibling;\n\n\t\treturn ( nextSibling instanceof Element ) &&\n\t\t\tthis.canMergeWith.has( nextSibling ) &&\n\t\t\tthis.model.schema.checkMerge( node, nextSibling );\n\t}\n\n\t/**\n\t * Tries wrapping the node in a new paragraph and inserting it this way.\n\t *\n\t * @param node The node which needs to be autoparagraphed.\n\t */\n\tprivate _tryAutoparagraphing( node: Node ): void {\n\t\tconst paragraph = this.writer.createElement( 'paragraph' );\n\n\t\t// Do not autoparagraph if the paragraph won't be allowed there,\n\t\t// cause that would lead to an infinite loop. The paragraph would be rejected in\n\t\t// the next _handleNode() call and we'd be here again.\n\t\tif ( this._getAllowedIn( this.position.parent as any, paragraph ) && this.schema.checkChild( paragraph, node ) ) {\n\t\t\tparagraph._appendChild( node );\n\t\t\tthis._handleNode( paragraph );\n\t\t}\n\t}\n\n\t/**\n\t * Checks if a node can be inserted in the given position or it would be accepted if a paragraph would be inserted.\n\t * It also handles inserting the paragraph.\n\t *\n\t * @returns Whether an allowed position was found.\n\t * `false` is returned if the node isn't allowed at the current position or in auto paragraph, `true` if was.\n\t */\n\tprivate _checkAndAutoParagraphToAllowedPosition( node: Node ): boolean {\n\t\tif ( this.schema.checkChild( this.position.parent as any, node ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Do not auto paragraph if the paragraph won't be allowed there,\n\t\t// cause that would lead to an infinite loop. The paragraph would be rejected in\n\t\t// the next _handleNode() call and we'd be here again.\n\t\tif ( !this.schema.checkChild( this.position.parent as any, 'paragraph' ) || !this.schema.checkChild( 'paragraph', node ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Insert nodes collected in temporary DocumentFragment if the position parent needs change to process further nodes.\n\t\tthis._insertPartialFragment();\n\n\t\t// Insert a paragraph and move insertion position to it.\n\t\tconst paragraph = this.writer.createElement( 'paragraph' );\n\n\t\tthis.writer.insert( paragraph, this.position );\n\t\tthis._setAffectedBoundaries( this.position );\n\n\t\tthis._lastAutoParagraph = paragraph;\n\t\tthis.position = this.writer.createPositionAt( paragraph, 0 );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * @returns Whether an allowed position was found.\n\t * `false` is returned if the node isn't allowed at any position up in the tree, `true` if was.\n\t */\n\tprivate _checkAndSplitToAllowedPosition( node: Node ): boolean {\n\t\tconst allowedIn = this._getAllowedIn( this.position.parent as any, node );\n\n\t\tif ( !allowedIn ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Insert nodes collected in temporary DocumentFragment if the position parent needs change to process further nodes.\n\t\tif ( allowedIn != this.position.parent ) {\n\t\t\tthis._insertPartialFragment();\n\t\t}\n\n\t\twhile ( allowedIn != this.position.parent ) {\n\t\t\tif ( this.position.isAtStart ) {\n\t\t\t\t// If insertion position is at the beginning of the parent, move it out instead of splitting.\n\t\t\t\t// <p>^Foo</p> -> ^<p>Foo</p>\n\t\t\t\tconst parent: Element = this.position.parent as Element;\n\n\t\t\t\tthis.position = this.writer.createPositionBefore( parent );\n\n\t\t\t\t// Special case – parent is empty (<p>^</p>).\n\t\t\t\t//\n\t\t\t\t// 1. parent.isEmpty\n\t\t\t\t// We can remove the element after moving insertion position out of it.\n\t\t\t\t//\n\t\t\t\t// 2. parent.parent === allowedIn\n\t\t\t\t// However parent should remain in place when allowed element is above limit element in document tree.\n\t\t\t\t// For example there shouldn't be allowed to remove empty paragraph from tableCell, when is pasted\n\t\t\t\t// content allowed in $root.\n\t\t\t\tif ( parent.isEmpty && parent.parent === allowedIn ) {\n\t\t\t\t\tthis.writer.remove( parent );\n\t\t\t\t}\n\t\t\t} else if ( this.position.isAtEnd ) {\n\t\t\t\t// If insertion position is at the end of the parent, move it out instead of splitting.\n\t\t\t\t// <p>Foo^</p> -> <p>Foo</p>^\n\t\t\t\tthis.position = this.writer.createPositionAfter( this.position.parent as Element );\n\t\t\t} else {\n\t\t\t\tconst tempPos = this.writer.createPositionAfter( this.position.parent as Element );\n\n\t\t\t\tthis._setAffectedBoundaries( this.position );\n\t\t\t\tthis.writer.split( this.position );\n\n\t\t\t\tthis.position = tempPos;\n\n\t\t\t\tthis.canMergeWith.add( this.position.nodeAfter );\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Gets the element in which the given node is allowed. It checks the passed element and all its ancestors.\n\t *\n\t * @param contextElement The element in which context the node should be checked.\n\t * @param childNode The node to check.\n\t */\n\tprivate _getAllowedIn( contextElement: Element, childNode: Node ): Element | null {\n\t\tif ( this.schema.checkChild( contextElement, childNode ) ) {\n\t\t\treturn contextElement;\n\t\t}\n\n\t\t// If the child wasn't allowed in the context element and the element is a limit there's no point in\n\t\t// checking any further towards the root. This is it: the limit is unsplittable and there's nothing\n\t\t// we can do about it. Without this check, the algorithm will analyze parent of the limit and may create\n\t\t// an illusion of the child being allowed. There's no way to insert it down there, though. It results in\n\t\t// infinite loops.\n\t\tif ( this.schema.isLimit( contextElement ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this._getAllowedIn( contextElement.parent as any, childNode );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/utils/findoptimalinsertionrange\n */\n\nimport { first } from '@ckeditor/ckeditor5-utils';\n\nimport type DocumentSelection from '../documentselection';\nimport type Model from '../model';\nimport type Range from '../range';\nimport type Selection from '../selection';\n\n/**\n * Returns a model range which is optimal (in terms of UX) for inserting a widget block.\n *\n * For instance, if a selection is in the middle of a paragraph, the collapsed range before this paragraph\n * will be returned so that it is not split. If the selection is at the end of a paragraph,\n * the collapsed range after this paragraph will be returned.\n *\n * Note: If the selection is placed in an empty block, the range in that block will be returned. If that range\n * is then passed to {@link module:engine/model/model~Model#insertContent}, the block will be fully replaced\n * by the inserted widget block.\n *\n * **Note:** Use {@link module:widget/utils#findOptimalInsertionRange} instead of this function outside engine.\n * This function is only exposed to be used by {@link module:widget/utils#findOptimalInsertionRange findOptimalInsertionRange()}\n * in the `widget` package and inside the `engine` package.\n *\n * @param selection The selection based on which the insertion position should be calculated.\n * @param model Model instance.\n * @param place The place where to look for optimal insertion range.\n * The default `auto` value will determine itself the best position for insertion.\n * The `before` value will try to find a position before selection.\n * The `after` value will try to find a position after selection.\n * @returns The optimal range.\n */\nexport function findOptimalInsertionRange(\n\tselection: Selection | DocumentSelection,\n\tmodel: Model,\n\tplace: 'auto' | 'before' | 'after' = 'auto'\n): Range {\n\tconst selectedElement = selection.getSelectedElement();\n\n\tif ( selectedElement && model.schema.isObject( selectedElement ) && !model.schema.isInline( selectedElement ) ) {\n\t\tif ( place == 'before' || place == 'after' ) {\n\t\t\treturn model.createRange( model.createPositionAt( selectedElement, place ) );\n\t\t}\n\n\t\treturn model.createRangeOn( selectedElement );\n\t}\n\n\tconst firstBlock = first( selection.getSelectedBlocks() );\n\n\t// There are no block elements within ancestors (in the current limit element).\n\tif ( !firstBlock ) {\n\t\treturn model.createRange( selection.focus! );\n\t}\n\n\t// If inserting into an empty block – return position in that block. It will get\n\t// replaced with the image by insertContent(). #42.\n\tif ( firstBlock.isEmpty ) {\n\t\treturn model.createRange( model.createPositionAt( firstBlock, 0 ) );\n\t}\n\n\tconst positionAfter = model.createPositionAfter( firstBlock );\n\n\t// If selection is at the end of the block - return position after the block.\n\tif ( selection.focus!.isTouching( positionAfter ) ) {\n\t\treturn model.createRange( positionAfter );\n\t}\n\n\t// Otherwise, return position before the block.\n\treturn model.createRange( model.createPositionBefore( firstBlock ) );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/utils/insertobject\n */\n\nimport { findOptimalInsertionRange } from './findoptimalinsertionrange';\nimport type DocumentSelection from '../documentselection';\nimport type Selection from '../selection';\n\nimport type Element from '../element';\nimport type Model from '../model';\nimport type Range from '../range';\nimport type Writer from '../writer';\n\nimport { CKEditorError, first } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Inserts an {@glink framework/deep-dive/schema#object-elements object element} at a specific position in the editor content.\n *\n * **Note:** Use {@link module:engine/model/model~Model#insertObject} instead of this function.\n * This function is only exposed to be reusable in algorithms which change the {@link module:engine/model/model~Model#insertObject}\n * method's behavior.\n *\n * **Note**: For more documentation and examples, see {@link module:engine/model/model~Model#insertObject}.\n *\n * @param model The model in context of which the insertion should be performed.\n * @param object An object to be inserted into the model document.\n * @param selectable A selectable where the content should be inserted. If not specified, the current\n * {@link module:engine/model/document~Document#selection document selection} will be used instead.\n * @param placeOrOffset Specifies the exact place or offset for the insertion to take place, relative to `selectable`.\n * @param options Additional options.\n * @param options.findOptimalPosition An option that, when set, adjusts the insertion position (relative to\n * `selectable` and `placeOrOffset`) so that the content of `selectable` is not split upon insertion (a.k.a. non-destructive insertion).\n * * When `'auto'`, the algorithm will decide whether to insert the object before or after `selectable` to avoid content splitting.\n * * When `'before'`, the closest position before `selectable` will be used that will not result in content splitting.\n * * When `'after'`, the closest position after `selectable` will be used that will not result in content splitting.\n *\n * Note that this option works only for block objects. Inline objects are inserted into text and do not split blocks.\n * @param options.setSelection An option that, when set, moves the\n * {@link module:engine/model/document~Document#selection document selection} after inserting the object.\n * * When `'on'`, the document selection will be set on the inserted object.\n * * When `'after'`, the document selection will move to the closest text node after the inserted object. If there is no\n * such text node, a paragraph will be created and the document selection will be moved inside it.\n * @returns A range which contains all the performed changes. This is a range that, if removed,\n * would return the model to the state before the insertion. If no changes were preformed by `insertObject()`, returns a range collapsed\n * at the insertion position.\n */\nexport default function insertObject(\n\tmodel: Model,\n\tobject: Element,\n\tselectable?: Selection | DocumentSelection | null,\n\toptions: {\n\t\tfindOptimalPosition?: 'auto' | 'before' | 'after';\n\t\tsetSelection?: 'on' | 'after';\n\t} = {}\n): Range {\n\tif ( !model.schema.isObject( object ) ) {\n\t\t/**\n\t\t * Tried to insert an element with {@link module:engine/model/utils/insertobject insertObject()} function\n\t\t * that is not defined as an object in schema.\n\t\t * See {@link module:engine/model/schema~SchemaItemDefinition#isObject `SchemaItemDefinition`}.\n\t\t * If you want to insert content that is not an object you might want to use\n\t\t * {@link module:engine/model/utils/insertcontent insertContent()} function.\n\t\t * @error insertobject-element-not-an-object\n\t\t */\n\t\tthrow new CKEditorError( 'insertobject-element-not-an-object', model, { object } );\n\t}\n\n\t// Normalize selectable to a selection instance.\n\tconst originalSelection: Selection | DocumentSelection = selectable ? selectable : model.document.selection;\n\n\t// Adjust the insertion selection.\n\tlet insertionSelection = originalSelection;\n\n\tif ( options.findOptimalPosition && model.schema.isBlock( object ) ) {\n\t\tinsertionSelection = model.createSelection( findOptimalInsertionRange( originalSelection, model, options.findOptimalPosition ) );\n\t}\n\n\t// Collect attributes to be copied on the inserted object.\n\tconst firstSelectedBlock = first( originalSelection.getSelectedBlocks() );\n\tconst attributesToCopy = {};\n\n\tif ( firstSelectedBlock ) {\n\t\tObject.assign( attributesToCopy, model.schema.getAttributesWithProperty( firstSelectedBlock, 'copyOnReplace', true ) );\n\t}\n\n\treturn model.change( writer => {\n\t\t// Remove the selected content to find out what the parent of the inserted object would be.\n\t\t// It would be removed inside model.insertContent() anyway.\n\t\tif ( !insertionSelection.isCollapsed ) {\n\t\t\tmodel.deleteContent( insertionSelection, { doNotAutoparagraph: true } );\n\t\t}\n\n\t\tlet elementToInsert = object;\n\t\tconst insertionPositionParent = insertionSelection.anchor!.parent;\n\n\t\t// Autoparagraphing of an inline objects.\n\t\tif (\n\t\t\t!model.schema.checkChild( insertionPositionParent as any, object ) &&\n\t\t\tmodel.schema.checkChild( insertionPositionParent as any, 'paragraph' ) &&\n\t\t\tmodel.schema.checkChild( 'paragraph', object )\n\t\t) {\n\t\t\telementToInsert = writer.createElement( 'paragraph' );\n\n\t\t\twriter.insert( object, elementToInsert );\n\t\t}\n\n\t\t// Apply attributes that are allowed on the inserted object (or paragraph if autoparagraphed).\n\t\tmodel.schema.setAllowedAttributes( elementToInsert, attributesToCopy, writer );\n\n\t\t// Insert the prepared content at the optionally adjusted selection.\n\t\tconst affectedRange = model.insertContent( elementToInsert, insertionSelection );\n\n\t\t// Nothing got inserted.\n\t\tif ( affectedRange.isCollapsed ) {\n\t\t\treturn affectedRange;\n\t\t}\n\n\t\tif ( options.setSelection ) {\n\t\t\tupdateSelection( writer, object, options.setSelection, attributesToCopy );\n\t\t}\n\n\t\treturn affectedRange;\n\t} );\n}\n\n/**\n * Updates document selection based on given `place` parameter in relation to `contextElement` element.\n *\n * @param writer An instance of the model writer.\n * @param contextElement An element to set the attributes on.\n * @param place The place where selection should be set in relation to the `contextElement` element.\n * Value `on` will set selection on the passed `contextElement`. Value `after` will set selection after `contextElement`.\n * @param attributes Attributes keys and values to set on a paragraph that this function can create when\n * `place` parameter is equal to `after` but there is no element with `$text` node to set selection in.\n */\nfunction updateSelection(\n\twriter: Writer,\n\tcontextElement: Element,\n\tplace: 'after' | 'on',\n\tparagraphAttributes: Record<string, unknown>\n) {\n\tconst model = writer.model;\n\n\tif ( place == 'on' ) {\n\t\twriter.setSelection( contextElement, 'on' );\n\n\t\treturn;\n\t}\n\n\tif ( place != 'after' ) {\n\t\t/**\n\t\t * The unsupported `options.setSelection` parameter was passed\n\t\t * to the {@link module:engine/model/utils/insertobject insertObject()} function.\n\t\t * Check the {@link module:engine/model/utils/insertobject insertObject()} API documentation for allowed\n\t\t * `options.setSelection` parameter values.\n\t\t *\n\t\t * @error insertobject-invalid-place-parameter-value\n\t\t */\n\t\tthrow new CKEditorError( 'insertobject-invalid-place-parameter-value', model );\n\t}\n\n\tlet nextElement = contextElement.nextSibling;\n\n\tif ( model.schema.isInline( contextElement ) ) {\n\t\twriter.setSelection( contextElement, 'after' );\n\n\t\treturn;\n\t}\n\n\t// Check whether an element next to the inserted element is defined and can contain a text.\n\tconst canSetSelection = nextElement && model.schema.checkChild( nextElement, '$text' );\n\n\t// If the element is missing, but a paragraph could be inserted next to the element, let's add it.\n\tif ( !canSetSelection && model.schema.checkChild( contextElement.parent as any, 'paragraph' ) ) {\n\t\tnextElement = writer.createElement( 'paragraph' );\n\n\t\tmodel.schema.setAllowedAttributes( nextElement, paragraphAttributes, writer );\n\t\tmodel.insertContent( nextElement, writer.createPositionAfter( contextElement ) );\n\t}\n\n\t// Put the selection inside the element, at the beginning.\n\tif ( nextElement ) {\n\t\twriter.setSelection( nextElement, 0 );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/utils/modifyselection\n */\n\nimport DocumentSelection from '../documentselection';\nimport Position from '../position';\nimport Range from '../range';\nimport TreeWalker, { type TreeWalkerValue } from '../treewalker';\n\nimport type Model from '../model';\nimport type Schema from '../schema';\nimport type Selection from '../selection';\nimport type Text from '../text';\nimport type Node from '../node';\n\nimport { isInsideSurrogatePair, isInsideCombinedSymbol, isInsideEmojiSequence } from '@ckeditor/ckeditor5-utils';\n\nconst wordBoundaryCharacters = ' ,.?!:;\"-()';\n\n/**\n * Modifies the selection. Currently, the supported modifications are:\n *\n * * Extending. The selection focus is moved in the specified `options.direction` with a step specified in `options.unit`.\n * Possible values for `unit` are:\n * * `'character'` (default) - moves selection by one user-perceived character. In most cases this means moving by one\n * character in `String` sense. However, unicode also defines \"combing marks\". These are special symbols, that combines\n * with a symbol before it (\"base character\") to create one user-perceived character. For example, `q̣̇` is a normal\n * letter `q` with two \"combining marks\": upper dot (`Ux0307`) and lower dot (`Ux0323`). For most actions, i.e. extending\n * selection by one position, it is correct to include both \"base character\" and all of it's \"combining marks\". That is\n * why `'character'` value is most natural and common method of modifying selection.\n * * `'codePoint'` - moves selection by one unicode code point. In contrary to, `'character'` unit, this will insert\n * selection between \"base character\" and \"combining mark\", because \"combining marks\" have their own unicode code points.\n * However, for technical reasons, unicode code points with values above `UxFFFF` are represented in native `String` by\n * two characters, called \"surrogate pairs\". Halves of \"surrogate pairs\" have a meaning only when placed next to each other.\n * For example `𨭎` is represented in `String` by `\\uD862\\uDF4E`. Both `\\uD862` and `\\uDF4E` do not have any meaning\n * outside the pair (are rendered as ? when alone). Position between them would be incorrect. In this case, selection\n * extension will include whole \"surrogate pair\".\n * * `'word'` - moves selection by a whole word.\n *\n * **Note:** if you extend a forward selection in a backward direction you will in fact shrink it.\n *\n * **Note:** Use {@link module:engine/model/model~Model#modifySelection} instead of this function.\n * This function is only exposed to be reusable in algorithms\n * which change the {@link module:engine/model/model~Model#modifySelection}\n * method's behavior.\n *\n * @param model The model in context of which the selection modification should be performed.\n * @param selection The selection to modify.\n * @param options.direction The direction in which the selection should be modified. Default 'forward'.\n * @param options.unit The unit by which selection should be modified. Default 'character'.\n * @param options.treatEmojiAsSingleUnit Whether multi-characer emoji sequences should be handled as single unit.\n */\nexport default function modifySelection(\n\tmodel: Model,\n\tselection: Selection | DocumentSelection,\n\toptions: {\n\t\tdirection?: 'forward' | 'backward';\n\t\tunit?: 'character' | 'codePoint' | 'word';\n\t\ttreatEmojiAsSingleUnit?: boolean;\n\t} = {}\n): void {\n\tconst schema = model.schema;\n\tconst isForward = options.direction != 'backward';\n\tconst unit = options.unit ? options.unit : 'character';\n\tconst treatEmojiAsSingleUnit = !!options.treatEmojiAsSingleUnit;\n\n\tconst focus = selection.focus!;\n\n\tconst walker = new TreeWalker( {\n\t\tboundaries: getSearchRange( focus, isForward ),\n\t\tsingleCharacters: true,\n\t\tdirection: isForward ? 'forward' : 'backward'\n\t} );\n\n\tconst data = { walker, schema, isForward, unit, treatEmojiAsSingleUnit };\n\n\tlet next;\n\n\twhile ( ( next = walker.next() ) ) {\n\t\tif ( next.done ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst position = tryExtendingTo( data, next.value );\n\n\t\tif ( position ) {\n\t\t\tif ( selection instanceof DocumentSelection ) {\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\twriter.setSelectionFocus( position );\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tselection.setFocus( position );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\t}\n}\n\n/**\n * Checks whether the selection can be extended to the the walker's next value (next position).\n */\nfunction tryExtendingTo(\n\tdata: {\n\t\twalker: TreeWalker;\n\t\tschema: Schema;\n\t\tisForward: boolean;\n\t\tunit: 'character' | 'codePoint' | 'word';\n\t\ttreatEmojiAsSingleUnit: boolean;\n\t},\n\tvalue: TreeWalkerValue\n): Position | undefined {\n\tconst { isForward, walker, unit, schema, treatEmojiAsSingleUnit } = data;\n\tconst { type, item, nextPosition } = value;\n\n\t// If found text, we can certainly put the focus in it. Let's just find a correct position\n\t// based on the unit.\n\tif ( type == 'text' ) {\n\t\tif ( data.unit === 'word' ) {\n\t\t\treturn getCorrectWordBreakPosition( walker, isForward );\n\t\t}\n\n\t\treturn getCorrectPosition( walker, unit, treatEmojiAsSingleUnit );\n\t}\n\n\t// Entering an element.\n\tif ( type == ( isForward ? 'elementStart' : 'elementEnd' ) ) {\n\t\t// If it's a selectable, we can select it now.\n\t\tif ( schema.isSelectable( item ) ) {\n\t\t\treturn Position._createAt( item, isForward ? 'after' : 'before' );\n\t\t}\n\n\t\t// If text allowed on this position, extend to this place.\n\t\tif ( schema.checkChild( nextPosition, '$text' ) ) {\n\t\t\treturn nextPosition;\n\t\t}\n\t}\n\t// Leaving an element.\n\telse {\n\t\t// If leaving a limit element, stop.\n\t\tif ( schema.isLimit( item ) ) {\n\t\t\t// NOTE: Fast-forward the walker until the end.\n\t\t\twalker.skip( () => true );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// If text allowed on this position, extend to this place.\n\t\tif ( schema.checkChild( nextPosition, '$text' ) ) {\n\t\t\treturn nextPosition;\n\t\t}\n\t}\n}\n\n/**\n * Finds a correct position by walking in a text node and checking whether selection can be extended to given position\n * or should be extended further.\n */\nfunction getCorrectPosition(\n\twalker: TreeWalker,\n\tunit: 'character' | 'codePoint' | 'word',\n\ttreatEmojiAsSingleUnit: boolean\n): Position {\n\tconst textNode = walker.position.textNode;\n\n\tif ( textNode ) {\n\t\tconst data = textNode.data;\n\t\tlet offset = walker.position.offset - textNode.startOffset!;\n\n\t\twhile (\n\t\t\tisInsideSurrogatePair( data, offset ) ||\n\t\t\t( unit == 'character' && isInsideCombinedSymbol( data, offset ) ) ||\n\t\t\t( treatEmojiAsSingleUnit && isInsideEmojiSequence( data, offset ) )\n\t\t) {\n\t\t\twalker.next();\n\n\t\t\toffset = walker.position.offset - textNode.startOffset!;\n\t\t}\n\t}\n\n\treturn walker.position;\n}\n\n/**\n * Finds a correct position of a word break by walking in a text node and checking whether selection can be extended to given position\n * or should be extended further.\n */\nfunction getCorrectWordBreakPosition( walker: TreeWalker, isForward: boolean ): Position {\n\tlet textNode: Node | null = walker.position.textNode;\n\n\tif ( !textNode ) {\n\t\ttextNode = isForward ? walker.position.nodeAfter : walker.position.nodeBefore;\n\t}\n\n\twhile ( textNode && textNode.is( '$text' ) ) {\n\t\tconst offset = walker.position.offset - textNode.startOffset!;\n\n\t\t// Check of adjacent text nodes with different attributes (like BOLD).\n\t\t// Example : 'foofoo []bar<$text bold=\"true\">bar</$text> bazbaz'\n\t\t// should expand to : 'foofoo [bar<$text bold=\"true\">bar</$text>] bazbaz'.\n\t\tif ( isAtNodeBoundary( textNode, offset, isForward ) ) {\n\t\t\ttextNode = isForward ? walker.position.nodeAfter : walker.position.nodeBefore;\n\t\t}\n\t\t// Check if this is a word boundary.\n\t\telse if ( isAtWordBoundary( textNode.data, offset, isForward ) ) {\n\t\t\tbreak;\n\t\t}\n\t\t// Maybe one more character.\n\t\telse {\n\t\t\twalker.next();\n\t\t}\n\t}\n\n\treturn walker.position;\n}\n\nfunction getSearchRange( start: Position, isForward: boolean ) {\n\tconst root = start.root;\n\tconst searchEnd = Position._createAt( root, isForward ? 'end' : 0 );\n\n\tif ( isForward ) {\n\t\treturn new Range( start, searchEnd );\n\t} else {\n\t\treturn new Range( searchEnd, start );\n\t}\n}\n\n/**\n * Checks if selection is on word boundary.\n */\nfunction isAtWordBoundary( data: string, offset: number, isForward: boolean ) {\n\t// The offset to check depends on direction.\n\tconst offsetToCheck = offset + ( isForward ? 0 : -1 );\n\n\treturn wordBoundaryCharacters.includes( data.charAt( offsetToCheck ) );\n}\n\n/**\n * Checks if selection is on node boundary.\n */\nfunction isAtNodeBoundary( textNode: Text, offset: number, isForward: boolean ) {\n\treturn offset === ( isForward ? textNode.offsetSize : 0 );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/model/model\n */\n\nimport Batch, { type BatchType } from './batch';\nimport Document from './document';\nimport MarkerCollection from './markercollection';\nimport ModelPosition, { type PositionOffset, type PositionStickiness } from './position';\nimport ModelRange from './range';\nimport ModelSelection, { type PlaceOrOffset, type Selectable } from './selection';\nimport OperationFactory from './operation/operationfactory';\nimport DocumentSelection from './documentselection';\nimport Schema from './schema';\nimport Writer from './writer';\nimport Node from './node';\n\nimport { autoParagraphEmptyRoots } from './utils/autoparagraphing';\nimport { injectSelectionPostFixer } from './utils/selection-post-fixer';\nimport deleteContent from './utils/deletecontent';\nimport getSelectedContent from './utils/getselectedcontent';\nimport insertContent from './utils/insertcontent';\nimport insertObject from './utils/insertobject';\nimport modifySelection from './utils/modifyselection';\n\nimport type ModelDocumentFragment from './documentfragment';\nimport type Item from './item';\nimport type ModelElement from './element';\nimport type Operation from './operation/operation';\n\nimport {\n\tCKEditorError,\n\tObservableMixin,\n\ttype DecoratedMethodEvent\n} from '@ckeditor/ckeditor5-utils';\n\n// @if CK_DEBUG_ENGINE // const { dumpTrees, initDocumentDumping } = require( '../dev-utils/utils' );\n// @if CK_DEBUG_ENGINE // const { OperationReplayer } = require( '../dev-utils/operationreplayer' ).default;\n\n/**\n * Editor's data model. Read about the model in the\n * {@glink framework/architecture/editing-engine engine architecture} guide.\n */\nexport default class Model extends ObservableMixin() {\n\t/**\n\t * Model's marker collection.\n\t */\n\tpublic readonly markers: MarkerCollection;\n\n\t/**\n\t * Model's document.\n\t */\n\tpublic readonly document: Document;\n\n\t/**\n\t * Model's schema.\n\t */\n\tpublic readonly schema: Schema;\n\n\t/**\n\t * All callbacks added by {@link module:engine/model/model~Model#change} or\n\t * {@link module:engine/model/model~Model#enqueueChange} methods waiting to be executed.\n\t */\n\tprivate readonly _pendingChanges: Array<{ batch: Batch; callback: ( writer: Writer ) => any }>;\n\n\t/**\n\t * The last created and currently used writer instance.\n\t */\n\tprivate _currentWriter: Writer | null;\n\n\t// @if CK_DEBUG_ENGINE // private _operationLogs: Array<string>;\n\t// @if CK_DEBUG_ENGINE // private _appliedOperations: Array<Operation>;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.markers = new MarkerCollection();\n\t\tthis.document = new Document( this );\n\t\tthis.schema = new Schema();\n\n\t\tthis._pendingChanges = [];\n\t\tthis._currentWriter = null;\n\n\t\t( [ 'deleteContent', 'modifySelection', 'getSelectedContent', 'applyOperation' ] as const )\n\t\t\t.forEach( methodName => this.decorate( methodName ) );\n\n\t\t// Adding operation validation with `highest` priority, so it is called before any other feature would like\n\t\t// to do anything with the operation. If the operation has incorrect parameters it should throw on the earliest occasion.\n\t\tthis.on<ModelApplyOperationEvent>( 'applyOperation', ( evt, args ) => {\n\t\t\tconst operation = args[ 0 ];\n\n\t\t\toperation._validate();\n\t\t}, { priority: 'highest' } );\n\n\t\t// Register some default abstract entities.\n\t\tthis.schema.register( '$root', {\n\t\t\tisLimit: true\n\t\t} );\n\n\t\tthis.schema.register( '$container', {\n\t\t\tallowIn: [ '$root', '$container' ]\n\t\t} );\n\n\t\tthis.schema.register( '$block', {\n\t\t\tallowIn: [ '$root', '$container' ],\n\t\t\tisBlock: true\n\t\t} );\n\n\t\tthis.schema.register( '$blockObject', {\n\t\t\tallowWhere: '$block',\n\t\t\tisBlock: true,\n\t\t\tisObject: true\n\t\t} );\n\n\t\tthis.schema.register( '$inlineObject', {\n\t\t\tallowWhere: '$text',\n\t\t\tallowAttributesOf: '$text',\n\t\t\tisInline: true,\n\t\t\tisObject: true\n\t\t} );\n\n\t\tthis.schema.register( '$text', {\n\t\t\tallowIn: '$block',\n\t\t\tisInline: true,\n\t\t\tisContent: true\n\t\t} );\n\n\t\tthis.schema.register( '$clipboardHolder', {\n\t\t\tallowContentOf: '$root',\n\t\t\tallowChildren: '$text',\n\t\t\tisLimit: true\n\t\t} );\n\n\t\tthis.schema.register( '$documentFragment', {\n\t\t\tallowContentOf: '$root',\n\t\t\tallowChildren: '$text',\n\t\t\tisLimit: true\n\t\t} );\n\n\t\t// An element needed by the `upcastElementToMarker` converter.\n\t\t// This element temporarily represents a marker boundary during the conversion process and is removed\n\t\t// at the end of the conversion. `UpcastDispatcher` or at least `Conversion` class looks like a\n\t\t// better place for this registration but both know nothing about `Schema`.\n\t\tthis.schema.register( '$marker' );\n\t\tthis.schema.addChildCheck( ( context, childDefinition ) => {\n\t\t\tif ( childDefinition.name === '$marker' ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} );\n\n\t\tinjectSelectionPostFixer( this );\n\n\t\t// Post-fixer which takes care of adding empty paragraph elements to the empty roots.\n\t\tthis.document.registerPostFixer( autoParagraphEmptyRoots );\n\n\t\t// The base implementation for \"decorated\" method with remapped arguments.\n\t\tthis.on<ModelInsertContentEvent>( 'insertContent', ( evt, [ content, selectable ] ) => {\n\t\t\tevt.return = insertContent( this, content, selectable );\n\t\t} );\n\n\t\t// The base implementation for \"decorated\" method with remapped arguments.\n\t\tthis.on<ModelInsertObjectEvent>( 'insertObject', ( evt, [ element, selection, options ] ) => {\n\t\t\tevt.return = insertObject( this, element, selection, options );\n\t\t} );\n\n\t\t// The base implementation for \"decorated\" method with remapped arguments.\n\t\tthis.on<ModelCanEditAtEvent>( 'canEditAt', evt => {\n\t\t\tconst canEditAt = !this.document.isReadOnly;\n\n\t\t\tevt.return = canEditAt;\n\n\t\t\tif ( !canEditAt ) {\n\t\t\t\t// Prevent further processing if the selection is at non-editable place.\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t} );\n\n\t\t// @if CK_DEBUG_ENGINE // initDocumentDumping( this.document );\n\t\t// @if CK_DEBUG_ENGINE // this.on( 'applyOperation', () => {\n\t\t// @if CK_DEBUG_ENGINE // \tdumpTrees( this.document, this.document.version );\n\t\t// @if CK_DEBUG_ENGINE // }, { priority: 'lowest' } );\n\n\t\t// @if CK_DEBUG_ENGINE // this._operationLogs = [];\n\t\t// @if CK_DEBUG_ENGINE // this._appliedOperations = [];\n\t}\n\n\t/**\n\t * The `change()` method is the primary way of changing the model. You should use it to modify all document nodes\n\t * (including detached nodes – i.e. nodes not added to the {@link module:engine/model/model~Model#document model document}),\n\t * the {@link module:engine/model/document~Document#selection document's selection}, and\n\t * {@link module:engine/model/model~Model#markers model markers}.\n\t *\n\t * ```ts\n\t * model.change( writer => {\n\t * \twriter.insertText( 'foo', paragraph, 'end' );\n\t * } );\n\t * ```\n\t *\n\t * All changes inside the change block use the same {@link module:engine/model/batch~Batch} so they are combined\n\t * into a single undo step.\n\t *\n\t * ```ts\n\t * model.change( writer => {\n\t * \twriter.insertText( 'foo', paragraph, 'end' ); // foo.\n\t *\n\t * \tmodel.change( writer => {\n\t * \t\twriter.insertText( 'bar', paragraph, 'end' ); // foobar.\n\t * \t} );\n\t *\n\t * \twriter.insertText( 'bom', paragraph, 'end' ); // foobarbom.\n\t * } );\n\t * ```\n\t *\n\t * The callback of the `change()` block is executed synchronously.\n\t *\n\t * You can also return a value from the change block.\n\t *\n\t * ```ts\n\t * const img = model.change( writer => {\n\t * \treturn writer.createElement( 'img' );\n\t * } );\n\t * ```\n\t *\n\t * @see #enqueueChange\n\t * @typeParam TReturn The return type of the provided callback.\n\t * @param callback Callback function which may modify the model.\n\t */\n\tpublic change<TReturn>( callback: ( writer: Writer ) => TReturn ): TReturn {\n\t\ttry {\n\t\t\tif ( this._pendingChanges.length === 0 ) {\n\t\t\t\t// If this is the outermost block, create a new batch and start `_runPendingChanges` execution flow.\n\t\t\t\tthis._pendingChanges.push( { batch: new Batch(), callback } );\n\n\t\t\t\treturn this._runPendingChanges()[ 0 ];\n\t\t\t} else {\n\t\t\t\t// If this is not the outermost block, just execute the callback.\n\t\t\t\treturn callback( this._currentWriter! );\n\t\t\t}\n\t\t} catch ( err: any ) {\n\t\t\t// @if CK_DEBUG // throw err;\n\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\tCKEditorError.rethrowUnexpectedError( err, this );\n\t\t}\n\t}\n\n\t/**\n\t * The `enqueueChange()` method performs similar task as the {@link #change `change()` method}, with two major differences.\n\t *\n\t * First, the callback of `enqueueChange()` is executed when all other enqueued changes are done. It might be executed\n\t * immediately if it is not nested in any other change block, but if it is nested in another (enqueue)change block,\n\t * it will be delayed and executed after the outermost block.\n\t *\n\t * ```ts\n\t * model.change( writer => {\n\t * \tconsole.log( 1 );\n\t *\n\t * \tmodel.enqueueChange( writer => {\n\t * \t\tconsole.log( 2 );\n\t * \t} );\n\t *\n\t * \tconsole.log( 3 );\n\t * } ); // Will log: 1, 3, 2.\n\t * ```\n\t *\n\t * In addition to that, the changes enqueued with `enqueueChange()` will be converted separately from the changes\n\t * done in the outer `change()` block.\n\t *\n\t * By default, a new batch with the default {@link module:engine/model/batch~Batch#constructor batch type} is created.\n\t * To define the {@link module:engine/model/batch~Batch} into which you want to add your changes,\n\t * use {@link #enqueueChange:CUSTOM_BATCH `enqueueChange( batchOrType, callback )`}.\n\t *\n\t * @label DEFAULT_BATCH\n\t * @param callback Callback function which may modify the model.\n\t */\n\tpublic enqueueChange(\n\t\tcallback: ( writer: Writer ) => unknown\n\t): void;\n\n\t/**\n\t * The `enqueueChange()` method performs similar task as the {@link #change `change()` method}, with two major differences.\n\t *\n\t * First, the callback of `enqueueChange()` is executed when all other enqueued changes are done. It might be executed\n\t * immediately if it is not nested in any other change block, but if it is nested in another (enqueue)change block,\n\t * it will be delayed and executed after the outermost block.\n\t *\n\t * ```ts\n\t * model.change( new Batch(), writer => {\n\t * \tconsole.log( 1 );\n\t *\n\t * \tmodel.enqueueChange( new Batch(), writer => {\n\t * \t\tconsole.log( 2 );\n\t * \t} );\n\t *\n\t * \tconsole.log( 3 );\n\t * } ); // Will log: 1, 3, 2.\n\t * ```\n\t *\n\t * In addition to that, the changes enqueued with `enqueueChange()` will be converted separately from the changes\n\t * done in the outer `change()` block.\n\t *\n\t * Second, it lets you define the {@link module:engine/model/batch~Batch} into which you want to add your changes.\n\t * If you want to use default {@link module:engine/model/batch~Batch#constructor batch type}, use\n\t * {@link #enqueueChange:DEFAULT_BATCH `enqueueChange( callback )`}.\n\t *\n\t * ```ts\n\t * model.enqueueChange( { isUndoable: false }, writer => {\n\t * \twriter.insertText( 'foo', paragraph, 'end' );\n\t * } );\n\t * ```\n\t *\n\t * When using the `enqueueChange()` block you can also add some changes to the batch you used before.\n\t *\n\t * ```ts\n\t * model.enqueueChange( batch, writer => {\n\t * \twriter.insertText( 'foo', paragraph, 'end' );\n\t * } );\n\t * ```\n\t *\n\t * In order to make a nested `enqueueChange()` create a single undo step together with the changes done in the outer `change()`\n\t * block, you can obtain the batch instance from the {@link module:engine/model/writer~Writer#batch writer} of the outer block.\n\t *\n\t * @label CUSTOM_BATCH\n\t * @param batchOrType A batch or a {@link module:engine/model/batch~Batch#constructor batch type} that should be used in the callback.\n\t * If not defined, a new batch with the default type will be created.\n\t * @param callback Callback function which may modify the model.\n\t */\n\tpublic enqueueChange(\n\t\tbatchOrType: Batch | BatchType | undefined,\n\t\tcallback: ( writer: Writer ) => unknown\n\t): void;\n\n\tpublic enqueueChange(\n\t\tbatchOrType: Batch | BatchType | ( ( writer: Writer ) => unknown ) | undefined,\n\t\tcallback?: ( writer: Writer ) => unknown\n\t): void {\n\t\ttry {\n\t\t\tif ( !batchOrType ) {\n\t\t\t\tbatchOrType = new Batch();\n\t\t\t} else if ( typeof batchOrType === 'function' ) {\n\t\t\t\tcallback = batchOrType;\n\t\t\t\tbatchOrType = new Batch();\n\t\t\t} else if ( !( batchOrType instanceof Batch ) ) {\n\t\t\t\tbatchOrType = new Batch( batchOrType );\n\t\t\t}\n\n\t\t\tthis._pendingChanges.push( { batch: batchOrType, callback } as any );\n\n\t\t\tif ( this._pendingChanges.length == 1 ) {\n\t\t\t\tthis._runPendingChanges();\n\t\t\t}\n\t\t} catch ( err: any ) {\n\t\t\t// @if CK_DEBUG // throw err;\n\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\tCKEditorError.rethrowUnexpectedError( err, this );\n\t\t}\n\t}\n\n\t/**\n\t * {@link module:utils/observablemixin~Observable#decorate Decorated} function for applying\n\t * {@link module:engine/model/operation/operation~Operation operations} to the model.\n\t *\n\t * This is a low-level way of changing the model. It is exposed for very specific use cases (like the undo feature).\n\t * Normally, to modify the model, you will want to use {@link module:engine/model/writer~Writer `Writer`}.\n\t * See also {@glink framework/architecture/editing-engine#changing-the-model Changing the model} section\n\t * of the {@glink framework/architecture/editing-engine Editing architecture} guide.\n\t *\n\t * @param operation The operation to apply.\n\t */\n\tpublic applyOperation( operation: Operation ): void {\n\t\t// @if CK_DEBUG_ENGINE // console.log( 'Applying ' + operation );\n\n\t\t// @if CK_DEBUG_ENGINE // this._operationLogs.push( JSON.stringify( operation ) );\n\t\t// @if CK_DEBUG_ENGINE // this._appliedOperations.push( operation );\n\n\t\toperation._execute();\n\t}\n\n\t// @if CK_DEBUG_ENGINE // public getAppliedOperation(): string {\n\t// @if CK_DEBUG_ENGINE // \tif ( !this._appliedOperations ) {\n\t// @if CK_DEBUG_ENGINE // \t\treturn '';\n\t// @if CK_DEBUG_ENGINE // \t}\n\n\t// @if CK_DEBUG_ENGINE // \treturn this._appliedOperations.map( operation => JSON.stringify( operation ) ).join( '-------' );\n\t// @if CK_DEBUG_ENGINE // }\n\n\t// @if CK_DEBUG_ENGINE // public createReplayer( stringifiedOperations: string ): typeof OperationReplayer {\n\t// @if CK_DEBUG_ENGINE // \treturn new OperationReplayer( this, '-------', stringifiedOperations );\n\t// @if CK_DEBUG_ENGINE // }\n\n\t/**\n\t * Inserts content at the position in the editor specified by the selection, as one would expect the paste\n\t * functionality to work.\n\t *\n\t * **Note**: If you want to insert an {@glink framework/deep-dive/schema#object-elements object element}\n\t * (e.g. a {@link module:widget/utils~toWidget widget}), see {@link #insertObject} instead.\n\t *\n\t * This is a high-level method. It takes the {@link #schema schema} into consideration when inserting\n\t * the content, clears the given selection's content before inserting nodes and moves the selection\n\t * to its target position at the end of the process.\n\t * It can split elements, merge them, wrap bare text nodes with paragraphs, etc. — just like the\n\t * pasting feature should do.\n\t *\n\t * For lower-level methods see {@link module:engine/model/writer~Writer `Writer`}.\n\t *\n\t * This method, unlike {@link module:engine/model/writer~Writer `Writer`}'s methods, does not have to be used\n\t * inside a {@link #change `change()` block}.\n\t *\n\t * # Conversion and schema\n\t *\n\t * Inserting elements and text nodes into the model is not enough to make CKEditor 5 render that content\n\t * to the user. CKEditor 5 implements a model-view-controller architecture and what `model.insertContent()` does\n\t * is only adding nodes to the model. Additionally, you need to define\n\t * {@glink framework/architecture/editing-engine#conversion converters} between the model and view\n\t * and define those nodes in the {@glink framework/architecture/editing-engine#schema schema}.\n\t *\n\t * So, while this method may seem similar to CKEditor 4 `editor.insertHtml()` (in fact, both methods\n\t * are used for paste-like content insertion), the CKEditor 5 method cannot be use to insert arbitrary HTML\n\t * unless converters are defined for all elements and attributes in that HTML.\n\t *\n\t * # Examples\n\t *\n\t * Using `insertContent()` with a manually created model structure:\n\t *\n\t * ```ts\n\t * // Let's create a document fragment containing such content as:\n\t * //\n\t * // <paragraph>foo</paragraph>\n\t * // <blockQuote>\n\t * // <paragraph>bar</paragraph>\n\t * // </blockQuote>\n\t * const docFrag = editor.model.change( writer => {\n\t * \tconst p1 = writer.createElement( 'paragraph' );\n\t * \tconst p2 = writer.createElement( 'paragraph' );\n\t * \tconst blockQuote = writer.createElement( 'blockQuote' );\n\t * \tconst docFrag = writer.createDocumentFragment();\n\t *\n\t * \twriter.append( p1, docFrag );\n\t * \twriter.append( blockQuote, docFrag );\n\t * \twriter.append( p2, blockQuote );\n\t * \twriter.insertText( 'foo', p1 );\n\t * \twriter.insertText( 'bar', p2 );\n\t *\n\t * \treturn docFrag;\n\t * } );\n\t *\n\t * // insertContent() does not have to be used in a change() block. It can, though,\n\t * // so this code could be moved to the callback defined above.\n\t * editor.model.insertContent( docFrag );\n\t * ```\n\t *\n\t * Using `insertContent()` with an HTML string converted to a model document fragment (similar to the pasting mechanism):\n\t *\n\t * ```ts\n\t * // You can create your own HtmlDataProcessor instance or use editor.data.processor\n\t * // if you have not overridden the default one (which is the HtmlDataProcessor instance).\n\t * const htmlDP = new HtmlDataProcessor( viewDocument );\n\t *\n\t * // Convert an HTML string to a view document fragment:\n\t * const viewFragment = htmlDP.toView( htmlString );\n\t *\n\t * // Convert the view document fragment to a model document fragment\n\t * // in the context of $root. This conversion takes the schema into\n\t * // account so if, for example, the view document fragment contained a bare text node,\n\t * // this text node cannot be a child of $root, so it will be automatically\n\t * // wrapped with a <paragraph>. You can define the context yourself (in the second parameter),\n\t * // and e.g. convert the content like it would happen in a <paragraph>.\n\t * // Note: The clipboard feature uses a custom context called $clipboardHolder\n\t * // which has a loosened schema.\n\t * const modelFragment = editor.data.toModel( viewFragment );\n\t *\n\t * editor.model.insertContent( modelFragment );\n\t * ```\n\t *\n\t * By default this method will use the document selection but it can also be used with a position, range or selection instance.\n\t *\n\t * ```ts\n\t * // Insert text at the current document selection position.\n\t * editor.model.change( writer => {\n\t * \teditor.model.insertContent( writer.createText( 'x' ) );\n\t * } );\n\t *\n\t * // Insert text at a given position - the document selection will not be modified.\n\t * editor.model.change( writer => {\n\t * \teditor.model.insertContent( writer.createText( 'x' ), doc.getRoot(), 2 );\n\t *\n\t * \t// Which is a shorthand for:\n\t * \teditor.model.insertContent( writer.createText( 'x' ), writer.createPositionAt( doc.getRoot(), 2 ) );\n\t * } );\n\t * ```\n\t *\n\t * If you want the document selection to be moved to the inserted content, use the\n\t * {@link module:engine/model/writer~Writer#setSelection `setSelection()`} method of the writer after inserting\n\t * the content:\n\t *\n\t * ```ts\n\t * editor.model.change( writer => {\n\t * \tconst paragraph = writer.createElement( 'paragraph' );\n\t *\n\t * \t// Insert an empty paragraph at the beginning of the root.\n\t * \teditor.model.insertContent( paragraph, writer.createPositionAt( editor.model.document.getRoot(), 0 ) );\n\t *\n\t * \t// Move the document selection to the inserted paragraph.\n\t * \twriter.setSelection( paragraph, 'in' );\n\t * } );\n\t * ```\n\t *\n\t * If an instance of the {@link module:engine/model/selection~Selection model selection} is passed as `selectable`,\n\t * the new content will be inserted at the passed selection (instead of document selection):\n\t *\n\t * ```ts\n\t * editor.model.change( writer => {\n\t * \t// Create a selection in a paragraph that will be used as a place of insertion.\n\t * \tconst selection = writer.createSelection( paragraph, 'in' );\n\t *\n\t * \t// Insert the new text at the created selection.\n\t * \teditor.model.insertContent( writer.createText( 'x' ), selection );\n\t *\n\t * \t// insertContent() modifies the passed selection instance so it can be used to set the document selection.\n\t * \t// Note: This is not necessary when you passed the document selection to insertContent().\n\t * \twriter.setSelection( selection );\n\t * } );\n\t * ```\n\t *\n\t * @fires insertContent\n\t * @param content The content to insert.\n\t * @param selectable The selection into which the content should be inserted.\n\t * If not provided the current model document selection will be used.\n\t * @param placeOrOffset To be used when a model item was passed as `selectable`.\n\t * This param defines a position in relation to that item.\n\t * at the insertion position.\n\t */\n\tpublic insertContent(\n\t\tcontent: Item | ModelDocumentFragment,\n\t\tselectable?: Selectable,\n\t\tplaceOrOffset?: PlaceOrOffset,\n\t\t...rest: Array<unknown>\n\t): ModelRange {\n\t\tconst selection = normalizeSelectable( selectable, placeOrOffset );\n\n\t\t// Passing all call arguments so it acts like decorated method.\n\t\treturn this.fire<ModelInsertContentEvent>( 'insertContent', [ content, selection, placeOrOffset, ...rest ] )!;\n\t}\n\n\t/**\n\t * Inserts an {@glink framework/deep-dive/schema#object-elements object element} at a specific position in the editor content.\n\t *\n\t * This is a high-level API:\n\t * * It takes the {@link #schema schema} into consideration,\n\t * * It clears the content of passed `selectable` before inserting,\n\t * * It can move the selection at the end of the process,\n\t * * It will copy the selected block's attributes to preserve them upon insertion,\n\t * * It can split elements or wrap inline objects with paragraphs if they are not allowed in target position,\n\t * * etc.\n\t *\n\t * # Notes\n\t *\n\t * * If you want to insert a non-object content, see {@link #insertContent} instead.\n\t * * For lower-level API, see {@link module:engine/model/writer~Writer `Writer`}.\n\t * * Unlike {@link module:engine/model/writer~Writer `Writer`}, this method does not have to be used inside\n\t * a {@link #change `change()` block}.\n\t * * Inserting object into the model is not enough to make CKEditor 5 render that content to the user.\n\t * CKEditor 5 implements a model-view-controller architecture and what `model.insertObject()` does\n\t * is only adding nodes to the model. Additionally, you need to define\n\t * {@glink framework/architecture/editing-engine#conversion converters} between the model and view\n\t * and define those nodes in the {@glink framework/architecture/editing-engine#schema schema}.\n\t *\n\t * # Examples\n\t *\n\t * Use the following code to insert an object at the current selection and keep the selection on the inserted element:\n\t *\n\t * ```ts\n\t * const rawHtmlEmbedElement = writer.createElement( 'rawHtml' );\n\t *\n\t * model.insertObject( rawHtmlEmbedElement, null, null, {\n\t * \tsetSelection: 'on'\n\t * } );\n\t * ```\n\t *\n\t * Use the following code to insert an object at the current selection and nudge the selection after the inserted object:\n\t *\n\t * ```ts\n\t * const pageBreakElement = writer.createElement( 'pageBreak' );\n \t *\n\t * model.insertObject( pageBreakElement, null, null, {\n\t * \tsetSelection: 'after'\n\t * } );\n\t * ```\n\t *\n\t * Use the following code to insert an object at the current selection and avoid splitting the content (non-destructive insertion):\n\t *\n\t * ```ts\n\t * const tableElement = writer.createElement( 'table' );\n \t *\n\t * model.insertObject( tableElement, null, null, {\n\t * \tfindOptimalPosition: 'auto'\n\t * } );\n\t * ```\n\t *\n\t * Use the following code to insert an object at the specific range (also: replace the content of the range):\n\t *\n\t * ```ts\n\t * const tableElement = writer.createElement( 'table' );\n\t * const range = model.createRangeOn( model.document.getRoot().getChild( 1 ) );\n \t *\n\t * model.insertObject( tableElement, range );\n\t * ```\n\t *\n\t * @param element An object to be inserted into the model document.\n\t * @param selectable A selectable where the content should be inserted. If not specified, the current\n\t * {@link module:engine/model/document~Document#selection document selection} will be used instead.\n\t * @param placeOrOffset Specifies the exact place or offset for the insertion to take place, relative to `selectable`.\n\t * @param options Additional options.\n\t * @param options.findOptimalPosition An option that, when set, adjusts the insertion position (relative to\n\t * `selectable` and `placeOrOffset`) so that the content of `selectable` is not split upon insertion (a.k.a. non-destructive insertion).\n\t * * When `'auto'`, the algorithm will decide whether to insert the object before or after `selectable` to avoid content splitting.\n\t * * When `'before'`, the closest position before `selectable` will be used that will not result in content splitting.\n\t * * When `'after'`, the closest position after `selectable` will be used that will not result in content splitting.\n\t *\n\t * Note that this option only works for block objects. Inline objects are inserted into text and do not split blocks.\n\t * @param options.setSelection An option that, when set, moves the\n\t * {@link module:engine/model/document~Document#selection document selection} after inserting the object.\n\t * * When `'on'`, the document selection will be set on the inserted object.\n\t * * When `'after'`, the document selection will move to the closest text node after the inserted object. If there is no\n\t * such text node, a paragraph will be created and the document selection will be moved inside it.\n\t * at the insertion position.\n\t */\n\tpublic insertObject(\n\t\telement: ModelElement,\n\t\tselectable?: Selectable,\n\t\tplaceOrOffset?: PlaceOrOffset | null,\n\t\toptions?: {\n\t\t\tfindOptimalPosition?: 'auto' | 'before' | 'after';\n\t\t\tsetSelection?: 'on' | 'after';\n\t\t},\n\t\t...rest: Array<unknown>\n\t): ModelRange {\n\t\tconst selection = normalizeSelectable( selectable, placeOrOffset );\n\n\t\t// Note that options are fired as 2 arguments for backward compatibility with the decorated method.\n\t\t// Passing all call arguments so it acts like decorated method.\n\t\treturn this.fire<ModelInsertObjectEvent>( 'insertObject', [ element, selection, options, options, ...rest ] )!;\n\t}\n\n\t/**\n\t * Deletes content of the selection and merge siblings. The resulting selection is always collapsed.\n\t *\n\t * **Note:** For the sake of predictability, the resulting selection should always be collapsed.\n\t * In cases where a feature wants to modify deleting behavior so selection isn't collapsed\n\t * (e.g. a table feature may want to keep row selection after pressing <kbd>Backspace</kbd>),\n\t * then that behavior should be implemented in the view's listener. At the same time, the table feature\n\t * will need to modify this method's behavior too, e.g. to \"delete contents and then collapse\n\t * the selection inside the last selected cell\" or \"delete the row and collapse selection somewhere near\".\n\t * That needs to be done in order to ensure that other features which use `deleteContent()` will work well with tables.\n\t *\n\t * @fires deleteContent\n\t * @param selection Selection of which the content should be deleted.\n\t * @param options.leaveUnmerged Whether to merge elements after removing the content of the selection.\n\t *\n\t * For example `<heading1>x[x</heading1><paragraph>y]y</paragraph>` will become:\n\t *\n\t * * `<heading1>x^y</heading1>` with the option disabled (`leaveUnmerged == false`)\n\t * * `<heading1>x^</heading1><paragraph>y</paragraph>` with enabled (`leaveUnmerged == true`).\n\t *\n\t * Note: {@link module:engine/model/schema~Schema#isObject object} and {@link module:engine/model/schema~Schema#isLimit limit}\n\t * elements will not be merged.\n\t *\n\t * @param options.doNotResetEntireContent Whether to skip replacing the entire content with a\n\t * paragraph when the entire content was selected.\n\t *\n\t * For example `<heading1>[x</heading1><paragraph>y]</paragraph>` will become:\n\t *\n\t * * `<paragraph>^</paragraph>` with the option disabled (`doNotResetEntireContent == false`)\n\t * * `<heading1>^</heading1>` with enabled (`doNotResetEntireContent == true`)\n\t *\n\t * @param options.doNotAutoparagraph Whether to create a paragraph if after content deletion selection is moved\n\t * to a place where text cannot be inserted.\n\t *\n\t * For example `<paragraph>x</paragraph>[<imageBlock src=\"foo.jpg\"></imageBlock>]` will become:\n\t *\n\t * * `<paragraph>x</paragraph><paragraph>[]</paragraph>` with the option disabled (`doNotAutoparagraph == false`)\n\t * * `<paragraph>x[]</paragraph>` with the option enabled (`doNotAutoparagraph == true`).\n\t *\n\t * **Note:** if there is no valid position for the selection, the paragraph will always be created:\n\t *\n\t * `[<imageBlock src=\"foo.jpg\"></imageBlock>]` -> `<paragraph>[]</paragraph>`.\n\t *\n\t * @param options.direction The direction in which the content is being consumed.\n\t * Deleting backward corresponds to using the <kbd>Backspace</kbd> key, while deleting content forward corresponds to\n\t * the <kbd>Shift</kbd>+<kbd>Backspace</kbd> keystroke.\n\t */\n\tpublic deleteContent(\n\t\tselection: ModelSelection | DocumentSelection,\n\t\toptions?: {\n\t\t\tleaveUnmerged?: boolean;\n\t\t\tdoNotResetEntireContent?: boolean;\n\t\t\tdoNotAutoparagraph?: boolean;\n\t\t\tdirection?: 'forward' | 'backward';\n\t\t\t[ i: string ]: unknown;\n\t\t}\n\t): void {\n\t\tdeleteContent( this, selection, options );\n\t}\n\n\t/**\n\t * Modifies the selection. Currently, the supported modifications are:\n\t *\n\t * * Extending. The selection focus is moved in the specified `options.direction` with a step specified in `options.unit`.\n\t * Possible values for `unit` are:\n\t * * `'character'` (default) - moves selection by one user-perceived character. In most cases this means moving by one\n\t * character in `String` sense. However, unicode also defines \"combing marks\". These are special symbols, that combines\n\t * with a symbol before it (\"base character\") to create one user-perceived character. For example, `q̣̇` is a normal\n\t * letter `q` with two \"combining marks\": upper dot (`Ux0307`) and lower dot (`Ux0323`). For most actions, i.e. extending\n\t * selection by one position, it is correct to include both \"base character\" and all of it's \"combining marks\". That is\n\t * why `'character'` value is most natural and common method of modifying selection.\n\t * * `'codePoint'` - moves selection by one unicode code point. In contrary to, `'character'` unit, this will insert\n\t * selection between \"base character\" and \"combining mark\", because \"combining marks\" have their own unicode code points.\n\t * However, for technical reasons, unicode code points with values above `UxFFFF` are represented in native `String` by\n\t * two characters, called \"surrogate pairs\". Halves of \"surrogate pairs\" have a meaning only when placed next to each other.\n\t * For example `𨭎` is represented in `String` by `\\uD862\\uDF4E`. Both `\\uD862` and `\\uDF4E` do not have any meaning\n\t * outside the pair (are rendered as ? when alone). Position between them would be incorrect. In this case, selection\n\t * extension will include whole \"surrogate pair\".\n\t * * `'word'` - moves selection by a whole word.\n\t *\n\t * **Note:** if you extend a forward selection in a backward direction you will in fact shrink it.\n\t *\n\t * @fires modifySelection\n\t * @param selection The selection to modify.\n\t * @param options.direction The direction in which the selection should be modified.\n\t * @param options.unit The unit by which selection should be modified.\n\t * @param options.treatEmojiAsSingleUnit Whether multi-characer emoji sequences should be handled as single unit.\n\t */\n\tpublic modifySelection(\n\t\tselection: ModelSelection | DocumentSelection,\n\t\toptions?: {\n\t\t\tdirection?: 'forward' | 'backward';\n\t\t\tunit?: 'character' | 'codePoint' | 'word';\n\t\t\ttreatEmojiAsSingleUnit?: boolean;\n\t\t}\n\t): void {\n\t\tmodifySelection( this, selection, options );\n\t}\n\n\t/**\n\t * Gets a clone of the selected content.\n\t *\n\t * For example, for the following selection:\n\t *\n\t * ```html\n\t * <paragraph>x</paragraph>\n\t * <blockQuote>\n\t * \t<paragraph>y</paragraph>\n\t * \t<heading1>fir[st</heading1>\n\t * </blockQuote>\n\t * <paragraph>se]cond</paragraph>\n\t * <paragraph>z</paragraph>\n\t * ```\n\t *\n\t * It will return a document fragment with such a content:\n\t *\n\t * ```html\n\t * <blockQuote>\n\t * \t<heading1>st</heading1>\n\t * </blockQuote>\n\t * <paragraph>se</paragraph>\n\t * ```\n\t *\n\t * @fires getSelectedContent\n\t * @param selection The selection of which content will be returned.\n\t */\n\tpublic getSelectedContent( selection: ModelSelection | DocumentSelection ): ModelDocumentFragment {\n\t\treturn getSelectedContent( this, selection );\n\t}\n\n\t/**\n\t * Checks whether the given {@link module:engine/model/range~Range range} or\n\t * {@link module:engine/model/element~Element element} has any meaningful content.\n\t *\n\t * Meaningful content is:\n\t *\n\t * * any text node (`options.ignoreWhitespaces` allows controlling whether this text node must also contain\n\t * any non-whitespace characters),\n\t * * or any {@link module:engine/model/schema~Schema#isContent content element},\n\t * * or any {@link module:engine/model/markercollection~Marker marker} which\n\t * {@link module:engine/model/markercollection~Marker#_affectsData affects data}.\n\t *\n\t * This means that a range containing an empty `<paragraph></paragraph>` is not considered to have a meaningful content.\n\t * However, a range containing an `<imageBlock></imageBlock>` (which would normally be marked in the schema as an object element)\n\t * is considered non-empty.\n\t *\n\t * @param rangeOrElement Range or element to check.\n\t * @param options.ignoreWhitespaces Whether text node with whitespaces only should be considered empty.\n\t * @param options.ignoreMarkers Whether markers should be ignored.\n\t */\n\tpublic hasContent(\n\t\trangeOrElement: ModelRange | ModelElement | ModelDocumentFragment,\n\t\toptions: {\n\t\t\tignoreWhitespaces?: boolean;\n\t\t\tignoreMarkers?: boolean;\n\t\t} = {}\n\t): boolean {\n\t\tconst range = rangeOrElement instanceof ModelRange ? rangeOrElement : ModelRange._createIn( rangeOrElement );\n\n\t\tif ( range.isCollapsed ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst { ignoreWhitespaces = false, ignoreMarkers = false } = options;\n\n\t\t// Check if there are any markers which affects data in this given range.\n\t\tif ( !ignoreMarkers ) {\n\t\t\tfor ( const intersectingMarker of this.markers.getMarkersIntersectingRange( range ) ) {\n\t\t\t\tif ( intersectingMarker.affectsData ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor ( const item of range.getItems() ) {\n\t\t\tif ( this.schema.isContent( item ) ) {\n\t\t\t\tif ( item.is( '$textProxy' ) ) {\n\t\t\t\t\tif ( !ignoreWhitespaces ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} else if ( item.data.search( /\\S/ ) !== -1 ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Check whether given selectable is at a place in the model where it can be edited (returns `true`) or not (returns `false`).\n\t *\n\t * Should be used instead of {@link module:core/editor/editor~Editor#isReadOnly} to check whether a user action can happen at\n\t * given selectable. It may be decorated and used differently in different environment (e.g. multi-root editor can disable\n\t * a particular root).\n\t *\n\t * This method is decorated. Although this method accepts any parameter of `Selectable` type, the\n\t * {@link ~Model#event:canEditAt `canEditAt` event} is fired with `selectable` normalized to an instance of\n\t * {@link module:engine/model/selection~Selection} or {@link module:engine/model/documentselection~DocumentSelection}\n\t *\n\t * @fires canEditAt\n\t */\n\tpublic canEditAt( selectable: Selectable ): boolean {\n\t\tconst selection = normalizeSelectable( selectable );\n\n\t\treturn this.fire<ModelCanEditAtEvent>( 'canEditAt', [ selection ] )!;\n\t}\n\n\t/**\n\t * Creates a position from the given root and path in that root.\n\t *\n\t * Note: This method is also available as\n\t * {@link module:engine/model/writer~Writer#createPositionFromPath `Writer#createPositionFromPath()`}.\n\t *\n\t * @param root Root of the position.\n\t * @param path Position path. See {@link module:engine/model/position~Position#path}.\n\t * @param stickiness Position stickiness. See {@link module:engine/model/position~PositionStickiness}.\n\t */\n\tpublic createPositionFromPath(\n\t\troot: ModelElement | ModelDocumentFragment,\n\t\tpath: ReadonlyArray<number>,\n\t\tstickiness?: PositionStickiness\n\t): ModelPosition {\n\t\treturn new ModelPosition( root, path, stickiness );\n\t}\n\n\t/**\n\t * Creates position at the given location. The location can be specified as:\n\t *\n\t * * a {@link module:engine/model/position~Position position},\n\t * * a parent element and offset in that element,\n\t * * a parent element and `'end'` (the position will be set at the end of that element),\n\t * * a {@link module:engine/model/item~Item model item} and `'before'` or `'after'`\n\t * (the position will be set before or after the given model item).\n\t *\n\t * This method is a shortcut to other factory methods such as:\n\t *\n\t * * {@link module:engine/model/model~Model#createPositionBefore `createPositionBefore()`},\n\t * * {@link module:engine/model/model~Model#createPositionAfter `createPositionAfter()`}.\n\t *\n\t * Note: This method is also available as\n\t * {@link module:engine/model/writer~Writer#createPositionAt `Writer#createPositionAt()`},\n\t *\n\t * @param itemOrPosition\n\t * @param offset Offset or one of the flags. Used only when first parameter is a {@link module:engine/model/item~Item model item}.\n\t */\n\tpublic createPositionAt(\n\t\titemOrPosition: Item | ModelPosition | ModelDocumentFragment,\n\t\toffset?: PositionOffset\n\t): ModelPosition {\n\t\treturn ModelPosition._createAt( itemOrPosition, offset );\n\t}\n\n\t/**\n\t * Creates a new position after the given {@link module:engine/model/item~Item model item}.\n\t *\n\t * Note: This method is also available as\n\t * {@link module:engine/model/writer~Writer#createPositionAfter `Writer#createPositionAfter()`}.\n\t *\n\t * @param item Item after which the position should be placed.\n\t */\n\tpublic createPositionAfter( item: Item ): ModelPosition {\n\t\treturn ModelPosition._createAfter( item );\n\t}\n\n\t/**\n\t * Creates a new position before the given {@link module:engine/model/item~Item model item}.\n\t *\n\t * Note: This method is also available as\n\t * {@link module:engine/model/writer~Writer#createPositionBefore `Writer#createPositionBefore()`}.\n\t *\n\t * @param item Item before which the position should be placed.\n\t */\n\tpublic createPositionBefore( item: Item ): ModelPosition {\n\t\treturn ModelPosition._createBefore( item );\n\t}\n\n\t/**\n\t * Creates a range spanning from the `start` position to the `end` position.\n\t *\n\t * Note: This method is also available as\n\t * {@link module:engine/model/writer~Writer#createRange `Writer#createRange()`}:\n\t *\n\t * ```ts\n\t * model.change( writer => {\n\t * \tconst range = writer.createRange( start, end );\n\t * } );\n\t * ```\n\t *\n\t * @param start Start position.\n\t * @param end End position. If not set, the range will be collapsed to the `start` position.\n\t */\n\tpublic createRange( start: ModelPosition, end?: ModelPosition ): ModelRange {\n\t\treturn new ModelRange( start, end );\n\t}\n\n\t/**\n\t * Creates a range inside the given element which starts before the first child of\n\t * that element and ends after the last child of that element.\n\t *\n\t * Note: This method is also available as\n\t * {@link module:engine/model/writer~Writer#createRangeIn `Writer#createRangeIn()`}:\n\t *\n\t * ```ts\n\t * model.change( writer => {\n\t * \tconst range = writer.createRangeIn( paragraph );\n\t * } );\n\t * ```\n\t *\n\t * @param element Element which is a parent for the range.\n\t */\n\tpublic createRangeIn( element: ModelElement | ModelDocumentFragment ): ModelRange {\n\t\treturn ModelRange._createIn( element );\n\t}\n\n\t/**\n\t * Creates a range that starts before the given {@link module:engine/model/item~Item model item} and ends after it.\n\t *\n\t * Note: This method is also available on `writer` instance as\n\t * {@link module:engine/model/writer~Writer#createRangeOn `Writer.createRangeOn()`}:\n\t *\n\t * ```ts\n\t * model.change( writer => {\n\t * \tconst range = writer.createRangeOn( paragraph );\n\t * } );\n\t * ```\n\t *\n\t * @param item\n\t */\n\tpublic createRangeOn( item: Item ): ModelRange {\n\t\treturn ModelRange._createOn( item );\n\t}\n\n\t/**\n\t * Creates a new selection instance based on the given {@link module:engine/model/selection~Selectable selectable}\n\t * or creates an empty selection if no arguments were passed.\n\t *\n\t * Note: This method is also available as\n\t * {@link module:engine/model/writer~Writer#createSelection `Writer#createSelection()`}.\n\t *\n\t * ```ts\n\t * // Creates selection at the given offset in the given element.\n\t * const paragraph = writer.createElement( 'paragraph' );\n\t * const selection = writer.createSelection( paragraph, offset );\n\t *\n\t * // Creates a range inside an {@link module:engine/model/element~Element element} which starts before the\n\t * // first child of that element and ends after the last child of that element.\n\t * const selection = writer.createSelection( paragraph, 'in' );\n\t *\n\t * // Creates a range on an {@link module:engine/model/item~Item item} which starts before the item and ends\n\t * // just after the item.\n\t * const selection = writer.createSelection( paragraph, 'on' );\n\t *\n\t * // Additional options (`'backward'`) can be specified as the last argument.\n\t *\n\t * // Creates backward selection.\n\t * const selection = writer.createSelection( element, 'in', { backward: true } );\n\t * ```\n\t *\n\t * See also: {@link #createSelection:SELECTABLE `createSelection( selectable, options )`}.\n\t *\n\t * @label NODE_OFFSET\n\t */\n\tpublic createSelection( selectable: Node, placeOrOffset: PlaceOrOffset, options?: { backward?: boolean } ): ModelSelection;\n\n\t/**\n\t * Creates a new selection instance based on the given {@link module:engine/model/selection~Selectable selectable}\n\t * or creates an empty selection if no arguments were passed.\n\t *\n\t * Note: This method is also available as\n\t * {@link module:engine/model/writer~Writer#createSelection `Writer#createSelection()`}.\n\t *\n\t * ```ts\n\t * // Creates empty selection without ranges.\n\t * const selection = writer.createSelection();\n\t *\n\t * // Creates selection at the given range.\n\t * const range = writer.createRange( start, end );\n\t * const selection = writer.createSelection( range );\n\t *\n\t * // Creates selection at the given ranges\n\t * const ranges = [ writer.createRange( start1, end2 ), writer.createRange( star2, end2 ) ];\n\t * const selection = writer.createSelection( ranges );\n\t *\n\t * // Creates selection from the other selection.\n\t * // Note: It doesn't copies selection attributes.\n\t * const otherSelection = writer.createSelection();\n\t * const selection = writer.createSelection( otherSelection );\n\t *\n\t * // Creates selection from the given document selection.\n\t * // Note: It doesn't copies selection attributes.\n\t * const documentSelection = model.document.selection;\n\t * const selection = writer.createSelection( documentSelection );\n\t *\n\t * // Creates selection at the given position.\n\t * const position = writer.createPositionFromPath( root, path );\n\t * const selection = writer.createSelection( position );\n\t *\n\t * // Additional options (`'backward'`) can be specified as the last argument.\n\t *\n\t * // Creates backward selection.\n\t * const selection = writer.createSelection( range, { backward: true } );\n\t * ```\n\t *\n\t * See also: {@link #createSelection:NODE_OFFSET `createSelection( node, placeOrOffset, options )`}.\n\t *\n\t * @label SELECTABLE\n\t */\n\tpublic createSelection( selectable?: Exclude<Selectable, Node>, options?: { backward?: boolean } ): ModelSelection;\n\n\tpublic createSelection( ...args: ConstructorParameters<typeof ModelSelection> ): ModelSelection {\n\t\treturn new ModelSelection( ...args );\n\t}\n\n\t/**\n\t * Creates a {@link module:engine/model/batch~Batch} instance.\n\t *\n\t * **Note:** In most cases creating a batch instance is not necessary as they are created when using:\n\t *\n\t * * {@link #change `change()`},\n\t * * {@link #enqueueChange `enqueueChange()`}.\n\t *\n\t * @param type {@link module:engine/model/batch~Batch#constructor The type} of the batch.\n\t */\n\tpublic createBatch( type?: BatchType ): Batch {\n\t\treturn new Batch( type );\n\t}\n\n\t/**\n\t * Creates an operation instance from a JSON object (parsed JSON string).\n\t *\n\t * This is an alias for {@link module:engine/model/operation/operationfactory~OperationFactory.fromJSON `OperationFactory.fromJSON()`}.\n\t *\n\t * @param json Deserialized JSON object.\n\t */\n\tpublic createOperationFromJSON( json: unknown ): Operation {\n\t\treturn OperationFactory.fromJSON( json, this.document );\n\t}\n\n\t/**\n\t * Removes all events listeners set by model instance and destroys {@link module:engine/model/document~Document}.\n\t */\n\tpublic destroy(): void {\n\t\tthis.document.destroy();\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * Common part of {@link module:engine/model/model~Model#change} and {@link module:engine/model/model~Model#enqueueChange}\n\t * which calls callbacks and returns array of values returned by these callbacks.\n\t */\n\tprivate _runPendingChanges() {\n\t\tconst ret = [];\n\n\t\tthis.fire( '_beforeChanges' );\n\n\t\ttry {\n\t\t\twhile ( this._pendingChanges.length ) {\n\t\t\t\t// Create a new writer using batch instance created for this chain of changes.\n\t\t\t\tconst currentBatch = this._pendingChanges[ 0 ].batch;\n\t\t\t\tthis._currentWriter = new Writer( this, currentBatch );\n\n\t\t\t\t// Execute changes callback and gather the returned value.\n\t\t\t\tconst callbackReturnValue = this._pendingChanges[ 0 ].callback( this._currentWriter );\n\t\t\t\tret.push( callbackReturnValue );\n\n\t\t\t\tthis.document._handleChangeBlock( this._currentWriter );\n\n\t\t\t\tthis._pendingChanges.shift();\n\t\t\t\tthis._currentWriter = null;\n\t\t\t}\n\t\t} finally {\n\t\t\tthis._pendingChanges.length = 0;\n\t\t\tthis._currentWriter = null;\n\n\t\t\tthis.fire( '_afterChanges' );\n\t\t}\n\n\t\treturn ret;\n\t}\n}\n\n/**\n * Normalizes a selectable to a Selection or DocumentSelection.\n */\nfunction normalizeSelectable(\n\tselectable?: Selectable,\n\tplaceOrOffset?: PlaceOrOffset | null\n): ModelSelection | DocumentSelection | undefined {\n\tif ( !selectable ) {\n\t\treturn;\n\t}\n\n\tif ( selectable instanceof ModelSelection || selectable instanceof DocumentSelection ) {\n\t\treturn selectable;\n\t}\n\n\tif ( selectable instanceof Node ) {\n\t\tif ( placeOrOffset || placeOrOffset === 0 ) {\n\t\t\treturn new ModelSelection( selectable, placeOrOffset );\n\t\t} else if ( selectable.is( 'rootElement' ) ) {\n\t\t\treturn new ModelSelection( selectable, 'in' );\n\t\t} else {\n\t\t\treturn new ModelSelection( selectable, 'on' );\n\t\t}\n\t}\n\n\treturn new ModelSelection( selectable );\n}\n\n/**\n * Fired when entering the outermost {@link module:engine/model/model~Model#enqueueChange} or\n * {@link module:engine/model/model~Model#change} block.\n *\n * @internal\n * @eventName ~Model#_beforeChanges\n */\nexport type BeforeChangesEvent = {\n\tname: '_beforeChanges';\n\targs: [];\n};\n\n/**\n * Fired when leaving the outermost {@link module:engine/model/model~Model#enqueueChange} or\n * {@link module:engine/model/model~Model#change} block.\n *\n * @internal\n * @eventName ~Model#_afterChanges\n */\nexport type AfterChangesEvent = {\n\tname: '_afterChanges';\n\targs: [];\n};\n\n/**\n * Fired every time any {@link module:engine/model/operation/operation~Operation operation} is applied on the model\n * using {@link ~Model#applyOperation}.\n *\n * Note that this event is suitable only for very specific use-cases. Use it if you need to listen to every single operation\n * applied on the document. However, in most cases {@link module:engine/model/document~Document#event:change} should\n * be used.\n *\n * A few callbacks are already added to this event by engine internal classes:\n *\n * * with `highest` priority operation is validated,\n * * with `normal` priority operation is executed,\n * * with `low` priority the {@link module:engine/model/document~Document} updates its version,\n * * with `low` priority {@link module:engine/model/liveposition~LivePosition} and {@link module:engine/model/liverange~LiveRange}\n * update themselves.\n *\n * @eventName ~Model#applyOperation\n * @param args Arguments of the `applyOperation` which is an array with a single element - applied\n * {@link module:engine/model/operation/operation~Operation operation}.\n */\nexport type ModelApplyOperationEvent = DecoratedMethodEvent<Model, 'applyOperation'>;\n\n/**\n * Event fired when {@link ~Model#insertContent} method is called.\n *\n * The {@link ~Model#insertContent default action of that method} is implemented as a\n * listener to this event so it can be fully customized by the features.\n *\n * **Note** The `selectable` parameter for the {@link ~Model#insertContent} is optional. When `undefined` value is passed the method uses\n * {@link module:engine/model/document~Document#selection document selection}.\n *\n * @eventName ~Model#insertContent\n * @param args The arguments passed to the original method.\n */\nexport type ModelInsertContentEvent = {\n\tname: 'insertContent';\n\targs: [ [\n\t\tcontent: Item | ModelDocumentFragment,\n\t\tselectable?: ModelSelection | DocumentSelection,\n\t\t...rest: Array<unknown>\n\t] ];\n\treturn: ModelRange;\n};\n\n/**\n * Event fired when the {@link ~Model#insertObject} method is called.\n *\n * The {@link ~Model#insertObject default action of that method} is implemented as a\n * listener to this event so it can be fully customized by the features.\n *\n * **Note** The `selectable` parameter for the {@link ~Model#insertObject} is optional. When `undefined` value is passed the method uses\n * {@link module:engine/model/document~Document#selection document selection}.\n *\n * @eventName ~Model#insertObject\n * @param args The arguments passed to the original method.\n */\nexport type ModelInsertObjectEvent = {\n\tname: 'insertObject';\n\targs: [ [\n\t\telement: ModelElement,\n\t\tselectable?: ModelSelection | DocumentSelection | null,\n\t\toptions?: {\n\t\t\tfindOptimalPosition?: 'auto' | 'before' | 'after';\n\t\t\tsetSelection?: 'on' | 'after';\n\t\t},\n\t\t...rest: Array<unknown>\n\t] ];\n\treturn: ModelRange;\n};\n\n/**\n * Event fired when {@link ~Model#deleteContent} method is called.\n *\n * The {@link ~Model#deleteContent default action of that method} is implemented as a\n * listener to this event, so it can be fully customized by the features.\n *\n * @eventName ~Model#deleteContent\n * @param args The arguments passed to the original method.\n */\nexport type ModelDeleteContentEvent = DecoratedMethodEvent<Model, 'deleteContent'>;\n\n/**\n * Event fired when {@link ~Model#modifySelection} method is called.\n *\n * The {@link ~Model#modifySelection default action of that method} is implemented as a\n * listener to this event, so it can be fully customized by the features.\n *\n * @eventName ~Model#modifySelection\n * @param args The arguments passed to the original method.\n */\nexport type ModelModifySelectionEvent = DecoratedMethodEvent<Model, 'modifySelection'>;\n\n/**\n * Event fired when {@link ~Model#getSelectedContent} method is called.\n *\n * The {@link ~Model#getSelectedContent default action of that method} is implemented as a\n * listener to this event, so it can be fully customized by the features.\n *\n * @eventName ~Model#getSelectedContent\n * @param args The arguments passed to the original method.\n */\nexport type ModelGetSelectedContentEvent = DecoratedMethodEvent<Model, 'getSelectedContent'>;\n\n/**\n * Event fired when {@link ~Model#canEditAt} method is called.\n *\n * The {@link ~Model#canEditAt default action of that method} is implemented as a\n * listener to this event, so it can be fully customized by the features.\n *\n * Although the original method accepts any parameter of `Selectable` type, this event is fired with `selectable` normalized\n * to an instance of {@link module:engine/model/selection~Selection} or {@link module:engine/model/documentselection~DocumentSelection}.\n *\n * @eventName ~Model#canEditAt\n * @param args The arguments passed to the original method.\n */\nexport type ModelCanEditAtEvent = {\n\tname: 'canEditAt';\n\targs: [ [\n\t\tselectable?: ModelSelection | DocumentSelection\n\t] ];\n\treturn: boolean;\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/clickobserver\n */\n\nimport DomEventObserver from './domeventobserver';\nimport type DomEventData from './domeventdata';\nimport type { BubblingEvent } from './bubblingemittermixin';\n\n/**\n * {@link module:engine/view/document~Document#event:click Click} event observer.\n *\n * Note that this observer is not available by default. To make it available it needs to be added to\n * {@link module:engine/view/view~View view controller} by a {@link module:engine/view/view~View#addObserver} method.\n */\nexport default class ClickObserver extends DomEventObserver<'click'> {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic readonly domEventType = 'click' as const;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic onDomEvent( domEvent: MouseEvent ): void {\n\t\tthis.fire( domEvent.type, domEvent );\n\t}\n}\n\n/**\n * Fired when one of the editables has been clicked.\n *\n * Introduced by {@link module:engine/view/observer/clickobserver~ClickObserver}.\n *\n * Note that this event is not available by default. To make it available\n * {@link module:engine/view/observer/clickobserver~ClickObserver} needs to be added\n * to {@link module:engine/view/view~View} by a {@link module:engine/view/view~View#addObserver} method.\n *\n * @see module:engine/view/observer/clickobserver~ClickObserver\n * @eventName module:engine/view/document~Document#click\n * @param data Event data.\n */\nexport type ViewDocumentClickEvent = BubblingEvent<{\n\tname: 'click';\n\targs: [ data: DomEventData<MouseEvent> ];\n}>;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/observer/mouseobserver\n */\n\nimport DomEventObserver from './domeventobserver';\nimport type DomEventData from './domeventdata';\n\n/**\n * Mouse events observer.\n *\n * Note that this observer is not available by default. To make it available it needs to be added to\n * {@link module:engine/view/view~View} by {@link module:engine/view/view~View#addObserver} method.\n */\nexport default class MouseObserver extends DomEventObserver<'mousedown' | 'mouseup' | 'mouseover' | 'mouseout'> {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic readonly domEventType = [ 'mousedown', 'mouseup', 'mouseover', 'mouseout' ] as const;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic onDomEvent( domEvent: MouseEvent ): void {\n\t\tthis.fire( domEvent.type, domEvent );\n\t}\n}\n\n/**\n * Fired when the mouse button is pressed down on one of the editing roots of the editor.\n *\n * Introduced by {@link module:engine/view/observer/mouseobserver~MouseObserver}.\n *\n * Note that this event is not available by default. To make it available, {@link module:engine/view/observer/mouseobserver~MouseObserver}\n * needs to be added to {@link module:engine/view/view~View} by the {@link module:engine/view/view~View#addObserver} method.\n *\n * @see module:engine/view/observer/mouseobserver~MouseObserver\n * @eventName module:engine/view/document~Document#mousedown\n * @param data The event data.\n */\nexport type ViewDocumentMouseDownEvent = {\n\tname: 'mousedown';\n\targs: [ data: DomEventData<MouseEvent> ];\n};\n\n/**\n * Fired when the mouse button is released over one of the editing roots of the editor.\n *\n * Introduced by {@link module:engine/view/observer/mouseobserver~MouseObserver}.\n *\n * Note that this event is not available by default. To make it available, {@link module:engine/view/observer/mouseobserver~MouseObserver}\n * needs to be added to {@link module:engine/view/view~View} by the {@link module:engine/view/view~View#addObserver} method.\n *\n * @see module:engine/view/observer/mouseobserver~MouseObserver\n * @eventName module:engine/view/document~Document#mouseup\n * @param data The event data.\n */\nexport type ViewDocumentMouseUpEvent = {\n\tname: 'mouseup';\n\targs: [ data: DomEventData<MouseEvent> ];\n};\n\n/**\n * Fired when the mouse is over one of the editing roots of the editor.\n *\n * Introduced by {@link module:engine/view/observer/mouseobserver~MouseObserver}.\n *\n * Note that this event is not available by default. To make it available, {@link module:engine/view/observer/mouseobserver~MouseObserver}\n * needs to be added to {@link module:engine/view/view~View} by the {@link module:engine/view/view~View#addObserver} method.\n *\n * @see module:engine/view/observer/mouseobserver~MouseObserver\n * @eventName module:engine/view/document~Document#mouseover\n * @param data The event data.\n */\nexport type ViewDocumentMouseOverEvent = {\n\tname: 'mouseover';\n\targs: [ data: DomEventData<MouseEvent> ];\n};\n\n/**\n * Fired when the mouse is moved out of the one of the editing roots of the editor.\n *\n * Introduced by {@link module:engine/view/observer/mouseobserver~MouseObserver}.\n *\n * Note that this event is not available by default. To make it available, {@link module:engine/view/observer/mouseobserver~MouseObserver}\n * needs to be added to {@link module:engine/view/view~View} by the {@link module:engine/view/view~View#addObserver} method.\n *\n * @see module:engine/view/observer/mouseobserver~MouseObserver\n * @eventName module:engine/view/document~Document#mouseout\n * @param data The event data.\n */\nexport type ViewDocumentMouseOutEvent = {\n\tname: 'mouseout';\n\targs: [ data: DomEventData<MouseEvent> ];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/upcastwriter\n */\n\nimport DocumentFragment from './documentfragment';\nimport Element, { type ElementAttributes } from './element';\nimport Text from './text';\nimport { isPlainObject } from 'lodash-es';\nimport Position, { type PositionOffset } from './position';\nimport Range from './range';\nimport Selection, {\n\ttype PlaceOrOffset,\n\ttype Selectable,\n\ttype SelectionOptions\n} from './selection';\n\nimport type Document from './document';\nimport type Item from './item';\nimport type Node from './node';\n\n/**\n * View upcast writer. It provides a set of methods used to manipulate non-semantic view trees.\n *\n * It should be used only while working on a non-semantic view\n * (e.g. a view created from HTML string on paste).\n * To manipulate a view which was or is being downcasted from the the model use the\n * {@link module:engine/view/downcastwriter~DowncastWriter downcast writer}.\n *\n * Read more about changing the view in the {@glink framework/architecture/editing-engine#changing-the-view Changing the view}\n * section of the {@glink framework/architecture/editing-engine Editing engine architecture} guide.\n *\n * Unlike `DowncastWriter`, which is available in the {@link module:engine/view/view~View#change `View#change()`} block,\n * `UpcastWriter` can be created wherever you need it:\n *\n * ```ts\n * const writer = new UpcastWriter( viewDocument );\n * const text = writer.createText( 'foo!' );\n *\n * writer.appendChild( text, someViewElement );\n * ```\n */\nexport default class UpcastWriter {\n\t/**\n\t * The view document instance in which this upcast writer operates.\n\t */\n\tpublic readonly document: Document;\n\n\t/**\n\t * @param document The view document instance in which this upcast writer operates.\n\t */\n\tconstructor( document: Document ) {\n\t\tthis.document = document;\n\t}\n\n\t/**\n\t * Creates a new {@link module:engine/view/documentfragment~DocumentFragment} instance.\n\t *\n\t * @param children A list of nodes to be inserted into the created document fragment.\n\t * @returns The created document fragment.\n\t */\n\tpublic createDocumentFragment( children?: Node | Iterable<Node> ): DocumentFragment {\n\t\treturn new DocumentFragment( this.document, children );\n\t}\n\n\t/**\n\t * Creates a new {@link module:engine/view/element~Element} instance.\n\t *\n\t * Attributes can be passed in various formats:\n\t *\n\t * ```ts\n\t * upcastWriter.createElement( 'div', { class: 'editor', contentEditable: 'true' } ); // object\n\t * upcastWriter.createElement( 'div', [ [ 'class', 'editor' ], [ 'contentEditable', 'true' ] ] ); // map-like iterator\n\t * upcastWriter.createElement( 'div', mapOfAttributes ); // map\n\t * ```\n\t *\n\t * @param name Node name.\n\t * @param attrs Collection of attributes.\n\t * @param children A list of nodes to be inserted into created element.\n\t * @returns Created element.\n\t */\n\tpublic createElement(\n\t\tname: string,\n\t\tattrs?: ElementAttributes,\n\t\tchildren?: Node | Iterable<Node>\n\t): Element {\n\t\treturn new Element( this.document, name, attrs, children );\n\t}\n\n\t/**\n\t * Creates a new {@link module:engine/view/text~Text} instance.\n\t *\n\t * @param data The text's data.\n\t * @returns The created text node.\n\t */\n\tpublic createText( data: string ): Text {\n\t\treturn new Text( this.document, data );\n\t}\n\n\t/**\n\t * Clones the provided element.\n\t *\n\t * @see module:engine/view/element~Element#_clone\n\t * @param element Element to be cloned.\n\t * @param deep If set to `true` clones element and all its children recursively. When set to `false`,\n\t * element will be cloned without any children.\n\t * @returns Clone of this element.\n\t */\n\tpublic clone( element: Element, deep: boolean = false ): Element {\n\t\treturn element._clone( deep );\n\t}\n\n\t/**\n\t * Appends a child node or a list of child nodes at the end of this node\n\t * and sets the parent of these nodes to this element.\n\t *\n\t * @see module:engine/view/element~Element#_appendChild\n\t * @param items Items to be inserted.\n\t * @param element Element to which items will be appended.\n\t * @returns Number of appended nodes.\n\t */\n\tpublic appendChild( items: Item | string | Iterable<Item | string>, element: Element | DocumentFragment ): number {\n\t\treturn element._appendChild( items );\n\t}\n\n\t/**\n\t * Inserts a child node or a list of child nodes on the given index and sets the parent of these nodes to\n\t * this element.\n\t *\n\t * @see module:engine/view/element~Element#_insertChild\n\t * @param index Offset at which nodes should be inserted.\n\t * @param items Items to be inserted.\n\t * @param element Element to which items will be inserted.\n\t * @returns Number of inserted nodes.\n\t */\n\tpublic insertChild( index: number, items: Item | Iterable<Item>, element: Element | DocumentFragment ): number {\n\t\treturn element._insertChild( index, items );\n\t}\n\n\t/**\n\t * Removes the given number of child nodes starting at the given index and set the parent of these nodes to `null`.\n\t *\n\t * @see module:engine/view/element~Element#_removeChildren\n\t * @param index Offset from which nodes will be removed.\n\t * @param howMany Number of nodes to remove.\n\t * @param element Element which children will be removed.\n\t * @returns The array containing removed nodes.\n\t */\n\tpublic removeChildren( index: number, howMany: number, element: Element | DocumentFragment ): Array<Node> {\n\t\treturn element._removeChildren( index, howMany );\n\t}\n\n\t/**\n\t * Removes given element from the view structure. Will not have effect on detached elements.\n\t *\n\t * @param element Element which will be removed.\n\t * @returns The array containing removed nodes.\n\t */\n\tpublic remove( element: Node ): Array<Node> {\n\t\tconst parent = element.parent;\n\n\t\tif ( parent ) {\n\t\t\treturn this.removeChildren( parent.getChildIndex( element ), 1, parent );\n\t\t}\n\n\t\treturn [];\n\t}\n\n\t/**\n\t * Replaces given element with the new one in the view structure. Will not have effect on detached elements.\n\t *\n\t * @param oldElement Element which will be replaced.\n\t * @param newElement Element which will be inserted in the place of the old element.\n\t * @returns Whether old element was successfully replaced.\n\t */\n\tpublic replace( oldElement: Element, newElement: Element ): boolean {\n\t\tconst parent = oldElement.parent;\n\n\t\tif ( parent ) {\n\t\t\tconst index = parent.getChildIndex( oldElement )!;\n\n\t\t\tthis.removeChildren( index, 1, parent );\n\t\t\tthis.insertChild( index, newElement, parent );\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Removes given element from view structure and places its children in its position.\n\t * It does nothing if element has no parent.\n\t *\n\t * @param element Element to unwrap.\n\t */\n\tpublic unwrapElement( element: Element ): void {\n\t\tconst parent = element.parent;\n\n\t\tif ( parent ) {\n\t\t\tconst index = parent.getChildIndex( element )!;\n\n\t\t\tthis.remove( element );\n\t\t\tthis.insertChild( index, element.getChildren(), parent );\n\t\t}\n\t}\n\n\t/**\n\t * Renames element by creating a copy of a given element but with its name changed and then moving contents of the\n\t * old element to the new one.\n\t *\n\t * Since this function creates a new element and removes the given one, the new element is returned to keep reference.\n\t *\n\t * @param newName New element name.\n\t * @param element Element to be renamed.\n\t * @returns New element or null if the old element was not replaced (happens for detached elements).\n\t */\n\tpublic rename( newName: string, element: Element ): Element | null {\n\t\tconst newElement = new Element( this.document, newName, element.getAttributes(), element.getChildren() );\n\n\t\treturn this.replace( element, newElement ) ? newElement : null;\n\t}\n\n\t/**\n\t * Adds or overwrites element's attribute with a specified key and value.\n\t *\n\t * ```ts\n\t * writer.setAttribute( 'href', 'http://ckeditor.com', linkElement );\n\t * ```\n\t *\n\t * @see module:engine/view/element~Element#_setAttribute\n\t * @param key Attribute key.\n\t * @param value Attribute value.\n\t * @param element Element for which attribute will be set.\n\t */\n\tpublic setAttribute( key: string, value: unknown, element: Element ): void {\n\t\telement._setAttribute( key, value );\n\t}\n\n\t/**\n\t * Removes attribute from the element.\n\t *\n\t * ```ts\n\t * writer.removeAttribute( 'href', linkElement );\n\t * ```\n\t *\n\t * @see module:engine/view/element~Element#_removeAttribute\n\t * @param key Attribute key.\n\t * @param element Element from which attribute will be removed.\n\t */\n\tpublic removeAttribute( key: string, element: Element ): void {\n\t\telement._removeAttribute( key );\n\t}\n\n\t/**\n\t * Adds specified class to the element.\n\t *\n\t * ```ts\n\t * writer.addClass( 'foo', linkElement );\n\t * writer.addClass( [ 'foo', 'bar' ], linkElement );\n\t * ```\n\t *\n\t * @see module:engine/view/element~Element#_addClass\n\t * @param className Single class name or array of class names which will be added.\n\t * @param element Element for which class will be added.\n\t */\n\tpublic addClass( className: string | Array<string>, element: Element ): void {\n\t\telement._addClass( className );\n\t}\n\n\t/**\n\t * Removes specified class from the element.\n\t *\n\t * ```ts\n\t * writer.removeClass( 'foo', linkElement );\n\t * writer.removeClass( [ 'foo', 'bar' ], linkElement );\n\t * ```\n\t *\n\t * @see module:engine/view/element~Element#_removeClass\n\t * @param className Single class name or array of class names which will be removed.\n\t * @param element Element from which class will be removed.\n\t */\n\tpublic removeClass( className: string | Array<string>, element: Element ): void {\n\t\telement._removeClass( className );\n\t}\n\n\t/**\n\t * Adds style to the element.\n\t *\n\t * ```ts\n\t * writer.setStyle( 'color', 'red', element );\n\t * ```\n\t *\n\t * **Note**: This method can work with normalized style names if\n\t * {@link module:engine/controller/datacontroller~DataController#addStyleProcessorRules a particular style processor rule is enabled}.\n\t * See {@link module:engine/view/stylesmap~StylesMap#set `StylesMap#set()`} for details.\n\t *\n\t * @see module:engine/view/element~Element#_setStyle\n\t * @label KEY_VALUE\n\t * @param property Property name.\n\t * @param value Value to set.\n\t * @param element Element for which style will be added.\n\t */\n\tpublic setStyle( property: string, value: string, element: Element ): void;\n\n\t/**\n\t * Adds style to the element.\n\t *\n\t * ```ts\n\t * writer.setStyle( {\n\t * \tcolor: 'red',\n\t * \tposition: 'fixed'\n\t * }, element );\n\t * ```\n\t *\n\t * **Note**: This method can work with normalized style names if\n\t * {@link module:engine/controller/datacontroller~DataController#addStyleProcessorRules a particular style processor rule is enabled}.\n\t * See {@link module:engine/view/stylesmap~StylesMap#set `StylesMap#set()`} for details.\n\t *\n\t * @see module:engine/view/element~Element#_setStyle\n\t * @label OBJECT\n\t * @param properties Object with key - value pairs.\n\t * @param element Element for which style will be added.\n\t */\n\tpublic setStyle( properties: Record<string, string>, element: Element ): void;\n\n\tpublic setStyle( property: string | Record<string, string>, valueOrElement: string | Element, element?: Element ): void {\n\t\tif ( isPlainObject( property ) && element === undefined ) {\n\t\t\t( valueOrElement as Element )._setStyle( property as Record<string, string> );\n\t\t} else {\n\t\t\telement!._setStyle( property as string, valueOrElement as string );\n\t\t}\n\t}\n\n\t/**\n\t * Removes specified style from the element.\n\t *\n\t * ```ts\n\t * writer.removeStyle( 'color', element ); // Removes 'color' style.\n\t * writer.removeStyle( [ 'color', 'border-top' ], element ); // Removes both 'color' and 'border-top' styles.\n\t * ```\n\t *\n\t * **Note**: This method can work with normalized style names if\n\t * {@link module:engine/controller/datacontroller~DataController#addStyleProcessorRules a particular style processor rule is enabled}.\n\t * See {@link module:engine/view/stylesmap~StylesMap#remove `StylesMap#remove()`} for details.\n\t *\n\t * @see module:engine/view/element~Element#_removeStyle\n\t * @param property Style property name or names to be removed.\n\t * @param element Element from which style will be removed.\n\t */\n\tpublic removeStyle( property: string | Array<string>, element: Element ): void {\n\t\telement._removeStyle( property );\n\t}\n\n\t/**\n\t * Sets a custom property on element. Unlike attributes, custom properties are not rendered to the DOM,\n\t * so they can be used to add special data to elements.\n\t *\n\t * @see module:engine/view/element~Element#_setCustomProperty\n\t * @param key Custom property name/key.\n\t * @param value Custom property value to be stored.\n\t * @param element Element for which custom property will be set.\n\t */\n\tpublic setCustomProperty( key: string | symbol, value: unknown, element: Element | DocumentFragment ): void {\n\t\telement._setCustomProperty( key, value );\n\t}\n\n\t/**\n\t * Removes a custom property stored under the given key.\n\t *\n\t * @see module:engine/view/element~Element#_removeCustomProperty\n\t * @param key Name/key of the custom property to be removed.\n\t * @param element Element from which the custom property will be removed.\n\t * @returns Returns true if property was removed.\n\t */\n\tpublic removeCustomProperty( key: string | symbol, element: Element | DocumentFragment ): boolean {\n\t\treturn element._removeCustomProperty( key );\n\t}\n\n\t/**\n\t * Creates position at the given location. The location can be specified as:\n\t *\n\t * * a {@link module:engine/view/position~Position position},\n\t * * parent element and offset (offset defaults to `0`),\n\t * * parent element and `'end'` (sets position at the end of that element),\n\t * * {@link module:engine/view/item~Item view item} and `'before'` or `'after'` (sets position before or after given view item).\n\t *\n\t * This method is a shortcut to other constructors such as:\n\t *\n\t * * {@link #createPositionBefore},\n\t * * {@link #createPositionAfter},\n\t *\n\t * @param offset Offset or one of the flags. Used only when first parameter is a {@link module:engine/view/item~Item view item}.\n\t */\n\tpublic createPositionAt( itemOrPosition: Item | Position, offset?: PositionOffset ): Position {\n\t\treturn Position._createAt( itemOrPosition, offset );\n\t}\n\n\t/**\n\t * Creates a new position after given view item.\n\t *\n\t * @param item View item after which the position should be located.\n\t */\n\tpublic createPositionAfter( item: Item ): Position {\n\t\treturn Position._createAfter( item );\n\t}\n\n\t/**\n\t * Creates a new position before given view item.\n\t *\n\t * @param item View item before which the position should be located.\n\t */\n\tpublic createPositionBefore( item: Item ): Position {\n\t\treturn Position._createBefore( item );\n\t}\n\n\t/**\n\t * Creates a range spanning from `start` position to `end` position.\n\t *\n\t * **Note:** This factory method creates it's own {@link module:engine/view/position~Position} instances basing on passed values.\n\t *\n\t * @param start Start position.\n\t * @param end End position. If not set, range will be collapsed at `start` position.\n\t */\n\tpublic createRange( start: Position, end: Position ): Range {\n\t\treturn new Range( start, end );\n\t}\n\n\t/**\n\t * Creates a range that starts before given {@link module:engine/view/item~Item view item} and ends after it.\n\t */\n\tpublic createRangeOn( item: Item ): Range {\n\t\treturn Range._createOn( item );\n\t}\n\n\t/**\n\t * Creates a range inside an {@link module:engine/view/element~Element element} which starts before the first child of\n\t * that element and ends after the last child of that element.\n\t *\n\t * @param element Element which is a parent for the range.\n\t */\n\tpublic createRangeIn( element: Element | DocumentFragment ): Range {\n\t\treturn Range._createIn( element );\n\t}\n\n\t/**\n\t * Creates a new {@link module:engine/view/selection~Selection} instance.\n\t *\n\t * ```ts\n\t * // Creates collapsed selection at the position of given item and offset.\n\t * const paragraph = writer.createContainerElement( 'paragraph' );\n\t * const selection = writer.createSelection( paragraph, offset );\n\t *\n\t * // Creates a range inside an {@link module:engine/view/element~Element element} which starts before the\n\t * // first child of that element and ends after the last child of that element.\n\t * const selection = writer.createSelection( paragraph, 'in' );\n\t *\n\t * // Creates a range on an {@link module:engine/view/item~Item item} which starts before the item and ends\n\t * // just after the item.\n\t * const selection = writer.createSelection( paragraph, 'on' );\n\t * ```\n\t *\n\t * `Selection`'s constructor allow passing additional options (`backward`, `fake` and `label`) as the last argument.\n\t *\n\t * ```ts\n\t * // Creates backward selection.\n\t * const selection = writer.createSelection( element, 'in', { backward: true } );\n\t * ```\n\t *\n\t * Fake selection does not render as browser native selection over selected elements and is hidden to the user.\n\t * This way, no native selection UI artifacts are displayed to the user and selection over elements can be\n\t * represented in other way, for example by applying proper CSS class.\n\t *\n\t * Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM\n\t * (and be properly handled by screen readers).\n\t *\n\t * ```ts\n\t * // Creates fake selection with label.\n\t * const selection = writer.createSelection( element, 'in', { fake: true, label: 'foo' } );\n\t * ```\n\t *\n\t * See also: {@link #createSelection:SELECTABLE `createSelection( selectable, options )`}.\n\t *\n\t * @label NODE_OFFSET\n\t */\n\tpublic createSelection( selectable: Node, placeOrOffset: PlaceOrOffset, options?: SelectionOptions ): Selection;\n\n\t/**\n\t * Creates a new {@link module:engine/view/selection~Selection} instance.\n\t *\n\t * ```ts\n\t * // Creates empty selection without ranges.\n\t * const selection = writer.createSelection();\n\t *\n\t * // Creates selection at the given range.\n\t * const range = writer.createRange( start, end );\n\t * const selection = writer.createSelection( range );\n\t *\n\t * // Creates selection at the given ranges\n\t * const ranges = [ writer.createRange( start1, end2 ), writer.createRange( star2, end2 ) ];\n\t * const selection = writer.createSelection( ranges );\n\t *\n\t * // Creates selection from the other selection.\n\t * const otherSelection = writer.createSelection();\n\t * const selection = writer.createSelection( otherSelection );\n\t *\n\t * // Creates selection from the document selection.\n\t * const selection = writer.createSelection( editor.editing.view.document.selection );\n\t *\n\t * // Creates selection at the given position.\n\t * const position = writer.createPositionFromPath( root, path );\n\t * const selection = writer.createSelection( position );\n\t * ```\n\t *\n\t * `Selection`'s constructor allow passing additional options (`backward`, `fake` and `label`) as the last argument.\n\t *\n\t * ```ts\n\t * // Creates backward selection.\n\t * const selection = writer.createSelection( range, { backward: true } );\n\t * ```\n\t *\n\t * Fake selection does not render as browser native selection over selected elements and is hidden to the user.\n\t * This way, no native selection UI artifacts are displayed to the user and selection over elements can be\n\t * represented in other way, for example by applying proper CSS class.\n\t *\n\t * Additionally fake's selection label can be provided. It will be used to describe fake selection in DOM\n\t * (and be properly handled by screen readers).\n\t *\n\t * ```ts\n\t * // Creates fake selection with label.\n\t * const selection = writer.createSelection( range, { fake: true, label: 'foo' } );\n\t * ```\n\t *\n\t * See also: {@link #createSelection:NODE_OFFSET `createSelection( node, placeOrOffset, options )`}.\n\t *\n\t * @label SELECTABLE\n\t */\n\tpublic createSelection( selectable?: Exclude<Selectable, Node>, options?: SelectionOptions ): Selection;\n\n\tpublic createSelection( ...args: ConstructorParameters<typeof Selection> ): Selection {\n\t\treturn new Selection( ...args );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/styles/utils\n */\n\nimport type { BoxSides, PropertyDescriptor, StyleValue } from '../stylesmap';\n\nconst HEX_COLOR_REGEXP = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;\nconst RGB_COLOR_REGEXP = /^rgb\\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}[0-9]{1,3}[ %]?\\)$/i;\nconst RGBA_COLOR_REGEXP = /^rgba\\([ ]?([0-9]{1,3}[ %]?,[ ]?){3}(1|[0-9]+%|[0]?\\.?[0-9]+)\\)$/i;\nconst HSL_COLOR_REGEXP = /^hsl\\([ ]?([0-9]{1,3}[ %]?[,]?[ ]*){3}(1|[0-9]+%|[0]?\\.?[0-9]+)?\\)$/i;\nconst HSLA_COLOR_REGEXP = /^hsla\\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}(1|[0-9]+%|[0]?\\.?[0-9]+)\\)$/i;\n\n// Note: This regexp hardcodes a single level of nested () for values such as `calc( var( ...) + ...)`.\n// If this gets more complex, a proper parser should be used instead.\nconst CSS_SHORTHAND_VALUE_REGEXP = /\\w+\\((?:[^()]|\\([^()]*\\))*\\)|\\S+/gi;\n\nconst COLOR_NAMES = new Set( [\n\t// CSS Level 1\n\t'black', 'silver', 'gray', 'white', 'maroon', 'red', 'purple', 'fuchsia',\n\t'green', 'lime', 'olive', 'yellow', 'navy', 'blue', 'teal', 'aqua',\n\t// CSS Level 2 (Revision 1)\n\t'orange',\n\t// CSS Color Module Level 3\n\t'aliceblue', 'antiquewhite', 'aquamarine', 'azure', 'beige', 'bisque', 'blanchedalmond', 'blueviolet', 'brown',\n\t'burlywood', 'cadetblue', 'chartreuse', 'chocolate', 'coral', 'cornflowerblue', 'cornsilk', 'crimson', 'cyan',\n\t'darkblue', 'darkcyan', 'darkgoldenrod', 'darkgray', 'darkgreen', 'darkgrey', 'darkkhaki', 'darkmagenta',\n\t'darkolivegreen', 'darkorange', 'darkorchid', 'darkred', 'darksalmon', 'darkseagreen', 'darkslateblue',\n\t'darkslategray', 'darkslategrey', 'darkturquoise', 'darkviolet', 'deeppink', 'deepskyblue', 'dimgray', 'dimgrey',\n\t'dodgerblue', 'firebrick', 'floralwhite', 'forestgreen', 'gainsboro', 'ghostwhite', 'gold', 'goldenrod',\n\t'greenyellow', 'grey', 'honeydew', 'hotpink', 'indianred', 'indigo', 'ivory', 'khaki', 'lavender', 'lavenderblush',\n\t'lawngreen', 'lemonchiffon', 'lightblue', 'lightcoral', 'lightcyan', 'lightgoldenrodyellow', 'lightgray',\n\t'lightgreen', 'lightgrey', 'lightpink', 'lightsalmon', 'lightseagreen', 'lightskyblue', 'lightslategray',\n\t'lightslategrey', 'lightsteelblue', 'lightyellow', 'limegreen', 'linen', 'magenta', 'mediumaquamarine',\n\t'mediumblue', 'mediumorchid', 'mediumpurple', 'mediumseagreen', 'mediumslateblue', 'mediumspringgreen',\n\t'mediumturquoise', 'mediumvioletred', 'midnightblue', 'mintcream', 'mistyrose', 'moccasin', 'navajowhite',\n\t'oldlace', 'olivedrab', 'orangered', 'orchid', 'palegoldenrod', 'palegreen', 'paleturquoise', 'palevioletred',\n\t'papayawhip', 'peachpuff', 'peru', 'pink', 'plum', 'powderblue', 'rosybrown', 'royalblue', 'saddlebrown', 'salmon',\n\t'sandybrown', 'seagreen', 'seashell', 'sienna', 'skyblue', 'slateblue', 'slategray', 'slategrey', 'snow',\n\t'springgreen', 'steelblue', 'tan', 'thistle', 'tomato', 'turquoise', 'violet', 'wheat', 'whitesmoke', 'yellowgreen',\n\t// CSS Color Module Level 3 (System Colors)\n\t'activeborder', 'activecaption', 'appworkspace', 'background', 'buttonface', 'buttonhighlight', 'buttonshadow',\n\t'buttontext', 'captiontext', 'graytext', 'highlight', 'highlighttext', 'inactiveborder', 'inactivecaption',\n\t'inactivecaptiontext', 'infobackground', 'infotext', 'menu', 'menutext', 'scrollbar', 'threeddarkshadow',\n\t'threedface', 'threedhighlight', 'threedlightshadow', 'threedshadow', 'window', 'windowframe', 'windowtext',\n\t// CSS Color Module Level 4\n\t'rebeccapurple',\n\t// Keywords\n\t'currentcolor', 'transparent'\n] );\n\n/**\n * Checks if string contains [color](https://developer.mozilla.org/en-US/docs/Web/CSS/color) CSS value.\n *\n * ```ts\n * isColor( '#f00' );\t\t\t\t\t\t// true\n * isColor( '#AA00BB33' );\t\t\t\t\t// true\n * isColor( 'rgb(0, 0, 250)' );\t\t\t\t// true\n * isColor( 'hsla(240, 100%, 50%, .7)' );\t// true\n * isColor( 'deepskyblue' );\t\t\t\t// true\n * ```\n *\n * **Note**: It does not support CSS Level 4 whitespace syntax, system colors and radius values for HSL colors.\n */\nexport function isColor( string: string ): boolean {\n\t// As far as I was able to test checking some pre-conditions is faster than joining each test with ||.\n\tif ( string.startsWith( '#' ) ) {\n\t\treturn HEX_COLOR_REGEXP.test( string );\n\t}\n\n\tif ( string.startsWith( 'rgb' ) ) {\n\t\treturn RGB_COLOR_REGEXP.test( string ) || RGBA_COLOR_REGEXP.test( string );\n\t}\n\n\tif ( string.startsWith( 'hsl' ) ) {\n\t\treturn HSL_COLOR_REGEXP.test( string ) || HSLA_COLOR_REGEXP.test( string );\n\t}\n\n\t// Array check > RegExp test.\n\treturn COLOR_NAMES.has( string.toLowerCase() );\n}\n\nconst lineStyleValues = [ 'none', 'hidden', 'dotted', 'dashed', 'solid', 'double', 'groove', 'ridge', 'inset', 'outset' ];\n\n/**\n * Checks if string contains [line style](https://developer.mozilla.org/en-US/docs/Web/CSS/border-style) CSS value.\n */\nexport function isLineStyle( string: string ): boolean {\n\treturn lineStyleValues.includes( string );\n}\n\nconst lengthRegExp = /^([+-]?[0-9]*([.][0-9]+)?(px|cm|mm|in|pc|pt|ch|em|ex|rem|vh|vw|vmin|vmax)|0)$/;\n\n/**\n * Checks if string contains [length](https://developer.mozilla.org/en-US/docs/Web/CSS/length) CSS value.\n */\nexport function isLength( string: string ): boolean {\n\treturn lengthRegExp.test( string );\n}\n\nconst PERCENTAGE_VALUE_REGEXP = /^[+-]?[0-9]*([.][0-9]+)?%$/;\n\n/**\n * Checks if string contains [percentage](https://developer.mozilla.org/en-US/docs/Web/CSS/percentage) CSS value.\n */\nexport function isPercentage( string: string ): boolean {\n\treturn PERCENTAGE_VALUE_REGEXP.test( string );\n}\n\nconst repeatValues = [ 'repeat-x', 'repeat-y', 'repeat', 'space', 'round', 'no-repeat' ];\n\n/**\n * Checks if string contains [background repeat](https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat) CSS value.\n */\nexport function isRepeat( string: string ): boolean {\n\treturn repeatValues.includes( string );\n}\n\nconst positionValues = [ 'center', 'top', 'bottom', 'left', 'right' ];\n\n/**\n * Checks if string contains [background position](https://developer.mozilla.org/en-US/docs/Web/CSS/background-position) CSS value.\n */\nexport function isPosition( string: string ): boolean {\n\treturn positionValues.includes( string );\n}\n\nconst attachmentValues = [ 'fixed', 'scroll', 'local' ];\n\n/**\n * Checks if string contains [background attachment](https://developer.mozilla.org/en-US/docs/Web/CSS/background-attachment) CSS value.\n */\nexport function isAttachment( string: string ): boolean {\n\treturn attachmentValues.includes( string );\n}\n\nconst urlRegExp = /^url\\(/;\n\n/**\n * Checks if string contains [URL](https://developer.mozilla.org/en-US/docs/Web/CSS/url) CSS value.\n */\nexport function isURL( string: string ): boolean {\n\treturn urlRegExp.test( string );\n}\n\n/**\n * Parses box sides as individual values.\n */\nexport function getBoxSidesValues( value: string = '' ): BoxSides {\n\tif ( value === '' ) {\n\t\treturn { top: undefined, right: undefined, bottom: undefined, left: undefined };\n\t}\n\n\tconst values = getShorthandValues( value );\n\n\tconst top = values[ 0 ];\n\tconst bottom = values[ 2 ] || top;\n\tconst right = values[ 1 ] || top;\n\tconst left = values[ 3 ] || right;\n\n\treturn { top, bottom, right, left };\n}\n\n/**\n * Default reducer for CSS properties that concerns edges of a box\n * [shorthand](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties) notations:\n *\n * ```ts\n * stylesProcessor.setReducer( 'padding', getBoxSidesValueReducer( 'padding' ) );\n * ```\n */\nexport function getBoxSidesValueReducer( styleShorthand: string ) {\n\treturn ( value: StyleValue ): Array<PropertyDescriptor> => {\n\t\tconst { top, right, bottom, left } = value as BoxSides;\n\n\t\tconst reduced: Array<PropertyDescriptor> = [];\n\n\t\tif ( ![ top, right, left, bottom ].every( value => !!value ) ) {\n\t\t\tif ( top ) {\n\t\t\t\treduced.push( [ styleShorthand + '-top', top ] );\n\t\t\t}\n\n\t\t\tif ( right ) {\n\t\t\t\treduced.push( [ styleShorthand + '-right', right ] );\n\t\t\t}\n\n\t\t\tif ( bottom ) {\n\t\t\t\treduced.push( [ styleShorthand + '-bottom', bottom ] );\n\t\t\t}\n\n\t\t\tif ( left ) {\n\t\t\t\treduced.push( [ styleShorthand + '-left', left ] );\n\t\t\t}\n\t\t} else {\n\t\t\treduced.push( [ styleShorthand, getBoxSidesShorthandValue( value as BoxSides ) ] );\n\t\t}\n\n\t\treturn reduced;\n\t};\n}\n\n/**\n * Returns a [shorthand](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties) notation\n * of a CSS property value.\n *\n * ```ts\n * getBoxSidesShorthandValue( { top: '1px', right: '1px', bottom: '2px', left: '1px' } );\n * // will return '1px 1px 2px'\n * ```\n */\nexport function getBoxSidesShorthandValue( { top, right, bottom, left }: BoxSides ): string {\n\tconst out = [];\n\n\tif ( left !== right ) {\n\t\tout.push( top, right, bottom, left );\n\t} else if ( bottom !== top ) {\n\t\tout.push( top, right, bottom );\n\t} else if ( right !== top ) {\n\t\tout.push( top, right );\n\t} else {\n\t\tout.push( top );\n\t}\n\n\treturn out.join( ' ' );\n}\n\n/**\n * Creates a normalizer for a [shorthand](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties) 1-to-4 value.\n *\n * ```ts\n * stylesProcessor.setNormalizer( 'margin', getPositionShorthandNormalizer( 'margin' ) );\n * ```\n */\nexport function getPositionShorthandNormalizer( shorthand: string ) {\n\treturn ( value: string ): { path: string; value: BoxSides } => {\n\t\treturn {\n\t\t\tpath: shorthand,\n\t\t\tvalue: getBoxSidesValues( value )\n\t\t};\n\t};\n}\n\n/**\n * Parses parts of a 1-to-4 value notation - handles some CSS values with spaces (like RGB()).\n *\n * ```ts\n * getShorthandValues( 'red blue RGB(0, 0, 0)');\n * // will return [ 'red', 'blue', 'RGB(0, 0, 0)' ]\n * ```\n */\nexport function getShorthandValues( string: string ): Array<string> {\n\tconst matches = string.matchAll( CSS_SHORTHAND_VALUE_REGEXP );\n\n\treturn Array.from( matches ).map( i => i[ 0 ] );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/styles/background\n */\n\nimport type { StylesProcessor, PropertyDescriptor, Styles, Normalizer, Reducer } from '../stylesmap';\nimport { getShorthandValues, isAttachment, isColor, isPosition, isRepeat, isURL } from './utils';\n\n/**\n * Adds a background CSS styles processing rules.\n *\n * ```ts\n * editor.data.addStyleProcessorRules( addBackgroundRules );\n * ```\n *\n * The normalized value is stored as:\n *\n * ```ts\n * const styles = {\n * \tbackground: {\n * \t\tcolor,\n * \t\trepeat,\n * \t\tposition,\n * \t\tattachment,\n * \t\timage\n * \t}\n * };\n * ````\n *\n * **Note**: Currently only `'background-color'` longhand value is parsed besides `'background'` shorthand. The reducer also supports only\n * `'background-color'` value.\n */\nexport function addBackgroundRules( stylesProcessor: StylesProcessor ): void {\n\tstylesProcessor.setNormalizer( 'background', getBackgroundNormalizer() );\n\tstylesProcessor.setNormalizer( 'background-color', getBackgroundColorNormalizer() );\n\tstylesProcessor.setReducer( 'background', getBackgroundReducer() );\n\n\tstylesProcessor.setStyleRelation( 'background', [ 'background-color' ] );\n}\n\nfunction getBackgroundNormalizer(): Normalizer {\n\treturn value => {\n\t\tconst background: {\n\t\t\trepeat?: Array<string>;\n\t\t\tposition?: Array<string>;\n\t\t\tattachment?: string;\n\t\t\tcolor?: string;\n\t\t\timage?: string;\n\t\t} = {};\n\n\t\tconst parts = getShorthandValues( value );\n\n\t\tfor ( const part of parts ) {\n\t\t\tif ( isRepeat( part ) ) {\n\t\t\t\tbackground.repeat = background.repeat || [];\n\n\t\t\t\tbackground.repeat.push( part );\n\t\t\t} else if ( isPosition( part ) ) {\n\t\t\t\tbackground.position = background.position || [];\n\n\t\t\t\tbackground.position.push( part );\n\t\t\t} else if ( isAttachment( part ) ) {\n\t\t\t\tbackground.attachment = part;\n\t\t\t} else if ( isColor( part ) ) {\n\t\t\t\tbackground.color = part;\n\t\t\t} else if ( isURL( part ) ) {\n\t\t\t\tbackground.image = part;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tpath: 'background',\n\t\t\tvalue: background\n\t\t};\n\t};\n}\n\nfunction getBackgroundColorNormalizer(): Normalizer {\n\treturn value => ( { path: 'background.color', value } );\n}\n\nfunction getBackgroundReducer(): Reducer {\n\treturn value => {\n\t\tconst ret: Array<PropertyDescriptor> = [];\n\n\t\tret.push( [ 'background-color', ( value as Styles ).color as string ] );\n\n\t\treturn ret;\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/styles/border\n */\n\nimport type { BoxSides, Extractor, Normalizer, Reducer, StylesProcessor, Styles, StyleValue, PropertyDescriptor } from '../stylesmap';\nimport { getShorthandValues, getBoxSidesValueReducer, getBoxSidesValues, isLength, isLineStyle } from './utils';\n\n/**\n * Adds a border CSS styles processing rules.\n *\n * ```ts\n * editor.data.addStyleProcessorRules( addBorderRules );\n * ```\n *\n * This rules merges all [border](https://developer.mozilla.org/en-US/docs/Web/CSS/border) styles notation shorthands:\n *\n * - border\n * - border-top\n * - border-right\n * - border-bottom\n * - border-left\n * - border-color\n * - border-style\n * - border-width\n *\n * and all corresponding longhand forms (like `border-top-color`, `border-top-style`, etc).\n *\n * It does not handle other shorthands (like `border-radius` or `border-image`).\n *\n * The normalized model stores border values as:\n *\n * ```ts\n * const styles = {\n * \tborder: {\n * \t\tcolor: { top, right, bottom, left },\n * \t\tstyle: { top, right, bottom, left },\n * \t\twidth: { top, right, bottom, left },\n * \t}\n * };\n * ```\n */\nexport function addBorderRules( stylesProcessor: StylesProcessor ): void {\n\tstylesProcessor.setNormalizer( 'border', getBorderNormalizer() );\n\n\t// Border-position shorthands.\n\tstylesProcessor.setNormalizer( 'border-top', getBorderPositionNormalizer( 'top' ) );\n\tstylesProcessor.setNormalizer( 'border-right', getBorderPositionNormalizer( 'right' ) );\n\tstylesProcessor.setNormalizer( 'border-bottom', getBorderPositionNormalizer( 'bottom' ) );\n\tstylesProcessor.setNormalizer( 'border-left', getBorderPositionNormalizer( 'left' ) );\n\n\t// Border-property shorthands.\n\tstylesProcessor.setNormalizer( 'border-color', getBorderPropertyNormalizer( 'color' ) );\n\tstylesProcessor.setNormalizer( 'border-width', getBorderPropertyNormalizer( 'width' ) );\n\tstylesProcessor.setNormalizer( 'border-style', getBorderPropertyNormalizer( 'style' ) );\n\n\t// Border longhands.\n\tstylesProcessor.setNormalizer( 'border-top-color', getBorderPropertyPositionNormalizer( 'color', 'top' ) );\n\tstylesProcessor.setNormalizer( 'border-top-style', getBorderPropertyPositionNormalizer( 'style', 'top' ) );\n\tstylesProcessor.setNormalizer( 'border-top-width', getBorderPropertyPositionNormalizer( 'width', 'top' ) );\n\n\tstylesProcessor.setNormalizer( 'border-right-color', getBorderPropertyPositionNormalizer( 'color', 'right' ) );\n\tstylesProcessor.setNormalizer( 'border-right-style', getBorderPropertyPositionNormalizer( 'style', 'right' ) );\n\tstylesProcessor.setNormalizer( 'border-right-width', getBorderPropertyPositionNormalizer( 'width', 'right' ) );\n\n\tstylesProcessor.setNormalizer( 'border-bottom-color', getBorderPropertyPositionNormalizer( 'color', 'bottom' ) );\n\tstylesProcessor.setNormalizer( 'border-bottom-style', getBorderPropertyPositionNormalizer( 'style', 'bottom' ) );\n\tstylesProcessor.setNormalizer( 'border-bottom-width', getBorderPropertyPositionNormalizer( 'width', 'bottom' ) );\n\n\tstylesProcessor.setNormalizer( 'border-left-color', getBorderPropertyPositionNormalizer( 'color', 'left' ) );\n\tstylesProcessor.setNormalizer( 'border-left-style', getBorderPropertyPositionNormalizer( 'style', 'left' ) );\n\tstylesProcessor.setNormalizer( 'border-left-width', getBorderPropertyPositionNormalizer( 'width', 'left' ) );\n\n\tstylesProcessor.setExtractor( 'border-top', getBorderPositionExtractor( 'top' ) );\n\tstylesProcessor.setExtractor( 'border-right', getBorderPositionExtractor( 'right' ) );\n\tstylesProcessor.setExtractor( 'border-bottom', getBorderPositionExtractor( 'bottom' ) );\n\tstylesProcessor.setExtractor( 'border-left', getBorderPositionExtractor( 'left' ) );\n\n\tstylesProcessor.setExtractor( 'border-top-color', 'border.color.top' );\n\tstylesProcessor.setExtractor( 'border-right-color', 'border.color.right' );\n\tstylesProcessor.setExtractor( 'border-bottom-color', 'border.color.bottom' );\n\tstylesProcessor.setExtractor( 'border-left-color', 'border.color.left' );\n\n\tstylesProcessor.setExtractor( 'border-top-width', 'border.width.top' );\n\tstylesProcessor.setExtractor( 'border-right-width', 'border.width.right' );\n\tstylesProcessor.setExtractor( 'border-bottom-width', 'border.width.bottom' );\n\tstylesProcessor.setExtractor( 'border-left-width', 'border.width.left' );\n\n\tstylesProcessor.setExtractor( 'border-top-style', 'border.style.top' );\n\tstylesProcessor.setExtractor( 'border-right-style', 'border.style.right' );\n\tstylesProcessor.setExtractor( 'border-bottom-style', 'border.style.bottom' );\n\tstylesProcessor.setExtractor( 'border-left-style', 'border.style.left' );\n\n\tstylesProcessor.setReducer( 'border-color', getBoxSidesValueReducer( 'border-color' ) );\n\tstylesProcessor.setReducer( 'border-style', getBoxSidesValueReducer( 'border-style' ) );\n\tstylesProcessor.setReducer( 'border-width', getBoxSidesValueReducer( 'border-width' ) );\n\tstylesProcessor.setReducer( 'border-top', getBorderPositionReducer( 'top' ) );\n\tstylesProcessor.setReducer( 'border-right', getBorderPositionReducer( 'right' ) );\n\tstylesProcessor.setReducer( 'border-bottom', getBorderPositionReducer( 'bottom' ) );\n\tstylesProcessor.setReducer( 'border-left', getBorderPositionReducer( 'left' ) );\n\tstylesProcessor.setReducer( 'border', getBorderReducer() );\n\n\tstylesProcessor.setStyleRelation( 'border', [\n\t\t'border-color', 'border-style', 'border-width',\n\t\t'border-top', 'border-right', 'border-bottom', 'border-left',\n\t\t'border-top-color', 'border-right-color', 'border-bottom-color', 'border-left-color',\n\t\t'border-top-style', 'border-right-style', 'border-bottom-style', 'border-left-style',\n\t\t'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width'\n\t] );\n\n\tstylesProcessor.setStyleRelation( 'border-color', [\n\t\t'border-top-color', 'border-right-color', 'border-bottom-color', 'border-left-color'\n\t] );\n\tstylesProcessor.setStyleRelation( 'border-style', [\n\t\t'border-top-style', 'border-right-style', 'border-bottom-style', 'border-left-style'\n\t] );\n\tstylesProcessor.setStyleRelation( 'border-width', [\n\t\t'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width'\n\t] );\n\n\tstylesProcessor.setStyleRelation( 'border-top', [ 'border-top-color', 'border-top-style', 'border-top-width' ] );\n\tstylesProcessor.setStyleRelation( 'border-right', [ 'border-right-color', 'border-right-style', 'border-right-width' ] );\n\tstylesProcessor.setStyleRelation( 'border-bottom', [ 'border-bottom-color', 'border-bottom-style', 'border-bottom-width' ] );\n\tstylesProcessor.setStyleRelation( 'border-left', [ 'border-left-color', 'border-left-style', 'border-left-width' ] );\n}\n\nfunction getBorderNormalizer(): Normalizer {\n\treturn value => {\n\t\tconst { color, style, width } = normalizeBorderShorthand( value );\n\n\t\treturn {\n\t\t\tpath: 'border',\n\t\t\tvalue: {\n\t\t\t\tcolor: getBoxSidesValues( color ),\n\t\t\t\tstyle: getBoxSidesValues( style ),\n\t\t\t\twidth: getBoxSidesValues( width )\n\t\t\t}\n\t\t};\n\t};\n}\n\nfunction getBorderPositionNormalizer( side: string ): Normalizer {\n\treturn value => {\n\t\tconst { color, style, width } = normalizeBorderShorthand( value );\n\n\t\tconst border: Record<string, StyleValue> = {};\n\n\t\tif ( color !== undefined ) {\n\t\t\tborder.color = { [ side ]: color };\n\t\t}\n\n\t\tif ( style !== undefined ) {\n\t\t\tborder.style = { [ side ]: style };\n\t\t}\n\n\t\tif ( width !== undefined ) {\n\t\t\tborder.width = { [ side ]: width };\n\t\t}\n\n\t\treturn {\n\t\t\tpath: 'border',\n\t\t\tvalue: border\n\t\t};\n\t};\n}\n\nfunction getBorderPropertyNormalizer( propertyName: string ): Normalizer {\n\treturn value => {\n\t\treturn {\n\t\t\tpath: 'border',\n\t\t\tvalue: toBorderPropertyShorthand( value, propertyName )\n\t\t};\n\t};\n}\n\nfunction toBorderPropertyShorthand( value: string, property: string ): Record<string, BoxSides> {\n\treturn {\n\t\t[ property ]: getBoxSidesValues( value )\n\t};\n}\n\nfunction getBorderPropertyPositionNormalizer( property: string, side: keyof BoxSides ): Normalizer {\n\treturn value => {\n\t\treturn {\n\t\t\tpath: 'border',\n\t\t\tvalue: {\n\t\t\t\t[ property ]: {\n\t\t\t\t\t[ side ]: value\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t};\n}\n\nfunction getBorderPositionExtractor( which: string ): Extractor {\n\treturn ( name, styles ) => {\n\t\tif ( styles.border ) {\n\t\t\treturn extractBorderPosition( styles.border, which );\n\t\t}\n\t};\n}\n\nfunction extractBorderPosition( border: any, which: string ) {\n\tconst value: StyleValue = {};\n\n\tif ( border.width && border.width[ which ] ) {\n\t\tvalue.width = border.width[ which ];\n\t}\n\n\tif ( border.style && border.style[ which ] ) {\n\t\tvalue.style = border.style[ which ];\n\t}\n\n\tif ( border.color && border.color[ which ] ) {\n\t\tvalue.color = border.color[ which ];\n\t}\n\n\treturn value;\n}\n\nfunction normalizeBorderShorthand( string: string ) {\n\tconst result: {\n\t\twidth?: string;\n\t\tstyle?: string;\n\t\tcolor?: string;\n\t} = {};\n\n\tconst parts = getShorthandValues( string );\n\n\tfor ( const part of parts ) {\n\t\tif ( isLength( part ) || /thin|medium|thick/.test( part ) ) {\n\t\t\tresult.width = part;\n\t\t} else if ( isLineStyle( part ) ) {\n\t\t\tresult.style = part;\n\t\t} else {\n\t\t\tresult.color = part;\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * The border reducer factory.\n *\n * It tries to produce the most optimal output for the specified styles.\n *\n * For a border style:\n *\n * ```css\n * style: {top: \"solid\", bottom: \"solid\", right: \"solid\", left: \"solid\"}\n * ```\n *\n * It will produce: `border-style: solid`.\n * For a border style and color:\n *\n * ```css\n * color: {top: \"#ff0\", bottom: \"#ff0\", right: \"#ff0\", left: \"#ff0\"}\n * style: {top: \"solid\", bottom: \"solid\", right: \"solid\", left: \"solid\"}\n * ```\n *\n * It will produce: `border-color: #ff0; border-style: solid`.\n * If all border parameters are specified:\n *\n * ```css\n * color: {top: \"#ff0\", bottom: \"#ff0\", right: \"#ff0\", left: \"#ff0\"}\n * style: {top: \"solid\", bottom: \"solid\", right: \"solid\", left: \"solid\"}\n * width: {top: \"2px\", bottom: \"2px\", right: \"2px\", left: \"2px\"}\n * ```\n *\n * It will combine everything into a single property: `border: 2px solid #ff0`.\n *\n * The definitions are merged only if all border selectors have the same values.\n */\nfunction getBorderReducer(): Reducer {\n\treturn value => {\n\t\tconst topStyles = extractBorderPosition( value, 'top' );\n\t\tconst rightStyles = extractBorderPosition( value, 'right' );\n\t\tconst bottomStyles = extractBorderPosition( value, 'bottom' );\n\t\tconst leftStyles = extractBorderPosition( value, 'left' );\n\n\t\tconst borderStyles = [ topStyles, rightStyles, bottomStyles, leftStyles ];\n\n\t\tconst borderStylesByType = {\n\t\t\twidth: getReducedStyleValueForType( borderStyles, 'width' ),\n\t\t\tstyle: getReducedStyleValueForType( borderStyles, 'style' ),\n\t\t\tcolor: getReducedStyleValueForType( borderStyles, 'color' )\n\t\t};\n\n\t\t// Try reducing to a single `border:` property.\n\t\tconst reducedBorderStyle = reduceBorderPosition( borderStylesByType, 'all' );\n\n\t\tif ( reducedBorderStyle.length ) {\n\t\t\treturn reducedBorderStyle;\n\t\t}\n\n\t\t// Try reducing to `border-style:`, `border-width:`, `border-color:` properties.\n\t\tconst reducedStyleTypes = Object.entries( borderStylesByType ).reduce( ( reducedStyleTypes, [ type, value ] ) => {\n\t\t\tif ( value ) {\n\t\t\t\treducedStyleTypes.push( [ `border-${ type }`, value ] );\n\n\t\t\t\t// Remove it from the full set to not include it in the most specific properties later.\n\t\t\t\tborderStyles.forEach( style => delete style[ type ] );\n\t\t\t}\n\n\t\t\treturn reducedStyleTypes;\n\t\t}, [] as Array<PropertyDescriptor> );\n\n\t\t// The reduced properties (by type) and all that remains that could not be reduced.\n\t\treturn [\n\t\t\t...reducedStyleTypes,\n\t\t\t...reduceBorderPosition( topStyles, 'top' ),\n\t\t\t...reduceBorderPosition( rightStyles, 'right' ),\n\t\t\t...reduceBorderPosition( bottomStyles, 'bottom' ),\n\t\t\t...reduceBorderPosition( leftStyles, 'left' )\n\t\t];\n\t};\n\n\t/**\n\t * @param styles The array of objects with `style`, `color`, `width` properties.\n\t */\n\tfunction getReducedStyleValueForType( styles: Array<Styles>, type: 'width' | 'style' | 'color' ) {\n\t\treturn styles\n\t\t\t.map( style => style[ type ] as any )\n\t\t\t.reduce( ( result, style ) => result == style ? result : null );\n\t}\n}\n\nfunction getBorderPositionReducer( which: keyof BoxSides | 'all' ): Reducer {\n\treturn value => reduceBorderPosition( value, which );\n}\n\n/**\n * Returns an array with reduced border styles depending on the specified values.\n *\n * If all border properties (width, style, color) are specified, the returned selector will be\n * merged into a group: `border-*: [width] [style] [color]`.\n *\n * Otherwise, the specific definitions will be returned: `border-(width|style|color)-*: [value]`.\n *\n * @param value Styles if defined.\n * @param which The border position.\n */\nfunction reduceBorderPosition( value: any, which: keyof BoxSides | 'all' ): Array<PropertyDescriptor> {\n\tconst borderTypes = [];\n\n\tif ( value && ( value.width ) ) {\n\t\tborderTypes.push( 'width' );\n\t}\n\n\tif ( value && ( value.style ) ) {\n\t\tborderTypes.push( 'style' );\n\t}\n\n\tif ( value && ( value.color ) ) {\n\t\tborderTypes.push( 'color' );\n\t}\n\n\tif ( borderTypes.length == 3 ) {\n\t\tconst borderValue = borderTypes.map( item => value[ item ] ).join( ' ' );\n\n\t\treturn [\n\t\t\twhich == 'all' ? [ 'border', borderValue ] : [ `border-${ which }`, borderValue ]\n\t\t];\n\t}\n\n\t// We are unable to reduce to a single `border:` property.\n\tif ( which == 'all' ) {\n\t\treturn [];\n\t}\n\n\treturn borderTypes.map( type => {\n\t\treturn [ `border-${ which }-${ type }`, value[ type ] as string ];\n\t} );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/styles/margin\n */\n\nimport type { StylesProcessor } from '../stylesmap';\nimport { getPositionShorthandNormalizer, getBoxSidesValueReducer } from './utils';\n\n/**\n * Adds a margin CSS styles processing rules.\n *\n * ```ts\n * editor.data.addStyleProcessorRules( addMarginRules );\n * ```\n *\n * The normalized value is stored as:\n *\n * ```ts\n * const styles = {\n * \tmargin: {\n * \t\ttop,\n * \t\tright,\n * \t\tbottom,\n * \t\tleft\n * \t}\n * };\n * ```\n */\nexport function addMarginRules( stylesProcessor: StylesProcessor ): void {\n\tstylesProcessor.setNormalizer( 'margin', getPositionShorthandNormalizer( 'margin' ) );\n\n\tstylesProcessor.setNormalizer( 'margin-top', value => ( { path: 'margin.top', value } ) );\n\tstylesProcessor.setNormalizer( 'margin-right', value => ( { path: 'margin.right', value } ) );\n\tstylesProcessor.setNormalizer( 'margin-bottom', value => ( { path: 'margin.bottom', value } ) );\n\tstylesProcessor.setNormalizer( 'margin-left', value => ( { path: 'margin.left', value } ) );\n\n\tstylesProcessor.setReducer( 'margin', getBoxSidesValueReducer( 'margin' ) );\n\n\tstylesProcessor.setStyleRelation( 'margin', [ 'margin-top', 'margin-right', 'margin-bottom', 'margin-left' ] );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module engine/view/styles/padding\n */\n\nimport type { StylesProcessor } from '../stylesmap';\nimport { getPositionShorthandNormalizer, getBoxSidesValueReducer } from './utils';\n\n/**\n * Adds a margin CSS styles processing rules.\n *\n * ```ts\n * editor.data.addStyleProcessorRules( addPaddingRules );\n * ```\n *\n * The normalized value is stored as:\n *\n * ```ts\n * const styles = {\n * \tpadding: {\n * \t\ttop,\n * \t\tright,\n * \t\tbottom,\n * \t\tleft\n * \t}\n * };\n * ```\n */\nexport function addPaddingRules( stylesProcessor: StylesProcessor ): void {\n\tstylesProcessor.setNormalizer( 'padding', getPositionShorthandNormalizer( 'padding' ) );\n\tstylesProcessor.setNormalizer( 'padding-top', value => ( { path: 'padding.top', value } ) );\n\tstylesProcessor.setNormalizer( 'padding-right', value => ( { path: 'padding.right', value } ) );\n\tstylesProcessor.setNormalizer( 'padding-bottom', value => ( { path: 'padding.bottom', value } ) );\n\tstylesProcessor.setNormalizer( 'padding-left', value => ( { path: 'padding.left', value } ) );\n\n\tstylesProcessor.setReducer( 'padding', getBoxSidesValueReducer( 'padding' ) );\n\n\tstylesProcessor.setStyleRelation( 'padding', [ 'padding-top', 'padding-right', 'padding-bottom', 'padding-left' ] );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module core/commandcollection\n */\n\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\nimport type Command from './command';\n\n/**\n * Collection of commands. Its instance is available in {@link module:core/editor/editor~Editor#commands `editor.commands`}.\n */\nexport default class CommandCollection implements Iterable<[ string, Command ]> {\n\t/**\n\t * Command map.\n\t */\n\tprivate _commands: Map<string, Command>;\n\n\t/**\n\t * Creates collection instance.\n\t */\n\tconstructor() {\n\t\tthis._commands = new Map();\n\t}\n\n\t/**\n\t * Registers a new command.\n\t *\n\t * @param commandName The name of the command.\n\t */\n\tpublic add<TName extends string>(\n\t\tcommandName: TName,\n\t\tcommand: CommandsMap[ TName ]\n\t): void {\n\t\tthis._commands.set( commandName, command );\n\t}\n\n\t/**\n\t * Retrieves a command from the collection.\n\t *\n\t * @param commandName The name of the command.\n\t */\n\tpublic get<TName extends string>( commandName: TName ): CommandsMap[ TName ] | undefined {\n\t\treturn this._commands.get( commandName );\n\t}\n\n\t/**\n\t * Executes a command.\n\t *\n\t * @param commandName The name of the command.\n\t * @param commandParams Command parameters.\n\t * @returns The value returned by the {@link module:core/command~Command#execute `command.execute()`}.\n\t */\n\tpublic execute<TName extends string>(\n\t\tcommandName: TName,\n\t\t...commandParams: Parameters<CommandsMap[ TName ][ 'execute' ]>\n\t): ReturnType<CommandsMap[ TName ][ 'execute' ]> {\n\t\tconst command = this.get( commandName );\n\n\t\tif ( !command ) {\n\t\t\t/**\n\t\t\t * Command does not exist.\n\t\t\t *\n\t\t\t * @error commandcollection-command-not-found\n\t\t\t * @param commandName Name of the command.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'commandcollection-command-not-found', this, { commandName } );\n\t\t}\n\n\t\treturn command.execute( ...commandParams ) as any;\n\t}\n\n\t/**\n\t * Returns iterator of command names.\n\t */\n\tpublic* names(): IterableIterator<string> {\n\t\tyield* this._commands.keys();\n\t}\n\n\t/**\n\t * Returns iterator of command instances.\n\t */\n\tpublic* commands(): IterableIterator<Command> {\n\t\tyield* this._commands.values();\n\t}\n\n\t/**\n\t * Iterable interface.\n\t *\n\t * Returns `[ commandName, commandInstance ]` pairs.\n\t */\n\tpublic [ Symbol.iterator ](): Iterator<[ string, Command ]> {\n\t\treturn this._commands[ Symbol.iterator ]();\n\t}\n\n\t/**\n\t * Destroys all collection commands.\n\t */\n\tpublic destroy(): void {\n\t\tfor ( const command of this.commands() ) {\n\t\t\tcommand.destroy();\n\t\t}\n\t}\n}\n\n/**\n * Helper type that maps command names to their types.\n * It is meant to be extended with module augmentation.\n *\n * ```ts\n * class MyCommand extends Command {\n * \tpublic execute( parameter: A ): B {\n * \t\t// ...\n * \t}\n * }\n *\n * declare module '@ckeditor/ckeditor5-core' {\n * \tinterface CommandsMap {\n * \t\tmyCommand: MyCommand;\n * \t}\n * }\n *\n * // Returns `MyCommand | undefined`.\n * const myCommand = editor.commands.get( 'myCommand' );\n *\n * // Expects `A` type as parameter and returns `B`.\n * const value = editor.commands.execute( 'myCommand', new A() );\n * ```\n */\nexport interface CommandsMap {\n\t[ name: string ]: Command;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module core/editor/editor\n */\n\nimport {\n\tConfig,\n\tCKEditorError,\n\tObservableMixin,\n\ttype Locale,\n\ttype LocaleTranslate,\n\ttype ObservableChangeEvent\n} from '@ckeditor/ckeditor5-utils';\n\nimport {\n\tConversion,\n\tDataController,\n\tEditingController,\n\tModel,\n\tStylesProcessor\n} from '@ckeditor/ckeditor5-engine';\n\nimport type { EditorUI } from '@ckeditor/ckeditor5-ui';\n\nimport Context from '../context';\nimport PluginCollection from '../plugincollection';\nimport CommandCollection, { type CommandsMap } from '../commandcollection';\nimport EditingKeystrokeHandler from '../editingkeystrokehandler';\n\nimport type { LoadedPlugins, PluginConstructor } from '../plugin';\nimport type { EditorConfig } from './editorconfig';\n\n/**\n * The class representing a basic, generic editor.\n *\n * Check out the list of its subclasses to learn about specific editor implementations.\n *\n * All editor implementations (like {@link module:editor-classic/classiceditor~ClassicEditor} or\n * {@link module:editor-inline/inlineeditor~InlineEditor}) should extend this class. They can add their\n * own methods and properties.\n *\n * When you are implementing a plugin, this editor represents the API\n * which your plugin can expect to get when using its {@link module:core/plugin~Plugin#editor} property.\n *\n * This API should be sufficient in order to implement the \"editing\" part of your feature\n * (schema definition, conversion, commands, keystrokes, etc.).\n * It does not define the editor UI, which is available only if\n * the specific editor implements also the {@link ~Editor#ui} property\n * (as most editor implementations do).\n */\nexport default abstract class Editor extends ObservableMixin() {\n\t/**\n\t * Commands registered to the editor.\n\t *\n\t * Use the shorthand {@link #execute `editor.execute()`} method to execute commands:\n\t *\n\t * ```ts\n\t * // Execute the bold command:\n\t * editor.execute( 'bold' );\n\t *\n\t * // Check the state of the bold command:\n\t * editor.commands.get( 'bold' ).value;\n\t * ```\n\t */\n\tpublic readonly commands: CommandCollection;\n\n\t/**\n\t * Stores all configurations specific to this editor instance.\n\t *\n\t * ```ts\n\t * editor.config.get( 'image.toolbar' );\n\t * // -> [ 'imageStyle:block', 'imageStyle:side', '|', 'toggleImageCaption', 'imageTextAlternative' ]\n\t * ```\n\t */\n\tpublic readonly config: Config<EditorConfig>;\n\n\t/**\n\t * Conversion manager through which you can register model-to-view and view-to-model converters.\n\t *\n\t * See the {@link module:engine/conversion/conversion~Conversion} documentation to learn how to add converters.\n\t */\n\tpublic readonly conversion: Conversion;\n\n\t/**\n\t * The {@link module:engine/controller/datacontroller~DataController data controller}.\n\t * Used e.g. for setting and retrieving the editor data.\n\t */\n\tpublic readonly data: DataController;\n\n\t/**\n\t * The {@link module:engine/controller/editingcontroller~EditingController editing controller}.\n\t * Controls user input and rendering the content for editing.\n\t */\n\tpublic readonly editing: EditingController;\n\n\t/**\n\t * The locale instance.\n\t */\n\tpublic readonly locale: Locale;\n\n\t/**\n\t * The editor's model.\n\t *\n\t * The central point of the editor's abstract data model.\n\t */\n\tpublic readonly model: Model;\n\n\t/**\n\t * The plugins loaded and in use by this editor instance.\n\t *\n\t * ```ts\n\t * editor.plugins.get( 'ClipboardPipeline' ); // -> An instance of the clipboard pipeline plugin.\n\t * ```\n\t */\n\tpublic readonly plugins: PluginCollection<Editor>;\n\n\t/**\n\t * An instance of the {@link module:core/editingkeystrokehandler~EditingKeystrokeHandler}.\n\t *\n\t * It allows setting simple keystrokes:\n\t *\n\t * ```ts\n\t * // Execute the bold command on Ctrl+E:\n\t * editor.keystrokes.set( 'Ctrl+E', 'bold' );\n\t *\n\t * // Execute your own callback:\n\t * editor.keystrokes.set( 'Ctrl+E', ( data, cancel ) => {\n\t * \tconsole.log( data.keyCode );\n\t *\n\t * \t// Prevent the default (native) action and stop the underlying keydown event\n\t * \t// so no other editor feature will interfere.\n\t * \tcancel();\n\t * } );\n\t * ```\n\t *\n\t * Note: Certain typing-oriented keystrokes (like <kbd>Backspace</kbd> or <kbd>Enter</kbd>) are handled\n\t * by a low-level mechanism and trying to listen to them via the keystroke handler will not work reliably.\n\t * To handle these specific keystrokes, see the events fired by the\n\t * {@link module:engine/view/document~Document editing view document} (`editor.editing.view.document`).\n\t */\n\tpublic readonly keystrokes: EditingKeystrokeHandler;\n\n\t/**\n\t * Shorthand for {@link module:utils/locale~Locale#t}.\n\t *\n\t * @see module:utils/locale~Locale#t\n\t */\n\tpublic readonly t: LocaleTranslate;\n\n\tpublic declare readonly id: string;\n\n\t/**\n\t * Indicates the editor life-cycle state.\n\t *\n\t * The editor is in one of the following states:\n\t *\n\t * * `initializing` – During the editor initialization (before\n\t * {@link module:core/editor/editor~Editor.create `Editor.create()`}) finished its job.\n\t * * `ready` – After the promise returned by the {@link module:core/editor/editor~Editor.create `Editor.create()`}\n\t * method is resolved.\n\t * * `destroyed` – Once the {@link #destroy `editor.destroy()`} method was called.\n\t *\n\t * @observable\n\t */\n\tpublic declare state: 'initializing' | 'ready' | 'destroyed';\n\n\t/**\n\t * The default configuration which is built into the editor class.\n\t *\n\t * It is used in CKEditor 5 builds to provide the default configuration options which are later used during the editor initialization.\n\t *\n\t * ```ts\n\t * ClassicEditor.defaultConfig = {\n\t * \tfoo: 1,\n\t * \tbar: 2\n\t * };\n\t *\n\t * ClassicEditor\n\t * \t.create( sourceElement )\n\t * \t.then( editor => {\n\t * \t\teditor.config.get( 'foo' ); // -> 1\n\t * \t\teditor.config.get( 'bar' ); // -> 2\n\t * \t} );\n\t *\n\t * // The default options can be overridden by the configuration passed to create().\n\t * ClassicEditor\n\t * \t.create( sourceElement, { bar: 3 } )\n\t * \t.then( editor => {\n\t * \t\teditor.config.get( 'foo' ); // -> 1\n\t * \t\teditor.config.get( 'bar' ); // -> 3\n\t * \t} );\n\t * ```\n\t *\n\t * See also {@link module:core/editor/editor~Editor.builtinPlugins}.\n\t */\n\tpublic static defaultConfig?: EditorConfig;\n\n\t/**\n\t * An array of plugins built into this editor class.\n\t *\n\t * It is used in CKEditor 5 builds to provide a list of plugins which are later automatically initialized\n\t * during the editor initialization.\n\t *\n\t * They will be automatically initialized by the editor, unless listed in `config.removePlugins` and\n\t * unless `config.plugins` is passed.\n\t *\n\t * ```ts\n\t * // Build some plugins into the editor class first.\n\t * ClassicEditor.builtinPlugins = [ FooPlugin, BarPlugin ];\n\t *\n\t * // Normally, you need to define config.plugins, but since ClassicEditor.builtinPlugins was\n\t * // defined, now you can call create() without any configuration.\n\t * ClassicEditor\n\t * \t.create( sourceElement )\n\t * \t.then( editor => {\n\t * \t\teditor.plugins.get( FooPlugin ); // -> An instance of the Foo plugin.\n\t * \t\teditor.plugins.get( BarPlugin ); // -> An instance of the Bar plugin.\n\t * \t} );\n\t *\n\t * ClassicEditor\n\t * \t.create( sourceElement, {\n\t * \t\t// Do not initialize these plugins (note: it is defined by a string):\n\t * \t\tremovePlugins: [ 'Foo' ]\n\t * \t} )\n\t * \t.then( editor => {\n\t * \t\teditor.plugins.get( FooPlugin ); // -> Undefined.\n\t * \t\teditor.config.get( BarPlugin ); // -> An instance of the Bar plugin.\n\t * \t} );\n\t *\n\t * ClassicEditor\n\t * \t.create( sourceElement, {\n\t * \t\t// Load only this plugin. It can also be defined by a string if\n\t * \t\t// this plugin was built into the editor class.\n\t * \t\tplugins: [ FooPlugin ]\n\t * \t} )\n\t * \t.then( editor => {\n\t * \t\teditor.plugins.get( FooPlugin ); // -> An instance of the Foo plugin.\n\t * \t\teditor.config.get( BarPlugin ); // -> Undefined.\n\t * \t} );\n\t * ```\n\t *\n\t * See also {@link module:core/editor/editor~Editor.defaultConfig}.\n\t */\n\tpublic static builtinPlugins?: Array<PluginConstructor<Editor>>;\n\n\t/**\n\t * The editor UI instance.\n\t */\n\tpublic abstract get ui(): EditorUI;\n\n\t/**\n\t * The editor context.\n\t * When it is not provided through the configuration, the editor creates it.\n\t */\n\tprotected readonly _context: Context;\n\n\t/**\n\t * A set of lock IDs for the {@link #isReadOnly} getter.\n\t */\n\tprotected readonly _readOnlyLocks: Set<symbol | string>;\n\n\t/**\n\t * Creates a new instance of the editor class.\n\t *\n\t * Usually, not to be used directly. See the static {@link module:core/editor/editor~Editor.create `create()`} method.\n\t *\n\t * @param config The editor configuration.\n\t */\n\tconstructor( config: EditorConfig = {} ) {\n\t\tsuper();\n\n\t\tconst constructor = this.constructor as typeof Editor;\n\n\t\t// Prefer the language passed as the argument to the constructor instead of the constructor's `defaultConfig`, if both are set.\n\t\tconst language = config.language || ( constructor.defaultConfig && constructor.defaultConfig.language );\n\n\t\tthis._context = config.context || new Context( { language } );\n\t\tthis._context._addEditor( this, !config.context );\n\n\t\t// Clone the plugins to make sure that the plugin array will not be shared\n\t\t// between editors and make the watchdog feature work correctly.\n\t\tconst availablePlugins = Array.from( constructor.builtinPlugins || [] );\n\n\t\tthis.config = new Config<EditorConfig>( config, constructor.defaultConfig );\n\t\tthis.config.define( 'plugins', availablePlugins );\n\t\tthis.config.define( this._context._getEditorConfig() );\n\n\t\tthis.plugins = new PluginCollection<Editor>( this, availablePlugins, this._context.plugins );\n\n\t\tthis.locale = this._context.locale;\n\t\tthis.t = this.locale.t;\n\n\t\tthis._readOnlyLocks = new Set();\n\n\t\tthis.commands = new CommandCollection();\n\n\t\tthis.set( 'state', 'initializing' );\n\t\tthis.once<EditorReadyEvent>( 'ready', () => ( this.state = 'ready' ), { priority: 'high' } );\n\t\tthis.once<EditorDestroyEvent>( 'destroy', () => ( this.state = 'destroyed' ), { priority: 'high' } );\n\n\t\tthis.model = new Model();\n\n\t\tthis.on( 'change:isReadOnly', () => {\n\t\t\tthis.model.document.isReadOnly = this.isReadOnly;\n\t\t} );\n\n\t\tconst stylesProcessor = new StylesProcessor();\n\n\t\tthis.data = new DataController( this.model, stylesProcessor );\n\n\t\tthis.editing = new EditingController( this.model, stylesProcessor );\n\t\tthis.editing.view.document.bind( 'isReadOnly' ).to( this );\n\n\t\tthis.conversion = new Conversion( [ this.editing.downcastDispatcher, this.data.downcastDispatcher ], this.data.upcastDispatcher );\n\t\tthis.conversion.addAlias( 'dataDowncast', this.data.downcastDispatcher );\n\t\tthis.conversion.addAlias( 'editingDowncast', this.editing.downcastDispatcher );\n\n\t\tthis.keystrokes = new EditingKeystrokeHandler( this );\n\t\tthis.keystrokes.listenTo( this.editing.view.document );\n\t}\n\n\t/**\n\t * Defines whether the editor is in the read-only mode.\n\t *\n\t * In read-only mode the editor {@link #commands commands} are disabled so it is not possible\n\t * to modify the document by using them. Also, the editable element(s) become non-editable.\n\t *\n\t * In order to make the editor read-only, you need to call the {@link #enableReadOnlyMode} method:\n\t *\n\t * ```ts\n\t * editor.enableReadOnlyMode( 'feature-id' );\n\t * ```\n\t *\n * Later, to turn off the read-only mode, call {@link #disableReadOnlyMode}:\n\t *\n\t * ```ts\n\t * editor.disableReadOnlyMode( 'feature-id' );\n\t * ```\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tpublic get isReadOnly(): boolean {\n\t\treturn this._readOnlyLocks.size > 0;\n\t}\n\n\tpublic set isReadOnly( value: boolean ) {\n\t\t/**\n\t\t * The {@link module:core/editor/editor~Editor#isReadOnly Editor#isReadOnly} property is read-only since version `34.0.0`\n\t\t * and can be set only using {@link module:core/editor/editor~Editor#enableReadOnlyMode `Editor#enableReadOnlyMode( lockId )`} and\n\t\t * {@link module:core/editor/editor~Editor#disableReadOnlyMode `Editor#disableReadOnlyMode( lockId )`}.\n\t\t *\n\t\t * Usage before version `34.0.0`:\n\t\t *\n\t\t * ```ts\n\t\t * editor.isReadOnly = true;\n\t\t * editor.isReadOnly = false;\n\t\t * ```\n\t\t *\n\t\t * Usage since version `34.0.0`:\n\t\t *\n\t\t * ```ts\n\t\t * editor.enableReadOnlyMode( 'my-feature-id' );\n\t\t * editor.disableReadOnlyMode( 'my-feature-id' );\n\t\t * ```\n\t\t *\n\t\t * @error editor-isreadonly-has-no-setter\n\t\t */\n\t\tthrow new CKEditorError( 'editor-isreadonly-has-no-setter' );\n\t}\n\n\t/**\n\t * Turns on the read-only mode in the editor.\n\t *\n\t * Editor can be switched to or out of the read-only mode by many features, under various circumstances. The editor supports locking\n\t * mechanism for the read-only mode. It enables easy control over the read-only mode when many features wants to turn it on or off at\n\t * the same time, without conflicting with each other. It guarantees that you will not make the editor editable accidentally (which\n\t * could lead to errors).\n\t *\n\t * Each read-only mode request is identified by a unique id (also called \"lock\"). If multiple plugins requested to turn on the\n\t * read-only mode, then, the editor will become editable only after all these plugins turn the read-only mode off (using the same ids).\n\t *\n\t * Note, that you cannot force the editor to disable the read-only mode if other plugins set it.\n\t *\n\t * After the first `enableReadOnlyMode()` call, the {@link #isReadOnly `isReadOnly` property} will be set to `true`:\n\t *\n\t * ```ts\n\t * editor.isReadOnly; // `false`.\n\t * editor.enableReadOnlyMode( 'my-feature-id' );\n\t * editor.isReadOnly; // `true`.\n\t * ```\n\t *\n\t * You can turn off the read-only mode (\"clear the lock\") using the {@link #disableReadOnlyMode `disableReadOnlyMode()`} method:\n\t *\n\t * ```ts\n\t * editor.enableReadOnlyMode( 'my-feature-id' );\n\t * // ...\n\t * editor.disableReadOnlyMode( 'my-feature-id' );\n\t * editor.isReadOnly; // `false`.\n\t * ```\n\t *\n\t * All \"locks\" need to be removed to enable editing:\n\t *\n\t * ```ts\n\t * editor.enableReadOnlyMode( 'my-feature-id' );\n\t * editor.enableReadOnlyMode( 'my-other-feature-id' );\n\t * // ...\n\t * editor.disableReadOnlyMode( 'my-feature-id' );\n\t * editor.isReadOnly; // `true`.\n\t * editor.disableReadOnlyMode( 'my-other-feature-id' );\n\t * editor.isReadOnly; // `false`.\n\t * ```\n\t *\n\t * @param lockId A unique ID for setting the editor to the read-only state.\n\t */\n\tpublic enableReadOnlyMode( lockId: string | symbol ): void {\n\t\tif ( typeof lockId !== 'string' && typeof lockId !== 'symbol' ) {\n\t\t\t/**\n\t\t\t * The lock ID is missing or it is not a string or symbol.\n\t\t\t *\n\t\t\t * @error editor-read-only-lock-id-invalid\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'editor-read-only-lock-id-invalid', null, { lockId } );\n\t\t}\n\n\t\tif ( this._readOnlyLocks.has( lockId ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._readOnlyLocks.add( lockId );\n\n\t\tif ( this._readOnlyLocks.size === 1 ) {\n\t\t\t// Manually fire the `change:isReadOnly` event as only getter is provided.\n\t\t\tthis.fire<ObservableChangeEvent<boolean>>( 'change:isReadOnly', 'isReadOnly', true, false );\n\t\t}\n\t}\n\n\t/**\n\t * Removes the read-only lock from the editor with given lock ID.\n\t *\n\t * When no lock is present on the editor anymore, then the {@link #isReadOnly `isReadOnly` property} will be set to `false`.\n\t *\n\t * @param lockId The lock ID for setting the editor to the read-only state.\n\t */\n\tpublic disableReadOnlyMode( lockId: string | symbol ): void {\n\t\tif ( typeof lockId !== 'string' && typeof lockId !== 'symbol' ) {\n\t\t\tthrow new CKEditorError( 'editor-read-only-lock-id-invalid', null, { lockId } );\n\t\t}\n\n\t\tif ( !this._readOnlyLocks.has( lockId ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._readOnlyLocks.delete( lockId );\n\n\t\tif ( this._readOnlyLocks.size === 0 ) {\n\t\t\t// Manually fire the `change:isReadOnly` event as only getter is provided.\n\t\t\tthis.fire<ObservableChangeEvent<boolean>>( 'change:isReadOnly', 'isReadOnly', false, true );\n\t\t}\n\t}\n\n\t/**\n\t * Loads and initializes plugins specified in the configuration.\n\t *\n\t * @returns A promise which resolves once the initialization is completed, providing an array of loaded plugins.\n\t */\n\tpublic initPlugins(): Promise<LoadedPlugins> {\n\t\tconst config = this.config;\n\t\tconst plugins = config.get( 'plugins' )!;\n\t\tconst removePlugins = config.get( 'removePlugins' ) || [];\n\t\tconst extraPlugins = config.get( 'extraPlugins' ) || [];\n\t\tconst substitutePlugins = config.get( 'substitutePlugins' ) || [];\n\n\t\treturn this.plugins.init( plugins.concat( extraPlugins ), removePlugins, substitutePlugins );\n\t}\n\n\t/**\n\t * Destroys the editor instance, releasing all resources used by it.\n\t *\n\t * **Note** The editor cannot be destroyed during the initialization phase so if it is called\n\t * while the editor {@link #state is being initialized}, it will wait for the editor initialization before destroying it.\n\t *\n\t * @fires destroy\n\t * @returns A promise that resolves once the editor instance is fully destroyed.\n\t */\n\tpublic destroy(): Promise<unknown> {\n\t\tlet readyPromise: Promise<unknown> = Promise.resolve();\n\n\t\tif ( this.state == 'initializing' ) {\n\t\t\treadyPromise = new Promise( resolve => this.once<EditorReadyEvent>( 'ready', resolve ) );\n\t\t}\n\n\t\treturn readyPromise\n\t\t\t.then( () => {\n\t\t\t\tthis.fire<EditorDestroyEvent>( 'destroy' );\n\t\t\t\tthis.stopListening();\n\t\t\t\tthis.commands.destroy();\n\t\t\t} )\n\t\t\t.then( () => this.plugins.destroy() )\n\t\t\t.then( () => {\n\t\t\t\tthis.model.destroy();\n\t\t\t\tthis.data.destroy();\n\t\t\t\tthis.editing.destroy();\n\t\t\t\tthis.keystrokes.destroy();\n\t\t\t} )\n\t\t\t// Remove the editor from the context.\n\t\t\t// When the context was created by this editor, the context will be destroyed.\n\t\t\t.then( () => this._context._removeEditor( this ) );\n\t}\n\n\t/**\n\t * Executes the specified command with given parameters.\n\t *\n\t * Shorthand for:\n\t *\n\t * ```ts\n\t * editor.commands.get( commandName ).execute( ... );\n\t * ```\n\t *\n\t * @param commandName The name of the command to execute.\n\t * @param commandParams Command parameters.\n\t * @returns The value returned by the {@link module:core/commandcollection~CommandCollection#execute `commands.execute()`}.\n\t */\n\tpublic execute<TName extends string>(\n\t\tcommandName: TName,\n\t\t...commandParams: Parameters<CommandsMap[ TName ][ 'execute' ]>\n\t): ReturnType<CommandsMap[ TName ][ 'execute' ]> {\n\t\ttry {\n\t\t\treturn this.commands.execute( commandName, ...commandParams );\n\t\t} catch ( err: any ) {\n\t\t\t// @if CK_DEBUG // throw err;\n\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\tCKEditorError.rethrowUnexpectedError( err, this );\n\t\t}\n\t}\n\n\t/**\n\t * Focuses the editor.\n\t *\n\t * **Note** To explicitly focus the editing area of the editor, use the\n\t * {@link module:engine/view/view~View#focus `editor.editing.view.focus()`} method of the editing view.\n\t *\n\t * Check out the {@glink framework/deep-dive/ui/focus-tracking#focus-in-the-editor-ui Focus in the editor UI} section\n\t * of the {@glink framework/deep-dive/ui/focus-tracking Deep dive into focus tracking} guide to learn more.\n\t */\n\tpublic focus(): void {\n\t\tthis.editing.view.focus();\n\t}\n\n\t/* istanbul ignore next -- @preserve */\n\t/**\n\t * Creates and initializes a new editor instance.\n\t *\n\t * This is an abstract method. Every editor type needs to implement its own initialization logic.\n\t *\n\t * See the `create()` methods of the existing editor types to learn how to use them:\n\t *\n\t * * {@link module:editor-classic/classiceditor~ClassicEditor.create `ClassicEditor.create()`}\n\t * * {@link module:editor-balloon/ballooneditor~BalloonEditor.create `BalloonEditor.create()`}\n\t * * {@link module:editor-decoupled/decouplededitor~DecoupledEditor.create `DecoupledEditor.create()`}\n\t * * {@link module:editor-inline/inlineeditor~InlineEditor.create `InlineEditor.create()`}\n\t */\n\tpublic static create( ...args: Array<unknown> ): void {\n\t\tthrow new Error( 'This is an abstract method.' );\n\t}\n}\n\n/**\n * Fired when the {@link module:engine/controller/datacontroller~DataController#event:ready data} and all additional\n * editor components are ready.\n *\n * Note: This event is most useful for plugin developers. When integrating the editor with your website or\n * application, you do not have to listen to `editor#ready` because when the promise returned by the static\n * {@link module:core/editor/editor~Editor.create `Editor.create()`} event is resolved, the editor is already ready.\n * In fact, since the first moment when the editor instance is available to you is inside `then()`'s callback,\n * you cannot even add a listener to the `editor#ready` event.\n *\n * See also the {@link module:core/editor/editor~Editor#state `editor.state`} property.\n *\n * @eventName ~Editor#ready\n */\nexport type EditorReadyEvent = {\n\tname: 'ready';\n\targs: [];\n};\n\n/**\n * Fired when this editor instance is destroyed. The editor at this point is not usable and this event should be used to\n * perform the clean-up in any plugin.\n *\n * See also the {@link module:core/editor/editor~Editor#state `editor.state`} property.\n *\n * @eventName ~Editor#destroy\n */\nexport type EditorDestroyEvent = {\n\tname: 'destroy';\n\targs: [];\n};\n\n/**\n * This error is thrown when trying to pass a `<textarea>` element to a `create()` function of an editor class.\n *\n * The only editor type which can be initialized on `<textarea>` elements is\n * the {@glink installation/getting-started/predefined-builds#classic-editor classic editor}.\n * This editor hides the passed element and inserts its own UI next to it. Other types of editors reuse the passed element as their root\n * editable element and therefore `<textarea>` is not appropriate for them. Use a `<div>` or another text container instead:\n *\n * ```html\n * <div id=\"editor\">\n * \t<p>Initial content.</p>\n * </div>\n * ```\n *\n * @error editor-wrong-element\n */\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module core/editor/utils/dataapimixin\n */\n\nimport type Editor from '../editor';\n\nimport type { Constructor, Mixed } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Implementation of the {@link module:core/editor/utils/dataapimixin~DataApi}.\n */\nexport default function DataApiMixin<Base extends Constructor<Editor>>( base: Base ): Mixed<Base, DataApi> {\n\tabstract class Mixin extends base implements DataApi {\n\t\tpublic setData( data: string | Record<string, string> ): void {\n\t\t\tthis.data.set( data );\n\t\t}\n\n\t\tpublic getData( options?: {\n\t\t\trootName?: string;\n\t\t\ttrim?: 'empty' | 'none';\n\t\t\t[ key: string ]: unknown;\n\t\t} ): string {\n\t\t\treturn this.data.get( options );\n\t\t}\n\t}\n\n\treturn Mixin as any;\n}\n\n// Backward compatibility with `mix`.\n{\n\tconst mixin = ( DataApiMixin as any )( Object );\n\n\t( DataApiMixin as any ).setData = mixin.prototype.setData;\n\t( DataApiMixin as any ).getData = mixin.prototype.getData;\n}\n\n/**\n * Interface defining editor methods for setting and getting data to and from the editor's main root element\n * using the {@link module:core/editor/editor~Editor#data data pipeline}.\n *\n * This interface is not a part of the {@link module:core/editor/editor~Editor} class because one may want to implement\n * an editor with multiple root elements, in which case the methods for setting and getting data will need to be implemented\n * differently.\n */\nexport interface DataApi {\n\n\t/**\n\t * Sets the data in the editor.\n\t *\n\t * ```ts\n\t * editor.setData( '<p>This is editor!</p>' );\n\t * ```\n\t *\n\t * If your editor implementation uses multiple roots, you should pass an object with keys corresponding\n\t * to the editor root names and values equal to the data that should be set in each root:\n\t *\n\t * ```ts\n\t * editor.setData( {\n\t * header: '<p>Content for header part.</p>',\n\t * content: '<p>Content for main part.</p>',\n\t * footer: '<p>Content for footer part.</p>'\n\t * } );\n\t * ```\n\t *\n\t * By default the editor accepts HTML. This can be controlled by injecting a different data processor.\n\t * See the {@glink features/markdown Markdown output} guide for more details.\n\t *\n\t * @param data Input data.\n\t */\n\tsetData( data: string | Record<string, string> ): void;\n\n\t/**\n\t * Gets the data from the editor.\n\t *\n\t * ```ts\n\t * editor.getData(); // -> '<p>This is editor!</p>'\n\t * ```\n\t *\n\t * If your editor implementation uses multiple roots, you should pass root name as one of the options:\n\t *\n\t * ```ts\n\t * editor.getData( { rootName: 'header' } ); // -> '<p>Content for header part.</p>'\n\t * ```\n\t *\n\t * By default, the editor outputs HTML. This can be controlled by injecting a different data processor.\n\t * See the {@glink features/markdown Markdown output} guide for more details.\n\t *\n\t * A warning is logged when you try to retrieve data for a detached root, as most probably this is a mistake. A detached root should\n\t * be treated like it is removed, and you should not save its data. Note, that the detached root data is always an empty string.\n\t *\n\t * @param options Additional configuration for the retrieved data.\n\t * Editor features may introduce more configuration options that can be set through this parameter.\n\t * @param options.rootName Root name. Default to `'main'`.\n\t * @param options.trim Whether returned data should be trimmed. This option is set to `'empty'` by default,\n\t * which means that whenever editor content is considered empty, an empty string is returned. To turn off trimming\n\t * use `'none'`. In such cases exact content will be returned (for example `'<p> </p>'` for an empty editor).\n\t * @returns Output data.\n\t */\n\tgetData( options?: Record<string, unknown> ): string;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module core/editor/utils/elementapimixin\n */\n\nimport {\n\tCKEditorError,\n\tsetDataInElement,\n\ttype Constructor,\n\ttype Mixed\n} from '@ckeditor/ckeditor5-utils';\n\nimport type Editor from '../editor';\n\n/**\n * Implementation of the {@link module:core/editor/utils/elementapimixin~ElementApi}.\n */\nexport default function ElementApiMixin<Base extends Constructor<Editor>>( base: Base ): Mixed<Base, ElementApi> {\n\tabstract class Mixin extends base implements ElementApi {\n\t\tpublic sourceElement: HTMLElement | undefined;\n\n\t\tpublic updateSourceElement( data: string = this.data.get() ): void {\n\t\t\tif ( !this.sourceElement ) {\n\t\t\t\t/**\n\t\t\t\t * Cannot update the source element of a detached editor.\n\t\t\t\t *\n\t\t\t\t * The {@link module:core/editor/utils/elementapimixin~ElementApi#updateSourceElement `updateSourceElement()`}\n\t\t\t\t * method cannot be called if you did not pass an element to `Editor.create()`.\n\t\t\t\t *\n\t\t\t\t * @error editor-missing-sourceelement\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'editor-missing-sourceelement',\n\t\t\t\t\tthis\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst shouldUpdateSourceElement = this.config.get( 'updateSourceElementOnDestroy' );\n\t\t\tconst isSourceElementTextArea = this.sourceElement instanceof HTMLTextAreaElement;\n\n\t\t\t// The data returned by the editor might be unsafe, so we want to prevent rendering\n\t\t\t// unsafe content inside the source element different than <textarea>, which is considered\n\t\t\t// secure. This behaviour could be changed by setting the `updateSourceElementOnDestroy`\n\t\t\t// configuration option to `true`.\n\t\t\tif ( !shouldUpdateSourceElement && !isSourceElementTextArea ) {\n\t\t\t\tsetDataInElement( this.sourceElement, '' );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetDataInElement( this.sourceElement, data );\n\t\t}\n\t}\n\n\treturn Mixin as any;\n}\n\n// Backward compatibility with `mix`.\n( ElementApiMixin as any ).updateSourceElement = ( ElementApiMixin as any )( Object ).prototype.updateSourceElement;\n\n/**\n * Interface describing an editor that replaced a DOM element (was \"initialized on an element\").\n *\n * Such an editor should provide a method to\n * {@link module:core/editor/utils/elementapimixin~ElementApi#updateSourceElement update the replaced element with the current data}.\n */\nexport interface ElementApi {\n\n\t/**\n\t * The element on which the editor has been initialized.\n\t *\n\t * @readonly\n\t */\n\tsourceElement: HTMLElement | undefined;\n\n\t/**\n\t * Updates the {@link #sourceElement editor source element}'s content with the data.\n\t */\n\tupdateSourceElement( data?: string ): void;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module core/pendingactions\n */\n\nimport ContextPlugin from './contextplugin';\n\nimport {\n\tCKEditorError,\n\tCollection,\n\tObservableMixin,\n\ttype CollectionAddEvent,\n\ttype CollectionRemoveEvent,\n\ttype Observable\n} from '@ckeditor/ckeditor5-utils';\n\n/**\n * The list of pending editor actions.\n *\n * This plugin should be used to synchronise plugins that execute long-lasting actions\n * (e.g. file upload) with the editor integration. It gives the developer who integrates the editor\n * an easy way to check if there are any actions pending whenever such information is needed.\n * All plugins that register a pending action also provide a message about the action that is ongoing\n * which can be displayed to the user. This lets them decide if they want to interrupt the action or wait.\n *\n * Adding and updating a pending action:\n *\n * ```ts\n * const pendingActions = editor.plugins.get( 'PendingActions' );\n * const action = pendingActions.add( 'Upload in progress: 0%.' );\n *\n * // You can update the message:\n * action.message = 'Upload in progress: 10%.';\n * ```\n *\n * Removing a pending action:\n *\n * ```ts\n * const pendingActions = editor.plugins.get( 'PendingActions' );\n * const action = pendingActions.add( 'Unsaved changes.' );\n *\n * pendingActions.remove( action );\n * ```\n *\n * Getting pending actions:\n *\n * ```ts\n * const pendingActions = editor.plugins.get( 'PendingActions' );\n *\n * const action1 = pendingActions.add( 'Action 1' );\n * const action2 = pendingActions.add( 'Action 2' );\n *\n * pendingActions.first; // Returns action1\n * Array.from( pendingActions ); // Returns [ action1, action2 ]\n * ```\n *\n * This plugin is used by features like {@link module:upload/filerepository~FileRepository} to register their ongoing actions\n * and by features like {@link module:autosave/autosave~Autosave} to detect whether there are any ongoing actions.\n * Read more about saving the data in the {@glink installation/getting-started/getting-and-setting-data Saving and getting data} guide.\n */\nexport default class PendingActions extends ContextPlugin implements Iterable<PendingAction> {\n\t/**\n\t * Defines whether there is any registered pending action.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public hasAny: boolean;\n\n\t/**\n\t * A list of pending actions.\n\t */\n\tprivate _actions!: Collection<PendingAction>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'PendingActions' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tthis.set( 'hasAny', false );\n\n\t\tthis._actions = new Collection( { idProperty: '_id' } );\n\t\tthis._actions.delegate( 'add', 'remove' ).to( this );\n\t}\n\n\t/**\n\t * Adds an action to the list of pending actions.\n\t *\n\t * This method returns an action object with an observable message property.\n\t * The action object can be later used in the {@link #remove} method. It also allows you to change the message.\n\t *\n\t * @param message The action message.\n\t * @returns An observable object that represents a pending action.\n\t */\n\tpublic add( message: string ): PendingAction {\n\t\tif ( typeof message !== 'string' ) {\n\t\t\t/**\n\t\t\t * The message must be a string.\n\t\t\t *\n\t\t\t * @error pendingactions-add-invalid-message\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'pendingactions-add-invalid-message', this );\n\t\t}\n\n\t\tconst action = new ( ObservableMixin() )() as PendingAction;\n\n\t\taction.set( 'message', message );\n\t\tthis._actions.add( action );\n\t\tthis.hasAny = true;\n\n\t\treturn action;\n\t}\n\n\t/**\n\t * Removes an action from the list of pending actions.\n\t *\n\t * @param action An action object.\n\t */\n\tpublic remove( action: PendingAction ): void {\n\t\tthis._actions.remove( action );\n\t\tthis.hasAny = !!this._actions.length;\n\t}\n\n\t/**\n\t * Returns the first action from the list or null if the list is empty\n\t *\n\t * @returns The pending action object.\n\t */\n\tpublic get first(): PendingAction | null {\n\t\treturn this._actions.get( 0 );\n\t}\n\n\t/**\n\t * Iterable interface.\n\t */\n\tpublic [ Symbol.iterator ](): Iterator<PendingAction> {\n\t\treturn this._actions[ Symbol.iterator ]();\n\t}\n}\n\nexport interface PendingAction extends Observable {\n\tmessage: string;\n}\n\n/**\n * Fired when an action is added to the list.\n *\n * @eventName ~PendingActions#add\n * @param action The added action.\n */\nexport type PendingActionsAddEvent = CollectionAddEvent<PendingAction>;\n\n/**\n * Fired when an action is removed from the list.\n *\n * @eventName ~PendingActions#remove\n * @param action The removed action.\n */\nexport type PendingActionsRemoveEvent = CollectionRemoveEvent<PendingAction>;\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m11.591 10.177 4.243 4.242a1 1 0 0 1-1.415 1.415l-4.242-4.243-4.243 4.243a1 1 0 0 1-1.414-1.415l4.243-4.242L4.52 5.934A1 1 0 0 1 5.934 4.52l4.243 4.243 4.242-4.243a1 1 0 1 1 1.415 1.414l-4.243 4.243z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M6.972 16.615a.997.997 0 0 1-.744-.292l-4.596-4.596a1 1 0 1 1 1.414-1.414l3.926 3.926 9.937-9.937a1 1 0 0 1 1.414 1.415L7.717 16.323a.997.997 0 0 1-.745.292z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m8.636 9.531-2.758 3.94a.5.5 0 0 0 .122.696l3.224 2.284h1.314l2.636-3.736L8.636 9.53zm.288 8.451L5.14 15.396a2 2 0 0 1-.491-2.786l6.673-9.53a2 2 0 0 1 2.785-.49l3.742 2.62a2 2 0 0 1 .491 2.785l-7.269 10.053-2.147-.066z\\\"/><path d=\\\"M4 18h5.523v-1H4zm-2 0h1v-1H2z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path opacity=\\\".5\\\" d=\\\"M2 3h16v1.5H2zm0 12h16v1.5H2z\\\"/><path d=\\\"M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path opacity=\\\".5\\\" d=\\\"M2 3h16v1.5H2zm0 12h16v1.5H2z\\\"/><path d=\\\"M15.003 7v5.5a1 1 0 0 1-1 1H5.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H6.5V12h6.997V7.5z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path opacity=\\\".5\\\" d=\\\"M2 3h16v1.5H2zm0 12h16v1.5H2z\\\"/><path d=\\\"M18.003 7v5.5a1 1 0 0 1-1 1H8.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H9.5V12h6.997V7.5z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path opacity=\\\".5\\\" d=\\\"M2 3h16v1.5H2zm0 12h16v1.5H2z\\\"/><path d=\\\"M18 7v5.5a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1zm-1.505.5H3.504V12h12.991V7.5z\\\"/></svg>\";","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\"><path d=\\\"M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z\\\"/><path d=\\\"M18.095 2H1.905C.853 2 0 2.895 0 4v12c0 1.105.853 2 1.905 2h16.19C19.147 18 20 17.105 20 16V4c0-1.105-.853-2-1.905-2zm0 1.5c.263 0 .476.224.476.5v12c0 .276-.213.5-.476.5H1.905a.489.489 0 0 1-.476-.5V4c0-.276.213-.5.476-.5h16.19z\\\"/></svg>\";","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\"><path d=\\\"M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z\\\"/><path d=\\\"M13 6H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5V8a.5.5 0 0 1 .5-.5h11z\\\"/></svg>\";","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\"><path d=\\\"M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z\\\"/><path d=\\\"M7 10H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h5a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h5z\\\"/></svg>\";","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\"><path d=\\\"M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z\\\"/><path d=\\\"M10 8H2a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-6a.5.5 0 0 1 .5-.5h8z\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module core\n */\n\nexport { default as Plugin, type PluginDependencies, type PluginConstructor } from './plugin';\nexport { default as Command, type CommandExecuteEvent } from './command';\nexport { default as MultiCommand } from './multicommand';\nexport type { CommandsMap } from './commandcollection';\nexport type { PluginsMap, default as PluginCollection } from './plugincollection';\n\nexport { default as Context, type ContextConfig } from './context';\nexport { default as ContextPlugin, type ContextPluginDependencies } from './contextplugin';\nexport { type EditingKeystrokeCallback } from './editingkeystrokehandler';\n\nexport { default as Editor, type EditorReadyEvent, type EditorDestroyEvent } from './editor/editor';\nexport type {\n\tEditorConfig,\n\tLanguageConfig,\n\tToolbarConfig,\n\tToolbarConfigItem,\n\tUiConfig\n} from './editor/editorconfig';\n\nexport { default as attachToForm } from './editor/utils/attachtoform';\nexport { default as DataApiMixin, type DataApi } from './editor/utils/dataapimixin';\nexport { default as ElementApiMixin, type ElementApi } from './editor/utils/elementapimixin';\nexport { default as secureSourceElement } from './editor/utils/securesourceelement';\n\nexport { default as PendingActions, type PendingAction } from './pendingactions';\n\nimport cancel from './../theme/icons/cancel.svg';\nimport caption from './../theme/icons/caption.svg';\nimport check from './../theme/icons/check.svg';\nimport cog from './../theme/icons/cog.svg';\nimport eraser from './../theme/icons/eraser.svg';\nimport lowVision from './../theme/icons/low-vision.svg';\nimport image from './../theme/icons/image.svg';\n\nimport alignBottom from './../theme/icons/align-bottom.svg';\nimport alignMiddle from './../theme/icons/align-middle.svg';\nimport alignTop from './../theme/icons/align-top.svg';\nimport alignLeft from './../theme/icons/align-left.svg';\nimport alignCenter from './../theme/icons/align-center.svg';\nimport alignRight from './../theme/icons/align-right.svg';\nimport alignJustify from './../theme/icons/align-justify.svg';\n\nimport objectBlockLeft from './../theme/icons/object-left.svg';\nimport objectCenter from './../theme/icons/object-center.svg';\nimport objectBlockRight from './../theme/icons/object-right.svg';\nimport objectFullWidth from './../theme/icons/object-full-width.svg';\nimport objectInline from './../theme/icons/object-inline.svg';\nimport objectLeft from './../theme/icons/object-inline-left.svg';\nimport objectRight from './../theme/icons/object-inline-right.svg';\n\nimport objectSizeFull from './../theme/icons/object-size-full.svg';\nimport objectSizeLarge from './../theme/icons/object-size-large.svg';\nimport objectSizeSmall from './../theme/icons/object-size-small.svg';\nimport objectSizeMedium from './../theme/icons/object-size-medium.svg';\n\nimport pencil from './../theme/icons/pencil.svg';\nimport pilcrow from './../theme/icons/pilcrow.svg';\nimport quote from './../theme/icons/quote.svg';\nimport threeVerticalDots from './../theme/icons/three-vertical-dots.svg';\n\nimport bold from './../theme/icons/bold.svg';\nimport paragraph from './../theme/icons/paragraph.svg';\nimport plus from './../theme/icons/plus.svg';\nimport text from './../theme/icons/text.svg';\nimport importExport from './../theme/icons/importexport.svg';\n\nexport const icons = {\n\tbold,\n\tcancel,\n\tcaption,\n\tcheck,\n\tcog,\n\teraser,\n\timage,\n\tlowVision,\n\timportExport,\n\tparagraph,\n\tplus,\n\ttext,\n\n\talignBottom,\n\talignMiddle,\n\talignTop,\n\talignLeft,\n\talignCenter,\n\talignRight,\n\talignJustify,\n\n\tobjectLeft,\n\tobjectCenter,\n\tobjectRight,\n\tobjectFullWidth,\n\tobjectInline,\n\tobjectBlockLeft,\n\tobjectBlockRight,\n\n\tobjectSizeFull,\n\tobjectSizeLarge,\n\tobjectSizeSmall,\n\tobjectSizeMedium,\n\n\tpencil,\n\tpilcrow,\n\tquote,\n\tthreeVerticalDots\n};\n\nimport './augmentation';\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M10.187 17H5.773c-.637 0-1.092-.138-1.364-.415-.273-.277-.409-.718-.409-1.323V4.738c0-.617.14-1.062.419-1.332.279-.27.73-.406 1.354-.406h4.68c.69 0 1.288.041 1.793.124.506.083.96.242 1.36.478.341.197.644.447.906.75a3.262 3.262 0 0 1 .808 2.162c0 1.401-.722 2.426-2.167 3.075C15.05 10.175 16 11.315 16 13.01a3.756 3.756 0 0 1-2.296 3.504 6.1 6.1 0 0 1-1.517.377c-.571.073-1.238.11-2 .11zm-.217-6.217H7v4.087h3.069c1.977 0 2.965-.69 2.965-2.072 0-.707-.256-1.22-.768-1.537-.512-.319-1.277-.478-2.296-.478zM7 5.13v3.619h2.606c.729 0 1.292-.067 1.69-.2a1.6 1.6 0 0 0 .91-.765c.165-.267.247-.566.247-.897 0-.707-.26-1.176-.778-1.409-.519-.232-1.31-.348-2.375-.348H7z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M2 16h9a1 1 0 0 1 0 2H2a1 1 0 0 1 0-2z\\\"/><path d=\\\"M17 1a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h14zm0 1.5H3a.5.5 0 0 0-.492.41L2.5 3v9a.5.5 0 0 0 .41.492L3 12.5h14a.5.5 0 0 0 .492-.41L17.5 12V3a.5.5 0 0 0-.41-.492L17 2.5z\\\" fill-opacity=\\\".6\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m11.333 2 .19 2.263a5.899 5.899 0 0 1 1.458.604L14.714 3.4 16.6 5.286l-1.467 1.733c.263.452.468.942.605 1.46L18 8.666v2.666l-2.263.19a5.899 5.899 0 0 1-.604 1.458l1.467 1.733-1.886 1.886-1.733-1.467a5.899 5.899 0 0 1-1.46.605L11.334 18H8.667l-.19-2.263a5.899 5.899 0 0 1-1.458-.604L5.286 16.6 3.4 14.714l1.467-1.733a5.899 5.899 0 0 1-.604-1.458L2 11.333V8.667l2.262-.189a5.899 5.899 0 0 1 .605-1.459L3.4 5.286 5.286 3.4l1.733 1.467a5.899 5.899 0 0 1 1.46-.605L8.666 2h2.666zM10 6.267a3.733 3.733 0 1 0 0 7.466 3.733 3.733 0 0 0 0-7.466z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M6.91 10.54c.26-.23.64-.21.88.03l3.36 3.14 2.23-2.06a.64.64 0 0 1 .87 0l2.52 2.97V4.5H3.2v10.12l3.71-4.08zm10.27-7.51c.6 0 1.09.47 1.09 1.05v11.84c0 .59-.49 1.06-1.09 1.06H2.79c-.6 0-1.09-.47-1.09-1.06V4.08c0-.58.49-1.05 1.1-1.05h14.38zm-5.22 5.56a1.96 1.96 0 1 1 3.4-1.96 1.96 1.96 0 0 1-3.4 1.96z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M5.085 6.22 2.943 4.078a.75.75 0 1 1 1.06-1.06l2.592 2.59A11.094 11.094 0 0 1 10 5.068c4.738 0 8.578 3.101 8.578 5.083 0 1.197-1.401 2.803-3.555 3.887l1.714 1.713a.75.75 0 0 1-.09 1.138.488.488 0 0 1-.15.084.75.75 0 0 1-.821-.16L6.17 7.304c-.258.11-.51.233-.757.365l6.239 6.24-.006.005.78.78c-.388.094-.78.166-1.174.215l-1.11-1.11h.011L4.55 8.197a7.2 7.2 0 0 0-.665.514l-.112.098 4.897 4.897-.005.006 1.276 1.276a10.164 10.164 0 0 1-1.477-.117l-.479-.479-.009.009-4.863-4.863-.022.031a2.563 2.563 0 0 0-.124.2c-.043.077-.08.158-.108.241a.534.534 0 0 0-.028.133.29.29 0 0 0 .008.072.927.927 0 0 0 .082.226c.067.133.145.26.234.379l3.242 3.365.025.01.59.623c-3.265-.918-5.59-3.155-5.59-4.668 0-1.194 1.448-2.838 3.663-3.93zm7.07.531a4.632 4.632 0 0 1 1.108 5.992l.345.344.046-.018a9.313 9.313 0 0 0 2-1.112c.256-.187.5-.392.727-.613.137-.134.27-.277.392-.431.072-.091.141-.185.203-.286.057-.093.107-.19.148-.292a.72.72 0 0 0 .036-.12.29.29 0 0 0 .008-.072.492.492 0 0 0-.028-.133.999.999 0 0 0-.036-.096 2.165 2.165 0 0 0-.071-.145 2.917 2.917 0 0 0-.125-.2 3.592 3.592 0 0 0-.263-.335 5.444 5.444 0 0 0-.53-.523 7.955 7.955 0 0 0-1.054-.768 9.766 9.766 0 0 0-1.879-.891c-.337-.118-.68-.219-1.027-.301zm-2.85.21-.069.002a.508.508 0 0 0-.254.097.496.496 0 0 0-.104.679.498.498 0 0 0 .326.199l.045.005c.091.003.181.003.272.012a2.45 2.45 0 0 1 2.017 1.513c.024.061.043.125.069.185a.494.494 0 0 0 .45.287h.008a.496.496 0 0 0 .35-.158.482.482 0 0 0 .13-.335.638.638 0 0 0-.048-.219 3.379 3.379 0 0 0-.36-.723 3.438 3.438 0 0 0-2.791-1.543l-.028-.001h-.013z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M19 4.5 14 0H3v12.673l.868-1.041c.185-.222.4-.402.632-.54V1.5h8v5h5v7.626a2.24 2.24 0 0 1 1.5.822V4.5ZM14 5V2l3.3 3H14Zm-3.692 12.5c.062.105.133.206.213.303L11.52 19H8v-.876a2.243 2.243 0 0 0 1.82-.624h.488Zm7.518-.657a.75.75 0 0 0-1.152-.96L15.5 17.29V12H14v5.29l-1.174-1.408a.75.75 0 0 0-1.152.96l2.346 2.816a.95.95 0 0 0 1.46 0l2.346-2.815Zm-15.056-.38a.75.75 0 0 1-.096-1.056l2.346-2.815a.95.95 0 0 1 1.46 0l2.346 2.815a.75.75 0 1 1-1.152.96L6.5 14.96V20H5v-5.04l-1.174 1.408a.75.75 0 0 1-1.056.096Z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M10.5 5.5H7v5h3.5a2.5 2.5 0 1 0 0-5zM5 3h6.5v.025a5 5 0 0 1 0 9.95V13H7v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M10 2a1 1 0 0 0-1 1v6H3a1 1 0 1 0 0 2h6v6a1 1 0 1 0 2 0v-6h6a1 1 0 1 0 0-2h-6V3a1 1 0 0 0-1-1Z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M9.816 11.5 7.038 4.785 4.261 11.5h5.555Zm.62 1.5H3.641l-1.666 4.028H.312l5.789-14h1.875l5.789 14h-1.663L10.436 13Z\\\"/><path d=\\\"m12.09 17-.534-1.292.848-1.971.545 1.319L12.113 17h-.023Zm1.142-5.187.545 1.319L15.5 9.13l1.858 4.316h-3.45l.398.965h3.467L18.887 17H20l-3.873-9h-1.254l-1.641 3.813Z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m9.239 13.938-2.88-1.663a.75.75 0 0 1 .75-1.3L9 12.067V4.75a.75.75 0 1 1 1.5 0v7.318l1.89-1.093a.75.75 0 0 1 .75 1.3l-2.879 1.663a.752.752 0 0 1-.511.187.752.752 0 0 1-.511-.187zM4.25 17a.75.75 0 1 1 0-1.5h10.5a.75.75 0 0 1 0 1.5H4.25z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M9.75 11.875a.752.752 0 0 1 .508.184l2.883 1.666a.75.75 0 0 1-.659 1.344l-.091-.044-1.892-1.093.001 4.318a.75.75 0 1 1-1.5 0v-4.317l-1.89 1.092a.75.75 0 0 1-.75-1.3l2.879-1.663a.752.752 0 0 1 .51-.187zM15.25 9a.75.75 0 1 1 0 1.5H4.75a.75.75 0 1 1 0-1.5h10.5zM9.75.375a.75.75 0 0 1 .75.75v4.318l1.89-1.093.092-.045a.75.75 0 0 1 .659 1.344l-2.883 1.667a.752.752 0 0 1-.508.184.752.752 0 0 1-.511-.187L6.359 5.65a.75.75 0 0 1 .75-1.299L9 5.442V1.125a.75.75 0 0 1 .75-.75z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m10.261 7.062 2.88 1.663a.75.75 0 0 1-.75 1.3L10.5 8.933v7.317a.75.75 0 1 1-1.5 0V8.932l-1.89 1.093a.75.75 0 0 1-.75-1.3l2.879-1.663a.752.752 0 0 1 .511-.187.752.752 0 0 1 .511.187zM15.25 4a.75.75 0 1 1 0 1.5H4.75a.75.75 0 0 1 0-1.5h10.5z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm2.286 4c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M18 3.75a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 8a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 4a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75zm0-8a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path opacity=\\\".5\\\" d=\\\"M2 3h16v1.5H2zm11.5 9H18v1.5h-4.5zm0-3H18v1.5h-4.5zm0-3H18v1.5h-4.5zM2 15h16v1.5H2z\\\"/><path d=\\\"M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path opacity=\\\".5\\\" d=\\\"M2 3h16v1.5H2zm0 12h16v1.5H2zm0-9h5v1.5H2zm0 3h5v1.5H2zm0 3h5v1.5H2z\\\"/><path d=\\\"M18.003 7v5.5a1 1 0 0 1-1 1H8.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H9.5V12h6.997V7.5z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path opacity=\\\".5\\\" d=\\\"M2 3h16v1.5H2zm11.5 9H18v1.5h-4.5zM2 15h16v1.5H2z\\\"/><path d=\\\"M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m7.3 17.37-.061.088a1.518 1.518 0 0 1-.934.535l-4.178.663-.806-4.153a1.495 1.495 0 0 1 .187-1.058l.056-.086L8.77 2.639c.958-1.351 2.803-1.076 4.296-.03 1.497 1.047 2.387 2.693 1.433 4.055L7.3 17.37zM9.14 4.728l-5.545 8.346 3.277 2.294 5.544-8.346L9.14 4.728zM6.07 16.512l-3.276-2.295.53 2.73 2.746-.435zM9.994 3.506 13.271 5.8c.316-.452-.16-1.333-1.065-1.966-.905-.634-1.895-.78-2.212-.328zM8 18.5 9.375 17H19v1.5H8z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M6.999 2H15a1 1 0 0 1 0 2h-1.004v13a1 1 0 1 1-2 0V4H8.999v13a1 1 0 1 1-2 0v-7A4 4 0 0 1 3 6a4 4 0 0 1 3.999-4z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M3 10.423a6.5 6.5 0 0 1 6.056-6.408l.038.67C6.448 5.423 5.354 7.663 5.22 10H9c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574zm8 0a6.5 6.5 0 0 1 6.056-6.408l.038.67c-2.646.739-3.74 2.979-3.873 5.315H17c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle cx=\\\"9.5\\\" cy=\\\"4.5\\\" r=\\\"1.5\\\"/><circle cx=\\\"9.5\\\" cy=\\\"10.5\\\" r=\\\"1.5\\\"/><circle cx=\\\"9.5\\\" cy=\\\"16.5\\\" r=\\\"1.5\\\"/></svg>\";","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./toolbar.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/toolbar/toolbarview\n */\n\nimport View from '../view';\nimport FocusCycler from '../focuscycler';\nimport ToolbarSeparatorView from './toolbarseparatorview';\nimport ToolbarLineBreakView from './toolbarlinebreakview';\nimport preventDefault from '../bindings/preventdefault';\nimport { createDropdown, addToolbarToDropdown } from '../dropdown/utils';\nimport normalizeToolbarConfig from './normalizetoolbarconfig';\n\nimport type ComponentFactory from '../componentfactory';\nimport type ViewCollection from '../viewcollection';\nimport type DropdownView from '../dropdown/dropdownview';\nimport type DropdownPanelFocusable from '../dropdown/dropdownpanelfocusable';\n\nimport {\n\tFocusTracker,\n\tKeystrokeHandler,\n\tRect,\n\tResizeObserver,\n\tglobal,\n\tisVisible,\n\tlogWarning,\n\ttype CollectionAddEvent,\n\ttype CollectionChangeEvent,\n\ttype CollectionRemoveEvent,\n\ttype Locale,\n\ttype ObservableChangeEvent\n} from '@ckeditor/ckeditor5-utils';\n\nimport {\n\ticons,\n\ttype ToolbarConfig,\n\ttype ToolbarConfigItem\n} from '@ckeditor/ckeditor5-core';\n\nimport { isObject } from 'lodash-es';\n\nimport '../../theme/components/toolbar/toolbar.css';\n\nconst { threeVerticalDots } = icons;\n\nconst NESTED_TOOLBAR_ICONS: Record<string, string | undefined> = {\n\talignLeft: icons.alignLeft,\n\tbold: icons.bold,\n\timportExport: icons.importExport,\n\tparagraph: icons.paragraph,\n\tplus: icons.plus,\n\ttext: icons.text,\n\tthreeVerticalDots: icons.threeVerticalDots\n};\n\n/**\n * The toolbar view class.\n */\nexport default class ToolbarView extends View implements DropdownPanelFocusable {\n\t/**\n\t * A reference to the options object passed to the constructor.\n\t */\n\tpublic readonly options: ToolbarOptions;\n\n\t/**\n\t * A collection of toolbar items (buttons, dropdowns, etc.).\n\t */\n\tpublic readonly items: ViewCollection;\n\n\t/**\n\t * Tracks information about the DOM focus in the toolbar.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}\n\t * to handle keyboard navigation in the toolbar.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * A (child) view containing {@link #items toolbar items}.\n\t */\n\tpublic readonly itemsView: ItemsView;\n\n\t/**\n\t * A top–level collection aggregating building blocks of the toolbar.\n\t *\n\t *\t┌───────────────── ToolbarView ─────────────────┐\n\t *\t| ┌──────────────── #children ────────────────┐ |\n\t *\t| | ┌──────────── #itemsView ───────────┐ | |\n\t *\t| | | [ item1 ] [ item2 ] ... [ itemN ] | | |\n\t *\t| | └──────────────────────────────────-┘ | |\n\t *\t| └───────────────────────────────────────────┘ |\n\t *\t└───────────────────────────────────────────────┘\n\t *\n\t * By default, it contains the {@link #itemsView} but it can be extended with additional\n\t * UI elements when necessary.\n\t */\n\tpublic readonly children: ViewCollection;\n\n\t/**\n\t * A collection of {@link #items} that take part in the focus cycling\n\t * (i.e. navigation using the keyboard). Usually, it contains a subset of {@link #items} with\n\t * some optional UI elements that also belong to the toolbar and should be focusable\n\t * by the user.\n\t */\n\tpublic readonly focusables: ViewCollection;\n\n\tdeclare public locale: Locale;\n\n\t/**\n\t * Label used by assistive technologies to describe this toolbar element.\n\t *\n\t * @observable\n\t * @default 'Editor toolbar'\n\t */\n\tdeclare public ariaLabel: string;\n\n\t/**\n\t * The maximum width of the toolbar element.\n\t *\n\t * **Note**: When set to a specific value (e.g. `'200px'`), the value will affect the behavior of the\n\t * {@link module:ui/toolbar/toolbarview~ToolbarOptions#shouldGroupWhenFull}\n\t * option by changing the number of {@link #items} that will be displayed in the toolbar at a time.\n\t *\n\t * @observable\n\t * @default 'auto'\n\t */\n\tdeclare public maxWidth: string;\n\n\t/**\n\t * An additional CSS class added to the {@link #element}.\n\t *\n\t * @observable\n\t * @member {String} #class\n\t */\n\tdeclare public class: string | undefined;\n\n\t/**\n\t * When set true, makes the toolbar look compact with {@link #element}.\n\t *\n\t * @observable\n\t * @default false\n\t */\n\tdeclare public isCompact: boolean;\n\n\t/**\n\t * Controls the orientation of toolbar items. Only available when\n\t * {@link module:ui/toolbar/toolbarview~ToolbarOptions#shouldGroupWhenFull dynamic items grouping}\n\t * is **disabled**.\n\t *\n\t * @observable\n\t */\n\tdeclare public isVertical: boolean;\n\n\t/**\n\t * Helps cycling over {@link #focusables focusable items} in the toolbar.\n\t */\n\tprivate readonly _focusCycler: FocusCycler;\n\n\t/**\n\t * An instance of the active toolbar behavior that shapes its look and functionality.\n\t *\n\t * See {@link module:ui/toolbar/toolbarview~ToolbarBehavior} to learn more.\n\t */\n\tprivate readonly _behavior: ToolbarBehavior;\n\n\t/**\n\t * Creates an instance of the {@link module:ui/toolbar/toolbarview~ToolbarView} class.\n\t *\n\t * Also see {@link #render}.\n\t *\n\t * @param locale The localization services instance.\n\t * @param options Configuration options of the toolbar.\n\t */\n\tconstructor( locale: Locale, options?: ToolbarOptions ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\t\tconst t = this.t!;\n\n\t\tthis.options = options || {};\n\n\t\tthis.set( 'ariaLabel', t( 'Editor toolbar' ) );\n\t\tthis.set( 'maxWidth', 'auto' );\n\n\t\tthis.items = this.createCollection();\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\n\t\tthis.set( 'class', undefined );\n\t\tthis.set( 'isCompact', false );\n\n\t\tthis.itemsView = new ItemsView( locale );\n\t\tthis.children = this.createCollection();\n\t\tthis.children.add( this.itemsView );\n\t\tthis.focusables = this.createCollection();\n\n\t\tconst isRtl = locale.uiLanguageDirection === 'rtl';\n\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this.focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate toolbar items backwards using the arrow[left,up] keys.\n\t\t\t\tfocusPrevious: [ isRtl ? 'arrowright' : 'arrowleft', 'arrowup' ],\n\n\t\t\t\t// Navigate toolbar items forwards using the arrow[right,down] keys.\n\t\t\t\tfocusNext: [ isRtl ? 'arrowleft' : 'arrowright', 'arrowdown' ]\n\t\t\t}\n\t\t} );\n\n\t\tconst classes = [\n\t\t\t'ck',\n\t\t\t'ck-toolbar',\n\t\t\tbind.to( 'class' ),\n\t\t\tbind.if( 'isCompact', 'ck-toolbar_compact' )\n\t\t];\n\n\t\tif ( this.options.shouldGroupWhenFull && this.options.isFloating ) {\n\t\t\tclasses.push( 'ck-toolbar_floating' );\n\t\t}\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: classes,\n\t\t\t\trole: 'toolbar',\n\t\t\t\t'aria-label': bind.to( 'ariaLabel' ),\n\t\t\t\tstyle: {\n\t\t\t\t\tmaxWidth: bind.to( 'maxWidth' )\n\t\t\t\t},\n\t\t\t\ttabindex: -1\n\t\t\t},\n\n\t\t\tchildren: this.children,\n\n\t\t\ton: {\n\t\t\t\t// https://github.com/ckeditor/ckeditor5-ui/issues/206\n\t\t\t\tmousedown: preventDefault( this )\n\t\t\t}\n\t\t} );\n\n\t\tthis._behavior = this.options.shouldGroupWhenFull ? new DynamicGrouping( this ) : new StaticLayout( this );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis.focusTracker.add( this.element! );\n\n\t\t// Children added before rendering should be known to the #focusTracker.\n\t\tfor ( const item of this.items ) {\n\t\t\tthis.focusTracker.add( item.element! );\n\t\t}\n\n\t\tthis.items.on<CollectionAddEvent<View>>( 'add', ( evt, item ) => {\n\t\t\tthis.focusTracker.add( item.element! );\n\t\t} );\n\n\t\tthis.items.on<CollectionRemoveEvent<View>>( 'remove', ( evt, item ) => {\n\t\t\tthis.focusTracker.remove( item.element! );\n\t\t} );\n\n\t\t// Start listening for the keystrokes coming from #element.\n\t\tthis.keystrokes.listenTo( this.element! );\n\n\t\tthis._behavior.render( this );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tthis._behavior.destroy();\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\n\t\treturn super.destroy();\n\t}\n\n\t/**\n\t * Focuses the first focusable in {@link #focusables}.\n\t */\n\tpublic focus(): void {\n\t\tthis._focusCycler.focusFirst();\n\t}\n\n\t/**\n\t * Focuses the last focusable in {@link #focusables}.\n\t */\n\tpublic focusLast(): void {\n\t\tthis._focusCycler.focusLast();\n\t}\n\n\t/**\n\t * A utility that expands the plain toolbar configuration into\n\t * {@link module:ui/toolbar/toolbarview~ToolbarView#items} using a given component factory.\n\t *\n\t * @param itemsOrConfig The toolbar items or the entire toolbar configuration object.\n\t * @param factory A factory producing toolbar items.\n\t * @param removeItems An array of items names to be removed from the configuration. When present, applies\n\t * to this toolbar and all nested ones as well.\n\t */\n\tpublic fillFromConfig(\n\t\titemsOrConfig: ToolbarConfig | undefined,\n\t\tfactory: ComponentFactory,\n\t\tremoveItems?: Array<string>\n\t): void {\n\t\tthis.items.addMany( this._buildItemsFromConfig( itemsOrConfig, factory, removeItems ) );\n\t}\n\n\t/**\n\t * A utility that expands the plain toolbar configuration into a list of view items using a given component factory.\n\t *\n\t * @param itemsOrConfig The toolbar items or the entire toolbar configuration object.\n\t * @param factory A factory producing toolbar items.\n\t * @param removeItems An array of items names to be removed from the configuration. When present, applies\n\t * to this toolbar and all nested ones as well.\n\t */\n\tprivate _buildItemsFromConfig(\n\t\titemsOrConfig: ToolbarConfig | undefined,\n\t\tfactory: ComponentFactory,\n\t\tremoveItems?: Array<string>\n\t): Array<View> {\n\t\tconst config = normalizeToolbarConfig( itemsOrConfig );\n\t\tconst normalizedRemoveItems = removeItems || config.removeItems;\n\t\tconst itemsToAdd = this._cleanItemsConfiguration( config.items, factory, normalizedRemoveItems )\n\t\t\t.map( item => {\n\t\t\t\tif ( isObject( item ) ) {\n\t\t\t\t\treturn this._createNestedToolbarDropdown( item, factory, normalizedRemoveItems );\n\t\t\t\t} else if ( item === '|' ) {\n\t\t\t\t\treturn new ToolbarSeparatorView();\n\t\t\t\t} else if ( item === '-' ) {\n\t\t\t\t\treturn new ToolbarLineBreakView();\n\t\t\t\t}\n\n\t\t\t\treturn factory.create( item );\n\t\t\t} )\n\t\t\t.filter( ( item ): item is View => !!item );\n\n\t\treturn itemsToAdd;\n\t}\n\n\t/**\n\t * Cleans up the {@link module:ui/toolbar/toolbarview~ToolbarView#items} of the toolbar by removing unwanted items and\n\t * duplicated (obsolete) separators or line breaks.\n\t *\n\t * @param items The toolbar items configuration.\n\t * @param factory A factory producing toolbar items.\n\t * @param removeItems An array of items names to be removed from the configuration.\n\t * @returns Items after the clean-up.\n\t */\n\tprivate _cleanItemsConfiguration(\n\t\titems: Array<ToolbarConfigItem>,\n\t\tfactory: ComponentFactory,\n\t\tremoveItems: Array<string>\n\t) {\n\t\tconst filteredItems = items\n\t\t\t.filter( ( item, idx, items ) => {\n\t\t\t\tif ( item === '|' ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Items listed in `config.removeItems` should not be added to the toolbar.\n\t\t\t\tif ( removeItems.indexOf( item as any ) !== -1 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( item === '-' ) {\n\t\t\t\t\t// The toolbar line breaks must not be rendered when toolbar grouping is enabled.\n\t\t\t\t\t// (https://github.com/ckeditor/ckeditor5/issues/8582)\n\t\t\t\t\tif ( this.options.shouldGroupWhenFull ) {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * The toolbar multiline breaks (`-` items) only work when the automatic button grouping\n\t\t\t\t\t\t * is disabled in the toolbar configuration.\n\t\t\t\t\t\t * To do this, set the `shouldNotGroupWhenFull` option to `true` in the editor configuration:\n\t\t\t\t\t\t *\n\t\t\t\t\t\t * ```ts\n\t\t\t\t\t\t * const config = {\n\t\t\t\t\t\t * \ttoolbar: {\n\t\t\t\t\t\t * \t\titems: [ ... ],\n\t\t\t\t\t\t * \t\tshouldNotGroupWhenFull: true\n\t\t\t\t\t\t * \t}\n\t\t\t\t\t\t * }\n\t\t\t\t\t\t * ```\n\t\t\t\t\t\t *\n\t\t\t\t\t\t * Learn more about {@link module:core/editor/editorconfig~EditorConfig#toolbar toolbar configuration}.\n\t\t\t\t\t\t *\n\t\t\t\t\t\t * @error toolbarview-line-break-ignored-when-grouping-items\n\t\t\t\t\t\t */\n\t\t\t\t\t\tlogWarning( 'toolbarview-line-break-ignored-when-grouping-items', items );\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// For the items that cannot be instantiated we are sending warning message. We also filter them out.\n\t\t\t\tif ( !isObject( item ) && !factory.has( item ) ) {\n\t\t\t\t\t/**\n\t\t\t\t\t * There was a problem processing the configuration of the toolbar. The item with the given\n\t\t\t\t\t * name does not exist so it was omitted when rendering the toolbar.\n\t\t\t\t\t *\n\t\t\t\t\t * This warning usually shows up when the {@link module:core/plugin~Plugin} which is supposed\n\t\t\t\t\t * to provide a toolbar item has not been loaded or there is a typo in the configuration.\n\t\t\t\t\t *\n\t\t\t\t\t * Make sure the plugin responsible for this toolbar item is loaded and the toolbar configuration\n\t\t\t\t\t * is correct, e.g. {@link module:basic-styles/bold~Bold} is loaded for the `'bold'` toolbar item.\n\t\t\t\t\t *\n\t\t\t\t\t * You can use the following snippet to retrieve all available toolbar items:\n\t\t\t\t\t *\n\t\t\t\t\t * ```ts\n\t\t\t\t\t * Array.from( editor.ui.componentFactory.names() );\n\t\t\t\t\t * ```\n\t\t\t\t\t *\n\t\t\t\t\t * @error toolbarview-item-unavailable\n\t\t\t\t\t * @param item The name of the component or nested toolbar definition.\n\t\t\t\t\t */\n\t\t\t\t\tlogWarning( 'toolbarview-item-unavailable', { item } );\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t} );\n\n\t\treturn this._cleanSeparatorsAndLineBreaks( filteredItems );\n\t}\n\n\t/**\n\t * Remove leading, trailing, and duplicated separators (`-` and `|`).\n\t *\n\t * @returns Toolbar items after the separator and line break clean-up.\n\t */\n\tprivate _cleanSeparatorsAndLineBreaks( items: Array<ToolbarConfigItem> ) {\n\t\tconst nonSeparatorPredicate = ( item: ToolbarConfigItem ) => ( item !== '-' && item !== '|' );\n\t\tconst count = items.length;\n\n\t\t// Find an index of the first item that is not a separator.\n\t\tconst firstCommandItemIndex = items.findIndex( nonSeparatorPredicate );\n\n\t\t// Items include separators only. There is no point in displaying them.\n\t\tif ( firstCommandItemIndex === -1 ) {\n\t\t\treturn [];\n\t\t}\n\n\t\t// Search from the end of the list, then convert found index back to the original direction.\n\t\tconst lastCommandItemIndex = count - items\n\t\t\t.slice()\n\t\t\t.reverse()\n\t\t\t.findIndex( nonSeparatorPredicate );\n\n\t\treturn items\n\t\t\t// Return items without the leading and trailing separators.\n\t\t\t.slice( firstCommandItemIndex, lastCommandItemIndex )\n\t\t\t// Remove duplicated separators.\n\t\t\t.filter( ( name, idx, items ) => {\n\t\t\t\t// Filter only separators.\n\t\t\t\tif ( nonSeparatorPredicate( name ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconst isDuplicated = idx > 0 && items[ idx - 1 ] === name;\n\n\t\t\t\treturn !isDuplicated;\n\t\t\t} );\n\t}\n\n\t/**\n\t * Creates a user-defined dropdown containing a toolbar with items.\n\t *\n\t * @param definition A definition of the nested toolbar dropdown.\n\t * @param definition.label A label of the dropdown.\n\t * @param definition.icon An icon of the drop-down. One of 'bold', 'plus', 'text', 'importExport', 'alignLeft',\n\t * 'paragraph' or an SVG string. When `false` is passed, no icon will be used.\n\t * @param definition.withText When set `true`, the label of the dropdown will be visible. See\n\t * {@link module:ui/button/buttonview~ButtonView#withText} to learn more.\n\t * @param definition.tooltip A tooltip of the dropdown button. See\n\t * {@link module:ui/button/buttonview~ButtonView#tooltip} to learn more. Defaults to `true`.\n\t * @param componentFactory Component factory used to create items\n\t * of the nested toolbar.\n\t */\n\tprivate _createNestedToolbarDropdown(\n\t\tdefinition: Exclude<ToolbarConfigItem, string>,\n\t\tcomponentFactory: ComponentFactory,\n\t\tremoveItems: Array<string>\n\t) {\n\t\tlet { label, icon, items, tooltip = true, withText = false } = definition;\n\n\t\titems = this._cleanItemsConfiguration( items, componentFactory, removeItems );\n\n\t\t// There is no point in rendering a dropdown without items.\n\t\tif ( !items.length ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst locale = this.locale;\n\t\tconst dropdownView = createDropdown( locale );\n\n\t\tif ( !label ) {\n\t\t\t/**\n\t\t\t * A dropdown definition in the toolbar configuration is missing a text label.\n\t\t\t *\n\t\t\t * Without a label, the dropdown becomes inaccessible to users relying on assistive technologies.\n\t\t\t * Make sure the `label` property is set in your drop-down configuration:\n\t\t\t *\n\t\t\t * ```json\n \t\t\t * {\n \t\t\t * \tlabel: 'A human-readable label',\n\t\t\t * \ticon: '...',\n\t\t\t * \titems: [ ... ]\n \t\t\t * },\n\t\t\t * ```\n\t\t\t *\n\t\t\t * Learn more about {@link module:core/editor/editorconfig~EditorConfig#toolbar toolbar configuration}.\n\t\t\t *\n\t\t\t * @error toolbarview-nested-toolbar-dropdown-missing-label\n\t\t\t */\n\t\t\tlogWarning( 'toolbarview-nested-toolbar-dropdown-missing-label', definition );\n\t\t}\n\n\t\tdropdownView.class = 'ck-toolbar__nested-toolbar-dropdown';\n\t\tdropdownView.buttonView.set( {\n\t\t\tlabel,\n\t\t\ttooltip,\n\t\t\twithText: !!withText\n\t\t} );\n\n\t\t// Allow disabling icon by passing false.\n\t\tif ( icon !== false ) {\n\t\t\t// A pre-defined icon picked by name, SVG string, a fallback (default) icon.\n\t\t\tdropdownView.buttonView.icon = NESTED_TOOLBAR_ICONS[ icon! ] || icon || threeVerticalDots;\n\t\t}\n\t\t// If the icon is disabled, display the label automatically.\n\t\telse {\n\t\t\tdropdownView.buttonView.withText = true;\n\t\t}\n\n\t\taddToolbarToDropdown( dropdownView, () => (\n\t\t\tdropdownView.toolbarView!._buildItemsFromConfig( items, componentFactory, removeItems )\n\t\t) );\n\n\t\treturn dropdownView;\n\t}\n}\n\n/**\n * Fired when some toolbar {@link ~ToolbarView#items} were grouped or ungrouped as a result of some change\n * in the toolbar geometry.\n *\n * **Note**: This event is always fired **once** regardless of the number of items that were be\n * grouped or ungrouped at a time.\n *\n * **Note**: This event is fired only if the items grouping functionality was enabled in\n * the first place (see {@link module:ui/toolbar/toolbarview~ToolbarOptions#shouldGroupWhenFull}).\n *\n * @eventName ~ToolbarView#groupedItemsUpdate\n */\nexport type ToolbarViewGroupedItemsUpdateEvent = {\n\tname: 'groupedItemsUpdate';\n\targs: [];\n};\n\n/**\n * An inner block of the {@link module:ui/toolbar/toolbarview~ToolbarView} hosting its\n * {@link module:ui/toolbar/toolbarview~ToolbarView#items}.\n */\nclass ItemsView extends View {\n\t/**\n\t * A collection of items (buttons, dropdowns, etc.).\n\t */\n\tpublic readonly children: ViewCollection;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.children = this.createCollection();\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-toolbar__items'\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n}\n\n/**\n * A toolbar behavior that makes it static and unresponsive to the changes of the environment.\n * At the same time, it also makes it possible to display a toolbar with a vertical layout\n * using the {@link module:ui/toolbar/toolbarview~ToolbarView#isVertical} property.\n */\nclass StaticLayout implements ToolbarBehavior {\n\t/**\n\t * Creates an instance of the {@link module:ui/toolbar/toolbarview~StaticLayout} toolbar\n\t * behavior.\n\t *\n\t * @param view An instance of the toolbar that this behavior is added to.\n\t */\n\tconstructor( view: ToolbarView ) {\n\t\tconst bind = view.bindTemplate;\n\n\t\t// Static toolbar can be vertical when needed.\n\t\tview.set( 'isVertical', false );\n\n\t\t// 1:1 pass–through binding, all ToolbarView#items are visible.\n\t\tview.itemsView.children.bindTo( view.items ).using( item => item );\n\n\t\t// 1:1 pass–through binding, all ToolbarView#items are focusable.\n\t\tview.focusables.bindTo( view.items ).using( item => item );\n\n\t\tview.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t// When vertical, the toolbar has an additional CSS class.\n\t\t\t\t\tbind.if( 'isVertical', 'ck-toolbar_vertical' )\n\t\t\t\t]\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic render(): void {}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic destroy(): void {}\n}\n\n/**\n * A toolbar behavior that makes the items respond to changes in the geometry.\n *\n * In a nutshell, it groups {@link module:ui/toolbar/toolbarview~ToolbarView#items}\n * that do not fit visually into a single row of the toolbar (due to limited space).\n * Items that do not fit are aggregated in a dropdown displayed at the end of the toolbar.\n *\n * ```\n *\t┌──────────────────────────────────────── ToolbarView ──────────────────────────────────────────┐\n *\t| ┌─────────────────────────────────────── #children ─────────────────────────────────────────┐ |\n *\t| | ┌─────── #itemsView ────────┐ ┌──────────────────────┐ ┌── #groupedItemsDropdown ───┐ | |\n *\t| | | #ungroupedItems | | ToolbarSeparatorView | | #groupedItems | | |\n *\t| | └──────────────────────────-┘ └──────────────────────┘ └────────────────────────────┘ | |\n *\t| | \\---------- only when toolbar items overflow -------/ | |\n *\t| └───────────────────────────────────────────────────────────────────────────────────────────┘ |\n *\t└───────────────────────────────────────────────────────────────────────────────────────────────┘\n * ```\n */\nclass DynamicGrouping implements ToolbarBehavior {\n\t/**\n\t * A toolbar view this behavior belongs to.\n\t */\n\tpublic readonly view: ToolbarView;\n\n\t/**\n\t * A collection of toolbar children.\n\t */\n\tpublic readonly viewChildren: ViewCollection;\n\n\t/**\n\t * A collection of focusable toolbar elements.\n\t */\n\tpublic readonly viewFocusables: ViewCollection;\n\n\t/**\n\t * A view containing toolbar items.\n\t */\n\tpublic readonly viewItemsView: ItemsView;\n\n\t/**\n\t * Toolbar focus tracker.\n\t */\n\tpublic readonly viewFocusTracker: FocusTracker;\n\n\t/**\n\t * Toolbar locale.\n\t */\n\tpublic readonly viewLocale: Locale;\n\n\t/**\n\t * A subset of toolbar {@link module:ui/toolbar/toolbarview~ToolbarView#items}.\n\t * Aggregates items that fit into a single row of the toolbar and were not {@link #groupedItems grouped}\n\t * into a {@link #groupedItemsDropdown dropdown}. Items of this collection are displayed in the\n\t * {@link module:ui/toolbar/toolbarview~ToolbarView#itemsView}.\n\t *\n\t * When none of the {@link module:ui/toolbar/toolbarview~ToolbarView#items} were grouped, it\n\t * matches the {@link module:ui/toolbar/toolbarview~ToolbarView#items} collection in size and order.\n\t */\n\tpublic readonly ungroupedItems: ViewCollection;\n\n\t/**\n\t * A subset of toolbar {@link module:ui/toolbar/toolbarview~ToolbarView#items}.\n\t * A collection of the toolbar items that do not fit into a single row of the toolbar.\n\t * Grouped items are displayed in a dedicated {@link #groupedItemsDropdown dropdown}.\n\t *\n\t * When none of the {@link module:ui/toolbar/toolbarview~ToolbarView#items} were grouped,\n\t * this collection is empty.\n\t */\n\tpublic readonly groupedItems: ViewCollection;\n\n\t/**\n\t * The dropdown that aggregates {@link #groupedItems grouped items} that do not fit into a single\n\t * row of the toolbar. It is displayed on demand as the last of\n\t * {@link module:ui/toolbar/toolbarview~ToolbarView#children toolbar children} and offers another\n\t * (nested) toolbar which displays items that would normally overflow.\n\t */\n\tpublic readonly groupedItemsDropdown: DropdownView;\n\n\t/**\n\t * An instance of the resize observer that helps dynamically determine the geometry of the toolbar\n\t * and manage items that do not fit into a single row.\n\t *\n\t * **Note:** Created in {@link #_enableGroupingOnResize}.\n\t *\n\t * @readonly\n\t */\n\tpublic resizeObserver: ResizeObserver | null = null;\n\n\t/**\n\t * A cached value of the horizontal padding style used by {@link #_updateGrouping}\n\t * to manage the {@link module:ui/toolbar/toolbarview~ToolbarView#items} that do not fit into\n\t * a single toolbar line. This value can be reused between updates because it is unlikely that\n\t * the padding will change and re–using `Window.getComputedStyle()` is expensive.\n\t *\n\t * @readonly\n\t */\n\tpublic cachedPadding: number | null = null;\n\n\t/**\n\t * A flag indicating that an items grouping update has been queued (e.g. due to the toolbar being visible)\n\t * and should be executed immediately the next time the toolbar shows up.\n\t *\n\t * @readonly\n\t */\n\tpublic shouldUpdateGroupingOnNextResize: boolean = false;\n\n\t/**\n\t * Toolbar element.\n\t *\n\t * @readonly\n\t */\n\tpublic viewElement: HTMLElement | null | undefined;\n\n\t/**\n\t * Creates an instance of the {@link module:ui/toolbar/toolbarview~DynamicGrouping} toolbar\n\t * behavior.\n\t *\n\t * @param view An instance of the toolbar that this behavior is added to.\n\t */\n\tconstructor( view: ToolbarView ) {\n\t\tthis.view = view;\n\n\t\tthis.viewChildren = view.children;\n\t\tthis.viewFocusables = view.focusables;\n\t\tthis.viewItemsView = view.itemsView;\n\t\tthis.viewFocusTracker = view.focusTracker;\n\t\tthis.viewLocale = view.locale;\n\n\t\tthis.ungroupedItems = view.createCollection();\n\t\tthis.groupedItems = view.createCollection();\n\t\tthis.groupedItemsDropdown = this._createGroupedItemsDropdown();\n\n\t\t// Only those items that were not grouped are visible to the user.\n\t\tview.itemsView.children.bindTo( this.ungroupedItems ).using( item => item );\n\n\t\t// Make sure all #items visible in the main space of the toolbar are \"focuscycleable\".\n\t\tthis.ungroupedItems.on<CollectionChangeEvent>( 'change', this._updateFocusCycleableItems.bind( this ) );\n\n\t\t// Make sure the #groupedItemsDropdown is also included in cycling when it appears.\n\t\tview.children.on<CollectionChangeEvent>( 'change', this._updateFocusCycleableItems.bind( this ) );\n\n\t\t// ToolbarView#items is dynamic. When an item is added or removed, it should be automatically\n\t\t// represented in either grouped or ungrouped items at the right index.\n\t\t// In other words #items == concat( #ungroupedItems, #groupedItems )\n\t\t// (in length and order).\n\t\tview.items.on<CollectionChangeEvent<View>>( 'change', ( evt, changeData ) => {\n\t\t\tconst index = changeData.index;\n\t\t\tconst added = Array.from( changeData.added );\n\n\t\t\t// Removing.\n\t\t\tfor ( const removedItem of changeData.removed ) {\n\t\t\t\tif ( index >= this.ungroupedItems.length ) {\n\t\t\t\t\tthis.groupedItems.remove( removedItem );\n\t\t\t\t} else {\n\t\t\t\t\tthis.ungroupedItems.remove( removedItem );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Adding.\n\t\t\tfor ( let currentIndex = index; currentIndex < index + added.length; currentIndex++ ) {\n\t\t\t\tconst addedItem = added[ currentIndex - index ];\n\n\t\t\t\tif ( currentIndex > this.ungroupedItems.length ) {\n\t\t\t\t\tthis.groupedItems.add( addedItem, currentIndex - this.ungroupedItems.length );\n\t\t\t\t} else {\n\t\t\t\t\tthis.ungroupedItems.add( addedItem, currentIndex );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// When new ungrouped items join in and land in #ungroupedItems, there's a chance it causes\n\t\t\t// the toolbar to overflow.\n\t\t\t// Consequently if removed from grouped or ungrouped items, there is a chance\n\t\t\t// some new space is available and we could do some ungrouping.\n\t\t\tthis._updateGrouping();\n\t\t} );\n\n\t\tview.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t// To group items dynamically, the toolbar needs a dedicated CSS class.\n\t\t\t\t\t'ck-toolbar_grouping'\n\t\t\t\t]\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Enables dynamic items grouping based on the dimensions of the toolbar.\n\t *\n\t * @param view An instance of the toolbar that this behavior is added to.\n\t */\n\tpublic render( view: ToolbarView ): void {\n\t\tthis.viewElement = view.element;\n\n\t\tthis._enableGroupingOnResize();\n\t\tthis._enableGroupingOnMaxWidthChange( view );\n\t}\n\n\t/**\n\t * Cleans up the internals used by this behavior.\n\t */\n\tpublic destroy(): void {\n\t\t// The dropdown may not be in ToolbarView#children at the moment of toolbar destruction\n\t\t// so let's make sure it's actually destroyed along with the toolbar.\n\t\tthis.groupedItemsDropdown.destroy();\n\n\t\tthis.resizeObserver!.destroy();\n\t}\n\n\t/**\n\t * When called, it will check if any of the {@link #ungroupedItems} do not fit into a single row of the toolbar,\n\t * and it will move them to the {@link #groupedItems} when it happens.\n\t *\n\t * At the same time, it will also check if there is enough space in the toolbar for the first of the\n\t * {@link #groupedItems} to be returned back to {@link #ungroupedItems} and still fit into a single row\n\t * without the toolbar wrapping.\n\t */\n\tprivate _updateGrouping() {\n\t\t// Do no grouping–related geometry analysis when the toolbar is detached from visible DOM,\n\t\t// for instance before #render(), or after render but without a parent or a parent detached\n\t\t// from DOM. DOMRects won't work anyway and there will be tons of warning in the console and\n\t\t// nothing else. This happens, for instance, when the toolbar is detached from DOM and\n\t\t// some logic adds or removes its #items.\n\t\tif ( !this.viewElement!.ownerDocument.body.contains( this.viewElement! ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Do not update grouping when the element is invisible. Such toolbar has DOMRect filled with zeros\n\t\t// and that would cause all items to be grouped. Instead, queue the grouping so it runs next time\n\t\t// the toolbar is visible (the next ResizeObserver callback execution). This is handy because\n\t\t// the grouping could be caused by increasing the #maxWidth when the toolbar was invisible and the next\n\t\t// time it shows up, some items could actually be ungrouped (https://github.com/ckeditor/ckeditor5/issues/6575).\n\t\tif ( !isVisible( this.viewElement ) ) {\n\t\t\tthis.shouldUpdateGroupingOnNextResize = true;\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember how many items were initially grouped so at the it is possible to figure out if the number\n\t\t// of grouped items has changed. If the number has changed, geometry of the toolbar has also changed.\n\t\tconst initialGroupedItemsCount = this.groupedItems.length;\n\t\tlet wereItemsGrouped;\n\n\t\t// Group #items as long as some wrap to the next row. This will happen, for instance,\n\t\t// when the toolbar is getting narrow and there is not enough space to display all items in\n\t\t// a single row.\n\t\twhile ( this._areItemsOverflowing ) {\n\t\t\tthis._groupLastItem();\n\n\t\t\twereItemsGrouped = true;\n\t\t}\n\n\t\t// If none were grouped now but there were some items already grouped before,\n\t\t// then, what the hell, maybe let's see if some of them can be ungrouped. This happens when,\n\t\t// for instance, the toolbar is stretching and there's more space in it than before.\n\t\tif ( !wereItemsGrouped && this.groupedItems.length ) {\n\t\t\t// Ungroup items as long as none are overflowing or there are none to ungroup left.\n\t\t\twhile ( this.groupedItems.length && !this._areItemsOverflowing ) {\n\t\t\t\tthis._ungroupFirstItem();\n\t\t\t}\n\n\t\t\t// If the ungrouping ended up with some item wrapping to the next row,\n\t\t\t// put it back to the group toolbar (\"undo the last ungroup\"). We don't know whether\n\t\t\t// an item will wrap or not until we ungroup it (that's a DOM/CSS thing) so this\n\t\t\t// clean–up is vital for the algorithm.\n\t\t\tif ( this._areItemsOverflowing ) {\n\t\t\t\tthis._groupLastItem();\n\t\t\t}\n\t\t}\n\n\t\tif ( this.groupedItems.length !== initialGroupedItemsCount ) {\n\t\t\tthis.view.fire<ToolbarViewGroupedItemsUpdateEvent>( 'groupedItemsUpdate' );\n\t\t}\n\t}\n\n\t/**\n\t * Returns `true` when {@link module:ui/toolbar/toolbarview~ToolbarView#element} children visually overflow,\n\t * for instance if the toolbar is narrower than its members. Returns `false` otherwise.\n\t */\n\tprivate get _areItemsOverflowing() {\n\t\t// An empty toolbar cannot overflow.\n\t\tif ( !this.ungroupedItems.length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst element = this.viewElement;\n\t\tconst uiLanguageDirection = this.viewLocale.uiLanguageDirection;\n\t\tconst lastChildRect = new Rect( element!.lastChild as any );\n\t\tconst toolbarRect = new Rect( element! );\n\n\t\tif ( !this.cachedPadding ) {\n\t\t\tconst computedStyle = global.window.getComputedStyle( element! );\n\t\t\tconst paddingProperty = uiLanguageDirection === 'ltr' ? 'paddingRight' : 'paddingLeft';\n\n\t\t\t// parseInt() is essential because of quirky floating point numbers logic and DOM.\n\t\t\t// If the padding turned out too big because of that, the grouped items dropdown would\n\t\t\t// always look (from the Rect perspective) like it overflows (while it's not).\n\t\t\tthis.cachedPadding = Number.parseInt( computedStyle[ paddingProperty ] );\n\t\t}\n\n\t\tif ( uiLanguageDirection === 'ltr' ) {\n\t\t\treturn lastChildRect.right > toolbarRect.right - this.cachedPadding;\n\t\t} else {\n\t\t\treturn lastChildRect.left < toolbarRect.left + this.cachedPadding;\n\t\t}\n\t}\n\n\t/**\n\t * Enables the functionality that prevents {@link #ungroupedItems} from overflowing (wrapping to the next row)\n\t * upon resize when there is little space available. Instead, the toolbar items are moved to the\n\t * {@link #groupedItems} collection and displayed in a dropdown at the end of the row (which has its own nested toolbar).\n\t *\n\t * When called, the toolbar will automatically analyze the location of its {@link #ungroupedItems} and \"group\"\n\t * them in the dropdown if necessary. It will also observe the browser window for size changes in\n\t * the future and respond to them by grouping more items or reverting already grouped back, depending\n\t * on the visual space available.\n\t */\n\tprivate _enableGroupingOnResize() {\n\t\tlet previousWidth: number | undefined;\n\n\t\t// TODO: Consider debounce.\n\t\tthis.resizeObserver = new ResizeObserver( this.viewElement!, entry => {\n\t\t\tif ( !previousWidth || previousWidth !== entry.contentRect.width || this.shouldUpdateGroupingOnNextResize ) {\n\t\t\t\tthis.shouldUpdateGroupingOnNextResize = false;\n\n\t\t\t\tthis._updateGrouping();\n\n\t\t\t\tpreviousWidth = entry.contentRect.width;\n\t\t\t}\n\t\t} );\n\n\t\tthis._updateGrouping();\n\t}\n\n\t/**\n\t * Enables the grouping functionality, just like {@link #_enableGroupingOnResize} but the difference is that\n\t * it listens to the changes of {@link module:ui/toolbar/toolbarview~ToolbarView#maxWidth} instead.\n\t */\n\tprivate _enableGroupingOnMaxWidthChange( view: View ) {\n\t\tview.on<ObservableChangeEvent>( 'change:maxWidth', () => {\n\t\t\tthis._updateGrouping();\n\t\t} );\n\t}\n\n\t/**\n\t * When called, it will remove the last item from {@link #ungroupedItems} and move it back\n\t * to the {@link #groupedItems} collection.\n\t *\n\t * The opposite of {@link #_ungroupFirstItem}.\n\t */\n\tprivate _groupLastItem() {\n\t\tif ( !this.groupedItems.length ) {\n\t\t\tthis.viewChildren.add( new ToolbarSeparatorView() );\n\t\t\tthis.viewChildren.add( this.groupedItemsDropdown );\n\t\t\tthis.viewFocusTracker.add( this.groupedItemsDropdown.element! );\n\t\t}\n\n\t\tthis.groupedItems.add( this.ungroupedItems.remove( this.ungroupedItems.last! ), 0 );\n\t}\n\n\t/**\n\t * Moves the very first item belonging to {@link #groupedItems} back\n\t * to the {@link #ungroupedItems} collection.\n\t *\n\t * The opposite of {@link #_groupLastItem}.\n\t */\n\tprivate _ungroupFirstItem() {\n\t\tthis.ungroupedItems.add( this.groupedItems.remove( this.groupedItems.first! ) );\n\n\t\tif ( !this.groupedItems.length ) {\n\t\t\tthis.viewChildren.remove( this.groupedItemsDropdown );\n\t\t\tthis.viewChildren.remove( this.viewChildren.last! );\n\t\t\tthis.viewFocusTracker.remove( this.groupedItemsDropdown.element! );\n\t\t}\n\t}\n\n\t/**\n\t * Creates the {@link #groupedItemsDropdown} that hosts the members of the {@link #groupedItems}\n\t * collection when there is not enough space in the toolbar to display all items in a single row.\n\t */\n\tprivate _createGroupedItemsDropdown() {\n\t\tconst locale = this.viewLocale;\n\t\tconst t = locale.t;\n\t\tconst dropdown = createDropdown( locale );\n\n\t\tdropdown.class = 'ck-toolbar__grouped-dropdown';\n\n\t\t// Make sure the dropdown never sticks out to the left/right. It should be under the main toolbar.\n\t\t// (https://github.com/ckeditor/ckeditor5/issues/5608)\n\t\tdropdown.panelPosition = locale.uiLanguageDirection === 'ltr' ? 'sw' : 'se';\n\n\t\taddToolbarToDropdown( dropdown, this.groupedItems );\n\n\t\tdropdown.buttonView.set( {\n\t\t\tlabel: t( 'Show more items' ),\n\t\t\ttooltip: true,\n\t\t\ttooltipPosition: locale.uiLanguageDirection === 'rtl' ? 'se' : 'sw',\n\t\t\ticon: threeVerticalDots\n\t\t} );\n\n\t\treturn dropdown;\n\t}\n\n\t/**\n\t * Updates the {@link module:ui/toolbar/toolbarview~ToolbarView#focusables focus–cycleable items}\n\t * collection so it represents the up–to–date state of the UI from the perspective of the user.\n\t *\n\t * For instance, the {@link #groupedItemsDropdown} can show up and hide but when it is visible,\n\t * it must be subject to focus cycling in the toolbar.\n\t *\n\t * See the {@link module:ui/toolbar/toolbarview~ToolbarView#focusables collection} documentation\n\t * to learn more about the purpose of this method.\n\t */\n\tprivate _updateFocusCycleableItems() {\n\t\tthis.viewFocusables.clear();\n\n\t\tthis.ungroupedItems.map( item => {\n\t\t\tthis.viewFocusables.add( item );\n\t\t} );\n\n\t\tif ( this.groupedItems.length ) {\n\t\t\tthis.viewFocusables.add( this.groupedItemsDropdown );\n\t\t}\n\t}\n}\n\n/**\n * Options passed to the {@link module:ui/toolbar/toolbarview~ToolbarView#constructor} of the toolbar.\n */\nexport interface ToolbarOptions {\n\n\t/**\n\t * When set to `true`, the toolbar will automatically group {@link module:ui/toolbar/toolbarview~ToolbarView#items} that\n\t * would normally wrap to the next line when there is not enough space to display them in a single row, for\n\t * instance, if the parent container of the toolbar is narrow. For toolbars in absolutely positioned containers\n\t * without width restrictions also the {@link module:ui/toolbar/toolbarview~ToolbarOptions#isFloating} option is required to be `true`.\n\t *\n\t * See also: {@link module:ui/toolbar/toolbarview~ToolbarView#maxWidth}.\n\t */\n\tshouldGroupWhenFull?: boolean;\n\n\t/**\n\t * This option should be enabled for toolbars in absolutely positioned containers without width restrictions\n\t * to enable automatic {@link module:ui/toolbar/toolbarview~ToolbarView#items} grouping.\n\t * When this option is set to `true`, the items will stop wrapping to the next line\n\t * and together with {@link module:ui/toolbar/toolbarview~ToolbarOptions#shouldGroupWhenFull},\n\t * this will allow grouping them when there is not enough space in a single row.\n\t */\n\tisFloating?: boolean;\n}\n\n/**\n * A class interface defining the behavior of the {@link module:ui/toolbar/toolbarview~ToolbarView}.\n *\n * Toolbar behaviors extend its look and functionality and have an impact on the\n * {@link module:ui/toolbar/toolbarview~ToolbarView#element} template or\n * {@link module:ui/toolbar/toolbarview~ToolbarView#render rendering}. They can be enabled\n * conditionally, e.g. depending on the configuration of the toolbar.\n */\nexport interface ToolbarBehavior {\n\n\t/**\n\t * A method called after the toolbar has been {@link module:ui/toolbar/toolbarview~ToolbarView#render rendered}.\n\t * It can be used to, for example, customize the behavior of the toolbar when its\n\t * {@link module:ui/toolbar/toolbarview~ToolbarView#element} is available.\n\t *\n\t * @param view An instance of the toolbar being rendered.\n\t */\n\trender( view: ToolbarView ): void;\n\n\t/**\n\t * A method called after the toolbar has been {@link module:ui/toolbar/toolbarview~ToolbarView#destroy destroyed}.\n\t * It allows cleaning up after the toolbar behavior, for instance, this is the right place to detach\n\t * event listeners, free up references, etc.\n\t */\n\tdestroy(): void;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/bindings/preventdefault\n */\n\nimport type { ListenerBinding } from '../template';\nimport type View from '../view';\n\n/**\n * A helper which executes a native `Event.preventDefault()` if the target of an event equals the\n * {@link module:ui/view~View#element element of the view}. It shortens the definition of a\n * {@link module:ui/view~View#template template}.\n *\n * ```ts\n * // In a class extending View.\n * import preventDefault from '@ckeditor/ckeditor5-ui/src/bindings/preventdefault';\n *\n * // ...\n *\n * this.setTemplate( {\n * \ttag: 'div',\n *\n * \ton: {\n * \t\t// Prevent the default mousedown action on this view.\n * \t\tmousedown: preventDefault( this )\n * \t}\n * } );\n * ```\n *\n * @param view View instance that defines the template.\n */\nexport default function preventDefault( view: View ): ListenerBinding {\n\treturn view.bindTemplate.to( evt => {\n\t\tif ( evt.target === view.element ) {\n\t\t\tevt.preventDefault();\n\t\t}\n\t} );\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./list.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/list/listview\n */\n\nimport View from '../view';\nimport FocusCycler from '../focuscycler';\n\nimport type ListItemView from './listitemview';\nimport type DropdownPanelFocusable from '../dropdown/dropdownpanelfocusable';\nimport type ViewCollection from '../viewcollection';\n\nimport {\n\tFocusTracker,\n\tKeystrokeHandler,\n\ttype CollectionAddEvent,\n\ttype CollectionRemoveEvent,\n\ttype Locale\n} from '@ckeditor/ckeditor5-utils';\n\nimport '../../theme/components/list/list.css';\n\n/**\n * The list view class.\n */\nexport default class ListView extends View<HTMLUListElement> implements DropdownPanelFocusable {\n\t/**\n\t * Collection of the child list views.\n\t */\n\tpublic readonly items: ViewCollection;\n\n\t/**\n\t * Tracks information about DOM focus in the list.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * Instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * Label used by assistive technologies to describe this list element.\n\t *\n\t * @observable\n\t */\n\tdeclare public ariaLabel: string | undefined;\n\n\t/**\n\t * The property reflected by the `role` DOM attribute to be used by assistive technologies.\n\t *\n\t * @observable\n\t */\n\tdeclare public role: string | undefined;\n\n\t/**\n\t * Helps cycling over focusable {@link #items} in the list.\n\t */\n\tprivate readonly _focusCycler: FocusCycler;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.items = this.createCollection();\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this.items,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate list items backwards using the arrowup key.\n\t\t\t\tfocusPrevious: 'arrowup',\n\n\t\t\t\t// Navigate toolbar items forwards using the arrowdown key.\n\t\t\t\tfocusNext: 'arrowdown'\n\t\t\t}\n\t\t} );\n\n\t\tthis.set( 'ariaLabel', undefined );\n\t\tthis.set( 'role', undefined );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'ul',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-reset',\n\t\t\t\t\t'ck-list'\n\t\t\t\t],\n\t\t\t\trole: bind.to( 'role' ),\n\t\t\t\t'aria-label': bind.to( 'ariaLabel' )\n\t\t\t},\n\n\t\t\tchildren: this.items\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\t// Items added before rendering should be known to the #focusTracker.\n\t\tfor ( const item of this.items ) {\n\t\t\tthis.focusTracker.add( item.element! );\n\t\t}\n\n\t\tthis.items.on<CollectionAddEvent<ListItemView>>( 'add', ( evt, item ) => {\n\t\t\tthis.focusTracker.add( item.element! );\n\t\t} );\n\n\t\tthis.items.on<CollectionRemoveEvent<ListItemView>>( 'remove', ( evt, item ) => {\n\t\t\tthis.focusTracker.remove( item.element! );\n\t\t} );\n\n\t\t// Start listening for the keystrokes coming from #element.\n\t\tthis.keystrokes.listenTo( this.element! );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Focuses the first focusable in {@link #items}.\n\t */\n\tpublic focus(): void {\n\t\tthis._focusCycler.focusFirst();\n\t}\n\n\t/**\n\t * Focuses the last focusable in {@link #items}.\n\t */\n\tpublic focusLast(): void {\n\t\tthis._focusCycler.focusLast();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/list/listitemview\n */\n\nimport View from '../view';\n\nimport type { FocusableView } from '../focuscycler';\nimport type ViewCollection from '../viewcollection';\n\nimport type { Locale } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The list item view class.\n */\nexport default class ListItemView extends View {\n\t/**\n\t * Collection of the child views inside of the list item {@link #element}.\n\t */\n\tpublic readonly children: ViewCollection;\n\n\t/**\n\t * Controls whether the item view is visible. Visible by default, list items are hidden\n\t * using a CSS class.\n\t *\n\t * @observable\n\t * @default true\n\t */\n\tdeclare public isVisible: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.set( 'isVisible', true );\n\n\t\tthis.children = this.createCollection();\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'li',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-list__item',\n\t\t\t\t\tbind.if( 'isVisible', 'ck-hidden', value => !value )\n\t\t\t\t],\n\t\t\t\trole: 'presentation'\n\t\t\t},\n\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n\n\t/**\n\t * Focuses the list item.\n\t */\n\tpublic focus(): void {\n\t\t( this.children.first as FocusableView ).focus();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/list/listseparatorview\n */\n\nimport View from '../view';\n\nimport type { Locale } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The list separator view class.\n */\nexport default class ListSeparatorView extends View {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'li',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-list__separator'\n\t\t\t\t]\n\t\t\t}\n\t\t} );\n\t}\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./splitbutton.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/dropdown/button/splitbuttonview\n */\n\nimport View from '../../view';\nimport ButtonView from '../../button/buttonview';\nimport type ViewCollection from '../../viewcollection';\nimport type Button from '../../button/button';\nimport type DropdownButton from './dropdownbutton';\n\nimport {\n\tKeystrokeHandler,\n\tFocusTracker,\n\ttype Locale\n} from '@ckeditor/ckeditor5-utils';\n\nimport dropdownArrowIcon from '../../../theme/icons/dropdown-arrow.svg';\n\nimport '../../../theme/components/dropdown/splitbutton.css';\n\n/**\n * The split button view class.\n *\n * ```ts\n * const view = new SplitButtonView();\n *\n * view.set( {\n * \tlabel: 'A button',\n * \tkeystroke: 'Ctrl+B',\n * \ttooltip: true\n * } );\n *\n * view.render();\n *\n * document.body.append( view.element );\n * ```\n *\n * Also see the {@link module:ui/dropdown/utils~createDropdown `createDropdown()` util}.\n */\nexport default class SplitButtonView extends View<HTMLDivElement> implements DropdownButton {\n\t/**\n\t * Collection of the child views inside of the split button {@link #element}.\n\t */\n\tpublic readonly children: ViewCollection;\n\n\t/**\n\t * A main button of split button.\n\t */\n\tpublic readonly actionView: ButtonView;\n\n\t/**\n\t * A secondary button of split button that opens dropdown.\n\t */\n\tpublic readonly arrowView: ButtonView;\n\n\t/**\n\t * Instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}. It manages\n\t * keystrokes of the split button:\n\t *\n\t * * <kbd>▶</kbd> moves focus to arrow view when action view is focused,\n\t * * <kbd>◀</kbd> moves focus to action view when arrow view is focused.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * Tracks information about DOM focus in the dropdown.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public label: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public keystroke: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public tooltip: Button[ 'tooltip' ];\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public tooltipPosition: Button[ 'tooltipPosition' ];\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public type: Button[ 'type' ];\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public isOn: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public isEnabled: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public isVisible: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public isToggleable: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public withText: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public withKeystroke: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public icon: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public tabindex: number;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public class: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public labelStyle: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public role: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public ariaChecked: boolean | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public ariaLabel?: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tdeclare public ariaLabelledBy: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\t// Implement the Button interface.\n\t\tthis.set( 'class', undefined );\n\t\tthis.set( 'labelStyle', undefined );\n\t\tthis.set( 'icon', undefined );\n\t\tthis.set( 'isEnabled', true );\n\t\tthis.set( 'isOn', false );\n\t\tthis.set( 'isToggleable', false );\n\t\tthis.set( 'isVisible', true );\n\t\tthis.set( 'keystroke', undefined );\n\t\tthis.set( 'withKeystroke', false );\n\t\tthis.set( 'label', undefined );\n\t\tthis.set( 'tabindex', -1 );\n\t\tthis.set( 'tooltip', false );\n\t\tthis.set( 'tooltipPosition', 's' );\n\t\tthis.set( 'type', 'button' );\n\t\tthis.set( 'withText', false );\n\n\t\tthis.children = this.createCollection();\n\t\tthis.actionView = this._createActionView();\n\t\tthis.arrowView = this._createArrowView();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis.focusTracker = new FocusTracker();\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-splitbutton',\n\t\t\t\t\tbind.to( 'class' ),\n\t\t\t\t\tbind.if( 'isVisible', 'ck-hidden', value => !value ),\n\t\t\t\t\tthis.arrowView.bindTemplate.if( 'isOn', 'ck-splitbutton_open' )\n\t\t\t\t]\n\t\t\t},\n\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis.children.add( this.actionView );\n\t\tthis.children.add( this.arrowView );\n\n\t\tthis.focusTracker.add( this.actionView.element! );\n\t\tthis.focusTracker.add( this.arrowView.element! );\n\n\t\tthis.keystrokes.listenTo( this.element! );\n\n\t\t// Overrides toolbar focus cycling behavior.\n\t\tthis.keystrokes.set( 'arrowright', ( evt, cancel ) => {\n\t\t\tif ( this.focusTracker.focusedElement === this.actionView.element ) {\n\t\t\t\tthis.arrowView.focus();\n\n\t\t\t\tcancel();\n\t\t\t}\n\t\t} );\n\n\t\t// Overrides toolbar focus cycling behavior.\n\t\tthis.keystrokes.set( 'arrowleft', ( evt, cancel ) => {\n\t\t\tif ( this.focusTracker.focusedElement === this.arrowView.element ) {\n\t\t\t\tthis.actionView.focus();\n\n\t\t\t\tcancel();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Focuses the {@link module:ui/button/buttonview~ButtonView#element} of the action part of split button.\n\t */\n\tpublic focus(): void {\n\t\tthis.actionView.focus();\n\t}\n\n\t/**\n\t * Creates a {@link module:ui/button/buttonview~ButtonView} instance as {@link #actionView} and binds it with main split button\n\t * attributes.\n\t */\n\tprivate _createActionView() {\n\t\tconst actionView = new ButtonView();\n\n\t\tactionView.bind(\n\t\t\t'icon',\n\t\t\t'isEnabled',\n\t\t\t'isOn',\n\t\t\t'isToggleable',\n\t\t\t'keystroke',\n\t\t\t'label',\n\t\t\t'tabindex',\n\t\t\t'tooltip',\n\t\t\t'tooltipPosition',\n\t\t\t'type',\n\t\t\t'withText'\n\t\t).to( this );\n\n\t\tactionView.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: 'ck-splitbutton__action'\n\t\t\t}\n\t\t} );\n\n\t\tactionView.delegate( 'execute' ).to( this );\n\n\t\treturn actionView;\n\t}\n\n\t/**\n\t * Creates a {@link module:ui/button/buttonview~ButtonView} instance as {@link #arrowView} and binds it with main split button\n\t * attributes.\n\t */\n\tprivate _createArrowView() {\n\t\tconst arrowView = new ButtonView();\n\t\tconst bind = arrowView.bindTemplate;\n\n\t\tarrowView.icon = dropdownArrowIcon;\n\n\t\tarrowView.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck-splitbutton__arrow'\n\t\t\t\t],\n\t\t\t\t'data-cke-tooltip-disabled': bind.to( 'isOn' ),\n\t\t\t\t'aria-haspopup': true,\n\t\t\t\t'aria-expanded': bind.to( 'isOn', value => String( value ) )\n\t\t\t}\n\t\t} );\n\n\t\tarrowView.bind( 'isEnabled' ).to( this );\n\t\tarrowView.bind( 'label' ).to( this );\n\t\tarrowView.bind( 'tooltip' ).to( this );\n\n\t\tarrowView.delegate( 'execute' ).to( this, 'open' );\n\n\t\treturn arrowView;\n\t}\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./toolbardropdown.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./listdropdown.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/dropdown/utils\n */\n\nimport DropdownPanelView from './dropdownpanelview';\nimport DropdownView from './dropdownview';\nimport DropdownButtonView from './button/dropdownbuttonview';\nimport ToolbarView from '../toolbar/toolbarview';\nimport ListView from '../list/listview';\nimport ListItemView from '../list/listitemview';\nimport ListSeparatorView from '../list/listseparatorview';\nimport ButtonView from '../button/buttonview';\nimport SplitButtonView from './button/splitbuttonview';\nimport SwitchButtonView from '../button/switchbuttonview';\nimport ViewCollection from '../viewcollection';\n\nimport clickOutsideHandler from '../bindings/clickoutsidehandler';\n\nimport type { default as View, UIViewRenderEvent } from '../view';\nimport type { ButtonExecuteEvent } from '../button/button';\nimport type Model from '../model';\nimport type DropdownButton from './button/dropdownbutton';\nimport type { FocusableView } from '../focuscycler';\nimport type { FalsyValue } from '../template';\n\nimport {\n\tglobal,\n\tpriorities,\n\tlogWarning,\n\ttype Collection,\n\ttype Locale,\n\ttype ObservableChangeEvent\n} from '@ckeditor/ckeditor5-utils';\n\nimport '../../theme/components/dropdown/toolbardropdown.css';\nimport '../../theme/components/dropdown/listdropdown.css';\n\n/**\n * A helper for creating dropdowns. It creates an instance of a {@link module:ui/dropdown/dropdownview~DropdownView dropdown},\n * with a {@link module:ui/dropdown/button/dropdownbutton~DropdownButton button},\n * {@link module:ui/dropdown/dropdownpanelview~DropdownPanelView panel} and all standard dropdown's behaviors.\n *\n * # Creating dropdowns\n *\n * By default, the default {@link module:ui/dropdown/button/dropdownbuttonview~DropdownButtonView} class is used as\n * definition of the button:\n *\n * ```ts\n * const dropdown = createDropdown( model );\n *\n * // Configure dropdown's button properties:\n * dropdown.buttonView.set( {\n * \tlabel: 'A dropdown',\n * \twithText: true\n * } );\n *\n * dropdown.render();\n *\n * // Will render a dropdown labeled \"A dropdown\" with an empty panel.\n * document.body.appendChild( dropdown.element );\n * ```\n *\n * You can also provide other button views (they need to implement the\n * {@link module:ui/dropdown/button/dropdownbutton~DropdownButton} interface). For instance, you can use\n * {@link module:ui/dropdown/button/splitbuttonview~SplitButtonView} to create a dropdown with a split button.\n *\n * ```ts\n * const dropdown = createDropdown( locale, SplitButtonView );\n *\n * // Configure dropdown's button properties:\n * dropdown.buttonView.set( {\n * \tlabel: 'A dropdown',\n * \twithText: true\n * } );\n *\n * dropdown.buttonView.on( 'execute', () => {\n * \t// Add the behavior of the \"action part\" of the split button.\n * \t// Split button consists of the \"action part\" and \"arrow part\".\n * \t// The arrow opens the dropdown while the action part can have some other behavior.\n * } );\n *\n * dropdown.render();\n *\n * // Will render a dropdown labeled \"A dropdown\" with an empty panel.\n * document.body.appendChild( dropdown.element );\n * ```\n *\n * # Adding content to the dropdown's panel\n *\n * The content of the panel can be inserted directly into the `dropdown.panelView.element`:\n *\n * ```ts\n * dropdown.panelView.element.textContent = 'Content of the panel';\n * ```\n *\n * However, most of the time you will want to add there either a {@link module:ui/list/listview~ListView list of options}\n * or a list of buttons (i.e. a {@link module:ui/toolbar/toolbarview~ToolbarView toolbar}).\n * To simplify the task, you can use, respectively, {@link module:ui/dropdown/utils~addListToDropdown} or\n * {@link module:ui/dropdown/utils~addToolbarToDropdown} utils.\n *\n * @param locale The locale instance.\n * @param ButtonClass The dropdown button view class. Needs to implement the\n * {@link module:ui/dropdown/button/dropdownbutton~DropdownButton} interface.\n * @returns The dropdown view instance.\n */\nexport function createDropdown(\n\tlocale: Locale | undefined,\n\tButtonClass: new ( locale?: Locale ) => DropdownButton & FocusableView = DropdownButtonView\n): DropdownView {\n\tconst buttonView = new ButtonClass( locale );\n\n\tconst panelView = new DropdownPanelView( locale );\n\tconst dropdownView = new DropdownView( locale, buttonView, panelView );\n\n\tbuttonView.bind( 'isEnabled' ).to( dropdownView );\n\n\tif ( buttonView instanceof SplitButtonView ) {\n\t\tbuttonView.arrowView.bind( 'isOn' ).to( dropdownView, 'isOpen' );\n\t} else {\n\t\tbuttonView.bind( 'isOn' ).to( dropdownView, 'isOpen' );\n\t}\n\n\taddDefaultBehavior( dropdownView );\n\n\treturn dropdownView;\n}\n\n/**\n * Adds an instance of {@link module:ui/toolbar/toolbarview~ToolbarView} to a dropdown.\n *\n * ```ts\n * const buttonsCreator = () => {\n * \tconst buttons = [];\n *\n * \t// Either create a new ButtonView instance or create existing.\n * \tbuttons.push( new ButtonView() );\n * \tbuttons.push( editor.ui.componentFactory.create( 'someButton' ) );\n * };\n *\n * const dropdown = createDropdown( locale );\n *\n * addToolbarToDropdown( dropdown, buttonsCreator, { isVertical: true } );\n *\n * // Will render a vertical button dropdown labeled \"A button dropdown\"\n * // with a button group in the panel containing two buttons.\n * // Buttons inside the dropdown will be created on first dropdown panel open.\n * dropdown.render()\n * document.body.appendChild( dropdown.element );\n * ```\n *\n * **Note:** To improve the accessibility, you can tell the dropdown to focus the first active button of the toolbar when the dropdown\n * {@link module:ui/dropdown/dropdownview~DropdownView#isOpen gets open}. See the documentation of `options` to learn more.\n *\n * **Note:** Toolbar view will be created on first open of the dropdown.\n *\n * See {@link module:ui/dropdown/utils~createDropdown} and {@link module:ui/toolbar/toolbarview~ToolbarView}.\n *\n * @param dropdownView A dropdown instance to which `ToolbarView` will be added.\n * @param options.enableActiveItemFocusOnDropdownOpen When set `true`, the focus will automatically move to the first\n * active {@link module:ui/toolbar/toolbarview~ToolbarView#items item} of the toolbar upon\n * {@link module:ui/dropdown/dropdownview~DropdownView#isOpen opening} the dropdown. Active items are those with the `isOn` property set\n * `true` (for instance {@link module:ui/button/buttonview~ButtonView buttons}). If no active items is found, the toolbar will be focused\n * as a whole resulting in the focus moving to its first focusable item (default behavior of\n * {@link module:ui/dropdown/dropdownview~DropdownView}).\n * @param options.ariaLabel Label used by assistive technologies to describe toolbar element.\n * @param options.maxWidth The maximum width of the toolbar element.\n * Details: {@link module:ui/toolbar/toolbarview~ToolbarView#maxWidth}.\n * @param options.class An additional CSS class added to the toolbar element.\n * @param options.isCompact When set true, makes the toolbar look compact with toolbar element.\n * @param options.isVertical Controls the orientation of toolbar items.\n */\nexport function addToolbarToDropdown(\n\tdropdownView: DropdownView,\n\tbuttonsOrCallback: Array<View> | ViewCollection | ( () => Array<View> | ViewCollection ),\n\toptions: {\n\t\tenableActiveItemFocusOnDropdownOpen?: boolean;\n\t\tariaLabel?: string;\n\t\tmaxWidth?: string;\n\t\tclass?: string;\n\t\tisCompact?: boolean;\n\t\tisVertical?: boolean;\n\t} = {}\n): void {\n\tdropdownView.extendTemplate( {\n\t\tattributes: {\n\t\t\tclass: [ 'ck-toolbar-dropdown' ]\n\t\t}\n\t} );\n\n\tif ( dropdownView.isOpen ) {\n\t\taddToolbarToOpenDropdown( dropdownView, buttonsOrCallback, options );\n\t} else {\n\t\tdropdownView.once(\n\t\t\t'change:isOpen',\n\t\t\t() => addToolbarToOpenDropdown( dropdownView, buttonsOrCallback, options ),\n\t\t\t{ priority: 'highest' }\n\t\t);\n\t}\n\n\tif ( options.enableActiveItemFocusOnDropdownOpen ) {\n\t\t// Accessibility: Focus the first active button in the toolbar when the dropdown gets open.\n\t\tfocusChildOnDropdownOpen( dropdownView, () => dropdownView.toolbarView!.items.find( ( item: any ) => item.isOn ) );\n\t}\n}\n\n/**\n * Adds an instance of {@link module:ui/toolbar/toolbarview~ToolbarView} to a dropdown.\n */\nfunction addToolbarToOpenDropdown(\n\tdropdownView: DropdownView,\n\tbuttonsOrCallback: Array<View> | ViewCollection | ( () => Array<View> | ViewCollection ),\n\toptions: {\n\t\tariaLabel?: string;\n\t\tmaxWidth?: string;\n\t\tclass?: string;\n\t\tisCompact?: boolean;\n\t\tisVertical?: boolean;\n\t}\n): void {\n\tconst locale = dropdownView.locale!;\n\tconst t = locale.t;\n\n\tconst toolbarView = dropdownView.toolbarView = new ToolbarView( locale );\n\tconst buttons = typeof buttonsOrCallback == 'function' ? buttonsOrCallback() : buttonsOrCallback;\n\n\ttoolbarView.ariaLabel = options.ariaLabel || t( 'Dropdown toolbar' );\n\n\tif ( options.maxWidth ) {\n\t\ttoolbarView.maxWidth = options.maxWidth;\n\t}\n\n\tif ( options.class ) {\n\t\ttoolbarView.class = options.class;\n\t}\n\n\tif ( options.isCompact ) {\n\t\ttoolbarView.isCompact = options.isCompact;\n\t}\n\n\tif ( options.isVertical ) {\n\t\ttoolbarView.isVertical = true;\n\t}\n\n\tif ( buttons instanceof ViewCollection ) {\n\t\ttoolbarView.items.bindTo( buttons ).using( item => item );\n\t} else {\n\t\ttoolbarView.items.addMany( buttons );\n\t}\n\n\tdropdownView.panelView.children.add( toolbarView );\n\ttoolbarView.items.delegate( 'execute' ).to( dropdownView );\n}\n\n/**\n * Adds an instance of {@link module:ui/list/listview~ListView} to a dropdown.\n *\n * ```ts\n * const items = new Collection();\n *\n * items.add( {\n * \ttype: 'button',\n * \tmodel: new Model( {\n * \t\twithText: true,\n * \t\tlabel: 'First item',\n * \t\tlabelStyle: 'color: red'\n * \t} )\n * } );\n *\n * items.add( {\n * \t type: 'button',\n * \t model: new Model( {\n * \t\twithText: true,\n * \t\tlabel: 'Second item',\n * \t\tlabelStyle: 'color: green',\n * \t\tclass: 'foo'\n * \t} )\n * } );\n *\n * const dropdown = createDropdown( locale );\n *\n * addListToDropdown( dropdown, items );\n *\n * // Will render a dropdown with a list in the panel containing two items.\n * dropdown.render()\n * document.body.appendChild( dropdown.element );\n * ```\n *\n * The `items` collection passed to this methods controls the presence and attributes of respective\n * {@link module:ui/list/listitemview~ListItemView list items}.\n *\n * **Note:** To improve the accessibility, when a list is added to the dropdown using this helper the dropdown will automatically attempt\n * to focus the first active item (a host to a {@link module:ui/button/buttonview~ButtonView} with\n * {@link module:ui/button/buttonview~ButtonView#isOn} set `true`) or the very first item when none are active.\n *\n * **Note:** List view will be created on first open of the dropdown.\n *\n * See {@link module:ui/dropdown/utils~createDropdown} and {@link module:list/list~List}.\n *\n * @param dropdownView A dropdown instance to which `ListVIew` will be added.\n * @param itemsOrCallback A collection of the list item definitions or a callback returning a list item definitions to populate the list.\n * @param options.ariaLabel Label used by assistive technologies to describe list element.\n * @param options.role Will be reflected by the `role` DOM attribute in `ListVIew` and used by assistive technologies.\n */\nexport function addListToDropdown(\n\tdropdownView: DropdownView,\n\titemsOrCallback: Collection<ListDropdownItemDefinition> | ( () => Collection<ListDropdownItemDefinition> ),\n\toptions: {\n\t\tariaLabel?: string;\n\t\trole?: string;\n\t} = {}\n): void {\n\tif ( dropdownView.isOpen ) {\n\t\taddListToOpenDropdown( dropdownView, itemsOrCallback, options );\n\t} else {\n\t\tdropdownView.once(\n\t\t\t'change:isOpen',\n\t\t\t() => addListToOpenDropdown( dropdownView, itemsOrCallback, options ),\n\t\t\t{ priority: 'highest' }\n\t\t);\n\t}\n\n\t// Accessibility: Focus the first active button in the list when the dropdown gets open.\n\tfocusChildOnDropdownOpen( dropdownView, () => dropdownView.listView!.items.find( item => {\n\t\tif ( item instanceof ListItemView ) {\n\t\t\treturn ( item.children.first as any ).isOn;\n\t\t}\n\n\t\treturn false;\n\t} ) );\n}\n\n/**\n * Adds an instance of {@link module:ui/list/listview~ListView} to a dropdown.\n */\nfunction addListToOpenDropdown(\n\tdropdownView: DropdownView,\n\titemsOrCallback: Collection<ListDropdownItemDefinition> | ( () => Collection<ListDropdownItemDefinition> ),\n\toptions: {\n\t\tariaLabel?: string;\n\t\trole?: string;\n\t}\n): void {\n\tconst locale = dropdownView.locale;\n\n\tconst listView = dropdownView.listView = new ListView( locale );\n\tconst items = typeof itemsOrCallback == 'function' ? itemsOrCallback() : itemsOrCallback;\n\n\tlistView.ariaLabel = options.ariaLabel;\n\tlistView.role = options.role;\n\n\tlistView.items.bindTo( items ).using( def => {\n\t\tif ( def.type === 'separator' ) {\n\t\t\treturn new ListSeparatorView( locale );\n\t\t} else if ( def.type === 'button' || def.type === 'switchbutton' ) {\n\t\t\tconst listItemView = new ListItemView( locale );\n\t\t\tlet buttonView;\n\n\t\t\tif ( def.type === 'button' ) {\n\t\t\t\tbuttonView = new ButtonView( locale );\n\t\t\t} else {\n\t\t\t\tbuttonView = new SwitchButtonView( locale );\n\t\t\t}\n\n\t\t\t// Bind all model properties to the button view.\n\t\t\tbuttonView.bind( ...Object.keys( def.model ) as Array<keyof ButtonView> ).to( def.model );\n\t\t\tbuttonView.delegate( 'execute' ).to( listItemView );\n\n\t\t\tlistItemView.children.add( buttonView );\n\n\t\t\treturn listItemView;\n\t\t}\n\n\t\treturn null;\n\t} );\n\n\tdropdownView.panelView.children.add( listView );\n\n\tlistView.items.delegate( 'execute' ).to( dropdownView );\n}\n\n/**\n * A helper to be used on an existing {@link module:ui/dropdown/dropdownview~DropdownView} that focuses\n * a specific child in DOM when the dropdown {@link module:ui/dropdown/dropdownview~DropdownView#isOpen gets open}.\n *\n * @param dropdownView A dropdown instance to which the focus behavior will be added.\n * @param childSelectorCallback A callback executed when the dropdown gets open. It should return a {@link module:ui/view~View}\n * instance (child of {@link module:ui/dropdown/dropdownview~DropdownView#panelView}) that will get focused or a falsy value.\n * If falsy value is returned, a default behavior of the dropdown will engage focusing the first focusable child in\n * the {@link module:ui/dropdown/dropdownview~DropdownView#panelView}.\n */\nexport function focusChildOnDropdownOpen(\n\tdropdownView: DropdownView,\n\tchildSelectorCallback: () => View | FalsyValue\n): void {\n\tdropdownView.on<ObservableChangeEvent>( 'change:isOpen', () => {\n\t\tif ( !dropdownView.isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst childToFocus: ( View & { focus?: () => void } ) | FalsyValue = childSelectorCallback();\n\n\t\tif ( !childToFocus ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( typeof childToFocus.focus === 'function' ) {\n\t\t\tchildToFocus.focus();\n\t\t} else {\n\t\t\t/**\n\t\t\t * The child view of a {@link module:ui/dropdown/dropdownview~DropdownView dropdown} is missing the `focus()` method\n\t\t\t * and could not be focused when the dropdown got {@link module:ui/dropdown/dropdownview~DropdownView#isOpen open}.\n\t\t\t *\n\t\t\t * Making the content of a dropdown focusable in this case greatly improves the accessibility. Please make the view instance\n\t\t\t * implements the {@link module:ui/dropdown/dropdownpanelfocusable~DropdownPanelFocusable focusable interface} for the best user\n\t\t\t * experience.\n\t\t\t *\n\t\t\t * @error ui-dropdown-focus-child-on-open-child-missing-focus\n\t\t\t * @param {module:ui/view~View} view\n\t\t\t */\n\t\t\tlogWarning( 'ui-dropdown-focus-child-on-open-child-missing-focus', { view: childToFocus } );\n\t\t}\n\n\t// * Let the panel show up first (do not focus an invisible element).\n\t// * Execute after focusDropdownPanelOnOpen(). See focusDropdownPanelOnOpen() to learn more.\n\t}, { priority: priorities.low - 10 } );\n}\n\n/**\n * Add a set of default behaviors to dropdown view.\n */\nfunction addDefaultBehavior( dropdownView: DropdownView ) {\n\tcloseDropdownOnClickOutside( dropdownView );\n\tcloseDropdownOnExecute( dropdownView );\n\tcloseDropdownOnBlur( dropdownView );\n\tfocusDropdownContentsOnArrows( dropdownView );\n\tfocusDropdownButtonOnClose( dropdownView );\n\tfocusDropdownPanelOnOpen( dropdownView );\n}\n\n/**\n * Adds a behavior to a dropdownView that closes opened dropdown when user clicks outside the dropdown.\n */\nfunction closeDropdownOnClickOutside( dropdownView: DropdownView ) {\n\tdropdownView.on<UIViewRenderEvent>( 'render', () => {\n\t\tclickOutsideHandler( {\n\t\t\temitter: dropdownView,\n\t\t\tactivator: () => dropdownView.isOpen,\n\t\t\tcallback: () => {\n\t\t\t\tdropdownView.isOpen = false;\n\t\t\t},\n\t\t\tcontextElements: () => [\n\t\t\t\tdropdownView.element!,\n\t\t\t\t...( dropdownView.focusTracker._elements as Set<HTMLElement> )\n\t\t\t]\n\t\t} );\n\t} );\n}\n\n/**\n * Adds a behavior to a dropdownView that closes the dropdown view on \"execute\" event.\n */\nfunction closeDropdownOnExecute( dropdownView: DropdownView ) {\n\t// Close the dropdown when one of the list items has been executed.\n\tdropdownView.on<ButtonExecuteEvent>( 'execute', evt => {\n\t\t// Toggling a switch button view should not close the dropdown.\n\t\tif ( evt.source instanceof SwitchButtonView ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdropdownView.isOpen = false;\n\t} );\n}\n\n/**\n * Adds a behavior to a dropdown view that closes opened dropdown when it loses focus.\n */\nfunction closeDropdownOnBlur( dropdownView: DropdownView ) {\n\tdropdownView.focusTracker.on<ObservableChangeEvent<boolean>>( 'change:isFocused', ( evt, name, isFocused ) => {\n\t\tif ( dropdownView.isOpen && !isFocused ) {\n\t\t\tdropdownView.isOpen = false;\n\t\t}\n\t} );\n}\n\n/**\n * Adds a behavior to a dropdownView that focuses the dropdown's panel view contents on keystrokes.\n */\nfunction focusDropdownContentsOnArrows( dropdownView: DropdownView ) {\n\t// If the dropdown panel is already open, the arrow down key should focus the first child of the #panelView.\n\tdropdownView.keystrokes.set( 'arrowdown', ( data, cancel ) => {\n\t\tif ( dropdownView.isOpen ) {\n\t\t\tdropdownView.panelView.focus();\n\t\t\tcancel();\n\t\t}\n\t} );\n\n\t// If the dropdown panel is already open, the arrow up key should focus the last child of the #panelView.\n\tdropdownView.keystrokes.set( 'arrowup', ( data, cancel ) => {\n\t\tif ( dropdownView.isOpen ) {\n\t\t\tdropdownView.panelView.focusLast();\n\t\t\tcancel();\n\t\t}\n\t} );\n}\n\n/**\n * Adds a behavior that focuses the #buttonView when the dropdown was closed but focus was within the #panelView element.\n * This makes sure the focus is never lost.\n */\nfunction focusDropdownButtonOnClose( dropdownView: DropdownView ) {\n\tdropdownView.on<ObservableChangeEvent<boolean>>( 'change:isOpen', ( evt, name, isOpen ) => {\n\t\tif ( isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst element = dropdownView.panelView.element;\n\n\t\t// If the dropdown was closed, move the focus back to the button (#12125).\n\t\t// Don't touch the focus, if it moved somewhere else (e.g. moved to the editing root on #execute) (#12178).\n\t\t// Note: Don't use the state of the DropdownView#focusTracker here. It fires #blur with the timeout.\n\t\tif ( element && element.contains( global.document.activeElement ) ) {\n\t\t\tdropdownView.buttonView.focus();\n\t\t}\n\t} );\n}\n\n/**\n * Adds a behavior that focuses the #panelView when dropdown gets open (accessibility).\n */\nfunction focusDropdownPanelOnOpen( dropdownView: DropdownView ) {\n\tdropdownView.on<ObservableChangeEvent<boolean>>( 'change:isOpen', ( evt, name, isOpen ) => {\n\t\tif ( !isOpen ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Focus the first item in the dropdown when the dropdown opened.\n\t\tdropdownView.panelView.focus();\n\n\t// * Let the panel show up first (do not focus an invisible element).\n\t// * Also, execute before focusChildOnDropdownOpen() to make sure this helper does not break the\n\t// focus of a specific child by kicking in too late and resetting the focus in the panel.\n\t}, { priority: 'low' } );\n}\n\n/**\n * A definition of the list item used by the {@link module:ui/dropdown/utils~addListToDropdown}\n * utility.\n */\nexport type ListDropdownItemDefinition = ListDropdownSeparatorDefinition | ListDropdownButtonDefinition;\n\n/**\n * A definition of the 'separator' list item.\n */\nexport type ListDropdownSeparatorDefinition = {\n\ttype: 'separator';\n};\n\n/**\n * A definition of the 'button' or 'switchbutton' list item.\n */\nexport type ListDropdownButtonDefinition = {\n\ttype: 'button' | 'switchbutton';\n\n\t/**\n\t * Model of the item. Its properties fuel the newly created list item (or its children, depending on the `type`).\n\t */\n\tmodel: Model;\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/labeledfield/utils\n */\n\nimport InputTextView from '../inputtext/inputtextview';\nimport InputNumberView from '../inputnumber/inputnumberview';\nimport { createDropdown } from '../dropdown/utils';\n\nimport type LabeledFieldView from './labeledfieldview';\nimport type DropdownView from '../dropdown/dropdownview';\nimport type { InputViewInputEvent } from '../input/inputview';\n\n/**\n * A helper for creating labeled inputs.\n *\n * It creates an instance of a {@link module:ui/inputtext/inputtextview~InputTextView input text} that is\n * logically related to a {@link module:ui/labeledfield/labeledfieldview~LabeledFieldView labeled view} in DOM.\n *\n * The helper does the following:\n *\n * * It sets input's `id` and `ariaDescribedById` attributes.\n * * It binds input's `isReadOnly` to the labeled view.\n * * It binds input's `hasError` to the labeled view.\n * * It enables a logic that cleans up the error when user starts typing in the input.\n *\n * Usage:\n *\n * ```ts\n * const labeledInputView = new LabeledFieldView( locale, createLabeledInputText );\n * console.log( labeledInputView.fieldView ); // A text input instance.\n * ```\n *\n * @param labeledFieldView The instance of the labeled field view.\n * @param viewUid An UID string that allows DOM logical connection between the\n * {@link module:ui/labeledfield/labeledfieldview~LabeledFieldView#labelView labeled view's label} and the input.\n * @param statusUid An UID string that allows DOM logical connection between the\n * {@link module:ui/labeledfield/labeledfieldview~LabeledFieldView#statusView labeled view's status} and the input.\n * @returns The input text view instance.\n */\nexport function createLabeledInputText(\n\tlabeledFieldView: LabeledFieldView,\n\tviewUid: string,\n\tstatusUid: string\n): InputTextView {\n\tconst inputView = new InputTextView( labeledFieldView.locale );\n\n\tinputView.set( {\n\t\tid: viewUid,\n\t\tariaDescribedById: statusUid\n\t} );\n\n\tinputView.bind( 'isReadOnly' ).to( labeledFieldView, 'isEnabled', value => !value );\n\tinputView.bind( 'hasError' ).to( labeledFieldView, 'errorText', value => !!value );\n\n\tinputView.on<InputViewInputEvent>( 'input', () => {\n\t\t// UX: Make the error text disappear and disable the error indicator as the user\n\t\t// starts fixing the errors.\n\t\tlabeledFieldView.errorText = null;\n\t} );\n\n\tlabeledFieldView.bind( 'isEmpty', 'isFocused', 'placeholder' ).to( inputView );\n\n\treturn inputView;\n}\n\n/**\n * A helper for creating labeled number inputs.\n *\n * It creates an instance of a {@link module:ui/inputnumber/inputnumberview~InputNumberView input number} that is\n * logically related to a {@link module:ui/labeledfield/labeledfieldview~LabeledFieldView labeled view} in DOM.\n *\n * The helper does the following:\n *\n * * It sets input's `id` and `ariaDescribedById` attributes.\n * * It binds input's `isReadOnly` to the labeled view.\n * * It binds input's `hasError` to the labeled view.\n * * It enables a logic that cleans up the error when user starts typing in the input.\n *\n * Usage:\n *\n * ```ts\n * const labeledInputView = new LabeledFieldView( locale, createLabeledInputNumber );\n * console.log( labeledInputView.fieldView ); // A number input instance.\n * ```\n *\n * @param labeledFieldView The instance of the labeled field view.\n * @param viewUid An UID string that allows DOM logical connection between the\n * {@link module:ui/labeledfield/labeledfieldview~LabeledFieldView#labelView labeled view's label} and the input.\n * @param statusUid An UID string that allows DOM logical connection between the\n * {@link module:ui/labeledfield/labeledfieldview~LabeledFieldView#statusView labeled view's status} and the input.\n * @returns The input number view instance.\n */\nexport function createLabeledInputNumber(\n\tlabeledFieldView: LabeledFieldView,\n\tviewUid: string,\n\tstatusUid: string\n): InputNumberView {\n\tconst inputView = new InputNumberView( labeledFieldView.locale );\n\n\tinputView.set( {\n\t\tid: viewUid,\n\t\tariaDescribedById: statusUid,\n\t\tinputMode: 'numeric'\n\t} );\n\n\tinputView.bind( 'isReadOnly' ).to( labeledFieldView, 'isEnabled', value => !value );\n\tinputView.bind( 'hasError' ).to( labeledFieldView, 'errorText', value => !!value );\n\n\tinputView.on<InputViewInputEvent>( 'input', () => {\n\t\t// UX: Make the error text disappear and disable the error indicator as the user\n\t\t// starts fixing the errors.\n\t\tlabeledFieldView.errorText = null;\n\t} );\n\n\tlabeledFieldView.bind( 'isEmpty', 'isFocused', 'placeholder' ).to( inputView );\n\n\treturn inputView;\n}\n\n/**\n * A helper for creating labeled dropdowns.\n *\n * It creates an instance of a {@link module:ui/dropdown/dropdownview~DropdownView dropdown} that is\n * logically related to a {@link module:ui/labeledfield/labeledfieldview~LabeledFieldView labeled field view}.\n *\n * The helper does the following:\n *\n * * It sets dropdown's `id` and `ariaDescribedById` attributes.\n * * It binds input's `isEnabled` to the labeled view.\n *\n * Usage:\n *\n * ```ts\n * const labeledInputView = new LabeledFieldView( locale, createLabeledDropdown );\n * console.log( labeledInputView.fieldView ); // A dropdown instance.\n * ```\n *\n * @param labeledFieldView The instance of the labeled field view.\n * @param viewUid An UID string that allows DOM logical connection between the\n * {@link module:ui/labeledfield/labeledfieldview~LabeledFieldView#labelView labeled view label} and the dropdown.\n * @param statusUid An UID string that allows DOM logical connection between the\n * {@link module:ui/labeledfield/labeledfieldview~LabeledFieldView#statusView labeled view status} and the dropdown.\n * @returns The dropdown view instance.\n */\nexport function createLabeledDropdown(\n\tlabeledFieldView: LabeledFieldView,\n\tviewUid: string,\n\tstatusUid: string\n): DropdownView {\n\tconst dropdownView = createDropdown( labeledFieldView.locale );\n\n\tdropdownView.set( {\n\t\tid: viewUid,\n\t\tariaDescribedById: statusUid\n\t} );\n\n\tdropdownView.bind( 'isEnabled' ).to( labeledFieldView );\n\n\treturn dropdownView;\n}\n","// Clamps a value between an upper and lower bound.\n// We use ternary operators because it makes the minified code\n// 2 times shorter then `Math.min(Math.max(a,b),c)`\nexport const clamp = (number, min = 0, max = 1) => {\n return number > max ? max : number < min ? min : number;\n};\nexport const round = (number, digits = 0, base = Math.pow(10, digits)) => {\n return Math.round(base * number) / base;\n};\n//# sourceMappingURL=math.js.map","import { round } from './math.js';\n/**\n * Valid CSS <angle> units.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/angle\n */\nconst angleUnits = {\n grad: 360 / 400,\n turn: 360,\n rad: 360 / (Math.PI * 2)\n};\nexport const hexToHsva = (hex) => rgbaToHsva(hexToRgba(hex));\nexport const hexToRgba = (hex) => {\n if (hex[0] === '#')\n hex = hex.substring(1);\n if (hex.length < 6) {\n return {\n r: parseInt(hex[0] + hex[0], 16),\n g: parseInt(hex[1] + hex[1], 16),\n b: parseInt(hex[2] + hex[2], 16),\n a: hex.length === 4 ? round(parseInt(hex[3] + hex[3], 16) / 255, 2) : 1\n };\n }\n return {\n r: parseInt(hex.substring(0, 2), 16),\n g: parseInt(hex.substring(2, 4), 16),\n b: parseInt(hex.substring(4, 6), 16),\n a: hex.length === 8 ? round(parseInt(hex.substring(6, 8), 16) / 255, 2) : 1\n };\n};\nexport const parseHue = (value, unit = 'deg') => {\n return Number(value) * (angleUnits[unit] || 1);\n};\nexport const hslaStringToHsva = (hslString) => {\n const matcher = /hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(hslString);\n if (!match)\n return { h: 0, s: 0, v: 0, a: 1 };\n return hslaToHsva({\n h: parseHue(match[1], match[2]),\n s: Number(match[3]),\n l: Number(match[4]),\n a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1)\n });\n};\nexport const hslStringToHsva = hslaStringToHsva;\nexport const hslaToHsva = ({ h, s, l, a }) => {\n s *= (l < 50 ? l : 100 - l) / 100;\n return {\n h: h,\n s: s > 0 ? ((2 * s) / (l + s)) * 100 : 0,\n v: l + s,\n a\n };\n};\nexport const hsvaToHex = (hsva) => rgbaToHex(hsvaToRgba(hsva));\nexport const hsvaToHsla = ({ h, s, v, a }) => {\n const hh = ((200 - s) * v) / 100;\n return {\n h: round(h),\n s: round(hh > 0 && hh < 200 ? ((s * v) / 100 / (hh <= 100 ? hh : 200 - hh)) * 100 : 0),\n l: round(hh / 2),\n a: round(a, 2)\n };\n};\nexport const hsvaToHsvString = (hsva) => {\n const { h, s, v } = roundHsva(hsva);\n return `hsv(${h}, ${s}%, ${v}%)`;\n};\nexport const hsvaToHsvaString = (hsva) => {\n const { h, s, v, a } = roundHsva(hsva);\n return `hsva(${h}, ${s}%, ${v}%, ${a})`;\n};\nexport const hsvaToHslString = (hsva) => {\n const { h, s, l } = hsvaToHsla(hsva);\n return `hsl(${h}, ${s}%, ${l}%)`;\n};\nexport const hsvaToHslaString = (hsva) => {\n const { h, s, l, a } = hsvaToHsla(hsva);\n return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n};\nexport const hsvaToRgba = ({ h, s, v, a }) => {\n h = (h / 360) * 6;\n s = s / 100;\n v = v / 100;\n const hh = Math.floor(h), b = v * (1 - s), c = v * (1 - (h - hh) * s), d = v * (1 - (1 - h + hh) * s), module = hh % 6;\n return {\n r: round([v, c, b, b, d, v][module] * 255),\n g: round([d, v, v, c, b, b][module] * 255),\n b: round([b, b, d, v, v, c][module] * 255),\n a: round(a, 2)\n };\n};\nexport const hsvaToRgbString = (hsva) => {\n const { r, g, b } = hsvaToRgba(hsva);\n return `rgb(${r}, ${g}, ${b})`;\n};\nexport const hsvaToRgbaString = (hsva) => {\n const { r, g, b, a } = hsvaToRgba(hsva);\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n};\nexport const hsvaStringToHsva = (hsvString) => {\n const matcher = /hsva?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(hsvString);\n if (!match)\n return { h: 0, s: 0, v: 0, a: 1 };\n return roundHsva({\n h: parseHue(match[1], match[2]),\n s: Number(match[3]),\n v: Number(match[4]),\n a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1)\n });\n};\nexport const hsvStringToHsva = hsvaStringToHsva;\nexport const rgbaStringToHsva = (rgbaString) => {\n const matcher = /rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(rgbaString);\n if (!match)\n return { h: 0, s: 0, v: 0, a: 1 };\n return rgbaToHsva({\n r: Number(match[1]) / (match[2] ? 100 / 255 : 1),\n g: Number(match[3]) / (match[4] ? 100 / 255 : 1),\n b: Number(match[5]) / (match[6] ? 100 / 255 : 1),\n a: match[7] === undefined ? 1 : Number(match[7]) / (match[8] ? 100 : 1)\n });\n};\nexport const rgbStringToHsva = rgbaStringToHsva;\nconst format = (number) => {\n const hex = number.toString(16);\n return hex.length < 2 ? '0' + hex : hex;\n};\nexport const rgbaToHex = ({ r, g, b, a }) => {\n const alphaHex = a < 1 ? format(round(a * 255)) : '';\n return '#' + format(r) + format(g) + format(b) + alphaHex;\n};\nexport const rgbaToHsva = ({ r, g, b, a }) => {\n const max = Math.max(r, g, b);\n const delta = max - Math.min(r, g, b);\n // prettier-ignore\n const hh = delta\n ? max === r\n ? (g - b) / delta\n : max === g\n ? 2 + (b - r) / delta\n : 4 + (r - g) / delta\n : 0;\n return {\n h: round(60 * (hh < 0 ? hh + 6 : hh)),\n s: round(max ? (delta / max) * 100 : 0),\n v: round((max / 255) * 100),\n a\n };\n};\nexport const roundHsva = (hsva) => ({\n h: round(hsva.h),\n s: round(hsva.s),\n v: round(hsva.v),\n a: round(hsva.a, 2)\n});\nexport const rgbaToRgb = ({ r, g, b }) => ({ r, g, b });\nexport const hslaToHsl = ({ h, s, l }) => ({ h, s, l });\nexport const hsvaToHsv = (hsva) => {\n const { h, s, v } = roundHsva(hsva);\n return { h, s, v };\n};\n//# sourceMappingURL=convert.js.map","import { hexToRgba } from './convert.js';\nexport const equalColorObjects = (first, second) => {\n if (first === second)\n return true;\n for (const prop in first) {\n // The following allows for a type-safe calling of this function (first & second have to be HSL, HSV, or RGB)\n // with type-unsafe iterating over object keys. TS does not allow this without an index (`[key: string]: number`)\n // on an object to define how iteration is normally done. To ensure extra keys are not allowed on our types,\n // we must cast our object to unknown (as RGB demands `r` be a key, while `Record<string, x>` does not care if\n // there is or not), and then as a type TS can iterate over.\n if (first[prop] !==\n second[prop])\n return false;\n }\n return true;\n};\nexport const equalColorString = (first, second) => {\n return first.replace(/\\s/g, '') === second.replace(/\\s/g, '');\n};\nexport const equalHex = (first, second) => {\n if (first.toLowerCase() === second.toLowerCase())\n return true;\n // To compare colors like `#FFF` and `ffffff` we convert them into RGB objects\n return equalColorObjects(hexToRgba(first), hexToRgba(second));\n};\n//# sourceMappingURL=compare.js.map","const cache = {};\nexport const tpl = (html) => {\n let template = cache[html];\n if (!template) {\n template = document.createElement('template');\n template.innerHTML = html;\n cache[html] = template;\n }\n return template;\n};\nexport const fire = (target, type, detail) => {\n target.dispatchEvent(new CustomEvent(type, {\n bubbles: true,\n detail\n }));\n};\n//# sourceMappingURL=dom.js.map","import { fire, tpl } from '../utils/dom.js';\nimport { clamp } from '../utils/math.js';\nlet hasTouched = false;\n// Check if an event was triggered by touch\nconst isTouch = (e) => 'touches' in e;\n// Prevent mobile browsers from handling mouse events (conflicting with touch ones).\n// If we detected a touch interaction before, we prefer reacting to touch events only.\nconst isValid = (event) => {\n if (hasTouched && !isTouch(event))\n return false;\n if (!hasTouched)\n hasTouched = isTouch(event);\n return true;\n};\nconst pointerMove = (target, event) => {\n const pointer = isTouch(event) ? event.touches[0] : event;\n const rect = target.el.getBoundingClientRect();\n fire(target.el, 'move', target.getMove({\n x: clamp((pointer.pageX - (rect.left + window.pageXOffset)) / rect.width),\n y: clamp((pointer.pageY - (rect.top + window.pageYOffset)) / rect.height)\n }));\n};\nconst keyMove = (target, event) => {\n // We use `keyCode` instead of `key` to reduce the size of the library.\n const keyCode = event.keyCode;\n // Ignore all keys except arrow ones, Page Up, Page Down, Home and End.\n if (keyCode > 40 || (target.xy && keyCode < 37) || keyCode < 33)\n return;\n // Do not scroll page by keys when color picker element has focus.\n event.preventDefault();\n // Send relative offset to the parent component.\n fire(target.el, 'move', target.getMove({\n x: keyCode === 39 // Arrow Right\n ? 0.01\n : keyCode === 37 // Arrow Left\n ? -0.01\n : keyCode === 34 // Page Down\n ? 0.05\n : keyCode === 33 // Page Up\n ? -0.05\n : keyCode === 35 // End\n ? 1\n : keyCode === 36 // Home\n ? -1\n : 0,\n y: keyCode === 40 // Arrow down\n ? 0.01\n : keyCode === 38 // Arrow Up\n ? -0.01\n : 0\n }, true));\n};\nexport class Slider {\n constructor(root, part, aria, xy) {\n const template = tpl(`<div role=\"slider\" tabindex=\"0\" part=\"${part}\" ${aria}><div part=\"${part}-pointer\"></div></div>`);\n root.appendChild(template.content.cloneNode(true));\n const el = root.querySelector(`[part=${part}]`);\n el.addEventListener('mousedown', this);\n el.addEventListener('touchstart', this);\n el.addEventListener('keydown', this);\n this.el = el;\n this.xy = xy;\n this.nodes = [el.firstChild, el];\n }\n set dragging(state) {\n const toggleEvent = state ? document.addEventListener : document.removeEventListener;\n toggleEvent(hasTouched ? 'touchmove' : 'mousemove', this);\n toggleEvent(hasTouched ? 'touchend' : 'mouseup', this);\n }\n handleEvent(event) {\n switch (event.type) {\n case 'mousedown':\n case 'touchstart':\n event.preventDefault();\n // event.button is 0 in mousedown for left button activation\n if (!isValid(event) || (!hasTouched && event.button != 0))\n return;\n this.el.focus();\n pointerMove(this, event);\n this.dragging = true;\n break;\n case 'mousemove':\n case 'touchmove':\n event.preventDefault();\n pointerMove(this, event);\n break;\n case 'mouseup':\n case 'touchend':\n this.dragging = false;\n break;\n case 'keydown':\n keyMove(this, event);\n break;\n }\n }\n style(styles) {\n styles.forEach((style, i) => {\n for (const p in style) {\n this.nodes[i].style.setProperty(p, style[p]);\n }\n });\n }\n}\n//# sourceMappingURL=slider.js.map","import { Slider } from './slider.js';\nimport { hsvaToHslString } from '../utils/convert.js';\nimport { clamp, round } from '../utils/math.js';\nexport class Hue extends Slider {\n constructor(root) {\n super(root, 'hue', 'aria-label=\"Hue\" aria-valuemin=\"0\" aria-valuemax=\"360\"', false);\n }\n update({ h }) {\n this.h = h;\n this.style([\n {\n left: `${(h / 360) * 100}%`,\n color: hsvaToHslString({ h, s: 100, v: 100, a: 1 })\n }\n ]);\n this.el.setAttribute('aria-valuenow', `${round(h)}`);\n }\n getMove(offset, key) {\n // Hue measured in degrees of the color circle ranging from 0 to 360\n return { h: key ? clamp(this.h + offset.x * 360, 0, 360) : 360 * offset.x };\n }\n}\n//# sourceMappingURL=hue.js.map","import { Slider } from './slider.js';\nimport { hsvaToHslString } from '../utils/convert.js';\nimport { clamp, round } from '../utils/math.js';\nexport class Saturation extends Slider {\n constructor(root) {\n super(root, 'saturation', 'aria-label=\"Color\"', true);\n }\n update(hsva) {\n this.hsva = hsva;\n this.style([\n {\n top: `${100 - hsva.v}%`,\n left: `${hsva.s}%`,\n color: hsvaToHslString(hsva)\n },\n {\n 'background-color': hsvaToHslString({ h: hsva.h, s: 100, v: 100, a: 1 })\n }\n ]);\n this.el.setAttribute('aria-valuetext', `Saturation ${round(hsva.s)}%, Brightness ${round(hsva.v)}%`);\n }\n getMove(offset, key) {\n // Saturation and brightness always fit into [0, 100] range\n return {\n s: key ? clamp(this.hsva.s + offset.x * 100, 0, 100) : offset.x * 100,\n v: key ? clamp(this.hsva.v - offset.y * 100, 0, 100) : Math.round(100 - offset.y * 100)\n };\n }\n}\n//# sourceMappingURL=saturation.js.map","import { equalColorObjects } from '../utils/compare.js';\nimport { fire, tpl } from '../utils/dom.js';\nimport { Hue } from './hue.js';\nimport { Saturation } from './saturation.js';\nimport css from '../styles/color-picker.js';\nimport hueCss from '../styles/hue.js';\nimport saturationCss from '../styles/saturation.js';\nconst $isSame = Symbol('same');\nconst $color = Symbol('color');\nconst $hsva = Symbol('hsva');\nconst $update = Symbol('update');\nconst $parts = Symbol('parts');\nexport const $css = Symbol('css');\nexport const $sliders = Symbol('sliders');\nexport class ColorPicker extends HTMLElement {\n static get observedAttributes() {\n return ['color'];\n }\n get [$css]() {\n return [css, hueCss, saturationCss];\n }\n get [$sliders]() {\n return [Saturation, Hue];\n }\n get color() {\n return this[$color];\n }\n set color(newColor) {\n if (!this[$isSame](newColor)) {\n const newHsva = this.colorModel.toHsva(newColor);\n this[$update](newHsva);\n this[$color] = newColor;\n }\n }\n constructor() {\n super();\n const template = tpl(`<style>${this[$css].join('')}</style>`);\n const root = this.attachShadow({ mode: 'open' });\n root.appendChild(template.content.cloneNode(true));\n root.addEventListener('move', this);\n this[$parts] = this[$sliders].map((slider) => new slider(root));\n }\n connectedCallback() {\n // A user may set a property on an _instance_ of an element,\n // before its prototype has been connected to this class.\n // If so, we need to run it through the proper class setter.\n if (this.hasOwnProperty('color')) {\n const value = this.color;\n delete this['color'];\n this.color = value;\n }\n else if (!this.color) {\n this.color = this.colorModel.defaultColor;\n }\n }\n attributeChangedCallback(_attr, _oldVal, newVal) {\n const color = this.colorModel.fromAttr(newVal);\n if (!this[$isSame](color)) {\n this.color = color;\n }\n }\n handleEvent(event) {\n // Merge the current HSV color object with updated params.\n const oldHsva = this[$hsva];\n const newHsva = { ...oldHsva, ...event.detail };\n this[$update](newHsva);\n let newColor;\n if (!equalColorObjects(newHsva, oldHsva) &&\n !this[$isSame]((newColor = this.colorModel.fromHsva(newHsva)))) {\n this[$color] = newColor;\n fire(this, 'color-changed', { value: newColor });\n }\n }\n [$isSame](color) {\n return this.color && this.colorModel.equal(color, this.color);\n }\n [$update](hsva) {\n this[$hsva] = hsva;\n this[$parts].forEach((part) => part.update(hsva));\n }\n}\n//# sourceMappingURL=color-picker.js.map","export default `:host{display:flex;flex-direction:column;position:relative;width:200px;height:200px;user-select:none;-webkit-user-select:none;cursor:default}:host([hidden]){display:none!important}[role=slider]{position:relative;touch-action:none;user-select:none;-webkit-user-select:none;outline:0}[role=slider]:last-child{border-radius:0 0 8px 8px}[part$=pointer]{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;display:flex;place-content:center center;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}[part$=pointer]::after{content:\"\";width:100%;height:100%;border-radius:inherit;background-color:currentColor}[role=slider]:focus [part$=pointer]{transform:translate(-50%,-50%) scale(1.1)}`;\n//# sourceMappingURL=color-picker.js.map","export default `[part=hue]{flex:0 0 24px;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}[part=hue-pointer]{top:50%;z-index:2}`;\n//# sourceMappingURL=hue.js.map","export default `[part=saturation]{flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,rgba(255,255,255,0));box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part=saturation-pointer]{z-index:3}`;\n//# sourceMappingURL=saturation.js.map","import { ColorPicker } from '../components/color-picker.js';\nimport { hexToHsva, hsvaToHex } from '../utils/convert.js';\nimport { equalHex } from '../utils/compare.js';\nconst colorModel = {\n defaultColor: '#000',\n toHsva: hexToHsva,\n fromHsva: ({ h, s, v }) => hsvaToHex({ h, s, v, a: 1 }),\n equal: equalHex,\n fromAttr: (color) => color\n};\nexport class HexBase extends ColorPicker {\n get colorModel() {\n return colorModel;\n }\n}\n//# sourceMappingURL=hex.js.map","import { HexBase } from './lib/entrypoints/hex.js';\n/**\n * A color picker custom element that uses HEX format.\n *\n * @element hex-color-picker\n *\n * @prop {string} color - Selected color in HEX format.\n * @attr {string} color - Selected color in HEX format.\n *\n * @fires color-changed - Event fired when color property changes.\n *\n * @csspart hue - A hue selector container.\n * @csspart saturation - A saturation selector container\n * @csspart hue-pointer - A hue pointer element.\n * @csspart saturation-pointer - A saturation pointer element.\n */\nexport class HexColorPicker extends HexBase {\n}\ncustomElements.define('hex-color-picker', HexColorPicker);\n//# sourceMappingURL=hex-color-picker.js.map","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./colorpicker.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/colorpicker/colorpickerview\n */\n\nimport { convertColor, convertToHex, type ColorPickerViewConfig } from './utils';\n\nimport { type Locale, global, env } from '@ckeditor/ckeditor5-utils';\nimport { debounce, type DebouncedFunc } from 'lodash-es';\nimport View from '../view';\nimport type InputTextView from '../inputtext/inputtextview';\nimport type ViewCollection from '../viewcollection';\nimport LabeledFieldView from '../labeledfield/labeledfieldview';\nimport { createLabeledInputText } from '../labeledfield/utils';\n\nimport 'vanilla-colorful/hex-color-picker.js';\nimport '../../theme/components/colorpicker/colorpicker.css';\n\nconst waitingTime = 150;\n\n/**\n * A class which represents a color picker with an input field for defining custom colors.\n */\nexport default class ColorPickerView extends View {\n\t/**\n\t * Element with saturation and hue sliders.\n\t */\n\tdeclare public picker: HTMLElement;\n\n\t/**\n\t * Container for a `#` sign prefix and an input for displaying and defining custom colors\n\t * in HEX format.\n\t */\n\tpublic hexInputRow: ColorPickerInputRowView;\n\n\t/**\n\t * Current color selected in the color picker. It can be set by the component itself\n\t * (through the palette or input) or from the outside (e.g. to reflect the current selection color).\n\t */\n\tdeclare public color: string;\n\n\t/**\n\t * List of slider views of the color picker.\n\t */\n\tdeclare public slidersView: ViewCollection<SliderView>;\n\n\t/**\n\t * An internal representation of a color.\n\t *\n\t * Since the picker uses a hex format, that's how we store it.\n\t *\n\t * Since this is unified color format it won't fire a change event if color is changed\n\t * from `#f00` to `#ff0000` (same value, different format).\n\t *\n\t * @observable\n\t * @private\n\t */\n\tdeclare public _hexColor: string;\n\n\t/**\n\t * Debounced function updating the `color` property in the component\n\t * and firing the `ColorPickerColorSelectedEvent`. Executed whenever color in component\n\t * is changed by the user interaction (through the palette or input).\n\t *\n\t * @private\n\t */\n\tprivate _debounceColorPickerEvent: DebouncedFunc<( arg: string ) => void>;\n\n\t/**\n\t * A reference to the configuration of the color picker specified in the constructor.\n\t *\n\t * @private\n\t */\n\tprivate _config: ColorPickerViewConfig;\n\n\t/**\n\t * Creates a view of color picker.\n\t *\n\t * @param locale\n\t * @param config\n\t */\n\tconstructor( locale: Locale | undefined, config: ColorPickerViewConfig = {} ) {\n\t\tsuper( locale );\n\n\t\tthis.set( {\n\t\t\tcolor: '',\n\t\t\t_hexColor: ''\n\t\t} );\n\n\t\tthis.hexInputRow = this._createInputRow();\n\t\tconst children = this.createCollection();\n\n\t\tif ( !config.hideInput ) {\n\t\t\tchildren.add( this.hexInputRow );\n\t\t}\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [ 'ck', 'ck-color-picker' ],\n\t\t\t\ttabindex: -1\n\t\t\t},\n\t\t\tchildren\n\t\t} );\n\n\t\tthis._config = config;\n\n\t\tthis._debounceColorPickerEvent = debounce( ( color: string ) => {\n\t\t\t// At first, set the color internally in the component. It's converted to the configured output format.\n\t\t\tthis.set( 'color', color );\n\n\t\t\t// Then let the outside world know that the user changed the color.\n\t\t\tthis.fire<ColorPickerColorSelectedEvent>( 'colorSelected', { color: this.color } );\n\t\t}, waitingTime, {\n\t\t\tleading: true\n\t\t} );\n\n\t\t// The `color` property holds the color in the configured output format.\n\t\t// Ensure it before actually setting the value.\n\t\tthis.on( 'set:color', ( evt, propertyName, newValue ) => {\n\t\t\tevt.return = convertColor( newValue, this._config.format || 'hsl' );\n\t\t} );\n\n\t\t// The `_hexColor` property is bound to the `color` one, but requires conversion.\n\t\tthis.on( 'change:color', () => {\n\t\t\tthis._hexColor = convertColorToCommonHexFormat( this.color );\n\t\t} );\n\n\t\tthis.on( 'change:_hexColor', () => {\n\t\t\t// Update the selected color in the color picker palette when it's not focused.\n\t\t\t// It means the user typed the color in the input.\n\t\t\tif ( document.activeElement !== this.picker ) {\n\t\t\t\tthis.picker.setAttribute( 'color', this._hexColor );\n\t\t\t}\n\n\t\t\t// There has to be two way binding between properties.\n\t\t\t// Extra precaution has to be taken to trigger change back only when the color really changes.\n\t\t\tif ( convertColorToCommonHexFormat( this.color ) != convertColorToCommonHexFormat( this._hexColor ) ) {\n\t\t\t\tthis.color = this._hexColor;\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Renders color picker in the view.\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis.picker = global.document.createElement( 'hex-color-picker' );\n\t\tthis.picker.setAttribute( 'class', 'hex-color-picker' );\n\t\tthis.picker.setAttribute( 'tabindex', '-1' );\n\n\t\tthis._createSlidersView();\n\n\t\tif ( this.element ) {\n\t\t\tif ( this.hexInputRow.element ) {\n\t\t\t\tthis.element.insertBefore( this.picker, this.hexInputRow.element );\n\t\t\t} else {\n\t\t\t\tthis.element.appendChild( this.picker );\n\t\t\t}\n\n\t\t\t// Create custom stylesheet with a look of focused pointer in color picker and append it into the color picker shadowDom\n\t\t\tconst styleSheetForFocusedColorPicker = document.createElement( 'style' );\n\n\t\t\tstyleSheetForFocusedColorPicker.textContent = '[role=\"slider\"]:focus [part$=\"pointer\"] {' +\n\t\t\t\t\t'border: 1px solid #fff;' +\n\t\t\t\t\t'outline: 1px solid var(--ck-color-focus-border);' +\n\t\t\t\t\t'box-shadow: 0 0 0 2px #fff;' +\n\t\t\t\t'}';\n\t\t\tthis.picker.shadowRoot!.appendChild( styleSheetForFocusedColorPicker );\n\t\t}\n\n\t\tthis.picker.addEventListener( 'color-changed', event => {\n\t\t\tconst customEvent = event as CustomEvent;\n\t\t\tconst color = customEvent.detail.value;\n\t\t\tthis._debounceColorPickerEvent( color );\n\t\t} );\n\t}\n\n\t/**\n\t * Focuses the first pointer in color picker.\n\t *\n\t */\n\tpublic focus(): void {\n\t\t// In some browsers we need to move the focus to the input first.\n\t\t// Otherwise, the color picker doesn't behave as expected.\n\t\t// In FF, after selecting the color via slider, it instantly moves back to the previous color.\n\t\t// In all iOS browsers and desktop Safari, once the saturation slider is moved for the first time,\n\t\t// editor collapses the selection and doesn't apply the color change.\n\t\t// See: https://github.com/cksource/ckeditor5-internal/issues/3245, https://github.com/ckeditor/ckeditor5/issues/14119,\n\t\t// https://github.com/cksource/ckeditor5-internal/issues/3268.\n\t\t/* istanbul ignore next -- @preserve */\n\t\tif ( !this._config.hideInput && ( env.isGecko || env.isiOS || env.isSafari ) ) {\n\t\t\tconst input: LabeledFieldView<InputTextView> = this.hexInputRow!.children.get( 1 )! as LabeledFieldView<InputTextView>;\n\n\t\t\tinput.focus();\n\t\t}\n\n\t\tconst firstSlider = this.slidersView.first!;\n\n\t\tfirstSlider.focus();\n\t}\n\n\t/**\n\t * Creates collection of sliders in color picker.\n\t *\n\t * @private\n\t */\n\tprivate _createSlidersView(): void {\n\t\tconst colorPickersChildren = [ ...this.picker.shadowRoot!.children ] as Array<HTMLElement>;\n\t\tconst sliders = colorPickersChildren.filter( item => item.getAttribute( 'role' ) === 'slider' );\n\n\t\tconst slidersView = sliders.map( slider => {\n\t\t\tconst view = new SliderView( slider );\n\n\t\t\treturn view;\n\t\t} );\n\n\t\tthis.slidersView = this.createCollection();\n\n\t\tslidersView.forEach( item => {\n\t\t\tthis.slidersView.add( item );\n\t\t} );\n\t}\n\n\t/**\n\t * Creates input row for defining custom colors in color picker.\n\t *\n\t * @private\n\t */\n\tprivate _createInputRow(): ColorPickerInputRowView {\n\t\tconst hashView = new HashView();\n\t\tconst colorInput = this._createColorInput();\n\n\t\treturn new ColorPickerInputRowView( this.locale!, [ hashView, colorInput ] );\n\t}\n\n\t/**\n\t * Creates the input where user can type or paste the color in hex format.\n\t *\n\t * @private\n\t */\n\tprivate _createColorInput(): LabeledFieldView<InputTextView> {\n\t\tconst labeledInput = new LabeledFieldView( this.locale, createLabeledInputText );\n\t\tconst { t } = this.locale!;\n\n\t\tlabeledInput.set( {\n\t\t\tlabel: t( 'HEX' ),\n\t\t\tclass: 'color-picker-hex-input'\n\t\t} );\n\n\t\tlabeledInput.fieldView.bind( 'value' ).to( this, '_hexColor', pickerColor => {\n\t\t\tif ( labeledInput.isFocused ) {\n\t\t\t\t// Text field shouldn't be updated with color change if the text field is focused.\n\t\t\t\t// Imagine user typing hex code and getting the value of field changed.\n\t\t\t\treturn labeledInput.fieldView.value;\n\t\t\t} else {\n\t\t\t\treturn pickerColor.startsWith( '#' ) ? pickerColor.substring( 1 ) : pickerColor;\n\t\t\t}\n\t\t} );\n\n\t\t// Only accept valid hex colors as input.\n\t\tlabeledInput.fieldView.on( 'input', () => {\n\t\t\tconst inputValue = labeledInput.fieldView.element!.value;\n\n\t\t\tif ( inputValue ) {\n\t\t\t\t// Trim the whitespace.\n\t\t\t\tconst trimmedValue = inputValue.trim();\n\n\t\t\t\t// Drop the `#` from the beginning if present.\n\t\t\t\tconst hashlessInput = trimmedValue.startsWith( '#' ) ? trimmedValue.substring( 1 ) : trimmedValue;\n\n\t\t\t\t// Check if it's a hex color (3,4,6 or 8 chars long and with proper characters).\n\t\t\t\tconst isValidHexColor = [ 3, 4, 6, 8 ].includes( hashlessInput.length ) &&\n\t\t\t\t\t/(([0-9a-fA-F]{2}){3,4}|([0-9a-fA-F]){3,4})/.test( hashlessInput );\n\n\t\t\t\tif ( isValidHexColor ) {\n\t\t\t\t\t// If so, set the color.\n\t\t\t\t\t// Otherwise, do nothing.\n\t\t\t\t\tthis._debounceColorPickerEvent( '#' + hashlessInput );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\treturn labeledInput;\n\t}\n}\n\n// Converts any color format to a unified hex format.\n//\n// @param inputColor\n// @returns An unified hex string.\nfunction convertColorToCommonHexFormat( inputColor: string ): string {\n\tlet ret = convertToHex( inputColor );\n\n\tif ( !ret ) {\n\t\tret = '#000';\n\t}\n\n\tif ( ret.length === 4 ) {\n\t\t// Unfold shortcut format.\n\t\tret = '#' + [ ret[ 1 ], ret[ 1 ], ret[ 2 ], ret[ 2 ], ret[ 3 ], ret[ 3 ] ].join( '' );\n\t}\n\n\treturn ret.toLowerCase();\n}\n\n// View abstraction over pointer in color picker.\nclass SliderView extends View {\n\t/**\n\t * @param element HTML elemnt of slider in color picker.\n\t */\n\tconstructor( element: HTMLElement ) {\n\t\tsuper();\n\t\tthis.element = element;\n\t}\n\n\t/**\n\t * Focuses element.\n\t */\n\tpublic focus(): void {\n\t\tthis.element!.focus();\n\t}\n}\n\n// View abstraction over the `#` character before color input.\nclass HashView extends View {\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-color-picker__hash-view'\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: '#'\n\t\t} );\n\t}\n}\n\n// The class representing a row containing hex color input field.\n// **Note**: For now this class is private. When more use cases appear (beyond `ckeditor5-table` and `ckeditor5-image`),\n// it will become a component in `ckeditor5-ui`.\n//\n// @private\nclass ColorPickerInputRowView extends View {\n\t/**\n\t * A collection of row items (buttons, dropdowns, etc.).\n\t */\n\tpublic readonly children: ViewCollection;\n\n\t/**\n\t * Creates an instance of the form row class.\n\t *\n\t * @param locale The locale instance.\n\t */\n\tconstructor( locale: Locale, children?: Array<View> ) {\n\t\tsuper( locale );\n\n\t\tthis.children = this.createCollection( children );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-color-picker__row'\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n}\n\n/**\n * An event fired whenever the color was selected through the color picker palette\n * or the color picker input.\n *\n * This even fires only when the user changes the color. It does not fire when the color\n * is changed programmatically, e.g. via\n * {@link module:ui/colorpicker/colorpickerview~ColorPickerView#color}.\n *\n * @eventName ~ColorPickerView#colorSelected\n */\nexport type ColorPickerColorSelectedEvent = {\n\tname: 'colorSelected';\n\targs: [ {\n\t\tcolor: string;\n\t} ];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/colorselector/documentcolorcollection\n */\n\nimport type { ColorDefinition } from '../colorgrid/colorgridview';\nimport {\n\tCollection,\n\tObservableMixin,\n\ttype CollectionAddEvent,\n\ttype CollectionRemoveEvent,\n\ttype CollectionChangeEvent\n} from '@ckeditor/ckeditor5-utils';\n\n/**\n * A collection to store document colors. It enforces colors to be unique.\n */\nexport default class DocumentColorCollection extends ObservableMixin( Collection<ColorDefinition> ) {\n\t/**\n\t * Indicates whether the document color collection is empty.\n\t *\n\t * @observable\n\t */\n\tdeclare public readonly isEmpty: boolean;\n\n\tconstructor( options?: any ) {\n\t\tsuper( options );\n\n\t\tthis.set( 'isEmpty', true );\n\n\t\tthis.on( 'change', () => {\n\t\t\tthis.set( 'isEmpty', this.length === 0 );\n\t\t} );\n\t}\n\n\t/**\n\t * Adds a color to the document color collection.\n\t *\n\t * This method ensures that no color duplicates are inserted (compared using\n\t * the color value of the {@link module:ui/colorgrid/colorgridview~ColorDefinition}).\n\t *\n\t * If the item does not have an ID, it will be automatically generated and set on the item.\n\t *\n\t * @param index The position of the item in the collection. The item is pushed to the collection when `index` is not specified.\n\t * @fires add\n\t * @fires change\n\t */\n\tpublic override add( item: ColorDefinition, index?: number ): this {\n\t\tif ( this.find( element => element.color === item.color ) ) {\n\t\t\t// No duplicates are allowed.\n\t\t\treturn this;\n\t\t}\n\n\t\treturn super.add( item, index );\n\t}\n\n\t/**\n\t * Checks if an object with given colors is present in the document color collection.\n\t */\n\tpublic hasColor( color: string ): boolean {\n\t\treturn !!this.find( item => item.color === color );\n\t}\n}\n\n/**\n * Fired when the collection was changed due to adding or removing items.\n *\n * @eventName ~DocumentColorCollection#change\n * @param data Changed items.\n */\nexport type DocumentColorCollectionChangeEvent = CollectionChangeEvent;\n\n/**\n * Fired when an item is added to the collection.\n *\n * @eventName ~DocumentColorCollection#add\n * @param item The added item.\n * @param index An index where the addition occurred.\n */\nexport type DocumentColorCollectionAddEvent = CollectionAddEvent;\n\n/**\n * Fired when an item is removed from the collection.\n *\n * @eventName ~DocumentColorCollection#remove\n * @param item The removed item.\n * @param index Index from which item was removed.\n */\nexport type DocumentColorCollectionRemoveEvent = CollectionRemoveEvent;\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M10.209 18.717A8.5 8.5 0 1 1 18.686 9.6h-.008l.002.12a3 3 0 0 1-2.866 2.997h-.268l-.046-.002v.002h-4.791a2 2 0 1 0 0 4 1 1 0 1 1-.128 1.992 8.665 8.665 0 0 1-.372.008Zm-3.918-7.01a1.25 1.25 0 1 0-2.415-.648 1.25 1.25 0 0 0 2.415.647ZM5.723 8.18a1.25 1.25 0 1 0 .647-2.414 1.25 1.25 0 0 0-.647 2.414ZM9.76 6.155a1.25 1.25 0 1 0 .647-2.415 1.25 1.25 0 0 0-.647 2.415Zm4.028 1.759a1.25 1.25 0 1 0 .647-2.415 1.25 1.25 0 0 0-.647 2.415Z\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/colorselector/colorgridsfragmentview\n */\n\nimport View from '../view';\nimport ButtonView from '../button/buttonview';\nimport ColorGridView, { type ColorDefinition } from '../colorgrid/colorgridview';\nimport ColorTileView from '../colorgrid/colortileview';\nimport LabelView from '../label/labelview';\nimport Template from '../template';\n\nimport DocumentColorCollection from './documentcolorcollection';\n\nimport type { Model } from '@ckeditor/ckeditor5-engine';\nimport type { FocusTracker, Locale } from '@ckeditor/ckeditor5-utils';\nimport type ViewCollection from '../viewcollection';\nimport type { ColorSelectorExecuteEvent, ColorSelectorColorPickerShowEvent } from './colorselectorview';\n\nimport removeButtonIcon from '@ckeditor/ckeditor5-core/theme/icons/eraser.svg';\nimport colorPaletteIcon from '../../theme/icons/color-palette.svg';\n\n/**\n * One of the fragments of {@link module:ui/colorselector/colorselectorview~ColorSelectorView}.\n *\n * It provides a UI that allows users to select colors from the a predefined set and from existing document colors.\n *\n * It consists of the following sub–components:\n *\n * * A \"Remove color\" button,\n * * A static {@link module:ui/colorgrid/colorgridview~ColorGridView} of colors defined in the configuration,\n * * A dynamic {@link module:ui/colorgrid/colorgridview~ColorGridView} of colors used in the document.\n * * If color picker is configured, the \"Color Picker\" button is visible too.\n */\nexport default class ColorGridsFragmentView extends View {\n\t/**\n\t * A collection of the children of the table.\n\t */\n\tpublic readonly items: ViewCollection;\n\n\t/**\n\t * An array with objects representing colors to be displayed in the grid.\n\t */\n\tpublic colorDefinitions: Array<ColorDefinition>;\n\n\t/**\n\t * Tracks information about the DOM focus in the list.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * The number of columns in the color grid.\n\t */\n\tpublic columns: number;\n\n\t/**\n\t * Preserves the reference to {@link module:ui/colorselector/documentcolorcollection~DocumentColorCollection} used to collect\n\t * definitions that store the document colors.\n\t *\n\t * @readonly\n\t */\n\tpublic documentColors: DocumentColorCollection;\n\n\t/**\n\t * The maximum number of colors in the document colors section.\n\t * If it equals 0, the document colors section is not added.\n\t *\n\t * @readonly\n\t */\n\tpublic documentColorsCount?: number;\n\n\t/**\n\t * Keeps the value of the command associated with the table for the current selection.\n\t */\n\tdeclare public selectedColor: string;\n\n\t/**\n\t * Preserves the reference to {@link module:ui/colorgrid/colorgridview~ColorGridView} used to create\n\t * the default (static) color set.\n\t *\n\t * The property is loaded once the the parent dropdown is opened the first time.\n\t *\n\t * @readonly\n\t */\n\tpublic staticColorsGrid: ColorGridView | undefined;\n\n\t/**\n\t * Preserves the reference to {@link module:ui/colorgrid/colorgridview~ColorGridView} used to create\n\t * the document colors. It remains undefined if the document colors feature is disabled.\n\t *\n\t * The property is loaded once the the parent dropdown is opened the first time.\n\t *\n\t * @readonly\n\t */\n\tpublic documentColorsGrid: ColorGridView | undefined;\n\n\t/**\n\t * The \"Color picker\" button view.\n\t */\n\tpublic colorPickerButtonView?: ButtonView;\n\n\t/**\n\t * The \"Remove color\" button view.\n\t */\n\tpublic removeColorButtonView: ButtonView;\n\n\t/**\n\t * The property which is responsible for is component visible or not.\n\t */\n\tdeclare public isVisible: boolean;\n\n\t/**\n\t * A collection of views that can be focused in the view.\n\t *\n\t * @readonly\n\t */\n\tprotected _focusables: ViewCollection;\n\n\t/**\n\t * Document color section's label.\n\t *\n\t * @readonly\n\t */\n\tprivate _documentColorsLabel?: string;\n\n\t/**\n\t * The label of the button responsible for removing color attributes.\n\t */\n\tprivate _removeButtonLabel: string;\n\n\t/**\n\t * The label of the button responsible for switching to the color picker component.\n\t */\n\tprivate _colorPickerLabel: string;\n\n\t/**\n\t * Creates an instance of the view.\n\t *\n\t * @param locale The localization services instance.\n\t * @param colors An array with definitions of colors to be displayed in the table.\n\t * @param columns The number of columns in the color grid.\n\t * @param removeButtonLabel The label of the button responsible for removing the color.\n\t * @param colorPickerLabel The label of the button responsible for color picker appearing.\n\t * @param documentColorsLabel The label for the section with the document colors.\n\t * @param documentColorsCount The number of colors in the document colors section inside the color dropdown.\n\t * @param focusTracker Tracks information about the DOM focus in the list.\n\t * @param focusables A collection of views that can be focused in the view.\n\t */\n\tconstructor(\n\t\tlocale: Locale,\n\t\t{\n\t\t\tcolors, columns, removeButtonLabel, documentColorsLabel, documentColorsCount,\n\t\t\tcolorPickerLabel, focusTracker, focusables\n\t\t}: {\n\t\t\tcolors: Array<ColorDefinition>;\n\t\t\tcolumns: number;\n\t\t\tremoveButtonLabel: string;\n\t\t\tcolorPickerLabel: string;\n\t\t\tdocumentColorsLabel?: string;\n\t\t\tdocumentColorsCount?: number;\n\t\t\tfocusTracker: FocusTracker;\n\t\t\tfocusables: ViewCollection;\n\t\t}\n\t) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.set( 'isVisible', true );\n\n\t\tthis.focusTracker = focusTracker;\n\t\tthis.items = this.createCollection();\n\t\tthis.colorDefinitions = colors;\n\t\tthis.columns = columns;\n\t\tthis.documentColors = new DocumentColorCollection();\n\t\tthis.documentColorsCount = documentColorsCount;\n\n\t\tthis._focusables = focusables;\n\t\tthis._removeButtonLabel = removeButtonLabel;\n\t\tthis._colorPickerLabel = colorPickerLabel;\n\t\tthis._documentColorsLabel = documentColorsLabel;\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck-color-grids-fragment',\n\t\t\t\t\tbind.if( 'isVisible', 'ck-hidden', value => !value )\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: this.items\n\t\t} );\n\n\t\tthis.removeColorButtonView = this._createRemoveColorButton();\n\n\t\tthis.items.add( this.removeColorButtonView );\n\t}\n\n\t/**\n\t * Scans through the editor model and searches for text node attributes with the given attribute name.\n\t * Found entries are set as document colors.\n\t *\n\t * All the previously stored document colors will be lost in the process.\n\t *\n\t * @param model The model used as a source to obtain the document colors.\n\t * @param attributeName Determines the name of the related model's attribute for a given dropdown.\n\t */\n\tpublic updateDocumentColors( model: Model, attributeName: string ): void {\n\t\tconst document = model.document;\n\t\tconst maxCount = this.documentColorsCount;\n\n\t\tthis.documentColors.clear();\n\n\t\tfor ( const root of document.getRoots() ) {\n\t\t\tconst range = model.createRangeIn( root );\n\n\t\t\tfor ( const node of range.getItems() ) {\n\t\t\t\tif ( node.is( '$textProxy' ) && node.hasAttribute( attributeName ) ) {\n\t\t\t\t\tthis._addColorToDocumentColors( node.getAttribute( attributeName ) as string );\n\n\t\t\t\t\tif ( this.documentColors.length >= maxCount! ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Refreshes the state of the selected color in one or both {@link module:ui/colorgrid/colorgridview~ColorGridView}s\n\t * available in the {@link module:ui/colorselector/colorselectorview~ColorSelectorView}. It guarantees that the selection will\n\t * occur only in one of them.\n\t */\n\tpublic updateSelectedColors(): void {\n\t\tconst documentColorsGrid = this.documentColorsGrid;\n\t\tconst staticColorsGrid = this.staticColorsGrid!;\n\t\tconst selectedColor = this.selectedColor;\n\n\t\tstaticColorsGrid.selectedColor = selectedColor;\n\n\t\tif ( documentColorsGrid ) {\n\t\t\tdocumentColorsGrid.selectedColor = selectedColor;\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis.staticColorsGrid = this._createStaticColorsGrid();\n\n\t\tthis.items.add( this.staticColorsGrid );\n\n\t\tif ( this.documentColorsCount ) {\n\t\t\t// Create a label for document colors.\n\t\t\tconst bind = Template.bind( this.documentColors, this.documentColors );\n\t\t\tconst label = new LabelView( this.locale );\n\t\t\tlabel.text = this._documentColorsLabel;\n\t\t\tlabel.extendTemplate( {\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: [\n\t\t\t\t\t\t'ck',\n\t\t\t\t\t\t'ck-color-grid__label',\n\t\t\t\t\t\tbind.if( 'isEmpty', 'ck-hidden' )\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.items.add( label );\n\t\t\tthis.documentColorsGrid = this._createDocumentColorsGrid();\n\n\t\t\tthis.items.add( this.documentColorsGrid );\n\t\t}\n\t\tthis._createColorPickerButton();\n\n\t\tthis._addColorSelectorElementsToFocusTracker();\n\t\tthis.focus();\n\t}\n\n\t/**\n\t * Focuses the component.\n\t */\n\tpublic focus(): void {\n\t\tthis.removeColorButtonView.focus();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\t}\n\n\t/**\n\t * Handles displaying the color picker button (if it was previously created) and making it focusable.\n\t */\n\tpublic addColorPickerButton(): void {\n\t\tif ( this.colorPickerButtonView ) {\n\t\t\tthis.items.add( this.colorPickerButtonView );\n\t\t\tthis.focusTracker.add( this.colorPickerButtonView.element! );\n\t\t\tthis._focusables.add( this.colorPickerButtonView );\n\t\t}\n\t}\n\n\t/**\n\t * Adds color selector elements to focus tracker.\n\t */\n\tprivate _addColorSelectorElementsToFocusTracker(): void {\n\t\tthis.focusTracker.add( this.removeColorButtonView.element! );\n\t\tthis._focusables.add( this.removeColorButtonView );\n\n\t\tif ( this.staticColorsGrid ) {\n\t\t\tthis.focusTracker.add( this.staticColorsGrid.element! );\n\t\t\tthis._focusables.add( this.staticColorsGrid );\n\t\t}\n\n\t\tif ( this.documentColorsGrid ) {\n\t\t\tthis.focusTracker.add( this.documentColorsGrid.element! );\n\t\t\tthis._focusables.add( this.documentColorsGrid );\n\t\t}\n\t}\n\n\t/**\n\t * Creates the button responsible for displaying the color picker component.\n\t */\n\tprivate _createColorPickerButton(): void {\n\t\tthis.colorPickerButtonView = new ButtonView();\n\n\t\tthis.colorPickerButtonView.set( {\n\t\t\tlabel: this._colorPickerLabel,\n\t\t\twithText: true,\n\t\t\ticon: colorPaletteIcon,\n\t\t\tclass: 'ck-color-selector__color-picker'\n\t\t} );\n\n\t\tthis.colorPickerButtonView.on( 'execute', () => {\n\t\t\tthis.fire<ColorSelectorColorPickerShowEvent>( 'colorPicker:show' );\n\t\t} );\n\t}\n\n\t/**\n\t * Adds the remove color button as a child of the current view.\n\t */\n\tprivate _createRemoveColorButton(): ButtonView {\n\t\tconst buttonView = new ButtonView();\n\n\t\tbuttonView.set( {\n\t\t\twithText: true,\n\t\t\ticon: removeButtonIcon,\n\t\t\tlabel: this._removeButtonLabel\n\t\t} );\n\n\t\tbuttonView.class = 'ck-color-selector__remove-color';\n\t\tbuttonView.on( 'execute', () => {\n\t\t\tthis.fire( 'execute', {\n\t\t\t\tvalue: null,\n\t\t\t\tsource: 'removeColorButton'\n\t\t\t} );\n\t\t} );\n\n\t\tbuttonView.render();\n\n\t\treturn buttonView;\n\t}\n\n\t/**\n\t * Creates a static color grid based on the editor configuration.\n\t */\n\tprivate _createStaticColorsGrid(): ColorGridView {\n\t\tconst colorGrid = new ColorGridView( this.locale, {\n\t\t\tcolorDefinitions: this.colorDefinitions,\n\t\t\tcolumns: this.columns\n\t\t} );\n\n\t\tcolorGrid.on( 'execute', ( evt, data ) => {\n\t\t\tthis.fire<ColorSelectorExecuteEvent>( 'execute', {\n\t\t\t\tvalue: data.value,\n\t\t\t\tsource: 'staticColorsGrid'\n\t\t\t} );\n\t\t} );\n\n\t\treturn colorGrid;\n\t}\n\n\t/**\n\t * Creates the document colors section view and binds it to {@link #documentColors}.\n\t */\n\tprivate _createDocumentColorsGrid(): ColorGridView {\n\t\tconst bind = Template.bind( this.documentColors, this.documentColors );\n\t\tconst documentColorsGrid = new ColorGridView( this.locale, {\n\t\t\tcolumns: this.columns\n\t\t} );\n\n\t\tdocumentColorsGrid.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: bind.if( 'isEmpty', 'ck-hidden' )\n\t\t\t}\n\t\t} );\n\n\t\tdocumentColorsGrid.items.bindTo( this.documentColors ).using(\n\t\t\tcolorObj => {\n\t\t\t\tconst colorTile = new ColorTileView();\n\n\t\t\t\tcolorTile.set( {\n\t\t\t\t\tcolor: colorObj.color,\n\t\t\t\t\thasBorder: colorObj.options && colorObj.options.hasBorder\n\t\t\t\t} );\n\n\t\t\t\tif ( colorObj.label ) {\n\t\t\t\t\tcolorTile.set( {\n\t\t\t\t\t\tlabel: colorObj.label,\n\t\t\t\t\t\ttooltip: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tcolorTile.on( 'execute', () => {\n\t\t\t\t\tthis.fire<ColorSelectorExecuteEvent>( 'execute', {\n\t\t\t\t\t\tvalue: colorObj.color,\n\t\t\t\t\t\tsource: 'documentColorsGrid'\n\t\t\t\t\t} );\n\t\t\t\t} );\n\n\t\t\t\treturn colorTile;\n\t\t\t}\n\t\t);\n\n\t\t// Selected color should be cleared when document colors became empty.\n\t\tthis.documentColors.on( 'change:isEmpty', ( evt, name, val ) => {\n\t\t\tif ( val ) {\n\t\t\t\tdocumentColorsGrid.selectedColor = null;\n\t\t\t}\n\t\t} );\n\n\t\treturn documentColorsGrid;\n\t}\n\n\t/**\n\t * Adds a given color to the document colors list. If possible, the method will attempt to use\n\t * data from the {@link #colorDefinitions} (label, color options).\n\t *\n\t * @param color A string that stores the value of the recently applied color.\n\t */\n\tprivate _addColorToDocumentColors( color: string ): void {\n\t\tconst predefinedColor = this.colorDefinitions\n\t\t\t.find( definition => definition.color === color );\n\n\t\tif ( !predefinedColor ) {\n\t\t\tthis.documentColors.add( {\n\t\t\t\tcolor,\n\t\t\t\tlabel: color,\n\t\t\t\toptions: {\n\t\t\t\t\thasBorder: false\n\t\t\t\t}\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.documentColors.add( Object.assign( {}, predefinedColor ) );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/colorselector/colorpickerfragmentview\n */\n\nimport View from '../view';\nimport ButtonView from '../button/buttonview';\nimport type ViewCollection from '../viewcollection';\nimport {\n\tdefault as ColorPickerView,\n\ttype ColorPickerColorSelectedEvent\n} from '../colorpicker/colorpickerview';\n\nimport type { FocusTracker, KeystrokeHandler, Locale } from '@ckeditor/ckeditor5-utils';\nimport type { ColorPickerViewConfig } from '../colorpicker/utils';\nimport type { ColorSelectorColorPickerCancelEvent, ColorSelectorExecuteEvent } from './colorselectorview';\n\nimport checkButtonIcon from '@ckeditor/ckeditor5-core/theme/icons/check.svg';\nimport cancelButtonIcon from '@ckeditor/ckeditor5-core/theme/icons/cancel.svg';\n\n/**\n * One of the fragments of {@link module:ui/colorselector/colorselectorview~ColorSelectorView}.\n *\n * It allows users to select a color from a color picker.\n *\n * It consists of the following sub–components:\n *\n * * A color picker saturation and hue sliders,\n * * A text input accepting colors in HEX format,\n * * \"Save\" and \"Cancel\" action buttons.\n */\nexport default class ColorPickerFragmentView extends View {\n\t/**\n\t * A collection of component's children.\n\t */\n\tpublic readonly items: ViewCollection;\n\n\t/**\n\t * A view with saturation and hue sliders and color input.\n\t */\n\tpublic colorPickerView?: ColorPickerView;\n\n\t/**\n\t * The \"Save\" button view.\n\t */\n\tpublic saveButtonView: ButtonView;\n\n\t/**\n\t * The \"Cancel\" button view.\n\t */\n\tpublic cancelButtonView: ButtonView;\n\n\t/**\n\t * The action bar where are \"Save\" button and \"Cancel\" button.\n\t */\n\tpublic actionBarView: View;\n\n\t/**\n\t * Tracks information about the DOM focus in the list.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * Indicates whether the component is visible or not.\n\t */\n\tdeclare public isVisible: boolean;\n\n\t/**\n\t * Keeps the value of the command associated with the component for the current selection.\n\t */\n\tdeclare public selectedColor?: string;\n\n\t/**\n\t * A collection of views that can be focused in the view.\n\t *\n\t * @readonly\n\t */\n\tprotected _focusables: ViewCollection;\n\n\t/**\n\t * A reference to the configuration of {@link #colorPickerView}. `false` when the view was\n\t * configured without a color picker.\n\t *\n\t * @readonly\n\t */\n\tprivate _colorPickerViewConfig: ColorPickerViewConfig | false;\n\n\t/**\n\t * Creates an instance of the view.\n\t *\n\t * @param locale The localization services instance.\n\t * @param focusTracker Tracks information about the DOM focus in the list.\n\t * @param focusables A collection of views that can be focused in the view..\n\t * @param keystrokes An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t * @param colorPickerViewConfig The configuration of color picker feature. If set to `false`, the color picker\n\t * will not be rendered.\n\t */\n\tconstructor(\n\t\tlocale: Locale,\n\t\t{\n\t\t\tfocusTracker,\n\t\t\tfocusables,\n\t\t\tkeystrokes,\n\t\t\tcolorPickerViewConfig\n\t\t}:\n\t\t{\n\t\t\tfocusTracker: FocusTracker;\n\t\t\tfocusables: ViewCollection;\n\t\t\tkeystrokes: KeystrokeHandler;\n\t\t\tcolorPickerViewConfig: ColorPickerViewConfig | false;\n\t\t}\n\t) {\n\t\tsuper( locale );\n\n\t\tthis.items = this.createCollection();\n\t\tthis.focusTracker = focusTracker;\n\t\tthis.keystrokes = keystrokes;\n\n\t\tthis.set( 'isVisible', false );\n\t\tthis.set( 'selectedColor', undefined );\n\n\t\tthis._focusables = focusables;\n\t\tthis._colorPickerViewConfig = colorPickerViewConfig;\n\n\t\tconst bind = this.bindTemplate;\n\t\tconst { saveButtonView, cancelButtonView } = this._createActionButtons();\n\n\t\tthis.saveButtonView = saveButtonView;\n\t\tthis.cancelButtonView = cancelButtonView;\n\t\tthis.actionBarView = this._createActionBarView( { saveButtonView, cancelButtonView } );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck-color-picker-fragment',\n\t\t\t\t\tbind.if( 'isVisible', 'ck-hidden', value => !value )\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: this.items\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tconst colorPickerView = new ColorPickerView( this.locale, {\n\t\t\t...this._colorPickerViewConfig\n\t\t} as ColorPickerViewConfig );\n\n\t\tthis.colorPickerView = colorPickerView;\n\t\tthis.colorPickerView.render();\n\n\t\tif ( this.selectedColor ) {\n\t\t\tcolorPickerView.color = this.selectedColor;\n\t\t}\n\n\t\tthis.listenTo( this, 'change:selectedColor', ( evt, name, value ) => {\n\t\t\tcolorPickerView.color = value;\n\t\t} );\n\n\t\tthis.items.add( this.colorPickerView );\n\t\tthis.items.add( this.actionBarView );\n\n\t\tthis._addColorPickersElementsToFocusTracker();\n\t\tthis._stopPropagationOnArrowsKeys();\n\t\tthis._executeOnEnterPress();\n\t\tthis._executeUponColorChange();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\t}\n\n\t/**\n\t * Focuses the color picker.\n\t */\n\tpublic focus(): void {\n\t\tthis.colorPickerView!.focus();\n\t}\n\n\t/**\n\t * When color picker is focused and \"enter\" is pressed it executes command.\n\t */\n\tprivate _executeOnEnterPress(): void {\n\t\tthis.keystrokes.set( 'enter', evt => {\n\t\t\tif ( this.isVisible && this.focusTracker.focusedElement !== this.cancelButtonView.element ) {\n\t\t\t\tthis.fire( 'execute', {\n\t\t\t\t\tvalue: this.selectedColor!\n\t\t\t\t} );\n\n\t\t\t\tevt.stopPropagation();\n\t\t\t\tevt.preventDefault();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Removes default behavior of arrow keys in dropdown.\n\t */\n\tprivate _stopPropagationOnArrowsKeys(): void {\n\t\tconst stopPropagation = ( data: KeyboardEvent ) => data.stopPropagation();\n\n\t\tthis.keystrokes.set( 'arrowright', stopPropagation );\n\t\tthis.keystrokes.set( 'arrowleft', stopPropagation );\n\t\tthis.keystrokes.set( 'arrowup', stopPropagation );\n\t\tthis.keystrokes.set( 'arrowdown', stopPropagation );\n\t}\n\n\t/**\n\t * Adds color picker elements to focus tracker.\n\t */\n\tprivate _addColorPickersElementsToFocusTracker(): void {\n\t\tfor ( const slider of this.colorPickerView!.slidersView ) {\n\t\t\tthis.focusTracker.add( slider.element! );\n\t\t\tthis._focusables.add( slider );\n\t\t}\n\n\t\tconst input = this.colorPickerView!.hexInputRow.children.get( 1 )!;\n\n\t\tif ( input.element! ) {\n\t\t\tthis.focusTracker.add( input.element );\n\t\t\tthis._focusables.add( input );\n\t\t}\n\n\t\tthis.focusTracker.add( this.saveButtonView.element! );\n\t\tthis._focusables.add( this.saveButtonView );\n\n\t\tthis.focusTracker.add( this.cancelButtonView.element! );\n\t\tthis._focusables.add( this.cancelButtonView );\n\t}\n\n\t/**\n\t * Creates bar containing \"Save\" and \"Cancel\" buttons.\n\t */\n\tprivate _createActionBarView( { saveButtonView, cancelButtonView }: {\n\t\tsaveButtonView: ButtonView;\n\t\tcancelButtonView: ButtonView;\n\t} ): View {\n\t\tconst actionBarRow = new View();\n\t\tconst children = this.createCollection();\n\n\t\tchildren.add( saveButtonView );\n\t\tchildren.add( cancelButtonView );\n\n\t\tactionBarRow.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-color-selector_action-bar'\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren\n\t\t} );\n\n\t\treturn actionBarRow;\n\t}\n\n\t/**\n\t * Creates \"Save\" and \"Cancel\" buttons.\n\t */\n\tprivate _createActionButtons() {\n\t\tconst locale = this.locale;\n\t\tconst t = locale!.t;\n\t\tconst saveButtonView = new ButtonView( locale );\n\t\tconst cancelButtonView = new ButtonView( locale );\n\n\t\tsaveButtonView.set( {\n\t\t\ticon: checkButtonIcon,\n\t\t\tclass: 'ck-button-save',\n\t\t\ttype: 'button',\n\t\t\twithText: false,\n\t\t\tlabel: t( 'Accept' )\n\t\t} );\n\n\t\tcancelButtonView.set( {\n\t\t\ticon: cancelButtonIcon,\n\t\t\tclass: 'ck-button-cancel',\n\t\t\ttype: 'button',\n\t\t\twithText: false,\n\t\t\tlabel: t( 'Cancel' )\n\t\t} );\n\n\t\tsaveButtonView.on( 'execute', () => {\n\t\t\tthis.fire<ColorSelectorExecuteEvent>( 'execute', {\n\t\t\t\tsource: 'colorPickerSaveButton',\n\t\t\t\tvalue: this.selectedColor!\n\t\t\t} );\n\t\t} );\n\n\t\tcancelButtonView.on( 'execute', () => {\n\t\t\tthis.fire<ColorSelectorColorPickerCancelEvent>( 'colorPicker:cancel' );\n\t\t} );\n\n\t\treturn {\n\t\t\tsaveButtonView, cancelButtonView\n\t\t};\n\t}\n\n\t/**\n\t * Fires the `execute` event if color in color picker has been changed\n\t * by the user.\n\t */\n\tprivate _executeUponColorChange() {\n\t\tthis.colorPickerView!.on<ColorPickerColorSelectedEvent>( 'colorSelected', ( evt, data ) => {\n\t\t\tthis.fire<ColorSelectorExecuteEvent>( 'execute', {\n\t\t\t\tvalue: data.color,\n\t\t\t\tsource: 'colorPicker'\n\t\t\t} );\n\t\t\tthis.set( 'selectedColor', data.color );\n\t\t} );\n\t}\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./colorselector.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/colorselector/colorselectorview\n */\n\nimport FocusCycler from '../focuscycler';\nimport View from '../view';\nimport ViewCollection from '../viewcollection';\nimport { FocusTracker, KeystrokeHandler, type Locale } from '@ckeditor/ckeditor5-utils';\n\nimport type { ColorPickerViewConfig } from '../colorpicker/utils';\nimport type { ColorDefinition } from '../colorgrid/colorgridview';\nimport type { Model } from '@ckeditor/ckeditor5-engine';\n\nimport ColorGridsFragmentView from './colorgridsfragmentview';\nimport ColorPickerFragmentView from './colorpickerfragmentview';\n\nimport '../../theme/components/colorselector/colorselector.css';\n\n/**\n * The configurable color selector view class. It allows users to select colors from a predefined set of colors as well as from\n * a color picker.\n *\n * This meta-view is is made of two components (fragments):\n *\n * * {@link module:ui/colorselector/colorselectorview~ColorSelectorView#colorGridsFragmentView},\n * * {@link module:ui/colorselector/colorselectorview~ColorSelectorView#colorPickerFragmentView}.\n *\n * ```ts\n * const colorDefinitions = [\n * \t{ color: '#000', label: 'Black', options: { hasBorder: false } },\n * \t{ color: 'rgb(255, 255, 255)', label: 'White', options: { hasBorder: true } },\n * \t{ color: 'red', label: 'Red', options: { hasBorder: false } }\n * ];\n *\n * const selectorView = new ColorSelectorView( locale, {\n * \tcolors: colorDefinitions,\n * \tcolumns: 5,\n * \tremoveButtonLabel: 'Remove color',\n * \tdocumentColorsLabel: 'Document colors',\n * \tdocumentColorsCount: 4,\n * \tcolorPickerViewConfig: {\n * \t\tformat: 'hsl'\n * \t}\n * } );\n *\n * selectorView.appendUI();\n * selectorView.selectedColor = 'red';\n * selectorView.updateSelectedColors();\n *\n * selectorView.on<ColorSelectorExecuteEvent>( 'execute', ( evt, data ) => {\n * \tconsole.log( 'Color changed', data.value, data.source );\n * } );\n *\n * selectorView.on<ColorSelectorColorPickerShowEvent>( 'colorPicker:show', ( evt ) => {\n * \tconsole.log( 'Color picker showed up', evt );\n * } );\n *\n * selectorView.on<ColorSelectorColorPickerCancelEvent>( 'colorPicker:cancel', ( evt ) => {\n * \tconsole.log( 'Color picker cancel', evt );\n * } );\n *\n * selectorView.render();\n *\n * document.body.appendChild( selectorView.element );\n * ```\n */\nexport default class ColorSelectorView extends View {\n\t/**\n\t * Tracks information about the DOM focus in the list.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * A collection of components.\n\t */\n\tpublic readonly items: ViewCollection;\n\n\t/**\n\t * A fragment that allows users to select colors from the a predefined set and from existing document colors.\n\t */\n\tpublic readonly colorGridsFragmentView: ColorGridsFragmentView;\n\n\t/**\n\t * A fragment that allows users to select a color from a color picker.\n\t */\n\tpublic readonly colorPickerFragmentView: ColorPickerFragmentView;\n\n\t/**\n\t * Keeps the value of the command associated with the component for the current selection.\n\t */\n\tdeclare public selectedColor?: string;\n\n\t/**\n\t * Reflects the visibility state of the color grids fragment.\n\t *\n\t * @internal\n\t */\n\tdeclare public _isColorGridsFragmentVisible: boolean;\n\n\t/**\n\t * Reflects the visibility state of the color picker fragment.\n\t *\n\t * @internal\n\t */\n\tdeclare public _isColorPickerFragmentVisible: boolean;\n\n\t/**\n\t * Helps cycling over focusable {@link #items} in the list.\n\t *\n\t * @readonly\n\t */\n\tprotected _focusCycler: FocusCycler;\n\n\t/**\n\t * A collection of views that can be focused in the view.\n\t *\n\t * @readonly\n\t */\n\tprotected _focusables: ViewCollection;\n\n\t/**\n\t * The configuration of color picker sub-component.\n\t */\n\tprivate _colorPickerViewConfig: ColorPickerViewConfig | false;\n\n\t/**\n\t * Creates a view to be inserted as a child of {@link module:ui/dropdown/dropdownview~DropdownView}.\n\t *\n\t * @param locale The localization services instance.\n\t * @param colors An array with definitions of colors to be displayed in the table.\n\t * @param columns The number of columns in the color grid.\n\t * @param removeButtonLabel The label of the button responsible for removing the color.\n\t * @param colorPickerLabel The label of the button responsible for color picker appearing.\n\t * @param documentColorsLabel The label for the section with the document colors.\n\t * @param documentColorsCount The number of colors in the document colors section inside the color dropdown.\n\t * @param colorPickerViewConfig The configuration of color picker feature. If set to `false`, the color picker will be hidden.\n\t */\n\tconstructor(\n\t\tlocale: Locale,\n\t\t{\n\t\t\tcolors,\n\t\t\tcolumns,\n\t\t\tremoveButtonLabel,\n\t\t\tdocumentColorsLabel,\n\t\t\tdocumentColorsCount,\n\t\t\tcolorPickerLabel,\n\t\t\tcolorPickerViewConfig\n\t\t}: {\n\t\t\tcolors: Array<ColorDefinition>;\n\t\t\tcolumns: number;\n\t\t\tremoveButtonLabel: string;\n\t\t\tdocumentColorsLabel?: string;\n\t\t\tdocumentColorsCount?: number;\n\t\t\tcolorPickerLabel: string;\n\t\t\tcolorPickerViewConfig: ColorPickerViewConfig | false;\n\t\t}\n\t) {\n\t\tsuper( locale );\n\t\tthis.items = this.createCollection();\n\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\n\t\tthis._focusables = new ViewCollection();\n\t\tthis._colorPickerViewConfig = colorPickerViewConfig;\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate list items backwards using the <kbd>Shift</kbd> + <kbd>Tab</kbd> keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate list items forwards using the <kbd>Tab</kbd> key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\tthis.colorGridsFragmentView = new ColorGridsFragmentView( locale, {\n\t\t\tcolors, columns, removeButtonLabel, documentColorsLabel, documentColorsCount, colorPickerLabel,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tfocusables: this._focusables\n\t\t} );\n\n\t\tthis.colorPickerFragmentView = new ColorPickerFragmentView( locale, {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokes: this.keystrokes,\n\t\t\tcolorPickerViewConfig\n\t\t} );\n\n\t\tthis.set( '_isColorGridsFragmentVisible', true );\n\t\tthis.set( '_isColorPickerFragmentVisible', false );\n\n\t\tthis.set( 'selectedColor', undefined );\n\n\t\tthis.colorGridsFragmentView.bind( 'isVisible' ).to( this, '_isColorGridsFragmentVisible' );\n\t\tthis.colorPickerFragmentView.bind( 'isVisible' ).to( this, '_isColorPickerFragmentVisible' );\n\n\t\t/**\n\t\t * This is kind of bindings. Unfortunately we could not use this.bind() method because the same property\n\t\t * can not be bound twice. So this is work around how to bind 'selectedColor' property between components.\n\t\t */\n\t\tthis.on( 'change:selectedColor', ( evt, evtName, data ) => {\n\t\t\tthis.colorGridsFragmentView.set( 'selectedColor', data );\n\t\t\tthis.colorPickerFragmentView.set( 'selectedColor', data );\n\t\t} );\n\n\t\tthis.colorGridsFragmentView.on( 'change:selectedColor', ( evt, evtName, data ) => {\n\t\t\tthis.set( 'selectedColor', data );\n\t\t} );\n\n\t\tthis.colorPickerFragmentView.on( 'change:selectedColor', ( evt, evtName, data ) => {\n\t\t\tthis.set( 'selectedColor', data );\n\t\t} );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-color-selector'\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: this.items\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\t// Start listening for the keystrokes coming from #element.\n\t\tthis.keystrokes.listenTo( this.element! );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Renders the internals of the component on demand:\n\t * * {@link #colorPickerFragmentView},\n\t * * {@link #colorGridsFragmentView}.\n\t *\n\t * It allows for deferring component initialization to improve the performance.\n\t *\n\t * See {@link #showColorPickerFragment}, {@link #showColorGridsFragment}.\n\t */\n\tpublic appendUI(): void {\n\t\tthis._appendColorGridsFragment();\n\n\t\tif ( this._colorPickerViewConfig ) {\n\t\t\tthis._appendColorPickerFragment();\n\t\t}\n\t}\n\n\t/**\n\t * Shows the {@link #colorPickerFragmentView} and hides the {@link #colorGridsFragmentView}.\n\t *\n\t * **Note**: It requires {@link #appendUI} to be called first.\n\t *\n\t * See {@link #showColorGridsFragment}, {@link ~ColorSelectorView#event:colorPicker:show}.\n\t */\n\tpublic showColorPickerFragment(): void {\n\t\tif ( !this.colorPickerFragmentView.colorPickerView || this._isColorPickerFragmentVisible ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isColorPickerFragmentVisible = true;\n\t\tthis.colorPickerFragmentView.focus();\n\t\tthis._isColorGridsFragmentVisible = false;\n\t}\n\n\t/**\n\t * Shows the {@link #colorGridsFragmentView} and hides the {@link #colorPickerFragmentView}.\n\t *\n\t * See {@link #showColorPickerFragment}.\n\t *\n\t * **Note**: It requires {@link #appendUI} to be called first.\n\t */\n\tpublic showColorGridsFragment(): void {\n\t\tif ( this._isColorGridsFragmentVisible ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isColorGridsFragmentVisible = true;\n\t\tthis.colorGridsFragmentView.focus();\n\t\tthis._isColorPickerFragmentVisible = false;\n\t}\n\n\t/**\n\t * Focuses the first focusable element in {@link #items}.\n\t */\n\tpublic focus(): void {\n\t\tthis._focusCycler.focusFirst();\n\t}\n\n\t/**\n\t * Focuses the last focusable element in {@link #items}.\n\t */\n\tpublic focusLast(): void {\n\t\tthis._focusCycler.focusLast();\n\t}\n\n\t/**\n\t * Scans through the editor model and searches for text node attributes with the given `attributeName`.\n\t * Found entries are set as document colors in {@link #colorGridsFragmentView}.\n\t *\n\t * All the previously stored document colors will be lost in the process.\n\t *\n\t * @param model The model used as a source to obtain the document colors.\n\t * @param attributeName Determines the name of the related model's attribute for a given dropdown.\n\t */\n\tpublic updateDocumentColors( model: Model, attributeName: string ): void {\n\t\tthis.colorGridsFragmentView.updateDocumentColors( model, attributeName );\n\t}\n\n\t/**\n\t * Refreshes the state of the selected color in one or both grids located in {@link #colorGridsFragmentView}.\n\t *\n\t * It guarantees that the selection will occur only in one of them.\n\t */\n\tpublic updateSelectedColors(): void {\n\t\tthis.colorGridsFragmentView.updateSelectedColors();\n\t}\n\n\t/**\n\t * Appends the view containing static and document color grid views.\n\t */\n\tprivate _appendColorGridsFragment(): void {\n\t\tif ( this.items.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.items.add( this.colorGridsFragmentView );\n\t\tthis.colorGridsFragmentView.delegate( 'execute' ).to( this );\n\t\tthis.colorGridsFragmentView.delegate( 'colorPicker:show' ).to( this );\n\t}\n\n\t/**\n\t * Appends the view with the color picker.\n\t */\n\tprivate _appendColorPickerFragment(): void {\n\t\tif ( this.items.length === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.items.add( this.colorPickerFragmentView );\n\n\t\tif ( this.colorGridsFragmentView.colorPickerButtonView ) {\n\t\t\tthis.colorGridsFragmentView.colorPickerButtonView.on( 'execute', () => {\n\t\t\t\tthis.showColorPickerFragment();\n\t\t\t} );\n\t\t}\n\n\t\tthis.colorGridsFragmentView.addColorPickerButton();\n\t\tthis.colorPickerFragmentView.delegate( 'execute' ).to( this );\n\t\tthis.colorPickerFragmentView.delegate( 'colorPicker:cancel' ).to( this );\n\t}\n}\n\n/**\n * Fired whenever the color was changed. There are multiple sources of this event and you can distinguish them\n * using the `source` property passed along this event.\n *\n * @eventName ~ColorSelectorView#execute\n */\nexport type ColorSelectorExecuteEvent = {\n\tname: 'execute';\n\targs: [ {\n\t\tvalue: string;\n\t\tsource: 'staticColorsGrid' | 'documentColorsGrid' | 'removeColorButton' | 'colorPicker' | 'colorPickerSaveButton';\n\t} ];\n};\n\n/**\n * Fired when the user pressed the \"Cancel\" button in the\n * {@link module:ui/colorselector/colorselectorview~ColorSelectorView#colorPickerFragmentView}.\n *\n * @eventName ~ColorSelectorView#colorPicker:cancel\n */\nexport type ColorSelectorColorPickerCancelEvent = {\n\tname: 'colorPicker:cancel';\n\targs: [];\n};\n\n/**\n * Fired whenever {@link module:ui/colorselector/colorselectorview~ColorSelectorView#colorPickerFragmentView} is shown.\n *\n * See {@link ~ColorSelectorView#showColorPickerFragment}.\n *\n * @eventName ~ColorSelectorView#colorPicker:show\n */\nexport type ColorSelectorColorPickerShowEvent = {\n\tname: 'colorPicker:show';\n\targs: [];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/componentfactory\n */\n\nimport { CKEditorError, type Locale } from '@ckeditor/ckeditor5-utils';\nimport type { Editor } from '@ckeditor/ckeditor5-core';\n\nimport type View from './view';\n\n/**\n * A helper class implementing the UI component ({@link module:ui/view~View view}) factory.\n *\n * It allows functions producing specific UI components to be registered under their unique names\n * in the factory. A registered component can be then instantiated by providing its name.\n * Note that the names are case insensitive.\n *\n * ```ts\n * // The editor provides localization tools for the factory.\n * const factory = new ComponentFactory( editor );\n *\n * factory.add( 'foo', locale => new FooView( locale ) );\n * factory.add( 'bar', locale => new BarView( locale ) );\n *\n * // An instance of FooView.\n * const fooInstance = factory.create( 'foo' );\n *\n * // Names are case insensitive so this is also allowed:\n * const barInstance = factory.create( 'Bar' );\n * ```\n *\n * The {@link module:core/editor/editor~Editor#locale editor locale} is passed to the factory\n * function when {@link module:ui/componentfactory~ComponentFactory#create} is called.\n */\nexport default class ComponentFactory {\n\t/**\n\t * The editor instance that the factory belongs to.\n\t */\n\tpublic readonly editor: Editor;\n\n\t/**\n\t * Registered component factories.\n\t */\n\tprivate readonly _components = new Map<string, { originalName: string; callback: ( locale: Locale ) => View }>();\n\n\t/**\n\t * Creates an instance of the factory.\n\t *\n\t * @param editor The editor instance.\n\t */\n\tconstructor( editor: Editor ) {\n\t\tthis.editor = editor;\n\t}\n\n\t/**\n\t * Returns an iterator of registered component names. Names are returned in lower case.\n\t */\n\tpublic* names(): IterableIterator<string> {\n\t\tfor ( const value of this._components.values() ) {\n\t\t\tyield value.originalName;\n\t\t}\n\t}\n\n\t/**\n\t * Registers a component factory function that will be used by the\n\t * {@link #create create} method and called with the\n\t * {@link module:core/editor/editor~Editor#locale editor locale} as an argument,\n\t * allowing localization of the {@link module:ui/view~View view}.\n\t *\n\t * @param name The name of the component.\n\t * @param callback The callback that returns the component.\n\t */\n\tpublic add( name: string, callback: ( locale: Locale ) => View ): void {\n\t\tthis._components.set( getNormalized( name ), { callback, originalName: name } );\n\t}\n\n\t/**\n\t * Creates an instance of a component registered in the factory under a specific name.\n\t *\n\t * When called, the {@link module:core/editor/editor~Editor#locale editor locale} is passed to\n\t * the previously {@link #add added} factory function, allowing localization of the\n\t * {@link module:ui/view~View view}.\n\t *\n\t * @param name The name of the component.\n\t * @returns The instantiated component view.\n\t */\n\tpublic create( name: string ): View {\n\t\tif ( !this.has( name ) ) {\n\t\t\t/**\n\t\t\t * The required component is not registered in the component factory. Please make sure\n\t\t\t * the provided name is correct and the component has been correctly\n\t\t\t * {@link module:ui/componentfactory~ComponentFactory#add added} to the factory.\n\t\t\t *\n\t\t\t * @error componentfactory-item-missing\n\t\t\t * @param name The name of the missing component.\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'componentfactory-item-missing',\n\t\t\t\tthis,\n\t\t\t\t{ name }\n\t\t\t);\n\t\t}\n\n\t\treturn this._components.get( getNormalized( name ) )!.callback( this.editor.locale );\n\t}\n\n\t/**\n\t * Checks if a component of a given name is registered in the factory.\n\t *\n\t * @param name The name of the component.\n\t */\n\tpublic has( name: string ): boolean {\n\t\treturn this._components.has( getNormalized( name ) );\n\t}\n}\n\n/**\n * Ensures that the component name used as the key in the internal map is in lower case.\n */\nfunction getNormalized( name: unknown ) {\n\treturn String( name ).toLowerCase();\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./balloonpanel.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/panel/balloon/balloonpanelview\n */\n\nimport View from '../../view';\nimport type ViewCollection from '../../viewcollection';\n\nimport {\n\tgetOptimalPosition,\n\tglobal,\n\tisRange,\n\ttoUnit,\n\ttype Locale,\n\ttype ObservableChangeEvent,\n\ttype PositionOptions,\n\ttype PositioningFunction,\n\ttype Rect\n} from '@ckeditor/ckeditor5-utils';\n\nimport { isElement } from 'lodash-es';\n\nimport '../../../theme/components/panel/balloonpanel.css';\n\nconst toPx = toUnit( 'px' );\nconst defaultLimiterElement = global.document.body;\n\n/**\n * The balloon panel view class.\n *\n * A floating container which can\n * {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView#pin pin} to any\n * {@link module:utils/dom/position~Options#target target} in the DOM and remain in that position\n * e.g. when the web page is scrolled.\n *\n * The balloon panel can be used to display contextual, non-blocking UI like forms, toolbars and\n * the like in its {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView#content} view\n * collection.\n *\n * There is a number of {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView.defaultPositions}\n * that the balloon can use, automatically switching from one to another when the viewport space becomes\n * scarce to keep the balloon visible to the user as long as it is possible. The balloon will also\n * accept any custom position set provided by the user compatible with the\n * {@link module:utils/dom/position~Options options}.\n *\n * ```ts\n * const panel = new BalloonPanelView( locale );\n * const childView = new ChildView();\n * const positions = BalloonPanelView.defaultPositions;\n *\n * panel.render();\n *\n * // Add a child view to the panel's content collection.\n * panel.content.add( childView );\n *\n * // Start pinning the panel to an element with the \"target\" id DOM.\n * // The balloon will remain pinned until unpin() is called.\n * panel.pin( {\n * \ttarget: document.querySelector( '#target' ),\n * \tpositions: [\n * \t\tpositions.northArrowSouth,\n * \t\tpositions.southArrowNorth\n * \t]\n * } );\n * ```\n */\nexport default class BalloonPanelView extends View {\n\t/**\n\t * A collection of the child views that creates the balloon panel contents.\n\t */\n\tpublic readonly content: ViewCollection;\n\n\t/**\n\t * The absolute top position of the balloon panel in pixels.\n\t *\n\t * @observable\n\t * @default 0\n\t */\n\tdeclare public top: number;\n\n\t/**\n\t * The absolute left position of the balloon panel in pixels.\n\t *\n\t * @observable\n\t * @default 0\n\t */\n\tdeclare public left: number;\n\n\t/**\n\t * The balloon panel's current position. The position name is reflected in the CSS class set\n\t * to the balloon, i.e. `.ck-balloon-panel_arrow_nw` for the \"arrow_nw\" position. The class\n\t * controls the minor aspects of the balloon's visual appearance like the placement\n\t * of an {@link #withArrow arrow}. To support a new position, an additional CSS must be created.\n\t *\n\t * Default position names correspond with\n\t * {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView.defaultPositions}.\n\t *\n\t * See the {@link #attachTo} and {@link #pin} methods to learn about custom balloon positions.\n\t *\n\t * @observable\n\t * @default 'arrow_nw'\n\t */\n\tdeclare public position: 'arrow_nw' | 'arrow_ne' | 'arrow_sw' | 'arrow_se';\n\n\t/**\n\t * Controls whether the balloon panel is visible or not.\n\t *\n\t * @observable\n\t * @default false\n\t */\n\tdeclare public isVisible: boolean;\n\n\t/**\n\t * Controls whether the balloon panel has an arrow. The presence of the arrow\n\t * is reflected in the `ck-balloon-panel_with-arrow` CSS class.\n\t *\n\t * @observable\n\t * @default true\n\t */\n\tdeclare public withArrow: boolean;\n\n\t/**\n\t * An additional CSS class added to the {@link #element}.\n\t *\n\t * @observable\n\t */\n\tdeclare public class: string | undefined;\n\n\t/**\n\t * A callback that starts pinning the panel when {@link #isVisible} gets\n\t * `true`. Used by {@link #pin}.\n\t *\n\t * @private\n\t */\n\tprivate _pinWhenIsVisibleCallback: ( () => void ) | null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.set( 'top', 0 );\n\t\tthis.set( 'left', 0 );\n\t\tthis.set( 'position', 'arrow_nw' );\n\t\tthis.set( 'isVisible', false );\n\t\tthis.set( 'withArrow', true );\n\t\tthis.set( 'class', undefined );\n\n\t\tthis._pinWhenIsVisibleCallback = null;\n\t\tthis.content = this.createCollection();\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-balloon-panel',\n\t\t\t\t\tbind.to( 'position', value => `ck-balloon-panel_${ value }` ),\n\t\t\t\t\tbind.if( 'isVisible', 'ck-balloon-panel_visible' ),\n\t\t\t\t\tbind.if( 'withArrow', 'ck-balloon-panel_with-arrow' ),\n\t\t\t\t\tbind.to( 'class' )\n\t\t\t\t],\n\n\t\t\t\tstyle: {\n\t\t\t\t\ttop: bind.to( 'top', toPx ),\n\t\t\t\t\tleft: bind.to( 'left', toPx )\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tchildren: this.content\n\t\t} );\n\t}\n\n\t/**\n\t * Shows the panel.\n\t *\n\t * See {@link #isVisible}.\n\t */\n\tpublic show(): void {\n\t\tthis.isVisible = true;\n\t}\n\n\t/**\n\t * Hides the panel.\n\t *\n\t * See {@link #isVisible}.\n\t */\n\tpublic hide(): void {\n\t\tthis.isVisible = false;\n\t}\n\n\t/**\n\t * Attaches the panel to a specified {@link module:utils/dom/position~Options#target} with a\n\t * smart positioning heuristics that chooses from available positions to make sure the panel\n\t * is visible to the user i.e. within the limits of the viewport.\n\t *\n\t * This method accepts configuration {@link module:utils/dom/position~Options options}\n\t * to set the `target`, optional `limiter` and `positions` the balloon should choose from.\n\t *\n\t * ```ts\n\t * const panel = new BalloonPanelView( locale );\n\t * const positions = BalloonPanelView.defaultPositions;\n\t *\n\t * panel.render();\n\t *\n\t * // Attach the panel to an element with the \"target\" id DOM.\n\t * panel.attachTo( {\n\t * \ttarget: document.querySelector( '#target' ),\n\t * \tpositions: [\n\t * \t\tpositions.northArrowSouth,\n\t * \t\tpositions.southArrowNorth\n\t * \t]\n\t * } );\n\t * ```\n\t *\n\t * **Note**: Attaching the panel will also automatically {@link #show} it.\n\t *\n\t * **Note**: An attached panel will not follow its target when the window is scrolled or resized.\n\t * See the {@link #pin} method for a more permanent positioning strategy.\n\t *\n\t * @param options Positioning options compatible with {@link module:utils/dom/position~getOptimalPosition}.\n\t * Default `positions` array is {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView.defaultPositions}.\n\t */\n\tpublic attachTo( options: Partial<PositionOptions> ): void {\n\t\tthis.show();\n\n\t\tconst defaultPositions = BalloonPanelView.defaultPositions;\n\t\tconst positionOptions = Object.assign( {}, {\n\t\t\telement: this.element,\n\t\t\tpositions: [\n\t\t\t\tdefaultPositions.southArrowNorth,\n\t\t\t\tdefaultPositions.southArrowNorthMiddleWest,\n\t\t\t\tdefaultPositions.southArrowNorthMiddleEast,\n\t\t\t\tdefaultPositions.southArrowNorthWest,\n\t\t\t\tdefaultPositions.southArrowNorthEast,\n\t\t\t\tdefaultPositions.northArrowSouth,\n\t\t\t\tdefaultPositions.northArrowSouthMiddleWest,\n\t\t\t\tdefaultPositions.northArrowSouthMiddleEast,\n\t\t\t\tdefaultPositions.northArrowSouthWest,\n\t\t\t\tdefaultPositions.northArrowSouthEast,\n\t\t\t\tdefaultPositions.viewportStickyNorth\n\t\t\t],\n\t\t\tlimiter: defaultLimiterElement,\n\t\t\tfitInViewport: true\n\t\t}, options ) as PositionOptions;\n\n\t\tconst optimalPosition = BalloonPanelView._getOptimalPosition( positionOptions );\n\n\t\t// Usually browsers make some problems with super accurate values like 104.345px\n\t\t// so it is better to use int values.\n\t\tconst left = parseInt( optimalPosition.left as any );\n\t\tconst top = parseInt( optimalPosition.top as any );\n\n\t\tconst position = optimalPosition.name as this[ 'position' ];\n\t\tconst config: { withArrow?: boolean } = optimalPosition.config || {};\n\t\tconst { withArrow = true } = config;\n\n\t\tthis.top = top;\n\t\tthis.left = left;\n\t\tthis.position = position;\n\t\tthis.withArrow = withArrow;\n\t}\n\n\t/**\n\t * Works the same way as the {@link #attachTo} method except that the position of the panel is\n\t * continuously updated when:\n\t *\n\t * * any ancestor of the {@link module:utils/dom/position~Options#target}\n\t * or {@link module:utils/dom/position~Options#limiter} is scrolled,\n\t * * the browser window gets resized or scrolled.\n\t *\n\t * Thanks to that, the panel always sticks to the {@link module:utils/dom/position~Options#target}\n\t * and is immune to the changing environment.\n\t *\n\t * ```ts\n\t * const panel = new BalloonPanelView( locale );\n\t * const positions = BalloonPanelView.defaultPositions;\n\t *\n\t * panel.render();\n\t *\n\t * // Pin the panel to an element with the \"target\" id DOM.\n\t * panel.pin( {\n\t * \ttarget: document.querySelector( '#target' ),\n\t * \tpositions: [\n\t * \t\tpositions.northArrowSouth,\n\t * \t\tpositions.southArrowNorth\n\t * \t]\n\t * } );\n\t * ```\n\t *\n\t * To leave the pinned state, use the {@link #unpin} method.\n\t *\n\t * **Note**: Pinning the panel will also automatically {@link #show} it.\n\t *\n\t * @param options Positioning options compatible with {@link module:utils/dom/position~getOptimalPosition}.\n\t * Default `positions` array is {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView.defaultPositions}.\n\t */\n\tpublic pin( options: Partial<PositionOptions> ): void {\n\t\tthis.unpin();\n\n\t\tthis._pinWhenIsVisibleCallback = () => {\n\t\t\tif ( this.isVisible ) {\n\t\t\t\tthis._startPinning( options );\n\t\t\t} else {\n\t\t\t\tthis._stopPinning();\n\t\t\t}\n\t\t};\n\n\t\tthis._startPinning( options );\n\n\t\t// Control the state of the listeners depending on whether the panel is visible\n\t\t// or not.\n\t\t// TODO: Use on() (https://github.com/ckeditor/ckeditor5-utils/issues/144).\n\t\tthis.listenTo<ObservableChangeEvent>( this, 'change:isVisible', this._pinWhenIsVisibleCallback );\n\t}\n\n\t/**\n\t * Stops pinning the panel, as set up by {@link #pin}.\n\t */\n\tpublic unpin(): void {\n\t\tif ( this._pinWhenIsVisibleCallback ) {\n\t\t\t// Deactivate listeners attached by pin().\n\t\t\tthis._stopPinning();\n\n\t\t\t// Deactivate the panel pin() control logic.\n\t\t\t// TODO: Use off() (https://github.com/ckeditor/ckeditor5-utils/issues/144).\n\t\t\tthis.stopListening( this, 'change:isVisible', this._pinWhenIsVisibleCallback );\n\n\t\t\tthis._pinWhenIsVisibleCallback = null;\n\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t/**\n\t * Starts managing the pinned state of the panel. See {@link #pin}.\n\t *\n\t * @param options Positioning options compatible with {@link module:utils/dom/position~getOptimalPosition}.\n\t */\n\tprivate _startPinning( options: Partial<PositionOptions> ) {\n\t\tthis.attachTo( options );\n\n\t\tconst targetElement = getDomElement( options.target );\n\t\tconst limiterElement = options.limiter ? getDomElement( options.limiter ) : defaultLimiterElement;\n\n\t\t// Then we need to listen on scroll event of eny element in the document.\n\t\tthis.listenTo( global.document, 'scroll', ( evt, domEvt ) => {\n\t\t\tconst scrollTarget = domEvt.target as Element;\n\n\t\t\t// The position needs to be updated if the positioning target is within the scrolled element.\n\t\t\tconst isWithinScrollTarget = targetElement && scrollTarget.contains( targetElement );\n\n\t\t\t// The position needs to be updated if the positioning limiter is within the scrolled element.\n\t\t\tconst isLimiterWithinScrollTarget = limiterElement && scrollTarget.contains( limiterElement );\n\n\t\t\t// The positioning target and/or limiter can be a Rect, object etc..\n\t\t\t// There's no way to optimize the listener then.\n\t\t\tif ( isWithinScrollTarget || isLimiterWithinScrollTarget || !targetElement || !limiterElement ) {\n\t\t\t\tthis.attachTo( options );\n\t\t\t}\n\t\t}, { useCapture: true } );\n\n\t\t// We need to listen on window resize event and update position.\n\t\tthis.listenTo( global.window, 'resize', () => {\n\t\t\tthis.attachTo( options );\n\t\t} );\n\t}\n\n\t/**\n\t * Stops managing the pinned state of the panel. See {@link #pin}.\n\t */\n\tprivate _stopPinning(): void {\n\t\tthis.stopListening( global.document, 'scroll' );\n\t\tthis.stopListening( global.window, 'resize' );\n\t}\n\n\t/**\n\t * A side offset of the arrow tip from the edge of the balloon. Controlled by CSS.\n\t *\n\t * ```\n\t *\t\t ┌───────────────────────┐\n\t *\t\t │ │\n\t *\t\t │ Balloon │\n\t *\t\t │ Content │\n\t *\t\t │ │\n\t *\t\t └──+ +───────────────┘\n\t *\t\t | \\ /\n\t *\t\t | \\/\n\t *\t\t>┼─────┼< ─────────────────────── side offset\n\t *\n\t * ```\n\t *\n\t * @default 25\n\t */\n\tpublic static arrowSideOffset = 25;\n\n\t/**\n\t * A height offset of the arrow from the edge of the balloon. Controlled by CSS.\n\t *\n\t * ```\n\t *\t\t ┌───────────────────────┐\n\t *\t\t │ │\n\t *\t\t │ Balloon │\n\t *\t\t │ Content │ ╱-- arrow height offset\n\t *\t\t │ │ V\n\t *\t\t └──+ +───────────────┘ --- ─┼───────\n\t *\t\t \\ / │\n\t *\t\t \\/ │\n\t *\t\t────────────────────────────────┼───────\n\t *\t\t ^\n\t *\n\t *\n\t *\t\t>┼────┼< arrow height offset\n\t *\t\t │ │\n\t *\t\t │ ┌────────────────────────┐\n\t *\t\t │ │ │\n\t *\t\t │ ╱ │\n\t *\t\t │ ╱ Balloon │\n\t *\t\t │ ╲ Content │\n\t *\t\t │ ╲ │\n\t *\t\t │ │ │\n\t *\t\t │ └────────────────────────┘\n\t * ```\n\t *\n\t * @default 10\n\t*/\n\tpublic static arrowHeightOffset = 10;\n\n\t/**\n\t * A vertical offset of the balloon panel from the edge of the viewport if sticky.\n\t * It helps in accessing toolbar buttons underneath the balloon panel.\n\t *\n\t * ```\n\t *\t\t ┌───────────────────────────────────────────────────┐\n\t *\t\t │ Target │\n\t *\t\t │ │\n\t *\t\t │ /── vertical offset │\n\t *\t\t┌─────────────────────────────V─────────────────────────┐\n\t *\t\t│ Toolbar ┌─────────────┐ │\n\t *\t\t├────────────────────│ Balloon │────────────────────┤\n\t *\t\t│ │ └─────────────┘ │ │\n\t *\t\t│ │ │ │\n\t *\t\t│ │ │ │\n\t *\t\t│ │ │ │\n\t *\t\t│ └───────────────────────────────────────────────────┘ │\n\t *\t\t│ Viewport │\n\t *\t\t└───────────────────────────────────────────────────────┘\n\t * ```\n\t *\n\t * @default 20\n\t */\n\tpublic static stickyVerticalOffset = 20;\n\n\t/**\n\t * Function used to calculate the optimal position for the balloon.\n\t */\n\tprivate static _getOptimalPosition = getOptimalPosition;\n\n\t/**\n\t * A default set of positioning functions used by the balloon panel view\n\t * when attaching using the {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView#attachTo} method.\n\t *\n\t * The available positioning functions are as follows:\n\t *\n\t * **North west**\n\t *\n\t * * `northWestArrowSouthWest`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t *\t\t V\n\t *\t\t [ Target ]\n\t * ```\n\t *\n\t * * `northWestArrowSouthMiddleWest`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t *\t\t V\n\t *\t\t [ Target ]\n\t * ```\n\t *\n\t * * `northWestArrowSouth`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t *\t\t V\n\t *\t\t [ Target ]\n\t * ```\n\t *\n\t * * `northWestArrowSouthMiddleEast`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t *\t\t V\n\t *\t\t [ Target ]\n\t * ```\n\t *\n\t * * `northWestArrowSouthEast`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t *\t\t V\n\t *\t\t [ Target ]\n\t * ```\n\t *\n\t * **North**\n\t *\n\t * * `northArrowSouthWest`\n\t *\n\t * ```\n\t *\t\t +-----------------+\n\t *\t\t | Balloon |\n\t *\t\t +-----------------+\n\t *\t\t V\n\t *\t\t[ Target ]\n\t * ```\n\t *\n\t * * `northArrowSouthMiddleWest`\n\t *\n\t * ```\n\t *\t\t +-----------------+\n\t *\t\t | Balloon |\n\t *\t\t +-----------------+\n\t *\t\t V\n\t *\t\t[ Target ]\n\t * ```\n\t * * `northArrowSouth`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t *\t\t V\n\t *\t\t [ Target ]\n\t * ```\n\t *\n\t * * `northArrowSouthMiddleEast`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t *\t\t V\n\t *\t\t [ Target ]\n\t * ```\n\t *\n\t * * `northArrowSouthEast`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t *\t\t V\n\t *\t\t [ Target ]\n\t * ```\n\t *\n\t * **North east**\n\t *\n\t * * `northEastArrowSouthWest`\n\t *\n\t * ```\n\t *\t\t +-----------------+\n\t *\t\t | Balloon |\n\t *\t\t +-----------------+\n\t *\t\t V\n\t *\t\t[ Target ]\n\t * ```\n\t *\n\t * * `northEastArrowSouthMiddleWest`\n\t *\n\t * ```\n\t *\t\t +-----------------+\n\t *\t\t | Balloon |\n\t *\t\t +-----------------+\n\t *\t\t V\n\t *\t\t[ Target ]\n\t * ```\n\t *\n\t * * `northEastArrowSouth`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t *\t\t V\n\t *\t\t[ Target ]\n\t * ```\n\t *\n\t * * `northEastArrowSouthMiddleEast`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t *\t\t V\n\t *\t\t [ Target ]\n\t * ```\n\t *\n\t * * `northEastArrowSouthEast`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t *\t\t V\n\t *\t\t [ Target ]\n\t * ```\n\t *\n\t * **South**\n\t *\n\t * * `southArrowNorthWest`\n\t *\n\t * ```\n\t *\t\t[ Target ]\n\t *\t\t ^\n\t *\t\t +-----------------+\n\t *\t\t | Balloon |\n\t *\t\t +-----------------+\n\t * ```\n\t *\n\t * * `southArrowNorthMiddleWest`\n\t *\n\t * ```\n\t *\t\t [ Target ]\n\t *\t\t ^\n\t *\t\t +-----------------+\n\t *\t\t | Balloon |\n\t *\t\t +-----------------+\n\t * ```\n\t *\n\t * * `southArrowNorth`\n\t *\n\t * ```\n\t *\t\t [ Target ]\n\t *\t\t ^\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t * ```\n\t *\n\t * * `southArrowNorthMiddleEast`\n\t *\n\t * ```\n\t *\t\t [ Target ]\n\t *\t\t ^\n\t *\t\t +-----------------+\n\t *\t\t | Balloon |\n\t *\t\t +-----------------+\n\t * ```\n\t *\n\t * * `southArrowNorthEast`\n\t *\n\t * ```\n\t *\t\t [ Target ]\n\t *\t\t ^\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t * ```\n\t *\n\t * **South west**\n\t *\n\t * * `southWestArrowNorthWest`\n\t *\n\t *\n\t * ```\n\t *\t\t [ Target ]\n\t *\t\t ^\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t * ```\n\t *\n\t * * `southWestArrowNorthMiddleWest`\n\t *\n\t * ```\n\t *\t\t [ Target ]\n\t *\t\t ^\n\t *\t\t +-----------------+\n\t *\t\t | Balloon |\n\t *\t\t +-----------------+\n\t * ```\n\t *\n\t * * `southWestArrowNorth`\n\t *\n\t * ```\n\t *\t\t [ Target ]\n\t *\t\t ^\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t * ```\n\t *\n\t * * `southWestArrowNorthMiddleEast`\n\t *\n\t * ```\n\t *\t\t [ Target ]\n\t *\t\t ^\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t * ```\n\t *\n\t * * `southWestArrowNorthEast`\n\t *\n\t * ```\n\t *\t\t [ Target ]\n\t *\t\t ^\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t * ```\n\t *\n\t * **South east**\n\t *\n\t * * `southEastArrowNorthWest`\n\t *\n\t * ```\n\t *\t\t[ Target ]\n\t *\t\t ^\n\t *\t\t +-----------------+\n\t *\t\t | Balloon |\n\t *\t\t +-----------------+\n\t * ```\n\t *\n\t * * `southEastArrowNorthMiddleWest`\n\t *\n\t * ```\n\t *\t\t [ Target ]\n\t *\t\t ^\n\t *\t\t +-----------------+\n\t *\t\t | Balloon |\n\t *\t\t +-----------------+\n\t * ```\n\t *\n\t * * `southEastArrowNorth`\n\t *\n\t * ```\n\t *\t\t[ Target ]\n\t *\t\t ^\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t * ```\n\t *\n\t * * `southEastArrowNorthMiddleEast`\n\t *\n\t * ```\n\t *\t\t [ Target ]\n\t *\t\t ^\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t * ```\n\t *\n\t * * `southEastArrowNorthEast`\n\t *\n\t * ```\n\t *\t\t [ Target ]\n\t *\t\t ^\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |\n\t *\t\t+-----------------+\n\t * ```\n\t *\n\t * **West**\n\t *\n\t * * `westArrowEast`\n\t *\n\t * ```\n\t *\t\t+-----------------+\n\t *\t\t| Balloon |>[ Target ]\n\t *\t\t+-----------------+\n\t * ```\n\t *\n\t * **East**\n\t *\n\t * * `eastArrowWest`\n\t *\n\t * ```\n\t *\t\t +-----------------+\n\t *\t\t[ Target ]<| Balloon |\n\t *\t\t +-----------------+\n\t * ```\n\t *\n\t * **Sticky**\n\t *\n\t * * `viewportStickyNorth`\n\t *\n\t * ```\n\t *\t\t +---------------------------+\n\t *\t\t | [ Target ] |\n\t *\t\t | |\n\t *\t\t+-----------------------------------+\n\t *\t\t| | +-----------------+ | |\n\t *\t\t| | | Balloon | | |\n\t *\t\t| | +-----------------+ | |\n\t *\t\t| | | |\n\t *\t\t| | | |\n\t *\t\t| | | |\n\t *\t\t| | | |\n\t *\t\t| +---------------------------+ |\n\t *\t\t| Viewport |\n\t *\t\t+-----------------------------------+\n\t * ```\n\t *\n\t * See {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView#attachTo}.\n\t *\n\t * Positioning functions must be compatible with {@link module:utils/dom/position~Position}.\n\t *\n\t * Default positioning functions with customized offsets can be generated using\n\t * {@link module:ui/panel/balloon/balloonpanelview~generatePositions}.\n\t *\n\t * The name that the position function returns will be reflected in the balloon panel's class that\n\t * controls the placement of the \"arrow\". See {@link #position} to learn more.\n\t */\n\tpublic static defaultPositions = generatePositions();\n}\n\n/**\n * Returns the DOM element for given object or null, if there is none,\n * e.g. when the passed object is a Rect instance or so.\n */\nfunction getDomElement( object: any ): HTMLElement | null {\n\tif ( isElement( object ) ) {\n\t\treturn object;\n\t}\n\n\tif ( isRange( object ) ) {\n\t\treturn object.commonAncestorContainer as any;\n\t}\n\n\tif ( typeof object == 'function' ) {\n\t\treturn getDomElement( object() );\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns available {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView}\n * {@link module:utils/dom/position~PositioningFunction positioning functions} adjusted by the specific offsets.\n *\n * @internal\n * @param options Options to generate positions. If not specified, this helper will simply return\n * {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView.defaultPositions}.\n * @param options.sideOffset A custom side offset (in pixels) of each position. If\n * not specified, {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView.arrowSideOffset the default value}\n * will be used.\n * @param options.heightOffset A custom height offset (in pixels) of each position. If\n * not specified, {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView.arrowHeightOffset the default value}\n * will be used.\n * @param options.stickyVerticalOffset A custom offset (in pixels) of the `viewportStickyNorth` positioning function.\n * If not specified, {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView.stickyVerticalOffset the default value}\n * will be used.\n * @param options.config Additional configuration of the balloon balloon panel view.\n * Currently only {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView#withArrow} is supported. Learn more\n * about {@link module:utils/dom/position~PositioningFunction positioning functions}.\n */\nexport function generatePositions( options: {\n\tsideOffset?: number;\n\theightOffset?: number;\n\tstickyVerticalOffset?: number;\n\tconfig?: object;\n} = {} ): Record<string, PositioningFunction> {\n\tconst {\n\t\tsideOffset = BalloonPanelView.arrowSideOffset,\n\t\theightOffset = BalloonPanelView.arrowHeightOffset,\n\t\tstickyVerticalOffset = BalloonPanelView.stickyVerticalOffset,\n\t\tconfig\n\t} = options;\n\n\treturn {\n\t\t// ------- North west\n\n\t\tnorthWestArrowSouthWest: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getNorthTop( targetRect, balloonRect ),\n\t\t\tleft: targetRect.left - sideOffset,\n\t\t\tname: 'arrow_sw',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tnorthWestArrowSouthMiddleWest: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getNorthTop( targetRect, balloonRect ),\n\t\t\tleft: targetRect.left - ( balloonRect.width * .25 ) - sideOffset,\n\t\t\tname: 'arrow_smw',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tnorthWestArrowSouth: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getNorthTop( targetRect, balloonRect ),\n\t\t\tleft: targetRect.left - balloonRect.width / 2,\n\t\t\tname: 'arrow_s',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tnorthWestArrowSouthMiddleEast: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getNorthTop( targetRect, balloonRect ),\n\t\t\tleft: targetRect.left - ( balloonRect.width * .75 ) + sideOffset,\n\t\t\tname: 'arrow_sme',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tnorthWestArrowSouthEast: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getNorthTop( targetRect, balloonRect ),\n\t\t\tleft: targetRect.left - balloonRect.width + sideOffset,\n\t\t\tname: 'arrow_se',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\t// ------- North\n\n\t\tnorthArrowSouthWest: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getNorthTop( targetRect, balloonRect ),\n\t\t\tleft: targetRect.left + targetRect.width / 2 - sideOffset,\n\t\t\tname: 'arrow_sw',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tnorthArrowSouthMiddleWest: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getNorthTop( targetRect, balloonRect ),\n\t\t\tleft: targetRect.left + targetRect.width / 2 - ( balloonRect.width * .25 ) - sideOffset,\n\t\t\tname: 'arrow_smw',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tnorthArrowSouth: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getNorthTop( targetRect, balloonRect ),\n\t\t\tleft: targetRect.left + targetRect.width / 2 - balloonRect.width / 2,\n\t\t\tname: 'arrow_s',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tnorthArrowSouthMiddleEast: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getNorthTop( targetRect, balloonRect ),\n\t\t\tleft: targetRect.left + targetRect.width / 2 - ( balloonRect.width * .75 ) + sideOffset,\n\t\t\tname: 'arrow_sme',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tnorthArrowSouthEast: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getNorthTop( targetRect, balloonRect ),\n\t\t\tleft: targetRect.left + targetRect.width / 2 - balloonRect.width + sideOffset,\n\t\t\tname: 'arrow_se',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\t// ------- North east\n\n\t\tnorthEastArrowSouthWest: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getNorthTop( targetRect, balloonRect ),\n\t\t\tleft: targetRect.right - sideOffset,\n\t\t\tname: 'arrow_sw',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tnorthEastArrowSouthMiddleWest: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getNorthTop( targetRect, balloonRect ),\n\t\t\tleft: targetRect.right - ( balloonRect.width * .25 ) - sideOffset,\n\t\t\tname: 'arrow_smw',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tnorthEastArrowSouth: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getNorthTop( targetRect, balloonRect ),\n\t\t\tleft: targetRect.right - balloonRect.width / 2,\n\t\t\tname: 'arrow_s',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tnorthEastArrowSouthMiddleEast: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getNorthTop( targetRect, balloonRect ),\n\t\t\tleft: targetRect.right - ( balloonRect.width * .75 ) + sideOffset,\n\t\t\tname: 'arrow_sme',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tnorthEastArrowSouthEast: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getNorthTop( targetRect, balloonRect ),\n\t\t\tleft: targetRect.right - balloonRect.width + sideOffset,\n\t\t\tname: 'arrow_se',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\t// ------- South west\n\n\t\tsouthWestArrowNorthWest: targetRect => ( {\n\t\t\ttop: getSouthTop( targetRect ),\n\t\t\tleft: targetRect.left - sideOffset,\n\t\t\tname: 'arrow_nw',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tsouthWestArrowNorthMiddleWest: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getSouthTop( targetRect ),\n\t\t\tleft: targetRect.left - ( balloonRect.width * .25 ) - sideOffset,\n\t\t\tname: 'arrow_nmw',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tsouthWestArrowNorth: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getSouthTop( targetRect ),\n\t\t\tleft: targetRect.left - balloonRect.width / 2,\n\t\t\tname: 'arrow_n',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tsouthWestArrowNorthMiddleEast: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getSouthTop( targetRect ),\n\t\t\tleft: targetRect.left - ( balloonRect.width * .75 ) + sideOffset,\n\t\t\tname: 'arrow_nme',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tsouthWestArrowNorthEast: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getSouthTop( targetRect ),\n\t\t\tleft: targetRect.left - balloonRect.width + sideOffset,\n\t\t\tname: 'arrow_ne',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\t// ------- South\n\n\t\tsouthArrowNorthWest: targetRect => ( {\n\t\t\ttop: getSouthTop( targetRect ),\n\t\t\tleft: targetRect.left + targetRect.width / 2 - sideOffset,\n\t\t\tname: 'arrow_nw',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tsouthArrowNorthMiddleWest: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getSouthTop( targetRect ),\n\t\t\tleft: targetRect.left + targetRect.width / 2 - ( balloonRect.width * 0.25 ) - sideOffset,\n\t\t\tname: 'arrow_nmw',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tsouthArrowNorth: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getSouthTop( targetRect ),\n\t\t\tleft: targetRect.left + targetRect.width / 2 - balloonRect.width / 2,\n\t\t\tname: 'arrow_n',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tsouthArrowNorthMiddleEast: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getSouthTop( targetRect ),\n\t\t\tleft: targetRect.left + targetRect.width / 2 - ( balloonRect.width * 0.75 ) + sideOffset,\n\t\t\tname: 'arrow_nme',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tsouthArrowNorthEast: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getSouthTop( targetRect ),\n\t\t\tleft: targetRect.left + targetRect.width / 2 - balloonRect.width + sideOffset,\n\t\t\tname: 'arrow_ne',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\t// ------- South east\n\n\t\tsouthEastArrowNorthWest: targetRect => ( {\n\t\t\ttop: getSouthTop( targetRect ),\n\t\t\tleft: targetRect.right - sideOffset,\n\t\t\tname: 'arrow_nw',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tsouthEastArrowNorthMiddleWest: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getSouthTop( targetRect ),\n\t\t\tleft: targetRect.right - ( balloonRect.width * .25 ) - sideOffset,\n\t\t\tname: 'arrow_nmw',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tsouthEastArrowNorth: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getSouthTop( targetRect ),\n\t\t\tleft: targetRect.right - balloonRect.width / 2,\n\t\t\tname: 'arrow_n',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tsouthEastArrowNorthMiddleEast: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getSouthTop( targetRect ),\n\t\t\tleft: targetRect.right - ( balloonRect.width * .75 ) + sideOffset,\n\t\t\tname: 'arrow_nme',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\tsouthEastArrowNorthEast: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: getSouthTop( targetRect ),\n\t\t\tleft: targetRect.right - balloonRect.width + sideOffset,\n\t\t\tname: 'arrow_ne',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\t// ------- West\n\n\t\twestArrowEast: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: targetRect.top + targetRect.height / 2 - balloonRect.height / 2,\n\t\t\tleft: targetRect.left - balloonRect.width - heightOffset,\n\t\t\tname: 'arrow_e',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\t// ------- East\n\n\t\teastArrowWest: ( targetRect, balloonRect ) => ( {\n\t\t\ttop: targetRect.top + targetRect.height / 2 - balloonRect.height / 2,\n\t\t\tleft: targetRect.right + heightOffset,\n\t\t\tname: 'arrow_w',\n\t\t\t...( config && { config } )\n\t\t} ),\n\n\t\t// ------- Sticky\n\n\t\tviewportStickyNorth: ( targetRect, balloonRect, viewportRect ) => {\n\t\t\tif ( !targetRect.getIntersection( viewportRect! ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttop: viewportRect!.top + stickyVerticalOffset,\n\t\t\t\tleft: targetRect.left + targetRect.width / 2 - balloonRect.width / 2,\n\t\t\t\tname: 'arrowless',\n\t\t\t\tconfig: {\n\t\t\t\t\twithArrow: false,\n\t\t\t\t\t...config\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t};\n\n\t/**\n\t * Returns the top coordinate for positions starting with `north*`.\n\t *\n\t * @param targetRect A rect of the target.\n\t * @param balloonRect A rect of the balloon.\n\t */\n\tfunction getNorthTop( targetRect: Rect, balloonRect: Rect ) {\n\t\treturn targetRect.top - balloonRect.height - heightOffset;\n\t}\n\n\t/**\n\t * Returns the top coordinate for positions starting with `south*`.\n\t *\n\t * @param targetRect A rect of the target.\n\t */\n\tfunction getSouthTop( targetRect: Rect ) {\n\t\treturn targetRect.bottom + heightOffset;\n\t}\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./tooltip.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/tooltipmanager\n */\n\nimport View from './view';\nimport BalloonPanelView, { generatePositions } from './panel/balloon/balloonpanelview';\nimport type { EditorUIUpdateEvent } from './editorui/editorui';\n\nimport {\n\tDomEmitterMixin,\n\tResizeObserver,\n\tfirst,\n\tglobal,\n\tisVisible,\n\ttype EventInfo,\n\ttype PositioningFunction\n} from '@ckeditor/ckeditor5-utils';\n\nimport type { Editor } from '@ckeditor/ckeditor5-core';\n\nimport { isElement, debounce, type DebouncedFunc } from 'lodash-es';\n\nimport '../theme/components/tooltip/tooltip.css';\n\nconst BALLOON_CLASS = 'ck-tooltip';\n\n/**\n * A tooltip manager class for the UI of the editor.\n *\n * **Note**: Most likely you do not have to use the `TooltipManager` API listed below in order to display tooltips. Popular\n * {@glink framework/architecture/ui-library UI components} support tooltips out-of-the-box via observable properties\n * (see {@link module:ui/button/buttonview~ButtonView#tooltip} and {@link module:ui/button/buttonview~ButtonView#tooltipPosition}).\n *\n * # Displaying tooltips\n *\n * To display a tooltip, set `data-cke-tooltip-text` attribute on any DOM element:\n *\n * ```ts\n * domElement.dataset.ckeTooltipText = 'My tooltip';\n * ```\n *\n * The tooltip will show up whenever the user moves the mouse over the element or the element gets focus in DOM.\n *\n * # Positioning tooltips\n *\n * To change the position of the tooltip, use the `data-cke-tooltip-position` attribute (`s`, `se`, `sw`, `n`, `e`, or `w`):\n *\n * ```ts\n * domElement.dataset.ckeTooltipText = 'Tooltip to the north';\n * domElement.dataset.ckeTooltipPosition = 'n';\n * ```\n *\n * # Disabling tooltips\n *\n * In order to disable the tooltip temporarily, use the `data-cke-tooltip-disabled` attribute:\n *\n * ```ts\n * domElement.dataset.ckeTooltipText = 'Disabled. For now.';\n * domElement.dataset.ckeTooltipDisabled = 'true';\n * ```\n *\n * # Styling tooltips\n *\n * By default, the tooltip has `.ck-tooltip` class and its text inner `.ck-tooltip__text`.\n *\n * If your tooltip requires custom styling, using `data-cke-tooltip-class` attribute will add additional class to the balloon\n * displaying the tooltip:\n *\n * ```ts\n * domElement.dataset.ckeTooltipText = 'Tooltip with a red text';\n * domElement.dataset.ckeTooltipClass = 'my-class';\n * ```\n *\n * ```css\n * .ck.ck-tooltip.my-class { color: red }\n * ```\n *\n * **Note**: This class is a singleton. All editor instances re-use the same instance loaded by\n * {@link module:ui/editorui/editorui~EditorUI} of the first editor.\n */\nexport default class TooltipManager extends DomEmitterMixin() {\n\t/**\n\t * The view rendering text of the tooltip.\n\t */\n\tpublic readonly tooltipTextView!: View & { text: string };\n\n\t/**\n\t * The instance of the balloon panel that renders and positions the tooltip.\n\t */\n\tpublic readonly balloonPanelView!: BalloonPanelView;\n\n\t/**\n\t * A set of default {@link module:utils/dom/position~PositioningFunction positioning functions} used by the `TooltipManager`\n\t * to pin tooltips in different positions.\n\t */\n\tpublic static defaultBalloonPositions = generatePositions( {\n\t\theightOffset: 5,\n\t\tsideOffset: 13\n\t} );\n\n\t/**\n\t * Stores the reference to the DOM element the tooltip is attached to. `null` when there's no tooltip\n\t * in the UI.\n\t */\n\tprivate _currentElementWithTooltip: HTMLElement | null = null;\n\n\t/**\n\t * Stores the current tooltip position. `null` when there's no tooltip in the UI.\n\t */\n\tprivate _currentTooltipPosition: TooltipPosition | null = null;\n\n\t/**\n\t * An instance of the resize observer that keeps track on target element visibility,\n\t * when it hides the tooltip should also disappear.\n\t *\n\t * {@link module:core/editor/editorconfig~EditorConfig#balloonToolbar configuration}.\n\t */\n\tprivate _resizeObserver: ResizeObserver | null = null;\n\n\t/**\n\t * A debounced version of {@link #_pinTooltip}. Tooltips show with a delay to avoid flashing and\n\t * to improve the UX.\n\t */\n\tprivate _pinTooltipDebounced!: DebouncedFunc<( targetDomElement: HTMLElement, data: TooltipData ) => void>;\n\n\tprivate readonly _watchdogExcluded!: true;\n\n\t/**\n\t * A set of editors the single tooltip manager instance must listen to.\n\t * This is mostly to handle `EditorUI#update` listeners from individual editors.\n\t */\n\tprivate static _editors = new Set<Editor>();\n\n\t/**\n\t * A reference to the `TooltipManager` instance. The class is a singleton and as such,\n\t * successive attempts at creating instances should return this instance.\n\t */\n\tprivate static _instance: TooltipManager | null = null;\n\n\t/**\n\t * Creates an instance of the tooltip manager.\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper();\n\n\t\tTooltipManager._editors.add( editor );\n\n\t\t// TooltipManager must be a singleton. Multiple instances would mean multiple tooltips attached\n\t\t// to the same DOM element with data-cke-tooltip-* attributes.\n\t\tif ( TooltipManager._instance ) {\n\t\t\treturn TooltipManager._instance;\n\t\t}\n\n\t\tTooltipManager._instance = this;\n\n\t\tthis.tooltipTextView = new View( editor.locale ) as any;\n\t\tthis.tooltipTextView.set( 'text', '' );\n\t\tthis.tooltipTextView.setTemplate( {\n\t\t\ttag: 'span',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-tooltip__text'\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttext: this.tooltipTextView.bindTemplate.to( 'text' )\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\n\t\tthis.balloonPanelView = new BalloonPanelView( editor.locale );\n\t\tthis.balloonPanelView.class = BALLOON_CLASS;\n\t\tthis.balloonPanelView.content.add( this.tooltipTextView );\n\n\t\tthis._pinTooltipDebounced = debounce( this._pinTooltip, 600 );\n\n\t\tthis.listenTo( global.document, 'mouseenter', this._onEnterOrFocus.bind( this ), { useCapture: true } );\n\t\tthis.listenTo( global.document, 'mouseleave', this._onLeaveOrBlur.bind( this ), { useCapture: true } );\n\n\t\tthis.listenTo( global.document, 'focus', this._onEnterOrFocus.bind( this ), { useCapture: true } );\n\t\tthis.listenTo( global.document, 'blur', this._onLeaveOrBlur.bind( this ), { useCapture: true } );\n\n\t\tthis.listenTo( global.document, 'scroll', this._onScroll.bind( this ), { useCapture: true } );\n\n\t\t// Because this class is a singleton, its only instance is shared across all editors and connects them through the reference.\n\t\t// This causes issues with the ContextWatchdog. When an error is thrown in one editor, the watchdog traverses the references\n\t\t// and (because of shared tooltip manager) figures that the error affects all editors and restarts them all.\n\t\t// This flag, excludes tooltip manager instance from the traversal and brings ContextWatchdog back to normal.\n\t\t// More in https://github.com/ckeditor/ckeditor5/issues/12292.\n\t\tthis._watchdogExcluded = true;\n\t}\n\n\t/**\n\t * Destroys the tooltip manager.\n\t *\n\t * **Note**: The manager singleton cannot be destroyed until all editors that use it are destroyed.\n\t *\n\t * @param editor The editor the manager was created for.\n\t */\n\tpublic destroy( editor: Editor ): void {\n\t\tconst editorBodyViewCollection = editor.ui.view && editor.ui.view.body;\n\n\t\tTooltipManager._editors.delete( editor );\n\t\tthis.stopListening( editor.ui );\n\n\t\t// Prevent the balloon panel from being destroyed in the EditorUI#destroy() cascade. It should be destroyed along\n\t\t// with the last editor only (https://github.com/ckeditor/ckeditor5/issues/12602).\n\t\tif ( editorBodyViewCollection && editorBodyViewCollection.has( this.balloonPanelView ) ) {\n\t\t\teditorBodyViewCollection.remove( this.balloonPanelView );\n\t\t}\n\n\t\tif ( !TooltipManager._editors.size ) {\n\t\t\tthis._unpinTooltip();\n\t\t\tthis.balloonPanelView.destroy();\n\t\t\tthis.stopListening();\n\n\t\t\tTooltipManager._instance = null;\n\t\t}\n\t}\n\n\t/**\n\t * Returns {@link #balloonPanelView} {@link module:utils/dom/position~PositioningFunction positioning functions} for a given position\n\t * name.\n\t *\n\t * @param position Name of the position (`s`, `se`, `sw`, `n`, `e`, or `w`).\n\t * @returns Positioning functions to be used by the {@link #balloonPanelView}.\n\t */\n\tpublic static getPositioningFunctions( position: TooltipPosition ): Array<PositioningFunction> {\n\t\tconst defaultPositions = TooltipManager.defaultBalloonPositions;\n\n\t\treturn {\n\t\t\t// South is most popular. We can use positioning heuristics to avoid clipping by the viewport with the sane fallback.\n\t\t\ts: [\n\t\t\t\tdefaultPositions.southArrowNorth,\n\t\t\t\tdefaultPositions.southArrowNorthEast,\n\t\t\t\tdefaultPositions.southArrowNorthWest\n\t\t\t],\n\t\t\tn: [ defaultPositions.northArrowSouth ],\n\t\t\te: [ defaultPositions.eastArrowWest ],\n\t\t\tw: [ defaultPositions.westArrowEast ],\n\t\t\tsw: [ defaultPositions.southArrowNorthEast ],\n\t\t\tse: [ defaultPositions.southArrowNorthWest ]\n\t\t}[ position ];\n\t}\n\n\t/**\n\t * Handles displaying tooltips on `mouseenter` and `focus` in DOM.\n\t *\n\t * @param evt An object containing information about the fired event.\n\t * @param domEvent The DOM event.\n\t */\n\tprivate _onEnterOrFocus( evt: unknown, { target }: any ) {\n\t\tconst elementWithTooltipAttribute = getDescendantWithTooltip( target );\n\n\t\t// Abort when there's no descendant needing tooltip.\n\t\tif ( !elementWithTooltipAttribute ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Abort to avoid flashing when, for instance:\n\t\t// * a tooltip is displayed for a focused element, then the same element gets mouseentered,\n\t\t// * a tooltip is displayed for an element via mouseenter, then the focus moves to the same element.\n\t\tif ( elementWithTooltipAttribute === this._currentElementWithTooltip ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._unpinTooltip();\n\n\t\tthis._pinTooltipDebounced( elementWithTooltipAttribute, getTooltipData( elementWithTooltipAttribute ) );\n\t}\n\n\t/**\n\t * Handles hiding tooltips on `mouseleave` and `blur` in DOM.\n\t *\n\t * @param evt An object containing information about the fired event.\n\t * @param domEvent The DOM event.\n\t */\n\tprivate _onLeaveOrBlur( evt: EventInfo, { target, relatedTarget }: any ) {\n\t\tif ( evt.name === 'mouseleave' ) {\n\t\t\t// Don't act when the event does not concern a DOM element (e.g. a mouseleave out of an entire document),\n\t\t\tif ( !isElement( target ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a tooltip is currently visible, don't act for a targets other than the one it is attached to.\n\t\t\t// For instance, a random mouseleave far away in the page should not unpin the tooltip that was pinned because\n\t\t\t// of a previous focus. Only leaving the same element should hide the tooltip.\n\t\t\tif ( this._currentElementWithTooltip && target !== this._currentElementWithTooltip ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst descendantWithTooltip = getDescendantWithTooltip( target );\n\t\t\tconst relatedDescendantWithTooltip = getDescendantWithTooltip( relatedTarget );\n\n\t\t\t// Unpin when the mouse was leaving element with a tooltip to a place which does not have or has a different tooltip.\n\t\t\t// Note that this should happen whether the tooltip is already visible or not, for instance, it could be invisible but queued\n\t\t\t// (debounced): it should get canceled.\n\t\t\tif ( descendantWithTooltip && descendantWithTooltip !== relatedDescendantWithTooltip ) {\n\t\t\t\tthis._unpinTooltip();\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// If a tooltip is currently visible, don't act for a targets other than the one it is attached to.\n\t\t\t// For instance, a random blur in the web page should not unpin the tooltip that was pinned because of a previous mouseenter.\n\t\t\tif ( this._currentElementWithTooltip && target !== this._currentElementWithTooltip ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Note that unpinning should happen whether the tooltip is already visible or not, for instance, it could be invisible but\n\t\t\t// queued (debounced): it should get canceled (e.g. quick focus then quick blur using the keyboard).\n\t\t\tthis._unpinTooltip();\n\t\t}\n\t}\n\n\t/**\n\t * Handles hiding tooltips on `scroll` in DOM.\n\t *\n\t * @param evt An object containing information about the fired event.\n\t * @param domEvent The DOM event.\n\t */\n\tprivate _onScroll( evt: unknown, { target }: any ) {\n\t\t// No tooltip, no reason to react on scroll.\n\t\tif ( !this._currentElementWithTooltip ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// When scrolling a container that has both the balloon and the current element (common ancestor), the balloon can remain\n\t\t// visible (e.g. scrolling ≤body>). Otherwise, to avoid glitches (clipping, lagging) better just hide the tooltip.\n\t\t// Also, don't do anything when scrolling an unrelated DOM element that has nothing to do with the current element and the balloon.\n\t\tif ( target.contains( this.balloonPanelView.element ) && target.contains( this._currentElementWithTooltip ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._unpinTooltip();\n\t}\n\n\t/**\n\t * Pins the tooltip to a specific DOM element.\n\t *\n\t * @param options.text Text of the tooltip to display.\n\t * @param options.position The position of the tooltip.\n\t * @param options.cssClass Additional CSS class of the balloon with the tooltip.\n\t */\n\tprivate _pinTooltip(\n\t\ttargetDomElement: HTMLElement,\n\t\t{ text, position, cssClass }: TooltipData\n\t): void {\n\t\t// Use the body collection of the first editor.\n\t\tconst bodyViewCollection = first( TooltipManager._editors.values() )!.ui.view.body;\n\n\t\tif ( !bodyViewCollection.has( this.balloonPanelView ) ) {\n\t\t\tbodyViewCollection.add( this.balloonPanelView );\n\t\t}\n\n\t\tthis.tooltipTextView.text = text;\n\n\t\tthis.balloonPanelView.pin( {\n\t\t\ttarget: targetDomElement,\n\t\t\tpositions: TooltipManager.getPositioningFunctions( position )\n\t\t} );\n\n\t\tthis._resizeObserver = new ResizeObserver( targetDomElement, () => {\n\t\t\t// The ResizeObserver will call its callback when the target element hides and the tooltip\n\t\t\t// should also disappear (https://github.com/ckeditor/ckeditor5/issues/12492).\n\t\t\tif ( !isVisible( targetDomElement ) ) {\n\t\t\t\tthis._unpinTooltip();\n\t\t\t}\n\t\t} );\n\n\t\tthis.balloonPanelView.class = [ BALLOON_CLASS, cssClass ]\n\t\t\t.filter( className => className )\n\t\t\t.join( ' ' );\n\n\t\t// Start responding to changes in editor UI or content layout. For instance, when collaborators change content\n\t\t// and a contextual toolbar attached to a content starts to move (and so should move the tooltip).\n\t\t// Note: Using low priority to let other listeners that position contextual toolbars etc. to react first.\n\t\tfor ( const editor of TooltipManager._editors ) {\n\t\t\tthis.listenTo<EditorUIUpdateEvent>( editor.ui, 'update', this._updateTooltipPosition.bind( this ), { priority: 'low' } );\n\t\t}\n\n\t\tthis._currentElementWithTooltip = targetDomElement;\n\t\tthis._currentTooltipPosition = position;\n\t}\n\n\t/**\n\t * Unpins the tooltip and cancels all queued pinning.\n\t */\n\tprivate _unpinTooltip() {\n\t\tthis._pinTooltipDebounced.cancel();\n\n\t\tthis.balloonPanelView.unpin();\n\n\t\tfor ( const editor of TooltipManager._editors ) {\n\t\t\tthis.stopListening( editor.ui, 'update' );\n\t\t}\n\n\t\tthis._currentElementWithTooltip = null;\n\t\tthis._currentTooltipPosition = null;\n\n\t\tif ( this._resizeObserver ) {\n\t\t\tthis._resizeObserver.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * Updates the position of the tooltip so it stays in sync with the element it is pinned to.\n\t *\n\t * Hides the tooltip when the element is no longer visible in DOM.\n\t */\n\tprivate _updateTooltipPosition() {\n\t\t// This could happen if the tooltip was attached somewhere in a contextual content toolbar and the toolbar\n\t\t// disappeared (e.g. removed an image).\n\t\tif ( !isVisible( this._currentElementWithTooltip ) ) {\n\t\t\tthis._unpinTooltip();\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.balloonPanelView.pin( {\n\t\t\ttarget: this._currentElementWithTooltip!,\n\t\t\tpositions: TooltipManager.getPositioningFunctions( this._currentTooltipPosition! )\n\t\t} );\n\t}\n}\n\nexport type TooltipPosition = 's' | 'n' | 'e' | 'w' | 'sw' | 'se';\n\nfunction getDescendantWithTooltip( element: HTMLElement ) {\n\tif ( !isElement( element ) ) {\n\t\treturn null;\n\t}\n\n\treturn element.closest( '[data-cke-tooltip-text]:not([data-cke-tooltip-disabled])' ) as HTMLElement;\n}\n\ninterface TooltipData {\n\ttext: string;\n\tposition: TooltipPosition;\n\tcssClass: string;\n}\n\nfunction getTooltipData( element: HTMLElement ): TooltipData {\n\treturn {\n\t\ttext: element.dataset.ckeTooltipText!,\n\t\tposition: ( element.dataset.ckeTooltipPosition || 's' ) as TooltipPosition,\n\t\tcssClass: element.dataset.ckeTooltipClass || ''\n\t};\n}\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nexport default throttle;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/editorui/poweredby\n */\n\nimport type { Editor, UiConfig } from '@ckeditor/ckeditor5-core';\nimport {\n\tRect,\n\tDomEmitterMixin,\n\tfindClosestScrollableAncestor,\n\tverifyLicense,\n\ttype PositionOptions,\n\ttype Locale\n} from '@ckeditor/ckeditor5-utils';\nimport BalloonPanelView from '../panel/balloon/balloonpanelview';\nimport IconView from '../icon/iconview';\nimport View from '../view';\nimport { throttle, type DebouncedFunc } from 'lodash-es';\n\nimport poweredByIcon from '../../theme/icons/project-logo.svg';\n\nconst ICON_WIDTH = 53;\nconst ICON_HEIGHT = 10;\n// ⚠ Note, whenever changing the threshold, make sure to update the docs/support/managing-ckeditor-logo.md docs\n// as this information is also mentioned there ⚠.\nconst NARROW_ROOT_HEIGHT_THRESHOLD = 50;\nconst NARROW_ROOT_WIDTH_THRESHOLD = 350;\nconst DEFAULT_LABEL = 'Powered by';\nconst OFF_THE_SCREEN_POSITION = {\n\ttop: -99999,\n\tleft: -99999,\n\tname: 'invalid',\n\tconfig: {\n\t\twithArrow: false\n\t}\n};\n\ntype PoweredByConfig = Required<UiConfig>[ 'poweredBy' ];\n\n/**\n * A helper that enables the \"powered by\" feature in the editor and renders a link to the project's\n * webpage next to the bottom of the editable element (editor root, source editing area, etc.) when the editor is focused.\n *\n * @private\n */\nexport default class PoweredBy extends DomEmitterMixin() {\n\t/**\n\t * Editor instance the helper was created for.\n\t */\n\tprivate readonly editor: Editor;\n\n\t/**\n\t * A reference to the balloon panel hosting and positioning the \"powered by\" link and logo.\n\t */\n\tprivate _balloonView: BalloonPanelView | null;\n\n\t/**\n\t * A throttled version of the {@link #_showBalloon} method meant for frequent use to avoid performance loss.\n\t */\n\tprivate _showBalloonThrottled: DebouncedFunc<() => void>;\n\n\t/**\n\t * A reference to the last editable element (root, source editing area, etc.) focused by the user.\n\t * Since the focus can move to other focusable elements in the UI, this reference allows positioning the balloon over the\n\t * right element whether the user is typing or using the UI.\n\t */\n\tprivate _lastFocusedEditableElement: HTMLElement | null;\n\n\t/**\n\t * Creates a \"powered by\" helper for a given editor. The feature is initialized on Editor#ready\n\t * event.\n\t *\n\t * @param editor\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper();\n\n\t\tthis.editor = editor;\n\t\tthis._balloonView = null;\n\t\tthis._lastFocusedEditableElement = null;\n\t\tthis._showBalloonThrottled = throttle( this._showBalloon.bind( this ), 50, { leading: true } );\n\n\t\teditor.on( 'ready', this._handleEditorReady.bind( this ) );\n\t}\n\n\t/**\n\t * Destroys the \"powered by\" helper along with its view.\n\t */\n\tpublic destroy(): void {\n\t\tconst balloon = this._balloonView;\n\n\t\tif ( balloon ) {\n\t\t\t// Balloon gets destroyed by the body collection.\n\t\t\t// The powered by view gets destroyed by the balloon.\n\t\t\tballoon.unpin();\n\t\t\tthis._balloonView = null;\n\t\t}\n\n\t\tthis._showBalloonThrottled.cancel();\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * Enables \"powered by\" label once the editor (ui) is ready.\n\t */\n\tprivate _handleEditorReady(): void {\n\t\tconst editor = this.editor;\n\t\tconst forceVisible = !!editor.config.get( 'ui.poweredBy.forceVisible' );\n\n\t\t/* istanbul ignore next -- @preserve */\n\t\tif ( !forceVisible && verifyLicense( editor.config.get( 'licenseKey' ) ) === 'VALID' ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// No view means no body collection to append the powered by balloon to.\n\t\tif ( !editor.ui.view ) {\n\t\t\treturn;\n\t\t}\n\n\t\teditor.ui.focusTracker.on( 'change:isFocused', ( evt, data, isFocused ) => {\n\t\t\tthis._updateLastFocusedEditableElement();\n\n\t\t\tif ( isFocused ) {\n\t\t\t\tthis._showBalloon();\n\t\t\t} else {\n\t\t\t\tthis._hideBalloon();\n\t\t\t}\n\t\t} );\n\n\t\teditor.ui.focusTracker.on( 'change:focusedElement', ( evt, data, focusedElement ) => {\n\t\t\tthis._updateLastFocusedEditableElement();\n\n\t\t\tif ( focusedElement ) {\n\t\t\t\tthis._showBalloon();\n\t\t\t}\n\t\t} );\n\n\t\teditor.ui.on( 'update', () => {\n\t\t\tthis._showBalloonThrottled();\n\t\t} );\n\t}\n\n\t/**\n\t * Creates an instance of the {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView balloon panel}\n\t * with the \"powered by\" view inside ready for positioning.\n\t */\n\tprivate _createBalloonView(): void {\n\t\tconst editor = this.editor;\n\t\tconst balloon = this._balloonView = new BalloonPanelView();\n\t\tconst poweredByConfig = getNormalizedConfig( editor );\n\t\tconst view = new PoweredByView( editor.locale, poweredByConfig.label );\n\n\t\tballoon.content.add( view );\n\t\tballoon.set( {\n\t\t\tclass: 'ck-powered-by-balloon'\n\t\t} );\n\n\t\teditor.ui.view.body.add( balloon );\n\t\teditor.ui.focusTracker.add( balloon.element! );\n\n\t\tthis._balloonView = balloon;\n\t}\n\n\t/**\n\t * Attempts to display the balloon with the \"powered by\" view.\n\t */\n\tprivate _showBalloon(): void {\n\t\tif ( !this._lastFocusedEditableElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst attachOptions = getBalloonAttachOptions( this.editor, this._lastFocusedEditableElement );\n\n\t\tif ( attachOptions ) {\n\t\t\tif ( !this._balloonView ) {\n\t\t\t\tthis._createBalloonView();\n\t\t\t}\n\n\t\t\tthis._balloonView!.pin( attachOptions );\n\t\t}\n\t}\n\n\t/**\n\t * Hides the \"powered by\" balloon if already visible.\n\t */\n\tprivate _hideBalloon(): void {\n\t\tif ( this._balloonView ) {\n\t\t\tthis._balloonView!.unpin();\n\t\t}\n\t}\n\n\t/**\n\t * Updates the {@link #_lastFocusedEditableElement} based on the state of the global focus tracker.\n\t */\n\tprivate _updateLastFocusedEditableElement(): void {\n\t\tconst editor = this.editor;\n\t\tconst isFocused = editor.ui.focusTracker.isFocused;\n\t\tconst focusedElement = editor.ui.focusTracker.focusedElement! as HTMLElement;\n\n\t\tif ( !isFocused || !focusedElement ) {\n\t\t\tthis._lastFocusedEditableElement = null;\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst editableEditorElements = Array.from( editor.ui.getEditableElementsNames() ).map( name => {\n\t\t\treturn editor.ui.getEditableElement( name );\n\t\t} );\n\n\t\tif ( editableEditorElements.includes( focusedElement ) ) {\n\t\t\tthis._lastFocusedEditableElement = focusedElement;\n\t\t} else {\n\t\t\t// If it's none of the editable element, then the focus is somewhere in the UI. Let's display powered by\n\t\t\t// over the first element then.\n\t\t\tthis._lastFocusedEditableElement = editableEditorElements[ 0 ]!;\n\t\t}\n\t}\n}\n\n/**\n * A view displaying a \"powered by\" label and project logo wrapped in a link.\n */\nclass PoweredByView extends View<HTMLDivElement> {\n\t/**\n\t * Created an instance of the \"powered by\" view.\n\t *\n\t * @param locale The localization services instance.\n\t * @param label The label text.\n\t */\n\tconstructor( locale: Locale, label: string | null ) {\n\t\tsuper( locale );\n\n\t\tconst iconView = new IconView();\n\t\tconst bind = this.bindTemplate;\n\n\t\ticonView.set( {\n\t\t\tcontent: poweredByIcon,\n\t\t\tisColorInherited: false\n\t\t} );\n\n\t\ticonView.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tstyle: {\n\t\t\t\t\twidth: ICON_WIDTH + 'px',\n\t\t\t\t\theight: ICON_HEIGHT + 'px'\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [ 'ck', 'ck-powered-by' ],\n\t\t\t\t'aria-hidden': true\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttag: 'a',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\thref: 'https://ckeditor.com/?utm_source=ckeditor&' +\n\t\t\t\t\t\t\t'utm_medium=referral&utm_campaign=701Dn000000hVgmIAE_powered_by_ckeditor_logo',\n\t\t\t\t\t\ttarget: '_blank',\n\t\t\t\t\t\ttabindex: '-1'\n\t\t\t\t\t},\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t...label ? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttag: 'span',\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\tclass: [ 'ck', 'ck-powered-by__label' ]\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tchildren: [ label ]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t] : [],\n\t\t\t\t\t\ticonView\n\t\t\t\t\t],\n\t\t\t\t\ton: {\n\t\t\t\t\t\tdragstart: bind.to( evt => evt.preventDefault() )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n}\n\nfunction getBalloonAttachOptions( editor: Editor, focusedEditableElement: HTMLElement ): Partial<PositionOptions> | null {\n\tconst poweredByConfig = getNormalizedConfig( editor )!;\n\tconst positioningFunction = poweredByConfig.side === 'right' ?\n\t\tgetLowerRightCornerPosition( focusedEditableElement, poweredByConfig ) :\n\t\tgetLowerLeftCornerPosition( focusedEditableElement, poweredByConfig );\n\n\treturn {\n\t\ttarget: focusedEditableElement,\n\t\tpositions: [ positioningFunction ]\n\t};\n}\n\nfunction getLowerRightCornerPosition( focusedEditableElement: HTMLElement, config: PoweredByConfig ) {\n\treturn getLowerCornerPosition( focusedEditableElement, config, ( rootRect, balloonRect ) => {\n\t\treturn rootRect.left + rootRect.width - balloonRect.width - config.horizontalOffset;\n\t} );\n}\n\nfunction getLowerLeftCornerPosition( focusedEditableElement: HTMLElement, config: PoweredByConfig ) {\n\treturn getLowerCornerPosition( focusedEditableElement, config, rootRect => rootRect.left + config.horizontalOffset );\n}\n\nfunction getLowerCornerPosition(\n\tfocusedEditableElement: HTMLElement,\n\tconfig: PoweredByConfig,\n\tgetBalloonLeft: ( editableElementRect: Rect, balloonRect: Rect ) => number\n) {\n\treturn ( editableElementRect: Rect, balloonRect: Rect ) => {\n\t\tconst visibleEditableElementRect = editableElementRect.getVisible();\n\n\t\t// Root cropped by ancestors.\n\t\tif ( !visibleEditableElementRect ) {\n\t\t\treturn OFF_THE_SCREEN_POSITION;\n\t\t}\n\n\t\tif ( editableElementRect.width < NARROW_ROOT_WIDTH_THRESHOLD || editableElementRect.height < NARROW_ROOT_HEIGHT_THRESHOLD ) {\n\t\t\treturn OFF_THE_SCREEN_POSITION;\n\t\t}\n\n\t\tlet balloonTop;\n\n\t\tif ( config.position === 'inside' ) {\n\t\t\tballoonTop = editableElementRect.bottom - balloonRect.height;\n\t\t}\n\t\telse {\n\t\t\tballoonTop = editableElementRect.bottom - balloonRect.height / 2;\n\t\t}\n\n\t\tballoonTop -= config.verticalOffset;\n\n\t\tconst balloonLeft = getBalloonLeft( editableElementRect, balloonRect );\n\n\t\tif ( config.position === 'inside' ) {\n\t\t\tconst newBalloonRect = balloonRect.clone().moveTo( balloonLeft, balloonTop );\n\n\t\t\t// The watermark cannot be positioned in this corner because the corner is not quite visible.\n\t\t\tif ( newBalloonRect.getIntersectionArea( visibleEditableElementRect ) < newBalloonRect.getArea() ) {\n\t\t\t\treturn OFF_THE_SCREEN_POSITION;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tconst firstScrollableEditableElementAncestor = findClosestScrollableAncestor( focusedEditableElement );\n\n\t\t\tif ( firstScrollableEditableElementAncestor ) {\n\t\t\t\tconst firstScrollableEditableElementAncestorRect = new Rect( firstScrollableEditableElementAncestor );\n\t\t\t\tconst notVisibleVertically = visibleEditableElementRect.bottom + balloonRect.height / 2 >\n\t\t\t\tfirstScrollableEditableElementAncestorRect.bottom;\n\t\t\t\tconst notVisibleHorizontally = config.side === 'left' ?\n\t\t\t\t\teditableElementRect.left < firstScrollableEditableElementAncestorRect.left :\n\t\t\t\t\teditableElementRect.right > firstScrollableEditableElementAncestorRect.right;\n\n\t\t\t\t// The watermark cannot be positioned in this corner because the corner is \"not visible enough\".\n\t\t\t\tif ( notVisibleVertically || notVisibleHorizontally ) {\n\t\t\t\t\treturn OFF_THE_SCREEN_POSITION;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\ttop: balloonTop,\n\t\t\tleft: balloonLeft,\n\t\t\tname: `position_${ config.position }-side_${ config.side }`,\n\t\t\tconfig: {\n\t\t\t\twithArrow: false\n\t\t\t}\n\t\t};\n\t};\n}\n\nfunction getNormalizedConfig( editor: Editor ): PoweredByConfig {\n\tconst userConfig = editor.config.get( 'ui.poweredBy' );\n\tconst position = userConfig && userConfig.position || 'border';\n\n\treturn {\n\t\tposition,\n\t\tlabel: DEFAULT_LABEL,\n\t\tverticalOffset: position === 'inside' ? 5 : 0,\n\t\thorizontalOffset: 5,\n\n\t\tside: editor.locale.contentLanguageDirection === 'ltr' ? 'right' : 'left',\n\t\t...userConfig\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/verifylicense\n */\n\nimport { releaseDate } from './version';\n\n/**\n * Possible states of the key after verification.\n */\nexport type VerifiedKeyStatus = 'VALID' | 'INVALID';\n\n/**\n * Checks whether the given string contains information that allows you to verify the license status.\n *\n * @param token The string to check.\n * @returns String that represents the state of given `token` parameter.\n */\nexport default function verifyLicense( token: string | undefined ): VerifiedKeyStatus {\n\t// This function implements naive and partial license key check mechanism,\n\t// used only to decide whether to show or hide the \"Powered by CKEditor\" logo.\n\t//\n\t// You can read the reasoning behind showing the logo to unlicensed (GPL) users\n\t// in this thread: https://github.com/ckeditor/ckeditor5/issues/14082.\n\t//\n\t// We firmly believe in the values behind creating open-source software, even when that\n\t// means keeping the license verification logic open for everyone to see.\n\t//\n\t// Please keep this code intact. Thank you for your understanding.\n\n\tfunction oldTokenCheck( token: string ): VerifiedKeyStatus {\n\t\tif ( token.length >= 40 && token.length <= 255 ) {\n\t\t\treturn 'VALID';\n\t\t} else {\n\t\t\treturn 'INVALID';\n\t\t}\n\t}\n\n\t// TODO: issue ci#3175\n\n\tif ( !token ) {\n\t\treturn 'INVALID';\n\t}\n\n\tlet decryptedData = '';\n\n\ttry {\n\t\tdecryptedData = atob( token );\n\t} catch ( e ) {\n\t\treturn 'INVALID';\n\t}\n\n\tconst splittedDecryptedData = decryptedData.split( '-' );\n\n\tconst firstElement = splittedDecryptedData[ 0 ];\n\tconst secondElement = splittedDecryptedData[ 1 ];\n\n\tif ( !secondElement ) {\n\t\treturn oldTokenCheck( token );\n\t}\n\n\ttry {\n\t\tatob( secondElement );\n\t} catch ( e ) {\n\t\ttry {\n\t\t\tatob( firstElement );\n\n\t\t\tif ( !atob( firstElement ).length ) {\n\t\t\t\treturn oldTokenCheck( token );\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\treturn oldTokenCheck( token );\n\t\t}\n\t}\n\n\tif ( firstElement.length < 40 || firstElement.length > 255 ) {\n\t\treturn 'INVALID';\n\t}\n\n\tlet decryptedSecondElement = '';\n\n\ttry {\n\t\tatob( firstElement );\n\t\tdecryptedSecondElement = atob( secondElement );\n\t} catch ( e ) {\n\t\treturn 'INVALID';\n\t}\n\n\tif ( decryptedSecondElement.length !== 8 ) {\n\t\treturn 'INVALID';\n\t}\n\n\tconst year = Number( decryptedSecondElement.substring( 0, 4 ) );\n\tconst monthIndex = Number( decryptedSecondElement.substring( 4, 6 ) ) - 1;\n\tconst day = Number( decryptedSecondElement.substring( 6, 8 ) );\n\n\tconst date = new Date( year, monthIndex, day );\n\n\tif ( date < releaseDate || isNaN( Number( date ) ) ) {\n\t\treturn 'INVALID';\n\t}\n\n\treturn 'VALID';\n}\n","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"53\\\" height=\\\"10\\\" viewBox=\\\"0 0 53 10\\\"><path fill=\\\"#1C2331\\\" d=\\\"M31.724 1.492a15.139 15.139 0 0 0 .045 1.16 2.434 2.434 0 0 0-.687-.34 3.68 3.68 0 0 0-1.103-.166 2.332 2.332 0 0 0-1.14.255 1.549 1.549 0 0 0-.686.87c-.15.41-.225.98-.225 1.712 0 .939.148 1.659.444 2.161.297.503.792.754 1.487.754.452.015.9-.094 1.294-.316.296-.174.557-.4.771-.669l.14.852h1.282V.007h-1.623v1.485ZM31 6.496a1.77 1.77 0 0 1-.494.061.964.964 0 0 1-.521-.127.758.758 0 0 1-.296-.466 3.984 3.984 0 0 1-.093-.992 4.208 4.208 0 0 1 .098-1.052.753.753 0 0 1 .307-.477 1.08 1.08 0 0 1 .55-.122c.233-.004.466.026.69.089l.483.144v2.553c-.11.076-.213.143-.307.2a1.73 1.73 0 0 1-.417.189ZM35.68 0l-.702.004c-.322.002-.482.168-.48.497l.004.581c.002.33.164.493.486.49l.702-.004c.322-.002.481-.167.48-.496L36.165.49c-.002-.33-.164-.493-.486-.491ZM36.145 2.313l-1.612.01.034 5.482 1.613-.01-.035-5.482ZM39.623.79 37.989.8 38 2.306l-.946.056.006 1.009.949-.006.024 2.983c.003.476.143.844.419 1.106.275.26.658.39 1.148.387.132 0 .293-.01.483-.03.19-.02.38-.046.57-.08.163-.028.324-.068.482-.119l-.183-1.095-.702.004a.664.664 0 0 1-.456-.123.553.553 0 0 1-.14-.422l-.016-2.621 1.513-.01-.006-1.064-1.514.01-.01-1.503ZM46.226 2.388c-.41-.184-.956-.274-1.636-.27-.673.004-1.215.101-1.627.29-.402.179-.72.505-.888.91-.18.419-.268.979-.264 1.68.004.688.1 1.24.285 1.655.172.404.495.724.9.894.414.18.957.268 1.63.264.68-.004 1.224-.099 1.632-.284.4-.176.714-.501.878-.905.176-.418.263-.971.258-1.658-.004-.702-.097-1.261-.28-1.677a1.696 1.696 0 0 0-.888-.9Zm-.613 3.607a.77.77 0 0 1-.337.501 1.649 1.649 0 0 1-1.317.009.776.776 0 0 1-.343-.497 4.066 4.066 0 0 1-.105-1.02 4.136 4.136 0 0 1 .092-1.03.786.786 0 0 1 .337-.507 1.59 1.59 0 0 1 1.316-.008.79.79 0 0 1 .344.502c.078.337.113.683.105 1.03.012.343-.019.685-.092 1.02ZM52.114 2.07a2.67 2.67 0 0 0-1.128.278c-.39.191-.752.437-1.072.73l-.157-.846-1.273.008.036 5.572 1.623-.01-.024-3.78c.35-.124.646-.22.887-.286.26-.075.53-.114.8-.118l.45-.003.144-1.546-.286.001ZM22.083 7.426l-1.576-2.532a2.137 2.137 0 0 0-.172-.253 1.95 1.95 0 0 0-.304-.29.138.138 0 0 1 .042-.04 1.7 1.7 0 0 0 .328-.374l1.75-2.71c.01-.015.025-.028.024-.048-.01-.01-.021-.007-.031-.007L20.49 1.17a.078.078 0 0 0-.075.045l-.868 1.384c-.23.366-.46.732-.688 1.099a.108.108 0 0 1-.112.06c-.098-.005-.196-.001-.294-.002-.018 0-.038.006-.055-.007.002-.02.002-.039.005-.058a4.6 4.6 0 0 0 .046-.701V1.203c0-.02-.009-.032-.03-.03h-.033L16.93 1.17c-.084 0-.073-.01-.073.076v6.491c-.001.018.006.028.025.027h1.494c.083 0 .072.007.072-.071v-2.19c0-.055-.003-.11-.004-.166a3.366 3.366 0 0 0-.05-.417h.06c.104 0 .209.002.313-.002a.082.082 0 0 1 .084.05c.535.913 1.07 1.824 1.607 2.736a.104.104 0 0 0 .103.062c.554-.003 1.107-.002 1.66-.002l.069-.003-.019-.032-.188-.304ZM27.112 6.555c-.005-.08-.004-.08-.082-.08h-2.414c-.053 0-.106-.003-.159-.011a.279.279 0 0 1-.246-.209.558.558 0 0 1-.022-.15c0-.382 0-.762-.002-1.143 0-.032.007-.049.042-.044h2.504c.029.003.037-.012.034-.038V3.814c0-.089.013-.078-.076-.078h-2.44c-.07 0-.062.003-.062-.06v-.837c0-.047.004-.093.013-.14a.283.283 0 0 1 .241-.246.717.717 0 0 1 .146-.011h2.484c.024.002.035-.009.036-.033l.003-.038.03-.496c.01-.183.024-.365.034-.548.005-.085.003-.087-.082-.094-.218-.018-.437-.038-.655-.05a17.845 17.845 0 0 0-.657-.026 72.994 72.994 0 0 0-1.756-.016 1.7 1.7 0 0 0-.471.064 1.286 1.286 0 0 0-.817.655c-.099.196-.149.413-.145.633v3.875c0 .072.003.144.011.216a1.27 1.27 0 0 0 .711 1.029c.228.113.48.167.734.158.757-.005 1.515.002 2.272-.042.274-.016.548-.034.82-.053.03-.002.043-.008.04-.041-.008-.104-.012-.208-.019-.312a69.964 69.964 0 0 1-.05-.768ZM16.14 7.415l-.127-1.075c-.004-.03-.014-.04-.044-.037a13.125 13.125 0 0 1-.998.073c-.336.01-.672.02-1.008.016-.116-.001-.233-.014-.347-.039a.746.746 0 0 1-.45-.262c-.075-.1-.132-.211-.167-.33a3.324 3.324 0 0 1-.126-.773 9.113 9.113 0 0 1-.015-.749c0-.285.022-.57.065-.852.023-.158.066-.312.127-.46a.728.728 0 0 1 .518-.443 1.64 1.64 0 0 1 .397-.048c.628-.001 1.255.003 1.882.05.022.001.033-.006.036-.026l.003-.031.06-.55c.019-.177.036-.355.057-.532.004-.034-.005-.046-.04-.056a5.595 5.595 0 0 0-1.213-.21 10.783 10.783 0 0 0-.708-.02c-.24-.003-.48.01-.719.041a3.477 3.477 0 0 0-.625.14 1.912 1.912 0 0 0-.807.497c-.185.2-.33.433-.424.688a4.311 4.311 0 0 0-.24 1.096c-.031.286-.045.572-.042.86-.006.43.024.86.091 1.286.04.25.104.497.193.734.098.279.26.53.473.734.214.205.473.358.756.446.344.11.702.17 1.063.177a8.505 8.505 0 0 0 1.578-.083 6.11 6.11 0 0 0 .766-.18c.03-.008.047-.023.037-.057a.157.157 0 0 1-.003-.025Z\\\"/><path fill=\\\"#AFE229\\\" d=\\\"M6.016 6.69a1.592 1.592 0 0 0-.614.21c-.23.132-.422.32-.56.546-.044.072-.287.539-.287.539l-.836 1.528.009.006c.038.025.08.046.123.063.127.046.26.07.395.073.505.023 1.011-.007 1.517-.003.29.009.58.002.869-.022a.886.886 0 0 0 .395-.116.962.962 0 0 0 .312-.286c.056-.083.114-.163.164-.249.24-.408.48-.816.718-1.226.075-.128.148-.257.222-.386l.112-.192a1.07 1.07 0 0 0 .153-.518l-1.304.023s-1.258-.005-1.388.01Z\\\"/><path fill=\\\"#771BFF\\\" d=\\\"m2.848 9.044.76-1.39.184-.352c-.124-.067-.245-.14-.367-.21-.346-.204-.706-.384-1.045-.6a.984.984 0 0 1-.244-.207c-.108-.134-.136-.294-.144-.46-.021-.409-.002-.818-.009-1.227-.003-.195 0-.39.003-.585.004-.322.153-.553.427-.713l.833-.488c.22-.13.44-.257.662-.385.05-.029.105-.052.158-.077.272-.128.519-.047.76.085l.044.028c.123.06.242.125.358.196.318.178.635.357.952.537.095.056.187.117.275.184.194.144.254.35.266.578.016.284.007.569.006.853-.001.28.004.558 0 .838.592-.003 1.259 0 1.259 0l.723-.013c-.003-.292-.007-.584-.007-.876 0-.524.015-1.048-.016-1.571-.024-.42-.135-.8-.492-1.067a5.02 5.02 0 0 0-.506-.339A400.52 400.52 0 0 0 5.94.787C5.722.664 5.513.524 5.282.423 5.255.406 5.228.388 5.2.373 4.758.126 4.305-.026 3.807.21c-.097.046-.197.087-.29.14A699.896 699.896 0 0 0 .783 1.948c-.501.294-.773.717-.778 1.31-.004.36-.009.718-.001 1.077.016.754-.017 1.508.024 2.261.016.304.07.6.269.848.127.15.279.28.448.382.622.4 1.283.734 1.92 1.11l.183.109Z\\\"/></svg>\\n\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/editorui/editorui\n */\n\n/* globals console */\n\nimport ComponentFactory from '../componentfactory';\nimport TooltipManager from '../tooltipmanager';\nimport PoweredBy from './poweredby';\n\nimport type EditorUIView from './editoruiview';\nimport type ToolbarView from '../toolbar/toolbarview';\nimport type { UIViewRenderEvent } from '../view';\n\nimport {\n\tObservableMixin,\n\tisVisible,\n\tFocusTracker,\n\ttype EventInfo\n} from '@ckeditor/ckeditor5-utils';\n\nimport type { Editor } from '@ckeditor/ckeditor5-core';\nimport type { ViewDocumentLayoutChangedEvent, ViewScrollToTheSelectionEvent } from '@ckeditor/ckeditor5-engine';\n\n/**\n * A class providing the minimal interface that is required to successfully bootstrap any editor UI.\n */\nexport default abstract class EditorUI extends ObservableMixin() {\n\t/**\n\t * The editor that the UI belongs to.\n\t */\n\tpublic readonly editor: Editor;\n\n\t/**\n\t * An instance of the {@link module:ui/componentfactory~ComponentFactory}, a registry used by plugins\n\t * to register factories of specific UI components.\n\t */\n\tpublic readonly componentFactory: ComponentFactory;\n\n\t/**\n\t * Stores the information about the editor UI focus and propagates it so various plugins and components\n\t * are unified as a focus group.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * Manages the tooltips displayed on mouseover and focus across the UI.\n\t */\n\tpublic readonly tooltipManager: TooltipManager;\n\n\t/**\n\t * A helper that enables the \"powered by\" feature in the editor and renders a link to the project's webpage.\n\t */\n\tpublic readonly poweredBy: PoweredBy;\n\n\t/**\n\t * Indicates the UI is ready. Set `true` after {@link #event:ready} event is fired.\n\t *\n\t * @readonly\n\t * @default false\n\t */\n\tpublic isReady: boolean = false;\n\n\tpublic abstract get view(): EditorUIView;\n\n\t/**\n\t * Stores viewport offsets from every direction.\n\t *\n\t * Viewport offset can be used to constrain balloons or other UI elements into an element smaller than the viewport.\n\t * This can be useful if there are any other absolutely positioned elements that may interfere with editor UI.\n\t *\n\t * Example `editor.ui.viewportOffset` returns:\n\t *\n\t * ```js\n\t * {\n\t * \ttop: 50,\n\t * \tright: 50,\n\t * \tbottom: 50,\n\t * \tleft: 50\n\t * }\n\t * ```\n\t *\n\t * This property can be overriden after editor already being initialized:\n\t *\n\t * ```js\n\t * editor.ui.viewportOffset = {\n\t * \ttop: 100,\n\t * \tright: 0,\n\t * \tbottom: 0,\n\t * \tleft: 0\n\t * };\n\t * ```\n\t *\n\t * @observable\n\t */\n\tpublic declare viewportOffset: {\n\t\tleft?: number;\n\t\tright?: number;\n\t\ttop?: number;\n\t\tbottom?: number;\n\t};\n\n\t/**\n\t * Stores all editable elements used by the editor instance.\n\t */\n\tprivate _editableElementsMap = new Map<string, HTMLElement>();\n\n\t/**\n\t * All available & focusable toolbars.\n\t */\n\tprivate _focusableToolbarDefinitions: Array<FocusableToolbarDefinition> = [];\n\n\t/**\n\t * Creates an instance of the editor UI class.\n\t *\n\t * @param editor The editor instance.\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper();\n\n\t\tconst editingView = editor.editing.view;\n\n\t\tthis.editor = editor;\n\t\tthis.componentFactory = new ComponentFactory( editor );\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.tooltipManager = new TooltipManager( editor );\n\t\tthis.poweredBy = new PoweredBy( editor );\n\n\t\tthis.set( 'viewportOffset', this._readViewportOffsetFromConfig() );\n\n\t\tthis.once<EditorUIReadyEvent>( 'ready', () => {\n\t\t\tthis.isReady = true;\n\t\t} );\n\n\t\t// Informs UI components that should be refreshed after layout change.\n\t\tthis.listenTo<ViewDocumentLayoutChangedEvent>( editingView.document, 'layoutChanged', this.update.bind( this ) );\n\t\tthis.listenTo<ViewScrollToTheSelectionEvent>( editingView, 'scrollToTheSelection', this._handleScrollToTheSelection.bind( this ) );\n\n\t\tthis._initFocusTracking();\n\t}\n\n\t/**\n\t * The main (outermost) DOM element of the editor UI.\n\t *\n\t * For example, in {@link module:editor-classic/classiceditor~ClassicEditor} it is a `<div>` which\n\t * wraps the editable element and the toolbar. In {@link module:editor-inline/inlineeditor~InlineEditor}\n\t * it is the editable element itself (as there is no other wrapper). However, in\n\t * {@link module:editor-decoupled/decouplededitor~DecoupledEditor} it is set to `null` because this editor does not\n\t * come with a single \"main\" HTML element (its editable element and toolbar are separate).\n\t *\n\t * This property can be understood as a shorthand for retrieving the element that a specific editor integration\n\t * considers to be its main DOM element.\n\t */\n\tpublic get element(): HTMLElement | null {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Fires the {@link module:ui/editorui/editorui~EditorUI#event:update `update`} event.\n\t *\n\t * This method should be called when the editor UI (e.g. positions of its balloons) needs to be updated due to\n\t * some environmental change which CKEditor 5 is not aware of (e.g. resize of a container in which it is used).\n\t */\n\tpublic update(): void {\n\t\tthis.fire<EditorUIUpdateEvent>( 'update' );\n\t}\n\n\t/**\n\t * Destroys the UI.\n\t */\n\tpublic destroy(): void {\n\t\tthis.stopListening();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.tooltipManager.destroy( this.editor );\n\t\tthis.poweredBy.destroy();\n\n\t\t// Clean–up the references to the CKEditor instance stored in the native editable DOM elements.\n\t\tfor ( const domElement of this._editableElementsMap.values() ) {\n\t\t\t( domElement as any ).ckeditorInstance = null;\n\t\t\tthis.editor.keystrokes.stopListening( domElement );\n\t\t}\n\n\t\tthis._editableElementsMap = new Map();\n\t\tthis._focusableToolbarDefinitions = [];\n\t}\n\n\t/**\n\t * Stores the native DOM editable element used by the editor under a unique name.\n\t *\n\t * Also, registers the element in the editor to maintain the accessibility of the UI. When the user is editing text in a focusable\n\t * editable area, they can use the <kbd>Alt</kbd> + <kbd>F10</kbd> keystroke to navigate over editor toolbars. See {@link #addToolbar}.\n\t *\n\t * @param rootName The unique name of the editable element.\n\t * @param domElement The native DOM editable element.\n\t */\n\tpublic setEditableElement( rootName: string, domElement: HTMLElement ): void {\n\t\tthis._editableElementsMap.set( rootName, domElement );\n\n\t\t// Put a reference to the CKEditor instance in the editable native DOM element.\n\t\t// It helps 3rd–party software (browser extensions, other libraries) access and recognize\n\t\t// CKEditor 5 instances (editing roots) and use their API (there is no global editor\n\t\t// instance registry).\n\t\tif ( !( domElement as any ).ckeditorInstance ) {\n\t\t\t( domElement as any ).ckeditorInstance = this.editor;\n\t\t}\n\n\t\t// Register the element, so it becomes available for Alt+F10 and Esc navigation.\n\t\tthis.focusTracker.add( domElement );\n\n\t\tconst setUpKeystrokeHandler = () => {\n\t\t\t// The editing view of the editor is already listening to keystrokes from DOM roots (see: KeyObserver).\n\t\t\t// Do not duplicate listeners.\n\t\t\tif ( this.editor.editing.view.getDomRoot( rootName ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.editor.keystrokes.listenTo( domElement );\n\t\t};\n\n\t\t// For editable elements set by features after EditorUI is ready (e.g. source editing).\n\t\tif ( this.isReady ) {\n\t\t\tsetUpKeystrokeHandler();\n\t\t}\n\t\t// For editable elements set while the editor is being created (e.g. DOM roots).\n\t\telse {\n\t\t\tthis.once<EditorUIReadyEvent>( 'ready', setUpKeystrokeHandler );\n\t\t}\n\t}\n\n\t/**\n\t * Removes the editable from the editor UI. Removes all handlers added by {@link #setEditableElement}.\n\t *\n\t * @param rootName The name of the editable element to remove.\n\t */\n\tpublic removeEditableElement( rootName: string ): void {\n\t\tconst domElement = this._editableElementsMap.get( rootName );\n\n\t\tif ( !domElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._editableElementsMap.delete( rootName );\n\n\t\tthis.editor.keystrokes.stopListening( domElement );\n\t\tthis.focusTracker.remove( domElement );\n\n\t\t( domElement as any ).ckeditorInstance = null;\n\t}\n\n\t/**\n\t * Returns the editable editor element with the given name or null if editable does not exist.\n\t *\n\t * @param rootName The editable name.\n\t */\n\tpublic getEditableElement( rootName: string = 'main' ): HTMLElement | undefined {\n\t\treturn this._editableElementsMap.get( rootName );\n\t}\n\n\t/**\n\t * Returns array of names of all editor editable elements.\n\t */\n\tpublic getEditableElementsNames(): IterableIterator<string> {\n\t\treturn this._editableElementsMap.keys();\n\t}\n\n\t/**\n\t * Adds a toolbar to the editor UI. Used primarily to maintain the accessibility of the UI.\n\t *\n\t * Focusable toolbars can be accessed (focused) by users by pressing the <kbd>Alt</kbd> + <kbd>F10</kbd> keystroke.\n\t * Successive keystroke presses navigate over available toolbars.\n\t *\n\t * @param toolbarView A instance of the toolbar to be registered.\n\t */\n\tpublic addToolbar( toolbarView: ToolbarView, options: FocusableToolbarOptions = {} ): void {\n\t\tif ( toolbarView.isRendered ) {\n\t\t\tthis.focusTracker.add( toolbarView.element! );\n\t\t\tthis.editor.keystrokes.listenTo( toolbarView.element! );\n\t\t} else {\n\t\t\ttoolbarView.once<UIViewRenderEvent>( 'render', () => {\n\t\t\t\tthis.focusTracker.add( toolbarView.element! );\n\t\t\t\tthis.editor.keystrokes.listenTo( toolbarView.element! );\n\t\t\t} );\n\t\t}\n\n\t\tthis._focusableToolbarDefinitions.push( { toolbarView, options } );\n\t}\n\n\t/**\n\t * Stores all editable elements used by the editor instance.\n\t *\n\t * @deprecated\n\t */\n\tprotected get _editableElements(): unknown {\n\t\t/**\n\t\t * The {@link module:ui/editorui/editorui~EditorUI#_editableElements `EditorUI#_editableElements`} property has been\n\t\t * deprecated and will be removed in the near future. Please use\n\t\t * {@link module:ui/editorui/editorui~EditorUI#setEditableElement `setEditableElement()`} and\n\t\t * {@link module:ui/editorui/editorui~EditorUI#getEditableElement `getEditableElement()`} methods instead.\n\t\t *\n\t\t * @error editor-ui-deprecated-editable-elements\n\t\t * @param editorUI Editor UI instance the deprecated property belongs to.\n\t\t */\n\t\tconsole.warn(\n\t\t\t'editor-ui-deprecated-editable-elements: ' +\n\t\t\t'The EditorUI#_editableElements property has been deprecated and will be removed in the near future.',\n\t\t\t{ editorUI: this } );\n\n\t\treturn this._editableElementsMap;\n\t}\n\n\t/**\n\t * Returns viewport offsets object:\n\t *\n\t * ```js\n\t * {\n\t * \ttop: Number,\n\t * \tright: Number,\n\t * \tbottom: Number,\n\t * \tleft: Number\n\t * }\n\t * ```\n\t *\n\t * Only top property is currently supported.\n\t */\n\tprivate _readViewportOffsetFromConfig() {\n\t\tconst editor = this.editor;\n\t\tconst viewportOffsetConfig = editor.config.get( 'ui.viewportOffset' );\n\n\t\tif ( viewportOffsetConfig ) {\n\t\t\treturn viewportOffsetConfig;\n\t\t}\n\n\t\t// Not present in EditorConfig type, because it's legacy. Hence the `as` expression.\n\t\tconst legacyOffsetConfig = editor.config.get( 'toolbar.viewportTopOffset' ) as number | undefined;\n\n\t\t// Fall back to deprecated toolbar config.\n\t\tif ( legacyOffsetConfig ) {\n\t\t\t/**\n\t\t\t * The {@link module:core/editor/editorconfig~EditorConfig#toolbar `EditorConfig#toolbar.viewportTopOffset`}\n\t\t\t * property has been deprecated and will be removed in the near future. Please use\n\t\t\t * {@link module:core/editor/editorconfig~EditorConfig#ui `EditorConfig#ui.viewportOffset`} instead.\n\t\t\t *\n\t\t\t * @error editor-ui-deprecated-viewport-offset-config\n\t\t\t */\n\t\t\tconsole.warn(\n\t\t\t\t'editor-ui-deprecated-viewport-offset-config: ' +\n\t\t\t\t'The `toolbar.vieportTopOffset` configuration option is deprecated. ' +\n\t\t\t\t'It will be removed from future CKEditor versions. Use `ui.viewportOffset.top` instead.'\n\t\t\t);\n\n\t\t\treturn { top: legacyOffsetConfig };\n\t\t}\n\n\t\t// More keys to come in the future.\n\t\treturn { top: 0 };\n\t}\n\n\t/**\n\t * Starts listening for <kbd>Alt</kbd> + <kbd>F10</kbd> and <kbd>Esc</kbd> keystrokes in the context of focusable\n\t * {@link #setEditableElement editable elements} and {@link #addToolbar toolbars}\n\t * to allow users navigate across the UI.\n\t */\n\tprivate _initFocusTracking(): void {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\tlet lastFocusedForeignElement: HTMLElement | null;\n\t\tlet candidateDefinitions: Array<FocusableToolbarDefinition>;\n\n\t\t// Focus the next focusable toolbar on <kbd>Alt</kbd> + <kbd>F10</kbd>.\n\t\teditor.keystrokes.set( 'Alt+F10', ( data, cancel ) => {\n\t\t\tconst focusedElement = this.focusTracker.focusedElement as HTMLElement;\n\n\t\t\t// Focus moved out of a DOM element that\n\t\t\t// * is not a toolbar,\n\t\t\t// * does not belong to the editing view (e.g. source editing).\n\t\t\tif (\n\t\t\t\tArray.from( this._editableElementsMap.values() ).includes( focusedElement ) &&\n\t\t\t\t!Array.from( editingView.domRoots.values() ).includes( focusedElement )\n\t\t\t) {\n\t\t\t\tlastFocusedForeignElement = focusedElement;\n\t\t\t}\n\n\t\t\tconst currentFocusedToolbarDefinition = this._getCurrentFocusedToolbarDefinition();\n\n\t\t\t// * When focusing a toolbar for the first time, set the array of definitions for successive presses of Alt+F10.\n\t\t\t// This ensures, the navigation works always the same and no pair of toolbars takes over\n\t\t\t// (e.g. image and table toolbars when a selected image is inside a cell).\n\t\t\t// * It could be that the focus went to the toolbar by clicking a toolbar item (e.g. a dropdown). In this case,\n\t\t\t// there were no candidates so they must be obtained (#12339).\n\t\t\tif ( !currentFocusedToolbarDefinition || !candidateDefinitions ) {\n\t\t\t\tcandidateDefinitions = this._getFocusableCandidateToolbarDefinitions();\n\t\t\t}\n\n\t\t\t// In a single Alt+F10 press, check all candidates but if none were focused, don't go any further.\n\t\t\t// This prevents an infinite loop.\n\t\t\tfor ( let i = 0; i < candidateDefinitions.length; i++ ) {\n\t\t\t\tconst candidateDefinition = candidateDefinitions.shift()!;\n\n\t\t\t\t// Put the first definition to the back of the array. This allows circular navigation over all toolbars\n\t\t\t\t// on successive presses of Alt+F10.\n\t\t\t\tcandidateDefinitions.push( candidateDefinition );\n\n\t\t\t\t// Don't focus the same toolbar again. If you did, this would move focus from the nth focused toolbar item back to the\n\t\t\t\t// first item as per ToolbarView#focus() if the user navigated inside the toolbar.\n\t\t\t\tif (\n\t\t\t\t\tcandidateDefinition !== currentFocusedToolbarDefinition &&\n\t\t\t\t\tthis._focusFocusableCandidateToolbar( candidateDefinition )\n\t\t\t\t) {\n\t\t\t\t\t// Clean up after a current visible toolbar when switching to the next one.\n\t\t\t\t\tif ( currentFocusedToolbarDefinition && currentFocusedToolbarDefinition.options.afterBlur ) {\n\t\t\t\t\t\tcurrentFocusedToolbarDefinition.options.afterBlur();\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcancel();\n\t\t} );\n\n\t\t// Blur the focused toolbar on <kbd>Esc</kbd> and bring the focus back to its origin.\n\t\teditor.keystrokes.set( 'Esc', ( data, cancel ) => {\n\t\t\tconst focusedToolbarDef = this._getCurrentFocusedToolbarDefinition();\n\n\t\t\tif ( !focusedToolbarDef ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Bring focus back to where it came from before focusing the toolbar:\n\t\t\t// 1. If it came from outside the engine view (e.g. source editing), move it there.\n\t\t\tif ( lastFocusedForeignElement ) {\n\t\t\t\tlastFocusedForeignElement.focus();\n\t\t\t\tlastFocusedForeignElement = null;\n\t\t\t}\n\t\t\t// 2. There are two possibilities left:\n\t\t\t// 2.1. It could be that the focus went from an editable element in the view (root or nested).\n\t\t\t// 2.2. It could be the focus went straight to the toolbar before even focusing the editing area.\n\t\t\t// In either case, just focus the view editing. The focus will land where it belongs.\n\t\t\telse {\n\t\t\t\teditor.editing.view.focus();\n\t\t\t}\n\n\t\t\t// Clean up after the toolbar if there is anything to do there.\n\t\t\tif ( focusedToolbarDef.options.afterBlur ) {\n\t\t\t\tfocusedToolbarDef.options.afterBlur();\n\t\t\t}\n\n\t\t\tcancel();\n\t\t} );\n\t}\n\n\t/**\n\t * Returns definitions of toolbars that could potentially be focused, sorted by their importance for the user.\n\t *\n\t * Focusable toolbars candidates are either:\n\t * * already visible,\n\t * * have `beforeFocus()` set in their {@link module:ui/editorui/editorui~FocusableToolbarDefinition definition} that suggests that\n\t * they might show up when called. Keep in mind that determining whether a toolbar will show up (and become focusable) is impossible\n\t * at this stage because it depends on its implementation, that in turn depends on the editing context (selection).\n\t *\n\t * **Note**: Contextual toolbars take precedence over regular toolbars.\n\t */\n\tprivate _getFocusableCandidateToolbarDefinitions(): Array<FocusableToolbarDefinition> {\n\t\tconst definitions: Array<FocusableToolbarDefinition> = [];\n\n\t\tfor ( const toolbarDef of this._focusableToolbarDefinitions ) {\n\t\t\tconst { toolbarView, options } = toolbarDef;\n\n\t\t\tif ( isVisible( toolbarView.element ) || options.beforeFocus ) {\n\t\t\t\tdefinitions.push( toolbarDef );\n\t\t\t}\n\t\t}\n\n\t\t// Contextual and already visible toolbars have higher priority. If both are true, the toolbar will always focus first.\n\t\t// For instance, a selected widget toolbar vs inline editor toolbar: both are visible but the widget toolbar is contextual.\n\t\tdefinitions.sort( ( defA, defB ) => getToolbarDefinitionWeight( defA ) - getToolbarDefinitionWeight( defB ) );\n\n\t\treturn definitions;\n\t}\n\n\t/**\n\t * Returns a definition of the toolbar that is currently visible and focused (one of its children has focus).\n\t *\n\t * `null` is returned when no toolbar is currently focused.\n\t */\n\tprivate _getCurrentFocusedToolbarDefinition(): FocusableToolbarDefinition | null {\n\t\tfor ( const definition of this._focusableToolbarDefinitions ) {\n\t\t\tif ( definition.toolbarView.element && definition.toolbarView.element.contains( this.focusTracker.focusedElement ) ) {\n\t\t\t\treturn definition;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Focuses a focusable toolbar candidate using its definition.\n\t *\n\t * @param candidateToolbarDefinition A definition of the toolbar to focus.\n\t * @returns `true` when the toolbar candidate was focused. `false` otherwise.\n\t */\n\tprivate _focusFocusableCandidateToolbar( candidateToolbarDefinition: FocusableToolbarDefinition ): boolean {\n\t\tconst { toolbarView, options: { beforeFocus } } = candidateToolbarDefinition;\n\n\t\tif ( beforeFocus ) {\n\t\t\tbeforeFocus();\n\t\t}\n\n\t\t// If it didn't show up after beforeFocus(), it's not focusable at all.\n\t\tif ( !isVisible( toolbarView.element ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttoolbarView.focus();\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Provides an integration between {@link #viewportOffset} and {@link module:utils/dom/scroll~scrollViewportToShowTarget}.\n\t * It allows the UI-agnostic engine method to consider user-configured viewport offsets specific for the integration.\n\t *\n\t * @param evt The `scrollToTheSelection` event info.\n\t * @param data The payload carried by the `scrollToTheSelection` event.\n\t */\n\tprivate _handleScrollToTheSelection(\n\t\tevt: EventInfo<'scrollToTheSelection'>,\n\t\tdata: ViewScrollToTheSelectionEvent[ 'args' ][ 0 ]\n\t): void {\n\t\tconst configuredViewportOffset = {\n\t\t\ttop: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\t...this.viewportOffset\n\t\t};\n\n\t\tdata.viewportOffset.top += configuredViewportOffset.top;\n\t\tdata.viewportOffset.bottom += configuredViewportOffset.bottom;\n\t\tdata.viewportOffset.left += configuredViewportOffset.left;\n\t\tdata.viewportOffset.right += configuredViewportOffset.right;\n\t}\n}\n\n/**\n * Fired when the editor UI is ready.\n *\n * Fired before {@link module:engine/controller/datacontroller~DataController#event:ready}.\n *\n * @eventName ~EditorUI#ready\n */\nexport type EditorUIReadyEvent = {\n\tname: 'ready';\n\targs: [];\n};\n\n/**\n * Fired whenever the UI (all related components) should be refreshed.\n *\n * **Note:**: The event is fired after each {@link module:engine/view/document~Document#event:layoutChanged}.\n * It can also be fired manually via the {@link module:ui/editorui/editorui~EditorUI#update} method.\n *\n * @eventName ~EditorUI#update\n */\nexport type EditorUIUpdateEvent = {\n\tname: 'update';\n\targs: [];\n};\n\n/**\n * A definition of a focusable toolbar. Used by {@link module:ui/editorui/editorui~EditorUI#addToolbar}.\n */\nexport interface FocusableToolbarDefinition {\n\n\t/**\n\t * An instance of a focusable toolbar view.\n\t */\n\ttoolbarView: ToolbarView;\n\n\t/**\n\t * Options of a focusable toolbar view:\n\t *\n\t * * `isContextual`: Marks the higher priority toolbar. For example when there are 2 visible toolbars,\n\t * it allows to distinguish which toolbar should be focused first after the `alt+f10` keystroke\n\t * * `beforeFocus`: A callback executed before the `ToolbarView` gains focus upon the `Alt+F10` keystroke.\n\t * * `afterBlur`: A callback executed after `ToolbarView` loses focus upon `Esc` keystroke but before\n\t * the focus goes back to the `origin`.\n\t */\n\toptions: FocusableToolbarOptions;\n}\n\nexport interface FocusableToolbarOptions {\n\n\t/**\n\t * Set `true` if the toolbar is attached to the content of the editor. Such toolbar takes\n\t * a precedence over other toolbars when a user pressed <kbd>Alt</kbd> + <kbd>F10</kbd>.\n\t */\n\tisContextual?: boolean;\n\n\t/**\n\t * Specify a callback executed before the toolbar instance DOM element gains focus\n\t * upon the <kbd>Alt</kbd> + <kbd>F10</kbd> keystroke.\n\t */\n\tbeforeFocus?: () => void;\n\n\t/**\n\t * Specify a callback executed after the toolbar instance DOM element loses focus upon\n\t * <kbd>Esc</kbd> keystroke but before the focus goes back to the {@link ~EditorUI#setEditableElement editable element}.\n\t */\n\tafterBlur?: () => void;\n}\n\n/**\n * Returns a number (weight) for a toolbar definition. Visible toolbars have a higher priority and so do\n * contextual toolbars (displayed in the context of a content, for instance, an image toolbar).\n *\n * A standard invisible toolbar is the heaviest. A visible contextual toolbar is the lightest.\n *\n * @param toolbarDef A toolbar definition to be weighted.\n */\nfunction getToolbarDefinitionWeight( toolbarDef: FocusableToolbarDefinition ): number {\n\tconst { toolbarView, options } = toolbarDef;\n\tlet weight = 10;\n\n\t// Prioritize already visible toolbars. They should get focused first.\n\tif ( isVisible( toolbarView.element ) ) {\n\t\tweight--;\n\t}\n\n\t// Prioritize contextual toolbars. They are displayed at the selection.\n\tif ( options.isContextual ) {\n\t\tweight--;\n\t}\n\n\treturn weight;\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./editorui.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/editorui/editoruiview\n */\n\nimport View from '../view';\nimport BodyCollection from './bodycollection';\nimport type EditableUIView from '../editableui/editableuiview';\n\nimport type { Locale, LocaleTranslate } from '@ckeditor/ckeditor5-utils';\n\nimport '../../theme/components/editorui/editorui.css';\n\n/**\n * The editor UI view class. Base class for the editor main views.\n */\nexport default abstract class EditorUIView extends View {\n\t/**\n\t * Collection of the child views, detached from the DOM\n\t * structure of the editor, like panels, icons etc.\n\t */\n\tpublic readonly body: BodyCollection;\n\n\tdeclare public locale: Locale;\n\tdeclare public t: LocaleTranslate;\n\n\tpublic abstract get editable(): EditableUIView;\n\n\t/**\n\t * Creates an instance of the editor UI view class.\n\t *\n\t * @param locale The locale instance.\n\t */\n\tconstructor( locale: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.body = new BodyCollection( locale );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis.body.attachToDom();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tthis.body.detachFromDom();\n\n\t\treturn super.destroy();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/editorui/boxed/boxededitoruiview\n */\n\nimport EditorUIView from '../editoruiview';\nimport LabelView from '../../label/labelview';\nimport type ViewCollection from '../../viewcollection';\n\nimport type { Locale } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The boxed editor UI view class. This class represents an editor interface\n * consisting of a toolbar and an editable area, enclosed within a box.\n */\nexport default abstract class BoxedEditorUIView extends EditorUIView {\n\t/**\n\t * Collection of the child views located in the top (`.ck-editor__top`)\n\t * area of the UI.\n\t */\n\tpublic readonly top: ViewCollection;\n\n\t/**\n\t * Collection of the child views located in the main (`.ck-editor__main`)\n\t * area of the UI.\n\t */\n\tpublic readonly main: ViewCollection;\n\n\t/**\n\t * Voice label of the UI.\n\t */\n\tprivate readonly _voiceLabelView: LabelView;\n\n\t/**\n\t * Creates an instance of the boxed editor UI view class.\n\t *\n\t * @param locale The locale instance..\n\t */\n\tconstructor( locale: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.top = this.createCollection();\n\t\tthis.main = this.createCollection();\n\t\tthis._voiceLabelView = this._createVoiceLabel();\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-reset',\n\t\t\t\t\t'ck-editor',\n\t\t\t\t\t'ck-rounded-corners'\n\t\t\t\t],\n\t\t\t\trole: 'application',\n\t\t\t\tdir: locale.uiLanguageDirection,\n\t\t\t\tlang: locale.uiLanguage,\n\t\t\t\t'aria-labelledby': this._voiceLabelView.id\n\t\t\t},\n\n\t\t\tchildren: [\n\t\t\t\tthis._voiceLabelView,\n\t\t\t\t{\n\t\t\t\t\ttag: 'div',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: [\n\t\t\t\t\t\t\t'ck',\n\t\t\t\t\t\t\t'ck-editor__top',\n\t\t\t\t\t\t\t'ck-reset_all'\n\t\t\t\t\t\t],\n\t\t\t\t\t\trole: 'presentation'\n\t\t\t\t\t},\n\t\t\t\t\tchildren: this.top\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttag: 'div',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: [\n\t\t\t\t\t\t\t'ck',\n\t\t\t\t\t\t\t'ck-editor__main'\n\t\t\t\t\t\t],\n\t\t\t\t\t\trole: 'presentation'\n\t\t\t\t\t},\n\t\t\t\t\tchildren: this.main\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * Creates a voice label view instance.\n\t */\n\tprivate _createVoiceLabel() {\n\t\tconst t = this.t;\n\t\tconst voiceLabel = new LabelView();\n\n\t\tvoiceLabel.text = t( 'Rich Text Editor' );\n\n\t\tvoiceLabel.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: 'ck-voice-label'\n\t\t\t}\n\t\t} );\n\n\t\treturn voiceLabel;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/editableui/editableuiview\n */\n\nimport View from '../view';\n\nimport type { View as EditingView } from '@ckeditor/ckeditor5-engine';\nimport type { Locale, ObservableChangeEvent } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The editable UI view class.\n */\nexport default class EditableUIView extends View {\n\t/**\n\t * The name of the editable UI view.\n\t */\n\tpublic name: string | null = null;\n\n\t/**\n\t * Controls whether the editable is focused, i.e. the user is typing in it.\n\t *\n\t * @observable\n\t */\n\tdeclare public isFocused: boolean;\n\n\t/**\n\t * The editing view instance the editable is related to. Editable uses the editing\n\t * view to dynamically modify its certain DOM attributes after {@link #render rendering}.\n\t *\n\t * **Note**: The DOM attributes are performed by the editing view and not UI\n\t * {@link module:ui/view~View#bindTemplate template bindings} because once rendered,\n\t * the editable DOM element must remain under the full control of the engine to work properly.\n\t */\n\tprotected _editingView: EditingView;\n\n\t/**\n\t * The element which is the main editable element (usually the one with `contentEditable=\"true\"`).\n\t */\n\tprivate _editableElement: HTMLElement | null | undefined;\n\n\t/**\n\t * Whether an external {@link #_editableElement} was passed into the constructor, which also means\n\t * the view will not render its {@link #template}.\n\t */\n\tprivate _hasExternalElement: boolean;\n\n\t/**\n\t * Creates an instance of EditableUIView class.\n\t *\n\t * @param locale The locale instance.\n\t * @param editingView The editing view instance the editable is related to.\n\t * @param editableElement The editable element. If not specified, this view\n\t * should create it. Otherwise, the existing element should be used.\n\t */\n\tconstructor(\n\t\tlocale: Locale,\n\t\teditingView: EditingView,\n\t\teditableElement?: HTMLElement\n\t) {\n\t\tsuper( locale );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-content',\n\t\t\t\t\t'ck-editor__editable',\n\t\t\t\t\t'ck-rounded-corners'\n\t\t\t\t],\n\t\t\t\tlang: locale.contentLanguage,\n\t\t\t\tdir: locale.contentLanguageDirection\n\t\t\t}\n\t\t} );\n\n\t\tthis.set( 'isFocused', false );\n\n\t\tthis._editableElement = editableElement;\n\t\tthis._hasExternalElement = !!this._editableElement;\n\t\tthis._editingView = editingView;\n\t}\n\n\t/**\n\t * Renders the view by either applying the {@link #template} to the existing\n\t * {@link module:ui/editableui/editableuiview~EditableUIView#_editableElement} or assigning {@link #element}\n\t * as {@link module:ui/editableui/editableuiview~EditableUIView#_editableElement}.\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tif ( this._hasExternalElement ) {\n\t\t\tthis.template!.apply( this.element = this._editableElement! );\n\t\t} else {\n\t\t\tthis._editableElement = this.element;\n\t\t}\n\n\t\tthis.on<ObservableChangeEvent>( 'change:isFocused', () => this._updateIsFocusedClasses() );\n\t\tthis._updateIsFocusedClasses();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tif ( this._hasExternalElement ) {\n\t\t\tthis.template!.revert( this._editableElement! );\n\t\t}\n\n\t\tsuper.destroy();\n\t}\n\n\t/**\n\t * Whether an external {@link #_editableElement} was passed into the constructor, which also means\n\t * the view will not render its {@link #template}.\n\t */\n\tpublic get hasExternalElement(): boolean {\n\t\treturn this._hasExternalElement;\n\t}\n\n\t/**\n\t * Updates the `ck-focused` and `ck-blurred` CSS classes on the {@link #element} according to\n\t * the {@link #isFocused} property value using the {@link #_editingView editing view} API.\n\t */\n\tprivate _updateIsFocusedClasses() {\n\t\tconst editingView = this._editingView;\n\n\t\tif ( editingView.isRenderingInProgress ) {\n\t\t\tupdateAfterRender( this );\n\t\t} else {\n\t\t\tupdate( this );\n\t\t}\n\n\t\tfunction update( view: EditableUIView ) {\n\t\t\teditingView.change( writer => {\n\t\t\t\tconst viewRoot = editingView.document.getRoot( view.name! )!;\n\n\t\t\t\twriter.addClass( view.isFocused ? 'ck-focused' : 'ck-blurred', viewRoot );\n\t\t\t\twriter.removeClass( view.isFocused ? 'ck-blurred' : 'ck-focused', viewRoot );\n\t\t\t} );\n\t\t}\n\n\t\t// In a case of a multi-root editor, a callback will be attached more than once (one callback for each root).\n\t\t// While executing one callback the `isRenderingInProgress` observable is changing what causes executing another\n\t\t// callback and render is called inside the already pending render.\n\t\t// We need to be sure that callback is executed only when the value has changed from `true` to `false`.\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/1676.\n\t\tfunction updateAfterRender( view: EditableUIView ) {\n\t\t\teditingView.once<ObservableChangeEvent<boolean>>( 'change:isRenderingInProgress', ( evt, name, value ) => {\n\t\t\t\tif ( !value ) {\n\t\t\t\t\tupdate( view );\n\t\t\t\t} else {\n\t\t\t\t\tupdateAfterRender( view );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/editableui/inline/inlineeditableuiview\n */\n\nimport EditableUIView from '../editableuiview';\n\nimport type { View } from '@ckeditor/ckeditor5-engine';\nimport type { Locale } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The inline editable UI class implementing an inline {@link module:ui/editableui/editableuiview~EditableUIView}.\n */\nexport default class InlineEditableUIView extends EditableUIView {\n\t/**\n\t * A function that gets called with the instance of this view as an argument and should return a string that\n\t * represents the label of the editable for assistive technologies.\n\t */\n\tprivate readonly _generateLabel: ( view: InlineEditableUIView ) => string;\n\n\t/**\n\t * Creates an instance of the InlineEditableUIView class.\n\t *\n\t * @param locale The locale instance.\n\t * @param editingView The editing view instance the editable is related to.\n\t * @param editableElement The editable element. If not specified, the\n\t * {@link module:ui/editableui/editableuiview~EditableUIView}\n\t * will create it. Otherwise, the existing element will be used.\n\t * @param options Additional configuration of the view.\n\t * @param options.label A function that gets called with the instance of this view as an argument\n\t * and should return a string that represents the label of the editable for assistive technologies. If not provided,\n\t * a default label generator is used.\n\t */\n\tconstructor(\n\t\tlocale: Locale,\n\t\teditingView: View,\n\t\teditableElement?: HTMLElement,\n\t\toptions: { label?: ( view: InlineEditableUIView ) => string } = {}\n\t) {\n\t\tsuper( locale, editingView, editableElement );\n\n\t\tconst t = locale.t;\n\n\t\tthis.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\trole: 'textbox',\n\t\t\t\tclass: 'ck-editor__editable_inline'\n\t\t\t}\n\t\t} );\n\n\t\tthis._generateLabel = options.label || ( () => t( 'Editor editing area: %0', this.name! ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tconst editingView = this._editingView;\n\n\t\teditingView.change( writer => {\n\t\t\tconst viewRoot = editingView.document.getRoot( this.name! );\n\n\t\t\twriter.setAttribute( 'aria-label', this._generateLabel( this ), viewRoot! );\n\t\t} );\n\t}\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./formheader.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/formheader/formheaderview\n */\n\nimport View from '../view';\nimport type ViewCollection from '../viewcollection';\n\nimport type { Locale } from '@ckeditor/ckeditor5-utils';\n\nimport '../../theme/components/formheader/formheader.css';\n\n/**\n * The class component representing a form header view. It should be used in more advanced forms to\n * describe the main purpose of the form.\n *\n * By default the component contains a bolded label view that has to be set. The label is usually a short (at most 3-word) string.\n * The component can also be extended by any other elements, like: icons, dropdowns, etc.\n *\n * It is used i.a.\n * by {@link module:table/tablecellproperties/ui/tablecellpropertiesview~TableCellPropertiesView}\n * and {@link module:special-characters/ui/specialcharactersnavigationview~SpecialCharactersNavigationView}.\n *\n * The latter is an example, where the component has been extended by {@link module:ui/dropdown/dropdownview~DropdownView} view.\n */\nexport default class FormHeaderView extends View {\n\t/**\n\t * A collection of header items.\n\t */\n\tpublic readonly children: ViewCollection;\n\n\t/**\n\t * The label of the header.\n\t *\n\t * @observable\n\t */\n\tpublic declare label: string;\n\n\t/**\n\t * An additional CSS class added to the {@link #element}.\n\t *\n\t * @observable\n\t */\n\tpublic declare class: string | null;\n\n\t/**\n\t * Creates an instance of the form header class.\n\t *\n\t * @param locale The locale instance.\n\t * @param options.label A label.\n\t * @param options.class An additional class.\n\t */\n\tconstructor(\n\t\tlocale: Locale | undefined,\n\t\toptions: { label?: string | null; class?: string | null } = {}\n\t) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.set( 'label', options.label || '' );\n\t\tthis.set( 'class', options.class || null );\n\n\t\tthis.children = this.createCollection();\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-form__header',\n\t\t\t\t\tbind.to( 'class' )\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: this.children\n\t\t} );\n\n\t\tconst label = new View( locale );\n\n\t\tlabel.setTemplate( {\n\t\t\ttag: 'h2',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-form__header__label'\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{ text: bind.to( 'label' ) }\n\t\t\t]\n\t\t} );\n\n\t\tthis.children.add( label );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/notification/notification\n */\n\n/* globals window */\n\nimport { ContextPlugin } from '@ckeditor/ckeditor5-core';\n\n/**\n * The Notification plugin.\n *\n * This plugin sends a few types of notifications: `success`, `info` and `warning`. The notifications need to be\n * handled and displayed by a plugin responsible for showing the UI of the notifications. Using this plugin for dispatching\n * notifications makes it possible to switch the notifications UI.\n *\n * Note that every unhandled and not stopped `warning` notification will be displayed as a system alert.\n * See {@link module:ui/notification/notification~Notification#showWarning}.\n */\nexport default class Notification extends ContextPlugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Notification' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\t// Each unhandled and not stopped `show:warning` event is displayed as a system alert.\n\t\tthis.on<NotificationShowWarningEvent>( 'show:warning', ( evt, data ) => {\n\t\t\twindow.alert( data.message ); // eslint-disable-line no-alert\n\t\t}, { priority: 'lowest' } );\n\t}\n\n\t/**\n\t * Shows a success notification.\n\t *\n\t * By default, it fires the {@link #event:show:success `show:success` event} with the given `data`. The event namespace can be extended\n\t * using the `data.namespace` option. For example:\n\t *\n\t * ```ts\n\t * showSuccess( 'Image is uploaded.', {\n\t * \tnamespace: 'upload:image'\n\t * } );\n\t * ```\n\t *\n\t * will fire the `show:success:upload:image` event.\n\t *\n\t * You can provide the title of the notification:\n\t *\n\t * ```ts\n\t * showSuccess( 'Image is uploaded.', {\n\t * \ttitle: 'Image upload success'\n\t * } );\n\t * ```\n\t *\n\t * @param message The content of the notification.\n\t * @param data Additional data.\n\t * @param data.namespace Additional event namespace.\n\t * @param data.title The title of the notification.\n\t */\n\tpublic showSuccess(\n\t\tmessage: string,\n\t\tdata: { namespace?: string; title?: string } = {}\n\t): void {\n\t\tthis._showNotification( {\n\t\t\tmessage,\n\t\t\ttype: 'success',\n\t\t\tnamespace: data.namespace,\n\t\t\ttitle: data.title\n\t\t} );\n\t}\n\n\t/**\n\t * Shows an information notification.\n\t *\n\t * By default, it fires the {@link #event:show:info `show:info` event} with the given `data`. The event namespace can be extended\n\t * using the `data.namespace` option. For example:\n\t *\n\t * ```ts\n\t * showInfo( 'Editor is offline.', {\n\t * \tnamespace: 'editor:status'\n\t * } );\n\t * ```\n\t *\n\t * will fire the `show:info:editor:status` event.\n\t *\n\t * You can provide the title of the notification:\n\t *\n\t * ```ts\n\t * showInfo( 'Editor is offline.', {\n\t * \ttitle: 'Network information'\n\t * } );\n\t * ```\n\t *\n\t * @param message The content of the notification.\n\t * @param data Additional data.\n\t * @param data.namespace Additional event namespace.\n\t * @param data.title The title of the notification.\n\t */\n\tpublic showInfo(\n\t\tmessage: string,\n\t\tdata: { namespace?: string; title?: string } = {}\n\t): void {\n\t\tthis._showNotification( {\n\t\t\tmessage,\n\t\t\ttype: 'info',\n\t\t\tnamespace: data.namespace,\n\t\t\ttitle: data.title\n\t\t} );\n\t}\n\n\t/**\n\t * Shows a warning notification.\n\t *\n\t * By default, it fires the {@link #event:show:warning `show:warning` event}\n\t * with the given `data`. The event namespace can be extended using the `data.namespace` option. For example:\n\t *\n\t * ```ts\n\t * showWarning( 'Image upload error.', {\n\t * \tnamespace: 'upload:image'\n\t * } );\n\t * ```\n\t *\n\t * will fire the `show:warning:upload:image` event.\n\t *\n\t * You can provide the title of the notification:\n\t *\n\t * ```ts\n\t * showWarning( 'Image upload error.', {\n\t * \ttitle: 'Upload failed'\n\t * } );\n\t * ```\n\t *\n\t * Note that each unhandled and not stopped `warning` notification will be displayed as a system alert.\n\t * The plugin responsible for displaying warnings should `stop()` the event to prevent displaying it as an alert:\n\t *\n\t * ```ts\n\t * notifications.on( 'show:warning', ( evt, data ) => {\n\t * \t// Do something with the data.\n\t *\n\t * \t// Stop this event to prevent displaying it as an alert.\n\t * \tevt.stop();\n\t * } );\n\t * ```\n\t *\n\t * You can attach many listeners to the same event and `stop()` this event in a listener with a low priority:\n\t *\n\t * ```ts\n\t * notifications.on( 'show:warning', ( evt, data ) => {\n\t * \t// Show the warning in the UI, but do not stop it.\n\t * } );\n\t *\n\t * notifications.on( 'show:warning', ( evt, data ) => {\n\t * \t// Log the warning to some error tracker.\n\t *\n\t * \t// Stop this event to prevent displaying it as an alert.\n\t * \tevt.stop();\n\t * }, { priority: 'low' } );\n\t * ```\n\t *\n\t * @param message The content of the notification.\n\t * @param data Additional data.\n\t * @param data.namespace Additional event namespace.\n\t * @param data.title The title of the notification.\n\t */\n\tpublic showWarning(\n\t\tmessage: string,\n\t\tdata: { namespace?: string; title?: string } = {}\n\t): void {\n\t\tthis._showNotification( {\n\t\t\tmessage,\n\t\t\ttype: 'warning',\n\t\t\tnamespace: data.namespace,\n\t\t\ttitle: data.title\n\t\t} );\n\t}\n\n\t/**\n\t * Fires the `show` event with the specified type, namespace and message.\n\t *\n\t * @param data The message data.\n\t * @param data.message The content of the notification.\n\t * @param data.type The type of the message.\n\t * @param data.namespace Additional event namespace.\n\t * @param data.title The title of the notification.\n\t */\n\tprivate _showNotification( data: {\n\t\tmessage: string;\n\t\ttype: NotificationEventType;\n\t\tnamespace?: string;\n\t\ttitle?: string;\n\t} ): void {\n\t\tconst event = data.namespace ?\n\t\t\t`show:${ data.type }:${ data.namespace }` as const :\n\t\t\t`show:${ data.type }` as const;\n\n\t\tthis.fire<NotificationShowTypeEvent<typeof data.type>>( event, {\n\t\t\tmessage: data.message,\n\t\t\ttype: data.type,\n\t\t\ttitle: data.title || ''\n\t\t} );\n\t}\n}\n\nexport type NotificationEventType = 'success' | 'info' | 'warning';\n\n/**\n * Fired when one of the `showSuccess()`, `showInfo()`, `showWarning()` methods is called.\n *\n * @eventName ~Notification#show\n * @param data The notification data.\n */\nexport type NotificationShowEvent = {\n\tname: 'show';\n\targs: [ data: NotificationShowEventData ];\n};\n\n/**\n * Fired when the `showSuccess()` method is called.\n *\n * @eventName ~Notification#show:success\n * @param data The notification data.\n */\nexport type NotificationShowSuccessEvent = NotificationShowTypeEvent<'success'>;\n\n/**\n * Fired when the `showInfo()` method is called.\n *\n * @eventName ~Notification#show:info\n * @param data The notification data.\n */\nexport type NotificationShowInfoEvent = NotificationShowTypeEvent<'info'>;\n\n/**\n * Fired when the `showWarning()` method is called.\n *\n * When this event is not handled or stopped by `event.stop()`, the `data.message` of this event will\n * be automatically displayed as a system alert.\n *\n * @eventName ~Notification#show:warning\n * @param data The notification data.\n */\nexport type NotificationShowWarningEvent = NotificationShowTypeEvent<'warning'>;\n\nexport type NotificationShowTypeEvent<NotificationType extends NotificationEventType> = {\n\tname: `show:${ NotificationType }` | `show:${ NotificationType }:${ string }`;\n\targs: [ data: NotificationShowEventData<NotificationType> ];\n};\n\nexport type NotificationShowEventData<NotificationType extends NotificationEventType = NotificationEventType> = {\n\n\t/**\n\t * The content of the notification.\n\t */\n\tmessage: string;\n\n\t/**\n\t * The title of the notification.\n\t */\n\ttitle: string;\n\n\t/**\n\t * The type of the notification.\n\t */\n\ttype: NotificationType;\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/model\n */\n\nimport { ObservableMixin } from '@ckeditor/ckeditor5-utils';\nimport { extend } from 'lodash-es';\n\n/**\n * The base MVC model class.\n */\nexport default class Model extends ObservableMixin() {\n\t[ x: string ]: unknown;\n\n\t/**\n\t * Creates a new Model instance.\n\t *\n\t * @param attributes The model state attributes to be defined during the instance creation.\n\t * @param properties The (out of state) properties to be appended to the instance during creation.\n\t */\n\tconstructor( attributes?: Record<string, unknown>, properties?: Record<string, unknown> ) {\n\t\tsuper();\n\n\t\t// Extend this instance with the additional (out of state) properties.\n\t\tif ( properties ) {\n\t\t\textend( this, properties );\n\t\t}\n\n\t\t// Initialize the attributes.\n\t\tif ( attributes ) {\n\t\t\tthis.set( attributes );\n\t\t}\n\t}\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./balloonrotator.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./fakepanel.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/panel/balloon/contextualballoon\n */\n\nimport BalloonPanelView from './balloonpanelview';\nimport View from '../../view';\nimport ButtonView from '../../button/buttonview';\nimport type { ButtonExecuteEvent } from '../../button/button';\nimport type ViewCollection from '../../viewcollection';\n\nimport { Plugin, type Editor } from '@ckeditor/ckeditor5-core';\nimport {\n\tCKEditorError,\n\tFocusTracker,\n\tRect,\n\ttoUnit,\n\ttype Locale,\n\ttype ObservableChangeEvent,\n\ttype PositionOptions\n} from '@ckeditor/ckeditor5-utils';\n\nimport prevIcon from '../../../theme/icons/previous-arrow.svg';\nimport nextIcon from '../../../theme/icons/next-arrow.svg';\n\nimport '../../../theme/components/panel/balloonrotator.css';\nimport '../../../theme/components/panel/fakepanel.css';\n\nconst toPx = toUnit( 'px' );\n\n/**\n * Provides the common contextual balloon for the editor.\n *\n * The role of this plugin is to unify the contextual balloons logic, simplify views management and help\n * avoid the unnecessary complexity of handling multiple {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView}\n * instances in the editor.\n *\n * This plugin allows for creating single or multiple panel stacks.\n *\n * Each stack may have multiple views, with the one on the top being visible. When the visible view is removed from the stack,\n * the previous view becomes visible.\n *\n * It might be useful to implement nested navigation in a balloon. For instance, a toolbar view may contain a link button.\n * When you click it, a link view (which lets you set the URL) is created and put on top of the toolbar view, so the link panel\n * is displayed. When you finish editing the link and close (remove) the link view, the toolbar view is visible again.\n *\n * However, there are cases when there are multiple independent balloons to be displayed, for instance, if the selection\n * is inside two inline comments at the same time. For such cases, you can create two independent panel stacks.\n * The contextual balloon plugin will create a navigation bar to let the users switch between these panel stacks using the \"Next\"\n * and \"Previous\" buttons.\n *\n * If there are no views in the current stack, the balloon panel will try to switch to the next stack. If there are no\n * panels in any stack, the balloon panel will be hidden.\n *\n * **Note**: To force the balloon panel to show only one view, even if there are other stacks, use the `singleViewMode=true` option\n * when {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon#add adding} a view to a panel.\n *\n * From the implementation point of view, the contextual ballon plugin is reusing a single\n * {@link module:ui/panel/balloon/balloonpanelview~BalloonPanelView} instance to display multiple contextual balloon\n * panels in the editor. It also creates a special {@link module:ui/panel/balloon/contextualballoon~RotatorView rotator view},\n * used to manage multiple panel stacks. Rotator view is a child of the balloon panel view and the parent of the specific\n * view you want to display. If there is more than one panel stack to be displayed, the rotator view will add a\n * navigation bar. If there is only one stack, the rotator view is transparent (it does not add any UI elements).\n */\nexport default class ContextualBalloon extends Plugin {\n\t/**\n\t * The {@link module:utils/dom/position~Options#limiter position limiter}\n\t * for the {@link #view balloon}, used when no `limiter` has been passed into {@link #add}\n\t * or {@link #updatePosition}.\n\t *\n\t * By default, a function that obtains the farthest DOM\n\t * {@link module:engine/view/rooteditableelement~RootEditableElement}\n\t * of the {@link module:engine/view/document~Document#selection}.\n\t */\n\tpublic positionLimiter: PositionOptions[ 'limiter' ];\n\n\tpublic visibleStack?: string;\n\n\t/**\n\t * The currently visible view or `null` when there are no views in any stack.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public visibleView: View | null;\n\n\t/**\n\t * A total number of all stacks in the balloon.\n\t *\n\t * @private\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public _numberOfStacks: number;\n\n\t/**\n\t * A flag that controls the single view mode.\n\t *\n\t * @private\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public _singleViewMode: boolean;\n\n\t/**\n\t * The map of views and their stacks.\n\t */\n\tprivate _viewToStack = new Map<View, Stack>();\n\n\t/**\n\t * The map of IDs and stacks.\n\t */\n\tprivate _idToStack = new Map<string, Stack>();\n\n\t/**\n\t * The common balloon panel view.\n\t */\n\tprivate _view: BalloonPanelView | null = null;\n\n\t/**\n\t * Rotator view embedded in the contextual balloon.\n\t * Displays the currently visible view in the balloon and provides navigation for switching stacks.\n\t */\n\tprivate _rotatorView: RotatorView | null = null;\n\n\t/**\n\t * Displays fake panels under the balloon panel view when multiple stacks are added to the balloon.\n\t */\n\tprivate _fakePanelsView: FakePanelsView | null = null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ContextualBalloon' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis.positionLimiter = () => {\n\t\t\tconst view = this.editor.editing.view;\n\t\t\tconst viewDocument = view.document;\n\t\t\tconst editableElement = viewDocument.selection.editableElement;\n\n\t\t\tif ( editableElement ) {\n\t\t\t\treturn view.domConverter.mapViewToDom( editableElement.root ) as HTMLElement;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t};\n\n\t\tthis.set( 'visibleView', null );\n\t\tthis.set( '_numberOfStacks', 0 );\n\t\tthis.set( '_singleViewMode', false );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tif ( this._view ) {\n\t\t\tthis._view.destroy();\n\t\t}\n\n\t\tif ( this._rotatorView ) {\n\t\t\tthis._rotatorView.destroy();\n\t\t}\n\n\t\tif ( this._fakePanelsView ) {\n\t\t\tthis._fakePanelsView.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * The common balloon panel view.\n\t */\n\tpublic get view(): BalloonPanelView {\n\t\tif ( !this._view ) {\n\t\t\tthis._createPanelView();\n\t\t}\n\n\t\treturn this._view!;\n\t}\n\n\t/**\n\t * Returns `true` when the given view is in one of the stacks. Otherwise returns `false`.\n\t */\n\tpublic hasView( view: View ): boolean {\n\t\treturn Array.from( this._viewToStack.keys() ).includes( view );\n\t}\n\n\t/**\n\t * Adds a new view to the stack and makes it visible if the current stack is visible\n\t * or it is the first view in the balloon.\n\t *\n\t * @param data The configuration of the view.\n\t * @param data.stackId The ID of the stack that the view is added to. Defaults to `'main'`.\n\t * @param data.view The content of the balloon.\n\t * @param data.position Positioning options.\n\t * @param data.balloonClassName An additional CSS class added to the {@link #view balloon} when visible.\n\t * @param data.withArrow Whether the {@link #view balloon} should be rendered with an arrow. Defaults to `true`.\n\t * @param data.singleViewMode Whether the view should be the only visible view even if other stacks were added. Defaults to `false`.\n\t */\n\tpublic add( data: ViewConfiguration ): void {\n\t\tif ( !this._view ) {\n\t\t\tthis._createPanelView();\n\t\t}\n\n\t\tif ( this.hasView( data.view ) ) {\n\t\t\t/**\n\t\t\t * Trying to add configuration of the same view more than once.\n\t\t\t *\n\t\t\t * @error contextualballoon-add-view-exist\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'contextualballoon-add-view-exist',\n\t\t\t\t[ this, data ]\n\t\t\t);\n\t\t}\n\n\t\tconst stackId = data.stackId || 'main';\n\n\t\t// If new stack is added, creates it and show view from this stack.\n\t\tif ( !this._idToStack.has( stackId ) ) {\n\t\t\tthis._idToStack.set( stackId, new Map( [ [ data.view, data ] ] ) );\n\t\t\tthis._viewToStack.set( data.view, this._idToStack.get( stackId )! );\n\t\t\tthis._numberOfStacks = this._idToStack.size;\n\n\t\t\tif ( !this._visibleStack || data.singleViewMode ) {\n\t\t\t\tthis.showStack( stackId );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst stack = this._idToStack.get( stackId )!;\n\n\t\tif ( data.singleViewMode ) {\n\t\t\tthis.showStack( stackId );\n\t\t}\n\n\t\t// Add new view to the stack.\n\t\tstack.set( data.view, data );\n\t\tthis._viewToStack.set( data.view, stack );\n\n\t\t// And display it if is added to the currently visible stack.\n\t\tif ( stack === this._visibleStack ) {\n\t\t\tthis._showView( data );\n\t\t}\n\t}\n\n\t/**\n\t * Removes the given view from the stack. If the removed view was visible,\n\t * the view preceding it in the stack will become visible instead.\n\t * When there is no view in the stack, the next stack will be displayed.\n\t * When there are no more stacks, the balloon will hide.\n\t *\n\t * @param view A view to be removed from the balloon.\n\t */\n\tpublic remove( view: View ): void {\n\t\tif ( !this.hasView( view ) ) {\n\t\t\t/**\n\t\t\t * Trying to remove the configuration of the view not defined in the stack.\n\t\t\t *\n\t\t\t * @error contextualballoon-remove-view-not-exist\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'contextualballoon-remove-view-not-exist',\n\t\t\t\t[ this, view ]\n\t\t\t);\n\t\t}\n\n\t\tconst stack = this._viewToStack.get( view )!;\n\n\t\tif ( this._singleViewMode && this.visibleView === view ) {\n\t\t\tthis._singleViewMode = false;\n\t\t}\n\n\t\t// When visible view will be removed we need to show a preceding view or next stack\n\t\t// if a view is the only view in the stack.\n\t\tif ( this.visibleView === view ) {\n\t\t\tif ( stack.size === 1 ) {\n\t\t\t\tif ( this._idToStack.size > 1 ) {\n\t\t\t\t\tthis._showNextStack();\n\t\t\t\t} else {\n\t\t\t\t\tthis.view.hide();\n\t\t\t\t\tthis.visibleView = null;\n\t\t\t\t\tthis._rotatorView!.hideView();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._showView( Array.from( stack.values() )[ stack.size - 2 ] );\n\t\t\t}\n\t\t}\n\n\t\tif ( stack.size === 1 ) {\n\t\t\tthis._idToStack.delete( this._getStackId( stack ) );\n\t\t\tthis._numberOfStacks = this._idToStack.size;\n\t\t} else {\n\t\t\tstack.delete( view );\n\t\t}\n\n\t\tthis._viewToStack.delete( view );\n\t}\n\n\t/**\n\t * Updates the position of the balloon using the position data of the first visible view in the stack.\n\t * When new position data is given, the position data of the currently visible view will be updated.\n\t *\n\t * @param position Position options.\n\t */\n\tpublic updatePosition( position?: Partial<PositionOptions> ): void {\n\t\tif ( position ) {\n\t\t\tthis._visibleStack.get( this.visibleView! )!.position = position;\n\t\t}\n\n\t\tthis.view.pin( this._getBalloonPosition()! );\n\t\tthis._fakePanelsView!.updatePosition();\n\t}\n\n\t/**\n\t * Shows the last view from the stack of a given ID.\n\t */\n\tpublic showStack( id: string ): void {\n\t\tthis.visibleStack = id;\n\t\tconst stack = this._idToStack.get( id );\n\n\t\tif ( !stack ) {\n\t\t\t/**\n\t\t\t * Trying to show a stack that does not exist.\n\t\t\t *\n\t\t\t * @error contextualballoon-showstack-stack-not-exist\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'contextualballoon-showstack-stack-not-exist',\n\t\t\t\tthis\n\t\t\t);\n\t\t}\n\n\t\tif ( this._visibleStack === stack ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._showView( Array.from( stack.values() ).pop()! );\n\t}\n\n\t/**\n\t * Initializes view instances.\n\t */\n\tprivate _createPanelView(): void {\n\t\tthis._view = new BalloonPanelView( this.editor.locale );\n\n\t\tthis.editor.ui.view.body.add( this._view );\n\t\tthis.editor.ui.focusTracker.add( this._view.element! );\n\n\t\tthis._rotatorView = this._createRotatorView();\n\t\tthis._fakePanelsView = this._createFakePanelsView();\n\t}\n\n\t/**\n\t * Returns the stack of the currently visible view.\n\t */\n\tprivate get _visibleStack() {\n\t\treturn this._viewToStack.get( this.visibleView! )!;\n\t}\n\n\t/**\n\t * Returns the ID of the given stack.\n\t */\n\tprivate _getStackId( stack: Stack ) {\n\t\tconst entry = Array.from( this._idToStack.entries() ).find( entry => entry[ 1 ] === stack )!;\n\n\t\treturn entry[ 0 ];\n\t}\n\n\t/**\n\t * Shows the last view from the next stack.\n\t */\n\tprivate _showNextStack() {\n\t\tconst stacks = Array.from( this._idToStack.values() );\n\n\t\tlet nextIndex = stacks.indexOf( this._visibleStack ) + 1;\n\n\t\tif ( !stacks[ nextIndex ] ) {\n\t\t\tnextIndex = 0;\n\t\t}\n\n\t\tthis.showStack( this._getStackId( stacks[ nextIndex ] ) );\n\t}\n\n\t/**\n\t * Shows the last view from the previous stack.\n\t */\n\tprivate _showPrevStack() {\n\t\tconst stacks = Array.from( this._idToStack.values() );\n\n\t\tlet nextIndex = stacks.indexOf( this._visibleStack ) - 1;\n\n\t\tif ( !stacks[ nextIndex ] ) {\n\t\t\tnextIndex = stacks.length - 1;\n\t\t}\n\n\t\tthis.showStack( this._getStackId( stacks[ nextIndex ] ) );\n\t}\n\n\t/**\n\t * Creates a rotator view.\n\t */\n\tprivate _createRotatorView() {\n\t\tconst view = new RotatorView( this.editor.locale );\n\t\tconst t = this.editor.locale.t;\n\n\t\tthis.view.content.add( view );\n\n\t\t// Hide navigation when there is only a one stack & not in single view mode.\n\t\tview.bind( 'isNavigationVisible' ).to( this, '_numberOfStacks', this, '_singleViewMode', ( value, isSingleViewMode ) => {\n\t\t\treturn !isSingleViewMode && value > 1;\n\t\t} );\n\n\t\t// Update balloon position after toggling navigation.\n\t\tview.on<ObservableChangeEvent>( 'change:isNavigationVisible', () => ( this.updatePosition() ), { priority: 'low' } );\n\n\t\t// Update stacks counter value.\n\t\tview.bind( 'counter' ).to( this, 'visibleView', this, '_numberOfStacks', ( visibleView, numberOfStacks ) => {\n\t\t\tif ( numberOfStacks < 2 ) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tconst current = Array.from( this._idToStack.values() ).indexOf( this._visibleStack ) + 1;\n\n\t\t\treturn t( '%0 of %1', [ current, numberOfStacks ] );\n\t\t} );\n\n\t\tview.buttonNextView.on<ButtonExecuteEvent>( 'execute', () => {\n\t\t\t// When current view has a focus then move focus to the editable before removing it,\n\t\t\t// otherwise editor will lost focus.\n\t\t\tif ( view.focusTracker.isFocused ) {\n\t\t\t\tthis.editor.editing.view.focus();\n\t\t\t}\n\n\t\t\tthis._showNextStack();\n\t\t} );\n\n\t\tview.buttonPrevView.on<ButtonExecuteEvent>( 'execute', () => {\n\t\t\t// When current view has a focus then move focus to the editable before removing it,\n\t\t\t// otherwise editor will lost focus.\n\t\t\tif ( view.focusTracker.isFocused ) {\n\t\t\t\tthis.editor.editing.view.focus();\n\t\t\t}\n\n\t\t\tthis._showPrevStack();\n\t\t} );\n\n\t\treturn view;\n\t}\n\n\t/**\n\t * Creates a fake panels view.\n\t */\n\tprivate _createFakePanelsView() {\n\t\tconst view = new FakePanelsView( this.editor.locale, this.view );\n\n\t\tview.bind( 'numberOfPanels' ).to( this, '_numberOfStacks', this, '_singleViewMode', ( number, isSingleViewMode ) => {\n\t\t\tconst showPanels = !isSingleViewMode && number >= 2;\n\n\t\t\treturn showPanels ? Math.min( number - 1, 2 ) : 0;\n\t\t} );\n\n\t\tview.listenTo<ObservableChangeEvent>( this.view, 'change:top', () => view.updatePosition() );\n\t\tview.listenTo<ObservableChangeEvent>( this.view, 'change:left', () => view.updatePosition() );\n\n\t\tthis.editor.ui.view.body.add( view );\n\n\t\treturn view;\n\t}\n\n\t/**\n\t * Sets the view as the content of the balloon and attaches the balloon using position\n\t * options of the first view.\n\t *\n\t * @param data Configuration.\n\t * @param data.view The view to show in the balloon.\n\t * @param data.balloonClassName Additional class name which will be added to the {@link #view balloon}.\n\t * @param data.withArrow Whether the {@link #view balloon} should be rendered with an arrow.\n\t */\n\tprivate _showView( { view, balloonClassName = '', withArrow = true, singleViewMode = false }: ViewConfiguration ) {\n\t\tthis.view.class = balloonClassName;\n\t\tthis.view.withArrow = withArrow;\n\n\t\tthis._rotatorView!.showView( view );\n\t\tthis.visibleView = view;\n\t\tthis.view.pin( this._getBalloonPosition()! );\n\t\tthis._fakePanelsView!.updatePosition();\n\n\t\tif ( singleViewMode ) {\n\t\t\tthis._singleViewMode = true;\n\t\t}\n\t}\n\n\t/**\n\t * Returns position options of the last view in the stack.\n\t * This keeps the balloon in the same position when the view is changed.\n\t */\n\tprivate _getBalloonPosition() {\n\t\tlet position = Array.from( this._visibleStack.values() ).pop()!.position;\n\n\t\tif ( position ) {\n\t\t\t// Use the default limiter if none has been specified.\n\t\t\tif ( !position.limiter ) {\n\t\t\t\t// Don't modify the original options object.\n\t\t\t\tposition = Object.assign( {}, position, {\n\t\t\t\t\tlimiter: this.positionLimiter\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Don't modify the original options object.\n\t\t\tposition = Object.assign( {}, position, {\n\t\t\t\tviewportOffsetConfig: this.editor.ui.viewportOffset\n\t\t\t} );\n\t\t}\n\n\t\treturn position;\n\t}\n}\n\n/**\n * The configuration of the view.\n */\nexport interface ViewConfiguration {\n\n\t/**\n\t * The ID of the stack that the view is added to.\n\t *\n\t * @default 'main'\n\t */\n\tstackId?: string;\n\n\t/**\n\t * The content of the balloon.\n\t */\n\tview: View;\n\n\t/**\n\t * Positioning options.\n\t */\n\tposition?: Partial<PositionOptions>;\n\n\t/**\n\t * An additional CSS class added to the {@link #view balloon} when visible.\n\t */\n\tballoonClassName?: string;\n\n\t/**\n\t * Whether the {@link #view balloon} should be rendered with an arrow.\n\t *\n\t * @default true\n\t */\n\twithArrow?: boolean;\n\n\t/**\n\t * Whether the view should be the only visible view even if other stacks were added.\n\t *\n\t * @default false\n\t */\n\tsingleViewMode?: boolean;\n}\n\ntype Stack = Map<View, ViewConfiguration>;\n\n/**\n * Rotator view is a helper class for the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon ContextualBalloon}.\n * It is used for displaying the last view from the current stack and providing navigation buttons for switching stacks.\n * See the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon ContextualBalloon} documentation to learn more.\n */\nexport class RotatorView extends View {\n\t/**\n\t * Used for checking if a view is focused or not.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * Navigation button for switching the stack to the previous one.\n\t */\n\tpublic readonly buttonPrevView: ButtonView;\n\n\t/**\n\t * Navigation button for switching the stack to the next one.\n\t */\n\tpublic readonly buttonNextView: ButtonView;\n\n\t/**\n\t * A collection of the child views that creates the rotator content.\n\t */\n\tpublic readonly content: ViewCollection;\n\n\t/**\n\t * Defines whether navigation is visible or not.\n\t *\n\t * @observable\n\t */\n\tdeclare public isNavigationVisible: boolean;\n\n\t/**\n\t * @observable\n\t */\n\tdeclare public counter: string;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst t = locale.t;\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.set( 'isNavigationVisible', true );\n\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.buttonPrevView = this._createButtonView( t( 'Previous' ), prevIcon );\n\t\tthis.buttonNextView = this._createButtonView( t( 'Next' ), nextIcon );\n\t\tthis.content = this.createCollection();\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-balloon-rotator'\n\t\t\t\t],\n\t\t\t\t'z-index': '-1'\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttag: 'div',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: [\n\t\t\t\t\t\t\t'ck-balloon-rotator__navigation',\n\t\t\t\t\t\t\tbind.to( 'isNavigationVisible', value => value ? '' : 'ck-hidden' )\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\tthis.buttonPrevView,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttag: 'span',\n\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tclass: [\n\t\t\t\t\t\t\t\t\t'ck-balloon-rotator__counter'\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: bind.to( 'counter' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\tthis.buttonNextView\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttag: 'div',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: 'ck-balloon-rotator__content'\n\t\t\t\t\t},\n\t\t\t\t\tchildren: this.content\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis.focusTracker.add( this.element! );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t}\n\n\t/**\n\t * Shows a given view.\n\t *\n\t * @param view The view to show.\n\t */\n\tpublic showView( view: View ): void {\n\t\tthis.hideView();\n\t\tthis.content.add( view );\n\t}\n\n\t/**\n\t * Hides the currently displayed view.\n\t */\n\tpublic hideView(): void {\n\t\tthis.content.clear();\n\t}\n\n\t/**\n\t * Creates a navigation button view.\n\t *\n\t * @param label The button label.\n\t * @param icon The button icon.\n\t */\n\tprivate _createButtonView( label: string, icon: string ) {\n\t\tconst view = new ButtonView( this.locale );\n\n\t\tview.set( {\n\t\t\tlabel,\n\t\t\ticon,\n\t\t\ttooltip: true\n\t\t} );\n\n\t\treturn view;\n\t}\n}\n\n/**\n * Displays additional layers under the balloon when multiple stacks are added to the balloon.\n */\nclass FakePanelsView extends View {\n\t/**\n\t * Collection of the child views which creates fake panel content.\n\t */\n\tpublic readonly content: ViewCollection;\n\n\t/**\n\t * Fake panels top offset.\n\t *\n\t * @observable\n\t */\n\tdeclare public top: number;\n\n\t/**\n\t * Fake panels left offset.\n\t *\n\t * @observable\n\t */\n\tdeclare public left: number;\n\n\t/**\n\t * Fake panels height.\n\t *\n\t * @observable\n\t */\n\tdeclare public height: number;\n\n\t/**\n\t * Fake panels width.\n\t *\n\t * @observable\n\t */\n\tdeclare public width: number;\n\n\t/**\n\t * Number of rendered fake panels.\n\t *\n\t * @observable\n\t */\n\tdeclare public numberOfPanels: number;\n\n\t/**\n\t * Context.\n\t */\n\tprivate readonly _balloonPanelView: BalloonPanelView;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale: Locale, balloonPanelView: BalloonPanelView ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.set( 'top', 0 );\n\t\tthis.set( 'left', 0 );\n\t\tthis.set( 'height', 0 );\n\t\tthis.set( 'width', 0 );\n\t\tthis.set( 'numberOfPanels', 0 );\n\n\t\tthis.content = this.createCollection();\n\t\tthis._balloonPanelView = balloonPanelView;\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck-fake-panel',\n\t\t\t\t\tbind.to( 'numberOfPanels', number => number ? '' : 'ck-hidden' )\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\ttop: bind.to( 'top', toPx ),\n\t\t\t\t\tleft: bind.to( 'left', toPx ),\n\t\t\t\t\twidth: bind.to( 'width', toPx ),\n\t\t\t\t\theight: bind.to( 'height', toPx )\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: this.content\n\t\t} );\n\n\t\tthis.on<ObservableChangeEvent<number>>( 'change:numberOfPanels', ( evt, name, next, prev ) => {\n\t\t\tif ( next > prev ) {\n\t\t\t\tthis._addPanels( next - prev );\n\t\t\t} else {\n\t\t\t\tthis._removePanels( prev - next );\n\t\t\t}\n\n\t\t\tthis.updatePosition();\n\t\t} );\n\t}\n\n\tprivate _addPanels( number: number ) {\n\t\twhile ( number-- ) {\n\t\t\tconst view = new View();\n\n\t\t\tview.setTemplate( { tag: 'div' } );\n\n\t\t\tthis.content.add( view );\n\t\t\tthis.registerChild( view );\n\t\t}\n\t}\n\n\tprivate _removePanels( number: number ) {\n\t\twhile ( number-- ) {\n\t\t\tconst view = this.content.last!;\n\n\t\t\tthis.content.remove( view );\n\t\t\tthis.deregisterChild( view );\n\t\t\tview.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * Updates coordinates of fake panels.\n\t */\n\tpublic updatePosition() {\n\t\tif ( this.numberOfPanels ) {\n\t\t\tconst { top, left } = this._balloonPanelView;\n\t\t\tconst { width, height } = new Rect( this._balloonPanelView.element! );\n\n\t\t\tObject.assign( this, { top, left, width, height } );\n\t\t}\n\t}\n}\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M11.463 5.187a.888.888 0 1 1 1.254 1.255L9.16 10l3.557 3.557a.888.888 0 1 1-1.254 1.255L7.26 10.61a.888.888 0 0 1 .16-1.382l4.043-4.042z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M8.537 14.813a.888.888 0 1 1-1.254-1.255L10.84 10 7.283 6.442a.888.888 0 1 1 1.254-1.255L12.74 9.39a.888.888 0 0 1-.16 1.382l-4.043 4.042z\\\"/></svg>\";","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./stickypanel.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/panel/sticky/stickypanelview\n */\n\nimport View from '../../view';\nimport Template from '../../template';\n\nimport type ViewCollection from '../../viewcollection';\n\nimport {\n\ttype Locale,\n\ttype ObservableChangeEvent,\n\tgetElementsIntersectionRect,\n\tgetScrollableAncestors,\n\tglobal,\n\ttoUnit,\n\tRect\n} from '@ckeditor/ckeditor5-utils';\n\n// @if CK_DEBUG_STICKYPANEL // const RectDrawer = require( '@ckeditor/ckeditor5-utils/tests/_utils/rectdrawer' ).default\n\nimport '../../../theme/components/panel/stickypanel.css';\n\nconst toPx = toUnit( 'px' );\n\n/**\n * The sticky panel view class.\n */\nexport default class StickyPanelView extends View {\n\t/**\n\t * Collection of the child views which creates balloon panel contents.\n\t */\n\tpublic readonly content: ViewCollection;\n\n\t/**\n\t * Controls whether the sticky panel should be active.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public isActive: boolean;\n\n\t/**\n\t * Controls whether the sticky panel is in the \"sticky\" state.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public isSticky: boolean;\n\n\t/**\n\t * The limiter element for the sticky panel instance. Its bounding rect limits\n\t * the \"stickyness\" of the panel, i.e. when the panel reaches the bottom\n\t * edge of the limiter, it becomes sticky to that edge and does not float\n\t * off the limiter. It is mandatory for the panel to work properly and once\n\t * set, it cannot be changed.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public limiterElement: HTMLElement | null;\n\n\t/**\n\t * The offset from the bottom edge of {@link #limiterElement}\n\t * which stops the panel from stickying any further to prevent limiter's content\n\t * from being completely covered.\n\t *\n\t * @readonly\n\t * @observable\n\t * @default 50\n\t */\n\tdeclare public limiterBottomOffset: number;\n\n\t/**\n\t * The offset from the top edge of the web browser's viewport which makes the\n\t * panel become sticky. The default value is `0`, which means the panel becomes\n\t * sticky when it's upper edge touches the top of the page viewport.\n\t *\n\t * This attribute is useful when the web page has UI elements positioned to the top\n\t * either using `position: fixed` or `position: sticky`, which would cover the\n\t * sticky panel or vice–versa (depending on the `z-index` hierarchy).\n\t *\n\t * Bound to {@link module:ui/editorui/editorui~EditorUI#viewportOffset `EditorUI#viewportOffset`}.\n\t *\n\t * If {@link module:core/editor/editorconfig~EditorConfig#ui `EditorConfig#ui.viewportOffset.top`} is defined, then\n\t * it will override the default value.\n\t *\n\t * @observable\n\t * @default 0\n\t */\n\tdeclare public viewportTopOffset: number;\n\n\t/**\n\t * Controls the `margin-left` CSS style of the panel.\n\t *\n\t * @private\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public _marginLeft: string | null;\n\n\t/**\n\t * Set `true` if the sticky panel reached the bottom edge of the\n\t * {@link #limiterElement}.\n\t *\n\t * @private\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public _isStickyToTheBottomOfLimiter: boolean;\n\n\t/**\n\t * The `top` CSS position of the panel when it is sticky to the top of the viewport or scrollable\n\t * ancestors of the {@link #limiterElement}.\n\t *\n\t * @private\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public _stickyTopOffset: number | null;\n\n\t/**\n\t * The `bottom` CSS position of the panel when it is sticky to the bottom of the {@link #limiterElement}.\n\t *\n\t * @private\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public _stickyBottomOffset: number | null;\n\n\t/**\n\t * A dummy element which visually fills the space as long as the\n\t * actual panel is sticky. It prevents flickering of the UI.\n\t */\n\tprivate _contentPanelPlaceholder: HTMLElement;\n\n\t/**\n\t * The panel which accepts children into {@link #content} collection.\n\t * Also an element which is positioned when {@link #isSticky}.\n\t */\n\tprivate _contentPanel: HTMLElement;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.set( 'isActive', false );\n\t\tthis.set( 'isSticky', false );\n\t\tthis.set( 'limiterElement', null );\n\t\tthis.set( 'limiterBottomOffset', 50 );\n\t\tthis.set( 'viewportTopOffset', 0 );\n\n\t\tthis.set( '_marginLeft', null );\n\t\tthis.set( '_isStickyToTheBottomOfLimiter', false );\n\n\t\tthis.set( '_stickyTopOffset', null );\n\t\tthis.set( '_stickyBottomOffset', null );\n\n\t\tthis.content = this.createCollection();\n\n\t\tthis._contentPanelPlaceholder = new Template( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-sticky-panel__placeholder'\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\tdisplay: bind.to( 'isSticky', isSticky => isSticky ? 'block' : 'none' ),\n\t\t\t\t\theight: bind.to( 'isSticky', isSticky => {\n\t\t\t\t\t\treturn isSticky ? toPx( this._contentPanelRect.height ) : null;\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t}\n\t\t} ).render() as HTMLElement;\n\n\t\tthis._contentPanel = new Template( {\n\t\t\ttag: 'div',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-sticky-panel__content',\n\t\t\t\t\t// Toggle class of the panel when \"sticky\" state changes in the view.\n\t\t\t\t\tbind.if( 'isSticky', 'ck-sticky-panel__content_sticky' ),\n\t\t\t\t\tbind.if( '_isStickyToTheBottomOfLimiter', 'ck-sticky-panel__content_sticky_bottom-limit' )\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\twidth: bind.to( 'isSticky', isSticky => {\n\t\t\t\t\t\treturn isSticky ? toPx( this._contentPanelPlaceholder.getBoundingClientRect().width ) : null;\n\t\t\t\t\t} ),\n\n\t\t\t\t\ttop: bind.to( '_stickyTopOffset', value => value ? toPx( value ) : value ),\n\t\t\t\t\tbottom: bind.to( '_stickyBottomOffset', value => value ? toPx( value ) : value ),\n\n\t\t\t\t\tmarginLeft: bind.to( '_marginLeft' )\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tchildren: this.content\n\t\t} ).render() as HTMLElement;\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-sticky-panel'\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\tthis._contentPanelPlaceholder,\n\t\t\t\tthis._contentPanel\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\t// Check if the panel should go into the sticky state immediately.\n\t\tthis.checkIfShouldBeSticky();\n\n\t\t// Update sticky state of the panel as the window and ancestors are being scrolled.\n\t\tthis.listenTo( global.document, 'scroll', ( evt, data ) => {\n\t\t\tthis.checkIfShouldBeSticky( data.target as HTMLElement | Document );\n\t\t}, { useCapture: true } );\n\n\t\t// Synchronize with `model.isActive` because sticking an inactive panel is pointless.\n\t\tthis.listenTo<ObservableChangeEvent>( this, 'change:isActive', () => {\n\t\t\tthis.checkIfShouldBeSticky();\n\t\t} );\n\t}\n\n\t/**\n\t * Analyzes the environment to decide whether the panel should be sticky or not.\n\t * Then handles the positioning of the panel.\n\t *\n\t * @param [scrollTarget] The element which is being scrolled.\n\t */\n\tpublic checkIfShouldBeSticky( scrollTarget?: HTMLElement | Document ): void {\n\t\t// @if CK_DEBUG_STICKYPANEL // RectDrawer.clear();\n\n\t\tif ( !this.limiterElement || !this.isActive ) {\n\t\t\tthis._unstick();\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst scrollableAncestors = getScrollableAncestors( this.limiterElement );\n\n\t\tif ( scrollTarget && !scrollableAncestors.includes( scrollTarget ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst visibleAncestorsRect = getElementsIntersectionRect( scrollableAncestors, this.viewportTopOffset );\n\t\tconst limiterRect = new Rect( this.limiterElement );\n\n\t\t// @if CK_DEBUG_STICKYPANEL // if ( visibleAncestorsRect ) {\n\t\t// @if CK_DEBUG_STICKYPANEL // \tRectDrawer.draw( visibleAncestorsRect,\n\t\t// @if CK_DEBUG_STICKYPANEL // \t\t{ outlineWidth: '3px', opacity: '.8', outlineColor: 'red', outlineOffset: '-3px' },\n\t\t// @if CK_DEBUG_STICKYPANEL // \t\t'Visible anc'\n\t\t// @if CK_DEBUG_STICKYPANEL // \t);\n\t\t// @if CK_DEBUG_STICKYPANEL // }\n\t\t// @if CK_DEBUG_STICKYPANEL //\n\t\t// @if CK_DEBUG_STICKYPANEL // RectDrawer.draw( limiterRect,\n\t\t// @if CK_DEBUG_STICKYPANEL // \t{ outlineWidth: '3px', opacity: '.8', outlineColor: 'green', outlineOffset: '-3px' },\n\t\t// @if CK_DEBUG_STICKYPANEL // \t'Limiter'\n\t\t// @if CK_DEBUG_STICKYPANEL // );\n\n\t\t// Stick the panel only if\n\t\t// * the limiter's ancestors are intersecting with each other so that some of their rects are visible,\n\t\t// * and the limiter's top edge is above the visible ancestors' top edge.\n\t\tif ( visibleAncestorsRect && limiterRect.top < visibleAncestorsRect.top ) {\n\t\t\tconst visibleLimiterRect = limiterRect.getIntersection( visibleAncestorsRect );\n\n\t\t\t// Sticky the panel only if the limiter's visible rect is at least partially visible in the\n\t\t\t// visible ancestors' rects intersection.\n\t\t\tif ( visibleLimiterRect ) {\n\t\t\t\t// @if CK_DEBUG_STICKYPANEL // RectDrawer.draw( visibleLimiterRect,\n\t\t\t\t// @if CK_DEBUG_STICKYPANEL // \t{ outlineWidth: '3px', opacity: '.8', outlineColor: 'fuchsia', outlineOffset: '-3px',\n\t\t\t\t// @if CK_DEBUG_STICKYPANEL // \t\tbackgroundColor: 'rgba(255, 0, 255, .3)' },\n\t\t\t\t// @if CK_DEBUG_STICKYPANEL // \t'Visible limiter'\n\t\t\t\t// @if CK_DEBUG_STICKYPANEL // );\n\n\t\t\t\tconst visibleAncestorsTop = visibleAncestorsRect.top;\n\n\t\t\t\t// Check if there's a change the panel can be sticky to the bottom of the limiter.\n\t\t\t\tif ( visibleAncestorsTop + this._contentPanelRect.height + this.limiterBottomOffset > visibleLimiterRect.bottom ) {\n\t\t\t\t\tconst stickyBottomOffset = Math.max( limiterRect.bottom - visibleAncestorsRect.bottom, 0 ) + this.limiterBottomOffset;\n\t\t\t\t\t// @if CK_DEBUG_STICKYPANEL // const stickyBottomOffsetRect = new Rect( {\n\t\t\t\t\t// @if CK_DEBUG_STICKYPANEL // \ttop: limiterRect.bottom - stickyBottomOffset, left: 0, right: 2000,\n\t\t\t\t\t// @if CK_DEBUG_STICKYPANEL // \tbottom: limiterRect.bottom - stickyBottomOffset, width: 2000, height: 1\n\t\t\t\t\t// @if CK_DEBUG_STICKYPANEL // } );\n\t\t\t\t\t// @if CK_DEBUG_STICKYPANEL // RectDrawer.draw( stickyBottomOffsetRect,\n\t\t\t\t\t// @if CK_DEBUG_STICKYPANEL // \t{ outlineWidth: '1px', opacity: '.8', outlineColor: 'black' },\n\t\t\t\t\t// @if CK_DEBUG_STICKYPANEL // \t'Sticky bottom offset'\n\t\t\t\t\t// @if CK_DEBUG_STICKYPANEL // );\n\n\t\t\t\t\t// Check if sticking the panel to the bottom of the limiter does not cause it to suddenly\n\t\t\t\t\t// move upwards if there's not enough space for it.\n\t\t\t\t\tif ( limiterRect.bottom - stickyBottomOffset > limiterRect.top + this._contentPanelRect.height ) {\n\t\t\t\t\t\tthis._stickToBottomOfLimiter( stickyBottomOffset );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._unstick();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif ( this._contentPanelRect.height + this.limiterBottomOffset < limiterRect.height ) {\n\t\t\t\t\t\tthis._stickToTopOfAncestors( visibleAncestorsTop );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._unstick();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._unstick();\n\t\t\t}\n\t\t} else {\n\t\t\tthis._unstick();\n\t\t}\n\n\t\t// @if CK_DEBUG_STICKYPANEL // console.clear();\n\t\t// @if CK_DEBUG_STICKYPANEL // console.log( 'isSticky', this.isSticky );\n\t\t// @if CK_DEBUG_STICKYPANEL // console.log( '_isStickyToTheBottomOfLimiter', this._isStickyToTheBottomOfLimiter );\n\t\t// @if CK_DEBUG_STICKYPANEL // console.log( '_stickyTopOffset', this._stickyTopOffset );\n\t\t// @if CK_DEBUG_STICKYPANEL // console.log( '_stickyBottomOffset', this._stickyBottomOffset );\n\t}\n\n\t/**\n\t * Sticks the panel at the given CSS `top` offset.\n\t *\n\t * @private\n\t * @param topOffset\n\t */\n\tprivate _stickToTopOfAncestors( topOffset: number ) {\n\t\tthis.isSticky = true;\n\t\tthis._isStickyToTheBottomOfLimiter = false;\n\t\tthis._stickyTopOffset = topOffset;\n\t\tthis._stickyBottomOffset = null;\n\t\tthis._marginLeft = toPx( -global.window.scrollX );\n\t}\n\n\t/**\n\t * Sticks the panel at the bottom of the limiter with a given CSS `bottom` offset.\n\t *\n\t * @private\n\t * @param stickyBottomOffset\n\t */\n\tprivate _stickToBottomOfLimiter( stickyBottomOffset: number ) {\n\t\tthis.isSticky = true;\n\t\tthis._isStickyToTheBottomOfLimiter = true;\n\t\tthis._stickyTopOffset = null;\n\t\tthis._stickyBottomOffset = stickyBottomOffset;\n\t\tthis._marginLeft = toPx( -global.window.scrollX );\n\t}\n\n\t/**\n\t * Unsticks the panel putting it back to its original position.\n\t *\n\t * @private\n\t */\n\tprivate _unstick() {\n\t\tthis.isSticky = false;\n\t\tthis._isStickyToTheBottomOfLimiter = false;\n\t\tthis._stickyTopOffset = null;\n\t\tthis._stickyBottomOffset = null;\n\t\tthis._marginLeft = null;\n\t}\n\n\t/**\n\t * Returns the bounding rect of the {@link #_contentPanel}.\n\t *\n\t * @private\n\t */\n\tprivate get _contentPanelRect(): Rect {\n\t\treturn new Rect( this._contentPanel );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/getscrollableancestors\n */\n\nimport global from './global';\nimport findClosestScrollableAncestor from './findclosestscrollableancestor';\n\n/**\n * Loops over the given element's ancestors to find all the scrollable elements.\n *\n * **Note**: The `document` is always included in the returned array.\n *\n * @internal\n * @param element\n * @returns An array of scrollable element's ancestors (including the `document`).\n */\nexport default function getScrollableAncestors( element: HTMLElement ): Array<HTMLElement | Document> {\n\tconst scrollableAncestors = [];\n\tlet scrollableAncestor = findClosestScrollableAncestor( element );\n\n\twhile ( scrollableAncestor && scrollableAncestor !== global.document.body ) {\n\t\tscrollableAncestors.push( scrollableAncestor );\n\t\tscrollableAncestor = findClosestScrollableAncestor( scrollableAncestor! );\n\t}\n\n\tscrollableAncestors.push( global.document );\n\n\treturn scrollableAncestors;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module utils/dom/getelementsintersectionrect\n */\n\nimport Rect from './rect';\n\n/**\n * Calculates the intersection `Rect` of a given set of elements (and/or a `document`).\n * Also, takes into account the viewport top offset configuration.\n *\n * @internal\n * @param elements\n * @param viewportTopOffset\n */\nexport default function getElementsIntersectionRect(\n\telements: Array<HTMLElement | Document>,\n\tviewportTopOffset: number = 0\n): Rect | null {\n\tconst elementRects = elements.map( element => {\n\t\t// The document (window) is yet another \"element\", but cropped by the top offset.\n\t\tif ( element instanceof Document ) {\n\t\t\tconst windowRect = new Rect( global.window );\n\n\t\t\twindowRect.top += viewportTopOffset;\n\t\t\twindowRect.height -= viewportTopOffset;\n\n\t\t\treturn windowRect;\n\t\t} else {\n\t\t\treturn new Rect( element );\n\t\t}\n\t} );\n\n\tlet intersectionRect: Rect | null = elementRects[ 0 ];\n\n\t// @if CK_DEBUG_GETELEMENTSINTERSECTIONRECT // for ( const rect of elementRects ) {\n\t// @if CK_DEBUG_GETELEMENTSINTERSECTIONRECT // \tRectDrawer.draw( rect, {\n\t// @if CK_DEBUG_GETELEMENTSINTERSECTIONRECT // \t\toutlineWidth: '1px', opacity: '.7', outlineStyle: 'dashed'\n\t// @if CK_DEBUG_GETELEMENTSINTERSECTIONRECT // \t}, 'Scrollable element' );\n\t// @if CK_DEBUG_GETELEMENTSINTERSECTIONRECT // }\n\n\tfor ( const rect of elementRects.slice( 1 ) ) {\n\t\tif ( intersectionRect ) {\n\t\t\tintersectionRect = intersectionRect.getIntersection( rect );\n\t\t}\n\t}\n\n\treturn intersectionRect;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/toolbar/balloon/balloontoolbar\n */\n\nimport ContextualBalloon from '../../panel/balloon/contextualballoon';\nimport ToolbarView, { type ToolbarViewGroupedItemsUpdateEvent } from '../toolbarview';\nimport BalloonPanelView, { generatePositions } from '../../panel/balloon/balloonpanelview';\nimport normalizeToolbarConfig from '../normalizetoolbarconfig';\n\nimport type { EditorUIReadyEvent, EditorUIUpdateEvent } from '../../editorui/editorui';\n\nimport {\n\tPlugin,\n\ttype Editor,\n\ttype EditorReadyEvent\n} from '@ckeditor/ckeditor5-core';\n\nimport {\n\tFocusTracker,\n\tRect,\n\tResizeObserver,\n\tenv,\n\tglobal,\n\ttoUnit,\n\ttype ObservableChangeEvent\n} from '@ckeditor/ckeditor5-utils';\n\nimport type {\n\tDocumentSelection,\n\tDocumentSelectionChangeRangeEvent,\n\tSchema\n} from '@ckeditor/ckeditor5-engine';\n\nimport { debounce, type DebouncedFunc } from 'lodash-es';\n\nconst toPx = toUnit( 'px' );\n\n/**\n * The contextual toolbar.\n *\n * It uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon plugin}.\n */\nexport default class BalloonToolbar extends Plugin {\n\t/**\n\t * The toolbar view displayed in the balloon.\n\t */\n\tpublic readonly toolbarView: ToolbarView;\n\n\t/**\n\t * Tracks the focus of the {@link module:ui/editorui/editorui~EditorUI#getEditableElement editable element}\n\t * and the {@link #toolbarView}. When both are blurred then the toolbar should hide.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * A cached and normalized `config.balloonToolbar` object.\n\t */\n\tprivate _balloonConfig: ReturnType<typeof normalizeToolbarConfig>;\n\n\t/**\n\t * An instance of the resize observer that allows to respond to changes in editable's geometry\n\t * so the toolbar can stay within its boundaries (and group toolbar items that do not fit).\n\t *\n\t * **Note**: Used only when `shouldNotGroupWhenFull` was **not** set in the\n\t * {@link module:core/editor/editorconfig~EditorConfig#balloonToolbar configuration}.\n\t *\n\t * **Note:** Created in {@link #init}.\n\t */\n\tprivate _resizeObserver: ResizeObserver | null = null;\n\n\t/**\n\t * The contextual balloon plugin instance.\n\t */\n\tprivate readonly _balloon: ContextualBalloon;\n\n\t/**\n\t * Fires `_selectionChangeDebounced` event using `lodash#debounce`.\n\t *\n\t * This event is an internal plugin event which is fired 200 ms after model selection last change.\n\t * This is to makes easy test debounced action without need to use `setTimeout`.\n\t *\n\t * This function is stored as a plugin property to make possible to cancel\n\t * trailing debounced invocation on destroy.\n\t */\n\tprivate readonly _fireSelectionChangeDebounced: DebouncedFunc<() => void>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'BalloonToolbar' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ContextualBalloon ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._balloonConfig = normalizeToolbarConfig( editor.config.get( 'balloonToolbar' ) );\n\t\tthis.toolbarView = this._createToolbarView();\n\t\tthis.focusTracker = new FocusTracker();\n\n\t\t// Wait for the EditorUI#init. EditableElement is not available before.\n\t\teditor.ui.once<EditorUIReadyEvent>( 'ready', () => {\n\t\t\tthis.focusTracker.add( editor.ui.getEditableElement()! );\n\t\t\tthis.focusTracker.add( this.toolbarView.element! );\n\t\t} );\n\n\t\t// Register the toolbar so it becomes available for Alt+F10 and Esc navigation.\n\t\teditor.ui.addToolbar( this.toolbarView, {\n\t\t\tbeforeFocus: () => this.show( true ),\n\t\t\tafterBlur: () => this.hide(),\n\t\t\tisContextual: true\n\t\t} );\n\n\t\tthis._balloon = editor.plugins.get( ContextualBalloon );\n\t\tthis._fireSelectionChangeDebounced = debounce( () => this.fire( '_selectionChangeDebounced' ), 200 );\n\n\t\t// The appearance of the BalloonToolbar method is event–driven.\n\t\t// It is possible to stop the #show event and this prevent the toolbar from showing up.\n\t\tthis.decorate( 'show' );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\n\t\t// Show/hide the toolbar on editable focus/blur.\n\t\tthis.listenTo<ObservableChangeEvent<boolean>>( this.focusTracker, 'change:isFocused', ( evt, name, isFocused ) => {\n\t\t\tconst isToolbarVisible = this._balloon.visibleView === this.toolbarView;\n\n\t\t\tif ( !isFocused && isToolbarVisible ) {\n\t\t\t\tthis.hide();\n\t\t\t} else if ( isFocused ) {\n\t\t\t\tthis.show();\n\t\t\t}\n\t\t} );\n\n\t\t// Hide the toolbar when the selection is changed by a direct change or has changed to collapsed.\n\t\tthis.listenTo<DocumentSelectionChangeRangeEvent>( selection, 'change:range', ( evt, data ) => {\n\t\t\tif ( data.directChange || selection.isCollapsed ) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\n\t\t\t// Fire internal `_selectionChangeDebounced` event to use it for showing\n\t\t\t// the toolbar after the selection stops changing.\n\t\t\tthis._fireSelectionChangeDebounced();\n\t\t} );\n\n\t\t// Show the toolbar when the selection stops changing.\n\t\tthis.listenTo( this, '_selectionChangeDebounced', () => {\n\t\t\tif ( this.editor.editing.view.document.isFocused ) {\n\t\t\t\tthis.show();\n\t\t\t}\n\t\t} );\n\n\t\tif ( !this._balloonConfig.shouldNotGroupWhenFull ) {\n\t\t\tthis.listenTo<EditorReadyEvent>( editor, 'ready', () => {\n\t\t\t\tconst editableElement = editor.ui.view.editable.element!;\n\n\t\t\t\t// Set #toolbarView's max-width on the initialization and update it on the editable resize.\n\t\t\t\tthis._resizeObserver = new ResizeObserver( editableElement, entry => {\n\t\t\t\t\t// The max-width equals 90% of the editable's width for the best user experience.\n\t\t\t\t\t// The value keeps the balloon very close to the boundaries of the editable and limits the cases\n\t\t\t\t\t// when the balloon juts out from the editable element it belongs to.\n\t\t\t\t\tthis.toolbarView.maxWidth = toPx( entry.contentRect.width * .9 );\n\t\t\t\t} );\n\t\t\t} );\n\t\t}\n\n\t\t// Listen to the toolbar view and whenever it changes its geometry due to some items being\n\t\t// grouped or ungrouped, update the position of the balloon because a shorter/longer toolbar\n\t\t// means the balloon could be pointing at the wrong place. Once updated, the balloon will point\n\t\t// at the right selection in the content again.\n\t\t// https://github.com/ckeditor/ckeditor5/issues/6444\n\t\tthis.listenTo<ToolbarViewGroupedItemsUpdateEvent>( this.toolbarView, 'groupedItemsUpdate', () => {\n\t\t\tthis._updatePosition();\n\t\t} );\n\t}\n\n\t/**\n\t * Creates toolbar components based on given configuration.\n\t * This needs to be done when all plugins are ready.\n\t */\n\tpublic afterInit(): void {\n\t\tconst factory = this.editor.ui.componentFactory;\n\n\t\tthis.toolbarView.fillFromConfig( this._balloonConfig, factory );\n\t}\n\n\t/**\n\t * Creates the toolbar view instance.\n\t */\n\tprivate _createToolbarView() {\n\t\tconst t = this.editor.locale.t;\n\t\tconst shouldGroupWhenFull = !this._balloonConfig.shouldNotGroupWhenFull;\n\t\tconst toolbarView = new ToolbarView( this.editor.locale, {\n\t\t\tshouldGroupWhenFull,\n\t\t\tisFloating: true\n\t\t} );\n\n\t\ttoolbarView.ariaLabel = t( 'Editor contextual toolbar' );\n\t\ttoolbarView.render();\n\n\t\treturn toolbarView;\n\t}\n\n\t/**\n\t * Shows the toolbar and attaches it to the selection.\n\t *\n\t * Fires {@link #event:show} event which can be stopped to prevent the toolbar from showing up.\n\t *\n\t * @param showForCollapsedSelection When set `true`, the toolbar will show despite collapsed selection in the\n\t * editing view.\n\t */\n\tpublic show( showForCollapsedSelection: boolean = false ): void {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst schema = editor.model.schema;\n\n\t\t// Do not add the toolbar to the balloon stack twice.\n\t\tif ( this._balloon.hasView( this.toolbarView ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Do not show the toolbar when the selection is collapsed.\n\t\tif ( selection.isCollapsed && !showForCollapsedSelection ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Do not show the toolbar when there is more than one range in the selection and they fully contain selectable elements.\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/6443.\n\t\tif ( selectionContainsOnlyMultipleSelectables( selection, schema ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Don not show the toolbar when all components inside are disabled\n\t\t// see https://github.com/ckeditor/ckeditor5-ui/issues/269.\n\t\tif ( Array.from( this.toolbarView.items ).every( ( item: any ) => item.isEnabled !== undefined && !item.isEnabled ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Update the toolbar position when the editor ui should be refreshed.\n\t\tthis.listenTo<EditorUIUpdateEvent>( this.editor.ui, 'update', () => {\n\t\t\tthis._updatePosition();\n\t\t} );\n\n\t\t// Add the toolbar to the common editor contextual balloon.\n\t\tthis._balloon.add( {\n\t\t\tview: this.toolbarView,\n\t\t\tposition: this._getBalloonPositionData(),\n\t\t\tballoonClassName: 'ck-toolbar-container'\n\t\t} );\n\t}\n\n\t/**\n\t * Hides the toolbar.\n\t */\n\tpublic hide(): void {\n\t\tif ( this._balloon.hasView( this.toolbarView ) ) {\n\t\t\tthis.stopListening( this.editor.ui, 'update' );\n\t\t\tthis._balloon.remove( this.toolbarView );\n\t\t}\n\t}\n\n\t/**\n\t * Returns positioning options for the {@link #_balloon}. They control the way balloon is attached\n\t * to the selection.\n\t */\n\tprivate _getBalloonPositionData() {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tconst viewSelection = viewDocument.selection;\n\n\t\t// Get direction of the selection.\n\t\tconst isBackward = viewDocument.selection.isBackward;\n\n\t\treturn {\n\t\t\t// Because the target for BalloonPanelView is a Rect (not DOMRange), it's geometry will stay fixed\n\t\t\t// as the window scrolls. To let the BalloonPanelView follow such Rect, is must be continuously\n\t\t\t// computed and hence, the target is defined as a function instead of a static value.\n\t\t\t// https://github.com/ckeditor/ckeditor5-ui/issues/195\n\t\t\ttarget: () => {\n\t\t\t\tconst range = isBackward ? viewSelection.getFirstRange() : viewSelection.getLastRange();\n\t\t\t\tconst rangeRects = Rect.getDomRangeRects( view.domConverter.viewRangeToDom( range! ) );\n\n\t\t\t\t// Select the proper range rect depending on the direction of the selection.\n\t\t\t\tif ( isBackward ) {\n\t\t\t\t\treturn rangeRects[ 0 ];\n\t\t\t\t} else {\n\t\t\t\t\t// Ditch the zero-width \"orphan\" rect in the next line for the forward selection if there's\n\t\t\t\t\t// another one preceding it. It is not rendered as a selection by the web browser anyway.\n\t\t\t\t\t// https://github.com/ckeditor/ckeditor5-ui/issues/308\n\t\t\t\t\tif ( rangeRects.length > 1 && rangeRects[ rangeRects.length - 1 ].width === 0 ) {\n\t\t\t\t\t\trangeRects.pop();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn rangeRects[ rangeRects.length - 1 ];\n\t\t\t\t}\n\t\t\t},\n\t\t\tpositions: this._getBalloonPositions( isBackward )\n\t\t};\n\t}\n\n\t/**\n\t * Updates the position of the {@link #_balloon} to make up for changes:\n\t *\n\t * * in the geometry of the selection it is attached to (e.g. the selection moved in the viewport or expanded or shrunk),\n\t * * or the geometry of the balloon toolbar itself (e.g. the toolbar has grouped or ungrouped some items and it is shorter or longer).\n\t */\n\tprivate _updatePosition() {\n\t\tthis._balloon.updatePosition( this._getBalloonPositionData() );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.stopListening();\n\t\tthis._fireSelectionChangeDebounced.cancel();\n\t\tthis.toolbarView.destroy();\n\t\tthis.focusTracker.destroy();\n\n\t\tif ( this._resizeObserver ) {\n\t\t\tthis._resizeObserver.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * Returns toolbar positions for the given direction of the selection.\n\t */\n\tprivate _getBalloonPositions( isBackward: boolean ) {\n\t\tconst isSafariIniOS = env.isSafari && env.isiOS;\n\n\t\t// https://github.com/ckeditor/ckeditor5/issues/7707\n\t\tconst positions = isSafariIniOS ? generatePositions( {\n\t\t\t// 20px when zoomed out. Less then 20px when zoomed in; the \"radius\" of the native selection handle gets\n\t\t\t// smaller as the user zooms in. No less than the default v-offset, though.\n\t\t\theightOffset: Math.max(\n\t\t\t\tBalloonPanelView.arrowHeightOffset,\n\t\t\t\tMath.round( 20 / global.window.visualViewport!.scale )\n\t\t\t)\n\t\t} ) : BalloonPanelView.defaultPositions;\n\n\t\treturn isBackward ? [\n\t\t\tpositions.northWestArrowSouth,\n\t\t\tpositions.northWestArrowSouthWest,\n\t\t\tpositions.northWestArrowSouthEast,\n\t\t\tpositions.northWestArrowSouthMiddleEast,\n\t\t\tpositions.northWestArrowSouthMiddleWest,\n\t\t\tpositions.southWestArrowNorth,\n\t\t\tpositions.southWestArrowNorthWest,\n\t\t\tpositions.southWestArrowNorthEast,\n\t\t\tpositions.southWestArrowNorthMiddleWest,\n\t\t\tpositions.southWestArrowNorthMiddleEast\n\t\t] : [\n\t\t\tpositions.southEastArrowNorth,\n\t\t\tpositions.southEastArrowNorthEast,\n\t\t\tpositions.southEastArrowNorthWest,\n\t\t\tpositions.southEastArrowNorthMiddleEast,\n\t\t\tpositions.southEastArrowNorthMiddleWest,\n\t\t\tpositions.northEastArrowSouth,\n\t\t\tpositions.northEastArrowSouthEast,\n\t\t\tpositions.northEastArrowSouthWest,\n\t\t\tpositions.northEastArrowSouthMiddleEast,\n\t\t\tpositions.northEastArrowSouthMiddleWest\n\t\t];\n\t}\n}\n\n/**\n * Returns \"true\" when the selection has multiple ranges and each range contains a selectable element\n * and nothing else.\n */\nfunction selectionContainsOnlyMultipleSelectables( selection: DocumentSelection, schema: Schema ) {\n\t// It doesn't contain multiple objects if there is only one range.\n\tif ( selection.rangeCount === 1 ) {\n\t\treturn false;\n\t}\n\n\treturn [ ...selection.getRanges() ].every( range => {\n\t\tconst element = range.getContainedElement();\n\n\t\treturn element && schema.isSelectable( element );\n\t} );\n}\n\n/**\n * This event is fired just before the toolbar shows up. Stopping this event will prevent this.\n *\n * @eventName ~BalloonToolbar#show\n */\nexport type BalloonToolbarShowEvent = {\n\tname: 'show';\n\targs: [];\n};\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./blocktoolbar.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/toolbar/block/blockbuttonview\n */\n\nimport ButtonView from '../../button/buttonview';\n\nimport { toUnit, type Locale } from '@ckeditor/ckeditor5-utils';\n\nimport '../../../theme/components/toolbar/blocktoolbar.css';\n\nconst toPx = toUnit( 'px' );\n\n/**\n * The block button view class.\n *\n * This view represents a button attached next to block element where the selection is anchored.\n *\n * See {@link module:ui/toolbar/block/blocktoolbar~BlockToolbar}.\n */\nexport default class BlockButtonView extends ButtonView {\n\t/**\n\t * Top offset.\n\t *\n\t * @observable\n\t */\n\tdeclare public top: number;\n\n\t/**\n\t * Left offset.\n\t *\n\t * @observable\n\t */\n\tdeclare public left: number;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\t// Hide button on init.\n\t\tthis.isVisible = false;\n\n\t\tthis.isToggleable = true;\n\n\t\tthis.set( 'top', 0 );\n\t\tthis.set( 'left', 0 );\n\n\t\tthis.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: 'ck-block-toolbar-button',\n\t\t\t\tstyle: {\n\t\t\t\t\ttop: bind.to( 'top', val => toPx( val ) ),\n\t\t\t\t\tleft: bind.to( 'left', val => toPx( val ) )\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ui/toolbar/block/blocktoolbar\n */\n\n/* global window */\n\nimport {\n\tPlugin,\n\ticons,\n\ttype Editor\n} from '@ckeditor/ckeditor5-core';\n\nimport {\n\tRect,\n\tResizeObserver,\n\tgetOptimalPosition,\n\ttoUnit,\n\ttype ObservableChangeEvent\n} from '@ckeditor/ckeditor5-utils';\n\nimport type { DocumentSelectionChangeRangeEvent } from '@ckeditor/ckeditor5-engine';\n\nimport BlockButtonView from './blockbuttonview';\nimport BalloonPanelView from '../../panel/balloon/balloonpanelview';\nimport ToolbarView from '../toolbarview';\nimport clickOutsideHandler from '../../bindings/clickoutsidehandler';\nimport normalizeToolbarConfig from '../normalizetoolbarconfig';\n\nimport type { ButtonExecuteEvent } from '../../button/button';\nimport type { EditorUIUpdateEvent } from '../../editorui/editorui';\n\nconst toPx = toUnit( 'px' );\nconst { pilcrow } = icons;\n\n/**\n * The block toolbar plugin.\n *\n * This plugin provides a button positioned next to the block of content where the selection is anchored.\n * Upon clicking the button, a dropdown providing access to editor features shows up, as configured in\n * {@link module:core/editor/editorconfig~EditorConfig#blockToolbar}.\n *\n * By default, the button is displayed next to all elements marked in {@link module:engine/model/schema~Schema}\n * as `$block` for which the toolbar provides at least one option.\n *\n * By default, the button is attached so its right boundary is touching the\n * {@link module:engine/view/editableelement~EditableElement}:\n *\n * ```\n * __ |\n * | || This is a block of content that the\n * ¯¯ | button is attached to. This is a\n * | block of content that the button is\n * | attached to.\n * ```\n *\n * The position of the button can be adjusted using the CSS `transform` property:\n *\n * ```css\n * .ck-block-toolbar-button {\n * \ttransform: translateX( -10px );\n * }\n * ```\n *\n * ```\n * __ |\n * | | | This is a block of content that the\n * ¯¯ | button is attached to. This is a\n * | block of content that the button is\n * | attached to.\n * ```\n *\n * **Note**: If you plan to run the editor in a right–to–left (RTL) language, keep in mind the button\n * will be attached to the **right** boundary of the editable area. In that case, make sure the\n * CSS position adjustment works properly by adding the following styles:\n *\n * ```css\n * .ck[dir=\"rtl\"] .ck-block-toolbar-button {\n * \ttransform: translateX( 10px );\n * }\n * ```\n */\nexport default class BlockToolbar extends Plugin {\n\t/**\n\t * The toolbar view.\n\t */\n\tpublic readonly toolbarView: ToolbarView;\n\n\t/**\n\t * The balloon panel view, containing the {@link #toolbarView}.\n\t */\n\tpublic readonly panelView: BalloonPanelView;\n\n\t/**\n\t * The button view that opens the {@link #toolbarView}.\n\t */\n\tpublic readonly buttonView: BlockButtonView;\n\n\t/**\n\t * An instance of the resize observer that allows to respond to changes in editable's geometry\n\t * so the toolbar can stay within its boundaries (and group toolbar items that do not fit).\n\t *\n\t * **Note**: Used only when `shouldNotGroupWhenFull` was **not** set in the\n\t * {@link module:core/editor/editorconfig~EditorConfig#blockToolbar configuration}.\n\t *\n\t * **Note:** Created in {@link #afterInit}.\n\t */\n\tprivate _resizeObserver: ResizeObserver | null = null;\n\n\t/**\n\t * A cached and normalized `config.blockToolbar` object.\n\t */\n\tprivate _blockToolbarConfig: ReturnType<typeof normalizeToolbarConfig>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'BlockToolbar' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._blockToolbarConfig = normalizeToolbarConfig( this.editor.config.get( 'blockToolbar' ) );\n\t\tthis.toolbarView = this._createToolbarView();\n\t\tthis.panelView = this._createPanelView();\n\t\tthis.buttonView = this._createButtonView();\n\n\t\t// Close the #panelView upon clicking outside of the plugin UI.\n\t\tclickOutsideHandler( {\n\t\t\temitter: this.panelView,\n\t\t\tcontextElements: [ this.panelView.element!, this.buttonView.element! ],\n\t\t\tactivator: () => this.panelView.isVisible,\n\t\t\tcallback: () => this._hidePanel()\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Hides panel on a direct selection change.\n\t\tthis.listenTo<DocumentSelectionChangeRangeEvent>( editor.model.document.selection, 'change:range', ( evt, data ) => {\n\t\t\tif ( data.directChange ) {\n\t\t\t\tthis._hidePanel();\n\t\t\t}\n\t\t} );\n\n\t\tthis.listenTo<EditorUIUpdateEvent>( editor.ui, 'update', () => this._updateButton() );\n\t\t// `low` priority is used because of https://github.com/ckeditor/ckeditor5-core/issues/133.\n\t\tthis.listenTo<ObservableChangeEvent>( editor, 'change:isReadOnly', () => this._updateButton(), { priority: 'low' } );\n\t\tthis.listenTo<ObservableChangeEvent>( editor.ui.focusTracker, 'change:isFocused', () => this._updateButton() );\n\n\t\t// Reposition button on resize.\n\t\tthis.listenTo<ObservableChangeEvent<boolean>>( this.buttonView, 'change:isVisible', ( evt, name, isVisible ) => {\n\t\t\tif ( isVisible ) {\n\t\t\t\t// Keep correct position of button and panel on window#resize.\n\t\t\t\tthis.buttonView.listenTo( window, 'resize', () => this._updateButton() );\n\t\t\t} else {\n\t\t\t\t// Stop repositioning button when is hidden.\n\t\t\t\tthis.buttonView.stopListening( window, 'resize' );\n\n\t\t\t\t// Hide the panel when the button disappears.\n\t\t\t\tthis._hidePanel();\n\t\t\t}\n\t\t} );\n\n\t\t// Register the toolbar so it becomes available for Alt+F10 and Esc navigation.\n\t\teditor.ui.addToolbar( this.toolbarView, {\n\t\t\tbeforeFocus: () => this._showPanel(),\n\t\t\tafterBlur: () => this._hidePanel()\n\t\t} );\n\t}\n\n\t/**\n\t * Fills the toolbar with its items based on the configuration.\n\t *\n\t * **Note:** This needs to be done after all plugins are ready.\n\t */\n\tpublic afterInit(): void {\n\t\tthis.toolbarView.fillFromConfig( this._blockToolbarConfig, this.editor.ui.componentFactory );\n\n\t\t// Hide panel before executing each button in the panel.\n\t\tfor ( const item of this.toolbarView.items ) {\n\t\t\titem.on<ButtonExecuteEvent>( 'execute', () => this._hidePanel( true ), { priority: 'high' } );\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\t// Destroy created UI components as they are not automatically destroyed (see ckeditor5#1341).\n\t\tthis.panelView.destroy();\n\t\tthis.buttonView.destroy();\n\t\tthis.toolbarView.destroy();\n\n\t\tif ( this._resizeObserver ) {\n\t\t\tthis._resizeObserver.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * Creates the {@link #toolbarView}.\n\t */\n\tprivate _createToolbarView(): ToolbarView {\n\t\tconst t = this.editor.locale.t;\n\t\tconst shouldGroupWhenFull = !this._blockToolbarConfig.shouldNotGroupWhenFull;\n\t\tconst toolbarView = new ToolbarView( this.editor.locale, {\n\t\t\tshouldGroupWhenFull,\n\t\t\tisFloating: true\n\t\t} );\n\n\t\ttoolbarView.ariaLabel = t( 'Editor block content toolbar' );\n\n\t\treturn toolbarView;\n\t}\n\n\t/**\n\t * Creates the {@link #panelView}.\n\t */\n\tprivate _createPanelView(): BalloonPanelView {\n\t\tconst editor = this.editor;\n\t\tconst panelView = new BalloonPanelView( editor.locale );\n\n\t\tpanelView.content.add( this.toolbarView );\n\t\tpanelView.class = 'ck-toolbar-container';\n\t\teditor.ui.view.body.add( panelView );\n\t\teditor.ui.focusTracker.add( panelView.element! );\n\n\t\t// Close #panelView on `Esc` press.\n\t\tthis.toolbarView.keystrokes.set( 'Esc', ( evt, cancel ) => {\n\t\t\tthis._hidePanel( true );\n\t\t\tcancel();\n\t\t} );\n\n\t\treturn panelView;\n\t}\n\n\t/**\n\t * Creates the {@link #buttonView}.\n\t */\n\tprivate _createButtonView(): BlockButtonView {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst buttonView = new BlockButtonView( editor.locale );\n\n\t\tbuttonView.set( {\n\t\t\tlabel: t( 'Edit block' ),\n\t\t\ticon: pilcrow,\n\t\t\twithText: false\n\t\t} );\n\n\t\t// Bind the panelView observable properties to the buttonView.\n\t\tbuttonView.bind( 'isOn' ).to( this.panelView, 'isVisible' );\n\t\tbuttonView.bind( 'tooltip' ).to( this.panelView, 'isVisible', isVisible => !isVisible );\n\n\t\t// Toggle the panelView upon buttonView#execute.\n\t\tthis.listenTo<ButtonExecuteEvent>( buttonView, 'execute', () => {\n\t\t\tif ( !this.panelView.isVisible ) {\n\t\t\t\tthis._showPanel();\n\t\t\t} else {\n\t\t\t\tthis._hidePanel( true );\n\t\t\t}\n\t\t} );\n\n\t\teditor.ui.view.body.add( buttonView );\n\t\teditor.ui.focusTracker.add( buttonView.element! );\n\n\t\treturn buttonView;\n\t}\n\n\t/**\n\t * Shows or hides the button.\n\t * When all the conditions for displaying the button are matched, it shows the button. Hides otherwise.\n\t */\n\tprivate _updateButton() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\n\t\t// Hides the button when the editor is not focused.\n\t\tif ( !editor.ui.focusTracker.isFocused ) {\n\t\t\tthis._hideButton();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Hides the button when the selection is in non-editable place.\n\t\tif ( !editor.model.canEditAt( editor.model.document.selection ) ) {\n\t\t\tthis._hideButton();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Get the first selected block, button will be attached to this element.\n\t\tconst modelTarget = Array.from( model.document.selection.getSelectedBlocks() )[ 0 ];\n\n\t\t// Hides the button when there is no enabled item in toolbar for the current block element.\n\t\tif ( !modelTarget || Array.from( this.toolbarView.items ).every( ( item: any ) => !item.isEnabled ) ) {\n\t\t\tthis._hideButton();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Get DOM target element.\n\t\tconst domTarget = view.domConverter.mapViewToDom( editor.editing.mapper.toViewElement( modelTarget )! );\n\n\t\t// Show block button.\n\t\tthis.buttonView.isVisible = true;\n\n\t\t// Make sure that the block toolbar panel is resized properly.\n\t\tthis._setupToolbarResize();\n\n\t\t// Attach block button to target DOM element.\n\t\tthis._attachButtonToElement( domTarget as any );\n\n\t\t// When panel is opened then refresh it position to be properly aligned with block button.\n\t\tif ( this.panelView.isVisible ) {\n\t\t\tthis._showPanel();\n\t\t}\n\t}\n\n\t/**\n\t * Hides the button.\n\t */\n\tprivate _hideButton() {\n\t\tthis.buttonView.isVisible = false;\n\t}\n\n\t/**\n\t * Shows the {@link #toolbarView} attached to the {@link #buttonView}.\n\t * If the toolbar is already visible, then it simply repositions it.\n\t */\n\tprivate _showPanel() {\n\t\t// Usually, the only way to show the toolbar is by pressing the block button. It makes it impossible for\n\t\t// the toolbar to show up when the button is invisible (feature does not make sense for the selection then).\n\t\t// The toolbar navigation using Alt+F10 does not access the button but shows the panel directly using this method.\n\t\t// So we need to check whether this is possible first.\n\t\tif ( !this.buttonView.isVisible ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst wasVisible = this.panelView.isVisible;\n\n\t\t// So here's the thing: If there was no initial panelView#show() or these two were in different order, the toolbar\n\t\t// positioning will break in RTL editors. Weird, right? What you show know is that the toolbar\n\t\t// grouping works thanks to:\n\t\t//\n\t\t// * the ResizeObserver, which kicks in as soon as the toolbar shows up in DOM (becomes visible again).\n\t\t// * the observable ToolbarView#maxWidth, which triggers re-grouping when changed.\n\t\t//\n\t\t// Here are the possible scenarios:\n\t\t//\n\t\t// 1. (WRONG ❌) If the #maxWidth is set when the toolbar is invisible, it won't affect item grouping (no DOMRects, no grouping).\n\t\t// Then, when panelView.pin() is called, the position of the toolbar will be calculated for the old\n\t\t// items grouping state, and when finally ResizeObserver kicks in (hey, the toolbar is visible now, right?)\n\t\t// it will group/ungroup some items and the length of the toolbar will change. But since in RTL the toolbar\n\t\t// is attached on the right side and the positioning uses CSS \"left\", it will result in the toolbar shifting\n\t\t// to the left and being displayed in the wrong place.\n\t\t// 2. (WRONG ❌) If the panelView.pin() is called first and #maxWidth set next, then basically the story repeats. The balloon\n\t\t// calculates the position for the old toolbar grouping state, then the toolbar re-groups items and because\n\t\t// it is positioned using CSS \"left\" it will move.\n\t\t// 3. (RIGHT ✅) We show the panel first (the toolbar does re-grouping but it does not matter), then the #maxWidth\n\t\t// is set allowing the toolbar to re-group again and finally panelView.pin() does the positioning when the\n\t\t// items grouping state is stable and final.\n\t\t//\n\t\t// https://github.com/ckeditor/ckeditor5/issues/6449, https://github.com/ckeditor/ckeditor5/issues/6575\n\t\tthis.panelView.show();\n\n\t\tconst editableElement = this._getSelectedEditableElement();\n\n\t\tthis.toolbarView.maxWidth = this._getToolbarMaxWidth( editableElement );\n\n\t\tthis.panelView.pin( {\n\t\t\ttarget: this.buttonView.element!,\n\t\t\tlimiter: editableElement\n\t\t} );\n\n\t\tif ( !wasVisible ) {\n\t\t\t( this.toolbarView.items.get( 0 ) as any ).focus();\n\t\t}\n\t}\n\n\t/**\n\t * Returns currently selected editable, based on the model selection.\n\t */\n\tprivate _getSelectedEditableElement(): HTMLElement {\n\t\tconst selectedModelRootName = this.editor.model.document.selection.getFirstRange()!.root.rootName!;\n\n\t\treturn this.editor.ui.getEditableElement( selectedModelRootName )!;\n\t}\n\n\t/**\n\t * Hides the {@link #toolbarView}.\n\t *\n\t * @param focusEditable When `true`, the editable will be focused after hiding the panel.\n\t */\n\tprivate _hidePanel( focusEditable?: boolean ) {\n\t\tthis.panelView.isVisible = false;\n\n\t\tif ( focusEditable ) {\n\t\t\tthis.editor.editing.view.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Attaches the {@link #buttonView} to the target block of content.\n\t *\n\t * @param targetElement Target element.\n\t */\n\tprivate _attachButtonToElement( targetElement: HTMLElement ) {\n\t\tconst contentStyles = window.getComputedStyle( targetElement );\n\n\t\tconst editableRect = new Rect( this._getSelectedEditableElement() );\n\t\tconst contentPaddingTop = parseInt( contentStyles.paddingTop, 10 );\n\t\t// When line height is not an integer then treat it as \"normal\".\n\t\t// MDN says that 'normal' == ~1.2 on desktop browsers.\n\t\tconst contentLineHeight = parseInt( contentStyles.lineHeight, 10 ) || parseInt( contentStyles.fontSize, 10 ) * 1.2;\n\n\t\tconst position = getOptimalPosition( {\n\t\t\telement: this.buttonView.element!,\n\t\t\ttarget: targetElement,\n\t\t\tpositions: [\n\t\t\t\t( contentRect, buttonRect ) => {\n\t\t\t\t\tlet left;\n\n\t\t\t\t\tif ( this.editor.locale.uiLanguageDirection === 'ltr' ) {\n\t\t\t\t\t\tleft = editableRect.left - buttonRect.width;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tleft = editableRect.right;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttop: contentRect.top + contentPaddingTop + ( contentLineHeight - buttonRect.height ) / 2,\n\t\t\t\t\t\tleft\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\n\t\tthis.buttonView.top = position.top;\n\t\tthis.buttonView.left = position.left;\n\t}\n\n\t/**\n\t * Creates a resize observer that observes selected editable and resizes the toolbar panel accordingly.\n\t */\n\tprivate _setupToolbarResize() {\n\t\tconst editableElement = this._getSelectedEditableElement();\n\n\t\t// Do this only if the automatic grouping is turned on.\n\t\tif ( !this._blockToolbarConfig.shouldNotGroupWhenFull ) {\n\t\t\t// If resize observer is attached to a different editable than currently selected editable, re-attach it.\n\t\t\tif ( this._resizeObserver && this._resizeObserver.element !== editableElement ) {\n\t\t\t\tthis._resizeObserver.destroy();\n\t\t\t\tthis._resizeObserver = null;\n\t\t\t}\n\n\t\t\tif ( !this._resizeObserver ) {\n\t\t\t\tthis._resizeObserver = new ResizeObserver( editableElement, () => {\n\t\t\t\t\tthis.toolbarView.maxWidth = this._getToolbarMaxWidth( editableElement );\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Gets the {@link #toolbarView} max-width, based on given `editableElement` width plus the distance between the farthest\n\t * edge of the {@link #buttonView} and the editable.\n\t *\n\t * @returns A maximum width that toolbar can have, in pixels.\n\t */\n\tprivate _getToolbarMaxWidth( editableElement: HTMLElement ) {\n\t\tconst editableRect = new Rect( editableElement );\n\t\tconst buttonRect = new Rect( this.buttonView.element! );\n\t\tconst isRTL = this.editor.locale.uiLanguageDirection === 'rtl';\n\t\tconst offset = isRTL ? ( buttonRect.left - editableRect.right ) + buttonRect.width : editableRect.left - buttonRect.left;\n\n\t\treturn toPx( editableRect.width + offset );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module editor-classic/classiceditorui\n */\n\nimport type { Editor, ElementApi } from 'ckeditor5/src/core';\nimport { EditorUI, normalizeToolbarConfig, type EditorUIReadyEvent } from 'ckeditor5/src/ui';\nimport {\n\tenablePlaceholder,\n\ttype ViewScrollToTheSelectionEvent\n} from 'ckeditor5/src/engine';\nimport { ElementReplacer, Rect, type EventInfo } from 'ckeditor5/src/utils';\nimport type ClassicEditorUIView from './classiceditoruiview';\n\n/**\n * The classic editor UI class.\n */\nexport default class ClassicEditorUI extends EditorUI {\n\t/**\n\t * The main (top–most) view of the editor UI.\n\t */\n\tpublic readonly view: ClassicEditorUIView;\n\n\t/**\n\t * A normalized `config.toolbar` object.\n\t */\n\tprivate readonly _toolbarConfig: ReturnType<typeof normalizeToolbarConfig>;\n\n\t/**\n\t * The element replacer instance used to hide the editor's source element.\n\t */\n\tprivate readonly _elementReplacer: ElementReplacer;\n\n\t/**\n\t * Creates an instance of the classic editor UI class.\n\t *\n\t * @param editor The editor instance.\n\t * @param view The view of the UI.\n\t */\n\tconstructor( editor: Editor, view: ClassicEditorUIView ) {\n\t\tsuper( editor );\n\n\t\tthis.view = view;\n\t\tthis._toolbarConfig = normalizeToolbarConfig( editor.config.get( 'toolbar' ) );\n\t\tthis._elementReplacer = new ElementReplacer();\n\n\t\tthis.listenTo<ViewScrollToTheSelectionEvent>(\n\t\t\teditor.editing.view, 'scrollToTheSelection', this._handleScrollToTheSelectionWithStickyPanel.bind( this ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override get element(): HTMLElement | null {\n\t\treturn this.view.element;\n\t}\n\n\t/**\n\t * Initializes the UI.\n\t *\n\t * @param replacementElement The DOM element that will be the source for the created editor.\n\t */\n\tpublic init( replacementElement: HTMLElement | null ): void {\n\t\tconst editor = this.editor;\n\t\tconst view = this.view;\n\t\tconst editingView = editor.editing.view;\n\t\tconst editable = view.editable;\n\t\tconst editingRoot = editingView.document.getRoot()!;\n\n\t\t// The editable UI and editing root should share the same name. Then name is used\n\t\t// to recognize the particular editable, for instance in ARIA attributes.\n\t\teditable.name = editingRoot.rootName;\n\n\t\tview.render();\n\n\t\t// The editable UI element in DOM is available for sure only after the editor UI view has been rendered.\n\t\t// But it can be available earlier if a DOM element has been passed to BalloonEditor.create().\n\t\tconst editableElement = editable.element!;\n\n\t\t// Register the editable UI view in the editor. A single editor instance can aggregate multiple\n\t\t// editable areas (roots) but the classic editor has only one.\n\t\tthis.setEditableElement( editable.name, editableElement );\n\n\t\t// Let the editable UI element respond to the changes in the global editor focus\n\t\t// tracker. It has been added to the same tracker a few lines above but, in reality, there are\n\t\t// many focusable areas in the editor, like balloons, toolbars or dropdowns and as long\n\t\t// as they have focus, the editable should act like it is focused too (although technically\n\t\t// it isn't), e.g. by setting the proper CSS class, visually announcing focus to the user.\n\t\t// Doing otherwise will result in editable focus styles disappearing, once e.g. the\n\t\t// toolbar gets focused.\n\t\tview.editable.bind( 'isFocused' ).to( this.focusTracker );\n\n\t\t// Bind the editable UI element to the editing view, making it an end– and entry–point\n\t\t// of the editor's engine. This is where the engine meets the UI.\n\t\teditingView.attachDomRoot( editableElement );\n\n\t\t// If an element containing the initial data of the editor was provided, replace it with\n\t\t// an editor instance's UI in DOM until the editor is destroyed. For instance, a <textarea>\n\t\t// can be such element.\n\t\tif ( replacementElement ) {\n\t\t\tthis._elementReplacer.replace( replacementElement, this.element as HTMLElement | undefined );\n\t\t}\n\n\t\tthis._initPlaceholder();\n\t\tthis._initToolbar();\n\t\tthis.fire<EditorUIReadyEvent>( 'ready' );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tconst view = this.view;\n\t\tconst editingView = this.editor.editing.view;\n\n\t\tthis._elementReplacer.restore();\n\t\teditingView.detachDomRoot( view.editable.name! );\n\t\tview.destroy();\n\t}\n\n\t/**\n\t * Initializes the editor toolbar.\n\t */\n\tprivate _initToolbar(): void {\n\t\tconst view = this.view;\n\n\t\t// Set–up the sticky panel with toolbar.\n\t\tview.stickyPanel.bind( 'isActive' ).to( this.focusTracker, 'isFocused' );\n\t\tview.stickyPanel.limiterElement = view.element;\n\t\tview.stickyPanel.bind( 'viewportTopOffset' ).to( this, 'viewportOffset', ( { top } ) => top || 0 );\n\n\t\tview.toolbar.fillFromConfig( this._toolbarConfig, this.componentFactory );\n\n\t\t// Register the toolbar so it becomes available for Alt+F10 and Esc navigation.\n\t\tthis.addToolbar( view.toolbar );\n\t}\n\n\t/**\n\t * Enable the placeholder text on the editing root.\n\t */\n\tprivate _initPlaceholder(): void {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst editingRoot = editingView.document.getRoot()!;\n\t\tconst sourceElement = ( editor as Editor & ElementApi ).sourceElement;\n\n\t\tlet placeholderText;\n\t\tconst placeholder = editor.config.get( 'placeholder' );\n\n\t\tif ( placeholder ) {\n\t\t\tplaceholderText = typeof placeholder === 'string' ? placeholder : placeholder[ this.view.editable.name! ];\n\t\t}\n\n\t\tif ( !placeholderText && sourceElement && sourceElement.tagName.toLowerCase() === 'textarea' ) {\n\t\t\tplaceholderText = sourceElement.getAttribute( 'placeholder' );\n\t\t}\n\n\t\tif ( placeholderText ) {\n\t\t\teditingRoot.placeholder = placeholderText;\n\t\t}\n\n\t\tenablePlaceholder( {\n\t\t\tview: editingView,\n\t\t\telement: editingRoot,\n\t\t\tisDirectHost: false,\n\t\t\tkeepOnFocus: true\n\t\t} );\n\t}\n\n\t/**\n\t * Provides an integration between the sticky toolbar and {@link module:utils/dom/scroll~scrollViewportToShowTarget}.\n\t * It allows the UI-agnostic engine method to consider the geometry of the\n\t * {@link module:editor-classic/classiceditoruiview~ClassicEditorUIView#stickyPanel} that pins to the\n\t * edge of the viewport and can obscure the user caret after scrolling the window.\n\t *\n\t * @param evt The `scrollToTheSelection` event info.\n\t * @param data The payload carried by the `scrollToTheSelection` event.\n\t * @param originalArgs The original arguments passed to `scrollViewportToShowTarget()` method (see implementation to learn more).\n\t */\n\tprivate _handleScrollToTheSelectionWithStickyPanel(\n\t\tevt: EventInfo<'scrollToTheSelection'>,\n\t\tdata: ViewScrollToTheSelectionEvent[ 'args' ][ 0 ],\n\t\toriginalArgs: ViewScrollToTheSelectionEvent[ 'args' ][ 1 ]\n\t): void {\n\t\tconst stickyPanel = this.view.stickyPanel;\n\n\t\tif ( stickyPanel.isSticky ) {\n\t\t\tconst stickyPanelHeight = new Rect( stickyPanel.element! ).height;\n\n\t\t\tdata.viewportOffset.top += stickyPanelHeight;\n\t\t} else {\n\t\t\tconst scrollViewportOnPanelGettingSticky = () => {\n\t\t\t\tthis.editor.editing.view.scrollToTheSelection( originalArgs );\n\t\t\t};\n\n\t\t\tthis.listenTo( stickyPanel, 'change:isSticky', scrollViewportOnPanelGettingSticky );\n\n\t\t\t// This works as a post-scroll-fixer because it's impossible predict whether the panel will be sticky after scrolling or not.\n\t\t\t// Listen for a short period of time only and if the toolbar does not become sticky very soon, cancel the listener.\n\t\t\tsetTimeout( () => {\n\t\t\t\tthis.stopListening( stickyPanel, 'change:isSticky', scrollViewportOnPanelGettingSticky );\n\t\t\t}, 20 );\n\t\t}\n\t}\n}\n\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./classiceditor.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module editor-classic/classiceditoruiview\n */\n\nimport { BoxedEditorUIView, InlineEditableUIView, StickyPanelView, ToolbarView } from 'ckeditor5/src/ui';\nimport type { Locale } from 'ckeditor5/src/utils';\nimport type { View } from 'ckeditor5/src/engine';\n\nimport '../theme/classiceditor.css';\n\n/**\n * Classic editor UI view. Uses an inline editable and a sticky toolbar, all\n * enclosed in a boxed UI view.\n */\nexport default class ClassicEditorUIView extends BoxedEditorUIView {\n\t/**\n\t * Sticky panel view instance. This is a parent view of a {@link #toolbar}\n\t * that makes toolbar sticky.\n\t */\n\tpublic readonly stickyPanel: StickyPanelView;\n\n\t/**\n\t * Toolbar view instance.\n\t */\n\tpublic readonly toolbar: ToolbarView;\n\n\t/**\n\t * Editable UI view.\n\t */\n\tpublic readonly editable: InlineEditableUIView;\n\n\t/**\n\t * Creates an instance of the classic editor UI view.\n\t *\n\t * @param locale The {@link module:core/editor/editor~Editor#locale} instance.\n\t * @param editingView The editing view instance this view is related to.\n\t * @param options Configuration options for the view instance.\n\t * @param options.shouldToolbarGroupWhenFull When set `true` enables automatic items grouping\n\t * in the main {@link module:editor-classic/classiceditoruiview~ClassicEditorUIView#toolbar toolbar}.\n\t * See {@link module:ui/toolbar/toolbarview~ToolbarOptions#shouldGroupWhenFull} to learn more.\n\t */\n\tconstructor(\n\t\tlocale: Locale,\n\t\teditingView: View,\n\t\toptions: {\n\t\t\tshouldToolbarGroupWhenFull?: boolean;\n\t\t} = {}\n\t) {\n\t\tsuper( locale );\n\n\t\tthis.stickyPanel = new StickyPanelView( locale );\n\n\t\tthis.toolbar = new ToolbarView( locale, {\n\t\t\tshouldGroupWhenFull: options.shouldToolbarGroupWhenFull\n\t\t} );\n\n\t\tthis.editable = new InlineEditableUIView( locale, editingView );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\t// Set toolbar as a child of a stickyPanel and makes toolbar sticky.\n\t\tthis.stickyPanel.content.add( this.toolbar );\n\n\t\tthis.top.add( this.stickyPanel );\n\t\tthis.main.add( this.editable );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module watchdog/watchdog\n */\n\n/* globals window */\n\n// eslint-disable-next-line ckeditor5-rules/no-cross-package-imports\nimport type { CKEditorError } from 'ckeditor5/src/utils';\nimport type { EditorWatchdogRestartEvent } from './editorwatchdog';\nimport type { ContextWatchdogItemErrorEvent, ContextWatchdogItemRestartEvent } from './contextwatchdog';\n\n/**\n * An abstract watchdog class that handles most of the error handling process and the state of the underlying component.\n *\n * See the {@glink features/watchdog Watchdog feature guide} to learn the rationale behind it and how to use it.\n *\n * @internal\n */\nexport default abstract class Watchdog {\n\t/**\n\t * An array of crashes saved as an object with the following properties:\n\t *\n\t * * `message`: `String`,\n\t * * `stack`: `String`,\n\t * * `date`: `Number`,\n\t * * `filename`: `String | undefined`,\n\t * * `lineno`: `Number | undefined`,\n\t * * `colno`: `Number | undefined`,\n\t */\n\tpublic readonly crashes: Array<{\n\t\tmessage: string;\n\t\tstack?: string;\n\t\tdate: number;\n\n\t\t// `evt.filename`, `evt.lineno` and `evt.colno` are available only in ErrorEvent events\n\t\tfilename?: string;\n\t\tlineno?: number;\n\t\tcolno?: number;\n\t}> = [];\n\n\t/**\n\t * Specifies the state of the item watched by the watchdog. The state can be one of the following values:\n\t *\n\t * * `initializing` – Before the first initialization, and after crashes, before the item is ready.\n\t * * `ready` – A state when the user can interact with the item.\n\t * * `crashed` – A state when an error occurs. It quickly changes to `initializing` or `crashedPermanently`\n\t * depending on how many and how frequent errors have been caught recently.\n\t * * `crashedPermanently` – A state when the watchdog stops reacting to errors and keeps the item it is watching crashed,\n\t * * `destroyed` – A state when the item is manually destroyed by the user after calling `watchdog.destroy()`.\n\t */\n\tpublic state: WatchdogState = 'initializing';\n\n\t/**\n\t * @see module:watchdog/watchdog~WatchdogConfig\n\t */\n\tprivate _crashNumberLimit: number;\n\n\t/**\n\t * Returns the result of the `Date.now()` call. It can be overridden in tests to mock time as some popular\n\t * approaches like `sinon.useFakeTimers()` do not work well with error handling.\n\t */\n\tprivate _now = Date.now;\n\n\t/**\n\t * @see module:watchdog/watchdog~WatchdogConfig\n\t */\n\tprivate _minimumNonErrorTimePeriod: number;\n\n\t/**\n\t * Checks if the event error comes from the underlying item and restarts the item.\n\t */\n\tprivate _boundErrorHandler: ( evt: ErrorEvent | PromiseRejectionEvent ) => void;\n\n\t/**\n\t * The method responsible for restarting the watched item.\n\t */\n\tprotected abstract _restart(): Promise<unknown>;\n\n\t/**\n\t * Traverses the error context and the watched item to find out whether the error should\n\t * be handled by the given item.\n\t *\n\t * @internal\n\t */\n\tpublic abstract _isErrorComingFromThisItem( error: CKEditorError ): boolean;\n\n\t/**\n\t * The watched item.\n\t *\n\t * @internal\n\t */\n\tpublic abstract get _item(): unknown;\n\n\t/**\n\t * A dictionary of event emitter listeners.\n\t */\n\tprivate _listeners: Record<string, Array<( ...args: any ) => void>>;\n\n\t/**\n\t * @param {module:watchdog/watchdog~WatchdogConfig} config The watchdog plugin configuration.\n\t */\n\tconstructor( config: WatchdogConfig ) {\n\t\tthis.crashes = [];\n\t\tthis._crashNumberLimit = typeof config.crashNumberLimit === 'number' ? config.crashNumberLimit : 3;\n\t\tthis._minimumNonErrorTimePeriod = typeof config.minimumNonErrorTimePeriod === 'number' ? config.minimumNonErrorTimePeriod : 5000;\n\n\t\tthis._boundErrorHandler = evt => {\n\t\t\t// `evt.error` is exposed by EventError while `evt.reason` is available in PromiseRejectionEvent.\n\t\t\tconst error = 'error' in evt ? evt.error : evt.reason;\n\n\t\t\t// Note that `evt.reason` might be everything that is in the promise rejection.\n\t\t\t// Similarly everything that is thrown lands in `evt.error`.\n\t\t\tif ( error instanceof Error ) {\n\t\t\t\tthis._handleError( error, evt );\n\t\t\t}\n\t\t};\n\n\t\tthis._listeners = {};\n\n\t\tif ( !( this as any )._restart ) {\n\t\t\tthrow new Error(\n\t\t\t\t'The Watchdog class was split into the abstract `Watchdog` class and the `EditorWatchdog` class. ' +\n\t\t\t\t'Please, use `EditorWatchdog` if you have used the `Watchdog` class previously.'\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Destroys the watchdog and releases the resources.\n\t */\n\tpublic destroy(): void {\n\t\tthis._stopErrorHandling();\n\n\t\tthis._listeners = {};\n\t}\n\n\t/**\n\t * Starts listening to a specific event name by registering a callback that will be executed\n\t * whenever an event with a given name fires.\n\t *\n\t * Note that this method differs from the CKEditor 5's default `EventEmitterMixin` implementation.\n\t *\n\t * @param eventName The event name.\n\t * @param callback A callback which will be added to event listeners.\n\t */\n\tpublic on<K extends keyof EventMap>( eventName: K, callback: EventCallback<K> ): void {\n\t\tif ( !this._listeners[ eventName ] ) {\n\t\t\tthis._listeners[ eventName ] = [];\n\t\t}\n\n\t\tthis._listeners[ eventName ].push( callback );\n\t}\n\n\t/**\n\t * Stops listening to the specified event name by removing the callback from event listeners.\n\t *\n\t * Note that this method differs from the CKEditor 5's default `EventEmitterMixin` implementation.\n\t *\n\t * @param eventName The event name.\n\t * @param callback A callback which will be removed from event listeners.\n\t */\n\tpublic off( eventName: keyof EventMap, callback: unknown ): void {\n\t\tthis._listeners[ eventName ] = this._listeners[ eventName ]\n\t\t\t.filter( cb => cb !== callback );\n\t}\n\n\t/**\n\t * Fires an event with a given event name and arguments.\n\t *\n\t * Note that this method differs from the CKEditor 5's default `EventEmitterMixin` implementation.\n\t */\n\tprotected _fire<K extends keyof EventMap>( eventName: K, ...args: EventArgs<K> ): void {\n\t\tconst callbacks = this._listeners[ eventName ] || [];\n\n\t\tfor ( const callback of callbacks ) {\n\t\t\tcallback.apply( this, [ null, ...args ] );\n\t\t}\n\t}\n\n\t/**\n\t * Starts error handling by attaching global error handlers.\n\t */\n\tprotected _startErrorHandling(): void {\n\t\twindow.addEventListener( 'error', this._boundErrorHandler );\n\t\twindow.addEventListener( 'unhandledrejection', this._boundErrorHandler );\n\t}\n\n\t/**\n\t * Stops error handling by detaching global error handlers.\n\t */\n\tprotected _stopErrorHandling(): void {\n\t\twindow.removeEventListener( 'error', this._boundErrorHandler );\n\t\twindow.removeEventListener( 'unhandledrejection', this._boundErrorHandler );\n\t}\n\n\t/**\n\t * Checks if an error comes from the watched item and restarts it.\n\t * It reacts to {@link module:utils/ckeditorerror~CKEditorError `CKEditorError` errors} only.\n\t *\n\t * @fires error\n\t * @param error Error.\n\t * @param evt An error event.\n\t */\n\tprivate _handleError( error: Error, evt: ErrorEvent | PromiseRejectionEvent ): void {\n\t\t// @if CK_DEBUG // const err = error as CKEditorError;\n\t\t// @if CK_DEBUG // if ( err.is && err.is( 'CKEditorError' ) && err.context === undefined ) {\n\t\t// @if CK_DEBUG // console.warn( 'The error is missing its context and Watchdog cannot restart the proper item.' );\n\t\t// @if CK_DEBUG // }\n\n\t\tif ( this._shouldReactToError( error ) ) {\n\t\t\tthis.crashes.push( {\n\t\t\t\tmessage: error.message,\n\t\t\t\tstack: error.stack,\n\n\t\t\t\t// `evt.filename`, `evt.lineno` and `evt.colno` are available only in ErrorEvent events\n\t\t\t\tfilename: evt instanceof ErrorEvent ? evt.filename : undefined,\n\t\t\t\tlineno: evt instanceof ErrorEvent ? evt.lineno : undefined,\n\t\t\t\tcolno: evt instanceof ErrorEvent ? evt.colno : undefined,\n\t\t\t\tdate: this._now()\n\t\t\t} );\n\n\t\t\tconst causesRestart = this._shouldRestart();\n\n\t\t\tthis.state = 'crashed';\n\t\t\tthis._fire( 'stateChange' );\n\t\t\tthis._fire( 'error', { error, causesRestart } );\n\n\t\t\tif ( causesRestart ) {\n\t\t\t\tthis._restart();\n\t\t\t} else {\n\t\t\t\tthis.state = 'crashedPermanently';\n\t\t\t\tthis._fire( 'stateChange' );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks whether an error should be handled by the watchdog.\n\t *\n\t * @param error An error that was caught by the error handling process.\n\t */\n\tprivate _shouldReactToError( error: Error ): boolean {\n\t\treturn (\n\t\t\t( error as any ).is &&\n\t\t\t( error as any ).is( 'CKEditorError' ) &&\n\t\t\t( error as CKEditorError ).context !== undefined &&\n\n\t\t\t// In some cases the watched item should not be restarted - e.g. during the item initialization.\n\t\t\t// That's why the `null` was introduced as a correct error context which does cause restarting.\n\t\t\t( error as CKEditorError ).context !== null &&\n\n\t\t\t// Do not react to errors if the watchdog is in states other than `ready`.\n\t\t\tthis.state === 'ready' &&\n\n\t\t\tthis._isErrorComingFromThisItem( error as CKEditorError )\n\t\t);\n\t}\n\n\t/**\n\t * Checks if the watchdog should restart the underlying item.\n\t */\n\tprivate _shouldRestart(): boolean {\n\t\tif ( this.crashes.length <= this._crashNumberLimit ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst lastErrorTime = this.crashes[ this.crashes.length - 1 ].date;\n\t\tconst firstMeaningfulErrorTime = this.crashes[ this.crashes.length - 1 - this._crashNumberLimit ].date;\n\n\t\tconst averageNonErrorTimePeriod = ( lastErrorTime - firstMeaningfulErrorTime ) / this._crashNumberLimit;\n\n\t\treturn averageNonErrorTimePeriod > this._minimumNonErrorTimePeriod;\n\t}\n}\n\n/**\n * Fired when a new {@link module:utils/ckeditorerror~CKEditorError `CKEditorError`} error connected to the watchdog instance occurs\n * and the watchdog will react to it.\n *\n * ```ts\n * watchdog.on( 'error', ( evt, { error, causesRestart } ) => {\n * \tconsole.log( 'An error occurred.' );\n * } );\n * ```\n *\n * @eventName ~Watchdog#error\n */\nexport type WatchdogErrorEvent = {\n\tname: 'error';\n\targs: [ WatchdogErrorEventData ];\n};\n\n/**\n * The `error` event data.\n */\nexport type WatchdogErrorEventData = {\n\terror: Error;\n\tcausesRestart: boolean;\n};\n\n/**\n * Fired when the watchdog state changed.\n *\n * @eventName ~Watchdog#stateChange\n */\nexport type WatchdogStateChangeEvent = {\n\tname: 'stateChange';\n\targs: [];\n};\n\n/**\n * The map of watchdog events.\n */\nexport interface EventMap {\n\tstateChange: WatchdogStateChangeEvent;\n\terror: WatchdogErrorEvent;\n\trestart: EditorWatchdogRestartEvent;\n\titemError: ContextWatchdogItemErrorEvent;\n\titemRestart: ContextWatchdogItemRestartEvent;\n}\n\n/**\n * Utility type that gets the arguments type for the given event.\n */\nexport type EventArgs<K extends keyof EventMap> = EventMap[ K ][ 'args' ];\n\n/**\n * Utility type that gets the callback type for the given event.\n */\nexport type EventCallback<K extends keyof EventMap> = ( evt: null, ...args: EventArgs<K> ) => void;\n\n/**\n * The watchdog plugin configuration.\n */\nexport interface WatchdogConfig {\n\n\t/**\n\t * A threshold specifying the number of watched item crashes\n\t * when the watchdog stops restarting the item in case of errors.\n\t * After this limit is reached and the time between the last errors is shorter than `minimumNonErrorTimePeriod`,\n\t * the watchdog changes its state to `crashedPermanently` and it stops restarting the item. This prevents an infinite restart loop.\n\t *\n\t * @default 3\n\t */\n\tcrashNumberLimit?: number;\n\n\t/**\n\t * An average number of milliseconds between the last watched item errors\n\t * (defaults to 5000). When the period of time between errors is lower than that and the `crashNumberLimit` is also reached,\n\t * the watchdog changes its state to `crashedPermanently` and it stops restarting the item. This prevents an infinite restart loop.\n\t *\n\t * @default 5000\n\t */\n\tminimumNonErrorTimePeriod?: number;\n\n\t/**\n\t * A minimum number of milliseconds between saving the editor data internally (defaults to 5000).\n\t * Note that for large documents this might impact the editor performance.\n\t *\n\t * @default 5000\n\t */\n\tsaveInterval?: number;\n}\n\n/**\n * Specifies the state of the item watched by the watchdog.\n */\nexport type WatchdogState = 'initializing' | 'ready' | 'crashed' | 'crashedPermanently' | 'destroyed';\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module watchdog/utils/getsubnodes\n */\n\n/* globals EventTarget, Event */\n\nexport default function getSubNodes( head: unknown, excludedProperties = new Set() ): Set<unknown> {\n\tconst nodes = [ head ];\n\n\t// @if CK_DEBUG_WATCHDOG // const prevNodeMap = new Map();\n\n\t// Nodes are stored to prevent infinite looping.\n\tconst subNodes = new Set();\n\tlet nodeIndex = 0;\n\n\twhile ( nodes.length > nodeIndex ) {\n\t\t// Incrementing the iterator is much faster than changing size of the array with Array.prototype.shift().\n\t\tconst node = nodes[ nodeIndex++ ];\n\n\t\tif ( subNodes.has( node ) || !shouldNodeBeIncluded( node ) || excludedProperties.has( node ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tsubNodes.add( node );\n\n\t\t// Handle arrays, maps, sets, custom collections that implements `[ Symbol.iterator ]()`, etc.\n\t\tif ( Symbol.iterator in node ) {\n\t\t\t// The custom editor iterators might cause some problems if the editor is crashed.\n\t\t\ttry {\n\t\t\t\tfor ( const n of node as Iterable<unknown> ) {\n\t\t\t\t\tnodes.push( n );\n\n\t\t\t\t\t// @if CK_DEBUG_WATCHDOG // if ( !prevNodeMap.has( n ) ) {\n\t\t\t\t\t// @if CK_DEBUG_WATCHDOG // \tprevNodeMap.set( n, node );\n\t\t\t\t\t// @if CK_DEBUG_WATCHDOG // }\n\t\t\t\t}\n\t\t\t} catch ( err ) {\n\t\t\t\t// Do not log errors for broken structures\n\t\t\t\t// since we are in the error handling process already.\n\t\t\t\t// eslint-disable-line no-empty\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( const key in node ) {\n\t\t\t\t// We share a reference via the protobuf library within the editors,\n\t\t\t\t// hence the shared value should be skipped. Although, it's not a perfect\n\t\t\t\t// solution since new places like that might occur in the future.\n\t\t\t\tif ( key === 'defaultValue' ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tnodes.push( node[ key ] );\n\n\t\t\t\t// @if CK_DEBUG_WATCHDOG // if ( !prevNodeMap.has( node[ key ] ) ) {\n\t\t\t\t// @if CK_DEBUG_WATCHDOG // \tprevNodeMap.set( node[ key ], node );\n\t\t\t\t// @if CK_DEBUG_WATCHDOG // }\n\t\t\t}\n\t\t}\n\t}\n\n\t// @if CK_DEBUG_WATCHDOG // return { subNodes, prevNodeMap } as any;\n\n\treturn subNodes;\n}\n\nfunction shouldNodeBeIncluded( node: unknown ): node is Record<string, unknown> | Iterable<unknown> {\n\tconst type = Object.prototype.toString.call( node );\n\tconst typeOfNode = typeof node;\n\n\treturn !(\n\t\ttypeOfNode === 'number' ||\n\t\ttypeOfNode === 'boolean' ||\n\t\ttypeOfNode === 'string' ||\n\t\ttypeOfNode === 'symbol' ||\n\t\ttypeOfNode === 'function' ||\n\t\ttype === '[object Date]' ||\n\t\ttype === '[object RegExp]' ||\n\t\ttype === '[object Module]' ||\n\n\t\tnode === undefined ||\n\t\tnode === null ||\n\n\t\t// This flag is meant to exclude singletons shared across editor instances. So when an error is thrown in one editor,\n\t\t// the other editors connected through the reference to the same singleton are not restarted. This is a temporary workaround\n\t\t// until a better solution is found.\n\t\t// More in https://github.com/ckeditor/ckeditor5/issues/12292.\n\t\t( node as any )._watchdogExcluded ||\n\n\t\t// Skip native DOM objects, e.g. Window, nodes, events, etc.\n\t\tnode instanceof EventTarget ||\n\t\tnode instanceof Event\n\t);\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module watchdog/utils/areconnectedthroughproperties\n */\n\n/* globals console */\n\nimport getSubNodes from './getsubnodes';\n\n/**\n * Traverses both structures to find out whether there is a reference that is shared between both structures.\n */\nexport default function areConnectedThroughProperties( target1: unknown, target2: unknown, excludedNodes = new Set() ): boolean {\n\tif ( target1 === target2 && isObject( target1 ) ) {\n\t\treturn true;\n\t}\n\n\t// @if CK_DEBUG_WATCHDOG // return checkConnectionBetweenProps( target1, target2, excludedNodes );\n\n\tconst subNodes1 = getSubNodes( target1, excludedNodes );\n\tconst subNodes2 = getSubNodes( target2, excludedNodes );\n\n\tfor ( const node of subNodes1 ) {\n\t\tif ( subNodes2.has( node ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/* istanbul ignore next -- @preserve */\n// eslint-disable-next-line\nfunction checkConnectionBetweenProps( target1: unknown, target2: unknown, excludedNodes: any ) {\n\tconst { subNodes: subNodes1, prevNodeMap: prevNodeMap1 } = getSubNodes( target1, excludedNodes.subNodes ) as any;\n\tconst { subNodes: subNodes2, prevNodeMap: prevNodeMap2 } = getSubNodes( target2, excludedNodes.subNodes ) as any;\n\n\tfor ( const sharedNode of subNodes1 ) {\n\t\tif ( subNodes2.has( sharedNode ) ) {\n\t\t\tconst connection = [];\n\n\t\t\tconnection.push( sharedNode );\n\n\t\t\tlet node = prevNodeMap1.get( sharedNode );\n\n\t\t\twhile ( node && node !== target1 ) {\n\t\t\t\tconnection.push( node );\n\t\t\t\tnode = prevNodeMap1.get( node );\n\t\t\t}\n\n\t\t\tnode = prevNodeMap2.get( sharedNode );\n\n\t\t\twhile ( node && node !== target2 ) {\n\t\t\t\tconnection.unshift( node );\n\t\t\t\tnode = prevNodeMap2.get( node );\n\t\t\t}\n\n\t\t\tconsole.log( '--------' );\n\t\t\tconsole.log( { target1 } );\n\t\t\tconsole.log( { sharedNode } );\n\t\t\tconsole.log( { target2 } );\n\t\t\tconsole.log( { connection } );\n\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction isObject( structure: unknown ): boolean {\n\treturn typeof structure === 'object' && structure !== null;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module watchdog/editorwatchdog\n */\n\n/* globals console */\n\n// eslint-disable-next-line ckeditor5-rules/no-cross-package-imports\nimport type { CKEditorError } from 'ckeditor5/src/utils';\n\n// eslint-disable-next-line ckeditor5-rules/no-cross-package-imports\nimport type { Editor, EditorConfig, Context, EditorReadyEvent } from 'ckeditor5/src/core';\n\n// eslint-disable-next-line ckeditor5-rules/no-cross-package-imports\nimport type { RootAttributes } from '@ckeditor/ckeditor5-editor-multi-root';\n\nimport areConnectedThroughProperties from './utils/areconnectedthroughproperties';\nimport Watchdog, { type WatchdogConfig } from './watchdog';\n\nimport { throttle, cloneDeepWith, isElement, type DebouncedFunc } from 'lodash-es';\n\n// eslint-disable-next-line ckeditor5-rules/no-cross-package-imports\nimport type { Node, Text, Element, Writer } from 'ckeditor5/src/engine';\n\n/**\n * A watchdog for CKEditor 5 editors.\n *\n * See the {@glink features/watchdog Watchdog feature guide} to learn the rationale behind it and\n * how to use it.\n */\nexport default class EditorWatchdog<TEditor extends Editor = Editor> extends Watchdog {\n\t/**\n\t * The current editor instance.\n\t */\n\tprivate _editor: TEditor | null = null;\n\n\t/**\n\t * Throttled save method. The `save()` method is called the specified `saveInterval` after `throttledSave()` is called,\n\t * unless a new action happens in the meantime.\n\t */\n\tprivate _throttledSave: DebouncedFunc<() => void>;\n\n\t/**\n\t * The latest saved editor data represented as a root name -> root data object.\n\t */\n\tprivate _data?: EditorData;\n\n\t/**\n\t * The last document version.\n\t */\n\tprivate _lastDocumentVersion?: number;\n\n\t/**\n\t * The editor source element or data.\n\t */\n\tprivate _elementOrData?: HTMLElement | string | Record<string, string> | Record<string, HTMLElement>;\n\n\t/**\n\t * Specifies whether the editor was initialized using document data (`true`) or HTML elements (`false`).\n\t */\n\tprivate _initUsingData = true;\n\n\t/**\n\t * The latest record of the editor editable elements. Used to restart the editor.\n\t */\n\tprivate _editables: Record<string, HTMLElement> = {};\n\n\t/**\n\t * The editor configuration.\n\t */\n\tprivate _config?: EditorConfig;\n\n\t/**\n\t * The creation method.\n\t *\n\t * @see #setCreator\n\t */\n\tdeclare protected _creator: EditorCreatorFunction<TEditor>;\n\n\t/**\n\t * The destruction method.\n\t *\n\t * @see #setDestructor\n\t */\n\tdeclare protected _destructor: ( editor: Editor ) => Promise<unknown>;\n\n\tprivate _excludedProps?: Set<unknown>;\n\n\t/**\n\t * @param Editor The editor class.\n\t * @param watchdogConfig The watchdog plugin configuration.\n\t */\n\tconstructor( Editor: { create( ...args: any ): Promise<TEditor> } | null, watchdogConfig: WatchdogConfig = {} ) {\n\t\tsuper( watchdogConfig );\n\n\t\t// this._editorClass = Editor;\n\n\t\tthis._throttledSave = throttle(\n\t\t\tthis._save.bind( this ),\n\t\t\ttypeof watchdogConfig.saveInterval === 'number' ? watchdogConfig.saveInterval : 5000\n\t\t);\n\n\t\t// Set default creator and destructor functions:\n\t\tif ( Editor ) {\n\t\t\tthis._creator = ( ( elementOrData, config ) => Editor.create( elementOrData, config ) );\n\t\t}\n\n\t\tthis._destructor = editor => editor.destroy();\n\t}\n\n\t/**\n\t * The current editor instance.\n\t */\n\tpublic get editor(): TEditor | null {\n\t\treturn this._editor;\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic get _item(): TEditor | null {\n\t\treturn this._editor;\n\t}\n\n\t/**\n\t * Sets the function that is responsible for the editor creation.\n\t * It expects a function that should return a promise.\n\t *\n\t * ```ts\n\t * watchdog.setCreator( ( element, config ) => ClassicEditor.create( element, config ) );\n\t * ```\n\t */\n\tpublic setCreator( creator: EditorCreatorFunction<TEditor> ): void {\n\t\tthis._creator = creator;\n\t}\n\n\t/**\n\t * Sets the function that is responsible for the editor destruction.\n\t * Overrides the default destruction function, which destroys only the editor instance.\n\t * It expects a function that should return a promise or `undefined`.\n\t *\n\t * ```ts\n\t * watchdog.setDestructor( editor => {\n\t * \t// Do something before the editor is destroyed.\n\t *\n\t * \treturn editor\n\t * \t\t.destroy()\n\t * \t\t.then( () => {\n\t * \t\t\t// Do something after the editor is destroyed.\n\t * \t\t} );\n\t * } );\n\t * ```\n\t */\n\tpublic setDestructor( destructor: ( editor: Editor ) => Promise<unknown> ): void {\n\t\tthis._destructor = destructor;\n\t}\n\n\t/**\n\t * Restarts the editor instance. This method is called whenever an editor error occurs. It fires the `restart` event and changes\n\t * the state to `initializing`.\n\t *\n\t * @fires restart\n\t */\n\tprotected override _restart(): Promise<unknown> {\n\t\treturn Promise.resolve()\n\t\t\t.then( () => {\n\t\t\t\tthis.state = 'initializing';\n\t\t\t\tthis._fire( 'stateChange' );\n\n\t\t\t\treturn this._destroy();\n\t\t\t} )\n\t\t\t.catch( err => {\n\t\t\t\tconsole.error( 'An error happened during the editor destroying.', err );\n\t\t\t} )\n\t\t\t.then( () => {\n\t\t\t\t// Pre-process some data from the original editor config.\n\t\t\t\t// Our goal here is to make sure that the restarted editor will be reinitialized with correct set of roots.\n\t\t\t\t// We are not interested in any data set in config or in `.create()` first parameter. It will be replaced anyway.\n\t\t\t\t// But we need to set them correctly to make sure that proper roots are created.\n\t\t\t\t//\n\t\t\t\t// Since a different set of roots will be created, `lazyRoots` and `rootsAttributes` properties must be managed too.\n\n\t\t\t\t// Keys are root names, values are ''. Used when the editor was initialized by setting the first parameter to document data.\n\t\t\t\tconst existingRoots: Record<string, string> = {};\n\t\t\t\t// Keeps lazy roots. They may be different when compared to initial config if some of the roots were loaded.\n\t\t\t\tconst lazyRoots: Array<string> = [];\n\t\t\t\t// Roots attributes from the old config. Will be referred when setting new attributes.\n\t\t\t\tconst oldRootsAttributes: Record<string, RootAttributes> = this._config!.rootsAttributes || {};\n\t\t\t\t// New attributes to be set. Is filled only for roots that still exist in the document.\n\t\t\t\tconst rootsAttributes: Record<string, RootAttributes> = {};\n\n\t\t\t\t// Traverse through the roots saved when the editor crashed and set up the discussed values.\n\t\t\t\tfor ( const [ rootName, rootData ] of Object.entries( this._data!.roots ) ) {\n\t\t\t\t\tif ( rootData.isLoaded ) {\n\t\t\t\t\t\texistingRoots[ rootName ] = '';\n\t\t\t\t\t\trootsAttributes[ rootName ] = oldRootsAttributes[ rootName ] || {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlazyRoots.push( rootName );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst updatedConfig: EditorConfig = {\n\t\t\t\t\t...this._config,\n\t\t\t\t\textraPlugins: this._config!.extraPlugins || [],\n\t\t\t\t\tlazyRoots,\n\t\t\t\t\trootsAttributes,\n\t\t\t\t\t_watchdogInitialData: this._data\n\t\t\t\t};\n\n\t\t\t\t// Delete `initialData` as it is not needed. Data will be set by the watchdog based on `_watchdogInitialData`.\n\t\t\t\t// First parameter of the editor `.create()` will be used to set up initial roots.\n\t\t\t\tdelete updatedConfig.initialData;\n\n\t\t\t\tupdatedConfig.extraPlugins!.push( EditorWatchdogInitPlugin as any );\n\n\t\t\t\tif ( this._initUsingData ) {\n\t\t\t\t\treturn this.create( existingRoots, updatedConfig, updatedConfig.context );\n\t\t\t\t} else {\n\t\t\t\t\t// Set correct editables to make sure that proper roots are created and linked with DOM elements.\n\t\t\t\t\t// No need to set initial data, as it would be discarded anyway.\n\t\t\t\t\t//\n\t\t\t\t\t// If one element was initially set in `elementOrData`, then use that original element to restart the editor.\n\t\t\t\t\t// This is for compatibility purposes with single-root editor types.\n\t\t\t\t\tif ( isElement( this._elementOrData ) ) {\n\t\t\t\t\t\treturn this.create( this._elementOrData, updatedConfig, updatedConfig.context );\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn this.create( this._editables, updatedConfig, updatedConfig.context );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.then( () => {\n\t\t\t\tthis._fire( 'restart' );\n\t\t\t} );\n\t}\n\n\t/**\n\t * Creates the editor instance and keeps it running, using the defined creator and destructor.\n\t *\n\t * @param elementOrData The editor source element or the editor data.\n\t * @param config The editor configuration.\n\t * @param context A context for the editor.\n\t */\n\tpublic create(\n\t\telementOrData: HTMLElement | string | Record<string, string> | Record<string, HTMLElement> = this._elementOrData!,\n\t\tconfig: EditorConfig = this._config!,\n\t\tcontext?: Context\n\t): Promise<unknown> {\n\t\treturn Promise.resolve()\n\t\t\t.then( () => {\n\t\t\t\tsuper._startErrorHandling();\n\n\t\t\t\tthis._elementOrData = elementOrData;\n\n\t\t\t\t// Use document data in the first parameter of the editor `.create()` call only if it was used like this originally.\n\t\t\t\t// Use document data if a string or object with strings was passed.\n\t\t\t\tthis._initUsingData = typeof elementOrData == 'string' ||\n\t\t\t\t\t( Object.keys( elementOrData ).length > 0 && typeof Object.values( elementOrData )[ 0 ] == 'string' );\n\n\t\t\t\t// Clone configuration because it might be shared within multiple watchdog instances. Otherwise,\n\t\t\t\t// when an error occurs in one of these editors, the watchdog will restart all of them.\n\t\t\t\tthis._config = this._cloneEditorConfiguration( config ) || {};\n\n\t\t\t\tthis._config!.context = context;\n\n\t\t\t\treturn this._creator( elementOrData, this._config! );\n\t\t\t} )\n\t\t\t.then( editor => {\n\t\t\t\tthis._editor = editor;\n\n\t\t\t\teditor.model.document.on( 'change:data', this._throttledSave );\n\n\t\t\t\tthis._lastDocumentVersion = editor.model.document.version;\n\t\t\t\tthis._data = this._getData();\n\n\t\t\t\tif ( !this._initUsingData ) {\n\t\t\t\t\tthis._editables = this._getEditables();\n\t\t\t\t}\n\n\t\t\t\tthis.state = 'ready';\n\t\t\t\tthis._fire( 'stateChange' );\n\t\t\t} );\n\t}\n\n\t/**\n\t * Destroys the watchdog and the current editor instance. It fires the callback\n\t * registered in {@link #setDestructor `setDestructor()`} and uses it to destroy the editor instance.\n\t * It also sets the state to `destroyed`.\n\t */\n\tpublic override destroy(): Promise<unknown> {\n\t\treturn Promise.resolve()\n\t\t\t.then( () => {\n\t\t\t\tthis.state = 'destroyed';\n\t\t\t\tthis._fire( 'stateChange' );\n\n\t\t\t\tsuper.destroy();\n\n\t\t\t\treturn this._destroy();\n\t\t\t} );\n\t}\n\n\tprivate _destroy(): Promise<unknown> {\n\t\treturn Promise.resolve()\n\t\t\t.then( () => {\n\t\t\t\tthis._stopErrorHandling();\n\n\t\t\t\tthis._throttledSave.cancel();\n\n\t\t\t\tconst editor = this._editor;\n\n\t\t\t\tthis._editor = null;\n\n\t\t\t\t// Remove the `change:data` listener before destroying the editor.\n\t\t\t\t// Incorrectly written plugins may trigger firing `change:data` events during the editor destruction phase\n\t\t\t\t// causing the watchdog to call `editor.getData()` when some parts of editor are already destroyed.\n\t\t\t\teditor!.model.document.off( 'change:data', this._throttledSave );\n\n\t\t\t\treturn this._destructor( editor! );\n\t\t\t} );\n\t}\n\n\t/**\n\t * Saves the editor data, so it can be restored after the crash even if the data cannot be fetched at\n\t * the moment of the crash.\n\t */\n\tprivate _save(): void {\n\t\tconst version = this._editor!.model.document.version;\n\n\t\ttry {\n\t\t\tthis._data = this._getData();\n\n\t\t\tif ( !this._initUsingData ) {\n\t\t\t\tthis._editables = this._getEditables();\n\t\t\t}\n\n\t\t\tthis._lastDocumentVersion = version;\n\t\t} catch ( err ) {\n\t\t\tconsole.error(\n\t\t\t\terr,\n\t\t\t\t'An error happened during restoring editor data. ' +\n\t\t\t\t'Editor will be restored from the previously saved data.'\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\tpublic _setExcludedProperties( props: Set<unknown> ): void {\n\t\tthis._excludedProps = props;\n\t}\n\n\t/**\n\t * Gets all data that is required to reinitialize editor instance.\n\t */\n\tprivate _getData(): EditorData {\n\t\tconst editor = this._editor!;\n\t\tconst roots = editor.model.document.roots.filter( root => root.isAttached() && root.rootName != '$graveyard' );\n\n\t\tconst { plugins } = editor;\n\t\t// `as any` to avoid linking from external private repo.\n\t\tconst commentsRepository = plugins.has( 'CommentsRepository' ) && plugins.get( 'CommentsRepository' ) as any;\n\t\tconst trackChanges = plugins.has( 'TrackChanges' ) && plugins.get( 'TrackChanges' ) as any;\n\n\t\tconst data: EditorData = {\n\t\t\troots: {},\n\t\t\tmarkers: {},\n\t\t\tcommentThreads: JSON.stringify( [] ),\n\t\t\tsuggestions: JSON.stringify( [] )\n\t\t};\n\n\t\troots.forEach( root => {\n\t\t\tdata.roots[ root.rootName ] = {\n\t\t\t\tcontent: JSON.stringify( Array.from( root.getChildren() ) ),\n\t\t\t\tattributes: JSON.stringify( Array.from( root.getAttributes() ) ),\n\t\t\t\tisLoaded: root._isLoaded\n\t\t\t};\n\t\t} );\n\n\t\tfor ( const marker of editor.model.markers ) {\n\t\t\tif ( !marker._affectsData ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tdata.markers[ marker.name ] = {\n\t\t\t\trangeJSON: marker.getRange().toJSON() as any,\n\t\t\t\tusingOperation: marker._managedUsingOperations,\n\t\t\t\taffectsData: marker._affectsData\n\t\t\t};\n\t\t}\n\n\t\tif ( commentsRepository ) {\n\t\t\tdata.commentThreads = JSON.stringify( commentsRepository.getCommentThreads( { toJSON: true, skipNotAttached: true } ) );\n\t\t}\n\n\t\tif ( trackChanges ) {\n\t\t\tdata.suggestions = JSON.stringify( trackChanges.getSuggestions( { toJSON: true, skipNotAttached: true } ) );\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t/**\n\t * For each attached model root, returns its HTML editable element (if available).\n\t */\n\tprivate _getEditables(): Record<string, HTMLElement> {\n\t\tconst editables: Record<string, HTMLElement> = {};\n\n\t\tfor ( const rootName of this.editor!.model.document.getRootNames() ) {\n\t\t\tconst editable = this.editor!.ui.getEditableElement( rootName );\n\n\t\t\tif ( editable ) {\n\t\t\t\teditables[ rootName ] = editable;\n\t\t\t}\n\t\t}\n\n\t\treturn editables;\n\t}\n\n\t/**\n\t * Traverses the error context and the current editor to find out whether these structures are connected\n\t * to each other via properties.\n\t *\n\t * @internal\n\t */\n\tpublic _isErrorComingFromThisItem( error: CKEditorError ): boolean {\n\t\treturn areConnectedThroughProperties( this._editor, error.context, this._excludedProps );\n\t}\n\n\t/**\n\t * Clones the editor configuration.\n\t */\n\tprivate _cloneEditorConfiguration( config: EditorConfig ): EditorConfig {\n\t\treturn cloneDeepWith( config, ( value, key ) => {\n\t\t\t// Leave DOM references.\n\t\t\tif ( isElement( value ) ) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tif ( key === 'context' ) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t} );\n\t}\n}\n\n/**\n * Internal plugin that is used to stop the default editor initialization and restoring the editor state\n * based on the `editor.config._watchdogInitialData` data.\n */\nclass EditorWatchdogInitPlugin {\n\tpublic editor: Editor;\n\n\tprivate _data: EditorData;\n\n\tconstructor( editor: Editor ) {\n\t\tthis.editor = editor;\n\n\t\tthis._data = editor.config.get( '_watchdogInitialData' )!;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\t// Stops the default editor initialization and use the saved data to restore the editor state.\n\t\t// Some of data could not be initialize as a config properties. It is important to keep the data\n\t\t// in the same form as it was before the restarting.\n\t\tthis.editor.data.on( 'init', evt => {\n\t\t\tevt.stop();\n\n\t\t\tthis.editor.model.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\tthis._restoreCollaborationData();\n\t\t\t\tthis._restoreEditorData( writer );\n\t\t\t} );\n\n\t\t\tthis.editor.data.fire<EditorReadyEvent>( 'ready' );\n\n\t\t\t// Keep priority `'high' - 1` to be sure that RTC initialization will be first.\n\t\t}, { priority: 1000 - 1 } );\n\t}\n\n\t/**\n\t * Creates a model node (element or text) based on provided JSON.\n\t */\n\tprivate _createNode( writer: Writer, jsonNode: any ): Text | Element {\n\t\tif ( 'name' in jsonNode ) {\n\t\t\t// If child has name property, it is an Element.\n\t\t\tconst element = writer.createElement( jsonNode.name, jsonNode.attributes );\n\n\t\t\tif ( jsonNode.children ) {\n\t\t\t\tfor ( const child of jsonNode.children ) {\n\t\t\t\t\telement._appendChild( this._createNode( writer, child ) );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn element;\n\t\t} else {\n\t\t\t// Otherwise, it is a Text node.\n\t\t\treturn writer.createText( jsonNode.data, jsonNode.attributes );\n\t\t}\n\t}\n\n\t/**\n\t * Restores the editor by setting the document data, roots attributes and markers.\n\t */\n\tprivate _restoreEditorData( writer: Writer ): void {\n\t\tconst editor = this.editor!;\n\n\t\tObject.entries( this._data!.roots ).forEach( ( [ rootName, { content, attributes } ] ) => {\n\t\t\tconst parsedNodes: Array<Node | Element> = JSON.parse( content );\n\t\t\tconst parsedAttributes: Array<[ string, unknown ]> = JSON.parse( attributes );\n\n\t\t\tconst rootElement = editor.model.document.getRoot( rootName )!;\n\n\t\t\tfor ( const [ key, value ] of parsedAttributes ) {\n\t\t\t\twriter.setAttribute( key, value, rootElement );\n\t\t\t}\n\n\t\t\tfor ( const child of parsedNodes ) {\n\t\t\t\tconst node = this._createNode( writer, child );\n\n\t\t\t\twriter.insert( node, rootElement, 'end' );\n\t\t\t}\n\t\t} );\n\n\t\tObject.entries( this._data!.markers ).forEach( ( [ markerName, markerOptions ] ) => {\n\t\t\tconst { document } = editor.model;\n\t\t\tconst {\n\t\t\t\trangeJSON: { start, end },\n\t\t\t\t...options\n\t\t\t} = markerOptions;\n\n\t\t\tconst root = document.getRoot( start.root )!;\n\t\t\tconst startPosition = writer.createPositionFromPath( root, start.path, start.stickiness );\n\t\t\tconst endPosition = writer.createPositionFromPath( root, end.path, end.stickiness );\n\n\t\t\tconst range = writer.createRange( startPosition, endPosition );\n\n\t\t\twriter.addMarker( markerName, {\n\t\t\t\trange,\n\t\t\t\t...options\n\t\t\t} );\n\t\t} );\n\t}\n\n\t/**\n\t * Restores the editor collaboration data - comment threads and suggestions.\n\t */\n\tprivate _restoreCollaborationData() {\n\t\t// `as any` to avoid linking from external private repo.\n\t\tconst parsedCommentThreads: Array<any> = JSON.parse( this._data.commentThreads );\n\t\tconst parsedSuggestions: Array<any> = JSON.parse( this._data.suggestions );\n\n\t\tparsedCommentThreads.forEach( commentThreadData => {\n\t\t\tconst channelId = this.editor.config.get( 'collaboration.channelId' )!;\n\t\t\tconst commentsRepository = this.editor!.plugins.get( 'CommentsRepository' ) as any;\n\n\t\t\tif ( commentsRepository.hasCommentThread( commentThreadData.threadId ) ) {\n\t\t\t\tconst commentThread = commentsRepository.getCommentThread( commentThreadData.threadId )!;\n\n\t\t\t\tcommentThread.remove();\n\t\t\t}\n\n\t\t\tcommentsRepository.addCommentThread( { channelId, ...commentThreadData } );\n\t\t} );\n\n\t\tparsedSuggestions.forEach( suggestionData => {\n\t\t\tconst trackChangesEditing = this.editor!.plugins.get( 'TrackChangesEditing' ) as any;\n\n\t\t\tif ( trackChangesEditing.hasSuggestion( suggestionData.id ) ) {\n\t\t\t\tconst suggestion = trackChangesEditing.getSuggestion( suggestionData.id );\n\n\t\t\t\tsuggestion.attributes = suggestionData.attributes;\n\t\t\t} else {\n\t\t\t\ttrackChangesEditing.addSuggestionData( suggestionData );\n\t\t\t}\n\t\t} );\n\t}\n}\n\nexport type EditorData = {\n\troots: Record<string, {\n\t\tcontent: string;\n\t\tattributes: string;\n\t\tisLoaded: boolean;\n\t}>;\n\tmarkers: Record<string, {\n\t\trangeJSON: { start: any; end: any };\n\t\tusingOperation: boolean;\n\t\taffectsData: boolean;\n\t}>;\n\tcommentThreads: string;\n\tsuggestions: string;\n};\n\n/**\n * Fired after the watchdog restarts the error in case of a crash.\n *\n * @eventName ~EditorWatchdog#restart\n */\nexport type EditorWatchdogRestartEvent = {\n\tname: 'restart';\n\targs: [];\n\treturn: undefined;\n};\n\nexport type EditorCreatorFunction<TEditor = Editor> = (\n\telementOrData: HTMLElement | string | Record<string, string> | Record<string, HTMLElement>,\n\tconfig: EditorConfig\n) => Promise<TEditor>;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module watchdog/contextwatchdog\n */\n\n/* globals console */\n\n// eslint-disable-next-line ckeditor5-rules/no-cross-package-imports\nimport type {\n\tContext,\n\tEditor,\n\tEditorConfig,\n\tContextConfig\n} from 'ckeditor5/src/core';\n\n// eslint-disable-next-line ckeditor5-rules/no-cross-package-imports\nimport type {\n\tArrayOrItem,\n\tCKEditorError\n} from 'ckeditor5/src/utils';\n\nimport Watchdog, { type WatchdogConfig, type WatchdogState } from './watchdog';\nimport EditorWatchdog, { type EditorCreatorFunction } from './editorwatchdog';\nimport areConnectedThroughProperties from './utils/areconnectedthroughproperties';\nimport getSubNodes from './utils/getsubnodes';\n\nconst mainQueueId = Symbol( 'MainQueueId' );\n\n/**\n * A watchdog for the {@link module:core/context~Context} class.\n *\n * See the {@glink features/watchdog Watchdog feature guide} to learn the rationale behind it and\n * how to use it.\n */\nexport default class ContextWatchdog<TContext extends Context = Context> extends Watchdog {\n\t/**\n\t * A map of internal watchdogs for added items.\n\t */\n\tprotected _watchdogs = new Map<string, EditorWatchdog>();\n\n\t/**\n\t * The watchdog configuration.\n\t */\n\tprivate readonly _watchdogConfig: WatchdogConfig;\n\n\t/**\n\t * The current context instance.\n\t */\n\tprivate _context: TContext | null = null;\n\n\t/**\n\t * Context properties (nodes/references) that are gathered during the initial context creation\n\t * and are used to distinguish the origin of an error.\n\t */\n\tprivate _contextProps = new Set<unknown>();\n\n\t/**\n\t * An action queue, which is used to handle async functions queuing.\n\t */\n\tprivate _actionQueues = new ActionQueues();\n\n\t/**\n\t * The configuration for the {@link module:core/context~Context}.\n\t */\n\tprivate _contextConfig?: ContextConfig;\n\n\t/**\n\t * The creation method.\n\t *\n\t * @see #setCreator\n\t */\n\tdeclare protected _creator: ( config: ContextConfig ) => Promise<TContext>;\n\n\t/**\n\t * The destruction method.\n\t *\n\t * @see #setDestructor\n\t */\n\tdeclare protected _destructor: ( context: Context ) => Promise<unknown>;\n\n\t/**\n\t * The watched item.\n\t */\n\tpublic _item: unknown;\n\n\t/**\n\t * The context watchdog class constructor.\n\t *\n\t * ```ts\n\t * const watchdog = new ContextWatchdog( Context );\n\t *\n\t * await watchdog.create( contextConfiguration );\n\t *\n\t * await watchdog.add( item );\n\t * ```\n\t *\n\t * See the {@glink features/watchdog Watchdog feature guide} to learn more how to use this feature.\n\t *\n\t * @param Context The {@link module:core/context~Context} class.\n\t * @param watchdogConfig The watchdog configuration.\n\t */\n\tconstructor(\n\t\tContext: { create( ...args: any ): Promise<TContext> },\n\t\twatchdogConfig: WatchdogConfig = {}\n\t) {\n\t\tsuper( watchdogConfig );\n\n\t\tthis._watchdogConfig = watchdogConfig;\n\n\t\t// Default creator and destructor.\n\t\tthis._creator = contextConfig => Context.create( contextConfig );\n\t\tthis._destructor = context => context.destroy();\n\n\t\tthis._actionQueues.onEmpty( () => {\n\t\t\tif ( this.state === 'initializing' ) {\n\t\t\t\tthis.state = 'ready';\n\t\t\t\tthis._fire( 'stateChange' );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Sets the function that is responsible for the context creation.\n\t * It expects a function that should return a promise (or `undefined`).\n\t *\n\t * ```ts\n\t * watchdog.setCreator( config => Context.create( config ) );\n\t * ```\n\t */\n\tpublic setCreator( creator: ( config: ContextConfig ) => Promise<TContext> ): void {\n\t\tthis._creator = creator;\n\t}\n\n\t/**\n\t * Sets the function that is responsible for the context destruction.\n\t * Overrides the default destruction function, which destroys only the context instance.\n\t * It expects a function that should return a promise (or `undefined`).\n\t *\n\t * ```ts\n\t * watchdog.setDestructor( context => {\n\t * \t// Do something before the context is destroyed.\n\t *\n\t * \treturn context\n\t * \t\t.destroy()\n\t * \t\t.then( () => {\n\t * \t\t\t// Do something after the context is destroyed.\n\t * \t\t} );\n\t * } );\n\t * ```\n\t */\n\tpublic setDestructor( destructor: ( context: Context ) => Promise<unknown> ): void {\n\t\tthis._destructor = destructor;\n\t}\n\n\t/**\n\t * The context instance. Keep in mind that this property might be changed when the context watchdog restarts,\n\t * so do not keep this instance internally. Always operate on the `ContextWatchdog#context` property.\n\t */\n\tpublic get context(): Context | null {\n\t\treturn this._context;\n\t}\n\n\t/**\n\t * Initializes the context watchdog. Once it is created, the watchdog takes care about\n\t * recreating the context and the provided items, and starts the error handling mechanism.\n\t *\n\t * ```ts\n\t * await watchdog.create( {\n\t * \tplugins: []\n\t * } );\n\t * ```\n\t *\n\t * @param contextConfig The context configuration. See {@link module:core/context~Context}.\n\t */\n\tpublic create( contextConfig: ContextConfig = {} ): Promise<unknown> {\n\t\treturn this._actionQueues.enqueue( mainQueueId, () => {\n\t\t\tthis._contextConfig = contextConfig;\n\n\t\t\treturn this._create();\n\t\t} );\n\t}\n\n\t/**\n\t * Returns an item instance with the given `itemId`.\n\t *\n\t * ```ts\n\t * const editor1 = watchdog.getItem( 'editor1' );\n\t * ```\n\t *\n\t * @param itemId The item ID.\n\t * @returns The item instance or `undefined` if an item with a given ID has not been found.\n\t */\n\tpublic getItem( itemId: string ): unknown {\n\t\tconst watchdog = this._getWatchdog( itemId );\n\n\t\treturn watchdog._item;\n\t}\n\n\t/**\n\t * Gets the state of the given item. See {@link #state} for a list of available states.\n\t *\n\t * ```ts\n\t * const editor1State = watchdog.getItemState( 'editor1' );\n\t * ```\n\t *\n\t * @param itemId Item ID.\n\t * @returns The state of the item.\n\t */\n\tpublic getItemState( itemId: string ): WatchdogState {\n\t\tconst watchdog = this._getWatchdog( itemId );\n\n\t\treturn watchdog.state;\n\t}\n\n\t/**\n\t * Adds items to the watchdog. Once created, instances of these items will be available using the {@link #getItem} method.\n\t *\n\t * Items can be passed together as an array of objects:\n\t *\n\t * ```ts\n\t * await watchdog.add( [ {\n\t * \tid: 'editor1',\n\t * \ttype: 'editor',\n\t * \tsourceElementOrData: document.querySelector( '#editor' ),\n\t * \tconfig: {\n\t * \t\tplugins: [ Essentials, Paragraph, Bold, Italic ],\n\t * \t\ttoolbar: [ 'bold', 'italic', 'alignment' ]\n\t * \t},\n\t * \tcreator: ( element, config ) => ClassicEditor.create( element, config )\n\t * } ] );\n\t * ```\n\t *\n\t * Or one by one as objects:\n\t *\n\t * ```ts\n\t * await watchdog.add( {\n\t * \tid: 'editor1',\n\t * \ttype: 'editor',\n\t * \tsourceElementOrData: document.querySelector( '#editor' ),\n\t * \tconfig: {\n\t * \t\tplugins: [ Essentials, Paragraph, Bold, Italic ],\n\t * \t\ttoolbar: [ 'bold', 'italic', 'alignment' ]\n\t * \t},\n\t * \tcreator: ( element, config ) => ClassicEditor.create( element, config )\n\t * ] );\n\t * ```\n\t *\n\t * Then an instance can be retrieved using the {@link #getItem} method:\n\t *\n\t * ```ts\n\t * const editor1 = watchdog.getItem( 'editor1' );\n\t * ```\n\t *\n\t * Note that this method can be called multiple times, but for performance reasons it is better\n\t * to pass all items together.\n\t *\n\t * @param itemConfigurationOrItemConfigurations An item configuration object or an array of item configurations.\n\t */\n\tpublic add( itemConfigurationOrItemConfigurations: ArrayOrItem<WatchdogItemConfiguration> ): Promise<unknown> {\n\t\tconst itemConfigurations = toArray( itemConfigurationOrItemConfigurations );\n\n\t\treturn Promise.all( itemConfigurations.map( item => {\n\t\t\treturn this._actionQueues.enqueue( item.id, () => {\n\t\t\t\tif ( this.state === 'destroyed' ) {\n\t\t\t\t\tthrow new Error( 'Cannot add items to destroyed watchdog.' );\n\t\t\t\t}\n\n\t\t\t\tif ( !this._context ) {\n\t\t\t\t\tthrow new Error( 'Context was not created yet. You should call the `ContextWatchdog#create()` method first.' );\n\t\t\t\t}\n\n\t\t\t\tlet watchdog: EditorWatchdog;\n\n\t\t\t\tif ( this._watchdogs.has( item.id ) ) {\n\t\t\t\t\tthrow new Error( `Item with the given id is already added: '${ item.id }'.` );\n\t\t\t\t}\n\n\t\t\t\tif ( item.type === 'editor' ) {\n\t\t\t\t\twatchdog = new EditorWatchdog( null, this._watchdogConfig );\n\t\t\t\t\twatchdog.setCreator( item.creator );\n\t\t\t\t\twatchdog._setExcludedProperties( this._contextProps );\n\n\t\t\t\t\tif ( item.destructor ) {\n\t\t\t\t\t\twatchdog.setDestructor( item.destructor );\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._watchdogs.set( item.id, watchdog );\n\n\t\t\t\t\t// Enqueue the internal watchdog errors within the main queue.\n\t\t\t\t\t// And propagate the internal `error` events as `itemError` event.\n\t\t\t\t\twatchdog.on( 'error', ( evt, { error, causesRestart } ) => {\n\t\t\t\t\t\tthis._fire( 'itemError', { itemId: item.id, error } );\n\n\t\t\t\t\t\t// Do not enqueue the item restart action if the item will not restart.\n\t\t\t\t\t\tif ( !causesRestart ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._actionQueues.enqueue( item.id, () => new Promise<void>( res => {\n\t\t\t\t\t\t\tconst rethrowRestartEventOnce = () => {\n\t\t\t\t\t\t\t\twatchdog.off( 'restart', rethrowRestartEventOnce );\n\n\t\t\t\t\t\t\t\tthis._fire( 'itemRestart', { itemId: item.id } );\n\n\t\t\t\t\t\t\t\tres();\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\twatchdog.on( 'restart', rethrowRestartEventOnce );\n\t\t\t\t\t\t} ) );\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn watchdog.create( item.sourceElementOrData, item.config, this._context );\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error( `Not supported item type: '${ item.type }'.` );\n\t\t\t\t}\n\t\t\t} );\n\t\t} ) );\n\t}\n\n\t/**\n\t * Removes and destroys item(s) with given ID(s).\n\t *\n\t * ```ts\n\t * await watchdog.remove( 'editor1' );\n\t * ```\n\t *\n\t * Or\n\t *\n\t * ```ts\n\t * await watchdog.remove( [ 'editor1', 'editor2' ] );\n\t * ```\n\t *\n\t * @param itemIdOrItemIds Item ID or an array of item IDs.\n\t */\n\tpublic remove( itemIdOrItemIds: ArrayOrItem<string> ): Promise<unknown> {\n\t\tconst itemIds = toArray( itemIdOrItemIds );\n\n\t\treturn Promise.all( itemIds.map( itemId => {\n\t\t\treturn this._actionQueues.enqueue( itemId, () => {\n\t\t\t\tconst watchdog = this._getWatchdog( itemId );\n\n\t\t\t\tthis._watchdogs.delete( itemId );\n\n\t\t\t\treturn watchdog.destroy();\n\t\t\t} );\n\t\t} ) );\n\t}\n\n\t/**\n\t * Destroys the context watchdog and all added items.\n\t * Once the context watchdog is destroyed, new items cannot be added.\n\t *\n\t * ```ts\n\t * await watchdog.destroy();\n\t * ```\n\t */\n\tpublic override destroy(): Promise<unknown> {\n\t\treturn this._actionQueues.enqueue( mainQueueId, () => {\n\t\t\tthis.state = 'destroyed';\n\t\t\tthis._fire( 'stateChange' );\n\n\t\t\tsuper.destroy();\n\n\t\t\treturn this._destroy();\n\t\t} );\n\t}\n\n\t/**\n\t * Restarts the context watchdog.\n\t */\n\tprotected _restart(): Promise<unknown> {\n\t\treturn this._actionQueues.enqueue( mainQueueId, () => {\n\t\t\tthis.state = 'initializing';\n\t\t\tthis._fire( 'stateChange' );\n\n\t\t\treturn this._destroy()\n\t\t\t\t.catch( err => {\n\t\t\t\t\tconsole.error( 'An error happened during destroying the context or items.', err );\n\t\t\t\t} )\n\t\t\t\t.then( () => this._create() )\n\t\t\t\t.then( () => this._fire( 'restart' ) );\n\t\t} );\n\t}\n\n\t/**\n\t * Initializes the context watchdog.\n\t */\n\tprivate _create(): Promise<unknown> {\n\t\treturn Promise.resolve()\n\t\t\t.then( () => {\n\t\t\t\tthis._startErrorHandling();\n\n\t\t\t\treturn this._creator( this._contextConfig! );\n\t\t\t} )\n\t\t\t.then( context => {\n\t\t\t\tthis._context = context;\n\t\t\t\tthis._contextProps = getSubNodes( this._context );\n\n\t\t\t\treturn Promise.all(\n\t\t\t\t\tArray.from( this._watchdogs.values() )\n\t\t\t\t\t\t.map( watchdog => {\n\t\t\t\t\t\t\twatchdog._setExcludedProperties( this._contextProps );\n\n\t\t\t\t\t\t\treturn watchdog.create( undefined, undefined, this._context! );\n\t\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t} );\n\t}\n\n\t/**\n\t * Destroys the context instance and all added items.\n\t */\n\tprivate _destroy(): Promise<unknown> {\n\t\treturn Promise.resolve()\n\t\t\t.then( () => {\n\t\t\t\tthis._stopErrorHandling();\n\n\t\t\t\tconst context = this._context!;\n\n\t\t\t\tthis._context = null;\n\t\t\t\tthis._contextProps = new Set();\n\n\t\t\t\treturn Promise.all(\n\t\t\t\t\tArray.from( this._watchdogs.values() )\n\t\t\t\t\t\t.map( watchdog => watchdog.destroy() )\n\t\t\t\t)\n\t\t\t\t\t// Context destructor destroys each editor.\n\t\t\t\t\t.then( () => this._destructor( context ) );\n\t\t\t} );\n\t}\n\n\t/**\n\t * Returns the watchdog for a given item ID.\n\t *\n\t * @param itemId Item ID.\n\t */\n\tprotected _getWatchdog( itemId: string ): Watchdog {\n\t\tconst watchdog = this._watchdogs.get( itemId );\n\n\t\tif ( !watchdog ) {\n\t\t\tthrow new Error( `Item with the given id was not registered: ${ itemId }.` );\n\t\t}\n\n\t\treturn watchdog;\n\t}\n\n\t/**\n\t * Checks whether an error comes from the context instance and not from the item instances.\n\t *\n\t * @internal\n\t */\n\tpublic _isErrorComingFromThisItem( error: CKEditorError ): boolean {\n\t\tfor ( const watchdog of this._watchdogs.values() ) {\n\t\t\tif ( watchdog._isErrorComingFromThisItem( error ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn areConnectedThroughProperties( this._context, error.context );\n\t}\n}\n\n/**\n * Fired after the watchdog restarts the context and the added items because of a crash.\n *\n * ```ts\n * watchdog.on( 'restart', () => {\n * \tconsole.log( 'The context has been restarted.' );\n * } );\n * ```\n *\n * @eventName ~ContextWatchdog#restart\n */\nexport type ContextWatchdogRestartEvent = {\n\tname: 'restart';\n\targs: [];\n\treturn: undefined;\n};\n\n/**\n * Fired when a new error occurred in one of the added items.\n *\n * ```ts\n * watchdog.on( 'itemError', ( evt, { error, itemId } ) => {\n * \tconsole.log( `An error occurred in an item with the '${ itemId }' ID.` );\n * } );\n * ```\n *\n * @eventName ~ContextWatchdog#itemError\n */\nexport type ContextWatchdogItemErrorEvent = {\n\tname: 'itemError';\n\targs: [ ContextWatchdogItemErrorEventData ];\n\treturn: undefined;\n};\n\n/**\n * The `itemError` event data.\n */\nexport type ContextWatchdogItemErrorEventData = {\n\titemId: string;\n\terror: Error;\n};\n\n/**\n * Fired after an item has been restarted.\n *\n * ```ts\n * \twatchdog.on( 'itemRestart', ( evt, { itemId } ) => {\n *\t\tconsole.log( 'An item with with the '${ itemId }' ID has been restarted.' );\n * \t} );\n * ```\n *\n * @eventName ~ContextWatchdog#itemRestart\n */\nexport type ContextWatchdogItemRestartEvent = {\n\tname: 'itemRestart';\n\targs: [ ContextWatchdogItemRestartEventData ];\n\treturn: undefined;\n};\n\n/**\n * The `itemRestart` event data.\n */\nexport type ContextWatchdogItemRestartEventData = {\n\titemId: string;\n};\n\n/**\n * Manager of action queues that allows queuing async functions.\n */\nclass ActionQueues {\n\tpublic _onEmptyCallbacks: Array<() => void> = [];\n\tpublic _queues = new Map<symbol | string | number, Promise<unknown>>();\n\tpublic _activeActions = 0;\n\n\t/**\n\t * Used to register callbacks that will be run when the queue becomes empty.\n\t *\n\t * @param onEmptyCallback A callback that will be run whenever the queue becomes empty.\n\t */\n\tpublic onEmpty( onEmptyCallback: () => void ): void {\n\t\tthis._onEmptyCallbacks.push( onEmptyCallback );\n\t}\n\n\t/**\n\t * It adds asynchronous actions (functions) to the proper queue and runs them one by one.\n\t *\n\t * @param queueId The action queue ID.\n\t * @param action A function that should be enqueued.\n\t */\n\tpublic enqueue( queueId: symbol | string | number, action: () => unknown ): Promise<unknown> {\n\t\tconst isMainAction = queueId === mainQueueId;\n\n\t\tthis._activeActions++;\n\n\t\tif ( !this._queues.get( queueId ) ) {\n\t\t\tthis._queues.set( queueId, Promise.resolve() );\n\t\t}\n\n\t\t// List all sources of actions that the current action needs to await for.\n\t\t// For the main action wait for all other actions.\n\t\t// For the item action wait only for the item queue and the main queue.\n\t\tconst awaitedActions = isMainAction ?\n\t\t\tPromise.all( this._queues.values() ) :\n\t\t\tPromise.all( [ this._queues.get( mainQueueId ), this._queues.get( queueId ) ] );\n\n\t\tconst queueWithAction = awaitedActions.then( action );\n\n\t\t// Catch all errors in the main queue to stack promises even if an error occurred in the past.\n\t\tconst nonErrorQueue = queueWithAction.catch( () => {} );\n\n\t\tthis._queues.set( queueId, nonErrorQueue );\n\n\t\treturn queueWithAction.finally( () => {\n\t\t\tthis._activeActions--;\n\n\t\t\tif ( this._queues.get( queueId ) === nonErrorQueue && this._activeActions === 0 ) {\n\t\t\t\tthis._onEmptyCallbacks.forEach( cb => cb() );\n\t\t\t}\n\t\t} );\n\t}\n}\n\n/**\n * Transforms any value to an array. If the provided value is already an array, it is returned unchanged.\n *\n * @param elementOrArray The value to transform to an array.\n * @returns An array created from data.\n */\nfunction toArray<T>( elementOrArray: ArrayOrItem<T> ): Array<T> {\n\treturn Array.isArray( elementOrArray ) ? elementOrArray : [ elementOrArray ];\n}\n\n/**\n * The watchdog item configuration interface.\n */\nexport interface WatchdogItemConfiguration {\n\n\t/**\n\t * id A unique item identificator.\n\t */\n\tid: string;\n\n\t/**\n\t * The type of the item to create. At the moment, only `'editor'` is supported.\n\t */\n\ttype: 'editor';\n\n\t/**\n\t * A function that initializes the item (the editor). The function takes editor initialization arguments\n\t * and should return a promise. For example: `( el, config ) => ClassicEditor.create( el, config )`.\n\t */\n\tcreator: EditorCreatorFunction;\n\n\t/**\n\t * A function that destroys the item instance (the editor). The function\n\t * takes an item and should return a promise. For example: `editor => editor.destroy()`\n\t */\n\tdestructor?: ( editor: Editor ) => Promise<unknown>;\n\n\t/**\n\t * The source element or data that will be passed\n\t * as the first argument to the `Editor.create()` method.\n\t */\n\tsourceElementOrData: string | HTMLElement;\n\n\t/**\n\t * An editor configuration.\n \t */\n\tconfig: EditorConfig;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module editor-classic/classiceditor\n */\n\nimport ClassicEditorUI from './classiceditorui';\nimport ClassicEditorUIView from './classiceditoruiview';\n\nimport {\n\tEditor,\n\tContext,\n\tDataApiMixin,\n\tElementApiMixin,\n\tattachToForm,\n\ttype EditorConfig,\n\ttype EditorReadyEvent\n} from 'ckeditor5/src/core';\nimport { getDataFromElement, CKEditorError } from 'ckeditor5/src/utils';\n\nimport { ContextWatchdog, EditorWatchdog } from 'ckeditor5/src/watchdog';\n\nimport { isElement as _isElement } from 'lodash-es';\n\n/**\n * The {@glink installation/getting-started/predefined-builds#classic-editor classic editor} implementation.\n * It uses an inline editable and a sticky toolbar, all enclosed in a boxed UI.\n * See the {@glink examples/builds/classic-editor demo}.\n *\n * In order to create a classic editor instance, use the static\n * {@link module:editor-classic/classiceditor~ClassicEditor.create `ClassicEditor.create()`} method.\n *\n * # Classic editor and classic build\n *\n * The classic editor can be used directly from source (if you installed the\n * [`@ckeditor/ckeditor5-editor-classic`](https://www.npmjs.com/package/@ckeditor/ckeditor5-editor-classic) package)\n * but it is also available in the {@glink installation/getting-started/predefined-builds#classic-editor classic build}.\n *\n * {@glink installation/getting-started/predefined-builds Builds}\n * are ready-to-use editors with plugins bundled in. When using the editor from\n * source you need to take care of loading all plugins by yourself\n * (through the {@link module:core/editor/editorconfig~EditorConfig#plugins `config.plugins`} option).\n * Using the editor from source gives much better flexibility and allows easier customization.\n *\n * Read more about initializing the editor from source or as a build in\n * {@link module:editor-classic/classiceditor~ClassicEditor.create `ClassicEditor.create()`}.\n */\nexport default class ClassicEditor extends DataApiMixin( ElementApiMixin( Editor ) ) {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic readonly ui: ClassicEditorUI;\n\n\t/**\n\t * Creates an instance of the classic editor.\n\t *\n\t * **Note:** do not use the constructor to create editor instances. Use the static\n\t * {@link module:editor-classic/classiceditor~ClassicEditor.create `ClassicEditor.create()`} method instead.\n\t *\n\t * @param sourceElementOrData The DOM element that will be the source for the created editor\n\t * or the editor's initial data. For more information see\n\t * {@link module:editor-classic/classiceditor~ClassicEditor.create `ClassicEditor.create()`}.\n\t * @param config The editor configuration.\n\t */\n\tprotected constructor( sourceElementOrData: HTMLElement | string, config: EditorConfig = {} ) {\n\t\t// If both `config.initialData` is set and initial data is passed as the constructor parameter, then throw.\n\t\tif ( !isElement( sourceElementOrData ) && config.initialData !== undefined ) {\n\t\t\t// Documented in core/editor/editorconfig.jsdoc.\n\t\t\t// eslint-disable-next-line ckeditor5-rules/ckeditor-error-message\n\t\t\tthrow new CKEditorError( 'editor-create-initial-data', null );\n\t\t}\n\n\t\tsuper( config );\n\n\t\tif ( this.config.get( 'initialData' ) === undefined ) {\n\t\t\tthis.config.set( 'initialData', getInitialData( sourceElementOrData ) );\n\t\t}\n\n\t\tif ( isElement( sourceElementOrData ) ) {\n\t\t\tthis.sourceElement = sourceElementOrData;\n\t\t}\n\n\t\tthis.model.document.createRoot();\n\n\t\tconst shouldToolbarGroupWhenFull = !this.config.get( 'toolbar.shouldNotGroupWhenFull' );\n\t\tconst view = new ClassicEditorUIView( this.locale, this.editing.view, {\n\t\t\tshouldToolbarGroupWhenFull\n\t\t} );\n\n\t\tthis.ui = new ClassicEditorUI( this, view );\n\n\t\tattachToForm( this );\n\t}\n\n\t/**\n\t * Destroys the editor instance, releasing all resources used by it.\n\t *\n\t * Updates the original editor element with the data if the\n\t * {@link module:core/editor/editorconfig~EditorConfig#updateSourceElementOnDestroy `updateSourceElementOnDestroy`}\n\t * configuration option is set to `true`.\n\t */\n\tpublic override destroy(): Promise<unknown> {\n\t\tif ( this.sourceElement ) {\n\t\t\tthis.updateSourceElement();\n\t\t}\n\n\t\tthis.ui.destroy();\n\n\t\treturn super.destroy();\n\t}\n\n\t/**\n\t * Creates a new classic editor instance.\n\t *\n\t * There are three ways how the editor can be initialized.\n\t *\n\t * # Replacing a DOM element (and loading data from it)\n\t *\n\t * You can initialize the editor using an existing DOM element:\n\t *\n\t * ```ts\n\t * ClassicEditor\n\t * \t.create( document.querySelector( '#editor' ) )\n\t * \t.then( editor => {\n\t * \t\tconsole.log( 'Editor was initialized', editor );\n\t * \t} )\n\t * \t.catch( err => {\n\t * \t\tconsole.error( err.stack );\n\t * \t} );\n\t * ```\n\t *\n\t * The element's content will be used as the editor data and the element will be replaced by the editor UI.\n\t *\n\t * # Creating a detached editor\n\t *\n\t * Alternatively, you can initialize the editor by passing the initial data directly as a string.\n\t * In this case, the editor will render an element that must be inserted into the DOM:\n\t *\n\t * ```ts\n\t * ClassicEditor\n\t * \t.create( '<p>Hello world!</p>' )\n\t * \t.then( editor => {\n\t * \t\tconsole.log( 'Editor was initialized', editor );\n\t *\n\t * \t\t// Initial data was provided so the editor UI element needs to be added manually to the DOM.\n\t * \t\tdocument.body.appendChild( editor.ui.element );\n\t * \t} )\n\t * \t.catch( err => {\n\t * \t\tconsole.error( err.stack );\n\t * \t} );\n\t * ```\n\t *\n\t * This lets you dynamically append the editor to your web page whenever it is convenient for you. You may use this method if your\n\t * web page content is generated on the client side and the DOM structure is not ready at the moment when you initialize the editor.\n\t *\n\t * # Replacing a DOM element (and data provided in `config.initialData`)\n\t *\n\t * You can also mix these two ways by providing a DOM element to be used and passing the initial data through the configuration:\n\t *\n\t * ```ts\n\t * ClassicEditor\n\t * \t.create( document.querySelector( '#editor' ), {\n\t * \t\tinitialData: '<h2>Initial data</h2><p>Foo bar.</p>'\n\t * \t} )\n\t * \t.then( editor => {\n\t * \t\tconsole.log( 'Editor was initialized', editor );\n\t * \t} )\n\t * \t.catch( err => {\n\t * \t\tconsole.error( err.stack );\n\t * \t} );\n\t * ```\n\t *\n\t * This method can be used to initialize the editor on an existing element with the specified content in case if your integration\n\t * makes it difficult to set the content of the source element.\n\t *\n\t * Note that an error will be thrown if you pass the initial data both as the first parameter and also in the configuration.\n\t *\n\t * # Configuring the editor\n\t *\n\t * See the {@link module:core/editor/editorconfig~EditorConfig editor configuration documentation} to learn more about\n\t * customizing plugins, toolbar and more.\n\t *\n\t * # Using the editor from source\n\t *\n\t * The code samples listed in the previous sections of this documentation assume that you are using an\n\t * {@glink installation/getting-started/predefined-builds editor build} (for example – `@ckeditor/ckeditor5-build-classic`).\n\t *\n\t * If you want to use the classic editor from source (`@ckeditor/ckeditor5-editor-classic/src/classiceditor`),\n\t * you need to define the list of\n\t * {@link module:core/editor/editorconfig~EditorConfig#plugins plugins to be initialized} and\n\t * {@link module:core/editor/editorconfig~EditorConfig#toolbar toolbar items}. Read more about using the editor from\n\t * source in the {@glink installation/advanced/alternative-setups/integrating-from-source-webpack dedicated guide}.\n\t *\n\t * @param sourceElementOrData The DOM element that will be the source for the created editor\n\t * or the editor's initial data.\n\t *\n\t * If a DOM element is passed, its content will be automatically loaded to the editor upon initialization\n\t * and the {@link module:editor-classic/classiceditorui~ClassicEditorUI#element editor element} will replace the passed element\n\t * in the DOM (the original one will be hidden and the editor will be injected next to it).\n\t *\n\t * If the {@link module:core/editor/editorconfig~EditorConfig#updateSourceElementOnDestroy updateSourceElementOnDestroy}\n\t * option is set to `true`, the editor data will be set back to the original element once the editor is destroyed and when a form,\n\t * in which this element is contained, is submitted (if the original element is a `<textarea>`). This ensures seamless integration\n\t * with native web forms.\n\t *\n\t * If the initial data is passed, a detached editor will be created. In this case you need to insert it into the DOM manually.\n\t * It is available under the {@link module:editor-classic/classiceditorui~ClassicEditorUI#element `editor.ui.element`} property.\n\t *\n\t * @param config The editor configuration.\n\t * @returns A promise resolved once the editor is ready. The promise resolves with the created editor instance.\n\t */\n\tpublic static override create( sourceElementOrData: HTMLElement | string, config: EditorConfig = {} ): Promise<ClassicEditor> {\n\t\treturn new Promise( resolve => {\n\t\t\tconst editor = new this( sourceElementOrData, config );\n\n\t\t\tresolve(\n\t\t\t\teditor.initPlugins()\n\t\t\t\t\t.then( () => editor.ui.init( isElement( sourceElementOrData ) ? sourceElementOrData : null ) )\n\t\t\t\t\t.then( () => editor.data.init( editor.config.get( 'initialData' )! ) )\n\t\t\t\t\t.then( () => editor.fire<EditorReadyEvent>( 'ready' ) )\n\t\t\t\t\t.then( () => editor )\n\t\t\t);\n\t\t} );\n\t}\n\n\t/**\n\t * The {@link module:core/context~Context} class.\n\t *\n\t * Exposed as static editor field for easier access in editor builds.\n\t */\n\tpublic static Context = Context;\n\n\t/**\n\t * The {@link module:watchdog/editorwatchdog~EditorWatchdog} class.\n\t *\n\t * Exposed as static editor field for easier access in editor builds.\n\t */\n\tpublic static EditorWatchdog = EditorWatchdog;\n\n\t/**\n\t * The {@link module:watchdog/contextwatchdog~ContextWatchdog} class.\n\t *\n\t * Exposed as static editor field for easier access in editor builds.\n\t */\n\tpublic static ContextWatchdog = ContextWatchdog;\n}\n\nfunction getInitialData( sourceElementOrData: HTMLElement | string ): string {\n\treturn isElement( sourceElementOrData ) ? getDataFromElement( sourceElementOrData ) : sourceElementOrData;\n}\n\nfunction isElement( value: any ): value is Element {\n\treturn _isElement( value );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* globals HTMLTextAreaElement */\n\n/**\n * @module utils/dom/getdatafromelement\n */\n\n/**\n * Gets data from a given source element.\n *\n * @param el The element from which the data will be retrieved.\n * @returns The data string.\n */\nexport default function getDataFromElement( el: HTMLElement ): string {\n\tif ( el instanceof HTMLTextAreaElement ) {\n\t\treturn el.value;\n\t}\n\n\treturn el.innerHTML;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module core/editor/utils/attachtoform\n */\n\nimport { isFunction } from 'lodash-es';\n\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\n\nimport type { default as Editor, EditorDestroyEvent } from '../editor';\nimport type { ElementApi } from './elementapimixin';\n\n/**\n * Checks if the editor is initialized on a `<textarea>` element that belongs to a form. If yes, it updates the editor's element\n * content before submitting the form.\n *\n * This helper requires the {@link module:core/editor/utils/elementapimixin~ElementApi ElementApi interface}.\n *\n * @param editor Editor instance.\n */\nexport default function attachToForm( editor: Editor & ElementApi ): void {\n\tif ( !isFunction( editor.updateSourceElement ) ) {\n\t\t/**\n\t\t * The editor passed to `attachToForm()` must implement the\n\t\t * {@link module:core/editor/utils/elementapimixin~ElementApi} interface.\n\t\t *\n\t\t * @error attachtoform-missing-elementapi-interface\n\t\t */\n\t\tthrow new CKEditorError(\n\t\t\t'attachtoform-missing-elementapi-interface',\n\t\t\teditor\n\t\t);\n\t}\n\n\tconst sourceElement = editor.sourceElement;\n\n\t// Only when replacing a textarea which is inside of a form element.\n\tif ( isTextArea( sourceElement ) && sourceElement.form ) {\n\t\tlet originalSubmit: () => void;\n\t\tconst form = sourceElement.form;\n\t\tconst onSubmit = () => editor.updateSourceElement();\n\n\t\t// Replace the original form#submit() to call a custom submit function first.\n\t\t// Check if #submit is a function because the form might have an input named \"submit\".\n\t\tif ( isFunction( form.submit ) ) {\n\t\t\toriginalSubmit = form.submit;\n\n\t\t\tform.submit = () => {\n\t\t\t\tonSubmit();\n\t\t\t\toriginalSubmit.apply( form );\n\t\t\t};\n\t\t}\n\n\t\t// Update the replaced textarea with data before each form#submit event.\n\t\tform.addEventListener( 'submit', onSubmit );\n\n\t\t// Remove the submit listener and revert the original submit method on\n\t\t// editor#destroy.\n\t\teditor.on<EditorDestroyEvent>( 'destroy', () => {\n\t\t\tform.removeEventListener( 'submit', onSubmit );\n\n\t\t\tif ( originalSubmit ) {\n\t\t\t\tform.submit = originalSubmit;\n\t\t\t}\n\t\t} );\n\t}\n}\n\nfunction isTextArea( sourceElement: HTMLElement | undefined ): sourceElement is HTMLTextAreaElement {\n\treturn !!sourceElement && sourceElement.tagName.toLowerCase() === 'textarea';\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module clipboard/clipboardobserver\n */\n\nimport { EventInfo } from '@ckeditor/ckeditor5-utils';\n\nimport {\n\tDataTransfer,\n\tDomEventObserver,\n\ttype DomEventData,\n\ttype View,\n\ttype ViewDocumentFragment,\n\ttype ViewElement,\n\ttype ViewRange\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * Clipboard events observer.\n *\n * Fires the following events:\n *\n * * {@link module:engine/view/document~Document#event:clipboardInput},\n * * {@link module:engine/view/document~Document#event:paste},\n * * {@link module:engine/view/document~Document#event:copy},\n * * {@link module:engine/view/document~Document#event:cut},\n * * {@link module:engine/view/document~Document#event:drop},\n * * {@link module:engine/view/document~Document#event:dragover},\n * * {@link module:engine/view/document~Document#event:dragging},\n * * {@link module:engine/view/document~Document#event:dragstart},\n * * {@link module:engine/view/document~Document#event:dragend},\n * * {@link module:engine/view/document~Document#event:dragenter},\n * * {@link module:engine/view/document~Document#event:dragleave}.\n *\n * **Note**: This observer is not available by default (ckeditor5-engine does not add it on its own).\n * To make it available, it needs to be added to {@link module:engine/view/document~Document} by using\n * the {@link module:engine/view/view~View#addObserver `View#addObserver()`} method. Alternatively, you can load the\n * {@link module:clipboard/clipboard~Clipboard} plugin which adds this observer automatically (because it uses it).\n */\nexport default class ClipboardObserver extends DomEventObserver<\n\t'paste' | 'copy' | 'cut' | 'drop' | 'dragover' | 'dragstart' | 'dragend' | 'dragenter' | 'dragleave',\n\tClipboardEventData\n> {\n\tpublic readonly domEventType = [\n\t\t'paste', 'copy', 'cut', 'drop', 'dragover', 'dragstart', 'dragend', 'dragenter', 'dragleave'\n\t] as const;\n\n\tconstructor( view: View ) {\n\t\tsuper( view );\n\n\t\tconst viewDocument = this.document;\n\n\t\tthis.listenTo<ViewDocumentPasteEvent>( viewDocument, 'paste', handleInput( 'clipboardInput' ), { priority: 'low' } );\n\t\tthis.listenTo<ViewDocumentDropEvent>( viewDocument, 'drop', handleInput( 'clipboardInput' ), { priority: 'low' } );\n\t\tthis.listenTo<ViewDocumentDragOverEvent>( viewDocument, 'dragover', handleInput( 'dragging' ), { priority: 'low' } );\n\n\t\tfunction handleInput( type: 'clipboardInput' | 'dragging' ) {\n\t\t\treturn ( evt: EventInfo, data: DomEventData & ClipboardEventData ) => {\n\t\t\t\tdata.preventDefault();\n\n\t\t\t\tconst targetRanges = data.dropRange ? [ data.dropRange ] : null;\n\t\t\t\tconst eventInfo = new EventInfo( viewDocument, type );\n\n\t\t\t\tviewDocument.fire( eventInfo, {\n\t\t\t\t\tdataTransfer: data.dataTransfer,\n\t\t\t\t\tmethod: evt.name,\n\t\t\t\t\ttargetRanges,\n\t\t\t\t\ttarget: data.target,\n\t\t\t\t\tdomEvent: data.domEvent\n\t\t\t\t} );\n\n\t\t\t\t// If CKEditor handled the input, do not bubble the original event any further.\n\t\t\t\t// This helps external integrations recognize that fact and act accordingly.\n\t\t\t\t// https://github.com/ckeditor/ckeditor5-upload/issues/92\n\t\t\t\tif ( eventInfo.stop.called ) {\n\t\t\t\t\tdata.stopPropagation();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}\n\n\tpublic onDomEvent( domEvent: ClipboardEvent | DragEvent ): void {\n\t\tconst nativeDataTransfer = 'clipboardData' in domEvent ? domEvent.clipboardData! : domEvent.dataTransfer!;\n\t\tconst cacheFiles = domEvent.type == 'drop' || domEvent.type == 'paste';\n\n\t\tconst evtData: ClipboardEventData = {\n\t\t\tdataTransfer: new DataTransfer( nativeDataTransfer, { cacheFiles } )\n\t\t};\n\n\t\tif ( domEvent.type == 'drop' || domEvent.type == 'dragover' ) {\n\t\t\tevtData.dropRange = getDropViewRange( this.view, domEvent as DragEvent );\n\t\t}\n\n\t\tthis.fire( domEvent.type, domEvent, evtData );\n\t}\n}\n\n/**\n * The data of 'paste', 'copy', 'cut', 'drop', 'dragover', 'dragstart', 'dragend', 'dragenter' and 'dragleave' events.\n */\nexport interface ClipboardEventData {\n\n\t/**\n\t * The data transfer instance.\n\t */\n\tdataTransfer: DataTransfer;\n\n\t/**\n\t * The position into which the content is dropped.\n\t */\n\tdropRange?: ViewRange | null;\n}\n\nfunction getDropViewRange( view: View, domEvent: DragEvent & { rangeParent?: Node; rangeOffset?: number } ) {\n\tconst domDoc = ( domEvent.target as Node ).ownerDocument!;\n\tconst x = domEvent.clientX;\n\tconst y = domEvent.clientY;\n\tlet domRange;\n\n\t// Webkit & Blink.\n\tif ( domDoc.caretRangeFromPoint && domDoc.caretRangeFromPoint( x, y ) ) {\n\t\tdomRange = domDoc.caretRangeFromPoint( x, y );\n\t}\n\t// FF.\n\telse if ( domEvent.rangeParent ) {\n\t\tdomRange = domDoc.createRange();\n\t\tdomRange.setStart( domEvent.rangeParent, domEvent.rangeOffset! );\n\t\tdomRange.collapse( true );\n\t}\n\n\tif ( domRange ) {\n\t\treturn view.domConverter.domRangeToView( domRange );\n\t}\n\n\treturn null;\n}\n\n/**\n * Fired as a continuation of the {@link module:engine/view/document~Document#event:paste} and\n * {@link module:engine/view/document~Document#event:drop} events.\n *\n * It is a part of the {@glink framework/deep-dive/clipboard#input-pipeline clipboard input pipeline}.\n *\n * This event carries a `dataTransfer` object which comes from the clipboard and whose content should be processed\n * and inserted into the editor.\n *\n * **Note**: This event is not available by default. To make it available, {@link module:clipboard/clipboardobserver~ClipboardObserver}\n * needs to be added to the {@link module:engine/view/document~Document} by using the {@link module:engine/view/view~View#addObserver}\n * method. This is usually done by the {@link module:clipboard/clipboard~Clipboard} plugin, but if for some reason it is not loaded,\n * the observer must be added manually.\n *\n * @see module:clipboard/clipboardobserver~ClipboardObserver\n * @see module:clipboard/clipboard~Clipboard\n *\n * @eventName module:engine/view/document~Document#clipboardInput\n * @param data The event data.\n */\nexport type ViewDocumentClipboardInputEvent = {\n\tname: 'clipboardInput';\n\targs: [ data: DomEventData<ClipboardEvent | DragEvent> & ClipboardInputEventData ];\n};\n\n/**\n * The value of the {@link module:engine/view/document~Document#event:paste},\n * {@link module:engine/view/document~Document#event:copy} and {@link module:engine/view/document~Document#event:cut} events.\n *\n * In order to access the clipboard data, use the `dataTransfer` property.\n */\nexport interface ClipboardInputEventData {\n\n\t/**\n\t * Data transfer instance.\n\t */\n\tdataTransfer: DataTransfer;\n\n\t/**\n\t * Whether the event was triggered by a paste or a drop operation.\n\t */\n\tmethod: 'paste' | 'drop';\n\n\t/**\n\t * The tree view element representing the target.\n\t */\n\ttarget: ViewElement;\n\n\t/**\n\t * The ranges which are the target of the operation (usually – into which the content should be inserted).\n\t * If the clipboard input was triggered by a paste operation, this property is not set. If by a drop operation,\n\t * then it is the drop position (which can be different than the selection at the moment of the drop).\n\t */\n\ttargetRanges: Array<ViewRange> | null;\n\n\t/**\n\t * The content of clipboard input.\n\t */\n\tcontent?: ViewDocumentFragment;\n}\n\n/**\n * Fired when the user drags the content over one of the editing roots of the editor.\n *\n * Introduced by {@link module:clipboard/clipboardobserver~ClipboardObserver}.\n *\n * **Note**: This event is not available by default. To make it available, {@link module:clipboard/clipboardobserver~ClipboardObserver}\n * needs to be added to the {@link module:engine/view/document~Document} by using the {@link module:engine/view/view~View#addObserver}\n * method. This is usually done by the {@link module:clipboard/clipboard~Clipboard} plugin, but if for some reason it is not loaded,\n * the observer must be added manually.\n *\n * @see module:engine/view/document~Document#event:clipboardInput\n *\n * @eventName module:engine/view/document~Document#dragover\n * @param data The event data.\n */\nexport type ViewDocumentDragOverEvent = {\n\tname: 'dragover';\n\targs: [ data: DomEventData<DragEvent> & ClipboardEventData ];\n};\n\n/**\n * Fired when the user dropped the content into one of the editing roots of the editor.\n *\n * Introduced by {@link module:clipboard/clipboardobserver~ClipboardObserver}.\n *\n * **Note**: This event is not available by default. To make it available, {@link module:clipboard/clipboardobserver~ClipboardObserver}\n * needs to be added to the {@link module:engine/view/document~Document} by using the {@link module:engine/view/view~View#addObserver}\n * method. This is usually done by the {@link module:clipboard/clipboard~Clipboard} plugin, but if for some reason it is not loaded,\n * the observer must be added manually.\n *\n * @see module:engine/view/document~Document#event:clipboardInput\n *\n * @eventName module:engine/view/document~Document#drop\n * @param data The event data.\n */\nexport type ViewDocumentDropEvent = {\n\tname: 'drop';\n\targs: [ data: DomEventData<DragEvent> & ClipboardEventData ];\n};\n\n/**\n * Fired when the user pasted the content into one of the editing roots of the editor.\n *\n * Introduced by {@link module:clipboard/clipboardobserver~ClipboardObserver}.\n *\n * **Note**: This event is not available by default. To make it available, {@link module:clipboard/clipboardobserver~ClipboardObserver}\n * needs to be added to the {@link module:engine/view/document~Document} by using the {@link module:engine/view/view~View#addObserver}\n * method. This is usually done by the {@link module:clipboard/clipboard~Clipboard} plugin, but if for some reason it is not loaded,\n * the observer must be added manually.\n *\n * @see module:engine/view/document~Document#event:clipboardInput\n *\n * @eventName module:engine/view/document~Document#paste\n * @param {module:clipboard/clipboardobserver~ClipboardEventData} data The event data.\n */\nexport type ViewDocumentPasteEvent = {\n\tname: 'paste';\n\targs: [ data: DomEventData<ClipboardEvent> & ClipboardEventData ];\n};\n\n/**\n * Fired when the user copied the content from one of the editing roots of the editor.\n *\n * Introduced by {@link module:clipboard/clipboardobserver~ClipboardObserver}.\n *\n * **Note**: This event is not available by default. To make it available, {@link module:clipboard/clipboardobserver~ClipboardObserver}\n * needs to be added to the {@link module:engine/view/document~Document} by using the {@link module:engine/view/view~View#addObserver}\n * method. This is usually done by the {@link module:clipboard/clipboard~Clipboard} plugin, but if for some reason it is not loaded,\n * the observer must be added manually.\n *\n * @see module:clipboard/clipboardobserver~ClipboardObserver\n *\n * @eventName module:engine/view/document~Document#copy\n * @param data The event data.\n */\nexport type ViewDocumentCopyEvent = {\n\tname: 'copy';\n\targs: [ data: DomEventData<ClipboardEvent> & ClipboardEventData ];\n};\n\n/**\n * Fired when the user cut the content from one of the editing roots of the editor.\n *\n * Introduced by {@link module:clipboard/clipboardobserver~ClipboardObserver}.\n *\n * **Note**: This event is not available by default. To make it available, {@link module:clipboard/clipboardobserver~ClipboardObserver}\n * needs to be added to the {@link module:engine/view/document~Document} by using the {@link module:engine/view/view~View#addObserver}\n * method. This is usually done by the {@link module:clipboard/clipboard~Clipboard} plugin, but if for some reason it is not loaded,\n * the observer must be added manually.\n *\n * @see module:clipboard/clipboardobserver~ClipboardObserver\n *\n * @eventName module:engine/view/document~Document#cut\n * @param data The event data.\n */\nexport type ViewDocumentCutEvent = {\n\tname: 'cut';\n\targs: [ data: DomEventData<ClipboardEvent> & ClipboardEventData ];\n};\n\n/**\n * Fired as a continuation of the {@link module:engine/view/document~Document#event:dragover} event.\n *\n * It is a part of the {@glink framework/deep-dive/clipboard#input-pipeline clipboard input pipeline}.\n *\n * This event carries a `dataTransfer` object which comes from the clipboard and whose content should be processed\n * and inserted into the editor.\n *\n * **Note**: This event is not available by default. To make it available, {@link module:clipboard/clipboardobserver~ClipboardObserver}\n * needs to be added to the {@link module:engine/view/document~Document} by using the {@link module:engine/view/view~View#addObserver}\n * method. This is usually done by the {@link module:clipboard/clipboard~Clipboard} plugin, but if for some reason it is not loaded,\n * the observer must be added manually.\n *\n * @see module:clipboard/clipboardobserver~ClipboardObserver\n * @see module:clipboard/clipboard~Clipboard\n *\n * @eventName module:engine/view/document~Document#dragging\n * @param data The event data.\n */\nexport type ViewDocumentDraggingEvent = {\n\tname: 'dragging';\n\targs: [ data: DomEventData<DragEvent> & DraggingEventData ];\n};\n\nexport interface DraggingEventData {\n\n\t/**\n\t * The data transfer instance.\n\t */\n\tdataTransfer: DataTransfer;\n\n\t/**\n\t * Whether the event was triggered by a paste or a drop operation.\n\t */\n\tmethod: 'dragover';\n\n\t/**\n\t * The tree view element representing the target.\n\t */\n\ttarget: Element;\n\n\t/**\n\t * Ranges which are the target of the operation (usually – into which the content should be inserted).\n\t * It is the drop position (which can be different than the selection at the moment of drop).\n\t */\n\ttargetRanges: Array<ViewRange> | null;\n}\n\n/**\n * Fired when the user starts dragging the content in one of the editing roots of the editor.\n *\n * Introduced by {@link module:clipboard/clipboardobserver~ClipboardObserver}.\n *\n * **Note**: This event is not available by default. To make it available, {@link module:clipboard/clipboardobserver~ClipboardObserver}\n * needs to be added to the {@link module:engine/view/document~Document} by using the {@link module:engine/view/view~View#addObserver}\n * method. This is usually done by the {@link module:clipboard/clipboard~Clipboard} plugin, but if for some reason it is not loaded,\n * the observer must be added manually.\n *\n * @see module:engine/view/document~Document#event:clipboardInput\n *\n * @eventName module:engine/view/document~Document#dragstart\n * @param data The event data.\n */\nexport type ViewDocumentDragStartEvent = {\n\tname: 'dragstart';\n\targs: [ data: DomEventData<DragEvent> & ClipboardEventData ];\n};\n\n/**\n * Fired when the user ended dragging the content.\n *\n * Introduced by {@link module:clipboard/clipboardobserver~ClipboardObserver}.\n *\n * **Note**: This event is not available by default. To make it available, {@link module:clipboard/clipboardobserver~ClipboardObserver}\n * needs to be added to the {@link module:engine/view/document~Document} by using the {@link module:engine/view/view~View#addObserver}\n * method. This is usually done by the {@link module:clipboard/clipboard~Clipboard} plugin, but if for some reason it is not loaded,\n * the observer must be added manually.\n *\n * @see module:engine/view/document~Document#event:clipboardInput\n *\n * @eventName module:engine/view/document~Document#dragend\n * @param data The event data.\n */\nexport type ViewDocumentDragEndEvent = {\n\tname: 'dragend';\n\targs: [ data: DomEventData<DragEvent> & ClipboardEventData ];\n};\n\n/**\n * Fired when the user drags the content into one of the editing roots of the editor.\n *\n * Introduced by {@link module:clipboard/clipboardobserver~ClipboardObserver}.\n *\n * **Note**: This event is not available by default. To make it available, {@link module:clipboard/clipboardobserver~ClipboardObserver}\n * needs to be added to the {@link module:engine/view/document~Document} by using the {@link module:engine/view/view~View#addObserver}\n * method. This is usually done by the {@link module:clipboard/clipboard~Clipboard} plugin, but if for some reason it is not loaded,\n * the observer must be added manually.\n *\n * @see module:engine/view/document~Document#event:clipboardInput\n *\n * @eventName module:engine/view/document~Document#dragenter\n * @param data The event data.\n */\nexport type ViewDocumentDragEnterEvent = {\n\tname: 'dragenter';\n\targs: [ data: DomEventData<DragEvent> & ClipboardEventData ];\n};\n\n/**\n * Fired when the user drags the content out of one of the editing roots of the editor.\n *\n * Introduced by {@link module:clipboard/clipboardobserver~ClipboardObserver}.\n *\n * **Note**: This event is not available by default. To make it available, {@link module:clipboard/clipboardobserver~ClipboardObserver}\n * needs to be added to the {@link module:engine/view/document~Document} by using the {@link module:engine/view/view~View#addObserver}\n * method. This is usually done by the {@link module:clipboard/clipboard~Clipboard} plugin, but if for some reason it is not loaded,\n * the observer must be added manually.\n *\n * @see module:engine/view/document~Document#event:clipboardInput\n *\n * @eventName module:engine/view/document~Document#dragleave\n * @param data The event data.\n */\nexport type ViewDocumentDragLeaveEvent = {\n\tname: 'dragleave';\n\targs: [ data: DomEventData<DragEvent> & ClipboardEventData ];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module clipboard/utils/viewtoplaintext\n */\n\nimport type { ViewDocumentFragment, ViewElement, ViewItem } from '@ckeditor/ckeditor5-engine';\n\n// Elements which should not have empty-line padding.\n// Most `view.ContainerElement` want to be separate by new-line, but some are creating one structure\n// together (like `<li>`) so it is better to separate them by only one \"\\n\".\nconst smallPaddingElements = [ 'figcaption', 'li' ];\n\n/**\n * Converts {@link module:engine/view/item~Item view item} and all of its children to plain text.\n *\n * @param viewItem View item to convert.\n * @returns Plain text representation of `viewItem`.\n */\nexport default function viewToPlainText( viewItem: ViewItem | ViewDocumentFragment ): string {\n\tlet text = '';\n\n\tif ( viewItem.is( '$text' ) || viewItem.is( '$textProxy' ) ) {\n\t\t// If item is `Text` or `TextProxy` simple take its text data.\n\t\ttext = viewItem.data;\n\t} else if ( viewItem.is( 'element', 'img' ) && viewItem.hasAttribute( 'alt' ) ) {\n\t\t// Special case for images - use alt attribute if it is provided.\n\t\ttext = viewItem.getAttribute( 'alt' )!;\n\t} else if ( viewItem.is( 'element', 'br' ) ) {\n\t\t// A soft break should be converted into a single line break (#8045).\n\t\ttext = '\\n';\n\t} else {\n\t\t// Other elements are document fragments, attribute elements or container elements.\n\t\t// They don't have their own text value, so convert their children.\n\t\tlet prev = null;\n\n\t\tfor ( const child of ( viewItem as ViewElement | ViewDocumentFragment ).getChildren() ) {\n\t\t\tconst childText = viewToPlainText( child );\n\n\t\t\t// Separate container element children with one or more new-line characters.\n\t\t\tif ( prev && ( prev.is( 'containerElement' ) || child.is( 'containerElement' ) ) ) {\n\t\t\t\tif (\n\t\t\t\t\tsmallPaddingElements.includes( ( prev as ViewElement ).name ) ||\n\t\t\t\t\tsmallPaddingElements.includes( ( child as ViewElement ).name )\n\t\t\t\t) {\n\t\t\t\t\ttext += '\\n';\n\t\t\t\t} else {\n\t\t\t\t\ttext += '\\n\\n';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttext += childText;\n\t\t\tprev = child;\n\t\t}\n\t}\n\n\treturn text;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module clipboard/clipboardpipeline\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\nimport { EventInfo } from '@ckeditor/ckeditor5-utils';\n\nimport type {\n\tDataTransfer,\n\tDocumentFragment,\n\tDomEventData,\n\tRange,\n\tViewDocumentFragment,\n\tViewRange\n} from '@ckeditor/ckeditor5-engine';\n\nimport ClipboardObserver, {\n\ttype ClipboardEventData,\n\ttype ViewDocumentCopyEvent,\n\ttype ViewDocumentCutEvent,\n\ttype ViewDocumentClipboardInputEvent\n} from './clipboardobserver';\n\nimport plainTextToHtml from './utils/plaintexttohtml';\nimport normalizeClipboardHtml from './utils/normalizeclipboarddata';\nimport viewToPlainText from './utils/viewtoplaintext';\n\n// Input pipeline events overview:\n//\n// ┌──────────────────────┐ ┌──────────────────────┐\n// │ view.Document │ │ view.Document │\n// │ paste │ │ drop │\n// └───────────┬──────────┘ └───────────┬──────────┘\n// │ │\n// └────────────────┌────────────────┘\n// │\n// ┌─────────V────────┐\n// │ view.Document │ Retrieves text/html or text/plain from data.dataTransfer\n// │ clipboardInput │ and processes it to view.DocumentFragment.\n// └─────────┬────────┘\n// │\n// ┌───────────V───────────┐\n// │ ClipboardPipeline │ Converts view.DocumentFragment to model.DocumentFragment.\n// │ inputTransformation │\n// └───────────┬───────────┘\n// │\n// ┌──────────V──────────┐\n// │ ClipboardPipeline │ Calls model.insertContent().\n// │ contentInsertion │\n// └─────────────────────┘\n//\n//\n// Output pipeline events overview:\n//\n// ┌──────────────────────┐ ┌──────────────────────┐\n// │ view.Document │ │ view.Document │ Retrieves the selected model.DocumentFragment\n// │ copy │ │ cut │ and converts it to view.DocumentFragment.\n// └───────────┬──────────┘ └───────────┬──────────┘\n// │ │\n// └────────────────┌────────────────┘\n// │\n// ┌─────────V────────┐\n// │ view.Document │ Processes view.DocumentFragment to text/html and text/plain\n// │ clipboardOutput │ and stores the results in data.dataTransfer.\n// └──────────────────┘\n//\n\n/**\n * The clipboard pipeline feature. It is responsible for intercepting the `paste` and `drop` events and\n * passing the pasted content through a series of events in order to insert it into the editor's content.\n * It also handles the `cut` and `copy` events to fill the native clipboard with the serialized editor's data.\n *\n * # Input pipeline\n *\n * The behavior of the default handlers (all at a `low` priority):\n *\n * ## Event: `paste` or `drop`\n *\n * 1. Translates the event data.\n * 2. Fires the {@link module:engine/view/document~Document#event:clipboardInput `view.Document#clipboardInput`} event.\n *\n * ## Event: `view.Document#clipboardInput`\n *\n * 1. If the `data.content` event field is already set (by some listener on a higher priority), it takes this content and fires the event\n * from the last point.\n * 2. Otherwise, it retrieves `text/html` or `text/plain` from `data.dataTransfer`.\n * 3. Normalizes the raw data by applying simple filters on string data.\n * 4. Processes the raw data to {@link module:engine/view/documentfragment~DocumentFragment `view.DocumentFragment`} with the\n * {@link module:engine/controller/datacontroller~DataController#htmlProcessor `DataController#htmlProcessor`}.\n * 5. Fires the {@link module:clipboard/clipboardpipeline~ClipboardPipeline#event:inputTransformation\n * `ClipboardPipeline#inputTransformation`} event with the view document fragment in the `data.content` event field.\n *\n * ## Event: `ClipboardPipeline#inputTransformation`\n *\n * 1. Converts {@link module:engine/view/documentfragment~DocumentFragment `view.DocumentFragment`} from the `data.content` field to\n * {@link module:engine/model/documentfragment~DocumentFragment `model.DocumentFragment`}.\n * 2. Fires the {@link module:clipboard/clipboardpipeline~ClipboardPipeline#event:contentInsertion `ClipboardPipeline#contentInsertion`}\n * event with the model document fragment in the `data.content` event field.\n * **Note**: The `ClipboardPipeline#contentInsertion` event is fired within a model change block to allow other handlers\n * to run in the same block without post-fixers called in between (i.e., the selection post-fixer).\n *\n * ## Event: `ClipboardPipeline#contentInsertion`\n *\n * 1. Calls {@link module:engine/model/model~Model#insertContent `model.insertContent()`} to insert `data.content`\n * at the current selection position.\n *\n * # Output pipeline\n *\n * The behavior of the default handlers (all at a `low` priority):\n *\n * ## Event: `copy`, `cut` or `dragstart`\n *\n * 1. Retrieves the selected {@link module:engine/model/documentfragment~DocumentFragment `model.DocumentFragment`} by calling\n * {@link module:engine/model/model~Model#getSelectedContent `model#getSelectedContent()`}.\n * 2. Converts the model document fragment to {@link module:engine/view/documentfragment~DocumentFragment `view.DocumentFragment`}.\n * 3. Fires the {@link module:engine/view/document~Document#event:clipboardOutput `view.Document#clipboardOutput`} event\n * with the view document fragment in the `data.content` event field.\n *\n * ## Event: `view.Document#clipboardOutput`\n *\n * 1. Processes `data.content` to HTML and plain text with the\n * {@link module:engine/controller/datacontroller~DataController#htmlProcessor `DataController#htmlProcessor`}.\n * 2. Updates the `data.dataTransfer` data for `text/html` and `text/plain` with the processed data.\n * 3. For the `cut` method, calls {@link module:engine/model/model~Model#deleteContent `model.deleteContent()`}\n * on the current selection.\n *\n * Read more about the clipboard integration in the {@glink framework/deep-dive/clipboard clipboard deep-dive} guide.\n */\nexport default class ClipboardPipeline extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ClipboardPipeline' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\n\t\tview.addObserver( ClipboardObserver );\n\n\t\tthis._setupPasteDrop();\n\t\tthis._setupCopyCut();\n\t}\n\n\t/**\n\t * The clipboard paste pipeline.\n\t */\n\tprivate _setupPasteDrop(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\t// Pasting is disabled when selection is in non-editable place.\n\t\t// Dropping is disabled in drag and drop handler.\n\t\tthis.listenTo<ViewDocumentClipboardInputEvent>( viewDocument, 'clipboardInput', ( evt, data ) => {\n\t\t\tif ( data.method == 'paste' && !editor.model.canEditAt( editor.model.document.selection ) ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'highest' } );\n\n\t\tthis.listenTo<ViewDocumentClipboardInputEvent>( viewDocument, 'clipboardInput', ( evt, data ) => {\n\t\t\tconst dataTransfer = data.dataTransfer;\n\t\t\tlet content: ViewDocumentFragment;\n\n\t\t\t// Some feature could already inject content in the higher priority event handler (i.e., codeBlock).\n\t\t\tif ( data.content ) {\n\t\t\t\tcontent = data.content;\n\t\t\t} else {\n\t\t\t\tlet contentData = '';\n\n\t\t\t\tif ( dataTransfer.getData( 'text/html' ) ) {\n\t\t\t\t\tcontentData = normalizeClipboardHtml( dataTransfer.getData( 'text/html' ) );\n\t\t\t\t} else if ( dataTransfer.getData( 'text/plain' ) ) {\n\t\t\t\t\tcontentData = plainTextToHtml( dataTransfer.getData( 'text/plain' ) );\n\t\t\t\t}\n\n\t\t\t\tcontent = this.editor.data.htmlProcessor.toView( contentData );\n\t\t\t}\n\n\t\t\tconst eventInfo = new EventInfo( this, 'inputTransformation' );\n\n\t\t\tthis.fire<ClipboardInputTransformationEvent>( eventInfo, {\n\t\t\t\tcontent,\n\t\t\t\tdataTransfer,\n\t\t\t\ttargetRanges: data.targetRanges,\n\t\t\t\tmethod: data.method as 'paste' | 'drop'\n\t\t\t} );\n\n\t\t\t// If CKEditor handled the input, do not bubble the original event any further.\n\t\t\t// This helps external integrations recognize this fact and act accordingly.\n\t\t\t// https://github.com/ckeditor/ckeditor5-upload/issues/92\n\t\t\tif ( eventInfo.stop.called ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\n\t\t\tview.scrollToTheSelection();\n\t\t}, { priority: 'low' } );\n\n\t\tthis.listenTo<ClipboardInputTransformationEvent>( this, 'inputTransformation', ( evt, data ) => {\n\t\t\tif ( data.content.isEmpty ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst dataController = this.editor.data;\n\n\t\t\t// Convert the pasted content into a model document fragment.\n\t\t\t// The conversion is contextual, but in this case an \"all allowed\" context is needed\n\t\t\t// and for that we use the $clipboardHolder item.\n\t\t\tconst modelFragment = dataController.toModel( data.content, '$clipboardHolder' );\n\n\t\t\tif ( modelFragment.childCount == 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevt.stop();\n\n\t\t\t// Fire content insertion event in a single change block to allow other handlers to run in the same block\n\t\t\t// without post-fixers called in between (i.e., the selection post-fixer).\n\t\t\tmodel.change( () => {\n\t\t\t\tthis.fire<ClipboardContentInsertionEvent>( 'contentInsertion', {\n\t\t\t\t\tcontent: modelFragment,\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tdataTransfer: data.dataTransfer,\n\t\t\t\t\ttargetRanges: data.targetRanges\n\t\t\t\t} );\n\t\t\t} );\n\t\t}, { priority: 'low' } );\n\n\t\tthis.listenTo<ClipboardContentInsertionEvent>( this, 'contentInsertion', ( evt, data ) => {\n\t\t\tdata.resultRange = model.insertContent( data.content );\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * The clipboard copy/cut pipeline.\n\t */\n\tprivate _setupCopyCut(): void {\n\t\tconst editor = this.editor;\n\t\tconst modelDocument = editor.model.document;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\tconst onCopyCut = ( evt: EventInfo<'copy' | 'cut'>, data: DomEventData<ClipboardEvent> & ClipboardEventData ) => {\n\t\t\tconst dataTransfer = data.dataTransfer;\n\n\t\t\tdata.preventDefault();\n\n\t\t\tconst content = editor.data.toView( editor.model.getSelectedContent( modelDocument.selection ) );\n\n\t\t\tviewDocument.fire<ViewDocumentClipboardOutputEvent>( 'clipboardOutput', {\n\t\t\t\tdataTransfer,\n\t\t\t\tcontent,\n\t\t\t\tmethod: evt.name\n\t\t\t} );\n\t\t};\n\n\t\tthis.listenTo<ViewDocumentCopyEvent>( viewDocument, 'copy', onCopyCut, { priority: 'low' } );\n\t\tthis.listenTo<ViewDocumentCutEvent>( viewDocument, 'cut', ( evt, data ) => {\n\t\t\t// Cutting is disabled when selection is in non-editable place.\n\t\t\t// See: https://github.com/ckeditor/ckeditor5-clipboard/issues/26.\n\t\t\tif ( !editor.model.canEditAt( editor.model.document.selection ) ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t} else {\n\t\t\t\tonCopyCut( evt, data );\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\n\t\tthis.listenTo<ViewDocumentClipboardOutputEvent>( viewDocument, 'clipboardOutput', ( evt, data ) => {\n\t\t\tif ( !data.content.isEmpty ) {\n\t\t\t\tdata.dataTransfer.setData( 'text/html', this.editor.data.htmlProcessor.toData( data.content ) );\n\t\t\t\tdata.dataTransfer.setData( 'text/plain', viewToPlainText( data.content ) );\n\t\t\t}\n\n\t\t\tif ( data.method == 'cut' ) {\n\t\t\t\teditor.model.deleteContent( modelDocument.selection );\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\t}\n}\n\n/**\n * Fired with the `content`, `dataTransfer`, `method`, and `targetRanges` properties:\n *\n * * The `content` which comes from the clipboard (it was pasted or dropped) should be processed in order to be inserted into the editor.\n * * The `dataTransfer` object is available in case the transformation functions need access to the raw clipboard data.\n * * The `method` indicates the original DOM event (for example `'drop'` or `'paste'`).\n * * The `targetRanges` property is an array of view ranges (it is available only for `'drop'`).\n *\n * It is a part of the {@glink framework/deep-dive/clipboard#input-pipeline clipboard input pipeline}.\n *\n * **Note**: You should not stop this event if you want to change the input data. You should modify the `content` property instead.\n *\n * @see module:clipboard/clipboardobserver~ClipboardObserver\n * @see module:clipboard/clipboardpipeline~ClipboardPipeline\n *\n * @eventName ~ClipboardPipeline#inputTransformation\n * @param data The event data.\n */\nexport type ClipboardInputTransformationEvent = {\n\tname: 'inputTransformation';\n\targs: [ data: ClipboardInputTransformationData ];\n};\n\n/**\n * The data of 'inputTransformation' event.\n */\nexport interface ClipboardInputTransformationData {\n\n\t/**\n\t * The event data.\n\t * The content to be inserted into the editor. It can be modified by event listeners. Read more about the clipboard pipelines in\n\t * the {@glink framework/deep-dive/clipboard clipboard deep-dive} guide.\n\t */\n\tcontent: ViewDocumentFragment;\n\n\t/**\n\t * The data transfer instance.\n\t */\n\tdataTransfer: DataTransfer;\n\n\t/**\n\t * The target drop ranges.\n\t */\n\ttargetRanges: Array<ViewRange> | null;\n\n\t/**\n\t * Whether the event was triggered by a paste or a drop operation.\n\t */\n\tmethod: 'paste' | 'drop';\n}\n\n/**\n * Fired with the `content`, `dataTransfer`, `method`, and `targetRanges` properties:\n *\n * * The `content` which comes from the clipboard (was pasted or dropped) should be processed in order to be inserted into the editor.\n * * The `dataTransfer` object is available in case the transformation functions need access to the raw clipboard data.\n * * The `method` indicates the original DOM event (for example `'drop'` or `'paste'`).\n * * The `targetRanges` property is an array of view ranges (it is available only for `'drop'`).\n *\n * Event handlers can modify the content according to the final insertion position.\n *\n * It is a part of the {@glink framework/deep-dive/clipboard#input-pipeline clipboard input pipeline}.\n *\n * **Note**: You should not stop this event if you want to change the input data. You should modify the `content` property instead.\n *\n * @see module:clipboard/clipboardobserver~ClipboardObserver\n * @see module:clipboard/clipboardpipeline~ClipboardPipeline\n * @see module:clipboard/clipboardpipeline~ClipboardPipeline#event:inputTransformation\n *\n * @eventName ~ClipboardPipeline#contentInsertion\n * @param data The event data.\n */\nexport type ClipboardContentInsertionEvent = {\n\tname: 'contentInsertion';\n\targs: [ data: ClipboardContentInsertionData ];\n};\n\n/**\n * The data of 'contentInsertion' event.\n */\nexport interface ClipboardContentInsertionData {\n\n\t/**\n\t * The content to be inserted into the editor.\n\t * Read more about the clipboard pipelines in the {@glink framework/deep-dive/clipboard clipboard deep-dive} guide.\n\t */\n\tcontent: DocumentFragment;\n\n\t/**\n\t * Whether the event was triggered by a paste or a drop operation.\n\t */\n\tmethod: 'paste' | 'drop';\n\n\t/**\n\t * The data transfer instance.\n\t */\n\n\tdataTransfer: DataTransfer;\n\n\t/**\n\t * The target drop ranges.\n\t */\n\ttargetRanges: Array<ViewRange> | null;\n\n\t/**\n\t * The result of the `model.insertContent()` call\n\t * (inserted by the event handler at a low priority).\n\t */\n\tresultRange?: Range;\n}\n\n/**\n * Fired on {@link module:engine/view/document~Document#event:copy} and {@link module:engine/view/document~Document#event:cut}\n * with a copy of the selected content. The content can be processed before it ends up in the clipboard.\n *\n * It is a part of the {@glink framework/deep-dive/clipboard#output-pipeline clipboard output pipeline}.\n *\n * @see module:clipboard/clipboardobserver~ClipboardObserver\n * @see module:clipboard/clipboardpipeline~ClipboardPipeline\n *\n * @eventName module:engine/view/document~Document#clipboardOutput\n * @param data The event data.\n */\nexport type ViewDocumentClipboardOutputEvent = {\n\tname: 'clipboardOutput';\n\targs: [ data: ViewDocumentClipboardOutputEventData ];\n};\n\n/**\n * The value of the 'clipboardOutput' event.\n */\nexport interface ViewDocumentClipboardOutputEventData {\n\n\t/**\n\t * The data transfer instance.\n\t *\n\t * @readonly\n\t */\n\tdataTransfer: DataTransfer;\n\n\t/**\n\t * Content to be put into the clipboard. It can be modified by the event listeners.\n\t * Read more about the clipboard pipelines in the {@glink framework/deep-dive/clipboard clipboard deep-dive} guide.\n\t */\n\tcontent: ViewDocumentFragment;\n\n\t/**\n\t * Whether the event was triggered by a copy or cut operation.\n\t */\n\tmethod: 'copy' | 'cut' | 'dragstart';\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module clipboard/utils/plaintexttohtml\n */\n\n/**\n * Converts plain text to its HTML-ized version.\n *\n * @param text The plain text to convert.\n * @returns HTML generated from the plain text.\n */\nexport default function plainTextToHtml( text: string ): string {\n\ttext = text\n\t\t// Encode <>.\n\t\t.replace( /</g, '<' )\n\t\t.replace( />/g, '>' )\n\t\t// Creates a paragraph for each double line break.\n\t\t.replace( /\\r?\\n\\r?\\n/g, '</p><p>' )\n\t\t// Creates a line break for each single line break.\n\t\t.replace( /\\r?\\n/g, '<br>' )\n\t\t// Replace tabs with four spaces.\n\t\t.replace( /\\t/g, '    ' )\n\t\t// Preserve trailing spaces (only the first and last one – the rest is handled below).\n\t\t.replace( /^\\s/, ' ' )\n\t\t.replace( /\\s$/, ' ' )\n\t\t// Preserve other subsequent spaces now.\n\t\t.replace( /\\s\\s/g, '  ' );\n\n\tif ( text.includes( '</p><p>' ) || text.includes( '<br>' ) ) {\n\t\t// If we created paragraphs above, add the trailing ones.\n\t\ttext = `<p>${ text }</p>`;\n\t}\n\n\t// TODO:\n\t// * What about '\\nfoo' vs ' foo'?\n\n\treturn text;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module clipboard/utils/normalizeclipboarddata\n */\n\n/**\n * Removes some popular browser quirks out of the clipboard data (HTML).\n * Removes all HTML comments. These are considered an internal thing and it makes little sense if they leak into the editor data.\n *\n * @param data The HTML data to normalize.\n * @returns Normalized HTML.\n */\nexport default function normalizeClipboardData( data: string ): string {\n\treturn data\n\t\t.replace( /<span(?: class=\"Apple-converted-space\"|)>(\\s+)<\\/span>/g, ( fullMatch, spaces ) => {\n\t\t\t// Handle the most popular and problematic case when even a single space becomes an nbsp;.\n\t\t\t// Decode those to normal spaces. Read more in https://github.com/ckeditor/ckeditor5-clipboard/issues/2.\n\t\t\tif ( spaces.length == 1 ) {\n\t\t\t\treturn ' ';\n\t\t\t}\n\n\t\t\treturn spaces;\n\t\t} )\n\t\t// Remove all HTML comments.\n\t\t.replace( /<!--[\\s\\S]*?-->/g, '' );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module typing/utils/changebuffer\n */\n\nimport type {\n\tModel,\n\tBatch,\n\tDocumentChangeEvent,\n\tDocumentSelectionChangeEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport type { EventInfo } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Change buffer allows to group atomic changes (like characters that have been typed) into\n * {@link module:engine/model/batch~Batch batches}.\n *\n * Batches represent single undo steps, hence changes added to one single batch are undone together.\n *\n * The buffer has a configurable limit of atomic changes that it can accommodate. After the limit was\n * exceeded (see {@link ~ChangeBuffer#input}), a new batch is created in {@link ~ChangeBuffer#batch}.\n *\n * To use the change buffer you need to let it know about the number of changes that were added to the batch:\n *\n * ```ts\n * const buffer = new ChangeBuffer( model, LIMIT );\n *\n * // Later on in your feature:\n * buffer.batch.insert( pos, insertedCharacters );\n * buffer.input( insertedCharacters.length );\n * ```\n */\nexport default class ChangeBuffer {\n\t/**\n\t * The model instance.\n\t */\n\tpublic readonly model: Model;\n\n\t/**\n\t * The maximum number of atomic changes which can be contained in one batch.\n\t */\n\tpublic readonly limit: number;\n\n\t/**\n\t * Whether the buffer is locked. A locked buffer cannot be reset unless it gets unlocked.\n\t */\n\tprivate _isLocked: boolean;\n\n\t/**\n\t * The number of atomic changes in the buffer. Once it exceeds the {@link #limit},\n\t * the {@link #batch batch} is set to a new one.\n\t */\n\tprivate _size: number;\n\n\t/**\n\t * The current batch instance.\n\t */\n\tprivate _batch: Batch | null = null;\n\n\t/**\n\t * The callback to document the change event which later needs to be removed.\n\t */\n\tprivate readonly _changeCallback: ( evt: EventInfo, batch: Batch ) => void;\n\n\t/**\n\t * The callback to document selection `change:attribute` and `change:range` events which resets the buffer.\n\t */\n\tprivate readonly _selectionChangeCallback: () => void;\n\n\t/**\n\t * Creates a new instance of the change buffer.\n\t *\n\t * @param limit The maximum number of atomic changes which can be contained in one batch.\n\t */\n\tconstructor( model: Model, limit: number = 20 ) {\n\t\tthis.model = model;\n\t\tthis._size = 0;\n\t\tthis.limit = limit;\n\t\tthis._isLocked = false;\n\n\t\t// The function to be called in order to notify the buffer about batches which appeared in the document.\n\t\t// The callback will check whether it is a new batch and in that case the buffer will be flushed.\n\t\t//\n\t\t// The reason why the buffer needs to be flushed whenever a new batch appears is that the changes added afterwards\n\t\t// should be added to a new batch. For instance, when the user types, then inserts an image, and then types again,\n\t\t// the characters typed after inserting the image should be added to a different batch than the characters typed before.\n\t\tthis._changeCallback = ( evt, batch ) => {\n\t\t\tif ( batch.isLocal && batch.isUndoable && batch !== this._batch ) {\n\t\t\t\tthis._reset( true );\n\t\t\t}\n\t\t};\n\n\t\tthis._selectionChangeCallback = () => {\n\t\t\tthis._reset();\n\t\t};\n\n\t\tthis.model.document.on<DocumentChangeEvent>( 'change', this._changeCallback );\n\n\t\tthis.model.document.selection.on<DocumentSelectionChangeEvent>( 'change:range', this._selectionChangeCallback );\n\t\tthis.model.document.selection.on<DocumentSelectionChangeEvent>( 'change:attribute', this._selectionChangeCallback );\n\t}\n\n\t/**\n\t * The current batch to which a feature should add its operations. Once the {@link #size}\n\t * is reached or exceeds the {@link #limit}, the batch is set to a new instance and the size is reset.\n\t */\n\tpublic get batch(): Batch {\n\t\tif ( !this._batch ) {\n\t\t\tthis._batch = this.model.createBatch( { isTyping: true } );\n\t\t}\n\n\t\treturn this._batch;\n\t}\n\n\t/**\n\t * The number of atomic changes in the buffer. Once it exceeds the {@link #limit},\n\t * the {@link #batch batch} is set to a new one.\n\t */\n\tpublic get size(): number {\n\t\treturn this._size;\n\t}\n\n\t/**\n\t * The input number of changes into the buffer. Once the {@link #size} is\n\t * reached or exceeds the {@link #limit}, the batch is set to a new instance and the size is reset.\n\t *\n\t * @param changeCount The number of atomic changes to input.\n\t */\n\tpublic input( changeCount: number ): void {\n\t\tthis._size += changeCount;\n\n\t\tif ( this._size >= this.limit ) {\n\t\t\tthis._reset( true );\n\t\t}\n\t}\n\n\t/**\n\t * Whether the buffer is locked. A locked buffer cannot be reset unless it gets unlocked.\n\t */\n\tpublic get isLocked(): boolean {\n\t\treturn this._isLocked;\n\t}\n\n\t/**\n\t * Locks the buffer.\n\t */\n\tpublic lock(): void {\n\t\tthis._isLocked = true;\n\t}\n\n\t/**\n\t * Unlocks the buffer.\n\t */\n\tpublic unlock(): void {\n\t\tthis._isLocked = false;\n\t}\n\n\t/**\n\t * Destroys the buffer.\n\t */\n\tpublic destroy(): void {\n\t\tthis.model.document.off( 'change', this._changeCallback );\n\t\tthis.model.document.selection.off( 'change:range', this._selectionChangeCallback );\n\t\tthis.model.document.selection.off( 'change:attribute', this._selectionChangeCallback );\n\t}\n\n\t/**\n\t * Resets the change buffer.\n\t *\n\t * @param ignoreLock Whether internal lock {@link #isLocked} should be ignored.\n\t */\n\tprivate _reset( ignoreLock: boolean = false ): void {\n\t\tif ( !this.isLocked || ignoreLock ) {\n\t\t\tthis._batch = null;\n\t\t\tthis._size = 0;\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module typing/inserttextcommand\n */\n\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\n\nimport ChangeBuffer from './utils/changebuffer';\n\nimport type { DocumentSelection, Range, Selection } from '@ckeditor/ckeditor5-engine';\n\n/**\n * The insert text command. Used by the {@link module:typing/input~Input input feature} to handle typing.\n */\nexport default class InsertTextCommand extends Command {\n\t/**\n\t * Typing's change buffer used to group subsequent changes into batches.\n\t */\n\tprivate readonly _buffer: ChangeBuffer;\n\n\t/**\n\t * Creates an instance of the command.\n\t *\n\t * @param undoStepSize The maximum number of atomic changes\n\t * which can be contained in one batch in the command buffer.\n\t */\n\tconstructor( editor: Editor, undoStepSize: number ) {\n\t\tsuper( editor );\n\n\t\tthis._buffer = new ChangeBuffer( editor.model, undoStepSize );\n\n\t\t// Since this command may execute on different selectable than selection, it should be checked directly in execute block.\n\t\tthis._isEnabledBasedOnSelection = false;\n\t}\n\n\t/**\n\t * The current change buffer.\n\t */\n\tpublic get buffer(): ChangeBuffer {\n\t\treturn this._buffer;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._buffer.destroy();\n\t}\n\n\t/**\n\t * Executes the input command. It replaces the content within the given range with the given text.\n\t * Replacing is a two step process, first the content within the range is removed and then the new text is inserted\n\t * at the beginning of the range (which after the removal is a collapsed range).\n\t *\n\t * @fires execute\n\t * @param options The command options.\n\t */\n\tpublic override execute( options: InsertTextCommandOptions = {} ): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\t\tconst text = options.text || '';\n\t\tconst textInsertions = text.length;\n\n\t\tlet selection: Selection | DocumentSelection = doc.selection;\n\n\t\tif ( options.selection ) {\n\t\t\tselection = options.selection;\n\t\t} else if ( options.range ) {\n\t\t\tselection = model.createSelection( options.range );\n\t\t}\n\n\t\t// Stop executing if selectable is in non-editable place.\n\t\tif ( !model.canEditAt( selection ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resultRange = options.resultRange;\n\n\t\tmodel.enqueueChange( this._buffer.batch, writer => {\n\t\t\tthis._buffer.lock();\n\n\t\t\tmodel.deleteContent( selection );\n\n\t\t\tif ( text ) {\n\t\t\t\tmodel.insertContent( writer.createText( text, doc.selection.getAttributes() ), selection );\n\t\t\t}\n\n\t\t\tif ( resultRange ) {\n\t\t\t\twriter.setSelection( resultRange );\n\t\t\t} else if ( !selection.is( 'documentSelection' ) ) {\n\t\t\t\twriter.setSelection( selection );\n\t\t\t}\n\n\t\t\tthis._buffer.unlock();\n\n\t\t\tthis._buffer.input( textInsertions );\n\t\t} );\n\t}\n}\n\n/**\n * Interface with parameters for executing InsertTextCommand.\n *\n * Both `range` and `selection` parameters are used for defining selection but should not be used together.\n * If both are defined, only `selection` will be considered.\n */\nexport interface InsertTextCommandOptions {\n\n\t/**\n\t * The text to be inserted.\n\t */\n\ttext?: string;\n\n\t/**\n\t * The selection in which the text is inserted.\n\t * Inserting a text into a selection deletes the current content within selection ranges. If the selection is not specified,\n\t * the current selection in the model will be used instead.\n\t */\n\tselection?: Selection | DocumentSelection;\n\n\t/**\n\t * The range in which the text is inserted. Defaults to the first range in the current selection.\n\t */\n\trange?: Range;\n\n\t/**\n\t * The range where the selection should be placed after the insertion.\n\t * If not specified, the selection will be placed right after the inserted text.\n\t */\n\tresultRange?: Range;\n}\n\nexport interface InsertTextCommandExecuteEvent {\n\tname: 'execute';\n\targs: [\n\t\tdata: [ options: InsertTextCommandOptions ]\n\t];\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module typing/inserttextobserver\n */\n\nimport { env, EventInfo } from '@ckeditor/ckeditor5-utils';\n\nimport {\n\tDomEventData,\n\tObserver,\n\tFocusObserver,\n\ttype View,\n\ttype ViewDocumentCompositionEndEvent,\n\ttype ViewDocumentInputEvent,\n\ttype ViewDocumentSelection,\n\ttype ViewRange,\n\ttype ViewSelection\n} from '@ckeditor/ckeditor5-engine';\n\nconst TYPING_INPUT_TYPES = [\n\t// For collapsed range:\n\t//\t- This one is a regular typing (all browsers, all systems).\n\t//\t- This one is used by Chrome when typing accented letter – 2nd step when the user selects the accent (Mac).\n\t// For non-collapsed range:\n\t//\t- This one is used by Chrome when typing accented letter – when the selection box first appears (Mac).\n\t//\t- This one is used by Safari when accepting spell check suggestions from the context menu (Mac).\n\t'insertText',\n\n\t// This one is used by Safari when typing accented letter (Mac).\n\t// This one is used by Safari when accepting spell check suggestions from the autocorrection pop-up (Mac).\n\t'insertReplacementText'\n];\n\n/**\n * Text insertion observer introduces the {@link module:engine/view/document~Document#event:insertText} event.\n */\nexport default class InsertTextObserver extends Observer {\n\t/**\n\t * Instance of the focus observer. Insert text observer calls\n\t * {@link module:engine/view/observer/focusobserver~FocusObserver#flush} to mark the latest focus change as complete.\n\t */\n\tpublic readonly focusObserver: FocusObserver;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( view: View ) {\n\t\tsuper( view );\n\n\t\tthis.focusObserver = view.getObserver( FocusObserver );\n\n\t\t// On Android composition events should immediately be applied to the model. Rendering is not disabled.\n\t\t// On non-Android the model is updated only on composition end.\n\t\t// On Android we can't rely on composition start/end to update model.\n\t\tif ( env.isAndroid ) {\n\t\t\tTYPING_INPUT_TYPES.push( 'insertCompositionText' );\n\t\t}\n\n\t\tconst viewDocument = view.document;\n\n\t\tviewDocument.on<ViewDocumentInputEvent>( 'beforeinput', ( evt, data ) => {\n\t\t\tif ( !this.isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { data: text, targetRanges, inputType, domEvent } = data;\n\n\t\t\tif ( !TYPING_INPUT_TYPES.includes( inputType ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Mark the latest focus change as complete (we are typing in editable after the focus\n\t\t\t// so the selection is in the focused element).\n\t\t\tthis.focusObserver.flush();\n\n\t\t\tconst eventInfo = new EventInfo( viewDocument, 'insertText' );\n\n\t\t\tviewDocument.fire( eventInfo, new DomEventData( view, domEvent, {\n\t\t\t\ttext,\n\t\t\t\tselection: view.createSelection( targetRanges )\n\t\t\t} ) );\n\n\t\t\t// Stop the beforeinput event if `delete` event was stopped.\n\t\t\t// https://github.com/ckeditor/ckeditor5/issues/753\n\t\t\tif ( eventInfo.stop.called ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t} );\n\n\t\t// Note: The priority must be lower than the CompositionObserver handler to call it after the renderer is unblocked.\n\t\tviewDocument.on<ViewDocumentCompositionEndEvent>( 'compositionend', ( evt, { data, domEvent } ) => {\n\t\t\t// On Android composition events are immediately applied to the model.\n\t\t\t// On non-Android the model is updated only on composition end.\n\t\t\t// On Android we can't rely on composition start/end to update model.\n\t\t\tif ( !this.isEnabled || env.isAndroid ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// In case of aborted composition.\n\t\t\tif ( !data ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( `%c[InsertTextObserver]%c Fire insertText event, text: ${ JSON.stringify( data ) }`,\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold; color: green;', ''\n\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t// How do we know where to insert the composed text?\n\t\t\t// The selection observer is blocked and the view is not updated with the composition changes.\n\t\t\t// There were three options:\n\t\t\t// - Store the selection on `compositionstart` and use it now. This wouldn't work in RTC\n\t\t\t// where the view would change and the stored selection might get incorrect.\n\t\t\t// We'd need to fallback to the current view selection anyway.\n\t\t\t// - Use the current view selection. This is a bit weird and non-intuitive because\n\t\t\t// this isn't necessarily the selection on which the user started composing.\n\t\t\t// We cannot even know whether it's still collapsed (there might be some weird\n\t\t\t// editor feature that changed it in unpredictable ways for us). But it's by far\n\t\t\t// the simplest solution and should be stable (the selection is definitely correct)\n\t\t\t// and probably mostly predictable (features usually don't modify the selection\n\t\t\t// unless called explicitly by the user).\n\t\t\t// - Try to follow it from the `beforeinput` events. This would be really complex as each\n\t\t\t// `beforeinput` would come with just the range it's changing and we'd need to calculate that.\n\t\t\t// We decided to go with the 2nd option for its simplicity and stability.\n\t\t\tviewDocument.fire( 'insertText', new DomEventData( view, domEvent, {\n\t\t\t\ttext: data,\n\t\t\t\tselection: viewDocument.selection\n\t\t\t} ) );\n\t\t}, { priority: 'lowest' } );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic observe(): void {}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic stopObserving(): void {}\n}\n\n/**\n * Event fired when the user types text, for instance presses <kbd>A</kbd> or <kbd>?</kbd> in the\n * editing view document.\n *\n * **Note**: This event will **not** fire for keystrokes such as <kbd>Delete</kbd> or <kbd>Enter</kbd>.\n * They have dedicated events, see {@link module:engine/view/document~Document#event:delete} and\n * {@link module:engine/view/document~Document#event:enter} to learn more.\n *\n * **Note**: This event is fired by the {@link module:typing/inserttextobserver~InsertTextObserver input feature}.\n *\n * @eventName module:engine/view/document~Document#insertText\n * @param data The event data.\n */\nexport type ViewDocumentInsertTextEvent = {\n\tname: 'insertText';\n\targs: [ data: InsertTextEventData ];\n};\n\nexport interface InsertTextEventData extends DomEventData {\n\n\t/**\n\t * The text to be inserted.\n\t */\n\ttext: string;\n\n\t/**\n\t * The selection into which the text should be inserted.\n\t * If not specified, the insertion should occur at the current view selection.\n\t */\n\tselection: ViewSelection | ViewDocumentSelection;\n\n\t/**\n\t * The range that view selection should be set to after insertion.\n\t */\n\tresultRange?: ViewRange;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module typing/input\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport { env } from '@ckeditor/ckeditor5-utils';\n\nimport InsertTextCommand from './inserttextcommand';\nimport InsertTextObserver, { type ViewDocumentInsertTextEvent } from './inserttextobserver';\n\nimport type { Model } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Handles text input coming from the keyboard or other input methods.\n */\nexport default class Input extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Input' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\t\tconst modelSelection = model.document.selection;\n\n\t\tview.addObserver( InsertTextObserver );\n\n\t\t// TODO The above default configuration value should be defined using editor.config.define() once it's fixed.\n\t\tconst insertTextCommand = new InsertTextCommand( editor, editor.config.get( 'typing.undoStep' ) || 20 );\n\n\t\t// Register `insertText` command and add `input` command as an alias for backward compatibility.\n\t\teditor.commands.add( 'insertText', insertTextCommand );\n\t\teditor.commands.add( 'input', insertTextCommand );\n\n\t\tthis.listenTo<ViewDocumentInsertTextEvent>( view.document, 'insertText', ( evt, data ) => {\n\t\t\t// Rendering is disabled while composing so prevent events that will be rendered by the engine\n\t\t\t// and should not be applied by the browser.\n\t\t\tif ( !view.document.isComposing ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t}\n\n\t\t\tconst { text, selection: viewSelection, resultRange: viewResultRange } = data;\n\n\t\t\t// If view selection was specified, translate it to model selection.\n\t\t\tconst modelRanges = Array.from( viewSelection.getRanges() ).map( viewRange => {\n\t\t\t\treturn editor.editing.mapper.toModelRange( viewRange );\n\t\t\t} );\n\n\t\t\tlet insertText = text;\n\n\t\t\t// Typing in English on Android is firing composition events for the whole typed word.\n\t\t\t// We need to check the target range text to only apply the difference.\n\t\t\tif ( env.isAndroid ) {\n\t\t\t\tconst selectedText = Array.from( modelRanges[ 0 ].getItems() ).reduce( ( rangeText, node ) => {\n\t\t\t\t\treturn rangeText + ( node.is( '$textProxy' ) ? node.data : '' );\n\t\t\t\t}, '' );\n\n\t\t\t\tif ( selectedText ) {\n\t\t\t\t\tif ( selectedText.length <= insertText.length ) {\n\t\t\t\t\t\tif ( insertText.startsWith( selectedText ) ) {\n\t\t\t\t\t\t\tinsertText = insertText.substring( selectedText.length );\n\t\t\t\t\t\t\t( modelRanges[ 0 ] as any ).start = modelRanges[ 0 ].start.getShiftedBy( selectedText.length );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( selectedText.startsWith( insertText ) ) {\n\t\t\t\t\t\t\t// TODO this should be mapped as delete?\n\t\t\t\t\t\t\t( modelRanges[ 0 ] as any ).start = modelRanges[ 0 ].start.getShiftedBy( insertText.length );\n\t\t\t\t\t\t\tinsertText = '';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst insertTextCommandData: Parameters<InsertTextCommand[ 'execute' ]>[ 0 ] = {\n\t\t\t\ttext: insertText,\n\t\t\t\tselection: model.createSelection( modelRanges )\n\t\t\t};\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( '%c[Input]%c Execute insertText:',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold; color: green;', '',\n\t\t\t// @if CK_DEBUG_TYPING // \t\tinsertText,\n\t\t\t// @if CK_DEBUG_TYPING // \t\t`[${ modelRanges[ 0 ].start.path }]-[${ modelRanges[ 0 ].end.path }]`\n\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\tif ( viewResultRange ) {\n\t\t\t\tinsertTextCommandData.resultRange = editor.editing.mapper.toModelRange( viewResultRange );\n\t\t\t}\n\n\t\t\teditor.execute( 'insertText', insertTextCommandData );\n\n\t\t\tview.scrollToTheSelection();\n\t\t} );\n\n\t\tif ( env.isAndroid ) {\n\t\t\t// On Android with English keyboard, the composition starts just by putting caret\n\t\t\t// at the word end or by selecting a table column. This is not a real composition started.\n\t\t\t// Trigger delete content on first composition key pressed.\n\t\t\tthis.listenTo( view.document, 'keydown', ( evt, data ) => {\n\t\t\t\tif ( modelSelection.isCollapsed || data.keyCode != 229 || !view.document.isComposing ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconst firstPositionPath = modelSelection.getFirstPosition()!.path;\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconst lastPositionPath = modelSelection.getLastPosition()!.path;\n\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( '%c[Input]%c KeyDown 229 -> model.deleteContent()',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold; color: green;', '',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t`[${ firstPositionPath }]-[${ lastPositionPath }]`\n\t\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\tdeleteSelectionContent( model, insertTextCommand );\n\t\t\t} );\n\t\t} else {\n\t\t\t// Note: The priority must precede the CompositionObserver handler to call it before\n\t\t\t// the renderer is blocked, because we want to render this change.\n\t\t\tthis.listenTo( view.document, 'compositionstart', () => {\n\t\t\t\tif ( modelSelection.isCollapsed ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconst firstPositionPath = modelSelection.getFirstPosition()!.path;\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconst lastPositionPath = modelSelection.getLastPosition()!.path;\n\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( '%c[Input]%c Composition start -> model.deleteContent()',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold; color: green;', '',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t`[${ firstPositionPath }]-[${ lastPositionPath }]`\n\t\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\tdeleteSelectionContent( model, insertTextCommand );\n\t\t\t} );\n\t\t}\n\t}\n}\n\nfunction deleteSelectionContent( model: Model, insertTextCommand: InsertTextCommand ): void {\n\t// By relying on the state of the input command we allow disabling the entire input easily\n\t// by just disabling the input command. We could’ve used here the delete command but that\n\t// would mean requiring the delete feature which would block loading one without the other.\n\t// We could also check the editor.isReadOnly property, but that wouldn't allow to block\n\t// the input without blocking other features.\n\tif ( !insertTextCommand.isEnabled ) {\n\t\treturn;\n\t}\n\n\tconst buffer = insertTextCommand.buffer;\n\n\tbuffer.lock();\n\n\tmodel.enqueueChange( buffer.batch, () => {\n\t\tmodel.deleteContent( model.document.selection );\n\t} );\n\n\tbuffer.unlock();\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module typing/deletecommand\n */\n\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\nimport { count } from '@ckeditor/ckeditor5-utils';\nimport type { DocumentSelection, Element, Selection, Writer } from '@ckeditor/ckeditor5-engine';\n\nimport ChangeBuffer from './utils/changebuffer';\n\n/**\n * The delete command. Used by the {@link module:typing/delete~Delete delete feature} to handle the <kbd>Delete</kbd> and\n * <kbd>Backspace</kbd> keys.\n */\nexport default class DeleteCommand extends Command {\n\t/**\n\t * The directionality of the delete describing in what direction it should\n\t * consume the content when the selection is collapsed.\n\t */\n\tpublic readonly direction: 'forward' | 'backward';\n\n\t/**\n\t * Delete's change buffer used to group subsequent changes into batches.\n\t */\n\tprivate readonly _buffer: ChangeBuffer;\n\n\t/**\n\t * Creates an instance of the command.\n\t *\n\t * @param direction The directionality of the delete describing in what direction it\n\t * should consume the content when the selection is collapsed.\n\t */\n\tconstructor( editor: Editor, direction: 'forward' | 'backward' ) {\n\t\tsuper( editor );\n\n\t\tthis.direction = direction;\n\t\tthis._buffer = new ChangeBuffer( editor.model, editor.config.get( 'typing.undoStep' ) );\n\n\t\t// Since this command may execute on different selectable than selection, it should be checked directly in execute block.\n\t\tthis._isEnabledBasedOnSelection = false;\n\t}\n\n\t/**\n\t * The current change buffer.\n\t */\n\tpublic get buffer(): ChangeBuffer {\n\t\treturn this._buffer;\n\t}\n\n\t/**\n\t * Executes the delete command. Depending on whether the selection is collapsed or not, deletes its content\n\t * or a piece of content in the {@link #direction defined direction}.\n\t *\n\t * @fires execute\n\t * @param options The command options.\n\t * @param options.unit See {@link module:engine/model/utils/modifyselection~modifySelection}'s options.\n\t * @param options.sequence A number describing which subsequent delete event it is without the key being released.\n\t * See the {@link module:engine/view/document~Document#event:delete} event data.\n\t * @param options.selection Selection to remove. If not set, current model selection will be used.\n\t */\n\tpublic override execute( options: {\n\t\tunit?: 'character' | 'codePoint' | 'word';\n\t\tsequence?: number;\n\t\tselection?: Selection | DocumentSelection;\n\t} = {} ): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\n\t\tmodel.enqueueChange( this._buffer.batch, writer => {\n\t\t\tthis._buffer.lock();\n\n\t\t\tconst selection = writer.createSelection( options.selection || doc.selection );\n\n\t\t\t// Don't execute command when selection is in non-editable place.\n\t\t\tif ( !model.canEditAt( selection ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst sequence = options.sequence || 1;\n\n\t\t\t// Do not replace the whole selected content if selection was collapsed.\n\t\t\t// This prevents such situation:\n\t\t\t//\n\t\t\t// <h1></h1><p>[]</p>\t--> <h1>[</h1><p>]</p> \t\t--> <p></p>\n\t\t\t// starting content\t\t--> after `modifySelection`\t--> after `deleteContent`.\n\t\t\tconst doNotResetEntireContent = selection.isCollapsed;\n\n\t\t\t// Try to extend the selection in the specified direction.\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\tmodel.modifySelection( selection, {\n\t\t\t\t\tdirection: this.direction,\n\t\t\t\t\tunit: options.unit,\n\t\t\t\t\ttreatEmojiAsSingleUnit: true\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Check if deleting in an empty editor. See #61.\n\t\t\tif ( this._shouldEntireContentBeReplacedWithParagraph( sequence ) ) {\n\t\t\t\tthis._replaceEntireContentWithParagraph( writer );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Check if deleting in the first empty block.\n\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/8137.\n\t\t\tif ( this._shouldReplaceFirstBlockWithParagraph( selection, sequence ) ) {\n\t\t\t\tthis.editor.execute( 'paragraph', { selection } );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If selection is still collapsed, then there's nothing to delete.\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet changeCount = 0;\n\n\t\t\tselection.getFirstRange()!.getMinimalFlatRanges().forEach( range => {\n\t\t\t\tchangeCount += count(\n\t\t\t\t\trange.getWalker( { singleCharacters: true, ignoreElementEnd: true, shallow: true } )\n\t\t\t\t);\n\t\t\t} );\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( '%c[DeleteCommand]%c Delete content',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold; color: green;', '',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t`[${ selection.getFirstPosition()!.path }]-[${ selection.getLastPosition()!.path }]`, options\n\t\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\tmodel.deleteContent( selection, {\n\t\t\t\tdoNotResetEntireContent,\n\t\t\t\tdirection: this.direction\n\t\t\t} );\n\n\t\t\tthis._buffer.input( changeCount );\n\n\t\t\twriter.setSelection( selection );\n\n\t\t\tthis._buffer.unlock();\n\t\t} );\n\t}\n\n\t/**\n\t * If the user keeps <kbd>Backspace</kbd> or <kbd>Delete</kbd> key pressed, the content of the current\n\t * editable will be cleared. However, this will not yet lead to resetting the remaining block to a paragraph\n\t * (which happens e.g. when the user does <kbd>Ctrl</kbd> + <kbd>A</kbd>, <kbd>Backspace</kbd>).\n\t *\n\t * But, if the user pressed the key in an empty editable for the first time,\n\t * we want to replace the entire content with a paragraph if:\n\t *\n\t * * the current limit element is empty,\n\t * * the paragraph is allowed in the limit element,\n\t * * the limit doesn't already have a paragraph inside.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5-typing/issues/61.\n\t *\n\t * @param sequence A number describing which subsequent delete event it is without the key being released.\n\t */\n\tprivate _shouldEntireContentBeReplacedWithParagraph( sequence: number ): boolean {\n\t\t// Does nothing if user pressed and held the \"Backspace\" or \"Delete\" key.\n\t\tif ( sequence > 1 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\t\tconst selection = doc.selection;\n\t\tconst limitElement = model.schema.getLimitElement( selection );\n\n\t\t// If a collapsed selection contains the whole content it means that the content is empty\n\t\t// (from the user perspective).\n\t\tconst limitElementIsEmpty = selection.isCollapsed && selection.containsEntireContent( limitElement );\n\n\t\tif ( !limitElementIsEmpty ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !model.schema.checkChild( limitElement, 'paragraph' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst limitElementFirstChild = limitElement.getChild( 0 );\n\n\t\t// Does nothing if the limit element already contains only a paragraph.\n\t\t// We ignore the case when paragraph might have some inline elements (<p><inlineWidget>[]</inlineWidget></p>)\n\t\t// because we don't support such cases yet and it's unclear whether inlineWidget shouldn't be a limit itself.\n\t\tif ( limitElementFirstChild && limitElementFirstChild.is( 'element', 'paragraph' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * The entire content is replaced with the paragraph. Selection is moved inside the paragraph.\n\t *\n\t * @param writer The model writer.\n\t */\n\tprivate _replaceEntireContentWithParagraph( writer: Writer ): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\t\tconst selection = doc.selection;\n\t\tconst limitElement = model.schema.getLimitElement( selection );\n\t\tconst paragraph = writer.createElement( 'paragraph' );\n\n\t\twriter.remove( writer.createRangeIn( limitElement ) );\n\t\twriter.insert( paragraph, limitElement );\n\n\t\twriter.setSelection( paragraph, 0 );\n\t}\n\n\t/**\n\t * Checks if the selection is inside an empty element that is the first child of the limit element\n\t * and should be replaced with a paragraph.\n\t *\n\t * @param selection The selection.\n\t * @param sequence A number describing which subsequent delete event it is without the key being released.\n\t */\n\tprivate _shouldReplaceFirstBlockWithParagraph( selection: Selection, sequence: number ): boolean {\n\t\tconst model = this.editor.model;\n\n\t\t// Does nothing if user pressed and held the \"Backspace\" key or it was a \"Delete\" button.\n\t\tif ( sequence > 1 || this.direction != 'backward' ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !selection.isCollapsed ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst position = selection.getFirstPosition()!;\n\t\tconst limitElement = model.schema.getLimitElement( position );\n\t\tconst limitElementFirstChild = limitElement.getChild( 0 ) as Element;\n\n\t\t// Only elements that are direct children of the limit element can be replaced.\n\t\t// Unwrapping from a block quote should be handled in a dedicated feature.\n\t\tif ( position.parent != limitElementFirstChild ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// A block should be replaced only if it was empty.\n\t\tif ( !selection.containsEntireContent( limitElementFirstChild ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Replace with a paragraph only if it's allowed there.\n\t\tif ( !model.schema.checkChild( limitElement, 'paragraph' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Does nothing if the limit element already contains only a paragraph.\n\t\tif ( limitElementFirstChild.name == 'paragraph' ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module typing/deleteobserver\n */\n\nimport {\n\tenv,\n\tkeyCodes,\n\tisInsideCombinedSymbol,\n\tisInsideEmojiSequence,\n\tisInsideSurrogatePair\n} from '@ckeditor/ckeditor5-utils';\nimport {\n\tBubblingEventInfo,\n\tDomEventData,\n\tObserver,\n\ttype BubblingEvent,\n\ttype ViewDocumentInputEvent,\n\ttype ViewDocumentKeyDownEvent,\n\ttype ViewDocumentKeyUpEvent,\n\ttype ViewDocumentSelection,\n\ttype ViewSelection,\n\ttype ViewRange,\n\ttype View\n} from '@ckeditor/ckeditor5-engine';\n\nconst DELETE_CHARACTER = 'character';\nconst DELETE_WORD = 'word';\nconst DELETE_CODE_POINT = 'codePoint';\nconst DELETE_SELECTION = 'selection';\nconst DELETE_BACKWARD = 'backward';\nconst DELETE_FORWARD = 'forward';\n\ntype DeleteEventSpec = {\n\tunit: 'selection' | 'codePoint' | 'character' | 'word';\n\tdirection: 'backward' | 'forward';\n};\n\nconst DELETE_EVENT_TYPES: Record<string, DeleteEventSpec> = {\n\t// --------------------------------------- Backward delete types -----------------------------------------------------\n\n\t// This happens in Safari on Mac when some content is selected and Ctrl + K is pressed.\n\tdeleteContent: {\n\t\tunit: DELETE_SELECTION,\n\n\t\t// According to the Input Events Level 2 spec, this delete type has no direction\n\t\t// but to keep things simple, let's default to backward.\n\t\tdirection: DELETE_BACKWARD\n\t},\n\t// Chrome and Safari on Mac: Backspace or Ctrl + H\n\tdeleteContentBackward: {\n\t\t// This kind of deletions must be done on the code point-level instead of target range provided by the DOM beforeinput event.\n\t\t// Take for instance \"👨‍👩‍👧‍👧\", it equals:\n\t\t//\n\t\t//\t* [ \"👨\", \"ZERO WIDTH JOINER\", \"👩\", \"ZERO WIDTH JOINER\", \"👧\", \"ZERO WIDTH JOINER\", \"👧\" ]\n\t\t//\t* or simply \"\\u{1F468}\\u200D\\u{1F469}\\u200D\\u{1F467}\\u200D\\u{1F467}\"\n\t\t//\n\t\t// The range provided by the browser would cause the entire multi-byte grapheme to disappear while the user\n\t\t// intention when deleting backwards (\"👨‍👩‍👧‍👧[]\", then backspace) is gradual \"decomposition\" (first to \"👨‍👩‍👧‍[]\",\n\t\t// then to \"👨‍👩‍[]\", etc.).\n\t\t//\n\t\t//\t* \"👨‍👩‍👧‍👧[]\" + backward delete (by code point) -> results in \"👨‍👩‍👧[]\", removed the last \"👧\" 👍\n\t\t//\t* \"👨‍👩‍👧‍👧[]\" + backward delete (by character) -> results in \"[]\", removed the whole grapheme 👎\n\t\t//\n\t\t// Deleting by code-point is simply a better UX. See \"deleteContentForward\" to learn more.\n\t\tunit: DELETE_CODE_POINT,\n\t\tdirection: DELETE_BACKWARD\n\t},\n\t// On Mac: Option + Backspace.\n\t// On iOS: Hold the backspace for a while and the whole words will start to disappear.\n\tdeleteWordBackward: {\n\t\tunit: DELETE_WORD,\n\t\tdirection: DELETE_BACKWARD\n\t},\n\t// Safari on Mac: Cmd + Backspace\n\tdeleteHardLineBackward: {\n\t\tunit: DELETE_SELECTION,\n\t\tdirection: DELETE_BACKWARD\n\t},\n\t// Chrome on Mac: Cmd + Backspace.\n\tdeleteSoftLineBackward: {\n\t\tunit: DELETE_SELECTION,\n\t\tdirection: DELETE_BACKWARD\n\t},\n\n\t// --------------------------------------- Forward delete types -----------------------------------------------------\n\n\t// Chrome on Mac: Fn + Backspace or Ctrl + D\n\t// Safari on Mac: Ctrl + K or Ctrl + D\n\tdeleteContentForward: {\n\t\t// Unlike backward delete, this delete must be performed by character instead of by code point, which\n\t\t// provides the best UX for working with accented letters.\n\t\t// Take, for example \"b̂\" (\"\\u0062\\u0302\", or [ \"LATIN SMALL LETTER B\", \"COMBINING CIRCUMFLEX ACCENT\" ]):\n\t\t//\n\t\t//\t* \"b̂[]\" + backward delete (by code point) -> results in \"b[]\", removed the combining mark 👍\n\t\t//\t* \"[]b̂\" + forward delete (by code point) -> results in \"[]^\", a bare combining mark does that not make sense when alone 👎\n\t\t//\t* \"[]b̂\" + forward delete (by character) -> results in \"[]\", removed both \"b\" and the combining mark 👍\n\t\t//\n\t\t// See: \"deleteContentBackward\" to learn more.\n\t\tunit: DELETE_CHARACTER,\n\t\tdirection: DELETE_FORWARD\n\t},\n\t// On Mac: Fn + Option + Backspace.\n\tdeleteWordForward: {\n\t\tunit: DELETE_WORD,\n\t\tdirection: DELETE_FORWARD\n\t},\n\t// Chrome on Mac: Ctrl + K (you have to disable the Link plugin first, though, because it uses the same keystroke)\n\t// This is weird that it does not work in Safari on Mac despite being listed in the official shortcuts listing\n\t// on Apple's webpage.\n\tdeleteHardLineForward: {\n\t\tunit: DELETE_SELECTION,\n\t\tdirection: DELETE_FORWARD\n\t},\n\t// At this moment there is no known way to trigger this event type but let's keep it for the symmetry with\n\t// deleteSoftLineBackward.\n\tdeleteSoftLineForward: {\n\t\tunit: DELETE_SELECTION,\n\t\tdirection: DELETE_FORWARD\n\t}\n};\n\n/**\n * Delete observer introduces the {@link module:engine/view/document~Document#event:delete} event.\n */\nexport default class DeleteObserver extends Observer {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( view: View ) {\n\t\tsuper( view );\n\n\t\tconst document = view.document;\n\n\t\t// It matters how many subsequent deletions were made, e.g. when the backspace key was pressed and held\n\t\t// by the user for some time. For instance, if such scenario ocurred and the heading the selection was\n\t\t// anchored to was the only content of the editor, it will not be converted into a paragraph (the user\n\t\t// wanted to clean it up, not remove it, it's about UX). Check out the DeleteCommand implementation to learn more.\n\t\t//\n\t\t// Fun fact: Safari on Mac won't fire beforeinput for backspace in an empty heading (only content).\n\t\tlet sequence = 0;\n\n\t\tdocument.on( 'keydown', () => {\n\t\t\tsequence++;\n\t\t} );\n\n\t\tdocument.on( 'keyup', () => {\n\t\t\tsequence = 0;\n\t\t} );\n\n\t\tdocument.on<ViewDocumentInputEvent>( 'beforeinput', ( evt, data ) => {\n\t\t\tif ( !this.isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { targetRanges, domEvent, inputType } = data;\n\t\t\tconst deleteEventSpec = DELETE_EVENT_TYPES[ inputType ];\n\n\t\t\tif ( !deleteEventSpec ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst deleteData: Partial<DeleteEventData> = {\n\t\t\t\tdirection: deleteEventSpec.direction,\n\t\t\t\tunit: deleteEventSpec.unit,\n\t\t\t\tsequence\n\t\t\t};\n\n\t\t\tif ( deleteData.unit == DELETE_SELECTION ) {\n\t\t\t\tdeleteData.selectionToRemove = view.createSelection( targetRanges[ 0 ] );\n\t\t\t}\n\n\t\t\t// The default deletion unit for deleteContentBackward is a single code point\n\t\t\t// but if the browser provides a wider target range then we should use it.\n\t\t\tif ( inputType === 'deleteContentBackward' ) {\n\t\t\t\t// On Android, deleteContentBackward has sequence 1 by default.\n\t\t\t\tif ( env.isAndroid ) {\n\t\t\t\t\tdeleteData.sequence = 1;\n\t\t\t\t}\n\n\t\t\t\t// The beforeInput event wants more than a single character to be removed.\n\t\t\t\tif ( shouldUseTargetRanges( targetRanges ) ) {\n\t\t\t\t\tdeleteData.unit = DELETE_SELECTION;\n\t\t\t\t\tdeleteData.selectionToRemove = view.createSelection( targetRanges );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst eventInfo = new BubblingEventInfo( document, 'delete', targetRanges[ 0 ] );\n\n\t\t\tdocument.fire( eventInfo, new DomEventData( view, domEvent, deleteData ) );\n\n\t\t\t// Stop the beforeinput event if `delete` event was stopped.\n\t\t\t// https://github.com/ckeditor/ckeditor5/issues/753\n\t\t\tif ( eventInfo.stop.called ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t} );\n\n\t\t// TODO: to be removed when https://bugs.chromium.org/p/chromium/issues/detail?id=1365311 is solved.\n\t\tif ( env.isBlink ) {\n\t\t\tenableChromeWorkaround( this );\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic observe(): void {}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic stopObserving(): void {}\n}\n\n/**\n * Event fired when the user tries to delete content (e.g. presses <kbd>Delete</kbd> or <kbd>Backspace</kbd>).\n *\n * Note: This event is fired by the {@link module:typing/deleteobserver~DeleteObserver delete observer}\n * (usually registered by the {@link module:typing/delete~Delete delete feature}).\n *\n * @eventName module:engine/view/document~Document#delete\n * @param data The event data.\n */\nexport type ViewDocumentDeleteEvent = BubblingEvent<{\n\tname: 'delete';\n\targs: [ data: DeleteEventData ];\n}>;\n\nexport interface DeleteEventData extends DomEventData<InputEvent> {\n\n\t/**\n\t * The direction in which the deletion should happen.\n\t */\n\tdirection: 'backward' | 'forward';\n\n\t/**\n\t * The \"amount\" of content that should be deleted.\n\t */\n\tunit: 'selection' | 'codePoint' | 'character' | 'word';\n\n\t/**\n\t * A number describing which subsequent delete event it is without the key being released.\n\t * If it's 2 or more it means that the key was pressed and hold.\n\t */\n\tsequence: number;\n\n\t/**\n\t * View selection which content should be removed. If not set,\n\t * current selection should be used.\n\t */\n\tselectionToRemove?: ViewSelection | ViewDocumentSelection;\n}\n\n/**\n * Enables workaround for the issue https://github.com/ckeditor/ckeditor5/issues/11904.\n */\nfunction enableChromeWorkaround( observer: DeleteObserver ) {\n\tconst view = observer.view;\n\tconst document = view.document;\n\n\tlet pressedKeyCode: number | null = null;\n\tlet beforeInputReceived = false;\n\n\tdocument.on<ViewDocumentKeyDownEvent>( 'keydown', ( evt, { keyCode } ) => {\n\t\tpressedKeyCode = keyCode;\n\t\tbeforeInputReceived = false;\n\t} );\n\n\tdocument.on<ViewDocumentKeyUpEvent>( 'keyup', ( evt, { keyCode, domEvent } ) => {\n\t\tconst selection = document.selection;\n\t\tconst shouldFireDeleteEvent = observer.isEnabled &&\n\t\t\tkeyCode == pressedKeyCode &&\n\t\t\tisDeleteKeyCode( keyCode ) &&\n\t\t\t!selection.isCollapsed &&\n\t\t\t!beforeInputReceived;\n\n\t\tpressedKeyCode = null;\n\n\t\tif ( shouldFireDeleteEvent ) {\n\t\t\tconst targetRange = selection.getFirstRange()!;\n\t\t\tconst eventInfo = new BubblingEventInfo( document, 'delete', targetRange );\n\t\t\tconst deleteData: Partial<DeleteEventData> = {\n\t\t\t\tunit: DELETE_SELECTION,\n\t\t\t\tdirection: getDeleteDirection( keyCode ),\n\t\t\t\tselectionToRemove: selection\n\t\t\t};\n\n\t\t\tdocument.fire( eventInfo, new DomEventData( view, domEvent, deleteData ) );\n\t\t}\n\t} );\n\n\tdocument.on<ViewDocumentInputEvent>( 'beforeinput', ( evt, { inputType } ) => {\n\t\tconst deleteEventSpec = DELETE_EVENT_TYPES[ inputType ];\n\t\tconst isMatchingBeforeInput = isDeleteKeyCode( pressedKeyCode ) &&\n\t\t\tdeleteEventSpec &&\n\t\t\tdeleteEventSpec.direction == getDeleteDirection( pressedKeyCode );\n\n\t\tif ( isMatchingBeforeInput ) {\n\t\t\tbeforeInputReceived = true;\n\t\t}\n\t}, { priority: 'high' } );\n\n\tdocument.on<ViewDocumentInputEvent>( 'beforeinput', ( evt, { inputType, data } ) => {\n\t\tconst shouldIgnoreBeforeInput = pressedKeyCode == keyCodes.delete &&\n\t\t\tinputType == 'insertText' &&\n\t\t\tdata == '\\x7f'; // Delete character :P\n\n\t\tif ( shouldIgnoreBeforeInput ) {\n\t\t\tevt.stop();\n\t\t}\n\t}, { priority: 'high' } );\n\n\tfunction isDeleteKeyCode( keyCode: number | null ): boolean {\n\t\treturn keyCode == keyCodes.backspace || keyCode == keyCodes.delete;\n\t}\n\n\tfunction getDeleteDirection( keyCode: number | null ): 'backward' | 'forward' {\n\t\treturn keyCode == keyCodes.backspace ? DELETE_BACKWARD : DELETE_FORWARD;\n\t}\n}\n\n/**\n * Verifies whether the given target ranges cover more than a single character and should be used instead of a single code-point deletion.\n */\nfunction shouldUseTargetRanges( targetRanges: Array<ViewRange> ): boolean {\n\t// The collapsed target range could happen for example while deleting inside an inline filler\n\t// (it's mapped to collapsed position before an inline filler).\n\tif ( targetRanges.length != 1 || targetRanges[ 0 ].isCollapsed ) {\n\t\treturn false;\n\t}\n\n\tconst walker = targetRanges[ 0 ].getWalker( {\n\t\tdirection: 'backward',\n\t\tsingleCharacters: true,\n\t\tignoreElementEnd: true\n\t} );\n\n\tlet count = 0;\n\n\tfor ( const { nextPosition } of walker ) {\n\t\t// There is some element in the range so count it as a single character.\n\t\tif ( !nextPosition.parent.is( '$text' ) ) {\n\t\t\tcount++;\n\t\t} else {\n\t\t\tconst data = nextPosition.parent.data;\n\t\t\tconst offset = nextPosition.offset;\n\n\t\t\t// Count combined symbols and emoji sequences as a single character.\n\t\t\tif (\n\t\t\t\tisInsideSurrogatePair( data, offset ) ||\n\t\t\t\tisInsideCombinedSymbol( data, offset ) ||\n\t\t\t\tisInsideEmojiSequence( data, offset )\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcount++;\n\t\t}\n\n\t\tif ( count > 1 ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module typing/delete\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport DeleteCommand from './deletecommand';\nimport DeleteObserver, { type ViewDocumentDeleteEvent } from './deleteobserver';\n\n/**\n * The delete and backspace feature. Handles keys such as <kbd>Delete</kbd> and <kbd>Backspace</kbd>, other\n * keystrokes and user actions that result in deleting content in the editor.\n */\nexport default class Delete extends Plugin {\n\t/**\n\t * Whether pressing backspace should trigger undo action\n\t */\n\tprivate _undoOnBackspace!: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Delete' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tconst modelDocument = editor.model.document;\n\n\t\tview.addObserver( DeleteObserver );\n\n\t\tthis._undoOnBackspace = false;\n\n\t\tconst deleteForwardCommand = new DeleteCommand( editor, 'forward' );\n\n\t\t// Register `deleteForward` command and add `forwardDelete` command as an alias for backward compatibility.\n\t\teditor.commands.add( 'deleteForward', deleteForwardCommand );\n\t\teditor.commands.add( 'forwardDelete', deleteForwardCommand );\n\n\t\teditor.commands.add( 'delete', new DeleteCommand( editor, 'backward' ) );\n\n\t\tthis.listenTo<ViewDocumentDeleteEvent>( viewDocument, 'delete', ( evt, data ) => {\n\t\t\t// When not in composition, we handle the action, so prevent the default one.\n\t\t\t// When in composition, it's the browser who modify the DOM (renderer is disabled).\n\t\t\tif ( !viewDocument.isComposing ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t}\n\n\t\t\tconst { direction, sequence, selectionToRemove, unit } = data;\n\t\t\tconst commandName = direction === 'forward' ? 'deleteForward' : 'delete';\n\t\t\tconst commandData: Parameters<DeleteCommand[ 'execute' ]>[ 0 ] = { sequence };\n\n\t\t\tif ( unit == 'selection' ) {\n\t\t\t\tconst modelRanges = Array.from( selectionToRemove!.getRanges() ).map( viewRange => {\n\t\t\t\t\treturn editor.editing.mapper.toModelRange( viewRange );\n\t\t\t\t} );\n\n\t\t\t\tcommandData.selection = editor.model.createSelection( modelRanges );\n\t\t\t} else {\n\t\t\t\tcommandData.unit = unit;\n\t\t\t}\n\n\t\t\teditor.execute( commandName, commandData );\n\n\t\t\tview.scrollToTheSelection();\n\t\t}, { priority: 'low' } );\n\n\t\tif ( this.editor.plugins.has( 'UndoEditing' ) ) {\n\t\t\tthis.listenTo<ViewDocumentDeleteEvent>( viewDocument, 'delete', ( evt, data ) => {\n\t\t\t\tif ( this._undoOnBackspace && data.direction == 'backward' && data.sequence == 1 && data.unit == 'codePoint' ) {\n\t\t\t\t\tthis._undoOnBackspace = false;\n\n\t\t\t\t\teditor.execute( 'undo' );\n\n\t\t\t\t\tdata.preventDefault();\n\t\t\t\t\tevt.stop();\n\t\t\t\t}\n\t\t\t}, { context: '$capture' } );\n\n\t\t\tthis.listenTo( modelDocument, 'change', () => {\n\t\t\t\tthis._undoOnBackspace = false;\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * If the next user action after calling this method is pressing backspace, it would undo the last change.\n\t *\n\t * Requires {@link module:undo/undoediting~UndoEditing} plugin. If not loaded, does nothing.\n\t */\n\tpublic requestUndoOnBackspace(): void {\n\t\tif ( this.editor.plugins.has( 'UndoEditing' ) ) {\n\t\t\tthis._undoOnBackspace = true;\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module typing/typing\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport Input from './input';\nimport Delete from './delete';\n\n/**\n * The typing feature. It handles typing.\n *\n * This is a \"glue\" plugin which loads the {@link module:typing/input~Input} and {@link module:typing/delete~Delete}\n * plugins.\n */\nexport default class Typing extends Plugin {\n\tpublic static get requires() {\n\t\treturn [ Input, Delete ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Typing' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module typing/utils/getlasttextline\n */\n\nimport type { Model, Range } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Returns the last text line from the given range.\n *\n * \"The last text line\" is understood as text (from one or more text nodes) which is limited either by a parent block\n * or by inline elements (e.g. `<softBreak>`).\n *\n * ```ts\n * const rangeToCheck = model.createRange(\n * \tmodel.createPositionAt( paragraph, 0 ),\n * \tmodel.createPositionAt( paragraph, 'end' )\n * );\n *\n * const { text, range } = getLastTextLine( rangeToCheck, model );\n * ```\n *\n * For model below, the returned `text` will be \"Foo bar baz\" and `range` will be set on whole `<paragraph>` content:\n *\n * ```xml\n * <paragraph>Foo bar baz<paragraph>\n * ```\n *\n * However, in below case, `text` will be set to \"baz\" and `range` will be set only on \"baz\".\n *\n * ```xml\n * <paragraph>Foo<softBreak></softBreak>bar<softBreak></softBreak>baz<paragraph>\n * ```\n */\nexport default function getLastTextLine( range: Range, model: Model ): LastTextLineData {\n\tlet start = range.start;\n\n\tconst text = Array.from( range.getWalker( { ignoreElementEnd: false } ) ).reduce( ( rangeText, { item } ) => {\n\t\t// Trim text to a last occurrence of an inline element and update range start.\n\t\tif ( !( item.is( '$text' ) || item.is( '$textProxy' ) ) ) {\n\t\t\tstart = model.createPositionAfter( item );\n\n\t\t\treturn '';\n\t\t}\n\n\t\treturn rangeText + item.data;\n\t}, '' );\n\n\treturn { text, range: model.createRange( start, range.end ) };\n}\n\n/**\n * The value returned by {@link module:typing/utils/getlasttextline~getLastTextLine}.\n */\nexport type LastTextLineData = {\n\n\t/**\n\t * The text from the text nodes in the last text line.\n\t */\n\ttext: string;\n\n\t/**\n\t * The range set on the text nodes in the last text line.\n\t */\n\trange: Range;\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module typing/textwatcher\n */\n\nimport { ObservableMixin, type ObservableChangeEvent } from '@ckeditor/ckeditor5-utils';\nimport getLastTextLine from './utils/getlasttextline';\n\nimport type {\n\tBatch,\n\tModel,\n\tRange,\n\tDocumentChangeEvent,\n\tDocumentSelectionChangeEvent\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * The text watcher feature.\n *\n * Fires the {@link module:typing/textwatcher~TextWatcher#event:matched:data `matched:data`},\n * {@link module:typing/textwatcher~TextWatcher#event:matched:selection `matched:selection`} and\n * {@link module:typing/textwatcher~TextWatcher#event:unmatched `unmatched`} events on typing or selection changes.\n */\nexport default class TextWatcher extends ObservableMixin() {\n\t/**\n\t * The editor's model.\n\t */\n\tpublic readonly model: Model;\n\n\t/**\n\t * The function used to match the text.\n\t *\n\t * The test callback can return 3 values:\n\t *\n\t * * `false` if there is no match,\n\t * * `true` if there is a match,\n\t * * an object if there is a match and we want to pass some additional information to the {@link #event:matched:data} event.\n\t */\n\tpublic testCallback: ( text: string ) => unknown;\n\n\t/**\n\t * Whether there is a match currently.\n\t */\n\tprivate _hasMatch: boolean;\n\n\t/**\n\t * Flag indicating whether the `TextWatcher` instance is enabled or disabled.\n\t * A disabled TextWatcher will not evaluate text.\n\t *\n\t * To disable TextWatcher:\n\t *\n\t * ```ts\n\t * const watcher = new TextWatcher( editor.model, testCallback );\n\t *\n\t * // After this a testCallback will not be called.\n\t * watcher.isEnabled = false;\n\t * ```\n\t */\n\tdeclare public isEnabled: boolean;\n\n\t/**\n\t * Creates a text watcher instance.\n\t *\n\t * @param testCallback See {@link module:typing/textwatcher~TextWatcher#testCallback}.\n\t */\n\tconstructor( model: Model, testCallback: ( text: string ) => unknown ) {\n\t\tsuper();\n\n\t\tthis.model = model;\n\t\tthis.testCallback = testCallback;\n\t\tthis._hasMatch = false;\n\n\t\tthis.set( 'isEnabled', true );\n\n\t\t// Toggle text watching on isEnabled state change.\n\t\tthis.on<ObservableChangeEvent>( 'change:isEnabled', () => {\n\t\t\tif ( this.isEnabled ) {\n\t\t\t\tthis._startListening();\n\t\t\t} else {\n\t\t\t\tthis.stopListening( model.document.selection );\n\t\t\t\tthis.stopListening( model.document );\n\t\t\t}\n\t\t} );\n\n\t\tthis._startListening();\n\t}\n\n\t/**\n\t * Flag indicating whether there is a match currently.\n\t */\n\tpublic get hasMatch(): boolean {\n\t\treturn this._hasMatch;\n\t}\n\n\t/**\n\t * Starts listening to the editor for typing and selection events.\n\t */\n\tprivate _startListening(): void {\n\t\tconst model = this.model;\n\t\tconst document = model.document;\n\n\t\tthis.listenTo<DocumentSelectionChangeEvent>( document.selection, 'change:range', ( evt, { directChange } ) => {\n\t\t\t// Indirect changes (i.e. when the user types or external changes are applied) are handled in the document's change event.\n\t\t\tif ( !directChange ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Act only on collapsed selection.\n\t\t\tif ( !document.selection.isCollapsed ) {\n\t\t\t\tif ( this.hasMatch ) {\n\t\t\t\t\tthis.fire( 'unmatched' );\n\t\t\t\t\tthis._hasMatch = false;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._evaluateTextBeforeSelection( 'selection' );\n\t\t} );\n\n\t\tthis.listenTo<DocumentChangeEvent>( document, 'change:data', ( evt, batch ) => {\n\t\t\tif ( batch.isUndo || !batch.isLocal ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._evaluateTextBeforeSelection( 'data', { batch } );\n\t\t} );\n\t}\n\n\t/**\n\t * Checks the editor content for matched text.\n\t *\n\t * @fires matched:data\n\t * @fires matched:selection\n\t * @fires unmatched\n\t *\n\t * @param suffix A suffix used for generating the event name.\n\t * @param data Data object for event.\n\t */\n\tprivate _evaluateTextBeforeSelection( suffix: 'data' | 'selection', data: { batch?: Batch } = {} ): void {\n\t\tconst model = this.model;\n\t\tconst document = model.document;\n\t\tconst selection = document.selection;\n\n\t\tconst rangeBeforeSelection = model.createRange( model.createPositionAt( selection.focus!.parent, 0 ), selection.focus! );\n\n\t\tconst { text, range } = getLastTextLine( rangeBeforeSelection, model );\n\n\t\tconst testResult = this.testCallback( text );\n\n\t\tif ( !testResult && this.hasMatch ) {\n\t\t\tthis.fire<TextWatcherUnmatchedEvent>( 'unmatched' );\n\t\t}\n\n\t\tthis._hasMatch = !!testResult;\n\n\t\tif ( testResult ) {\n\t\t\tconst eventData = Object.assign( data, { text, range } );\n\n\t\t\t// If the test callback returns an object with additional data, assign the data as well.\n\t\t\tif ( typeof testResult == 'object' ) {\n\t\t\t\tObject.assign( eventData, testResult );\n\t\t\t}\n\n\t\t\tthis.fire<TextWatcherMatchedEvent>( `matched:${ suffix }`, eventData );\n\t\t}\n\t}\n}\n\nexport type TextWatcherMatchedEvent<TCallbackResult extends Record<string, unknown> = Record<string, unknown>> = {\n\tname: 'matched' | 'matched:data' | 'matched:selection';\n\targs: [ {\n\t\ttext: string;\n\t\trange: Range;\n\t\tbatch?: Batch;\n\t} & TCallbackResult ];\n};\n\n/**\n * Fired whenever the text watcher found a match for data changes.\n *\n * @eventName ~TextWatcher#matched:data\n * @param data Event data.\n * @param data.testResult The additional data returned from the {@link module:typing/textwatcher~TextWatcher#testCallback}.\n */\nexport type TextWatcherMatchedDataEvent<TCallbackResult extends Record<string, unknown>> = {\n\tname: 'matched:data';\n\targs: [ data: TextWatcherMatchedDataEventData & TCallbackResult ];\n};\n\nexport interface TextWatcherMatchedDataEventData {\n\n\t/**\n\t * The full text before selection to which the regexp was applied.\n\t */\n\ttext: string;\n\n\t/**\n\t * The range representing the position of the `data.text`.\n\t */\n\trange: Range;\n\n\tbatch: Batch;\n}\n\n/**\n * Fired whenever the text watcher found a match for selection changes.\n *\n * @eventName ~TextWatcher#matched:selection\n * @param data Event data.\n * @param data.testResult The additional data returned from the {@link module:typing/textwatcher~TextWatcher#testCallback}.\n */\nexport type TextWatcherMatchedSelectionEvent<TCallbackResult extends Record<string, unknown>> = {\n\tname: 'matched:selection';\n\targs: [ data: TextWatcherMatchedSelectionEventData & TCallbackResult ];\n};\n\nexport interface TextWatcherMatchedSelectionEventData {\n\n\t/**\n\t * The full text before selection.\n\t */\n\ttext: string;\n\n\t/**\n\t * The range representing the position of the `data.text`.\n\t */\n\trange: Range;\n}\n\n/**\n * Fired whenever the text does not match anymore. Fired only when the text watcher found a match.\n *\n * @eventName ~TextWatcher#unmatched\n */\nexport type TextWatcherUnmatchedEvent = {\n\tname: 'unmatched';\n\targs: [];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module typing/twostepcaretmovement\n */\n\nimport { Plugin, type Editor } from '@ckeditor/ckeditor5-core';\n\nimport { keyCodes } from '@ckeditor/ckeditor5-utils';\n\nimport type {\n\tDocumentSelection,\n\tDocumentSelectionChangeEvent,\n\tDomEventData,\n\tModel,\n\tPosition,\n\tViewDocumentArrowKeyEvent\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * This plugin enables the two-step caret (phantom) movement behavior for\n * {@link module:typing/twostepcaretmovement~TwoStepCaretMovement#registerAttribute registered attributes}\n * on arrow right (<kbd>→</kbd>) and left (<kbd>←</kbd>) key press.\n *\n * Thanks to this (phantom) caret movement the user is able to type before/after as well as at the\n * beginning/end of an attribute.\n *\n * **Note:** This plugin support right–to–left (Arabic, Hebrew, etc.) content by mirroring its behavior\n * but for the sake of simplicity examples showcase only left–to–right use–cases.\n *\n * # Forward movement\n *\n * ## \"Entering\" an attribute:\n *\n * When this plugin is enabled and registered for the `a` attribute and the selection is right before it\n * (at the attribute boundary), pressing the right arrow key will not move the selection but update its\n * attributes accordingly:\n *\n * * When enabled:\n *\n * ```xml\n * foo{}<$text a=\"true\">bar</$text>\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * foo<$text a=\"true\">{}bar</$text>\n * ```\n *\n * * When disabled:\n *\n * ```xml\n * foo{}<$text a=\"true\">bar</$text>\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * foo<$text a=\"true\">b{}ar</$text>\n * ```\n *\n *\n * ## \"Leaving\" an attribute:\n *\n * * When enabled:\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text>baz\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar</$text>{}baz\n * ```\n *\n * * When disabled:\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text>baz\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar</$text>b{}az\n * ```\n *\n * # Backward movement\n *\n * * When enabled:\n *\n * ```xml\n * <$text a=\"true\">bar</$text>{}baz\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text>baz\n * ```\n *\n * * When disabled:\n *\n * ```xml\n * <$text a=\"true\">bar</$text>{}baz\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\">ba{}r</$text>b{}az\n * ```\n *\n * # Multiple attributes\n *\n * * When enabled and many attributes starts or ends at the same position:\n *\n * ```xml\n * <$text a=\"true\" b=\"true\">bar</$text>{}baz\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\" b=\"true\">bar{}</$text>baz\n * ```\n *\n * * When enabled and one procedes another:\n *\n * ```xml\n * <$text a=\"true\">bar</$text><$text b=\"true\">{}bar</$text>\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text><$text b=\"true\">bar</$text>\n * ```\n *\n */\nexport default class TwoStepCaretMovement extends Plugin {\n\t/**\n\t * A set of attributes to handle.\n\t */\n\tprivate attributes: Set<string>;\n\n\t/**\n\t * The current UID of the overridden gravity, as returned by\n\t * {@link module:engine/model/writer~Writer#overrideSelectionGravity}.\n\t */\n\tprivate _overrideUid: string | null;\n\n\t/**\n\t * A flag indicating that the automatic gravity restoration should not happen upon the next\n\t * gravity restoration.\n\t * {@link module:engine/model/selection~Selection#event:change:range} event.\n\t */\n\n\tprivate _isNextGravityRestorationSkipped!: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TwoStepCaretMovement' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis.attributes = new Set();\n\t\tthis._overrideUid = null;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\t\tconst locale = editor.locale;\n\n\t\tconst modelSelection = model.document.selection;\n\n\t\t// Listen to keyboard events and handle the caret movement according to the 2-step caret logic.\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>( view.document, 'arrowKey', ( evt, data ) => {\n\t\t\t// This implementation works only for collapsed selection.\n\t\t\tif ( !modelSelection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// When user tries to expand the selection or jump over the whole word or to the beginning/end then\n\t\t\t// two-steps movement is not necessary.\n\t\t\tif ( data.shiftKey || data.altKey || data.ctrlKey ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst arrowRightPressed = data.keyCode == keyCodes.arrowright;\n\t\t\tconst arrowLeftPressed = data.keyCode == keyCodes.arrowleft;\n\n\t\t\t// When neither left or right arrow has been pressed then do noting.\n\t\t\tif ( !arrowRightPressed && !arrowLeftPressed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst contentDirection = locale.contentLanguageDirection;\n\t\t\tlet isMovementHandled = false;\n\n\t\t\tif ( ( contentDirection === 'ltr' && arrowRightPressed ) || ( contentDirection === 'rtl' && arrowLeftPressed ) ) {\n\t\t\t\tisMovementHandled = this._handleForwardMovement( data );\n\t\t\t} else {\n\t\t\t\tisMovementHandled = this._handleBackwardMovement( data );\n\t\t\t}\n\n\t\t\t// Stop the keydown event if the two-step caret movement handled it. Avoid collisions\n\t\t\t// with other features which may also take over the caret movement (e.g. Widget).\n\t\t\tif ( isMovementHandled === true ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: '$text', priority: 'highest' } );\n\n\t\tthis._isNextGravityRestorationSkipped = false;\n\n\t\t// The automatic gravity restoration logic.\n\t\tthis.listenTo<DocumentSelectionChangeEvent>( modelSelection, 'change:range', ( evt, data ) => {\n\t\t\t// Skipping the automatic restoration is needed if the selection should change\n\t\t\t// but the gravity must remain overridden afterwards. See the #handleBackwardMovement\n\t\t\t// to learn more.\n\t\t\tif ( this._isNextGravityRestorationSkipped ) {\n\t\t\t\tthis._isNextGravityRestorationSkipped = false;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Skip automatic restore when the gravity is not overridden — simply, there's nothing to restore\n\t\t\t// at this moment.\n\t\t\tif ( !this._isGravityOverridden ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Skip automatic restore when the change is indirect AND the selection is at the attribute boundary.\n\t\t\t// It means that e.g. if the change was external (collaboration) and the user had their\n\t\t\t// selection around the link, its gravity should remain intact in this change:range event.\n\t\t\tif ( !data.directChange && isBetweenDifferentAttributes( modelSelection.getFirstPosition()!, this.attributes ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._restoreGravity();\n\t\t} );\n\t}\n\n\t/**\n\t * Registers a given attribute for the two-step caret movement.\n\t *\n\t * @param attribute Name of the attribute to handle.\n\t */\n\tpublic registerAttribute( attribute: string ): void {\n\t\tthis.attributes.add( attribute );\n\t}\n\n\t/**\n\t * Updates the document selection and the view according to the two–step caret movement state\n\t * when moving **forwards**. Executed upon `keypress` in the {@link module:engine/view/view~View}.\n\t *\n\t * @param data Data of the key press.\n\t * @returns `true` when the handler prevented caret movement.\n\t */\n\tprivate _handleForwardMovement( data: DomEventData ): boolean {\n\t\tconst attributes = this.attributes;\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst position = selection.getFirstPosition()!;\n\n\t\t// DON'T ENGAGE 2-SCM if gravity is already overridden. It means that we just entered\n\t\t//\n\t\t// \t\t<paragraph>foo<$text attribute>{}bar</$text>baz</paragraph>\n\t\t//\n\t\t// or left the attribute\n\t\t//\n\t\t// \t\t<paragraph>foo<$text attribute>bar</$text>{}baz</paragraph>\n\t\t//\n\t\t// and the gravity will be restored automatically.\n\t\tif ( this._isGravityOverridden ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// DON'T ENGAGE 2-SCM when the selection is at the beginning of the block AND already has the\n\t\t// attribute:\n\t\t// * when the selection was initially set there using the mouse,\n\t\t// * when the editor has just started\n\t\t//\n\t\t//\t\t<paragraph><$text attribute>{}bar</$text>baz</paragraph>\n\t\t//\n\t\tif ( position.isAtStart && hasAnyAttribute( selection, attributes ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// ENGAGE 2-SCM When at least one of the observed attributes changes its value (incl. starts, ends).\n\t\t//\n\t\t//\t\t<paragraph>foo<$text attribute>bar{}</$text>baz</paragraph>\n\t\t//\t\t<paragraph>foo<$text attribute>bar{}</$text><$text otherAttribute>baz</$text></paragraph>\n\t\t//\t\t<paragraph>foo<$text attribute=1>bar{}</$text><$text attribute=2>baz</$text></paragraph>\n\t\t//\t\t<paragraph>foo{}<$text attribute>bar</$text>baz</paragraph>\n\t\t//\n\t\tif ( isBetweenDifferentAttributes( position, attributes ) ) {\n\t\t\tpreventCaretMovement( data );\n\t\t\tthis._overrideGravity();\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Updates the document selection and the view according to the two–step caret movement state\n\t * when moving **backwards**. Executed upon `keypress` in the {@link module:engine/view/view~View}.\n\t *\n\t * @param data Data of the key press.\n\t * @returns `true` when the handler prevented caret movement\n\t */\n\tprivate _handleBackwardMovement( data: DomEventData ): boolean {\n\t\tconst attributes = this.attributes;\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst position = selection.getFirstPosition()!;\n\n\t\t// When the gravity is already overridden (by this plugin), it means we are on the two-step position.\n\t\t// Prevent the movement, restore the gravity and update selection attributes.\n\t\t//\n\t\t//\t\t<paragraph>foo<$text attribute=1>bar</$text><$text attribute=2>{}baz</$text></paragraph>\n\t\t//\t\t<paragraph>foo<$text attribute>bar</$text><$text otherAttribute>{}baz</$text></paragraph>\n\t\t//\t\t<paragraph>foo<$text attribute>{}bar</$text>baz</paragraph>\n\t\t//\t\t<paragraph>foo<$text attribute>bar</$text>{}baz</paragraph>\n\t\t//\n\t\tif ( this._isGravityOverridden ) {\n\t\t\tpreventCaretMovement( data );\n\t\t\tthis._restoreGravity();\n\t\t\tsetSelectionAttributesFromTheNodeBefore( model, attributes, position );\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\t// REMOVE SELECTION ATTRIBUTE when restoring gravity towards a non-existent content at the\n\t\t\t// beginning of the block.\n\t\t\t//\n\t\t\t// \t\t<paragraph>{}<$text attribute>bar</$text></paragraph>\n\t\t\t//\n\t\t\tif ( position.isAtStart ) {\n\t\t\t\tif ( hasAnyAttribute( selection, attributes ) ) {\n\t\t\t\t\tpreventCaretMovement( data );\n\t\t\t\t\tsetSelectionAttributesFromTheNodeBefore( model, attributes, position );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// When we are moving from natural gravity, to the position of the 2SCM, we need to override the gravity,\n\t\t\t// and make sure it won't be restored. Unless it's at the end of the block and an observed attribute.\n\t\t\t// We need to check if the caret is a one position before the attribute boundary:\n\t\t\t//\n\t\t\t//\t\t<paragraph>foo<$text attribute=1>bar</$text><$text attribute=2>b{}az</$text></paragraph>\n\t\t\t//\t\t<paragraph>foo<$text attribute>bar</$text><$text otherAttribute>b{}az</$text></paragraph>\n\t\t\t//\t\t<paragraph>foo<$text attribute>b{}ar</$text>baz</paragraph>\n\t\t\t//\t\t<paragraph>foo<$text attribute>bar</$text>b{}az</paragraph>\n\t\t\t//\n\t\t\tif ( isStepAfterAnyAttributeBoundary( position, attributes ) ) {\n\t\t\t\t// ENGAGE 2-SCM if the selection has no attribute. This may happen when the user\n\t\t\t\t// left the attribute using a FORWARD 2-SCM.\n\t\t\t\t//\n\t\t\t\t// \t\t<paragraph><$text attribute>bar</$text>{}</paragraph>\n\t\t\t\t//\n\t\t\t\tif (\n\t\t\t\t\tposition.isAtEnd &&\n\t\t\t\t\t!hasAnyAttribute( selection, attributes ) &&\n\t\t\t\t\tisBetweenDifferentAttributes( position, attributes )\n\t\t\t\t) {\n\t\t\t\t\tpreventCaretMovement( data );\n\t\t\t\t\tsetSelectionAttributesFromTheNodeBefore( model, attributes, position );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// Skip the automatic gravity restore upon the next selection#change:range event.\n\t\t\t\t// If not skipped, it would automatically restore the gravity, which should remain\n\t\t\t\t// overridden.\n\t\t\t\tthis._isNextGravityRestorationSkipped = true;\n\t\t\t\tthis._overrideGravity();\n\n\t\t\t\t// Don't return \"true\" here because we didn't call _preventCaretMovement.\n\t\t\t\t// Returning here will destabilize the filler logic, which also listens to\n\t\t\t\t// keydown (and the event would be stopped).\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * `true` when the gravity is overridden for the plugin.\n\t */\n\tprivate get _isGravityOverridden(): boolean {\n\t\treturn !!this._overrideUid;\n\t}\n\n\t/**\n\t * Overrides the gravity using the {@link module:engine/model/writer~Writer model writer}\n\t * and stores the information about this fact in the {@link #_overrideUid}.\n\t *\n\t * A shorthand for {@link module:engine/model/writer~Writer#overrideSelectionGravity}.\n\t */\n\tprivate _overrideGravity(): void {\n\t\tthis._overrideUid = this.editor.model.change( writer => {\n\t\t\treturn writer.overrideSelectionGravity();\n\t\t} );\n\t}\n\n\t/**\n\t * Restores the gravity using the {@link module:engine/model/writer~Writer model writer}.\n\t *\n\t * A shorthand for {@link module:engine/model/writer~Writer#restoreSelectionGravity}.\n\t */\n\tprivate _restoreGravity(): void {\n\t\tthis.editor.model.change( writer => {\n\t\t\twriter.restoreSelectionGravity( this._overrideUid! );\n\t\t\tthis._overrideUid = null;\n\t\t} );\n\t}\n}\n\n/**\n * Checks whether the selection has any of given attributes.\n */\nfunction hasAnyAttribute( selection: DocumentSelection, attributes: Set<string> ): boolean {\n\tfor ( const observedAttribute of attributes ) {\n\t\tif ( selection.hasAttribute( observedAttribute ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Applies the given attributes to the current selection using using the\n * values from the node before the current position. Uses\n * the {@link module:engine/model/writer~Writer model writer}.\n */\nfunction setSelectionAttributesFromTheNodeBefore( model: Model, attributes: Set<string>, position: Position ) {\n\tconst nodeBefore = position.nodeBefore;\n\tmodel.change( writer => {\n\t\tif ( nodeBefore ) {\n\t\t\tconst attributes: Array<[string, unknown]> = [];\n\t\t\tconst isInlineObject = model.schema.isObject( nodeBefore ) && model.schema.isInline( nodeBefore );\n\n\t\t\tfor ( const [ key, value ] of nodeBefore.getAttributes() ) {\n\t\t\t\tif (\n\t\t\t\t\tmodel.schema.checkAttribute( '$text', key ) &&\n\t\t\t\t\t( !isInlineObject || model.schema.getAttributeProperties( key ).copyFromObject !== false )\n\t\t\t\t) {\n\t\t\t\t\tattributes.push( [ key, value ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twriter.setSelectionAttribute( attributes );\n\t\t} else {\n\t\t\twriter.removeSelectionAttribute( attributes );\n\t\t}\n\t} );\n}\n\n/**\n * Prevents the caret movement in the view by calling `preventDefault` on the event data.\n *\n * @alias data.preventDefault\n */\nfunction preventCaretMovement( data: DomEventData ) {\n\tdata.preventDefault();\n}\n\n/**\n * Checks whether the step before `isBetweenDifferentAttributes()`.\n */\nfunction isStepAfterAnyAttributeBoundary( position: Position, attributes: Set<string> ): boolean {\n\tconst positionBefore = position.getShiftedBy( -1 );\n\treturn isBetweenDifferentAttributes( positionBefore, attributes );\n}\n\n/**\n * Checks whether the given position is between different values of given attributes.\n */\nfunction isBetweenDifferentAttributes( position: Position, attributes: Set<string> ): boolean {\n\tconst { nodeBefore, nodeAfter } = position;\n\tfor ( const observedAttribute of attributes ) {\n\t\tconst attrBefore = nodeBefore ? nodeBefore.getAttribute( observedAttribute ) : undefined;\n\t\tconst attrAfter = nodeAfter ? nodeAfter.getAttribute( observedAttribute ) : undefined;\n\n\t\tif ( attrAfter !== attrBefore ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","import toString from './toString.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n}\n\nexport default escapeRegExp;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module typing/texttransformation\n */\n\nimport {\n\tPlugin,\n\ttype Editor\n} from '@ckeditor/ckeditor5-core';\n\nimport type { Position } from '@ckeditor/ckeditor5-engine';\n\nimport TextWatcher, { type TextWatcherMatchedDataEvent } from './textwatcher';\nimport type { TextTransformationConfig, TextTransformationDescription } from './typingconfig';\nimport type Delete from './delete';\n\nimport { escapeRegExp } from 'lodash-es';\n\n// All named transformations.\nconst TRANSFORMATIONS: Record<string, TextTransformationDescription> = {\n\t// Common symbols:\n\tcopyright: { from: '(c)', to: '©' },\n\tregisteredTrademark: { from: '(r)', to: '®' },\n\ttrademark: { from: '(tm)', to: '™' },\n\n\t// Mathematical:\n\toneHalf: { from: /(^|[^/a-z0-9])(1\\/2)([^/a-z0-9])$/i, to: [ null, '½', null ] },\n\toneThird: { from: /(^|[^/a-z0-9])(1\\/3)([^/a-z0-9])$/i, to: [ null, '⅓', null ] },\n\ttwoThirds: { from: /(^|[^/a-z0-9])(2\\/3)([^/a-z0-9])$/i, to: [ null, '⅔', null ] },\n\toneForth: { from: /(^|[^/a-z0-9])(1\\/4)([^/a-z0-9])$/i, to: [ null, '¼', null ] },\n\tthreeQuarters: { from: /(^|[^/a-z0-9])(3\\/4)([^/a-z0-9])$/i, to: [ null, '¾', null ] },\n\tlessThanOrEqual: { from: '<=', to: '≤' },\n\tgreaterThanOrEqual: { from: '>=', to: '≥' },\n\tnotEqual: { from: '!=', to: '≠' },\n\tarrowLeft: { from: '<-', to: '←' },\n\tarrowRight: { from: '->', to: '→' },\n\n\t// Typography:\n\thorizontalEllipsis: { from: '...', to: '…' },\n\tenDash: { from: /(^| )(--)( )$/, to: [ null, '–', null ] },\n\temDash: { from: /(^| )(---)( )$/, to: [ null, '—', null ] },\n\t// Quotations:\n\t// English, US\n\tquotesPrimary: { from: buildQuotesRegExp( '\"' ), to: [ null, '“', null, '”' ] },\n\tquotesSecondary: { from: buildQuotesRegExp( '\\'' ), to: [ null, '‘', null, '’' ] },\n\n\t// English, UK\n\tquotesPrimaryEnGb: { from: buildQuotesRegExp( '\\'' ), to: [ null, '‘', null, '’' ] },\n\tquotesSecondaryEnGb: { from: buildQuotesRegExp( '\"' ), to: [ null, '“', null, '”' ] },\n\n\t// Polish\n\tquotesPrimaryPl: { from: buildQuotesRegExp( '\"' ), to: [ null, '„', null, '”' ] },\n\tquotesSecondaryPl: { from: buildQuotesRegExp( '\\'' ), to: [ null, '‚', null, '’' ] }\n};\n\n// Transformation groups.\nconst TRANSFORMATION_GROUPS: Record<string, Array<string>> = {\n\tsymbols: [ 'copyright', 'registeredTrademark', 'trademark' ],\n\tmathematical: [\n\t\t'oneHalf', 'oneThird', 'twoThirds', 'oneForth', 'threeQuarters',\n\t\t'lessThanOrEqual', 'greaterThanOrEqual', 'notEqual',\n\t\t'arrowLeft', 'arrowRight'\n\t],\n\ttypography: [ 'horizontalEllipsis', 'enDash', 'emDash' ],\n\tquotes: [ 'quotesPrimary', 'quotesSecondary' ]\n};\n\n// A set of default transformations provided by the feature.\nconst DEFAULT_TRANSFORMATIONS = [\n\t'symbols',\n\t'mathematical',\n\t'typography',\n\t'quotes'\n];\n\n/**\n * The text transformation plugin.\n */\nexport default class TextTransformation extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ 'Delete', 'Input' ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TextTransformation' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'typing', {\n\t\t\ttransformations: {\n\t\t\t\tinclude: DEFAULT_TRANSFORMATIONS\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst model = this.editor.model;\n\t\tconst modelSelection = model.document.selection;\n\n\t\tmodelSelection.on( 'change:range', () => {\n\t\t\t// Disable plugin when selection is inside a code block.\n\t\t\tthis.isEnabled = !modelSelection.anchor!.parent.is( 'element', 'codeBlock' );\n\t\t} );\n\n\t\tthis._enableTransformationWatchers();\n\t}\n\n\t/**\n\t * Create new TextWatcher listening to the editor for typing and selection events.\n\t */\n\tprivate _enableTransformationWatchers(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst deletePlugin: Delete = editor.plugins.get( 'Delete' );\n\t\tconst normalizedTransformations = normalizeTransformations( editor.config.get( 'typing.transformations' )! );\n\n\t\tconst testCallback = ( text: string ) => {\n\t\t\tfor ( const normalizedTransformation of normalizedTransformations ) {\n\t\t\t\tconst from = normalizedTransformation.from;\n\t\t\t\tconst match = from.test( text );\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\treturn { normalizedTransformation };\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst watcher = new TextWatcher( editor.model, testCallback );\n\n\t\twatcher.on<TextWatcherMatchedDataEvent<{\n\t\t\tnormalizedTransformation: NormalizedTransformationConfig;\n\t\t}>>( 'matched:data', ( evt, data ) => {\n\t\t\tif ( !data.batch.isTyping ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { from, to } = data.normalizedTransformation;\n\n\t\t\tconst matches = from.exec( data.text )!;\n\t\t\tconst replaces = to( matches.slice( 1 ) );\n\n\t\t\tconst matchedRange = data.range;\n\n\t\t\tlet changeIndex = matches.index;\n\n\t\t\tmodel.enqueueChange( writer => {\n\t\t\t\tfor ( let i = 1; i < matches.length; i++ ) {\n\t\t\t\t\tconst match = matches[ i ];\n\t\t\t\t\tconst replaceWith = replaces[ i - 1 ];\n\n\t\t\t\t\tif ( replaceWith == null ) {\n\t\t\t\t\t\tchangeIndex += match.length;\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst replacePosition = matchedRange.start.getShiftedBy( changeIndex );\n\t\t\t\t\tconst replaceRange = model.createRange( replacePosition, replacePosition.getShiftedBy( match.length ) );\n\t\t\t\t\tconst attributes = getTextAttributesAfterPosition( replacePosition );\n\n\t\t\t\t\tmodel.insertContent( writer.createText( replaceWith, attributes ), replaceRange );\n\n\t\t\t\t\tchangeIndex += replaceWith.length;\n\t\t\t\t}\n\n\t\t\t\tmodel.enqueueChange( () => {\n\t\t\t\t\tdeletePlugin.requestUndoOnBackspace();\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\n\t\twatcher.bind( 'isEnabled' ).to( this );\n\t}\n}\n\n/**\n * Normalizes the configuration `from` parameter value.\n * The normalized value for the `from` parameter is a RegExp instance. If the passed `from` is already a RegExp instance,\n * it is returned unchanged.\n */\nfunction normalizeFrom( from: string | RegExp ): RegExp {\n\tif ( typeof from == 'string' ) {\n\t\treturn new RegExp( `(${ escapeRegExp( from ) })$` );\n\t}\n\n\t// `from` is already a regular expression.\n\treturn from;\n}\n\n/**\n * Normalizes the configuration `to` parameter value.\n * The normalized value for the `to` parameter is a function that takes an array and returns an array. See more in the\n * configuration description. If the passed `to` is already a function, it is returned unchanged.\n */\nfunction normalizeTo( to: TextTransformationDescription[ 'to' ] ) {\n\tif ( typeof to == 'string' ) {\n\t\treturn () => [ to ];\n\t} else if ( to instanceof Array ) {\n\t\treturn () => to;\n\t}\n\n\t// `to` is already a function.\n\treturn to;\n}\n\n/**\n * For given `position` returns attributes for the text that is after that position.\n * The text can be in the same text node as the position (`foo[]bar`) or in the next text node (`foo[]<$text bold=\"true\">bar</$text>`).\n */\nfunction getTextAttributesAfterPosition( position: Position ) {\n\tconst textNode = position.textNode ? position.textNode : position.nodeAfter;\n\n\treturn textNode!.getAttributes();\n}\n\n/**\n * Returns a RegExp pattern string that detects a sentence inside a quote.\n *\n * @param quoteCharacter The character to create a pattern for.\n */\nfunction buildQuotesRegExp( quoteCharacter: string ): RegExp {\n\treturn new RegExp( `(^|\\\\s)(${ quoteCharacter })([^${ quoteCharacter }]*)(${ quoteCharacter })$` );\n}\n\n/**\n * Reads text transformation config and returns normalized array of transformations objects.\n */\nfunction normalizeTransformations( config: TextTransformationConfig ): Array<NormalizedTransformationConfig> {\n\tconst extra = config.extra || [];\n\tconst remove = config.remove || [];\n\tconst isNotRemoved = ( transformation: TextTransformationDescription | string ) => !remove.includes( transformation );\n\n\tconst configured = config.include.concat( extra ).filter( isNotRemoved );\n\n\treturn expandGroupsAndRemoveDuplicates( configured )\n\t\t.filter( isNotRemoved ) // Filter out 'remove' transformations as they might be set in group.\n\t\t.map( transformation => (\n\t\t\ttypeof transformation == 'string' && TRANSFORMATIONS[ transformation ] ? TRANSFORMATIONS[ transformation ] : transformation )\n\t\t)\n\t\t// Filter out transformations set as string that has not been found.\n\t\t.filter( ( transformation ): transformation is TextTransformationDescription => typeof transformation === 'object' )\n\t\t.map( transformation => ( {\n\t\t\tfrom: normalizeFrom( transformation.from ),\n\t\t\tto: normalizeTo( transformation.to )\n\t\t} ) );\n}\n\n/**\n * Reads definitions and expands named groups if needed to transformation names.\n * This method also removes duplicated named transformations if any.\n */\nfunction expandGroupsAndRemoveDuplicates(\n\tdefinitions: Array<TextTransformationDescription | string>\n): Array<TextTransformationDescription | string> {\n\t// Set is using to make sure that transformation names are not duplicated.\n\tconst definedTransformations = new Set<TextTransformationDescription | string>();\n\n\tfor ( const transformationOrGroup of definitions ) {\n\t\tif ( typeof transformationOrGroup == 'string' && TRANSFORMATION_GROUPS[ transformationOrGroup ] ) {\n\t\t\tfor ( const transformation of TRANSFORMATION_GROUPS[ transformationOrGroup ] ) {\n\t\t\t\tdefinedTransformations.add( transformation );\n\t\t\t}\n\t\t} else {\n\t\t\tdefinedTransformations.add( transformationOrGroup );\n\t\t}\n\t}\n\n\treturn Array.from( definedTransformations );\n}\n\ntype NormalizedTransformationConfig = {\n\tfrom: RegExp;\n\tto: ( matches: Array<string> ) => Array<string | null>;\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module typing/utils/findattributerange\n */\n\nimport type { Position, Model, Range } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Returns a model range that covers all consecutive nodes with the same `attributeName` and its `value`\n * that intersect the given `position`.\n *\n * It can be used e.g. to get the entire range on which the `linkHref` attribute needs to be changed when having a\n * selection inside a link.\n *\n * @param position The start position.\n * @param attributeName The attribute name.\n * @param value The attribute value.\n * @param model The model instance.\n * @returns The link range.\n */\nexport default function findAttributeRange(\n\tposition: Position,\n\tattributeName: string,\n\tvalue: unknown,\n\tmodel: Model\n): Range {\n\treturn model.createRange(\n\t\tfindAttributeRangeBound( position, attributeName, value, true, model ),\n\t\tfindAttributeRangeBound( position, attributeName, value, false, model )\n\t);\n}\n\n/**\n * Walks forward or backward (depends on the `lookBack` flag), node by node, as long as they have the same attribute value\n * and returns a position just before or after (depends on the `lookBack` flag) the last matched node.\n *\n * @param position The start position.\n * @param attributeName The attribute name.\n * @param value The attribute value.\n * @param lookBack Whether the walk direction is forward (`false`) or backward (`true`).\n * @returns The position just before the last matched node.\n */\nexport function findAttributeRangeBound(\n\tposition: Position,\n\tattributeName: string,\n\tvalue: unknown,\n\tlookBack: boolean,\n\tmodel: Model\n): Position {\n\t// Get node before or after position (depends on `lookBack` flag).\n\t// When position is inside text node then start searching from text node.\n\tlet node = position.textNode || ( lookBack ? position.nodeBefore : position.nodeAfter );\n\n\tlet lastNode = null;\n\n\twhile ( node && node.getAttribute( attributeName ) == value ) {\n\t\tlastNode = node;\n\t\tnode = lookBack ? node.previousSibling : node.nextSibling;\n\t}\n\n\treturn lastNode ? model.createPositionAt( lastNode, lookBack ? 'before' : 'after' ) : position;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module enter/entercommand\n */\n\nimport { Command } from '@ckeditor/ckeditor5-core';\nimport { getCopyOnEnterAttributes } from './utils';\n\nimport type {\n\tElement,\n\tPosition,\n\tWriter\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * Enter command used by the {@link module:enter/enter~Enter Enter feature} to handle the <kbd>Enter</kbd> keystroke.\n */\nexport default class EnterCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tthis.editor.model.change( writer => {\n\t\t\tthis.enterBlock( writer );\n\t\t\tthis.fire<EnterCommandAfterExecuteEvent>( 'afterExecute', { writer } );\n\t\t} );\n\t}\n\n\t/**\n\t * Splits a block where the document selection is placed, in the way how the <kbd>Enter</kbd> key is expected to work:\n\t *\n\t * ```\n\t * <p>Foo[]bar</p> -> <p>Foo</p><p>[]bar</p>\n\t * <p>Foobar[]</p> -> <p>Foobar</p><p>[]</p>\n\t * <p>Fo[ob]ar</p> -> <p>Fo</p><p>[]ar</p>\n\t * ```\n\t *\n\t * In some cases, the split will not happen:\n\t *\n\t * ```\n\t * // The selection parent is a limit element:\n\t * <figcaption>A[bc]d</figcaption> -> <figcaption>A[]d</figcaption>\n\t *\n\t * // The selection spans over multiple elements:\n\t * <h>x[x</h><p>y]y<p> -> <h>x</h><p>[]y</p>\n\t * ```\n\t *\n\t * @param writer Writer to use when performing the enter action.\n\t * @returns Boolean indicating if the block was split.\n\t */\n\tpublic enterBlock( writer: Writer ): boolean {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst schema = model.schema;\n\t\tconst isSelectionEmpty = selection.isCollapsed;\n\t\tconst range = selection.getFirstRange()!;\n\t\tconst startElement = range.start.parent as Element;\n\t\tconst endElement = range.end.parent as Element;\n\n\t\t// Don't touch the roots and other limit elements.\n\t\tif ( schema.isLimit( startElement ) || schema.isLimit( endElement ) ) {\n\t\t\t// Delete the selected content but only if inside a single limit element.\n\t\t\t// Abort, when crossing limit elements boundary (e.g. <limit1>x[x</limit1>donttouchme<limit2>y]y</limit2>).\n\t\t\t// This is an edge case and it's hard to tell what should actually happen because such a selection\n\t\t\t// is not entirely valid.\n\t\t\tif ( !isSelectionEmpty && startElement == endElement ) {\n\t\t\t\tmodel.deleteContent( selection );\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( isSelectionEmpty ) {\n\t\t\tconst attributesToCopy = getCopyOnEnterAttributes( writer.model.schema, selection.getAttributes() );\n\n\t\t\tsplitBlock( writer, range.start );\n\t\t\twriter.setSelectionAttribute( attributesToCopy );\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconst leaveUnmerged = !( range.start.isAtStart && range.end.isAtEnd );\n\t\t\tconst isContainedWithinOneElement = ( startElement == endElement );\n\n\t\t\tmodel.deleteContent( selection, { leaveUnmerged } );\n\n\t\t\tif ( leaveUnmerged ) {\n\t\t\t\t// Partially selected elements.\n\t\t\t\t//\n\t\t\t\t// <h>x[xx]x</h>\t\t-> <h>x^x</h>\t\t\t-> <h>x</h><h>^x</h>\n\t\t\t\tif ( isContainedWithinOneElement ) {\n\t\t\t\t\tsplitBlock( writer, selection.focus! );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// Selection over multiple elements.\n\t\t\t\t//\n\t\t\t\t// <h>x[x</h><p>y]y<p>\t-> <h>x^</h><p>y</p>\t-> <h>x</h><p>^y</p>\n\t\t\t\telse {\n\t\t\t\t\twriter.setSelection( endElement, 0 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n}\n\n/**\n * Fired after the the {@link module:enter/entercommand~EnterCommand} is finished executing.\n *\n * @eventName ~EnterCommand#afterExecute\n */\nexport type EnterCommandAfterExecuteEvent = {\n\tname: 'afterExecute';\n\targs: [ { writer: Writer } ];\n};\n\nfunction splitBlock( writer: Writer, splitPos: Position ): void {\n\twriter.split( splitPos );\n\twriter.setSelection( splitPos.parent.nextSibling!, 0 );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module enter/enterobserver\n */\n\nimport {\n\tObserver,\n\tDomEventData,\n\tBubblingEventInfo,\n\ttype View,\n\ttype ViewDocumentInputEvent,\n\ttype BubblingEvent,\n\ttype ViewDocumentKeyDownEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport { env } from '@ckeditor/ckeditor5-utils';\n\nconst ENTER_EVENT_TYPES: Record<string, { isSoft: boolean }> = {\n\tinsertParagraph: { isSoft: false },\n\tinsertLineBreak: { isSoft: true }\n};\n\n/**\n * Enter observer introduces the {@link module:engine/view/document~Document#event:enter `Document#enter`} event.\n */\nexport default class EnterObserver extends Observer {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( view: View ) {\n\t\tsuper( view );\n\n\t\tconst doc = this.document;\n\t\tlet shiftPressed = false;\n\n\t\tdoc.on<ViewDocumentKeyDownEvent>( 'keydown', ( evt, data ) => {\n\t\t\tshiftPressed = data.shiftKey;\n\t\t} );\n\n\t\tdoc.on<ViewDocumentInputEvent>( 'beforeinput', ( evt, data ) => {\n\t\t\tif ( !this.isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet inputType = data.inputType;\n\n\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/13321.\n\t\t\tif ( env.isSafari && shiftPressed && inputType == 'insertParagraph' ) {\n\t\t\t\tinputType = 'insertLineBreak';\n\t\t\t}\n\n\t\t\tconst domEvent = data.domEvent;\n\t\t\tconst enterEventSpec = ENTER_EVENT_TYPES[ inputType ];\n\n\t\t\tif ( !enterEventSpec ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst event = new BubblingEventInfo( doc, 'enter', data.targetRanges[ 0 ] );\n\n\t\t\tdoc.fire( event, new DomEventData( view, domEvent, {\n\t\t\t\tisSoft: enterEventSpec.isSoft\n\t\t\t} ) );\n\n\t\t\t// Stop `beforeinput` event if `enter` event was stopped.\n\t\t\t// https://github.com/ckeditor/ckeditor5/issues/753\n\t\t\tif ( event.stop.called ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic observe(): void {}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic stopObserving(): void {}\n}\n\n/**\n * Fired when the user presses the <kbd>Enter</kbd> key.\n *\n * Note: This event is fired by the {@link module:enter/enterobserver~EnterObserver observer}\n * (usually registered by the {@link module:enter/enter~Enter Enter feature} and\n * {@link module:enter/shiftenter~ShiftEnter ShiftEnter feature}).\n *\n * @eventName module:engine/view/document~Document#enter\n */\nexport type ViewDocumentEnterEvent = BubblingEvent<{\n\tname: 'enter';\n\targs: [ EnterEventData ];\n}>;\n\nexport interface EnterEventData extends DomEventData<InputEvent> {\n\n\t/**\n\t * Whether it is a soft enter (<kbd>Shift</kbd>+<kbd>Enter</kbd>) or a hard enter (<kbd>Enter</kbd>).\n\t */\n\tisSoft: boolean;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module enter/enter\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport EnterCommand from './entercommand';\nimport EnterObserver, { type ViewDocumentEnterEvent } from './enterobserver';\n\n/**\n * This plugin handles the <kbd>Enter</kbd> keystroke (hard line break) in the editor.\n *\n * See also the {@link module:enter/shiftenter~ShiftEnter} plugin.\n *\n * For more information about this feature see the {@glink api/enter package page}.\n */\nexport default class Enter extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Enter' as const;\n\t}\n\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\tview.addObserver( EnterObserver );\n\n\t\teditor.commands.add( 'enter', new EnterCommand( editor ) );\n\n\t\tthis.listenTo<ViewDocumentEnterEvent>( viewDocument, 'enter', ( evt, data ) => {\n\t\t\t// When not in composition, we handle the action, so prevent the default one.\n\t\t\t// When in composition, it's the browser who modify the DOM (renderer is disabled).\n\t\t\tif ( !viewDocument.isComposing ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t}\n\n\t\t\t// The soft enter key is handled by the ShiftEnter plugin.\n\t\t\tif ( data.isSoft ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\teditor.execute( 'enter' );\n\n\t\t\tview.scrollToTheSelection();\n\t\t}, { priority: 'low' } );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module enter/shiftentercommand\n */\n\nimport { Command } from '@ckeditor/ckeditor5-core';\nimport { getCopyOnEnterAttributes } from './utils';\n\nimport type {\n\tDocumentSelection,\n\tModel,\n\tPosition,\n\tSchema,\n\tElement,\n\tWriter\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * ShiftEnter command. It is used by the {@link module:enter/shiftenter~ShiftEnter ShiftEnter feature} to handle\n * the <kbd>Shift</kbd>+<kbd>Enter</kbd> keystroke.\n */\nexport default class ShiftEnterCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\n\t\tmodel.change( writer => {\n\t\t\tsoftBreakAction( model, writer, doc.selection );\n\t\t\tthis.fire<ShiftEnterCommandAfterExecuteEvent>( 'afterExecute', { writer } );\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\n\t\tthis.isEnabled = isEnabled( model.schema, doc.selection );\n\t}\n}\n\n/**\n * Fired after the the {@link module:enter/shiftentercommand~ShiftEnterCommand} is finished executing.\n *\n * @eventName ~ShiftEnterCommand#afterExecute\n */\nexport type ShiftEnterCommandAfterExecuteEvent = {\n\tname: 'afterExecute';\n\targs: [ { writer: Writer } ];\n};\n\n/**\n * Checks whether the ShiftEnter command should be enabled in the specified selection.\n */\nfunction isEnabled( schema: Schema, selection: DocumentSelection ): boolean {\n\t// At this moment it is okay to support single range selections only.\n\t// But in the future we may need to change that.\n\tif ( selection.rangeCount > 1 ) {\n\t\treturn false;\n\t}\n\n\tconst anchorPos = selection.anchor;\n\n\t// Check whether the break element can be inserted in the current selection anchor.\n\tif ( !anchorPos || !schema.checkChild( anchorPos, 'softBreak' ) ) {\n\t\treturn false;\n\t}\n\n\tconst range = selection.getFirstRange()!;\n\tconst startElement = range.start.parent as Element;\n\tconst endElement = range.end.parent as Element;\n\n\t// Do not modify the content if selection is cross-limit elements.\n\tif ( ( isInsideLimitElement( startElement, schema ) || isInsideLimitElement( endElement, schema ) ) && startElement !== endElement ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n/**\n * Creates a break in the way that the <kbd>Shift</kbd>+<kbd>Enter</kbd> keystroke is expected to work.\n */\nfunction softBreakAction( model: Model, writer: Writer, selection: DocumentSelection ): void {\n\tconst isSelectionEmpty = selection.isCollapsed;\n\tconst range = selection.getFirstRange()!;\n\tconst startElement = range.start.parent as Element;\n\tconst endElement = range.end.parent as Element;\n\tconst isContainedWithinOneElement = ( startElement == endElement );\n\n\tif ( isSelectionEmpty ) {\n\t\tconst attributesToCopy = getCopyOnEnterAttributes( model.schema, selection.getAttributes() );\n\n\t\tinsertBreak( model, writer, range.end );\n\n\t\twriter.removeSelectionAttribute( selection.getAttributeKeys() );\n\t\twriter.setSelectionAttribute( attributesToCopy );\n\t} else {\n\t\tconst leaveUnmerged = !( range.start.isAtStart && range.end.isAtEnd );\n\n\t\tmodel.deleteContent( selection, { leaveUnmerged } );\n\n\t\t// Selection within one element:\n\t\t//\n\t\t// <h>x[xx]x</h>\t\t-> <h>x^x</h>\t\t\t-> <h>x<br>^x</h>\n\t\tif ( isContainedWithinOneElement ) {\n\t\t\tinsertBreak( model, writer, selection.focus! );\n\t\t}\n\t\t// Selection over multiple elements.\n\t\t//\n\t\t// <h>x[x</h><p>y]y<p>\t-> <h>x^</h><p>y</p>\t-> <h>x</h><p>^y</p>\n\t\t//\n\t\t// We chose not to insert a line break in this case because:\n\t\t//\n\t\t// * it's not a very common scenario,\n\t\t// * it actually surprised me when I saw the \"expected behavior\" in real life.\n\t\t//\n\t\t// It's ok if the user will need to be more specific where they want the <br> to be inserted.\n\t\telse {\n\t\t\t// Move the selection to the 2nd element (last step of the example above).\n\t\t\tif ( leaveUnmerged ) {\n\t\t\t\twriter.setSelection( endElement, 0 );\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction insertBreak( model: Model, writer: Writer, position: Position ): void {\n\tconst breakLineElement = writer.createElement( 'softBreak' );\n\n\tmodel.insertContent( breakLineElement, position );\n\twriter.setSelection( breakLineElement, 'after' );\n}\n\n/**\n * Checks whether the specified `element` is a child of the limit element.\n *\n * Checking whether the `<p>` element is inside a limit element:\n * - `<$root><p>Text.</p></$root> => false`\n * - `<$root><limitElement><p>Text</p></limitElement></$root> => true`\n */\nfunction isInsideLimitElement( element: Element, schema: Schema ): boolean {\n\t// `$root` is a limit element but in this case is an invalid element.\n\tif ( element.is( 'rootElement' ) ) {\n\t\treturn false;\n\t}\n\n\treturn schema.isLimit( element ) || isInsideLimitElement( element.parent as Element, schema );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module enter/shiftenter\n */\n\nimport ShiftEnterCommand from './shiftentercommand';\nimport EnterObserver, { type ViewDocumentEnterEvent } from './enterobserver';\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\n/**\n * This plugin handles the <kbd>Shift</kbd>+<kbd>Enter</kbd> keystroke (soft line break) in the editor.\n *\n * See also the {@link module:enter/enter~Enter} plugin.\n *\n * For more information about this feature see the {@glink api/enter package page}.\n */\nexport default class ShiftEnter extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ShiftEnter' as const;\n\t}\n\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst conversion = editor.conversion;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\t// Configure the schema.\n\t\tschema.register( 'softBreak', {\n\t\t\tallowWhere: '$text',\n\t\t\tisInline: true\n\t\t} );\n\n\t\t// Configure converters.\n\t\tconversion.for( 'upcast' )\n\t\t\t.elementToElement( {\n\t\t\t\tmodel: 'softBreak',\n\t\t\t\tview: 'br'\n\t\t\t} );\n\n\t\tconversion.for( 'downcast' )\n\t\t\t.elementToElement( {\n\t\t\t\tmodel: 'softBreak',\n\t\t\t\tview: ( modelElement, { writer } ) => writer.createEmptyElement( 'br' )\n\t\t\t} );\n\n\t\tview.addObserver( EnterObserver );\n\n\t\teditor.commands.add( 'shiftEnter', new ShiftEnterCommand( editor ) );\n\n\t\tthis.listenTo<ViewDocumentEnterEvent>( viewDocument, 'enter', ( evt, data ) => {\n\t\t\t// When not in composition, we handle the action, so prevent the default one.\n\t\t\t// When in composition, it's the browser who modify the DOM (renderer is disabled).\n\t\t\tif ( !viewDocument.isComposing ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t}\n\n\t\t\t// The hard enter key is handled by the Enter plugin.\n\t\t\tif ( !data.isSoft ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\teditor.execute( 'shiftEnter' );\n\t\t\tview.scrollToTheSelection();\n\t\t}, { priority: 'low' } );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/highlightstack\n */\n\nimport { EmitterMixin, type ArrayOrItem } from '@ckeditor/ckeditor5-utils';\n\nimport type { DowncastWriter, HighlightDescriptor } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Class used to handle the correct order of highlights on elements.\n *\n * When different highlights are applied to same element the correct order should be preserved:\n *\n * * highlight with highest priority should be applied,\n * * if two highlights have same priority - sort by CSS class provided in\n * {@link module:engine/conversion/downcasthelpers~HighlightDescriptor}.\n *\n * This way, highlight will be applied with the same rules it is applied on texts.\n */\nexport default class HighlightStack extends EmitterMixin() {\n\tprivate readonly _stack: Array<HighlightDescriptor> = [];\n\n\t/**\n\t * Adds highlight descriptor to the stack.\n\t *\n\t * @fires change:top\n\t */\n\tpublic add( descriptor: HighlightDescriptor, writer: DowncastWriter ): void {\n\t\tconst stack = this._stack;\n\n\t\t// Save top descriptor and insert new one. If top is changed - fire event.\n\t\tconst oldTop = stack[ 0 ];\n\t\tthis._insertDescriptor( descriptor );\n\t\tconst newTop = stack[ 0 ];\n\n\t\t// When new object is at the top and stores different information.\n\t\tif ( oldTop !== newTop && !compareDescriptors( oldTop, newTop ) ) {\n\t\t\tthis.fire<HighlightStackChangeEvent>( 'change:top', {\n\t\t\t\toldDescriptor: oldTop,\n\t\t\t\tnewDescriptor: newTop,\n\t\t\t\twriter\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Removes highlight descriptor from the stack.\n\t *\n\t * @fires change:top\n\t * @param id Id of the descriptor to remove.\n\t */\n\tpublic remove( id: string, writer: DowncastWriter ): void {\n\t\tconst stack = this._stack;\n\n\t\tconst oldTop = stack[ 0 ];\n\t\tthis._removeDescriptor( id );\n\t\tconst newTop = stack[ 0 ];\n\n\t\t// When new object is at the top and stores different information.\n\t\tif ( oldTop !== newTop && !compareDescriptors( oldTop, newTop ) ) {\n\t\t\tthis.fire<HighlightStackChangeEvent>( 'change:top', {\n\t\t\t\toldDescriptor: oldTop,\n\t\t\t\tnewDescriptor: newTop,\n\t\t\t\twriter\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Inserts a given descriptor in correct place in the stack. It also takes care about updating information\n\t * when descriptor with same id is already present.\n\t */\n\tprivate _insertDescriptor( descriptor: HighlightDescriptor ) {\n\t\tconst stack = this._stack;\n\t\tconst index = stack.findIndex( item => item.id === descriptor.id );\n\n\t\t// Inserting exact same descriptor - do nothing.\n\t\tif ( compareDescriptors( descriptor, stack[ index ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If descriptor with same id but with different information is on the stack - remove it.\n\t\tif ( index > -1 ) {\n\t\t\tstack.splice( index, 1 );\n\t\t}\n\n\t\t// Find correct place to insert descriptor in the stack.\n\t\t// It has different information (for example priority) so it must be re-inserted in correct place.\n\t\tlet i = 0;\n\n\t\twhile ( stack[ i ] && shouldABeBeforeB( stack[ i ], descriptor ) ) {\n\t\t\ti++;\n\t\t}\n\n\t\tstack.splice( i, 0, descriptor );\n\t}\n\n\t/**\n\t * Removes descriptor with given id from the stack.\n\t *\n\t * @param id Descriptor's id.\n\t */\n\tprivate _removeDescriptor( id: string ) {\n\t\tconst stack = this._stack;\n\t\tconst index = stack.findIndex( item => item.id === id );\n\n\t\t// If descriptor with same id is on the list - remove it.\n\t\tif ( index > -1 ) {\n\t\t\tstack.splice( index, 1 );\n\t\t}\n\t}\n}\n\n/**\n * Compares two descriptors by checking their priority and class list.\n *\n * @returns Returns true if both descriptors are defined and have same priority and classes.\n */\nfunction compareDescriptors( a: HighlightDescriptor, b: HighlightDescriptor ) {\n\treturn a && b && a.priority == b.priority && classesToString( a.classes ) == classesToString( b.classes );\n}\n\n/**\n * Checks whenever first descriptor should be placed in the stack before second one.\n */\nfunction shouldABeBeforeB( a: HighlightDescriptor, b: HighlightDescriptor ) {\n\tif ( a.priority! > b.priority! ) {\n\t\treturn true;\n\t} else if ( a.priority! < b.priority! ) {\n\t\treturn false;\n\t}\n\n\t// When priorities are equal and names are different - use classes to compare.\n\treturn classesToString( a.classes ) > classesToString( b.classes );\n}\n\n/**\n * Converts CSS classes passed with {@link module:engine/conversion/downcasthelpers~HighlightDescriptor} to\n * sorted string.\n */\nfunction classesToString( classes: ArrayOrItem<string> ) {\n\treturn Array.isArray( classes ) ? classes.sort().join( ',' ) : classes;\n}\n\n/**\n * Fired when top element on {@link module:widget/highlightstack~HighlightStack} has been changed\n *\n * @eventName ~HighlightStack#change:top\n */\nexport type HighlightStackChangeEvent = {\n\tname: 'change' | 'change:top';\n\targs: [ HighlightStackChangeEventData ];\n};\n\n/**\n * Additional information about the change.\n */\nexport type HighlightStackChangeEventData = {\n\n\t/**\n\t * Old highlight descriptor. It will be `undefined` when first descriptor is added to the stack.\n\t */\n\toldDescriptor: HighlightDescriptor;\n\n\t/**\n\t * New highlight descriptor. It will be `undefined` when last descriptor is removed from the stack.\n\t */\n\tnewDescriptor: HighlightDescriptor;\n\n\t/**\n\t * View writer that can be used to modify element.\n\t */\n\twriter: DowncastWriter;\n};\n","export default \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M4 0v1H1v3H0V.5A.5.5 0 0 1 .5 0H4zm8 0h3.5a.5.5 0 0 1 .5.5V4h-1V1h-3V0zM4 16H.5a.5.5 0 0 1-.5-.5V12h1v3h3v1zm8 0v-1h3v-3h1v3.5a.5.5 0 0 1-.5.5H12z\\\"/><path fill-opacity=\\\".256\\\" d=\\\"M1 1h14v14H1z\\\"/><g class=\\\"ck-icon__selected-indicator\\\"><path d=\\\"M7 0h2v1H7V0zM0 7h1v2H0V7zm15 0h1v2h-1V7zm-8 8h2v1H7v-1z\\\"/><path fill-opacity=\\\".254\\\" d=\\\"M1 1h14v14H1z\\\"/></g></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/utils\n */\n\nimport {\n\tCKEditorError,\n\ttoArray,\n\ttype ObservableChangeEvent,\n\ttype GetCallback\n} from '@ckeditor/ckeditor5-utils';\n\nimport {\n\tfindOptimalInsertionRange as engineFindOptimalInsertionRange,\n\ttype AddHighlightCallback,\n\ttype HighlightDescriptor,\n\ttype RemoveHighlightCallback,\n\ttype MapperViewToModelPositionEvent,\n\ttype DocumentSelection,\n\ttype DowncastWriter,\n\ttype Model,\n\ttype Range,\n\ttype Selection,\n\ttype ViewContainerElement,\n\ttype ViewEditableElement,\n\ttype ViewElement,\n\ttype ViewTypeCheckable\n} from '@ckeditor/ckeditor5-engine';\n\nimport { IconView } from '@ckeditor/ckeditor5-ui';\n\nimport HighlightStack, { type HighlightStackChangeEvent } from './highlightstack';\nimport { getTypeAroundFakeCaretPosition } from './widgettypearound/utils';\n\nimport dragHandleIcon from '../theme/icons/drag-handle.svg';\n\n/**\n * CSS class added to each widget element.\n */\nexport const WIDGET_CLASS_NAME = 'ck-widget';\n\n/**\n * CSS class added to currently selected widget element.\n */\nexport const WIDGET_SELECTED_CLASS_NAME = 'ck-widget_selected';\n\n/**\n * Returns `true` if given {@link module:engine/view/node~Node} is an {@link module:engine/view/element~Element} and a widget.\n */\nexport function isWidget( node: ViewTypeCheckable ): boolean {\n\tif ( !node.is( 'element' ) ) {\n\t\treturn false;\n\t}\n\n\treturn !!node.getCustomProperty( 'widget' );\n}\n\n/**\n * Converts the given {@link module:engine/view/element~Element} to a widget in the following way:\n *\n * * sets the `contenteditable` attribute to `\"false\"`,\n * * adds the `ck-widget` CSS class,\n * * adds a custom {@link module:engine/view/element~Element#getFillerOffset `getFillerOffset()`} method returning `null`,\n * * adds a custom property allowing to recognize widget elements by using {@link ~isWidget `isWidget()`},\n * * implements the {@link ~setHighlightHandling view highlight on widgets}.\n *\n * This function needs to be used in conjunction with\n * {@link module:engine/conversion/downcasthelpers~DowncastHelpers downcast conversion helpers}\n * like {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`}.\n * Moreover, typically you will want to use `toWidget()` only for `editingDowncast`, while keeping the `dataDowncast` clean.\n *\n * For example, in order to convert a `<widget>` model element to `<div class=\"widget\">` in the view, you can define\n * such converters:\n *\n * ```ts\n * editor.conversion.for( 'editingDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'widget',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\tconst div = writer.createContainerElement( 'div', { class: 'widget' } );\n *\n * \t\t\treturn toWidget( div, writer, { label: 'some widget' } );\n * \t\t}\n * \t} );\n *\n * editor.conversion.for( 'dataDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'widget',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\treturn writer.createContainerElement( 'div', { class: 'widget' } );\n * \t\t}\n * \t} );\n * ```\n *\n * See the full source code of the widget (with a nested editable) schema definition and converters in\n * [this sample](https://github.com/ckeditor/ckeditor5-widget/blob/master/tests/manual/widget-with-nestededitable.js).\n *\n * @param options Additional options.\n * @param options.label Element's label provided to the {@link ~setLabel} function. It can be passed as\n * a plain string or a function returning a string. It represents the widget for assistive technologies (like screen readers).\n * @param options.hasSelectionHandle If `true`, the widget will have a selection handle added.\n * @returns Returns the same element.\n */\nexport function toWidget(\n\telement: ViewElement,\n\twriter: DowncastWriter,\n\toptions: {\n\t\tlabel?: string | ( () => string );\n\t\thasSelectionHandle?: boolean;\n\t} = {}\n): ViewElement {\n\tif ( !element.is( 'containerElement' ) ) {\n\t\t/**\n\t\t * The element passed to `toWidget()` must be a {@link module:engine/view/containerelement~ContainerElement}\n\t\t * instance.\n\t\t *\n\t\t * @error widget-to-widget-wrong-element-type\n\t\t * @param element The view element passed to `toWidget()`.\n\t\t */\n\t\tthrow new CKEditorError(\n\t\t\t'widget-to-widget-wrong-element-type',\n\t\t\tnull,\n\t\t\t{ element }\n\t\t);\n\t}\n\n\twriter.setAttribute( 'contenteditable', 'false', element );\n\n\twriter.addClass( WIDGET_CLASS_NAME, element );\n\twriter.setCustomProperty( 'widget', true, element );\n\telement.getFillerOffset = getFillerOffset;\n\n\twriter.setCustomProperty( 'widgetLabel', [], element );\n\n\tif ( options.label ) {\n\t\tsetLabel( element, options.label );\n\t}\n\n\tif ( options.hasSelectionHandle ) {\n\t\taddSelectionHandle( element, writer );\n\t}\n\n\tsetHighlightHandling( element, writer );\n\n\treturn element;\n}\n\n/**\n * Default handler for adding a highlight on a widget.\n * It adds CSS class and attributes basing on the given highlight descriptor.\n */\nfunction addHighlight( element: ViewElement, descriptor: HighlightDescriptor, writer: DowncastWriter ) {\n\tif ( descriptor.classes ) {\n\t\twriter.addClass( toArray( descriptor.classes ), element );\n\t}\n\n\tif ( descriptor.attributes ) {\n\t\tfor ( const key in descriptor.attributes ) {\n\t\t\twriter.setAttribute( key, descriptor.attributes[ key ], element );\n\t\t}\n\t}\n}\n\n/**\n * Default handler for removing a highlight from a widget.\n * It removes CSS class and attributes basing on the given highlight descriptor.\n */\nfunction removeHighlight( element: ViewElement, descriptor: HighlightDescriptor, writer: DowncastWriter ) {\n\tif ( descriptor.classes ) {\n\t\twriter.removeClass( toArray( descriptor.classes ), element );\n\t}\n\n\tif ( descriptor.attributes ) {\n\t\tfor ( const key in descriptor.attributes ) {\n\t\t\twriter.removeAttribute( key, element );\n\t\t}\n\t}\n}\n\n/**\n * Sets highlight handling methods. Uses {@link module:widget/highlightstack~HighlightStack} to\n * properly determine which highlight descriptor should be used at given time.\n */\nexport function setHighlightHandling(\n\telement: ViewElement,\n\twriter: DowncastWriter,\n\tadd: ( element: ViewElement, descriptor: HighlightDescriptor, writer: DowncastWriter ) => void = addHighlight,\n\tremove: ( element: ViewElement, descriptor: HighlightDescriptor, writer: DowncastWriter ) => void = removeHighlight\n): void {\n\tconst stack = new HighlightStack();\n\n\tstack.on<HighlightStackChangeEvent>( 'change:top', ( evt, data ) => {\n\t\tif ( data.oldDescriptor ) {\n\t\t\tremove( element, data.oldDescriptor, data.writer );\n\t\t}\n\n\t\tif ( data.newDescriptor ) {\n\t\t\tadd( element, data.newDescriptor, data.writer );\n\t\t}\n\t} );\n\n\tconst addHighlightCallback: AddHighlightCallback = ( element, descriptor, writer ) => stack.add( descriptor, writer );\n\tconst removeHighlightCallback: RemoveHighlightCallback = ( element, id, writer ) => stack.remove( id, writer );\n\n\twriter.setCustomProperty( 'addHighlight', addHighlightCallback, element );\n\twriter.setCustomProperty( 'removeHighlight', removeHighlightCallback, element );\n}\n\n/**\n * Sets label for given element.\n * It can be passed as a plain string or a function returning a string. Function will be called each time label is retrieved by\n * {@link ~getLabel `getLabel()`}.\n */\nexport function setLabel( element: ViewElement, labelOrCreator: string | ( () => string ) ): void {\n\tconst widgetLabel = element.getCustomProperty( 'widgetLabel' ) as Array<string | ( () => string )>;\n\n\twidgetLabel.push( labelOrCreator );\n}\n\n/**\n * Returns the label of the provided element.\n */\nexport function getLabel( element: ViewElement ): string {\n\tconst widgetLabel = element.getCustomProperty( 'widgetLabel' ) as Array<string | ( () => string )>;\n\n\treturn widgetLabel.reduce( ( prev: string, current: string | ( () => string ) ) => {\n\t\tif ( typeof current === 'function' ) {\n\t\t\treturn prev ? prev + '. ' + current() : current();\n\t\t} else {\n\t\t\treturn prev ? prev + '. ' + current : current;\n\t\t}\n\t}, '' );\n}\n\n/**\n * Adds functionality to the provided {@link module:engine/view/editableelement~EditableElement} to act as a widget's editable:\n *\n * * sets the `contenteditable` attribute to `true` when {@link module:engine/view/editableelement~EditableElement#isReadOnly} is `false`,\n * otherwise sets it to `false`,\n * * adds the `ck-editor__editable` and `ck-editor__nested-editable` CSS classes,\n * * adds the `ck-editor__nested-editable_focused` CSS class when the editable is focused and removes it when it is blurred.\n * * implements the {@link ~setHighlightHandling view highlight on widget's editable}.\n *\n * Similarly to {@link ~toWidget `toWidget()`} this function should be used in `editingDowncast` only and it is usually\n * used together with {@link module:engine/conversion/downcasthelpers~DowncastHelpers#elementToElement `elementToElement()`}.\n *\n * For example, in order to convert a `<nested>` model element to `<div class=\"nested\">` in the view, you can define\n * such converters:\n *\n * ```ts\n * editor.conversion.for( 'editingDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'nested',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\tconst div = writer.createEditableElement( 'div', { class: 'nested' } );\n *\n * \t\t\treturn toWidgetEditable( nested, writer, { label: 'label for editable' } );\n * \t\t}\n * \t} );\n *\n * editor.conversion.for( 'dataDowncast' )\n * \t.elementToElement( {\n * \t\tmodel: 'nested',\n * \t\tview: ( modelItem, { writer } ) => {\n * \t\t\treturn writer.createContainerElement( 'div', { class: 'nested' } );\n * \t\t}\n * \t} );\n * ```\n *\n * See the full source code of the widget (with nested editable) schema definition and converters in\n * [this sample](https://github.com/ckeditor/ckeditor5-widget/blob/master/tests/manual/widget-with-nestededitable.js).\n *\n * @param options Additional options.\n * @param options.label Editable's label used by assistive technologies (e.g. screen readers).\n * @returns Returns the same element that was provided in the `editable` parameter\n */\nexport function toWidgetEditable(\n\teditable: ViewEditableElement,\n\twriter: DowncastWriter,\n\toptions: {\n\t\tlabel?: string;\n\t} = {}\n): ViewEditableElement {\n\twriter.addClass( [ 'ck-editor__editable', 'ck-editor__nested-editable' ], editable );\n\n\twriter.setAttribute( 'role', 'textbox', editable );\n\n\tif ( options.label ) {\n\t\twriter.setAttribute( 'aria-label', options.label, editable );\n\t}\n\n\t// Set initial contenteditable value.\n\twriter.setAttribute( 'contenteditable', editable.isReadOnly ? 'false' : 'true', editable );\n\n\t// Bind the contenteditable property to element#isReadOnly.\n\teditable.on<ObservableChangeEvent<boolean>>( 'change:isReadOnly', ( evt, property, is ) => {\n\t\twriter.setAttribute( 'contenteditable', is ? 'false' : 'true', editable );\n\t} );\n\n\teditable.on<ObservableChangeEvent<boolean>>( 'change:isFocused', ( evt, property, is ) => {\n\t\tif ( is ) {\n\t\t\twriter.addClass( 'ck-editor__nested-editable_focused', editable );\n\t\t} else {\n\t\t\twriter.removeClass( 'ck-editor__nested-editable_focused', editable );\n\t\t}\n\t} );\n\n\tsetHighlightHandling( editable, writer );\n\n\treturn editable;\n}\n\n/**\n * Returns a model range which is optimal (in terms of UX) for inserting a widget block.\n *\n * For instance, if a selection is in the middle of a paragraph, the collapsed range before this paragraph\n * will be returned so that it is not split. If the selection is at the end of a paragraph,\n * the collapsed range after this paragraph will be returned.\n *\n * Note: If the selection is placed in an empty block, the range in that block will be returned. If that range\n * is then passed to {@link module:engine/model/model~Model#insertContent}, the block will be fully replaced\n * by the inserted widget block.\n *\n * @param selection The selection based on which the insertion position should be calculated.\n * @param model Model instance.\n * @returns The optimal range.\n */\nexport function findOptimalInsertionRange(\n\tselection: Selection | DocumentSelection,\n\tmodel: Model\n): Range {\n\tconst selectedElement = selection.getSelectedElement();\n\n\tif ( selectedElement ) {\n\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( selection );\n\n\t\t// If the WidgetTypeAround \"fake caret\" is displayed, use its position for the insertion\n\t\t// to provide the most predictable UX (https://github.com/ckeditor/ckeditor5/issues/7438).\n\t\tif ( typeAroundFakeCaretPosition ) {\n\t\t\treturn model.createRange( model.createPositionAt( selectedElement, typeAroundFakeCaretPosition ) );\n\t\t}\n\t}\n\n\treturn engineFindOptimalInsertionRange( selection, model );\n}\n\n/**\n * A util to be used in order to map view positions to correct model positions when implementing a widget\n * which renders non-empty view element for an empty model element.\n *\n * For example:\n *\n * ```\n * // Model:\n * <placeholder type=\"name\"></placeholder>\n *\n * // View:\n * <span class=\"placeholder\">name</span>\n * ```\n *\n * In such case, view positions inside `<span>` cannot be correctly mapped to the model (because the model element is empty).\n * To handle mapping positions inside `<span class=\"placeholder\">` to the model use this util as follows:\n *\n * ```ts\n * editor.editing.mapper.on(\n * \t'viewToModelPosition',\n * \tviewToModelPositionOutsideModelElement( model, viewElement => viewElement.hasClass( 'placeholder' ) )\n * );\n * ```\n *\n * The callback will try to map the view offset of selection to an expected model position.\n *\n * 1. When the position is at the end (or in the middle) of the inline widget:\n *\n * ```\n * // View:\n * <p>foo <span class=\"placeholder\">name|</span> bar</p>\n *\n * // Model:\n * <paragraph>foo <placeholder type=\"name\"></placeholder>| bar</paragraph>\n * ```\n *\n * 2. When the position is at the beginning of the inline widget:\n *\n * ```\n * // View:\n * <p>foo <span class=\"placeholder\">|name</span> bar</p>\n *\n * // Model:\n * <paragraph>foo |<placeholder type=\"name\"></placeholder> bar</paragraph>\n * ```\n *\n * @param model Model instance on which the callback operates.\n * @param viewElementMatcher Function that is passed a view element and should return `true` if the custom mapping\n * should be applied to the given view element.\n */\nexport function viewToModelPositionOutsideModelElement(\n\tmodel: Model,\n\tviewElementMatcher: ( element: ViewElement ) => boolean\n): GetCallback<MapperViewToModelPositionEvent> {\n\treturn ( evt, data ) => {\n\t\tconst { mapper, viewPosition } = data;\n\n\t\tconst viewParent = mapper.findMappedViewAncestor( viewPosition );\n\n\t\tif ( !viewElementMatcher( viewParent ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst modelParent = mapper.toModelElement( viewParent );\n\n\t\tdata.modelPosition = model.createPositionAt( modelParent!, viewPosition.isAtStart ? 'before' : 'after' );\n\t};\n}\n\n/**\n * Default filler offset function applied to all widget elements.\n */\nfunction getFillerOffset() {\n\treturn null;\n}\n\n/**\n * Adds a drag handle to the widget.\n */\nfunction addSelectionHandle( widgetElement: ViewContainerElement, writer: DowncastWriter ) {\n\tconst selectionHandle = writer.createUIElement( 'div', { class: 'ck ck-widget__selection-handle' }, function( domDocument ) {\n\t\tconst domElement = this.toDomElement( domDocument );\n\n\t\t// Use the IconView from the ui library.\n\t\tconst icon = new IconView();\n\t\ticon.set( 'content', dragHandleIcon );\n\n\t\t// Render the icon view right away to append its #element to the selectionHandle DOM element.\n\t\ticon.render();\n\n\t\tdomElement.appendChild( icon.element! );\n\n\t\treturn domElement;\n\t} );\n\n\t// Append the selection handle into the widget wrapper.\n\twriter.insert( writer.createPositionAt( widgetElement, 0 ), selectionHandle );\n\twriter.addClass( [ 'ck-widget_with-selection-handle' ], widgetElement );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgettypearound/utils\n */\n\nimport { isWidget } from '../utils';\n\nimport type {\n\tDocumentSelection,\n\tDomConverter,\n\tElement,\n\tSchema,\n\tSelection,\n\tViewElement\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * The name of the type around model selection attribute responsible for\n * displaying a fake caret next to a selected widget.\n */\nexport const TYPE_AROUND_SELECTION_ATTRIBUTE = 'widget-type-around';\n\n/**\n * Checks if an element is a widget that qualifies to get the widget type around UI.\n */\nexport function isTypeAroundWidget( viewElement: ViewElement | undefined, modelElement: Element, schema: Schema ): boolean {\n\treturn !!viewElement && isWidget( viewElement ) && !schema.isInline( modelElement );\n}\n\n/**\n * For the passed HTML element, this helper finds the closest widget type around button ancestor.\n */\nexport function getClosestTypeAroundDomButton( domElement: HTMLElement ): HTMLElement | null {\n\treturn domElement.closest( '.ck-widget__type-around__button' );\n}\n\n/**\n * For the passed widget type around button element, this helper determines at which position\n * the paragraph would be inserted into the content if, for instance, the button was\n * clicked by the user.\n *\n * @returns The position of the button.\n */\nexport function getTypeAroundButtonPosition( domElement: HTMLElement ): 'before' | 'after' {\n\treturn domElement.classList.contains( 'ck-widget__type-around__button_before' ) ? 'before' : 'after';\n}\n\n/**\n * For the passed HTML element, this helper returns the closest view widget ancestor.\n */\nexport function getClosestWidgetViewElement( domElement: HTMLElement, domConverter: DomConverter ): ViewElement {\n\tconst widgetDomElement = domElement.closest( '.ck-widget' );\n\n\treturn domConverter.mapDomToView( widgetDomElement as any ) as ViewElement;\n}\n\n/**\n * For the passed selection instance, it returns the position of the fake caret displayed next to a widget.\n *\n * **Note**: If the fake caret is not currently displayed, `null` is returned.\n *\n * @returns The position of the fake caret or `null` when none is present.\n */\nexport function getTypeAroundFakeCaretPosition( selection: Selection | DocumentSelection ): 'before' | 'after' | null {\n\treturn selection.getAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE ) as any;\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./widgettypearound.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* global DOMParser */\n\n/**\n * @module widget/widgettypearound/widgettypearound\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\nimport { Template } from '@ckeditor/ckeditor5-ui';\n\nimport {\n\tEnter,\n\ttype ViewDocumentEnterEvent\n} from '@ckeditor/ckeditor5-enter';\n\nimport {\n\tDelete,\n\ttype ViewDocumentDeleteEvent,\n\ttype ViewDocumentInsertTextEvent\n} from '@ckeditor/ckeditor5-typing';\n\nimport {\n\tenv,\n\tisForwardArrowKeyCode,\n\ttype BaseEvent,\n\ttype Emitter,\n\ttype GetCallback,\n\ttype GetCallbackOptions,\n\ttype ObservableChangeEvent,\n\ttype KeystrokeInfo\n} from '@ckeditor/ckeditor5-utils';\n\nimport type {\n\tBubblingEventInfo,\n\tDocumentChangeEvent,\n\tDomEventData,\n\tDowncastInsertEvent,\n\tDowncastSelectionEvent,\n\tDowncastWriter,\n\tElement,\n\tSchema,\n\tSelectionChangeRangeEvent,\n\tViewDocumentArrowKeyEvent,\n\tViewDocumentCompositionStartEvent,\n\tViewDocumentKeyDownEvent,\n\tViewDocumentMouseDownEvent,\n\tViewElement,\n\tModelDeleteContentEvent,\n\tModelInsertContentEvent,\n\tModelInsertObjectEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport {\n\tisTypeAroundWidget,\n\tgetClosestTypeAroundDomButton,\n\tgetTypeAroundButtonPosition,\n\tgetClosestWidgetViewElement,\n\tgetTypeAroundFakeCaretPosition,\n\tTYPE_AROUND_SELECTION_ATTRIBUTE\n} from './utils';\n\nimport { isWidget } from '../utils';\nimport type Widget from '../widget';\n\nimport returnIcon from '../../theme/icons/return-arrow.svg';\n\nimport '../../theme/widgettypearound.css';\n\nconst POSSIBLE_INSERTION_POSITIONS = [ 'before', 'after' ] as const;\n\n// Do the SVG parsing once and then clone the result <svg> DOM element for each new button.\nconst RETURN_ARROW_ICON_ELEMENT = new DOMParser().parseFromString( returnIcon, 'image/svg+xml' ).firstChild!;\n\nconst PLUGIN_DISABLED_EDITING_ROOT_CLASS = 'ck-widget__type-around_disabled';\n\n/**\n * A plugin that allows users to type around widgets where normally it is impossible to place the caret due\n * to limitations of web browsers. These \"tight spots\" occur, for instance, before (or after) a widget being\n * the first (or last) child of its parent or between two block widgets.\n *\n * This plugin extends the {@link module:widget/widget~Widget `Widget`} plugin and injects the user interface\n * with two buttons into each widget instance in the editor. Each of the buttons can be clicked by the\n * user if the widget is next to the \"tight spot\". Once clicked, a paragraph is created with the selection anchored\n * in it so that users can type (or insert content, paste, etc.) straight away.\n */\nexport default class WidgetTypeAround extends Plugin {\n\t/**\n\t * A reference to the model widget element that has the fake caret active\n\t * on either side of it. It is later used to remove CSS classes associated with the fake caret\n\t * when the widget no longer needs it.\n\t */\n\tprivate _currentFakeCaretModelElement: Element | null = null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'WidgetTypeAround' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Enter, Delete ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\t// Set a CSS class on the view editing root when the plugin is disabled so all the buttons\n\t\t// and lines visually disappear. All the interactions are disabled in individual plugin methods.\n\t\tthis.on<ObservableChangeEvent<boolean>>( 'change:isEnabled', ( evt, data, isEnabled ) => {\n\t\t\teditingView.change( writer => {\n\t\t\t\tfor ( const root of editingView.document.roots ) {\n\t\t\t\t\tif ( isEnabled ) {\n\t\t\t\t\t\twriter.removeClass( PLUGIN_DISABLED_EDITING_ROOT_CLASS, root );\n\t\t\t\t\t} else {\n\t\t\t\t\t\twriter.addClass( PLUGIN_DISABLED_EDITING_ROOT_CLASS, root );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tif ( !isEnabled ) {\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tthis._enableTypeAroundUIInjection();\n\t\tthis._enableInsertingParagraphsOnButtonClick();\n\t\tthis._enableInsertingParagraphsOnEnterKeypress();\n\t\tthis._enableInsertingParagraphsOnTypingKeystroke();\n\t\tthis._enableTypeAroundFakeCaretActivationUsingKeyboardArrows();\n\t\tthis._enableDeleteIntegration();\n\t\tthis._enableInsertContentIntegration();\n\t\tthis._enableInsertObjectIntegration();\n\t\tthis._enableDeleteContentIntegration();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._currentFakeCaretModelElement = null;\n\t}\n\n\t/**\n\t * Inserts a new paragraph next to a widget element with the selection anchored in it.\n\t *\n\t * **Note**: This method is heavily user-oriented and will both focus the editing view and scroll\n\t * the viewport to the selection in the inserted paragraph.\n\t *\n\t * @param widgetModelElement The model widget element next to which a paragraph is inserted.\n\t * @param position The position where the paragraph is inserted. Either `'before'` or `'after'` the widget.\n\t */\n\tprivate _insertParagraph( widgetModelElement: Element, position: 'before' | 'after' ) {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\tconst attributesToCopy = editor.model.schema.getAttributesWithProperty( widgetModelElement, 'copyOnReplace', true );\n\n\t\teditor.execute( 'insertParagraph', {\n\t\t\tposition: editor.model.createPositionAt( widgetModelElement, position ),\n\t\t\tattributes: attributesToCopy\n\t\t} );\n\n\t\teditingView.focus();\n\t\teditingView.scrollToTheSelection();\n\t}\n\n\t/**\n\t * A wrapper for the {@link module:utils/emittermixin~Emitter#listenTo} method that executes the callbacks only\n\t * when the plugin {@link #isEnabled is enabled}.\n\t *\n\t * @param emitter The object that fires the event.\n\t * @param event The name of the event.\n\t * @param callback The function to be called on event.\n\t * @param options Additional options.\n\t * @param options.priority The priority of this event callback. The higher the priority value the sooner\n\t * the callback will be fired. Events having the same priority are called in the order they were added.\n\t */\n\tprivate _listenToIfEnabled<TEvent extends BaseEvent>(\n\t\temitter: Emitter,\n\t\tevent: TEvent[ 'name' ],\n\t\tcallback: OmitThisParameter<GetCallback<TEvent>>,\n\t\toptions?: GetCallbackOptions<TEvent>\n\t): void {\n\t\tthis.listenTo( emitter, event, ( ...args ) => {\n\t\t\t// Do not respond if the plugin is disabled.\n\t\t\tif ( this.isEnabled ) {\n\t\t\t\tcallback( ...args );\n\t\t\t}\n\t\t}, options );\n\t}\n\n\t/**\n\t * Similar to {@link #_insertParagraph}, this method inserts a paragraph except that it\n\t * does not expect a position. Instead, it performs the insertion next to a selected widget\n\t * according to the `widget-type-around` model selection attribute value (fake caret position).\n\t *\n\t * Because this method requires the `widget-type-around` attribute to be set,\n\t * the insertion can only happen when the widget's fake caret is active (e.g. activated\n\t * using the keyboard).\n\t *\n\t * @returns Returns `true` when the paragraph was inserted (the attribute was present) and `false` otherwise.\n\t */\n\tprivate _insertParagraphAccordingToFakeCaretPosition() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( modelSelection );\n\n\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[WidgetTypeAround]%c Fake caret -> insert paragraph',\n\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold; color: green', ''\n\t\t// @if CK_DEBUG_TYPING // \t);\n\t\t// @if CK_DEBUG_TYPING // }\n\n\t\tconst selectedModelElement = modelSelection.getSelectedElement()!;\n\n\t\tthis._insertParagraph( selectedModelElement, typeAroundFakeCaretPosition );\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Creates a listener in the editing conversion pipeline that injects the widget type around\n\t * UI into every single widget instance created in the editor.\n\t *\n\t * The UI is delivered as a {@link module:engine/view/uielement~UIElement}\n\t * wrapper which renders DOM buttons that users can use to insert paragraphs.\n\t */\n\tprivate _enableTypeAroundUIInjection() {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst t = editor.locale.t;\n\t\tconst buttonTitles = {\n\t\t\tbefore: t( 'Insert paragraph before block' ),\n\t\t\tafter: t( 'Insert paragraph after block' )\n\t\t};\n\n\t\teditor.editing.downcastDispatcher.on<DowncastInsertEvent<Element>>( 'insert', ( evt, data, conversionApi ) => {\n\t\t\tconst viewElement = conversionApi.mapper.toViewElement( data.item );\n\n\t\t\tif ( !viewElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Filter out non-widgets and inline widgets.\n\t\t\tif ( isTypeAroundWidget( viewElement, data.item, schema ) ) {\n\t\t\t\tinjectUIIntoWidget( conversionApi.writer, buttonTitles, viewElement! );\n\n\t\t\t\tconst widgetLabel = viewElement.getCustomProperty( 'widgetLabel' ) as Array<string | ( () => string )>;\n\n\t\t\t\twidgetLabel.push( () => {\n\t\t\t\t\treturn this.isEnabled ? t( 'Press Enter to type after or press Shift + Enter to type before the widget' ) : '';\n\t\t\t\t} );\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * Brings support for the fake caret that appears when either:\n\t *\n\t * * the selection moves to a widget from a position next to it using arrow keys,\n\t * * the arrow key is pressed when the widget is already selected.\n\t *\n\t * The fake caret lets the user know that they can start typing or just press\n\t * <kbd>Enter</kbd> to insert a paragraph at the position next to a widget as suggested by the fake caret.\n\t *\n\t * The fake caret disappears when the user changes the selection or the editor\n\t * gets blurred.\n\t *\n\t * The whole idea is as follows:\n\t *\n\t * 1. A user does one of the 2 scenarios described at the beginning.\n\t * 2. The \"keydown\" listener is executed and the decision is made whether to show or hide the fake caret.\n\t * 3. If it should show up, the `widget-type-around` model selection attribute is set indicating\n\t * on which side of the widget it should appear.\n\t * 4. The selection dispatcher reacts to the selection attribute and sets CSS classes responsible for the\n\t * fake caret on the view widget.\n\t * 5. If the fake caret should disappear, the selection attribute is removed and the dispatcher\n\t * does the CSS class clean-up in the view.\n\t * 6. Additionally, `change:range` and `FocusTracker#isFocused` listeners also remove the selection\n\t * attribute (the former also removes widget CSS classes).\n\t */\n\tprivate _enableTypeAroundFakeCaretActivationUsingKeyboardArrows() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst schema = model.schema;\n\t\tconst editingView = editor.editing.view;\n\n\t\t// This is the main listener responsible for the fake caret.\n\t\t// Note: The priority must precede the default Widget class keydown handler (\"high\").\n\t\tthis._listenToIfEnabled<ViewDocumentArrowKeyEvent>( editingView.document, 'arrowKey', ( evt, domEventData ) => {\n\t\t\tthis._handleArrowKeyPress( evt, domEventData );\n\t\t}, { context: [ isWidget, '$text' ], priority: 'high' } );\n\n\t\t// This listener makes sure the widget type around selection attribute will be gone from the model\n\t\t// selection as soon as the model range changes. This attribute only makes sense when a widget is selected\n\t\t// (and the \"fake horizontal caret\" is visible) so whenever the range changes (e.g. selection moved somewhere else),\n\t\t// let's get rid of the attribute so that the selection downcast dispatcher isn't even bothered.\n\t\tthis._listenToIfEnabled<SelectionChangeRangeEvent>( modelSelection, 'change:range', ( evt, data ) => {\n\t\t\t// Do not reset the selection attribute when the change was indirect.\n\t\t\tif ( !data.directChange ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Get rid of the widget type around attribute of the selection on every change:range.\n\t\t\t// If the range changes, it means for sure, the user is no longer in the active (\"fake horizontal caret\") mode.\n\t\t\teditor.model.change( writer => {\n\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t} );\n\t\t} );\n\n\t\t// Get rid of the widget type around attribute of the selection on every document change\n\t\t// that makes widget not selected any more (i.e. widget was removed).\n\t\tthis._listenToIfEnabled<DocumentChangeEvent>( model.document, 'change:data', () => {\n\t\t\tconst selectedModelElement = modelSelection.getSelectedElement();\n\n\t\t\tif ( selectedModelElement ) {\n\t\t\t\tconst selectedViewElement = editor.editing.mapper.toViewElement( selectedModelElement );\n\n\t\t\t\tif ( isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\teditor.model.change( writer => {\n\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t} );\n\t\t} );\n\n\t\t// React to changes of the model selection attribute made by the arrow keys listener.\n\t\t// If the block widget is selected and the attribute changes, downcast the attribute to special\n\t\t// CSS classes associated with the active (\"fake horizontal caret\") mode of the widget.\n\t\tthis._listenToIfEnabled<DowncastSelectionEvent>( editor.editing.downcastDispatcher, 'selection', ( evt, data, conversionApi ) => {\n\t\t\tconst writer = conversionApi.writer;\n\n\t\t\tif ( this._currentFakeCaretModelElement ) {\n\t\t\t\tconst selectedViewElement = conversionApi.mapper.toViewElement( this._currentFakeCaretModelElement );\n\n\t\t\t\tif ( selectedViewElement ) {\n\t\t\t\t\t// Get rid of CSS classes associated with the active (\"fake horizontal caret\") mode from the view widget.\n\t\t\t\t\twriter.removeClass( POSSIBLE_INSERTION_POSITIONS.map( positionToWidgetCssClass ), selectedViewElement );\n\n\t\t\t\t\tthis._currentFakeCaretModelElement = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst selectedModelElement = data.selection.getSelectedElement();\n\n\t\t\tif ( !selectedModelElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedViewElement = conversionApi.mapper.toViewElement( selectedModelElement );\n\n\t\t\tif ( !isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( data.selection );\n\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twriter.addClass( positionToWidgetCssClass( typeAroundFakeCaretPosition ), selectedViewElement! );\n\n\t\t\t// Remember the view widget that got the \"fake-caret\" CSS class. This class should be removed ASAP when the\n\t\t\t// selection changes\n\t\t\tthis._currentFakeCaretModelElement = selectedModelElement;\n\t\t} );\n\n\t\tthis._listenToIfEnabled<ObservableChangeEvent<boolean>>( editor.ui.focusTracker, 'change:isFocused', ( evt, name, isFocused ) => {\n\t\t\tif ( !isFocused ) {\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tfunction positionToWidgetCssClass( position: 'before' | 'after' ) {\n\t\t\treturn `ck-widget_type-around_show-fake-caret_${ position }`;\n\t\t}\n\t}\n\n\t/**\n\t * A listener executed on each \"keydown\" in the view document, a part of\n\t * {@link #_enableTypeAroundFakeCaretActivationUsingKeyboardArrows}.\n\t *\n\t * It decides whether the arrow keypress should activate the fake caret or not (also whether it should\n\t * be deactivated).\n\t *\n\t * The fake caret activation is done by setting the `widget-type-around` model selection attribute\n\t * in this listener, and stopping and preventing the event that would normally be handled by the widget\n\t * plugin that is responsible for the regular keyboard navigation near/across all widgets (that\n\t * includes inline widgets, which are ignored by the widget type around plugin).\n\t */\n\tprivate _handleArrowKeyPress( evt: BubblingEventInfo<'arrowKey'>, domEventData: DomEventData & KeystrokeInfo ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst schema = model.schema;\n\t\tconst editingView = editor.editing.view;\n\n\t\tconst keyCode = domEventData.keyCode;\n\t\tconst isForward = isForwardArrowKeyCode( keyCode, editor.locale.contentLanguageDirection );\n\t\tconst selectedViewElement = editingView.document.selection.getSelectedElement()!;\n\t\tconst selectedModelElement = editor.editing.mapper.toModelElement( selectedViewElement )!;\n\t\tlet shouldStopAndPreventDefault;\n\n\t\t// Handle keyboard navigation when a type-around-compatible widget is currently selected.\n\t\tif ( isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\tshouldStopAndPreventDefault = this._handleArrowKeyPressOnSelectedWidget( isForward );\n\t\t}\n\t\t// Handle keyboard arrow navigation when the selection is next to a type-around-compatible widget\n\t\t// and the widget is about to be selected.\n\t\telse if ( modelSelection.isCollapsed ) {\n\t\t\tshouldStopAndPreventDefault = this._handleArrowKeyPressWhenSelectionNextToAWidget( isForward );\n\t\t}\n\t\t// Handle collapsing a non-collapsed selection that is wider than on a single widget.\n\t\telse if ( !domEventData.shiftKey ) {\n\t\t\tshouldStopAndPreventDefault = this._handleArrowKeyPressWhenNonCollapsedSelection( isForward );\n\t\t}\n\n\t\tif ( shouldStopAndPreventDefault ) {\n\t\t\tdomEventData.preventDefault();\n\t\t\tevt.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Handles the keyboard navigation on \"keydown\" when a widget is currently selected and activates or deactivates\n\t * the fake caret for that widget, depending on the current value of the `widget-type-around` model\n\t * selection attribute and the direction of the pressed arrow key.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */\n\tprivate _handleArrowKeyPressOnSelectedWidget( isForward: boolean ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( modelSelection );\n\n\t\treturn model.change( writer => {\n\t\t\t// If the fake caret is displayed...\n\t\t\tif ( typeAroundFakeCaretPosition ) {\n\t\t\t\tconst isLeavingWidget = typeAroundFakeCaretPosition === ( isForward ? 'after' : 'before' );\n\n\t\t\t\t// If the keyboard arrow works against the value of the selection attribute...\n\t\t\t\t// then remove the selection attribute but prevent default DOM actions\n\t\t\t\t// and do not let the Widget plugin listener move the selection. This brings\n\t\t\t\t// the widget back to the state, for instance, like if was selected using the mouse.\n\t\t\t\t//\n\t\t\t\t// **Note**: If leaving the widget when the fake caret is active, then the default\n\t\t\t\t// Widget handler will change the selection and, in turn, this will automatically discard\n\t\t\t\t// the selection attribute.\n\t\t\t\tif ( !isLeavingWidget ) {\n\t\t\t\t\twriter.removeSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the fake caret wasn't displayed, let's set it now according to the direction of the arrow\n\t\t\t// key press. This also means we cannot let the Widget plugin listener move the selection.\n\t\t\telse {\n\t\t\t\twriter.setSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'after' : 'before' );\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} );\n\t}\n\n\t/**\n\t * Handles the keyboard navigation on \"keydown\" when **no** widget is selected but the selection is **directly** next\n\t * to one and upon the fake caret should become active for this widget upon arrow keypress\n\t * (AKA entering/selecting the widget).\n\t *\n\t * **Note**: This code mirrors the implementation from the widget plugin but also adds the selection attribute.\n\t * Unfortunately, there is no safe way to let the widget plugin do the selection part first and then just set the\n\t * selection attribute here in the widget type around plugin. This is why this code must duplicate some from the widget plugin.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */\n\tprivate _handleArrowKeyPressWhenSelectionNextToAWidget( isForward: boolean ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\t\tconst widgetPlugin: Widget = editor.plugins.get( 'Widget' );\n\n\t\t// This is the widget the selection is about to be set on.\n\t\tconst modelElementNextToSelection = widgetPlugin._getObjectElementNextToSelection( isForward )!;\n\t\tconst viewElementNextToSelection = editor.editing.mapper.toViewElement( modelElementNextToSelection );\n\n\t\tif ( isTypeAroundWidget( viewElementNextToSelection, modelElementNextToSelection, schema ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twidgetPlugin._setSelectionOverElement( modelElementNextToSelection );\n\t\t\t\twriter.setSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'before' : 'after' );\n\t\t\t} );\n\n\t\t\t// The change() block above does the same job as the Widget plugin. The event can\n\t\t\t// be safely canceled.\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Handles the keyboard navigation on \"keydown\" when a widget is currently selected (together with some other content)\n\t * and the widget is the first or last element in the selection. It activates or deactivates the fake caret for that widget.\n\t *\n\t * @param isForward `true` when the pressed arrow key was responsible for the forward model selection movement\n\t * as in {@link module:utils/keyboard~isForwardArrowKeyCode}.\n\t * @returns Returns `true` when the keypress was handled and no other keydown listener of the editor should\n\t * process the event any further. Returns `false` otherwise.\n\t */\n\tprivate _handleArrowKeyPressWhenNonCollapsedSelection( isForward: boolean ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\t\tconst mapper = editor.editing.mapper;\n\t\tconst modelSelection = model.document.selection;\n\n\t\tconst selectedModelNode = isForward ?\n\t\t\tmodelSelection.getLastPosition()!.nodeBefore :\n\t\t\tmodelSelection.getFirstPosition()!.nodeAfter;\n\n\t\tconst selectedViewNode = mapper.toViewElement( selectedModelNode as any );\n\n\t\t// There is a widget at the collapse position so collapse the selection to the fake caret on it.\n\t\tif ( isTypeAroundWidget( selectedViewNode, selectedModelNode as any, schema ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.setSelection( selectedModelNode!, 'on' );\n\t\t\t\twriter.setSelectionAttribute( TYPE_AROUND_SELECTION_ATTRIBUTE, isForward ? 'after' : 'before' );\n\t\t\t} );\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Registers a `mousedown` listener for the view document which intercepts events\n\t * coming from the widget type around UI, which happens when a user clicks one of the buttons\n\t * that insert a paragraph next to a widget.\n\t */\n\tprivate _enableInsertingParagraphsOnButtonClick() {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\tthis._listenToIfEnabled<ViewDocumentMouseDownEvent>( editingView.document, 'mousedown', ( evt, domEventData ) => {\n\t\t\tconst button = getClosestTypeAroundDomButton( domEventData.domTarget );\n\n\t\t\tif ( !button ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst buttonPosition = getTypeAroundButtonPosition( button );\n\t\t\tconst widgetViewElement = getClosestWidgetViewElement( button, editingView.domConverter );\n\t\t\tconst widgetModelElement = editor.editing.mapper.toModelElement( widgetViewElement );\n\n\t\t\tthis._insertParagraph( widgetModelElement!, buttonPosition );\n\n\t\t\tdomEventData.preventDefault();\n\t\t\tevt.stop();\n\t\t} );\n\t}\n\n\t/**\n\t * Creates the <kbd>Enter</kbd> key listener on the view document that allows the user to insert a paragraph\n\t * near the widget when either:\n\t *\n\t * * The fake caret was first activated using the arrow keys,\n\t * * The entire widget is selected in the model.\n\t *\n\t * In the first case, the new paragraph is inserted according to the `widget-type-around` selection\n\t * attribute (see {@link #_handleArrowKeyPress}).\n\t *\n\t * In the second case, the new paragraph is inserted based on whether a soft (<kbd>Shift</kbd>+<kbd>Enter</kbd>) keystroke\n\t * was pressed or not.\n\t */\n\tprivate _enableInsertingParagraphsOnEnterKeypress() {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst editingView = editor.editing.view;\n\n\t\tthis._listenToIfEnabled<ViewDocumentEnterEvent>( editingView.document, 'enter', ( evt, domEventData ) => {\n\t\t\t// This event could be triggered from inside the widget but we are interested\n\t\t\t// only when the widget is selected itself.\n\t\t\tif ( evt.eventPhase != 'atTarget' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedModelElement = selection.getSelectedElement()!;\n\t\t\tconst selectedViewElement = editor.editing.mapper.toViewElement( selectedModelElement );\n\n\t\t\tconst schema = editor.model.schema;\n\t\t\tlet wasHandled;\n\n\t\t\t// First check if the widget is selected and there's a type around selection attribute associated\n\t\t\t// with the fake caret that would tell where to insert a new paragraph.\n\t\t\tif ( this._insertParagraphAccordingToFakeCaretPosition() ) {\n\t\t\t\twasHandled = true;\n\t\t\t}\n\t\t\t// Then, if there is no selection attribute associated with the fake caret, check if the widget\n\t\t\t// simply is selected and create a new paragraph according to the keystroke (Shift+)Enter.\n\t\t\telse if ( isTypeAroundWidget( selectedViewElement, selectedModelElement, schema ) ) {\n\t\t\t\tthis._insertParagraph( selectedModelElement, domEventData.isSoft ? 'before' : 'after' );\n\n\t\t\t\twasHandled = true;\n\t\t\t}\n\n\t\t\tif ( wasHandled ) {\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: isWidget } );\n\t}\n\n\t/**\n\t * Similar to the {@link #_enableInsertingParagraphsOnEnterKeypress}, it allows the user\n\t * to insert a paragraph next to a widget when the fake caret was activated using arrow\n\t * keys but it responds to typing instead of <kbd>Enter</kbd>.\n\t *\n\t * Listener enabled by this method will insert a new paragraph according to the `widget-type-around`\n\t * model selection attribute as the user simply starts typing, which creates the impression that the fake caret\n\t * behaves like a real one rendered by the browser (AKA your text appears where the caret was).\n\t *\n\t * **Note**: At the moment this listener creates 2 undo steps: one for the `insertParagraph` command\n\t * and another one for actual typing. It is not a disaster but this may need to be fixed\n\t * sooner or later.\n\t */\n\tprivate _enableInsertingParagraphsOnTypingKeystroke() {\n\t\tconst editor = this.editor;\n\t\tconst viewDocument = editor.editing.view.document;\n\n\t\t// Note: The priority must precede the default Input plugin insertText handler.\n\t\tthis._listenToIfEnabled<ViewDocumentInsertTextEvent>( viewDocument, 'insertText', ( evt, data ) => {\n\t\t\tif ( this._insertParagraphAccordingToFakeCaretPosition() ) {\n\t\t\t\t// The view selection in the event data contains the widget. If the new paragraph\n\t\t\t\t// was inserted, modify the view selection passed along with the insertText event\n\t\t\t\t// so the default event handler in the Input plugin starts typing inside the paragraph.\n\t\t\t\t// Otherwise, the typing would be over the widget.\n\t\t\t\tdata.selection = viewDocument.selection;\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\n\t\tif ( env.isAndroid ) {\n\t\t\t// On Android with English keyboard, the composition starts just by putting caret\n\t\t\t// at the word end or by selecting a table column. This is not a real composition started.\n\t\t\t// Trigger delete content on first composition key pressed.\n\t\t\tthis._listenToIfEnabled<ViewDocumentKeyDownEvent>( viewDocument, 'keydown', ( evt, data ) => {\n\t\t\t\tif ( data.keyCode == 229 ) {\n\t\t\t\t\tthis._insertParagraphAccordingToFakeCaretPosition();\n\t\t\t\t}\n\t\t\t} );\n\t\t} else {\n\t\t\t// Note: The priority must precede the default Input plugin compositionstart handler (to call it before delete content).\n\t\t\tthis._listenToIfEnabled<ViewDocumentCompositionStartEvent>( viewDocument, 'compositionstart', () => {\n\t\t\t\tthis._insertParagraphAccordingToFakeCaretPosition();\n\t\t\t}, { priority: 'high' } );\n\t\t}\n\t}\n\n\t/**\n\t * It creates a \"delete\" event listener on the view document to handle cases when the <kbd>Delete</kbd> or <kbd>Backspace</kbd>\n\t * is pressed and the fake caret is currently active.\n\t *\n\t * The fake caret should create an illusion of a real browser caret so that when it appears before or after\n\t * a widget, pressing <kbd>Delete</kbd> or <kbd>Backspace</kbd> should remove a widget or delete the content\n\t * before or after a widget (depending on the content surrounding the widget).\n\t */\n\tprivate _enableDeleteIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\n\t\tthis._listenToIfEnabled<ViewDocumentDeleteEvent>( editingView.document, 'delete', ( evt, domEventData ) => {\n\t\t\t// This event could be triggered from inside the widget but we are interested\n\t\t\t// only when the widget is selected itself.\n\t\t\tif ( evt.eventPhase != 'atTarget' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( model.document.selection );\n\n\t\t\t// This listener handles only these cases when the fake caret is active.\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst direction = domEventData.direction;\n\t\t\tconst selectedModelWidget = model.document.selection.getSelectedElement();\n\n\t\t\tconst isFakeCaretBefore = typeAroundFakeCaretPosition === 'before';\n\t\t\tconst isDeleteForward = direction == 'forward';\n\t\t\tconst shouldDeleteEntireWidget = isFakeCaretBefore === isDeleteForward;\n\n\t\t\tif ( shouldDeleteEntireWidget ) {\n\t\t\t\teditor.execute( 'delete', {\n\t\t\t\t\tselection: model.createSelection( selectedModelWidget!, 'on' )\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tconst range = schema.getNearestSelectionRange(\n\t\t\t\t\tmodel.createPositionAt( selectedModelWidget!, typeAroundFakeCaretPosition ),\n\t\t\t\t\tdirection\n\t\t\t\t);\n\n\t\t\t\t// If there is somewhere to move selection to, then there will be something to delete.\n\t\t\t\tif ( range ) {\n\t\t\t\t\t// If the range is NOT collapsed, then we know that the range contains an object (see getNearestSelectionRange() docs).\n\t\t\t\t\tif ( !range.isCollapsed ) {\n\t\t\t\t\t\tmodel.change( writer => {\n\t\t\t\t\t\t\twriter.setSelection( range );\n\t\t\t\t\t\t\teditor.execute( isDeleteForward ? 'deleteForward' : 'delete' );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst probe = model.createSelection( range.start );\n\t\t\t\t\t\tmodel.modifySelection( probe, { direction } );\n\n\t\t\t\t\t\t// If the range is collapsed, let's see if a non-collapsed range exists that can could be deleted.\n\t\t\t\t\t\t// If such range exists, use the editor command because it it safe for collaboration (it merges where it can).\n\t\t\t\t\t\tif ( !probe.focus!.isEqual( range.start ) ) {\n\t\t\t\t\t\t\tmodel.change( writer => {\n\t\t\t\t\t\t\t\twriter.setSelection( range );\n\t\t\t\t\t\t\t\teditor.execute( isDeleteForward ? 'deleteForward' : 'delete' );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If there is no non-collapsed range to be deleted then we are sure that there is an empty element\n\t\t\t\t\t\t// next to a widget that should be removed. \"delete\" and \"deleteForward\" commands cannot get rid of it\n\t\t\t\t\t\t// so calling Model#deleteContent here manually.\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst deepestEmptyRangeAncestor = getDeepestEmptyElementAncestor( schema, range.start.parent as Element );\n\n\t\t\t\t\t\t\tmodel.deleteContent( model.createSelection( deepestEmptyRangeAncestor, 'on' ), {\n\t\t\t\t\t\t\t\tdoNotAutoparagraph: true\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If some content was deleted, don't let the handler from the Widget plugin kick in.\n\t\t\t// If nothing was deleted, then the default handler will have nothing to do anyway.\n\t\t\tdomEventData.preventDefault();\n\t\t\tevt.stop();\n\t\t}, { context: isWidget } );\n\t}\n\n\t/**\n\t * Attaches the {@link module:engine/model/model~Model#event:insertContent} event listener that, for instance, allows the user to paste\n\t * content near a widget when the fake caret is first activated using the arrow keys.\n\t *\n\t * The content is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n\t */\n\tprivate _enableInsertContentIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst documentSelection = model.document.selection;\n\n\t\tthis._listenToIfEnabled<ModelInsertContentEvent>( editor.model, 'insertContent', ( evt, [ content, selectable ] ) => {\n\t\t\tif ( selectable && !( selectable as any ).is( 'documentSelection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( documentSelection );\n\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevt.stop();\n\n\t\t\treturn model.change( writer => {\n\t\t\t\tconst selectedElement = documentSelection.getSelectedElement();\n\t\t\t\tconst position = model.createPositionAt( selectedElement!, typeAroundFakeCaretPosition );\n\t\t\t\tconst selection = writer.createSelection( position );\n\n\t\t\t\tconst result = model.insertContent( content, selection );\n\n\t\t\t\twriter.setSelection( selection );\n\n\t\t\t\treturn result;\n\t\t\t} );\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Attaches the {@link module:engine/model/model~Model#event:insertObject} event listener that modifies the\n\t * `options.findOptimalPosition`parameter to position of fake caret in relation to selected element\n\t * to reflect user's intent of desired insertion position.\n\t *\n\t * The object is inserted according to the `widget-type-around` selection attribute (see {@link #_handleArrowKeyPress}).\n\t */\n\tprivate _enableInsertObjectIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst documentSelection = model.document.selection;\n\n\t\tthis._listenToIfEnabled<ModelInsertObjectEvent>( editor.model, 'insertObject', ( evt, args ) => {\n\t\t\tconst [ , selectable, options = {} ] = args;\n\n\t\t\tif ( selectable && !( selectable as any ).is( 'documentSelection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( documentSelection );\n\n\t\t\tif ( !typeAroundFakeCaretPosition ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toptions.findOptimalPosition = typeAroundFakeCaretPosition;\n\t\t\targs[ 3 ] = options;\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Attaches the {@link module:engine/model/model~Model#event:deleteContent} event listener to block the event when the fake\n\t * caret is active.\n\t *\n\t * This is required for cases that trigger {@link module:engine/model/model~Model#deleteContent `model.deleteContent()`}\n\t * before calling {@link module:engine/model/model~Model#insertContent `model.insertContent()`} like, for instance,\n\t * plain text pasting.\n\t */\n\tprivate _enableDeleteContentIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst documentSelection = model.document.selection;\n\n\t\tthis._listenToIfEnabled<ModelDeleteContentEvent>( editor.model, 'deleteContent', ( evt, [ selection ] ) => {\n\t\t\tif ( selection && !selection.is( 'documentSelection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst typeAroundFakeCaretPosition = getTypeAroundFakeCaretPosition( documentSelection );\n\n\t\t\t// Disable removing the selection content while pasting plain text.\n\t\t\tif ( typeAroundFakeCaretPosition ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n}\n\n/**\n * Injects the type around UI into a view widget instance.\n */\nfunction injectUIIntoWidget(\n\tviewWriter: DowncastWriter,\n\tbuttonTitles: { before: string; after: string },\n\twidgetViewElement: ViewElement ) {\n\tconst typeAroundWrapper = viewWriter.createUIElement( 'div', {\n\t\tclass: 'ck ck-reset_all ck-widget__type-around'\n\t}, function( domDocument ) {\n\t\tconst wrapperDomElement = this.toDomElement( domDocument );\n\n\t\tinjectButtons( wrapperDomElement, buttonTitles );\n\t\tinjectFakeCaret( wrapperDomElement );\n\n\t\treturn wrapperDomElement;\n\t} );\n\n\t// Inject the type around wrapper into the widget's wrapper.\n\tviewWriter.insert( viewWriter.createPositionAt( widgetViewElement, 'end' ), typeAroundWrapper );\n}\n\n/**\n * FYI: Not using the IconView class because each instance would need to be destroyed to avoid memory leaks\n * and it's pretty hard to figure out when a view (widget) is gone for good so it's cheaper to use raw\n * <svg> here.\n */\nfunction injectButtons( wrapperDomElement: HTMLElement, buttonTitles: { before: string; after: string } ) {\n\tfor ( const position of POSSIBLE_INSERTION_POSITIONS ) {\n\t\tconst buttonTemplate = new Template( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-widget__type-around__button',\n\t\t\t\t\t`ck-widget__type-around__button_${ position }`\n\t\t\t\t],\n\t\t\t\ttitle: buttonTitles[ position ],\n\t\t\t\t'aria-hidden': 'true'\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\twrapperDomElement.ownerDocument.importNode( RETURN_ARROW_ICON_ELEMENT, true )\n\t\t\t]\n\t\t} );\n\n\t\twrapperDomElement.appendChild( buttonTemplate.render() );\n\t}\n}\n\nfunction injectFakeCaret( wrapperDomElement: HTMLElement ) {\n\tconst caretTemplate = new Template( {\n\t\ttag: 'div',\n\t\tattributes: {\n\t\t\tclass: [\n\t\t\t\t'ck',\n\t\t\t\t'ck-widget__type-around__fake-caret'\n\t\t\t]\n\t\t}\n\t} );\n\n\twrapperDomElement.appendChild( caretTemplate.render() );\n}\n\n/**\n * Returns the ancestor of an element closest to the root which is empty. For instance,\n * for `<baz>`:\n *\n * ```\n * <foo>abc<bar><baz></baz></bar></foo>\n * ```\n *\n * it returns `<bar>`.\n */\nfunction getDeepestEmptyElementAncestor( schema: Schema, element: Element ) {\n\tlet deepestEmptyAncestor = element;\n\n\tfor ( const ancestor of element.getAncestors( { parentFirst: true } ) ) {\n\t\tif ( ( ancestor as any ).childCount > 1 || schema.isLimit( ancestor ) ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tdeepestEmptyAncestor = ancestor as Element;\n\t}\n\n\treturn deepestEmptyAncestor;\n}\n","export default \"<svg viewBox=\\\"0 0 10 8\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M9.055.263v3.972h-6.77M1 4.216l2-2.038m-2 2 2 2.038\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/verticalnavigation\n */\n\nimport {\n\tkeyCodes,\n\tRect,\n\ttype GetCallback\n} from '@ckeditor/ckeditor5-utils';\n\nimport type {\n\tDocumentSelection,\n\tEditingController,\n\tModel,\n\tPosition,\n\tRange,\n\tSchema,\n\tSelection,\n\tViewDocumentArrowKeyEvent\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * Returns 'keydown' handler for up/down arrow keys that modifies the caret movement if it's in a text line next to an object.\n *\n * @param editing The editing controller.\n */\nexport default function verticalNavigationHandler(\n\tediting: EditingController\n): GetCallback<ViewDocumentArrowKeyEvent> {\n\tconst model = editing.model;\n\n\treturn ( evt, data ) => {\n\t\tconst arrowUpPressed = data.keyCode == keyCodes.arrowup;\n\t\tconst arrowDownPressed = data.keyCode == keyCodes.arrowdown;\n\t\tconst expandSelection = data.shiftKey;\n\t\tconst selection = model.document.selection;\n\n\t\tif ( !arrowUpPressed && !arrowDownPressed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isForward = arrowDownPressed;\n\n\t\t// Navigation is in the opposite direction than the selection direction so this is shrinking of the selection.\n\t\t// Selection for sure will not approach any object.\n\t\tif ( expandSelection && selectionWillShrink( selection, isForward ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find a range between selection and closest limit element.\n\t\tconst range = findTextRangeFromSelection( editing, selection, isForward );\n\n\t\t// There is no selection position inside the limit element.\n\t\tif ( !range ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If already at the edge of a limit element.\n\t\tif ( range.isCollapsed ) {\n\t\t\t// A collapsed selection at limit edge - nothing more to do.\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// A non collapsed selection is at the limit edge while expanding the selection - let others do their stuff.\n\t\t\telse if ( expandSelection ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// If the range is a single line (there is no word wrapping) then move the selection to the position closest to the limit element.\n\t\t//\n\t\t// We can't move the selection directly to the isObject element (eg. table cell) because of dual position at the end/beginning\n\t\t// of wrapped line (it's at the same time at the end of one line and at the start of the next line).\n\t\tif ( range.isCollapsed || isSingleLineRange( editing, range, isForward ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\tconst newPosition = isForward ? range.end : range.start;\n\n\t\t\t\tif ( expandSelection ) {\n\t\t\t\t\tconst newSelection = model.createSelection( selection.anchor );\n\t\t\t\t\tnewSelection.setFocus( newPosition );\n\n\t\t\t\t\twriter.setSelection( newSelection );\n\t\t\t\t} else {\n\t\t\t\t\twriter.setSelection( newPosition );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tevt.stop();\n\t\t\tdata.preventDefault();\n\t\t\tdata.stopPropagation();\n\t\t}\n\t};\n}\n\n/**\n * Finds the range between selection and closest limit element (in the direction of navigation).\n * The position next to limit element is adjusted to the closest allowed `$text` position.\n *\n * Returns `null` if, according to the schema, the resulting range cannot contain a `$text` element.\n *\n * @param editing The editing controller.\n * @param selection The current selection.\n * @param isForward The expected navigation direction.\n */\nfunction findTextRangeFromSelection( editing: EditingController, selection: Selection | DocumentSelection, isForward: boolean ) {\n\tconst model = editing.model;\n\n\tif ( isForward ) {\n\t\tconst startPosition = selection.isCollapsed ? selection.focus! : selection.getLastPosition()!;\n\t\tconst endPosition = getNearestNonInlineLimit( model, startPosition, 'forward' );\n\n\t\t// There is no limit element, browser should handle this.\n\t\tif ( !endPosition ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst range = model.createRange( startPosition, endPosition );\n\t\tconst lastRangePosition = getNearestTextPosition( model.schema, range, 'backward' );\n\n\t\tif ( lastRangePosition ) {\n\t\t\treturn model.createRange( startPosition, lastRangePosition );\n\t\t}\n\n\t\treturn null;\n\t} else {\n\t\tconst endPosition = selection.isCollapsed ? selection.focus! : selection.getFirstPosition()!;\n\t\tconst startPosition = getNearestNonInlineLimit( model, endPosition, 'backward' );\n\n\t\t// There is no limit element, browser should handle this.\n\t\tif ( !startPosition ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst range = model.createRange( startPosition, endPosition );\n\t\tconst firstRangePosition = getNearestTextPosition( model.schema, range, 'forward' );\n\n\t\tif ( firstRangePosition ) {\n\t\t\treturn model.createRange( firstRangePosition, endPosition );\n\t\t}\n\n\t\treturn null;\n\t}\n}\n\n/**\n * Finds the limit element position that is closest to startPosition.\n *\n * @param direction Search direction.\n */\nfunction getNearestNonInlineLimit( model: Model, startPosition: Position, direction: 'forward' | 'backward' ) {\n\tconst schema = model.schema;\n\tconst range = model.createRangeIn( startPosition.root );\n\n\tconst walkerValueType = direction == 'forward' ? 'elementStart' : 'elementEnd';\n\n\tfor ( const { previousPosition, item, type } of range.getWalker( { startPosition, direction } ) ) {\n\t\tif ( schema.isLimit( item ) && !schema.isInline( item ) ) {\n\t\t\treturn previousPosition;\n\t\t}\n\n\t\t// Stop looking for isLimit element if the next element is a block element (it is for sure not single line).\n\t\tif ( type == walkerValueType && schema.isBlock( item ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Basing on the provided range, finds the first or last (depending on `direction`) position inside the range\n * that can contain `$text` (according to schema).\n *\n * @param schema The schema.\n * @param range The range to find the position in.\n * @param direction Search direction.\n * @returns The nearest selection position.\n *\n */\nfunction getNearestTextPosition( schema: Schema, range: Range, direction: 'forward' | 'backward' ) {\n\tconst position = direction == 'backward' ? range.end : range.start;\n\n\tif ( schema.checkChild( position, '$text' ) ) {\n\t\treturn position;\n\t}\n\n\tfor ( const { nextPosition } of range.getWalker( { direction } ) ) {\n\t\tif ( schema.checkChild( nextPosition, '$text' ) ) {\n\t\t\treturn nextPosition;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Checks if the DOM range corresponding to the provided model range renders as a single line by analyzing DOMRects\n * (verifying if they visually wrap content to the next line).\n *\n * @param editing The editing controller.\n * @param modelRange The current table cell content range.\n * @param isForward The expected navigation direction.\n */\nfunction isSingleLineRange( editing: EditingController, modelRange: Range, isForward: boolean ) {\n\tconst model = editing.model;\n\tconst domConverter = editing.view.domConverter;\n\n\t// Wrapped lines contain exactly the same position at the end of current line\n\t// and at the beginning of next line. That position's client rect is at the end\n\t// of current line. In case of caret at first position of the last line that 'dual'\n\t// position would be detected as it's not the last line.\n\tif ( isForward ) {\n\t\tconst probe = model.createSelection( modelRange.start );\n\n\t\tmodel.modifySelection( probe );\n\n\t\t// If the new position is at the end of the container then we can't use this position\n\t\t// because it would provide incorrect result for eg caption of image and selection\n\t\t// just before end of it. Also in this case there is no \"dual\" position.\n\t\tif ( !probe.focus!.isAtEnd && !modelRange.start.isEqual( probe.focus! ) ) {\n\t\t\tmodelRange = model.createRange( probe.focus!, modelRange.end );\n\t\t}\n\t}\n\n\tconst viewRange = editing.mapper.toViewRange( modelRange );\n\tconst domRange = domConverter.viewRangeToDom( viewRange );\n\tconst rects = Rect.getDomRangeRects( domRange );\n\n\tlet boundaryVerticalPosition;\n\n\tfor ( const rect of rects ) {\n\t\tif ( boundaryVerticalPosition === undefined ) {\n\t\t\tboundaryVerticalPosition = Math.round( rect.bottom );\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Let's check if this rect is in new line.\n\t\tif ( Math.round( rect.top ) >= boundaryVerticalPosition ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tboundaryVerticalPosition = Math.max( boundaryVerticalPosition, Math.round( rect.bottom ) );\n\t}\n\n\treturn true;\n}\n\nfunction selectionWillShrink( selection: DocumentSelection, isForward: boolean ) {\n\treturn !selection.isCollapsed && selection.isBackward == isForward;\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./widget.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widget\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\nimport {\n\tMouseObserver,\n\ttype DomEventData,\n\ttype DowncastSelectionEvent,\n\ttype DowncastWriter,\n\ttype Element,\n\ttype Node,\n\ttype ViewDocumentArrowKeyEvent,\n\ttype ViewDocumentFragment,\n\ttype ViewDocumentMouseDownEvent,\n\ttype ViewElement\n} from '@ckeditor/ckeditor5-engine';\n\nimport { Delete, type ViewDocumentDeleteEvent } from '@ckeditor/ckeditor5-typing';\n\nimport {\n\tenv,\n\tgetLocalizedArrowKeyCodeDirection,\n\ttype EventInfo,\n\ttype KeystrokeInfo\n} from '@ckeditor/ckeditor5-utils';\n\nimport WidgetTypeAround from './widgettypearound/widgettypearound';\nimport verticalNavigationHandler from './verticalnavigation';\nimport { getLabel, isWidget, WIDGET_SELECTED_CLASS_NAME } from './utils';\n\nimport '../theme/widget.css';\n\n/**\n * The widget plugin. It enables base support for widgets.\n *\n * See {@glink api/widget package page} for more details and documentation.\n *\n * This plugin enables multiple behaviors required by widgets:\n *\n * * The model to view selection converter for the editing pipeline (it handles widget custom selection rendering).\n * If a converted selection wraps around a widget element, that selection is marked as\n * {@link module:engine/view/selection~Selection#isFake fake}. Additionally, the `ck-widget_selected` CSS class\n * is added to indicate that widget has been selected.\n * * The mouse and keyboard events handling on and around widget elements.\n */\nexport default class Widget extends Plugin {\n\t/**\n\t * Holds previously selected widgets.\n\t */\n\tprivate _previouslySelected = new Set<ViewElement>();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Widget' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ WidgetTypeAround, Delete ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\t// Model to view selection converter.\n\t\t// Converts selection placed over widget element to fake selection.\n\t\t//\n\t\t// By default, the selection is downcasted by the engine to surround the attribute element, even though its only\n\t\t// child is an inline widget. A similar thing also happens when a collapsed marker is rendered as a UI element\n\t\t// next to an inline widget: the view selection contains both the widget and the marker.\n\t\t//\n\t\t// This prevents creating a correct fake selection when this inline widget is selected. Normalize the selection\n\t\t// in these cases based on the model:\n\t\t//\n\t\t//\t\t[<attributeElement><inlineWidget /></attributeElement>] -> <attributeElement>[<inlineWidget />]</attributeElement>\n\t\t//\t\t[<uiElement></uiElement><inlineWidget />] -> <uiElement></uiElement>[<inlineWidget />]\n\t\t//\n\t\t// Thanks to this:\n\t\t//\n\t\t// * fake selection can be set correctly,\n\t\t// * any logic depending on (View)Selection#getSelectedElement() also works OK.\n\t\t//\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/9524.\n\t\tthis.editor.editing.downcastDispatcher.on<DowncastSelectionEvent>( 'selection', ( evt, data, conversionApi ) => {\n\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\tconst modelSelection = data.selection;\n\n\t\t\t// The collapsed selection can't contain any widget.\n\t\t\tif ( modelSelection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedModelElement = modelSelection.getSelectedElement();\n\n\t\t\tif ( !selectedModelElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedViewElement = editor.editing.mapper.toViewElement( selectedModelElement )!;\n\n\t\t\tif ( !isWidget( selectedViewElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !conversionApi.consumable.consume( modelSelection, 'selection' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tviewWriter.setSelection( viewWriter.createRangeOn( selectedViewElement ), {\n\t\t\t\tfake: true,\n\t\t\t\tlabel: getLabel( selectedViewElement )\n\t\t\t} );\n\t\t} );\n\n\t\t// Mark all widgets inside the selection with the css class.\n\t\t// This handler is registered at the 'low' priority so it's triggered after the real selection conversion.\n\t\tthis.editor.editing.downcastDispatcher.on<DowncastSelectionEvent>( 'selection', ( evt, data, conversionApi ) => {\n\t\t\t// Remove selected class from previously selected widgets.\n\t\t\tthis._clearPreviouslySelectedWidgets( conversionApi.writer );\n\n\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\tconst viewSelection = viewWriter.document.selection;\n\n\t\t\tlet lastMarked = null;\n\n\t\t\tfor ( const range of viewSelection.getRanges() ) {\n\t\t\t\t// Note: There could be multiple selected widgets in a range but no fake selection.\n\t\t\t\t// All of them must be marked as selected, for instance [<widget></widget><widget></widget>]\n\t\t\t\tfor ( const value of range ) {\n\t\t\t\t\tconst node = value.item as ViewElement;\n\t\t\t\t\t// Do not mark nested widgets in selected one. See: #4594\n\t\t\t\t\tif ( isWidget( node ) && !isChild( node, lastMarked ) ) {\n\t\t\t\t\t\tviewWriter.addClass( WIDGET_SELECTED_CLASS_NAME, node );\n\t\t\t\t\t\tthis._previouslySelected.add( node );\n\t\t\t\t\t\tlastMarked = node;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\n\t\t// If mouse down is pressed on widget - create selection over whole widget.\n\t\tview.addObserver( MouseObserver );\n\t\tthis.listenTo<ViewDocumentMouseDownEvent>( viewDocument, 'mousedown', ( ...args ) => this._onMousedown( ...args ) );\n\n\t\t// There are two keydown listeners working on different priorities. This allows other\n\t\t// features such as WidgetTypeAround or TableKeyboard to attach their listeners in between\n\t\t// and customize the behavior even further in different content/selection scenarios.\n\t\t//\n\t\t// * The first listener handles changing the selection on arrow key press\n\t\t// if the widget is selected or if the selection is next to a widget and the widget\n\t\t// should become selected upon the arrow key press.\n\t\t//\n\t\t// * The second (late) listener makes sure the default browser action on arrow key press is\n\t\t// prevented when a widget is selected. This prevents the selection from being moved\n\t\t// from a fake selection container.\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>( viewDocument, 'arrowKey', ( ...args ) => {\n\t\t\tthis._handleSelectionChangeOnArrowKeyPress( ...args );\n\t\t}, { context: [ isWidget, '$text' ] } );\n\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>( viewDocument, 'arrowKey', ( ...args ) => {\n\t\t\tthis._preventDefaultOnArrowKeyPress( ...args );\n\t\t}, { context: '$root' } );\n\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>(\n\t\t\tviewDocument,\n\t\t\t'arrowKey',\n\t\t\tverticalNavigationHandler( this.editor.editing ),\n\t\t\t{ context: '$text' }\n\t\t);\n\n\t\t// Handle custom delete behaviour.\n\t\tthis.listenTo<ViewDocumentDeleteEvent>( viewDocument, 'delete', ( evt, data ) => {\n\t\t\tif ( this._handleDelete( data.direction == 'forward' ) ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: '$root' } );\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:mousedown mousedown} events on widget elements.\n\t */\n\tprivate _onMousedown( eventInfo: EventInfo, domEventData: DomEventData<MouseEvent> ) {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tlet element: ViewElement | null = domEventData.target;\n\n\t\t// Do nothing for single or double click inside nested editable.\n\t\tif ( isInsideNestedEditable( element ) ) {\n\t\t\t// But at least triple click inside nested editable causes broken selection in Safari.\n\t\t\t// For such event, we select the entire nested editable element.\n\t\t\t// See: https://github.com/ckeditor/ckeditor5/issues/1463.\n\t\t\tif ( ( env.isSafari || env.isGecko ) && domEventData.domEvent.detail >= 3 ) {\n\t\t\t\tconst mapper = editor.editing.mapper;\n\t\t\t\tconst viewElement = element.is( 'attributeElement' ) ?\n\t\t\t\t\telement.findAncestor( element => !element.is( 'attributeElement' ) )! : element;\n\t\t\t\tconst modelElement = mapper.toModelElement( viewElement )!;\n\n\t\t\t\tdomEventData.preventDefault();\n\n\t\t\t\tthis.editor.model.change( writer => {\n\t\t\t\t\twriter.setSelection( modelElement, 'in' );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// If target is not a widget element - check if one of the ancestors is.\n\t\tif ( !isWidget( element ) ) {\n\t\t\telement = element.findAncestor( isWidget );\n\n\t\t\tif ( !element ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// On Android selection would jump to the first table cell, on other devices\n\t\t// we can't block it (and don't need to) because of drag and drop support.\n\t\tif ( env.isAndroid ) {\n\t\t\tdomEventData.preventDefault();\n\t\t}\n\n\t\t// Focus editor if is not focused already.\n\t\tif ( !viewDocument.isFocused ) {\n\t\t\tview.focus();\n\t\t}\n\n\t\t// Create model selection over widget.\n\t\tconst modelElement = editor.editing.mapper.toModelElement( element );\n\n\t\tthis._setSelectionOverElement( modelElement! );\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and changes\n\t * the model selection when:\n\t *\n\t * * arrow key is pressed when the widget is selected,\n\t * * the selection is next to a widget and the widget should become selected upon the arrow key press.\n\t *\n\t * See {@link #_preventDefaultOnArrowKeyPress}.\n\t */\n\tprivate _handleSelectionChangeOnArrowKeyPress( eventInfo: EventInfo, domEventData: DomEventData & KeystrokeInfo ) {\n\t\tconst keyCode = domEventData.keyCode;\n\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst modelSelection = model.document.selection;\n\t\tconst objectElement = modelSelection.getSelectedElement();\n\t\tconst direction = getLocalizedArrowKeyCodeDirection( keyCode, this.editor.locale.contentLanguageDirection );\n\t\tconst isForward = direction == 'down' || direction == 'right';\n\t\tconst isVerticalNavigation = direction == 'up' || direction == 'down';\n\n\t\t// If object element is selected.\n\t\tif ( objectElement && schema.isObject( objectElement ) ) {\n\t\t\tconst position = isForward ? modelSelection.getLastPosition() : modelSelection.getFirstPosition();\n\t\t\tconst newRange = schema.getNearestSelectionRange( position!, isForward ? 'forward' : 'backward' );\n\n\t\t\tif ( newRange ) {\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\twriter.setSelection( newRange );\n\t\t\t\t} );\n\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t\teventInfo.stop();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle collapsing of the selection when there is any widget on the edge of selection.\n\t\t// This is needed because browsers have problems with collapsing such selection.\n\t\tif ( !modelSelection.isCollapsed && !domEventData.shiftKey ) {\n\t\t\tconst firstPosition = modelSelection.getFirstPosition();\n\t\t\tconst lastPosition = modelSelection.getLastPosition();\n\n\t\t\tconst firstSelectedNode = firstPosition!.nodeAfter;\n\t\t\tconst lastSelectedNode = lastPosition!.nodeBefore;\n\n\t\t\tif ( firstSelectedNode && schema.isObject( firstSelectedNode ) || lastSelectedNode && schema.isObject( lastSelectedNode ) ) {\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\twriter.setSelection( isForward ? lastPosition : firstPosition );\n\t\t\t\t} );\n\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t\teventInfo.stop();\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Return if not collapsed.\n\t\tif ( !modelSelection.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If selection is next to object element.\n\n\t\tconst objectElementNextToSelection = this._getObjectElementNextToSelection( isForward );\n\n\t\tif ( objectElementNextToSelection && schema.isObject( objectElementNextToSelection ) ) {\n\t\t\t// Do not select an inline widget while handling up/down arrow.\n\t\t\tif ( schema.isInline( objectElementNextToSelection ) && isVerticalNavigation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._setSelectionOverElement( objectElementNextToSelection );\n\n\t\t\tdomEventData.preventDefault();\n\t\t\teventInfo.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events and prevents\n\t * the default browser behavior to make sure the fake selection is not being moved from a fake selection\n\t * container.\n\t *\n\t * See {@link #_handleSelectionChangeOnArrowKeyPress}.\n\t */\n\tprivate _preventDefaultOnArrowKeyPress( eventInfo: EventInfo, domEventData: DomEventData ) {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst objectElement = model.document.selection.getSelectedElement();\n\n\t\t// If object element is selected.\n\t\tif ( objectElement && schema.isObject( objectElement ) ) {\n\t\t\tdomEventData.preventDefault();\n\t\t\teventInfo.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Handles delete keys: backspace and delete.\n\t *\n\t * @param isForward Set to true if delete was performed in forward direction.\n\t * @returns Returns `true` if keys were handled correctly.\n\t */\n\tprivate _handleDelete( isForward: boolean ) {\n\t\tconst modelDocument = this.editor.model.document;\n\t\tconst modelSelection = modelDocument.selection;\n\n\t\t// Do nothing when the read only mode is enabled.\n\t\tif ( !this.editor.model.canEditAt( modelSelection ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Do nothing on non-collapsed selection.\n\t\tif ( !modelSelection.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst objectElement = this._getObjectElementNextToSelection( isForward );\n\n\t\tif ( objectElement ) {\n\t\t\tthis.editor.model.change( writer => {\n\t\t\t\tlet previousNode = modelSelection.anchor!.parent;\n\n\t\t\t\t// Remove previous element if empty.\n\t\t\t\twhile ( previousNode.isEmpty ) {\n\t\t\t\t\tconst nodeToRemove = previousNode;\n\t\t\t\t\tpreviousNode = nodeToRemove.parent!;\n\n\t\t\t\t\twriter.remove( nodeToRemove as Element );\n\t\t\t\t}\n\n\t\t\t\tthis._setSelectionOverElement( objectElement );\n\t\t\t} );\n\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t/**\n\t * Sets {@link module:engine/model/selection~Selection document's selection} over given element.\n\t *\n\t * @internal\n\t */\n\tpublic _setSelectionOverElement( element: Node ): void {\n\t\tthis.editor.model.change( writer => {\n\t\t\twriter.setSelection( writer.createRangeOn( element ) );\n\t\t} );\n\t}\n\n\t/**\n\t * Checks if {@link module:engine/model/element~Element element} placed next to the current\n\t * {@link module:engine/model/selection~Selection model selection} exists and is marked in\n\t * {@link module:engine/model/schema~Schema schema} as `object`.\n\t *\n\t * @internal\n\t * @param forward Direction of checking.\n\t */\n\tpublic _getObjectElementNextToSelection( forward: boolean ): Element | null {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst modelSelection = model.document.selection;\n\n\t\t// Clone current selection to use it as a probe. We must leave default selection as it is so it can return\n\t\t// to its current state after undo.\n\t\tconst probe = model.createSelection( modelSelection );\n\t\tmodel.modifySelection( probe, { direction: forward ? 'forward' : 'backward' } );\n\n\t\t// The selection didn't change so there is nothing there.\n\t\tif ( probe.isEqual( modelSelection ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst objectElement = forward ? probe.focus!.nodeBefore : probe.focus!.nodeAfter;\n\n\t\tif ( !!objectElement && schema.isObject( objectElement ) ) {\n\t\t\treturn objectElement as Element;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Removes CSS class from previously selected widgets.\n\t */\n\tprivate _clearPreviouslySelectedWidgets( writer: DowncastWriter ) {\n\t\tfor ( const widget of this._previouslySelected ) {\n\t\t\twriter.removeClass( WIDGET_SELECTED_CLASS_NAME, widget );\n\t\t}\n\n\t\tthis._previouslySelected.clear();\n\t}\n}\n\n/**\n * Returns `true` when element is a nested editable or is placed inside one.\n */\nfunction isInsideNestedEditable( element: ViewElement ) {\n\tlet currentElement: ViewElement | ViewDocumentFragment | null = element;\n\n\twhile ( currentElement ) {\n\t\tif ( currentElement.is( 'editableElement' ) && !currentElement.is( 'rootElement' ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Click on nested widget should select it.\n\t\tif ( isWidget( currentElement ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tcurrentElement = currentElement.parent;\n\t}\n\n\treturn false;\n}\n\n/**\n * Checks whether the specified `element` is a child of the `parent` element.\n *\n * @param element An element to check.\n * @param parent A parent for the element.\n */\nfunction isChild( element: ViewElement, parent: ViewElement | null ) {\n\tif ( !parent ) {\n\t\treturn false;\n\t}\n\n\treturn Array.from( element.getAncestors() ).includes( parent );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgettoolbarrepository\n */\n\nimport {\n\tPlugin,\n\ttype Editor,\n\ttype ToolbarConfigItem\n} from '@ckeditor/ckeditor5-core';\n\nimport type { ViewDocumentSelection, ViewElement } from '@ckeditor/ckeditor5-engine';\n\nimport {\n\tBalloonPanelView,\n\tContextualBalloon,\n\tToolbarView,\n\ttype BalloonToolbar,\n\ttype BalloonToolbarShowEvent,\n\ttype EditorUIUpdateEvent\n} from '@ckeditor/ckeditor5-ui';\n\nimport {\n\tCKEditorError,\n\tlogWarning,\n\ttype ObservableChangeEvent,\n\ttype RectSource\n} from '@ckeditor/ckeditor5-utils';\n\nimport { isWidget } from './utils';\n\n/**\n * Widget toolbar repository plugin. A central point for registering widget toolbars. This plugin handles the whole\n * toolbar rendering process and exposes a concise API.\n *\n * To add a toolbar for your widget use the {@link ~WidgetToolbarRepository#register `WidgetToolbarRepository#register()`} method.\n *\n * The following example comes from the {@link module:image/imagetoolbar~ImageToolbar} plugin:\n *\n * ```ts\n * class ImageToolbar extends Plugin {\n * \tstatic get requires() {\n * \t\treturn [ WidgetToolbarRepository ];\n * \t}\n *\n * \tafterInit() {\n * \t\tconst editor = this.editor;\n * \t\tconst widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );\n *\n * \t\twidgetToolbarRepository.register( 'image', {\n * \t\t\titems: editor.config.get( 'image.toolbar' ),\n * \t\t\tgetRelatedElement: getClosestSelectedImageWidget\n * \t\t} );\n * \t}\n * }\n * ```\n */\nexport default class WidgetToolbarRepository extends Plugin {\n\t/**\n\t * A map of toolbar definitions.\n\t */\n\tprivate _toolbarDefinitions = new Map<string, WidgetRepositoryToolbarDefinition>();\n\n\tprivate _balloon!: ContextualBalloon;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ContextualBalloon ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'WidgetToolbarRepository' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Disables the default balloon toolbar for all widgets.\n\t\tif ( editor.plugins.has( 'BalloonToolbar' ) ) {\n\t\t\tconst balloonToolbar: BalloonToolbar = editor.plugins.get( 'BalloonToolbar' );\n\n\t\t\tthis.listenTo<BalloonToolbarShowEvent>( balloonToolbar, 'show', evt => {\n\t\t\t\tif ( isWidgetSelected( editor.editing.view.document.selection ) ) {\n\t\t\t\t\tevt.stop();\n\t\t\t\t}\n\t\t\t}, { priority: 'high' } );\n\t\t}\n\n\t\tthis._balloon = this.editor.plugins.get( 'ContextualBalloon' );\n\n\t\tthis.on<ObservableChangeEvent>( 'change:isEnabled', () => {\n\t\t\tthis._updateToolbarsVisibility();\n\t\t} );\n\n\t\tthis.listenTo<EditorUIUpdateEvent>( editor.ui, 'update', () => {\n\t\t\tthis._updateToolbarsVisibility();\n\t\t} );\n\n\t\t// UI#update is not fired after focus is back in editor, we need to check if balloon panel should be visible.\n\t\tthis.listenTo<ObservableChangeEvent>( editor.ui.focusTracker, 'change:isFocused', () => {\n\t\t\tthis._updateToolbarsVisibility();\n\t\t}, { priority: 'low' } );\n\t}\n\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tfor ( const toolbarConfig of this._toolbarDefinitions.values() ) {\n\t\t\ttoolbarConfig.view.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * Registers toolbar in the WidgetToolbarRepository. It renders it in the `ContextualBalloon` based on the value of the invoked\n\t * `getRelatedElement` function. Toolbar items are gathered from `items` array.\n\t * The balloon's CSS class is by default `ck-toolbar-container` and may be override with the `balloonClassName` option.\n\t *\n\t * Note: This method should be called in the {@link module:core/plugin~PluginInterface#afterInit `Plugin#afterInit()`}\n\t * callback (or later) to make sure that the given toolbar items were already registered by other plugins.\n\t *\n\t * @param toolbarId An id for the toolbar. Used to\n\t * @param options.ariaLabel Label used by assistive technologies to describe this toolbar element.\n\t * @param options.items Array of toolbar items.\n\t * @param options.getRelatedElement Callback which returns an element the toolbar should be attached to.\n\t * @param options.balloonClassName CSS class for the widget balloon.\n\t */\n\tpublic register(\n\t\ttoolbarId: string,\n\t\t{ ariaLabel, items, getRelatedElement, balloonClassName = 'ck-toolbar-container' }: {\n\t\t\tariaLabel?: string;\n\t\t\titems: Array<ToolbarConfigItem>;\n\t\t\tgetRelatedElement: ( selection: ViewDocumentSelection ) => ( ViewElement | null );\n\t\t\tballoonClassName?: string;\n\t\t}\n\t): void {\n\t\t// Trying to register a toolbar without any item.\n\t\tif ( !items.length ) {\n\t\t\t/**\n\t\t\t * When {@link module:widget/widgettoolbarrepository~WidgetToolbarRepository#register registering} a new widget toolbar, you\n\t\t\t * need to provide a non-empty array with the items that will be inserted into the toolbar.\n\t\t\t *\n\t\t\t * If you see this error when integrating the editor, you likely forgot to configure one of the widget toolbars.\n\t\t\t *\n\t\t\t * See for instance:\n\t\t\t *\n\t\t\t * * {@link module:table/tableconfig~TableConfig#contentToolbar `config.table.contentToolbar`}\n\t\t\t * * {@link module:image/imageconfig~ImageConfig#toolbar `config.image.toolbar`}\n\t\t\t *\n\t\t\t * @error widget-toolbar-no-items\n\t\t\t * @param toolbarId The id of the toolbar that has not been configured correctly.\n\t\t\t */\n\t\t\tlogWarning( 'widget-toolbar-no-items', { toolbarId } );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst toolbarView = new ToolbarView( editor.locale );\n\n\t\ttoolbarView.ariaLabel = ariaLabel || t( 'Widget toolbar' );\n\n\t\tif ( this._toolbarDefinitions.has( toolbarId ) ) {\n\t\t\t/**\n\t\t\t * Toolbar with the given id was already added.\n\t\t\t *\n\t\t\t * @error widget-toolbar-duplicated\n\t\t\t * @param toolbarId Toolbar id.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'widget-toolbar-duplicated', this, { toolbarId } );\n\t\t}\n\n\t\tconst toolbarDefinition = {\n\t\t\tview: toolbarView,\n\t\t\tgetRelatedElement,\n\t\t\tballoonClassName,\n\t\t\titemsConfig: items,\n\t\t\tinitialized: false\n\t\t};\n\n\t\t// Register the toolbar so it becomes available for Alt+F10 and Esc navigation.\n\t\teditor.ui.addToolbar( toolbarView, {\n\t\t\tisContextual: true,\n\t\t\tbeforeFocus: () => {\n\t\t\t\tconst relatedElement = getRelatedElement( editor.editing.view.document.selection );\n\n\t\t\t\tif ( relatedElement ) {\n\t\t\t\t\tthis._showToolbar( toolbarDefinition, relatedElement );\n\t\t\t\t}\n\t\t\t},\n\t\t\tafterBlur: () => {\n\t\t\t\tthis._hideToolbar( toolbarDefinition );\n\t\t\t}\n\t\t} );\n\n\t\tthis._toolbarDefinitions.set( toolbarId, toolbarDefinition );\n\t}\n\n\t/**\n\t * Iterates over stored toolbars and makes them visible or hidden.\n\t */\n\tprivate _updateToolbarsVisibility() {\n\t\tlet maxRelatedElementDepth = 0;\n\t\tlet deepestRelatedElement = null;\n\t\tlet deepestToolbarDefinition = null;\n\n\t\tfor ( const definition of this._toolbarDefinitions.values() ) {\n\t\t\tconst relatedElement = definition.getRelatedElement( this.editor.editing.view.document.selection );\n\n\t\t\tif ( !this.isEnabled || !relatedElement ) {\n\t\t\t\tif ( this._isToolbarInBalloon( definition ) ) {\n\t\t\t\t\tthis._hideToolbar( definition );\n\t\t\t\t}\n\t\t\t} else if ( !this.editor.ui.focusTracker.isFocused ) {\n\t\t\t\tif ( this._isToolbarVisible( definition ) ) {\n\t\t\t\t\tthis._hideToolbar( definition );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst relatedElementDepth = relatedElement.getAncestors().length;\n\n\t\t\t\t// Many toolbars can express willingness to be displayed but they do not know about\n\t\t\t\t// each other. Figure out which toolbar is deepest in the view tree to decide which\n\t\t\t\t// should be displayed. For instance, if a selected image is inside a table cell, display\n\t\t\t\t// the ImageToolbar rather than the TableToolbar (#60).\n\t\t\t\tif ( relatedElementDepth > maxRelatedElementDepth ) {\n\t\t\t\t\tmaxRelatedElementDepth = relatedElementDepth;\n\t\t\t\t\tdeepestRelatedElement = relatedElement;\n\t\t\t\t\tdeepestToolbarDefinition = definition;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( deepestToolbarDefinition ) {\n\t\t\tthis._showToolbar( deepestToolbarDefinition, deepestRelatedElement! );\n\t\t}\n\t}\n\n\t/**\n\t * Hides the given toolbar.\n\t */\n\tprivate _hideToolbar( toolbarDefinition: WidgetRepositoryToolbarDefinition ) {\n\t\tthis._balloon.remove( toolbarDefinition.view );\n\t\tthis.stopListening( this._balloon, 'change:visibleView' );\n\t}\n\n\t/**\n\t * Shows up the toolbar if the toolbar is not visible.\n\t * Otherwise, repositions the toolbar's balloon when toolbar's view is the most top view in balloon stack.\n\t *\n\t * It might happen here that the toolbar's view is under another view. Then do nothing as the other toolbar view\n\t * should be still visible after the {@link module:ui/editorui/editorui~EditorUI#event:update}.\n\t */\n\tprivate _showToolbar( toolbarDefinition: WidgetRepositoryToolbarDefinition, relatedElement: ViewElement ) {\n\t\tif ( this._isToolbarVisible( toolbarDefinition ) ) {\n\t\t\trepositionContextualBalloon( this.editor, relatedElement );\n\t\t} else if ( !this._isToolbarInBalloon( toolbarDefinition ) ) {\n\t\t\tif ( !toolbarDefinition.initialized ) {\n\t\t\t\ttoolbarDefinition.initialized = true;\n\t\t\t\ttoolbarDefinition.view.fillFromConfig( toolbarDefinition.itemsConfig, this.editor.ui.componentFactory );\n\t\t\t}\n\n\t\t\tthis._balloon.add( {\n\t\t\t\tview: toolbarDefinition.view,\n\t\t\t\tposition: getBalloonPositionData( this.editor, relatedElement ),\n\t\t\t\tballoonClassName: toolbarDefinition.balloonClassName\n\t\t\t} );\n\n\t\t\t// Update toolbar position each time stack with toolbar view is switched to visible.\n\t\t\t// This is in a case target element has changed when toolbar was in invisible stack\n\t\t\t// e.g. target image was wrapped by a block quote.\n\t\t\t// See https://github.com/ckeditor/ckeditor5-widget/issues/92.\n\t\t\tthis.listenTo<ObservableChangeEvent>( this._balloon, 'change:visibleView', () => {\n\t\t\t\tfor ( const definition of this._toolbarDefinitions.values() ) {\n\t\t\t\t\tif ( this._isToolbarVisible( definition ) ) {\n\t\t\t\t\t\tconst relatedElement = definition.getRelatedElement( this.editor.editing.view.document.selection );\n\t\t\t\t\t\trepositionContextualBalloon( this.editor, relatedElement! );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\tprivate _isToolbarVisible( toolbar: WidgetRepositoryToolbarDefinition ) {\n\t\treturn this._balloon.visibleView === toolbar.view;\n\t}\n\n\tprivate _isToolbarInBalloon( toolbar: WidgetRepositoryToolbarDefinition ) {\n\t\treturn this._balloon.hasView( toolbar.view );\n\t}\n}\n\nfunction repositionContextualBalloon( editor: Editor, relatedElement: ViewElement ) {\n\tconst balloon: ContextualBalloon = editor.plugins.get( 'ContextualBalloon' );\n\tconst position = getBalloonPositionData( editor, relatedElement );\n\n\tballoon.updatePosition( position );\n}\n\nfunction getBalloonPositionData( editor: Editor, relatedElement: ViewElement ) {\n\tconst editingView = editor.editing.view;\n\tconst defaultPositions = BalloonPanelView.defaultPositions;\n\n\treturn {\n\t\ttarget: editingView.domConverter.mapViewToDom( relatedElement ) as RectSource | undefined,\n\t\tpositions: [\n\t\t\tdefaultPositions.northArrowSouth,\n\t\t\tdefaultPositions.northArrowSouthWest,\n\t\t\tdefaultPositions.northArrowSouthEast,\n\t\t\tdefaultPositions.southArrowNorth,\n\t\t\tdefaultPositions.southArrowNorthWest,\n\t\t\tdefaultPositions.southArrowNorthEast,\n\t\t\tdefaultPositions.viewportStickyNorth\n\t\t]\n\t};\n}\n\nfunction isWidgetSelected( selection: ViewDocumentSelection ) {\n\tconst viewElement = selection.getSelectedElement();\n\n\treturn !!( viewElement && isWidget( viewElement ) );\n}\n\n/**\n * The toolbar definition object used by the toolbar repository to manage toolbars.\n * It contains information necessary to display the toolbar in the\n * {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} and\n * update it during its life (display) cycle.\n */\ninterface WidgetRepositoryToolbarDefinition {\n\n\t/**\n\t * The UI view of the toolbar.\n\t */\n\tview: ToolbarView;\n\n\t/**\n\t * A function that returns an engine {@link module:engine/view/view~View}\n\t * element the toolbar is to be attached to. For instance, an image widget or a table widget (or `null` when\n\t * there is no such element). The function accepts an instance of {@link module:engine/view/selection~Selection}.\n\t */\n\tgetRelatedElement: ( selection: ViewDocumentSelection ) => ViewElement | null | undefined;\n\n\t/**\n\t * CSS class for the widget balloon when a toolbar is displayed.\n\t */\n\tballoonClassName: string;\n\n\titemsConfig: Array<ToolbarConfigItem>;\n\n\tinitialized: boolean;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgetresize/resizerstate\n */\n\nimport { ObservableMixin, Rect } from '@ckeditor/ckeditor5-utils';\n\nimport type { ResizerOptions } from '../widgetresize';\n\n/**\n * Stores the internal state of a single resizable object.\n */\nexport default class ResizeState extends ObservableMixin() {\n\t/**\n\t * The position of the handle that initiated the resizing. E.g. `\"top-left\"`, `\"bottom-right\"` etc. or `null`\n\t * if unknown.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public activeHandlePosition: string | null;\n\n\t/**\n\t * The width (percents) proposed, but not committed yet, in the current resize process.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedWidthPercents: number | null;\n\n\t/**\n\t * The width (pixels) proposed, but not committed yet, in the current resize process.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedWidth: number | null;\n\n\t/**\n\t * The height (pixels) proposed, but not committed yet, in the current resize process.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedHeight: number | null;\n\n\t/**\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedHandleHostWidth: number | null;\n\n\t/**\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public proposedHandleHostHeight: number | null;\n\n\t/**\n\t * The reference point of the resizer where the dragging started. It is used to measure the distance the user cursor\n\t * traveled, so how much the image should be enlarged.\n\t * This information is only known after the DOM was rendered, so it will be updated later.\n\t *\n\t * @internal\n\t */\n\tpublic _referenceCoordinates: { x: number; y: number } | null;\n\n\t/**\n\t * Resizer options.\n\t */\n\tprivate readonly _options: ResizerOptions;\n\n\t/**\n\t * The original width (pixels) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */\n\tprivate _originalWidth?: number;\n\n\t/**\n\t * The original height (pixels) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */\n\tprivate _originalHeight?: number;\n\n\t/**\n\t * The original width (percents) of the resized object when the resize process was started.\n\t *\n\t * @readonly\n\t */\n\tprivate _originalWidthPercents?: number;\n\n\t/**\n\t * A width to height ratio of the resized image.\n\t *\n\t * @readonly\n\t */\n\tprivate _aspectRatio?: number;\n\n\t/**\n\t * @param options Resizer options.\n\t */\n\tconstructor( options: ResizerOptions ) {\n\t\tsuper();\n\n\t\tthis.set( 'activeHandlePosition', null );\n\t\tthis.set( 'proposedWidthPercents', null );\n\t\tthis.set( 'proposedWidth', null );\n\t\tthis.set( 'proposedHeight', null );\n\t\tthis.set( 'proposedHandleHostWidth', null );\n\t\tthis.set( 'proposedHandleHostHeight', null );\n\n\t\tthis._options = options;\n\t\tthis._referenceCoordinates = null;\n\t}\n\n\t/**\n\t * The original width (pixels) of the resized object when the resize process was started.\n\t */\n\tpublic get originalWidth(): number | undefined {\n\t\treturn this._originalWidth;\n\t}\n\n\t/**\n\t * The original height (pixels) of the resized object when the resize process was started.\n\t */\n\tpublic get originalHeight(): number | undefined {\n\t\treturn this._originalHeight;\n\t}\n\n\t/**\n\t * The original width (percents) of the resized object when the resize process was started.\n\t */\n\tpublic get originalWidthPercents(): number | undefined {\n\t\treturn this._originalWidthPercents;\n\t}\n\n\t/**\n\t * A width to height ratio of the resized image.\n\t */\n\tpublic get aspectRatio(): number | undefined {\n\t\treturn this._aspectRatio;\n\t}\n\n\t/**\n\t *\n\t * @param domResizeHandle The handle used to calculate the reference point.\n\t */\n\tpublic begin( domResizeHandle: HTMLElement, domHandleHost: HTMLElement, domResizeHost: HTMLElement ): void {\n\t\tconst clientRect = new Rect( domHandleHost );\n\n\t\tthis.activeHandlePosition = getHandlePosition( domResizeHandle )!;\n\n\t\tthis._referenceCoordinates = getAbsoluteBoundaryPoint( domHandleHost, getOppositePosition( this.activeHandlePosition ) );\n\n\t\tthis._originalWidth = clientRect.width;\n\t\tthis._originalHeight = clientRect.height;\n\n\t\tthis._aspectRatio = clientRect.width / clientRect.height;\n\n\t\tconst widthStyle = domResizeHost.style.width;\n\n\t\tif ( widthStyle && widthStyle.match( /^\\d+(\\.\\d*)?%$/ ) ) {\n\t\t\tthis._originalWidthPercents = parseFloat( widthStyle );\n\t\t} else {\n\t\t\tthis._originalWidthPercents = calculateHostPercentageWidth( domResizeHost, clientRect );\n\t\t}\n\t}\n\n\tpublic update( newSize: {\n\t\twidth: number;\n\t\theight: number;\n\t\twidthPercents: number;\n\t\thandleHostWidth: number;\n\t\thandleHostHeight: number;\n\t} ): void {\n\t\tthis.proposedWidth = newSize.width;\n\t\tthis.proposedHeight = newSize.height;\n\t\tthis.proposedWidthPercents = newSize.widthPercents;\n\n\t\tthis.proposedHandleHostWidth = newSize.handleHostWidth;\n\t\tthis.proposedHandleHostHeight = newSize.handleHostHeight;\n\t}\n}\n\n/**\n * Calculates a relative width of a `domResizeHost` compared to its ancestor in percents.\n */\nfunction calculateHostPercentageWidth( domResizeHost: HTMLElement, resizeHostRect: Rect ) {\n\tconst domResizeHostParent = domResizeHost.parentElement;\n\n\t// Need to use computed style as it properly excludes parent's paddings from the returned value.\n\tlet parentWidth = parseFloat( domResizeHostParent!.ownerDocument.defaultView!.getComputedStyle( domResizeHostParent! ).width );\n\n\t// Sometimes parent width cannot be accessed. If that happens we should go up in the elements tree\n\t// and try to get width from next ancestor.\n\t// https://github.com/ckeditor/ckeditor5/issues/10776\n\tconst ancestorLevelLimit = 5;\n\tlet currentLevel = 0;\n\n\tlet checkedElement = domResizeHostParent!;\n\n\twhile ( isNaN( parentWidth ) ) {\n\t\tcheckedElement = checkedElement.parentElement!;\n\n\t\tif ( ++currentLevel > ancestorLevelLimit ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tparentWidth = parseFloat(\n\t\t\t\tdomResizeHostParent!.ownerDocument.defaultView!.getComputedStyle( checkedElement ).width\n\t\t);\n\t}\n\n\treturn resizeHostRect.width / parentWidth * 100;\n}\n\n/**\n * Returns coordinates of the top-left corner of an element, relative to the document's top-left corner.\n *\n * @param resizerPosition The position of the resize handle, e.g. `\"top-left\"`, `\"bottom-right\"`.\n */\nfunction getAbsoluteBoundaryPoint( element: HTMLElement, resizerPosition: string ) {\n\tconst elementRect = new Rect( element );\n\tconst positionParts = resizerPosition.split( '-' );\n\tconst ret = {\n\t\tx: positionParts[ 1 ] == 'right' ? elementRect.right : elementRect.left,\n\t\ty: positionParts[ 0 ] == 'bottom' ? elementRect.bottom : elementRect.top\n\t};\n\n\tret.x += element.ownerDocument.defaultView!.scrollX;\n\tret.y += element.ownerDocument.defaultView!.scrollY;\n\n\treturn ret;\n}\n\n/**\n * @param resizerPosition The expected resizer position, like `\"top-left\"`, `\"bottom-right\"`.\n * @returns A prefixed HTML class name for the resizer element.\n */\nfunction getResizerHandleClass( resizerPosition: string ) {\n\treturn `ck-widget__resizer__handle-${ resizerPosition }`;\n}\n\n/**\n * Determines the position of a given resize handle.\n *\n * @param domHandle Handle used to calculate the reference point.\n * @returns Returns a string like `\"top-left\"` or `undefined` if not matched.\n */\nfunction getHandlePosition( domHandle: HTMLElement ) {\n\tconst resizerPositions = [ 'top-left', 'top-right', 'bottom-right', 'bottom-left' ];\n\n\tfor ( const position of resizerPositions ) {\n\t\tif ( domHandle.classList.contains( getResizerHandleClass( position ) ) ) {\n\t\t\treturn position;\n\t\t}\n\t}\n}\n\n/**\n * @param position Like `\"top-left\"`.\n * @returns Inverted `position`, e.g. it returns `\"bottom-right\"` if `\"top-left\"` was given as `position`.\n */\nfunction getOppositePosition( position: string ) {\n\tconst parts = position.split( '-' );\n\tconst replacements: Record<string, string> = {\n\t\ttop: 'bottom',\n\t\tbottom: 'top',\n\t\tleft: 'right',\n\t\tright: 'left'\n\t};\n\n\treturn `${ replacements[ parts[ 0 ] ] }-${ replacements[ parts[ 1 ] ] }`;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgetresize/sizeview\n */\n\nimport { View } from '@ckeditor/ckeditor5-ui';\nimport type { ResizerOptions } from '../widgetresize';\nimport type ResizeState from './resizerstate';\n\n/**\n * A view displaying the proposed new element size during the resizing.\n */\nexport default class SizeView extends View {\n\t/**\n\t * The visibility of the view defined based on the existence of the host proposed dimensions.\n\t *\n\t * @internal\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public _isVisible: boolean;\n\n\t/**\n\t * The text that will be displayed in the `SizeView` child.\n\t * It can be formatted as the pixel values (e.g. 10x20) or the percentage value (e.g. 10%).\n\t *\n\t * @internal\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public _label: string;\n\n\t/**\n\t * The position of the view defined based on the host size and active handle position.\n\t *\n\t * @internal\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public _viewPosition: string;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-size-view',\n\t\t\t\t\tbind.to( '_viewPosition', value => value ? `ck-orientation-${ value }` : '' )\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\tdisplay: bind.if( '_isVisible', 'none', visible => !visible )\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [ {\n\t\t\t\ttext: bind.to( '_label' )\n\t\t\t} ]\n\t\t} );\n\t}\n\n\t/**\n\t * A method used for binding the `SizeView` instance properties to the `ResizeState` instance observable properties.\n\t *\n\t * @internal\n\t * @param options An object defining the resizer options, used for setting the proper size label.\n\t * @param resizeState The `ResizeState` class instance, used for keeping the `SizeView` state up to date.\n\t */\n\tpublic _bindToState( options: ResizerOptions, resizeState: ResizeState ): void {\n\t\tthis.bind( '_isVisible' ).to( resizeState, 'proposedWidth', resizeState, 'proposedHeight', ( width, height ) =>\n\t\t\twidth !== null && height !== null );\n\n\t\tthis.bind( '_label' ).to(\n\t\t\tresizeState, 'proposedHandleHostWidth',\n\t\t\tresizeState, 'proposedHandleHostHeight',\n\t\t\tresizeState, 'proposedWidthPercents',\n\t\t\t( width, height, widthPercents ) => {\n\t\t\t\tif ( options.unit === 'px' ) {\n\t\t\t\t\treturn `${ width }×${ height }`;\n\t\t\t\t} else {\n\t\t\t\t\treturn `${ widthPercents }%`;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tthis.bind( '_viewPosition' ).to(\n\t\t\tresizeState, 'activeHandlePosition',\n\t\t\tresizeState, 'proposedHandleHostWidth',\n\t\t\tresizeState, 'proposedHandleHostHeight',\n\t\t\t// If the widget is too small to contain the size label, display the label above.\n\t\t\t( position, width, height ) => width! < 50 || height! < 50 ? 'above-center' : position!\n\t\t);\n\t}\n\n\t/**\n\t * A method used for cleaning up. It removes the bindings and hides the view.\n\t *\n\t * @internal\n\t */\n\tpublic _dismiss(): void {\n\t\tthis.unbind();\n\t\tthis._isVisible = false;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgetresize/resizer\n */\n\nimport { Template } from '@ckeditor/ckeditor5-ui';\nimport {\n\tRect,\n\tObservableMixin,\n\tcompareArrays,\n\ttype ObservableChangeEvent,\n\ttype DecoratedMethodEvent\n} from '@ckeditor/ckeditor5-utils';\n\nimport ResizeState from './resizerstate';\nimport SizeView from './sizeview';\n\nimport type { ResizerOptions } from '../widgetresize';\nimport type { ViewElement } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Represents a resizer for a single resizable object.\n */\nexport default class Resizer extends ObservableMixin() {\n\t/**\n\t * Flag that indicates whether resizer can be used.\n\t *\n\t * @observable\n\t */\n\tdeclare public isEnabled: boolean;\n\n\t/**\n\t * Flag that indicates that resizer is currently focused.\n\t *\n\t * @observable\n\t */\n\tdeclare public isSelected: boolean;\n\n\t/**\n\t * Flag that indicates whether resizer is rendered (visible on the screen).\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public isVisible: boolean;\n\n\t/**\n\t * Stores the state of the resizable host geometry, such as the original width, the currently proposed height, etc.\n\t *\n\t * Note that a new state is created for each resize transaction.\n\t */\n\tprivate _state!: ResizeState;\n\n\t/**\n\t * A view displaying the proposed new element size during the resizing.\n\t */\n\tprivate _sizeView!: SizeView;\n\n\t/**\n\t * Options passed to the {@link #constructor}.\n\t */\n\tprivate _options: ResizerOptions;\n\n\t/**\n\t * A wrapper that is controlled by the resizer. This is usually a widget element.\n\t */\n\tprivate _viewResizerWrapper: ViewElement | null = null;\n\n\t/**\n\t * The width of the resized {@link module:widget/widgetresize~ResizerOptions#viewElement viewElement} before the resizing started.\n\t */\n\tprivate _initialViewWidth: string | undefined;\n\n\t/**\n\t * @param options Resizer options.\n\t */\n\tconstructor( options: ResizerOptions ) {\n\t\tsuper();\n\n\t\tthis._options = options;\n\n\t\tthis.set( 'isEnabled', true );\n\t\tthis.set( 'isSelected', false );\n\n\t\tthis.bind( 'isVisible' ).to( this, 'isEnabled', this, 'isSelected', ( isEnabled, isSelected ) => isEnabled && isSelected );\n\n\t\tthis.decorate( 'begin' );\n\t\tthis.decorate( 'cancel' );\n\t\tthis.decorate( 'commit' );\n\t\tthis.decorate( 'updateSize' );\n\n\t\tthis.on( 'commit', event => {\n\t\t\t// State might not be initialized yet. In this case, prevent further handling and make sure that the resizer is\n\t\t\t// cleaned up (#5195).\n\t\t\tif ( !this.state.proposedWidth && !this.state.proposedWidthPercents ) {\n\t\t\t\tthis._cleanup();\n\t\t\t\tevent.stop();\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Stores the state of the resizable host geometry, such as the original width, the currently proposed height, etc.\n\t *\n\t * Note that a new state is created for each resize transaction.\n\t */\n\tpublic get state(): ResizeState {\n\t\treturn this._state;\n\t}\n\n\t/**\n\t * Makes resizer visible in the UI.\n\t */\n\tpublic show(): void {\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\twriter.removeClass( 'ck-hidden', this._viewResizerWrapper! );\n\t\t} );\n\t}\n\n\t/**\n\t * Hides resizer in the UI.\n\t */\n\tpublic hide(): void {\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\twriter.addClass( 'ck-hidden', this._viewResizerWrapper! );\n\t\t} );\n\t}\n\n\t/**\n\t * Attaches the resizer to the DOM.\n\t */\n\tpublic attach(): void {\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias\n\t\tconst that = this;\n\t\tconst widgetElement = this._options.viewElement;\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\tconst viewResizerWrapper = writer.createUIElement( 'div', {\n\t\t\t\tclass: 'ck ck-reset_all ck-widget__resizer'\n\t\t\t}, function( domDocument ) {\n\t\t\t\tconst domElement = this.toDomElement( domDocument );\n\n\t\t\t\tthat._appendHandles( domElement );\n\t\t\t\tthat._appendSizeUI( domElement );\n\n\t\t\t\treturn domElement;\n\t\t\t} );\n\n\t\t\t// Append the resizer wrapper to the widget's wrapper.\n\t\t\twriter.insert( writer.createPositionAt( widgetElement, 'end' ), viewResizerWrapper );\n\t\t\twriter.addClass( 'ck-widget_with-resizer', widgetElement );\n\n\t\t\tthis._viewResizerWrapper = viewResizerWrapper;\n\n\t\t\tif ( !this.isVisible ) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t} );\n\n\t\tthis.on<ObservableChangeEvent>( 'change:isVisible', () => {\n\t\t\tif ( this.isVisible ) {\n\t\t\t\tthis.show();\n\t\t\t\tthis.redraw();\n\t\t\t} else {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Starts the resizing process.\n\t *\n\t * Creates a new {@link #state} for the current process.\n\t *\n\t * @fires begin\n\t * @param domResizeHandle Clicked handle.\n\t */\n\tpublic begin( domResizeHandle: HTMLElement ): void {\n\t\tthis._state = new ResizeState( this._options );\n\n\t\tthis._sizeView._bindToState( this._options, this.state );\n\n\t\tthis._initialViewWidth = this._options.viewElement.getStyle( 'width' );\n\n\t\tthis.state.begin( domResizeHandle, this._getHandleHost(), this._getResizeHost() );\n\t}\n\n\t/**\n\t * Updates the proposed size based on `domEventData`.\n\t *\n\t * @fires updateSize\n\t */\n\tpublic updateSize( domEventData: MouseEvent ): void {\n\t\tconst newSize = this._proposeNewSize( domEventData );\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\tconst unit = this._options.unit || '%';\n\t\t\tconst newWidth = ( unit === '%' ? newSize.widthPercents : newSize.width ) + unit;\n\n\t\t\twriter.setStyle( 'width', newWidth, this._options.viewElement );\n\t\t} );\n\n\t\t// Get an actual image width, and:\n\t\t// * reflect this size to the resize wrapper\n\t\t// * apply this **real** size to the state\n\t\tconst domHandleHost = this._getHandleHost();\n\t\tconst domHandleHostRect = new Rect( domHandleHost );\n\n\t\tconst handleHostWidth = Math.round( domHandleHostRect.width );\n\t\tconst handleHostHeight = Math.round( domHandleHostRect.height );\n\n\t\t// Handle max-width limitation.\n\t\tconst domResizeHostRect = new Rect( domHandleHost );\n\n\t\tnewSize.width = Math.round( domResizeHostRect.width );\n\t\tnewSize.height = Math.round( domResizeHostRect.height );\n\n\t\tthis.redraw( domHandleHostRect );\n\n\t\tthis.state.update( {\n\t\t\t...newSize,\n\t\t\thandleHostWidth,\n\t\t\thandleHostHeight\n\t\t} );\n\t}\n\n\t/**\n\t * Applies the geometry proposed with the resizer.\n\t *\n\t * @fires commit\n\t */\n\tpublic commit(): void {\n\t\tconst unit = this._options.unit || '%';\n\t\tconst newValue = ( unit === '%' ? this.state.proposedWidthPercents : this.state.proposedWidth ) + unit;\n\n\t\t// Both cleanup and onCommit callback are very likely to make view changes. Ensure that it is made in a single step.\n\t\tthis._options.editor.editing.view.change( () => {\n\t\t\tthis._cleanup();\n\t\t\tthis._options.onCommit( newValue );\n\t\t} );\n\t}\n\n\t/**\n\t * Cancels and rejects the proposed resize dimensions, hiding the UI.\n\t *\n\t * @fires cancel\n\t */\n\tpublic cancel(): void {\n\t\tthis._cleanup();\n\t}\n\n\t/**\n\t * Destroys the resizer.\n\t */\n\tpublic destroy(): void {\n\t\tthis.cancel();\n\t}\n\n\t/**\n\t * Redraws the resizer.\n\t *\n\t * @param handleHostRect Handle host rectangle might be given to improve performance.\n\t */\n\tpublic redraw( handleHostRect?: Rect ): void {\n\t\tconst domWrapper = this._domResizerWrapper;\n\n\t\t// Refresh only if resizer exists in the DOM.\n\t\tif ( !existsInDom( domWrapper ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst widgetWrapper = domWrapper!.parentElement;\n\t\tconst handleHost = this._getHandleHost();\n\t\tconst resizerWrapper = this._viewResizerWrapper!;\n\t\tconst currentDimensions = [\n\t\t\tresizerWrapper.getStyle( 'width' ),\n\t\t\tresizerWrapper.getStyle( 'height' ),\n\t\t\tresizerWrapper.getStyle( 'left' ),\n\t\t\tresizerWrapper.getStyle( 'top' )\n\t\t];\n\t\tlet newDimensions: Array<string | undefined>;\n\n\t\tif ( widgetWrapper!.isSameNode( handleHost ) ) {\n\t\t\tconst clientRect = handleHostRect || new Rect( handleHost );\n\n\t\t\tnewDimensions = [\n\t\t\t\tclientRect.width + 'px',\n\t\t\t\tclientRect.height + 'px',\n\t\t\t\tundefined,\n\t\t\t\tundefined\n\t\t\t];\n\t\t}\n\t\t// In case a resizing host is not a widget wrapper, we need to compensate\n\t\t// for any additional offsets the resize host might have. E.g. wrapper padding\n\t\t// or simply another editable. By doing that the border and resizers are shown\n\t\t// only around the resize host.\n\t\telse {\n\t\t\tnewDimensions = [\n\t\t\t\thandleHost.offsetWidth + 'px',\n\t\t\t\thandleHost.offsetHeight + 'px',\n\t\t\t\thandleHost.offsetLeft + 'px',\n\t\t\t\thandleHost.offsetTop + 'px'\n\t\t\t];\n\t\t}\n\n\t\t// Make changes to the view only if the resizer should actually get new dimensions.\n\t\t// Otherwise, if View#change() was always called, this would cause EditorUI#update\n\t\t// loops because the WidgetResize plugin listens to EditorUI#update and updates\n\t\t// the resizer.\n\t\t// https://github.com/ckeditor/ckeditor5/issues/7633\n\t\tif ( compareArrays( currentDimensions, newDimensions ) !== 'same' ) {\n\t\t\tthis._options.editor.editing.view.change( writer => {\n\t\t\t\twriter.setStyle( {\n\t\t\t\t\twidth: newDimensions[ 0 ]!,\n\t\t\t\t\theight: newDimensions[ 1 ]!,\n\t\t\t\t\tleft: newDimensions[ 2 ]!,\n\t\t\t\t\ttop: newDimensions[ 3 ]!\n\t\t\t\t}, resizerWrapper );\n\t\t\t} );\n\t\t}\n\t}\n\n\tpublic containsHandle( domElement: HTMLElement ): boolean {\n\t\treturn this._domResizerWrapper!.contains( domElement );\n\t}\n\n\tpublic static isResizeHandle( domElement: HTMLElement ): boolean {\n\t\treturn domElement.classList.contains( 'ck-widget__resizer__handle' );\n\t}\n\n\t/**\n\t * Cleans up the context state.\n\t */\n\tprivate _cleanup(): void {\n\t\tthis._sizeView._dismiss();\n\n\t\tconst editingView = this._options.editor.editing.view;\n\n\t\teditingView.change( writer => {\n\t\t\twriter.setStyle( 'width', this._initialViewWidth!, this._options.viewElement );\n\t\t} );\n\t}\n\n\t/**\n\t * Calculates the proposed size as the resize handles are dragged.\n\t *\n\t * @param domEventData Event data that caused the size update request. It should be used to calculate the proposed size.\n\t */\n\tprivate _proposeNewSize( domEventData: MouseEvent ): { width: number; height: number; widthPercents: number } {\n\t\tconst state = this.state;\n\t\tconst currentCoordinates = extractCoordinates( domEventData );\n\t\tconst isCentered = this._options.isCentered ? this._options.isCentered( this ) : true;\n\n\t\t// Enlargement defines how much the resize host has changed in a given axis. Naturally it could be a negative number\n\t\t// meaning that it has been shrunk.\n\t\t//\n\t\t// +----------------+--+\n\t\t// | | |\n\t\t// | img | |\n\t\t// | /handle host | |\n\t\t// +----------------+ | ^\n\t\t// | | | - enlarge y\n\t\t// +-------------------+ v\n\t\t// \t\t\t\t\t<-->\n\t\t// \t\t\t\t\t enlarge x\n\t\tconst enlargement = {\n\t\t\tx: state._referenceCoordinates!.x - ( currentCoordinates.x + state.originalWidth! ),\n\t\t\ty: ( currentCoordinates.y - state.originalHeight! ) - state._referenceCoordinates!.y\n\t\t};\n\n\t\tif ( isCentered && state.activeHandlePosition!.endsWith( '-right' ) ) {\n\t\t\tenlargement.x = currentCoordinates.x - ( state._referenceCoordinates!.x + state.originalWidth! );\n\t\t}\n\n\t\t// Objects needs to be resized twice as much in horizontal axis if centered, since enlargement is counted from\n\t\t// one resized corner to your cursor. It needs to be duplicated to compensate for the other side too.\n\t\tif ( isCentered ) {\n\t\t\tenlargement.x *= 2;\n\t\t}\n\n\t\t// const resizeHost = this._getResizeHost();\n\n\t\t// The size proposed by the user. It does not consider the aspect ratio.\n\t\tlet width = Math.abs( state.originalWidth! + enlargement.x );\n\t\tlet height = Math.abs( state.originalHeight! + enlargement.y );\n\n\t\t// Dominant determination must take the ratio into account.\n\t\tconst dominant = width / state.aspectRatio! > height ? 'width' : 'height';\n\n\t\tif ( dominant == 'width' ) {\n\t\t\theight = width / state.aspectRatio!;\n\t\t} else {\n\t\t\twidth = height * state.aspectRatio!;\n\t\t}\n\n\t\treturn {\n\t\t\twidth: Math.round( width ),\n\t\t\theight: Math.round( height ),\n\t\t\twidthPercents: Math.min( Math.round( state.originalWidthPercents! / state.originalWidth! * width * 100 ) / 100, 100 )\n\t\t};\n\t}\n\n\t/**\n\t * Obtains the resize host.\n\t *\n\t * Resize host is an object that receives dimensions which are the result of resizing.\n\t */\n\tprivate _getResizeHost(): HTMLElement {\n\t\tconst widgetWrapper = this._domResizerWrapper!.parentElement;\n\n\t\treturn this._options.getResizeHost( widgetWrapper! );\n\t}\n\n\t/**\n\t * Obtains the handle host.\n\t *\n\t * Handle host is an object that the handles are aligned to.\n\t *\n\t * Handle host will not always be an entire widget itself. Take an image as an example. The image widget\n\t * contains an image and a caption. Only the image should be surrounded with handles.\n\t */\n\tprivate _getHandleHost(): HTMLElement {\n\t\tconst widgetWrapper = this._domResizerWrapper!.parentElement;\n\n\t\treturn this._options.getHandleHost( widgetWrapper! );\n\t}\n\n\t/**\n\t * DOM container of the entire resize UI.\n\t *\n\t * Note that this property will have a value only after the element bound with the resizer is rendered\n\t * (otherwise `null`).\n\t */\n\tprivate get _domResizerWrapper(): HTMLElement | null {\n\t\treturn this._options.editor.editing.view.domConverter.mapViewToDom( this._viewResizerWrapper! ) as any;\n\t}\n\n\t/**\n\t * Renders the resize handles in the DOM.\n\t *\n\t * @param domElement The resizer wrapper.\n\t */\n\tprivate _appendHandles( domElement: HTMLElement ) {\n\t\tconst resizerPositions = [ 'top-left', 'top-right', 'bottom-right', 'bottom-left' ];\n\n\t\tfor ( const currentPosition of resizerPositions ) {\n\t\t\tdomElement.appendChild( ( new Template( {\n\t\t\t\ttag: 'div',\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: `ck-widget__resizer__handle ${ getResizerClass( currentPosition ) }`\n\t\t\t\t}\n\t\t\t} ).render() ) );\n\t\t}\n\t}\n\n\t/**\n\t * Sets up the {@link #_sizeView} property and adds it to the passed `domElement`.\n\t */\n\tprivate _appendSizeUI( domElement: HTMLElement ) {\n\t\tthis._sizeView = new SizeView();\n\n\t\t// Make sure icon#element is rendered before passing to appendChild().\n\t\tthis._sizeView.render();\n\n\t\tdomElement.appendChild( this._sizeView.element! );\n\t}\n}\n\n/**\n * @eventName ~Resizer#begin\n */\nexport type ResizerBeginEvent = DecoratedMethodEvent<Resizer, 'begin'>;\n\n/**\n * @eventName ~Resizer#cancel\n */\nexport type ResizerCancelEvent = DecoratedMethodEvent<Resizer, 'cancel'>;\n\n/**\n * @eventName ~Resizer#commit\n */\nexport type ResizerCommitEvent = DecoratedMethodEvent<Resizer, 'commit'>;\n\n/**\n * @eventName ~Resizer#updateSize\n */\nexport type ResizerUpdateSizeEvent = DecoratedMethodEvent<Resizer, 'updateSize'>;\n\n/**\n * @param resizerPosition Expected resizer position like `\"top-left\"`, `\"bottom-right\"`.\n * @returns A prefixed HTML class name for the resizer element\n */\nfunction getResizerClass( resizerPosition: string ) {\n\treturn `ck-widget__resizer__handle-${ resizerPosition }`;\n}\n\nfunction extractCoordinates( event: MouseEvent ) {\n\treturn {\n\t\tx: event.pageX,\n\t\ty: event.pageY\n\t};\n}\n\nfunction existsInDom( element: Node | DocumentFragment | undefined | null ) {\n\treturn element && element.ownerDocument && element.ownerDocument.contains( element );\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./widgetresize.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module widget/widgetresize\n */\n\nimport Resizer, {\n\ttype ResizerBeginEvent,\n\ttype ResizerCancelEvent,\n\ttype ResizerCommitEvent\n} from './widgetresize/resizer';\n\nimport type WidgetToolbarRepository from './widgettoolbarrepository';\n\nimport {\n\tPlugin,\n\ttype Editor\n} from '@ckeditor/ckeditor5-core';\n\nimport {\n\tMouseObserver,\n\ttype DocumentChangeEvent,\n\ttype DomEventData,\n\ttype Element,\n\ttype ViewContainerElement,\n\ttype ViewDocumentMouseDownEvent,\n\ttype ViewSelectionChangeEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport type { EditorUIUpdateEvent } from '@ckeditor/ckeditor5-ui';\n\nimport {\n\tDomEmitterMixin,\n\tglobal,\n\ttype DomEmitter,\n\ttype EventInfo\n} from '@ckeditor/ckeditor5-utils';\n\nimport { throttle, type DebouncedFunc } from 'lodash-es';\n\nimport '../theme/widgetresize.css';\n\n/**\n * The widget resize feature plugin.\n *\n * Use the {@link module:widget/widgetresize~WidgetResize#attachTo} method to create a resizer for the specified widget.\n */\nexport default class WidgetResize extends Plugin {\n\t/**\n\t * The currently selected resizer.\n\t *\n\t * @observable\n\t */\n\tdeclare public selectedResizer: Resizer | null;\n\n\t/**\n\t * References an active resizer.\n\t *\n\t * Active resizer means a resizer which handle is actively used by the end user.\n\t *\n\t * @internal\n\t * @observable\n\t */\n\tdeclare public _activeResizer: Resizer | null;\n\n\t/**\n\t * A map of resizers created using this plugin instance.\n\t */\n\tprivate _resizers = new Map<ViewContainerElement, Resizer>();\n\n\tprivate _observer!: DomEmitter;\n\n\tprivate _redrawSelectedResizerThrottled!: DebouncedFunc<() => void>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'WidgetResize' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editing = this.editor.editing;\n\t\tconst domDocument = global.window.document;\n\n\t\tthis.set( 'selectedResizer', null );\n\t\tthis.set( '_activeResizer', null );\n\n\t\tediting.view.addObserver( MouseObserver );\n\n\t\tthis._observer = new ( DomEmitterMixin() )();\n\n\t\tthis.listenTo<ViewDocumentMouseDownEvent>(\n\t\t\tediting.view.document,\n\t\t\t'mousedown',\n\t\t\tthis._mouseDownListener.bind( this ),\n\t\t\t{ priority: 'high' }\n\t\t);\n\n\t\tthis._observer.listenTo( domDocument, 'mousemove', this._mouseMoveListener.bind( this ) );\n\t\tthis._observer.listenTo( domDocument, 'mouseup', this._mouseUpListener.bind( this ) );\n\n\t\tthis._redrawSelectedResizerThrottled = throttle( () => this.redrawSelectedResizer(), 200 );\n\n\t\t// Redrawing on any change of the UI of the editor (including content changes).\n\t\tthis.editor.ui.on<EditorUIUpdateEvent>( 'update', this._redrawSelectedResizerThrottled );\n\n\t\t// Remove view widget-resizer mappings for widgets that have been removed from the document.\n\t\t// https://github.com/ckeditor/ckeditor5/issues/10156\n\t\t// https://github.com/ckeditor/ckeditor5/issues/10266\n\t\tthis.editor.model.document.on<DocumentChangeEvent>( 'change', () => {\n\t\t\tfor ( const [ viewElement, resizer ] of this._resizers ) {\n\t\t\t\tif ( !viewElement.isAttached() ) {\n\t\t\t\t\tthis._resizers.delete( viewElement );\n\t\t\t\t\tresizer.destroy();\n\t\t\t\t}\n\t\t\t}\n\t\t}, { priority: 'lowest' } );\n\n\t\t// Resizers need to be redrawn upon window resize, because new window might shrink resize host.\n\t\tthis._observer.listenTo( global.window, 'resize', this._redrawSelectedResizerThrottled );\n\n\t\tconst viewSelection = this.editor.editing.view.document.selection;\n\n\t\tviewSelection.on<ViewSelectionChangeEvent>( 'change', () => {\n\t\t\tconst selectedElement = viewSelection.getSelectedElement() as ViewContainerElement;\n\n\t\t\tconst resizer = this.getResizerByViewElement( selectedElement ) || null;\n\t\t\tif ( resizer ) {\n\t\t\t\tthis.select( resizer );\n\t\t\t} else {\n\t\t\t\tthis.deselect();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Redraws the selected resizer if there is any selected resizer and if it is visible.\n\t */\n\tpublic redrawSelectedResizer(): void {\n\t\tif ( this.selectedResizer && this.selectedResizer.isVisible ) {\n\t\t\tthis.selectedResizer.redraw();\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._observer.stopListening();\n\n\t\tfor ( const resizer of this._resizers.values() ) {\n\t\t\tresizer.destroy();\n\t\t}\n\n\t\tthis._redrawSelectedResizerThrottled.cancel();\n\t}\n\n\t/**\n\t * Marks resizer as selected.\n\t */\n\tpublic select( resizer: Resizer ): void {\n\t\tthis.deselect();\n\t\tthis.selectedResizer = resizer;\n\t\tthis.selectedResizer.isSelected = true;\n\t}\n\n\t/**\n\t * Deselects currently set resizer.\n\t */\n\tpublic deselect(): void {\n\t\tif ( this.selectedResizer ) {\n\t\t\tthis.selectedResizer.isSelected = false;\n\t\t}\n\n\t\tthis.selectedResizer = null;\n\t}\n\n\t/**\n\t * @param options Resizer options.\n\t */\n\tpublic attachTo( options: ResizerOptions ): Resizer {\n\t\tconst resizer = new Resizer( options );\n\t\tconst plugins = this.editor.plugins;\n\n\t\tresizer.attach();\n\n\t\tif ( plugins.has( 'WidgetToolbarRepository' ) ) {\n\t\t\t// Hiding widget toolbar to improve the performance\n\t\t\t// (https://github.com/ckeditor/ckeditor5-widget/pull/112#issuecomment-564528765).\n\t\t\tconst widgetToolbarRepository: WidgetToolbarRepository = plugins.get( 'WidgetToolbarRepository' );\n\n\t\t\tresizer.on<ResizerBeginEvent>( 'begin', () => {\n\t\t\t\twidgetToolbarRepository.forceDisabled( 'resize' );\n\t\t\t}, { priority: 'lowest' } );\n\n\t\t\tresizer.on<ResizerCancelEvent>( 'cancel', () => {\n\t\t\t\twidgetToolbarRepository.clearForceDisabled( 'resize' );\n\t\t\t}, { priority: 'highest' } );\n\n\t\t\tresizer.on<ResizerCommitEvent>( 'commit', () => {\n\t\t\t\twidgetToolbarRepository.clearForceDisabled( 'resize' );\n\t\t\t}, { priority: 'highest' } );\n\t\t}\n\n\t\tthis._resizers.set( options.viewElement, resizer );\n\n\t\tconst viewSelection = this.editor.editing.view.document.selection;\n\t\tconst selectedElement = viewSelection.getSelectedElement() as ViewContainerElement;\n\n\t\t// If the element the resizer is created for is currently focused, it should become visible.\n\t\tif ( this.getResizerByViewElement( selectedElement ) == resizer ) {\n\t\t\tthis.select( resizer );\n\t\t}\n\n\t\treturn resizer;\n\t}\n\n\t/**\n\t * Returns a resizer created for a given view element (widget element).\n\t *\n\t * @param viewElement View element associated with the resizer.\n\t */\n\tpublic getResizerByViewElement( viewElement: ViewContainerElement ): Resizer | undefined {\n\t\treturn this._resizers.get( viewElement );\n\t}\n\n\t/**\n\t * Returns a resizer that contains a given resize handle.\n\t */\n\tprivate _getResizerByHandle( domResizeHandle: HTMLElement ): Resizer | undefined {\n\t\tfor ( const resizer of this._resizers.values() ) {\n\t\t\tif ( resizer.containsHandle( domResizeHandle ) ) {\n\t\t\t\treturn resizer;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param domEventData Native DOM event.\n\t */\n\tprivate _mouseDownListener( event: EventInfo, domEventData: DomEventData ) {\n\t\tconst resizeHandle = domEventData.domTarget;\n\n\t\tif ( !Resizer.isResizeHandle( resizeHandle ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._activeResizer = this._getResizerByHandle( resizeHandle ) || null;\n\n\t\tif ( this._activeResizer ) {\n\t\t\tthis._activeResizer.begin( resizeHandle );\n\n\t\t\t// Do not call other events when resizing. See: #6755.\n\t\t\tevent.stop();\n\t\t\tdomEventData.preventDefault();\n\t\t}\n\t}\n\n\t/**\n\t * @param domEventData Native DOM event.\n\t */\n\tprivate _mouseMoveListener( event: unknown, domEventData: MouseEvent ) {\n\t\tif ( this._activeResizer ) {\n\t\t\tthis._activeResizer.updateSize( domEventData );\n\t\t}\n\t}\n\n\tprivate _mouseUpListener(): void {\n\t\tif ( this._activeResizer ) {\n\t\t\tthis._activeResizer.commit();\n\t\t\tthis._activeResizer = null;\n\t\t}\n\t}\n}\n\n/**\n * Interface describing a resizer. It allows to specify the resizing host, custom logic for calculating aspect ratio, etc.\n */\nexport interface ResizerOptions {\n\n\t/**\n\t * Editor instance associated with the resizer.\n\t */\n\teditor: Editor;\n\n\tmodelElement: Element;\n\n\t/**\n\t * A view of an element to be resized. Typically it's the main widget's view instance.\n\t */\n\tviewElement: ViewContainerElement;\n\n\tunit?: 'px' | '%';\n\n\t/**\n\t * A callback to be executed once the resizing process is done.\n\t *\n\t * It receives a `Number` (`newValue`) as a parameter.\n\t *\n\t * For example, {@link module:image/imageresize~ImageResize} uses it to execute the resize image command\n\t * which puts the new value into the model.\n\t *\n\t * ```ts\n\t * {\n\t *\teditor,\n\t *\tmodelElement: data.item,\n\t *\tviewElement: widget,\n\t *\n\t *\tonCommit( newValue ) {\n\t *\t\teditor.execute( 'resizeImage', { width: newValue } );\n\t *\t}\n\t * };\n\t * ```\n\t */\n\tonCommit: ( newValue: string ) => void;\n\n\tgetResizeHost: ( widgetWrapper: HTMLElement ) => HTMLElement;\n\n\tgetHandleHost: ( widgetWrapper: HTMLElement ) => HTMLElement;\n\n\tisCentered?: ( resizer: Resizer ) => boolean;\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./clipboard.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module clipboard/dragdrop\n */\n\nimport { Plugin, type Editor } from '@ckeditor/ckeditor5-core';\n\nimport {\n\tLiveRange,\n\tMouseObserver,\n\ttype DataTransfer,\n\ttype Element,\n\ttype Position,\n\ttype Range,\n\ttype ViewDocumentMouseDownEvent,\n\ttype ViewDocumentMouseUpEvent,\n\ttype ViewElement,\n\ttype ViewRange\n} from '@ckeditor/ckeditor5-engine';\n\nimport { Widget, isWidget, type WidgetToolbarRepository } from '@ckeditor/ckeditor5-widget';\n\nimport {\n\tenv,\n\tuid,\n\tdelay,\n\ttype DelayedFunc,\n\ttype ObservableChangeEvent\n} from '@ckeditor/ckeditor5-utils';\n\nimport ClipboardPipeline, { type ClipboardContentInsertionEvent, type ViewDocumentClipboardOutputEvent } from './clipboardpipeline';\nimport ClipboardObserver, {\n\ttype ViewDocumentDragEndEvent,\n\ttype ViewDocumentDragEnterEvent,\n\ttype ViewDocumentDraggingEvent,\n\ttype ViewDocumentDragLeaveEvent,\n\ttype ViewDocumentDragStartEvent,\n\ttype ViewDocumentClipboardInputEvent\n} from './clipboardobserver';\n\nimport { throttle, type DebouncedFunc } from 'lodash-es';\n\nimport '../theme/clipboard.css';\n\n// Drag and drop events overview:\n//\n// ┌──────────────────┐\n// │ mousedown │ Sets the draggable attribute.\n// └─────────┬────────┘\n// │\n// └─────────────────────┐\n// │ │\n// │ ┌─────────V────────┐\n// │ │ mouseup │ Dragging did not start, removes the draggable attribute.\n// │ └──────────────────┘\n// │\n// ┌─────────V────────┐ Retrieves the selected model.DocumentFragment\n// │ dragstart │ and converts it to view.DocumentFragment.\n// └─────────┬────────┘\n// │\n// ┌─────────V────────┐ Processes view.DocumentFragment to text/html and text/plain\n// │ clipboardOutput │ and stores the results in data.dataTransfer.\n// └─────────┬────────┘\n// │\n// │ DOM dragover\n// ┌────────────┐\n// │ │\n// ┌─────────V────────┐ │\n// │ dragging │ │ Updates the drop target marker.\n// └─────────┬────────┘ │\n// │ │\n// ┌─────────────└────────────┘\n// │ │ │\n// │ ┌─────────V────────┐ │\n// │ │ dragleave │ │ Removes the drop target marker.\n// │ └─────────┬────────┘ │\n// │ │ │\n// ┌───│─────────────┘ │\n// │ │ │ │\n// │ │ ┌─────────V────────┐ │\n// │ │ │ dragenter │ │ Focuses the editor view.\n// │ │ └─────────┬────────┘ │\n// │ │ │ │\n// │ │ └────────────┘\n// │ │\n// │ └─────────────┐\n// │ │ │\n// │ │ ┌─────────V────────┐\n// └───┐ │ drop │ (The default handler of the clipboard pipeline).\n// │ └─────────┬────────┘\n// │ │\n// │ ┌─────────V────────┐ Resolves the final data.targetRanges.\n// │ │ clipboardInput │ Aborts if dropping on dragged content.\n// │ └─────────┬────────┘\n// │ │\n// │ ┌─────────V────────┐\n// │ │ clipboardInput │ (The default handler of the clipboard pipeline).\n// │ └─────────┬────────┘\n// │ │\n// │ ┌───────────V───────────┐\n// │ │ inputTransformation │ (The default handler of the clipboard pipeline).\n// │ └───────────┬───────────┘\n// │ │\n// │ ┌──────────V──────────┐\n// │ │ contentInsertion │ Updates the document selection to drop range.\n// │ └──────────┬──────────┘\n// │ │\n// │ ┌──────────V──────────┐\n// │ │ contentInsertion │ (The default handler of the clipboard pipeline).\n// │ └──────────┬──────────┘\n// │ │\n// │ ┌──────────V──────────┐\n// │ │ contentInsertion │ Removes the content from the original range if the insertion was successful.\n// │ └──────────┬──────────┘\n// │ │\n// └─────────────┐\n// │\n// ┌─────────V────────┐\n// │ dragend │ Removes the drop marker and cleans the state.\n// └──────────────────┘\n//\n\n/**\n * The drag and drop feature. It works on top of the {@link module:clipboard/clipboardpipeline~ClipboardPipeline}.\n *\n * Read more about the clipboard integration in the {@glink framework/deep-dive/clipboard clipboard deep-dive} guide.\n */\nexport default class DragDrop extends Plugin {\n\t/**\n\t * The live range over the original content that is being dragged.\n\t */\n\tprivate _draggedRange!: LiveRange | null;\n\n\t/**\n\t * The UID of current dragging that is used to verify if the drop started in the same editor as the drag start.\n\t *\n\t * **Note**: This is a workaround for broken 'dragend' events (they are not fired if the source text node got removed).\n\t */\n\tprivate _draggingUid!: string;\n\n\t/**\n\t * The reference to the model element that currently has a `draggable` attribute set (it is set while dragging).\n\t */\n\tprivate _draggableElement!: Element | null;\n\n\t/**\n\t * A throttled callback updating the drop marker.\n\t */\n\tprivate _updateDropMarkerThrottled!: DebouncedFunc<( targetRange: Range ) => void>;\n\n\t/**\n\t * A delayed callback removing the drop marker.\n\t */\n\tprivate _removeDropMarkerDelayed!: DelayedFunc<() => void>;\n\n\t/**\n\t * A delayed callback removing draggable attributes.\n\t */\n\tprivate _clearDraggableAttributesDelayed!: DelayedFunc<() => void>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'DragDrop' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ClipboardPipeline, Widget ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\n\t\tthis._draggedRange = null;\n\t\tthis._draggingUid = '';\n\t\tthis._draggableElement = null;\n\t\tthis._updateDropMarkerThrottled = throttle( targetRange => this._updateDropMarker( targetRange ), 40 );\n\t\tthis._removeDropMarkerDelayed = delay( () => this._removeDropMarker(), 40 );\n\t\tthis._clearDraggableAttributesDelayed = delay( () => this._clearDraggableAttributes(), 40 );\n\n\t\tif ( editor.plugins.has( 'DragDropExperimental' ) ) {\n\t\t\tthis.forceDisabled( 'DragDropExperimental' );\n\n\t\t\treturn;\n\t\t}\n\n\t\tview.addObserver( ClipboardObserver );\n\t\tview.addObserver( MouseObserver );\n\n\t\tthis._setupDragging();\n\t\tthis._setupContentInsertionIntegration();\n\t\tthis._setupClipboardInputIntegration();\n\t\tthis._setupDropMarker();\n\t\tthis._setupDraggableAttributeHandling();\n\n\t\tthis.listenTo<ObservableChangeEvent<boolean>>( editor, 'change:isReadOnly', ( evt, name, isReadOnly ) => {\n\t\t\tif ( isReadOnly ) {\n\t\t\t\tthis.forceDisabled( 'readOnlyMode' );\n\t\t\t} else {\n\t\t\t\tthis.clearForceDisabled( 'readOnlyMode' );\n\t\t\t}\n\t\t} );\n\n\t\tthis.on<ObservableChangeEvent<boolean>>( 'change:isEnabled', ( evt, name, isEnabled ) => {\n\t\t\tif ( !isEnabled ) {\n\t\t\t\tthis._finalizeDragging( false );\n\t\t\t}\n\t\t} );\n\n\t\tif ( env.isAndroid ) {\n\t\t\tthis.forceDisabled( 'noAndroidSupport' );\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tif ( this._draggedRange ) {\n\t\t\tthis._draggedRange.detach();\n\t\t\tthis._draggedRange = null;\n\t\t}\n\n\t\tthis._updateDropMarkerThrottled.cancel();\n\t\tthis._removeDropMarkerDelayed.cancel();\n\t\tthis._clearDraggableAttributesDelayed.cancel();\n\n\t\treturn super.destroy();\n\t}\n\n\t/**\n\t * Drag and drop events handling.\n\t */\n\tprivate _setupDragging(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst modelDocument = model.document;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\t// The handler for the drag start; it is responsible for setting data transfer object.\n\t\tthis.listenTo<ViewDocumentDragStartEvent>( viewDocument, 'dragstart', ( evt, data ) => {\n\t\t\tconst selection = modelDocument.selection;\n\n\t\t\t// Don't drag the editable element itself.\n\t\t\tif ( data.target && data.target.is( 'editableElement' ) ) {\n\t\t\t\tdata.preventDefault();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// TODO we could clone this node somewhere and style it to match editing view but without handles,\n\t\t\t// selection outline, WTA buttons, etc.\n\t\t\t// data.dataTransfer._native.setDragImage( data.domTarget, 0, 0 );\n\n\t\t\t// Check if this is dragstart over the widget (but not a nested editable).\n\t\t\tconst draggableWidget = data.target ? findDraggableWidget( data.target ) : null;\n\n\t\t\tif ( draggableWidget ) {\n\t\t\t\tconst modelElement = editor.editing.mapper.toModelElement( draggableWidget )!;\n\n\t\t\t\tthis._draggedRange = LiveRange.fromRange( model.createRangeOn( modelElement ) );\n\n\t\t\t\t// Disable toolbars so they won't obscure the drop area.\n\t\t\t\tif ( editor.plugins.has( 'WidgetToolbarRepository' ) ) {\n\t\t\t\t\tconst widgetToolbarRepository: WidgetToolbarRepository = editor.plugins.get( 'WidgetToolbarRepository' );\n\n\t\t\t\t\twidgetToolbarRepository.forceDisabled( 'dragDrop' );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If this was not a widget we should check if we need to drag some text content.\n\t\t\telse if ( !viewDocument.selection.isCollapsed ) {\n\t\t\t\tconst selectedElement = viewDocument.selection.getSelectedElement();\n\n\t\t\t\tif ( !selectedElement || !isWidget( selectedElement ) ) {\n\t\t\t\t\tthis._draggedRange = LiveRange.fromRange( selection.getFirstRange()! );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !this._draggedRange ) {\n\t\t\t\tdata.preventDefault();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._draggingUid = uid();\n\n\t\t\tconst canEditAtDraggedRange = this.isEnabled && editor.model.canEditAt( this._draggedRange );\n\n\t\t\tdata.dataTransfer.effectAllowed = canEditAtDraggedRange ? 'copyMove' : 'copy';\n\t\t\tdata.dataTransfer.setData( 'application/ckeditor5-dragging-uid', this._draggingUid );\n\n\t\t\tconst draggedSelection = model.createSelection( this._draggedRange.toRange() );\n\t\t\tconst content = editor.data.toView( model.getSelectedContent( draggedSelection ) );\n\n\t\t\tviewDocument.fire<ViewDocumentClipboardOutputEvent>( 'clipboardOutput', {\n\t\t\t\tdataTransfer: data.dataTransfer,\n\t\t\t\tcontent,\n\t\t\t\tmethod: 'dragstart'\n\t\t\t} );\n\n\t\t\tif ( !canEditAtDraggedRange ) {\n\t\t\t\tthis._draggedRange.detach();\n\t\t\t\tthis._draggedRange = null;\n\t\t\t\tthis._draggingUid = '';\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\n\t\t// The handler for finalizing drag and drop. It should always be triggered after dragging completes\n\t\t// even if it was completed in a different application.\n\t\t// Note: This is not fired if source text node got removed while downcasting a marker.\n\t\tthis.listenTo<ViewDocumentDragEndEvent>( viewDocument, 'dragend', ( evt, data ) => {\n\t\t\tthis._finalizeDragging( !data.dataTransfer.isCanceled && data.dataTransfer.dropEffect == 'move' );\n\t\t}, { priority: 'low' } );\n\n\t\t// Dragging over the editable.\n\t\tthis.listenTo<ViewDocumentDragEnterEvent>( viewDocument, 'dragenter', () => {\n\t\t\tif ( !this.isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tview.focus();\n\t\t} );\n\n\t\t// Dragging out of the editable.\n\t\tthis.listenTo<ViewDocumentDragLeaveEvent>( viewDocument, 'dragleave', () => {\n\t\t\t// We do not know if the mouse left the editor or just some element in it, so let us wait a few milliseconds\n\t\t\t// to check if 'dragover' is not fired.\n\t\t\tthis._removeDropMarkerDelayed();\n\t\t} );\n\n\t\t// Handler for moving dragged content over the target area.\n\t\tthis.listenTo<ViewDocumentDraggingEvent>( viewDocument, 'dragging', ( evt, data ) => {\n\t\t\tif ( !this.isEnabled ) {\n\t\t\t\tdata.dataTransfer.dropEffect = 'none';\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._removeDropMarkerDelayed.cancel();\n\n\t\t\tconst targetRange = findDropTargetRange( editor, data.targetRanges, data.target );\n\n\t\t\t// Do not drop if target place is not editable.\n\t\t\tif ( !editor.model.canEditAt( targetRange ) ) {\n\t\t\t\tdata.dataTransfer.dropEffect = 'none';\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If this is content being dragged from another editor, moving out of current editor instance\n\t\t\t// is not possible until 'dragend' event case will be fixed.\n\t\t\tif ( !this._draggedRange ) {\n\t\t\t\tdata.dataTransfer.dropEffect = 'copy';\n\t\t\t}\n\n\t\t\t// In Firefox it is already set and effect allowed remains the same as originally set.\n\t\t\tif ( !env.isGecko ) {\n\t\t\t\tif ( data.dataTransfer.effectAllowed == 'copy' ) {\n\t\t\t\t\tdata.dataTransfer.dropEffect = 'copy';\n\t\t\t\t} else if ( [ 'all', 'copyMove' ].includes( data.dataTransfer.effectAllowed ) ) {\n\t\t\t\t\tdata.dataTransfer.dropEffect = 'move';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/* istanbul ignore else -- @preserve */\n\t\t\tif ( targetRange ) {\n\t\t\t\tthis._updateDropMarkerThrottled( targetRange );\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * Integration with the `clipboardInput` event.\n\t */\n\tprivate _setupClipboardInputIntegration(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\t// Update the event target ranges and abort dropping if dropping over itself.\n\t\tthis.listenTo<ViewDocumentClipboardInputEvent>( viewDocument, 'clipboardInput', ( evt, data ) => {\n\t\t\tif ( data.method != 'drop' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst targetRange = findDropTargetRange( editor, data.targetRanges, data.target );\n\n\t\t\t// The dragging markers must be removed after searching for the target range because sometimes\n\t\t\t// the target lands on the marker itself.\n\t\t\tthis._removeDropMarker();\n\n\t\t\t/* istanbul ignore if -- @preserve */\n\t\t\tif ( !targetRange || !editor.model.canEditAt( targetRange ) ) {\n\t\t\t\tthis._finalizeDragging( false );\n\t\t\t\tevt.stop();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Since we cannot rely on the drag end event, we must check if the local drag range is from the current drag and drop\n\t\t\t// or it is from some previous not cleared one.\n\t\t\tif ( this._draggedRange && this._draggingUid != data.dataTransfer.getData( 'application/ckeditor5-dragging-uid' ) ) {\n\t\t\t\tthis._draggedRange.detach();\n\t\t\t\tthis._draggedRange = null;\n\t\t\t\tthis._draggingUid = '';\n\t\t\t}\n\n\t\t\t// Do not do anything if some content was dragged within the same document to the same position.\n\t\t\tconst isMove = getFinalDropEffect( data.dataTransfer ) == 'move';\n\n\t\t\tif ( isMove && this._draggedRange && this._draggedRange.containsRange( targetRange, true ) ) {\n\t\t\t\tthis._finalizeDragging( false );\n\t\t\t\tevt.stop();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Override the target ranges with the one adjusted to the best one for a drop.\n\t\t\tdata.targetRanges = [ editor.editing.mapper.toViewRange( targetRange ) ];\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Integration with the `contentInsertion` event of the clipboard pipeline.\n\t */\n\tprivate _setupContentInsertionIntegration(): void {\n\t\tconst clipboardPipeline = this.editor.plugins.get( ClipboardPipeline );\n\n\t\tclipboardPipeline.on<ClipboardContentInsertionEvent>( 'contentInsertion', ( evt, data ) => {\n\t\t\tif ( !this.isEnabled || data.method !== 'drop' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Update the selection to the target range in the same change block to avoid selection post-fixing\n\t\t\t// and to be able to clone text attributes for plain text dropping.\n\t\t\tconst ranges = data.targetRanges!.map( viewRange => this.editor.editing.mapper.toModelRange( viewRange ) );\n\n\t\t\tthis.editor.model.change( writer => writer.setSelection( ranges ) );\n\t\t}, { priority: 'high' } );\n\n\t\tclipboardPipeline.on<ClipboardContentInsertionEvent>( 'contentInsertion', ( evt, data ) => {\n\t\t\tif ( !this.isEnabled || data.method !== 'drop' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Remove dragged range content, remove markers, clean after dragging.\n\t\t\tconst isMove = getFinalDropEffect( data.dataTransfer ) == 'move';\n\n\t\t\t// Whether any content was inserted (insertion might fail if the schema is disallowing some elements\n\t\t\t// (for example an image caption allows only the content of a block but not blocks themselves.\n\t\t\t// Some integrations might not return valid range (i.e., table pasting).\n\t\t\tconst isSuccess = !data.resultRange || !data.resultRange.isCollapsed;\n\n\t\t\tthis._finalizeDragging( isSuccess && isMove );\n\t\t}, { priority: 'lowest' } );\n\t}\n\n\t/**\n\t * Adds listeners that add the `draggable` attribute to the elements while the mouse button is down so the dragging could start.\n\t */\n\tprivate _setupDraggableAttributeHandling(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\t// Add the 'draggable' attribute to the widget while pressing the selection handle.\n\t\t// This is required for widgets to be draggable. In Chrome it will enable dragging text nodes.\n\t\tthis.listenTo<ViewDocumentMouseDownEvent>( viewDocument, 'mousedown', ( evt, data ) => {\n\t\t\t// The lack of data can be caused by editor tests firing fake mouse events. This should not occur\n\t\t\t// in real-life scenarios but this greatly simplifies editor tests that would otherwise fail a lot.\n\t\t\tif ( env.isAndroid || !data ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._clearDraggableAttributesDelayed.cancel();\n\n\t\t\t// Check if this is a mousedown over the widget (but not a nested editable).\n\t\t\tlet draggableElement = findDraggableWidget( data.target );\n\n\t\t\t// Note: There is a limitation that if more than a widget is selected (a widget and some text)\n\t\t\t// and dragging starts on the widget, then only the widget is dragged.\n\n\t\t\t// If this was not a widget then we should check if we need to drag some text content.\n\t\t\t// In Chrome set a 'draggable' attribute on closest editable to allow immediate dragging of the selected text range.\n\t\t\t// In Firefox this is not needed. In Safari it makes the whole editable draggable (not just textual content).\n\t\t\t// Disabled in read-only mode because draggable=\"true\" + contenteditable=\"false\" results\n\t\t\t// in not firing selectionchange event ever, which makes the selection stuck in read-only mode.\n\t\t\tif ( env.isBlink && !draggableElement && !viewDocument.selection.isCollapsed ) {\n\t\t\t\tconst selectedElement = viewDocument.selection.getSelectedElement();\n\n\t\t\t\tif ( !selectedElement || !isWidget( selectedElement ) ) {\n\t\t\t\t\tconst editableElement = viewDocument.selection.editableElement;\n\n\t\t\t\t\tif ( editableElement && !editableElement.isReadOnly ) {\n\t\t\t\t\t\tdraggableElement = editableElement;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( draggableElement ) {\n\t\t\t\tview.change( writer => {\n\t\t\t\t\twriter.setAttribute( 'draggable', 'true', draggableElement! );\n\t\t\t\t} );\n\n\t\t\t\t// Keep the reference to the model element in case the view element gets removed while dragging.\n\t\t\t\tthis._draggableElement = editor.editing.mapper.toModelElement( draggableElement )!;\n\t\t\t}\n\t\t} );\n\n\t\t// Remove the draggable attribute in case no dragging started (only mousedown + mouseup).\n\t\tthis.listenTo<ViewDocumentMouseUpEvent>( viewDocument, 'mouseup', () => {\n\t\t\tif ( !env.isAndroid ) {\n\t\t\t\tthis._clearDraggableAttributesDelayed();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Removes the `draggable` attribute from the element that was used for dragging.\n\t */\n\tprivate _clearDraggableAttributes(): void {\n\t\tconst editing = this.editor.editing;\n\n\t\tediting.view.change( writer => {\n\t\t\t// Remove 'draggable' attribute.\n\t\t\tif ( this._draggableElement && this._draggableElement.root.rootName != '$graveyard' ) {\n\t\t\t\twriter.removeAttribute( 'draggable', editing.mapper.toViewElement( this._draggableElement )! );\n\t\t\t}\n\n\t\t\tthis._draggableElement = null;\n\t\t} );\n\t}\n\n\t/**\n\t * Creates downcast conversion for the drop target marker.\n\t */\n\tprivate _setupDropMarker(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Drop marker conversion for hovering over widgets.\n\t\teditor.conversion.for( 'editingDowncast' ).markerToHighlight( {\n\t\t\tmodel: 'drop-target',\n\t\t\tview: {\n\t\t\t\tclasses: [ 'ck-clipboard-drop-target-range' ]\n\t\t\t}\n\t\t} );\n\n\t\t// Drop marker conversion for in text drop target.\n\t\teditor.conversion.for( 'editingDowncast' ).markerToElement( {\n\t\t\tmodel: 'drop-target',\n\t\t\tview: ( data, { writer } ) => {\n\t\t\t\tconst inText = editor.model.schema.checkChild( data.markerRange.start, '$text' );\n\n\t\t\t\tif ( !inText ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treturn writer.createUIElement( 'span', { class: 'ck ck-clipboard-drop-target-position' }, function( domDocument ) {\n\t\t\t\t\tconst domElement = this.toDomElement( domDocument );\n\n\t\t\t\t\t// Using word joiner to make this marker as high as text and also making text not break on marker.\n\t\t\t\t\tdomElement.append( '\\u2060', domDocument.createElement( 'span' ), '\\u2060' );\n\n\t\t\t\t\treturn domElement;\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Updates the drop target marker to the provided range.\n\t *\n\t * @param targetRange The range to set the marker to.\n\t */\n\tprivate _updateDropMarker( targetRange: Range ): void {\n\t\tconst editor = this.editor;\n\t\tconst markers = editor.model.markers;\n\n\t\teditor.model.change( writer => {\n\t\t\tif ( markers.has( 'drop-target' ) ) {\n\t\t\t\tif ( !markers.get( 'drop-target' )!.getRange().isEqual( targetRange ) ) {\n\t\t\t\t\twriter.updateMarker( 'drop-target', { range: targetRange } );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twriter.addMarker( 'drop-target', {\n\t\t\t\t\trange: targetRange,\n\t\t\t\t\tusingOperation: false,\n\t\t\t\t\taffectsData: false\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Removes the drop target marker.\n\t */\n\tprivate _removeDropMarker(): void {\n\t\tconst model = this.editor.model;\n\n\t\tthis._removeDropMarkerDelayed.cancel();\n\t\tthis._updateDropMarkerThrottled.cancel();\n\n\t\tif ( model.markers.has( 'drop-target' ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.removeMarker( 'drop-target' );\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Deletes the dragged content from its original range and clears the dragging state.\n\t *\n\t * @param moved Whether the move succeeded.\n\t */\n\tprivate _finalizeDragging( moved: boolean ): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\n\t\tthis._removeDropMarker();\n\t\tthis._clearDraggableAttributes();\n\n\t\tif ( editor.plugins.has( 'WidgetToolbarRepository' ) ) {\n\t\t\tconst widgetToolbarRepository: WidgetToolbarRepository = editor.plugins.get( 'WidgetToolbarRepository' );\n\n\t\t\twidgetToolbarRepository.clearForceDisabled( 'dragDrop' );\n\t\t}\n\n\t\tthis._draggingUid = '';\n\n\t\tif ( !this._draggedRange ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Delete moved content.\n\t\tif ( moved && this.isEnabled ) {\n\t\t\tmodel.deleteContent( model.createSelection( this._draggedRange ), { doNotAutoparagraph: true } );\n\t\t}\n\n\t\tthis._draggedRange.detach();\n\t\tthis._draggedRange = null;\n\t}\n}\n\n/**\n * Returns fixed selection range for given position and target element.\n */\nfunction findDropTargetRange( editor: Editor, targetViewRanges: Array<ViewRange> | null, targetViewElement: ViewElement ): Range | null {\n\tconst model = editor.model;\n\tconst mapper = editor.editing.mapper;\n\n\tlet range: Range | null = null;\n\n\tconst targetViewPosition = targetViewRanges ? targetViewRanges[ 0 ].start : null;\n\n\t// A UIElement is not a valid drop element, use parent (this could be a drop marker or any other UIElement).\n\tif ( targetViewElement.is( 'uiElement' ) ) {\n\t\ttargetViewElement = targetViewElement.parent as ViewElement;\n\t}\n\n\t// Quick win if the target is a widget (but not a nested editable).\n\trange = findDropTargetRangeOnWidget( editor, targetViewElement );\n\n\tif ( range ) {\n\t\treturn range;\n\t}\n\n\t// The easiest part is over, now we need to move to the model space.\n\n\t// Find target model element and position.\n\tconst targetModelElement = getClosestMappedModelElement( editor, targetViewElement );\n\tconst targetModelPosition = targetViewPosition ? mapper.toModelPosition( targetViewPosition ) : null;\n\n\t// There is no target position while hovering over an empty table cell.\n\t// In Safari, target position can be empty while hovering over a widget (e.g., a page-break).\n\t// Find the drop position inside the element.\n\tif ( !targetModelPosition ) {\n\t\treturn findDropTargetRangeInElement( editor, targetModelElement );\n\t}\n\n\t// Check if target position is between blocks and adjust drop position to the next object.\n\t// This is because while hovering over a root element next to a widget the target position can jump in crazy places.\n\trange = findDropTargetRangeBetweenBlocks( editor, targetModelPosition, targetModelElement );\n\n\tif ( range ) {\n\t\treturn range;\n\t}\n\n\t// Try fixing selection position.\n\t// In Firefox, the target position lands before widgets but in other browsers it tends to land after a widget.\n\trange = model.schema.getNearestSelectionRange( targetModelPosition, env.isGecko ? 'forward' : 'backward' );\n\n\tif ( range ) {\n\t\treturn range;\n\t}\n\n\t// There is no valid selection position inside the current limit element so find a closest object ancestor.\n\t// This happens if the model position lands directly in the <table> element itself (view target element was a `<td>`\n\t// so a nested editable, but view target position was directly in the `<figure>` element).\n\treturn findDropTargetRangeOnAncestorObject( editor, targetModelPosition.parent as Element );\n}\n\n/**\n * Returns fixed selection range for a given position and a target element if it is over the widget but not over its nested editable.\n */\nfunction findDropTargetRangeOnWidget( editor: Editor, targetViewElement: ViewElement ): Range | null {\n\tconst model = editor.model;\n\tconst mapper = editor.editing.mapper;\n\n\t// Quick win if the target is a widget.\n\tif ( isWidget( targetViewElement ) ) {\n\t\treturn model.createRangeOn( mapper.toModelElement( targetViewElement )! );\n\t}\n\n\t// Check if we are deeper over a widget (but not over a nested editable).\n\tif ( !targetViewElement.is( 'editableElement' ) ) {\n\t\t// Find a closest ancestor that is either a widget or an editable element...\n\t\tconst ancestor = targetViewElement.findAncestor( node => isWidget( node ) || node.is( 'editableElement' ) )!;\n\n\t\t// ...and if the widget was closer then it is a drop target.\n\t\tif ( isWidget( ancestor ) ) {\n\t\t\treturn model.createRangeOn( mapper.toModelElement( ancestor! )! );\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns fixed selection range inside a model element.\n */\nfunction findDropTargetRangeInElement( editor: Editor, targetModelElement: Element ): Range | null {\n\tconst model = editor.model;\n\tconst schema = model.schema;\n\n\tconst positionAtElementStart = model.createPositionAt( targetModelElement, 0 );\n\n\treturn schema.getNearestSelectionRange( positionAtElementStart, 'forward' );\n}\n\n/**\n * Returns fixed selection range for a given position and a target element if the drop is between blocks.\n */\nfunction findDropTargetRangeBetweenBlocks( editor: Editor, targetModelPosition: Position, targetModelElement: Element ): Range | null {\n\tconst model = editor.model;\n\n\t// Check if target is between blocks.\n\tif ( !model.schema.checkChild( targetModelElement, '$block' ) ) {\n\t\treturn null;\n\t}\n\n\t// Find position between blocks.\n\tconst positionAtElementStart = model.createPositionAt( targetModelElement, 0 );\n\n\t// Get the common part of the path (inside the target element and the target position).\n\tconst commonPath = targetModelPosition.path.slice( 0, positionAtElementStart.path.length );\n\n\t// Position between the blocks.\n\tconst betweenBlocksPosition = model.createPositionFromPath( targetModelPosition.root, commonPath );\n\tconst nodeAfter = betweenBlocksPosition.nodeAfter;\n\n\t// Adjust drop position to the next object.\n\t// This is because while hovering over a root element next to a widget the target position can jump in crazy places.\n\tif ( nodeAfter && model.schema.isObject( nodeAfter ) ) {\n\t\treturn model.createRangeOn( nodeAfter );\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns a selection range on the ancestor object.\n */\nfunction findDropTargetRangeOnAncestorObject( editor: Editor, element: Element ): Range | null {\n\tconst model = editor.model;\n\tlet currentElement: Element | null = element;\n\n\twhile ( currentElement ) {\n\t\tif ( model.schema.isObject( currentElement ) ) {\n\t\t\treturn model.createRangeOn( currentElement );\n\t\t}\n\n\t\tcurrentElement = currentElement.parent as Element | null;\n\t}\n\n\t/* istanbul ignore next -- @preserve */\n\treturn null;\n}\n\n/**\n * Returns the closest model element for the specified view element.\n */\nfunction getClosestMappedModelElement( editor: Editor, element: ViewElement ): Element {\n\tconst mapper = editor.editing.mapper;\n\tconst view = editor.editing.view;\n\n\tconst targetModelElement = mapper.toModelElement( element );\n\n\tif ( targetModelElement ) {\n\t\treturn targetModelElement;\n\t}\n\n\t// Find mapped ancestor if the target is inside not mapped element (for example inline code element).\n\tconst viewPosition = view.createPositionBefore( element );\n\tconst viewElement = mapper.findMappedViewAncestor( viewPosition );\n\n\treturn mapper.toModelElement( viewElement )!;\n}\n\n/**\n * Returns the drop effect that should be a result of dragging the content.\n * This function is handling a quirk when checking the effect in the 'drop' DOM event.\n */\nfunction getFinalDropEffect( dataTransfer: DataTransfer ): DataTransfer[ 'dropEffect' ] {\n\tif ( env.isGecko ) {\n\t\treturn dataTransfer.dropEffect;\n\t}\n\n\treturn [ 'all', 'copyMove' ].includes( dataTransfer.effectAllowed ) ? 'move' : 'copy';\n}\n\n/**\n * Returns a widget element that should be dragged.\n */\nfunction findDraggableWidget( target: ViewElement ): ViewElement | null {\n\t// This is directly an editable so not a widget for sure.\n\tif ( target.is( 'editableElement' ) ) {\n\t\treturn null;\n\t}\n\n\t// TODO: Let's have a isWidgetSelectionHandleDomElement() helper in ckeditor5-widget utils.\n\tif ( target.hasClass( 'ck-widget__selection-handle' ) ) {\n\t\treturn target.findAncestor( isWidget );\n\t}\n\n\t// Direct hit on a widget.\n\tif ( isWidget( target ) ) {\n\t\treturn target;\n\t}\n\n\t// Find closest ancestor that is either a widget or an editable element...\n\tconst ancestor = target.findAncestor( node => isWidget( node ) || node.is( 'editableElement' ) )!;\n\n\t// ...and if closer was the widget then enable dragging it.\n\tif ( isWidget( ancestor ) ) {\n\t\treturn ancestor;\n\t}\n\n\treturn null;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module clipboard/pasteplaintext\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\nimport type { DocumentFragment, Schema, ViewDocumentKeyDownEvent } from '@ckeditor/ckeditor5-engine';\n\nimport ClipboardObserver from './clipboardobserver';\nimport ClipboardPipeline, { type ClipboardContentInsertionEvent } from './clipboardpipeline';\n\n/**\n * The plugin detects the user's intention to paste plain text.\n *\n * For example, it detects the <kbd>Ctrl/Cmd</kbd> + <kbd>Shift</kbd> + <kbd>V</kbd> keystroke.\n */\nexport default class PastePlainText extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'PastePlainText' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ClipboardPipeline ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tconst selection = model.document.selection;\n\n\t\tlet shiftPressed = false;\n\n\t\tview.addObserver( ClipboardObserver );\n\n\t\tthis.listenTo<ViewDocumentKeyDownEvent>( viewDocument, 'keydown', ( evt, data ) => {\n\t\t\tshiftPressed = data.shiftKey;\n\t\t} );\n\n\t\teditor.plugins.get( ClipboardPipeline ).on<ClipboardContentInsertionEvent>( 'contentInsertion', ( evt, data ) => {\n\t\t\t// Plain text can be determined based on the event flag (#7799) or auto-detection (#1006). If detected,\n\t\t\t// preserve selection attributes on pasted items.\n\t\t\tif ( !shiftPressed && !isPlainTextFragment( data.content, model.schema ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmodel.change( writer => {\n\t\t\t\t// Formatting attributes should be preserved.\n\t\t\t\tconst textAttributes = Array.from( selection.getAttributes() )\n\t\t\t\t\t.filter( ( [ key ] ) => model.schema.getAttributeProperties( key ).isFormatting );\n\n\t\t\t\tif ( !selection.isCollapsed ) {\n\t\t\t\t\tmodel.deleteContent( selection, { doNotAutoparagraph: true } );\n\t\t\t\t}\n\n\t\t\t\t// Also preserve other attributes if they survived the content deletion (because they were not fully selected).\n\t\t\t\t// For example linkHref is not a formatting attribute but it should be preserved if pasted text was in the middle\n\t\t\t\t// of a link.\n\t\t\t\ttextAttributes.push( ...selection.getAttributes() );\n\n\t\t\t\tconst range = writer.createRangeIn( data.content );\n\n\t\t\t\tfor ( const item of range.getItems() ) {\n\t\t\t\t\tif ( item.is( '$textProxy' ) ) {\n\t\t\t\t\t\twriter.setAttributes( textAttributes, item );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n}\n\n/**\n * Returns true if specified `documentFragment` represents a plain text.\n */\nfunction isPlainTextFragment( documentFragment: DocumentFragment, schema: Schema ): boolean {\n\tif ( documentFragment.childCount > 1 ) {\n\t\treturn false;\n\t}\n\n\tconst child = documentFragment.getChild( 0 )!;\n\n\tif ( schema.isObject( child ) ) {\n\t\treturn false;\n\t}\n\n\treturn Array.from( child.getAttributeKeys() ).length == 0;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module clipboard/clipboard\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\nimport ClipboardPipeline from './clipboardpipeline';\nimport DragDrop from './dragdrop';\nimport PastePlainText from './pasteplaintext';\n\n/**\n * The clipboard feature.\n *\n * Read more about the clipboard integration in the {@glink framework/deep-dive/clipboard clipboard deep-dive} guide.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n * * {@link module:clipboard/clipboardpipeline~ClipboardPipeline}\n * * {@link module:clipboard/dragdrop~DragDrop}\n * * {@link module:clipboard/pasteplaintext~PastePlainText}\n */\nexport default class Clipboard extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Clipboard' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ClipboardPipeline, DragDrop, PastePlainText ] as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module clipboard/lineview\n */\n\n/* istanbul ignore file -- @preserve */\n\nimport { View } from '@ckeditor/ckeditor5-ui';\nimport { toUnit } from '@ckeditor/ckeditor5-utils';\n\nconst toPx = toUnit( 'px' );\n\n/**\n * The horizontal drop target line view.\n */\nexport default class LineView extends View {\n\t/**\n\t * Controls whether the line is visible.\n\t *\n\t * @observable\n\t * @default false\n\t */\n\tdeclare public isVisible: boolean;\n\n\t/**\n\t * Controls the line position x coordinate.\n\t *\n\t * @observable\n\t * @default null\n\t */\n\tdeclare public left: number | null;\n\n\t/**\n\t * Controls the line width.\n\t *\n\t * @observable\n\t * @default null\n\t */\n\tdeclare public width: number | null;\n\n\t/**\n\t * Controls the line position y coordinate.\n\t *\n\t * @observable\n\t * @default null\n\t */\n\tdeclare public top: number | null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor() {\n\t\tsuper();\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.set( {\n\t\t\tisVisible: false,\n\t\t\tleft: null,\n\t\t\ttop: null,\n\t\t\twidth: null\n\t\t} );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-clipboard-drop-target-line',\n\t\t\t\t\tbind.if( 'isVisible', 'ck-hidden', value => !value )\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\tleft: bind.to( 'left', left => toPx( left! ) ),\n\t\t\t\t\ttop: bind.to( 'top', top => toPx( top! ) ),\n\t\t\t\t\twidth: bind.to( 'width', width => toPx( width! ) )\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module select-all/selectallcommand\n */\n\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\nimport type { Element, Schema } from '@ckeditor/ckeditor5-engine';\n\n/**\n * The select all command.\n *\n * It is used by the {@link module:select-all/selectallediting~SelectAllEditing select all editing feature} to handle\n * the <kbd>Ctrl/⌘</kbd>+<kbd>A</kbd> keystroke.\n *\n * Executing this command changes the {@glink framework/architecture/editing-engine#model model}\n * selection so it contains the entire content of the editable root of the editor the selection is\n * {@link module:engine/model/selection~Selection#anchor anchored} in.\n *\n * If the selection was anchored in a {@glink framework/tutorials/implementing-a-block-widget nested editable}\n * (e.g. a caption of an image), the new selection will contain its entire content. Successive executions of this command\n * will expand the selection to encompass more and more content up to the entire editable root of the editor.\n */\nexport default class SelectAllCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\t// It does not affect data so should be enabled in read-only mode.\n\t\tthis.affectsData = false;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tlet scopeElement: Element | null = model.schema.getLimitElement( selection );\n\n\t\t// If an entire scope is selected, or the selection's ancestor is not a scope yet,\n\t\t// browse through ancestors to find the enclosing parent scope.\n\t\tif ( selection.containsEntireContent( scopeElement ) || !isSelectAllScope( model.schema, scopeElement ) ) {\n\t\t\tdo {\n\t\t\t\tscopeElement = scopeElement.parent as Element | null;\n\n\t\t\t\t// Do nothing, if the entire `root` is already selected.\n\t\t\t\tif ( !scopeElement ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while ( !isSelectAllScope( model.schema, scopeElement ) );\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\twriter.setSelection( scopeElement!, 'in' );\n\t\t} );\n\t}\n}\n\n/**\n * Checks whether the element is a valid select-all scope. Returns true, if the element is a\n * {@link module:engine/model/schema~Schema#isLimit limit}, and can contain any text or paragraph.\n *\n * @param schema Schema to check against.\n * @param element Model element.\n */\nfunction isSelectAllScope( schema: Schema, element: Element ): boolean {\n\treturn schema.isLimit( element ) && ( schema.checkChild( element, '$text' ) || schema.checkChild( element, 'paragraph' ) );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module select-all/selectallediting\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport { getCode, parseKeystroke } from '@ckeditor/ckeditor5-utils';\nimport SelectAllCommand from './selectallcommand';\nimport type { ViewDocumentKeyDownEvent } from '@ckeditor/ckeditor5-engine';\n\nconst SELECT_ALL_KEYSTROKE = parseKeystroke( 'Ctrl+A' );\n\n/**\n * The select all editing feature.\n *\n * It registers the `'selectAll'` {@link module:select-all/selectallcommand~SelectAllCommand command}\n * and the <kbd>Ctrl/⌘</kbd>+<kbd>A</kbd> keystroke listener which executes it.\n */\nexport default class SelectAllEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'SelectAllEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\teditor.commands.add( 'selectAll', new SelectAllCommand( editor ) );\n\n\t\tthis.listenTo<ViewDocumentKeyDownEvent>( viewDocument, 'keydown', ( eventInfo, domEventData ) => {\n\t\t\tif ( getCode( domEventData ) === SELECT_ALL_KEYSTROKE ) {\n\t\t\t\teditor.execute( 'selectAll' );\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module select-all/selectallui\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport { ButtonView } from '@ckeditor/ckeditor5-ui';\n\nimport selectAllIcon from '../theme/icons/select-all.svg';\n\n/**\n * The select all UI feature.\n *\n * It registers the `'selectAll'` UI button in the editor's\n * {@link module:ui/componentfactory~ComponentFactory component factory}. When clicked, the button\n * executes the {@link module:select-all/selectallcommand~SelectAllCommand select all command}.\n */\nexport default class SelectAllUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'SelectAllUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.ui.componentFactory.add( 'selectAll', locale => {\n\t\t\tconst command = editor.commands.get( 'selectAll' )!;\n\t\t\tconst view = new ButtonView( locale );\n\t\t\tconst t = locale.t;\n\n\t\t\tview.set( {\n\t\t\t\tlabel: t( 'Select all' ),\n\t\t\t\ticon: selectAllIcon,\n\t\t\t\tkeystroke: 'Ctrl+A',\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tview.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\n\t\t\t// Execute the command.\n\t\t\tthis.listenTo( view, 'execute', () => {\n\t\t\t\teditor.execute( 'selectAll' );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n}\n","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\"><path d=\\\"M.75 15.5a.75.75 0 0 1 .75.75V18l.008.09A.5.5 0 0 0 2 18.5h1.75a.75.75 0 1 1 0 1.5H1.5l-.144-.007a1.5 1.5 0 0 1-1.35-1.349L0 18.5v-2.25a.75.75 0 0 1 .75-.75zm18.5 0a.75.75 0 0 1 .75.75v2.25l-.007.144a1.5 1.5 0 0 1-1.349 1.35L18.5 20h-2.25a.75.75 0 1 1 0-1.5H18a.5.5 0 0 0 .492-.41L18.5 18v-1.75a.75.75 0 0 1 .75-.75zm-10.45 3c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2H7.2a.2.2 0 0 1-.2-.2v-1.1c0-.11.09-.2.2-.2h1.6zm4 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2h-1.6a.2.2 0 0 1-.2-.2v-1.1c0-.11.09-.2.2-.2h1.6zm.45-5.5a.75.75 0 1 1 0 1.5h-8.5a.75.75 0 1 1 0-1.5h8.5zM1.3 11c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2H.2a.2.2 0 0 1-.2-.2v-1.6c0-.11.09-.2.2-.2h1.1zm18.5 0c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2h-1.1a.2.2 0 0 1-.2-.2v-1.6c0-.11.09-.2.2-.2h1.1zm-4.55-2a.75.75 0 1 1 0 1.5H4.75a.75.75 0 1 1 0-1.5h10.5zM1.3 7c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2H.2a.2.2 0 0 1-.2-.2V7.2c0-.11.09-.2.2-.2h1.1zm18.5 0c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2h-1.1a.2.2 0 0 1-.2-.2V7.2c0-.11.09-.2.2-.2h1.1zm-4.55-2a.75.75 0 1 1 0 1.5h-2.5a.75.75 0 1 1 0-1.5h2.5zm-5 0a.75.75 0 1 1 0 1.5h-5.5a.75.75 0 0 1 0-1.5h5.5zm-6.5-5a.75.75 0 0 1 0 1.5H2a.5.5 0 0 0-.492.41L1.5 2v1.75a.75.75 0 0 1-1.5 0V1.5l.007-.144A1.5 1.5 0 0 1 1.356.006L1.5 0h2.25zM18.5 0l.144.007a1.5 1.5 0 0 1 1.35 1.349L20 1.5v2.25a.75.75 0 1 1-1.5 0V2l-.008-.09A.5.5 0 0 0 18 1.5h-1.75a.75.75 0 1 1 0-1.5h2.25zM8.8 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2H7.2a.2.2 0 0 1-.2-.2V.2c0-.11.09-.2.2-.2h1.6zm4 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2h-1.6a.2.2 0 0 1-.2-.2V.2c0-.11.09-.2.2-.2h1.6z\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module select-all/selectall\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport SelectAllEditing from './selectallediting';\nimport SelectAllUI from './selectallui';\n\n/**\n * The select all feature.\n *\n * This is a \"glue\" plugin which loads the {@link module:select-all/selectallediting~SelectAllEditing select all editing feature}\n * and the {@link module:select-all/selectallui~SelectAllUI select all UI feature}.\n *\n * Please refer to the documentation of individual features to learn more.\n */\nexport default class SelectAll extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ SelectAllEditing, SelectAllUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'SelectAll' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module undo/basecommand\n */\n\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\n\nimport {\n\ttransformSets,\n\ttype Batch,\n\ttype Operation,\n\ttype DataControllerSetEvent,\n\ttype Range,\n\tNoOperation\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * Base class for the undo feature commands: {@link module:undo/undocommand~UndoCommand} and {@link module:undo/redocommand~RedoCommand}.\n */\nexport default abstract class BaseCommand extends Command {\n\t/**\n\t * Stack of items stored by the command. These are pairs of:\n\t *\n\t * * {@link module:engine/model/batch~Batch batch} saved by the command,\n\t * * {@link module:engine/model/selection~Selection selection} state at the moment of saving the batch.\n\t */\n\tprotected _stack: Array<{ batch: Batch; selection: { ranges: Array<Range>; isBackward: boolean } }> = [];\n\n\t/**\n\t * Stores all batches that were created by this command.\n\t *\n\t * @internal\n\t */\n\tpublic _createdBatches = new WeakSet<Batch>();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\t// Refresh state, so the command is inactive right after initialization.\n\t\tthis.refresh();\n\n\t\t// This command should not depend on selection change.\n\t\tthis._isEnabledBasedOnSelection = false;\n\n\t\t// Set the transparent batch for the `editor.data.set()` call if the\n\t\t// batch type is not set already.\n\t\tthis.listenTo<DataControllerSetEvent>( editor.data, 'set', ( evt, data ) => {\n\t\t\t// Create a shallow copy of the options to not change the original args.\n\t\t\t// And make sure that an object is assigned to data[ 1 ].\n\t\t\tdata[ 1 ] = { ...data[ 1 ] };\n\n\t\t\tconst options = data[ 1 ];\n\n\t\t\t// If batch type is not set, default to non-undoable batch.\n\t\t\tif ( !options.batchType ) {\n\t\t\t\toptions.batchType = { isUndoable: false };\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\n\t\t// Clear the stack for the `transparent` batches.\n\t\tthis.listenTo<DataControllerSetEvent>( editor.data, 'set', ( evt, data ) => {\n\t\t\t// We can assume that the object exists and it has a `batchType` property.\n\t\t\t// It was ensured with a higher priority listener before.\n\t\t\tconst options = data[ 1 ]!;\n\n\t\t\tif ( !options.batchType!.isUndoable ) {\n\t\t\t\tthis.clearStack();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tthis.isEnabled = this._stack.length > 0;\n\t}\n\n\t/**\n\t * Returns all batches created by this command.\n\t */\n\tpublic get createdBatches(): WeakSet<Batch> {\n\t\treturn this._createdBatches;\n\t}\n\n\t/**\n\t * Stores a batch in the command, together with the selection state of the {@link module:engine/model/document~Document document}\n\t * created by the editor which this command is registered to.\n\t *\n\t * @param batch The batch to add.\n\t */\n\tpublic addBatch( batch: Batch ): void {\n\t\tconst docSelection = this.editor.model.document.selection;\n\n\t\tconst selection = {\n\t\t\tranges: docSelection.hasOwnRange ? Array.from( docSelection.getRanges() ) : [],\n\t\t\tisBackward: docSelection.isBackward\n\t\t};\n\n\t\tthis._stack.push( { batch, selection } );\n\t\tthis.refresh();\n\t}\n\n\t/**\n\t * Removes all items from the stack.\n\t */\n\tpublic clearStack(): void {\n\t\tthis._stack = [];\n\t\tthis.refresh();\n\t}\n\n\t/**\n\t * Restores the {@link module:engine/model/document~Document#selection document selection} state after a batch was undone.\n\t *\n\t * @param ranges Ranges to be restored.\n\t * @param isBackward A flag describing whether the restored range was selected forward or backward.\n\t * @param operations Operations which has been applied since selection has been stored.\n\t */\n\tprotected _restoreSelection(\n\t\tranges: Array<Range>,\n\t\tisBackward: boolean,\n\t\toperations: Array<Operation>\n\t): void {\n\t\tconst model = this.editor.model;\n\t\tconst document = model.document;\n\n\t\t// This will keep the transformed selection ranges.\n\t\tconst selectionRanges: Array<Range> = [];\n\n\t\t// Transform all ranges from the restored selection.\n\t\tconst transformedRangeGroups = ranges.map( range => range.getTransformedByOperations( operations ) );\n\t\tconst allRanges = transformedRangeGroups.flat();\n\n\t\tfor ( const rangeGroup of transformedRangeGroups ) {\n\t\t\t// While transforming there could appear ranges that are contained by other ranges, we shall ignore them.\n\t\t\tconst transformed = rangeGroup\n\t\t\t\t.filter( range => range.root != document.graveyard )\n\t\t\t\t.filter( range => !isRangeContainedByAnyOtherRange( range, allRanges ) );\n\n\t\t\t// All the transformed ranges ended up in graveyard.\n\t\t\tif ( !transformed.length ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// After the range got transformed, we have an array of ranges. Some of those\n\t\t\t// ranges may be \"touching\" -- they can be next to each other and could be merged.\n\t\t\tnormalizeRanges( transformed );\n\n\t\t\t// For each `range` from `ranges`, we take only one transformed range.\n\t\t\t// This is because we want to prevent situation where single-range selection\n\t\t\t// got transformed to multi-range selection.\n\t\t\tselectionRanges.push( transformed[ 0 ] );\n\t\t}\n\n\t\t// @if CK_DEBUG_ENGINE // console.log( `Restored selection by undo: ${ selectionRanges.join( ', ' ) }` );\n\n\t\t// `selectionRanges` may be empty if all ranges ended up in graveyard. If that is the case, do not restore selection.\n\t\tif ( selectionRanges.length ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.setSelection( selectionRanges, { backward: isBackward } );\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Undoes a batch by reversing that batch, transforming reversed batch and finally applying it.\n\t * This is a helper method for {@link #execute}.\n\t *\n\t * @param batchToUndo The batch to be undone.\n\t * @param undoingBatch The batch that will contain undoing changes.\n\t */\n\tprotected _undo( batchToUndo: Batch, undoingBatch: Batch ): void {\n\t\tconst model = this.editor.model;\n\t\tconst document = model.document;\n\n\t\t// All changes done by the command execution will be saved as one batch.\n\t\tthis._createdBatches.add( undoingBatch );\n\n\t\tconst operationsToUndo = batchToUndo.operations.slice().filter( operation => operation.isDocumentOperation );\n\t\toperationsToUndo.reverse();\n\n\t\t// We will process each operation from `batchToUndo`, in reverse order. If there were operations A, B and C in undone batch,\n\t\t// we need to revert them in reverse order, so first C' (reversed C), then B', then A'.\n\t\tfor ( const operationToUndo of operationsToUndo ) {\n\t\t\tconst nextBaseVersion = operationToUndo.baseVersion! + 1;\n\t\t\tconst historyOperations = Array.from( document.history.getOperations( nextBaseVersion ) );\n\n\t\t\tconst transformedSets = transformSets(\n\t\t\t\t[ operationToUndo.getReversed() ],\n\t\t\t\thistoryOperations,\n\t\t\t\t{\n\t\t\t\t\tuseRelations: true,\n\t\t\t\t\tdocument: this.editor.model.document,\n\t\t\t\t\tpadWithNoOps: false,\n\t\t\t\t\tforceWeakRemove: true\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tconst reversedOperations = transformedSets.operationsA;\n\n\t\t\t// After reversed operation has been transformed by all history operations, apply it.\n\t\t\tfor ( let operation of reversedOperations ) {\n\t\t\t\t// Do not apply any operation on non-editable space.\n\t\t\t\tconst affectedSelectable = operation.affectedSelectable;\n\n\t\t\t\tif ( affectedSelectable && !model.canEditAt( affectedSelectable ) ) {\n\t\t\t\t\toperation = new NoOperation( operation.baseVersion );\n\t\t\t\t}\n\n\t\t\t\t// Before applying, add the operation to the `undoingBatch`.\n\t\t\t\tundoingBatch.addOperation( operation );\n\t\t\t\tmodel.applyOperation( operation );\n\n\t\t\t\tdocument.history.setOperationAsUndone( operationToUndo, operation );\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Normalizes list of ranges by joining intersecting or \"touching\" ranges.\n *\n * @param ranges Ranges to be normalized.\n */\nfunction normalizeRanges( ranges: Array<Range> ): void {\n\tranges.sort( ( a, b ) => a.start.isBefore( b.start ) ? -1 : 1 );\n\n\tfor ( let i = 1; i < ranges.length; i++ ) {\n\t\tconst previousRange = ranges[ i - 1 ];\n\t\tconst joinedRange = previousRange.getJoined( ranges[ i ], true );\n\n\t\tif ( joinedRange ) {\n\t\t\t// Replace the ranges on the list with the new joined range.\n\t\t\ti--;\n\t\t\tranges.splice( i, 2, joinedRange );\n\t\t}\n\t}\n}\n\nfunction isRangeContainedByAnyOtherRange( range: Range, ranges: Array<Range> ): boolean {\n\treturn ranges.some( otherRange => otherRange !== range && otherRange.containsRange( range, true ) );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module undo/undocommand\n */\n\nimport BaseCommand from './basecommand';\nimport type { Batch } from '@ckeditor/ckeditor5-engine';\n\n/**\n * The undo command stores {@link module:engine/model/batch~Batch batches} applied to the\n * {@link module:engine/model/document~Document document} and is able to undo a batch by reversing it and transforming by\n * batches from {@link module:engine/model/document~Document#history history} that happened after the reversed batch.\n *\n * The undo command also takes care of restoring the {@link module:engine/model/document~Document#selection document selection}.\n */\nexport default class UndoCommand extends BaseCommand {\n\t/**\n\t * Executes the command. This method reverts a {@link module:engine/model/batch~Batch batch} added to the command's stack, transforms\n\t * and applies the reverted version on the {@link module:engine/model/document~Document document} and removes the batch from the stack.\n\t * Then, it restores the {@link module:engine/model/document~Document#selection document selection}.\n\t *\n\t * @fires execute\n\t * @fires revert\n\t * @param batch A batch that should be undone. If not set, the last added batch will be undone.\n\t */\n\tpublic override execute( batch: Batch | null = null ): void {\n\t\t// If batch is not given, set `batchIndex` to the last index in command stack.\n\t\tconst batchIndex = batch ? this._stack.findIndex( a => a.batch == batch ) : this._stack.length - 1;\n\n\t\tconst item = this._stack.splice( batchIndex, 1 )[ 0 ];\n\t\tconst undoingBatch = this.editor.model.createBatch( { isUndo: true } );\n\n\t\t// All changes have to be done in one `enqueueChange` callback so other listeners will not\n\t\t// step between consecutive operations, or won't do changes to the document before selection is properly restored.\n\t\tthis.editor.model.enqueueChange( undoingBatch, () => {\n\t\t\tthis._undo( item.batch, undoingBatch );\n\n\t\t\tconst operations = this.editor.model.document.history.getOperations( item.batch.baseVersion! );\n\t\t\tthis._restoreSelection( item.selection.ranges, item.selection.isBackward, operations );\n\t\t} );\n\n\t\t// Firing `revert` event after the change block to make sure that it includes all changes from post-fixers\n\t\t// and make sure that the selection is \"stabilized\" (the selection range is saved after undo is executed and then\n\t\t// restored on redo, so it is important that the selection range is saved after post-fixers are done).\n\t\tthis.fire<UndoCommandRevertEvent>( 'revert', item.batch, undoingBatch );\n\n\t\tthis.refresh();\n\t}\n}\n\n/**\n * Fired when execution of the command reverts some batch.\n *\n * @eventName ~UndoCommand#revert\n */\nexport type UndoCommandRevertEvent = {\n\tname: 'revert';\n\targs: [ batch: Batch, undoingBatch: Batch ];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module undo/redocommand\n */\n\nimport BaseCommand from './basecommand';\n\n/**\n * The redo command stores {@link module:engine/model/batch~Batch batches} that were used to undo a batch by\n * {@link module:undo/undocommand~UndoCommand}. It is able to redo a previously undone batch by reversing the undoing\n * batches created by `UndoCommand`. The reversed batch is transformed by all the batches from\n * {@link module:engine/model/document~Document#history history} that happened after the reversed undo batch.\n *\n * The redo command also takes care of restoring the {@link module:engine/model/document~Document#selection document selection}.\n */\nexport default class RedoCommand extends BaseCommand {\n\t/**\n\t * Executes the command. This method reverts the last {@link module:engine/model/batch~Batch batch} added to\n\t * the command's stack, applies the reverted and transformed version on the\n\t * {@link module:engine/model/document~Document document} and removes the batch from the stack.\n\t * Then, it restores the {@link module:engine/model/document~Document#selection document selection}.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute(): void {\n\t\tconst item = this._stack.pop()!;\n\t\tconst redoingBatch = this.editor.model.createBatch( { isUndo: true } );\n\n\t\t// All changes have to be done in one `enqueueChange` callback so other listeners will not step between consecutive\n\t\t// operations, or won't do changes to the document before selection is properly restored.\n\t\tthis.editor.model.enqueueChange( redoingBatch, () => {\n\t\t\tconst lastOperation = item.batch.operations[ item.batch.operations.length - 1 ];\n\t\t\tconst nextBaseVersion = lastOperation.baseVersion! + 1;\n\t\t\tconst operations = this.editor.model.document.history.getOperations( nextBaseVersion );\n\n\t\t\tthis._restoreSelection( item.selection.ranges, item.selection.isBackward, operations );\n\t\t\tthis._undo( item.batch, redoingBatch );\n\t\t} );\n\n\t\tthis.refresh();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module undo/undoediting\n */\n\nimport { Plugin, type Editor } from '@ckeditor/ckeditor5-core';\n\nimport UndoCommand, { type UndoCommandRevertEvent } from './undocommand';\nimport RedoCommand from './redocommand';\n\nimport type {\n\tBatch,\n\tModelApplyOperationEvent\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * The undo engine feature.\n *\n * It introduces the `'undo'` and `'redo'` commands to the editor.\n */\nexport default class UndoEditing extends Plugin {\n\t/**\n\t * The command that manages the undo {@link module:engine/model/batch~Batch batches} stack (history).\n\t * Created and registered during the {@link #init feature initialization}.\n\t */\n\tprivate _undoCommand!: UndoCommand;\n\n\t/**\n\t * The command that manages the redo {@link module:engine/model/batch~Batch batches} stack (history).\n\t * Created and registered during the {@link #init feature initialization}.\n\t */\n\tprivate _redoCommand!: RedoCommand;\n\n\t/**\n\t * Keeps track of which batches were registered in undo.\n\t */\n\tprivate _batchRegistry = new WeakSet<Batch>();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'UndoEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Create commands.\n\t\tthis._undoCommand = new UndoCommand( editor );\n\t\tthis._redoCommand = new RedoCommand( editor );\n\n\t\t// Register command to the editor.\n\t\teditor.commands.add( 'undo', this._undoCommand );\n\t\teditor.commands.add( 'redo', this._redoCommand );\n\n\t\tthis.listenTo<ModelApplyOperationEvent>( editor.model, 'applyOperation', ( evt, args ) => {\n\t\t\tconst operation = args[ 0 ];\n\n\t\t\t// Do not register batch if the operation is not a document operation.\n\t\t\t// This prevents from creating empty undo steps, where all operations where non-document operations.\n\t\t\t// Non-document operations creates and alters content in detached tree fragments (for example, document fragments).\n\t\t\t// Most of time this is preparing data before it is inserted into actual tree (for example during copy & paste).\n\t\t\t// Such operations should not be reversed.\n\t\t\tif ( !operation.isDocumentOperation ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst batch = operation.batch!;\n\n\t\t\tconst isRedoBatch = this._redoCommand.createdBatches.has( batch );\n\t\t\tconst isUndoBatch = this._undoCommand.createdBatches.has( batch );\n\t\t\tconst wasProcessed = this._batchRegistry.has( batch );\n\n\t\t\t// Skip the batch if it was already processed.\n\t\t\tif ( wasProcessed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Add the batch to the registry so it will not be processed again.\n\t\t\tthis._batchRegistry.add( batch );\n\n\t\t\tif ( !batch.isUndoable ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isRedoBatch ) {\n\t\t\t\t// If this batch comes from `redoCommand`, add it to the `undoCommand` stack.\n\t\t\t\tthis._undoCommand.addBatch( batch );\n\t\t\t} else if ( !isUndoBatch ) {\n\t\t\t\t// If the batch comes neither from `redoCommand` nor from `undoCommand` then it is a new, regular batch.\n\t\t\t\t// Add the batch to the `undoCommand` stack and clear the `redoCommand` stack.\n\t\t\t\tthis._undoCommand.addBatch( batch );\n\t\t\t\tthis._redoCommand.clearStack();\n\t\t\t}\n\t\t}, { priority: 'highest' } );\n\n\t\tthis.listenTo<UndoCommandRevertEvent>( this._undoCommand, 'revert', ( evt, undoneBatch, undoingBatch ) => {\n\t\t\tthis._redoCommand.addBatch( undoingBatch );\n\t\t} );\n\n\t\teditor.keystrokes.set( 'CTRL+Z', 'undo' );\n\t\teditor.keystrokes.set( 'CTRL+Y', 'redo' );\n\t\teditor.keystrokes.set( 'CTRL+SHIFT+Z', 'redo' );\n\t}\n}\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m5.042 9.367 2.189 1.837a.75.75 0 0 1-.965 1.149l-3.788-3.18a.747.747 0 0 1-.21-.284.75.75 0 0 1 .17-.945L6.23 4.762a.75.75 0 1 1 .964 1.15L4.863 7.866h8.917A.75.75 0 0 1 14 7.9a4 4 0 1 1-1.477 7.718l.344-1.489a2.5 2.5 0 1 0 1.094-4.73l.008-.032H5.042z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m14.958 9.367-2.189 1.837a.75.75 0 0 0 .965 1.149l3.788-3.18a.747.747 0 0 0 .21-.284.75.75 0 0 0-.17-.945L13.77 4.762a.75.75 0 1 0-.964 1.15l2.331 1.955H6.22A.75.75 0 0 0 6 7.9a4 4 0 1 0 1.477 7.718l-.344-1.489A2.5 2.5 0 1 1 6.039 9.4l-.008-.032h8.927z\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module undo/undoui\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport { ButtonView } from '@ckeditor/ckeditor5-ui';\n\nimport undoIcon from '../theme/icons/undo.svg';\nimport redoIcon from '../theme/icons/redo.svg';\n\n/**\n * The undo UI feature. It introduces the `'undo'` and `'redo'` buttons to the editor.\n */\nexport default class UndoUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'UndoUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst t = editor.t;\n\n\t\tconst localizedUndoIcon = locale.uiLanguageDirection == 'ltr' ? undoIcon : redoIcon;\n\t\tconst localizedRedoIcon = locale.uiLanguageDirection == 'ltr' ? redoIcon : undoIcon;\n\n\t\tthis._addButton( 'undo', t( 'Undo' ), 'CTRL+Z', localizedUndoIcon );\n\t\tthis._addButton( 'redo', t( 'Redo' ), 'CTRL+Y', localizedRedoIcon );\n\t}\n\n\t/**\n\t * Creates a button for the specified command.\n\t *\n\t * @param name Command name.\n\t * @param label Button label.\n\t * @param keystroke Command keystroke.\n\t * @param Icon Source of the icon.\n\t */\n\tprivate _addButton( name: 'undo' | 'redo', label: string, keystroke: string, Icon: string ) {\n\t\tconst editor = this.editor;\n\n\t\teditor.ui.componentFactory.add( name, locale => {\n\t\t\tconst command = editor.commands.get( name )!;\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\tlabel,\n\t\t\t\ticon: Icon,\n\t\t\t\tkeystroke,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tview.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\n\t\t\tthis.listenTo( view, 'execute', () => {\n\t\t\t\teditor.execute( name );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module undo/undo\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport UndoEditing from './undoediting';\nimport UndoUI from './undoui';\n\n/**\n * The undo feature.\n *\n * This is a \"glue\" plugin which loads the {@link module:undo/undoediting~UndoEditing undo editing feature}\n * and the {@link module:undo/undoui~UndoUI undo UI feature}.\n *\n * Below is an explanation of the undo mechanism working together with {@link module:engine/model/history~History History}:\n *\n * Whenever an {@link module:engine/model/operation/operation~Operation operation} is applied to the\n * {@link module:engine/model/document~Document document}, it is saved to `History` as is.\n * The {@link module:engine/model/batch~Batch batch} that owns that operation is also saved, in\n * {@link module:undo/undocommand~UndoCommand}, together with the selection that was present in the document before the\n * operation was applied. A batch is saved instead of the operation because changes are undone batch-by-batch, not operation-by-operation\n * and a batch is seen as one undo step.\n *\n * After changes happen to the document, the `History` and `UndoCommand` stack can be represented as follows:\n *\n * ```\n * History Undo stack\n * ============== ==================================\n * [operation A1] [ batch A ]\n * [operation B1] [ batch B ]\n * [operation B2] [ batch C ]\n * [operation C1]\n * [operation C2]\n * [operation B3]\n * [operation C3]\n * ```\n *\n * Where operations starting with the same letter are from same batch.\n *\n * Undoing a batch means that a set of operations which will reverse the effects of that batch needs to be generated.\n * For example, if a batch added several letters, undoing the batch should remove them. It is important to apply undoing\n * operations in the reversed order, so if a batch has operation `X`, `Y`, `Z`, reversed operations `Zr`, `Yr` and `Xr`\n * need to be applied. Otherwise reversed operation `Xr` would operate on a wrong document state, because operation `X`\n * does not know that operations `Y` and `Z` happened.\n *\n * After operations from an undone batch got {@link module:engine/model/operation/operation~Operation#getReversed reversed},\n * one needs to make sure if they are ready to be applied. In the scenario above, operation `C3` is the last operation and `C3r`\n * bases on up-to-date document state, so it can be applied to the document.\n *\n * ```\n * History Undo stack\n * ================= ==================================\n * [ operation A1 ] [ batch A ]\n * [ operation B1 ] [ batch B ]\n * [ operation B2 ] [ processing undoing batch C ]\n * [ operation C1 ]\n * [ operation C2 ]\n * [ operation B3 ]\n * [ operation C3 ]\n * [ operation C3r ]\n * ```\n *\n * Next is operation `C2`, reversed to `C2r`. `C2r` bases on `C2`, so it bases on the wrong document state. It needs to be\n * transformed by operations from history that happened after it, so it \"knows\" about them. Let us assume that `C2' = C2r * B3 * C3 * C3r`,\n * where `*` means \"transformed by\". Rest of operations from that batch are processed in the same fashion.\n *\n * ```\n * History Undo stack Redo stack\n * ================= ================================== ==================================\n * [ operation A1 ] [ batch A ] [ batch Cr ]\n * [ operation B1 ] [ batch B ]\n * [ operation B2 ]\n * [ operation C1 ]\n * [ operation C2 ]\n * [ operation B3 ]\n * [ operation C3 ]\n * [ operation C3r ]\n * [ operation C2' ]\n * [ operation C1' ]\n * ```\n *\n * Selective undo works on the same basis, however, instead of undoing the last batch in the undo stack, any batch can be undone.\n * The same algorithm applies: operations from a batch (i.e. `A1`) are reversed and then transformed by operations stored in history.\n *\n * Redo also is very similar to undo. It has its own stack that is filled with undoing (reversed batches). Operations from\n * the batch that is re-done are reversed-back, transformed in proper order and applied to the document.\n *\n * ```\n * History Undo stack Redo stack\n * ================= ================================== ==================================\n * [ operation A1 ] [ batch A ]\n * [ operation B1 ] [ batch B ]\n * [ operation B2 ] [ batch Crr ]\n * [ operation C1 ]\n * [ operation C2 ]\n * [ operation B3 ]\n * [ operation C3 ]\n * [ operation C3r ]\n * [ operation C2' ]\n * [ operation C1' ]\n * [ operation C1'r]\n * [ operation C2'r]\n * [ operation C3rr]\n * ```\n */\nexport default class Undo extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ UndoEditing, UndoUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Undo' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module upload/filereader\n */\n\n/* globals window */\n\nimport { ObservableMixin } from '@ckeditor/ckeditor5-utils';\n\ntype DomFileReader = globalThis.FileReader;\n\n/**\n * Wrapper over the native `FileReader`.\n */\nexport default class FileReader extends ObservableMixin() {\n\tpublic total!: number;\n\n\t/**\n\t * Instance of native FileReader.\n\t */\n\tprivate readonly _reader: DomFileReader;\n\n\t/**\n\t * Holds the data of an already loaded file. The file must be first loaded\n\t * by using {@link module:upload/filereader~FileReader#read `read()`}.\n\t */\n\tprivate _data?: string;\n\n\t/**\n\t * Number of bytes loaded.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public loaded: number;\n\n\t/**\n\t * Creates an instance of the FileReader.\n\t */\n\tconstructor() {\n\t\tsuper();\n\n\t\tconst reader = new window.FileReader();\n\n\t\tthis._reader = reader;\n\t\tthis._data = undefined;\n\n\t\tthis.set( 'loaded', 0 );\n\n\t\treader.onprogress = evt => {\n\t\t\tthis.loaded = evt.loaded;\n\t\t};\n\t}\n\n\t/**\n\t * Returns error that occurred during file reading.\n\t */\n\tpublic get error(): DOMException | null {\n\t\treturn this._reader.error;\n\t}\n\n\t/**\n\t * Holds the data of an already loaded file. The file must be first loaded\n\t * by using {@link module:upload/filereader~FileReader#read `read()`}.\n\t */\n\tpublic get data(): string | undefined {\n\t\treturn this._data;\n\t}\n\n\t/**\n\t * Reads the provided file.\n\t *\n\t * @param file Native File object.\n\t * @returns Returns a promise that will be resolved with file's content.\n\t * The promise will be rejected in case of an error or when the reading process is aborted.\n\t */\n\tpublic read( file: File ): Promise<string> {\n\t\tconst reader = this._reader;\n\t\tthis.total = file.size;\n\n\t\treturn new Promise( ( resolve, reject ) => {\n\t\t\treader.onload = () => {\n\t\t\t\tconst result = reader.result as string;\n\n\t\t\t\tthis._data = result;\n\n\t\t\t\tresolve( result );\n\t\t\t};\n\n\t\t\treader.onerror = () => {\n\t\t\t\treject( 'error' );\n\t\t\t};\n\n\t\t\treader.onabort = () => {\n\t\t\t\treject( 'aborted' );\n\t\t\t};\n\n\t\t\tthis._reader.readAsDataURL( file );\n\t\t} );\n\t}\n\n\t/**\n\t * Aborts file reader.\n\t */\n\tpublic abort(): void {\n\t\tthis._reader.abort();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module upload/filerepository\n */\n\nimport {\n\tPlugin,\n\tPendingActions,\n\ttype PendingAction\n} from '@ckeditor/ckeditor5-core';\n\nimport {\n\tCKEditorError,\n\tCollection,\n\tObservableMixin,\n\tlogWarning,\n\tuid,\n\ttype ObservableChangeEvent,\n\ttype CollectionChangeEvent\n} from '@ckeditor/ckeditor5-utils';\n\nimport FileReader from './filereader';\n\n/**\n * File repository plugin. A central point for managing file upload.\n *\n * To use it, first you need an upload adapter. Upload adapter's job is to handle communication with the server\n * (sending the file and handling server's response). You can use one of the existing plugins introducing upload adapters\n * (e.g. {@link module:easy-image/cloudservicesuploadadapter~CloudServicesUploadAdapter} or\n * {@link module:adapter-ckfinder/uploadadapter~CKFinderUploadAdapter}) or write your own one – see\n * the {@glink framework/deep-dive/upload-adapter Custom image upload adapter deep-dive} guide.\n *\n * Then, you can use {@link module:upload/filerepository~FileRepository#createLoader `createLoader()`} and the returned\n * {@link module:upload/filerepository~FileLoader} instance to load and upload files.\n */\nexport default class FileRepository extends Plugin {\n\t/**\n\t * Collection of loaders associated with this repository.\n\t */\n\tpublic loaders = new Collection<FileLoader>();\n\n\t/**\n\t * A factory function which should be defined before using `FileRepository`.\n\t *\n\t * It should return a new instance of {@link module:upload/filerepository~UploadAdapter} that will be used to upload files.\n\t * {@link module:upload/filerepository~FileLoader} instance associated with the adapter\n\t * will be passed to that function.\n\t *\n\t * For more information and example see {@link module:upload/filerepository~UploadAdapter}.\n\t */\n\tpublic createUploadAdapter?: ( loader: FileLoader ) => UploadAdapter;\n\n\t/**\n\t * Loaders mappings used to retrieve loaders references.\n\t */\n\tprivate _loadersMap = new Map<File | Promise<File>, FileLoader>();\n\n\t/**\n\t * Reference to a pending action registered in a {@link module:core/pendingactions~PendingActions} plugin\n\t * while upload is in progress. When there is no upload then value is `null`.\n\t */\n\tprivate _pendingAction: PendingAction | null = null;\n\n\t/**\n\t * Number of bytes uploaded.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public uploaded: number;\n\n\t/**\n\t * Number of total bytes to upload.\n\t *\n\t * It might be different than the file size because of headers and additional data.\n\t * It contains `null` if value is not available yet, so it's better to use {@link #uploadedPercent} to monitor\n\t * the progress.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public uploadTotal: number | null;\n\n\t/**\n\t * Upload progress in percents.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public uploadedPercent: number;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FileRepository' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ PendingActions ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\t// Keeps upload in a sync with pending actions.\n\t\tthis.loaders.on<CollectionChangeEvent>( 'change', () => this._updatePendingAction() );\n\n\t\tthis.set( 'uploaded', 0 );\n\t\tthis.set( 'uploadTotal', null );\n\n\t\tthis.bind( 'uploadedPercent' ).to( this, 'uploaded', this, 'uploadTotal', ( uploaded, total ) => {\n\t\t\treturn total ? ( uploaded / total * 100 ) : 0;\n\t\t} );\n\t}\n\n\t/**\n\t * Returns the loader associated with specified file or promise.\n\t *\n\t * To get loader by id use `fileRepository.loaders.get( id )`.\n\t *\n\t * @param fileOrPromise Native file or promise handle.\n\t */\n\tpublic getLoader( fileOrPromise: File | Promise<File> ): FileLoader | null {\n\t\treturn this._loadersMap.get( fileOrPromise ) || null;\n\t}\n\n\t/**\n\t * Creates a loader instance for the given file.\n\t *\n\t * Requires {@link #createUploadAdapter} factory to be defined.\n\t *\n\t * @param fileOrPromise Native File object or native Promise object which resolves to a File.\n\t */\n\tpublic createLoader( fileOrPromise: File | Promise<File> ): FileLoader | null {\n\t\tif ( !this.createUploadAdapter ) {\n\t\t\t/**\n\t\t\t * You need to enable an upload adapter in order to be able to upload files.\n\t\t\t *\n\t\t\t * This warning shows up when {@link module:upload/filerepository~FileRepository} is being used\n\t\t\t * without {@link module:upload/filerepository~FileRepository#createUploadAdapter defining an upload adapter}.\n\t\t\t *\n\t\t\t * **If you see this warning when using one of the {@glink installation/getting-started/predefined-builds\n\t\t\t * CKEditor 5 Builds}**\n\t\t\t * it means that you did not configure any of the upload adapters available by default in those builds.\n\t\t\t *\n\t\t\t * See the {@glink features/images/image-upload/image-upload comprehensive \"Image upload overview\"} to learn which upload\n\t\t\t * adapters are available in the builds and how to configure them.\n\t\t\t *\n\t\t\t * **If you see this warning when using a custom build** there is a chance that you enabled\n\t\t\t * a feature like {@link module:image/imageupload~ImageUpload},\n\t\t\t * or {@link module:image/imageupload/imageuploadui~ImageUploadUI} but you did not enable any upload adapter.\n\t\t\t * You can choose one of the existing upload adapters listed in the\n\t\t\t * {@glink features/images/image-upload/image-upload \"Image upload overview\"}.\n\t\t\t *\n\t\t\t * You can also implement your {@glink framework/deep-dive/upload-adapter own image upload adapter}.\n\t\t\t *\n\t\t\t * @error filerepository-no-upload-adapter\n\t\t\t */\n\t\t\tlogWarning( 'filerepository-no-upload-adapter' );\n\n\t\t\treturn null;\n\t\t}\n\n\t\tconst loader = new FileLoader( Promise.resolve( fileOrPromise ), this.createUploadAdapter );\n\n\t\tthis.loaders.add( loader );\n\t\tthis._loadersMap.set( fileOrPromise, loader );\n\n\t\t// Store also file => loader mapping so loader can be retrieved by file instance returned upon Promise resolution.\n\t\tif ( fileOrPromise instanceof Promise ) {\n\t\t\tloader.file\n\t\t\t\t.then( file => {\n\t\t\t\t\tthis._loadersMap.set( file!, loader );\n\t\t\t\t} )\n\t\t\t\t// Every then() must have a catch().\n\t\t\t\t// File loader state (and rejections) are handled in read() and upload().\n\t\t\t\t// Also, see the \"does not swallow the file promise rejection\" test.\n\t\t\t\t.catch( () => {} );\n\t\t}\n\n\t\tloader.on<ObservableChangeEvent>( 'change:uploaded', () => {\n\t\t\tlet aggregatedUploaded = 0;\n\n\t\t\tfor ( const loader of this.loaders ) {\n\t\t\t\taggregatedUploaded += loader.uploaded;\n\t\t\t}\n\n\t\t\tthis.uploaded = aggregatedUploaded;\n\t\t} );\n\n\t\tloader.on<ObservableChangeEvent>( 'change:uploadTotal', () => {\n\t\t\tlet aggregatedTotal = 0;\n\n\t\t\tfor ( const loader of this.loaders ) {\n\t\t\t\tif ( loader.uploadTotal ) {\n\t\t\t\t\taggregatedTotal += loader.uploadTotal;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.uploadTotal = aggregatedTotal;\n\t\t} );\n\n\t\treturn loader;\n\t}\n\n\t/**\n\t * Destroys the given loader.\n\t *\n\t * @param fileOrPromiseOrLoader File or Promise associated with that loader or loader itself.\n\t */\n\tpublic destroyLoader( fileOrPromiseOrLoader: File | Promise<File> | FileLoader ): void {\n\t\tconst loader = fileOrPromiseOrLoader instanceof FileLoader ? fileOrPromiseOrLoader : this.getLoader( fileOrPromiseOrLoader )!;\n\n\t\tloader._destroy();\n\n\t\tthis.loaders.remove( loader );\n\n\t\tthis._loadersMap.forEach( ( value, key ) => {\n\t\t\tif ( value === loader ) {\n\t\t\t\tthis._loadersMap.delete( key );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Registers or deregisters pending action bound with upload progress.\n\t */\n\tprivate _updatePendingAction(): void {\n\t\tconst pendingActions = this.editor.plugins.get( PendingActions );\n\n\t\tif ( this.loaders.length ) {\n\t\t\tif ( !this._pendingAction ) {\n\t\t\t\tconst t = this.editor.t;\n\t\t\t\tconst getMessage = ( value: number ) => `${ t( 'Upload in progress' ) } ${ parseInt( value as any ) }%.`;\n\n\t\t\t\tthis._pendingAction = pendingActions.add( getMessage( this.uploadedPercent ) );\n\t\t\t\tthis._pendingAction.bind( 'message' ).to( this, 'uploadedPercent', getMessage );\n\t\t\t}\n\t\t} else {\n\t\t\tpendingActions.remove( this._pendingAction! );\n\t\t\tthis._pendingAction = null;\n\t\t}\n\t}\n}\n\n/**\n * File loader class.\n *\n * It is used to control the process of reading the file and uploading it using the specified upload adapter.\n */\nclass FileLoader extends ObservableMixin() {\n\t/**\n\t * Unique id of FileLoader instance.\n\t *\n\t * @readonly\n\t */\n\tpublic readonly id: string;\n\n\t/**\n\t * Additional wrapper over the initial file promise passed to this loader.\n\t */\n\tprivate _filePromiseWrapper: FilePromiseWrapper;\n\n\t/**\n\t * Adapter instance associated with this file loader.\n\t */\n\tprivate _adapter: UploadAdapter;\n\n\t/**\n\t * FileReader used by FileLoader.\n\t */\n\tprivate _reader: FileReader;\n\n\t/**\n\t * Current status of FileLoader. It can be one of the following:\n\t *\n\t * * 'idle',\n\t * * 'reading',\n\t * * 'uploading',\n\t * * 'aborted',\n\t * * 'error'.\n\t *\n\t * When reading status can change in a following way:\n\t *\n\t * `idle` -> `reading` -> `idle`\n\t * `idle` -> `reading -> `aborted`\n\t * `idle` -> `reading -> `error`\n\t *\n\t * When uploading status can change in a following way:\n\t *\n\t * `idle` -> `uploading` -> `idle`\n\t * `idle` -> `uploading` -> `aborted`\n\t * `idle` -> `uploading` -> `error`\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public status: 'idle' | 'reading' | 'uploading' | 'aborted' | 'error';\n\n\t/**\n\t * Number of bytes uploaded.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public uploaded: number;\n\n\t/**\n\t * Number of total bytes to upload.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public uploadTotal: number | null;\n\n\t/**\n\t * Upload progress in percents.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public uploadedPercent: number;\n\n\t/**\n\t * Response of the upload.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public uploadResponse?: UploadResponse | null;\n\n\t/**\n\t * Creates a new instance of `FileLoader`.\n\t *\n\t * @param filePromise A promise which resolves to a file instance.\n\t * @param uploadAdapterCreator The function which returns {@link module:upload/filerepository~UploadAdapter} instance.\n\t */\n\tconstructor( filePromise: Promise<File>, uploadAdapterCreator: ( loader: FileLoader ) => UploadAdapter ) {\n\t\tsuper();\n\n\t\tthis.id = uid();\n\t\tthis._filePromiseWrapper = this._createFilePromiseWrapper( filePromise );\n\t\tthis._adapter = uploadAdapterCreator( this );\n\t\tthis._reader = new FileReader();\n\n\t\tthis.set( 'status', 'idle' );\n\t\tthis.set( 'uploaded', 0 );\n\t\tthis.set( 'uploadTotal', null );\n\n\t\tthis.bind( 'uploadedPercent' ).to( this, 'uploaded', this, 'uploadTotal', ( uploaded, total ) => {\n\t\t\treturn total ? ( uploaded / total * 100 ) : 0;\n\t\t} );\n\n\t\tthis.set( 'uploadResponse', null );\n\t}\n\n\t/**\n\t * A `Promise` which resolves to a `File` instance associated with this file loader.\n\t */\n\tpublic get file(): Promise<File | null> {\n\t\tif ( !this._filePromiseWrapper ) {\n\t\t\t// Loader was destroyed, return promise which resolves to null.\n\t\t\treturn Promise.resolve( null );\n\t\t} else {\n\t\t\t// The `this._filePromiseWrapper.promise` is chained and not simply returned to handle a case when:\n\t\t\t//\n\t\t\t//\t\t* The `loader.file.then( ... )` is called by external code (returned promise is pending).\n\t\t\t//\t\t* Then `loader._destroy()` is called (call is synchronous) which destroys the `loader`.\n\t\t\t//\t\t* Promise returned by the first `loader.file.then( ... )` call is resolved.\n\t\t\t//\n\t\t\t// Returning `this._filePromiseWrapper.promise` will still resolve to a `File` instance so there\n\t\t\t// is an additional check needed in the chain to see if `loader` was destroyed in the meantime.\n\t\t\treturn this._filePromiseWrapper.promise.then( file => this._filePromiseWrapper ? file : null );\n\t\t}\n\t}\n\n\t/**\n\t * Returns the file data. To read its data, you need for first load the file\n\t * by using the {@link module:upload/filerepository~FileLoader#read `read()`} method.\n\t */\n\tpublic get data(): string | undefined {\n\t\treturn this._reader.data;\n\t}\n\n\t/**\n\t * Reads file using {@link module:upload/filereader~FileReader}.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `filerepository-read-wrong-status` when status\n\t * is different than `idle`.\n\t *\n\t * Example usage:\n\t *\n\t * ```ts\n\t * fileLoader.read()\n\t * \t.then( data => { ... } )\n\t * \t.catch( err => {\n\t * \t\tif ( err === 'aborted' ) {\n\t * \t\t\tconsole.log( 'Reading aborted.' );\n\t * \t\t} else {\n\t * \t\t\tconsole.log( 'Reading error.', err );\n\t * \t\t}\n\t * \t} );\n\t * ```\n\t *\n\t * @returns Returns promise that will be resolved with read data. Promise will be rejected if error\n\t * occurs or if read process is aborted.\n\t */\n\tpublic read(): Promise<string> {\n\t\tif ( this.status != 'idle' ) {\n\t\t\t/**\n\t\t\t * You cannot call read if the status is different than idle.\n\t\t\t *\n\t\t\t * @error filerepository-read-wrong-status\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'filerepository-read-wrong-status', this );\n\t\t}\n\n\t\tthis.status = 'reading';\n\n\t\treturn this.file\n\t\t\t.then( file => this._reader.read( file! ) )\n\t\t\t.then( data => {\n\t\t\t\t// Edge case: reader was aborted after file was read - double check for proper status.\n\t\t\t\t// It can happen when image was deleted during its upload.\n\t\t\t\tif ( this.status !== 'reading' ) {\n\t\t\t\t\tthrow this.status;\n\t\t\t\t}\n\n\t\t\t\tthis.status = 'idle';\n\n\t\t\t\treturn data;\n\t\t\t} )\n\t\t\t.catch( err => {\n\t\t\t\tif ( err === 'aborted' ) {\n\t\t\t\t\tthis.status = 'aborted';\n\t\t\t\t\tthrow 'aborted';\n\t\t\t\t}\n\n\t\t\t\tthis.status = 'error';\n\t\t\t\tthrow this._reader.error ? this._reader.error : err;\n\t\t\t} );\n\t}\n\n\t/**\n\t * Reads file using the provided {@link module:upload/filerepository~UploadAdapter}.\n\t *\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `filerepository-upload-wrong-status` when status\n\t * is different than `idle`.\n\t * Example usage:\n\t *\n\t * ```ts\n\t * fileLoader.upload()\n\t * \t.then( data => { ... } )\n\t * \t.catch( e => {\n\t * \t\tif ( e === 'aborted' ) {\n\t * \t\t\tconsole.log( 'Uploading aborted.' );\n\t * \t\t} else {\n\t * \t\t\tconsole.log( 'Uploading error.', e );\n\t * \t\t}\n\t * \t} );\n\t * ```\n\t *\n\t * @returns Returns promise that will be resolved with response data. Promise will be rejected if error\n\t * occurs or if read process is aborted.\n\t */\n\tpublic upload(): Promise<UploadResponse> {\n\t\tif ( this.status != 'idle' ) {\n\t\t\t/**\n\t\t\t * You cannot call upload if the status is different than idle.\n\t\t\t *\n\t\t\t * @error filerepository-upload-wrong-status\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'filerepository-upload-wrong-status', this );\n\t\t}\n\n\t\tthis.status = 'uploading';\n\n\t\treturn this.file\n\t\t\t.then( () => this._adapter.upload() )\n\t\t\t.then( data => {\n\t\t\t\tthis.uploadResponse = data;\n\t\t\t\tthis.status = 'idle';\n\n\t\t\t\treturn data;\n\t\t\t} )\n\t\t\t.catch( err => {\n\t\t\t\tif ( this.status === 'aborted' ) {\n\t\t\t\t\tthrow 'aborted';\n\t\t\t\t}\n\n\t\t\t\tthis.status = 'error';\n\t\t\t\tthrow err;\n\t\t\t} );\n\t}\n\n\t/**\n\t * Aborts loading process.\n\t */\n\tpublic abort(): void {\n\t\tconst status = this.status;\n\t\tthis.status = 'aborted';\n\n\t\tif ( !this._filePromiseWrapper.isFulfilled ) {\n\t\t\t// Edge case: file loader is aborted before read() is called\n\t\t\t// so it might happen that no one handled the rejection of this promise.\n\t\t\t// See https://github.com/ckeditor/ckeditor5-upload/pull/100\n\t\t\tthis._filePromiseWrapper.promise.catch( () => {} );\n\n\t\t\tthis._filePromiseWrapper.rejecter( 'aborted' );\n\t\t} else if ( status == 'reading' ) {\n\t\t\tthis._reader.abort();\n\t\t} else if ( status == 'uploading' && this._adapter.abort ) {\n\t\t\tthis._adapter.abort();\n\t\t}\n\n\t\tthis._destroy();\n\t}\n\n\t/**\n\t * Performs cleanup.\n\t *\n\t * @internal\n\t */\n\tpublic _destroy(): void {\n\t\tthis._filePromiseWrapper = undefined as any;\n\t\tthis._reader = undefined as any;\n\t\tthis._adapter = undefined as any;\n\t\tthis.uploadResponse = undefined;\n\t}\n\n\t/**\n\t * Wraps a given file promise into another promise giving additional\n\t * control (resolving, rejecting, checking if fulfilled) over it.\n\t *\n\t * @param filePromise The initial file promise to be wrapped.\n\t */\n\tprivate _createFilePromiseWrapper( filePromise: Promise<File> ): FilePromiseWrapper {\n\t\tconst wrapper: Partial<FilePromiseWrapper> = {};\n\n\t\twrapper.promise = new Promise<File>( ( resolve, reject ) => {\n\t\t\twrapper.rejecter = reject;\n\t\t\twrapper.isFulfilled = false;\n\n\t\t\tfilePromise\n\t\t\t\t.then( file => {\n\t\t\t\t\twrapper.isFulfilled = true;\n\t\t\t\t\tresolve( file );\n\t\t\t\t} )\n\t\t\t\t.catch( err => {\n\t\t\t\t\twrapper.isFulfilled = true;\n\t\t\t\t\treject( err );\n\t\t\t\t} );\n\t\t} );\n\n\t\treturn wrapper as FilePromiseWrapper;\n\t}\n}\n\nexport type { FileLoader };\n\n/**\n * Upload adapter interface used by the {@link module:upload/filerepository~FileRepository file repository}\n * to handle file upload. An upload adapter is a bridge between the editor and server that handles file uploads.\n * It should contain a logic necessary to initiate an upload process and monitor its progress.\n *\n * Learn how to develop your own upload adapter for CKEditor 5 in the\n * {@glink framework/deep-dive/upload-adapter \"Custom upload adapter\"} guide.\n *\n * @interface UploadAdapter\n */\nexport interface UploadAdapter {\n\n\t/**\n\t * Executes the upload process.\n\t * This method should return a promise that will resolve when data will be uploaded to server. Promise should be\n\t * resolved with an object containing information about uploaded file:\n\t *\n\t * ```json\n\t * {\n\t * \tdefault: 'http://server/default-size.image.png'\n\t * }\n\t * ```\n\t *\n\t * Additionally, other image sizes can be provided:\n\t *\n\t * ```json\n\t * {\n\t * \tdefault: 'http://server/default-size.image.png',\n\t * \t'160': 'http://server/size-160.image.png',\n\t * \t'500': 'http://server/size-500.image.png',\n\t * \t'1000': 'http://server/size-1000.image.png',\n\t * \t'1052': 'http://server/default-size.image.png'\n\t * }\n\t * ```\n\t *\n\t * You can also pass additional properties from the server. In this case you need to wrap URLs\n\t * in the `urls` object and pass additional properties along the `urls` property.\n\t *\n\t * ```json\n\t * {\n\t * \tmyCustomProperty: 'foo',\n\t * \turls: {\n\t * \t\tdefault: 'http://server/default-size.image.png',\n\t * \t\t'160': 'http://server/size-160.image.png',\n\t * \t\t'500': 'http://server/size-500.image.png',\n\t * \t\t'1000': 'http://server/size-1000.image.png',\n\t * \t\t'1052': 'http://server/default-size.image.png'\n\t * \t}\n\t * }\n\t * ```\n\t *\n\t * NOTE: When returning multiple images, the widest returned one should equal the default one. It is essential to\n\t * correctly set `width` attribute of the image. See this discussion:\n\t * https://github.com/ckeditor/ckeditor5-easy-image/issues/4 for more information.\n\t *\n\t * Take a look at {@link module:upload/filerepository~UploadAdapter example Adapter implementation} and\n\t * {@link module:upload/filerepository~FileRepository#createUploadAdapter createUploadAdapter method}.\n\t *\n\t * @returns Promise that should be resolved when data is uploaded.\n\t */\n\tupload(): Promise<UploadResponse>;\n\n\t/**\n\t * Aborts the upload process.\n\t * After aborting it should reject promise returned from {@link #upload upload()}.\n\t *\n\t * Take a look at {@link module:upload/filerepository~UploadAdapter example Adapter implementation} and\n\t * {@link module:upload/filerepository~FileRepository#createUploadAdapter createUploadAdapter method}.\n\t */\n\tabort?(): void;\n}\n\nexport type UploadResponse = Record<string, unknown>;\n\n/**\n * Object returned by {@link module:upload/filerepository~FileLoader#_createFilePromiseWrapper} method\n * to add more control over the initial file promise passed to {@link module:upload/filerepository~FileLoader}.\n */\ntype FilePromiseWrapper = {\n\n\t/**\n\t * Wrapper promise which can be chained for further processing.\n\t */\n\tpromise: Promise<File>;\n\n\t/**\n\t * Rejects the promise when called.\n\t */\n\trejecter: ( reason?: unknown ) => void;\n\n\t/**\n\t * Whether original promise is already fulfilled.\n\t */\n\tisFulfilled: boolean;\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module upload/ui/filedialogbuttonview\n */\n\nimport { ButtonView, View, type ButtonExecuteEvent } from '@ckeditor/ckeditor5-ui';\n\nimport type { Locale } from '@ckeditor/ckeditor5-utils';\n\n/**\n * The file dialog button view.\n *\n * This component provides a button that opens the native file selection dialog.\n * It can be used to implement the UI of a file upload feature.\n *\n * ```ts\n * const view = new FileDialogButtonView( locale );\n *\n * view.set( {\n * \tacceptedType: 'image/*',\n * \tallowMultipleFiles: true\n * } );\n *\n * view.buttonView.set( {\n * \tlabel: t( 'Insert image' ),\n * \ticon: imageIcon,\n * \ttooltip: true\n * } );\n *\n * view.on( 'done', ( evt, files ) => {\n * \tfor ( const file of Array.from( files ) ) {\n * \t\tconsole.log( 'Selected file', file );\n * \t}\n * } );\n * ```\n */\nexport default class FileDialogButtonView extends View {\n\t/**\n\t * The button view of the component.\n\t */\n\tpublic buttonView: ButtonView;\n\n\t/**\n\t * A hidden `<input>` view used to execute file dialog.\n\t */\n\tprivate _fileInputView: FileInputView;\n\n\t/**\n\t * Accepted file types. Can be provided in form of file extensions, media type or one of:\n\t * * `audio/*`,\n\t * * `video/*`,\n\t * * `image/*`.\n\t *\n\t * @observable\n\t */\n\tdeclare public acceptedType: string;\n\n\t/**\n\t * Indicates if multiple files can be selected. Defaults to `true`.\n\t *\n\t * @observable\n\t */\n\tdeclare public allowMultipleFiles: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.buttonView = new ButtonView( locale );\n\n\t\tthis._fileInputView = new FileInputView( locale );\n\t\tthis._fileInputView.bind( 'acceptedType' ).to( this );\n\t\tthis._fileInputView.bind( 'allowMultipleFiles' ).to( this );\n\n\t\tthis._fileInputView.delegate( 'done' ).to( this );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'span',\n\t\t\tattributes: {\n\t\t\t\tclass: 'ck-file-dialog-button'\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\tthis.buttonView,\n\t\t\t\tthis._fileInputView\n\t\t\t]\n\t\t} );\n\n\t\tthis.buttonView.on<ButtonExecuteEvent>( 'execute', () => {\n\t\t\tthis._fileInputView.open();\n\t\t} );\n\t}\n\n\t/**\n\t * Focuses the {@link #buttonView}.\n\t */\n\tpublic focus(): void {\n\t\tthis.buttonView.focus();\n\t}\n}\n\n/**\n * The hidden file input view class.\n */\nclass FileInputView extends View<HTMLInputElement> {\n\t/**\n\t * Accepted file types. Can be provided in form of file extensions, media type or one of:\n\t * * `audio/*`,\n\t * * `video/*`,\n\t * * `image/*`.\n\t *\n\t * @observable\n\t */\n\tdeclare public acceptedType?: string;\n\n\t/**\n\t * Indicates if multiple files can be selected. Defaults to `false`.\n\t *\n\t * @observable\n\t */\n\tdeclare public allowMultipleFiles: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale?: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.set( 'acceptedType', undefined );\n\t\tthis.set( 'allowMultipleFiles', false );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'input',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck-hidden'\n\t\t\t\t],\n\t\t\t\ttype: 'file',\n\t\t\t\ttabindex: '-1',\n\t\t\t\taccept: bind.to( 'acceptedType' ),\n\t\t\t\tmultiple: bind.to( 'allowMultipleFiles' )\n\t\t\t},\n\n\t\t\ton: {\n\t\t\t\t// Removing from code coverage since we cannot programmatically set input element files.\n\t\t\t\tchange: bind.to( /* istanbul ignore next -- @preserve */ () => {\n\t\t\t\t\tif ( this.element && this.element.files && this.element.files.length ) {\n\t\t\t\t\t\tthis.fire<FileInputViewDoneEvent>( 'done', this.element.files );\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.element!.value = '';\n\t\t\t\t} )\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Opens file dialog.\n\t */\n\tpublic open(): void {\n\t\tthis.element!.click();\n\t}\n}\n\n/**\n * Fired when file dialog is closed with file selected.\n *\n * ```ts\n * view.on( 'done', ( evt, files ) => {\n * \tfor ( const file of files ) {\n * \t\tconsole.log( 'Selected file', file );\n * \t}\n * }\n * ```\n */\nexport type FileInputViewDoneEvent = {\n\tname: 'done';\n\targs: [ files: FileList ];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* globals window, document */\n\n/**\n * @module adapter-ckfinder/utils\n */\n\nconst TOKEN_COOKIE_NAME = 'ckCsrfToken';\nconst TOKEN_LENGTH = 40;\nconst tokenCharset = 'abcdefghijklmnopqrstuvwxyz0123456789';\n\n/**\n * Returns the CSRF token value. The value is a hash stored in `document.cookie`\n * under the `ckCsrfToken` key. The CSRF token can be used to secure the communication\n * between the web browser and the CKFinder server.\n */\nexport function getCsrfToken(): string {\n\tlet token = getCookie( TOKEN_COOKIE_NAME );\n\n\tif ( !token || token.length != TOKEN_LENGTH ) {\n\t\ttoken = generateToken( TOKEN_LENGTH );\n\t\tsetCookie( TOKEN_COOKIE_NAME, token );\n\t}\n\n\treturn token;\n}\n\n/**\n * Returns the value of the cookie with a given name or `null` if the cookie is not found.\n */\nexport function getCookie( name: string ): string | null {\n\tname = name.toLowerCase();\n\tconst parts = document.cookie.split( ';' );\n\n\tfor ( const part of parts ) {\n\t\tconst pair = part.split( '=' );\n\t\tconst key = decodeURIComponent( pair[ 0 ].trim().toLowerCase() );\n\n\t\tif ( key === name ) {\n\t\t\treturn decodeURIComponent( pair[ 1 ] );\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Sets the value of the cookie with a given name.\n */\nexport function setCookie( name: string, value: string ): void {\n\tdocument.cookie = encodeURIComponent( name ) + '=' + encodeURIComponent( value ) + ';path=/';\n}\n\n/**\n * Generates the CSRF token with the given length.\n */\nfunction generateToken( length: number ): string {\n\tlet result = '';\n\tconst randValues = new Uint8Array( length );\n\n\twindow.crypto.getRandomValues( randValues );\n\n\tfor ( let j = 0; j < randValues.length; j++ ) {\n\t\tconst character = tokenCharset.charAt( randValues[ j ] % tokenCharset.length );\n\t\tresult += Math.random() > 0.5 ? character.toUpperCase() : character;\n\t}\n\n\treturn result;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* globals XMLHttpRequest, FormData */\n\n/**\n * @module adapter-ckfinder/uploadadapter\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport {\n\tFileRepository,\n\ttype UploadAdapter as UploadAdapterInterface,\n\ttype FileLoader,\n\ttype UploadResponse\n} from 'ckeditor5/src/upload';\nimport type { LocaleTranslate } from 'ckeditor5/src/utils';\n\nimport { getCsrfToken } from './utils';\n\n/**\n * A plugin that enables file uploads in CKEditor 5 using the CKFinder server–side connector.\n *\n * See the {@glink features/file-management/ckfinder \"CKFinder file manager integration\"} guide to learn how to configure\n * and use this feature as well as find out more about the full integration with the file manager\n * provided by the {@link module:ckfinder/ckfinder~CKFinder} plugin.\n *\n * Check out the {@glink features/images/image-upload/image-upload comprehensive \"Image upload overview\"} guide to learn\n * about other ways to upload images into CKEditor 5.\n */\nexport default class CKFinderUploadAdapter extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ FileRepository ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'CKFinderUploadAdapter' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst url = this.editor.config.get( 'ckfinder.uploadUrl' )! as string;\n\n\t\tif ( !url ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Register CKFinderAdapter\n\t\tthis.editor.plugins.get( FileRepository ).createUploadAdapter = loader => new UploadAdapter( loader, url, this.editor.t );\n\t}\n}\n\n/**\n * Upload adapter for CKFinder.\n */\nclass UploadAdapter implements UploadAdapterInterface {\n\t/**\n\t * FileLoader instance to use during the upload.\n\t */\n\tpublic loader: FileLoader;\n\n\t/**\n\t * Upload URL.\n\t */\n\tpublic url: string;\n\n\t/**\n\t * Locale translation method.\n\t */\n\tpublic t: LocaleTranslate;\n\n\tprivate xhr?: XMLHttpRequest;\n\n\t/**\n\t * Creates a new adapter instance.\n\t */\n\tconstructor( loader: FileLoader, url: string, t: LocaleTranslate ) {\n\t\tthis.loader = loader;\n\t\tthis.url = url;\n\t\tthis.t = t;\n\t}\n\n\t/**\n\t * Starts the upload process.\n\t *\n\t * @see module:upload/filerepository~UploadAdapter#upload\n\t */\n\tpublic upload() {\n\t\treturn this.loader.file.then( file => {\n\t\t\treturn new Promise<UploadResponse>( ( resolve, reject ) => {\n\t\t\t\tthis._initRequest();\n\t\t\t\tthis._initListeners( resolve, reject, file! );\n\t\t\t\tthis._sendRequest( file! );\n\t\t\t} );\n\t\t} );\n\t}\n\n\t/**\n\t * Aborts the upload process.\n\t *\n\t * @see module:upload/filerepository~UploadAdapter#abort\n\t */\n\tpublic abort() {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\t}\n\n\t/**\n\t * Initializes the XMLHttpRequest object.\n\t */\n\tprivate _initRequest() {\n\t\tconst xhr = this.xhr = new XMLHttpRequest();\n\n\t\txhr.open( 'POST', this.url, true );\n\t\txhr.responseType = 'json';\n\t}\n\n\t/**\n\t * Initializes XMLHttpRequest listeners.\n\t *\n\t * @param resolve Callback function to be called when the request is successful.\n\t * @param reject Callback function to be called when the request cannot be completed.\n\t * @param file File instance to be uploaded.\n\t */\n\tprivate _initListeners(\n\t\tresolve: ( value: UploadResponse ) => void,\n\t\treject: ( reason?: unknown ) => void,\n\t\tfile: File\n\t) {\n\t\tconst xhr = this.xhr!;\n\t\tconst loader = this.loader;\n\t\tconst t = this.t;\n\t\tconst genericError = t( 'Cannot upload file:' ) + ` ${ file.name }.`;\n\n\t\txhr.addEventListener( 'error', () => reject( genericError ) );\n\t\txhr.addEventListener( 'abort', () => reject() );\n\t\txhr.addEventListener( 'load', () => {\n\t\t\tconst response = xhr.response;\n\n\t\t\tif ( !response || !response.uploaded ) {\n\t\t\t\treturn reject( response && response.error && response.error.message ? response.error.message : genericError );\n\t\t\t}\n\n\t\t\tresolve( {\n\t\t\t\tdefault: response.url\n\t\t\t} );\n\t\t} );\n\n\t\t// Upload progress when it's supported.\n\t\t/* istanbul ignore else -- @preserve */\n\t\tif ( xhr.upload ) {\n\t\t\txhr.upload.addEventListener( 'progress', evt => {\n\t\t\t\tif ( evt.lengthComputable ) {\n\t\t\t\t\tloader.uploadTotal = evt.total;\n\t\t\t\t\tloader.uploaded = evt.loaded;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Prepares the data and sends the request.\n\t *\n\t * @param file File instance to be uploaded.\n\t */\n\tprivate _sendRequest( file: File ) {\n\t\t// Prepare form data.\n\t\tconst data = new FormData();\n\t\tdata.append( 'upload', file );\n\t\tdata.append( 'ckCsrfToken', getCsrfToken() );\n\n\t\t// Send request.\n\t\tthis.xhr!.send( data );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport type { Command, Editor } from 'ckeditor5/src/core';\n\nimport {\n\tLiveRange,\n\ttype DocumentChangeEvent,\n\ttype Item,\n\ttype Text\n} from 'ckeditor5/src/engine';\n\nimport { first } from 'ckeditor5/src/utils';\n\nimport type Autoformat from './autoformat';\n\nimport type { Delete } from 'ckeditor5/src/typing';\n\n/**\n * The block autoformatting engine. It allows to format various block patterns. For example,\n * it can be configured to turn a paragraph starting with `*` and followed by a space into a list item.\n *\n * The autoformatting operation is integrated with the undo manager,\n * so the autoformatting step can be undone if the user's intention was not to format the text.\n *\n * See the {@link module:autoformat/blockautoformatediting~blockAutoformatEditing `blockAutoformatEditing`} documentation\n * to learn how to create custom block autoformatters. You can also use\n * the {@link module:autoformat/autoformat~Autoformat} feature which enables a set of default autoformatters\n * (lists, headings, bold and italic).\n *\n * @module autoformat/blockautoformatediting\n */\n\n/**\n * Creates a listener triggered on {@link module:engine/model/document~Document#event:change:data `change:data`} event in the document.\n * Calls the callback when inserted text matches the regular expression or the command name\n * if provided instead of the callback.\n *\n * Examples of usage:\n *\n * To convert a paragraph into heading 1 when `- ` is typed, using just the command name:\n *\n * ```ts\n * blockAutoformatEditing( editor, plugin, /^\\- $/, 'heading1' );\n * ```\n *\n * To convert a paragraph into heading 1 when `- ` is typed, using just the callback:\n *\n * ```ts\n * blockAutoformatEditing( editor, plugin, /^\\- $/, ( context ) => {\n * \tconst { match } = context;\n * \tconst headingLevel = match[ 1 ].length;\n *\n * \teditor.execute( 'heading', {\n * \t\tformatId: `heading${ headingLevel }`\n * \t} );\n * } );\n * ```\n *\n * @param editor The editor instance.\n * @param plugin The autoformat plugin instance.\n * @param pattern The regular expression to execute on just inserted text. The regular expression is tested against the text\n * from the beginning until the caret position.\n * @param callbackOrCommand The callback to execute or the command to run when the text is matched.\n * In case of providing the callback, it receives the following parameter:\n * * match RegExp.exec() result of matching the pattern to inserted text.\n */\nexport default function blockAutoformatEditing(\n\teditor: Editor,\n\tplugin: Autoformat,\n\tpattern: RegExp,\n\tcallbackOrCommand: string | ( ( context: { match: RegExpExecArray } ) => unknown )\n): void {\n\tlet callback: ( context: { match: RegExpExecArray } ) => unknown;\n\tlet command: Command | null = null;\n\n\tif ( typeof callbackOrCommand == 'function' ) {\n\t\tcallback = callbackOrCommand;\n\t} else {\n\t\t// We assume that the actual command name was provided.\n\t\tcommand = editor.commands.get( callbackOrCommand )!;\n\n\t\tcallback = () => {\n\t\t\teditor.execute( callbackOrCommand );\n\t\t};\n\t}\n\n\teditor.model.document.on<DocumentChangeEvent>( 'change:data', ( evt, batch ) => {\n\t\tif ( command && !command.isEnabled || !plugin.isEnabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst range = first( editor.model.document.selection.getRanges() )!;\n\n\t\tif ( !range.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( batch.isUndo || !batch.isLocal ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst changes = Array.from( editor.model.document.differ.getChanges() );\n\t\tconst entry = changes[ 0 ];\n\n\t\t// Typing is represented by only a single change.\n\t\tif ( changes.length != 1 || entry.type !== 'insert' || entry.name != '$text' || entry.length != 1 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst blockToFormat = entry.position.parent;\n\n\t\t// Block formatting should be disabled in codeBlocks (#5800).\n\t\tif ( blockToFormat.is( 'element', 'codeBlock' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Only list commands and custom callbacks can be applied inside a list.\n\t\tif ( blockToFormat.is( 'element', 'listItem' ) &&\n\t\t\ttypeof callbackOrCommand !== 'function' &&\n\t\t\t![ 'numberedList', 'bulletedList', 'todoList' ].includes( callbackOrCommand )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// In case a command is bound, do not re-execute it over an existing block style which would result in a style removal.\n\t\t// Instead, just drop processing so that autoformat trigger text is not lost. E.g. writing \"# \" in a level 1 heading.\n\t\tif ( command && command.value === true ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst firstNode = blockToFormat.getChild( 0 ) as Text;\n\n\t\tconst firstNodeRange = editor.model.createRangeOn( firstNode );\n\n\t\t// Range is only expected to be within or at the very end of the first text node.\n\t\tif ( !firstNodeRange.containsRange( range ) && !range.end.isEqual( firstNodeRange.end ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst match = pattern.exec( firstNode.data.substr( 0, range.end.offset ) );\n\n\t\t// ...and this text node's data match the pattern.\n\t\tif ( !match ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Use enqueueChange to create new batch to separate typing batch from the auto-format changes.\n\t\teditor.model.enqueueChange( writer => {\n\t\t\t// Matched range.\n\t\t\tconst start = writer.createPositionAt( blockToFormat, 0 );\n\t\t\tconst end = writer.createPositionAt( blockToFormat, match[ 0 ].length );\n\t\t\tconst range = new LiveRange( start, end );\n\n\t\t\tconst wasChanged = callback( { match } );\n\n\t\t\t// Remove matched text.\n\t\t\tif ( wasChanged !== false ) {\n\t\t\t\twriter.remove( range );\n\n\t\t\t\tconst selectionRange = editor.model.document.selection.getFirstRange()!;\n\t\t\t\tconst blockRange = writer.createRangeIn( blockToFormat );\n\n\t\t\t\t// If the block is empty and the document selection has been moved when\n\t\t\t\t// applying formatting (e.g. is now in newly created block).\n\t\t\t\tif ( blockToFormat.isEmpty && !blockRange.isEqual( selectionRange ) && !blockRange.containsRange( selectionRange, true ) ) {\n\t\t\t\t\twriter.remove( blockToFormat as Item );\n\t\t\t\t}\n\t\t\t}\n\t\t\trange.detach();\n\n\t\t\teditor.model.enqueueChange( () => {\n\t\t\t\tconst deletePlugin: Delete = editor.plugins.get( 'Delete' );\n\n\t\t\t\tdeletePlugin.requestUndoOnBackspace();\n\t\t\t} );\n\t\t} );\n\t} );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * The inline autoformatting engine. It allows to format various inline patterns. For example,\n * it can be configured to make \"foo\" bold when typed `**foo**` (the `**` markers will be removed).\n *\n * The autoformatting operation is integrated with the undo manager,\n * so the autoformatting step can be undone if the user's intention was not to format the text.\n *\n * See the {@link module:autoformat/inlineautoformatediting~inlineAutoformatEditing `inlineAutoformatEditing`} documentation\n * to learn how to create custom inline autoformatters. You can also use\n * the {@link module:autoformat/autoformat~Autoformat} feature which enables a set of default autoformatters\n * (lists, headings, bold and italic).\n *\n * @module autoformat/inlineautoformatediting\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\nimport type {\n\tDocumentChangeEvent,\n\tModel,\n\tPosition,\n\tRange,\n\tWriter\n} from 'ckeditor5/src/engine';\nimport type { Delete, LastTextLineData } from 'ckeditor5/src/typing';\n\nimport type Autoformat from './autoformat';\n\nexport type TestCallback = ( text: string ) => {\n\tremove: Array<Array<number>>;\n\tformat: Array<Array<number>>;\n};\n\n/**\n * Enables autoformatting mechanism for a given {@link module:core/editor/editor~Editor}.\n *\n * It formats the matched text by applying the given model attribute or by running the provided formatting callback.\n * On every {@link module:engine/model/document~Document#event:change:data data change} in the model document\n * the autoformatting engine checks the text on the left of the selection\n * and executes the provided action if the text matches given criteria (regular expression or callback).\n *\n * @param editor The editor instance.\n * @param plugin The autoformat plugin instance.\n * @param testRegexpOrCallback The regular expression or callback to execute on text.\n * Provided regular expression *must* have three capture groups. The first and the third capture group\n * should match opening and closing delimiters. The second capture group should match the text to format.\n *\n * ```ts\n * // Matches the `**bold text**` pattern.\n * // There are three capturing groups:\n * // - The first to match the starting `**` delimiter.\n * // - The second to match the text to format.\n * // - The third to match the ending `**` delimiter.\n * inlineAutoformatEditing( editor, plugin, /(\\*\\*)([^\\*]+?)(\\*\\*)$/g, formatCallback );\n * ```\n *\n * When a function is provided instead of the regular expression, it will be executed with the text to match as a parameter.\n * The function should return proper \"ranges\" to delete and format.\n *\n * ```ts\n * {\n * \tremove: [\n * \t\t[ 0, 1 ],\t// Remove the first letter from the given text.\n * \t\t[ 5, 6 ]\t// Remove the 6th letter from the given text.\n * \t],\n * \tformat: [\n * \t\t[ 1, 5 ]\t// Format all letters from 2nd to 5th.\n * \t]\n * }\n * ```\n *\n * @param formatCallback A callback to apply actual formatting.\n * It should return `false` if changes should not be applied (e.g. if a command is disabled).\n *\n * ```ts\n * inlineAutoformatEditing( editor, plugin, /(\\*\\*)([^\\*]+?)(\\*\\*)$/g, ( writer, rangesToFormat ) => {\n * \tconst command = editor.commands.get( 'bold' );\n *\n * \tif ( !command.isEnabled ) {\n * \t\treturn false;\n * \t}\n *\n * \tconst validRanges = editor.model.schema.getValidRanges( rangesToFormat, 'bold' );\n *\n * \tfor ( let range of validRanges ) {\n * \t\twriter.setAttribute( 'bold', true, range );\n * \t}\n * } );\n * ```\n */\nexport default function inlineAutoformatEditing(\n\teditor: Editor,\n\tplugin: Autoformat,\n\ttestRegexpOrCallback: RegExp | TestCallback,\n\tformatCallback: ( writer: Writer, rangesToFormat: Array<Range> ) => boolean | undefined\n): void {\n\tlet regExp: RegExp;\n\tlet testCallback: TestCallback | undefined;\n\n\tif ( testRegexpOrCallback instanceof RegExp ) {\n\t\tregExp = testRegexpOrCallback;\n\t} else {\n\t\ttestCallback = testRegexpOrCallback;\n\t}\n\n\t// A test callback run on changed text.\n\ttestCallback = testCallback || ( text => {\n\t\tlet result: RegExpExecArray | null;\n\t\tconst remove: Array<Array<number>> = [];\n\t\tconst format: Array<Array<number>> = [];\n\n\t\twhile ( ( result = regExp.exec( text ) ) !== null ) {\n\t\t\t// There should be full match and 3 capture groups.\n\t\t\tif ( result && result.length < 4 ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tlet {\n\t\t\t\tindex,\n\t\t\t\t'1': leftDel,\n\t\t\t\t'2': content,\n\t\t\t\t'3': rightDel\n\t\t\t} = result;\n\n\t\t\t// Real matched string - there might be some non-capturing groups so we need to recalculate starting index.\n\t\t\tconst found = leftDel + content + rightDel;\n\t\t\tindex += result[ 0 ].length - found.length;\n\n\t\t\t// Start and End offsets of delimiters to remove.\n\t\t\tconst delStart = [\n\t\t\t\tindex,\n\t\t\t\tindex + leftDel.length\n\t\t\t];\n\t\t\tconst delEnd = [\n\t\t\t\tindex + leftDel.length + content.length,\n\t\t\t\tindex + leftDel.length + content.length + rightDel.length\n\t\t\t];\n\n\t\t\tremove.push( delStart );\n\t\t\tremove.push( delEnd );\n\n\t\t\tformat.push( [ index + leftDel.length, index + leftDel.length + content.length ] );\n\t\t}\n\n\t\treturn {\n\t\t\tremove,\n\t\t\tformat\n\t\t};\n\t} );\n\n\teditor.model.document.on<DocumentChangeEvent>( 'change:data', ( evt, batch ) => {\n\t\tif ( batch.isUndo || !batch.isLocal || !plugin.isEnabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\n\t\t// Do nothing if selection is not collapsed.\n\t\tif ( !selection.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst changes = Array.from( model.document.differ.getChanges() );\n\t\tconst entry = changes[ 0 ];\n\n\t\t// Typing is represented by only a single change.\n\t\tif ( changes.length != 1 || entry.type !== 'insert' || entry.name != '$text' || entry.length != 1 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst focus = selection.focus;\n\t\tconst block = focus!.parent;\n\t\tconst { text, range } = getTextAfterCode( model.createRange( model.createPositionAt( block, 0 ), focus! ), model );\n\t\tconst testOutput = testCallback!( text );\n\t\tconst rangesToFormat = testOutputToRanges( range.start, testOutput.format, model );\n\t\tconst rangesToRemove = testOutputToRanges( range.start, testOutput.remove, model );\n\n\t\tif ( !( rangesToFormat.length && rangesToRemove.length ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Use enqueueChange to create new batch to separate typing batch from the auto-format changes.\n\t\tmodel.enqueueChange( writer => {\n\t\t\t// Apply format.\n\t\t\tconst hasChanged = formatCallback( writer, rangesToFormat );\n\n\t\t\t// Strict check on `false` to have backward compatibility (when callbacks were returning `undefined`).\n\t\t\tif ( hasChanged === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Remove delimiters - use reversed order to not mix the offsets while removing.\n\t\t\tfor ( const range of rangesToRemove.reverse() ) {\n\t\t\t\twriter.remove( range );\n\t\t\t}\n\n\t\t\tmodel.enqueueChange( () => {\n\t\t\t\tconst deletePlugin: Delete = editor.plugins.get( 'Delete' );\n\n\t\t\t\tdeletePlugin.requestUndoOnBackspace();\n\t\t\t} );\n\t\t} );\n\t} );\n}\n\n/**\n * Converts output of the test function provided to the inlineAutoformatEditing and converts it to the model ranges\n * inside provided block.\n */\nfunction testOutputToRanges( start: Position, arrays: Array<Array<number>>, model: Model ) {\n\treturn arrays\n\t\t.filter( array => ( array[ 0 ] !== undefined && array[ 1 ] !== undefined ) )\n\t\t.map( array => {\n\t\t\treturn model.createRange( start.getShiftedBy( array[ 0 ] ), start.getShiftedBy( array[ 1 ] ) );\n\t\t} );\n}\n\n/**\n * Returns the last text line after the last code element from the given range.\n * It is similar to {@link module:typing/utils/getlasttextline.getLastTextLine `getLastTextLine()`},\n * but it ignores any text before the last `code`.\n */\nfunction getTextAfterCode( range: Range, model: Model ): LastTextLineData {\n\tlet start = range.start;\n\n\tconst text = Array.from( range.getItems() ).reduce( ( rangeText, node ) => {\n\t\t// Trim text to a last occurrence of an inline element and update range start.\n\t\tif ( !( node.is( '$text' ) || node.is( '$textProxy' ) ) || node.getAttribute( 'code' ) ) {\n\t\t\tstart = model.createPositionAfter( node );\n\n\t\t\treturn '';\n\t\t}\n\n\t\treturn rangeText + node.data;\n\t}, '' );\n\n\treturn { text, range: model.createRange( start, range.end ) };\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module autoformat/autoformat\n */\nimport type { HeadingCommand } from '@ckeditor/ckeditor5-heading';\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\nimport type { Range, Writer } from 'ckeditor5/src/engine';\nimport { Delete } from 'ckeditor5/src/typing';\n\nimport blockAutoformatEditing from './blockautoformatediting';\nimport inlineAutoformatEditing from './inlineautoformatediting';\n\n/**\n * Enables a set of predefined autoformatting actions.\n *\n * For a detailed overview, check the {@glink features/autoformat Autoformatting} feature guide\n * and the {@glink api/autoformat package page}.\n */\nexport default class Autoformat extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Delete ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Autoformat' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tthis._addListAutoformats();\n\t\tthis._addBasicStylesAutoformats();\n\t\tthis._addHeadingAutoformats();\n\t\tthis._addBlockQuoteAutoformats();\n\t\tthis._addCodeBlockAutoformats();\n\t\tthis._addHorizontalLineAutoformats();\n\t}\n\n\t/**\n\t * Adds autoformatting related to the {@link module:list/list~List}.\n\t *\n\t * When typed:\n\t * - `* ` or `- ` – A paragraph will be changed into a bulleted list.\n\t * - `1. ` or `1) ` – A paragraph will be changed into a numbered list (\"1\" can be any digit or a list of digits).\n\t * - `[] ` or `[ ] ` – A paragraph will be changed into a to-do list.\n\t * - `[x] ` or `[ x ] ` – A paragraph will be changed into a checked to-do list.\n\t */\n\tprivate _addListAutoformats(): void {\n\t\tconst commands = this.editor.commands;\n\n\t\tif ( commands.get( 'bulletedList' ) ) {\n\t\t\tblockAutoformatEditing( this.editor, this, /^[*-]\\s$/, 'bulletedList' );\n\t\t}\n\n\t\tif ( commands.get( 'numberedList' ) ) {\n\t\t\tblockAutoformatEditing( this.editor, this, /^1[.|)]\\s$/, 'numberedList' );\n\t\t}\n\n\t\tif ( commands.get( 'todoList' ) ) {\n\t\t\tblockAutoformatEditing( this.editor, this, /^\\[\\s?\\]\\s$/, 'todoList' );\n\t\t}\n\n\t\tif ( commands.get( 'checkTodoList' ) ) {\n\t\t\tblockAutoformatEditing( this.editor, this, /^\\[\\s?x\\s?\\]\\s$/, () => {\n\t\t\t\tthis.editor.execute( 'todoList' );\n\t\t\t\tthis.editor.execute( 'checkTodoList' );\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Adds autoformatting related to the {@link module:basic-styles/bold~Bold},\n\t * {@link module:basic-styles/italic~Italic}, {@link module:basic-styles/code~Code}\n\t * and {@link module:basic-styles/strikethrough~Strikethrough}\n\t *\n\t * When typed:\n\t * - `**foobar**` – `**` characters are removed and `foobar` is set to bold,\n\t * - `__foobar__` – `__` characters are removed and `foobar` is set to bold,\n\t * - `*foobar*` – `*` characters are removed and `foobar` is set to italic,\n\t * - `_foobar_` – `_` characters are removed and `foobar` is set to italic,\n\t * - ``` `foobar` – ``` ` ``` characters are removed and `foobar` is set to code,\n\t * - `~~foobar~~` – `~~` characters are removed and `foobar` is set to strikethrough.\n\t */\n\tprivate _addBasicStylesAutoformats(): void {\n\t\tconst commands = this.editor.commands;\n\n\t\tif ( commands.get( 'bold' ) ) {\n\t\t\tconst boldCallback = getCallbackFunctionForInlineAutoformat( this.editor, 'bold' );\n\n\t\t\tinlineAutoformatEditing( this.editor, this, /(?:^|\\s)(\\*\\*)([^*]+)(\\*\\*)$/g, boldCallback );\n\t\t\tinlineAutoformatEditing( this.editor, this, /(?:^|\\s)(__)([^_]+)(__)$/g, boldCallback );\n\t\t}\n\n\t\tif ( commands.get( 'italic' ) ) {\n\t\t\tconst italicCallback = getCallbackFunctionForInlineAutoformat( this.editor, 'italic' );\n\n\t\t\t// The italic autoformatter cannot be triggered by the bold markers, so we need to check the\n\t\t\t// text before the pattern (e.g. `(?:^|[^\\*])`).\n\t\t\tinlineAutoformatEditing( this.editor, this, /(?:^|\\s)(\\*)([^*_]+)(\\*)$/g, italicCallback );\n\t\t\tinlineAutoformatEditing( this.editor, this, /(?:^|\\s)(_)([^_]+)(_)$/g, italicCallback );\n\t\t}\n\n\t\tif ( commands.get( 'code' ) ) {\n\t\t\tconst codeCallback = getCallbackFunctionForInlineAutoformat( this.editor, 'code' );\n\n\t\t\tinlineAutoformatEditing( this.editor, this, /(`)([^`]+)(`)$/g, codeCallback );\n\t\t}\n\n\t\tif ( commands.get( 'strikethrough' ) ) {\n\t\t\tconst strikethroughCallback = getCallbackFunctionForInlineAutoformat( this.editor, 'strikethrough' );\n\n\t\t\tinlineAutoformatEditing( this.editor, this, /(~~)([^~]+)(~~)$/g, strikethroughCallback );\n\t\t}\n\t}\n\n\t/**\n\t * Adds autoformatting related to {@link module:heading/heading~Heading}.\n\t *\n\t * It is using a number at the end of the command name to associate it with the proper trigger:\n\t *\n\t * * `heading` with a `heading1` value will be executed when typing `#`,\n\t * * `heading` with a `heading2` value will be executed when typing `##`,\n\t * * ... up to `heading6` for `######`.\n\t */\n\tprivate _addHeadingAutoformats(): void {\n\t\tconst command: HeadingCommand | undefined = this.editor.commands.get( 'heading' );\n\n\t\tif ( command ) {\n\t\t\tcommand.modelElements\n\t\t\t\t.filter( name => name.match( /^heading[1-6]$/ ) )\n\t\t\t\t.forEach( modelName => {\n\t\t\t\t\tconst level = modelName[ 7 ];\n\t\t\t\t\tconst pattern = new RegExp( `^(#{${ level }})\\\\s$` );\n\n\t\t\t\t\tblockAutoformatEditing( this.editor, this, pattern, () => {\n\t\t\t\t\t\t// Should only be active if command is enabled and heading style associated with pattern is inactive.\n\t\t\t\t\t\tif ( !command.isEnabled || command.value === modelName ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.editor.execute( 'heading', { value: modelName } );\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Adds autoformatting related to {@link module:block-quote/blockquote~BlockQuote}.\n\t *\n\t * When typed:\n\t * * `> ` – A paragraph will be changed to a block quote.\n\t */\n\tprivate _addBlockQuoteAutoformats(): void {\n\t\tif ( this.editor.commands.get( 'blockQuote' ) ) {\n\t\t\tblockAutoformatEditing( this.editor, this, /^>\\s$/, 'blockQuote' );\n\t\t}\n\t}\n\n\t/**\n\t * Adds autoformatting related to {@link module:code-block/codeblock~CodeBlock}.\n\t *\n\t * When typed:\n\t * - `` ``` `` – A paragraph will be changed to a code block.\n\t */\n\tprivate _addCodeBlockAutoformats(): void {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\n\t\tif ( editor.commands.get( 'codeBlock' ) ) {\n\t\t\tblockAutoformatEditing( editor, this, /^```$/, () => {\n\t\t\t\tif ( selection.getFirstPosition()!.parent.is( 'element', 'listItem' ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.editor.execute( 'codeBlock', {\n\t\t\t\t\tusePreviousLanguageChoice: true\n\t\t\t\t} );\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Adds autoformatting related to {@link module:horizontal-line/horizontalline~HorizontalLine}.\n\t *\n\t * When typed:\n\t * - `` --- `` – Will be replaced with a horizontal line.\n\t */\n\tprivate _addHorizontalLineAutoformats(): void {\n\t\tif ( this.editor.commands.get( 'horizontalLine' ) ) {\n\t\t\tblockAutoformatEditing( this.editor, this, /^---$/, 'horizontalLine' );\n\t\t}\n\t}\n}\n\n/**\n * Helper function for getting `inlineAutoformatEditing` callbacks that checks if command is enabled.\n */\nfunction getCallbackFunctionForInlineAutoformat( editor: Editor, attributeKey: string ) {\n\treturn ( writer: Writer, rangesToFormat: Array<Range> ): boolean | undefined => {\n\t\tconst command = editor.commands.get( attributeKey )!;\n\n\t\tif ( !command.isEnabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst validRanges = editor.model.schema.getValidRanges( rangesToFormat, attributeKey );\n\n\t\tfor ( const range of validRanges ) {\n\t\t\twriter.setAttribute( attributeKey, true, range );\n\t\t}\n\n\t\t// After applying attribute to the text, remove given attribute from the selection.\n\t\t// This way user is able to type a text without attribute used by auto formatter.\n\t\twriter.removeSelectionAttribute( attributeKey );\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module basic-styles/attributecommand\n */\n\nimport { Command, type Editor } from 'ckeditor5/src/core';\n\n/**\n * An extension of the base {@link module:core/command~Command} class, which provides utilities for a command\n * that toggles a single attribute on a text or an element.\n *\n * `AttributeCommand` uses {@link module:engine/model/document~Document#selection}\n * to decide which nodes (if any) should be changed, and applies or removes the attribute from them.\n *\n * The command checks the {@link module:engine/model/model~Model#schema} to decide if it can be enabled\n * for the current selection and to which nodes the attribute can be applied.\n */\nexport default class AttributeCommand extends Command {\n\t/**\n\t * Flag indicating whether the command is active. The command is active when the\n\t * {@link module:engine/model/selection~Selection#hasAttribute selection has the attribute} which means that:\n\t *\n\t * * If the selection is not empty – That the attribute is set on the first node in the selection that allows this attribute.\n\t * * If the selection is empty – That the selection has the attribute itself (which means that newly typed\n\t * text will have this attribute, too).\n\t *\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public value: boolean;\n\n\t/**\n\t * The attribute that will be set by the command.\n\t */\n\tpublic readonly attributeKey: string;\n\n\t/**\n\t * @param attributeKey Attribute that will be set by the command.\n\t */\n\tconstructor( editor: Editor, attributeKey: string ) {\n\t\tsuper( editor );\n\n\t\tthis.attributeKey = attributeKey;\n\t}\n\n\t/**\n\t * Updates the command's {@link #value} and {@link #isEnabled} based on the current selection.\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\n\t\tthis.value = this._getValueFromFirstAllowedNode();\n\t\tthis.isEnabled = model.schema.checkAttributeInSelection( doc.selection, this.attributeKey );\n\t}\n\n\t/**\n\t * Executes the command — applies the attribute to the selection or removes it from the selection.\n\t *\n\t * If the command is active (`value == true`), it will remove attributes. Otherwise, it will set attributes.\n\t *\n\t * The execution result differs, depending on the {@link module:engine/model/document~Document#selection}:\n\t *\n\t * * If the selection is on a range, the command applies the attribute to all nodes in that range\n\t * (if they are allowed to have this attribute by the {@link module:engine/model/schema~Schema schema}).\n\t * * If the selection is collapsed in a non-empty node, the command applies the attribute to the\n\t * {@link module:engine/model/document~Document#selection} itself (note that typed characters copy attributes from the selection).\n\t * * If the selection is collapsed in an empty node, the command applies the attribute to the parent node of the selection (note\n\t * that the selection inherits all attributes from a node if it is in an empty node).\n\t *\n\t * @fires execute\n\t * @param options Command options.\n\t * @param options.forceValue If set, it will force the command behavior. If `true`,\n\t * the command will apply the attribute, otherwise the command will remove the attribute.\n\t * If not set, the command will look for its current value to decide what it should do.\n\t */\n\tpublic override execute( options: { forceValue?: boolean } = {} ): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\t\tconst selection = doc.selection;\n\t\tconst value = ( options.forceValue === undefined ) ? !this.value : options.forceValue;\n\n\t\tmodel.change( writer => {\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\tif ( value ) {\n\t\t\t\t\twriter.setSelectionAttribute( this.attributeKey, true );\n\t\t\t\t} else {\n\t\t\t\t\twriter.removeSelectionAttribute( this.attributeKey );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst ranges = model.schema.getValidRanges( selection.getRanges(), this.attributeKey );\n\n\t\t\t\tfor ( const range of ranges ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\twriter.setAttribute( this.attributeKey, value, range );\n\t\t\t\t\t} else {\n\t\t\t\t\t\twriter.removeAttribute( this.attributeKey, range );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Checks the attribute value of the first node in the selection that allows the attribute.\n\t * For the collapsed selection returns the selection attribute.\n\t *\n\t * @returns The attribute value.\n\t */\n\tprivate _getValueFromFirstAllowedNode(): boolean {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst selection = model.document.selection;\n\n\t\tif ( selection.isCollapsed ) {\n\t\t\treturn selection.hasAttribute( this.attributeKey );\n\t\t}\n\n\t\tfor ( const range of selection.getRanges() ) {\n\t\t\tfor ( const item of range.getItems() ) {\n\t\t\t\tif ( schema.checkAttribute( item, this.attributeKey ) ) {\n\t\t\t\t\treturn item.hasAttribute( this.attributeKey );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module basic-styles/bold/boldediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport AttributeCommand from '../attributecommand';\n\nconst BOLD = 'bold';\n\n/**\n * The bold editing feature.\n *\n * It registers the `'bold'` command and introduces the `bold` attribute in the model which renders to the view\n * as a `<strong>` element.\n */\nexport default class BoldEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'BoldEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\t// Allow bold attribute on text nodes.\n\t\teditor.model.schema.extend( '$text', { allowAttributes: BOLD } );\n\t\teditor.model.schema.setAttributeProperties( BOLD, {\n\t\t\tisFormatting: true,\n\t\t\tcopyOnEnter: true\n\t\t} );\n\n\t\t// Build converter from model to view for data and editing pipelines.\n\t\teditor.conversion.attributeToElement( {\n\t\t\tmodel: BOLD,\n\t\t\tview: 'strong',\n\t\t\tupcastAlso: [\n\t\t\t\t'b',\n\t\t\t\tviewElement => {\n\t\t\t\t\tconst fontWeight = viewElement.getStyle( 'font-weight' );\n\n\t\t\t\t\tif ( !fontWeight ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Value of the `font-weight` attribute can be defined as a string or a number.\n\t\t\t\t\tif ( fontWeight == 'bold' || Number( fontWeight ) >= 600 ) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tname: true,\n\t\t\t\t\t\t\tstyles: [ 'font-weight' ]\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\n\t\t// Create bold command.\n\t\teditor.commands.add( BOLD, new AttributeCommand( editor, BOLD ) );\n\n\t\t// Set the Ctrl+B keystroke.\n\t\teditor.keystrokes.set( 'CTRL+B', BOLD );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module basic-styles/bold/boldui\n */\n\nimport { Plugin, icons } from 'ckeditor5/src/core';\nimport { ButtonView } from 'ckeditor5/src/ui';\nimport type AttributeCommand from '../attributecommand';\n\nconst BOLD = 'bold';\n\n/**\n * The bold UI feature. It introduces the Bold button.\n */\nexport default class BoldUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'BoldUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\t// Add bold button to feature components.\n\t\teditor.ui.componentFactory.add( BOLD, locale => {\n\t\t\tconst command: AttributeCommand = editor.commands.get( BOLD )!;\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\tlabel: t( 'Bold' ),\n\t\t\t\ticon: icons.bold,\n\t\t\t\tkeystroke: 'CTRL+B',\n\t\t\t\ttooltip: true,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\tview.bind( 'isOn', 'isEnabled' ).to( command, 'value', 'isEnabled' );\n\n\t\t\t// Execute command.\n\t\t\tthis.listenTo( view, 'execute', () => {\n\t\t\t\teditor.execute( BOLD );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./code.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module basic-styles/italic/italicediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport AttributeCommand from '../attributecommand';\n\nconst ITALIC = 'italic';\n\n/**\n * The italic editing feature.\n *\n * It registers the `'italic'` command, the <kbd>Ctrl+I</kbd> keystroke and introduces the `italic` attribute in the model\n * which renders to the view as an `<i>` element.\n */\nexport default class ItalicEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ItalicEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Allow italic attribute on text nodes.\n\t\teditor.model.schema.extend( '$text', { allowAttributes: ITALIC } );\n\t\teditor.model.schema.setAttributeProperties( ITALIC, {\n\t\t\tisFormatting: true,\n\t\t\tcopyOnEnter: true\n\t\t} );\n\n\t\teditor.conversion.attributeToElement( {\n\t\t\tmodel: ITALIC,\n\t\t\tview: 'i',\n\t\t\tupcastAlso: [\n\t\t\t\t'em',\n\t\t\t\t{\n\t\t\t\t\tstyles: {\n\t\t\t\t\t\t'font-style': 'italic'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\n\t\t// Create italic command.\n\t\teditor.commands.add( ITALIC, new AttributeCommand( editor, ITALIC ) );\n\n\t\t// Set the Ctrl+I keystroke.\n\t\teditor.keystrokes.set( 'CTRL+I', ITALIC );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module basic-styles/italic/italicui\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { ButtonView } from 'ckeditor5/src/ui';\nimport type AttributeCommand from '../attributecommand';\n\nimport italicIcon from '../../theme/icons/italic.svg';\n\nconst ITALIC = 'italic';\n\n/**\n * The italic UI feature. It introduces the Italic button.\n */\nexport default class ItalicUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ItalicUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\t// Add bold button to feature components.\n\t\teditor.ui.componentFactory.add( ITALIC, locale => {\n\t\t\tconst command: AttributeCommand = editor.commands.get( ITALIC )!;\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\tlabel: t( 'Italic' ),\n\t\t\t\ticon: italicIcon,\n\t\t\t\tkeystroke: 'CTRL+I',\n\t\t\t\ttooltip: true,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\tview.bind( 'isOn', 'isEnabled' ).to( command, 'value', 'isEnabled' );\n\n\t\t\t// Execute command.\n\t\t\tthis.listenTo( view, 'execute', () => {\n\t\t\t\teditor.execute( ITALIC );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n}\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m9.586 14.633.021.004c-.036.335.095.655.393.962.082.083.173.15.274.201h1.474a.6.6 0 1 1 0 1.2H5.304a.6.6 0 0 1 0-1.2h1.15c.474-.07.809-.182 1.005-.334.157-.122.291-.32.404-.597l2.416-9.55a1.053 1.053 0 0 0-.281-.823 1.12 1.12 0 0 0-.442-.296H8.15a.6.6 0 0 1 0-1.2h6.443a.6.6 0 1 1 0 1.2h-1.195c-.376.056-.65.155-.823.296-.215.175-.423.439-.623.79l-2.366 9.347z\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module block-quote/blockquotecommand\n */\n\nimport { Command } from 'ckeditor5/src/core';\nimport { first } from 'ckeditor5/src/utils';\nimport type { DocumentFragment, Element, Position, Range, Schema, Writer } from 'ckeditor5/src/engine';\n\n/**\n * The block quote command plugin.\n *\n * @extends module:core/command~Command\n */\nexport default class BlockQuoteCommand extends Command {\n\t/**\n\t * Whether the selection starts in a block quote.\n\t *\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public value: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tthis.value = this._getValue();\n\t\tthis.isEnabled = this._checkEnabled();\n\t}\n\n\t/**\n\t * Executes the command. When the command {@link #value is on}, all top-most block quotes within\n\t * the selection will be removed. If it is off, all selected blocks will be wrapped with\n\t * a block quote.\n\t *\n\t * @fires execute\n\t * @param options Command options.\n\t * @param options.forceValue If set, it will force the command behavior. If `true`, the command will apply a block quote,\n\t * otherwise the command will remove the block quote. If not set, the command will act basing on its current value.\n\t */\n\tpublic override execute( options: { forceValue?: boolean } = {} ): void {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst selection = model.document.selection;\n\n\t\tconst blocks = Array.from( selection.getSelectedBlocks() );\n\n\t\tconst value = ( options.forceValue === undefined ) ? !this.value : options.forceValue;\n\n\t\tmodel.change( writer => {\n\t\t\tif ( !value ) {\n\t\t\t\tthis._removeQuote( writer, blocks.filter( findQuote ) );\n\t\t\t} else {\n\t\t\t\tconst blocksToQuote = blocks.filter( block => {\n\t\t\t\t\t// Already quoted blocks needs to be considered while quoting too\n\t\t\t\t\t// in order to reuse their <bQ> elements.\n\t\t\t\t\treturn findQuote( block ) || checkCanBeQuoted( schema, block );\n\t\t\t\t} );\n\n\t\t\t\tthis._applyQuote( writer, blocksToQuote );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Checks the command's {@link #value}.\n\t */\n\tprivate _getValue(): boolean {\n\t\tconst selection = this.editor.model.document.selection;\n\n\t\tconst firstBlock = first( selection.getSelectedBlocks() );\n\n\t\t// In the current implementation, the block quote must be an immediate parent of a block element.\n\t\treturn !!( firstBlock && findQuote( firstBlock ) );\n\t}\n\n\t/**\n\t * Checks whether the command can be enabled in the current context.\n\t *\n\t * @returns Whether the command should be enabled.\n\t */\n\tprivate _checkEnabled(): boolean {\n\t\tif ( this.value ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst schema = this.editor.model.schema;\n\n\t\tconst firstBlock = first( selection.getSelectedBlocks() );\n\n\t\tif ( !firstBlock ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn checkCanBeQuoted( schema, firstBlock );\n\t}\n\n\t/**\n\t * Removes the quote from given blocks.\n\t *\n\t * If blocks which are supposed to be \"unquoted\" are in the middle of a quote,\n\t * start it or end it, then the quote will be split (if needed) and the blocks\n\t * will be moved out of it, so other quoted blocks remained quoted.\n\t */\n\tprivate _removeQuote( writer: Writer, blocks: Array<Element> ): void {\n\t\t// Unquote all groups of block. Iterate in the reverse order to not break following ranges.\n\t\tgetRangesOfBlockGroups( writer, blocks ).reverse().forEach( groupRange => {\n\t\t\tif ( groupRange.start.isAtStart && groupRange.end.isAtEnd ) {\n\t\t\t\twriter.unwrap( groupRange.start.parent as Element );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// The group of blocks are at the beginning of an <bQ> so let's move them left (out of the <bQ>).\n\t\t\tif ( groupRange.start.isAtStart ) {\n\t\t\t\tconst positionBefore = writer.createPositionBefore( groupRange.start.parent as Element );\n\n\t\t\t\twriter.move( groupRange, positionBefore );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// The blocks are in the middle of an <bQ> so we need to split the <bQ> after the last block\n\t\t\t// so we move the items there.\n\t\t\tif ( !groupRange.end.isAtEnd ) {\n\t\t\t\twriter.split( groupRange.end );\n\t\t\t}\n\n\t\t\t// Now we are sure that groupRange.end.isAtEnd is true, so let's move the blocks right.\n\n\t\t\tconst positionAfter = writer.createPositionAfter( groupRange.end.parent as Element );\n\n\t\t\twriter.move( groupRange, positionAfter );\n\t\t} );\n\t}\n\n\t/**\n\t * Applies the quote to given blocks.\n\t */\n\tprivate _applyQuote( writer: Writer, blocks: Array<Element> ): void {\n\t\tconst quotesToMerge: Array<Element | DocumentFragment> = [];\n\n\t\t// Quote all groups of block. Iterate in the reverse order to not break following ranges.\n\t\tgetRangesOfBlockGroups( writer, blocks ).reverse().forEach( groupRange => {\n\t\t\tlet quote = findQuote( groupRange.start );\n\n\t\t\tif ( !quote ) {\n\t\t\t\tquote = writer.createElement( 'blockQuote' );\n\n\t\t\t\twriter.wrap( groupRange, quote );\n\t\t\t}\n\n\t\t\tquotesToMerge.push( quote );\n\t\t} );\n\n\t\t// Merge subsequent <bQ> elements. Reverse the order again because this time we want to go through\n\t\t// the <bQ> elements in the source order (due to how merge works – it moves the right element's content\n\t\t// to the first element and removes the right one. Since we may need to merge a couple of subsequent `<bQ>` elements\n\t\t// we want to keep the reference to the first (furthest left) one.\n\t\tquotesToMerge.reverse().reduce( ( currentQuote, nextQuote ) => {\n\t\t\tif ( currentQuote.nextSibling == nextQuote ) {\n\t\t\t\twriter.merge( writer.createPositionAfter( currentQuote ) );\n\n\t\t\t\treturn currentQuote;\n\t\t\t}\n\n\t\t\treturn nextQuote;\n\t\t} );\n\t}\n}\n\nfunction findQuote( elementOrPosition: Element | Position ): Element | DocumentFragment | null {\n\treturn elementOrPosition.parent!.name == 'blockQuote' ? elementOrPosition.parent : null;\n}\n\n/**\n * Returns a minimal array of ranges containing groups of subsequent blocks.\n *\n * content: abcdefgh\n * blocks: [ a, b, d, f, g, h ]\n * output ranges: [ab]c[d]e[fgh]\n */\nfunction getRangesOfBlockGroups( writer: Writer, blocks: Array<Element> ): Array<Range> {\n\tlet startPosition;\n\tlet i = 0;\n\tconst ranges = [];\n\n\twhile ( i < blocks.length ) {\n\t\tconst block = blocks[ i ];\n\t\tconst nextBlock = blocks[ i + 1 ];\n\n\t\tif ( !startPosition ) {\n\t\t\tstartPosition = writer.createPositionBefore( block );\n\t\t}\n\n\t\tif ( !nextBlock || block.nextSibling != nextBlock ) {\n\t\t\tranges.push( writer.createRange( startPosition, writer.createPositionAfter( block ) ) );\n\t\t\tstartPosition = null;\n\t\t}\n\n\t\ti++;\n\t}\n\n\treturn ranges;\n}\n\n/**\n * Checks whether <bQ> can wrap the block.\n */\nfunction checkCanBeQuoted( schema: Schema, block: Element ): boolean {\n\t// TMP will be replaced with schema.checkWrap().\n\tconst isBQAllowed = schema.checkChild( block.parent as Element, 'blockQuote' );\n\tconst isBlockAllowedInBQ = schema.checkChild( [ '$root', 'blockQuote' ], block );\n\n\treturn isBQAllowed && isBlockAllowedInBQ;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module block-quote/blockquoteediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { Enter, type ViewDocumentEnterEvent } from 'ckeditor5/src/enter';\nimport { Delete, type ViewDocumentDeleteEvent } from 'ckeditor5/src/typing';\n\nimport BlockQuoteCommand from './blockquotecommand';\n\n/**\n * The block quote editing.\n *\n * Introduces the `'blockQuote'` command and the `'blockQuote'` model element.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class BlockQuoteEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'BlockQuoteEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Enter, Delete ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\teditor.commands.add( 'blockQuote', new BlockQuoteCommand( editor ) );\n\n\t\tschema.register( 'blockQuote', {\n\t\t\tinheritAllFrom: '$container'\n\t\t} );\n\n\t\teditor.conversion.elementToElement( { model: 'blockQuote', view: 'blockquote' } );\n\n\t\t// Postfixer which cleans incorrect model states connected with block quotes.\n\t\teditor.model.document.registerPostFixer( writer => {\n\t\t\tconst changes = editor.model.document.differ.getChanges();\n\n\t\t\tfor ( const entry of changes ) {\n\t\t\t\tif ( entry.type == 'insert' ) {\n\t\t\t\t\tconst element = entry.position.nodeAfter;\n\n\t\t\t\t\tif ( !element ) {\n\t\t\t\t\t\t// We are inside a text node.\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( element.is( 'element', 'blockQuote' ) && element.isEmpty ) {\n\t\t\t\t\t\t// Added an empty blockQuote - remove it.\n\t\t\t\t\t\twriter.remove( element );\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} else if ( element.is( 'element', 'blockQuote' ) && !schema.checkChild( entry.position, element ) ) {\n\t\t\t\t\t\t// Added a blockQuote in incorrect place. Unwrap it so the content inside is not lost.\n\t\t\t\t\t\twriter.unwrap( element );\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} else if ( element.is( 'element' ) ) {\n\t\t\t\t\t\t// Just added an element. Check that all children meet the scheme rules.\n\t\t\t\t\t\tconst range = writer.createRangeIn( element );\n\n\t\t\t\t\t\tfor ( const child of range.getItems() ) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tchild.is( 'element', 'blockQuote' ) &&\n\t\t\t\t\t\t\t\t!schema.checkChild( writer.createPositionBefore( child ), child )\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\twriter.unwrap( child );\n\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if ( entry.type == 'remove' ) {\n\t\t\t\t\tconst parent = entry.position.parent;\n\n\t\t\t\t\tif ( parent.is( 'element', 'blockQuote' ) && parent.isEmpty ) {\n\t\t\t\t\t\t// Something got removed and now blockQuote is empty. Remove the blockQuote as well.\n\t\t\t\t\t\twriter.remove( parent );\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} );\n\n\t\tconst viewDocument = this.editor.editing.view.document;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst blockQuoteCommand: BlockQuoteCommand = editor.commands.get( 'blockQuote' )!;\n\n\t\t// Overwrite default Enter key behavior.\n\t\t// If Enter key is pressed with selection collapsed in empty block inside a quote, break the quote.\n\t\tthis.listenTo<ViewDocumentEnterEvent>( viewDocument, 'enter', ( evt, data ) => {\n\t\t\tif ( !selection.isCollapsed || !blockQuoteCommand.value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst positionParent = selection.getLastPosition()!.parent;\n\n\t\t\tif ( positionParent.isEmpty ) {\n\t\t\t\teditor.execute( 'blockQuote' );\n\t\t\t\teditor.editing.view.scrollToTheSelection();\n\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: 'blockquote' } );\n\n\t\t// Overwrite default Backspace key behavior.\n\t\t// If Backspace key is pressed with selection collapsed in first empty block inside a quote, break the quote.\n\t\tthis.listenTo<ViewDocumentDeleteEvent>( viewDocument, 'delete', ( evt, data ) => {\n\t\t\tif ( data.direction != 'backward' || !selection.isCollapsed || !blockQuoteCommand!.value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst positionParent = selection.getLastPosition()!.parent;\n\n\t\t\tif ( positionParent.isEmpty && !positionParent.previousSibling ) {\n\t\t\t\teditor.execute( 'blockQuote' );\n\t\t\t\teditor.editing.view.scrollToTheSelection();\n\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: 'blockquote' } );\n\t}\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./blockquote.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module block-quote/blockquoteui\n */\n\nimport { Plugin, icons } from 'ckeditor5/src/core';\nimport { ButtonView } from 'ckeditor5/src/ui';\nimport type BlockQuoteCommand from './blockquotecommand';\n\nimport '../theme/blockquote.css';\n\n/**\n * The block quote UI plugin.\n *\n * It introduces the `'blockQuote'` button.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class BlockQuoteUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'BlockQuoteUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\teditor.ui.componentFactory.add( 'blockQuote', locale => {\n\t\t\tconst command: BlockQuoteCommand = editor.commands.get( 'blockQuote' )!;\n\t\t\tconst buttonView = new ButtonView( locale );\n\n\t\t\tbuttonView.set( {\n\t\t\t\tlabel: t( 'Block quote' ),\n\t\t\t\ticon: icons.quote,\n\t\t\t\ttooltip: true,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\t// Bind button model to command.\n\t\t\tbuttonView.bind( 'isOn', 'isEnabled' ).to( command, 'value', 'isEnabled' );\n\n\t\t\t// Execute command.\n\t\t\tthis.listenTo( buttonView, 'execute', () => {\n\t\t\t\teditor.execute( 'blockQuote' );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn buttonView;\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ckfinder/ckfinderui\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { ButtonView } from 'ckeditor5/src/ui';\n\nimport type CKFinderCommand from './ckfindercommand';\n\nimport browseFilesIcon from '../theme/icons/browse-files.svg';\n\n/**\n * The CKFinder UI plugin. It introduces the `'ckfinder'` toolbar button.\n */\nexport default class CKFinderUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'CKFinderUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst componentFactory = editor.ui.componentFactory;\n\t\tconst t = editor.t;\n\n\t\tcomponentFactory.add( 'ckfinder', locale => {\n\t\t\tconst command: CKFinderCommand = editor.commands.get( 'ckfinder' )!;\n\n\t\t\tconst button = new ButtonView( locale );\n\n\t\t\tbutton.set( {\n\t\t\t\tlabel: t( 'Insert image or file' ),\n\t\t\t\ticon: browseFilesIcon,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tbutton.bind( 'isEnabled' ).to( command );\n\n\t\t\tbutton.on( 'execute', () => {\n\t\t\t\teditor.execute( 'ckfinder' );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn button;\n\t\t} );\n\t}\n}\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M11.627 16.5zm5.873-.196zm0-7.001V8h-13v8.5h4.341c.191.54.457 1.044.785 1.5H2a1.5 1.5 0 0 1-1.5-1.5v-13A1.5 1.5 0 0 1 2 2h4.5a1.5 1.5 0 0 1 1.06.44L9.122 4H16a1.5 1.5 0 0 1 1.5 1.5v1A1.5 1.5 0 0 1 19 8v2.531a6.027 6.027 0 0 0-1.5-1.228zM16 6.5v-1H8.5l-2-2H2v13h1V8a1.5 1.5 0 0 1 1.5-1.5H16z\\\"/><path d=\\\"M14.5 19.5a5 5 0 1 1 0-10 5 5 0 0 1 0 10zM15 14v-2h-1v2h-2v1h2v2h1v-2h2v-1h-2z\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* global window */\n\n/**\n * @module ckfinder/ckfindercommand\n */\n\nimport { Command, type Editor } from 'ckeditor5/src/core';\nimport { CKEditorError } from 'ckeditor5/src/utils';\nimport type { Notification } from 'ckeditor5/src/ui';\n\n/**\n * The CKFinder command. It is used by the {@link module:ckfinder/ckfinderediting~CKFinderEditing CKFinder editing feature}\n * to open the CKFinder file manager to insert an image or a link to a file into the editor content.\n *\n * ```ts\n * editor.execute( 'ckfinder' );\n * ```\n *\n * **Note:** This command uses other features to perform tasks:\n * - To insert images the {@link module:image/image/insertimagecommand~InsertImageCommand 'insertImage'} command\n * from the {@link module:image/image~Image Image feature}.\n * - To insert links to files the {@link module:link/linkcommand~LinkCommand 'link'} command\n * from the {@link module:link/link~Link Link feature}.\n */\nexport default class CKFinderCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\t// The CKFinder command does not affect data by itself.\n\t\tthis.affectsData = false;\n\n\t\t// Remove default document listener to lower its priority.\n\t\tthis.stopListening( this.editor.model.document, 'change' );\n\n\t\t// Lower this command listener priority to be sure that refresh() will be called after link & image refresh.\n\t\tthis.listenTo( this.editor.model.document, 'change', () => this.refresh(), { priority: 'low' } );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst imageCommand = this.editor.commands.get( 'insertImage' )!;\n\t\tconst linkCommand = this.editor.commands.get( 'link' )!;\n\n\t\t// The CKFinder command is enabled when one of image or link command is enabled.\n\t\tthis.isEnabled = imageCommand.isEnabled || linkCommand.isEnabled;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst editor = this.editor;\n\n\t\tconst openerMethod = this.editor.config.get( 'ckfinder.openerMethod' ) || 'modal';\n\n\t\tif ( openerMethod != 'popup' && openerMethod != 'modal' ) {\n\t\t\t/**\n\t\t\t * The `ckfinder.openerMethod` must be one of: \"popup\" or \"modal\".\n\t\t\t *\n\t\t\t * @error ckfinder-unknown-openermethod\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'ckfinder-unknown-openermethod', editor );\n\t\t}\n\n\t\tconst options = this.editor.config.get( 'ckfinder.options' ) || {};\n\n\t\toptions.chooseFiles = true;\n\n\t\t// Cache the user-defined onInit method\n\t\tconst originalOnInit = options.onInit;\n\n\t\t// Pass the lang code to the CKFinder if not defined by user.\n\t\tif ( !options.language ) {\n\t\t\toptions.language = editor.locale.uiLanguage;\n\t\t}\n\n\t\t// The onInit method allows to extend CKFinder's behavior. It is used to attach event listeners to file choosing related events.\n\t\toptions.onInit = finder => {\n\t\t\t// Call original options.onInit if it was defined by user.\n\t\t\tif ( originalOnInit ) {\n\t\t\t\toriginalOnInit( finder );\n\t\t\t}\n\n\t\t\tfinder.on( 'files:choose', ( evt: any ) => {\n\t\t\t\tconst files = evt.data.files.toArray();\n\n\t\t\t\t// Insert links\n\t\t\t\tconst links = files.filter( ( file: any ) => !file.isImage() );\n\t\t\t\tconst images = files.filter( ( file: any ) => file.isImage() );\n\n\t\t\t\tfor ( const linkFile of links ) {\n\t\t\t\t\teditor.execute( 'link', linkFile.getUrl() );\n\t\t\t\t}\n\n\t\t\t\tconst imagesUrls = [];\n\n\t\t\t\tfor ( const image of images ) {\n\t\t\t\t\tconst url = image.getUrl();\n\n\t\t\t\t\timagesUrls.push( url ? url : finder.request( 'file:getProxyUrl', { file: image } ) );\n\t\t\t\t}\n\n\t\t\t\tif ( imagesUrls.length ) {\n\t\t\t\t\tinsertImages( editor, imagesUrls );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tfinder.on( 'file:choose:resizedImage', ( evt: any ) => {\n\t\t\t\tconst resizedUrl = evt.data.resizedUrl;\n\n\t\t\t\tif ( !resizedUrl ) {\n\t\t\t\t\tconst notification: Notification = editor.plugins.get( 'Notification' );\n\t\t\t\t\tconst t = editor.locale.t;\n\n\t\t\t\t\tnotification.showWarning( t( 'Could not obtain resized image URL.' ), {\n\t\t\t\t\t\ttitle: t( 'Selecting resized image failed' ),\n\t\t\t\t\t\tnamespace: 'ckfinder'\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tinsertImages( editor, [ resizedUrl ] );\n\t\t\t} );\n\t\t};\n\n\t\t( window as any ).CKFinder[ openerMethod ]( options );\n\t}\n}\n\nfunction insertImages( editor: Editor, urls: Array<string> ): void {\n\tconst imageCommand = editor.commands.get( 'insertImage' )!;\n\n\t// Check if inserting an image is actually possible - it might be possible to only insert a link.\n\tif ( !imageCommand.isEnabled ) {\n\t\tconst notification: Notification = editor.plugins.get( 'Notification' );\n\t\tconst t = editor.locale.t;\n\n\t\tnotification.showWarning( t( 'Could not insert image at the current position.' ), {\n\t\t\ttitle: t( 'Inserting image failed' ),\n\t\t\tnamespace: 'ckfinder'\n\t\t} );\n\n\t\treturn;\n\t}\n\n\teditor.execute( 'insertImage', { source: urls } );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ckfinder/ckfinderediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { Notification } from 'ckeditor5/src/ui';\nimport { CKEditorError } from 'ckeditor5/src/utils';\n\nimport CKFinderCommand from './ckfindercommand';\n\n/**\n * The CKFinder editing feature. It introduces the {@link module:ckfinder/ckfindercommand~CKFinderCommand CKFinder command}.\n */\nexport default class CKFinderEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'CKFinderEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Notification, 'LinkEditing' ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\tif ( !editor.plugins.has( 'ImageBlockEditing' ) && !editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\t/**\n\t\t\t * CKFinder requires at least one plugin providing support for images loaded in the editor. Please\n\t\t\t * make sure either:\n\t\t\t *\n\t\t\t * * {@link module:image/image~Image} (which loads both types of images),\n\t\t\t * * or {@link module:image/imageblock~ImageBlock},\n\t\t\t * * or {@link module:image/imageinline~ImageInline}.\n\t\t\t *\n\t\t\t * is loaded in your editor configuration.\n\t\t\t *\n\t\t\t * @error ckfinder-missing-image-plugin\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'ckfinder-missing-image-plugin', editor );\n\t\t}\n\n\t\teditor.commands.add( 'ckfinder', new CKFinderCommand( editor ) );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n* @module easy-image/cloudservicesuploadadapter\n*/\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { FileRepository, type FileLoader, type UploadAdapter } from 'ckeditor5/src/upload';\nimport type { CloudServicesCore, CloudServices, UploadGateway, FileUploader } from '@ckeditor/ckeditor5-cloud-services';\n\n/**\n * A plugin that enables upload to [CKEditor Cloud Services](https://ckeditor.com/ckeditor-cloud-services/).\n *\n * It is mainly used by the {@link module:easy-image/easyimage~EasyImage} feature.\n *\n * After enabling this adapter you need to configure the CKEditor Cloud Services integration through\n * {@link module:cloud-services/cloudservicesconfig~CloudServicesConfig `config.cloudServices`}.\n */\nexport default class CloudServicesUploadAdapter extends Plugin {\n\tprivate _uploadGateway?: UploadGateway;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'CloudServicesUploadAdapter' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ 'CloudServices', FileRepository ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\tconst cloudServices: CloudServices = editor.plugins.get( 'CloudServices' );\n\n\t\tconst token = cloudServices.token;\n\t\tconst uploadUrl = cloudServices.uploadUrl;\n\n\t\tif ( !token ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst cloudServicesCore: CloudServicesCore = editor.plugins.get( 'CloudServicesCore' );\n\t\tthis._uploadGateway = cloudServicesCore.createUploadGateway( token, uploadUrl! );\n\n\t\teditor.plugins.get( FileRepository ).createUploadAdapter = loader => {\n\t\t\treturn new Adapter( this._uploadGateway!, loader );\n\t\t};\n\t}\n}\n\nclass Adapter implements UploadAdapter {\n\tprivate uploadGateway: UploadGateway;\n\tprivate loader: FileLoader;\n\tprivate fileUploader?: FileUploader;\n\n\tconstructor( uploadGateway: UploadGateway, loader: FileLoader ) {\n\t\tthis.uploadGateway = uploadGateway;\n\n\t\tthis.loader = loader;\n\t}\n\n\tpublic upload() {\n\t\treturn this.loader.file.then( file => {\n\t\t\tthis.fileUploader = this.uploadGateway.upload( file! );\n\n\t\t\tthis.fileUploader.on( 'progress', ( evt, data ) => {\n\t\t\t\tthis.loader.uploadTotal = data.total;\n\t\t\t\tthis.loader.uploaded = data.uploaded;\n\t\t\t} );\n\n\t\t\treturn this.fileUploader.send();\n\t\t} );\n\t}\n\n\tpublic abort() {\n\t\tthis.fileUploader!.abort();\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paragraph/paragraphcommand\n */\n\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\nimport { first } from '@ckeditor/ckeditor5-utils';\n\nimport type { Schema, Selection, DocumentSelection, Element } from '@ckeditor/ckeditor5-engine';\n\n/**\n * The paragraph command.\n */\nexport default class ParagraphCommand extends Command {\n\tpublic constructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\t// Since this command may pass selection in execution block, it should be checked directly.\n\t\tthis._isEnabledBasedOnSelection = false;\n\t}\n\n\t/**\n\t * The value of the command. Indicates whether the selection start is placed in a paragraph.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public value: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst document = model.document;\n\t\tconst block = first( document.selection.getSelectedBlocks() );\n\n\t\tthis.value = !!block && block.is( 'element', 'paragraph' );\n\t\tthis.isEnabled = !!block && checkCanBecomeParagraph( block, model.schema );\n\t}\n\n\t/**\n\t * Executes the command. All the blocks (see {@link module:engine/model/schema~Schema}) in the selection\n\t * will be turned to paragraphs.\n\t *\n\t * @fires execute\n\t * @param options Options for the executed command.\n\t * @param options.selection The selection that the command should be applied to. By default,\n\t * if not provided, the command is applied to the {@link module:engine/model/document~Document#selection}.\n\t */\n\tpublic override execute( options: {\n\t\tselection?: Selection | DocumentSelection;\n\t} = {} ): void {\n\t\tconst model = this.editor.model;\n\t\tconst document = model.document;\n\n\t\tconst selection = options.selection || document.selection;\n\n\t\t// Don't execute command if selection is in non-editable place.\n\t\tif ( !model.canEditAt( selection ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\tconst blocks = selection.getSelectedBlocks();\n\n\t\t\tfor ( const block of blocks ) {\n\t\t\t\tif ( !block.is( 'element', 'paragraph' ) && checkCanBecomeParagraph( block, model.schema ) ) {\n\t\t\t\t\twriter.rename( block, 'paragraph' );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n}\n\n/**\n * Checks whether the given block can be replaced by a paragraph.\n *\n * @param block A block to be tested.\n * @param schema The schema of the document.\n */\nfunction checkCanBecomeParagraph( block: Element, schema: Schema ): boolean {\n\treturn schema.checkChild( block.parent as Element, 'paragraph' ) && !schema.isObject( block );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paragraph/insertparagraphcommand\n */\n\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\nimport type { Element, Position, Writer } from '@ckeditor/ckeditor5-engine';\n\n/**\n * The insert paragraph command. It inserts a new paragraph at a specific\n * {@link module:engine/model/position~Position document position}.\n *\n * ```ts\n * // Insert a new paragraph before an element in the document.\n * editor.execute( 'insertParagraph', {\n * position: editor.model.createPositionBefore( element )\n * } );\n * ```\n *\n * If a paragraph is disallowed in the context of the specific position, the command\n * will attempt to split position ancestors to find a place where it is possible\n * to insert a paragraph.\n *\n * **Note**: This command moves the selection to the inserted paragraph.\n */\nexport default class InsertParagraphCommand extends Command {\n\tpublic constructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\t// Since this command passes position in execution block instead of selection, it should be checked directly.\n\t\tthis._isEnabledBasedOnSelection = false;\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @param options Options for the executed command.\n\t * @param options.position The model position at which the new paragraph will be inserted.\n\t * @param options.attributes Attributes keys and values to set on a inserted paragraph.\n\t * @fires execute\n\t */\n\tpublic override execute( options: {\n\t\tposition: Position;\n\t\tattributes: Record<string, unknown>;\n\t} ): void {\n\t\tconst model = this.editor.model;\n\t\tconst attributes = options.attributes;\n\n\t\tlet position: Position | null = options.position;\n\n\t\t// Don't execute command if position is in non-editable place.\n\t\tif ( !model.canEditAt( position ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\tposition = this._findPositionToInsertParagraph( position!, writer );\n\n\t\t\tif ( !position ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst paragraph = writer.createElement( 'paragraph' );\n\n\t\t\tif ( attributes ) {\n\t\t\t\tmodel.schema.setAllowedAttributes( paragraph, attributes, writer );\n\t\t\t}\n\n\t\t\tmodel.insertContent( paragraph, position );\n\t\t\twriter.setSelection( paragraph, 'in' );\n\t\t} );\n\t}\n\n\t/**\n\t * Returns the best position to insert a new paragraph.\n\t */\n\tprivate _findPositionToInsertParagraph( position: Position, writer: Writer ): Position | null {\n\t\tconst model = this.editor.model;\n\n\t\tif ( model.schema.checkChild( position, 'paragraph' ) ) {\n\t\t\treturn position;\n\t\t}\n\n\t\tconst allowedParent = model.schema.findAllowedParent( position, 'paragraph' );\n\n\t\t// It could be there's no ancestor limit that would allow paragraph.\n\t\t// In theory, \"paragraph\" could be disallowed even in the \"$root\".\n\t\tif ( !allowedParent ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst positionParent = position.parent as Element;\n\t\tconst isTextAllowed = model.schema.checkChild( positionParent, '$text' );\n\n\t\t// At empty $block or at the end of $block.\n\t\t// <paragraph>[]</paragraph> ---> <paragraph></paragraph><paragraph>[]</paragraph>\n\t\t// <paragraph>foo[]</paragraph> ---> <paragraph>foo</paragraph><paragraph>[]</paragraph>\n\t\tif ( positionParent.isEmpty || isTextAllowed && position.isAtEnd ) {\n\t\t\treturn model.createPositionAfter( positionParent );\n\t\t}\n\n\t\t// At the start of $block with text.\n\t\t// <paragraph>[]foo</paragraph> ---> <paragraph>[]</paragraph><paragraph>foo</paragraph>\n\t\tif ( !positionParent.isEmpty && isTextAllowed && position.isAtStart ) {\n\t\t\treturn model.createPositionBefore( positionParent );\n\t\t}\n\n\t\treturn writer.split( position, allowedParent ).position;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paragraph/paragraph\n */\n\nimport ParagraphCommand from './paragraphcommand';\nimport InsertParagraphCommand from './insertparagraphcommand';\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\n/**\n * The paragraph feature for the editor.\n *\n * It introduces the `<paragraph>` element in the model which renders as a `<p>` element in the DOM and data.\n *\n * It also brings two editors commands:\n *\n * * The {@link module:paragraph/paragraphcommand~ParagraphCommand `'paragraph'`} command that converts all\n * blocks in the model selection into paragraphs.\n * * The {@link module:paragraph/insertparagraphcommand~InsertParagraphCommand `'insertParagraph'`} command\n * that inserts a new paragraph at a specified location in the model.\n */\nexport default class Paragraph extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Paragraph' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\n\t\teditor.commands.add( 'paragraph', new ParagraphCommand( editor ) );\n\t\teditor.commands.add( 'insertParagraph', new InsertParagraphCommand( editor ) );\n\n\t\t// Schema.\n\t\tmodel.schema.register( 'paragraph', { inheritAllFrom: '$block' } );\n\n\t\teditor.conversion.elementToElement( { model: 'paragraph', view: 'p' } );\n\n\t\t// Conversion for paragraph-like elements which has not been converted by any plugin.\n\t\teditor.conversion.for( 'upcast' ).elementToElement( {\n\t\t\tmodel: ( viewElement, { writer } ) => {\n\t\t\t\tif ( !Paragraph.paragraphLikeElements.has( viewElement.name ) ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// Do not auto-paragraph empty elements.\n\t\t\t\tif ( viewElement.isEmpty ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn writer.createElement( 'paragraph' );\n\t\t\t},\n\t\t\tview: /.+/,\n\t\t\tconverterPriority: 'low'\n\t\t} );\n\t}\n\n\t/**\n\t * A list of element names which should be treated by the autoparagraphing algorithms as\n\t * paragraph-like. This means that e.g. the following content:\n\t *\n\t * ```html\n\t * <h1>Foo</h1>\n\t * <table>\n\t * <tr>\n\t * <td>X</td>\n\t * <td>\n\t * <ul>\n\t * <li>Y</li>\n\t * <li>Z</li>\n\t * </ul>\n\t * </td>\n\t * </tr>\n\t * </table>\n\t * ```\n\t *\n\t * contains five paragraph-like elements: `<h1>`, two `<td>`s and two `<li>`s.\n\t * Hence, if none of the features is going to convert those elements the above content will be automatically handled\n\t * by the paragraph feature and converted to:\n\t *\n\t * ```html\n\t * <p>Foo</p>\n\t * <p>X</p>\n\t * <p>Y</p>\n\t * <p>Z</p>\n\t * ```\n\t *\n\t * Note: The `<td>` containing two `<li>` elements was ignored as the innermost paragraph-like elements\n\t * have a priority upon conversion.\n\t */\n\tpublic static paragraphLikeElements = new Set( [\n\t\t'blockquote',\n\t\t'dd',\n\t\t'div',\n\t\t'dt',\n\t\t'h1',\n\t\t'h2',\n\t\t'h3',\n\t\t'h4',\n\t\t'h5',\n\t\t'h6',\n\t\t'li',\n\t\t'p',\n\t\t'td',\n\t\t'th'\n\t] );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module heading/headingcommand\n */\n\nimport { Command, type Editor } from 'ckeditor5/src/core';\nimport { first } from 'ckeditor5/src/utils';\n\nimport type { Element, Schema } from 'ckeditor5/src/engine';\n\n/**\n * The heading command. It is used by the {@link module:heading/heading~Heading heading feature} to apply headings.\n */\nexport default class HeadingCommand extends Command {\n\t/**\n\t * If the selection starts in a heading (which {@link #modelElements is supported by this command})\n\t * the value is set to the name of that heading model element.\n\t * It is set to `false` otherwise.\n\t *\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public value: false | string;\n\n\t/**\n\t * Set of defined model's elements names that this command support.\n\t * See {@link module:heading/headingconfig~HeadingOption}.\n\t */\n\tpublic readonly modelElements: Array<string>;\n\n\t/**\n\t * Creates an instance of the command.\n\t *\n\t * @param editor Editor instance.\n\t * @param modelElements Names of the element which this command can apply in the model.\n\t */\n\tconstructor( editor: Editor, modelElements: Array<string> ) {\n\t\tsuper( editor );\n\n\t\tthis.modelElements = modelElements;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst block = first( this.editor.model.document.selection.getSelectedBlocks() );\n\n\t\tthis.value = !!block && this.modelElements.includes( block.name ) && block.name;\n\t\tthis.isEnabled = !!block && this.modelElements.some( heading => checkCanBecomeHeading( block, heading, this.editor.model.schema ) );\n\t}\n\n\t/**\n\t * Executes the command. Applies the heading to the selected blocks or, if the first selected\n\t * block is a heading already, turns selected headings (of this level only) to paragraphs.\n\t *\n\t * @param options.value Name of the element which this command will apply in the model.\n\t * @fires execute\n\t */\n\tpublic override execute( options: { value: string } ): void {\n\t\tconst model = this.editor.model;\n\t\tconst document = model.document;\n\n\t\tconst modelElement = options.value;\n\n\t\tmodel.change( writer => {\n\t\t\tconst blocks = Array.from( document.selection.getSelectedBlocks() )\n\t\t\t\t.filter( block => {\n\t\t\t\t\treturn checkCanBecomeHeading( block, modelElement, model.schema );\n\t\t\t\t} );\n\n\t\t\tfor ( const block of blocks ) {\n\t\t\t\tif ( !block.is( 'element', modelElement ) ) {\n\t\t\t\t\twriter.rename( block, modelElement );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n}\n\n/**\n * Checks whether the given block can be replaced by a specific heading.\n *\n * @param block A block to be tested.\n * @param heading Command element name in the model.\n * @param schema The schema of the document.\n */\nfunction checkCanBecomeHeading( block: Element, heading: string, schema: Schema ) {\n\treturn schema.checkChild( block.parent as Element, heading ) && !schema.isObject( block );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module heading/headingediting\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\nimport { Paragraph } from 'ckeditor5/src/paragraph';\nimport { priorities } from 'ckeditor5/src/utils';\nimport type { EnterCommandAfterExecuteEvent } from 'ckeditor5/src/enter';\nimport type { HeadingOption } from './headingconfig';\n\nimport HeadingCommand from './headingcommand';\n\nconst defaultModelElement = 'paragraph';\n\n/**\n * The headings engine feature. It handles switching between block formats – headings and paragraph.\n * This class represents the engine part of the heading feature. See also {@link module:heading/heading~Heading}.\n * It introduces `heading1`-`headingN` commands which allow to convert paragraphs into headings.\n */\nexport default class HeadingEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'HeadingEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'heading', {\n\t\t\toptions: [\n\t\t\t\t{ model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },\n\t\t\t\t{ model: 'heading1', view: 'h2', title: 'Heading 1', class: 'ck-heading_heading1' },\n\t\t\t\t{ model: 'heading2', view: 'h3', title: 'Heading 2', class: 'ck-heading_heading2' },\n\t\t\t\t{ model: 'heading3', view: 'h4', title: 'Heading 3', class: 'ck-heading_heading3' }\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Paragraph ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst options: Array<HeadingOption> = editor.config.get( 'heading.options' )!;\n\n\t\tconst modelElements = [];\n\n\t\tfor ( const option of options ) {\n\t\t\t// Skip paragraph - it is defined in required Paragraph feature.\n\t\t\tif ( option.model === 'paragraph' ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Schema.\n\t\t\teditor.model.schema.register( option.model, {\n\t\t\t\tinheritAllFrom: '$block'\n\t\t\t} );\n\n\t\t\teditor.conversion.elementToElement( option );\n\n\t\t\tmodelElements.push( option.model );\n\t\t}\n\n\t\tthis._addDefaultH1Conversion( editor );\n\n\t\t// Register the heading command for this option.\n\t\teditor.commands.add( 'heading', new HeadingCommand( editor, modelElements ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\t// If the enter command is added to the editor, alter its behavior.\n\t\t// Enter at the end of a heading element should create a paragraph.\n\t\tconst editor = this.editor;\n\t\tconst enterCommand = editor.commands.get( 'enter' );\n\t\tconst options: Array<HeadingOption> = editor.config.get( 'heading.options' )!;\n\n\t\tif ( enterCommand ) {\n\t\t\tthis.listenTo<EnterCommandAfterExecuteEvent>( enterCommand, 'afterExecute', ( evt, data ) => {\n\t\t\t\tconst positionParent = editor.model.document.selection.getFirstPosition()!.parent;\n\t\t\t\tconst isHeading = options.some( option => positionParent.is( 'element', option.model ) );\n\n\t\t\t\tif ( isHeading && !positionParent.is( 'element', defaultModelElement ) && positionParent.childCount === 0 ) {\n\t\t\t\t\tdata.writer.rename( positionParent, defaultModelElement );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Adds default conversion for `h1` -> `heading1` with a low priority.\n\t *\n\t * @param editor Editor instance on which to add the `h1` conversion.\n\t */\n\tprivate _addDefaultH1Conversion( editor: Editor ) {\n\t\teditor.conversion.for( 'upcast' ).elementToElement( {\n\t\t\tmodel: 'heading1',\n\t\t\tview: 'h1',\n\t\t\t// With a `low` priority, `paragraph` plugin autoparagraphing mechanism is executed. Make sure\n\t\t\t// this listener is called before it. If not, `h1` will be transformed into a paragraph.\n\t\t\tconverterPriority: priorities.low + 1\n\t\t} );\n\t}\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./heading.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module heading/headingui\n */\n\nimport { Plugin, type Command } from 'ckeditor5/src/core';\nimport {\n\tModel,\n\tcreateDropdown,\n\taddListToDropdown,\n\ttype ButtonExecuteEvent,\n\ttype ListDropdownItemDefinition\n} from 'ckeditor5/src/ui';\nimport { Collection } from 'ckeditor5/src/utils';\nimport type { ParagraphCommand } from 'ckeditor5/src/paragraph';\n\nimport { getLocalizedOptions } from './utils';\nimport type HeadingCommand from './headingcommand';\n\nimport '../theme/heading.css';\n\n/**\n * The headings UI feature. It introduces the `headings` dropdown.\n */\nexport default class HeadingUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'HeadingUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst options = getLocalizedOptions( editor );\n\t\tconst defaultTitle = t( 'Choose heading' );\n\t\tconst accessibleLabel = t( 'Heading' );\n\n\t\t// Register UI component.\n\t\teditor.ui.componentFactory.add( 'heading', locale => {\n\t\t\tconst titles: Record<string, string> = {};\n\t\t\tconst itemDefinitions: Collection<ListDropdownItemDefinition> = new Collection();\n\n\t\t\tconst headingCommand: HeadingCommand = editor.commands.get( 'heading' )!;\n\t\t\tconst paragraphCommand: ParagraphCommand = editor.commands.get( 'paragraph' )!;\n\n\t\t\tconst commands: Array<Command> = [ headingCommand ];\n\n\t\t\tfor ( const option of options ) {\n\t\t\t\tconst def: ListDropdownItemDefinition = {\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: new Model( {\n\t\t\t\t\t\tlabel: option.title,\n\t\t\t\t\t\tclass: option.class,\n\t\t\t\t\t\trole: 'menuitemradio',\n\t\t\t\t\t\twithText: true\n\t\t\t\t\t} )\n\t\t\t\t};\n\n\t\t\t\tif ( option.model === 'paragraph' ) {\n\t\t\t\t\tdef.model.bind( 'isOn' ).to( paragraphCommand, 'value' );\n\t\t\t\t\tdef.model.set( 'commandName', 'paragraph' );\n\t\t\t\t\tcommands.push( paragraphCommand );\n\t\t\t\t} else {\n\t\t\t\t\tdef.model.bind( 'isOn' ).to( headingCommand, 'value', value => value === option.model );\n\t\t\t\t\tdef.model.set( {\n\t\t\t\t\t\tcommandName: 'heading',\n\t\t\t\t\t\tcommandValue: option.model\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Add the option to the collection.\n\t\t\t\titemDefinitions.add( def );\n\n\t\t\t\ttitles[ option.model ] = option.title;\n\t\t\t}\n\n\t\t\tconst dropdownView = createDropdown( locale );\n\t\t\taddListToDropdown( dropdownView, itemDefinitions, {\n\t\t\t\tariaLabel: accessibleLabel,\n\t\t\t\trole: 'menu'\n\t\t\t} );\n\n\t\t\tdropdownView.buttonView.set( {\n\t\t\t\tariaLabel: accessibleLabel,\n\t\t\t\tariaLabelledBy: undefined,\n\t\t\t\tisOn: false,\n\t\t\t\twithText: true,\n\t\t\t\ttooltip: accessibleLabel\n\t\t\t} );\n\n\t\t\tdropdownView.extendTemplate( {\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: [\n\t\t\t\t\t\t'ck-heading-dropdown'\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tdropdownView.bind( 'isEnabled' ).toMany( commands, 'isEnabled', ( ...areEnabled ) => {\n\t\t\t\treturn areEnabled.some( isEnabled => isEnabled );\n\t\t\t} );\n\n\t\t\tdropdownView.buttonView.bind( 'label' ).to( headingCommand, 'value', paragraphCommand, 'value', ( value, para ) => {\n\t\t\t\tconst whichModel = value || para && 'paragraph';\n\n\t\t\t\tif ( typeof whichModel === 'boolean' ) {\n\t\t\t\t\treturn defaultTitle;\n\t\t\t\t}\n\n\t\t\t\t// If none of the commands is active, display default title.\n\t\t\t\tif ( !titles[ whichModel ] ) {\n\t\t\t\t\treturn defaultTitle;\n\t\t\t\t}\n\n\t\t\t\treturn titles[ whichModel ];\n\t\t\t} );\n\n\t\t\t// Execute command when an item from the dropdown is selected.\n\t\t\tthis.listenTo<ButtonExecuteEvent>( dropdownView, 'execute', evt => {\n\t\t\t\tconst { commandName, commandValue } = evt.source as any;\n\t\t\t\teditor.execute( commandName, commandValue ? { value: commandValue } : undefined );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module heading/utils\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\n\nimport type { HeadingOption } from './headingconfig';\n\n/**\n * Returns heading options as defined in `config.heading.options` but processed to consider\n * the editor localization, i.e. to display {@link module:heading/headingconfig~HeadingOption}\n * in the correct language.\n *\n * Note: The reason behind this method is that there is no way to use {@link module:utils/locale~Locale#t}\n * when the user configuration is defined because the editor does not exist yet.\n */\nexport function getLocalizedOptions( editor: Editor ): Array<HeadingOption> {\n\tconst t = editor.t;\n\tconst localizedTitles: Record<string, string> = {\n\t\t'Paragraph': t( 'Paragraph' ),\n\t\t'Heading 1': t( 'Heading 1' ),\n\t\t'Heading 2': t( 'Heading 2' ),\n\t\t'Heading 3': t( 'Heading 3' ),\n\t\t'Heading 4': t( 'Heading 4' ),\n\t\t'Heading 5': t( 'Heading 5' ),\n\t\t'Heading 6': t( 'Heading 6' )\n\t};\n\n\treturn editor.config.get( 'heading.options' )!.map( option => {\n\t\tconst title = localizedTitles[ option.title ];\n\n\t\tif ( title && title != option.title ) {\n\t\t\toption.title = title;\n\t\t}\n\n\t\treturn option;\n\t} );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/image/utils\n */\n\nimport type {\n\tDocumentSelection,\n\tMatcherPattern,\n\tSchema,\n\tSelection,\n\tViewContainerElement,\n\tDowncastWriter,\n\tViewElement\n} from 'ckeditor5/src/engine';\nimport type { Editor } from 'ckeditor5/src/core';\nimport { first } from 'ckeditor5/src/utils';\n\nimport type ImageUtils from '../imageutils';\n\n/**\n * Creates a view element representing the inline image.\n *\n * ```html\n * <span class=\"image-inline\"><img></img></span>\n * ```\n *\n * Note that `alt` and `src` attributes are converted separately, so they are not included.\n *\n * @internal\n */\nexport function createInlineImageViewElement( writer: DowncastWriter ): ViewContainerElement {\n\treturn writer.createContainerElement( 'span', { class: 'image-inline' },\n\t\twriter.createEmptyElement( 'img' )\n\t);\n}\n\n/**\n * Creates a view element representing the block image.\n *\n * ```html\n * <figure class=\"image\"><img></img></figure>\n * ```\n *\n * Note that `alt` and `src` attributes are converted separately, so they are not included.\n *\n * @internal\n */\nexport function createBlockImageViewElement( writer: DowncastWriter ): ViewContainerElement {\n\treturn writer.createContainerElement( 'figure', { class: 'image' }, [\n\t\twriter.createEmptyElement( 'img' ),\n\t\twriter.createSlot( 'children' )\n\t] );\n}\n\n/**\n * A function returning a `MatcherPattern` for a particular type of View images.\n *\n * @internal\n * @param matchImageType The type of created image.\n */\nexport function getImgViewElementMatcher( editor: Editor, matchImageType: 'imageBlock' | 'imageInline' ): MatcherPattern {\n\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\tconst areBothImagePluginsLoaded = editor.plugins.has( 'ImageInlineEditing' ) && editor.plugins.has( 'ImageBlockEditing' );\n\n\treturn element => {\n\t\t// Check if the matched view element is an <img>.\n\t\tif ( !imageUtils.isInlineImageView( element ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// If just one of the plugins is loaded (block or inline), it will match all kinds of images.\n\t\tif ( !areBothImagePluginsLoaded ) {\n\t\t\treturn getPositiveMatchPattern( element );\n\t\t}\n\n\t\t// The <img> can be standalone, wrapped in <figure>...</figure> (ImageBlock plugin) or\n\t\t// wrapped in <figure><a>...</a></figure> (LinkImage plugin).\n\t\tconst imageType = element.getStyle( 'display' ) == 'block' || element.findAncestor( imageUtils.isBlockImageView ) ?\n\t\t\t'imageBlock' :\n\t\t\t'imageInline';\n\n\t\tif ( imageType !== matchImageType ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn getPositiveMatchPattern( element );\n\t};\n\n\tfunction getPositiveMatchPattern( element: ViewElement ) {\n\t\tconst pattern: Record<string, unknown> = {\n\t\t\tname: true\n\t\t};\n\n\t\t// This will trigger src consumption (See https://github.com/ckeditor/ckeditor5/issues/11530).\n\t\tif ( element.hasAttribute( 'src' ) ) {\n\t\t\tpattern.attributes = [ 'src' ];\n\t\t}\n\n\t\treturn pattern;\n\t}\n}\n\n/**\n * Considering the current model selection, it returns the name of the model image element\n * (`'imageBlock'` or `'imageInline'`) that will make most sense from the UX perspective if a new\n * image was inserted (also: uploaded, dropped, pasted) at that selection.\n *\n * The assumption is that inserting images into empty blocks or on other block widgets should\n * produce block images. Inline images should be inserted in other cases, e.g. in paragraphs\n * that already contain some text.\n *\n * @internal\n */\nexport function determineImageTypeForInsertionAtSelection(\n\tschema: Schema,\n\tselection: Selection | DocumentSelection\n): 'imageBlock' | 'imageInline' {\n\tconst firstBlock = first( selection.getSelectedBlocks() );\n\n\t// Insert a block image if the selection is not in/on block elements or it's on a block widget.\n\tif ( !firstBlock || schema.isObject( firstBlock ) ) {\n\t\treturn 'imageBlock';\n\t}\n\n\t// A block image should also be inserted into an empty block element\n\t// (that is not an empty list item so the list won't get split).\n\tif ( firstBlock.isEmpty && firstBlock.name != 'listItem' ) {\n\t\treturn 'imageBlock';\n\t}\n\n\t// Otherwise insert an inline image.\n\treturn 'imageInline';\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imageutils\n */\n\nimport type {\n\tElement,\n\tViewElement,\n\tViewNode,\n\tDocumentSelection,\n\tViewDocumentSelection,\n\tSelection,\n\tViewSelection,\n\tDocumentFragment,\n\tViewDocumentFragment,\n\tDowncastWriter,\n\tModel,\n\tPosition\n} from 'ckeditor5/src/engine';\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\nimport { findOptimalInsertionRange, isWidget, toWidget } from 'ckeditor5/src/widget';\nimport { determineImageTypeForInsertionAtSelection } from './image/utils';\n\n/**\n * A set of helpers related to images.\n */\nexport default class ImageUtils extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageUtils' as const;\n\t}\n\n\t/**\n\t * Checks if the provided model element is an `image` or `imageInline`.\n\t */\n\tpublic isImage( modelElement?: Element | null ): modelElement is Element & { name: 'imageInline' | 'imageBlock' } {\n\t\treturn this.isInlineImage( modelElement ) || this.isBlockImage( modelElement );\n\t}\n\n\t/**\n\t * Checks if the provided view element represents an inline image.\n\t *\n\t * Also, see {@link module:image/imageutils~ImageUtils#isImageWidget}.\n\t */\n\tpublic isInlineImageView( element?: ViewElement | null ): boolean {\n\t\treturn !!element && element.is( 'element', 'img' );\n\t}\n\n\t/**\n\t * Checks if the provided view element represents a block image.\n\t *\n\t * Also, see {@link module:image/imageutils~ImageUtils#isImageWidget}.\n\t */\n\tpublic isBlockImageView( element?: ViewElement | null ): boolean {\n\t\treturn !!element && element.is( 'element', 'figure' ) && element.hasClass( 'image' );\n\t}\n\n\t/**\n\t * Handles inserting single file. This method unifies image insertion using {@link module:widget/utils~findOptimalInsertionRange}\n\t * method.\n\t *\n\t * ```ts\n\t * const imageUtils = editor.plugins.get( 'ImageUtils' );\n\t *\n\t * imageUtils.insertImage( { src: 'path/to/image.jpg' } );\n\t * ```\n\t *\n\t * @param attributes Attributes of the inserted image.\n\t * This method filters out the attributes which are disallowed by the {@link module:engine/model/schema~Schema}.\n\t * @param selectable Place to insert the image. If not specified,\n\t * the {@link module:widget/utils~findOptimalInsertionRange} logic will be applied for the block images\n\t * and `model.document.selection` for the inline images.\n\t *\n\t * **Note**: If `selectable` is passed, this helper will not be able to set selection attributes (such as `linkHref`)\n\t * and apply them to the new image. In this case, make sure all selection attributes are passed in `attributes`.\n\t *\n\t * @param imageType Image type of inserted image. If not specified,\n\t * it will be determined automatically depending of editor config or place of the insertion.\n\t * @return The inserted model image element.\n\t */\n\tpublic insertImage(\n\t\tattributes: Record<string, unknown> = {},\n\t\tselectable: Selection | Position | null = null,\n\t\timageType: ( 'imageBlock' | 'imageInline' | null ) = null\n\t): Element | null {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\n\t\timageType = determineImageTypeForInsertion( editor, selectable || selection, imageType );\n\n\t\t// Mix declarative attributes with selection attributes because the new image should \"inherit\"\n\t\t// the latter for best UX. For instance, inline images inserted into existing links\n\t\t// should not split them. To do that, they need to have \"linkHref\" inherited from the selection.\n\t\tattributes = {\n\t\t\t...Object.fromEntries( selection.getAttributes() ),\n\t\t\t...attributes\n\t\t};\n\n\t\tfor ( const attributeName in attributes ) {\n\t\t\tif ( !model.schema.checkAttribute( imageType, attributeName ) ) {\n\t\t\t\tdelete attributes[ attributeName ];\n\t\t\t}\n\t\t}\n\n\t\treturn model.change( writer => {\n\t\t\tconst imageElement = writer.createElement( imageType!, attributes );\n\n\t\t\tmodel.insertObject( imageElement, selectable, null, {\n\t\t\t\tsetSelection: 'on',\n\t\t\t\t// If we want to insert a block image (for whatever reason) then we don't want to split text blocks.\n\t\t\t\t// This applies only when we don't have the selectable specified (i.e., we insert multiple block images at once).\n\t\t\t\tfindOptimalPosition: !selectable && imageType != 'imageInline' ? 'auto' : undefined\n\t\t\t} );\n\n\t\t\t// Inserting an image might've failed due to schema regulations.\n\t\t\tif ( imageElement.parent ) {\n\t\t\t\treturn imageElement;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t} );\n\t}\n\n\t/**\n\t * Returns an image widget editing view element if one is selected or is among the selection's ancestors.\n\t */\n\tpublic getClosestSelectedImageWidget( selection: ViewSelection | ViewDocumentSelection ): ViewElement | null {\n\t\tconst selectionPosition = selection.getFirstPosition();\n\n\t\tif ( !selectionPosition ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst viewElement = selection.getSelectedElement();\n\n\t\tif ( viewElement && this.isImageWidget( viewElement ) ) {\n\t\t\treturn viewElement;\n\t\t}\n\n\t\tlet parent: ViewNode | ViewDocumentFragment | null = selectionPosition.parent;\n\n\t\twhile ( parent ) {\n\t\t\tif ( parent.is( 'element' ) && this.isImageWidget( parent ) ) {\n\t\t\t\treturn parent;\n\t\t\t}\n\n\t\t\tparent = parent.parent;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns a image model element if one is selected or is among the selection's ancestors.\n\t */\n\tpublic getClosestSelectedImageElement( selection: Selection | DocumentSelection ): Element | null {\n\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\treturn this.isImage( selectedElement ) ? selectedElement : selection.getFirstPosition()!.findAncestor( 'imageBlock' );\n\t}\n\n\t/**\n\t * Checks if image can be inserted at current model selection.\n\t *\n\t * @internal\n\t */\n\tpublic isImageAllowed(): boolean {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\n\t\treturn isImageAllowedInParent( this.editor, selection ) && isNotInsideImage( selection );\n\t}\n\n\t/**\n\t * Converts a given {@link module:engine/view/element~Element} to an image widget:\n\t * * Adds a {@link module:engine/view/element~Element#_setCustomProperty custom property} allowing to recognize the image widget\n\t * element.\n\t * * Calls the {@link module:widget/utils~toWidget} function with the proper element's label creator.\n\t *\n\t * @param writer An instance of the view writer.\n\t * @param label The element's label. It will be concatenated with the image `alt` attribute if one is present.\n\t */\n\tpublic toImageWidget( viewElement: ViewElement, writer: DowncastWriter, label: string ): ViewElement {\n\t\twriter.setCustomProperty( 'image', true, viewElement );\n\n\t\tconst labelCreator = () => {\n\t\t\tconst imgElement = this.findViewImgElement( viewElement )!;\n\t\t\tconst altText = imgElement.getAttribute( 'alt' );\n\n\t\t\treturn altText ? `${ altText } ${ label }` : label;\n\t\t};\n\n\t\treturn toWidget( viewElement, writer, { label: labelCreator } );\n\t}\n\n\t/**\n\t * Checks if a given view element is an image widget.\n\t */\n\tprotected isImageWidget( viewElement: ViewElement ): boolean {\n\t\treturn !!viewElement.getCustomProperty( 'image' ) && isWidget( viewElement );\n\t}\n\n\t/**\n\t * Checks if the provided model element is an `image`.\n\t */\n\tpublic isBlockImage( modelElement?: Element | null ): boolean {\n\t\treturn !!modelElement && modelElement.is( 'element', 'imageBlock' );\n\t}\n\n\t/**\n\t * Checks if the provided model element is an `imageInline`.\n\t */\n\tpublic isInlineImage( modelElement?: Element | null ): boolean {\n\t\treturn !!modelElement && modelElement.is( 'element', 'imageInline' );\n\t}\n\n\t/**\n\t * Get the view `<img>` from another view element, e.g. a widget (`<figure class=\"image\">`), a link (`<a>`).\n\t *\n\t * The `<img>` can be located deep in other elements, so this helper performs a deep tree search.\n\t */\n\tpublic findViewImgElement( figureView: ViewElement ): ViewElement | undefined {\n\t\tif ( this.isInlineImageView( figureView ) ) {\n\t\t\treturn figureView;\n\t\t}\n\n\t\tconst editingView = this.editor.editing.view;\n\n\t\tfor ( const { item } of editingView.createRangeIn( figureView ) ) {\n\t\t\tif ( this.isInlineImageView( item as ViewElement ) ) {\n\t\t\t\treturn item as ViewElement;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Checks if image is allowed by schema in optimal insertion parent.\n */\nfunction isImageAllowedInParent( editor: Editor, selection: Selection | DocumentSelection ): boolean {\n\tconst imageType = determineImageTypeForInsertion( editor, selection, null );\n\n\tif ( imageType == 'imageBlock' ) {\n\t\tconst parent = getInsertImageParent( selection, editor.model );\n\n\t\tif ( editor.model.schema.checkChild( parent as Element, 'imageBlock' ) ) {\n\t\t\treturn true;\n\t\t}\n\t} else if ( editor.model.schema.checkChild( selection.focus!, 'imageInline' ) ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * Checks if selection is not placed inside an image (e.g. its caption).\n */\nfunction isNotInsideImage( selection: DocumentSelection ): boolean {\n\treturn [ ...selection.focus!.getAncestors() ].every( ancestor => !ancestor.is( 'element', 'imageBlock' ) );\n}\n\n/**\n * Returns a node that will be used to insert image with `model.insertContent`.\n */\nfunction getInsertImageParent( selection: Selection | DocumentSelection, model: Model ): Element | DocumentFragment {\n\tconst insertionRange = findOptimalInsertionRange( selection, model );\n\tconst parent = insertionRange.start.parent;\n\n\tif ( parent.isEmpty && !parent.is( 'element', '$root' ) ) {\n\t\treturn parent.parent!;\n\t}\n\n\treturn parent;\n}\n\n/**\n * Determine image element type name depending on editor config or place of insertion.\n *\n * @param imageType Image element type name. Used to force return of provided element name,\n * but only if there is proper plugin enabled.\n */\nfunction determineImageTypeForInsertion(\n\teditor: Editor,\n\tselectable: Position | Selection | DocumentSelection,\n\timageType: 'imageBlock' | 'imageInline' | null\n): 'imageBlock' | 'imageInline' {\n\tconst schema = editor.model.schema;\n\tconst configImageInsertType = editor.config.get( 'image.insert.type' );\n\n\tif ( !editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\treturn 'imageInline';\n\t}\n\n\tif ( !editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\treturn 'imageBlock';\n\t}\n\n\tif ( imageType ) {\n\t\treturn imageType;\n\t}\n\n\tif ( configImageInsertType === 'inline' ) {\n\t\treturn 'imageInline';\n\t}\n\n\tif ( configImageInsertType === 'block' ) {\n\t\treturn 'imageBlock';\n\t}\n\n\t// Try to replace the selected widget (e.g. another image).\n\tif ( selectable.is( 'selection' ) ) {\n\t\treturn determineImageTypeForInsertionAtSelection( schema, selectable );\n\t}\n\n\treturn schema.checkChild( selectable, 'imageInline' ) ? 'imageInline' : 'imageBlock';\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/autoimage\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\nimport { Clipboard, type ClipboardPipeline } from 'ckeditor5/src/clipboard';\nimport { LivePosition, LiveRange } from 'ckeditor5/src/engine';\nimport { Undo } from 'ckeditor5/src/undo';\nimport { Delete } from 'ckeditor5/src/typing';\nimport { global } from 'ckeditor5/src/utils';\n\nimport ImageUtils from './imageutils';\n\n// Implements the pattern: http(s)://(www.)example.com/path/to/resource.ext?query=params&maybe=too.\nconst IMAGE_URL_REGEXP = new RegExp( String( /^(http(s)?:\\/\\/)?[\\w-]+\\.[\\w.~:/[\\]@!$&'()*+,;=%-]+/.source +\n\t/\\.(jpg|jpeg|png|gif|ico|webp|JPG|JPEG|PNG|GIF|ICO|WEBP)/.source +\n\t/(\\?[\\w.~:/[\\]@!$&'()*+,;=%-]*)?/.source +\n\t/(#[\\w.~:/[\\]@!$&'()*+,;=%-]*)?$/.source ) );\n\n/**\n * The auto-image plugin. It recognizes image links in the pasted content and embeds\n * them shortly after they are injected into the document.\n */\nexport default class AutoImage extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Clipboard, ImageUtils, Undo, Delete ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'AutoImage' as const;\n\t}\n\n\t/**\n\t * The paste–to–embed `setTimeout` ID. Stored as a property to allow\n\t * cleaning of the timeout.\n\t */\n\tprivate _timeoutId: ReturnType<typeof setTimeout> | null;\n\n\t/**\n\t * The position where the `<imageBlock>` element will be inserted after the timeout,\n\t * determined each time a new content is pasted into the document.\n\t */\n\tprivate _positionToInsert: LivePosition | null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._timeoutId = null;\n\n\t\tthis._positionToInsert = null;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst modelDocument = editor.model.document;\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\n\t\t// We need to listen on `Clipboard#inputTransformation` because we need to save positions of selection.\n\t\t// After pasting, the content between those positions will be checked for a URL that could be transformed\n\t\t// into an image.\n\t\tthis.listenTo( clipboardPipeline, 'inputTransformation', () => {\n\t\t\tconst firstRange = modelDocument.selection.getFirstRange()!;\n\n\t\t\tconst leftLivePosition = LivePosition.fromPosition( firstRange.start );\n\t\t\tleftLivePosition.stickiness = 'toPrevious';\n\n\t\t\tconst rightLivePosition = LivePosition.fromPosition( firstRange.end );\n\t\t\trightLivePosition.stickiness = 'toNext';\n\n\t\t\tmodelDocument.once( 'change:data', () => {\n\t\t\t\tthis._embedImageBetweenPositions( leftLivePosition, rightLivePosition );\n\n\t\t\t\tleftLivePosition.detach();\n\t\t\t\trightLivePosition.detach();\n\t\t\t}, { priority: 'high' } );\n\t\t} );\n\n\t\teditor.commands.get( 'undo' )!.on( 'execute', () => {\n\t\t\tif ( this._timeoutId ) {\n\t\t\t\tglobal.window.clearTimeout( this._timeoutId );\n\t\t\t\tthis._positionToInsert!.detach();\n\n\t\t\t\tthis._timeoutId = null;\n\t\t\t\tthis._positionToInsert = null;\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Analyzes the part of the document between provided positions in search for a URL representing an image.\n\t * When the URL is found, it is automatically converted into an image.\n\t *\n\t * @param leftPosition Left position of the selection.\n\t * @param rightPosition Right position of the selection.\n\t */\n\tprivate _embedImageBetweenPositions( leftPosition: LivePosition, rightPosition: LivePosition ): void {\n\t\tconst editor = this.editor;\n\t\t// TODO: Use a marker instead of LiveRange & LivePositions.\n\t\tconst urlRange = new LiveRange( leftPosition, rightPosition );\n\t\tconst walker = urlRange.getWalker( { ignoreElementEnd: true } );\n\t\tconst selectionAttributes = Object.fromEntries( editor.model.document.selection.getAttributes() );\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\tlet src = '';\n\n\t\tfor ( const node of walker ) {\n\t\t\tif ( node.item.is( '$textProxy' ) ) {\n\t\t\t\tsrc += node.item.data;\n\t\t\t}\n\t\t}\n\n\t\tsrc = src.trim();\n\n\t\t// If the URL does not match the image URL regexp, let's skip that.\n\t\tif ( !src.match( IMAGE_URL_REGEXP ) ) {\n\t\t\turlRange.detach();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Position will not be available in the `setTimeout` function so let's clone it.\n\t\tthis._positionToInsert = LivePosition.fromPosition( leftPosition );\n\n\t\t// This action mustn't be executed if undo was called between pasting and auto-embedding.\n\t\tthis._timeoutId = setTimeout( () => {\n\t\t\t// Do nothing if image element cannot be inserted at the current position.\n\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/2763.\n\t\t\t// Condition must be checked after timeout - pasting may take place on an element, replacing it. The final position matters.\n\t\t\tconst imageCommand = editor.commands.get( 'insertImage' )!;\n\n\t\t\tif ( !imageCommand.isEnabled ) {\n\t\t\t\turlRange.detach();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\teditor.model.change( writer => {\n\t\t\t\tthis._timeoutId = null;\n\n\t\t\t\twriter.remove( urlRange );\n\t\t\t\turlRange.detach();\n\n\t\t\t\tlet insertionPosition;\n\n\t\t\t\t// Check if the position where the element should be inserted is still valid.\n\t\t\t\t// Otherwise leave it as undefined to use the logic of insertImage().\n\t\t\t\tif ( this._positionToInsert!.root.rootName !== '$graveyard' ) {\n\t\t\t\t\tinsertionPosition = this._positionToInsert!.toPosition();\n\t\t\t\t}\n\n\t\t\t\timageUtils.insertImage( { ...selectionAttributes, src }, insertionPosition );\n\n\t\t\t\tthis._positionToInsert!.detach();\n\t\t\t\tthis._positionToInsert = null;\n\t\t\t} );\n\n\t\t\tconst deletePlugin: Delete = editor.plugins.get( 'Delete' );\n\n\t\t\tdeletePlugin.requestUndoOnBackspace();\n\t\t}, 100 );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imagetextalternative/imagetextalternativecommand\n */\n\nimport { Command } from 'ckeditor5/src/core';\nimport type ImageUtils from '../imageutils';\n\n/**\n * The image text alternative command. It is used to change the `alt` attribute of `<imageBlock>` and `<imageInline>` model elements.\n */\nexport default class ImageTextAlternativeCommand extends Command {\n\t/**\n\t * The command value: `false` if there is no `alt` attribute, otherwise the value of the `alt` attribute.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public value: string | false;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst element = imageUtils.getClosestSelectedImageElement( this.editor.model.document.selection )!;\n\n\t\tthis.isEnabled = !!element;\n\n\t\tif ( this.isEnabled && element.hasAttribute( 'alt' ) ) {\n\t\t\tthis.value = element.getAttribute( 'alt' ) as string | false;\n\t\t} else {\n\t\t\tthis.value = false;\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t * @param options\n\t * @param options.newValue The new value of the `alt` attribute to set.\n\t */\n\tpublic override execute( options: { newValue: string } ): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst model = editor.model;\n\t\tconst imageElement = imageUtils.getClosestSelectedImageElement( model.document.selection );\n\n\t\tmodel.change( writer => {\n\t\t\twriter.setAttribute( 'alt', options.newValue, imageElement! );\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imagetextalternative/imagetextalternativeediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport ImageTextAlternativeCommand from './imagetextalternativecommand';\nimport ImageUtils from '../imageutils';\n\n/**\n * The image text alternative editing plugin.\n *\n * Registers the `'imageTextAlternative'` command.\n */\nexport default class ImageTextAlternativeEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageUtils ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageTextAlternativeEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tthis.editor.commands.add( 'imageTextAlternative', new ImageTextAlternativeCommand( this.editor ) );\n\t}\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./textalternativeform.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./responsiveform.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imagetextalternative/ui/textalternativeformview\n */\n\nimport {\n\tButtonView,\n\tFocusCycler,\n\tLabeledFieldView,\n\tView,\n\tViewCollection,\n\tcreateLabeledInputText,\n\tsubmitHandler,\n\ttype InputView\n} from 'ckeditor5/src/ui';\nimport { FocusTracker, KeystrokeHandler, type Locale } from 'ckeditor5/src/utils';\nimport { icons } from 'ckeditor5/src/core';\n\nimport '../../../theme/textalternativeform.css';\n\n// See: #8833.\n// eslint-disable-next-line ckeditor5-rules/ckeditor-imports\nimport '@ckeditor/ckeditor5-ui/theme/components/responsive-form/responsiveform.css';\n\n/**\n * The TextAlternativeFormView class.\n */\nexport default class TextAlternativeFormView extends View {\n\t/**\n\t * Tracks information about the DOM focus in the form.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * An input with a label.\n\t */\n\tpublic labeledInput: LabeledFieldView<InputView>;\n\n\t/**\n\t * A button used to submit the form.\n\t */\n\tpublic saveButtonView: ButtonView;\n\n\t/**\n\t * A button used to cancel the form.\n\t */\n\tpublic cancelButtonView: ButtonView;\n\n\t/**\n\t * A collection of views which can be focused in the form.\n\t */\n\tprotected readonly _focusables: ViewCollection;\n\n\t/**\n\t * Helps cycling over {@link #_focusables} in the form.\n\t */\n\tprotected readonly _focusCycler: FocusCycler;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale: Locale ) {\n\t\tsuper( locale );\n\t\tconst t = this.locale!.t;\n\n\t\tthis.focusTracker = new FocusTracker();\n\n\t\tthis.keystrokes = new KeystrokeHandler();\n\n\t\tthis.labeledInput = this._createLabeledInputView();\n\n\t\tthis.saveButtonView = this._createButton( t( 'Save' ), icons.check, 'ck-button-save' );\n\t\tthis.saveButtonView.type = 'submit';\n\n\t\tthis.cancelButtonView = this._createButton( t( 'Cancel' ), icons.cancel, 'ck-button-cancel', 'cancel' );\n\n\t\tthis._focusables = new ViewCollection();\n\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate form fields backwards using the Shift + Tab keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate form fields forwards using the Tab key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'form',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-text-alternative-form',\n\t\t\t\t\t'ck-responsive-form'\n\t\t\t\t],\n\n\t\t\t\t// https://github.com/ckeditor/ckeditor5-image/issues/40\n\t\t\t\ttabindex: '-1'\n\t\t\t},\n\n\t\t\tchildren: [\n\t\t\t\tthis.labeledInput,\n\t\t\t\tthis.saveButtonView,\n\t\t\t\tthis.cancelButtonView\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis.keystrokes.listenTo( this.element! );\n\n\t\tsubmitHandler( { view: this } );\n\n\t\t[ this.labeledInput, this.saveButtonView, this.cancelButtonView ]\n\t\t\t.forEach( v => {\n\t\t\t\t// Register the view as focusable.\n\t\t\t\tthis._focusables.add( v );\n\n\t\t\t\t// Register the view in the focus tracker.\n\t\t\t\tthis.focusTracker.add( v.element! );\n\t\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Creates the button view.\n\t *\n\t * @param label The button label\n\t * @param icon The button's icon.\n\t * @param className The additional button CSS class name.\n\t * @param eventName The event name that the ButtonView#execute event will be delegated to.\n\t * @returns The button view instance.\n\t */\n\tprivate _createButton( label: string, icon: string, className: string, eventName?: string ): ButtonView {\n\t\tconst button = new ButtonView( this.locale );\n\n\t\tbutton.set( {\n\t\t\tlabel,\n\t\t\ticon,\n\t\t\ttooltip: true\n\t\t} );\n\n\t\tbutton.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: className\n\t\t\t}\n\t\t} );\n\n\t\tif ( eventName ) {\n\t\t\tbutton.delegate( 'execute' ).to( this, eventName );\n\t\t}\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Creates an input with a label.\n\t *\n\t * @returns Labeled field view instance.\n\t */\n\tprivate _createLabeledInputView(): LabeledFieldView<InputView> {\n\t\tconst t = this.locale!.t;\n\t\tconst labeledInput = new LabeledFieldView<InputView>( this.locale, createLabeledInputText );\n\n\t\tlabeledInput.label = t( 'Text alternative' );\n\n\t\treturn labeledInput;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/image/ui/utils\n */\n\nimport type { PositionOptions } from 'ckeditor5/src/utils';\nimport type { Editor } from 'ckeditor5/src/core';\nimport { BalloonPanelView, type ContextualBalloon } from 'ckeditor5/src/ui';\n\nimport type ImageUtils from '../../imageutils';\n\n/**\n * A helper utility that positions the\n * {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} instance\n * with respect to the image in the editor content, if one is selected.\n *\n * @param editor The editor instance.\n */\nexport function repositionContextualBalloon( editor: Editor ): void {\n\tconst balloon: ContextualBalloon = editor.plugins.get( 'ContextualBalloon' );\n\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\tif ( imageUtils.getClosestSelectedImageWidget( editor.editing.view.document.selection ) ) {\n\t\tconst position = getBalloonPositionData( editor );\n\n\t\tballoon.updatePosition( position );\n\t}\n}\n\n/**\n * Returns the positioning options that control the geometry of the\n * {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} with respect\n * to the selected element in the editor content.\n *\n * @param editor The editor instance.\n */\nexport function getBalloonPositionData( editor: Editor ): Partial<PositionOptions> {\n\tconst editingView = editor.editing.view;\n\tconst defaultPositions = BalloonPanelView.defaultPositions;\n\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\treturn {\n\t\ttarget: editingView.domConverter.mapViewToDom(\n\t\t\timageUtils.getClosestSelectedImageWidget( editingView.document.selection )!\n\t\t) as HTMLElement,\n\t\tpositions: [\n\t\t\tdefaultPositions.northArrowSouth,\n\t\t\tdefaultPositions.northArrowSouthWest,\n\t\t\tdefaultPositions.northArrowSouthEast,\n\t\t\tdefaultPositions.southArrowNorth,\n\t\t\tdefaultPositions.southArrowNorthWest,\n\t\t\tdefaultPositions.southArrowNorthEast,\n\t\t\tdefaultPositions.viewportStickyNorth\n\t\t]\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imagetextalternative/imagetextalternativeui\n */\n\nimport { Plugin, icons } from 'ckeditor5/src/core';\nimport {\n\tButtonView,\n\tContextualBalloon,\n\tclickOutsideHandler,\n\tCssTransitionDisablerMixin,\n\ttype ViewWithCssTransitionDisabler\n} from 'ckeditor5/src/ui';\n\nimport TextAlternativeFormView from './ui/textalternativeformview';\nimport { repositionContextualBalloon, getBalloonPositionData } from '../image/ui/utils';\nimport type { CancelEvent, SubmitEvent } from '../imageinsert/ui/imageinsertpanelview';\nimport type ImageTextAlternativeCommand from './imagetextalternativecommand';\nimport type ImageUtils from '../imageutils';\n\n/**\n * The image text alternative UI plugin.\n *\n * The plugin uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon}.\n */\nexport default class ImageTextAlternativeUI extends Plugin {\n\t/**\n\t * The contextual balloon plugin instance.\n\t */\n\tprivate _balloon?: ContextualBalloon;\n\n\t/**\n\t * A form containing a textarea and buttons, used to change the `alt` text value.\n\t */\n\tprivate _form?: TextAlternativeFormView & ViewWithCssTransitionDisabler;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ContextualBalloon ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageTextAlternativeUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tthis._createButton();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\t// Destroy created UI components as they are not automatically destroyed (see ckeditor5#1341).\n\t\tif ( this._form ) {\n\t\t\tthis._form.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * Creates a button showing the balloon panel for changing the image text alternative and\n\t * registers it in the editor {@link module:ui/componentfactory~ComponentFactory ComponentFactory}.\n\t */\n\tprivate _createButton(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\teditor.ui.componentFactory.add( 'imageTextAlternative', locale => {\n\t\t\tconst command: ImageTextAlternativeCommand = editor.commands.get( 'imageTextAlternative' )!;\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\tlabel: t( 'Change image text alternative' ),\n\t\t\t\ticon: icons.lowVision,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tview.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\t\t\tview.bind( 'isOn' ).to( command, 'value', value => !!value );\n\n\t\t\tthis.listenTo( view, 'execute', () => {\n\t\t\t\tthis._showForm();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n\n\t/**\n\t * Creates the {@link module:image/imagetextalternative/ui/textalternativeformview~TextAlternativeFormView}\n\t * form.\n\t */\n\tprivate _createForm(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\tthis._balloon = this.editor.plugins.get( 'ContextualBalloon' );\n\n\t\tthis._form = new ( CssTransitionDisablerMixin( TextAlternativeFormView ) )( editor.locale );\n\n\t\t// Render the form so its #element is available for clickOutsideHandler.\n\t\tthis._form.render();\n\n\t\tthis.listenTo<SubmitEvent>( this._form, 'submit', () => {\n\t\t\teditor.execute( 'imageTextAlternative', {\n\t\t\t\tnewValue: this._form!.labeledInput.fieldView.element!.value\n\t\t\t} );\n\n\t\t\tthis._hideForm( true );\n\t\t} );\n\n\t\tthis.listenTo<CancelEvent>( this._form, 'cancel', () => {\n\t\t\tthis._hideForm( true );\n\t\t} );\n\n\t\t// Close the form on Esc key press.\n\t\tthis._form.keystrokes.set( 'Esc', ( data, cancel ) => {\n\t\t\tthis._hideForm( true );\n\t\t\tcancel();\n\t\t} );\n\n\t\t// Reposition the balloon or hide the form if an image widget is no longer selected.\n\t\tthis.listenTo( editor.ui, 'update', () => {\n\t\t\tif ( !imageUtils.getClosestSelectedImageWidget( viewDocument.selection ) ) {\n\t\t\t\tthis._hideForm( true );\n\t\t\t} else if ( this._isVisible ) {\n\t\t\t\trepositionContextualBalloon( editor );\n\t\t\t}\n\t\t} );\n\n\t\t// Close on click outside of balloon panel element.\n\t\tclickOutsideHandler( {\n\t\t\temitter: this._form,\n\t\t\tactivator: () => this._isVisible,\n\t\t\tcontextElements: () => [ this._balloon!.view.element! ],\n\t\t\tcallback: () => this._hideForm()\n\t\t} );\n\t}\n\n\t/**\n\t * Shows the {@link #_form} in the {@link #_balloon}.\n\t */\n\tprivate _showForm(): void {\n\t\tif ( this._isVisible ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this._form ) {\n\t\t\tthis._createForm();\n\t\t}\n\n\t\tconst editor = this.editor;\n\t\tconst command: ImageTextAlternativeCommand = editor.commands.get( 'imageTextAlternative' )!;\n\t\tconst labeledInput = this._form!.labeledInput;\n\n\t\tthis._form!.disableCssTransitions();\n\n\t\tif ( !this._isInBalloon ) {\n\t\t\tthis._balloon!.add( {\n\t\t\t\tview: this._form!,\n\t\t\t\tposition: getBalloonPositionData( editor )\n\t\t\t} );\n\t\t}\n\n\t\t// Make sure that each time the panel shows up, the field remains in sync with the value of\n\t\t// the command. If the user typed in the input, then canceled the balloon (`labeledInput#value`\n\t\t// stays unaltered) and re-opened it without changing the value of the command, they would see the\n\t\t// old value instead of the actual value of the command.\n\t\t// https://github.com/ckeditor/ckeditor5-image/issues/114\n\t\tlabeledInput.fieldView.value = labeledInput.fieldView.element!.value = command.value || '';\n\n\t\tthis._form!.labeledInput.fieldView.select();\n\n\t\tthis._form!.enableCssTransitions();\n\t}\n\n\t/**\n\t * Removes the {@link #_form} from the {@link #_balloon}.\n\t *\n\t * @param focusEditable Controls whether the editing view is focused afterwards.\n\t */\n\tprivate _hideForm( focusEditable: boolean = false ): void {\n\t\tif ( !this._isInBalloon ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Blur the input element before removing it from DOM to prevent issues in some browsers.\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/1501.\n\t\tif ( this._form!.focusTracker.isFocused ) {\n\t\t\tthis._form!.saveButtonView.focus();\n\t\t}\n\n\t\tthis._balloon!.remove( this._form! );\n\n\t\tif ( focusEditable ) {\n\t\t\tthis.editor.editing.view.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Returns `true` when the {@link #_form} is the visible view in the {@link #_balloon}.\n\t */\n\tprivate get _isVisible(): boolean {\n\t\treturn !!this._balloon && this._balloon.visibleView === this._form;\n\t}\n\n\t/**\n\t * Returns `true` when the {@link #_form} is in the {@link #_balloon}.\n\t */\n\tprivate get _isInBalloon(): boolean {\n\t\treturn !!this._balloon && this._balloon.hasView( this._form! );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imagetextalternative\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport ImageTextAlternativeEditing from './imagetextalternative/imagetextalternativeediting';\nimport ImageTextAlternativeUI from './imagetextalternative/imagetextalternativeui';\n\n/**\n * The image text alternative plugin.\n *\n * For a detailed overview, check the {@glink features/images/images-styles image styles} documentation.\n *\n * This is a \"glue\" plugin which loads the\n * {@link module:image/imagetextalternative/imagetextalternativeediting~ImageTextAlternativeEditing}\n * and {@link module:image/imagetextalternative/imagetextalternativeui~ImageTextAlternativeUI} plugins.\n */\nexport default class ImageTextAlternative extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageTextAlternativeEditing, ImageTextAlternativeUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageTextAlternative' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/image/converters\n */\n\nimport type {\n\tDowncastDispatcher,\n\tElement,\n\tUpcastDispatcher,\n\tUpcastElementEvent,\n\tViewElement,\n\tViewElementAttributes,\n\tDowncastAttributeEvent\n} from 'ckeditor5/src/engine';\nimport { first, type GetCallback } from 'ckeditor5/src/utils';\nimport type ImageUtils from '../imageutils';\n\ntype SrcsetAttributeType = null | { data: unknown; width: unknown };\n\n/**\n * Returns a function that converts the image view representation:\n *\n * ```html\n * <figure class=\"image\"><img src=\"...\" alt=\"...\"></img></figure>\n * ```\n *\n * to the model representation:\n *\n * ```html\n * <imageBlock src=\"...\" alt=\"...\"></imageBlock>\n * ```\n *\n * The entire content of the `<figure>` element except the first `<img>` is being converted as children\n * of the `<imageBlock>` model element.\n *\n * @internal\n */\nexport function upcastImageFigure( imageUtils: ImageUtils ): ( dispatcher: UpcastDispatcher ) => void {\n\tconst converter: GetCallback<UpcastElementEvent> = ( evt, data, conversionApi ) => {\n\t\t// Do not convert if this is not an \"image figure\".\n\t\tif ( !conversionApi.consumable.test( data.viewItem, { name: true, classes: 'image' } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find an image element inside the figure element.\n\t\tconst viewImage = imageUtils.findViewImgElement( data.viewItem );\n\n\t\t// Do not convert if image element is absent or was already converted.\n\t\tif ( !viewImage || !conversionApi.consumable.test( viewImage, { name: true } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Consume the figure to prevent other converters from processing it again.\n\t\tconversionApi.consumable.consume( data.viewItem, { name: true, classes: 'image' } );\n\n\t\t// Convert view image to model image.\n\t\tconst conversionResult = conversionApi.convertItem( viewImage, data.modelCursor );\n\n\t\t// Get image element from conversion result.\n\t\tconst modelImage = first( conversionResult.modelRange!.getItems() ) as Element;\n\n\t\t// When image wasn't successfully converted then finish conversion.\n\t\tif ( !modelImage ) {\n\t\t\t// Revert consumed figure so other features can convert it.\n\t\t\tconversionApi.consumable.revert( data.viewItem, { name: true, classes: 'image' } );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Convert rest of the figure element's children as an image children.\n\t\tconversionApi.convertChildren( data.viewItem, modelImage );\n\n\t\tconversionApi.updateConversionResult( modelImage, data );\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<UpcastElementEvent>( 'element:figure', converter );\n\t};\n}\n\n/**\n * Returns a function that converts the image view representation:\n *\n * ```html\n * <picture><source ... /><source ... />...<img ... /></picture>\n * ```\n *\n * to the model representation as the `sources` attribute:\n *\n * ```html\n * <image[Block|Inline] ... sources=\"...\"></image[Block|Inline]>\n * ```\n *\n * @internal\n */\nexport function upcastPicture( imageUtils: ImageUtils ): ( dispatcher: UpcastDispatcher ) => void {\n\tconst sourceAttributeNames = [ 'srcset', 'media', 'type', 'sizes' ];\n\n\tconst converter: GetCallback<UpcastElementEvent> = ( evt, data, conversionApi ) => {\n\t\tconst pictureViewElement = data.viewItem;\n\n\t\t// Do not convert <picture> if already consumed.\n\t\tif ( !conversionApi.consumable.test( pictureViewElement, { name: true } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst sources = new Map<ViewElement, Record<string, string | undefined>>();\n\n\t\t// Collect all <source /> elements attribute values.\n\t\tfor ( const childSourceElement of pictureViewElement.getChildren() ) {\n\t\t\tif ( childSourceElement.is( 'element', 'source' ) ) {\n\t\t\t\tconst attributes: Record<string, string | undefined> = {};\n\n\t\t\t\tfor ( const name of sourceAttributeNames ) {\n\t\t\t\t\tif ( childSourceElement.hasAttribute( name ) ) {\n\t\t\t\t\t\t// Don't collect <source /> attribute if already consumed somewhere else.\n\t\t\t\t\t\tif ( conversionApi.consumable.test( childSourceElement, { attributes: name } ) ) {\n\t\t\t\t\t\t\tattributes[ name ] = childSourceElement.getAttribute( name );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( Object.keys( attributes ).length ) {\n\t\t\t\t\tsources.set( childSourceElement, attributes );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst imgViewElement = imageUtils.findViewImgElement( pictureViewElement );\n\n\t\t// Don't convert when a picture has no <img/> inside (it is broken).\n\t\tif ( !imgViewElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet modelImage = data.modelCursor.parent;\n\n\t\t// - In case of an inline image (cursor parent in a <paragraph>), the <img/> must be converted right away\n\t\t// because no converter handled it yet and otherwise there would be no model element to set the sources attribute on.\n\t\t// - In case of a block image, the <figure class=\"image\"> converter (in ImageBlockEditing) converts the\n\t\t// <img/> right away on its own and the modelCursor is already inside an imageBlock and there's nothing special\n\t\t// to do here.\n\t\tif ( !modelImage.is( 'element', 'imageBlock' ) ) {\n\t\t\tconst conversionResult = conversionApi.convertItem( imgViewElement, data.modelCursor );\n\n\t\t\t// Set image range as conversion result.\n\t\t\tdata.modelRange = conversionResult.modelRange;\n\n\t\t\t// Continue conversion where image conversion ends.\n\t\t\tdata.modelCursor = conversionResult.modelCursor;\n\n\t\t\tmodelImage = first( conversionResult.modelRange!.getItems() ) as Element;\n\t\t}\n\n\t\tconversionApi.consumable.consume( pictureViewElement, { name: true } );\n\n\t\t// Consume only these <source/> attributes that were actually collected and will be passed on\n\t\t// to the image model element.\n\t\tfor ( const [ sourceElement, attributes ] of sources ) {\n\t\t\tconversionApi.consumable.consume( sourceElement, { attributes: Object.keys( attributes ) } );\n\t\t}\n\n\t\tif ( sources.size ) {\n\t\t\tconversionApi.writer.setAttribute( 'sources', Array.from( sources.values() ), modelImage );\n\t\t}\n\n\t\t// Convert rest of the <picture> children as an image children. Other converters may want to consume them.\n\t\tconversionApi.convertChildren( pictureViewElement, modelImage );\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<UpcastElementEvent>( 'element:picture', converter );\n\t};\n}\n\n/**\n * Converter used to convert the `srcset` model image attribute to the `srcset`, `sizes` and `width` attributes in the view.\n *\n * @internal\n * @param imageType The type of the image.\n */\nexport function downcastSrcsetAttribute(\n\timageUtils: ImageUtils,\n\timageType: 'imageBlock' | 'imageInline'\n): ( dispatcher: DowncastDispatcher ) => void {\n\tconst converter: GetCallback<DowncastAttributeEvent<Element>> = ( evt, data, conversionApi\t) => {\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst writer = conversionApi.writer;\n\t\tconst element = conversionApi.mapper.toViewElement( data.item )!;\n\t\tconst img = imageUtils.findViewImgElement( element )!;\n\n\t\tif ( data.attributeNewValue === null ) {\n\t\t\tconst srcset = data.attributeOldValue as SrcsetAttributeType;\n\n\t\t\tif ( srcset && srcset.data ) {\n\t\t\t\twriter.removeAttribute( 'srcset', img );\n\t\t\t\twriter.removeAttribute( 'sizes', img );\n\n\t\t\t\tif ( srcset.width ) {\n\t\t\t\t\twriter.removeAttribute( 'width', img );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconst srcset = data.attributeNewValue as SrcsetAttributeType;\n\n\t\t\tif ( srcset && srcset.data ) {\n\t\t\t\twriter.setAttribute( 'srcset', srcset.data, img );\n\t\t\t\t// Always outputting `100vw`. See https://github.com/ckeditor/ckeditor5-image/issues/2.\n\t\t\t\twriter.setAttribute( 'sizes', '100vw', img );\n\n\t\t\t\tif ( srcset.width ) {\n\t\t\t\t\twriter.setAttribute( 'width', srcset.width, img );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<DowncastAttributeEvent<Element>>( `attribute:srcset:${ imageType }`, converter );\n\t};\n}\n\n/**\n * Converts the `source` model attribute to the `<picture><source /><source />...<img /></picture>`\n * view structure.\n *\n * @internal\n */\nexport function downcastSourcesAttribute( imageUtils: ImageUtils ): ( dispatcher: DowncastDispatcher ) => void {\n\tconst converter: GetCallback<DowncastAttributeEvent<Element>> = ( evt, data, conversionApi\t) => {\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst element = conversionApi.mapper.toViewElement( data.item )!;\n\t\tconst imgElement = imageUtils.findViewImgElement( element )!;\n\t\tconst attributeNewValue = data.attributeNewValue as null | Array<ViewElementAttributes>;\n\n\t\tif ( attributeNewValue && attributeNewValue.length ) {\n\t\t\t// Make sure <picture> does not break attribute elements, for instance <a> in linked images.\n\t\t\tconst pictureElement = viewWriter.createContainerElement( 'picture', null,\n\t\t\t\tattributeNewValue.map( sourceAttributes => {\n\t\t\t\t\treturn viewWriter.createEmptyElement( 'source', sourceAttributes );\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\t// Collect all wrapping attribute elements.\n\t\t\tconst attributeElements = [];\n\t\t\tlet viewElement = imgElement.parent;\n\n\t\t\twhile ( viewElement && viewElement.is( 'attributeElement' ) ) {\n\t\t\t\tconst parentElement = viewElement.parent;\n\n\t\t\t\tviewWriter.unwrap( viewWriter.createRangeOn( imgElement ), viewElement );\n\n\t\t\t\tattributeElements.unshift( viewElement );\n\t\t\t\tviewElement = parentElement;\n\t\t\t}\n\n\t\t\t// Insert the picture and move img into it.\n\t\t\tviewWriter.insert( viewWriter.createPositionBefore( imgElement ), pictureElement );\n\t\t\tviewWriter.move( viewWriter.createRangeOn( imgElement ), viewWriter.createPositionAt( pictureElement, 'end' ) );\n\n\t\t\t// Apply collected attribute elements over the new picture element.\n\t\t\tfor ( const attributeElement of attributeElements ) {\n\t\t\t\tviewWriter.wrap( viewWriter.createRangeOn( pictureElement ), attributeElement );\n\t\t\t}\n\t\t}\n\t\t// Both setting \"sources\" to an empty array and removing the attribute should unwrap the <img />.\n\t\t// Unwrap once if the latter followed the former, though.\n\t\telse if ( imgElement.parent!.is( 'element', 'picture' ) ) {\n\t\t\tconst pictureElement = imgElement.parent;\n\n\t\t\tviewWriter.move( viewWriter.createRangeOn( imgElement ), viewWriter.createPositionBefore( pictureElement ) );\n\t\t\tviewWriter.remove( pictureElement );\n\t\t}\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<DowncastAttributeEvent<Element>>( 'attribute:sources:imageBlock', converter );\n\t\tdispatcher.on<DowncastAttributeEvent<Element>>( 'attribute:sources:imageInline', converter );\n\t};\n}\n\n/**\n * Converter used to convert a given image attribute from the model to the view.\n *\n * @internal\n * @param imageType The type of the image.\n * @param attributeKey The name of the attribute to convert.\n */\nexport function downcastImageAttribute(\n\timageUtils: ImageUtils,\n\timageType: 'imageBlock' | 'imageInline',\n\tattributeKey: string\n): ( dispatcher: DowncastDispatcher ) => void {\n\tconst converter: GetCallback<DowncastAttributeEvent<Element>> = ( evt, data, conversionApi ) => {\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst element = conversionApi.mapper.toViewElement( data.item )!;\n\t\tconst img = imageUtils.findViewImgElement( element )!;\n\n\t\tviewWriter.setAttribute( data.attributeKey, data.attributeNewValue || '', img );\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<DowncastAttributeEvent<Element>>( `attribute:${ attributeKey }:${ imageType }`, converter );\n\t};\n}\n\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/image/imageloadobserver\n */\n\nimport { Observer } from 'ckeditor5/src/engine';\n\n/**\n * Observes all new images added to the {@link module:engine/view/document~Document},\n * fires {@link module:engine/view/document~Document#event:imageLoaded} and\n * {@link module:engine/view/document~Document#event:layoutChanged} event every time when the new image\n * has been loaded.\n *\n * **Note:** This event is not fired for images that has been added to the document and rendered as `complete` (already loaded).\n */\nexport default class ImageLoadObserver extends Observer {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic observe( domRoot: HTMLElement ): void {\n\t\tthis.listenTo( domRoot, 'load', ( event, domEvent ) => {\n\t\t\tconst domElement = domEvent.target as HTMLElement;\n\n\t\t\tif ( this.checkShouldIgnoreEventFromTarget( domElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( domElement.tagName == 'IMG' ) {\n\t\t\t\tthis._fireEvents( domEvent );\n\t\t\t}\n\t\t\t// Use capture phase for better performance (#4504).\n\t\t}, { useCapture: true } );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override stopObserving( domRoot: HTMLElement ): void {\n\t\tthis.stopListening( domRoot );\n\t}\n\n\t/**\n\t * Fires {@link module:engine/view/document~Document#event:layoutChanged} and\n\t * {@link module:engine/view/document~Document#event:imageLoaded}\n\t * if observer {@link #isEnabled is enabled}.\n\t *\n\t * @param domEvent The DOM event.\n\t */\n\tprivate _fireEvents( domEvent: Event ): void {\n\t\tif ( this.isEnabled ) {\n\t\t\tthis.document.fire( 'layoutChanged' );\n\t\t\tthis.document.fire<ImageLoadedEvent>( 'imageLoaded', domEvent );\n\t\t}\n\t}\n}\n\n/**\n * Fired when an <img/> DOM element has been loaded in the DOM root.\n *\n * Introduced by {@link module:image/image/imageloadobserver~ImageLoadObserver}.\n *\n * @see module:image/image/imageloadobserver~ImageLoadObserver\n *\n * @eventName module:engine/view/document~Document#imageLoaded\n * @param data Event data.\n */\nexport type ImageLoadedEvent = {\n\tname: 'imageLoaded';\n\targs: [ Event ];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/image/insertimagecommand\n */\n\nimport { Command, type Editor } from 'ckeditor5/src/core';\nimport { logWarning, toArray, type ArrayOrItem } from 'ckeditor5/src/utils';\nimport type ImageUtils from '../imageutils';\n\n/**\n * Insert image command.\n *\n * The command is registered by the {@link module:image/image/imageediting~ImageEditing} plugin as `insertImage`\n * and it is also available via aliased `imageInsert` name.\n *\n * In order to insert an image at the current selection position\n * (according to the {@link module:widget/utils~findOptimalInsertionRange} algorithm),\n * execute the command and specify the image source:\n *\n * ```ts\n * editor.execute( 'insertImage', { source: 'http://url.to.the/image' } );\n * ```\n *\n * It is also possible to insert multiple images at once:\n *\n * ```ts\n * editor.execute( 'insertImage', {\n * \tsource: [\n * \t\t'path/to/image.jpg',\n * \t\t'path/to/other-image.jpg'\n * \t]\n * } );\n * ```\n *\n * If you want to take the full control over the process, you can specify individual model attributes:\n *\n * ```ts\n * editor.execute( 'insertImage', {\n * \tsource: [\n * \t\t{ src: 'path/to/image.jpg', alt: 'First alt text' },\n * \t\t{ src: 'path/to/other-image.jpg', alt: 'Second alt text', customAttribute: 'My attribute value' }\n * \t]\n * } );\n * ```\n */\nexport default class InsertImageCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tconst configImageInsertType = editor.config.get( 'image.insert.type' );\n\n\t\tif ( !editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\tif ( configImageInsertType === 'block' ) {\n\t\t\t\t/**\n\t\t\t\t * The {@link module:image/imageblock~ImageBlock} plugin must be enabled to allow inserting block images. See\n\t\t\t\t * {@link module:image/imageconfig~ImageInsertConfig#type} to learn more.\n\t\t\t\t *\n\t\t\t\t * @error image-block-plugin-required\n\t\t\t\t */\n\t\t\t\tlogWarning( 'image-block-plugin-required' );\n\t\t\t}\n\t\t}\n\n\t\tif ( !editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\tif ( configImageInsertType === 'inline' ) {\n\t\t\t\t/**\n\t\t\t\t * The {@link module:image/imageinline~ImageInline} plugin must be enabled to allow inserting inline images. See\n\t\t\t\t * {@link module:image/imageconfig~ImageInsertConfig#type} to learn more.\n\t\t\t\t *\n\t\t\t\t * @error image-inline-plugin-required\n\t\t\t\t */\n\t\t\t\tlogWarning( 'image-inline-plugin-required' );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\tthis.isEnabled = imageUtils.isImageAllowed();\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t * @param options Options for the executed command.\n\t * @param options.source The image source or an array of image sources to insert.\n\t * See the documentation of the command to learn more about accepted formats.\n\t */\n\tpublic override execute( options: { source: ArrayOrItem<string | Record<string, unknown>> } ): void {\n\t\tconst sourceDefinitions = toArray<string | Record<string, unknown>>( options.source );\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\t// In case of multiple images, each image (starting from the 2nd) will be inserted at a position that\n\t\t// follows the previous one. That will move the selection and, to stay on the safe side and make sure\n\t\t// all images inherit the same selection attributes, they are collected beforehand.\n\t\t//\n\t\t// Applying these attributes ensures, for instance, that inserting an (inline) image into a link does\n\t\t// not split that link but preserves its continuity.\n\t\t//\n\t\t// Note: Selection attributes that do not make sense for images will be filtered out by insertImage() anyway.\n\t\tconst selectionAttributes = Object.fromEntries( selection.getAttributes() );\n\n\t\tsourceDefinitions.forEach( ( sourceDefinition, index ) => {\n\t\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\t\tif ( typeof sourceDefinition === 'string' ) {\n\t\t\t\tsourceDefinition = { src: sourceDefinition };\n\t\t\t}\n\n\t\t\t// Inserting of an inline image replace the selected element and make a selection on the inserted image.\n\t\t\t// Therefore inserting multiple inline images requires creating position after each element.\n\t\t\tif ( index && selectedElement && imageUtils.isImage( selectedElement ) ) {\n\t\t\t\tconst position = this.editor.model.createPositionAfter( selectedElement );\n\n\t\t\t\timageUtils.insertImage( { ...sourceDefinition, ...selectionAttributes }, position );\n\t\t\t} else {\n\t\t\t\timageUtils.insertImage( { ...sourceDefinition, ...selectionAttributes } );\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport { Command } from 'ckeditor5/src/core';\nimport type ImageUtils from '../imageutils';\n\n/**\n * @module image/image/replaceimagesourcecommand\n */\n\n/**\n * Replace image source command.\n *\n * Changes image source to the one provided. Can be executed as follows:\n *\n * ```ts\n * editor.execute( 'replaceImageSource', { source: 'http://url.to.the/image' } );\n * ```\n */\nexport default class ReplaceImageSourceCommand extends Command {\n\tdeclare public value: string | null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst element = this.editor.model.document.selection.getSelectedElement()!;\n\n\t\tthis.isEnabled = imageUtils.isImage( element );\n\t\tthis.value = this.isEnabled ? element.getAttribute( 'src' ) as string : null;\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t * @param options Options for the executed command.\n\t * @param options.source The image source to replace.\n\t */\n\tpublic override execute( options: { source: string } ): void {\n\t\tconst image = this.editor.model.document.selection.getSelectedElement()!;\n\t\tthis.editor.model.change( writer => {\n\t\t\twriter.setAttribute( 'src', options.source, image );\n\t\t\twriter.removeAttribute( 'srcset', image );\n\t\t\twriter.removeAttribute( 'sizes', image );\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/image/imageediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport type { ViewElement } from 'ckeditor5/src/engine';\nimport ImageLoadObserver from './imageloadobserver';\nimport InsertImageCommand from './insertimagecommand';\nimport ReplaceImageSourceCommand from './replaceimagesourcecommand';\nimport ImageUtils from '../imageutils';\n\n/**\n * The image engine plugin. This module loads common code shared between\n * {@link module:image/image/imageinlineediting~ImageInlineEditing} and\n * {@link module:image/image/imageblockediting~ImageBlockEditing} plugins.\n *\n * This plugin registers the {@link module:image/image/insertimagecommand~InsertImageCommand 'insertImage'} command.\n */\nexport default class ImageEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageUtils ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst conversion = editor.conversion;\n\n\t\t// See https://github.com/ckeditor/ckeditor5-image/issues/142.\n\t\teditor.editing.view.addObserver( ImageLoadObserver );\n\n\t\tconversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: 'img',\n\t\t\t\t\tkey: 'alt'\n\t\t\t\t},\n\t\t\t\tmodel: 'alt'\n\t\t\t} )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: 'img',\n\t\t\t\t\tkey: 'srcset'\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\tkey: 'srcset',\n\t\t\t\t\tvalue: ( viewImage: ViewElement ) => {\n\t\t\t\t\t\tconst value: Record<string, string> = {\n\t\t\t\t\t\t\tdata: viewImage.getAttribute( 'srcset' )!\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif ( viewImage.hasAttribute( 'width' ) ) {\n\t\t\t\t\t\t\tvalue.width = viewImage.getAttribute( 'width' )!;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\tconst insertImageCommand = new InsertImageCommand( editor );\n\t\tconst replaceImageSourceCommand = new ReplaceImageSourceCommand( editor );\n\n\t\teditor.commands.add( 'insertImage', insertImageCommand );\n\t\teditor.commands.add( 'replaceImageSource', replaceImageSourceCommand );\n\n\t\t// `imageInsert` is an alias for backward compatibility.\n\t\teditor.commands.add( 'imageInsert', insertImageCommand );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/image/imagetypecommand\n */\n\nimport type { Element } from 'ckeditor5/src/engine';\nimport { Command, type Editor } from 'ckeditor5/src/core';\nimport type ImageUtils from '../imageutils';\n\n/**\n * The image type command. It changes the type of a selected image, depending on the configuration.\n */\nexport default class ImageTypeCommand extends Command {\n\t/**\n\t * Model element name the command converts to.\n\t */\n\tprivate readonly _modelElementName: 'imageBlock' | 'imageInline';\n\n\t/**\n\t * @inheritDoc\n\t *\n\t * @param modelElementName Model element name the command converts to.\n\t */\n\tconstructor( editor: Editor, modelElementName: 'imageBlock' | 'imageInline' ) {\n\t\tsuper( editor );\n\n\t\tthis._modelElementName = modelElementName;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst element = imageUtils.getClosestSelectedImageElement( this.editor.model.document.selection );\n\n\t\tif ( this._modelElementName === 'imageBlock' ) {\n\t\t\tthis.isEnabled = imageUtils.isInlineImage( element );\n\t\t} else {\n\t\t\tthis.isEnabled = imageUtils.isBlockImage( element );\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command and changes the type of a selected image.\n\t *\n\t * @fires execute\n\t * @returns An object containing references to old and new model image elements\n\t * (for before and after the change) so external integrations can hook into the decorated\n\t * `execute` event and handle this change. `null` if the type change failed.\n\t */\n\tpublic override execute(): { oldElement: Element; newElement: Element } | null {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst oldElement = imageUtils.getClosestSelectedImageElement( model.document.selection )!;\n\t\tconst attributes = Object.fromEntries( oldElement.getAttributes() );\n\n\t\t// Don't change image type if \"src\" is missing (a broken image), unless there's \"uploadId\" set.\n\t\t// This state may happen during image upload (before it finishes) and it should be possible to change type\n\t\t// of the image in the meantime.\n\t\tif ( !attributes.src && !attributes.uploadId ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn model.change( writer => {\n\t\t\t// Get all markers that contain the old image element.\n\t\t\tconst markers = Array.from( model.markers )\n\t\t\t\t.filter( marker => marker.getRange().containsItem( oldElement ) );\n\n\t\t\tconst newElement = imageUtils.insertImage( attributes, model.createSelection( oldElement, 'on' ), this._modelElementName );\n\n\t\t\tif ( !newElement ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst newElementRange = writer.createRangeOn( newElement );\n\n\t\t\t// Expand the previously intersecting markers' ranges to include the new image element.\n\t\t\tfor ( const marker of markers ) {\n\t\t\t\tconst markerRange = marker.getRange();\n\n\t\t\t\t// Join the survived part of the old marker range with the new element range\n\t\t\t\t// (loosely because there could be some new paragraph or the existing one might got split).\n\t\t\t\tconst range = markerRange.root.rootName != '$graveyard' ?\n\t\t\t\t\tmarkerRange.getJoined( newElementRange, true )! : newElementRange;\n\n\t\t\t\twriter.updateMarker( marker, { range } );\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\toldElement,\n\t\t\t\tnewElement\n\t\t\t};\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/image/imageblockediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { ClipboardPipeline, type ClipboardInputTransformationEvent } from 'ckeditor5/src/clipboard';\nimport { UpcastWriter, type ViewElement } from 'ckeditor5/src/engine';\n\nimport {\n\tdowncastImageAttribute,\n\tdowncastSrcsetAttribute,\n\tupcastImageFigure\n} from './converters';\n\nimport ImageEditing from './imageediting';\nimport ImageTypeCommand from './imagetypecommand';\nimport ImageUtils from '../imageutils';\nimport {\n\tgetImgViewElementMatcher,\n\tcreateBlockImageViewElement,\n\tdetermineImageTypeForInsertionAtSelection\n} from '../image/utils';\n\n/**\n * The image block plugin.\n *\n * It registers:\n *\n * * `<imageBlock>` as a block element in the document schema, and allows `alt`, `src` and `srcset` attributes.\n * * converters for editing and data pipelines.,\n * * {@link module:image/image/imagetypecommand~ImageTypeCommand `'imageTypeBlock'`} command that converts inline images into\n * block images.\n */\nexport default class ImageBlockEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageEditing, ImageUtils, ClipboardPipeline ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageBlockEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\t// Converters 'alt' and 'srcset' are added in 'ImageEditing' plugin.\n\t\tschema.register( 'imageBlock', {\n\t\t\tinheritAllFrom: '$blockObject',\n\t\t\tallowAttributes: [ 'alt', 'src', 'srcset' ]\n\t\t} );\n\n\t\tthis._setupConversion();\n\n\t\tif ( editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\teditor.commands.add( 'imageTypeBlock', new ImageTypeCommand( this.editor, 'imageBlock' ) );\n\n\t\t\tthis._setupClipboardIntegration();\n\t\t}\n\t}\n\n\t/**\n\t * Configures conversion pipelines to support upcasting and downcasting\n\t * block images (block image widgets) and their attributes.\n\t */\n\tprivate _setupConversion(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\tconversion.for( 'dataDowncast' )\n\t\t\t.elementToStructure( {\n\t\t\t\tmodel: 'imageBlock',\n\t\t\t\tview: ( modelElement, { writer } ) => createBlockImageViewElement( writer )\n\t\t\t} );\n\n\t\tconversion.for( 'editingDowncast' )\n\t\t\t.elementToStructure( {\n\t\t\t\tmodel: 'imageBlock',\n\t\t\t\tview: ( modelElement, { writer } ) => imageUtils.toImageWidget(\n\t\t\t\t\tcreateBlockImageViewElement( writer ), writer, t( 'image widget' )\n\t\t\t\t)\n\t\t\t} );\n\n\t\tconversion.for( 'downcast' )\n\t\t\t.add( downcastImageAttribute( imageUtils, 'imageBlock', 'src' ) )\n\t\t\t.add( downcastImageAttribute( imageUtils, 'imageBlock', 'alt' ) )\n\t\t\t.add( downcastSrcsetAttribute( imageUtils, 'imageBlock' ) );\n\n\t\t// More image related upcasts are in 'ImageEditing' plugin.\n\t\tconversion.for( 'upcast' )\n\t\t\t.elementToElement( {\n\t\t\t\tview: getImgViewElementMatcher( editor, 'imageBlock' ),\n\t\t\t\tmodel: ( viewImage, { writer } ) => writer.createElement(\n\t\t\t\t\t'imageBlock',\n\t\t\t\t\tviewImage.hasAttribute( 'src' ) ? { src: viewImage.getAttribute( 'src' ) } : undefined\n\t\t\t\t)\n\t\t\t} )\n\t\t\t.add( upcastImageFigure( imageUtils ) );\n\t}\n\n\t/**\n\t * Integrates the plugin with the clipboard pipeline.\n\t *\n\t * Idea is that the feature should recognize the user's intent when an **inline** image is\n\t * pasted or dropped. If such an image is pasted/dropped:\n\t *\n\t * * into an empty block (e.g. an empty paragraph),\n\t * * on another object (e.g. some block widget).\n\t *\n\t * it gets converted into a block image on the fly. We assume this is the user's intent\n\t * if they decided to put their image there.\n\t *\n\t * See the `ImageInlineEditing` for the similar integration that works in the opposite direction.\n\t */\n\tprivate _setupClipboardIntegration(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\n\t\tthis.listenTo<ClipboardInputTransformationEvent>(\n\t\t\tclipboardPipeline,\n\t\t\t'inputTransformation',\n\t\t\t( evt, data ) => {\n\t\t\t\tconst docFragmentChildren = Array.from( data.content.getChildren() as IterableIterator<ViewElement> );\n\t\t\t\tlet modelRange;\n\n\t\t\t\t// Make sure only <img> elements are dropped or pasted. Otherwise, if there some other HTML\n\t\t\t\t// mixed up, this should be handled as a regular paste.\n\t\t\t\tif ( !docFragmentChildren.every( imageUtils.isInlineImageView ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// When drag and dropping, data.targetRanges specifies where to drop because\n\t\t\t\t// this is usually a different place than the current model selection (the user\n\t\t\t\t// uses a drop marker to specify the drop location).\n\t\t\t\tif ( data.targetRanges ) {\n\t\t\t\t\tmodelRange = editor.editing.mapper.toModelRange( data.targetRanges[ 0 ] );\n\t\t\t\t}\n\t\t\t\t// Pasting, however, always occurs at the current model selection.\n\t\t\t\telse {\n\t\t\t\t\tmodelRange = model.document.selection.getFirstRange();\n\t\t\t\t}\n\n\t\t\t\tconst selection = model.createSelection( modelRange );\n\n\t\t\t\t// Convert inline images into block images only when the currently selected block is empty\n\t\t\t\t// (e.g. an empty paragraph) or some object is selected (to replace it).\n\t\t\t\tif ( determineImageTypeForInsertionAtSelection( model.schema, selection ) === 'imageBlock' ) {\n\t\t\t\t\tconst writer = new UpcastWriter( editingView.document );\n\n\t\t\t\t\t// Wrap <img ... /> -> <figure class=\"image\"><img .../></figure>\n\t\t\t\t\tconst blockViewImages = docFragmentChildren.map(\n\t\t\t\t\t\tinlineViewImage => writer.createElement( 'figure', { class: 'image' }, inlineViewImage )\n\t\t\t\t\t);\n\n\t\t\t\t\tdata.content = writer.createDocumentFragment( blockViewImages );\n\t\t\t\t}\n\t\t\t} );\n\t}\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./image.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imageblock\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { Widget } from 'ckeditor5/src/widget';\n\nimport ImageTextAlternative from './imagetextalternative';\nimport ImageBlockEditing from './image/imageblockediting';\n\nimport '../theme/image.css';\n\n/**\n * The image block plugin.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n *\n * * {@link module:image/image/imageblockediting~ImageBlockEditing},\n * * {@link module:image/imagetextalternative~ImageTextAlternative}.\n *\n * Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}\n * for more information.\n */\nexport default class ImageBlock extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageBlockEditing, Widget, ImageTextAlternative ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageBlock' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/image/imageinlineediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { ClipboardPipeline, type ClipboardInputTransformationEvent } from 'ckeditor5/src/clipboard';\nimport { UpcastWriter, type ViewElement } from 'ckeditor5/src/engine';\n\nimport {\n\tdowncastImageAttribute,\n\tdowncastSrcsetAttribute\n} from './converters';\n\nimport ImageEditing from './imageediting';\nimport ImageTypeCommand from './imagetypecommand';\nimport ImageUtils from '../imageutils';\nimport {\n\tgetImgViewElementMatcher,\n\tcreateInlineImageViewElement,\n\tdetermineImageTypeForInsertionAtSelection\n} from '../image/utils';\n\n/**\n * The image inline plugin.\n *\n * It registers:\n *\n * * `<imageInline>` as an inline element in the document schema, and allows `alt`, `src` and `srcset` attributes.\n * * converters for editing and data pipelines.\n * * {@link module:image/image/imagetypecommand~ImageTypeCommand `'imageTypeInline'`} command that converts block images into\n * inline images.\n */\nexport default class ImageInlineEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageEditing, ImageUtils, ClipboardPipeline ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageInlineEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\t// Converters 'alt' and 'srcset' are added in 'ImageEditing' plugin.\n\t\tschema.register( 'imageInline', {\n\t\t\tinheritAllFrom: '$inlineObject',\n\t\t\tallowAttributes: [ 'alt', 'src', 'srcset' ]\n\t\t} );\n\n\t\t// Disallow inline images in captions (for now). This is the best spot to do that because\n\t\t// independent packages can introduce captions (ImageCaption, TableCaption, etc.) so better this\n\t\t// be future-proof.\n\t\tschema.addChildCheck( ( context, childDefinition ) => {\n\t\t\tif ( context.endsWith( 'caption' ) && childDefinition.name === 'imageInline' ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\n\t\tthis._setupConversion();\n\n\t\tif ( editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\teditor.commands.add( 'imageTypeInline', new ImageTypeCommand( this.editor, 'imageInline' ) );\n\n\t\t\tthis._setupClipboardIntegration();\n\t\t}\n\t}\n\n\t/**\n\t * Configures conversion pipelines to support upcasting and downcasting\n\t * inline images (inline image widgets) and their attributes.\n\t */\n\tprivate _setupConversion(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\tconversion.for( 'dataDowncast' )\n\t\t\t.elementToElement( {\n\t\t\t\tmodel: 'imageInline',\n\t\t\t\tview: ( modelElement, { writer } ) => writer.createEmptyElement( 'img' )\n\t\t\t} );\n\n\t\tconversion.for( 'editingDowncast' )\n\t\t\t.elementToStructure( {\n\t\t\t\tmodel: 'imageInline',\n\t\t\t\tview: ( modelElement, { writer } ) => imageUtils.toImageWidget(\n\t\t\t\t\tcreateInlineImageViewElement( writer ), writer, t( 'image widget' )\n\t\t\t\t)\n\t\t\t} );\n\n\t\tconversion.for( 'downcast' )\n\t\t\t.add( downcastImageAttribute( imageUtils, 'imageInline', 'src' ) )\n\t\t\t.add( downcastImageAttribute( imageUtils, 'imageInline', 'alt' ) )\n\t\t\t.add( downcastSrcsetAttribute( imageUtils, 'imageInline' ) );\n\n\t\t// More image related upcasts are in 'ImageEditing' plugin.\n\t\tconversion.for( 'upcast' )\n\t\t\t.elementToElement( {\n\t\t\t\tview: getImgViewElementMatcher( editor, 'imageInline' ),\n\t\t\t\tmodel: ( viewImage, { writer } ) => writer.createElement(\n\t\t\t\t\t'imageInline',\n\t\t\t\t\tviewImage.hasAttribute( 'src' ) ? { src: viewImage.getAttribute( 'src' ) } : undefined\n\t\t\t\t)\n\t\t\t} );\n\t}\n\n\t/**\n\t * Integrates the plugin with the clipboard pipeline.\n\t *\n\t * Idea is that the feature should recognize the user's intent when an **block** image is\n\t * pasted or dropped. If such an image is pasted/dropped into a non-empty block\n\t * (e.g. a paragraph with some text) it gets converted into an inline image on the fly.\n\t *\n\t * We assume this is the user's intent if they decided to put their image there.\n\t *\n\t * **Note**: If a block image has a caption, it will not be converted to an inline image\n\t * to avoid the confusion. Captions are added on purpose and they should never be lost\n\t * in the clipboard pipeline.\n\t *\n\t * See the `ImageBlockEditing` for the similar integration that works in the opposite direction.\n\t */\n\tprivate _setupClipboardIntegration(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\n\t\tthis.listenTo<ClipboardInputTransformationEvent>(\n\t\t\tclipboardPipeline,\n\t\t\t'inputTransformation',\n\t\t\t( evt, data ) => {\n\t\t\t\tconst docFragmentChildren = Array.from( data.content.getChildren() as IterableIterator<ViewElement> );\n\t\t\t\tlet modelRange;\n\n\t\t\t\t// Make sure only <figure class=\"image\"></figure> elements are dropped or pasted. Otherwise, if there some other HTML\n\t\t\t\t// mixed up, this should be handled as a regular paste.\n\t\t\t\tif ( !docFragmentChildren.every( imageUtils.isBlockImageView ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// When drag and dropping, data.targetRanges specifies where to drop because\n\t\t\t\t// this is usually a different place than the current model selection (the user\n\t\t\t\t// uses a drop marker to specify the drop location).\n\t\t\t\tif ( data.targetRanges ) {\n\t\t\t\t\tmodelRange = editor.editing.mapper.toModelRange( data.targetRanges[ 0 ] );\n\t\t\t\t}\n\t\t\t\t// Pasting, however, always occurs at the current model selection.\n\t\t\t\telse {\n\t\t\t\t\tmodelRange = model.document.selection.getFirstRange();\n\t\t\t\t}\n\n\t\t\t\tconst selection = model.createSelection( modelRange );\n\n\t\t\t\t// Convert block images into inline images only when pasting or dropping into non-empty blocks\n\t\t\t\t// and when the block is not an object (e.g. pasting to replace another widget).\n\t\t\t\tif ( determineImageTypeForInsertionAtSelection( model.schema, selection ) === 'imageInline' ) {\n\t\t\t\t\tconst writer = new UpcastWriter( editingView.document );\n\n\t\t\t\t\t// Unwrap <figure class=\"image\"><img .../></figure> -> <img ... />\n\t\t\t\t\t// but <figure class=\"image\"><img .../><figcaption>...</figcaption></figure> -> stays the same\n\t\t\t\t\tconst inlineViewImages = docFragmentChildren.map( blockViewImage => {\n\t\t\t\t\t// If there's just one child, it can be either <img /> or <a><img></a>.\n\t\t\t\t\t// If there are other children than <img>, this means that the block image\n\t\t\t\t\t// has a caption or some other features and this kind of image should be\n\t\t\t\t\t// pasted/dropped without modifications.\n\t\t\t\t\t\tif ( blockViewImage.childCount === 1 ) {\n\t\t\t\t\t\t// Pass the attributes which are present only in the <figure> to the <img>\n\t\t\t\t\t\t// (e.g. the style=\"width:10%\" attribute applied by the ImageResize plugin).\n\t\t\t\t\t\t\tArray.from( blockViewImage.getAttributes() )\n\t\t\t\t\t\t\t\t.forEach( attribute => writer.setAttribute(\n\t\t\t\t\t\t\t\t\t...attribute,\n\t\t\t\t\t\t\t\t\timageUtils.findViewImgElement( blockViewImage )!\n\t\t\t\t\t\t\t\t) );\n\n\t\t\t\t\t\t\treturn blockViewImage.getChild( 0 )!;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn blockViewImage;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\tdata.content = writer.createDocumentFragment( inlineViewImages );\n\t\t\t\t}\n\t\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imageinline\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { Widget } from 'ckeditor5/src/widget';\n\nimport ImageTextAlternative from './imagetextalternative';\nimport ImageInlineEditing from './image/imageinlineediting';\n\nimport '../theme/image.css';\n\n/**\n * The image inline plugin.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n *\n * * {@link module:image/image/imageinlineediting~ImageInlineEditing},\n * * {@link module:image/imagetextalternative~ImageTextAlternative}.\n *\n * Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}\n * for more information.\n */\nexport default class ImageInline extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageInlineEditing, Widget, ImageTextAlternative ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageInline' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imagecaption/imagecaptionutils\n */\n\nimport type { DocumentSelection, Element, Selection, ViewElement, Match } from 'ckeditor5/src/engine';\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport ImageUtils from '../imageutils';\n\n/**\n * The image caption utilities plugin.\n */\nexport default class ImageCaptionUtils extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageCaptionUtils' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageUtils ] as const;\n\t}\n\n\t/**\n\t * Returns the caption model element from a given image element. Returns `null` if no caption is found.\n\t */\n\tpublic getCaptionFromImageModelElement( imageModelElement: Element ): Element | null {\n\t\tfor ( const node of imageModelElement.getChildren() ) {\n\t\t\tif ( !!node && node.is( 'element', 'caption' ) ) {\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the caption model element for a model selection. Returns `null` if the selection has no caption element ancestor.\n\t */\n\tpublic getCaptionFromModelSelection( selection: Selection | DocumentSelection ): Element | null {\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\t\tconst captionElement = selection.getFirstPosition()!.findAncestor( 'caption' );\n\n\t\tif ( !captionElement ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( imageUtils.isBlockImage( captionElement.parent as Element ) ) {\n\t\t\treturn captionElement;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * {@link module:engine/view/matcher~Matcher} pattern. Checks if a given element is a `<figcaption>` element that is placed\n\t * inside the image `<figure>` element.\n\t * @returns Returns the object accepted by {@link module:engine/view/matcher~Matcher} or `null` if the element\n\t * cannot be matched.\n\t */\n\tpublic matchImageCaptionViewElement( element: ViewElement ): Match | null {\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\t// Convert only captions for images.\n\t\tif ( element.name == 'figcaption' && imageUtils.isBlockImageView( element.parent as ViewElement ) ) {\n\t\t\treturn { name: true };\n\t\t}\n\n\t\treturn null;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imagecaption/toggleimagecaptioncommand\n */\n\nimport type { Element, Writer } from 'ckeditor5/src/engine';\nimport { Command } from 'ckeditor5/src/core';\n\nimport ImageBlockEditing from '../image/imageblockediting';\nimport type ImageCaptionUtils from './imagecaptionutils';\nimport type ImageUtils from '../imageutils';\nimport type ImageCaptionEditing from './imagecaptionediting';\n\n/**\n * The toggle image caption command.\n *\n * This command is registered by {@link module:image/imagecaption/imagecaptionediting~ImageCaptionEditing} as the\n * `'toggleImageCaption'` editor command.\n *\n * Executing this command:\n *\n * * either adds or removes the image caption of a selected image (depending on whether the caption is present or not),\n * * removes the image caption if the selection is anchored in one.\n *\n * ```ts\n * // Toggle the presence of the caption.\n * editor.execute( 'toggleImageCaption' );\n * ```\n *\n * **Note**: Upon executing this command, the selection will be set on the image if previously anchored in the caption element.\n *\n * **Note**: You can move the selection to the caption right away as it shows up upon executing this command by using\n * the `focusCaptionOnShow` option:\n *\n * ```ts\n * editor.execute( 'toggleImageCaption', { focusCaptionOnShow: true } );\n * ```\n */\nexport default class ToggleImageCaptionCommand extends Command {\n\tdeclare public value: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\t// Only block images can get captions.\n\t\tif ( !editor.plugins.has( ImageBlockEditing ) ) {\n\t\t\tthis.isEnabled = false;\n\t\t\tthis.value = false;\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst selection = editor.model.document.selection;\n\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\tif ( !selectedElement ) {\n\t\t\tconst ancestorCaptionElement = imageCaptionUtils.getCaptionFromModelSelection( selection );\n\n\t\t\tthis.isEnabled = !!ancestorCaptionElement;\n\t\t\tthis.value = !!ancestorCaptionElement;\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Block images support captions by default but the command should also be enabled for inline\n\t\t// images because toggling the caption when one is selected should convert it into a block image.\n\t\tthis.isEnabled = imageUtils.isImage( selectedElement );\n\n\t\tif ( !this.isEnabled ) {\n\t\t\tthis.value = false;\n\t\t} else {\n\t\t\tthis.value = !!imageCaptionUtils.getCaptionFromImageModelElement( selectedElement );\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * ```ts\n\t * editor.execute( 'toggleImageCaption' );\n\t * ```\n\t *\n\t * @param options Options for the executed command.\n\t * @param options.focusCaptionOnShow When true and the caption shows up, the selection will be moved into it straight away.\n\t * @fires execute\n\t */\n\tpublic override execute( options: { focusCaptionOnShow?: boolean } = {} ): void {\n\t\tconst { focusCaptionOnShow } = options;\n\n\t\tthis.editor.model.change( writer => {\n\t\t\tif ( this.value ) {\n\t\t\t\tthis._hideImageCaption( writer );\n\t\t\t} else {\n\t\t\t\tthis._showImageCaption( writer, focusCaptionOnShow );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Shows the caption of the `<imageBlock>` or `<imageInline>`. Also:\n\t *\n\t * * it converts `<imageInline>` to `<imageBlock>` to show the caption,\n\t * * it attempts to restore the caption content from the `ImageCaptionEditing` caption registry,\n\t * * it moves the selection to the caption right away, it the `focusCaptionOnShow` option was set.\n\t */\n\tprivate _showImageCaption( writer: Writer, focusCaptionOnShow?: boolean ): void {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst imageCaptionEditing: ImageCaptionEditing = this.editor.plugins.get( 'ImageCaptionEditing' );\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\tlet selectedImage = selection.getSelectedElement()!;\n\n\t\tconst savedCaption = imageCaptionEditing._getSavedCaption( selectedImage );\n\n\t\t// Convert imageInline -> image first.\n\t\tif ( imageUtils.isInlineImage( selectedImage ) ) {\n\t\t\tthis.editor.execute( 'imageTypeBlock' );\n\n\t\t\t// Executing the command created a new model element. Let's pick it again.\n\t\t\tselectedImage = selection.getSelectedElement()!;\n\t\t}\n\n\t\t// Try restoring the caption from the ImageCaptionEditing plugin storage.\n\t\tconst newCaptionElement = savedCaption || writer.createElement( 'caption' );\n\n\t\twriter.append( newCaptionElement, selectedImage );\n\n\t\tif ( focusCaptionOnShow ) {\n\t\t\twriter.setSelection( newCaptionElement, 'in' );\n\t\t}\n\t}\n\n\t/**\n\t * Hides the caption of a selected image (or an image caption the selection is anchored to).\n\t *\n\t * The content of the caption is stored in the `ImageCaptionEditing` caption registry to make this\n\t * a reversible action.\n\t */\n\tprivate _hideImageCaption( writer: Writer ): void {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst imageCaptionEditing: ImageCaptionEditing = editor.plugins.get( 'ImageCaptionEditing' );\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\t\tlet selectedImage = selection.getSelectedElement()!;\n\t\tlet captionElement: Element;\n\n\t\tif ( selectedImage ) {\n\t\t\tcaptionElement = imageCaptionUtils.getCaptionFromImageModelElement( selectedImage )!;\n\t\t} else {\n\t\t\tcaptionElement = imageCaptionUtils.getCaptionFromModelSelection( selection )!;\n\t\t\tselectedImage = captionElement!.parent as Element;\n\t\t}\n\n\t\t// Store the caption content so it can be restored quickly if the user changes their mind even if they toggle image<->imageInline.\n\t\timageCaptionEditing._saveCaption( selectedImage, captionElement );\n\n\t\twriter.setSelection( selectedImage, 'on' );\n\t\twriter.remove( captionElement );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imagecaption/imagecaptionediting\n */\n\nimport { type Editor, Plugin, type CommandExecuteEvent } from 'ckeditor5/src/core';\nimport { Element, enablePlaceholder, type DocumentChangeEvent, type DiffItemAttribute, PlaceholderableElement } from 'ckeditor5/src/engine';\nimport { toWidgetEditable } from 'ckeditor5/src/widget';\nimport type { GetCallback } from 'ckeditor5/src/utils';\n\nimport ToggleImageCaptionCommand from './toggleimagecaptioncommand';\nimport ImageUtils from '../imageutils';\nimport ImageCaptionUtils from './imagecaptionutils';\n\n/**\n * The image caption engine plugin. It is responsible for:\n *\n * * registering converters for the caption element,\n * * registering converters for the caption model attribute,\n * * registering the {@link module:image/imagecaption/toggleimagecaptioncommand~ToggleImageCaptionCommand `toggleImageCaption`} command.\n */\nexport default class ImageCaptionEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageUtils, ImageCaptionUtils ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageCaptionEditing' as const;\n\t}\n\n\t/**\n\t * A map that keeps saved JSONified image captions and image model elements they are\n\t * associated with.\n\t *\n\t * To learn more about this system, see {@link #_saveCaption}.\n\t */\n\tprivate _savedCaptionsMap: WeakMap<Element, unknown>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._savedCaptionsMap = new WeakMap();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\t// Schema configuration.\n\t\tif ( !schema.isRegistered( 'caption' ) ) {\n\t\t\tschema.register( 'caption', {\n\t\t\t\tallowIn: 'imageBlock',\n\t\t\t\tallowContentOf: '$block',\n\t\t\t\tisLimit: true\n\t\t\t} );\n\t\t} else {\n\t\t\tschema.extend( 'caption', {\n\t\t\t\tallowIn: 'imageBlock'\n\t\t\t} );\n\t\t}\n\n\t\teditor.commands.add( 'toggleImageCaption', new ToggleImageCaptionCommand( this.editor ) );\n\n\t\tthis._setupConversion();\n\t\tthis._setupImageTypeCommandsIntegration();\n\t\tthis._registerCaptionReconversion();\n\t}\n\n\t/**\n\t * Configures conversion pipelines to support upcasting and downcasting\n\t * image captions.\n\t */\n\tprivate _setupConversion(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\t\tconst t = editor.t;\n\n\t\t// View -> model converter for the data pipeline.\n\t\teditor.conversion.for( 'upcast' ).elementToElement( {\n\t\t\tview: element => imageCaptionUtils.matchImageCaptionViewElement( element ),\n\t\t\tmodel: 'caption'\n\t\t} );\n\n\t\t// Model -> view converter for the data pipeline.\n\t\teditor.conversion.for( 'dataDowncast' ).elementToElement( {\n\t\t\tmodel: 'caption',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tif ( !imageUtils.isBlockImage( modelElement.parent as Element ) ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn writer.createContainerElement( 'figcaption' );\n\t\t\t}\n\t\t} );\n\n\t\t// Model -> view converter for the editing pipeline.\n\t\teditor.conversion.for( 'editingDowncast' ).elementToElement( {\n\t\t\tmodel: 'caption',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tif ( !imageUtils.isBlockImage( modelElement.parent as Element ) ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst figcaptionElement = writer.createEditableElement( 'figcaption' );\n\t\t\t\twriter.setCustomProperty( 'imageCaption', true, figcaptionElement );\n\n\t\t\t\tfigcaptionElement.placeholder = t( 'Enter image caption' );\n\t\t\t\tenablePlaceholder( {\n\t\t\t\t\tview,\n\t\t\t\t\telement: figcaptionElement,\n\t\t\t\t\tkeepOnFocus: true\n\t\t\t\t} );\n\n\t\t\t\tconst imageAlt = ( modelElement.parent as Element ).getAttribute( 'alt' ) as string;\n\t\t\t\tconst label = imageAlt ? t( 'Caption for image: %0', [ imageAlt ] ) : t( 'Caption for the image' );\n\n\t\t\t\treturn toWidgetEditable( figcaptionElement, writer, { label } );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Integrates with {@link module:image/image/imagetypecommand~ImageTypeCommand image type commands}\n\t * to make sure the caption is preserved when the type of an image changes so it can be restored\n\t * in the future if the user decides they want their caption back.\n\t */\n\tprivate _setupImageTypeCommandsIntegration(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\t\tconst imageTypeInlineCommand = editor.commands.get( 'imageTypeInline' );\n\t\tconst imageTypeBlockCommand = editor.commands.get( 'imageTypeBlock' );\n\n\t\tconst handleImageTypeChange: GetCallback<CommandExecuteEvent> = evt => {\n\t\t\t// The image type command execution can be unsuccessful.\n\t\t\tif ( !evt.return ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { oldElement, newElement } = evt.return as { oldElement: Element; newElement: Element };\n\n\t\t\t/* istanbul ignore if: paranoid check -- @preserve */\n\t\t\tif ( !oldElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( imageUtils.isBlockImage( oldElement ) ) {\n\t\t\t\tconst oldCaptionElement = imageCaptionUtils.getCaptionFromImageModelElement( oldElement );\n\n\t\t\t\t// If the old element was a captioned block image (the caption was visible),\n\t\t\t\t// simply save it so it can be restored.\n\t\t\t\tif ( oldCaptionElement ) {\n\t\t\t\t\tthis._saveCaption( newElement, oldCaptionElement );\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst savedOldElementCaption = this._getSavedCaption( oldElement );\n\n\t\t\t// If either:\n\t\t\t//\n\t\t\t// * the block image didn't have a visible caption,\n\t\t\t// * the block image caption was hidden (and already saved),\n\t\t\t// * the inline image was passed\n\t\t\t//\n\t\t\t// just try to \"pass\" the saved caption from the old image to the new image\n\t\t\t// so it can be retrieved in the future if the user wants it back.\n\t\t\tif ( savedOldElementCaption ) {\n\t\t\t\t// Note: Since we're writing to a WeakMap, we don't bother with removing the\n\t\t\t\t// [ oldElement, savedOldElementCaption ] pair from it.\n\t\t\t\tthis._saveCaption( newElement, savedOldElementCaption );\n\t\t\t}\n\t\t};\n\n\t\t// Presence of the commands depends on the Image(Inline|Block)Editing plugins loaded in the editor.\n\t\tif ( imageTypeInlineCommand ) {\n\t\t\tthis.listenTo<CommandExecuteEvent>( imageTypeInlineCommand, 'execute', handleImageTypeChange, { priority: 'low' } );\n\t\t}\n\n\t\tif ( imageTypeBlockCommand ) {\n\t\t\tthis.listenTo<CommandExecuteEvent>( imageTypeBlockCommand, 'execute', handleImageTypeChange, { priority: 'low' } );\n\t\t}\n\t}\n\n\t/**\n\t * Returns the saved {@link module:engine/model/element~Element#toJSON JSONified} caption\n\t * of an image model element.\n\t *\n\t * See {@link #_saveCaption}.\n\t *\n\t * @internal\n\t * @param imageModelElement The model element the caption should be returned for.\n\t * @returns The model caption element or `null` if there is none.\n\t */\n\tpublic _getSavedCaption( imageModelElement: Element ): Element | null {\n\t\tconst jsonObject = this._savedCaptionsMap.get( imageModelElement );\n\n\t\treturn jsonObject ? Element.fromJSON( jsonObject ) : null;\n\t}\n\n\t/**\n\t * Saves a {@link module:engine/model/element~Element#toJSON JSONified} caption for\n\t * an image element to allow restoring it in the future.\n\t *\n\t * A caption is saved every time it gets hidden and/or the type of an image changes. The\n\t * user should be able to restore it on demand.\n\t *\n\t * **Note**: The caption cannot be stored in the image model element attribute because,\n\t * for instance, when the model state propagates to collaborators, the attribute would get\n\t * lost (mainly because it does not convert to anything when the caption is hidden) and\n\t * the states of collaborators' models would de-synchronize causing numerous issues.\n\t *\n\t * See {@link #_getSavedCaption}.\n\t *\n\t * @internal\n\t * @param imageModelElement The model element the caption is saved for.\n\t * @param caption The caption model element to be saved.\n\t */\n\tpublic _saveCaption( imageModelElement: Element, caption: Element ): void {\n\t\tthis._savedCaptionsMap.set( imageModelElement, caption.toJSON() );\n\t}\n\n\t/**\n\t * Reconverts image caption when image alt attribute changes.\n\t * The change of alt attribute is reflected in caption's aria-label attribute.\n\t */\n\tprivate _registerCaptionReconversion(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\n\t\tmodel.document.on<DocumentChangeEvent>( 'change:data', () => {\n\t\t\tconst changes = model.document.differ.getChanges();\n\n\t\t\tfor ( const change of changes as Array<DiffItemAttribute> ) {\n\t\t\t\tif ( change.attributeKey !== 'alt' ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst image = change.range.start.nodeAfter as Element;\n\n\t\t\t\tif ( imageUtils.isBlockImage( image ) ) {\n\t\t\t\t\tconst caption = imageCaptionUtils.getCaptionFromImageModelElement( image );\n\n\t\t\t\t\tif ( !caption ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\teditor.editing.reconvertItem( caption );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imagecaption/imagecaptionui\n */\n\nimport { Plugin, icons } from 'ckeditor5/src/core';\nimport { ButtonView } from 'ckeditor5/src/ui';\nimport ImageCaptionUtils from './imagecaptionutils';\nimport type ToggleImageCaptionCommand from './toggleimagecaptioncommand';\n\n/**\n * The image caption UI plugin. It introduces the `'toggleImageCaption'` UI button.\n */\nexport default class ImageCaptionUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageCaptionUtils ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageCaptionUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst imageCaptionUtils: ImageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );\n\t\tconst t = editor.t;\n\n\t\teditor.ui.componentFactory.add( 'toggleImageCaption', locale => {\n\t\t\tconst command: ToggleImageCaptionCommand = editor.commands.get( 'toggleImageCaption' )!;\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\ticon: icons.caption,\n\t\t\t\ttooltip: true,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\tview.bind( 'isOn', 'isEnabled' ).to( command, 'value', 'isEnabled' );\n\t\t\tview.bind( 'label' ).to( command, 'value', value => value ? t( 'Toggle caption off' ) : t( 'Toggle caption on' ) );\n\n\t\t\tthis.listenTo( view, 'execute', () => {\n\t\t\t\teditor.execute( 'toggleImageCaption', { focusCaptionOnShow: true } );\n\n\t\t\t\t// Scroll to the selection and highlight the caption if the caption showed up.\n\t\t\t\tconst modelCaptionElement = imageCaptionUtils.getCaptionFromModelSelection( editor.model.document.selection );\n\n\t\t\t\tif ( modelCaptionElement ) {\n\t\t\t\t\tconst figcaptionElement = editor.editing.mapper.toViewElement( modelCaptionElement );\n\n\t\t\t\t\teditingView.scrollToTheSelection();\n\n\t\t\t\t\teditingView.change( writer => {\n\t\t\t\t\t\twriter.addClass( 'image__caption_highlighted', figcaptionElement! );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./imagecaption.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nexport const imageMimeTypes = {\n\t'jpeg': 'jpeg',\n\t'png': 'png',\n\t'gif': 'gif',\n\t'bmp': 'bmp',\n\t'webp': 'webp',\n\t'tiff': 'tiff'\n};\nexport const videoMimeTypes = {\n\t'mp4': 'mp4',\n\t'webm': 'webm',\n\t'mov': 'quicktime'\n};\nexport const audioMimeTypes = {\n\t'mp3': 'mpeg',\n\t'wav': 'wav',\n\t'm4a': 'x-m4a'\n};\n\nexport const fileMimeTypes = {\n\t'pdf': 'pdf',\n\t'doc': 'msword',\n\t'docx': 'vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t'xls': 'vnd.ms-excel',\n\t'xlsx': 'vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t'xlsm': 'vnd.ms-excel.sheet.macroenabled.12',\n\t'odp': 'vnd.oasis.opendocument.presentation',\n\t'pps': 'vnd.ms-powerpoint',\n\t'ppt': 'vnd.ms-powerpoint',\n\t'pptx': 'vnd.openxmlformats-officedocument.presentationml.presentation'\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imageupload/utils\n */\n\n/* global fetch, File */\n\nimport type { ViewElement } from 'ckeditor5/src/engine';\nimport { global } from 'ckeditor5/src/utils';\nimport type ImageUtils from '../imageutils';\nimport { imageMimeTypes, videoMimeTypes, audioMimeTypes, fileMimeTypes } from './mimeTypes';\n\n/**\n * Creates a regular expression used to test for image files.\n *\n * ```ts\n * const imageType = createImageTypeRegExp( [ 'png', 'jpeg', 'svg+xml', 'vnd.microsoft.icon' ] );\n *\n * console.log( 'is supported image', imageType.test( file.type ) );\n * ```\n */\nexport function createImageTypeRegExp( ): RegExp {\n\t// Sanitize the MIME type name which may include: \"+\", \"-\" or \".\".\n\tconst regExpSafeNames = Object.values( imageMimeTypes ).map( type => type.replace( '+', '\\\\+' ) );\n\treturn new RegExp( `^image\\\\/(${ regExpSafeNames.join( '|' ) })$` );\n}\n\nexport function createVideoTypeRegExp( ): RegExp {\n\tconst regExpSafeNames = Object.values( videoMimeTypes ).map( type => type.replace( '+', '\\\\+' ) );\n\treturn new RegExp( `^video\\\\/(${ regExpSafeNames.join( '|' ) })$` );\n}\n\nexport function createAudioTypeRegExp( ): RegExp {\n\tconst regExpSafeNames = Object.values( audioMimeTypes ).map( type => type.replace( '+', '\\\\+' ) );\n\treturn new RegExp( `^audio\\\\/(${ regExpSafeNames.join( '|' ) })$` );\n}\n\nexport function createFileTypeRegExp( ): RegExp {\n\t// Sanitize the MIME type name which may include: \"+\", \"-\" or \".\".\n\tconst regExpSafeNames = Object.values( fileMimeTypes ).map( type => type.replace( '+', '\\\\+' ) );\n\treturn new RegExp( `^application\\\\/(${ regExpSafeNames.join( '|' ) })$` );\n}\n\n/**\n * Creates a promise that fetches the image local source (Base64 or blob) and resolves with a `File` object.\n *\n * @param image Image whose source to fetch.\n * @returns A promise which resolves when an image source is fetched and converted to a `File` instance.\n * It resolves with a `File` object. If there were any errors during file processing, the promise will be rejected.\n */\nexport function fetchLocalImage( image: ViewElement ): Promise<File> {\n\treturn new Promise( ( resolve, reject ) => {\n\t\tconst imageSrc = image.getAttribute( 'src' )!;\n\n\t\t// Fetch works asynchronously and so does not block browser UI when processing data.\n\t\tfetch( imageSrc )\n\t\t\t.then( resource => resource.blob() )\n\t\t\t.then( blob => {\n\t\t\t\tconst mimeType = getImageMimeType( blob, imageSrc );\n\t\t\t\tconst ext = mimeType.replace( 'image/', '' );\n\t\t\t\tconst filename = `image.${ ext }`;\n\t\t\t\tconst file = new File( [ blob ], filename, { type: mimeType } );\n\n\t\t\t\tresolve( file );\n\t\t\t} )\n\t\t\t.catch( err => {\n\t\t\t\t// Fetch fails only, if it can't make a request due to a network failure or if anything prevented the request\n\t\t\t\t// from completing, i.e. the Content Security Policy rules. It is not possible to detect the exact cause of failure,\n\t\t\t\t// so we are just trying the fallback solution, if general TypeError is thrown.\n\t\t\t\treturn err && err.name === 'TypeError' ?\n\t\t\t\t\tconvertLocalImageOnCanvas( imageSrc ).then( resolve ).catch( reject ) :\n\t\t\t\t\treject( err );\n\t\t\t} );\n\t} );\n}\n\n/**\n * Checks whether a given node is an image element with a local source (Base64 or blob).\n *\n * @param node The node to check.\n */\nexport function isLocalImage( imageUtils: ImageUtils, node: ViewElement ): boolean {\n\tif ( !imageUtils.isInlineImageView( node ) || !node.getAttribute( 'src' ) ) {\n\t\treturn false;\n\t}\n\n\treturn !!node.getAttribute( 'src' )!.match( /^data:image\\/\\w+;base64,/g ) ||\n\t\t!!node.getAttribute( 'src' )!.match( /^blob:/g );\n}\n\n/**\n * Extracts an image type based on its blob representation or its source.\n * @param blob Image blob representation.\n * @param src Image `src` attribute value.\n */\nfunction getImageMimeType( blob: Blob, src: string ): string {\n\tif ( blob.type ) {\n\t\treturn blob.type;\n\t} else if ( src.match( /data:(image\\/\\w+);base64/ ) ) {\n\t\treturn src.match( /data:(image\\/\\w+);base64/ )![ 1 ].toLowerCase();\n\t} else {\n\t\t// Fallback to 'jpeg' as common extension.\n\t\treturn 'image/jpeg';\n\t}\n}\n\n/**\n * Creates a promise that converts the image local source (Base64 or blob) to a blob using canvas and resolves\n * with a `File` object.\n * @param imageSrc Image `src` attribute value.\n * @returns A promise which resolves when an image source is converted to a `File` instance.\n * It resolves with a `File` object. If there were any errors during file processing, the promise will be rejected.\n */\nfunction convertLocalImageOnCanvas( imageSrc: string ): Promise<File> {\n\treturn getBlobFromCanvas( imageSrc ).then( blob => {\n\t\tconst mimeType = getImageMimeType( blob, imageSrc );\n\t\tconst ext = mimeType.replace( 'image/', '' );\n\t\tconst filename = `image.${ ext }`;\n\n\t\treturn new File( [ blob ], filename, { type: mimeType } );\n\t} );\n}\n\n/**\n * Creates a promise that resolves with a `Blob` object converted from the image source (Base64 or blob).\n * @param imageSrc Image `src` attribute value.\n */\nfunction getBlobFromCanvas( imageSrc: string ): Promise<Blob> {\n\treturn new Promise( ( resolve, reject ) => {\n\t\tconst image = global.document.createElement( 'img' );\n\n\t\timage.addEventListener( 'load', () => {\n\t\t\tconst canvas = global.document.createElement( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst ctx = canvas.getContext( '2d' )!;\n\n\t\t\tctx.drawImage( image, 0, 0 );\n\n\t\t\tcanvas.toBlob( blob => blob ? resolve( blob ) : reject() );\n\t\t} );\n\n\t\timage.addEventListener( 'error', () => reject() );\n\n\t\timage.src = imageSrc;\n\t} );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imageupload/imageuploadui\n */\n\nimport type { Locale } from 'ckeditor5/src/utils';\nimport { Plugin } from 'ckeditor5/src/core';\nimport { FileDialogButtonView } from 'ckeditor5/src/upload';\nimport { createFileTypeRegExp, createImageTypeRegExp, createVideoTypeRegExp, createAudioTypeRegExp } from './utils';\nimport type UploadImageCommand from './uploadimagecommand';\nimport mediaUploadIcon from '../../theme/icons/upload-media.svg';\n\n/**\n * The image upload button plugin.\n *\n * For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature} documentation.\n *\n * Adds the `'uploadImage'` button to the {@link module:ui/componentfactory~ComponentFactory UI component factory}\n * and also the `imageUpload` button as an alias for backward compatibility.\n */\nexport default class ImageUploadUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageUploadUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst componentCreator = ( locale: Locale ) => {\n\t\t\tconst view = new FileDialogButtonView( locale );\n\t\t\tconst command: UploadImageCommand = editor.commands.get( 'uploadImage' )!;\n\t\t\tconst imageTypes = editor.config.get( 'image.upload.types' )!;\n\t\t\tconst videoTypes = editor.config.get( 'video.upload.types' ) as Array<string>;\n\t\t\tconst audioTypes = editor.config.get( 'audio.upload.types' ) as Array<string>;\n\t\t\tconst fileTypes = editor.config.get( 'file.upload.types' ) as Array<string>;\n\t\t\tconst extraFileTypes = editor.config.get( 'extraFile.upload.types' ) as Array<string>;\n\n\t\t\tconst imageTypesRegExp = createImageTypeRegExp( );\n\t\t\tconst videoTypesRegExp = createVideoTypeRegExp( );\n\t\t\tconst audioTypesRegExp = createAudioTypeRegExp( );\n\t\t\tconst fileTypesRegExp = createFileTypeRegExp( );\n\n\t\t\tview.set( {\n\t\t\t\tacceptedType:\n\t\t\t\t\timageTypes.map( type => `${ type }` ).join( ',' ) +\n\t\t\t\t\t',' +\n\t\t\t\t\tvideoTypes.map( type => `${ type }` ).join( ',' ) +\n\t\t\t\t\t',' +\n\t\t\t\t\taudioTypes.map( type => `${ type }` ).join( ',' ) +\n\t\t\t\t\t',' +\n\t\t\t\t\tfileTypes.map( type => `${ type }` ).join( ',' ) +\n\t\t\t\t\t',' +\n\t\t\t\t\textraFileTypes.map( type => `${ type }` ).join( ',' ),\n\t\t\t\tallowMultipleFiles: true\n\t\t\t} );\n\n\t\t\tview.buttonView.set( {\n\t\t\t\tlabel: t( 'Upload media' ),\n\t\t\t\ticon: mediaUploadIcon,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tview.buttonView.bind( 'isEnabled' ).to( command );\n\n\t\t\tview.on( 'done', ( evt, files: FileList ) => {\n\t\t\t\tconst imagesToUpload = Array.from( files ).filter( file => imageTypesRegExp.test( file.type ) );\n\t\t\t\tconst videosToUpload = Array.from( files ).filter( file => {\n\t\t\t\t\treturn videoTypesRegExp.test( file.type ) || file.name.includes( '.mkv' );\n\t\t\t\t} );\n\t\t\t\tconst audiosToUpload = Array.from( files ).filter( file => {\n\t\t\t\t\treturn audioTypesRegExp.test( file.type );\n\t\t\t\t} );\n\t\t\t\tconst filesToUpload = Array.from( files ).filter( file => {\n\t\t\t\t\treturn fileTypesRegExp.test( file.type );\n\t\t\t\t} );\n\t\t\t\tconst extraFilesToUpload = Array.from( files ).filter( file => {\n\t\t\t\t\treturn extraFileTypes.some( type => file.name.includes( type ) );\n\t\t\t\t} );\n\n\t\t\t\tif ( imagesToUpload.length ) {\n\t\t\t\t\teditor.execute( 'uploadImage', { file: imagesToUpload } );\n\n\t\t\t\t\teditor.editing.view.focus();\n\t\t\t\t}\n\t\t\t\tif ( videosToUpload.length ) {\n\t\t\t\t\teditor.execute( 'uploadVideo', { file: videosToUpload } );\n\t\t\t\t}\n\t\t\t\tif ( audiosToUpload.length ) {\n\t\t\t\t\teditor.execute( 'uploadAudio', { files: audiosToUpload } );\n\t\t\t\t}\n\t\t\t\tif ( filesToUpload.length ) {\n\t\t\t\t\teditor.execute( 'fileUpload', { file: filesToUpload } );\n\t\t\t\t}\n\t\t\t\tif ( extraFilesToUpload.length ) {\n\t\t\t\t\teditor.execute( 'fileUpload', { file: extraFilesToUpload } );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t};\n\n\t\t// Setup `uploadImage` button and add `imageUpload` button as an alias for backward compatibility.\n\t\teditor.ui.componentFactory.add( 'uploadImage', componentCreator );\n\t\teditor.ui.componentFactory.add( 'imageUpload', componentCreator );\n\t}\n}\n","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"iso-8859-1\\\"?>\\n<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\\n<svg version=\\\"1.1\\\" id=\\\"Capa_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\"\\n\\t viewBox=\\\"0 0 489.95 489.95\\\" style=\\\"enable-background:new 0 0 489.95 489.95;\\\" xml:space=\\\"preserve\\\">\\n<g>\\n\\t<g>\\n\\t\\t<path d=\\\"M431.175,427.85v-200.5c0-34.2-27.9-62.1-62.1-62.1h-40.2c-6.8,0-12.3,5.5-12.3,12.3s5.5,12.3,12.3,12.3h40.2\\n\\t\\t\\tc20.7,0,37.6,16.9,37.6,37.6v200.6c0,20.7-16.9,37.6-37.6,37.6h-248.2c-20.7,0-37.6-16.9-37.6-37.6v-200.7\\n\\t\\t\\tc0-20.7,16.9-37.6,37.6-37.6h40.2c6.8,0,12.3-5.5,12.3-12.3s-5.5-12.3-12.3-12.3h-40.2c-34.2,0-62.1,27.9-62.1,62.1v200.6\\n\\t\\t\\tc0,34.2,27.9,62.1,62.1,62.1h248.2C403.375,489.95,431.175,462.15,431.175,427.85z\\\"/>\\n\\t\\t<path d=\\\"M152.475,104.55c4.8,4.8,12.5,4.8,17.3,0l63-63v229.8c0,6.8,5.5,12.3,12.3,12.3c6.8,0,12.3-5.5,12.3-12.3V41.65l63,63\\n\\t\\t\\tc2.4,2.4,5.5,3.6,8.7,3.6s6.3-1.2,8.7-3.6c4.8-4.8,4.8-12.5,0-17.3l-83.9-83.9c-4.6-4.6-12.7-4.6-17.3,0l-83.9,83.9\\n\\t\\t\\tC147.675,92.05,147.675,99.75,152.475,104.55z\\\"/>\\n\\t</g>\\n</g>\\n<g>\\n</g>\\n<g>\\n</g>\\n<g>\\n</g>\\n<g>\\n</g>\\n<g>\\n</g>\\n<g>\\n</g>\\n<g>\\n</g>\\n<g>\\n</g>\\n<g>\\n</g>\\n<g>\\n</g>\\n<g>\\n</g>\\n<g>\\n</g>\\n<g>\\n</g>\\n<g>\\n</g>\\n<g>\\n</g>\\n</svg>\\n\";","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./imageuploadprogress.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./imageuploadicon.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./imageuploadloader.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imageupload/imageuploadprogress\n */\n\n/* globals setTimeout */\n\nimport { type Editor, Plugin } from 'ckeditor5/src/core';\nimport { FileRepository, type FileLoader } from 'ckeditor5/src/upload';\n\nimport '../../theme/imageuploadprogress.css';\nimport '../../theme/imageuploadicon.css';\nimport '../../theme/imageuploadloader.css';\nimport type { GetCallback } from 'ckeditor5/src/utils';\nimport type {\n\tDowncastWriter,\n\tView,\n\tViewElement,\n\tViewContainerElement,\n\tViewUIElement,\n\tDowncastAttributeEvent,\n\tElement\n} from 'ckeditor5/src/engine';\nimport type ImageUtils from '../imageutils';\n\n/**\n * The image upload progress plugin.\n * It shows a placeholder when the image is read from the disk and a progress bar while the image is uploading.\n */\nexport default class ImageUploadProgress extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageUploadProgress' as const;\n\t}\n\n\t/**\n\t * The image placeholder that is displayed before real image data can be accessed.\n\t *\n\t * For the record, this image is a 1x1 px GIF with an aspect ratio set by CSS.\n\t */\n\tprivate placeholder: string;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis.placeholder = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Upload status change - update image's view according to that status.\n\t\tif ( editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\teditor.editing.downcastDispatcher.on<DowncastAttributeEvent>(\n\t\t\t\t'attribute:uploadStatus:imageBlock',\n\t\t\t\tthis.uploadStatusChange\n\t\t\t);\n\t\t}\n\n\t\tif ( editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\teditor.editing.downcastDispatcher.on<DowncastAttributeEvent>(\n\t\t\t\t'attribute:uploadStatus:imageInline',\n\t\t\t\tthis.uploadStatusChange\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * This method is called each time the image `uploadStatus` attribute is changed.\n\t *\n\t * @param evt An object containing information about the fired event.\n\t * @param data Additional information about the change.\n\t */\n\tprivate uploadStatusChange: GetCallback<DowncastAttributeEvent> = ( evt, data, conversionApi ) => {\n\t\tconst editor = this.editor;\n\t\tconst modelImage = data.item as Element;\n\t\tconst uploadId = modelImage.getAttribute( 'uploadId' ) as string | number;\n\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst fileRepository = editor.plugins.get( FileRepository );\n\t\tconst status = uploadId ? data.attributeNewValue : null;\n\t\tconst placeholder = this.placeholder;\n\t\tconst viewFigure = editor.editing.mapper.toViewElement( modelImage )! as ViewContainerElement;\n\t\tconst viewWriter = conversionApi.writer;\n\n\t\tif ( status == 'reading' ) {\n\t\t\t// Start \"appearing\" effect and show placeholder with infinite progress bar on the top\n\t\t\t// while image is read from disk.\n\t\t\t_startAppearEffect( viewFigure, viewWriter );\n\t\t\t_showPlaceholder( imageUtils, placeholder, viewFigure, viewWriter );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Show progress bar on the top of the image when image is uploading.\n\t\tif ( status == 'uploading' ) {\n\t\t\tconst loader = fileRepository.loaders.get( uploadId );\n\n\t\t\t// Start appear effect if needed - see https://github.com/ckeditor/ckeditor5-image/issues/191.\n\t\t\t_startAppearEffect( viewFigure, viewWriter );\n\n\t\t\tif ( !loader ) {\n\t\t\t\t// There is no loader associated with uploadId - this means that image came from external changes.\n\t\t\t\t// In such cases we still want to show the placeholder until image is fully uploaded.\n\t\t\t\t// Show placeholder if needed - see https://github.com/ckeditor/ckeditor5-image/issues/191.\n\t\t\t\t_showPlaceholder( imageUtils, placeholder, viewFigure, viewWriter );\n\t\t\t} else {\n\t\t\t\t// Hide placeholder and initialize progress bar showing upload progress.\n\t\t\t\t_hidePlaceholder( viewFigure, viewWriter );\n\t\t\t\t_showProgressBar( viewFigure, viewWriter, loader, editor.editing.view );\n\t\t\t\t_displayLocalImage( imageUtils, viewFigure!, viewWriter, loader );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( status == 'complete' && fileRepository.loaders.get( uploadId ) ) {\n\t\t\t_showCompleteIcon( viewFigure, viewWriter, editor.editing.view );\n\t\t}\n\n\t\t// Clean up.\n\t\t_hideProgressBar( viewFigure, viewWriter );\n\t\t_hidePlaceholder( viewFigure, viewWriter );\n\t\t_stopAppearEffect( viewFigure, viewWriter );\n\t};\n}\n\n/**\n * Adds ck-appear class to the image figure if one is not already applied.\n */\nfunction _startAppearEffect( viewFigure: ViewContainerElement, writer: DowncastWriter ) {\n\tif ( !viewFigure.hasClass( 'ck-appear' ) ) {\n\t\twriter.addClass( 'ck-appear', viewFigure );\n\t}\n}\n\n/**\n * Removes ck-appear class to the image figure if one is not already removed.\n */\nfunction _stopAppearEffect( viewFigure: ViewContainerElement, writer: DowncastWriter ) {\n\twriter.removeClass( 'ck-appear', viewFigure );\n}\n\n/**\n * Shows placeholder together with infinite progress bar on given image figure.\n */\nfunction _showPlaceholder( imageUtils: ImageUtils, placeholder: string, viewFigure: ViewContainerElement, writer: DowncastWriter ) {\n\tif ( !viewFigure.hasClass( 'ck-image-upload-placeholder' ) ) {\n\t\twriter.addClass( 'ck-image-upload-placeholder', viewFigure );\n\t}\n\n\tconst viewImg = imageUtils.findViewImgElement( viewFigure )!;\n\n\tif ( viewImg.getAttribute( 'src' ) !== placeholder ) {\n\t\twriter.setAttribute( 'src', placeholder, viewImg );\n\t}\n\n\tif ( !_getUIElement( viewFigure, 'placeholder' ) ) {\n\t\twriter.insert( writer.createPositionAfter( viewImg ), _createPlaceholder( writer ) );\n\t}\n}\n\n/**\n * Removes placeholder together with infinite progress bar on given image figure.\n */\nfunction _hidePlaceholder( viewFigure: ViewContainerElement, writer: DowncastWriter ) {\n\tif ( viewFigure.hasClass( 'ck-image-upload-placeholder' ) ) {\n\t\twriter.removeClass( 'ck-image-upload-placeholder', viewFigure );\n\t}\n\n\t_removeUIElement( viewFigure, writer, 'placeholder' );\n}\n\n/**\n * Shows progress bar displaying upload progress.\n * Attaches it to the file loader to update when upload percentace is changed.\n */\nfunction _showProgressBar( viewFigure: ViewContainerElement, writer: DowncastWriter, loader: FileLoader, view: View ) {\n\tconst progressBar = _createProgressBar( writer );\n\twriter.insert( writer.createPositionAt( viewFigure, 'end' ), progressBar );\n\n\t// Update progress bar width when uploadedPercent is changed.\n\tloader.on( 'change:uploadedPercent', ( evt, name, value ) => {\n\t\tview.change( writer => {\n\t\t\twriter.setStyle( 'width', value + '%', progressBar );\n\t\t} );\n\t} );\n}\n\n/**\n * Hides upload progress bar.\n */\nfunction _hideProgressBar( viewFigure: ViewContainerElement, writer: DowncastWriter ) {\n\t_removeUIElement( viewFigure, writer, 'progressBar' );\n}\n\n/**\n * Shows complete icon and hides after a certain amount of time.\n */\nfunction _showCompleteIcon( viewFigure: ViewContainerElement, writer: DowncastWriter, view: View ) {\n\tconst completeIcon = writer.createUIElement( 'div', { class: 'ck-image-upload-complete-icon' } );\n\n\twriter.insert( writer.createPositionAt( viewFigure, 'end' ), completeIcon );\n\n\tsetTimeout( () => {\n\t\tview.change( writer => writer.remove( writer.createRangeOn( completeIcon ) ) );\n\t}, 3000 );\n}\n\n/**\n * Create progress bar element using {@link module:engine/view/uielement~UIElement}.\n */\nfunction _createProgressBar( writer: DowncastWriter ): ViewUIElement {\n\tconst progressBar = writer.createUIElement( 'div', { class: 'ck-progress-bar' } );\n\n\twriter.setCustomProperty( 'progressBar', true, progressBar );\n\n\treturn progressBar;\n}\n\n/**\n * Create placeholder element using {@link module:engine/view/uielement~UIElement}.\n */\nfunction _createPlaceholder( writer: DowncastWriter ): ViewUIElement {\n\tconst placeholder = writer.createUIElement( 'div', { class: 'ck-upload-placeholder-loader' } );\n\n\twriter.setCustomProperty( 'placeholder', true, placeholder );\n\n\treturn placeholder;\n}\n\n/**\n * Returns {@link module:engine/view/uielement~UIElement} of given unique property from image figure element.\n * Returns `undefined` if element is not found.\n */\nfunction _getUIElement( imageFigure: ViewElement, uniqueProperty: string ): ViewUIElement | undefined {\n\tfor ( const child of imageFigure.getChildren() ) {\n\t\tif ( ( child as ViewElement ).getCustomProperty( uniqueProperty ) ) {\n\t\t\treturn child as ViewUIElement;\n\t\t}\n\t}\n}\n\n/**\n * Removes {@link module:engine/view/uielement~UIElement} of given unique property from image figure element.\n */\nfunction _removeUIElement( viewFigure: ViewContainerElement, writer: DowncastWriter, uniqueProperty: string ) {\n\tconst element = _getUIElement( viewFigure, uniqueProperty );\n\n\tif ( element ) {\n\t\twriter.remove( writer.createRangeOn( element ) );\n\t}\n}\n\n/**\n * Displays local data from file loader.\n */\nfunction _displayLocalImage( imageUtils: ImageUtils, viewFigure: ViewElement, writer: DowncastWriter, loader: FileLoader ) {\n\tif ( loader.data ) {\n\t\tconst viewImg = imageUtils.findViewImgElement( viewFigure )!;\n\n\t\twriter.setAttribute( 'src', loader.data, viewImg );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport { FileRepository } from 'ckeditor5/src/upload';\nimport { Command } from 'ckeditor5/src/core';\nimport { toArray, type ArrayOrItem } from 'ckeditor5/src/utils';\nimport type { Position } from 'ckeditor5/src/engine';\n\nimport type ImageUtils from '../imageutils';\n\n/**\n * @module image/imageupload/uploadimagecommand\n */\n\n/**\n * The upload image command.\n *\n * The command is registered by the {@link module:image/imageupload/imageuploadediting~ImageUploadEditing} plugin as `uploadImage`\n * and it is also available via aliased `imageUpload` name.\n *\n * In order to upload an image at the current selection position\n * (according to the {@link module:widget/utils~findOptimalInsertionRange} algorithm),\n * execute the command and pass the native image file instance:\n *\n * ```ts\n * this.listenTo( editor.editing.view.document, 'clipboardInput', ( evt, data ) => {\n * \t// Assuming that only images were pasted:\n * \tconst images = Array.from( data.dataTransfer.files );\n *\n * \t// Upload the first image:\n * \teditor.execute( 'uploadImage', { file: images[ 0 ] } );\n * } );\n * ```\n *\n * It is also possible to insert multiple images at once:\n *\n * ```ts\n * editor.execute( 'uploadImage', {\n * \tfile: [\n * \t\tfile1,\n * \t\tfile2\n * \t]\n * } );\n * ```\n */\nexport default class UploadImageCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst selectedElement = editor.model.document.selection.getSelectedElement()!;\n\n\t\t// TODO: This needs refactoring.\n\t\tthis.isEnabled = imageUtils.isImageAllowed() || imageUtils.isImage( selectedElement );\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t * @param options Options for the executed command.\n\t * @param options.file The image file or an array of image files to upload.\n\t */\n\tpublic override execute( options: { file: ArrayOrItem<File> } ): void {\n\t\tconst files = toArray( options.file );\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\t// In case of multiple files, each file (starting from the 2nd) will be inserted at a position that\n\t\t// follows the previous one. That will move the selection and, to stay on the safe side and make sure\n\t\t// all images inherit the same selection attributes, they are collected beforehand.\n\t\t//\n\t\t// Applying these attributes ensures, for instance, that inserting an (inline) image into a link does\n\t\t// not split that link but preserves its continuity.\n\t\t//\n\t\t// Note: Selection attributes that do not make sense for images will be filtered out by insertImage() anyway.\n\t\tconst selectionAttributes = Object.fromEntries( selection.getAttributes() );\n\n\t\tfiles.forEach( ( file, index ) => {\n\t\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\t\t// Inserting of an inline image replace the selected element and make a selection on the inserted image.\n\t\t\t// Therefore inserting multiple inline images requires creating position after each element.\n\t\t\tif ( index && selectedElement && imageUtils.isImage( selectedElement ) ) {\n\t\t\t\tconst position = this.editor.model.createPositionAfter( selectedElement );\n\n\t\t\t\tthis._uploadImage( file, selectionAttributes, position );\n\t\t\t} else {\n\t\t\t\tthis._uploadImage( file, selectionAttributes );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Handles uploading single file.\n\t */\n\tprivate _uploadImage( file: File, attributes: object, position?: Position ): void {\n\t\tconst editor = this.editor;\n\t\tconst fileRepository = editor.plugins.get( FileRepository );\n\t\tconst loader = fileRepository.createLoader( file );\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\t// Do not throw when upload adapter is not set. FileRepository will log an error anyway.\n\t\tif ( !loader ) {\n\t\t\treturn;\n\t\t}\n\n\t\timageUtils.insertImage( { ...attributes, uploadId: loader.id }, position );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imageupload/imageuploadediting\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\n\nimport { UpcastWriter, type Element, type Item, type Writer, type DataTransfer, type ViewElement } from 'ckeditor5/src/engine';\n\nimport { Notification } from 'ckeditor5/src/ui';\nimport { ClipboardPipeline, type ViewDocumentClipboardInputEvent } from 'ckeditor5/src/clipboard';\nimport { FileRepository, type UploadResponse, type FileLoader } from 'ckeditor5/src/upload';\nimport { env } from 'ckeditor5/src/utils';\n\nimport ImageUtils from '../imageutils';\nimport UploadImageCommand from './uploadimagecommand';\nimport { fetchLocalImage, isLocalImage } from '../../src/imageupload/utils';\nimport { createImageTypeRegExp } from './utils';\n\n/**\n * The editing part of the image upload feature. It registers the `'uploadImage'` command\n * and the `imageUpload` command as an aliased name.\n *\n * When an image is uploaded, it fires the {@link ~ImageUploadEditing#event:uploadComplete `uploadComplete`} event\n * that allows adding custom attributes to the {@link module:engine/model/element~Element image element}.\n */\nexport default class ImageUploadEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ FileRepository, Notification, ClipboardPipeline, ImageUtils ] as const;\n\t}\n\n\tpublic static get pluginName() {\n\t\treturn 'ImageUploadEditing' as const;\n\t}\n\n\t/**\n\t * An internal mapping of {@link module:upload/filerepository~FileLoader#id file loader UIDs} and\n\t * model elements during the upload.\n\t *\n\t * Model element of the uploaded image can change, for instance, when {@link module:image/image/imagetypecommand~ImageTypeCommand}\n\t * is executed as a result of adding caption or changing image style. As a result, the upload logic must keep track of the model\n\t * element (reference) and resolve the upload for the correct model element (instead of the one that landed in the `$graveyard`\n\t * after image type changed).\n\t */\n\tprivate readonly _uploadImageElements: Map<string, Element>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'image', {\n\t\t\tupload: {\n\t\t\t\ttypes: [ '.jpeg', '.png', '.gif', '.bmp', '.webp', '.tiff' ]\n\t\t\t}\n\t\t} );\n\t\teditor.config.define( 'video', {\n\t\t\tupload: {\n\t\t\t\ttypes: [ '.mp4', '.webm', '.mov', '.mkv' ]\n\t\t\t}\n\t\t} );\n\t\teditor.config.define( 'audio', {\n\t\t\tupload: {\n\t\t\t\ttypes: [ '.mp3', '.wav', '.m4a' ]\n\t\t\t}\n\t\t} );\n\t\teditor.config.define( 'file', {\n\t\t\tupload: {\n\t\t\t\ttypes: [ '.pdf', '.doc', '.docx', '.xls', '.xlsx', '.xlsm', '.odp', '.pps', '.ppt', '.pptx' ]\n\t\t\t}\n\t\t} );\n\t\teditor.config.define( 'extraFile', {\n\t\t\tupload: {\n\t\t\t\ttypes: [ '.rtf', '.txt', '.key', '.email', '.eml', '.emlx', '.mpg', '.mpeg', '.zip', '.sketch' ]\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * An internal mapping of {@link module:upload/filerepository~FileLoader#id file loader UIDs} and\n\t\t * model elements during the upload.\n\t\t *\n\t\t * Model element of the uploaded image can change, for instance, when {@link module:image/image/imagetypecommand~ImageTypeCommand}\n\t\t * is executed as a result of adding caption or changing image style. As a result, the upload logic must keep track of the model\n\t\t * element (reference) and resolve the upload for the correct model element (instead of the one that landed in the `$graveyard`\n\t\t * after image type changed).\n\t\t *\n\t\t * @private\n\t\t * @readonly\n\t\t * @member {Map.<String,module:engine/model/element~Element>}\n\t\t */\n\t\tthis._uploadImageElements = new Map();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst doc = editor.model.document;\n\t\tconst conversion = editor.conversion;\n\t\tconst fileRepository = editor.plugins.get( FileRepository );\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\t\tconst imageTypes = createImageTypeRegExp( );\n\t\tconst uploadImageCommand = new UploadImageCommand( editor );\n\n\t\t// Register `uploadImage` command and add `imageUpload` command as an alias for backward compatibility.\n\t\teditor.commands.add( 'uploadImage', uploadImageCommand );\n\t\teditor.commands.add( 'imageUpload', uploadImageCommand );\n\n\t\t// Register upcast converter for uploadId.\n\t\tconversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: 'img',\n\t\t\t\t\tkey: 'uploadId'\n\t\t\t\t},\n\t\t\t\tmodel: 'uploadId'\n\t\t\t} );\n\n\t\t// Handle pasted images.\n\t\t// For every image file, a new file loader is created and a placeholder image is\n\t\t// inserted into the content. Then, those images are uploaded once they appear in the model\n\t\t// (see Document#change listener below).\n\t\tthis.listenTo<ViewDocumentClipboardInputEvent>( editor.editing.view.document, 'clipboardInput', ( evt, data ) => {\n\t\t\t// Skip if non empty HTML data is included.\n\t\t\t// https://github.com/ckeditor/ckeditor5-upload/issues/68\n\t\t\tif ( isHtmlIncluded( data.dataTransfer ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst images = Array.from( data.dataTransfer.files ).filter( file => {\n\t\t\t\t// See https://github.com/ckeditor/ckeditor5-image/pull/254.\n\t\t\t\tif ( !file ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn imageTypes.test( file.type );\n\t\t\t} );\n\n\t\t\tif ( !images.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevt.stop();\n\n\t\t\teditor.model.change( writer => {\n\t\t\t\t// Set selection to paste target.\n\t\t\t\tif ( data.targetRanges ) {\n\t\t\t\t\twriter.setSelection( data.targetRanges.map( viewRange => editor.editing.mapper.toModelRange( viewRange ) ) );\n\t\t\t\t}\n\n\t\t\t\t// Upload images after the selection has changed in order to ensure the command's state is refreshed.\n\t\t\t\teditor.model.enqueueChange( () => {\n\t\t\t\t\teditor.execute( 'uploadImage', { file: images } );\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\n\t\t// Handle HTML pasted with images with base64 or blob sources.\n\t\t// For every image file, a new file loader is created and a placeholder image is\n\t\t// inserted into the content. Then, those images are uploaded once they appear in the model\n\t\t// (see Document#change listener below).\n\t\tthis.listenTo( clipboardPipeline, 'inputTransformation', ( evt, data ) => {\n\t\t\tconst fetchableImages = Array.from( editor.editing.view.createRangeIn( data.content ) )\n\t\t\t\t.map( value => value.item as ViewElement )\n\t\t\t\t.filter( viewElement =>\n\t\t\t\t\tisLocalImage( imageUtils, viewElement ) &&\n\t\t\t\t\t!viewElement.getAttribute( 'uploadProcessed' ) )\n\t\t\t\t.map( viewElement => { return { promise: fetchLocalImage( viewElement ), imageElement: viewElement }; } );\n\n\t\t\tif ( !fetchableImages.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst writer = new UpcastWriter( editor.editing.view.document );\n\n\t\t\tfor ( const fetchableImage of fetchableImages ) {\n\t\t\t\t// Set attribute marking that the image was processed already.\n\t\t\t\twriter.setAttribute( 'uploadProcessed', true, fetchableImage.imageElement );\n\n\t\t\t\tconst loader = fileRepository.createLoader( fetchableImage.promise );\n\n\t\t\t\tif ( loader ) {\n\t\t\t\t\twriter.setAttribute( 'src', '', fetchableImage.imageElement );\n\t\t\t\t\twriter.setAttribute( 'uploadId', loader.id, fetchableImage.imageElement );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Prevents from the browser redirecting to the dropped image.\n\t\teditor.editing.view.document.on( 'dragover', ( evt, data ) => {\n\t\t\tdata.preventDefault();\n\t\t} );\n\n\t\t// Upload placeholder images that appeared in the model.\n\t\tdoc.on( 'change', () => {\n\t\t\t// Note: Reversing changes to start with insertions and only then handle removals. If it was the other way around,\n\t\t\t// loaders for **all** images that land in the $graveyard would abort while in fact only those that were **not** replaced\n\t\t\t// by other images should be aborted.\n\t\t\tconst changes = doc.differ.getChanges( { includeChangesInGraveyard: true } ).reverse();\n\t\t\tconst insertedImagesIds = new Set();\n\n\t\t\tfor ( const entry of changes ) {\n\t\t\t\tif ( entry.type == 'insert' && entry.name != '$text' ) {\n\t\t\t\t\tconst item = entry.position.nodeAfter!;\n\t\t\t\t\tconst isInsertedInGraveyard = entry.position.root.rootName == '$graveyard';\n\n\t\t\t\t\tfor ( const imageElement of getImagesFromChangeItem( editor, item ) ) {\n\t\t\t\t\t\t// Check if the image element still has upload id.\n\t\t\t\t\t\tconst uploadId = imageElement.getAttribute( 'uploadId' ) as string;\n\n\t\t\t\t\t\tif ( !uploadId ) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Check if the image is loaded on this client.\n\t\t\t\t\t\tconst loader = fileRepository.loaders.get( uploadId );\n\n\t\t\t\t\t\tif ( !loader ) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( isInsertedInGraveyard ) {\n\t\t\t\t\t\t\t// If the image was inserted to the graveyard for good (**not** replaced by another image),\n\t\t\t\t\t\t\t// only then abort the loading process.\n\t\t\t\t\t\t\tif ( !insertedImagesIds.has( uploadId ) ) {\n\t\t\t\t\t\t\t\tloader.abort();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Remember the upload id of the inserted image. If it acted as a replacement for another\n\t\t\t\t\t\t\t// image (which landed in the $graveyard), the related loader will not be aborted because\n\t\t\t\t\t\t\t// this is still the same image upload.\n\t\t\t\t\t\t\tinsertedImagesIds.add( uploadId );\n\n\t\t\t\t\t\t\t// Keep the mapping between the upload ID and the image model element so the upload\n\t\t\t\t\t\t\t// can later resolve in the context of the correct model element. The model element could\n\t\t\t\t\t\t\t// change for the same upload if one image was replaced by another (e.g. image type was changed),\n\t\t\t\t\t\t\t// so this may also replace an existing mapping.\n\t\t\t\t\t\t\tthis._uploadImageElements.set( uploadId, imageElement as Element );\n\n\t\t\t\t\t\t\tif ( loader.status == 'idle' ) {\n\t\t\t\t\t\t\t\t// If the image was inserted into content and has not been loaded yet, start loading it.\n\t\t\t\t\t\t\t\tthis._readAndUpload( loader );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Set the default handler for feeding the image element with `src` and `srcset` attributes.\n\t\tthis.on<ImageUploadCompleteEvent>( 'uploadComplete', ( evt, { imageElement, data } ) => {\n\t\t\tconst urls = data.urls ? data.urls as Record<string, unknown> : data;\n\n\t\t\tthis.editor.model.change( writer => {\n\t\t\t\twriter.setAttribute( 'src', urls.default, imageElement );\n\t\t\t\tthis._parseAndSetSrcsetAttributeOnImage( urls, imageElement, writer );\n\t\t\t} );\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tconst schema = this.editor.model.schema;\n\n\t\t// Setup schema to allow uploadId and uploadStatus for images.\n\t\t// Wait for ImageBlockEditing or ImageInlineEditing to register their elements first,\n\t\t// that's why doing this in afterInit() instead of init().\n\t\tif ( this.editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\tschema.extend( 'imageBlock', {\n\t\t\t\tallowAttributes: [ 'uploadId', 'uploadStatus' ]\n\t\t\t} );\n\t\t}\n\n\t\tif ( this.editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\tschema.extend( 'imageInline', {\n\t\t\t\tallowAttributes: [ 'uploadId', 'uploadStatus' ]\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * Reads and uploads an image.\n\t *\n\t * The image is read from the disk and as a Base64-encoded string it is set temporarily to\n\t * `image[src]`. When the image is successfully uploaded, the temporary data is replaced with the target\n\t * image's URL (the URL to the uploaded image on the server).\n\t */\n\tprotected _readAndUpload( loader: FileLoader ): Promise<void> {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst t = editor.locale.t;\n\t\tconst fileRepository = editor.plugins.get( FileRepository );\n\t\tconst notification = editor.plugins.get( Notification );\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst imageUploadElements = this._uploadImageElements;\n\n\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\twriter.setAttribute( 'uploadStatus', 'reading', imageUploadElements.get( loader.id )! );\n\t\t} );\n\n\t\treturn loader.read()\n\t\t\t.then( () => {\n\t\t\t\tconst promise = loader.upload();\n\t\t\t\tconst imageElement = imageUploadElements.get( loader.id )!;\n\n\t\t\t\t// Force re–paint in Safari. Without it, the image will display with a wrong size.\n\t\t\t\t// https://github.com/ckeditor/ckeditor5/issues/1975\n\t\t\t\t/* istanbul ignore next -- @preserve */\n\t\t\t\tif ( env.isSafari ) {\n\t\t\t\t\tconst viewFigure = editor.editing.mapper.toViewElement( imageElement )!;\n\t\t\t\t\tconst viewImg = imageUtils.findViewImgElement( viewFigure )!;\n\n\t\t\t\t\teditor.editing.view.once( 'render', () => {\n\t\t\t\t\t\t// Early returns just to be safe. There might be some code ran\n\t\t\t\t\t\t// in between the outer scope and this callback.\n\t\t\t\t\t\tif ( !viewImg.parent ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst domFigure = editor.editing.view.domConverter.mapViewToDom( viewImg.parent ) as HTMLElement | undefined;\n\n\t\t\t\t\t\tif ( !domFigure ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst originalDisplay = domFigure.style.display;\n\n\t\t\t\t\t\tdomFigure.style.display = 'none';\n\n\t\t\t\t\t\t// Make sure this line will never be removed during minification for having \"no effect\".\n\t\t\t\t\t\t( domFigure as any )._ckHack = domFigure.offsetHeight;\n\n\t\t\t\t\t\tdomFigure.style.display = originalDisplay;\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\t\twriter.setAttribute( 'uploadStatus', 'uploading', imageElement );\n\t\t\t\t} );\n\n\t\t\t\treturn promise;\n\t\t\t} )\n\t\t\t.then( data => {\n\t\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\t\tconst imageElement = imageUploadElements.get( loader.id )!;\n\n\t\t\t\t\twriter.setAttribute( 'uploadStatus', 'complete', imageElement );\n\n\t\t\t\t\tthis.fire<ImageUploadCompleteEvent>( 'uploadComplete', { data, imageElement } );\n\t\t\t\t} );\n\n\t\t\t\tclean();\n\t\t\t} )\n\t\t\t.catch( error => {\n\t\t\t\t// If status is not 'error' nor 'aborted' - throw error because it means that something else went wrong,\n\t\t\t\t// it might be generic error and it would be real pain to find what is going on.\n\t\t\t\tif ( loader.status !== 'error' && loader.status !== 'aborted' ) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\t// Might be 'aborted'.\n\t\t\t\tif ( loader.status == 'error' && error ) {\n\t\t\t\t\tnotification.showWarning( error, {\n\t\t\t\t\t\ttitle: t( 'Upload failed' ),\n\t\t\t\t\t\tnamespace: 'upload'\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Permanently remove image from insertion batch.\n\t\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\t\twriter.remove( imageUploadElements.get( loader.id )! );\n\t\t\t\t} );\n\n\t\t\t\tclean();\n\t\t\t} );\n\n\t\tfunction clean() {\n\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\tconst imageElement = imageUploadElements.get( loader.id )!;\n\n\t\t\t\twriter.removeAttribute( 'uploadId', imageElement );\n\t\t\t\twriter.removeAttribute( 'uploadStatus', imageElement );\n\n\t\t\t\timageUploadElements.delete( loader.id );\n\t\t\t} );\n\n\t\t\tfileRepository.destroyLoader( loader );\n\t\t}\n\t}\n\n\t/**\n\t * Creates the `srcset` attribute based on a given file upload response and sets it as an attribute to a specific image element.\n\t *\n\t * @param data Data object from which `srcset` will be created.\n\t * @param image The image element on which the `srcset` attribute will be set.\n\t */\n\tprotected _parseAndSetSrcsetAttributeOnImage( data: Record<string, unknown>, image: Element, writer: Writer ): void {\n\t\t// Srcset attribute for responsive images support.\n\t\tlet maxWidth = 0;\n\n\t\tconst srcsetAttribute = Object.keys( data )\n\t\t\t// Filter out keys that are not integers.\n\t\t\t.filter( key => {\n\t\t\t\tconst width = parseInt( key, 10 );\n\n\t\t\t\tif ( !isNaN( width ) ) {\n\t\t\t\t\tmaxWidth = Math.max( maxWidth, width );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} )\n\n\t\t\t// Convert each key to srcset entry.\n\t\t\t.map( key => `${ data[ key ] } ${ key }w` )\n\n\t\t\t// Join all entries.\n\t\t\t.join( ', ' );\n\n\t\tif ( srcsetAttribute != '' ) {\n\t\t\twriter.setAttribute( 'srcset', {\n\t\t\t\tdata: srcsetAttribute,\n\t\t\t\twidth: maxWidth\n\t\t\t}, image );\n\t\t}\n\t}\n}\n\n/**\n * Returns `true` if non-empty `text/html` is included in the data transfer.\n */\nexport function isHtmlIncluded( dataTransfer: DataTransfer ): boolean {\n\treturn Array.from( dataTransfer.types ).includes( 'text/html' ) && dataTransfer.getData( 'text/html' ) !== '';\n}\n\nfunction getImagesFromChangeItem( editor: Editor, item: Item ): Array<Item> {\n\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\treturn Array.from( editor.model.createRangeOn( item ) )\n\t\t.filter( value => imageUtils.isImage( value.item as Element ) )\n\t\t.map( value => value.item );\n}\n\n/**\n * An event fired when an image is uploaded. You can hook into this event to provide\n * custom attributes to the {@link module:engine/model/element~Element image element} based on the data from\n * the server.\n *\n * ```ts\n * const imageUploadEditing = editor.plugins.get( 'ImageUploadEditing' );\n *\n * imageUploadEditing.on( 'uploadComplete', ( evt, { data, imageElement } ) => {\n * \teditor.model.change( writer => {\n * \t\twriter.setAttribute( 'someAttribute', 'foo', imageElement );\n * \t} );\n * } );\n * ```\n *\n * You can also stop the default handler that sets the `src` and `srcset` attributes\n * if you want to provide custom values for these attributes.\n *\n * ```ts\n * imageUploadEditing.on( 'uploadComplete', ( evt, { data, imageElement } ) => {\n * \tevt.stop();\n * } );\n * ```\n *\n * **Note**: This event is fired by the {@link module:image/imageupload/imageuploadediting~ImageUploadEditing} plugin.\n *\n * @eventName ~ImageUploadEditing#uploadComplete\n * @param data The `uploadComplete` event data.\n */\nexport type ImageUploadCompleteEvent = {\n\tname: 'uploadComplete';\n\targs: [ data: ImageUploadCompleteData];\n};\n\nexport type ImageUploadCompleteData = {\n\n\t/**\n\t * The data coming from the upload adapter.\n\t */\n\tdata: UploadResponse;\n\n\t/**\n\t * The model {@link module:engine/model/element~Element image element} that can be customized.\n\t */\n\timageElement: Element;\n};\n","export const mimeTypes = {\n\t'pdf': 'pdf',\n\t'doc': 'msword',\n\t'docx': 'vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t'xls': 'vnd.ms-excel',\n\t'xlsx': 'vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t'xlsm': 'vnd.ms-excel.sheet.macroenabled.12',\n\t'odp': 'vnd.oasis.opendocument.presentation',\n\t'pps': 'vnd.ms-powerpoint',\n\t'ppt': 'vnd.ms-powerpoint',\n\t'pptx': 'vnd.openxmlformats-officedocument.presentationml.presentation'\n};","import {findOptimalInsertionRange} from '@ckeditor/ckeditor5-widget/src/utils';\nimport {mimeTypes} from './mimeTypes';\n\n/* global fetch, File */\n\n/**\n * Creates a regular expression used to test for files.\n *\n * @param {Array.<String>} types\n * @returns {RegExp}\n */\nexport function createFileTypeRegExp( types ) {\n\t// Sanitize the MIME type name which may include: \"+\", \"-\" or \".\".\n\tconst regExpSafeNames = Object.values(mimeTypes).map( type => type.replace( '+', '\\\\+' ) );\n\treturn new RegExp( `^application\\\\/(${ regExpSafeNames.join( '|' ) })$` );\n}\n\n/**\n * @param {module:engine/view/element~Element} link File whose source to fetch.\n * @returns {Promise.<File>} A promise which resolves when an image source is fetched and converted to a `File` instance.\n * It resolves with a `File` object. If there were any errors during file processing, the promise will be rejected.\n */\nexport function fetchLocalFile( link ) {\n\treturn new Promise( ( resolve, reject ) => {\n\t\tconst linkHref = link.getAttribute( 'href' );\n\n\t\t// Fetch works asynchronously and so does not block browser UI when processing data.\n\t\tfetch( linkHref )\n\t\t\t.then( resource => resource.blob() )\n\t\t\t.then( blob => {\n\t\t\t\tconst mimeType = getFileMimeType( blob, linkHref );\n\t\t\t\tconst ext = mimeType.replace( 'file/', '' );\n\t\t\t\tconst filename = `file.${ ext }`;\n\t\t\t\tconst file = createFileFromBlob( blob, filename, mimeType );\n\n\t\t\t\tfile ? resolve( file ) : reject();\n\t\t\t} )\n\t\t\t.catch( reject );\n\t} );\n}\n\n/**\n * @param {module:engine/view/node~Node} node The node to check.\n * @returns {Boolean}\n */\nexport function isLocalFile( node ) {\n\tif ( !node.is( 'element', 'a' ) || !node.getAttribute( 'href' ) ) {\n\t\treturn false;\n\t}\n\n\treturn node.getAttribute( 'href' );\n}\n\n\nfunction getFileMimeType( blob, src ) {\n\tif ( blob.type ) {\n\t\treturn blob.type;\n\t} else if ( src.match( /data:(image\\/\\w+);base64/ ) ) {\n\t\treturn src.match( /data:(image\\/\\w+);base64/ )[ 1 ].toLowerCase();\n\t} else {\n\t\tthrow new Error('Could not retrieve mime type for file.');\n\t}\n}\n\n// Creates a `File` instance from the given `Blob` instance using the specified file name.\n//\n// @param {Blob} blob The `Blob` instance from which the file will be created.\n// @param {String} filename The file name used during the file creation.\n// @param {String} mimeType The file MIME type.\n// @returns {File|null} The `File` instance created from the given blob or `null` if `File API` is not available.\nfunction createFileFromBlob( blob, filename, mimeType ) {\n\ttry {\n\t\treturn new File( [ blob ], filename, { type: mimeType } );\n\t} catch ( err ) {\n\t\t// Edge does not support `File` constructor ATM, see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/9551546/.\n\t\t// However, the `File` function is present (so cannot be checked with `!window.File` or `typeof File === 'function'`), but\n\t\t// calling it with `new File( ... )` throws an error. This try-catch prevents that. Also when the function will\n\t\t// be implemented correctly in Edge the code will start working without any changes (see #247).\n\t\treturn null;\n\t}\n}\n\nexport function insertFileLink( writer, model, attributes = {}, file ) {\n\tconst selection = model.document.selection;\n\tconst insertAtSelection = findOptimalInsertionRange( selection, model );\n\n\tconst linkedText = writer.createText(file.name, attributes);\n\tmodel.insertContent(linkedText, insertAtSelection);\n\n\tif ( linkedText.parent ) {\n\t\twriter.setSelection( linkedText, 'on' );\n\t}\n}\n\n\n","import FileRepository from '@ckeditor/ckeditor5-upload/src/filerepository';\nimport Command from '@ckeditor/ckeditor5-core/src/command';\nimport { insertFileLink, isFileAllowed } from './utils';\n\nexport default class FileUploadCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\trefresh() {\n\t\tthis.isEnabled = true;\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t * @param {Object} options Options for the executed command.\n\t * @param {File|Array.<File>} options.file The file or an array of files to upload.\n\t */\n\texecute( options ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\n\t\tconst fileRepository = editor.plugins.get( FileRepository );\n\n\t\tmodel.change( writer => {\n\t\t\tconst filesToUpload = options.file;\n\t\t\tfor ( const file of filesToUpload ) {\n\t\t\t\tuploadFile( writer, model, fileRepository, file );\n\t\t\t}\n\t\t} );\n\t}\n}\n\n/**\n * \tHandles uploading single file.\n *\n *\t@param {module:engine/model/writer~writer} writer\n *\t@param {module:engine/model/model~Model} model\n *\t@param {File} file\n */\nfunction uploadFile( writer, model, fileRepository, file ) {\n\tconst loader = fileRepository.createLoader( file );\n\n\t// Do not throw when upload adapter is not set. FileRepository will log an error anyway.\n\tif ( !loader ) {\n\t\treturn;\n\t}\n\n\tinsertFileLink( writer, model, {linkHref: \"\", uploadId: loader.id }, file );\n}\n","\nimport Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport FileRepository from '@ckeditor/ckeditor5-upload/src/filerepository';\nimport Notification from '@ckeditor/ckeditor5-ui/src/notification/notification';\nimport Clipboard from '@ckeditor/ckeditor5-clipboard/src/clipboard';\nimport UpcastWriter from '@ckeditor/ckeditor5-engine/src/view/upcastwriter';\n\nimport { fetchLocalFile, isLocalFile } from './utils';\nimport { createFileTypeRegExp } from './utils';\nimport FileUploadCommand from \"./fileuploadcommand\";\n\n/**\n * The editing part of the file upload feature. It registers the `'fileUpload'` command.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class FileUploadEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tstatic get requires() {\n\t\treturn [ FileRepository, Notification, Clipboard ];\n\t}\n\n\tstatic get pluginName() {\n\t\treturn 'FileUploadEditing';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor ) {\n\t\tsuper( editor );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst doc = editor.model.document;\n\t\tconst schema = editor.model.schema;\n\t\tconst conversion = editor.conversion;\n\t\tconst fileRepository = editor.plugins.get( FileRepository );\n\n\t\tconst fileTypes = createFileTypeRegExp(editor.config.get( 'simpleFileUpload.fileTypes' ));\n\n\t\t// Setup schema to allow uploadId and uploadStatus for files.\n\t\tschema.extend( '$text', {\n\t\t\tallowAttributes: [\n\t\t\t\t'uploadId',\n\t\t\t\t'uploadStatus'\n\t\t\t]\n\t\t} );\n\n\t\t// Register fileUpload command.\n\t\teditor.commands.add( 'fileUpload', new FileUploadCommand( editor ) );\n\n\t\t// Register upcast converter for uploadId.\n\t\tconversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: 'a',\n\t\t\t\t\tkey: 'uploadId'\n\t\t\t\t},\n\t\t\t\tmodel: 'uploadId'\n\t\t\t} );\n\n\t\tthis.listenTo( editor.editing.view.document, 'clipboardInput', ( evt, data ) => {\n\t\t\t// Skip if non empty HTML data is included.\n\t\t\t// https://github.com/ckeditor/ckeditor5-upload/issues/68\n\t\t\tif ( isHtmlIncluded( data.dataTransfer ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst files = Array.from( data.dataTransfer.files ).filter( file => {\n\t\t\t\tif ( !file ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn fileTypes.test( file.type );\n\t\t\t} );\n\n\t\t\tif ( !files.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevt.stop();\n\t\t\t\n\t\t\teditor.model.change( writer => {\n\t\t\t\t// Set selection to paste target.\n\t\t\t\tif ( data.targetRanges ) {\n\t\t\t\t\twriter.setSelection( data.targetRanges.map( viewRange => editor.editing.mapper.toModelRange( viewRange ) ) );\n\t\t\t\t}\n\n\t\t\t\t// Upload files after the selection has changed in order to ensure the command's state is refreshed.\n\t\t\t\teditor.model.enqueueChange( 'default', () => {\n\t\t\t\t\teditor.execute( 'fileUpload', { file: files } );\n\t\t\t\t} );\n\t\t\t\t\n\t\t\t} );\n\t\t} );\n\n\t\tthis.listenTo( editor.plugins.get( Clipboard ), 'inputTransformation', ( evt, data ) => {\n\t\t\tconst fetchableFiles = Array.from( editor.editing.view.createRangeIn( data.content ) )\n\t\t\t\t.filter( value => isLocalFile( value.item ) && !value.item.getAttribute( 'uploadProcessed' ) )\n\t\t\t\t.map( value => { return { promise: fetchLocalFile( value.item ), fileElement: value.item }; } );\n\n\t\t\tif ( !fetchableFiles.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst writer = new UpcastWriter();\n\n\t\t\tfor ( const fetchableFile of fetchableFiles ) {\n\t\t\t\t// Set attribute marking that the file was processed already.\n\t\t\t\twriter.setAttribute( 'uploadProcessed', true, fetchableFile.fileElement );\n\n\t\t\t\tconst loader = fileRepository.createLoader( fetchableFile.promise );\n\n\t\t\t\tif ( loader ) {\n\t\t\t\t\twriter.setAttribute( 'href', '', fetchableFile.fileElement );\n\t\t\t\t\twriter.setAttribute( 'uploadId', loader.id, fetchableFile.fileElement );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Prevents from the browser redirecting to the dropped file.\n\t\teditor.editing.view.document.on( 'dragover', ( evt, data ) => {\n\t\t\tdata.preventDefault();\n\t\t} );\n\n\t\t// Upload placeholder files that appeared in the model.\n\t\tdoc.on( 'change', () => {\n\t\t\tconst changes = doc.differ.getChanges( { includeChangesInGraveyard: true } );\n\t\t\tfor ( const entry of changes ) {\n\t\t\t\tif ( entry.type == 'insert') {\n\t\t\t\t\tconst item = entry.position.nodeAfter;\n\t\t\t\t\tif (item) {\n\t\t\t\t\t\tconst isInGraveyard = entry.position.root.rootName == '$graveyard';\n\t\t\t\t\t\tfor ( const file of getFileLinksFromChangeItem( editor, item ) ) {\n\t\t\t\t\t\t\t// Check if the file element still has upload id.\n\t\t\t\t\t\t\tconst uploadId = file.getAttribute( 'uploadId' );\n\t\t\t\t\t\t\tif ( !uploadId ) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Check if the file is loaded on this client.\n\t\t\t\t\t\t\tconst loader = fileRepository.loaders.get( uploadId );\n\n\t\t\t\t\t\t\tif ( !loader ) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( isInGraveyard ) {\n\t\t\t\t\t\t\t\t// If the file was inserted to the graveyard - abort the loading process.\n\t\t\t\t\t\t\t\tloader.abort();\n\t\t\t\t\t\t\t} else if ( loader.status == 'idle' ) {\n\t\t\t\t\t\t\t\t// If the file was inserted into content and has not been loaded yet, start loading it.\n\t\t\t\t\t\t\t\tthis._readAndUpload( loader, file );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Reads and uploads a file.\n\t *\n\t * @protected\n\t * @param {module:upload/filerepository~FileLoader} loader\n\t * @param {module:engine/model/element~Element} fileElement\n\t * @returns {Promise}\n\t */\n\t_readAndUpload( loader, fileElement ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst t = editor.locale.t;\n\t\tconst fileRepository = editor.plugins.get( FileRepository );\n\t\tconst notification = editor.plugins.get( Notification );\n\n\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\twriter.setAttribute( 'uploadStatus', 'reading', fileElement );\n\t\t} );\n\n\t\treturn loader.read()\n\t\t\t.then( () => {\n\t\t\t\tconst promise = loader.upload();\n\n\t\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\t\twriter.setAttribute( 'uploadStatus', 'uploading', fileElement );\n\t\t\t\t} );\n\n\t\t\t\treturn promise;\n\t\t\t} )\n\t\t\t.then( data => {\n\t\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\t\twriter.setAttributes( { uploadStatus: 'complete', linkHref: data.default }, fileElement );\n\t\t\t\t} );\n\n\t\t\t\tclean();\n\t\t\t} )\n\t\t\t.catch( error => {\n\t\t\t\t// If status is not 'error' nor 'aborted' - throw error because it means that something else went wrong,\n\t\t\t\t// it might be generic error and it would be real pain to find what is going on.\n\t\t\t\tif ( loader.status !== 'error' && loader.status !== 'aborted' ) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\t// Might be 'aborted'.\n\t\t\t\tif ( loader.status == 'error' && error ) {\n\t\t\t\t\tnotification.showWarning( error, {\n\t\t\t\t\t\ttitle: t( 'Upload failed' ),\n\t\t\t\t\t\tnamespace: 'upload'\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tclean();\n\n\t\t\t\t// Permanently remove file from insertion batch.\n\t\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\t\twriter.remove( fileElement );\n\t\t\t\t} );\n\t\t\t} );\n\n\t\tfunction clean() {\n\t\t\tmodel.enqueueChange( { isUndoable: false }, writer => {\n\t\t\t\twriter.removeAttribute( 'uploadId', fileElement );\n\t\t\t\twriter.removeAttribute( 'uploadStatus', fileElement );\n\t\t\t} );\n\n\t\t\tfileRepository.destroyLoader( loader );\n\t\t}\n\t}\n}\n\n// Returns `true` if non-empty `text/html` is included in the data transfer.\n//\n// @param {module:clipboard/datatransfer~DataTransfer} dataTransfer\n// @returns {Boolean}\nexport function isHtmlIncluded( dataTransfer ) {\n\treturn Array.from( dataTransfer.types ).includes( 'text/html' ) && dataTransfer.getData( 'text/html' ) !== '';\n}\n\nfunction getFileLinksFromChangeItem( editor, item ) {\n\treturn Array.from( editor.model.createRangeOn( item ) )\n\t\t.filter( value => value.item.hasAttribute('linkHref'))\n\t\t.map( value => value.item );\n}\n","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport FileDialogButtonView from '@ckeditor/ckeditor5-upload/src/ui/filedialogbuttonview';\nimport fileUploadIcon from '../theme/icons/fileupload.svg';\n\n/**\n * The file upload button plugin.\n *\n * Adds the `'fileUpload'` button to the {@link module:ui/componentfactory~ComponentFactory UI component factory}.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class FileUploadUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\t// Setup `fileUpload` button.\n\t\teditor.ui.componentFactory.add( 'fileUpload', locale => {\n\t\t\tconst view = new FileDialogButtonView( locale );\n\t\t\tconst command = editor.commands.get( 'fileUpload' );\n\t\t\tconst fileTypes = editor.config.get( 'simpleFileUpload.fileTypes' );\n\n\t\t\tview.set( {\n\t\t\t\tacceptedType: fileTypes.map(type => `${ type }`).join(','),\n\t\t\t\tallowMultipleFiles: false\n\t\t\t} );\n\n\t\t\tview.buttonView.set( {\n\t\t\t\tlabel: t( 'Insert file' ),\n\t\t\t\ticon: fileUploadIcon,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tview.buttonView.bind( 'isEnabled' ).to( command );\n\n\t\t\tview.on( 'done', ( evt, file ) => {\n\t\t\t\tconst fileToUpload = file;\n\n\t\t\t\tif ( fileToUpload.length ) {\n\t\t\t\t\teditor.execute( 'fileUpload', { file: fileToUpload } );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n}\n","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\\r\\n<!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon -->\\r\\n<!DOCTYPE svg PUBLIC \\\"-//W3C//DTD SVG 1.1//EN\\\" \\\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\\\">\\r\\n<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 1000 1000\\\" enable-background=\\\"new 0 0 1000 1000\\\" xml:space=\\\"preserve\\\">\\r\\n<metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata>\\r\\n<g><g transform=\\\"translate(0.000000,511.000000) scale(0.100000,-0.100000)\\\"><path d=\\\"M1443.6,4990.4c-26.9-11.5-69.2-38.4-92.2-61.5c-107.6-99.9-99.9,232.5-99.9-4823.9v-4677.8l42.3-63.4c25-34.6,69.2-82.6,98-103.8c53.8-40.3,57.7-40.3,1966.1-40.3h1910.3l51.9,53.8c51.9,50,53.8,59.6,53.8,246v194.1l-63.4,55.7l-61.5,55.7H3557.7H1866.4V110.8v4285.8H3894h2027.6v-945.6c0-622.7,7.7-974.4,21.2-1024.3c11.5-42.3,44.2-101.9,71.1-132.6c101.9-107.6,92.2-107.6,1147.4-107.6h970.5V716.1c0-1633.6-5.8-1560.6,124.9-1616.3c84.6-34.6,280.6-34.6,363.2,0c136.4,55.7,126.8-67.3,126.8,1795c0,1620.1-1.9,1679.7-36.5,1748.9c-55.7,105.7-2262,2300.5-2350.4,2338.9c-63.4,25-351.7,28.8-2469.6,26.9C2345,5009.6,1474.4,5001.9,1443.6,4990.4z M7132.3,3368.3l567-567h-572.7h-570.8v567c0,311.3,1.9,567,5.8,567C6563.4,3935.3,6821,3679.6,7132.3,3368.3z\\\"/><path d=\\\"M6242.5-1670.8c-411.3-411.3-772.6-784.1-803.3-830.2c-157.6-242.1,55.7-536.2,334.4-463.2c69.2,19.2,144.1,86.5,522.7,463.2c244.1,242.2,449.7,440.1,457.4,440.1c5.8,0,15.4-572.7,17.3-1272.3c5.8-1239.6,7.7-1276.1,44.2-1326.1c48-67.3,174.9-130.7,257.5-130.7c90.3,0,203.7,65.4,253.7,148l46.1,73l5.8,1256.9l5.8,1258.8l445.9-443.9c388.2-388.2,457.4-447.8,532.4-467c251.8-67.3,468.9,192.2,355.5,430.5c-15.4,32.7-376.7,407.4-803.3,834.1C7157.3-944.4,7140-927.1,7065-927.1S6972.8-944.4,6242.5-1670.8z\\\"/></g></g>\\r\\n</svg>\";","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport FileUploadEditing from \"./src/fileuploadediting\";\nimport FileUploadUI from \"./src/fileuploadui\";\n\nexport default class FileUpload extends Plugin {\n\n static get requires() {\n return [ FileUploadEditing, FileUploadUI ];\n }\n\n /**\n * @inheritDoc\n */\n static get pluginName() {\n return 'fileUpload';\n }\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./imageinsertformrowview.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./imageinsert.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imageresize/resizeimagecommand\n */\n\nimport { Command } from 'ckeditor5/src/core';\n\nimport type ImageUtils from '../imageutils';\n\n/**\n * The resize image command. Currently, it only supports the width attribute.\n */\nexport default class ResizeImageCommand extends Command {\n\t/**\n\t * Desired image width and height.\n\t */\n\tdeclare public value: null | {\n\t\twidth: string | null;\n\t\theight: string | null;\n\t};\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst element = imageUtils.getClosestSelectedImageElement( editor.model.document.selection );\n\n\t\tthis.isEnabled = !!element;\n\n\t\tif ( !element || !element.hasAttribute( 'width' ) ) {\n\t\t\tthis.value = null;\n\t\t} else {\n\t\t\tthis.value = {\n\t\t\t\twidth: element.getAttribute( 'width' ) as string,\n\t\t\t\theight: null\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * ```ts\n\t * // Sets the width to 50%:\n\t * editor.execute( 'resizeImage', { width: '50%' } );\n\t *\n\t * // Removes the width attribute:\n\t * editor.execute( 'resizeImage', { width: null } );\n\t * ```\n\t *\n\t * @param options\n\t * @param options.width The new width of the image.\n\t * @fires execute\n\t */\n\tpublic override execute( options: { width: string | null } ): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst imageElement = imageUtils.getClosestSelectedImageElement( model.document.selection );\n\n\t\tthis.value = {\n\t\t\twidth: options.width,\n\t\t\theight: null\n\t\t};\n\n\t\tif ( imageElement ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.setAttribute( 'width', options.width, imageElement );\n\t\t\t} );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imageresize/imageresizehandles\n */\n\nimport type { Element, ViewContainerElement, ViewElement } from 'ckeditor5/src/engine';\nimport { Plugin } from 'ckeditor5/src/core';\nimport { WidgetResize } from 'ckeditor5/src/widget';\n\nimport ImageLoadObserver, { type ImageLoadedEvent } from '../image/imageloadobserver';\nimport type ResizeImageCommand from './resizeimagecommand';\n\nconst RESIZABLE_IMAGES_CSS_SELECTOR =\n\t'figure.image.ck-widget > img,' +\n\t'figure.image.ck-widget > picture > img,' +\n\t'figure.image.ck-widget > a > img,' +\n\t'figure.image.ck-widget > a > picture > img,' +\n\t'span.image-inline.ck-widget > img,' +\n\t'span.image-inline.ck-widget > picture > img';\n\nconst IMAGE_WIDGETS_CLASSES_MATCH_REGEXP = /(image|image-inline)/;\n\nconst RESIZED_IMAGE_CLASS = 'image_resized';\n\n/**\n * The image resize by handles feature.\n *\n * It adds the ability to resize each image using handles or manually by\n * {@link module:image/imageresize/imageresizebuttons~ImageResizeButtons} buttons.\n */\nexport default class ImageResizeHandles extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ WidgetResize ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageResizeHandles' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst command: ResizeImageCommand = this.editor.commands.get( 'resizeImage' )!;\n\t\tthis.bind( 'isEnabled' ).to( command );\n\n\t\tthis._setupResizerCreator();\n\t}\n\n\t/**\n\t * Attaches the listeners responsible for creating a resizer for each image, except for images inside the HTML embed preview.\n\t */\n\tprivate _setupResizerCreator(): void {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\teditingView.addObserver( ImageLoadObserver );\n\n\t\tthis.listenTo<ImageLoadedEvent>( editingView.document, 'imageLoaded', ( evt, domEvent ) => {\n\t\t\t// The resizer must be attached only to images loaded by the `ImageInsert`, `ImageUpload` or `LinkImage` plugins.\n\t\t\tif ( !( domEvent.target as HTMLElement ).matches( RESIZABLE_IMAGES_CSS_SELECTOR ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst domConverter = editor.editing.view.domConverter;\n\t\t\tconst imageView = domConverter.domToView( domEvent.target as HTMLElement ) as ViewElement;\n\t\t\tconst widgetView = imageView.findAncestor( { classes: IMAGE_WIDGETS_CLASSES_MATCH_REGEXP } ) as ViewContainerElement;\n\t\t\tlet resizer = this.editor.plugins.get( WidgetResize ).getResizerByViewElement( widgetView );\n\n\t\t\tif ( resizer ) {\n\t\t\t\t// There are rare cases when the image will be triggered multiple times for the same widget, e.g. when\n\t\t\t\t// the image's source was changed after upload (https://github.com/ckeditor/ckeditor5/pull/8108#issuecomment-708302992).\n\t\t\t\tresizer.redraw();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst mapper = editor.editing.mapper;\n\t\t\tconst imageModel = mapper.toModelElement( widgetView )!;\n\n\t\t\tresizer = editor.plugins\n\t\t\t\t.get( WidgetResize )\n\t\t\t\t.attachTo( {\n\t\t\t\t\tunit: editor.config.get( 'image.resizeUnit' )!,\n\n\t\t\t\t\tmodelElement: imageModel,\n\t\t\t\t\tviewElement: widgetView,\n\t\t\t\t\teditor,\n\n\t\t\t\t\tgetHandleHost( domWidgetElement ) {\n\t\t\t\t\t\treturn domWidgetElement.querySelector( 'img' )!;\n\t\t\t\t\t},\n\t\t\t\t\tgetResizeHost() {\n\t\t\t\t\t\t// Return the model image element parent to avoid setting an inline element (<a>/<span>) as a resize host.\n\t\t\t\t\t\treturn domConverter.mapViewToDom( mapper.toViewElement( imageModel.parent as Element )! ) as HTMLElement;\n\t\t\t\t\t},\n\t\t\t\t\t// TODO consider other positions.\n\t\t\t\t\tisCentered() {\n\t\t\t\t\t\tconst imageStyle = imageModel.getAttribute( 'imageStyle' );\n\n\t\t\t\t\t\treturn !imageStyle || imageStyle == 'block' || imageStyle == 'alignCenter';\n\t\t\t\t\t},\n\n\t\t\t\t\tonCommit( newValue ) {\n\t\t\t\t\t\t// Get rid of the CSS class in case the command execution that follows is unsuccessful\n\t\t\t\t\t\t// (e.g. Track Changes can override it and the new dimensions will not apply). Otherwise,\n\t\t\t\t\t\t// the presence of the class and the absence of the width style will cause it to take 100%\n\t\t\t\t\t\t// of the horizontal space.\n\t\t\t\t\t\teditingView.change( writer => {\n\t\t\t\t\t\t\twriter.removeClass( RESIZED_IMAGE_CLASS, widgetView );\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\teditor.execute( 'resizeImage', { width: newValue } );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\tresizer.on( 'updateSize', () => {\n\t\t\t\tif ( !widgetView.hasClass( RESIZED_IMAGE_CLASS ) ) {\n\t\t\t\t\teditingView.change( writer => {\n\t\t\t\t\t\twriter.addClass( RESIZED_IMAGE_CLASS, widgetView );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tresizer.bind( 'isEnabled' ).to( this );\n\t\t} );\n\t}\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./imageresize.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imagestyle/imagestylecommand\n */\n\nimport type { Element } from 'ckeditor5/src/engine';\nimport { Command, type Editor } from 'ckeditor5/src/core';\nimport type { ImageStyleOptionDefinition } from '../imageconfig';\nimport type ImageUtils from '../imageutils';\n\n/**\n * The image style command. It is used to apply {@link module:image/imageconfig~ImageStyleConfig#options image style option}\n * to a selected image.\n *\n * **Note**: Executing this command may change the image model element if the desired style requires an image of a different\n * type. See {@link module:image/imagestyle/imagestylecommand~ImageStyleCommand#execute} to learn more.\n */\nexport default class ImageStyleCommand extends Command {\n\t/**\n\t * An object containing names of default style options for the inline and block images.\n\t * If there is no default style option for the given image type in the configuration,\n\t * the name will be `false`.\n\t */\n\tprivate _defaultStyles: Record<string, string | false>;\n\n\t/**\n\t * The styles handled by this command.\n\t */\n\tprivate _styles: Map<string, ImageStyleOptionDefinition>;\n\n\t/**\n\t * Creates an instance of the image style command. When executed, the command applies one of\n\t * {@link module:image/imageconfig~ImageStyleConfig#options style options} to the currently selected image.\n\t *\n\t * @param editor The editor instance.\n\t * @param styles The style options that this command supports.\n\t */\n\tconstructor( editor: Editor, styles: Array<ImageStyleOptionDefinition> ) {\n\t\tsuper( editor );\n\n\t\tthis._defaultStyles = {\n\t\t\timageBlock: false,\n\t\t\timageInline: false\n\t\t};\n\n\t\tthis._styles = new Map( styles.map( style => {\n\t\t\tif ( style.isDefault ) {\n\t\t\t\tfor ( const modelElementName of style.modelElements ) {\n\t\t\t\t\tthis._defaultStyles[ modelElementName ] = style.name;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn [ style.name, style ];\n\t\t} ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\t\tconst element = imageUtils.getClosestSelectedImageElement( this.editor.model.document.selection )!;\n\n\t\tthis.isEnabled = !!element;\n\n\t\tif ( !this.isEnabled ) {\n\t\t\tthis.value = false;\n\t\t} else if ( element.hasAttribute( 'imageStyle' ) ) {\n\t\t\tthis.value = element.getAttribute( 'imageStyle' );\n\t\t} else {\n\t\t\tthis.value = this._defaultStyles[ element.name ];\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command and applies the style to the currently selected image:\n\t *\n\t * ```ts\n\t * editor.execute( 'imageStyle', { value: 'side' } );\n\t * ```\n\t *\n\t * **Note**: Executing this command may change the image model element if the desired style requires an image\n\t * of a different type. Learn more about {@link module:image/imageconfig~ImageStyleOptionDefinition#modelElements model element}\n\t * configuration for the style option.\n\t *\n\t * @param options.value The name of the style (as configured in {@link module:image/imageconfig~ImageStyleConfig#options}).\n\t * @fires execute\n\t */\n\tpublic override execute( options: { value?: string } = {} ): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\tmodel.change( writer => {\n\t\t\tconst requestedStyle = options.value;\n\n\t\t\tlet imageElement = imageUtils.getClosestSelectedImageElement( model.document.selection )!;\n\n\t\t\t// Change the image type if a style requires it.\n\t\t\tif ( requestedStyle && this.shouldConvertImageType( requestedStyle, imageElement ) ) {\n\t\t\t\tthis.editor.execute( imageUtils.isBlockImage( imageElement ) ? 'imageTypeInline' : 'imageTypeBlock' );\n\n\t\t\t\t// Update the imageElement to the newly created image.\n\t\t\t\timageElement = imageUtils.getClosestSelectedImageElement( model.document.selection )!;\n\t\t\t}\n\n\t\t\t// Default style means that there is no `imageStyle` attribute in the model.\n\t\t\t// https://github.com/ckeditor/ckeditor5-image/issues/147\n\t\t\tif ( !requestedStyle || this._styles.get( requestedStyle )!.isDefault ) {\n\t\t\t\twriter.removeAttribute( 'imageStyle', imageElement );\n\t\t\t} else {\n\t\t\t\twriter.setAttribute( 'imageStyle', requestedStyle, imageElement );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Returns `true` if requested style change would trigger the image type change.\n\t *\n\t * @param requestedStyle The name of the style (as configured in {@link module:image/imageconfig~ImageStyleConfig#options}).\n\t * @param imageElement The image model element.\n\t */\n\tpublic shouldConvertImageType( requestedStyle: string, imageElement: Element ): boolean {\n\t\tconst supportedTypes = this._styles.get( requestedStyle )!.modelElements;\n\n\t\treturn !supportedTypes.includes( imageElement.name );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imagestyle/utils\n */\n\nimport { type Editor, icons, type PluginCollection } from 'ckeditor5/src/core';\nimport { logWarning } from 'ckeditor5/src/utils';\nimport type { ImageStyleConfig, ImageStyleDropdownDefinition, ImageStyleOptionDefinition } from '../imageconfig';\n\nconst {\n\tobjectFullWidth,\n\tobjectInline,\n\tobjectLeft,\tobjectRight, objectCenter,\n\tobjectBlockLeft, objectBlockRight\n} = icons;\n\n/**\n * Default image style options provided by the plugin that can be referred in the {@link module:image/imageconfig~ImageConfig#styles}\n * configuration.\n *\n * There are available 5 styles focused on formatting:\n *\n * * **`'alignLeft'`** aligns the inline or block image to the left and wraps it with the text using the `image-style-align-left` class,\n * * **`'alignRight'`** aligns the inline or block image to the right and wraps it with the text using the `image-style-align-right` class,\n * * **`'alignCenter'`** centers the block image using the `image-style-align-center` class,\n * * **`'alignBlockLeft'`** aligns the block image to the left using the `image-style-block-align-left` class,\n * * **`'alignBlockRight'`** aligns the block image to the right using the `image-style-block-align-right` class,\n *\n * and 3 semantic styles:\n *\n * * **`'inline'`** is an inline image without any CSS class,\n * * **`'block'`** is a block image without any CSS class,\n * * **`'side'`** is a block image styled with the `image-style-side` CSS class.\n */\nexport const DEFAULT_OPTIONS: Record<string, ImageStyleOptionDefinition> = {\n\t// This style represents an image placed in the line of text.\n\tget inline() {\n\t\treturn {\n\t\t\tname: 'inline',\n\t\t\ttitle: 'In line',\n\t\t\ticon: objectInline,\n\t\t\tmodelElements: [ 'imageInline' ],\n\t\t\tisDefault: true\n\t\t};\n\t},\n\n\t// This style represents an image aligned to the left and wrapped with text.\n\tget alignLeft() {\n\t\treturn {\n\t\t\tname: 'alignLeft',\n\t\t\ttitle: 'Left aligned image',\n\t\t\ticon: objectLeft,\n\t\t\tmodelElements: [ 'imageBlock', 'imageInline' ],\n\t\t\tclassName: 'image-style-align-left'\n\t\t};\n\t},\n\n\t// This style represents an image aligned to the left.\n\tget alignBlockLeft() {\n\t\treturn {\n\t\t\tname: 'alignBlockLeft',\n\t\t\ttitle: 'Left aligned image',\n\t\t\ticon: objectBlockLeft,\n\t\t\tmodelElements: [ 'imageBlock' ],\n\t\t\tclassName: 'image-style-block-align-left'\n\t\t};\n\t},\n\n\t// This style represents a centered image.\n\tget alignCenter() {\n\t\treturn {\n\t\t\tname: 'alignCenter',\n\t\t\ttitle: 'Centered image',\n\t\t\ticon: objectCenter,\n\t\t\tmodelElements: [ 'imageBlock' ],\n\t\t\tclassName: 'image-style-align-center'\n\t\t};\n\t},\n\n\t// This style represents an image aligned to the right and wrapped with text.\n\tget alignRight() {\n\t\treturn {\n\t\t\tname: 'alignRight',\n\t\t\ttitle: 'Right aligned image',\n\t\t\ticon: objectRight,\n\t\t\tmodelElements: [ 'imageBlock', 'imageInline' ],\n\t\t\tclassName: 'image-style-align-right'\n\t\t};\n\t},\n\n\t// This style represents an image aligned to the right.\n\tget alignBlockRight() {\n\t\treturn {\n\t\t\tname: 'alignBlockRight',\n\t\t\ttitle: 'Right aligned image',\n\t\t\ticon: objectBlockRight,\n\t\t\tmodelElements: [ 'imageBlock' ],\n\t\t\tclassName: 'image-style-block-align-right'\n\t\t};\n\t},\n\n\t// This option is equal to the situation when no style is applied.\n\tget block() {\n\t\treturn {\n\t\t\tname: 'block',\n\t\t\ttitle: 'Centered image',\n\t\t\ticon: objectCenter,\n\t\t\tmodelElements: [ 'imageBlock' ],\n\t\t\tisDefault: true\n\t\t};\n\t},\n\n\t// This represents a side image.\n\tget side() {\n\t\treturn {\n\t\t\tname: 'side',\n\t\t\ttitle: 'Side image',\n\t\t\ticon: objectRight,\n\t\t\tmodelElements: [ 'imageBlock' ],\n\t\t\tclassName: 'image-style-side'\n\t\t};\n\t}\n};\n\n/**\n * Default image style icons provided by the plugin that can be referred in the {@link module:image/imageconfig~ImageConfig#styles}\n * configuration.\n *\n * See {@link module:image/imageconfig~ImageStyleOptionDefinition#icon} to learn more.\n *\n * There are 7 default icons available: `'full'`, `'left'`, `'inlineLeft'`, `'center'`, `'right'`, `'inlineRight'`, and `'inline'`.\n */\nexport const DEFAULT_ICONS: Record<string, string> = {\n\tfull: objectFullWidth,\n\tleft: objectBlockLeft,\n\tright: objectBlockRight,\n\tcenter: objectCenter,\n\tinlineLeft: objectLeft,\n\tinlineRight: objectRight,\n\tinline: objectInline\n};\n\n/**\n * Default drop-downs provided by the plugin that can be referred in the {@link module:image/imageconfig~ImageConfig#toolbar}\n * configuration. The drop-downs are containers for the {@link module:image/imageconfig~ImageStyleConfig#options image style options}.\n *\n * If both of the `ImageEditing` plugins are loaded, there are 2 predefined drop-downs available:\n *\n * * **`'imageStyle:wrapText'`**, which contains the `alignLeft` and `alignRight` options, that is,\n * those that wraps the text around the image,\n * * **`'imageStyle:breakText'`**, which contains the `alignBlockLeft`, `alignCenter` and `alignBlockRight` options, that is,\n * those that breaks the text around the image.\n */\nexport const DEFAULT_DROPDOWN_DEFINITIONS: Array<ImageStyleDropdownDefinition> = [ {\n\tname: 'imageStyle:wrapText',\n\ttitle: 'Wrap text',\n\tdefaultItem: 'imageStyle:alignLeft',\n\titems: [ 'imageStyle:alignLeft', 'imageStyle:alignRight' ]\n}, {\n\tname: 'imageStyle:breakText',\n\ttitle: 'Break text',\n\tdefaultItem: 'imageStyle:block',\n\titems: [ 'imageStyle:alignBlockLeft', 'imageStyle:block', 'imageStyle:alignBlockRight' ]\n} ];\n\n/**\n * Returns a list of the normalized and validated image style options.\n *\n * @param config\n * @param config.isInlinePluginLoaded\n * Determines whether the {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugin has been loaded.\n * @param config.isBlockPluginLoaded\n * Determines whether the {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} plugin has been loaded.\n * @param config.configuredStyles\n * The image styles configuration provided in the image styles {@link module:image/imageconfig~ImageConfig#styles configuration}\n * as a default or custom value.\n * @returns\n * * Each of options contains a complete icon markup.\n * * The image style options not supported by any of the loaded plugins are filtered out.\n */\nfunction normalizeStyles( config: {\n\tisInlinePluginLoaded: boolean;\n\tisBlockPluginLoaded: boolean;\n\tconfiguredStyles: ImageStyleConfig;\n}\n): Array<ImageStyleOptionDefinition> {\n\tconst configuredStyles = config.configuredStyles.options || [];\n\n\tconst styles = configuredStyles\n\t\t.map( arrangement => normalizeDefinition( arrangement ) )\n\t\t.filter( arrangement => isValidOption( arrangement, config ) );\n\n\treturn styles;\n}\n\n/**\n * Returns the default image styles configuration depending on the loaded image editing plugins.\n *\n * @param isInlinePluginLoaded\n * Determines whether the {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugin has been loaded.\n *\n * @param isBlockPluginLoaded\n * Determines whether the {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} plugin has been loaded.\n *\n * @returns\n * It returns an object with the lists of the image style options and groups defined as strings related to the\n * {@link module:image/imagestyle/utils#DEFAULT_OPTIONS default options}\n */\nfunction getDefaultStylesConfiguration( isBlockPluginLoaded: boolean, isInlinePluginLoaded: boolean ): ImageStyleConfig {\n\tif ( isBlockPluginLoaded && isInlinePluginLoaded ) {\n\t\treturn {\n\t\t\toptions: [\n\t\t\t\t'inline', 'alignLeft', 'alignRight',\n\t\t\t\t'alignCenter', 'alignBlockLeft', 'alignBlockRight',\n\t\t\t\t'block', 'side'\n\t\t\t]\n\t\t};\n\t} else if ( isBlockPluginLoaded ) {\n\t\treturn {\n\t\t\toptions: [ 'block', 'side' ]\n\t\t};\n\t} else if ( isInlinePluginLoaded ) {\n\t\treturn {\n\t\t\toptions: [ 'inline', 'alignLeft', 'alignRight' ]\n\t\t};\n\t}\n\n\treturn {};\n}\n\n/**\n * Returns a list of the available predefined drop-downs' definitions depending on the loaded image editing plugins.\n */\nfunction getDefaultDropdownDefinitions( pluginCollection: PluginCollection<Editor> ): Array<ImageStyleDropdownDefinition> {\n\tif ( pluginCollection.has( 'ImageBlockEditing' ) && pluginCollection.has( 'ImageInlineEditing' ) ) {\n\t\treturn [ ...DEFAULT_DROPDOWN_DEFINITIONS ];\n\t} else {\n\t\treturn [];\n\t}\n}\n\n/**\n * Normalizes an image style option or group provided in the {@link module:image/imageconfig~ImageConfig#styles}\n * and returns it in a {@link module:image/imageconfig~ImageStyleOptionDefinition}/\n */\nfunction normalizeDefinition( definition: string | Partial<ImageStyleOptionDefinition> & { name: string } ): ImageStyleOptionDefinition {\n\tif ( typeof definition === 'string' ) {\n\t\t// Just the name of the style has been passed, but none of the defaults.\n\t\tif ( !DEFAULT_OPTIONS[ definition ] ) {\n\t\t\t// Normalize the style anyway to prevent errors.\n\t\t\tdefinition = { name: definition };\n\t\t}\n\t\t// Just the name of the style has been passed and it's one of the defaults, just use it.\n\t\t// Clone the style to avoid overriding defaults.\n\t\telse {\n\t\t\tdefinition = { ...DEFAULT_OPTIONS[ definition ] };\n\t\t}\n\t} else {\n\t\t// If an object style has been passed and if the name matches one of the defaults,\n\t\t// extend it with defaults – the user wants to customize a default style.\n\t\t// Note: Don't override the user–defined style object, clone it instead.\n\t\tdefinition = extendStyle( DEFAULT_OPTIONS[ definition.name ], definition );\n\t}\n\n\t// If an icon is defined as a string and correspond with a name\n\t// in default icons, use the default icon provided by the plugin.\n\tif ( typeof definition.icon === 'string' ) {\n\t\tdefinition.icon = DEFAULT_ICONS[ definition.icon ] || definition.icon;\n\t}\n\n\treturn definition as ImageStyleOptionDefinition;\n}\n\n/**\n * Checks if the image style option is valid:\n * * if it has the modelElements fields defined and filled,\n * * if the defined modelElements are supported by any of the loaded image editing plugins.\n * It also displays a console warning these conditions are not met.\n *\n * @param option image style option\n */\nfunction isValidOption(\n\toption: ImageStyleOptionDefinition,\n\t{ isBlockPluginLoaded, isInlinePluginLoaded }: { isBlockPluginLoaded: boolean; isInlinePluginLoaded: boolean }\n): boolean {\n\tconst { modelElements, name } = option;\n\n\tif ( !modelElements || !modelElements.length || !name ) {\n\t\twarnInvalidStyle( { style: option } );\n\n\t\treturn false;\n\t} else {\n\t\tconst supportedElements = [ isBlockPluginLoaded ? 'imageBlock' : null, isInlinePluginLoaded ? 'imageInline' : null ];\n\n\t\t// Check if the option is supported by any of the loaded plugins.\n\t\tif ( !modelElements.some( elementName => supportedElements.includes( elementName ) ) ) {\n\t\t\t/**\n\t\t\t * In order to work correctly, each image style {@link module:image/imageconfig~ImageStyleOptionDefinition option}\n\t\t\t * requires specific model elements (also: types of images) to be supported by the editor.\n\t\t\t *\n\t\t\t * Model element names to which the image style option can be applied are defined in the\n\t\t\t * {@link module:image/imageconfig~ImageStyleOptionDefinition#modelElements} property of the style option\n\t\t\t * definition.\n\t\t\t *\n\t\t\t * Explore the warning in the console to find out precisely which option is not supported and which editor plugins\n\t\t\t * are missing. Make sure these plugins are loaded in your editor to get this image style option working.\n\t\t\t *\n\t\t\t * @error image-style-missing-dependency\n\t\t\t * @param {String} [option] The name of the unsupported option.\n\t\t\t * @param {String} [missingPlugins] The names of the plugins one of which has to be loaded for the particular option.\n\t\t\t */\n\t\t\tlogWarning( 'image-style-missing-dependency', {\n\t\t\t\tstyle: option,\n\t\t\t\tmissingPlugins: modelElements.map( name => name === 'imageBlock' ? 'ImageBlockEditing' : 'ImageInlineEditing' )\n\t\t\t} );\n\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Extends the default style with a style provided by the developer.\n * Note: Don't override the custom–defined style object, clone it instead.\n */\nfunction extendStyle( source: ImageStyleOptionDefinition, style: Partial<ImageStyleOptionDefinition> ): ImageStyleOptionDefinition {\n\tconst extendedStyle: Record<string, any> = { ...style };\n\n\tfor ( const prop in source ) {\n\t\tif ( !Object.prototype.hasOwnProperty.call( style, prop ) ) {\n\t\t\textendedStyle[ prop ] = source[ prop as keyof typeof source ];\n\t\t}\n\t}\n\n\treturn extendedStyle as ImageStyleOptionDefinition;\n}\n\n/**\n * Displays a console warning with the 'image-style-configuration-definition-invalid' error.\n */\nfunction warnInvalidStyle( info: object ): void {\n\t/**\n\t * The image style definition provided in the configuration is invalid.\n\t *\n\t * Please make sure the definition implements properly one of the following:\n\t *\n\t * * {@link module:image/imageconfig~ImageStyleOptionDefinition image style option definition},\n\t * * {@link module:image/imageconfig~ImageStyleDropdownDefinition image style dropdown definition}\n\t *\n\t * @error image-style-configuration-definition-invalid\n\t * @param {String} [dropdown] The name of the invalid drop-down\n\t * @param {String} [style] The name of the invalid image style option\n\t */\n\tlogWarning( 'image-style-configuration-definition-invalid', info );\n}\n\nexport default {\n\tnormalizeStyles,\n\tgetDefaultStylesConfiguration,\n\tgetDefaultDropdownDefinitions,\n\twarnInvalidStyle,\n\tDEFAULT_OPTIONS,\n\tDEFAULT_ICONS,\n\tDEFAULT_DROPDOWN_DEFINITIONS\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport type { DowncastAttributeEvent, Element, UpcastElementEvent } from 'ckeditor5/src/engine';\nimport { first, type GetCallback } from 'ckeditor5/src/utils';\nimport type { ImageStyleOptionDefinition } from '../imageconfig';\n\n/**\n * @module image/imagestyle/converters\n */\n\n/**\n * Returns a converter for the `imageStyle` attribute. It can be used for adding, changing and removing the attribute.\n *\n * @param styles An array containing available image style options.\n * @returns A model-to-view attribute converter.\n */\nexport function modelToViewStyleAttribute( styles: Array<ImageStyleOptionDefinition> ): GetCallback<DowncastAttributeEvent> {\n\treturn ( evt, data, conversionApi ) => {\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if there is class name associated with given value.\n\t\tconst newStyle = getStyleDefinitionByName( data.attributeNewValue as string, styles );\n\t\tconst oldStyle = getStyleDefinitionByName( data.attributeOldValue as string, styles );\n\n\t\tconst viewElement = conversionApi.mapper.toViewElement( data.item as Element )!;\n\t\tconst viewWriter = conversionApi.writer;\n\n\t\tif ( oldStyle ) {\n\t\t\tviewWriter.removeClass( oldStyle.className!, viewElement );\n\t\t}\n\n\t\tif ( newStyle ) {\n\t\t\tviewWriter.addClass( newStyle.className!, viewElement );\n\t\t}\n\t};\n}\n\n/**\n * Returns a view-to-model converter converting image CSS classes to a proper value in the model.\n *\n * @param styles Image style options for which the converter is created.\n * @returns A view-to-model converter.\n */\nexport function viewToModelStyleAttribute( styles: Array<ImageStyleOptionDefinition> ): GetCallback<UpcastElementEvent> {\n\t// Convert only non–default styles.\n\tconst nonDefaultStyles: Record<string, Array<ImageStyleOptionDefinition>> = {\n\t\timageInline: styles.filter( style => !style.isDefault && style.modelElements.includes( 'imageInline' ) ),\n\t\timageBlock: styles.filter( style => !style.isDefault && style.modelElements.includes( 'imageBlock' ) )\n\t};\n\n\treturn ( evt, data, conversionApi ) => {\n\t\tif ( !data.modelRange ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewElement = data.viewItem;\n\t\tconst modelImageElement = first( data.modelRange.getItems() );\n\n\t\t// Run this converter only if an image has been found in the model.\n\t\t// In some cases it may not be found (for example if we run this on a figure with different type than image).\n\t\tif ( !modelImageElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// ...and the `imageStyle` attribute is allowed for that element, otherwise stop conversion early.\n\t\tif ( !conversionApi.schema.checkAttribute( modelImageElement, 'imageStyle' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Convert styles one by one.\n\t\tfor ( const style of nonDefaultStyles[ ( modelImageElement as Element ).name ] ) {\n\t\t\t// Try to consume class corresponding with the style.\n\t\t\tif ( conversionApi.consumable.consume( viewElement, { classes: style.className } ) ) {\n\t\t\t\t// And convert this style to model attribute.\n\t\t\t\tconversionApi.writer.setAttribute( 'imageStyle', style.name, modelImageElement );\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * Returns the style with a given `name` from an array of styles.\n */\nfunction getStyleDefinitionByName( name: string, styles: Array<ImageStyleOptionDefinition> ): ImageStyleOptionDefinition | undefined {\n\tfor ( const style of styles ) {\n\t\tif ( style.name === name ) {\n\t\t\treturn style;\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imagestyle/imagestyleediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport type { Element, UpcastElementEvent } from 'ckeditor5/src/engine';\n\nimport ImageStyleCommand from './imagestylecommand';\nimport ImageUtils from '../imageutils';\nimport utils from './utils';\nimport { viewToModelStyleAttribute, modelToViewStyleAttribute } from './converters';\nimport type { ImageStyleOptionDefinition } from '../imageconfig';\n\n/**\n * The image style engine plugin. It sets the default configuration, creates converters and registers\n * {@link module:image/imagestyle/imagestylecommand~ImageStyleCommand ImageStyleCommand}.\n */\nexport default class ImageStyleEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageStyleEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageUtils ] as const;\n\t}\n\n\t/**\n\t * It contains a list of the normalized and validated style options.\n\t *\n\t * * Each option contains a complete icon markup.\n\t * * The style options not supported by any of the loaded image editing plugins (\n\t * {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} or\n\t * {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`}) are filtered out.\n\t *\n\t * @internal\n\t * @readonly\n\t */\n\tpublic normalizedStyles?: Array<ImageStyleOptionDefinition>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst { normalizeStyles, getDefaultStylesConfiguration } = utils;\n\t\tconst editor = this.editor;\n\t\tconst isBlockPluginLoaded = editor.plugins.has( 'ImageBlockEditing' );\n\t\tconst isInlinePluginLoaded = editor.plugins.has( 'ImageInlineEditing' );\n\n\t\teditor.config.define( 'image.styles', getDefaultStylesConfiguration( isBlockPluginLoaded, isInlinePluginLoaded ) );\n\n\t\tthis.normalizedStyles = normalizeStyles( {\n\t\t\tconfiguredStyles: editor.config.get( 'image.styles' )!,\n\t\t\tisBlockPluginLoaded,\n\t\t\tisInlinePluginLoaded\n\t\t} );\n\n\t\tthis._setupConversion( isBlockPluginLoaded, isInlinePluginLoaded );\n\t\tthis._setupPostFixer();\n\n\t\t// Register imageStyle command.\n\t\teditor.commands.add( 'imageStyle', new ImageStyleCommand( editor, this.normalizedStyles ) );\n\t}\n\n\t/**\n\t * Sets the editor conversion taking the presence of\n\t * {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`}\n\t * and {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugins into consideration.\n\t */\n\tprivate _setupConversion( isBlockPluginLoaded: boolean, isInlinePluginLoaded: boolean ): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\tconst modelToViewConverter = modelToViewStyleAttribute( this.normalizedStyles! );\n\t\tconst viewToModelConverter = viewToModelStyleAttribute( this.normalizedStyles! );\n\n\t\teditor.editing.downcastDispatcher.on( 'attribute:imageStyle', modelToViewConverter );\n\t\teditor.data.downcastDispatcher.on( 'attribute:imageStyle', modelToViewConverter );\n\n\t\t// Allow imageStyle attribute in image and imageInline.\n\t\t// We could call it 'style' but https://github.com/ckeditor/ckeditor5-engine/issues/559.\n\t\tif ( isBlockPluginLoaded ) {\n\t\t\tschema.extend( 'imageBlock', { allowAttributes: 'imageStyle' } );\n\n\t\t\t// Converter for figure element from view to model.\n\t\t\teditor.data.upcastDispatcher.on<UpcastElementEvent>( 'element:figure', viewToModelConverter, { priority: 'low' } );\n\t\t}\n\n\t\tif ( isInlinePluginLoaded ) {\n\t\t\tschema.extend( 'imageInline', { allowAttributes: 'imageStyle' } );\n\n\t\t\t// Converter for the img element from view to model.\n\t\t\teditor.data.upcastDispatcher.on( 'element:img', viewToModelConverter, { priority: 'low' } );\n\t\t}\n\t}\n\n\t/**\n\t * Registers a post-fixer that will make sure that the style attribute value is correct for a specific image type (block vs inline).\n\t */\n\tprivate _setupPostFixer(): void {\n\t\tconst editor = this.editor;\n\t\tconst document = editor.model.document;\n\n\t\tconst imageUtils = editor.plugins.get( ImageUtils );\n\t\tconst stylesMap = new Map( this.normalizedStyles!.map( style => [ style.name, style ] ) );\n\n\t\t// Make sure that style attribute is valid for the image type.\n\t\tdocument.registerPostFixer( writer => {\n\t\t\tlet changed = false;\n\n\t\t\tfor ( const change of document.differ.getChanges() ) {\n\t\t\t\tif ( change.type == 'insert' || change.type == 'attribute' && change.attributeKey == 'imageStyle' ) {\n\t\t\t\t\tlet element = change.type == 'insert' ? change.position.nodeAfter! : change.range.start.nodeAfter!;\n\n\t\t\t\t\tif ( element && element.is( 'element', 'paragraph' ) && element.childCount > 0 ) {\n\t\t\t\t\t\telement = element.getChild( 0 )!;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !imageUtils.isImage( element as Element ) ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst imageStyle = element.getAttribute( 'imageStyle' ) as string | undefined;\n\n\t\t\t\t\tif ( !imageStyle ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst imageStyleDefinition = stylesMap.get( imageStyle );\n\n\t\t\t\t\tif ( !imageStyleDefinition || !imageStyleDefinition.modelElements.includes( ( element as Element ).name ) ) {\n\t\t\t\t\t\twriter.removeAttribute( 'imageStyle', element );\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn changed;\n\t\t} );\n\t}\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./imagestyle.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imagestyle/imagestyleui\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { ButtonView, createDropdown, addToolbarToDropdown, SplitButtonView } from 'ckeditor5/src/ui';\nimport { isObject, identity } from 'lodash-es';\nimport ImageStyleEditing from './imagestyleediting';\nimport utils from './utils';\nimport type { ImageStyleDropdownDefinition, ImageStyleOptionDefinition } from '../imageconfig';\nimport type ImageStyleCommand from './imagestylecommand';\n\nimport '../../theme/imagestyle.css';\n\n/**\n * The image style UI plugin.\n *\n * It registers buttons corresponding to the {@link module:image/imageconfig~ImageConfig#styles} configuration.\n * It also registers the {@link module:image/imagestyle/utils#DEFAULT_DROPDOWN_DEFINITIONS default drop-downs} and the\n * custom drop-downs defined by the developer in the {@link module:image/imageconfig~ImageConfig#toolbar} configuration.\n */\nexport default class ImageStyleUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageStyleEditing ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageStyleUI' as const;\n\t}\n\n\t/**\n\t * Returns the default localized style titles provided by the plugin.\n\t *\n\t * The following localized titles corresponding with\n\t * {@link module:image/imagestyle/utils#DEFAULT_OPTIONS} are available:\n\t *\n\t * * `'Wrap text'`,\n\t * * `'Break text'`,\n\t * * `'In line'`,\n\t * * `'Full size image'`,\n\t * * `'Side image'`,\n\t * * `'Left aligned image'`,\n\t * * `'Centered image'`,\n\t * * `'Right aligned image'`\n\t */\n\tpublic get localizedDefaultStylesTitles(): Record<string, string> {\n\t\tconst t = this.editor.t;\n\n\t\treturn {\n\t\t\t'Wrap text': t( 'Wrap text' ),\n\t\t\t'Break text': t( 'Break text' ),\n\t\t\t'In line': t( 'In line' ),\n\t\t\t'Full size image': t( 'Full size image' ),\n\t\t\t'Side image': t( 'Side image' ),\n\t\t\t'Left aligned image': t( 'Left aligned image' ),\n\t\t\t'Centered image': t( 'Centered image' ),\n\t\t\t'Right aligned image': t( 'Right aligned image' )\n\t\t};\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst plugins = this.editor.plugins;\n\t\tconst toolbarConfig = this.editor.config.get( 'image.toolbar' ) || [];\n\t\tconst imageStyleEditing: ImageStyleEditing = plugins.get( 'ImageStyleEditing' );\n\n\t\tconst definedStyles = translateStyles(\n\t\t\timageStyleEditing.normalizedStyles!,\n\t\t\tthis.localizedDefaultStylesTitles\n\t\t);\n\n\t\tfor ( const styleConfig of definedStyles ) {\n\t\t\tthis._createButton( styleConfig );\n\t\t}\n\n\t\tconst definedDropdowns = translateStyles(\n\t\t\t[\n\t\t\t\t...toolbarConfig.filter( isObject ) as Array<ImageStyleDropdownDefinition>,\n\t\t\t\t...utils.getDefaultDropdownDefinitions( plugins )\n\t\t\t],\n\t\t\tthis.localizedDefaultStylesTitles\n\t\t);\n\n\t\tfor ( const dropdownConfig of definedDropdowns ) {\n\t\t\tthis._createDropdown( dropdownConfig, definedStyles );\n\t\t}\n\t}\n\n\t/**\n\t * Creates a dropdown and stores it in the editor {@link module:ui/componentfactory~ComponentFactory}.\n\t */\n\tprivate _createDropdown( dropdownConfig: ImageStyleDropdownDefinition, definedStyles: Array<ImageStyleOptionDefinition> ): void {\n\t\tconst factory = this.editor.ui.componentFactory;\n\n\t\tfactory.add( dropdownConfig.name, locale => {\n\t\t\tlet defaultButton: ButtonView | undefined;\n\n\t\t\tconst { defaultItem, items, title } = dropdownConfig;\n\t\t\tconst buttonViews = items\n\t\t\t\t.filter( itemName => definedStyles.find( ( { name } ) => getUIComponentName( name ) === itemName ) )\n\t\t\t\t.map( buttonName => {\n\t\t\t\t\tconst button = factory.create( buttonName ) as ButtonView;\n\n\t\t\t\t\tif ( buttonName === defaultItem ) {\n\t\t\t\t\t\tdefaultButton = button;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn button;\n\t\t\t\t} );\n\n\t\t\tif ( items.length !== buttonViews.length ) {\n\t\t\t\tutils.warnInvalidStyle( { dropdown: dropdownConfig } );\n\t\t\t}\n\n\t\t\tconst dropdownView = createDropdown( locale, SplitButtonView );\n\t\t\tconst splitButtonView = dropdownView.buttonView as SplitButtonView;\n\t\t\tconst splitButtonViewArrow = splitButtonView.arrowView;\n\n\t\t\taddToolbarToDropdown( dropdownView, buttonViews, { enableActiveItemFocusOnDropdownOpen: true } );\n\n\t\t\tsplitButtonView.set( {\n\t\t\t\tlabel: getDropdownButtonTitle( title, defaultButton!.label! ),\n\t\t\t\tclass: null,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tsplitButtonViewArrow.unbind( 'label' );\n\t\t\tsplitButtonViewArrow.set( {\n\t\t\t\tlabel: title\n\t\t\t} );\n\n\t\t\tsplitButtonView.bind( 'icon' ).toMany( buttonViews, 'isOn', ( ...areOn ) => {\n\t\t\t\tconst index = areOn.findIndex( identity );\n\n\t\t\t\treturn ( index < 0 ) ? defaultButton!.icon : buttonViews[ index ].icon;\n\t\t\t} );\n\n\t\t\tsplitButtonView.bind( 'label' ).toMany( buttonViews, 'isOn', ( ...areOn ) => {\n\t\t\t\tconst index = areOn.findIndex( identity );\n\n\t\t\t\treturn getDropdownButtonTitle( title, ( index < 0 ) ? defaultButton!.label! : buttonViews[ index ].label! );\n\t\t\t} );\n\n\t\t\tsplitButtonView.bind( 'isOn' ).toMany( buttonViews, 'isOn', ( ...areOn ) => areOn.some( identity ) );\n\n\t\t\tsplitButtonView.bind( 'class' )\n\t\t\t\t.toMany( buttonViews, 'isOn', ( ...areOn ) => areOn.some( identity ) ? 'ck-splitbutton_flatten' : undefined );\n\n\t\t\tsplitButtonView.on( 'execute', () => {\n\t\t\t\tif ( !buttonViews.some( ( { isOn } ) => isOn ) ) {\n\t\t\t\t\tdefaultButton!.fire( 'execute' );\n\t\t\t\t} else {\n\t\t\t\t\tdropdownView.isOpen = !dropdownView.isOpen;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tdropdownView.bind( 'isEnabled' )\n\t\t\t\t.toMany( buttonViews, 'isEnabled', ( ...areEnabled ) => areEnabled.some( identity ) );\n\n\t\t\t// Focus the editable after executing the command.\n\t\t\t// Overrides a default behaviour where the focus is moved to the dropdown button (#12125).\n\t\t\tthis.listenTo( dropdownView, 'execute', () => {\n\t\t\t\tthis.editor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t} );\n\t}\n\n\t/**\n\t * Creates a button and stores it in the editor {@link module:ui/componentfactory~ComponentFactory}.\n\t */\n\tprivate _createButton( buttonConfig: ImageStyleOptionDefinition ): void {\n\t\tconst buttonName = buttonConfig.name;\n\n\t\tthis.editor.ui.componentFactory.add( getUIComponentName( buttonName ), locale => {\n\t\t\tconst command: ImageStyleCommand = this.editor.commands.get( 'imageStyle' )!;\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\tlabel: buttonConfig.title,\n\t\t\t\ticon: buttonConfig.icon,\n\t\t\t\ttooltip: true,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\tview.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\t\t\tview.bind( 'isOn' ).to( command, 'value', value => value === buttonName );\n\t\t\tview.on( 'execute', this._executeCommand.bind( this, buttonName ) );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n\n\tprivate _executeCommand( name: string ): void {\n\t\tthis.editor.execute( 'imageStyle', { value: name } );\n\t\tthis.editor.editing.view.focus();\n\t}\n}\n\n/**\n * Returns the translated `title` from the passed styles array.\n */\nfunction translateStyles<T extends ImageStyleOptionDefinition | ImageStyleDropdownDefinition>(\n\tstyles: Array<T>,\n\ttitles: Record<string, string>\n): Array<T> {\n\tfor ( const style of styles ) {\n\t\t// Localize the titles of the styles, if a title corresponds with\n\t\t// a localized default provided by the plugin.\n\t\tif ( titles[ style.title! ] ) {\n\t\t\tstyle.title = titles[ style.title! ];\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n/**\n * Returns the image style component name with the \"imageStyle:\" prefix.\n */\nfunction getUIComponentName( name: string ): string {\n\treturn `imageStyle:${ name }`;\n}\n\n/**\n * Returns title for the splitbutton containing the dropdown title and default action item title.\n */\nfunction getDropdownButtonTitle( dropdownTitle: string | undefined, buttonTitle: string ): string {\n\treturn ( dropdownTitle ? dropdownTitle + ': ' : '' ) + buttonTitle;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module indent/indentediting\n */\n\nimport { Plugin, MultiCommand } from 'ckeditor5/src/core';\n\n/**\n * The indent editing feature.\n *\n * This plugin registers the `'indent'` and `'outdent'` commands.\n *\n * **Note**: In order for the commands to work, at least one of the compatible features is required. Read more in the\n * {@link module:indent/indent~Indent indent feature} API documentation.\n */\nexport default class IndentEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'IndentEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.commands.add( 'indent', new MultiCommand( editor ) );\n\t\teditor.commands.add( 'outdent', new MultiCommand( editor ) );\n\t}\n}\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm5 6c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM2.75 16.5h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 1 0 0 1.5zM1.632 6.95 5.02 9.358a.4.4 0 0 1-.013.661l-3.39 2.207A.4.4 0 0 1 1 11.892V7.275a.4.4 0 0 1 .632-.326z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm5 6c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM2.75 16.5h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 1 0 0 1.5zm1.618-9.55L.98 9.358a.4.4 0 0 0 .013.661l3.39 2.207A.4.4 0 0 0 5 11.892V7.275a.4.4 0 0 0-.632-.326z\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module indent/indentui\n */\n\nimport { ButtonView } from 'ckeditor5/src/ui';\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport indentIcon from '../theme/icons/indent.svg';\nimport outdentIcon from '../theme/icons/outdent.svg';\n\n/**\n * The indent UI feature.\n *\n * This plugin registers the `'indent'` and `'outdent'` buttons.\n *\n * **Note**: In order for the commands to work, at least one of the compatible features is required. Read more in\n * the {@link module:indent/indent~Indent indent feature} API documentation.\n */\nexport default class IndentUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'IndentUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst t = editor.t;\n\n\t\tconst localizedIndentIcon = locale.uiLanguageDirection == 'ltr' ? indentIcon : outdentIcon;\n\t\tconst localizedOutdentIcon = locale.uiLanguageDirection == 'ltr' ? outdentIcon : indentIcon;\n\n\t\tthis._defineButton( 'indent', t( 'Increase indent' ), localizedIndentIcon );\n\t\tthis._defineButton( 'outdent', t( 'Decrease indent' ), localizedOutdentIcon );\n\t}\n\n\t/**\n\t * Defines a UI button.\n\t */\n\tprivate _defineButton( commandName: 'indent' | 'outdent', label: string, icon: string ): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.ui.componentFactory.add( commandName, locale => {\n\t\t\tconst command = editor.commands.get( commandName )!;\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\tlabel,\n\t\t\t\ticon,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tview.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\n\t\t\tthis.listenTo( view, 'execute', () => {\n\t\t\t\teditor.execute( commandName );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module indent/indentblockcommand\n */\n\nimport { Command, type Editor } from 'ckeditor5/src/core';\nimport type { Element, Model } from 'ckeditor5/src/engine';\nimport { first } from 'ckeditor5/src/utils';\n\nimport type { IndentBehavior } from './indentcommandbehavior/indentbehavior';\n\n/**\n * The indent block command.\n *\n * The command is registered by the {@link module:indent/indentblock~IndentBlock} as `'indentBlock'` for indenting blocks and\n * `'outdentBlock'` for outdenting blocks.\n *\n * To increase block indentation at the current selection, execute the command:\n *\n * ```ts\n * editor.execute( 'indentBlock' );\n * ```\n *\n * To decrease block indentation at the current selection, execute the command:\n *\n * ```ts\n * editor.execute( 'outdentBlock' );\n * ```\n */\nexport default class IndentBlockCommand extends Command {\n\t/**\n\t * The command's indentation behavior.\n\t */\n\tprivate readonly _indentBehavior: IndentBehavior;\n\n\t/**\n\t * Creates an instance of the command.\n\t */\n\tconstructor( editor: Editor, indentBehavior: IndentBehavior ) {\n\t\tsuper( editor );\n\n\t\tthis._indentBehavior = indentBehavior;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\t// Check whether any of the position's ancestors is a list item.\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\n\t\tconst block = first( model.document.selection.getSelectedBlocks() );\n\n\t\tif ( !block || !model.schema.checkAttribute( block, 'blockIndent' ) ) {\n\t\t\tthis.isEnabled = false;\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isEnabled = this._indentBehavior.checkEnabled( block.getAttribute( 'blockIndent' ) as string );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst model = this.editor.model;\n\n\t\tconst blocksToChange = getBlocksToChange( model );\n\n\t\tmodel.change( writer => {\n\t\t\tfor ( const block of blocksToChange ) {\n\t\t\t\tconst currentIndent = block.getAttribute( 'blockIndent' ) as string;\n\n\t\t\t\tconst nextIndent = this._indentBehavior.getNextIndent( currentIndent );\n\n\t\t\t\tif ( nextIndent ) {\n\t\t\t\t\twriter.setAttribute( 'blockIndent', nextIndent, block );\n\t\t\t\t} else {\n\t\t\t\t\twriter.removeAttribute( 'blockIndent', block );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n}\n\n/**\n * Returns blocks from selection that should have blockIndent selection set.\n */\nfunction getBlocksToChange( model: Model ): Array<Element> {\n\tconst selection = model.document.selection;\n\tconst schema = model.schema;\n\tconst blocksInSelection = Array.from( selection.getSelectedBlocks() );\n\n\treturn blocksInSelection.filter( block => schema.checkAttribute( block, 'blockIndent' ) );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module indent/indentcommandbehavior/indentusingoffset\n */\n\nimport type { IndentBehavior } from './indentbehavior';\n\n/**\n * The block indentation behavior that uses offsets to set indentation.\n */\nexport default class IndentUsingOffset implements IndentBehavior {\n\t/**\n\t * The direction of indentation.\n\t */\n\tpublic isForward: boolean;\n\n\t/**\n\t * The offset of the next indentation step.\n\t */\n\tpublic offset: number;\n\n\t/**\n\t * Indentation unit.\n\t */\n\tpublic unit: string;\n\n\t/**\n\t * Creates an instance of the indentation behavior.\n\t *\n\t * @param config.direction The direction of indentation.\n\t * @param config.offset The offset of the next indentation step.\n\t * @param config.unit Indentation unit.\n\t */\n\tconstructor( config: { direction: 'forward' | 'backward'; offset: number; unit: string } ) {\n\t\tthis.isForward = config.direction === 'forward';\n\t\tthis.offset = config.offset;\n\t\tthis.unit = config.unit;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic checkEnabled( indentAttributeValue: string ): boolean {\n\t\tconst currentOffset = parseFloat( indentAttributeValue || '0' );\n\n\t\t// The command is always enabled for forward indentation.\n\t\treturn this.isForward || currentOffset > 0;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getNextIndent( indentAttributeValue: string ): string | undefined {\n\t\tconst currentOffset = parseFloat( indentAttributeValue || '0' );\n\t\tconst isSameUnit = !indentAttributeValue || indentAttributeValue.endsWith( this.unit );\n\n\t\tif ( !isSameUnit ) {\n\t\t\treturn this.isForward ? this.offset + this.unit : undefined;\n\t\t}\n\n\t\tconst nextOffset = this.isForward ? this.offset : -this.offset;\n\n\t\tconst offsetToSet = currentOffset + nextOffset;\n\n\t\treturn offsetToSet > 0 ? offsetToSet + this.unit : undefined;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module indent/indentcommandbehavior/indentusingclasses\n */\n\nimport type { IndentBehavior } from './indentbehavior';\n\n/**\n * The block indentation behavior that uses classes to set indentation.\n */\nexport default class IndentUsingClasses implements IndentBehavior {\n\t/**\n\t * The direction of indentation.\n\t */\n\tpublic isForward: boolean;\n\n\t/**\n\t * A list of classes used for indentation.\n\t */\n\tpublic classes: Array<string>;\n\n\t/**\n\t * Creates an instance of the indentation behavior.\n\t *\n\t * @param config.direction The direction of indentation.\n\t * @param config.classes A list of classes used for indentation.\n\t */\n\tconstructor( config: { direction: 'forward' | 'backward'; classes: Array<string> } ) {\n\t\tthis.isForward = config.direction === 'forward';\n\t\tthis.classes = config.classes!;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic checkEnabled( indentAttributeValue: string ): boolean {\n\t\tconst currentIndex = this.classes.indexOf( indentAttributeValue );\n\n\t\tif ( this.isForward ) {\n\t\t\treturn currentIndex < this.classes.length - 1;\n\t\t} else {\n\t\t\treturn currentIndex >= 0;\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getNextIndent( indentAttributeValue: string ): string | undefined {\n\t\tconst currentIndex = this.classes.indexOf( indentAttributeValue );\n\t\tconst indexStep = this.isForward ? 1 : -1;\n\n\t\treturn this.classes[ currentIndex + indexStep ];\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module indent/indentblock\n */\n\nimport { Plugin, type Editor, type MultiCommand } from 'ckeditor5/src/core';\nimport { addMarginRules, type AttributeDescriptor, type ViewElement } from 'ckeditor5/src/engine';\n\nimport IndentBlockCommand from './indentblockcommand';\nimport IndentUsingOffset from './indentcommandbehavior/indentusingoffset';\nimport IndentUsingClasses from './indentcommandbehavior/indentusingclasses';\nimport type { HeadingOption } from '@ckeditor/ckeditor5-heading';\n\nconst DEFAULT_ELEMENTS = [ 'paragraph', 'heading1', 'heading2', 'heading3', 'heading4', 'heading5', 'heading6' ];\n\n/**\n * The block indentation feature.\n *\n * It registers the `'indentBlock'` and `'outdentBlock'` commands.\n *\n * If the plugin {@link module:indent/indent~Indent} is defined, it also attaches the `'indentBlock'` and `'outdentBlock'` commands to\n * the `'indent'` and `'outdent'` commands.\n */\nexport default class IndentBlock extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'indentBlock', {\n\t\t\toffset: 40,\n\t\t\tunit: 'px'\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'IndentBlock' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst configuration = editor.config.get( 'indentBlock' )!;\n\n\t\tif ( configuration.classes && configuration.classes.length ) {\n\t\t\tthis._setupConversionUsingClasses( configuration.classes );\n\n\t\t\teditor.commands.add( 'indentBlock', new IndentBlockCommand( editor, new IndentUsingClasses( {\n\t\t\t\tdirection: 'forward',\n\t\t\t\tclasses: configuration.classes\n\t\t\t} ) ) );\n\n\t\t\teditor.commands.add( 'outdentBlock', new IndentBlockCommand( editor, new IndentUsingClasses( {\n\t\t\t\tdirection: 'backward',\n\t\t\t\tclasses: configuration.classes\n\t\t\t} ) ) );\n\t\t} else {\n\t\t\teditor.data.addStyleProcessorRules( addMarginRules );\n\t\t\tthis._setupConversionUsingOffset();\n\n\t\t\teditor.commands.add( 'indentBlock', new IndentBlockCommand( editor, new IndentUsingOffset( {\n\t\t\t\tdirection: 'forward',\n\t\t\t\toffset: configuration.offset!,\n\t\t\t\tunit: configuration.unit!\n\t\t\t} ) ) );\n\n\t\t\teditor.commands.add( 'outdentBlock', new IndentBlockCommand( editor, new IndentUsingOffset( {\n\t\t\t\tdirection: 'backward',\n\t\t\t\toffset: configuration.offset!,\n\t\t\t\tunit: configuration.unit!\n\t\t\t} ) ) );\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\tconst indentCommand = editor.commands.get( 'indent' ) as MultiCommand;\n\t\tconst outdentCommand = editor.commands.get( 'outdent' ) as MultiCommand;\n\n\t\t// Enable block indentation to heading configuration options. If it is not defined enable in paragraph and default headings.\n\t\tconst options: Array<HeadingOption> = editor.config.get( 'heading.options' )!;\n\t\tconst configuredElements = options && options.map( option => option.model );\n\t\tconst knownElements = configuredElements || DEFAULT_ELEMENTS;\n\n\t\tknownElements.forEach( elementName => {\n\t\t\tif ( schema.isRegistered( elementName ) ) {\n\t\t\t\tschema.extend( elementName, { allowAttributes: 'blockIndent' } );\n\t\t\t}\n\t\t} );\n\n\t\tschema.setAttributeProperties( 'blockIndent', { isFormatting: true } );\n\n\t\tindentCommand.registerChildCommand( editor.commands.get( 'indentBlock' )! );\n\t\toutdentCommand.registerChildCommand( editor.commands.get( 'outdentBlock' )! );\n\t}\n\n\t/**\n\t * Setups conversion for using offset indents.\n\t */\n\tprivate _setupConversionUsingOffset(): void {\n\t\tconst conversion = this.editor.conversion;\n\t\tconst locale = this.editor.locale;\n\t\tconst marginProperty = locale.contentLanguageDirection === 'rtl' ? 'margin-right' : 'margin-left';\n\n\t\tconversion.for( 'upcast' ).attributeToAttribute( {\n\t\t\tview: {\n\t\t\t\tstyles: {\n\t\t\t\t\t[ marginProperty ]: /[\\s\\S]+/\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: 'blockIndent',\n\t\t\t\tvalue: ( viewElement: ViewElement ) => viewElement.getStyle( marginProperty )\n\t\t\t}\n\t\t} );\n\n\t\tconversion.for( 'downcast' ).attributeToAttribute( {\n\t\t\tmodel: 'blockIndent',\n\t\t\tview: modelAttributeValue => {\n\t\t\t\treturn {\n\t\t\t\t\tkey: 'style',\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\t[ marginProperty as string ]: modelAttributeValue as string\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Setups conversion for using classes.\n\t */\n\tprivate _setupConversionUsingClasses( classes: Array<string> ) {\n\t\tconst definition: {\n\t\t\tmodel: { key: string; values: Array<string> };\n\t\t\tview: Record<string, AttributeDescriptor>;\n\t\t} = {\n\t\t\tmodel: {\n\t\t\t\tkey: 'blockIndent',\n\t\t\t\tvalues: []\n\t\t\t},\n\t\t\tview: {}\n\t\t};\n\n\t\tfor ( const className of classes ) {\n\t\t\tdefinition.model.values.push( className );\n\t\t\tdefinition.view[ className ] = {\n\t\t\t\tkey: 'class',\n\t\t\t\tvalue: [ className ]\n\t\t\t};\n\t\t}\n\n\t\tthis.editor.conversion.attributeToAttribute( definition );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module link/utils/automaticdecorators\n */\n\nimport { toMap, type ArrayOrItem } from 'ckeditor5/src/utils';\nimport type { DowncastAttributeEvent, DowncastDispatcher, Element, ViewElement } from 'ckeditor5/src/engine';\nimport type { NormalizedLinkDecoratorAutomaticDefinition } from '../utils';\n\n/**\n * Helper class that ties together all {@link module:link/linkconfig~LinkDecoratorAutomaticDefinition} and provides\n * the {@link module:engine/conversion/downcasthelpers~DowncastHelpers#attributeToElement downcast dispatchers} for them.\n */\nexport default class AutomaticDecorators {\n\t/**\n\t * Stores the definition of {@link module:link/linkconfig~LinkDecoratorAutomaticDefinition automatic decorators}.\n\t * This data is used as a source for a downcast dispatcher to create a proper conversion to output data.\n\t */\n\tprivate _definitions = new Set<NormalizedLinkDecoratorAutomaticDefinition>();\n\n\t/**\n\t * Gives information about the number of decorators stored in the {@link module:link/utils/automaticdecorators~AutomaticDecorators}\n\t * instance.\n\t */\n\tpublic get length(): number {\n\t\treturn this._definitions.size;\n\t}\n\n\t/**\n\t * Adds automatic decorator objects or an array with them to be used during downcasting.\n\t *\n\t * @param item A configuration object of automatic rules for decorating links. It might also be an array of such objects.\n\t */\n\tpublic add( item: ArrayOrItem<NormalizedLinkDecoratorAutomaticDefinition> ): void {\n\t\tif ( Array.isArray( item ) ) {\n\t\t\titem.forEach( item => this._definitions.add( item ) );\n\t\t} else {\n\t\t\tthis._definitions.add( item );\n\t\t}\n\t}\n\n\t/**\n\t * Provides the conversion helper used in the {@link module:engine/conversion/downcasthelpers~DowncastHelpers#add} method.\n\t *\n\t * @returns A dispatcher function used as conversion helper in {@link module:engine/conversion/downcasthelpers~DowncastHelpers#add}.\n\t */\n\tpublic getDispatcher(): ( dispatcher: DowncastDispatcher ) => void {\n\t\treturn dispatcher => {\n\t\t\tdispatcher.on<DowncastAttributeEvent>( 'attribute:linkHref', ( evt, data, conversionApi ) => {\n\t\t\t\t// There is only test as this behavior decorates links and\n\t\t\t\t// it is run before dispatcher which actually consumes this node.\n\t\t\t\t// This allows on writing own dispatcher with highest priority,\n\t\t\t\t// which blocks both native converter and this additional decoration.\n\t\t\t\tif ( !conversionApi.consumable.test( data.item, 'attribute:linkHref' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Automatic decorators for block links are handled e.g. in LinkImageEditing.\n\t\t\t\tif ( !( data.item.is( 'selection' ) || conversionApi.schema.isInline( data.item ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\t\tconst viewSelection = viewWriter.document.selection;\n\n\t\t\t\tfor ( const item of this._definitions ) {\n\t\t\t\t\tconst viewElement = viewWriter.createAttributeElement( 'a', item.attributes, {\n\t\t\t\t\t\tpriority: 5\n\t\t\t\t\t} );\n\n\t\t\t\t\tif ( item.classes ) {\n\t\t\t\t\t\tviewWriter.addClass( item.classes, viewElement );\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( const key in item.styles ) {\n\t\t\t\t\t\tviewWriter.setStyle( key, item.styles[ key ], viewElement );\n\t\t\t\t\t}\n\n\t\t\t\t\tviewWriter.setCustomProperty( 'link', true, viewElement );\n\n\t\t\t\t\tif ( item.callback( data.attributeNewValue as string | null ) ) {\n\t\t\t\t\t\tif ( data.item.is( 'selection' ) ) {\n\t\t\t\t\t\t\tviewWriter.wrap( viewSelection.getFirstRange()!, viewElement );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tviewWriter.wrap( conversionApi.mapper.toViewRange( data.range ), viewElement );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tviewWriter.unwrap( conversionApi.mapper.toViewRange( data.range ), viewElement );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, { priority: 'high' } );\n\t\t};\n\t}\n\n\t/**\n\t * Provides the conversion helper used in the {@link module:engine/conversion/downcasthelpers~DowncastHelpers#add} method\n\t * when linking images.\n\t *\n\t * @returns A dispatcher function used as conversion helper in {@link module:engine/conversion/downcasthelpers~DowncastHelpers#add}.\n\t */\n\tpublic getDispatcherForLinkedImage(): ( dispatcher: DowncastDispatcher ) => void {\n\t\treturn dispatcher => {\n\t\t\tdispatcher.on<DowncastAttributeEvent<Element>>( 'attribute:linkHref:imageBlock', ( evt, data, { writer, mapper } ) => {\n\t\t\t\tconst viewFigure = mapper.toViewElement( data.item )!;\n\t\t\t\tconst linkInImage = Array.from( viewFigure.getChildren() )\n\t\t\t\t\t.find( ( child ): child is ViewElement => child.is( 'element', 'a' ) )!;\n\n\t\t\t\tfor ( const item of this._definitions ) {\n\t\t\t\t\tconst attributes = toMap( item.attributes );\n\n\t\t\t\t\tif ( item.callback( data.attributeNewValue as string | null ) ) {\n\t\t\t\t\t\tfor ( const [ key, val ] of attributes ) {\n\t\t\t\t\t\t\t// Left for backward compatibility. Since v30 decorator should\n\t\t\t\t\t\t\t// accept `classes` and `styles` separately from `attributes`.\n\t\t\t\t\t\t\tif ( key === 'class' ) {\n\t\t\t\t\t\t\t\twriter.addClass( val, linkInImage );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twriter.setAttribute( key, val, linkInImage );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( item.classes ) {\n\t\t\t\t\t\t\twriter.addClass( item.classes, linkInImage );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( const key in item.styles ) {\n\t\t\t\t\t\t\twriter.setStyle( key, item.styles[ key ], linkInImage );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor ( const [ key, val ] of attributes ) {\n\t\t\t\t\t\t\tif ( key === 'class' ) {\n\t\t\t\t\t\t\t\twriter.removeClass( val, linkInImage );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twriter.removeAttribute( key, linkInImage );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( item.classes ) {\n\t\t\t\t\t\t\twriter.removeClass( item.classes, linkInImage );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( const key in item.styles ) {\n\t\t\t\t\t\t\twriter.removeStyle( key, linkInImage );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t}\n}\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nexport default stringToArray;\n","import createCaseFirst from './_createCaseFirst.js';\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nexport default upperFirst;\n","import castSlice from './_castSlice.js';\nimport hasUnicode from './_hasUnicode.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nexport default createCaseFirst;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module link/utils\n */\n\n/* global window */\n\nimport type {\n\tDowncastConversionApi,\n\tElement,\n\tSchema,\n\tViewAttributeElement,\n\tViewNode,\n\tViewDocumentFragment\n} from 'ckeditor5/src/engine';\nimport type { LocaleTranslate } from 'ckeditor5/src/utils';\n\nimport type {\n\tLinkDecoratorAutomaticDefinition,\n\tLinkDecoratorDefinition,\n\tLinkDecoratorManualDefinition\n} from './linkconfig';\n\nimport { upperFirst } from 'lodash-es';\n\nconst ATTRIBUTE_WHITESPACES = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g; // eslint-disable-line no-control-regex\nconst SAFE_URL = /^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i;\n\n// Simplified email test - should be run over previously found URL.\nconst EMAIL_REG_EXP = /^[\\S]+@((?![-_])(?:[-\\w\\u00a1-\\uffff]{0,63}[^-_]\\.))+(?:[a-z\\u00a1-\\uffff]{2,})$/i;\n\n// The regex checks for the protocol syntax ('xxxx://' or 'xxxx:')\n// or non-word characters at the beginning of the link ('/', '#' etc.).\nconst PROTOCOL_REG_EXP = /^((\\w+:(\\/{2,})?)|(\\W))/i;\n\n/**\n * A keystroke used by the {@link module:link/linkui~LinkUI link UI feature}.\n */\nexport const LINK_KEYSTROKE = 'Ctrl+K';\n\n/**\n * Returns `true` if a given view node is the link element.\n */\nexport function isLinkElement( node: ViewNode | ViewDocumentFragment ): boolean {\n\treturn node.is( 'attributeElement' ) && !!node.getCustomProperty( 'link' );\n}\n\n/**\n * Creates a link {@link module:engine/view/attributeelement~AttributeElement} with the provided `href` attribute.\n */\nexport function createLinkElement( href: string, { writer }: DowncastConversionApi ): ViewAttributeElement {\n\t// Priority 5 - https://github.com/ckeditor/ckeditor5-link/issues/121.\n\tconst linkElement = writer.createAttributeElement( 'a', { href }, { priority: 5 } );\n\n\twriter.setCustomProperty( 'link', true, linkElement );\n\n\treturn linkElement;\n}\n\n/**\n * Returns a safe URL based on a given value.\n *\n * A URL is considered safe if it is safe for the user (does not contain any malicious code).\n *\n * If a URL is considered unsafe, a simple `\"#\"` is returned.\n *\n * @internal\n */\nexport function ensureSafeUrl( url: unknown ): string {\n\tconst urlString = String( url );\n\n\treturn isSafeUrl( urlString ) ? urlString : '#';\n}\n\n/**\n * Checks whether the given URL is safe for the user (does not contain any malicious code).\n */\nfunction isSafeUrl( url: string ): boolean {\n\tconst normalizedUrl = url.replace( ATTRIBUTE_WHITESPACES, '' );\n\n\treturn !!normalizedUrl.match( SAFE_URL );\n}\n\n/**\n * Returns the {@link module:link/linkconfig~LinkConfig#decorators `config.link.decorators`} configuration processed\n * to respect the locale of the editor, i.e. to display the {@link module:link/linkconfig~LinkDecoratorManualDefinition label}\n * in the correct language.\n *\n * **Note**: Only the few most commonly used labels are translated automatically. Other labels should be manually\n * translated in the {@link module:link/linkconfig~LinkConfig#decorators `config.link.decorators`} configuration.\n *\n * @param t Shorthand for {@link module:utils/locale~Locale#t Locale#t}.\n * @param decorators The decorator reference where the label values should be localized.\n */\nexport function getLocalizedDecorators(\n\tt: LocaleTranslate,\n\tdecorators: Array<NormalizedLinkDecoratorDefinition>\n): Array<NormalizedLinkDecoratorDefinition> {\n\tconst localizedDecoratorsLabels: Record<string, string> = {\n\t\t'Open in a new tab': t( 'Open in a new tab' ),\n\t\t'Downloadable': t( 'Downloadable' )\n\t};\n\n\tdecorators.forEach( decorator => {\n\t\tif ( 'label' in decorator && localizedDecoratorsLabels[ decorator.label ] ) {\n\t\t\tdecorator.label = localizedDecoratorsLabels[ decorator.label ];\n\t\t}\n\n\t\treturn decorator;\n\t} );\n\n\treturn decorators;\n}\n\n/**\n * Converts an object with defined decorators to a normalized array of decorators. The `id` key is added for each decorator and\n * is used as the attribute's name in the model.\n */\nexport function normalizeDecorators( decorators?: Record<string, LinkDecoratorDefinition> ): Array<NormalizedLinkDecoratorDefinition> {\n\tconst retArray: Array<NormalizedLinkDecoratorDefinition> = [];\n\n\tif ( decorators ) {\n\t\tfor ( const [ key, value ] of Object.entries( decorators ) ) {\n\t\t\tconst decorator = Object.assign(\n\t\t\t\t{},\n\t\t\t\tvalue,\n\t\t\t\t{ id: `link${ upperFirst( key ) }` }\n\t\t\t);\n\n\t\t\tretArray.push( decorator );\n\t\t}\n\t}\n\n\treturn retArray;\n}\n\n/**\n * Returns `true` if the specified `element` can be linked (the element allows the `linkHref` attribute).\n */\nexport function isLinkableElement( element: Element | null, schema: Schema ): element is Element {\n\tif ( !element ) {\n\t\treturn false;\n\t}\n\n\treturn schema.checkAttribute( element.name, 'linkHref' );\n}\n\n/**\n * Returns `true` if the specified `value` is an email.\n */\nexport function isEmail( value: string ): boolean {\n\treturn EMAIL_REG_EXP.test( value );\n}\n\n/**\n * Adds the protocol prefix to the specified `link` when:\n *\n * * it does not contain it already, and there is a {@link module:link/linkconfig~LinkConfig#defaultProtocol `defaultProtocol` }\n * configuration value provided,\n * * or the link is an email address.\n */\nexport function addLinkProtocolIfApplicable( link: string, defaultProtocol?: string ): string {\n\tconst protocol = isEmail( link ) ? 'mailto:' : defaultProtocol;\n\tconst isProtocolNeeded = !!protocol && !linkHasProtocol( link );\n\n\treturn link && isProtocolNeeded ? protocol + link : link;\n}\n\n/**\n * Checks if protocol is already included in the link.\n */\nexport function linkHasProtocol( link: string ): boolean {\n\treturn PROTOCOL_REG_EXP.test( link );\n}\n\n/**\n * Opens the link in a new browser tab.\n */\nexport function openLink( link: string ): void {\n\twindow.open( link, '_blank', 'noopener' );\n}\n\nexport type NormalizedLinkDecoratorAutomaticDefinition = LinkDecoratorAutomaticDefinition & { id: string };\nexport type NormalizedLinkDecoratorManualDefinition = LinkDecoratorManualDefinition & { id: string };\nexport type NormalizedLinkDecoratorDefinition = NormalizedLinkDecoratorAutomaticDefinition | NormalizedLinkDecoratorManualDefinition;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module link/linkcommand\n */\n\nimport { Command } from 'ckeditor5/src/core';\nimport { findAttributeRange } from 'ckeditor5/src/typing';\nimport { Collection, first, toMap } from 'ckeditor5/src/utils';\nimport type { Range, DocumentSelection, Model, Writer } from 'ckeditor5/src/engine';\n\nimport AutomaticDecorators from './utils/automaticdecorators';\nimport { isLinkableElement } from './utils';\nimport type ManualDecorator from './utils/manualdecorator';\n\n/**\n * The link command. It is used by the {@link module:link/link~Link link feature}.\n */\nexport default class LinkCommand extends Command {\n\t/**\n\t * The value of the `'linkHref'` attribute if the start of the selection is located in a node with this attribute.\n\t *\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public value: string | undefined;\n\n\t/**\n\t * A collection of {@link module:link/utils/manualdecorator~ManualDecorator manual decorators}\n\t * corresponding to the {@link module:link/linkconfig~LinkConfig#decorators decorator configuration}.\n\t *\n\t * You can consider it a model with states of manual decorators added to the currently selected link.\n\t */\n\tpublic readonly manualDecorators = new Collection<ManualDecorator>();\n\n\t/**\n\t * An instance of the helper that ties together all {@link module:link/linkconfig~LinkDecoratorAutomaticDefinition}\n\t * that are used by the {@glink features/link link} and the {@glink features/images/images-linking linking images} features.\n\t */\n\tpublic readonly automaticDecorators = new AutomaticDecorators();\n\n\t/**\n\t * Synchronizes the state of {@link #manualDecorators} with the currently present elements in the model.\n\t */\n\tpublic restoreManualDecoratorStates(): void {\n\t\tfor ( const manualDecorator of this.manualDecorators ) {\n\t\t\tmanualDecorator.value = this._getDecoratorStateFromModel( manualDecorator.id );\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst selectedElement = selection.getSelectedElement() || first( selection.getSelectedBlocks() );\n\n\t\t// A check for any integration that allows linking elements (e.g. `LinkImage`).\n\t\t// Currently the selection reads attributes from text nodes only. See #7429 and #7465.\n\t\tif ( isLinkableElement( selectedElement, model.schema ) ) {\n\t\t\tthis.value = selectedElement.getAttribute( 'linkHref' ) as string | undefined;\n\t\t\tthis.isEnabled = model.schema.checkAttribute( selectedElement, 'linkHref' );\n\t\t} else {\n\t\t\tthis.value = selection.getAttribute( 'linkHref' ) as string | undefined;\n\t\t\tthis.isEnabled = model.schema.checkAttributeInSelection( selection, 'linkHref' );\n\t\t}\n\n\t\tfor ( const manualDecorator of this.manualDecorators ) {\n\t\t\tmanualDecorator.value = this._getDecoratorStateFromModel( manualDecorator.id );\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * When the selection is non-collapsed, the `linkHref` attribute will be applied to nodes inside the selection, but only to\n\t * those nodes where the `linkHref` attribute is allowed (disallowed nodes will be omitted).\n\t *\n\t * When the selection is collapsed and is not inside the text with the `linkHref` attribute, a\n\t * new {@link module:engine/model/text~Text text node} with the `linkHref` attribute will be inserted in place of the caret, but\n\t * only if such element is allowed in this place. The `_data` of the inserted text will equal the `href` parameter.\n\t * The selection will be updated to wrap the just inserted text node.\n\t *\n\t * When the selection is collapsed and inside the text with the `linkHref` attribute, the attribute value will be updated.\n\t *\n\t * # Decorators and model attribute management\n\t *\n\t * There is an optional argument to this command that applies or removes model\n\t * {@glink framework/architecture/editing-engine#text-attributes text attributes} brought by\n\t * {@link module:link/utils/manualdecorator~ManualDecorator manual link decorators}.\n\t *\n\t * Text attribute names in the model correspond to the entries in the {@link module:link/linkconfig~LinkConfig#decorators\n\t * configuration}.\n\t * For every decorator configured, a model text attribute exists with the \"link\" prefix. For example, a `'linkMyDecorator'` attribute\n\t * corresponds to `'myDecorator'` in the configuration.\n\t *\n\t * To learn more about link decorators, check out the {@link module:link/linkconfig~LinkConfig#decorators `config.link.decorators`}\n\t * documentation.\n\t *\n\t * Here is how to manage decorator attributes with the link command:\n\t *\n\t * ```ts\n\t * const linkCommand = editor.commands.get( 'link' );\n\t *\n\t * // Adding a new decorator attribute.\n\t * linkCommand.execute( 'http://example.com', {\n\t * \tlinkIsExternal: true\n\t * } );\n\t *\n\t * // Removing a decorator attribute from the selection.\n\t * linkCommand.execute( 'http://example.com', {\n\t * \tlinkIsExternal: false\n\t * } );\n\t *\n\t * // Adding multiple decorator attributes at the same time.\n\t * linkCommand.execute( 'http://example.com', {\n\t * \tlinkIsExternal: true,\n\t * \tlinkIsDownloadable: true,\n\t * } );\n\t *\n\t * // Removing and adding decorator attributes at the same time.\n\t * linkCommand.execute( 'http://example.com', {\n\t * \tlinkIsExternal: false,\n\t * \tlinkFoo: true,\n\t * \tlinkIsDownloadable: false,\n\t * } );\n\t * ```\n\t *\n\t * **Note**: If the decorator attribute name is not specified, its state remains untouched.\n\t *\n\t * **Note**: {@link module:link/unlinkcommand~UnlinkCommand#execute `UnlinkCommand#execute()`} removes all\n\t * decorator attributes.\n\t *\n\t * @fires execute\n\t * @param href Link destination.\n\t * @param manualDecoratorIds The information about manual decorator attributes to be applied or removed upon execution.\n\t */\n\tpublic override execute( href: string, manualDecoratorIds: Record<string, boolean> = {} ): void {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\t// Stores information about manual decorators to turn them on/off when command is applied.\n\t\tconst truthyManualDecorators: Array<string> = [];\n\t\tconst falsyManualDecorators: Array<string> = [];\n\n\t\tfor ( const name in manualDecoratorIds ) {\n\t\t\tif ( manualDecoratorIds[ name ] ) {\n\t\t\t\ttruthyManualDecorators.push( name );\n\t\t\t} else {\n\t\t\t\tfalsyManualDecorators.push( name );\n\t\t\t}\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\t// If selection is collapsed then update selected link or insert new one at the place of caret.\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\tconst position = selection.getFirstPosition()!;\n\n\t\t\t\t// When selection is inside text with `linkHref` attribute.\n\t\t\t\tif ( selection.hasAttribute( 'linkHref' ) ) {\n\t\t\t\t\tconst linkText = extractTextFromSelection( selection );\n\t\t\t\t\t// Then update `linkHref` value.\n\t\t\t\t\tlet linkRange = findAttributeRange( position, 'linkHref', selection.getAttribute( 'linkHref' ), model );\n\n\t\t\t\t\tif ( selection.getAttribute( 'linkHref' ) === linkText ) {\n\t\t\t\t\t\tlinkRange = this._updateLinkContent( model, writer, linkRange, href );\n\t\t\t\t\t}\n\n\t\t\t\t\twriter.setAttribute( 'linkHref', href, linkRange );\n\n\t\t\t\t\ttruthyManualDecorators.forEach( item => {\n\t\t\t\t\t\twriter.setAttribute( item, true, linkRange );\n\t\t\t\t\t} );\n\n\t\t\t\t\tfalsyManualDecorators.forEach( item => {\n\t\t\t\t\t\twriter.removeAttribute( item, linkRange );\n\t\t\t\t\t} );\n\n\t\t\t\t\t// Put the selection at the end of the updated link.\n\t\t\t\t\twriter.setSelection( writer.createPositionAfter( linkRange.end.nodeBefore! ) );\n\t\t\t\t}\n\t\t\t\t// If not then insert text node with `linkHref` attribute in place of caret.\n\t\t\t\t// However, since selection is collapsed, attribute value will be used as data for text node.\n\t\t\t\t// So, if `href` is empty, do not create text node.\n\t\t\t\telse if ( href !== '' ) {\n\t\t\t\t\tconst attributes = toMap( selection.getAttributes() );\n\n\t\t\t\t\tattributes.set( 'linkHref', href );\n\n\t\t\t\t\ttruthyManualDecorators.forEach( item => {\n\t\t\t\t\t\tattributes.set( item, true );\n\t\t\t\t\t} );\n\n\t\t\t\t\tconst { end: positionAfter } = model.insertContent( writer.createText( href, attributes ), position );\n\n\t\t\t\t\t// Put the selection at the end of the inserted link.\n\t\t\t\t\t// Using end of range returned from insertContent in case nodes with the same attributes got merged.\n\t\t\t\t\twriter.setSelection( positionAfter );\n\t\t\t\t}\n\n\t\t\t\t// Remove the `linkHref` attribute and all link decorators from the selection.\n\t\t\t\t// It stops adding a new content into the link element.\n\t\t\t\t[ 'linkHref', ...truthyManualDecorators, ...falsyManualDecorators ].forEach( item => {\n\t\t\t\t\twriter.removeSelectionAttribute( item );\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\t// If selection has non-collapsed ranges, we change attribute on nodes inside those ranges\n\t\t\t\t// omitting nodes where the `linkHref` attribute is disallowed.\n\t\t\t\tconst ranges = model.schema.getValidRanges( selection.getRanges(), 'linkHref' );\n\n\t\t\t\t// But for the first, check whether the `linkHref` attribute is allowed on selected blocks (e.g. the \"image\" element).\n\t\t\t\tconst allowedRanges = [];\n\n\t\t\t\tfor ( const element of selection.getSelectedBlocks() ) {\n\t\t\t\t\tif ( model.schema.checkAttribute( element, 'linkHref' ) ) {\n\t\t\t\t\t\tallowedRanges.push( writer.createRangeOn( element ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Ranges that accept the `linkHref` attribute. Since we will iterate over `allowedRanges`, let's clone it.\n\t\t\t\tconst rangesToUpdate = allowedRanges.slice();\n\n\t\t\t\t// For all selection ranges we want to check whether given range is inside an element that accepts the `linkHref` attribute.\n\t\t\t\t// If so, we don't want to propagate applying the attribute to its children.\n\t\t\t\tfor ( const range of ranges ) {\n\t\t\t\t\tif ( this._isRangeToUpdate( range, allowedRanges ) ) {\n\t\t\t\t\t\trangesToUpdate.push( range );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor ( const range of rangesToUpdate ) {\n\t\t\t\t\tlet linkRange = range;\n\n\t\t\t\t\tif ( rangesToUpdate.length === 1 ) {\n\t\t\t\t\t\t// Current text of the link in the document.\n\t\t\t\t\t\tconst linkText = extractTextFromSelection( selection );\n\n\t\t\t\t\t\tif ( selection.getAttribute( 'linkHref' ) === linkText ) {\n\t\t\t\t\t\t\tlinkRange = this._updateLinkContent( model, writer, range, href );\n\t\t\t\t\t\t\twriter.setSelection( writer.createSelection( linkRange ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\twriter.setAttribute( 'linkHref', href, linkRange );\n\n\t\t\t\t\ttruthyManualDecorators.forEach( item => {\n\t\t\t\t\t\twriter.setAttribute( item, true, linkRange );\n\t\t\t\t\t} );\n\n\t\t\t\t\tfalsyManualDecorators.forEach( item => {\n\t\t\t\t\t\twriter.removeAttribute( item, linkRange );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Provides information whether a decorator with a given name is present in the currently processed selection.\n\t *\n\t * @param decoratorName The name of the manual decorator used in the model\n\t * @returns The information whether a given decorator is currently present in the selection.\n\t */\n\tprivate _getDecoratorStateFromModel( decoratorName: string ): boolean | undefined {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\t// A check for the `LinkImage` plugin. If the selection contains an element, get values from the element.\n\t\t// Currently the selection reads attributes from text nodes only. See #7429 and #7465.\n\t\tif ( isLinkableElement( selectedElement, model.schema ) ) {\n\t\t\treturn selectedElement.getAttribute( decoratorName ) as boolean | undefined;\n\t\t}\n\n\t\treturn selection.getAttribute( decoratorName ) as boolean | undefined;\n\t}\n\n\t/**\n\t * Checks whether specified `range` is inside an element that accepts the `linkHref` attribute.\n\t *\n\t * @param range A range to check.\n\t * @param allowedRanges An array of ranges created on elements where the attribute is accepted.\n\t */\n\tprivate _isRangeToUpdate( range: Range, allowedRanges: Array<Range> ): boolean {\n\t\tfor ( const allowedRange of allowedRanges ) {\n\t\t\t// A range is inside an element that will have the `linkHref` attribute. Do not modify its nodes.\n\t\t\tif ( allowedRange.containsRange( range ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Updates selected link with a new value as its content and as its href attribute.\n\t *\n\t * @param model Model is need to insert content.\n\t * @param writer Writer is need to create text element in model.\n\t * @param range A range where should be inserted content.\n\t * @param href A link value which should be in the href attribute and in the content.\n\t */\n\tprivate _updateLinkContent( model: Model, writer: Writer, range: Range, href: string ): Range {\n\t\tconst text = writer.createText( href, { linkHref: href } );\n\n\t\treturn model.insertContent( text, range );\n\t}\n}\n\n// Returns a text of a link under the collapsed selection or a selection that contains the entire link.\nfunction extractTextFromSelection( selection: DocumentSelection ): string | null {\n\tif ( selection.isCollapsed ) {\n\t\tconst firstPosition = selection.getFirstPosition();\n\n\t\treturn firstPosition!.textNode && firstPosition!.textNode.data;\n\t} else {\n\t\tconst rangeItems = Array.from( selection.getFirstRange()!.getItems() );\n\n\t\tif ( rangeItems.length > 1 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst firstNode = rangeItems[ 0 ];\n\n\t\tif ( firstNode.is( '$text' ) || firstNode.is( '$textProxy' ) ) {\n\t\t\treturn firstNode.data;\n\t\t}\n\n\t\treturn null;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module link/unlinkcommand\n */\n\nimport { Command } from 'ckeditor5/src/core';\nimport { findAttributeRange } from 'ckeditor5/src/typing';\n\nimport type LinkCommand from './linkcommand';\nimport { isLinkableElement } from './utils';\n\n/**\n * The unlink command. It is used by the {@link module:link/link~Link link plugin}.\n */\nexport default class UnlinkCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\t// A check for any integration that allows linking elements (e.g. `LinkImage`).\n\t\t// Currently the selection reads attributes from text nodes only. See #7429 and #7465.\n\t\tif ( isLinkableElement( selectedElement, model.schema ) ) {\n\t\t\tthis.isEnabled = model.schema.checkAttribute( selectedElement, 'linkHref' );\n\t\t} else {\n\t\t\tthis.isEnabled = model.schema.checkAttributeInSelection( selection, 'linkHref' );\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * When the selection is collapsed, it removes the `linkHref` attribute from each node with the same `linkHref` attribute value.\n\t * When the selection is non-collapsed, it removes the `linkHref` attribute from each node in selected ranges.\n\t *\n\t * # Decorators\n\t *\n\t * If {@link module:link/linkconfig~LinkConfig#decorators `config.link.decorators`} is specified,\n\t * all configured decorators are removed together with the `linkHref` attribute.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst linkCommand: LinkCommand | undefined = editor.commands.get( 'link' );\n\n\t\tmodel.change( writer => {\n\t\t\t// Get ranges to unlink.\n\t\t\tconst rangesToUnlink = selection.isCollapsed ?\n\t\t\t\t[ findAttributeRange(\n\t\t\t\t\tselection.getFirstPosition()!,\n\t\t\t\t\t'linkHref',\n\t\t\t\t\tselection.getAttribute( 'linkHref' ),\n\t\t\t\t\tmodel\n\t\t\t\t) ] :\n\t\t\t\tmodel.schema.getValidRanges( selection.getRanges(), 'linkHref' );\n\n\t\t\t// Remove `linkHref` attribute from specified ranges.\n\t\t\tfor ( const range of rangesToUnlink ) {\n\t\t\t\twriter.removeAttribute( 'linkHref', range );\n\t\t\t\t// If there are registered custom attributes, then remove them during unlink.\n\t\t\t\tif ( linkCommand ) {\n\t\t\t\t\tfor ( const manualDecorator of linkCommand.manualDecorators ) {\n\t\t\t\t\t\twriter.removeAttribute( manualDecorator.id, range );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module link/utils/manualdecorator\n */\n\nimport { ObservableMixin, type ArrayOrItem } from 'ckeditor5/src/utils';\nimport type { MatcherPattern, MatcherObjectPattern } from 'ckeditor5/src/engine';\nimport type { NormalizedLinkDecoratorManualDefinition } from '../utils';\n\n/**\n * Helper class that stores manual decorators with observable {@link module:link/utils/manualdecorator~ManualDecorator#value}\n * to support integration with the UI state. An instance of this class is a model with the state of individual manual decorators.\n * These decorators are kept as collections in {@link module:link/linkcommand~LinkCommand#manualDecorators}.\n */\nexport default class ManualDecorator extends ObservableMixin() {\n\t/**\n\t * An ID of a manual decorator which is the name of the attribute in the model, for example: 'linkManualDecorator0'.\n\t */\n\tpublic id: string;\n\n\t/**\n\t * The value of the current manual decorator. It reflects its state from the UI.\n\t *\n\t * @observable\n\t */\n\tdeclare public value: boolean | undefined;\n\n\t/**\n\t * The default value of manual decorator.\n\t */\n\tpublic defaultValue?: boolean;\n\n\t/**\n\t * The label used in the user interface to toggle the manual decorator.\n\t */\n\tpublic label: string;\n\n\t/**\n\t * A set of attributes added to downcasted data when the decorator is activated for a specific link.\n\t * Attributes should be added in a form of attributes defined in {@link module:engine/view/elementdefinition~ElementDefinition}.\n\t */\n\tpublic attributes?: Record<string, string>;\n\n\t/**\n\t * A set of classes added to downcasted data when the decorator is activated for a specific link.\n\t * Classes should be added in a form of classes defined in {@link module:engine/view/elementdefinition~ElementDefinition}.\n\t */\n\tpublic classes?: ArrayOrItem<string>;\n\n\t/**\n\t * A set of styles added to downcasted data when the decorator is activated for a specific link.\n\t * Styles should be added in a form of styles defined in {@link module:engine/view/elementdefinition~ElementDefinition}.\n\t */\n\tpublic styles?: Record<string, string>;\n\n\t/**\n\t * Creates a new instance of {@link module:link/utils/manualdecorator~ManualDecorator}.\n\t *\n\t * @param config.id The name of the attribute used in the model that represents a given manual decorator.\n\t * For example: `'linkIsExternal'`.\n\t * @param config.label The label used in the user interface to toggle the manual decorator.\n\t * @param config.attributes A set of attributes added to output data when the decorator is active for a specific link.\n\t * Attributes should keep the format of attributes defined in {@link module:engine/view/elementdefinition~ElementDefinition}.\n\t * @param [config.defaultValue] Controls whether the decorator is \"on\" by default.\n\t */\n\tconstructor( { id, label, attributes, classes, styles, defaultValue }: NormalizedLinkDecoratorManualDefinition ) {\n\t\tsuper();\n\n\t\tthis.id = id;\n\t\tthis.set( 'value', undefined );\n\t\tthis.defaultValue = defaultValue;\n\t\tthis.label = label;\n\t\tthis.attributes = attributes;\n\t\tthis.classes = classes;\n\t\tthis.styles = styles;\n\t}\n\n\t/**\n\t * Returns {@link module:engine/view/matcher~MatcherPattern} with decorator attributes.\n\t *\n\t * @internal\n\t */\n\tpublic _createPattern(): MatcherObjectPattern {\n\t\treturn {\n\t\t\tattributes: this.attributes,\n\t\t\tclasses: this.classes,\n\t\t\tstyles: this.styles\n\t\t};\n\t}\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./link.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module link/linkediting\n */\n\nimport {\n\tPlugin,\n\ttype Editor\n} from 'ckeditor5/src/core';\nimport {\n\tMouseObserver,\n\ttype Model,\n\ttype Schema,\n\ttype Writer,\n\ttype ViewElement,\n\ttype ModelDeleteContentEvent,\n\ttype ModelInsertContentEvent,\n\ttype ViewDocumentKeyDownEvent,\n\ttype ViewDocumentMouseDownEvent,\n\ttype ViewDocumentClickEvent,\n\ttype ViewDocumentSelectionChangeEvent\n} from 'ckeditor5/src/engine';\nimport {\n\tInput,\n\tTwoStepCaretMovement,\n\tinlineHighlight,\n\tfindAttributeRange,\n\ttype ViewDocumentDeleteEvent\n} from 'ckeditor5/src/typing';\nimport {\n\tClipboardPipeline,\n\ttype ClipboardContentInsertionEvent\n} from 'ckeditor5/src/clipboard';\nimport { keyCodes, env } from 'ckeditor5/src/utils';\n\nimport LinkCommand from './linkcommand';\nimport UnlinkCommand from './unlinkcommand';\nimport ManualDecorator from './utils/manualdecorator';\nimport {\n\tcreateLinkElement,\n\tensureSafeUrl,\n\tgetLocalizedDecorators,\n\tnormalizeDecorators,\n\topenLink,\n\taddLinkProtocolIfApplicable,\n\ttype NormalizedLinkDecoratorAutomaticDefinition,\n\ttype NormalizedLinkDecoratorManualDefinition\n} from './utils';\n\nimport '../theme/link.css';\n\nconst HIGHLIGHT_CLASS = 'ck-link_selected';\nconst DECORATOR_AUTOMATIC = 'automatic';\nconst DECORATOR_MANUAL = 'manual';\nconst EXTERNAL_LINKS_REGEXP = /^(https?:)?\\/\\//;\n\n/**\n * The link engine feature.\n *\n * It introduces the `linkHref=\"url\"` attribute in the model which renders to the view as a `<a href=\"url\">` element\n * as well as `'link'` and `'unlink'` commands.\n */\nexport default class LinkEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'LinkEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\t// Clipboard is required for handling cut and paste events while typing over the link.\n\t\treturn [ TwoStepCaretMovement, Input, ClipboardPipeline ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'link', {\n\t\t\taddTargetToExternalLinks: false\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Allow link attribute on all inline nodes.\n\t\teditor.model.schema.extend( '$text', { allowAttributes: 'linkHref' } );\n\n\t\teditor.conversion.for( 'dataDowncast' )\n\t\t\t.attributeToElement( { model: 'linkHref', view: createLinkElement } );\n\n\t\teditor.conversion.for( 'editingDowncast' )\n\t\t\t.attributeToElement( { model: 'linkHref', view: ( href, conversionApi ) => {\n\t\t\t\treturn createLinkElement( ensureSafeUrl( href ), conversionApi );\n\t\t\t} } );\n\n\t\teditor.conversion.for( 'upcast' )\n\t\t\t.elementToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: 'a',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\thref: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\tkey: 'linkHref',\n\t\t\t\t\tvalue: ( viewElement: ViewElement ) => viewElement.getAttribute( 'href' )\n\t\t\t\t}\n\t\t\t} );\n\n\t\t// Create linking commands.\n\t\teditor.commands.add( 'link', new LinkCommand( editor ) );\n\t\teditor.commands.add( 'unlink', new UnlinkCommand( editor ) );\n\n\t\tconst linkDecorators = getLocalizedDecorators( editor.t, normalizeDecorators( editor.config.get( 'link.decorators' ) ) );\n\n\t\tthis._enableAutomaticDecorators( linkDecorators\n\t\t\t.filter( ( item ): item is NormalizedLinkDecoratorAutomaticDefinition => item.mode === DECORATOR_AUTOMATIC ) );\n\t\tthis._enableManualDecorators( linkDecorators\n\t\t\t.filter( ( item ): item is NormalizedLinkDecoratorManualDefinition => item.mode === DECORATOR_MANUAL ) );\n\n\t\t// Enable two-step caret movement for `linkHref` attribute.\n\t\tconst twoStepCaretMovementPlugin = editor.plugins.get( TwoStepCaretMovement );\n\t\ttwoStepCaretMovementPlugin.registerAttribute( 'linkHref' );\n\n\t\t// Setup highlight over selected link.\n\t\tinlineHighlight( editor, 'linkHref', 'a', HIGHLIGHT_CLASS );\n\n\t\t// Handle link following by CTRL+click or ALT+ENTER\n\t\tthis._enableLinkOpen();\n\n\t\t// Change the attributes of the selection in certain situations after the link was inserted into the document.\n\t\tthis._enableInsertContentSelectionAttributesFixer();\n\n\t\t// Handle a click at the beginning/end of a link element.\n\t\tthis._enableClickingAfterLink();\n\n\t\t// Handle typing over the link.\n\t\tthis._enableTypingOverLink();\n\n\t\t// Handle removing the content after the link element.\n\t\tthis._handleDeleteContentAfterLink();\n\n\t\t// Handle adding default protocol to pasted links.\n\t\tthis._enableClipboardIntegration();\n\t}\n\n\t/**\n\t * Processes an array of configured {@link module:link/linkconfig~LinkDecoratorAutomaticDefinition automatic decorators}\n\t * and registers a {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher downcast dispatcher}\n\t * for each one of them. Downcast dispatchers are obtained using the\n\t * {@link module:link/utils/automaticdecorators~AutomaticDecorators#getDispatcher} method.\n\t *\n\t * **Note**: This method also activates the automatic external link decorator if enabled with\n\t * {@link module:link/linkconfig~LinkConfig#addTargetToExternalLinks `config.link.addTargetToExternalLinks`}.\n\t */\n\tprivate _enableAutomaticDecorators( automaticDecoratorDefinitions: Array<NormalizedLinkDecoratorAutomaticDefinition> ): void {\n\t\tconst editor = this.editor;\n\t\t// Store automatic decorators in the command instance as we do the same with manual decorators.\n\t\t// Thanks to that, `LinkImageEditing` plugin can re-use the same definitions.\n\t\tconst command: LinkCommand = editor.commands.get( 'link' )!;\n\t\tconst automaticDecorators = command.automaticDecorators;\n\n\t\t// Adds a default decorator for external links.\n\t\tif ( editor.config.get( 'link.addTargetToExternalLinks' ) ) {\n\t\t\tautomaticDecorators.add( {\n\t\t\t\tid: 'linkIsExternal',\n\t\t\t\tmode: DECORATOR_AUTOMATIC,\n\t\t\t\tcallback: url => !!url && EXTERNAL_LINKS_REGEXP.test( url ),\n\t\t\t\tattributes: {\n\t\t\t\t\ttarget: '_blank',\n\t\t\t\t\trel: 'noopener noreferrer'\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tautomaticDecorators.add( automaticDecoratorDefinitions );\n\n\t\tif ( automaticDecorators.length ) {\n\t\t\teditor.conversion.for( 'downcast' ).add( automaticDecorators.getDispatcher() );\n\t\t}\n\t}\n\n\t/**\n\t * Processes an array of configured {@link module:link/linkconfig~LinkDecoratorManualDefinition manual decorators},\n\t * transforms them into {@link module:link/utils/manualdecorator~ManualDecorator} instances and stores them in the\n\t * {@link module:link/linkcommand~LinkCommand#manualDecorators} collection (a model for manual decorators state).\n\t *\n\t * Also registers an {@link module:engine/conversion/downcasthelpers~DowncastHelpers#attributeToElement attribute-to-element}\n\t * converter for each manual decorator and extends the {@link module:engine/model/schema~Schema model's schema}\n\t * with adequate model attributes.\n\t */\n\tprivate _enableManualDecorators( manualDecoratorDefinitions: Array<NormalizedLinkDecoratorManualDefinition> ): void {\n\t\tif ( !manualDecoratorDefinitions.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst editor = this.editor;\n\t\tconst command: LinkCommand = editor.commands.get( 'link' )!;\n\t\tconst manualDecorators = command.manualDecorators;\n\n\t\tmanualDecoratorDefinitions.forEach( decoratorDefinition => {\n\t\t\teditor.model.schema.extend( '$text', { allowAttributes: decoratorDefinition.id } );\n\n\t\t\t// Keeps reference to manual decorator to decode its name to attributes during downcast.\n\t\t\tconst decorator = new ManualDecorator( decoratorDefinition );\n\n\t\t\tmanualDecorators.add( decorator );\n\n\t\t\teditor.conversion.for( 'downcast' ).attributeToElement( {\n\t\t\t\tmodel: decorator.id,\n\t\t\t\tview: ( manualDecoratorValue, { writer, schema }, { item } ) => {\n\t\t\t\t\t// Manual decorators for block links are handled e.g. in LinkImageEditing.\n\t\t\t\t\tif ( !( item.is( 'selection' ) || schema.isInline( item ) ) ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( manualDecoratorValue ) {\n\t\t\t\t\t\tconst element = writer.createAttributeElement( 'a', decorator.attributes, { priority: 5 } );\n\n\t\t\t\t\t\tif ( decorator.classes ) {\n\t\t\t\t\t\t\twriter.addClass( decorator.classes, element );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( const key in decorator.styles ) {\n\t\t\t\t\t\t\twriter.setStyle( key, decorator.styles[ key ], element );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twriter.setCustomProperty( 'link', true, element );\n\n\t\t\t\t\t\treturn element;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\teditor.conversion.for( 'upcast' ).elementToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: 'a',\n\t\t\t\t\t...decorator._createPattern()\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\tkey: decorator.id\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t/**\n\t * Attaches handlers for {@link module:engine/view/document~Document#event:enter} and\n\t * {@link module:engine/view/document~Document#event:click} to enable link following.\n\t */\n\tprivate _enableLinkOpen(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\tthis.listenTo<ViewDocumentClickEvent>( viewDocument, 'click', ( evt, data ) => {\n\t\t\tconst shouldOpen = env.isMac ? data.domEvent.metaKey : data.domEvent.ctrlKey;\n\n\t\t\tif ( !shouldOpen ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet clickedElement: Element | null = data.domTarget;\n\n\t\t\tif ( clickedElement.tagName.toLowerCase() != 'a' ) {\n\t\t\t\tclickedElement = clickedElement.closest( 'a' );\n\t\t\t}\n\n\t\t\tif ( !clickedElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst url = clickedElement.getAttribute( 'href' );\n\n\t\t\tif ( !url ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevt.stop();\n\t\t\tdata.preventDefault();\n\n\t\t\topenLink( url );\n\t\t}, { context: '$capture' } );\n\n\t\t// Open link on Alt+Enter.\n\t\tthis.listenTo<ViewDocumentKeyDownEvent>( viewDocument, 'keydown', ( evt, data ) => {\n\t\t\tconst linkCommand: LinkCommand = editor.commands.get( 'link' )!;\n\t\t\tconst url = linkCommand!.value;\n\t\t\tconst shouldOpen = !!url && data.keyCode === keyCodes.enter && data.altKey;\n\n\t\t\tif ( !shouldOpen ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevt.stop();\n\n\t\t\topenLink( url );\n\t\t} );\n\t}\n\n\t/**\n\t * Starts listening to {@link module:engine/model/model~Model#event:insertContent} and corrects the model\n\t * selection attributes if the selection is at the end of a link after inserting the content.\n\t *\n\t * The purpose of this action is to improve the overall UX because the user is no longer \"trapped\" by the\n\t * `linkHref` attribute of the selection and they can type a \"clean\" (`linkHref`–less) text right away.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5/issues/6053.\n\t */\n\tprivate _enableInsertContentSelectionAttributesFixer(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\n\t\tthis.listenTo<ModelInsertContentEvent>( model, 'insertContent', () => {\n\t\t\tconst nodeBefore = selection.anchor!.nodeBefore;\n\t\t\tconst nodeAfter = selection.anchor!.nodeAfter;\n\n\t\t\t// NOTE: ↰ and ↱ represent the gravity of the selection.\n\n\t\t\t// The only truly valid case is:\n\t\t\t//\n\t\t\t//\t\t ↰\n\t\t\t//\t\t...<$text linkHref=\"foo\">INSERTED[]</$text>\n\t\t\t//\n\t\t\t// If the selection is not \"trapped\" by the `linkHref` attribute after inserting, there's nothing\n\t\t\t// to fix there.\n\t\t\tif ( !selection.hasAttribute( 'linkHref' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Filter out the following case where a link with the same href (e.g. <a href=\"foo\">INSERTED</a>) is inserted\n\t\t\t// in the middle of an existing link:\n\t\t\t//\n\t\t\t// Before insertion:\n\t\t\t//\t\t ↰\n\t\t\t//\t\t<$text linkHref=\"foo\">l[]ink</$text>\n\t\t\t//\n\t\t\t// Expected after insertion:\n\t\t\t//\t\t ↰\n\t\t\t//\t\t<$text linkHref=\"foo\">lINSERTED[]ink</$text>\n\t\t\t//\n\t\t\tif ( !nodeBefore ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Filter out the following case where the selection has the \"linkHref\" attribute because the\n\t\t\t// gravity is overridden and some text with another attribute (e.g. <b>INSERTED</b>) is inserted:\n\t\t\t//\n\t\t\t// Before insertion:\n\t\t\t//\n\t\t\t//\t\t ↱\n\t\t\t//\t\t<$text linkHref=\"foo\">[]link</$text>\n\t\t\t//\n\t\t\t// Expected after insertion:\n\t\t\t//\n\t\t\t//\t\t ↱\n\t\t\t//\t\t<$text bold=\"true\">INSERTED</$text><$text linkHref=\"foo\">[]link</$text>\n\t\t\t//\n\t\t\tif ( !nodeBefore.hasAttribute( 'linkHref' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Filter out the following case where a link is a inserted in the middle (or before) another link\n\t\t\t// (different URLs, so they will not merge). In this (let's say weird) case, we can leave the selection\n\t\t\t// attributes as they are because the user will end up writing in one link or another anyway.\n\t\t\t//\n\t\t\t// Before insertion:\n\t\t\t//\n\t\t\t//\t\t ↰\n\t\t\t//\t\t<$text linkHref=\"foo\">l[]ink</$text>\n\t\t\t//\n\t\t\t// Expected after insertion:\n\t\t\t//\n\t\t\t//\t\t ↰\n\t\t\t//\t\t<$text linkHref=\"foo\">l</$text><$text linkHref=\"bar\">INSERTED[]</$text><$text linkHref=\"foo\">ink</$text>\n\t\t\t//\n\t\t\tif ( nodeAfter && nodeAfter.hasAttribute( 'linkHref' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmodel.change( writer => {\n\t\t\t\tremoveLinkAttributesFromSelection( writer, getLinkAttributesAllowedOnText( model.schema ) );\n\t\t\t} );\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * Starts listening to {@link module:engine/view/document~Document#event:mousedown} and\n\t * {@link module:engine/view/document~Document#event:selectionChange} and puts the selection before/after a link node\n\t * if clicked at the beginning/ending of the link.\n\t *\n\t * The purpose of this action is to allow typing around the link node directly after a click.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5/issues/1016.\n\t */\n\tprivate _enableClickingAfterLink(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\n\t\teditor.editing.view.addObserver( MouseObserver );\n\n\t\tlet clicked = false;\n\n\t\t// Detect the click.\n\t\tthis.listenTo<ViewDocumentMouseDownEvent>( editor.editing.view.document, 'mousedown', () => {\n\t\t\tclicked = true;\n\t\t} );\n\n\t\t// When the selection has changed...\n\t\tthis.listenTo<ViewDocumentSelectionChangeEvent>( editor.editing.view.document, 'selectionChange', () => {\n\t\t\tif ( !clicked ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// ...and it was caused by the click...\n\t\t\tclicked = false;\n\n\t\t\tconst selection = model.document.selection;\n\n\t\t\t// ...and no text is selected...\n\t\t\tif ( !selection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// ...and clicked text is the link...\n\t\t\tif ( !selection.hasAttribute( 'linkHref' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst position = selection.getFirstPosition()!;\n\t\t\tconst linkRange = findAttributeRange( position, 'linkHref', selection.getAttribute( 'linkHref' ), model );\n\n\t\t\t// ...check whether clicked start/end boundary of the link.\n\t\t\t// If so, remove the `linkHref` attribute.\n\t\t\tif ( position.isTouching( linkRange.start ) || position.isTouching( linkRange.end ) ) {\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\tremoveLinkAttributesFromSelection( writer, getLinkAttributesAllowedOnText( model.schema ) );\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Starts listening to {@link module:engine/model/model~Model#deleteContent} and {@link module:engine/model/model~Model#insertContent}\n\t * and checks whether typing over the link. If so, attributes of removed text are preserved and applied to the inserted text.\n\t *\n\t * The purpose of this action is to allow modifying a text without loosing the `linkHref` attribute (and other).\n\t *\n\t * See https://github.com/ckeditor/ckeditor5/issues/4762.\n\t */\n\tprivate _enableTypingOverLink(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\n\t\t// Selection attributes when started typing over the link.\n\t\tlet selectionAttributes: IterableIterator<[ string, unknown ]> | null = null;\n\n\t\t// Whether pressed `Backspace` or `Delete`. If so, attributes should not be preserved.\n\t\tlet deletedContent = false;\n\n\t\t// Detect pressing `Backspace` / `Delete`.\n\t\tthis.listenTo<ViewDocumentDeleteEvent>( view.document, 'delete', () => {\n\t\t\tdeletedContent = true;\n\t\t}, { priority: 'high' } );\n\n\t\t// Listening to `model#deleteContent` allows detecting whether selected content was a link.\n\t\t// If so, before removing the element, we will copy its attributes.\n\t\tthis.listenTo<ModelDeleteContentEvent>( editor.model, 'deleteContent', () => {\n\t\t\tconst selection = editor.model.document.selection;\n\n\t\t\t// Copy attributes only if anything is selected.\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// When the content was deleted, do not preserve attributes.\n\t\t\tif ( deletedContent ) {\n\t\t\t\tdeletedContent = false;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Enabled only when typing.\n\t\t\tif ( !isTyping( editor ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( shouldCopyAttributes( editor.model ) ) {\n\t\t\t\tselectionAttributes = selection.getAttributes();\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\n\t\t// Listening to `model#insertContent` allows detecting the content insertion.\n\t\t// We want to apply attributes that were removed while typing over the link.\n\t\tthis.listenTo( editor.model, 'insertContent', ( evt, [ element ] ) => {\n\t\t\tdeletedContent = false;\n\n\t\t\t// Enabled only when typing.\n\t\t\tif ( !isTyping( editor ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !selectionAttributes ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\teditor.model.change( writer => {\n\t\t\t\tfor ( const [ attribute, value ] of selectionAttributes! ) {\n\t\t\t\t\twriter.setAttribute( attribute, value, element );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tselectionAttributes = null;\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Starts listening to {@link module:engine/model/model~Model#deleteContent} and checks whether\n\t * removing a content right after the \"linkHref\" attribute.\n\t *\n\t * If so, the selection should not preserve the `linkHref` attribute. However, if\n\t * the {@link module:typing/twostepcaretmovement~TwoStepCaretMovement} plugin is active and\n\t * the selection has the \"linkHref\" attribute due to overriden gravity (at the end), the `linkHref` attribute should stay untouched.\n\t *\n\t * The purpose of this action is to allow removing the link text and keep the selection outside the link.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5/issues/7521.\n\t */\n\tprivate _handleDeleteContentAfterLink(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst view = editor.editing.view;\n\n\t\t// A flag whether attributes `linkHref` attribute should be preserved.\n\t\tlet shouldPreserveAttributes = false;\n\n\t\t// A flag whether the `Backspace` key was pressed.\n\t\tlet hasBackspacePressed = false;\n\n\t\t// Detect pressing `Backspace`.\n\t\tthis.listenTo<ViewDocumentDeleteEvent>( view.document, 'delete', ( evt, data ) => {\n\t\t\thasBackspacePressed = data.direction === 'backward';\n\t\t}, { priority: 'high' } );\n\n\t\t// Before removing the content, check whether the selection is inside a link or at the end of link but with 2-SCM enabled.\n\t\t// If so, we want to preserve link attributes.\n\t\tthis.listenTo<ModelDeleteContentEvent>( model, 'deleteContent', () => {\n\t\t\t// Reset the state.\n\t\t\tshouldPreserveAttributes = false;\n\n\t\t\tconst position = selection.getFirstPosition()!;\n\t\t\tconst linkHref = selection.getAttribute( 'linkHref' );\n\n\t\t\tif ( !linkHref ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst linkRange = findAttributeRange( position, 'linkHref', linkHref, model );\n\n\t\t\t// Preserve `linkHref` attribute if the selection is in the middle of the link or\n\t\t\t// the selection is at the end of the link and 2-SCM is activated.\n\t\t\tshouldPreserveAttributes = linkRange.containsPosition( position ) || linkRange.end.isEqual( position );\n\t\t}, { priority: 'high' } );\n\n\t\t// After removing the content, check whether the current selection should preserve the `linkHref` attribute.\n\t\tthis.listenTo<ModelDeleteContentEvent>( model, 'deleteContent', () => {\n\t\t\t// If didn't press `Backspace`.\n\t\t\tif ( !hasBackspacePressed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thasBackspacePressed = false;\n\n\t\t\t// Disable the mechanism if inside a link (`<$text url=\"foo\">F[]oo</$text>` or <$text url=\"foo\">Foo[]</$text>`).\n\t\t\tif ( shouldPreserveAttributes ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Use `model.enqueueChange()` in order to execute the callback at the end of the changes process.\n\t\t\teditor.model.enqueueChange( writer => {\n\t\t\t\tremoveLinkAttributesFromSelection( writer, getLinkAttributesAllowedOnText( model.schema ) );\n\t\t\t} );\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * Enables URL fixing on pasting.\n\t */\n\tprivate _enableClipboardIntegration(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst defaultProtocol = this.editor.config.get( 'link.defaultProtocol' );\n\n\t\tif ( !defaultProtocol ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.listenTo<ClipboardContentInsertionEvent>( editor.plugins.get( 'ClipboardPipeline' ), 'contentInsertion', ( evt, data ) => {\n\t\t\tmodel.change( writer => {\n\t\t\t\tconst range = writer.createRangeIn( data.content );\n\n\t\t\t\tfor ( const item of range.getItems() ) {\n\t\t\t\t\tif ( item.hasAttribute( 'linkHref' ) ) {\n\t\t\t\t\t\tconst newLink = addLinkProtocolIfApplicable( item.getAttribute( 'linkHref' ) as string, defaultProtocol );\n\n\t\t\t\t\t\twriter.setAttribute( 'linkHref', newLink, item );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n}\n\n/**\n * Make the selection free of link-related model attributes.\n * All link-related model attributes start with \"link\". That includes not only \"linkHref\"\n * but also all decorator attributes (they have dynamic names), or even custom plugins.\n */\nfunction removeLinkAttributesFromSelection( writer: Writer, linkAttributes: Array<string> ): void {\n\twriter.removeSelectionAttribute( 'linkHref' );\n\n\tfor ( const attribute of linkAttributes ) {\n\t\twriter.removeSelectionAttribute( attribute );\n\t}\n}\n\n/**\n * Checks whether selection's attributes should be copied to the new inserted text.\n */\nfunction shouldCopyAttributes( model: Model ): boolean {\n\tconst selection = model.document.selection;\n\tconst firstPosition = selection.getFirstPosition()!;\n\tconst lastPosition = selection.getLastPosition()!;\n\tconst nodeAtFirstPosition = firstPosition.nodeAfter;\n\n\t// The text link node does not exist...\n\tif ( !nodeAtFirstPosition ) {\n\t\treturn false;\n\t}\n\n\t// ...or it isn't the text node...\n\tif ( !nodeAtFirstPosition.is( '$text' ) ) {\n\t\treturn false;\n\t}\n\n\t// ...or isn't the link.\n\tif ( !nodeAtFirstPosition.hasAttribute( 'linkHref' ) ) {\n\t\treturn false;\n\t}\n\n\t// `textNode` = the position is inside the link element.\n\t// `nodeBefore` = the position is at the end of the link element.\n\tconst nodeAtLastPosition = lastPosition.textNode || lastPosition.nodeBefore;\n\n\t// If both references the same node selection contains a single text node.\n\tif ( nodeAtFirstPosition === nodeAtLastPosition ) {\n\t\treturn true;\n\t}\n\n\t// If nodes are not equal, maybe the link nodes has defined additional attributes inside.\n\t// First, we need to find the entire link range.\n\tconst linkRange = findAttributeRange( firstPosition, 'linkHref', nodeAtFirstPosition.getAttribute( 'linkHref' ), model );\n\n\t// Then we can check whether selected range is inside the found link range. If so, attributes should be preserved.\n\treturn linkRange.containsRange( model.createRange( firstPosition, lastPosition ), true );\n}\n\n/**\n * Checks whether provided changes were caused by typing.\n */\nfunction isTyping( editor: Editor ): boolean {\n\tconst currentBatch = editor.model.change( writer => writer.batch );\n\n\treturn currentBatch.isTyping;\n}\n\n/**\n * Returns an array containing names of the attributes allowed on `$text` that describes the link item.\n */\nfunction getLinkAttributesAllowedOnText( schema: Schema ): Array<string> {\n\tconst textAttributes = schema.getDefinition( '$text' )!.allowAttributes;\n\n\treturn textAttributes.filter( attribute => attribute.startsWith( 'link' ) );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module typing/utils/inlinehighlight\n */\n\nimport findAttributeRange from './findattributerange';\nimport type { Editor } from '@ckeditor/ckeditor5-core';\nimport type { ViewElement } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Adds a visual highlight style to an attribute element in which the selection is anchored.\n * Together with two-step caret movement, they indicate that the user is typing inside the element.\n *\n * Highlight is turned on by adding the given class to the attribute element in the view:\n *\n * * The class is removed before the conversion has started, as callbacks added with the `'highest'` priority\n * to {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher} events.\n * * The class is added in the view post fixer, after other changes in the model tree were converted to the view.\n *\n * This way, adding and removing the highlight does not interfere with conversion.\n *\n * Usage:\n *\n * ```ts\n * import inlineHighlight from '@ckeditor/ckeditor5-typing/src/utils/inlinehighlight';\n *\n * // Make `ck-link_selected` class be applied on an `a` element\n * // whenever the corresponding `linkHref` attribute element is selected.\n * inlineHighlight( editor, 'linkHref', 'a', 'ck-link_selected' );\n * ```\n *\n * @param editor The editor instance.\n * @param attributeName The attribute name to check.\n * @param tagName The tagName of a view item.\n * @param className The class name to apply in the view.\n */\nexport default function inlineHighlight(\n\teditor: Editor,\n\tattributeName: string,\n\ttagName: string,\n\tclassName: string\n): void {\n\tconst view = editor.editing.view;\n\tconst highlightedElements = new Set<ViewElement>();\n\n\t// Adding the class.\n\tview.document.registerPostFixer( writer => {\n\t\tconst selection = editor.model.document.selection;\n\t\tlet changed = false;\n\n\t\tif ( selection.hasAttribute( attributeName ) ) {\n\t\t\tconst modelRange = findAttributeRange(\n\t\t\t\tselection.getFirstPosition()!,\n\t\t\t\tattributeName,\n\t\t\t\tselection.getAttribute( attributeName ),\n\t\t\t\teditor.model\n\t\t\t);\n\t\t\tconst viewRange = editor.editing.mapper.toViewRange( modelRange );\n\n\t\t\t// There might be multiple view elements in the `viewRange`, for example, when the `a` element is\n\t\t\t// broken by a UIElement.\n\t\t\tfor ( const item of viewRange.getItems() ) {\n\t\t\t\tif ( item.is( 'element', tagName ) && !item.hasClass( className ) ) {\n\t\t\t\t\twriter.addClass( className, item );\n\t\t\t\t\thighlightedElements.add( item );\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t} );\n\n\t// Removing the class.\n\teditor.conversion.for( 'editingDowncast' ).add( dispatcher => {\n\t\t// Make sure the highlight is removed on every possible event, before conversion is started.\n\t\tdispatcher.on( 'insert', removeHighlight, { priority: 'highest' } );\n\t\tdispatcher.on( 'remove', removeHighlight, { priority: 'highest' } );\n\t\tdispatcher.on( 'attribute', removeHighlight, { priority: 'highest' } );\n\t\tdispatcher.on( 'selection', removeHighlight, { priority: 'highest' } );\n\n\t\tfunction removeHighlight() {\n\t\t\tview.change( writer => {\n\t\t\t\tfor ( const item of highlightedElements.values() ) {\n\t\t\t\t\twriter.removeClass( className, item );\n\t\t\t\t\thighlightedElements.delete( item );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t} );\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./linkform.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module link/ui/linkformview\n */\n\nimport {\n\tButtonView,\n\tFocusCycler,\n\tLabeledFieldView,\n\tSwitchButtonView,\n\tView,\n\tViewCollection,\n\tcreateLabeledInputText,\n\tsubmitHandler,\n\ttype InputTextView\n} from 'ckeditor5/src/ui';\nimport {\n\tFocusTracker,\n\tKeystrokeHandler,\n\ttype Collection,\n\ttype Locale\n} from 'ckeditor5/src/utils';\nimport { icons } from 'ckeditor5/src/core';\n\nimport type LinkCommand from '../linkcommand';\nimport type ManualDecorator from '../utils/manualdecorator';\n\n// See: #8833.\n// eslint-disable-next-line ckeditor5-rules/ckeditor-imports\nimport '@ckeditor/ckeditor5-ui/theme/components/responsive-form/responsiveform.css';\nimport '../../theme/linkform.css';\n\n/**\n * The link form view controller class.\n *\n * See {@link module:link/ui/linkformview~LinkFormView}.\n */\nexport default class LinkFormView extends View {\n\t/**\n\t * Tracks information about DOM focus in the form.\n\t */\n\tpublic readonly focusTracker = new FocusTracker();\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes = new KeystrokeHandler();\n\n\t/**\n\t * The URL input view.\n\t */\n\tpublic urlInputView: LabeledFieldView<InputTextView>;\n\n\t/**\n\t * The Save button view.\n\t */\n\tpublic saveButtonView: ButtonView;\n\n\t/**\n\t * The Cancel button view.\n\t */\n\tpublic cancelButtonView: ButtonView;\n\n\t/**\n\t * A collection of {@link module:ui/button/switchbuttonview~SwitchButtonView},\n\t * which corresponds to {@link module:link/linkcommand~LinkCommand#manualDecorators manual decorators}\n\t * configured in the editor.\n\t */\n\tprivate readonly _manualDecoratorSwitches: ViewCollection;\n\n\t/**\n\t * A collection of child views in the form.\n\t */\n\tpublic readonly children: ViewCollection;\n\n\t/**\n\t * A collection of views that can be focused in the form.\n\t */\n\tprivate readonly _focusables = new ViewCollection();\n\n\t/**\n\t * Helps cycling over {@link #_focusables} in the form.\n\t */\n\tprivate readonly _focusCycler: FocusCycler;\n\n\t/**\n\t * Creates an instance of the {@link module:link/ui/linkformview~LinkFormView} class.\n\t *\n\t * Also see {@link #render}.\n\t *\n\t * @param locale The localization services instance.\n\t * @param linkCommand Reference to {@link module:link/linkcommand~LinkCommand}.\n\t */\n\tconstructor( locale: Locale, linkCommand: LinkCommand ) {\n\t\tsuper( locale );\n\n\t\tconst t = locale.t;\n\n\t\tthis.urlInputView = this._createUrlInput();\n\t\tthis.saveButtonView = this._createButton( t( 'Save' ), icons.check, 'ck-button-save' );\n\t\tthis.saveButtonView.type = 'submit';\n\t\tthis.cancelButtonView = this._createButton( t( 'Cancel' ), icons.cancel, 'ck-button-cancel', 'cancel' );\n\t\tthis._manualDecoratorSwitches = this._createManualDecoratorSwitches( linkCommand );\n\t\tthis.children = this._createFormChildren( linkCommand.manualDecorators );\n\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate form fields backwards using the Shift + Tab keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate form fields forwards using the Tab key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\tconst classList = [ 'ck', 'ck-link-form', 'ck-responsive-form' ];\n\n\t\tif ( linkCommand.manualDecorators.length ) {\n\t\t\tclassList.push( 'ck-link-form_layout-vertical', 'ck-vertical-form' );\n\t\t}\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'form',\n\n\t\t\tattributes: {\n\t\t\t\tclass: classList,\n\n\t\t\t\t// https://github.com/ckeditor/ckeditor5-link/issues/90\n\t\t\t\ttabindex: '-1'\n\t\t\t},\n\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n\n\t/**\n\t * Obtains the state of the {@link module:ui/button/switchbuttonview~SwitchButtonView switch buttons} representing\n\t * {@link module:link/linkcommand~LinkCommand#manualDecorators manual link decorators}\n\t * in the {@link module:link/ui/linkformview~LinkFormView}.\n\t *\n\t * @returns Key-value pairs, where the key is the name of the decorator and the value is its state.\n\t */\n\tpublic getDecoratorSwitchesState(): Record<string, boolean> {\n\t\treturn Array\n\t\t\t.from( this._manualDecoratorSwitches as Iterable<SwitchButtonView & { name: string }> )\n\t\t\t.reduce( ( accumulator, switchButton ) => {\n\t\t\t\taccumulator[ switchButton.name ] = switchButton.isOn;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} as Record<string, boolean> );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tsubmitHandler( {\n\t\t\tview: this\n\t\t} );\n\n\t\tconst childViews = [\n\t\t\tthis.urlInputView,\n\t\t\t...this._manualDecoratorSwitches,\n\t\t\tthis.saveButtonView,\n\t\t\tthis.cancelButtonView\n\t\t];\n\n\t\tchildViews.forEach( v => {\n\t\t\t// Register the view as focusable.\n\t\t\tthis._focusables.add( v );\n\n\t\t\t// Register the view in the focus tracker.\n\t\t\tthis.focusTracker.add( v.element! );\n\t\t} );\n\n\t\t// Start listening for the keystrokes coming from #element.\n\t\tthis.keystrokes.listenTo( this.element! );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Focuses the fist {@link #_focusables} in the form.\n\t */\n\tpublic focus(): void {\n\t\tthis._focusCycler.focusFirst();\n\t}\n\n\t/**\n\t * Creates a labeled input view.\n\t *\n\t * @returns Labeled field view instance.\n\t */\n\tprivate _createUrlInput(): LabeledFieldView<InputTextView> {\n\t\tconst t = this.locale!.t;\n\t\tconst labeledInput = new LabeledFieldView( this.locale, createLabeledInputText );\n\n\t\tlabeledInput.label = t( 'Link URL' );\n\n\t\treturn labeledInput;\n\t}\n\n\t/**\n\t * Creates a button view.\n\t *\n\t * @param label The button label.\n\t * @param icon The button icon.\n\t * @param className The additional button CSS class name.\n\t * @param eventName An event name that the `ButtonView#execute` event will be delegated to.\n\t * @returns The button view instance.\n\t */\n\tprivate _createButton( label: string, icon: string, className: string, eventName?: string ): ButtonView {\n\t\tconst button = new ButtonView( this.locale );\n\n\t\tbutton.set( {\n\t\t\tlabel,\n\t\t\ticon,\n\t\t\ttooltip: true\n\t\t} );\n\n\t\tbutton.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: className\n\t\t\t}\n\t\t} );\n\n\t\tif ( eventName ) {\n\t\t\tbutton.delegate( 'execute' ).to( this, eventName );\n\t\t}\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Populates {@link module:ui/viewcollection~ViewCollection} of {@link module:ui/button/switchbuttonview~SwitchButtonView}\n\t * made based on {@link module:link/linkcommand~LinkCommand#manualDecorators}.\n\t *\n\t * @param linkCommand A reference to the link command.\n\t * @returns ViewCollection of switch buttons.\n\t */\n\tprivate _createManualDecoratorSwitches( linkCommand: LinkCommand ): ViewCollection {\n\t\tconst switches = this.createCollection();\n\n\t\tfor ( const manualDecorator of linkCommand.manualDecorators ) {\n\t\t\tconst switchButton: SwitchButtonView & { name?: string } = new SwitchButtonView( this.locale );\n\n\t\t\tswitchButton.set( {\n\t\t\t\tname: manualDecorator.id,\n\t\t\t\tlabel: manualDecorator.label,\n\t\t\t\twithText: true\n\t\t\t} );\n\n\t\t\tswitchButton.bind( 'isOn' ).toMany( [ manualDecorator, linkCommand ], 'value', ( decoratorValue, commandValue ) => {\n\t\t\t\treturn commandValue === undefined && decoratorValue === undefined ? !!manualDecorator.defaultValue : !!decoratorValue;\n\t\t\t} );\n\n\t\t\tswitchButton.on( 'execute', () => {\n\t\t\t\tmanualDecorator.set( 'value', !switchButton.isOn );\n\t\t\t} );\n\n\t\t\tswitches.add( switchButton );\n\t\t}\n\n\t\treturn switches;\n\t}\n\n\t/**\n\t * Populates the {@link #children} collection of the form.\n\t *\n\t * If {@link module:link/linkcommand~LinkCommand#manualDecorators manual decorators} are configured in the editor, it creates an\n\t * additional `View` wrapping all {@link #_manualDecoratorSwitches} switch buttons corresponding\n\t * to these decorators.\n\t *\n\t * @param manualDecorators A reference to\n\t * the collection of manual decorators stored in the link command.\n\t * @returns The children of link form view.\n\t */\n\tprivate _createFormChildren( manualDecorators: Collection<ManualDecorator> ): ViewCollection {\n\t\tconst children = this.createCollection();\n\n\t\tchildren.add( this.urlInputView );\n\n\t\tif ( manualDecorators.length ) {\n\t\t\tconst additionalButtonsView = new View();\n\n\t\t\tadditionalButtonsView.setTemplate( {\n\t\t\t\ttag: 'ul',\n\t\t\t\tchildren: this._manualDecoratorSwitches.map( switchButton => ( {\n\t\t\t\t\ttag: 'li',\n\t\t\t\t\tchildren: [ switchButton ],\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: [\n\t\t\t\t\t\t\t'ck',\n\t\t\t\t\t\t\t'ck-list__item'\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t} ) ),\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: [\n\t\t\t\t\t\t'ck',\n\t\t\t\t\t\t'ck-reset',\n\t\t\t\t\t\t'ck-list'\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t} );\n\t\t\tchildren.add( additionalButtonsView );\n\t\t}\n\n\t\tchildren.add( this.saveButtonView );\n\t\tchildren.add( this.cancelButtonView );\n\n\t\treturn children;\n\t}\n}\n\n/**\n * Fired when the form view is submitted (when one of the children triggered the submit event),\n * for example with a click on {@link ~LinkFormView#saveButtonView}.\n *\n * @eventName ~LinkFormView#submit\n */\nexport type SubmitEvent = {\n\tname: 'submit';\n\targs: [];\n};\n\n/**\n * Fired when the form view is canceled, for example with a click on {@link ~LinkFormView#cancelButtonView}.\n *\n * @eventName ~LinkFormView#cancel\n */\nexport type CancelEvent = {\n\tname: 'cancel';\n\targs: [];\n};\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./linkactions.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module link/ui/linkactionsview\n */\n\nimport { ButtonView, View, ViewCollection, FocusCycler } from 'ckeditor5/src/ui';\nimport { FocusTracker, KeystrokeHandler, type LocaleTranslate, type Locale } from 'ckeditor5/src/utils';\nimport { icons } from 'ckeditor5/src/core';\n\nimport { ensureSafeUrl } from '../utils';\n\n// See: #8833.\n// eslint-disable-next-line ckeditor5-rules/ckeditor-imports\nimport '@ckeditor/ckeditor5-ui/theme/components/responsive-form/responsiveform.css';\nimport '../../theme/linkactions.css';\n\nimport unlinkIcon from '../../theme/icons/unlink.svg';\n\n/**\n * The link actions view class. This view displays the link preview, allows\n * unlinking or editing the link.\n */\nexport default class LinkActionsView extends View {\n\t/**\n\t * Tracks information about DOM focus in the actions.\n\t */\n\tpublic readonly focusTracker = new FocusTracker();\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes = new KeystrokeHandler();\n\n\t/**\n\t * The href preview view.\n\t */\n\tpublic previewButtonView: View;\n\n\t/**\n\t * The unlink button view.\n\t */\n\tpublic unlinkButtonView: ButtonView;\n\n\t/**\n\t * The edit link button view.\n\t */\n\tpublic editButtonView: ButtonView;\n\n\t/**\n\t * The value of the \"href\" attribute of the link to use in the {@link #previewButtonView}.\n\t *\n\t * @observable\n\t */\n\tdeclare public href: string | undefined;\n\n\t/**\n\t * A collection of views that can be focused in the view.\n\t */\n\tprivate readonly _focusables = new ViewCollection();\n\n\t/**\n\t * Helps cycling over {@link #_focusables} in the view.\n\t */\n\tprivate readonly _focusCycler: FocusCycler;\n\n\tdeclare public t: LocaleTranslate;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst t = locale.t;\n\n\t\tthis.previewButtonView = this._createPreviewButton();\n\t\tthis.unlinkButtonView = this._createButton( t( 'Unlink' ), unlinkIcon, 'unlink' );\n\t\tthis.editButtonView = this._createButton( t( 'Edit link' ), icons.pencil, 'edit' );\n\n\t\tthis.set( 'href', undefined );\n\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate fields backwards using the Shift + Tab keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate fields forwards using the Tab key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-link-actions',\n\t\t\t\t\t'ck-responsive-form'\n\t\t\t\t],\n\n\t\t\t\t// https://github.com/ckeditor/ckeditor5-link/issues/90\n\t\t\t\ttabindex: '-1'\n\t\t\t},\n\n\t\t\tchildren: [\n\t\t\t\tthis.previewButtonView,\n\t\t\t\tthis.editButtonView,\n\t\t\t\tthis.unlinkButtonView\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tconst childViews = [\n\t\t\tthis.previewButtonView,\n\t\t\tthis.editButtonView,\n\t\t\tthis.unlinkButtonView\n\t\t];\n\n\t\tchildViews.forEach( v => {\n\t\t\t// Register the view as focusable.\n\t\t\tthis._focusables.add( v );\n\n\t\t\t// Register the view in the focus tracker.\n\t\t\tthis.focusTracker.add( v.element! );\n\t\t} );\n\n\t\t// Start listening for the keystrokes coming from #element.\n\t\tthis.keystrokes.listenTo( this.element! );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Focuses the fist {@link #_focusables} in the actions.\n\t */\n\tpublic focus(): void {\n\t\tthis._focusCycler.focusFirst();\n\t}\n\n\t/**\n\t * Creates a button view.\n\t *\n\t * @param label The button label.\n\t * @param icon The button icon.\n\t * @param eventName An event name that the `ButtonView#execute` event will be delegated to.\n\t * @returns The button view instance.\n\t */\n\tprivate _createButton( label: string, icon: string, eventName?: string ): ButtonView {\n\t\tconst button = new ButtonView( this.locale );\n\n\t\tbutton.set( {\n\t\t\tlabel,\n\t\t\ticon,\n\t\t\ttooltip: true\n\t\t} );\n\n\t\tbutton.delegate( 'execute' ).to( this, eventName );\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Creates a link href preview button.\n\t *\n\t * @returns The button view instance.\n\t */\n\tprivate _createPreviewButton(): ButtonView {\n\t\tconst button = new ButtonView( this.locale );\n\t\tconst bind = this.bindTemplate;\n\t\tconst t = this.t;\n\n\t\tbutton.set( {\n\t\t\twithText: true,\n\t\t\ttooltip: t( 'Open link in new tab' )\n\t\t} );\n\n\t\tbutton.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-link-actions__preview'\n\t\t\t\t],\n\t\t\t\thref: bind.to( 'href', href => href && ensureSafeUrl( href ) ),\n\t\t\t\ttarget: '_blank',\n\t\t\t\trel: 'noopener noreferrer'\n\t\t\t}\n\t\t} );\n\n\t\tbutton.bind( 'label' ).to( this, 'href', href => {\n\t\t\treturn href || t( 'This link has no URL' );\n\t\t} );\n\n\t\tbutton.bind( 'isEnabled' ).to( this, 'href', href => !!href );\n\n\t\tbutton.template!.tag = 'a';\n\t\tbutton.template!.eventListeners = {};\n\n\t\treturn button;\n\t}\n}\n\n/**\n * Fired when the {@link ~LinkActionsView#editButtonView} is clicked.\n *\n * @eventName ~LinkActionsView#edit\n */\nexport type EditEvent = {\n\tname: 'edit';\n\targs: [];\n};\n\n/**\n * Fired when the {@link ~LinkActionsView#unlinkButtonView} is clicked.\n *\n * @eventName ~LinkActionsView#unlink\n */\nexport type UnlinkEvent = {\n\tname: 'unlink';\n\targs: [];\n};\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184zm4.919 10.562-1.414 1.414a.75.75 0 1 1-1.06-1.06l1.414-1.415-1.415-1.414a.75.75 0 0 1 1.061-1.06l1.414 1.414 1.414-1.415a.75.75 0 0 1 1.061 1.061l-1.414 1.414 1.414 1.415a.75.75 0 0 1-1.06 1.06l-1.415-1.414z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184z\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module link/linkui\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport {\n\tClickObserver,\n\ttype ViewAttributeElement,\n\ttype ViewDocumentClickEvent,\n\ttype ViewElement,\n\ttype ViewPosition\n} from 'ckeditor5/src/engine';\nimport {\n\tButtonView,\n\tContextualBalloon,\n\tclickOutsideHandler,\n\tCssTransitionDisablerMixin,\n\ttype ViewWithCssTransitionDisabler\n} from 'ckeditor5/src/ui';\nimport type { PositionOptions } from 'ckeditor5/src/utils';\nimport { isWidget } from 'ckeditor5/src/widget';\n\nimport LinkFormView from './ui/linkformview';\nimport LinkActionsView from './ui/linkactionsview';\nimport type LinkCommand from './linkcommand';\nimport type UnlinkCommand from './unlinkcommand';\nimport { addLinkProtocolIfApplicable, isLinkElement, LINK_KEYSTROKE } from './utils';\n\nimport linkIcon from '../theme/icons/link.svg';\n\nconst VISUAL_SELECTION_MARKER_NAME = 'link-ui';\n\n/**\n * The link UI plugin. It introduces the `'link'` and `'unlink'` buttons and support for the <kbd>Ctrl+K</kbd> keystroke.\n *\n * It uses the\n * {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon plugin}.\n */\nexport default class LinkUI extends Plugin {\n\t/**\n\t * The actions view displayed inside of the balloon.\n\t */\n\tpublic actionsView: LinkActionsView | null = null;\n\n\t/**\n\t * The form view displayed inside the balloon.\n\t */\n\tpublic formView: LinkFormView & ViewWithCssTransitionDisabler | null = null;\n\n\t/**\n\t * The contextual balloon plugin instance.\n\t */\n\tprivate _balloon!: ContextualBalloon;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ContextualBalloon ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'LinkUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.editing.view.addObserver( ClickObserver );\n\n\t\tthis._balloon = editor.plugins.get( ContextualBalloon );\n\n\t\t// Create toolbar buttons.\n\t\tthis._createToolbarLinkButton();\n\t\tthis._enableBalloonActivators();\n\n\t\t// Renders a fake visual selection marker on an expanded selection.\n\t\teditor.conversion.for( 'editingDowncast' ).markerToHighlight( {\n\t\t\tmodel: VISUAL_SELECTION_MARKER_NAME,\n\t\t\tview: {\n\t\t\t\tclasses: [ 'ck-fake-link-selection' ]\n\t\t\t}\n\t\t} );\n\n\t\t// Renders a fake visual selection marker on a collapsed selection.\n\t\teditor.conversion.for( 'editingDowncast' ).markerToElement( {\n\t\t\tmodel: VISUAL_SELECTION_MARKER_NAME,\n\t\t\tview: {\n\t\t\t\tname: 'span',\n\t\t\t\tclasses: [ 'ck-fake-link-selection', 'ck-fake-link-selection_collapsed' ]\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\t// Destroy created UI components as they are not automatically destroyed (see ckeditor5#1341).\n\t\tif ( this.formView ) {\n\t\t\tthis.formView.destroy();\n\t\t}\n\n\t\tif ( this.actionsView ) {\n\t\t\tthis.actionsView.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * Creates views.\n\t */\n\tprivate _createViews() {\n\t\tthis.actionsView = this._createActionsView();\n\t\tthis.formView = this._createFormView();\n\n\t\t// Attach lifecycle actions to the the balloon.\n\t\tthis._enableUserBalloonInteractions();\n\t}\n\n\t/**\n\t * Creates the {@link module:link/ui/linkactionsview~LinkActionsView} instance.\n\t */\n\tprivate _createActionsView(): LinkActionsView {\n\t\tconst editor = this.editor;\n\t\tconst actionsView = new LinkActionsView( editor.locale );\n\t\tconst linkCommand: LinkCommand = editor.commands.get( 'link' )!;\n\t\tconst unlinkCommand: UnlinkCommand = editor.commands.get( 'unlink' )!;\n\n\t\tactionsView.bind( 'href' ).to( linkCommand, 'value' );\n\t\tactionsView.editButtonView.bind( 'isEnabled' ).to( linkCommand );\n\t\tactionsView.unlinkButtonView.bind( 'isEnabled' ).to( unlinkCommand );\n\n\t\t// Execute unlink command after clicking on the \"Edit\" button.\n\t\tthis.listenTo( actionsView, 'edit', () => {\n\t\t\tthis._addFormView();\n\t\t} );\n\n\t\t// Execute unlink command after clicking on the \"Unlink\" button.\n\t\tthis.listenTo( actionsView, 'unlink', () => {\n\t\t\teditor.execute( 'unlink' );\n\t\t\tthis._hideUI();\n\t\t} );\n\n\t\t// Close the panel on esc key press when the **actions have focus**.\n\t\tactionsView.keystrokes.set( 'Esc', ( data, cancel ) => {\n\t\t\tthis._hideUI();\n\t\t\tcancel();\n\t\t} );\n\n\t\t// Open the form view on Ctrl+K when the **actions have focus**..\n\t\tactionsView.keystrokes.set( LINK_KEYSTROKE, ( data, cancel ) => {\n\t\t\tthis._addFormView();\n\t\t\tcancel();\n\t\t} );\n\n\t\treturn actionsView;\n\t}\n\n\t/**\n\t * Creates the {@link module:link/ui/linkformview~LinkFormView} instance.\n\t */\n\tprivate _createFormView(): LinkFormView & ViewWithCssTransitionDisabler {\n\t\tconst editor = this.editor;\n\t\tconst linkCommand: LinkCommand = editor.commands.get( 'link' )!;\n\t\tconst defaultProtocol = editor.config.get( 'link.defaultProtocol' );\n\n\t\tconst formView = new ( CssTransitionDisablerMixin( LinkFormView ) )( editor.locale, linkCommand );\n\n\t\tformView.urlInputView.fieldView.bind( 'value' ).to( linkCommand, 'value' );\n\n\t\t// Form elements should be read-only when corresponding commands are disabled.\n\t\tformView.urlInputView.bind( 'isEnabled' ).to( linkCommand, 'isEnabled' );\n\t\tformView.saveButtonView.bind( 'isEnabled' ).to( linkCommand );\n\n\t\t// Execute link command after clicking the \"Save\" button.\n\t\tthis.listenTo( formView, 'submit', () => {\n\t\t\tconst { value } = formView.urlInputView.fieldView.element!;\n\t\t\tconst parsedUrl = addLinkProtocolIfApplicable( value, defaultProtocol );\n\t\t\teditor.execute( 'link', parsedUrl, formView.getDecoratorSwitchesState() );\n\t\t\tthis._closeFormView();\n\t\t} );\n\n\t\t// Hide the panel after clicking the \"Cancel\" button.\n\t\tthis.listenTo( formView, 'cancel', () => {\n\t\t\tthis._closeFormView();\n\t\t} );\n\n\t\t// Close the panel on esc key press when the **form has focus**.\n\t\tformView.keystrokes.set( 'Esc', ( data, cancel ) => {\n\t\t\tthis._closeFormView();\n\t\t\tcancel();\n\t\t} );\n\n\t\treturn formView;\n\t}\n\n\t/**\n\t * Creates a toolbar Link button. Clicking this button will show\n\t * a {@link #_balloon} attached to the selection.\n\t */\n\tprivate _createToolbarLinkButton(): void {\n\t\tconst editor = this.editor;\n\t\tconst linkCommand: LinkCommand = editor.commands.get( 'link' )!;\n\t\tconst t = editor.t;\n\n\t\teditor.ui.componentFactory.add( 'link', locale => {\n\t\t\tconst button = new ButtonView( locale );\n\n\t\t\tbutton.isEnabled = true;\n\t\t\tbutton.label = t( 'Link' );\n\t\t\tbutton.icon = linkIcon;\n\t\t\tbutton.keystroke = LINK_KEYSTROKE;\n\t\t\tbutton.tooltip = true;\n\t\t\tbutton.isToggleable = true;\n\n\t\t\t// Bind button to the command.\n\t\t\tbutton.bind( 'isEnabled' ).to( linkCommand, 'isEnabled' );\n\t\t\tbutton.bind( 'isOn' ).to( linkCommand, 'value', value => !!value );\n\n\t\t\t// Show the panel on button click.\n\t\t\tthis.listenTo( button, 'execute', () => this._showUI( true ) );\n\n\t\t\treturn button;\n\t\t} );\n\t}\n\n\t/**\n\t * Attaches actions that control whether the balloon panel containing the\n\t * {@link #formView} should be displayed.\n\t */\n\tprivate _enableBalloonActivators(): void {\n\t\tconst editor = this.editor;\n\t\tconst viewDocument = editor.editing.view.document;\n\n\t\t// Handle click on view document and show panel when selection is placed inside the link element.\n\t\t// Keep panel open until selection will be inside the same link element.\n\t\tthis.listenTo<ViewDocumentClickEvent>( viewDocument, 'click', () => {\n\t\t\tconst parentLink = this._getSelectedLinkElement();\n\n\t\t\tif ( parentLink ) {\n\t\t\t\t// Then show panel but keep focus inside editor editable.\n\t\t\t\tthis._showUI();\n\t\t\t}\n\t\t} );\n\n\t\t// Handle the `Ctrl+K` keystroke and show the panel.\n\t\teditor.keystrokes.set( LINK_KEYSTROKE, ( keyEvtData, cancel ) => {\n\t\t\t// Prevent focusing the search bar in FF, Chrome and Edge. See https://github.com/ckeditor/ckeditor5/issues/4811.\n\t\t\tcancel();\n\n\t\t\tif ( editor.commands.get( 'link' )!.isEnabled ) {\n\t\t\t\tthis._showUI( true );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Attaches actions that control whether the balloon panel containing the\n\t * {@link #formView} is visible or not.\n\t */\n\tprivate _enableUserBalloonInteractions(): void {\n\t\t// Focus the form if the balloon is visible and the Tab key has been pressed.\n\t\tthis.editor.keystrokes.set( 'Tab', ( data, cancel ) => {\n\t\t\tif ( this._areActionsVisible && !this.actionsView!.focusTracker.isFocused ) {\n\t\t\t\tthis.actionsView!.focus();\n\t\t\t\tcancel();\n\t\t\t}\n\t\t}, {\n\t\t\t// Use the high priority because the link UI navigation is more important\n\t\t\t// than other feature's actions, e.g. list indentation.\n\t\t\t// https://github.com/ckeditor/ckeditor5-link/issues/146\n\t\t\tpriority: 'high'\n\t\t} );\n\n\t\t// Close the panel on the Esc key press when the editable has focus and the balloon is visible.\n\t\tthis.editor.keystrokes.set( 'Esc', ( data, cancel ) => {\n\t\t\tif ( this._isUIVisible ) {\n\t\t\t\tthis._hideUI();\n\t\t\t\tcancel();\n\t\t\t}\n\t\t} );\n\n\t\t// Close on click outside of balloon panel element.\n\t\tclickOutsideHandler( {\n\t\t\temitter: this.formView!,\n\t\t\tactivator: () => this._isUIInPanel,\n\t\t\tcontextElements: () => [ this._balloon.view.element! ],\n\t\t\tcallback: () => this._hideUI()\n\t\t} );\n\t}\n\n\t/**\n\t * Adds the {@link #actionsView} to the {@link #_balloon}.\n\t *\n\t * @internal\n\t */\n\tpublic _addActionsView(): void {\n\t\tif ( !this.actionsView ) {\n\t\t\tthis._createViews();\n\t\t}\n\n\t\tif ( this._areActionsInPanel ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._balloon.add( {\n\t\t\tview: this.actionsView!,\n\t\t\tposition: this._getBalloonPositionData()\n\t\t} );\n\t}\n\n\t/**\n\t * Adds the {@link #formView} to the {@link #_balloon}.\n\t */\n\tprivate _addFormView(): void {\n\t\tif ( !this.formView ) {\n\t\t\tthis._createViews();\n\t\t}\n\n\t\tif ( this._isFormInPanel ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst editor = this.editor;\n\t\tconst linkCommand: LinkCommand = editor.commands.get( 'link' )!;\n\n\t\tthis.formView!.disableCssTransitions();\n\n\t\tthis._balloon.add( {\n\t\t\tview: this.formView!,\n\t\t\tposition: this._getBalloonPositionData()\n\t\t} );\n\n\t\t// Select input when form view is currently visible.\n\t\tif ( this._balloon.visibleView === this.formView ) {\n\t\t\tthis.formView!.urlInputView.fieldView.select();\n\t\t}\n\n\t\tthis.formView!.enableCssTransitions();\n\n\t\t// Make sure that each time the panel shows up, the URL field remains in sync with the value of\n\t\t// the command. If the user typed in the input, then canceled the balloon (`urlInputView.fieldView#value` stays\n\t\t// unaltered) and re-opened it without changing the value of the link command (e.g. because they\n\t\t// clicked the same link), they would see the old value instead of the actual value of the command.\n\t\t// https://github.com/ckeditor/ckeditor5-link/issues/78\n\t\t// https://github.com/ckeditor/ckeditor5-link/issues/123\n\t\tthis.formView!.urlInputView.fieldView.element!.value = linkCommand.value || '';\n\t}\n\n\t/**\n\t * Closes the form view. Decides whether the balloon should be hidden completely or if the action view should be shown. This is\n\t * decided upon the link command value (which has a value if the document selection is in the link).\n\t *\n\t * Additionally, if any {@link module:link/linkconfig~LinkConfig#decorators} are defined in the editor configuration, the state of\n\t * switch buttons responsible for manual decorator handling is restored.\n\t */\n\tprivate _closeFormView(): void {\n\t\tconst linkCommand: LinkCommand = this.editor.commands.get( 'link' )!;\n\n\t\t// Restore manual decorator states to represent the current model state. This case is important to reset the switch buttons\n\t\t// when the user cancels the editing form.\n\t\tlinkCommand.restoreManualDecoratorStates();\n\n\t\tif ( linkCommand.value !== undefined ) {\n\t\t\tthis._removeFormView();\n\t\t} else {\n\t\t\tthis._hideUI();\n\t\t}\n\t}\n\n\t/**\n\t * Removes the {@link #formView} from the {@link #_balloon}.\n\t */\n\tprivate _removeFormView(): void {\n\t\tif ( this._isFormInPanel ) {\n\t\t\t// Blur the input element before removing it from DOM to prevent issues in some browsers.\n\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/1501.\n\t\t\tthis.formView!.saveButtonView.focus();\n\n\t\t\tthis._balloon.remove( this.formView! );\n\n\t\t\t// Because the form has an input which has focus, the focus must be brought back\n\t\t\t// to the editor. Otherwise, it would be lost.\n\t\t\tthis.editor.editing.view.focus();\n\n\t\t\tthis._hideFakeVisualSelection();\n\t\t}\n\t}\n\n\t/**\n\t * Shows the correct UI type. It is either {@link #formView} or {@link #actionsView}.\n\t *\n\t * @internal\n\t */\n\tpublic _showUI( forceVisible: boolean = false ): void {\n\t\tif ( !this.formView ) {\n\t\t\tthis._createViews();\n\t\t}\n\n\t\t// When there's no link under the selection, go straight to the editing UI.\n\t\tif ( !this._getSelectedLinkElement() ) {\n\t\t\t// Show visual selection on a text without a link when the contextual balloon is displayed.\n\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/4721.\n\t\t\tthis._showFakeVisualSelection();\n\n\t\t\tthis._addActionsView();\n\n\t\t\t// Be sure panel with link is visible.\n\t\t\tif ( forceVisible ) {\n\t\t\t\tthis._balloon.showStack( 'main' );\n\t\t\t}\n\n\t\t\tthis._addFormView();\n\t\t}\n\t\t// If there's a link under the selection...\n\t\telse {\n\t\t\t// Go to the editing UI if actions are already visible.\n\t\t\tif ( this._areActionsVisible ) {\n\t\t\t\tthis._addFormView();\n\t\t\t}\n\t\t\t// Otherwise display just the actions UI.\n\t\t\telse {\n\t\t\t\tthis._addActionsView();\n\t\t\t}\n\n\t\t\t// Be sure panel with link is visible.\n\t\t\tif ( forceVisible ) {\n\t\t\t\tthis._balloon.showStack( 'main' );\n\t\t\t}\n\t\t}\n\n\t\t// Begin responding to ui#update once the UI is added.\n\t\tthis._startUpdatingUI();\n\t}\n\n\t/**\n\t * Removes the {@link #formView} from the {@link #_balloon}.\n\t *\n\t * See {@link #_addFormView}, {@link #_addActionsView}.\n\t */\n\tprivate _hideUI(): void {\n\t\tif ( !this._isUIInPanel ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst editor = this.editor;\n\n\t\tthis.stopListening( editor.ui, 'update' );\n\t\tthis.stopListening( this._balloon, 'change:visibleView' );\n\n\t\t// Make sure the focus always gets back to the editable _before_ removing the focused form view.\n\t\t// Doing otherwise causes issues in some browsers. See https://github.com/ckeditor/ckeditor5-link/issues/193.\n\t\teditor.editing.view.focus();\n\n\t\t// Remove form first because it's on top of the stack.\n\t\tthis._removeFormView();\n\n\t\t// Then remove the actions view because it's beneath the form.\n\t\tthis._balloon.remove( this.actionsView! );\n\n\t\tthis._hideFakeVisualSelection();\n\t}\n\n\t/**\n\t * Makes the UI react to the {@link module:ui/editorui/editorui~EditorUI#event:update} event to\n\t * reposition itself when the editor UI should be refreshed.\n\t *\n\t * See: {@link #_hideUI} to learn when the UI stops reacting to the `update` event.\n\t */\n\tprivate _startUpdatingUI(): void {\n\t\tconst editor = this.editor;\n\t\tconst viewDocument = editor.editing.view.document;\n\n\t\tlet prevSelectedLink = this._getSelectedLinkElement();\n\t\tlet prevSelectionParent = getSelectionParent();\n\n\t\tconst update = () => {\n\t\t\tconst selectedLink = this._getSelectedLinkElement();\n\t\t\tconst selectionParent = getSelectionParent();\n\n\t\t\t// Hide the panel if:\n\t\t\t//\n\t\t\t// * the selection went out of the EXISTING link element. E.g. user moved the caret out\n\t\t\t// of the link,\n\t\t\t// * the selection went to a different parent when creating a NEW link. E.g. someone\n\t\t\t// else modified the document.\n\t\t\t// * the selection has expanded (e.g. displaying link actions then pressing SHIFT+Right arrow).\n\t\t\t//\n\t\t\t// Note: #_getSelectedLinkElement will return a link for a non-collapsed selection only\n\t\t\t// when fully selected.\n\t\t\tif ( ( prevSelectedLink && !selectedLink ) ||\n\t\t\t\t( !prevSelectedLink && selectionParent !== prevSelectionParent ) ) {\n\t\t\t\tthis._hideUI();\n\t\t\t}\n\t\t\t// Update the position of the panel when:\n\t\t\t// * link panel is in the visible stack\n\t\t\t// * the selection remains in the original link element,\n\t\t\t// * there was no link element in the first place, i.e. creating a new link\n\t\t\telse if ( this._isUIVisible ) {\n\t\t\t\t// If still in a link element, simply update the position of the balloon.\n\t\t\t\t// If there was no link (e.g. inserting one), the balloon must be moved\n\t\t\t\t// to the new position in the editing view (a new native DOM range).\n\t\t\t\tthis._balloon.updatePosition( this._getBalloonPositionData() );\n\t\t\t}\n\n\t\t\tprevSelectedLink = selectedLink;\n\t\t\tprevSelectionParent = selectionParent;\n\t\t};\n\n\t\tfunction getSelectionParent() {\n\t\t\treturn viewDocument.selection.focus!.getAncestors()\n\t\t\t\t.reverse()\n\t\t\t\t.find( ( node ): node is ViewElement => node.is( 'element' ) );\n\t\t}\n\n\t\tthis.listenTo( editor.ui, 'update', update );\n\t\tthis.listenTo( this._balloon, 'change:visibleView', update );\n\t}\n\n\t/**\n\t * Returns `true` when {@link #formView} is in the {@link #_balloon}.\n\t */\n\tprivate get _isFormInPanel(): boolean {\n\t\treturn !!this.formView && this._balloon.hasView( this.formView );\n\t}\n\n\t/**\n\t * Returns `true` when {@link #actionsView} is in the {@link #_balloon}.\n\t */\n\tprivate get _areActionsInPanel(): boolean {\n\t\treturn !!this.actionsView && this._balloon.hasView( this.actionsView );\n\t}\n\n\t/**\n\t * Returns `true` when {@link #actionsView} is in the {@link #_balloon} and it is\n\t * currently visible.\n\t */\n\tprivate get _areActionsVisible(): boolean {\n\t\treturn !!this.actionsView && this._balloon.visibleView === this.actionsView;\n\t}\n\n\t/**\n\t * Returns `true` when {@link #actionsView} or {@link #formView} is in the {@link #_balloon}.\n\t */\n\tprivate get _isUIInPanel(): boolean {\n\t\treturn this._isFormInPanel || this._areActionsInPanel;\n\t}\n\n\t/**\n\t * Returns `true` when {@link #actionsView} or {@link #formView} is in the {@link #_balloon} and it is\n\t * currently visible.\n\t */\n\tprivate get _isUIVisible(): boolean {\n\t\tconst visibleView = this._balloon.visibleView;\n\n\t\treturn !!this.formView && visibleView == this.formView || this._areActionsVisible;\n\t}\n\n\t/**\n\t * Returns positioning options for the {@link #_balloon}. They control the way the balloon is attached\n\t * to the target element or selection.\n\t *\n\t * If the selection is collapsed and inside a link element, the panel will be attached to the\n\t * entire link element. Otherwise, it will be attached to the selection.\n\t */\n\tprivate _getBalloonPositionData(): Partial<PositionOptions> {\n\t\tconst view = this.editor.editing.view;\n\t\tconst model = this.editor.model;\n\t\tconst viewDocument = view.document;\n\t\tlet target: PositionOptions[ 'target' ];\n\n\t\tif ( model.markers.has( VISUAL_SELECTION_MARKER_NAME ) ) {\n\t\t\t// There are cases when we highlight selection using a marker (#7705, #4721).\n\t\t\tconst markerViewElements = Array.from( this.editor.editing.mapper.markerNameToElements( VISUAL_SELECTION_MARKER_NAME )! );\n\t\t\tconst newRange = view.createRange(\n\t\t\t\tview.createPositionBefore( markerViewElements[ 0 ] ),\n\t\t\t\tview.createPositionAfter( markerViewElements[ markerViewElements.length - 1 ] )\n\t\t\t);\n\n\t\t\ttarget = view.domConverter.viewRangeToDom( newRange );\n\t\t} else {\n\t\t\t// Make sure the target is calculated on demand at the last moment because a cached DOM range\n\t\t\t// (which is very fragile) can desynchronize with the state of the editing view if there was\n\t\t\t// any rendering done in the meantime. This can happen, for instance, when an inline widget\n\t\t\t// gets unlinked.\n\t\t\ttarget = () => {\n\t\t\t\tconst targetLink = this._getSelectedLinkElement();\n\n\t\t\t\treturn targetLink ?\n\t\t\t\t\t// When selection is inside link element, then attach panel to this element.\n\t\t\t\t\tview.domConverter.mapViewToDom( targetLink )! :\n\t\t\t\t\t// Otherwise attach panel to the selection.\n\t\t\t\t\tview.domConverter.viewRangeToDom( viewDocument.selection.getFirstRange()! );\n\t\t\t};\n\t\t}\n\n\t\treturn { target };\n\t}\n\n\t/**\n\t * Returns the link {@link module:engine/view/attributeelement~AttributeElement} under\n\t * the {@link module:engine/view/document~Document editing view's} selection or `null`\n\t * if there is none.\n\t *\n\t * **Note**: For a non–collapsed selection, the link element is returned when **fully**\n\t * selected and the **only** element within the selection boundaries, or when\n\t * a linked widget is selected.\n\t */\n\tprivate _getSelectedLinkElement(): ViewAttributeElement | null {\n\t\tconst view = this.editor.editing.view;\n\t\tconst selection = view.document.selection;\n\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\t// The selection is collapsed or some widget is selected (especially inline widget).\n\t\tif ( selection.isCollapsed || selectedElement && isWidget( selectedElement ) ) {\n\t\t\treturn findLinkElementAncestor( selection.getFirstPosition()! );\n\t\t} else {\n\t\t\t// The range for fully selected link is usually anchored in adjacent text nodes.\n\t\t\t// Trim it to get closer to the actual link element.\n\t\t\tconst range = selection.getFirstRange()!.getTrimmed();\n\t\t\tconst startLink = findLinkElementAncestor( range.start );\n\t\t\tconst endLink = findLinkElementAncestor( range.end );\n\n\t\t\tif ( !startLink || startLink != endLink ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Check if the link element is fully selected.\n\t\t\tif ( view.createRangeIn( startLink ).getTrimmed().isEqual( range ) ) {\n\t\t\t\treturn startLink;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Displays a fake visual selection when the contextual balloon is displayed.\n\t *\n\t * This adds a 'link-ui' marker into the document that is rendered as a highlight on selected text fragment.\n\t */\n\tprivate _showFakeVisualSelection(): void {\n\t\tconst model = this.editor.model;\n\n\t\tmodel.change( writer => {\n\t\t\tconst range = model.document.selection.getFirstRange()!;\n\n\t\t\tif ( model.markers.has( VISUAL_SELECTION_MARKER_NAME ) ) {\n\t\t\t\twriter.updateMarker( VISUAL_SELECTION_MARKER_NAME, { range } );\n\t\t\t} else {\n\t\t\t\tif ( range.start.isAtEnd ) {\n\t\t\t\t\tconst startPosition = range.start.getLastMatchingPosition(\n\t\t\t\t\t\t( { item } ) => !model.schema.isContent( item ),\n\t\t\t\t\t\t{ boundaries: range }\n\t\t\t\t\t);\n\n\t\t\t\t\twriter.addMarker( VISUAL_SELECTION_MARKER_NAME, {\n\t\t\t\t\t\tusingOperation: false,\n\t\t\t\t\t\taffectsData: false,\n\t\t\t\t\t\trange: writer.createRange( startPosition, range.end )\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\twriter.addMarker( VISUAL_SELECTION_MARKER_NAME, {\n\t\t\t\t\t\tusingOperation: false,\n\t\t\t\t\t\taffectsData: false,\n\t\t\t\t\t\trange\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Hides the fake visual selection created in {@link #_showFakeVisualSelection}.\n\t */\n\tprivate _hideFakeVisualSelection(): void {\n\t\tconst model = this.editor.model;\n\n\t\tif ( model.markers.has( VISUAL_SELECTION_MARKER_NAME ) ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.removeMarker( VISUAL_SELECTION_MARKER_NAME );\n\t\t\t} );\n\t\t}\n\t}\n}\n\n/**\n * Returns a link element if there's one among the ancestors of the provided `Position`.\n *\n * @param View position to analyze.\n * @returns Link element at the position or null.\n */\nfunction findLinkElementAncestor( position: ViewPosition ): ViewAttributeElement | null {\n\treturn position.getAncestors().find( ( ancestor ): ancestor is ViewAttributeElement => isLinkElement( ancestor ) ) || null;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module link/autolink\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport type { DocumentSelectionChangeEvent, Element, Model, Range } from 'ckeditor5/src/engine';\nimport { Delete, TextWatcher, getLastTextLine, type TextWatcherMatchedDataEvent } from 'ckeditor5/src/typing';\nimport type { EnterCommand, ShiftEnterCommand } from 'ckeditor5/src/enter';\n\nimport { addLinkProtocolIfApplicable, linkHasProtocol } from './utils';\n\nconst MIN_LINK_LENGTH_WITH_SPACE_AT_END = 4; // Ie: \"t.co \" (length 5).\n\n// This was a tweak from https://gist.github.com/dperini/729294.\nconst URL_REG_EXP = new RegExp(\n\t// Group 1: Line start or after a space.\n\t'(^|\\\\s)' +\n\t// Group 2: Detected URL (or e-mail).\n\t'(' +\n\t\t// Protocol identifier or short syntax \"//\"\n\t\t// a. Full form http://user@foo.bar.baz:8080/foo/bar.html#baz?foo=bar\n\t\t'(' +\n\t\t\t'(?:(?:(?:https?|ftp):)?\\\\/\\\\/)' +\n\t\t\t// BasicAuth using user:pass (optional)\n\t\t\t'(?:\\\\S+(?::\\\\S*)?@)?' +\n\t\t\t'(?:' +\n\t\t\t\t// IP address dotted notation octets\n\t\t\t\t// excludes loopback network 0.0.0.0\n\t\t\t\t// excludes reserved space >= 224.0.0.0\n\t\t\t\t// excludes network & broadcast addresses\n\t\t\t\t// (first & last IP address of each class)\n\t\t\t\t'(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])' +\n\t\t\t\t'(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}' +\n\t\t\t\t'(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))' +\n\t\t\t\t'|' +\n\t\t\t\t'(' +\n\t\t\t\t\t// Do not allow `www.foo` - see https://github.com/ckeditor/ckeditor5/issues/8050.\n\t\t\t\t\t'((?!www\\\\.)|(www\\\\.))' +\n\t\t\t\t\t// Host & domain names.\n\t\t\t\t\t'(?![-_])(?:[-_a-z0-9\\\\u00a1-\\\\uffff]{1,63}\\\\.)+' +\n\t\t\t\t\t// TLD identifier name.\n\t\t\t\t\t'(?:[a-z\\\\u00a1-\\\\uffff]{2,63})' +\n\t\t\t\t')' +\n\t\t\t')' +\n\t\t\t// port number (optional)\n\t\t\t'(?::\\\\d{2,5})?' +\n\t\t\t// resource path (optional)\n\t\t\t'(?:[/?#]\\\\S*)?' +\n\t\t')' +\n\t\t'|' +\n\t\t// b. Short form (either www.example.com or example@example.com)\n\t\t'(' +\n\t\t\t'(www.|(\\\\S+@))' +\n\t\t\t// Host & domain names.\n\t\t\t'((?![-_])(?:[-_a-z0-9\\\\u00a1-\\\\uffff]{1,63}\\\\.))+' +\n\t\t\t// TLD identifier name.\n\t\t\t'(?:[a-z\\\\u00a1-\\\\uffff]{2,63})' +\n\t\t')' +\n\t')$', 'i' );\n\nconst URL_GROUP_IN_MATCH = 2;\n\n/**\n * The autolink plugin.\n */\nexport default class AutoLink extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Delete ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'AutoLink' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\n\t\tselection.on<DocumentSelectionChangeEvent>( 'change:range', () => {\n\t\t\t// Disable plugin when selection is inside a code block.\n\t\t\tthis.isEnabled = !selection.anchor!.parent.is( 'element', 'codeBlock' );\n\t\t} );\n\n\t\tthis._enableTypingHandling();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tthis._enableEnterHandling();\n\t\tthis._enableShiftEnterHandling();\n\t}\n\n\t/**\n\t * Enables autolinking on typing.\n\t */\n\tprivate _enableTypingHandling(): void {\n\t\tconst editor = this.editor;\n\n\t\tconst watcher = new TextWatcher( editor.model, text => {\n\t\t\t// 1. Detect <kbd>Space</kbd> after a text with a potential link.\n\t\t\tif ( !isSingleSpaceAtTheEnd( text ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// 2. Check text before last typed <kbd>Space</kbd>.\n\t\t\tconst url = getUrlAtTextEnd( text.substr( 0, text.length - 1 ) );\n\n\t\t\tif ( url ) {\n\t\t\t\treturn { url };\n\t\t\t}\n\t\t} );\n\n\t\twatcher.on<TextWatcherMatchedDataEvent<{ url: string }>>( 'matched:data', ( evt, data ) => {\n\t\t\tconst { batch, range, url } = data;\n\n\t\t\tif ( !batch.isTyping ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst linkEnd = range.end.getShiftedBy( -1 ); // Executed after a space character.\n\t\t\tconst linkStart = linkEnd.getShiftedBy( -url.length );\n\n\t\t\tconst linkRange = editor.model.createRange( linkStart, linkEnd );\n\n\t\t\tthis._applyAutoLink( url, linkRange );\n\t\t} );\n\n\t\twatcher.bind( 'isEnabled' ).to( this );\n\t}\n\n\t/**\n\t * Enables autolinking on the <kbd>Enter</kbd> key.\n\t */\n\tprivate _enableEnterHandling(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst enterCommand: EnterCommand | undefined = editor.commands.get( 'enter' );\n\n\t\tif ( !enterCommand ) {\n\t\t\treturn;\n\t\t}\n\n\t\tenterCommand.on( 'execute', () => {\n\t\t\tconst position = model.document.selection.getFirstPosition()!;\n\n\t\t\tif ( !position.parent.previousSibling ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst rangeToCheck = model.createRangeIn( position.parent.previousSibling as Element );\n\n\t\t\tthis._checkAndApplyAutoLinkOnRange( rangeToCheck );\n\t\t} );\n\t}\n\n\t/**\n\t * Enables autolinking on the <kbd>Shift</kbd>+<kbd>Enter</kbd> keyboard shortcut.\n\t */\n\tprivate _enableShiftEnterHandling(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\n\t\tconst shiftEnterCommand: ShiftEnterCommand | undefined = editor.commands.get( 'shiftEnter' );\n\n\t\tif ( !shiftEnterCommand ) {\n\t\t\treturn;\n\t\t}\n\n\t\tshiftEnterCommand.on( 'execute', () => {\n\t\t\tconst position = model.document.selection.getFirstPosition()!;\n\n\t\t\tconst rangeToCheck = model.createRange(\n\t\t\t\tmodel.createPositionAt( position.parent, 0 ),\n\t\t\t\tposition.getShiftedBy( -1 )\n\t\t\t);\n\n\t\t\tthis._checkAndApplyAutoLinkOnRange( rangeToCheck );\n\t\t} );\n\t}\n\n\t/**\n\t * Checks if the passed range contains a linkable text.\n\t */\n\tprivate _checkAndApplyAutoLinkOnRange( rangeToCheck: Range ): void {\n\t\tconst model = this.editor.model;\n\t\tconst { text, range } = getLastTextLine( rangeToCheck, model );\n\n\t\tconst url = getUrlAtTextEnd( text );\n\n\t\tif ( url ) {\n\t\t\tconst linkRange = model.createRange(\n\t\t\t\trange.end.getShiftedBy( -url.length ),\n\t\t\t\trange.end\n\t\t\t);\n\n\t\t\tthis._applyAutoLink( url, linkRange );\n\t\t}\n\t}\n\n\t/**\n\t * Applies a link on a given range if the link should be applied.\n\t *\n\t * @param url The URL to link.\n\t * @param range The text range to apply the link attribute to.\n\t */\n\tprivate _applyAutoLink( url: string, range: Range ): void {\n\t\tconst model = this.editor.model;\n\n\t\tconst defaultProtocol = this.editor.config.get( 'link.defaultProtocol' );\n\t\tconst fullUrl = addLinkProtocolIfApplicable( url, defaultProtocol );\n\n\t\tif ( !this.isEnabled || !isLinkAllowedOnRange( range, model ) || !linkHasProtocol( fullUrl ) || linkIsAlreadySet( range ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._persistAutoLink( fullUrl, range );\n\t}\n\n\t/**\n\t * Enqueues autolink changes in the model.\n\t *\n\t * @param url The URL to link.\n\t * @param range The text range to apply the link attribute to.\n\t */\n\tprivate _persistAutoLink( url: string, range: Range ): void {\n\t\tconst model = this.editor.model;\n\t\tconst deletePlugin = this.editor.plugins.get( 'Delete' );\n\n\t\t// Enqueue change to make undo step.\n\t\tmodel.enqueueChange( writer => {\n\t\t\twriter.setAttribute( 'linkHref', url, range );\n\n\t\t\tmodel.enqueueChange( () => {\n\t\t\t\tdeletePlugin.requestUndoOnBackspace();\n\t\t\t} );\n\t\t} );\n\t}\n}\n\n// Check if text should be evaluated by the plugin in order to reduce number of RegExp checks on whole text.\nfunction isSingleSpaceAtTheEnd( text: string ): boolean {\n\treturn text.length > MIN_LINK_LENGTH_WITH_SPACE_AT_END && text[ text.length - 1 ] === ' ' && text[ text.length - 2 ] !== ' ';\n}\n\nfunction getUrlAtTextEnd( text: string ): string | null {\n\tconst match = URL_REG_EXP.exec( text );\n\n\treturn match ? match[ URL_GROUP_IN_MATCH ] : null;\n}\n\nfunction isLinkAllowedOnRange( range: Range, model: Model ): boolean {\n\treturn model.schema.checkAttributeInSelection( model.createSelection( range ), 'linkHref' );\n}\n\nfunction linkIsAlreadySet( range: Range ): boolean {\n\tconst item = range.start.nodeAfter;\n\treturn !!item && item.hasAttribute( 'linkHref' );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module link/linkimageediting\n */\n\nimport {\n\tPlugin,\n\ttype Editor\n} from 'ckeditor5/src/core';\nimport {\n\tMatcher,\n\ttype UpcastElementEvent,\n\ttype Node,\n\ttype Element,\n\ttype DowncastAttributeEvent,\n\ttype ViewElement,\n\ttype DowncastDispatcher,\n\ttype UpcastDispatcher\n} from 'ckeditor5/src/engine';\nimport { toMap } from 'ckeditor5/src/utils';\n\nimport LinkEditing from './linkediting';\nimport type ManualDecorator from './utils/manualdecorator';\nimport type LinkCommand from './linkcommand';\n\nimport type { ImageUtils } from '@ckeditor/ckeditor5-image';\n\n/**\n * The link image engine feature.\n *\n * It accepts the `linkHref=\"url\"` attribute in the model for the {@link module:image/image~Image `<imageBlock>`} element\n * which allows linking images.\n */\nexport default class LinkImageEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ 'ImageEditing', 'ImageUtils', LinkEditing ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'LinkImageEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\tif ( editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\tschema.extend( 'imageBlock', { allowAttributes: [ 'linkHref' ] } );\n\t\t}\n\n\t\teditor.conversion.for( 'upcast' ).add( upcastLink( editor ) );\n\t\teditor.conversion.for( 'downcast' ).add( downcastImageLink( editor ) );\n\n\t\t// Definitions for decorators are provided by the `link` command and the `LinkEditing` plugin.\n\t\tthis._enableAutomaticDecorators();\n\t\tthis._enableManualDecorators();\n\t}\n\n\t/**\n\t * Processes {@link module:link/linkconfig~LinkDecoratorAutomaticDefinition automatic decorators} definitions and\n\t * attaches proper converters that will work when linking an image.`\n\t */\n\tprivate _enableAutomaticDecorators(): void {\n\t\tconst editor = this.editor;\n\t\tconst command: LinkCommand = editor.commands.get( 'link' )!;\n\t\tconst automaticDecorators = command.automaticDecorators;\n\n\t\tif ( automaticDecorators.length ) {\n\t\t\teditor.conversion.for( 'downcast' ).add( automaticDecorators.getDispatcherForLinkedImage() );\n\t\t}\n\t}\n\n\t/**\n\t * Processes transformed {@link module:link/utils/manualdecorator~ManualDecorator} instances and attaches proper converters\n\t * that will work when linking an image.\n\t */\n\tprivate _enableManualDecorators(): void {\n\t\tconst editor = this.editor;\n\t\tconst command: LinkCommand = editor.commands.get( 'link' )!;\n\n\t\tfor ( const decorator of command.manualDecorators ) {\n\t\t\tif ( editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\t\teditor.model.schema.extend( 'imageBlock', { allowAttributes: decorator.id } );\n\t\t\t}\n\n\t\t\tif ( editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\t\teditor.model.schema.extend( 'imageInline', { allowAttributes: decorator.id } );\n\t\t\t}\n\n\t\t\teditor.conversion.for( 'downcast' ).add( downcastImageLinkManualDecorator( decorator ) );\n\t\t\teditor.conversion.for( 'upcast' ).add( upcastImageLinkManualDecorator( editor, decorator ) );\n\t\t}\n\t}\n}\n\n/**\n * Returns a converter for linked block images that consumes the \"href\" attribute\n * if a link contains an image.\n *\n * @param editor The editor instance.\n */\nfunction upcastLink( editor: Editor ): ( dispatcher: UpcastDispatcher ) => void {\n\tconst isImageInlinePluginLoaded = editor.plugins.has( 'ImageInlineEditing' );\n\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\treturn dispatcher => {\n\t\tdispatcher.on<UpcastElementEvent>( 'element:a', ( evt, data, conversionApi ) => {\n\t\t\tconst viewLink = data.viewItem;\n\t\t\tconst imageInLink = imageUtils.findViewImgElement( viewLink );\n\n\t\t\tif ( !imageInLink ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst blockImageView = imageInLink.findAncestor( element => imageUtils.isBlockImageView( element ) );\n\n\t\t\t// There are four possible cases to consider here\n\t\t\t//\n\t\t\t// 1. A \"root > ... > figure.image > a > img\" structure.\n\t\t\t// 2. A \"root > ... > figure.image > a > picture > img\" structure.\n\t\t\t// 3. A \"root > ... > block > a > img\" structure.\n\t\t\t// 4. A \"root > ... > block > a > picture > img\" structure.\n\t\t\t//\n\t\t\t// but the last 2 cases should only be considered by this converter when the inline image plugin\n\t\t\t// is NOT loaded in the editor (because otherwise, that would be a plain, linked inline image).\n\t\t\tif ( isImageInlinePluginLoaded && !blockImageView ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// There's an image inside an <a> element - we consume it so it won't be picked up by the Link plugin.\n\t\t\tconst consumableAttributes = { attributes: [ 'href' ] };\n\n\t\t\t// Consume the `href` attribute so the default one will not convert it to $text attribute.\n\t\t\tif ( !conversionApi.consumable.consume( viewLink, consumableAttributes ) ) {\n\t\t\t\t// Might be consumed by something else - i.e. other converter with priority=highest - a standard check.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst linkHref = viewLink.getAttribute( 'href' );\n\n\t\t\t// Missing the 'href' attribute.\n\t\t\tif ( !linkHref ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// A full definition of the image feature.\n\t\t\t// figure > a > img: parent of the view link element is an image element (figure).\n\t\t\tlet modelElement: Node | null = data.modelCursor.parent as Node;\n\n\t\t\tif ( !modelElement.is( 'element', 'imageBlock' ) ) {\n\t\t\t\t// a > img: parent of the view link is not the image (figure) element. We need to convert it manually.\n\t\t\t\tconst conversionResult = conversionApi.convertItem( imageInLink, data.modelCursor );\n\n\t\t\t\t// Set image range as conversion result.\n\t\t\t\tdata.modelRange = conversionResult.modelRange;\n\n\t\t\t\t// Continue conversion where image conversion ends.\n\t\t\t\tdata.modelCursor = conversionResult.modelCursor;\n\n\t\t\t\tmodelElement = data.modelCursor.nodeBefore as Node;\n\t\t\t}\n\n\t\t\tif ( modelElement && modelElement.is( 'element', 'imageBlock' ) ) {\n\t\t\t\t// Set the linkHref attribute from link element on model image element.\n\t\t\t\tconversionApi.writer.setAttribute( 'linkHref', linkHref, modelElement );\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t\t// Using the same priority that `upcastImageLinkManualDecorator()` converter guarantees\n\t\t// that manual decorators will decorate the proper element.\n\t};\n}\n\n/**\n * Creates a converter that adds `<a>` to linked block image view elements.\n */\nfunction downcastImageLink( editor: Editor ): ( dispatcher: DowncastDispatcher ) => void {\n\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\treturn dispatcher => {\n\t\tdispatcher.on<DowncastAttributeEvent<Element>>( 'attribute:linkHref:imageBlock', ( evt, data, conversionApi ) => {\n\t\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// The image will be already converted - so it will be present in the view.\n\t\t\tconst viewFigure = conversionApi.mapper.toViewElement( data.item )!;\n\t\t\tconst writer = conversionApi.writer;\n\n\t\t\t// But we need to check whether the link element exists.\n\t\t\tconst linkInImage = Array.from( viewFigure.getChildren() )\n\t\t\t\t.find( ( child ): child is ViewElement => child.is( 'element', 'a' ) );\n\t\t\tconst viewImage = imageUtils.findViewImgElement( viewFigure )!;\n\t\t\t// <picture>...<img/></picture> or <img/>\n\t\t\tconst viewImgOrPicture = viewImage.parent!.is( 'element', 'picture' ) ? viewImage.parent : viewImage;\n\n\t\t\t// If so, update the attribute if it's defined or remove the entire link if the attribute is empty.\n\t\t\tif ( linkInImage ) {\n\t\t\t\tif ( data.attributeNewValue ) {\n\t\t\t\t\twriter.setAttribute( 'href', data.attributeNewValue, linkInImage );\n\t\t\t\t} else {\n\t\t\t\t\twriter.move( writer.createRangeOn( viewImgOrPicture ), writer.createPositionAt( viewFigure, 0 ) );\n\t\t\t\t\twriter.remove( linkInImage );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// But if it does not exist. Let's wrap already converted image by newly created link element.\n\t\t\t\t// 1. Create an empty link element.\n\t\t\t\tconst linkElement = writer.createContainerElement( 'a', { href: data.attributeNewValue } );\n\n\t\t\t\t// 2. Insert link inside the associated image.\n\t\t\t\twriter.insert( writer.createPositionAt( viewFigure, 0 ), linkElement );\n\n\t\t\t\t// 3. Move the image to the link.\n\t\t\t\twriter.move( writer.createRangeOn( viewImgOrPicture ), writer.createPositionAt( linkElement, 0 ) );\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t};\n}\n\n/**\n * Returns a converter that decorates the `<a>` element when the image is the link label.\n */\nfunction downcastImageLinkManualDecorator( decorator: ManualDecorator ): ( dispatcher: DowncastDispatcher ) => void {\n\treturn dispatcher => {\n\t\tdispatcher.on<DowncastAttributeEvent<Element>>( `attribute:${ decorator.id }:imageBlock`, ( evt, data, conversionApi ) => {\n\t\t\tconst viewFigure = conversionApi.mapper.toViewElement( data.item )!;\n\t\t\tconst linkInImage = Array.from( viewFigure.getChildren() )\n\t\t\t\t.find( ( child ): child is ViewElement => child.is( 'element', 'a' ) );\n\n\t\t\t// The <a> element was removed by the time this converter is executed.\n\t\t\t// It may happen when the base `linkHref` and decorator attributes are removed\n\t\t\t// at the same time (see #8401).\n\t\t\tif ( !linkInImage ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor ( const [ key, val ] of toMap( decorator.attributes ) ) {\n\t\t\t\tconversionApi.writer.setAttribute( key, val, linkInImage );\n\t\t\t}\n\n\t\t\tif ( decorator.classes ) {\n\t\t\t\tconversionApi.writer.addClass( decorator.classes, linkInImage );\n\t\t\t}\n\n\t\t\tfor ( const key in decorator.styles ) {\n\t\t\t\tconversionApi.writer.setStyle( key, decorator.styles[ key ], linkInImage );\n\t\t\t}\n\t\t} );\n\t};\n}\n\n/**\n * Returns a converter that checks whether manual decorators should be applied to the link.\n */\nfunction upcastImageLinkManualDecorator( editor: Editor, decorator: ManualDecorator ): ( dispatcher: UpcastDispatcher ) => void {\n\tconst isImageInlinePluginLoaded = editor.plugins.has( 'ImageInlineEditing' );\n\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\treturn dispatcher => {\n\t\tdispatcher.on<UpcastElementEvent>( 'element:a', ( evt, data, conversionApi ) => {\n\t\t\tconst viewLink = data.viewItem;\n\t\t\tconst imageInLink = imageUtils.findViewImgElement( viewLink );\n\n\t\t\t// We need to check whether an image is inside a link because the converter handles\n\t\t\t// only manual decorators for linked images. See #7975.\n\t\t\tif ( !imageInLink ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst blockImageView = imageInLink.findAncestor( element => imageUtils.isBlockImageView( element ) );\n\n\t\t\tif ( isImageInlinePluginLoaded && !blockImageView ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst matcher = new Matcher( decorator._createPattern() );\n\t\t\tconst result = matcher.match( viewLink );\n\n\t\t\t// The link element does not have required attributes or/and proper values.\n\t\t\tif ( !result ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Check whether we can consume those attributes.\n\t\t\tif ( !conversionApi.consumable.consume( viewLink, result.match ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// At this stage we can assume that we have the `<imageBlock>` element.\n\t\t\t// `nodeBefore` comes after conversion: `<a><img></a>`.\n\t\t\t// `parent` comes with full image definition: `<figure><a><img></a></figure>.\n\t\t\t// See the body of the `upcastLink()` function.\n\t\t\tconst modelElement = data.modelCursor.nodeBefore as Element || data.modelCursor.parent;\n\n\t\t\tconversionApi.writer.setAttribute( decorator.id, true, modelElement );\n\t\t}, { priority: 'high' } );\n\t\t// Using the same priority that `upcastLink()` converter guarantees that the linked image was properly converted.\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module link/linkimageui\n */\n\nimport { ButtonView } from 'ckeditor5/src/ui';\nimport { Plugin } from 'ckeditor5/src/core';\nimport type {\n\tDocumentSelection,\n\tSelection,\n\tViewDocumentClickEvent\n} from 'ckeditor5/src/engine';\n\nimport type { ImageUtils } from '@ckeditor/ckeditor5-image';\n\nimport LinkUI from './linkui';\nimport LinkEditing from './linkediting';\nimport type LinkCommand from './linkcommand';\n\nimport { LINK_KEYSTROKE } from './utils';\n\nimport linkIcon from '../theme/icons/link.svg';\n\n/**\n * The link image UI plugin.\n *\n * This plugin provides the `'linkImage'` button that can be displayed in the {@link module:image/imagetoolbar~ImageToolbar}.\n * It can be used to wrap images in links.\n */\nexport default class LinkImageUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ LinkEditing, LinkUI, 'ImageBlockEditing' ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'LinkImageUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst viewDocument = editor.editing.view.document;\n\n\t\tthis.listenTo<ViewDocumentClickEvent>( viewDocument, 'click', ( evt, data ) => {\n\t\t\tif ( this._isSelectedLinkedImage( editor.model.document.selection ) ) {\n\t\t\t\t// Prevent browser navigation when clicking a linked image.\n\t\t\t\tdata.preventDefault();\n\n\t\t\t\t// Block the `LinkUI` plugin when an image was clicked.\n\t\t\t\t// In such a case, we'd like to display the image toolbar.\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\n\t\tthis._createToolbarLinkImageButton();\n\t}\n\n\t/**\n\t * Creates a `LinkImageUI` button view.\n\t *\n\t * Clicking this button shows a {@link module:link/linkui~LinkUI#_balloon} attached to the selection.\n\t * When an image is already linked, the view shows {@link module:link/linkui~LinkUI#actionsView} or\n\t * {@link module:link/linkui~LinkUI#formView} if it is not.\n\t */\n\tprivate _createToolbarLinkImageButton(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\teditor.ui.componentFactory.add( 'linkImage', locale => {\n\t\t\tconst button = new ButtonView( locale );\n\t\t\tconst plugin = editor.plugins.get( 'LinkUI' );\n\t\t\tconst linkCommand: LinkCommand = editor.commands.get( 'link' )!;\n\n\t\t\tbutton.set( {\n\t\t\t\tisEnabled: true,\n\t\t\t\tlabel: t( 'Link image' ),\n\t\t\t\ticon: linkIcon,\n\t\t\t\tkeystroke: LINK_KEYSTROKE,\n\t\t\t\ttooltip: true,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\t// Bind button to the command.\n\t\t\tbutton.bind( 'isEnabled' ).to( linkCommand, 'isEnabled' );\n\t\t\tbutton.bind( 'isOn' ).to( linkCommand, 'value', value => !!value );\n\n\t\t\t// Show the actionsView or formView (both from LinkUI) on button click depending on whether the image is linked already.\n\t\t\tthis.listenTo( button, 'execute', () => {\n\t\t\t\tif ( this._isSelectedLinkedImage( editor.model.document.selection ) ) {\n\t\t\t\t\tplugin._addActionsView();\n\t\t\t\t} else {\n\t\t\t\t\tplugin._showUI( true );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn button;\n\t\t} );\n\t}\n\n\t/**\n\t * Returns true if a linked image (either block or inline) is the only selected element\n\t * in the model document.\n\t */\n\tprivate _isSelectedLinkedImage( selection: DocumentSelection | Selection ): boolean {\n\t\tconst selectedModelElement = selection.getSelectedElement();\n\t\tconst imageUtils: ImageUtils = this.editor.plugins.get( 'ImageUtils' );\n\n\t\treturn imageUtils.isImage( selectedModelElement ) && selectedModelElement.hasAttribute( 'linkHref' );\n\t}\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./linkimage.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module list/documentlist/utils/listwalker\n */\n\nimport { first, toArray, type ArrayOrItem } from 'ckeditor5/src/utils';\nimport { isListItemBlock, type ListElement } from './model';\n\nimport type { DocumentFragment, Element, Node } from 'ckeditor5/src/engine';\n\n/**\n * Document list blocks iterator.\n */\nexport default class ListWalker {\n\t/**\n\t * The start list item block element.\n\t */\n\tprivate _startElement: Node;\n\n\t/**\n\t * The reference indent. Initialized by the indent of the start block.\n\t */\n\tprivate _referenceIndent: number;\n\n\t/**\n\t * The iterating direction.\n\t */\n\tprivate _isForward: boolean;\n\n\t/**\n\t * Whether start block should be included in the result (if it's matching other criteria).\n\t */\n\tprivate _includeSelf: boolean;\n\n\t/**\n\t * Additional attributes that must be the same for each block.\n\t */\n\tprivate _sameAttributes: Array<string>;\n\n\t/**\n\t * Whether blocks with the same indent level as the start block should be included in the result.\n\t */\n\tprivate _sameIndent: boolean;\n\n\t/**\n\t * Whether blocks with a lower indent level than the start block should be included in the result.\n\t */\n\tprivate _lowerIndent: boolean;\n\n\t/**\n\t * Whether blocks with a higher indent level than the start block should be included in the result.\n\t */\n\tprivate _higherIndent: boolean;\n\n\t/**\n\t * Creates a document list iterator.\n\t *\n\t * @param startElement The start list item block element.\n\t * @param options.direction The iterating direction.\n\t * @param options.includeSelf Whether start block should be included in the result (if it's matching other criteria).\n\t * @param options.sameAttributes Additional attributes that must be the same for each block.\n\t * @param options.sameIndent Whether blocks with the same indent level as the start block should be included\n\t * in the result.\n\t * @param options.lowerIndent Whether blocks with a lower indent level than the start block should be included\n\t * in the result.\n\t * @param options.higherIndent Whether blocks with a higher indent level than the start block should be included\n\t * in the result.\n\t */\n\tconstructor(\n\t\tstartElement: Node,\n\t\toptions: {\n\t\t\tdirection?: 'forward' | 'backward';\n\t\t\tincludeSelf?: boolean;\n\t\t\tsameAttributes?: ArrayOrItem<string>;\n\t\t\tsameIndent?: boolean;\n\t\t\tlowerIndent?: boolean;\n\t\t\thigherIndent?: boolean;\n\t\t}\n\t) {\n\t\tthis._startElement = startElement;\n\t\tthis._referenceIndent = startElement.getAttribute( 'listIndent' ) as number;\n\t\tthis._isForward = options.direction == 'forward';\n\t\tthis._includeSelf = !!options.includeSelf;\n\t\tthis._sameAttributes = toArray( options.sameAttributes || [] );\n\t\tthis._sameIndent = !!options.sameIndent;\n\t\tthis._lowerIndent = !!options.lowerIndent;\n\t\tthis._higherIndent = !!options.higherIndent;\n\t}\n\n\t/**\n\t * Performs only first step of iteration and returns the result.\n\t *\n\t * @param startElement The start list item block element.\n\t * @param options.direction The iterating direction.\n\t * @param options.includeSelf Whether start block should be included in the result (if it's matching other criteria).\n\t * @param options.sameAttributes Additional attributes that must be the same for each block.\n\t * @param options.sameIndent Whether blocks with the same indent level as the start block should be included\n\t * in the result.\n\t * @param options.lowerIndent Whether blocks with a lower indent level than the start block should be included\n\t * in the result.\n\t * @param options.higherIndent Whether blocks with a higher indent level than the start block should be included\n\t * in the result.\n\t */\n\tpublic static first(\n\t\tstartElement: Node,\n\t\toptions: {\n\t\t\tdirection?: 'forward' | 'backward';\n\t\t\tincludeSelf?: boolean;\n\t\t\tsameAttributes?: ArrayOrItem<string>;\n\t\t\tsameIndent?: boolean;\n\t\t\tlowerIndent?: boolean;\n\t\t\thigherIndent?: boolean;\n\t\t}\n\t): ListElement | null {\n\t\tconst walker = new this( startElement, options );\n\t\tconst iterator = walker[ Symbol.iterator ]();\n\n\t\treturn first( iterator );\n\t}\n\n\t/**\n\t * Iterable interface.\n\t */\n\tpublic* [ Symbol.iterator ](): Iterator<ListElement> {\n\t\tconst nestedItems: Array<ListElement> = [];\n\n\t\tfor ( const { node } of iterateSiblingListBlocks( this._getStartNode(), this._isForward ? 'forward' : 'backward' ) ) {\n\t\t\tconst indent = node.getAttribute( 'listIndent' );\n\n\t\t\t// Leaving a nested list.\n\t\t\tif ( indent < this._referenceIndent ) {\n\t\t\t\t// Abort searching blocks.\n\t\t\t\tif ( !this._lowerIndent ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t// While searching for lower indents, update the reference indent to find another parent in the next step.\n\t\t\t\tthis._referenceIndent = indent;\n\t\t\t}\n\t\t\t// Entering a nested list.\n\t\t\telse if ( indent > this._referenceIndent ) {\n\t\t\t\t// Ignore nested blocks.\n\t\t\t\tif ( !this._higherIndent ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Collect nested blocks to verify if they are really nested, or it's a different item.\n\t\t\t\tif ( !this._isForward ) {\n\t\t\t\t\tnestedItems.push( node );\n\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Same indent level block.\n\t\t\telse {\n\t\t\t\t// Ignore same indent block.\n\t\t\t\tif ( !this._sameIndent ) {\n\t\t\t\t\t// While looking for nested blocks, stop iterating while encountering first same indent block.\n\t\t\t\t\tif ( this._higherIndent ) {\n\t\t\t\t\t\t// No more nested blocks so yield nested items.\n\t\t\t\t\t\tif ( nestedItems.length ) {\n\t\t\t\t\t\t\tyield* nestedItems;\n\t\t\t\t\t\t\tnestedItems.length = 0;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Abort if item has any additionally specified attribute different.\n\t\t\t\tif ( this._sameAttributes.some( attr => node.getAttribute( attr ) !== this._startElement.getAttribute( attr ) ) ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// There is another block for the same list item so the nested items were in the same list item.\n\t\t\tif ( nestedItems.length ) {\n\t\t\t\tyield* nestedItems;\n\t\t\t\tnestedItems.length = 0;\n\t\t\t}\n\n\t\t\tyield node;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the model element to start iterating.\n\t */\n\tprivate _getStartNode() {\n\t\tif ( this._includeSelf ) {\n\t\t\treturn this._startElement;\n\t\t}\n\n\t\treturn this._isForward ?\n\t\t\tthis._startElement.nextSibling :\n\t\t\tthis._startElement.previousSibling;\n\t}\n}\n\n/**\n * Iterates sibling list blocks starting from the given node.\n *\n * @internal\n * @param node The model node.\n * @param direction Iteration direction.\n * @returns The object with `node` and `previous` {@link module:engine/model/element~Element blocks}.\n */\nexport function* iterateSiblingListBlocks(\n\tnode: Node | null,\n\tdirection: 'forward' | 'backward' = 'forward'\n): IterableIterator<ListIteratorValue> {\n\tconst isForward = direction == 'forward';\n\tlet previous = null;\n\n\twhile ( isListItemBlock( node ) ) {\n\t\tyield { node, previous };\n\n\t\tprevious = node;\n\t\tnode = isForward ? node.nextSibling : node.previousSibling;\n\t}\n}\n\n/**\n * The iterable protocol over the list elements.\n *\n * @internal\n */\nexport class ListBlocksIterable {\n\tprivate _listHead: Element;\n\n\t/**\n\t * @param listHead The head element of a list.\n\t */\n\tconstructor( listHead: Element ) {\n\t\tthis._listHead = listHead;\n\t}\n\n\t/**\n\t * List blocks iterator.\n\t *\n\t * Iterates over all blocks of a list.\n\t */\n\tpublic [ Symbol.iterator ](): Iterator<ListIteratorValue> {\n\t\treturn iterateSiblingListBlocks( this._listHead, 'forward' );\n\t}\n}\n\n/**\n * Object returned by `iterateSiblingListBlocks()` when traversing a list.\n *\n * @internal\n */\nexport interface ListIteratorValue {\n\n\t/**\n\t * The current list node.\n\t */\n\tnode: ListElement;\n\n\t/**\n\t * The previous list node.\n\t */\n\tprevious: ListElement | null;\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./documentlist.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./list.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module list/list/utils\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\n\nimport {\n\tTreeWalker,\n\tgetFillerOffset,\n\ttype DowncastConversionApi,\n\ttype DowncastWriter,\n\ttype Element,\n\ttype Item,\n\ttype Model,\n\ttype Position,\n\ttype ViewContainerElement,\n\ttype ViewElement,\n\ttype ViewItem,\n\ttype ViewPosition\n} from 'ckeditor5/src/engine';\n\nimport { ButtonView, type ButtonExecuteEvent } from 'ckeditor5/src/ui';\n\n/**\n * Creates a list item {@link module:engine/view/containerelement~ContainerElement}.\n *\n * @param writer The writer instance.\n */\nexport function createViewListItemElement( writer: DowncastWriter ): ViewContainerElement {\n\tconst viewItem = writer.createContainerElement( 'li' );\n\n\tviewItem.getFillerOffset = getListItemFillerOffset;\n\n\treturn viewItem;\n}\n\n/**\n * Helper function that creates a `<ul><li></li></ul>` or (`<ol>`) structure out of the given `modelItem` model `listItem` element.\n * Then, it binds the created view list item (`<li>`) with the model `listItem` element.\n * The function then returns the created view list item (`<li>`).\n *\n * @param modelItem Model list item.\n * @param conversionApi Conversion interface.\n * @returns View list element.\n */\nexport function generateLiInUl( modelItem: Item, conversionApi: DowncastConversionApi ): ViewContainerElement {\n\tconst mapper = conversionApi.mapper;\n\tconst viewWriter = conversionApi.writer;\n\tconst listType = modelItem.getAttribute( 'listType' ) == 'numbered' ? 'ol' : 'ul';\n\tconst viewItem = createViewListItemElement( viewWriter );\n\n\tconst viewList = viewWriter.createContainerElement( listType, null );\n\n\tviewWriter.insert( viewWriter.createPositionAt( viewList, 0 ), viewItem );\n\n\tmapper.bindElements( modelItem as any, viewItem );\n\n\treturn viewItem;\n}\n\n/**\n * Helper function that inserts a view list at a correct place and merges it with its siblings.\n * It takes a model list item element (`modelItem`) and a corresponding view list item element (`injectedItem`). The view list item\n * should be in a view list element (`<ul>` or `<ol>`) and should be its only child.\n * See comments below to better understand the algorithm.\n *\n * @param modelItem Model list item.\n * @param injectedItem\n * @param conversionApi Conversion interface.\n * @param model The model instance.\n */\nexport function injectViewList(\n\tmodelItem: Element,\n\tinjectedItem: ViewContainerElement,\n\tconversionApi: DowncastConversionApi,\n\tmodel: Model\n): void {\n\tconst injectedList = injectedItem.parent as ViewElement;\n\tconst mapper = conversionApi.mapper;\n\tconst viewWriter = conversionApi.writer;\n\n\t// The position where the view list will be inserted.\n\tlet insertPosition = mapper.toViewPosition( model.createPositionBefore( modelItem ) );\n\n\t// 1. Find the previous list item that has the same or smaller indent. Basically we are looking for the first model item\n\t// that is a \"parent\" or \"sibling\" of the injected model item.\n\t// If there is no such list item, it means that the injected list item is the first item in \"its list\".\n\tconst refItem = getSiblingListItem( modelItem.previousSibling, {\n\t\tsameIndent: true,\n\t\tsmallerIndent: true,\n\t\tlistIndent: modelItem.getAttribute( 'listIndent' ) as number\n\t} );\n\tconst prevItem = modelItem.previousSibling as Element | null;\n\n\tif ( refItem && refItem.getAttribute( 'listIndent' ) == modelItem.getAttribute( 'listIndent' ) ) {\n\t\t// There is a list item with the same indent - we found the same-level sibling.\n\t\t// Break the list after it. The inserted view item will be added in the broken space.\n\t\tconst viewItem = mapper.toViewElement( refItem )!;\n\t\tinsertPosition = viewWriter.breakContainer( viewWriter.createPositionAfter( viewItem ) );\n\t} else {\n\t\t// There is no list item with the same indent. Check the previous model item.\n\t\tif ( prevItem && prevItem.name == 'listItem' ) {\n\t\t\t// If it is a list item, it has to have a lower indent.\n\t\t\t// It means that the inserted item should be added to it as its nested item.\n\t\t\tinsertPosition = mapper.toViewPosition( model.createPositionAt( prevItem, 'end' ) );\n\n\t\t\t// There could be some not mapped elements (eg. span in to-do list) but we need to insert\n\t\t\t// a nested list directly inside the li element.\n\t\t\tconst mappedViewAncestor = mapper.findMappedViewAncestor( insertPosition );\n\t\t\tconst nestedList = findNestedList( mappedViewAncestor );\n\n\t\t\t// If there already is some nested list, then use it's position.\n\t\t\tif ( nestedList ) {\n\t\t\t\tinsertPosition = viewWriter.createPositionBefore( nestedList );\n\t\t\t} else {\n\t\t\t\t// Else just put new list on the end of list item content.\n\t\t\t\tinsertPosition = viewWriter.createPositionAt( mappedViewAncestor, 'end' );\n\t\t\t}\n\t\t} else {\n\t\t\t// The previous item is not a list item (or does not exist at all).\n\t\t\t// Just map the position and insert the view item at the mapped position.\n\t\t\tinsertPosition = mapper.toViewPosition( model.createPositionBefore( modelItem ) );\n\t\t}\n\t}\n\n\tinsertPosition = positionAfterUiElements( insertPosition );\n\n\t// Insert the view item.\n\tviewWriter.insert( insertPosition, injectedList );\n\n\t// 2. Handle possible children of the injected model item.\n\tif ( prevItem && prevItem.name == 'listItem' ) {\n\t\tconst prevView = mapper.toViewElement( prevItem )!;\n\n\t\tconst walkerBoundaries = viewWriter.createRange( viewWriter.createPositionAt( prevView, 0 ), insertPosition );\n\t\tconst walker = walkerBoundaries.getWalker( { ignoreElementEnd: true } );\n\n\t\tfor ( const value of walker ) {\n\t\t\tif ( value.item.is( 'element', 'li' ) ) {\n\t\t\t\tconst breakPosition = viewWriter.breakContainer( viewWriter.createPositionBefore( value.item ) );\n\t\t\t\tconst viewList = value.item.parent as ViewElement;\n\n\t\t\t\tconst targetPosition = viewWriter.createPositionAt( injectedItem, 'end' );\n\t\t\t\tmergeViewLists( viewWriter, targetPosition.nodeBefore!, targetPosition.nodeAfter! );\n\t\t\t\tviewWriter.move( viewWriter.createRangeOn( viewList ), targetPosition );\n\n\t\t\t\t// This is bad, but those lists will be removed soon anyway.\n\t\t\t\t( walker as any )._position = breakPosition;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst nextViewList = injectedList.nextSibling;\n\n\t\tif ( nextViewList && ( nextViewList.is( 'element', 'ul' ) || nextViewList.is( 'element', 'ol' ) ) ) {\n\t\t\tlet lastSubChild = null;\n\n\t\t\tfor ( const child of nextViewList.getChildren() as Iterable<ViewElement> ) {\n\t\t\t\tconst modelChild = mapper.toModelElement( child );\n\n\t\t\t\tif (\n\t\t\t\t\tmodelChild &&\n\t\t\t\t\t( modelChild.getAttribute( 'listIndent' ) as number ) > ( modelItem.getAttribute( 'listIndent' ) as number )\n\t\t\t\t) {\n\t\t\t\t\tlastSubChild = child;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( lastSubChild ) {\n\t\t\t\tviewWriter.breakContainer( viewWriter.createPositionAfter( lastSubChild ) );\n\t\t\t\tviewWriter.move(\n\t\t\t\t\tviewWriter.createRangeOn( lastSubChild.parent as any ),\n\t\t\t\t\tviewWriter.createPositionAt( injectedItem, 'end' )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Merge the inserted view list with its possible neighbor lists.\n\tmergeViewLists( viewWriter, injectedList, injectedList.nextSibling! );\n\tmergeViewLists( viewWriter, injectedList.previousSibling!, injectedList );\n}\n\n/**\n * Helper function that takes two parameters that are expected to be view list elements, and merges them.\n * The merge happens only if both parameters are list elements of the same type (the same element name and the same class attributes).\n *\n * @param viewWriter The writer instance.\n * @param firstList The first element to compare.\n * @param secondList The second element to compare.\n * @returns The position after merge or `null` when there was no merge.\n */\nexport function mergeViewLists(\n\tviewWriter: DowncastWriter,\n\tfirstList: ViewItem,\n\tsecondList: ViewItem\n): ViewPosition | null;\n\nexport function mergeViewLists(\n\tviewWriter: DowncastWriter,\n\tfirstList: any,\n\tsecondList: any\n): ViewPosition | null {\n\t// Check if two lists are going to be merged.\n\tif ( !firstList || !secondList || ( firstList.name != 'ul' && firstList.name != 'ol' ) ) {\n\t\treturn null;\n\t}\n\n\t// Both parameters are list elements, so compare types now.\n\tif ( firstList.name != secondList.name || firstList.getAttribute( 'class' ) !== secondList.getAttribute( 'class' ) ) {\n\t\treturn null;\n\t}\n\n\treturn viewWriter.mergeContainers( viewWriter.createPositionAfter( firstList ) );\n}\n\n/**\n * Helper function that for a given `view.Position`, returns a `view.Position` that is after all `view.UIElement`s that\n * are after the given position.\n *\n * For example:\n * `<container:p>foo^<ui:span></ui:span><ui:span></ui:span>bar</container:p>`\n * For position ^, the position before \"bar\" will be returned.\n *\n */\nexport function positionAfterUiElements( viewPosition: ViewPosition ): ViewPosition {\n\treturn viewPosition.getLastMatchingPosition( value => value.item.is( 'uiElement' ) );\n}\n\n/**\n * Helper function that searches for a previous list item sibling of a given model item that meets the given criteria\n * passed by the options object.\n *\n * @param options Search criteria.\n * @param options.sameIndent Whether the sought sibling should have the same indentation.\n * @param options.smallerIndent Whether the sought sibling should have a smaller indentation.\n * @param options.listIndent The reference indentation.\n * @param options.direction Walking direction.\n */\nexport function getSiblingListItem(\n\tmodelItem: Item | null,\n\toptions: {\n\t\tsameIndent?: boolean;\n\t\tsmallerIndent?: boolean;\n\t\tlistIndent?: number;\n\t\tdirection?: 'forward' | 'backward';\n\t}\n): Element | null {\n\tconst sameIndent = !!options.sameIndent;\n\tconst smallerIndent = !!options.smallerIndent;\n\tconst indent = options.listIndent;\n\n\tlet item: any = modelItem;\n\n\twhile ( item && item.name == 'listItem' ) {\n\t\tconst itemIndent = item.getAttribute( 'listIndent' ) as number;\n\n\t\tif ( ( sameIndent && indent == itemIndent ) || ( smallerIndent && indent as number > itemIndent ) ) {\n\t\t\treturn item;\n\t\t}\n\n\t\tif ( options.direction === 'forward' ) {\n\t\t\titem = item.nextSibling;\n\t\t} else {\n\t\t\titem = item.previousSibling;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Helper method for creating a UI button and linking it with an appropriate command.\n *\n * @internal\n * @param editor The editor instance to which the UI component will be added.\n * @param commandName The name of the command.\n * @param label The button label.\n * @param icon The source of the icon.\n */\nexport function createUIComponent(\n\teditor: Editor,\n\tcommandName: 'bulletedList' | 'numberedList' | 'todoList',\n\tlabel: string,\n\ticon: string\n): void {\n\teditor.ui.componentFactory.add( commandName, locale => {\n\t\tconst command = editor.commands.get( commandName )!;\n\t\tconst buttonView = new ButtonView( locale );\n\n\t\tbuttonView.set( {\n\t\t\tlabel,\n\t\t\ticon,\n\t\t\ttooltip: true,\n\t\t\tisToggleable: true\n\t\t} );\n\n\t\t// Bind button model to command.\n\t\tbuttonView.bind( 'isOn', 'isEnabled' ).to( command, 'value', 'isEnabled' );\n\n\t\t// Execute command.\n\t\tbuttonView.on<ButtonExecuteEvent>( 'execute', () => {\n\t\t\teditor.execute( commandName );\n\t\t\teditor.editing.view.focus();\n\t\t} );\n\n\t\treturn buttonView;\n\t} );\n}\n\n/**\n * Returns a first list view element that is direct child of the given view element.\n */\nexport function findNestedList( viewElement: ViewElement ): ViewElement | null {\n\tfor ( const node of ( viewElement.getChildren() as Iterable<ViewElement> ) ) {\n\t\tif ( node.name == 'ul' || node.name == 'ol' ) {\n\t\t\treturn node;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns an array with all `listItem` elements that represent the same list.\n *\n * It means that values of `listIndent`, `listType`, `listStyle`, `listReversed` and `listStart` for all items are equal.\n *\n * Additionally, if the `position` is inside a list item, that list item will be returned as well.\n *\n * @param position Starting position.\n * @param direction Walking direction.\n */\nexport function getSiblingNodes( position: Position, direction: 'forward' | 'backward' ): Array<Element> {\n\tconst items: Array<Element> = [];\n\tconst listItem = position.parent as Element;\n\tconst walkerOptions = {\n\t\tignoreElementEnd: false,\n\t\tstartPosition: position,\n\t\tshallow: true,\n\t\tdirection\n\t};\n\tconst limitIndent = listItem.getAttribute( 'listIndent' ) as number;\n\tconst nodes = [ ...new TreeWalker( walkerOptions ) ]\n\t\t.filter( value => value.item.is( 'element' ) )\n\t\t.map( value => value.item );\n\n\tfor ( const element of nodes ) {\n\t\t// If found something else than `listItem`, we're out of the list scope.\n\t\tif ( !element.is( 'element', 'listItem' ) ) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// If current parsed item has lower indent that element that the element that was a starting point,\n\t\t// it means we left a nested list. Abort searching items.\n\t\t//\n\t\t// ■ List item 1. [listIndent=0]\n\t\t// ○ List item 2.[] [listIndent=1], limitIndent = 1,\n\t\t// ○ List item 3. [listIndent=1]\n\t\t// ■ List item 4. [listIndent=0]\n\t\t//\n\t\t// Abort searching when leave nested list.\n\t\tif ( ( element.getAttribute( 'listIndent' ) as number ) < limitIndent ) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// ■ List item 1.[] [listIndent=0] limitIndent = 0,\n\t\t// ○ List item 2. [listIndent=1]\n\t\t// ○ List item 3. [listIndent=1]\n\t\t// ■ List item 4. [listIndent=0]\n\t\t//\n\t\t// Ignore nested lists.\n\t\tif ( ( element.getAttribute( 'listIndent' ) as number ) > limitIndent ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// ■ List item 1.[] [listType=bulleted]\n\t\t// 1. List item 2. [listType=numbered]\n\t\t// 2.List item 3. [listType=numbered]\n\t\t//\n\t\t// Abort searching when found a different kind of a list.\n\t\tif ( element.getAttribute( 'listType' ) !== listItem.getAttribute( 'listType' ) ) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// ■ List item 1.[] [listType=bulleted]\n\t\t// ■ List item 2. [listType=bulleted]\n\t\t// ○ List item 3. [listType=bulleted]\n\t\t// ○ List item 4. [listType=bulleted]\n\t\t//\n\t\t// Abort searching when found a different list style,\n\t\tif ( element.getAttribute( 'listStyle' ) !== listItem.getAttribute( 'listStyle' ) ) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// ... different direction\n\t\tif ( element.getAttribute( 'listReversed' ) !== listItem.getAttribute( 'listReversed' ) ) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// ... and different start index\n\t\tif ( element.getAttribute( 'listStart' ) !== listItem.getAttribute( 'listStart' ) ) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif ( direction === 'backward' ) {\n\t\t\titems.unshift( element );\n\t\t} else {\n\t\t\titems.push( element );\n\t\t}\n\t}\n\n\treturn items;\n}\n\n/**\n * Returns an array with all `listItem` elements in the model selection.\n *\n * It returns all the items even if only a part of the list is selected, including items that belong to nested lists.\n * If no list is selected, it returns an empty array.\n * The order of the elements is not specified.\n *\n * @internal\n */\nexport function getSelectedListItems( model: Model ): Array<Element> {\n\tconst document = model.document;\n\n\t// For all selected blocks find all list items that are being selected\n\t// and update the `listStyle` attribute in those lists.\n\tlet listItems = [ ...document.selection.getSelectedBlocks() ]\n\t\t.filter( element => element.is( 'element', 'listItem' ) )\n\t\t.map( element => {\n\t\t\tconst position = model.change( writer => writer.createPositionAt( element, 0 ) );\n\n\t\t\treturn [\n\t\t\t\t...getSiblingNodes( position, 'backward' ),\n\t\t\t\t...getSiblingNodes( position, 'forward' )\n\t\t\t];\n\t\t} )\n\t\t.flat();\n\n\t// Since `getSelectedBlocks()` can return items that belong to the same list, and\n\t// `getSiblingNodes()` returns the entire list, we need to remove duplicated items.\n\tlistItems = [ ...new Set( listItems ) ];\n\n\treturn listItems;\n}\n\nconst BULLETED_LIST_STYLE_TYPES = [ 'disc', 'circle', 'square' ];\n\n// There's a lot of them (https://www.w3.org/TR/css-counter-styles-3/#typedef-counter-style).\n// Let's support only those that can be selected by ListPropertiesUI.\nconst NUMBERED_LIST_STYLE_TYPES = [\n\t'decimal',\n\t'decimal-leading-zero',\n\t'lower-roman',\n\t'upper-roman',\n\t'lower-latin',\n\t'upper-latin'\n];\n\n/**\n * Checks whether the given list-style-type is supported by numbered or bulleted list.\n */\nexport function getListTypeFromListStyleType( listStyleType: string ): 'bulleted' | 'numbered' | null {\n\tif ( BULLETED_LIST_STYLE_TYPES.includes( listStyleType ) ) {\n\t\treturn 'bulleted';\n\t}\n\n\tif ( NUMBERED_LIST_STYLE_TYPES.includes( listStyleType ) ) {\n\t\treturn 'numbered';\n\t}\n\n\treturn null;\n}\n\n/**\n * Implementation of getFillerOffset for view list item element.\n *\n * @returns Block filler offset or `null` if block filler is not needed.\n */\nfunction getListItemFillerOffset( this: any ): number | null {\n\tconst hasOnlyLists = !this.isEmpty && ( this.getChild( 0 ).name == 'ul' || this.getChild( 0 ).name == 'ol' );\n\n\tif ( this.isEmpty || hasOnlyLists ) {\n\t\treturn 0;\n\t}\n\n\treturn getFillerOffset.call( this );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n* @module list/documentlistproperties/utils/style\n*/\n\nconst LIST_STYLE_TO_LIST_TYPE: Record<string, 'bulleted' | 'numbered' | undefined> = {};\nconst LIST_STYLE_TO_TYPE_ATTRIBUTE: Record<string, string | null | undefined> = {};\nconst TYPE_ATTRIBUTE_TO_LIST_STYLE: Record<string, string | undefined> = {};\n\nconst LIST_STYLE_TYPES: Array<{ listStyle: string; typeAttribute: string | null; listType: 'bulleted' | 'numbered' }> = [\n\t{ listStyle: 'disc', typeAttribute: 'disc', listType: 'bulleted' },\n\t{ listStyle: 'circle', typeAttribute: 'circle', listType: 'bulleted' },\n\t{ listStyle: 'square', typeAttribute: 'square', listType: 'bulleted' },\n\t{ listStyle: 'decimal', typeAttribute: '1', listType: 'numbered' },\n\t{ listStyle: 'decimal-leading-zero', typeAttribute: null, listType: 'numbered' },\n\t{ listStyle: 'lower-roman', typeAttribute: 'i', listType: 'numbered' },\n\t{ listStyle: 'upper-roman', typeAttribute: 'I', listType: 'numbered' },\n\t{ listStyle: 'lower-alpha', typeAttribute: 'a', listType: 'numbered' },\n\t{ listStyle: 'upper-alpha', typeAttribute: 'A', listType: 'numbered' },\n\t{ listStyle: 'lower-latin', typeAttribute: 'a', listType: 'numbered' },\n\t{ listStyle: 'upper-latin', typeAttribute: 'A', listType: 'numbered' }\n];\n\nfor ( const { listStyle, typeAttribute, listType } of LIST_STYLE_TYPES ) {\n\tLIST_STYLE_TO_LIST_TYPE[ listStyle ] = listType;\n\tLIST_STYLE_TO_TYPE_ATTRIBUTE[ listStyle ] = typeAttribute;\n\n\tif ( typeAttribute ) {\n\t\tTYPE_ATTRIBUTE_TO_LIST_STYLE[ typeAttribute ] = listStyle;\n\t}\n}\n\n/**\n * Gets all the style types supported by given list type.\n */\nexport function getAllSupportedStyleTypes(): Array<string> {\n\treturn LIST_STYLE_TYPES.map( x => x.listStyle );\n}\n\n/**\n * Checks whether the given list-style-type is supported by numbered or bulleted list.\n */\nexport function getListTypeFromListStyleType( listStyleType: string ): 'bulleted' | 'numbered' | null {\n\treturn LIST_STYLE_TO_LIST_TYPE[ listStyleType ] || null;\n}\n\n/**\n * Converts `type` attribute of `<ul>` or `<ol>` elements to `list-style-type` equivalent.\n */\nexport function getListStyleTypeFromTypeAttribute( value: string ): string | null {\n\treturn TYPE_ATTRIBUTE_TO_LIST_STYLE[ value ] || null;\n}\n\n/**\n * Converts `list-style-type` style to `type` attribute of `<ul>` or `<ol>` elements.\n */\nexport function getTypeAttributeFromListStyleType( value: string ): string | null {\n\treturn LIST_STYLE_TO_TYPE_ATTRIBUTE[ value ] || null;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module list/list/listui\n */\n\nimport { createUIComponent } from './utils';\n\nimport numberedListIcon from '../../theme/icons/numberedlist.svg';\nimport bulletedListIcon from '../../theme/icons/bulletedlist.svg';\n\nimport { Plugin } from 'ckeditor5/src/core';\n\n/**\n * The list UI feature. It introduces the `'numberedList'` and `'bulletedList'` buttons that\n * allow to convert paragraphs to and from list items and indent or outdent them.\n */\nexport default class ListUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ListUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst t = this.editor.t;\n\n\t\t// Create two buttons and link them with numberedList and bulletedList commands.\n\t\tcreateUIComponent( this.editor, 'numberedList', t( 'Numbered List' ), numberedListIcon );\n\t\tcreateUIComponent( this.editor, 'bulletedList', t( 'Bulleted List' ), bulletedListIcon );\n\t}\n}\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM3.5 3v5H2V3.7H1v-1h2.5V3zM.343 17.857l2.59-3.257H2.92a.6.6 0 1 0-1.04 0H.302a2 2 0 1 1 3.995 0h-.001c-.048.405-.16.734-.333.988-.175.254-.59.692-1.244 1.312H4.3v1h-4l.043-.043zM7 14.75a.75.75 0 0 1 .75-.75h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0C1 4.784 1.777 4 2.75 4c.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75C1.784 7.5 1 6.723 1 5.75zm6 9c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0c0-.966.777-1.75 1.75-1.75.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75-.966 0-1.75-.777-1.75-1.75z\\\"/></svg>\";","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./collapsible.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./listproperties.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./liststyles.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module list/list/indentcommand\n */\n\nimport type { Element } from 'ckeditor5/src/engine';\nimport { Command, type Editor } from 'ckeditor5/src/core';\nimport { first } from 'ckeditor5/src/utils';\n\n/**\n * The list indent command. It is used by the {@link module:list/list~List list feature}.\n */\nexport default class IndentCommand extends Command {\n\t/**\n\t * Determines by how much the command will change the list item's indent attribute.\n\t */\n\tprivate readonly _indentBy: 1 | -1;\n\n\t/**\n\t * Creates an instance of the command.\n\t *\n\t * @param editor The editor instance.\n\t * @param indentDirection The direction of indent. If it is equal to `backward`, the command will outdent a list item.\n\t */\n\tconstructor( editor: Editor, indentDirection: 'forward' | 'backward' ) {\n\t\tsuper( editor );\n\n\t\tthis._indentBy = indentDirection == 'forward' ? 1 : -1;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tthis.isEnabled = this._checkEnabled();\n\t}\n\n\t/**\n\t * Indents or outdents (depending on the {@link #constructor}'s `indentDirection` parameter) selected list items.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute(): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\t\tlet itemsToChange = Array.from( doc.selection.getSelectedBlocks() );\n\n\t\tmodel.change( writer => {\n\t\t\tconst lastItem = itemsToChange[ itemsToChange.length - 1 ];\n\n\t\t\t// Indenting a list item should also indent all the items that are already sub-items of indented item.\n\t\t\tlet next = lastItem.nextSibling as Element | null;\n\n\t\t\t// Check all items after last indented item, as long as their indent is bigger than indent of that item.\n\t\t\twhile (\n\t\t\t\tnext && next.name == 'listItem' &&\n\t\t\t\t( next.getAttribute( 'listIndent' ) as number ) > ( lastItem.getAttribute( 'listIndent' ) as number )\n\t\t\t) {\n\t\t\t\titemsToChange.push( next );\n\n\t\t\t\tnext = next.nextSibling as Element | null;\n\t\t\t}\n\n\t\t\t// We need to be sure to keep model in correct state after each small change, because converters\n\t\t\t// bases on that state and assumes that model is correct.\n\t\t\t// Because of that, if the command outdents items, we will outdent them starting from the last item, as\n\t\t\t// it is safer.\n\t\t\tif ( this._indentBy < 0 ) {\n\t\t\t\titemsToChange = itemsToChange.reverse();\n\t\t\t}\n\n\t\t\tfor ( const item of itemsToChange ) {\n\t\t\t\tconst indent = ( item.getAttribute( 'listIndent' ) as number ) + this._indentBy;\n\n\t\t\t\t// If indent is lower than 0, it means that the item got outdented when it was not indented.\n\t\t\t\t// This means that we need to convert that list item to paragraph.\n\t\t\t\tif ( indent < 0 ) {\n\t\t\t\t\t// To keep the model as correct as possible, first rename listItem, then remove attributes,\n\t\t\t\t\t// as listItem without attributes is very incorrect and will cause problems in converters.\n\t\t\t\t\t// No need to remove attributes, will be removed by post fixer.\n\t\t\t\t\twriter.rename( item, 'paragraph' );\n\t\t\t\t}\n\t\t\t\t// If indent is >= 0, change the attribute value.\n\t\t\t\telse {\n\t\t\t\t\twriter.setAttribute( 'listIndent', indent, item );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// It allows to execute an action after executing the `~IndentCommand#execute` method, for example adjusting\n\t\t\t// attributes of changed list items.\n\t\t\tthis.fire( '_executeCleanup', itemsToChange );\n\t\t} );\n\t}\n\n\t/**\n\t * Checks whether the command can be enabled in the current context.\n\t *\n\t * @returns Whether the command should be enabled.\n\t */\n\tprivate _checkEnabled() {\n\t\t// Check whether any of position's ancestor is a list item.\n\t\tconst listItem = first( this.editor.model.document.selection.getSelectedBlocks() );\n\n\t\t// If selection is not in a list item, the command is disabled.\n\t\tif ( !listItem || !listItem.is( 'element', 'listItem' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this._indentBy > 0 ) {\n\t\t\t// Cannot indent first item in it's list. Check if before `listItem` is a list item that is in same list.\n\t\t\t// To be in the same list, the item has to have same attributes and cannot be \"split\" by an item with lower indent.\n\t\t\tconst indent = listItem.getAttribute( 'listIndent' ) as number;\n\t\t\tconst type = listItem.getAttribute( 'listType' ) as string;\n\n\t\t\tlet prev = listItem.previousSibling;\n\n\t\t\twhile ( prev && prev.is( 'element', 'listItem' ) && ( prev.getAttribute( 'listIndent' ) as number ) >= indent ) {\n\t\t\t\tif ( prev.getAttribute( 'listIndent' ) == indent ) {\n\t\t\t\t\t// The item is on the same level.\n\t\t\t\t\t// If it has same type, it means that we found a preceding sibling from the same list.\n\t\t\t\t\t// If it does not have same type, it means that `listItem` is on different list (this can happen only\n\t\t\t\t\t// on top level lists, though).\n\t\t\t\t\treturn prev.getAttribute( 'listType' ) == type;\n\t\t\t\t}\n\n\t\t\t\tprev = prev.previousSibling;\n\t\t\t}\n\n\t\t\t// Could not find similar list item, this means that `listItem` is first in its list.\n\t\t\treturn false;\n\t\t}\n\n\t\t// If we are outdenting it is enough to be in list item. Every list item can always be outdented.\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module list/list/listcommand\n */\n\nimport type { Element, Node, Schema } from 'ckeditor5/src/engine';\nimport { Command, type Editor } from 'ckeditor5/src/core';\n\nimport { first } from 'ckeditor5/src/utils';\n\n/**\n * The list command. It is used by the {@link module:list/list~List list feature}.\n */\nexport default class ListCommand extends Command {\n\t/**\n\t * The type of the list created by the command.\n\t */\n\tpublic readonly type: 'numbered' | 'bulleted' | 'todo';\n\n\t/**\n\t * A flag indicating whether the command is active, which means that the selection starts in a list of the same type.\n\t *\n\t * @readonly\n\t */\n\tdeclare public value: boolean;\n\n\t/**\n\t * Creates an instance of the command.\n\t *\n\t * @param editor The editor instance.\n\t * @param type List type that will be handled by this command.\n\t */\n\tconstructor( editor: Editor, type: 'numbered' | 'bulleted' | 'todo' ) {\n\t\tsuper( editor );\n\n\t\tthis.type = type;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tthis.value = this._getValue();\n\t\tthis.isEnabled = this._checkEnabled();\n\t}\n\n\t/**\n\t * Executes the list command.\n\t *\n\t * @fires execute\n\t * @param options Command options.\n\t * @param options.forceValue If set, it will force the command behavior. If `true`, the command will try to convert the\n\t * selected items and potentially the neighbor elements to the proper list items. If set to `false`, it will convert selected elements\n\t * to paragraphs. If not set, the command will toggle selected elements to list items or paragraphs, depending on the selection.\n\t */\n\tpublic override execute( options: { forceValue?: boolean } = {} ): void {\n\t\tconst model = this.editor.model;\n\t\tconst document = model.document;\n\t\tconst blocks = Array.from( document.selection.getSelectedBlocks() )\n\t\t\t.filter( block => checkCanBecomeListItem( block, model.schema ) );\n\n\t\t// Whether we are turning off some items.\n\t\tconst turnOff = options.forceValue !== undefined ? !options.forceValue : this.value;\n\n\t\t// If we are turning off items, we are going to rename them to paragraphs.\n\n\t\tmodel.change( writer => {\n\t\t\t// If part of a list got turned off, we need to handle (outdent) all of sub-items of the last turned-off item.\n\t\t\t// To be sure that model is all the time in a good state, we first fix items below turned-off item.\n\t\t\tif ( turnOff ) {\n\t\t\t\t// Start from the model item that is just after the last turned-off item.\n\t\t\t\tlet next = blocks[ blocks.length - 1 ].nextSibling as Element;\n\t\t\t\tlet currentIndent = Number.POSITIVE_INFINITY;\n\t\t\t\tlet changes = [];\n\n\t\t\t\t// Correct indent of all items after the last turned off item.\n\t\t\t\t// Rules that should be followed:\n\t\t\t\t// 1. All direct sub-items of turned-off item should become indent 0, because the first item after it\n\t\t\t\t// will be the first item of a new list. Other items are at the same level, so should have same 0 index.\n\t\t\t\t// 2. All items with indent lower than indent of turned-off item should become indent 0, because they\n\t\t\t\t// should not end up as a child of any of list items that they were not children of before.\n\t\t\t\t// 3. All other items should have their indent changed relatively to it's parent.\n\t\t\t\t//\n\t\t\t\t// For example:\n\t\t\t\t// 1 * --------\n\t\t\t\t// 2 * --------\n\t\t\t\t// 3 * --------\t\t\t<-- this is turned off.\n\t\t\t\t// 4 * --------\t\t<-- this has to become indent = 0, because it will be first item on a new list.\n\t\t\t\t// 5 * --------\t<-- this should be still be a child of item above, so indent = 1.\n\t\t\t\t// 6 * --------\t\t\t<-- this has to become indent = 0, because it should not be a child of any of items above.\n\t\t\t\t// 7 * --------\t\t<-- this should be still be a child of item above, so indent = 1.\n\t\t\t\t// 8 * --------\t\t\t\t<-- this has to become indent = 0.\n\t\t\t\t// 9 * --------\t\t\t<-- this should still be a child of item above, so indent = 1.\n\t\t\t\t// 10 * --------\t\t<-- this should still be a child of item above, so indent = 2.\n\t\t\t\t// 11 * --------\t\t<-- this should still be at the same level as item above, so indent = 2.\n\t\t\t\t// 12 * --------\t\t\t\t<-- this and all below are left unchanged.\n\t\t\t\t// 13 * --------\n\t\t\t\t// 14 * --------\n\t\t\t\t//\n\t\t\t\t// After turning off 3 the list becomes:\n\t\t\t\t//\n\t\t\t\t// 1 * --------\n\t\t\t\t// 2 * --------\n\t\t\t\t//\n\t\t\t\t// 3 --------\n\t\t\t\t//\n\t\t\t\t// 4 * --------\n\t\t\t\t// 5 * --------\n\t\t\t\t// 6 * --------\n\t\t\t\t// 7 * --------\n\t\t\t\t// 8 * --------\n\t\t\t\t// 9 * --------\n\t\t\t\t// 10 * --------\n\t\t\t\t// 11 * --------\n\t\t\t\t// 12 * --------\n\t\t\t\t// 13 * --------\n\t\t\t\t// 14 * --------\n\t\t\t\t//\n\t\t\t\t// Thanks to this algorithm no lists are mismatched and no items get unexpected children/parent, while\n\t\t\t\t// those parent-child connection which are possible to maintain are still maintained. It's worth noting\n\t\t\t\t// that this is the same effect that we would be get by multiple use of outdent command. However doing\n\t\t\t\t// it like this is much more efficient because it's less operation (less memory usage, easier OT) and\n\t\t\t\t// less conversion (faster).\n\t\t\t\twhile ( next && next.name == 'listItem' && next.getAttribute( 'listIndent' ) !== 0 ) {\n\t\t\t\t\t// Check each next list item, as long as its indent is bigger than 0.\n\t\t\t\t\t// If the indent is 0 we are not going to change anything anyway.\n\t\t\t\t\tconst indent = next.getAttribute( 'listIndent' ) as number;\n\n\t\t\t\t\t// We check if that's item indent is lower as current relative indent.\n\t\t\t\t\tif ( indent < currentIndent ) {\n\t\t\t\t\t\t// If it is, current relative indent becomes that indent.\n\t\t\t\t\t\tcurrentIndent = indent;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fix indent relatively to current relative indent.\n\t\t\t\t\t// Note, that if we just changed the current relative indent, the newIndent will be equal to 0.\n\t\t\t\t\tconst newIndent = indent - currentIndent;\n\n\t\t\t\t\t// Save the entry in changes array. We do not apply it at the moment, because we will need to\n\t\t\t\t\t// reverse the changes so the last item is changed first.\n\t\t\t\t\t// This is to keep model in correct state all the time.\n\t\t\t\t\tchanges.push( { element: next, listIndent: newIndent } );\n\n\t\t\t\t\t// Find next item.\n\t\t\t\t\tnext = next.nextSibling as Element;\n\t\t\t\t}\n\n\t\t\t\tchanges = changes.reverse();\n\n\t\t\t\tfor ( const item of changes ) {\n\t\t\t\t\twriter.setAttribute( 'listIndent', item.listIndent, item.element );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If we are turning on, we might change some items that are already `listItem`s but with different type.\n\t\t\t// Changing one nested list item to other type should also trigger changing all its siblings so the\n\t\t\t// whole nested list is of the same type.\n\t\t\t// Example (assume changing to numbered list):\n\t\t\t// * ------\t\t\t\t<-- do not fix, top level item\n\t\t\t// * ------\t\t\t<-- fix, because latter list item of this item's list is changed\n\t\t\t// * ------\t\t<-- do not fix, item is not affected (different list)\n\t\t\t// * ------\t\t\t<-- fix, because latter list item of this item's list is changed\n\t\t\t// * ------\t\t<-- fix, because latter list item of this item's list is changed\n\t\t\t// * ---[--\t\t<-- already in selection\n\t\t\t// * ------\t\t\t<-- already in selection\n\t\t\t// * ------\t\t\t<-- already in selection\n\t\t\t// * ------\t\t\t\t<-- already in selection, but does not cause other list items to change because is top-level\n\t\t\t// * ---]--\t\t\t<-- already in selection\n\t\t\t// * ------\t\t\t<-- fix, because preceding list item of this item's list is changed\n\t\t\t// * ------\t\t<-- do not fix, item is not affected (different list)\n\t\t\t// * ------\t\t\t\t<-- do not fix, top level item\n\t\t\tif ( !turnOff ) {\n\t\t\t\t// Find lowest indent among selected items. This will be indicator what is the indent of\n\t\t\t\t// top-most list affected by the command.\n\t\t\t\tlet lowestIndent = Number.POSITIVE_INFINITY;\n\n\t\t\t\tfor ( const item of blocks ) {\n\t\t\t\t\tif ( item.is( 'element', 'listItem' ) && ( item.getAttribute( 'listIndent' ) as number ) < lowestIndent ) {\n\t\t\t\t\t\tlowestIndent = item.getAttribute( 'listIndent' ) as number;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Do not execute the fix for top-level lists.\n\t\t\t\tlowestIndent = lowestIndent === 0 ? 1 : lowestIndent;\n\n\t\t\t\t// Fix types of list items that are \"before\" the selected blocks.\n\t\t\t\t_fixType( blocks, true, lowestIndent );\n\n\t\t\t\t// Fix types of list items that are \"after\" the selected blocks.\n\t\t\t\t_fixType( blocks, false, lowestIndent );\n\t\t\t}\n\n\t\t\t// Phew! Now it will be easier :).\n\t\t\t// For each block element that was in the selection, we will either: turn it to list item,\n\t\t\t// turn it to paragraph, or change it's type. Or leave it as it is.\n\t\t\t// Do it in reverse as there might be multiple blocks (same as with changing indents).\n\t\t\tfor ( const element of blocks.reverse() ) {\n\t\t\t\tif ( turnOff && element.name == 'listItem' ) {\n\t\t\t\t\t// We are turning off and the element is a `listItem` - it should be converted to `paragraph`.\n\t\t\t\t\t// List item specific attributes are removed by post fixer.\n\t\t\t\t\twriter.rename( element, 'paragraph' );\n\t\t\t\t} else if ( !turnOff && element.name != 'listItem' ) {\n\t\t\t\t\t// We are turning on and the element is not a `listItem` - it should be converted to `listItem`.\n\t\t\t\t\t// The order of operations is important to keep model in correct state.\n\t\t\t\t\twriter.setAttributes( { listType: this.type, listIndent: 0 }, element );\n\t\t\t\t\twriter.rename( element, 'listItem' );\n\t\t\t\t} else if ( !turnOff && element.name == 'listItem' && element.getAttribute( 'listType' ) != this.type ) {\n\t\t\t\t\t// We are turning on and the element is a `listItem` but has different type - change it's type and\n\t\t\t\t\t// type of it's all siblings that have same indent.\n\t\t\t\t\twriter.setAttribute( 'listType', this.type, element );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Event fired by the {@link #execute} method.\n\t\t\t *\n\t\t\t * It allows to execute an action after executing the {@link ~ListCommand#execute} method, for example adjusting\n\t\t\t * attributes of changed blocks.\n\t\t\t *\n\t\t\t * @protected\n\t\t\t * @event _executeCleanup\n\t\t\t */\n\t\t\tthis.fire( '_executeCleanup', blocks );\n\t\t} );\n\t}\n\n\t/**\n\t * Checks the command's {@link #value}.\n\t *\n\t * @returns The current value.\n\t */\n\tprivate _getValue(): boolean {\n\t\t// Check whether closest `listItem` ancestor of the position has a correct type.\n\t\tconst listItem = first( this.editor.model.document.selection.getSelectedBlocks() );\n\n\t\treturn !!listItem && listItem.is( 'element', 'listItem' ) && listItem.getAttribute( 'listType' ) == this.type;\n\t}\n\n\t/**\n\t * Checks whether the command can be enabled in the current context.\n\t *\n\t * @returns Whether the command should be enabled.\n\t */\n\tprivate _checkEnabled() {\n\t\t// If command value is true it means that we are in list item, so the command should be enabled.\n\t\tif ( this.value ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst schema = this.editor.model.schema;\n\n\t\tconst firstBlock = first( selection.getSelectedBlocks() );\n\n\t\tif ( !firstBlock ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Otherwise, check if list item can be inserted at the position start.\n\t\treturn checkCanBecomeListItem( firstBlock, schema );\n\t}\n}\n\n/**\n * Helper function used when one or more list item have their type changed. Fixes type of other list items\n * that are affected by the change (are in same lists) but are not directly in selection. The function got extracted\n * not to duplicated code, as same fix has to be performed before and after selection.\n *\n * @param blocks Blocks that are in selection.\n * @param isBackward Specified whether fix will be applied for blocks before first selected block (`true`)\n * or blocks after last selected block (`false`).\n * @param lowestIndent Lowest indent among selected blocks.\n */\nfunction _fixType(\n\tblocks: Array<Node>,\n\tisBackward: boolean,\n\tlowestIndent: number\n) {\n\t// We need to check previous sibling of first changed item and next siblings of last changed item.\n\tconst startingItem = isBackward ? blocks[ 0 ] : blocks[ blocks.length - 1 ];\n\n\tif ( startingItem.is( 'element', 'listItem' ) ) {\n\t\tlet item = startingItem[ isBackward ? 'previousSibling' : 'nextSibling' ];\n\t\t// During processing items, keeps the lowest indent of already processed items.\n\t\t// This saves us from changing too many items.\n\t\t// Following example is for going forward as it is easier to read, however same applies to going backward.\n\t\t// * ------\n\t\t// * ------\n\t\t// * --[---\n\t\t// * ------\t\t<-- `lowestIndent` should be 1\n\t\t// * --]---\t\t<-- `startingItem`, `currentIndent` = 2, `lowestIndent` == 1\n\t\t// * ------\t\t<-- should be fixed, `indent` == 2 == `currentIndent`\n\t\t// * ------\t\t<-- should be fixed, set `currentIndent` to 1, `indent` == 1 == `currentIndent`\n\t\t// * ------\t\t<-- should not be fixed, item is in different list, `indent` = 2, `indent` != `currentIndent`\n\t\t// * ------\t\t<-- should be fixed, `indent` == 1 == `currentIndent`\n\t\t// * ------\t\t\t<-- break loop (`indent` < `lowestIndent`)\n\t\tlet currentIndent = startingItem.getAttribute( 'listIndent' ) as number;\n\n\t\t// Look back until a list item with indent lower than reference `lowestIndent`.\n\t\t// That would be the parent of nested sublist which contains item having `lowestIndent`.\n\t\twhile ( item && item.is( 'element', 'listItem' ) && ( item.getAttribute( 'listIndent' ) as number ) >= lowestIndent ) {\n\t\t\tif ( currentIndent > ( item.getAttribute( 'listIndent' ) as number ) ) {\n\t\t\t\tcurrentIndent = item.getAttribute( 'listIndent' ) as number;\n\t\t\t}\n\n\t\t\t// Found an item that is in the same nested sublist.\n\t\t\tif ( item.getAttribute( 'listIndent' ) == currentIndent ) {\n\t\t\t\t// Just add the item to selected blocks like it was selected by the user.\n\t\t\t\tblocks[ isBackward ? 'unshift' : 'push' ]( item );\n\t\t\t}\n\n\t\t\titem = item[ isBackward ? 'previousSibling' : 'nextSibling' ];\n\t\t}\n\t}\n}\n\n/**\n * Checks whether the given block can be replaced by a listItem.\n *\n * @param block A block to be tested.\n * @param schema The schema of the document.\n */\nfunction checkCanBecomeListItem( block: Element, schema: Schema ) {\n\treturn schema.checkChild( block.parent as any, 'listItem' ) && !schema.isObject( block );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module list/list/listutils\n */\n\nimport type { Element, Model, Position } from 'ckeditor5/src/engine';\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport {\n\tgetListTypeFromListStyleType,\n\tgetSelectedListItems,\n\tgetSiblingNodes\n} from './utils';\n\n/**\n * A set of helpers related to document lists.\n */\nexport default class ListUtils extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ListUtils' as const;\n\t}\n\n\t/**\n\t * Checks whether the given list-style-type is supported by numbered or bulleted list.\n\t */\n\tpublic getListTypeFromListStyleType( listStyleType: string ): 'bulleted' | 'numbered' | null {\n\t\treturn getListTypeFromListStyleType( listStyleType );\n\t}\n\n\t/**\n\t * Returns an array with all `listItem` elements in the model selection.\n\t *\n\t * It returns all the items even if only a part of the list is selected, including items that belong to nested lists.\n\t * If no list is selected, it returns an empty array.\n\t * The order of the elements is not specified.\n\t */\n\tpublic getSelectedListItems( model: Model ): Array<Element> {\n\t\treturn getSelectedListItems( model );\n\t}\n\n\t/**\n\t * Returns an array with all `listItem` elements that represent the same list.\n\t *\n\t * It means that values of `listIndent`, `listType`, `listStyle`, `listReversed` and `listStart` for all items are equal.\n\t *\n\t * Additionally, if the `position` is inside a list item, that list item will be returned as well.\n\t *\n\t * @param position Starting position.\n\t * @param direction Walking direction.\n\t */\n\tpublic getSiblingNodes( position: Position, direction: 'forward' | 'backward' ): Array<Element> {\n\t\treturn getSiblingNodes( position, direction );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module list/list/converters\n */\n\nimport {\n\tTreeWalker,\n\ttype DowncastAttributeEvent,\n\ttype DowncastConversionApi,\n\ttype DowncastInsertEvent,\n\ttype DowncastRemoveEvent,\n\ttype Element,\n\ttype MapperModelToViewPositionEvent,\n\ttype MapperViewToModelPositionEvent,\n\ttype Model,\n\ttype ModelInsertContentEvent,\n\ttype Node,\n\ttype Position,\n\ttype UpcastConversionApi,\n\ttype UpcastElementEvent,\n\ttype View,\n\ttype ViewContainerElement,\n\ttype ViewElement,\n\ttype ViewNode,\n\ttype ViewPosition,\n\ttype ViewTypeCheckable,\n\ttype Writer\n} from 'ckeditor5/src/engine';\n\nimport type { GetCallback } from 'ckeditor5/src/utils';\n\nimport {\n\tgenerateLiInUl,\n\tinjectViewList,\n\tmergeViewLists,\n\tgetSiblingListItem,\n\tpositionAfterUiElements\n} from './utils';\n\n/**\n * A model-to-view converter for the `listItem` model element insertion.\n *\n * It creates a `<ul><li></li><ul>` (or `<ol>`) view structure out of a `listItem` model element, inserts it at the correct\n * position, and merges the list with surrounding lists (if available).\n *\n * @see module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:insert\n * @param model Model instance.\n */\nexport function modelViewInsertion( model: Model ): GetCallback<DowncastInsertEvent<Element>> {\n\treturn ( evt, data, conversionApi ) => {\n\t\tconst consumable = conversionApi.consumable;\n\n\t\tif ( !consumable.test( data.item, 'insert' ) ||\n\t\t\t!consumable.test( data.item, 'attribute:listType' ) ||\n\t\t\t!consumable.test( data.item, 'attribute:listIndent' )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconsumable.consume( data.item, 'insert' );\n\t\tconsumable.consume( data.item, 'attribute:listType' );\n\t\tconsumable.consume( data.item, 'attribute:listIndent' );\n\n\t\tconst modelItem = data.item;\n\t\tconst viewItem = generateLiInUl( modelItem, conversionApi );\n\n\t\tinjectViewList( modelItem, viewItem, conversionApi, model );\n\t};\n}\n\n/**\n * A model-to-view converter for the `listItem` model element removal.\n *\n * @see module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:remove\n * @param model Model instance.\n * @returns Returns a conversion callback.\n */\nexport function modelViewRemove( model: Model ): GetCallback<DowncastRemoveEvent> {\n\treturn ( evt, data, conversionApi ) => {\n\t\tconst viewPosition = conversionApi.mapper.toViewPosition( data.position );\n\t\tconst viewStart = viewPosition.getLastMatchingPosition( value => !value.item.is( 'element', 'li' ) );\n\t\tconst viewItem = viewStart.nodeAfter as ViewElement;\n\t\tconst viewWriter = conversionApi.writer;\n\n\t\t// 1. Break the container after and before the list item.\n\t\t// This will create a view list with one view list item - the one to remove.\n\t\tviewWriter.breakContainer( viewWriter.createPositionBefore( viewItem ) );\n\t\tviewWriter.breakContainer( viewWriter.createPositionAfter( viewItem ) );\n\n\t\t// 2. Remove the list with the item to remove.\n\t\tconst viewList = viewItem.parent as ViewElement;\n\t\tconst viewListPrev = viewList.previousSibling;\n\t\tconst removeRange = viewWriter.createRangeOn( viewList );\n\t\tconst removed = viewWriter.remove( removeRange );\n\n\t\t// 3. Merge the whole created by breaking and removing the list.\n\t\tif ( viewListPrev && viewListPrev.nextSibling ) {\n\t\t\tmergeViewLists( viewWriter, viewListPrev, viewListPrev.nextSibling );\n\t\t}\n\n\t\t// 4. Bring back nested list that was in the removed <li>.\n\t\tconst modelItem = conversionApi.mapper.toModelElement( viewItem )!;\n\n\t\thoistNestedLists(\n\t\t\tmodelItem.getAttribute( 'listIndent' ) as number + 1,\n\t\t\tdata.position,\n\t\t\tremoveRange.start,\n\t\t\tviewItem,\n\t\t\tconversionApi,\n\t\t\tmodel\n\t\t);\n\n\t\t// 5. Unbind removed view item and all children.\n\t\tfor ( const child of viewWriter.createRangeIn( removed ).getItems() ) {\n\t\t\tconversionApi.mapper.unbindViewElement( child as ViewElement );\n\t\t}\n\n\t\tevt.stop();\n\t};\n}\n\n/**\n * A model-to-view converter for the `type` attribute change on the `listItem` model element.\n *\n * This change means that the `<li>` element parent changes from `<ul>` to `<ol>` (or vice versa). This is accomplished\n * by breaking view elements and changing their name. The next {@link module:list/list/converters~modelViewMergeAfterChangeType}\n * converter will attempt to merge split nodes.\n *\n * Splitting this conversion into 2 steps makes it possible to add an additional conversion in the middle.\n * Check {@link module:list/todolist/todolistconverters~modelViewChangeType} to see an example of it.\n *\n * @see module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:attribute\n */\nexport const modelViewChangeType: GetCallback<DowncastAttributeEvent<Element>> = ( evt, data, conversionApi ) => {\n\tif ( !conversionApi.consumable.test( data.item, evt.name ) ) {\n\t\treturn;\n\t}\n\n\tconst viewItem = conversionApi.mapper.toViewElement( data.item )!;\n\tconst viewWriter = conversionApi.writer;\n\n\t// Break the container after and before the list item.\n\t// This will create a view list with one view list item -- the one that changed type.\n\tviewWriter.breakContainer( viewWriter.createPositionBefore( viewItem ) );\n\tviewWriter.breakContainer( viewWriter.createPositionAfter( viewItem ) );\n\n\t// Change name of the view list that holds the changed view item.\n\t// We cannot just change name property, because that would not render properly.\n\tconst viewList = viewItem.parent as ViewContainerElement;\n\tconst listName = data.attributeNewValue == 'numbered' ? 'ol' : 'ul';\n\n\tviewWriter.rename( listName, viewList );\n};\n\n/**\n * A model-to-view converter that attempts to merge nodes split by {@link module:list/list/converters~modelViewChangeType}.\n *\n * @see module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:attribute\n */\nexport const modelViewMergeAfterChangeType: GetCallback<DowncastAttributeEvent<Element>> = ( evt, data, conversionApi ) => {\n\tconversionApi.consumable.consume( data.item, evt.name );\n\n\tconst viewItem = conversionApi.mapper.toViewElement( data.item )!;\n\tconst viewList = viewItem.parent as ViewContainerElement;\n\tconst viewWriter = conversionApi.writer;\n\n\t// Merge the changed view list with other lists, if possible.\n\tmergeViewLists( viewWriter, viewList, viewList.nextSibling! );\n\tmergeViewLists( viewWriter, viewList.previousSibling!, viewList );\n};\n\n/**\n * A model-to-view converter for the `listIndent` attribute change on the `listItem` model element.\n *\n * @see module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:attribute\n * @param model Model instance.\n * @returns Returns a conversion callback.\n */\nexport function modelViewChangeIndent( model: Model ): GetCallback<DowncastAttributeEvent<Element>> {\n\treturn ( evt, data, conversionApi ) => {\n\t\tif ( !conversionApi.consumable.consume( data.item, 'attribute:listIndent' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewItem = conversionApi.mapper.toViewElement( data.item ) as ViewContainerElement;\n\t\tconst viewWriter = conversionApi.writer;\n\n\t\t// 1. Break the container after and before the list item.\n\t\t// This will create a view list with one view list item -- the one that changed type.\n\t\tviewWriter.breakContainer( viewWriter.createPositionBefore( viewItem ) );\n\t\tviewWriter.breakContainer( viewWriter.createPositionAfter( viewItem ) );\n\n\t\t// 2. Extract view list with changed view list item and merge \"hole\" possibly created by breaking and removing elements.\n\t\tconst viewList = viewItem.parent as ViewElement;\n\t\tconst viewListPrev = viewList.previousSibling;\n\t\tconst removeRange = viewWriter.createRangeOn( viewList );\n\t\tviewWriter.remove( removeRange );\n\n\t\tif ( viewListPrev && viewListPrev.nextSibling ) {\n\t\t\tmergeViewLists( viewWriter, viewListPrev, viewListPrev.nextSibling );\n\t\t}\n\n\t\t// 3. Bring back nested list that was in the removed <li>.\n\t\thoistNestedLists(\n\t\t\tdata.attributeOldValue as number + 1,\n\t\t\tdata.range.start,\n\t\t\tremoveRange.start,\n\t\t\tviewItem,\n\t\t\tconversionApi,\n\t\t\tmodel\n\t\t);\n\n\t\t// 4. Inject view list like it is newly inserted.\n\t\tinjectViewList( data.item, viewItem, conversionApi, model );\n\n\t\t// 5. Consume insertion of children inside the item. They are already handled by re-building the item in view.\n\t\tfor ( const child of data.item.getChildren() ) {\n\t\t\tconversionApi.consumable.consume( child, 'insert' );\n\t\t}\n\t};\n}\n\n/**\n * A special model-to-view converter introduced by the {@link module:list/list~List list feature}. This converter is fired for\n * insert change of every model item, and should be fired before the actual converter. The converter checks whether the inserted\n * model item is a non-`listItem` element. If it is, and it is inserted inside a view list, the converter breaks the\n * list so the model element is inserted to the view parent element corresponding to its model parent element.\n *\n * The converter prevents such situations:\n *\n * ```xml\n * // Model: // View:\n * <listItem>foo</listItem> <ul>\n * <listItem>bar</listItem> <li>foo</li>\n * <li>bar</li>\n * </ul>\n *\n * // After change: // Correct view guaranteed by this converter:\n * <listItem>foo</listItem> <ul><li>foo</li></ul><p>xxx</p><ul><li>bar</li></ul>\n * <paragraph>xxx</paragraph> // Instead of this wrong view state:\n * <listItem>bar</listItem> <ul><li>foo</li><p>xxx</p><li>bar</li></ul>\n * ```\n *\n * @see module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:insert\n */\nexport const modelViewSplitOnInsert: GetCallback<DowncastInsertEvent<Element>> = ( evt, data, conversionApi ) => {\n\tif ( !conversionApi.consumable.test( data.item, evt.name ) ) {\n\t\treturn;\n\t}\n\n\tif ( data.item.name != 'listItem' ) {\n\t\tlet viewPosition = conversionApi.mapper.toViewPosition( data.range.start );\n\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst lists = [];\n\n\t\t// Break multiple ULs/OLs if there are.\n\t\t//\n\t\t// Imagine following list:\n\t\t//\n\t\t// 1 --------\n\t\t// 1.1 --------\n\t\t// 1.1.1 --------\n\t\t// 1.1.2 --------\n\t\t// 1.1.3 --------\n\t\t// 1.1.3.1 --------\n\t\t// 1.2 --------\n\t\t// 1.2.1 --------\n\t\t// 2 --------\n\t\t//\n\t\t// Insert paragraph after item 1.1.1:\n\t\t//\n\t\t// 1 --------\n\t\t// 1.1 --------\n\t\t// 1.1.1 --------\n\t\t//\n\t\t// Lorem ipsum.\n\t\t//\n\t\t// 1.1.2 --------\n\t\t// 1.1.3 --------\n\t\t// 1.1.3.1 --------\n\t\t// 1.2 --------\n\t\t// 1.2.1 --------\n\t\t// 2 --------\n\t\t//\n\t\t// In this case 1.1.2 has to become beginning of a new list.\n\t\t// We need to break list before 1.1.2 (obvious), then we need to break list also before 1.2.\n\t\t// Then we need to move those broken pieces one after another and merge:\n\t\t//\n\t\t// 1 --------\n\t\t// 1.1 --------\n\t\t// 1.1.1 --------\n\t\t//\n\t\t// Lorem ipsum.\n\t\t//\n\t\t// 1.1.2 --------\n\t\t// 1.1.3 --------\n\t\t// 1.1.3.1 --------\n\t\t// 1.2 --------\n\t\t// 1.2.1 --------\n\t\t// 2 --------\n\t\t//\n\t\twhile ( ( viewPosition.parent as any ).name == 'ul' || ( viewPosition.parent as any ).name == 'ol' ) {\n\t\t\tviewPosition = viewWriter.breakContainer( viewPosition );\n\n\t\t\tif ( ( viewPosition.parent as any ).name != 'li' ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Remove lists that are after inserted element.\n\t\t\t// They will be brought back later, below the inserted element.\n\t\t\tconst removeStart = viewPosition;\n\t\t\tconst removeEnd = viewWriter.createPositionAt( viewPosition.parent as any, 'end' );\n\n\t\t\t// Don't remove if there is nothing to remove.\n\t\t\tif ( !removeStart.isEqual( removeEnd ) ) {\n\t\t\t\tconst removed = viewWriter.remove( viewWriter.createRange( removeStart, removeEnd ) );\n\t\t\t\tlists.push( removed );\n\t\t\t}\n\n\t\t\tviewPosition = viewWriter.createPositionAfter( viewPosition.parent as any );\n\t\t}\n\n\t\t// Bring back removed lists.\n\t\tif ( lists.length > 0 ) {\n\t\t\tfor ( let i = 0; i < lists.length; i++ ) {\n\t\t\t\tconst previousList = viewPosition.nodeBefore;\n\t\t\t\tconst insertedRange = viewWriter.insert( viewPosition, lists[ i ] );\n\t\t\t\tviewPosition = insertedRange.end;\n\n\t\t\t\t// Don't merge first list! We want a split in that place (this is why this converter is introduced).\n\t\t\t\tif ( i > 0 ) {\n\t\t\t\t\tconst mergePos = mergeViewLists( viewWriter, previousList!, previousList!.nextSibling! );\n\n\t\t\t\t\t// If `mergePos` is in `previousList` it means that the lists got merged.\n\t\t\t\t\t// In this case, we need to fix insert position.\n\t\t\t\t\tif ( mergePos && mergePos.parent == previousList ) {\n\t\t\t\t\t\tviewPosition.offset--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Merge last inserted list with element after it.\n\t\t\tmergeViewLists( viewWriter, viewPosition.nodeBefore!, viewPosition.nodeAfter! );\n\t\t}\n\t}\n};\n\n/**\n * A special model-to-view converter introduced by the {@link module:list/list~List list feature}. This converter takes care of\n * merging view lists after something is removed or moved from near them.\n *\n * Example:\n *\n * ```xml\n * // Model: // View:\n * <listItem>foo</listItem> <ul><li>foo</li></ul>\n * <paragraph>xxx</paragraph> <p>xxx</p>\n * <listItem>bar</listItem> <ul><li>bar</li></ul>\n *\n * // After change: // Correct view guaranteed by this converter:\n * <listItem>foo</listItem> <ul>\n * <listItem>bar</listItem> <li>foo</li>\n * <li>bar</li>\n * </ul>\n * ```\n *\n * @see module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:remove\n */\nexport const modelViewMergeAfter: GetCallback<DowncastRemoveEvent> = ( evt, data, conversionApi ) => {\n\tconst viewPosition = conversionApi.mapper.toViewPosition( data.position );\n\tconst viewItemPrev = viewPosition.nodeBefore;\n\tconst viewItemNext = viewPosition.nodeAfter;\n\n\t// Merge lists if something (remove, move) was done from inside of list.\n\t// Merging will be done only if both items are view lists of the same type.\n\t// The check is done inside the helper function.\n\tmergeViewLists( conversionApi.writer, viewItemPrev!, viewItemNext! );\n};\n\n/**\n * A view-to-model converter that converts the `<li>` view elements into the `listItem` model elements.\n *\n * To set correct values of the `listType` and `listIndent` attributes the converter:\n * * checks `<li>`'s parent,\n * * stores and increases the `conversionApi.store.indent` value when `<li>`'s sub-items are converted.\n *\n * @see module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:element\n */\nexport const viewModelConverter: GetCallback<UpcastElementEvent> = ( evt, data, conversionApi ) => {\n\tif ( conversionApi.consumable.consume( data.viewItem, { name: true } ) ) {\n\t\tconst writer = conversionApi.writer;\n\n\t\t// 1. Create `listItem` model element.\n\t\tconst listItem = writer.createElement( 'listItem' );\n\n\t\t// 2. Handle `listItem` model element attributes.\n\t\tconst indent = getIndent( data.viewItem );\n\n\t\twriter.setAttribute( 'listIndent', indent, listItem );\n\n\t\t// Set 'bulleted' as default. If this item is pasted into a context,\n\t\tconst type = data.viewItem.parent && ( data.viewItem.parent as any ).name == 'ol' ? 'numbered' : 'bulleted';\n\t\twriter.setAttribute( 'listType', type, listItem );\n\n\t\tif ( !conversionApi.safeInsert( listItem, data.modelCursor ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst nextPosition = viewToModelListItemChildrenConverter( listItem, data.viewItem.getChildren(), conversionApi );\n\n\t\t// Result range starts before the first item and ends after the last.\n\t\tdata.modelRange = writer.createRange( data.modelCursor, nextPosition );\n\n\t\tconversionApi.updateConversionResult( listItem, data );\n\t}\n};\n\n/**\n * A view-to-model converter for the `<ul>` and `<ol>` view elements that cleans the input view of garbage.\n * This is mostly to clean whitespaces from between the `<li>` view elements inside the view list element, however, also\n * incorrect data can be cleared if the view was incorrect.\n *\n * @see module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:element\n */\nexport const cleanList: GetCallback<UpcastElementEvent> = ( evt, data, conversionApi ) => {\n\tif ( conversionApi.consumable.test( data.viewItem, { name: true } ) ) {\n\t\t// Caching children because when we start removing them iterating fails.\n\t\tconst children = Array.from( data.viewItem.getChildren() );\n\n\t\tfor ( const child of children ) {\n\t\t\tconst isWrongElement = !( child.is( 'element', 'li' ) || isList( child ) );\n\n\t\t\tif ( isWrongElement ) {\n\t\t\t\tchild._remove();\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * A view-to-model converter for the `<li>` elements that cleans whitespace formatting from the input view.\n *\n * @see module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:element\n */\nexport const cleanListItem: GetCallback<UpcastElementEvent> = ( evt, data, conversionApi ) => {\n\tif ( conversionApi.consumable.test( data.viewItem, { name: true } ) ) {\n\t\tif ( data.viewItem.childCount === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst children = [ ...data.viewItem.getChildren() ];\n\n\t\tlet foundList = false;\n\n\t\tfor ( const child of children ) {\n\t\t\tif ( foundList && !isList( child ) ) {\n\t\t\t\tchild._remove();\n\t\t\t}\n\n\t\t\tif ( isList( child ) ) {\n\t\t\t\t// If this is a <ul> or <ol>, do not process it, just mark that we already visited list element.\n\t\t\t\tfoundList = true;\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * Returns a callback for model position to view position mapping for {@link module:engine/conversion/mapper~Mapper}. The callback fixes\n * positions between the `listItem` elements that would be incorrectly mapped because of how list items are represented in the model\n * and in the view.\n */\nexport function modelToViewPosition( view: View ): GetCallback<MapperModelToViewPositionEvent> {\n\treturn ( evt, data ) => {\n\t\tif ( data.isPhantom ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst modelItem = data.modelPosition.nodeBefore;\n\n\t\tif ( modelItem && modelItem.is( 'element', 'listItem' ) ) {\n\t\t\tconst viewItem = data.mapper.toViewElement( modelItem )!;\n\t\t\tconst topmostViewList = viewItem.getAncestors().find( isList );\n\t\t\tconst walker = view.createPositionAt( viewItem, 0 ).getWalker();\n\n\t\t\tfor ( const value of walker ) {\n\t\t\t\tif ( value.type == 'elementStart' && value.item.is( 'element', 'li' ) ) {\n\t\t\t\t\tdata.viewPosition = value.previousPosition;\n\n\t\t\t\t\tbreak;\n\t\t\t\t} else if ( value.type == 'elementEnd' && value.item == topmostViewList ) {\n\t\t\t\t\tdata.viewPosition = value.nextPosition;\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * The callback for view position to model position mapping for {@link module:engine/conversion/mapper~Mapper}. The callback fixes\n * positions between the `<li>` elements that would be incorrectly mapped because of how list items are represented in the model\n * and in the view.\n *\n * @see module:engine/conversion/mapper~Mapper#event:viewToModelPosition\n * @param model Model instance.\n * @returns Returns a conversion callback.\n */\nexport function viewToModelPosition( model: Model ): GetCallback<MapperViewToModelPositionEvent> {\n\treturn ( evt, data ) => {\n\t\tconst viewPos = data.viewPosition;\n\t\tconst viewParent = viewPos.parent as ViewElement;\n\t\tconst mapper = data.mapper;\n\n\t\tif ( viewParent.name == 'ul' || viewParent.name == 'ol' ) {\n\t\t\t// Position is directly in <ul> or <ol>.\n\t\t\tif ( !viewPos.isAtEnd ) {\n\t\t\t\t// If position is not at the end, it must be before <li>.\n\t\t\t\t// Get that <li>, map it to `listItem` and set model position before that `listItem`.\n\t\t\t\tconst modelNode = mapper.toModelElement( viewPos.nodeAfter as any )!;\n\n\t\t\t\tdata.modelPosition = model.createPositionBefore( modelNode );\n\t\t\t} else {\n\t\t\t\t// Position is at the end of <ul> or <ol>, so there is no <li> after it to be mapped.\n\t\t\t\t// There is <li> before the position, but we cannot just map it to `listItem` and set model position after it,\n\t\t\t\t// because that <li> may contain nested items.\n\t\t\t\t// We will check \"model length\" of that <li>, in other words - how many `listItem`s are in that <li>.\n\t\t\t\tconst modelNode = mapper.toModelElement( viewPos.nodeBefore as any );\n\t\t\t\tconst modelLength = mapper.getModelLength( viewPos.nodeBefore! );\n\n\t\t\t\t// Then we get model position before mapped `listItem` and shift it accordingly.\n\t\t\t\tdata.modelPosition = model.createPositionBefore( modelNode! ).getShiftedBy( modelLength );\n\t\t\t}\n\n\t\t\tevt.stop();\n\t\t} else if (\n\t\t\tviewParent.name == 'li' &&\n\t\t\tviewPos.nodeBefore &&\n\t\t\t( ( viewPos.nodeBefore as any ).name == 'ul' || ( viewPos.nodeBefore as any ).name == 'ol' )\n\t\t) {\n\t\t\t// In most cases when view position is in <li> it is in text and this is a correct position.\n\t\t\t// However, if position is after <ul> or <ol> we have to fix it -- because in model <ul>/<ol> are not in the `listItem`.\n\t\t\tconst modelNode = mapper.toModelElement( viewParent );\n\n\t\t\t// Check all <ul>s and <ol>s that are in the <li> but before mapped position.\n\t\t\t// Get model length of those elements and then add it to the offset of `listItem` mapped to the original <li>.\n\t\t\tlet modelLength = 1; // Starts from 1 because the original <li> has to be counted in too.\n\t\t\tlet viewList: ViewNode | null = viewPos.nodeBefore;\n\n\t\t\twhile ( viewList && isList( viewList ) ) {\n\t\t\t\tmodelLength += mapper.getModelLength( viewList );\n\n\t\t\t\tviewList = viewList.previousSibling;\n\t\t\t}\n\n\t\t\tdata.modelPosition = model.createPositionBefore( modelNode! ).getShiftedBy( modelLength );\n\n\t\t\tevt.stop();\n\t\t}\n\t};\n}\n\n/**\n * Post-fixer that reacts to changes on document and fixes incorrect model states.\n *\n * In the example below, there is a correct list structure.\n * Then the middle element is removed so the list structure will become incorrect:\n *\n * ```xml\n * <listItem listType=\"bulleted\" listIndent=0>Item 1</listItem>\n * <listItem listType=\"bulleted\" listIndent=1>Item 2</listItem> <--- this is removed.\n * <listItem listType=\"bulleted\" listIndent=2>Item 3</listItem>\n * ```\n *\n * The list structure after the middle element is removed:\n *\n * ```xml\n * <listItem listType=\"bulleted\" listIndent=0>Item 1</listItem>\n * <listItem listType=\"bulleted\" listIndent=2>Item 3</listItem>\n * ```\n *\n * Should become:\n *\n * ```xml\n * <listItem listType=\"bulleted\" listIndent=0>Item 1</listItem>\n * <listItem listType=\"bulleted\" listIndent=1>Item 3</listItem> <--- note that indent got post-fixed.\n * ```\n *\n * @param model The data model.\n * @param writer The writer to do changes with.\n * @returns `true` if any change has been applied, `false` otherwise.\n */\nexport function modelChangePostFixer( model: Model, writer: Writer ): boolean {\n\tconst changes = model.document.differ.getChanges();\n\tconst itemToListHead = new Map<Element, Element>();\n\n\tlet applied = false;\n\n\tfor ( const entry of changes ) {\n\t\tif ( entry.type == 'insert' && entry.name == 'listItem' ) {\n\t\t\t_addListToFix( entry.position );\n\t\t} else if ( entry.type == 'insert' && entry.name != 'listItem' ) {\n\t\t\tif ( entry.name != '$text' ) {\n\t\t\t\t// In case of renamed element.\n\t\t\t\tconst item = entry.position.nodeAfter as Element;\n\n\t\t\t\tif ( item.hasAttribute( 'listIndent' ) ) {\n\t\t\t\t\twriter.removeAttribute( 'listIndent', item );\n\n\t\t\t\t\tapplied = true;\n\t\t\t\t}\n\n\t\t\t\tif ( item.hasAttribute( 'listType' ) ) {\n\t\t\t\t\twriter.removeAttribute( 'listType', item );\n\n\t\t\t\t\tapplied = true;\n\t\t\t\t}\n\n\t\t\t\tif ( item.hasAttribute( 'listStyle' ) ) {\n\t\t\t\t\twriter.removeAttribute( 'listStyle', item );\n\n\t\t\t\t\tapplied = true;\n\t\t\t\t}\n\n\t\t\t\tif ( item.hasAttribute( 'listReversed' ) ) {\n\t\t\t\t\twriter.removeAttribute( 'listReversed', item );\n\n\t\t\t\t\tapplied = true;\n\t\t\t\t}\n\n\t\t\t\tif ( item.hasAttribute( 'listStart' ) ) {\n\t\t\t\t\twriter.removeAttribute( 'listStart', item );\n\n\t\t\t\t\tapplied = true;\n\t\t\t\t}\n\n\t\t\t\tfor ( const innerItem of Array.from( model.createRangeIn( item ) ).filter( e => e.item.is( 'element', 'listItem' ) ) ) {\n\t\t\t\t\t_addListToFix( innerItem.previousPosition );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst posAfter = entry.position.getShiftedBy( entry.length );\n\n\t\t\t_addListToFix( posAfter );\n\t\t} else if ( entry.type == 'remove' && entry.name == 'listItem' ) {\n\t\t\t_addListToFix( entry.position );\n\t\t} else if ( entry.type == 'attribute' && entry.attributeKey == 'listIndent' ) {\n\t\t\t_addListToFix( entry.range.start );\n\t\t} else if ( entry.type == 'attribute' && entry.attributeKey == 'listType' ) {\n\t\t\t_addListToFix( entry.range.start );\n\t\t}\n\t}\n\n\tfor ( const listHead of itemToListHead.values() ) {\n\t\t_fixListIndents( listHead );\n\t\t_fixListTypes( listHead );\n\t}\n\n\treturn applied;\n\n\tfunction _addListToFix( position: Position ) {\n\t\tconst previousNode = position.nodeBefore;\n\n\t\tif ( !previousNode || !previousNode.is( 'element', 'listItem' ) ) {\n\t\t\tconst item = position.nodeAfter;\n\n\t\t\tif ( item && item.is( 'element', 'listItem' ) ) {\n\t\t\t\titemToListHead.set( item, item );\n\t\t\t}\n\t\t} else {\n\t\t\tlet listHead = previousNode;\n\n\t\t\tif ( itemToListHead.has( listHead ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (\n\t\t\t\t// Cache previousSibling and reuse for performance reasons. See #6581.\n\t\t\t\tlet previousSibling = listHead.previousSibling;\n\t\t\t\tpreviousSibling && previousSibling.is( 'element', 'listItem' );\n\t\t\t\tpreviousSibling = listHead.previousSibling\n\t\t\t) {\n\t\t\t\tlistHead = previousSibling;\n\n\t\t\t\tif ( itemToListHead.has( listHead ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\titemToListHead.set( previousNode, listHead );\n\t\t}\n\t}\n\n\tfunction _fixListIndents( item: Node | null ) {\n\t\tlet maxIndent = 0;\n\t\tlet fixBy = null;\n\n\t\twhile ( item && item.is( 'element', 'listItem' ) ) {\n\t\t\tconst itemIndent = item.getAttribute( 'listIndent' ) as number;\n\n\t\t\tif ( itemIndent > maxIndent ) {\n\t\t\t\tlet newIndent;\n\n\t\t\t\tif ( fixBy === null ) {\n\t\t\t\t\tfixBy = itemIndent - maxIndent;\n\t\t\t\t\tnewIndent = maxIndent;\n\t\t\t\t} else {\n\t\t\t\t\tif ( fixBy > itemIndent ) {\n\t\t\t\t\t\tfixBy = itemIndent;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewIndent = itemIndent - fixBy;\n\t\t\t\t}\n\n\t\t\t\twriter.setAttribute( 'listIndent', newIndent, item );\n\n\t\t\t\tapplied = true;\n\t\t\t} else {\n\t\t\t\tfixBy = null;\n\t\t\t\tmaxIndent = item.getAttribute( 'listIndent' ) as number + 1;\n\t\t\t}\n\n\t\t\titem = item.nextSibling;\n\t\t}\n\t}\n\n\tfunction _fixListTypes( item: Node | null ) {\n\t\tlet typesStack: Array<string> = [];\n\t\tlet prev = null;\n\n\t\twhile ( item && item.is( 'element', 'listItem' ) ) {\n\t\t\tconst itemIndent = item.getAttribute( 'listIndent' ) as number;\n\n\t\t\tif ( prev && prev.getAttribute( 'listIndent' ) as number > itemIndent ) {\n\t\t\t\ttypesStack = typesStack.slice( 0, itemIndent + 1 );\n\t\t\t}\n\n\t\t\tif ( itemIndent != 0 ) {\n\t\t\t\tif ( typesStack[ itemIndent ] ) {\n\t\t\t\t\tconst type = typesStack[ itemIndent ];\n\n\t\t\t\t\tif ( item.getAttribute( 'listType' ) != type ) {\n\t\t\t\t\t\twriter.setAttribute( 'listType', type, item );\n\n\t\t\t\t\t\tapplied = true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttypesStack[ itemIndent ] = item.getAttribute( 'listType' ) as string;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tprev = item;\n\t\t\titem = item.nextSibling;\n\t\t}\n\t}\n}\n\n/**\n * A fixer for pasted content that includes list items.\n *\n * It fixes indentation of pasted list items so the pasted items match correctly to the context they are pasted into.\n *\n * Example:\n *\n * ```xml\n * <listItem listType=\"bulleted\" listIndent=0>A</listItem>\n * <listItem listType=\"bulleted\" listIndent=1>B^</listItem>\n * // At ^ paste: <listItem listType=\"bulleted\" listIndent=4>X</listItem>\n * // <listItem listType=\"bulleted\" listIndent=5>Y</listItem>\n * <listItem listType=\"bulleted\" listIndent=2>C</listItem>\n * ```\n *\n * Should become:\n *\n * ```xml\n * <listItem listType=\"bulleted\" listIndent=0>A</listItem>\n * <listItem listType=\"bulleted\" listIndent=1>BX</listItem>\n * <listItem listType=\"bulleted\" listIndent=2>Y/listItem>\n * <listItem listType=\"bulleted\" listIndent=2>C</listItem>\n * ```\n */\nexport const modelIndentPasteFixer: GetCallback<ModelInsertContentEvent> = function( evt, [ content, selectable ] ) {\n\tconst model = this as Model;\n\n\t// Check whether inserted content starts from a `listItem`. If it does not, it means that there are some other\n\t// elements before it and there is no need to fix indents, because even if we insert that content into a list,\n\t// that list will be broken.\n\t// Note: we also need to handle singular elements because inserting item with indent 0 into 0,1,[],2\n\t// would create incorrect model.\n\tlet item = content.is( 'documentFragment' ) ? content.getChild( 0 ) : content;\n\n\tlet selection;\n\n\tif ( !selectable ) {\n\t\tselection = model.document.selection;\n\t} else {\n\t\tselection = model.createSelection( selectable );\n\t}\n\n\tif ( item && item.is( 'element', 'listItem' ) ) {\n\t\t// Get a reference list item. Inserted list items will be fixed according to that item.\n\t\tconst pos = selection.getFirstPosition()!;\n\t\tlet refItem = null;\n\n\t\tif ( pos.parent.is( 'element', 'listItem' ) ) {\n\t\t\trefItem = pos.parent;\n\t\t} else if ( pos.nodeBefore && pos.nodeBefore.is( 'element', 'listItem' ) ) {\n\t\t\trefItem = pos.nodeBefore;\n\t\t}\n\n\t\t// If there is `refItem` it means that we do insert list items into an existing list.\n\t\tif ( refItem ) {\n\t\t\t// First list item in `data` has indent equal to 0 (it is a first list item). It should have indent equal\n\t\t\t// to the indent of reference item. We have to fix the first item and all of it's children and following siblings.\n\t\t\t// Indent of all those items has to be adjusted to reference item.\n\t\t\tconst indentChange = refItem.getAttribute( 'listIndent' ) as number;\n\n\t\t\t// Fix only if there is anything to fix.\n\t\t\tif ( indentChange > 0 ) {\n\t\t\t\t// Adjust indent of all \"first\" list items in inserted data.\n\t\t\t\twhile ( item && item.is( 'element', 'listItem' ) ) {\n\t\t\t\t\titem._setAttribute( 'listIndent', item.getAttribute( 'listIndent' ) as number + indentChange );\n\n\t\t\t\t\titem = item.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * Helper function that converts children of a given `<li>` view element into corresponding model elements.\n * The function maintains proper order of elements if model `listItem` is split during the conversion\n * due to block children conversion.\n *\n * @param listItemModel List item model element to which converted children will be inserted.\n * @param viewChildren View elements which will be converted.\n * @param conversionApi Conversion interface to be used by the callback.\n * @returns Position on which next elements should be inserted after children conversion.\n */\nfunction viewToModelListItemChildrenConverter(\n\tlistItemModel: Element,\n\tviewChildren: Iterable<ViewNode>,\n\tconversionApi: UpcastConversionApi\n) {\n\tconst { writer, schema } = conversionApi;\n\n\t// A position after the last inserted `listItem`.\n\tlet nextPosition = writer.createPositionAfter( listItemModel );\n\n\t// Check all children of the converted `<li>`. At this point we assume there are no \"whitespace\" view text nodes\n\t// in view list, between view list items. This should be handled by `<ul>` and `<ol>` converters.\n\tfor ( const child of viewChildren ) {\n\t\tif ( ( child as any ).name == 'ul' || ( child as any ).name == 'ol' ) {\n\t\t\t// If the children is a list, we will insert its conversion result after currently handled `listItem`.\n\t\t\t// Then, next insertion position will be set after all the new list items (and maybe other elements if\n\t\t\t// something split list item).\n\t\t\t//\n\t\t\t// If this is a list, we expect that some `listItem`s and possibly other blocks will be inserted, however `.modelCursor`\n\t\t\t// should be set after last `listItem` (or block). This is why it feels safe to use it as `nextPosition`\n\t\t\tnextPosition = conversionApi.convertItem( child, nextPosition ).modelCursor;\n\t\t} else {\n\t\t\t// If this is not a list, try inserting content at the end of the currently handled `listItem`.\n\t\t\tconst result = conversionApi.convertItem( child, writer.createPositionAt( listItemModel, 'end' ) );\n\n\t\t\t// It may end up that the current `listItem` becomes split (if that content cannot be inside `listItem`). For example:\n\t\t\t//\n\t\t\t// <li><p>Foo</p></li>\n\t\t\t//\n\t\t\t// will be converted to:\n\t\t\t//\n\t\t\t// <listItem></listItem><paragraph>Foo</paragraph><listItem></listItem>\n\t\t\t//\n\t\t\tconst convertedChild = result.modelRange!.start.nodeAfter;\n\t\t\tconst wasSplit = convertedChild && convertedChild.is( 'element' ) && !schema.checkChild( listItemModel, convertedChild.name );\n\n\t\t\tif ( wasSplit ) {\n\t\t\t\t// As `lastListItem` got split, we need to update it to the second part of the split `listItem` element.\n\t\t\t\t//\n\t\t\t\t// `modelCursor` should be set to a position where the conversion should continue. There are multiple possible scenarios\n\t\t\t\t// that may happen. Usually, `modelCursor` (marked as `#` below) would point to the second list item after conversion:\n\t\t\t\t//\n\t\t\t\t//\t\t`<li><p>Foo</p></li>` -> `<listItem></listItem><paragraph>Foo</paragraph><listItem>#</listItem>`\n\t\t\t\t//\n\t\t\t\t// However, in some cases, like auto-paragraphing, the position is placed at the end of the block element:\n\t\t\t\t//\n\t\t\t\t//\t\t`<li><div>Foo</div></li>` -> `<listItem></listItem><paragraph>Foo#</paragraph><listItem></listItem>`\n\t\t\t\t//\n\t\t\t\t// or after an element if another element broken auto-paragraphed element:\n\t\t\t\t//\n\t\t\t\t//\t\t`<li><div><h2>Foo</h2></div></li>` -> `<listItem></listItem><heading1>Foo</heading1>#<listItem></listItem>`\n\t\t\t\t//\n\t\t\t\t// We need to check for such cases and use proper list item and position based on it.\n\t\t\t\t//\n\t\t\t\tif ( result.modelCursor.parent.is( 'element', 'listItem' ) ) {\n\t\t\t\t\t// (1).\n\t\t\t\t\tlistItemModel = result.modelCursor.parent;\n\t\t\t\t} else {\n\t\t\t\t\t// (2), (3).\n\t\t\t\t\tlistItemModel = findNextListItem( result.modelCursor );\n\t\t\t\t}\n\n\t\t\t\tnextPosition = writer.createPositionAfter( listItemModel );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nextPosition;\n}\n\n/**\n * Helper function that seeks for a next list item starting from given `startPosition`.\n */\nfunction findNextListItem( startPosition: Position ) {\n\tconst treeWalker = new TreeWalker( { startPosition } );\n\n\tlet value;\n\n\tdo {\n\t\tvalue = treeWalker.next();\n\t} while ( !value.value.item.is( 'element', 'listItem' ) );\n\n\treturn value.value.item;\n}\n\n/**\n * Helper function that takes all children of given `viewRemovedItem` and moves them in a correct place, according\n * to other given parameters.\n */\nfunction hoistNestedLists(\n\tnextIndent: number,\n\tmodelRemoveStartPosition: Position,\n\tviewRemoveStartPosition: ViewPosition,\n\tviewRemovedItem: ViewElement,\n\tconversionApi: DowncastConversionApi,\n\tmodel: Model\n) {\n\t// Find correct previous model list item element.\n\t// The element has to have either same or smaller indent than given reference indent.\n\t// This will be the model element which will get nested items (if it has smaller indent) or sibling items (if it has same indent).\n\t// Keep in mind that such element might not be found, if removed item was the first item.\n\tconst prevModelItem = getSiblingListItem( modelRemoveStartPosition.nodeBefore, {\n\t\tsameIndent: true,\n\t\tsmallerIndent: true,\n\t\tlistIndent: nextIndent\n\t} );\n\n\tconst mapper = conversionApi.mapper;\n\tconst viewWriter = conversionApi.writer;\n\n\t// Indent of found element or `null` if the element has not been found.\n\tconst prevIndent = prevModelItem ? prevModelItem.getAttribute( 'listIndent' ) : null;\n\n\tlet insertPosition;\n\n\tif ( !prevModelItem ) {\n\t\t// If element has not been found, simply insert lists at the position where the removed item was:\n\t\t//\n\t\t// Lorem ipsum.\n\t\t// 1 -------- <--- this is removed, no previous list item, put nested items in place of removed item.\n\t\t// 1.1 -------- <--- this is reference indent.\n\t\t// 1.1.1 --------\n\t\t// 1.1.2 --------\n\t\t// 1.2 --------\n\t\t//\n\t\t// Becomes:\n\t\t//\n\t\t// Lorem ipsum.\n\t\t// 1.1 --------\n\t\t// 1.1.1 --------\n\t\t// 1.1.2 --------\n\t\t// 1.2 --------\n\t\tinsertPosition = viewRemoveStartPosition;\n\t} else if ( prevIndent == nextIndent ) {\n\t\t// If element has been found and has same indent as reference indent it means that nested items should\n\t\t// become siblings of found element:\n\t\t//\n\t\t// 1 --------\n\t\t// 1.1 --------\n\t\t// 1.2 -------- <--- this is `prevModelItem`.\n\t\t// 2 -------- <--- this is removed, previous list item has indent same as reference indent.\n\t\t// 2.1 -------- <--- this is reference indent, this and 2.2 should become siblings of 1.2.\n\t\t// 2.2 --------\n\t\t//\n\t\t// Becomes:\n\t\t//\n\t\t// 1 --------\n\t\t// 1.1 --------\n\t\t// 1.2 --------\n\t\t// 2.1 --------\n\t\t// 2.2 --------\n\t\tconst prevViewList = mapper.toViewElement( prevModelItem )!.parent as ViewElement;\n\t\tinsertPosition = viewWriter.createPositionAfter( prevViewList );\n\t} else {\n\t\t// If element has been found and has smaller indent as reference indent it means that nested items\n\t\t// should become nested items of found item:\n\t\t//\n\t\t// 1 -------- <--- this is `prevModelItem`.\n\t\t// 1.1 -------- <--- this is removed, previous list item has indent smaller than reference indent.\n\t\t// 1.1.1 -------- <--- this is reference indent, this and 1.1.1 should become nested items of 1.\n\t\t// 1.1.2 --------\n\t\t// 1.2 --------\n\t\t//\n\t\t// Becomes:\n\t\t//\n\t\t// 1 --------\n\t\t// 1.1.1 --------\n\t\t// 1.1.2 --------\n\t\t// 1.2 --------\n\t\t//\n\t\t// Note: in this case 1.1.1 have indent 2 while 1 have indent 0. In model that should not be possible,\n\t\t// because following item may have indent bigger only by one. But this is fixed by postfixer.\n\t\tconst modelPosition = model.createPositionAt( prevModelItem, 'end' );\n\t\tinsertPosition = mapper.toViewPosition( modelPosition );\n\t}\n\n\tinsertPosition = positionAfterUiElements( insertPosition );\n\n\t// Handle multiple lists. This happens if list item has nested numbered and bulleted lists. Following lists\n\t// are inserted after the first list (no need to recalculate insertion position for them).\n\tfor ( const child of [ ...viewRemovedItem.getChildren() ] ) {\n\t\tif ( isList( child ) ) {\n\t\t\tinsertPosition = viewWriter.move( viewWriter.createRangeOn( child ), insertPosition ).end;\n\n\t\t\tmergeViewLists( viewWriter, child, child.nextSibling! );\n\t\t\tmergeViewLists( viewWriter, child.previousSibling!, child );\n\t\t}\n\t}\n}\n\n/**\n * Checks if view element is a list type (ul or ol).\n */\nfunction isList( viewElement: ViewTypeCheckable ): viewElement is ViewElement & { name: 'ol' | 'ul' } {\n\treturn viewElement.is( 'element', 'ol' ) || viewElement.is( 'element', 'ul' );\n}\n\n/**\n * Calculates the indent value for a list item. Handles HTML compliant and non-compliant lists.\n *\n * Also, fixes non HTML compliant lists indents:\n *\n * ```\n * before: fixed list:\n * OL OL\n * |-> LI (parent LIs: 0) |-> LI (indent: 0)\n * |-> OL |-> OL\n * |-> OL |\n * | |-> OL |\n * | |-> OL |\n * | |-> LI (parent LIs: 1) |-> LI (indent: 1)\n * |-> LI (parent LIs: 1) |-> LI (indent: 1)\n *\n * before: fixed list:\n * OL OL\n * |-> OL |\n * |-> OL |\n * |-> OL |\n * |-> LI (parent LIs: 0) |-> LI (indent: 0)\n *\n * before: fixed list:\n * OL OL\n * |-> LI (parent LIs: 0) |-> LI (indent: 0)\n * |-> OL |-> OL\n * |-> LI (parent LIs: 0) |-> LI (indent: 1)\n * ```\n */\nfunction getIndent( listItem: ViewElement ) {\n\tlet indent = 0;\n\n\tlet parent = listItem.parent as ViewElement;\n\n\twhile ( parent ) {\n\t\t// Each LI in the tree will result in an increased indent for HTML compliant lists.\n\t\tif ( parent.is( 'element', 'li' ) ) {\n\t\t\tindent++;\n\t\t} else {\n\t\t\t// If however the list is nested in other list we should check previous sibling of any of the list elements...\n\t\t\tconst previousSibling = parent.previousSibling;\n\n\t\t\t// ...because the we might need increase its indent:\n\t\t\t//\t\tbefore: fixed list:\n\t\t\t//\t\tOL OL\n\t\t\t//\t\t|-> LI (parent LIs: 0) |-> LI (indent: 0)\n\t\t\t//\t\t|-> OL |-> OL\n\t\t\t//\t\t |-> LI (parent LIs: 0) |-> LI (indent: 1)\n\t\t\tif ( previousSibling && previousSibling.is( 'element', 'li' ) ) {\n\t\t\t\tindent++;\n\t\t\t}\n\t\t}\n\n\t\tparent = parent.parent as ViewElement;\n\t}\n\n\treturn indent;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module list/list/listediting\n */\n\nimport ListCommand from './listcommand';\nimport IndentCommand from './indentcommand';\nimport ListUtils from './listutils';\n\nimport { Plugin, type MultiCommand } from 'ckeditor5/src/core';\n\nimport { Enter, type ViewDocumentEnterEvent } from 'ckeditor5/src/enter';\nimport { Delete, type ViewDocumentDeleteEvent } from 'ckeditor5/src/typing';\n\nimport type {\n\tDowncastAttributeEvent,\n\tDowncastInsertEvent,\n\tDowncastRemoveEvent,\n\tElement,\n\tMapperModelToViewPositionEvent,\n\tMapperViewToModelPositionEvent,\n\tModelInsertContentEvent,\n\tUpcastElementEvent,\n\tViewDocumentTabEvent,\n\tViewElement\n} from 'ckeditor5/src/engine';\n\nimport {\n\tcleanList,\n\tcleanListItem,\n\tmodelViewInsertion,\n\tmodelViewChangeType,\n\tmodelViewMergeAfterChangeType,\n\tmodelViewMergeAfter,\n\tmodelViewRemove,\n\tmodelViewSplitOnInsert,\n\tmodelViewChangeIndent,\n\tmodelChangePostFixer,\n\tmodelIndentPasteFixer,\n\tviewModelConverter,\n\tmodelToViewPosition,\n\tviewToModelPosition\n} from './converters';\n\nimport '../../theme/list.css';\n\n/**\n * The engine of the list feature. It handles creating, editing and removing lists and list items.\n *\n * It registers the `'numberedList'`, `'bulletedList'`, `'indentList'` and `'outdentList'` commands.\n */\nexport default class ListEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ListEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Enter, Delete, ListUtils ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Schema.\n\t\t// Note: in case `$block` will ever be allowed in `listItem`, keep in mind that this feature\n\t\t// uses `Selection#getSelectedBlocks()` without any additional processing to obtain all selected list items.\n\t\t// If there are blocks allowed inside list item, algorithms using `getSelectedBlocks()` will have to be modified.\n\t\teditor.model.schema.register( 'listItem', {\n\t\t\tinheritAllFrom: '$block',\n\t\t\tallowAttributes: [ 'listType', 'listIndent' ]\n\t\t} );\n\n\t\t// Converters.\n\t\tconst data = editor.data;\n\t\tconst editing = editor.editing;\n\n\t\teditor.model.document.registerPostFixer( writer => modelChangePostFixer( editor.model, writer ) );\n\n\t\tediting.mapper.registerViewToModelLength( 'li', getViewListItemLength );\n\t\tdata.mapper.registerViewToModelLength( 'li', getViewListItemLength );\n\n\t\tediting.mapper.on<MapperModelToViewPositionEvent>( 'modelToViewPosition', modelToViewPosition( editing.view ) );\n\t\tediting.mapper.on<MapperViewToModelPositionEvent>( 'viewToModelPosition', viewToModelPosition( editor.model ) );\n\t\tdata.mapper.on<MapperModelToViewPositionEvent>( 'modelToViewPosition', modelToViewPosition( editing.view ) );\n\n\t\teditor.conversion.for( 'editingDowncast' )\n\t\t\t.add( dispatcher => {\n\t\t\t\tdispatcher.on<DowncastInsertEvent<Element>>( 'insert', modelViewSplitOnInsert, { priority: 'high' } );\n\t\t\t\tdispatcher.on<DowncastInsertEvent<Element>>( 'insert:listItem', modelViewInsertion( editor.model ) );\n\t\t\t\tdispatcher.on<DowncastAttributeEvent<Element>>( 'attribute:listType:listItem', modelViewChangeType, { priority: 'high' } );\n\t\t\t\tdispatcher.on<DowncastAttributeEvent<Element>>(\n\t\t\t\t\t'attribute:listType:listItem', modelViewMergeAfterChangeType, { priority: 'low' } );\n\t\t\t\tdispatcher.on<DowncastAttributeEvent<Element>>( 'attribute:listIndent:listItem', modelViewChangeIndent( editor.model ) );\n\t\t\t\tdispatcher.on<DowncastRemoveEvent>( 'remove:listItem', modelViewRemove( editor.model ) );\n\t\t\t\tdispatcher.on<DowncastRemoveEvent>( 'remove', modelViewMergeAfter, { priority: 'low' } );\n\t\t\t} );\n\n\t\teditor.conversion.for( 'dataDowncast' )\n\t\t\t.add( dispatcher => {\n\t\t\t\tdispatcher.on<DowncastInsertEvent<Element>>( 'insert', modelViewSplitOnInsert, { priority: 'high' } );\n\t\t\t\tdispatcher.on<DowncastInsertEvent<Element>>( 'insert:listItem', modelViewInsertion( editor.model ) );\n\t\t\t} );\n\n\t\teditor.conversion.for( 'upcast' )\n\t\t\t.add( dispatcher => {\n\t\t\t\tdispatcher.on<UpcastElementEvent>( 'element:ul', cleanList, { priority: 'high' } );\n\t\t\t\tdispatcher.on<UpcastElementEvent>( 'element:ol', cleanList, { priority: 'high' } );\n\t\t\t\tdispatcher.on<UpcastElementEvent>( 'element:li', cleanListItem, { priority: 'high' } );\n\t\t\t\tdispatcher.on<UpcastElementEvent>( 'element:li', viewModelConverter );\n\t\t\t} );\n\n\t\t// Fix indentation of pasted items.\n\t\teditor.model.on<ModelInsertContentEvent>( 'insertContent', modelIndentPasteFixer, { priority: 'high' } );\n\n\t\t// Register commands for numbered and bulleted list.\n\t\teditor.commands.add( 'numberedList', new ListCommand( editor, 'numbered' ) );\n\t\teditor.commands.add( 'bulletedList', new ListCommand( editor, 'bulleted' ) );\n\n\t\t// Register commands for indenting.\n\t\teditor.commands.add( 'indentList', new IndentCommand( editor, 'forward' ) );\n\t\teditor.commands.add( 'outdentList', new IndentCommand( editor, 'backward' ) );\n\n\t\tconst viewDocument = editing.view.document;\n\n\t\t// Overwrite default Enter key behavior.\n\t\t// If Enter key is pressed with selection collapsed in empty list item, outdent it instead of breaking it.\n\t\tthis.listenTo<ViewDocumentEnterEvent>( viewDocument, 'enter', ( evt, data ) => {\n\t\t\tconst doc = this.editor.model.document;\n\t\t\tconst positionParent = doc.selection.getLastPosition()!.parent;\n\n\t\t\tif ( doc.selection.isCollapsed && positionParent.name == 'listItem' && positionParent.isEmpty ) {\n\t\t\t\tthis.editor.execute( 'outdentList' );\n\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: 'li' } );\n\n\t\t// Overwrite default Backspace key behavior.\n\t\t// If Backspace key is pressed with selection collapsed on first position in first list item, outdent it. #83\n\t\tthis.listenTo<ViewDocumentDeleteEvent>( viewDocument, 'delete', ( evt, data ) => {\n\t\t\t// Check conditions from those that require less computations like those immediately available.\n\t\t\tif ( data.direction !== 'backward' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selection = this.editor.model.document.selection;\n\n\t\t\tif ( !selection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst firstPosition = selection.getFirstPosition()!;\n\n\t\t\tif ( !firstPosition.isAtStart ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst positionParent = firstPosition.parent;\n\n\t\t\tif ( positionParent.name !== 'listItem' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst previousIsAListItem = positionParent.previousSibling && ( positionParent.previousSibling as any ).name === 'listItem';\n\n\t\t\tif ( previousIsAListItem ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.editor.execute( 'outdentList' );\n\n\t\t\tdata.preventDefault();\n\t\t\tevt.stop();\n\t\t}, { context: 'li' } );\n\n\t\tthis.listenTo<ViewDocumentTabEvent>( editor.editing.view.document, 'tab', ( evt, data ) => {\n\t\t\tconst commandName = data.shiftKey ? 'outdentList' : 'indentList';\n\t\t\tconst command = this.editor.commands.get( commandName )!;\n\n\t\t\tif ( command.isEnabled ) {\n\t\t\t\teditor.execute( commandName );\n\n\t\t\t\tdata.stopPropagation();\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: 'li' } );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tconst commands = this.editor.commands;\n\n\t\tconst indent = commands.get( 'indent' ) as MultiCommand;\n\t\tconst outdent = commands.get( 'outdent' ) as MultiCommand;\n\n\t\tif ( indent ) {\n\t\t\tindent.registerChildCommand( commands.get( 'indentList' )! );\n\t\t}\n\n\t\tif ( outdent ) {\n\t\t\toutdent.registerChildCommand( commands.get( 'outdentList' )! );\n\t\t}\n\t}\n}\n\nfunction getViewListItemLength( element: ViewElement ) {\n\tlet length = 1;\n\n\tfor ( const child of element.getChildren() as Iterable<ViewElement> ) {\n\t\tif ( child.name == 'ul' || child.name == 'ol' ) {\n\t\t\tfor ( const item of child.getChildren() ) {\n\t\t\t\tlength += getViewListItemLength( item as ViewElement );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn length;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module list/todolist/todolistediting\n */\n\nimport type {\n\tDowncastAttributeEvent,\n\tDowncastInsertEvent,\n\tElement,\n\tItem,\n\tMapperModelToViewPositionEvent,\n\tModel,\n\tModelApplyOperationEvent,\n\tUpcastElementEvent,\n\tViewDocumentArrowKeyEvent,\n\tViewDocumentKeyDownEvent,\n\tAttributeOperation,\n\tRenameOperation\n} from 'ckeditor5/src/engine';\n\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport {\n\tgetCode,\n\tparseKeystroke,\n\tgetLocalizedArrowKeyCodeDirection,\n\ttype Locale,\n\ttype GetCallback\n} from 'ckeditor5/src/utils';\n\nimport ListCommand from '../list/listcommand';\nimport ListEditing from '../list/listediting';\nimport CheckTodoListCommand from './checktodolistcommand';\nimport {\n\tdataModelViewInsertion,\n\tdataViewModelCheckmarkInsertion,\n\tmapModelToViewPosition,\n\tmodelViewChangeChecked,\n\tmodelViewChangeType,\n\tmodelViewInsertion\n} from './todolistconverters';\n\nconst ITEM_TOGGLE_KEYSTROKE = parseKeystroke( 'Ctrl+Enter' );\n\n/**\n * The engine of the to-do list feature. It handles creating, editing and removing to-do lists and their items.\n *\n * It registers the entire functionality of the {@link module:list/list/listediting~ListEditing list editing plugin} and extends\n * it with the commands:\n *\n * - `'todoList'`,\n * - `'checkTodoList'`,\n * - `'todoListCheck'` as an alias for `checkTodoList` command.\n */\nexport default class TodoListEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TodoListEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ListEditing ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst { editing, data, model } = editor;\n\n\t\t// Extend schema.\n\t\tmodel.schema.extend( 'listItem', {\n\t\t\tallowAttributes: [ 'todoListChecked' ]\n\t\t} );\n\n\t\t// Disallow todoListChecked attribute on other nodes than listItem with to-do listType.\n\t\tmodel.schema.addAttributeCheck( ( context: any, attributeName ) => {\n\t\t\tconst item = context.last;\n\n\t\t\tif ( attributeName == 'todoListChecked' && item.name == 'listItem' && item.getAttribute( 'listType' ) != 'todo' ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\n\t\t// Register `todoList` command.\n\t\teditor.commands.add( 'todoList', new ListCommand( editor, 'todo' ) );\n\n\t\tconst checkTodoListCommand = new CheckTodoListCommand( editor );\n\n\t\t// Register `checkTodoList` command and add `todoListCheck` command as an alias for backward compatibility.\n\t\teditor.commands.add( 'checkTodoList', checkTodoListCommand );\n\t\teditor.commands.add( 'todoListCheck', checkTodoListCommand );\n\n\t\t// Define converters.\n\t\tdata.downcastDispatcher.on<DowncastInsertEvent<Element>>(\n\t\t\t'insert:listItem',\n\t\t\tdataModelViewInsertion( model ),\n\t\t\t{ priority: 'high' }\n\t\t);\n\t\tdata.upcastDispatcher.on<UpcastElementEvent>(\n\t\t\t'element:input',\n\t\t\tdataViewModelCheckmarkInsertion,\n\t\t\t{ priority: 'high' }\n\t\t);\n\n\t\tediting.downcastDispatcher.on<DowncastInsertEvent<Element>>(\n\t\t\t'insert:listItem',\n\t\t\tmodelViewInsertion( model, listItem => this._handleCheckmarkChange( listItem ) ),\n\t\t\t{ priority: 'high' }\n\t\t);\n\t\tediting.downcastDispatcher.on<DowncastAttributeEvent<Element>>(\n\t\t\t'attribute:listType:listItem',\n\t\t\tmodelViewChangeType( listItem => this._handleCheckmarkChange( listItem ), editing.view )\n\t\t);\n\t\tediting.downcastDispatcher.on<DowncastAttributeEvent<Element>>(\n\t\t\t'attribute:todoListChecked:listItem',\n\t\t\tmodelViewChangeChecked( listItem => this._handleCheckmarkChange( listItem ) )\n\t\t);\n\n\t\tediting.mapper.on<MapperModelToViewPositionEvent>( 'modelToViewPosition', mapModelToViewPosition( editing.view ) );\n\t\tdata.mapper.on<MapperModelToViewPositionEvent>( 'modelToViewPosition', mapModelToViewPosition( editing.view ) );\n\n\t\t// Jump at the end of the previous node on left arrow key press, when selection is after the checkbox.\n\t\t//\n\t\t// <blockquote><p>Foo</p></blockquote>\n\t\t// <ul><li><checkbox/>{}Bar</li></ul>\n\t\t//\n\t\t// press: `<-`\n\t\t//\n\t\t// <blockquote><p>Foo{}</p></blockquote>\n\t\t// <ul><li><checkbox/>Bar</li></ul>\n\t\t//\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>(\n\t\t\tediting.view.document,\n\t\t\t'arrowKey',\n\t\t\tjumpOverCheckmarkOnSideArrowKeyPress( model, editor.locale ),\n\t\t\t{ context: 'li' }\n\t\t);\n\n\t\t// Toggle check state of selected to-do list items on keystroke.\n\t\tthis.listenTo<ViewDocumentKeyDownEvent>( editing.view.document, 'keydown', ( evt, data ) => {\n\t\t\tif ( getCode( data ) === ITEM_TOGGLE_KEYSTROKE ) {\n\t\t\t\teditor.execute( 'checkTodoList' );\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\n\t\t// Remove `todoListChecked` attribute when a host element is no longer a to-do list item.\n\t\tconst listItemsToFix = new Set<Item>();\n\n\t\tthis.listenTo<ModelApplyOperationEvent>( model, 'applyOperation', ( evt, args ) => {\n\t\t\tconst operation = args[ 0 ] as RenameOperation | AttributeOperation;\n\n\t\t\tif ( operation.type == 'rename' && operation.oldName == 'listItem' ) {\n\t\t\t\tconst item = operation.position.nodeAfter!;\n\n\t\t\t\tif ( item.hasAttribute( 'todoListChecked' ) ) {\n\t\t\t\t\tlistItemsToFix.add( item );\n\t\t\t\t}\n\t\t\t} else if ( operation.type == 'changeAttribute' && operation.key == 'listType' && operation.oldValue === 'todo' ) {\n\t\t\t\tfor ( const item of operation.range.getItems() ) {\n\t\t\t\t\tif ( item.hasAttribute( 'todoListChecked' ) && item.getAttribute( 'listType' ) !== 'todo' ) {\n\t\t\t\t\t\tlistItemsToFix.add( item );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tmodel.document.registerPostFixer( writer => {\n\t\t\tlet hasChanged = false;\n\n\t\t\tfor ( const listItem of listItemsToFix ) {\n\t\t\t\twriter.removeAttribute( 'todoListChecked', listItem );\n\t\t\t\thasChanged = true;\n\t\t\t}\n\n\t\t\tlistItemsToFix.clear();\n\n\t\t\treturn hasChanged;\n\t\t} );\n\t}\n\n\t/**\n\t * Handles the checkbox element change, moves the selection to the corresponding model item to make it possible\n\t * to toggle the `todoListChecked` attribute using the command, and restores the selection position.\n\t *\n\t * Some say it's a hack :) Moving the selection only for executing the command on a certain node and restoring it after,\n\t * is not a clear solution. We need to design an API for using commands beyond the selection range.\n\t * See https://github.com/ckeditor/ckeditor5/issues/1954.\n\t */\n\tprivate _handleCheckmarkChange( listItem: Element ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst previousSelectionRanges = Array.from( model.document.selection.getRanges() );\n\n\t\tmodel.change( writer => {\n\t\t\twriter.setSelection( listItem, 'end' );\n\t\t\teditor.execute( 'checkTodoList' );\n\t\t\twriter.setSelection( previousSelectionRanges );\n\t\t} );\n\t}\n}\n\n/**\n * Handles the left/right (LTR/RTL content) arrow key and moves the selection at the end of the previous block element\n * if the selection is just after the checkbox element. In other words, it jumps over the checkbox element when\n * moving the selection to the left/right (LTR/RTL).\n *\n * @returns Callback for 'keydown' events.\n */\nfunction jumpOverCheckmarkOnSideArrowKeyPress( model: Model, locale: Locale ): GetCallback<ViewDocumentArrowKeyEvent> {\n\treturn ( eventInfo, domEventData ) => {\n\t\tconst direction = getLocalizedArrowKeyCodeDirection( domEventData.keyCode, locale.contentLanguageDirection );\n\n\t\tif ( direction != 'left' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst schema = model.schema;\n\t\tconst selection = model.document.selection;\n\n\t\tif ( !selection.isCollapsed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst position = selection.getFirstPosition()!;\n\t\tconst parent = position.parent;\n\n\t\tif ( parent.name === 'listItem' && parent.getAttribute( 'listType' ) == 'todo' && position.isAtStart ) {\n\t\t\tconst newRange = schema.getNearestSelectionRange( model.createPositionBefore( parent ), 'backward' );\n\n\t\t\tif ( newRange ) {\n\t\t\t\tmodel.change( writer => writer.setSelection( newRange ) );\n\t\t\t}\n\n\t\t\tdomEventData.preventDefault();\n\t\t\tdomEventData.stopPropagation();\n\t\t\teventInfo.stop();\n\t\t}\n\t};\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./todolist.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module media-embed/converters\n */\n\nimport type { GetCallback } from 'ckeditor5/src/utils';\nimport type { DowncastAttributeEvent, DowncastDispatcher, Element, ViewElement } from 'ckeditor5/src/engine';\nimport type MediaRegistry from './mediaregistry';\nimport type { MediaOptions } from './utils';\n\n/**\n * Returns a function that converts the model \"url\" attribute to the view representation.\n *\n * Depending on the configuration, the view representation can be \"semantic\" (for the data pipeline):\n *\n * ```html\n * <figure class=\"media\">\n * \t<oembed url=\"foo\"></oembed>\n * </figure>\n * ```\n *\n * or \"non-semantic\" (for the editing view pipeline):\n *\n * ```html\n * <figure class=\"media\">\n * \t<div data-oembed-url=\"foo\">[ non-semantic media preview for \"foo\" ]</div>\n * </figure>\n * ```\n *\n * **Note:** Changing the model \"url\" attribute replaces the entire content of the\n * `<figure>` in the view.\n *\n * @param registry The registry providing\n * the media and their content.\n * @param options options object with following properties:\n * - elementName When set, overrides the default element name for semantic media embeds.\n * - renderMediaPreview When `true`, the converter will create the view in the non-semantic form.\n * - renderForEditingView When `true`, the converter will create a view specific for the\n * editing pipeline (e.g. including CSS classes, content placeholders).\n */\nexport function modelToViewUrlAttributeConverter(\n\tregistry: MediaRegistry,\n\toptions: MediaOptions\n): ( dispatcher: DowncastDispatcher ) => void {\n\tconst converter: GetCallback<DowncastAttributeEvent> = ( evt, data, conversionApi ) => {\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst url = data.attributeNewValue as string;\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst figure = conversionApi.mapper.toViewElement( data.item as Element )!;\n\t\tconst mediaContentElement = [ ...figure.getChildren() ]\n\t\t\t.find( child => ( child as ViewElement ).getCustomProperty( 'media-content' ) )!;\n\n\t\t// TODO: removing the wrapper and creating it from scratch is a hack. We can do better than that.\n\t\tviewWriter.remove( mediaContentElement );\n\n\t\tconst mediaViewElement = registry.getMediaViewElement( viewWriter, url, options );\n\n\t\tviewWriter.insert( viewWriter.createPositionAt( figure, 0 ), mediaViewElement );\n\t};\n\n\treturn dispatcher => {\n\t\tdispatcher.on<DowncastAttributeEvent>( 'attribute:url:media', converter );\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module media-embed/utils\n */\n\nimport type {\n\tViewContainerElement,\n\tElement,\n\tModel,\n\tSelectable,\n\tSelection,\n\tDowncastWriter,\n\tViewDocumentSelection,\n\tViewElement,\n\tDocumentSelection\n} from 'ckeditor5/src/engine';\nimport { isWidget, toWidget } from 'ckeditor5/src/widget';\nimport type MediaRegistry from './mediaregistry';\n\n/**\n * Converts a given {@link module:engine/view/element~Element} to a media embed widget:\n * * Adds a {@link module:engine/view/element~Element#_setCustomProperty custom property} allowing to recognize the media widget element.\n * * Calls the {@link module:widget/utils~toWidget} function with the proper element's label creator.\n *\n * @param writer An instance of the view writer.\n * @param label The element's label.\n */\nexport function toMediaWidget( viewElement: ViewElement, writer: DowncastWriter, label: string ): ViewElement {\n\twriter.setCustomProperty( 'media', true, viewElement );\n\n\treturn toWidget( viewElement, writer, { label } );\n}\n\n/**\n * Returns a media widget editing view element if one is selected.\n */\nexport function getSelectedMediaViewWidget( selection: ViewDocumentSelection ): ViewElement | null {\n\tconst viewElement = selection.getSelectedElement();\n\n\tif ( viewElement && isMediaWidget( viewElement ) ) {\n\t\treturn viewElement;\n\t}\n\n\treturn null;\n}\n\n/**\n * Checks if a given view element is a media widget.\n */\nexport function isMediaWidget( viewElement: ViewElement ): boolean {\n\treturn !!viewElement.getCustomProperty( 'media' ) && isWidget( viewElement );\n}\n\n/**\n * Creates a view element representing the media. Either a \"semantic\" one for the data pipeline:\n *\n * ```html\n * <figure class=\"media\">\n * \t<oembed url=\"foo\"></oembed>\n * </figure>\n * ```\n *\n * or a \"non-semantic\" (for the editing view pipeline):\n *\n * ```html\n * <figure class=\"media\">\n * \t<div data-oembed-url=\"foo\">[ non-semantic media preview for \"foo\" ]</div>\n * </figure>\n * ```\n */\nexport function createMediaFigureElement(\n\twriter: DowncastWriter,\n\tregistry: MediaRegistry,\n\turl: string,\n\toptions: MediaOptions\n): ViewContainerElement {\n\treturn writer.createContainerElement( 'figure', { class: 'media' }, [\n\t\tregistry.getMediaViewElement( writer, url, options ),\n\t\twriter.createSlot()\n\t] );\n}\n\n/**\n * Returns a selected media element in the model, if any.\n */\nexport function getSelectedMediaModelWidget( selection: Selection | DocumentSelection ): Element | null {\n\tconst selectedElement = selection.getSelectedElement();\n\n\tif ( selectedElement && selectedElement.is( 'element', 'media' ) ) {\n\t\treturn selectedElement;\n\t}\n\n\treturn null;\n}\n\n/**\n * Creates a media element and inserts it into the model.\n *\n * **Note**: This method will use {@link module:engine/model/model~Model#insertContent `model.insertContent()`} logic of inserting content\n * if no `insertPosition` is passed.\n *\n * @param url An URL of an embeddable media.\n * @param findOptimalPosition If true it will try to find optimal position to insert media without breaking content\n * in which a selection is.\n */\nexport function insertMedia( model: Model, url: string, selectable: Selectable, findOptimalPosition: boolean ): void {\n\tmodel.change( writer => {\n\t\tconst mediaElement = writer.createElement( 'media', { url } );\n\n\t\tmodel.insertObject( mediaElement, selectable, null, {\n\t\t\tsetSelection: 'on',\n\t\t\tfindOptimalPosition: findOptimalPosition ? 'auto' : undefined\n\t\t} );\n\t} );\n}\n\n/**\n * Type for commonly grouped function parameters across this package.\n */\nexport type MediaOptions = {\n\telementName: string;\n\trenderMediaPreview?: boolean;\n\trenderForEditingView?: boolean;\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module media-embed/mediaembedcommand\n */\n\nimport type { DocumentSelection, Element, Model, Selection } from 'ckeditor5/src/engine';\nimport { Command } from 'ckeditor5/src/core';\nimport { findOptimalInsertionRange } from 'ckeditor5/src/widget';\n\nimport { getSelectedMediaModelWidget, insertMedia } from './utils';\n\n/**\n * The insert media command.\n *\n * The command is registered by the {@link module:media-embed/mediaembedediting~MediaEmbedEditing} as `'mediaEmbed'`.\n *\n * To insert media at the current selection, execute the command and specify the URL:\n *\n * ```ts\n * editor.execute( 'mediaEmbed', 'http://url.to.the/media' );\n * ```\n */\nexport default class MediaEmbedCommand extends Command {\n\t/**\n\t * Media url.\n\t */\n\tdeclare public value: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst selectedMedia = getSelectedMediaModelWidget( selection );\n\n\t\tthis.value = selectedMedia ? selectedMedia.getAttribute( 'url' ) as string : undefined;\n\n\t\tthis.isEnabled = isMediaSelected( selection ) || isAllowedInParent( selection, model );\n\t}\n\n\t/**\n\t * Executes the command, which either:\n\t *\n\t * * updates the URL of the selected media,\n\t * * inserts the new media into the editor and puts the selection around it.\n\t *\n\t * @fires execute\n\t * @param url The URL of the media.\n\t */\n\tpublic override execute( url: string ): void {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst selectedMedia = getSelectedMediaModelWidget( selection );\n\n\t\tif ( selectedMedia ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.setAttribute( 'url', url, selectedMedia );\n\t\t\t} );\n\t\t} else {\n\t\t\tinsertMedia( model, url, selection, true );\n\t\t}\n\t}\n}\n\n/**\n * Checks if the media embed is allowed in the parent.\n */\nfunction isAllowedInParent( selection: Selection | DocumentSelection, model: Model ): boolean {\n\tconst insertionRange = findOptimalInsertionRange( selection, model );\n\tlet parent = insertionRange.start.parent as Element;\n\n\t// The model.insertContent() will remove empty parent (unless it is a $root or a limit).\n\tif ( parent.isEmpty && !model.schema.isLimit( parent ) ) {\n\t\tparent = parent.parent as Element;\n\t}\n\n\treturn model.schema.checkChild( parent, 'media' );\n}\n\n/**\n * Checks if the media object is selected.\n */\nfunction isMediaSelected( selection: Selection | DocumentSelection ): boolean {\n\tconst element = selection.getSelectedElement();\n\treturn !!element && element.name === 'media';\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module media-embed/mediaregistry\n */\n\nimport type { DowncastWriter, ViewElement } from 'ckeditor5/src/engine';\nimport { IconView, Template } from 'ckeditor5/src/ui';\nimport { type Locale, logWarning, toArray } from 'ckeditor5/src/utils';\n\nimport mediaPlaceholderIcon from '../theme/icons/media-placeholder.svg';\nimport type { MediaEmbedConfig, MediaEmbedProvider } from './mediaembedconfig';\nimport type { MediaOptions } from './utils';\n\nconst mediaPlaceholderIconViewBox = '0 0 64 42';\n\n/**\n * A bridge between the raw media content provider definitions and the editor view content.\n *\n * It helps translating media URLs to corresponding {@link module:engine/view/element~Element view elements}.\n *\n * Mostly used by the {@link module:media-embed/mediaembedediting~MediaEmbedEditing} plugin.\n */\nexport default class MediaRegistry {\n\t/**\n\t * The {@link module:utils/locale~Locale} instance.\n\t */\n\tpublic locale: Locale;\n\n\t/**\n\t * The media provider definitions available for the registry. Usually corresponding with the\n\t * {@link module:media-embed/mediaembedconfig~MediaEmbedConfig media configuration}.\n\t */\n\tpublic providerDefinitions: Array<MediaEmbedProvider>;\n\n\t/**\n\t * Creates an instance of the {@link module:media-embed/mediaregistry~MediaRegistry} class.\n\t *\n\t * @param locale The localization services instance.\n\t * @param config The configuration of the media embed feature.\n\t */\n\tconstructor( locale: Locale, config: MediaEmbedConfig ) {\n\t\tconst providers = config.providers!;\n\t\tconst extraProviders = config.extraProviders || [];\n\t\tconst removedProviders = new Set( config.removeProviders );\n\t\tconst providerDefinitions = providers\n\t\t\t.concat( extraProviders )\n\t\t\t.filter( provider => {\n\t\t\t\tconst name = provider.name;\n\n\t\t\t\tif ( !name ) {\n\t\t\t\t\t/**\n\t\t\t\t\t * One of the providers (or extra providers) specified in the media embed configuration\n\t\t\t\t\t * has no name and will not be used by the editor. In order to get this media\n\t\t\t\t\t * provider working, double check your editor configuration.\n\t\t\t\t\t *\n\t\t\t\t\t * @error media-embed-no-provider-name\n\t\t\t\t\t */\n\t\t\t\t\tlogWarning( 'media-embed-no-provider-name', { provider } );\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn !removedProviders.has( name );\n\t\t\t} );\n\n\t\tthis.locale = locale;\n\t\tthis.providerDefinitions = providerDefinitions;\n\t}\n\n\t/**\n\t * Checks whether the passed URL is representing a certain media type allowed in the editor.\n\t *\n\t * @param url The URL to be checked\n\t */\n\tpublic hasMedia( url: string ): boolean {\n\t\treturn !!this._getMedia( url );\n\t}\n\n\t/**\n\t * For the given media URL string and options, it returns the {@link module:engine/view/element~Element view element}\n\t * representing that media.\n\t *\n\t * **Note:** If no URL is specified, an empty view element is returned.\n\t *\n\t * @param writer The view writer used to produce a view element.\n\t * @param url The URL to be translated into a view element.\n\t */\n\tpublic getMediaViewElement(\n\t\twriter: DowncastWriter,\n\t\turl: string,\n\t\toptions: MediaOptions\n\t): ViewElement {\n\t\treturn this._getMedia( url )!.getViewElement( writer, options );\n\t}\n\n\t/**\n\t * Returns a `Media` instance for the given URL.\n\t *\n\t * @param url The URL of the media.\n\t * @returns The `Media` instance or `null` when there is none.\n\t */\n\tprivate _getMedia( url: string ): Media | null {\n\t\tif ( !url ) {\n\t\t\treturn new Media( this.locale );\n\t\t}\n\n\t\turl = url.trim();\n\n\t\tfor ( const definition of this.providerDefinitions ) {\n\t\t\tconst previewRenderer = definition.html!;\n\t\t\tconst pattern = toArray( definition.url );\n\n\t\t\tfor ( const subPattern of pattern ) {\n\t\t\t\tconst match = this._getUrlMatches( url, subPattern );\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\treturn new Media( this.locale, url, match, previewRenderer );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Tries to match `url` to `pattern`.\n\t *\n\t * @param url The URL of the media.\n\t * @param pattern The pattern that should accept the media URL.\n\t */\n\tprivate _getUrlMatches( url: string, pattern: RegExp ): RegExpMatchArray | null {\n\t\t// 1. Try to match without stripping the protocol and \"www\" subdomain.\n\t\tlet match = url.match( pattern );\n\n\t\tif ( match ) {\n\t\t\treturn match;\n\t\t}\n\n\t\t// 2. Try to match after stripping the protocol.\n\t\tlet rawUrl = url.replace( /^https?:\\/\\//, '' );\n\t\tmatch = rawUrl.match( pattern );\n\n\t\tif ( match ) {\n\t\t\treturn match;\n\t\t}\n\n\t\t// 3. Try to match after stripping the \"www\" subdomain.\n\t\trawUrl = rawUrl.replace( /^www\\./, '' );\n\t\tmatch = rawUrl.match( pattern );\n\n\t\tif ( match ) {\n\t\t\treturn match;\n\t\t}\n\n\t\treturn null;\n\t}\n}\n\n/**\n * Represents media defined by the provider configuration.\n *\n * It can be rendered to the {@link module:engine/view/element~Element view element} and used in the editing or data pipeline.\n */\nclass Media {\n\t/**\n\t * The URL this Media instance represents.\n\t */\n\tpublic url: string | null;\n\n\t/**\n\t * Shorthand for {@link module:utils/locale~Locale#t}.\n\t *\n\t * @see module:utils/locale~Locale#t\n\t */\n\tprivate _locale: Locale;\n\n\t/**\n\t * The output of the `RegExp.match` which validated the {@link #url} of this media.\n\t */\n\tprivate _match?: RegExpMatchArray;\n\n\t/**\n\t * The function returning the HTML string preview of this media.\n\t */\n\tprivate _previewRenderer?: ( match: RegExpMatchArray ) => string;\n\n\tconstructor( locale: Locale, url?: string, match?: RegExpMatchArray, previewRenderer?: ( match: RegExpMatchArray ) => string ) {\n\t\tthis.url = this._getValidUrl( url );\n\t\tthis._locale = locale;\n\t\tthis._match = match;\n\t\tthis._previewRenderer = previewRenderer;\n\t}\n\n\t/**\n\t * Returns the view element representation of the media.\n\t *\n\t * @param writer The view writer used to produce a view element.\n\t */\n\tpublic getViewElement(\n\t\twriter: DowncastWriter,\n\t\toptions: MediaOptions\n\t): ViewElement {\n\t\tconst attributes: Record<string, unknown> = {};\n\t\tlet viewElement;\n\n\t\tif ( options.renderForEditingView || ( options.renderMediaPreview && this.url && this._previewRenderer ) ) {\n\t\t\tif ( this.url ) {\n\t\t\t\tattributes[ 'data-oembed-url' ] = this.url;\n\t\t\t}\n\n\t\t\tif ( options.renderForEditingView ) {\n\t\t\t\tattributes.class = 'ck-media__wrapper';\n\t\t\t}\n\n\t\t\tconst mediaHtml = this._getPreviewHtml( options );\n\n\t\t\tviewElement = writer.createRawElement( 'div', attributes, ( domElement, domConverter ) => {\n\t\t\t\tdomConverter!.setContentOf( domElement, mediaHtml );\n\t\t\t} );\n\t\t} else {\n\t\t\tif ( this.url ) {\n\t\t\t\tattributes.url = this.url;\n\t\t\t}\n\n\t\t\tviewElement = writer.createEmptyElement( options.elementName, attributes );\n\t\t}\n\n\t\twriter.setCustomProperty( 'media-content', true, viewElement );\n\n\t\treturn viewElement;\n\t}\n\n\t/**\n\t * Returns the HTML string of the media content preview.\n\t */\n\tprivate _getPreviewHtml( options: { renderForEditingView?: boolean } ): string {\n\t\tif ( this._previewRenderer ) {\n\t\t\treturn this._previewRenderer( this._match! );\n\t\t} else {\n\t\t\t// The placeholder only makes sense for editing view and media which have URLs.\n\t\t\t// Placeholder is never displayed in data and URL-less media have no content.\n\t\t\tif ( this.url && options.renderForEditingView ) {\n\t\t\t\treturn this._getPlaceholderHtml();\n\t\t\t}\n\n\t\t\treturn '';\n\t\t}\n\t}\n\n\t/**\n\t * Returns the placeholder HTML when the media has no content preview.\n\t */\n\tprivate _getPlaceholderHtml(): string {\n\t\tconst icon = new IconView();\n\t\tconst t = this._locale.t;\n\n\t\ticon.content = mediaPlaceholderIcon;\n\t\ticon.viewBox = mediaPlaceholderIconViewBox;\n\n\t\tconst placeholder = new Template( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: 'ck ck-reset_all ck-media__placeholder'\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttag: 'div',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: 'ck-media__placeholder__icon'\n\t\t\t\t\t},\n\t\t\t\t\tchildren: [ icon ]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttag: 'a',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: 'ck-media__placeholder__url',\n\t\t\t\t\t\ttarget: '_blank',\n\t\t\t\t\t\trel: 'noopener noreferrer',\n\t\t\t\t\t\thref: this.url,\n\t\t\t\t\t\t'data-cke-tooltip-text': t( 'Open media in new tab' )\n\t\t\t\t\t},\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttag: 'span',\n\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tclass: 'ck-media__placeholder__url__text'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tchildren: [ this.url ]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t} ).render() as HTMLElement;\n\n\t\treturn placeholder.outerHTML;\n\t}\n\n\t/**\n\t * Returns the full URL to the specified media.\n\t *\n\t * @param url The URL of the media.\n\t */\n\tprivate _getValidUrl( url: string | undefined ): string | null {\n\t\tif ( !url ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( url.match( /^https?/ ) ) {\n\t\t\treturn url;\n\t\t}\n\n\t\treturn 'https://' + url;\n\t}\n}\n","export default \"<svg viewBox=\\\"0 0 64 42\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M47.426 17V3.713L63.102 0v19.389h-.001l.001.272c0 1.595-2.032 3.43-4.538 4.098-2.506.668-4.538-.083-4.538-1.678 0-1.594 2.032-3.43 4.538-4.098.914-.244 2.032-.565 2.888-.603V4.516L49.076 7.447v9.556A1.014 1.014 0 0 0 49 17h-1.574zM29.5 17h-8.343a7.073 7.073 0 1 0-4.657 4.06v3.781H3.3a2.803 2.803 0 0 1-2.8-2.804V8.63a2.803 2.803 0 0 1 2.8-2.805h4.082L8.58 2.768A1.994 1.994 0 0 1 10.435 1.5h8.985c.773 0 1.477.448 1.805 1.149l1.488 3.177H26.7c1.546 0 2.8 1.256 2.8 2.805V17zm-11.637 0H17.5a1 1 0 0 0-1 1v.05A4.244 4.244 0 1 1 17.863 17zm29.684 2c.97 0 .953-.048.953.889v20.743c0 .953.016.905-.953.905H19.453c-.97 0-.953.048-.953-.905V19.89c0-.937-.016-.889.97-.889h28.077zm-4.701 19.338V22.183H24.154v16.155h18.692zM20.6 21.375v1.616h1.616v-1.616H20.6zm0 3.231v1.616h1.616v-1.616H20.6zm0 3.231v1.616h1.616v-1.616H20.6zm0 3.231v1.616h1.616v-1.616H20.6zm0 3.231v1.616h1.616v-1.616H20.6zm0 3.231v1.616h1.616V37.53H20.6zm24.233-16.155v1.616h1.615v-1.616h-1.615zm0 3.231v1.616h1.615v-1.616h-1.615zm0 3.231v1.616h1.615v-1.616h-1.615zm0 3.231v1.616h1.615v-1.616h-1.615zm0 3.231v1.616h1.615v-1.616h-1.615zm0 3.231v1.616h1.615V37.53h-1.615zM29.485 25.283a.4.4 0 0 1 .593-.35l9.05 4.977a.4.4 0 0 1 0 .701l-9.05 4.978a.4.4 0 0 1-.593-.35v-9.956z\\\"/></svg>\";","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./mediaembedediting.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/* eslint-disable no-useless-escape */\n/* eslint-disable max-len */\n\n/**\n * @module media-embed/mediaembedediting\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\nimport type { UpcastElementEvent } from 'ckeditor5/src/engine';\nimport { first, type GetCallback } from 'ckeditor5/src/utils';\n\nimport { modelToViewUrlAttributeConverter } from './converters';\nimport type { MediaEmbedConfig } from './mediaembedconfig';\nimport MediaEmbedCommand from './mediaembedcommand';\nimport MediaRegistry from './mediaregistry';\nimport { toMediaWidget, createMediaFigureElement } from './utils';\n\nimport '../theme/mediaembedediting.css';\n\n/**\n * The media embed editing feature.\n */\nexport default class MediaEmbedEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'MediaEmbedEditing' as const;\n\t}\n\n\t/**\n\t * The media registry managing the media providers in the editor.\n\t */\n\tpublic registry: MediaRegistry;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\t\teditor.config.define( 'mediaEmbed', {\n\t\t\telementName: 'oembed',\n\t\t\tproviders: [\n\t\t\t\t{\n\t\t\t\t\tname: 'dailymotion',\n\t\t\t\t\turl: /^dailymotion\\.com\\/video\\/(\\w+)/,\n\t\t\t\t\thtml: match => {\n\t\t\t\t\t\tconst id = match[ 1 ];\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t'<div style=\"position: relative; padding-bottom: 100%; height: 0; \">' +\n\t\t\t\t\t\t\t\t`<iframe src=\"https://www.dailymotion.com/embed/video/${ id }\" ` +\n\t\t\t\t\t\t\t\t\t'style=\"position: absolute; width: 100%; height: 100%; top: 0; left: 0;\" ' +\n\t\t\t\t\t\t\t\t\t'frameborder=\"0\" width=\"480\" height=\"270\" allowfullscreen allow=\"autoplay\">' +\n\t\t\t\t\t\t\t\t'</iframe>' +\n\t\t\t\t\t\t\t'</div>'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tname: 'spotify',\n\t\t\t\t\turl: [\n\t\t\t\t\t\t/^open\\.spotify\\.com\\/(artist\\/\\w+)/,\n\t\t\t\t\t\t/^open\\.spotify\\.com\\/(album\\/\\w+)/,\n\t\t\t\t\t\t/^open\\.spotify\\.com\\/(track\\/\\w+)/\n\t\t\t\t\t],\n\t\t\t\t\thtml: match => {\n\t\t\t\t\t\tconst id = match[ 1 ];\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t'<div style=\"position: relative; padding-bottom: 100%; height: 0; padding-bottom: 126%;\">' +\n\t\t\t\t\t\t\t\t`<iframe src=\"https://open.spotify.com/embed/${ id }\" ` +\n\t\t\t\t\t\t\t\t\t'style=\"position: absolute; width: 100%; height: 100%; top: 0; left: 0;\" ' +\n\t\t\t\t\t\t\t\t\t'frameborder=\"0\" allowtransparency=\"true\" allow=\"encrypted-media\">' +\n\t\t\t\t\t\t\t\t'</iframe>' +\n\t\t\t\t\t\t\t'</div>'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'gif',\n\t\t\t\t\turl: [\n\t\t\t\t\t\t/(http(s?):)([/|.|\\w|\\s|-])*\\.gif/\n\t\t\t\t\t],\n\t\t\t\t\thtml: match => {\n\t\t\t\t\t\tconst url = match[ 0 ];\n\t\t\t\t\t\tconst [ fileName ] = /[^/]*$/.exec( url )!;\n\t\t\t\t\t\tconst alt = fileName.substring( 0, fileName.lastIndexOf( '.' ) ) || fileName;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t`<img src=\"${ url }\" alt=\"${ alt }\" style=\"width: 100%;\" >`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tname: 'youtube',\n\t\t\t\t\turl: [\n\t\t\t\t\t\t/^(?:m\\.)?youtube\\.com\\/watch\\?v=([\\w-]+)(?:&t=(\\d+))?/,\n\t\t\t\t\t\t/^(?:m\\.)?youtube\\.com\\/v\\/([\\w-]+)(?:\\?t=(\\d+))?/,\n\t\t\t\t\t\t/^youtube\\.com\\/embed\\/([\\w-]+)(?:\\?start=(\\d+))?/,\n\t\t\t\t\t\t/^youtu\\.be\\/([\\w-]+)(?:\\?t=(\\d+))?/\n\t\t\t\t\t],\n\t\t\t\t\thtml: match => {\n\t\t\t\t\t\tconst id = match[ 1 ];\n\t\t\t\t\t\tconst time = match[ 2 ];\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t'<div style=\"position: relative; padding-bottom: 100%; height: 0; padding-bottom: 56.2493%;\">' +\n\t\t\t\t\t\t\t\t`<iframe src=\"https://www.youtube.com/embed/${ id }${ time ? `?start=${ time }` : '' }\" ` +\n\t\t\t\t\t\t\t\t\t'style=\"position: absolute; width: 100%; height: 100%; top: 0; left: 0;\" ' +\n\t\t\t\t\t\t\t\t\t'frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen>' +\n\t\t\t\t\t\t\t\t'</iframe>' +\n\t\t\t\t\t\t\t'</div>'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tname: 'vimeo',\n\t\t\t\t\turl: [\n\t\t\t\t\t\t/^vimeo\\.com\\/(\\d+)/,\n\t\t\t\t\t\t/^vimeo\\.com\\/[^/]+\\/[^/]+\\/video\\/(\\d+)/,\n\t\t\t\t\t\t/^vimeo\\.com\\/album\\/[^/]+\\/video\\/(\\d+)/,\n\t\t\t\t\t\t/^vimeo\\.com\\/channels\\/[^/]+\\/(\\d+)/,\n\t\t\t\t\t\t/^vimeo\\.com\\/groups\\/[^/]+\\/videos\\/(\\d+)/,\n\t\t\t\t\t\t/^vimeo\\.com\\/ondemand\\/[^/]+\\/(\\d+)/,\n\t\t\t\t\t\t/^player\\.vimeo\\.com\\/video\\/(\\d+)/\n\t\t\t\t\t],\n\t\t\t\t\thtml: match => {\n\t\t\t\t\t\tconst id = match[ 1 ];\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t'<div style=\"position: relative; padding-bottom: 100%; height: 0; padding-bottom: 56.2493%;\">' +\n\t\t\t\t\t\t\t\t`<iframe src=\"https://player.vimeo.com/video/${ id }\" ` +\n\t\t\t\t\t\t\t\t\t'style=\"position: absolute; width: 100%; height: 100%; top: 0; left: 0;\" ' +\n\t\t\t\t\t\t\t\t\t'frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen>' +\n\t\t\t\t\t\t\t\t'</iframe>' +\n\t\t\t\t\t\t\t'</div>'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tname: 'instagram',\n\t\t\t\t\turl: /^instagram\\.com\\/p\\/(\\w+)/\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'twitter',\n\t\t\t\t\turl: /^twitter\\.com/\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'googleMaps',\n\t\t\t\t\turl: [\n\t\t\t\t\t\t/^google\\.com\\/maps/,\n\t\t\t\t\t\t/^goo\\.gl\\/maps/,\n\t\t\t\t\t\t/^maps\\.google\\.com/,\n\t\t\t\t\t\t/^maps\\.app\\.goo\\.gl/\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'flickr',\n\t\t\t\t\turl: /^flickr\\.com/\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'facebook',\n\t\t\t\t\turl: /^facebook\\.com/\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'googleContent', // handles docs, slides, and spreadsheets\n\t\t\t\t\turl: [\n\t\t\t\t\t\t/https:\\/\\/docs\\.google\\.com\\/(?:document|presentation|spreadsheets)\\/d\\/(.*?)\\/(edit|preview|present)/,\n\t\t\t\t\t\t/https:\\/\\/docs\\.google\\.com\\/(?:document|presentation|spreadsheets)\\/d\\/e\\/(.*?)\\/(pub|embed)(?:html)?/\n\t\t\t\t\t],\n\t\t\t\t\thtml: match => {\n\t\t\t\t\t\tlet url = match.input!;\n\t\t\t\t\t\tif ( this.isPublished( url ) && !url.includes( 'embedded=true' ) ) {\n\t\t\t\t\t\t\tif ( url.includes( 'presentation' ) ) {\n\t\t\t\t\t\t\t\turl += '&embedded=true';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\turl += '?embedded=true';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( url.includes( 'edit' ) || url.includes( 'present' ) ) {\n\t\t\t\t\t\t\turl = url.replace( 'edit', 'preview' );\n\t\t\t\t\t\t\tif ( url.includes( 'presentation' ) ) {\n\t\t\t\t\t\t\t\turl = url\n\t\t\t\t\t\t\t\t\t.replace( 'presentation', 'tempword' )\n\t\t\t\t\t\t\t\t\t.replace( 'present', 'preview' )\n\t\t\t\t\t\t\t\t\t.replace( 'tempword', 'presentation' );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\turl = url.replace( 'present', 'preview' );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t'<div style=\"position: relative; height: 431px;\">' +\n\t\t\t\t\t\t\t\t`<iframe src=\"${ url }\" ` +\n\t\t\t\t\t\t\t\t\t'style=\"position: absolute; width: 100%; height: 100%; top: 0; left: 0;\" ' +\n\t\t\t\t\t\t\t\t\t'frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen>' +\n\t\t\t\t\t\t\t\t'</iframe>' +\n\t\t\t\t\t\t\t'</div>'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'loom',\n\t\t\t\t\turl: [\n\t\t\t\t\t\t/^loom\\.com\\/(?:share|embed)\\/([\\w-]+)/\n\t\t\t\t\t],\n\t\t\t\t\thtml: match => {\n\t\t\t\t\t\tconst id = match[ 1 ];\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t'<div style=\"position: relative; padding-bottom: 100%; height: 0; padding-bottom: 56.2493%;\">' +\n\t\t\t\t\t\t\t\t`<iframe src=\"https://www.loom.com/embed/${ id }\" ` +\n\t\t\t\t\t\t\t\t\t'style=\"position: absolute; width: 100%; height: 100%; top: 0; left: 0;\" ' +\n\t\t\t\t\t\t\t\t\t'frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen>' +\n\t\t\t\t\t\t\t\t'</iframe>' +\n\t\t\t\t\t\t\t'</div>'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'fjVideo',\n\t\t\t\t\turl: [\n\t\t\t\t\t\t/^https:\\/\\/fj-file-uploads\\.s3\\.us-east-2\\.amazonaws\\.com\\/((?:[\\w+]+(?:%[0-9A-Fa-f]{2}|\\/))?fjvideo-[\\w-]+).([\\w-]+)/,\n\t\t\t\t\t\t/^https:\\/\\/cdn.flockjay.com\\/((?:[\\w+]+(?:%[0-9A-Fa-f]{2}|\\/))?fjvideo-[\\w-]+).([\\w-]+)/,\n\t\t\t\t\t\t/^(?:https:\\/\\/(?:staging-)?api(?:-demo)?\\.flockjay\\.com|(?:http:\\/\\/)?localhost:8000)\\/feed\\/files\\/(?:[a-zA-Z0-9\\-]+)\\/((?:[\\w+]+(?:%[0-9A-Fa-f]{2}|\\/))?fjvideo-[\\w-]+).([\\w-]+)/\n\t\t\t\t\t],\n\t\t\t\t\thtml: match => {\n\t\t\t\t\t\tconst url = match[ 0 ];\n\t\t\t\t\t\tconst ext = match[ 2 ];\n\t\t\t\t\t\tconst poster = ext === 'mp4' ? `poster=\"${ url.replace( `.${ ext }`, '-thumbnail.jpg' ) }\" ` : '';\n\t\t\t\t\t\tconst id = match[ 1 ];\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t`<video id=${ id } style=\"max-width: 100%;\" ${ poster }` +\n\t\t\t\t\t\t\t\t'controls controlsList=\"nodownload\" preload=\"metadata\">' +\n\t\t\t\t\t\t\t\t`<source type=\"video/${ ext }\" src=${ url }></source>` +\n\t\t\t\t\t\t\t'</video>'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'Gong',\n\t\t\t\t\turl: [\n\t\t\t\t\t\t/(?:.+)app\\.gong\\.io\\/call\\?id=(.+)/,\n\t\t\t\t\t\t/(?:.+)app\\.gong\\.io\\/embedded-call\\?call-id=(.+)/\n\t\t\t\t\t],\n\t\t\t\t\thtml: match => {\n\t\t\t\t\t\tconst params = new URL( decodeURI( match[ 0 ] ) ).searchParams;\n\t\t\t\t\t\tconst from = params.get( 'from' );\n\t\t\t\t\t\tconst to = params.get( 'to' );\n\t\t\t\t\t\tconst id = params.get( 'id' );\n\t\t\t\t\t\tconst highlights = params.get( 'highlights' );\n\t\t\t\t\t\tconst idAndParams = match[ 1 ];\n\n\t\t\t\t\t\tlet url = `https://app.gong.io/embedded-call?call-id=${ idAndParams }`;\n\n\t\t\t\t\t\tif ( ( !from || !to ) && highlights ) {\n\t\t\t\t\t\t\tconst { from, to } = JSON.parse( highlights )?.[ 0 ];\n\t\t\t\t\t\t\tif ( from && to ) {\n\t\t\t\t\t\t\t\turl = `https://app.gong.io/embedded-call?call-id=${ id }&from=${ from }&to=${ to }`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t'<div style=\"position: relative; height: 431px;\">' +\n\t\t\t\t\t\t\t\t`<iframe src=\"${ url }\" ` +\n\t\t\t\t\t\t\t\t\t'style=\"position: absolute; width: 100%; height: 100%; top: 0; left: 0;\" ' +\n\t\t\t\t\t\t\t\t\t'frameborder=\"0\">' +\n\t\t\t\t\t\t\t\t'</iframe>' +\n\t\t\t\t\t\t\t'</div>'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'Fireflies.AI',\n\t\t\t\t\turl: [\n\t\t\t\t\t\t/^https:\\/\\/app\\.fireflies\\.ai\\/view\\/[a-zA-Z0-9-_]+::([a-zA-Z0-9-_]+)?$/\n\t\t\t\t\t],\n\t\t\t\t\thtml: match => {\n\t\t\t\t\t\tconst id = match[ 1 ];\n\t\t\t\t\t\tconst src = `https://share.fireflies.ai/embed/meetings/${ id }`;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t`<div style=\"position: relative; height: 431px;\"><iframe src=\"${ src }\" style=\"position: absolute; width: 100%; height: 100%; top: 0; left: 0;\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture\" allowfullscreen></iframe></div>`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'Fireflies.AI soundbites',\n\t\t\t\t\turl: [\n\t\t\t\t\t\t/^https:\\/\\/share\\.fireflies\\.ai\\/embed\\/bites\\/(\\w+)$/,\n\t\t\t\t\t\t/^https:\\/\\/app\\.fireflies\\.ai\\/soundbites\\/(\\w+)$/\n\t\t\t\t\t],\n\t\t\t\t\thtml: match => {\n\t\t\t\t\t\tconst id = match[ 1 ];\n\t\t\t\t\t\tconst src = `https://share.fireflies.ai/embed/bites/${ id }`;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t`<div style=\"position: relative; height: 431px;\"><iframe src=\"${ src }\" style=\"position: absolute; width: 100%; height: 100%; top: 0; left: 0;\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture\" allowfullscreen></iframe></div>`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'FJLink',\n\t\t\t\t\turl: [\n\t\t\t\t\t\t/^((?:.)+flockjay.com)\\/(course|learningpath|hub|page|opportunity|classroom|dealroom)\\/(?!create)([\\w=?&-]+)(\\/)?$/,\n\t\t\t\t\t\t/^((?:.)+amplifyapp.com)\\/(course|learningpath|hub|page|opportunity|classroom|dealroom)\\/(?!create)([\\w=?&-]+)(\\/)?$/,\n\t\t\t\t\t\t/^((?:.)+localhost:3000)\\/(course|learningpath|hub|page|opportunity|classroom|dealroom)\\/(?!create)([\\w=?&-]+)(\\/)?$/\n\t\t\t\t\t],\n\t\t\t\t\thtml: match => {\n\t\t\t\t\t\tconst domain = match[ 1 ];\n\t\t\t\t\t\tconst category = match[ 2 ];\n\t\t\t\t\t\tlet contentType, contentId;\n\t\t\t\t\t\tif ( category === 'classroom' ) {\n\t\t\t\t\t\t\tconst params = new URL( match[ 0 ] ).searchParams;\n\t\t\t\t\t\t\tconst postId = params.get( 'postId' );\n\t\t\t\t\t\t\tconst assetId = params.get( 'assetId' );\n\t\t\t\t\t\t\tconst playlistId = params.get( 'playlistId' );\n\t\t\t\t\t\t\tconst promptId = params.get( 'promptId' );\n\t\t\t\t\t\t\tconst callId = params.get( 'callId' );\n\n\t\t\t\t\t\t\tif ( playlistId ) {\n\t\t\t\t\t\t\t\tcontentType = 'playlist';\n\t\t\t\t\t\t\t\tcontentId = playlistId;\n\t\t\t\t\t\t\t} else if ( promptId ) {\n\t\t\t\t\t\t\t\tcontentType = 'prompt';\n\t\t\t\t\t\t\t\tcontentId = promptId;\n\t\t\t\t\t\t\t} else if ( postId ) {\n\t\t\t\t\t\t\t\tcontentType = 'feedpost';\n\t\t\t\t\t\t\t\tcontentId = postId;\n\t\t\t\t\t\t\t} else if ( assetId ) {\n\t\t\t\t\t\t\t\tcontentType = 'asset';\n\t\t\t\t\t\t\t\tcontentId = assetId;\n\t\t\t\t\t\t\t} else if ( callId ) {\n\t\t\t\t\t\t\t\tcontentType = 'call';\n\t\t\t\t\t\t\t\tcontentId = callId;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontentType = category;\n\t\t\t\t\t\t\tcontentId = match[ 3 ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst url = `${ domain }/embed/?contentId=${ contentId }&contentType=${ contentType }`;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t`<a href=${ match[ 0 ] } style=\"display: block; width: 100%; height: 100%; max-width: 298px; min-width: 210px; margin: auto;\">` +\n\t\t\t\t\t\t\t\t'<div style=\"position: relative; padding-bottom: calc(56.25% + 78px); pointer-events: none; border-radius: 8px; overflow: hidden;\">' +\n\t\t\t\t\t\t\t\t\t`<iframe src=\"${ url }\"` +\n\t\t\t\t\t\t\t\t\t\t'style=\"position: absolute; width: 100%; height: 100%; top: 0; left: 0;\" ' +\n\t\t\t\t\t\t\t\t\t\t'frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen>' +\n\t\t\t\t\t\t\t\t\t'</iframe>' +\n\t\t\t\t\t\t\t\t'</div>' +\n\t\t\t\t\t\t\t'</a>'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t} as MediaEmbedConfig );\n\n\t\tthis.registry = new MediaRegistry( editor.locale, editor.config.get( 'mediaEmbed' )! );\n\t}\n\n\tpublic isPublished( url: string ): boolean {\n\t\treturn url.includes( '/d/e/' ) || url.includes( 'pub' ) || url.includes( 'pubhtml' );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\t\tconst renderMediaPreview = editor.config.get( 'mediaEmbed.previewsInData' );\n\t\tconst elementName = editor.config.get( 'mediaEmbed.elementName' )!;\n\n\t\tconst registry = this.registry;\n\n\t\teditor.commands.add( 'mediaEmbed', new MediaEmbedCommand( editor ) );\n\n\t\t// Configure the schema.\n\t\tschema.register( 'media', {\n\t\t\tinheritAllFrom: '$blockObject',\n\t\t\tallowAttributes: [ 'url' ]\n\t\t} );\n\n\t\t// Model -> Data\n\t\tconversion.for( 'dataDowncast' ).elementToStructure( {\n\t\t\tmodel: 'media',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tconst url = modelElement.getAttribute( 'url' ) as string;\n\n\t\t\t\treturn createMediaFigureElement( writer, registry, url, {\n\t\t\t\t\telementName,\n\t\t\t\t\trenderMediaPreview: !!url && renderMediaPreview\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\t// Model -> Data (url -> data-oembed-url)\n\t\tconversion.for( 'dataDowncast' ).add(\n\t\t\tmodelToViewUrlAttributeConverter( registry, {\n\t\t\t\telementName,\n\t\t\t\trenderMediaPreview\n\t\t\t} ) );\n\n\t\t// Model -> View (element)\n\t\tconversion.for( 'editingDowncast' ).elementToStructure( {\n\t\t\tmodel: 'media',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tconst url = modelElement.getAttribute( 'url' ) as string;\n\t\t\t\tconst figure = createMediaFigureElement( writer, registry, url, {\n\t\t\t\t\telementName,\n\t\t\t\t\trenderForEditingView: true\n\t\t\t\t} );\n\n\t\t\t\treturn toMediaWidget( figure, writer, t( 'media widget' ) );\n\t\t\t}\n\t\t} );\n\n\t\t// Model -> View (url -> data-oembed-url)\n\t\tconversion.for( 'editingDowncast' ).add(\n\t\t\tmodelToViewUrlAttributeConverter( registry, {\n\t\t\t\telementName,\n\t\t\t\trenderForEditingView: true\n\t\t\t} ) );\n\n\t\t// View -> Model (data-oembed-url -> url)\n\t\tconversion.for( 'upcast' )\n\t\t\t// Upcast semantic media.\n\t\t\t.elementToElement( {\n\t\t\t\tview: element => [ 'oembed', elementName ].includes( element.name ) && element.getAttribute( 'url' ) ?\n\t\t\t\t\t{ name: true } :\n\t\t\t\t\tnull,\n\t\t\t\tmodel: ( viewMedia, { writer } ) => {\n\t\t\t\t\tconst url = viewMedia.getAttribute( 'url' ) as string;\n\n\t\t\t\t\tif ( registry.hasMedia( url ) ) {\n\t\t\t\t\t\treturn writer.createElement( 'media', { url } );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t} )\n\t\t\t// Upcast non-semantic media.\n\t\t\t.elementToElement( {\n\t\t\t\tview: {\n\t\t\t\t\tname: 'div',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\t'data-oembed-url': true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmodel: ( viewMedia, { writer } ) => {\n\t\t\t\t\tconst url = viewMedia.getAttribute( 'data-oembed-url' ) as string;\n\n\t\t\t\t\tif ( registry.hasMedia( url ) ) {\n\t\t\t\t\t\treturn writer.createElement( 'media', { url } );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t} )\n\t\t\t// Consume `<figure class=\"media\">` elements, that were left after upcast.\n\t\t\t.add( dispatcher => {\n\t\t\t\tconst converter: GetCallback<UpcastElementEvent> = ( evt, data, conversionApi ) => {\n\t\t\t\t\tif ( !conversionApi.consumable.consume( data.viewItem, { name: true, classes: 'media' } ) ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { modelRange, modelCursor } = conversionApi.convertChildren( data.viewItem, data.modelCursor );\n\n\t\t\t\t\tdata.modelRange = modelRange;\n\t\t\t\t\tdata.modelCursor = modelCursor;\n\n\t\t\t\t\tconst modelElement = first( modelRange!.getItems() );\n\n\t\t\t\t\tif ( !modelElement ) {\n\t\t\t\t\t\t// Revert consumed figure so other features can convert it.\n\t\t\t\t\t\tconversionApi.consumable.revert( data.viewItem, { name: true, classes: 'media' } );\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tdispatcher.on<UpcastElementEvent>( 'element:figure', converter );\n\t\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module media-embed/automediaembed\n */\n\nimport { type Editor, Plugin } from 'ckeditor5/src/core';\nimport { LiveRange, LivePosition } from 'ckeditor5/src/engine';\nimport { Clipboard, type ClipboardPipeline } from 'ckeditor5/src/clipboard';\nimport { Delete } from 'ckeditor5/src/typing';\nimport { Undo, type UndoCommand } from 'ckeditor5/src/undo';\nimport { global } from 'ckeditor5/src/utils';\n\nimport MediaEmbedEditing from './mediaembedediting';\nimport { insertMedia } from './utils';\nimport type MediaEmbedCommand from './mediaembedcommand';\n\nconst URL_REGEXP = /^(?:http(s)?:\\/\\/)?[\\w-]+(?:\\.|:)[\\w\\-.~:/?#[\\]@!$&'()*+,;=%]+$/;\n\n/**\n * The auto-media embed plugin. It recognizes media links in the pasted content and embeds\n * them shortly after they are injected into the document.\n */\nexport default class AutoMediaEmbed extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Clipboard, Delete, Undo ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'AutoMediaEmbed' as const;\n\t}\n\n\t/**\n\t * The paste–to–embed `setTimeout` ID. Stored as a property to allow\n\t * cleaning of the timeout.\n\t */\n\tprivate _timeoutId: number | null;\n\n\t/**\n\t * The position where the `<media>` element will be inserted after the timeout,\n\t * determined each time the new content is pasted into the document.\n\t */\n\tprivate _positionToInsert: LivePosition | null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._timeoutId = null;\n\t\tthis._positionToInsert = null;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst modelDocument = editor.model.document;\n\n\t\t// We need to listen on `Clipboard#inputTransformation` because we need to save positions of selection.\n\t\t// After pasting, the content between those positions will be checked for a URL that could be transformed\n\t\t// into media.\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\t\tthis.listenTo( clipboardPipeline, 'inputTransformation', () => {\n\t\t\tconst firstRange = modelDocument.selection.getFirstRange()!;\n\n\t\t\tconst leftLivePosition = LivePosition.fromPosition( firstRange.start );\n\t\t\tleftLivePosition.stickiness = 'toPrevious';\n\n\t\t\tconst rightLivePosition = LivePosition.fromPosition( firstRange.end );\n\t\t\trightLivePosition.stickiness = 'toNext';\n\n\t\t\tmodelDocument.once( 'change:data', () => {\n\t\t\t\tthis._embedMediaBetweenPositions( leftLivePosition, rightLivePosition );\n\n\t\t\t\tleftLivePosition.detach();\n\t\t\t\trightLivePosition.detach();\n\t\t\t}, { priority: 'high' } );\n\t\t} );\n\n\t\tconst undoCommand: UndoCommand = editor.commands.get( 'undo' )!;\n\t\tundoCommand.on( 'execute', () => {\n\t\t\tif ( this._timeoutId ) {\n\t\t\t\tglobal.window.clearTimeout( this._timeoutId );\n\t\t\t\tthis._positionToInsert!.detach();\n\n\t\t\t\tthis._timeoutId = null;\n\t\t\t\tthis._positionToInsert = null;\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t}\n\n\t/**\n\t * Analyzes the part of the document between provided positions in search for a URL representing media.\n\t * When the URL is found, it is automatically converted into media.\n\t *\n\t * @param leftPosition Left position of the selection.\n\t * @param rightPosition Right position of the selection.\n\t */\n\tprivate _embedMediaBetweenPositions( leftPosition: LivePosition, rightPosition: LivePosition ): void {\n\t\tconst editor = this.editor;\n\t\tconst mediaRegistry = editor.plugins.get( MediaEmbedEditing ).registry;\n\t\t// TODO: Use marker instead of LiveRange & LivePositions.\n\t\tconst urlRange = new LiveRange( leftPosition, rightPosition );\n\t\tconst walker = urlRange.getWalker( { ignoreElementEnd: true } );\n\n\t\tlet url = '';\n\n\t\tfor ( const node of walker ) {\n\t\t\tif ( node.item.is( '$textProxy' ) ) {\n\t\t\t\turl += node.item.data;\n\t\t\t}\n\t\t}\n\n\t\turl = url.trim();\n\n\t\t// If the URL does not match to universal URL regexp, let's skip that.\n\t\tif ( !url.match( URL_REGEXP ) ) {\n\t\t\turlRange.detach();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// If the URL represents a media, let's use it.\n\t\tif ( !mediaRegistry.hasMedia( url ) ) {\n\t\t\turlRange.detach();\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst mediaEmbedCommand: MediaEmbedCommand = editor.commands.get( 'mediaEmbed' )!;\n\n\t\t// Do not anything if media element cannot be inserted at the current position (#47).\n\t\tif ( !mediaEmbedCommand.isEnabled ) {\n\t\t\turlRange.detach();\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Position won't be available in the `setTimeout` function so let's clone it.\n\t\tthis._positionToInsert = LivePosition.fromPosition( leftPosition );\n\n\t\t// This action mustn't be executed if undo was called between pasting and auto-embedding.\n\t\tthis._timeoutId = global.window.setTimeout( () => {\n\t\t\teditor.model.change( writer => {\n\t\t\t\tthis._timeoutId = null;\n\n\t\t\t\twriter.remove( urlRange );\n\t\t\t\turlRange.detach();\n\n\t\t\t\tlet insertionPosition: LivePosition | null = null;\n\n\t\t\t\t// Check if position where the media element should be inserted is still valid.\n\t\t\t\t// Otherwise leave it as undefined to use document.selection - default behavior of model.insertContent().\n\t\t\t\tif ( this._positionToInsert!.root.rootName !== '$graveyard' ) {\n\t\t\t\t\tinsertionPosition = this._positionToInsert;\n\t\t\t\t}\n\n\t\t\t\tinsertMedia( editor.model, url, insertionPosition, false );\n\n\t\t\t\tthis._positionToInsert!.detach();\n\t\t\t\tthis._positionToInsert = null;\n\t\t\t} );\n\n\t\t\teditor.plugins.get( Delete ).requestUndoOnBackspace();\n\t\t}, 100 );\n\t}\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./mediaform.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module media-embed/ui/mediaformview\n */\n\nimport {\n\ttype InputTextView,\n\tButtonView,\n\tFocusCycler,\n\tLabeledFieldView,\n\tView,\n\tViewCollection,\n\tcreateLabeledInputText,\n\tsubmitHandler\n} from 'ckeditor5/src/ui';\nimport { FocusTracker, KeystrokeHandler, type Locale } from 'ckeditor5/src/utils';\nimport { icons } from 'ckeditor5/src/core';\n\n// See: #8833.\n// eslint-disable-next-line ckeditor5-rules/ckeditor-imports\nimport '@ckeditor/ckeditor5-ui/theme/components/responsive-form/responsiveform.css';\nimport '../../theme/mediaform.css';\n\n/**\n * The media form view controller class.\n *\n * See {@link module:media-embed/ui/mediaformview~MediaFormView}.\n */\nexport default class MediaFormView extends View {\n\t/**\n\t * Tracks information about the DOM focus in the form.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * The value of the URL input.\n\t */\n\tdeclare public mediaURLInputValue: string;\n\n\t/**\n\t * The URL input view.\n\t */\n\tpublic urlInputView: LabeledFieldView<InputTextView>;\n\n\t/**\n\t * The Save button view.\n\t */\n\tpublic saveButtonView: ButtonView;\n\n\t/**\n\t * The Cancel button view.\n\t */\n\tpublic cancelButtonView: ButtonView;\n\n\t/**\n\t * A collection of views that can be focused in the form.\n\t */\n\tprivate readonly _focusables: ViewCollection;\n\n\t/**\n\t * Helps cycling over {@link #_focusables} in the form.\n\t */\n\tprivate readonly _focusCycler: FocusCycler;\n\n\t/**\n\t * An array of form validators used by {@link #isValid}.\n\t */\n\tprivate readonly _validators: Array<( v: MediaFormView ) => string | undefined>;\n\n\t/**\n\t * The default info text for the {@link #urlInputView}.\n\t */\n\tprivate _urlInputViewInfoDefault?: string;\n\n\t/**\n\t * The info text with an additional tip for the {@link #urlInputView},\n\t * displayed when the input has some value.\n\t */\n\tprivate _urlInputViewInfoTip?: string;\n\n\t/**\n\t * @param validators Form validators used by {@link #isValid}.\n\t * @param locale The localization services instance.\n\t */\n\tconstructor( validators: Array<( v: MediaFormView ) => string | undefined>, locale: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst t = locale.t;\n\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis.set( 'mediaURLInputValue', '' );\n\t\tthis.urlInputView = this._createUrlInput();\n\n\t\tthis.saveButtonView = this._createButton( t( 'Save' ), icons.check, 'ck-button-save' );\n\t\tthis.saveButtonView.type = 'submit';\n\t\tthis.saveButtonView.bind( 'isEnabled' ).to( this, 'mediaURLInputValue', value => !!value );\n\n\t\tthis.cancelButtonView = this._createButton( t( 'Cancel' ), icons.cancel, 'ck-button-cancel', 'cancel' );\n\n\t\tthis._focusables = new ViewCollection();\n\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate form fields backwards using the <kbd>Shift</kbd> + <kbd>Tab</kbd> keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate form fields forwards using the <kbd>Tab</kbd> key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\tthis._validators = validators;\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'form',\n\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-media-form',\n\t\t\t\t\t'ck-responsive-form'\n\t\t\t\t],\n\n\t\t\t\ttabindex: '-1'\n\t\t\t},\n\n\t\t\tchildren: [\n\t\t\t\tthis.urlInputView,\n\t\t\t\tthis.saveButtonView,\n\t\t\t\tthis.cancelButtonView\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tsubmitHandler( {\n\t\t\tview: this\n\t\t} );\n\n\t\tconst childViews = [\n\t\t\tthis.urlInputView,\n\t\t\tthis.saveButtonView,\n\t\t\tthis.cancelButtonView\n\t\t];\n\n\t\tchildViews.forEach( v => {\n\t\t\t// Register the view as focusable.\n\t\t\tthis._focusables.add( v );\n\n\t\t\t// Register the view in the focus tracker.\n\t\t\tthis.focusTracker.add( v.element! );\n\t\t} );\n\n\t\t// Start listening for the keystrokes coming from #element.\n\t\tthis.keystrokes.listenTo( this.element! );\n\n\t\tconst stopPropagation = ( data: KeyboardEvent ) => data.stopPropagation();\n\n\t\t// Since the form is in the dropdown panel which is a child of the toolbar, the toolbar's\n\t\t// keystroke handler would take over the key management in the URL input. We need to prevent\n\t\t// this ASAP. Otherwise, the basic caret movement using the arrow keys will be impossible.\n\t\tthis.keystrokes.set( 'arrowright', stopPropagation );\n\t\tthis.keystrokes.set( 'arrowleft', stopPropagation );\n\t\tthis.keystrokes.set( 'arrowup', stopPropagation );\n\t\tthis.keystrokes.set( 'arrowdown', stopPropagation );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Focuses the fist {@link #_focusables} in the form.\n\t */\n\tpublic focus(): void {\n\t\tthis._focusCycler.focusFirst();\n\t}\n\n\t/**\n\t * The native DOM `value` of the {@link #urlInputView} element.\n\t *\n\t * **Note**: Do not confuse it with the {@link module:ui/inputtext/inputtextview~InputTextView#value}\n\t * which works one way only and may not represent the actual state of the component in the DOM.\n\t */\n\tpublic get url(): string {\n\t\treturn this.urlInputView.fieldView.element!.value.trim();\n\t}\n\n\tpublic set url( url: string ) {\n\t\tthis.urlInputView.fieldView.element!.value = url.trim();\n\t}\n\n\t/**\n\t * Validates the form and returns `false` when some fields are invalid.\n\t */\n\tpublic isValid(): boolean {\n\t\tthis.resetFormStatus();\n\n\t\tfor ( const validator of this._validators ) {\n\t\t\tconst errorText = validator( this );\n\n\t\t\t// One error per field is enough.\n\t\t\tif ( errorText ) {\n\t\t\t\t// Apply updated error.\n\t\t\t\tthis.urlInputView.errorText = errorText;\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Cleans up the supplementary error and information text of the {@link #urlInputView}\n\t * bringing them back to the state when the form has been displayed for the first time.\n\t *\n\t * See {@link #isValid}.\n\t */\n\tpublic resetFormStatus(): void {\n\t\tthis.urlInputView.errorText = null;\n\t\tthis.urlInputView.infoText = this._urlInputViewInfoDefault!;\n\t}\n\n\t/**\n\t * Creates a labeled input view.\n\t *\n\t * @returns Labeled input view instance.\n\t */\n\tprivate _createUrlInput(): LabeledFieldView<InputTextView> {\n\t\tconst t = this.locale!.t;\n\n\t\tconst labeledInput = new LabeledFieldView( this.locale, createLabeledInputText );\n\t\tconst inputField = labeledInput.fieldView;\n\n\t\tthis._urlInputViewInfoDefault = t( 'Paste the media URL in the input.' );\n\t\tthis._urlInputViewInfoTip = t( 'Tip: Paste the URL into the content to embed faster.' );\n\n\t\tlabeledInput.label = t( 'Media URL' );\n\t\tlabeledInput.infoText = this._urlInputViewInfoDefault;\n\n\t\tinputField.on( 'input', () => {\n\t\t\t// Display the tip text only when there is some value. Otherwise fall back to the default info text.\n\t\t\tlabeledInput.infoText = inputField.element!.value ? this._urlInputViewInfoTip! : this._urlInputViewInfoDefault!;\n\t\t\tthis.mediaURLInputValue = inputField.element!.value.trim();\n\t\t} );\n\n\t\treturn labeledInput;\n\t}\n\n\t/**\n\t * Creates a button view.\n\t *\n\t * @param label The button label.\n\t * @param icon The button icon.\n\t * @param className The additional button CSS class name.\n\t * @param eventName An event name that the `ButtonView#execute` event will be delegated to.\n\t * @returns The button view instance.\n\t */\n\tprivate _createButton( label: string, icon: string, className: string, eventName?: string ): ButtonView {\n\t\tconst button = new ButtonView( this.locale );\n\n\t\tbutton.set( {\n\t\t\tlabel,\n\t\t\ticon,\n\t\t\ttooltip: true\n\t\t} );\n\n\t\tbutton.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: className\n\t\t\t}\n\t\t} );\n\n\t\tif ( eventName ) {\n\t\t\tbutton.delegate( 'execute' ).to( this, eventName );\n\t\t}\n\n\t\treturn button;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module media-embed/mediaembedui\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { createDropdown, CssTransitionDisablerMixin, type DropdownView } from 'ckeditor5/src/ui';\n\nimport MediaFormView from './ui/mediaformview';\nimport MediaEmbedEditing from './mediaembedediting';\nimport mediaIcon from '../theme/icons/media.svg';\nimport type MediaEmbedCommand from './mediaembedcommand';\nimport type { LocaleTranslate } from 'ckeditor5/src/utils';\nimport type MediaRegistry from './mediaregistry';\n\n/**\n * The media embed UI plugin.\n */\nexport default class MediaEmbedUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ MediaEmbedEditing ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'MediaEmbedUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst command: MediaEmbedCommand = editor.commands.get( 'mediaEmbed' )!;\n\n\t\teditor.ui.componentFactory.add( 'mediaEmbed', locale => {\n\t\t\tconst dropdown = createDropdown( locale );\n\n\t\t\tthis._setUpDropdown( dropdown, command );\n\n\t\t\treturn dropdown;\n\t\t} );\n\t}\n\n\tprivate _setUpDropdown( dropdown: DropdownView, command: MediaEmbedCommand ): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst button = dropdown.buttonView;\n\t\tconst registry = editor.plugins.get( MediaEmbedEditing ).registry;\n\n\t\tdropdown.once( 'change:isOpen', () => {\n\t\t\tconst form = new ( CssTransitionDisablerMixin( MediaFormView ) )( getFormValidators( editor.t, registry ), editor.locale );\n\n\t\t\tdropdown.panelView.children.add( form );\n\n\t\t\t// Note: Use the low priority to make sure the following listener starts working after the\n\t\t\t// default action of the drop-down is executed (i.e. the panel showed up). Otherwise, the\n\t\t\t// invisible form/input cannot be focused/selected.\n\t\t\tbutton.on( 'open', () => {\n\t\t\t\tform.disableCssTransitions();\n\n\t\t\t\t// Make sure that each time the panel shows up, the URL field remains in sync with the value of\n\t\t\t\t// the command. If the user typed in the input, then canceled (`urlInputView#fieldView#value` stays\n\t\t\t\t// unaltered) and re-opened it without changing the value of the media command (e.g. because they\n\t\t\t\t// didn't change the selection), they would see the old value instead of the actual value of the\n\t\t\t\t// command.\n\t\t\t\tform.url = command.value || '';\n\t\t\t\tform.urlInputView.fieldView.select();\n\t\t\t\tform.enableCssTransitions();\n\t\t\t}, { priority: 'low' } );\n\n\t\t\tdropdown.on( 'submit', () => {\n\t\t\t\tif ( form.isValid() ) {\n\t\t\t\t\teditor.execute( 'mediaEmbed', form.url );\n\t\t\t\t\teditor.editing.view.focus();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tdropdown.on( 'change:isOpen', () => form.resetFormStatus() );\n\t\t\tdropdown.on( 'cancel', () => {\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\tform.delegate( 'submit', 'cancel' ).to( dropdown );\n\t\t\tform.urlInputView.fieldView.bind( 'value' ).to( command, 'value' );\n\n\t\t\t// Form elements should be read-only when corresponding commands are disabled.\n\t\t\tform.urlInputView.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\t\t} );\n\n\t\tdropdown.bind( 'isEnabled' ).to( command );\n\n\t\tbutton.set( {\n\t\t\tlabel: t( 'Insert media' ),\n\t\t\ticon: mediaIcon,\n\t\t\ttooltip: true\n\t\t} );\n\t}\n}\n\nfunction getFormValidators( t: LocaleTranslate, registry: MediaRegistry ): Array<( v: MediaFormView ) => string | undefined> {\n\treturn [\n\t\tform => {\n\t\t\tif ( !form.url.length ) {\n\t\t\t\treturn t( 'The URL must not be empty.' );\n\t\t\t}\n\t\t},\n\t\tform => {\n\t\t\tif ( !registry.hasMedia( form.url ) ) {\n\t\t\t\treturn t( 'This media URL is not supported.' );\n\t\t\t}\n\t\t}\n\t];\n}\n","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\"><path d=\\\"M18.68 3.03c.6 0 .59-.03.59.55v12.84c0 .59.01.56-.59.56H1.29c-.6 0-.59.03-.59-.56V3.58c0-.58-.01-.55.6-.55h17.38zM15.77 15V5H4.2v10h11.57zM2 4v1h1V4H2zm0 2v1h1V6H2zm0 2v1h1V8H2zm0 2v1h1v-1H2zm0 2v1h1v-1H2zm0 2v1h1v-1H2zM17 4v1h1V4h-1zm0 2v1h1V6h-1zm0 2v1h1V8h-1zm0 2v1h1v-1h-1zm0 2v1h1v-1h-1zm0 2v1h1v-1h-1zM7.5 7.177a.4.4 0 0 1 .593-.351l5.133 2.824a.4.4 0 0 1 0 .7l-5.133 2.824a.4.4 0 0 1-.593-.35V7.176v.001z\\\"/></svg>\";","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./mediaembed.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/list\n */\n\nimport {\n\tMatcher,\n\tUpcastWriter,\n\ttype ViewDocumentFragment,\n\ttype ViewElement,\n\ttype ViewNode,\n\ttype ViewText\n} from 'ckeditor5/src/engine';\n\n/**\n * Transforms Word specific list-like elements to the semantic HTML lists.\n *\n * Lists in Word are represented by block elements with special attributes like:\n *\n * ```xml\n * <p class=MsoListParagraphCxSpFirst style='mso-list:l1 level1 lfo1'>...</p> // Paragraph based list.\n * <h1 style='mso-list:l0 level1 lfo1'>...</h1> // Heading 1 based list.\n * ```\n *\n * @param documentFragment The view structure to be transformed.\n * @param stylesString Styles from which list-like elements styling will be extracted.\n */\nexport function transformListItemLikeElementsIntoLists(\n\tdocumentFragment: ViewDocumentFragment,\n\tstylesString: string\n): void {\n\tif ( !documentFragment.childCount ) {\n\t\treturn;\n\t}\n\n\tconst writer = new UpcastWriter( documentFragment.document );\n\tconst itemLikeElements = findAllItemLikeElements( documentFragment, writer );\n\n\tif ( !itemLikeElements.length ) {\n\t\treturn;\n\t}\n\n\tlet currentList: ViewElement | null = null;\n\tlet currentIndentation = 1;\n\n\titemLikeElements.forEach( ( itemLikeElement, i ) => {\n\t\tconst isDifferentList = isNewListNeeded( itemLikeElements[ i - 1 ], itemLikeElement );\n\t\tconst previousItemLikeElement = isDifferentList ? null : itemLikeElements[ i - 1 ];\n\t\tconst indentationDifference = getIndentationDifference( previousItemLikeElement, itemLikeElement );\n\n\t\tif ( isDifferentList ) {\n\t\t\tcurrentList = null;\n\t\t\tcurrentIndentation = 1;\n\t\t}\n\n\t\tif ( !currentList || indentationDifference !== 0 ) {\n\t\t\tconst listStyle = detectListStyle( itemLikeElement, stylesString );\n\n\t\t\tif ( !currentList ) {\n\t\t\t\tcurrentList = insertNewEmptyList( listStyle, itemLikeElement.element, writer );\n\t\t\t} else if ( itemLikeElement.indent > currentIndentation ) {\n\t\t\t\tconst lastListItem = currentList.getChild( currentList.childCount - 1 ) as ViewElement;\n\t\t\t\tconst lastListItemChild = lastListItem!.getChild( lastListItem.childCount - 1 ) as ViewElement;\n\n\t\t\t\tcurrentList = insertNewEmptyList( listStyle, lastListItemChild, writer );\n\t\t\t\tcurrentIndentation += 1;\n\t\t\t} else if ( itemLikeElement.indent < currentIndentation ) {\n\t\t\t\tconst differentIndentation = currentIndentation - itemLikeElement.indent;\n\n\t\t\t\tcurrentList = findParentListAtLevel( currentList, differentIndentation );\n\t\t\t\tcurrentIndentation = itemLikeElement.indent;\n\t\t\t}\n\n\t\t\tif ( itemLikeElement.indent <= currentIndentation ) {\n\t\t\t\tif ( !currentList.is( 'element', listStyle.type ) ) {\n\t\t\t\t\tcurrentList = writer.rename( listStyle.type, currentList );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst listItem = transformElementIntoListItem( itemLikeElement.element, writer );\n\n\t\twriter.appendChild( listItem, currentList! );\n\t} );\n}\n\n/**\n * Removes paragraph wrapping content inside a list item.\n */\nexport function unwrapParagraphInListItem(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: UpcastWriter\n): void {\n\tfor ( const value of writer.createRangeIn( documentFragment ) ) {\n\t\tconst element = value.item;\n\n\t\tif ( element.is( 'element', 'li' ) ) {\n\t\t\t// Google Docs allows for single paragraph inside LI.\n\t\t\tconst firstChild = element.getChild( 0 );\n\n\t\t\tif ( firstChild && firstChild.is( 'element', 'p' ) ) {\n\t\t\t\twriter.unwrapElement( firstChild );\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Finds all list-like elements in a given document fragment.\n *\n * @param documentFragment Document fragment in which to look for list-like nodes.\n * @returns Array of found list-like items. Each item is an object containing:\n */\nfunction findAllItemLikeElements(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: UpcastWriter\n): Array<ListLikeElement> {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\t// Matcher for finding list-like elements.\n\tconst itemLikeElementsMatcher = new Matcher( {\n\t\tname: /^p|h\\d+$/,\n\t\tstyles: {\n\t\t\t'mso-list': /.*/\n\t\t}\n\t} );\n\n\tconst itemLikeElements: Array<ListLikeElement> = [];\n\n\tfor ( const value of range ) {\n\t\tif ( value.type === 'elementStart' && itemLikeElementsMatcher.match( value.item as ViewElement ) ) {\n\t\t\tconst itemData = getListItemData( value.item as ViewElement );\n\n\t\t\titemLikeElements.push( {\n\t\t\t\telement: value.item as ViewElement,\n\t\t\t\tid: itemData.id,\n\t\t\t\torder: itemData.order,\n\t\t\t\tindent: itemData.indent\n\t\t\t} );\n\t\t}\n\t}\n\n\treturn itemLikeElements;\n}\n\n/**\n * Extracts list item style from the provided CSS.\n *\n * List item style is extracted from the CSS stylesheet. Each list with its specific style attribute\n * value (`mso-list:l1 level1 lfo1`) has its dedicated properties in a CSS stylesheet defined with a selector like:\n *\n * ```css\n * @list l1:level1 { ... }\n * ```\n *\n * It contains `mso-level-number-format` property which defines list numbering/bullet style. If this property\n * is not defined it means default `decimal` numbering.\n *\n * Here CSS string representation is used as `mso-level-number-format` property is an invalid CSS property\n * and will be removed during CSS parsing.\n *\n * @param listLikeItem List-like item for which list style will be searched for. Usually\n * a result of `findAllItemLikeElements()` function.\n * @param stylesString CSS stylesheet.\n * @returns An object with properties:\n *\n * * type - List type, could be `ul` or `ol`.\n * * startIndex - List start index, valid only for ordered lists.\n * * style - List style, for example: `decimal`, `lower-roman`, etc. It is extracted\n * directly from Word stylesheet and adjusted to represent proper values for the CSS `list-style-type` property.\n * If it cannot be adjusted, the `null` value is returned.\n */\nfunction detectListStyle( listLikeItem: ListLikeElement, stylesString: string ) {\n\tconst listStyleRegexp = new RegExp( `@list l${ listLikeItem.id }:level${ listLikeItem.indent }\\\\s*({[^}]*)`, 'gi' );\n\tconst listStyleTypeRegex = /mso-level-number-format:([^;]{0,100});/gi;\n\tconst listStartIndexRegex = /mso-level-start-at:\\s{0,100}([0-9]{0,10})\\s{0,100};/gi;\n\n\tconst listStyleMatch = listStyleRegexp.exec( stylesString );\n\n\tlet listStyleType = 'decimal'; // Decimal is default one.\n\tlet type = 'ol'; // <ol> is default list.\n\tlet startIndex = null;\n\n\tif ( listStyleMatch && listStyleMatch[ 1 ] ) {\n\t\tconst listStyleTypeMatch = listStyleTypeRegex.exec( listStyleMatch[ 1 ] );\n\n\t\tif ( listStyleTypeMatch && listStyleTypeMatch[ 1 ] ) {\n\t\t\tlistStyleType = listStyleTypeMatch[ 1 ].trim();\n\t\t\ttype = listStyleType !== 'bullet' && listStyleType !== 'image' ? 'ol' : 'ul';\n\t\t}\n\n\t\t// Styles for the numbered lists are always defined in the Word CSS stylesheet.\n\t\t// Unordered lists MAY contain a value for the Word CSS definition `mso-level-text` but sometimes\n\t\t// this tag is missing. And because of that, we cannot depend on that. We need to predict the list style value\n\t\t// based on the list style marker element.\n\t\tif ( listStyleType === 'bullet' ) {\n\t\t\tconst bulletedStyle = findBulletedListStyle( listLikeItem.element );\n\n\t\t\tif ( bulletedStyle ) {\n\t\t\t\tlistStyleType = bulletedStyle;\n\t\t\t}\n\t\t} else {\n\t\t\tconst listStartIndexMatch = listStartIndexRegex.exec( listStyleMatch[ 1 ] );\n\n\t\t\tif ( listStartIndexMatch && listStartIndexMatch[ 1 ] ) {\n\t\t\t\tstartIndex = parseInt( listStartIndexMatch[ 1 ] );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\ttype,\n\t\tstartIndex,\n\t\tstyle: mapListStyleDefinition( listStyleType )\n\t};\n}\n\n/**\n * Tries to extract the `list-style-type` value based on the marker element for bulleted list.\n */\nfunction findBulletedListStyle( element: ViewElement ) {\n\tconst listMarkerElement = findListMarkerNode( element );\n\n\tif ( !listMarkerElement ) {\n\t\treturn null;\n\t}\n\n\tconst listMarker = listMarkerElement._data;\n\n\tif ( listMarker === 'o' ) {\n\t\treturn 'circle';\n\t} else if ( listMarker === '·' ) {\n\t\treturn 'disc';\n\t}\n\t// Word returns '§' instead of '■' for the square list style.\n\telse if ( listMarker === '§' ) {\n\t\treturn 'square';\n\t}\n\n\treturn null;\n}\n\n/**\n * Tries to find a text node that represents the marker element (list-style-type).\n */\nfunction findListMarkerNode( element: ViewElement ): ViewText | null {\n\t// If the first child is a text node, it is the data for the element.\n\t// The list-style marker is not present here.\n\tif ( element.getChild( 0 )!.is( '$text' ) ) {\n\t\treturn null;\n\t}\n\n\tfor ( const childNode of element.getChildren() ) {\n\t\t// The list-style marker will be inside the `<span>` element. Let's ignore all non-span elements.\n\t\t// It may happen that the `<a>` element is added as the first child. Most probably, it's an anchor element.\n\t\tif ( !childNode.is( 'element', 'span' ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst textNodeOrElement = childNode.getChild( 0 );\n\n\t\tif ( !textNodeOrElement ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If already found the marker element, use it.\n\t\tif ( textNodeOrElement.is( '$text' ) ) {\n\t\t\treturn textNodeOrElement;\n\t\t}\n\n\t\treturn ( textNodeOrElement as any ).getChild( 0 );\n\t}\n\n\t/* istanbul ignore next -- @preserve */\n\treturn null;\n}\n\n/**\n * Parses the `list-style-type` value extracted directly from the Word CSS stylesheet and returns proper CSS definition.\n */\nfunction mapListStyleDefinition( value: string ) {\n\tif ( value.startsWith( 'arabic-leading-zero' ) ) {\n\t\treturn 'decimal-leading-zero';\n\t}\n\n\tswitch ( value ) {\n\t\tcase 'alpha-upper':\n\t\t\treturn 'upper-alpha';\n\t\tcase 'alpha-lower':\n\t\t\treturn 'lower-alpha';\n\t\tcase 'roman-upper':\n\t\t\treturn 'upper-roman';\n\t\tcase 'roman-lower':\n\t\t\treturn 'lower-roman';\n\t\tcase 'circle':\n\t\tcase 'disc':\n\t\tcase 'square':\n\t\t\treturn value;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\n/**\n * Creates an empty list of a given type and inserts it after a specified element.\n *\n * @param listStyle List style object which determines the type of newly created list.\n * Usually a result of `detectListStyle()` function.\n * @param element Element after which list is inserted.\n * @returns Newly created list element.\n */\nfunction insertNewEmptyList(\n\tlistStyle: ReturnType<typeof detectListStyle>,\n\telement: ViewElement,\n\twriter: UpcastWriter\n) {\n\tconst parent = element.parent!;\n\tconst list = writer.createElement( listStyle.type );\n\tconst position = parent.getChildIndex( element ) + 1;\n\n\twriter.insertChild( position, list, parent );\n\n\t// We do not support modifying the marker for a particular list item.\n\t// Set the value for the `list-style-type` property directly to the list container.\n\tif ( listStyle.style ) {\n\t\twriter.setStyle( 'list-style-type', listStyle.style, list );\n\t}\n\n\tif ( listStyle.startIndex && listStyle.startIndex > 1 ) {\n\t\twriter.setAttribute( 'start', listStyle.startIndex, list );\n\t}\n\n\treturn list;\n}\n\n/**\n * Transforms a given element into a semantic list item. As the function operates on a provided\n * {module:engine/src/view/element~Element element} it will modify the view structure to which this element belongs.\n *\n * @param element Element which will be transformed into a list item.\n * @returns New element to which the given one was transformed. It is\n * inserted in place of the old element (the reference to the old element is lost due to renaming).\n */\nfunction transformElementIntoListItem( element: ViewElement, writer: UpcastWriter ) {\n\tremoveBulletElement( element, writer );\n\twriter.removeStyle( 'text-indent', element ); // #12361\n\n\treturn writer.rename( 'li', element )!;\n}\n\n/**\n * Extracts list item information from Word specific list-like element style:\n *\n * ```\n * `style=\"mso-list:l1 level1 lfo1\"`\n * ```\n *\n * where:\n *\n * ```\n * * `l1` is a list id (however it does not mean this is a continuous list - see #43),\n * * `level1` is a list item indentation level,\n * * `lfo1` is a list insertion order in a document.\n * ```\n *\n * @param element Element from which style data is extracted.\n */\nfunction getListItemData( element: ViewElement ): ListItemData {\n\tconst data: ListItemData = {} as any;\n\tconst listStyle = element.getStyle( 'mso-list' );\n\n\tif ( listStyle ) {\n\t\tconst idMatch = listStyle.match( /(^|\\s{1,100})l(\\d+)/i );\n\t\tconst orderMatch = listStyle.match( /\\s{0,100}lfo(\\d+)/i );\n\t\tconst indentMatch = listStyle.match( /\\s{0,100}level(\\d+)/i );\n\n\t\tif ( idMatch && orderMatch && indentMatch ) {\n\t\t\tdata.id = idMatch[ 2 ];\n\t\t\tdata.order = orderMatch[ 1 ];\n\t\t\tdata.indent = parseInt( indentMatch[ 1 ] );\n\t\t}\n\t}\n\n\treturn data;\n}\n\n/**\n * Removes span with a numbering/bullet from a given element.\n */\nfunction removeBulletElement( element: ViewElement, writer: UpcastWriter ) {\n\t// Matcher for finding `span` elements holding lists numbering/bullets.\n\tconst bulletMatcher = new Matcher( {\n\t\tname: 'span',\n\t\tstyles: {\n\t\t\t'mso-list': 'Ignore'\n\t\t}\n\t} );\n\n\tconst range = writer.createRangeIn( element );\n\n\tfor ( const value of range ) {\n\t\tif ( value.type === 'elementStart' && bulletMatcher.match( value.item as ViewElement ) ) {\n\t\t\twriter.remove( value.item as ViewElement );\n\t\t}\n\t}\n}\n\n/**\n * Whether the previous and current items belong to the same list. It is determined based on `item.id`\n * (extracted from `mso-list` style, see #getListItemData) and a previous sibling of the current item.\n *\n * However, it's quite easy to change the `id` attribute for nested lists in Word. It will break the list feature while pasting.\n * Let's check also the `indent` attribute. If the difference between those two elements is equal to 1, we can assume that\n * the `currentItem` is a beginning of the nested list because lists in CKEditor 5 always start with the `indent=0` attribute.\n * See: https://github.com/ckeditor/ckeditor5/issues/7805.\n */\nfunction isNewListNeeded( previousItem: ListLikeElement, currentItem: ListLikeElement ) {\n\tif ( !previousItem ) {\n\t\treturn true;\n\t}\n\n\tif ( previousItem.id !== currentItem.id ) {\n\t\t// See: https://github.com/ckeditor/ckeditor5/issues/7805.\n\t\t//\n\t\t// * List item 1.\n\t\t// - Nested list item 1.\n\t\tif ( currentItem.indent - previousItem.indent === 1 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tconst previousSibling = currentItem.element.previousSibling;\n\n\tif ( !previousSibling ) {\n\t\treturn true;\n\t}\n\n\t// Even with the same id the list does not have to be continuous (#43).\n\treturn !isList( previousSibling );\n}\n\nfunction isList( element: ViewNode ) {\n\treturn element.is( 'element', 'ol' ) || element.is( 'element', 'ul' );\n}\n\n/**\n * Calculates the indentation difference between two given list items (based on the indent attribute\n * extracted from the `mso-list` style, see #getListItemData).\n */\nfunction getIndentationDifference( previousItem: ListLikeElement | null, currentItem: ListLikeElement ) {\n\treturn previousItem ? currentItem.indent - previousItem.indent : currentItem.indent - 1;\n}\n\n/**\n * Finds the parent list element (ul/ol) of a given list element with indentation level lower by a given value.\n *\n * @param listElement List element from which to start looking for a parent list.\n * @param indentationDifference Indentation difference between lists.\n * @returns Found list element with indentation level lower by a given value.\n */\nfunction findParentListAtLevel( listElement: ViewElement, indentationDifference: number ) {\n\tconst ancestors = listElement.getAncestors( { parentFirst: true } );\n\n\tlet parentList = null;\n\tlet levelChange = 0;\n\n\tfor ( const ancestor of ancestors ) {\n\t\tif ( ancestor.is( 'element', 'ul' ) || ancestor.is( 'element', 'ol' ) ) {\n\t\t\tlevelChange++;\n\t\t}\n\n\t\tif ( levelChange === indentationDifference ) {\n\t\t\tparentList = ancestor;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn parentList as ViewElement;\n}\n\ninterface ListItemData {\n\n\t/**\n\t * Parent list id.\n\t */\n\tid: string;\n\n\t/**\n\t * List item creation order.\n\t */\n\torder: string;\n\n\t/**\n\t * List item indentation level.\n\t */\n\tindent: number;\n}\n\ninterface ListLikeElement extends ListItemData {\n\n\t/**\n\t * List-like element.\n\t */\n\telement: ViewElement;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/image\n */\n\n/* globals btoa */\n\nimport {\n\tMatcher,\n\tUpcastWriter,\n\ttype ViewDocumentFragment,\n\ttype ViewElement,\n\ttype ViewNode\n} from 'ckeditor5/src/engine';\n\n/**\n * Replaces source attribute of all `<img>` elements representing regular\n * images (not the Word shapes) with inlined base64 image representation extracted from RTF or Blob data.\n *\n * @param documentFragment Document fragment on which transform images.\n * @param rtfData The RTF data from which images representation will be used.\n */\nexport function replaceImagesSourceWithBase64( documentFragment: ViewDocumentFragment, rtfData: string ): void {\n\tif ( !documentFragment.childCount ) {\n\t\treturn;\n\t}\n\n\tconst upcastWriter = new UpcastWriter( documentFragment.document );\n\tconst shapesIds = findAllShapesIds( documentFragment, upcastWriter );\n\n\tremoveAllImgElementsRepresentingShapes( shapesIds, documentFragment, upcastWriter );\n\tinsertMissingImgs( shapesIds, documentFragment, upcastWriter );\n\tremoveAllShapeElements( documentFragment, upcastWriter );\n\n\tconst images = findAllImageElementsWithLocalSource( documentFragment, upcastWriter );\n\n\tif ( images.length ) {\n\t\treplaceImagesFileSourceWithInlineRepresentation( images, extractImageDataFromRtf( rtfData ), upcastWriter );\n\t}\n}\n\n/**\n * Converts given HEX string to base64 representation.\n *\n * @internal\n * @param hexString The HEX string to be converted.\n * @returns Base64 representation of a given HEX string.\n */\nexport function _convertHexToBase64( hexString: string ): string {\n\treturn btoa( hexString.match( /\\w{2}/g )!.map( char => {\n\t\treturn String.fromCharCode( parseInt( char, 16 ) );\n\t} ).join( '' ) );\n}\n\n/**\n * Finds all shapes (`<v:*>...</v:*>`) ids. Shapes can represent images (canvas)\n * or Word shapes (which does not have RTF or Blob representation).\n *\n * @param documentFragment Document fragment from which to extract shape ids.\n * @returns Array of shape ids.\n */\nfunction findAllShapesIds( documentFragment: ViewDocumentFragment, writer: UpcastWriter ): Array<string> {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\tconst shapeElementsMatcher = new Matcher( {\n\t\tname: /v:(.+)/\n\t} );\n\n\tconst shapesIds = [];\n\n\tfor ( const value of range ) {\n\t\tif ( value.type != 'elementStart' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst el = value.item as ViewElement;\n\t\tconst previousSibling = el.previousSibling;\n\t\tconst prevSiblingName = previousSibling && previousSibling.is( 'element' ) ? previousSibling.name : null;\n\n\t\t// If shape element have 'o:gfxdata' attribute and is not directly before `<v:shapetype>` element it means it represent Word shape.\n\t\tif ( shapeElementsMatcher.match( el ) && el.getAttribute( 'o:gfxdata' ) && prevSiblingName !== 'v:shapetype' ) {\n\t\t\tshapesIds.push( ( value.item as ViewElement ).getAttribute( 'id' )! );\n\t\t}\n\t}\n\n\treturn shapesIds;\n}\n\n/**\n * Removes all `<img>` elements which represents Word shapes and not regular images.\n *\n * @param shapesIds Shape ids which will be checked against `<img>` elements.\n * @param documentFragment Document fragment from which to remove `<img>` elements.\n */\nfunction removeAllImgElementsRepresentingShapes(\n\tshapesIds: Array<string>,\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: UpcastWriter\n): void {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\tconst imageElementsMatcher = new Matcher( {\n\t\tname: 'img'\n\t} );\n\n\tconst imgs = [];\n\n\tfor ( const value of range ) {\n\t\tif ( value.item.is( 'element' ) && imageElementsMatcher.match( value.item ) ) {\n\t\t\tconst el = value.item;\n\t\t\tconst shapes = el.getAttribute( 'v:shapes' ) ? el.getAttribute( 'v:shapes' )!.split( ' ' ) : [];\n\n\t\t\tif ( shapes.length && shapes.every( shape => shapesIds.indexOf( shape ) > -1 ) ) {\n\t\t\t\timgs.push( el );\n\t\t\t// Shapes may also have empty source while content is paste in some browsers (Safari).\n\t\t\t} else if ( !el.getAttribute( 'src' ) ) {\n\t\t\t\timgs.push( el );\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( const img of imgs ) {\n\t\twriter.remove( img );\n\t}\n}\n\n/**\n * Removes all shape elements (`<v:*>...</v:*>`) so they do not pollute the output structure.\n *\n * @param documentFragment Document fragment from which to remove shape elements.\n */\nfunction removeAllShapeElements( documentFragment: ViewDocumentFragment, writer: UpcastWriter ) {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\tconst shapeElementsMatcher = new Matcher( {\n\t\tname: /v:(.+)/\n\t} );\n\n\tconst shapes = [];\n\n\tfor ( const value of range ) {\n\t\tif ( value.type == 'elementStart' && shapeElementsMatcher.match( value.item as ViewElement ) ) {\n\t\t\tshapes.push( value.item as ViewElement );\n\t\t}\n\t}\n\n\tfor ( const shape of shapes ) {\n\t\twriter.remove( shape );\n\t}\n}\n\n/**\n * Inserts `img` tags if there is none after a shape.\n */\nfunction insertMissingImgs( shapeIds: Array<string>, documentFragment: ViewDocumentFragment, writer: UpcastWriter ) {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\tconst shapes: Array<ViewElement> = [];\n\n\tfor ( const value of range ) {\n\t\tif ( value.type == 'elementStart' && value.item.is( 'element', 'v:shape' ) ) {\n\t\t\tconst id = value.item.getAttribute( 'id' )!;\n\n\t\t\tif ( shapeIds.includes( id ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !containsMatchingImg( value.item.parent!.getChildren(), id ) ) {\n\t\t\t\tshapes.push( value.item );\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( const shape of shapes ) {\n\t\tconst attrs: Record<string, unknown> = {\n\t\t\tsrc: findSrc( shape )\n\t\t};\n\n\t\tif ( shape.hasAttribute( 'alt' ) ) {\n\t\t\tattrs.alt = shape.getAttribute( 'alt' );\n\t\t}\n\n\t\tconst img = writer.createElement( 'img', attrs );\n\n\t\twriter.insertChild( shape.index! + 1, img, shape.parent! );\n\t}\n\n\tfunction containsMatchingImg( nodes: Iterable<ViewNode>, id: string ): boolean {\n\t\tfor ( const node of nodes ) {\n\t\t\t/* istanbul ignore else -- @preserve */\n\t\t\tif ( node.is( 'element' ) ) {\n\t\t\t\tif ( node.name == 'img' && node.getAttribute( 'v:shapes' ) == id ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif ( containsMatchingImg( node.getChildren(), id ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tfunction findSrc( shape: ViewElement ) {\n\t\tfor ( const child of shape.getChildren() ) {\n\t\t\t/* istanbul ignore else -- @preserve */\n\t\t\tif ( child.is( 'element' ) && child.getAttribute( 'src' ) ) {\n\t\t\t\treturn child.getAttribute( 'src' );\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Finds all `<img>` elements in a given document fragment which have source pointing to local `file://` resource.\n *\n * @param documentFragment Document fragment in which to look for `<img>` elements.\n * @returns result All found images grouped by source type.\n */\nfunction findAllImageElementsWithLocalSource(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: UpcastWriter\n): Array<ViewElement> {\n\tconst range = writer.createRangeIn( documentFragment );\n\n\tconst imageElementsMatcher = new Matcher( {\n\t\tname: 'img'\n\t} );\n\n\tconst imgs = [];\n\n\tfor ( const value of range ) {\n\t\tif ( value.item.is( 'element' ) && imageElementsMatcher.match( value.item ) ) {\n\t\t\tif ( value.item.getAttribute( 'src' )!.startsWith( 'file://' ) ) {\n\t\t\t\timgs.push( value.item );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn imgs;\n}\n\n/**\n * Extracts all images HEX representations from a given RTF data.\n *\n * @param rtfData The RTF data from which to extract images HEX representation.\n * @returns Array of found HEX representations. Each array item is an object containing:\n *\n * * hex Image representation in HEX format.\n * * type Type of image, `image/png` or `image/jpeg`.\n */\nfunction extractImageDataFromRtf( rtfData: string ): Array<{ hex: string; type: string }> {\n\tif ( !rtfData ) {\n\t\treturn [];\n\t}\n\n\tconst regexPictureHeader = /{\\\\pict[\\s\\S]+?\\\\bliptag-?\\d+(\\\\blipupi-?\\d+)?({\\\\\\*\\\\blipuid\\s?[\\da-fA-F]+)?[\\s}]*?/;\n\tconst regexPicture = new RegExp( '(?:(' + regexPictureHeader.source + '))([\\\\da-fA-F\\\\s]+)\\\\}', 'g' );\n\tconst images = rtfData.match( regexPicture );\n\tconst result = [];\n\n\tif ( images ) {\n\t\tfor ( const image of images ) {\n\t\t\tlet imageType: string | false = false;\n\n\t\t\tif ( image.includes( '\\\\pngblip' ) ) {\n\t\t\t\timageType = 'image/png';\n\t\t\t} else if ( image.includes( '\\\\jpegblip' ) ) {\n\t\t\t\timageType = 'image/jpeg';\n\t\t\t}\n\n\t\t\tif ( imageType ) {\n\t\t\t\tresult.push( {\n\t\t\t\t\thex: image.replace( regexPictureHeader, '' ).replace( /[^\\da-fA-F]/g, '' ),\n\t\t\t\t\ttype: imageType\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Replaces `src` attribute value of all given images with the corresponding base64 image representation.\n *\n * @param imageElements Array of image elements which will have its source replaced.\n * @param imagesHexSources Array of images hex sources (usually the result of `extractImageDataFromRtf()` function).\n * The array should be the same length as `imageElements` parameter.\n */\nfunction replaceImagesFileSourceWithInlineRepresentation(\n\timageElements: Array<ViewElement>,\n\timagesHexSources: ReturnType<typeof extractImageDataFromRtf>,\n\twriter: UpcastWriter\n) {\n\t// Assume there is an equal amount of image elements and images HEX sources so they can be matched accordingly based on existing order.\n\tif ( imageElements.length === imagesHexSources.length ) {\n\t\tfor ( let i = 0; i < imageElements.length; i++ ) {\n\t\t\tconst newSrc = `data:${ imagesHexSources[ i ].type };base64,${ _convertHexToBase64( imagesHexSources[ i ].hex ) }`;\n\t\t\twriter.setAttribute( 'src', newSrc, imageElements[ i ] );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/normalizers/mswordnormalizer\n */\n\nimport { transformListItemLikeElementsIntoLists } from '../filters/list';\nimport { replaceImagesSourceWithBase64 } from '../filters/image';\nimport { setTableAlignment } from '../filters/table';\nimport type { ViewDocument } from 'ckeditor5/src/engine';\nimport type { Normalizer, NormalizerData } from '../normalizer';\n\nconst msWordMatch1 = /<meta\\s*name=\"?generator\"?\\s*content=\"?microsoft\\s*word\\s*\\d+\"?\\/?>/i;\nconst msWordMatch2 = /xmlns:o=\"urn:schemas-microsoft-com/i;\n\n/**\n * Normalizer for the content pasted from Microsoft Word.\n */\nexport default class MSWordNormalizer implements Normalizer {\n\tpublic readonly document: ViewDocument;\n\n\t/**\n\t * Creates a new `MSWordNormalizer` instance.\n\t *\n\t * @param document View document.\n\t */\n\tconstructor( document: ViewDocument ) {\n\t\tthis.document = document;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic isActive( htmlString: string ): boolean {\n\t\treturn msWordMatch1.test( htmlString ) || msWordMatch2.test( htmlString );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic execute( data: NormalizerData ): void {\n\t\tconst { body: documentFragment, stylesString } = data._parsedData;\n\n\t\ttransformListItemLikeElementsIntoLists( documentFragment, stylesString );\n\t\treplaceImagesSourceWithBase64( documentFragment, data.dataTransfer.getData( 'text/rtf' ) );\n\t\tsetTableAlignment( documentFragment );\n\t\tdata.content = documentFragment;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/table\n */\n\nimport { UpcastWriter, type ViewDocumentFragment } from 'ckeditor5/src/engine';\n\n/**\n * Set alignment for table pasted from MS Word.\n *\n * @param documentFragment The view structure to be transformed.\n */\nexport function setTableAlignment( documentFragment: ViewDocumentFragment ): void {\n\tconst upcastWriter = new UpcastWriter( documentFragment.document );\n\n\tfor ( const item of documentFragment.getChildren() ) {\n\t\tif ( !item.is( 'element' ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If table is not wrapped into div[align], it should be aligned left.\n\t\t// More details: https://github.com/ckeditor/ckeditor5/issues/8752#issuecomment-1623507171.\n\t\t// RTL tables have the `align` attribute set explicitly -\n\t\t// see https://github.com/ckeditor/ckeditor5/issues/8752#issuecomment-1628876074.\n\t\tif ( item.is( 'element', 'table' ) ) {\n\t\t\tupcastWriter.setAttribute( 'align', 'left', item );\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst align = item.getAttribute( 'align' );\n\t\tconst child = item.getChild( 0 );\n\n\t\t// We're looking for the `<div>` elements with `align` attribute and a child.\n\t\tif ( item.name !== 'div' || !align || !child ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// If table is wrapped in div[align], the defined alignment value should be preserved.\n\t\t// More details: https://github.com/ckeditor/ckeditor5/issues/8752#issuecomment-1629065676.\n\t\tif ( child.is( 'element', 'table' ) ) {\n\t\t\tupcastWriter.setAttribute( 'align', align === 'center' ? 'none' : align, child );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/br\n */\n\nimport {\n\tDomConverter,\n\tViewDocument,\n\ttype UpcastWriter,\n\ttype ViewDocumentFragment,\n\ttype ViewElement,\n\ttype ViewNode\n} from 'ckeditor5/src/engine';\n\n/**\n * Transforms `<br>` elements that are siblings to some block element into a paragraphs.\n *\n * @param documentFragment The view structure to be transformed.\n */\nexport default function transformBlockBrsToParagraphs(\n\tdocumentFragment: ViewDocumentFragment,\n\twriter: UpcastWriter\n): void {\n\tconst viewDocument = new ViewDocument( writer.document.stylesProcessor );\n\tconst domConverter = new DomConverter( viewDocument, { renderingMode: 'data' } );\n\n\tconst blockElements = domConverter.blockElements;\n\tconst inlineObjectElements = domConverter.inlineObjectElements;\n\n\tconst elementsToReplace = [];\n\n\tfor ( const value of writer.createRangeIn( documentFragment ) ) {\n\t\tconst element = value.item;\n\n\t\tif ( element.is( 'element', 'br' ) ) {\n\t\t\tconst nextSibling = findSibling( element, 'forward', writer, { blockElements, inlineObjectElements } );\n\t\t\tconst previousSibling = findSibling( element, 'backward', writer, { blockElements, inlineObjectElements } );\n\n\t\t\tconst nextSiblingIsBlock = isBlockViewElement( nextSibling, blockElements );\n\t\t\tconst previousSiblingIsBlock = isBlockViewElement( previousSibling, blockElements );\n\n\t\t\t// If the <br> is surrounded by blocks then convert it to a paragraph:\n\t\t\t// * <p>foo</p>[<br>]<p>bar</p> -> <p>foo</p>[<p></p>]<p>bar</p>\n\t\t\t// * <p>foo</p>[<br>] -> <p>foo</p>[<p></p>]\n\t\t\t// * [<br>]<p>foo</p> -> [<p></p>]<p>foo</p>\n\t\t\tif ( previousSiblingIsBlock || nextSiblingIsBlock ) {\n\t\t\t\telementsToReplace.push( element );\n\t\t\t}\n\t\t}\n\t}\n\n\tfor ( const element of elementsToReplace ) {\n\t\tif ( element.hasClass( 'Apple-interchange-newline' ) ) {\n\t\t\twriter.remove( element );\n\t\t} else {\n\t\t\twriter.replace( element, writer.createElement( 'p' ) );\n\t\t}\n\t}\n}\n\n/**\n * Returns sibling node, threats inline elements as transparent (but should stop on an inline objects).\n */\nfunction findSibling(\n\tviewElement: ViewElement,\n\tdirection: 'forward' | 'backward',\n\twriter: UpcastWriter,\n\t{ blockElements, inlineObjectElements }: { blockElements: Array<string>; inlineObjectElements: Array<string> }\n) {\n\tlet position = writer.createPositionAt( viewElement, direction == 'forward' ? 'after' : 'before' );\n\n\t// Find first position that is just before a first:\n\t// * text node,\n\t// * block element,\n\t// * inline object element.\n\t// It's ignoring any inline (non-object) elements like span, strong, etc.\n\tposition = position.getLastMatchingPosition( ( { item } ) => (\n\t\titem.is( 'element' ) &&\n\t\t!blockElements.includes( item.name ) &&\n\t\t!inlineObjectElements.includes( item.name )\n\t), { direction } );\n\n\treturn direction == 'forward' ? position.nodeAfter : position.nodeBefore;\n}\n\n/**\n * Returns true for view elements that are listed as block view elements.\n */\nfunction isBlockViewElement( node: ViewNode | null, blockElements: Array<string> ) {\n\treturn !!node && node.is( 'element' ) && blockElements.includes( node.name );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/normalizers/googledocsnormalizer\n */\n\nimport { UpcastWriter, type ViewDocument } from 'ckeditor5/src/engine';\n\nimport removeBoldWrapper from '../filters/removeboldwrapper';\nimport transformBlockBrsToParagraphs from '../filters/br';\nimport { unwrapParagraphInListItem } from '../filters/list';\nimport type { Normalizer, NormalizerData } from '../normalizer';\n\nconst googleDocsMatch = /id=(\"|')docs-internal-guid-[-0-9a-f]+(\"|')/i;\n\n/**\n * Normalizer for the content pasted from Google Docs.\n */\nexport default class GoogleDocsNormalizer implements Normalizer {\n\tpublic readonly document: ViewDocument;\n\n\t/**\n\t * Creates a new `GoogleDocsNormalizer` instance.\n\t *\n\t * @param document View document.\n\t */\n\tconstructor( document: ViewDocument ) {\n\t\tthis.document = document;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic isActive( htmlString: string ): boolean {\n\t\treturn googleDocsMatch.test( htmlString );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic execute( data: NormalizerData ): void {\n\t\tconst writer = new UpcastWriter( this.document );\n\t\tconst { body: documentFragment } = data._parsedData;\n\n\t\tremoveBoldWrapper( documentFragment, writer );\n\t\tunwrapParagraphInListItem( documentFragment, writer );\n\t\ttransformBlockBrsToParagraphs( documentFragment, writer );\n\n\t\tdata.content = documentFragment;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/removeboldwrapper\n */\n\nimport type { UpcastWriter, ViewDocumentFragment } from 'ckeditor5/src/engine';\n\n/**\n * Removes the `<b>` tag wrapper added by Google Docs to a copied content.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n */\nexport default function removeBoldWrapper( documentFragment: ViewDocumentFragment, writer: UpcastWriter ): void {\n\tfor ( const child of documentFragment.getChildren() ) {\n\t\tif ( child.is( 'element', 'b' ) && child.getStyle( 'font-weight' ) === 'normal' ) {\n\t\t\tconst childIndex = documentFragment.getChildIndex( child );\n\n\t\t\twriter.remove( child );\n\t\t\twriter.insertChild( childIndex, child.getChildren(), documentFragment );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/normalizers/googlesheetsnormalizer\n */\n\nimport { UpcastWriter, type ViewDocument } from 'ckeditor5/src/engine';\n\nimport removeXmlns from '../filters/removexmlns';\nimport removeGoogleSheetsTag from '../filters/removegooglesheetstag';\nimport removeInvalidTableWidth from '../filters/removeinvalidtablewidth';\nimport removeStyleBlock from '../filters/removestyleblock';\nimport type { Normalizer, NormalizerData } from '../normalizer';\n\nconst googleSheetsMatch = /<google-sheets-html-origin/i;\n\n/**\n * Normalizer for the content pasted from Google Sheets.\n */\nexport default class GoogleSheetsNormalizer implements Normalizer {\n\tpublic readonly document: ViewDocument;\n\n\t/**\n\t * Creates a new `GoogleSheetsNormalizer` instance.\n\t *\n\t * @param document View document.\n\t */\n\tconstructor( document: ViewDocument ) {\n\t\tthis.document = document;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic isActive( htmlString: string ): boolean {\n\t\treturn googleSheetsMatch.test( htmlString );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic execute( data: NormalizerData ): void {\n\t\tconst writer = new UpcastWriter( this.document );\n\t\tconst { body: documentFragment } = data._parsedData;\n\n\t\tremoveGoogleSheetsTag( documentFragment, writer );\n\t\tremoveXmlns( documentFragment, writer );\n\t\tremoveInvalidTableWidth( documentFragment, writer );\n\t\tremoveStyleBlock( documentFragment, writer );\n\n\t\tdata.content = documentFragment;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/removegooglesheetstag\n */\n\nimport type { UpcastWriter, ViewDocumentFragment } from 'ckeditor5/src/engine';\n\n/**\n * Removes the `<google-sheets-html-origin>` tag wrapper added by Google Sheets to a copied content.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n */\nexport default function removeGoogleSheetsTag( documentFragment: ViewDocumentFragment, writer: UpcastWriter ): void {\n\tfor ( const child of documentFragment.getChildren() ) {\n\t\tif ( child.is( 'element', 'google-sheets-html-origin' ) ) {\n\t\t\tconst childIndex = documentFragment.getChildIndex( child );\n\n\t\t\twriter.remove( child );\n\t\t\twriter.insertChild( childIndex, child.getChildren(), documentFragment );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/removexmlns\n */\n\nimport type { UpcastWriter, ViewDocumentFragment } from 'ckeditor5/src/engine';\n\n/**\n * Removes the `xmlns` attribute from table pasted from Google Sheets.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n */\nexport default function removeXmlns( documentFragment: ViewDocumentFragment, writer: UpcastWriter ): void {\n\tfor ( const child of documentFragment.getChildren() ) {\n\t\tif ( child.is( 'element', 'table' ) && child.hasAttribute( 'xmlns' ) ) {\n\t\t\twriter.removeAttribute( 'xmlns', child );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/removeinvalidtablewidth\n */\n\nimport type { UpcastWriter, ViewDocumentFragment } from 'ckeditor5/src/engine';\n\n/**\n * Removes the `width:0px` style from table pasted from Google Sheets.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n */\nexport default function removeInvalidTableWidth( documentFragment: ViewDocumentFragment, writer: UpcastWriter ): void {\n\tfor ( const child of documentFragment.getChildren() ) {\n\t\tif ( child.is( 'element', 'table' ) && child.getStyle( 'width' ) === '0px' ) {\n\t\t\twriter.removeStyle( 'width', child );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/removestyleblock\n */\n\nimport type { UpcastWriter, ViewDocumentFragment } from 'ckeditor5/src/engine';\n\n/**\n * Removes `<style>` block added by Google Sheets to a copied content.\n *\n * @param documentFragment element `data.content` obtained from clipboard\n */\nexport default function removeStyleBlock( documentFragment: ViewDocumentFragment, writer: UpcastWriter ): void {\n\tfor ( const child of Array.from( documentFragment.getChildren() ) ) {\n\t\tif ( child.is( 'element', 'style' ) ) {\n\t\t\twriter.remove( child );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/space\n */\n\n/**\n * Replaces last space preceding elements closing tag with ` `. Such operation prevents spaces from being removed\n * during further DOM/View processing (see especially {@link module:engine/view/domconverter~DomConverter#_processDomInlineNodes}).\n * This method also takes into account Word specific `<o:p></o:p>` empty tags.\n * Additionally multiline sequences of spaces and new lines between tags are removed (see #39 and #40).\n *\n * @param htmlString HTML string in which spacing should be normalized.\n * @returns Input HTML with spaces normalized.\n */\nexport function normalizeSpacing( htmlString: string ): string {\n\t// Run normalizeSafariSpaceSpans() two times to cover nested spans.\n\treturn normalizeSafariSpaceSpans( normalizeSafariSpaceSpans( htmlString ) )\n\t\t// Remove all \\r\\n from \"spacerun spans\" so the last replace line doesn't strip all whitespaces.\n\t\t.replace( /(<span\\s+style=['\"]mso-spacerun:yes['\"]>[^\\S\\r\\n]*?)[\\r\\n]+([^\\S\\r\\n]*<\\/span>)/g, '$1$2' )\n\t\t.replace( /<span\\s+style=['\"]mso-spacerun:yes['\"]><\\/span>/g, '' )\n\t\t.replace( /(<span\\s+style=['\"]letter-spacing:[^'\"]+?['\"]>)[\\r\\n]+(<\\/span>)/g, '$1 $2' )\n\t\t.replace( / <\\//g, '\\u00A0</' )\n\t\t.replace( / <o:p><\\/o:p>/g, '\\u00A0<o:p></o:p>' )\n\t\t// Remove <o:p> block filler from empty paragraph. Safari uses \\u00A0 instead of  .\n\t\t.replace( /<o:p>( |\\u00A0)<\\/o:p>/g, '' )\n\t\t// Remove all whitespaces when they contain any \\r or \\n.\n\t\t.replace( />([^\\S\\r\\n]*[\\r\\n]\\s*)</g, '><' );\n}\n\n/**\n * Normalizes spacing in special Word `spacerun spans` (`<span style='mso-spacerun:yes'>\\s+</span>`) by replacing\n * all spaces with `  ` pairs. This prevents spaces from being removed during further DOM/View processing\n * (see especially {@link module:engine/view/domconverter~DomConverter#_processDomInlineNodes}).\n *\n * @param htmlDocument Native `Document` object in which spacing should be normalized.\n */\nexport function normalizeSpacerunSpans( htmlDocument: Document ): void {\n\thtmlDocument.querySelectorAll( 'span[style*=spacerun]' ).forEach( el => {\n\t\tconst htmlElement = el as HTMLElement;\n\t\tconst innerTextLength = htmlElement.innerText.length || 0;\n\n\t\thtmlElement.innerText = Array( innerTextLength + 1 ).join( '\\u00A0 ' ).substr( 0, innerTextLength );\n\t} );\n}\n\n/**\n * Normalizes specific spacing generated by Safari when content pasted from Word (`<span class=\"Apple-converted-space\"> </span>`)\n * by replacing all spaces sequences longer than 1 space with `  ` pairs. This prevents spaces from being removed during\n * further DOM/View processing (see especially {@link module:engine/view/domconverter~DomConverter#_processDataFromDomText}).\n *\n * This function is similar to {@link module:clipboard/utils/normalizeclipboarddata normalizeClipboardData util} but uses\n * regular spaces /   sequence for replacement.\n *\n * @param htmlString HTML string in which spacing should be normalized\n * @returns Input HTML with spaces normalized.\n */\nfunction normalizeSafariSpaceSpans( htmlString: string ) {\n\treturn htmlString.replace( /<span(?: class=\"Apple-converted-space\"|)>(\\s+)<\\/span>/g, ( fullMatch, spaces ) => {\n\t\treturn spaces.length === 1 ? ' ' : Array( spaces.length + 1 ).join( '\\u00A0 ' ).substr( 0, spaces.length );\n\t} );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/filters/parse\n */\n\n/* globals DOMParser */\n\nimport {\n\tDomConverter,\n\tViewDocument,\n\ttype StylesProcessor,\n\ttype ViewDocumentFragment\n} from 'ckeditor5/src/engine';\n\nimport { normalizeSpacing, normalizeSpacerunSpans } from './space';\n\n/**\n * Parses the provided HTML extracting contents of `<body>` and `<style>` tags.\n *\n * @param htmlString HTML string to be parsed.\n */\nexport function parseHtml( htmlString: string, stylesProcessor: StylesProcessor ): ParseHtmlResult {\n\tconst domParser = new DOMParser();\n\n\t// Remove Word specific \"if comments\" so content inside is not omitted by the parser.\n\thtmlString = htmlString.replace( /<!--\\[if gte vml 1]>/g, '' );\n\n\tconst normalizedHtml = normalizeSpacing( cleanContentAfterBody( htmlString ) );\n\n\t// Parse htmlString as native Document object.\n\tconst htmlDocument = domParser.parseFromString( normalizedHtml, 'text/html' );\n\n\tnormalizeSpacerunSpans( htmlDocument );\n\n\t// Get `innerHTML` first as transforming to View modifies the source document.\n\tconst bodyString = htmlDocument.body.innerHTML;\n\n\t// Transform document.body to View.\n\tconst bodyView = documentToView( htmlDocument, stylesProcessor );\n\n\t// Extract stylesheets.\n\tconst stylesObject = extractStyles( htmlDocument );\n\n\treturn {\n\t\tbody: bodyView,\n\t\tbodyString,\n\t\tstyles: stylesObject.styles,\n\t\tstylesString: stylesObject.stylesString\n\t};\n}\n\n/**\n * The result of {@link ~parseHtml}.\n */\nexport interface ParseHtmlResult {\n\n\t/**\n\t * Parsed body content as a traversable structure.\n\t */\n\tbody: ViewDocumentFragment;\n\n\t/**\n\t * Entire body content as a string.\n\t */\n\tbodyString: string;\n\n\t/**\n\t * Array of native `CSSStyleSheet` objects, each representing separate `style` tag from the source HTML.\n\t */\n\tstyles: Array<CSSStyleSheet>;\n\n\t/**\n\t * All `style` tags contents combined in the order of occurrence into one string.\n\t */\n\tstylesString: string;\n}\n\n/**\n * Transforms native `Document` object into {@link module:engine/view/documentfragment~DocumentFragment}. Comments are skipped.\n *\n * @param htmlDocument Native `Document` object to be transformed.\n */\nfunction documentToView( htmlDocument: Document, stylesProcessor: StylesProcessor ) {\n\tconst viewDocument = new ViewDocument( stylesProcessor );\n\tconst domConverter = new DomConverter( viewDocument, { renderingMode: 'data' } );\n\tconst fragment = htmlDocument.createDocumentFragment();\n\tconst nodes = htmlDocument.body.childNodes;\n\n\twhile ( nodes.length > 0 ) {\n\t\tfragment.appendChild( nodes[ 0 ] );\n\t}\n\n\treturn domConverter.domToView( fragment, { skipComments: true } ) as ViewDocumentFragment;\n}\n\n/**\n * Extracts both `CSSStyleSheet` and string representation from all `style` elements available in a provided `htmlDocument`.\n *\n * @param htmlDocument Native `Document` object from which styles will be extracted.\n */\nfunction extractStyles( htmlDocument: Document ): { styles: Array<CSSStyleSheet>; stylesString: string } {\n\tconst styles = [];\n\tconst stylesString = [];\n\tconst styleTags = Array.from( htmlDocument.getElementsByTagName( 'style' ) );\n\n\tfor ( const style of styleTags ) {\n\t\tif ( style.sheet && style.sheet.cssRules && style.sheet.cssRules.length ) {\n\t\t\tstyles.push( style.sheet );\n\t\t\tstylesString.push( style.innerHTML );\n\t\t}\n\t}\n\n\treturn {\n\t\tstyles,\n\t\tstylesString: stylesString.join( ' ' )\n\t};\n}\n\n/**\n * Removes leftover content from between closing </body> and closing </html> tag:\n *\n * ```html\n * <html><body><p>Foo Bar</p></body><span>Fo</span></html> -> <html><body><p>Foo Bar</p></body></html>\n * ```\n *\n * This function is used as specific browsers (Edge) add some random content after `body` tag when pasting from Word.\n * @param htmlString The HTML string to be cleaned.\n * @returns The HTML string with leftover content removed.\n */\nfunction cleanContentAfterBody( htmlString: string ) {\n\tconst bodyCloseTag = '</body>';\n\tconst htmlCloseTag = '</html>';\n\n\tconst bodyCloseIndex = htmlString.indexOf( bodyCloseTag );\n\n\tif ( bodyCloseIndex < 0 ) {\n\t\treturn htmlString;\n\t}\n\n\tconst htmlCloseIndex = htmlString.indexOf( htmlCloseTag, bodyCloseIndex + bodyCloseTag.length );\n\n\treturn htmlString.substring( 0, bodyCloseIndex + bodyCloseTag.length ) +\n\t\t( htmlCloseIndex >= 0 ? htmlString.substring( htmlCloseIndex ) : '' );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/converters/tableproperties\n */\n\nimport type { Conversion, ViewElement } from 'ckeditor5/src/engine';\n\n/**\n * Conversion helper for upcasting attributes using normalized styles.\n *\n * @param options.modelAttribute The attribute to set.\n * @param options.styleName The style name to convert.\n * @param options.viewElement The view element name that should be converted.\n * @param options.defaultValue The default value for the specified `modelAttribute`.\n * @param options.shouldUpcast The function which returns `true` if style should be upcasted from this element.\n */\nexport function upcastStyleToAttribute(\n\tconversion: Conversion,\n\toptions: {\n\t\tmodelAttribute: string;\n\t\tstyleName: string;\n\t\tviewElement: string | RegExp;\n\t\tdefaultValue: string;\n\t\treduceBoxSides?: boolean;\n\t\tshouldUpcast?: ( viewElement: ViewElement ) => boolean;\n\t}\n): void {\n\tconst {\n\t\tmodelAttribute,\n\t\tstyleName,\n\t\tviewElement,\n\t\tdefaultValue,\n\t\treduceBoxSides = false,\n\t\tshouldUpcast = () => true\n\t} = options;\n\n\tconversion.for( 'upcast' ).attributeToAttribute( {\n\t\tview: {\n\t\t\tname: viewElement,\n\t\t\tstyles: {\n\t\t\t\t[ styleName ]: /[\\s\\S]+/\n\t\t\t}\n\t\t},\n\t\tmodel: {\n\t\t\tkey: modelAttribute,\n\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\tif ( !shouldUpcast( viewElement ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst normalized = viewElement.getNormalizedStyle( styleName ) as Record<Side, string>;\n\t\t\t\tconst value = reduceBoxSides ? reduceBoxSidesValue( normalized ) : normalized;\n\n\t\t\t\tif ( defaultValue !== value ) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} );\n}\n\nexport interface StyleValues {\n\tcolor: string;\n\tstyle: string;\n\twidth: string;\n}\n\n/**\n * Conversion helper for upcasting border styles for view elements.\n *\n * @param defaultBorder The default border values.\n * @param defaultBorder.color The default `borderColor` value.\n * @param defaultBorder.style The default `borderStyle` value.\n * @param defaultBorder.width The default `borderWidth` value.\n */\nexport function upcastBorderStyles(\n\tconversion: Conversion,\n\tviewElementName: string,\n\tmodelAttributes: StyleValues,\n\tdefaultBorder: StyleValues\n): void {\n\tconversion.for( 'upcast' ).add( dispatcher => dispatcher.on( 'element:' + viewElementName, ( evt, data, conversionApi ) => {\n\t\t// If the element was not converted by element-to-element converter,\n\t\t// we should not try to convert the style. See #8393.\n\t\tif ( !data.modelRange ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check the most detailed properties. These will be always set directly or\n\t\t// when using the \"group\" properties like: `border-(top|right|bottom|left)` or `border`.\n\t\tconst stylesToConsume = [\n\t\t\t'border-top-width',\n\t\t\t'border-top-color',\n\t\t\t'border-top-style',\n\t\t\t'border-bottom-width',\n\t\t\t'border-bottom-color',\n\t\t\t'border-bottom-style',\n\t\t\t'border-right-width',\n\t\t\t'border-right-color',\n\t\t\t'border-right-style',\n\t\t\t'border-left-width',\n\t\t\t'border-left-color',\n\t\t\t'border-left-style'\n\t\t].filter( styleName => data.viewItem.hasStyle( styleName ) );\n\n\t\tif ( !stylesToConsume.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst matcherPattern = {\n\t\t\tstyles: stylesToConsume\n\t\t};\n\n\t\t// Try to consume appropriate values from consumable values list.\n\t\tif ( !conversionApi.consumable.test( data.viewItem, matcherPattern ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst modelElement = [ ...data.modelRange.getItems( { shallow: true } ) ].pop();\n\n\t\tconversionApi.consumable.consume( data.viewItem, matcherPattern );\n\n\t\tconst normalizedBorder = {\n\t\t\tstyle: data.viewItem.getNormalizedStyle( 'border-style' ),\n\t\t\tcolor: data.viewItem.getNormalizedStyle( 'border-color' ),\n\t\t\twidth: data.viewItem.getNormalizedStyle( 'border-width' )\n\t\t};\n\n\t\tconst reducedBorder = {\n\t\t\tstyle: reduceBoxSidesValue( normalizedBorder.style ),\n\t\t\tcolor: reduceBoxSidesValue( normalizedBorder.color ),\n\t\t\twidth: reduceBoxSidesValue( normalizedBorder.width )\n\t\t};\n\n\t\tif ( reducedBorder.style !== defaultBorder.style ) {\n\t\t\tconversionApi.writer.setAttribute( modelAttributes.style, reducedBorder.style, modelElement );\n\t\t}\n\n\t\tif ( reducedBorder.color !== defaultBorder.color ) {\n\t\t\tconversionApi.writer.setAttribute( modelAttributes.color, reducedBorder.color, modelElement );\n\t\t}\n\n\t\tif ( reducedBorder.width !== defaultBorder.width ) {\n\t\t\tconversionApi.writer.setAttribute( modelAttributes.width, reducedBorder.width, modelElement );\n\t\t}\n\t} ) );\n}\n\n/**\n * Conversion helper for downcasting an attribute to a style.\n */\nexport function downcastAttributeToStyle(\n\tconversion: Conversion,\n\toptions: {\n\t\tmodelElement: string;\n\t\tmodelAttribute: string;\n\t\tstyleName: string;\n\t}\n): void {\n\tconst { modelElement, modelAttribute, styleName } = options;\n\n\tconversion.for( 'downcast' ).attributeToAttribute( {\n\t\tmodel: {\n\t\t\tname: modelElement,\n\t\t\tkey: modelAttribute\n\t\t},\n\t\tview: modelAttributeValue => ( {\n\t\t\tkey: 'style',\n\t\t\tvalue: {\n\t\t\t\t[ styleName ]: modelAttributeValue\n\t\t\t}\n\t\t} )\n\t} );\n}\n\n/**\n * Conversion helper for downcasting attributes from the model table to a view table (not to `<figure>`).\n */\nexport function downcastTableAttribute(\n\tconversion: Conversion,\n\toptions: {\n\t\tmodelAttribute: string;\n\t\tstyleName: string;\n\t}\n): void {\n\tconst { modelAttribute, styleName } = options;\n\n\tconversion.for( 'downcast' ).add( dispatcher => dispatcher.on( `attribute:${ modelAttribute }:table`, ( evt, data, conversionApi ) => {\n\t\tconst { item, attributeNewValue } = data;\n\t\tconst { mapper, writer } = conversionApi;\n\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst table = [ ...mapper.toViewElement( item ).getChildren() ].find( child => child.is( 'element', 'table' ) );\n\n\t\tif ( attributeNewValue ) {\n\t\t\twriter.setStyle( styleName, attributeNewValue, table );\n\t\t} else {\n\t\t\twriter.removeStyle( styleName, table );\n\t\t}\n\t} ) );\n}\n\ntype Side = 'top' | 'right' | 'bottom' | 'left';\ntype Style = Record<Side, string>;\n\n/**\n * Reduces the full top, right, bottom, left object to a single string if all sides are equal.\n * Returns original style otherwise.\n */\nfunction reduceBoxSidesValue( style?: Style ): undefined | string | Style {\n\tif ( !style ) {\n\t\treturn;\n\t}\n\tconst sides: Array<Side> = [ 'top', 'right', 'bottom', 'left' ];\n\tconst allSidesDefined = sides.every( side => style[ side ] );\n\n\tif ( !allSidesDefined ) {\n\t\treturn style;\n\t}\n\n\tconst topSideStyle = style.top;\n\tconst allSidesEqual = sides.every( side => style[ side ] === topSideStyle );\n\n\tif ( !allSidesEqual ) {\n\t\treturn style;\n\t}\n\n\treturn topSideStyle;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/utils/common\n */\n\nimport type {\n\tConversion,\n\tElement,\n\tItem,\n\tPosition,\n\tSchema,\n\tWriter\n} from 'ckeditor5/src/engine';\n\nimport { downcastAttributeToStyle, upcastStyleToAttribute } from './../converters/tableproperties';\nimport type TableUtils from '../tableutils';\n\n/**\n * A common method to update the numeric value. If a value is the default one, it will be unset.\n *\n * @param key An attribute key.\n * @param value The new attribute value.\n * @param item A model item on which the attribute will be set.\n * @param defaultValue The default attribute value. If a value is lower or equal, it will be unset.\n */\nexport function updateNumericAttribute( key: string, value: unknown, item: Item, writer: Writer, defaultValue: unknown = 1 ): void {\n\tif ( value !== undefined && value !== null && defaultValue !== undefined && defaultValue !== null && value > defaultValue ) {\n\t\twriter.setAttribute( key, value, item );\n\t} else {\n\t\twriter.removeAttribute( key, item );\n\t}\n}\n\n/**\n * A common method to create an empty table cell. It creates a proper model structure as a table cell must have at least one block inside.\n *\n * @param writer The model writer.\n * @param insertPosition The position at which the table cell should be inserted.\n * @param attributes The element attributes.\n * @returns Created table cell.\n */\nexport function createEmptyTableCell( writer: Writer, insertPosition: Position, attributes: Record<string, unknown> = {} ): Element {\n\tconst tableCell = writer.createElement( 'tableCell', attributes );\n\n\twriter.insertElement( 'paragraph', tableCell );\n\twriter.insert( tableCell, insertPosition );\n\n\treturn tableCell;\n}\n\n/**\n * Checks if a table cell belongs to the heading column section.\n */\nexport function isHeadingColumnCell( tableUtils: TableUtils, tableCell: Element ): boolean {\n\tconst table = tableCell.parent!.parent as Element;\n\tconst headingColumns = parseInt( table.getAttribute( 'headingColumns' ) as string || '0' );\n\tconst { column } = tableUtils.getCellLocation( tableCell );\n\n\treturn !!headingColumns && column < headingColumns;\n}\n\n/**\n * Enables conversion for an attribute for simple view-model mappings.\n *\n * @param options.defaultValue The default value for the specified `modelAttribute`.\n */\nexport function enableProperty(\n\tschema: Schema,\n\tconversion: Conversion,\n\toptions: {\n\t\tmodelAttribute: string;\n\t\tstyleName: string;\n\t\tdefaultValue: string;\n\t\treduceBoxSides?: boolean;\n\t}\n): void {\n\tconst { modelAttribute } = options;\n\n\tschema.extend( 'tableCell', {\n\t\tallowAttributes: [ modelAttribute ]\n\t} );\n\n\tupcastStyleToAttribute( conversion, { viewElement: /^(td|th)$/, ...options } );\n\tdowncastAttributeToStyle( conversion, { modelElement: 'tableCell', ...options } );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/converters/upcasttable\n */\n\nimport type { Element, UpcastDispatcher, UpcastElementEvent, ViewElement, ViewNode } from 'ckeditor5/src/engine';\n\nimport { createEmptyTableCell } from '../utils/common';\nimport { first } from 'ckeditor5/src/utils';\n\n/**\n * Returns a function that converts the table view representation:\n *\n * ```xml\n * <figure class=\"table\"><table>...</table></figure>\n * ```\n *\n * to the model representation:\n *\n * ```xml\n * <table></table>\n * ```\n */\nexport function upcastTableFigure() {\n\treturn ( dispatcher: UpcastDispatcher ): void => {\n\t\tdispatcher.on<UpcastElementEvent>( 'element:figure', ( evt, data, conversionApi ) => {\n\t\t\t// Do not convert if this is not a \"table figure\".\n\t\t\tif ( !conversionApi.consumable.test( data.viewItem, { name: true, classes: 'table' } ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Find a table element inside the figure element.\n\t\t\tconst viewTable = getViewTableFromFigure( data.viewItem );\n\n\t\t\t// Do not convert if table element is absent or was already converted.\n\t\t\tif ( !viewTable || !conversionApi.consumable.test( viewTable, { name: true } ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Consume the figure to prevent other converters from processing it again.\n\t\t\tconversionApi.consumable.consume( data.viewItem, { name: true, classes: 'table' } );\n\n\t\t\t// Convert view table to model table.\n\t\t\tconst conversionResult = conversionApi.convertItem( viewTable, data.modelCursor );\n\n\t\t\t// Get table element from conversion result.\n\t\t\tconst modelTable = first( conversionResult.modelRange!.getItems() as Iterator<Element> );\n\n\t\t\t// When table wasn't successfully converted then finish conversion.\n\t\t\tif ( !modelTable ) {\n\t\t\t\t// Revert consumed figure so other features can convert it.\n\t\t\t\tconversionApi.consumable.revert( data.viewItem, { name: true, classes: 'table' } );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconversionApi.convertChildren( data.viewItem, conversionApi.writer.createPositionAt( modelTable, 'end' ) );\n\t\t\tconversionApi.updateConversionResult( modelTable, data );\n\t\t} );\n\t};\n}\n\n/**\n * View table element to model table element conversion helper.\n *\n * This conversion helper converts the table element as well as table rows.\n *\n * @returns Conversion helper.\n */\nexport default function upcastTable() {\n\treturn ( dispatcher: UpcastDispatcher ): void => {\n\t\tdispatcher.on<UpcastElementEvent>( 'element:table', ( evt, data, conversionApi ) => {\n\t\t\tconst viewTable = data.viewItem;\n\n\t\t\t// When element was already consumed then skip it.\n\t\t\tif ( !conversionApi.consumable.test( viewTable, { name: true } ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { rows, headingRows, headingColumns } = scanTable( viewTable );\n\n\t\t\t// Only set attributes if values is greater then 0.\n\t\t\tconst attributes: { headingColumns?: number; headingRows?: number } = {};\n\n\t\t\tif ( headingColumns ) {\n\t\t\t\tattributes.headingColumns = headingColumns;\n\t\t\t}\n\n\t\t\tif ( headingRows ) {\n\t\t\t\tattributes.headingRows = headingRows;\n\t\t\t}\n\n\t\t\tconst table = conversionApi.writer.createElement( 'table', attributes );\n\n\t\t\tif ( !conversionApi.safeInsert( table, data.modelCursor ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconversionApi.consumable.consume( viewTable, { name: true } );\n\n\t\t\t// Upcast table rows in proper order (heading rows first).\n\t\t\trows.forEach( row => conversionApi.convertItem( row, conversionApi.writer.createPositionAt( table, 'end' ) ) );\n\n\t\t\t// Convert everything else.\n\t\t\tconversionApi.convertChildren( viewTable, conversionApi.writer.createPositionAt( table, 'end' ) );\n\n\t\t\t// Create one row and one table cell for empty table.\n\t\t\tif ( table.isEmpty ) {\n\t\t\t\tconst row = conversionApi.writer.createElement( 'tableRow' );\n\t\t\t\tconversionApi.writer.insert( row, conversionApi.writer.createPositionAt( table, 'end' ) );\n\n\t\t\t\tcreateEmptyTableCell( conversionApi.writer, conversionApi.writer.createPositionAt( row, 'end' ) );\n\t\t\t}\n\n\t\t\tconversionApi.updateConversionResult( table, data );\n\t\t} );\n\t};\n}\n\n/**\n * A conversion helper that skips empty <tr> elements from upcasting at the beginning of the table.\n *\n * An empty row is considered a table model error but when handling clipboard data there could be rows that contain only row-spanned cells\n * and empty TR-s are used to maintain the table structure (also {@link module:table/tablewalker~TableWalker} assumes that there are only\n * rows that have related `tableRow` elements).\n *\n * *Note:* Only the first empty rows are removed because they have no meaning and it solves the issue\n * of an improper table with all empty rows.\n *\n * @returns Conversion helper.\n */\nexport function skipEmptyTableRow() {\n\treturn ( dispatcher: UpcastDispatcher ): void => {\n\t\tdispatcher.on<UpcastElementEvent>( 'element:tr', ( evt, data ) => {\n\t\t\tif ( data.viewItem.isEmpty && data.modelCursor.index == 0 ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'high' } );\n\t};\n}\n\n/**\n * A converter that ensures an empty paragraph is inserted in a table cell if no other content was converted.\n *\n * @returns Conversion helper.\n */\nexport function ensureParagraphInTableCell( elementName: string ) {\n\treturn ( dispatcher: UpcastDispatcher ): void => {\n\t\tdispatcher.on<UpcastElementEvent>( `element:${ elementName }`, ( evt, data, { writer } ) => {\n\t\t\t// The default converter will create a model range on converted table cell.\n\t\t\tif ( !data.modelRange ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst tableCell = data.modelRange.start.nodeAfter as Element;\n\t\t\tconst modelCursor = writer.createPositionAt( tableCell, 0 );\n\n\t\t\t// Ensure a paragraph in the model for empty table cells for converted table cells.\n\t\t\tif ( data.viewItem.isEmpty ) {\n\t\t\t\twriter.insertElement( 'paragraph', modelCursor );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst childNodes = Array.from( tableCell.getChildren() );\n\n\t\t\t// In case there are only markers inside the table cell then move them to the paragraph.\n\t\t\tif ( childNodes.every( node => node.is( 'element', '$marker' ) ) ) {\n\t\t\t\tconst paragraph = writer.createElement( 'paragraph' );\n\n\t\t\t\twriter.insert( paragraph, writer.createPositionAt( tableCell, 0 ) );\n\n\t\t\t\tfor ( const node of childNodes ) {\n\t\t\t\t\twriter.move( writer.createRangeOn( node ), writer.createPositionAt( paragraph, 'end' ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\t};\n}\n\n/**\n * Get view `<table>` element from the view widget (`<figure>`).\n */\nfunction getViewTableFromFigure( figureView: ViewElement ) {\n\tfor ( const figureChild of figureView.getChildren() ) {\n\t\tif ( figureChild.is( 'element', 'table' ) ) {\n\t\t\treturn figureChild;\n\t\t}\n\t}\n}\n\n/**\n * Scans table rows and extracts required metadata from the table:\n *\n * headingRows - The number of rows that go as table headers.\n * headingColumns - The maximum number of row headings.\n * rows - Sorted `<tr>` elements as they should go into the model - ie. if `<thead>` is inserted after `<tbody>` in the view.\n */\nfunction scanTable( viewTable: ViewElement ) {\n\tlet headingRows = 0;\n\tlet headingColumns: number | undefined = undefined;\n\n\t// The `<tbody>` and `<thead>` sections in the DOM do not have to be in order `<thead>` -> `<tbody>` and there might be more than one\n\t// of them.\n\t// As the model does not have these sections, rows from different sections must be sorted.\n\t// For example, below is a valid HTML table:\n\t//\n\t// <table>\n\t// <tbody><tr><td>2</td></tr></tbody>\n\t// <thead><tr><td>1</td></tr></thead>\n\t// <tbody><tr><td>3</td></tr></tbody>\n\t// </table>\n\t//\n\t// But browsers will render rows in order as: 1 as the heading and 2 and 3 as the body.\n\tconst headRows = [];\n\tconst bodyRows = [];\n\n\t// Currently the editor does not support more then one <thead> section.\n\t// Only the first <thead> from the view will be used as a heading row and the others will be converted to body rows.\n\tlet firstTheadElement;\n\n\tfor ( const tableChild of Array.from( viewTable.getChildren() as IterableIterator<ViewElement> ) ) {\n\t\t// Only `<thead>`, `<tbody>` & `<tfoot>` from allowed table children can have `<tr>`s.\n\t\t// The else is for future purposes (mainly `<caption>`).\n\t\tif ( tableChild.name !== 'tbody' && tableChild.name !== 'thead' && tableChild.name !== 'tfoot' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Save the first `<thead>` in the table as table header - all other ones will be converted to table body rows.\n\t\tif ( tableChild.name === 'thead' && !firstTheadElement ) {\n\t\t\tfirstTheadElement = tableChild;\n\t\t}\n\n\t\t// There might be some extra empty text nodes between the `<tr>`s.\n\t\t// Make sure further code operates on `tr`s only. (#145)\n\t\tconst trs = Array.from( tableChild.getChildren() ).filter(\n\t\t\t( el: ViewNode ): el is ViewElement & { name: 'tr' } => el.is( 'element', 'tr' )\n\t\t);\n\n\t\tfor ( const tr of trs ) {\n\t\t\t// This <tr> is a child of a first <thead> element.\n\t\t\tif (\n\t\t\t\t( firstTheadElement && tableChild === firstTheadElement ) ||\n\t\t\t\t(\n\t\t\t\t\ttableChild.name === 'tbody' &&\n\t\t\t\t\tArray.from( tr.getChildren() ).length &&\n\t\t\t\t\tArray.from( tr.getChildren() ).every( e => e.is( 'element', 'th' ) )\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\theadingRows++;\n\t\t\t\theadRows.push( tr );\n\t\t\t} else {\n\t\t\t\tbodyRows.push( tr );\n\t\t\t\t// For other rows check how many column headings this row has.\n\n\t\t\t\tconst headingCols = scanRowForHeadingColumns( tr );\n\n\t\t\t\tif ( !headingColumns || headingCols < headingColumns ) {\n\t\t\t\t\theadingColumns = headingCols;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\theadingRows,\n\t\theadingColumns: headingColumns || 0,\n\t\trows: [ ...headRows, ...bodyRows ]\n\t};\n}\n\n/**\n * Scans a `<tr>` element and its children for metadata:\n * - For heading row:\n * - Adds this row to either the heading or the body rows.\n * - Updates the number of heading rows.\n * - For body rows:\n * - Calculates the number of column headings.\n */\nfunction scanRowForHeadingColumns( tr: ViewElement ) {\n\tlet headingColumns = 0;\n\tlet index = 0;\n\n\t// Filter out empty text nodes from tr children.\n\tconst children = Array.from( tr.getChildren() as IterableIterator<ViewElement> )\n\t\t.filter( child => child.name === 'th' || child.name === 'td' );\n\n\t// Count starting adjacent <th> elements of a <tr>.\n\twhile ( index < children.length && children[ index ].name === 'th' ) {\n\t\tconst th = children[ index ];\n\n\t\t// Adjust columns calculation by the number of spanned columns.\n\t\tconst colspan = parseInt( th.getAttribute( 'colspan' ) as string || '1' );\n\n\t\theadingColumns = headingColumns + colspan;\n\t\tindex++;\n\t}\n\n\treturn headingColumns;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablewalker\n */\nimport type { Element, Position } from 'ckeditor5/src/engine';\n\n// @if CK_DEBUG // const CKEditorError = require( '@ckeditor/ckeditor5-utils/src/ckeditorerror' ).default;\n\ninterface CellData {\n\tcell: Element;\n\trow: number;\n\tcolumn: number;\n}\n\n/**\n * An object with configuration for `TableWalker`.\n */\nexport interface TableWalkerOptions {\n\n\t/**\n\t * A row index for which this iterator will output cells. Can't be used together with `startRow` and `endRow`.\n\t */\n\trow?: number | null;\n\n\t/**\n\t * A row index from which this iterator should start. Can't be used together with `row`. Default value is 0.\n\t */\n\tstartRow?: number;\n\n\t/**\n\t * A row index at which this iterator should end. Can't be used together with `row`.\n\t */\n\tendRow?: number;\n\n\t/**\n\t * A column index for which this iterator will output cells. Can't be used together with `startColumn` and `endColumn`.\n\t */\n\tcolumn?: number;\n\n\t/**\n\t * A column index from which this iterator should start. Can't be used together with `column`. Default value is 0.\n\t */\n\tstartColumn?: number;\n\n\t/**\n\t * A column index at which this iterator should end. Can't be used together with `column`.\n\t */\n\tendColumn?: number;\n\n\t/**\n\t * Also return values for spanned cells. Default value is false.\n\t */\n\tincludeAllSlots?: boolean;\n}\n\n/**\n * The table iterator class. It allows to iterate over table cells. For each cell the iterator yields\n * {@link module:table/tablewalker~TableSlot} with proper table cell attributes.\n */\nexport default class TableWalker implements IterableIterator<TableSlot> {\n\t/**\n\t * The walker's table element.\n\t *\n\t * @internal\n\t */\n\tpublic readonly _table: Element;\n\n\t/**\n\t * A row index from which this iterator will start.\n\t */\n\tprivate readonly _startRow: number | null;\n\n\t/**\n\t * A row index at which this iterator will end.\n\t */\n\tprivate readonly _endRow?: number | null;\n\n\t/**\n\t * If set, the table walker will only output cells from a given column and following ones or cells that overlap them.\n\t */\n\tprivate readonly _startColumn: number;\n\n\t/**\n\t * If set, the table walker will only output cells up to a given column.\n\t */\n\tprivate readonly _endColumn?: number;\n\n\t/**\n\t * Enables output of spanned cells that are normally not yielded.\n\t */\n\tprivate readonly _includeAllSlots: boolean;\n\n\t/**\n\t * Row indexes to skip from the iteration.\n\t */\n\tprivate readonly _skipRows: Set<number>;\n\n\t/**\n\t * The current row index.\n\t *\n\t * @internal\n\t */\n\tpublic _row: number;\n\n\t/**\n\t * The index of the current row element in the table.\n\t *\n\t * @internal\n\t */\n\tpublic _rowIndex: number;\n\n\t/**\n\t * The current column index.\n\t *\n\t * @internal\n\t */\n\tpublic _column: number;\n\n\t/**\n\t * The cell index in a parent row. For spanned cells when {@link #_includeAllSlots} is set to `true`,\n\t * this represents the index of the next table cell.\n\t *\n\t * @internal\n\t */\n\tpublic _cellIndex: number;\n\n\t/**\n\t * Holds a map of spanned cells in a table.\n\t */\n\tprivate readonly _spannedCells: Map<number, Map<number, CellData>>;\n\n\t/**\n\t * Index of the next column where a cell is anchored.\n\t */\n\tprivate _nextCellAtColumn: number;\n\n\t/**\n\t * Creates an instance of the table walker.\n\t *\n\t * The table walker iterates internally by traversing the table from row index = 0 and column index = 0.\n\t * It walks row by row and column by column in order to output values defined in the constructor.\n\t * By default it will output only the locations that are occupied by a cell. To include also spanned rows and columns,\n\t * pass the `includeAllSlots` option to the constructor.\n\t *\n\t * The most important values of the iterator are column and row indexes of a cell.\n\t *\n\t * See {@link module:table/tablewalker~TableSlot} what values are returned by the table walker.\n\t *\n\t * To iterate over a given row:\n\t *\n\t * ```ts\n\t * const tableWalker = new TableWalker( table, { startRow: 1, endRow: 2 } );\n\t *\n\t * for ( const tableSlot of tableWalker ) {\n\t * console.log( 'A cell at row', tableSlot.row, 'and column', tableSlot.column );\n\t * }\n\t * ```\n\t *\n\t * For instance the code above for the following table:\n\t *\n\t * +----+----+----+----+----+----+\n\t * | 00 | 02 | 03 | 04 | 05 |\n\t * | +----+----+----+----+\n\t * | | 12 | 14 | 15 |\n\t * | +----+----+----+ +\n\t * | | 22 | |\n\t * |----+----+----+----+----+ +\n\t * | 30 | 31 | 32 | 33 | 34 | |\n\t * +----+----+----+----+----+----+\n\t *\n\t * will log in the console:\n\t *\n\t * 'A cell at row 1 and column 2'\n\t * 'A cell at row 1 and column 4'\n\t * 'A cell at row 1 and column 5'\n\t * 'A cell at row 2 and column 2'\n\t *\n\t * To also iterate over spanned cells:\n\t *\n\t * ```ts\n\t * const tableWalker = new TableWalker( table, { row: 1, includeAllSlots: true } );\n\t *\n\t * for ( const tableSlot of tableWalker ) {\n\t * console.log( 'Slot at', tableSlot.row, 'x', tableSlot.column, ':', tableSlot.isAnchor ? 'is anchored' : 'is spanned' );\n\t * }\n\t * ```\n\t *\n\t * will log in the console for the table from the previous example:\n\t *\n\t * 'Cell at 1 x 0 : is spanned'\n\t * 'Cell at 1 x 1 : is spanned'\n\t * 'Cell at 1 x 2 : is anchored'\n\t * 'Cell at 1 x 3 : is spanned'\n\t * 'Cell at 1 x 4 : is anchored'\n\t * 'Cell at 1 x 5 : is anchored'\n\t *\n\t * **Note**: Option `row` is a shortcut that sets both `startRow` and `endRow` to the same row.\n\t * (Use either `row` or `startRow` and `endRow` but never together). Similarly the `column` option sets both `startColumn`\n\t * and `endColumn` to the same column (Use either `column` or `startColumn` and `endColumn` but never together).\n\t *\n\t * @param table A table over which the walker iterates.\n\t * @param options An object with configuration.\n\t * @param options.row A row index for which this iterator will output cells. Can't be used together with `startRow` and `endRow`.\n\t * @param options.startRow A row index from which this iterator should start. Can't be used together with `row`. Default value is 0.\n\t * @param options.endRow A row index at which this iterator should end. Can't be used together with `row`.\n\t * @param options.column A column index for which this iterator will output cells.\n\t * Can't be used together with `startColumn` and `endColumn`.\n\t * @param options.startColumn A column index from which this iterator should start.\n\t * Can't be used together with `column`. Default value is 0.\n\t * @param options.endColumn A column index at which this iterator should end. Can't be used together with `column`.\n\t * @param options.includeAllSlots Also return values for spanned cells. Default value is \"false\".\n\t */\n\tconstructor( table: Element, options: TableWalkerOptions = {} ) {\n\t\tthis._table = table;\n\t\tthis._startRow = options.row !== undefined ? options.row : options.startRow || 0;\n\t\tthis._endRow = options.row !== undefined ? options.row : options.endRow;\n\t\tthis._startColumn = options.column !== undefined ? options.column : options.startColumn || 0;\n\t\tthis._endColumn = options.column !== undefined ? options.column : options.endColumn;\n\t\tthis._includeAllSlots = !!options.includeAllSlots;\n\t\tthis._skipRows = new Set();\n\t\tthis._row = 0;\n\t\tthis._rowIndex = 0;\n\t\tthis._column = 0;\n\t\tthis._cellIndex = 0;\n\t\tthis._spannedCells = new Map();\n\t\tthis._nextCellAtColumn = -1;\n\t}\n\n\t/**\n\t * Iterable interface.\n\t */\n\tpublic [ Symbol.iterator ](): IterableIterator<TableSlot> {\n\t\treturn this;\n\t}\n\n\t/**\n\t * Gets the next table walker's value.\n\t *\n\t * @returns The next table walker's value.\n\t */\n\tpublic next(): IteratorResult<TableSlot, undefined> {\n\t\tconst row = this._table.getChild( this._rowIndex );\n\n\t\t// Iterator is done when there's no row (table ended) or the row is after `endRow` limit.\n\t\tif ( !row || this._isOverEndRow() ) {\n\t\t\treturn { done: true, value: undefined };\n\t\t}\n\n\t\t// We step over current element when it is not a tableRow instance.\n\t\tif ( !row.is( 'element', 'tableRow' ) ) {\n\t\t\tthis._rowIndex++;\n\n\t\t\treturn this.next();\n\t\t}\n\n\t\tif ( this._isOverEndColumn() ) {\n\t\t\treturn this._advanceToNextRow();\n\t\t}\n\n\t\tlet outValue: IteratorYieldResult<TableSlot> | null = null;\n\n\t\tconst spanData = this._getSpanned();\n\n\t\tif ( spanData ) {\n\t\t\tif ( this._includeAllSlots && !this._shouldSkipSlot() ) {\n\t\t\t\toutValue = this._formatOutValue( spanData.cell, spanData.row, spanData.column );\n\t\t\t}\n\t\t} else {\n\t\t\tconst cell = row.getChild( this._cellIndex ) as Element;\n\n\t\t\tif ( !cell ) {\n\t\t\t\t// If there are no more cells left in row advance to the next row.\n\t\t\t\treturn this._advanceToNextRow();\n\t\t\t}\n\n\t\t\tconst colspan = parseInt( cell.getAttribute( 'colspan' ) as string || '1' );\n\t\t\tconst rowspan = parseInt( cell.getAttribute( 'rowspan' ) as string || '1' );\n\n\t\t\t// Record this cell spans if it's not 1x1 cell.\n\t\t\tif ( colspan > 1 || rowspan > 1 ) {\n\t\t\t\tthis._recordSpans( cell, rowspan, colspan );\n\t\t\t}\n\n\t\t\tif ( !this._shouldSkipSlot() ) {\n\t\t\t\toutValue = this._formatOutValue( cell );\n\t\t\t}\n\n\t\t\tthis._nextCellAtColumn = this._column + colspan;\n\t\t}\n\n\t\t// Advance to the next column before returning value.\n\t\tthis._column++;\n\n\t\tif ( this._column == this._nextCellAtColumn ) {\n\t\t\tthis._cellIndex++;\n\t\t}\n\n\t\t// The current value will be returned only if current row and column are not skipped.\n\t\treturn outValue || this.next();\n\t}\n\n\t/**\n\t * Marks a row to skip in the next iteration. It will also skip cells from the current row if there are any cells from the current row\n\t * to output.\n\t *\n\t * @param row The row index to skip.\n\t */\n\tpublic skipRow( row: number ): void {\n\t\tthis._skipRows.add( row );\n\t}\n\n\t/**\n\t * Advances internal cursor to the next row.\n\t */\n\tprivate _advanceToNextRow() {\n\t\tthis._row++;\n\t\tthis._rowIndex++;\n\t\tthis._column = 0;\n\t\tthis._cellIndex = 0;\n\t\tthis._nextCellAtColumn = -1;\n\n\t\treturn this.next();\n\t}\n\n\t/**\n\t * Checks if the current row is over {@link #_endRow}.\n\t */\n\tprivate _isOverEndRow() {\n\t\t// If #_endRow is defined skip all rows after it.\n\t\treturn this._endRow !== undefined && this._row > this._endRow!;\n\t}\n\n\t/**\n\t * Checks if the current cell is over {@link #_endColumn}\n\t */\n\tprivate _isOverEndColumn() {\n\t\t// If #_endColumn is defined skip all cells after it.\n\t\treturn this._endColumn !== undefined && this._column > this._endColumn;\n\t}\n\n\t/**\n\t * A common method for formatting the iterator's output value.\n\t *\n\t * @param cell The table cell to output.\n\t * @param anchorRow The row index of a cell anchor slot.\n\t * @param anchorColumn The column index of a cell anchor slot.\n\t */\n\tprivate _formatOutValue( cell: Element, anchorRow = this._row, anchorColumn = this._column ): IteratorYieldResult<TableSlot> {\n\t\treturn {\n\t\t\tdone: false,\n\t\t\tvalue: new TableSlot( this, cell, anchorRow, anchorColumn )\n\t\t};\n\t}\n\n\t/**\n\t * Checks if the current slot should be skipped.\n\t */\n\tprivate _shouldSkipSlot(): boolean {\n\t\tconst rowIsMarkedAsSkipped = this._skipRows.has( this._row );\n\t\tconst rowIsBeforeStartRow = this._row < this._startRow!;\n\n\t\tconst columnIsBeforeStartColumn = this._column < this._startColumn;\n\t\tconst columnIsAfterEndColumn = this._endColumn !== undefined && this._column > this._endColumn;\n\n\t\treturn rowIsMarkedAsSkipped || rowIsBeforeStartRow || columnIsBeforeStartColumn || columnIsAfterEndColumn;\n\t}\n\n\t/**\n\t * Returns the cell element that is spanned over the current cell location.\n\t */\n\tprivate _getSpanned(): CellData | null {\n\t\tconst rowMap = this._spannedCells.get( this._row );\n\n\t\t// No spans for given row.\n\t\tif ( !rowMap ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// If spans for given rows has entry for column it means that this location if spanned by other cell.\n\t\treturn rowMap.get( this._column ) || null;\n\t}\n\n\t/**\n\t * Updates spanned cells map relative to the current cell location and its span dimensions.\n\t *\n\t * @param cell A cell that is spanned.\n\t * @param rowspan Cell height.\n\t * @param colspan Cell width.\n\t */\n\tprivate _recordSpans( cell: Element, rowspan: number, colspan: number ) {\n\t\tconst data = {\n\t\t\tcell,\n\t\t\trow: this._row,\n\t\t\tcolumn: this._column\n\t\t};\n\n\t\tfor ( let rowToUpdate = this._row; rowToUpdate < this._row + rowspan; rowToUpdate++ ) {\n\t\t\tfor ( let columnToUpdate = this._column; columnToUpdate < this._column + colspan; columnToUpdate++ ) {\n\t\t\t\tif ( rowToUpdate != this._row || columnToUpdate != this._column ) {\n\t\t\t\t\tthis._markSpannedCell( rowToUpdate, columnToUpdate, data );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Marks the cell location as spanned by another cell.\n\t *\n\t * @param row The row index of the cell location.\n\t * @param column The column index of the cell location.\n\t * @param data A spanned cell details (cell element, anchor row and column).\n\t */\n\tprivate _markSpannedCell( row: number, column: number, data: CellData ) {\n\t\tif ( !this._spannedCells.has( row ) ) {\n\t\t\tthis._spannedCells.set( row, new Map() );\n\t\t}\n\n\t\tconst rowSpans = this._spannedCells.get( row )!;\n\n\t\trowSpans.set( column, data );\n\t}\n}\n\n/**\n * An object returned by {@link module:table/tablewalker~TableWalker} when traversing table cells.\n */\nclass TableSlot {\n\t/**\n\t * The current table cell.\n\t */\n\tpublic readonly cell: Element;\n\n\t/**\n\t * The row index of a table slot.\n\t */\n\tpublic readonly row: number;\n\n\t/**\n\t * The column index of a table slot.\n\t */\n\tpublic readonly column: number;\n\n\t/**\n\t * The row index of a cell anchor slot.\n\t */\n\tpublic readonly cellAnchorRow: number;\n\n\t/**\n\t * The column index of a cell anchor slot.\n\t */\n\tpublic readonly cellAnchorColumn: number;\n\n\t/**\n\t * The index of the current cell in the parent row.\n\t */\n\tprivate readonly _cellIndex: number;\n\n\t/**\n\t * The index of the current row element in the table.\n\t */\n\tprivate readonly _rowIndex: number;\n\n\t/**\n\t * The table element.\n\t */\n\tprivate readonly _table: Element;\n\n\t/**\n\t * Creates an instance of the table walker value.\n\t *\n\t * @param tableWalker The table walker instance.\n\t * @param cell The current table cell.\n\t * @param anchorRow The row index of a cell anchor slot.\n\t * @param anchorColumn The column index of a cell anchor slot.\n\t */\n\tconstructor( tableWalker: TableWalker, cell: Element, anchorRow: number, anchorColumn: number ) {\n\t\tthis.cell = cell;\n\t\tthis.row = tableWalker._row;\n\t\tthis.column = tableWalker._column;\n\t\tthis.cellAnchorRow = anchorRow;\n\t\tthis.cellAnchorColumn = anchorColumn;\n\t\tthis._cellIndex = tableWalker._cellIndex;\n\t\tthis._rowIndex = tableWalker._rowIndex;\n\t\tthis._table = tableWalker._table;\n\t}\n\n\t// @if CK_DEBUG // public get isSpanned(): unknown { return throwMissingGetterError( 'isSpanned' ); }\n\t// @if CK_DEBUG // public get colspan(): unknown { return throwMissingGetterError( 'colspan' ); }\n\t// @if CK_DEBUG // public get rowspan(): unknown { return throwMissingGetterError( 'rowspan' ); }\n\t// @if CK_DEBUG // public get cellIndex(): unknown { return throwMissingGetterError( 'cellIndex' ); }\n\n\t/**\n\t * Whether the cell is anchored in the current slot.\n\t */\n\tpublic get isAnchor(): boolean {\n\t\treturn this.row === this.cellAnchorRow && this.column === this.cellAnchorColumn;\n\t}\n\n\t/**\n\t * The width of a cell defined by a `colspan` attribute. If the model attribute is not present, it is set to `1`.\n\t */\n\tpublic get cellWidth(): number {\n\t\treturn parseInt( this.cell.getAttribute( 'colspan' ) as string || '1' );\n\t}\n\n\t/**\n\t * The height of a cell defined by a `rowspan` attribute. If the model attribute is not present, it is set to `1`.\n\t */\n\tpublic get cellHeight(): number {\n\t\treturn parseInt( this.cell.getAttribute( 'rowspan' ) as string || '1' );\n\t}\n\n\t/**\n\t * The index of the current row element in the table.\n\t */\n\tpublic get rowIndex(): number {\n\t\treturn this._rowIndex;\n\t}\n\n\t/**\n\t * Returns the {@link module:engine/model/position~Position} before the table slot.\n\t */\n\tpublic getPositionBefore(): Position {\n\t\tconst model = this._table.root.document!.model;\n\n\t\treturn model.createPositionAt( this._table.getChild( this.row ) as Element, this._cellIndex );\n\t}\n}\n\nexport type { TableSlot };\n\n/**\n * This `TableSlot`'s getter (property) was removed in CKEditor 5 v20.0.0.\n *\n * Check out the new `TableWalker`'s API in the documentation.\n *\n * @error tableslot-getter-removed\n * @param getterName\n */\n// @if CK_DEBUG // function throwMissingGetterError( getterName: string ): void {\n// @if CK_DEBUG //\t\tthrow new CKEditorError( 'tableslot-getter-removed', null, {\n// @if CK_DEBUG //\t\t\tgetterName\n// @if CK_DEBUG //\t\t} );\n// @if CK_DEBUG // }\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/converters/downcast\n */\n\nimport { toWidget, toWidgetEditable } from 'ckeditor5/src/widget';\nimport type { Node, ViewElement, Element, DowncastWriter, ElementCreatorFunction } from 'ckeditor5/src/engine';\n\nimport TableWalker from './../tablewalker';\nimport type TableUtils from '../tableutils';\nimport type { AdditionalSlot } from '../tableediting';\n\n/**\n * Model table element to view table element conversion helper.\n */\nexport function downcastTable( tableUtils: TableUtils, options: DowncastTableOptions ): ElementCreatorFunction {\n\treturn ( table, { writer } ) => {\n\t\tconst headingRows = table.getAttribute( 'headingRows' ) || 0;\n\t\tconst tableElement = writer.createContainerElement( 'table', null, [] );\n\t\tconst figureElement = writer.createContainerElement( 'figure', { class: 'table' }, tableElement );\n\n\t\t// Table head slot.\n\t\tif ( headingRows > 0 ) {\n\t\t\twriter.insert(\n\t\t\t\twriter.createPositionAt( tableElement, 'end' ),\n\t\t\t\twriter.createContainerElement(\n\t\t\t\t\t'thead',\n\t\t\t\t\tnull,\n\t\t\t\t\twriter.createSlot( element => element.is( 'element', 'tableRow' ) && element.index! < headingRows )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t// Table body slot.\n\t\tif ( headingRows < tableUtils.getRows( table ) ) {\n\t\t\twriter.insert(\n\t\t\t\twriter.createPositionAt( tableElement, 'end' ),\n\t\t\t\twriter.createContainerElement(\n\t\t\t\t\t'tbody',\n\t\t\t\t\tnull,\n\t\t\t\t\twriter.createSlot( element => element.is( 'element', 'tableRow' ) && element.index! >= headingRows )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t// Dynamic slots.\n\t\tfor ( const { positionOffset, filter } of options.additionalSlots ) {\n\t\t\twriter.insert(\n\t\t\t\twriter.createPositionAt( tableElement, positionOffset ),\n\t\t\t\twriter.createSlot( filter )\n\t\t\t);\n\t\t}\n\n\t\t// Create a slot with items that don't fit into the table.\n\t\twriter.insert(\n\t\t\twriter.createPositionAt( tableElement, 'after' ),\n\t\t\twriter.createSlot( element => {\n\t\t\t\tif ( element.is( 'element', 'tableRow' ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn !options.additionalSlots.some( ( { filter } ) => filter( element ) );\n\t\t\t} )\n\t\t);\n\n\t\treturn options.asWidget ? toTableWidget( figureElement, writer ) : figureElement;\n\t};\n}\n\n/**\n * Model table row element to view `<tr>` element conversion helper.\n *\n * @returns Element creator.\n */\nexport function downcastRow(): ElementCreatorFunction {\n\treturn ( tableRow, { writer } ) => {\n\t\treturn tableRow.isEmpty ?\n\t\t\twriter.createEmptyElement( 'tr' ) :\n\t\t\twriter.createContainerElement( 'tr' );\n\t};\n}\n\n/**\n * Model table cell element to view `<td>` or `<th>` element conversion helper.\n *\n * This conversion helper will create proper `<th>` elements for table cells that are in the heading section (heading row or column)\n * and `<td>` otherwise.\n *\n * @param options.asWidget If set to `true`, the downcast conversion will produce a widget.\n * @returns Element creator.\n */\nexport function downcastCell( options: { asWidget?: boolean } = {} ): ElementCreatorFunction {\n\treturn ( tableCell, { writer } ) => {\n\t\tconst tableRow = tableCell.parent as Element;\n\t\tconst table = tableRow.parent as Element;\n\t\tconst rowIndex = table.getChildIndex( tableRow )!;\n\n\t\tconst tableWalker = new TableWalker( table, { row: rowIndex } );\n\t\tconst headingRows = table.getAttribute( 'headingRows' ) as number || 0;\n\t\tconst headingColumns = table.getAttribute( 'headingColumns' ) as number || 0;\n\n\t\tlet result: ViewElement | null = null;\n\n\t\t// We need to iterate over a table in order to get proper row & column values from a walker.\n\t\tfor ( const tableSlot of tableWalker ) {\n\t\t\tif ( tableSlot.cell == tableCell ) {\n\t\t\t\tconst isHeading = tableSlot.row < headingRows || tableSlot.column < headingColumns;\n\t\t\t\tconst cellElementName = isHeading ? 'th' : 'td';\n\n\t\t\t\tresult = options.asWidget ?\n\t\t\t\t\ttoWidgetEditable( writer.createEditableElement( cellElementName ), writer ) :\n\t\t\t\t\twriter.createContainerElement( cellElementName );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\n/**\n * Overrides paragraph inside table cell conversion.\n *\n * This converter:\n * * should be used to override default paragraph conversion.\n * * It will only convert `<paragraph>` placed directly inside `<tableCell>`.\n * * For a single paragraph without attributes it returns `<span>` to simulate data table.\n * * For all other cases it returns `<p>` element.\n *\n * @param options.asWidget If set to `true`, the downcast conversion will produce a widget.\n * @returns Element creator.\n */\nexport function convertParagraphInTableCell( options: { asWidget?: boolean } = {} ): ElementCreatorFunction {\n\treturn ( modelElement, { writer } ) => {\n\t\tif ( !modelElement.parent!.is( 'element', 'tableCell' ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( !isSingleParagraphWithoutAttributes( modelElement ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( options.asWidget ) {\n\t\t\treturn writer.createContainerElement( 'span', { class: 'ck-table-bogus-paragraph' } );\n\t\t} else {\n\t\t\t// Using `<p>` in case there are some markers on it and transparentRendering will render it anyway.\n\t\t\tconst viewElement = writer.createContainerElement( 'p' );\n\n\t\t\twriter.setCustomProperty( 'dataPipeline:transparentRendering', true, viewElement );\n\n\t\t\treturn viewElement;\n\t\t}\n\t};\n}\n\n/**\n * Checks if given model `<paragraph>` is an only child of a parent (`<tableCell>`) and if it has any attribute set.\n *\n * The paragraph should be converted in the editing view to:\n *\n * * If returned `true` - to a `<span class=\"ck-table-bogus-paragraph\">`\n * * If returned `false` - to a `<p>`\n */\nexport function isSingleParagraphWithoutAttributes( modelElement: Element ): boolean {\n\tconst tableCell = modelElement.parent!;\n\n\tconst isSingleParagraph = tableCell.childCount == 1;\n\n\treturn isSingleParagraph && !hasAnyAttribute( modelElement );\n}\n\n/**\n * Converts a given {@link module:engine/view/element~Element} to a table widget:\n * * Adds a {@link module:engine/view/element~Element#_setCustomProperty custom property} allowing to recognize the table widget element.\n * * Calls the {@link module:widget/utils~toWidget} function with the proper element's label creator.\n *\n * @param writer An instance of the view writer.\n * @param label The element's label. It will be concatenated with the table `alt` attribute if one is present.\n */\nfunction toTableWidget( viewElement: ViewElement, writer: DowncastWriter ): ViewElement {\n\twriter.setCustomProperty( 'table', true, viewElement );\n\n\treturn toWidget( viewElement, writer, { hasSelectionHandle: true } );\n}\n\n/**\n * Checks if an element has any attributes set.\n */\nfunction hasAnyAttribute( element: Node ): boolean {\n\tconst iteratorItem = element.getAttributeKeys().next();\n\n\treturn !iteratorItem.done;\n}\n\nexport interface DowncastTableOptions {\n\n\t/**\n\t * If set to `true`, the downcast conversion will produce a widget.\n\t */\n\tasWidget?: boolean;\n\n\t/**\n\t * Array of additional slot handlers.\n\t */\n\tadditionalSlots: Array<AdditionalSlot>;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/commands/inserttablecommand\n */\n\nimport { Command } from 'ckeditor5/src/core';\n\nimport type {\n\tDocumentSelection,\n\tSchema,\n\tSelection,\n\tElement\n} from 'ckeditor5/src/engine';\nimport type TableUtils from '../tableutils';\n\n/**\n * The insert table command.\n *\n * The command is registered by {@link module:table/tableediting~TableEditing} as the `'insertTable'` editor command.\n *\n * To insert a table at the current selection, execute the command and specify the dimensions:\n *\n * ```ts\n * editor.execute( 'insertTable', { rows: 20, columns: 5 } );\n * ```\n */\nexport default class InsertTableCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst schema = model.schema;\n\n\t\tthis.isEnabled = isAllowedInParent( selection, schema );\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * Inserts a table with the given number of rows and columns into the editor.\n\t *\n\t * @param options.rows The number of rows to create in the inserted table. Default value is 2.\n\t * @param options.columns The number of columns to create in the inserted table. Default value is 2.\n\t * @param options.headingRows The number of heading rows. If not provided it will default to\n\t * {@link module:table/tableconfig~TableConfig#defaultHeadings `config.table.defaultHeadings.rows`} table config.\n\t * @param options.headingColumns The number of heading columns. If not provided it will default to\n\t * {@link module:table/tableconfig~TableConfig#defaultHeadings `config.table.defaultHeadings.columns`} table config.\n\t * @fires execute\n\t */\n\tpublic override execute(\n\t\toptions: {\n\t\t\trows?: number;\n\t\t\tcolumns?: number;\n\t\t\theadingRows?: number;\n\t\t\theadingColumns?: number;\n\t\t} = {}\n\t): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst tableUtils: TableUtils = editor.plugins.get( 'TableUtils' );\n\n\t\tconst defaultRows = editor.config.get( 'table.defaultHeadings.rows' );\n\t\tconst defaultColumns = editor.config.get( 'table.defaultHeadings.columns' );\n\n\t\tif ( options.headingRows === undefined && defaultRows ) {\n\t\t\toptions.headingRows = defaultRows;\n\t\t}\n\n\t\tif ( options.headingColumns === undefined && defaultColumns ) {\n\t\t\toptions.headingColumns = defaultColumns;\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\tconst table = tableUtils.createTable( writer, options );\n\n\t\t\tmodel.insertObject( table, null, null, { findOptimalPosition: 'auto' } );\n\n\t\t\twriter.setSelection( writer.createPositionAt( table.getNodeByPath( [ 0, 0, 0 ] ), 0 ) );\n\t\t} );\n\t}\n}\n\n/**\n * Checks if the table is allowed in the parent.\n */\nfunction isAllowedInParent( selection: Selection | DocumentSelection, schema: Schema ) {\n\tconst positionParent = selection.getFirstPosition()!.parent;\n\tconst validParent = positionParent === positionParent.root ? positionParent : positionParent.parent;\n\n\treturn schema.checkChild( validParent as Element, 'table' );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/commands/insertrowcommand\n */\n\nimport { Command, type Editor } from 'ckeditor5/src/core';\nimport type TableUtils from '../tableutils';\n\n/**\n * The insert row command.\n *\n * The command is registered by {@link module:table/tableediting~TableEditing} as the `'insertTableRowBelow'` and\n * `'insertTableRowAbove'` editor commands.\n *\n * To insert a row below the selected cell, execute the following command:\n *\n * ```ts\n * editor.execute( 'insertTableRowBelow' );\n * ```\n *\n * To insert a row above the selected cell, execute the following command:\n *\n * ```ts\n * editor.execute( 'insertTableRowAbove' );\n * ```\n */\nexport default class InsertRowCommand extends Command {\n\t/**\n\t * The order of insertion relative to the row in which the caret is located.\n\t */\n\tpublic readonly order: 'above' | 'below';\n\n\t/**\n\t * Creates a new `InsertRowCommand` instance.\n\t *\n\t * @param editor The editor on which this command will be used.\n\t * @param options.order The order of insertion relative to the row in which the caret is located.\n\t * Possible values: `\"above\"` and `\"below\"`. Default value is \"below\"\n\t */\n\tconstructor( editor: Editor, options: { order?: 'above' | 'below' } = {} ) {\n\t\tsuper( editor );\n\n\t\tthis.order = options.order || 'below';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst isAnyCellSelected = !!tableUtils.getSelectionAffectedTableCells( selection ).length;\n\n\t\tthis.isEnabled = isAnyCellSelected;\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * Depending on the command's {@link #order} value, it inserts a row `'below'` or `'above'` the row in which selection is set.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute(): void {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst tableUtils: TableUtils = editor.plugins.get( 'TableUtils' );\n\t\tconst insertAbove = this.order === 'above';\n\n\t\tconst affectedTableCells = tableUtils.getSelectionAffectedTableCells( selection );\n\t\tconst rowIndexes = tableUtils.getRowIndexes( affectedTableCells );\n\n\t\tconst row = insertAbove ? rowIndexes.first : rowIndexes.last;\n\t\tconst table = affectedTableCells[ 0 ].findAncestor( 'table' )!;\n\n\t\ttableUtils.insertRows( table, { at: insertAbove ? row : row + 1, copyStructureFromAbove: !insertAbove } );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/commands/insertcolumncommand\n */\n\nimport { Command, type Editor } from 'ckeditor5/src/core';\nimport type TableUtils from '../tableutils';\n\n/**\n * The insert column command.\n *\n * The command is registered by {@link module:table/tableediting~TableEditing} as the `'insertTableColumnLeft'` and\n * `'insertTableColumnRight'` editor commands.\n *\n * To insert a column to the left of the selected cell, execute the following command:\n *\n * ```ts\n * editor.execute( 'insertTableColumnLeft' );\n * ```\n *\n * To insert a column to the right of the selected cell, execute the following command:\n *\n * ```ts\n * editor.execute( 'insertTableColumnRight' );\n * ```\n */\nexport default class InsertColumnCommand extends Command {\n\t/**\n\t * The order of insertion relative to the column in which the caret is located.\n\t */\n\tpublic readonly order: 'left' | 'right';\n\n\t/**\n\t * Creates a new `InsertColumnCommand` instance.\n\t *\n\t * @param editor An editor on which this command will be used.\n\t * @param options.order The order of insertion relative to the column in which the caret is located.\n\t * Possible values: `\"left\"` and `\"right\"`. Default value is \"right\".\n\t */\n\tconstructor( editor: Editor, options: { order?: 'left' | 'right' } = {} ) {\n\t\tsuper( editor );\n\n\t\tthis.order = options.order || 'right';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst isAnyCellSelected = !!tableUtils.getSelectionAffectedTableCells( selection ).length;\n\n\t\tthis.isEnabled = isAnyCellSelected;\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * Depending on the command's {@link #order} value, it inserts a column to the `'left'` or `'right'` of the column\n\t * in which the selection is set.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute(): void {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst tableUtils: TableUtils = editor.plugins.get( 'TableUtils' );\n\t\tconst insertBefore = this.order === 'left';\n\n\t\tconst affectedTableCells = tableUtils.getSelectionAffectedTableCells( selection );\n\t\tconst columnIndexes = tableUtils.getColumnIndexes( affectedTableCells );\n\n\t\tconst column = insertBefore ? columnIndexes.first : columnIndexes.last;\n\t\tconst table = affectedTableCells[ 0 ].findAncestor( 'table' )!;\n\n\t\ttableUtils.insertColumns( table, { columns: 1, at: insertBefore ? column : column + 1 } );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/commands/splitcellcommand\n */\n\nimport { Command, type Editor } from 'ckeditor5/src/core';\nimport type TableUtils from '../tableutils';\n\n/**\n * The split cell command.\n *\n * The command is registered by {@link module:table/tableediting~TableEditing} as the `'splitTableCellVertically'`\n * and `'splitTableCellHorizontally'` editor commands.\n *\n * You can split any cell vertically or horizontally by executing this command. For example, to split the selected table cell vertically:\n *\n * ```ts\n * editor.execute( 'splitTableCellVertically' );\n * ```\n */\nexport default class SplitCellCommand extends Command {\n\t/**\n\t * The direction that indicates which cell will be split.\n\t */\n\tpublic readonly direction: 'horizontally' | 'vertically';\n\n\t/**\n\t * Creates a new `SplitCellCommand` instance.\n\t *\n\t * @param editor The editor on which this command will be used.\n\t * @param options.direction Indicates whether the command should split cells `'horizontally'` or `'vertically'`.\n\t */\n\tconstructor( editor: Editor, options: { direction?: 'horizontally' | 'vertically' } = {} ) {\n\t\tsuper( editor );\n\n\t\tthis.direction = options.direction || 'horizontally';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst selectedCells = tableUtils.getSelectionAffectedTableCells( this.editor.model.document.selection );\n\n\t\tthis.isEnabled = selectedCells.length === 1;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst tableCell = tableUtils.getSelectionAffectedTableCells( this.editor.model.document.selection )[ 0 ];\n\t\tconst isHorizontal = this.direction === 'horizontally';\n\n\t\tif ( isHorizontal ) {\n\t\t\ttableUtils.splitCellHorizontally( tableCell, 2 );\n\t\t} else {\n\t\t\ttableUtils.splitCellVertically( tableCell, 2 );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/utils/structure\n */\n\nimport type { Element, Node, Writer } from 'ckeditor5/src/engine';\n\nimport { default as TableWalker, type TableSlot } from '../tablewalker';\nimport { createEmptyTableCell, updateNumericAttribute } from './common';\nimport type TableUtils from '../tableutils';\n\ntype CellAttributes = {\n\trowspan?: number;\n\tcolspan?: number;\n};\n\n/**\n * Returns a cropped table according to given dimensions.\n\n * To return a cropped table that starts at first row and first column and end in third row and column:\n *\n * ```ts\n * const croppedTable = cropTableToDimensions( table, {\n * startRow: 1,\n * endRow: 3,\n * startColumn: 1,\n * endColumn: 3\n * }, writer );\n * ```\n *\n * Calling the code above for the table below:\n *\n * 0 1 2 3 4 0 1 2\n * ┌───┬───┬───┬───┬───┐\n * 0 │ a │ b │ c │ d │ e │\n * ├───┴───┤ ├───┴───┤ ┌───┬───┬───┐\n * 1 │ f │ │ g │ │ │ │ g │ 0\n * ├───┬───┴───┼───┬───┤ will return: ├───┴───┼───┤\n * 2 │ h │ i │ j │ k │ │ i │ j │ 1\n * ├───┤ ├───┤ │ │ ├───┤\n * 3 │ l │ │ m │ │ │ │ m │ 2\n * ├───┼───┬───┤ ├───┤ └───────┴───┘\n * 4 │ n │ o │ p │ │ q │\n * └───┴───┴───┴───┴───┘\n */\nexport function cropTableToDimensions(\n\tsourceTable: Element,\n\tcropDimensions: {\n\t\tstartRow: number;\n\t\tstartColumn: number;\n\t\tendRow: number;\n\t\tendColumn: number;\n\t},\n\twriter: Writer\n): Element {\n\tconst { startRow, startColumn, endRow, endColumn } = cropDimensions;\n\n\t// Create empty table with empty rows equal to crop height.\n\tconst croppedTable = writer.createElement( 'table' );\n\tconst cropHeight = endRow - startRow + 1;\n\n\tfor ( let i = 0; i < cropHeight; i++ ) {\n\t\twriter.insertElement( 'tableRow', croppedTable, 'end' );\n\t}\n\n\tconst tableMap = [ ...new TableWalker( sourceTable, { startRow, endRow, startColumn, endColumn, includeAllSlots: true } ) ];\n\n\t// Iterate over source table slots (including empty - spanned - ones).\n\tfor ( const { row: sourceRow, column: sourceColumn, cell: tableCell, isAnchor, cellAnchorRow, cellAnchorColumn } of tableMap ) {\n\t\t// Row index in cropped table.\n\t\tconst rowInCroppedTable = sourceRow - startRow;\n\t\tconst row = croppedTable.getChild( rowInCroppedTable ) as Element;\n\n\t\t// For empty slots: fill the gap with empty table cell.\n\t\tif ( !isAnchor ) {\n\t\t\t// But fill the gap only if the spanning cell is anchored outside cropped area.\n\t\t\t// In the table from method jsdoc those cells are: \"c\" & \"f\".\n\t\t\tif ( cellAnchorRow < startRow || cellAnchorColumn < startColumn ) {\n\t\t\t\tcreateEmptyTableCell( writer, writer.createPositionAt( row, 'end' ) );\n\t\t\t}\n\t\t}\n\t\t// Otherwise clone the cell with all children and trim if it exceeds cropped area.\n\t\telse {\n\t\t\tconst tableCellCopy = writer.cloneElement( tableCell );\n\n\t\t\twriter.append( tableCellCopy, row );\n\n\t\t\t// Trim table if it exceeds cropped area.\n\t\t\t// In the table from method jsdoc those cells are: \"g\" & \"m\".\n\t\t\ttrimTableCellIfNeeded( tableCellCopy, sourceRow, sourceColumn, endRow, endColumn, writer );\n\t\t}\n\t}\n\n\t// Adjust heading rows & columns in cropped table if crop selection includes headings parts.\n\taddHeadingsToCroppedTable( croppedTable, sourceTable, startRow, startColumn, writer );\n\n\treturn croppedTable;\n}\n\n/**\n * Returns slot info of cells that starts above and overlaps a given row.\n *\n * In a table below, passing `overlapRow = 3`\n *\n * ┌───┬───┬───┬───┬───┐\n * 0 │ a │ b │ c │ d │ e │\n * │ ├───┼───┼───┼───┤\n * 1 │ │ f │ g │ h │ i │\n * ├───┤ ├───┼───┤ │\n * 2 │ j │ │ k │ l │ │\n * │ │ │ ├───┼───┤\n * 3 │ │ │ │ m │ n │ <- overlap row to check\n * ├───┼───┤ │ ├───│\n * 4 │ o │ p │ │ │ q │\n * └───┴───┴───┴───┴───┘\n *\n * will return slot info for cells: \"j\", \"f\", \"k\".\n *\n * @param table The table to check.\n * @param overlapRow The index of the row to check.\n * @param startRow row to start analysis. Use it when it is known that the cells above that row will not overlap. Default value is 0.\n */\nexport function getVerticallyOverlappingCells( table: Element, overlapRow: number, startRow: number = 0 ): Array<TableSlot> {\n\tconst cells: Array<TableSlot> = [];\n\n\tconst tableWalker = new TableWalker( table, { startRow, endRow: overlapRow - 1 } );\n\n\tfor ( const slotInfo of tableWalker ) {\n\t\tconst { row, cellHeight } = slotInfo;\n\t\tconst cellEndRow = row + cellHeight - 1;\n\n\t\tif ( row < overlapRow && overlapRow <= cellEndRow ) {\n\t\t\tcells.push( slotInfo );\n\t\t}\n\t}\n\n\treturn cells;\n}\n\n/**\n * Splits the table cell horizontally.\n *\n * @returns Created table cell, if any were created.\n */\nexport function splitHorizontally( tableCell: Element, splitRow: number, writer: Writer ): Element | null {\n\tconst tableRow = tableCell.parent as Node;\n\tconst table = tableRow.parent as Element;\n\tconst rowIndex = tableRow.index!;\n\n\tconst rowspan = parseInt( tableCell.getAttribute( 'rowspan' ) as string );\n\tconst newRowspan = splitRow - rowIndex;\n\n\tconst newCellAttributes: CellAttributes = {};\n\tconst newCellRowSpan = rowspan - newRowspan;\n\n\tif ( newCellRowSpan > 1 ) {\n\t\tnewCellAttributes.rowspan = newCellRowSpan;\n\t}\n\n\tconst colspan = parseInt( tableCell.getAttribute( 'colspan' ) as string || '1' );\n\n\tif ( colspan > 1 ) {\n\t\tnewCellAttributes.colspan = colspan;\n\t}\n\n\tconst startRow = rowIndex;\n\tconst endRow = startRow + newRowspan;\n\tconst tableMap = [ ...new TableWalker( table, { startRow, endRow, includeAllSlots: true } ) ];\n\n\tlet newCell = null;\n\tlet columnIndex;\n\n\tfor ( const tableSlot of tableMap ) {\n\t\tconst { row, column, cell } = tableSlot;\n\n\t\tif ( cell === tableCell && columnIndex === undefined ) {\n\t\t\tcolumnIndex = column;\n\t\t}\n\n\t\tif ( columnIndex !== undefined && columnIndex === column && row === endRow ) {\n\t\t\tnewCell = createEmptyTableCell( writer, tableSlot.getPositionBefore(), newCellAttributes );\n\t\t}\n\t}\n\n\t// Update the rowspan attribute after updating table.\n\tupdateNumericAttribute( 'rowspan', newRowspan, tableCell, writer );\n\n\treturn newCell;\n}\n\n/**\n * Returns slot info of cells that starts before and overlaps a given column.\n *\n * In a table below, passing `overlapColumn = 3`\n *\n * 0 1 2 3 4\n * ┌───────┬───────┬───┐\n * │ a │ b │ c │\n * │───┬───┴───────┼───┤\n * │ d │ e │ f │\n * ├───┼───┬───────┴───┤\n * │ g │ h │ i │\n * ├───┼───┼───┬───────┤\n * │ j │ k │ l │ m │\n * ├───┼───┴───┼───┬───┤\n * │ n │ o │ p │ q │\n * └───┴───────┴───┴───┘\n * ^\n * Overlap column to check\n *\n * will return slot info for cells: \"b\", \"e\", \"i\".\n *\n * @param table The table to check.\n * @param overlapColumn The index of the column to check.\n */\nexport function getHorizontallyOverlappingCells( table: Element, overlapColumn: number ): Array<TableSlot> {\n\tconst cellsToSplit = [];\n\n\tconst tableWalker = new TableWalker( table );\n\n\tfor ( const slotInfo of tableWalker ) {\n\t\tconst { column, cellWidth } = slotInfo;\n\t\tconst cellEndColumn = column + cellWidth - 1;\n\n\t\tif ( column < overlapColumn && overlapColumn <= cellEndColumn ) {\n\t\t\tcellsToSplit.push( slotInfo );\n\t\t}\n\t}\n\n\treturn cellsToSplit;\n}\n\n/**\n * Splits the table cell vertically.\n *\n * @param columnIndex The table cell column index.\n * @param splitColumn The index of column to split cell on.\n * @returns Created table cell.\n */\nexport function splitVertically( tableCell: Element, columnIndex: number, splitColumn: number, writer: Writer ): Element {\n\tconst colspan = parseInt( tableCell.getAttribute( 'colspan' ) as string );\n\tconst newColspan = splitColumn - columnIndex;\n\n\tconst newCellAttributes: CellAttributes = {};\n\tconst newCellColSpan = colspan - newColspan;\n\n\tif ( newCellColSpan > 1 ) {\n\t\tnewCellAttributes.colspan = newCellColSpan;\n\t}\n\n\tconst rowspan = parseInt( tableCell.getAttribute( 'rowspan' ) as string || '1' );\n\n\tif ( rowspan > 1 ) {\n\t\tnewCellAttributes.rowspan = rowspan;\n\t}\n\n\tconst newCell = createEmptyTableCell( writer, writer.createPositionAfter( tableCell ), newCellAttributes );\n\n\t// Update the colspan attribute after updating table.\n\tupdateNumericAttribute( 'colspan', newColspan, tableCell, writer );\n\n\treturn newCell;\n}\n\n/**\n * Adjusts table cell dimensions to not exceed limit row and column.\n *\n * If table cell width (or height) covers a column (or row) that is after a limit column (or row)\n * this method will trim \"colspan\" (or \"rowspan\") attribute so the table cell will fit in a defined limits.\n */\nexport function trimTableCellIfNeeded(\n\ttableCell: Element,\n\tcellRow: number,\n\tcellColumn: number,\n\tlimitRow: number,\n\tlimitColumn: number,\n\twriter: Writer\n): void {\n\tconst colspan = parseInt( tableCell.getAttribute( 'colspan' ) as string || '1' );\n\tconst rowspan = parseInt( tableCell.getAttribute( 'rowspan' ) as string || '1' );\n\n\tconst endColumn = cellColumn + colspan - 1;\n\n\tif ( endColumn > limitColumn ) {\n\t\tconst trimmedSpan = limitColumn - cellColumn + 1;\n\n\t\tupdateNumericAttribute( 'colspan', trimmedSpan, tableCell, writer, 1 );\n\t}\n\n\tconst endRow = cellRow + rowspan - 1;\n\n\tif ( endRow > limitRow ) {\n\t\tconst trimmedSpan = limitRow - cellRow + 1;\n\n\t\tupdateNumericAttribute( 'rowspan', trimmedSpan, tableCell, writer, 1 );\n\t}\n}\n\n/**\n * Sets proper heading attributes to a cropped table.\n */\nfunction addHeadingsToCroppedTable( croppedTable: Element, sourceTable: Element, startRow: number, startColumn: number, writer: Writer ) {\n\tconst headingRows = parseInt( sourceTable.getAttribute( 'headingRows' ) as string || '0' );\n\n\tif ( headingRows > 0 ) {\n\t\tconst headingRowsInCrop = headingRows - startRow;\n\t\tupdateNumericAttribute( 'headingRows', headingRowsInCrop, croppedTable, writer, 0 );\n\t}\n\n\tconst headingColumns = parseInt( sourceTable.getAttribute( 'headingColumns' ) as string || '0' );\n\n\tif ( headingColumns > 0 ) {\n\t\tconst headingColumnsInCrop = headingColumns - startColumn;\n\t\tupdateNumericAttribute( 'headingColumns', headingColumnsInCrop, croppedTable, writer, 0 );\n\t}\n}\n\n/**\n * Removes columns that have no cells anchored.\n *\n * In table below:\n *\n * +----+----+----+----+----+----+----+\n * | 00 | 01 | 03 | 04 | 06 |\n * +----+----+----+----+ +----+\n * | 10 | 11 | 13 | | 16 |\n * +----+----+----+----+----+----+----+\n * | 20 | 21 | 23 | 24 | 26 |\n * +----+----+----+----+----+----+----+\n * ^--- empty ---^\n *\n * Will remove columns 2 and 5.\n *\n * **Note:** This is a low-level helper method for clearing invalid model state when doing table modifications.\n * To remove a column from a table use {@link module:table/tableutils~TableUtils#removeColumns `TableUtils.removeColumns()`}.\n *\n * @internal\n * @returns True if removed some columns.\n */\nexport function removeEmptyColumns( table: Element, tableUtils: TableUtils ): boolean {\n\tconst width = tableUtils.getColumns( table );\n\tconst columnsMap = new Array( width ).fill( 0 );\n\n\tfor ( const { column } of new TableWalker( table ) ) {\n\t\tcolumnsMap[ column ]++;\n\t}\n\n\tconst emptyColumns = columnsMap.reduce( ( result, cellsCount, column ) => {\n\t\treturn cellsCount ? result : [ ...result, column ];\n\t}, [] );\n\n\tif ( emptyColumns.length > 0 ) {\n\t\t// Remove only last empty column because it will recurrently trigger removing empty rows.\n\t\tconst emptyColumn = emptyColumns[ emptyColumns.length - 1 ];\n\n\t\t// @if CK_DEBUG_TABLE // console.log( `Removing empty column: ${ emptyColumn }.` );\n\t\ttableUtils.removeColumns( table, { at: emptyColumn } );\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * Removes rows that have no cells anchored.\n *\n * In table below:\n *\n * +----+----+----+\n * | 00 | 01 | 02 |\n * +----+----+----+\n * | 10 | 11 | 12 |\n * + + + +\n * | | | | <-- empty\n * +----+----+----+\n * | 30 | 31 | 32 |\n * +----+----+----+\n * | 40 | 42 |\n * + + +\n * | | | <-- empty\n * +----+----+----+\n * | 60 | 61 | 62 |\n * +----+----+----+\n *\n * Will remove rows 2 and 5.\n *\n * **Note:** This is a low-level helper method for clearing invalid model state when doing table modifications.\n * To remove a row from a table use {@link module:table/tableutils~TableUtils#removeRows `TableUtils.removeRows()`}.\n *\n * @internal\n * @returns True if removed some rows.\n */\nexport function removeEmptyRows( table: Element, tableUtils: TableUtils ): boolean {\n\tconst emptyRows = [];\n\tconst tableRowCount = tableUtils.getRows( table );\n\n\tfor ( let rowIndex = 0; rowIndex < tableRowCount; rowIndex++ ) {\n\t\tconst tableRow = table.getChild( rowIndex ) as Element;\n\n\t\tif ( tableRow.isEmpty ) {\n\t\t\temptyRows.push( rowIndex );\n\t\t}\n\t}\n\n\tif ( emptyRows.length > 0 ) {\n\t\t// Remove only last empty row because it will recurrently trigger removing empty columns.\n\t\tconst emptyRow = emptyRows[ emptyRows.length - 1 ];\n\n\t\t// @if CK_DEBUG_TABLE // console.log( `Removing empty row: ${ emptyRow }.` );\n\t\ttableUtils.removeRows( table, { at: emptyRow } );\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * Removes rows and columns that have no cells anchored.\n *\n * In table below:\n *\n * +----+----+----+----+\n * | 00 | 02 |\n * +----+----+ +\n * | 10 | |\n * +----+----+----+----+\n * | 20 | 22 | 23 |\n * + + + +\n * | | | | <-- empty row\n * +----+----+----+----+\n * ^--- empty column\n *\n * Will remove row 3 and column 1.\n *\n * **Note:** This is a low-level helper method for clearing invalid model state when doing table modifications.\n * To remove a rows from a table use {@link module:table/tableutils~TableUtils#removeRows `TableUtils.removeRows()`} and\n * {@link module:table/tableutils~TableUtils#removeColumns `TableUtils.removeColumns()`} to remove a column.\n *\n * @internal\n */\nexport function removeEmptyRowsColumns( table: Element, tableUtils: TableUtils ): void {\n\tconst removedColumns = removeEmptyColumns( table, tableUtils );\n\n\t// If there was some columns removed then cleaning empty rows was already triggered.\n\tif ( !removedColumns ) {\n\t\tremoveEmptyRows( table, tableUtils );\n\t}\n}\n\n/**\n * Returns adjusted last row index if selection covers part of a row with empty slots (spanned by other cells).\n * The `dimensions.lastRow` is equal to last row index but selection might be bigger.\n *\n * This happens *only* on rectangular selection so we analyze a case like this:\n *\n * +---+---+---+---+\n * 0 | a | b | c | d |\n * + + +---+---+\n * 1 | | e | f | g |\n * + +---+ +---+\n * 2 | | h | | i | <- last row, each cell has rowspan = 2,\n * + + + + + so we need to return 3, not 2\n * 3 | | | | |\n * +---+---+---+---+\n *\n * @returns Adjusted last row index.\n */\nexport function adjustLastRowIndex(\n\ttable: Element,\n\tdimensions: {\n\t\tfirstRow: number;\n\t\tfirstColumn: number;\n\t\tlastRow: number;\n\t\tlastColumn: number;\n\t}\n): number {\n\tconst lastRowMap = Array.from( new TableWalker( table, {\n\t\tstartColumn: dimensions.firstColumn,\n\t\tendColumn: dimensions.lastColumn,\n\t\trow: dimensions.lastRow\n\t} ) );\n\n\tconst everyCellHasSingleRowspan = lastRowMap.every( ( { cellHeight } ) => cellHeight === 1 );\n\n\t// It is a \"flat\" row, so the last row index is OK.\n\tif ( everyCellHasSingleRowspan ) {\n\t\treturn dimensions.lastRow;\n\t}\n\n\t// Otherwise get any cell's rowspan and adjust the last row index.\n\tconst rowspanAdjustment = lastRowMap[ 0 ].cellHeight - 1;\n\treturn dimensions.lastRow + rowspanAdjustment;\n}\n\n/**\n * Returns adjusted last column index if selection covers part of a column with empty slots (spanned by other cells).\n * The `dimensions.lastColumn` is equal to last column index but selection might be bigger.\n *\n * This happens *only* on rectangular selection so we analyze a case like this:\n *\n * 0 1 2 3\n * +---+---+---+---+\n * | a |\n * +---+---+---+---+\n * | b | c | d |\n * +---+---+---+---+\n * | e | f |\n * +---+---+---+---+\n * | g | h |\n * +---+---+---+---+\n * ^\n * last column, each cell has colspan = 2, so we need to return 3, not 2\n *\n * @returns Adjusted last column index.\n */\nexport function adjustLastColumnIndex(\n\ttable: Element,\n\tdimensions: {\n\t\tfirstRow: number;\n\t\tfirstColumn: number;\n\t\tlastRow: number;\n\t\tlastColumn: number;\n\t}\n): number {\n\tconst lastColumnMap = Array.from( new TableWalker( table, {\n\t\tstartRow: dimensions.firstRow,\n\t\tendRow: dimensions.lastRow,\n\t\tcolumn: dimensions.lastColumn\n\t} ) );\n\n\tconst everyCellHasSingleColspan = lastColumnMap.every( ( { cellWidth } ) => cellWidth === 1 );\n\n\t// It is a \"flat\" column, so the last column index is OK.\n\tif ( everyCellHasSingleColspan ) {\n\t\treturn dimensions.lastColumn;\n\t}\n\n\t// Otherwise get any cell's colspan and adjust the last column index.\n\tconst colspanAdjustment = lastColumnMap[ 0 ].cellWidth - 1;\n\treturn dimensions.lastColumn + colspanAdjustment;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/commands/mergecellcommand\n */\n\nimport type {\n\tElement,\n\tNode,\n\tWriter\n} from 'ckeditor5/src/engine';\n\nimport { Command, type Editor } from 'ckeditor5/src/core';\nimport TableWalker from '../tablewalker';\nimport { isHeadingColumnCell } from '../utils/common';\nimport { removeEmptyRowsColumns } from '../utils/structure';\nimport type { ArrowKeyCodeDirection } from 'ckeditor5/src/utils';\n\nimport type TableUtils from '../tableutils';\n\n/**\n * The merge cell command.\n *\n * The command is registered by {@link module:table/tableediting~TableEditing} as the `'mergeTableCellRight'`, `'mergeTableCellLeft'`,\n * `'mergeTableCellUp'` and `'mergeTableCellDown'` editor commands.\n *\n * To merge a table cell at the current selection with another cell, execute the command corresponding with the preferred direction.\n *\n * For example, to merge with a cell to the right:\n *\n * ```ts\n * editor.execute( 'mergeTableCellRight' );\n * ```\n *\n * **Note**: If a table cell has a different [`rowspan`](https://www.w3.org/TR/html50/tabular-data.html#attr-tdth-rowspan)\n * (for `'mergeTableCellRight'` and `'mergeTableCellLeft'`) or [`colspan`](https://www.w3.org/TR/html50/tabular-data.html#attr-tdth-colspan)\n * (for `'mergeTableCellUp'` and `'mergeTableCellDown'`), the command will be disabled.\n */\nexport default class MergeCellCommand extends Command {\n\t/**\n\t * The direction that indicates which cell will be merged with the currently selected one.\n\t */\n\tpublic readonly direction: ArrowKeyCodeDirection;\n\n\t/**\n\t * Whether the merge is horizontal (left/right) or vertical (up/down).\n\t */\n\tpublic readonly isHorizontal: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic declare value: Node | undefined;\n\n\t/**\n\t * Creates a new `MergeCellCommand` instance.\n\t *\n\t * @param editor The editor on which this command will be used.\n\t * @param options.direction Indicates which cell to merge with the currently selected one.\n\t * Possible values are: `'left'`, `'right'`, `'up'` and `'down'`.\n\t */\n\tconstructor( editor: Editor, options: { direction: ArrowKeyCodeDirection } ) {\n\t\tsuper( editor );\n\n\t\tthis.direction = options.direction;\n\t\tthis.isHorizontal = this.direction == 'right' || this.direction == 'left';\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst cellToMerge = this._getMergeableCell();\n\n\t\tthis.value = cellToMerge;\n\t\tthis.isEnabled = !!cellToMerge;\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * Depending on the command's {@link #direction} value, it will merge the cell that is to the `'left'`, `'right'`, `'up'` or `'down'`.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute(): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst tableCell = tableUtils.getTableCellsContainingSelection( doc.selection )[ 0 ];\n\n\t\tconst cellToMerge = this.value!;\n\t\tconst direction = this.direction;\n\n\t\tmodel.change( writer => {\n\t\t\tconst isMergeNext = direction == 'right' || direction == 'down';\n\n\t\t\t// The merge mechanism is always the same so sort cells to be merged.\n\t\t\tconst cellToExpand = ( isMergeNext ? tableCell : cellToMerge ) as Element;\n\t\t\tconst cellToRemove = ( isMergeNext ? cellToMerge : tableCell ) as Element;\n\n\t\t\t// Cache the parent of cell to remove for later check.\n\t\t\tconst removedTableCellRow = cellToRemove.parent as Element;\n\n\t\t\tmergeTableCells( cellToRemove, cellToExpand, writer );\n\n\t\t\tconst spanAttribute = this.isHorizontal ? 'colspan' : 'rowspan';\n\t\t\tconst cellSpan = parseInt( tableCell.getAttribute( spanAttribute ) as string || '1' );\n\t\t\tconst cellToMergeSpan = parseInt( cellToMerge.getAttribute( spanAttribute ) as string || '1' );\n\n\t\t\t// Update table cell span attribute and merge set selection on merged contents.\n\t\t\twriter.setAttribute( spanAttribute, cellSpan + cellToMergeSpan, cellToExpand );\n\t\t\twriter.setSelection( writer.createRangeIn( cellToExpand ) );\n\n\t\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\t\tconst table = removedTableCellRow.findAncestor( 'table' )!;\n\n\t\t\t// Remove empty rows and columns after merging.\n\t\t\tremoveEmptyRowsColumns( table, tableUtils );\n\t\t} );\n\t}\n\n\t/**\n\t * Returns a cell that can be merged with the current cell depending on the command's direction.\n\t */\n\tprivate _getMergeableCell(): Node | undefined {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst tableCell = tableUtils.getTableCellsContainingSelection( doc.selection )[ 0 ];\n\n\t\tif ( !tableCell ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// First get the cell on proper direction.\n\t\tconst cellToMerge = this.isHorizontal ?\n\t\t\tgetHorizontalCell( tableCell, this.direction, tableUtils ) :\n\t\t\tgetVerticalCell( tableCell, this.direction, tableUtils );\n\n\t\tif ( !cellToMerge ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If found check if the span perpendicular to merge direction is equal on both cells.\n\t\tconst spanAttribute = this.isHorizontal ? 'rowspan' : 'colspan';\n\t\tconst span = parseInt( tableCell.getAttribute( spanAttribute ) as string || '1' );\n\n\t\tconst cellToMergeSpan = parseInt( cellToMerge.getAttribute( spanAttribute ) as string || '1' );\n\n\t\tif ( cellToMergeSpan === span ) {\n\t\t\treturn cellToMerge;\n\t\t}\n\t}\n}\n\n/**\n * Returns the cell that can be merged horizontally.\n */\nfunction getHorizontalCell( tableCell: Element, direction: ArrowKeyCodeDirection, tableUtils: TableUtils ) {\n\tconst tableRow = tableCell.parent!;\n\tconst table = tableRow.parent as Element;\n\tconst horizontalCell = direction == 'right' ? tableCell.nextSibling : tableCell.previousSibling;\n\tconst hasHeadingColumns = ( table.getAttribute( 'headingColumns' ) || 0 ) > 0;\n\n\tif ( !horizontalCell ) {\n\t\treturn;\n\t}\n\n\t// Sort cells:\n\tconst cellOnLeft = ( direction == 'right' ? tableCell : horizontalCell ) as Element;\n\tconst cellOnRight = ( direction == 'right' ? horizontalCell : tableCell ) as Element;\n\n\t// Get their column indexes:\n\tconst { column: leftCellColumn } = tableUtils.getCellLocation( cellOnLeft );\n\tconst { column: rightCellColumn } = tableUtils.getCellLocation( cellOnRight );\n\n\tconst leftCellSpan = parseInt( cellOnLeft.getAttribute( 'colspan' ) as string || '1' );\n\n\tconst isCellOnLeftInHeadingColumn = isHeadingColumnCell( tableUtils, cellOnLeft );\n\tconst isCellOnRightInHeadingColumn = isHeadingColumnCell( tableUtils, cellOnRight );\n\n\t// We cannot merge heading columns cells with regular cells.\n\tif ( hasHeadingColumns && isCellOnLeftInHeadingColumn != isCellOnRightInHeadingColumn ) {\n\t\treturn;\n\t}\n\n\t// The cell on the right must have index that is distant to the cell on the left by the left cell's width (colspan).\n\tconst cellsAreTouching = leftCellColumn + leftCellSpan === rightCellColumn;\n\n\t// If the right cell's column index is different it means that there are rowspanned cells between them.\n\treturn cellsAreTouching ? horizontalCell : undefined;\n}\n\n/**\n * Returns the cell that can be merged vertically.\n */\nfunction getVerticalCell( tableCell: Element, direction: ArrowKeyCodeDirection, tableUtils: TableUtils ): Node | null {\n\tconst tableRow = tableCell.parent as Element;\n\tconst table = tableRow.parent as Element;\n\n\tconst rowIndex = table.getChildIndex( tableRow )!;\n\n\t// Don't search for mergeable cell if direction points out of the table.\n\tif ( ( direction == 'down' && rowIndex === tableUtils.getRows( table ) - 1 ) || ( direction == 'up' && rowIndex === 0 ) ) {\n\t\treturn null;\n\t}\n\n\tconst rowspan = parseInt( tableCell.getAttribute( 'rowspan' ) as string || '1' );\n\tconst headingRows = table.getAttribute( 'headingRows' ) || 0;\n\n\tconst isMergeWithBodyCell = direction == 'down' && ( rowIndex + rowspan ) === headingRows;\n\tconst isMergeWithHeadCell = direction == 'up' && rowIndex === headingRows;\n\n\t// Don't search for mergeable cell if direction points out of the current table section.\n\tif ( headingRows && ( isMergeWithBodyCell || isMergeWithHeadCell ) ) {\n\t\treturn null;\n\t}\n\n\tconst currentCellRowSpan = parseInt( tableCell.getAttribute( 'rowspan' ) as string || '1' );\n\tconst rowOfCellToMerge = direction == 'down' ? rowIndex + currentCellRowSpan : rowIndex;\n\n\tconst tableMap = [ ...new TableWalker( table, { endRow: rowOfCellToMerge } ) ];\n\n\tconst currentCellData = tableMap.find( value => value.cell === tableCell )!;\n\tconst mergeColumn = currentCellData.column;\n\n\tconst cellToMergeData = tableMap.find( ( { row, cellHeight, column } ) => {\n\t\tif ( column !== mergeColumn ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( direction == 'down' ) {\n\t\t\t// If merging a cell below the mergeRow is already calculated.\n\t\t\treturn row === rowOfCellToMerge;\n\t\t} else {\n\t\t\t// If merging a cell above calculate if it spans to mergeRow.\n\t\t\treturn rowOfCellToMerge === row + cellHeight;\n\t\t}\n\t} );\n\n\treturn cellToMergeData && cellToMergeData.cell ? cellToMergeData.cell : null;\n}\n\n/**\n * Merges two table cells. It will ensure that after merging cells with an empty paragraph, the resulting table cell will only have one\n * paragraph. If one of the merged table cells is empty, the merged table cell will have the contents of the non-empty table cell.\n * If both are empty, the merged table cell will have only one empty paragraph.\n */\nfunction mergeTableCells( cellToRemove: Element, cellToExpand: Element, writer: Writer ) {\n\tif ( !isEmpty( cellToRemove ) ) {\n\t\tif ( isEmpty( cellToExpand ) ) {\n\t\t\twriter.remove( writer.createRangeIn( cellToExpand ) );\n\t\t}\n\n\t\twriter.move( writer.createRangeIn( cellToRemove ), writer.createPositionAt( cellToExpand, 'end' ) );\n\t}\n\n\t// Remove merged table cell.\n\twriter.remove( cellToRemove );\n}\n\n/**\n * Checks if the passed table cell contains an empty paragraph.\n */\nfunction isEmpty( tableCell: Element ): boolean {\n\tconst firstTableChild = tableCell.getChild( 0 ) as Element;\n\n\treturn tableCell.childCount == 1 && firstTableChild.is( 'element', 'paragraph' ) && firstTableChild.isEmpty;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/commands/removerowcommand\n */\n\nimport { Command } from 'ckeditor5/src/core';\nimport type { Element, Node } from 'ckeditor5/src/engine';\nimport type TableUtils from '../tableutils';\n\n/**\n * The remove row command.\n *\n * The command is registered by {@link module:table/tableediting~TableEditing} as the `'removeTableRow'` editor command.\n *\n * To remove the row containing the selected cell, execute the command:\n *\n * ```ts\n * editor.execute( 'removeTableRow' );\n * ```\n */\nexport default class RemoveRowCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst selectedCells = tableUtils.getSelectionAffectedTableCells( this.editor.model.document.selection );\n\t\tconst firstCell = selectedCells[ 0 ];\n\n\t\tif ( firstCell ) {\n\t\t\tconst table = firstCell.findAncestor( 'table' )!;\n\t\t\tconst tableRowCount = tableUtils.getRows( table );\n\t\t\tconst lastRowIndex = tableRowCount - 1;\n\n\t\t\tconst selectedRowIndexes = tableUtils.getRowIndexes( selectedCells );\n\n\t\t\tconst areAllRowsSelected = selectedRowIndexes.first === 0 && selectedRowIndexes.last === lastRowIndex;\n\n\t\t\t// Disallow selecting whole table -> delete whole table should be used instead.\n\t\t\tthis.isEnabled = !areAllRowsSelected;\n\t\t} else {\n\t\t\tthis.isEnabled = false;\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst model = this.editor.model;\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\n\t\tconst referenceCells = tableUtils.getSelectionAffectedTableCells( model.document.selection );\n\t\tconst removedRowIndexes = tableUtils.getRowIndexes( referenceCells );\n\n\t\tconst firstCell = referenceCells[ 0 ];\n\t\tconst table = firstCell.findAncestor( 'table' )!;\n\n\t\tconst columnIndexToFocus = tableUtils.getCellLocation( firstCell ).column;\n\n\t\tmodel.change( writer => {\n\t\t\tconst rowsToRemove = removedRowIndexes.last - removedRowIndexes.first + 1;\n\n\t\t\ttableUtils.removeRows( table, {\n\t\t\t\tat: removedRowIndexes.first,\n\t\t\t\trows: rowsToRemove\n\t\t\t} );\n\n\t\t\tconst cellToFocus = getCellToFocus( table, removedRowIndexes.first, columnIndexToFocus, tableUtils.getRows( table ) );\n\n\t\t\twriter.setSelection( writer.createPositionAt( cellToFocus, 0 ) );\n\t\t} );\n\t}\n}\n\n/**\n * Returns a cell that should be focused before removing the row, belonging to the same column as the currently focused cell.\n * - If the row was not the last one, the cell to focus will be in the row that followed it (before removal).\n * - If the row was the last one, the cell to focus will be in the row that preceded it (before removal).\n */\nfunction getCellToFocus( table: Element, removedRowIndex: number, columnToFocus: number, tableRowCount: number ): Node {\n\t// Don't go beyond last row's index.\n\tconst row = table.getChild( Math.min( removedRowIndex, tableRowCount - 1 ) ) as Element;\n\n\t// Default to first table cell.\n\tlet cellToFocus = row.getChild( 0 )!;\n\tlet column = 0;\n\n\tfor ( const tableCell of row.getChildren() ) {\n\t\tif ( column > columnToFocus ) {\n\t\t\treturn cellToFocus;\n\t\t}\n\n\t\tcellToFocus = tableCell;\n\t\tcolumn += parseInt( tableCell.getAttribute( 'colspan' ) as string || '1' );\n\t}\n\n\treturn cellToFocus;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/commands/removecolumncommand\n */\n\nimport { Command } from 'ckeditor5/src/core';\nimport type {\n\tDocumentSelection,\n\tElement,\n\tSelection\n} from 'ckeditor5/src/engine';\n\nimport TableWalker, { type TableSlot } from '../tablewalker';\nimport type TableUtils from '../tableutils';\n\n/**\n * The remove column command.\n *\n * The command is registered by {@link module:table/tableediting~TableEditing} as the `'removeTableColumn'` editor command.\n *\n * To remove the column containing the selected cell, execute the command:\n *\n * ```ts\n * editor.execute( 'removeTableColumn' );\n * ```\n */\nexport default class RemoveColumnCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst selectedCells = tableUtils.getSelectionAffectedTableCells( this.editor.model.document.selection );\n\t\tconst firstCell = selectedCells[ 0 ];\n\n\t\tif ( firstCell ) {\n\t\t\tconst table = firstCell.findAncestor( 'table' )!;\n\t\t\tconst tableColumnCount = tableUtils.getColumns( table );\n\n\t\t\tconst { first, last } = tableUtils.getColumnIndexes( selectedCells );\n\n\t\t\tthis.isEnabled = last - first < ( tableColumnCount - 1 );\n\t\t} else {\n\t\t\tthis.isEnabled = false;\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst [ firstCell, lastCell ] = getBoundaryCells( this.editor.model.document.selection, tableUtils );\n\t\tconst table = firstCell.parent!.parent as Element;\n\n\t\t// Cache the table before removing or updating colspans.\n\t\tconst tableMap = [ ...new TableWalker( table ) ];\n\n\t\t// Store column indexes of removed columns.\n\t\tconst removedColumnIndexes = {\n\t\t\tfirst: tableMap.find( value => value.cell === firstCell )!.column,\n\t\t\tlast: tableMap.find( value => value.cell === lastCell )!.column\n\t\t};\n\n\t\tconst cellToFocus = getCellToFocus( tableMap, firstCell, lastCell, removedColumnIndexes )!;\n\n\t\tthis.editor.model.change( writer => {\n\t\t\tconst columnsToRemove = removedColumnIndexes.last - removedColumnIndexes.first + 1;\n\n\t\t\ttableUtils.removeColumns( table, {\n\t\t\t\tat: removedColumnIndexes.first,\n\t\t\t\tcolumns: columnsToRemove\n\t\t\t} );\n\n\t\t\twriter.setSelection( writer.createPositionAt( cellToFocus, 0 ) );\n\t\t} );\n\t}\n}\n\n/**\n * Returns a proper table cell to focus after removing a column.\n * - selection is on last table cell it will return previous cell.\n */\nfunction getCellToFocus(\n\ttableMap: Array<TableSlot>,\n\tfirstCell: Element,\n\tlastCell: Element,\n\tremovedColumnIndexes: {\n\t\tfirst: number;\n\t\tlast: number;\n\t}\n) {\n\tconst colspan = parseInt( lastCell.getAttribute( 'colspan' ) as string || '1' );\n\n\t// If the table cell is spanned over 2+ columns - it will be truncated so the selection should\n\t// stay in that cell.\n\tif ( colspan > 1 ) {\n\t\treturn lastCell;\n\t}\n\t// Normally, look for the cell in the same row that precedes the first cell to put selection there (\"column on the left\").\n\t// If the deleted column is the first column of the table, there will be no predecessor: use the cell\n\t// from the column that follows then (also in the same row).\n\telse if ( firstCell.previousSibling || lastCell.nextSibling ) {\n\t\treturn lastCell.nextSibling || firstCell.previousSibling;\n\t}\n\t// It can happen that table cells have no siblings in a row, for instance, when there are row spans\n\t// in the table (in the previous row). Then just look for the closest cell that is in a column\n\t// that will not be removed to put the selection there.\n\telse {\n\t\t// Look for any cell in a column that precedes the first removed column.\n\t\tif ( removedColumnIndexes.first ) {\n\t\t\treturn tableMap.reverse().find( ( { column } ) => {\n\t\t\t\treturn column < removedColumnIndexes.first;\n\t\t\t} )!.cell;\n\t\t}\n\t\t// If the first removed column is the first column of the table, then\n\t\t// look for any cell that is in a column that follows the last removed column.\n\t\telse {\n\t\t\treturn tableMap.reverse().find( ( { column } ) => {\n\t\t\t\treturn column > removedColumnIndexes.last;\n\t\t\t} )!.cell;\n\t\t}\n\t}\n}\n\n/**\n * Returns helper object returning the first and the last cell contained in given selection, based on DOM order.\n */\nfunction getBoundaryCells( selection: Selection | DocumentSelection, tableUtils: TableUtils ) {\n\tconst referenceCells = tableUtils.getSelectionAffectedTableCells( selection );\n\tconst firstCell = referenceCells[ 0 ];\n\tconst lastCell = referenceCells.pop()!;\n\n\tconst returnValue = [ firstCell, lastCell ];\n\n\treturn firstCell.isBefore( lastCell ) ? returnValue : returnValue.reverse();\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/commands/setheaderrowcommand\n */\n\nimport { Command } from 'ckeditor5/src/core';\nimport type { Element } from 'ckeditor5/src/engine';\nimport type TableUtils from '../tableutils';\n\nimport { updateNumericAttribute } from '../utils/common';\nimport { getVerticallyOverlappingCells, splitHorizontally } from '../utils/structure';\n\n/**\n * The header row command.\n *\n * The command is registered by {@link module:table/tableediting~TableEditing} as the `'setTableColumnHeader'` editor command.\n *\n * You can make the row containing the selected cell a [header](https://www.w3.org/TR/html50/tabular-data.html#the-th-element) by executing:\n *\n * ```ts\n * editor.execute( 'setTableRowHeader' );\n * ```\n *\n * **Note:** All preceding rows will also become headers. If the current row is already a header, executing this command\n * will make it a regular row back again (including the following rows).\n */\nexport default class SetHeaderRowCommand extends Command {\n\t/**\n\t * Flag indicating whether the command is active. The command is active when the\n\t * {@link module:engine/model/selection~Selection} is in a header row.\n\t *\n\t * @observable\n\t */\n\tpublic declare value: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst model = this.editor.model;\n\t\tconst selectedCells = tableUtils.getSelectionAffectedTableCells( model.document.selection );\n\t\tconst isInTable = selectedCells.length > 0;\n\n\t\tthis.isEnabled = isInTable;\n\t\tthis.value = isInTable && selectedCells.every( cell => this._isInHeading( cell, cell.parent!.parent as Element ) );\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * When the selection is in a non-header row, the command will set the `headingRows` table attribute to cover that row.\n\t *\n\t * When the selection is already in a header row, it will set `headingRows` so the heading section will end before that row.\n\t *\n\t * @fires execute\n\t * @param options.forceValue If set, the command will set (`true`) or unset (`false`) the header rows according to\n\t * the `forceValue` parameter instead of the current model state.\n\t */\n\tpublic override execute( options: { forceValue?: boolean } = {} ): void {\n\t\tif ( options.forceValue === this.value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst model = this.editor.model;\n\n\t\tconst selectedCells = tableUtils.getSelectionAffectedTableCells( model.document.selection );\n\t\tconst table = selectedCells[ 0 ].findAncestor( 'table' )!;\n\n\t\tconst { first, last } = tableUtils.getRowIndexes( selectedCells );\n\t\tconst headingRowsToSet = this.value ? first : last + 1;\n\t\tconst currentHeadingRows = table.getAttribute( 'headingRows' ) as number || 0;\n\n\t\tmodel.change( writer => {\n\t\t\tif ( headingRowsToSet ) {\n\t\t\t\t// Changing heading rows requires to check if any of a heading cell is overlapping vertically the table head.\n\t\t\t\t// Any table cell that has a rowspan attribute > 1 will not exceed the table head so we need to fix it in rows below.\n\t\t\t\tconst startRow = headingRowsToSet > currentHeadingRows ? currentHeadingRows : 0;\n\t\t\t\tconst overlappingCells = getVerticallyOverlappingCells( table, headingRowsToSet, startRow );\n\n\t\t\t\tfor ( const { cell } of overlappingCells ) {\n\t\t\t\t\tsplitHorizontally( cell, headingRowsToSet, writer );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tupdateNumericAttribute( 'headingRows', headingRowsToSet, table, writer, 0 );\n\t\t} );\n\t}\n\n\t/**\n\t * Checks if a table cell is in the heading section.\n\t */\n\tprivate _isInHeading( tableCell: Element, table: Element ): boolean {\n\t\tconst headingRows = parseInt( table.getAttribute( 'headingRows' ) as string || '0' );\n\n\t\treturn !!headingRows && ( tableCell.parent as Element ).index! < headingRows;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/commands/setheadercolumncommand\n */\n\nimport { Command } from 'ckeditor5/src/core';\nimport type TableUtils from '../tableutils';\n\nimport {\n\tisHeadingColumnCell,\n\tupdateNumericAttribute\n} from '../utils/common';\nimport { getHorizontallyOverlappingCells, splitVertically } from '../utils/structure';\n\n/**\n * The header column command.\n *\n * The command is registered by {@link module:table/tableediting~TableEditing} as the `'setTableColumnHeader'` editor command.\n *\n * You can make the column containing the selected cell a [header](https://www.w3.org/TR/html50/tabular-data.html#the-th-element)\n * by executing:\n *\n * ```ts\n * editor.execute( 'setTableColumnHeader' );\n * ```\n *\n * **Note:** All preceding columns will also become headers. If the current column is already a header, executing this command\n * will make it a regular column back again (including the following columns).\n */\nexport default class SetHeaderColumnCommand extends Command {\n\t/**\n\t * Flag indicating whether the command is active. The command is active when the\n\t * {@link module:engine/model/selection~Selection} is in a header column.\n\t *\n\t * @observable\n\t */\n\tpublic declare value: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\n\t\tconst selectedCells = tableUtils.getSelectionAffectedTableCells( model.document.selection );\n\t\tconst isInTable = selectedCells.length > 0;\n\n\t\tthis.isEnabled = isInTable;\n\t\tthis.value = isInTable && selectedCells.every( cell => isHeadingColumnCell( tableUtils, cell ) );\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * When the selection is in a non-header column, the command will set the `headingColumns` table attribute to cover that column.\n\t *\n\t * When the selection is already in a header column, it will set `headingColumns` so the heading section will end before that column.\n\t *\n\t * @fires execute\n\t * @param options.forceValue If set, the command will set (`true`) or unset (`false`) the header columns according to\n\t * the `forceValue` parameter instead of the current model state.\n\t */\n\tpublic override execute( options: { forceValue?: boolean } = {} ): void {\n\t\tif ( options.forceValue === this.value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst model = this.editor.model;\n\t\tconst selectedCells = tableUtils.getSelectionAffectedTableCells( model.document.selection );\n\t\tconst table = selectedCells[ 0 ].findAncestor( 'table' )!;\n\n\t\tconst { first, last } = tableUtils.getColumnIndexes( selectedCells );\n\t\tconst headingColumnsToSet = this.value ? first : last + 1;\n\n\t\tmodel.change( writer => {\n\t\t\tif ( headingColumnsToSet ) {\n\t\t\t\t// Changing heading columns requires to check if any of a heading cell is overlapping horizontally the table head.\n\t\t\t\t// Any table cell that has a colspan attribute > 1 will not exceed the table head so we need to fix it in columns before.\n\t\t\t\tconst overlappingCells = getHorizontallyOverlappingCells( table, headingColumnsToSet );\n\n\t\t\t\tfor ( const { cell, column } of overlappingCells ) {\n\t\t\t\t\tsplitVertically( cell, column, headingColumnsToSet, writer );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tupdateNumericAttribute( 'headingColumns', headingColumnsToSet, table, writer, 0 );\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableutils\n */\n\nimport { CKEditorError } from 'ckeditor5/src/utils';\nimport { Plugin } from 'ckeditor5/src/core';\nimport type {\n\tDocumentSelection,\n\tElement,\n\tNode,\n\tPosition,\n\tRange,\n\tSelection,\n\tWriter\n} from 'ckeditor5/src/engine';\n\nimport TableWalker, { type TableWalkerOptions } from './tablewalker';\nimport { createEmptyTableCell, updateNumericAttribute } from './utils/common';\nimport { removeEmptyColumns, removeEmptyRows } from './utils/structure';\n\ntype Cell = { cell: Element; rowspan: number };\ntype CellsToMove = Map<number, Cell>;\ntype CellsToTrim = Array<Cell>;\n\ntype IndexesObject = { first: number; last: number };\n\n/**\n * The table utilities plugin.\n */\nexport default class TableUtils extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableUtils' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tthis.decorate( 'insertColumns' );\n\t\tthis.decorate( 'insertRows' );\n\t}\n\n\t/**\n\t * Returns the table cell location as an object with table row and table column indexes.\n\t *\n\t * For instance, in the table below:\n\t *\n\t * 0 1 2 3\n\t * +---+---+---+---+\n\t * 0 | a | b | c |\n\t * + + +---+\n\t * 1 | | | d |\n\t * +---+---+ +---+\n\t * 2 | e | | f |\n\t * +---+---+---+---+\n\t *\n\t * the method will return:\n\t *\n\t * ```ts\n\t * const cellA = table.getNodeByPath( [ 0, 0 ] );\n\t * editor.plugins.get( 'TableUtils' ).getCellLocation( cellA );\n\t * // will return { row: 0, column: 0 }\n\t *\n\t * const cellD = table.getNodeByPath( [ 1, 0 ] );\n\t * editor.plugins.get( 'TableUtils' ).getCellLocation( cellD );\n\t * // will return { row: 1, column: 3 }\n\t * ```\n\t *\n\t * @returns Returns a `{row, column}` object.\n\t */\n\tpublic getCellLocation( tableCell: Element ): { row: number; column: number } {\n\t\tconst tableRow = tableCell.parent!;\n\t\tconst table = tableRow.parent as Element;\n\n\t\tconst rowIndex = table.getChildIndex( tableRow as Node );\n\n\t\tconst tableWalker = new TableWalker( table, { row: rowIndex } );\n\n\t\tfor ( const { cell, row, column } of tableWalker ) {\n\t\t\tif ( cell === tableCell ) {\n\t\t\t\treturn { row, column };\n\t\t\t}\n\t\t}\n\n\t\t// Should be unreachable code.\n\t\t/* istanbul ignore next -- @preserve */\n\t\treturn undefined as any;\n\t}\n\n\t/**\n\t * Creates an empty table with a proper structure. The table needs to be inserted into the model,\n\t * for example, by using the {@link module:engine/model/model~Model#insertContent} function.\n\t *\n\t * ```ts\n\t * model.change( ( writer ) => {\n\t * // Create a table of 2 rows and 7 columns:\n\t * const table = tableUtils.createTable( writer, { rows: 2, columns: 7 } );\n\t *\n\t * // Insert a table to the model at the best position taking the current selection:\n\t * model.insertContent( table );\n\t * }\n\t * ```\n\t *\n\t * @param writer The model writer.\n\t * @param options.rows The number of rows to create. Default value is 2.\n\t * @param options.columns The number of columns to create. Default value is 2.\n\t * @param options.headingRows The number of heading rows. Default value is 0.\n\t * @param options.headingColumns The number of heading columns. Default value is 0.\n\t * @returns The created table element.\n\t */\n\tpublic createTable(\n\t\twriter: Writer,\n\t\toptions: {\n\t\t\trows?: number;\n\t\t\tcolumns?: number;\n\t\t\theadingRows?: number;\n\t\t\theadingColumns?: number;\n\t\t}\n\t): Element {\n\t\tconst table = writer.createElement( 'table' );\n\n\t\tconst rows = options.rows || 2;\n\t\tconst columns = options.columns || 2;\n\n\t\tcreateEmptyRows( writer, table, 0, rows, columns );\n\n\t\tif ( options.headingRows ) {\n\t\t\tupdateNumericAttribute( 'headingRows', Math.min( options.headingRows, rows ), table, writer, 0 );\n\t\t}\n\n\t\tif ( options.headingColumns ) {\n\t\t\tupdateNumericAttribute( 'headingColumns', Math.min( options.headingColumns, columns ), table, writer, 0 );\n\t\t}\n\n\t\treturn table;\n\t}\n\n\t/**\n\t * Inserts rows into a table.\n\t *\n\t * ```ts\n\t * editor.plugins.get( 'TableUtils' ).insertRows( table, { at: 1, rows: 2 } );\n\t * ```\n\t *\n\t * Assuming the table on the left, the above code will transform it to the table on the right:\n\t *\n\t * row index\n\t * 0 +---+---+---+ `at` = 1, +---+---+---+ 0\n\t * | a | b | c | `rows` = 2, | a | b | c |\n\t * 1 + +---+---+ <-- insert here + +---+---+ 1\n\t * | | d | e | | | | |\n\t * 2 + +---+---+ will give: + +---+---+ 2\n\t * | | f | g | | | | |\n\t * 3 +---+---+---+ + +---+---+ 3\n\t * | | d | e |\n\t * + +---+---+ 4\n\t * + + f | g |\n\t * +---+---+---+ 5\n\t *\n\t * @param table The table model element where the rows will be inserted.\n\t * @param options.at The row index at which the rows will be inserted. Default value is 0.\n\t * @param options.rows The number of rows to insert. Default value is 1.\n\t * @param options.copyStructureFromAbove The flag for copying row structure. Note that\n\t * the row structure will not be copied if this option is not provided.\n\t */\n\tpublic insertRows( table: Element, options: { at?: number; rows?: number; copyStructureFromAbove?: boolean } = {} ): void {\n\t\tconst model = this.editor.model;\n\n\t\tconst insertAt = options.at || 0;\n\t\tconst rowsToInsert = options.rows || 1;\n\t\tconst isCopyStructure = options.copyStructureFromAbove !== undefined;\n\t\tconst copyStructureFrom = options.copyStructureFromAbove ? insertAt - 1 : insertAt;\n\n\t\tconst rows = this.getRows( table );\n\t\tconst columns = this.getColumns( table );\n\n\t\tif ( insertAt > rows ) {\n\t\t\t/**\n\t\t\t * The `options.at` points at a row position that does not exist.\n\t\t\t *\n\t\t\t * @error tableutils-insertrows-insert-out-of-range\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'tableutils-insertrows-insert-out-of-range',\n\t\t\t\tthis,\n\t\t\t\t{ options }\n\t\t\t);\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\tconst headingRows = table.getAttribute( 'headingRows' ) as number || 0;\n\n\t\t\t// Inserting rows inside heading section requires to update `headingRows` attribute as the heading section will grow.\n\t\t\tif ( headingRows > insertAt ) {\n\t\t\t\tupdateNumericAttribute( 'headingRows', headingRows + rowsToInsert, table, writer, 0 );\n\t\t\t}\n\n\t\t\t// Inserting at the end or at the beginning of a table doesn't require to calculate anything special.\n\t\t\tif ( !isCopyStructure && ( insertAt === 0 || insertAt === rows ) ) {\n\t\t\t\tcreateEmptyRows( writer, table, insertAt, rowsToInsert, columns );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Iterate over all the rows above the inserted rows in order to check for the row-spanned cells.\n\t\t\tconst walkerEndRow = isCopyStructure ? Math.max( insertAt, copyStructureFrom ) : insertAt;\n\t\t\tconst tableIterator = new TableWalker( table, { endRow: walkerEndRow } );\n\n\t\t\t// Store spans of the reference row to reproduce it's structure. This array is column number indexed.\n\t\t\tconst rowColSpansMap = new Array( columns ).fill( 1 );\n\n\t\t\tfor ( const { row, column, cellHeight, cellWidth, cell } of tableIterator ) {\n\t\t\t\tconst lastCellRow = row + cellHeight - 1;\n\n\t\t\t\tconst isOverlappingInsertedRow = row < insertAt && insertAt <= lastCellRow;\n\t\t\t\tconst isReferenceRow = row <= copyStructureFrom && copyStructureFrom <= lastCellRow;\n\n\t\t\t\t// If the cell is row-spanned and overlaps the inserted row, then reserve space for it in the row map.\n\t\t\t\tif ( isOverlappingInsertedRow ) {\n\t\t\t\t\t// This cell overlaps the inserted rows so we need to expand it further.\n\t\t\t\t\twriter.setAttribute( 'rowspan', cellHeight + rowsToInsert, cell );\n\n\t\t\t\t\t// Mark this cell with negative number to indicate how many cells should be skipped when adding the new cells.\n\t\t\t\t\trowColSpansMap[ column ] = -cellWidth;\n\t\t\t\t}\n\t\t\t\t// Store the colspan from reference row.\n\t\t\t\telse if ( isCopyStructure && isReferenceRow ) {\n\t\t\t\t\trowColSpansMap[ column ] = cellWidth;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( let rowIndex = 0; rowIndex < rowsToInsert; rowIndex++ ) {\n\t\t\t\tconst tableRow = writer.createElement( 'tableRow' );\n\n\t\t\t\twriter.insert( tableRow, table, insertAt );\n\n\t\t\t\tfor ( let cellIndex = 0; cellIndex < rowColSpansMap.length; cellIndex++ ) {\n\t\t\t\t\tconst colspan = rowColSpansMap[ cellIndex ];\n\t\t\t\t\tconst insertPosition = writer.createPositionAt( tableRow, 'end' );\n\n\t\t\t\t\t// Insert the empty cell only if this slot is not row-spanned from any other cell.\n\t\t\t\t\tif ( colspan > 0 ) {\n\t\t\t\t\t\tcreateEmptyTableCell( writer, insertPosition, colspan > 1 ? { colspan } : undefined );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Skip the col-spanned slots, there won't be any cells.\n\t\t\t\t\tcellIndex += Math.abs( colspan ) - 1;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Inserts columns into a table.\n\t *\n\t * ```ts\n\t * editor.plugins.get( 'TableUtils' ).insertColumns( table, { at: 1, columns: 2 } );\n\t * ```\n\t *\n\t * Assuming the table on the left, the above code will transform it to the table on the right:\n\t *\n\t * 0 1 2 3 0 1 2 3 4 5\n\t * +---+---+---+ +---+---+---+---+---+\n\t * | a | b | | a | b |\n\t * + +---+ + +---+\n\t * | | c | | | c |\n\t * +---+---+---+ will give: +---+---+---+---+---+\n\t * | d | e | f | | d | | | e | f |\n\t * +---+ +---+ +---+---+---+ +---+\n\t * | g | | h | | g | | | | h |\n\t * +---+---+---+ +---+---+---+---+---+\n\t * | i | | i |\n\t * +---+---+---+ +---+---+---+---+---+\n\t * ^---- insert here, `at` = 1, `columns` = 2\n\t *\n\t * @param table The table model element where the columns will be inserted.\n\t * @param options.at The column index at which the columns will be inserted. Default value is 0.\n\t * @param options.columns The number of columns to insert. Default value is 1.\n\t */\n\tpublic insertColumns( table: Element, options: { at?: number; columns?: number } = {} ): void {\n\t\tconst model = this.editor.model;\n\n\t\tconst insertAt = options.at || 0;\n\t\tconst columnsToInsert = options.columns || 1;\n\n\t\tmodel.change( writer => {\n\t\t\tconst headingColumns = table.getAttribute( 'headingColumns' ) as number;\n\n\t\t\t// Inserting columns inside heading section requires to update `headingColumns` attribute as the heading section will grow.\n\t\t\tif ( insertAt < headingColumns ) {\n\t\t\t\twriter.setAttribute( 'headingColumns', headingColumns + columnsToInsert, table );\n\t\t\t}\n\n\t\t\tconst tableColumns = this.getColumns( table );\n\n\t\t\t// Inserting at the end and at the beginning of a table doesn't require to calculate anything special.\n\t\t\tif ( insertAt === 0 || tableColumns === insertAt ) {\n\t\t\t\tfor ( const tableRow of table.getChildren() ) {\n\t\t\t\t\t// Ignore non-row elements inside the table (e.g. caption).\n\t\t\t\t\tif ( !tableRow.is( 'element', 'tableRow' ) ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tcreateCells( columnsToInsert, writer, writer.createPositionAt( tableRow, insertAt ? 'end' : 0 ) );\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst tableWalker = new TableWalker( table, { column: insertAt, includeAllSlots: true } );\n\n\t\t\tfor ( const tableSlot of tableWalker ) {\n\t\t\t\tconst { row, cell, cellAnchorColumn, cellAnchorRow, cellWidth, cellHeight } = tableSlot;\n\n\t\t\t\t// When iterating over column the table walker outputs either:\n\t\t\t\t// - cells at given column index (cell \"e\" from method docs),\n\t\t\t\t// - spanned columns (spanned cell from row between cells \"g\" and \"h\" - spanned by \"e\", only if `includeAllSlots: true`),\n\t\t\t\t// - or a cell from the same row which spans over this column (cell \"a\").\n\n\t\t\t\tif ( cellAnchorColumn < insertAt ) {\n\t\t\t\t\t// If cell is anchored in previous column, it is a cell that spans over an inserted column (cell \"a\" & \"i\").\n\t\t\t\t\t// For such cells expand them by a number of columns inserted.\n\t\t\t\t\twriter.setAttribute( 'colspan', cellWidth + columnsToInsert, cell );\n\n\t\t\t\t\t// This cell will overlap cells in rows below so skip them (because of `includeAllSlots` option) - (cell \"a\")\n\t\t\t\t\tconst lastCellRow = cellAnchorRow + cellHeight - 1;\n\n\t\t\t\t\tfor ( let i = row; i <= lastCellRow; i++ ) {\n\t\t\t\t\t\ttableWalker.skipRow( i );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// It's either cell at this column index or spanned cell by a row-spanned cell from row above.\n\t\t\t\t\t// In table above it's cell \"e\" and a spanned position from row below (empty cell between cells \"g\" and \"h\")\n\t\t\t\t\tcreateCells( columnsToInsert, writer, tableSlot.getPositionBefore() );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Removes rows from the given `table`.\n\t *\n\t * This method re-calculates the table geometry including `rowspan` attribute of table cells overlapping removed rows\n\t * and table headings values.\n\t *\n\t * ```ts\n\t * editor.plugins.get( 'TableUtils' ).removeRows( table, { at: 1, rows: 2 } );\n\t * ```\n\t *\n\t * Executing the above code in the context of the table on the left will transform its structure as presented on the right:\n\t *\n\t * row index\n\t * ┌───┬───┬───┐ `at` = 1 ┌───┬───┬───┐\n\t * 0 │ a │ b │ c │ `rows` = 2 │ a │ b │ c │ 0\n\t * │ ├───┼───┤ │ ├───┼───┤\n\t * 1 │ │ d │ e │ <-- remove from here │ │ d │ g │ 1\n\t * │ │ ├───┤ will give: ├───┼───┼───┤\n\t * 2 │ │ │ f │ │ h │ i │ j │ 2\n\t * │ │ ├───┤ └───┴───┴───┘\n\t * 3 │ │ │ g │\n\t * ├───┼───┼───┤\n\t * 4 │ h │ i │ j │\n\t * └───┴───┴───┘\n\t *\n\t * @param options.at The row index at which the removing rows will start.\n\t * @param options.rows The number of rows to remove. Default value is 1.\n\t */\n\tpublic removeRows( table: Element, options: { at: number; rows?: number } ): void {\n\t\tconst model = this.editor.model;\n\n\t\tconst rowsToRemove = options.rows || 1;\n\t\tconst rowCount = this.getRows( table );\n\t\tconst first = options.at;\n\t\tconst last = first + rowsToRemove - 1;\n\n\t\tif ( last > rowCount - 1 ) {\n\t\t\t/**\n\t\t\t * The `options.at` param must point at existing row and `options.rows` must not exceed the rows in the table.\n\t\t\t *\n\t\t\t * @error tableutils-removerows-row-index-out-of-range\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'tableutils-removerows-row-index-out-of-range',\n\t\t\t\tthis,\n\t\t\t\t{ table, options }\n\t\t\t);\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\tconst indexesObject = { first, last };\n\n\t\t\t// Removing rows from the table require that most calculations to be done prior to changing table structure.\n\t\t\t// Preparations must be done in the same enqueueChange callback to use the current table structure.\n\n\t\t\t// 1. Preparation - get row-spanned cells that have to be modified after removing rows.\n\t\t\tconst { cellsToMove, cellsToTrim } = getCellsToMoveAndTrimOnRemoveRow( table, indexesObject );\n\n\t\t\t// 2. Execution\n\n\t\t\t// 2a. Move cells from removed rows that extends over a removed section - must be done before removing rows.\n\t\t\t// This will fill any gaps in a rows below that previously were empty because of row-spanned cells.\n\t\t\tif ( cellsToMove.size ) {\n\t\t\t\tconst rowAfterRemovedSection = last + 1;\n\t\t\t\tmoveCellsToRow( table, rowAfterRemovedSection, cellsToMove, writer );\n\t\t\t}\n\n\t\t\t// 2b. Remove all required rows.\n\t\t\tfor ( let i = last; i >= first; i-- ) {\n\t\t\t\twriter.remove( table.getChild( i )! );\n\t\t\t}\n\n\t\t\t// 2c. Update cells from rows above that overlap removed section. Similar to step 2 but does not involve moving cells.\n\t\t\tfor ( const { rowspan, cell } of cellsToTrim ) {\n\t\t\t\tupdateNumericAttribute( 'rowspan', rowspan, cell, writer );\n\t\t\t}\n\n\t\t\t// 2d. Adjust heading rows if removed rows were in a heading section.\n\t\t\tupdateHeadingRows( table, indexesObject, writer );\n\n\t\t\t// 2e. Remove empty columns (without anchored cells) if there are any.\n\t\t\tif ( !removeEmptyColumns( table, this ) ) {\n\t\t\t\t// If there wasn't any empty columns then we still need to check if this wasn't called\n\t\t\t\t// because of cleaning empty rows and we only removed one of them.\n\t\t\t\tremoveEmptyRows( table, this );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Removes columns from the given `table`.\n\t *\n\t * This method re-calculates the table geometry including the `colspan` attribute of table cells overlapping removed columns\n\t * and table headings values.\n\t *\n\t * ```ts\n\t * editor.plugins.get( 'TableUtils' ).removeColumns( table, { at: 1, columns: 2 } );\n\t * ```\n\t *\n\t * Executing the above code in the context of the table on the left will transform its structure as presented on the right:\n\t *\n\t * 0 1 2 3 4 0 1 2\n\t * ┌───────────────┬───┐ ┌───────┬───┐\n\t * │ a │ b │ │ a │ b │\n\t * │ ├───┤ │ ├───┤\n\t * │ │ c │ │ │ c │\n\t * ├───┬───┬───┬───┼───┤ will give: ├───┬───┼───┤\n\t * │ d │ e │ f │ g │ h │ │ d │ g │ h │\n\t * ├───┼───┼───┤ ├───┤ ├───┤ ├───┤\n\t * │ i │ j │ k │ │ l │ │ i │ │ l │\n\t * ├───┴───┴───┴───┴───┤ ├───┴───┴───┤\n\t * │ m │ │ m │\n\t * └───────────────────┘ └───────────┘\n\t * ^---- remove from here, `at` = 1, `columns` = 2\n\t *\n\t * @param options.at The row index at which the removing columns will start.\n\t * @param options.columns The number of columns to remove.\n\t */\n\tpublic removeColumns( table: Element, options: { at: number; columns?: number } ): void {\n\t\tconst model = this.editor.model;\n\t\tconst first = options.at;\n\t\tconst columnsToRemove = options.columns || 1;\n\t\tconst last = options.at + columnsToRemove - 1;\n\n\t\tmodel.change( writer => {\n\t\t\tadjustHeadingColumns( table, { first, last }, writer );\n\n\t\t\tfor ( let removedColumnIndex = last; removedColumnIndex >= first; removedColumnIndex-- ) {\n\t\t\t\tfor ( const { cell, column, cellWidth } of [ ...new TableWalker( table ) ] ) {\n\t\t\t\t\t// If colspaned cell overlaps removed column decrease its span.\n\t\t\t\t\tif ( column <= removedColumnIndex && cellWidth > 1 && column + cellWidth > removedColumnIndex ) {\n\t\t\t\t\t\tupdateNumericAttribute( 'colspan', cellWidth - 1, cell, writer );\n\t\t\t\t\t} else if ( column === removedColumnIndex ) {\n\t\t\t\t\t\t// The cell in removed column has colspan of 1.\n\t\t\t\t\t\twriter.remove( cell );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove empty rows that could appear after removing columns.\n\t\t\tif ( !removeEmptyRows( table, this ) ) {\n\t\t\t\t// If there wasn't any empty rows then we still need to check if this wasn't called\n\t\t\t\t// because of cleaning empty columns and we only removed one of them.\n\t\t\t\tremoveEmptyColumns( table, this );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Divides a table cell vertically into several ones.\n\t *\n\t * The cell will be visually split into more cells by updating colspans of other cells in a column\n\t * and inserting cells (columns) after that cell.\n\t *\n\t * In the table below, if cell \"a\" is split into 3 cells:\n\t *\n\t * +---+---+---+\n\t * | a | b | c |\n\t * +---+---+---+\n\t * | d | e | f |\n\t * +---+---+---+\n\t *\n\t * it will result in the table below:\n\t *\n\t * +---+---+---+---+---+\n\t * | a | | | b | c |\n\t * +---+---+---+---+---+\n\t * | d | e | f |\n\t * +---+---+---+---+---+\n\t *\n\t * So cell \"d\" will get its `colspan` updated to `3` and 2 cells will be added (2 columns will be created).\n\t *\n\t * Splitting a cell that already has a `colspan` attribute set will distribute the cell `colspan` evenly and the remainder\n\t * will be left to the original cell:\n\t *\n\t * +---+---+---+\n\t * | a |\n\t * +---+---+---+\n\t * | b | c | d |\n\t * +---+---+---+\n\t *\n\t * Splitting cell \"a\" with `colspan=3` into 2 cells will create 1 cell with a `colspan=a` and cell \"a\" that will have `colspan=2`:\n\t *\n\t * +---+---+---+\n\t * | a | |\n\t * +---+---+---+\n\t * | b | c | d |\n\t * +---+---+---+\n\t */\n\tpublic splitCellVertically( tableCell: Element, numberOfCells = 2 ): void {\n\t\tconst model = this.editor.model;\n\t\tconst tableRow = tableCell.parent!;\n\t\tconst table = tableRow.parent as Element;\n\n\t\tconst rowspan = parseInt( tableCell.getAttribute( 'rowspan' ) as string || '1' );\n\t\tconst colspan = parseInt( tableCell.getAttribute( 'colspan' ) as string || '1' );\n\n\t\tmodel.change( writer => {\n\t\t\t// First check - the cell spans over multiple rows so before doing anything else just split this cell.\n\t\t\tif ( colspan > 1 ) {\n\t\t\t\t// Get spans of new (inserted) cells and span to update of split cell.\n\t\t\t\tconst { newCellsSpan, updatedSpan } = breakSpanEvenly( colspan, numberOfCells );\n\n\t\t\t\tupdateNumericAttribute( 'colspan', updatedSpan, tableCell, writer );\n\n\t\t\t\t// Each inserted cell will have the same attributes:\n\t\t\t\tconst newCellsAttributes: { colspan?: number; rowspan?: number } = {};\n\n\t\t\t\t// Do not store default value in the model.\n\t\t\t\tif ( newCellsSpan > 1 ) {\n\t\t\t\t\tnewCellsAttributes.colspan = newCellsSpan;\n\t\t\t\t}\n\n\t\t\t\t// Copy rowspan of split cell.\n\t\t\t\tif ( rowspan > 1 ) {\n\t\t\t\t\tnewCellsAttributes.rowspan = rowspan;\n\t\t\t\t}\n\n\t\t\t\tconst cellsToInsert = colspan > numberOfCells ? numberOfCells - 1 : colspan - 1;\n\t\t\t\tcreateCells( cellsToInsert, writer, writer.createPositionAfter( tableCell ), newCellsAttributes );\n\t\t\t}\n\n\t\t\t// Second check - the cell has colspan of 1 or we need to create more cells then the currently one spans over.\n\t\t\tif ( colspan < numberOfCells ) {\n\t\t\t\tconst cellsToInsert = numberOfCells - colspan;\n\n\t\t\t\t// First step: expand cells on the same column as split cell.\n\t\t\t\tconst tableMap = [ ...new TableWalker( table ) ];\n\n\t\t\t\t// Get the column index of split cell.\n\t\t\t\tconst { column: splitCellColumn } = tableMap.find( ( { cell } ) => cell === tableCell )!;\n\n\t\t\t\t// Find cells which needs to be expanded vertically - those on the same column or those that spans over split cell's column.\n\t\t\t\tconst cellsToUpdate = tableMap.filter( ( { cell, cellWidth, column } ) => {\n\t\t\t\t\tconst isOnSameColumn = cell !== tableCell && column === splitCellColumn;\n\t\t\t\t\tconst spansOverColumn = ( column < splitCellColumn && column + cellWidth > splitCellColumn );\n\n\t\t\t\t\treturn isOnSameColumn || spansOverColumn;\n\t\t\t\t} );\n\n\t\t\t\t// Expand cells vertically.\n\t\t\t\tfor ( const { cell, cellWidth } of cellsToUpdate ) {\n\t\t\t\t\twriter.setAttribute( 'colspan', cellWidth + cellsToInsert, cell );\n\t\t\t\t}\n\n\t\t\t\t// Second step: create columns after split cell.\n\n\t\t\t\t// Each inserted cell will have the same attributes:\n\t\t\t\tconst newCellsAttributes: { rowspan?: number } = {};\n\n\t\t\t\t// Do not store default value in the model.\n\n\t\t\t\t// Copy rowspan of split cell.\n\t\t\t\tif ( rowspan > 1 ) {\n\t\t\t\t\tnewCellsAttributes.rowspan = rowspan;\n\t\t\t\t}\n\n\t\t\t\tcreateCells( cellsToInsert, writer, writer.createPositionAfter( tableCell ), newCellsAttributes );\n\n\t\t\t\tconst headingColumns = table.getAttribute( 'headingColumns' ) as number || 0;\n\n\t\t\t\t// Update heading section if split cell is in heading section.\n\t\t\t\tif ( headingColumns > splitCellColumn ) {\n\t\t\t\t\tupdateNumericAttribute( 'headingColumns', headingColumns + cellsToInsert, table, writer );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Divides a table cell horizontally into several ones.\n\t *\n\t * The cell will be visually split into more cells by updating rowspans of other cells in the row and inserting rows with a single cell\n\t * below.\n\t *\n\t * If in the table below cell \"b\" is split into 3 cells:\n\t *\n\t * +---+---+---+\n\t * | a | b | c |\n\t * +---+---+---+\n\t * | d | e | f |\n\t * +---+---+---+\n\t *\n\t * It will result in the table below:\n\t *\n\t * +---+---+---+\n\t * | a | b | c |\n\t * + +---+ +\n\t * | | | |\n\t * + +---+ +\n\t * | | | |\n\t * +---+---+---+\n\t * | d | e | f |\n\t * +---+---+---+\n\t *\n\t * So cells \"a\" and \"b\" will get their `rowspan` updated to `3` and 2 rows with a single cell will be added.\n\t *\n\t * Splitting a cell that already has a `rowspan` attribute set will distribute the cell `rowspan` evenly and the remainder\n\t * will be left to the original cell:\n\t *\n\t * +---+---+---+\n\t * | a | b | c |\n\t * + +---+---+\n\t * | | d | e |\n\t * + +---+---+\n\t * | | f | g |\n\t * + +---+---+\n\t * | | h | i |\n\t * +---+---+---+\n\t *\n\t * Splitting cell \"a\" with `rowspan=4` into 3 cells will create 2 cells with a `rowspan=1` and cell \"a\" will have `rowspan=2`:\n\t *\n\t * +---+---+---+\n\t * | a | b | c |\n\t * + +---+---+\n\t * | | d | e |\n\t * +---+---+---+\n\t * | | f | g |\n\t * +---+---+---+\n\t * | | h | i |\n\t * +---+---+---+\n\t */\n\tpublic splitCellHorizontally( tableCell: Element, numberOfCells = 2 ): void {\n\t\tconst model = this.editor.model;\n\n\t\tconst tableRow = tableCell.parent as Node;\n\t\tconst table = tableRow.parent! as Element;\n\t\tconst splitCellRow = table.getChildIndex( tableRow )!;\n\n\t\tconst rowspan = parseInt( tableCell.getAttribute( 'rowspan' ) as string || '1' );\n\t\tconst colspan = parseInt( tableCell.getAttribute( 'colspan' ) as string || '1' );\n\n\t\tmodel.change( writer => {\n\t\t\t// First check - the cell spans over multiple rows so before doing anything else just split this cell.\n\t\t\tif ( rowspan > 1 ) {\n\t\t\t\t// Cache table map before updating table.\n\t\t\t\tconst tableMap = [ ...new TableWalker( table, {\n\t\t\t\t\tstartRow: splitCellRow,\n\t\t\t\t\tendRow: splitCellRow + rowspan - 1,\n\t\t\t\t\tincludeAllSlots: true\n\t\t\t\t} ) ];\n\n\t\t\t\t// Get spans of new (inserted) cells and span to update of split cell.\n\t\t\t\tconst { newCellsSpan, updatedSpan } = breakSpanEvenly( rowspan, numberOfCells );\n\n\t\t\t\tupdateNumericAttribute( 'rowspan', updatedSpan, tableCell, writer );\n\n\t\t\t\tconst { column: cellColumn } = tableMap.find( ( { cell } ) => cell === tableCell )!;\n\n\t\t\t\t// Each inserted cell will have the same attributes:\n\t\t\t\tconst newCellsAttributes: { rowspan?: number; colspan?: number } = {};\n\n\t\t\t\t// Do not store default value in the model.\n\t\t\t\tif ( newCellsSpan > 1 ) {\n\t\t\t\t\tnewCellsAttributes.rowspan = newCellsSpan;\n\t\t\t\t}\n\n\t\t\t\t// Copy colspan of split cell.\n\t\t\t\tif ( colspan > 1 ) {\n\t\t\t\t\tnewCellsAttributes.colspan = colspan;\n\t\t\t\t}\n\n\t\t\t\tfor ( const tableSlot of tableMap ) {\n\t\t\t\t\tconst { column, row } = tableSlot;\n\n\t\t\t\t\t// As both newly created cells and the split cell might have rowspan,\n\t\t\t\t\t// the insertion of new cells must go to appropriate rows:\n\t\t\t\t\t//\n\t\t\t\t\t// 1. It's a row after split cell + it's height.\n\t\t\t\t\tconst isAfterSplitCell = row >= splitCellRow + updatedSpan;\n\t\t\t\t\t// 2. Is on the same column.\n\t\t\t\t\tconst isOnSameColumn = column === cellColumn;\n\t\t\t\t\t// 3. And it's row index is after previous cell height.\n\t\t\t\t\tconst isInEvenlySplitRow = ( row + splitCellRow + updatedSpan ) % newCellsSpan === 0;\n\n\t\t\t\t\tif ( isAfterSplitCell && isOnSameColumn && isInEvenlySplitRow ) {\n\t\t\t\t\t\tcreateCells( 1, writer, tableSlot.getPositionBefore(), newCellsAttributes );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Second check - the cell has rowspan of 1 or we need to create more cells than the current cell spans over.\n\t\t\tif ( rowspan < numberOfCells ) {\n\t\t\t\t// We already split the cell in check one so here we split to the remaining number of cells only.\n\t\t\t\tconst cellsToInsert = numberOfCells - rowspan;\n\n\t\t\t\t// This check is needed since we need to check if there are any cells from previous rows than spans over this cell's row.\n\t\t\t\tconst tableMap = [ ...new TableWalker( table, { startRow: 0, endRow: splitCellRow } ) ];\n\n\t\t\t\t// First step: expand cells.\n\t\t\t\tfor ( const { cell, cellHeight, row } of tableMap ) {\n\t\t\t\t\t// Expand rowspan of cells that are either:\n\t\t\t\t\t// - on the same row as current cell,\n\t\t\t\t\t// - or are below split cell row and overlaps that row.\n\t\t\t\t\tif ( cell !== tableCell && row + cellHeight > splitCellRow ) {\n\t\t\t\t\t\tconst rowspanToSet = cellHeight + cellsToInsert;\n\n\t\t\t\t\t\twriter.setAttribute( 'rowspan', rowspanToSet, cell );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Second step: create rows with single cell below split cell.\n\t\t\t\tconst newCellsAttributes: { colspan?: number } = {};\n\n\t\t\t\t// Copy colspan of split cell.\n\t\t\t\tif ( colspan > 1 ) {\n\t\t\t\t\tnewCellsAttributes.colspan = colspan;\n\t\t\t\t}\n\n\t\t\t\tcreateEmptyRows( writer, table, splitCellRow + 1, cellsToInsert, 1, newCellsAttributes );\n\n\t\t\t\t// Update heading section if split cell is in heading section.\n\t\t\t\tconst headingRows = table.getAttribute( 'headingRows' ) as number || 0;\n\n\t\t\t\tif ( headingRows > splitCellRow ) {\n\t\t\t\t\tupdateNumericAttribute( 'headingRows', headingRows + cellsToInsert, table, writer );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Returns the number of columns for a given table.\n\t *\n\t * ```ts\n\t * editor.plugins.get( 'TableUtils' ).getColumns( table );\n\t * ```\n\t *\n\t * @param table The table to analyze.\n\t */\n\tpublic getColumns( table: Element ): number {\n\t\t// Analyze first row only as all the rows should have the same width.\n\t\t// Using the first row without checking if it's a tableRow because we expect\n\t\t// that table will have only tableRow model elements at the beginning.\n\t\tconst row = table.getChild( 0 ) as Element;\n\n\t\treturn [ ...row.getChildren() ].reduce( ( columns, row ) => {\n\t\t\tconst columnWidth = parseInt( row.getAttribute( 'colspan' ) as string || '1' );\n\n\t\t\treturn columns + columnWidth;\n\t\t}, 0 );\n\t}\n\n\t/**\n\t * Returns the number of rows for a given table. Any other element present in the table model is omitted.\n\t *\n\t * ```ts\n\t * editor.plugins.get( 'TableUtils' ).getRows( table );\n\t * ```\n\t *\n\t * @param table The table to analyze.\n\t */\n\tpublic getRows( table: Element ): number {\n\t\t// Rowspan not included due to #6427.\n\t\treturn Array.from( table.getChildren() )\n\t\t\t.reduce( ( rowCount, child ) => child.is( 'element', 'tableRow' ) ? rowCount + 1 : rowCount, 0 );\n\t}\n\n\t/**\n\t * Creates an instance of the table walker.\n\t *\n\t * The table walker iterates internally by traversing the table from row index = 0 and column index = 0.\n\t * It walks row by row and column by column in order to output values defined in the options.\n\t * By default it will output only the locations that are occupied by a cell. To include also spanned rows and columns,\n\t * pass the `includeAllSlots` option.\n\t *\n\t * @internal\n\t * @param table A table over which the walker iterates.\n\t * @param options An object with configuration.\n\t */\n\tpublic createTableWalker( table: Element, options: TableWalkerOptions = {} ): TableWalker {\n\t\treturn new TableWalker( table, options );\n\t}\n\n\t/**\n\t * Returns all model table cells that are fully selected (from the outside)\n\t * within the provided model selection's ranges.\n\t *\n\t * To obtain the cells selected from the inside, use\n\t * {@link #getTableCellsContainingSelection}.\n\t */\n\tpublic getSelectedTableCells( selection: Selection | DocumentSelection ): Array<Element> {\n\t\tconst cells = [];\n\n\t\tfor ( const range of this.sortRanges( selection.getRanges() ) ) {\n\t\t\tconst element = range.getContainedElement();\n\n\t\t\tif ( element && element.is( 'element', 'tableCell' ) ) {\n\t\t\t\tcells.push( element );\n\t\t\t}\n\t\t}\n\n\t\treturn cells;\n\t}\n\n\t/**\n\t * Returns all model table cells that the provided model selection's ranges\n\t * {@link module:engine/model/range~Range#start} inside.\n\t *\n\t * To obtain the cells selected from the outside, use\n\t * {@link #getSelectedTableCells}.\n\t */\n\tpublic getTableCellsContainingSelection( selection: Selection | DocumentSelection ): Array<Element> {\n\t\tconst cells = [];\n\n\t\tfor ( const range of selection.getRanges() ) {\n\t\t\tconst cellWithSelection = range.start.findAncestor( 'tableCell' );\n\n\t\t\tif ( cellWithSelection ) {\n\t\t\t\tcells.push( cellWithSelection );\n\t\t\t}\n\t\t}\n\n\t\treturn cells;\n\t}\n\n\t/**\n\t * Returns all model table cells that are either completely selected\n\t * by selection ranges or host selection range\n\t * {@link module:engine/model/range~Range#start start positions} inside them.\n\t *\n\t * Combines {@link #getTableCellsContainingSelection} and\n\t * {@link #getSelectedTableCells}.\n\t */\n\tpublic getSelectionAffectedTableCells( selection: Selection | DocumentSelection ): Array<Element> {\n\t\tconst selectedCells = this.getSelectedTableCells( selection );\n\n\t\tif ( selectedCells.length ) {\n\t\t\treturn selectedCells;\n\t\t}\n\n\t\treturn this.getTableCellsContainingSelection( selection );\n\t}\n\n\t/**\n\t * Returns an object with the `first` and `last` row index contained in the given `tableCells`.\n\t *\n\t * ```ts\n\t * const selectedTableCells = getSelectedTableCells( editor.model.document.selection );\n\t *\n\t * const { first, last } = getRowIndexes( selectedTableCells );\n\t *\n\t * console.log( `Selected rows: ${ first } to ${ last }` );\n\t * ```\n\t *\n\t * @returns Returns an object with the `first` and `last` table row indexes.\n\t */\n\tpublic getRowIndexes( tableCells: Array<Element> ): IndexesObject {\n\t\tconst indexes = tableCells.map( cell => ( cell.parent as Element ).index! );\n\n\t\treturn this._getFirstLastIndexesObject( indexes );\n\t}\n\n\t/**\n\t * Returns an object with the `first` and `last` column index contained in the given `tableCells`.\n\t *\n\t * ```ts\n\t * const selectedTableCells = getSelectedTableCells( editor.model.document.selection );\n\t *\n\t * const { first, last } = getColumnIndexes( selectedTableCells );\n\t *\n\t * console.log( `Selected columns: ${ first } to ${ last }` );\n\t * ```\n\t *\n\t * @returns Returns an object with the `first` and `last` table column indexes.\n\t */\n\tpublic getColumnIndexes( tableCells: Array<Element> ): IndexesObject {\n\t\tconst table = tableCells[ 0 ].findAncestor( 'table' )!;\n\t\tconst tableMap = [ ...new TableWalker( table ) ];\n\n\t\tconst indexes = tableMap\n\t\t\t.filter( entry => tableCells.includes( entry.cell ) )\n\t\t\t.map( entry => entry.column );\n\n\t\treturn this._getFirstLastIndexesObject( indexes );\n\t}\n\n\t/**\n\t * Checks if the selection contains cells that do not exceed rectangular selection.\n\t *\n\t * In a table below:\n\t *\n\t * ┌───┬───┬───┬───┐\n\t * │ a │ b │ c │ d │\n\t * ├───┴───┼───┤ │\n\t * │ e │ f │ │\n\t * │ ├───┼───┤\n\t * │ │ g │ h │\n\t * └───────┴───┴───┘\n\t *\n\t * Valid selections are these which create a solid rectangle (without gaps), such as:\n\t * - a, b (two horizontal cells)\n\t * - c, f (two vertical cells)\n\t * - a, b, e (cell \"e\" spans over four cells)\n\t * - c, d, f (cell d spans over a cell in the row below)\n\t *\n\t * While an invalid selection would be:\n\t * - a, c (the unselected cell \"b\" creates a gap)\n\t * - f, g, h (cell \"d\" spans over a cell from the row of \"f\" cell - thus creates a gap)\n\t */\n\tpublic isSelectionRectangular( selectedTableCells: Array<Element> ): boolean {\n\t\tif ( selectedTableCells.length < 2 || !this._areCellInTheSameTableSection( selectedTableCells ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// A valid selection is a fully occupied rectangle composed of table cells.\n\t\t// Below we will calculate the area of a selected table cells and the area of valid selection.\n\t\t// The area of a valid selection is defined by top-left and bottom-right cells.\n\t\tconst rows: Set<number> = new Set();\n\t\tconst columns: Set<number> = new Set();\n\n\t\tlet areaOfSelectedCells = 0;\n\n\t\tfor ( const tableCell of selectedTableCells ) {\n\t\t\tconst { row, column } = this.getCellLocation( tableCell );\n\t\t\tconst rowspan = parseInt( tableCell.getAttribute( 'rowspan' ) as string ) || 1;\n\t\t\tconst colspan = parseInt( tableCell.getAttribute( 'colspan' ) as string ) || 1;\n\n\t\t\t// Record row & column indexes of current cell.\n\t\t\trows.add( row );\n\t\t\tcolumns.add( column );\n\n\t\t\t// For cells that spans over multiple rows add also the last row that this cell spans over.\n\t\t\tif ( rowspan > 1 ) {\n\t\t\t\trows.add( row + rowspan - 1 );\n\t\t\t}\n\n\t\t\t// For cells that spans over multiple columns add also the last column that this cell spans over.\n\t\t\tif ( colspan > 1 ) {\n\t\t\t\tcolumns.add( column + colspan - 1 );\n\t\t\t}\n\n\t\t\tareaOfSelectedCells += ( rowspan * colspan );\n\t\t}\n\n\t\t// We can only merge table cells that are in adjacent rows...\n\t\tconst areaOfValidSelection = getBiggestRectangleArea( rows, columns );\n\n\t\treturn areaOfValidSelection == areaOfSelectedCells;\n\t}\n\n\t/**\n\t * Returns array of sorted ranges.\n\t */\n\tpublic sortRanges( ranges: Iterable<Range> ): Array<Range> {\n\t\treturn Array.from( ranges ).sort( compareRangeOrder );\n\t}\n\n\t/**\n\t * Helper method to get an object with `first` and `last` indexes from an unsorted array of indexes.\n\t */\n\tprivate _getFirstLastIndexesObject( indexes: Array<number> ): IndexesObject {\n\t\tconst allIndexesSorted = indexes.sort( ( indexA, indexB ) => indexA - indexB );\n\n\t\tconst first = allIndexesSorted[ 0 ];\n\t\tconst last = allIndexesSorted[ allIndexesSorted.length - 1 ];\n\n\t\treturn { first, last };\n\t}\n\n\t/**\n\t * Checks if the selection does not mix a header (column or row) with other cells.\n\t *\n\t * For instance, in the table below valid selections consist of cells with the same letter only.\n\t * So, a-a (same heading row and column) or d-d (body cells) are valid while c-d or a-b are not.\n\t *\n\t * header columns\n\t * ↓ ↓\n\t * ┌───┬───┬───┬───┐\n\t * │ a │ a │ b │ b │ ← header row\n\t * ├───┼───┼───┼───┤\n\t * │ c │ c │ d │ d │\n\t * ├───┼───┼───┼───┤\n\t * │ c │ c │ d │ d │\n\t * └───┴───┴───┴───┘\n\t */\n\tprivate _areCellInTheSameTableSection( tableCells: Array<Element> ): boolean {\n\t\tconst table = tableCells[ 0 ].findAncestor( 'table' )!;\n\n\t\tconst rowIndexes = this.getRowIndexes( tableCells );\n\t\tconst headingRows = parseInt( table.getAttribute( 'headingRows' ) as string ) || 0;\n\n\t\t// Calculating row indexes is a bit cheaper so if this check fails we can't merge.\n\t\tif ( !this._areIndexesInSameSection( rowIndexes, headingRows ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst columnIndexes = this.getColumnIndexes( tableCells );\n\t\tconst headingColumns = parseInt( table.getAttribute( 'headingColumns' ) as string ) || 0;\n\n\t\t// Similarly cells must be in same column section.\n\t\treturn this._areIndexesInSameSection( columnIndexes, headingColumns );\n\t}\n\n\t/**\n\t * Unified check if table rows/columns indexes are in the same heading/body section.\n\t */\n\tprivate _areIndexesInSameSection( { first, last }: IndexesObject, headingSectionSize: number ): boolean {\n\t\tconst firstCellIsInHeading = first < headingSectionSize;\n\t\tconst lastCellIsInHeading = last < headingSectionSize;\n\n\t\treturn firstCellIsInHeading === lastCellIsInHeading;\n\t}\n}\n\n/**\n * Creates empty rows at the given index in an existing table.\n *\n * @param insertAt The row index of row insertion.\n * @param rows The number of rows to create.\n * @param tableCellToInsert The number of cells to insert in each row.\n */\nfunction createEmptyRows( writer: Writer, table: Element, insertAt: number, rows: number, tableCellToInsert: number, attributes = {} ) {\n\tfor ( let i = 0; i < rows; i++ ) {\n\t\tconst tableRow = writer.createElement( 'tableRow' );\n\n\t\twriter.insert( tableRow, table, insertAt );\n\n\t\tcreateCells( tableCellToInsert, writer, writer.createPositionAt( tableRow, 'end' ), attributes );\n\t}\n}\n\n/**\n * Creates cells at a given position.\n *\n * @param cells The number of cells to create\n */\nfunction createCells( cells: number, writer: Writer, insertPosition: Position, attributes = {} ) {\n\tfor ( let i = 0; i < cells; i++ ) {\n\t\tcreateEmptyTableCell( writer, insertPosition, attributes );\n\t}\n}\n\n/**\n * Evenly distributes the span of a cell to a number of provided cells.\n * The resulting spans will always be integer values.\n *\n * For instance breaking a span of 7 into 3 cells will return:\n *\n * ```ts\n * { newCellsSpan: 2, updatedSpan: 3 }\n * ```\n *\n * as two cells will have a span of 2 and the remainder will go the first cell so its span will change to 3.\n *\n * @param span The span value do break.\n * @param numberOfCells The number of resulting spans.\n */\nfunction breakSpanEvenly( span: number, numberOfCells: number ): { newCellsSpan: number; updatedSpan: number } {\n\tif ( span < numberOfCells ) {\n\t\treturn { newCellsSpan: 1, updatedSpan: 1 };\n\t}\n\n\tconst newCellsSpan = Math.floor( span / numberOfCells );\n\tconst updatedSpan = ( span - newCellsSpan * numberOfCells ) + newCellsSpan;\n\n\treturn { newCellsSpan, updatedSpan };\n}\n\n/**\n * Updates heading columns attribute if removing a row from head section.\n */\nfunction adjustHeadingColumns( table: Element, removedColumnIndexes: IndexesObject, writer: Writer ) {\n\tconst headingColumns = table.getAttribute( 'headingColumns' ) as number || 0;\n\n\tif ( headingColumns && removedColumnIndexes.first < headingColumns ) {\n\t\tconst headingsRemoved = Math.min( headingColumns - 1 /* Other numbers are 0-based */, removedColumnIndexes.last ) -\n\t\t\tremovedColumnIndexes.first + 1;\n\n\t\twriter.setAttribute( 'headingColumns', headingColumns - headingsRemoved, table );\n\t}\n}\n\n/**\n * Calculates a new heading rows value for removing rows from heading section.\n */\nfunction updateHeadingRows( table: Element, { first, last }: IndexesObject, writer: Writer ) {\n\tconst headingRows = table.getAttribute( 'headingRows' ) as number || 0;\n\n\tif ( first < headingRows ) {\n\t\tconst newRows = last < headingRows ? headingRows - ( last - first + 1 ) : first;\n\n\t\tupdateNumericAttribute( 'headingRows', newRows, table, writer, 0 );\n\t}\n}\n\n/**\n * Finds cells that will be:\n * - trimmed - Cells that are \"above\" removed rows sections and overlap the removed section - their rowspan must be trimmed.\n * - moved - Cells from removed rows section might stick out of. These cells are moved to the next row after a removed section.\n *\n * Sample table with overlapping & sticking out cells:\n *\n * +----+----+----+----+----+\n * | 00 | 01 | 02 | 03 | 04 |\n * +----+ + + + +\n * | 10 | | | | |\n * +----+----+ + + +\n * | 20 | 21 | | | | <-- removed row\n * + + +----+ + +\n * | | | 32 | | | <-- removed row\n * +----+ + +----+ +\n * | 40 | | | 43 | |\n * +----+----+----+----+----+\n *\n * In a table above:\n * - cells to trim: '02', '03' & '04'.\n * - cells to move: '21' & '32'.\n */\nfunction getCellsToMoveAndTrimOnRemoveRow( table: Element, { first, last }: IndexesObject ) {\n\tconst cellsToMove: CellsToMove = new Map();\n\tconst cellsToTrim: CellsToTrim = [];\n\n\tfor ( const { row, column, cellHeight, cell } of new TableWalker( table, { endRow: last } ) ) {\n\t\tconst lastRowOfCell = row + cellHeight - 1;\n\n\t\tconst isCellStickingOutFromRemovedRows = row >= first && row <= last && lastRowOfCell > last;\n\n\t\tif ( isCellStickingOutFromRemovedRows ) {\n\t\t\tconst rowspanInRemovedSection = last - row + 1;\n\t\t\tconst rowSpanToSet = cellHeight - rowspanInRemovedSection;\n\n\t\t\tcellsToMove.set( column, {\n\t\t\t\tcell,\n\t\t\t\trowspan: rowSpanToSet\n\t\t\t} );\n\t\t}\n\n\t\tconst isCellOverlappingRemovedRows = row < first && lastRowOfCell >= first;\n\n\t\tif ( isCellOverlappingRemovedRows ) {\n\t\t\tlet rowspanAdjustment;\n\n\t\t\t// Cell fully covers removed section - trim it by removed rows count.\n\t\t\tif ( lastRowOfCell >= last ) {\n\t\t\t\trowspanAdjustment = last - first + 1;\n\t\t\t}\n\t\t\t// Cell partially overlaps removed section - calculate cell's span that is in removed section.\n\t\t\telse {\n\t\t\t\trowspanAdjustment = lastRowOfCell - first + 1;\n\t\t\t}\n\n\t\t\tcellsToTrim.push( {\n\t\t\t\tcell,\n\t\t\t\trowspan: cellHeight - rowspanAdjustment\n\t\t\t} );\n\t\t}\n\t}\n\n\treturn { cellsToMove, cellsToTrim };\n}\n\nfunction moveCellsToRow( table: Element, targetRowIndex: number, cellsToMove: CellsToMove, writer: Writer ) {\n\tconst tableWalker = new TableWalker( table, {\n\t\tincludeAllSlots: true,\n\t\trow: targetRowIndex\n\t} );\n\n\tconst tableRowMap = [ ...tableWalker ];\n\tconst row = table.getChild( targetRowIndex )!;\n\n\tlet previousCell;\n\n\tfor ( const { column, cell, isAnchor } of tableRowMap ) {\n\t\tif ( cellsToMove.has( column ) ) {\n\t\t\tconst { cell: cellToMove, rowspan } = cellsToMove.get( column )!;\n\n\t\t\tconst targetPosition = previousCell ?\n\t\t\t\twriter.createPositionAfter( previousCell ) :\n\t\t\t\twriter.createPositionAt( row, 0 );\n\n\t\t\twriter.move( writer.createRangeOn( cellToMove ), targetPosition );\n\t\t\tupdateNumericAttribute( 'rowspan', rowspan, cellToMove, writer );\n\n\t\t\tpreviousCell = cellToMove;\n\t\t} else if ( isAnchor ) {\n\t\t\t// If cell is spanned then `cell` holds reference to overlapping cell. See ckeditor/ckeditor5#6502.\n\t\t\tpreviousCell = cell;\n\t\t}\n\t}\n}\n\nfunction compareRangeOrder( rangeA: Range, rangeB: Range ) {\n\t// Since table cell ranges are disjoint, it's enough to check their start positions.\n\tconst posA = rangeA.start;\n\tconst posB = rangeB.start;\n\n\t// Checking for equal position (returning 0) is not needed because this would be either:\n\t// a. Intersecting range (not allowed by model)\n\t// b. Collapsed range on the same position (allowed by model but should not happen).\n\treturn posA.isBefore( posB ) ? -1 : 1;\n}\n\n/**\n * Calculates the area of a maximum rectangle that can span over the provided row & column indexes.\n */\nfunction getBiggestRectangleArea( rows: Set<number>, columns: Set<number> ): number {\n\tconst rowsIndexes = Array.from( rows.values() );\n\tconst columnIndexes = Array.from( columns.values() );\n\n\tconst lastRow = Math.max( ...rowsIndexes );\n\tconst firstRow = Math.min( ...rowsIndexes );\n\tconst lastColumn = Math.max( ...columnIndexes );\n\tconst firstColumn = Math.min( ...columnIndexes );\n\n\treturn ( lastRow - firstRow + 1 ) * ( lastColumn - firstColumn + 1 );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/commands/mergecellscommand\n */\n\nimport type {\n\tElement,\n\tWriter\n} from 'ckeditor5/src/engine';\n\nimport { Command } from 'ckeditor5/src/core';\nimport TableUtils from '../tableutils';\nimport { updateNumericAttribute } from '../utils/common';\nimport { removeEmptyRowsColumns } from '../utils/structure';\n\n/**\n * The merge cells command.\n *\n * The command is registered by {@link module:table/tableediting~TableEditing} as the `'mergeTableCells'` editor command.\n *\n * For example, to merge selected table cells:\n *\n * ```ts\n * editor.execute( 'mergeTableCells' );\n * ```\n */\nexport default class MergeCellsCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst tableUtils = this.editor.plugins.get( TableUtils );\n\n\t\tconst selectedTableCells = tableUtils.getSelectedTableCells( this.editor.model.document.selection );\n\t\tthis.isEnabled = tableUtils.isSelectionRectangular( selectedTableCells );\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute(): void {\n\t\tconst model = this.editor.model;\n\t\tconst tableUtils = this.editor.plugins.get( TableUtils );\n\n\t\tmodel.change( writer => {\n\t\t\tconst selectedTableCells = tableUtils.getSelectedTableCells( model.document.selection );\n\n\t\t\t// All cells will be merged into the first one.\n\t\t\tconst firstTableCell = selectedTableCells.shift()!;\n\n\t\t\t// Update target cell dimensions.\n\t\t\tconst { mergeWidth, mergeHeight } = getMergeDimensions( firstTableCell, selectedTableCells, tableUtils );\n\t\t\tupdateNumericAttribute( 'colspan', mergeWidth, firstTableCell, writer );\n\t\t\tupdateNumericAttribute( 'rowspan', mergeHeight, firstTableCell, writer );\n\n\t\t\tfor ( const tableCell of selectedTableCells ) {\n\t\t\t\tmergeTableCells( tableCell, firstTableCell, writer );\n\t\t\t}\n\n\t\t\tconst table = firstTableCell.findAncestor( 'table' )!;\n\n\t\t\t// Remove rows and columns that become empty (have no anchored cells).\n\t\t\tremoveEmptyRowsColumns( table, tableUtils );\n\n\t\t\twriter.setSelection( firstTableCell, 'in' );\n\t\t} );\n\t}\n}\n\n/**\n * Merges two table cells. It will ensure that after merging cells with empty paragraphs the resulting table cell will only have one\n * paragraph. If one of the merged table cells is empty, the merged table cell will have contents of the non-empty table cell.\n * If both are empty, the merged table cell will have only one empty paragraph.\n */\nfunction mergeTableCells( cellBeingMerged: Element, targetCell: Element, writer: Writer ) {\n\tif ( !isEmpty( cellBeingMerged ) ) {\n\t\tif ( isEmpty( targetCell ) ) {\n\t\t\twriter.remove( writer.createRangeIn( targetCell ) );\n\t\t}\n\n\t\twriter.move( writer.createRangeIn( cellBeingMerged ), writer.createPositionAt( targetCell, 'end' ) );\n\t}\n\n\t// Remove merged table cell.\n\twriter.remove( cellBeingMerged );\n}\n\n/**\n * Checks if the passed table cell contains an empty paragraph.\n */\nfunction isEmpty( tableCell: Element ): boolean {\n\tconst firstTableChild = tableCell.getChild( 0 );\n\n\treturn tableCell.childCount == 1 && firstTableChild!.is( 'element', 'paragraph' ) && firstTableChild.isEmpty;\n}\n\nfunction getMergeDimensions( firstTableCell: Element, selectedTableCells: Array<Element>, tableUtils: TableUtils ) {\n\tlet maxWidthOffset = 0;\n\tlet maxHeightOffset = 0;\n\n\tfor ( const tableCell of selectedTableCells ) {\n\t\tconst { row, column } = tableUtils.getCellLocation( tableCell );\n\n\t\tmaxWidthOffset = getMaxOffset( tableCell, column, maxWidthOffset, 'colspan' );\n\t\tmaxHeightOffset = getMaxOffset( tableCell, row, maxHeightOffset, 'rowspan' );\n\t}\n\n\t// Update table cell span attribute and merge set selection on a merged contents.\n\tconst { row: firstCellRow, column: firstCellColumn } = tableUtils.getCellLocation( firstTableCell );\n\n\tconst mergeWidth = maxWidthOffset - firstCellColumn;\n\tconst mergeHeight = maxHeightOffset - firstCellRow;\n\n\treturn { mergeWidth, mergeHeight };\n}\n\nfunction getMaxOffset( tableCell: Element, start: number, currentMaxOffset: number, which: string ) {\n\tconst dimensionValue = parseInt( tableCell.getAttribute( which ) as string || '1' );\n\n\treturn Math.max( currentMaxOffset, start + dimensionValue );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/commands/selectrowcommand\n */\n\nimport { Command, type Editor } from 'ckeditor5/src/core';\nimport type { Range, Element } from 'ckeditor5/src/engine';\nimport type TableUtils from '../tableutils';\n\n/**\n * The select row command.\n *\n * The command is registered by {@link module:table/tableediting~TableEditing} as the `'selectTableRow'` editor command.\n *\n * To select the rows containing the selected cells, execute the command:\n *\n * ```ts\n * editor.execute( 'selectTableRow' );\n * ```\n */\nexport default class SelectRowCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\t// It does not affect data so should be enabled in read-only mode.\n\t\tthis.affectsData = false;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst selectedCells = tableUtils.getSelectionAffectedTableCells( this.editor.model.document.selection );\n\n\t\tthis.isEnabled = selectedCells.length > 0;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst model = this.editor.model;\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst referenceCells = tableUtils.getSelectionAffectedTableCells( model.document.selection );\n\t\tconst rowIndexes = tableUtils.getRowIndexes( referenceCells );\n\n\t\tconst table = referenceCells[ 0 ].findAncestor( 'table' )!;\n\t\tconst rangesToSelect: Array<Range> = [];\n\n\t\tfor ( let rowIndex = rowIndexes.first; rowIndex <= rowIndexes.last; rowIndex++ ) {\n\t\t\tfor ( const cell of ( table.getChild( rowIndex ) as Element ).getChildren() ) {\n\t\t\t\trangesToSelect.push( model.createRangeOn( cell ) );\n\t\t\t}\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\twriter.setSelection( rangesToSelect );\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/commands/selectcolumncommand\n */\n\nimport { Command, type Editor } from 'ckeditor5/src/core';\nimport type { Range } from 'ckeditor5/src/engine';\nimport type TableUtils from '../tableutils';\n\nimport TableWalker from '../tablewalker';\n\n/**\n * The select column command.\n *\n * The command is registered by {@link module:table/tableediting~TableEditing} as the `'selectTableColumn'` editor command.\n *\n * To select the columns containing the selected cells, execute the command:\n *\n * ```ts\n * editor.execute( 'selectTableColumn' );\n * ```\n */\nexport default class SelectColumnCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\t// It does not affect data so should be enabled in read-only mode.\n\t\tthis.affectsData = false;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst selectedCells = tableUtils.getSelectionAffectedTableCells( this.editor.model.document.selection );\n\n\t\tthis.isEnabled = selectedCells.length > 0;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst model = this.editor.model;\n\t\tconst referenceCells = tableUtils.getSelectionAffectedTableCells( model.document.selection );\n\t\tconst firstCell = referenceCells[ 0 ];\n\t\tconst lastCell = referenceCells.pop()!;\n\t\tconst table = firstCell.findAncestor( 'table' )!;\n\n\t\tconst startLocation = tableUtils.getCellLocation( firstCell );\n\t\tconst endLocation = tableUtils.getCellLocation( lastCell );\n\n\t\tconst startColumn = Math.min( startLocation.column, endLocation.column );\n\t\tconst endColumn = Math.max( startLocation.column, endLocation.column );\n\n\t\tconst rangesToSelect: Array<Range> = [];\n\n\t\tfor ( const cellInfo of new TableWalker( table, { startColumn, endColumn } ) ) {\n\t\t\trangesToSelect.push( model.createRangeOn( cellInfo.cell ) );\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\twriter.setSelection( rangesToSelect );\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/converters/table-layout-post-fixer\n */\n\nimport type {\n\tElement,\n\tModel,\n\tWriter,\n\tDiffItem,\n\tDiffItemAttribute\n} from 'ckeditor5/src/engine';\n\nimport TableWalker from './../tablewalker';\nimport { createEmptyTableCell, updateNumericAttribute } from '../utils/common';\n\n/**\n * Injects a table layout post-fixer into the model.\n *\n * The role of the table layout post-fixer is to ensure that the table rows have the correct structure\n * after a {@link module:engine/model/model~Model#change `change()`} block was executed.\n *\n * The correct structure means that:\n *\n * * All table rows have the same size.\n * * None of the table cells extend vertically beyond their section (either header or body).\n * * A table cell has always at least one element as a child.\n *\n * If the table structure is not correct, the post-fixer will automatically correct it in two steps:\n *\n * 1. It will clip table cells that extend beyond their section.\n * 2. It will add empty table cells to the rows that are narrower than the widest table row.\n *\n * ## Clipping overlapping table cells\n *\n * Such situation may occur when pasting a table (or a part of a table) to the editor from external sources.\n *\n * For example, see the following table which has a cell (FOO) with the rowspan attribute (2):\n *\n * ```xml\n * <table headingRows=\"1\">\n * <tableRow>\n * <tableCell rowspan=\"2\"><paragraph>FOO</paragraph></tableCell>\n * <tableCell colspan=\"2\"><paragraph>BAR</paragraph></tableCell>\n * </tableRow>\n * <tableRow>\n * <tableCell><paragraph>BAZ</paragraph></tableCell>\n * <tableCell><paragraph>XYZ</paragraph></tableCell>\n * </tableRow>\n * </table>\n * ```\n *\n * It will be rendered in the view as:\n *\n * ```xml\n * <table>\n * <thead>\n * <tr>\n * <td rowspan=\"2\">FOO</td>\n * <td colspan=\"2\">BAR</td>\n * </tr>\n * </thead>\n * <tbody>\n * <tr>\n * <td>BAZ</td>\n * <td>XYZ</td>\n * </tr>\n * </tbody>\n * </table>\n * ```\n *\n * In the above example the table will be rendered as a table with two rows: one in the header and second one in the body.\n * The table cell (FOO) cannot span over multiple rows as it would extend from the header to the body section.\n * The `rowspan` attribute must be changed to (1). The value (1) is the default value of the `rowspan` attribute\n * so the `rowspan` attribute will be removed from the model.\n *\n * The table cell with BAZ in the content will be in the first column of the table.\n *\n * ## Adding missing table cells\n *\n * The table post-fixer will insert empty table cells to equalize table row sizes (the number of columns).\n * The size of a table row is calculated by counting column spans of table cells, both horizontal (from the same row) and\n * vertical (from the rows above).\n *\n * In the above example, the table row in the body section of the table is narrower then the row from the header: it has two cells\n * with the default colspan (1). The header row has one cell with colspan (1) and the second with colspan (2).\n * The table cell (FOO) does not extend beyond the head section (and as such will be fixed in the first step of this post-fixer).\n * The post-fixer will add a missing table cell to the row in the body section of the table.\n *\n * The table from the above example will be fixed and rendered to the view as below:\n *\n * ```xml\n * <table>\n * <thead>\n * <tr>\n * <td rowspan=\"2\">FOO</td>\n * <td colspan=\"2\">BAR</td>\n * </tr>\n * </thead>\n * <tbody>\n * <tr>\n * <td>BAZ</td>\n * <td>XYZ</td>\n * </tr>\n * </tbody>\n * </table>\n * ```\n *\n * ## Collaboration and undo - Expectations vs post-fixer results\n *\n * The table post-fixer only ensures proper structure without a deeper analysis of the nature of the change. As such, it might lead\n * to a structure which was not intended by the user. In particular, it will also fix undo steps (in conjunction with collaboration)\n * in which the editor content might not return to the original state.\n *\n * This will usually happen when one or more users change the size of the table.\n *\n * As an example see the table below:\n *\n * ```xml\n * <table>\n * <tbody>\n * <tr>\n * <td>11</td>\n * <td>12</td>\n * </tr>\n * <tr>\n * <td>21</td>\n * <td>22</td>\n * </tr>\n * </tbody>\n * </table>\n * ```\n *\n * and the user actions:\n *\n * 1. Both users have a table with two rows and two columns.\n * 2. User A adds a column at the end of the table. This will insert empty table cells to two rows.\n * 3. User B adds a row at the end of the table. This will insert a row with two empty table cells.\n * 4. Both users will have a table as below:\n *\n * ```xml\n * <table>\n * <tbody>\n * <tr>\n * <td>11</td>\n * <td>12</td>\n * <td>(empty, inserted by A)</td>\n * </tr>\n * <tr>\n * <td>21</td>\n * <td>22</td>\n * <td>(empty, inserted by A)</td>\n * </tr>\n * <tr>\n * <td>(empty, inserted by B)</td>\n * <td>(empty, inserted by B)</td>\n * </tr>\n * </tbody>\n * </table>\n * ```\n *\n * The last row is shorter then others so the table post-fixer will add an empty row to the last row:\n *\n * ```xml\n * <table>\n * <tbody>\n * <tr>\n * <td>11</td>\n * <td>12</td>\n * <td>(empty, inserted by A)</td>\n * </tr>\n * <tr>\n * <td>21</td>\n * <td>22</td>\n * <td>(empty, inserted by A)</td>\n * </tr>\n * <tr>\n * <td>(empty, inserted by B)</td>\n * <td>(empty, inserted by B)</td>\n * <td>(empty, inserted by the post-fixer)</td>\n * </tr>\n * </tbody>\n * </table>\n * ```\n *\n * Unfortunately undo does not know the nature of the changes and depending on which user applies the post-fixer changes, undoing them\n * might lead to a broken table. If User B undoes inserting the column to the table, the undo engine will undo only the operations of\n * inserting empty cells to rows from the initial table state (row 1 and 2) but the cell in the post-fixed row will remain:\n *\n * ```xml\n * <table>\n * <tbody>\n * <tr>\n * <td>11</td>\n * <td>12</td>\n * </tr>\n * <tr>\n * <td>21</td>\n * <td>22</td>\n * </tr>\n * <tr>\n * <td>(empty, inserted by B)</td>\n * <td>(empty, inserted by B)</td>\n * <td>(empty, inserted by a post-fixer)</td>\n * </tr>\n * </tbody>\n * </table>\n * ```\n *\n * After undo, the table post-fixer will detect that two rows are shorter than others and will fix the table to:\n *\n * ```xml\n * <table>\n * <tbody>\n * <tr>\n * <td>11</td>\n * <td>12</td>\n * <td>(empty, inserted by a post-fixer after undo)</td>\n * </tr>\n * <tr>\n * <td>21</td>\n * <td>22</td>\n * <td>(empty, inserted by a post-fixer after undo)</td>\n * </tr>\n * <tr>\n * <td>(empty, inserted by B)</td>\n * <td>(empty, inserted by B)</td>\n * <td>(empty, inserted by a post-fixer)</td>\n * </tr>\n * </tbody>\n * </table>\n * ```\n */\nexport default function injectTableLayoutPostFixer( model: Model ): void {\n\tmodel.document.registerPostFixer( writer => tableLayoutPostFixer( writer, model ) );\n}\n\n/**\n * The table layout post-fixer.\n */\nfunction tableLayoutPostFixer( writer: Writer, model: Model ) {\n\tconst changes = model.document.differ.getChanges();\n\n\tlet wasFixed = false;\n\n\t// Do not analyze the same table more then once - may happen for multiple changes in the same table.\n\tconst analyzedTables = new Set();\n\n\tfor ( const entry of changes ) {\n\t\tlet table: Element | null = null;\n\n\t\tif ( entry.type == 'insert' && entry.name == 'table' ) {\n\t\t\ttable = entry.position.nodeAfter as Element;\n\t\t}\n\n\t\t// Fix table on adding/removing table cells and rows.\n\t\tif ( ( entry.type == 'insert' || entry.type == 'remove' ) && ( entry.name == 'tableRow' || entry.name == 'tableCell' ) ) {\n\t\t\ttable = entry.position.findAncestor( 'table' );\n\t\t}\n\n\t\t// Fix table on any table's attribute change - including attributes of table cells.\n\t\tif ( isTableAttributeEntry( entry ) ) {\n\t\t\ttable = entry.range.start.findAncestor( 'table' );\n\t\t}\n\n\t\tif ( table && !analyzedTables.has( table ) ) {\n\t\t\t// Step 1: correct rowspans of table cells if necessary.\n\t\t\t// The wasFixed flag should be true if any of tables in batch was fixed - might be more then one.\n\t\t\twasFixed = fixTableCellsRowspan( table, writer ) || wasFixed;\n\t\t\t// Step 2: fix table rows sizes.\n\t\t\twasFixed = fixTableRowsSizes( table, writer ) || wasFixed;\n\n\t\t\tanalyzedTables.add( table );\n\t\t}\n\t}\n\n\treturn wasFixed;\n}\n\n/**\n * Fixes the invalid value of the `rowspan` attribute because a table cell cannot vertically extend beyond the table section it belongs to.\n *\n * @returns Returns `true` if the table was fixed.\n */\nfunction fixTableCellsRowspan( table: Element, writer: Writer ) {\n\tlet wasFixed = false;\n\n\tconst cellsToTrim = findCellsToTrim( table );\n\n\tif ( cellsToTrim.length ) {\n\t\t// @if CK_DEBUG_TABLE // console.log( `Post-fixing table: trimming cells row-spans (${ cellsToTrim.length }).` );\n\n\t\twasFixed = true;\n\n\t\tfor ( const data of cellsToTrim ) {\n\t\t\tupdateNumericAttribute( 'rowspan', data.rowspan, data.cell, writer, 1 );\n\t\t}\n\t}\n\n\treturn wasFixed;\n}\n\n/**\n * Makes all table rows in a table the same size.\n *\n * @returns Returns `true` if the table was fixed.\n */\nfunction fixTableRowsSizes( table: Element, writer: Writer ) {\n\tlet wasFixed = false;\n\n\tconst childrenLengths = getChildrenLengths( table );\n\tconst rowsToRemove = [];\n\n\t// Find empty rows.\n\tfor ( const [ rowIndex, size ] of childrenLengths.entries() ) {\n\t\t// Ignore all non-row models.\n\t\tif ( !size && table.getChild( rowIndex )!.is( 'element', 'tableRow' ) ) {\n\t\t\trowsToRemove.push( rowIndex );\n\t\t}\n\t}\n\n\t// Remove empty rows.\n\tif ( rowsToRemove.length ) {\n\t\t// @if CK_DEBUG_TABLE // console.log( `Post-fixing table: remove empty rows (${ rowsToRemove.length }).` );\n\n\t\twasFixed = true;\n\n\t\tfor ( const rowIndex of rowsToRemove.reverse() ) {\n\t\t\twriter.remove( table.getChild( rowIndex )! );\n\t\t\tchildrenLengths.splice( rowIndex, 1 );\n\t\t}\n\t}\n\n\t// Filter out everything that's not a table row.\n\tconst rowsLengths = childrenLengths.filter( ( row, rowIndex ) => table.getChild( rowIndex )!.is( 'element', 'tableRow' ) );\n\n\t// Verify if all the rows have the same number of columns.\n\tconst tableSize = rowsLengths[ 0 ];\n\tconst isValid = rowsLengths.every( length => length === tableSize );\n\n\tif ( !isValid ) {\n\t\t// @if CK_DEBUG_TABLE // console.log( 'Post-fixing table: adding missing cells.' );\n\n\t\t// Find the maximum number of columns.\n\t\tconst maxColumns = rowsLengths.reduce( ( prev, current ) => current > prev ? current : prev, 0 );\n\n\t\tfor ( const [ rowIndex, size ] of rowsLengths.entries() ) {\n\t\t\tconst columnsToInsert = maxColumns - size;\n\n\t\t\tif ( columnsToInsert ) {\n\t\t\t\tfor ( let i = 0; i < columnsToInsert; i++ ) {\n\t\t\t\t\tcreateEmptyTableCell( writer, writer.createPositionAt( table.getChild( rowIndex )!, 'end' ) );\n\t\t\t\t}\n\n\t\t\t\twasFixed = true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn wasFixed;\n}\n\n/**\n * Searches for table cells that extend beyond the table section to which they belong to. It will return an array of objects\n * that stores table cells to be trimmed and the correct value of the `rowspan` attribute to set.\n */\nfunction findCellsToTrim( table: Element ) {\n\tconst headingRows = parseInt( table.getAttribute( 'headingRows' ) as string || '0' );\n\tconst maxRows = Array.from( table.getChildren() )\n\t\t.reduce( ( count, row ) => row.is( 'element', 'tableRow' ) ? count + 1 : count, 0 );\n\n\tconst cellsToTrim = [];\n\n\tfor ( const { row, cell, cellHeight } of new TableWalker( table ) ) {\n\t\t// Skip cells that do not expand over its row.\n\t\tif ( cellHeight < 2 ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst isInHeader = row < headingRows;\n\n\t\t// Row limit is either end of header section or whole table as table body is after the header.\n\t\tconst rowLimit = isInHeader ? headingRows : maxRows;\n\n\t\t// If table cell expands over its limit reduce it height to proper value.\n\t\tif ( row + cellHeight > rowLimit ) {\n\t\t\tconst newRowspan = rowLimit - row;\n\n\t\t\tcellsToTrim.push( { cell, rowspan: newRowspan } );\n\t\t}\n\t}\n\n\treturn cellsToTrim;\n}\n\n/**\n * Returns an array with lengths of rows assigned to the corresponding row index.\n */\nfunction getChildrenLengths( table: Element ) {\n\t// TableWalker will not provide items for the empty rows, we need to pre-fill this array.\n\tconst lengths = new Array( table.childCount ).fill( 0 );\n\n\tfor ( const { rowIndex } of new TableWalker( table, { includeAllSlots: true } ) ) {\n\t\tlengths[ rowIndex ]++;\n\t}\n\n\treturn lengths;\n}\n\n/**\n * Checks if the differ entry for an attribute change is one of the table's attributes.\n */\nfunction isTableAttributeEntry( entry: DiffItem ): entry is DiffItemAttribute {\n\tif ( entry.type !== 'attribute' ) {\n\t\treturn false;\n\t}\n\n\tconst key = entry.attributeKey;\n\n\treturn key === 'headingRows' || key === 'colspan' || key === 'rowspan';\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/converters/table-cell-paragraph-post-fixer\n */\n\nimport type { Model, Writer, Element, DiffItemInsert, DiffItemRemove } from 'ckeditor5/src/engine';\n\n/**\n * Injects a table cell post-fixer into the model which inserts a `paragraph` element into empty table cells.\n *\n * A table cell must contain at least one block element as a child. An empty table cell will have an empty `paragraph` as a child.\n *\n * ```xml\n * <table>\n * <tableRow>\n * <tableCell></tableCell>\n * </tableRow>\n * </table>\n * ```\n *\n * Will be fixed to:\n *\n * ```xml\n * <table>\n * <tableRow>\n * <tableCell><paragraph></paragraph></tableCell>\n * </tableRow>\n * </table>\n * ```\n */\nexport default function injectTableCellParagraphPostFixer( model: Model ): void {\n\tmodel.document.registerPostFixer( writer => tableCellContentsPostFixer( writer, model ) );\n}\n\n/**\n * The table cell contents post-fixer.\n */\nfunction tableCellContentsPostFixer( writer: Writer, model: Model ) {\n\tconst changes = model.document.differ.getChanges();\n\n\tlet wasFixed = false;\n\n\tfor ( const entry of changes ) {\n\t\tif ( entry.type == 'insert' && entry.name == 'table' ) {\n\t\t\twasFixed = fixTable( entry.position.nodeAfter as Element, writer ) || wasFixed;\n\t\t}\n\n\t\tif ( entry.type == 'insert' && entry.name == 'tableRow' ) {\n\t\t\twasFixed = fixTableRow( entry.position.nodeAfter as Element, writer ) || wasFixed;\n\t\t}\n\n\t\tif ( entry.type == 'insert' && entry.name == 'tableCell' ) {\n\t\t\twasFixed = fixTableCellContent( entry.position.nodeAfter as Element, writer ) || wasFixed;\n\t\t}\n\n\t\tif ( ( entry.type == 'remove' || entry.type == 'insert' ) && checkTableCellChange( entry ) ) {\n\t\t\twasFixed = fixTableCellContent( entry.position.parent as Element, writer ) || wasFixed;\n\t\t}\n\t}\n\n\treturn wasFixed;\n}\n\n/**\n * Fixes all table cells in a table.\n */\nfunction fixTable( table: Element, writer: Writer ) {\n\tlet wasFixed = false;\n\n\tfor ( const row of table.getChildren() ) {\n\t\tif ( row.is( 'element', 'tableRow' ) ) {\n\t\t\twasFixed = fixTableRow( row, writer ) || wasFixed;\n\t\t}\n\t}\n\n\treturn wasFixed;\n}\n\n/**\n * Fixes all table cells in a table row.\n */\nfunction fixTableRow( tableRow: Element, writer: Writer ) {\n\tlet wasFixed = false;\n\n\tfor ( const tableCell of tableRow.getChildren() as IterableIterator<Element> ) {\n\t\twasFixed = fixTableCellContent( tableCell, writer ) || wasFixed;\n\t}\n\n\treturn wasFixed;\n}\n\n/**\n * Fixes all table cell content by:\n * - Adding a paragraph to a table cell without any child.\n * - Wrapping direct $text in a `<paragraph>`.\n */\nfunction fixTableCellContent( tableCell: Element, writer: Writer ) {\n\t// Insert paragraph to an empty table cell.\n\tif ( tableCell.childCount == 0 ) {\n\t\t// @if CK_DEBUG_TABLE // console.log( 'Post-fixing table: insert paragraph in empty cell.' );\n\n\t\twriter.insertElement( 'paragraph', tableCell );\n\n\t\treturn true;\n\t}\n\n\t// Check table cell children for directly placed text nodes.\n\t// Temporary solution. See https://github.com/ckeditor/ckeditor5/issues/1464.\n\tconst textNodes = Array.from( tableCell.getChildren() ).filter( child => child.is( '$text' ) );\n\n\t// @if CK_DEBUG_TABLE // textNodes.length && console.log( 'Post-fixing table: wrap cell content with paragraph.' );\n\n\tfor ( const child of textNodes ) {\n\t\twriter.wrap( writer.createRangeOn( child ), 'paragraph' );\n\t}\n\n\t// Return true when there were text nodes to fix.\n\treturn !!textNodes.length;\n}\n\n/**\n * Checks if a differ change should fix the table cell. This happens on:\n * - Removing content from the table cell (i.e. `tableCell` can be left empty).\n * - Adding a text node directly into a table cell.\n */\nfunction checkTableCellChange( entry: DiffItemInsert | DiffItemRemove ) {\n\tif ( !entry.position.parent.is( 'element', 'tableCell' ) ) {\n\t\treturn false;\n\t}\n\n\treturn entry.type == 'insert' && entry.name == '$text' || entry.type == 'remove';\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/converters/table-cell-refresh-handler\n */\n\nimport type {\n\tEditingController,\n\tElement,\n\tMapper,\n\tModel\n} from 'ckeditor5/src/engine';\n\nimport { isSingleParagraphWithoutAttributes } from './downcast';\n\n/**\n * A table cell refresh handler which marks the table cell in the differ to have it re-rendered.\n *\n * Model `paragraph` inside a table cell can be rendered as `<span>` or `<p>`. It is rendered as `<span>` if this is the only block\n * element in that table cell and it does not have any attributes. It is rendered as `<p>` otherwise.\n *\n * When table cell content changes, for example a second `paragraph` element is added, we need to ensure that the first `paragraph` is\n * re-rendered so it changes from `<span>` to `<p>`. The easiest way to do it is to re-render the entire table cell.\n */\nexport default function tableCellRefreshHandler( model: Model, editing: EditingController ): void {\n\tconst differ = model.document.differ;\n\n\t// Stores cells to be refreshed, so the table cell will be refreshed once for multiple changes.\n\tconst cellsToCheck = new Set();\n\n\tfor ( const change of differ.getChanges() ) {\n\t\tconst parent = change.type == 'attribute' ? change.range.start.parent : change.position.parent;\n\n\t\tif ( parent.is( 'element', 'tableCell' ) ) {\n\t\t\tcellsToCheck.add( parent );\n\t\t}\n\t}\n\n\tfor ( const tableCell of cellsToCheck.values() as Iterable<Element> ) {\n\t\tconst paragraphsToRefresh = Array.from( tableCell.getChildren() )\n\t\t\t.filter( child => shouldRefresh( child as Element, editing.mapper ) );\n\n\t\tfor ( const paragraph of paragraphsToRefresh ) {\n\t\t\tediting.reconvertItem( paragraph );\n\t\t}\n\t}\n}\n\n/**\n * Check if given model element needs refreshing.\n */\nfunction shouldRefresh( child: Element, mapper: Mapper ) {\n\tif ( !child.is( 'element', 'paragraph' ) ) {\n\t\treturn false;\n\t}\n\n\tconst viewElement = mapper.toViewElement( child );\n\n\tif ( !viewElement ) {\n\t\treturn false;\n\t}\n\n\treturn isSingleParagraphWithoutAttributes( child ) !== viewElement.is( 'element', 'span' );\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./tableediting.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableediting\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\nimport type { PositionOffset, ViewElement, SlotFilter } from 'ckeditor5/src/engine';\n\nimport upcastTable, { ensureParagraphInTableCell, skipEmptyTableRow, upcastTableFigure } from './converters/upcasttable';\nimport { convertParagraphInTableCell, downcastCell, downcastRow, downcastTable } from './converters/downcast';\n\nimport InsertTableCommand from './commands/inserttablecommand';\nimport InsertRowCommand from './commands/insertrowcommand';\nimport InsertColumnCommand from './commands/insertcolumncommand';\nimport SplitCellCommand from './commands/splitcellcommand';\nimport MergeCellCommand from './commands/mergecellcommand';\nimport RemoveRowCommand from './commands/removerowcommand';\nimport RemoveColumnCommand from './commands/removecolumncommand';\nimport SetHeaderRowCommand from './commands/setheaderrowcommand';\nimport SetHeaderColumnCommand from './commands/setheadercolumncommand';\nimport MergeCellsCommand from './commands/mergecellscommand';\nimport SelectRowCommand from './commands/selectrowcommand';\nimport SelectColumnCommand from './commands/selectcolumncommand';\nimport TableUtils from '../src/tableutils';\n\nimport injectTableLayoutPostFixer from './converters/table-layout-post-fixer';\nimport injectTableCellParagraphPostFixer from './converters/table-cell-paragraph-post-fixer';\n\nimport tableHeadingsRefreshHandler from './converters/table-headings-refresh-handler';\nimport tableCellRefreshHandler from './converters/table-cell-refresh-handler';\n\nimport '../theme/tableediting.css';\n\n/**\n * The table editing feature.\n */\nexport default class TableEditing extends Plugin {\n\t/**\n\t * Handlers for creating additional slots in the table.\n\t */\n\tprivate _additionalSlots: Array<AdditionalSlot>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ TableUtils ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._additionalSlots = [];\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst schema = model.schema;\n\t\tconst conversion = editor.conversion;\n\t\tconst tableUtils = editor.plugins.get( TableUtils );\n\n\t\tschema.register( 'table', {\n\t\t\tinheritAllFrom: '$blockObject',\n\t\t\tallowAttributes: [ 'headingRows', 'headingColumns' ]\n\t\t} );\n\n\t\tschema.register( 'tableRow', {\n\t\t\tallowIn: 'table',\n\t\t\tisLimit: true\n\t\t} );\n\n\t\tschema.register( 'tableCell', {\n\t\t\tallowContentOf: '$container',\n\t\t\tallowIn: 'tableRow',\n\t\t\tallowAttributes: [ 'colspan', 'rowspan' ],\n\t\t\tisLimit: true,\n\t\t\tisSelectable: true\n\t\t} );\n\n\t\t// Figure conversion.\n\t\tconversion.for( 'upcast' ).add( upcastTableFigure() );\n\n\t\t// Table conversion.\n\t\tconversion.for( 'upcast' ).add( upcastTable() );\n\n\t\tconversion.for( 'editingDowncast' ).elementToStructure( {\n\t\t\tmodel: {\n\t\t\t\tname: 'table',\n\t\t\t\tattributes: [ 'headingRows' ]\n\t\t\t},\n\t\t\tview: downcastTable( tableUtils, {\n\t\t\t\tasWidget: true,\n\t\t\t\tadditionalSlots: this._additionalSlots\n\t\t\t} )\n\t\t} );\n\t\tconversion.for( 'dataDowncast' ).elementToStructure( {\n\t\t\tmodel: {\n\t\t\t\tname: 'table',\n\t\t\t\tattributes: [ 'headingRows' ]\n\t\t\t},\n\t\t\tview: downcastTable( tableUtils, {\n\t\t\t\tadditionalSlots: this._additionalSlots\n\t\t\t} )\n\t\t} );\n\n\t\t// Table row conversion.\n\t\tconversion.for( 'upcast' ).elementToElement( { model: 'tableRow', view: 'tr' } );\n\t\tconversion.for( 'upcast' ).add( skipEmptyTableRow() );\n\n\t\tconversion.for( 'downcast' ).elementToElement( {\n\t\t\tmodel: 'tableRow',\n\t\t\tview: downcastRow()\n\t\t} );\n\n\t\t// Table cell conversion.\n\t\tconversion.for( 'upcast' ).elementToElement( { model: 'tableCell', view: 'td' } );\n\t\tconversion.for( 'upcast' ).elementToElement( { model: 'tableCell', view: 'th' } );\n\t\tconversion.for( 'upcast' ).add( ensureParagraphInTableCell( 'td' ) );\n\t\tconversion.for( 'upcast' ).add( ensureParagraphInTableCell( 'th' ) );\n\n\t\tconversion.for( 'editingDowncast' ).elementToElement( {\n\t\t\tmodel: 'tableCell',\n\t\t\tview: downcastCell( { asWidget: true } )\n\t\t} );\n\t\tconversion.for( 'dataDowncast' ).elementToElement( {\n\t\t\tmodel: 'tableCell',\n\t\t\tview: downcastCell()\n\t\t} );\n\n\t\t// Duplicates code - needed to properly refresh paragraph inside a table cell.\n\t\tconversion.for( 'editingDowncast' ).elementToElement( {\n\t\t\tmodel: 'paragraph',\n\t\t\tview: convertParagraphInTableCell( { asWidget: true } ),\n\t\t\tconverterPriority: 'high'\n\t\t} );\n\t\tconversion.for( 'dataDowncast' ).elementToElement( {\n\t\t\tmodel: 'paragraph',\n\t\t\tview: convertParagraphInTableCell(),\n\t\t\tconverterPriority: 'high'\n\t\t} );\n\n\t\t// Table attributes conversion.\n\t\tconversion.for( 'downcast' ).attributeToAttribute( { model: 'colspan', view: 'colspan' } );\n\t\tconversion.for( 'upcast' ).attributeToAttribute( {\n\t\t\tmodel: { key: 'colspan', value: upcastCellSpan( 'colspan' ) },\n\t\t\tview: 'colspan'\n\t\t} );\n\n\t\tconversion.for( 'downcast' ).attributeToAttribute( { model: 'rowspan', view: 'rowspan' } );\n\t\tconversion.for( 'upcast' ).attributeToAttribute( {\n\t\t\tmodel: { key: 'rowspan', value: upcastCellSpan( 'rowspan' ) },\n\t\t\tview: 'rowspan'\n\t\t} );\n\n\t\t// Define the config.\n\t\teditor.config.define( 'table.defaultHeadings.rows', 0 );\n\t\teditor.config.define( 'table.defaultHeadings.columns', 0 );\n\n\t\t// Define all the commands.\n\t\teditor.commands.add( 'insertTable', new InsertTableCommand( editor ) );\n\t\teditor.commands.add( 'insertTableRowAbove', new InsertRowCommand( editor, { order: 'above' } ) );\n\t\teditor.commands.add( 'insertTableRowBelow', new InsertRowCommand( editor, { order: 'below' } ) );\n\t\teditor.commands.add( 'insertTableColumnLeft', new InsertColumnCommand( editor, { order: 'left' } ) );\n\t\teditor.commands.add( 'insertTableColumnRight', new InsertColumnCommand( editor, { order: 'right' } ) );\n\n\t\teditor.commands.add( 'removeTableRow', new RemoveRowCommand( editor ) );\n\t\teditor.commands.add( 'removeTableColumn', new RemoveColumnCommand( editor ) );\n\n\t\teditor.commands.add( 'splitTableCellVertically', new SplitCellCommand( editor, { direction: 'vertically' } ) );\n\t\teditor.commands.add( 'splitTableCellHorizontally', new SplitCellCommand( editor, { direction: 'horizontally' } ) );\n\n\t\teditor.commands.add( 'mergeTableCells', new MergeCellsCommand( editor ) );\n\n\t\teditor.commands.add( 'mergeTableCellRight', new MergeCellCommand( editor, { direction: 'right' } ) );\n\t\teditor.commands.add( 'mergeTableCellLeft', new MergeCellCommand( editor, { direction: 'left' } ) );\n\t\teditor.commands.add( 'mergeTableCellDown', new MergeCellCommand( editor, { direction: 'down' } ) );\n\t\teditor.commands.add( 'mergeTableCellUp', new MergeCellCommand( editor, { direction: 'up' } ) );\n\n\t\teditor.commands.add( 'setTableColumnHeader', new SetHeaderColumnCommand( editor ) );\n\t\teditor.commands.add( 'setTableRowHeader', new SetHeaderRowCommand( editor ) );\n\n\t\teditor.commands.add( 'selectTableRow', new SelectRowCommand( editor ) );\n\t\teditor.commands.add( 'selectTableColumn', new SelectColumnCommand( editor ) );\n\n\t\tinjectTableLayoutPostFixer( model );\n\t\tinjectTableCellParagraphPostFixer( model );\n\n\t\tthis.listenTo( model.document, 'change:data', () => {\n\t\t\ttableHeadingsRefreshHandler( model, editor.editing );\n\t\t\ttableCellRefreshHandler( model, editor.editing );\n\t\t} );\n\t}\n\n\t/**\n\t * Registers downcast handler for the additional table slot.\n\t */\n\tpublic registerAdditionalSlot( slotHandler: AdditionalSlot ): void {\n\t\tthis._additionalSlots.push( slotHandler );\n\t}\n}\n\n/**\n * Returns fixed colspan and rowspan attrbutes values.\n *\n * @param type colspan or rowspan.\n * @returns conversion value function.\n */\nfunction upcastCellSpan( type: string ) {\n\treturn ( cell: ViewElement ) => {\n\t\tconst span = parseInt( cell.getAttribute( type )! );\n\n\t\tif ( Number.isNaN( span ) || span <= 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn span;\n\t};\n}\n\n/**\n * By default, only the `tableRow` elements from the `table` model are downcast inside the `<table>` and\n * all other elements are pushed outside the table. This handler allows creating additional slots inside\n * the table for other elements.\n *\n * Take this model as an example:\n *\n * ```xml\n * <table>\n * <tableRow>...</tableRow>\n * <tableRow>...</tableRow>\n * <tableColumnGroup>...</tableColumnGroup>\n * </table>\n * ```\n *\n * By default, downcasting result will be:\n *\n * ```xml\n * <table>\n * <tbody>\n * <tr>...</tr>\n * <tr>...</tr>\n * </tbody>\n * </table>\n * <colgroup>...</colgroup>\n * ```\n *\n * To allow the `tableColumnGroup` element at the end of the table, use the following configuration:\n *\n * ```ts\n * const additionalSlot = {\n * filter: element => element.is( 'element', 'tableColumnGroup' ),\n * positionOffset: 'end'\n * }\n * ```\n *\n * Now, the downcast result will be:\n *\n * ```xml\n * <table>\n * <tbody>\n * <tr>...</tr>\n * <tr>...</tr>\n * </tbody>\n * <colgroup>...</colgroup>\n * </table>\n * ```\n */\nexport interface AdditionalSlot {\n\n\t/**\n\t * Filter for elements that should be placed inside given slot.\n\t */\n\tfilter: SlotFilter;\n\n\t/**\n\t * Position of the slot within the table.\n\t */\n\tpositionOffset: PositionOffset;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/converters/table-headings-refresh-handler\n */\n\nimport type {\n\tEditingController,\n\tElement,\n\tModel\n} from 'ckeditor5/src/engine';\n\nimport TableWalker from '../tablewalker';\n\n/**\n * A table headings refresh handler which marks the table cells or rows in the differ to have it re-rendered\n * if the headings attribute changed.\n *\n * Table heading rows and heading columns are represented in the model by a `headingRows` and `headingColumns` attributes.\n *\n * When table headings attribute changes, all the cells/rows are marked to re-render to change between `<td>` and `<th>`.\n */\nexport default function tableHeadingsRefreshHandler( model: Model, editing: EditingController ): void {\n\tconst differ = model.document.differ;\n\n\tfor ( const change of differ.getChanges() ) {\n\t\tlet table;\n\t\tlet isRowChange = false;\n\n\t\tif ( change.type == 'attribute' ) {\n\t\t\tconst element = change.range.start.nodeAfter;\n\n\t\t\tif ( !element || !element.is( 'element', 'table' ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( change.attributeKey != 'headingRows' && change.attributeKey != 'headingColumns' ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttable = element;\n\t\t\tisRowChange = change.attributeKey == 'headingRows';\n\t\t} else if ( change.name == 'tableRow' || change.name == 'tableCell' ) {\n\t\t\ttable = change.position.findAncestor( 'table' );\n\t\t\tisRowChange = change.name == 'tableRow';\n\t\t}\n\n\t\tif ( !table ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst headingRows = table.getAttribute( 'headingRows' ) || 0;\n\t\tconst headingColumns = table.getAttribute( 'headingColumns' ) || 0;\n\n\t\tconst tableWalker = new TableWalker( table );\n\n\t\tfor ( const tableSlot of tableWalker ) {\n\t\t\tconst isHeading = tableSlot.row < headingRows || tableSlot.column < headingColumns;\n\t\t\tconst expectedElementName = isHeading ? 'th' : 'td';\n\n\t\t\tconst viewElement = editing.mapper.toViewElement( tableSlot.cell );\n\n\t\t\tif ( viewElement && viewElement.is( 'element' ) && viewElement.name != expectedElementName ) {\n\t\t\t\tediting.reconvertItem( ( isRowChange ? tableSlot.cell.parent : tableSlot.cell ) as Element );\n\t\t\t}\n\t\t}\n\t}\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./inserttable.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/ui/inserttableview\n */\n\nimport { View, ButtonView, addKeyboardHandlingForGrid, type ViewCollection } from 'ckeditor5/src/ui';\n\nimport { KeystrokeHandler, FocusTracker, type Locale } from 'ckeditor5/src/utils';\n\nimport './../../theme/inserttable.css';\n\n/**\n * The table size view.\n *\n * It renders a 10x10 grid to choose the inserted table size.\n */\nexport default class InsertTableView extends View {\n\t/**\n\t * A collection of table size box items.\n\t */\n\tpublic readonly items: ViewCollection<ButtonView>;\n\n\t/**\n\t * Listen to `keydown` events fired in this view's main element.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * Tracks information about the DOM focus in the grid.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * The currently selected number of rows of the new table.\n\t *\n\t * @observable\n\t */\n\tdeclare public rows: number;\n\n\t/**\n\t * The currently selected number of columns of the new table.\n\t *\n\t * @observable\n\t */\n\tdeclare public columns: number;\n\n\t/**\n\t * The label text displayed under the boxes.\n\t *\n\t * @observable\n\t */\n\tdeclare public label: string;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\t\tthis.items = this._createGridCollection();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.set( 'rows', 0 );\n\t\tthis.set( 'columns', 0 );\n\t\tthis.bind( 'label' ).to( this, 'columns', this, 'rows', ( columns, rows ) => `${ rows } × ${ columns }` );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [ 'ck' ]\n\t\t\t},\n\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttag: 'div',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: [ 'ck-insert-table-dropdown__grid' ]\n\t\t\t\t\t},\n\t\t\t\t\ton: {\n\t\t\t\t\t\t'mouseover@.ck-insert-table-dropdown-grid-box': bind.to( 'boxover' )\n\t\t\t\t\t},\n\t\t\t\t\tchildren: this.items\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttag: 'div',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: [\n\t\t\t\t\t\t\t'ck',\n\t\t\t\t\t\t\t'ck-insert-table-dropdown__label'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t'aria-hidden': true\n\t\t\t\t\t},\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttext: bind.to( 'label' )\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t],\n\n\t\t\ton: {\n\t\t\t\tmousedown: bind.to( evt => {\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t} ),\n\n\t\t\t\tclick: bind.to( () => {\n\t\t\t\t\tthis.fire( 'execute' );\n\t\t\t\t} )\n\t\t\t}\n\t\t} );\n\n\t\t// #rows and #columns are set via changes to #focusTracker on mouse over.\n\t\tthis.on( 'boxover', ( evt, domEvt ) => {\n\t\t\tconst { row, column } = domEvt.target.dataset;\n\t\t\tthis.items.get( ( parseInt( row, 10 ) - 1 ) * 10 + ( parseInt( column, 10 ) - 1 ) )!.focus();\n\t\t} );\n\n\t\t// This allows the #rows and #columns to be updated when:\n\t\t// * the user navigates the grid using the keyboard,\n\t\t// * the user moves the mouse over grid items.\n\t\tthis.focusTracker.on( 'change:focusedElement', ( evt, name, focusedElement ) => {\n\t\t\tif ( !focusedElement ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { row, column } = focusedElement.dataset;\n\n\t\t\t// As row & column indexes are zero-based transform it to number of selected rows & columns.\n\t\t\tthis.set( {\n\t\t\t\trows: parseInt( row ),\n\t\t\t\tcolumns: parseInt( column )\n\t\t\t} );\n\t\t} );\n\n\t\tthis.on( 'change:columns', () => this._highlightGridBoxes() );\n\t\tthis.on( 'change:rows', () => this._highlightGridBoxes() );\n\t}\n\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\taddKeyboardHandlingForGrid( {\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tgridItems: this.items,\n\t\t\tnumberOfColumns: 10,\n\t\t\tuiLanguageDirection: this.locale && this.locale.uiLanguageDirection\n\t\t} );\n\n\t\tfor ( const item of this.items ) {\n\t\t\tthis.focusTracker.add( item.element! );\n\t\t}\n\n\t\tthis.keystrokes.listenTo( this.element! );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic focus(): void {\n\t\tthis.items.get( 0 )!.focus();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic focusLast(): void {\n\t\tthis.items.get( 0 )!.focus();\n\t}\n\n\t/**\n\t * Highlights grid boxes depending on rows and columns selected.\n\t */\n\tprivate _highlightGridBoxes() {\n\t\tconst rows = this.rows;\n\t\tconst columns = this.columns;\n\n\t\tthis.items.map( ( boxView, index ) => {\n\t\t\t// Translate box index to the row & column index.\n\t\t\tconst itemRow = Math.floor( index / 10 );\n\t\t\tconst itemColumn = index % 10;\n\n\t\t\t// Grid box is highlighted when its row & column index belongs to selected number of rows & columns.\n\t\t\tconst isOn = itemRow < rows && itemColumn < columns;\n\n\t\t\tboxView.set( 'isOn', isOn );\n\t\t} );\n\t}\n\n\t/**\n\t * Creates a new Button for the grid.\n\t *\n\t * @param locale The locale instance.\n\t * @param row Row number.\n\t * @param column Column number.\n\t * @param label The grid button label.\n\t */\n\tprivate _createGridButton( locale: Locale, row: number, column: number, label: string ): ButtonView {\n\t\tconst button = new ButtonView( locale );\n\n\t\tbutton.set( {\n\t\t\tlabel,\n\t\t\tclass: 'ck-insert-table-dropdown-grid-box'\n\t\t} );\n\n\t\tbutton.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\t'data-row': row,\n\t\t\t\t'data-column': column\n\t\t\t}\n\t\t} );\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * @returns A view collection containing boxes to be placed in a table grid.\n\t */\n\tprivate _createGridCollection() {\n\t\tconst boxes = [];\n\n\t\t// Add grid boxes to table selection view.\n\t\tfor ( let index = 0; index < 100; index++ ) {\n\t\t\tconst row = Math.floor( index / 10 );\n\t\t\tconst column = index % 10;\n\t\t\tconst label = `${ row + 1 } × ${ column + 1 }`;\n\n\t\t\tboxes.push( this._createGridButton( this.locale!, row + 1, column + 1, label ) );\n\t\t}\n\n\t\treturn this.createCollection( boxes );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableui\n */\n\nimport { Plugin, type Command, type Editor } from 'ckeditor5/src/core';\nimport {\n\taddListToDropdown,\n\tcreateDropdown,\n\tModel,\n\tSplitButtonView,\n\tSwitchButtonView,\n\ttype DropdownView,\n\ttype ListDropdownItemDefinition\n} from 'ckeditor5/src/ui';\nimport { Collection, type Locale } from 'ckeditor5/src/utils';\n\nimport InsertTableView from './ui/inserttableview';\n\nimport tableIcon from './../theme/icons/table.svg';\nimport tableColumnIcon from './../theme/icons/table-column.svg';\nimport tableRowIcon from './../theme/icons/table-row.svg';\nimport tableMergeCellIcon from './../theme/icons/table-merge-cell.svg';\nimport type InsertTableCommand from './commands/inserttablecommand';\nimport type MergeCellsCommand from './commands/mergecellscommand';\n\n/**\n * The table UI plugin. It introduces:\n *\n * * The `'insertTable'` dropdown,\n * * The `'tableColumn'` dropdown,\n * * The `'tableRow'` dropdown,\n * * The `'mergeTableCells'` split button.\n *\n * The `'tableColumn'`, `'tableRow'` and `'mergeTableCells'` dropdowns work best with {@link module:table/tabletoolbar~TableToolbar}.\n */\nexport default class TableUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = this.editor.t;\n\t\tconst contentLanguageDirection = editor.locale.contentLanguageDirection;\n\t\tconst isContentLtr = contentLanguageDirection === 'ltr';\n\n\t\teditor.ui.componentFactory.add( 'insertTable', locale => {\n\t\t\tconst command: InsertTableCommand = editor.commands.get( 'insertTable' )!;\n\t\t\tconst dropdownView = createDropdown( locale );\n\n\t\t\tdropdownView.bind( 'isEnabled' ).to( command );\n\n\t\t\t// Decorate dropdown's button.\n\t\t\tdropdownView.buttonView.set( {\n\t\t\t\ticon: tableIcon,\n\t\t\t\tlabel: t( 'Insert table' ),\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tlet insertTableView: InsertTableView;\n\n\t\t\tdropdownView.on( 'change:isOpen', () => {\n\t\t\t\tif ( insertTableView ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Prepare custom view for dropdown's panel.\n\t\t\t\tinsertTableView = new InsertTableView( locale );\n\t\t\t\tdropdownView.panelView.children.add( insertTableView );\n\n\t\t\t\tinsertTableView.delegate( 'execute' ).to( dropdownView );\n\n\t\t\t\tdropdownView.on( 'execute', () => {\n\t\t\t\t\teditor.execute( 'insertTable', { rows: insertTableView.rows, columns: insertTableView.columns } );\n\t\t\t\t\teditor.editing.view.focus();\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t} );\n\n\t\teditor.ui.componentFactory.add( 'tableColumn', locale => {\n\t\t\tconst options = [\n\t\t\t\t{\n\t\t\t\t\ttype: 'switchbutton',\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tcommandName: 'setTableColumnHeader',\n\t\t\t\t\t\tlabel: t( 'Header column' ),\n\t\t\t\t\t\tbindIsOn: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ type: 'separator' },\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tcommandName: isContentLtr ? 'insertTableColumnLeft' : 'insertTableColumnRight',\n\t\t\t\t\t\tlabel: t( 'Insert column left' )\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tcommandName: isContentLtr ? 'insertTableColumnRight' : 'insertTableColumnLeft',\n\t\t\t\t\t\tlabel: t( 'Insert column right' )\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tcommandName: 'removeTableColumn',\n\t\t\t\t\t\tlabel: t( 'Delete column' )\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tcommandName: 'selectTableColumn',\n\t\t\t\t\t\tlabel: t( 'Select column' )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t] as Array<ListDropdownItemDefinition>;\n\n\t\t\treturn this._prepareDropdown( t( 'Column' ), tableColumnIcon, options, locale );\n\t\t} );\n\n\t\teditor.ui.componentFactory.add( 'tableRow', locale => {\n\t\t\tconst options = [\n\t\t\t\t{\n\t\t\t\t\ttype: 'switchbutton',\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tcommandName: 'setTableRowHeader',\n\t\t\t\t\t\tlabel: t( 'Header row' ),\n\t\t\t\t\t\tbindIsOn: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ type: 'separator' },\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tcommandName: 'insertTableRowAbove',\n\t\t\t\t\t\tlabel: t( 'Insert row above' )\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tcommandName: 'insertTableRowBelow',\n\t\t\t\t\t\tlabel: t( 'Insert row below' )\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tcommandName: 'removeTableRow',\n\t\t\t\t\t\tlabel: t( 'Delete row' )\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tcommandName: 'selectTableRow',\n\t\t\t\t\t\tlabel: t( 'Select row' )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t] as Array<ListDropdownItemDefinition>;\n\n\t\t\treturn this._prepareDropdown( t( 'Row' ), tableRowIcon, options, locale );\n\t\t} );\n\n\t\teditor.ui.componentFactory.add( 'mergeTableCells', locale => {\n\t\t\tconst options = [\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tcommandName: 'mergeTableCellUp',\n\t\t\t\t\t\tlabel: t( 'Merge cell up' )\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tcommandName: isContentLtr ? 'mergeTableCellRight' : 'mergeTableCellLeft',\n\t\t\t\t\t\tlabel: t( 'Merge cell right' )\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tcommandName: 'mergeTableCellDown',\n\t\t\t\t\t\tlabel: t( 'Merge cell down' )\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tcommandName: isContentLtr ? 'mergeTableCellLeft' : 'mergeTableCellRight',\n\t\t\t\t\t\tlabel: t( 'Merge cell left' )\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ type: 'separator' },\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tcommandName: 'splitTableCellVertically',\n\t\t\t\t\t\tlabel: t( 'Split cell vertically' )\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: 'button',\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tcommandName: 'splitTableCellHorizontally',\n\t\t\t\t\t\tlabel: t( 'Split cell horizontally' )\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t] as Array<ListDropdownItemDefinition>;\n\n\t\t\treturn this._prepareMergeSplitButtonDropdown( t( 'Merge cells' ), tableMergeCellIcon, options, locale );\n\t\t} );\n\t}\n\n\t/**\n\t * Creates a dropdown view from a set of options.\n\t *\n\t * @param label The dropdown button label.\n\t * @param icon An icon for the dropdown button.\n\t * @param options The list of options for the dropdown.\n\t */\n\tprivate _prepareDropdown( label: string, icon: string, options: Array<ListDropdownItemDefinition>, locale: Locale ) {\n\t\tconst editor = this.editor;\n\t\tconst dropdownView = createDropdown( locale );\n\t\tconst commands = this._fillDropdownWithListOptions( dropdownView, options );\n\n\t\t// Decorate dropdown's button.\n\t\tdropdownView.buttonView.set( {\n\t\t\tlabel,\n\t\t\ticon,\n\t\t\ttooltip: true\n\t\t} );\n\n\t\t// Make dropdown button disabled when all options are disabled.\n\t\tdropdownView.bind( 'isEnabled' ).toMany( commands, 'isEnabled', ( ...areEnabled ) => {\n\t\t\treturn areEnabled.some( isEnabled => isEnabled );\n\t\t} );\n\n\t\tthis.listenTo( dropdownView, 'execute', evt => {\n\t\t\teditor.execute( ( evt.source as any ).commandName );\n\n\t\t\t// Toggling a switch button view should not move the focus to the editable.\n\t\t\tif ( !( evt.source instanceof SwitchButtonView ) ) {\n\t\t\t\teditor.editing.view.focus();\n\t\t\t}\n\t\t} );\n\n\t\treturn dropdownView;\n\t}\n\n\t/**\n\t * Creates a dropdown view with a {@link module:ui/dropdown/button/splitbuttonview~SplitButtonView} for\n\t * merge (and split)–related commands.\n\t *\n\t * @param label The dropdown button label.\n\t * @param icon An icon for the dropdown button.\n\t * @param options The list of options for the dropdown.\n\t */\n\tprivate _prepareMergeSplitButtonDropdown( label: string, icon: string, options: Array<ListDropdownItemDefinition>, locale: Locale ) {\n\t\tconst editor = this.editor;\n\t\tconst dropdownView = createDropdown( locale, SplitButtonView );\n\t\tconst mergeCommandName = 'mergeTableCells';\n\n\t\t// Main command.\n\t\tconst mergeCommand: MergeCellsCommand = editor.commands.get( mergeCommandName )!;\n\n\t\t// Subcommands in the dropdown.\n\t\tconst commands = this._fillDropdownWithListOptions( dropdownView, options );\n\n\t\tdropdownView.buttonView.set( {\n\t\t\tlabel,\n\t\t\ticon,\n\t\t\ttooltip: true,\n\t\t\tisEnabled: true\n\t\t} );\n\n\t\t// Make dropdown button disabled when all options are disabled together with the main command.\n\t\tdropdownView.bind( 'isEnabled' ).toMany( [ mergeCommand, ...commands ], 'isEnabled', ( ...areEnabled ) => {\n\t\t\treturn areEnabled.some( isEnabled => isEnabled );\n\t\t} );\n\n\t\t// Merge selected table cells when the main part of the split button is clicked.\n\t\tthis.listenTo( dropdownView.buttonView, 'execute', () => {\n\t\t\teditor.execute( mergeCommandName );\n\t\t\teditor.editing.view.focus();\n\t\t} );\n\n\t\t// Execute commands for events coming from the list in the dropdown panel.\n\t\tthis.listenTo( dropdownView, 'execute', evt => {\n\t\t\teditor.execute( ( evt.source as any ).commandName );\n\t\t\teditor.editing.view.focus();\n\t\t} );\n\n\t\treturn dropdownView;\n\t}\n\n\t/**\n\t * Injects a {@link module:ui/list/listview~ListView} into the passed dropdown with buttons\n\t * which execute editor commands as configured in passed options.\n\t *\n\t * @param options The list of options for the dropdown.\n\t * @returns Commands the list options are interacting with.\n\t */\n\tprivate _fillDropdownWithListOptions( dropdownView: DropdownView, options: Array<ListDropdownItemDefinition> ) {\n\t\tconst editor = this.editor;\n\t\tconst commands: Array<Command> = [];\n\t\tconst itemDefinitions = new Collection<ListDropdownItemDefinition>();\n\n\t\tfor ( const option of options ) {\n\t\t\taddListOption( option, editor, commands, itemDefinitions );\n\t\t}\n\n\t\taddListToDropdown( dropdownView, itemDefinitions );\n\n\t\treturn commands;\n\t}\n}\n\n/**\n * Adds an option to a list view.\n *\n * @param option A configuration option.\n * @param commands The list of commands to update.\n * @param itemDefinitions A collection of dropdown items to update with the given option.\n */\nfunction addListOption(\n\toption: ListDropdownItemDefinition,\n\teditor: Editor,\n\tcommands: Array<Command>,\n\titemDefinitions: Collection<ListDropdownItemDefinition>\n) {\n\tif ( option.type === 'button' || option.type === 'switchbutton' ) {\n\t\tconst model = option.model = new Model( option.model );\n\t\tconst { commandName, bindIsOn } = option.model;\n\t\tconst command = editor.commands.get( commandName as string )!;\n\n\t\tcommands.push( command );\n\n\t\tmodel.set( { commandName } );\n\n\t\tmodel.bind( 'isEnabled' ).to( command );\n\n\t\tif ( bindIsOn ) {\n\t\t\tmodel.bind( 'isOn' ).to( command, 'value' );\n\t\t}\n\n\t\tmodel.set( {\n\t\t\twithText: true\n\t\t} );\n\t}\n\n\titemDefinitions.add( option );\n}\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M3 6v3h4V6H3zm0 4v3h4v-3H3zm0 4v3h4v-3H3zm5 3h4v-3H8v3zm5 0h4v-3h-4v3zm4-4v-3h-4v3h4zm0-4V6h-4v3h4zm1.5 8a1.5 1.5 0 0 1-1.5 1.5H3A1.5 1.5 0 0 1 1.5 17V4c.222-.863 1.068-1.5 2-1.5h13c.932 0 1.778.637 2 1.5v13zM12 13v-3H8v3h4zm0-4V6H8v3h4z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z\\\" opacity=\\\".6\\\"/><path d=\\\"M18 7v1H2V7h16zm0 5v1H2v-1h16z\\\" opacity=\\\".6\\\"/><path d=\\\"M14 1v18a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1zm-2 1H8v4h4V2zm0 6H8v4h4V8zm0 6H8v4h4v-4z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z\\\" opacity=\\\".6\\\"/><path d=\\\"M7 2h1v16H7V2zm5 0h1v16h-1V2z\\\" opacity=\\\".6\\\"/><path d=\\\"M1 6h18a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm1 2v4h4V8H2zm6 0v4h4V8H8zm6 0v4h4V8h-4z\\\"/></svg>\";","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z\\\" opacity=\\\".6\\\"/><path d=\\\"M7 2h1v16H7V2zm5 0h1v7h-1V2zm6 5v1H2V7h16zM8 12v1H2v-1h6z\\\" opacity=\\\".6\\\"/><path d=\\\"M7 7h12a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1zm1 2v9h10V9H8z\\\"/></svg>\";","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./tableselection.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableselection\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { type EventInfo, first } from 'ckeditor5/src/utils';\n\nimport type {\n\tElement,\n\tDocumentFragment,\n\tSelection,\n\tDowncastWriter,\n\tViewElement,\n\tModelDeleteContentEvent\n} from 'ckeditor5/src/engine';\n\nimport type {\n\tViewDocumentInsertTextEvent,\n\tInsertTextEventData\n} from 'ckeditor5/src/typing';\n\nimport TableWalker from './tablewalker';\nimport TableUtils from './tableutils';\n\nimport { cropTableToDimensions, adjustLastRowIndex, adjustLastColumnIndex } from './utils/structure';\n\nimport '../theme/tableselection.css';\n\n/**\n * This plugin enables the advanced table cells, rows and columns selection.\n * It is loaded automatically by the {@link module:table/table~Table} plugin.\n */\nexport default class TableSelection extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableSelection' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ TableUtils, TableUtils ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\n\t\tthis.listenTo<ModelDeleteContentEvent>(\n\t\t\tmodel,\n\t\t\t'deleteContent',\n\t\t\t( evt, args ) => this._handleDeleteContent( evt, args ),\n\t\t\t{ priority: 'high' }\n\t\t);\n\n\t\tthis.listenTo<ViewDocumentInsertTextEvent>(\n\t\t\tview.document,\n\t\t\t'insertText',\n\t\t\t( evt, data ) => this._handleInsertTextEvent( evt, data ),\n\t\t\t{ priority: 'high' }\n\t\t);\n\n\t\tthis._defineSelectionConverter();\n\t\tthis._enablePluginDisabling(); // sic!\n\t}\n\n\t/**\n\t * Returns the currently selected table cells or `null` if it is not a table cells selection.\n\t */\n\tpublic getSelectedTableCells(): Array<Element> | null {\n\t\tconst tableUtils = this.editor.plugins.get( TableUtils );\n\t\tconst selection = this.editor.model.document.selection;\n\n\t\tconst selectedCells = tableUtils.getSelectedTableCells( selection );\n\n\t\tif ( selectedCells.length == 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// This should never happen, but let's know if it ever happens.\n\t\t// @if CK_DEBUG //\tif ( selectedCells.length != selection.rangeCount ) {\n\t\t// @if CK_DEBUG //\t\tconsole.warn( 'Mixed selection warning. The selection contains table cells and some other ranges.' );\n\t\t// @if CK_DEBUG //\t}\n\n\t\treturn selectedCells;\n\t}\n\n\t/**\n\t * Returns the selected table fragment as a document fragment.\n\t */\n\tpublic getSelectionAsFragment(): DocumentFragment | null {\n\t\tconst tableUtils = this.editor.plugins.get( TableUtils );\n\t\tconst selectedCells = this.getSelectedTableCells();\n\n\t\tif ( !selectedCells ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this.editor.model.change( writer => {\n\t\t\tconst documentFragment = writer.createDocumentFragment();\n\n\t\t\tconst { first: firstColumn, last: lastColumn } = tableUtils.getColumnIndexes( selectedCells );\n\t\t\tconst { first: firstRow, last: lastRow } = tableUtils.getRowIndexes( selectedCells );\n\n\t\t\tconst sourceTable = selectedCells[ 0 ].findAncestor( 'table' )!;\n\n\t\t\tlet adjustedLastRow = lastRow;\n\t\t\tlet adjustedLastColumn = lastColumn;\n\n\t\t\t// If the selection is rectangular there could be a case of all cells in the last row/column spanned over\n\t\t\t// next row/column so the real lastRow/lastColumn should be updated.\n\t\t\tif ( tableUtils.isSelectionRectangular( selectedCells ) ) {\n\t\t\t\tconst dimensions = {\n\t\t\t\t\tfirstColumn,\n\t\t\t\t\tlastColumn,\n\t\t\t\t\tfirstRow,\n\t\t\t\t\tlastRow\n\t\t\t\t};\n\n\t\t\t\tadjustedLastRow = adjustLastRowIndex( sourceTable, dimensions );\n\t\t\t\tadjustedLastColumn = adjustLastColumnIndex( sourceTable, dimensions );\n\t\t\t}\n\n\t\t\tconst cropDimensions = {\n\t\t\t\tstartRow: firstRow,\n\t\t\t\tstartColumn: firstColumn,\n\t\t\t\tendRow: adjustedLastRow,\n\t\t\t\tendColumn: adjustedLastColumn\n\t\t\t};\n\n\t\t\tconst table = cropTableToDimensions( sourceTable, cropDimensions, writer );\n\n\t\t\twriter.insert( table, documentFragment, 0 );\n\n\t\t\treturn documentFragment;\n\t\t} );\n\t}\n\n\t/**\n\t * Sets the model selection based on given anchor and target cells (can be the same cell).\n\t * Takes care of setting the backward flag.\n\t *\n\t * ```ts\n\t * const modelRoot = editor.model.document.getRoot();\n\t * const firstCell = modelRoot.getNodeByPath( [ 0, 0, 0 ] );\n\t * const lastCell = modelRoot.getNodeByPath( [ 0, 0, 1 ] );\n\t *\n\t * const tableSelection = editor.plugins.get( 'TableSelection' );\n\t * tableSelection.setCellSelection( firstCell, lastCell );\n\t * ```\n\t */\n\tpublic setCellSelection( anchorCell: Element, targetCell: Element ): void {\n\t\tconst cellsToSelect = this._getCellsToSelect( anchorCell, targetCell );\n\n\t\tthis.editor.model.change( writer => {\n\t\t\twriter.setSelection(\n\t\t\t\tcellsToSelect.cells.map( cell => writer.createRangeOn( cell ) ),\n\t\t\t\t{ backward: cellsToSelect.backward }\n\t\t\t);\n\t\t} );\n\t}\n\n\t/**\n\t * Returns the focus cell from the current selection.\n\t */\n\tpublic getFocusCell(): Element | null {\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst focusCellRange = [ ...selection.getRanges() ].pop()!;\n\t\tconst element = focusCellRange.getContainedElement();\n\n\t\tif ( element && element.is( 'element', 'tableCell' ) ) {\n\t\t\treturn element;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the anchor cell from the current selection.\n\t */\n\tpublic getAnchorCell(): Element | null {\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst anchorCellRange = first( selection.getRanges() )!;\n\t\tconst element = anchorCellRange.getContainedElement();\n\n\t\tif ( element && element.is( 'element', 'tableCell' ) ) {\n\t\t\treturn element;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Defines a selection converter which marks the selected cells with a specific class.\n\t *\n\t * The real DOM selection is put in the last cell. Since the order of ranges is dependent on whether the\n\t * selection is backward or not, the last cell will usually be close to the \"focus\" end of the selection\n\t * (a selection has anchor and focus).\n\t *\n\t * The real DOM selection is then hidden with CSS.\n\t */\n\tprivate _defineSelectionConverter() {\n\t\tconst editor = this.editor;\n\t\tconst highlighted: Set<ViewElement> = new Set();\n\n\t\teditor.conversion.for( 'editingDowncast' ).add( dispatcher => dispatcher.on( 'selection', ( evt, data, conversionApi ) => {\n\t\t\tconst viewWriter = conversionApi.writer;\n\n\t\t\tclearHighlightedTableCells( viewWriter );\n\n\t\t\tconst selectedCells = this.getSelectedTableCells();\n\n\t\t\tif ( !selectedCells ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor ( const tableCell of selectedCells ) {\n\t\t\t\tconst viewElement = conversionApi.mapper.toViewElement( tableCell )!;\n\n\t\t\t\tviewWriter.addClass( 'ck-editor__editable_selected', viewElement );\n\t\t\t\thighlighted.add( viewElement );\n\t\t\t}\n\n\t\t\tconst lastViewCell = conversionApi.mapper.toViewElement( selectedCells[ selectedCells.length - 1 ] );\n\t\t\tviewWriter.setSelection( lastViewCell, 0 );\n\t\t}, { priority: 'lowest' } ) );\n\n\t\tfunction clearHighlightedTableCells( viewWriter: DowncastWriter ) {\n\t\t\tfor ( const previouslyHighlighted of highlighted ) {\n\t\t\t\tviewWriter.removeClass( 'ck-editor__editable_selected', previouslyHighlighted );\n\t\t\t}\n\n\t\t\thighlighted.clear();\n\t\t}\n\t}\n\n\t/**\n\t * Creates a listener that reacts to changes in {@link #isEnabled} and, if the plugin was disabled,\n\t * it collapses the multi-cell selection to a regular selection placed inside a table cell.\n\t *\n\t * This listener helps features that disable the table selection plugin bring the selection\n\t * to a clear state they can work with (for instance, because they don't support multiple cell selection).\n\t */\n\tprivate _enablePluginDisabling() {\n\t\tconst editor = this.editor;\n\n\t\tthis.on( 'change:isEnabled', () => {\n\t\t\tif ( !this.isEnabled ) {\n\t\t\t\tconst selectedCells = this.getSelectedTableCells();\n\n\t\t\t\tif ( !selectedCells ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\tconst position = writer.createPositionAt( selectedCells[ 0 ], 0 );\n\t\t\t\t\tconst range = editor.model.schema.getNearestSelectionRange( position );\n\n\t\t\t\t\twriter.setSelection( range );\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Overrides the default `model.deleteContent()` behavior over a selected table fragment.\n\t *\n\t * @param args Delete content method arguments.\n\t */\n\tprivate _handleDeleteContent( event: EventInfo, args: Array<unknown> ) {\n\t\tconst tableUtils = this.editor.plugins.get( TableUtils );\n\t\tconst selection = args[ 0 ] as Selection;\n\t\tconst options = args[ 1 ] as { direction?: string };\n\t\tconst model = this.editor.model;\n\t\tconst isBackward = !options || options.direction == 'backward';\n\t\tconst selectedTableCells = tableUtils.getSelectedTableCells( selection );\n\n\t\tif ( !selectedTableCells.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.stop();\n\n\t\tmodel.change( writer => {\n\t\t\tconst tableCellToSelect = selectedTableCells[ isBackward ? selectedTableCells.length - 1 : 0 ];\n\n\t\t\tmodel.change( writer => {\n\t\t\t\tfor ( const tableCell of selectedTableCells ) {\n\t\t\t\t\tmodel.deleteContent( writer.createSelection( tableCell, 'in' ) );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tconst rangeToSelect = model.schema.getNearestSelectionRange( writer.createPositionAt( tableCellToSelect, 0 ) );\n\n\t\t\t// Note: we ignore the case where rangeToSelect may be null because deleteContent() will always (unless someone broke it)\n\t\t\t// create an empty paragraph to accommodate the selection.\n\n\t\t\tif ( selection.is( 'documentSelection' ) ) {\n\t\t\t\twriter.setSelection( rangeToSelect );\n\t\t\t} else {\n\t\t\t\tselection.setTo( rangeToSelect );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * This handler makes it possible to remove the content of all selected cells by starting to type.\n\t * If you take a look at {@link #_defineSelectionConverter} you will find out that despite the multi-cell selection being set\n\t * in the model, the view selection is collapsed in the last cell (because most browsers are unable to render multi-cell selections;\n\t * yes, it's a hack).\n\t *\n\t * When multiple cells are selected in the model and the user starts to type, the\n\t * {@link module:engine/view/document~Document#event:insertText} event carries information provided by the\n\t * beforeinput DOM event, that in turn only knows about this collapsed DOM selection in the last cell.\n\t *\n\t * As a result, the selected cells have no chance to be cleaned up. To fix this, this listener intercepts\n\t * the event and injects the custom view selection in the data that translates correctly to the actual state\n\t * of the multi-cell selection in the model.\n\t *\n\t * @param data Insert text event data.\n\t */\n\tprivate _handleInsertTextEvent( evt: EventInfo, data: InsertTextEventData ) {\n\t\tconst editor = this.editor;\n\t\tconst selectedCells = this.getSelectedTableCells();\n\n\t\tif ( !selectedCells ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst view = editor.editing.view;\n\t\tconst mapper = editor.editing.mapper;\n\t\tconst viewRanges = selectedCells.map( tableCell => view.createRangeOn( mapper.toViewElement( tableCell )! ) );\n\n\t\tdata.selection = view.createSelection( viewRanges );\n\t}\n\n\t/**\n\t * Returns an array of table cells that should be selected based on the\n\t * given anchor cell and target (focus) cell.\n\t *\n\t * The cells are returned in a reverse direction if the selection is backward.\n\t */\n\tprivate _getCellsToSelect( anchorCell: Element, targetCell: Element ) {\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst startLocation = tableUtils.getCellLocation( anchorCell );\n\t\tconst endLocation = tableUtils.getCellLocation( targetCell );\n\n\t\tconst startRow = Math.min( startLocation.row, endLocation.row );\n\t\tconst endRow = Math.max( startLocation.row, endLocation.row );\n\n\t\tconst startColumn = Math.min( startLocation.column, endLocation.column );\n\t\tconst endColumn = Math.max( startLocation.column, endLocation.column );\n\n\t\t// 2-dimensional array of the selected cells to ease flipping the order of cells for backward selections.\n\t\tconst selectionMap: Array<Array<Element>> = new Array( endRow - startRow + 1 ).fill( null ).map( () => [] );\n\n\t\tconst walkerOptions = {\n\t\t\tstartRow,\n\t\t\tendRow,\n\t\t\tstartColumn,\n\t\t\tendColumn\n\t\t};\n\n\t\tfor ( const { row, cell } of new TableWalker( anchorCell.findAncestor( 'table' )!, walkerOptions ) ) {\n\t\t\tselectionMap[ row - startRow ].push( cell );\n\t\t}\n\n\t\tconst flipVertically = endLocation.row < startLocation.row;\n\t\tconst flipHorizontally = endLocation.column < startLocation.column;\n\n\t\tif ( flipVertically ) {\n\t\t\tselectionMap.reverse();\n\t\t}\n\n\t\tif ( flipHorizontally ) {\n\t\t\tselectionMap.forEach( row => row.reverse() );\n\t\t}\n\n\t\treturn {\n\t\t\tcells: selectionMap.flat(),\n\t\t\tbackward: flipVertically || flipHorizontally\n\t\t};\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableclipboard\n */\n\nimport type {\n\tClipboardEventData,\n\tViewDocumentClipboardOutputEvent,\n\tViewDocumentCopyEvent,\n\tViewDocumentCutEvent\n} from 'ckeditor5/src/clipboard';\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport type {\n\tDocumentFragment,\n\tDocumentSelection,\n\tDomEventData,\n\tElement,\n\tItem,\n\tModel,\n\tModelInsertContentEvent,\n\tPosition,\n\tSelection,\n\tWriter\n} from 'ckeditor5/src/engine';\n\nimport type { EventInfo } from 'ckeditor5/src/utils';\n\nimport TableSelection from './tableselection';\nimport TableWalker, { type TableSlot } from './tablewalker';\nimport TableUtils from './tableutils';\nimport {\n\tcropTableToDimensions,\n\tgetHorizontallyOverlappingCells,\n\tgetVerticallyOverlappingCells,\n\tremoveEmptyRowsColumns,\n\tsplitHorizontally,\n\tsplitVertically,\n\ttrimTableCellIfNeeded,\n\tadjustLastRowIndex,\n\tadjustLastColumnIndex\n} from './utils/structure';\n\n/**\n * This plugin adds support for copying/cutting/pasting fragments of tables.\n * It is loaded automatically by the {@link module:table/table~Table} plugin.\n */\nexport default class TableClipboard extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableClipboard' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ TableSelection, TableUtils ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst viewDocument = editor.editing.view.document;\n\n\t\tthis.listenTo<ViewDocumentCopyEvent>( viewDocument, 'copy', ( evt, data ) => this._onCopyCut( evt, data ) );\n\t\tthis.listenTo<ViewDocumentCutEvent>( viewDocument, 'cut', ( evt, data ) => this._onCopyCut( evt, data ) );\n\t\tthis.listenTo<ModelInsertContentEvent>(\n\t\t\teditor.model,\n\t\t\t'insertContent',\n\t\t\t( evt, [ content, selectable ] ) => this._onInsertContent( evt, content, selectable ),\n\t\t\t{ priority: 'high' }\n\t\t);\n\n\t\tthis.decorate( '_replaceTableSlotCell' );\n\t}\n\n\t/**\n\t * Copies table content to a clipboard on \"copy\" & \"cut\" events.\n\t *\n\t * @param evt An object containing information about the handled event.\n\t * @param data Clipboard event data.\n\t */\n\tprivate _onCopyCut( evt: EventInfo<'copy' | 'cut'>, data: DomEventData<ClipboardEvent> & ClipboardEventData ) {\n\t\tconst tableSelection = this.editor.plugins.get( TableSelection );\n\n\t\tif ( !tableSelection.getSelectedTableCells() ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( evt.name == 'cut' && !this.editor.model.canEditAt( this.editor.model.document.selection ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdata.preventDefault();\n\t\tevt.stop();\n\n\t\tconst dataController = this.editor.data;\n\t\tconst viewDocument = this.editor.editing.view.document;\n\n\t\tconst content = dataController.toView( tableSelection.getSelectionAsFragment()! );\n\n\t\tviewDocument.fire<ViewDocumentClipboardOutputEvent>( 'clipboardOutput', {\n\t\t\tdataTransfer: data.dataTransfer,\n\t\t\tcontent,\n\t\t\tmethod: evt.name\n\t\t} );\n\t}\n\n\t/**\n\t * Overrides default {@link module:engine/model/model~Model#insertContent `model.insertContent()`} method to handle pasting table inside\n\t * selected table fragment.\n\t *\n\t * Depending on selected table fragment:\n\t * - If a selected table fragment is smaller than paste table it will crop pasted table to match dimensions.\n\t * - If dimensions are equal it will replace selected table fragment with a pasted table contents.\n\t *\n\t * @param content The content to insert.\n\t * @param selectable The selection into which the content should be inserted.\n\t * If not provided the current model document selection will be used.\n\t */\n\tprivate _onInsertContent( evt: EventInfo, content: DocumentFragment | Item, selectable: Selection | DocumentSelection | undefined ) {\n\t\tif ( selectable && !selectable.is( 'documentSelection' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this.editor.model;\n\t\tconst tableUtils = this.editor.plugins.get( TableUtils );\n\n\t\t// We might need to crop table before inserting so reference might change.\n\t\tlet pastedTable = this.getTableIfOnlyTableInContent( content, model )!;\n\n\t\tif ( !pastedTable ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst selectedTableCells = tableUtils.getSelectionAffectedTableCells( model.document.selection );\n\n\t\tif ( !selectedTableCells.length ) {\n\t\t\tremoveEmptyRowsColumns( pastedTable, tableUtils );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Override default model.insertContent() handling at this point.\n\t\tevt.stop();\n\n\t\tmodel.change( writer => {\n\t\t\tconst pastedDimensions = {\n\t\t\t\twidth: tableUtils.getColumns( pastedTable ),\n\t\t\t\theight: tableUtils.getRows( pastedTable )\n\t\t\t};\n\n\t\t\t// Prepare the table for pasting.\n\t\t\tconst selection = prepareTableForPasting( selectedTableCells, pastedDimensions, writer, tableUtils );\n\n\t\t\t// Beyond this point we operate on a fixed content table with rectangular selection and proper last row/column values.\n\n\t\t\tconst selectionHeight = selection.lastRow - selection.firstRow + 1;\n\t\t\tconst selectionWidth = selection.lastColumn - selection.firstColumn + 1;\n\n\t\t\t// Crop pasted table if:\n\t\t\t// - Pasted table dimensions exceeds selection area.\n\t\t\t// - Pasted table has broken layout (ie some cells sticks out by the table dimensions established by the first and last row).\n\t\t\t//\n\t\t\t// Note: The table dimensions are established by the width of the first row and the total number of rows.\n\t\t\t// It is possible to programmatically create a table that has rows which would have cells anchored beyond first row width but\n\t\t\t// such table will not be created by other editing solutions.\n\t\t\tconst cropDimensions = {\n\t\t\t\tstartRow: 0,\n\t\t\t\tstartColumn: 0,\n\t\t\t\tendRow: Math.min( selectionHeight, pastedDimensions.height ) - 1,\n\t\t\t\tendColumn: Math.min( selectionWidth, pastedDimensions.width ) - 1\n\t\t\t};\n\n\t\t\tpastedTable = cropTableToDimensions( pastedTable, cropDimensions, writer );\n\n\t\t\t// Content table to which we insert a pasted table.\n\t\t\tconst selectedTable = selectedTableCells[ 0 ].findAncestor( 'table' )!;\n\n\t\t\tconst cellsToSelect = this._replaceSelectedCellsWithPasted( pastedTable, pastedDimensions, selectedTable, selection, writer );\n\n\t\t\tif ( this.editor.plugins.get( 'TableSelection' ).isEnabled ) {\n\t\t\t\t// Selection ranges must be sorted because the first and last selection ranges are considered\n\t\t\t\t// as anchor/focus cell ranges for multi-cell selection.\n\t\t\t\tconst selectionRanges = tableUtils.sortRanges( cellsToSelect.map( cell => writer.createRangeOn( cell ) ) );\n\n\t\t\t\twriter.setSelection( selectionRanges );\n\t\t\t} else {\n\t\t\t\t// Set selection inside first cell if multi-cell selection is disabled.\n\t\t\t\twriter.setSelection( cellsToSelect[ 0 ], 0 );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Replaces the part of selectedTable with pastedTable.\n\t */\n\tprivate _replaceSelectedCellsWithPasted(\n\t\tpastedTable: Element,\n\t\tpastedDimensions: Record<string, number>,\n\t\tselectedTable: Element,\n\t\tselection: Record<string, number>,\n\t\twriter: Writer\n\t) {\n\t\tconst { width: pastedWidth, height: pastedHeight } = pastedDimensions;\n\n\t\t// Holds two-dimensional array that is addressed by [ row ][ column ] that stores cells anchored at given location.\n\t\tconst pastedTableLocationMap = createLocationMap( pastedTable, pastedWidth, pastedHeight );\n\n\t\tconst selectedTableMap = [ ...new TableWalker( selectedTable, {\n\t\t\tstartRow: selection.firstRow,\n\t\t\tendRow: selection.lastRow,\n\t\t\tstartColumn: selection.firstColumn,\n\t\t\tendColumn: selection.lastColumn,\n\t\t\tincludeAllSlots: true\n\t\t} ) ];\n\n\t\t// Selection must be set to pasted cells (some might be removed or new created).\n\t\tconst cellsToSelect: Array<Element> = [];\n\n\t\t// Store next cell insert position.\n\t\tlet insertPosition: Position;\n\n\t\t// Content table replace cells algorithm iterates over a selected table fragment and:\n\t\t//\n\t\t// - Removes existing table cells at current slot (location).\n\t\t// - Inserts cell from a pasted table for a matched slots.\n\t\t//\n\t\t// This ensures proper table geometry after the paste\n\t\tfor ( const tableSlot of selectedTableMap ) {\n\t\t\tconst { row, column } = tableSlot;\n\n\t\t\t// Save the insert position for current row start.\n\t\t\tif ( column === selection.firstColumn ) {\n\t\t\t\tinsertPosition = tableSlot.getPositionBefore();\n\t\t\t}\n\n\t\t\t// Map current table slot location to an pasted table slot location.\n\t\t\tconst pastedRow = row - selection.firstRow;\n\t\t\tconst pastedColumn = column - selection.firstColumn;\n\t\t\tconst pastedCell = pastedTableLocationMap[ pastedRow % pastedHeight ][ pastedColumn % pastedWidth ];\n\n\t\t\t// Clone cell to insert (to duplicate its attributes and children).\n\t\t\t// Cloning is required to support repeating pasted table content when inserting to a bigger selection.\n\t\t\tconst cellToInsert = pastedCell ? writer.cloneElement( pastedCell ) : null;\n\n\t\t\t// Replace the cell from the current slot with new table cell.\n\t\t\tconst newTableCell = this._replaceTableSlotCell( tableSlot, cellToInsert, insertPosition!, writer );\n\n\t\t\t// The cell was only removed.\n\t\t\tif ( !newTableCell ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Trim the cell if it's row/col-spans would exceed selection area.\n\t\t\ttrimTableCellIfNeeded( newTableCell, row, column, selection.lastRow, selection.lastColumn, writer );\n\n\t\t\tcellsToSelect.push( newTableCell );\n\n\t\t\tinsertPosition = writer.createPositionAfter( newTableCell );\n\t\t}\n\n\t\t// If there are any headings, all the cells that overlap from heading must be splitted.\n\t\tconst headingRows = parseInt( selectedTable.getAttribute( 'headingRows' ) as string || '0' );\n\t\tconst headingColumns = parseInt( selectedTable.getAttribute( 'headingColumns' ) as string || '0' );\n\n\t\tconst areHeadingRowsIntersectingSelection = selection.firstRow < headingRows && headingRows <= selection.lastRow;\n\t\tconst areHeadingColumnsIntersectingSelection = selection.firstColumn < headingColumns && headingColumns <= selection.lastColumn;\n\n\t\tif ( areHeadingRowsIntersectingSelection ) {\n\t\t\tconst columnsLimit = { first: selection.firstColumn, last: selection.lastColumn };\n\t\t\tconst newCells = doHorizontalSplit( selectedTable, headingRows, columnsLimit, writer, selection.firstRow ) as Array<Element>;\n\n\t\t\tcellsToSelect.push( ...newCells );\n\t\t}\n\n\t\tif ( areHeadingColumnsIntersectingSelection ) {\n\t\t\tconst rowsLimit = { first: selection.firstRow, last: selection.lastRow };\n\t\t\tconst newCells = doVerticalSplit( selectedTable, headingColumns, rowsLimit, writer ) as Array<Element>;\n\n\t\t\tcellsToSelect.push( ...newCells );\n\t\t}\n\n\t\treturn cellsToSelect;\n\t}\n\n\t/**\n\t * Replaces a single table slot.\n\t *\n\t * @returns Inserted table cell or null if slot should remain empty.\n\t * @private\n\t */\n\tpublic _replaceTableSlotCell(\n\t\ttableSlot: TableSlot,\n\t\tcellToInsert: Element | null,\n\t\tinsertPosition: Position,\n\t\twriter: Writer\n\t): Element | null {\n\t\tconst { cell, isAnchor } = tableSlot;\n\n\t\t// If the slot is occupied by a cell in a selected table - remove it.\n\t\t// The slot of this cell will be either:\n\t\t// - Replaced by a pasted table cell.\n\t\t// - Spanned by a previously pasted table cell.\n\t\tif ( isAnchor ) {\n\t\t\twriter.remove( cell );\n\t\t}\n\n\t\t// There is no cell to insert (might be spanned by other cell in a pasted table) - advance to the next content table slot.\n\t\tif ( !cellToInsert ) {\n\t\t\treturn null;\n\t\t}\n\n\t\twriter.insert( cellToInsert, insertPosition );\n\n\t\treturn cellToInsert;\n\t}\n\n\t/**\n\t * Extracts the table for pasting into a table.\n\t *\n\t * @param content The content to insert.\n\t * @param model The editor model.\n\t */\n\tpublic getTableIfOnlyTableInContent( content: DocumentFragment | Item, model: Model ): Element | null {\n\t\tif ( !content.is( 'documentFragment' ) && !content.is( 'element' ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Table passed directly.\n\t\tif ( content.is( 'element', 'table' ) ) {\n\t\t\treturn content;\n\t\t}\n\n\t\t// We do not support mixed content when pasting table into table.\n\t\t// See: https://github.com/ckeditor/ckeditor5/issues/6817.\n\t\tif ( content.childCount == 1 && content.getChild( 0 )!.is( 'element', 'table' ) ) {\n\t\t\treturn content.getChild( 0 ) as Element;\n\t\t}\n\n\t\t// If there are only whitespaces around a table then use that table for pasting.\n\n\t\tconst contentRange = model.createRangeIn( content );\n\n\t\tfor ( const element of contentRange.getItems() ) {\n\t\t\tif ( element.is( 'element', 'table' ) ) {\n\t\t\t\t// Stop checking if there is some content before table.\n\t\t\t\tconst rangeBefore = model.createRange( contentRange.start, model.createPositionBefore( element ) );\n\n\t\t\t\tif ( model.hasContent( rangeBefore, { ignoreWhitespaces: true } ) ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// Stop checking if there is some content after table.\n\t\t\t\tconst rangeAfter = model.createRange( model.createPositionAfter( element ), contentRange.end );\n\n\t\t\t\tif ( model.hasContent( rangeAfter, { ignoreWhitespaces: true } ) ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// There wasn't any content neither before nor after.\n\t\t\t\treturn element;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n}\n\n/**\n * Prepares a table for pasting and returns adjusted selection dimensions.\n */\nfunction prepareTableForPasting(\n\tselectedTableCells: Array<Element>,\n\tpastedDimensions: {\n\t\theight: number;\n\t\twidth: number;\n\t},\n\twriter: Writer,\n\ttableUtils: TableUtils\n) {\n\tconst selectedTable = selectedTableCells[ 0 ].findAncestor( 'table' )!;\n\n\tconst columnIndexes = tableUtils.getColumnIndexes( selectedTableCells );\n\tconst rowIndexes = tableUtils.getRowIndexes( selectedTableCells );\n\n\tconst selection = {\n\t\tfirstColumn: columnIndexes.first,\n\t\tlastColumn: columnIndexes.last,\n\t\tfirstRow: rowIndexes.first,\n\t\tlastRow: rowIndexes.last\n\t};\n\n\t// Single cell selected - expand selection to pasted table dimensions.\n\tconst shouldExpandSelection = selectedTableCells.length === 1;\n\n\tif ( shouldExpandSelection ) {\n\t\tselection.lastRow += pastedDimensions.height - 1;\n\t\tselection.lastColumn += pastedDimensions.width - 1;\n\n\t\texpandTableSize( selectedTable, selection.lastRow + 1, selection.lastColumn + 1, tableUtils );\n\t}\n\n\t// In case of expanding selection we do not reset the selection so in this case we will always try to fix selection\n\t// like in the case of a non-rectangular area. This might be fixed by re-setting selected cells array but this shortcut is safe.\n\tif ( shouldExpandSelection || !tableUtils.isSelectionRectangular( selectedTableCells ) ) {\n\t\t// For a non-rectangular selection (ie in which some cells sticks out from a virtual selection rectangle) we need to create\n\t\t// a table layout that has a rectangular selection. This will split cells so the selection become rectangular.\n\t\t// Beyond this point we will operate on fixed content table.\n\t\tsplitCellsToRectangularSelection( selectedTable, selection, writer );\n\t}\n\t// However a selected table fragment might be invalid if examined alone. Ie such table fragment:\n\t//\n\t// +---+---+---+---+\n\t// 0 | a | b | c | d |\n\t// + + +---+---+\n\t// 1 | | e | f | g |\n\t// + +---+ +---+\n\t// 2 | | h | | i | <- last row, each cell has rowspan = 2,\n\t// + + + + + so we need to return 3, not 2\n\t// 3 | | | | |\n\t// +---+---+---+---+\n\t//\n\t// is invalid as the cells \"h\" and \"i\" have rowspans.\n\t// This case needs only adjusting the selection dimension as the rest of the algorithm operates on empty slots also.\n\telse {\n\t\tselection.lastRow = adjustLastRowIndex( selectedTable, selection );\n\t\tselection.lastColumn = adjustLastColumnIndex( selectedTable, selection );\n\t}\n\n\treturn selection;\n}\n\n/**\n * Expand table (in place) to expected size.\n */\nfunction expandTableSize( table: Element, expectedHeight: number, expectedWidth: number, tableUtils: TableUtils ) {\n\tconst tableWidth = tableUtils.getColumns( table );\n\tconst tableHeight = tableUtils.getRows( table );\n\n\tif ( expectedWidth > tableWidth ) {\n\t\ttableUtils.insertColumns( table, {\n\t\t\tat: tableWidth,\n\t\t\tcolumns: expectedWidth - tableWidth\n\t\t} );\n\t}\n\n\tif ( expectedHeight > tableHeight ) {\n\t\ttableUtils.insertRows( table, {\n\t\t\tat: tableHeight,\n\t\t\trows: expectedHeight - tableHeight\n\t\t} );\n\t}\n}\n\n/**\n * Returns two-dimensional array that is addressed by [ row ][ column ] that stores cells anchored at given location.\n *\n * At given row & column location it might be one of:\n *\n * * cell - cell from pasted table anchored at this location.\n * * null - if no cell is anchored at this location.\n *\n * For instance, from a table below:\n *\n * +----+----+----+----+\n * | 00 | 01 | 02 | 03 |\n * + +----+----+----+\n * | | 11 | 13 |\n * +----+ +----+\n * | 20 | | 23 |\n * +----+----+----+----+\n *\n * The method will return an array (numbers represents cell element):\n *\n * ```ts\n * const map = [\n * [ '00', '01', '02', '03' ],\n * [ null, '11', null, '13' ],\n * [ '20', null, null, '23' ]\n * ]\n * ```\n *\n * This allows for a quick access to table at give row & column. For instance to access table cell \"13\" from pasted table call:\n *\n * ```ts\n * const cell = map[ 1 ][ 3 ]\n * ```\n */\nfunction createLocationMap( table: Element, width: number, height: number ) {\n\t// Create height x width (row x column) two-dimensional table to store cells.\n\tconst map = new Array( height ).fill( null )\n\t\t.map( () => new Array( width ).fill( null ) );\n\n\tfor ( const { column, row, cell } of new TableWalker( table ) ) {\n\t\tmap[ row ][ column ] = cell;\n\t}\n\n\treturn map;\n}\n\n/**\n * Make selected cells rectangular by splitting the cells that stand out from a rectangular selection.\n *\n * In the table below a selection is shown with \"::\" and slots with anchor cells are named.\n *\n * +----+----+----+----+----+ +----+----+----+----+----+\n * | 00 | 01 | 02 | 03 | | 00 | 01 | 02 | 03 |\n * + +----+ +----+----+ | ::::::::::::::::----+\n * | | 11 | | 13 | 14 | | ::11 | | 13:: 14 | <- first row\n * +----+----+ + +----+ +----::---| | ::----+\n * | 20 | 21 | | | 24 | select cells: | 20 ::21 | | :: 24 |\n * +----+----+ +----+----+ 11 -> 33 +----::---| |---::----+\n * | 30 | | 33 | 34 | | 30 :: | | 33:: 34 | <- last row\n * + + +----+ + | :::::::::::::::: +\n * | | | 43 | | | | | 43 | |\n * +----+----+----+----+----+ +----+----+----+----+----+\n * ^ ^\n * first & last columns\n *\n * Will update table to:\n *\n * +----+----+----+----+----+\n * | 00 | 01 | 02 | 03 |\n * + +----+----+----+----+\n * | | 11 | | 13 | 14 |\n * +----+----+ + +----+\n * | 20 | 21 | | | 24 |\n * +----+----+ +----+----+\n * | 30 | | | 33 | 34 |\n * + +----+----+----+ +\n * | | | | 43 | |\n * +----+----+----+----+----+\n *\n * In th example above:\n * - Cell \"02\" which have `rowspan = 4` must be trimmed at first and at after last row.\n * - Cell \"03\" which have `rowspan = 2` and `colspan = 2` must be trimmed at first column and after last row.\n * - Cells \"00\", \"03\" & \"30\" which cannot be cut by this algorithm as they are outside the trimmed area.\n * - Cell \"13\" cannot be cut as it is inside the trimmed area.\n */\nfunction splitCellsToRectangularSelection( table: Element, dimensions: Record<string, number>, writer: Writer ) {\n\tconst { firstRow, lastRow, firstColumn, lastColumn } = dimensions;\n\n\tconst rowIndexes = { first: firstRow, last: lastRow };\n\tconst columnIndexes = { first: firstColumn, last: lastColumn };\n\n\t// 1. Split cells vertically in two steps as first step might create cells that needs to split again.\n\tdoVerticalSplit( table, firstColumn, rowIndexes, writer );\n\tdoVerticalSplit( table, lastColumn + 1, rowIndexes, writer );\n\n\t// 2. Split cells horizontally in two steps as first step might create cells that needs to split again.\n\tdoHorizontalSplit( table, firstRow, columnIndexes, writer );\n\tdoHorizontalSplit( table, lastRow + 1, columnIndexes, writer, firstRow );\n}\n\nfunction doHorizontalSplit( table: Element, splitRow: number, limitColumns: Record<string, number>, writer: Writer, startRow: number = 0 ) {\n\t// If selection starts at first row then no split is needed.\n\tif ( splitRow < 1 ) {\n\t\treturn;\n\t}\n\n\tconst overlappingCells = getVerticallyOverlappingCells( table, splitRow, startRow );\n\n\t// Filter out cells that are not touching insides of the rectangular selection.\n\tconst cellsToSplit = overlappingCells.filter( ( { column, cellWidth } ) => isAffectedBySelection( column, cellWidth, limitColumns ) );\n\n\treturn cellsToSplit.map( ( { cell } ) => splitHorizontally( cell, splitRow, writer ) );\n}\n\nfunction doVerticalSplit( table: Element, splitColumn: number, limitRows: Record<string, number>, writer: Writer ) {\n\t// If selection starts at first column then no split is needed.\n\tif ( splitColumn < 1 ) {\n\t\treturn;\n\t}\n\n\tconst overlappingCells = getHorizontallyOverlappingCells( table, splitColumn );\n\n\t// Filter out cells that are not touching insides of the rectangular selection.\n\tconst cellsToSplit = overlappingCells.filter( ( { row, cellHeight } ) => isAffectedBySelection( row, cellHeight, limitRows ) );\n\n\treturn cellsToSplit.map( ( { cell, column } ) => splitVertically( cell, column, splitColumn, writer ) );\n}\n\n/**\n * Checks if cell at given row (column) is affected by a rectangular selection defined by first/last column (row).\n *\n * The same check is used for row as for column.\n */\nfunction isAffectedBySelection( index: number, span: number, limit: Record<string, number> ) {\n\tconst endIndex = index + span - 1;\n\tconst { first, last } = limit;\n\n\tconst isInsideSelection = index >= first && index <= last;\n\tconst overlapsSelectionFromOutside = index < first && endIndex >= first;\n\n\treturn isInsideSelection || overlapsSelectionFromOutside;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablekeyboard\n */\n\nimport TableSelection from './tableselection';\nimport TableWalker from './tablewalker';\nimport TableUtils from './tableutils';\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport {\n\tgetLocalizedArrowKeyCodeDirection,\n\ttype EventInfo,\n\ttype ArrowKeyCodeDirection,\n\ttype KeystrokeInfo\n} from 'ckeditor5/src/utils';\n\nimport type {\n\tBubblingEventInfo,\n\tDocumentSelection,\n\tDomEventData,\n\tElement,\n\tSelection,\n\tViewDocumentArrowKeyEvent,\n\tViewDocumentTabEvent\n} from 'ckeditor5/src/engine';\n\n/**\n * This plugin enables keyboard navigation for tables.\n * It is loaded automatically by the {@link module:table/table~Table} plugin.\n */\nexport default class TableKeyboard extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableKeyboard' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ TableSelection, TableUtils ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst view = this.editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>(\n\t\t\tviewDocument,\n\t\t\t'arrowKey',\n\t\t\t( ...args ) => this._onArrowKey( ...args ),\n\t\t\t{ context: 'table' }\n\t\t);\n\n\t\tthis.listenTo<ViewDocumentTabEvent>(\n\t\t\tviewDocument,\n\t\t\t'tab',\n\t\t\t( ...args ) => this._handleTabOnSelectedTable( ...args ),\n\t\t\t{ context: 'figure' }\n\t\t);\n\n\t\tthis.listenTo<ViewDocumentTabEvent>(\n\t\t\tviewDocument,\n\t\t\t'tab',\n\t\t\t( ...args ) => this._handleTab( ...args ),\n\t\t\t{ context: [ 'th', 'td' ] }\n\t\t);\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:tab tab} events for the <kbd>Tab</kbd> key executed\n\t * when the table widget is selected.\n\t */\n\tprivate _handleTabOnSelectedTable( bubblingEventInfo: BubblingEventInfo, domEventData: DomEventData ) {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\tif ( !selectedElement || !selectedElement.is( 'element', 'table' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdomEventData.preventDefault();\n\t\tdomEventData.stopPropagation();\n\t\tbubblingEventInfo.stop();\n\n\t\teditor.model.change( writer => {\n\t\t\twriter.setSelection( writer.createRangeIn( ( selectedElement.getChild( 0 ) as Element ).getChild( 0 ) as Element ) );\n\t\t} );\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:tab tab} events for the <kbd>Tab</kbd> key executed\n\t * inside table cells.\n\t */\n\tprivate _handleTab( bubblingEventInfo: BubblingEventInfo, domEventData: DomEventData & KeystrokeInfo ) {\n\t\tconst editor = this.editor;\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( TableUtils );\n\t\tconst tableSelection: TableSelection = this.editor.plugins.get( 'TableSelection' );\n\n\t\tconst selection = editor.model.document.selection;\n\t\tconst isForward = !domEventData.shiftKey;\n\n\t\tlet tableCell: Element | null = tableUtils.getTableCellsContainingSelection( selection )[ 0 ];\n\n\t\tif ( !tableCell ) {\n\t\t\ttableCell = tableSelection.getFocusCell();\n\t\t}\n\n\t\tif ( !tableCell ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdomEventData.preventDefault();\n\t\tdomEventData.stopPropagation();\n\t\tbubblingEventInfo.stop();\n\n\t\tconst tableRow = tableCell.parent as Element;\n\t\tconst table = tableRow.parent as Element;\n\n\t\tconst currentRowIndex = table.getChildIndex( tableRow )!;\n\t\tconst currentCellIndex = tableRow.getChildIndex( tableCell )!;\n\n\t\tconst isFirstCellInRow = currentCellIndex === 0;\n\n\t\tif ( !isForward && isFirstCellInRow && currentRowIndex === 0 ) {\n\t\t\t// Set the selection over the whole table if the selection was in the first table cell.\n\t\t\teditor.model.change( writer => {\n\t\t\t\twriter.setSelection( writer.createRangeOn( table ) );\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst isLastCellInRow = currentCellIndex === tableRow.childCount - 1;\n\t\tconst isLastRow = currentRowIndex === tableUtils.getRows( table ) - 1;\n\n\t\tif ( isForward && isLastRow && isLastCellInRow ) {\n\t\t\teditor.execute( 'insertTableRowBelow' );\n\n\t\t\t// Check if the command actually added a row. If `insertTableRowBelow` execution didn't add a row (because it was disabled\n\t\t\t// or it got overwritten) set the selection over the whole table to mirror the first cell case.\n\t\t\tif ( currentRowIndex === tableUtils.getRows( table ) - 1 ) {\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\twriter.setSelection( writer.createRangeOn( table ) );\n\t\t\t\t} );\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tlet cellToFocus: Element;\n\n\t\t// Move to the first cell in the next row.\n\t\tif ( isForward && isLastCellInRow ) {\n\t\t\tconst nextRow = table.getChild( currentRowIndex + 1 ) as Element;\n\n\t\t\tcellToFocus = nextRow.getChild( 0 ) as Element;\n\t\t}\n\t\t// Move to the last cell in the previous row.\n\t\telse if ( !isForward && isFirstCellInRow ) {\n\t\t\tconst previousRow = table.getChild( currentRowIndex - 1 ) as Element;\n\n\t\t\tcellToFocus = previousRow.getChild( previousRow.childCount - 1 ) as Element;\n\t\t}\n\t\t// Move to the next/previous cell.\n\t\telse {\n\t\t\tcellToFocus = tableRow.getChild( currentCellIndex + ( isForward ? 1 : -1 ) ) as Element;\n\t\t}\n\n\t\teditor.model.change( writer => {\n\t\t\twriter.setSelection( writer.createRangeIn( cellToFocus ) );\n\t\t} );\n\t}\n\n\t/**\n\t * Handles {@link module:engine/view/document~Document#event:keydown keydown} events.\n\t */\n\tprivate _onArrowKey( eventInfo: EventInfo, domEventData: DomEventData & KeystrokeInfo ) {\n\t\tconst editor = this.editor;\n\t\tconst keyCode = domEventData.keyCode;\n\n\t\tconst direction = getLocalizedArrowKeyCodeDirection( keyCode, editor.locale.contentLanguageDirection )!;\n\t\tconst wasHandled = this._handleArrowKeys( direction, domEventData.shiftKey );\n\n\t\tif ( wasHandled ) {\n\t\t\tdomEventData.preventDefault();\n\t\t\tdomEventData.stopPropagation();\n\t\t\teventInfo.stop();\n\t\t}\n\t}\n\n\t/**\n\t * Handles arrow keys to move the selection around the table.\n\t *\n\t * @param direction The direction of the arrow key.\n\t * @param expandSelection If the current selection should be expanded.\n\t * @returns Returns `true` if key was handled.\n\t */\n\tprivate _handleArrowKeys( direction: ArrowKeyCodeDirection, expandSelection: boolean ) {\n\t\tconst tableUtils = this.editor.plugins.get( TableUtils );\n\t\tconst tableSelection: TableSelection = this.editor.plugins.get( 'TableSelection' );\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst isForward = [ 'right', 'down' ].includes( direction );\n\n\t\t// In case one or more table cells are selected (from outside),\n\t\t// move the selection to a cell adjacent to the selected table fragment.\n\t\tconst selectedCells = tableUtils.getSelectedTableCells( selection );\n\n\t\tif ( selectedCells.length ) {\n\t\t\tlet focusCell;\n\n\t\t\tif ( expandSelection ) {\n\t\t\t\tfocusCell = tableSelection.getFocusCell();\n\t\t\t} else {\n\t\t\t\tfocusCell = isForward ? selectedCells[ selectedCells.length - 1 ] : selectedCells[ 0 ];\n\t\t\t}\n\n\t\t\tthis._navigateFromCellInDirection( focusCell!, direction, expandSelection );\n\n\t\t\treturn true;\n\t\t}\n\n\t\t// Abort if we're not in a table cell.\n\t\tconst tableCell = selection.focus!.findAncestor( 'tableCell' );\n\n\t\t/* istanbul ignore if: paranoid check -- @preserve */\n\t\tif ( !tableCell ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// When the selection is not collapsed.\n\t\tif ( !selection.isCollapsed ) {\n\t\t\tif ( expandSelection ) {\n\t\t\t\t// Navigation is in the opposite direction than the selection direction so this is shrinking of the selection.\n\t\t\t\t// Selection for sure will not approach cell edge.\n\t\t\t\t//\n\t\t\t\t// With a special case when all cell content is selected - then selection should expand to the other cell.\n\t\t\t\t// Note: When the entire cell gets selected using CTRL+A, the selection is always forward.\n\t\t\t\tif ( selection.isBackward == isForward && !selection.containsEntireContent( tableCell ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\t\t\t// It will collapse for non-object selected so it's not going to move to other cell.\n\t\t\t\tif ( !selectedElement || !model.schema.isObject( selectedElement ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Let's check if the selection is at the beginning/end of the cell.\n\t\tif ( this._isSelectionAtCellEdge( selection, tableCell, isForward ) ) {\n\t\t\tthis._navigateFromCellInDirection( tableCell, direction, expandSelection );\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Returns `true` if the selection is at the boundary of a table cell according to the navigation direction.\n\t *\n\t * @param selection The current selection.\n\t * @param tableCell The current table cell element.\n\t * @param isForward The expected navigation direction.\n\t */\n\tprivate _isSelectionAtCellEdge( selection: Selection | DocumentSelection, tableCell: Element, isForward: boolean ) {\n\t\tconst model = this.editor.model;\n\t\tconst schema = this.editor.model.schema;\n\n\t\tconst focus = isForward ? selection.getLastPosition()! : selection.getFirstPosition()!;\n\n\t\t// If the current limit element is not table cell we are for sure not at the cell edge.\n\t\t// Also `modifySelection` will not let us out of it.\n\t\tif ( !schema.getLimitElement( focus ).is( 'element', 'tableCell' ) ) {\n\t\t\tconst boundaryPosition = model.createPositionAt( tableCell, isForward ? 'end' : 0 );\n\n\t\t\treturn boundaryPosition.isTouching( focus );\n\t\t}\n\n\t\tconst probe = model.createSelection( focus );\n\n\t\tmodel.modifySelection( probe, { direction: isForward ? 'forward' : 'backward' } );\n\n\t\t// If there was no change in the focus position, then it's not possible to move the selection there.\n\t\treturn focus.isEqual( probe.focus! );\n\t}\n\n\t/**\n\t * Moves the selection from the given table cell in the specified direction.\n\t *\n\t * @param focusCell The table cell that is current multi-cell selection focus.\n\t * @param direction Direction in which selection should move.\n\t * @param expandSelection If the current selection should be expanded. Default value is false.\n\t */\n\tprotected _navigateFromCellInDirection( focusCell: Element, direction: ArrowKeyCodeDirection, expandSelection = false ): void {\n\t\tconst model = this.editor.model;\n\n\t\tconst table = focusCell.findAncestor( 'table' )!;\n\t\tconst tableMap = [ ...new TableWalker( table, { includeAllSlots: true } ) ];\n\t\tconst { row: lastRow, column: lastColumn } = tableMap[ tableMap.length - 1 ];\n\n\t\tconst currentCellInfo = tableMap.find( ( { cell } ) => cell == focusCell )!;\n\t\tlet { row, column } = currentCellInfo;\n\n\t\tswitch ( direction ) {\n\t\t\tcase 'left':\n\t\t\t\tcolumn--;\n\t\t\t\tbreak;\n\n\t\t\tcase 'up':\n\t\t\t\trow--;\n\t\t\t\tbreak;\n\n\t\t\tcase 'right':\n\t\t\t\tcolumn += currentCellInfo.cellWidth;\n\t\t\t\tbreak;\n\n\t\t\tcase 'down':\n\t\t\t\trow += currentCellInfo.cellHeight;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst isOutsideVertically = row < 0 || row > lastRow;\n\t\tconst isBeforeFirstCell = column < 0 && row <= 0;\n\t\tconst isAfterLastCell = column > lastColumn && row >= lastRow;\n\n\t\t// Note that if the table cell at the end of a row is row-spanned then isAfterLastCell will never be true.\n\t\t// However, we don't know if user was navigating on the last row or not, so let's stay in the table.\n\n\t\tif ( isOutsideVertically || isBeforeFirstCell || isAfterLastCell ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.setSelection( writer.createRangeOn( table ) );\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( column < 0 ) {\n\t\t\tcolumn = expandSelection ? 0 : lastColumn;\n\t\t\trow--;\n\t\t} else if ( column > lastColumn ) {\n\t\t\tcolumn = expandSelection ? lastColumn : 0;\n\t\t\trow++;\n\t\t}\n\n\t\tconst cellToSelect = tableMap.find( cellInfo => cellInfo.row == row && cellInfo.column == column )!.cell;\n\t\tconst isForward = [ 'right', 'down' ].includes( direction );\n\t\tconst tableSelection: TableSelection = this.editor.plugins.get( 'TableSelection' );\n\n\t\tif ( expandSelection && tableSelection.isEnabled ) {\n\t\t\tconst anchorCell = tableSelection.getAnchorCell() || focusCell;\n\n\t\t\ttableSelection.setCellSelection( anchorCell, cellToSelect );\n\t\t} else {\n\t\t\tconst positionToSelect = model.createPositionAt( cellToSelect, isForward ? 0 : 'end' );\n\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.setSelection( positionToSelect );\n\t\t\t} );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablemouse/mouseeventsobserver\n */\n\nimport { DomEventObserver, type DomEventData, type View } from 'ckeditor5/src/engine';\n\n/**\n * The mouse selection event observer.\n *\n * It registers listeners for the following DOM events:\n *\n * - `'mousemove'`\n * - `'mouseleave'`\n *\n * Note that this observer is disabled by default. To enable this observer, it needs to be added to\n * {@link module:engine/view/view~View} using the {@link module:engine/view/view~View#addObserver} method.\n *\n * The observer is registered by the {@link module:table/tableselection~TableSelection} plugin.\n */\nexport default class MouseEventsObserver extends DomEventObserver<'mousemove' | 'mouseleave'> {\n\tpublic readonly domEventType = [\n\t\t'mousemove', 'mouseleave'\n\t] as const;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic onDomEvent( domEvent: MouseEvent ): void {\n\t\tthis.fire( domEvent.type, domEvent );\n\t}\n}\n\n/**\n * Fired when the mouse is moved over one of the editables.\n *\n * Introduced by {@link module:table/tablemouse/mouseeventsobserver~MouseEventsObserver}.\n *\n * Note that this event is not available by default. To make it available,\n * {@link module:table/tablemouse/mouseeventsobserver~MouseEventsObserver} needs to be added\n * to {@link module:engine/view/view~View} using the {@link module:engine/view/view~View#addObserver} method.\n *\n * @see module:table/tablemouse/mouseeventsobserver~MouseEventsObserver\n * @eventName module:engine/view/document~Document#mousemove\n * @param data Event data.\n */\nexport type ViewDocumentMouseMoveEvent = {\n\tname: 'mousemove';\n\targs: [ data: DomEventData<MouseEvent> ];\n};\n\n/**\n * Fired when the mouse is moved out of one of the editables.\n *\n * Introduced by {@link module:table/tablemouse/mouseeventsobserver~MouseEventsObserver}.\n *\n * Note that this event is not available by default. To make it available,\n * {@link module:table/tablemouse/mouseeventsobserver~MouseEventsObserver} needs to be added\n * to {@link module:engine/view/view~View} using the {@link module:engine/view/view~View#addObserver} method.\n *\n * @see module:table/tablemouse/mouseeventsobserver~MouseEventsObserver\n * @eventName module:engine/view/document~Document#mouseleave\n * @param data Event data.\n */\nexport type ViewDocumentMouseLeaveEvent = {\n\tname: 'mouseleave';\n\targs: [ data: DomEventData<MouseEvent> ];\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablemouse\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport TableSelection from './tableselection';\nimport MouseEventsObserver from './tablemouse/mouseeventsobserver';\nimport TableUtils from './tableutils';\nimport type { DomEventData, Element } from 'ckeditor5/src/engine';\n\n/**\n * This plugin enables a table cells' selection with the mouse.\n * It is loaded automatically by the {@link module:table/table~Table} plugin.\n */\nexport default class TableMouse extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableMouse' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ TableSelection, TableUtils ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Currently the MouseObserver only handles `mousedown` and `mouseup` events.\n\t\t// TODO move to the engine?\n\t\teditor.editing.view.addObserver( MouseEventsObserver );\n\n\t\tthis._enableShiftClickSelection();\n\t\tthis._enableMouseDragSelection();\n\t}\n\n\t/**\n\t * Enables making cells selection by <kbd>Shift</kbd>+click. Creates a selection from the cell which previously held\n\t * the selection to the cell which was clicked. It can be the same cell, in which case it selects a single cell.\n\t */\n\tprivate _enableShiftClickSelection() {\n\t\tconst editor = this.editor;\n\t\tconst tableUtils = editor.plugins.get( TableUtils );\n\t\tlet blockSelectionChange = false;\n\n\t\tconst tableSelection = editor.plugins.get( TableSelection );\n\n\t\tthis.listenTo( editor.editing.view.document, 'mousedown', ( evt, domEventData ) => {\n\t\t\tconst selection = editor.model.document.selection;\n\n\t\t\tif ( !this.isEnabled || !tableSelection.isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !domEventData.domEvent.shiftKey ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst anchorCell = tableSelection.getAnchorCell() || tableUtils.getTableCellsContainingSelection( selection )[ 0 ];\n\n\t\t\tif ( !anchorCell ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst targetCell = this._getModelTableCellFromDomEvent( domEventData );\n\n\t\t\tif ( targetCell && haveSameTableParent( anchorCell, targetCell ) ) {\n\t\t\t\tblockSelectionChange = true;\n\t\t\t\ttableSelection.setCellSelection( anchorCell, targetCell );\n\n\t\t\t\tdomEventData.preventDefault();\n\t\t\t}\n\t\t} );\n\n\t\tthis.listenTo( editor.editing.view.document, 'mouseup', () => {\n\t\t\tblockSelectionChange = false;\n\t\t} );\n\n\t\t// We need to ignore a `selectionChange` event that is fired after we render our new table cells selection.\n\t\t// When downcasting table cells selection to the view, we put the view selection in the last selected cell\n\t\t// in a place that may not be natively a \"correct\" location. This is – we put it directly in the `<td>` element.\n\t\t// All browsers fire the native `selectionchange` event.\n\t\t// However, all browsers except Safari return the selection in the exact place where we put it\n\t\t// (even though it's visually normalized). Safari returns `<td><p>^foo` that makes our selection observer\n\t\t// fire our `selectionChange` event (because the view selection that we set in the first step differs from the DOM selection).\n\t\t// Since `selectionChange` is fired, we automatically update the model selection that moves it that paragraph.\n\t\t// This breaks our dear cells selection.\n\t\t//\n\t\t// Theoretically this issue concerns only Safari that is the only browser that do normalize the selection.\n\t\t// However, to avoid code branching and to have a good coverage for this event blocker, I enabled it for all browsers.\n\t\t//\n\t\t// Note: I'm keeping the `blockSelectionChange` state separately for shift+click and mouse drag (exact same logic)\n\t\t// so I don't have to try to analyze whether they don't overlap in some weird cases. Probably they don't.\n\t\t// But I have other things to do, like writing this comment.\n\t\tthis.listenTo( editor.editing.view.document, 'selectionChange', evt => {\n\t\t\tif ( blockSelectionChange ) {\n\t\t\t\t// @if CK_DEBUG // console.log( 'Blocked selectionChange to avoid breaking table cells selection.' );\n\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'highest' } );\n\t}\n\n\t/**\n\t * Enables making cells selection by dragging.\n\t *\n\t * The selection is made only on mousemove. Mouse tracking is started on mousedown.\n\t * However, the cells selection is enabled only after the mouse cursor left the anchor cell.\n\t * Thanks to that normal text selection within one cell works just fine. However, you can still select\n\t * just one cell by leaving the anchor cell and moving back to it.\n\t */\n\tprivate _enableMouseDragSelection() {\n\t\tconst editor = this.editor;\n\t\tlet anchorCell: Element | null, targetCell: Element | null;\n\t\tlet beganCellSelection = false;\n\t\tlet blockSelectionChange = false;\n\n\t\tconst tableSelection = editor.plugins.get( TableSelection );\n\n\t\tthis.listenTo( editor.editing.view.document, 'mousedown', ( evt, domEventData ) => {\n\t\t\tif ( !this.isEnabled || !tableSelection.isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Make sure to not conflict with the shift+click listener and any other possible handler.\n\t\t\tif ( domEventData.domEvent.shiftKey || domEventData.domEvent.ctrlKey || domEventData.domEvent.altKey ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tanchorCell = this._getModelTableCellFromDomEvent( domEventData );\n\t\t} );\n\n\t\tthis.listenTo( editor.editing.view.document, 'mousemove', ( evt, domEventData ) => {\n\t\t\tif ( !domEventData.domEvent.buttons ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !anchorCell ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst newTargetCell = this._getModelTableCellFromDomEvent( domEventData );\n\n\t\t\tif ( newTargetCell && haveSameTableParent( anchorCell, newTargetCell ) ) {\n\t\t\t\ttargetCell = newTargetCell;\n\n\t\t\t\t// Switch to the cell selection mode after the mouse cursor left the anchor cell.\n\t\t\t\t// Switch off only on mouseup (makes selecting a single cell possible).\n\t\t\t\tif ( !beganCellSelection && targetCell != anchorCell ) {\n\t\t\t\t\tbeganCellSelection = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Yep, not making a cell selection yet. See method docs.\n\t\t\tif ( !beganCellSelection ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tblockSelectionChange = true;\n\t\t\ttableSelection.setCellSelection( anchorCell, targetCell! );\n\n\t\t\tdomEventData.preventDefault();\n\t\t} );\n\n\t\tthis.listenTo( editor.editing.view.document, 'mouseup', () => {\n\t\t\tbeganCellSelection = false;\n\t\t\tblockSelectionChange = false;\n\t\t\tanchorCell = null;\n\t\t\ttargetCell = null;\n\t\t} );\n\n\t\t// See the explanation in `_enableShiftClickSelection()`.\n\t\tthis.listenTo( editor.editing.view.document, 'selectionChange', evt => {\n\t\t\tif ( blockSelectionChange ) {\n\t\t\t\t// @if CK_DEBUG // console.log( 'Blocked selectionChange to avoid breaking table cells selection.' );\n\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { priority: 'highest' } );\n\t}\n\n\t/**\n\t * Returns the model table cell element based on the target element of the passed DOM event.\n\t *\n\t * @returns Returns the table cell or `undefined`.\n\t */\n\tprivate _getModelTableCellFromDomEvent( domEventData: DomEventData ) {\n\t\t// Note: Work with positions (not element mapping) because the target element can be an attribute or other non-mapped element.\n\t\tconst viewTargetElement = domEventData.target;\n\t\tconst viewPosition = this.editor.editing.view.createPositionAt( viewTargetElement, 0 );\n\t\tconst modelPosition = this.editor.editing.mapper.toModelPosition( viewPosition );\n\t\tconst modelElement = modelPosition.parent as Element;\n\n\t\treturn modelElement.findAncestor( 'tableCell', { includeSelf: true } );\n\t}\n}\n\nfunction haveSameTableParent( cellA: Element, cellB: Element ) {\n\treturn cellA.parent!.parent == cellB.parent!.parent;\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./table.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/utils/ui/widget\n */\n\nimport type { ViewDocumentFragment, ViewDocumentSelection, ViewElement, ViewNode } from 'ckeditor5/src/engine';\n\nimport { isWidget } from 'ckeditor5/src/widget';\n\n/**\n * Returns a table widget editing view element if one is selected.\n */\nexport function getSelectedTableWidget( selection: ViewDocumentSelection ): ViewElement | null {\n\tconst viewElement = selection.getSelectedElement();\n\n\tif ( viewElement && isTableWidget( viewElement ) ) {\n\t\treturn viewElement;\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns a table widget editing view element if one is among the selection's ancestors.\n */\nexport function getTableWidgetAncestor( selection: ViewDocumentSelection ): ViewElement | null {\n\tconst selectionPosition = selection.getFirstPosition();\n\n\tif ( !selectionPosition ) {\n\t\treturn null;\n\t}\n\n\tlet parent: ViewNode | ViewDocumentFragment | null = selectionPosition.parent;\n\n\twhile ( parent ) {\n\t\tif ( parent.is( 'element' ) && isTableWidget( parent ) ) {\n\t\t\treturn parent;\n\t\t}\n\n\t\tparent = parent.parent;\n\t}\n\n\treturn null;\n}\n\n/**\n * Checks if a given view element is a table widget.\n */\nfunction isTableWidget( viewElement: ViewElement ): boolean {\n\treturn !!viewElement.getCustomProperty( 'table' ) && isWidget( viewElement );\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./colorinput.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/ui/colorinputview\n */\n\nimport {\n\tView,\n\tInputTextView,\n\tcreateDropdown,\n\tFocusCycler,\n\tViewCollection,\n\tColorSelectorView,\n\ttype ColorDefinition,\n\ttype DropdownView,\n\ttype ColorPickerConfig,\n\ttype ColorSelectorExecuteEvent,\n\ttype ColorSelectorColorPickerCancelEvent\n} from 'ckeditor5/src/ui';\n\nimport { FocusTracker, KeystrokeHandler, type Locale } from 'ckeditor5/src/utils';\n\nimport '../../theme/colorinput.css';\n\nexport type ColorInputViewOptions = {\n\tcolorDefinitions: Array<ColorDefinition>;\n\tcolumns: number;\n\tdefaultColorValue?: string;\n\tcolorPickerConfig: false | ColorPickerConfig;\n};\n\n/**\n * The color input view class. It allows the user to type in a color (hex, rgb, etc.)\n * or choose it from the configurable color palette with a preview.\n *\n * @internal\n */\nexport default class ColorInputView extends View {\n\t/**\n\t * The value of the input.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tdeclare public value: string;\n\n\t/**\n\t * Controls whether the input view is in read-only mode.\n\t *\n\t * @observable\n\t * @default false\n\t */\n\tdeclare public isReadOnly: boolean;\n\n\t/**\n\t * An observable flag set to `true` when the input is focused by the user.\n\t * `false` otherwise.\n\t *\n\t * @observable\n\t * @default false\n\t */\n\tdeclare public readonly isFocused: boolean;\n\n\t/**\n\t * An observable flag set to `true` when the input contains no text.\n\t *\n\t * @observable\n\t * @default true\n\t */\n\tdeclare public readonly isEmpty: boolean;\n\n\t/**\n\t * @observable\n\t */\n\tdeclare public hasError: boolean;\n\n\t/**\n\t * A cached reference to the options passed to the constructor.\n\t */\n\tpublic options: ColorInputViewOptions;\n\n\t/**\n\t * Tracks information about the DOM focus in the view.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * A collection of views that can be focused in the view.\n\t */\n\tprotected readonly _focusables: ViewCollection;\n\n\t/**\n\t * An instance of the dropdown allowing to select a color from a grid.\n\t */\n\tpublic dropdownView: DropdownView;\n\n\t/**\n\t * An instance of the input allowing the user to type a color value.\n\t */\n\tpublic inputView: InputTextView;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * The flag that indicates whether the user is still typing.\n\t * If set to true, it means that the text input field ({@link #inputView}) still has the focus.\n\t * So, we should interrupt the user by replacing the input's value.\n\t */\n\tprotected _stillTyping: boolean;\n\n\t/**\n\t * Helps cycling over focusable items in the view.\n\t */\n\tprotected readonly _focusCycler: FocusCycler;\n\n\t/**\n\t * Creates an instance of the color input view.\n\t *\n\t * @param locale The locale instance.\n\t * @param options The input options.\n\t * @param options.colorDefinitions The colors to be displayed in the palette inside the input's dropdown.\n\t * @param options.columns The number of columns in which the colors will be displayed.\n\t * @param options.defaultColorValue If specified, the color input view will replace the \"Remove color\" button with\n\t * the \"Restore default\" button. Instead of clearing the input field, the default color value will be set.\n\t */\n\tconstructor( locale: Locale, options: ColorInputViewOptions ) {\n\t\tsuper( locale );\n\n\t\tthis.set( 'value', '' );\n\t\tthis.set( 'isReadOnly', false );\n\t\tthis.set( 'isFocused', false );\n\t\tthis.set( 'isEmpty', true );\n\n\t\tthis.options = options;\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis._focusables = new ViewCollection();\n\t\tthis.dropdownView = this._createDropdownView();\n\t\tthis.inputView = this._createInputTextView();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis._stillTyping = false;\n\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate items backwards using the <kbd>Shift</kbd> + <kbd>Tab</kbd> keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate items forwards using the <kbd>Tab</kbd> key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-input-color'\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\tthis.dropdownView,\n\t\t\t\tthis.inputView\n\t\t\t]\n\t\t} );\n\n\t\tthis.on( 'change:value', ( evt, name, inputValue ) => this._setInputValue( inputValue ) );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\t// Start listening for the keystrokes coming from the dropdown panel view.\n\t\tthis.keystrokes.listenTo( this.dropdownView.panelView.element! );\n\t}\n\n\t/**\n\t * Focuses the input.\n\t */\n\tpublic focus(): void {\n\t\tthis.inputView.focus();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Creates and configures the {@link #dropdownView}.\n\t */\n\tprivate _createDropdownView() {\n\t\tconst locale = this.locale!;\n\t\tconst t = locale.t;\n\t\tconst bind = this.bindTemplate;\n\t\tconst colorSelector = this._createColorSelector( locale );\n\t\tconst dropdown = createDropdown( locale );\n\t\tconst colorPreview = new View();\n\n\t\tcolorPreview.setTemplate( {\n\t\t\ttag: 'span',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-input-color__button__preview'\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\tbackgroundColor: bind.to( 'value' )\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [ {\n\t\t\t\ttag: 'span',\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: [\n\t\t\t\t\t\t'ck',\n\t\t\t\t\t\t'ck-input-color__button__preview__no-color-indicator',\n\t\t\t\t\t\tbind.if( 'value', 'ck-hidden', value => value != '' )\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t} ]\n\t\t} );\n\n\t\tdropdown.buttonView.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: 'ck-input-color__button'\n\t\t\t}\n\t\t} );\n\n\t\tdropdown.buttonView.children.add( colorPreview );\n\t\tdropdown.buttonView.label = t( 'Color picker' );\n\t\tdropdown.buttonView.tooltip = true;\n\n\t\tdropdown.panelPosition = locale.uiLanguageDirection === 'rtl' ? 'se' : 'sw';\n\t\tdropdown.panelView.children.add( colorSelector );\n\t\tdropdown.bind( 'isEnabled' ).to( this, 'isReadOnly', value => !value );\n\n\t\tthis._focusables.add( colorSelector );\n\n\t\tthis.focusTracker.add( colorSelector.element! );\n\n\t\tdropdown.on( 'change:isOpen', ( evt, name, isVisible ) => {\n\t\t\tif ( isVisible ) {\n\t\t\t\tcolorSelector.updateSelectedColors();\n\t\t\t\tcolorSelector.showColorGridsFragment();\n\t\t\t}\n\t\t} );\n\n\t\treturn dropdown;\n\t}\n\n\t/**\n\t * Creates and configures an instance of {@link module:ui/inputtext/inputtextview~InputTextView}.\n\t *\n\t * @returns A configured instance to be set as {@link #inputView}.\n\t */\n\tprivate _createInputTextView(): InputTextView {\n\t\tconst locale = this.locale;\n\t\tconst inputView = new InputTextView( locale );\n\n\t\tinputView.extendTemplate( {\n\t\t\ton: {\n\t\t\t\tblur: inputView.bindTemplate.to( 'blur' )\n\t\t\t}\n\t\t} );\n\n\t\tinputView.value = this.value;\n\t\tinputView.bind( 'isReadOnly', 'hasError' ).to( this );\n\t\tthis.bind( 'isFocused', 'isEmpty' ).to( inputView );\n\n\t\tinputView.on( 'input', () => {\n\t\t\tconst inputValue = inputView.element!.value;\n\t\t\t// Check if the value matches one of our defined colors' label.\n\t\t\tconst mappedColor = this.options.colorDefinitions.find( def => inputValue === def.label );\n\n\t\t\tthis._stillTyping = true;\n\t\t\tthis.value = mappedColor && mappedColor.color || inputValue;\n\t\t} );\n\n\t\tinputView.on( 'blur', () => {\n\t\t\tthis._stillTyping = false;\n\t\t\tthis._setInputValue( inputView.element!.value );\n\t\t} );\n\n\t\tinputView.delegate( 'input' ).to( this );\n\n\t\treturn inputView;\n\t}\n\n\t/**\n\t * Creates and configures the panel with \"color grid\" and \"color picker\" inside the {@link #dropdownView}.\n\t */\n\tprivate _createColorSelector( locale: Locale ) {\n\t\tconst t = locale.t;\n\t\tconst defaultColor = this.options.defaultColorValue || '';\n\t\tconst removeColorButtonLabel = defaultColor ? t( 'Restore default' ) : t( 'Remove color' );\n\n\t\tconst colorSelector = new ColorSelectorView( locale, {\n\t\t\tcolors: this.options.colorDefinitions,\n\t\t\tcolumns: this.options.columns,\n\t\t\tremoveButtonLabel: removeColorButtonLabel,\n\t\t\tcolorPickerLabel: t( 'Color picker' ),\n\t\t\tcolorPickerViewConfig: this.options.colorPickerConfig === false ? false : {\n\t\t\t\t...this.options.colorPickerConfig,\n\t\t\t\thideInput: true\n\t\t\t}\n\t\t} );\n\n\t\tcolorSelector.appendUI();\n\n\t\tcolorSelector.on<ColorSelectorExecuteEvent>( 'execute', ( evt, data ) => {\n\t\t\tif ( data.source === 'colorPickerSaveButton' ) {\n\t\t\t\tthis.dropdownView.isOpen = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.value = data.value || defaultColor;\n\n\t\t\t// Trigger the listener that actually applies the set value.\n\t\t\tthis.fire( 'input' );\n\n\t\t\tif ( data.source !== 'colorPicker' ) {\n\t\t\t\tthis.dropdownView.isOpen = false;\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * Color is saved before changes in color picker. In case \"cancel button\" is pressed\n\t\t * this color will be applied.\n\t\t */\n\t\tlet backupColor = this.value;\n\n\t\tcolorSelector.on<ColorSelectorColorPickerCancelEvent>( 'colorPicker:cancel', () => {\n\t\t\t/**\n\t\t\t * Revert color to previous value before changes in color picker.\n\t\t\t */\n\t\t\tthis.value = backupColor;\n\n\t\t\tthis.fire( 'input' );\n\n\t\t\tthis.dropdownView.isOpen = false;\n\t\t} );\n\n\t\tcolorSelector.colorGridsFragmentView.colorPickerButtonView!.on( 'execute', () => {\n\t\t\t/**\n\t\t\t * Save color value before changes in color picker.\n\t\t\t */\n\t\t\tbackupColor = this.value;\n\t\t} );\n\n\t\tcolorSelector.bind( 'selectedColor' ).to( this, 'value' );\n\n\t\treturn colorSelector;\n\t}\n\n\t/**\n\t * Sets {@link #inputView}'s value property to the color value or color label,\n\t * if there is one and the user is not typing.\n\t *\n\t * Handles cases like:\n\t *\n\t * * Someone picks the color in the grid.\n\t * * The color is set from the plugin level.\n\t *\n\t * @param inputValue Color value to be set.\n\t */\n\tprivate _setInputValue( inputValue: string ) {\n\t\tif ( !this._stillTyping ) {\n\t\t\tconst normalizedInputValue = normalizeColor( inputValue );\n\t\t\t// Check if the value matches one of our defined colors.\n\t\t\tconst mappedColor = this.options.colorDefinitions.find( def => normalizedInputValue === normalizeColor( def.color ) );\n\n\t\t\tif ( mappedColor ) {\n\t\t\t\tthis.inputView.value = mappedColor.label;\n\t\t\t} else {\n\t\t\t\tthis.inputView.value = inputValue || '';\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Normalizes color value, by stripping extensive whitespace.\n * For example., transforms:\n * * ` rgb( 25 50 0 )` to `rgb(25 50 0)`,\n * * \"\\t rgb( 25 , 50,0 )\t\t\" to `rgb(25 50 0)`.\n *\n * @param colorString The value to be normalized.\n */\nfunction normalizeColor( colorString: string ): string {\n\treturn colorString\n\t\t// Remove any whitespace right after `(` or `,`.\n\t\t.replace( /([(,])\\s+/g, '$1' )\n\t\t// Remove any whitespace at the beginning or right before the end, `)`, `,`, or another whitespace.\n\t\t.replace( /^\\s+|\\s+(?=[),\\s]|$)/g, '' )\n\t\t// Then, replace `,` or whitespace with a single space.\n\t\t.replace( /,|\\s/g, ' ' );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/utils/ui/table-properties\n */\n\nimport {\n\tButtonView,\n\tModel,\n\ttype ColorOption,\n\ttype LabeledFieldView,\n\ttype ListDropdownItemDefinition,\n\ttype NormalizedColorOption,\n\ttype ToolbarView,\n\ttype View,\n\ttype ColorPickerConfig\n} from 'ckeditor5/src/ui';\n\nimport { Collection, type LocaleTranslate } from 'ckeditor5/src/utils';\nimport { isColor, isLength, isPercentage } from 'ckeditor5/src/engine';\n\nimport type TableCellPropertiesView from '../../tablecellproperties/ui/tablecellpropertiesview';\nimport type TablePropertiesView from '../../tableproperties/ui/tablepropertiesview';\n\nimport ColorInputView from '../../ui/colorinputview';\n\nconst isEmpty = ( val: string ) => val === '';\n\n/**\n * Returns an object containing pairs of CSS border style values and their localized UI\n * labels. Used by {@link module:table/tablecellproperties/ui/tablecellpropertiesview~TableCellPropertiesView}\n * and {@link module:table/tableproperties/ui/tablepropertiesview~TablePropertiesView}.\n *\n * @param t The \"t\" function provided by the editor that is used to localize strings.\n */\nexport function getBorderStyleLabels( t: LocaleTranslate ): Record<string, string> {\n\treturn {\n\t\tnone: t( 'None' ),\n\t\tsolid: t( 'Solid' ),\n\t\tdotted: t( 'Dotted' ),\n\t\tdashed: t( 'Dashed' ),\n\t\tdouble: t( 'Double' ),\n\t\tgroove: t( 'Groove' ),\n\t\tridge: t( 'Ridge' ),\n\t\tinset: t( 'Inset' ),\n\t\toutset: t( 'Outset' )\n\t};\n}\n\n/**\n * Returns a localized error string that can be displayed next to color (background, border)\n * fields that have an invalid value.\n *\n * @param t The \"t\" function provided by the editor that is used to localize strings.\n */\nexport function getLocalizedColorErrorText( t: LocaleTranslate ): string {\n\treturn t( 'The color is invalid. Try \"#FF0000\" or \"rgb(255,0,0)\" or \"red\".' );\n}\n\n/**\n * Returns a localized error string that can be displayed next to length (padding, border width)\n * fields that have an invalid value.\n *\n * @param t The \"t\" function provided by the editor that is used to localize strings.\n */\nexport function getLocalizedLengthErrorText( t: LocaleTranslate ): string {\n\treturn t( 'The value is invalid. Try \"10px\" or \"2em\" or simply \"2\".' );\n}\n\n/**\n * Returns `true` when the passed value is an empty string or a valid CSS color expression.\n * Otherwise, `false` is returned.\n *\n * See {@link module:engine/view/styles/utils~isColor}.\n */\nexport function colorFieldValidator( value: string ): boolean {\n\tvalue = value.trim().toLowerCase();\n\n\treturn isEmpty( value ) || isColor( value );\n}\n\n/**\n * Returns `true` when the passed value is an empty string, a number without a unit or a valid CSS length expression.\n * Otherwise, `false` is returned.\n *\n * See {@link module:engine/view/styles/utils~isLength}.\n * See {@link module:engine/view/styles/utils~isPercentage}.\n */\nexport function lengthFieldValidator( value: string ): boolean {\n\tvalue = value.trim();\n\n\treturn isEmpty( value ) || isNumberString( value ) || isLength( value ) || isPercentage( value );\n}\n\n/**\n * Returns `true` when the passed value is an empty string, a number without a unit or a valid CSS length expression.\n * Otherwise, `false` is returned.\n *\n * See {@link module:engine/view/styles/utils~isLength}.\n */\nexport function lineWidthFieldValidator( value: string ): boolean {\n\tvalue = value.trim();\n\n\treturn isEmpty( value ) || isNumberString( value ) || isLength( value );\n}\n\n/**\n * Generates item definitions for a UI dropdown that allows changing the border style of a table or a table cell.\n *\n * @param defaultStyle The default border.\n */\nexport function getBorderStyleDefinitions(\n\tview: TableCellPropertiesView | TablePropertiesView,\n\tdefaultStyle: string\n): Collection<ListDropdownItemDefinition> {\n\tconst itemDefinitions: Collection<ListDropdownItemDefinition> = new Collection();\n\tconst styleLabels = getBorderStyleLabels( view.t! );\n\n\tfor ( const style in styleLabels ) {\n\t\tconst definition: ListDropdownItemDefinition = {\n\t\t\ttype: 'button',\n\t\t\tmodel: new Model( {\n\t\t\t\t_borderStyleValue: style,\n\t\t\t\tlabel: styleLabels[ style ],\n\t\t\t\trole: 'menuitemradio',\n\t\t\t\twithText: true\n\t\t\t} )\n\t\t};\n\n\t\tif ( style === 'none' ) {\n\t\t\tdefinition.model.bind( 'isOn' ).to( view, 'borderStyle', value => {\n\t\t\t\tif ( defaultStyle === 'none' ) {\n\t\t\t\t\treturn !value;\n\t\t\t\t}\n\n\t\t\t\treturn value === style;\n\t\t\t} );\n\t\t} else {\n\t\t\tdefinition.model.bind( 'isOn' ).to( view, 'borderStyle', value => {\n\t\t\t\treturn value === style;\n\t\t\t} );\n\t\t}\n\n\t\titemDefinitions.add( definition );\n\t}\n\n\treturn itemDefinitions;\n}\n\n/**\n * A helper that fills a toolbar with buttons that:\n *\n * * have some labels,\n * * have some icons,\n * * set a certain UI view property value upon execution.\n *\n * @param nameToValue A function that maps a button name to a value. By default names are the same as values.\n */\nexport function fillToolbar<TView extends View, TPropertyName extends keyof TView>(\n\toptions: {\n\t\tview: TView;\n\t\ticons: Record<string, string>;\n\t\ttoolbar: ToolbarView;\n\t\tlabels: Record<number, string>;\n\t\tpropertyName: TPropertyName;\n\t\tnameToValue?: ( name: string ) => string;\n\t\tdefaultValue?: string;\n\t}\n): void {\n\tconst { view, icons, toolbar, labels, propertyName, nameToValue, defaultValue } = options;\n\tfor ( const name in labels ) {\n\t\tconst button = new ButtonView( view.locale );\n\n\t\tbutton.set( {\n\t\t\tlabel: labels[ name ],\n\t\t\ticon: icons[ name ],\n\t\t\ttooltip: labels[ name ]\n\t\t} );\n\n\t\t// If specified the `nameToValue()` callback, map the value based on the option's name.\n\t\tconst buttonValue = nameToValue ? nameToValue( name ) : name;\n\n\t\tbutton.bind( 'isOn' ).to( view, propertyName, value => {\n\t\t\t// `value` comes from `view[ propertyName ]`.\n\t\t\tlet valueToCompare: unknown = value;\n\n\t\t\t// If it's empty, and the `defaultValue` is specified, use it instead.\n\t\t\tif ( value === '' && defaultValue ) {\n\t\t\t\tvalueToCompare = defaultValue;\n\t\t\t}\n\n\t\t\treturn buttonValue === valueToCompare;\n\t\t} );\n\n\t\tbutton.on( 'execute', () => {\n\t\t\tview[ propertyName ] = buttonValue as any;\n\t\t} );\n\n\t\ttoolbar.items.add( button );\n\t}\n}\n\n/**\n * A default color palette used by various user interfaces related to tables, for instance,\n * by {@link module:table/tablecellproperties/tablecellpropertiesui~TableCellPropertiesUI} or\n * {@link module:table/tableproperties/tablepropertiesui~TablePropertiesUI}.\n *\n * The color palette follows the {@link module:table/tableconfig~TableColorConfig table color configuration format}\n * and contains the following color definitions:\n *\n * ```ts\n * const defaultColors = [\n * {\n * color: 'hsl(0, 0%, 0%)',\n * label: 'Black'\n * },\n * {\n * color: 'hsl(0, 0%, 30%)',\n * label: 'Dim grey'\n * },\n * {\n * color: 'hsl(0, 0%, 60%)',\n * label: 'Grey'\n * },\n * {\n * color: 'hsl(0, 0%, 90%)',\n * label: 'Light grey'\n * },\n * {\n * color: 'hsl(0, 0%, 100%)',\n * label: 'White',\n * hasBorder: true\n * },\n * {\n * color: 'hsl(0, 75%, 60%)',\n * label: 'Red'\n * },\n * {\n * color: 'hsl(30, 75%, 60%)',\n * label: 'Orange'\n * },\n * {\n * color: 'hsl(60, 75%, 60%)',\n * label: 'Yellow'\n * },\n * {\n * color: 'hsl(90, 75%, 60%)',\n * label: 'Light green'\n * },\n * {\n * color: 'hsl(120, 75%, 60%)',\n * label: 'Green'\n * },\n * {\n * color: 'hsl(150, 75%, 60%)',\n * label: 'Aquamarine'\n * },\n * {\n * color: 'hsl(180, 75%, 60%)',\n * label: 'Turquoise'\n * },\n * {\n * color: 'hsl(210, 75%, 60%)',\n * label: 'Light blue'\n * },\n * {\n * color: 'hsl(240, 75%, 60%)',\n * label: 'Blue'\n * },\n * {\n * color: 'hsl(270, 75%, 60%)',\n * label: 'Purple'\n * }\n * ];\n * ```\n */\nexport const defaultColors: Array<ColorOption> = [\n\t{\n\t\tcolor: 'hsl(0, 0%, 0%)',\n\t\tlabel: 'Black'\n\t},\n\t{\n\t\tcolor: 'hsl(0, 0%, 30%)',\n\t\tlabel: 'Dim grey'\n\t},\n\t{\n\t\tcolor: 'hsl(0, 0%, 60%)',\n\t\tlabel: 'Grey'\n\t},\n\t{\n\t\tcolor: 'hsl(0, 0%, 90%)',\n\t\tlabel: 'Light grey'\n\t},\n\t{\n\t\tcolor: 'hsl(0, 0%, 100%)',\n\t\tlabel: 'White',\n\t\thasBorder: true\n\t},\n\t{\n\t\tcolor: 'hsl(0, 75%, 60%)',\n\t\tlabel: 'Red'\n\t},\n\t{\n\t\tcolor: 'hsl(30, 75%, 60%)',\n\t\tlabel: 'Orange'\n\t},\n\t{\n\t\tcolor: 'hsl(60, 75%, 60%)',\n\t\tlabel: 'Yellow'\n\t},\n\t{\n\t\tcolor: 'hsl(90, 75%, 60%)',\n\t\tlabel: 'Light green'\n\t},\n\t{\n\t\tcolor: 'hsl(120, 75%, 60%)',\n\t\tlabel: 'Green'\n\t},\n\t{\n\t\tcolor: 'hsl(150, 75%, 60%)',\n\t\tlabel: 'Aquamarine'\n\t},\n\t{\n\t\tcolor: 'hsl(180, 75%, 60%)',\n\t\tlabel: 'Turquoise'\n\t},\n\t{\n\t\tcolor: 'hsl(210, 75%, 60%)',\n\t\tlabel: 'Light blue'\n\t},\n\t{\n\t\tcolor: 'hsl(240, 75%, 60%)',\n\t\tlabel: 'Blue'\n\t},\n\t{\n\t\tcolor: 'hsl(270, 75%, 60%)',\n\t\tlabel: 'Purple'\n\t}\n];\n\n/**\n * Returns a creator for a color input with a label.\n *\n * For given options, it returns a function that creates an instance of a\n * {@link module:table/ui/colorinputview~ColorInputView color input} logically related to\n * a {@link module:ui/labeledfield/labeledfieldview~LabeledFieldView labeled view} in the DOM.\n *\n * The helper does the following:\n *\n * * It sets the color input `id` and `ariaDescribedById` attributes.\n * * It binds the color input `isReadOnly` to the labeled view.\n * * It binds the color input `hasError` to the labeled view.\n * * It enables a logic that cleans up the error when the user starts typing in the color input.\n *\n * Usage:\n *\n * ```ts\n * const colorInputCreator = getLabeledColorInputCreator( {\n * colorConfig: [ ... ],\n * columns: 3,\n * } );\n *\n * const labeledInputView = new LabeledFieldView( locale, colorInputCreator );\n * console.log( labeledInputView.view ); // A color input instance.\n * ```\n *\n * @internal\n * @param options Color input options.\n * @param options.colorConfig The configuration of the color palette displayed in the input's dropdown.\n * @param options.columns The configuration of the number of columns the color palette consists of in the input's dropdown.\n * @param options.defaultColorValue If specified, the color input view will replace the \"Remove color\" button with\n * the \"Restore default\" button. Instead of clearing the input field, the default color value will be set.\n * @param options.colorPickerConfig The configuration of the color picker. You could disable it or define your output format.\n */\nexport function getLabeledColorInputCreator(\n\toptions: {\n\t\tcolorConfig: Array<NormalizedColorOption>;\n\t\tcolumns: number;\n\t\tdefaultColorValue?: string;\n\t\tcolorPickerConfig: false | ColorPickerConfig;\n\t}\n) {\n\treturn ( labeledFieldView: LabeledFieldView, viewUid: string, statusUid: string ): ColorInputView => {\n\t\tconst colorInputView = new ColorInputView( labeledFieldView.locale!, {\n\t\t\tcolorDefinitions: colorConfigToColorGridDefinitions( options.colorConfig ),\n\t\t\tcolumns: options.columns,\n\t\t\tdefaultColorValue: options.defaultColorValue,\n\t\t\tcolorPickerConfig: options.colorPickerConfig\n\t\t} );\n\n\t\tcolorInputView.inputView.set( {\n\t\t\tid: viewUid,\n\t\t\tariaDescribedById: statusUid\n\t\t} );\n\n\t\tcolorInputView.bind( 'isReadOnly' ).to( labeledFieldView, 'isEnabled', value => !value );\n\t\tcolorInputView.bind( 'hasError' ).to( labeledFieldView, 'errorText', value => !!value );\n\n\t\tcolorInputView.on( 'input', () => {\n\t\t\t// UX: Make the error text disappear and disable the error indicator as the user\n\t\t\t// starts fixing the errors.\n\t\t\tlabeledFieldView.errorText = null;\n\t\t} );\n\n\t\tlabeledFieldView.bind( 'isEmpty', 'isFocused' ).to( colorInputView );\n\n\t\treturn colorInputView;\n\t};\n}\n\n/**\n * A simple helper method to detect number strings.\n * I allows full number notation, so omitting 0 is not allowed:\n */\nfunction isNumberString( value: string ) {\n\tconst parsedValue = parseFloat( value );\n\n\treturn !Number.isNaN( parsedValue ) && value === String( parsedValue );\n}\n\nfunction colorConfigToColorGridDefinitions( colorConfig: Array<NormalizedColorOption> ) {\n\treturn colorConfig.map( item => ( {\n\t\tcolor: item.model,\n\t\tlabel: item.label,\n\t\toptions: {\n\t\t\thasBorder: item.hasBorder\n\t\t}\n\t} ) );\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./formrow.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/ui/formrowview\n */\n\nimport { View, type LabelView, type ViewCollection } from 'ckeditor5/src/ui';\nimport type { Locale } from 'ckeditor5/src/utils';\n\nimport '../../theme/formrow.css';\n\n/**\n * The class representing a single row in a complex form,\n * used by {@link module:table/tablecellproperties/ui/tablecellpropertiesview~TableCellPropertiesView}.\n *\n * **Note**: For now this class is private. When more use cases arrive (beyond ckeditor5-table),\n * it will become a component in ckeditor5-ui.\n *\n * @internal\n */\nexport default class FormRowView extends View {\n\t/**\n\t * An additional CSS class added to the {@link #element}.\n\t *\n\t * @observable\n\t */\n\tpublic declare class: string | null;\n\n\t/**\n\t * A collection of row items (buttons, dropdowns, etc.).\n\t */\n\tpublic readonly children: ViewCollection;\n\n\t/**\n\t * The role property reflected by the `role` DOM attribute of the {@link #element}.\n\t *\n\t * **Note**: Used only when a `labelView` is passed to constructor `options`.\n\t *\n\t * @observable\n\t * @internal\n\t */\n\tpublic declare _role: string | null;\n\n\t/**\n\t * The ARIA property reflected by the `aria-labelledby` DOM attribute of the {@link #element}.\n\t *\n\t * **Note**: Used only when a `labelView` is passed to constructor `options`.\n\t *\n\t * @observable\n\t * @internal\n\t */\n\tpublic declare _ariaLabelledBy: string | null;\n\n\t/**\n\t * Creates an instance of the form row class.\n\t *\n\t * @param locale The locale instance.\n\t * @param options.labelView When passed, the row gets the `group` and `aria-labelledby`\n\t * DOM attributes and gets described by the label.\n\t */\n\tconstructor( locale: Locale, options: { children?: Array<View>; class?: string; labelView?: LabelView } = {} ) {\n\t\tsuper( locale );\n\n\t\tconst bind = this.bindTemplate;\n\n\t\tthis.set( 'class', options.class || null );\n\t\tthis.children = this.createCollection();\n\n\t\tif ( options.children ) {\n\t\t\toptions.children.forEach( child => this.children.add( child ) );\n\t\t}\n\n\t\tthis.set( '_role', null );\n\t\tthis.set( '_ariaLabelledBy', null );\n\n\t\tif ( options.labelView ) {\n\t\t\tthis.set( {\n\t\t\t\t_role: 'group',\n\t\t\t\t_ariaLabelledBy: options.labelView.id\n\t\t\t} );\n\t\t}\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-form__row',\n\t\t\t\t\tbind.to( 'class' )\n\t\t\t\t],\n\t\t\t\trole: bind.to( '_role' ),\n\t\t\t\t'aria-labelledby': bind.to( '_ariaLabelledBy' )\n\t\t\t},\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./form.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./tableform.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./tablecellproperties.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecellproperties/ui/tablecellpropertiesview\n */\n\nimport {\n\taddListToDropdown,\n\tButtonView,\n\tcreateLabeledDropdown,\n\tcreateLabeledInputText,\n\tFocusCycler,\n\tFormHeaderView,\n\tLabeledFieldView,\n\tLabelView,\n\tsubmitHandler,\n\tToolbarView,\n\tView,\n\tViewCollection,\n\ttype FocusableView,\n\ttype NormalizedColorOption,\n\ttype ColorPickerConfig\n} from 'ckeditor5/src/ui';\nimport {\n\tKeystrokeHandler,\n\tFocusTracker,\n\ttype Locale,\n\ttype ObservableChangeEvent\n} from 'ckeditor5/src/utils';\nimport { icons } from 'ckeditor5/src/core';\n\nimport {\n\tfillToolbar,\n\tgetBorderStyleDefinitions,\n\tgetBorderStyleLabels,\n\tgetLabeledColorInputCreator\n} from '../../utils/ui/table-properties';\nimport FormRowView from '../../ui/formrowview';\nimport type ColorInputView from '../../ui/colorinputview';\nimport type { TableCellPropertiesOptions } from '../../tableconfig';\n\nimport '../../../theme/form.css';\nimport '../../../theme/tableform.css';\nimport '../../../theme/tablecellproperties.css';\n\nconst ALIGNMENT_ICONS = {\n\tleft: icons.alignLeft,\n\tcenter: icons.alignCenter,\n\tright: icons.alignRight,\n\tjustify: icons.alignJustify,\n\ttop: icons.alignTop,\n\tmiddle: icons.alignMiddle,\n\tbottom: icons.alignBottom\n};\n\nexport interface TableCellPropertiesViewOptions {\n\tborderColors: Array<NormalizedColorOption>;\n\tbackgroundColors: Array<NormalizedColorOption>;\n\tdefaultTableCellProperties: TableCellPropertiesOptions;\n\tcolorPickerConfig: false | ColorPickerConfig;\n}\n\n/**\n * The class representing a table cell properties form, allowing users to customize\n * certain style aspects of a table cell, for instance, border, padding, text alignment, etc..\n */\nexport default class TableCellPropertiesView extends View {\n\t/**\n\t * The value of the cell border style.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tpublic declare borderStyle: string;\n\n\t/**\n\t * The value of the cell border width style.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tpublic declare borderWidth: string;\n\n\t/**\n\t * The value of the cell border color style.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tpublic declare borderColor: string;\n\n\t/**\n\t * The value of the cell padding style.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tpublic declare padding: string;\n\n\t/**\n\t * The value of the cell background color style.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tpublic declare backgroundColor: string;\n\n\t/**\n\t * The value of the table cell width style.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tpublic declare width: string;\n\n\t/**\n\t * The value of the table cell height style.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tpublic declare height: string;\n\n\t/**\n\t * The value of the horizontal text alignment style.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tpublic declare horizontalAlignment: string;\n\n\t/**\n\t * The value of the vertical text alignment style.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tpublic declare verticalAlignment: string;\n\n\t/**\n\t * Options passed to the view. See {@link #constructor} to learn more.\n\t */\n\tpublic readonly options: TableCellPropertiesViewOptions;\n\n\t/**\n\t * Tracks information about the DOM focus in the form.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * A collection of child views in the form.\n\t */\n\tpublic readonly children: ViewCollection;\n\n\t/**\n\t * A dropdown that allows selecting the style of the table cell border.\n\t */\n\tpublic readonly borderStyleDropdown: LabeledFieldView<FocusableView>;\n\n\t/**\n\t * An input that allows specifying the width of the table cell border.\n\t */\n\tpublic readonly borderWidthInput: LabeledFieldView<FocusableView>;\n\n\t/**\n\t * An input that allows specifying the color of the table cell border.\n\t */\n\tpublic readonly borderColorInput: LabeledFieldView<ColorInputView>;\n\n\t/**\n\t * An input that allows specifying the table cell background color.\n\t */\n\tpublic readonly backgroundInput: LabeledFieldView<ColorInputView>;\n\n\t/**\n\t * An input that allows specifying the table cell padding.\n\t */\n\tpublic readonly paddingInput: LabeledFieldView;\n\n\t/**\n\t * An input that allows specifying the table cell width.\n\t */\n\tpublic readonly widthInput: LabeledFieldView<FocusableView>;\n\n\t/**\n\t * An input that allows specifying the table cell height.\n\t */\n\tpublic readonly heightInput: LabeledFieldView<FocusableView>;\n\n\t/**\n\t * A toolbar with buttons that allow changing the horizontal text alignment in a table cell.\n\t */\n\tpublic readonly horizontalAlignmentToolbar: View<HTMLElement>;\n\n\t/**\n\t * A toolbar with buttons that allow changing the vertical text alignment in a table cell.\n\t */\n\tpublic readonly verticalAlignmentToolbar: View<HTMLElement>;\n\n\t/**\n\t * The \"Save\" button view.\n\t */\n\tpublic saveButtonView: ButtonView;\n\n\t/**\n\t * The \"Cancel\" button view.\n\t */\n\tpublic cancelButtonView: ButtonView;\n\n\t/**\n\t * A collection of views that can be focused in the form.\n\t */\n\tprotected readonly _focusables: ViewCollection;\n\n\t/**\n\t * Helps cycling over {@link #_focusables} in the form.\n\t */\n\tprotected readonly _focusCycler: FocusCycler;\n\n\t/**\n\t * @param locale The {@link module:core/editor/editor~Editor#locale} instance.\n\t * @param options Additional configuration of the view.\n\t * @param options.borderColors A configuration of the border color palette used by the\n\t * {@link module:table/tablecellproperties/ui/tablecellpropertiesview~TableCellPropertiesView#borderColorInput}.\n\t * @param options.backgroundColors A configuration of the background color palette used by the\n\t * {@link module:table/tablecellproperties/ui/tablecellpropertiesview~TableCellPropertiesView#backgroundInput}.\n\t * @param options.defaultTableCellProperties The default table cell properties.\n\t */\n\tconstructor( locale: Locale, options: TableCellPropertiesViewOptions ) {\n\t\tsuper( locale );\n\n\t\tthis.set( {\n\t\t\tborderStyle: '',\n\t\t\tborderWidth: '',\n\t\t\tborderColor: '',\n\t\t\tpadding: '',\n\t\t\tbackgroundColor: '',\n\t\t\twidth: '',\n\t\t\theight: '',\n\t\t\thorizontalAlignment: '',\n\t\t\tverticalAlignment: ''\n\t\t} );\n\n\t\tthis.options = options;\n\n\t\tconst { borderStyleDropdown, borderWidthInput, borderColorInput, borderRowLabel } = this._createBorderFields();\n\t\tconst { backgroundRowLabel, backgroundInput } = this._createBackgroundFields();\n\t\tconst { widthInput, operatorLabel, heightInput, dimensionsLabel } = this._createDimensionFields();\n\t\tconst { horizontalAlignmentToolbar, verticalAlignmentToolbar, alignmentLabel } = this._createAlignmentFields();\n\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis.children = this.createCollection();\n\t\tthis.borderStyleDropdown = borderStyleDropdown;\n\t\tthis.borderWidthInput = borderWidthInput;\n\t\tthis.borderColorInput = borderColorInput;\n\t\tthis.backgroundInput = backgroundInput;\n\t\tthis.paddingInput = this._createPaddingField();\n\t\tthis.widthInput = widthInput;\n\t\tthis.heightInput = heightInput;\n\t\tthis.horizontalAlignmentToolbar = horizontalAlignmentToolbar;\n\t\tthis.verticalAlignmentToolbar = verticalAlignmentToolbar;\n\n\t\t// Defer creating to make sure other fields are present and the Save button can\n\t\t// bind its #isEnabled to their error messages so there's no way to save unless all\n\t\t// fields are valid.\n\t\tconst { saveButtonView, cancelButtonView } = this._createActionButtons();\n\n\t\tthis.saveButtonView = saveButtonView;\n\t\tthis.cancelButtonView = cancelButtonView;\n\t\tthis._focusables = new ViewCollection();\n\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate form fields backwards using the Shift + Tab keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate form fields forwards using the Tab key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\t// Form header.\n\t\tthis.children.add( new FormHeaderView( locale, {\n\t\t\tlabel: this.t!( 'Cell properties' )\n\t\t} ) );\n\n\t\t// Border row.\n\t\tthis.children.add( new FormRowView( locale, {\n\t\t\tlabelView: borderRowLabel,\n\t\t\tchildren: [\n\t\t\t\tborderRowLabel,\n\t\t\t\tborderStyleDropdown,\n\t\t\t\tborderColorInput,\n\t\t\t\tborderWidthInput\n\t\t\t],\n\t\t\tclass: 'ck-table-form__border-row'\n\t\t} ) );\n\n\t\t// Background.\n\t\tthis.children.add( new FormRowView( locale, {\n\t\t\tlabelView: backgroundRowLabel,\n\t\t\tchildren: [\n\t\t\t\tbackgroundRowLabel,\n\t\t\t\tbackgroundInput\n\t\t\t],\n\t\t\tclass: 'ck-table-form__background-row'\n\t\t} ) );\n\n\t\t// Dimensions row and padding.\n\t\tthis.children.add( new FormRowView( locale, {\n\t\t\tchildren: [\n\t\t\t\t// Dimensions row.\n\t\t\t\tnew FormRowView( locale, {\n\t\t\t\t\tlabelView: dimensionsLabel,\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\tdimensionsLabel,\n\t\t\t\t\t\twidthInput,\n\t\t\t\t\t\toperatorLabel,\n\t\t\t\t\t\theightInput\n\t\t\t\t\t],\n\t\t\t\t\tclass: 'ck-table-form__dimensions-row'\n\t\t\t\t} ),\n\t\t\t\t// Padding row.\n\t\t\t\tnew FormRowView( locale, {\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\tthis.paddingInput\n\t\t\t\t\t],\n\t\t\t\t\tclass: 'ck-table-cell-properties-form__padding-row'\n\t\t\t\t} )\n\t\t\t]\n\t\t} ) );\n\n\t\t// Text alignment row.\n\t\tthis.children.add( new FormRowView( locale, {\n\t\t\tlabelView: alignmentLabel,\n\t\t\tchildren: [\n\t\t\t\talignmentLabel,\n\t\t\t\thorizontalAlignmentToolbar,\n\t\t\t\tverticalAlignmentToolbar\n\t\t\t],\n\t\t\tclass: 'ck-table-cell-properties-form__alignment-row'\n\t\t} ) );\n\n\t\t// Action row.\n\t\tthis.children.add( new FormRowView( locale, {\n\t\t\tchildren: [\n\t\t\t\tthis.saveButtonView,\n\t\t\t\tthis.cancelButtonView\n\t\t\t],\n\t\t\tclass: 'ck-table-form__action-row'\n\t\t} ) );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'form',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-form',\n\t\t\t\t\t'ck-table-form',\n\t\t\t\t\t'ck-table-cell-properties-form'\n\t\t\t\t],\n\t\t\t\t// https://github.com/ckeditor/ckeditor5-link/issues/90\n\t\t\t\ttabindex: '-1'\n\t\t\t},\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\t// Enable the \"submit\" event for this view. It can be triggered by the #saveButtonView\n\t\t// which is of the \"submit\" DOM \"type\".\n\t\tsubmitHandler( {\n\t\t\tview: this\n\t\t} );\n\n\t\t[\n\t\t\tthis.borderStyleDropdown,\n\t\t\tthis.borderColorInput,\n\t\t\tthis.borderColorInput.fieldView.dropdownView.buttonView,\n\t\t\tthis.borderWidthInput,\n\t\t\tthis.backgroundInput,\n\t\t\tthis.backgroundInput.fieldView.dropdownView.buttonView,\n\t\t\tthis.widthInput,\n\t\t\tthis.heightInput,\n\t\t\tthis.paddingInput,\n\t\t\tthis.horizontalAlignmentToolbar,\n\t\t\tthis.verticalAlignmentToolbar,\n\t\t\tthis.saveButtonView,\n\t\t\tthis.cancelButtonView\n\t\t].forEach( view => {\n\t\t\t// Register the view as focusable.\n\t\t\tthis._focusables.add( view );\n\n\t\t\t// Register the view in the focus tracker.\n\t\t\tthis.focusTracker.add( view.element! );\n\t\t} );\n\n\t\t// Mainly for closing using \"Esc\" and navigation using \"Tab\".\n\t\tthis.keystrokes.listenTo( this.element! );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Focuses the fist focusable field in the form.\n\t */\n\tpublic focus(): void {\n\t\tthis._focusCycler.focusFirst();\n\t}\n\n\t/**\n\t * Creates the following form fields:\n\t *\n\t * * {@link #borderStyleDropdown},\n\t * * {@link #borderWidthInput},\n\t * * {@link #borderColorInput}.\n\t */\n\tprivate _createBorderFields(): {\n\t\tborderRowLabel: LabelView;\n\t\tborderStyleDropdown: LabeledFieldView;\n\t\tborderColorInput: LabeledFieldView<ColorInputView>;\n\t\tborderWidthInput: LabeledFieldView;\n\t\t} {\n\t\tconst defaultTableCellProperties = this.options.defaultTableCellProperties;\n\t\tconst defaultBorder = {\n\t\t\tstyle: defaultTableCellProperties.borderStyle,\n\t\t\twidth: defaultTableCellProperties.borderWidth,\n\t\t\tcolor: defaultTableCellProperties.borderColor\n\t\t};\n\n\t\tconst colorInputCreator = getLabeledColorInputCreator( {\n\t\t\tcolorConfig: this.options.borderColors,\n\t\t\tcolumns: 5,\n\t\t\tdefaultColorValue: defaultBorder.color,\n\t\t\tcolorPickerConfig: this.options.colorPickerConfig\n\t\t} );\n\t\tconst locale = this.locale;\n\t\tconst t = this.t!;\n\t\tconst accessibleLabel = t( 'Style' );\n\n\t\t// -- Group label ---------------------------------------------\n\n\t\tconst borderRowLabel = new LabelView( locale );\n\t\tborderRowLabel.text = t( 'Border' );\n\n\t\t// -- Style ---------------------------------------------------\n\n\t\tconst styleLabels = getBorderStyleLabels( t );\n\t\tconst borderStyleDropdown = new LabeledFieldView( locale, createLabeledDropdown );\n\t\tborderStyleDropdown.set( {\n\t\t\tlabel: accessibleLabel,\n\t\t\tclass: 'ck-table-form__border-style'\n\t\t} );\n\n\t\tborderStyleDropdown.fieldView.buttonView.set( {\n\t\t\tariaLabel: accessibleLabel,\n\t\t\tariaLabelledBy: undefined,\n\t\t\tisOn: false,\n\t\t\twithText: true,\n\t\t\ttooltip: accessibleLabel\n\t\t} );\n\n\t\tborderStyleDropdown.fieldView.buttonView.bind( 'label' ).to( this, 'borderStyle', value => {\n\t\t\treturn styleLabels[ value ? value : 'none' ];\n\t\t} );\n\n\t\tborderStyleDropdown.fieldView.on( 'execute', evt => {\n\t\t\tthis.borderStyle = ( evt.source as Record<string, unknown> )._borderStyleValue as string;\n\t\t} );\n\n\t\tborderStyleDropdown.bind( 'isEmpty' ).to( this, 'borderStyle', value => !value );\n\n\t\taddListToDropdown( borderStyleDropdown.fieldView, getBorderStyleDefinitions( this, defaultBorder.style! ), {\n\t\t\trole: 'menu',\n\t\t\tariaLabel: accessibleLabel\n\t\t} );\n\n\t\t// -- Width ---------------------------------------------------\n\n\t\tconst borderWidthInput = new LabeledFieldView( locale, createLabeledInputText );\n\n\t\tborderWidthInput.set( {\n\t\t\tlabel: t( 'Width' ),\n\t\t\tclass: 'ck-table-form__border-width'\n\t\t} );\n\n\t\tborderWidthInput.fieldView.bind( 'value' ).to( this, 'borderWidth' );\n\t\tborderWidthInput.bind( 'isEnabled' ).to( this, 'borderStyle', isBorderStyleSet );\n\t\tborderWidthInput.fieldView.on( 'input', () => {\n\t\t\tthis.borderWidth = borderWidthInput.fieldView.element!.value;\n\t\t} );\n\n\t\t// -- Color ---------------------------------------------------\n\n\t\tconst borderColorInput = new LabeledFieldView( locale, colorInputCreator );\n\n\t\tborderColorInput.set( {\n\t\t\tlabel: t( 'Color' ),\n\t\t\tclass: 'ck-table-form__border-color'\n\t\t} );\n\n\t\tborderColorInput.fieldView.bind( 'value' ).to( this, 'borderColor' );\n\t\tborderColorInput.bind( 'isEnabled' ).to( this, 'borderStyle', isBorderStyleSet );\n\n\t\tborderColorInput.fieldView.on( 'input', () => {\n\t\t\tthis.borderColor = borderColorInput.fieldView.value;\n\t\t} );\n\n\t\t// Reset the border color and width fields depending on the `border-style` value.\n\t\tthis.on<ObservableChangeEvent<string>>( 'change:borderStyle', ( evt, name, newValue, oldValue ) => {\n\t\t\t// When removing the border (`border-style:none`), clear the remaining `border-*` properties.\n\t\t\t// See: https://github.com/ckeditor/ckeditor5/issues/6227.\n\t\t\tif ( !isBorderStyleSet( newValue ) ) {\n\t\t\t\tthis.borderColor = '';\n\t\t\t\tthis.borderWidth = '';\n\t\t\t}\n\n\t\t\t// When setting the `border-style` from `none`, set the default `border-color` and `border-width` properties.\n\t\t\tif ( !isBorderStyleSet( oldValue ) ) {\n\t\t\t\tthis.borderColor = defaultBorder.color!;\n\t\t\t\tthis.borderWidth = defaultBorder.width!;\n\t\t\t}\n\t\t} );\n\n\t\treturn {\n\t\t\tborderRowLabel,\n\t\t\tborderStyleDropdown,\n\t\t\tborderColorInput,\n\t\t\tborderWidthInput\n\t\t};\n\t}\n\n\t/**\n\t * Creates the following form fields:\n\t *\n\t * * {@link #backgroundInput}.\n\t */\n\tprivate _createBackgroundFields() {\n\t\tconst locale = this.locale;\n\t\tconst t = this.t!;\n\n\t\t// -- Group label ---------------------------------------------\n\n\t\tconst backgroundRowLabel = new LabelView( locale );\n\t\tbackgroundRowLabel.text = t( 'Background' );\n\n\t\t// -- Background color input -----------------------------------\n\n\t\tconst colorInputCreator = getLabeledColorInputCreator( {\n\t\t\tcolorConfig: this.options.backgroundColors,\n\t\t\tcolumns: 5,\n\t\t\tdefaultColorValue: this.options.defaultTableCellProperties.backgroundColor,\n\t\t\tcolorPickerConfig: this.options.colorPickerConfig\n\t\t} );\n\n\t\tconst backgroundInput = new LabeledFieldView( locale, colorInputCreator );\n\n\t\tbackgroundInput.set( {\n\t\t\tlabel: t( 'Color' ),\n\t\t\tclass: 'ck-table-cell-properties-form__background'\n\t\t} );\n\n\t\tbackgroundInput.fieldView.bind( 'value' ).to( this, 'backgroundColor' );\n\t\tbackgroundInput.fieldView.on( 'input', () => {\n\t\t\tthis.backgroundColor = backgroundInput.fieldView.value;\n\t\t} );\n\n\t\treturn {\n\t\t\tbackgroundRowLabel,\n\t\t\tbackgroundInput\n\t\t};\n\t}\n\n\t/**\n\t * Creates the following form fields:\n\t *\n\t * * {@link #widthInput}.\n\t * * {@link #heightInput}.\n\t */\n\tprivate _createDimensionFields(): {\n\t\tdimensionsLabel: LabelView;\n\t\twidthInput: LabeledFieldView;\n\t\toperatorLabel: View;\n\t\theightInput: LabeledFieldView;\n\t\t} {\n\t\tconst locale = this.locale;\n\t\tconst t = this.t!;\n\n\t\t// -- Label ---------------------------------------------------\n\n\t\tconst dimensionsLabel = new LabelView( locale );\n\t\tdimensionsLabel.text = t( 'Dimensions' );\n\n\t\t// -- Width ---------------------------------------------------\n\n\t\tconst widthInput = new LabeledFieldView( locale, createLabeledInputText );\n\n\t\twidthInput.set( {\n\t\t\tlabel: t( 'Width' ),\n\t\t\tclass: 'ck-table-form__dimensions-row__width'\n\t\t} );\n\n\t\twidthInput.fieldView.bind( 'value' ).to( this, 'width' );\n\t\twidthInput.fieldView.on( 'input', () => {\n\t\t\tthis.width = widthInput.fieldView.element!.value;\n\t\t} );\n\n\t\t// -- Operator ---------------------------------------------------\n\n\t\tconst operatorLabel = new View( locale );\n\t\toperatorLabel.setTemplate( {\n\t\t\ttag: 'span',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck-table-form__dimension-operator'\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{ text: '×' }\n\t\t\t]\n\t\t} );\n\n\t\t// -- Height ---------------------------------------------------\n\n\t\tconst heightInput = new LabeledFieldView( locale, createLabeledInputText );\n\n\t\theightInput.set( {\n\t\t\tlabel: t( 'Height' ),\n\t\t\tclass: 'ck-table-form__dimensions-row__height'\n\t\t} );\n\n\t\theightInput.fieldView.bind( 'value' ).to( this, 'height' );\n\t\theightInput.fieldView.on( 'input', () => {\n\t\t\tthis.height = heightInput.fieldView.element!.value;\n\t\t} );\n\n\t\treturn {\n\t\t\tdimensionsLabel,\n\t\t\twidthInput,\n\t\t\toperatorLabel,\n\t\t\theightInput\n\t\t};\n\t}\n\n\t/**\n\t * Creates the following form fields:\n\t *\n\t * * {@link #paddingInput}.\n\t */\n\tprivate _createPaddingField(): LabeledFieldView {\n\t\tconst locale = this.locale;\n\t\tconst t = this.t!;\n\n\t\tconst paddingInput = new LabeledFieldView( locale, createLabeledInputText );\n\n\t\tpaddingInput.set( {\n\t\t\tlabel: t( 'Padding' ),\n\t\t\tclass: 'ck-table-cell-properties-form__padding'\n\t\t} );\n\n\t\tpaddingInput.fieldView.bind( 'value' ).to( this, 'padding' );\n\t\tpaddingInput.fieldView.on( 'input', () => {\n\t\t\tthis.padding = paddingInput.fieldView.element!.value;\n\t\t} );\n\n\t\treturn paddingInput;\n\t}\n\n\t/**\n\t * Creates the following form fields:\n\t *\n\t * * {@link #horizontalAlignmentToolbar},\n\t * * {@link #verticalAlignmentToolbar}.\n\t */\n\tprivate _createAlignmentFields() {\n\t\tconst locale = this.locale!;\n\t\tconst t = this.t!;\n\n\t\tconst alignmentLabel = new LabelView( locale );\n\n\t\talignmentLabel.text = t( 'Table cell text alignment' );\n\n\t\t// -- Horizontal ---------------------------------------------------\n\n\t\tconst horizontalAlignmentToolbar = new ToolbarView( locale );\n\t\tconst isContentRTL = locale.contentLanguageDirection === 'rtl';\n\n\t\thorizontalAlignmentToolbar.set( {\n\t\t\tisCompact: true,\n\t\t\tariaLabel: t( 'Horizontal text alignment toolbar' )\n\t\t} );\n\n\t\tfillToolbar( {\n\t\t\tview: this,\n\t\t\ticons: ALIGNMENT_ICONS,\n\t\t\ttoolbar: horizontalAlignmentToolbar,\n\t\t\tlabels: this._horizontalAlignmentLabels,\n\t\t\tpropertyName: 'horizontalAlignment',\n\t\t\tnameToValue: name => {\n\t\t\t\t// For the RTL content, we want to swap the buttons \"align to the left\" and \"align to the right\".\n\t\t\t\tif ( isContentRTL ) {\n\t\t\t\t\tif ( name === 'left' ) {\n\t\t\t\t\t\treturn 'right';\n\t\t\t\t\t} else if ( name === 'right' ) {\n\t\t\t\t\t\treturn 'left';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn name;\n\t\t\t},\n\t\t\tdefaultValue: this.options.defaultTableCellProperties.horizontalAlignment\n\t\t} );\n\n\t\t// -- Vertical -----------------------------------------------------\n\n\t\tconst verticalAlignmentToolbar = new ToolbarView( locale );\n\n\t\tverticalAlignmentToolbar.set( {\n\t\t\tisCompact: true,\n\t\t\tariaLabel: t( 'Vertical text alignment toolbar' )\n\t\t} );\n\n\t\tfillToolbar( {\n\t\t\tview: this,\n\t\t\ticons: ALIGNMENT_ICONS,\n\t\t\ttoolbar: verticalAlignmentToolbar,\n\t\t\tlabels: this._verticalAlignmentLabels,\n\t\t\tpropertyName: 'verticalAlignment',\n\t\t\tdefaultValue: this.options.defaultTableCellProperties.verticalAlignment\n\t\t} );\n\n\t\treturn {\n\t\t\thorizontalAlignmentToolbar,\n\t\t\tverticalAlignmentToolbar,\n\t\t\talignmentLabel\n\t\t};\n\t}\n\n\t/**\n\t * Creates the following form controls:\n\t *\n\t * * {@link #saveButtonView},\n\t * * {@link #cancelButtonView}.\n\t */\n\tprivate _createActionButtons() {\n\t\tconst locale = this.locale;\n\t\tconst t = this.t!;\n\t\tconst saveButtonView = new ButtonView( locale );\n\t\tconst cancelButtonView = new ButtonView( locale );\n\t\tconst fieldsThatShouldValidateToSave = [\n\t\t\tthis.borderWidthInput,\n\t\t\tthis.borderColorInput,\n\t\t\tthis.backgroundInput,\n\t\t\tthis.paddingInput\n\t\t];\n\n\t\tsaveButtonView.set( {\n\t\t\tlabel: t( 'Save' ),\n\t\t\ticon: icons.check,\n\t\t\tclass: 'ck-button-save',\n\t\t\ttype: 'submit',\n\t\t\twithText: true\n\t\t} );\n\n\t\tsaveButtonView.bind( 'isEnabled' ).toMany( fieldsThatShouldValidateToSave, 'errorText', ( ...errorTexts ) => {\n\t\t\treturn errorTexts.every( errorText => !errorText );\n\t\t} );\n\n\t\tcancelButtonView.set( {\n\t\t\tlabel: t( 'Cancel' ),\n\t\t\ticon: icons.cancel,\n\t\t\tclass: 'ck-button-cancel',\n\t\t\twithText: true\n\t\t} );\n\n\t\tcancelButtonView.delegate( 'execute' ).to( this, 'cancel' );\n\n\t\treturn {\n\t\t\tsaveButtonView, cancelButtonView\n\t\t};\n\t}\n\n\t/**\n\t * Provides localized labels for {@link #horizontalAlignmentToolbar} buttons.\n\t */\n\tprivate get _horizontalAlignmentLabels(): Record<string, string> {\n\t\tconst locale = this.locale!;\n\t\tconst t = this.t!;\n\n\t\tconst left = t( 'Align cell text to the left' );\n\t\tconst center = t( 'Align cell text to the center' );\n\t\tconst right = t( 'Align cell text to the right' );\n\t\tconst justify = t( 'Justify cell text' );\n\n\t\t// Returns object with a proper order of labels.\n\t\tif ( locale.uiLanguageDirection === 'rtl' ) {\n\t\t\treturn { right, center, left, justify };\n\t\t} else {\n\t\t\treturn { left, center, right, justify };\n\t\t}\n\t}\n\n\t/**\n\t * Provides localized labels for {@link #verticalAlignmentToolbar} buttons.\n\t */\n\tprivate get _verticalAlignmentLabels(): Record<string, string> {\n\t\tconst t = this.t!;\n\n\t\treturn {\n\t\t\ttop: t( 'Align cell text to the top' ),\n\t\t\tmiddle: t( 'Align cell text to the middle' ),\n\t\t\tbottom: t( 'Align cell text to the bottom' )\n\t\t};\n\t}\n}\n\nfunction isBorderStyleSet( value: string ) {\n\treturn value !== 'none';\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/utils/ui/contextualballoon\n */\n\nimport { Rect, type PositionOptions } from 'ckeditor5/src/utils';\nimport { BalloonPanelView, type ContextualBalloon } from 'ckeditor5/src/ui';\n\nimport { getTableWidgetAncestor } from './widget';\nimport type { Editor } from 'ckeditor5/src/core';\nimport type { Element, Position, Range } from 'ckeditor5/src/engine';\n\nconst DEFAULT_BALLOON_POSITIONS = BalloonPanelView.defaultPositions;\n\nconst BALLOON_POSITIONS = [\n\tDEFAULT_BALLOON_POSITIONS.northArrowSouth,\n\tDEFAULT_BALLOON_POSITIONS.northArrowSouthWest,\n\tDEFAULT_BALLOON_POSITIONS.northArrowSouthEast,\n\tDEFAULT_BALLOON_POSITIONS.southArrowNorth,\n\tDEFAULT_BALLOON_POSITIONS.southArrowNorthWest,\n\tDEFAULT_BALLOON_POSITIONS.southArrowNorthEast,\n\tDEFAULT_BALLOON_POSITIONS.viewportStickyNorth\n];\n\n/**\n * A helper utility that positions the\n * {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} instance\n * with respect to the table in the editor content, if one is selected.\n *\n * @param editor The editor instance.\n * @param target Either \"cell\" or \"table\". Determines the target the balloon will be attached to.\n */\nexport function repositionContextualBalloon( editor: Editor, target: string ): void {\n\tconst balloon: ContextualBalloon = editor.plugins.get( 'ContextualBalloon' );\n\n\tif ( getTableWidgetAncestor( editor.editing.view.document.selection ) ) {\n\t\tlet position;\n\n\t\tif ( target === 'cell' ) {\n\t\t\tposition = getBalloonCellPositionData( editor );\n\t\t} else {\n\t\t\tposition = getBalloonTablePositionData( editor );\n\t\t}\n\n\t\tballoon.updatePosition( position );\n\t}\n}\n\n/**\n * Returns the positioning options that control the geometry of the\n * {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} with respect\n * to the selected table in the editor content.\n *\n * @param editor The editor instance.\n */\nexport function getBalloonTablePositionData( editor: Editor ): Partial<PositionOptions> {\n\tconst firstPosition = editor.model.document.selection.getFirstPosition()!;\n\tconst modelTable = firstPosition.findAncestor( 'table' )!;\n\tconst viewTable = editor.editing.mapper.toViewElement( modelTable )!;\n\n\treturn {\n\t\ttarget: editor.editing.view.domConverter.mapViewToDom( viewTable )!,\n\t\tpositions: BALLOON_POSITIONS\n\t};\n}\n\n/**\n * Returns the positioning options that control the geometry of the\n * {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon} with respect\n * to the selected table cell in the editor content.\n *\n * @param editor The editor instance.\n */\nexport function getBalloonCellPositionData( editor: Editor ): Partial<PositionOptions> {\n\tconst mapper = editor.editing.mapper;\n\tconst domConverter = editor.editing.view.domConverter;\n\tconst selection = editor.model.document.selection;\n\n\tif ( selection.rangeCount > 1 ) {\n\t\treturn {\n\t\t\ttarget: () => createBoundingRect( selection.getRanges(), editor ),\n\t\t\tpositions: BALLOON_POSITIONS\n\t\t};\n\t}\n\n\tconst modelTableCell = getTableCellAtPosition( selection.getFirstPosition()! );\n\tconst viewTableCell = mapper.toViewElement( modelTableCell )!;\n\n\treturn {\n\t\ttarget: domConverter.mapViewToDom( viewTableCell ),\n\t\tpositions: BALLOON_POSITIONS\n\t};\n}\n\n/**\n * Returns the first selected table cell from a multi-cell or in-cell selection.\n *\n * @param position Document position.\n */\nfunction getTableCellAtPosition( position: Position ): Element {\n\tconst isTableCellSelected = position.nodeAfter && position.nodeAfter.is( 'element', 'tableCell' );\n\n\treturn isTableCellSelected ? position.nodeAfter : position.findAncestor( 'tableCell' )!;\n}\n\n/**\n * Returns bounding rectangle for given model ranges.\n *\n * @param ranges Model ranges that the bounding rect should be returned for.\n * @param editor The editor instance.\n */\nfunction createBoundingRect( ranges: Iterable<Range>, editor: Editor ): Rect {\n\tconst mapper = editor.editing.mapper;\n\tconst domConverter = editor.editing.view.domConverter;\n\tconst rects = Array.from( ranges ).map( range => {\n\t\tconst modelTableCell = getTableCellAtPosition( range.start );\n\t\tconst viewTableCell = mapper.toViewElement( modelTableCell )!;\n\t\treturn new Rect( domConverter.mapViewToDom( viewTableCell )! );\n\t} );\n\n\treturn Rect.getBoundingRect( rects )!;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/utils/table-properties\n */\n\nimport type { BoxSides } from 'ckeditor5/src/engine';\nimport { isObject } from 'lodash-es';\n\n/**\n * Returns a string if all four values of box sides are equal.\n *\n * If a string is passed, it is treated as a single value (pass-through).\n *\n * ```ts\n * // Returns 'foo':\n * getSingleValue( { top: 'foo', right: 'foo', bottom: 'foo', left: 'foo' } );\n * getSingleValue( 'foo' );\n *\n * // Returns undefined:\n * getSingleValue( { top: 'foo', right: 'foo', bottom: 'bar', left: 'foo' } );\n * getSingleValue( { top: 'foo', right: 'foo' } );\n * ```\n */\nexport function getSingleValue( objectOrString: BoxSides | string | undefined ): string | undefined {\n\tif ( !objectOrString || !isObject( objectOrString ) ) {\n\t\treturn objectOrString;\n\t}\n\n\tconst { top, right, bottom, left } = objectOrString;\n\n\tif ( top == right && right == bottom && bottom == left ) {\n\t\treturn top!;\n\t}\n}\n\n/**\n * Adds a unit to a value if the value is a number or a string representing a number.\n *\n * **Note**: It does nothing to non-numeric values.\n *\n * ```ts\n * getSingleValue( 25, 'px' ); // '25px'\n * getSingleValue( 25, 'em' ); // '25em'\n * getSingleValue( '25em', 'px' ); // '25em'\n * getSingleValue( 'foo', 'px' ); // 'foo'\n * ```\n *\n * @param defaultUnit A default unit added to a numeric value.\n */\nexport function addDefaultUnitToNumericValue( value: string | number | undefined, defaultUnit: string ): string | number | undefined {\n\tconst numericValue = parseFloat( value as any );\n\n\tif ( Number.isNaN( numericValue ) ) {\n\t\treturn value;\n\t}\n\n\tif ( String( numericValue ) !== String( value ) ) {\n\t\treturn value;\n\t}\n\n\treturn `${ numericValue }${ defaultUnit }`;\n}\n\nexport interface NormalizedDefaultProperties {\n\tborderStyle: string;\n\tborderWidth: string;\n\tborderColor: string;\n\tbackgroundColor: string;\n\twidth: string;\n\theight: string;\n\talignment?: string;\n\tpadding?: string;\n\tverticalAlignment?: string;\n\thorizontalAlignment?: string;\n}\n\n/**\n * Returns the normalized configuration.\n *\n * @param options.includeAlignmentProperty Whether the \"alignment\" property should be added.\n * @param options.includePaddingProperty Whether the \"padding\" property should be added.\n * @param options.includeVerticalAlignmentProperty Whether the \"verticalAlignment\" property should be added.\n * @param options.includeHorizontalAlignmentProperty Whether the \"horizontalAlignment\" property should be added.\n * @param options.isRightToLeftContent Whether the content is right-to-left.\n */\nexport function getNormalizedDefaultProperties(\n\tconfig: Partial<NormalizedDefaultProperties> | undefined,\n\toptions: {\n\t\tincludeAlignmentProperty?: boolean;\n\t\tincludePaddingProperty?: boolean;\n\t\tincludeVerticalAlignmentProperty?: boolean;\n\t\tincludeHorizontalAlignmentProperty?: boolean;\n\t\tisRightToLeftContent?: boolean;\n\t} = {}\n): NormalizedDefaultProperties {\n\tconst normalizedConfig: NormalizedDefaultProperties = {\n\t\tborderStyle: 'none',\n\t\tborderWidth: '',\n\t\tborderColor: '',\n\t\tbackgroundColor: '',\n\t\twidth: '',\n\t\theight: '',\n\t\t...config\n\t};\n\n\tif ( options.includeAlignmentProperty && !normalizedConfig.alignment ) {\n\t\tnormalizedConfig.alignment = 'center';\n\t}\n\n\tif ( options.includePaddingProperty && !normalizedConfig.padding ) {\n\t\tnormalizedConfig.padding = '';\n\t}\n\n\tif ( options.includeVerticalAlignmentProperty && !normalizedConfig.verticalAlignment ) {\n\t\tnormalizedConfig.verticalAlignment = 'middle';\n\t}\n\n\tif ( options.includeHorizontalAlignmentProperty && !normalizedConfig.horizontalAlignment ) {\n\t\tnormalizedConfig.horizontalAlignment = options.isRightToLeftContent ? 'right' : 'left';\n\t}\n\n\treturn normalizedConfig;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecellproperties/tablecellpropertiesui\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\nimport {\n\tButtonView,\n\tclickOutsideHandler,\n\tContextualBalloon,\n\tgetLocalizedColorOptions,\n\tnormalizeColorOptions,\n\ttype View\n} from 'ckeditor5/src/ui';\nimport type { Batch } from 'ckeditor5/src/engine';\n\nimport TableCellPropertiesView from './ui/tablecellpropertiesview';\nimport {\n\tcolorFieldValidator,\n\tgetLocalizedColorErrorText,\n\tgetLocalizedLengthErrorText,\n\tdefaultColors,\n\tlengthFieldValidator,\n\tlineWidthFieldValidator\n} from '../utils/ui/table-properties';\nimport { debounce } from 'lodash-es';\nimport { getTableWidgetAncestor } from '../utils/ui/widget';\nimport { getBalloonCellPositionData, repositionContextualBalloon } from '../utils/ui/contextualballoon';\n\nimport tableCellProperties from './../../theme/icons/table-cell-properties.svg';\nimport { getNormalizedDefaultProperties, type NormalizedDefaultProperties } from '../utils/table-properties';\nimport type { GetCallback, ObservableChangeEvent } from 'ckeditor5/src/utils';\n\nimport type TableCellBorderStyleCommand from './commands/tablecellborderstylecommand';\n\nconst ERROR_TEXT_TIMEOUT = 500;\n\n// Map of view properties and related commands.\nconst propertyToCommandMap = {\n\tborderStyle: 'tableCellBorderStyle',\n\tborderColor: 'tableCellBorderColor',\n\tborderWidth: 'tableCellBorderWidth',\n\theight: 'tableCellHeight',\n\twidth: 'tableCellWidth',\n\tpadding: 'tableCellPadding',\n\tbackgroundColor: 'tableCellBackgroundColor',\n\thorizontalAlignment: 'tableCellHorizontalAlignment',\n\tverticalAlignment: 'tableCellVerticalAlignment'\n} as const;\n\n/**\n * The table cell properties UI plugin. It introduces the `'tableCellProperties'` button\n * that opens a form allowing to specify the visual styling of a table cell.\n *\n * It uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon plugin}.\n */\nexport default class TableCellPropertiesUI extends Plugin {\n\t/**\n\t * The default table cell properties.\n\t */\n\tprivate _defaultTableCellProperties!: NormalizedDefaultProperties;\n\n\t/**\n\t * The contextual balloon plugin instance.\n\t */\n\tprivate _balloon?: ContextualBalloon;\n\n\t/**\n\t * The cell properties form view displayed inside the balloon.\n\t */\n\tpublic view?: TableCellPropertiesView | null;\n\n\t/**\n\t * The batch used to undo all changes made by the form (which are live, as the user types)\n\t * when \"Cancel\" was pressed. Each time the view is shown, a new batch is created.\n\t */\n\tprivate _undoStepBatch?: Batch;\n\n\t/**\n\t * Flag used to indicate whether view is ready to execute update commands\n\t * (it finished loading initial data).\n\t */\n\tprivate _isReady?: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ContextualBalloon ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableCellPropertiesUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'table.tableCellProperties', {\n\t\t\tborderColors: defaultColors,\n\t\t\tbackgroundColors: defaultColors\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\tthis._defaultTableCellProperties = getNormalizedDefaultProperties(\n\t\t\teditor.config.get( 'table.tableCellProperties.defaultProperties' )!,\n\t\t\t{\n\t\t\t\tincludeVerticalAlignmentProperty: true,\n\t\t\t\tincludeHorizontalAlignmentProperty: true,\n\t\t\t\tincludePaddingProperty: true,\n\t\t\t\tisRightToLeftContent: editor.locale.contentLanguageDirection === 'rtl'\n\t\t\t}\n\t\t);\n\n\t\tthis._balloon = editor.plugins.get( ContextualBalloon );\n\t\tthis.view = null;\n\t\tthis._isReady = false;\n\n\t\teditor.ui.componentFactory.add( 'tableCellProperties', locale => {\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\tlabel: t( 'Cell properties' ),\n\t\t\t\ticon: tableCellProperties,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tthis.listenTo( view, 'execute', () => this._showView() );\n\n\t\t\tconst commands = Object.values( propertyToCommandMap )\n\t\t\t\t.map( commandName => editor.commands.get( commandName )! );\n\n\t\t\tview.bind( 'isEnabled' ).toMany( commands, 'isEnabled', ( ...areEnabled ) => (\n\t\t\t\tareEnabled.some( isCommandEnabled => isCommandEnabled )\n\t\t\t) );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\t// Destroy created UI components as they are not automatically destroyed.\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/1341.\n\t\tif ( this.view ) {\n\t\t\tthis.view.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * Creates the {@link module:table/tablecellproperties/ui/tablecellpropertiesview~TableCellPropertiesView} instance.\n\t *\n\t * @returns The cell properties form view instance.\n\t */\n\tprivate _createPropertiesView() {\n\t\tconst editor = this.editor;\n\t\tconst config = editor.config.get( 'table.tableCellProperties' )!;\n\t\tconst borderColorsConfig = normalizeColorOptions( config.borderColors! );\n\t\tconst localizedBorderColors = getLocalizedColorOptions( editor.locale, borderColorsConfig );\n\t\tconst backgroundColorsConfig = normalizeColorOptions( config.backgroundColors! );\n\t\tconst localizedBackgroundColors = getLocalizedColorOptions( editor.locale, backgroundColorsConfig );\n\t\tconst hasColorPicker = config.colorPicker !== false;\n\n\t\tconst view = new TableCellPropertiesView( editor.locale, {\n\t\t\tborderColors: localizedBorderColors,\n\t\t\tbackgroundColors: localizedBackgroundColors,\n\t\t\tdefaultTableCellProperties: this._defaultTableCellProperties,\n\t\t\tcolorPickerConfig: hasColorPicker ? ( config.colorPicker || {} ) : false\n\t\t} );\n\t\tconst t = editor.t;\n\n\t\t// Render the view so its #element is available for the clickOutsideHandler.\n\t\tview.render();\n\n\t\tthis.listenTo( view, 'submit', () => {\n\t\t\tthis._hideView();\n\t\t} );\n\n\t\tthis.listenTo( view, 'cancel', () => {\n\t\t\t// https://github.com/ckeditor/ckeditor5/issues/6180\n\t\t\tif ( this._undoStepBatch!.operations.length ) {\n\t\t\t\teditor.execute( 'undo', this._undoStepBatch );\n\t\t\t}\n\n\t\t\tthis._hideView();\n\t\t} );\n\n\t\t// Close the balloon on Esc key press.\n\t\tview.keystrokes.set( 'Esc', ( data, cancel ) => {\n\t\t\tthis._hideView();\n\t\t\tcancel();\n\t\t} );\n\n\t\t// Close on click outside of balloon panel element.\n\t\tclickOutsideHandler( {\n\t\t\temitter: view,\n\t\t\tactivator: () => this._isViewInBalloon,\n\t\t\tcontextElements: [ this._balloon!.view.element! ],\n\t\t\tcallback: () => this._hideView()\n\t\t} );\n\n\t\tconst colorErrorText = getLocalizedColorErrorText( t );\n\t\tconst lengthErrorText = getLocalizedLengthErrorText( t );\n\n\t\t// Create the \"UI -> editor data\" binding.\n\t\t// These listeners update the editor data (via table commands) when any observable\n\t\t// property of the view has changed. They also validate the value and display errors in the UI\n\t\t// when necessary. This makes the view live, which means the changes are\n\t\t// visible in the editing as soon as the user types or changes fields' values.\n\t\tview.on<ObservableChangeEvent<string>>(\n\t\t\t'change:borderStyle',\n\t\t\tthis._getPropertyChangeCallback( 'tableCellBorderStyle' )\n\t\t);\n\n\t\tview.on<ObservableChangeEvent<string>>( 'change:borderColor', this._getValidatedPropertyChangeCallback( {\n\t\t\tviewField: view.borderColorInput,\n\t\t\tcommandName: 'tableCellBorderColor',\n\t\t\terrorText: colorErrorText,\n\t\t\tvalidator: colorFieldValidator\n\t\t} ) );\n\n\t\tview.on<ObservableChangeEvent<string>>( 'change:borderWidth', this._getValidatedPropertyChangeCallback( {\n\t\t\tviewField: view.borderWidthInput,\n\t\t\tcommandName: 'tableCellBorderWidth',\n\t\t\terrorText: lengthErrorText,\n\t\t\tvalidator: lineWidthFieldValidator\n\t\t} ) );\n\n\t\tview.on<ObservableChangeEvent<string>>( 'change:padding', this._getValidatedPropertyChangeCallback( {\n\t\t\tviewField: view.paddingInput,\n\t\t\tcommandName: 'tableCellPadding',\n\t\t\terrorText: lengthErrorText,\n\t\t\tvalidator: lengthFieldValidator\n\t\t} ) );\n\n\t\tview.on<ObservableChangeEvent<string>>( 'change:width', this._getValidatedPropertyChangeCallback( {\n\t\t\tviewField: view.widthInput,\n\t\t\tcommandName: 'tableCellWidth',\n\t\t\terrorText: lengthErrorText,\n\t\t\tvalidator: lengthFieldValidator\n\t\t} ) );\n\n\t\tview.on<ObservableChangeEvent<string>>( 'change:height', this._getValidatedPropertyChangeCallback( {\n\t\t\tviewField: view.heightInput,\n\t\t\tcommandName: 'tableCellHeight',\n\t\t\terrorText: lengthErrorText,\n\t\t\tvalidator: lengthFieldValidator\n\t\t} ) );\n\n\t\tview.on<ObservableChangeEvent<string>>( 'change:backgroundColor', this._getValidatedPropertyChangeCallback( {\n\t\t\tviewField: view.backgroundInput,\n\t\t\tcommandName: 'tableCellBackgroundColor',\n\t\t\terrorText: colorErrorText,\n\t\t\tvalidator: colorFieldValidator\n\t\t} ) );\n\n\t\tview.on<ObservableChangeEvent<string>>(\n\t\t\t'change:horizontalAlignment',\n\t\t\tthis._getPropertyChangeCallback( 'tableCellHorizontalAlignment' )\n\t\t);\n\t\tview.on<ObservableChangeEvent<string>>(\n\t\t\t'change:verticalAlignment',\n\t\t\tthis._getPropertyChangeCallback( 'tableCellVerticalAlignment' )\n\t\t);\n\n\t\treturn view;\n\t}\n\n\t/**\n\t * In this method the \"editor data -> UI\" binding is happening.\n\t *\n\t * When executed, this method obtains selected cell property values from various table commands\n\t * and passes them to the {@link #view}.\n\t *\n\t * This way, the UI stays up–to–date with the editor data.\n\t */\n\tprivate _fillViewFormFromCommandValues() {\n\t\tconst commands = this.editor.commands;\n\t\tconst borderStyleCommand: TableCellBorderStyleCommand = commands.get( 'tableCellBorderStyle' )!;\n\n\t\tObject.entries( propertyToCommandMap )\n\t\t\t.map( ( [ property, commandName ] ) => {\n\t\t\t\tconst defaultValue = this._defaultTableCellProperties[ property as keyof NormalizedDefaultProperties ] || '';\n\n\t\t\t\treturn [\n\t\t\t\t\tproperty as keyof typeof propertyToCommandMap,\n\t\t\t\t\tcommands.get( commandName )!.value as string || defaultValue\n\t\t\t\t] as const;\n\t\t\t} )\n\t\t\t.forEach( ( [ property, value ] ) => {\n\t\t\t\t// Do not set the `border-color` and `border-width` fields if `border-style:none`.\n\t\t\t\tif ( ( property === 'borderColor' || property === 'borderWidth' ) && borderStyleCommand.value === 'none' ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.view!.set( property, value );\n\t\t\t} );\n\n\t\tthis._isReady = true;\n\t}\n\n\t/**\n\t * Shows the {@link #view} in the {@link #_balloon}.\n\t *\n\t * **Note**: Each time a view is shown, a new {@link #_undoStepBatch} is created. It contains\n\t * all changes made to the document when the view is visible, allowing a single undo step\n\t * for all of them.\n\t */\n\tprotected _showView(): void {\n\t\tconst editor = this.editor;\n\n\t\tif ( !this.view ) {\n\t\t\tthis.view = this._createPropertiesView();\n\t\t}\n\n\t\tthis.listenTo( editor.ui, 'update', () => {\n\t\t\tthis._updateView();\n\t\t} );\n\n\t\t// Update the view with the model values.\n\t\tthis._fillViewFormFromCommandValues();\n\n\t\tthis._balloon!.add( {\n\t\t\tview: this.view,\n\t\t\tposition: getBalloonCellPositionData( editor )\n\t\t} );\n\n\t\t// Create a new batch. Clicking \"Cancel\" will undo this batch.\n\t\tthis._undoStepBatch = editor.model.createBatch();\n\n\t\t// Basic a11y.\n\t\tthis.view.focus();\n\t}\n\n\t/**\n\t * Removes the {@link #view} from the {@link #_balloon}.\n\t */\n\tprotected _hideView(): void {\n\t\tconst editor = this.editor;\n\n\t\tthis.stopListening( editor.ui, 'update' );\n\n\t\tthis._isReady = false;\n\n\t\t// Blur any input element before removing it from DOM to prevent issues in some browsers.\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/1501.\n\t\tthis.view!.saveButtonView.focus();\n\n\t\tthis._balloon!.remove( this.view! );\n\n\t\t// Make sure the focus is not lost in the process by putting it directly\n\t\t// into the editing view.\n\t\tthis.editor.editing.view.focus();\n\t}\n\n\t/**\n\t * Repositions the {@link #_balloon} or hides the {@link #view} if a table cell is no longer selected.\n\t */\n\tprotected _updateView(): void {\n\t\tconst editor = this.editor;\n\t\tconst viewDocument = editor.editing.view.document;\n\n\t\tif ( !getTableWidgetAncestor( viewDocument.selection ) ) {\n\t\t\tthis._hideView();\n\t\t} else if ( this._isViewVisible ) {\n\t\t\trepositionContextualBalloon( editor, 'cell' );\n\t\t}\n\t}\n\n\t/**\n\t * Returns `true` when the {@link #view} is visible in the {@link #_balloon}.\n\t */\n\tprivate get _isViewVisible() {\n\t\treturn !!this.view && this._balloon!.visibleView === this.view;\n\t}\n\n\t/**\n\t * Returns `true` when the {@link #view} is in the {@link #_balloon}.\n\t */\n\tprivate get _isViewInBalloon() {\n\t\treturn !!this.view && this._balloon!.hasView( this.view );\n\t}\n\n\t/**\n\t * Creates a callback that when executed upon the {@link #view view's} property change\n\t * executes a related editor command with the new property value.\n\t *\n\t * @param defaultValue The default value of the command.\n\t */\n\tprivate _getPropertyChangeCallback(\n\t\tcommandName: 'tableCellBorderStyle' | 'tableCellHorizontalAlignment' | 'tableCellVerticalAlignment'\n\t): GetCallback<ObservableChangeEvent<string>> {\n\t\treturn ( evt, propertyName, newValue ) => {\n\t\t\tif ( !this._isReady ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.editor.execute( commandName, {\n\t\t\t\tvalue: newValue,\n\t\t\t\tbatch: this._undoStepBatch\n\t\t\t} );\n\t\t};\n\t}\n\n\t/**\n\t * Creates a callback that when executed upon the {@link #view view's} property change:\n\t * * Executes a related editor command with the new property value if the value is valid,\n\t * * Or sets the error text next to the invalid field, if the value did not pass the validation.\n\t */\n\tprivate _getValidatedPropertyChangeCallback(\n\t\toptions: {\n\t\t\tcommandName: `tableCell${ 'BorderColor' | 'BorderWidth' | 'Padding' | 'Width' | 'Height' | 'BackgroundColor' }`;\n\t\t\tviewField: View & { errorText?: string | null };\n\t\t\tvalidator: ( arg0: string ) => boolean;\n\t\t\terrorText: string;\n\t\t}\n\t): GetCallback<ObservableChangeEvent<string>> {\n\t\tconst { commandName, viewField, validator, errorText } = options;\n\t\tconst setErrorTextDebounced = debounce( () => {\n\t\t\tviewField.errorText = errorText;\n\t\t}, ERROR_TEXT_TIMEOUT );\n\n\t\treturn ( evt, propertyName, newValue ) => {\n\t\t\tsetErrorTextDebounced.cancel();\n\t\t\t// Do not execute the command on initial call (opening the table properties view).\n\t\t\tif ( !this._isReady ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( validator( newValue ) ) {\n\t\t\t\tthis.editor.execute( commandName, {\n\t\t\t\t\tvalue: newValue,\n\t\t\t\t\tbatch: this._undoStepBatch\n\t\t\t\t} );\n\n\t\t\t\tviewField.errorText = null;\n\t\t\t} else {\n\t\t\t\tsetErrorTextDebounced();\n\t\t\t}\n\t\t};\n\t}\n}\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m11.105 18-.17 1H2.5A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1h15A1.5 1.5 0 0 1 19 2.5v9.975l-.85-.124-.15-.302V8h-5v4h.021l-.172.351-1.916.28-.151.027c-.287.063-.54.182-.755.341L8 13v5h3.105zM2 12h5V8H2v4zm10-4H8v4h4V8zM2 2v5h5V2H2zm0 16h5v-5H2v5zM13 7h5V2h-5v5zM8 2v5h4V2H8z\\\" opacity=\\\".6\\\"/><path d=\\\"m15.5 11.5 1.323 2.68 2.957.43-2.14 2.085.505 2.946L15.5 18.25l-2.645 1.39.505-2.945-2.14-2.086 2.957-.43L15.5 11.5zM13 6a1 1 0 0 1 1 1v3.172a2.047 2.047 0 0 0-.293.443l-.858 1.736-1.916.28-.151.027A1.976 1.976 0 0 0 9.315 14H7a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h6zm-1 2H8v4h4V8z\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecellproperties/commands/tablecellpropertycommand\n */\n\nimport { Command, type Editor } from 'ckeditor5/src/core';\nimport type { Element, Batch } from 'ckeditor5/src/engine';\nimport type TableUtils from '../../tableutils';\n\n/**\n * The table cell attribute command.\n *\n * The command is a base command for other table cell property commands.\n */\nexport default class TableCellPropertyCommand extends Command {\n\t/**\n\t * The attribute that will be set by the command.\n\t */\n\tpublic readonly attributeName: string;\n\n\t/**\n\t * The default value for the attribute.\n\t */\n\tprotected readonly _defaultValue: string;\n\n\t/**\n\t * Creates a new `TableCellPropertyCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param attributeName Table cell attribute name.\n\t * @param defaultValue The default value of the attribute.\n\t */\n\tconstructor( editor: Editor, attributeName: string, defaultValue: string ) {\n\t\tsuper( editor );\n\n\t\tthis.attributeName = attributeName;\n\t\tthis._defaultValue = defaultValue;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst selectedTableCells = tableUtils.getSelectionAffectedTableCells( editor.model.document.selection );\n\n\t\tthis.isEnabled = !!selectedTableCells.length;\n\t\tthis.value = this._getSingleValue( selectedTableCells );\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t * @param options.value If set, the command will set the attribute on selected table cells.\n\t * If it is not set, the command will remove the attribute from the selected table cells.\n\t * @param options.batch Pass the model batch instance to the command to aggregate changes,\n\t * for example to allow a single undo step for multiple executions.\n\t */\n\tpublic override execute( options: { value?: string | number; batch?: Batch } = {} ): void {\n\t\tconst { value, batch } = options;\n\t\tconst model = this.editor.model;\n\t\tconst tableUtils: TableUtils = this.editor.plugins.get( 'TableUtils' );\n\t\tconst tableCells = tableUtils.getSelectionAffectedTableCells( model.document.selection );\n\t\tconst valueToSet = this._getValueToSet( value );\n\n\t\tmodel.enqueueChange( batch, writer => {\n\t\t\tif ( valueToSet ) {\n\t\t\t\ttableCells.forEach( tableCell => writer.setAttribute( this.attributeName, valueToSet, tableCell ) );\n\t\t\t} else {\n\t\t\t\ttableCells.forEach( tableCell => writer.removeAttribute( this.attributeName, tableCell ) );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Returns the attribute value for a table cell.\n\t */\n\tprotected _getAttribute( tableCell: Element | undefined ): unknown {\n\t\tif ( !tableCell ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = tableCell.getAttribute( this.attributeName );\n\n\t\tif ( value === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t/**\n\t * Returns the proper model value. It can be used to add a default unit to numeric values.\n\t */\n\tprotected _getValueToSet( value: string | number | undefined ): unknown {\n\t\tif ( value === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t/**\n\t * Returns a single value for all selected table cells. If the value is the same for all cells,\n\t * it will be returned (`undefined` otherwise).\n\t */\n\tprivate _getSingleValue( tableCells: Array<Element> ) {\n\t\tconst firstCellValue = this._getAttribute( tableCells[ 0 ] );\n\n\t\tconst everyCellHasAttribute = tableCells.every( tableCells => this._getAttribute( tableCells ) === firstCellValue );\n\n\t\treturn everyCellHasAttribute ? firstCellValue : undefined;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecellwidth/commands/tablecellwidthcommand\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\n\nimport TableCellPropertyCommand from '../../tablecellproperties/commands/tablecellpropertycommand';\nimport { addDefaultUnitToNumericValue } from '../../utils/table-properties';\n\n/**\n * The table cell width command.\n *\n * The command is registered by the {@link module:table/tablecellwidth/tablecellwidthediting~TableCellWidthEditing} as\n * the `'tableCellWidth'` editor command.\n *\n * To change the width of selected cells, execute the command:\n *\n * ```ts\n * editor.execute( 'tableCellWidth', {\n * value: '50px'\n * } );\n * ```\n *\n * **Note**: This command adds a default `'px'` unit to numeric values. Executing:\n *\n * ```ts\n * editor.execute( 'tableCellWidth', {\n * value: '50'\n * } );\n * ```\n *\n * will set the `width` attribute to `'50px'` in the model.\n */\nexport default class TableCellWidthCommand extends TableCellPropertyCommand {\n\t/**\n\t * Creates a new `TableCellWidthCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param defaultValue The default value of the attribute.\n\t */\n\tconstructor( editor: Editor, defaultValue: string ) {\n\t\tsuper( editor, 'tableCellWidth', defaultValue );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override _getValueToSet( value: string | number | undefined ): unknown {\n\t\tvalue = addDefaultUnitToNumericValue( value, 'px' );\n\n\t\tif ( value === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn value;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecellwidth/tablecellwidthediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport TableEditing from './../tableediting';\nimport TableCellWidthCommand from './commands/tablecellwidthcommand';\nimport { getNormalizedDefaultProperties } from '../utils/table-properties';\nimport { enableProperty } from '../utils/common';\n\n/**\n * The table cell width editing feature.\n *\n * Introduces `tableCellWidth` table cell model attribute alongside with its converters\n * and a command.\n */\nexport default class TableCellWidthEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableCellWidthEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ TableEditing ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\tconst defaultTableCellProperties = getNormalizedDefaultProperties(\n\t\t\teditor.config.get( 'table.tableCellProperties.defaultProperties' )!\n\t\t);\n\n\t\tenableProperty( editor.model.schema, editor.conversion, {\n\t\t\tmodelAttribute: 'tableCellWidth',\n\t\t\tstyleName: 'width',\n\t\t\tdefaultValue: defaultTableCellProperties.width\n\t\t} );\n\n\t\teditor.commands.add( 'tableCellWidth', new TableCellWidthCommand( editor, defaultTableCellProperties.width ) );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecellproperties/commands/tablecellpaddingcommand\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\nimport type { Element } from 'ckeditor5/src/engine';\n\nimport TableCellPropertyCommand from './tablecellpropertycommand';\nimport { addDefaultUnitToNumericValue, getSingleValue } from '../../utils/table-properties';\n\n/**\n * The table cell padding command.\n *\n * The command is registered by the {@link module:table/tablecellproperties/tablecellpropertiesediting~TableCellPropertiesEditing} as\n * the `'tableCellPadding'` editor command.\n *\n * To change the padding of selected cells, execute the command:\n *\n * ```ts\n * editor.execute( 'tableCellPadding', {\n * value: '5px'\n * } );\n * ```\n *\n * **Note**: This command adds the default `'px'` unit to numeric values. Executing:\n *\n * ```ts\n * editor.execute( 'tableCellPadding', {\n * value: '5'\n * } );\n * ```\n *\n * will set the `padding` attribute to `'5px'` in the model.\n */\nexport default class TableCellPaddingCommand extends TableCellPropertyCommand {\n\t/**\n\t * Creates a new `TableCellPaddingCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param defaultValue The default value of the attribute.\n\t */\n\tconstructor( editor: Editor, defaultValue: string ) {\n\t\tsuper( editor, 'tableCellPadding', defaultValue );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tprotected override _getAttribute( tableCell: Element ): unknown {\n\t\tif ( !tableCell ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = getSingleValue( tableCell.getAttribute( this.attributeName ) as string );\n\n\t\tif ( value === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tprotected override _getValueToSet( value: string | number | undefined ): unknown {\n\t\tconst newValue = addDefaultUnitToNumericValue( value, 'px' );\n\n\t\tif ( newValue === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn newValue;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecellproperties/commands/tablecellheightcommand\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\n\nimport TableCellPropertyCommand from './tablecellpropertycommand';\nimport { addDefaultUnitToNumericValue } from '../../utils/table-properties';\n\n/**\n * The table cell height command.\n *\n * The command is registered by the {@link module:table/tablecellproperties/tablecellpropertiesediting~TableCellPropertiesEditing} as\n * the `'tableCellHeight'` editor command.\n *\n * To change the height of selected cells, execute the command:\n *\n * ```ts\n * editor.execute( 'tableCellHeight', {\n * value: '50px'\n * } );\n * ```\n *\n * **Note**: This command adds the default `'px'` unit to numeric values. Executing:\n *\n * ```ts\n * editor.execute( 'tableCellHeight', {\n * value: '50'\n * } );\n * ```\n *\n * will set the `height` attribute to `'50px'` in the model.\n */\nexport default class TableCellHeightCommand extends TableCellPropertyCommand {\n\t/**\n\t * Creates a new `TableCellHeightCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param defaultValue The default value of the attribute.\n\t */\n\tconstructor( editor: Editor, defaultValue: string ) {\n\t\tsuper( editor, 'tableCellHeight', defaultValue );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tprotected override _getValueToSet( value: string | number | undefined ): unknown {\n\t\tconst newValue = addDefaultUnitToNumericValue( value, 'px' );\n\n\t\tif ( newValue === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn newValue;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecellproperties/commands/tablecellbackgroundcolorcommand\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\n\nimport TableCellPropertyCommand from './tablecellpropertycommand';\n\n/**\n * The table cell background color command.\n *\n * The command is registered by the {@link module:table/tablecellproperties/tablecellpropertiesediting~TableCellPropertiesEditing} as\n * the `'tableCellBackgroundColor'` editor command.\n *\n * To change the background color of selected cells, execute the command:\n *\n * ```ts\n * editor.execute( 'tableCellBackgroundColor', {\n * value: '#f00'\n * } );\n * ```\n */\nexport default class TableCellBackgroundColorCommand extends TableCellPropertyCommand {\n\t/**\n\t * Creates a new `TableCellBackgroundColorCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param defaultValue The default value of the attribute.\n\t */\n\tconstructor( editor: Editor, defaultValue: string ) {\n\t\tsuper( editor, 'tableCellBackgroundColor', defaultValue );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecellproperties/commands/tablecellverticalalignmentcommand\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\n\nimport TableCellPropertyCommand from './tablecellpropertycommand';\n\n/**\n * The table cell vertical alignment command.\n *\n * The command is registered by the {@link module:table/tablecellproperties/tablecellpropertiesediting~TableCellPropertiesEditing} as\n * the `'tableCellVerticalAlignment'` editor command.\n *\n * To change the vertical text alignment of selected cells, execute the command:\n *\n * ```ts\n * editor.execute( 'tableCellVerticalAlignment', {\n * value: 'top'\n * } );\n * ```\n *\n * The following values, corresponding to the\n * [`vertical-align` CSS attribute](https://developer.mozilla.org/en-US/docs/Web/CSS/vertical-align), are allowed:\n *\n * * `'top'`\n * * `'bottom'`\n *\n * The `'middle'` value is the default one so there is no need to set it.\n */\nexport default class TableCellVerticalAlignmentCommand extends TableCellPropertyCommand {\n\t/**\n\t * Creates a new `TableCellVerticalAlignmentCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param defaultValue The default value for the \"alignment\" attribute.\n\t */\n\tconstructor( editor: Editor, defaultValue: string ) {\n\t\tsuper( editor, 'tableCellVerticalAlignment', defaultValue );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecellproperties/commands/tablecellhorizontalalignmentcommand\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\n\nimport TableCellPropertyCommand from './tablecellpropertycommand';\n\n/**\n * The table cell horizontal alignment command.\n *\n * The command is registered by the {@link module:table/tablecellproperties/tablecellpropertiesediting~TableCellPropertiesEditing} as\n * the `'tableCellHorizontalAlignment'` editor command.\n *\n * To change the horizontal text alignment of selected cells, execute the command:\n *\n * ```ts\n * editor.execute( 'tableCellHorizontalAlignment', {\n * value: 'right'\n * } );\n * ```\n */\nexport default class TableCellHorizontalAlignmentCommand extends TableCellPropertyCommand {\n\t/**\n\t * Creates a new `TableCellHorizontalAlignmentCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param defaultValue The default value for the \"alignment\" attribute.\n\t */\n\tconstructor( editor: Editor, defaultValue: string ) {\n\t\tsuper( editor, 'tableCellHorizontalAlignment', defaultValue );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecellproperties/commands/tablecellborderstylecommand\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\nimport type { Element } from 'ckeditor5/src/engine';\n\nimport TableCellPropertyCommand from './tablecellpropertycommand';\nimport { getSingleValue } from '../../utils/table-properties';\n\n/**\n * The table cell border style command.\n *\n * The command is registered by the {@link module:table/tablecellproperties/tablecellpropertiesediting~TableCellPropertiesEditing} as\n * the `'tableCellBorderStyle'` editor command.\n *\n * To change the border style of selected cells, execute the command:\n *\n * ```ts\n * editor.execute( 'tableCellBorderStyle', {\n * value: 'dashed'\n * } );\n * ```\n */\nexport default class TableCellBorderStyleCommand extends TableCellPropertyCommand {\n\t/**\n\t * Creates a new `TableCellBorderStyleCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param defaultValue The default value of the attribute.\n\t */\n\tconstructor( editor: Editor, defaultValue: string ) {\n\t\tsuper( editor, 'tableCellBorderStyle', defaultValue );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tprotected override _getAttribute( tableCell: Element ): unknown {\n\t\tif ( !tableCell ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = getSingleValue( tableCell.getAttribute( this.attributeName ) as string | undefined );\n\n\t\tif ( value === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn value;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecellproperties/commands/tablecellbordercolorcommand\n */\n\nimport type { Element } from 'ckeditor5/src/engine';\nimport type { Editor } from 'ckeditor5/src/core';\n\nimport TableCellPropertyCommand from './tablecellpropertycommand';\nimport { getSingleValue } from '../../utils/table-properties';\n\n/**\n * The table cell border color command.\n *\n * The command is registered by the {@link module:table/tablecellproperties/tablecellpropertiesediting~TableCellPropertiesEditing} as\n * the `'tableCellBorderColor'` editor command.\n *\n * To change the border color of selected cells, execute the command:\n *\n * ```ts\n * editor.execute( 'tableCellBorderColor', {\n * value: '#f00'\n * } );\n * ```\n */\nexport default class TableCellBorderColorCommand extends TableCellPropertyCommand {\n\t/**\n\t * Creates a new `TableCellBorderColorCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param defaultValue The default value of the attribute.\n\t */\n\tconstructor( editor: Editor, defaultValue: string ) {\n\t\tsuper( editor, 'tableCellBorderColor', defaultValue );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tprotected override _getAttribute( tableCell: Element ): unknown {\n\t\tif ( !tableCell ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = getSingleValue( tableCell.getAttribute( this.attributeName ) as string | undefined );\n\n\t\tif ( value === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn value;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecellproperties/commands/tablecellborderwidthcommand\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\nimport type { Element } from 'ckeditor5/src/engine';\n\nimport TableCellPropertyCommand from './tablecellpropertycommand';\nimport { addDefaultUnitToNumericValue, getSingleValue } from '../../utils/table-properties';\n\n/**\n * The table cell border width command.\n *\n * The command is registered by the {@link module:table/tablecellproperties/tablecellpropertiesediting~TableCellPropertiesEditing} as\n * the `'tableCellBorderWidth'` editor command.\n *\n * To change the border width of selected cells, execute the command:\n *\n * ```ts\n * editor.execute( 'tableCellBorderWidth', {\n * value: '5px'\n * } );\n * ```\n *\n * **Note**: This command adds the default `'px'` unit to numeric values. Executing:\n *\n * ```ts\n * editor.execute( 'tableCellBorderWidth', {\n * value: '5'\n * } );\n * ```\n *\n * will set the `borderWidth` attribute to `'5px'` in the model.\n */\nexport default class TableCellBorderWidthCommand extends TableCellPropertyCommand {\n\t/**\n\t * Creates a new `TableCellBorderWidthCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param defaultValue The default value of the attribute.\n\t */\n\tconstructor( editor: Editor, defaultValue: string ) {\n\t\tsuper( editor, 'tableCellBorderWidth', defaultValue );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tprotected override _getAttribute( tableCell: Element ): unknown {\n\t\tif ( !tableCell ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = getSingleValue( tableCell.getAttribute( this.attributeName ) as string );\n\n\t\tif ( value === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tprotected override _getValueToSet( value: string | number | undefined ): unknown {\n\t\tconst newValue = addDefaultUnitToNumericValue( value, 'px' );\n\n\t\tif ( newValue === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn newValue;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecellproperties/tablecellpropertiesediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { addBorderRules, addPaddingRules, addBackgroundRules, type Schema, type Conversion, type ViewElement } from 'ckeditor5/src/engine';\n\nimport { downcastAttributeToStyle, upcastBorderStyles } from './../converters/tableproperties';\nimport TableEditing from './../tableediting';\nimport TableCellWidthEditing from '../tablecellwidth/tablecellwidthediting';\nimport TableCellPaddingCommand from './commands/tablecellpaddingcommand';\nimport TableCellHeightCommand from './commands/tablecellheightcommand';\nimport TableCellBackgroundColorCommand from './commands/tablecellbackgroundcolorcommand';\nimport TableCellVerticalAlignmentCommand from './commands/tablecellverticalalignmentcommand';\nimport TableCellHorizontalAlignmentCommand from './commands/tablecellhorizontalalignmentcommand';\nimport TableCellBorderStyleCommand from './commands/tablecellborderstylecommand';\nimport TableCellBorderColorCommand from './commands/tablecellbordercolorcommand';\nimport TableCellBorderWidthCommand from './commands/tablecellborderwidthcommand';\nimport { getNormalizedDefaultProperties } from '../utils/table-properties';\nimport { enableProperty } from '../utils/common';\n\nconst VALIGN_VALUES_REG_EXP = /^(top|middle|bottom)$/;\nconst ALIGN_VALUES_REG_EXP = /^(left|center|right|justify)$/;\n\n/**\n * The table cell properties editing feature.\n *\n * Introduces table cell model attributes and their conversion:\n *\n * - border: `tableCellBorderStyle`, `tableCellBorderColor` and `tableCellBorderWidth`\n * - background color: `tableCellBackgroundColor`\n * - cell padding: `tableCellPadding`\n * - horizontal and vertical alignment: `tableCellHorizontalAlignment`, `tableCellVerticalAlignment`\n * - cell width and height: `tableCellWidth`, `tableCellHeight`\n *\n * It also registers commands used to manipulate the above attributes:\n *\n * - border: the `'tableCellBorderStyle'`, `'tableCellBorderColor'` and `'tableCellBorderWidth'` commands\n * - background color: the `'tableCellBackgroundColor'` command\n * - cell padding: the `'tableCellPadding'` command\n * - horizontal and vertical alignment: the `'tableCellHorizontalAlignment'` and `'tableCellVerticalAlignment'` commands\n * - width and height: the `'tableCellWidth'` and `'tableCellHeight'` commands\n */\nexport default class TableCellPropertiesEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableCellPropertiesEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ TableEditing, TableCellWidthEditing ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst conversion = editor.conversion;\n\n\t\teditor.config.define( 'table.tableCellProperties.defaultProperties', {} );\n\n\t\tconst defaultTableCellProperties = getNormalizedDefaultProperties(\n\t\t\teditor.config.get( 'table.tableCellProperties.defaultProperties' )!,\n\t\t\t{\n\t\t\t\tincludeVerticalAlignmentProperty: true,\n\t\t\t\tincludeHorizontalAlignmentProperty: true,\n\t\t\t\tincludePaddingProperty: true,\n\t\t\t\tisRightToLeftContent: editor.locale.contentLanguageDirection === 'rtl'\n\t\t\t}\n\t\t);\n\n\t\teditor.data.addStyleProcessorRules( addBorderRules );\n\t\tenableBorderProperties( schema, conversion, {\n\t\t\tcolor: defaultTableCellProperties.borderColor,\n\t\t\tstyle: defaultTableCellProperties.borderStyle,\n\t\t\twidth: defaultTableCellProperties.borderWidth\n\t\t} );\n\t\teditor.commands.add( 'tableCellBorderStyle', new TableCellBorderStyleCommand( editor, defaultTableCellProperties.borderStyle ) );\n\t\teditor.commands.add( 'tableCellBorderColor', new TableCellBorderColorCommand( editor, defaultTableCellProperties.borderColor ) );\n\t\teditor.commands.add( 'tableCellBorderWidth', new TableCellBorderWidthCommand( editor, defaultTableCellProperties.borderWidth ) );\n\n\t\tenableProperty( schema, conversion, {\n\t\t\tmodelAttribute: 'tableCellHeight',\n\t\t\tstyleName: 'height',\n\t\t\tdefaultValue: defaultTableCellProperties.height\n\t\t} );\n\t\teditor.commands.add( 'tableCellHeight', new TableCellHeightCommand( editor, defaultTableCellProperties.height ) );\n\n\t\teditor.data.addStyleProcessorRules( addPaddingRules );\n\t\tenableProperty( schema, conversion, {\n\t\t\tmodelAttribute: 'tableCellPadding',\n\t\t\tstyleName: 'padding',\n\t\t\treduceBoxSides: true,\n\t\t\tdefaultValue: defaultTableCellProperties.padding!\n\t\t} );\n\t\teditor.commands.add( 'tableCellPadding', new TableCellPaddingCommand( editor, defaultTableCellProperties.padding! ) );\n\n\t\teditor.data.addStyleProcessorRules( addBackgroundRules );\n\t\tenableProperty( schema, conversion, {\n\t\t\tmodelAttribute: 'tableCellBackgroundColor',\n\t\t\tstyleName: 'background-color',\n\t\t\tdefaultValue: defaultTableCellProperties.backgroundColor\n\t\t} );\n\t\teditor.commands.add(\n\t\t\t'tableCellBackgroundColor',\n\t\t\tnew TableCellBackgroundColorCommand( editor, defaultTableCellProperties.backgroundColor )\n\t\t);\n\n\t\tenableHorizontalAlignmentProperty( schema, conversion, defaultTableCellProperties.horizontalAlignment! );\n\t\teditor.commands.add(\n\t\t\t'tableCellHorizontalAlignment',\n\t\t\tnew TableCellHorizontalAlignmentCommand( editor, defaultTableCellProperties.horizontalAlignment! )\n\t\t);\n\n\t\tenableVerticalAlignmentProperty( schema, conversion, defaultTableCellProperties.verticalAlignment! );\n\t\teditor.commands.add(\n\t\t\t'tableCellVerticalAlignment',\n\t\t\tnew TableCellVerticalAlignmentCommand( editor, defaultTableCellProperties.verticalAlignment! )\n\t\t);\n\t}\n}\n\n/**\n * Enables the `'tableCellBorderStyle'`, `'tableCellBorderColor'` and `'tableCellBorderWidth'` attributes for table cells.\n *\n * @param defaultBorder The default border values.\n * @param defaultBorder.color The default `tableCellBorderColor` value.\n * @param defaultBorder.style The default `tableCellBorderStyle` value.\n * @param defaultBorder.width The default `tableCellBorderWidth` value.\n */\nfunction enableBorderProperties( schema: Schema, conversion: Conversion, defaultBorder: { color: string; style: string; width: string } ) {\n\tconst modelAttributes = {\n\t\twidth: 'tableCellBorderWidth',\n\t\tcolor: 'tableCellBorderColor',\n\t\tstyle: 'tableCellBorderStyle'\n\t};\n\n\tschema.extend( 'tableCell', {\n\t\tallowAttributes: Object.values( modelAttributes )\n\t} );\n\n\tupcastBorderStyles( conversion, 'td', modelAttributes, defaultBorder );\n\tupcastBorderStyles( conversion, 'th', modelAttributes, defaultBorder );\n\tdowncastAttributeToStyle( conversion, { modelElement: 'tableCell', modelAttribute: modelAttributes.style, styleName: 'border-style' } );\n\tdowncastAttributeToStyle( conversion, { modelElement: 'tableCell', modelAttribute: modelAttributes.color, styleName: 'border-color' } );\n\tdowncastAttributeToStyle( conversion, { modelElement: 'tableCell', modelAttribute: modelAttributes.width, styleName: 'border-width' } );\n}\n\n/**\n * Enables the `'tableCellHorizontalAlignment'` attribute for table cells.\n *\n * @param defaultValue The default horizontal alignment value.\n */\nfunction enableHorizontalAlignmentProperty( schema: Schema, conversion: Conversion, defaultValue: string ) {\n\tschema.extend( 'tableCell', {\n\t\tallowAttributes: [ 'tableCellHorizontalAlignment' ]\n\t} );\n\n\tconversion.for( 'downcast' )\n\t\t.attributeToAttribute( {\n\t\t\tmodel: {\n\t\t\t\tname: 'tableCell',\n\t\t\t\tkey: 'tableCellHorizontalAlignment'\n\t\t\t},\n\t\t\tview: alignment => ( {\n\t\t\t\tkey: 'style',\n\t\t\t\tvalue: {\n\t\t\t\t\t'text-align': alignment\n\t\t\t\t}\n\t\t\t} )\n\t\t} );\n\n\tconversion.for( 'upcast' )\n\t\t// Support for the `text-align:*;` CSS definition for the table cell alignment.\n\t\t.attributeToAttribute( {\n\t\t\tview: {\n\t\t\t\tname: /^(td|th)$/,\n\t\t\t\tstyles: {\n\t\t\t\t\t'text-align': ALIGN_VALUES_REG_EXP\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: 'tableCellHorizontalAlignment',\n\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\tconst align = viewElement.getStyle( 'text-align' );\n\n\t\t\t\t\treturn align === defaultValue ? null : align;\n\t\t\t\t}\n\t\t\t}\n\t\t} )\n\t\t// Support for the `align` attribute as the backward compatibility while pasting from other sources.\n\t\t.attributeToAttribute( {\n\t\t\tview: {\n\t\t\t\tname: /^(td|th)$/,\n\t\t\t\tattributes: {\n\t\t\t\t\talign: ALIGN_VALUES_REG_EXP\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: 'tableCellHorizontalAlignment',\n\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\tconst align = viewElement.getAttribute( 'align' );\n\n\t\t\t\t\treturn align === defaultValue ? null : align;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n}\n\n/**\n * Enables the `'verticalAlignment'` attribute for table cells.\n *\n * @param defaultValue The default vertical alignment value.\n */\nfunction enableVerticalAlignmentProperty( schema: Schema, conversion: Conversion, defaultValue: string ) {\n\tschema.extend( 'tableCell', {\n\t\tallowAttributes: [ 'tableCellVerticalAlignment' ]\n\t} );\n\n\tconversion.for( 'downcast' )\n\t\t.attributeToAttribute( {\n\t\t\tmodel: {\n\t\t\t\tname: 'tableCell',\n\t\t\t\tkey: 'tableCellVerticalAlignment'\n\t\t\t},\n\t\t\tview: alignment => ( {\n\t\t\t\tkey: 'style',\n\t\t\t\tvalue: {\n\t\t\t\t\t'vertical-align': alignment\n\t\t\t\t}\n\t\t\t} )\n\t\t} );\n\n\tconversion.for( 'upcast' )\n\t\t// Support for the `vertical-align:*;` CSS definition for the table cell alignment.\n\t\t.attributeToAttribute( {\n\t\t\tview: {\n\t\t\t\tname: /^(td|th)$/,\n\t\t\t\tstyles: {\n\t\t\t\t\t'vertical-align': VALIGN_VALUES_REG_EXP\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: 'tableCellVerticalAlignment',\n\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\tconst align = viewElement.getStyle( 'vertical-align' );\n\n\t\t\t\t\treturn align === defaultValue ? null : align;\n\t\t\t\t}\n\t\t\t}\n\t\t} )\n\t\t// Support for the `align` attribute as the backward compatibility while pasting from other sources.\n\t\t.attributeToAttribute( {\n\t\t\tview: {\n\t\t\t\tname: /^(td|th)$/,\n\t\t\t\tattributes: {\n\t\t\t\t\tvalign: VALIGN_VALUES_REG_EXP\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: 'tableCellVerticalAlignment',\n\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\tconst valign = viewElement.getAttribute( 'valign' );\n\n\t\t\t\t\treturn valign === defaultValue ? null : valign;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableproperties/commands/tablepropertycommand\n */\n\nimport type { Batch, Element } from 'ckeditor5/src/engine';\nimport { Command, type Editor } from 'ckeditor5/src/core';\n\nexport interface TablePropertyCommandExecuteOptions {\n\tbatch?: Batch;\n\tcolumnWidths?: string;\n\ttable?: Element;\n\ttableWidth?: string;\n\tvalue?: string;\n}\n\n/**\n * The table cell attribute command.\n *\n * This command is a base command for other table property commands.\n */\nexport default class TablePropertyCommand extends Command {\n\t/**\n\t * The attribute that will be set by the command.\n\t */\n\tpublic readonly attributeName: string;\n\n\t/**\n\t * The default value for the attribute.\n\t */\n\tprotected readonly _defaultValue: string | undefined;\n\n\t/**\n\t * Creates a new `TablePropertyCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param attributeName Table cell attribute name.\n\t * @param defaultValue The default value of the attribute.\n\t */\n\tconstructor( editor: Editor, attributeName: string, defaultValue?: string ) {\n\t\tsuper( editor );\n\n\t\tthis.attributeName = attributeName;\n\t\tthis._defaultValue = defaultValue;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst selection = editor.model.document.selection;\n\n\t\tconst table = selection.getFirstPosition()!.findAncestor( 'table' )!;\n\n\t\tthis.isEnabled = !!table;\n\t\tthis.value = this._getValue( table );\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @fires execute\n\t * @param options.value If set, the command will set the attribute on the selected table.\n\t * If not set, the command will remove the attribute from the selected table.\n\t * @param options.batch Pass the model batch instance to the command to aggregate changes,\n\t * for example, to allow a single undo step for multiple executions.\n\t */\n\tpublic override execute( options: TablePropertyCommandExecuteOptions = {} ): void {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\n\t\tconst { value, batch } = options;\n\n\t\tconst table = selection.getFirstPosition()!.findAncestor( 'table' )!;\n\t\tconst valueToSet = this._getValueToSet( value );\n\n\t\tmodel.enqueueChange( batch, writer => {\n\t\t\tif ( valueToSet ) {\n\t\t\t\twriter.setAttribute( this.attributeName, valueToSet, table );\n\t\t\t} else {\n\t\t\t\twriter.removeAttribute( this.attributeName, table );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Returns the attribute value for a table.\n\t */\n\tprotected _getValue( table: Element ): unknown {\n\t\tif ( !table ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = table.getAttribute( this.attributeName );\n\n\t\tif ( value === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t/**\n\t * Returns the proper model value. It can be used to add a default unit to numeric values.\n\t */\n\tprotected _getValueToSet( value: string | number | undefined ): unknown {\n\t\tif ( value === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn value;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableproperties/commands/tablebackgroundcolorcommand\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\nimport TablePropertyCommand from './tablepropertycommand';\n\n/**\n * The table background color command.\n *\n * The command is registered by the {@link module:table/tableproperties/tablepropertiesediting~TablePropertiesEditing} as\n * the `'tableBackgroundColor'` editor command.\n *\n * To change the background color of the selected table, execute the command:\n *\n * ```ts\n * editor.execute( 'tableBackgroundColor', {\n * value: '#f00'\n * } );\n * ```\n */\nexport default class TableBackgroundColorCommand extends TablePropertyCommand {\n\t/**\n\t * Creates a new `TableBackgroundColorCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param defaultValue The default value of the attribute.\n\t */\n\tconstructor( editor: Editor, defaultValue: string ) {\n\t\tsuper( editor, 'tableBackgroundColor', defaultValue );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableproperties/commands/tablebordercolorcommand\n */\n\nimport type { Element } from 'ckeditor5/src/engine';\nimport type { Editor } from 'ckeditor5/src/core';\n\nimport TablePropertyCommand from './tablepropertycommand';\nimport { getSingleValue } from '../../utils/table-properties';\n\n/**\n * The table border color command.\n *\n * The command is registered by the {@link module:table/tableproperties/tablepropertiesediting~TablePropertiesEditing} as\n * the `'tableBorderColor'` editor command.\n *\n * To change the border color of the selected table, execute the command:\n *\n * ```ts\n * editor.execute( 'tableBorderColor', {\n * value: '#f00'\n * } );\n * ```\n */\nexport default class TableBorderColorCommand extends TablePropertyCommand {\n\t/**\n\t * Creates a new `TableBorderColorCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param defaultValue The default value of the attribute.\n\t */\n\tconstructor( editor: Editor, defaultValue: string ) {\n\t\tsuper( editor, 'tableBorderColor', defaultValue );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tprotected override _getValue( table: Element ): unknown {\n\t\tif ( !table ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = getSingleValue( table.getAttribute( this.attributeName ) as string );\n\n\t\tif ( value === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn value;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableproperties/commands/tableborderstylecommand\n */\n\nimport type { Element } from 'ckeditor5/src/engine';\n\nimport TablePropertyCommand from './tablepropertycommand';\nimport { getSingleValue } from '../../utils/table-properties';\nimport type { Editor } from 'ckeditor5/src/core';\n\n/**\n * The table style border command.\n *\n * The command is registered by the {@link module:table/tableproperties/tablepropertiesediting~TablePropertiesEditing} as\n * the `'tableBorderStyle'` editor command.\n *\n * To change the border style of the selected table, execute the command:\n *\n * ```ts\n * editor.execute( 'tableBorderStyle', {\n * value: 'dashed'\n * } );\n * ```\n */\nexport default class TableBorderStyleCommand extends TablePropertyCommand {\n\t/**\n\t * Creates a new `TableBorderStyleCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param defaultValue The default value of the attribute.\n\t */\n\tconstructor( editor: Editor, defaultValue: string ) {\n\t\tsuper( editor, 'tableBorderStyle', defaultValue );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tprotected override _getValue( table: Element ): unknown {\n\t\tif ( !table ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = getSingleValue( table.getAttribute( this.attributeName ) as string );\n\n\t\tif ( value === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn value;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableproperties/commands/tableborderwidthcommand\n */\n\nimport type { Element } from 'ckeditor5/src/engine';\nimport type { Editor } from 'ckeditor5/src/core';\n\nimport TablePropertyCommand from './tablepropertycommand';\nimport { addDefaultUnitToNumericValue, getSingleValue } from '../../utils/table-properties';\n\n/**\n * The table width border command.\n *\n * The command is registered by the {@link module:table/tableproperties/tablepropertiesediting~TablePropertiesEditing} as\n * the `'tableBorderWidth'` editor command.\n *\n * To change the border width of the selected table, execute the command:\n *\n * ```ts\n * editor.execute( 'tableBorderWidth', {\n * value: '5px'\n * } );\n * ```\n *\n * **Note**: This command adds the default `'px'` unit to numeric values. Executing:\n *\n * ```ts\n * editor.execute( 'tableBorderWidth', {\n * value: '5'\n * } );\n * ```\n *\n * will set the `borderWidth` attribute to `'5px'` in the model.\n */\nexport default class TableBorderWidthCommand extends TablePropertyCommand {\n\t/**\n\t * Creates a new `TableBorderWidthCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param defaultValue The default value of the attribute.\n\t */\n\tconstructor( editor: Editor, defaultValue: string ) {\n\t\tsuper( editor, 'tableBorderWidth', defaultValue );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tprotected override _getValue( table: Element ): string | undefined {\n\t\tif ( !table ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = getSingleValue( table.getAttribute( this.attributeName ) as string );\n\n\t\tif ( value === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tprotected override _getValueToSet( value: string | number | undefined ): unknown {\n\t\tconst newValue = addDefaultUnitToNumericValue( value, 'px' );\n\n\t\tif ( newValue === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn newValue;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableproperties/commands/tablewidthcommand\n */\n\nimport TablePropertyCommand from './tablepropertycommand';\nimport { addDefaultUnitToNumericValue } from '../../utils/table-properties';\nimport type { Editor } from 'ckeditor5/src/core';\n\n/**\n * The table width command.\n *\n * The command is registered by the {@link module:table/tableproperties/tablepropertiesediting~TablePropertiesEditing} as\n * the `'tableWidth'` editor command.\n *\n * To change the width of the selected table, execute the command:\n *\n * ```ts\n * editor.execute( 'tableWidth', {\n * value: '400px'\n * } );\n * ```\n *\n * **Note**: This command adds the default `'px'` unit to numeric values. Executing:\n *\n * ```ts\n * editor.execute( 'tableWidth', {\n * value: '50'\n * } );\n * ```\n *\n * will set the `width` attribute to `'50px'` in the model.\n */\nexport default class TableWidthCommand extends TablePropertyCommand {\n\t/**\n\t * Creates a new `TableWidthCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param defaultValue The default value of the attribute.\n\t */\n\tconstructor( editor: Editor, defaultValue: string ) {\n\t\tsuper( editor, 'tableWidth', defaultValue );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override _getValueToSet( value: string | number | undefined ): unknown {\n\t\tvalue = addDefaultUnitToNumericValue( value, 'px' );\n\n\t\tif ( value === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn value;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableproperties/commands/tableheightcommand\n */\n\nimport TablePropertyCommand from './tablepropertycommand';\nimport { addDefaultUnitToNumericValue } from '../../utils/table-properties';\nimport type { Editor } from 'ckeditor5/src/core';\n\n/**\n * The table height command.\n *\n * The command is registered by the {@link module:table/tableproperties/tablepropertiesediting~TablePropertiesEditing} as\n * the `'tableHeight'` editor command.\n *\n * To change the height of the selected table, execute the command:\n *\n * ```ts\n * editor.execute( 'tableHeight', {\n * value: '500px'\n * } );\n * ```\n *\n * **Note**: This command adds the default `'px'` unit to numeric values. Executing:\n *\n * ```ts\n * editor.execute( 'tableHeight', {\n * value: '50'\n * } );\n * ```\n *\n * will set the `height` attribute to `'50px'` in the model.\n */\nexport default class TableHeightCommand extends TablePropertyCommand {\n\t/**\n\t * Creates a new `TableHeightCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param defaultValue The default value of the attribute.\n\t */\n\tconstructor( editor: Editor, defaultValue: string ) {\n\t\tsuper( editor, 'tableHeight', defaultValue );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tprotected override _getValueToSet( value: string | number | undefined ): unknown {\n\t\tvalue = addDefaultUnitToNumericValue( value, 'px' );\n\n\t\tif ( value === this._defaultValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn value;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableproperties/commands/tablealignmentcommand\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\nimport TablePropertyCommand from './tablepropertycommand';\n\n/**\n * The table alignment command.\n *\n * The command is registered by the {@link module:table/tableproperties/tablepropertiesediting~TablePropertiesEditing} as\n * the `'tableAlignment'` editor command.\n *\n * To change the alignment of the selected table, execute the command:\n *\n * ```ts\n * editor.execute( 'tableAlignment', {\n * value: 'right'\n * } );\n * ```\n */\nexport default class TableAlignmentCommand extends TablePropertyCommand {\n\t/**\n\t * Creates a new `TableAlignmentCommand` instance.\n\t *\n\t * @param editor An editor in which this command will be used.\n\t * @param defaultValue The default value for the \"alignment\" attribute.\n\t */\n\tconstructor( editor: Editor, defaultValue: string ) {\n\t\tsuper( editor, 'tableAlignment', defaultValue );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableproperties/tablepropertiesediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { addBackgroundRules, addBorderRules, type ViewElement, type Conversion, type Schema } from 'ckeditor5/src/engine';\n\nimport TableEditing from '../tableediting';\nimport {\n\tdowncastAttributeToStyle,\n\tdowncastTableAttribute,\n\tupcastBorderStyles,\n\tupcastStyleToAttribute\n} from '../converters/tableproperties';\nimport TableBackgroundColorCommand from './commands/tablebackgroundcolorcommand';\nimport TableBorderColorCommand from './commands/tablebordercolorcommand';\nimport TableBorderStyleCommand from './commands/tableborderstylecommand';\nimport TableBorderWidthCommand from './commands/tableborderwidthcommand';\nimport TableWidthCommand from './commands/tablewidthcommand';\nimport TableHeightCommand from './commands/tableheightcommand';\nimport TableAlignmentCommand from './commands/tablealignmentcommand';\nimport { getNormalizedDefaultProperties } from '../utils/table-properties';\n\nconst ALIGN_VALUES_REG_EXP = /^(left|center|right)$/;\nconst FLOAT_VALUES_REG_EXP = /^(left|none|right)$/;\n\n/**\n * The table properties editing feature.\n *\n * Introduces table's model attributes and their conversion:\n *\n * - border: `tableBorderStyle`, `tableBorderColor` and `tableBorderWidth`\n * - background color: `tableBackgroundColor`\n * - horizontal alignment: `tableAlignment`\n * - width & height: `tableWidth` & `tableHeight`\n *\n * It also registers commands used to manipulate the above attributes:\n *\n * - border: `'tableBorderStyle'`, `'tableBorderColor'` and `'tableBorderWidth'` commands\n * - background color: `'tableBackgroundColor'`\n * - horizontal alignment: `'tableAlignment'`\n * - width & height: `'tableWidth'` & `'tableHeight'`\n */\nexport default class TablePropertiesEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TablePropertiesEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ TableEditing ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst conversion = editor.conversion;\n\n\t\teditor.config.define( 'table.tableProperties.defaultProperties', {} );\n\n\t\tconst defaultTableProperties = getNormalizedDefaultProperties( editor.config.get( 'table.tableProperties.defaultProperties' )!, {\n\t\t\tincludeAlignmentProperty: true\n\t\t} );\n\n\t\teditor.data.addStyleProcessorRules( addBorderRules );\n\t\tenableBorderProperties( schema, conversion, {\n\t\t\tcolor: defaultTableProperties.borderColor,\n\t\t\tstyle: defaultTableProperties.borderStyle,\n\t\t\twidth: defaultTableProperties.borderWidth\n\t\t} );\n\n\t\teditor.commands.add( 'tableBorderColor', new TableBorderColorCommand( editor, defaultTableProperties.borderColor ) );\n\t\teditor.commands.add( 'tableBorderStyle', new TableBorderStyleCommand( editor, defaultTableProperties.borderStyle ) );\n\t\teditor.commands.add( 'tableBorderWidth', new TableBorderWidthCommand( editor, defaultTableProperties.borderWidth ) );\n\n\t\tenableAlignmentProperty( schema, conversion, defaultTableProperties.alignment! );\n\t\teditor.commands.add( 'tableAlignment', new TableAlignmentCommand( editor, defaultTableProperties.alignment! ) );\n\n\t\tenableTableToFigureProperty( schema, conversion, {\n\t\t\tmodelAttribute: 'tableWidth',\n\t\t\tstyleName: 'width',\n\t\t\tdefaultValue: defaultTableProperties.width\n\t\t} );\n\t\teditor.commands.add( 'tableWidth', new TableWidthCommand( editor, defaultTableProperties.width ) );\n\n\t\tenableTableToFigureProperty( schema, conversion, {\n\t\t\tmodelAttribute: 'tableHeight',\n\t\t\tstyleName: 'height',\n\t\t\tdefaultValue: defaultTableProperties.height\n\t\t} );\n\t\teditor.commands.add( 'tableHeight', new TableHeightCommand( editor, defaultTableProperties.height ) );\n\n\t\teditor.data.addStyleProcessorRules( addBackgroundRules );\n\t\tenableProperty( schema, conversion, {\n\t\t\tmodelAttribute: 'tableBackgroundColor',\n\t\t\tstyleName: 'background-color',\n\t\t\tdefaultValue: defaultTableProperties.backgroundColor\n\t\t} );\n\t\teditor.commands.add(\n\t\t\t'tableBackgroundColor',\n\t\t\tnew TableBackgroundColorCommand( editor, defaultTableProperties.backgroundColor )\n\t\t);\n\t}\n}\n\n/**\n * Enables `tableBorderStyle'`, `tableBorderColor'` and `tableBorderWidth'` attributes for table.\n *\n * @param defaultBorder The default border values.\n * @param defaultBorder.color The default `tableBorderColor` value.\n * @param defaultBorder.style The default `tableBorderStyle` value.\n * @param defaultBorder.width The default `tableBorderWidth` value.\n */\nfunction enableBorderProperties( schema: Schema, conversion: Conversion, defaultBorder: { color: string; style: string; width: string } ) {\n\tconst modelAttributes = {\n\t\twidth: 'tableBorderWidth',\n\t\tcolor: 'tableBorderColor',\n\t\tstyle: 'tableBorderStyle'\n\t};\n\n\tschema.extend( 'table', {\n\t\tallowAttributes: Object.values( modelAttributes )\n\t} );\n\n\tupcastBorderStyles( conversion, 'table', modelAttributes, defaultBorder );\n\n\tdowncastTableAttribute( conversion, { modelAttribute: modelAttributes.color, styleName: 'border-color' } );\n\tdowncastTableAttribute( conversion, { modelAttribute: modelAttributes.style, styleName: 'border-style' } );\n\tdowncastTableAttribute( conversion, { modelAttribute: modelAttributes.width, styleName: 'border-width' } );\n}\n\n/**\n * Enables the `'alignment'` attribute for table.\n *\n * @param defaultValue The default alignment value.\n */\nfunction enableAlignmentProperty( schema: Schema, conversion: Conversion, defaultValue: string ) {\n\tschema.extend( 'table', {\n\t\tallowAttributes: [ 'tableAlignment' ]\n\t} );\n\n\tconversion.for( 'downcast' )\n\t\t.attributeToAttribute( {\n\t\t\tmodel: {\n\t\t\t\tname: 'table',\n\t\t\t\tkey: 'tableAlignment'\n\t\t\t},\n\t\t\tview: alignment => ( {\n\t\t\t\tkey: 'style',\n\t\t\t\tvalue: {\n\t\t\t\t\t// Model: `alignment:center` => CSS: `float:none`.\n\t\t\t\t\tfloat: alignment === 'center' ? 'none' : alignment\n\t\t\t\t}\n\t\t\t} ),\n\t\t\tconverterPriority: 'high'\n\t\t} );\n\n\tconversion.for( 'upcast' )\n\t\t// Support for the `float:*;` CSS definition for the table alignment.\n\t\t.attributeToAttribute( {\n\t\t\tview: {\n\t\t\t\tname: /^(table|figure)$/,\n\t\t\t\tstyles: {\n\t\t\t\t\tfloat: FLOAT_VALUES_REG_EXP\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: 'tableAlignment',\n\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\tlet align = viewElement.getStyle( 'float' );\n\n\t\t\t\t\t// CSS: `float:none` => Model: `alignment:center`.\n\t\t\t\t\tif ( align === 'none' ) {\n\t\t\t\t\t\talign = 'center';\n\t\t\t\t\t}\n\n\t\t\t\t\treturn align === defaultValue ? null : align;\n\t\t\t\t}\n\t\t\t}\n\t\t} )\n\t\t// Support for the `align` attribute as the backward compatibility while pasting from other sources.\n\t\t.attributeToAttribute( {\n\t\t\tview: {\n\t\t\t\tattributes: {\n\t\t\t\t\talign: ALIGN_VALUES_REG_EXP\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tname: 'table',\n\t\t\t\tkey: 'tableAlignment',\n\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\tconst align = viewElement.getAttribute( 'align' );\n\n\t\t\t\t\treturn align === defaultValue ? null : align;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n}\n\n/**\n * Enables conversion for an attribute for simple view-model mappings.\n *\n * @param options.defaultValue The default value for the specified `modelAttribute`.\n */\nfunction enableProperty(\n\tschema: Schema,\n\tconversion: Conversion,\n\toptions: {\n\t\tmodelAttribute: string;\n\t\tstyleName: string;\n\t\tdefaultValue: string;\n\t}\n) {\n\tconst { modelAttribute } = options;\n\n\tschema.extend( 'table', {\n\t\tallowAttributes: [ modelAttribute ]\n\t} );\n\tupcastStyleToAttribute( conversion, { viewElement: 'table', ...options } );\n\tdowncastTableAttribute( conversion, options );\n}\n\n/**\n * Enables conversion for an attribute for simple view (figure) to model (table) mappings.\n */\nfunction enableTableToFigureProperty(\n\tschema: Schema,\n\tconversion: Conversion,\n\toptions: {\n\t\tmodelAttribute: string;\n\t\tstyleName: string;\n\t\tdefaultValue: string;\n\t}\n) {\n\tconst { modelAttribute } = options;\n\n\tschema.extend( 'table', {\n\t\tallowAttributes: [ modelAttribute ]\n\t} );\n\n\tupcastStyleToAttribute( conversion, {\n\t\tviewElement: /^(table|figure)$/,\n\t\tshouldUpcast: ( element: ViewElement ) => !( element.name == 'table' && element.parent!.name == 'figure' ),\n\t\t...options\n\t} );\n\n\tdowncastAttributeToStyle( conversion, { modelElement: 'table', ...options } );\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./tableproperties.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableproperties/ui/tablepropertiesview\n */\n\nimport {\n\taddListToDropdown,\n\tButtonView,\n\tcreateLabeledDropdown,\n\tcreateLabeledInputText,\n\tFocusCycler,\n\tFormHeaderView,\n\tLabeledFieldView,\n\tLabelView,\n\tsubmitHandler,\n\tToolbarView,\n\tView,\n\tViewCollection,\n\ttype DropdownView,\n\ttype InputTextView,\n\ttype NormalizedColorOption,\n\ttype ColorPickerConfig\n} from 'ckeditor5/src/ui';\nimport { FocusTracker, KeystrokeHandler, type ObservableChangeEvent, type Locale } from 'ckeditor5/src/utils';\nimport { icons } from 'ckeditor5/src/core';\n\nimport {\n\tfillToolbar,\n\tgetBorderStyleDefinitions,\n\tgetBorderStyleLabels,\n\tgetLabeledColorInputCreator\n} from '../../utils/ui/table-properties';\nimport FormRowView from '../../ui/formrowview';\n\nimport '../../../theme/form.css';\nimport '../../../theme/tableform.css';\nimport '../../../theme/tableproperties.css';\nimport type ColorInputView from '../../ui/colorinputview';\nimport type { TablePropertiesOptions } from '../../tableconfig';\n\nconst ALIGNMENT_ICONS = {\n\tleft: icons.objectLeft,\n\tcenter: icons.objectCenter,\n\tright: icons.objectRight\n};\n\n/**\n * Additional configuration of the view.\n */\nexport interface TablePropertiesViewOptions {\n\n\t/**\n\t * A configuration of the border color palette used by the\n\t * {@link module:table/tableproperties/ui/tablepropertiesview~TablePropertiesView#borderColorInput}.\n\t */\n\tborderColors: Array<NormalizedColorOption>;\n\n\t/**\n\t * A configuration of the background color palette used by the\n\t * {@link module:table/tableproperties/ui/tablepropertiesview~TablePropertiesView#backgroundInput}.\n\t */\n\tbackgroundColors: Array<NormalizedColorOption>;\n\n\t/**\n\t * The default table properties.\n\t */\n\tdefaultTableProperties: TablePropertiesOptions;\n\n\t/**\n\t * The default color picker config.\n\t */\n\tcolorPickerConfig: false | ColorPickerConfig;\n}\n\n/**\n * The class representing a table properties form, allowing users to customize\n * certain style aspects of a table, for instance, border, background color, alignment, etc..\n */\nexport default class TablePropertiesView extends View {\n\t/**\n\t * The value of the border style.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tdeclare public borderStyle: string;\n\n\t/**\n\t * The value of the border width style.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tdeclare public borderWidth: string;\n\n\t/**\n\t * The value of the border color style.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tdeclare public borderColor: string;\n\n\t/**\n\t * The value of the background color style.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tdeclare public backgroundColor: string;\n\n\t/**\n\t * The value of the table width style.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tdeclare public width: string;\n\n\t/**\n\t * The value of the table height style.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tdeclare public height: string;\n\n\t/**\n\t * The value of the table alignment style.\n\t *\n\t * @observable\n\t * @default ''\n\t */\n\tdeclare public alignment: string;\n\n\t/**\n\t * Options passed to the view. See {@link #constructor} to learn more.\n\t */\n\tpublic readonly options: TablePropertiesViewOptions;\n\n\t/**\n\t * Tracks information about the DOM focus in the form.\n\t */\n\tpublic readonly focusTracker: FocusTracker;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tpublic readonly keystrokes: KeystrokeHandler;\n\n\t/**\n\t * A collection of child views in the form.\n\t */\n\tpublic readonly children: ViewCollection;\n\n\t/**\n\t * A dropdown that allows selecting the style of the table border.\n\t */\n\tpublic readonly borderStyleDropdown: LabeledFieldView<DropdownView>;\n\n\t/**\n\t * An input that allows specifying the width of the table border.\n\t */\n\tpublic readonly borderWidthInput: LabeledFieldView<InputTextView>;\n\n\t/**\n\t * An input that allows specifying the color of the table border.\n\t */\n\tpublic readonly borderColorInput: LabeledFieldView<ColorInputView>;\n\n\t/**\n\t * An input that allows specifying the table background color.\n\t */\n\tpublic readonly backgroundInput: LabeledFieldView<ColorInputView>;\n\n\t/**\n\t * An input that allows specifying the table width.\n\t */\n\tpublic readonly widthInput: LabeledFieldView<InputTextView>;\n\n\t/**\n\t * An input that allows specifying the table height.\n\t */\n\tpublic readonly heightInput: LabeledFieldView<InputTextView>;\n\n\t/**\n\t * A toolbar with buttons that allow changing the alignment of an entire table.\n\t */\n\tpublic readonly alignmentToolbar: ToolbarView;\n\n\t/**\n\t * The \"Save\" button view.\n\t */\n\tpublic saveButtonView: ButtonView;\n\n\t/**\n\t * The \"Cancel\" button view.\n\t */\n\tpublic cancelButtonView: ButtonView;\n\n\t/**\n\t * A collection of views that can be focused in the form.\n\t */\n\tprotected readonly _focusables: ViewCollection;\n\n\t/**\n\t * Helps cycling over {@link #_focusables} in the form.\n\t */\n\tprotected readonly _focusCycler: FocusCycler;\n\n\t/**\n\t * @param locale The {@link module:core/editor/editor~Editor#locale} instance.\n\t * @param options Additional configuration of the view.\n\t */\n\tconstructor( locale: Locale, options: TablePropertiesViewOptions ) {\n\t\tsuper( locale );\n\n\t\tthis.set( {\n\t\t\tborderStyle: '',\n\t\t\tborderWidth: '',\n\t\t\tborderColor: '',\n\t\t\tbackgroundColor: '',\n\t\t\twidth: '',\n\t\t\theight: '',\n\t\t\talignment: ''\n\t\t} );\n\n\t\tthis.options = options;\n\n\t\tconst { borderStyleDropdown, borderWidthInput, borderColorInput, borderRowLabel } = this._createBorderFields();\n\t\tconst { backgroundRowLabel, backgroundInput } = this._createBackgroundFields();\n\t\tconst { widthInput, operatorLabel, heightInput, dimensionsLabel } = this._createDimensionFields();\n\t\tconst { alignmentToolbar, alignmentLabel } = this._createAlignmentFields();\n\n\t\tthis.focusTracker = new FocusTracker();\n\t\tthis.keystrokes = new KeystrokeHandler();\n\t\tthis.children = this.createCollection();\n\n\t\tthis.borderStyleDropdown = borderStyleDropdown;\n\t\tthis.borderWidthInput = borderWidthInput;\n\t\tthis.borderColorInput = borderColorInput;\n\t\tthis.backgroundInput = backgroundInput;\n\t\tthis.widthInput = widthInput;\n\t\tthis.heightInput = heightInput;\n\t\tthis.alignmentToolbar = alignmentToolbar;\n\n\t\t// Defer creating to make sure other fields are present and the Save button can\n\t\t// bind its #isEnabled to their error messages so there's no way to save unless all\n\t\t// fields are valid.\n\t\tconst { saveButtonView, cancelButtonView } = this._createActionButtons();\n\n\t\tthis.saveButtonView = saveButtonView;\n\t\tthis.cancelButtonView = cancelButtonView;\n\t\tthis._focusables = new ViewCollection();\n\t\tthis._focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this.focusTracker,\n\t\t\tkeystrokeHandler: this.keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate form fields backwards using the Shift + Tab keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate form fields forwards using the Tab key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\t// Form header.\n\t\tthis.children.add( new FormHeaderView( locale, {\n\t\t\tlabel: this.t!( 'Table properties' )\n\t\t} ) );\n\n\t\t// Border row.\n\t\tthis.children.add( new FormRowView( locale, {\n\t\t\tlabelView: borderRowLabel,\n\t\t\tchildren: [\n\t\t\t\tborderRowLabel,\n\t\t\t\tborderStyleDropdown,\n\t\t\t\tborderColorInput,\n\t\t\t\tborderWidthInput\n\t\t\t],\n\t\t\tclass: 'ck-table-form__border-row'\n\t\t} ) );\n\n\t\t// Background row.\n\t\tthis.children.add( new FormRowView( locale, {\n\t\t\tlabelView: backgroundRowLabel,\n\t\t\tchildren: [\n\t\t\t\tbackgroundRowLabel,\n\t\t\t\tbackgroundInput\n\t\t\t],\n\t\t\tclass: 'ck-table-form__background-row'\n\t\t} ) );\n\n\t\tthis.children.add( new FormRowView( locale, {\n\t\t\tchildren: [\n\t\t\t\t// Dimensions row.\n\t\t\t\tnew FormRowView( locale, {\n\t\t\t\t\tlabelView: dimensionsLabel,\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\tdimensionsLabel,\n\t\t\t\t\t\twidthInput,\n\t\t\t\t\t\toperatorLabel,\n\t\t\t\t\t\theightInput\n\t\t\t\t\t],\n\t\t\t\t\tclass: 'ck-table-form__dimensions-row'\n\t\t\t\t} ),\n\t\t\t\t// Alignment row.\n\t\t\t\tnew FormRowView( locale, {\n\t\t\t\t\tlabelView: alignmentLabel,\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\talignmentLabel,\n\t\t\t\t\t\talignmentToolbar\n\t\t\t\t\t],\n\t\t\t\t\tclass: 'ck-table-properties-form__alignment-row'\n\t\t\t\t} )\n\t\t\t]\n\t\t} ) );\n\n\t\t// Action row.\n\t\tthis.children.add( new FormRowView( locale, {\n\t\t\tchildren: [\n\t\t\t\tthis.saveButtonView,\n\t\t\t\tthis.cancelButtonView\n\t\t\t],\n\t\t\tclass: 'ck-table-form__action-row'\n\t\t} ) );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'form',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-form',\n\t\t\t\t\t'ck-table-form',\n\t\t\t\t\t'ck-table-properties-form'\n\t\t\t\t],\n\t\t\t\t// https://github.com/ckeditor/ckeditor5-link/issues/90\n\t\t\t\ttabindex: '-1'\n\t\t\t},\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\t// Enable the \"submit\" event for this view. It can be triggered by the #saveButtonView\n\t\t// which is of the \"submit\" DOM \"type\".\n\t\tsubmitHandler( {\n\t\t\tview: this\n\t\t} );\n\n\t\t[\n\t\t\tthis.borderStyleDropdown,\n\t\t\tthis.borderColorInput,\n\t\t\tthis.borderColorInput!.fieldView.dropdownView.buttonView,\n\t\t\tthis.borderWidthInput,\n\t\t\tthis.backgroundInput,\n\t\t\tthis.backgroundInput!.fieldView.dropdownView.buttonView,\n\t\t\tthis.widthInput,\n\t\t\tthis.heightInput,\n\t\t\tthis.alignmentToolbar,\n\t\t\tthis.saveButtonView,\n\t\t\tthis.cancelButtonView\n\t\t].forEach( view => {\n\t\t\t// Register the view as focusable.\n\t\t\tthis._focusables.add( view! );\n\n\t\t\t// Register the view in the focus tracker.\n\t\t\tthis.focusTracker.add( view!.element! );\n\t\t} );\n\n\t\t// Mainly for closing using \"Esc\" and navigation using \"Tab\".\n\t\tthis.keystrokes.listenTo( this.element! );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis.focusTracker.destroy();\n\t\tthis.keystrokes.destroy();\n\t}\n\n\t/**\n\t * Focuses the fist focusable field in the form.\n\t */\n\tpublic focus(): void {\n\t\tthis._focusCycler.focusFirst();\n\t}\n\n\t/**\n\t * Creates the following form fields:\n\t *\n\t * * {@link #borderStyleDropdown},\n\t * * {@link #borderWidthInput},\n\t * * {@link #borderColorInput}.\n\t */\n\tprivate _createBorderFields() {\n\t\tconst defaultTableProperties = this.options.defaultTableProperties;\n\t\tconst defaultBorder = {\n\t\t\tstyle: defaultTableProperties.borderStyle,\n\t\t\twidth: defaultTableProperties.borderWidth,\n\t\t\tcolor: defaultTableProperties.borderColor\n\t\t};\n\n\t\tconst colorInputCreator = getLabeledColorInputCreator( {\n\t\t\tcolorConfig: this.options.borderColors,\n\t\t\tcolumns: 5,\n\t\t\tdefaultColorValue: defaultBorder.color,\n\t\t\tcolorPickerConfig: this.options.colorPickerConfig\n\t\t} );\n\t\tconst locale = this.locale;\n\t\tconst t = this.t!;\n\t\tconst accessibleLabel = t( 'Style' );\n\n\t\t// -- Group label ---------------------------------------------\n\n\t\tconst borderRowLabel = new LabelView( locale );\n\t\tborderRowLabel.text = t( 'Border' );\n\n\t\t// -- Style ---------------------------------------------------\n\n\t\tconst styleLabels = getBorderStyleLabels( t );\n\t\tconst borderStyleDropdown = new LabeledFieldView( locale, createLabeledDropdown );\n\t\tborderStyleDropdown.set( {\n\t\t\tlabel: accessibleLabel,\n\t\t\tclass: 'ck-table-form__border-style'\n\t\t} );\n\n\t\tborderStyleDropdown.fieldView.buttonView.set( {\n\t\t\tariaLabel: accessibleLabel,\n\t\t\tariaLabelledBy: undefined,\n\t\t\tisOn: false,\n\t\t\twithText: true,\n\t\t\ttooltip: accessibleLabel\n\t\t} );\n\n\t\tborderStyleDropdown.fieldView.buttonView.bind( 'label' ).to( this, 'borderStyle', value => {\n\t\t\treturn styleLabels[ value ? value : 'none' ];\n\t\t} );\n\n\t\tborderStyleDropdown.fieldView.on( 'execute', evt => {\n\t\t\tthis.borderStyle = ( evt.source as any )._borderStyleValue;\n\t\t} );\n\n\t\tborderStyleDropdown.bind( 'isEmpty' ).to( this, 'borderStyle', value => !value );\n\n\t\taddListToDropdown( borderStyleDropdown.fieldView, getBorderStyleDefinitions( this, defaultBorder.style! ), {\n\t\t\trole: 'menu',\n\t\t\tariaLabel: accessibleLabel\n\t\t} );\n\n\t\t// -- Width ---------------------------------------------------\n\n\t\tconst borderWidthInput = new LabeledFieldView( locale, createLabeledInputText );\n\n\t\tborderWidthInput.set( {\n\t\t\tlabel: t( 'Width' ),\n\t\t\tclass: 'ck-table-form__border-width'\n\t\t} );\n\n\t\tborderWidthInput.fieldView.bind( 'value' ).to( this, 'borderWidth' );\n\t\tborderWidthInput.bind( 'isEnabled' ).to( this, 'borderStyle', isBorderStyleSet );\n\t\tborderWidthInput.fieldView.on( 'input', () => {\n\t\t\tthis.borderWidth = borderWidthInput.fieldView.element!.value;\n\t\t} );\n\n\t\t// -- Color ---------------------------------------------------\n\n\t\tconst borderColorInput = new LabeledFieldView( locale, colorInputCreator );\n\n\t\tborderColorInput.set( {\n\t\t\tlabel: t( 'Color' ),\n\t\t\tclass: 'ck-table-form__border-color'\n\t\t} );\n\n\t\tborderColorInput.fieldView.bind( 'value' ).to( this, 'borderColor' );\n\t\tborderColorInput.bind( 'isEnabled' ).to( this, 'borderStyle', isBorderStyleSet );\n\n\t\tborderColorInput.fieldView.on( 'input', () => {\n\t\t\tthis.borderColor = borderColorInput.fieldView.value;\n\t\t} );\n\n\t\t// Reset the border color and width fields depending on the `border-style` value.\n\t\tthis.on<ObservableChangeEvent<string>>( 'change:borderStyle', ( evt, name, newValue, oldValue ) => {\n\t\t\t// When removing the border (`border-style:none`), clear the remaining `border-*` properties.\n\t\t\t// See: https://github.com/ckeditor/ckeditor5/issues/6227.\n\t\t\tif ( !isBorderStyleSet( newValue ) ) {\n\t\t\t\tthis.borderColor = '';\n\t\t\t\tthis.borderWidth = '';\n\t\t\t}\n\n\t\t\t// When setting the `border-style` from `none`, set the default `border-color` and `border-width` properties.\n\t\t\tif ( !isBorderStyleSet( oldValue ) ) {\n\t\t\t\tthis.borderColor = defaultBorder.color!;\n\t\t\t\tthis.borderWidth = defaultBorder.width!;\n\t\t\t}\n\t\t} );\n\n\t\treturn {\n\t\t\tborderRowLabel,\n\t\t\tborderStyleDropdown,\n\t\t\tborderColorInput,\n\t\t\tborderWidthInput\n\t\t};\n\t}\n\n\t/**\n\t * Creates the following form fields:\n\t *\n\t * * {@link #backgroundInput}.\n\t */\n\tprivate _createBackgroundFields() {\n\t\tconst locale = this.locale;\n\t\tconst t = this.t!;\n\n\t\t// -- Group label ---------------------------------------------\n\n\t\tconst backgroundRowLabel = new LabelView( locale );\n\t\tbackgroundRowLabel.text = t( 'Background' );\n\n\t\t// -- Background color input -----------------------------------\n\n\t\tconst backgroundInputCreator = getLabeledColorInputCreator( {\n\t\t\tcolorConfig: this.options.backgroundColors,\n\t\t\tcolumns: 5,\n\t\t\tdefaultColorValue: this.options.defaultTableProperties.backgroundColor,\n\t\t\tcolorPickerConfig: this.options.colorPickerConfig\n\t\t} );\n\n\t\tconst backgroundInput = new LabeledFieldView( locale, backgroundInputCreator );\n\n\t\tbackgroundInput.set( {\n\t\t\tlabel: t( 'Color' ),\n\t\t\tclass: 'ck-table-properties-form__background'\n\t\t} );\n\n\t\tbackgroundInput.fieldView.bind( 'value' ).to( this, 'backgroundColor' );\n\t\tbackgroundInput.fieldView.on( 'input', () => {\n\t\t\tthis.backgroundColor = backgroundInput.fieldView.value;\n\t\t} );\n\n\t\treturn {\n\t\t\tbackgroundRowLabel,\n\t\t\tbackgroundInput\n\t\t};\n\t}\n\n\t/**\n\t * Creates the following form fields:\n\t *\n\t * * {@link #widthInput},\n\t * * {@link #heightInput}.\n\t */\n\tprivate _createDimensionFields() {\n\t\tconst locale = this.locale;\n\t\tconst t = this.t!;\n\n\t\t// -- Label ---------------------------------------------------\n\n\t\tconst dimensionsLabel = new LabelView( locale );\n\t\tdimensionsLabel.text = t( 'Dimensions' );\n\n\t\t// -- Width ---------------------------------------------------\n\n\t\tconst widthInput = new LabeledFieldView( locale, createLabeledInputText );\n\n\t\twidthInput.set( {\n\t\t\tlabel: t( 'Width' ),\n\t\t\tclass: 'ck-table-form__dimensions-row__width'\n\t\t} );\n\n\t\twidthInput.fieldView.bind( 'value' ).to( this, 'width' );\n\t\twidthInput.fieldView.on( 'input', () => {\n\t\t\tthis.width = widthInput.fieldView.element!.value;\n\t\t} );\n\n\t\t// -- Operator ---------------------------------------------------\n\n\t\tconst operatorLabel = new View( locale );\n\t\toperatorLabel.setTemplate( {\n\t\t\ttag: 'span',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck-table-form__dimension-operator'\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{ text: '×' }\n\t\t\t]\n\t\t} );\n\n\t\t// -- Height ---------------------------------------------------\n\n\t\tconst heightInput = new LabeledFieldView( locale, createLabeledInputText );\n\n\t\theightInput.set( {\n\t\t\tlabel: t( 'Height' ),\n\t\t\tclass: 'ck-table-form__dimensions-row__height'\n\t\t} );\n\n\t\theightInput.fieldView.bind( 'value' ).to( this, 'height' );\n\t\theightInput.fieldView.on( 'input', () => {\n\t\t\tthis.height = heightInput.fieldView.element!.value;\n\t\t} );\n\n\t\treturn {\n\t\t\tdimensionsLabel,\n\t\t\twidthInput,\n\t\t\toperatorLabel,\n\t\t\theightInput\n\t\t};\n\t}\n\n\t/**\n\t * Creates the following form fields:\n\t *\n\t * * {@link #alignmentToolbar}.\n\t */\n\tprivate _createAlignmentFields() {\n\t\tconst locale = this.locale;\n\t\tconst t = this.t!;\n\n\t\t// -- Label ---------------------------------------------------\n\n\t\tconst alignmentLabel = new LabelView( locale );\n\t\talignmentLabel.text = t( 'Alignment' );\n\n\t\t// -- Toolbar ---------------------------------------------------\n\n\t\tconst alignmentToolbar = new ToolbarView( locale! );\n\t\talignmentToolbar.set( {\n\t\t\tisCompact: true,\n\t\t\tariaLabel: t( 'Table alignment toolbar' )\n\t\t} );\n\n\t\tfillToolbar( {\n\t\t\tview: this,\n\t\t\ticons: ALIGNMENT_ICONS,\n\t\t\ttoolbar: alignmentToolbar,\n\t\t\tlabels: this._alignmentLabels,\n\t\t\tpropertyName: 'alignment',\n\t\t\tdefaultValue: this.options.defaultTableProperties.alignment!\n\t\t} );\n\n\t\treturn {\n\t\t\talignmentLabel,\n\t\t\talignmentToolbar\n\t\t};\n\t}\n\n\t/**\n\t * Creates the following form controls:\n\t *\n\t * * {@link #saveButtonView},\n\t * * {@link #cancelButtonView}.\n\t */\n\tprivate _createActionButtons(): {\n\t\tsaveButtonView: ButtonView;\n\t\tcancelButtonView: ButtonView;\n\t\t} {\n\t\tconst locale = this.locale;\n\t\tconst t = this.t!;\n\n\t\tconst saveButtonView = new ButtonView( locale );\n\t\tconst cancelButtonView = new ButtonView( locale );\n\t\tconst fieldsThatShouldValidateToSave = [\n\t\t\tthis.borderWidthInput!,\n\t\t\tthis.borderColorInput!,\n\t\t\tthis.backgroundInput!,\n\t\t\tthis.widthInput!,\n\t\t\tthis.heightInput!\n\t\t];\n\n\t\tsaveButtonView.set( {\n\t\t\tlabel: t( 'Save' ),\n\t\t\ticon: icons.check,\n\t\t\tclass: 'ck-button-save',\n\t\t\ttype: 'submit',\n\t\t\twithText: true\n\t\t} );\n\n\t\tsaveButtonView.bind( 'isEnabled' ).toMany( fieldsThatShouldValidateToSave, 'errorText', ( ...errorTexts ) => {\n\t\t\treturn errorTexts.every( errorText => !errorText );\n\t\t} );\n\n\t\tcancelButtonView.set( {\n\t\t\tlabel: t( 'Cancel' ),\n\t\t\ticon: icons.cancel,\n\t\t\tclass: 'ck-button-cancel',\n\t\t\twithText: true\n\t\t} );\n\n\t\tcancelButtonView.delegate( 'execute' ).to( this, 'cancel' );\n\n\t\treturn {\n\t\t\tsaveButtonView, cancelButtonView\n\t\t};\n\t}\n\n\t/**\n\t * Provides localized labels for {@link #alignmentToolbar} buttons.\n\t */\n\tprivate get _alignmentLabels() {\n\t\tconst locale = this.locale!;\n\t\tconst t = this.t!;\n\n\t\tconst left = t( 'Align table to the left' );\n\t\tconst center = t( 'Center table' );\n\t\tconst right = t( 'Align table to the right' );\n\n\t\t// Returns object with a proper order of labels.\n\t\tif ( locale.uiLanguageDirection === 'rtl' ) {\n\t\t\treturn { right, center, left };\n\t\t} else {\n\t\t\treturn { left, center, right };\n\t\t}\n\t}\n}\n\nfunction isBorderStyleSet( value: string ) {\n\treturn value !== 'none';\n}\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M8 2v5h4V2h1v5h5v1h-5v4h.021l-.172.351-1.916.28-.151.027c-.287.063-.54.182-.755.341L8 13v5H7v-5H2v-1h5V8H2V7h5V2h1zm4 6H8v4h4V8z\\\" opacity=\\\".6\\\"/><path d=\\\"m15.5 11.5 1.323 2.68 2.957.43-2.14 2.085.505 2.946L15.5 18.25l-2.645 1.39.505-2.945-2.14-2.086 2.957-.43L15.5 11.5zM17 1a2 2 0 0 1 2 2v9.475l-.85-.124-.857-1.736a2.048 2.048 0 0 0-.292-.44L17 3H3v14h7.808l.402.392L10.935 19H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h14z\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableproperties/tablepropertiesui\n */\n\nimport { type Editor, Plugin } from 'ckeditor5/src/core';\nimport {\n\tButtonView,\n\tContextualBalloon,\n\tclickOutsideHandler,\n\tgetLocalizedColorOptions,\n\tnormalizeColorOptions,\n\ttype LabeledFieldView\n} from 'ckeditor5/src/ui';\n\nimport { debounce } from 'lodash-es';\n\nimport TablePropertiesView from './ui/tablepropertiesview';\nimport tableProperties from './../../theme/icons/table-properties.svg';\nimport {\n\tcolorFieldValidator,\n\tgetLocalizedColorErrorText,\n\tgetLocalizedLengthErrorText,\n\tlengthFieldValidator,\n\tlineWidthFieldValidator,\n\tdefaultColors\n} from '../utils/ui/table-properties';\nimport { getTableWidgetAncestor } from '../utils/ui/widget';\nimport { getBalloonTablePositionData, repositionContextualBalloon } from '../utils/ui/contextualballoon';\nimport { getNormalizedDefaultProperties, type NormalizedDefaultProperties } from '../utils/table-properties';\nimport type { Batch } from 'ckeditor5/src/engine';\nimport type { EventInfo, ObservableChangeEvent } from 'ckeditor5/src/utils';\n\nimport type TableBorderStyleCommand from './commands/tableborderstylecommand';\n\nconst ERROR_TEXT_TIMEOUT = 500;\n\n// Map of view properties and related commands.\nconst propertyToCommandMap = {\n\tborderStyle: 'tableBorderStyle',\n\tborderColor: 'tableBorderColor',\n\tborderWidth: 'tableBorderWidth',\n\tbackgroundColor: 'tableBackgroundColor',\n\twidth: 'tableWidth',\n\theight: 'tableHeight',\n\talignment: 'tableAlignment'\n};\n\n/**\n * The table properties UI plugin. It introduces the `'tableProperties'` button\n * that opens a form allowing to specify visual styling of an entire table.\n *\n * It uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon contextual balloon plugin}.\n */\nexport default class TablePropertiesUI extends Plugin {\n\t/**\n\t * The default table properties.\n\t */\n\tprivate _defaultTableProperties!: NormalizedDefaultProperties;\n\n\t/**\n\t * The contextual balloon plugin instance.\n\t */\n\tprivate _balloon!: ContextualBalloon;\n\n\t/**\n\t * The properties form view displayed inside the balloon.\n\t */\n\tpublic view: TablePropertiesView | null = null;\n\n\t/**\n\t * The batch used to undo all changes made by the form (which are live, as the user types)\n\t * when \"Cancel\" was pressed. Each time the view is shown, a new batch is created.\n\t */\n\tprivate _undoStepBatch?: Batch;\n\n\t/**\n\t * Flag used to indicate whether view is ready to execute update commands\n\t * (it finished loading initial data).\n\t */\n\tprivate _isReady?: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ContextualBalloon ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TablePropertiesUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'table.tableProperties', {\n\t\t\tborderColors: defaultColors,\n\t\t\tbackgroundColors: defaultColors\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\tthis._defaultTableProperties = getNormalizedDefaultProperties( editor.config.get( 'table.tableProperties.defaultProperties' )!, {\n\t\t\tincludeAlignmentProperty: true\n\t\t} );\n\t\tthis._balloon = editor.plugins.get( ContextualBalloon );\n\n\t\teditor.ui.componentFactory.add( 'tableProperties', locale => {\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\tlabel: t( 'Table properties' ),\n\t\t\t\ticon: tableProperties,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tthis.listenTo( view, 'execute', () => this._showView() );\n\n\t\t\tconst commands = Object.values( propertyToCommandMap )\n\t\t\t\t.map( commandName => editor.commands.get( commandName )! );\n\n\t\t\tview.bind( 'isEnabled' ).toMany( commands, 'isEnabled', ( ...areEnabled ) => (\n\t\t\t\tareEnabled.some( isCommandEnabled => isCommandEnabled )\n\t\t\t) );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\t// Destroy created UI components as they are not automatically destroyed.\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/1341.\n\t\tif ( this.view ) {\n\t\t\tthis.view.destroy();\n\t\t}\n\t}\n\n\t/**\n\t * Creates the {@link module:table/tableproperties/ui/tablepropertiesview~TablePropertiesView} instance.\n\t *\n\t * @returns The table properties form view instance.\n\t */\n\tprivate _createPropertiesView() {\n\t\tconst editor = this.editor;\n\t\tconst config = editor.config.get( 'table.tableProperties' )!;\n\t\tconst borderColorsConfig = normalizeColorOptions( config.borderColors! );\n\t\tconst localizedBorderColors = getLocalizedColorOptions( editor.locale, borderColorsConfig );\n\t\tconst backgroundColorsConfig = normalizeColorOptions( config.backgroundColors! );\n\t\tconst localizedBackgroundColors = getLocalizedColorOptions( editor.locale, backgroundColorsConfig );\n\t\tconst hasColorPicker = config.colorPicker !== false;\n\n\t\tconst view = new TablePropertiesView( editor.locale, {\n\t\t\tborderColors: localizedBorderColors,\n\t\t\tbackgroundColors: localizedBackgroundColors,\n\t\t\tdefaultTableProperties: this._defaultTableProperties,\n\t\t\tcolorPickerConfig: hasColorPicker ? ( config.colorPicker || {} ) : false\n\t\t} );\n\t\tconst t = editor.t;\n\n\t\t// Render the view so its #element is available for the clickOutsideHandler.\n\t\tview.render();\n\n\t\tthis.listenTo( view, 'submit', () => {\n\t\t\tthis._hideView();\n\t\t} );\n\n\t\tthis.listenTo( view, 'cancel', () => {\n\t\t\t// https://github.com/ckeditor/ckeditor5/issues/6180\n\t\t\tif ( this._undoStepBatch!.operations.length ) {\n\t\t\t\teditor.execute( 'undo', this._undoStepBatch );\n\t\t\t}\n\n\t\t\tthis._hideView();\n\t\t} );\n\n\t\t// Close the balloon on Esc key press.\n\t\tview.keystrokes.set( 'Esc', ( data, cancel ) => {\n\t\t\tthis._hideView();\n\t\t\tcancel();\n\t\t} );\n\n\t\t// Close on click outside of balloon panel element.\n\t\tclickOutsideHandler( {\n\t\t\temitter: view,\n\t\t\tactivator: () => this._isViewInBalloon,\n\t\t\tcontextElements: [ this._balloon.view.element! ],\n\t\t\tcallback: () => this._hideView()\n\t\t} );\n\n\t\tconst colorErrorText = getLocalizedColorErrorText( t );\n\t\tconst lengthErrorText = getLocalizedLengthErrorText( t );\n\n\t\t// Create the \"UI -> editor data\" binding.\n\t\t// These listeners update the editor data (via table commands) when any observable\n\t\t// property of the view has changed. They also validate the value and display errors in the UI\n\t\t// when necessary. This makes the view live, which means the changes are\n\t\t// visible in the editing as soon as the user types or changes fields' values.\n\t\tview.on<ObservableChangeEvent<string>>(\n\t\t\t'change:borderStyle',\n\t\t\tthis._getPropertyChangeCallback( 'tableBorderStyle' )\n\t\t);\n\n\t\tview.on<ObservableChangeEvent<string>>( 'change:borderColor', this._getValidatedPropertyChangeCallback( {\n\t\t\tviewField: view.borderColorInput,\n\t\t\tcommandName: 'tableBorderColor',\n\t\t\terrorText: colorErrorText,\n\t\t\tvalidator: colorFieldValidator\n\t\t} ) );\n\n\t\tview.on<ObservableChangeEvent<string>>( 'change:borderWidth', this._getValidatedPropertyChangeCallback( {\n\t\t\tviewField: view.borderWidthInput,\n\t\t\tcommandName: 'tableBorderWidth',\n\t\t\terrorText: lengthErrorText,\n\t\t\tvalidator: lineWidthFieldValidator\n\t\t} ) );\n\n\t\tview.on<ObservableChangeEvent<string>>( 'change:backgroundColor', this._getValidatedPropertyChangeCallback( {\n\t\t\tviewField: view.backgroundInput,\n\t\t\tcommandName: 'tableBackgroundColor',\n\t\t\terrorText: colorErrorText,\n\t\t\tvalidator: colorFieldValidator\n\t\t} ) );\n\n\t\tview.on<ObservableChangeEvent<string>>( 'change:width', this._getValidatedPropertyChangeCallback( {\n\t\t\tviewField: view.widthInput,\n\t\t\tcommandName: 'tableWidth',\n\t\t\terrorText: lengthErrorText,\n\t\t\tvalidator: lengthFieldValidator\n\t\t} ) );\n\n\t\tview.on<ObservableChangeEvent<string>>( 'change:height', this._getValidatedPropertyChangeCallback( {\n\t\t\tviewField: view.heightInput,\n\t\t\tcommandName: 'tableHeight',\n\t\t\terrorText: lengthErrorText,\n\t\t\tvalidator: lengthFieldValidator\n\t\t} ) );\n\n\t\tview.on<ObservableChangeEvent<string>>(\n\t\t\t'change:alignment',\n\t\t\tthis._getPropertyChangeCallback( 'tableAlignment' )\n\t\t);\n\n\t\treturn view;\n\t}\n\n\t/**\n\t * In this method the \"editor data -> UI\" binding is happening.\n\t *\n\t * When executed, this method obtains selected table property values from various table commands\n\t * and passes them to the {@link #view}.\n\t *\n\t * This way, the UI stays up–to–date with the editor data.\n\t */\n\tprivate _fillViewFormFromCommandValues() {\n\t\tconst commands = this.editor.commands;\n\t\tconst borderStyleCommand: TableBorderStyleCommand = commands.get( 'tableBorderStyle' )!;\n\n\t\tObject.entries( propertyToCommandMap )\n\t\t\t.map( ( [ property, commandName ] ) => {\n\t\t\t\tconst propertyKey = property as keyof typeof propertyToCommandMap;\n\t\t\t\tconst defaultValue = this._defaultTableProperties[ propertyKey ] || '';\n\n\t\t\t\treturn [ propertyKey, ( commands.get( commandName )!.value || defaultValue ) as string ] as const;\n\t\t\t} )\n\t\t\t.forEach( ( [ property, value ] ) => {\n\t\t\t\t// Do not set the `border-color` and `border-width` fields if `border-style:none`.\n\t\t\t\tif ( ( property === 'borderColor' || property === 'borderWidth' ) && borderStyleCommand.value === 'none' ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.view!.set( property, value );\n\t\t\t} );\n\n\t\tthis._isReady = true;\n\t}\n\n\t/**\n\t * Shows the {@link #view} in the {@link #_balloon}.\n\t *\n\t * **Note**: Each time a view is shown, the new {@link #_undoStepBatch} is created that contains\n\t * all changes made to the document when the view is visible, allowing a single undo step\n\t * for all of them.\n\t */\n\tprotected _showView(): void {\n\t\tconst editor = this.editor;\n\n\t\tif ( !this.view ) {\n\t\t\tthis.view = this._createPropertiesView();\n\t\t}\n\n\t\tthis.listenTo( editor.ui, 'update', () => {\n\t\t\tthis._updateView();\n\t\t} );\n\n\t\t// Update the view with the model values.\n\t\tthis._fillViewFormFromCommandValues();\n\n\t\tthis._balloon.add( {\n\t\t\tview: this.view,\n\t\t\tposition: getBalloonTablePositionData( editor )\n\t\t} );\n\n\t\t// Create a new batch. Clicking \"Cancel\" will undo this batch.\n\t\tthis._undoStepBatch = editor.model.createBatch();\n\n\t\t// Basic a11y.\n\t\tthis.view.focus();\n\t}\n\n\t/**\n\t * Removes the {@link #view} from the {@link #_balloon}.\n\t */\n\tprotected _hideView(): void {\n\t\tconst editor = this.editor;\n\n\t\tthis.stopListening( editor.ui, 'update' );\n\n\t\tthis._isReady = false;\n\n\t\t// Blur any input element before removing it from DOM to prevent issues in some browsers.\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/1501.\n\t\tthis.view!.saveButtonView.focus();\n\n\t\tthis._balloon.remove( this.view! );\n\n\t\t// Make sure the focus is not lost in the process by putting it directly\n\t\t// into the editing view.\n\t\tthis.editor.editing.view.focus();\n\t}\n\n\t/**\n\t * Repositions the {@link #_balloon} or hides the {@link #view} if a table is no longer selected.\n\t */\n\tprotected _updateView(): void {\n\t\tconst editor = this.editor;\n\t\tconst viewDocument = editor.editing.view.document;\n\n\t\tif ( !getTableWidgetAncestor( viewDocument.selection ) ) {\n\t\t\tthis._hideView();\n\t\t} else if ( this._isViewVisible ) {\n\t\t\trepositionContextualBalloon( editor, 'table' );\n\t\t}\n\t}\n\n\t/**\n\t * Returns `true` when the {@link #view} is the visible in the {@link #_balloon}.\n\t */\n\tprivate get _isViewVisible(): boolean {\n\t\treturn !!this.view && this._balloon.visibleView === this.view;\n\t}\n\n\t/**\n\t * Returns `true` when the {@link #view} is in the {@link #_balloon}.\n\t */\n\tprivate get _isViewInBalloon(): boolean {\n\t\treturn !!this.view && this._balloon.hasView( this.view );\n\t}\n\n\t/**\n\t * Creates a callback that when executed upon {@link #view view's} property change\n\t * executes a related editor command with the new property value.\n\t *\n\t * If new value will be set to the default value, the command will not be executed.\n\t *\n\t * @param commandName The command that will be executed.\n\t */\n\tprivate _getPropertyChangeCallback( commandName: 'tableBorderStyle' | 'tableAlignment' ) {\n\t\treturn ( evt: EventInfo, propertyName: string, newValue: string ) => {\n\t\t\t// Do not execute the command on initial call (opening the table properties view).\n\t\t\tif ( !this._isReady ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.editor.execute( commandName, {\n\t\t\t\tvalue: newValue,\n\t\t\t\tbatch: this._undoStepBatch\n\t\t\t} );\n\t\t};\n\t}\n\n\t/**\n\t * Creates a callback that when executed upon {@link #view view's} property change:\n\t * * executes a related editor command with the new property value if the value is valid,\n\t * * or sets the error text next to the invalid field, if the value did not pass the validation.\n\t */\n\tprivate _getValidatedPropertyChangeCallback(\n\t\toptions: {\n\t\t\tcommandName: 'tableBorderColor' | 'tableBorderWidth' | 'tableBackgroundColor' | 'tableWidth' | 'tableHeight';\n\t\t\tviewField: LabeledFieldView;\n\t\t\tvalidator: ( value: string ) => boolean;\n\t\t\terrorText: string;\n\t\t}\n\t) {\n\t\tconst { commandName, viewField, validator, errorText } = options;\n\t\tconst setErrorTextDebounced = debounce( () => {\n\t\t\tviewField.errorText = errorText;\n\t\t}, ERROR_TEXT_TIMEOUT );\n\n\t\treturn ( evt: EventInfo, propertyName: string, newValue: string ) => {\n\t\t\tsetErrorTextDebounced.cancel();\n\n\t\t\t// Do not execute the command on initial call (opening the table properties view).\n\t\t\tif ( !this._isReady ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( validator( newValue ) ) {\n\t\t\t\tthis.editor.execute( commandName, {\n\t\t\t\t\tvalue: newValue,\n\t\t\t\t\tbatch: this._undoStepBatch\n\t\t\t\t} );\n\n\t\t\t\tviewField.errorText = null;\n\t\t\t} else {\n\t\t\t\tsetErrorTextDebounced();\n\t\t\t}\n\t\t};\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/converters/table-caption-post-fixer\n */\n\nimport type { Model, Writer, Element, Node } from 'ckeditor5/src/engine';\n\n/**\n * Injects a table caption post-fixer into the model.\n *\n * The role of the table caption post-fixer is to ensure that the table with caption have the correct structure\n * after a {@link module:engine/model/model~Model#change `change()`} block was executed.\n *\n * The correct structure means that:\n *\n * * If there are many caption model element, they are merged into one model.\n * * A final, merged caption model is placed at the end of the table.\n */\nexport default function injectTableCaptionPostFixer( model: Model ): void {\n\tmodel.document.registerPostFixer( writer => tableCaptionPostFixer( writer, model ) );\n}\n\n/**\n * The table caption post-fixer.\n */\nfunction tableCaptionPostFixer( writer: Writer, model: Model ) {\n\tconst changes = model.document.differ.getChanges();\n\tlet wasFixed = false;\n\n\tfor ( const entry of changes ) {\n\t\tif ( entry.type != 'insert' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst positionParent = entry.position.parent;\n\n\t\tif ( positionParent.is( 'element', 'table' ) || entry.name == 'table' ) {\n\t\t\tconst table = ( entry.name == 'table' ? entry.position.nodeAfter : positionParent ) as Element;\n\t\t\tconst captionsToMerge = Array.from( table.getChildren() )\n\t\t\t\t.filter( ( child: Node ): child is Element => child.is( 'element', 'caption' ) );\n\t\t\tconst firstCaption = captionsToMerge.shift();\n\n\t\t\tif ( !firstCaption ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Move all the contents of the captions to the first one.\n\t\t\tfor ( const caption of captionsToMerge ) {\n\t\t\t\twriter.move( writer.createRangeIn( caption ), firstCaption, 'end' );\n\t\t\t\twriter.remove( caption );\n\t\t\t}\n\n\t\t\t// Make sure the final caption is at the end of the table.\n\t\t\tif ( firstCaption.nextSibling ) {\n\t\t\t\twriter.move( writer.createRangeOn( firstCaption ), table, 'end' );\n\t\t\t\twasFixed = true;\n\t\t\t}\n\n\t\t\t// Do we merged captions and/or moved the single caption to the end of the table?\n\t\t\twasFixed = !!captionsToMerge.length || wasFixed;\n\t\t}\n\t}\n\n\treturn wasFixed;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecaption/utils\n */\n\nimport type {\n\tDocumentFragment,\n\tDocumentSelection,\n\tElement,\n\tViewElement\n} from 'ckeditor5/src/engine';\n\n/**\n * Checks if the provided model element is a `table`.\n *\n * @param modelElement Element to check if it is a table.\n */\nexport function isTable( modelElement: Element | DocumentFragment | null ): boolean {\n\treturn !!modelElement && modelElement.is( 'element', 'table' );\n}\n\n/**\n * Returns the caption model element from a given table element. Returns `null` if no caption is found.\n *\n * @param tableModelElement Table element in which we will try to find a caption element.\n */\nexport function getCaptionFromTableModelElement( tableModelElement: Element ): Element | null {\n\tfor ( const node of tableModelElement.getChildren() ) {\n\t\tif ( node.is( 'element', 'caption' ) ) {\n\t\t\treturn node;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns the caption model element for a model selection. Returns `null` if the selection has no caption element ancestor.\n *\n * @param selection The selection checked for caption presence.\n */\nexport function getCaptionFromModelSelection( selection: DocumentSelection ): Element | null {\n\tconst tableElement = getSelectionAffectedTable( selection );\n\n\tif ( !tableElement ) {\n\t\treturn null;\n\t}\n\n\treturn getCaptionFromTableModelElement( tableElement );\n}\n\n/**\n * {@link module:engine/view/matcher~Matcher} pattern. Checks if a given element is a caption.\n *\n * There are two possible forms of the valid caption:\n * - A `<figcaption>` element inside a `<figure class=\"table\">` element.\n * - A `<caption>` inside a <table>.\n *\n * @returns Returns the object accepted by {@link module:engine/view/matcher~Matcher} or `null` if the element cannot be matched.\n */\nexport function matchTableCaptionViewElement( element: ViewElement ): { name: true } | null {\n\tconst parent = element.parent;\n\n\tif ( element.name == 'figcaption' && parent && parent.is( 'element', 'figure' ) && parent.hasClass( 'table' ) ) {\n\t\treturn { name: true };\n\t}\n\n\tif ( element.name == 'caption' && parent && parent.is( 'element', 'table' ) ) {\n\t\treturn { name: true };\n\t}\n\n\treturn null;\n}\n\n/**\n * Depending on the position of the selection we either return the table under cursor or look for the table higher in the hierarchy.\n */\nexport function getSelectionAffectedTable( selection: DocumentSelection ): Element {\n\tconst selectedElement = selection.getSelectedElement();\n\n\t// Is the command triggered from the `tableToolbar`?\n\tif ( selectedElement && selectedElement.is( 'element', 'table' ) ) {\n\t\treturn selectedElement;\n\t}\n\n\treturn selection.getFirstPosition()!.findAncestor( 'table' )!;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n* @module table/tablecaption/toggletablecaptioncommand\n*/\n\nimport { Command } from 'ckeditor5/src/core';\nimport type { Writer } from 'ckeditor5/src/engine';\nimport type TableCaptionEditing from './tablecaptionediting';\n\nimport { getCaptionFromTableModelElement, getSelectionAffectedTable } from './utils';\n\n/**\n * The toggle table caption command.\n *\n * This command is registered by {@link module:table/tablecaption/tablecaptionediting~TableCaptionEditing} as the\n * `'toggleTableCaption'` editor command.\n *\n * Executing this command:\n *\n * * either adds or removes the table caption of a selected table (depending on whether the caption is present or not),\n * * removes the table caption if the selection is anchored in one.\n *\n * ```ts\n * // Toggle the presence of the caption.\n * editor.execute( 'toggleTableCaption' );\n * ```\n *\n * **Note**: You can move the selection to the caption right away as it shows up upon executing this command by using\n * the `focusCaptionOnShow` option:\n *\n * ```ts\n * editor.execute( 'toggleTableCaption', { focusCaptionOnShow: true } );\n * ```\n */\nexport default class ToggleTableCaptionCommand extends Command {\n\tdeclare public value: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst tableElement = getSelectionAffectedTable( editor.model.document.selection );\n\n\t\tthis.isEnabled = !!tableElement;\n\n\t\tif ( !this.isEnabled ) {\n\t\t\tthis.value = false;\n\t\t} else {\n\t\t\tthis.value = !!getCaptionFromTableModelElement( tableElement );\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * ```ts\n\t * editor.execute( 'toggleTableCaption' );\n\t * ```\n\t *\n\t * @param options Options for the executed command.\n\t * @param options.focusCaptionOnShow When true and the caption shows up, the selection will be moved into it straight away.\n\t * @fires execute\n\t */\n\tpublic override execute( { focusCaptionOnShow = false }: { focusCaptionOnShow?: boolean } = {} ): void {\n\t\tthis.editor.model.change( writer => {\n\t\t\tif ( this.value ) {\n\t\t\t\tthis._hideTableCaption( writer );\n\t\t\t} else {\n\t\t\t\tthis._showTableCaption( writer, focusCaptionOnShow );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Shows the table caption. Also:\n\t *\n\t * * it attempts to restore the caption content from the `TableCaptionEditing` caption registry,\n\t * * it moves the selection to the caption right away, it the `focusCaptionOnShow` option was set.\n\t *\n\t * @param focusCaptionOnShow Default focus behavior when showing the caption.\n\t */\n\tprivate _showTableCaption( writer: Writer, focusCaptionOnShow: boolean ) {\n\t\tconst model = this.editor.model;\n\t\tconst tableElement = getSelectionAffectedTable( model.document.selection );\n\t\tconst tableCaptionEditing: TableCaptionEditing = this.editor.plugins.get( 'TableCaptionEditing' );\n\t\tconst savedCaptionElement = tableCaptionEditing._getSavedCaption( tableElement );\n\n\t\t// Try restoring the caption from the TableCaptionEditing plugin storage.\n\t\tconst newCaptionElement = savedCaptionElement || writer.createElement( 'caption' );\n\n\t\tmodel.insertContent( newCaptionElement, tableElement, 'end' );\n\n\t\tif ( focusCaptionOnShow ) {\n\t\t\twriter.setSelection( newCaptionElement, 'in' );\n\t\t}\n\t}\n\n\t/**\n\t * Hides the caption of a selected table (or an table caption the selection is anchored to).\n\t *\n\t * The content of the caption is stored in the `TableCaptionEditing` caption registry to make this\n\t * a reversible action.\n\t */\n\tprivate _hideTableCaption( writer: Writer ) {\n\t\tconst model = this.editor.model;\n\t\tconst tableElement = getSelectionAffectedTable( model.document.selection );\n\t\tconst tableCaptionEditing: TableCaptionEditing = this.editor.plugins.get( 'TableCaptionEditing' );\n\t\tconst captionElement = getCaptionFromTableModelElement( tableElement )!;\n\n\t\t// Store the caption content so it can be restored quickly if the user changes their mind.\n\t\ttableCaptionEditing._saveCaption( tableElement, captionElement );\n\n\t\tmodel.deleteContent( writer.createSelection( captionElement, 'on' ) );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecaption/tablecaptionediting\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\nimport { Element, enablePlaceholder } from 'ckeditor5/src/engine';\nimport { toWidgetEditable } from 'ckeditor5/src/widget';\n\nimport injectTableCaptionPostFixer from '../converters/table-caption-post-fixer';\nimport ToggleTableCaptionCommand from './toggletablecaptioncommand';\nimport { isTable, matchTableCaptionViewElement } from './utils';\n\n/**\n * The table caption editing plugin.\n */\nexport default class TableCaptionEditing extends Plugin {\n\t/**\n\t * A map that keeps saved JSONified table captions and table model elements they are\n\t * associated with.\n\t *\n\t * To learn more about this system, see {@link #_saveCaption}.\n\t */\n\tprivate _savedCaptionsMap: WeakMap<Element, unknown>;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableCaptionEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._savedCaptionsMap = new WeakMap();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst view = editor.editing.view;\n\t\tconst t = editor.t;\n\n\t\tif ( !schema.isRegistered( 'caption' ) ) {\n\t\t\tschema.register( 'caption', {\n\t\t\t\tallowIn: 'table',\n\t\t\t\tallowContentOf: '$block',\n\t\t\t\tisLimit: true\n\t\t\t} );\n\t\t} else {\n\t\t\tschema.extend( 'caption', {\n\t\t\t\tallowIn: 'table'\n\t\t\t} );\n\t\t}\n\n\t\teditor.commands.add( 'toggleTableCaption', new ToggleTableCaptionCommand( this.editor ) );\n\n\t\t// View -> model converter for the data pipeline.\n\t\teditor.conversion.for( 'upcast' ).elementToElement( {\n\t\t\tview: matchTableCaptionViewElement,\n\t\t\tmodel: 'caption'\n\t\t} );\n\n\t\t// Model -> view converter for the data pipeline.\n\t\teditor.conversion.for( 'dataDowncast' ).elementToElement( {\n\t\t\tmodel: 'caption',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tif ( !isTable( modelElement.parent ) ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn writer.createContainerElement( 'figcaption' );\n\t\t\t}\n\t\t} );\n\n\t\t// Model -> view converter for the editing pipeline.\n\t\teditor.conversion.for( 'editingDowncast' ).elementToElement( {\n\t\t\tmodel: 'caption',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tif ( !isTable( modelElement.parent ) ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst figcaptionElement = writer.createEditableElement( 'figcaption' );\n\t\t\t\twriter.setCustomProperty( 'tableCaption', true, figcaptionElement );\n\n\t\t\t\tfigcaptionElement.placeholder = t( 'Enter table caption' );\n\n\t\t\t\tenablePlaceholder( {\n\t\t\t\t\tview,\n\t\t\t\t\telement: figcaptionElement,\n\t\t\t\t\tkeepOnFocus: true\n\t\t\t\t} );\n\n\t\t\t\treturn toWidgetEditable( figcaptionElement, writer );\n\t\t\t}\n\t\t} );\n\n\t\tinjectTableCaptionPostFixer( editor.model );\n\t}\n\n\t/**\n\t * Returns the saved {@link module:engine/model/element~Element#toJSON JSONified} caption\n\t * of a table model element.\n\t *\n\t * See {@link #_saveCaption}.\n\t *\n\t * @internal\n\t * @param tableModelElement The model element the caption should be returned for.\n\t * @returns The model caption element or `null` if there is none.\n\t */\n\tpublic _getSavedCaption( tableModelElement: Element ): Element | null {\n\t\tconst jsonObject = this._savedCaptionsMap.get( tableModelElement );\n\n\t\treturn jsonObject ? Element.fromJSON( jsonObject ) : null;\n\t}\n\n\t/**\n\t * Saves a {@link module:engine/model/element~Element#toJSON JSONified} caption for\n\t * a table element to allow restoring it in the future.\n\t *\n\t * A caption is saved every time it gets hidden. The\n\t * user should be able to restore it on demand.\n\t *\n\t * **Note**: The caption cannot be stored in the table model element attribute because,\n\t * for instance, when the model state propagates to collaborators, the attribute would get\n\t * lost (mainly because it does not convert to anything when the caption is hidden) and\n\t * the states of collaborators' models would de-synchronize causing numerous issues.\n\t *\n\t * See {@link #_getSavedCaption}.\n\t *\n\t * @internal\n\t * @param tableModelElement The model element the caption is saved for.\n\t * @param caption The caption model element to be saved.\n\t */\n\tpublic _saveCaption( tableModelElement: Element, caption: Element ): void {\n\t\tthis._savedCaptionsMap.set( tableModelElement, caption.toJSON() );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n* @module table/tablecaption/tablecaptionui\n*/\n\nimport { Plugin, icons } from 'ckeditor5/src/core';\nimport { ButtonView } from 'ckeditor5/src/ui';\nimport type ToggleTableCaptionCommand from './toggletablecaptioncommand';\n\nimport { getCaptionFromModelSelection } from './utils';\n\n/**\n * The table caption UI plugin. It introduces the `'toggleTableCaption'` UI button.\n */\nexport default class TableCaptionUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableCaptionUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\t\tconst t = editor.t;\n\n\t\teditor.ui.componentFactory.add( 'toggleTableCaption', locale => {\n\t\t\tconst command: ToggleTableCaptionCommand = editor.commands.get( 'toggleTableCaption' )!;\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\ticon: icons.caption,\n\t\t\t\ttooltip: true,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\tview.bind( 'isOn', 'isEnabled' ).to( command, 'value', 'isEnabled' );\n\t\t\tview.bind( 'label' ).to( command, 'value', value => value ? t( 'Toggle caption off' ) : t( 'Toggle caption on' ) );\n\n\t\t\tthis.listenTo( view, 'execute', () => {\n\t\t\t\teditor.execute( 'toggleTableCaption', { focusCaptionOnShow: true } );\n\n\t\t\t\t// Scroll to the selection and highlight the caption if the caption showed up.\n\t\t\t\tif ( command.value ) {\n\t\t\t\t\tconst modelCaptionElement = getCaptionFromModelSelection( editor.model.document.selection )!;\n\t\t\t\t\tconst figcaptionElement = editor.editing.mapper.toViewElement( modelCaptionElement );\n\n\t\t\t\t\tif ( !figcaptionElement ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\teditingView.scrollToTheSelection();\n\t\t\t\t\teditingView.change( writer => {\n\t\t\t\t\t\twriter.addClass( 'table__caption_highlighted', figcaptionElement );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./tablecaption.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecolumnresize/constants\n */\n\n/**\n * The minimum column width given as a percentage value. Used in situations when the table is not yet rendered, so it is impossible to\n * calculate how many percentage of the table width would be {@link ~COLUMN_MIN_WIDTH_IN_PIXELS minimum column width in pixels}.\n */\nexport const COLUMN_MIN_WIDTH_AS_PERCENTAGE = 5;\n\n/**\n * The minimum column width in pixels when the maximum table width is known.\n */\nexport const COLUMN_MIN_WIDTH_IN_PIXELS = 40;\n\n/**\n * Determines how many digits after the decimal point are used to store the column width as a percentage value.\n */\nexport const COLUMN_WIDTH_PRECISION = 2;\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecolumnresize/utils\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\nimport type { Element, Model, ViewElement, ViewNode, Writer } from 'ckeditor5/src/engine';\nimport { global } from 'ckeditor5/src/utils';\nimport type TableUtils from '../tableutils';\nimport {\n\tCOLUMN_WIDTH_PRECISION,\n\tCOLUMN_MIN_WIDTH_AS_PERCENTAGE,\n\tCOLUMN_MIN_WIDTH_IN_PIXELS\n} from './constants';\n\n/**\n * Returns all the inserted or changed table model elements in a given change set. Only the tables\n * with 'columnsWidth' attribute are taken into account. The returned set may be empty.\n *\n * Most notably if an entire table is removed it will not be included in returned set.\n *\n * @param model The model to collect the affected elements from.\n * @returns A set of table model elements.\n */\nexport function getChangedResizedTables( model: Model ): Set<Element> {\n\tconst affectedTables: Set<Element> = new Set();\n\n\tfor ( const change of model.document.differ.getChanges() ) {\n\t\tlet referencePosition = null;\n\n\t\t// Checks if the particular change from the differ is:\n\t\t// - an insertion or removal of a table, a row or a cell,\n\t\t// - an attribute change on a table, a row or a cell.\n\t\tswitch ( change.type ) {\n\t\t\tcase 'insert':\n\t\t\t\treferencePosition = [ 'table', 'tableRow', 'tableCell' ].includes( change.name ) ?\n\t\t\t\t\tchange.position :\n\t\t\t\t\tnull;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'remove':\n\t\t\t\t// If the whole table is removed, there's no need to update its column widths (#12201).\n\t\t\t\treferencePosition = [ 'tableRow', 'tableCell' ].includes( change.name ) ?\n\t\t\t\t\tchange.position :\n\t\t\t\t\tnull;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'attribute':\n\t\t\t\tif ( change.range.start.nodeAfter ) {\n\t\t\t\t\treferencePosition = [ 'table', 'tableRow', 'tableCell' ].includes( ( change.range.start.nodeAfter as Element ).name ) ?\n\t\t\t\t\t\tchange.range.start :\n\t\t\t\t\t\tnull;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( !referencePosition ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst tableNode = ( referencePosition.nodeAfter && referencePosition.nodeAfter.is( 'element', 'table' ) ) ?\n\t\t\treferencePosition.nodeAfter : referencePosition.findAncestor( 'table' )!;\n\n\t\t// We iterate over the whole table looking for the nested tables that are also affected.\n\t\tfor ( const node of model.createRangeOn( tableNode ).getItems() ) {\n\t\t\tif ( !node.is( 'element', 'table' ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( !getColumnGroupElement( node ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\taffectedTables.add( node );\n\t\t}\n\t}\n\n\treturn affectedTables;\n}\n\n/**\n * Calculates the percentage of the minimum column width given in pixels for a given table.\n *\n * @param modelTable A table model element.\n * @param editor The editor instance.\n * @returns The minimal column width in percentage.\n */\nexport function getColumnMinWidthAsPercentage( modelTable: Element, editor: Editor ): number {\n\treturn COLUMN_MIN_WIDTH_IN_PIXELS * 100 / getTableWidthInPixels( modelTable, editor );\n}\n\n/**\n * Calculates the table width in pixels.\n *\n * @param modelTable A table model element.\n * @param editor The editor instance.\n * @returns The width of the table in pixels.\n */\nexport function getTableWidthInPixels( modelTable: Element, editor: Editor ): number {\n\t// It is possible for a table to not have a <tbody> element - see #11878.\n\tconst referenceElement = getChildrenViewElement( modelTable, 'tbody', editor ) || getChildrenViewElement( modelTable, 'thead', editor );\n\tconst domReferenceElement = editor.editing.view.domConverter.mapViewToDom( referenceElement! )!;\n\n\treturn getElementWidthInPixels( domReferenceElement );\n}\n\n/**\n * Returns the a view element with a given name that is nested directly in a `<table>` element\n * related to a given `modelTable`.\n *\n * @param elementName Name of a view to be looked for, e.g. `'colgroup`', `'thead`'.\n * @returns Matched view or `undefined` otherwise.\n */\nfunction getChildrenViewElement( modelTable: Element, elementName: string, editor: Editor ) {\n\tconst viewFigure = editor.editing.mapper.toViewElement( modelTable )!;\n\tconst viewTable = [ ...viewFigure.getChildren() ]\n\t\t.find( ( node: ViewNode ): node is ViewElement & { name: 'table' } => node.is( 'element', 'table' ) )!;\n\n\treturn [ ...viewTable.getChildren() ]\n\t\t.find( ( node: ViewNode ): node is ViewElement => node.is( 'element', elementName ) );\n}\n\n/**\n * Returns the computed width (in pixels) of the DOM element without padding and borders.\n *\n * @param domElement A DOM element.\n * @returns The width of the DOM element in pixels.\n */\nexport function getElementWidthInPixels( domElement: HTMLElement ): number {\n\tconst styles = global.window.getComputedStyle( domElement );\n\n\t// In the 'border-box' box sizing algorithm, the element's width\n\t// already includes the padding and border width (#12335).\n\tif ( styles.boxSizing === 'border-box' ) {\n\t\treturn parseFloat( styles.width ) -\n\t\t\tparseFloat( styles.paddingLeft ) -\n\t\t\tparseFloat( styles.paddingRight ) -\n\t\t\tparseFloat( styles.borderLeftWidth ) -\n\t\t\tparseFloat( styles.borderRightWidth );\n\t} else {\n\t\treturn parseFloat( styles.width );\n\t}\n}\n\n/**\n * Returns the column indexes on the left and right edges of a cell. They differ if the cell spans\n * across multiple columns.\n *\n * @param cell A table cell model element.\n * @param tableUtils The Table Utils plugin instance.\n * @returns An object containing the indexes of the left and right edges of the cell.\n */\nexport function getColumnEdgesIndexes( cell: Element, tableUtils: TableUtils ): { leftEdge: number; rightEdge: number } {\n\tconst cellColumnIndex = tableUtils.getCellLocation( cell ).column;\n\tconst cellWidth = cell.getAttribute( 'colspan' ) as number || 1;\n\n\treturn {\n\t\tleftEdge: cellColumnIndex,\n\t\trightEdge: cellColumnIndex + cellWidth - 1\n\t};\n}\n\n/**\n * Rounds the provided value to a fixed-point number with defined number of digits after the decimal point.\n *\n * @param value A number to be rounded.\n * @returns The rounded number.\n */\nexport function toPrecision( value: number | string ): number {\n\tconst multiplier = Math.pow( 10, COLUMN_WIDTH_PRECISION );\n\tconst number = typeof value === 'number' ? value : parseFloat( value );\n\n\treturn Math.round( number * multiplier ) / multiplier;\n}\n\n/**\n * Clamps the number within the inclusive lower (min) and upper (max) bounds. Returned number is rounded using the\n * {@link ~toPrecision `toPrecision()`} function.\n *\n * @param number A number to be clamped.\n * @param min A lower bound.\n * @param max An upper bound.\n * @returns The clamped number.\n */\nexport function clamp( number: number, min: number, max: number ): number {\n\tif ( number <= min ) {\n\t\treturn toPrecision( min );\n\t}\n\n\tif ( number >= max ) {\n\t\treturn toPrecision( max );\n\t}\n\n\treturn toPrecision( number );\n}\n\n/**\n * Creates an array with defined length and fills all elements with defined value.\n *\n * @param length The length of the array.\n * @param value The value to fill the array with.\n * @returns An array with defined length and filled with defined value.\n */\nexport function createFilledArray<T>( length: number, value: T ): Array<T> {\n\treturn Array( length ).fill( value );\n}\n\n/**\n * Sums all array values that can be parsed to a float.\n *\n * @param array An array of numbers.\n * @returns The sum of all array values.\n */\nexport function sumArray( array: Array<number | string> ): number {\n\treturn array\n\t\t.map( value => typeof value === 'number' ? value : parseFloat( value ) )\n\t\t.filter( value => !Number.isNaN( value ) )\n\t\t.reduce( ( result, item ) => result + item, 0 );\n}\n\n/**\n * Makes sure that the sum of the widths from all columns is 100%. If the sum of all the widths is not equal 100%, all the widths are\n * changed proportionally so that they all sum back to 100%. If there are columns without specified width, the amount remaining\n * after assigning the known widths will be distributed equally between them.\n *\n * Currently, only widths provided as percentage values are supported.\n *\n * @param columnWidths An array of column widths.\n * @returns An array of column widths guaranteed to sum up to 100%.\n */\nexport function normalizeColumnWidths( columnWidths: Array<string> ): Array<string> {\n\tconst widths: Array<number | 'auto'> = columnWidths.map( width => {\n\t\t// Possible values are 'auto' or string ending with '%'\n\t\tif ( width === 'auto' ) {\n\t\t\treturn width;\n\t\t}\n\n\t\treturn parseFloat( width.replace( '%', '' ) );\n\t} );\n\n\tlet normalizedWidths: Array<number> = calculateMissingColumnWidths( widths );\n\tconst totalWidth = sumArray( normalizedWidths );\n\n\tif ( totalWidth !== 100 ) {\n\t\tnormalizedWidths = normalizedWidths\n\t\t\t// Adjust all the columns proportionally.\n\t\t\t.map( width => toPrecision( width * 100 / totalWidth ) )\n\t\t\t// Due to rounding of numbers it may happen that the sum of the widths of all columns will not be exactly 100%.\n\t\t\t// Therefore, the width of the last column is explicitly adjusted (narrowed or expanded), since all the columns\n\t\t\t// have been proportionally changed already.\n\t\t\t.map( ( columnWidth, columnIndex, width ) => {\n\t\t\t\tconst isLastColumn = columnIndex === width.length - 1;\n\n\t\t\t\tif ( !isLastColumn ) {\n\t\t\t\t\treturn columnWidth;\n\t\t\t\t}\n\n\t\t\t\tconst totalWidth = sumArray( width );\n\n\t\t\t\treturn toPrecision( columnWidth + 100 - totalWidth );\n\t\t\t} );\n\t}\n\n\treturn normalizedWidths.map( width => width + '%' );\n}\n\n/**\n * Initializes the column widths by parsing the attribute value and calculating the uninitialized column widths. The special value 'auto'\n * indicates that width for the column must be calculated. The width of such uninitialized column is calculated as follows:\n * - If there is enough free space in the table for all uninitialized columns to have at least the minimum allowed width for all of them,\n * then set this width equally for all uninitialized columns.\n * - Otherwise, just set the minimum allowed width for all uninitialized columns. The sum of all column widths will be greater than 100%,\n * but then it will be adjusted proportionally to 100% in {@link #normalizeColumnWidths `normalizeColumnWidths()`}.\n *\n * @param columnWidths An array of column widths.\n * @returns An array with 'auto' values replaced with calculated widths.\n */\nfunction calculateMissingColumnWidths( columnWidths: Array<number | string> ): Array<number> {\n\tconst numberOfUninitializedColumns = columnWidths.filter( columnWidth => columnWidth === 'auto' ).length;\n\n\tif ( numberOfUninitializedColumns === 0 ) {\n\t\treturn columnWidths.map( columnWidth => toPrecision( columnWidth ) );\n\t}\n\n\tconst totalWidthOfInitializedColumns = sumArray( columnWidths );\n\n\tconst widthForUninitializedColumn = Math.max(\n\t\t( 100 - totalWidthOfInitializedColumns ) / numberOfUninitializedColumns,\n\t\tCOLUMN_MIN_WIDTH_AS_PERCENTAGE\n\t);\n\n\treturn columnWidths\n\t\t.map( columnWidth => columnWidth === 'auto' ? widthForUninitializedColumn : columnWidth )\n\t\t.map( columnWidth => toPrecision( columnWidth ) );\n}\n\n/**\n * Calculates the total horizontal space taken by the cell. That includes:\n * * width,\n * * left and red padding,\n * * border width.\n *\n * @param domCell A DOM cell element.\n * @returns Width in pixels without `px` at the end.\n */\nexport function getDomCellOuterWidth( domCell: HTMLElement ): number {\n\tconst styles = global.window.getComputedStyle( domCell );\n\n\t// In the 'border-box' box sizing algorithm, the element's width\n\t// already includes the padding and border width (#12335).\n\tif ( styles.boxSizing === 'border-box' ) {\n\t\treturn parseInt( styles.width );\n\t} else {\n\t\treturn parseFloat( styles.width ) +\n\t\t\tparseFloat( styles.paddingLeft ) +\n\t\t\tparseFloat( styles.paddingRight ) +\n\t\t\tparseFloat( styles.borderWidth );\n\t}\n}\n\n/**\n * Updates column elements to match columns widths.\n *\n * @param columns\n * @param tableColumnGroup\n * @param normalizedWidths\n * @param writer\n */\nexport function updateColumnElements(\n\tcolumns: Array<Element>,\n\ttableColumnGroup: Element,\n\tnormalizedWidths: Array<string>,\n\twriter: Writer\n): void {\n\tfor ( let i = 0; i < Math.max( normalizedWidths.length, columns.length ); i++ ) {\n\t\tconst column = columns[ i ];\n\t\tconst columnWidth = normalizedWidths[ i ];\n\n\t\tif ( !columnWidth ) {\n\t\t\t// Number of `<tableColumn>` elements exceeds actual number of columns.\n\t\t\twriter.remove( column );\n\t\t} else if ( !column ) {\n\t\t\t// There is fewer `<tableColumn>` elements than actual columns.\n\t\t\twriter.appendElement( 'tableColumn', { columnWidth }, tableColumnGroup );\n\t\t} else {\n\t\t\t// Update column width.\n\t\t\twriter.setAttribute( 'columnWidth', columnWidth, column );\n\t\t}\n\t}\n}\n\n/**\n * Returns a 'tableColumnGroup' element from the 'table'.\n *\n * @internal\n * @param element A 'table' or 'tableColumnGroup' element.\n * @returns A 'tableColumnGroup' element.\n */\nexport function getColumnGroupElement( element: Element ): Element {\n\tif ( element.is( 'element', 'tableColumnGroup' ) ) {\n\t\treturn element;\n\t}\n\n\tconst children = element.getChildren()!;\n\n\treturn Array\n\t\t.from( children )\n\t\t.find( element => element.is( 'element', 'tableColumnGroup' ) )! as Element;\n}\n\n/**\n * Returns an array of 'tableColumn' elements.\n *\n * @internal\n * @param element A 'table' or 'tableColumnGroup' element.\n * @returns An array of 'tableColumn' elements.\n */\nexport function getTableColumnElements( element: Element ): Array<Element> {\n\treturn Array.from( getColumnGroupElement( element ).getChildren() as IterableIterator<Element> );\n}\n\n/**\n * Returns an array of table column widths.\n *\n * @internal\n * @param element A 'table' or 'tableColumnGroup' element.\n * @returns An array of table column widths.\n */\nexport function getTableColumnsWidths( element: Element ): Array<string> {\n\treturn getTableColumnElements( element ).map( column => column.getAttribute( 'columnWidth' ) as string );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecolumnresize/tablewidthscommand\n */\n\nimport type { Element } from 'ckeditor5/src/engine';\nimport { Command } from 'ckeditor5/src/core';\nimport { normalizeColumnWidths } from './utils';\n\n/**\n * Command used by the {@link module:table/tablecolumnresize~TableColumnResize Table column resize feature} that\n * updates the width of the whole table as well as its individual columns.\n */\nexport default class TableWidthsCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\t// The command is always enabled as it doesn't care about the actual selection - table can be resized\n\t\t// even if the selection is elsewhere.\n\t\tthis.isEnabled = true;\n\t}\n\n\t/**\n\t * Updated the `tableWidth` attribute of the table and the `columnWidth` attribute of the columns of that table.\n\t */\n\tpublic override execute( options: TableWidthsCommandOptions = {} ): void {\n\t\tconst { model, plugins } = this.editor;\n\t\tlet {\n\t\t\ttable = model.document.selection.getSelectedElement()!,\n\t\t\tcolumnWidths,\n\t\t\ttableWidth\n\t\t} = options;\n\n\t\tif ( columnWidths ) {\n\t\t\t// For backwards compatibility, columnWidths might be an array or a string of comma-separated values.\n\t\t\tcolumnWidths = Array.isArray( columnWidths ) ?\n\t\t\t\tcolumnWidths :\n\t\t\t\tcolumnWidths.split( ',' );\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\tif ( tableWidth ) {\n\t\t\t\twriter.setAttribute( 'tableWidth', tableWidth, table );\n\t\t\t} else {\n\t\t\t\twriter.removeAttribute( 'tableWidth', table );\n\t\t\t}\n\n\t\t\tconst tableColumnGroup = plugins\n\t\t\t\t.get( 'TableColumnResizeEditing' )\n\t\t\t\t.getColumnGroupElement( table )!;\n\n\t\t\tif ( !columnWidths && !tableColumnGroup ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( !columnWidths ) {\n\t\t\t\treturn writer.remove( tableColumnGroup );\n\t\t\t}\n\n\t\t\tconst widths = normalizeColumnWidths( columnWidths as Array<string> );\n\n\t\t\tif ( !tableColumnGroup ) {\n\t\t\t\tconst colGroupElement = writer.createElement( 'tableColumnGroup' );\n\n\t\t\t\twidths.forEach( columnWidth => writer.appendElement( 'tableColumn', { columnWidth }, colGroupElement ) );\n\t\t\t\twriter.append( colGroupElement, table );\n\t\t\t} else {\n\t\t\t\tArray\n\t\t\t\t\t.from( tableColumnGroup.getChildren() )\n\t\t\t\t\t.forEach( ( column, index ) => writer.setAttribute( 'columnWidth', widths[ index ], column ) );\n\t\t\t}\n\t\t} );\n\t}\n}\n\nexport interface TableWidthsCommandOptions {\n\n\t/**\n\t * New value of the `columnWidths` attribute. Must be array of strings or string with comma-separated values.\n\t * If skipped, the column widths information will be deleted.\n\t */\n\tcolumnWidths?: Array<string> | string;\n\n\t/**\n\t * The new table width. If skipped, the model attribute will be removed.\n\t */\n\ttableWidth?: string;\n\n\t/**\n\t * The table that is having the columns resized.\n\t */\n\ttable?: Element;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecolumnresize/tablecolumnresizeediting\n */\n\nimport { throttle, isEqual } from 'lodash-es';\n\nimport {\n\tglobal,\n\tDomEmitterMixin,\n\ttype EventInfo,\n\ttype DomEmitter,\n\ttype ObservableChangeEvent\n} from 'ckeditor5/src/utils';\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\n\nimport type {\n\tDiffer,\n\tDomEventData,\n\tDowncastInsertEvent,\n\tDowncastWriter,\n\tElement,\n\tViewElement,\n\tViewNode\n} from 'ckeditor5/src/engine';\n\nimport MouseEventsObserver from '../../src/tablemouse/mouseeventsobserver';\nimport TableEditing from '../tableediting';\nimport TableUtils from '../tableutils';\nimport TableWalker from '../tablewalker';\n\nimport TableWidthsCommand from './tablewidthscommand';\n\nimport { downcastTableResizedClass, upcastColgroupElement } from './converters';\n\nimport {\n\tclamp,\n\tcreateFilledArray,\n\tsumArray,\n\tgetColumnEdgesIndexes,\n\tgetChangedResizedTables,\n\tgetColumnMinWidthAsPercentage,\n\tgetElementWidthInPixels,\n\tgetTableWidthInPixels,\n\tnormalizeColumnWidths,\n\ttoPrecision,\n\tgetDomCellOuterWidth,\n\tupdateColumnElements,\n\tgetColumnGroupElement,\n\tgetTableColumnElements,\n\tgetTableColumnsWidths\n} from './utils';\n\nimport { COLUMN_MIN_WIDTH_IN_PIXELS } from './constants';\nimport type TableColumnResize from '../tablecolumnresize';\n\ntype ResizingData = {\n\tcolumnPosition: number;\n\tflags: {\n\t\tisRightEdge: boolean;\n\t\tisTableCentered: boolean;\n\t\tisLtrContent: boolean;\n\t};\n\telements: {\n\t\tviewResizer: ViewElement;\n\t\tmodelTable: Element;\n\t\tviewFigure: ViewElement;\n\t\tviewColgroup: ViewElement;\n\t\tviewLeftColumn: ViewElement;\n\t\tviewRightColumn?: ViewElement;\n\t};\n\twidths: {\n\t\tviewFigureParentWidth: number;\n\t\tviewFigureWidth: number;\n\t\ttableWidth: number;\n\t\tleftColumnWidth: number;\n\t\trightColumnWidth?: number;\n\t};\n};\n\n/**\n * The table column resize editing plugin.\n */\nexport default class TableColumnResizeEditing extends Plugin {\n\t/**\n\t * A flag indicating if the column resizing is in progress.\n\t */\n\tprivate _isResizingActive: boolean;\n\n\t/**\n\t * A flag indicating if the column resizing is allowed. It is not allowed if the editor is in read-only\n\t * or comments-only mode or the `TableColumnResize` plugin is disabled.\n\t *\n\t * @observable\n\t * @internal\n\t */\n\tpublic declare _isResizingAllowed: boolean;\n\n\t/**\n\t * A temporary storage for the required data needed to correctly calculate the widths of the resized columns. This storage is\n\t * initialized when column resizing begins, and is purged upon completion.\n\t */\n\tprivate _resizingData: ResizingData | null;\n\n\t/**\n\t * DOM emitter.\n\t */\n\tprivate _domEmitter: DomEmitter;\n\n\t/**\n\t * A local reference to the {@link module:table/tableutils~TableUtils} plugin.\n\t */\n\tprivate _tableUtilsPlugin: TableUtils;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ TableEditing, TableUtils ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableColumnResizeEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._isResizingActive = false;\n\t\tthis.set( '_isResizingAllowed', true );\n\t\tthis._resizingData = null;\n\t\tthis._domEmitter = new ( DomEmitterMixin() )();\n\t\tthis._tableUtilsPlugin = editor.plugins.get( 'TableUtils' );\n\n\t\tthis.on<ObservableChangeEvent<boolean>>( 'change:_isResizingAllowed', ( evt, name, value ) => {\n\t\t\t// Toggling the `ck-column-resize_disabled` class shows and hides the resizers through CSS.\n\t\t\tconst classAction = value ? 'removeClass' : 'addClass';\n\n\t\t\teditor.editing.view.change( writer => {\n\t\t\t\tfor ( const root of editor.editing.view.document.roots ) {\n\t\t\t\t\twriter[ classAction ]( 'ck-column-resize_disabled', editor.editing.view.document.getRoot( root.rootName )! );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tthis._extendSchema();\n\t\tthis._registerPostFixer();\n\t\tthis._registerConverters();\n\t\tthis._registerResizingListeners();\n\t\tthis._registerResizerInserter();\n\n\t\tconst editor = this.editor;\n\t\tconst columnResizePlugin: TableColumnResize = editor.plugins.get( 'TableColumnResize' );\n\t\tconst tableEditing: TableEditing = editor.plugins.get( 'TableEditing' );\n\n\t\ttableEditing.registerAdditionalSlot( {\n\t\t\tfilter: element => element.is( 'element', 'tableColumnGroup' ),\n\t\t\tpositionOffset: 0\n\t\t} );\n\n\t\tconst tableWidthsCommand = new TableWidthsCommand( editor );\n\n\t\t// For backwards compatibility we have two commands that perform exactly the same operation.\n\t\teditor.commands.add( 'resizeTableWidth', tableWidthsCommand );\n\t\teditor.commands.add( 'resizeColumnWidths', tableWidthsCommand );\n\n\t\t// Currently the states of column resize and table resize (which is actually the last column resize) features\n\t\t// are bound together. They can be separated in the future by adding distinct listeners and applying\n\t\t// different CSS classes (e.g. `ck-column-resize_disabled` and `ck-table-resize_disabled`) to the editor root.\n\t\t// See #12148 for the details.\n\t\tthis.bind( '_isResizingAllowed' ).to(\n\t\t\teditor, 'isReadOnly',\n\t\t\tcolumnResizePlugin, 'isEnabled',\n\t\t\ttableWidthsCommand, 'isEnabled',\n\t\t\t( isEditorReadOnly, isPluginEnabled, isTableWidthsCommandCommandEnabled ) =>\n\t\t\t\t!isEditorReadOnly && isPluginEnabled && isTableWidthsCommandCommandEnabled\n\t\t);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tthis._domEmitter.stopListening();\n\t\tsuper.destroy();\n\t}\n\n\t/**\n\t * Returns a 'tableColumnGroup' element from the 'table'.\n\t *\n\t * @param element A 'table' or 'tableColumnGroup' element.\n\t * @returns A 'tableColumnGroup' element.\n\t */\n\tpublic getColumnGroupElement( element: Element ): Element | undefined {\n\t\treturn getColumnGroupElement( element );\n\t}\n\n\t/**\n\t * Returns an array of 'tableColumn' elements.\n\t *\n\t * @param element A 'table' or 'tableColumnGroup' element.\n\t * @returns An array of 'tableColumn' elements.\n\t */\n\tpublic getTableColumnElements( element: Element ): Array<Element> {\n\t\treturn getTableColumnElements( element );\n\t}\n\n\t/**\n\t * Returns an array of table column widths.\n\t *\n\t * @param element A 'table' or 'tableColumnGroup' element.\n\t * @returns An array of table column widths.\n\t */\n\tpublic getTableColumnsWidths( element: Element ): Array<string> {\n\t\treturn getTableColumnsWidths( element );\n\t}\n\n\t/**\n\t * Registers new attributes for a table model element.\n\t */\n\tprivate _extendSchema() {\n\t\tthis.editor.model.schema.extend( 'table', {\n\t\t\tallowAttributes: [ 'tableWidth' ]\n\t\t} );\n\n\t\tthis.editor.model.schema.register( 'tableColumnGroup', {\n\t\t\tallowIn: 'table',\n\t\t\tisLimit: true\n\t\t} );\n\n\t\tthis.editor.model.schema.register( 'tableColumn', {\n\t\t\tallowIn: 'tableColumnGroup',\n\t\t\tallowAttributes: [ 'columnWidth' ],\n\t\t\tisLimit: true\n\t\t} );\n\t}\n\n\t/**\n\t * Registers table column resize post-fixer.\n\t *\n\t * It checks if the change from the differ concerns a table-related element or attribute. For detected changes it:\n\t * * Adjusts the `columnWidths` attribute to guarantee that the sum of the widths from all columns is 100%.\n\t * * Checks if the `columnWidths` attribute gets updated accordingly after columns have been added or removed.\n\t */\n\tprivate _registerPostFixer() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\n\t\tmodel.document.registerPostFixer( writer => {\n\t\t\tlet changed = false;\n\n\t\t\tfor ( const table of getChangedResizedTables( model ) ) {\n\t\t\t\tconst tableColumnGroup = this.getColumnGroupElement( table )!;\n\t\t\t\tconst columns = this.getTableColumnElements( tableColumnGroup );\n\t\t\t\tconst columnWidths = this.getTableColumnsWidths( tableColumnGroup );\n\n\t\t\t\t// Adjust the `columnWidths` attribute to guarantee that the sum of the widths from all columns is 100%.\n\t\t\t\tlet normalizedWidths = normalizeColumnWidths( columnWidths );\n\n\t\t\t\t// If the number of columns has changed, then we need to adjust the widths of the affected columns.\n\t\t\t\tnormalizedWidths = adjustColumnWidths( normalizedWidths, table, this );\n\n\t\t\t\tif ( isEqual( columnWidths, normalizedWidths ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tupdateColumnElements( columns, tableColumnGroup, normalizedWidths, writer );\n\n\t\t\t\tchanged = true;\n\t\t\t}\n\n\t\t\treturn changed;\n\t\t} );\n\n\t\t/**\n\t\t * Adjusts if necessary the `columnWidths` in case if the number of column has changed.\n\t\t *\n\t\t * @param columnWidths Note: this array **may be modified** by the function.\n\t\t * @param table Table to be checked.\n\t\t */\n\t\tfunction adjustColumnWidths( columnWidths: Array<string>, table: Element, plugin: TableColumnResizeEditing ): Array<string> {\n\t\t\tconst newTableColumnsCount = plugin._tableUtilsPlugin.getColumns( table );\n\t\t\tconst columnsCountDelta = newTableColumnsCount - columnWidths.length;\n\n\t\t\tif ( columnsCountDelta === 0 ) {\n\t\t\t\treturn columnWidths;\n\t\t\t}\n\n\t\t\tconst widths: Array<number> = columnWidths.map( width => Number( width.replace( '%', '' ) ) );\n\n\t\t\t// Collect all cells that are affected by the change.\n\t\t\tconst cellSet = getAffectedCells( plugin.editor.model.document.differ, table ) as Set<Element>;\n\n\t\t\tfor ( const cell of cellSet ) {\n\t\t\t\tconst currentColumnsDelta = newTableColumnsCount - widths.length;\n\n\t\t\t\tif ( currentColumnsDelta === 0 ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// If the column count in the table changed, adjust the widths of the affected columns.\n\t\t\t\tconst hasMoreColumns = currentColumnsDelta > 0;\n\t\t\t\tconst currentColumnIndex = plugin._tableUtilsPlugin.getCellLocation( cell ).column;\n\n\t\t\t\tif ( hasMoreColumns ) {\n\t\t\t\t\tconst columnMinWidthAsPercentage = getColumnMinWidthAsPercentage( table, plugin.editor );\n\t\t\t\t\tconst columnWidthsToInsert = createFilledArray( currentColumnsDelta, columnMinWidthAsPercentage );\n\n\t\t\t\t\twidths.splice( currentColumnIndex, 0, ...columnWidthsToInsert );\n\t\t\t\t} else {\n\t\t\t\t\t// Moves the widths of the removed columns to the preceding one.\n\t\t\t\t\t// Other editors either reduce the width of the whole table or adjust the widths\n\t\t\t\t\t// proportionally, so change of this behavior can be considered in the future.\n\t\t\t\t\tconst removedColumnWidths = widths.splice( currentColumnIndex, Math.abs( currentColumnsDelta ) );\n\n\t\t\t\t\twidths[ currentColumnIndex ] += sumArray( removedColumnWidths );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn widths.map( width => width + '%' );\n\t\t}\n\n\t\t/**\n\t\t * Returns a set of cells that have been changed in a given table.\n\t\t */\n\t\tfunction getAffectedCells( differ: Differ, table: Element ): Set<Element> {\n\t\t\tconst cellSet = new Set<Element>();\n\n\t\t\tfor ( const change of differ.getChanges() ) {\n\t\t\t\tif (\n\t\t\t\t\tchange.type == 'insert' &&\n\t\t\t\t\tchange.position.nodeAfter &&\n\t\t\t\t\t( change.position.nodeAfter as Element ).name == 'tableCell' &&\n\t\t\t\t\tchange.position.nodeAfter.getAncestors().includes( table )\n\t\t\t\t) {\n\t\t\t\t\tcellSet.add( change.position.nodeAfter as Element );\n\t\t\t\t} else if ( change.type == 'remove' ) {\n\t\t\t\t\t// If the first cell was removed, use the node after the change position instead.\n\t\t\t\t\tconst referenceNode = ( change.position.nodeBefore || change.position.nodeAfter ) as Element;\n\n\t\t\t\t\tif ( referenceNode.name == 'tableCell' && referenceNode.getAncestors().includes( table ) ) {\n\t\t\t\t\t\tcellSet.add( referenceNode );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn cellSet;\n\t\t}\n\t}\n\n\t/**\n\t * Registers table column resize converters.\n\t */\n\tprivate _registerConverters() {\n\t\tconst editor = this.editor;\n\t\tconst conversion = editor.conversion;\n\n\t\t// Table width style\n\t\tconversion.for( 'upcast' ).attributeToAttribute( {\n\t\t\tview: {\n\t\t\t\tname: 'figure',\n\t\t\t\tkey: 'style',\n\t\t\t\tvalue: {\n\t\t\t\t\twidth: /[\\s\\S]+/\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tname: 'table',\n\t\t\t\tkey: 'tableWidth',\n\t\t\t\tvalue: ( viewElement: ViewElement ) => viewElement.getStyle( 'width' )\n\t\t\t}\n\t\t} );\n\n\t\tconversion.for( 'downcast' ).attributeToAttribute( {\n\t\t\tmodel: {\n\t\t\t\tname: 'table',\n\t\t\t\tkey: 'tableWidth'\n\t\t\t},\n\t\t\tview: ( width: string ) => ( {\n\t\t\t\tname: 'figure',\n\t\t\t\tkey: 'style',\n\t\t\t\tvalue: {\n\t\t\t\t\twidth\n\t\t\t\t}\n\t\t\t} )\n\t\t} );\n\n\t\tconversion.elementToElement( { model: 'tableColumnGroup', view: 'colgroup' } );\n\t\tconversion.elementToElement( { model: 'tableColumn', view: 'col' } );\n\t\tconversion.for( 'downcast' ).add( downcastTableResizedClass() );\n\t\tconversion.for( 'upcast' ).add( upcastColgroupElement( this._tableUtilsPlugin ) );\n\n\t\tconversion.for( 'upcast' ).attributeToAttribute( {\n\t\t\tview: {\n\t\t\t\tname: 'col',\n\t\t\t\tstyles: {\n\t\t\t\t\twidth: /.*/\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: 'columnWidth',\n\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\tconst viewColWidth = viewElement.getStyle( 'width' );\n\n\t\t\t\t\tif ( !viewColWidth || !viewColWidth.endsWith( '%' ) ) {\n\t\t\t\t\t\treturn 'auto';\n\t\t\t\t\t}\n\n\t\t\t\t\treturn viewColWidth;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t\tconversion.for( 'downcast' ).attributeToAttribute( {\n\t\t\tmodel: {\n\t\t\t\tname: 'tableColumn',\n\t\t\t\tkey: 'columnWidth'\n\t\t\t},\n\t\t\tview: width => ( { key: 'style', value: { width } } )\n\t\t} );\n\t}\n\n\t/**\n\t * Registers listeners to handle resizing process.\n\t */\n\tprivate _registerResizingListeners() {\n\t\tconst editingView = this.editor.editing.view;\n\n\t\teditingView.addObserver( MouseEventsObserver );\n\t\teditingView.document.on( 'mousedown', this._onMouseDownHandler.bind( this ), { priority: 'high' } );\n\n\t\tthis._domEmitter.listenTo( global.window.document, 'mousemove', throttle( this._onMouseMoveHandler.bind( this ), 50 ) );\n\t\tthis._domEmitter.listenTo( global.window.document, 'mouseup', this._onMouseUpHandler.bind( this ) );\n\t}\n\n\t/**\n\t * Handles the `mousedown` event on column resizer element:\n\t * * calculates the initial column pixel widths,\n\t * * inserts the `<colgroup>` element if it is not present in the `<table>`,\n\t * * puts the necessary data in the temporary storage,\n\t * * applies the attributes to the `<table>` view element.\n\t *\n\t * @param eventInfo An object containing information about the fired event.\n\t * @param domEventData The data related to the DOM event.\n\t */\n\tprivate _onMouseDownHandler( eventInfo: EventInfo, domEventData: DomEventData ) {\n\t\tconst target = domEventData.target;\n\n\t\tif ( !target.hasClass( 'ck-table-column-resizer' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this._isResizingAllowed ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst editor = this.editor;\n\t\tconst modelTable = editor.editing.mapper.toModelElement( target.findAncestor( 'figure' )! )!;\n\n\t\t// Do not resize if table model is in non-editable place.\n\t\tif ( !editor.model.canEditAt( modelTable ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdomEventData.preventDefault();\n\t\teventInfo.stop();\n\n\t\t// The column widths are calculated upon mousedown to allow lazy applying the `columnWidths` attribute on the table.\n\t\tconst columnWidthsInPx = _calculateDomColumnWidths( modelTable, this._tableUtilsPlugin, editor );\n\t\tconst viewTable = target.findAncestor( 'table' )!;\n\t\tconst editingView = editor.editing.view;\n\n\t\t// Insert colgroup for the table that is resized for the first time.\n\t\tif ( !Array.from( viewTable.getChildren() ).find( viewCol => viewCol.is( 'element', 'colgroup' ) ) ) {\n\t\t\teditingView.change( viewWriter => {\n\t\t\t\t_insertColgroupElement( viewWriter, columnWidthsInPx, viewTable );\n\t\t\t} );\n\t\t}\n\n\t\tthis._isResizingActive = true;\n\t\tthis._resizingData = this._getResizingData( domEventData, columnWidthsInPx );\n\n\t\t// At this point we change only the editor view - we don't want other users to see our changes yet,\n\t\t// so we can't apply them in the model.\n\t\teditingView.change( writer => _applyResizingAttributesToTable( writer, viewTable, this._resizingData! ) );\n\n\t\t/**\n\t\t * Calculates the DOM columns' widths. It is done by taking the width of the widest cell\n\t\t * from each table column (we rely on the {@link module:table/tablewalker~TableWalker}\n\t\t * to determine which column the cell belongs to).\n\t\t *\n\t\t * @param modelTable A table which columns should be measured.\n\t\t * @param tableUtils The Table Utils plugin instance.\n\t\t * @param editor The editor instance.\n\t\t * @returns Columns' widths expressed in pixels (without unit).\n\t\t */\n\t\tfunction _calculateDomColumnWidths( modelTable: Element, tableUtilsPlugin: TableUtils, editor: Editor ) {\n\t\t\tconst columnWidthsInPx = Array( tableUtilsPlugin.getColumns( modelTable ) );\n\t\t\tconst tableWalker = new TableWalker( modelTable );\n\n\t\t\tfor ( const cellSlot of tableWalker ) {\n\t\t\t\tconst viewCell = editor.editing.mapper.toViewElement( cellSlot.cell )!;\n\t\t\t\tconst domCell = editor.editing.view.domConverter.mapViewToDom( viewCell )!;\n\t\t\t\tconst domCellWidth = getDomCellOuterWidth( domCell );\n\n\t\t\t\tif ( !columnWidthsInPx[ cellSlot.column ] || domCellWidth < columnWidthsInPx[ cellSlot.column ] ) {\n\t\t\t\t\tcolumnWidthsInPx[ cellSlot.column ] = toPrecision( domCellWidth );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn columnWidthsInPx;\n\t\t}\n\n\t\t/**\n\t\t * Creates a `<colgroup>` element with `<col>`s and inserts it into a given view table.\n\t\t *\n\t\t * @param viewWriter A writer instance.\n\t\t * @param columnWidthsInPx Column widths.\n\t\t * @param viewTable A table view element.\n\t\t */\n\t\tfunction _insertColgroupElement( viewWriter: DowncastWriter, columnWidthsInPx: Array<number>, viewTable: ViewElement ) {\n\t\t\tconst colgroup = viewWriter.createContainerElement( 'colgroup' );\n\n\t\t\tfor ( let i = 0; i < columnWidthsInPx.length; i++ ) {\n\t\t\t\tconst viewColElement = viewWriter.createEmptyElement( 'col' );\n\t\t\t\tconst columnWidthInPc = `${ toPrecision( columnWidthsInPx[ i ] / sumArray( columnWidthsInPx ) * 100 ) }%`;\n\n\t\t\t\tviewWriter.setStyle( 'width', columnWidthInPc, viewColElement );\n\t\t\t\tviewWriter.insert( viewWriter.createPositionAt( colgroup, 'end' ), viewColElement );\n\t\t\t}\n\n\t\t\tviewWriter.insert( viewWriter.createPositionAt( viewTable, 0 ), colgroup );\n\t\t}\n\n\t\t/**\n\t\t * Applies the style and classes to the view table as the resizing begun.\n\t\t *\n\t\t * @param viewWriter A writer instance.\n\t\t * @param viewTable A table containing the clicked resizer.\n\t\t * @param resizingData Data related to the resizing.\n\t\t */\n\t\tfunction _applyResizingAttributesToTable( viewWriter: DowncastWriter, viewTable: ViewElement, resizingData: ResizingData ) {\n\t\t\tconst figureInitialPcWidth = resizingData.widths.viewFigureWidth / resizingData.widths.viewFigureParentWidth;\n\n\t\t\tviewWriter.addClass( 'ck-table-resized', viewTable );\n\t\t\tviewWriter.addClass( 'ck-table-column-resizer__active', resizingData.elements.viewResizer );\n\t\t\tviewWriter.setStyle( 'width', `${ toPrecision( figureInitialPcWidth * 100 ) }%`, viewTable.findAncestor( 'figure' )! );\n\t\t}\n\t}\n\n\t/**\n\t * Handles the `mousemove` event.\n\t * * If resizing process is not in progress, it does nothing.\n\t * * If resizing is active but not allowed, it stops the resizing process instantly calling the `mousedown` event handler.\n\t * * Otherwise it dynamically updates the widths of the resized columns.\n\t *\n\t * @param eventInfo An object containing information about the fired event.\n\t * @param mouseEventData The native DOM event.\n\t */\n\tprivate _onMouseMoveHandler( eventInfo: EventInfo, mouseEventData: MouseEvent ) {\n\t\tif ( !this._isResizingActive ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !this._isResizingAllowed ) {\n\t\t\tthis._onMouseUpHandler();\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst {\n\t\t\tcolumnPosition,\n\t\t\tflags: {\n\t\t\t\tisRightEdge,\n\t\t\t\tisTableCentered,\n\t\t\t\tisLtrContent\n\t\t\t},\n\t\t\telements: {\n\t\t\t\tviewFigure,\n\t\t\t\tviewLeftColumn,\n\t\t\t\tviewRightColumn\n\t\t\t},\n\t\t\twidths: {\n\t\t\t\tviewFigureParentWidth,\n\t\t\t\ttableWidth,\n\t\t\t\tleftColumnWidth,\n\t\t\t\trightColumnWidth\n\t\t\t}\n\t\t} = this._resizingData!;\n\n\t\tconst dxLowerBound = -leftColumnWidth + COLUMN_MIN_WIDTH_IN_PIXELS;\n\n\t\tconst dxUpperBound = isRightEdge ?\n\t\t\tviewFigureParentWidth - tableWidth :\n\t\t\trightColumnWidth! - COLUMN_MIN_WIDTH_IN_PIXELS;\n\n\t\t// The multiplier is needed for calculating the proper movement offset:\n\t\t// - it should negate the sign if content language direction is right-to-left,\n\t\t// - it should double the offset if the table edge is resized and table is centered.\n\t\tconst multiplier = ( isLtrContent ? 1 : -1 ) * ( isRightEdge && isTableCentered ? 2 : 1 );\n\n\t\tconst dx = clamp(\n\t\t\t( mouseEventData.clientX - columnPosition ) * multiplier,\n\t\t\tMath.min( dxLowerBound, 0 ),\n\t\t\tMath.max( dxUpperBound, 0 )\n\t\t);\n\n\t\tif ( dx === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.editor.editing.view.change( writer => {\n\t\t\tconst leftColumnWidthAsPercentage = toPrecision( ( leftColumnWidth + dx ) * 100 / tableWidth );\n\n\t\t\twriter.setStyle( 'width', `${ leftColumnWidthAsPercentage }%`, viewLeftColumn );\n\n\t\t\tif ( isRightEdge ) {\n\t\t\t\tconst tableWidthAsPercentage = toPrecision( ( tableWidth + dx ) * 100 / viewFigureParentWidth );\n\n\t\t\t\twriter.setStyle( 'width', `${ tableWidthAsPercentage }%`, viewFigure );\n\t\t\t} else {\n\t\t\t\tconst rightColumnWidthAsPercentage = toPrecision( ( rightColumnWidth! - dx ) * 100 / tableWidth );\n\n\t\t\t\twriter.setStyle( 'width', `${ rightColumnWidthAsPercentage }%`, viewRightColumn! );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Handles the `mouseup` event.\n\t * * If resizing process is not in progress, it does nothing.\n\t * * If resizing is active but not allowed, it cancels the resizing process restoring the original widths.\n\t * * Otherwise it propagates the changes from view to the model by executing the adequate commands.\n\t */\n\tprivate _onMouseUpHandler() {\n\t\tif ( !this._isResizingActive ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst {\n\t\t\tviewResizer,\n\t\t\tmodelTable,\n\t\t\tviewFigure,\n\t\t\tviewColgroup\n\t\t} = this._resizingData!.elements;\n\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\tconst tableColumnGroup = this.getColumnGroupElement( modelTable );\n\t\tconst viewColumns: Array<ViewElement> = Array\n\t\t\t.from( viewColgroup.getChildren() )\n\t\t\t.filter( ( column: ViewNode ): column is ViewElement => column.is( 'view:element' ) );\n\n\t\tconst columnWidthsAttributeOld = tableColumnGroup ?\n\t\t\tthis.getTableColumnsWidths( tableColumnGroup )! :\n\t\t\tnull;\n\n\t\tconst columnWidthsAttributeNew = viewColumns.map( column => column.getStyle( 'width' ) );\n\n\t\tconst isColumnWidthsAttributeChanged = !isEqual( columnWidthsAttributeOld, columnWidthsAttributeNew );\n\n\t\tconst tableWidthAttributeOld = modelTable.getAttribute( 'tableWidth' ) as string;\n\t\tconst tableWidthAttributeNew = viewFigure.getStyle( 'width' )!;\n\n\t\tconst isTableWidthAttributeChanged = tableWidthAttributeOld !== tableWidthAttributeNew;\n\n\t\tif ( isColumnWidthsAttributeChanged || isTableWidthAttributeChanged ) {\n\t\t\tif ( this._isResizingAllowed ) {\n\t\t\t\teditor.execute( 'resizeTableWidth', {\n\t\t\t\t\ttable: modelTable,\n\t\t\t\t\ttableWidth: `${ toPrecision( tableWidthAttributeNew ) }%`,\n\t\t\t\t\tcolumnWidths: columnWidthsAttributeNew\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\t// In read-only mode revert all changes in the editing view. The model is not touched so it does not need to be restored.\n\t\t\t\t// This case can occur if the read-only mode kicks in during the resizing process.\n\t\t\t\teditingView.change( writer => {\n\t\t\t\t\t// If table had resized columns before, restore the previous column widths.\n\t\t\t\t\t// Otherwise clean up the view from the temporary column resizing markup.\n\t\t\t\t\tif ( columnWidthsAttributeOld ) {\n\t\t\t\t\t\tfor ( const viewCol of viewColumns ) {\n\t\t\t\t\t\t\twriter.setStyle( 'width', columnWidthsAttributeOld.shift()!, viewCol );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\twriter.remove( viewColgroup );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( isTableWidthAttributeChanged ) {\n\t\t\t\t\t\t// If the whole table was already resized before, restore the previous table width.\n\t\t\t\t\t\t// Otherwise clean up the view from the temporary table resizing markup.\n\t\t\t\t\t\tif ( tableWidthAttributeOld ) {\n\t\t\t\t\t\t\twriter.setStyle( 'width', tableWidthAttributeOld, viewFigure );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twriter.removeStyle( 'width', viewFigure );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// If a table and its columns weren't resized before,\n\t\t\t\t\t// prune the remaining common resizing markup.\n\t\t\t\t\tif ( !columnWidthsAttributeOld && !tableWidthAttributeOld ) {\n\t\t\t\t\t\twriter.removeClass(\n\t\t\t\t\t\t\t'ck-table-resized',\n\t\t\t\t\t\t\t[ ... viewFigure.getChildren() as IterableIterator<ViewElement> ].find( element => element.name === 'table' )!\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\teditingView.change( writer => {\n\t\t\twriter.removeClass( 'ck-table-column-resizer__active', viewResizer );\n\t\t} );\n\n\t\tthis._isResizingActive = false;\n\t\tthis._resizingData = null;\n\t}\n\n\t/**\n\t * Retrieves and returns required data needed for the resizing process.\n\t *\n\t * @param domEventData The data of the `mousedown` event.\n\t * @param columnWidths The current widths of the columns.\n\t * @returns The data needed for the resizing process.\n\t */\n\tprivate _getResizingData( domEventData: DomEventData, columnWidths: Array<number> ): ResizingData {\n\t\tconst editor = this.editor;\n\n\t\tconst columnPosition = ( domEventData.domEvent as Event & { clientX: number } ).clientX;\n\n\t\tconst viewResizer = domEventData.target;\n\t\tconst viewLeftCell = viewResizer.findAncestor( 'td' )! || viewResizer.findAncestor( 'th' )!;\n\t\tconst modelLeftCell = editor.editing.mapper.toModelElement( viewLeftCell )!;\n\t\tconst modelTable = modelLeftCell.findAncestor( 'table' )!;\n\n\t\tconst leftColumnIndex = getColumnEdgesIndexes( modelLeftCell, this._tableUtilsPlugin ).rightEdge;\n\t\tconst lastColumnIndex = this._tableUtilsPlugin.getColumns( modelTable ) - 1;\n\n\t\tconst isRightEdge = leftColumnIndex === lastColumnIndex;\n\t\tconst isTableCentered = !modelTable.hasAttribute( 'tableAlignment' );\n\t\tconst isLtrContent = editor.locale.contentLanguageDirection !== 'rtl';\n\n\t\tconst viewTable = viewLeftCell.findAncestor( 'table' )!;\n\t\tconst viewFigure = viewTable.findAncestor( 'figure' ) as ViewElement;\n\t\tconst viewColgroup = [ ...viewTable.getChildren() as IterableIterator<ViewElement> ]\n\t\t\t.find( viewCol => viewCol.is( 'element', 'colgroup' ) )!;\n\t\tconst viewLeftColumn = viewColgroup.getChild( leftColumnIndex ) as ViewElement;\n\t\tconst viewRightColumn = isRightEdge ? undefined : viewColgroup.getChild( leftColumnIndex + 1 ) as ViewElement;\n\n\t\tconst viewFigureParentWidth = getElementWidthInPixels(\n\t\t\teditor.editing.view.domConverter.mapViewToDom( viewFigure.parent! ) as HTMLElement\n\t\t);\n\t\tconst viewFigureWidth = getElementWidthInPixels( editor.editing.view.domConverter.mapViewToDom( viewFigure )! );\n\t\tconst tableWidth = getTableWidthInPixels( modelTable, editor );\n\t\tconst leftColumnWidth = columnWidths[ leftColumnIndex ];\n\t\tconst rightColumnWidth = isRightEdge ? undefined : columnWidths[ leftColumnIndex + 1 ];\n\n\t\treturn {\n\t\t\tcolumnPosition,\n\t\t\tflags: {\n\t\t\t\tisRightEdge,\n\t\t\t\tisTableCentered,\n\t\t\t\tisLtrContent\n\t\t\t},\n\t\t\telements: {\n\t\t\t\tviewResizer,\n\t\t\t\tmodelTable,\n\t\t\t\tviewFigure,\n\t\t\t\tviewColgroup,\n\t\t\t\tviewLeftColumn,\n\t\t\t\tviewRightColumn\n\t\t\t},\n\t\t\twidths: {\n\t\t\t\tviewFigureParentWidth,\n\t\t\t\tviewFigureWidth,\n\t\t\t\ttableWidth,\n\t\t\t\tleftColumnWidth,\n\t\t\t\trightColumnWidth\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Registers a listener ensuring that each resizable cell have a resizer handle.\n\t */\n\tprivate _registerResizerInserter() {\n\t\tthis.editor.conversion.for( 'editingDowncast' ).add( dispatcher => {\n\t\t\tdispatcher.on<DowncastInsertEvent<Element>>( 'insert:tableCell', ( evt, data, conversionApi ) => {\n\t\t\t\tconst modelElement = data.item;\n\t\t\t\tconst viewElement = conversionApi.mapper.toViewElement( modelElement );\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\n\t\t\t\tviewWriter.insert(\n\t\t\t\t\tviewWriter.createPositionAt( viewElement!, 'end' ),\n\t\t\t\t\tviewWriter.createUIElement( 'div', { class: 'ck-table-column-resizer' } )\n\t\t\t\t);\n\t\t\t}, { priority: 'lowest' } );\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecolumnresize/converters\n */\n\nimport type {\n\tDowncastDispatcher,\n\tDowncastInsertEvent,\n\tElement,\n\tUpcastDispatcher,\n\tUpcastElementEvent,\n\tViewElement\n} from 'ckeditor5/src/engine';\nimport type TableUtils from '../tableutils';\nimport {\n\tnormalizeColumnWidths,\n\tupdateColumnElements,\n\tgetColumnGroupElement,\n\tgetTableColumnElements,\n\tgetTableColumnsWidths\n} from './utils';\n\n/**\n * Returns a upcast helper that ensures the number of `<tableColumn>` elements corresponds to the actual number of columns in the table,\n * because the input data might have too few or too many <col> elements.\n */\nexport function upcastColgroupElement( tableUtilsPlugin: TableUtils ): ( dispatcher: UpcastDispatcher ) => void {\n\treturn dispatcher => dispatcher.on<UpcastElementEvent>( 'element:colgroup', ( evt, data, conversionApi ) => {\n\t\tconst modelTable = data.modelCursor.findAncestor( 'table' )!;\n\t\tconst tableColumnGroup = getColumnGroupElement( modelTable );\n\n\t\tif ( !tableColumnGroup ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst columnElements = getTableColumnElements( tableColumnGroup );\n\t\tlet columnWidths = getTableColumnsWidths( tableColumnGroup );\n\t\tconst columnsCount = tableUtilsPlugin.getColumns( modelTable );\n\n\t\tcolumnWidths = Array.from( { length: columnsCount }, ( _, index ) => columnWidths[ index ] || 'auto' );\n\n\t\tif ( columnWidths.length != columnElements.length || columnWidths.includes( 'auto' ) ) {\n\t\t\tupdateColumnElements( columnElements, tableColumnGroup, normalizeColumnWidths( columnWidths ), conversionApi.writer );\n\t\t}\n\t}, { priority: 'low' } );\n}\n\n/**\n * Returns downcast helper for adding `ck-table-resized` class if there is a `<tableColumnGroup>` element inside the table.\n */\nexport function downcastTableResizedClass(): ( dispatcher: DowncastDispatcher ) => void {\n\treturn dispatcher => dispatcher.on<DowncastInsertEvent>( 'insert:table', ( evt, data, conversionApi ) => {\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst modelTable = data.item as Element;\n\t\tconst viewElement: ViewElement = conversionApi.mapper.toViewElement( modelTable )!;\n\n\t\tconst viewTable = viewElement.is( 'element', 'table' ) ?\n\t\t\tviewElement :\n\t\t\tArray.from( viewElement.getChildren() ).find( viewChild => viewChild.is( 'element', 'table' ) )!;\n\n\t\tconst tableColumnGroup = getColumnGroupElement( modelTable );\n\n\t\tif ( tableColumnGroup ) {\n\t\t\tviewWriter.addClass( 'ck-table-resized', viewTable as ViewElement );\n\t\t} else {\n\t\t\tviewWriter.removeClass( 'ck-table-resized', viewTable as ViewElement );\n\t\t}\n\t}, { priority: 'low' } );\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./tablecolumnresize.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module cloud-services/token/token\n */\n\n/* globals XMLHttpRequest, setTimeout, clearTimeout, atob */\n\nimport { ObservableMixin, CKEditorError } from 'ckeditor5/src/utils';\nimport type { TokenUrl } from '../cloudservicesconfig';\n\nconst DEFAULT_OPTIONS = { autoRefresh: true };\nconst DEFAULT_TOKEN_REFRESH_TIMEOUT_TIME = 3600000;\n\n/**\n * Class representing the token used for communication with CKEditor Cloud Services.\n * Value of the token is retrieving from the specified URL and is refreshed every 1 hour by default.\n */\nexport default class Token extends ObservableMixin() {\n\t/**\n\t * Value of the token.\n\t * The value of the token is undefined if `initValue` is not provided or `init` method was not called.\n\t * `create` method creates token with initialized value from url.\n\t *\n\t * @see module:cloud-services/token/token~InitializedToken\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public value: string | undefined;\n\n\t/**\n\t * Base refreshing function.\n\t */\n\tprivate _refresh: () => Promise<string>;\n\n\tprivate _options: { initValue?: string; autoRefresh: boolean };\n\n\tprivate _tokenRefreshTimeout?: ReturnType<typeof setTimeout>;\n\n\t/**\n\t * Creates `Token` instance.\n\t * Method `init` should be called after using the constructor or use `create` method instead.\n\t *\n\t * @param tokenUrlOrRefreshToken Endpoint address to download the token or a callback that provides the token. If the\n\t * value is a function it has to match the {@link module:cloud-services/token/token~Token#refreshToken} interface.\n\t */\n\tconstructor( tokenUrlOrRefreshToken: TokenUrl, options: TokenOptions = {} ) {\n\t\tsuper();\n\n\t\tif ( !tokenUrlOrRefreshToken ) {\n\t\t\t/**\n\t\t\t * A `tokenUrl` must be provided as the first constructor argument.\n\t\t\t *\n\t\t\t * @error token-missing-token-url\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'token-missing-token-url',\n\t\t\t\tthis\n\t\t\t);\n\t\t}\n\n\t\tif ( options.initValue ) {\n\t\t\tthis._validateTokenValue( options.initValue );\n\t\t}\n\n\t\tthis.set( 'value', options.initValue );\n\n\t\tif ( typeof tokenUrlOrRefreshToken === 'function' ) {\n\t\t\tthis._refresh = tokenUrlOrRefreshToken;\n\t\t} else {\n\t\t\tthis._refresh = () => defaultRefreshToken( tokenUrlOrRefreshToken );\n\t\t}\n\n\t\tthis._options = { ...DEFAULT_OPTIONS, ...options };\n\t}\n\n\t/**\n\t * Initializes the token.\n\t */\n\tpublic init(): Promise<InitializedToken> {\n\t\treturn new Promise( ( resolve, reject ) => {\n\t\t\tif ( !this.value ) {\n\t\t\t\tthis.refreshToken()\n\t\t\t\t\t.then( resolve )\n\t\t\t\t\t.catch( reject );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._options.autoRefresh ) {\n\t\t\t\tthis._registerRefreshTokenTimeout();\n\t\t\t}\n\n\t\t\tresolve( this as InitializedToken );\n\t\t} );\n\t}\n\n\t/**\n\t * Refresh token method. Useful in a method form as it can be override in tests.\n\t */\n\tpublic refreshToken(): Promise<InitializedToken> {\n\t\treturn this._refresh()\n\t\t\t.then( value => {\n\t\t\t\tthis._validateTokenValue( value );\n\t\t\t\tthis.set( 'value', value );\n\n\t\t\t\tif ( this._options.autoRefresh ) {\n\t\t\t\t\tthis._registerRefreshTokenTimeout();\n\t\t\t\t}\n\n\t\t\t\treturn this as InitializedToken;\n\t\t\t} );\n\t}\n\n\t/**\n\t * Destroys token instance. Stops refreshing.\n\t */\n\tpublic destroy(): void {\n\t\tclearTimeout( this._tokenRefreshTimeout );\n\t}\n\n\t/**\n\t * Checks whether the provided token follows the JSON Web Tokens (JWT) format.\n\t *\n\t * @param tokenValue The token to validate.\n\t */\n\tprivate _validateTokenValue( tokenValue: string ) {\n\t\t// The token must be a string.\n\t\tconst isString = typeof tokenValue === 'string';\n\n\t\t// The token must be a plain string without quotes (\"\").\n\t\tconst isPlainString = !/^\".*\"$/.test( tokenValue );\n\n\t\t// JWT token contains 3 parts: header, payload, and signature.\n\t\t// Each part is separated by a dot.\n\t\tconst isJWTFormat = isString && tokenValue.split( '.' ).length === 3;\n\n\t\tif ( !( isPlainString && isJWTFormat ) ) {\n\t\t\t/**\n\t\t\t * The provided token must follow the [JSON Web Tokens](https://jwt.io/introduction/) format.\n\t\t\t *\n\t\t\t * @error token-not-in-jwt-format\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'token-not-in-jwt-format', this );\n\t\t}\n\t}\n\n\t/**\n\t * Registers a refresh token timeout for the time taken from token.\n\t */\n\tprivate _registerRefreshTokenTimeout() {\n\t\tconst tokenRefreshTimeoutTime = this._getTokenRefreshTimeoutTime();\n\n\t\tclearTimeout( this._tokenRefreshTimeout );\n\n\t\tthis._tokenRefreshTimeout = setTimeout( () => {\n\t\t\tthis.refreshToken();\n\t\t}, tokenRefreshTimeoutTime );\n\t}\n\n\t/**\n\t * Returns token refresh timeout time calculated from expire time in the token payload.\n\t *\n\t * If the token parse fails or the token payload doesn't contain, the default DEFAULT_TOKEN_REFRESH_TIMEOUT_TIME is returned.\n\t */\n\tprivate _getTokenRefreshTimeoutTime() {\n\t\ttry {\n\t\t\tconst [ , binaryTokenPayload ] = this.value!.split( '.' );\n\t\t\tconst { exp: tokenExpireTime } = JSON.parse( atob( binaryTokenPayload ) );\n\n\t\t\tif ( !tokenExpireTime ) {\n\t\t\t\treturn DEFAULT_TOKEN_REFRESH_TIMEOUT_TIME;\n\t\t\t}\n\n\t\t\tconst tokenRefreshTimeoutTime = Math.floor( ( ( tokenExpireTime * 1000 ) - Date.now() ) / 2 );\n\n\t\t\treturn tokenRefreshTimeoutTime;\n\t\t} catch ( err ) {\n\t\t\treturn DEFAULT_TOKEN_REFRESH_TIMEOUT_TIME;\n\t\t}\n\t}\n\n\t/**\n\t * Creates a initialized {@link module:cloud-services/token/token~Token} instance.\n\t *\n\t * @param tokenUrlOrRefreshToken Endpoint address to download the token or a callback that provides the token. If the\n\t * value is a function it has to match the {@link module:cloud-services/token/token~Token#refreshToken} interface.\n\t */\n\tpublic static create( tokenUrlOrRefreshToken: TokenUrl, options: TokenOptions = {} ): Promise<InitializedToken> {\n\t\tconst token = new Token( tokenUrlOrRefreshToken, options );\n\n\t\treturn token.init();\n\t}\n}\n\n/**\n * A {@link ~Token} instance that has been initialized.\n */\nexport type InitializedToken = Token & { value: string };\n\n/**\n * Options for creating tokens.\n */\nexport interface TokenOptions {\n\n\t/**\n\t * Initial value of the token.\n\t */\n\tinitValue?: string;\n\n\t/**\n\t * Specifies whether to start the refresh automatically.\n\t *\n\t * @default true\n\t */\n\tautoRefresh?: boolean;\n}\n\n/**\n * This function is called in a defined interval by the {@link ~Token} class. It also can be invoked manually.\n * It should return a promise, which resolves with the new token value.\n * If any error occurs it should return a rejected promise with an error message.\n */\nfunction defaultRefreshToken( tokenUrl: string ) {\n\treturn new Promise<string>( ( resolve, reject ) => {\n\t\tconst xhr = new XMLHttpRequest();\n\n\t\txhr.open( 'GET', tokenUrl );\n\n\t\txhr.addEventListener( 'load', () => {\n\t\t\tconst statusCode = xhr.status;\n\t\t\tconst xhrResponse = xhr.response;\n\n\t\t\tif ( statusCode < 200 || statusCode > 299 ) {\n\t\t\t\t/**\n\t\t\t\t * Cannot download new token from the provided url.\n\t\t\t\t *\n\t\t\t\t * @error token-cannot-download-new-token\n\t\t\t\t */\n\t\t\t\treturn reject(\n\t\t\t\t\tnew CKEditorError( 'token-cannot-download-new-token', null )\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn resolve( xhrResponse );\n\t\t} );\n\n\t\txhr.addEventListener( 'error', () => reject( new Error( 'Network Error' ) ) );\n\t\txhr.addEventListener( 'abort', () => reject( new Error( 'Abort' ) ) );\n\n\t\txhr.send();\n\t} );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module cloud-services/uploadgateway/fileuploader\n */\n\n/* globals XMLHttpRequest, FormData, Blob, atob */\n\nimport type { UploadResponse } from 'ckeditor5/src/upload';\nimport { EmitterMixin, CKEditorError } from 'ckeditor5/src/utils';\nimport type { InitializedToken } from '../token/token';\n\nconst BASE64_HEADER_REG_EXP = /^data:(\\S*?);base64,/;\n\n/**\n * FileUploader class used to upload single file.\n */\nexport default class FileUploader extends EmitterMixin() {\n\t/**\n\t * A file that is being uploaded.\n\t */\n\tpublic readonly file: Blob;\n\n\tpublic xhr?: XMLHttpRequest;\n\n\t/**\n\t * CKEditor Cloud Services access token.\n\t */\n\tprivate readonly _token: InitializedToken;\n\n\t/**\n\t * CKEditor Cloud Services API address.\n\t */\n\tprivate readonly _apiAddress: string;\n\n\t/**\n\t * Creates `FileUploader` instance.\n\t *\n\t * @param fileOrData A blob object or a data string encoded with Base64.\n\t * @param token Token used for authentication.\n\t * @param apiAddress API address.\n\t */\n\tconstructor(\n\t\tfileOrData: string | Blob,\n\t\ttoken: InitializedToken,\n\t\tapiAddress: string\n\t) {\n\t\tsuper();\n\n\t\tif ( !fileOrData ) {\n\t\t\t/**\n\t\t\t * File must be provided as the first argument.\n\t\t\t *\n\t\t\t * @error fileuploader-missing-file\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'fileuploader-missing-file', null );\n\t\t}\n\n\t\tif ( !token ) {\n\t\t\t/**\n\t\t\t * Token must be provided as the second argument.\n\t\t\t *\n\t\t\t * @error fileuploader-missing-token\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'fileuploader-missing-token', null );\n\t\t}\n\n\t\tif ( !apiAddress ) {\n\t\t\t/**\n\t\t\t * Api address must be provided as the third argument.\n\t\t\t *\n\t\t\t * @error fileuploader-missing-api-address\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'fileuploader-missing-api-address', null );\n\t\t}\n\n\t\tthis.file = _isBase64( fileOrData ) ? _base64ToBlob( fileOrData ) : fileOrData;\n\n\t\tthis._token = token;\n\t\tthis._apiAddress = apiAddress;\n\t}\n\n\t/**\n\t * Registers callback on `progress` event.\n\t */\n\tpublic onProgress( callback: ( status: { total: number; uploaded: number } ) => void ): this {\n\t\tthis.on<FileUploaderProgressErrorEvent>( 'progress', ( event, data ) => callback( data ) );\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Registers callback on `error` event. Event is called once when error occurs.\n\t */\n\tpublic onError( callback: ( error: string ) => void ): this {\n\t\tthis.once<FileUploaderErrorEvent>( 'error', ( event, data ) => callback( data ) );\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Aborts upload process.\n\t */\n\tpublic abort(): void {\n\t\tthis.xhr!.abort();\n\t}\n\n\t/**\n\t * Sends XHR request to API.\n\t */\n\tpublic send(): Promise<UploadResponse> {\n\t\tthis._prepareRequest();\n\t\tthis._attachXHRListeners();\n\n\t\treturn this._sendRequest();\n\t}\n\n\t/**\n\t * Prepares XHR request.\n\t */\n\tprivate _prepareRequest() {\n\t\tconst xhr = new XMLHttpRequest();\n\n\t\txhr.open( 'POST', this._apiAddress );\n\t\txhr.setRequestHeader( 'Authorization', this._token.value );\n\t\txhr.responseType = 'json';\n\n\t\tthis.xhr = xhr;\n\t}\n\n\t/**\n\t * Attaches listeners to the XHR.\n\t */\n\tprivate _attachXHRListeners() {\n\t\tconst xhr = this.xhr!;\n\n\t\tconst onError = ( message: string ) => {\n\t\t\treturn () => this.fire<FileUploaderErrorEvent>( 'error', message );\n\t\t};\n\n\t\txhr.addEventListener( 'error', onError( 'Network Error' ) );\n\t\txhr.addEventListener( 'abort', onError( 'Abort' ) );\n\n\t\t/* istanbul ignore else -- @preserve */\n\t\tif ( xhr.upload ) {\n\t\t\txhr.upload.addEventListener( 'progress', event => {\n\t\t\t\tif ( event.lengthComputable ) {\n\t\t\t\t\tthis.fire<FileUploaderProgressErrorEvent>( 'progress', {\n\t\t\t\t\t\ttotal: event.total,\n\t\t\t\t\t\tuploaded: event.loaded\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\txhr.addEventListener( 'load', () => {\n\t\t\tconst statusCode = xhr.status;\n\t\t\tconst xhrResponse = xhr.response;\n\n\t\t\tif ( statusCode < 200 || statusCode > 299 ) {\n\t\t\t\treturn this.fire<FileUploaderErrorEvent>( 'error', xhrResponse.message || xhrResponse.error );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Sends XHR request.\n\t */\n\tprivate _sendRequest() {\n\t\tconst formData = new FormData();\n\t\tconst xhr = this.xhr!;\n\n\t\tformData.append( 'file', this.file );\n\n\t\treturn new Promise<UploadResponse>( ( resolve, reject ) => {\n\t\t\txhr.addEventListener( 'load', () => {\n\t\t\t\tconst statusCode = xhr.status;\n\t\t\t\tconst xhrResponse = xhr.response;\n\n\t\t\t\tif ( statusCode < 200 || statusCode > 299 ) {\n\t\t\t\t\tif ( xhrResponse.message ) {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Uploading file failed.\n\t\t\t\t\t\t *\n\t\t\t\t\t\t * @error fileuploader-uploading-data-failed\n\t\t\t\t\t\t */\n\t\t\t\t\t\treturn reject( new CKEditorError(\n\t\t\t\t\t\t\t'fileuploader-uploading-data-failed',\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t{ message: xhrResponse.message }\n\t\t\t\t\t\t) );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn reject( xhrResponse.error );\n\t\t\t\t}\n\n\t\t\t\treturn resolve( xhrResponse );\n\t\t\t} );\n\n\t\t\txhr.addEventListener( 'error', () => reject( new Error( 'Network Error' ) ) );\n\t\t\txhr.addEventListener( 'abort', () => reject( new Error( 'Abort' ) ) );\n\n\t\t\txhr.send( formData );\n\t\t} );\n\t}\n}\n\n/**\n * Fired when error occurs.\n *\n * @eventName ~FileUploader#error\n * @param error Error message\n */\nexport type FileUploaderErrorEvent = {\n\tname: 'error';\n\targs: [ error: string ];\n};\n\n/**\n * Fired on upload progress.\n *\n * @eventName ~FileUploader#progress\n * @param status Total and uploaded status\n */\nexport type FileUploaderProgressErrorEvent = {\n\tname: 'progress';\n\targs: [ status: { total: number; uploaded: number } ];\n};\n\n/**\n * Transforms Base64 string data into file.\n *\n * @param base64 String data.\n */\nfunction _base64ToBlob( base64: string, sliceSize = 512 ) {\n\ttry {\n\t\tconst contentType = base64.match( BASE64_HEADER_REG_EXP )![ 1 ];\n\t\tconst base64Data = atob( base64.replace( BASE64_HEADER_REG_EXP, '' ) );\n\n\t\tconst byteArrays: Array<Uint8Array> = [];\n\n\t\tfor ( let offset = 0; offset < base64Data.length; offset += sliceSize ) {\n\t\t\tconst slice = base64Data.slice( offset, offset + sliceSize );\n\t\t\tconst byteNumbers = new Array<number>( slice.length );\n\n\t\t\tfor ( let i = 0; i < slice.length; i++ ) {\n\t\t\t\tbyteNumbers[ i ] = slice.charCodeAt( i );\n\t\t\t}\n\n\t\t\tbyteArrays.push( new Uint8Array( byteNumbers ) );\n\t\t}\n\n\t\treturn new Blob( byteArrays, { type: contentType } );\n\t} catch ( error ) {\n\t\t/**\n\t\t * Problem with decoding Base64 image data.\n\t\t *\n\t\t * @error fileuploader-decoding-image-data-error\n\t\t */\n\t\tthrow new CKEditorError( 'fileuploader-decoding-image-data-error', null );\n\t}\n}\n\n/**\n * Checks that string is Base64.\n */\nfunction _isBase64( string: string | Blob ): string is string {\n\tif ( typeof string !== 'string' ) {\n\t\treturn false;\n\t}\n\n\tconst match = string.match( BASE64_HEADER_REG_EXP );\n\treturn !!( match && match.length );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module cloud-services/uploadgateway/uploadgateway\n */\n\nimport FileUploader from './fileuploader';\nimport type { InitializedToken } from '../token/token';\nimport { CKEditorError } from 'ckeditor5/src/utils';\n\n/**\n * UploadGateway abstracts file uploads to CKEditor Cloud Services.\n */\nexport default class UploadGateway {\n\t/**\n\t * CKEditor Cloud Services access token.\n\t */\n\tprivate readonly _token: InitializedToken;\n\n\t/**\n\t * CKEditor Cloud Services API address.\n\t */\n\tprivate readonly _apiAddress: string;\n\n\t/**\n\t * Creates `UploadGateway` instance.\n\t *\n\t * @param token Token used for authentication.\n\t * @param apiAddress API address.\n\t */\n\tconstructor( token: InitializedToken, apiAddress: string ) {\n\t\tif ( !token ) {\n\t\t\t/**\n\t\t\t * Token must be provided.\n\t\t\t *\n\t\t\t * @error uploadgateway-missing-token\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'uploadgateway-missing-token', null );\n\t\t}\n\n\t\tif ( !apiAddress ) {\n\t\t\t/**\n\t\t\t * Api address must be provided.\n\t\t\t *\n\t\t\t * @error uploadgateway-missing-api-address\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'uploadgateway-missing-api-address', null );\n\t\t}\n\n\t\tthis._token = token;\n\t\tthis._apiAddress = apiAddress;\n\t}\n\n\t/**\n\t * Creates a {@link module:cloud-services/uploadgateway/fileuploader~FileUploader} instance that wraps\n\t * file upload process. The file is being sent at a time when the\n\t * {@link module:cloud-services/uploadgateway/fileuploader~FileUploader#send} method is called.\n\t *\n\t * ```ts\n\t * const token = await Token.create( 'https://token-endpoint' );\n\t * new UploadGateway( token, 'https://example.org' )\n\t * \t.upload( 'FILE' )\n\t * \t.onProgress( ( data ) => console.log( data ) )\n\t * \t.send()\n\t * \t.then( ( response ) => console.log( response ) );\n\t * ```\n\t *\n\t * @param {Blob|String} fileOrData A blob object or a data string encoded with Base64.\n\t * @returns {module:cloud-services/uploadgateway/fileuploader~FileUploader} Returns `FileUploader` instance.\n\t */\n\tpublic upload( fileOrData: string | Blob ): FileUploader {\n\t\treturn new FileUploader( fileOrData, this._token, this._apiAddress );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module cloud-services/cloudservicescore\n */\n\nimport { ContextPlugin } from 'ckeditor5/src/core';\nimport type { TokenUrl } from './cloudservicesconfig';\nimport Token, { type InitializedToken, type TokenOptions } from './token/token';\nimport UploadGateway from './uploadgateway/uploadgateway';\n\n/**\n * The `CloudServicesCore` plugin exposes the base API for communication with CKEditor Cloud Services.\n */\nexport default class CloudServicesCore extends ContextPlugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'CloudServicesCore' as const;\n\t}\n\n\t/**\n\t * Creates the {@link module:cloud-services/token/token~Token} instance.\n\t *\n\t * @param tokenUrlOrRefreshToken Endpoint address to download the token or a callback that provides the token. If the\n\t * value is a function it has to match the {@link module:cloud-services/token/token~Token#refreshToken} interface.\n\t * @param options.initValue Initial value of the token.\n\t * @param options.autoRefresh Specifies whether to start the refresh automatically.\n\t */\n\tpublic createToken( tokenUrlOrRefreshToken: TokenUrl, options?: TokenOptions ): Token {\n\t\treturn new Token( tokenUrlOrRefreshToken, options );\n\t}\n\n\t/**\n\t * Creates the {@link module:cloud-services/uploadgateway/uploadgateway~UploadGateway} instance.\n\t *\n\t * @param token Token used for authentication.\n\t * @param apiAddress API address.\n\t */\n\tpublic createUploadGateway( token: InitializedToken, apiAddress: string ): UploadGateway {\n\t\treturn new UploadGateway( token, apiAddress );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module html-embed/htmlembedcommand\n */\n\nimport type { DocumentSelection, Element, Model, Schema, Selection } from 'ckeditor5/src/engine';\nimport { Command } from 'ckeditor5/src/core';\nimport { findOptimalInsertionRange } from 'ckeditor5/src/widget';\n\n/**\n * The insert HTML embed element command.\n *\n * The command is registered by {@link module:html-embed/htmlembedediting~HtmlEmbedEditing} as `'htmlEmbed'`.\n *\n * To insert an empty HTML embed element at the current selection, execute the command:\n *\n * ```ts\n * editor.execute( 'htmlEmbed' );\n * ```\n *\n * You can specify the initial content of a new HTML embed in the argument:\n *\n * ```ts\n * editor.execute( 'htmlEmbed', '<b>Initial content.</b>' );\n * ```\n *\n * To update the content of the HTML embed, select it in the model and pass the content in the argument:\n *\n * ```ts\n * editor.execute( 'htmlEmbed', '<b>New content of an existing embed.</b>' );\n * ```\n */\nexport default class HtmlEmbedCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst selection = model.document.selection;\n\t\tconst selectedRawHtmlElement = getSelectedRawHtmlModelWidget( selection );\n\n\t\tthis.isEnabled = isHtmlEmbedAllowedInParent( selection, schema, model );\n\t\tthis.value = selectedRawHtmlElement ? selectedRawHtmlElement.getAttribute( 'value' ) || '' : null;\n\t}\n\n\t/**\n\t * Executes the command, which either:\n\t *\n\t * * creates and inserts a new HTML embed element if none was selected,\n\t * * updates the content of the HTML embed if one was selected.\n\t *\n\t * @fires execute\n\t * @param value When passed, the value (content) will be set on a new embed or a selected one.\n\t */\n\tpublic override execute( value?: string ): void {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\n\t\tmodel.change( writer => {\n\t\t\tlet htmlEmbedElement;\n\n\t\t\t// If the command has a non-null value, there must be some HTML embed selected in the model.\n\t\t\tif ( this.value !== null ) {\n\t\t\t\thtmlEmbedElement = getSelectedRawHtmlModelWidget( selection );\n\t\t\t} else {\n\t\t\t\thtmlEmbedElement = writer.createElement( 'rawHtml' );\n\n\t\t\t\tmodel.insertObject( htmlEmbedElement, null, null, { setSelection: 'on' } );\n\t\t\t}\n\n\t\t\twriter.setAttribute( 'value', value, htmlEmbedElement! );\n\t\t} );\n\t}\n}\n\n/**\n * Checks if an HTML embed is allowed by the schema in the optimal insertion parent.\n */\nfunction isHtmlEmbedAllowedInParent( selection: DocumentSelection, schema: Schema, model: Model ): boolean {\n\tconst parent = getInsertHtmlEmbedParent( selection, model );\n\n\treturn schema.checkChild( parent, 'rawHtml' );\n}\n\n/**\n * Returns a node that will be used to insert a html embed with `model.insertContent` to check if a html embed element can be placed there.\n */\nfunction getInsertHtmlEmbedParent( selection: Selection | DocumentSelection, model: Model ): Element {\n\tconst insertionRange = findOptimalInsertionRange( selection, model );\n\tconst parent = insertionRange.start.parent as Element;\n\n\tif ( parent.isEmpty && !parent.is( 'rootElement' ) ) {\n\t\treturn parent.parent as Element;\n\t}\n\n\treturn parent;\n}\n\n/**\n * Returns the selected HTML embed element in the model, if any.\n */\nfunction getSelectedRawHtmlModelWidget( selection: DocumentSelection ): Element | null {\n\tconst selectedElement = selection.getSelectedElement();\n\n\tif ( selectedElement && selectedElement.is( 'element', 'rawHtml' ) ) {\n\t\treturn selectedElement;\n\t}\n\n\treturn null;\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./htmlembed.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module html-embed/htmlembedediting\n */\n\nimport { Plugin, icons, type Editor } from 'ckeditor5/src/core';\nimport { ButtonView } from 'ckeditor5/src/ui';\nimport { toWidget } from 'ckeditor5/src/widget';\nimport { logWarning, createElement } from 'ckeditor5/src/utils';\n\nimport type { HtmlEmbedConfig } from './htmlembedconfig';\nimport HtmlEmbedCommand from './htmlembedcommand';\n\nimport '../theme/htmlembed.css';\n\n/**\n * The HTML embed editing feature.\n */\nexport default class HtmlEmbedEditing extends Plugin {\n\t/**\n\t * Keeps references to {@link module:ui/button/buttonview~ButtonView edit, save, and cancel} button instances created for\n\t * each widget so they can be destroyed if they are no longer in DOM after the editing view was re-rendered.\n\t */\n\tprivate _widgetButtonViewReferences: Set<ButtonView> = new Set();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'HtmlEmbedEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'htmlEmbed', {\n\t\t\tshowPreviews: false,\n\t\t\tsanitizeHtml: rawHtml => {\n\t\t\t\t/**\n\t\t\t\t * When using the HTML embed feature with the `htmlEmbed.showPreviews=true` option, it is strongly recommended to\n\t\t\t\t * define a sanitize function that will clean up the input HTML in order to avoid XSS vulnerability.\n\t\t\t\t *\n\t\t\t\t * For a detailed overview, check the {@glink features/html/html-embed HTML embed feature} documentation.\n\t\t\t\t *\n\t\t\t\t * @error html-embed-provide-sanitize-function\n\t\t\t\t */\n\t\t\t\tlogWarning( 'html-embed-provide-sanitize-function' );\n\n\t\t\t\treturn {\n\t\t\t\t\thtml: rawHtml,\n\t\t\t\t\thasChanged: false\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\tschema.register( 'rawHtml', {\n\t\t\tinheritAllFrom: '$blockObject',\n\t\t\tallowAttributes: [ 'value' ]\n\t\t} );\n\n\t\teditor.commands.add( 'htmlEmbed', new HtmlEmbedCommand( editor ) );\n\n\t\tthis._setupConversion();\n\t}\n\n\t/**\n\t * Prepares converters for the feature.\n\t */\n\tprivate _setupConversion() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst view = editor.editing.view;\n\t\tconst widgetButtonViewReferences = this._widgetButtonViewReferences;\n\t\tconst htmlEmbedConfig: HtmlEmbedConfig = editor.config.get( 'htmlEmbed' )!;\n\n\t\t// Destroy UI buttons created for widgets that have been removed from the view document (e.g. in the previous conversion).\n\t\t// This prevents unexpected memory leaks from UI views.\n\t\tthis.editor.editing.view.on( 'render', () => {\n\t\t\tfor ( const buttonView of widgetButtonViewReferences ) {\n\t\t\t\tif ( buttonView.element && buttonView.element.isConnected ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tbuttonView.destroy();\n\t\t\t\twidgetButtonViewReferences.delete( buttonView );\n\t\t\t}\n\t\t}, { priority: 'lowest' } );\n\n\t\t// Register div.raw-html-embed as a raw content element so all of it's content will be provided\n\t\t// as a view element's custom property while data upcasting.\n\t\teditor.data.registerRawContentMatcher( {\n\t\t\tname: 'div',\n\t\t\tclasses: 'raw-html-embed'\n\t\t} );\n\n\t\teditor.conversion.for( 'upcast' ).elementToElement( {\n\t\t\tview: {\n\t\t\t\tname: 'div',\n\t\t\t\tclasses: 'raw-html-embed'\n\t\t\t},\n\t\t\tmodel: ( viewElement, { writer } ) => {\n\t\t\t\t// The div.raw-html-embed is registered as a raw content element,\n\t\t\t\t// so all it's content is available in a custom property.\n\t\t\t\treturn writer.createElement( 'rawHtml', {\n\t\t\t\t\tvalue: viewElement.getCustomProperty( '$rawContent' )\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\teditor.conversion.for( 'dataDowncast' ).elementToElement( {\n\t\t\tmodel: 'rawHtml',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\treturn writer.createRawElement( 'div', { class: 'raw-html-embed' }, function( domElement ) {\n\t\t\t\t\tdomElement.innerHTML = modelElement.getAttribute( 'value' ) as string || '';\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\teditor.conversion.for( 'editingDowncast' ).elementToStructure( {\n\t\t\tmodel: { name: 'rawHtml', attributes: [ 'value' ] },\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tlet domContentWrapper: HTMLElement;\n\t\t\t\tlet state: State;\n\t\t\t\tlet props: Props;\n\n\t\t\t\tconst viewContentWrapper = writer.createRawElement( 'div', {\n\t\t\t\t\tclass: 'raw-html-embed__content-wrapper'\n\t\t\t\t}, function( domElement ) {\n\t\t\t\t\tdomContentWrapper = domElement;\n\n\t\t\t\t\trenderContent( { editor, domElement, state, props } );\n\n\t\t\t\t\t// Since there is a `data-cke-ignore-events` attribute set on the wrapper element in the editable mode,\n\t\t\t\t\t// the explicit `mousedown` handler on the `capture` phase is needed to move the selection onto the whole\n\t\t\t\t\t// HTML embed widget.\n\t\t\t\t\tdomContentWrapper.addEventListener( 'mousedown', () => {\n\t\t\t\t\t\tif ( state.isEditable ) {\n\t\t\t\t\t\t\tconst model = editor.model;\n\t\t\t\t\t\t\tconst selectedElement = model.document.selection.getSelectedElement();\n\n\t\t\t\t\t\t\t// Move the selection onto the whole HTML embed widget if it's currently not selected.\n\t\t\t\t\t\t\tif ( selectedElement !== modelElement ) {\n\t\t\t\t\t\t\t\tmodel.change( writer => writer.setSelection( modelElement, 'on' ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, true );\n\t\t\t\t} );\n\n\t\t\t\t// API exposed on each raw HTML embed widget so other features can control a particular widget.\n\t\t\t\tconst rawHtmlApi: RawHtmlApi = {\n\t\t\t\t\tmakeEditable() {\n\t\t\t\t\t\tstate = Object.assign( {}, state, {\n\t\t\t\t\t\t\tisEditable: true\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\trenderContent( { domElement: domContentWrapper, editor, state, props } );\n\n\t\t\t\t\t\tview.change( writer => {\n\t\t\t\t\t\t\twriter.setAttribute( 'data-cke-ignore-events', 'true', viewContentWrapper );\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t// This could be potentially pulled to a separate method called focusTextarea().\n\t\t\t\t\t\tdomContentWrapper.querySelector( 'textarea' )!.focus();\n\t\t\t\t\t},\n\t\t\t\t\tsave( newValue: string ) {\n\t\t\t\t\t\t// If the value didn't change, we just cancel. If it changed,\n\t\t\t\t\t\t// it's enough to update the model – the entire widget will be reconverted.\n\t\t\t\t\t\tif ( newValue !== state.getRawHtmlValue() ) {\n\t\t\t\t\t\t\teditor.execute( 'htmlEmbed', newValue );\n\t\t\t\t\t\t\teditor.editing.view.focus();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.cancel();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tcancel() {\n\t\t\t\t\t\tstate = Object.assign( {}, state, {\n\t\t\t\t\t\t\tisEditable: false\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\trenderContent( { domElement: domContentWrapper, editor, state, props } );\n\t\t\t\t\t\teditor.editing.view.focus();\n\n\t\t\t\t\t\tview.change( writer => {\n\t\t\t\t\t\t\twriter.removeAttribute( 'data-cke-ignore-events', viewContentWrapper );\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tstate = {\n\t\t\t\t\tshowPreviews: htmlEmbedConfig.showPreviews,\n\t\t\t\t\tisEditable: false,\n\t\t\t\t\tgetRawHtmlValue: () => modelElement.getAttribute( 'value' ) as string || ''\n\t\t\t\t};\n\n\t\t\t\tprops = {\n\t\t\t\t\tsanitizeHtml: htmlEmbedConfig.sanitizeHtml,\n\t\t\t\t\ttextareaPlaceholder: t( 'Paste raw HTML here...' ),\n\n\t\t\t\t\tonEditClick() {\n\t\t\t\t\t\trawHtmlApi.makeEditable();\n\t\t\t\t\t},\n\t\t\t\t\tonSaveClick( newValue ) {\n\t\t\t\t\t\trawHtmlApi.save( newValue );\n\t\t\t\t\t},\n\t\t\t\t\tonCancelClick() {\n\t\t\t\t\t\trawHtmlApi.cancel();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tconst viewContainer = writer.createContainerElement( 'div', {\n\t\t\t\t\tclass: 'raw-html-embed',\n\t\t\t\t\t'data-html-embed-label': t( 'HTML snippet' ),\n\t\t\t\t\tdir: editor.locale.uiLanguageDirection\n\t\t\t\t}, viewContentWrapper );\n\n\t\t\t\twriter.setCustomProperty( 'rawHtmlApi', rawHtmlApi, viewContainer );\n\t\t\t\twriter.setCustomProperty( 'rawHtml', true, viewContainer );\n\n\t\t\t\treturn toWidget( viewContainer, writer, {\n\t\t\t\t\tlabel: t( 'HTML snippet' ),\n\t\t\t\t\thasSelectionHandle: true\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tfunction renderContent( {\n\t\t\teditor,\n\t\t\tdomElement,\n\t\t\tstate,\n\t\t\tprops\n\t\t}: {\n\t\t\teditor: Editor;\n\t\t\tdomElement: HTMLElement;\n\t\t\tstate: State;\n\t\t\tprops: Props;\n\t\t} ) {\n\t\t\t// Remove all children;\n\t\t\tdomElement.textContent = '';\n\n\t\t\tconst domDocument = domElement.ownerDocument;\n\t\t\tlet domTextarea: HTMLTextAreaElement;\n\n\t\t\tif ( state.isEditable ) {\n\t\t\t\tconst textareaProps = {\n\t\t\t\t\tisDisabled: false,\n\t\t\t\t\tplaceholder: props.textareaPlaceholder\n\t\t\t\t};\n\n\t\t\t\tdomTextarea = createDomTextarea( { domDocument, state, props: textareaProps } );\n\n\t\t\t\tdomElement.append( domTextarea );\n\t\t\t} else if ( state.showPreviews ) {\n\t\t\t\tconst previewContainerProps = {\n\t\t\t\t\tsanitizeHtml: props.sanitizeHtml\n\t\t\t\t};\n\n\t\t\t\tdomElement.append( createPreviewContainer( { domDocument, state, props: previewContainerProps, editor } ) );\n\t\t\t} else {\n\t\t\t\tconst textareaProps = {\n\t\t\t\t\tisDisabled: true,\n\t\t\t\t\tplaceholder: props.textareaPlaceholder\n\t\t\t\t};\n\n\t\t\t\tdomElement.append( createDomTextarea( { domDocument, state, props: textareaProps } ) );\n\t\t\t}\n\n\t\t\tconst buttonsWrapperProps = {\n\t\t\t\tonEditClick: props.onEditClick,\n\t\t\t\tonSaveClick: () => {\n\t\t\t\t\tprops.onSaveClick( domTextarea.value );\n\t\t\t\t},\n\t\t\t\tonCancelClick: props.onCancelClick\n\t\t\t};\n\n\t\t\tdomElement.prepend( createDomButtonsWrapper( { editor, domDocument, state, props: buttonsWrapperProps } ) );\n\t\t}\n\n\t\tfunction createDomButtonsWrapper( {\n\t\t\teditor,\n\t\t\tdomDocument,\n\t\t\tstate,\n\t\t\tprops\n\t\t}: {\n\t\t\teditor: Editor;\n\t\t\tdomDocument: Document;\n\t\t\tstate: State;\n\t\t\tprops: Pick<Props, 'onEditClick' | 'onCancelClick'> & {\n\t\t\t\tonSaveClick(): void;\n\t\t\t};\n\t\t} ): HTMLDivElement {\n\t\t\tconst domButtonsWrapper = createElement( domDocument, 'div', {\n\t\t\t\tclass: 'raw-html-embed__buttons-wrapper'\n\t\t\t} );\n\n\t\t\tif ( state.isEditable ) {\n\t\t\t\tconst saveButtonView = createUIButton( editor, 'save', props.onSaveClick );\n\t\t\t\tconst cancelButtonView = createUIButton( editor, 'cancel', props.onCancelClick );\n\n\t\t\t\tdomButtonsWrapper.append( saveButtonView.element!, cancelButtonView.element! );\n\t\t\t\twidgetButtonViewReferences.add( saveButtonView ).add( cancelButtonView );\n\t\t\t} else {\n\t\t\t\tconst editButtonView = createUIButton( editor, 'edit', props.onEditClick );\n\n\t\t\t\tdomButtonsWrapper.append( editButtonView.element! );\n\t\t\t\twidgetButtonViewReferences.add( editButtonView );\n\t\t\t}\n\n\t\t\treturn domButtonsWrapper;\n\t\t}\n\n\t\tfunction createDomTextarea( {\n\t\t\tdomDocument,\n\t\t\tstate,\n\t\t\tprops\n\t\t}: {\n\t\t\t\tdomDocument: Document;\n\t\t\t\tstate: State;\n\t\t\t\tprops: {\n\t\t\t\t\tisDisabled: boolean;\n\t\t\t\t\tplaceholder: string;\n\t\t\t\t};\n\t\t\t} ): HTMLTextAreaElement {\n\t\t\tconst domTextarea = createElement( domDocument, 'textarea', {\n\t\t\t\tplaceholder: props.placeholder,\n\t\t\t\tclass: 'ck ck-reset ck-input ck-input-text raw-html-embed__source'\n\t\t\t} );\n\n\t\t\tdomTextarea.disabled = props.isDisabled;\n\t\t\tdomTextarea.value = state.getRawHtmlValue();\n\n\t\t\treturn domTextarea;\n\t\t}\n\n\t\tfunction createPreviewContainer( {\n\t\t\teditor,\n\t\t\tdomDocument,\n\t\t\tstate,\n\t\t\tprops\n\t\t}: {\n\t\t\teditor: Editor;\n\t\t\tdomDocument: Document;\n\t\t\tstate: State;\n\t\t\tprops: {\n\t\t\t\tsanitizeHtml: HtmlEmbedConfig['sanitizeHtml'];\n\t\t\t};\n\t\t} ): HTMLDivElement {\n\t\t\tconst sanitizedOutput = props.sanitizeHtml!( state.getRawHtmlValue() );\n\t\t\tconst placeholderText = state.getRawHtmlValue().length > 0 ?\n\t\t\t\tt( 'No preview available' ) :\n\t\t\t\tt( 'Empty snippet content' );\n\n\t\t\tconst domPreviewPlaceholder = createElement( domDocument, 'div', {\n\t\t\t\tclass: 'ck ck-reset_all raw-html-embed__preview-placeholder'\n\t\t\t}, placeholderText );\n\n\t\t\tconst domPreviewContent = createElement( domDocument, 'div', {\n\t\t\t\tclass: 'raw-html-embed__preview-content',\n\t\t\t\tdir: editor.locale.contentLanguageDirection\n\t\t\t} );\n\n\t\t\t// Creating a contextual document fragment allows executing scripts when inserting into the preview element.\n\t\t\t// See: #8326.\n\t\t\tconst domRange = domDocument.createRange();\n\t\t\tconst domDocumentFragment = domRange.createContextualFragment( sanitizedOutput.html );\n\n\t\t\tdomPreviewContent.appendChild( domDocumentFragment );\n\n\t\t\tconst domPreviewContainer = createElement( domDocument, 'div', {\n\t\t\t\tclass: 'raw-html-embed__preview'\n\t\t\t}, [\n\t\t\t\tdomPreviewPlaceholder, domPreviewContent\n\t\t\t] );\n\n\t\t\treturn domPreviewContainer;\n\t\t}\n\t}\n}\n\n/**\n * Returns a UI button view that can be used in conversion.\n */\nfunction createUIButton( editor: Editor, type: 'edit' | 'save' | 'cancel', onClick: () => void ): ButtonView {\n\tconst { t } = editor.locale;\n\tconst buttonView = new ButtonView( editor.locale );\n\tconst command: HtmlEmbedCommand = editor.commands.get( 'htmlEmbed' )!;\n\n\tbuttonView.set( {\n\t\tclass: `raw-html-embed__${ type }-button`,\n\t\ticon: icons.pencil,\n\t\ttooltip: true,\n\t\ttooltipPosition: editor.locale.uiLanguageDirection === 'rtl' ? 'e' : 'w'\n\t} );\n\n\tbuttonView.render();\n\n\tif ( type === 'edit' ) {\n\t\tbuttonView.set( {\n\t\t\ticon: icons.pencil,\n\t\t\tlabel: t( 'Edit source' )\n\t\t} );\n\n\t\tbuttonView.bind( 'isEnabled' ).to( command );\n\t} else if ( type === 'save' ) {\n\t\tbuttonView.set( {\n\t\t\ticon: icons.check,\n\t\t\tlabel: t( 'Save changes' )\n\t\t} );\n\n\t\tbuttonView.bind( 'isEnabled' ).to( command );\n\t} else {\n\t\tbuttonView.set( {\n\t\t\ticon: icons.cancel,\n\t\t\tlabel: t( 'Cancel' )\n\t\t} );\n\t}\n\n\tbuttonView.on( 'execute', onClick );\n\n\treturn buttonView;\n}\n\ninterface State {\n\tshowPreviews: HtmlEmbedConfig['showPreviews'];\n\tisEditable: boolean;\n\tgetRawHtmlValue(): string;\n}\n\ninterface Props {\n\tsanitizeHtml: HtmlEmbedConfig['sanitizeHtml'];\n\ttextareaPlaceholder: string;\n\tonEditClick(): void;\n\tonSaveClick( newValue: string ): void;\n\tonCancelClick(): void;\n}\n\nexport interface RawHtmlApi {\n\tmakeEditable(): void;\n\tsave( newValue: string ): void;\n\tcancel(): void;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module html-embed/htmlembedui\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { ButtonView } from 'ckeditor5/src/ui';\nimport type { RawHtmlApi } from './htmlembedediting';\nimport type HtmlEmbedCommand from './htmlembedcommand';\n\nimport htmlEmbedIcon from '../theme/icons/html.svg';\n\n/**\n * The HTML embed UI plugin.\n */\nexport default class HtmlEmbedUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'HtmlEmbedUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\t// Add the `htmlEmbed` button to feature components.\n\t\teditor.ui.componentFactory.add( 'htmlEmbed', locale => {\n\t\t\tconst command: HtmlEmbedCommand = editor.commands.get( 'htmlEmbed' )!;\n\t\t\tconst view = new ButtonView( locale );\n\n\t\t\tview.set( {\n\t\t\t\tlabel: t( 'Insert HTML' ),\n\t\t\t\ticon: htmlEmbedIcon,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tview.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\n\t\t\t// Execute the command.\n\t\t\tthis.listenTo( view, 'execute', () => {\n\t\t\t\teditor.execute( 'htmlEmbed' );\n\t\t\t\teditor.editing.view.focus();\n\n\t\t\t\tconst rawHtmlApi = editor.editing.view.document.selection\n\t\t\t\t\t.getSelectedElement()!\n\t\t\t\t\t.getCustomProperty( 'rawHtmlApi' ) as RawHtmlApi;\n\n\t\t\t\trawHtmlApi.makeEditable();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\t}\n}\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M17 0a2 2 0 0 1 2 2v7a1 1 0 0 1 1 1v5a1 1 0 0 1-.883.993l-.118.006L19 17a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2l-.001-1.001-.116-.006A1 1 0 0 1 0 15v-5a1 1 0 0 1 .999-1L1 2a2 2 0 0 1 2-2h14zm.499 15.999h-15L2.5 17a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5l-.001-1.001zm-3.478-6.013-.014.014H14v.007l-1.525 1.525-1.46-1.46-.015.013V10h-1v5h1v-3.53l1.428 1.43.048.043.131-.129L14 11.421V15h1v-5h-.965l-.014-.014zM2 10H1v5h1v-2h2v2h1v-5H4v2H2v-2zm7 0H6v1h1v4h1v-4h1v-1zm8 0h-1v5h3v-1h-2v-4zm0-8.5H3a.5.5 0 0 0-.5.5l-.001 6.999h15L17.5 2a.5.5 0 0 0-.5-.5zM10 7v1H4V7h6zm3-2v1H4V5h9zm-3-2v1H4V3h6z\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module mention/mentioncommand\n */\n\nimport { Command, type Editor } from 'ckeditor5/src/core';\nimport type { Range } from 'ckeditor5/src/engine';\nimport { CKEditorError, toMap } from 'ckeditor5/src/utils';\n\nimport { _addMentionAttributes } from './mentionediting';\nimport type { MentionAttribute } from './mention';\n\n/**\n * The mention command.\n *\n * The command is registered by {@link module:mention/mentionediting~MentionEditing} as `'mention'`.\n *\n * To insert a mention into a range, execute the command and specify a mention object with a range to replace:\n *\n * ```ts\n * const focus = editor.model.document.selection.focus;\n *\n * // It will replace one character before the selection focus with the '#1234' text\n * // with the mention attribute filled with passed attributes.\n * editor.execute( 'mention', {\n * \tmarker: '#',\n * \tmention: {\n * \t\tid: '#1234',\n * \t\tname: 'Foo',\n * \t\ttitle: 'Big Foo'\n * \t},\n * \trange: editor.model.createRange( focus.getShiftedBy( -1 ), focus )\n * } );\n *\n * // It will replace one character before the selection focus with the 'The \"Big Foo\"' text\n * // with the mention attribute filled with passed attributes.\n * editor.execute( 'mention', {\n * \tmarker: '#',\n * \tmention: {\n * \t\tid: '#1234',\n * \t\tname: 'Foo',\n * \t\ttitle: 'Big Foo'\n * \t},\n * \ttext: 'The \"Big Foo\"',\n * \trange: editor.model.createRange( focus.getShiftedBy( -1 ), focus )\n * } );\n *\t```\n */\nexport default class MentionCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic constructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\t// Since this command may pass range in execution parameters, it should be checked directly in execute block.\n\t\tthis._isEnabledBasedOnSelection = false;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\n\t\tthis.isEnabled = model.schema.checkAttributeInSelection( doc.selection, 'mention' );\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @param options Options for the executed command.\n\t * @param options.mention The mention object to insert. When a string is passed, it will be used to create a plain\n\t * object with the name attribute that equals the passed string.\n\t * @param options.marker The marker character (e.g. `'@'`).\n\t * @param options.text The text of the inserted mention. Defaults to the full mention string composed from `marker` and\n\t * `mention` string or `mention.id` if an object is passed.\n\t * @param options.range The range to replace.\n\t * Note that the replaced range might be shorter than the inserted text with the mention attribute.\n\t * @fires execute\n\t */\n\tpublic override execute( options: { mention: string | MentionAttribute; marker: string; text?: string; range?: Range } ): void {\n\t\tconst model = this.editor.model;\n\t\tconst document = model.document;\n\t\tconst selection = document.selection;\n\n\t\tconst mentionData = typeof options.mention == 'string' ? { id: options.mention } : options.mention;\n\t\tconst mentionID = mentionData.id;\n\n\t\tconst range = options.range || selection.getFirstRange();\n\n\t\t// Don't execute command if range is in non-editable place.\n\t\tif ( !model.canEditAt( range ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst mentionText = options.text || mentionID;\n\n\t\tconst mention = _addMentionAttributes( { _text: mentionText, id: mentionID }, mentionData );\n\n\t\tif ( options.marker.length != 1 ) {\n\t\t\t/**\n\t\t\t * The marker must be a single character.\n\t\t\t *\n\t\t\t * Correct markers: `'@'`, `'#'`.\n\t\t\t *\n\t\t\t * Incorrect markers: `'@@'`, `'[@'`.\n\t\t\t *\n\t\t\t * See {@link module:mention/mentionconfig~MentionConfig}.\n\t\t\t *\n\t\t\t * @error mentioncommand-incorrect-marker\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'mentioncommand-incorrect-marker',\n\t\t\t\tthis\n\t\t\t);\n\t\t}\n\n\t\tif ( mentionID.charAt( 0 ) != options.marker ) {\n\t\t\t/**\n\t\t\t * The feed item ID must start with the marker character.\n\t\t\t *\n\t\t\t * Correct mention feed setting:\n\t\t\t *\n\t\t\t * ```ts\n\t\t\t * mentions: [\n\t\t\t * \t{\n\t\t\t * \t\tmarker: '@',\n\t\t\t * \t\tfeed: [ '@Ann', '@Barney', ... ]\n\t\t\t * \t}\n\t\t\t * ]\n\t\t\t * ```\n\t\t\t *\n\t\t\t * Incorrect mention feed setting:\n\t\t\t *\n\t\t\t * ```ts\n\t\t\t * mentions: [\n\t\t\t * \t{\n\t\t\t * \t\tmarker: '@',\n\t\t\t * \t\tfeed: [ 'Ann', 'Barney', ... ]\n\t\t\t * \t}\n\t\t\t * ]\n\t\t\t * ```\n\t\t\t *\n\t\t\t * See {@link module:mention/mentionconfig~MentionConfig}.\n\t\t\t *\n\t\t\t * @error mentioncommand-incorrect-id\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'mentioncommand-incorrect-id',\n\t\t\t\tthis\n\t\t\t);\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\tconst currentAttributes = toMap( selection.getAttributes() );\n\t\t\tconst attributesWithMention = new Map( currentAttributes.entries() );\n\n\t\t\tattributesWithMention.set( 'mention', mention );\n\n\t\t\t// Replace a range with the text with a mention.\n\t\t\tmodel.insertContent( writer.createText( mentionText, attributesWithMention ), range );\n\t\t\tmodel.insertContent( writer.createText( ' ', currentAttributes ), range!.start.getShiftedBy( mentionText.length ) );\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module mention/mentionediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport type {\n\tElement,\n\tText,\n\tWriter,\n\tDocument,\n\tAttributeElement,\n\tDowncastConversionApi,\n\tDowncastDispatcher,\n\tPosition,\n\tSchema,\n\tDowncastAttributeEvent,\n\tItem\n} from 'ckeditor5/src/engine';\nimport { uid } from 'ckeditor5/src/utils';\n\nimport MentionCommand from './mentioncommand';\nimport type { MentionAttribute } from './mention';\n\n/**\n * The mention editing feature.\n *\n * It introduces the {@link module:mention/mentioncommand~MentionCommand command} and the `mention`\n * attribute in the {@link module:engine/model/model~Model model} which renders in the {@link module:engine/view/view view}\n * as a `<span class=\"mention\" data-mention=\"@mention\">`.\n */\nexport default class MentionEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'MentionEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst doc = model.document;\n\n\t\t// Allow the mention attribute on all text nodes.\n\t\tmodel.schema.extend( '$text', { allowAttributes: 'mention' } );\n\n\t\t// Upcast conversion.\n\t\teditor.conversion.for( 'upcast' ).elementToAttribute( {\n\t\t\tview: {\n\t\t\t\tname: 'span',\n\t\t\t\tkey: 'data-mention',\n\t\t\t\tclasses: 'mention'\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: 'mention',\n\t\t\t\tvalue: ( viewElement: Element ) => _toMentionAttribute( viewElement )\n\t\t\t}\n\t\t} );\n\n\t\t// Downcast conversion.\n\t\teditor.conversion.for( 'downcast' ).attributeToElement( {\n\t\t\tmodel: 'mention',\n\t\t\tview: createViewMentionElement\n\t\t} );\n\t\teditor.conversion.for( 'downcast' ).add( preventPartialMentionDowncast );\n\n\t\tdoc.registerPostFixer( writer => removePartialMentionPostFixer( writer, doc, model.schema ) );\n\t\tdoc.registerPostFixer( writer => extendAttributeOnMentionPostFixer( writer, doc ) );\n\t\tdoc.registerPostFixer( writer => selectionMentionAttributePostFixer( writer, doc ) );\n\n\t\teditor.commands.add( 'mention', new MentionCommand( editor ) );\n\t}\n}\n\n/**\n * @internal\n */\nexport function _addMentionAttributes(\n\tbaseMentionData: MentionAttribute,\n\tdata?: MentionAttribute\n): MentionAttribute {\n\treturn Object.assign( { uid: uid() }, baseMentionData, data || {} );\n}\n\n/**\n * Creates a mention attribute value from the provided view element and optional data.\n *\n * This function is exposed as\n * {@link module:mention/mention~Mention#toMentionAttribute `editor.plugins.get( 'Mention' ).toMentionAttribute()`}.\n *\n * @internal\n */\nexport function _toMentionAttribute(\n\tviewElementOrMention: Element,\n\tdata?: MentionAttribute\n): MentionAttribute | undefined {\n\tconst dataMention = viewElementOrMention.getAttribute( 'data-mention' ) as string;\n\n\tconst textNode = viewElementOrMention.getChild( 0 ) as Text;\n\n\t// Do not convert empty mentions.\n\tif ( !textNode ) {\n\t\treturn;\n\t}\n\n\tconst baseMentionData = {\n\t\tid: dataMention,\n\t\t_text: textNode.data\n\t};\n\n\treturn _addMentionAttributes( baseMentionData, data );\n}\n\n/**\n * A converter that blocks partial mention from being converted.\n *\n * This converter is registered with 'highest' priority in order to consume mention attribute before it is converted by\n * any other converters. This converter only consumes partial mention - those whose `_text` attribute is not equal to text with mention\n * attribute. This may happen when copying part of mention text.\n */\nfunction preventPartialMentionDowncast( dispatcher: DowncastDispatcher ) {\n\tdispatcher.on<DowncastAttributeEvent>( 'attribute:mention', ( evt, data, conversionApi ) => {\n\t\tconst mention = data.attributeNewValue as MentionAttribute;\n\n\t\tif ( !data.item.is( '$textProxy' ) || !mention ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst start = data.range.start;\n\t\tconst textNode = start.textNode || start.nodeAfter as Text;\n\n\t\tif ( textNode!.data != mention._text ) {\n\t\t\t// Consume item to prevent partial mention conversion.\n\t\t\tconversionApi.consumable.consume( data.item, evt.name );\n\t\t}\n\t}, { priority: 'highest' } );\n}\n\n/**\n * Creates a mention element from the mention data.\n */\nfunction createViewMentionElement( mention: MentionAttribute, { writer }: DowncastConversionApi ): AttributeElement | undefined {\n\tif ( !mention ) {\n\t\treturn;\n\t}\n\n\tconst attributes = {\n\t\tclass: 'mention',\n\t\t'data-mention': mention.id\n\t};\n\n\tconst options = {\n\t\tid: mention.uid,\n\t\tpriority: 20\n\t};\n\n\treturn writer.createAttributeElement( 'span', attributes, options );\n}\n\n/**\n * Model post-fixer that disallows typing with selection when the selection is placed after the text node with the mention attribute or\n * before a text node with mention attribute.\n */\nfunction selectionMentionAttributePostFixer( writer: Writer, doc: Document ): boolean {\n\tconst selection = doc.selection;\n\tconst focus = selection.focus;\n\n\tif ( selection.isCollapsed && selection.hasAttribute( 'mention' ) && shouldNotTypeWithMentionAt( focus! ) ) {\n\t\twriter.removeSelectionAttribute( 'mention' );\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * Helper function to detect if mention attribute should be removed from selection.\n * This check makes only sense if the selection has mention attribute.\n *\n * The mention attribute should be removed from a selection when selection focus is placed:\n * a) after a text node\n * b) the position is at parents start - the selection will set attributes from node after.\n */\nfunction shouldNotTypeWithMentionAt( position: Position ): boolean {\n\tconst isAtStart = position.isAtStart;\n\tconst isAfterAMention = position.nodeBefore && position.nodeBefore.is( '$text' );\n\n\treturn isAfterAMention || isAtStart;\n}\n\n/**\n * Model post-fixer that removes the mention attribute from the modified text node.\n */\nfunction removePartialMentionPostFixer( writer: Writer, doc: Document, schema: Schema ): boolean {\n\tconst changes = doc.differ.getChanges();\n\n\tlet wasChanged = false;\n\n\tfor ( const change of changes ) {\n\t\tif ( change.type == 'attribute' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Checks the text node on the current position.\n\t\tconst position = change.position;\n\n\t\tif ( change.name == '$text' ) {\n\t\t\tconst nodeAfterInsertedTextNode = position.textNode && position.textNode.nextSibling;\n\n\t\t\t// Checks the text node where the change occurred.\n\t\t\twasChanged = checkAndFix( position.textNode, writer ) || wasChanged;\n\n\t\t\t// Occurs on paste inside a text node with mention.\n\t\t\twasChanged = checkAndFix( nodeAfterInsertedTextNode, writer ) || wasChanged;\n\t\t\twasChanged = checkAndFix( position.nodeBefore, writer ) || wasChanged;\n\t\t\twasChanged = checkAndFix( position.nodeAfter, writer ) || wasChanged;\n\t\t}\n\n\t\t// Checks text nodes in inserted elements (might occur when splitting a paragraph or pasting content inside text with mention).\n\t\tif ( change.name != '$text' && change.type == 'insert' ) {\n\t\t\tconst insertedNode = position.nodeAfter as Element;\n\n\t\t\tfor ( const item of writer.createRangeIn( insertedNode! ).getItems() ) {\n\t\t\t\twasChanged = checkAndFix( item, writer ) || wasChanged;\n\t\t\t}\n\t\t}\n\n\t\t// Inserted inline elements might break mention.\n\t\tif ( change.type == 'insert' && schema.isInline( change.name ) ) {\n\t\t\tconst nodeAfterInserted = position.nodeAfter && position.nodeAfter.nextSibling;\n\n\t\t\twasChanged = checkAndFix( position.nodeBefore, writer ) || wasChanged;\n\t\t\twasChanged = checkAndFix( nodeAfterInserted, writer ) || wasChanged;\n\t\t}\n\t}\n\n\treturn wasChanged;\n}\n\n/**\n * This post-fixer will extend the attribute applied on the part of the mention so the whole text node of the mention will have\n * the added attribute.\n */\nfunction extendAttributeOnMentionPostFixer( writer: Writer, doc: Document ): boolean {\n\tconst changes = doc.differ.getChanges();\n\n\tlet wasChanged = false;\n\n\tfor ( const change of changes ) {\n\t\tif ( change.type === 'attribute' && change.attributeKey != 'mention' ) {\n\t\t\t// Checks the node on the left side of the range...\n\t\t\tconst nodeBefore = change.range.start.nodeBefore;\n\t\t\t// ... and on the right side of the range.\n\t\t\tconst nodeAfter = change.range.end.nodeAfter;\n\n\t\t\tfor ( const node of [ nodeBefore, nodeAfter ] ) {\n\t\t\t\tif ( isBrokenMentionNode( node ) && node!.getAttribute( change.attributeKey ) != change.attributeNewValue ) {\n\t\t\t\t\twriter.setAttribute( change.attributeKey, change.attributeNewValue, node! );\n\n\t\t\t\t\twasChanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn wasChanged;\n}\n\n/**\n * Checks if a node has a correct mention attribute if present.\n * Returns `true` if the node is text and has a mention attribute whose text does not match the expected mention text.\n */\nfunction isBrokenMentionNode( node: Item | null ): boolean {\n\tif ( !node || !( node.is( '$text' ) || node.is( '$textProxy' ) ) || !node.hasAttribute( 'mention' ) ) {\n\t\treturn false;\n\t}\n\n\tconst text = node.data;\n\tconst mention = node.getAttribute( 'mention' ) as MentionAttribute;\n\n\tconst expectedText = mention._text;\n\n\treturn text != expectedText;\n}\n\n/**\n * Fixes a mention on a text node if it needs a fix.\n */\nfunction checkAndFix( textNode: Item | null, writer: Writer ): boolean {\n\tif ( isBrokenMentionNode( textNode ) ) {\n\t\twriter.removeAttribute( 'mention', textNode! );\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./mentionui.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module mention/ui/mentionsview\n */\n\nimport { ListView } from 'ckeditor5/src/ui';\nimport { Rect, type Locale } from 'ckeditor5/src/utils';\n\nimport type MentionListItemView from './mentionlistitemview';\n\nimport '../../theme/mentionui.css';\n\n/**\n * The mention ui view.\n */\nexport default class MentionsView extends ListView {\n\tpublic selected: MentionListItemView | undefined;\n\n\tpublic position: string | undefined;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( locale: Locale ) {\n\t\tsuper( locale );\n\n\t\tthis.extendTemplate( {\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck-mentions'\n\t\t\t\t],\n\n\t\t\t\ttabindex: '-1'\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * {@link #select Selects} the first item.\n\t */\n\tpublic selectFirst(): void {\n\t\tthis.select( 0 );\n\t}\n\n\t/**\n\t * Selects next item to the currently {@link #select selected}.\n\t *\n\t * If the last item is already selected, it will select the first item.\n\t */\n\tpublic selectNext(): void {\n\t\tconst item = this.selected;\n\t\tconst index = this.items.getIndex( item! );\n\n\t\tthis.select( index + 1 );\n\t}\n\n\t/**\n\t * Selects previous item to the currently {@link #select selected}.\n\t *\n\t * If the first item is already selected, it will select the last item.\n\t */\n\tpublic selectPrevious(): void {\n\t\tconst item = this.selected;\n\t\tconst index = this.items.getIndex( item! );\n\n\t\tthis.select( index - 1 );\n\t}\n\n\t/**\n\t * Marks item at a given index as selected.\n\t *\n\t * Handles selection cycling when passed index is out of bounds:\n\t * - if the index is lower than 0, it will select the last item,\n\t * - if the index is higher than the last item index, it will select the first item.\n\t *\n\t * @param index Index of an item to be marked as selected.\n\t */\n\tpublic select( index: number ): void {\n\t\tlet indexToGet = 0;\n\n\t\tif ( index > 0 && index < this.items.length ) {\n\t\t\tindexToGet = index;\n\t\t} else if ( index < 0 ) {\n\t\t\tindexToGet = this.items.length - 1;\n\t\t}\n\n\t\tconst item = this.items.get( indexToGet ) as MentionListItemView;\n\n\t\t// Return early if item is already selected.\n\t\tif ( this.selected === item ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove highlight of previously selected item.\n\t\tif ( this.selected ) {\n\t\t\tthis.selected.removeHighlight();\n\t\t}\n\n\t\titem.highlight();\n\t\tthis.selected = item;\n\n\t\t// Scroll the mentions view to the selected element.\n\t\tif ( !this._isItemVisibleInScrolledArea( item ) ) {\n\t\t\tthis.element!.scrollTop = item.element!.offsetTop;\n\t\t}\n\t}\n\n\t/**\n\t * Triggers the `execute` event on the {@link #select selected} item.\n\t */\n\tpublic executeSelected(): void {\n\t\tthis.selected!.fire( 'execute' );\n\t}\n\n\t/**\n\t * Checks if an item is visible in the scrollable area.\n\t *\n\t * The item is considered visible when:\n\t * - its top boundary is inside the scrollable rect\n\t * - its bottom boundary is inside the scrollable rect (the whole item must be visible)\n\t */\n\tprivate _isItemVisibleInScrolledArea( item: MentionListItemView ) {\n\t\treturn new Rect( this.element! ).contains( new Rect( item.element! ) );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module mention/ui/domwrapperview\n */\n\nimport { View, type Template } from 'ckeditor5/src/ui';\nimport type { Locale } from 'ckeditor5/src/utils';\n\n/**\n * This class wraps DOM element as a CKEditor5 UI View.\n *\n * It allows to render any DOM element and use it in mentions list.\n */\nexport default class DomWrapperView extends View {\n\t/**\n\t * The DOM element for which wrapper was created.\n\t */\n\tpublic domElement: HTMLElement;\n\n\t/**\n\t * Controls whether the dom wrapper view is \"on\". This is in line with {@link module:ui/button/button~Button#isOn} property.\n\t *\n\t * @observable\n\t * @default true\n\t */\n\tdeclare public isOn: boolean;\n\n\t/**\n\t * Creates an instance of {@link module:mention/ui/domwrapperview~DomWrapperView} class.\n\t *\n\t * Also see {@link #render}.\n\t */\n\tconstructor( locale: Locale, domElement: HTMLElement ) {\n\t\tsuper( locale );\n\n\t\t// Disable template rendering on this view.\n\t\tthis.template = undefined;\n\n\t\tthis.domElement = domElement;\n\n\t\t// Render dom wrapper as a button.\n\t\tthis.domElement.classList.add( 'ck-button' );\n\n\t\tthis.set( 'isOn', false );\n\n\t\t// Handle isOn state as in buttons.\n\t\tthis.on( 'change:isOn', ( evt, name, isOn ) => {\n\t\t\tif ( isOn ) {\n\t\t\t\tthis.domElement.classList.add( 'ck-on' );\n\t\t\t\tthis.domElement.classList.remove( 'ck-off' );\n\t\t\t} else {\n\t\t\t\tthis.domElement.classList.add( 'ck-off' );\n\t\t\t\tthis.domElement.classList.remove( 'ck-on' );\n\t\t\t}\n\t\t} );\n\n\t\t// Pass click event as execute event.\n\t\tthis.listenTo( this.domElement, 'click', () => {\n\t\t\tthis.fire( 'execute' );\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tthis.element = this.domElement;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module mention/ui/mentionlistitemview\n */\n\nimport { ListItemView } from 'ckeditor5/src/ui';\n\nimport type { MentionFeedItem } from '../mentionconfig';\n\nimport type DomWrapperView from './domwrapperview';\n\nexport default class MentionListItemView extends ListItemView {\n\tpublic item!: MentionFeedItem;\n\n\tpublic marker!: string;\n\n\tpublic highlight(): void {\n\t\tconst child = this.children.first as DomWrapperView;\n\n\t\tchild.isOn = true;\n\t}\n\n\tpublic removeHighlight(): void {\n\t\tconst child = this.children.first as DomWrapperView;\n\n\t\tchild.isOn = false;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module mention/mentionui\n */\n\nimport {\n\tPlugin,\n\ttype Editor\n} from 'ckeditor5/src/core';\n\nimport type {\n\tViewDocumentKeyDownEvent,\n\tMarker,\n\tPosition\n} from 'ckeditor5/src/engine';\n\nimport {\n\tButtonView,\n\tContextualBalloon,\n\tclickOutsideHandler\n} from 'ckeditor5/src/ui';\n\nimport {\n\tCKEditorError,\n\tCollection,\n\tRect,\n\tenv,\n\tkeyCodes,\n\tlogWarning,\n\ttype PositionOptions\n} from 'ckeditor5/src/utils';\n\nimport { TextWatcher, type TextWatcherMatchedEvent } from 'ckeditor5/src/typing';\n\nimport { debounce } from 'lodash-es';\n\nimport MentionsView from './ui/mentionsview';\nimport DomWrapperView from './ui/domwrapperview';\nimport MentionListItemView from './ui/mentionlistitemview';\n\nimport type {\n\tFeedCallback,\n\tMentionFeed,\n\tMentionFeedItem,\n\tItemRenderer,\n\tMentionFeedObjectItem\n} from './mentionconfig';\n\nconst VERTICAL_SPACING = 3;\n\n// The key codes that mention UI handles when it is open (without commit keys).\nconst defaultHandledKeyCodes = [\n\tkeyCodes.arrowup,\n\tkeyCodes.arrowdown,\n\tkeyCodes.esc\n];\n\n// Dropdown commit key codes.\nconst defaultCommitKeyCodes = [\n\tkeyCodes.enter,\n\tkeyCodes.tab\n];\n\n/**\n * The mention UI feature.\n */\nexport default class MentionUI extends Plugin {\n\t/**\n\t * The mention view.\n\t */\n\tprivate readonly _mentionsView: MentionsView;\n\n\t/**\n\t * Stores mention feeds configurations.\n\t */\n\tprivate _mentionsConfigurations: Map<string, Definition>;\n\n\t/**\n\t * The contextual balloon plugin instance.\n\t */\n\tprivate _balloon: ContextualBalloon | undefined;\n\n\tprivate _items = new Collection<{ item: MentionFeedObjectItem; marker: string }>();\n\n\tprivate _lastRequested?: string;\n\n\t/**\n\t * Debounced feed requester. It uses `lodash#debounce` method to delay function call.\n\t */\n\tprivate _requestFeedDebounced: ( marker: string, feedText: string ) => void;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'MentionUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ContextualBalloon ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._mentionsView = this._createMentionView();\n\t\tthis._mentionsConfigurations = new Map();\n\t\tthis._requestFeedDebounced = debounce( this._requestFeed, 100 );\n\n\t\teditor.config.define( 'mention', { feeds: [] } );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\tconst commitKeys = editor.config.get( 'mention.commitKeys' ) || defaultCommitKeyCodes;\n\t\tconst handledKeyCodes = defaultHandledKeyCodes.concat( commitKeys );\n\n\t\tthis._balloon = editor.plugins.get( ContextualBalloon );\n\n\t\t// Key listener that handles navigation in mention view.\n\t\teditor.editing.view.document.on<ViewDocumentKeyDownEvent>( 'keydown', ( evt, data ) => {\n\t\t\tif ( isHandledKey( data.keyCode ) && this._isUIVisible ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t\tevt.stop(); // Required for Enter key overriding.\n\n\t\t\t\tif ( data.keyCode == keyCodes.arrowdown ) {\n\t\t\t\t\tthis._mentionsView.selectNext();\n\t\t\t\t}\n\n\t\t\t\tif ( data.keyCode == keyCodes.arrowup ) {\n\t\t\t\t\tthis._mentionsView.selectPrevious();\n\t\t\t\t}\n\n\t\t\t\tif ( commitKeys.includes( data.keyCode ) ) {\n\t\t\t\t\tthis._mentionsView.executeSelected();\n\t\t\t\t}\n\n\t\t\t\tif ( data.keyCode == keyCodes.esc ) {\n\t\t\t\t\tthis._hideUIAndRemoveMarker();\n\t\t\t\t}\n\t\t\t}\n\t\t}, { priority: 'highest' } ); // Required to override the Enter key.\n\n\t\t// Close the dropdown upon clicking outside of the plugin UI.\n\t\tclickOutsideHandler( {\n\t\t\temitter: this._mentionsView,\n\t\t\tactivator: () => this._isUIVisible,\n\t\t\tcontextElements: () => [ this._balloon!.view.element! ],\n\t\t\tcallback: () => this._hideUIAndRemoveMarker()\n\t\t} );\n\n\t\tconst feeds = editor.config.get( 'mention.feeds' )!;\n\n\t\tfor ( const mentionDescription of feeds ) {\n\t\t\tconst { feed, marker, dropdownLimit } = mentionDescription;\n\n\t\t\tif ( !isValidMentionMarker( marker ) ) {\n\t\t\t\t/**\n\t\t\t\t * The marker must be a single character.\n\t\t\t\t *\n\t\t\t\t * Correct markers: `'@'`, `'#'`.\n\t\t\t\t *\n\t\t\t\t * Incorrect markers: `'$$'`, `'[@'`.\n\t\t\t\t *\n\t\t\t\t * See {@link module:mention/mentionconfig~MentionConfig}.\n\t\t\t\t *\n\t\t\t\t * @error mentionconfig-incorrect-marker\n\t\t\t\t * @param marker Configured marker\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'mentionconfig-incorrect-marker', null, { marker } );\n\t\t\t}\n\n\t\t\tconst feedCallback = typeof feed == 'function' ? feed.bind( this.editor ) : createFeedCallback( feed );\n\t\t\tconst itemRenderer = mentionDescription.itemRenderer;\n\t\t\tconst definition = { marker, feedCallback, itemRenderer, dropdownLimit };\n\n\t\t\tthis._mentionsConfigurations.set( marker, definition );\n\t\t}\n\n\t\tthis._setupTextWatcher( feeds );\n\t\tthis.listenTo( editor, 'change:isReadOnly', () => {\n\t\t\tthis._hideUIAndRemoveMarker();\n\t\t} );\n\t\tthis.on<RequestFeedResponseEvent>( 'requestFeed:response', ( evt, data ) => this._handleFeedResponse( data ) );\n\t\tthis.on<RequestFeedErrorEvent>( 'requestFeed:error', () => this._hideUIAndRemoveMarker() );\n\n\t\t/**\n\t\t * Checks if a given key code is handled by the mention UI.\n\t\t */\n\t\tfunction isHandledKey( keyCode: number ): boolean {\n\t\t\treturn handledKeyCodes.includes( keyCode );\n\t\t}\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\t// Destroy created UI components as they are not automatically destroyed (see ckeditor5#1341).\n\t\tthis._mentionsView.destroy();\n\t}\n\n\t/**\n\t * Returns true when {@link #_mentionsView} is in the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon} and it is\n\t * currently visible.\n\t */\n\tprivate get _isUIVisible(): boolean {\n\t\treturn this._balloon!.visibleView === this._mentionsView;\n\t}\n\n\t/**\n\t * Creates the {@link #_mentionsView}.\n\t */\n\tprivate _createMentionView(): MentionsView {\n\t\tconst locale = this.editor.locale;\n\n\t\tconst mentionsView = new MentionsView( locale );\n\n\t\tmentionsView.items.bindTo( this._items ).using( data => {\n\t\t\tconst { item, marker } = data;\n\n\t\t\tconst { dropdownLimit: markerDropdownLimit } = this._mentionsConfigurations.get( marker )!;\n\n\t\t\t// Set to 10 by default for backwards compatibility. See: #10479\n\t\t\tconst dropdownLimit = markerDropdownLimit || this.editor.config.get( 'mention.dropdownLimit' ) || 10;\n\n\t\t\tif ( mentionsView.items.length >= dropdownLimit ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst listItemView = new MentionListItemView( locale );\n\n\t\t\tconst view = this._renderItem( item, marker );\n\t\t\tview.delegate( 'execute' ).to( listItemView );\n\n\t\t\tlistItemView.children.add( view );\n\t\t\tlistItemView.item = item;\n\t\t\tlistItemView.marker = marker;\n\n\t\t\tlistItemView.on( 'execute', () => {\n\t\t\t\tmentionsView.fire( 'execute', {\n\t\t\t\t\titem,\n\t\t\t\t\tmarker\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\treturn listItemView;\n\t\t} );\n\n\t\tmentionsView.on( 'execute', ( evt, data ) => {\n\t\t\tconst editor = this.editor;\n\t\t\tconst model = editor.model;\n\n\t\t\tconst item = data.item;\n\t\t\tconst marker = data.marker;\n\n\t\t\tconst mentionMarker = editor.model.markers.get( 'mention' );\n\n\t\t\t// Create a range on matched text.\n\t\t\tconst end = model.createPositionAt( model.document.selection.focus! );\n\t\t\tconst start = model.createPositionAt( mentionMarker!.getStart() );\n\t\t\tconst range = model.createRange( start, end );\n\n\t\t\tthis._hideUIAndRemoveMarker();\n\n\t\t\teditor.execute( 'mention', {\n\t\t\t\tmention: item,\n\t\t\t\ttext: item.text,\n\t\t\t\tmarker,\n\t\t\t\trange\n\t\t\t} );\n\n\t\t\teditor.editing.view.focus();\n\t\t} );\n\n\t\treturn mentionsView;\n\t}\n\n\t/**\n\t * Returns item renderer for the marker.\n\t */\n\tprivate _getItemRenderer( marker: string ): ItemRenderer | undefined {\n\t\tconst { itemRenderer } = this._mentionsConfigurations.get( marker )!;\n\n\t\treturn itemRenderer;\n\t}\n\n\t/**\n\t * Requests a feed from a configured callbacks.\n\t */\n\tprivate _requestFeed( marker: string, feedText: string ): void {\n\t\t// @if CK_DEBUG_MENTION // console.log( '%c[Feed]%c Requesting for', 'color: blue', 'color: black', `\"${ feedText }\"` );\n\n\t\t// Store the last requested feed - it is used to discard any out-of order requests.\n\t\tthis._lastRequested = feedText;\n\n\t\tconst { feedCallback } = this._mentionsConfigurations.get( marker )!;\n\t\tconst feedResponse = feedCallback( feedText );\n\n\t\tconst isAsynchronous = feedResponse instanceof Promise;\n\n\t\t// For synchronous feeds (e.g. callbacks, arrays) fire the response event immediately.\n\t\tif ( !isAsynchronous ) {\n\t\t\tthis.fire<RequestFeedResponseEvent>( 'requestFeed:response', { feed: feedResponse, marker, feedText } );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle the asynchronous responses.\n\t\tfeedResponse\n\t\t\t.then( response => {\n\t\t\t\t// Check the feed text of this response with the last requested one so either:\n\t\t\t\tif ( this._lastRequested == feedText ) {\n\t\t\t\t\t// It is the same and fire the response event.\n\t\t\t\t\tthis.fire<RequestFeedResponseEvent>( 'requestFeed:response', { feed: response, marker, feedText } );\n\t\t\t\t} else {\n\t\t\t\t\t// It is different - most probably out-of-order one, so fire the discarded event.\n\t\t\t\t\tthis.fire<RequestFeedDiscardedEvent>( 'requestFeed:discarded', { feed: response, marker, feedText } );\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.catch( error => {\n\t\t\t\tthis.fire<RequestFeedErrorEvent>( 'requestFeed:error', { error } );\n\n\t\t\t\t/**\n\t\t\t\t * The callback used for obtaining mention autocomplete feed thrown and error and the mention UI was hidden or\n\t\t\t\t * not displayed at all.\n\t\t\t\t *\n\t\t\t\t * @error mention-feed-callback-error\n\t\t\t\t */\n\t\t\t\tlogWarning( 'mention-feed-callback-error', { marker } );\n\t\t\t} );\n\t}\n\n\t/**\n\t * Registers a text watcher for the marker.\n\t */\n\tprivate _setupTextWatcher( feeds: Array<MentionFeed> ): TextWatcher {\n\t\tconst editor = this.editor;\n\n\t\tconst feedsWithPattern: Array<MentionFeed & { pattern: RegExp }> = feeds.map( feed => ( {\n\t\t\t...feed,\n\t\t\tpattern: createRegExp( feed.marker, feed.minimumCharacters || 0 )\n\t\t} ) );\n\n\t\tconst watcher = new TextWatcher( editor.model, createTestCallback( feedsWithPattern ) );\n\n\t\twatcher.on<TextWatcherMatchedEvent>( 'matched', ( evt, data ) => {\n\t\t\tconst markerDefinition = getLastValidMarkerInText( feedsWithPattern, data.text );\n\t\t\tconst selection = editor.model.document.selection;\n\t\t\tconst focus = selection.focus;\n\t\t\tconst markerPosition = editor.model.createPositionAt( focus!.parent, markerDefinition!.position );\n\n\t\t\tif ( isPositionInExistingMention( focus! ) || isMarkerInExistingMention( markerPosition ) ) {\n\t\t\t\tthis._hideUIAndRemoveMarker();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst feedText = requestFeedText( markerDefinition, data.text );\n\t\t\tconst matchedTextLength = markerDefinition!.marker.length + feedText.length;\n\n\t\t\t// Create a marker range.\n\t\t\tconst start = focus!.getShiftedBy( -matchedTextLength );\n\t\t\tconst end = focus!.getShiftedBy( -feedText.length );\n\n\t\t\tconst markerRange = editor.model.createRange( start, end );\n\n\t\t\t// @if CK_DEBUG_MENTION // console.group( '%c[TextWatcher]%c matched', 'color: red', 'color: black', `\"${ feedText }\"` );\n\t\t\t// @if CK_DEBUG_MENTION // console.log( 'data#text', `\"${ data.text }\"` );\n\t\t\t// @if CK_DEBUG_MENTION // console.log( 'data#range', data.range.start.path, data.range.end.path );\n\t\t\t// @if CK_DEBUG_MENTION // console.log( 'marker definition', markerDefinition );\n\t\t\t// @if CK_DEBUG_MENTION // console.log( 'marker range', markerRange.start.path, markerRange.end.path );\n\n\t\t\tif ( checkIfStillInCompletionMode( editor ) ) {\n\t\t\t\tconst mentionMarker = editor.model.markers.get( 'mention' )!;\n\n\t\t\t\t// Update the marker - user might've moved the selection to other mention trigger.\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\t// @if CK_DEBUG_MENTION // console.log( '%c[Editing]%c Updating the marker.', 'color: purple', 'color: black' );\n\n\t\t\t\t\twriter.updateMarker( mentionMarker, { range: markerRange } );\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\teditor.model.change( writer => {\n\t\t\t\t\t// @if CK_DEBUG_MENTION // console.log( '%c[Editing]%c Adding the marker.', 'color: purple', 'color: black' );\n\n\t\t\t\t\twriter.addMarker( 'mention', { range: markerRange, usingOperation: false, affectsData: false } );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tthis._requestFeedDebounced( markerDefinition!.marker, feedText );\n\n\t\t\t// @if CK_DEBUG_MENTION // console.groupEnd();\n\t\t} );\n\n\t\twatcher.on( 'unmatched', () => {\n\t\t\tthis._hideUIAndRemoveMarker();\n\t\t} );\n\n\t\tconst mentionCommand = editor.commands.get( 'mention' )!;\n\t\twatcher.bind( 'isEnabled' ).to( mentionCommand );\n\n\t\treturn watcher;\n\t}\n\n\t/**\n\t * Handles the feed response event data.\n\t */\n\tprivate _handleFeedResponse( data: RequestFeedResponseEvent['args'][0] ) {\n\t\tconst { feed, marker } = data;\n\n\t\t// eslint-disable-next-line max-len\n\t\t// @if CK_DEBUG_MENTION // console.log( `%c[Feed]%c Response for \"${ data.feedText }\" (${ feed.length })`, 'color: blue', 'color: black', feed );\n\n\t\t// If the marker is not in the document happens when the selection had changed and the 'mention' marker was removed.\n\t\tif ( !checkIfStillInCompletionMode( this.editor ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Reset the view.\n\t\tthis._items.clear();\n\n\t\tfor ( const feedItem of feed ) {\n\t\t\tconst item = typeof feedItem != 'object' ? { id: feedItem, text: feedItem } : feedItem;\n\n\t\t\tthis._items.add( { item, marker } );\n\t\t}\n\n\t\tconst mentionMarker = this.editor.model.markers.get( 'mention' );\n\n\t\tif ( this._items.length ) {\n\t\t\tthis._showOrUpdateUI( mentionMarker! );\n\t\t} else {\n\t\t\t// Do not show empty mention UI.\n\t\t\tthis._hideUIAndRemoveMarker();\n\t\t}\n\t}\n\n\t/**\n\t * Shows the mentions balloon. If the panel is already visible, it will reposition it.\n\t */\n\tprivate _showOrUpdateUI( markerMarker: Marker ): void {\n\t\tif ( this._isUIVisible ) {\n\t\t\t// @if CK_DEBUG_MENTION // console.log( '%c[UI]%c Updating position.', 'color: green', 'color: black' );\n\n\t\t\t// Update balloon position as the mention list view may change its size.\n\t\t\tthis._balloon!.updatePosition( this._getBalloonPanelPositionData( markerMarker, this._mentionsView!.position ) );\n\t\t} else {\n\t\t\t// @if CK_DEBUG_MENTION // console.log( '%c[UI]%c Showing the UI.', 'color: green', 'color: black' );\n\n\t\t\tthis._balloon!.add( {\n\t\t\t\tview: this._mentionsView,\n\t\t\t\tposition: this._getBalloonPanelPositionData( markerMarker, this._mentionsView.position ),\n\t\t\t\tsingleViewMode: true\n\t\t\t} );\n\t\t}\n\n\t\tthis._mentionsView.position = this._balloon!.view.position;\n\t\tthis._mentionsView.selectFirst();\n\t}\n\n\t/**\n\t * Hides the mentions balloon and removes the 'mention' marker from the markers collection.\n\t */\n\tprivate _hideUIAndRemoveMarker(): void {\n\t\t// Remove the mention view from balloon before removing marker - it is used by balloon position target().\n\t\tif ( this._balloon!.hasView( this._mentionsView ) ) {\n\t\t\t// @if CK_DEBUG_MENTION // console.log( '%c[UI]%c Hiding the UI.', 'color: green', 'color: black' );\n\n\t\t\tthis._balloon!.remove( this._mentionsView );\n\t\t}\n\n\t\tif ( checkIfStillInCompletionMode( this.editor ) ) {\n\t\t\t// @if CK_DEBUG_MENTION // console.log( '%c[Editing]%c Removing marker.', 'color: purple', 'color: black' );\n\n\t\t\tthis.editor.model.change( writer => writer.removeMarker( 'mention' ) );\n\t\t}\n\n\t\t// Make the last matched position on panel view undefined so the #_getBalloonPanelPositionData() method will return all positions\n\t\t// on the next call.\n\t\tthis._mentionsView.position = undefined;\n\t}\n\n\t/**\n\t * Renders a single item in the autocomplete list.\n\t */\n\tprivate _renderItem( item: MentionFeedObjectItem, marker: string ): DomWrapperView | ButtonView {\n\t\tconst editor = this.editor;\n\n\t\tlet view;\n\t\tlet label = item.id;\n\n\t\tconst renderer = this._getItemRenderer( marker );\n\n\t\tif ( renderer ) {\n\t\t\tconst renderResult = renderer( item );\n\n\t\t\tif ( typeof renderResult != 'string' ) {\n\t\t\t\tview = new DomWrapperView( editor.locale, renderResult );\n\t\t\t} else {\n\t\t\t\tlabel = renderResult;\n\t\t\t}\n\t\t}\n\n\t\tif ( !view ) {\n\t\t\tconst buttonView = new ButtonView( editor.locale );\n\n\t\t\tbuttonView.label = label;\n\t\t\tbuttonView.withText = true;\n\n\t\t\tview = buttonView;\n\t\t}\n\n\t\treturn view;\n\t}\n\n\t/**\n\t * Creates a position options object used to position the balloon panel.\n\t *\n\t * @param mentionMarker\n\t * @param preferredPosition The name of the last matched position name.\n\t */\n\tprivate _getBalloonPanelPositionData( mentionMarker: Marker, preferredPosition: MentionsView['position'] ): Partial<PositionOptions> {\n\t\tconst editor = this.editor;\n\t\tconst editing = editor.editing;\n\t\tconst domConverter = editing.view.domConverter;\n\t\tconst mapper = editing.mapper;\n\t\tconst uiLanguageDirection = editor.locale.uiLanguageDirection;\n\n\t\treturn {\n\t\t\ttarget: () => {\n\t\t\t\tlet modelRange = mentionMarker.getRange();\n\n\t\t\t\t// Target the UI to the model selection range - the marker has been removed so probably the UI will not be shown anyway.\n\t\t\t\t// The logic is used by ContextualBalloon to display another panel in the same place.\n\t\t\t\tif ( modelRange.start.root.rootName == '$graveyard' ) {\n\t\t\t\t\tmodelRange = editor.model.document.selection.getFirstRange()!;\n\t\t\t\t}\n\n\t\t\t\tconst viewRange = mapper.toViewRange( modelRange );\n\t\t\t\tconst rangeRects = Rect.getDomRangeRects( domConverter.viewRangeToDom( viewRange ) );\n\n\t\t\t\treturn rangeRects.pop()!;\n\t\t\t},\n\t\t\tlimiter: () => {\n\t\t\t\tconst view = this.editor.editing.view;\n\t\t\t\tconst viewDocument = view.document;\n\t\t\t\tconst editableElement = viewDocument.selection.editableElement;\n\n\t\t\t\tif ( editableElement ) {\n\t\t\t\t\treturn view.domConverter.mapViewToDom( editableElement.root ) as HTMLElement;\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\tpositions: getBalloonPanelPositions( preferredPosition, uiLanguageDirection )\n\t\t};\n\t}\n}\n\n/**\n * Returns the balloon positions data callbacks.\n */\nfunction getBalloonPanelPositions(\n\tpreferredPosition: MentionsView['position'],\n\tuiLanguageDirection: string\n): PositionOptions['positions'] {\n\tconst positions: Record<string, PositionOptions['positions'][0]> = {\n\t\t// Positions the panel to the southeast of the caret rectangle.\n\t\t'caret_se': ( targetRect: Rect ) => {\n\t\t\treturn {\n\t\t\t\ttop: targetRect.bottom + VERTICAL_SPACING,\n\t\t\t\tleft: targetRect.right,\n\t\t\t\tname: 'caret_se',\n\t\t\t\tconfig: {\n\t\t\t\t\twithArrow: false\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\n\t\t// Positions the panel to the northeast of the caret rectangle.\n\t\t'caret_ne': ( targetRect: Rect, balloonRect: Rect ) => {\n\t\t\treturn {\n\t\t\t\ttop: targetRect.top - balloonRect.height - VERTICAL_SPACING,\n\t\t\t\tleft: targetRect.right,\n\t\t\t\tname: 'caret_ne',\n\t\t\t\tconfig: {\n\t\t\t\t\twithArrow: false\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\n\t\t// Positions the panel to the southwest of the caret rectangle.\n\t\t'caret_sw': ( targetRect: Rect, balloonRect: Rect ) => {\n\t\t\treturn {\n\t\t\t\ttop: targetRect.bottom + VERTICAL_SPACING,\n\t\t\t\tleft: targetRect.right - balloonRect.width,\n\t\t\t\tname: 'caret_sw',\n\t\t\t\tconfig: {\n\t\t\t\t\twithArrow: false\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\n\t\t// Positions the panel to the northwest of the caret rect.\n\t\t'caret_nw': ( targetRect: Rect, balloonRect: Rect ) => {\n\t\t\treturn {\n\t\t\t\ttop: targetRect.top - balloonRect.height - VERTICAL_SPACING,\n\t\t\t\tleft: targetRect.right - balloonRect.width,\n\t\t\t\tname: 'caret_nw',\n\t\t\t\tconfig: {\n\t\t\t\t\twithArrow: false\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t};\n\n\t// Returns only the last position if it was matched to prevent the panel from jumping after the first match.\n\tif ( Object.prototype.hasOwnProperty.call( positions, preferredPosition! ) ) {\n\t\treturn [\n\t\t\tpositions[ preferredPosition! ]\n\t\t];\n\t}\n\n\t// By default, return all position callbacks ordered depending on the UI language direction.\n\treturn uiLanguageDirection !== 'rtl' ? [\n\t\tpositions.caret_se,\n\t\tpositions.caret_sw,\n\t\tpositions.caret_ne,\n\t\tpositions.caret_nw\n\t] : [\n\t\tpositions.caret_sw,\n\t\tpositions.caret_se,\n\t\tpositions.caret_nw,\n\t\tpositions.caret_ne\n\t];\n}\n\n/**\n * Returns a marker definition of the last valid occurring marker in a given string.\n * If there is no valid marker in a string, it returns undefined.\n *\n * Example of returned object:\n *\n * ```ts\n * {\n * \tmarker: '@',\n * \tposition: 4,\n * \tminimumCharacters: 0\n * }\n * ````\n *\n * @param feedsWithPattern Registered feeds in editor for mention plugin with created RegExp for matching marker.\n * @param text String to find the marker in\n * @returns Matched marker's definition\n */\nfunction getLastValidMarkerInText(\n\tfeedsWithPattern: Array<MentionFeed & { pattern: RegExp }>,\n\ttext: string\n): MarkerDefinition {\n\tlet lastValidMarker: any;\n\n\tfor ( const feed of feedsWithPattern ) {\n\t\tconst currentMarkerLastIndex = text.lastIndexOf( feed.marker );\n\n\t\tif ( currentMarkerLastIndex > 0 && !text.substring( currentMarkerLastIndex - 1 ).match( feed.pattern ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( !lastValidMarker || currentMarkerLastIndex >= lastValidMarker.position ) {\n\t\t\tlastValidMarker = {\n\t\t\t\tmarker: feed.marker,\n\t\t\t\tposition: currentMarkerLastIndex,\n\t\t\t\tminimumCharacters: feed.minimumCharacters,\n\t\t\t\tpattern: feed.pattern\n\t\t\t};\n\t\t}\n\t}\n\n\treturn lastValidMarker;\n}\n\n/**\n * Creates a RegExp pattern for the marker.\n *\n * Function has to be exported to achieve 100% code coverage.\n */\nexport function createRegExp( marker: string, minimumCharacters: number ): RegExp {\n\tconst numberOfCharacters = minimumCharacters == 0 ? '*' : `{${ minimumCharacters },}`;\n\n\tconst openAfterCharacters = env.features.isRegExpUnicodePropertySupported ? '\\\\p{Ps}\\\\p{Pi}\"\\'' : '\\\\(\\\\[{\"\\'';\n\tconst mentionCharacters = '.';\n\n\t// The pattern consists of 3 groups:\n\t// - 0 (non-capturing): Opening sequence - start of the line, space or an opening punctuation character like \"(\" or \"\\\"\",\n\t// - 1: The marker character,\n\t// - 2: Mention input (taking the minimal length into consideration to trigger the UI),\n\t//\n\t// The pattern matches up to the caret (end of string switch - $).\n\t// (0: opening sequence )(1: marker )(2: typed mention )$\n\tconst pattern = `(?:^|[ ${ openAfterCharacters }])([${ marker }])(${ mentionCharacters }${ numberOfCharacters })$`;\n\treturn new RegExp( pattern, 'u' );\n}\n\n/**\n * Creates a test callback for the marker to be used in the text watcher instance.\n *\n * @param feedsWithPattern Feeds of mention plugin configured in editor with RegExp to match marker in text\n */\nfunction createTestCallback( feedsWithPattern: Array<MentionFeed & { pattern: RegExp }> ): ( text: string ) => boolean {\n\tconst textMatcher = ( text: string ) => {\n\t\tconst markerDefinition = getLastValidMarkerInText( feedsWithPattern, text );\n\n\t\tif ( !markerDefinition ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet splitStringFrom = 0;\n\n\t\tif ( markerDefinition.position !== 0 ) {\n\t\t\tsplitStringFrom = markerDefinition.position - 1;\n\t\t}\n\n\t\tconst textToTest = text.substring( splitStringFrom );\n\n\t\treturn markerDefinition.pattern.test( textToTest );\n\t};\n\n\treturn textMatcher;\n}\n\n/**\n * Creates a text matcher from the marker.\n */\nfunction requestFeedText( markerDefinition: MarkerDefinition, text: string ): string {\n\tlet splitStringFrom = 0;\n\n\tif ( markerDefinition.position !== 0 ) {\n\t\tsplitStringFrom = markerDefinition.position - 1;\n\t}\n\n\tconst regExp = createRegExp( markerDefinition.marker, 0 );\n\tconst textToMatch = text.substring( splitStringFrom );\n\tconst match = textToMatch.match( regExp )!;\n\n\treturn match[ 2 ];\n}\n\n/**\n * The default feed callback.\n */\nfunction createFeedCallback( feedItems: Array<MentionFeedItem> ) {\n\treturn ( feedText: string ) => {\n\t\tconst filteredItems = feedItems\n\t\t\t// Make the default mention feed case-insensitive.\n\t\t\t.filter( item => {\n\t\t\t\t// Item might be defined as object.\n\t\t\t\tconst itemId = typeof item == 'string' ? item : String( item.id );\n\n\t\t\t\t// The default feed is case insensitive.\n\t\t\t\treturn itemId.toLowerCase().includes( feedText.toLowerCase() );\n\t\t\t} );\n\t\treturn filteredItems;\n\t};\n}\n\n/**\n * Checks if position in inside or right after a text with a mention.\n */\nfunction isPositionInExistingMention( position: Position ): boolean | null {\n\t// The text watcher listens only to changed range in selection - so the selection attributes are not yet available\n\t// and you cannot use selection.hasAttribute( 'mention' ) just yet.\n\t// See https://github.com/ckeditor/ckeditor5-engine/issues/1723.\n\tconst hasMention = position.textNode && position.textNode.hasAttribute( 'mention' );\n\n\tconst nodeBefore = position.nodeBefore;\n\n\treturn hasMention || nodeBefore && nodeBefore.is( '$text' ) && nodeBefore.hasAttribute( 'mention' );\n}\n\n/**\n * Checks if the closest marker offset is at the beginning of a mention.\n *\n * See https://github.com/ckeditor/ckeditor5/issues/11400.\n */\nfunction isMarkerInExistingMention( markerPosition: Position ): boolean | null {\n\tconst nodeAfter = markerPosition.nodeAfter;\n\n\treturn nodeAfter && nodeAfter.is( '$text' ) && nodeAfter.hasAttribute( 'mention' );\n}\n\n/**\n * Checks if string is a valid mention marker.\n */\nfunction isValidMentionMarker( marker: string ): boolean | string {\n\treturn marker && marker.length == 1;\n}\n\n/**\n * Checks the mention plugins is in completion mode (e.g. when typing is after a valid mention string like @foo).\n */\nfunction checkIfStillInCompletionMode( editor: Editor ): boolean {\n\treturn editor.model.markers.has( 'mention' );\n}\n\ntype RequestFeedResponse = {\n\n\t/**\n\t * Autocomplete items\n\t */\n\tfeed: Array<MentionFeedItem>;\n\n\t/**\n\t * The character which triggers autocompletion for mention.\n\t */\n\tmarker: string;\n\n\t/**\n\t * The text for which feed items were requested.\n\t */\n\tfeedText: string;\n};\n\ntype RequestFeedError = {\n\n\t/**\n\t * The error that was caught.\n\t */\n\terror: ErrorEvent;\n};\n\n/**\n * Fired whenever requested feed has a response.\n */\ntype RequestFeedResponseEvent = {\n\tname: 'requestFeed:response';\n\targs: [ RequestFeedResponse ];\n};\n\n/**\n * Fired whenever the requested feed was discarded. This happens when the response was delayed and\n * other feed was already requested.\n */\ntype RequestFeedDiscardedEvent = {\n\tname: 'requestFeed:discarded';\n\targs: [ RequestFeedResponse ];\n};\n\n/**\n * Fired whenever the requested {@link module:mention/mentionconfig~MentionFeed#feed} promise fails with error.\n */\ntype RequestFeedErrorEvent = {\n\tname: 'requestFeed:error';\n\targs: [ RequestFeedError ];\n};\n\ntype Definition = {\n\tmarker: string;\n\tfeedCallback: FeedCallback;\n\titemRenderer?: ItemRenderer;\n\tdropdownLimit?: number;\n};\n\ntype MarkerDefinition = {\n\tmarker: string;\n\tminimumCharacters?: number;\n\tpattern: RegExp;\n\tposition: number;\n};\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./mention.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { first } from 'ckeditor5/src/utils';\n\nexport function createVideoViewElement( writer, videoType ) {\n\tconst emptyElement = writer.createEmptyElement( 'video' );\n\n\tconst container = videoType === 'videoBlock' ?\n\t\twriter.createContainerElement( 'figure', { class: 'video' } ) :\n\t\twriter.createContainerElement( 'span', { class: 'video-inline' }, { isAllowedInsideAttributeElement: true } );\n\n\twriter.insert( writer.createPositionAt( container, 0 ), emptyElement );\n\n\treturn container;\n}\n\nexport function getVideoViewElementMatcher( editor, matchVideoType ) {\n\tif ( editor.plugins.has( 'VideoInlineEditing' ) !== editor.plugins.has( 'VideoBlockEditing' ) ) {\n\t\treturn {\n\t\t\tname: 'video',\n\t\t\tattributes: {\n\t\t\t\t'data-document-id': true,\n\t\t\t\t'poster': true,\n\t\t\t\tsrc: true\n\t\t\t}\n\t\t};\n\t}\n\n\tconst videoUtils = editor.plugins.get( 'VideoUtils' );\n\n\treturn element => {\n\t\tif ( !videoUtils.isInlineVideoView( element ) || !element.hasAttribute( 'src' ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst videoType = element.findAncestor( videoUtils.isBlockVideoView ) ? 'videoBlock' : 'videoInline';\n\n\t\tif ( videoType !== matchVideoType ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn { name: true, attributes: [ 'src' ] };\n\t};\n}\n\nexport function determineVideoTypeForInsertionAtSelection( schema, selection ) {\n\tconst firstBlock = first( selection.getSelectedBlocks() );\n\n\tif ( !firstBlock || schema.isObject( firstBlock ) ) {\n\t\treturn 'videoBlock';\n\t}\n\n\tif ( firstBlock.isEmpty && firstBlock.name !== 'listItem' ) {\n\t\treturn 'videoBlock';\n\t}\n\n\treturn 'videoInline';\n}\n","import { Plugin } from 'ckeditor5/src/core';\nimport { findOptimalInsertionRange, isWidget, toWidget } from 'ckeditor5/src/widget';\nimport { determineVideoTypeForInsertionAtSelection } from './video/utils';\n\nexport default class VideoUtils extends Plugin {\n static get pluginName() {\n return 'VideoUtils';\n }\n\n isVideo( modelElement ) {\n return this.isInlineVideo( modelElement ) || this.isBlockVideo( modelElement );\n }\n\n isInlineVideoView(element ) {\n return !!element && element.is( 'element', 'video' );\n }\n\n isBlockVideoView(element ) {\n return !!element && element.is( 'element', 'figure' ) && element.hasClass( 'video' );\n }\n\n insertVideo(attributes = {}, selectable = null, videoType = null ) {\n const editor = this.editor;\n const model = editor.model;\n const selection = model.document.selection;\n\n videoType = determineVideoTypeForInsertion( editor, selectable || selection, videoType );\n\n attributes = {\n ...Object.fromEntries( selection.getAttributes() ),\n ...attributes\n };\n\n for ( const attributeName in attributes ) {\n if ( !model.schema.checkAttribute( videoType, attributeName ) ) {\n delete attributes[ attributeName ];\n }\n }\n\n return model.change( writer => {\n const videoElement = writer.createElement( videoType, attributes );\n\n if ( !selectable && videoType !== 'videoInline' ) {\n selectable = findOptimalInsertionRange( selection, model );\n }\n\n model.insertContent( videoElement, selectable );\n\n if ( videoElement.parent ) {\n writer.setSelection( videoElement, 'on' );\n\n return videoElement;\n }\n\n return null;\n } );\n }\n\n getClosestSelectedVideoWidget(selection) {\n const selectionPosition = selection.getFirstPosition();\n\n\t\tif ( !selectionPosition ) {\n\t\t\treturn null;\n\t\t}\n\n const viewElement = selection.getSelectedElement();\n\n if ( viewElement && this.isVideoWidget( viewElement ) ) {\n return viewElement;\n }\n\n let parent = selectionPosition.parent;\n\n while ( parent ) {\n if ( parent.is( 'element' ) && this.isVideoWidget( parent ) ) {\n return parent;\n }\n\n parent = parent.parent;\n }\n\n return null;\n }\n\n getClosestSelectedVideoElement(selection ) {\n const selectedElement = selection.getSelectedElement();\n\n return this.isVideo( selectedElement ) ? selectedElement : selection.getFirstPosition().findAncestor( 'videoBlock' );\n }\n\n isVideoAllowed() {\n const model = this.editor.model;\n const selection = model.document.selection;\n\n return isVideoAllowedInParent( this.editor, selection ) && isNotInsideVideo( selection );\n }\n\n toVideoWidget(viewElement, writer ) {\n writer.setCustomProperty( 'video', true, viewElement );\n\n return toWidget( viewElement, writer);\n }\n\n isVideoWidget(viewElement ) {\n return !!viewElement.getCustomProperty( 'video' ) && isWidget( viewElement );\n }\n\n isBlockVideo(modelElement ) {\n return !!modelElement && modelElement.is( 'element', 'videoBlock' );\n }\n\n isInlineVideo(modelElement ) {\n return !!modelElement && modelElement.is( 'element', 'videoInline' );\n }\n\n findViewVideoElement(figureView ) {\n if ( this.isInlineVideoView( figureView ) ) {\n return figureView;\n }\n\n const editingView = this.editor.editing.view;\n\n for ( const { item } of editingView.createRangeIn( figureView ) ) {\n if ( this.isInlineVideoView( item ) ) {\n return item;\n }\n }\n }\n}\nfunction isVideoAllowedInParent( editor, selection ) {\n const videoType = determineVideoTypeForInsertion( editor, selection );\n\n if ( videoType === 'videoBlock' ) {\n const parent = getInsertVideoParent( selection, editor.model );\n\n if ( editor.model.schema.checkChild( parent, 'videoBlock' ) ) {\n return true;\n }\n } else if ( editor.model.schema.checkChild( selection.focus, 'videoInline' ) ) {\n return true;\n }\n\n return false;\n}\n\nfunction isNotInsideVideo( selection ) {\n return [ ...selection.focus.getAncestors() ].every( ancestor => !ancestor.is( 'element', 'videoBlock' ) );\n}\n\nfunction getInsertVideoParent( selection, model ) {\n const insertionRange = findOptimalInsertionRange( selection, model );\n const parent = insertionRange.start.parent;\n\n if ( parent.isEmpty && !parent.is( 'element', '$root' ) ) {\n return parent.parent;\n }\n\n return parent;\n}\n\nfunction determineVideoTypeForInsertion( editor, selectable, videoType ) {\n const schema = editor.model.schema;\n const configVideoInsertType = editor.config.get( 'video.insert.type' );\n\n if ( !editor.plugins.has( 'VideoBlockEditing' ) ) {\n return 'videoInline';\n }\n\n if ( !editor.plugins.has( 'VideoInlineEditing' ) ) {\n return 'videoBlock';\n }\n\n if ( videoType ) {\n return videoType;\n }\n\n if ( configVideoInsertType === 'inline' ) {\n return 'videoInline';\n }\n\n if ( configVideoInsertType === 'block' ) {\n return 'videoBlock';\n }\n\n if ( selectable.is( 'selection' ) ) {\n return determineVideoTypeForInsertionAtSelection( schema, selectable );\n }\n\n return schema.checkChild( selectable, 'videoInline' ) ? 'videoInline' : 'videoBlock';\n}\n","import { first } from 'ckeditor5/src/utils';\n\nexport function upcastVideoFigure( videoUtils ) {\n\treturn dispatcher => {\n\t\tdispatcher.on( 'element:figure', converter );\n\t};\n\n\tfunction converter( evt, data, conversionApi ) {\n\t\tif ( !conversionApi.consumable.test( data.viewItem, { name: true, classes: 'video' } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewVideo = videoUtils.findViewVideoElement( data.viewItem );\n\n\t\tif ( !viewVideo || !viewVideo.hasAttribute( 'src' ) || !conversionApi.consumable.test( viewVideo, { name: true } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst conversionResult = conversionApi.convertItem( viewVideo, data.modelCursor );\n\n\t\tconst modelVideo = first( conversionResult.modelRange.getItems() );\n\n\t\tif ( !modelVideo ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconversionApi.convertChildren( data.viewItem, modelVideo );\n\n\t\tconversionApi.updateConversionResult( modelVideo, data );\n\t}\n}\n\nexport function downcastVideoAttribute( videoUtils, videoType, attributeKey ) {\n\treturn dispatcher => {\n\t\tdispatcher.on( `attribute:${ attributeKey }:${ videoType }`, converter );\n\t};\n\n\tfunction converter( evt, data, conversionApi ) {\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst element = conversionApi.mapper.toViewElement( data.item );\n\t\tconst video = videoUtils.findViewVideoElement( element );\n\n\t\tviewWriter.setAttribute( data.attributeKey, data.attributeNewValue || '', video );\n\t}\n}\n","import { Observer } from 'ckeditor5/src/engine';\n\nexport default class VideoLoadObserver extends Observer {\n\tobserve( domRoot ) {\n\t\tthis.listenTo( domRoot, 'load', ( event, domEvent ) => {\n\t\t\tconst domElement = domEvent.target;\n\n\t\t\tif ( this.checkShouldIgnoreEventFromTarget( domElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( domElement.tagName === 'VIDEO' ) {\n\t\t\t\tthis._fireEvents( domEvent );\n\t\t\t}\n\t\t\t// Use capture phase for better performance (#4504).\n\t\t}, { useCapture: true } );\n\t}\n\n\t_fireEvents( domEvent ) {\n\t\tif ( this.isEnabled ) {\n\t\t\tthis.document.fire( 'layoutChanged' );\n\t\t\tthis.document.fire( 'videoLoaded', domEvent );\n\t\t}\n\t}\n}\n","import Command from '@ckeditor/ckeditor5-core/src/command';\nimport { logWarning, toArray } from 'ckeditor5/src/utils';\n\n\nexport default class InsertVideoCommand extends Command {\n\tconstructor( editor ) {\n\t\tsuper( editor );\n\n\t\tconst configVideoInsertType = editor.config.get( 'video.insert.type' );\n\n\t\tif ( !editor.plugins.has( 'VideoBlockEditing' ) ) {\n\t\t\tif ( configVideoInsertType === 'block' ) {\n\t\t\t\tlogWarning( 'video-block-plugin-required' );\n\t\t\t}\n\t\t}\n\n\t\tif ( !editor.plugins.has( 'VideoInlineEditing' ) ) {\n\t\t\tif ( configVideoInsertType === 'inline' ) {\n\t\t\t\tlogWarning( 'video-inline-plugin-required' );\n\t\t\t}\n\t\t}\n\t}\n\n\trefresh() {\n\t\tthis.isEnabled = this.editor.plugins.get( 'VideoUtils' ).isVideoAllowed();\n\t}\n\n\texecute( options ) {\n\t\tconst sourceDefinitions = toArray( options.source );\n\t\tconst selection = this.editor.model.document.selection;\n\t\tconst videoUtils = this.editor.plugins.get( 'VideoUtils' );\n\n\t\tconst selectionAttributes = Object.fromEntries( selection.getAttributes() );\n\n\t\tsourceDefinitions.forEach( ( sourceDefinition, index ) => {\n\t\t\tconst selectedElement = selection.getSelectedElement();\n\n\t\t\tif ( typeof sourceDefinition === 'string' ) {\n\t\t\t\tsourceDefinition = { src: sourceDefinition };\n\t\t\t}\n\n\t\t\tif ( index && selectedElement && videoUtils.isVideo( selectedElement ) ) {\n\t\t\t\tconst position = this.editor.model.createPositionAfter( selectedElement );\n\n\t\t\t\tvideoUtils.insertVideo( { ...sourceDefinition,...selectionAttributes }, position );\n\t\t\t} else {\n\t\t\t\tvideoUtils.insertVideo( { ...sourceDefinition, ...selectionAttributes } );\n\t\t\t}\n\t\t} );\n\t}\n}\n","import { Plugin } from 'ckeditor5/src/core';\nimport VideoLoadObserver from './videoloadobserver';\nimport InsertVideoCommand from './insertvideocommand';\nimport VideoUtils from \"../videoutils\";\n\nexport default class VideoEditing extends Plugin {\n\tstatic get requires() {\n\t\treturn [ VideoUtils ];\n\t}\n\n\tstatic get pluginName() {\n\t\treturn 'VideoEditing';\n\t}\n\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst conversion = editor.conversion;\n\n\t\teditor.editing.view.addObserver( VideoLoadObserver );\n\n\t\tconversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\t\tview: {\n\t\t\t\t\t\tname: 'video',\n\t\t\t\t\t\tkey: 'src'\n\t\t\t\t\t},\n\t\t\t\t\tmodel: {\n\t\t\t\t\t\tkey: 'src',\n\t\t\t\t\t\tvalue: viewVideo => {\n\t\t\t\t\t\t\tconst value = {\n\t\t\t\t\t\t\t\tdata: viewVideo.getAttribute( 'src' )\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif ( viewVideo.hasAttribute( 'width' ) ) {\n\t\t\t\t\t\t\t\tvalue.width = viewVideo.getAttribute( 'width' );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( viewVideo.hasAttribute( 'data-document-id' ) ) {\n\t\t\t\t\t\t\t\tvalue['data-document-id'] = viewVideo.getAttribute( 'data-document-id' );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( viewVideo.hasAttribute( 'poster' ) ) {\n\t\t\t\t\t\t\t\tvalue['poster'] = viewVideo.getAttribute( 'poster' );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\tconst insertVideoCommand = new InsertVideoCommand( editor );\n\t\teditor.commands.add( 'insertVideo', insertVideoCommand );\n\t\teditor.commands.add( 'videoInsert', insertVideoCommand );\n\t}\n}\n\nexport function createVideoViewElement( writer ) {\n\tconst emptyElement = writer.createEmptyElement( 'video' );\n\tconst figure = writer.createContainerElement( 'figure', { class: 'video' } );\n\n\twriter.insert( writer.createPositionAt( figure, 0 ), emptyElement );\n\n\treturn figure;\n}\n","import { Command } from 'ckeditor5/src/core';\n\n\nexport default class VideoTypeCommand extends Command {\n constructor( editor, modelElementName ) {\n super( editor );\n\n this._modelElementName = modelElementName;\n }\n\n refresh() {\n const editor = this.editor;\n const videoUtils = editor.plugins.get( 'VideoUtils' );\n const element = videoUtils.getClosestSelectedVideoElement( this.editor.model.document.selection );\n\n if ( this._modelElementName === 'videoBlock' ) {\n this.isEnabled = videoUtils.isInlineVideo( element );\n } else {\n this.isEnabled = videoUtils.isBlockVideo( element );\n }\n }\n\n execute() {\n const editor = this.editor;\n const model = this.editor.model;\n const videoUtils = editor.plugins.get( 'VideoUtils' );\n const oldElement = videoUtils.getClosestSelectedVideoElement( model.document.selection );\n const attributes = Object.fromEntries( oldElement.getAttributes() );\n\n if ( !attributes.src && !attributes.uploadId ) {\n return null;\n }\n\n return model.change( writer => {\n const markers = Array.from( model.markers )\n .filter( marker => marker.getRange().containsItem( oldElement ) );\n\n const newElement = videoUtils.insertVideo( attributes, model.createSelection( oldElement, 'on' ), this._modelElementName );\n\n if ( !newElement ) {\n return null;\n }\n\n const newElementRange = writer.createRangeOn( newElement );\n\n for ( const marker of markers ) {\n const markerRange = marker.getRange();\n\n const range = markerRange.root.rootName != '$graveyard' ?\n markerRange.getJoined( newElementRange, true ) : newElementRange;\n\n writer.updateMarker( marker, { range } );\n }\n\n return {\n oldElement,\n newElement\n };\n } );\n }\n}\n","import { Plugin } from 'ckeditor5/src/core';\nimport { ClipboardPipeline } from 'ckeditor5/src/clipboard';\nimport { UpcastWriter } from 'ckeditor5/src/engine';\nimport {\n downcastVideoAttribute,\n upcastVideoFigure,\n} from './converters';\nimport VideoEditing from './videoediting';\nimport VideoTypeCommand from './videotypecommand';\nimport VideoUtils from '../videoutils';\nimport {\n createVideoViewElement,\n determineVideoTypeForInsertionAtSelection,\n getVideoViewElementMatcher\n} from './utils';\n\nexport default class VideoBlockEditing extends Plugin {\n static get requires() {\n return [ VideoEditing, VideoUtils, ClipboardPipeline ];\n }\n\n static get pluginName() {\n return 'VideoBlockEditing';\n }\n\n init() {\n const editor = this.editor;\n const schema = editor.model.schema;\n\n schema.register( 'videoBlock', {\n isObject: true,\n isBlock: true,\n allowWhere: '$block',\n allowAttributes: [ 'src', 'data-document-id', 'poster' ]\n } );\n\n this._setupConversion();\n\n if ( editor.plugins.has( 'VideoInlineEditing' ) ) {\n editor.commands.add( 'videoTypeBlock', new VideoTypeCommand( this.editor, 'videoBlock' ) );\n\n this._setupClipboardIntegration();\n }\n }\n\n _setupConversion() {\n const editor = this.editor;\n const t = editor.t;\n const conversion = editor.conversion;\n const videoUtils = editor.plugins.get( 'VideoUtils' );\n\n conversion.for( 'dataDowncast' )\n .elementToElement( {\n model: 'videoBlock',\n view: ( modelElement, { writer } ) => createVideoViewElement( writer, 'videoBlock' )\n } );\n\n conversion.for( 'editingDowncast' )\n .elementToElement( {\n model: 'videoBlock',\n view: ( modelElement, { writer } ) => videoUtils.toVideoWidget(\n createVideoViewElement( writer, 'videoBlock' ), writer, t( 'video widget' )\n )\n } );\n\n conversion.for( 'downcast' )\n .add( downcastVideoAttribute( videoUtils, 'videoBlock', 'src' ) );\n conversion.for( 'downcast' )\n .add( downcastVideoAttribute( videoUtils, 'videoBlock', 'data-document-id' ) );\n conversion.for( 'downcast' )\n .add( downcastVideoAttribute( videoUtils, 'videoBlock', 'poster' ) );\n\n conversion.for( 'upcast' )\n .elementToElement( {\n view: getVideoViewElementMatcher( editor, 'videoBlock' ),\n model: ( viewVideo, { writer } ) => writer.createElement( 'videoBlock', { src: viewVideo.getAttribute( 'src' ), 'data-document-id': viewVideo.getAttribute( 'data-document-id' ), poster: viewVideo.getAttribute( 'poster' ) } )\n } )\n .add( upcastVideoFigure( videoUtils ) );\n }\n\n _setupClipboardIntegration() {\n const editor = this.editor;\n const model = editor.model;\n const editingView = editor.editing.view;\n const videoUtils = editor.plugins.get( 'VideoUtils' );\n\n this.listenTo( editor.plugins.get( 'ClipboardPipeline' ), 'inputTransformation', ( evt, data ) => {\n const docFragmentChildren = Array.from( data.content.getChildren() );\n let modelRange;\n\n if ( !docFragmentChildren.every( videoUtils.isInlineVideoView ) ) {\n return;\n }\n\n if ( data.targetRanges ) {\n modelRange = editor.editing.mapper.toModelRange( data.targetRanges[ 0 ] );\n }\n else {\n modelRange = model.document.selection.getFirstRange();\n }\n\n const selection = model.createSelection( modelRange );\n\n if ( determineVideoTypeForInsertionAtSelection( model.schema, selection ) === 'videoBlock' ) {\n const writer = new UpcastWriter( editingView.document );\n\n const blockViewVideos = docFragmentChildren.map(\n inlineViewVideo => writer.createElement( 'figure', { class: 'video' }, inlineViewVideo )\n );\n\n data.content = writer.createDocumentFragment( blockViewVideos );\n }\n } );\n }\n}\n","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./video.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { Plugin } from 'ckeditor5/src/core';\nimport { Widget } from 'ckeditor5/src/widget';\n\nimport VideoBlockEditing from './video/videoblockediting';\n\nimport '../theme/video.css';\n\nexport default class VideoBlock extends Plugin {\n static get requires() {\n return [ VideoBlockEditing, Widget ];\n }\n\n static get pluginName() {\n return 'VideoBlock';\n }\n}\n","import { Plugin } from 'ckeditor5/src/core';\nimport { ClipboardPipeline } from 'ckeditor5/src/clipboard';\nimport { UpcastWriter } from 'ckeditor5/src/engine';\nimport {downcastVideoAttribute} from './converters';\nimport VideoEditing from './videoediting';\nimport VideoTypeCommand from './videotypecommand';\nimport VideoUtils from '../videoutils';\nimport {\n getVideoViewElementMatcher,\n createVideoViewElement,\n determineVideoTypeForInsertionAtSelection\n} from './utils';\n\n\nexport default class VideoInlineEditing extends Plugin {\n static get requires() {\n return [ VideoEditing, VideoUtils, ClipboardPipeline ];\n }\n\n static get pluginName() {\n return 'VideoInlineEditing';\n }\n\n init() {\n const editor = this.editor;\n const schema = editor.model.schema;\n\n schema.register( 'videoInline', {\n isObject: true,\n isInline: true,\n allowWhere: '$text',\n allowAttributes: [ 'src', 'data-document-id', 'poster' ]\n } );\n\n schema.addChildCheck( ( context, childDefinition ) => {\n if ( context.endsWith( 'caption' ) && childDefinition.name === 'videoInline' ) {\n return false;\n }\n } );\n\n this._setupConversion();\n\n if ( editor.plugins.has( 'VideoBlockEditing' ) ) {\n editor.commands.add( 'videoTypeInline', new VideoTypeCommand( this.editor, 'videoInline' ) );\n\n this._setupClipboardIntegration();\n }\n }\n\n _setupConversion() {\n const editor = this.editor;\n const t = editor.t;\n const conversion = editor.conversion;\n const videoUtils = editor.plugins.get( 'VideoUtils' );\n\n conversion.for( 'dataDowncast' )\n .elementToElement( {\n model: 'videoInline',\n view: ( modelElement, { writer } ) => writer.createEmptyElement( 'video' )\n } );\n\n conversion.for( 'editingDowncast' )\n .elementToElement( {\n model: 'videoInline',\n view: ( modelElement, { writer } ) => videoUtils.toVideoWidget(\n createVideoViewElement( writer, 'videoInline' ), writer, t( 'video widget' )\n )\n } );\n\n conversion.for( 'downcast' )\n .add( downcastVideoAttribute( videoUtils, 'videoInline', 'src' ) );\n conversion.for( 'downcast' )\n .add( downcastVideoAttribute( videoUtils, 'videoInline', 'data-document-id' ) );\n conversion.for( 'downcast' )\n .add( downcastVideoAttribute( videoUtils, 'videoInline', 'poster' ) );\n\n conversion.for( 'upcast' )\n .elementToElement( {\n view: getVideoViewElementMatcher( editor, 'videoInline' ),\n model: ( viewVideo, { writer } ) => writer.createElement( 'videoInline', { src: viewVideo.getAttribute( 'src' ), 'data-document-id': viewVideo.getAttribute( 'data-document-id' ), poster: viewVideo.getAttribute( 'poster' ) } )\n } );\n }\n\n _setupClipboardIntegration() {\n const editor = this.editor;\n const model = editor.model;\n const editingView = editor.editing.view;\n const videoUtils = editor.plugins.get( 'VideoUtils' );\n\n this.listenTo( editor.plugins.get( 'ClipboardPipeline' ), 'inputTransformation', ( evt, data ) => {\n const docFragmentChildren = Array.from( data.content.getChildren() );\n let modelRange;\n\n if ( !docFragmentChildren.every( videoUtils.isBlockVideoView ) ) {\n return;\n }\n\n if ( data.targetRanges ) {\n modelRange = editor.editing.mapper.toModelRange( data.targetRanges[ 0 ] );\n }\n else {\n modelRange = model.document.selection.getFirstRange();\n }\n\n const selection = model.createSelection( modelRange );\n\n if ( determineVideoTypeForInsertionAtSelection( model.schema, selection ) === 'videoInline' ) {\n const writer = new UpcastWriter( editingView.document );\n\n const inlineViewVideos = docFragmentChildren.map( blockViewVideo => {\n if ( blockViewVideo.childCount === 1 ) {\n Array.from( blockViewVideo.getAttributes() )\n .forEach( attribute => writer.setAttribute(\n ...attribute,\n videoUtils.findViewVideoElement( blockViewVideo )\n ) );\n\n return blockViewVideo.getChild( 0 );\n } else {\n return blockViewVideo;\n }\n } );\n\n data.content = writer.createDocumentFragment( inlineViewVideos );\n }\n } );\n }\n}\n","import { Plugin } from 'ckeditor5/src/core';\nimport { Widget } from 'ckeditor5/src/widget';\n\nimport VideoInlineEditing from './video/videoinlineediting';\n\nimport '../theme/video.css';\n\nexport default class VideoInline extends Plugin {\n static get requires() {\n return [ VideoInlineEditing, Widget ];\n }\n\n static get pluginName() {\n return 'VideoInline';\n }\n}\n","import { global } from 'ckeditor5/src/utils';\n\nexport function createVideoTypeRegExp(types) {\n const regExpSafeNames = types.map(type => type.replace('+', '\\\\+'));\n return new RegExp(`^video\\\\/(${regExpSafeNames.join('|')})$`);\n}\n\nexport function fetchLocalVideo( video ) {\n return new Promise( ( resolve, reject ) => {\n const videoSrc = video.getAttribute( 'src' );\n\n // Fetch works asynchronously and so does not block browser UI when processing data.\n fetch( videoSrc )\n .then( resource => resource.blob() )\n .then( blob => {\n const mimeType = getVideoMimeType( blob, videoSrc );\n const ext = mimeType.replace( 'video/', '' );\n const filename = `video.${ ext }`;\n const file = new File( [ blob ], filename, { type: mimeType } );\n\n resolve( file );\n } )\n .catch( err => {\n return err && err.name === 'TypeError' ?\n convertLocalVideoOnCanvas( videoSrc ).then( resolve ).catch( reject ) :\n reject( err );\n } );\n } );\n}\n\nexport function isLocalVideo( videoUtils, node ) {\n if ( !videoUtils.isInlineVideoView( node ) || !node.getAttribute( 'src' ) ) {\n return false;\n }\n\n return node.getAttribute( 'src' ).match( /^data:video\\/\\w+;base64,/g ) ||\n node.getAttribute( 'src' ).match( /^blob:/g );\n}\n\nfunction getVideoMimeType( blob, src ) {\n if ( blob.type ) {\n return blob.type;\n } else if ( src.match( /data:(video\\/\\w+);base64/ ) ) {\n return src.match( /data:(video\\/\\w+);base64/ )[ 1 ].toLowerCase();\n } else {\n // Fallback to 'mp4' as common extension.\n return 'video/mp4';\n }\n}\n\nfunction convertLocalVideoOnCanvas( videoSrc ) {\n return getBlobFromCanvas( videoSrc ).then( blob => {\n const mimeType = getVideoMimeType( blob, videoSrc );\n const ext = mimeType.replace( 'video/', '' );\n const filename = `video.${ ext }`;\n\n return new File( [ blob ], filename, { type: mimeType } );\n } );\n}\n\nfunction getBlobFromCanvas( videoSrc ) {\n return new Promise( ( resolve, reject ) => {\n const video = global.document.createElement( 'video' );\n\n video.addEventListener( 'load', () => {\n const canvas = global.document.createElement( 'canvas' );\n\n canvas.width = video.width;\n canvas.height = video.height;\n\n const ctx = canvas.getContext( '2d' );\n\n ctx.drawVideo( video, 0, 0 );\n\n canvas.toBlob( blob => blob ? resolve( blob ) : reject() );\n } );\n\n video.addEventListener( 'error', () => reject() );\n\n video.src = videoSrc;\n } );\n}\n","import { Plugin } from 'ckeditor5/src/core';\nimport { FileDialogButtonView } from 'ckeditor5/src/upload';\nimport videoUploadIcon from '../../theme/icons/video.svg';\nimport {createVideoTypeRegExp} from \"./utils\";\n\nexport default class VideoUploadUI extends Plugin {\n init() {\n const editor = this.editor;\n const t = editor.t;\n\n const componentCreator = locale => {\n const view = new FileDialogButtonView( locale );\n const command = editor.commands.get('uploadVideo');\n const videoTypes = editor.config.get('video.upload.types');\n const videoMediaTypesRegExp = createVideoTypeRegExp(videoTypes);\n\n view.set({\n acceptedType: videoTypes.map(type => `video/${type}`).join(','),\n allowMultipleFiles: editor.config.get('video.upload.allowMultipleFiles')\n });\n\n view.buttonView.set({\n label: t('Upload Video'),\n icon: videoUploadIcon,\n tooltip: true\n });\n\n\n view.buttonView.bind('isEnabled').to(command);\n\n view.on('done', (evt, files) => {\n const videosToUpload = Array.from(files).filter(file => videoMediaTypesRegExp.test(file.type));\n\n if (videosToUpload.length) {\n editor.execute('uploadVideo', { files: videosToUpload });\n }\n });\n\n return view;\n };\n\n editor.ui.componentFactory.add( 'uploadVideo', componentCreator );\n editor.ui.componentFactory.add( 'videoUpload', componentCreator );\n }\n}\n","export default \"<?xml version=\\\"1.0\\\" ?><svg id=\\\"Layer_1\\\" style=\\\"enable-background:new 0 0 32 30;\\\" version=\\\"1.1\\\" viewBox=\\\"0 0 32 30\\\" xml:space=\\\"preserve\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M25.7,10V6.4c0-1.4-1.1-2.5-2.5-2.5H2.5C1.1,3.9,0,5,0,6.4v14.3c0,1.4,1.1,2.5,2.5,2.5h10c0-0.3-0.1-0.7-0.1-1s0-0.6,0-1 h-10c-0.3,0-0.5-0.2-0.5-0.5V6.4C2,6.1,2.2,5.9,2.5,5.9h20.7c0.3,0,0.5,0.2,0.5,0.5v4.8v4.7v0.8c1,1.3,1.8,2.8,2,4.5l0,0v-4.1 l6.3,3.7V6.3L25.7,10z M30,17.2l-4.3-2.5v-2.4L30,9.8V17.2z\\\"/><path d=\\\"M20.1,21.1l2,0l0,2l-2,0l0,2l-2,0l0-2l-2,0l0-2l2,0l0-2l2,0L20.1,21.1z M18.9,16.3c-3.3,0-5.9,2.7-5.8,6 c0,3.3,2.7,5.9,6,5.8c3.3,0,5.9-2.7,5.8-6C24.9,18.9,22.2,16.2,18.9,16.3z M19,26.1c-2.2,0-3.9-1.6-4-3.8c0-2.2,1.7-3.9,3.9-4 c2.2,0,3.9,1.8,3.9,3.8C22.9,24.4,21.3,26,19,26.1z\\\"/></svg>\\n\";","import { FileRepository } from 'ckeditor5/src/upload';\nimport { Command } from 'ckeditor5/src/core';\nimport { toArray } from 'ckeditor5/src/utils';\n\nexport default class UploadVideoCommand extends Command {\n refresh() {\n const editor = this.editor;\n const videoUtils = editor.plugins.get( 'VideoUtils' );\n const selectedElement = editor.model.document.selection.getSelectedElement();\n\n this.isEnabled = videoUtils.isVideoAllowed() || videoUtils.isVideo( selectedElement );\n }\n\n execute( options ) {\n if (!options.file && !options.files) {\n return;\n }\n\n const files = options.file ? toArray( options.file ) : toArray( options.files );\n const selection = this.editor.model.document.selection;\n const videoUtils = this.editor.plugins.get( 'VideoUtils' );\n const selectionAttributes = Object.fromEntries( selection.getAttributes() );\n\n files.forEach( ( file, index ) => {\n const selectedElement = selection.getSelectedElement();\n\n if ( index && selectedElement && videoUtils.isVideo( selectedElement ) ) {\n const position = this.editor.model.createPositionAfter( selectedElement );\n\n this._uploadVideo( file, selectionAttributes, position );\n } else {\n this._uploadVideo( file, selectionAttributes );\n }\n } );\n }\n\n _uploadVideo( file, attributes, position ) {\n const editor = this.editor;\n const fileRepository = editor.plugins.get( FileRepository );\n const loader = fileRepository.createLoader( file );\n const videoUtils = editor.plugins.get( 'VideoUtils' );\n\n if ( !loader ) {\n return;\n }\n\n videoUtils.insertVideo( { ...attributes, uploadId: loader.id }, position );\n }\n}\n","import { Plugin } from 'ckeditor5/src/core';\nimport { UpcastWriter } from 'ckeditor5/src/engine';\nimport { Notification } from 'ckeditor5/src/ui';\nimport { ClipboardPipeline } from 'ckeditor5/src/clipboard';\nimport { FileRepository } from 'ckeditor5/src/upload';\nimport { env } from 'ckeditor5/src/utils';\nimport VideoUtils from '../videoutils';\nimport UploadVideoCommand from './uploadvideocommand';\nimport { fetchLocalVideo, isLocalVideo, createVideoTypeRegExp } from './utils';\n\nconst DEFAULT_VIDEO_EXTENSIONS = ['mp4', 'webm', 'ogg'];\n\n\nexport default class VideoUploadEditing extends Plugin {\n static get requires() {\n return [ FileRepository, Notification, ClipboardPipeline, VideoUtils ];\n }\n\n static get pluginName() {\n return 'VideoUploadEditing';\n }\n\n constructor( editor ) {\n super( editor );\n\n editor.config.define('video.upload', {\n types: DEFAULT_VIDEO_EXTENSIONS,\n allowMultipleFiles: true,\n });\n\n this._uploadVideoElements = new Map();\n }\n\n init() {\n const editor = this.editor;\n const doc = editor.model.document;\n const conversion = editor.conversion;\n const fileRepository = editor.plugins.get( FileRepository );\n const videoUtils = editor.plugins.get( 'VideoUtils' );\n const videoTypes = createVideoTypeRegExp( editor.config.get( 'video.upload.types' ) );\n const uploadVideoCommand = new UploadVideoCommand( editor );\n\n editor.commands.add( 'uploadVideo', uploadVideoCommand );\n editor.commands.add( 'videoUpload', uploadVideoCommand );\n\n conversion.for( 'upcast' )\n .attributeToAttribute( {\n view: {\n name: 'video',\n key: 'uploadId'\n },\n model: 'uploadId'\n } );\n\n this.listenTo( editor.editing.view.document, 'clipboardInput', ( evt, data ) => {\n if ( isHtmlIncluded( data.dataTransfer ) ) {\n return;\n }\n\n const videos = Array.from( data.dataTransfer.files ).filter( file => {\n if ( !file ) {\n return false;\n }\n\n return videoTypes.test( file.type );\n } );\n\n if ( !videos.length ) {\n return;\n }\n\n evt.stop();\n\n editor.model.change( writer => {\n if ( data.targetRanges ) {\n writer.setSelection( data.targetRanges.map( viewRange => editor.editing.mapper.toModelRange( viewRange ) ) );\n }\n\n editor.model.enqueueChange( 'default', () => {\n editor.execute( 'uploadVideo', { file: videos } );\n } );\n } );\n } );\n\n this.listenTo( editor.plugins.get( 'ClipboardPipeline' ), 'inputTransformation', ( evt, data ) => {\n const fetchableVideos = Array.from( editor.editing.view.createRangeIn( data.content ) )\n .filter( value => isLocalVideo( videoUtils, value.item ) && !value.item.getAttribute( 'uploadProcessed' ) )\n .map( value => { return { promise: fetchLocalVideo( value.item ), videoElement: value.item }; } );\n\n if ( !fetchableVideos.length ) {\n return;\n }\n\n const writer = new UpcastWriter( editor.editing.view.document );\n\n for ( const fetchableVideo of fetchableVideos ) {\n writer.setAttribute( 'uploadProcessed', true, fetchableVideo.videoElement );\n\n const loader = fileRepository.createLoader( fetchableVideo.promise );\n\n if ( loader ) {\n writer.setAttribute( 'src', '', fetchableVideo.videoElement );\n writer.setAttribute( 'uploadId', loader.id, fetchableVideo.videoElement );\n }\n }\n } );\n\n editor.editing.view.document.on( 'dragover', ( evt, data ) => {\n data.preventDefault();\n } );\n\n doc.on( 'change', () => {\n const changes = doc.differ.getChanges( { includeChangesInGraveyard: true } ).reverse();\n const insertedVideosIds = new Set();\n\n for ( const entry of changes ) {\n if ( entry.type === 'insert' && entry.name !== '$text' ) {\n const item = entry.position.nodeAfter;\n const isInsertedInGraveyard = entry.position.root.rootName === '$graveyard';\n\n for ( const videoElement of getVideosFromChangeItem( editor, item ) ) {\n const uploadId = videoElement.getAttribute( 'uploadId' );\n\n if ( !uploadId ) {\n continue;\n }\n\n const loader = fileRepository.loaders.get( uploadId );\n\n if ( !loader ) {\n continue;\n }\n\n if ( isInsertedInGraveyard ) {\n if ( !insertedVideosIds.has( uploadId ) ) {\n loader.abort();\n }\n } else {\n insertedVideosIds.add( uploadId );\n this._uploadVideoElements.set( uploadId, videoElement );\n\n if ( loader.status == 'idle' ) {\n this._readAndUpload( loader );\n }\n }\n }\n }\n }\n } );\n\n this.on( 'uploadComplete', ( evt, { videoElement, data } ) => {\n const urls = data.urls ? data.urls : data;\n\n this.editor.model.change( writer => {\n writer.setAttribute( 'src', urls.default, videoElement );\n } );\n }, { priority: 'low' } );\n }\n\n afterInit() {\n const schema = this.editor.model.schema;\n\n if ( this.editor.plugins.has( 'VideoBlockEditing' ) ) {\n schema.extend( 'videoBlock', {\n allowAttributes: [ 'uploadId', 'uploadStatus' ]\n } );\n }\n\n if ( this.editor.plugins.has( 'VideoInlineEditing' ) ) {\n schema.extend( 'videoInline', {\n allowAttributes: [ 'uploadId', 'uploadStatus' ]\n } );\n }\n }\n\n _readAndUpload( loader ) {\n const editor = this.editor;\n const model = editor.model;\n const t = editor.locale.t;\n const fileRepository = editor.plugins.get( FileRepository );\n const notification = editor.plugins.get( Notification );\n const videoUtils = editor.plugins.get( 'VideoUtils' );\n const videoUploadElements = this._uploadVideoElements;\n\n model.enqueueChange( 'transparent', writer => {\n writer.setAttribute( 'uploadStatus', 'reading', videoUploadElements.get( loader.id ) );\n } );\n\n return loader.read()\n .then( () => {\n const promise = loader.upload();\n const videoElement = videoUploadElements.get( loader.id );\n\n if ( env.isSafari ) {\n const viewFigure = editor.editing.mapper.toViewElement( videoElement );\n const viewVideo = videoUtils.findViewVideoElement( viewFigure );\n\n editor.editing.view.once( 'render', () => {\n if ( !viewVideo.parent ) {\n return;\n }\n\n const domFigure = editor.editing.view.domConverter.mapViewToDom( viewVideo.parent );\n\n if ( !domFigure ) {\n return;\n }\n\n const originalDisplay = domFigure.style.display;\n\n domFigure.style.display = 'none';\n\n domFigure._ckHack = domFigure.offsetHeight;\n\n domFigure.style.display = originalDisplay;\n } );\n }\n\n model.enqueueChange( 'transparent', writer => {\n writer.setAttribute( 'uploadStatus', 'uploading', videoElement );\n } );\n\n return promise;\n } )\n .then( data => {\n model.enqueueChange( 'transparent', writer => {\n const videoElement = videoUploadElements.get( loader.id );\n\n writer.setAttribute( 'uploadStatus', 'complete', videoElement );\n\n this.fire( 'uploadComplete', { data, videoElement } );\n } );\n\n clean();\n } )\n .catch( error => {\n if ( loader.status !== 'error' && loader.status !== 'aborted' ) {\n throw error;\n }\n\n if ( loader.status === 'error' && error ) {\n notification.showWarning( error, {\n title: t( 'Upload failed' ),\n namespace: 'upload'\n } );\n }\n\n model.enqueueChange( 'transparent', writer => {\n writer.remove( videoUploadElements.get( loader.id ) );\n } );\n\n clean();\n } );\n\n function clean() {\n model.enqueueChange( 'transparent', writer => {\n const videoElement = videoUploadElements.get( loader.id );\n\n writer.removeAttribute( 'uploadId', videoElement );\n writer.removeAttribute( 'uploadStatus', videoElement );\n\n videoUploadElements.delete( loader.id );\n } );\n\n fileRepository.destroyLoader( loader );\n }\n }\n}\n\nexport function isHtmlIncluded( dataTransfer ) {\n return Array.from( dataTransfer.types ).includes( 'text/html' ) && dataTransfer.getData( 'text/html' ) !== '';\n}\n\nfunction getVideosFromChangeItem( editor, item ) {\n const videoUtils = editor.plugins.get( 'VideoUtils' );\n\n return Array.from( editor.model.createRangeOn( item ) )\n .filter( value => videoUtils.isVideo( value.item ) )\n .map( value => value.item );\n}\n","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./videouploadprogress.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./videouploadicon.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./videouploadloader.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { Plugin } from 'ckeditor5/src/core';\nimport { FileRepository } from 'ckeditor5/src/upload';\nimport uploadingPlaceholder from '../../theme/icons/video_placeholder.svg';\n\nimport '../../theme/videouploadprogress.css';\nimport '../../theme/videouploadicon.css';\nimport '../../theme/videouploadloader.css';\n\nexport default class VideoUploadProgress extends Plugin {\n static get pluginName() {\n return 'VideoUploadProgress';\n }\n\n constructor( editor ) {\n super( editor );\n\n this.placeholder = 'data:video/svg+xml;utf8,' + encodeURIComponent( uploadingPlaceholder );\n }\n\n init() {\n const editor = this.editor;\n\n // Upload status change - update video's view according to that status.\n if ( editor.plugins.has( 'VideoBlockEditing' ) ) {\n editor.editing.downcastDispatcher.on( 'attribute:uploadStatus:videoBlock', ( ...args ) => this.uploadStatusChange( ...args ) );\n }\n\n if ( editor.plugins.has( 'VideoInlineEditing' ) ) {\n editor.editing.downcastDispatcher.on( 'attribute:uploadStatus:videoInline', ( ...args ) => this.uploadStatusChange( ...args ) );\n }\n }\n\n uploadStatusChange( evt, data, conversionApi ) {\n const editor = this.editor;\n const modelVideo = data.item;\n const uploadId = modelVideo.getAttribute( 'uploadId' );\n\n if ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n return;\n }\n\n const videoUtils = editor.plugins.get( 'VideoUtils' );\n const fileRepository = editor.plugins.get( FileRepository );\n const status = uploadId ? data.attributeNewValue : null;\n const placeholder = this.placeholder;\n const viewFigure = editor.editing.mapper.toViewElement( modelVideo );\n const viewWriter = conversionApi.writer;\n\n if ( status === 'reading' ) {\n // Start \"appearing\" effect and show placeholder with infinite progress bar on the top\n // while video is read from disk.\n _startAppearEffect( viewFigure, viewWriter );\n _showPlaceholder( videoUtils, placeholder, viewFigure, viewWriter );\n return;\n }\n\n // Show progress bar on the top of the video when video is uploading.\n if ( status === 'uploading' ) {\n const loader = fileRepository.loaders.get( uploadId );\n\n // Start appear effect if needed - see https://github.com/ckeditor/ckeditor5-video/issues/191.\n _startAppearEffect( viewFigure, viewWriter );\n\n if ( !loader ) {\n // There is no loader associated with uploadId - this means that video came from external changes.\n // In such cases we still want to show the placeholder until video is fully uploaded.\n // Show placeholder if needed - see https://github.com/ckeditor/ckeditor5-video/issues/191.\n _showPlaceholder( videoUtils, placeholder, viewFigure, viewWriter );\n } else {\n // Hide placeholder and initialize progress bar showing upload progress.\n _hidePlaceholder( viewFigure, viewWriter );\n _showProgressBar( viewFigure, viewWriter, loader, editor.editing.view );\n _displayLocalVideo( videoUtils, viewFigure, viewWriter, loader );\n }\n\n return;\n }\n\n if ( status === 'complete' && fileRepository.loaders.get( uploadId ) ) {\n _showCompleteIcon( viewFigure, viewWriter, editor.editing.view );\n }\n\n // Clean up.\n _hideProgressBar( viewFigure, viewWriter );\n _hidePlaceholder( viewFigure, viewWriter );\n _stopAppearEffect( viewFigure, viewWriter );\n }\n}\n\nfunction _startAppearEffect( viewFigure, writer ) {\n if ( !viewFigure.hasClass( 'ck-appear' ) ) {\n writer.addClass( 'ck-appear', viewFigure );\n }\n}\n\nfunction _stopAppearEffect( viewFigure, writer ) {\n writer.removeClass( 'ck-appear', viewFigure );\n}\n\nfunction _showPlaceholder( videoUtils, placeholder, viewFigure, writer ) {\n if ( !viewFigure.hasClass( 'ck-video-upload-placeholder' ) ) {\n writer.addClass( 'ck-video-upload-placeholder', viewFigure );\n }\n\n const viewVideo = videoUtils.findViewVideoElement( viewFigure );\n\n if ( viewVideo.getAttribute( 'src' ) !== placeholder ) {\n writer.setAttribute( 'src', placeholder, viewVideo );\n }\n\n if ( !_getUIElement( viewFigure, 'placeholder' ) ) {\n writer.insert( writer.createPositionAfter( viewVideo ), _createPlaceholder( writer ) );\n }\n}\n\nfunction _hidePlaceholder( viewFigure, writer ) {\n if ( viewFigure.hasClass( 'ck-video-upload-placeholder' ) ) {\n writer.removeClass( 'ck-video-upload-placeholder', viewFigure );\n }\n\n _removeUIElement( viewFigure, writer, 'placeholder' );\n}\n\nfunction _showProgressBar( viewFigure, writer, loader, view ) {\n const progressBar = _createProgressBar( writer );\n writer.insert( writer.createPositionAt( viewFigure, 'end' ), progressBar );\n\n // Update progress bar width when uploadedPercent is changed.\n loader.on( 'change:uploadedPercent', ( evt, name, value ) => {\n view.change( writer => {\n writer.setStyle( 'width', value + '%', progressBar );\n } );\n } );\n}\n\nfunction _hideProgressBar( viewFigure, writer ) {\n _removeUIElement( viewFigure, writer, 'progressBar' );\n}\n\nfunction _showCompleteIcon( viewFigure, writer, view ) {\n const completeIcon = writer.createUIElement( 'div', { class: 'ck-video-upload-complete-icon' } );\n\n writer.insert( writer.createPositionAt( viewFigure, 'end' ), completeIcon );\n\n setTimeout( () => {\n view.change( writer => writer.remove( writer.createRangeOn( completeIcon ) ) );\n }, 3000 );\n}\n\nfunction _createProgressBar( writer ) {\n const progressBar = writer.createUIElement( 'div', { class: 'ck-progress-bar' } );\n\n writer.setCustomProperty( 'progressBar', true, progressBar );\n\n return progressBar;\n}\n\nfunction _createPlaceholder( writer ) {\n const placeholder = writer.createUIElement( 'div', { class: 'ck-upload-placeholder-loader' } );\n\n writer.setCustomProperty( 'placeholder', true, placeholder );\n\n return placeholder;\n}\n\nfunction _getUIElement( videoFigure, uniqueProperty ) {\n for ( const child of videoFigure.getChildren() ) {\n if ( child.getCustomProperty( uniqueProperty ) ) {\n return child;\n }\n }\n}\n\nfunction _removeUIElement( viewFigure, writer, uniqueProperty ) {\n const element = _getUIElement( viewFigure, uniqueProperty );\n\n if ( element ) {\n writer.remove( writer.createRangeOn( element ) );\n }\n}\n\nfunction _displayLocalVideo( videoUtils, viewFigure, writer, loader ) {\n if ( loader.data ) {\n const viewVideo = videoUtils.findViewVideoElement( viewFigure );\n\n writer.setAttribute( 'src', loader.data, viewVideo );\n }\n}\n","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 700 250\\\"><rect rx=\\\"4\\\"/></svg>\";","import { Plugin } from 'ckeditor5/src/core';\nimport VideoUploadUI from \"./videoupload/videouploadui\";\nimport VideoUploadEditing from \"./videoupload/videouploadediting\";\nimport VideoUploadProgress from \"./videoupload/videouploadprogress\";\n\nexport default class VideoUpload extends Plugin {\n static get requires() {\n return [VideoUploadEditing, VideoUploadUI, VideoUploadProgress];\n }\n}\n","import { Command } from 'ckeditor5/src/core';\n\nexport default class ResizeVideoCommand extends Command {\n\trefresh() {\n\t\tconst editor = this.editor;\n\t\tconst videoUtils = editor.plugins.get( 'VideoUtils' );\n\t\tconst element = videoUtils.getClosestSelectedVideoElement( editor.model.document.selection );\n\n\t\tthis.isEnabled = !!element;\n\n\t\tif ( !element || !element.hasAttribute( 'width' ) ) {\n\t\t\tthis.value = null;\n\t\t} else {\n\t\t\tthis.value = {\n\t\t\t\twidth: element.getAttribute( 'width' ),\n\t\t\t\theight: null\n\t\t\t};\n\t\t}\n\t}\n\n\texecute( options ) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst videoUtils = editor.plugins.get( 'VideoUtils' );\n\t\tconst videoElement = videoUtils.getClosestSelectedVideoElement(model.document.selection);\n\n\t\tthis.value = {\n\t\t\twidth: options.width,\n\t\t\theight: null\n\t\t};\n\n\t\tif ( videoElement ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.setAttribute( 'width', options.width, videoElement );\n\t\t\t} );\n\t\t}\n\t}\n}\n","import { Plugin } from 'ckeditor5/src/core';\nimport VideoUtils from \"../videoutils\";\nimport ResizeVideoCommand from './resizevideocommand';\n\nexport default class VideoResizeEditing extends Plugin {\n\tstatic get requires() {\n\t\treturn [ VideoUtils ];\n\t}\n\n\tstatic get pluginName() {\n\t\treturn 'VideoResizeEditing';\n\t}\n\n\tconstructor( editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'video', {\n\t\t\tresizeUnit: '%',\n\t\t\tresizeOptions: [ {\n\t\t\t\tname: 'resizeVideo:original',\n\t\t\t\tvalue: null,\n\t\t\t\ticon: 'original'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'resizeVideo:25',\n\t\t\t\tvalue: '25',\n\t\t\t\ticon: 'small'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'resizeVideo:50',\n\t\t\t\tvalue: '50',\n\t\t\t\ticon: 'medium'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'resizeVideo:75',\n\t\t\t\tvalue: '75',\n\t\t\t\ticon: 'large'\n\t\t\t} ]\n\t\t} );\n\t}\n\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst resizeVideoCommand = new ResizeVideoCommand( editor );\n\n\t\tthis._registerSchema();\n\t\tthis._registerConverters( 'videoBlock' );\n\t\tthis._registerConverters( 'videoInline' );\n\n\t\teditor.commands.add( 'resizeVideo', resizeVideoCommand );\n\t\teditor.commands.add( 'videoResize', resizeVideoCommand );\n\t}\n\n\t_registerSchema() {\n\t\tif ( this.editor.plugins.has( 'VideoBlockEditing' ) ) {\n\t\t\tthis.editor.model.schema.extend( 'videoBlock', { allowAttributes: 'width' } );\n\t\t}\n\n\t\tif ( this.editor.plugins.has( 'VideoInlineEditing' ) ) {\n\t\t\tthis.editor.model.schema.extend( 'videoInline', { allowAttributes: 'width' } );\n\t\t}\n\t}\n\n\t_registerConverters( videoType ) {\n\t\tconst editor = this.editor;\n\n\t\teditor.conversion.for( 'downcast' ).add( dispatcher =>\n\t\t\tdispatcher.on( `attribute:width:${ videoType }`, ( evt, data, conversionApi ) => {\n\t\t\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\t\tconst figure = conversionApi.mapper.toViewElement( data.item );\n\n\t\t\t\tif ( data.attributeNewValue !== null ) {\n\t\t\t\t\tviewWriter.setStyle( 'width', data.attributeNewValue, figure );\n\t\t\t\t\tviewWriter.addClass( 'video_resized', figure );\n\t\t\t\t} else {\n\t\t\t\t\tviewWriter.removeStyle( 'width', figure );\n\t\t\t\t\tviewWriter.removeClass( 'video_resized', figure );\n\t\t\t\t}\n\t\t\t} )\n\t\t);\n\n\t\teditor.conversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: videoType === 'videoBlock' ? 'figure' : 'video',\n\t\t\t\t\tstyles: {\n\t\t\t\t\t\twidth: /.+/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\tkey: 'width',\n\t\t\t\t\tvalue: viewElement => viewElement.getStyle( 'width' )\n\t\t\t\t}\n\t\t\t} );\n\t}\n}\n","import { Plugin } from 'ckeditor5/src/core';\nimport { WidgetResize } from 'ckeditor5/src/widget';\nimport VideoLoadObserver from '../video/videoloadobserver';\n\nconst RESIZABLE_VIDEOS_CSS_SELECTOR =\n\t'figure.video.ck-widget > video,' +\n\t'figure.video.ck-widget > a > video,' +\n\t'span.video-inline.ck-widget > video';\n\nconst VIDEO_WIDGETS_CLASSES_MATCH_REGEXP = /(video|video-inline)/;\n\nconst RESIZED_VIDEO_CLASS = 'video_resized';\n\nexport default class VideoResizeHandles extends Plugin {\n\tstatic get requires() {\n\t\treturn [ WidgetResize ];\n\t}\n\n\tstatic get pluginName() {\n\t\treturn 'VideoResizeHandles';\n\t}\n\n\tinit() {\n\t\tconst command = this.editor.commands.get('resizeVideo');\n\t\tthis.bind('isEnabled').to(command);\n\n\t\tthis._setupResizerCreator();\n\t}\n\n\t_setupResizerCreator() {\n\n\t\tconst editor = this.editor;\n\t\tconst editingView = editor.editing.view;\n\n\t\teditingView.addObserver( VideoLoadObserver );\n\t\tthis.listenTo( editingView.document, 'videoLoaded', ( evt, domEvent ) => {\n\t\t\tif ( !domEvent.target.matches( RESIZABLE_VIDEOS_CSS_SELECTOR) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst domConverter = editor.editing.view.domConverter;\n\t\t\tconst videoView = domConverter.domToView( domEvent.target );\n\t\t\tconst widgetView = videoView.findAncestor( { classes: VIDEO_WIDGETS_CLASSES_MATCH_REGEXP } );\n\n\t\t\tlet resizer = this.editor.plugins.get( WidgetResize ).getResizerByViewElement( widgetView );\n\n\t\t\tif ( resizer ) {\n\t\t\t\tresizer.redraw();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tconst mapper = editor.editing.mapper;\n\t\t\tconst videoModel = mapper.toModelElement( widgetView );\n\n\t\t\tresizer = editor.plugins\n\t\t\t\t.get( WidgetResize )\n\t\t\t\t.attachTo( {\n\t\t\t\t\tunit: editor.config.get( 'video.resizeUnit' ),\n\n\t\t\t\t\tmodelElement: videoModel,\n\t\t\t\t\tviewElement: widgetView,\n\t\t\t\t\teditor,\n\t\t\t\t\tgetHandleHost( domWidgetElement ) {\n\t\t\t\t\t\treturn domWidgetElement.querySelector( 'video' );\n\t\t\t\t\t},\n\t\t\t\t\tgetResizeHost( domWidgetElement ) {\n\t\t\t\t\t\treturn domConverter.viewToDom( mapper.toViewElement( videoModel.parent ) );\n\t\t\t\t\t},\n\t\t\t\t\tisCentered() {\n\t\t\t\t\t\tconst videoStyle = videoModel.getAttribute( 'videoStyle' );\n\n\t\t\t\t\t\treturn !videoStyle || videoStyle === 'block' || videoStyle === 'alignCenter';\n\t\t\t\t\t},\n\n\t\t\t\t\tonCommit( newValue ) {\n\t\t\t\t\t\teditingView.change( writer => {\n\t\t\t\t\t\t\twriter.removeClass( RESIZED_VIDEO_CLASS, widgetView );\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\teditor.execute( 'resizeVideo', { width: newValue } );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\tresizer.on( 'updateSize', () => {\n\t\t\t\tif ( !widgetView.hasClass( RESIZED_VIDEO_CLASS ) ) {\n\t\t\t\t\teditingView.change( writer => {\n\t\t\t\t\t\twriter.addClass( RESIZED_VIDEO_CLASS, widgetView );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tresizer.bind( 'isEnabled' ).to( this );\n\t\t} );\n\t}\n}\n","import { Plugin, icons } from 'ckeditor5/src/core';\nimport { ButtonView, DropdownButtonView, Model, createDropdown, addListToDropdown } from 'ckeditor5/src/ui';\nimport { CKEditorError, Collection } from 'ckeditor5/src/utils';\nimport VideoResizeEditing from \"./videoresizeediting\";\n\nconst RESIZE_ICONS = {\n\tsmall: icons.objectSizeSmall,\n\tmedium: icons.objectSizeMedium,\n\tlarge: icons.objectSizeLarge,\n\toriginal: icons.objectSizeFull\n};\n\nexport default class VideoResizeButtons extends Plugin {\n\tstatic get requires() {\n\t\treturn [ VideoResizeEditing ];\n\t}\n\n\tstatic get pluginName() {\n\t\treturn 'VideoResizeButtons';\n\t}\n\n\tconstructor( editor ) {\n\t\tsuper( editor );\n\n\t\tthis._resizeUnit = editor.config.get( 'video.resizeUnit' );\n\t}\n\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst options = editor.config.get( 'video.resizeOptions' );\n\t\tconst command = editor.commands.get( 'resizeVideo' );\n\n\t\tthis.bind( 'isEnabled' ).to( command );\n\n\t\tfor ( const option of options ) {\n\t\t\tthis._registerVideoResizeButton( option );\n\t\t}\n\n\t\tthis._registerVideoResizeDropdown( options );\n\t}\n\n\t_registerVideoResizeButton( option ) {\n\t\tconst editor = this.editor;\n\t\tconst { name, value, icon } = option;\n\t\tconst optionValueWithUnit = value ? value + this._resizeUnit : null;\n\n\t\teditor.ui.componentFactory.add( name, locale => {\n\t\t\tconst button = new ButtonView( locale );\n\t\t\tconst command = editor.commands.get( 'resizeVideo' );\n\t\t\tconst labelText = this._getOptionLabelValue( option, true );\n\n\t\t\tif ( !RESIZE_ICONS[ icon ] ) {\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'videoresizebuttons-missing-icon',\n\t\t\t\t\teditor,\n\t\t\t\t\toption\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tbutton.set( {\n\t\t\t\t// Use the `label` property for a verbose description (because of ARIA).\n\t\t\t\tlabel: labelText,\n\t\t\t\ticon: RESIZE_ICONS[ icon ],\n\t\t\t\ttooltip: labelText,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\t// Bind button to the command.\n\t\t\tbutton.bind( 'isEnabled' ).to( this );\n\t\t\tbutton.bind( 'isOn' ).to( command, 'value', getIsOnButtonCallback( optionValueWithUnit ) );\n\n\t\t\tthis.listenTo( button, 'execute', () => {\n\t\t\t\teditor.execute( 'resizeVideo', { width: optionValueWithUnit } );\n\t\t\t} );\n\n\t\t\treturn button;\n\t\t} );\n\t}\n\n\t_registerVideoResizeDropdown( options ) {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst originalSizeOption = options.find( option => !option.value );\n\n\t\t// Register dropdown.\n\t\tconst componentCreator = locale => {\n\t\t\tconst command = editor.commands.get( 'resizeVideo' );\n\t\t\tconst dropdownView = createDropdown( locale, DropdownButtonView );\n\t\t\tconst dropdownButton = dropdownView.buttonView;\n\n\t\t\tdropdownButton.set( {\n\t\t\t\ttooltip: t( 'Resize video' ),\n\t\t\t\tcommandValue: originalSizeOption.value,\n\t\t\t\ticon: RESIZE_ICONS.medium,\n\t\t\t\tisToggleable: true,\n\t\t\t\tlabel: this._getOptionLabelValue( originalSizeOption ),\n\t\t\t\twithText: true,\n\t\t\t\tclass: 'ck-resize-video-button'\n\t\t\t} );\n\n\t\t\tdropdownButton.bind( 'label' ).to( command, 'value', commandValue => {\n\t\t\t\tif ( commandValue && commandValue.width ) {\n\t\t\t\t\treturn commandValue.width;\n\t\t\t\t} else {\n\t\t\t\t\treturn this._getOptionLabelValue( originalSizeOption );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tdropdownView.bind( 'isOn' ).to( command );\n\t\t\tdropdownView.bind( 'isEnabled' ).to( this );\n\n\t\t\taddListToDropdown( dropdownView, this._getResizeDropdownListItemDefinitions( options, command ) );\n\n\t\t\tdropdownView.listView.ariaLabel = t( 'Video resize list' );\n\n\t\t\t// Execute command when an item from the dropdown is selected.\n\t\t\tthis.listenTo( dropdownView, 'execute', evt => {\n\t\t\t\teditor.execute( evt.source.commandName, { width: evt.source.commandValue } );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t};\n\n\t\teditor.ui.componentFactory.add( 'resizeVideo', componentCreator );\n\t\teditor.ui.componentFactory.add( 'videoResize', componentCreator );\n\t}\n\n\t_getOptionLabelValue( option, forTooltip ) {\n\t\tconst t = this.editor.t;\n\n\t\tif ( option.label ) {\n\t\t\treturn option.label;\n\t\t} else if ( forTooltip ) {\n\t\t\tif ( option.value ) {\n\t\t\t\treturn t( 'Resize video to %0', option.value + this._resizeUnit );\n\t\t\t} else {\n\t\t\t\treturn t( 'Resize video to the original size' );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( option.value ) {\n\t\t\t\treturn option.value + this._resizeUnit;\n\t\t\t} else {\n\t\t\t\treturn t( 'Original' );\n\t\t\t}\n\t\t}\n\t}\n\n\t_getResizeDropdownListItemDefinitions( options, command ) {\n\t\tconst itemDefinitions = new Collection();\n\n\t\toptions.map( option => {\n\t\t\tconst optionValueWithUnit = option.value ? option.value + this._resizeUnit : null;\n\t\t\tconst definition = {\n\t\t\t\ttype: 'button',\n\t\t\t\tmodel: new Model( {\n\t\t\t\t\tcommandName: 'resizeVideo',\n\t\t\t\t\tcommandValue: optionValueWithUnit,\n\t\t\t\t\tlabel: this._getOptionLabelValue( option ),\n\t\t\t\t\twithText: true,\n\t\t\t\t\ticon: null\n\t\t\t\t} )\n\t\t\t};\n\n\t\t\tdefinition.model.bind( 'isOn' ).to( command, 'value', getIsOnButtonCallback( optionValueWithUnit ) );\n\n\t\t\titemDefinitions.add( definition );\n\t\t} );\n\n\t\treturn itemDefinitions;\n\t}\n}\n\nfunction getIsOnButtonCallback( value ) {\n\treturn commandValue => {\n\t\tif ( value === null && commandValue === value ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn commandValue && commandValue.width === value;\n\t};\n}\n","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./videoresize.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { Command } from 'ckeditor5/src/core';\n\nexport default class VideoStyleCommand extends Command {\n constructor( editor, styles ) {\n super( editor );\n\n this._defaultStyles = {\n videoBlock: false,\n videoInline: false\n };\n\n this._styles = new Map( styles.map( style => {\n if ( style.isDefault ) {\n for ( const modelElementName of style.modelElements ) {\n this._defaultStyles[ modelElementName ] = style.name;\n }\n }\n\n return [ style.name, style ];\n } ) );\n }\n\n refresh() {\n const editor = this.editor;\n const videoUtils = editor.plugins.get( 'VideoUtils' );\n const element = videoUtils.getClosestSelectedVideoElement( this.editor.model.document.selection );\n\n this.isEnabled = !!element;\n\n if ( !this.isEnabled ) {\n this.value = false;\n } else if ( element.hasAttribute( 'videoStyle' ) ) {\n this.value = element.getAttribute( 'videoStyle' );\n } else {\n this.value = this._defaultStyles[ element.name ];\n }\n }\n\n execute( options = {} ) {\n const editor = this.editor;\n const model = editor.model;\n const videoUtils = editor.plugins.get( 'VideoUtils' );\n\n model.change( writer => {\n const requestedStyle = options.value;\n\n let videoElement = videoUtils.getClosestSelectedVideoElement( model.document.selection );\n\n if ( requestedStyle && this.shouldConvertVideoType( requestedStyle, videoElement ) ) {\n this.editor.execute( videoUtils.isBlockVideo( videoElement ) ? 'videoTypeInline' : 'videoTypeBlock' );\n videoElement = videoUtils.getClosestSelectedVideoElement( model.document.selection );\n }\n\n if ( !requestedStyle || this._styles.get( requestedStyle ).isDefault ) {\n writer.removeAttribute( 'videoStyle', videoElement );\n } else {\n writer.setAttribute( 'videoStyle', requestedStyle, videoElement );\n }\n } );\n }\n\n shouldConvertVideoType( requestedStyle, videoElement ) {\n const supportedTypes = this._styles.get( requestedStyle ).modelElements;\n\n return !supportedTypes.includes( videoElement.name );\n }\n}\n","import { icons } from 'ckeditor5/src/core';\nimport { logWarning } from 'ckeditor5/src/utils';\n\nconst {\n objectFullWidth,\n objectInline,\n objectLeft,\tobjectRight, objectCenter,\n objectBlockLeft, objectBlockRight\n} = icons;\n\nconst DEFAULT_OPTIONS = {\n inline: {\n name: 'inline',\n title: 'In line',\n icon: objectInline,\n modelElements: [ 'videoInline' ],\n isDefault: true\n },\n\n alignLeft: {\n name: 'alignLeft',\n title: 'Left aligned video',\n icon: objectLeft,\n modelElements: [ 'videoBlock', 'videoInline' ],\n className: 'video-style-align-left'\n },\n\n alignBlockLeft: {\n name: 'alignBlockLeft',\n title: 'Left aligned video',\n icon: objectBlockLeft,\n modelElements: [ 'videoBlock' ],\n className: 'video-style-block-align-left'\n },\n\n alignCenter: {\n name: 'alignCenter',\n title: 'Centered video',\n icon: objectCenter,\n modelElements: [ 'videoBlock' ],\n className: 'video-style-align-center'\n },\n\n alignRight: {\n name: 'alignRight',\n title: 'Right aligned video',\n icon: objectRight,\n modelElements: [ 'videoBlock', 'videoInline' ],\n className: 'video-style-align-right'\n },\n\n alignBlockRight: {\n name: 'alignBlockRight',\n title: 'Right aligned video',\n icon: objectBlockRight,\n modelElements: [ 'videoBlock' ],\n className: 'video-style-block-align-right'\n },\n\n block: {\n name: 'block',\n title: 'Centered video',\n icon: objectCenter,\n modelElements: [ 'videoBlock' ],\n isDefault: true\n },\n\n side: {\n name: 'side',\n title: 'Side video',\n icon: objectRight,\n modelElements: [ 'videoBlock' ],\n className: 'video-style-side'\n }\n};\n\nconst DEFAULT_ICONS = {\n full: objectFullWidth,\n left: objectBlockLeft,\n right: objectBlockRight,\n center: objectCenter,\n inlineLeft: objectLeft,\n inlineRight: objectRight,\n inline: objectInline\n};\n\nconst DEFAULT_DROPDOWN_DEFINITIONS = [ {\n name: 'videoStyle:wrapText',\n title: 'Wrap text',\n defaultItem: 'videoStyle:alignLeft',\n items: [ 'videoStyle:alignLeft', 'videoStyle:alignRight' ]\n}, {\n name: 'videoStyle:breakText',\n title: 'Break text',\n defaultItem: 'videoStyle:block',\n items: [ 'videoStyle:alignBlockLeft', 'videoStyle:block', 'videoStyle:alignBlockRight' ]\n} ];\n\nfunction normalizeStyles( config ) {\n const configuredStyles = config.configuredStyles.options || [];\n\n const styles = configuredStyles\n .map( arrangement => normalizeDefinition( arrangement ) )\n .filter( arrangement => isValidOption( arrangement, config ) );\n\n return styles;\n}\n\nfunction getDefaultStylesConfiguration( isBlockPluginLoaded, isInlinePluginLoaded ) {\n if ( isBlockPluginLoaded && isInlinePluginLoaded ) {\n return {\n options: [\n 'inline', 'alignLeft', 'alignRight',\n 'alignCenter', 'alignBlockLeft', 'alignBlockRight',\n 'block', 'side'\n ]\n };\n } else if ( isBlockPluginLoaded ) {\n return {\n options: [ 'block', 'side' ]\n };\n } else if ( isInlinePluginLoaded ) {\n return {\n options: [ 'inline', 'alignLeft', 'alignRight' ]\n };\n }\n\n return {};\n}\n\nfunction getDefaultDropdownDefinitions( pluginCollection ) {\n if ( pluginCollection.has( 'VideoBlockEditing' ) && pluginCollection.has( 'VideoInlineEditing' ) ) {\n return [ ...DEFAULT_DROPDOWN_DEFINITIONS ];\n } else {\n return [];\n }\n}\n\nfunction normalizeDefinition( definition ) {\n if ( typeof definition === 'string' ) {\n if ( !DEFAULT_OPTIONS[ definition ] ) {\n definition = { name: definition };\n }\n else {\n definition = { ...DEFAULT_OPTIONS[ definition ] };\n }\n } else {\n definition = extendStyle( DEFAULT_OPTIONS[ definition.name ], definition );\n }\n\n if ( typeof definition.icon === 'string' ) {\n definition.icon = DEFAULT_ICONS[ definition.icon ] || definition.icon;\n }\n\n return definition;\n}\n\nfunction isValidOption( option, { isBlockPluginLoaded, isInlinePluginLoaded } ) {\n const { modelElements, name } = option;\n\n if ( !modelElements || !modelElements.length || !name ) {\n warnInvalidStyle( { style: option } );\n\n return false;\n } else {\n const supportedElements = [ isBlockPluginLoaded ? 'videoBlock' : null, isInlinePluginLoaded ? 'videoInline' : null ];\n\n if ( !modelElements.some( elementName => supportedElements.includes( elementName ) ) ) {\n logWarning( 'video-style-missing-dependency', {\n style: option,\n missingPlugins: modelElements.map( name => name === 'videoBlock' ? 'VideoBlockEditing' : 'VideoInlineEditing' )\n } );\n\n return false;\n }\n }\n\n return true;\n}\n\nfunction extendStyle( source, style ) {\n const extendedStyle = { ...style };\n\n for ( const prop in source ) {\n if ( !Object.prototype.hasOwnProperty.call( style, prop ) ) {\n extendedStyle[ prop ] = source[ prop ];\n }\n }\n\n return extendedStyle;\n}\n\nfunction warnInvalidStyle( info ) {\n logWarning( 'video-style-configuration-definition-invalid', info );\n}\n\nexport default {\n normalizeStyles,\n getDefaultStylesConfiguration,\n getDefaultDropdownDefinitions,\n warnInvalidStyle,\n DEFAULT_OPTIONS,\n DEFAULT_ICONS,\n DEFAULT_DROPDOWN_DEFINITIONS\n};\n","import { first } from 'ckeditor5/src/utils';\n\nexport function modelToViewStyleAttribute( styles ) {\n return ( evt, data, conversionApi ) => {\n if ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n return;\n }\n\n const newStyle = getStyleDefinitionByName( data.attributeNewValue, styles );\n const oldStyle = getStyleDefinitionByName( data.attributeOldValue, styles );\n\n const viewElement = conversionApi.mapper.toViewElement( data.item );\n const viewWriter = conversionApi.writer;\n\n if ( oldStyle ) {\n viewWriter.removeClass( oldStyle.className, viewElement );\n }\n\n if ( newStyle ) {\n viewWriter.addClass( newStyle.className, viewElement );\n }\n };\n}\n\nexport function viewToModelStyleAttribute( styles ) {\n const nonDefaultStyles = {\n videoInline: styles.filter( style => !style.isDefault && style.modelElements.includes( 'videoInline' ) ),\n videoBlock: styles.filter( style => !style.isDefault && style.modelElements.includes( 'videoBlock' ) )\n };\n\n return ( evt, data, conversionApi ) => {\n if ( !data.modelRange ) {\n return;\n }\n\n const viewElement = data.viewItem;\n const modelVideoElement = first( data.modelRange.getItems() );\n\n if ( !modelVideoElement ) {\n return;\n }\n\n // ...and the `videoStyle` attribute is allowed for that element, otherwise stop conversion early.\n\t\tif ( !conversionApi.schema.checkAttribute( modelVideoElement, 'videoStyle' ) ) {\n\t\t\treturn;\n\t\t}\n\n for ( const style of nonDefaultStyles[ modelVideoElement.name ] ) {\n if ( conversionApi.consumable.consume( viewElement, { classes: style.className } ) ) {\n conversionApi.writer.setAttribute( 'videoStyle', style.name, modelVideoElement );\n }\n }\n };\n}\n\nfunction getStyleDefinitionByName( name, styles ) {\n for ( const style of styles ) {\n if ( style.name === name ) {\n return style;\n }\n }\n}\n","import { Plugin } from 'ckeditor5/src/core';\nimport VideoStyleCommand from './videostylecommand';\nimport VideoUtils from '../videoutils';\nimport utils from './utils';\nimport { viewToModelStyleAttribute, modelToViewStyleAttribute } from './converters';\n\nexport default class VideoStyleEditing extends Plugin {\n static get pluginName() {\n return 'VideoStyleEditing';\n }\n\n static get requires() {\n return [ VideoUtils ];\n }\n\n init() {\n const { normalizeStyles, getDefaultStylesConfiguration } = utils;\n const editor = this.editor;\n const isBlockPluginLoaded = editor.plugins.has( 'VideoBlockEditing' );\n const isInlinePluginLoaded = editor.plugins.has( 'VideoInlineEditing' );\n\n editor.config.define( 'video.styles', getDefaultStylesConfiguration( isBlockPluginLoaded, isInlinePluginLoaded ) );\n\n this.normalizedStyles = normalizeStyles( {\n configuredStyles: editor.config.get( 'video.styles' ),\n isBlockPluginLoaded,\n isInlinePluginLoaded\n } );\n\n this._setupConversion( isBlockPluginLoaded, isInlinePluginLoaded );\n this._setupPostFixer();\n\n editor.commands.add( 'videoStyle', new VideoStyleCommand( editor, this.normalizedStyles ) );\n }\n\n _setupConversion( isBlockPluginLoaded, isInlinePluginLoaded ) {\n const editor = this.editor;\n const schema = editor.model.schema;\n\n const modelToViewConverter = modelToViewStyleAttribute( this.normalizedStyles );\n const viewToModelConverter = viewToModelStyleAttribute( this.normalizedStyles );\n\n editor.editing.downcastDispatcher.on( 'attribute:videoStyle', modelToViewConverter );\n editor.data.downcastDispatcher.on( 'attribute:videoStyle', modelToViewConverter );\n\n if ( isBlockPluginLoaded ) {\n schema.extend( 'videoBlock', { allowAttributes: 'videoStyle' } );\n editor.data.upcastDispatcher.on( 'element:figure', viewToModelConverter, { priority: 'low' } );\n }\n\n if ( isInlinePluginLoaded ) {\n schema.extend( 'videoInline', { allowAttributes: 'videoStyle' } );\n editor.data.upcastDispatcher.on( 'element:video', viewToModelConverter, { priority: 'low' } );\n }\n }\n\n _setupPostFixer() {\n const editor = this.editor;\n const document = editor.model.document;\n\n const videoUtils = editor.plugins.get( VideoUtils );\n const stylesMap = new Map( this.normalizedStyles.map( style => [ style.name, style ] ) );\n\n document.registerPostFixer( writer => {\n let changed = false;\n\n for ( const change of document.differ.getChanges() ) {\n if ( change.type === 'insert' || change.type === 'attribute' && change.attributeKey === 'videoStyle' ) {\n let element = change.type === 'insert' ? change.position.nodeAfter : change.range.start.nodeAfter;\n\n if ( element && element.is( 'element', 'paragraph' ) && element.childCount > 0 ) {\n element = element.getChild( 0 );\n }\n\n if ( !videoUtils.isVideo( element ) ) {\n continue;\n }\n\n const videoStyle = element.getAttribute( 'videoStyle' );\n\n if ( !videoStyle ) {\n continue;\n }\n\n const videoStyleDefinition = stylesMap.get( videoStyle );\n\n if ( !videoStyleDefinition || !videoStyleDefinition.modelElements.includes( element.name ) ) {\n writer.removeAttribute( 'videoStyle', element );\n changed = true;\n }\n }\n }\n\n return changed;\n } );\n }\n}\n","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./videostyle.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { Plugin } from 'ckeditor5/src/core';\nimport { ButtonView, createDropdown, addToolbarToDropdown, SplitButtonView } from 'ckeditor5/src/ui';\nimport VideoStyleEditing from './videostyleediting';\nimport utils from './utils';\nimport { isObject, identity } from 'lodash-es';\n\nimport '../../theme/videostyle.css';\n\nexport default class VideoStyleUI extends Plugin {\n static get requires() {\n return [ VideoStyleEditing ];\n }\n\n static get pluginName() {\n return 'VideoStyleUI';\n }\n\n get localizedDefaultStylesTitles() {\n const t = this.editor.t;\n\n return {\n 'Wrap text': t( 'Wrap text' ),\n 'Break text': t( 'Break text' ),\n 'In line': t( 'In line' ),\n 'Full size video': t( 'Full size video' ),\n 'Side video': t( 'Side video' ),\n 'Left aligned video': t( 'Left aligned video' ),\n 'Centered video': t( 'Centered video' ),\n 'Right aligned video': t( 'Right aligned video' )\n };\n }\n\n init() {\n const plugins = this.editor.plugins;\n const toolbarConfig = this.editor.config.get( 'video.toolbar' ) || [];\n\n const definedStyles = translateStyles(\n plugins.get( 'VideoStyleEditing' ).normalizedStyles,\n this.localizedDefaultStylesTitles\n );\n\n for ( const styleConfig of definedStyles ) {\n this._createButton( styleConfig );\n }\n\n const definedDropdowns = translateStyles(\n [ ...toolbarConfig.filter( isObject ), ...utils.getDefaultDropdownDefinitions( plugins ) ],\n this.localizedDefaultStylesTitles\n );\n\n for ( const dropdownConfig of definedDropdowns ) {\n this._createDropdown( dropdownConfig, definedStyles );\n }\n }\n\n _createDropdown( dropdownConfig, definedStyles ) {\n const factory = this.editor.ui.componentFactory;\n\n factory.add( dropdownConfig.name, locale => {\n let defaultButton;\n\n const { defaultItem, items, title } = dropdownConfig;\n const buttonViews = items\n .filter( itemName => definedStyles.find( ( { name } ) => getUIComponentName( name ) === itemName ) )\n .map( buttonName => {\n const button = factory.create( buttonName );\n\n if ( buttonName === defaultItem ) {\n defaultButton = button;\n }\n\n return button;\n } );\n\n if ( items.length !== buttonViews.length ) {\n utils.warnInvalidStyle( { dropdown: dropdownConfig } );\n }\n\n const dropdownView = createDropdown( locale, SplitButtonView );\n const splitButtonView = dropdownView.buttonView;\n\n addToolbarToDropdown( dropdownView, buttonViews );\n\n splitButtonView.set( {\n label: getDropdownButtonTitle( title, defaultButton.label ),\n class: null,\n tooltip: true\n } );\n\n splitButtonView.bind( 'icon' ).toMany( buttonViews, 'isOn', ( ...areOn ) => {\n const index = areOn.findIndex( identity );\n\n return ( index < 0 ) ? defaultButton.icon : buttonViews[ index ].icon;\n } );\n\n splitButtonView.bind( 'label' ).toMany( buttonViews, 'isOn', ( ...areOn ) => {\n const index = areOn.findIndex( identity );\n\n return getDropdownButtonTitle( title, ( index < 0 ) ? defaultButton.label : buttonViews[ index ].label );\n } );\n\n splitButtonView.bind( 'isOn' ).toMany( buttonViews, 'isOn', ( ...areOn ) => areOn.some( identity ) );\n\n splitButtonView.bind( 'class' )\n .toMany( buttonViews, 'isOn', ( ...areOn ) => areOn.some( identity ) ? 'ck-splitbutton_flatten' : null );\n\n splitButtonView.on( 'execute', () => {\n if ( !buttonViews.some( ( { isOn } ) => isOn ) ) {\n defaultButton.fire( 'execute' );\n } else {\n dropdownView.isOpen = !dropdownView.isOpen;\n }\n } );\n\n dropdownView.bind( 'isEnabled' )\n .toMany( buttonViews, 'isEnabled', ( ...areEnabled ) => areEnabled.some( identity ) );\n\n return dropdownView;\n } );\n }\n\n _createButton( buttonConfig ) {\n const buttonName = buttonConfig.name;\n\n this.editor.ui.componentFactory.add( getUIComponentName( buttonName ), locale => {\n const command = this.editor.commands.get( 'videoStyle' );\n const view = new ButtonView( locale );\n\n view.set( {\n label: buttonConfig.title,\n icon: buttonConfig.icon,\n tooltip: true,\n isToggleable: true\n } );\n\n view.bind( 'isEnabled' ).to( command, 'isEnabled' );\n view.bind( 'isOn' ).to( command, 'value', value => value === buttonName );\n view.on( 'execute', this._executeCommand.bind( this, buttonName ) );\n\n return view;\n } );\n }\n\n _executeCommand( name ) {\n this.editor.execute( 'videoStyle', { value: name } );\n this.editor.editing.view.focus();\n }\n}\n\nfunction translateStyles( styles, titles ) {\n for ( const style of styles ) {\n if ( titles[ style.title ] ) {\n style.title = titles[ style.title ];\n }\n }\n\n return styles;\n}\n\nfunction getUIComponentName( name ) {\n return `videoStyle:${ name }`;\n}\n\nfunction getDropdownButtonTitle( dropdownTitle, buttonTitle ) {\n return ( dropdownTitle ? dropdownTitle + ': ' : '' ) + buttonTitle;\n}\n","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./videoinsertformrowview.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { View } from 'ckeditor5/src/ui';\n\nimport '../../../theme/videoinsertformrowview.css';\n\nexport default class videoUploadFormRowView extends View {\n constructor( locale, options = {} ) {\n super( locale );\n\n const bind = this.bindTemplate;\n\n this.set( 'class', options.class || null );\n\n this.children = this.createCollection();\n\n if ( options.children ) {\n options.children.forEach( child => this.children.add( child ) );\n }\n\n this.set( '_role', null );\n\n this.set( '_ariaLabelledBy', null );\n\n if ( options.labelView ) {\n this.set( {\n _role: 'group',\n _ariaLabelledBy: options.labelView.id\n } );\n }\n\n this.setTemplate( {\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-form__row',\n bind.to( 'class' )\n ],\n role: bind.to( '_role' ),\n 'aria-labelledby': bind.to( '_ariaLabelledBy' )\n },\n children: this.children\n } );\n }\n}\n","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./videoinsert.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { icons } from 'ckeditor5/src/core';\nimport { ButtonView, View, SplitButtonView, ViewCollection, submitHandler, createDropdown, FocusCycler } from 'ckeditor5/src/ui';\nimport { Collection, FocusTracker, KeystrokeHandler } from 'ckeditor5/src/utils';\n\nimport VideoInsertFormRowView from './videoinsertformrowview';\n\nimport '../../../theme/videoinsert.css';\n\n\nexport default class VideoInsertPanelView extends View {\n constructor( locale, integrations ) {\n super( locale );\n\n const { insertButtonView, cancelButtonView } = this._createActionButtons( locale );\n\n this.insertButtonView = insertButtonView;\n\n this.cancelButtonView = cancelButtonView;\n\n this.dropdownView = this._createDropdownView( locale );\n\n this.set( 'videoURLInputValue', '' );\n\n this.focusTracker = new FocusTracker();\n\n this.keystrokes = new KeystrokeHandler();\n\n this._focusables = new ViewCollection();\n\n this._focusCycler = new FocusCycler( {\n focusables: this._focusables,\n focusTracker: this.focusTracker,\n keystrokeHandler: this.keystrokes,\n actions: {\n // Navigate form fields backwards using the Shift + Tab keystroke.\n focusPrevious: 'shift + tab',\n\n // Navigate form fields forwards using the Tab key.\n focusNext: 'tab'\n }\n } );\n\n this.set( '_integrations', new Collection() );\n\n if ( integrations ) {\n for ( const [ integration, integrationView ] of Object.entries( integrations ) ) {\n if ( integration === 'insertVideoViaUrl' ) {\n integrationView.fieldView.bind( 'value' ).to( this, 'videoURLInputValue', value => value || '' );\n\n integrationView.fieldView.on( 'input', () => {\n this.videoURLInputValue = integrationView.fieldView.element.value.trim();\n } );\n }\n\n integrationView.name = integration;\n\n this._integrations.add( integrationView );\n }\n }\n\n this.setTemplate( {\n tag: 'form',\n\n attributes: {\n class: [\n 'ck',\n 'ck-video-insert-form'\n ],\n\n tabindex: '-1'\n },\n\n children: [\n ...this._integrations,\n new VideoInsertFormRowView( locale, {\n children: [\n this.insertButtonView,\n this.cancelButtonView\n ],\n class: 'ck-video-insert-form__action-row'\n } )\n ]\n } );\n }\n\n render() {\n super.render();\n\n submitHandler( {\n view: this\n } );\n\n const childViews = [\n ...this._integrations,\n this.insertButtonView,\n this.cancelButtonView\n ];\n\n childViews.forEach( v => {\n // Register the view as focusable.\n this._focusables.add( v );\n\n // Register the view in the focus tracker.\n this.focusTracker.add( v.element );\n } );\n\n // Start listening for the keystrokes coming from #element.\n this.keystrokes.listenTo( this.element );\n\n const stopPropagation = data => data.stopPropagation();\n\n // Since the form is in the dropdown panel which is a child of the toolbar, the toolbar's\n // keystroke handler would take over the key management in the URL input. We need to prevent\n // this ASAP. Otherwise, the basic caret movement using the arrow keys will be impossible.\n this.keystrokes.set( 'arrowright', stopPropagation );\n this.keystrokes.set( 'arrowleft', stopPropagation );\n this.keystrokes.set( 'arrowup', stopPropagation );\n this.keystrokes.set( 'arrowdown', stopPropagation );\n\n // Intercept the \"selectstart\" event, which is blocked by default because of the default behavior\n // of the DropdownView#panelView.\n // TODO: blocking \"selectstart\" in the #panelView should be configurable per–drop–down instance.\n this.listenTo( childViews[ 0 ].element, 'selectstart', ( evt, domEvt ) => {\n domEvt.stopPropagation();\n }, { priority: 'high' } );\n }\n\n getIntegration( name ) {\n return this._integrations.find( integration => integration.name === name );\n }\n\n _createDropdownView( locale ) {\n const t = locale.t;\n const dropdownView = createDropdown( locale, SplitButtonView );\n const splitButtonView = dropdownView.buttonView;\n const panelView = dropdownView.panelView;\n\n splitButtonView.set( {\n label: t( 'Insert video' ),\n icon: icons.image,\n tooltip: true\n } );\n\n panelView.extendTemplate( {\n attributes: {\n class: 'ck-video-insert__panel'\n }\n } );\n\n return dropdownView;\n }\n\n _createActionButtons( locale ) {\n const t = locale.t;\n const insertButtonView = new ButtonView( locale );\n const cancelButtonView = new ButtonView( locale );\n\n insertButtonView.set( {\n label: t( 'Insert' ),\n icon: icons.check,\n class: 'ck-button-save',\n type: 'submit',\n withText: true,\n isEnabled: this.videoURLInputValue\n } );\n\n cancelButtonView.set( {\n label: t( 'Cancel' ),\n icon: icons.cancel,\n class: 'ck-button-cancel',\n withText: true\n } );\n\n insertButtonView.bind( 'isEnabled' ).to( this, 'videoURLInputValue', value => !!value );\n insertButtonView.delegate( 'execute' ).to( this, 'submit' );\n cancelButtonView.delegate( 'execute' ).to( this, 'cancel' );\n\n return { insertButtonView, cancelButtonView };\n }\n\n focus() {\n this._focusCycler.focusFirst();\n }\n}\n","import { LabeledFieldView, createLabeledInputText } from 'ckeditor5/src/ui';\n\nexport function prepareIntegrations( editor ) {\n const panelItems = editor.config.get( 'video.insert.integrations' );\n const videoInsertUIPlugin = editor.plugins.get( 'VideoInsertUI' );\n\n const PREDEFINED_INTEGRATIONS = {\n 'insertVideoViaUrl': createLabeledInputView( editor.locale )\n };\n\n if ( !panelItems ) {\n return PREDEFINED_INTEGRATIONS;\n }\n\n // Prepares ckfinder component for the `openCKFinder` integration token.\n if ( panelItems.find( item => item === 'openCKFinder' ) && editor.ui.componentFactory.has( 'ckfinder' ) ) {\n const ckFinderButton = editor.ui.componentFactory.create( 'ckfinder' );\n ckFinderButton.set( {\n withText: true,\n class: 'ck-video-insert__ck-finder-button'\n } );\n\n // We want to close the dropdown panel view when user clicks the ckFinderButton.\n ckFinderButton.delegate( 'execute' ).to( videoInsertUIPlugin, 'cancel' );\n\n PREDEFINED_INTEGRATIONS.openCKFinder = ckFinderButton;\n }\n\n return panelItems.reduce( ( object, key ) => {\n if ( PREDEFINED_INTEGRATIONS[ key ] ) {\n object[ key ] = PREDEFINED_INTEGRATIONS[ key ];\n } else if ( editor.ui.componentFactory.has( key ) ) {\n object[ key ] = editor.ui.componentFactory.create( key );\n }\n\n return object;\n }, {} );\n}\n\nexport function createLabeledInputView( locale ) {\n const t = locale.t;\n const labeledInputView = new LabeledFieldView( locale, createLabeledInputText );\n\n labeledInputView.set( {\n label: t( 'Insert video via URL' )\n } );\n labeledInputView.fieldView.placeholder = 'https://example.com/video.mp4';\n\n return labeledInputView;\n}\n","import { Plugin } from 'ckeditor5/src/core';\nimport VideoInsertPanelView from './ui/videoinsertpanelview';\nimport { prepareIntegrations } from './utils';\n\n\nexport default class VideoInsertUI extends Plugin {\n static get pluginName() {\n return 'VideoInsertUI';\n }\n\n init() {\n const editor = this.editor;\n const componentCreator = locale => {\n return this._createDropdownView( locale );\n };\n\n\n editor.ui.componentFactory.add( 'insertVideo', componentCreator );\n editor.ui.componentFactory.add( 'videoInsert', componentCreator );\n }\n\n _createDropdownView( locale ) {\n const editor = this.editor;\n const videoInsertView = new VideoInsertPanelView( locale, prepareIntegrations( editor ) );\n const command = editor.commands.get( 'uploadVideo' );\n\n const dropdownView = videoInsertView.dropdownView;\n const splitButtonView = dropdownView.buttonView;\n\n splitButtonView.actionView = editor.ui.componentFactory.create( 'uploadVideo' );\n splitButtonView.actionView.extendTemplate( {\n attributes: {\n class: 'ck ck-button ck-splitbutton__action'\n }\n } );\n\n return this._setUpDropdown( dropdownView, videoInsertView, command );\n }\n\n _setUpDropdown( dropdownView, videoInsertView, command ) {\n const editor = this.editor;\n const t = editor.t;\n const insertButtonView = videoInsertView.insertButtonView;\n const insertVideoViaUrlForm = videoInsertView.getIntegration( 'insertVideoViaUrl' );\n const panelView = dropdownView.panelView;\n const videoUtils = this.editor.plugins.get( 'VideoUtils' );\n\n dropdownView.bind( 'isEnabled' ).to( command );\n\n dropdownView.buttonView.once( 'open', () => {\n panelView.children.add( videoInsertView );\n } );\n\n dropdownView.on( 'change:isOpen', () => {\n const selectedElement = editor.model.document.selection.getSelectedElement();\n\n if ( dropdownView.isOpen ) {\n videoInsertView.focus();\n\n if ( videoUtils.isVideo( selectedElement ) ) {\n videoInsertView.videoURLInputValue = selectedElement.getAttribute( 'src' );\n insertButtonView.label = t( 'Update' );\n insertVideoViaUrlForm.label = t( 'Update video URL' );\n } else {\n videoInsertView.videoURLInputValue = '';\n insertButtonView.label = t( 'Insert' );\n insertVideoViaUrlForm.label = t( 'Insert video via URL' );\n }\n }\n }, { priority: 'low' } );\n\n videoInsertView.delegate( 'submit', 'cancel' ).to( dropdownView );\n this.delegate( 'cancel' ).to( dropdownView );\n\n dropdownView.on( 'submit', () => {\n closePanel();\n onSubmit();\n } );\n\n dropdownView.on( 'cancel', () => {\n closePanel();\n } );\n\n function onSubmit() {\n const selectedElement = editor.model.document.selection.getSelectedElement();\n\n if ( videoUtils.isVideo( selectedElement ) ) {\n editor.model.change( writer => {\n writer.setAttribute( 'src', videoInsertView.videoURLInputValue, selectedElement );\n writer.removeAttribute( 'sizes', selectedElement );\n } );\n } else {\n editor.execute( 'insertVideo', { source: videoInsertView.videoURLInputValue } );\n }\n }\n\n function closePanel() {\n editor.editing.view.focus();\n dropdownView.isOpen = false;\n }\n\n return dropdownView;\n }\n}\n","import { findOptimalInsertionRange, isWidget, toWidget } from 'ckeditor5/src/widget';\n\nexport function toAudioWidget( viewElement, writer) {\n\twriter.setCustomProperty( 'audio', true, viewElement );\n\n\treturn toWidget( viewElement, writer, {} );\n}\n\nexport function isAudioWidget( viewElement ) {\n\treturn !!viewElement.getCustomProperty( 'audio' ) && isWidget( viewElement );\n}\n\nexport function getSelectedAudioWidget( selection ) {\n\tconst viewElement = selection.getSelectedElement();\n\n\tif ( viewElement && isAudioWidget( viewElement ) ) {\n\t\treturn viewElement;\n\t}\n\n\treturn null;\n}\n\nexport function isAudio( modelElement ) {\n\treturn !!modelElement && modelElement.is( 'element', 'audio' );\n}\n\nexport function insertAudio( writer, model, attributes = {} ) {\n\tattributes.controls = 'controls';\n\tconst audioElement = writer.createElement( 'audio', attributes );\n\n\tconst insertAtSelection = findOptimalInsertionRange( model.document.selection, model );\n\n\tmodel.insertContent( audioElement, insertAtSelection );\n\n\tif ( audioElement.parent ) {\n\t\twriter.setSelection( audioElement, 'on' );\n\t}\n}\n\nexport function isAudioAllowed( model ) {\n\tconst schema = model.schema;\n\tconst selection = model.document.selection;\n\n\treturn isAudioAllowedInParent( selection, schema, model ) &&\n\t\t!checkSelectionOnObject( selection, schema ) &&\n\t\tisInOtherAudio( selection );\n}\n\nexport function getViewAudioFromWidget( figureView ) {\n\tconst figureChildren = [];\n\n\tfor ( const figureChild of figureView.getChildren() ) {\n\t\tfigureChildren.push( figureChild );\n\n\t\tif ( figureChild.is( 'element' ) ) {\n\t\t\tfigureChildren.push( ...figureChild.getChildren() );\n\t\t}\n\t}\n\n\treturn figureChildren.find( viewChild => viewChild.is( 'element', 'audio' ) );\n}\n\nfunction isAudioAllowedInParent( selection, schema, model ) {\n\tconst parent = getInsertAudioParent( selection, model );\n\n\treturn schema.checkChild( parent, 'audio' );\n}\n\nfunction checkSelectionOnObject( selection, schema ) {\n\tconst selectedElement = selection.getSelectedElement();\n\n\treturn selectedElement && schema.isObject( selectedElement );\n}\n\nfunction isInOtherAudio( selection ) {\n\treturn [ ...selection.focus.getAncestors() ].every( ancestor => !ancestor.is( 'element', 'audio' ) );\n}\n\nfunction getInsertAudioParent( selection, model ) {\n\tconst insertionRange = findOptimalInsertionRange( selection, model );\n\n\tconst parent = insertionRange.start.parent;\n\n\tif ( parent.isEmpty && !parent.is( 'element', '$root' ) ) {\n\t\treturn parent.parent;\n\t}\n\n\treturn parent;\n}\n","import Observer from '@ckeditor/ckeditor5-engine/src/view/observer/observer';\n\n\nexport default class Audioloadobserver extends Observer {\n\tobserve( domRoot ) {\n\t\tthis.listenTo( domRoot, 'load', ( event, domEvent ) => {\n\t\t\tconst domElement = domEvent.target;\n\n\t\t\tif ( this.checkShouldIgnoreEventFromTarget( domElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( domElement.tagName === 'AUDIO' ) {\n\t\t\t\tthis._fireEvents( domEvent );\n\t\t\t}\n\t\t\t// Use capture phase for better performance (#4504).\n\t\t}, { useCapture: true } );\n\t}\n\n\t_fireEvents( domEvent ) {\n\t\tif ( this.isEnabled ) {\n\t\t\tthis.document.fire( 'layoutChanged' );\n\t\t\tthis.document.fire( 'audioLoaded', domEvent );\n\t\t}\n\t}\n}\n","import first from '@ckeditor/ckeditor5-utils/src/first';\nimport { getViewAudioFromWidget } from './utils';\n\n\nexport function viewFigureToModel() {\n\treturn dispatcher => {\n\t\tdispatcher.on( 'element:figure', converter );\n\t};\n\n\tfunction converter( evt, data, conversionApi ) {\n\t\t// Do not convert if this is not an \"audio figure\".\n\t\tif ( !conversionApi.consumable.test( data.viewItem, { name: true, classes: 'audio' } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find an audio element inside the figure element.\n\t\tconst viewAudio = getViewAudioFromWidget( data.viewItem );\n\n\t\t// Do not convert if audio element is absent, is missing src attribute or was already converted.\n\t\tif (!viewAudio\n\t\t\t|| !viewAudio.hasAttribute( 'src' )\n\t\t\t|| !conversionApi.consumable.test( viewAudio, { name: true } ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Convert view audio to model audio.\n\t\tconst conversionResult = conversionApi.convertItem( viewAudio, data.modelCursor );\n\n\t\t// Get audio element from conversion result.\n\t\tconst modelAudio = first( conversionResult.modelRange.getItems() );\n\n\t\t// When audio wasn't successfully converted then finish conversion.\n\t\tif ( !modelAudio ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Convert rest of the figure element's children as an audio children.\n\t\tconversionApi.convertChildren( data.viewItem, modelAudio );\n\n\t\tconversionApi.updateConversionResult( modelAudio, data );\n\t}\n}\n\nexport function modelToViewAttributeConverter( attributeKey ) {\n\treturn dispatcher => {\n\t\tdispatcher.on( `attribute:${ attributeKey }:audio`, converter );\n\t};\n\n\tfunction converter( evt, data, conversionApi ) {\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst viewWriter = conversionApi.writer;\n\t\tconst figure = conversionApi.mapper.toViewElement( data.item );\n\t\tconst audio = getViewAudioFromWidget( figure );\n\n\t\tviewWriter.setAttribute( data.attributeKey, data.attributeNewValue || '', audio );\n\t}\n}\n","import Command from '@ckeditor/ckeditor5-core/src/command';\nimport { insertAudio, isAudioAllowed } from './utils';\n\nexport default class AudioInsertCommand extends Command {\n\trefresh() {\n\t\tthis.isEnabled = isAudioAllowed(this.editor.model);\n\t}\n\n\texecute(options) {\n\t\tconst model = this.editor.model;\n\n\t\tmodel.change(writer => {\n\t\t\tconst sources = Array.isArray(options.source) ? options.source : [options.source];\n\n\t\t\tfor (const src of sources) {\n\t\t\t\tinsertAudio(writer, model, { src, controls: 'controls', });\n\t\t\t}\n\t\t});\n\t}\n}\n","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport AudioLoadObserver from './audioloadobserver';\n\nimport {\n\tviewFigureToModel,\n\tmodelToViewAttributeConverter\n} from './converters';\n\nimport { toAudioWidget } from './utils';\n\nimport AudioInsertCommand from './audioinsertcommand';\n\nexport default class AudioEditing extends Plugin {\n\tstatic get pluginName() {\n\t\treturn 'AudioEditing';\n\t}\n\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst t = editor.t;\n\t\tconst conversion = editor.conversion;\n\n\t\teditor.editing.view.addObserver(AudioLoadObserver);\n\n\t\t// Configure schema.\n\t\tschema.register('audio', {\n\t\t\tisObject: true,\n\t\t\tisBlock: true,\n\t\t\tallowWhere: '$block',\n\t\t\tallowAttributes: ['src', 'controls']\n\t\t});\n\n\t\tconversion.for('dataDowncast').elementToElement({\n\t\t\tmodel: 'audio',\n\t\t\tview: (modelElement, { writer }) => createAudioViewElement(writer)\n\t\t});\n\n\t\tconversion.for('editingDowncast').elementToElement({\n\t\t\tmodel: 'audio',\n\t\t\tview: (modelElement, { writer }) => toAudioWidget(createAudioViewElement(writer), writer, t('audio widget'))\n\t\t});\n\n\t\tconversion.for('downcast').add(modelToViewAttributeConverter('src'));\n\t\tconversion.for('downcast').add(modelToViewAttributeConverter('controls'));\n\n\t\tconversion.for('upcast')\n\t\t\t.elementToElement({\n\t\t\t\tview: {\n\t\t\t\t\tname: 'audio',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tsrc: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmodel: (viewAudio, { writer }) => writer.createElement('audio', { src: viewAudio.getAttribute('src'), controls: 'controls', })\n\t\t\t})\n\t\t\t.add(viewFigureToModel());\n\n\t\teditor.commands.add('audioInsert', new AudioInsertCommand(editor));\n\t}\n}\n\nexport function createAudioViewElement(writer) {\n\tconst emptyElement = writer.createEmptyElement('audio');\n\tconst figure = writer.createContainerElement('figure', { class: 'audio' });\n\n\twriter.insert(writer.createPositionAt(figure, 0), emptyElement);\n\n\treturn figure;\n}\n","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./audio.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","export function createAudioMediaTypeRegExp(types) {\n const regExpSafeNames = types.map(type => type.replace('+', '\\\\+'));\n return new RegExp(`^audio\\\\/(${regExpSafeNames.join('|')})$`);\n}\n\nexport function isHtmlIncluded( dataTransfer ) {\n return Array.from( dataTransfer.types ).includes( 'text/html' ) && dataTransfer.getData( 'text/html' ) !== '';\n}\n\nexport function fetchLocalAudio( audio ) {\n return new Promise( ( resolve, reject ) => {\n const audioSrc = audio.getAttribute( 'src' );\n\n // Fetch works asynchronously and so does not block browser UI when processing data.\n fetch( audioSrc )\n .then( resource => resource.blob() )\n .then( blob => {\n const mimeType = getAudioMimeType( blob, audioSrc );\n const ext = mimeType.replace( 'audio/', '' );\n const filename = `audio.${ ext }`;\n const file = new File( [ blob ], filename, { type: mimeType } );\n\n resolve( file );\n } )\n .catch( reject );\n } );\n}\n\nexport function isLocalAudio( node ) {\n if ( !node.is( 'element', 'audio' ) || !node.getAttribute( 'src' ) ) {\n return false;\n }\n\n return node.getAttribute( 'src' ).match( /^data:audio\\/\\w+;base64,/g ) ||\n node.getAttribute( 'src' ).match( /^blob:/g );\n}\n\nfunction getAudioMimeType( blob, src ) {\n if ( blob.type ) {\n return blob.type;\n } else if ( src.match( /data:(audio\\/\\w+);base64/ ) ) {\n return src.match( /data:(audio\\/\\w+);base64/ )[ 1 ].toLowerCase();\n } else {\n // Fallback to 'mp4' as common extension.\n return 'audio/mp3';\n }\n}\n\nexport function getAudiosFromChangeItem( editor, item ) {\n return Array.from( editor.model.createRangeOn( item ) )\n .filter( value => value.item.is( 'element', 'audio' ) )\n .map( value => value.item );\n}\n","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport audioUploadIcon from '../../theme/icons/audio.svg';\nimport {createAudioMediaTypeRegExp} from \"./utils\";\nimport FileDialogButtonView from \"@ckeditor/ckeditor5-upload/src/ui/filedialogbuttonview\";\n\nexport default class Audiouploadui extends Plugin {\n init() {\n const editor = this.editor;\n const t = editor.t;\n\n editor.ui.componentFactory.add( 'audioUpload', locale => {\n const view = new FileDialogButtonView( locale );\n const command = editor.commands.get('uploadAudio');\n const audioTypes = editor.config.get('audio.upload.types');\n const audioMediaTypesRegExp = createAudioMediaTypeRegExp(audioTypes);\n\n view.set({\n acceptedType: audioTypes.map(type => `audio/${type}`).join(','),\n allowMultipleFiles: editor.config.get('audio.upload.allowMultipleFiles')\n });\n\n view.buttonView.set({\n label: t('Upload Audio'),\n icon: audioUploadIcon,\n tooltip: true\n });\n\n view.buttonView.bind('isEnabled').to(command);\n\n view.on('done', (evt, files) => {\n console.log(files);\n const audiosToUpload = Array.from(files).filter(file => audioMediaTypesRegExp.test(file.type));\n if (audiosToUpload.length) {\n editor.execute('uploadAudio', { files: audiosToUpload });\n }\n });\n\n return view;\n });\n }\n}\n","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?><svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 115.28 122.88\\\" style=\\\"enable-background:new 0 0 115.28 122.88\\\" xml:space=\\\"preserve\\\"><style type=\\\"text/css\\\">.st0{fill-rule:evenodd;clip-rule:evenodd;}</style><g><path class=\\\"st0\\\" d=\\\"M25.38,57h64.88V37.34H69.59c-2.17,0-5.19-1.17-6.62-2.6c-1.43-1.43-2.3-4.01-2.3-6.17V7.64l0,0H8.15 c-0.18,0-0.32,0.09-0.41,0.18C7.59,7.92,7.55,8.05,7.55,8.24v106.45c0,0.14,0.09,0.32,0.18,0.41c0.09,0.14,0.28,0.18,0.41,0.18 c22.78,0,58.09,0,81.51,0c0.18,0,0.17-0.09,0.27-0.18c0.14-0.09,0.33-0.28,0.33-0.41v-11.16H25.38c-4.14,0-7.56-3.4-7.56-7.56 V64.55C17.82,60.4,21.22,57,25.38,57L25.38,57z M29.86,68.02h9.82l3.74,14.66l3.75-14.66h9.78v24.1h-6.09V73.75l-4.7,18.37h-5.52 l-4.69-18.37v18.37h-6.09V68.02L29.86,68.02z M60.6,68.02h12.39c2.7,0,4.72,0.64,6.06,1.92c1.34,1.28,2.01,3.11,2.01,5.49 c0,2.43-0.73,4.34-2.2,5.71c-1.46,1.37-3.7,2.06-6.71,2.06h-4.08v8.92H60.6V68.02L60.6,68.02z M68.08,78.32h1.83 c1.45,0,2.46-0.25,3.05-0.75c0.58-0.5,0.88-1.14,0.88-1.92c0-0.76-0.25-1.4-0.76-1.92c-0.5-0.53-1.46-0.79-2.86-0.79h-2.13V78.32 L68.08,78.32z M88.72,74.99l-6.33-1.13c0.53-2.01,1.53-3.56,3.03-4.63c1.49-1.07,3.61-1.61,6.34-1.61c3.14,0,5.41,0.58,6.81,1.76 c1.4,1.17,2.1,2.65,2.1,4.42c0,1.04-0.29,1.98-0.85,2.82c-0.57,0.84-1.42,1.58-2.56,2.22c0.93,0.23,1.64,0.5,2.13,0.81 c0.8,0.49,1.42,1.14,1.86,1.95c0.44,0.81,0.67,1.77,0.67,2.88c0,1.4-0.36,2.75-1.1,4.04c-0.73,1.28-1.79,2.28-3.17,2.97 c-1.38,0.7-3.19,1.04-5.44,1.04c-2.19,0-3.92-0.26-5.18-0.77c-1.27-0.52-2.31-1.27-3.12-2.26c-0.81-0.99-1.44-2.24-1.88-3.75 l6.7-0.89c0.26,1.35,0.67,2.29,1.22,2.82c0.55,0.52,1.25,0.79,2.11,0.79c0.89,0,1.64-0.33,2.24-0.99c0.59-0.66,0.89-1.53,0.89-2.63 c0-1.12-0.29-1.98-0.86-2.6c-0.57-0.61-1.35-0.92-2.33-0.92c-0.52,0-1.25,0.13-2.16,0.39l0.35-4.79c0.36,0.06,0.65,0.08,0.86,0.08 c0.86,0,1.59-0.28,2.17-0.84c0.58-0.56,0.87-1.21,0.87-1.97c0-0.74-0.22-1.32-0.65-1.75c-0.44-0.44-1.04-0.66-1.8-0.66 c-0.79,0-1.42,0.24-1.91,0.71C89.22,72.97,88.89,73.8,88.72,74.99L88.72,74.99z M97.79,57h9.93c4.16,0,7.56,3.41,7.56,7.56v31.42 c0,4.15-3.41,7.56-7.56,7.56h-9.93v13.55c0,1.61-0.65,3.04-1.7,4.1c-1.06,1.06-2.49,1.7-4.1,1.7c-29.44,0-56.59,0-86.18,0 c-1.61,0-3.04-0.64-4.1-1.7c-1.06-1.06-1.7-2.49-1.7-4.1V5.85c0-1.61,0.65-3.04,1.7-4.1c1.06-1.06,2.53-1.7,4.1-1.7h58.72 C64.66,0,64.8,0,64.94,0c0.64,0,1.29,0.28,1.75,0.69h0.09c0.09,0.05,0.14,0.09,0.23,0.18l29.99,30.36c0.51,0.51,0.88,1.2,0.88,1.98 c0,0.23-0.05,0.41-0.09,0.65V57L97.79,57z M67.52,27.97V8.94l21.43,21.7H70.19c-0.74,0-1.38-0.32-1.89-0.78 C67.84,29.4,67.52,28.71,67.52,27.97L67.52,27.97z\\\"/></g></svg>\\n\";","import Command from \"@ckeditor/ckeditor5-core/src/command\";\nimport FileRepository from \"@ckeditor/ckeditor5-upload/src/filerepository\";\nimport {insertAudio, isAudioAllowed} from \"../audio/utils\";\n\nfunction uploadAudio( writer, model, fileRepository, file ) {\n const loader = fileRepository.createLoader( file );\n\n if ( !loader ) {\n return;\n }\n\n insertAudio( writer, model, { uploadId: loader.id } );\n}\n\nexport default class Uploadaudiocommand extends Command {\n execute( options ) {\n const editor = this.editor;\n const model = editor.model;\n\n const fileRepository = editor.plugins.get( FileRepository );\n\n model.change( writer => {\n const filesToUpload = Array.isArray( options.files ) ? options.files : [ options.files ];\n\n for ( const file of filesToUpload ) {\n uploadAudio( writer, model, fileRepository, file );\n }\n } );\n }\n\n refresh() {\n const audioElement = this.editor.model.document.selection.getSelectedElement();\n const isAudio = audioElement && audioElement.name === 'audio' || false;\n\n this.isEnabled = isAudioAllowed( this.editor.model ) || isAudio;\n }\n}\n","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport Notification from '@ckeditor/ckeditor5-ui/src/notification/notification';\nimport UploadAudioCommand from \"./uploadaudiocommand\";\nimport FileRepository from \"@ckeditor/ckeditor5-upload/src/filerepository\";\nimport {\n createAudioMediaTypeRegExp,\n fetchLocalAudio,\n getAudiosFromChangeItem,\n isHtmlIncluded,\n isLocalAudio\n} from \"./utils\";\nimport Clipboard from \"@ckeditor/ckeditor5-clipboard/src/clipboard\";\nimport UpcastWriter from \"@ckeditor/ckeditor5-engine/src/view/upcastwriter\";\nimport env from \"@ckeditor/ckeditor5-utils/src/env\";\nimport { getViewAudioFromWidget } from \"../audio/utils\";\n\nconst DEFAULT_AUDIO_EXTENSIONS = ['mp3', 'ogg'];\n\nexport default class AudioUploadEditing extends Plugin {\n static get requires() {\n return [FileRepository, Notification, Clipboard];\n }\n\n constructor(editor) {\n super(editor);\n\n editor.config.define('audio.upload', {\n types: DEFAULT_AUDIO_EXTENSIONS,\n allowMultipleFiles: true,\n });\n }\n\n init() {\n const editor = this.editor;\n const doc = editor.model.document;\n const schema = editor.model.schema;\n const conversion = editor.conversion;\n const fileRepository = editor.plugins.get(FileRepository);\n const audioTypes = createAudioMediaTypeRegExp(editor.config.get('audio.upload.types'));\n\n // Setup schema to allow uploadId and uploadStatus for audios.\n schema.extend('audio', {\n allowAttributes: ['uploadId', 'uploadStatus']\n });\n\n editor.commands.add('uploadAudio', new UploadAudioCommand(editor))\n\n // Register upcast converter for uploadId.\n conversion.for('upcast')\n .attributeToAttribute({\n view: {\n name: 'audio',\n key: 'uploadId'\n },\n model: 'uploadId'\n });\n\n this.listenTo(editor.editing.view.document, 'clipboardInput', (evt, data) => {\n // Skip if non empty HTML data is included.\n // https://github.com/ckeditor/ckeditor5-upload/issues/68\n if (isHtmlIncluded(data.dataTransfer)) {\n return;\n }\n\n const audios = Array.from(data.dataTransfer.files).filter(file => {\n // See https://github.com/ckeditor/ckeditor5-image/pull/254.\n if (!file) {\n return false;\n }\n\n return audioTypes.test(file.type);\n });\n\n if ( !audios.length ) {\n return;\n }\n\n evt.stop()\n\n editor.model.change(writer => {\n // Set selection to paste target.\n writer.setSelection(data.targetRanges.map(viewRange => editor.editing.mapper.toModelRange(viewRange)));\n\n // Upload audios after the selection has changed in order to ensure the command's state is refreshed.\n editor.model.enqueueChange('default', () => {\n editor.execute('audioUpload', { file: audios });\n });\n });\n });\n\n\n this.listenTo(editor.plugins.get(Clipboard), 'inputTransformation', (evt, data) => {\n const fetchableAudios = Array.from(editor.editing.view.createRangeIn(data.content))\n .filter(value => isLocalAudio(value.item) && !value.item.getAttribute('uploadProcessed'))\n .map(value => {\n return { promise: fetchLocalAudio(value.item), audioElement: value.item };\n });\n\n if (!fetchableAudios.length) {\n return;\n }\n\n const writer = new UpcastWriter(editor.editing.view.document);\n\n for (const fetchableAudio of fetchableAudios) {\n // Set attribute marking that the audio was processed already.\n writer.setAttribute('uploadProcessed', true, fetchableAudio.audioElement);\n\n const loader = fileRepository.createLoader(fetchableAudio.promise);\n\n if (loader) {\n writer.setAttribute('src', '', fetchableAudio.audioElement);\n writer.setAttribute('controls', 'controls', fetchableAudio.audioElement);\n writer.setAttribute('uploadId', loader.id, fetchableAudio.audioElement);\n }\n }\n });\n\n // Prevents from the browser redirecting to the dropped audio.\n editor.editing.view.document.on('dragover', (evt, data) => {\n data.preventDefault();\n });\n\n\n // Upload placeholder audios that appeared in the model.\n doc.on('change', () => {\n const changes = doc.differ.getChanges({ includeChangesInGraveyard: true });\n\n for (const entry of changes) {\n if (entry.type === 'insert' && entry.name !== '$text') {\n const item = entry.position.nodeAfter;\n const isInGraveyard = entry.position.root.rootName === '$graveyard';\n\n for (const audio of getAudiosFromChangeItem(editor, item)) {\n // Check if the audio element still has upload id.\n const uploadId = audio.getAttribute('uploadId');\n\n if (!uploadId) {\n continue;\n }\n\n // Check if the audio is loaded on this client.\n const loader = fileRepository.loaders.get(uploadId);\n\n if (!loader) {\n continue;\n }\n\n if (isInGraveyard) {\n // If the audio was inserted to the graveyard - abort the loading process.\n loader.abort();\n } else if (loader.status === 'idle') {\n // If the audio was inserted into content and has not been loaded yet, start loading it.\n this._readAndUpload(loader, audio);\n }\n }\n }\n }\n });\n }\n\n _readAndUpload(loader, audioElement) {\n const editor = this.editor;\n const model = editor.model;\n const t = editor.locale.t;\n const fileRepository = editor.plugins.get(FileRepository);\n const notification = editor.plugins.get(Notification);\n\n model.enqueueChange('transparent', writer => {\n writer.setAttribute('uploadStatus', 'reading', audioElement);\n });\n\n return loader.read()\n .then(() => {\n const promise = loader.upload();\n\n // Force re–paint in Safari. Without it, the audio will display with a wrong size.\n // https://github.com/ckeditor/ckeditor5/issues/1975\n /* istanbul ignore next */\n if (env.isSafari) {\n const viewFigure = editor.editing.mapper.toViewElement(audioElement);\n const viewAudio = getViewAudioFromWidget(viewFigure);\n\n editor.editing.view.once('render', () => {\n // Early returns just to be safe. There might be some code ran\n // in between the outer scope and this callback.\n if (!viewAudio.parent) {\n return;\n }\n\n const domFigure = editor.editing.view.domConverter.mapViewToDom(viewAudio.parent);\n\n if (!domFigure) {\n return;\n }\n\n const originalDisplay = domFigure.style.display;\n\n domFigure.style.display = 'none';\n\n // Make sure this line will never be removed during minification for having \"no effect\".\n domFigure._ckHack = domFigure.offsetHeight;\n\n domFigure.style.display = originalDisplay;\n });\n }\n\n model.enqueueChange('transparent', writer => {\n writer.setAttribute('uploadStatus', 'uploading', audioElement);\n });\n\n return promise;\n })\n .then(data => {\n model.enqueueChange('transparent', writer => {\n writer.setAttributes({ uploadStatus: 'complete', src: data.default }, audioElement);\n });\n\n clean();\n })\n .catch(error => {\n // If status is not 'error' nor 'aborted' - throw error because it means that something else went wrong,\n // it might be generic error and it would be real pain to find what is going on.\n if (loader.status !== 'error' && loader.status !== 'aborted') {\n throw error;\n }\n\n // Might be 'aborted'.\n if (loader.status === 'error' && error) {\n notification.showWarning(error, {\n title: t('Upload failed'),\n namespace: 'upload'\n });\n }\n\n clean();\n\n // Permanently remove audio from insertion batch.\n model.enqueueChange('transparent', writer => {\n writer.remove(audioElement);\n });\n });\n\n function clean() {\n model.enqueueChange('transparent', writer => {\n writer.removeAttribute('uploadId', audioElement);\n writer.removeAttribute('uploadStatus', audioElement);\n });\n\n fileRepository.destroyLoader(loader);\n }\n }\n}\n","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./audiouploadprogress.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./audiouploadicon.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./audiouploadloader.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport FileRepository from '@ckeditor/ckeditor5-upload/src/filerepository';\nimport uploadingPlaceholder from '../../theme/icons/audio_placeholder.svg';\nimport { getViewAudioFromWidget } from '../audio/utils';\n\nimport '../../theme/audiouploadprogress.css';\nimport '../../theme/audiouploadicon.css';\nimport '../../theme/audiouploadloader.css';\n\nexport default class AudioUploadProgress extends Plugin {\n constructor(editor) {\n super(editor);\n\n this.placeholder = 'data:audio/svg+xml;utf8,' + encodeURIComponent(uploadingPlaceholder);\n }\n\n init() {\n const editor = this.editor;\n\n // Upload status change - update audio's view according to that status.\n editor.editing.downcastDispatcher.on('attribute:uploadStatus:audio', (...args) => this.uploadStatusChange(...args));\n }\n\n uploadStatusChange(evt, data, conversionApi) {\n const editor = this.editor;\n const modelAudio = data.item;\n const uploadId = modelAudio.getAttribute('uploadId');\n\n if (!conversionApi.consumable.consume(data.item, evt.name)) {\n return;\n }\n\n const fileRepository = editor.plugins.get(FileRepository);\n const status = uploadId ? data.attributeNewValue : null;\n const placeholder = this.placeholder;\n const viewFigure = editor.editing.mapper.toViewElement(modelAudio);\n const viewWriter = conversionApi.writer;\n\n if (status === 'reading') {\n // Start \"appearing\" effect and show placeholder with infinite progress bar on the top\n // while audio is read from disk.\n _startAppearEffect(viewFigure, viewWriter);\n _showPlaceholder(placeholder, viewFigure, viewWriter);\n\n return;\n }\n\n // Show progress bar on the top of the audio when audio is uploading.\n if (status === 'uploading') {\n const loader = fileRepository.loaders.get(uploadId);\n\n // Start appear effect if needed - see https://github.com/ckeditor/ckeditor5-image/issues/191.\n _startAppearEffect(viewFigure, viewWriter);\n\n if (!loader) {\n // There is no loader associated with uploadId - this means that audio came from external changes.\n // In such cases we still want to show the placeholder until audio is fully uploaded.\n // Show placeholder if needed - see https://github.com/ckeditor/ckeditor5-image/issues/191.\n _showPlaceholder(placeholder, viewFigure, viewWriter);\n } else {\n // Hide placeholder and initialize progress bar showing upload progress.\n _hidePlaceholder(viewFigure, viewWriter);\n _showProgressBar(viewFigure, viewWriter, loader, editor.editing.view);\n _displayLocalAudio(viewFigure, viewWriter, loader);\n }\n\n return;\n }\n\n if (status === 'complete' && fileRepository.loaders.get(uploadId)) {\n _showCompleteIcon(viewFigure, viewWriter, editor.editing.view);\n }\n\n // Clean up.\n _hideProgressBar(viewFigure, viewWriter);\n _hidePlaceholder(viewFigure, viewWriter);\n _stopAppearEffect(viewFigure, viewWriter);\n }\n}\n\nfunction _startAppearEffect(viewFigure, writer) {\n if (!viewFigure.hasClass('ck-appear')) {\n writer.addClass('ck-appear', viewFigure);\n }\n}\n\nfunction _stopAppearEffect(viewFigure, writer) {\n writer.removeClass('ck-appear', viewFigure);\n}\n\nfunction _showPlaceholder(placeholder, viewFigure, writer) {\n if (!viewFigure.hasClass('ck-audio-upload-placeholder')) {\n writer.addClass('ck-audio-upload-placeholder', viewFigure);\n }\n\n const viewAudio = getViewAudioFromWidget(viewFigure);\n\n if (viewAudio.getAttribute('src') !== placeholder) {\n writer.setAttribute('src', placeholder, viewAudio);\n }\n\n writer.setAttribute('controls', 'controls', viewAudio);\n\n if (!_getUIElement(viewFigure, 'placeholder')) {\n writer.insert(writer.createPositionAfter(viewAudio), _createPlaceholder(writer));\n }\n}\n\nfunction _hidePlaceholder(viewFigure, writer) {\n if (viewFigure.hasClass('ck-audio-upload-placeholder')) {\n writer.removeClass('ck-audio-upload-placeholder', viewFigure);\n }\n\n _removeUIElement(viewFigure, writer, 'placeholder');\n}\n\nfunction _showProgressBar(viewFigure, writer, loader, view) {\n const progressBar = _createProgressBar(writer);\n writer.insert(writer.createPositionAt(viewFigure, 'end'), progressBar);\n\n // Update progress bar width when uploadedPercent is changed.\n loader.on('change:uploadedPercent', (evt, name, value) => {\n view.change(writer => {\n writer.setStyle('width', value + '%', progressBar);\n });\n });\n}\n\nfunction _hideProgressBar(viewFigure, writer) {\n _removeUIElement(viewFigure, writer, 'progressBar');\n}\n\nfunction _showCompleteIcon(viewFigure, writer, view) {\n const completeIcon = writer.createUIElement('div', { class: 'ck-audio-upload-complete-icon' });\n\n writer.insert(writer.createPositionAt(viewFigure, 'end'), completeIcon);\n\n setTimeout(() => {\n view.change(writer => writer.remove(writer.createRangeOn(completeIcon)));\n }, 3000);\n}\n\nfunction _createProgressBar(writer) {\n const progressBar = writer.createUIElement('div', { class: 'ck-progress-bar' });\n\n writer.setCustomProperty('progressBar', true, progressBar);\n\n return progressBar;\n}\n\nfunction _createPlaceholder(writer) {\n const placeholder = writer.createUIElement('div', { class: 'ck-upload-placeholder-loader' });\n\n writer.setCustomProperty('placeholder', true, placeholder);\n\n return placeholder;\n}\n\nfunction _getUIElement(audioFigure, uniqueProperty) {\n for (const child of audioFigure.getChildren()) {\n if (child.getCustomProperty(uniqueProperty)) {\n return child;\n }\n }\n}\n\nfunction _removeUIElement(viewFigure, writer, uniqueProperty) {\n const element = _getUIElement(viewFigure, uniqueProperty);\n\n if (element) {\n writer.remove(writer.createRangeOn(element));\n }\n}\n\nfunction _displayLocalAudio(viewFigure, writer, loader) {\n if (loader.data) {\n const viewAudio = getViewAudioFromWidget(viewFigure);\n\n writer.setAttribute('src', loader.data, viewAudio);\n writer.setAttribute('controls', 'controls', viewAudio);\n }\n}\n","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 700 250\\\"><rect rx=\\\"4\\\"/></svg>\";","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./audioresize.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","\nimport Command from '@ckeditor/ckeditor5-core/src/command';\nimport { isAudio } from '../audio/utils';\n\nexport default class AudioResizeCommand extends Command {\n\trefresh() {\n\t\tconst element = this.editor.model.document.selection.getSelectedElement();\n\n\t\tthis.isEnabled = isAudio( element );\n\n\t\tif ( !element || !element.hasAttribute( 'width' ) ) {\n\t\t\tthis.value = null;\n\t\t} else {\n\t\t\tthis.value = {\n\t\t\t\twidth: element.getAttribute( 'width' ),\n\t\t\t\theight: null\n\t\t\t};\n\t\t}\n\t}\n\n\texecute( options ) {\n\t\tconst model = this.editor.model;\n\t\tconst audioElement = model.document.selection.getSelectedElement();\n\n\t\tthis.value = {\n\t\t\twidth: options.width,\n\t\t\theight: null\n\t\t};\n\n\t\tif ( audioElement ) {\n\t\t\tmodel.change( writer => {\n\t\t\t\twriter.setAttribute( 'width', options.width, audioElement );\n\t\t\t} );\n\t\t}\n\t}\n}\n","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport AudioResizeCommand from './audioresizecommand';\n\nexport default class AudioResizeEditing extends Plugin {\n\tstatic get pluginName() {\n\t\treturn 'AudioResizeEditing';\n\t}\n\n\tconstructor( editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'audio', {\n\t\t\tresizeUnit: '%',\n\t\t\tresizeOptions: [ {\n\t\t\t\tname: 'audioResize:original',\n\t\t\t\tvalue: null,\n\t\t\t\ticon: 'original'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'audioResize:25',\n\t\t\t\tvalue: '25',\n\t\t\t\ticon: 'small'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'audioResize:50',\n\t\t\t\tvalue: '50',\n\t\t\t\ticon: 'medium'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'audioResize:75',\n\t\t\t\tvalue: '75',\n\t\t\t\ticon: 'large'\n\t\t\t} ]\n\t\t} );\n\t}\n\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst command = new AudioResizeCommand( editor );\n\n\t\tthis._registerSchema();\n\t\tthis._registerConverters();\n\n\t\teditor.commands.add( 'audioResize', command );\n\t}\n\n\t_registerSchema() {\n\t\tthis.editor.model.schema.extend( 'audio', { allowAttributes: 'width' } );\n\t\tthis.editor.model.schema.setAttributeProperties( 'width', {\n\t\t\tisFormatting: true\n\t\t} );\n\t}\n\n\t_registerConverters() {\n\t\tconst editor = this.editor;\n\n\t\t// Dedicated converter to propagate audio's attribute to the audio tag.\n\t\teditor.conversion.for( 'downcast' ).add( dispatcher =>\n\t\t\tdispatcher.on( 'attribute:width:audio', ( evt, data, conversionApi ) => {\n\t\t\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\t\tconst figure = conversionApi.mapper.toViewElement( data.item );\n\n\t\t\t\tif ( data.attributeNewValue !== null ) {\n\t\t\t\t\tviewWriter.setStyle( 'width', data.attributeNewValue, figure );\n\t\t\t\t\tviewWriter.addClass( 'audio_resized', figure );\n\t\t\t\t} else {\n\t\t\t\t\tviewWriter.removeStyle( 'width', figure );\n\t\t\t\t\tviewWriter.removeClass( 'audio_resized', figure );\n\t\t\t\t}\n\t\t\t} )\n\t\t);\n\n\t\teditor.conversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: 'figure',\n\t\t\t\t\tstyles: {\n\t\t\t\t\t\twidth: /.+/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\tkey: 'width',\n\t\t\t\t\tvalue: viewElement => viewElement.getStyle( 'width' )\n\t\t\t\t}\n\t\t\t} );\n\t}\n}\n","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport WidgetResize from '@ckeditor/ckeditor5-widget/src/widgetresize';\n\nexport default class AudioResizeHandles extends Plugin {\n\tstatic get requires() {\n\t\treturn [ WidgetResize ];\n\t}\n\n\tstatic get pluginName() {\n\t\treturn 'AudioResizeHandles';\n\t}\n\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst command = editor.commands.get( 'audioResize' );\n\n\t\tthis.bind( 'isEnabled' ).to( command );\n\n\t\teditor.editing.downcastDispatcher.on( 'insert:audio', ( evt, data, conversionApi ) => {\n\t\t\tconst widget = conversionApi.mapper.toViewElement( data.item );\n\n\t\t\tconst resizer = editor.plugins\n\t\t\t\t.get( WidgetResize )\n\t\t\t\t.attachTo( {\n\t\t\t\t\tunit: editor.config.get( 'audio.resizeUnit' ),\n\n\t\t\t\t\tmodelElement: data.item,\n\t\t\t\t\tviewElement: widget,\n\t\t\t\t\teditor,\n\n\t\t\t\t\tgetHandleHost( domWidgetElement ) {\n\t\t\t\t\t\treturn domWidgetElement.querySelector( 'audio' );\n\t\t\t\t\t},\n\t\t\t\t\tgetResizeHost( domWidgetElement ) {\n\t\t\t\t\t\treturn domWidgetElement;\n\t\t\t\t\t},\n\t\t\t\t\t// TODO consider other positions.\n\t\t\t\t\tisCentered() {\n\t\t\t\t\t\tconst audioStyle = data.item.getAttribute( 'audioStyle' );\n\n\t\t\t\t\t\treturn !audioStyle || audioStyle === 'full' || audioStyle === 'alignCenter';\n\t\t\t\t\t},\n\n\t\t\t\t\tonCommit( newValue ) {\n\t\t\t\t\t\teditor.execute( 'audioResize', { width: newValue } );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\tresizer.on( 'updateSize', () => {\n\t\t\t\tif ( !widget.hasClass( 'audio_resized' ) ) {\n\t\t\t\t\teditor.editing.view.change( writer => {\n\t\t\t\t\t\twriter.addClass( 'audio_resized', widget );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tresizer.bind( 'isEnabled' ).to( this );\n\t\t}, { priority: 'low' } );\n\t}\n}\n","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport ButtonView from '@ckeditor/ckeditor5-ui/src/button/buttonview';\nimport { createDropdown, addListToDropdown } from '@ckeditor/ckeditor5-ui/src/dropdown/utils';\nimport DropdownButtonView from '@ckeditor/ckeditor5-ui/src/dropdown/button/dropdownbuttonview';\nimport Model from '@ckeditor/ckeditor5-ui/src/model';\nimport Collection from '@ckeditor/ckeditor5-utils/src/collection';\nimport CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\nimport iconSmall from '@ckeditor/ckeditor5-core/theme/icons/object-size-small.svg';\nimport iconMedium from '@ckeditor/ckeditor5-core/theme/icons/object-size-medium.svg';\nimport iconLarge from '@ckeditor/ckeditor5-core/theme/icons/object-size-large.svg';\nimport iconFull from '@ckeditor/ckeditor5-core/theme/icons/object-size-full.svg';\nimport AudioResizeEditing from \"./audioresizeediting\";\n\nconst RESIZE_ICONS = {\n\tsmall: iconSmall,\n\tmedium: iconMedium,\n\tlarge: iconLarge,\n\toriginal: iconFull\n};\n\nexport default class Audioresizebuttons extends Plugin {\n\tstatic get requires() {\n\t\treturn [ AudioResizeEditing ];\n\t}\n\n\tstatic get pluginName() {\n\t\treturn 'AudioResizeButtons';\n\t}\n\n\tconstructor( editor ) {\n\t\tsuper( editor );\n\n\t\tthis._resizeUnit = editor.config.get( 'audio.resizeUnit' );\n\t}\n\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst options = editor.config.get( 'audio.resizeOptions' );\n\t\tconst command = editor.commands.get( 'audioResize' );\n\n\t\tthis.bind( 'isEnabled' ).to( command );\n\n\t\tfor ( const option of options ) {\n\t\t\tthis._registerAudioResizeButton( option );\n\t\t}\n\n\t\tthis._registerAudioResizeDropdown( options );\n\t}\n\n\t_registerAudioResizeButton( option ) {\n\t\tconst editor = this.editor;\n\t\tconst { name, value, icon } = option;\n\t\tconst optionValueWithUnit = value ? value + this._resizeUnit : null;\n\n\t\teditor.ui.componentFactory.add( name, locale => {\n\t\t\tconst button = new ButtonView( locale );\n\t\t\tconst command = editor.commands.get( 'audioResize' );\n\t\t\tconst labelText = this._getOptionLabelValue( option, true );\n\n\t\t\tif ( !RESIZE_ICONS[ icon ] ) {\n\t\t\t\tthrow new CKEditorError(\n\t\t\t\t\t'audioresizebuttons-missing-icon',\n\t\t\t\t\teditor,\n\t\t\t\t\toption\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tbutton.set( {\n\t\t\t\t// Use the `label` property for a verbose description (because of ARIA).\n\t\t\t\tlabel: labelText,\n\t\t\t\ticon: RESIZE_ICONS[ icon ],\n\t\t\t\ttooltip: labelText,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\t// Bind button to the command.\n\t\t\tbutton.bind( 'isEnabled' ).to( this );\n\t\t\tbutton.bind( 'isOn' ).to( command, 'value', getIsOnButtonCallback( optionValueWithUnit ) );\n\n\t\t\tthis.listenTo( button, 'execute', () => {\n\t\t\t\teditor.execute( 'audioResize', { width: optionValueWithUnit } );\n\t\t\t} );\n\n\t\t\treturn button;\n\t\t} );\n\t}\n\n\t_registerAudioResizeDropdown( options ) {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst originalSizeOption = options.find( option => !option.value );\n\n\t\t// Register dropdown.\n\t\teditor.ui.componentFactory.add( 'audioResize', locale => {\n\t\t\tconst command = editor.commands.get( 'audioResize' );\n\t\t\tconst dropdownView = createDropdown( locale, DropdownButtonView );\n\t\t\tconst dropdownButton = dropdownView.buttonView;\n\n\t\t\tdropdownButton.set( {\n\t\t\t\ttooltip: t( 'Resize audio' ),\n\t\t\t\tcommandValue: originalSizeOption.value,\n\t\t\t\ticon: iconMedium,\n\t\t\t\tisToggleable: true,\n\t\t\t\tlabel: this._getOptionLabelValue( originalSizeOption ),\n\t\t\t\twithText: true,\n\t\t\t\tclass: 'ck-resize-audio-button'\n\t\t\t} );\n\n\t\t\tdropdownButton.bind( 'label' ).to( command, 'value', commandValue => {\n\t\t\t\tif ( commandValue && commandValue.width ) {\n\t\t\t\t\treturn commandValue.width;\n\t\t\t\t} else {\n\t\t\t\t\treturn this._getOptionLabelValue( originalSizeOption );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tdropdownView.bind( 'isOn' ).to( command );\n\t\t\tdropdownView.bind( 'isEnabled' ).to( this );\n\n\t\t\taddListToDropdown( dropdownView, this._getResizeDropdownListItemDefinitions( options, command ) );\n\n\t\t\tdropdownView.listView.ariaLabel = t( 'Audio resize list' );\n\n\t\t\t// Execute command when an item from the dropdown is selected.\n\t\t\tthis.listenTo( dropdownView, 'execute', evt => {\n\t\t\t\teditor.execute( evt.source.commandName, { width: evt.source.commandValue } );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t} );\n\t}\n\n\t_getOptionLabelValue( option, forTooltip ) {\n\t\tconst t = this.editor.t;\n\n\t\tif ( option.label ) {\n\t\t\treturn option.label;\n\t\t} else if ( forTooltip ) {\n\t\t\tif ( option.value ) {\n\t\t\t\treturn t( 'Resize audio to %0', option.value + this._resizeUnit );\n\t\t\t} else {\n\t\t\t\treturn t( 'Resize audio to the original size' );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( option.value ) {\n\t\t\t\treturn option.value + this._resizeUnit;\n\t\t\t} else {\n\t\t\t\treturn t( 'Original' );\n\t\t\t}\n\t\t}\n\t}\n\n\t_getResizeDropdownListItemDefinitions( options, command ) {\n\t\tconst itemDefinitions = new Collection();\n\n\t\toptions.map( option => {\n\t\t\tconst optionValueWithUnit = option.value ? option.value + this._resizeUnit : null;\n\t\t\tconst definition = {\n\t\t\t\ttype: 'button',\n\t\t\t\tmodel: new Model( {\n\t\t\t\t\tcommandName: 'audioResize',\n\t\t\t\t\tcommandValue: optionValueWithUnit,\n\t\t\t\t\tlabel: this._getOptionLabelValue( option ),\n\t\t\t\t\twithText: true,\n\t\t\t\t\ticon: null\n\t\t\t\t} )\n\t\t\t};\n\n\t\t\tdefinition.model.bind( 'isOn' ).to( command, 'value', getIsOnButtonCallback( optionValueWithUnit ) );\n\n\t\t\titemDefinitions.add( definition );\n\t\t} );\n\n\t\treturn itemDefinitions;\n\t}\n}\n\nfunction getIsOnButtonCallback( value ) {\n\treturn commandValue => {\n\t\tif ( value === null && commandValue === value ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn commandValue && commandValue.width === value;\n\t};\n}\n","import Command from '@ckeditor/ckeditor5-core/src/command';\nimport { isAudio } from '../audio/utils';\n\nexport default class Audiostylecommand extends Command {\n constructor( editor, styles ) {\n super( editor );\n\n this.defaultStyle = false;\n\n this.styles = styles.reduce( ( styles, style ) => {\n styles[ style.name ] = style;\n\n if ( style.isDefault ) {\n this.defaultStyle = style.name;\n }\n\n return styles;\n }, {} );\n }\n\n refresh() {\n const element = this.editor.model.document.selection.getSelectedElement();\n\n this.isEnabled = isAudio( element );\n\n if ( !element ) {\n this.value = false;\n } else if ( element.hasAttribute( 'audioStyle' ) ) {\n const attributeValue = element.getAttribute( 'audioStyle' );\n this.value = this.styles[ attributeValue ] ? attributeValue : false;\n } else {\n this.value = this.defaultStyle;\n }\n }\n\n execute( options ) {\n const styleName = options.value;\n\n const model = this.editor.model;\n const audioElement = model.document.selection.getSelectedElement();\n\n model.change( writer => {\n // Default style means that there is no `audioStyle` attribute in the model.\n if ( this.styles[ styleName ].isDefault ) {\n writer.removeAttribute( 'audioStyle', audioElement );\n } else {\n writer.setAttribute( 'audioStyle', styleName, audioElement );\n }\n } );\n }\n}\n","import first from '@ckeditor/ckeditor5-utils/src/first';\n\nexport function modelToViewStyleAttribute( styles ) {\n return ( evt, data, conversionApi ) => {\n if ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n return;\n }\n\n // Check if there is class name associated with given value.\n const newStyle = getStyleByName( data.attributeNewValue, styles );\n const oldStyle = getStyleByName( data.attributeOldValue, styles );\n\n const viewElement = conversionApi.mapper.toViewElement( data.item );\n const viewWriter = conversionApi.writer;\n\n if ( oldStyle ) {\n viewWriter.removeClass( oldStyle.className, viewElement );\n }\n\n if ( newStyle ) {\n viewWriter.addClass( newStyle.className, viewElement );\n }\n };\n}\n\nexport function viewToModelStyleAttribute( styles ) {\n // Convert only non–default styles.\n const filteredStyles = styles.filter( style => !style.isDefault );\n\n return ( evt, data, conversionApi ) => {\n if ( !data.modelRange ) {\n return;\n }\n\n const viewFigureElement = data.viewItem;\n const modelAudioElement = first( data.modelRange.getItems() );\n\n // Check if `audioStyle` attribute is allowed for current element.\n if ( !conversionApi.schema.checkAttribute( modelAudioElement, 'audioStyle' ) ) {\n return;\n }\n\n // Convert style one by one.\n for ( const style of filteredStyles ) {\n // Try to consume class corresponding with style.\n if ( conversionApi.consumable.consume( viewFigureElement, { classes: style.className } ) ) {\n // And convert this style to model attribute.\n conversionApi.writer.setAttribute( 'audioStyle', style.name, modelAudioElement );\n }\n }\n };\n}\n\nfunction getStyleByName( name, styles ) {\n for ( const style of styles ) {\n if ( style.name === name ) {\n return style;\n }\n }\n}\n","import fullWidthIcon from '@ckeditor/ckeditor5-core/theme/icons/object-full-width.svg';\nimport leftIcon from '@ckeditor/ckeditor5-core/theme/icons/object-left.svg';\nimport centerIcon from '@ckeditor/ckeditor5-core/theme/icons/object-center.svg';\nimport rightIcon from '@ckeditor/ckeditor5-core/theme/icons/object-right.svg';\nimport { logWarning } from '@ckeditor/ckeditor5-utils/src/ckeditorerror';\n\nconst defaultStyles = {\n // This option is equal to the situation when no style is applied.\n full: {\n name: 'full',\n title: 'Full size audio',\n icon: fullWidthIcon,\n isDefault: true\n },\n\n // This represents a side audio.\n side: {\n name: 'side',\n title: 'Side audio',\n icon: rightIcon,\n className: 'audio-style-side'\n },\n\n // This style represents an audio aligned to the left.\n alignLeft: {\n name: 'alignLeft',\n title: 'Left aligned audio',\n icon: leftIcon,\n className: 'audio-style-align-left'\n },\n\n // This style represents a centered audio.\n alignCenter: {\n name: 'alignCenter',\n title: 'Centered audio',\n icon: centerIcon,\n className: 'audio-style-align-center'\n },\n\n // This style represents an audio aligned to the right.\n alignRight: {\n name: 'alignRight',\n title: 'Right aligned audio',\n icon: rightIcon,\n className: 'audio-style-align-right'\n }\n};\n\nconst defaultIcons = {\n full: fullWidthIcon,\n left: leftIcon,\n right: rightIcon,\n center: centerIcon\n};\n\nexport function normalizeAudioStyles( configuredStyles = [] ) {\n return configuredStyles.map( _normalizeStyle );\n}\n\nfunction _normalizeStyle( style ) {\n // Just the name of the style has been passed.\n if ( typeof style == 'string' ) {\n const styleName = style;\n\n // If it's one of the defaults, just use it.\n if ( defaultStyles[ styleName ] ) {\n // Clone the style to avoid overriding defaults.\n style = Object.assign( {}, defaultStyles[ styleName ] );\n }\n // If it's just a name but none of the defaults, warn because probably it's a mistake.\n else {\n logWarning( 'image-style-not-found', { name: styleName } );\n\n // Normalize the style anyway to prevent errors.\n style = {\n name: styleName\n };\n }\n }\n // If an object style has been passed and if the name matches one of the defaults,\n // extend it with defaults – the user wants to customize a default style.\n // Note: Don't override the user–defined style object, clone it instead.\n else if ( defaultStyles[ style.name ] ) {\n const defaultStyle = defaultStyles[ style.name ];\n const extendedStyle = Object.assign( {}, style );\n\n for ( const prop in defaultStyle ) {\n if ( !Object.prototype.hasOwnProperty.call( style, prop ) ) {\n extendedStyle[ prop ] = defaultStyle[ prop ];\n }\n }\n\n style = extendedStyle;\n }\n\n // If an icon is defined as a string and correspond with a name\n // in default icons, use the default icon provided by the plugin.\n if ( typeof style.icon == 'string' && defaultIcons[ style.icon ] ) {\n style.icon = defaultIcons[ style.icon ];\n }\n\n return style;\n}\n","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport Audiostylecommand from './audiostylecommand';\nimport { viewToModelStyleAttribute, modelToViewStyleAttribute } from './converters';\nimport { normalizeAudioStyles } from './utils';\n\nexport default class Audiostyleediting extends Plugin {\n static get pluginName() {\n return 'AudioStyleEditing';\n }\n init() {\n const editor = this.editor;\n const schema = editor.model.schema;\n const data = editor.data;\n const editing = editor.editing;\n\n // Define default configuration.\n editor.config.define( 'audio.styles', [ 'full', 'side' ] );\n\n // Get configuration.\n const styles = normalizeAudioStyles( editor.config.get( 'audio.styles' ) );\n\n // Allow audioStyle attribute in audio.\n schema.extend( 'audio', { allowAttributes: 'audioStyle' } );\n\n // Converters for audioStyle attribute from model to view.\n const modelToViewConverter = modelToViewStyleAttribute( styles );\n editing.downcastDispatcher.on( 'attribute:audioStyle:audio', modelToViewConverter );\n data.downcastDispatcher.on( 'attribute:audioStyle:audio', modelToViewConverter );\n\n // Converter for figure element from view to model.\n data.upcastDispatcher.on( 'element:figure', viewToModelStyleAttribute( styles ), { priority: 'low' } );\n\n // Register audioStyle command.\n editor.commands.add( 'audioStyle', new Audiostylecommand( editor, styles ) );\n }\n}\n","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./audiostyle.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport ButtonView from '@ckeditor/ckeditor5-ui/src/button/buttonview';\nimport { normalizeAudioStyles } from './utils';\nimport '../../theme/audiostyle.css';\n\nexport default class AudioStyleUI extends Plugin {\n static get pluginName() {\n return 'AudioStyleUI';\n }\n\n get localizedDefaultStylesTitles() {\n const t = this.editor.t;\n\n return {\n 'Full size audio': t( 'Full size audio' ),\n 'Side audio': t( 'Side audio' ),\n 'Left aligned audio': t( 'Left aligned audio' ),\n 'Centered audio': t( 'Centered audio' ),\n 'Right aligned audio': t( 'Right aligned audio' )\n };\n }\n\n init() {\n const editor = this.editor;\n const configuredStyles = editor.config.get( 'audio.styles' );\n\n const translatedStyles = translateStyles( normalizeAudioStyles( configuredStyles ), this.localizedDefaultStylesTitles );\n\n for ( const style of translatedStyles ) {\n this._createButton( style );\n }\n }\n\n _createButton( style ) {\n const editor = this.editor;\n\n const componentName = `audioStyle:${ style.name }`;\n\n editor.ui.componentFactory.add( componentName, locale => {\n const command = editor.commands.get( 'audioStyle' );\n const view = new ButtonView( locale );\n\n view.set( {\n label: style.title,\n icon: style.icon,\n tooltip: true,\n isToggleable: true\n } );\n\n view.bind( 'isEnabled' ).to( command, 'isEnabled' );\n view.bind( 'isOn' ).to( command, 'value', value => value === style.name );\n\n this.listenTo( view, 'execute', () => {\n editor.execute( 'audioStyle', { value: style.name } );\n editor.editing.view.focus();\n } );\n\n return view;\n } );\n }\n}\n\nfunction translateStyles( styles, titles ) {\n for ( const style of styles ) {\n // Localize the titles of the styles, if a title corresponds with\n // a localized default provided by the plugin.\n if ( titles[ style.title ] ) {\n style.title = titles[ style.title ];\n }\n }\n\n return styles;\n}\n","import { Collection } from '@ckeditor/ckeditor5-utils';\r\nimport { Model, FormHeaderView, createDropdown, addListToDropdown } from '@ckeditor/ckeditor5-ui';\r\n\r\nexport default class EmojiCharactersNavigationView extends FormHeaderView {\r\n\r\n\tconstructor( locale, groupNames ) {\r\n\t\tsuper( locale );\r\n\r\n\t\tconst t = locale.t;\r\n\r\n\t\tthis.set( 'class', 'ck-special-characters-navigation' );\r\n\r\n\t\tthis.groupDropdownView = this._createGroupDropdown( groupNames );\r\n\t\tthis.groupDropdownView.panelPosition = locale.uiLanguageDirection === 'rtl' ? 'se' : 'sw';\r\n\r\n\t\t/**\r\n\t\t * @inheritDoc\r\n\t\t */\r\n\t\tthis.label = t( 'Emoji' );\r\n\r\n\t\t/**\r\n\t\t * @inheritDoc\r\n\t\t */\r\n\t\tthis.children.add( this.groupDropdownView );\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the name of the character group currently selected in the {@link #groupDropdownView}.\r\n\t *\r\n\t * @returns {String}\r\n\t */\r\n\tget currentGroupName() {\r\n\t\treturn this.groupDropdownView.value;\r\n\t}\r\n\r\n\t_createGroupDropdown( groupNames ) {\r\n\t\tconst locale = this.locale;\r\n\t\tconst t = locale.t;\r\n\t\tconst dropdown = createDropdown( locale );\r\n\t\tconst groupDefinitions = this._getCharacterGroupListItemDefinitions( dropdown, groupNames );\r\n\r\n\t\tdropdown.set( 'value', groupDefinitions.first.model.label );\r\n\r\n\t\tdropdown.buttonView.bind( 'label' ).to( dropdown, 'value' );\r\n\r\n\t\tdropdown.buttonView.set( {\r\n\t\t\tisOn: false,\r\n\t\t\twithText: true,\r\n\t\t\ttooltip: t( 'Emoji categories' ),\r\n\t\t\tclass: [ 'ck-dropdown__button_label-width_auto' ]\r\n\t\t} );\r\n\r\n\t\tdropdown.on( 'execute', evt => {\r\n\t\t\tdropdown.value = evt.source.label;\r\n\t\t} );\r\n\r\n\t\tdropdown.delegate( 'execute' ).to( this );\r\n\r\n\t\taddListToDropdown( dropdown, groupDefinitions );\r\n\r\n\t\treturn dropdown;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns list item definitions to be used in the character group dropdown\r\n\t * representing specific character groups.\r\n\t *\r\n\t */\r\n\t_getCharacterGroupListItemDefinitions( dropdown, groupNames ) {\r\n\t\tconst groupDefs = new Collection();\r\n\r\n\t\tfor ( const name of groupNames ) {\r\n\t\t\tconst definition = {\r\n\t\t\t\ttype: 'button',\r\n\t\t\t\tmodel: new Model( {\r\n\t\t\t\t\tlabel: name,\r\n\t\t\t\t\twithText: true\r\n\t\t\t\t} )\r\n\t\t\t};\r\n\r\n\t\t\tdefinition.model.bind( 'isOn' ).to( dropdown, 'value', value => {\r\n\t\t\t\treturn value === definition.model.label;\r\n\t\t\t} );\r\n\r\n\t\t\tgroupDefs.add( definition );\r\n\t\t}\r\n\r\n\t\treturn groupDefs;\r\n\t}\r\n}\r\n","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./charactergrid.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { View, ButtonView } from '@ckeditor/ckeditor5-ui';\r\n\r\nimport '../../theme/charactergrid.css';\r\n\r\n\r\nexport default class CharacterGridView extends View {\r\n\r\n\tconstructor( locale ) {\r\n\t\tsuper( locale );\r\n\r\n\t\tthis.tiles = this.createCollection();\r\n\r\n\t\tthis.setTemplate( {\r\n\t\t\ttag: 'div',\r\n\t\t\tchildren: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttag: 'div',\r\n\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\tclass: [\r\n\t\t\t\t\t\t\t'ck',\r\n\t\t\t\t\t\t\t'ck-character-grid__tiles'\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tchildren: this.tiles\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tattributes: {\r\n\t\t\t\tclass: [\r\n\t\t\t\t\t'ck',\r\n\t\t\t\t\t'ck-character-grid'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tcreateTile( character, name ) {\r\n\t\tconst tile = new ButtonView( this.locale );\r\n\r\n\t\ttile.set( {\r\n\t\t\tlabel: character,\r\n\t\t\twithText: true,\r\n\t\t\tclass: 'ck-character-grid__tile ck-emoji-grid-font-size'\r\n\t\t} );\r\n\r\n\t\t// Labels are vital for the users to understand what character they're looking at.\r\n\t\t// For now we're using native title attribute for that, see #5817.\r\n\t\ttile.extendTemplate( {\r\n\t\t\tattributes: {\r\n\t\t\t\ttitle: name\r\n\t\t\t},\r\n\t\t\ton: {\r\n\t\t\t\tmouseover: tile.bindTemplate.to( 'mouseover' )\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\ttile.on( 'mouseover', () => {\r\n\t\t\tthis.fire( 'tileHover', { name, character } );\r\n\t\t} );\r\n\r\n\t\ttile.on( 'execute', () => {\r\n\t\t\tthis.fire( 'execute', { name, character } );\r\n\t\t} );\r\n\r\n\t\treturn tile;\r\n\t}\r\n}\r\n","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./characterinfo.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { View } from '@ckeditor/ckeditor5-ui';\r\n\r\nimport '../../theme/characterinfo.css';\r\n\r\nexport default class CharacterInfoView extends View {\r\n\tconstructor( locale ) {\r\n\t\tsuper( locale );\r\n\r\n\t\tconst bind = this.bindTemplate;\r\n\r\n\t\tthis.set( 'character', null );\r\n\r\n\t\tthis.set( 'name', null );\r\n\r\n\t\tthis.bind( 'code' ).to( this, 'character', characterToUnicodeString );\r\n\r\n\t\tthis.setTemplate( {\r\n\t\t\ttag: 'div',\r\n\t\t\tchildren: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttag: 'span',\r\n\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\tclass: [\r\n\t\t\t\t\t\t\t'ck-character-info__name'\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// Note: ZWSP to prevent vertical collapsing.\r\n\t\t\t\t\t\t\ttext: bind.to( 'name', name => name ? name : '\\u200B' )\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttag: 'span',\r\n\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\tclass: [\r\n\t\t\t\t\t\t\t'ck-character-info__code'\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttext: bind.to( 'code' )\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tattributes: {\r\n\t\t\t\tclass: [\r\n\t\t\t\t\t'ck',\r\n\t\t\t\t\t'ck-character-info'\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n}\r\n\r\n// Converts a character into a \"Unicode string\", for instance:\r\n//\r\n//\t\"$\" -> \"U+0024\"\r\n//\r\n// Returns an empty string when the character is `null`.\r\n//\r\n// @param {String} character\r\n// @returns {String}\r\nfunction characterToUnicodeString( character ) {\r\n\tif ( character === null ) {\r\n\t\treturn '';\r\n\t}\r\n\r\n\tconst hexCode = character.codePointAt( 0 ).toString( 16 );\r\n\r\n\treturn 'U+' + ( '0000' + hexCode ).slice( -4 );\r\n}\r\n","import api from \"!../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../css-loader/dist/cjs.js!../../../postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./emoji-characters.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { Plugin } from '@ckeditor/ckeditor5-core';\r\nimport { Typing } from '@ckeditor/ckeditor5-typing';\r\nimport { createDropdown } from '@ckeditor/ckeditor5-ui';\r\nimport { CKEditorError } from '@ckeditor/ckeditor5-utils';\r\nimport EmojiCharactersNavigationView from './ui/emojicharactersnavigationview';\r\nimport CharacterGridView from './ui/charactergridview';\r\nimport CharacterInfoView from './ui/characterinfoview';\r\n\r\nimport emojiIcon from '../theme/icons/emoji-icon.svg';\r\nimport '../theme/emoji-characters.css';\r\n\r\nconst ALL_EMOJI_CHARACTERS_GROUP = 'All';\r\n\r\nexport default class Emoji extends Plugin {\r\n\t/**\r\n\t * @inheritDoc\r\n\t */\r\n\tstatic get requires() {\r\n\t\treturn [ Typing ];\r\n\t}\r\n\r\n\t/**\r\n\t * @inheritDoc\r\n\t */\r\n\tstatic get pluginName() {\r\n\t\treturn 'Emoji';\r\n\t}\r\n\r\n\t/**\r\n\t * @inheritDoc\r\n\t */\r\n\tconstructor( editor ) {\r\n\t\tsuper( editor );\r\n\t\tthis._characters = new Map();\r\n\t\tthis._groups = new Map();\r\n\t}\r\n\r\n\t/**\r\n\t * @inheritDoc\r\n\t */\r\n\tinit() {\r\n\t\tconst editor = this.editor;\r\n\t\tconst t = editor.t;\r\n\r\n\t\tconst inputCommand = editor.commands.get( 'input' );\r\n\r\n\t\teditor.ui.componentFactory.add( 'emoji', locale => {\r\n\t\t\tconst dropdownView = createDropdown( locale );\r\n\t\t\tlet dropdownPanelContent;\r\n\r\n\t\t\tdropdownView.buttonView.set( {\r\n\t\t\t\tlabel: t( 'Emoji' ),\r\n\t\t\t\ticon: emojiIcon,\r\n\t\t\t\ttooltip: true\r\n\t\t\t} );\r\n\r\n\t\t\tdropdownView.bind( 'isEnabled' ).to( inputCommand );\r\n\r\n\t\t\t// Insert a special character when a tile was clicked.\r\n\t\t\tdropdownView.on( 'execute', ( evt, data ) => {\r\n\t\t\t\teditor.execute( 'input', { text: data.character } );\r\n\t\t\t\teditor.editing.view.focus();\r\n\t\t\t} );\r\n\r\n\t\t\tdropdownView.on( 'change:isOpen', () => {\r\n\t\t\t\tif ( !dropdownPanelContent ) {\r\n\t\t\t\t\tdropdownPanelContent = this._createDropdownPanelContent( locale, dropdownView );\r\n\r\n\t\t\t\t\tdropdownView.panelView.children.add( dropdownPanelContent.navigationView );\r\n\t\t\t\t\tdropdownView.panelView.children.add( dropdownPanelContent.gridView );\r\n\t\t\t\t\tdropdownView.panelView.children.add( dropdownPanelContent.infoView );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdropdownPanelContent.infoView.set( {\r\n\t\t\t\t\tcharacter: null,\r\n\t\t\t\t\tname: null\r\n\t\t\t\t} );\r\n\t\t\t} );\r\n\r\n\t\t\treturn dropdownView;\r\n\t\t} );\r\n\t}\r\n\r\n\taddItems( groupName, items ) {\r\n\t\tif ( groupName === ALL_EMOJI_CHARACTERS_GROUP ) {\r\n\t\t\tthrow new CKEditorError(\r\n\t\t\t\t`emoji-group-error-name: The name \"${ ALL_EMOJI_CHARACTERS_GROUP }\" is reserved and cannot be used.`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tconst group = this._getGroup( groupName );\r\n\r\n\t\tfor ( const item of items ) {\r\n\t\t\tgroup.add( item.title );\r\n\t\t\tthis._characters.set( item.title, item.character );\r\n\t\t}\r\n\t}\r\n\r\n\tgetGroups() {\r\n\t\treturn this._groups.keys();\r\n\t}\r\n\r\n\tgetCharactersForGroup( groupName ) {\r\n\t\tif ( groupName === ALL_EMOJI_CHARACTERS_GROUP ) {\r\n\t\t\treturn new Set( this._characters.keys() );\r\n\t\t}\r\n\r\n\t\treturn this._groups.get( groupName );\r\n\t}\r\n\r\n\tgetCharacter( title ) {\r\n\t\treturn this._characters.get( title );\r\n\t}\r\n\r\n\t_getGroup( groupName ) {\r\n\t\tif ( !this._groups.has( groupName ) ) {\r\n\t\t\tthis._groups.set( groupName, new Set() );\r\n\t\t}\r\n\r\n\t\treturn this._groups.get( groupName );\r\n\t}\r\n\r\n\t_updateGrid( currentGroupName, gridView ) {\r\n\t\tgridView.tiles.clear();\r\n\t\tconst characterTitles = this.getCharactersForGroup( currentGroupName );\r\n\t\tfor ( const title of characterTitles ) {\r\n\t\t\tconst character = this.getCharacter( title );\r\n\t\t\tgridView.tiles.add( gridView.createTile( character, title ) );\r\n\t\t}\r\n\t}\r\n\r\n\t_createDropdownPanelContent( locale, dropdownView ) {\r\n\t\tconst specialCharsGroups = [ ...this.getGroups() ];\r\n\r\n\t\t// Add a special group that shows all available special characters.\r\n\t\tspecialCharsGroups.unshift( ALL_EMOJI_CHARACTERS_GROUP );\r\n\r\n\t\tconst navigationView = new EmojiCharactersNavigationView( locale, specialCharsGroups );\r\n\t\tconst gridView = new CharacterGridView( locale );\r\n\t\tconst infoView = new CharacterInfoView( locale );\r\n\r\n\t\tgridView.delegate( 'execute' ).to( dropdownView );\r\n\r\n\t\tgridView.on( 'tileHover', ( evt, data ) => {\r\n\t\t\tinfoView.set( data );\r\n\t\t} );\r\n\r\n\t\t// Update the grid of special characters when a user changed the character group.\r\n\t\tnavigationView.on( 'execute', () => {\r\n\t\t\tthis._updateGrid( navigationView.currentGroupName, gridView );\r\n\t\t} );\r\n\r\n\t\t// Set the initial content of the special characters grid.\r\n\t\tthis._updateGrid( navigationView.currentGroupName, gridView );\r\n\r\n\t\treturn { navigationView, gridView, infoView };\r\n\t}\r\n}\r\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./emoji.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport { CKEditorError, logWarning, type Locale } from 'ckeditor5/src/utils';\nimport type { AlignmentFormat, SupportedOption } from './alignmentconfig';\n\n/**\n * @module alignment/utils\n */\n\n/**\n * The list of supported alignment options:\n *\n * * `'left'`,\n * * `'right'`,\n * * `'center'`,\n * * `'justify'`\n */\nexport const supportedOptions: ReadonlyArray<SupportedOption> = [ 'left', 'right', 'center', 'justify' ];\n\n/**\n * Checks whether the passed option is supported by {@link module:alignment/alignmentediting~AlignmentEditing}.\n *\n * @param option The option value to check.\n */\nexport function isSupported( option: string ): boolean {\n\treturn ( supportedOptions as Array<string> ).includes( option );\n}\n\n/**\n * Checks whether alignment is the default one considering the direction\n * of the editor content.\n *\n * @param alignment The name of the alignment to check.\n * @param locale The {@link module:core/editor/editor~Editor#locale} instance.\n */\nexport function isDefault( alignment: string, locale: Locale ): boolean {\n\t// Right now only LTR is supported so the 'left' value is always the default one.\n\n\tif ( locale.contentLanguageDirection == 'rtl' ) {\n\t\treturn alignment === 'right';\n\t} else {\n\t\treturn alignment === 'left';\n\t}\n}\n\n/**\n * Brings the configuration to the common form, an array of objects.\n *\n * @param configuredOptions Alignment plugin configuration.\n * @returns Normalized object holding the configuration.\n */\nexport function normalizeAlignmentOptions( configuredOptions: Array<string | AlignmentFormat> ): Array<AlignmentFormat> {\n\tconst normalizedOptions = configuredOptions\n\t\t.map( option => {\n\t\t\tlet result;\n\n\t\t\tif ( typeof option == 'string' ) {\n\t\t\t\tresult = { name: option };\n\t\t\t} else {\n\t\t\t\tresult = option;\n\t\t\t}\n\n\t\t\treturn result as AlignmentFormat;\n\t\t} )\n\t\t// Remove all unknown options.\n\t\t.filter( option => {\n\t\t\tconst isNameValid = supportedOptions.includes( option.name );\n\n\t\t\tif ( !isNameValid ) {\n\t\t\t\t/**\n\t\t\t\t * The `name` in one of the `alignment.options` is not recognized.\n\t\t\t\t * The available options are: `'left'`, `'right'`, `'center'` and `'justify'`.\n\t\t\t\t *\n\t\t\t\t * @error alignment-config-name-not-recognized\n\t\t\t\t * @param option Options with unknown value of the `name` property.\n\t\t\t\t */\n\t\t\t\tlogWarning( 'alignment-config-name-not-recognized', { option } );\n\t\t\t}\n\n\t\t\treturn isNameValid;\n\t\t} );\n\n\tconst classNameCount = normalizedOptions.filter( option => Boolean( option.className ) ).length;\n\n\t// We either use classes for all styling options or for none.\n\tif ( classNameCount && classNameCount < normalizedOptions.length ) {\n\t\t/**\n\t\t * The `className` property has to be defined for all options once at least one option declares `className`.\n\t\t *\n\t\t * @error alignment-config-classnames-are-missing\n\t\t * @param configuredOptions Contents of `alignment.options`.\n\t\t */\n\t\tthrow new CKEditorError( 'alignment-config-classnames-are-missing', { configuredOptions } );\n\t}\n\n\t// Validate resulting config.\n\tnormalizedOptions.forEach( ( option, index, allOptions ) => {\n\t\tconst succeedingOptions = allOptions.slice( index + 1 );\n\t\tconst nameAlreadyExists = succeedingOptions.some( item => item.name == option.name );\n\n\t\tif ( nameAlreadyExists ) {\n\t\t\t/**\n\t\t\t * The same `name` in one of the `alignment.options` was already declared.\n\t\t\t * Each `name` representing one alignment option can be set exactly once.\n\t\t\t *\n\t\t\t * @error alignment-config-name-already-defined\n\t\t\t * @param option First option that declares given `name`.\n\t\t\t * @param configuredOptions Contents of `alignment.options`.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'alignment-config-name-already-defined', { option, configuredOptions } );\n\t\t}\n\n\t\t// The `className` property is present. Check for duplicates then.\n\t\tif ( option.className ) {\n\t\t\tconst classNameAlreadyExists = succeedingOptions.some( item => item.className == option.className );\n\n\t\t\tif ( classNameAlreadyExists ) {\n\t\t\t\t/**\n\t\t\t\t * The same `className` in one of the `alignment.options` was already declared.\n\t\t\t\t *\n\t\t\t\t * @error alignment-config-classname-already-defined\n\t\t\t\t * @param option First option that declares given `className`.\n\t\t\t\t * @param configuredOptions\n\t\t\t\t * Contents of `alignment.options`.\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'alignment-config-classname-already-defined', { option, configuredOptions } );\n\t\t\t}\n\t\t}\n\t} );\n\n\treturn normalizedOptions;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module alignment/alignmentcommand\n */\n\nimport { Command } from 'ckeditor5/src/core';\nimport { first } from 'ckeditor5/src/utils';\nimport type { Element, Writer } from 'ckeditor5/src/engine';\n\nimport { isDefault } from './utils';\nimport type { SupportedOption } from './alignmentconfig';\n\nconst ALIGNMENT = 'alignment';\n\n/**\n * The alignment command plugin.\n */\nexport default class AlignmentCommand extends Command {\n\t/**\n\t * A value of the current block's alignment.\n\t *\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public value: SupportedOption;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst firstBlock = first( this.editor.model.document.selection.getSelectedBlocks() )!;\n\n\t\t// As first check whether to enable or disable the command as the value will always be false if the command cannot be enabled.\n\t\tthis.isEnabled = Boolean( firstBlock ) && this._canBeAligned( firstBlock );\n\n\t\tif ( this.isEnabled && firstBlock.hasAttribute( 'alignment' ) ) {\n\t\t\tthis.value = firstBlock.getAttribute( 'alignment' ) as SupportedOption;\n\t\t} else {\n\t\t\tthis.value = locale.contentLanguageDirection === 'rtl' ? 'right' : 'left';\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command. Applies the alignment `value` to the selected blocks.\n\t * If no `value` is passed, the `value` is the default one or it is equal to the currently selected block's alignment attribute,\n\t * the command will remove the attribute from the selected blocks.\n\t *\n\t * @param options Options for the executed command.\n\t * @param options.value The value to apply.\n\t * @fires execute\n\t */\n\tpublic override execute( options: { value?: SupportedOption } = {} ): void {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst model = editor.model;\n\t\tconst doc = model.document;\n\n\t\tconst value = options.value!;\n\n\t\tmodel.change( writer => {\n\t\t\t// Get only those blocks from selected that can have alignment set\n\t\t\tconst blocks = Array.from( doc.selection.getSelectedBlocks() ).filter( block => this._canBeAligned( block ) );\n\t\t\tconst currentAlignment = blocks[ 0 ].getAttribute( 'alignment' );\n\n\t\t\t// Remove alignment attribute if current alignment is:\n\t\t\t// - default (should not be stored in model as it will bloat model data)\n\t\t\t// - equal to currently set\n\t\t\t// - or no value is passed - denotes default alignment.\n\t\t\tconst removeAlignment = isDefault( value, locale ) || currentAlignment === value || !value;\n\n\t\t\tif ( removeAlignment ) {\n\t\t\t\tremoveAlignmentFromSelection( blocks, writer );\n\t\t\t} else {\n\t\t\t\tsetAlignmentOnSelection( blocks, writer, value );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Checks whether a block can have alignment set.\n\t *\n\t * @param block The block to be checked.\n\t */\n\tprivate _canBeAligned( block: Element ) {\n\t\treturn this.editor.model.schema.checkAttribute( block, ALIGNMENT );\n\t}\n}\n\n/**\n * Removes the alignment attribute from blocks.\n */\nfunction removeAlignmentFromSelection( blocks: Array<Element>, writer: Writer ) {\n\tfor ( const block of blocks ) {\n\t\twriter.removeAttribute( ALIGNMENT, block );\n\t}\n}\n\n/**\n * Sets the alignment attribute on blocks.\n */\nfunction setAlignmentOnSelection( blocks: Array<Element>, writer: Writer, alignment: string ) {\n\tfor ( const block of blocks ) {\n\t\twriter.setAttribute( ALIGNMENT, alignment, block );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module alignment/alignmentediting\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\nimport type { AttributeDescriptor } from 'ckeditor5/src/engine';\n\nimport AlignmentCommand from './alignmentcommand';\nimport { isDefault, isSupported, normalizeAlignmentOptions, supportedOptions } from './utils';\nimport type { AlignmentFormat, SupportedOption } from './alignmentconfig';\n\n/**\n * The alignment editing feature. It introduces the {@link module:alignment/alignmentcommand~AlignmentCommand command} and adds\n * the `alignment` attribute for block elements in the {@link module:engine/model/model~Model model}.\n */\nexport default class AlignmentEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'AlignmentEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'alignment', {\n\t\t\toptions: supportedOptions.map( option => ( { name: option } ) )\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst schema = editor.model.schema;\n\n\t\tconst options: Array<AlignmentFormat> = normalizeAlignmentOptions( editor.config.get( 'alignment.options' )! );\n\n\t\t// Filter out unsupported options and those that are redundant, e.g. `left` in LTR / `right` in RTL mode.\n\t\tconst optionsToConvert = options.filter(\n\t\t\toption => isSupported( option.name ) && !isDefault( option.name, locale )\n\t\t);\n\n\t\t// Once there is at least one `className` defined, we switch to alignment with classes.\n\t\tconst shouldUseClasses = optionsToConvert.some( option => !!option.className );\n\n\t\t// Allow alignment attribute on all blocks.\n\t\tschema.extend( '$block', { allowAttributes: 'alignment' } );\n\t\teditor.model.schema.setAttributeProperties( 'alignment', { isFormatting: true } );\n\n\t\tif ( shouldUseClasses ) {\n\t\t\teditor.conversion.attributeToAttribute( buildClassDefinition( optionsToConvert ) );\n\t\t} else {\n\t\t\t// Downcast inline styles.\n\t\t\teditor.conversion.for( 'downcast' ).attributeToAttribute( buildDowncastInlineDefinition( optionsToConvert ) );\n\t\t}\n\n\t\tconst upcastInlineDefinitions = buildUpcastInlineDefinitions( optionsToConvert );\n\n\t\t// Always upcast from inline styles.\n\t\tfor ( const definition of upcastInlineDefinitions ) {\n\t\t\teditor.conversion.for( 'upcast' ).attributeToAttribute( definition );\n\t\t}\n\n\t\tconst upcastCompatibilityDefinitions = buildUpcastCompatibilityDefinitions( optionsToConvert );\n\n\t\t// Always upcast from deprecated `align` attribute.\n\t\tfor ( const definition of upcastCompatibilityDefinitions ) {\n\t\t\teditor.conversion.for( 'upcast' ).attributeToAttribute( definition );\n\t\t}\n\n\t\teditor.commands.add( 'alignment', new AlignmentCommand( editor ) );\n\t}\n}\n\n/**\n * Prepare downcast conversion definition for inline alignment styling.\n */\nfunction buildDowncastInlineDefinition( options: Array<AlignmentFormat> ) {\n\tconst view: Record<string, { key: 'style'; value: { 'text-align': SupportedOption } }> = {};\n\n\tfor ( const { name } of options ) {\n\t\tview[ name ] = {\n\t\t\tkey: 'style',\n\t\t\tvalue: {\n\t\t\t\t'text-align': name\n\t\t\t}\n\t\t};\n\t}\n\n\tconst definition = {\n\t\tmodel: {\n\t\t\tkey: 'alignment',\n\t\t\tvalues: options.map( option => option.name )\n\t\t},\n\t\tview\n\t};\n\n\treturn definition;\n}\n\n/**\n * Prepare upcast definitions for inline alignment styles.\n */\nfunction buildUpcastInlineDefinitions( options: Array<AlignmentFormat> ) {\n\tconst definitions = [];\n\n\tfor ( const { name } of options ) {\n\t\tdefinitions.push( {\n\t\t\tview: {\n\t\t\t\tkey: 'style',\n\t\t\t\tvalue: {\n\t\t\t\t\t'text-align': name\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: 'alignment',\n\t\t\t\tvalue: name\n\t\t\t}\n\t\t} );\n\t}\n\n\treturn definitions;\n}\n\n/**\n * Prepare upcast definitions for deprecated `align` attribute.\n */\nfunction buildUpcastCompatibilityDefinitions( options: Array<AlignmentFormat> ) {\n\tconst definitions = [];\n\n\tfor ( const { name } of options ) {\n\t\tdefinitions.push( {\n\t\t\tview: {\n\t\t\t\tkey: 'align',\n\t\t\t\tvalue: name\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: 'alignment',\n\t\t\t\tvalue: name\n\t\t\t}\n\t\t} );\n\t}\n\n\treturn definitions;\n}\n\n/**\n * Prepare conversion definitions for upcast and downcast alignment with classes.\n */\nfunction buildClassDefinition( options: Array<AlignmentFormat> ) {\n\tconst view: Record<string, AttributeDescriptor> = {};\n\n\tfor ( const option of options ) {\n\t\tview[ option.name ] = {\n\t\t\tkey: 'class',\n\t\t\tvalue: option.className!\n\t\t};\n\t}\n\n\tconst definition = {\n\t\tmodel: {\n\t\t\tkey: 'alignment',\n\t\t\tvalues: options.map( option => option.name )\n\t\t},\n\t\tview\n\t};\n\n\treturn definition;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module alignment/alignmentui\n */\n\nimport { Plugin, icons } from 'ckeditor5/src/core';\nimport { ButtonView, createDropdown, addToolbarToDropdown } from 'ckeditor5/src/ui';\n\nimport { isSupported, normalizeAlignmentOptions } from './utils';\nimport type { SupportedOption } from './alignmentconfig';\nimport type AlignmentCommand from './alignmentcommand';\n\nconst iconsMap = new Map( [\n\t[ 'left', icons.alignLeft ],\n\t[ 'right', icons.alignRight ],\n\t[ 'center', icons.alignCenter ],\n\t[ 'justify', icons.alignJustify ]\n] );\n\n/**\n * The default alignment UI plugin.\n *\n * It introduces the `'alignment:left'`, `'alignment:right'`, `'alignment:center'` and `'alignment:justify'` buttons\n * and the `'alignment'` dropdown.\n */\nexport default class AlignmentUI extends Plugin {\n\t/**\n\t * Returns the localized option titles provided by the plugin.\n\t *\n\t * The following localized titles corresponding with\n\t * {@link module:alignment/alignmentconfig~AlignmentConfig#options} are available:\n\t *\n\t * * `'left'`,\n\t * * `'right'`,\n\t * * `'center'`,\n\t * * `'justify'`.\n\t *\n\t * @readonly\n\t */\n\tpublic get localizedOptionTitles(): Record<SupportedOption, string> {\n\t\tconst t = this.editor.t;\n\n\t\treturn {\n\t\t\t'left': t( 'Align left' ),\n\t\t\t'right': t( 'Align right' ),\n\t\t\t'center': t( 'Align center' ),\n\t\t\t'justify': t( 'Justify' )\n\t\t};\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'AlignmentUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst componentFactory = editor.ui.componentFactory;\n\t\tconst t = editor.t;\n\t\tconst options = normalizeAlignmentOptions( editor.config.get( 'alignment.options' )! );\n\n\t\toptions\n\t\t\t.map( option => option.name )\n\t\t\t.filter( isSupported )\n\t\t\t.forEach( option => this._addButton( option ) );\n\n\t\tcomponentFactory.add( 'alignment', locale => {\n\t\t\tconst dropdownView = createDropdown( locale );\n\n\t\t\t// Add existing alignment buttons to dropdown's toolbar.\n\t\t\taddToolbarToDropdown(\n\t\t\t\tdropdownView,\n\t\t\t\t() => options.map( option => componentFactory.create( `alignment:${ option.name }` ) ) as Array<ButtonView>,\n\t\t\t\t{\n\t\t\t\t\tenableActiveItemFocusOnDropdownOpen: true,\n\t\t\t\t\tisVertical: true,\n\t\t\t\t\tariaLabel: t( 'Text alignment toolbar' )\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t// Configure dropdown properties an behavior.\n\t\t\tdropdownView.buttonView.set( {\n\t\t\t\tlabel: t( 'Text alignment' ),\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tdropdownView.extendTemplate( {\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: 'ck-alignment-dropdown'\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// The default icon depends on the direction of the content.\n\t\t\tconst defaultIcon = locale.contentLanguageDirection === 'rtl' ? iconsMap.get( 'right' ) : iconsMap.get( 'left' );\n\t\t\tconst command: AlignmentCommand = editor.commands.get( 'alignment' )!;\n\n\t\t\t// Change icon to reflect current selection's alignment.\n\t\t\tdropdownView.buttonView.bind( 'icon' ).to( command, 'value', value => iconsMap.get( value ) || defaultIcon );\n\n\t\t\t// Enable button if any of the buttons is enabled.\n\t\t\tdropdownView.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\n\t\t\t// Focus the editable after executing the command.\n\t\t\t// Overrides a default behaviour where the focus is moved to the dropdown button (#12125).\n\t\t\tthis.listenTo( dropdownView, 'execute', () => {\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t} );\n\t}\n\n\t/**\n\t * Helper method for initializing the button and linking it with an appropriate command.\n\t *\n\t * @param option The name of the alignment option for which the button is added.\n\t */\n\tprivate _addButton( option: SupportedOption ): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.ui.componentFactory.add( `alignment:${ option }`, locale => {\n\t\t\tconst command: AlignmentCommand = editor.commands.get( 'alignment' )!;\n\t\t\tconst buttonView = new ButtonView( locale );\n\n\t\t\tbuttonView.set( {\n\t\t\t\tlabel: this.localizedOptionTitles[ option ],\n\t\t\t\ticon: iconsMap.get( option ),\n\t\t\t\ttooltip: true,\n\t\t\t\tisToggleable: true\n\t\t\t} );\n\n\t\t\t// Bind button model to command.\n\t\t\tbuttonView.bind( 'isEnabled' ).to( command );\n\t\t\tbuttonView.bind( 'isOn' ).to( command, 'value', value => value === option );\n\n\t\t\t// Execute command.\n\t\t\tthis.listenTo( buttonView, 'execute', () => {\n\t\t\t\teditor.execute( 'alignment', { value: option } );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn buttonView;\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontcommand\n */\n\nimport { Command, type Editor } from 'ckeditor5/src/core';\nimport { type Batch, type Writer } from 'ckeditor5/src/engine';\n\n/**\n * The base font command.\n */\nexport default abstract class FontCommand extends Command {\n\t/**\n\t * When set, it reflects the {@link #attributeKey} value of the selection.\n\t *\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public value: string;\n\n\t/**\n\t * A model attribute on which this command operates.\n\t */\n\tpublic readonly attributeKey: string;\n\n\t/**\n\t * Creates an instance of the command.\n\t *\n\t * @param editor Editor instance.\n\t * @param attributeKey The name of a model attribute on which this command operates.\n\t */\n\tconstructor( editor: Editor, attributeKey: string ) {\n\t\tsuper( editor );\n\n\t\tthis.attributeKey = attributeKey;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\n\t\tthis.value = doc.selection.getAttribute( this.attributeKey ) as string;\n\t\tthis.isEnabled = model.schema.checkAttributeInSelection( doc.selection, this.attributeKey );\n\t}\n\n\t/**\n\t * Executes the command. Applies the `value` of the {@link #attributeKey} to the selection.\n\t * If no `value` is passed, it removes the attribute from the selection.\n\t *\n\t * @param options Options for the executed command.\n\t * @param options.value The value to apply.\n\t * @fires execute\n\t */\n\tpublic override execute( options: { value?: string; batch?: Batch } = {} ): void {\n\t\tconst model = this.editor.model;\n\t\tconst document = model.document;\n\t\tconst selection = document.selection;\n\n\t\tconst value = options.value;\n\t\tconst batch = options.batch;\n\n\t\tconst updateAttribute = ( writer: Writer ) => {\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\tif ( value ) {\n\t\t\t\t\twriter.setSelectionAttribute( this.attributeKey, value );\n\t\t\t\t} else {\n\t\t\t\t\twriter.removeSelectionAttribute( this.attributeKey );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst ranges = model.schema.getValidRanges( selection.getRanges(), this.attributeKey );\n\n\t\t\t\tfor ( const range of ranges ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\twriter.setAttribute( this.attributeKey, value, range );\n\t\t\t\t\t} else {\n\t\t\t\t\t\twriter.removeAttribute( this.attributeKey, range );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// In some scenarios, you may want to use a single undo step for multiple changes (e.g. in color picker).\n\t\tif ( batch ) {\n\t\t\tmodel.enqueueChange( batch, writer => {\n\t\t\t\tupdateAttribute( writer );\n\t\t\t} );\n\t\t} else {\n\t\t\tmodel.change( writer => {\n\t\t\t\tupdateAttribute( writer );\n\t\t\t} );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/utils\n */\n\nimport type { FontFamilyOption, FontSizeOption } from './fontconfig';\nimport { ColorSelectorView, type ColorDefinition, type ColorPickerViewConfig, type DropdownView } from 'ckeditor5/src/ui';\nimport type { ArrayOrItem } from 'ckeditor5/src/utils';\nimport type {\n\tViewAttributeElement,\n\tViewElement,\n\tMatcherPattern,\n\tViewElementDefinition,\n\tDowncastConversionApi\n} from 'ckeditor5/src/engine';\n\n/**\n * The name of the font size plugin.\n */\nexport const FONT_SIZE = 'fontSize';\n\n/**\n * The name of the font family plugin.\n */\nexport const FONT_FAMILY = 'fontFamily';\n\n/**\n * The name of the font color plugin.\n */\nexport const FONT_COLOR = 'fontColor';\n\n/**\n * The name of the font background color plugin.\n */\nexport const FONT_BACKGROUND_COLOR = 'fontBackgroundColor';\n\n/**\n * Builds a proper converter definition out of input data.\n */\nexport function buildDefinition(\n\tmodelAttributeKey: string,\n\toptions: Array<FontFamilyOption> | Array<FontSizeOption>\n): FontConverterDefinition {\n\tconst definition: FontConverterDefinition = {\n\t\tmodel: {\n\t\t\tkey: modelAttributeKey,\n\t\t\tvalues: []\n\t\t},\n\t\tview: {},\n\t\tupcastAlso: {}\n\t};\n\n\tfor ( const option of options ) {\n\t\tdefinition.model.values.push( option.model! );\n\t\tdefinition.view[ option.model! ] = option.view!;\n\n\t\tif ( option.upcastAlso ) {\n\t\t\tdefinition.upcastAlso[ option.model! ] = option.upcastAlso;\n\t\t}\n\t}\n\n\treturn definition;\n}\n\nexport type FontConverterDefinition = {\n\tmodel: { key: string; values: Array<string> };\n\tview: Record<string, ViewElementDefinition>;\n\tupcastAlso: Record<string, ArrayOrItem<MatcherPattern>>;\n};\n\n/**\n * A {@link module:font/fontcolor~FontColor font color} and\n * {@link module:font/fontbackgroundcolor~FontBackgroundColor font background color} helper\n * responsible for upcasting data to the model.\n *\n * **Note**: The `styleAttr` parameter should be either `'color'` or `'background-color'`.\n */\nexport function renderUpcastAttribute( styleAttr: string ) {\n\treturn ( viewElement: ViewElement ): string => normalizeColorCode( viewElement.getStyle( styleAttr )! );\n}\n\n/**\n * A {@link module:font/fontcolor~FontColor font color} and\n * {@link module:font/fontbackgroundcolor~FontBackgroundColor font background color} helper\n * responsible for downcasting a color attribute to a `<span>` element.\n *\n * **Note**: The `styleAttr` parameter should be either `'color'` or `'background-color'`.\n */\nexport function renderDowncastElement( styleAttr: string ) {\n\treturn ( modelAttributeValue: string, { writer }: DowncastConversionApi ): ViewAttributeElement =>\n\t\twriter.createAttributeElement( 'span', {\n\t\t\tstyle: `${ styleAttr }:${ modelAttributeValue }`\n\t\t}, { priority: 7 } );\n}\n\n/**\n * A helper that adds {@link module:ui/colorselector/colorselectorview~ColorSelectorView} to the color dropdown with proper initial values.\n *\n * @param config.dropdownView The dropdown view to which a {@link module:ui/colorselector/colorselectorview~ColorSelectorView}\n * will be added.\n * @param config.colors An array with definitions representing colors to be displayed in the color selector.\n * @param config.removeButtonLabel The label for the button responsible for removing the color.\n * @param config.documentColorsLabel The label for the section with document colors.\n * @param config.documentColorsCount The number of document colors inside the dropdown.\n * @param config.colorPickerViewConfig Configuration of the color picker view.\n * @returns The new color selector view.\n */\nexport function addColorSelectorToDropdown(\n\t{\n\t\tdropdownView, colors, columns, removeButtonLabel, colorPickerLabel,\n\t\tdocumentColorsLabel, documentColorsCount, colorPickerViewConfig\n\t}: {\n\t\tdropdownView: ColorSelectorDropdownView;\n\t\tcolors: Array<ColorDefinition>;\n\t\tcolumns: number;\n\t\tremoveButtonLabel: string;\n\t\tcolorPickerLabel: string;\n\t\tdocumentColorsLabel?: string;\n\t\tdocumentColorsCount?: number;\n\t\tcolorPickerViewConfig: ColorPickerViewConfig | false;\n\t}\n): ColorSelectorView {\n\tconst locale = dropdownView.locale!;\n\tconst colorSelectorView = new ColorSelectorView( locale, {\n\t\tcolors,\n\t\tcolumns,\n\t\tremoveButtonLabel,\n\t\tcolorPickerLabel,\n\t\tdocumentColorsLabel,\n\t\tdocumentColorsCount,\n\t\tcolorPickerViewConfig\n\t} );\n\n\tdropdownView.colorSelectorView = colorSelectorView;\n\tdropdownView.panelView.children.add( colorSelectorView );\n\n\treturn colorSelectorView;\n}\n\n/**\n * Fixes the color value string.\n */\nfunction normalizeColorCode( value: string ): string {\n\treturn value.replace( /\\s/g, '' );\n}\n\nexport type ColorSelectorDropdownView = DropdownView & {\n\tcolorSelectorView?: ColorSelectorView;\n};\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontfamily/fontfamilycommand\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\nimport FontCommand from '../fontcommand';\nimport { FONT_FAMILY } from '../utils';\n\n/**\n * The font family command. It is used by {@link module:font/fontfamily/fontfamilyediting~FontFamilyEditing}\n * to apply the font family.\n *\n * ```ts\n * editor.execute( 'fontFamily', { value: 'Arial' } );\n * ```\n *\n * **Note**: Executing the command without the value removes the attribute from the model.\n */\nexport default class FontFamilyCommand extends FontCommand {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor, FONT_FAMILY );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\nimport type { FontFamilyOption } from '../fontconfig';\n\n/**\n * @module font/fontfamily/utils\n */\n\n/**\n * Normalizes the {@link module:font/fontconfig~FontFamilyConfig#options configuration options}\n * to the {@link module:font/fontconfig~FontFamilyOption} format.\n *\n * @param configuredOptions An array of options taken from the configuration.\n */\nexport function normalizeOptions( configuredOptions: Array<string | FontFamilyOption> ): Array<FontFamilyOption> {\n\t// Convert options to objects.\n\treturn configuredOptions\n\t\t.map( getOptionDefinition )\n\t\t// Filter out undefined values that `getOptionDefinition` might return.\n\t\t.filter( option => option !== undefined ) as Array<FontFamilyOption>;\n}\n\n/**\n * Returns an option definition either created from string shortcut.\n * If object is passed then this method will return it without alternating it. Returns undefined for item than cannot be parsed.\n *\n */\nfunction getOptionDefinition( option: string | FontFamilyOption ): FontFamilyOption | undefined {\n\t// Treat any object as full item definition provided by user in configuration.\n\tif ( typeof option === 'object' ) {\n\t\treturn option;\n\t}\n\n\t// Handle 'default' string as a special case. It will be used to remove the fontFamily attribute.\n\tif ( option === 'default' ) {\n\t\treturn {\n\t\t\ttitle: 'Default',\n\t\t\tmodel: undefined\n\t\t};\n\t}\n\n\t// Ignore values that we cannot parse to a definition.\n\tif ( typeof option !== 'string' ) {\n\t\treturn undefined;\n\t}\n\n\t// Return font family definition from font string.\n\treturn generateFontPreset( option );\n}\n\n/**\n * Creates a predefined preset for pixel size. It deconstructs font-family like string into full configuration option.\n * A font definition is passed as coma delimited set of font family names. Font names might be quoted.\n *\n * @param fontDefinition A font definition form configuration.\n */\nfunction generateFontPreset( fontDefinition: string ): FontFamilyOption {\n\t// Remove quotes from font names. They will be normalized later.\n\tconst fontNames = fontDefinition.replace( /\"|'/g, '' ).split( ',' );\n\n\t// The first matched font name will be used as dropdown list item title and as model value.\n\tconst firstFontName = fontNames[ 0 ];\n\n\t// CSS-compatible font names.\n\tconst cssFontNames = fontNames.map( normalizeFontNameForCSS ).join( ', ' );\n\n\treturn {\n\t\ttitle: firstFontName,\n\t\tmodel: cssFontNames,\n\t\tview: {\n\t\t\tname: 'span',\n\t\t\tstyles: {\n\t\t\t\t'font-family': cssFontNames\n\t\t\t},\n\t\t\tpriority: 7\n\t\t}\n\t};\n}\n\n/**\n * Normalizes font name for the style attribute. It adds braces (') if font name contains spaces.\n */\nfunction normalizeFontNameForCSS( fontName: string ): string {\n\tfontName = fontName.trim();\n\n\t// Compound font names should be quoted.\n\tif ( fontName.indexOf( ' ' ) > 0 ) {\n\t\tfontName = `'${ fontName }'`;\n\t}\n\n\treturn fontName;\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontfamily/fontfamilyediting\n */\n\nimport { type Editor, Plugin } from 'ckeditor5/src/core';\nimport type { ViewElement } from 'ckeditor5/src/engine';\n\nimport FontFamilyCommand from './fontfamilycommand';\nimport { normalizeOptions } from './utils';\nimport { buildDefinition, FONT_FAMILY } from '../utils';\n\n/**\n * The font family editing feature.\n *\n * It introduces the {@link module:font/fontfamily/fontfamilycommand~FontFamilyCommand command} and\n * the `fontFamily` attribute in the {@link module:engine/model/model~Model model} which renders\n * in the {@link module:engine/view/view view} as an inline `<span>` element (`<span style=\"font-family: Arial\">`),\n * depending on the {@link module:font/fontconfig~FontFamilyConfig configuration}.\n */\nexport default class FontFamilyEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FontFamilyEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\t// Define default configuration using font families shortcuts.\n\t\teditor.config.define( FONT_FAMILY, {\n\t\t\toptions: [\n\t\t\t\t'default',\n\t\t\t\t'Arial, Helvetica, sans-serif',\n\t\t\t\t'Courier New, Courier, monospace',\n\t\t\t\t'Georgia, serif',\n\t\t\t\t'Lucida Sans Unicode, Lucida Grande, sans-serif',\n\t\t\t\t'Tahoma, Geneva, sans-serif',\n\t\t\t\t'Times New Roman, Times, serif',\n\t\t\t\t'Trebuchet MS, Helvetica, sans-serif',\n\t\t\t\t'Verdana, Geneva, sans-serif'\n\t\t\t],\n\t\t\tsupportAllValues: false\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Allow fontFamily attribute on text nodes.\n\t\teditor.model.schema.extend( '$text', { allowAttributes: FONT_FAMILY } );\n\t\teditor.model.schema.setAttributeProperties( FONT_FAMILY, {\n\t\t\tisFormatting: true,\n\t\t\tcopyOnEnter: true\n\t\t} );\n\n\t\t// Get configured font family options without \"default\" option.\n\t\tconst options = normalizeOptions(\n\t\t\teditor.config.get( 'fontFamily.options' )!\n\t\t).filter( item => item.model );\n\t\tconst definition = buildDefinition( FONT_FAMILY, options );\n\n\t\t// Set-up the two-way conversion.\n\t\tif ( editor.config.get( 'fontFamily.supportAllValues' ) ) {\n\t\t\tthis._prepareAnyValueConverters();\n\t\t\tthis._prepareCompatibilityConverter();\n\t\t} else {\n\t\t\teditor.conversion.attributeToElement( definition );\n\t\t}\n\n\t\teditor.commands.add( FONT_FAMILY, new FontFamilyCommand( editor ) );\n\t}\n\n\t/**\n\t * These converters enable keeping any value found as `style=\"font-family: *\"` as a value of an attribute on a text even\n\t * if it is not defined in the plugin configuration.\n\t */\n\tprivate _prepareAnyValueConverters(): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.conversion.for( 'downcast' ).attributeToElement( {\n\t\t\tmodel: FONT_FAMILY,\n\t\t\tview: ( attributeValue, { writer } ) => {\n\t\t\t\treturn writer.createAttributeElement( 'span', { style: 'font-family:' + attributeValue }, { priority: 7 } );\n\t\t\t}\n\t\t} );\n\n\t\teditor.conversion.for( 'upcast' ).elementToAttribute( {\n\t\t\tmodel: {\n\t\t\t\tkey: FONT_FAMILY,\n\t\t\t\tvalue: ( viewElement: ViewElement ) => viewElement.getStyle( 'font-family' )\n\t\t\t},\n\t\t\tview: {\n\t\t\t\tname: 'span',\n\t\t\t\tstyles: {\n\t\t\t\t\t'font-family': /.*/\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Adds support for legacy `<font face=\"..\">` formatting.\n\t */\n\tprivate _prepareCompatibilityConverter(): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.conversion.for( 'upcast' ).elementToAttribute( {\n\t\t\tview: {\n\t\t\t\tname: 'font',\n\t\t\t\tattributes: {\n\t\t\t\t\t'face': /.*/\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: FONT_FAMILY,\n\t\t\t\tvalue: ( viewElement: ViewElement ) => viewElement.getAttribute( 'face' )\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontfamily/fontfamilyui\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { Collection } from 'ckeditor5/src/utils';\nimport { Model, createDropdown, addListToDropdown, type ListDropdownItemDefinition } from 'ckeditor5/src/ui';\n\nimport { normalizeOptions } from './utils';\nimport { FONT_FAMILY } from '../utils';\n\nimport type { FontFamilyOption } from '../fontconfig';\nimport type FontFamilyCommand from './fontfamilycommand';\n\nimport fontFamilyIcon from '../../theme/icons/font-family.svg';\n\n/**\n * The font family UI plugin. It introduces the `'fontFamily'` dropdown.\n */\nexport default class FontFamilyUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FontFamilyUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\tconst options = this._getLocalizedOptions();\n\n\t\tconst command: FontFamilyCommand = editor.commands.get( FONT_FAMILY )!;\n\t\tconst accessibleLabel = t( 'Font Family' );\n\n\t\t// Register UI component.\n\t\teditor.ui.componentFactory.add( FONT_FAMILY, locale => {\n\t\t\tconst dropdownView = createDropdown( locale );\n\n\t\t\taddListToDropdown( dropdownView, () => _prepareListOptions( options, command ), {\n\t\t\t\trole: 'menu',\n\t\t\t\tariaLabel: accessibleLabel\n\t\t\t} );\n\n\t\t\tdropdownView.buttonView.set( {\n\t\t\t\tlabel: accessibleLabel,\n\t\t\t\ticon: fontFamilyIcon,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tdropdownView.extendTemplate( {\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: 'ck-font-family-dropdown'\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tdropdownView.bind( 'isEnabled' ).to( command );\n\n\t\t\t// Execute command when an item from the dropdown is selected.\n\t\t\tthis.listenTo( dropdownView, 'execute', evt => {\n\t\t\t\teditor.execute( ( evt.source as any ).commandName, { value: ( evt.source as any ).commandParam } );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t} );\n\t}\n\n\t/**\n\t * Returns options as defined in `config.fontFamily.options` but processed to account for\n\t * editor localization, i.e. to display {@link module:font/fontconfig~FontFamilyOption}\n\t * in the correct language.\n\t *\n\t * Note: The reason behind this method is that there is no way to use {@link module:utils/locale~Locale#t}\n\t * when the user configuration is defined because the editor does not exist yet.\n\t */\n\tprivate _getLocalizedOptions(): Array<FontFamilyOption> {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\tconst options = normalizeOptions( ( editor.config.get( FONT_FAMILY )! ).options! );\n\n\t\treturn options.map( option => {\n\t\t\t// The only title to localize is \"Default\" others are font names.\n\t\t\tif ( option.title === 'Default' ) {\n\t\t\t\toption.title = t( 'Default' );\n\t\t\t}\n\n\t\t\treturn option;\n\t\t} );\n\t}\n}\n\n/**\n * Prepares FontFamily dropdown items.\n */\nfunction _prepareListOptions( options: Array<FontFamilyOption>, command: FontFamilyCommand ): Collection<ListDropdownItemDefinition> {\n\tconst itemDefinitions = new Collection<ListDropdownItemDefinition>();\n\n\t// Create dropdown items.\n\tfor ( const option of options ) {\n\t\tconst def = {\n\t\t\ttype: 'button' as const,\n\t\t\tmodel: new Model( {\n\t\t\t\tcommandName: FONT_FAMILY,\n\t\t\t\tcommandParam: option.model,\n\t\t\t\tlabel: option.title,\n\t\t\t\trole: 'menuitemradio',\n\t\t\t\twithText: true\n\t\t\t} )\n\t\t};\n\n\t\tdef.model.bind( 'isOn' ).to( command, 'value', value => {\n\t\t\t// \"Default\" or check in strict font-family converters mode.\n\t\t\tif ( value === option.model ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif ( !value || !option.model ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn value.split( ',' )[ 0 ].replace( /'/g, '' ).toLowerCase() === option.model.toLowerCase();\n\t\t} );\n\n\t\t// Try to set a dropdown list item style.\n\t\tif ( option.view && typeof option.view !== 'string' && option.view.styles ) {\n\t\t\tdef.model.set( 'labelStyle', `font-family: ${ option.view.styles[ 'font-family' ] }` );\n\t\t}\n\n\t\titemDefinitions.add( def );\n\t}\n\treturn itemDefinitions;\n}\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M11.03 3h6.149a.75.75 0 1 1 0 1.5h-5.514L11.03 3zm1.27 3h4.879a.75.75 0 1 1 0 1.5h-4.244L12.3 6zm1.27 3h3.609a.75.75 0 1 1 0 1.5h-2.973L13.57 9zm-2.754 2.5L8.038 4.785 5.261 11.5h5.555zm.62 1.5H4.641l-1.666 4.028H1.312l5.789-14h1.875l5.789 14h-1.663L11.436 13z\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontsize/fontsizecommand\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\nimport FontCommand from '../fontcommand';\nimport { FONT_SIZE } from '../utils';\n\n/**\n * The font size command. It is used by {@link module:font/fontsize/fontsizeediting~FontSizeEditing}\n * to apply the font size.\n *\n * ```ts\n * editor.execute( 'fontSize', { value: 'small' } );\n * ```\n *\n * **Note**: Executing the command without the value removes the attribute from the model.\n */\nexport default class FontSizeCommand extends FontCommand {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor, FONT_SIZE );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontsize/utils\n */\n\nimport { CKEditorError } from 'ckeditor5/src/utils';\nimport { type FontSizeOption } from '../fontconfig';\n\n/**\n * Normalizes and translates the {@link module:font/fontconfig~FontSizeConfig#options configuration options}\n * to the {@link module:font/fontconfig~FontSizeOption} format.\n *\n * @param configuredOptions An array of options taken from the configuration.\n */\nexport function normalizeOptions( configuredOptions: Array<string | number | FontSizeOption> ): Array<FontSizeOption> {\n\t// Convert options to objects.\n\treturn configuredOptions\n\t\t.map( item => getOptionDefinition( item ) )\n\t\t// Filter out undefined values that `getOptionDefinition` might return.\n\t\t.filter( ( option ): option is FontSizeOption => option !== undefined );\n}\n\n// Default named presets map. Always create a new instance of the preset object in order to avoid modifying references.\nconst namedPresets: Record<string, FontSizeOption> = {\n\tget tiny(): FontSizeOption {\n\t\treturn {\n\t\t\ttitle: 'Tiny',\n\t\t\tmodel: 'tiny',\n\t\t\tview: {\n\t\t\t\tname: 'span',\n\t\t\t\tclasses: 'text-tiny',\n\t\t\t\tpriority: 7\n\t\t\t}\n\t\t};\n\t},\n\tget small(): FontSizeOption {\n\t\treturn {\n\t\t\ttitle: 'Small',\n\t\t\tmodel: 'small',\n\t\t\tview: {\n\t\t\t\tname: 'span',\n\t\t\t\tclasses: 'text-small',\n\t\t\t\tpriority: 7\n\t\t\t}\n\t\t};\n\t},\n\tget big(): FontSizeOption {\n\t\treturn {\n\t\t\ttitle: 'Big',\n\t\t\tmodel: 'big',\n\t\t\tview: {\n\t\t\t\tname: 'span',\n\t\t\t\tclasses: 'text-big',\n\t\t\t\tpriority: 7\n\t\t\t}\n\t\t};\n\t},\n\tget huge(): FontSizeOption {\n\t\treturn {\n\t\t\ttitle: 'Huge',\n\t\t\tmodel: 'huge',\n\t\t\tview: {\n\t\t\t\tname: 'span',\n\t\t\t\tclasses: 'text-huge',\n\t\t\t\tpriority: 7\n\t\t\t}\n\t\t};\n\t}\n};\n\n/**\n * Returns an option definition either from preset or creates one from number shortcut.\n * If object is passed then this method will return it without alternating it. Returns undefined for item than cannot be parsed.\n */\nfunction getOptionDefinition( option: string | number | FontSizeOption ): FontSizeOption | undefined {\n\tif ( typeof option === 'number' ) {\n\t\toption = String( option );\n\t}\n\n\t// Check whether passed option is a full item definition provided by user in configuration.\n\tif ( typeof option === 'object' && isFullItemDefinition( option ) ) {\n\t\treturn attachPriority( option );\n\t}\n\n\tconst preset = findPreset( option );\n\n\t// Item is a named preset.\n\tif ( preset ) {\n\t\treturn attachPriority( preset );\n\t}\n\n\t// 'Default' font size. It will be used to remove the fontSize attribute.\n\tif ( option === 'default' ) {\n\t\treturn {\n\t\t\tmodel: undefined,\n\t\t\ttitle: 'Default'\n\t\t};\n\t}\n\n\t// At this stage we probably have numerical value to generate a preset so parse it's value.\n\t// Discard any faulty values.\n\tif ( isNumericalDefinition( option ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Return font size definition from size value.\n\treturn generatePixelPreset( option );\n}\n\n/**\n * Creates a predefined preset for pixel size.\n * @param definition Font size in pixels.\n * @returns\n */\nfunction generatePixelPreset( definition: string | FontSizeOption ): FontSizeOption {\n\t// Extend a short (numeric value) definition.\n\tif ( typeof definition === 'string' ) {\n\t\tdefinition = {\n\t\t\ttitle: definition,\n\t\t\tmodel: `${ parseFloat( definition ) }px`\n\t\t};\n\t}\n\n\tdefinition.view = {\n\t\tname: 'span',\n\t\tstyles: {\n\t\t\t'font-size': definition.model!\n\t\t}\n\t};\n\n\treturn attachPriority( definition );\n}\n\n/**\n * Adds the priority to the view element definition if missing. It's required due to ckeditor/ckeditor5#2291\n */\nfunction attachPriority( definition: FontSizeOption ): FontSizeOption {\n\tif ( definition.view && typeof definition.view !== 'string' && !definition.view.priority ) {\n\t\tdefinition.view!.priority = 7;\n\t}\n\n\treturn definition;\n}\n\n/**\n * Returns a prepared preset definition. If passed an object, a name of preset should be defined as `model` value.\n *\n * @param definition.model A preset name.\n */\nfunction findPreset( definition: string | { model?: string } ): FontSizeOption | undefined {\n\treturn typeof definition === 'string' ? namedPresets[ definition ] : namedPresets[ definition.model! ];\n}\n\n/**\n * We treat `definition` as completed if it is an object that contains `title`, `model` and `view` values.\n */\nfunction isFullItemDefinition( definition: Record<string, any> ): boolean {\n\treturn definition.title && definition.model && definition.view;\n}\n\nfunction isNumericalDefinition( definition: string | FontSizeOption ): boolean {\n\tlet numberValue;\n\n\tif ( typeof definition === 'object' ) {\n\t\tif ( !definition.model ) {\n\t\t\t/**\n\t\t\t * Provided value as an option for {@link module:font/fontsize~FontSize} seems to invalid.\n\t\t\t *\n\t\t\t * See valid examples described in the {@link module:font/fontconfig~FontSizeConfig#options plugin configuration}.\n\t\t\t *\n\t\t\t * @error font-size-invalid-definition\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'font-size-invalid-definition', null, definition );\n\t\t} else {\n\t\t\tnumberValue = parseFloat( definition.model );\n\t\t}\n\t} else {\n\t\tnumberValue = parseFloat( definition );\n\t}\n\n\treturn isNaN( numberValue );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontsize/fontsizeediting\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\nimport { CKEditorError } from 'ckeditor5/src/utils';\nimport { isLength, isPercentage, type ViewElement } from 'ckeditor5/src/engine';\n\nimport FontSizeCommand from './fontsizecommand';\nimport { normalizeOptions } from './utils';\nimport { buildDefinition, FONT_SIZE, type FontConverterDefinition } from '../utils';\n\n// Mapping of `<font size=\"..\">` styling to CSS's `font-size` values.\nconst styleFontSize = [\n\t'x-small', // Size \"0\" equal to \"1\".\n\t'x-small',\n\t'small',\n\t'medium',\n\t'large',\n\t'x-large',\n\t'xx-large',\n\t'xxx-large'\n];\n\n/**\n * The font size editing feature.\n *\n * It introduces the {@link module:font/fontsize/fontsizecommand~FontSizeCommand command} and the `fontSize`\n * attribute in the {@link module:engine/model/model~Model model} which renders in the {@link module:engine/view/view view}\n * as a `<span>` element with either:\n * * a style attribute (`<span style=\"font-size:12px\">...</span>`),\n * * or a class attribute (`<span class=\"text-small\">...</span>`)\n *\n * depending on the {@link module:font/fontconfig~FontSizeConfig configuration}.\n */\nexport default class FontSizeEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FontSizeEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\t// Define default configuration using named presets.\n\t\teditor.config.define( FONT_SIZE, {\n\t\t\toptions: [\n\t\t\t\t'tiny',\n\t\t\t\t'small',\n\t\t\t\t'default',\n\t\t\t\t'big',\n\t\t\t\t'huge'\n\t\t\t],\n\t\t\tsupportAllValues: false\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\t// Allow fontSize attribute on text nodes.\n\t\teditor.model.schema.extend( '$text', { allowAttributes: FONT_SIZE } );\n\t\teditor.model.schema.setAttributeProperties( FONT_SIZE, {\n\t\t\tisFormatting: true,\n\t\t\tcopyOnEnter: true\n\t\t} );\n\n\t\tconst supportAllValues = editor.config.get( 'fontSize.supportAllValues' );\n\n\t\t// Define view to model conversion.\n\t\tconst options = normalizeOptions( this.editor.config.get( 'fontSize.options' )! )\n\t\t\t.filter( item => item.model );\n\t\tconst definition = buildDefinition( FONT_SIZE, options );\n\n\t\t// Set-up the two-way conversion.\n\t\tif ( supportAllValues ) {\n\t\t\tthis._prepareAnyValueConverters( definition );\n\t\t\tthis._prepareCompatibilityConverter();\n\t\t} else {\n\t\t\teditor.conversion.attributeToElement( definition );\n\t\t}\n\n\t\t// Add FontSize command.\n\t\teditor.commands.add( FONT_SIZE, new FontSizeCommand( editor ) );\n\t}\n\n\t/**\n\t * These converters enable keeping any value found as `style=\"font-size: *\"` as a value of an attribute on a text even\n\t * if it is not defined in the plugin configuration.\n\t *\n\t * @param definition Converter definition out of input data.\n\t */\n\tprivate _prepareAnyValueConverters( definition: FontConverterDefinition ): void {\n\t\tconst editor = this.editor;\n\n\t\t// If `fontSize.supportAllValues=true`, we do not allow to use named presets in the plugin's configuration.\n\t\tconst presets = definition.model!.values.filter( ( value: any ) => {\n\t\t\treturn !isLength( String( value ) ) && !isPercentage( String( value ) );\n\t\t} );\n\n\t\tif ( presets.length ) {\n\t\t\t/**\n\t\t\t * If {@link module:font/fontconfig~FontSizeConfig#supportAllValues `config.fontSize.supportAllValues`} is `true`,\n\t\t\t * you need to use numerical values as font size options.\n\t\t\t *\n\t\t\t * See valid examples described in the {@link module:font/fontconfig~FontSizeConfig#options plugin configuration}.\n\t\t\t *\n\t\t\t * @error font-size-invalid-use-of-named-presets\n\t\t\t * @param {Array.<String>} presets Invalid values.\n\t\t\t */\n\t\t\tthrow new CKEditorError(\n\t\t\t\t'font-size-invalid-use-of-named-presets',\n\t\t\t\tnull, { presets }\n\t\t\t);\n\t\t}\n\n\t\teditor.conversion.for( 'downcast' ).attributeToElement( {\n\t\t\tmodel: FONT_SIZE,\n\t\t\tview: ( attributeValue, { writer } ) => {\n\t\t\t\tif ( !attributeValue ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treturn writer.createAttributeElement( 'span', { style: 'font-size:' + attributeValue }, { priority: 7 } );\n\t\t\t}\n\t\t} );\n\n\t\teditor.conversion.for( 'upcast' ).elementToAttribute( {\n\t\t\tmodel: {\n\t\t\t\tkey: FONT_SIZE,\n\t\t\t\tvalue: ( viewElement: ViewElement ) => viewElement.getStyle( 'font-size' )\n\t\t\t},\n\t\t\tview: {\n\t\t\t\tname: 'span',\n\t\t\t\tstyles: {\n\t\t\t\t\t'font-size': /.*/\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Adds support for legacy `<font size=\"..\">` formatting.\n\t */\n\tprivate _prepareCompatibilityConverter(): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.conversion.for( 'upcast' ).elementToAttribute( {\n\t\t\tview: {\n\t\t\t\tname: 'font',\n\t\t\t\tattributes: {\n\t\t\t\t\t// Documentation mentions sizes from 1 to 7. To handle old content we support all values\n\t\t\t\t\t// up to 999 but clamp it to the valid range. Why 999? It should cover accidental values\n\t\t\t\t\t// similar to percentage, e.g. 100%, 200% which could be the usual mistake for font size.\n\t\t\t\t\t'size': /^[+-]?\\d{1,3}$/\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: FONT_SIZE,\n\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\tconst value = viewElement.getAttribute( 'size' )!;\n\t\t\t\t\tconst isRelative = value[ 0 ] === '-' || value[ 0 ] === '+';\n\n\t\t\t\t\tlet size = parseInt( value, 10 );\n\n\t\t\t\t\tif ( isRelative ) {\n\t\t\t\t\t\t// Add relative size (which can be negative) to the default size = 3.\n\t\t\t\t\t\tsize = 3 + size;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst maxSize = styleFontSize.length - 1;\n\t\t\t\t\tconst clampedSize = Math.min( Math.max( size, 0 ), maxSize );\n\n\t\t\t\t\treturn styleFontSize[ clampedSize ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./fontsize.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontsize/fontsizeui\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport {\n\tModel,\n\tcreateDropdown,\n\taddListToDropdown,\n\ttype ListDropdownItemDefinition\n} from 'ckeditor5/src/ui';\nimport { Collection } from 'ckeditor5/src/utils';\n\nimport { normalizeOptions } from './utils';\nimport { FONT_SIZE } from '../utils';\n\nimport '../../theme/fontsize.css';\nimport type { FontSizeOption } from '../fontconfig';\nimport type FontSizeCommand from './fontsizecommand';\n\nimport fontSizeIcon from '../../theme/icons/font-size.svg';\n\n/**\n * The font size UI plugin. It introduces the `'fontSize'` dropdown.\n */\nexport default class FontSizeUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FontSizeUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\tconst options = this._getLocalizedOptions();\n\n\t\tconst command: FontSizeCommand = editor.commands.get( FONT_SIZE )!;\n\t\tconst accessibleLabel = t( 'Font Size' );\n\n\t\t// Register UI component.\n\t\teditor.ui.componentFactory.add( FONT_SIZE, locale => {\n\t\t\tconst dropdownView = createDropdown( locale );\n\n\t\t\taddListToDropdown( dropdownView, () => _prepareListOptions( options, command ), {\n\t\t\t\trole: 'menu',\n\t\t\t\tariaLabel: accessibleLabel\n\t\t\t} );\n\n\t\t\t// Create dropdown model.\n\t\t\tdropdownView.buttonView.set( {\n\t\t\t\tlabel: accessibleLabel,\n\t\t\t\ticon: fontSizeIcon,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tdropdownView.extendTemplate( {\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: [\n\t\t\t\t\t\t'ck-font-size-dropdown'\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tdropdownView.bind( 'isEnabled' ).to( command );\n\n\t\t\t// Execute command when an item from the dropdown is selected.\n\t\t\tthis.listenTo( dropdownView, 'execute', evt => {\n\t\t\t\teditor.execute( ( evt.source as any ).commandName, { value: ( evt.source as any ).commandParam } );\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t} );\n\t}\n\n\t/**\n\t * Returns options as defined in `config.fontSize.options` but processed to account for\n\t * editor localization, i.e. to display {@link module:font/fontconfig~FontSizeOption}\n\t * in the correct language.\n\t *\n\t * Note: The reason behind this method is that there is no way to use {@link module:utils/locale~Locale#t}\n\t * when the user configuration is defined because the editor does not exist yet.\n\t */\n\tprivate _getLocalizedOptions(): Array<FontSizeOption> {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\n\t\tconst localizedTitles: Record<string, string> = {\n\t\t\tDefault: t( 'Default' ),\n\t\t\tTiny: t( 'Tiny' ),\n\t\t\tSmall: t( 'Small' ),\n\t\t\tBig: t( 'Big' ),\n\t\t\tHuge: t( 'Huge' )\n\t\t};\n\n\t\tconst options = normalizeOptions( ( editor.config.get( FONT_SIZE )! ).options! );\n\n\t\treturn options.map( option => {\n\t\t\tconst title = localizedTitles[ option.title ];\n\n\t\t\tif ( title && title != option.title ) {\n\t\t\t\t// Clone the option to avoid altering the original `namedPresets` from `./utils.js`.\n\t\t\t\toption = Object.assign( {}, option, { title } );\n\t\t\t}\n\n\t\t\treturn option;\n\t\t} );\n\t}\n}\n\n/**\n * Prepares FontSize dropdown items.\n */\nfunction _prepareListOptions( options: Array<FontSizeOption>, command: FontSizeCommand ): Collection<ListDropdownItemDefinition> {\n\tconst itemDefinitions = new Collection<ListDropdownItemDefinition>();\n\n\tfor ( const option of options ) {\n\t\tconst def = {\n\t\t\ttype: 'button' as const,\n\t\t\tmodel: new Model( {\n\t\t\t\tcommandName: FONT_SIZE,\n\t\t\t\tcommandParam: option.model,\n\t\t\t\tlabel: option.title,\n\t\t\t\tclass: 'ck-fontsize-option',\n\t\t\t\trole: 'menuitemradio',\n\t\t\t\twithText: true\n\t\t\t} )\n\t\t};\n\n\t\tif ( option.view && typeof option.view !== 'string' ) {\n\t\t\tif ( option.view.styles ) {\n\t\t\t\tdef.model.set( 'labelStyle', `font-size:${ option.view.styles[ 'font-size' ] }` );\n\t\t\t}\n\t\t\tif ( option.view.classes ) {\n\t\t\t\tdef.model.set( 'class', `${ def.model.class } ${ option.view.classes }` );\n\t\t\t}\n\t\t}\n\n\t\tdef.model.bind( 'isOn' ).to( command, 'value', value => value === option.model );\n\n\t\t// Add the option to the collection.\n\t\titemDefinitions.add( def );\n\t}\n\n\treturn itemDefinitions;\n}\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M9.816 11.5 7.038 4.785 4.261 11.5h5.555zm.62 1.5H3.641l-1.666 4.028H.312l5.789-14h1.875l5.789 14h-1.663L10.436 13zm7.55 2.279.779-.779.707.707-2.265 2.265-2.193-2.265.707-.707.765.765V4.825c0-.042 0-.083.002-.123l-.77.77-.707-.707L17.207 2.5l2.265 2.265-.707.707-.782-.782c.002.043.003.089.003.135v10.454z\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontcolor/fontcolorcommand\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\nimport FontCommand from '../fontcommand';\nimport { FONT_COLOR } from '../utils';\n\n/**\n * The font color command. It is used by {@link module:font/fontcolor/fontcolorediting~FontColorEditing}\n * to apply the font color.\n *\n * ```ts\n * editor.execute( 'fontColor', { value: 'rgb(250, 20, 20)' } );\n * ```\n *\n * **Note**: Executing the command with the `null` value removes the attribute from the model.\n */\nexport default class FontColorCommand extends FontCommand {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor, FONT_COLOR );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontcolor/fontcolorediting\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\nimport FontColorCommand from './fontcolorcommand';\nimport type { ViewElement } from 'ckeditor5/src/engine';\nimport { FONT_COLOR, renderDowncastElement, renderUpcastAttribute } from '../utils';\n\n/**\n * The font color editing feature.\n *\n * It introduces the {@link module:font/fontcolor/fontcolorcommand~FontColorCommand command} and\n * the `fontColor` attribute in the {@link module:engine/model/model~Model model} which renders\n * in the {@link module:engine/view/view view} as a `<span>` element (`<span style=\"color: ...\">`),\n * depending on the {@link module:font/fontconfig~FontColorConfig configuration}.\n */\nexport default class FontColorEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FontColorEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( FONT_COLOR, {\n\t\t\tcolors: [\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(0, 0%, 0%)',\n\t\t\t\t\tlabel: 'Black'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(0, 0%, 30%)',\n\t\t\t\t\tlabel: 'Dim grey'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(0, 0%, 60%)',\n\t\t\t\t\tlabel: 'Grey'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(0, 0%, 90%)',\n\t\t\t\t\tlabel: 'Light grey'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(0, 0%, 100%)',\n\t\t\t\t\tlabel: 'White',\n\t\t\t\t\thasBorder: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(0, 75%, 60%)',\n\t\t\t\t\tlabel: 'Red'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(30, 75%, 60%)',\n\t\t\t\t\tlabel: 'Orange'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(60, 75%, 60%)',\n\t\t\t\t\tlabel: 'Yellow'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(90, 75%, 60%)',\n\t\t\t\t\tlabel: 'Light green'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(120, 75%, 60%)',\n\t\t\t\t\tlabel: 'Green'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(150, 75%, 60%)',\n\t\t\t\t\tlabel: 'Aquamarine'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(180, 75%, 60%)',\n\t\t\t\t\tlabel: 'Turquoise'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(210, 75%, 60%)',\n\t\t\t\t\tlabel: 'Light blue'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(240, 75%, 60%)',\n\t\t\t\t\tlabel: 'Blue'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(270, 75%, 60%)',\n\t\t\t\t\tlabel: 'Purple'\n\t\t\t\t}\n\t\t\t],\n\t\t\tcolumns: 5\n\t\t} );\n\n\t\teditor.conversion.for( 'upcast' ).elementToAttribute( {\n\t\t\tview: {\n\t\t\t\tname: 'span',\n\t\t\t\tstyles: {\n\t\t\t\t\t'color': /[\\s\\S]+/\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: FONT_COLOR,\n\t\t\t\tvalue: renderUpcastAttribute( 'color' )\n\t\t\t}\n\t\t} );\n\n\t\t// Support legacy `<font color=\"..\">` formatting.\n\t\teditor.conversion.for( 'upcast' ).elementToAttribute( {\n\t\t\tview: {\n\t\t\t\tname: 'font',\n\t\t\t\tattributes: {\n\t\t\t\t\t'color': /^#?\\w+$/\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: FONT_COLOR,\n\t\t\t\tvalue: ( viewElement: ViewElement ) => viewElement.getAttribute( 'color' )\n\t\t\t}\n\t\t} );\n\n\t\teditor.conversion.for( 'downcast' ).attributeToElement( {\n\t\t\tmodel: FONT_COLOR,\n\t\t\tview: renderDowncastElement( 'color' )\n\t\t} );\n\n\t\teditor.commands.add( FONT_COLOR, new FontColorCommand( editor ) );\n\n\t\t// Allow the font color attribute on text nodes.\n\t\teditor.model.schema.extend( '$text', { allowAttributes: FONT_COLOR } );\n\n\t\teditor.model.schema.setAttributeProperties( FONT_COLOR, {\n\t\t\tisFormatting: true,\n\t\t\tcopyOnEnter: true\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/ui/colorui\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\nimport type { Batch } from 'ckeditor5/src/engine';\nimport {\n\tcreateDropdown,\n\tnormalizeColorOptions,\n\tgetLocalizedColorOptions,\n\tfocusChildOnDropdownOpen,\n\ttype ColorSelectorView,\n\ttype ColorSelectorExecuteEvent,\n\ttype ColorSelectorColorPickerCancelEvent,\n\ttype ColorSelectorColorPickerShowEvent\n} from 'ckeditor5/src/ui';\n\nimport {\n\taddColorSelectorToDropdown,\n\ttype ColorSelectorDropdownView,\n\ttype FONT_BACKGROUND_COLOR,\n\ttype FONT_COLOR\n} from '../utils';\nimport type FontColorCommand from '../fontcolor/fontcolorcommand';\nimport type FontBackgroundColorCommand from '../fontbackgroundcolor/fontbackgroundcolorcommand';\nimport type { FontColorConfig } from '../fontconfig';\n\n/**\n * The color UI plugin which isolates the common logic responsible for displaying dropdowns with color grids.\n *\n * It is used to create the `'fontBackgroundColor'` and `'fontColor'` dropdowns, each hosting\n * a {@link module:ui/colorselector/colorselectorview~ColorSelectorView}.\n */\nexport default class ColorUI extends Plugin {\n\t/**\n\t * The name of the command which will be executed when a color tile is clicked.\n\t */\n\tpublic commandName: typeof FONT_BACKGROUND_COLOR | typeof FONT_COLOR;\n\n\t/**\n\t * The name of this component in the {@link module:ui/componentfactory~ComponentFactory}.\n\t * Also the configuration scope name in `editor.config`.\n\t */\n\tpublic componentName: typeof FONT_BACKGROUND_COLOR | typeof FONT_COLOR;\n\n\t/**\n\t * The SVG icon used by the dropdown.\n\t */\n\tpublic icon: string;\n\n\t/**\n\t * The label used by the dropdown.\n\t */\n\tpublic dropdownLabel: string;\n\n\t/**\n\t * The number of columns in the color grid.\n\t */\n\tpublic columns: number;\n\n\t/**\n\t * Keeps a reference to {@link module:ui/colorselector/colorselectorview~ColorSelectorView}.\n\t */\n\tpublic colorSelectorView: ColorSelectorView | undefined;\n\n\t/**\n\t * Keeps all changes in color picker in one batch while dropdown is open.\n\t */\n\tdeclare private _undoStepBatch: Batch;\n\n\t/**\n\t * Creates a plugin which introduces a dropdown with a pre–configured\n\t * {@link module:ui/colorselector/colorselectorview~ColorSelectorView}.\n\t *\n\t * @param config The configuration object.\n\t * @param config.commandName The name of the command which will be executed when a color tile is clicked.\n\t * @param config.componentName The name of the dropdown in the {@link module:ui/componentfactory~ComponentFactory}\n\t * and the configuration scope name in `editor.config`.\n\t * @param config.icon The SVG icon used by the dropdown.\n\t * @param config.dropdownLabel The label used by the dropdown.\n\t */\n\tconstructor(\n\t\teditor: Editor,\n\t\t{ commandName, componentName, icon, dropdownLabel }: {\n\t\t\tcommandName: typeof FONT_BACKGROUND_COLOR | typeof FONT_COLOR;\n\t\t\tcomponentName: typeof FONT_BACKGROUND_COLOR | typeof FONT_COLOR;\n\t\t\ticon: string;\n\t\t\tdropdownLabel: string;\n\t\t}\n\t) {\n\t\tsuper( editor );\n\n\t\tthis.commandName = commandName;\n\t\tthis.componentName = componentName;\n\t\tthis.icon = icon;\n\t\tthis.dropdownLabel = dropdownLabel;\n\t\tthis.columns = editor.config.get( `${ this.componentName }.columns` )!;\n\t\tthis.colorSelectorView = undefined;\n\t}\n\n\t/**\n\t* @inheritDoc\n\t*/\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst t = locale.t;\n\t\tconst command: FontColorCommand | FontBackgroundColorCommand = editor.commands.get( this.commandName )!;\n\t\tconst componentConfig = editor.config.get( this.componentName )! as FontColorConfig;\n\t\tconst colorsConfig = normalizeColorOptions( componentConfig.colors! );\n\t\tconst localizedColors = getLocalizedColorOptions( locale, colorsConfig );\n\t\tconst documentColorsCount = componentConfig.documentColors;\n\t\tconst hasColorPicker = componentConfig.colorPicker !== false;\n\n\t\t// Register the UI component.\n\t\teditor.ui.componentFactory.add( this.componentName, locale => {\n\t\t\tconst dropdownView: ColorSelectorDropdownView = createDropdown( locale );\n\t\t\t// Font color dropdown rendering is deferred once it gets open to improve performance (#6192).\n\t\t\tlet dropdownContentRendered = false;\n\n\t\t\tthis.colorSelectorView = addColorSelectorToDropdown( {\n\t\t\t\tdropdownView,\n\t\t\t\tcolors: localizedColors.map( option => ( {\n\t\t\t\t\tlabel: option.label,\n\t\t\t\t\tcolor: option.model,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\thasBorder: option.hasBorder\n\t\t\t\t\t}\n\t\t\t\t} ) ),\n\t\t\t\tcolumns: this.columns,\n\t\t\t\tremoveButtonLabel: t( 'Remove color' ),\n\t\t\t\tcolorPickerLabel: t( 'Color picker' ),\n\t\t\t\tdocumentColorsLabel: documentColorsCount !== 0 ? t( 'Document colors' ) : '',\n\t\t\t\tdocumentColorsCount: documentColorsCount === undefined ? this.columns : documentColorsCount,\n\t\t\t\tcolorPickerViewConfig: hasColorPicker ? ( componentConfig.colorPicker || {} ) : false\n\t\t\t} );\n\n\t\t\tthis.colorSelectorView.bind( 'selectedColor' ).to( command, 'value' );\n\n\t\t\tdropdownView.buttonView.set( {\n\t\t\t\tlabel: this.dropdownLabel,\n\t\t\t\ticon: this.icon,\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tdropdownView.extendTemplate( {\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: 'ck-color-ui-dropdown'\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tdropdownView.bind( 'isEnabled' ).to( command );\n\n\t\t\tthis.colorSelectorView.on<ColorSelectorExecuteEvent>( 'execute', ( evt, data ) => {\n\t\t\t\tif ( dropdownView.isOpen ) {\n\t\t\t\t\teditor.execute( this.commandName, {\n\t\t\t\t\t\tvalue: data.value,\n\t\t\t\t\t\tbatch: this._undoStepBatch\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tif ( data.source !== 'colorPicker' ) {\n\t\t\t\t\teditor.editing.view.focus();\n\t\t\t\t}\n\n\t\t\t\tif ( data.source === 'colorPickerSaveButton' ) {\n\t\t\t\t\tdropdownView.isOpen = false;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.colorSelectorView.on<ColorSelectorColorPickerShowEvent>( 'colorPicker:show', () => {\n\t\t\t\tthis._undoStepBatch = editor.model.createBatch();\n\t\t\t} );\n\n\t\t\tthis.colorSelectorView.on<ColorSelectorColorPickerCancelEvent>( 'colorPicker:cancel', () => {\n\t\t\t\tif ( this._undoStepBatch!.operations.length ) {\n\t\t\t\t\t// We need to close the dropdown before the undo batch.\n\t\t\t\t\t// Otherwise, ColorUI treats undo as a selected color change,\n\t\t\t\t\t// propagating the update to the whole selection.\n\t\t\t\t\t// That's an issue if spans with various colors were selected.\n\t\t\t\t\tdropdownView.isOpen = false;\n\t\t\t\t\teditor.execute( 'undo', this._undoStepBatch );\n\t\t\t\t}\n\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\tdropdownView.on( 'change:isOpen', ( evt, name, isVisible ) => {\n\t\t\t\tif ( !dropdownContentRendered ) {\n\t\t\t\t\tdropdownContentRendered = true;\n\n\t\t\t\t\tdropdownView.colorSelectorView!.appendUI();\n\t\t\t\t}\n\n\t\t\t\tif ( isVisible ) {\n\t\t\t\t\tif ( documentColorsCount !== 0 ) {\n\t\t\t\t\t\tthis.colorSelectorView!.updateDocumentColors( editor.model, this.componentName );\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.colorSelectorView!.updateSelectedColors();\n\t\t\t\t\tthis.colorSelectorView!.showColorGridsFragment();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Accessibility: focus the first active color when opening the dropdown.\n\t\t\tfocusChildOnDropdownOpen(\n\t\t\t\tdropdownView,\n\t\t\t\t() => dropdownView.colorSelectorView!.colorGridsFragmentView.staticColorsGrid!.items.find( ( item: any ) => item.isOn )\n\t\t\t);\n\n\t\t\treturn dropdownView;\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontcolor/fontcolorui\n */\n\nimport ColorUI from '../ui/colorui';\nimport { FONT_COLOR } from '../utils';\nimport type { Editor } from 'ckeditor5/src/core';\n\nimport fontColorIcon from '../../theme/icons/font-color.svg';\n\n/**\n * The font color UI plugin. It introduces the `'fontColor'` dropdown.\n */\nexport default class FontColorUI extends ColorUI {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tconst t = editor.locale.t;\n\n\t\tsuper( editor, {\n\t\t\tcommandName: FONT_COLOR,\n\t\t\tcomponentName: FONT_COLOR,\n\t\t\ticon: fontColorIcon,\n\t\t\tdropdownLabel: t( 'Font Color' )\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FontColorUI' as const;\n\t}\n}\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M12.4 10.3 10 4.5l-2.4 5.8h4.8zm.5 1.2H7.1L5.7 15H4.2l5-12h1.6l5 12h-1.5L13 11.5zm3.1 7H4a1 1 0 0 1 0-2h12a1 1 0 0 1 0 2z\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontbackgroundcolor/fontbackgroundcolorcommand\n */\n\nimport type { Editor } from 'ckeditor5/src/core';\nimport FontCommand from '../fontcommand';\nimport { FONT_BACKGROUND_COLOR } from '../utils';\n\n/**\n * The font background color command. It is used by\n * {@link module:font/fontbackgroundcolor/fontbackgroundcolorediting~FontBackgroundColorEditing}\n * to apply the font background color.\n *\n * ```ts\n * editor.execute( 'fontBackgroundColor', { value: 'rgb(250, 20, 20)' } );\n * ```\n *\n * **Note**: Executing the command with the `null` value removes the attribute from the model.\n */\nexport default class FontBackgroundColorCommand extends FontCommand {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor, FONT_BACKGROUND_COLOR );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontbackgroundcolor/fontbackgroundcolorediting\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core';\nimport { addBackgroundRules } from 'ckeditor5/src/engine';\n\nimport FontBackgroundColorCommand from './fontbackgroundcolorcommand';\nimport { FONT_BACKGROUND_COLOR, renderDowncastElement, renderUpcastAttribute } from '../utils';\n\n/**\n * The font background color editing feature.\n *\n * It introduces the {@link module:font/fontbackgroundcolor/fontbackgroundcolorcommand~FontBackgroundColorCommand command} and\n * the `fontBackgroundColor` attribute in the {@link module:engine/model/model~Model model} which renders\n * in the {@link module:engine/view/view view} as a `<span>` element (`<span style=\"background-color: ...\">`),\n * depending on the {@link module:font/fontconfig~FontColorConfig configuration}.\n */\nexport default class FontBackgroundColorEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FontBackgroundColorEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( FONT_BACKGROUND_COLOR, {\n\t\t\tcolors: [\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(0, 0%, 0%)',\n\t\t\t\t\tlabel: 'Black'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(0, 0%, 30%)',\n\t\t\t\t\tlabel: 'Dim grey'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(0, 0%, 60%)',\n\t\t\t\t\tlabel: 'Grey'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(0, 0%, 90%)',\n\t\t\t\t\tlabel: 'Light grey'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(0, 0%, 100%)',\n\t\t\t\t\tlabel: 'White',\n\t\t\t\t\thasBorder: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(0, 75%, 60%)',\n\t\t\t\t\tlabel: 'Red'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(30, 75%, 60%)',\n\t\t\t\t\tlabel: 'Orange'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(60, 75%, 60%)',\n\t\t\t\t\tlabel: 'Yellow'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(90, 75%, 60%)',\n\t\t\t\t\tlabel: 'Light green'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(120, 75%, 60%)',\n\t\t\t\t\tlabel: 'Green'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(150, 75%, 60%)',\n\t\t\t\t\tlabel: 'Aquamarine'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(180, 75%, 60%)',\n\t\t\t\t\tlabel: 'Turquoise'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(210, 75%, 60%)',\n\t\t\t\t\tlabel: 'Light blue'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(240, 75%, 60%)',\n\t\t\t\t\tlabel: 'Blue'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcolor: 'hsl(270, 75%, 60%)',\n\t\t\t\t\tlabel: 'Purple'\n\t\t\t\t}\n\t\t\t],\n\t\t\tcolumns: 5\n\t\t} );\n\n\t\teditor.data.addStyleProcessorRules( addBackgroundRules );\n\t\teditor.conversion.for( 'upcast' ).elementToAttribute( {\n\t\t\tview: {\n\t\t\t\tname: 'span',\n\t\t\t\tstyles: {\n\t\t\t\t\t'background-color': /[\\s\\S]+/\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: FONT_BACKGROUND_COLOR,\n\t\t\t\tvalue: renderUpcastAttribute( 'background-color' )\n\t\t\t}\n\t\t} );\n\n\t\teditor.conversion.for( 'downcast' ).attributeToElement( {\n\t\t\tmodel: FONT_BACKGROUND_COLOR,\n\t\t\tview: renderDowncastElement( 'background-color' )\n\t\t} );\n\n\t\teditor.commands.add( FONT_BACKGROUND_COLOR, new FontBackgroundColorCommand( editor ) );\n\n\t\t// Allow the font backgroundColor attribute on text nodes.\n\t\teditor.model.schema.extend( '$text', { allowAttributes: FONT_BACKGROUND_COLOR } );\n\n\t\teditor.model.schema.setAttributeProperties( FONT_BACKGROUND_COLOR, {\n\t\t\tisFormatting: true,\n\t\t\tcopyOnEnter: true\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontbackgroundcolor/fontbackgroundcolorui\n */\n\nimport ColorUI from '../ui/colorui';\nimport { FONT_BACKGROUND_COLOR } from '../utils';\nimport type { Editor } from 'ckeditor5/src/core';\n\nimport fontBackgroundColorIcon from '../../theme/icons/font-background.svg';\n\n/**\n * The font background color UI plugin. It introduces the `'fontBackgroundColor'` dropdown.\n */\nexport default class FontBackgroundColorUI extends ColorUI {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tconst t = editor.locale.t;\n\n\t\tsuper( editor, {\n\t\t\tcommandName: FONT_BACKGROUND_COLOR,\n\t\t\tcomponentName: FONT_BACKGROUND_COLOR,\n\t\t\ticon: fontBackgroundColorIcon,\n\t\t\tdropdownLabel: t( 'Font Background Color' )\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FontBackgroundColorUI' as const;\n\t}\n}\n","export default \"<svg viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M4 2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zm8.38 9.262H7.62L10 5.506l2.38 5.756zm.532 1.285L14.34 16h1.426L10.804 4H9.196L4.234 16H5.66l1.428-3.453h5.824z\\\"/></svg>\";","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n// The editor creator to use.\nimport { ClassicEditor as ClassicEditorBase } from '@ckeditor/ckeditor5-editor-classic';\n\nimport { Essentials } from '@ckeditor/ckeditor5-essentials';\nimport { UploadAdapter } from '@ckeditor/ckeditor5-adapter-ckfinder';\nimport { Autoformat } from '@ckeditor/ckeditor5-autoformat';\nimport { Bold, Italic } from '@ckeditor/ckeditor5-basic-styles';\nimport { BlockQuote } from '@ckeditor/ckeditor5-block-quote';\nimport { CKFinder } from '@ckeditor/ckeditor5-ckfinder';\nimport { EasyImage } from '@ckeditor/ckeditor5-easy-image';\nimport { Heading } from '@ckeditor/ckeditor5-heading';\nimport {\n\tImage,\n\tImageCaption,\n\tImageStyle,\n\tImageToolbar,\n\tImageUpload,\n\tImageResizeEditing,\n\tImageResizeHandles\n} from '@ckeditor/ckeditor5-image';\nimport { Indent, IndentBlock } from '@ckeditor/ckeditor5-indent';\nimport { Link, LinkImage } from '@ckeditor/ckeditor5-link';\nimport { List } from '@ckeditor/ckeditor5-list';\nimport { MediaEmbed } from '@ckeditor/ckeditor5-media-embed';\nimport { Paragraph } from '@ckeditor/ckeditor5-paragraph';\nimport { PasteFromOffice } from '@ckeditor/ckeditor5-paste-from-office';\nimport { Table, TableToolbar, TableProperties, TableCellProperties, TableColumnResize, TableCaption } from '@ckeditor/ckeditor5-table';\nimport { TextTransformation } from '@ckeditor/ckeditor5-typing';\nimport { CloudServices } from '@ckeditor/ckeditor5-cloud-services';\nimport { HtmlEmbed } from '@ckeditor/ckeditor5-html-embed';\nimport { Mention, MentionUI, MentionEditing } from '@ckeditor/ckeditor5-mention';\nimport VideoToolbar from '@flockjay/ckeditor5-video/src/videotoolbar.js';\nimport Video from '@flockjay/ckeditor5-video/src/video.js';\nimport VideoUpload from '@flockjay/ckeditor5-video/src/videoupload.js';\nimport VideoResize from '@flockjay/ckeditor5-video/src/videoresize.js';\nimport VideoStyle from '@flockjay/ckeditor5-video/src/videostyle.js';\nimport VideoInsert from '@flockjay/ckeditor5-video/src/videoinsert.js';\nimport AudioToolbar from '@flockjay/ckeditor5-audio/src/audiotoolbar.js';\nimport Audio from '@flockjay/ckeditor5-audio/src/audio.js';\nimport AudioUpload from '@flockjay/ckeditor5-audio/src/audioupload.js';\nimport AudioResize from '@flockjay/ckeditor5-audio/src/audioresize.js';\nimport AudioStyle from '@flockjay/ckeditor5-audio/src/audiostyle.js';\nimport {\n\tEmoji,\n\tEmojiActivity,\n\tEmojiFlags,\n\tEmojiFood,\n\tEmojiNature,\n\tEmojiObjects,\n\tEmojiPeople,\n\tEmojiPlaces,\n\tEmojiSymbols\n} from '@phudak/ckeditor5-emoji/src';\nimport '../theme/emoji.css';\nimport { Alignment } from '@ckeditor/ckeditor5-alignment';\nimport { FontSize, FontFamily, FontColor, FontBackgroundColor } from '@ckeditor/ckeditor5-font';\n\nexport default class ClassicEditor extends ClassicEditorBase {\n\tpublic static override builtinPlugins = [\n\t\tAlignment,\n\t\tEssentials,\n\t\tUploadAdapter,\n\t\tAutoformat,\n\t\tBold,\n\t\tItalic,\n\t\tBlockQuote,\n\t\tCKFinder,\n\t\tCloudServices,\n\t\tEasyImage,\n\t\tHeading,\n\t\tFontFamily,\n\t\tFontSize,\n\t\tFontColor,\n\t\tFontBackgroundColor,\n\t\tImage,\n\t\tImageCaption,\n\t\tImageStyle,\n\t\tImageToolbar,\n\t\tImageUpload,\n\t\tImageResizeEditing,\n\t\tImageResizeHandles,\n\t\tLinkImage,\n\t\tIndent,\n\t\tIndentBlock,\n\t\tLink,\n\t\tList,\n\t\tMediaEmbed,\n\t\tParagraph,\n\t\tPasteFromOffice,\n\t\tTable,\n\t\tTableToolbar,\n\t\tTableProperties,\n\t\tTableCellProperties,\n\t\tTableColumnResize,\n\t\tTableCaption,\n\t\tTextTransformation,\n\t\tHtmlEmbed,\n\t\tMention,\n\t\tMentionUI,\n\t\tMentionEditing,\n\t\tVideoToolbar,\n\t\tVideo,\n\t\tVideoUpload,\n\t\tVideoResize,\n\t\tVideoStyle,\n\t\tVideoInsert,\n\t\tAudioToolbar,\n\t\tAudio,\n\t\tAudioUpload,\n\t\tAudioResize,\n\t\tAudioStyle,\n\t\tEmoji,\n\t\tEmojiPeople,\n\t\tEmojiNature,\n\t\tEmojiPlaces,\n\t\tEmojiFood,\n\t\tEmojiActivity,\n\t\tEmojiObjects,\n\t\tEmojiSymbols,\n\t\tEmojiFlags\n\t];\n\n\tpublic static override defaultConfig = {\n\t\ttoolbar: {\n\t\t\titems: [\n\t\t\t\t'heading',\n\t\t\t\t'|',\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Fonts',\n\t\t\t\t\ticon: 'text',\n\t\t\t\t\titems: [ 'fontFamily', 'fontSize', 'fontColor', 'fontBackgroundColor' ]\n\t\t\t\t},\n\t\t\t\t'|',\n\t\t\t\t'bold',\n\t\t\t\t'italic',\n\t\t\t\t'link',\n\t\t\t\t'blockQuote',\n\t\t\t\t'bulletedList',\n\t\t\t\t'numberedList',\n\t\t\t\t'insertTable',\n\t\t\t\t'|',\n\t\t\t\t'outdent',\n\t\t\t\t'indent',\n\t\t\t\t'alignment:center',\n\t\t\t\t'alignment:left',\n\t\t\t\t'alignment:right',\n\t\t\t\t'alignment:justify',\n\t\t\t\t'|',\n\t\t\t\t'emoji',\n\t\t\t\t'|',\n\t\t\t\t'uploadImage',\n\t\t\t\t'mediaEmbed',\n\t\t\t\t'|',\n\t\t\t\t'htmlEmbed'\n\t\t\t],\n\t\t\tshouldNotGroupWhenFull: true\n\t\t},\n\t\timage: {\n\t\t\ttoolbar: [\n\t\t\t\t'linkImage',\n\t\t\t\t'imageStyle:inline',\n\t\t\t\t'imageStyle:block',\n\t\t\t\t'imageStyle:side',\n\t\t\t\t'|',\n\t\t\t\t'toggleImageCaption',\n\t\t\t\t'imageTextAlternative'\n\t\t\t]\n\t\t},\n\t\ttable: {\n\t\t\tcontentToolbar: [\n\t\t\t\t'tableColumn',\n\t\t\t\t'tableRow',\n\t\t\t\t'mergeTableCells',\n\t\t\t\t'tableProperties',\n\t\t\t\t'tableCellProperties',\n\t\t\t\t'toggleTableCaption'\n\t\t\t],\n\t\t\t// Configuration of the TableProperties plugin.\n\t\t\ttableProperties: {\n\t\t\t\t// ...\n\t\t\t\tdefaultProperties: {\n\t\t\t\t\twidth: '100%'\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Configuration of the TableCellProperties plugin.\n\t\t\ttableCellProperties: {\n\t\t\t\t// ...\n\t\t\t}\n\t\t},\n\t\thtmlEmbed: { showPreviews: true },\n\t\tmediaEmbed: { previewsInData: true },\n\t\t// This value must be kept in sync with the language defined in webpack.config.js.\n\t\tlanguage: 'en',\n\t\tvideo: {\n\t\t\tstyles: [ 'alignLeft', 'alignCenter', 'alignRight' ],\n\t\t\ttoolbar: [\n\t\t\t\t'videoStyle:alignLeft',\n\t\t\t\t'videoStyle:alignCenter',\n\t\t\t\t'videoStyle:alignRight'\n\t\t\t]\n\t\t}\n\t};\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module alignment/alignment\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport AlignmentEditing from './alignmentediting';\nimport AlignmentUI from './alignmentui';\n\n/**\n * The text alignment plugin.\n *\n * For a detailed overview, check the {@glink features/text-alignment Text alignment} feature guide\n * and the {@glink api/alignment package page}.\n *\n * This is a \"glue\" plugin which loads the {@link module:alignment/alignmentediting~AlignmentEditing} and\n * {@link module:alignment/alignmentui~AlignmentUI} plugins.\n */\nexport default class Alignment extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ AlignmentEditing, AlignmentUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Alignment' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module essentials/essentials\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport { Clipboard } from 'ckeditor5/src/clipboard';\nimport { Enter, ShiftEnter } from 'ckeditor5/src/enter';\nimport { SelectAll } from 'ckeditor5/src/select-all';\nimport { Typing } from 'ckeditor5/src/typing';\nimport { Undo } from 'ckeditor5/src/undo';\n\n/**\n * A plugin including all essential editing features. It represents a set of features that enables similar functionalities\n * to a `<textarea>` element.\n *\n * It includes:\n *\n * * {@link module:clipboard/clipboard~Clipboard},\n * * {@link module:enter/enter~Enter},\n * * {@link module:select-all/selectall~SelectAll},\n * * {@link module:enter/shiftenter~ShiftEnter},\n * * {@link module:typing/typing~Typing},\n * * {@link module:undo/undo~Undo}.\n *\n * This plugin set does not define any block-level containers (such as {@link module:paragraph/paragraph~Paragraph}).\n * If your editor is supposed to handle block content, make sure to include it.\n */\nexport default class Essentials extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Clipboard, Enter, SelectAll, ShiftEnter, Typing, Undo ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Essentials' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module basic-styles/bold\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport BoldEditing from './bold/boldediting';\nimport BoldUI from './bold/boldui';\n\n/**\n * The bold feature.\n *\n * For a detailed overview check the {@glink features/basic-styles Basic styles feature} guide\n * and the {@glink api/basic-styles package page}.\n *\n * This is a \"glue\" plugin which loads the {@link module:basic-styles/bold/boldediting~BoldEditing bold editing feature}\n * and {@link module:basic-styles/bold/boldui~BoldUI bold UI feature}.\n */\nexport default class Bold extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ BoldEditing, BoldUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Bold' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module basic-styles/italic\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport ItalicEditing from './italic/italicediting';\nimport ItalicUI from './italic/italicui';\n\n/**\n * The italic feature.\n *\n * For a detailed overview check the {@glink features/basic-styles Basic styles feature} guide\n * and the {@glink api/basic-styles package page}.\n *\n * This is a \"glue\" plugin which loads the {@link module:basic-styles/italic/italicediting~ItalicEditing} and\n * {@link module:basic-styles/italic/italicui~ItalicUI} plugins.\n */\nexport default class Italic extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ItalicEditing, ItalicUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Italic' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module block-quote/blockquote\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport BlockQuoteEditing from './blockquoteediting';\nimport BlockQuoteUI from './blockquoteui';\n\n/**\n * The block quote plugin.\n *\n * For more information about this feature check the {@glink api/block-quote package page}.\n *\n * This is a \"glue\" plugin which loads the {@link module:block-quote/blockquoteediting~BlockQuoteEditing block quote editing feature}\n * and {@link module:block-quote/blockquoteui~BlockQuoteUI block quote UI feature}.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class BlockQuote extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ BlockQuoteEditing, BlockQuoteUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'BlockQuote' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module ckfinder/ckfinder\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport CKFinderUI from './ckfinderui';\nimport CKFinderEditing from './ckfinderediting';\n\n/**\n * The CKFinder feature, a bridge between the CKEditor 5 WYSIWYG editor and the\n * [CKFinder](https://ckeditor.com/ckfinder) file manager and uploader.\n *\n * This is a \"glue\" plugin which enables:\n *\n * * {@link module:ckfinder/ckfinderediting~CKFinderEditing},\n * * {@link module:ckfinder/ckfinderui~CKFinderUI},\n * * {@link module:adapter-ckfinder/uploadadapter~CKFinderUploadAdapter}.\n *\n * See the {@glink features/file-management/ckfinder \"CKFinder integration\" guide} to learn how to configure\n * and use this feature.\n *\n * Check out the {@glink features/images/image-upload/image-upload comprehensive \"Image upload\" guide} to learn about\n * other ways to upload images into CKEditor 5.\n */\nexport default class CKFinder extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'CKFinder' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ 'Link', 'CKFinderUploadAdapter', CKFinderEditing, CKFinderUI ] as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module cloud-services/cloudservices\n */\n\nimport { ContextPlugin } from 'ckeditor5/src/core';\nimport { CKEditorError } from 'ckeditor5/src/utils';\nimport CloudServicesCore from './cloudservicescore';\nimport type { CloudServicesConfig, TokenUrl } from './cloudservicesconfig';\nimport type { InitializedToken } from './token/token';\n\n/**\n * Plugin introducing the integration between CKEditor 5 and CKEditor Cloud Services .\n *\n * It initializes the token provider based on\n * the {@link module:cloud-services/cloudservicesconfig~CloudServicesConfig `config.cloudService`}.\n */\nexport default class CloudServices extends ContextPlugin implements CloudServicesConfig {\n\t/**\n\t * The authentication token URL for CKEditor Cloud Services or a callback to the token value promise. See the\n\t * {@link module:cloud-services/cloudservicesconfig~CloudServicesConfig#tokenUrl} for more details.\n\t */\n\tpublic readonly tokenUrl?: TokenUrl;\n\n\t/**\n\t * The URL to which the files should be uploaded.\n\t */\n\tpublic readonly uploadUrl?: string;\n\n\t/**\n\t * The URL for web socket communication, used by the `RealTimeCollaborativeEditing` plugin. Every customer (organization in the CKEditor\n\t * Ecosystem dashboard) has their own, unique URLs to communicate with CKEditor Cloud Services. The URL can be found in the\n\t * CKEditor Ecosystem customer dashboard.\n\t *\n\t * Note: Unlike most plugins, `RealTimeCollaborativeEditing` is not included in any CKEditor 5 build and needs to be installed manually.\n\t * Check [Collaboration overview](https://ckeditor.com/docs/ckeditor5/latest/features/collaboration/overview.html) for more details.\n\t */\n\tpublic readonly webSocketUrl?: string;\n\n\t/**\n\t * An optional parameter used for integration with CKEditor Cloud Services when uploading the editor build to cloud services.\n\t *\n\t * Whenever the editor build or the configuration changes, this parameter should be set to a new, unique value to differentiate\n\t * the new bundle (build + configuration) from the old ones.\n\t */\n\tpublic readonly bundleVersion?: string;\n\n\t/**\n\t * Other plugins use this token for the authorization process. It handles token requesting and refreshing.\n\t * Its value is `null` when {@link module:cloud-services/cloudservicesconfig~CloudServicesConfig#tokenUrl} is not provided.\n\t *\n\t * @readonly\n\t */\n\tpublic token: InitializedToken | null = null;\n\n\t/**\n\t * A map of token object instances keyed by the token URLs.\n\t */\n\tprivate readonly _tokens = new Map<TokenUrl, InitializedToken>();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'CloudServices' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ CloudServicesCore ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic async init(): Promise<void> {\n\t\tconst config = this.context.config;\n\n\t\tconst options = config.get( 'cloudServices' ) || {};\n\n\t\tfor ( const [ key, value ] of Object.entries( options ) as Array<[key: keyof CloudServicesConfig, value: any]> ) {\n\t\t\t( this as CloudServicesConfig )[ key ] = value;\n\t\t}\n\n\t\tif ( !this.tokenUrl ) {\n\t\t\tthis.token = null;\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst cloudServicesCore: CloudServicesCore = this.context.plugins.get( 'CloudServicesCore' );\n\n\t\tthis.token = await cloudServicesCore.createToken( this.tokenUrl ).init();\n\n\t\tthis._tokens.set( this.tokenUrl, this.token );\n\t}\n\n\t/**\n\t * Registers an additional authentication token URL for CKEditor Cloud Services or a callback to the token value promise. See the\n\t * {@link module:cloud-services/cloudservicesconfig~CloudServicesConfig#tokenUrl} for more details.\n\t *\n\t * @param tokenUrl The authentication token URL for CKEditor Cloud Services or a callback to the token value promise.\n\t */\n\tpublic async registerTokenUrl( tokenUrl: TokenUrl ): Promise<InitializedToken> {\n\t\t// Reuse the token instance in case of multiple features using the same token URL.\n\t\tif ( this._tokens.has( tokenUrl ) ) {\n\t\t\treturn this.getTokenFor( tokenUrl );\n\t\t}\n\n\t\tconst cloudServicesCore: CloudServicesCore = this.context.plugins.get( 'CloudServicesCore' );\n\t\tconst token = await cloudServicesCore.createToken( tokenUrl ).init();\n\n\t\tthis._tokens.set( tokenUrl, token );\n\n\t\treturn token;\n\t}\n\n\t/**\n\t * Returns an authentication token provider previously registered by {@link #registerTokenUrl}.\n\t *\n\t * @param tokenUrl The authentication token URL for CKEditor Cloud Services or a callback to the token value promise.\n\t */\n\tpublic getTokenFor( tokenUrl: TokenUrl ): InitializedToken {\n\t\tconst token = this._tokens.get( tokenUrl );\n\n\t\tif ( !token ) {\n\t\t\t/**\n\t\t\t * The provided `tokenUrl` was not registered by {@link module:cloud-services/cloudservices~CloudServices#registerTokenUrl}.\n\t\t\t *\n\t\t\t * @error cloudservices-token-not-registered\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'cloudservices-token-not-registered', this );\n\t\t}\n\n\t\treturn token;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tfor ( const token of this._tokens.values() ) {\n\t\t\ttoken.destroy();\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module easy-image/easyimage\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { logWarning } from 'ckeditor5/src/utils';\n\nimport CloudServicesUploadAdapter from './cloudservicesuploadadapter';\n\n/**\n * The Easy Image feature, which makes the image upload in CKEditor 5 possible with virtually zero\n * server setup. A part of the [CKEditor Cloud Services](https://ckeditor.com/ckeditor-cloud-services/)\n * family.\n *\n * This is a \"glue\" plugin which enables:\n *\n * * {@link module:easy-image/cloudservicesuploadadapter~CloudServicesUploadAdapter}.\n *\n * This plugin requires plugin to be present in the editor configuration:\n *\n * * {@link module:image/image~Image},\n * * {@link module:image/imageupload~ImageUpload},\n *\n * See the {@glink features/images/image-upload/easy-image \"Easy Image integration\" guide} to learn how to configure\n * and use this feature.\n *\n * Check out the {@glink features/images/image-upload/image-upload comprehensive \"Image upload\" guide} to learn about\n * other ways to upload images into CKEditor 5.\n *\n * **Note**: After enabling the Easy Image plugin you need to configure the\n * [CKEditor Cloud Services](https://ckeditor.com/ckeditor-cloud-services/)\n * integration through {@link module:cloud-services/cloudservicesconfig~CloudServicesConfig `config.cloudServices`}.\n */\nexport default class EasyImage extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'EasyImage' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ CloudServicesUploadAdapter, 'ImageUpload' ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\tif ( !editor.plugins.has( 'ImageBlockEditing' ) && !editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\t/**\n\t\t\t * The Easy Image feature requires one of the following plugins to be loaded to work correctly:\n\t\t\t *\n\t\t\t * * {@link module:image/imageblock~ImageBlock},\n\t\t\t * * {@link module:image/imageinline~ImageInline},\n\t\t\t * * {@link module:image/image~Image} (loads both `ImageBlock` and `ImageInline`)\n\t\t\t *\n\t\t\t * Please make sure your editor configuration is correct.\n\t\t\t *\n\t\t\t * @error easy-image-image-feature-missing\n\t\t\t * @param {module:core/editor/editor~Editor} editor\n\t\t\t */\n\t\t\tlogWarning( 'easy-image-image-feature-missing', editor );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module heading/heading\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport HeadingEditing from './headingediting';\nimport HeadingUI from './headingui';\n\nimport '../theme/heading.css';\n\n/**\n * The headings feature.\n *\n * For a detailed overview, check the {@glink features/headings Headings feature} guide\n * and the {@glink api/heading package page}.\n *\n * This is a \"glue\" plugin which loads the {@link module:heading/headingediting~HeadingEditing heading editing feature}\n * and {@link module:heading/headingui~HeadingUI heading UI feature}.\n *\n * @extends module:core/plugin~Plugin\n */\nexport default class Heading extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ HeadingEditing, HeadingUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Heading' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontfamily\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport FontFamilyEditing from './fontfamily/fontfamilyediting';\nimport FontFamilyUI from './fontfamily/fontfamilyui';\n\n/**\n * The font family plugin.\n *\n * For a detailed overview, check the {@glink features/font font feature} documentatiom\n * and the {@glink api/font package page}.\n *\n * This is a \"glue\" plugin which loads the {@link module:font/fontfamily/fontfamilyediting~FontFamilyEditing} and\n * {@link module:font/fontfamily/fontfamilyui~FontFamilyUI} features in the editor.\n */\nexport default class FontFamily extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ FontFamilyEditing, FontFamilyUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FontFamily' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontsize\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport FontSizeEditing from './fontsize/fontsizeediting';\nimport FontSizeUI from './fontsize/fontsizeui';\nimport { normalizeOptions } from './fontsize/utils';\nimport type { FontSizeOption } from './fontconfig';\n\n/**\n * The font size plugin.\n *\n * For a detailed overview, check the {@glink features/font font feature} documentation\n * and the {@glink api/font package page}.\n *\n * This is a \"glue\" plugin which loads the {@link module:font/fontsize/fontsizeediting~FontSizeEditing} and\n * {@link module:font/fontsize/fontsizeui~FontSizeUI} features in the editor.\n */\nexport default class FontSize extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ FontSizeEditing, FontSizeUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FontSize' as const;\n\t}\n\n\t/**\n\t * Normalizes and translates the {@link module:font/fontconfig~FontSizeConfig#options configuration options}\n\t * to the {@link module:font/fontconfig~FontSizeOption} format.\n\t *\n\t * @param configuredOptions An array of options taken from the configuration.\n\t */\n\tpublic normalizeSizeOptions( options: Array<string | number | FontSizeOption> ): Array<FontSizeOption> {\n\t\treturn normalizeOptions( options );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontcolor\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport FontColorEditing from './fontcolor/fontcolorediting';\nimport FontColorUI from './fontcolor/fontcolorui';\n\n/**\n * The font color plugin.\n *\n * For a detailed overview, check the {@glink features/font font feature} documentation\n * and the {@glink api/font package page}.\n *\n * This is a \"glue\" plugin which loads the {@link module:font/fontcolor/fontcolorediting~FontColorEditing} and\n * {@link module:font/fontcolor/fontcolorui~FontColorUI} features in the editor.\n */\nexport default class FontColor extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ FontColorEditing, FontColorUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FontColor' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module font/fontbackgroundcolor\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport FontBackgroundColorEditing from './fontbackgroundcolor/fontbackgroundcolorediting';\nimport FontBackgroundColorUI from './fontbackgroundcolor/fontbackgroundcolorui';\n\n/**\n * The font background color plugin.\n *\n * For a detailed overview, check the {@glink features/font font feature} documentation\n * and the {@glink api/font package page}.\n *\n * This is a \"glue\" plugin which loads\n * the {@link module:font/fontbackgroundcolor/fontbackgroundcolorediting~FontBackgroundColorEditing} and\n * {@link module:font/fontbackgroundcolor/fontbackgroundcolorui~FontBackgroundColorUI} features in the editor.\n */\nexport default class FontBackgroundColor extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ FontBackgroundColorEditing, FontBackgroundColorUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FontBackgroundColor' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/image\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport ImageBlock from './imageblock';\nimport ImageInline from './imageinline';\n\nimport '../theme/image.css';\n\n/**\n * The image plugin.\n *\n * For a detailed overview, check the {@glink features/images/images-overview image feature} documentation.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n *\n * * {@link module:image/imageblock~ImageBlock},\n * * {@link module:image/imageinline~ImageInline},\n *\n * Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}\n * for more information.\n */\nexport default class Image extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageBlock, ImageInline ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Image' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imagecaption\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport ImageCaptionEditing from './imagecaption/imagecaptionediting';\nimport ImageCaptionUI from './imagecaption/imagecaptionui';\n\nimport '../theme/imagecaption.css';\n\n/**\n * The image caption plugin.\n *\n * For a detailed overview, check the {@glink features/images/images-captions image caption} documentation.\n */\nexport default class ImageCaption extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageCaptionEditing, ImageCaptionUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageCaption' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imagestyle\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport ImageStyleEditing from './imagestyle/imagestyleediting';\nimport ImageStyleUI from './imagestyle/imagestyleui';\n\n/**\n * The image style plugin.\n *\n * For a detailed overview of the image styles feature, check the {@glink features/images/images-styles documentation}.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n * * {@link module:image/imagestyle/imagestyleediting~ImageStyleEditing},\n * * {@link module:image/imagestyle/imagestyleui~ImageStyleUI}\n *\n * It provides a default configuration, which can be extended or overwritten.\n * Read more about the {@link module:image/imageconfig~ImageConfig#styles image styles configuration}.\n */\nexport default class ImageStyle extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageStyleEditing, ImageStyleUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageStyle' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imagetoolbar\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { WidgetToolbarRepository } from 'ckeditor5/src/widget';\n\nimport ImageUtils from './imageutils';\nimport type { ImageStyleDropdownDefinition } from './imageconfig';\n\nimport { isObject } from 'lodash-es';\n\n/**\n * The image toolbar plugin. It creates and manages the image toolbar (the toolbar displayed when an image is selected).\n *\n * For an overview, check the {@glink features/images/images-overview#image-contextual-toolbar image contextual toolbar} documentation.\n *\n * Instances of toolbar components (e.g. buttons) are created using the editor's\n * {@link module:ui/componentfactory~ComponentFactory component factory}\n * based on the {@link module:image/imageconfig~ImageConfig#toolbar `image.toolbar` configuration option}.\n *\n * The toolbar uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon}.\n */\nexport default class ImageToolbar extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ WidgetToolbarRepository, ImageUtils ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageToolbar' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );\n\t\tconst imageUtils: ImageUtils = editor.plugins.get( 'ImageUtils' );\n\n\t\twidgetToolbarRepository.register( 'image', {\n\t\t\tariaLabel: t( 'Image toolbar' ),\n\t\t\titems: normalizeDeclarativeConfig( editor.config.get( 'image.toolbar' ) || [] ),\n\t\t\tgetRelatedElement: selection => imageUtils.getClosestSelectedImageWidget( selection )!\n\t\t} );\n\t}\n}\n\n/**\n * Convert the dropdown definitions to their keys registered in the ComponentFactory.\n * The registration precess should be handled by the plugin which handles the UI of a particular feature.\n */\nfunction normalizeDeclarativeConfig( config: Array<string | ImageStyleDropdownDefinition> ): Array<string> {\n\treturn config.map( item => isObject( item ) ? item.name : item );\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imageupload\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport ImageUploadUI from './imageupload/imageuploadui';\nimport ImageUploadProgress from './imageupload/imageuploadprogress';\nimport ImageUploadEditing from './imageupload/imageuploadediting';\nimport FileUpload from '@flockjay/ckeditor5-file-upload/fileupload';\n\n/**\n * The image upload plugin.\n *\n * For a detailed overview, check the {@glink features/images/image-upload/image-upload image upload feature} documentation.\n *\n * This plugin does not do anything directly, but it loads a set of specific plugins to enable image uploading:\n *\n * * {@link module:image/imageupload/imageuploadediting~ImageUploadEditing},\n * * {@link module:image/imageupload/imageuploadui~ImageUploadUI},\n * * {@link module:image/imageupload/imageuploadprogress~ImageUploadProgress}.\n */\nexport default class ImageUpload extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageUpload' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageUploadEditing, ImageUploadUI, ImageUploadProgress, FileUpload ] as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module image/imageresize/imageresizeediting\n */\n\nimport type { ViewElement } from 'ckeditor5/src/engine';\nimport { type Editor, Plugin } from 'ckeditor5/src/core';\nimport ImageUtils from '../imageutils';\nimport ResizeImageCommand from './resizeimagecommand';\n\n/**\n * The image resize editing feature.\n *\n * It adds the ability to resize each image using handles or manually by\n * {@link module:image/imageresize/imageresizebuttons~ImageResizeButtons} buttons.\n */\nexport default class ImageResizeEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ImageUtils ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ImageResizeEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'image', {\n\t\t\tresizeUnit: '%',\n\t\t\tresizeOptions: [ {\n\t\t\t\tname: 'resizeImage:original',\n\t\t\t\tvalue: null,\n\t\t\t\ticon: 'original'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'resizeImage:25',\n\t\t\t\tvalue: '25',\n\t\t\t\ticon: 'small'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'resizeImage:50',\n\t\t\t\tvalue: '50',\n\t\t\t\ticon: 'medium'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'resizeImage:75',\n\t\t\t\tvalue: '75',\n\t\t\t\ticon: 'large'\n\t\t\t} ]\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst resizeImageCommand = new ResizeImageCommand( editor );\n\n\t\tthis._registerSchema();\n\t\tthis._registerConverters( 'imageBlock' );\n\t\tthis._registerConverters( 'imageInline' );\n\n\t\t// Register `resizeImage` command and add `imageResize` command as an alias for backward compatibility.\n\t\teditor.commands.add( 'resizeImage', resizeImageCommand );\n\t\teditor.commands.add( 'imageResize', resizeImageCommand );\n\t}\n\n\tprivate _registerSchema(): void {\n\t\tif ( this.editor.plugins.has( 'ImageBlockEditing' ) ) {\n\t\t\tthis.editor.model.schema.extend( 'imageBlock', { allowAttributes: 'width' } );\n\t\t}\n\n\t\tif ( this.editor.plugins.has( 'ImageInlineEditing' ) ) {\n\t\t\tthis.editor.model.schema.extend( 'imageInline', { allowAttributes: 'width' } );\n\t\t}\n\t}\n\n\t/**\n\t * Registers image resize converters.\n\t *\n\t * @param imageType The type of the image.\n\t */\n\tprivate _registerConverters( imageType: 'imageBlock' | 'imageInline' ) {\n\t\tconst editor = this.editor;\n\n\t\t// Dedicated converter to propagate image's attribute to the img tag.\n\t\teditor.conversion.for( 'downcast' ).add( dispatcher =>\n\t\t\tdispatcher.on( `attribute:width:${ imageType }`, ( evt, data, conversionApi ) => {\n\t\t\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst viewWriter = conversionApi.writer;\n\t\t\t\tconst figure = conversionApi.mapper.toViewElement( data.item );\n\n\t\t\t\tif ( data.attributeNewValue !== null ) {\n\t\t\t\t\tviewWriter.setStyle( 'width', data.attributeNewValue, figure );\n\t\t\t\t\tviewWriter.addClass( 'image_resized', figure );\n\t\t\t\t} else {\n\t\t\t\t\tviewWriter.removeStyle( 'width', figure );\n\t\t\t\t\tviewWriter.removeClass( 'image_resized', figure );\n\t\t\t\t}\n\t\t\t} )\n\t\t);\n\n\t\teditor.conversion.for( 'upcast' )\n\t\t\t.attributeToAttribute( {\n\t\t\t\tview: {\n\t\t\t\t\tname: imageType === 'imageBlock' ? 'figure' : 'img',\n\t\t\t\t\tstyles: {\n\t\t\t\t\t\twidth: /.+/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmodel: {\n\t\t\t\t\tkey: 'width',\n\t\t\t\t\tvalue: ( viewElement: ViewElement ) => viewElement.getStyle( 'width' )\n\t\t\t\t}\n\t\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module link/linkimage\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport LinkImageEditing from './linkimageediting';\nimport LinkImageUI from './linkimageui';\n\nimport '../theme/linkimage.css';\n\n/**\n * The `LinkImage` plugin.\n *\n * This is a \"glue\" plugin that loads the {@link module:link/linkimageediting~LinkImageEditing link image editing feature}\n * and {@link module:link/linkimageui~LinkImageUI link image UI feature}.\n */\nexport default class LinkImage extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ LinkImageEditing, LinkImageUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'LinkImage' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module indent/indent\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport IndentEditing from './indentediting';\nimport IndentUI from './indentui';\n\n/**\n * The indent feature.\n *\n * This plugin acts as a single entry point plugin for other features that implement indentation of elements like lists or paragraphs.\n *\n * The compatible features are:\n *\n * * The {@link module:list/list~List} or {@link module:list/list/listediting~ListEditing} feature for list indentation.\n * * The {@link module:indent/indentblock~IndentBlock} feature for block indentation.\n *\n * This is a \"glue\" plugin that loads the following plugins:\n *\n * * The {@link module:indent/indentediting~IndentEditing indent editing feature}.\n * * The {@link module:indent/indentui~IndentUI indent UI feature}.\n *\n * The dependent plugins register the `'indent'` and `'outdent'` commands and introduce the `'indent'` and `'outdent'` buttons\n * that allow to increase or decrease text indentation of supported elements.\n *\n * **Note**: In order for the commands and buttons to work, at least one of compatible features is required.\n */\nexport default class Indent extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Indent' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ IndentEditing, IndentUI ] as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module link/link\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport LinkEditing from './linkediting';\nimport LinkUI from './linkui';\nimport AutoLink from './autolink';\n\n/**\n * The link plugin.\n *\n * This is a \"glue\" plugin that loads the {@link module:link/linkediting~LinkEditing link editing feature}\n * and {@link module:link/linkui~LinkUI link UI feature}.\n */\nexport default class Link extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ LinkEditing, LinkUI, AutoLink ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Link' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module list/list\n */\n\nimport ListEditing from './list/listediting';\nimport ListUI from './list/listui';\n\nimport { Plugin } from 'ckeditor5/src/core';\n\n/**\n * The list feature.\n *\n * This is a \"glue\" plugin that loads the {@link module:list/list/listediting~ListEditing list editing feature}\n * and {@link module:list/list/listui~ListUI list UI feature}.\n */\nexport default class List extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ListEditing, ListUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'List' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module media-embed/mediaembed\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { Widget } from 'ckeditor5/src/widget';\n\nimport MediaEmbedEditing from './mediaembedediting';\nimport AutoMediaEmbed from './automediaembed';\nimport MediaEmbedUI from './mediaembedui';\n\nimport '../theme/mediaembed.css';\n\n/**\n * The media embed plugin.\n *\n * For a detailed overview, check the {@glink features/media-embed Media Embed feature documentation}.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n *\n * * The {@link module:media-embed/mediaembedediting~MediaEmbedEditing media embed editing feature},\n * * The {@link module:media-embed/mediaembedui~MediaEmbedUI media embed UI feature} and\n * * The {@link module:media-embed/automediaembed~AutoMediaEmbed auto-media embed feature}.\n */\nexport default class MediaEmbed extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ MediaEmbedEditing, MediaEmbedUI, AutoMediaEmbed, Widget ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'MediaEmbed' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module paste-from-office/pastefromoffice\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport { ClipboardPipeline } from 'ckeditor5/src/clipboard';\n\nimport MSWordNormalizer from './normalizers/mswordnormalizer';\nimport GoogleDocsNormalizer from './normalizers/googledocsnormalizer';\nimport GoogleSheetsNormalizer from './normalizers/googlesheetsnormalizer';\n\nimport { parseHtml } from './filters/parse';\nimport type { Normalizer, NormalizerData } from './normalizer';\n\n/**\n * The Paste from Office plugin.\n *\n * This plugin handles content pasted from Office apps and transforms it (if necessary)\n * to a valid structure which can then be understood by the editor features.\n *\n * Transformation is made by a set of predefined {@link module:paste-from-office/normalizer~Normalizer normalizers}.\n * This plugin includes following normalizers:\n * * {@link module:paste-from-office/normalizers/mswordnormalizer~MSWordNormalizer Microsoft Word normalizer}\n * * {@link module:paste-from-office/normalizers/googledocsnormalizer~GoogleDocsNormalizer Google Docs normalizer}\n *\n * For more information about this feature check the {@glink api/paste-from-office package page}.\n */\nexport default class PasteFromOffice extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'PasteFromOffice' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ClipboardPipeline ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\t\tconst viewDocument = editor.editing.view.document;\n\t\tconst normalizers: Array<Normalizer> = [];\n\n\t\tnormalizers.push( new MSWordNormalizer( viewDocument ) );\n\t\tnormalizers.push( new GoogleDocsNormalizer( viewDocument ) );\n\t\tnormalizers.push( new GoogleSheetsNormalizer( viewDocument ) );\n\n\t\tclipboardPipeline.on(\n\t\t\t'inputTransformation',\n\t\t\t( evt, data: NormalizerData ) => {\n\t\t\t\tif ( data._isTransformedWithPasteFromOffice ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst codeBlock = editor.model.document.selection.getFirstPosition()!.parent;\n\n\t\t\t\tif ( codeBlock.is( 'element', 'codeBlock' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst htmlString = data.dataTransfer.getData( 'text/html' );\n\t\t\t\tconst activeNormalizer = normalizers.find( normalizer => normalizer.isActive( htmlString ) );\n\n\t\t\t\tif ( activeNormalizer ) {\n\t\t\t\t\tif ( !data._parsedData ) {\n\t\t\t\t\t\tdata._parsedData = parseHtml( htmlString, viewDocument.stylesProcessor );\n\t\t\t\t\t}\n\n\t\t\t\t\tactiveNormalizer.execute( data );\n\n\t\t\t\t\tdata._isTransformedWithPasteFromOffice = true;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ priority: 'high' }\n\t\t);\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/table\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { Widget } from 'ckeditor5/src/widget';\n\nimport TableEditing from './tableediting';\nimport TableUI from './tableui';\nimport TableSelection from './tableselection';\nimport TableClipboard from './tableclipboard';\nimport TableKeyboard from './tablekeyboard';\nimport TableMouse from './tablemouse';\n\nimport '../theme/table.css';\n\n/**\n * The table plugin.\n *\n * For a detailed overview, check the {@glink features/tables/tables Table feature documentation}.\n *\n * This is a \"glue\" plugin that loads the following table features:\n *\n * * {@link module:table/tableediting~TableEditing editing feature},\n * * {@link module:table/tableselection~TableSelection selection feature},\n * * {@link module:table/tablekeyboard~TableKeyboard keyboard navigation feature},\n * * {@link module:table/tablemouse~TableMouse mouse selection feature},\n * * {@link module:table/tableclipboard~TableClipboard clipboard feature},\n * * {@link module:table/tableui~TableUI UI feature}.\n */\nexport default class Table extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ TableEditing, TableUI, TableSelection, TableMouse, TableKeyboard, TableClipboard, Widget ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Table' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tabletoolbar\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { WidgetToolbarRepository } from 'ckeditor5/src/widget';\nimport { getSelectedTableWidget, getTableWidgetAncestor } from './utils/ui/widget';\n\n/**\n * The table toolbar class. It creates toolbars for the table feature and its content (for now only for the table cell content).\n *\n * The table toolbar shows up when a table widget is selected. Its components (e.g. buttons) are created based on the\n * {@link module:table/tableconfig~TableConfig#tableToolbar `table.tableToolbar` configuration option}.\n *\n * Table content toolbar shows up when the selection is inside the content of a table. It creates its component based on the\n * {@link module:table/tableconfig~TableConfig#contentToolbar `table.contentToolbar` configuration option}.\n */\nexport default class TableToolbar extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ WidgetToolbarRepository ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableToolbar' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic afterInit(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );\n\n\t\tconst tableContentToolbarItems = editor.config.get( 'table.contentToolbar' );\n\n\t\tconst tableToolbarItems = editor.config.get( 'table.tableToolbar' );\n\n\t\tif ( tableContentToolbarItems ) {\n\t\t\twidgetToolbarRepository.register( 'tableContent', {\n\t\t\t\tariaLabel: t( 'Table toolbar' ),\n\t\t\t\titems: tableContentToolbarItems,\n\t\t\t\tgetRelatedElement: getTableWidgetAncestor\n\t\t\t} );\n\t\t}\n\n\t\tif ( tableToolbarItems ) {\n\t\t\twidgetToolbarRepository.register( 'table', {\n\t\t\t\tariaLabel: t( 'Table toolbar' ),\n\t\t\t\titems: tableToolbarItems,\n\t\t\t\tgetRelatedElement: getSelectedTableWidget\n\t\t\t} );\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tableproperties\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport TablePropertiesEditing from './tableproperties/tablepropertiesediting';\nimport TablePropertiesUI from './tableproperties/tablepropertiesui';\n\n/**\n * The table properties feature. Enables support for setting properties of tables (size, border, background, etc.).\n *\n * Read more in the {@glink features/tables/tables-styling Table and cell styling tools} section.\n * See also the {@link module:table/tablecellproperties~TableCellProperties} plugin.\n *\n * This is a \"glue\" plugin that loads the\n * {@link module:table/tableproperties/tablepropertiesediting~TablePropertiesEditing table properties editing feature} and\n * the {@link module:table/tableproperties/tablepropertiesui~TablePropertiesUI table properties UI feature}.\n */\nexport default class TableProperties extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableProperties' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ TablePropertiesEditing, TablePropertiesUI ] as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecellproperties\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\n\nimport TableCellPropertiesUI from './tablecellproperties/tablecellpropertiesui';\nimport TableCellPropertiesEditing from './tablecellproperties/tablecellpropertiesediting';\n\n/**\n * The table cell properties feature. Enables support for setting properties of table cells (size, border, background, etc.).\n *\n * Read more in the {@glink features/tables/tables-styling Table and cell styling tools} section.\n * See also the {@link module:table/tableproperties~TableProperties} plugin.\n *\n * This is a \"glue\" plugin that loads the\n * {@link module:table/tablecellproperties/tablecellpropertiesediting~TableCellPropertiesEditing table cell properties editing feature} and\n * the {@link module:table/tablecellproperties/tablecellpropertiesui~TableCellPropertiesUI table cell properties UI feature}.\n */\nexport default class TableCellProperties extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableCellProperties' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ TableCellPropertiesEditing, TableCellPropertiesUI ] as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecolumnresize\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport TableColumnResizeEditing from './tablecolumnresize/tablecolumnresizeediting';\nimport TableCellWidthEditing from './tablecellwidth/tablecellwidthediting';\n\nimport '../theme/tablecolumnresize.css';\n\n/**\n * The table column resize feature.\n *\n * It provides the possibility to set the width of each column in a table using a resize handler.\n */\nexport default class TableColumnResize extends Plugin {\n\t/**\n\t * @inheritDoc\n \t */\n\tpublic static get requires() {\n\t\treturn [ TableColumnResizeEditing, TableCellWidthEditing ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n \t */\n\tpublic static get pluginName() {\n\t\treturn 'TableColumnResize' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module table/tablecaption\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport TableCaptionEditing from './tablecaption/tablecaptionediting';\nimport TableCaptionUI from './tablecaption/tablecaptionui';\n\nimport '../theme/tablecaption.css';\n\n/**\n * The table caption plugin.\n */\nexport default class TableCaption extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TableCaption' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ TableCaptionEditing, TableCaptionUI ] as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module html-embed/htmlembed\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport { Widget } from 'ckeditor5/src/widget';\n\nimport HtmlEmbedEditing from './htmlembedediting';\nimport HtmlEmbedUI from './htmlembedui';\n\n/**\n * The HTML embed feature.\n *\n * It allows inserting HTML snippets directly into the editor.\n *\n * For a detailed overview, check the {@glink features/html/html-embed HTML embed feature} documentation.\n */\nexport default class HtmlEmbed extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ HtmlEmbedEditing, HtmlEmbedUI, Widget ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'HtmlEmbed' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module mention/mention\n */\n\nimport { Plugin } from 'ckeditor5/src/core';\nimport type { Element } from 'ckeditor5/src/engine';\n\nimport MentionEditing, { _toMentionAttribute } from './mentionediting';\nimport MentionUI from './mentionui';\n\nimport '../theme/mention.css';\n\n/**\n * The mention plugin.\n *\n * For a detailed overview, check the {@glink features/mentions Mention feature} guide.\n */\nexport default class Mention extends Plugin {\n\t/**\n\t * Creates a mention attribute value from the provided view element and optional data.\n\t *\n\t * ```ts\n\t * editor.plugins.get( 'Mention' ).toMentionAttribute( viewElement, { userId: '1234' } );\n\t *\n\t * // For a view element: <span data-mention=\"@joe\">@John Doe</span>\n\t * // it will return:\n\t * // { id: '@joe', userId: '1234', uid: '7a7bc7...', _text: '@John Doe' }\n\t * ```\n\t *\n\t * @param viewElement\n\t * @param data Additional data to be stored in the mention attribute.\n\t */\n\tpublic toMentionAttribute( viewElement: Element, data?: MentionAttribute ): MentionAttribute | undefined {\n\t\treturn _toMentionAttribute( viewElement, data );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Mention' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ MentionEditing, MentionUI ] as const;\n\t}\n}\n\n/**\n * Represents a mention in the model.\n *\n * See {@link module:mention/mention~Mention#toMentionAttribute `Mention#toMentionAttribute()`}.\n */\nexport type MentionAttribute = {\n\n\t/**\n\t * The ID of a mention. It identifies the mention item in the mention feed. There can be multiple mentions\n\t * in the document with the same ID (e.g. the same hashtag being mentioned).\n\t */\n\tid: string;\n\n\t/**\n\t * A unique ID of this mention instance. Should be passed as an `option.id` when using\n\t * {@link module:engine/view/downcastwriter~DowncastWriter#createAttributeElement writer.createAttributeElement()}.\n\t */\n\tuid?: string;\n\n\t/**\n\t * Helper property that stores the text of the inserted mention. Used for detecting a broken mention\n\t * in the editing area.\n\t *\n\t * @internal\n\t */\n\t_text?: string;\n};\n","import { Plugin } from 'ckeditor5/src/core';\nimport { WidgetToolbarRepository } from 'ckeditor5/src/widget';\nimport VideoUtils from './videoutils';\nimport { isObject } from 'lodash-es';\n\nexport default class VideoToolbar extends Plugin {\n static get requires() {\n return [ WidgetToolbarRepository, VideoUtils ];\n }\n\n static get pluginName() {\n return 'VideoToolbar';\n }\n\n afterInit() {\n const editor = this.editor;\n const t = editor.t;\n const widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );\n const videoUtils = editor.plugins.get( 'VideoUtils' );\n\n widgetToolbarRepository.register( 'video', {\n ariaLabel: t( 'Video toolbar' ),\n items: normalizeDeclarativeConfig( editor.config.get( 'video.toolbar' ) || [] ),\n getRelatedElement: selection => videoUtils.getClosestSelectedVideoWidget( selection )\n } );\n }\n}\n\nfunction normalizeDeclarativeConfig( config ) {\n return config.map( item => isObject( item ) ? item.name : item );\n}\n\n","import { Plugin } from 'ckeditor5/src/core';\nimport VideoBlock from './videoblock';\nimport VideoInline from './videoinline';\nimport '../theme/video.css';\n\nexport default class Video extends Plugin {\n static get requires() {\n return [ VideoBlock, VideoInline];\n }\n\n static get pluginName() {\n return 'Video';\n }\n}\n","import { Plugin } from 'ckeditor5/src/core';\nimport VideoResizeEditing from \"./videoresize/videoresizeediting\";\nimport VideoResizeHandles from \"./videoresize/videoresizehandles\";\nimport VideoResizeButtons from \"./videoresize/videoresizebuttons\";\nimport '../theme/videoresize.css';\n\nexport default class VideoResize extends Plugin {\n static get requires() {\n return [ VideoResizeEditing, VideoResizeHandles, VideoResizeButtons ];\n }\n\n static get pluginName() {\n return 'VideoResize';\n }\n}\n","import { Plugin } from 'ckeditor5/src/core';\nimport VideoStyleEditing from './videostyle/videostyleediting';\nimport VideoStyleUI from './videostyle/videostyleui';\n\nexport default class VideoStyle extends Plugin {\n static get requires() {\n return [ VideoStyleEditing, VideoStyleUI ];\n }\n\n static get pluginName() {\n return 'VideoStyle';\n }\n}\n","import { Plugin } from 'ckeditor5/src/core';\nimport VideoUpload from './videoupload';\nimport VideoInsertUI from './videoinsert/videoinsertui';\n\nexport default class VideoInsert extends Plugin {\n static get pluginName() {\n return 'VideoInsert';\n }\n\n static get requires() {\n return [ VideoUpload, VideoInsertUI ];\n }\n}\n","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport { getSelectedAudioWidget } from './audio/utils';\nimport WidgetToolbarRepository from '@ckeditor/ckeditor5-widget/src/widgettoolbarrepository';\n\nexport default class AudioToolbar extends Plugin {\n static get requires() {\n return [ WidgetToolbarRepository ];\n }\n\n static get pluginName() {\n return 'AudioToolbar';\n }\n\n afterInit() {\n const editor = this.editor;\n const t = editor.t;\n const widgetToolbarRepository = editor.plugins.get( WidgetToolbarRepository );\n\n widgetToolbarRepository.register( 'audio', {\n ariaLabel: t( 'Audio toolbar' ),\n items: editor.config.get( 'audio.toolbar' ) || [],\n getRelatedElement: getSelectedAudioWidget\n } );\n }\n}\n","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport Widget from '@ckeditor/ckeditor5-widget/src/widget';\nimport AudioEditing from \"./audio/audioediting\";\nimport '../theme/audio.css';\n\nexport default class Audio extends Plugin {\n static get requires() {\n return [ AudioEditing, Widget];\n }\n\n static get pluginName() {\n return 'Audio';\n }\n}\n","import Plugin from \"@ckeditor/ckeditor5-core/src/plugin\";\nimport AudioUploadUI from \"./audioupload/audiouploadui\";\nimport AudioUploadEditing from \"./audioupload/audiouploadediting\";\nimport AudioUploadProgress from \"./audioupload/audiouploadprogress\";\n\nexport default class AudioUpload extends Plugin {\n static get requires() {\n return [AudioUploadEditing, AudioUploadUI, AudioUploadProgress];\n }\n}\n","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport '../theme/audioresize.css';\nimport AudioResizeEditing from \"./audioresize/audioresizeediting\";\nimport AudioResizeHandles from \"./audioresize/audioresizehandles\";\nimport AudioResizeButtons from \"./audioresize/audioresizebuttons\";\n\nexport default class Audioresize extends Plugin {\n static get requires() {\n return [ AudioResizeEditing, AudioResizeHandles, AudioResizeButtons ];\n }\n\n static get pluginName() {\n return 'AudioResize';\n }\n}\n","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\nimport AudioStyleEditing from './audiostyle/audiostyleediting';\nimport AudioStyleUI from './audiostyle/audiostyleui';\n\nexport default class AudioStyle extends Plugin {\n static get requires() {\n return [ AudioStyleEditing, AudioStyleUI ];\n }\n\n static get pluginName() {\n return 'AudioStyle';\n }\n}\n","export default \"<?xml version=\\\"1.0\\\" encoding=\\\"iso-8859-1\\\"?>\\r\\n<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\\r\\n<svg version=\\\"1.1\\\" id=\\\"Capa_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\"\\r\\n\\t viewBox=\\\"0 0 512 512\\\" style=\\\"enable-background:new 0 0 512 512;\\\" xml:space=\\\"preserve\\\">\\r\\n<g>\\r\\n\\t<g>\\r\\n\\t\\t<path d=\\\"M437.02,74.98C388.667,26.629,324.38,0,256,0S123.333,26.629,74.98,74.98C26.629,123.333,0,187.62,0,256\\r\\n\\t\\t\\ts26.629,132.668,74.98,181.02C123.333,485.371,187.62,512,256,512s132.667-26.629,181.02-74.98\\r\\n\\t\\t\\tC485.371,388.668,512,324.38,512,256S485.371,123.333,437.02,74.98z M256,472c-119.103,0-216-96.897-216-216S136.897,40,256,40\\r\\n\\t\\t\\ts216,96.897,216,216S375.103,472,256,472z\\\"/>\\r\\n\\t</g>\\r\\n</g>\\r\\n<g>\\r\\n\\t<g>\\r\\n\\t\\t<path d=\\\"M368.993,285.776c-0.072,0.214-7.298,21.626-25.02,42.393C321.419,354.599,292.628,368,258.4,368\\r\\n\\t\\t\\tc-34.475,0-64.195-13.561-88.333-40.303c-18.92-20.962-27.272-42.54-27.33-42.691l-37.475,13.99\\r\\n\\t\\t\\tc0.42,1.122,10.533,27.792,34.013,54.273C171.022,389.074,212.215,408,258.4,408c46.412,0,86.904-19.076,117.099-55.166\\r\\n\\t\\t\\tc22.318-26.675,31.165-53.55,31.531-54.681L368.993,285.776z\\\"/>\\r\\n\\t</g>\\r\\n</g>\\r\\n<g>\\r\\n\\t<g>\\r\\n\\t\\t<circle cx=\\\"168\\\" cy=\\\"180.12\\\" r=\\\"32\\\"/>\\r\\n\\t</g>\\r\\n</g>\\r\\n<g>\\r\\n\\t<g>\\r\\n\\t\\t<circle cx=\\\"344\\\" cy=\\\"180.12\\\" r=\\\"32\\\"/>\\r\\n\\t</g>\\r\\n</g>\\r\\n<g>\\r\\n</g>\\r\\n<g>\\r\\n</g>\\r\\n<g>\\r\\n</g>\\r\\n<g>\\r\\n</g>\\r\\n<g>\\r\\n</g>\\r\\n<g>\\r\\n</g>\\r\\n<g>\\r\\n</g>\\r\\n<g>\\r\\n</g>\\r\\n<g>\\r\\n</g>\\r\\n<g>\\r\\n</g>\\r\\n<g>\\r\\n</g>\\r\\n<g>\\r\\n</g>\\r\\n<g>\\r\\n</g>\\r\\n<g>\\r\\n</g>\\r\\n<g>\\r\\n</g>\\r\\n</svg>\\r\\n\";","import { Plugin } from '@ckeditor/ckeditor5-core';\r\n\r\nexport default class EmojiPeople extends Plugin {\r\n\t/**\r\n\t * @inheritDoc\r\n\t */\r\n\tstatic get pluginName() {\r\n\t\treturn 'EmojiPeople';\r\n\t}\r\n\r\n\t/**\r\n\t * @inheritDoc\r\n\t */\r\n\tinit() {\r\n\t\tconst editor = this.editor;\r\n\t\tconst t = editor.t;\r\n\r\n\t\teditor.plugins.get( 'Emoji' ).addItems( '😃 ' + t('Smileys & People'),\r\n [\r\n { title: 'Grinning Face', character: '😀' }, { title: 'Grinning Face with Big Eyes', character: '😃' }, { title: 'Grinning Face with Smiling Eyes', character: '😄' }, { title: 'Beaming Face with Smiling Eyes', character: '😁' }, { title: 'Grinning Squinting Face', character: '😆' }, { title: 'Grinning Face with Sweat', character: '😅' }, { title: 'Rolling on the Floor Laughing', character: '🤣' }, { title: 'Face with Tears of Joy', character: '😂' }, { title: 'Slightly Smiling Face', character: '🙂' }, { title: 'Upside-Down Face', character: '🙃' }, { title: 'Winking Face', character: '😉' }, { title: 'Smiling Face with Smiling Eyes', character: '😊' }, { title: 'Smiling Face with Halo', character: '😇' }, { title: 'Smiling Face with Hearts', character: '🥰' }, { title: 'Smiling Face with Heart-Eyes', character: '😍' }, { title: 'Star-Struck', character: '🤩' }, { title: 'Face Blowing a Kiss', character: '😘' }, { title: 'Kissing Face', character: '😗' }, { title: 'Smiling Face', character: '☺️' }, { title: 'Kissing Face with Closed Eyes', character: '😚' }, { title: 'Kissing Face with Smiling Eyes', character: '😙' }, { title: 'Smiling Face with Tear', character: '🥲' }, { title: 'Face Savoring Food', character: '😋' }, { title: 'Face with Tongue', character: '😛' }, { title: 'Winking Face with Tongue', character: '😜' }, { title: 'Zany Face', character: '🤪' }, { title: 'Squinting Face with Tongue', character: '😝' }, { title: 'Money-Mouth Face', character: '🤑' }, { title: 'Hugging Face', character: '🤗' }, { title: 'Face with Hand Over Mouth', character: '🤭' }, { title: 'Shushing Face', character: '🤫' }, { title: 'Thinking Face', character: '🤔' }, { title: 'Zipper-Mouth Face', character: '🤐' }, { title: 'Face with Raised Eyebrow', character: '🤨' }, { title: 'Neutral Face', character: '😐' }, { title: 'Expressionless Face', character: '😑' }, { title: 'Face Without Mouth', character: '😶' }, { title: 'Smirking Face', character: '😏' }, { title: 'Unamused Face', character: '😒' }, { title: 'Face with Rolling Eyes', character: '🙄' }, { title: 'Grimacing Face', character: '😬' }, { title: 'Lying Face', character: '🤥' }, { title: 'Relieved Face', character: '😌' }, { title: 'Pensive Face', character: '😔' }, { title: 'Sleepy Face', character: '😪' }, { title: 'Drooling Face', character: '🤤' }, { title: 'Sleeping Face', character: '😴' }, { title: 'Face with Medical Mask', character: '😷' }, { title: 'Face with Thermometer', character: '🤒' }, { title: 'Face with Head-Bandage', character: '🤕' }, { title: 'Nauseated Face', character: '🤢' }, { title: 'Face Vomiting', character: '🤮' }, { title: 'Sneezing Face', character: '🤧' }, { title: 'Hot Face', character: '🥵' }, { title: 'Cold Face', character: '🥶' }, { title: 'Woozy Face', character: '🥴' }, { title: 'Dizzy Face', character: '😵' }, { title: 'Exploding Head', character: '🤯' }, { title: 'Cowboy Hat Face', character: '🤠' }, { title: 'Partying Face', character: '🥳' }, { title: 'Disguised Face', character: '🥸' }, { title: 'Smiling Face with Sunglasses', character: '😎' }, { title: 'Nerd Face', character: '🤓' }, { title: 'Face with Monocle', character: '🧐' }, { title: 'Confused Face', character: '😕' }, { title: 'Worried Face', character: '😟' }, { title: 'Slightly Frowning Face', character: '🙁' }, { title: 'Frowning Face', character: '☹️' }, { title: 'Face with Open Mouth', character: '😮' }, { title: 'Hushed Face', character: '😯' }, { title: 'Astonished Face', character: '😲' }, { title: 'Flushed Face', character: '😳' }, { title: 'Pleading Face', character: '🥺' }, { title: 'Frowning Face with Open Mouth', character: '😦' }, { title: 'Anguished Face', character: '😧' }, { title: 'Fearful Face', character: '😨' }, { title: 'Anxious Face with Sweat', character: '😰' }, { title: 'Sad but Relieved Face', character: '😥' }, { title: 'Crying Face', character: '😢' }, { title: 'Loudly Crying Face', character: '😭' }, { title: 'Face Screaming in Fear', character: '😱' }, { title: 'Confounded Face', character: '😖' }, { title: 'Persevering Face', character: '😣' }, { title: 'Disappointed Face', character: '😞' }, { title: 'Downcast Face with Sweat', character: '😓' }, { title: 'Weary Face', character: '😩' }, { title: 'Tired Face', character: '😫' }, { title: 'Yawning Face', character: '🥱' }, { title: 'Face with Steam From Nose', character: '😤' }, { title: 'Pouting Face', character: '😡' }, { title: 'Angry Face', character: '😠' }, { title: 'Face with Symbols on Mouth', character: '🤬' }, { title: 'Smiling Face with Horns', character: '😈' }, { title: 'Angry Face with Horns', character: '👿' }, { title: 'Skull', character: '💀' }, { title: 'Skull and Crossbones', character: '☠️' }, { title: 'Pile of Poo', character: '💩' }, { title: 'Clown Face', character: '🤡' }, { title: 'Ogre', character: '👹' }, { title: 'Goblin', character: '👺' }, { title: 'Ghost', character: '👻' }, { title: 'Alien', character: '👽' }, { title: 'Alien Monster', character: '👾' }, { title: 'Robot', character: '🤖' }, { title: 'Grinning Cat', character: '😺' }, { title: 'Grinning Cat with Smiling Eyes', character: '😸' }, { title: 'Cat with Tears of Joy', character: '😹' }, { title: 'Smiling Cat with Heart-Eyes', character: '😻' }, { title: 'Cat with Wry Smile', character: '😼' }, { title: 'Kissing Cat', character: '😽' }, { title: 'Weary Cat', character: '🙀' }, { title: 'Crying Cat', character: '😿' }, { title: 'Pouting Cat', character: '😾' }, { title: 'Kiss Mark', character: '💋' }, { title: 'Waving Hand', character: '👋' }, { title: 'Raised Back of Hand', character: '🤚' }, { title: 'Hand with Fingers Splayed', character: '🖐️' }, { title: 'Raised Hand', character: '✋' }, { title: 'Vulcan Salute', character: '🖖' }, { title: 'OK Hand', character: '👌' }, { title: 'Pinched Fingers', character: '🤌' }, { title: 'Pinching Hand', character: '🤏' }, { title: 'Victory Hand', character: '✌️' }, { title: 'Crossed Fingers', character: '🤞' }, { title: 'Love-You Gesture', character: '🤟' }, { title: 'Sign of the Horns', character: '🤘' }, { title: 'Call Me Hand', character: '🤙' }, { title: 'Backhand Index Pointing Left', character: '👈' }, { title: 'Backhand Index Pointing Right', character: '👉' }, { title: 'Backhand Index Pointing Up', character: '👆' }, { title: 'Middle Finger', character: '🖕' }, { title: 'Backhand Index Pointing Down', character: '👇' }, { title: 'Index Pointing Up', character: '☝️' }, { title: 'Thumbs Up', character: '👍' }, { title: 'Thumbs Down', character: '👎' }, { title: 'Raised Fist', character: '✊' }, { title: 'Oncoming Fist', character: '👊' }, { title: 'Left-Facing Fist', character: '🤛' }, { title: 'Right-Facing Fist', character: '🤜' }, { title: 'Clapping Hands', character: '👏' }, { title: 'Raising Hands', character: '🙌' }, { title: 'Open Hands', character: '👐' }, { title: 'Palms Up Together', character: '🤲' }, { title: 'Handshake', character: '🤝' }, { title: 'Folded Hands', character: '🙏' }, { title: 'Writing Hand', character: '✍️' }, { title: 'Nail Polish', character: '💅' }, { title: 'Selfie', character: '🤳' }, { title: 'Flexed Biceps', character: '💪' }, { title: 'Mechanical Arm', character: '🦾' }, { title: 'Mechanical Leg', character: '🦿' }, { title: 'Leg', character: '🦵' }, { title: 'Foot', character: '🦶' }, { title: 'Ear', character: '👂' }, { title: 'Ear with Hearing Aid', character: '🦻' }, { title: 'Nose', character: '👃' }, { title: 'Brain', character: '🧠' }, { title: 'Anatomical Heart', character: '🫀' }, { title: 'Lungs', character: '🫁' }, { title: 'Tooth', character: '🦷' }, { title: 'Bone', character: '🦴' }, { title: 'Eyes', character: '👀' }, { title: 'Eye', character: '👁️' }, { title: 'Tongue', character: '👅' }, { title: 'Mouth', character: '👄' }, { title: 'Baby', character: '👶' }, { title: 'Child', character: '🧒' }, { title: 'Boy', character: '👦' }, { title: 'Girl', character: '👧' }, { title: 'Person', character: '🧑' }, { title: 'Person: Blond Hair', character: '👱' }, { title: 'Man', character: '👨' }, { title: 'Person: Beard', character: '🧔' }, { title: 'Man: Red Hair', character: '👨‍🦰' }, { title: 'Man: Curly Hair', character: '👨‍🦱' }, { title: 'Man: White Hair', character: '👨‍🦳' }, { title: 'Man: Bald', character: '👨‍🦲' }, { title: 'Woman', character: '👩' }, { title: 'Woman: Red Hair', character: '👩‍🦰' }, { title: 'Person: Red Hair', character: '🧑‍🦰' }, { title: 'Woman: Curly Hair', character: '👩‍🦱' }, { title: 'Person: Curly Hair', character: '🧑‍🦱' }, { title: 'Woman: White Hair', character: '👩‍🦳' }, { title: 'Person: White Hair', character: '🧑‍🦳' }, { title: 'Woman: Bald', character: '👩‍🦲' }, { title: 'Person: Bald', character: '🧑‍🦲' }, { title: 'Woman: Blond Hair', character: '👱‍♀️' }, { title: 'Man: Blond Hair', character: '👱‍♂️' }, { title: 'Older Person', character: '🧓' }, { title: 'Old Man', character: '👴' }, { title: 'Old Woman', character: '👵' }, { title: 'Person Frowning', character: '🙍' }, { title: 'Man Frowning', character: '🙍‍♂️' }, { title: 'Woman Frowning', character: '🙍‍♀️' }, { title: 'Person Pouting', character: '🙎' }, { title: 'Man Pouting', character: '🙎‍♂️' }, { title: 'Woman Pouting', character: '🙎‍♀️' }, { title: 'Person Gesturing No', character: '🙅' }, { title: 'Man Gesturing No', character: '🙅‍♂️' }, { title: 'Woman Gesturing No', character: '🙅‍♀️' }, { title: 'Person Gesturing OK', character: '🙆' }, { title: 'Man Gesturing OK', character: '🙆‍♂️' }, { title: 'Woman Gesturing OK', character: '🙆‍♀️' }, { title: 'Person Tipping Hand', character: '💁' }, { title: 'Man Tipping Hand', character: '💁‍♂️' }, { title: 'Woman Tipping Hand', character: '💁‍♀️' }, { title: 'Person Raising Hand', character: '🙋' }, { title: 'Man Raising Hand', character: '🙋‍♂️' }, { title: 'Woman Raising Hand', character: '🙋‍♀️' }, { title: 'Deaf Person', character: '🧏' }, { title: 'Deaf Man', character: '🧏‍♂️' }, { title: 'Deaf Woman', character: '🧏‍♀️' }, { title: 'Person Bowing', character: '🙇' }, { title: 'Man Bowing', character: '🙇‍♂️' }, { title: 'Woman Bowing', character: '🙇‍♀️' }, { title: 'Person Facepalming', character: '🤦' }, { title: 'Man Facepalming', character: '🤦‍♂️' }, { title: 'Woman Facepalming', character: '🤦‍♀️' }, { title: 'Person Shrugging', character: '🤷' }, { title: 'Man Shrugging', character: '🤷‍♂️' }, { title: 'Woman Shrugging', character: '🤷‍♀️' }, { title: 'Health Worker', character: '🧑‍⚕️' }, { title: 'Man Health Worker', character: '👨‍⚕️' }, { title: 'Woman Health Worker', character: '👩‍⚕️' }, { title: 'Student', character: '🧑‍🎓' }, { title: 'Man Student', character: '👨‍🎓' }, { title: 'Woman Student', character: '👩‍🎓' }, { title: 'Teacher', character: '🧑‍🏫' }, { title: 'Man Teacher', character: '👨‍🏫' }, { title: 'Woman Teacher', character: '👩‍🏫' }, { title: 'Judge', character: '🧑‍⚖️' }, { title: 'Man Judge', character: '👨‍⚖️' }, { title: 'Woman Judge', character: '👩‍⚖️' }, { title: 'Farmer', character: '🧑‍🌾' }, { title: 'Man Farmer', character: '👨‍🌾' }, { title: 'Woman Farmer', character: '👩‍🌾' }, { title: 'Cook', character: '🧑‍🍳' }, { title: 'Man Cook', character: '👨‍🍳' }, { title: 'Woman Cook', character: '👩‍🍳' }, { title: 'Mechanic', character: '🧑‍🔧' }, { title: 'Man Mechanic', character: '👨‍🔧' }, { title: 'Woman Mechanic', character: '👩‍🔧' }, { title: 'Factory Worker', character: '🧑‍🏭' }, { title: 'Man Factory Worker', character: '👨‍🏭' }, { title: 'Woman Factory Worker', character: '👩‍🏭' }, { title: 'Office Worker', character: '🧑‍💼' }, { title: 'Man Office Worker', character: '👨‍💼' }, { title: 'Woman Office Worker', character: '👩‍💼' }, { title: 'Scientist', character: '🧑‍🔬' }, { title: 'Man Scientist', character: '👨‍🔬' }, { title: 'Woman Scientist', character: '👩‍🔬' }, { title: 'Technologist', character: '🧑‍💻' }, { title: 'Man Technologist', character: '👨‍💻' }, { title: 'Woman Technologist', character: '👩‍💻' }, { title: 'Singer', character: '🧑‍🎤' }, { title: 'Man Singer', character: '👨‍🎤' }, { title: 'Woman Singer', character: '👩‍🎤' }, { title: 'Artist', character: '🧑‍🎨' }, { title: 'Man Artist', character: '👨‍🎨' }, { title: 'Woman Artist', character: '👩‍🎨' }, { title: 'Pilot', character: '🧑‍✈️' }, { title: 'Man Pilot', character: '👨‍✈️' }, { title: 'Woman Pilot', character: '👩‍✈️' }, { title: 'Astronaut', character: '🧑‍🚀' }, { title: 'Man Astronaut', character: '👨‍🚀' }, { title: 'Woman Astronaut', character: '👩‍🚀' }, { title: 'Firefighter', character: '🧑‍🚒' }, { title: 'Man Firefighter', character: '👨‍🚒' }, { title: 'Woman Firefighter', character: '👩‍🚒' }, { title: 'Police Officer', character: '👮' }, { title: 'Man Police Officer', character: '👮‍♂️' }, { title: 'Woman Police Officer', character: '👮‍♀️' }, { title: 'Detective', character: '🕵️' }, { title: 'Man Detective', character: '🕵️‍♂️' }, { title: 'Woman Detective', character: '🕵️‍♀️' }, { title: 'Guard', character: '💂' }, { title: 'Man Guard', character: '💂‍♂️' }, { title: 'Woman Guard', character: '💂‍♀️' }, { title: 'Ninja', character: '🥷' }, { title: 'Construction Worker', character: '👷' }, { title: 'Man Construction Worker', character: '👷‍♂️' }, { title: 'Woman Construction Worker', character: '👷‍♀️' }, { title: 'Prince', character: '🤴' }, { title: 'Princess', character: '👸' }, { title: 'Person Wearing Turban', character: '👳' }, { title: 'Man Wearing Turban', character: '👳‍♂️' }, { title: 'Woman Wearing Turban', character: '👳‍♀️' }, { title: 'Person With Skullcap', character: '👲' }, { title: 'Woman with Headscarf', character: '🧕' }, { title: 'Person in Tuxedo', character: '🤵' }, { title: 'Man in Tuxedo', character: '🤵‍♂️' }, { title: 'Woman in Tuxedo', character: '🤵‍♀️' }, { title: 'Person With Veil', character: '👰' }, { title: 'Man with Veil', character: '👰‍♂️' }, { title: 'Woman with Veil', character: '👰‍♀️' }, { title: 'Pregnant Woman', character: '🤰' }, { title: 'Breast-Feeding', character: '🤱' }, { title: 'Woman Feeding Baby', character: '👩‍🍼' }, { title: 'Man Feeding Baby', character: '👨‍🍼' }, { title: 'Person Feeding Baby', character: '🧑‍🍼' }, { title: 'Baby Angel', character: '👼' }, { title: 'Santa Claus', character: '🎅' }, { title: 'Mrs. Claus', character: '🤶' }, { title: 'Mx Claus', character: '🧑‍🎄' }, { title: 'Superhero', character: '🦸' }, { title: 'Man Superhero', character: '🦸‍♂️' }, { title: 'Woman Superhero', character: '🦸‍♀️' }, { title: 'Supervillain', character: '🦹' }, { title: 'Man Supervillain', character: '🦹‍♂️' }, { title: 'Woman Supervillain', character: '🦹‍♀️' }, { title: 'Mage', character: '🧙' }, { title: 'Man Mage', character: '🧙‍♂️' }, { title: 'Woman Mage', character: '🧙‍♀️' }, { title: 'Fairy', character: '🧚' }, { title: 'Man Fairy', character: '🧚‍♂️' }, { title: 'Woman Fairy', character: '🧚‍♀️' }, { title: 'Vampire', character: '🧛' }, { title: 'Man Vampire', character: '🧛‍♂️' }, { title: 'Woman Vampire', character: '🧛‍♀️' }, { title: 'Merperson', character: '🧜' }, { title: 'Merman', character: '🧜‍♂️' }, { title: 'Mermaid', character: '🧜‍♀️' }, { title: 'Elf', character: '🧝' }, { title: 'Man Elf', character: '🧝‍♂️' }, { title: 'Woman Elf', character: '🧝‍♀️' }, { title: 'Genie', character: '🧞' }, { title: 'Man Genie', character: '🧞‍♂️' }, { title: 'Woman Genie', character: '🧞‍♀️' }, { title: 'Zombie', character: '🧟' }, { title: 'Man Zombie', character: '🧟‍♂️' }, { title: 'Woman Zombie', character: '🧟‍♀️' }, { title: 'Person Getting Massage', character: '💆' }, { title: 'Man Getting Massage', character: '💆‍♂️' }, { title: 'Woman Getting Massage', character: '💆‍♀️' }, { title: 'Person Getting Haircut', character: '💇' }, { title: 'Man Getting Haircut', character: '💇‍♂️' }, { title: 'Woman Getting Haircut', character: '💇‍♀️' }, { title: 'Person Walking', character: '🚶' }, { title: 'Man Walking', character: '🚶‍♂️' }, { title: 'Woman Walking', character: '🚶‍♀️' }, { title: 'Person Standing', character: '🧍' }, { title: 'Man Standing', character: '🧍‍♂️' }, { title: 'Woman Standing', character: '🧍‍♀️' }, { title: 'Person Kneeling', character: '🧎' }, { title: 'Man Kneeling', character: '🧎‍♂️' }, { title: 'Woman Kneeling', character: '🧎‍♀️' }, { title: 'Person with White Cane', character: '🧑‍🦯' }, { title: 'Man with White Cane', character: '👨‍🦯' }, { title: 'Woman with White Cane', character: '👩‍🦯' }, { title: 'Person in Motorized Wheelchair', character: '🧑‍🦼' }, { title: 'Man in Motorized Wheelchair', character: '👨‍🦼' }, { title: 'Woman in Motorized Wheelchair', character: '👩‍🦼' }, { title: 'Person in Manual Wheelchair', character: '🧑‍🦽' }, { title: 'Man in Manual Wheelchair', character: '👨‍🦽' }, { title: 'Woman in Manual Wheelchair', character: '👩‍🦽' }, { title: 'Person Running', character: '🏃' }, { title: 'Man Running', character: '🏃‍♂️' }, { title: 'Woman Running', character: '🏃‍♀️' }, { title: 'Woman Dancing', character: '💃' }, { title: 'Man Dancing', character: '🕺' }, { title: 'Person in Suit Levitating', character: '🕴️' }, { title: 'People with Bunny Ears', character: '👯' }, { title: 'Men with Bunny Ears', character: '👯‍♂️' }, { title: 'Women with Bunny Ears', character: '👯‍♀️' }, { title: 'Person in Steamy Room', character: '🧖' }, { title: 'Man in Steamy Room', character: '🧖‍♂️' }, { title: 'Woman in Steamy Room', character: '🧖‍♀️' }, { title: 'Person in Lotus Position', character: '🧘' }, { title: 'People Holding Hands', character: '🧑‍🤝‍🧑' }, { title: 'Women Holding Hands', character: '👭' }, { title: 'Woman and Man Holding Hands', character: '👫' }, { title: 'Men Holding Hands', character: '👬' }, { title: 'Kiss', character: '💏' }, { title: 'Kiss: Woman, Man', character: '👩‍❤️‍💋‍👨' }, { title: 'Kiss: Man, Man', character: '👨‍❤️‍💋‍👨' }, { title: 'Kiss: Woman, Woman', character: '👩‍❤️‍💋‍👩' }, { title: 'Couple with Heart', character: '💑' }, { title: 'Couple with Heart: Woman, Man', character: '👩‍❤️‍👨' }, { title: 'Couple with Heart: Man, Man', character: '👨‍❤️‍👨' }, { title: 'Couple with Heart: Woman, Woman', character: '👩‍❤️‍👩' }, { title: 'Family', character: '👪' }, { title: 'Family: Man, Woman, Boy', character: '👨‍👩‍👦' }, { title: 'Family: Man, Woman, Girl', character: '👨‍👩‍👧' }, { title: 'Family: Man, Woman, Girl, Boy', character: '👨‍👩‍👧‍👦' }, { title: 'Family: Man, Woman, Boy, Boy', character: '👨‍👩‍👦‍👦' }, { title: 'Family: Man, Woman, Girl, Girl', character: '👨‍👩‍👧‍👧' }, { title: 'Family: Man, Man, Boy', character: '👨‍👨‍👦' }, { title: 'Family: Man, Man, Girl', character: '👨‍👨‍👧' }, { title: 'Family: Man, Man, Girl, Boy', character: '👨‍👨‍👧‍👦' }, { title: 'Family: Man, Man, Boy, Boy', character: '👨‍👨‍👦‍👦' }, { title: 'Family: Man, Man, Girl, Girl', character: '👨‍👨‍👧‍👧' }, { title: 'Family: Woman, Woman, Boy', character: '👩‍👩‍👦' }, { title: 'Family: Woman, Woman, Girl', character: '👩‍👩‍👧' }, { title: 'Family: Woman, Woman, Girl, Boy', character: '👩‍👩‍👧‍👦' }, { title: 'Family: Woman, Woman, Boy, Boy', character: '👩‍👩‍👦‍👦' }, { title: 'Family: Woman, Woman, Girl, Girl', character: '👩‍👩‍👧‍👧' }, { title: 'Family: Man, Boy', character: '👨‍👦' }, { title: 'Family: Man, Boy, Boy', character: '👨‍👦‍👦' }, { title: 'Family: Man, Girl', character: '👨‍👧' }, { title: 'Family: Man, Girl, Boy', character: '👨‍👧‍👦' }, { title: 'Family: Man, Girl, Girl', character: '👨‍👧‍👧' }, { title: 'Family: Woman, Boy', character: '👩‍👦' }, { title: 'Family: Woman, Boy, Boy', character: '👩‍👦‍👦' }, { title: 'Family: Woman, Girl', character: '👩‍👧' }, { title: 'Family: Woman, Girl, Boy', character: '👩‍👧‍👦' }, { title: 'Family: Woman, Girl, Girl', character: '👩‍👧‍👧' }, { title: 'Speaking Head', character: '🗣️' }, { title: 'Bust in Silhouette', character: '👤' }, { title: 'Busts in Silhouette', character: '👥' }, { title: 'People Hugging', character: '🫂' }, { title: 'Footprints', character: '👣' }, { title: 'Luggage', character: '🧳' }, { title: 'Closed Umbrella', character: '🌂' }, { title: 'Umbrella', character: '☂️' }, { title: 'Jack-O-Lantern', character: '🎃' }, { title: 'Thread', character: '🧵' }, { title: 'Yarn', character: '🧶' }, { title: 'Glasses', character: '👓' }, { title: 'Sunglasses', character: '🕶️' }, { title: 'Goggles', character: '🥽' }, { title: 'Lab Coat', character: '🥼' }, { title: 'Safety Vest', character: '🦺' }, { title: 'Necktie', character: '👔' }, { title: 'T-Shirt', character: '👕' }, { title: 'Jeans', character: '👖' }, { title: 'Scarf', character: '🧣' }, { title: 'Gloves', character: '🧤' }, { title: 'Coat', character: '🧥' }, { title: 'Socks', character: '🧦' }, { title: 'Dress', character: '👗' }, { title: 'Kimono', character: '👘' }, { title: 'Sari', character: '🥻' }, { title: 'One-Piece Swimsuit', character: '🩱' }, { title: 'Briefs', character: '🩲' }, { title: 'Shorts', character: '🩳' }, { title: 'Bikini', character: '👙' }, { title: 'Woman’s Clothes', character: '👚' }, { title: 'Purse', character: '👛' }, { title: 'Handbag', character: '👜' }, { title: 'Clutch Bag', character: '👝' }, { title: 'Backpack', character: '🎒' }, { title: 'Thong Sandal', character: '🩴' }, { title: 'Man’s Shoe', character: '👞' }, { title: 'Running Shoe', character: '👟' }, { title: 'Hiking Boot', character: '🥾' }, { title: 'Flat Shoe', character: '🥿' }, { title: 'High-Heeled Shoe', character: '👠' }, { title: 'Woman’s Sandal', character: '👡' }, { title: 'Ballet Shoes', character: '🩰' }, { title: 'Woman’s Boot', character: '👢' }, { title: 'Crown', character: '👑' }, { title: 'Woman’s Hat', character: '👒' }, { title: 'Top Hat', character: '🎩' }, { title: 'Graduation Cap', character: '🎓' }, { title: 'Billed Cap', character: '🧢' }, { title: 'Military Helmet', character: '🪖' }, { title: 'Rescue Worker’s Helmet', character: '⛑️' }, { title: 'Lipstick', character: '💄' }, { title: 'Ring', character: '💍' }, { title: 'Briefcase', character: '💼' }, { title: 'Drop of Blood', character: '🩸' },\r\n ]\r\n );\r\n\t}\r\n}\r\n","import { Plugin } from '@ckeditor/ckeditor5-core';\r\n\r\nexport default class EmojiNature extends Plugin {\r\n\t/**\r\n\t * @inheritDoc\r\n\t */\r\n\tstatic get pluginName() {\r\n\t\treturn 'EmojiNature';\r\n\t}\r\n\r\n\t/**\r\n\t * @inheritDoc\r\n\t */\r\n\tinit() {\r\n\t\tconst editor = this.editor;\r\n\t\tconst t = editor.t;\r\n\r\n\t\teditor.plugins.get( 'Emoji' ).addItems( '🐻 ' + t('Animals & Nature'),\r\n [\r\n { title: 'See-No-Evil Monkey', character: '🙈' }, { title: 'Hear-No-Evil Monkey', character: '🙉' }, { title: 'Speak-No-Evil Monkey', character: '🙊' }, { title: 'Collision', character: '💥' }, { title: 'Dizzy', character: '💫' }, { title: 'Sweat Droplets', character: '💦' }, { title: 'Dashing Away', character: '💨' }, { title: 'Monkey Face', character: '🐵' }, { title: 'Monkey', character: '🐒' }, { title: 'Gorilla', character: '🦍' }, { title: 'Orangutan', character: '🦧' }, { title: 'Dog Face', character: '🐶' }, { title: 'Dog', character: '🐕' }, { title: 'Guide Dog', character: '🦮' }, { title: 'Service Dog', character: '🐕‍🦺' }, { title: 'Poodle', character: '🐩' }, { title: 'Wolf', character: '🐺' }, { title: 'Fox', character: '🦊' }, { title: 'Raccoon', character: '🦝' }, { title: 'Cat Face', character: '🐱' }, { title: 'Cat', character: '🐈' }, { title: 'Black Cat', character: '🐈‍⬛' }, { title: 'Lion', character: '🦁' }, { title: 'Tiger Face', character: '🐯' }, { title: 'Tiger', character: '🐅' }, { title: 'Leopard', character: '🐆' }, { title: 'Horse Face', character: '🐴' }, { title: 'Horse', character: '🐎' }, { title: 'Unicorn', character: '🦄' }, { title: 'Zebra', character: '🦓' }, { title: 'Deer', character: '🦌' }, { title: 'Bison', character: '🦬' }, { title: 'Cow Face', character: '🐮' }, { title: 'Ox', character: '🐂' }, { title: 'Water Buffalo', character: '🐃' }, { title: 'Cow', character: '🐄' }, { title: 'Pig Face', character: '🐷' }, { title: 'Pig', character: '🐖' }, { title: 'Boar', character: '🐗' }, { title: 'Pig Nose', character: '🐽' }, { title: 'Ram', character: '🐏' }, { title: 'Ewe', character: '🐑' }, { title: 'Goat', character: '🐐' }, { title: 'Camel', character: '🐪' }, { title: 'Two-Hump Camel', character: '🐫' }, { title: 'Llama', character: '🦙' }, { title: 'Giraffe', character: '🦒' }, { title: 'Elephant', character: '🐘' }, { title: 'Mammoth', character: '🦣' }, { title: 'Rhinoceros', character: '🦏' }, { title: 'Hippopotamus', character: '🦛' }, { title: 'Mouse Face', character: '🐭' }, { title: 'Mouse', character: '🐁' }, { title: 'Rat', character: '🐀' }, { title: 'Hamster', character: '🐹' }, { title: 'Rabbit Face', character: '🐰' }, { title: 'Rabbit', character: '🐇' }, { title: 'Chipmunk', character: '🐿️' }, { title: 'Beaver', character: '🦫' }, { title: 'Hedgehog', character: '🦔' }, { title: 'Bat', character: '🦇' }, { title: 'Bear', character: '🐻' }, { title: 'Polar Bear', character: '🐻‍❄️' }, { title: 'Koala', character: '🐨' }, { title: 'Panda', character: '🐼' }, { title: 'Sloth', character: '🦥' }, { title: 'Otter', character: '🦦' }, { title: 'Skunk', character: '🦨' }, { title: 'Kangaroo', character: '🦘' }, { title: 'Badger', character: '🦡' }, { title: 'Paw Prints', character: '🐾' }, { title: 'Turkey', character: '🦃' }, { title: 'Chicken', character: '🐔' }, { title: 'Rooster', character: '🐓' }, { title: 'Hatching Chick', character: '🐣' }, { title: 'Baby Chick', character: '🐤' }, { title: 'Front-Facing Baby Chick', character: '🐥' }, { title: 'Bird', character: '🐦' }, { title: 'Penguin', character: '🐧' }, { title: 'Dove', character: '🕊️' }, { title: 'Eagle', character: '🦅' }, { title: 'Duck', character: '🦆' }, { title: 'Swan', character: '🦢' }, { title: 'Owl', character: '🦉' }, { title: 'Dodo', character: '🦤' }, { title: 'Feather', character: '🪶' }, { title: 'Flamingo', character: '🦩' }, { title: 'Peacock', character: '🦚' }, { title: 'Parrot', character: '🦜' }, { title: 'Frog', character: '🐸' }, { title: 'Crocodile', character: '🐊' }, { title: 'Turtle', character: '🐢' }, { title: 'Lizard', character: '🦎' }, { title: 'Snake', character: '🐍' }, { title: 'Dragon Face', character: '🐲' }, { title: 'Dragon', character: '🐉' }, { title: 'Sauropod', character: '🦕' }, { title: 'T-Rex', character: '🦖' }, { title: 'Spouting Whale', character: '🐳' }, { title: 'Whale', character: '🐋' }, { title: 'Dolphin', character: '🐬' }, { title: 'Seal', character: '🦭' }, { title: 'Fish', character: '🐟' }, { title: 'Tropical Fish', character: '🐠' }, { title: 'Blowfish', character: '🐡' }, { title: 'Shark', character: '🦈' }, { title: 'Octopus', character: '🐙' }, { title: 'Spiral Shell', character: '🐚' }, { title: 'Snail', character: '🐌' }, { title: 'Butterfly', character: '🦋' }, { title: 'Bug', character: '🐛' }, { title: 'Ant', character: '🐜' }, { title: 'Honeybee', character: '🐝' }, { title: 'Beetle', character: '🪲' }, { title: 'Lady Beetle', character: '🐞' }, { title: 'Cricket', character: '🦗' }, { title: 'Cockroach', character: '🪳' }, { title: 'Spider', character: '🕷️' }, { title: 'Spider Web', character: '🕸️' }, { title: 'Scorpion', character: '🦂' }, { title: 'Mosquito', character: '🦟' }, { title: 'Fly', character: '🪰' }, { title: 'Worm', character: '🪱' }, { title: 'Microbe', character: '🦠' }, { title: 'Bouquet', character: '💐' }, { title: 'Cherry Blossom', character: '🌸' }, { title: 'White Flower', character: '💮' }, { title: 'Rosette', character: '🏵️' }, { title: 'Rose', character: '🌹' }, { title: 'Wilted Flower', character: '🥀' }, { title: 'Hibiscus', character: '🌺' }, { title: 'Sunflower', character: '🌻' }, { title: 'Blossom', character: '🌼' }, { title: 'Tulip', character: '🌷' }, { title: 'Seedling', character: '🌱' }, { title: 'Potted Plant', character: '🪴' }, { title: 'Evergreen Tree', character: '🌲' }, { title: 'Deciduous Tree', character: '🌳' }, { title: 'Palm Tree', character: '🌴' }, { title: 'Cactus', character: '🌵' }, { title: 'Sheaf of Rice', character: '🌾' }, { title: 'Herb', character: '🌿' }, { title: 'Shamrock', character: '☘️' }, { title: 'Four Leaf Clover', character: '🍀' }, { title: 'Maple Leaf', character: '🍁' }, { title: 'Fallen Leaf', character: '🍂' }, { title: 'Leaf Fluttering in Wind', character: '🍃' }, { title: 'Mushroom', character: '🍄' }, { title: 'Chestnut', character: '🌰' }, { title: 'Crab', character: '🦀' }, { title: 'Lobster', character: '🦞' }, { title: 'Shrimp', character: '🦐' }, { title: 'Squid', character: '🦑' }, { title: 'Globe Showing Europe-Africa', character: '🌍' }, { title: 'Globe Showing Americas', character: '🌎' }, { title: 'Globe Showing Asia-Australia', character: '🌏' }, { title: 'Globe with Meridians', character: '🌐' }, { title: 'Rock', character: '🪨' }, { title: 'New Moon', character: '🌑' }, { title: 'Waxing Crescent Moon', character: '🌒' }, { title: 'Waxing Gibbous Moon', character: '🌔' }, { title: 'Full Moon', character: '🌕' }, { title: 'Waning Gibbous Moon', character: '🌖' }, { title: 'Last Quarter Moon', character: '🌗' }, { title: 'Waning Crescent Moon', character: '🌘' }, { title: 'Crescent Moon', character: '🌙' }, { title: 'New Moon Face', character: '🌚' }, { title: 'First Quarter Moon Face', character: '🌛' }, { title: 'Last Quarter Moon Face', character: '🌜' }, { title: 'Sun', character: '☀️' }, { title: 'Full Moon Face', character: '🌝' }, { title: 'Sun with Face', character: '🌞' }, { title: 'Star', character: '⭐' }, { title: 'Glowing Star', character: '🌟' }, { title: 'Shooting Star', character: '🌠' }, { title: 'Cloud', character: '☁️' }, { title: 'Sun Behind Cloud', character: '⛅' }, { title: 'Cloud with Lightning and Rain', character: '⛈️' }, { title: 'Sun Behind Small Cloud', character: '🌤️' }, { title: 'Sun Behind Large Cloud', character: '🌥️' }, { title: 'Sun Behind Rain Cloud', character: '🌦️' }, { title: 'Cloud with Rain', character: '🌧️' }, { title: 'Cloud with Snow', character: '🌨️' }, { title: 'Cloud with Lightning', character: '🌩️' }, { title: 'Tornado', character: '🌪️' }, { title: 'Fog', character: '🌫️' }, { title: 'Wind Face', character: '🌬️' }, { title: 'Rainbow', character: '🌈' }, { title: 'Umbrella', character: '☂️' }, { title: 'Umbrella with Rain Drops', character: '☔' }, { title: 'High Voltage', character: '⚡' }, { title: 'Snowflake', character: '❄️' }, { title: 'Snowman', character: '☃️' }, { title: 'Snowman Without Snow', character: '⛄' }, { title: 'Comet', character: '☄️' }, { title: 'Fire', character: '🔥' }, { title: 'Droplet', character: '💧' }, { title: 'Water Wave', character: '🌊' }, { title: 'Christmas Tree', character: '🎄' }, { title: 'Sparkles', character: '✨' }, { title: 'Tanabata Tree', character: '🎋' }, { title: 'Pine Decoration', character: '🎍' },\r\n ]\r\n );\r\n\t}\r\n}\r\n","import { Plugin } from '@ckeditor/ckeditor5-core';\r\n\r\nexport default class EmojiPlaces extends Plugin {\r\n /**\r\n * @inheritDoc\r\n */\r\n static get pluginName() {\r\n return 'EmojiPlaces';\r\n }\r\n\r\n /**\r\n * @inheritDoc\r\n */\r\n init() {\r\n const editor = this.editor;\r\n const t = editor.t;\r\n\r\n editor.plugins.get( 'Emoji' ).addItems( '🚀 ' + t('Travel & Places'),\r\n [\r\n { title: 'Person Rowing Boat', character: '🚣' }, { title: 'Map of Japan', character: '🗾' }, { title: 'Snow-Capped Mountain', character: '🏔️' }, { title: 'Mountain', character: '⛰️' }, { title: 'Volcano', character: '🌋' }, { title: 'Mount Fuji', character: '🗻' }, { title: 'Camping', character: '🏕️' }, { title: 'Beach with Umbrella', character: '🏖️' }, { title: 'Desert', character: '🏜️' }, { title: 'Desert Island', character: '🏝️' }, { title: 'National Park', character: '🏞️' }, { title: 'Stadium', character: '🏟️' }, { title: 'Classical Building', character: '🏛️' }, { title: 'Building Construction', character: '🏗️' }, { title: 'Hut', character: '🛖' }, { title: 'Houses', character: '🏘️' }, { title: 'Derelict House', character: '🏚️' }, { title: 'House', character: '🏠' }, { title: 'House with Garden', character: '🏡' }, { title: 'Office Building', character: '🏢' }, { title: 'Japanese Post Office', character: '🏣' }, { title: 'Post Office', character: '🏤' }, { title: 'Hospital', character: '🏥' }, { title: 'Bank', character: '🏦' }, { title: 'Hotel', character: '🏨' }, { title: 'Love Hotel', character: '🏩' }, { title: 'Convenience Store', character: '🏪' }, { title: 'School', character: '🏫' }, { title: 'Department Store', character: '🏬' }, { title: 'Factory', character: '🏭' }, { title: 'Japanese Castle', character: '🏯' }, { title: 'Castle', character: '🏰' }, { title: 'Wedding', character: '💒' }, { title: 'Tokyo Tower', character: '🗼' }, { title: 'Statue of Liberty', character: '🗽' }, { title: 'Church', character: '⛪' }, { title: 'Mosque', character: '🕌' }, { title: 'Hindu Temple', character: '🛕' }, { title: 'Synagogue', character: '🕍' }, { title: 'Shinto Shrine', character: '⛩️' }, { title: 'Kaaba', character: '🕋' }, { title: 'Fountain', character: '⛲' }, { title: 'Tent', character: '⛺' }, { title: 'Foggy', character: '🌁' }, { title: 'Night with Stars', character: '🌃' }, { title: 'Cityscape', character: '🏙️' }, { title: 'Sunrise Over Mountains', character: '🌄' }, { title: 'Sunrise', character: '🌅' }, { title: 'Cityscape at Dusk', character: '🌆' }, { title: 'Sunset', character: '🌇' }, { title: 'Bridge at Night', character: '🌉' }, { title: 'Carousel Horse', character: '🎠' }, { title: 'Ferris Wheel', character: '🎡' }, { title: 'Roller Coaster', character: '🎢' }, { title: 'Locomotive', character: '🚂' }, { title: 'Railway Car', character: '🚃' }, { title: 'High-Speed Train', character: '🚄' }, { title: 'Bullet Train', character: '🚅' }, { title: 'Train', character: '🚆' }, { title: 'Metro', character: '🚇' }, { title: 'Light Rail', character: '🚈' }, { title: 'Station', character: '🚉' }, { title: 'Tram', character: '🚊' }, { title: 'Monorail', character: '🚝' }, { title: 'Mountain Railway', character: '🚞' }, { title: 'Tram Car', character: '🚋' }, { title: 'Bus', character: '🚌' }, { title: 'Oncoming Bus', character: '🚍' }, { title: 'Trolleybus', character: '🚎' }, { title: 'Minibus', character: '🚐' }, { title: 'Ambulance', character: '🚑' }, { title: 'Fire Engine', character: '🚒' }, { title: 'Police Car', character: '🚓' }, { title: 'Oncoming Police Car', character: '🚔' }, { title: 'Taxi', character: '🚕' }, { title: 'Oncoming Taxi', character: '🚖' }, { title: 'Automobile', character: '🚗' }, { title: 'Oncoming Automobile', character: '🚘' }, { title: 'Sport Utility Vehicle', character: '🚙' }, { title: 'Pickup Truck', character: '🛻' }, { title: 'Delivery Truck', character: '🚚' }, { title: 'Articulated Lorry', character: '🚛' }, { title: 'Tractor', character: '🚜' }, { title: 'Racing Car', character: '🏎️' }, { title: 'Motorcycle', character: '🏍️' }, { title: 'Motor Scooter', character: '🛵' }, { title: 'Auto Rickshaw', character: '🛺' }, { title: 'Bicycle', character: '🚲' }, { title: 'Kick Scooter', character: '🛴' }, { title: 'Bus Stop', character: '🚏' }, { title: 'Motorway', character: '🛣️' }, { title: 'Railway Track', character: '🛤️' }, { title: 'Fuel Pump', character: '⛽' }, { title: 'Police Car Light', character: '🚨' }, { title: 'Horizontal Traffic Light', character: '🚥' }, { title: 'Vertical Traffic Light', character: '🚦' }, { title: 'Construction', character: '🚧' }, { title: 'Anchor', character: '⚓' }, { title: 'Sailboat', character: '⛵' }, { title: 'Speedboat', character: '🚤' }, { title: 'Passenger Ship', character: '🛳️' }, { title: 'Ferry', character: '⛴️' }, { title: 'Motor Boat', character: '🛥️' }, { title: 'Ship', character: '🚢' }, { title: 'Airplane', character: '✈️' }, { title: 'Small Airplane', character: '🛩️' }, { title: 'Airplane Departure', character: '🛫' }, { title: 'Airplane Arrival', character: '🛬' }, { title: 'Parachute', character: '🪂' }, { title: 'Seat', character: '💺' }, { title: 'Helicopter', character: '🚁' }, { title: 'Suspension Railway', character: '🚟' }, { title: 'Mountain Cableway', character: '🚠' }, { title: 'Aerial Tramway', character: '🚡' }, { title: 'Satellite', character: '🛰️' }, { title: 'Rocket', character: '🚀' }, { title: 'Flying Saucer', character: '🛸' }, { title: 'Ringed Planet', character: '🪐' }, { title: 'Shooting Star', character: '🌠' }, { title: 'Milky Way', character: '🌌' }, { title: 'Umbrella on Ground', character: '⛱️' }, { title: 'Fireworks', character: '🎆' }, { title: 'Sparkler', character: '🎇' }, { title: 'Moon Viewing Ceremony', character: '🎑' }, { title: 'Yen Banknote', character: '💴' }, { title: 'Dollar Banknote', character: '💵' }, { title: 'Euro Banknote', character: '💶' }, { title: 'Pound Banknote', character: '💷' }, { title: 'Moai', character: '🗿' }, { title: 'Passport Control', character: '🛂' }, { title: 'Customs', character: '🛃' }, { title: 'Baggage Claim', character: '🛄' }, { title: 'Left Luggage', character: '🛅' },\r\n ]\r\n );\r\n }\r\n}\r\n","import { Plugin } from '@ckeditor/ckeditor5-core';\r\n\r\nexport default class EmojiFood extends Plugin {\r\n /**\r\n * @inheritDoc\r\n */\r\n static get pluginName() {\r\n return 'EmojiFood';\r\n }\r\n\r\n /**\r\n * @inheritDoc\r\n */\r\n init() {\r\n const editor = this.editor;\r\n const t = editor.t;\r\n\r\n editor.plugins.get( 'Emoji' ).addItems( '🍔 ' + t('Food & Drink'),\r\n [\r\n { title: 'Grapes', character: '🍇' }, { title: 'Melon', character: '🍈' }, { title: 'Watermelon', character: '🍉' }, { title: 'Tangerine', character: '🍊' }, { title: 'Lemon', character: '🍋' }, { title: 'Banana', character: '🍌' }, { title: 'Pineapple', character: '🍍' }, { title: 'Mango', character: '🥭' }, { title: 'Red Apple', character: '🍎' }, { title: 'Green Apple', character: '🍏' }, { title: 'Pear', character: '🍐' }, { title: 'Peach', character: '🍑' }, { title: 'Cherries', character: '🍒' }, { title: 'Strawberry', character: '🍓' }, { title: 'Blueberries', character: '🫐' }, { title: 'Kiwi Fruit', character: '🥝' }, { title: 'Tomato', character: '🍅' }, { title: 'Olive', character: '🫒' }, { title: 'Coconut', character: '🥥' }, { title: 'Avocado', character: '🥑' }, { title: 'Eggplant', character: '🍆' }, { title: 'Potato', character: '🥔' }, { title: 'Carrot', character: '🥕' }, { title: 'Ear of Corn', character: '🌽' }, { title: 'Hot Pepper', character: '🌶️' }, { title: 'Bell Pepper', character: '🫑' }, { title: 'Cucumber', character: '🥒' }, { title: 'Leafy Green', character: '🥬' }, { title: 'Broccoli', character: '🥦' }, { title: 'Garlic', character: '🧄' }, { title: 'Onion', character: '🧅' }, { title: 'Mushroom', character: '🍄' }, { title: 'Peanuts', character: '🥜' }, { title: 'Chestnut', character: '🌰' }, { title: 'Bread', character: '🍞' }, { title: 'Croissant', character: '🥐' }, { title: 'Baguette Bread', character: '🥖' }, { title: 'Flatbread', character: '🫓' }, { title: 'Pretzel', character: '🥨' }, { title: 'Bagel', character: '🥯' }, { title: 'Pancakes', character: '🥞' }, { title: 'Waffle', character: '🧇' }, { title: 'Cheese Wedge', character: '🧀' }, { title: 'Meat on Bone', character: '🍖' }, { title: 'Poultry Leg', character: '🍗' }, { title: 'Cut of Meat', character: '🥩' }, { title: 'Bacon', character: '🥓' }, { title: 'Hamburger', character: '🍔' }, { title: 'French Fries', character: '🍟' }, { title: 'Pizza', character: '🍕' }, { title: 'Hot Dog', character: '🌭' }, { title: 'Sandwich', character: '🥪' }, { title: 'Taco', character: '🌮' }, { title: 'Burrito', character: '🌯' }, { title: 'Tamale', character: '🫔' }, { title: 'Stuffed Flatbread', character: '🥙' }, { title: 'Falafel', character: '🧆' }, { title: 'Egg', character: '🥚' }, { title: 'Cooking', character: '🍳' }, { title: 'Shallow Pan of Food', character: '🥘' }, { title: 'Pot of Food', character: '🍲' }, { title: 'Fondue', character: '🫕' }, { title: 'Bowl with Spoon', character: '🥣' }, { title: 'Green Salad', character: '🥗' }, { title: 'Popcorn', character: '🍿' }, { title: 'Butter', character: '🧈' }, { title: 'Salt', character: '🧂' }, { title: 'Canned Food', character: '🥫' }, { title: 'Bento Box', character: '🍱' }, { title: 'Rice Cracker', character: '🍘' }, { title: 'Rice Ball', character: '🍙' }, { title: 'Cooked Rice', character: '🍚' }, { title: 'Curry Rice', character: '🍛' }, { title: 'Steaming Bowl', character: '🍜' }, { title: 'Spaghetti', character: '🍝' }, { title: 'Roasted Sweet Potato', character: '🍠' }, { title: 'Oden', character: '🍢' }, { title: 'Sushi', character: '🍣' }, { title: 'Fried Shrimp', character: '🍤' }, { title: 'Fish Cake with Swirl', character: '🍥' }, { title: 'Moon Cake', character: '🥮' }, { title: 'Dango', character: '🍡' }, { title: 'Dumpling', character: '🥟' }, { title: 'Fortune Cookie', character: '🥠' }, { title: 'Takeout Box', character: '🥡' }, { title: 'Oyster', character: '🦪' }, { title: 'Soft Ice Cream', character: '🍦' }, { title: 'Shaved Ice', character: '🍧' }, { title: 'Ice Cream', character: '🍨' }, { title: 'Doughnut', character: '🍩' }, { title: 'Cookie', character: '🍪' }, { title: 'Birthday Cake', character: '🎂' }, { title: 'Shortcake', character: '🍰' }, { title: 'Cupcake', character: '🧁' }, { title: 'Pie', character: '🥧' }, { title: 'Chocolate Bar', character: '🍫' }, { title: 'Candy', character: '🍬' }, { title: 'Lollipop', character: '🍭' }, { title: 'Custard', character: '🍮' }, { title: 'Honey Pot', character: '🍯' }, { title: 'Baby Bottle', character: '🍼' }, { title: 'Glass of Milk', character: '🥛' }, { title: 'Hot Beverage', character: '☕' }, { title: 'Teapot', character: '🫖' }, { title: 'Teacup Without Handle', character: '🍵' }, { title: 'Sake', character: '🍶' }, { title: 'Bottle with Popping Cork', character: '🍾' }, { title: 'Wine Glass', character: '🍷' }, { title: 'Cocktail Glass', character: '🍸' }, { title: 'Tropical Drink', character: '🍹' }, { title: 'Beer Mug', character: '🍺' }, { title: 'Clinking Beer Mugs', character: '🍻' }, { title: 'Clinking Glasses', character: '🥂' }, { title: 'Tumbler Glass', character: '🥃' }, { title: 'Cup with Straw', character: '🥤' }, { title: 'Bubble Tea', character: '🧋' }, { title: 'Beverage Box', character: '🧃' }, { title: 'Mate', character: '🧉' }, { title: 'Ice', character: '🧊' }, { title: 'Chopsticks', character: '🥢' }, { title: 'Fork and Knife with Plate', character: '🍽️' }, { title: 'Fork and Knife', character: '🍴' }, { title: 'Spoon', character: '🥄' },\r\n ]\r\n );\r\n }\r\n}\r\n","import { Plugin } from '@ckeditor/ckeditor5-core';\r\n\r\nexport default class EmojiActivity extends Plugin {\r\n /**\r\n * @inheritDoc\r\n */\r\n static get pluginName() {\r\n return 'EmojiActivity';\r\n }\r\n\r\n /**\r\n * @inheritDoc\r\n */\r\n init() {\r\n const editor = this.editor;\r\n const t = editor.t;\r\n\r\n editor.plugins.get( 'Emoji' ).addItems( '⚽ ' + t('Activity'),\r\n [\r\n { title: 'Person in Suit Levitating', character: '🕴️' }, { title: 'Person Climbing', character: '🧗' }, { title: 'Man Climbing', character: '🧗‍♂️' }, { title: 'Woman Climbing', character: '🧗‍♀️' }, { title: 'Person Fencing', character: '🤺' }, { title: 'Horse Racing', character: '🏇' }, { title: 'Skier', character: '⛷️' }, { title: 'Snowboarder', character: '🏂' }, { title: 'Person Golfing', character: '🏌️' }, { title: 'Man Golfing', character: '🏌️‍♂️' }, { title: 'Woman Golfing', character: '🏌️‍♀️' }, { title: 'Person Surfing', character: '🏄' }, { title: 'Man Surfing', character: '🏄‍♂️' }, { title: 'Woman Surfing', character: '🏄‍♀️' }, { title: 'Person Rowing Boat', character: '🚣' }, { title: 'Man Rowing Boat', character: '🚣‍♂️' }, { title: 'Woman Rowing Boat', character: '🚣‍♀️' }, { title: 'Person Swimming', character: '🏊' }, { title: 'Man Swimming', character: '🏊‍♂️' }, { title: 'Woman Swimming', character: '🏊‍♀️' }, { title: 'Person Bouncing Ball', character: '⛹️' }, { title: 'Man Bouncing Ball', character: '⛹️‍♂️' }, { title: 'Woman Bouncing Ball', character: '⛹️‍♀️' }, { title: 'Person Lifting Weights', character: '🏋️' }, { title: 'Man Lifting Weights', character: '🏋️‍♂️' }, { title: 'Woman Lifting Weights', character: '🏋️‍♀️' }, { title: 'Person Biking', character: '🚴' }, { title: 'Man Biking', character: '🚴‍♂️' }, { title: 'Woman Biking', character: '🚴‍♀️' }, { title: 'Person Mountain Biking', character: '🚵' }, { title: 'Man Mountain Biking', character: '🚵‍♂️' }, { title: 'Woman Mountain Biking', character: '🚵‍♀️' }, { title: 'Person Cartwheeling', character: '🤸' }, { title: 'Man Cartwheeling', character: '🤸‍♂️' }, { title: 'Woman Cartwheeling', character: '🤸‍♀️' }, { title: 'People Wrestling', character: '🤼' }, { title: 'Men Wrestling', character: '🤼‍♂️' }, { title: 'Women Wrestling', character: '🤼‍♀️' }, { title: 'Person Playing Water Polo', character: '🤽' }, { title: 'Man Playing Water Polo', character: '🤽‍♂️' }, { title: 'Woman Playing Water Polo', character: '🤽‍♀️' }, { title: 'Person Playing Handball', character: '🤾' }, { title: 'Man Playing Handball', character: '🤾‍♂️' }, { title: 'Woman Playing Handball', character: '🤾‍♀️' }, { title: 'Person Juggling', character: '🤹' }, { title: 'Man Juggling', character: '🤹‍♂️' }, { title: 'Woman Juggling', character: '🤹‍♀️' }, { title: 'Person in Lotus Position', character: '🧘' }, { title: 'Man in Lotus Position', character: '🧘‍♂️' }, { title: 'Woman in Lotus Position', character: '🧘‍♀️' }, { title: 'Circus Tent', character: '🎪' }, { title: 'Skateboard', character: '🛹' }, { title: 'Roller Skate', character: '🛼' }, { title: 'Canoe', character: '🛶' }, { title: 'Reminder Ribbon', character: '🎗️' }, { title: 'Admission Tickets', character: '🎟️' }, { title: 'Ticket', character: '🎫' }, { title: 'Military Medal', character: '🎖️' }, { title: 'Trophy', character: '🏆' }, { title: 'Sports Medal', character: '🏅' }, { title: '1st Place Medal', character: '🥇' }, { title: '2nd Place Medal', character: '🥈' }, { title: '3rd Place Medal', character: '🥉' }, { title: 'Soccer Ball', character: '⚽' }, { title: 'Baseball', character: '⚾' }, { title: 'Softball', character: '🥎' }, { title: 'Basketball', character: '🏀' }, { title: 'Volleyball', character: '🏐' }, { title: 'American Football', character: '🏈' }, { title: 'Rugby Football', character: '🏉' }, { title: 'Tennis', character: '🎾' }, { title: 'Flying Disc', character: '🥏' }, { title: 'Bowling', character: '🎳' }, { title: 'Cricket Game', character: '🏏' }, { title: 'Field Hockey', character: '🏑' }, { title: 'Ice Hockey', character: '🏒' }, { title: 'Lacrosse', character: '🥍' }, { title: 'Ping Pong', character: '🏓' }, { title: 'Badminton', character: '🏸' }, { title: 'Boxing Glove', character: '🥊' }, { title: 'Martial Arts Uniform', character: '🥋' }, { title: 'Goal Net', character: '🥅' }, { title: 'Flag in Hole', character: '⛳' }, { title: 'Ice Skate', character: '⛸️' }, { title: 'Fishing Pole', character: '🎣' }, { title: 'Running Shirt', character: '🎽' }, { title: 'Skis', character: '🎿' }, { title: 'Sled', character: '🛷' }, { title: 'Curling Stone', character: '🥌' }, { title: 'Direct Hit', character: '🎯' }, { title: 'Pool 8 Ball', character: '🎱' }, { title: 'Video Game', character: '🎮' }, { title: 'Slot Machine', character: '🎰' }, { title: 'Game Die', character: '🎲' }, { title: 'Puzzle Piece', character: '🧩' }, { title: 'Chess Pawn', character: '♟️' }, { title: 'Performing Arts', character: '🎭' }, { title: 'Artist Palette', character: '🎨' }, { title: 'Thread', character: '🧵' }, { title: 'Yarn', character: '🧶' }, { title: 'Musical Score', character: '🎼' }, { title: 'Microphone', character: '🎤' }, { title: 'Headphone', character: '🎧' }, { title: 'Saxophone', character: '🎷' }, { title: 'Accordion', character: '🪗' }, { title: 'Guitar', character: '🎸' }, { title: 'Musical Keyboard', character: '🎹' }, { title: 'Trumpet', character: '🎺' }, { title: 'Violin', character: '🎻' }, { title: 'Drum', character: '🥁' }, { title: 'Long Drum', character: '🪘' }, { title: 'Clapper Board', character: '🎬' }, { title: 'Bow and Arrow', character: '🏹' },\r\n ]\r\n )}\r\n}\r\n","import { Plugin } from '@ckeditor/ckeditor5-core';\r\n\r\nexport default class EmojiObjects extends Plugin {\r\n /**\r\n * @inheritDoc\r\n */\r\n static get pluginName() {\r\n return 'EmojiObjects';\r\n }\r\n\r\n /**\r\n * @inheritDoc\r\n */\r\n init() {\r\n const editor = this.editor;\r\n const t = editor.t;\r\n\r\n editor.plugins.get( 'Emoji' ).addItems( '💡 ' + t('Objects'),\r\n [\r\n { title: 'Love Letter', character: '💌' }, { title: 'Hole', character: '🕳️' }, { title: 'Bomb', character: '💣' }, { title: 'Person Taking Bath', character: '🛀' }, { title: 'Person in Bed', character: '🛌' }, { title: 'Kitchen Knife', character: '🔪' }, { title: 'Amphora', character: '🏺' }, { title: 'World Map', character: '🗺️' }, { title: 'Compass', character: '🧭' }, { title: 'Brick', character: '🧱' }, { title: 'Barber Pole', character: '💈' }, { title: 'Manual Wheelchair', character: '🦽' }, { title: 'Motorized Wheelchair', character: '🦼' }, { title: 'Oil Drum', character: '🛢️' }, { title: 'Bellhop Bell', character: '🛎️' }, { title: 'Luggage', character: '🧳' }, { title: 'Hourglass Done', character: '⌛' }, { title: 'Hourglass Not Done', character: '⏳' }, { title: 'Watch', character: '⌚' }, { title: 'Alarm Clock', character: '⏰' }, { title: 'Stopwatch', character: '⏱️' }, { title: 'Timer Clock', character: '⏲️' }, { title: 'Mantelpiece Clock', character: '🕰️' }, { title: 'Thermometer', character: '🌡️' }, { title: 'Umbrella on Ground', character: '⛱️' }, { title: 'Firecracker', character: '🧨' }, { title: 'Balloon', character: '🎈' }, { title: 'Party Popper', character: '🎉' }, { title: 'Confetti Ball', character: '🎊' }, { title: 'Japanese Dolls', character: '🎎' }, { title: 'Carp Streamer', character: '🎏' }, { title: 'Wind Chime', character: '🎐' }, { title: 'Red Envelope', character: '🧧' }, { title: 'Ribbon', character: '🎀' }, { title: 'Wrapped Gift', character: '🎁' }, { title: 'Diving Mask', character: '🤿' }, { title: 'Yo-Yo', character: '🪀' }, { title: 'Kite', character: '🪁' }, { title: 'Crystal Ball', character: '🔮' }, { title: 'Magic Wand', character: '🪄' }, { title: 'Nazar Amulet', character: '🧿' }, { title: 'Joystick', character: '🕹️' }, { title: 'Teddy Bear', character: '🧸' }, { title: 'Piñata', character: '🪅' }, { title: 'Nesting Dolls', character: '🪆' }, { title: 'Framed Picture', character: '🖼️' }, { title: 'Thread', character: '🧵' }, { title: 'Sewing Needle', character: '🪡' }, { title: 'Yarn', character: '🧶' }, { title: 'Knot', character: '🪢' }, { title: 'Shopping Bags', character: '🛍️' }, { title: 'Prayer Beads', character: '📿' }, { title: 'Gem Stone', character: '💎' }, { title: 'Postal Horn', character: '📯' }, { title: 'Studio Microphone', character: '🎙️' }, { title: 'Level Slider', character: '🎚️' }, { title: 'Control Knobs', character: '🎛️' }, { title: 'Radio', character: '📻' }, { title: 'Banjo', character: '🪕' }, { title: 'Mobile Phone', character: '📱' }, { title: 'Mobile Phone with Arrow', character: '📲' }, { title: 'Telephone', character: '☎️' }, { title: 'Telephone Receiver', character: '📞' }, { title: 'Pager', character: '📟' }, { title: 'Fax Machine', character: '📠' }, { title: 'Battery', character: '🔋' }, { title: 'Electric Plug', character: '🔌' }, { title: 'Laptop', character: '💻' }, { title: 'Desktop Computer', character: '🖥️' }, { title: 'Printer', character: '🖨️' }, { title: 'Keyboard', character: '⌨️' }, { title: 'Computer Mouse', character: '🖱️' }, { title: 'Trackball', character: '🖲️' }, { title: 'Computer Disk', character: '💽' }, { title: 'Floppy Disk', character: '💾' }, { title: 'Optical Disk', character: '💿' }, { title: 'DVD', character: '📀' }, { title: 'Abacus', character: '🧮' }, { title: 'Movie Camera', character: '🎥' }, { title: 'Film Frames', character: '🎞️' }, { title: 'Film Projector', character: '📽️' }, { title: 'Television', character: '📺' }, { title: 'Camera', character: '📷' }, { title: 'Camera with Flash', character: '📸' }, { title: 'Video Camera', character: '📹' }, { title: 'Videocassette', character: '📼' }, { title: 'Magnifying Glass Tilted Left', character: '🔍' }, { title: 'Magnifying Glass Tilted Right', character: '🔎' }, { title: 'Candle', character: '🕯️' }, { title: 'Light Bulb', character: '💡' }, { title: 'Flashlight', character: '🔦' }, { title: 'Red Paper Lantern', character: '🏮' }, { title: 'Diya Lamp', character: '🪔' }, { title: 'Notebook with Decorative Cover', character: '📔' }, { title: 'Closed Book', character: '📕' }, { title: 'Open Book', character: '📖' }, { title: 'Green Book', character: '📗' }, { title: 'Blue Book', character: '📘' }, { title: 'Orange Book', character: '📙' }, { title: 'Books', character: '📚' }, { title: 'Notebook', character: '📓' }, { title: 'Ledger', character: '📒' }, { title: 'Page with Curl', character: '📃' }, { title: 'Scroll', character: '📜' }, { title: 'Page Facing Up', character: '📄' }, { title: 'Newspaper', character: '📰' }, { title: 'Rolled-Up Newspaper', character: '🗞️' }, { title: 'Bookmark Tabs', character: '📑' }, { title: 'Bookmark', character: '🔖' }, { title: 'Label', character: '🏷️' }, { title: 'Money Bag', character: '💰' }, { title: 'Coin', character: '🪙' }, { title: 'Yen Banknote', character: '💴' }, { title: 'Dollar Banknote', character: '💵' }, { title: 'Euro Banknote', character: '💶' }, { title: 'Pound Banknote', character: '💷' }, { title: 'Money with Wings', character: '💸' }, { title: 'Credit Card', character: '💳' }, { title: 'Receipt', character: '🧾' }, { title: 'Envelope', character: '✉️' }, { title: 'E-Mail', character: '📧' }, { title: 'Incoming Envelope', character: '📨' }, { title: 'Envelope with Arrow', character: '📩' }, { title: 'Outbox Tray', character: '📤' }, { title: 'Inbox Tray', character: '📥' }, { title: 'Package', character: '📦' }, { title: 'Closed Mailbox with Raised Flag', character: '📫' }, { title: 'Closed Mailbox with Lowered Flag', character: '📪' }, { title: 'Open Mailbox with Raised Flag', character: '📬' }, { title: 'Open Mailbox with Lowered Flag', character: '📭' }, { title: 'Postbox', character: '📮' }, { title: 'Ballot Box with Ballot', character: '🗳️' }, { title: 'Pencil', character: '✏️' }, { title: 'Black Nib', character: '✒️' }, { title: 'Fountain Pen', character: '🖋️' }, { title: 'Pen', character: '🖊️' }, { title: 'Paintbrush', character: '🖌️' }, { title: 'Crayon', character: '🖍️' }, { title: 'Memo', character: '📝' }, { title: 'File Folder', character: '📁' }, { title: 'Open File Folder', character: '📂' }, { title: 'Card Index Dividers', character: '🗂️' }, { title: 'Calendar', character: '📅' }, { title: 'Tear-Off Calendar', character: '📆' }, { title: 'Spiral Notepad', character: '🗒️' }, { title: 'Spiral Calendar', character: '🗓️' }, { title: 'Card Index', character: '📇' }, { title: 'Chart Increasing', character: '📈' }, { title: 'Chart Decreasing', character: '📉' }, { title: 'Bar Chart', character: '📊' }, { title: 'Clipboard', character: '📋' }, { title: 'Pushpin', character: '📌' }, { title: 'Round Pushpin', character: '📍' }, { title: 'Paperclip', character: '📎' }, { title: 'Linked Paperclips', character: '🖇️' }, { title: 'Straight Ruler', character: '📏' }, { title: 'Triangular Ruler', character: '📐' }, { title: 'Scissors', character: '✂️' }, { title: 'Card File Box', character: '🗃️' }, { title: 'File Cabinet', character: '🗄️' }, { title: 'Wastebasket', character: '🗑️' }, { title: 'Locked', character: '🔒' }, { title: 'Unlocked', character: '🔓' }, { title: 'Locked with Pen', character: '🔏' }, { title: 'Locked with Key', character: '🔐' }, { title: 'Key', character: '🔑' }, { title: 'Old Key', character: '🗝️' }, { title: 'Hammer', character: '🔨' }, { title: 'Axe', character: '🪓' }, { title: 'Pick', character: '⛏️' }, { title: 'Hammer and Pick', character: '⚒️' }, { title: 'Hammer and Wrench', character: '🛠️' }, { title: 'Dagger', character: '🗡️' }, { title: 'Crossed Swords', character: '⚔️' }, { title: 'Pistol', character: '🔫' }, { title: 'Boomerang', character: '🪃' }, { title: 'Shield', character: '🛡️' }, { title: 'Carpentry Saw', character: '🪚' }, { title: 'Wrench', character: '🔧' }, { title: 'Screwdriver', character: '🪛' }, { title: 'Nut and Bolt', character: '🔩' }, { title: 'Gear', character: '⚙️' }, { title: 'Clamp', character: '🗜️' }, { title: 'Balance Scale', character: '⚖️' }, { title: 'White Cane', character: '🦯' }, { title: 'Link', character: '🔗' }, { title: 'Chains', character: '⛓️' }, { title: 'Hook', character: '🪝' }, { title: 'Toolbox', character: '🧰' }, { title: 'Magnet', character: '🧲' }, { title: 'Ladder', character: '🪜' }, { title: 'Alembic', character: '⚗️' }, { title: 'Test Tube', character: '🧪' }, { title: 'Petri Dish', character: '🧫' }, { title: 'DNA', character: '🧬' }, { title: 'Microscope', character: '🔬' }, { title: 'Telescope', character: '🔭' }, { title: 'Satellite Antenna', character: '📡' }, { title: 'Syringe', character: '💉' }, { title: 'Drop of Blood', character: '🩸' }, { title: 'Pill', character: '💊' }, { title: 'Adhesive Bandage', character: '🩹' }, { title: 'Stethoscope', character: '🩺' }, { title: 'Door', character: '🚪' }, { title: 'Mirror', character: '🪞' }, { title: 'Window', character: '🪟' }, { title: 'Bed', character: '🛏️' }, { title: 'Couch and Lamp', character: '🛋️' }, { title: 'Chair', character: '🪑' }, { title: 'Toilet', character: '🚽' }, { title: 'Plunger', character: '🪠' }, { title: 'Shower', character: '🚿' }, { title: 'Bathtub', character: '🛁' }, { title: 'Mouse Trap', character: '🪤' }, { title: 'Razor', character: '🪒' }, { title: 'Lotion Bottle', character: '🧴' }, { title: 'Safety Pin', character: '🧷' }, { title: 'Broom', character: '🧹' }, { title: 'Basket', character: '🧺' }, { title: 'Roll of Paper', character: '🧻' }, { title: 'Bucket', character: '🪣' }, { title: 'Soap', character: '🧼' }, { title: 'Toothbrush', character: '🪥' }, { title: 'Sponge', character: '🧽' }, { title: 'Fire Extinguisher', character: '🧯' }, { title: 'Shopping Cart', character: '🛒' }, { title: 'Cigarette', character: '🚬' }, { title: 'Coffin', character: '⚰️' }, { title: 'Headstone', character: '🪦' }, { title: 'Funeral Urn', character: '⚱️' }, { title: 'Moai', character: '🗿' }, { title: 'Placard', character: '🪧' }, { title: 'Potable Water', character: '🚰' },\r\n ]\r\n );\r\n }\r\n}\r\n","import { Plugin } from '@ckeditor/ckeditor5-core';\r\n\r\nexport default class EmojiSymbols extends Plugin {\r\n /**\r\n * @inheritDoc\r\n */\r\n static get pluginName() {\r\n return 'EmojiSymbols';\r\n }\r\n\r\n /**\r\n * @inheritDoc\r\n */\r\n init() {\r\n const editor = this.editor;\r\n const t = editor.t;\r\n\r\n editor.plugins.get( 'Emoji' ).addItems( '❤️ ' + t('Symbols'),\r\n [\r\n { title: 'Heart with Arrow', character: '💘' }, { title: 'Heart with Ribbon', character: '💝' }, { title: 'Sparkling Heart', character: '💖' }, { title: 'Growing Heart', character: '💗' }, { title: 'Beating Heart', character: '💓' }, { title: 'Revolving Hearts', character: '💞' }, { title: 'Two Hearts', character: '💕' }, { title: 'Heart Decoration', character: '💟' }, { title: 'Heart Exclamation', character: '❣️' }, { title: 'Broken Heart', character: '💔' }, { title: 'Red Heart', character: '❤️' }, { title: 'Orange Heart', character: '🧡' }, { title: 'Yellow Heart', character: '💛' }, { title: 'Green Heart', character: '💚' }, { title: 'Blue Heart', character: '💙' }, { title: 'Purple Heart', character: '💜' }, { title: 'Brown Heart', character: '🤎' }, { title: 'Black Heart', character: '🖤' }, { title: 'White Heart', character: '🤍' }, { title: 'Hundred Points', character: '💯' }, { title: 'Anger Symbol', character: '💢' }, { title: 'Speech Balloon', character: '💬' }, { title: 'Eye in Speech Bubble', character: '👁️‍🗨️' }, { title: 'Left Speech Bubble', character: '🗨️' }, { title: 'Right Anger Bubble', character: '🗯️' }, { title: 'Thought Balloon', character: '💭' }, { title: 'Zzz', character: '💤' }, { title: 'White Flower', character: '💮' }, { title: 'Hot Springs', character: '♨️' }, { title: 'Barber Pole', character: '💈' }, { title: 'Stop Sign', character: '🛑' }, { title: 'Twelve O’Clock', character: '🕛' }, { title: 'Twelve-Thirty', character: '🕧' }, { title: 'One O’Clock', character: '🕐' }, { title: 'One-Thirty', character: '🕜' }, { title: 'Two O’Clock', character: '🕑' }, { title: 'Two-Thirty', character: '🕝' }, { title: 'Three O’Clock', character: '🕒' }, { title: 'Three-Thirty', character: '🕞' }, { title: 'Four O’Clock', character: '🕓' }, { title: 'Four-Thirty', character: '🕟' }, { title: 'Five O’Clock', character: '🕔' }, { title: 'Five-Thirty', character: '🕠' }, { title: 'Six O’Clock', character: '🕕' }, { title: 'Six-Thirty', character: '🕡' }, { title: 'Seven O’Clock', character: '🕖' }, { title: 'Seven-Thirty', character: '🕢' }, { title: 'Eight O’Clock', character: '🕗' }, { title: 'Eight-Thirty', character: '🕣' }, { title: 'Nine O’Clock', character: '🕘' }, { title: 'Nine-Thirty', character: '🕤' }, { title: 'Ten O’Clock', character: '🕙' }, { title: 'Ten-Thirty', character: '🕥' }, { title: 'Eleven O’Clock', character: '🕚' }, { title: 'Eleven-Thirty', character: '🕦' }, { title: 'Cyclone', character: '🌀' }, { title: 'Spade Suit', character: '♠️' }, { title: 'Heart Suit', character: '♥️' }, { title: 'Diamond Suit', character: '♦️' }, { title: 'Club Suit', character: '♣️' }, { title: 'Joker', character: '🃏' }, { title: 'Mahjong Red Dragon', character: '🀄' }, { title: 'Flower Playing Cards', character: '🎴' }, { title: 'Muted Speaker', character: '🔇' }, { title: 'Speaker Low Volume', character: '🔈' }, { title: 'Speaker Medium Volume', character: '🔉' }, { title: 'Speaker High Volume', character: '🔊' }, { title: 'Loudspeaker', character: '📢' }, { title: 'Megaphone', character: '📣' }, { title: 'Postal Horn', character: '📯' }, { title: 'Bell', character: '🔔' }, { title: 'Bell with Slash', character: '🔕' }, { title: 'Musical Note', character: '🎵' }, { title: 'Musical Notes', character: '🎶' }, { title: 'Chart Increasing with Yen', character: '💹' }, { title: 'Elevator', character: '🛗' }, { title: 'ATM Sign', character: '🏧' }, { title: 'Litter in Bin Sign', character: '🚮' }, { title: 'Potable Water', character: '🚰' }, { title: 'Wheelchair Symbol', character: '♿' }, { title: 'Men’s Room', character: '🚹' }, { title: 'Women’s Room', character: '🚺' }, { title: 'Restroom', character: '🚻' }, { title: 'Baby Symbol', character: '🚼' }, { title: 'Water Closet', character: '🚾' }, { title: 'Warning', character: '⚠️' }, { title: 'Children Crossing', character: '🚸' }, { title: 'No Entry', character: '⛔' }, { title: 'Prohibited', character: '🚫' }, { title: 'No Bicycles', character: '🚳' }, { title: 'No Smoking', character: '🚭' }, { title: 'No Littering', character: '🚯' }, { title: 'Non-Potable Water', character: '🚱' }, { title: 'No Pedestrians', character: '🚷' }, { title: 'No Mobile Phones', character: '📵' }, { title: 'No One Under Eighteen', character: '🔞' }, { title: 'Radioactive', character: '☢️' }, { title: 'Biohazard', character: '☣️' }, { title: 'Up Arrow', character: '⬆️' }, { title: 'Up-Right Arrow', character: '↗️' }, { title: 'Right Arrow', character: '➡️' }, { title: 'Down-Right Arrow', character: '↘️' }, { title: 'Down Arrow', character: '⬇️' }, { title: 'Down-Left Arrow', character: '↙️' }, { title: 'Left Arrow', character: '⬅️' }, { title: 'Up-Left Arrow', character: '↖️' }, { title: 'Up-Down Arrow', character: '↕️' }, { title: 'Left-Right Arrow', character: '↔️' }, { title: 'Right Arrow Curving Left', character: '↩️' }, { title: 'Left Arrow Curving Right', character: '↪️' }, { title: 'Right Arrow Curving Up', character: '⤴️' }, { title: 'Right Arrow Curving Down', character: '⤵️' }, { title: 'Clockwise Vertical Arrows', character: '🔃' }, { title: 'Counterclockwise Arrows Button', character: '🔄' }, { title: 'Back Arrow', character: '🔙' }, { title: 'End Arrow', character: '🔚' }, { title: 'On! Arrow', character: '🔛' }, { title: 'Soon Arrow', character: '🔜' }, { title: 'Top Arrow', character: '🔝' }, { title: 'Place of Worship', character: '🛐' }, { title: 'Atom Symbol', character: '⚛️' }, { title: 'Om', character: '🕉️' }, { title: 'Star of David', character: '✡️' }, { title: 'Wheel of Dharma', character: '☸️' }, { title: 'Yin Yang', character: '☯️' }, { title: 'Latin Cross', character: '✝️' }, { title: 'Orthodox Cross', character: '☦️' }, { title: 'Star and Crescent', character: '☪️' }, { title: 'Peace Symbol', character: '☮️' }, { title: 'Menorah', character: '🕎' }, { title: 'Dotted Six-Pointed Star', character: '🔯' }, { title: 'Aries', character: '♈' }, { title: 'Taurus', character: '♉' }, { title: 'Gemini', character: '♊' }, { title: 'Cancer', character: '♋' }, { title: 'Leo', character: '♌' }, { title: 'Virgo', character: '♍' }, { title: 'Libra', character: '♎' }, { title: 'Scorpio', character: '♏' }, { title: 'Sagittarius', character: '♐' }, { title: 'Capricorn', character: '♑' }, { title: 'Aquarius', character: '♒' }, { title: 'Pisces', character: '♓' }, { title: 'Ophiuchus', character: '⛎' }, { title: 'Shuffle Tracks Button', character: '🔀' }, { title: 'Repeat Button', character: '🔁' }, { title: 'Repeat Single Button', character: '🔂' }, { title: 'Play Button', character: '▶️' }, { title: 'Fast-Forward Button', character: '⏩' }, { title: 'Next Track Button', character: '⏭️' }, { title: 'Play or Pause Button', character: '⏯️' }, { title: 'Reverse Button', character: '◀️' }, { title: 'Fast Reverse Button', character: '⏪' }, { title: 'Last Track Button', character: '⏮️' }, { title: 'Upwards Button', character: '🔼' }, { title: 'Fast Up Button', character: '⏫' }, { title: 'Downwards Button', character: '🔽' }, { title: 'Fast Down Button', character: '⏬' }, { title: 'Pause Button', character: '⏸️' }, { title: 'Stop Button', character: '⏹️' }, { title: 'Record Button', character: '⏺️' }, { title: 'Eject Button', character: '⏏️' }, { title: 'Cinema', character: '🎦' }, { title: 'Dim Button', character: '🔅' }, { title: 'Bright Button', character: '🔆' }, { title: 'Antenna Bars', character: '📶' }, { title: 'Vibration Mode', character: '📳' }, { title: 'Mobile Phone Off', character: '📴' }, { title: 'Female Sign', character: '♀️' }, { title: 'Male Sign', character: '♂️' }, { title: 'Multiply', character: '✖️' }, { title: 'Plus', character: '➕' }, { title: 'Minus', character: '➖' }, { title: 'Divide', character: '➗' }, { title: 'Infinity', character: '♾️' }, { title: 'Double Exclamation Mark', character: '‼️' }, { title: 'Exclamation Question Mark', character: '⁉️' }, { title: 'Question Mark', character: '❓' }, { title: 'White Question Mark', character: '❔' }, { title: 'White Exclamation Mark', character: '❕' }, { title: 'Exclamation Mark', character: '❗' }, { title: 'Wavy Dash', character: '〰️' }, { title: 'Currency Exchange', character: '💱' }, { title: 'Heavy Dollar Sign', character: '💲' }, { title: 'Medical Symbol', character: '⚕️' }, { title: 'Recycling Symbol', character: '♻️' }, { title: 'Fleur-de-lis', character: '⚜️' }, { title: 'Trident Emblem', character: '🔱' }, { title: 'Name Badge', character: '📛' }, { title: 'Japanese Symbol for Beginner', character: '🔰' }, { title: 'Hollow Red Circle', character: '⭕' }, { title: 'Check Mark Button', character: '✅' }, { title: 'Check Box with Check', character: '☑️' }, { title: 'Check Mark', character: '✔️' }, { title: 'Cross Mark', character: '❌' }, { title: 'Cross Mark Button', character: '❎' }, { title: 'Curly Loop', character: '➰' }, { title: 'Double Curly Loop', character: '➿' }, { title: 'Part Alternation Mark', character: '〽️' }, { title: 'Eight-Spoked Asterisk', character: '✳️' }, { title: 'Eight-Pointed Star', character: '✴️' }, { title: 'Sparkle', character: '❇️' }, { title: 'Copyright', character: '©️' }, { title: 'Registered', character: '®️' }, { title: 'Trade Mark', character: '™️' }, { title: 'Keycap Number Sign', character: '#️⃣' }, { title: 'Keycap Asterisk', character: '*️⃣' }, { title: 'Keycap Digit Zero', character: '0️⃣' }, { title: 'Keycap Digit One', character: '1️⃣' }, { title: 'Keycap Digit Two', character: '2️⃣' }, { title: 'Keycap Digit Three', character: '3️⃣' }, { title: 'Keycap Digit Four', character: '4️⃣' }, { title: 'Keycap Digit Five', character: '5️⃣' }, { title: 'Keycap Digit Six', character: '6️⃣' }, { title: 'Keycap Digit Seven', character: '7️⃣' }, { title: 'Keycap Digit Eight', character: '8️⃣' }, { title: 'Keycap Digit Nine', character: '9️⃣' }, { title: 'Keycap: 10', character: '🔟' }, { title: 'Input Latin Uppercase', character: '🔠' }, { title: 'Input Latin Lowercase', character: '🔡' }, { title: 'Input Numbers', character: '🔢' }, { title: 'Input Symbols', character: '🔣' }, { title: 'Input Latin Letters', character: '🔤' }, { title: 'A Button (Blood Type)', character: '🅰️' }, { title: 'AB Button (Blood Type)', character: '🆎' }, { title: 'B Button (Blood Type)', character: '🅱️' }, { title: 'CL Button', character: '🆑' }, { title: 'Cool Button', character: '🆒' }, { title: 'Free Button', character: '🆓' }, { title: 'Information', character: 'ℹ️' }, { title: 'ID Button', character: '🆔' }, { title: 'Circled M', character: 'Ⓜ️' }, { title: 'New Button', character: '🆕' }, { title: 'NG Button', character: '🆖' }, { title: 'O Button (Blood Type)', character: '🅾️' }, { title: 'OK Button', character: '🆗' }, { title: 'P Button', character: '🅿️' }, { title: 'SOS Button', character: '🆘' }, { title: 'Up! Button', character: '🆙' }, { title: 'Vs Button', character: '🆚' }, { title: 'Japanese “Here” Button', character: '🈁' }, { title: 'Japanese “Service Charge” Button', character: '🈂️' }, { title: 'Japanese “Monthly Amount” Button', character: '🈷️' }, { title: 'Japanese “Not Free of Charge” Button', character: '🈶' }, { title: 'Japanese “Reserved” Button', character: '🈯' }, { title: 'Japanese “Bargain” Button', character: '🉐' }, { title: 'Japanese “Discount” Button', character: '🈹' }, { title: 'Japanese “Free of Charge” Button', character: '🈚' }, { title: 'Japanese “Prohibited” Button', character: '🈲' }, { title: 'Japanese “Acceptable” Button', character: '🉑' }, { title: 'Japanese “Application” Button', character: '🈸' }, { title: 'Japanese “Passing Grade” Button', character: '🈴' }, { title: 'Japanese “Vacancy” Button', character: '🈳' }, { title: 'Japanese “Congratulations” Button', character: '㊗️' }, { title: 'Japanese “Secret” Button', character: '㊙️' }, { title: 'Japanese “Open for Business” Button', character: '🈺' }, { title: 'Japanese “No Vacancy” Button', character: '🈵' }, { title: 'Red Circle', character: '🔴' }, { title: 'Orange Circle', character: '🟠' }, { title: 'Yellow Circle', character: '🟡' }, { title: 'Green Circle', character: '🟢' }, { title: 'Blue Circle', character: '🔵' }, { title: 'Purple Circle', character: '🟣' }, { title: 'Brown Circle', character: '🟤' }, { title: 'Black Circle', character: '⚫' }, { title: 'White Circle', character: '⚪' }, { title: 'Red Square', character: '🟥' }, { title: 'Orange Square', character: '🟧' }, { title: 'Yellow Square', character: '🟨' }, { title: 'Green Square', character: '🟩' }, { title: 'Blue Square', character: '🟦' }, { title: 'Purple Square', character: '🟪' }, { title: 'Brown Square', character: '🟫' }, { title: 'Black Large Square', character: '⬛' }, { title: 'White Large Square', character: '⬜' }, { title: 'Black Medium Square', character: '◼️' }, { title: 'White Medium Square', character: '◻️' }, { title: 'Black Medium-Small Square', character: '◾' }, { title: 'White Medium-Small Square', character: '◽' }, { title: 'Black Small Square', character: '▪️' }, { title: 'White Small Square', character: '▫️' }, { title: 'Large Orange Diamond', character: '🔶' }, { title: 'Large Blue Diamond', character: '🔷' }, { title: 'Small Orange Diamond', character: '🔸' }, { title: 'Small Blue Diamond', character: '🔹' }, { title: 'Red Triangle Pointed Up', character: '🔺' }, { title: 'Red Triangle Pointed Down', character: '🔻' }, { title: 'Diamond with a Dot', character: '💠' }, { title: 'Radio Button', character: '🔘' }, { title: 'White Square Button', character: '🔳' }, { title: 'Black Square Button', character: '🔲' },\r\n ]\r\n );\r\n }\r\n}\r\n","import { Plugin } from '@ckeditor/ckeditor5-core';\r\n\r\nexport default class EmojiFlags extends Plugin {\r\n /**\r\n * @inheritDoc\r\n */\r\n static get pluginName() {\r\n return 'EmojiFlags';\r\n }\r\n\r\n /**\r\n * @inheritDoc\r\n */\r\n init() {\r\n const editor = this.editor;\r\n const t = editor.t;\r\n\r\n editor.plugins.get( 'Emoji' ).addItems( '🎌 ' + t('Flags'),\r\n [\r\n { title: 'Chequered Flag', character: '🏁' }, { title: 'Triangular Flag', character: '🚩' }, { title: 'Crossed Flags', character: '🎌' }, { title: 'Black Flag', character: '🏴' }, { title: 'White Flag', character: '🏳️' }, { title: 'Rainbow Flag', character: '🏳️‍🌈' }, { title: 'Transgender Flag', character: '🏳️‍⚧️' }, { title: 'Pirate Flag', character: '🏴‍☠️' }, { title: 'Flag: Ascension Island', character: '🇦🇨' }, { title: 'Flag: Andorra', character: '🇦🇩' }, { title: 'Flag: United Arab Emirates', character: '🇦🇪' }, { title: 'Flag: Afghanistan', character: '🇦🇫' }, { title: 'Flag: Antigua & Barbuda', character: '🇦🇬' }, { title: 'Flag: Anguilla', character: '🇦🇮' }, { title: 'Flag: Albania', character: '🇦🇱' }, { title: 'Flag: Armenia', character: '🇦🇲' }, { title: 'Flag: Angola', character: '🇦🇴' }, { title: 'Flag: Antarctica', character: '🇦🇶' }, { title: 'Flag: Argentina', character: '🇦🇷' }, { title: 'Flag: American Samoa', character: '🇦🇸' }, { title: 'Flag: Austria', character: '🇦🇹' }, { title: 'Flag: Australia', character: '🇦🇺' }, { title: 'Flag: Aruba', character: '🇦🇼' }, { title: 'Flag: Åland Islands', character: '🇦🇽' }, { title: 'Flag: Azerbaijan', character: '🇦🇿' }, { title: 'Flag: Bosnia & Herzegovina', character: '🇧🇦' }, { title: 'Flag: Barbados', character: '🇧🇧' }, { title: 'Flag: Bangladesh', character: '🇧🇩' }, { title: 'Flag: Belgium', character: '🇧🇪' }, { title: 'Flag: Burkina Faso', character: '🇧🇫' }, { title: 'Flag: Bulgaria', character: '🇧🇬' }, { title: 'Flag: Bahrain', character: '🇧🇭' }, { title: 'Flag: Burundi', character: '🇧🇮' }, { title: 'Flag: Benin', character: '🇧🇯' }, { title: 'Flag: St. Barthélemy', character: '🇧🇱' }, { title: 'Flag: Bermuda', character: '🇧🇲' }, { title: 'Flag: Brunei', character: '🇧🇳' }, { title: 'Flag: Bolivia', character: '🇧🇴' }, { title: 'Flag: Caribbean Netherlands', character: '🇧🇶' }, { title: 'Flag: Brazil', character: '🇧🇷' }, { title: 'Flag: Bahamas', character: '🇧🇸' }, { title: 'Flag: Bhutan', character: '🇧🇹' }, { title: 'Flag: Bouvet Island', character: '🇧🇻' }, { title: 'Flag: Botswana', character: '🇧🇼' }, { title: 'Flag: Belarus', character: '🇧🇾' }, { title: 'Flag: Belize', character: '🇧🇿' }, { title: 'Flag: Canada', character: '🇨🇦' }, { title: 'Flag: Cocos (Keeling) Islands', character: '🇨🇨' }, { title: 'Flag: Congo - Kinshasa', character: '🇨🇩' }, { title: 'Flag: Central African Republic', character: '🇨🇫' }, { title: 'Flag: Congo - Brazzaville', character: '🇨🇬' }, { title: 'Flag: Switzerland', character: '🇨🇭' }, { title: 'Flag: Côte d’Ivoire', character: '🇨🇮' }, { title: 'Flag: Cook Islands', character: '🇨🇰' }, { title: 'Flag: Chile', character: '🇨🇱' }, { title: 'Flag: Cameroon', character: '🇨🇲' }, { title: 'Flag: China', character: '🇨🇳' }, { title: 'Flag: Colombia', character: '🇨🇴' }, { title: 'Flag: Clipperton Island', character: '🇨🇵' }, { title: 'Flag: Costa Rica', character: '🇨🇷' }, { title: 'Flag: Cuba', character: '🇨🇺' }, { title: 'Flag: Cape Verde', character: '🇨🇻' }, { title: 'Flag: Curaçao', character: '🇨🇼' }, { title: 'Flag: Christmas Island', character: '🇨🇽' }, { title: 'Flag: Cyprus', character: '🇨🇾' }, { title: 'Flag: Czechia', character: '🇨🇿' }, { title: 'Flag: Germany', character: '🇩🇪' }, { title: 'Flag: Diego Garcia', character: '🇩🇬' }, { title: 'Flag: Djibouti', character: '🇩🇯' }, { title: 'Flag: Denmark', character: '🇩🇰' }, { title: 'Flag: Dominica', character: '🇩🇲' }, { title: 'Flag: Dominican Republic', character: '🇩🇴' }, { title: 'Flag: Algeria', character: '🇩🇿' }, { title: 'Flag: Ceuta & Melilla', character: '🇪🇦' }, { title: 'Flag: Ecuador', character: '🇪🇨' }, { title: 'Flag: Estonia', character: '🇪🇪' }, { title: 'Flag: Egypt', character: '🇪🇬' }, { title: 'Flag: Western Sahara', character: '🇪🇭' }, { title: 'Flag: Eritrea', character: '🇪🇷' }, { title: 'Flag: Spain', character: '🇪🇸' }, { title: 'Flag: Ethiopia', character: '🇪🇹' }, { title: 'Flag: European Union', character: '🇪🇺' }, { title: 'Flag: Finland', character: '🇫🇮' }, { title: 'Flag: Fiji', character: '🇫🇯' }, { title: 'Flag: Falkland Islands', character: '🇫🇰' }, { title: 'Flag: Micronesia', character: '🇫🇲' }, { title: 'Flag: Faroe Islands', character: '🇫🇴' }, { title: 'Flag: France', character: '🇫🇷' }, { title: 'Flag: Gabon', character: '🇬🇦' }, { title: 'Flag: United Kingdom', character: '🇬🇧' }, { title: 'Flag: Grenada', character: '🇬🇩' }, { title: 'Flag: Georgia', character: '🇬🇪' }, { title: 'Flag: French Guiana', character: '🇬🇫' }, { title: 'Flag: Guernsey', character: '🇬🇬' }, { title: 'Flag: Ghana', character: '🇬🇭' }, { title: 'Flag: Gibraltar', character: '🇬🇮' }, { title: 'Flag: Greenland', character: '🇬🇱' }, { title: 'Flag: Gambia', character: '🇬🇲' }, { title: 'Flag: Guinea', character: '🇬🇳' }, { title: 'Flag: Guadeloupe', character: '🇬🇵' }, { title: 'Flag: Equatorial Guinea', character: '🇬🇶' }, { title: 'Flag: Greece', character: '🇬🇷' }, { title: 'Flag: South Georgia & South Sandwich Islands', character: '🇬🇸' }, { title: 'Flag: Guatemala', character: '🇬🇹' }, { title: 'Flag: Guam', character: '🇬🇺' }, { title: 'Flag: Guinea-Bissau', character: '🇬🇼' }, { title: 'Flag: Guyana', character: '🇬🇾' }, { title: 'Flag: Hong Kong SAR China', character: '🇭🇰' }, { title: 'Flag: Heard & McDonald Islands', character: '🇭🇲' }, { title: 'Flag: Honduras', character: '🇭🇳' }, { title: 'Flag: Croatia', character: '🇭🇷' }, { title: 'Flag: Haiti', character: '🇭🇹' }, { title: 'Flag: Hungary', character: '🇭🇺' }, { title: 'Flag: Canary Islands', character: '🇮🇨' }, { title: 'Flag: Indonesia', character: '🇮🇩' }, { title: 'Flag: Ireland', character: '🇮🇪' }, { title: 'Flag: Israel', character: '🇮🇱' }, { title: 'Flag: Isle of Man', character: '🇮🇲' }, { title: 'Flag: India', character: '🇮🇳' }, { title: 'Flag: British Indian Ocean Territory', character: '🇮🇴' }, { title: 'Flag: Iraq', character: '🇮🇶' }, { title: 'Flag: Iran', character: '🇮🇷' }, { title: 'Flag: Iceland', character: '🇮🇸' }, { title: 'Flag: Italy', character: '🇮🇹' }, { title: 'Flag: Jersey', character: '🇯🇪' }, { title: 'Flag: Jamaica', character: '🇯🇲' }, { title: 'Flag: Jordan', character: '🇯🇴' }, { title: 'Flag: Japan', character: '🇯🇵' }, { title: 'Flag: Kenya', character: '🇰🇪' }, { title: 'Flag: Kyrgyzstan', character: '🇰🇬' }, { title: 'Flag: Cambodia', character: '🇰🇭' }, { title: 'Flag: Kiribati', character: '🇰🇮' }, { title: 'Flag: Comoros', character: '🇰🇲' }, { title: 'Flag: St. Kitts & Nevis', character: '🇰🇳' }, { title: 'Flag: North Korea', character: '🇰🇵' }, { title: 'Flag: South Korea', character: '🇰🇷' }, { title: 'Flag: Kuwait', character: '🇰🇼' }, { title: 'Flag: Cayman Islands', character: '🇰🇾' }, { title: 'Flag: Kazakhstan', character: '🇰🇿' }, { title: 'Flag: Laos', character: '🇱🇦' }, { title: 'Flag: Lebanon', character: '🇱🇧' }, { title: 'Flag: St. Lucia', character: '🇱🇨' }, { title: 'Flag: Liechtenstein', character: '🇱🇮' }, { title: 'Flag: Sri Lanka', character: '🇱🇰' }, { title: 'Flag: Liberia', character: '🇱🇷' }, { title: 'Flag: Lesotho', character: '🇱🇸' }, { title: 'Flag: Lithuania', character: '🇱🇹' }, { title: 'Flag: Luxembourg', character: '🇱🇺' }, { title: 'Flag: Latvia', character: '🇱🇻' }, { title: 'Flag: Libya', character: '🇱🇾' }, { title: 'Flag: Morocco', character: '🇲🇦' }, { title: 'Flag: Monaco', character: '🇲🇨' }, { title: 'Flag: Moldova', character: '🇲🇩' }, { title: 'Flag: Montenegro', character: '🇲🇪' }, { title: 'Flag: St. Martin', character: '🇲🇫' }, { title: 'Flag: Madagascar', character: '🇲🇬' }, { title: 'Flag: Marshall Islands', character: '🇲🇭' }, { title: 'Flag: North Macedonia', character: '🇲🇰' }, { title: 'Flag: Mali', character: '🇲🇱' }, { title: 'Flag: Myanmar (Burma)', character: '🇲🇲' }, { title: 'Flag: Mongolia', character: '🇲🇳' }, { title: 'Flag: Macao Sar China', character: '🇲🇴' }, { title: 'Flag: Northern Mariana Islands', character: '🇲🇵' }, { title: 'Flag: Martinique', character: '🇲🇶' }, { title: 'Flag: Mauritania', character: '🇲🇷' }, { title: 'Flag: Montserrat', character: '🇲🇸' }, { title: 'Flag: Malta', character: '🇲🇹' }, { title: 'Flag: Mauritius', character: '🇲🇺' }, { title: 'Flag: Maldives', character: '🇲🇻' }, { title: 'Flag: Malawi', character: '🇲🇼' }, { title: 'Flag: Mexico', character: '🇲🇽' }, { title: 'Flag: Malaysia', character: '🇲🇾' }, { title: 'Flag: Mozambique', character: '🇲🇿' }, { title: 'Flag: Namibia', character: '🇳🇦' }, { title: 'Flag: New Caledonia', character: '🇳🇨' }, { title: 'Flag: Niger', character: '🇳🇪' }, { title: 'Flag: Norfolk Island', character: '🇳🇫' }, { title: 'Flag: Nigeria', character: '🇳🇬' }, { title: 'Flag: Nicaragua', character: '🇳🇮' }, { title: 'Flag: Netherlands', character: '🇳🇱' }, { title: 'Flag: Norway', character: '🇳🇴' }, { title: 'Flag: Nepal', character: '🇳🇵' }, { title: 'Flag: Nauru', character: '🇳🇷' }, { title: 'Flag: Niue', character: '🇳🇺' }, { title: 'Flag: New Zealand', character: '🇳🇿' }, { title: 'Flag: Oman', character: '🇴🇲' }, { title: 'Flag: Panama', character: '🇵🇦' }, { title: 'Flag: Peru', character: '🇵🇪' }, { title: 'Flag: French Polynesia', character: '🇵🇫' }, { title: 'Flag: Papua New Guinea', character: '🇵🇬' }, { title: 'Flag: Philippines', character: '🇵🇭' }, { title: 'Flag: Pakistan', character: '🇵🇰' }, { title: 'Flag: Poland', character: '🇵🇱' }, { title: 'Flag: St. Pierre & Miquelon', character: '🇵🇲' }, { title: 'Flag: Pitcairn Islands', character: '🇵🇳' }, { title: 'Flag: Puerto Rico', character: '🇵🇷' }, { title: 'Flag: Palestinian Territories', character: '🇵🇸' }, { title: 'Flag: Portugal', character: '🇵🇹' }, { title: 'Flag: Palau', character: '🇵🇼' }, { title: 'Flag: Paraguay', character: '🇵🇾' }, { title: 'Flag: Qatar', character: '🇶🇦' }, { title: 'Flag: Réunion', character: '🇷🇪' }, { title: 'Flag: Romania', character: '🇷🇴' }, { title: 'Flag: Serbia', character: '🇷🇸' }, { title: 'Flag: Russia', character: '🇷🇺' }, { title: 'Flag: Rwanda', character: '🇷🇼' }, { title: 'Flag: Saudi Arabia', character: '🇸🇦' }, { title: 'Flag: Solomon Islands', character: '🇸🇧' }, { title: 'Flag: Seychelles', character: '🇸🇨' }, { title: 'Flag: Sudan', character: '🇸🇩' }, { title: 'Flag: Sweden', character: '🇸🇪' }, { title: 'Flag: Singapore', character: '🇸🇬' }, { title: 'Flag: St. Helena', character: '🇸🇭' }, { title: 'Flag: Slovenia', character: '🇸🇮' }, { title: 'Flag: Svalbard & Jan Mayen', character: '🇸🇯' }, { title: 'Flag: Slovakia', character: '🇸🇰' }, { title: 'Flag: Sierra Leone', character: '🇸🇱' }, { title: 'Flag: San Marino', character: '🇸🇲' }, { title: 'Flag: Senegal', character: '🇸🇳' }, { title: 'Flag: Somalia', character: '🇸🇴' }, { title: 'Flag: Suriname', character: '🇸🇷' }, { title: 'Flag: South Sudan', character: '🇸🇸' }, { title: 'Flag: São Tomé & Príncipe', character: '🇸🇹' }, { title: 'Flag: El Salvador', character: '🇸🇻' }, { title: 'Flag: Sint Maarten', character: '🇸🇽' }, { title: 'Flag: Syria', character: '🇸🇾' }, { title: 'Flag: Eswatini', character: '🇸🇿' }, { title: 'Flag: Tristan Da Cunha', character: '🇹🇦' }, { title: 'Flag: Turks & Caicos Islands', character: '🇹🇨' }, { title: 'Flag: Chad', character: '🇹🇩' }, { title: 'Flag: French Southern Territories', character: '🇹🇫' }, { title: 'Flag: Togo', character: '🇹🇬' }, { title: 'Flag: Thailand', character: '🇹🇭' }, { title: 'Flag: Tajikistan', character: '🇹🇯' }, { title: 'Flag: Tokelau', character: '🇹🇰' }, { title: 'Flag: Timor-Leste', character: '🇹🇱' }, { title: 'Flag: Turkmenistan', character: '🇹🇲' }, { title: 'Flag: Tunisia', character: '🇹🇳' }, { title: 'Flag: Tonga', character: '🇹🇴' }, { title: 'Flag: Turkey', character: '🇹🇷' }, { title: 'Flag: Trinidad & Tobago', character: '🇹🇹' }, { title: 'Flag: Tuvalu', character: '🇹🇻' }, { title: 'Flag: Taiwan', character: '🇹🇼' }, { title: 'Flag: Tanzania', character: '🇹🇿' }, { title: 'Flag: Ukraine', character: '🇺🇦' }, { title: 'Flag: Uganda', character: '🇺🇬' }, { title: 'Flag: U.S. Outlying Islands', character: '🇺🇲' }, { title: 'Flag: United Nations', character: '🇺🇳' }, { title: 'Flag: United States', character: '🇺🇸' }, { title: 'Flag: Uruguay', character: '🇺🇾' }, { title: 'Flag: Uzbekistan', character: '🇺🇿' }, { title: 'Flag: Vatican City', character: '🇻🇦' }, { title: 'Flag: St. Vincent & Grenadines', character: '🇻🇨' }, { title: 'Flag: Venezuela', character: '🇻🇪' }, { title: 'Flag: British Virgin Islands', character: '🇻🇬' }, { title: 'Flag: U.S. Virgin Islands', character: '🇻🇮' }, { title: 'Flag: Vietnam', character: '🇻🇳' }, { title: 'Flag: Vanuatu', character: '🇻🇺' }, { title: 'Flag: Wallis & Futuna', character: '🇼🇫' }, { title: 'Flag: Samoa', character: '🇼🇸' }, { title: 'Flag: Kosovo', character: '🇽🇰' }, { title: 'Flag: Yemen', character: '🇾🇪' }, { title: 'Flag: Mayotte', character: '🇾🇹' }, { title: 'Flag: South Africa', character: '🇿🇦' }, { title: 'Flag: Zambia', character: '🇿🇲' }, { title: 'Flag: Zimbabwe', character: '🇿🇼' }, { title: 'Flag: England', character: '🏴󠁧󠁢󠁥󠁮󠁧󠁿' }, { title: 'Flag: Scotland', character: '🏴󠁧󠁢󠁳󠁣󠁴󠁿' }, { title: 'Flag: Wales', character: '🏴󠁧󠁢󠁷󠁬󠁳󠁿' }, { title: 'Flag for Texas (US-TX)', character: '🏴󠁵󠁳󠁴󠁸󠁿' },\r\n ]\r\n );\r\n }\r\n}\r\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","var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","// https://github.com/HarryStevens/d3-regression#readme Version 1.3.10. Copyright 2022 Harry Stevens.\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = global || self, factory(global.d3 = {}));\n}(this, (function (exports) { 'use strict';\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArrayLimit(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\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n\n // Adapted from vega-statistics by Jeffrey Heer\n // License: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/LICENSE\n // Source: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/packages/vega-statistics/src/regression/points.js\n function points(data, x, y, sort) {\n data = data.filter(function (d, i) {\n var u = x(d, i),\n v = y(d, i);\n return u != null && isFinite(u) && v != null && isFinite(v);\n });\n\n if (sort) {\n data.sort(function (a, b) {\n return x(a) - x(b);\n });\n }\n\n var n = data.length,\n X = new Float64Array(n),\n Y = new Float64Array(n); // extract values, calculate means\n\n var ux = 0,\n uy = 0,\n xv,\n yv,\n d;\n\n for (var i = 0; i < n;) {\n d = data[i];\n X[i] = xv = +x(d, i, data);\n Y[i] = yv = +y(d, i, data);\n ++i;\n ux += (xv - ux) / i;\n uy += (yv - uy) / i;\n } // mean center the data\n\n\n for (var _i = 0; _i < n; ++_i) {\n X[_i] -= ux;\n Y[_i] -= uy;\n }\n\n return [X, Y, ux, uy];\n }\n function visitPoints(data, x, y, cb) {\n var iterations = 0;\n\n for (var i = 0, n = data.length; i < n; i++) {\n var d = data[i],\n dx = +x(d, i, data),\n dy = +y(d, i, data);\n\n if (dx != null && isFinite(dx) && dy != null && isFinite(dy)) {\n cb(dx, dy, iterations++);\n }\n }\n }\n\n // return the coefficient of determination, or R squared.\n\n function determination(data, x, y, uY, predict) {\n var SSE = 0,\n SST = 0;\n visitPoints(data, x, y, function (dx, dy) {\n var sse = dy - predict(dx),\n sst = dy - uY;\n SSE += sse * sse;\n SST += sst * sst;\n });\n return 1 - SSE / SST;\n }\n\n // Returns the angle of a line in degrees.\n function angle(line) {\n return Math.atan2(line[1][1] - line[0][1], line[1][0] - line[0][0]) * 180 / Math.PI;\n } // Returns the midpoint of a line.\n\n function midpoint(line) {\n return [(line[0][0] + line[1][0]) / 2, (line[0][1] + line[1][1]) / 2];\n }\n\n // returns a smooth line.\n\n function interpose(xmin, xmax, predict) {\n var l = Math.log(xmax - xmin) * Math.LOG10E + 1 | 0;\n var precision = 1 * Math.pow(10, -l / 2 - 1),\n maxIter = 1e4;\n var points = [px(xmin), px(xmax)],\n iter = 0;\n\n while (find(points) && iter < maxIter) {\n }\n\n return points;\n\n function px(x) {\n return [x, predict(x)];\n }\n\n function find(points) {\n iter++;\n var n = points.length;\n var found = false;\n\n for (var i = 0; i < n - 1; i++) {\n var p0 = points[i],\n p1 = points[i + 1],\n m = midpoint([p0, p1]),\n mp = px(m[0]),\n a0 = angle([p0, m]),\n a1 = angle([p0, mp]),\n a = Math.abs(a0 - a1);\n\n if (a > precision) {\n points.splice(i + 1, 0, mp);\n found = true;\n }\n }\n\n return found;\n }\n }\n\n // Ordinary Least Squares from vega-statistics by Jeffrey Heer\n // License: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/LICENSE\n // Source: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/packages/vega-statistics/src/regression/ols.js\n function ols(uX, uY, uXY, uX2) {\n var delta = uX2 - uX * uX,\n slope = Math.abs(delta) < 1e-24 ? 0 : (uXY - uX * uY) / delta,\n intercept = uY - slope * uX;\n return [intercept, slope];\n }\n\n function exponential () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n\n function exponential(data) {\n var n = 0,\n Y = 0,\n YL = 0,\n XY = 0,\n XYL = 0,\n X2Y = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n var ly = Math.log(dy),\n xy = dx * dy;\n ++n;\n Y += (dy - Y) / n;\n XY += (xy - XY) / n;\n X2Y += (dx * xy - X2Y) / n;\n YL += (dy * ly - YL) / n;\n XYL += (xy * ly - XYL) / n;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n\n var _ols = ols(XY / Y, YL / Y, XYL / Y, X2Y / Y),\n _ols2 = _slicedToArray(_ols, 2),\n a = _ols2[0],\n b = _ols2[1];\n\n a = Math.exp(a);\n\n var fn = function fn(x) {\n return a * Math.exp(b * x);\n },\n out = interpose(xmin, xmax, fn);\n\n out.a = a;\n out.b = b;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n\n exponential.domain = function (arr) {\n return arguments.length ? (domain = arr, exponential) : domain;\n };\n\n exponential.x = function (fn) {\n return arguments.length ? (x = fn, exponential) : x;\n };\n\n exponential.y = function (fn) {\n return arguments.length ? (y = fn, exponential) : y;\n };\n\n return exponential;\n }\n\n function linear () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n\n function linear(data) {\n var n = 0,\n X = 0,\n // sum of x\n Y = 0,\n // sum of y\n XY = 0,\n // sum of x * y\n X2 = 0,\n // sum of x * x\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n ++n;\n X += (dx - X) / n;\n Y += (dy - Y) / n;\n XY += (dx * dy - XY) / n;\n X2 += (dx * dx - X2) / n;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n\n var _ols = ols(X, Y, XY, X2),\n _ols2 = _slicedToArray(_ols, 2),\n intercept = _ols2[0],\n slope = _ols2[1],\n fn = function fn(x) {\n return slope * x + intercept;\n },\n out = [[xmin, fn(xmin)], [xmax, fn(xmax)]];\n\n out.a = slope;\n out.b = intercept;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n\n linear.domain = function (arr) {\n return arguments.length ? (domain = arr, linear) : domain;\n };\n\n linear.x = function (fn) {\n return arguments.length ? (x = fn, linear) : x;\n };\n\n linear.y = function (fn) {\n return arguments.length ? (y = fn, linear) : y;\n };\n\n return linear;\n }\n\n // Returns the medium value of an array of numbers.\n function median(arr) {\n arr.sort(function (a, b) {\n return a - b;\n });\n var i = arr.length / 2;\n return i % 1 === 0 ? (arr[i - 1] + arr[i]) / 2 : arr[Math.floor(i)];\n }\n\n var maxiters = 2,\n epsilon = 1e-12;\n function loess () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n bandwidth = .3;\n\n function loess(data) {\n var _points = points(data, x, y, true),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3],\n n = xv.length,\n bw = Math.max(2, ~~(bandwidth * n)),\n yhat = new Float64Array(n),\n residuals = new Float64Array(n),\n robustWeights = new Float64Array(n).fill(1);\n\n for (var iter = -1; ++iter <= maxiters;) {\n var interval = [0, bw - 1];\n\n for (var i = 0; i < n; ++i) {\n var dx = xv[i],\n i0 = interval[0],\n i1 = interval[1],\n edge = dx - xv[i0] > xv[i1] - dx ? i0 : i1;\n var W = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n denom = 1 / Math.abs(xv[edge] - dx || 1); // Avoid singularity\n\n for (var k = i0; k <= i1; ++k) {\n var xk = xv[k],\n yk = yv[k],\n w = tricube(Math.abs(dx - xk) * denom) * robustWeights[k],\n xkw = xk * w;\n W += w;\n X += xkw;\n Y += yk * w;\n XY += yk * xkw;\n X2 += xk * xkw;\n } // Linear regression fit\n\n\n var _ols = ols(X / W, Y / W, XY / W, X2 / W),\n _ols2 = _slicedToArray(_ols, 2),\n a = _ols2[0],\n b = _ols2[1];\n\n yhat[i] = a + b * dx;\n residuals[i] = Math.abs(yv[i] - yhat[i]);\n updateInterval(xv, i + 1, interval);\n }\n\n if (iter === maxiters) {\n break;\n }\n\n var medianResidual = median(residuals);\n if (Math.abs(medianResidual) < epsilon) break;\n\n for (var _i = 0, arg, _w; _i < n; ++_i) {\n arg = residuals[_i] / (6 * medianResidual); // Default to epsilon (rather than zero) for large deviations\n // Keeping weights tiny but non-zero prevents singularites\n\n robustWeights[_i] = arg >= 1 ? epsilon : (_w = 1 - arg * arg) * _w;\n }\n }\n\n return output(xv, yhat, ux, uy);\n }\n\n loess.bandwidth = function (bw) {\n return arguments.length ? (bandwidth = bw, loess) : bandwidth;\n };\n\n loess.x = function (fn) {\n return arguments.length ? (x = fn, loess) : x;\n };\n\n loess.y = function (fn) {\n return arguments.length ? (y = fn, loess) : y;\n };\n\n return loess;\n } // Weighting kernel for local regression\n\n function tricube(x) {\n return (x = 1 - x * x * x) * x * x;\n } // Advance sliding window interval of nearest neighbors\n\n\n function updateInterval(xv, i, interval) {\n var val = xv[i],\n left = interval[0],\n right = interval[1] + 1;\n if (right >= xv.length) return; // Step right if distance to new right edge is <= distance to old left edge\n // Step when distance is equal to ensure movement over duplicate x values\n\n while (i > left && xv[right] - val <= val - xv[left]) {\n interval[0] = ++left;\n interval[1] = right;\n ++right;\n }\n } // Generate smoothed output points\n // Average points with repeated x values\n\n\n function output(xv, yhat, ux, uy) {\n var n = xv.length,\n out = [];\n var i = 0,\n cnt = 0,\n prev = [],\n v;\n\n for (; i < n; ++i) {\n v = xv[i] + ux;\n\n if (prev[0] === v) {\n // Average output values via online update\n prev[1] += (yhat[i] - prev[1]) / ++cnt;\n } else {\n // Add new output point\n cnt = 0;\n prev[1] += uy;\n prev = [v, yhat[i]];\n out.push(prev);\n }\n }\n\n prev[1] += uy;\n return out;\n }\n\n function logarithmic () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n base = Math.E,\n domain;\n\n function logarithmic(data) {\n var n = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity,\n lb = Math.log(base);\n visitPoints(data, x, y, function (dx, dy) {\n var lx = Math.log(dx) / lb;\n ++n;\n X += (lx - X) / n;\n Y += (dy - Y) / n;\n XY += (lx * dy - XY) / n;\n X2 += (lx * lx - X2) / n;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n\n var _ols = ols(X, Y, XY, X2),\n _ols2 = _slicedToArray(_ols, 2),\n intercept = _ols2[0],\n slope = _ols2[1],\n fn = function fn(x) {\n return slope * Math.log(x) / lb + intercept;\n },\n out = interpose(xmin, xmax, fn);\n\n out.a = slope;\n out.b = intercept;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n\n logarithmic.domain = function (arr) {\n return arguments.length ? (domain = arr, logarithmic) : domain;\n };\n\n logarithmic.x = function (fn) {\n return arguments.length ? (x = fn, logarithmic) : x;\n };\n\n logarithmic.y = function (fn) {\n return arguments.length ? (y = fn, logarithmic) : y;\n };\n\n logarithmic.base = function (n) {\n return arguments.length ? (base = n, logarithmic) : base;\n };\n\n return logarithmic;\n }\n\n function quad () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n\n function quadratic(data) {\n var _points = points(data, x, y),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3],\n n = xv.length;\n\n var X2 = 0,\n X3 = 0,\n X4 = 0,\n XY = 0,\n X2Y = 0,\n i,\n dx,\n dy,\n x2;\n\n for (i = 0; i < n;) {\n dx = xv[i];\n dy = yv[i++];\n x2 = dx * dx;\n X2 += (x2 - X2) / i;\n X3 += (x2 * dx - X3) / i;\n X4 += (x2 * x2 - X4) / i;\n XY += (dx * dy - XY) / i;\n X2Y += (x2 * dy - X2Y) / i;\n }\n\n var Y = 0,\n n0 = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n n0++;\n Y += (dy - Y) / n0;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n\n var X2X2 = X4 - X2 * X2,\n d = X2 * X2X2 - X3 * X3,\n a = (X2Y * X2 - XY * X3) / d,\n b = (XY * X2X2 - X2Y * X3) / d,\n c = -a * X2,\n fn = function fn(x) {\n x = x - ux;\n return a * x * x + b * x + c + uy;\n };\n\n var out = interpose(xmin, xmax, fn);\n out.a = a;\n out.b = b - 2 * a * ux;\n out.c = c - b * ux + a * ux * ux + uy;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n\n quadratic.domain = function (arr) {\n return arguments.length ? (domain = arr, quadratic) : domain;\n };\n\n quadratic.x = function (fn) {\n return arguments.length ? (x = fn, quadratic) : x;\n };\n\n quadratic.y = function (fn) {\n return arguments.length ? (y = fn, quadratic) : y;\n };\n\n return quadratic;\n }\n\n // Source: https://github.com/Tom-Alexander/regression-js/blob/master/src/regression.js#L246\n // License: https://github.com/Tom-Alexander/regression-js/blob/master/LICENSE\n // ...with ideas from vega-statistics by Jeffrey Heer\n // Source: https://github.com/vega/vega/blob/f21cb8792b4e0cbe2b1a3fd44b0f5db370dbaadb/packages/vega-statistics/src/regression/poly.js\n // License: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/LICENSE\n\n function polynomial () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n order = 3,\n domain;\n\n function polynomial(data) {\n // Use more efficient methods for lower orders\n if (order === 1) {\n var o = linear().x(x).y(y).domain(domain)(data);\n o.coefficients = [o.b, o.a];\n delete o.a;\n delete o.b;\n return o;\n }\n\n if (order === 2) {\n var _o = quad().x(x).y(y).domain(domain)(data);\n\n _o.coefficients = [_o.c, _o.b, _o.a];\n delete _o.a;\n delete _o.b;\n delete _o.c;\n return _o;\n }\n\n var _points = points(data, x, y),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3],\n n = xv.length,\n lhs = [],\n rhs = [],\n k = order + 1;\n\n var Y = 0,\n n0 = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n ++n0;\n Y += (dy - Y) / n0;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n var i, j, l, v, c;\n\n for (i = 0; i < k; ++i) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i) * yv[l];\n }\n\n lhs.push(v);\n c = new Float64Array(k);\n\n for (j = 0; j < k; ++j) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i + j);\n }\n\n c[j] = v;\n }\n\n rhs.push(c);\n }\n\n rhs.push(lhs);\n\n var coef = gaussianElimination(rhs),\n fn = function fn(x) {\n x -= ux;\n var y = uy + coef[0] + coef[1] * x + coef[2] * x * x;\n\n for (i = 3; i < k; ++i) {\n y += coef[i] * Math.pow(x, i);\n }\n\n return y;\n },\n out = interpose(xmin, xmax, fn);\n\n out.coefficients = uncenter(k, coef, -ux, uy);\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n\n polynomial.domain = function (arr) {\n return arguments.length ? (domain = arr, polynomial) : domain;\n };\n\n polynomial.x = function (fn) {\n return arguments.length ? (x = fn, polynomial) : x;\n };\n\n polynomial.y = function (fn) {\n return arguments.length ? (y = fn, polynomial) : y;\n };\n\n polynomial.order = function (n) {\n return arguments.length ? (order = n, polynomial) : order;\n };\n\n return polynomial;\n }\n\n function uncenter(k, a, x, y) {\n var z = Array(k);\n var i, j, v, c; // initialize to zero\n\n for (i = 0; i < k; ++i) {\n z[i] = 0;\n } // polynomial expansion\n\n\n for (i = k - 1; i >= 0; --i) {\n v = a[i];\n c = 1;\n z[i] += v;\n\n for (j = 1; j <= i; ++j) {\n c *= (i + 1 - j) / j; // binomial coefficent\n\n z[i - j] += v * Math.pow(x, j) * c;\n }\n } // bias term\n\n\n z[0] += y;\n return z;\n } // Given an array for a two-dimensional matrix and the polynomial order,\n // solve A * x = b using Gaussian elimination.\n\n\n function gaussianElimination(matrix) {\n var n = matrix.length - 1,\n coef = [];\n var i, j, k, r, t;\n\n for (i = 0; i < n; ++i) {\n r = i; // max row\n\n for (j = i + 1; j < n; ++j) {\n if (Math.abs(matrix[i][j]) > Math.abs(matrix[i][r])) {\n r = j;\n }\n }\n\n for (k = i; k < n + 1; ++k) {\n t = matrix[k][i];\n matrix[k][i] = matrix[k][r];\n matrix[k][r] = t;\n }\n\n for (j = i + 1; j < n; ++j) {\n for (k = n; k >= i; k--) {\n matrix[k][j] -= matrix[k][i] * matrix[i][j] / matrix[i][i];\n }\n }\n }\n\n for (j = n - 1; j >= 0; --j) {\n t = 0;\n\n for (k = j + 1; k < n; ++k) {\n t += matrix[k][j] * coef[k];\n }\n\n coef[j] = (matrix[n][j] - t) / matrix[j][j];\n }\n\n return coef;\n }\n\n function power () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n\n function power(data) {\n var n = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n YS = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n var lx = Math.log(dx),\n ly = Math.log(dy);\n ++n;\n X += (lx - X) / n;\n Y += (ly - Y) / n;\n XY += (lx * ly - XY) / n;\n X2 += (lx * lx - X2) / n;\n YS += (dy - YS) / n;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n\n var _ols = ols(X, Y, XY, X2),\n _ols2 = _slicedToArray(_ols, 2),\n a = _ols2[0],\n b = _ols2[1];\n\n a = Math.exp(a);\n\n var fn = function fn(x) {\n return a * Math.pow(x, b);\n },\n out = interpose(xmin, xmax, fn);\n\n out.a = a;\n out.b = b;\n out.predict = fn;\n out.rSquared = determination(data, x, y, YS, fn);\n return out;\n }\n\n power.domain = function (arr) {\n return arguments.length ? (domain = arr, power) : domain;\n };\n\n power.x = function (fn) {\n return arguments.length ? (x = fn, power) : x;\n };\n\n power.y = function (fn) {\n return arguments.length ? (y = fn, power) : y;\n };\n\n return power;\n }\n\n exports.regressionExp = exponential;\n exports.regressionLinear = linear;\n exports.regressionLoess = loess;\n exports.regressionLog = logarithmic;\n exports.regressionPoly = polynomial;\n exports.regressionPow = power;\n exports.regressionQuad = quad;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n this.padding = options.padding !== false\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n if (this.padding === false) {\n return false;\n }\n\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n if (this.padding === false) {\n return buffer;\n }\n\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.attributeNames = exports.elementNames = void 0;\nexports.elementNames = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\",\n].map(function (val) { return [val.toLowerCase(), val]; }));\nexports.attributeNames = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\",\n].map(function (val) { return [val.toLowerCase(), val]; }));\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.render = void 0;\n/*\n * Module dependencies\n */\nvar ElementType = __importStar(require(\"domelementtype\"));\nvar entities_1 = require(\"entities\");\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nvar foreignNames_js_1 = require(\"./foreignNames.js\");\nvar unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \""\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n var encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? entities_1.encodeXML\n : entities_1.escapeAttribute;\n return Object.keys(attributes)\n .map(function (key) {\n var _a, _b;\n var value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = foreignNames_js_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return \"\".concat(key, \"=\\\"\").concat(encode(value), \"\\\"\");\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nvar singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nfunction render(node, options) {\n if (options === void 0) { options = {}; }\n var nodes = \"length\" in node ? node : [node];\n var output = \"\";\n for (var i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexports.render = render;\nexports.default = render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nvar foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nvar foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = foreignNames_js_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: false });\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: \"foreign\" });\n }\n var tag = \"<\".concat(elem.name);\n var attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += \" \".concat(attribs);\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += \"</\".concat(elem.name, \">\");\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return \"<\".concat(elem.data, \">\");\n}\nfunction renderText(elem, opts) {\n var _a;\n var data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? (0, entities_1.encodeXML)(data)\n : (0, entities_1.escapeText)(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return \"<![CDATA[\".concat(elem.children[0].data, \"]]>\");\n}\nfunction renderComment(elem) {\n return \"<!--\".concat(elem.data, \"-->\");\n}\n",null,null,null,null,null,null,null,null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0;\n/** Types of elements found in htmlparser2's DOM */\nvar ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType = exports.ElementType || (exports.ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nfunction isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\nexports.isTag = isTag;\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexports.Root = ElementType.Root;\n/** Type for Text */\nexports.Text = ElementType.Text;\n/** Type for <? ... ?> */\nexports.Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexports.Comment = ElementType.Comment;\n/** Type for <script> tags */\nexports.Script = ElementType.Script;\n/** Type for <style> tags */\nexports.Style = ElementType.Style;\n/** Type for Any tag */\nexports.Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexports.CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexports.Doctype = ElementType.Doctype;\n","\"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.DomHandler = void 0;\nvar domelementtype_1 = require(\"domelementtype\");\nvar node_js_1 = require(\"./node.js\");\n__exportStar(require(\"./node.js\"), exports);\n// Default options\nvar defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nvar DomHandler = /** @class */ (function () {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n function DomHandler(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new node_js_1.Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n DomHandler.prototype.onparserinit = function (parser) {\n this.parser = parser;\n };\n // Resets the handler back to starting state\n DomHandler.prototype.onreset = function () {\n this.dom = [];\n this.root = new node_js_1.Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n };\n // Signals the handler that parsing is done\n DomHandler.prototype.onend = function () {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n };\n DomHandler.prototype.onerror = function (error) {\n this.handleCallback(error);\n };\n DomHandler.prototype.onclosetag = function () {\n this.lastNode = null;\n var elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n };\n DomHandler.prototype.onopentag = function (name, attribs) {\n var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : undefined;\n var element = new node_js_1.Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n };\n DomHandler.prototype.ontext = function (data) {\n var lastNode = this.lastNode;\n if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n var node = new node_js_1.Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n };\n DomHandler.prototype.oncomment = function (data) {\n if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n var node = new node_js_1.Comment(data);\n this.addNode(node);\n this.lastNode = node;\n };\n DomHandler.prototype.oncommentend = function () {\n this.lastNode = null;\n };\n DomHandler.prototype.oncdatastart = function () {\n var text = new node_js_1.Text(\"\");\n var node = new node_js_1.CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n };\n DomHandler.prototype.oncdataend = function () {\n this.lastNode = null;\n };\n DomHandler.prototype.onprocessinginstruction = function (name, data) {\n var node = new node_js_1.ProcessingInstruction(name, data);\n this.addNode(node);\n };\n DomHandler.prototype.handleCallback = function (error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n };\n DomHandler.prototype.addNode = function (node) {\n var parent = this.tagStack[this.tagStack.length - 1];\n var previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n };\n return DomHandler;\n}());\nexports.DomHandler = DomHandler;\nexports.default = DomHandler;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.CDATA = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0;\nvar domelementtype_1 = require(\"domelementtype\");\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nvar Node = /** @class */ (function () {\n function Node() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n Object.defineProperty(Node.prototype, \"parentNode\", {\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.parent;\n },\n set: function (parent) {\n this.parent = parent;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"previousSibling\", {\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.prev;\n },\n set: function (prev) {\n this.prev = prev;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"nextSibling\", {\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.next;\n },\n set: function (next) {\n this.next = next;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n Node.prototype.cloneNode = function (recursive) {\n if (recursive === void 0) { recursive = false; }\n return cloneNode(this, recursive);\n };\n return Node;\n}());\nexports.Node = Node;\n/**\n * A node that contains some data.\n */\nvar DataNode = /** @class */ (function (_super) {\n __extends(DataNode, _super);\n /**\n * @param data The content of the data node\n */\n function DataNode(data) {\n var _this = _super.call(this) || this;\n _this.data = data;\n return _this;\n }\n Object.defineProperty(DataNode.prototype, \"nodeValue\", {\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.data;\n },\n set: function (data) {\n this.data = data;\n },\n enumerable: false,\n configurable: true\n });\n return DataNode;\n}(Node));\nexports.DataNode = DataNode;\n/**\n * Text within the document.\n */\nvar Text = /** @class */ (function (_super) {\n __extends(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.Text;\n return _this;\n }\n Object.defineProperty(Text.prototype, \"nodeType\", {\n get: function () {\n return 3;\n },\n enumerable: false,\n configurable: true\n });\n return Text;\n}(DataNode));\nexports.Text = Text;\n/**\n * Comments within the document.\n */\nvar Comment = /** @class */ (function (_super) {\n __extends(Comment, _super);\n function Comment() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.Comment;\n return _this;\n }\n Object.defineProperty(Comment.prototype, \"nodeType\", {\n get: function () {\n return 8;\n },\n enumerable: false,\n configurable: true\n });\n return Comment;\n}(DataNode));\nexports.Comment = Comment;\n/**\n * Processing instructions, including doc types.\n */\nvar ProcessingInstruction = /** @class */ (function (_super) {\n __extends(ProcessingInstruction, _super);\n function ProcessingInstruction(name, data) {\n var _this = _super.call(this, data) || this;\n _this.name = name;\n _this.type = domelementtype_1.ElementType.Directive;\n return _this;\n }\n Object.defineProperty(ProcessingInstruction.prototype, \"nodeType\", {\n get: function () {\n return 1;\n },\n enumerable: false,\n configurable: true\n });\n return ProcessingInstruction;\n}(DataNode));\nexports.ProcessingInstruction = ProcessingInstruction;\n/**\n * A `Node` that can have children.\n */\nvar NodeWithChildren = /** @class */ (function (_super) {\n __extends(NodeWithChildren, _super);\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n function NodeWithChildren(children) {\n var _this = _super.call(this) || this;\n _this.children = children;\n return _this;\n }\n Object.defineProperty(NodeWithChildren.prototype, \"firstChild\", {\n // Aliases\n /** First child of the node. */\n get: function () {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeWithChildren.prototype, \"lastChild\", {\n /** Last child of the node. */\n get: function () {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeWithChildren.prototype, \"childNodes\", {\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.children;\n },\n set: function (children) {\n this.children = children;\n },\n enumerable: false,\n configurable: true\n });\n return NodeWithChildren;\n}(Node));\nexports.NodeWithChildren = NodeWithChildren;\nvar CDATA = /** @class */ (function (_super) {\n __extends(CDATA, _super);\n function CDATA() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.CDATA;\n return _this;\n }\n Object.defineProperty(CDATA.prototype, \"nodeType\", {\n get: function () {\n return 4;\n },\n enumerable: false,\n configurable: true\n });\n return CDATA;\n}(NodeWithChildren));\nexports.CDATA = CDATA;\n/**\n * The root node of the document.\n */\nvar Document = /** @class */ (function (_super) {\n __extends(Document, _super);\n function Document() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.Root;\n return _this;\n }\n Object.defineProperty(Document.prototype, \"nodeType\", {\n get: function () {\n return 9;\n },\n enumerable: false,\n configurable: true\n });\n return Document;\n}(NodeWithChildren));\nexports.Document = Document;\n/**\n * An element within the DOM.\n */\nvar Element = /** @class */ (function (_super) {\n __extends(Element, _super);\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n function Element(name, attribs, children, type) {\n if (children === void 0) { children = []; }\n if (type === void 0) { type = name === \"script\"\n ? domelementtype_1.ElementType.Script\n : name === \"style\"\n ? domelementtype_1.ElementType.Style\n : domelementtype_1.ElementType.Tag; }\n var _this = _super.call(this, children) || this;\n _this.name = name;\n _this.attribs = attribs;\n _this.type = type;\n return _this;\n }\n Object.defineProperty(Element.prototype, \"nodeType\", {\n get: function () {\n return 1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"tagName\", {\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.name;\n },\n set: function (name) {\n this.name = name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"attributes\", {\n get: function () {\n var _this = this;\n return Object.keys(this.attribs).map(function (name) {\n var _a, _b;\n return ({\n name: name,\n value: _this.attribs[name],\n namespace: (_a = _this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = _this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n },\n enumerable: false,\n configurable: true\n });\n return Element;\n}(NodeWithChildren));\nexports.Element = Element;\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nfunction isTag(node) {\n return (0, domelementtype_1.isTag)(node);\n}\nexports.isTag = isTag;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nfunction isCDATA(node) {\n return node.type === domelementtype_1.ElementType.CDATA;\n}\nexports.isCDATA = isCDATA;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nfunction isText(node) {\n return node.type === domelementtype_1.ElementType.Text;\n}\nexports.isText = isText;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nfunction isComment(node) {\n return node.type === domelementtype_1.ElementType.Comment;\n}\nexports.isComment = isComment;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDirective(node) {\n return node.type === domelementtype_1.ElementType.Directive;\n}\nexports.isDirective = isDirective;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDocument(node) {\n return node.type === domelementtype_1.ElementType.Root;\n}\nexports.isDocument = isDocument;\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nfunction hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\nexports.hasChildren = hasChildren;\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nfunction cloneNode(node, recursive) {\n if (recursive === void 0) { recursive = false; }\n var result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_1 = new Element(node.name, __assign({}, node.attribs), children);\n children.forEach(function (child) { return (child.parent = clone_1); });\n if (node.namespace != null) {\n clone_1.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone_1[\"x-attribsNamespace\"] = __assign({}, node[\"x-attribsNamespace\"]);\n }\n if (node[\"x-attribsPrefix\"]) {\n clone_1[\"x-attribsPrefix\"] = __assign({}, node[\"x-attribsPrefix\"]);\n }\n result = clone_1;\n }\n else if (isCDATA(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_2 = new CDATA(children);\n children.forEach(function (child) { return (child.parent = clone_2); });\n result = clone_2;\n }\n else if (isDocument(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_3 = new Document(children);\n children.forEach(function (child) { return (child.parent = clone_3); });\n if (node[\"x-mode\"]) {\n clone_3[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone_3;\n }\n else if (isDirective(node)) {\n var instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(\"Not implemented yet: \".concat(node.type));\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nexports.cloneNode = cloneNode;\nfunction cloneChildren(childs) {\n var children = childs.map(function (child) { return cloneNode(child, true); });\n for (var i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n",null,null,null,null,null,null,null,null,"var BufferReader = require('./lib/buffer-reader')\n\nvar XIPH_LACING = 1\nvar EBML_LACING = 3\nvar FIXED_SIZE_LACING = 2\n\nmodule.exports = function (buffer) {\n var block = {}\n var reader = new BufferReader(buffer)\n\n block.trackNumber = reader.nextUIntV()\n block.timecode = reader.nextInt16BE()\n\n var flags = reader.nextUInt8()\n\n block.invisible = !!(flags & 0x8)\n\n // only valid for SimpleBlock\n block.keyframe = !!(flags & 0x80)\n block.discardable = !!(flags & 0x1)\n\n var lacing = (flags & 0x6) >> 1\n\n block.frames = readLacedData(reader, lacing)\n\n return block\n}\n\nfunction readLacedData (reader, lacing) {\n if (!lacing) return [reader.nextBuffer()]\n\n var i, frameSize\n var frames = []\n var framesNum = reader.nextUInt8() + 1 // number of frames\n\n if (lacing === FIXED_SIZE_LACING) {\n // remaining data should be divisible by the number of frames\n if (reader.length % framesNum !== 0) throw new Error('Fixed-Size Lacing Error')\n\n frameSize = reader.length / framesNum\n for (i = 0; i < framesNum; i++) {\n frames.push(reader.nextBuffer(frameSize))\n }\n return frames\n }\n\n var frameSizes = []\n\n if (lacing === XIPH_LACING) {\n for (i = 0; i < framesNum - 1; i++) {\n var val\n frameSize = 0\n do {\n val = reader.nextUInt8()\n frameSize += val\n } while (val === 0xff)\n frameSizes.push(frameSize)\n }\n } else if (lacing === EBML_LACING) {\n // first frame\n frameSize = reader.nextUIntV()\n frameSizes.push(frameSize)\n\n // middle frames\n for (i = 1; i < framesNum - 1; i++) {\n frameSize += reader.nextIntV()\n frameSizes.push(frameSize)\n }\n }\n\n for (i = 0; i < framesNum - 1; i++) {\n frames.push(reader.nextBuffer(frameSizes[i]))\n }\n\n // last frame (remaining buffer)\n frames.push(reader.nextBuffer())\n\n return frames\n}\n","var vint = require('./vint')\n\nfunction BufferReader (buffer) {\n this.buffer = buffer\n this.offset = 0\n}\n\n// a super limited subset of the node buffer API\nBufferReader.prototype.nextInt16BE = function () {\n var value = this.buffer.readInt16BE(this.offset)\n this.offset += 2\n return value\n}\n\nBufferReader.prototype.nextUInt8 = function () {\n var value = this.buffer.readUInt8(this.offset)\n this.offset += 1\n return value\n}\n\n// EBML variable sized integers\nBufferReader.prototype.nextUIntV = function () {\n var v = vint(this.buffer, this.offset)\n this.offset += v.length\n return v.value\n}\n\nBufferReader.prototype.nextIntV = function () {\n var v = vint(this.buffer, this.offset, true)\n this.offset += v.length\n return v.value\n}\n\n// buffer slice\nBufferReader.prototype.nextBuffer = function (length) {\n var buffer = length\n ? this.buffer.slice(this.offset, this.offset + length)\n : this.buffer.slice(this.offset)\n this.offset += length || this.length\n return buffer\n}\n\n// remaining bytes to read\nObject.defineProperty(BufferReader.prototype, 'length', {\n get: function () { return this.buffer.length - this.offset }\n})\n\nmodule.exports = BufferReader\n","// https://github.com/themasch/node-ebml/blob/master/lib/ebml/tools.js\nmodule.exports = function (buffer, start, signed) {\n start = start || 0\n for (var length = 1; length <= 8; length++) {\n if (buffer[start] >= Math.pow(2, 8 - length)) {\n break\n }\n }\n if (length > 8) {\n throw new Error('Unrepresentable length: ' + length + ' ' +\n buffer.toString('hex', start, start + length))\n }\n if (start + length > buffer.length) {\n return null\n }\n var i\n var value = buffer[start] & (1 << (8 - length)) - 1\n for (i = 1; i < length; i++) {\n if (i === 7) {\n if (value >= Math.pow(2, 53 - 8) && buffer[start + 7] > 0) {\n return {\n length: length,\n value: -1\n }\n }\n }\n value *= Math.pow(2, 8)\n value += buffer[start + i]\n }\n if (signed) {\n value -= Math.pow(2, length * 7 - 1) - 1\n }\n return {\n length: length,\n value: value\n }\n}\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) +\n ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC JPoint Infinity>';\n return '<EC JPoint x: ' + this.x.toString(16, 2) +\n ' y: ' + this.y.toString(16, 2) +\n ' z: ' + this.z.toString(16, 2) + '>';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly, bitLength) {\n var byteLength;\n if (BN.isBN(msg) || typeof msg === 'number') {\n msg = new BN(msg, 16);\n byteLength = msg.byteLength();\n } else if (typeof msg === 'object') {\n // BN assumes an array-like input and asserts length\n byteLength = msg.length;\n msg = new BN(msg, 16);\n } else {\n // BN converts the value to string\n var str = msg.toString();\n // HEX encoding\n byteLength = (str.length + 1) >>> 1;\n msg = new BN(str, 16);\n }\n // Allow overriding\n if (typeof bitLength !== 'number') {\n bitLength = byteLength * 8;\n }\n var delta = bitLength - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n if (typeof msg !== 'string' && typeof msg !== 'number' && !BN.isBN(msg)) {\n assert(typeof msg === 'object' && msg && typeof msg.length === 'number',\n 'Expected message to be an array-like, a hex string, or a BN instance');\n assert((msg.length >>> 0) === msg.length); // non-negative 32-bit integer\n for (var i = 0; i < msg.length; i++) assert((msg[i] & 255) === msg[i]);\n }\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(msg, false, options.msgBitLength);\n\n // Would fail further checks, but let's make the error message clear\n assert(!msg.isNeg(), 'Can not sign a negative message');\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Recheck nonce to be bijective to msg\n assert((new BN(nonce)).eq(msg), 'Can not sign message');\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc, options) {\n if (!options)\n options = {};\n\n msg = this._truncateToN(msg, false, options.msgBitLength);\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature, options) {\n return this.ec.verify(msg, signature, this, undefined, options);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n if(buf[p.place] === 0x00) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {\n return false;\n }\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array<Byte>} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array<Byte>} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array<Bytes>|Object} sig -\n* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes\n* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array<Bytes>} [sig.Rencoded] - R point encoded\n* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size');\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n var i;\n for (i = 0; i < naf.length; i += 1) {\n naf[i] = 0;\n }\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.fmin = global.fmin || {})));\n}(this, function (exports) { 'use strict';\n\n /** finds the zeros of a function, given two starting points (which must\n * have opposite signs */\n function bisect(f, a, b, parameters) {\n parameters = parameters || {};\n var maxIterations = parameters.maxIterations || 100,\n tolerance = parameters.tolerance || 1e-10,\n fA = f(a),\n fB = f(b),\n delta = b - a;\n\n if (fA * fB > 0) {\n throw \"Initial bisect points must have opposite signs\";\n }\n\n if (fA === 0) return a;\n if (fB === 0) return b;\n\n for (var i = 0; i < maxIterations; ++i) {\n delta /= 2;\n var mid = a + delta,\n fMid = f(mid);\n\n if (fMid * fA >= 0) {\n a = mid;\n }\n\n if ((Math.abs(delta) < tolerance) || (fMid === 0)) {\n return mid;\n }\n }\n return a + delta;\n }\n\n // need some basic operations on vectors, rather than adding a dependency,\n // just define here\n function zeros(x) { var r = new Array(x); for (var i = 0; i < x; ++i) { r[i] = 0; } return r; }\n function zerosM(x,y) { return zeros(x).map(function() { return zeros(y); }); }\n\n function dot(a, b) {\n var ret = 0;\n for (var i = 0; i < a.length; ++i) {\n ret += a[i] * b[i];\n }\n return ret;\n }\n\n function norm2(a) {\n return Math.sqrt(dot(a, a));\n }\n\n function scale(ret, value, c) {\n for (var i = 0; i < value.length; ++i) {\n ret[i] = value[i] * c;\n }\n }\n\n function weightedSum(ret, w1, v1, w2, v2) {\n for (var j = 0; j < ret.length; ++j) {\n ret[j] = w1 * v1[j] + w2 * v2[j];\n }\n }\n\n /** minimizes a function using the downhill simplex method */\n function nelderMead(f, x0, parameters) {\n parameters = parameters || {};\n\n var maxIterations = parameters.maxIterations || x0.length * 200,\n nonZeroDelta = parameters.nonZeroDelta || 1.05,\n zeroDelta = parameters.zeroDelta || 0.001,\n minErrorDelta = parameters.minErrorDelta || 1e-6,\n minTolerance = parameters.minErrorDelta || 1e-5,\n rho = (parameters.rho !== undefined) ? parameters.rho : 1,\n chi = (parameters.chi !== undefined) ? parameters.chi : 2,\n psi = (parameters.psi !== undefined) ? parameters.psi : -0.5,\n sigma = (parameters.sigma !== undefined) ? parameters.sigma : 0.5,\n maxDiff;\n\n // initialize simplex.\n var N = x0.length,\n simplex = new Array(N + 1);\n simplex[0] = x0;\n simplex[0].fx = f(x0);\n simplex[0].id = 0;\n for (var i = 0; i < N; ++i) {\n var point = x0.slice();\n point[i] = point[i] ? point[i] * nonZeroDelta : zeroDelta;\n simplex[i+1] = point;\n simplex[i+1].fx = f(point);\n simplex[i+1].id = i+1;\n }\n\n function updateSimplex(value) {\n for (var i = 0; i < value.length; i++) {\n simplex[N][i] = value[i];\n }\n simplex[N].fx = value.fx;\n }\n\n var sortOrder = function(a, b) { return a.fx - b.fx; };\n\n var centroid = x0.slice(),\n reflected = x0.slice(),\n contracted = x0.slice(),\n expanded = x0.slice();\n\n for (var iteration = 0; iteration < maxIterations; ++iteration) {\n simplex.sort(sortOrder);\n\n if (parameters.history) {\n // copy the simplex (since later iterations will mutate) and\n // sort it to have a consistent order between iterations\n var sortedSimplex = simplex.map(function (x) {\n var state = x.slice();\n state.fx = x.fx;\n state.id = x.id;\n return state;\n });\n sortedSimplex.sort(function(a,b) { return a.id - b.id; });\n\n parameters.history.push({x: simplex[0].slice(),\n fx: simplex[0].fx,\n simplex: sortedSimplex});\n }\n\n maxDiff = 0;\n for (i = 0; i < N; ++i) {\n maxDiff = Math.max(maxDiff, Math.abs(simplex[0][i] - simplex[1][i]));\n }\n\n if ((Math.abs(simplex[0].fx - simplex[N].fx) < minErrorDelta) &&\n (maxDiff < minTolerance)) {\n break;\n }\n\n // compute the centroid of all but the worst point in the simplex\n for (i = 0; i < N; ++i) {\n centroid[i] = 0;\n for (var j = 0; j < N; ++j) {\n centroid[i] += simplex[j][i];\n }\n centroid[i] /= N;\n }\n\n // reflect the worst point past the centroid and compute loss at reflected\n // point\n var worst = simplex[N];\n weightedSum(reflected, 1+rho, centroid, -rho, worst);\n reflected.fx = f(reflected);\n\n // if the reflected point is the best seen, then possibly expand\n if (reflected.fx < simplex[0].fx) {\n weightedSum(expanded, 1+chi, centroid, -chi, worst);\n expanded.fx = f(expanded);\n if (expanded.fx < reflected.fx) {\n updateSimplex(expanded);\n } else {\n updateSimplex(reflected);\n }\n }\n\n // if the reflected point is worse than the second worst, we need to\n // contract\n else if (reflected.fx >= simplex[N-1].fx) {\n var shouldReduce = false;\n\n if (reflected.fx > worst.fx) {\n // do an inside contraction\n weightedSum(contracted, 1+psi, centroid, -psi, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < worst.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n } else {\n // do an outside contraction\n weightedSum(contracted, 1-psi * rho, centroid, psi*rho, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < reflected.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n }\n\n if (shouldReduce) {\n // if we don't contract here, we're done\n if (sigma >= 1) break;\n\n // do a reduction\n for (i = 1; i < simplex.length; ++i) {\n weightedSum(simplex[i], 1 - sigma, simplex[0], sigma, simplex[i]);\n simplex[i].fx = f(simplex[i]);\n }\n }\n } else {\n updateSimplex(reflected);\n }\n }\n\n simplex.sort(sortOrder);\n return {fx : simplex[0].fx,\n x : simplex[0]};\n }\n\n /// searches along line 'pk' for a point that satifies the wolfe conditions\n /// See 'Numerical Optimization' by Nocedal and Wright p59-60\n /// f : objective function\n /// pk : search direction\n /// current: object containing current gradient/loss\n /// next: output: contains next gradient/loss\n /// returns a: step size taken\n function wolfeLineSearch(f, pk, current, next, a, c1, c2) {\n var phi0 = current.fx, phiPrime0 = dot(current.fxprime, pk),\n phi = phi0, phi_old = phi0,\n phiPrime = phiPrime0,\n a0 = 0;\n\n a = a || 1;\n c1 = c1 || 1e-6;\n c2 = c2 || 0.1;\n\n function zoom(a_lo, a_high, phi_lo) {\n for (var iteration = 0; iteration < 16; ++iteration) {\n a = (a_lo + a_high)/2;\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dot(next.fxprime, pk);\n\n if ((phi > (phi0 + c1 * a * phiPrime0)) ||\n (phi >= phi_lo)) {\n a_high = a;\n\n } else {\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n\n if (phiPrime * (a_high - a_lo) >=0) {\n a_high = a_lo;\n }\n\n a_lo = a;\n phi_lo = phi;\n }\n }\n\n return 0;\n }\n\n for (var iteration = 0; iteration < 10; ++iteration) {\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dot(next.fxprime, pk);\n if ((phi > (phi0 + c1 * a * phiPrime0)) ||\n (iteration && (phi >= phi_old))) {\n return zoom(a0, a, phi_old);\n }\n\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n\n if (phiPrime >= 0 ) {\n return zoom(a, a0, phi);\n }\n\n phi_old = phi;\n a0 = a;\n a *= 2;\n }\n\n return a;\n }\n\n function conjugateGradient(f, initial, params) {\n // allocate all memory up front here, keep out of the loop for perfomance\n // reasons\n var current = {x: initial.slice(), fx: 0, fxprime: initial.slice()},\n next = {x: initial.slice(), fx: 0, fxprime: initial.slice()},\n yk = initial.slice(),\n pk, temp,\n a = 1,\n maxIterations;\n\n params = params || {};\n maxIterations = params.maxIterations || initial.length * 20;\n\n current.fx = f(current.x, current.fxprime);\n pk = current.fxprime.slice();\n scale(pk, current.fxprime,-1);\n\n for (var i = 0; i < maxIterations; ++i) {\n a = wolfeLineSearch(f, pk, current, next, a);\n\n // todo: history in wrong spot?\n if (params.history) {\n params.history.push({x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n alpha: a});\n }\n\n if (!a) {\n // faiiled to find point that satifies wolfe conditions.\n // reset direction for next iteration\n scale(pk, current.fxprime, -1);\n\n } else {\n // update direction using Polak–Ribiere CG method\n weightedSum(yk, 1, next.fxprime, -1, current.fxprime);\n\n var delta_k = dot(current.fxprime, current.fxprime),\n beta_k = Math.max(0, dot(yk, next.fxprime) / delta_k);\n\n weightedSum(pk, beta_k, pk, -1, next.fxprime);\n\n temp = current;\n current = next;\n next = temp;\n }\n\n if (norm2(current.fxprime) <= 1e-5) {\n break;\n }\n }\n\n if (params.history) {\n params.history.push({x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n alpha: a});\n }\n\n return current;\n }\n\n function gradientDescent(f, initial, params) {\n params = params || {};\n var maxIterations = params.maxIterations || initial.length * 100,\n learnRate = params.learnRate || 0.001,\n current = {x: initial.slice(), fx: 0, fxprime: initial.slice()};\n\n for (var i = 0; i < maxIterations; ++i) {\n current.fx = f(current.x, current.fxprime);\n if (params.history) {\n params.history.push({x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice()});\n }\n\n weightedSum(current.x, 1, current.x, -learnRate, current.fxprime);\n if (norm2(current.fxprime) <= 1e-5) {\n break;\n }\n }\n\n return current;\n }\n\n function gradientDescentLineSearch(f, initial, params) {\n params = params || {};\n var current = {x: initial.slice(), fx: 0, fxprime: initial.slice()},\n next = {x: initial.slice(), fx: 0, fxprime: initial.slice()},\n maxIterations = params.maxIterations || initial.length * 100,\n learnRate = params.learnRate || 1,\n pk = initial.slice(),\n c1 = params.c1 || 1e-3,\n c2 = params.c2 || 0.1,\n temp,\n functionCalls = [];\n\n if (params.history) {\n // wrap the function call to track linesearch samples\n var inner = f;\n f = function(x, fxprime) {\n functionCalls.push(x.slice());\n return inner(x, fxprime);\n };\n }\n\n current.fx = f(current.x, current.fxprime);\n for (var i = 0; i < maxIterations; ++i) {\n scale(pk, current.fxprime, -1);\n learnRate = wolfeLineSearch(f, pk, current, next, learnRate, c1, c2);\n\n if (params.history) {\n params.history.push({x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n functionCalls: functionCalls,\n learnRate: learnRate,\n alpha: learnRate});\n functionCalls = [];\n }\n\n\n temp = current;\n current = next;\n next = temp;\n\n if ((learnRate === 0) || (norm2(current.fxprime) < 1e-5)) break;\n }\n\n return current;\n }\n\n exports.bisect = bisect;\n exports.nelderMead = nelderMead;\n exports.conjugateGradient = conjugateGradient;\n exports.gradientDescent = gradientDescent;\n exports.gradientDescentLineSearch = gradientDescentLineSearch;\n exports.zeros = zeros;\n exports.zerosM = zerosM;\n exports.norm2 = norm2;\n exports.weightedSum = weightedSum;\n exports.scale = scale;\n\n}));","import { AutoComplete as $AutoComplete } from 'antd'\nimport { FieldProps } from 'formik'\nimport * as React from 'react'\nimport { FormikFieldProps } from '../FieldProps'\nimport Field from '../field'\nimport { AutoCompleteProps as $AutoCompleteProps } from 'antd/lib/auto-complete'\n\nexport type AutoCompleteProps = FormikFieldProps & $AutoCompleteProps\n\nexport const AutoComplete = ({\n name,\n validate,\n fast,\n onChange,\n onBlur,\n ...restProps\n}: AutoCompleteProps) => (\n <Field name={name} validate={validate} fast={fast}>\n {({ field: { value }, form }: FieldProps) => (\n <$AutoComplete\n value={value}\n id={name}\n onChange={(value, option) => {\n form.setFieldValue(name, value != null ? value.valueOf() : value)\n onChange && onChange(value, option)\n }}\n onBlur={(value) => {\n form.setFieldTouched(name)\n onBlur && onBlur(value)\n }}\n {...restProps}\n />\n )}\n </Field>\n)\n\nexport default AutoComplete\n","import * as React from 'react'\nimport { Checkbox as $Checkbox } from 'antd'\nimport { FieldProps } from 'formik'\nimport Field from '../field'\nimport { CheckboxProps as $CheckboxProps } from 'antd/lib/checkbox/Checkbox'\nimport { FormikFieldProps } from '../FieldProps'\nimport { CheckboxGroupProps as $CheckboxGroupProps } from 'antd/lib/checkbox/Group'\n\nexport type CheckboxProps = FormikFieldProps & $CheckboxProps\n\nexport const Checkbox = ({\n name,\n validate,\n fast,\n onChange,\n ...restProps\n}: CheckboxProps) => (\n <Field name={name} validate={validate} fast={fast}>\n {({\n field: { value },\n form: { setFieldValue, setFieldTouched },\n }: FieldProps) => (\n <$Checkbox\n name={name}\n id={name}\n checked={value}\n onChange={(event) => {\n setFieldValue(name, event.target.checked)\n setFieldTouched(name, true, false)\n onChange && onChange(event)\n }}\n {...restProps}\n />\n )}\n </Field>\n)\n\nexport default Checkbox\n\nexport type CheckboxGroupProps = FormikFieldProps & $CheckboxGroupProps\n\nCheckbox.Group = ({\n name,\n validate,\n onChange,\n ...restProps\n}: CheckboxGroupProps) => (\n <Field name={name} validate={validate}>\n {({\n field: { value },\n form: { setFieldValue, setFieldTouched },\n }: FieldProps) => (\n <$Checkbox.Group\n value={value}\n onChange={(value) => {\n setFieldValue(name, value)\n setFieldTouched(name, true, false)\n onChange && onChange(value)\n }}\n {...restProps}\n />\n )}\n </Field>\n)\n","import * as React from 'react'\nimport { DatePicker as $DatePicker } from 'antd'\nimport { FieldProps } from 'formik'\nimport moment from 'moment'\nimport { FormikFieldProps } from '../FieldProps'\nimport Field from '../field'\nimport {\n DatePickerProps as $DatePickerProps,\n MonthPickerProps as $MonthPickerProps,\n RangePickerProps as $RangePickerProps,\n WeekPickerProps as $WeekPickerProps,\n} from 'antd/lib/date-picker'\n\nconst {\n MonthPicker: $MonthPicker,\n RangePicker: $RangePicker,\n WeekPicker: $WeekPicker,\n} = $DatePicker\n\nexport type DatePickerProps = $DatePickerProps &\n FormikFieldProps & { keepOffset?: boolean }\n\nexport const DatePicker = ({\n name,\n validate,\n onChange,\n fast,\n keepOffset,\n ...restProps\n}: DatePickerProps) => (\n <Field name={name} validate={validate} fast={fast}>\n {({\n field: { value },\n form: { setFieldValue, setFieldTouched },\n }: FieldProps) => (\n <$DatePicker\n value={value ? moment(value) : undefined}\n id={name}\n onChange={(date, dateString) => {\n setFieldValue(name, date ? date.toISOString(keepOffset) : null)\n setFieldTouched(name, true, false)\n onChange && onChange(date, dateString)\n }}\n {...restProps}\n />\n )}\n </Field>\n)\n\nexport default DatePicker\n\nDatePicker.MonthPicker = ({\n name,\n validate,\n onChange,\n keepOffset,\n ...restProps\n}: MonthPickerProps) => (\n <Field name={name} validate={validate}>\n {({\n field: { value },\n form: { setFieldValue, setFieldTouched },\n }: FieldProps) => (\n <$MonthPicker\n value={value ? moment(value) : undefined}\n onChange={(date, dateString) => {\n setFieldValue(name, date ? date.toISOString(keepOffset) : null)\n setFieldTouched(name, true, false)\n onChange && onChange(date, dateString)\n }}\n {...restProps}\n />\n )}\n </Field>\n)\n\nDatePicker.RangePicker = ({\n name,\n validate,\n onChange,\n ...restProps\n}: RangePickerProps) => (\n <Field name={name} validate={validate}>\n {({\n field: { value },\n form: { setFieldValue, setFieldTouched },\n }: FieldProps) => (\n <$RangePicker\n name={name}\n value={value}\n onChange={(dates, dateStrings) => {\n setFieldValue(name, dates)\n setFieldTouched(name, true, false)\n onChange && onChange(dates, dateStrings)\n }}\n {...restProps}\n />\n )}\n </Field>\n)\n\nDatePicker.WeekPicker = ({\n name,\n validate,\n onChange,\n ...restProps\n}: WeekPickerProps) => (\n <Field name={name} validate={validate}>\n {({\n field: { value },\n form: { setFieldValue, setFieldTouched },\n }: FieldProps) => (\n <$WeekPicker\n name={name}\n value={value}\n onChange={(date, dateString) => {\n setFieldValue(name, date)\n setFieldTouched(name, true, false)\n onChange && onChange(date, dateString)\n }}\n {...restProps}\n />\n )}\n </Field>\n)\n\nexport type WeekPickerProps = FormikFieldProps & $WeekPickerProps\nexport type RangePickerProps = FormikFieldProps & $RangePickerProps\nexport type MonthPickerProps = FormikFieldProps &\n $MonthPickerProps & { keepOffset?: boolean }\n","import { Field as FormikField, FastField } from 'formik'\nimport { FormikFieldProps } from '../FieldProps'\nimport * as React from 'react'\n\nexport const Field: React.FC<FormikFieldProps> = ({\n fast,\n children,\n ...restProps\n}) => {\n if (fast) {\n return <FastField {...restProps}>{children}</FastField>\n }\n\n return <FormikField {...restProps}>{children}</FormikField>\n}\n\nexport default Field\n","import * as React from 'react'\nimport { Field, FieldProps, getIn, FieldConfig } from 'formik'\nimport { Form } from 'antd'\nimport { FormItemProps as $FormItemProps } from 'antd/lib/form/FormItem'\nexport type FormItemProps = {\n showValidateSuccess?: boolean\n showInitialErrorAfterTouched?: boolean\n children: React.ReactNode\n} & { name: string } & $FormItemProps &\n Pick<FieldConfig, 'validate'>\n\nexport const FormItem = ({\n name,\n showValidateSuccess,\n showInitialErrorAfterTouched = false,\n children,\n validate,\n ...restProps\n}: FormItemProps) => (\n <Field name={name} validate={validate}>\n {({\n form: { errors = {}, touched = {}, initialErrors = {} },\n }: FieldProps) => {\n const error = getIn(errors, name, undefined)\n const initialError = getIn(initialErrors, name, undefined)\n let isTouched = getIn(touched, name, false) as boolean | boolean[]\n if (Array.isArray(isTouched)) {\n isTouched =\n isTouched.length === 0\n ? true\n : isTouched.reduce((acc, value) => acc || value, false)\n }\n const hasError = error !== undefined && isTouched\n const hasInitialError = initialError !== undefined\n const isValid = !error && isTouched\n const showHelp =\n hasError ||\n (hasInitialError && (!isTouched || showInitialErrorAfterTouched))\n\n return (\n <Form.Item\n htmlFor={name}\n id={name}\n validateStatus={\n hasError || (hasInitialError && !isTouched)\n ? 'error'\n : isValid && showValidateSuccess\n ? 'success'\n : undefined\n }\n hasFeedback={isValid}\n help={\n showHelp ? (\n <>\n {hasError && <li>{error}</li>}\n {hasInitialError &&\n (!isTouched || showInitialErrorAfterTouched) && (\n <li>{initialError}</li>\n )}\n </>\n ) : null\n }\n {...restProps}\n >\n {children}\n </Form.Item>\n )\n }}\n </Field>\n)\n\nexport default FormItem\n","import * as React from 'react'\n\nimport { Field, FieldProps } from 'formik'\nimport { Form as $Form } from 'antd'\nimport { FormItem } from '../form-item'\nimport { FormProps } from 'antd/lib/form/Form'\n\nexport function Form(props: FormProps) {\n return (\n <Field>\n {({ form: { handleReset, handleSubmit } }: FieldProps) => (\n <$Form\n onReset={handleReset}\n onFinish={handleSubmit}\n {...props}\n />\n )}\n </Field>\n )\n}\n\nForm.Item = FormItem\n\nexport default Form\n","import { Input as $Input } from 'antd'\nimport { FieldProps } from 'formik'\nimport * as React from 'react'\nimport {\n InputProps as $InputProps,\n PasswordProps as $PasswordProps,\n TextAreaProps as $TextAreaProps,\n} from 'antd/lib/input'\nimport { FormikFieldProps } from '../FieldProps'\nimport Field from '../field'\nimport TextArea, { TextAreaRef } from 'antd/lib/input/TextArea'\nimport Password from 'antd/lib/input/Password'\n\nexport type InputProps = FormikFieldProps & $InputProps\n\ninterface InputType\n extends React.ForwardRefExoticComponent<\n FormikFieldProps & $InputProps & React.RefAttributes<$Input>\n > {\n Password: React.ForwardRefExoticComponent<\n FormikFieldProps & $PasswordProps & React.RefAttributes<unknown>\n >\n TextArea: React.ForwardRefExoticComponent<\n FormikFieldProps & $TextAreaProps & React.RefAttributes<TextAreaRef>\n >\n}\n\nconst Input = React.forwardRef(\n (\n {\n name,\n validate,\n fast,\n onChange: $onChange,\n onBlur: $onBlur,\n ...restProps\n }: InputProps,\n ref: React.Ref<$Input>,\n ) => (\n <Field name={name} validate={validate} fast={fast}>\n {({ field: { value, onChange, onBlur } }: FieldProps) => (\n <$Input\n ref={ref}\n name={name}\n id={name}\n value={value}\n onChange={(event) => {\n onChange(event)\n $onChange && $onChange(event)\n }}\n onBlur={(event) => {\n onBlur(event)\n $onBlur && $onBlur(event)\n }}\n {...restProps}\n />\n )}\n </Field>\n ),\n)\n\nconst TypedInput = (Input as unknown) as InputType\n\nTypedInput.Password = React.forwardRef(\n (\n {\n name,\n validate,\n fast,\n onChange: $onChange,\n onBlur: $onBlur,\n ...restProps\n }: PasswordProps,\n ref: React.Ref<unknown>,\n ) => (\n <Field name={name} validate={validate} fast={fast}>\n {({ field: { value, onChange, onBlur } }: FieldProps) => (\n <$Input.Password\n ref={ref}\n name={name}\n id={name}\n value={value}\n onChange={(event) => {\n onChange(event)\n $onChange && $onChange(event)\n }}\n onBlur={(event) => {\n onBlur(event)\n $onBlur && $onBlur(event)\n }}\n {...restProps}\n />\n )}\n </Field>\n ),\n)\n\nTypedInput.TextArea = React.forwardRef(\n (\n {\n name,\n validate,\n fast,\n onChange: $onChange,\n onBlur: $onBlur,\n ...restProps\n }: TextAreaProps,\n ref: React.Ref<TextAreaRef>,\n ) => (\n <Field name={name} validate={validate} fast={fast}>\n {({ field: { value, onChange, onBlur } }: FieldProps) => (\n <$Input.TextArea\n ref={ref}\n name={name}\n id={name}\n value={value}\n onChange={(event) => {\n onChange(event)\n $onChange && $onChange(event)\n }}\n onBlur={(event) => {\n onBlur(event)\n $onBlur && $onBlur(event)\n }}\n {...restProps}\n />\n )}\n </Field>\n ),\n)\n\nexport type PasswordProps = FormikFieldProps & $PasswordProps\n\nexport type TextAreaProps = FormikFieldProps & $TextAreaProps\n\nexport { TypedInput as Input }\nexport default TypedInput\n","import { Radio as $Radio } from 'antd'\nimport { FieldProps } from 'formik'\nimport * as React from 'react'\nimport { RadioGroupProps as $RadioGroupProps } from 'antd/lib/radio/interface'\nimport { FormikFieldProps } from '../FieldProps'\nimport Field from '../field'\n\nexport type RadioGroupProps = FormikFieldProps & $RadioGroupProps\n\nexport const Radio = ({\n name,\n validate,\n fast,\n onChange,\n ...restProps\n}: RadioGroupProps) => (\n <Field name={name} validate={validate} fast={fast}>\n {({\n field: { value },\n form: { setFieldValue, setFieldTouched },\n }: FieldProps) => (\n <$Radio\n name={name}\n id={name}\n value={value}\n onChange={(event) => {\n setFieldValue(name, event.target.value)\n setFieldTouched(name, true, false)\n onChange && onChange(event)\n }}\n {...restProps}\n />\n )}\n </Field>\n)\n\nexport default Radio\n\nRadio.Group = ({\n name,\n validate,\n fast,\n onChange,\n ...restProps\n}: RadioGroupProps) => (\n <Field name={name} validate={validate} fast={fast}>\n {({\n field: { value },\n form: { setFieldValue, setFieldTouched },\n }: FieldProps) => (\n <$Radio.Group\n name={name}\n value={value}\n onChange={(event) => {\n setFieldValue(name, event.target.value)\n setFieldTouched(name, true, false)\n onChange && onChange(event)\n }}\n {...restProps}\n />\n )}\n </Field>\n)\n\nRadio.Button = $Radio.Button\n","import { Select as $Select } from 'antd'\nimport { FieldProps } from 'formik'\nimport * as React from 'react'\nimport { SelectProps as $SelectProps } from 'antd/lib/select'\nimport { FormikFieldProps } from '../FieldProps'\nimport Field from '../field'\n\nexport type SelectProps<T = any> = FormikFieldProps &\n $SelectProps<T> & { children?: React.ReactNode }\n// declare class Select<ValueType extends SelectValue = SelectValue> extends React.Component<SelectProps<ValueType>> {\nexport const Select = ({\n name,\n validate,\n fast,\n children,\n onChange,\n onBlur,\n ...restProps\n}: SelectProps) => {\n return (\n <Field name={name} validate={validate} fast={fast}>\n {({\n field: { value },\n form: { setFieldValue, setFieldTouched },\n }: FieldProps) => (\n <$Select<any>\n onChange={(value, option) => {\n setFieldValue(name, value)\n onChange && onChange(value, option)\n }}\n onBlur={(value) => {\n setFieldTouched(name)\n onBlur && onBlur(value)\n }}\n // setting undefined will show the placeholder\n value={value === '' || value === null ? undefined : value}\n id={name}\n {...restProps}\n >\n {children}\n </$Select>\n )}\n </Field>\n )\n}\n\nexport default Select\n\nSelect.Option = $Select.Option\nSelect.OptGroup = $Select.OptGroup\n","import { Switch as $Switch } from 'antd'\nimport { FieldProps } from 'formik'\nimport * as React from 'react'\nimport { SwitchProps as $SwitchProps } from 'antd/lib/switch'\nimport { FormikFieldProps } from '../FieldProps'\nimport Field from '../field'\n\nexport type SwitchProps = FormikFieldProps & $SwitchProps\n\nexport const Switch = ({\n name,\n validate,\n fast,\n onChange,\n ...restProps\n}: SwitchProps) => (\n <Field name={name} validate={validate} fast={fast}>\n {({\n field: { value },\n form: { setFieldValue, setFieldTouched },\n }: FieldProps) => (\n <$Switch\n checked={value}\n onChange={(checked, event) => {\n setFieldValue(name, checked)\n setFieldTouched(name, true, false)\n onChange && onChange(checked, event)\n }}\n {...restProps}\n />\n )}\n </Field>\n)\n\nexport default Switch\n","var isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tObject.keys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tObject.keys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nexport default deepmerge_1;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import arrayMap from './_arrayMap.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\nimport stringToPath from './_stringToPath.js';\nimport toKey from './_toKey.js';\nimport toString from './toString.js';\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nexport default toPath;\n","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\nimport * as React from 'react';\n\n// Assertions\n\n/** @private is the value an empty array? */\nexport const isEmptyArray = (value?: any) =>\n Array.isArray(value) && value.length === 0;\n\n/** @private is the given object a Function? */\nexport const isFunction = (obj: any): obj is Function =>\n typeof obj === 'function';\n\n/** @private is the given object an Object? */\nexport const isObject = (obj: any): obj is Object =>\n obj !== null && typeof obj === 'object';\n\n/** @private is the given object an integer? */\nexport const isInteger = (obj: any): boolean =>\n String(Math.floor(Number(obj))) === obj;\n\n/** @private is the given object a string? */\nexport const isString = (obj: any): obj is string =>\n Object.prototype.toString.call(obj) === '[object String]';\n\n/** @private is the given object a NaN? */\n// eslint-disable-next-line no-self-compare\nexport const isNaN = (obj: any): boolean => obj !== obj;\n\n/** @private Does a React component have exactly 0 children? */\nexport const isEmptyChildren = (children: any): boolean =>\n React.Children.count(children) === 0;\n\n/** @private is the given object/value a promise? */\nexport const isPromise = (value: any): value is PromiseLike<any> =>\n isObject(value) && isFunction(value.then);\n\n/** @private is the given object/value a type of synthetic event? */\nexport const isInputEvent = (value: any): value is React.SyntheticEvent<any> =>\n value && isObject(value) && isObject(value.target);\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?Document} doc Defaults to current document.\n * @return {Element | null}\n * @see https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/dom/getActiveElement.js\n */\nexport function getActiveElement(doc?: Document): Element | null {\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(\n obj: any,\n key: string | string[],\n def?: any,\n p: number = 0\n) {\n const path = toPath(key);\n while (obj && p < path.length) {\n obj = obj[path[p++]];\n }\n\n // check if path is not in the end\n if (p !== path.length && !obj) {\n return def;\n }\n\n return obj === undefined ? def : obj;\n}\n\n/**\n * Deeply set a value from in object via it's path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn(obj: any, path: string, value: any): any {\n let res: any = clone(obj); // this keeps inheritance when obj is a class\n let resVal: any = res;\n let i = 0;\n let pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n let currentObj: any = getIn(obj, pathArray.slice(0, i + 1));\n\n if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {\n resVal = resVal[currentPath] = clone(currentObj);\n } else {\n const nextPath: string = pathArray[i + 1];\n resVal = resVal[currentPath] =\n isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n }\n }\n\n // Return original object if new value is the same as current\n if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {\n return obj;\n }\n\n if (value === undefined) {\n delete resVal[pathArray[i]];\n } else {\n resVal[pathArray[i]] = value;\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n delete res[pathArray[i]];\n }\n\n return res;\n}\n\n/**\n * Recursively a set the same value for all keys and arrays nested object, cloning\n * @param object\n * @param value\n * @param visited\n * @param response\n */\nexport function setNestedObjectValues<T>(\n object: any,\n value: any,\n visited: any = new WeakMap(),\n response: any = {}\n): T {\n for (let k of Object.keys(object)) {\n const val = object[k];\n if (isObject(val)) {\n if (!visited.get(val)) {\n visited.set(val, true);\n // In order to keep array values consistent for both dot path and\n // bracket syntax, we need to check if this is an array so that\n // this will output { friends: [true] } and not { friends: { \"0\": true } }\n response[k] = Array.isArray(val) ? [] : {};\n setNestedObjectValues(val, value, visited, response[k]);\n }\n } else {\n response[k] = value;\n }\n }\n\n return response;\n}\n","import * as React from 'react';\nimport { FormikContextType } from './types';\nimport invariant from 'tiny-warning';\n\nexport const FormikContext = React.createContext<FormikContextType<any>>(\n undefined as any\n);\nFormikContext.displayName = 'FormikContext';\n\nexport const FormikProvider = FormikContext.Provider;\nexport const FormikConsumer = FormikContext.Consumer;\n\nexport function useFormikContext<Values>() {\n const formik = React.useContext<FormikContextType<Values>>(FormikContext);\n\n invariant(\n !!formik,\n `Formik context is undefined, please verify you are calling useFormikContext() as child of a <Formik> component.`\n );\n\n return formik;\n}\n","import * as React from 'react';\nimport isEqual from 'react-fast-compare';\nimport deepmerge from 'deepmerge';\nimport isPlainObject from 'lodash/isPlainObject';\nimport {\n FormikConfig,\n FormikErrors,\n FormikState,\n FormikTouched,\n FormikValues,\n FormikProps,\n FieldMetaProps,\n FieldHelperProps,\n FieldInputProps,\n FormikHelpers,\n FormikHandlers,\n} from './types';\nimport {\n isFunction,\n isString,\n setIn,\n isEmptyChildren,\n isPromise,\n setNestedObjectValues,\n getActiveElement,\n getIn,\n isObject,\n} from './utils';\nimport { FormikProvider } from './FormikContext';\nimport invariant from 'tiny-warning';\n\ntype FormikMessage<Values> =\n | { type: 'SUBMIT_ATTEMPT' }\n | { type: 'SUBMIT_FAILURE' }\n | { type: 'SUBMIT_SUCCESS' }\n | { type: 'SET_ISVALIDATING'; payload: boolean }\n | { type: 'SET_ISSUBMITTING'; payload: boolean }\n | { type: 'SET_VALUES'; payload: Values }\n | { type: 'SET_FIELD_VALUE'; payload: { field: string; value?: any } }\n | { type: 'SET_FIELD_TOUCHED'; payload: { field: string; value?: boolean } }\n | { type: 'SET_FIELD_ERROR'; payload: { field: string; value?: string } }\n | { type: 'SET_TOUCHED'; payload: FormikTouched<Values> }\n | { type: 'SET_ERRORS'; payload: FormikErrors<Values> }\n | { type: 'SET_STATUS'; payload: any }\n | {\n type: 'SET_FORMIK_STATE';\n payload: (s: FormikState<Values>) => FormikState<Values>;\n }\n | {\n type: 'RESET_FORM';\n payload: FormikState<Values>;\n };\n\n// State reducer\nfunction formikReducer<Values>(\n state: FormikState<Values>,\n msg: FormikMessage<Values>\n) {\n switch (msg.type) {\n case 'SET_VALUES':\n return { ...state, values: msg.payload };\n case 'SET_TOUCHED':\n return { ...state, touched: msg.payload };\n case 'SET_ERRORS':\n if (isEqual(state.errors, msg.payload)) {\n return state;\n }\n\n return { ...state, errors: msg.payload };\n case 'SET_STATUS':\n return { ...state, status: msg.payload };\n case 'SET_ISSUBMITTING':\n return { ...state, isSubmitting: msg.payload };\n case 'SET_ISVALIDATING':\n return { ...state, isValidating: msg.payload };\n case 'SET_FIELD_VALUE':\n return {\n ...state,\n values: setIn(state.values, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_TOUCHED':\n return {\n ...state,\n touched: setIn(state.touched, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_ERROR':\n return {\n ...state,\n errors: setIn(state.errors, msg.payload.field, msg.payload.value),\n };\n case 'RESET_FORM':\n return { ...state, ...msg.payload };\n case 'SET_FORMIK_STATE':\n return msg.payload(state);\n case 'SUBMIT_ATTEMPT':\n return {\n ...state,\n touched: setNestedObjectValues<FormikTouched<Values>>(\n state.values,\n true\n ),\n isSubmitting: true,\n submitCount: state.submitCount + 1,\n };\n case 'SUBMIT_FAILURE':\n return {\n ...state,\n isSubmitting: false,\n };\n case 'SUBMIT_SUCCESS':\n return {\n ...state,\n isSubmitting: false,\n };\n default:\n return state;\n }\n}\n\n// Initial empty states // objects\nconst emptyErrors: FormikErrors<unknown> = {};\nconst emptyTouched: FormikTouched<unknown> = {};\n\n// This is an object that contains a map of all registered fields\n// and their validate functions\ninterface FieldRegistry {\n [field: string]: {\n validate: (value: any) => string | Promise<string> | undefined;\n };\n}\n\nexport function useFormik<Values extends FormikValues = FormikValues>({\n validateOnChange = true,\n validateOnBlur = true,\n validateOnMount = false,\n isInitialValid,\n enableReinitialize = false,\n onSubmit,\n ...rest\n}: FormikConfig<Values>) {\n const props = {\n validateOnChange,\n validateOnBlur,\n validateOnMount,\n onSubmit,\n ...rest,\n };\n const initialValues = React.useRef(props.initialValues);\n const initialErrors = React.useRef(props.initialErrors || emptyErrors);\n const initialTouched = React.useRef(props.initialTouched || emptyTouched);\n const initialStatus = React.useRef(props.initialStatus);\n const isMounted = React.useRef<boolean>(false);\n const fieldRegistry = React.useRef<FieldRegistry>({});\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n typeof isInitialValid === 'undefined',\n 'isInitialValid has been deprecated and will be removed in future versions of Formik. Please use initialErrors or validateOnMount instead.'\n );\n // eslint-disable-next-line\n }, []);\n }\n\n React.useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n const [state, dispatch] = React.useReducer<\n React.Reducer<FormikState<Values>, FormikMessage<Values>>\n >(formikReducer, {\n values: props.initialValues,\n errors: props.initialErrors || emptyErrors,\n touched: props.initialTouched || emptyTouched,\n status: props.initialStatus,\n isSubmitting: false,\n isValidating: false,\n submitCount: 0,\n });\n\n const runValidateHandler = React.useCallback(\n (values: Values, field?: string): Promise<FormikErrors<Values>> => {\n return new Promise((resolve, reject) => {\n const maybePromisedErrors = (props.validate as any)(values, field);\n if (maybePromisedErrors == null) {\n // use loose null check here on purpose\n resolve(emptyErrors);\n } else if (isPromise(maybePromisedErrors)) {\n (maybePromisedErrors as Promise<any>).then(\n errors => {\n resolve(errors || emptyErrors);\n },\n actualException => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in <Formik validate />`,\n actualException\n );\n }\n\n reject(actualException);\n }\n );\n } else {\n resolve(maybePromisedErrors);\n }\n });\n },\n [props.validate]\n );\n\n /**\n * Run validation against a Yup schema and optionally run a function if successful\n */\n const runValidationSchema = React.useCallback(\n (values: Values, field?: string): Promise<FormikErrors<Values>> => {\n const validationSchema = props.validationSchema;\n const schema = isFunction(validationSchema)\n ? validationSchema(field)\n : validationSchema;\n const promise =\n field && schema.validateAt\n ? schema.validateAt(field, values)\n : validateYupSchema(values, schema);\n return new Promise((resolve, reject) => {\n promise.then(\n () => {\n resolve(emptyErrors);\n },\n (err: any) => {\n // Yup will throw a validation error if validation fails. We catch those and\n // resolve them into Formik errors. We can sniff if something is a Yup error\n // by checking error.name.\n // @see https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n if (err.name === 'ValidationError') {\n resolve(yupToFormErrors(err));\n } else {\n // We throw any other errors\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in <Formik validationSchema />`,\n err\n );\n }\n\n reject(err);\n }\n }\n );\n });\n },\n [props.validationSchema]\n );\n\n const runSingleFieldLevelValidation = React.useCallback(\n (field: string, value: void | string): Promise<string> => {\n return new Promise(resolve =>\n resolve(fieldRegistry.current[field].validate(value) as string)\n );\n },\n []\n );\n\n const runFieldLevelValidations = React.useCallback(\n (values: Values): Promise<FormikErrors<Values>> => {\n const fieldKeysWithValidation: string[] = Object.keys(\n fieldRegistry.current\n ).filter(f => isFunction(fieldRegistry.current[f].validate));\n\n // Construct an array with all of the field validation functions\n const fieldValidations: Promise<string>[] =\n fieldKeysWithValidation.length > 0\n ? fieldKeysWithValidation.map(f =>\n runSingleFieldLevelValidation(f, getIn(values, f))\n )\n : [Promise.resolve('DO_NOT_DELETE_YOU_WILL_BE_FIRED')]; // use special case ;)\n\n return Promise.all(fieldValidations).then((fieldErrorsList: string[]) =>\n fieldErrorsList.reduce((prev, curr, index) => {\n if (curr === 'DO_NOT_DELETE_YOU_WILL_BE_FIRED') {\n return prev;\n }\n if (curr) {\n prev = setIn(prev, fieldKeysWithValidation[index], curr);\n }\n return prev;\n }, {})\n );\n },\n [runSingleFieldLevelValidation]\n );\n\n // Run all validations and return the result\n const runAllValidations = React.useCallback(\n (values: Values) => {\n return Promise.all([\n runFieldLevelValidations(values),\n props.validationSchema ? runValidationSchema(values) : {},\n props.validate ? runValidateHandler(values) : {},\n ]).then(([fieldErrors, schemaErrors, validateErrors]) => {\n const combinedErrors = deepmerge.all<FormikErrors<Values>>(\n [fieldErrors, schemaErrors, validateErrors],\n { arrayMerge }\n );\n return combinedErrors;\n });\n },\n [\n props.validate,\n props.validationSchema,\n runFieldLevelValidations,\n runValidateHandler,\n runValidationSchema,\n ]\n );\n\n // Run all validations methods and update state accordingly\n const validateFormWithHighPriority = useEventCallback(\n (values: Values = state.values) => {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runAllValidations(values).then(combinedErrors => {\n if (!!isMounted.current) {\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n dispatch({ type: 'SET_ERRORS', payload: combinedErrors });\n }\n return combinedErrors;\n });\n }\n );\n\n React.useEffect(() => {\n if (\n validateOnMount &&\n isMounted.current === true &&\n isEqual(initialValues.current, props.initialValues)\n ) {\n validateFormWithHighPriority(initialValues.current);\n }\n }, [validateOnMount, validateFormWithHighPriority]);\n\n const resetForm = React.useCallback(\n (nextState?: Partial<FormikState<Values>>) => {\n const values =\n nextState && nextState.values\n ? nextState.values\n : initialValues.current;\n const errors =\n nextState && nextState.errors\n ? nextState.errors\n : initialErrors.current\n ? initialErrors.current\n : props.initialErrors || {};\n const touched =\n nextState && nextState.touched\n ? nextState.touched\n : initialTouched.current\n ? initialTouched.current\n : props.initialTouched || {};\n const status =\n nextState && nextState.status\n ? nextState.status\n : initialStatus.current\n ? initialStatus.current\n : props.initialStatus;\n initialValues.current = values;\n initialErrors.current = errors;\n initialTouched.current = touched;\n initialStatus.current = status;\n\n const dispatchFn = () => {\n dispatch({\n type: 'RESET_FORM',\n payload: {\n isSubmitting: !!nextState && !!nextState.isSubmitting,\n errors,\n touched,\n status,\n values,\n isValidating: !!nextState && !!nextState.isValidating,\n submitCount:\n !!nextState &&\n !!nextState.submitCount &&\n typeof nextState.submitCount === 'number'\n ? nextState.submitCount\n : 0,\n },\n });\n };\n\n if (props.onReset) {\n const maybePromisedOnReset = (props.onReset as any)(\n state.values,\n imperativeMethods\n );\n\n if (isPromise(maybePromisedOnReset)) {\n (maybePromisedOnReset as Promise<any>).then(dispatchFn);\n } else {\n dispatchFn();\n }\n } else {\n dispatchFn();\n }\n },\n [props.initialErrors, props.initialStatus, props.initialTouched]\n );\n\n React.useEffect(() => {\n if (\n isMounted.current === true &&\n !isEqual(initialValues.current, props.initialValues)\n ) {\n if (enableReinitialize) {\n initialValues.current = props.initialValues;\n resetForm();\n if (validateOnMount) {\n validateFormWithHighPriority(initialValues.current);\n }\n }\n }\n }, [\n enableReinitialize,\n props.initialValues,\n resetForm,\n validateOnMount,\n validateFormWithHighPriority,\n ]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialErrors.current, props.initialErrors)\n ) {\n initialErrors.current = props.initialErrors || emptyErrors;\n dispatch({\n type: 'SET_ERRORS',\n payload: props.initialErrors || emptyErrors,\n });\n }\n }, [enableReinitialize, props.initialErrors]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialTouched.current, props.initialTouched)\n ) {\n initialTouched.current = props.initialTouched || emptyTouched;\n dispatch({\n type: 'SET_TOUCHED',\n payload: props.initialTouched || emptyTouched,\n });\n }\n }, [enableReinitialize, props.initialTouched]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialStatus.current, props.initialStatus)\n ) {\n initialStatus.current = props.initialStatus;\n dispatch({\n type: 'SET_STATUS',\n payload: props.initialStatus,\n });\n }\n }, [enableReinitialize, props.initialStatus, props.initialTouched]);\n\n const validateField = useEventCallback((name: string) => {\n // This will efficiently validate a single field by avoiding state\n // changes if the validation function is synchronous. It's different from\n // what is called when using validateForm.\n\n if (\n fieldRegistry.current[name] &&\n isFunction(fieldRegistry.current[name].validate)\n ) {\n const value = getIn(state.values, name);\n const maybePromise = fieldRegistry.current[name].validate(value);\n if (isPromise(maybePromise)) {\n // Only flip isValidating if the function is async.\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return maybePromise\n .then((x: any) => x)\n .then((error: string) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: error },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n } else {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: {\n field: name,\n value: maybePromise as string | undefined,\n },\n });\n return Promise.resolve(maybePromise as string | undefined);\n }\n } else if (props.validationSchema) {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runValidationSchema(state.values, name)\n .then((x: any) => x)\n .then((error: any) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: getIn(error, name) },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n }\n\n return Promise.resolve();\n });\n\n const registerField = React.useCallback((name: string, { validate }: any) => {\n fieldRegistry.current[name] = {\n validate,\n };\n }, []);\n\n const unregisterField = React.useCallback((name: string) => {\n delete fieldRegistry.current[name];\n }, []);\n\n const setTouched = useEventCallback(\n (touched: FormikTouched<Values>, shouldValidate?: boolean) => {\n dispatch({ type: 'SET_TOUCHED', payload: touched });\n const willValidate =\n shouldValidate === undefined ? validateOnBlur : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(state.values)\n : Promise.resolve();\n }\n );\n\n const setErrors = React.useCallback((errors: FormikErrors<Values>) => {\n dispatch({ type: 'SET_ERRORS', payload: errors });\n }, []);\n\n const setValues = useEventCallback(\n (values: React.SetStateAction<Values>, shouldValidate?: boolean) => {\n const resolvedValues = isFunction(values) ? values(state.values) : values;\n\n dispatch({ type: 'SET_VALUES', payload: resolvedValues });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(resolvedValues)\n : Promise.resolve();\n }\n );\n\n const setFieldError = React.useCallback(\n (field: string, value: string | undefined) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field, value },\n });\n },\n []\n );\n\n const setFieldValue = useEventCallback(\n (field: string, value: any, shouldValidate?: boolean) => {\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field,\n value,\n },\n });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(setIn(state.values, field, value))\n : Promise.resolve();\n }\n );\n\n const executeChange = React.useCallback(\n (eventOrTextValue: string | React.ChangeEvent<any>, maybePath?: string) => {\n // By default, assume that the first argument is a string. This allows us to use\n // handleChange with React Native and React Native Web's onChangeText prop which\n // provides just the value of the input.\n let field = maybePath;\n let val = eventOrTextValue;\n let parsed;\n // If the first argument is not a string though, it has to be a synthetic React Event (or a fake one),\n // so we handle like we would a normal HTML change event.\n if (!isString(eventOrTextValue)) {\n // If we can, persist the event\n // @see https://reactjs.org/docs/events.html#event-pooling\n if ((eventOrTextValue as any).persist) {\n (eventOrTextValue as React.ChangeEvent<any>).persist();\n }\n const target = eventOrTextValue.target\n ? (eventOrTextValue as React.ChangeEvent<any>).target\n : (eventOrTextValue as React.ChangeEvent<any>).currentTarget;\n\n const {\n type,\n name,\n id,\n value,\n checked,\n outerHTML,\n options,\n multiple,\n } = target;\n\n field = maybePath ? maybePath : name ? name : id;\n if (!field && __DEV__) {\n warnAboutMissingIdentifier({\n htmlContent: outerHTML,\n documentationAnchorLink: 'handlechange-e-reactchangeeventany--void',\n handlerName: 'handleChange',\n });\n }\n val = /number|range/.test(type)\n ? ((parsed = parseFloat(value)), isNaN(parsed) ? '' : parsed)\n : /checkbox/.test(type) // checkboxes\n ? getValueForCheckbox(getIn(state.values, field!), checked, value)\n : options && multiple // <select multiple>\n ? getSelectedValues(options)\n : value;\n }\n\n if (field) {\n // Set form fields by name\n setFieldValue(field, val);\n }\n },\n [setFieldValue, state.values]\n );\n\n const handleChange = useEventCallback<FormikHandlers['handleChange']>(\n (\n eventOrPath: string | React.ChangeEvent<any>\n ): void | ((eventOrTextValue: string | React.ChangeEvent<any>) => void) => {\n if (isString(eventOrPath)) {\n return event => executeChange(event, eventOrPath);\n } else {\n executeChange(eventOrPath);\n }\n }\n );\n\n const setFieldTouched = useEventCallback(\n (field: string, touched: boolean = true, shouldValidate?: boolean) => {\n dispatch({\n type: 'SET_FIELD_TOUCHED',\n payload: {\n field,\n value: touched,\n },\n });\n const willValidate =\n shouldValidate === undefined ? validateOnBlur : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(state.values)\n : Promise.resolve();\n }\n );\n\n const executeBlur = React.useCallback(\n (e: any, path?: string) => {\n if (e.persist) {\n e.persist();\n }\n const { name, id, outerHTML } = e.target;\n const field = path ? path : name ? name : id;\n\n if (!field && __DEV__) {\n warnAboutMissingIdentifier({\n htmlContent: outerHTML,\n documentationAnchorLink: 'handleblur-e-any--void',\n handlerName: 'handleBlur',\n });\n }\n\n setFieldTouched(field, true);\n },\n [setFieldTouched]\n );\n\n const handleBlur = useEventCallback<FormikHandlers['handleBlur']>(\n (eventOrString: any): void | ((e: any) => void) => {\n if (isString(eventOrString)) {\n return event => executeBlur(event, eventOrString);\n } else {\n executeBlur(eventOrString);\n }\n }\n );\n\n const setFormikState = React.useCallback(\n (\n stateOrCb:\n | FormikState<Values>\n | ((state: FormikState<Values>) => FormikState<Values>)\n ): void => {\n if (isFunction(stateOrCb)) {\n dispatch({ type: 'SET_FORMIK_STATE', payload: stateOrCb });\n } else {\n dispatch({ type: 'SET_FORMIK_STATE', payload: () => stateOrCb });\n }\n },\n []\n );\n\n const setStatus = React.useCallback((status: any) => {\n dispatch({ type: 'SET_STATUS', payload: status });\n }, []);\n\n const setSubmitting = React.useCallback((isSubmitting: boolean) => {\n dispatch({ type: 'SET_ISSUBMITTING', payload: isSubmitting });\n }, []);\n\n const submitForm = useEventCallback(() => {\n dispatch({ type: 'SUBMIT_ATTEMPT' });\n return validateFormWithHighPriority().then(\n (combinedErrors: FormikErrors<Values>) => {\n // In case an error was thrown and passed to the resolved Promise,\n // `combinedErrors` can be an instance of an Error. We need to check\n // that and abort the submit.\n // If we don't do that, calling `Object.keys(new Error())` yields an\n // empty array, which causes the validation to pass and the form\n // to be submitted.\n\n const isInstanceOfError = combinedErrors instanceof Error;\n const isActuallyValid =\n !isInstanceOfError && Object.keys(combinedErrors).length === 0;\n if (isActuallyValid) {\n // Proceed with submit...\n //\n // To respect sync submit fns, we can't simply wrap executeSubmit in a promise and\n // _always_ dispatch SUBMIT_SUCCESS because isSubmitting would then always be false.\n // This would be fine in simple cases, but make it impossible to disable submit\n // buttons where people use callbacks or promises as side effects (which is basically\n // all of v1 Formik code). Instead, recall that we are inside of a promise chain already,\n // so we can try/catch executeSubmit(), if it returns undefined, then just bail.\n // If there are errors, throw em. Otherwise, wrap executeSubmit in a promise and handle\n // cleanup of isSubmitting on behalf of the consumer.\n let promiseOrUndefined;\n try {\n promiseOrUndefined = executeSubmit();\n // Bail if it's sync, consumer is responsible for cleaning up\n // via setSubmitting(false)\n if (promiseOrUndefined === undefined) {\n return;\n }\n } catch (error) {\n throw error;\n }\n\n return Promise.resolve(promiseOrUndefined)\n .then(result => {\n if (!!isMounted.current) {\n dispatch({ type: 'SUBMIT_SUCCESS' });\n }\n return result;\n })\n .catch(_errors => {\n if (!!isMounted.current) {\n dispatch({ type: 'SUBMIT_FAILURE' });\n // This is a legit error rejected by the onSubmit fn\n // so we don't want to break the promise chain\n throw _errors;\n }\n });\n } else if (!!isMounted.current) {\n // ^^^ Make sure Formik is still mounted before updating state\n dispatch({ type: 'SUBMIT_FAILURE' });\n // throw combinedErrors;\n if (isInstanceOfError) {\n throw combinedErrors;\n }\n }\n return;\n }\n );\n });\n\n const handleSubmit = useEventCallback(\n (e?: React.FormEvent<HTMLFormElement>) => {\n if (e && e.preventDefault && isFunction(e.preventDefault)) {\n e.preventDefault();\n }\n\n if (e && e.stopPropagation && isFunction(e.stopPropagation)) {\n e.stopPropagation();\n }\n\n // Warn if form submission is triggered by a <button> without a\n // specified `type` attribute during development. This mitigates\n // a common gotcha in forms with both reset and submit buttons,\n // where the dev forgets to add type=\"button\" to the reset button.\n if (__DEV__ && typeof document !== 'undefined') {\n // Safely get the active element (works with IE)\n const activeElement = getActiveElement();\n if (\n activeElement !== null &&\n activeElement instanceof HTMLButtonElement\n ) {\n invariant(\n activeElement.attributes &&\n activeElement.attributes.getNamedItem('type'),\n 'You submitted a Formik form using a button with an unspecified `type` attribute. Most browsers default button elements to `type=\"submit\"`. If this is not a submit button, please add `type=\"button\"`.'\n );\n }\n }\n\n submitForm().catch(reason => {\n console.warn(\n `Warning: An unhandled error was caught from submitForm()`,\n reason\n );\n });\n }\n );\n\n const imperativeMethods: FormikHelpers<Values> = {\n resetForm,\n validateForm: validateFormWithHighPriority,\n validateField,\n setErrors,\n setFieldError,\n setFieldTouched,\n setFieldValue,\n setStatus,\n setSubmitting,\n setTouched,\n setValues,\n setFormikState,\n submitForm,\n };\n\n const executeSubmit = useEventCallback(() => {\n return onSubmit(state.values, imperativeMethods);\n });\n\n const handleReset = useEventCallback(e => {\n if (e && e.preventDefault && isFunction(e.preventDefault)) {\n e.preventDefault();\n }\n\n if (e && e.stopPropagation && isFunction(e.stopPropagation)) {\n e.stopPropagation();\n }\n\n resetForm();\n });\n\n const getFieldMeta = React.useCallback(\n (name: string): FieldMetaProps<any> => {\n return {\n value: getIn(state.values, name),\n error: getIn(state.errors, name),\n touched: !!getIn(state.touched, name),\n initialValue: getIn(initialValues.current, name),\n initialTouched: !!getIn(initialTouched.current, name),\n initialError: getIn(initialErrors.current, name),\n };\n },\n [state.errors, state.touched, state.values]\n );\n\n const getFieldHelpers = React.useCallback(\n (name: string): FieldHelperProps<any> => {\n return {\n setValue: (value: any, shouldValidate?: boolean) =>\n setFieldValue(name, value, shouldValidate),\n setTouched: (value: boolean, shouldValidate?: boolean) =>\n setFieldTouched(name, value, shouldValidate),\n setError: (value: any) => setFieldError(name, value),\n };\n },\n [setFieldValue, setFieldTouched, setFieldError]\n );\n\n const getFieldProps = React.useCallback(\n (nameOrOptions): FieldInputProps<any> => {\n const isAnObject = isObject(nameOrOptions);\n const name = isAnObject ? nameOrOptions.name : nameOrOptions;\n const valueState = getIn(state.values, name);\n\n const field: FieldInputProps<any> = {\n name,\n value: valueState,\n onChange: handleChange,\n onBlur: handleBlur,\n };\n if (isAnObject) {\n const {\n type,\n value: valueProp, // value is special for checkboxes\n as: is,\n multiple,\n } = nameOrOptions;\n\n if (type === 'checkbox') {\n if (valueProp === undefined) {\n field.checked = !!valueState;\n } else {\n field.checked = !!(\n Array.isArray(valueState) && ~valueState.indexOf(valueProp)\n );\n field.value = valueProp;\n }\n } else if (type === 'radio') {\n field.checked = valueState === valueProp;\n field.value = valueProp;\n } else if (is === 'select' && multiple) {\n field.value = field.value || [];\n field.multiple = true;\n }\n }\n return field;\n },\n [handleBlur, handleChange, state.values]\n );\n\n const dirty = React.useMemo(\n () => !isEqual(initialValues.current, state.values),\n [initialValues.current, state.values]\n );\n\n const isValid = React.useMemo(\n () =>\n typeof isInitialValid !== 'undefined'\n ? dirty\n ? state.errors && Object.keys(state.errors).length === 0\n : isInitialValid !== false && isFunction(isInitialValid)\n ? (isInitialValid as (props: FormikConfig<Values>) => boolean)(props)\n : (isInitialValid as boolean)\n : state.errors && Object.keys(state.errors).length === 0,\n [isInitialValid, dirty, state.errors, props]\n );\n\n const ctx = {\n ...state,\n initialValues: initialValues.current,\n initialErrors: initialErrors.current,\n initialTouched: initialTouched.current,\n initialStatus: initialStatus.current,\n handleBlur,\n handleChange,\n handleReset,\n handleSubmit,\n resetForm,\n setErrors,\n setFormikState,\n setFieldTouched,\n setFieldValue,\n setFieldError,\n setStatus,\n setSubmitting,\n setTouched,\n setValues,\n submitForm,\n validateForm: validateFormWithHighPriority,\n validateField,\n isValid,\n dirty,\n unregisterField,\n registerField,\n getFieldProps,\n getFieldMeta,\n getFieldHelpers,\n validateOnBlur,\n validateOnChange,\n validateOnMount,\n };\n\n return ctx;\n}\n\nexport function Formik<\n Values extends FormikValues = FormikValues,\n ExtraProps = {}\n>(props: FormikConfig<Values> & ExtraProps) {\n const formikbag = useFormik<Values>(props);\n const { component, children, render, innerRef } = props;\n\n // This allows folks to pass a ref to <Formik />\n React.useImperativeHandle(innerRef, () => formikbag);\n\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n !props.render,\n `<Formik render> has been deprecated and will be removed in future versions of Formik. Please use a child callback function instead. To get rid of this warning, replace <Formik render={(props) => ...} /> with <Formik>{(props) => ...}</Formik>`\n );\n // eslint-disable-next-line\n }, []);\n }\n return (\n <FormikProvider value={formikbag}>\n {component\n ? React.createElement(component as any, formikbag)\n : render\n ? render(formikbag)\n : children // children come last, always called\n ? isFunction(children)\n ? (children as (bag: FormikProps<Values>) => React.ReactNode)(\n formikbag as FormikProps<Values>\n )\n : !isEmptyChildren(children)\n ? React.Children.only(children)\n : null\n : null}\n </FormikProvider>\n );\n}\n\nfunction warnAboutMissingIdentifier({\n htmlContent,\n documentationAnchorLink,\n handlerName,\n}: {\n htmlContent: string;\n documentationAnchorLink: string;\n handlerName: string;\n}) {\n console.warn(\n `Warning: Formik called \\`${handlerName}\\`, but you forgot to pass an \\`id\\` or \\`name\\` attribute to your input:\n ${htmlContent}\n Formik cannot determine which value to update. For more info see https://formik.org/docs/api/formik#${documentationAnchorLink}\n `\n );\n}\n\n/**\n * Transform Yup ValidationError to a more usable object\n */\nexport function yupToFormErrors<Values>(yupError: any): FormikErrors<Values> {\n let errors: FormikErrors<Values> = {};\n if (yupError.inner) {\n if (yupError.inner.length === 0) {\n return setIn(errors, yupError.path, yupError.message);\n }\n for (let err of yupError.inner) {\n if (!getIn(errors, err.path)) {\n errors = setIn(errors, err.path, err.message);\n }\n }\n }\n return errors;\n}\n\n/**\n * Validate a yup schema.\n */\nexport function validateYupSchema<T extends FormikValues>(\n values: T,\n schema: any,\n sync: boolean = false,\n context?: any\n): Promise<Partial<T>> {\n const normalizedValues: FormikValues = prepareDataForValidation(values);\n\n return schema[sync ? 'validateSync' : 'validate'](normalizedValues, {\n abortEarly: false,\n context: context || normalizedValues,\n });\n}\n\n/**\n * Recursively prepare values.\n */\nexport function prepareDataForValidation<T extends FormikValues>(\n values: T\n): FormikValues {\n let data: FormikValues = Array.isArray(values) ? [] : {};\n for (let k in values) {\n if (Object.prototype.hasOwnProperty.call(values, k)) {\n const key = String(k);\n if (Array.isArray(values[key]) === true) {\n data[key] = values[key].map((value: any) => {\n if (Array.isArray(value) === true || isPlainObject(value)) {\n return prepareDataForValidation(value);\n } else {\n return value !== '' ? value : undefined;\n }\n });\n } else if (isPlainObject(values[key])) {\n data[key] = prepareDataForValidation(values[key]);\n } else {\n data[key] = values[key] !== '' ? values[key] : undefined;\n }\n }\n }\n return data;\n}\n\n/**\n * deepmerge array merging algorithm\n * https://github.com/KyleAMathews/deepmerge#combine-array\n */\nfunction arrayMerge(target: any[], source: any[], options: any): any[] {\n const destination = target.slice();\n\n source.forEach(function merge(e: any, i: number) {\n if (typeof destination[i] === 'undefined') {\n const cloneRequested = options.clone !== false;\n const shouldClone = cloneRequested && options.isMergeableObject(e);\n destination[i] = shouldClone\n ? deepmerge(Array.isArray(e) ? [] : {}, e, options)\n : e;\n } else if (options.isMergeableObject(e)) {\n destination[i] = deepmerge(target[i], e, options);\n } else if (target.indexOf(e) === -1) {\n destination.push(e);\n }\n });\n return destination;\n}\n\n/** Return multi select values based on an array of options */\nfunction getSelectedValues(options: any[]) {\n return Array.from(options)\n .filter(el => el.selected)\n .map(el => el.value);\n}\n\n/** Return the next value for a checkbox */\nfunction getValueForCheckbox(\n currentValue: string | any[],\n checked: boolean,\n valueProp: any\n) {\n // If the current value was a boolean, return a boolean\n if (typeof currentValue === 'boolean') {\n return Boolean(checked);\n }\n\n // If the currentValue was not a boolean we want to return an array\n let currentArrayOfValues = [];\n let isValueInArray = false;\n let index = -1;\n\n if (!Array.isArray(currentValue)) {\n // eslint-disable-next-line eqeqeq\n if (!valueProp || valueProp == 'true' || valueProp == 'false') {\n return Boolean(checked);\n }\n } else {\n // If the current value is already an array, use it\n currentArrayOfValues = currentValue;\n index = currentValue.indexOf(valueProp);\n isValueInArray = index >= 0;\n }\n\n // If the checkbox was checked and the value is not already present in the aray we want to add the new value to the array of values\n if (checked && valueProp && !isValueInArray) {\n return currentArrayOfValues.concat(valueProp);\n }\n\n // If the checkbox was unchecked and the value is not in the array, simply return the already existing array of values\n if (!isValueInArray) {\n return currentArrayOfValues;\n }\n\n // If the checkbox was unchecked and the value is in the array, remove the value and return the array\n return currentArrayOfValues\n .slice(0, index)\n .concat(currentArrayOfValues.slice(index + 1));\n}\n\n// 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.\n// @see https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined'\n ? React.useLayoutEffect\n : React.useEffect;\n\nfunction useEventCallback<T extends (...args: any[]) => any>(fn: T): T {\n const ref: any = React.useRef(fn);\n\n // we copy a ref to the callback scoped to the current state/props on each render\n useIsomorphicLayoutEffect(() => {\n ref.current = fn;\n });\n\n return React.useCallback(\n (...args: any[]) => ref.current.apply(void 0, args),\n []\n ) as T;\n}\n","import * as React from 'react';\nimport {\n FormikProps,\n GenericFieldHTMLAttributes,\n FieldMetaProps,\n FieldHelperProps,\n FieldInputProps,\n FieldValidator,\n} from './types';\nimport { useFormikContext } from './FormikContext';\nimport { isFunction, isEmptyChildren, isObject } from './utils';\nimport invariant from 'tiny-warning';\n\nexport interface FieldProps<V = any, FormValues = any> {\n field: FieldInputProps<V>;\n form: FormikProps<FormValues>; // if ppl want to restrict this for a given form, let them.\n meta: FieldMetaProps<V>;\n}\n\nexport interface FieldConfig<V = any> {\n /**\n * Field component to render. Can either be a string like 'select' or a component.\n */\n component?:\n | string\n | React.ComponentType<FieldProps<V>>\n | React.ComponentType\n | React.ForwardRefExoticComponent<any>;\n\n /**\n * Component to render. Can either be a string e.g. 'select', 'input', or 'textarea', or a component.\n */\n as?:\n | React.ComponentType<FieldProps<V>['field']>\n | string\n | React.ComponentType\n | React.ForwardRefExoticComponent<any>;\n\n /**\n * Render prop (works like React router's <Route render={props =>} />)\n * @deprecated\n */\n render?: (props: FieldProps<V>) => React.ReactNode;\n\n /**\n * Children render function <Field name>{props => ...}</Field>)\n */\n children?: ((props: FieldProps<V>) => React.ReactNode) | React.ReactNode;\n\n /**\n * Validate a single field value independently\n */\n validate?: FieldValidator;\n\n /**\n * Field name\n */\n name: string;\n\n /** HTML input type */\n type?: string;\n\n /** Field value */\n value?: any;\n\n /** Inner ref */\n innerRef?: (instance: any) => void;\n}\n\nexport type FieldAttributes<T> = GenericFieldHTMLAttributes &\n FieldConfig<T> &\n T & { name: string };\n\nexport type FieldHookConfig<T> = GenericFieldHTMLAttributes & FieldConfig<T>;\n\nexport function useField<Val = any>(\n propsOrFieldName: string | FieldHookConfig<Val>\n): [FieldInputProps<Val>, FieldMetaProps<Val>, FieldHelperProps<Val>] {\n const formik = useFormikContext();\n const {\n getFieldProps,\n getFieldMeta,\n getFieldHelpers,\n registerField,\n unregisterField,\n } = formik;\n\n const isAnObject = isObject(propsOrFieldName);\n\n // Normalize propsOrFieldName to FieldHookConfig<Val>\n const props: FieldHookConfig<Val> = isAnObject\n ? (propsOrFieldName as FieldHookConfig<Val>)\n : { name: propsOrFieldName as string };\n\n const { name: fieldName, validate: validateFn } = props;\n\n React.useEffect(() => {\n if (fieldName) {\n registerField(fieldName, {\n validate: validateFn,\n });\n }\n return () => {\n if (fieldName) {\n unregisterField(fieldName);\n }\n };\n }, [registerField, unregisterField, fieldName, validateFn]);\n\n if (__DEV__) {\n invariant(\n formik,\n 'useField() / <Field /> must be used underneath a <Formik> component or withFormik() higher order component'\n );\n }\n\n invariant(\n fieldName,\n 'Invalid field name. Either pass `useField` a string or an object containing a `name` key.'\n );\n\n const fieldHelpers = React.useMemo(() => getFieldHelpers(fieldName), [\n getFieldHelpers,\n fieldName,\n ]);\n\n return [getFieldProps(props), getFieldMeta(fieldName), fieldHelpers];\n}\n\nexport function Field({\n validate,\n name,\n render,\n children,\n as: is, // `as` is reserved in typescript lol\n component,\n ...props\n}: FieldAttributes<any>) {\n const {\n validate: _validate,\n validationSchema: _validationSchema,\n\n ...formik\n } = useFormikContext();\n\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n !render,\n `<Field render> has been deprecated and will be removed in future versions of Formik. Please use a child callback function instead. To get rid of this warning, replace <Field name=\"${name}\" render={({field, form}) => ...} /> with <Field name=\"${name}\">{({field, form, meta}) => ...}</Field>`\n );\n\n invariant(\n !(is && children && isFunction(children)),\n 'You should not use <Field as> and <Field children> as a function in the same <Field> component; <Field as> will be ignored.'\n );\n\n invariant(\n !(component && children && isFunction(children)),\n 'You should not use <Field component> and <Field children> as a function in the same <Field> component; <Field component> will be ignored.'\n );\n\n invariant(\n !(render && children && !isEmptyChildren(children)),\n 'You should not use <Field render> and <Field children> in the same <Field> component; <Field children> will be ignored'\n );\n // eslint-disable-next-line\n }, []);\n }\n\n // Register field and field-level validation with parent <Formik>\n const { registerField, unregisterField } = formik;\n React.useEffect(() => {\n registerField(name, {\n validate: validate,\n });\n return () => {\n unregisterField(name);\n };\n }, [registerField, unregisterField, name, validate]);\n const field = formik.getFieldProps({ name, ...props });\n const meta = formik.getFieldMeta(name);\n const legacyBag = { field, form: formik };\n\n if (render) {\n return render({ ...legacyBag, meta });\n }\n\n if (isFunction(children)) {\n return children({ ...legacyBag, meta });\n }\n\n if (component) {\n // This behavior is backwards compat with earlier Formik 0.9 to 1.x\n if (typeof component === 'string') {\n const { innerRef, ...rest } = props;\n return React.createElement(\n component,\n { ref: innerRef, ...field, ...rest },\n children\n );\n }\n // We don't pass `meta` for backwards compat\n return React.createElement(\n component,\n { field, form: formik, ...props },\n children\n );\n }\n\n // default to input here so we can check for both `as` and `children` above\n const asElement = is || 'input';\n\n if (typeof asElement === 'string') {\n const { innerRef, ...rest } = props;\n return React.createElement(\n asElement,\n { ref: innerRef, ...field, ...rest },\n children\n );\n }\n\n return React.createElement(asElement, { ...field, ...props }, children);\n}\n","import * as React from 'react';\nimport { useFormikContext } from './FormikContext';\n\nexport type FormikFormProps = Pick<\n React.FormHTMLAttributes<HTMLFormElement>,\n Exclude<\n keyof React.FormHTMLAttributes<HTMLFormElement>,\n 'onReset' | 'onSubmit'\n >\n>;\n\ntype FormProps = React.ComponentPropsWithoutRef<'form'>;\n\n// @todo tests\nexport const Form = React.forwardRef<HTMLFormElement, FormProps>(\n (props: FormikFormProps, ref) => {\n // iOS needs an \"action\" attribute for nice input: https://stackoverflow.com/a/39485162/406725\n // We default the action to \"#\" in case the preventDefault fails (just updates the URL hash)\n const { action, ...rest } = props;\n const _action = action ?? '#';\n const { handleReset, handleSubmit } = useFormikContext();\n return (\n <form\n onSubmit={handleSubmit}\n ref={ref}\n onReset={handleReset}\n action={_action}\n {...rest}\n />\n );\n }\n);\n\nForm.displayName = 'Form';\n","import * as React from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\n\nimport { FormikContextType } from './types';\nimport { FormikConsumer } from './FormikContext';\nimport invariant from 'tiny-warning';\n\n/**\n * Connect any component to Formik context, and inject as a prop called `formik`;\n * @param Comp React Component\n */\nexport function connect<OuterProps, Values = {}>(\n Comp: React.ComponentType<OuterProps & { formik: FormikContextType<Values> }>\n) {\n const C: React.FC<OuterProps> = (props: OuterProps) => (\n <FormikConsumer>\n {formik => {\n invariant(\n !!formik,\n `Formik context is undefined, please verify you are rendering <Form>, <Field>, <FastField>, <FieldArray>, or your custom context-using component as a child of a <Formik> component. Component name: ${Comp.name}`\n );\n return <Comp {...props} formik={formik} />;\n }}\n </FormikConsumer>\n );\n const componentDisplayName =\n Comp.displayName ||\n Comp.name ||\n (Comp.constructor && Comp.constructor.name) ||\n 'Component';\n\n // Assign Comp to C.WrappedComponent so we can access the inner component in tests\n // For example, <Field.WrappedComponent /> gets us <FieldInner/>\n (C as React.FC<OuterProps> & {\n WrappedComponent: React.ReactNode;\n }).WrappedComponent = Comp;\n\n C.displayName = `FormikConnect(${componentDisplayName})`;\n\n return hoistNonReactStatics(\n C,\n Comp as React.ComponentClass<\n OuterProps & { formik: FormikContextType<Values> }\n > // cast type to ComponentClass (even if SFC)\n ) as React.ComponentType<OuterProps>;\n}\n","import cloneDeep from 'lodash/cloneDeep';\nimport * as React from 'react';\nimport isEqual from 'react-fast-compare';\nimport { connect } from './connect';\nimport {\n FormikContextType,\n FormikProps,\n FormikState,\n SharedRenderProps,\n} from './types';\nimport {\n getIn,\n isEmptyArray,\n isEmptyChildren,\n isFunction,\n isObject,\n setIn,\n} from './utils';\n\nexport type FieldArrayRenderProps = ArrayHelpers & {\n form: FormikProps<any>;\n name: string;\n};\n\nexport type FieldArrayConfig = {\n /** Really the path to the array field to be updated */\n name: string;\n /** Should field array validate the form AFTER array updates/changes? */\n validateOnChange?: boolean;\n} & SharedRenderProps<FieldArrayRenderProps>;\nexport interface ArrayHelpers<T extends any[] = any[]> {\n /** Imperatively add a value to the end of an array */\n push<X = T[number]>(obj: X): void;\n /** Curried fn to add a value to the end of an array */\n handlePush<X = T[number]>(obj: X): () => void;\n /** Imperatively swap two values in an array */\n swap: (indexA: number, indexB: number) => void;\n /** Curried fn to swap two values in an array */\n handleSwap: (indexA: number, indexB: number) => () => void;\n /** Imperatively move an element in an array to another index */\n move: (from: number, to: number) => void;\n /** Imperatively move an element in an array to another index */\n handleMove: (from: number, to: number) => () => void;\n /** Imperatively insert an element at a given index into the array */\n insert<X = T[number]>(index: number, value: X): void;\n /** Curried fn to insert an element at a given index into the array */\n handleInsert<X = T[number]>(index: number, value: X): () => void;\n /** Imperatively replace a value at an index of an array */\n replace<X = T[number]>(index: number, value: X): void;\n /** Curried fn to replace an element at a given index into the array */\n handleReplace<X = T[number]>(index: number, value: X): () => void;\n /** Imperatively add an element to the beginning of an array and return its length */\n unshift<X = T[number]>(value: X): number;\n /** Curried fn to add an element to the beginning of an array */\n handleUnshift<X = T[number]>(value: X): () => void;\n /** Curried fn to remove an element at an index of an array */\n handleRemove: (index: number) => () => void;\n /** Curried fn to remove a value from the end of the array */\n handlePop: () => () => void;\n /** Imperatively remove and element at an index of an array */\n remove<X = T[number]>(index: number): X | undefined;\n /** Imperatively remove and return value from the end of the array */\n pop<X = T[number]>(): X | undefined;\n}\n\n/**\n * Some array helpers!\n */\nexport const move = <T,>(array: T[], from: number, to: number) => {\n const copy = copyArrayLike(array);\n const value = copy[from];\n copy.splice(from, 1);\n copy.splice(to, 0, value);\n return copy;\n};\n\nexport const swap = <T,>(\n arrayLike: ArrayLike<T>,\n indexA: number,\n indexB: number\n) => {\n const copy = copyArrayLike(arrayLike);\n const a = copy[indexA];\n copy[indexA] = copy[indexB];\n copy[indexB] = a;\n return copy;\n};\n\nexport const insert = <T,>(\n arrayLike: ArrayLike<T>,\n index: number,\n value: T\n) => {\n const copy = copyArrayLike(arrayLike);\n copy.splice(index, 0, value);\n return copy;\n};\n\nexport const replace = <T,>(\n arrayLike: ArrayLike<T>,\n index: number,\n value: T\n) => {\n const copy = copyArrayLike(arrayLike);\n copy[index] = value;\n return copy;\n};\n\nconst copyArrayLike = (arrayLike: ArrayLike<any>) => {\n if (!arrayLike) {\n return [];\n } else if (Array.isArray(arrayLike)) {\n return [...arrayLike];\n } else {\n const maxIndex = Object.keys(arrayLike)\n .map(key => parseInt(key))\n .reduce((max, el) => (el > max ? el : max), 0);\n return Array.from({ ...arrayLike, length: maxIndex + 1 });\n }\n};\n\nconst createAlterationHandler = (\n alteration: boolean | Function,\n defaultFunction: Function\n) => {\n const fn = typeof alteration === 'function' ? alteration : defaultFunction;\n\n return (data: any | any[]) => {\n if (Array.isArray(data) || isObject(data)) {\n const clone = copyArrayLike(data);\n return fn(clone);\n }\n\n // This can be assumed to be a primitive, which\n // is a case for top level validation errors\n return data;\n };\n};\n\nclass FieldArrayInner<Values = {}> extends React.Component<\n FieldArrayConfig & { formik: FormikContextType<Values> },\n {}\n> {\n static defaultProps = {\n validateOnChange: true,\n };\n\n constructor(props: FieldArrayConfig & { formik: FormikContextType<Values> }) {\n super(props);\n // We need TypeScript generics on these, so we'll bind them in the constructor\n // @todo Fix TS 3.2.1\n this.remove = this.remove.bind(this) as any;\n this.pop = this.pop.bind(this) as any;\n }\n\n componentDidUpdate(\n prevProps: FieldArrayConfig & { formik: FormikContextType<Values> }\n ) {\n if (\n this.props.validateOnChange &&\n this.props.formik.validateOnChange &&\n !isEqual(\n getIn(prevProps.formik.values, prevProps.name),\n getIn(this.props.formik.values, this.props.name)\n )\n ) {\n this.props.formik.validateForm(this.props.formik.values);\n }\n }\n\n updateArrayField = (\n fn: Function,\n alterTouched: boolean | Function,\n alterErrors: boolean | Function\n ) => {\n const {\n name,\n\n formik: { setFormikState },\n } = this.props;\n setFormikState((prevState: FormikState<any>) => {\n let updateErrors = createAlterationHandler(alterErrors, fn);\n let updateTouched = createAlterationHandler(alterTouched, fn);\n\n // values fn should be executed before updateErrors and updateTouched,\n // otherwise it causes an error with unshift.\n let values = setIn(\n prevState.values,\n name,\n fn(getIn(prevState.values, name))\n );\n\n let fieldError = alterErrors\n ? updateErrors(getIn(prevState.errors, name))\n : undefined;\n let fieldTouched = alterTouched\n ? updateTouched(getIn(prevState.touched, name))\n : undefined;\n\n if (isEmptyArray(fieldError)) {\n fieldError = undefined;\n }\n if (isEmptyArray(fieldTouched)) {\n fieldTouched = undefined;\n }\n\n return {\n ...prevState,\n values,\n errors: alterErrors\n ? setIn(prevState.errors, name, fieldError)\n : prevState.errors,\n touched: alterTouched\n ? setIn(prevState.touched, name, fieldTouched)\n : prevState.touched,\n };\n });\n };\n\n push = (value: any) =>\n this.updateArrayField(\n (arrayLike: ArrayLike<any>) => [\n ...copyArrayLike(arrayLike),\n cloneDeep(value),\n ],\n false,\n false\n );\n\n handlePush = (value: any) => () => this.push(value);\n\n swap = (indexA: number, indexB: number) =>\n this.updateArrayField(\n (array: any[]) => swap(array, indexA, indexB),\n true,\n true\n );\n\n handleSwap = (indexA: number, indexB: number) => () =>\n this.swap(indexA, indexB);\n\n move = (from: number, to: number) =>\n this.updateArrayField((array: any[]) => move(array, from, to), true, true);\n\n handleMove = (from: number, to: number) => () => this.move(from, to);\n\n insert = (index: number, value: any) =>\n this.updateArrayField(\n (array: any[]) => insert(array, index, value),\n (array: any[]) => insert(array, index, null),\n (array: any[]) => insert(array, index, null)\n );\n\n handleInsert = (index: number, value: any) => () => this.insert(index, value);\n\n replace = (index: number, value: any) =>\n this.updateArrayField(\n (array: any[]) => replace(array, index, value),\n false,\n false\n );\n\n handleReplace = (index: number, value: any) => () =>\n this.replace(index, value);\n\n unshift = (value: any) => {\n let length = -1;\n this.updateArrayField(\n (array: any[]) => {\n const arr = array ? [value, ...array] : [value];\n if (length < 0) {\n length = arr.length;\n }\n return arr;\n },\n (array: any[]) => {\n const arr = array ? [null, ...array] : [null];\n if (length < 0) {\n length = arr.length;\n }\n return arr;\n },\n (array: any[]) => {\n const arr = array ? [null, ...array] : [null];\n if (length < 0) {\n length = arr.length;\n }\n return arr;\n }\n );\n return length;\n };\n\n handleUnshift = (value: any) => () => this.unshift(value);\n\n remove<T>(index: number): T {\n // We need to make sure we also remove relevant pieces of `touched` and `errors`\n let result: any;\n this.updateArrayField(\n // so this gets call 3 times\n (array?: any[]) => {\n const copy = array ? copyArrayLike(array) : [];\n if (!result) {\n result = copy[index];\n }\n if (isFunction(copy.splice)) {\n copy.splice(index, 1);\n }\n // if the array only includes undefined values we have to return an empty array\n return isFunction(copy.every)\n ? copy.every(v => v === undefined)\n ? []\n : copy\n : copy;\n },\n true,\n true\n );\n\n return result as T;\n }\n\n handleRemove = (index: number) => () => this.remove<any>(index);\n\n pop<T>(): T {\n // Remove relevant pieces of `touched` and `errors` too!\n let result: any;\n this.updateArrayField(\n // so this gets call 3 times\n (array: any[]) => {\n const tmp = array.slice();\n if (!result) {\n result = tmp && tmp.pop && tmp.pop();\n }\n return tmp;\n },\n true,\n true\n );\n\n return result as T;\n }\n\n handlePop = () => () => this.pop<any>();\n\n render() {\n const arrayHelpers: ArrayHelpers = {\n push: this.push,\n pop: this.pop,\n swap: this.swap,\n move: this.move,\n insert: this.insert,\n replace: this.replace,\n unshift: this.unshift,\n remove: this.remove,\n handlePush: this.handlePush,\n handlePop: this.handlePop,\n handleSwap: this.handleSwap,\n handleMove: this.handleMove,\n handleInsert: this.handleInsert,\n handleReplace: this.handleReplace,\n handleUnshift: this.handleUnshift,\n handleRemove: this.handleRemove,\n };\n\n const {\n component,\n render,\n children,\n name,\n formik: {\n validate: _validate,\n validationSchema: _validationSchema,\n ...restOfFormik\n },\n } = this.props;\n\n const props: FieldArrayRenderProps = {\n ...arrayHelpers,\n form: restOfFormik,\n name,\n };\n\n return component\n ? React.createElement(component as any, props)\n : render\n ? (render as any)(props)\n : children // children come last, always called\n ? typeof children === 'function'\n ? (children as any)(props)\n : !isEmptyChildren(children)\n ? React.Children.only(children)\n : null\n : null;\n }\n}\n\nexport const FieldArray = connect<FieldArrayConfig, any>(FieldArrayInner);\n","import * as React from 'react';\n\nimport {\n FormikProps,\n GenericFieldHTMLAttributes,\n FormikContextType,\n FieldMetaProps,\n FieldInputProps,\n} from './types';\nimport invariant from 'tiny-warning';\nimport { getIn, isEmptyChildren, isFunction } from './utils';\nimport { FieldConfig } from './Field';\nimport { connect } from './connect';\n\ntype $FixMe = any;\n\nexport interface FastFieldProps<V = any> {\n field: FieldInputProps<V>;\n meta: FieldMetaProps<V>;\n form: FormikProps<V>; // if ppl want to restrict this for a given form, let them.\n}\n\nexport type FastFieldConfig<T> = FieldConfig & {\n /** Override FastField's default shouldComponentUpdate */\n shouldUpdate?: (\n nextProps: T & GenericFieldHTMLAttributes,\n props: {}\n ) => boolean;\n};\n\nexport type FastFieldAttributes<T> = GenericFieldHTMLAttributes &\n FastFieldConfig<T> &\n T;\n\ntype FastFieldInnerProps<Values = {}, Props = {}> = FastFieldAttributes<\n Props\n> & { formik: FormikContextType<Values> };\n\n/**\n * Custom Field component for quickly hooking into Formik\n * context and wiring up forms.\n */\nclass FastFieldInner<Values = {}, Props = {}> extends React.Component<\n FastFieldInnerProps<Values, Props>,\n {}\n> {\n constructor(props: FastFieldInnerProps<Values, Props>) {\n super(props);\n const { render, children, component, as: is, name } = props;\n invariant(\n !render,\n `<FastField render> has been deprecated. Please use a child callback function instead: <FastField name={${name}}>{props => ...}</FastField> instead.`\n );\n invariant(\n !(component && render),\n 'You should not use <FastField component> and <FastField render> in the same <FastField> component; <FastField component> will be ignored'\n );\n\n invariant(\n !(is && children && isFunction(children)),\n 'You should not use <FastField as> and <FastField children> as a function in the same <FastField> component; <FastField as> will be ignored.'\n );\n\n invariant(\n !(component && children && isFunction(children)),\n 'You should not use <FastField component> and <FastField children> as a function in the same <FastField> component; <FastField component> will be ignored.'\n );\n\n invariant(\n !(render && children && !isEmptyChildren(children)),\n 'You should not use <FastField render> and <FastField children> in the same <FastField> component; <FastField children> will be ignored'\n );\n }\n\n shouldComponentUpdate(props: FastFieldInnerProps<Values, Props>) {\n if (this.props.shouldUpdate) {\n return this.props.shouldUpdate(props, this.props);\n } else if (\n props.name !== this.props.name ||\n getIn(props.formik.values, this.props.name) !==\n getIn(this.props.formik.values, this.props.name) ||\n getIn(props.formik.errors, this.props.name) !==\n getIn(this.props.formik.errors, this.props.name) ||\n getIn(props.formik.touched, this.props.name) !==\n getIn(this.props.formik.touched, this.props.name) ||\n Object.keys(this.props).length !== Object.keys(props).length ||\n props.formik.isSubmitting !== this.props.formik.isSubmitting\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n componentDidMount() {\n // Register the Field with the parent Formik. Parent will cycle through\n // registered Field's validate fns right prior to submit\n this.props.formik.registerField(this.props.name, {\n validate: this.props.validate,\n });\n }\n\n componentDidUpdate(prevProps: FastFieldAttributes<Props>) {\n if (this.props.name !== prevProps.name) {\n this.props.formik.unregisterField(prevProps.name);\n this.props.formik.registerField(this.props.name, {\n validate: this.props.validate,\n });\n }\n\n if (this.props.validate !== prevProps.validate) {\n this.props.formik.registerField(this.props.name, {\n validate: this.props.validate,\n });\n }\n }\n\n componentWillUnmount() {\n this.props.formik.unregisterField(this.props.name);\n }\n\n render() {\n const {\n validate,\n name,\n render,\n as: is,\n children,\n component,\n shouldUpdate,\n formik,\n ...props\n } = this.props as FastFieldInnerProps<Values, Props>;\n\n const {\n validate: _validate,\n validationSchema: _validationSchema,\n ...restOfFormik\n } = formik;\n const field = formik.getFieldProps({ name, ...props });\n const meta = {\n value: getIn(formik.values, name),\n error: getIn(formik.errors, name),\n touched: !!getIn(formik.touched, name),\n initialValue: getIn(formik.initialValues, name),\n initialTouched: !!getIn(formik.initialTouched, name),\n initialError: getIn(formik.initialErrors, name),\n };\n\n const bag = { field, meta, form: restOfFormik };\n\n if (render) {\n return (render as any)(bag);\n }\n\n if (isFunction(children)) {\n return (children as (props: FastFieldProps<any>) => React.ReactNode)(bag);\n }\n\n if (component) {\n // This behavior is backwards compat with earlier Formik 0.9 to 1.x\n if (typeof component === 'string') {\n const { innerRef, ...rest } = props;\n return React.createElement(\n component,\n { ref: innerRef, ...field, ...(rest as $FixMe) },\n children\n );\n }\n // We don't pass `meta` for backwards compat\n return React.createElement(\n component as React.ComponentClass<$FixMe>,\n { field, form: formik, ...props },\n children\n );\n }\n\n // default to input here so we can check for both `as` and `children` above\n const asElement = is || 'input';\n\n if (typeof asElement === 'string') {\n const { innerRef, ...rest } = props;\n return React.createElement(\n asElement,\n { ref: innerRef, ...field, ...(rest as $FixMe) },\n children\n );\n }\n\n return React.createElement(\n asElement as React.ComponentClass,\n { ...field, ...props },\n children\n );\n }\n}\n\nexport const FastField = connect<FastFieldAttributes<any>, any>(FastFieldInner);\n","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import * as glMatrix from \"./common.js\";\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(9);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\n\nexport function fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n\n return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b00 = b[0],\n b01 = b[1],\n b02 = b[2];\n var b10 = b[3],\n b11 = b[4],\n b12 = b[5];\n var b20 = b[6],\n b21 = b[7],\n b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nexport function translate(out, a, v) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n x = v[0],\n y = v[1];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function rotate(out, a, rad) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1];\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nexport function fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nexport function normalFromMat4(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nexport function projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7],\n a8 = a[8];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\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 * SVG elements are case-sensitive.\n *\n * @see {@link https://developer.mozilla.org/docs/Web/SVG/Element#svg_elements_a_to_z}\n */\nexports.CASE_SENSITIVE_TAG_NAMES = [\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'linearGradient',\n 'radialGradient',\n 'textPath'\n];\n","// constants\nvar HTML = 'html';\nvar HEAD = 'head';\nvar BODY = 'body';\nvar FIRST_TAG_REGEX = /<([a-zA-Z]+[0-9]?)/; // e.g., <h1>\n// match-all-characters in case of newlines (DOTALL)\nvar HEAD_TAG_REGEX = /<head[^]*>/i;\nvar BODY_TAG_REGEX = /<body[^]*>/i;\n\n// falls back to `parseFromString` if `createHTMLDocument` cannot be used\nvar parseFromDocument = function () {\n throw new Error(\n 'This browser does not support `document.implementation.createHTMLDocument`'\n );\n};\n\nvar parseFromString = function () {\n throw new Error(\n 'This browser does not support `DOMParser.prototype.parseFromString`'\n );\n};\n\nvar DOMParser = typeof window === 'object' && window.DOMParser;\n\n/**\n * DOMParser (performance: slow).\n *\n * @see https://developer.mozilla.org/docs/Web/API/DOMParser#Parsing_an_SVG_or_HTML_document\n */\nif (typeof DOMParser === 'function') {\n var domParser = new DOMParser();\n var mimeType = 'text/html';\n\n /**\n * Creates an HTML document using `DOMParser.parseFromString`.\n *\n * @param {string} html - The HTML string.\n * @param {string} [tagName] - The element to render the HTML (with 'body' as fallback).\n * @return {HTMLDocument}\n */\n parseFromString = function (html, tagName) {\n if (tagName) {\n html = '<' + tagName + '>' + html + '</' + tagName + '>';\n }\n\n return domParser.parseFromString(html, mimeType);\n };\n\n parseFromDocument = parseFromString;\n}\n\n/**\n * DOMImplementation (performance: fair).\n *\n * @see https://developer.mozilla.org/docs/Web/API/DOMImplementation/createHTMLDocument\n */\nif (typeof document === 'object' && document.implementation) {\n var doc = document.implementation.createHTMLDocument();\n\n /**\n * Use HTML document created by `document.implementation.createHTMLDocument`.\n *\n * @param {string} html - The HTML string.\n * @param {string} [tagName] - The element to render the HTML (with 'body' as fallback).\n * @return {HTMLDocument}\n */\n parseFromDocument = function (html, tagName) {\n if (tagName) {\n var element = doc.documentElement.querySelector(tagName);\n element.innerHTML = html;\n return doc;\n }\n\n doc.documentElement.innerHTML = html;\n return doc;\n };\n}\n\n/**\n * Template (performance: fast).\n *\n * @see https://developer.mozilla.org/docs/Web/HTML/Element/template\n */\nvar template =\n typeof document === 'object' ? document.createElement('template') : {};\n\nvar parseFromTemplate;\n\nif (template.content) {\n /**\n * Uses a template element (content fragment) to parse HTML.\n *\n * @param {string} html - The HTML string.\n * @return {NodeList}\n */\n parseFromTemplate = function (html) {\n template.innerHTML = html;\n return template.content.childNodes;\n };\n}\n\n/**\n * Parses HTML string to DOM nodes.\n *\n * @param {string} html - HTML markup.\n * @return {NodeList}\n */\nfunction domparser(html) {\n var firstTagName;\n var match = html.match(FIRST_TAG_REGEX);\n\n if (match && match[1]) {\n firstTagName = match[1].toLowerCase();\n }\n\n var doc;\n var element;\n var elements;\n\n switch (firstTagName) {\n case HTML:\n doc = parseFromString(html);\n\n // the created document may come with filler head/body elements,\n // so make sure to remove them if they don't actually exist\n if (!HEAD_TAG_REGEX.test(html)) {\n element = doc.querySelector(HEAD);\n if (element) {\n element.parentNode.removeChild(element);\n }\n }\n\n if (!BODY_TAG_REGEX.test(html)) {\n element = doc.querySelector(BODY);\n if (element) {\n element.parentNode.removeChild(element);\n }\n }\n\n return doc.querySelectorAll(HTML);\n\n case HEAD:\n case BODY:\n doc = parseFromDocument(html);\n elements = doc.querySelectorAll(firstTagName);\n\n // if there's a sibling element, then return both elements\n if (BODY_TAG_REGEX.test(html) && HEAD_TAG_REGEX.test(html)) {\n return elements[0].parentNode.childNodes;\n }\n return elements;\n\n // low-level tag or text\n default:\n if (parseFromTemplate) {\n return parseFromTemplate(html);\n }\n element = parseFromDocument(html, BODY).querySelector(BODY);\n return element.childNodes;\n }\n}\n\nmodule.exports = domparser;\n","var domparser = require('./domparser');\nvar utilities = require('./utilities');\n\nvar formatDOM = utilities.formatDOM;\n\nvar DIRECTIVE_REGEX = /<(![a-zA-Z\\s]+)>/; // e.g., <!doctype html>\n\n/**\n * Parses HTML string to DOM nodes in browser.\n *\n * @param {string} html - HTML markup.\n * @return {DomElement[]} - DOM elements.\n */\nfunction HTMLDOMParser(html) {\n if (typeof html !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (html === '') {\n return [];\n }\n\n // match directive\n var match = html.match(DIRECTIVE_REGEX);\n var directive;\n\n if (match && match[1]) {\n directive = match[1];\n }\n\n return formatDOM(domparser(html), null, directive);\n}\n\nmodule.exports = HTMLDOMParser;\n","var domhandler = require('domhandler');\nvar constants = require('./constants');\n\nvar CASE_SENSITIVE_TAG_NAMES = constants.CASE_SENSITIVE_TAG_NAMES;\n\nvar Comment = domhandler.Comment;\nvar Element = domhandler.Element;\nvar ProcessingInstruction = domhandler.ProcessingInstruction;\nvar Text = domhandler.Text;\n\nvar caseSensitiveTagNamesMap = {};\nvar tagName;\n\nfor (var i = 0, len = CASE_SENSITIVE_TAG_NAMES.length; i < len; i++) {\n tagName = CASE_SENSITIVE_TAG_NAMES[i];\n caseSensitiveTagNamesMap[tagName.toLowerCase()] = tagName;\n}\n\n/**\n * Gets case-sensitive tag name.\n *\n * @param {string} tagName - Tag name in lowercase.\n * @returns {string|undefined} - Case-sensitive tag name.\n */\nfunction getCaseSensitiveTagName(tagName) {\n return caseSensitiveTagNamesMap[tagName];\n}\n\n/**\n * Formats DOM attributes to a hash map.\n *\n * @param {NamedNodeMap} attributes - List of attributes.\n * @returns {object} - Map of attribute name to value.\n */\nfunction formatAttributes(attributes) {\n var result = {};\n var attribute;\n // `NamedNodeMap` is array-like\n for (var i = 0, len = attributes.length; i < len; i++) {\n attribute = attributes[i];\n result[attribute.name] = attribute.value;\n }\n return result;\n}\n\n/**\n * Corrects the tag name if it is case-sensitive (SVG).\n * Otherwise, returns the lowercase tag name (HTML).\n *\n * @param {string} tagName - Lowercase tag name.\n * @returns {string} - Formatted tag name.\n */\nfunction formatTagName(tagName) {\n tagName = tagName.toLowerCase();\n var caseSensitiveTagName = getCaseSensitiveTagName(tagName);\n if (caseSensitiveTagName) {\n return caseSensitiveTagName;\n }\n return tagName;\n}\n\n/**\n * Transforms DOM nodes to `domhandler` nodes.\n *\n * @param {NodeList} nodes - DOM nodes.\n * @param {Element|null} [parent=null] - Parent node.\n * @param {string} [directive] - Directive.\n * @returns {Array<Comment|Element|ProcessingInstruction|Text>}\n */\nfunction formatDOM(nodes, parent, directive) {\n parent = parent || null;\n var result = [];\n var tagName;\n\n for (var index = 0, len = nodes.length; index < len; index++) {\n var node = nodes[index];\n var current;\n\n // set the node data given the type\n switch (node.nodeType) {\n case 1:\n tagName = formatTagName(node.nodeName);\n // script, style, or tag\n current = new Element(tagName, formatAttributes(node.attributes));\n current.children = formatDOM(\n // template children are on content\n tagName === 'template' ? node.content.childNodes : node.childNodes,\n current\n );\n break;\n\n case 3:\n current = new Text(node.nodeValue);\n break;\n\n case 8:\n current = new Comment(node.nodeValue);\n break;\n\n default:\n continue;\n }\n\n // set previous node next\n var prev = result[index - 1] || null;\n if (prev) {\n prev.next = current;\n }\n\n // set properties for current node\n current.parent = parent;\n current.prev = prev;\n current.next = null;\n\n result.push(current);\n }\n\n if (directive) {\n current = new ProcessingInstruction(\n directive.substring(0, directive.indexOf(' ')).toLowerCase(),\n directive\n );\n current.next = result[0] || null;\n current.parent = parent;\n result.unshift(current);\n\n if (result[1]) {\n result[1].prev = result[0];\n }\n }\n\n return result;\n}\n\nexports.formatAttributes = formatAttributes;\nexports.formatDOM = formatDOM;\n","var domhandler = require('domhandler');\nvar htmlToDOM = require('html-dom-parser');\n\nvar attributesToProps = require('./lib/attributes-to-props');\nvar domToReact = require('./lib/dom-to-react');\n\n// support backwards compatibility for ES Module\nhtmlToDOM =\n /* istanbul ignore next */\n typeof htmlToDOM.default === 'function' ? htmlToDOM.default : htmlToDOM;\n\nvar domParserOptions = { lowerCaseAttributeNames: false };\n\n/**\n * Converts HTML string to React elements.\n *\n * @param {string} html - HTML string.\n * @param {object} [options] - Parser options.\n * @param {object} [options.htmlparser2] - htmlparser2 options.\n * @param {object} [options.library] - Library for React, Preact, etc.\n * @param {Function} [options.replace] - Replace method.\n * @returns {JSX.Element|JSX.Element[]|string} - React element(s), empty array, or string.\n */\nfunction HTMLReactParser(html, options) {\n if (typeof html !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n if (html === '') {\n return [];\n }\n options = options || {};\n return domToReact(\n htmlToDOM(html, options.htmlparser2 || domParserOptions),\n options\n );\n}\n\nHTMLReactParser.domToReact = domToReact;\nHTMLReactParser.htmlToDOM = htmlToDOM;\nHTMLReactParser.attributesToProps = attributesToProps;\n\n// domhandler\nHTMLReactParser.Comment = domhandler.Comment;\nHTMLReactParser.Element = domhandler.Element;\nHTMLReactParser.ProcessingInstruction = domhandler.ProcessingInstruction;\nHTMLReactParser.Text = domhandler.Text;\n\n// support CommonJS and ES Modules\nmodule.exports = HTMLReactParser;\nHTMLReactParser.default = HTMLReactParser;\n","var reactProperty = require('react-property');\nvar utilities = require('./utilities');\n\n// https://reactjs.org/docs/uncontrolled-components.html\n// https://developer.mozilla.org/docs/Web/HTML/Attributes\nvar UNCONTROLLED_COMPONENT_ATTRIBUTES = ['checked', 'value'];\nvar UNCONTROLLED_COMPONENT_NAMES = ['input', 'select', 'textarea'];\n\nvar VALUE_ONLY_INPUTS = {\n reset: true,\n submit: true\n};\n\n/**\n * Converts HTML/SVG DOM attributes to React props.\n *\n * @param {object} [attributes={}] - HTML/SVG DOM attributes.\n * @param {string} [nodeName] - DOM node name.\n * @returns - React props.\n */\nmodule.exports = function attributesToProps(attributes, nodeName) {\n attributes = attributes || {};\n\n var attributeName;\n var attributeNameLowerCased;\n var attributeValue;\n var propName;\n var propertyInfo;\n var props = {};\n var inputIsValueOnly = attributes.type && VALUE_ONLY_INPUTS[attributes.type];\n\n for (attributeName in attributes) {\n attributeValue = attributes[attributeName];\n\n // ARIA (aria-*) or custom data (data-*) attribute\n if (reactProperty.isCustomAttribute(attributeName)) {\n props[attributeName] = attributeValue;\n continue;\n }\n\n // convert HTML/SVG attribute to React prop\n attributeNameLowerCased = attributeName.toLowerCase();\n propName = getPropName(attributeNameLowerCased);\n\n if (propName) {\n propertyInfo = reactProperty.getPropertyInfo(propName);\n\n // convert attribute to uncontrolled component prop (e.g., `value` to `defaultValue`)\n if (\n UNCONTROLLED_COMPONENT_ATTRIBUTES.indexOf(propName) !== -1 &&\n UNCONTROLLED_COMPONENT_NAMES.indexOf(nodeName) !== -1 &&\n !inputIsValueOnly\n ) {\n propName = getPropName('default' + attributeNameLowerCased);\n }\n\n props[propName] = attributeValue;\n\n switch (propertyInfo && propertyInfo.type) {\n case reactProperty.BOOLEAN:\n props[propName] = true;\n break;\n case reactProperty.OVERLOADED_BOOLEAN:\n if (attributeValue === '') {\n props[propName] = true;\n }\n break;\n }\n continue;\n }\n\n // preserve custom attribute if React >=16\n if (utilities.PRESERVE_CUSTOM_ATTRIBUTES) {\n props[attributeName] = attributeValue;\n }\n }\n\n // transform inline style to object\n utilities.setStyleProp(attributes.style, props);\n\n return props;\n};\n\n/**\n * Gets prop name from lowercased attribute name.\n *\n * @param {string} attributeName - Lowercased attribute name.\n * @returns - Prop name.\n */\nfunction getPropName(attributeName) {\n return reactProperty.possibleStandardNames[attributeName];\n}\n","var React = require('react');\nvar attributesToProps = require('./attributes-to-props');\nvar utilities = require('./utilities');\n\nvar setStyleProp = utilities.setStyleProp;\nvar canTextBeChildOfNode = utilities.canTextBeChildOfNode;\n\n/**\n * Converts DOM nodes to JSX element(s).\n *\n * @param {DomElement[]} nodes - DOM nodes.\n * @param {object} [options={}] - Options.\n * @param {Function} [options.replace] - Replacer.\n * @param {object} [options.library] - Library (React, Preact, etc.).\n * @returns - String or JSX element(s).\n */\nfunction domToReact(nodes, options) {\n options = options || {};\n\n var library = options.library || React;\n var cloneElement = library.cloneElement;\n var createElement = library.createElement;\n var isValidElement = library.isValidElement;\n\n var result = [];\n var node;\n var isWhitespace;\n var hasReplace = typeof options.replace === 'function';\n var replaceElement;\n var props;\n var children;\n var trim = options.trim;\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n node = nodes[i];\n\n // replace with custom React element (if present)\n if (hasReplace) {\n replaceElement = options.replace(node);\n\n if (isValidElement(replaceElement)) {\n // set \"key\" prop for sibling elements\n // https://fb.me/react-warning-keys\n if (len > 1) {\n replaceElement = cloneElement(replaceElement, {\n key: replaceElement.key || i\n });\n }\n result.push(replaceElement);\n continue;\n }\n }\n\n if (node.type === 'text') {\n isWhitespace = !node.data.trim().length;\n\n if (isWhitespace && node.parent && !canTextBeChildOfNode(node.parent)) {\n // We have a whitespace node that can't be nested in its parent\n // so skip it\n continue;\n }\n\n if (trim && isWhitespace) {\n // Trim is enabled and we have a whitespace node\n // so skip it\n continue;\n }\n\n // We have a text node that's not whitespace and it can be nested\n // in its parent so add it to the results\n result.push(node.data);\n continue;\n }\n\n props = node.attribs;\n if (skipAttributesToProps(node)) {\n setStyleProp(props.style, props);\n } else if (props) {\n props = attributesToProps(props, node.name);\n }\n\n children = null;\n\n switch (node.type) {\n case 'script':\n case 'style':\n // prevent text in <script> or <style> from being escaped\n // https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml\n if (node.children[0]) {\n props.dangerouslySetInnerHTML = {\n __html: node.children[0].data\n };\n }\n break;\n\n case 'tag':\n // setting textarea value in children is an antipattern in React\n // https://reactjs.org/docs/forms.html#the-textarea-tag\n if (node.name === 'textarea' && node.children[0]) {\n props.defaultValue = node.children[0].data;\n } else if (node.children && node.children.length) {\n // continue recursion of creating React elements (if applicable)\n children = domToReact(node.children, options);\n }\n break;\n\n // skip all other cases (e.g., comment)\n default:\n continue;\n }\n\n // set \"key\" prop for sibling elements\n // https://fb.me/react-warning-keys\n if (len > 1) {\n props.key = i;\n }\n\n result.push(createElement(node.name, props, children));\n }\n\n return result.length === 1 ? result[0] : result;\n}\n\n/**\n * Determines whether DOM element attributes should be transformed to props.\n * Web Components should not have their attributes transformed except for `style`.\n *\n * @param {DomElement} node\n * @returns - Whether node attributes should be converted to props.\n */\nfunction skipAttributesToProps(node) {\n return (\n utilities.PRESERVE_CUSTOM_ATTRIBUTES &&\n node.type === 'tag' &&\n utilities.isCustomComponent(node.name, node.attribs)\n );\n}\n\nmodule.exports = domToReact;\n","var React = require('react');\nvar styleToJS = require('style-to-js').default;\n\n/**\n * Swap key with value in an object.\n *\n * @param {object} obj - The object.\n * @param {Function} [override] - The override method.\n * @returns - The inverted object.\n */\nfunction invertObject(obj, override) {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError('First argument must be an object');\n }\n\n var key;\n var value;\n var isOverridePresent = typeof override === 'function';\n var overrides = {};\n var result = {};\n\n for (key in obj) {\n value = obj[key];\n\n if (isOverridePresent) {\n overrides = override(key, value);\n if (overrides && overrides.length === 2) {\n result[overrides[0]] = overrides[1];\n continue;\n }\n }\n\n if (typeof value === 'string') {\n result[value] = key;\n }\n }\n\n return result;\n}\n\n/**\n * Check if a given tag is a custom component.\n *\n * @see {@link https://github.com/facebook/react/blob/v16.6.3/packages/react-dom/src/shared/isCustomComponent.js}\n *\n * @param {string} tagName - The name of the html tag.\n * @param {object} props - The props being passed to the element.\n * @returns - Whether tag is custom component.\n */\nfunction isCustomComponent(tagName, props) {\n if (tagName.indexOf('-') === -1) {\n return props && typeof props.is === 'string';\n }\n\n switch (tagName) {\n // These are reserved SVG and MathML elements.\n // We don't mind this whitelist too much because we expect it to never grow.\n // The alternative is to track the namespace in a few places which is convoluted.\n // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts\n case 'annotation-xml':\n case 'color-profile':\n case 'font-face':\n case 'font-face-src':\n case 'font-face-uri':\n case 'font-face-format':\n case 'font-face-name':\n case 'missing-glyph':\n return false;\n default:\n return true;\n }\n}\n\nvar styleToJSOptions = { reactCompat: true };\n\n/**\n * Sets style prop.\n *\n * @param {null|undefined|string} style\n * @param {object} props\n */\nfunction setStyleProp(style, props) {\n if (style === null || style === undefined) {\n return;\n }\n try {\n props.style = styleToJS(style, styleToJSOptions);\n } catch (err) {\n props.style = {};\n }\n}\n\n/**\n * @constant {boolean}\n * @see {@link https://reactjs.org/blog/2017/09/08/dom-attributes-in-react-16.html}\n */\nvar PRESERVE_CUSTOM_ATTRIBUTES = React.version.split('.')[0] >= 16;\n\n// Taken from\n// https://github.com/facebook/react/blob/cae635054e17a6f107a39d328649137b83f25972/packages/react-dom/src/client/validateDOMNesting.js#L213\nvar elementsWithNoTextChildren = new Set([\n 'tr',\n 'tbody',\n 'thead',\n 'tfoot',\n 'colgroup',\n 'table',\n 'head',\n 'html',\n 'frameset'\n]);\n\n/**\n * Checks if the given node can contain text nodes\n *\n * @param {DomElement} node - Node.\n * @returns - Whether node can contain text nodes.\n */\nfunction canTextBeChildOfNode(node) {\n return !elementsWithNoTextChildren.has(node.name);\n}\n\nmodule.exports = {\n PRESERVE_CUSTOM_ATTRIBUTES: PRESERVE_CUSTOM_ATTRIBUTES,\n invertObject: invertObject,\n isCustomComponent: isCustomComponent,\n setStyleProp: setStyleProp,\n canTextBeChildOfNode: canTextBeChildOfNode,\n elementsWithNoTextChildren: elementsWithNoTextChildren\n};\n",null,null,null,"// =========\n// = humps =\n// =========\n// Underscore-to-camelCase converter (and vice versa)\n// for strings and object keys\n\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n\n\n;(function(global) {\n\n var _processKeys = function(convert, obj, options) {\n if(!_isObject(obj) || _isDate(obj) || _isRegExp(obj) || _isBoolean(obj) || _isFunction(obj)) {\n return obj;\n }\n\n var output,\n i = 0,\n l = 0;\n\n if(_isArray(obj)) {\n output = [];\n for(l=obj.length; i<l; i++) {\n output.push(_processKeys(convert, obj[i], options));\n }\n }\n else {\n output = {};\n for(var key in obj) {\n if(Object.prototype.hasOwnProperty.call(obj, key)) {\n output[convert(key, options)] = _processKeys(convert, obj[key], options);\n }\n }\n }\n return output;\n };\n\n // String conversion methods\n\n var separateWords = function(string, options) {\n options = options || {};\n var separator = options.separator || '_';\n var split = options.split || /(?=[A-Z])/;\n\n return string.split(split).join(separator);\n };\n\n var camelize = function(string) {\n if (_isNumerical(string)) {\n return string;\n }\n string = string.replace(/[\\-_\\s]+(.)?/g, function(match, chr) {\n return chr ? chr.toUpperCase() : '';\n });\n // Ensure 1st char is always lowercase\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n };\n\n var pascalize = function(string) {\n var camelized = camelize(string);\n // Ensure 1st char is always uppercase\n return camelized.substr(0, 1).toUpperCase() + camelized.substr(1);\n };\n\n var decamelize = function(string, options) {\n return separateWords(string, options).toLowerCase();\n };\n\n // Utilities\n // Taken from Underscore.js\n\n var toString = Object.prototype.toString;\n\n var _isFunction = function(obj) {\n return typeof(obj) === 'function';\n };\n var _isObject = function(obj) {\n return obj === Object(obj);\n };\n var _isArray = function(obj) {\n return toString.call(obj) == '[object Array]';\n };\n var _isDate = function(obj) {\n return toString.call(obj) == '[object Date]';\n };\n var _isRegExp = function(obj) {\n return toString.call(obj) == '[object RegExp]';\n };\n var _isBoolean = function(obj) {\n return toString.call(obj) == '[object Boolean]';\n };\n\n // Performant way to determine if obj coerces to a number\n var _isNumerical = function(obj) {\n obj = obj - 0;\n return obj === obj;\n };\n\n // Sets up function which handles processing keys\n // allowing the convert function to be modified by a callback\n var _processor = function(convert, options) {\n var callback = options && 'process' in options ? options.process : options;\n\n if(typeof(callback) !== 'function') {\n return convert;\n }\n\n return function(string, options) {\n return callback(string, convert, options);\n }\n };\n\n var humps = {\n camelize: camelize,\n decamelize: decamelize,\n pascalize: pascalize,\n depascalize: decamelize,\n camelizeKeys: function(object, options) {\n return _processKeys(_processor(camelize, options), object);\n },\n decamelizeKeys: function(object, options) {\n return _processKeys(_processor(decamelize, options), object, options);\n },\n pascalizeKeys: function(object, options) {\n return _processKeys(_processor(pascalize, options), object);\n },\n depascalizeKeys: function () {\n return this.decamelizeKeys.apply(this, arguments);\n }\n };\n\n if (typeof define === 'function' && define.amd) {\n define(humps);\n } else if (typeof module !== 'undefined' && module.exports) {\n module.exports = humps;\n } else {\n global.humps = humps;\n }\n\n})(this);\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\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(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Immutable = factory());\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n if (o !== o || o === Infinity) {\n return 0;\n }\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.of = function() {var keyValues = SLICE$0.call(arguments, 0);\n return emptyMap().withMutations(function(map ) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n if (end === Infinity) {\n end = originalSize;\n } else {\n end = end | 0;\n }\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n if (this._map && !this._map.has(k)) {\n var defaultVal = this._defaultValues[k];\n if (v === defaultVal) {\n return this;\n }\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n lastKeyOf: function(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function() {\n return Range(0, this.size);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n SetIterable.prototype.contains = SetIterable.prototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function(node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","// int64-buffer.js\n\n/*jshint -W018 */ // Confusing use of '!'.\n/*jshint -W030 */ // Expected an assignment or function call and instead saw an expression.\n/*jshint -W093 */ // Did you mean to return a conditional instead of an assignment?\n\nvar Uint64BE, Int64BE, Uint64LE, Int64LE;\n\n!function(exports) {\n // constants\n\n var UNDEFINED = \"undefined\";\n var BUFFER = (UNDEFINED !== typeof Buffer) && Buffer;\n var UINT8ARRAY = (UNDEFINED !== typeof Uint8Array) && Uint8Array;\n var ARRAYBUFFER = (UNDEFINED !== typeof ArrayBuffer) && ArrayBuffer;\n var ZERO = [0, 0, 0, 0, 0, 0, 0, 0];\n var isArray = Array.isArray || _isArray;\n var BIT32 = 4294967296;\n var BIT24 = 16777216;\n\n // storage class\n\n var storage; // Array;\n\n // generate classes\n\n Uint64BE = factory(\"Uint64BE\", true, true);\n Int64BE = factory(\"Int64BE\", true, false);\n Uint64LE = factory(\"Uint64LE\", false, true);\n Int64LE = factory(\"Int64LE\", false, false);\n\n // class factory\n\n function factory(name, bigendian, unsigned) {\n var posH = bigendian ? 0 : 4;\n var posL = bigendian ? 4 : 0;\n var pos0 = bigendian ? 0 : 3;\n var pos1 = bigendian ? 1 : 2;\n var pos2 = bigendian ? 2 : 1;\n var pos3 = bigendian ? 3 : 0;\n var fromPositive = bigendian ? fromPositiveBE : fromPositiveLE;\n var fromNegative = bigendian ? fromNegativeBE : fromNegativeLE;\n var proto = Int64.prototype;\n var isName = \"is\" + name;\n var _isInt64 = \"_\" + isName;\n\n // properties\n proto.buffer = void 0;\n proto.offset = 0;\n proto[_isInt64] = true;\n\n // methods\n proto.toNumber = toNumber;\n proto.toString = toString;\n proto.toJSON = toNumber;\n proto.toArray = toArray;\n\n // add .toBuffer() method only when Buffer available\n if (BUFFER) proto.toBuffer = toBuffer;\n\n // add .toArrayBuffer() method only when Uint8Array available\n if (UINT8ARRAY) proto.toArrayBuffer = toArrayBuffer;\n\n // isUint64BE, isInt64BE\n Int64[isName] = isInt64;\n\n // CommonJS\n exports[name] = Int64;\n\n return Int64;\n\n // constructor\n function Int64(buffer, offset, value, raddix) {\n if (!(this instanceof Int64)) return new Int64(buffer, offset, value, raddix);\n return init(this, buffer, offset, value, raddix);\n }\n\n // isUint64BE, isInt64BE\n function isInt64(b) {\n return !!(b && b[_isInt64]);\n }\n\n // initializer\n function init(that, buffer, offset, value, raddix) {\n if (UINT8ARRAY && ARRAYBUFFER) {\n if (buffer instanceof ARRAYBUFFER) buffer = new UINT8ARRAY(buffer);\n if (value instanceof ARRAYBUFFER) value = new UINT8ARRAY(value);\n }\n\n // Int64BE() style\n if (!buffer && !offset && !value && !storage) {\n // shortcut to initialize with zero\n that.buffer = newArray(ZERO, 0);\n return;\n }\n\n // Int64BE(value, raddix) style\n if (!isValidBuffer(buffer, offset)) {\n var _storage = storage || Array;\n raddix = offset;\n value = buffer;\n offset = 0;\n buffer = (storage === BUFFER) ? BUFFER.alloc(8) : new _storage(8);\n }\n\n that.buffer = buffer;\n that.offset = offset |= 0;\n\n // Int64BE(buffer, offset) style\n if (UNDEFINED === typeof value) return;\n\n // Int64BE(buffer, offset, value, raddix) style\n if (\"string\" === typeof value) {\n fromString(buffer, offset, value, raddix || 10);\n } else if (isValidBuffer(value, raddix)) {\n fromArray(buffer, offset, value, raddix);\n } else if (\"number\" === typeof raddix) {\n writeInt32(buffer, offset + posH, value); // high\n writeInt32(buffer, offset + posL, raddix); // low\n } else if (value > 0) {\n fromPositive(buffer, offset, value); // positive\n } else if (value < 0) {\n fromNegative(buffer, offset, value); // negative\n } else {\n fromArray(buffer, offset, ZERO, 0); // zero, NaN and others\n }\n }\n\n function fromString(buffer, offset, str, raddix) {\n var pos = 0;\n var len = str.length;\n var high = 0;\n var low = 0;\n if (str[0] === \"-\") pos++;\n var sign = pos;\n while (pos < len) {\n var chr = parseInt(str[pos++], raddix);\n if (!(chr >= 0)) break; // NaN\n low = low * raddix + chr;\n high = high * raddix + Math.floor(low / BIT32);\n low %= BIT32;\n }\n if (sign) {\n high = ~high;\n if (low) {\n low = BIT32 - low;\n } else {\n high++;\n }\n }\n writeInt32(buffer, offset + posH, high);\n writeInt32(buffer, offset + posL, low);\n }\n\n function toNumber() {\n var buffer = this.buffer;\n var offset = this.offset;\n var high = readInt32(buffer, offset + posH);\n var low = readInt32(buffer, offset + posL);\n if (!unsigned) high |= 0; // a trick to get signed\n return high ? (high * BIT32 + low) : low;\n }\n\n function toString(radix) {\n var buffer = this.buffer;\n var offset = this.offset;\n var high = readInt32(buffer, offset + posH);\n var low = readInt32(buffer, offset + posL);\n var str = \"\";\n var sign = !unsigned && (high & 0x80000000);\n if (sign) {\n high = ~high;\n low = BIT32 - low;\n }\n radix = radix || 10;\n while (1) {\n var mod = (high % radix) * BIT32 + low;\n high = Math.floor(high / radix);\n low = Math.floor(mod / radix);\n str = (mod % radix).toString(radix) + str;\n if (!high && !low) break;\n }\n if (sign) {\n str = \"-\" + str;\n }\n return str;\n }\n\n function writeInt32(buffer, offset, value) {\n buffer[offset + pos3] = value & 255;\n value = value >> 8;\n buffer[offset + pos2] = value & 255;\n value = value >> 8;\n buffer[offset + pos1] = value & 255;\n value = value >> 8;\n buffer[offset + pos0] = value & 255;\n }\n\n function readInt32(buffer, offset) {\n return (buffer[offset + pos0] * BIT24) +\n (buffer[offset + pos1] << 16) +\n (buffer[offset + pos2] << 8) +\n buffer[offset + pos3];\n }\n }\n\n function toArray(raw) {\n var buffer = this.buffer;\n var offset = this.offset;\n storage = null; // Array\n\n if (raw !== false && isArray(buffer)) {\n return (buffer.length === 8) ? buffer : buffer.slice(offset, offset + 8);\n }\n\n return newArray(buffer, offset);\n }\n\n function toBuffer(raw) {\n var buffer = this.buffer;\n var offset = this.offset;\n storage = BUFFER;\n\n if (raw !== false && BUFFER.isBuffer(buffer)) {\n return (buffer.length === 8) ? buffer : buffer.slice(offset, offset + 8);\n }\n\n // Buffer.from(arraybuffer) available since Node v4.5.0\n // https://nodejs.org/en/blog/release/v4.5.0/\n return BUFFER.from(toArrayBuffer.call(this, raw));\n }\n\n function toArrayBuffer(raw) {\n var buffer = this.buffer;\n var offset = this.offset;\n var arrbuf = buffer.buffer;\n storage = UINT8ARRAY;\n\n // arrbuf.slice() ignores buffer.offset until Node v8.0.0\n if (raw !== false && !buffer.offset && (arrbuf instanceof ARRAYBUFFER)) {\n return (arrbuf.byteLength === 8) ? arrbuf : arrbuf.slice(offset, offset + 8);\n }\n\n var dest = new UINT8ARRAY(8);\n fromArray(dest, 0, buffer, offset);\n return dest.buffer;\n }\n\n function isValidBuffer(buffer, offset) {\n var len = buffer && buffer.length;\n offset |= 0;\n return len && (offset + 8 <= len) && (\"string\" !== typeof buffer[offset]);\n }\n\n function fromArray(destbuf, destoff, srcbuf, srcoff) {\n destoff |= 0;\n srcoff |= 0;\n for (var i = 0; i < 8; i++) {\n destbuf[destoff++] = srcbuf[srcoff++] & 255;\n }\n }\n\n function newArray(buffer, offset) {\n return Array.prototype.slice.call(buffer, offset, offset + 8);\n }\n\n function fromPositiveBE(buffer, offset, value) {\n var pos = offset + 8;\n while (pos > offset) {\n buffer[--pos] = value & 255;\n value /= 256;\n }\n }\n\n function fromNegativeBE(buffer, offset, value) {\n var pos = offset + 8;\n value++;\n while (pos > offset) {\n buffer[--pos] = ((-value) & 255) ^ 255;\n value /= 256;\n }\n }\n\n function fromPositiveLE(buffer, offset, value) {\n var end = offset + 8;\n while (offset < end) {\n buffer[offset++] = value & 255;\n value /= 256;\n }\n }\n\n function fromNegativeLE(buffer, offset, value) {\n var end = offset + 8;\n value++;\n while (offset < end) {\n buffer[offset++] = ((-value) & 255) ^ 255;\n value /= 256;\n }\n }\n\n // https://github.com/retrofox/is-array\n function _isArray(val) {\n return !!val && \"[object Array]\" == Object.prototype.toString.call(val);\n }\n\n}(typeof exports === 'object' && typeof exports.nodeName !== 'string' ? exports : (this || {}));\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\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexports.isPlainObject = isPlainObject;\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.joi=t():e.joi=t()}(self,(()=>{return e={7629:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(9474),i=r(1687),o=r(8652),l=r(8160),c=r(3292),u=r(6354),f=r(8901),m=r(9708),h=r(6914),d=r(2294),p=r(6133),g=r(1152),y=r(8863),b=r(2036),v={Base:class{constructor(e){this.type=e,this.$_root=null,this._definition={},this._reset()}_reset(){this._ids=new d.Ids,this._preferences=null,this._refs=new p.Manager,this._cache=null,this._valids=null,this._invalids=null,this._flags={},this._rules=[],this._singleRules=new Map,this.$_terms={},this.$_temp={ruleset:null,whens:{}}}describe(){return s(\"function\"==typeof m.describe,\"Manifest functionality disabled\"),m.describe(this)}allow(...e){return l.verifyFlat(e,\"allow\"),this._values(e,\"_valids\")}alter(e){s(e&&\"object\"==typeof e&&!Array.isArray(e),\"Invalid targets argument\"),s(!this._inRuleset(),\"Cannot set alterations inside a ruleset\");const t=this.clone();t.$_terms.alterations=t.$_terms.alterations||[];for(const r in e){const n=e[r];s(\"function\"==typeof n,\"Alteration adjuster for\",r,\"must be a function\"),t.$_terms.alterations.push({target:r,adjuster:n})}return t.$_temp.ruleset=!1,t}artifact(e){return s(void 0!==e,\"Artifact cannot be undefined\"),s(!this._cache,\"Cannot set an artifact with a rule cache\"),this.$_setFlag(\"artifact\",e)}cast(e){return s(!1===e||\"string\"==typeof e,\"Invalid to value\"),s(!1===e||this._definition.cast[e],\"Type\",this.type,\"does not support casting to\",e),this.$_setFlag(\"cast\",!1===e?void 0:e)}default(e,t){return this._default(\"default\",e,t)}description(e){return s(e&&\"string\"==typeof e,\"Description must be a non-empty string\"),this.$_setFlag(\"description\",e)}empty(e){const t=this.clone();return void 0!==e&&(e=t.$_compile(e,{override:!1})),t.$_setFlag(\"empty\",e,{clone:!1})}error(e){return s(e,\"Missing error\"),s(e instanceof Error||\"function\"==typeof e,\"Must provide a valid Error object or a function\"),this.$_setFlag(\"error\",e)}example(e,t={}){return s(void 0!==e,\"Missing example\"),l.assertOptions(t,[\"override\"]),this._inner(\"examples\",e,{single:!0,override:t.override})}external(e,t){return\"object\"==typeof e&&(s(!t,\"Cannot combine options with description\"),t=e.description,e=e.method),s(\"function\"==typeof e,\"Method must be a function\"),s(void 0===t||t&&\"string\"==typeof t,\"Description must be a non-empty string\"),this._inner(\"externals\",{method:e,description:t},{single:!0})}failover(e,t){return this._default(\"failover\",e,t)}forbidden(){return this.presence(\"forbidden\")}id(e){return e?(s(\"string\"==typeof e,\"id must be a non-empty string\"),s(/^[^\\.]+$/.test(e),\"id cannot contain period character\"),this.$_setFlag(\"id\",e)):this.$_setFlag(\"id\",void 0)}invalid(...e){return this._values(e,\"_invalids\")}label(e){return s(e&&\"string\"==typeof e,\"Label name must be a non-empty string\"),this.$_setFlag(\"label\",e)}meta(e){return s(void 0!==e,\"Meta cannot be undefined\"),this._inner(\"metas\",e,{single:!0})}note(...e){s(e.length,\"Missing notes\");for(const t of e)s(t&&\"string\"==typeof t,\"Notes must be non-empty strings\");return this._inner(\"notes\",e)}only(e=!0){return s(\"boolean\"==typeof e,\"Invalid mode:\",e),this.$_setFlag(\"only\",e)}optional(){return this.presence(\"optional\")}prefs(e){s(e,\"Missing preferences\"),s(void 0===e.context,\"Cannot override context\"),s(void 0===e.externals,\"Cannot override externals\"),s(void 0===e.warnings,\"Cannot override warnings\"),s(void 0===e.debug,\"Cannot override debug\"),l.checkPreferences(e);const t=this.clone();return t._preferences=l.preferences(t._preferences,e),t}presence(e){return s([\"optional\",\"required\",\"forbidden\"].includes(e),\"Unknown presence mode\",e),this.$_setFlag(\"presence\",e)}raw(e=!0){return this.$_setFlag(\"result\",e?\"raw\":void 0)}result(e){return s([\"raw\",\"strip\"].includes(e),\"Unknown result mode\",e),this.$_setFlag(\"result\",e)}required(){return this.presence(\"required\")}strict(e){const t=this.clone(),r=void 0!==e&&!e;return t._preferences=l.preferences(t._preferences,{convert:r}),t}strip(e=!0){return this.$_setFlag(\"result\",e?\"strip\":void 0)}tag(...e){s(e.length,\"Missing tags\");for(const t of e)s(t&&\"string\"==typeof t,\"Tags must be non-empty strings\");return this._inner(\"tags\",e)}unit(e){return s(e&&\"string\"==typeof e,\"Unit name must be a non-empty string\"),this.$_setFlag(\"unit\",e)}valid(...e){l.verifyFlat(e,\"valid\");const t=this.allow(...e);return t.$_setFlag(\"only\",!!t._valids,{clone:!1}),t}when(e,t){const r=this.clone();r.$_terms.whens||(r.$_terms.whens=[]);const n=c.when(r,e,t);if(![\"any\",\"link\"].includes(r.type)){const e=n.is?[n]:n.switch;for(const t of e)s(!t.then||\"any\"===t.then.type||t.then.type===r.type,\"Cannot combine\",r.type,\"with\",t.then&&t.then.type),s(!t.otherwise||\"any\"===t.otherwise.type||t.otherwise.type===r.type,\"Cannot combine\",r.type,\"with\",t.otherwise&&t.otherwise.type)}return r.$_terms.whens.push(n),r.$_mutateRebuild()}cache(e){s(!this._inRuleset(),\"Cannot set caching inside a ruleset\"),s(!this._cache,\"Cannot override schema cache\"),s(void 0===this._flags.artifact,\"Cannot cache a rule with an artifact\");const t=this.clone();return t._cache=e||o.provider.provision(),t.$_temp.ruleset=!1,t}clone(){const e=Object.create(Object.getPrototypeOf(this));return this._assign(e)}concat(e){s(l.isSchema(e),\"Invalid schema object\"),s(\"any\"===this.type||\"any\"===e.type||e.type===this.type,\"Cannot merge type\",this.type,\"with another type:\",e.type),s(!this._inRuleset(),\"Cannot concatenate onto a schema with open ruleset\"),s(!e._inRuleset(),\"Cannot concatenate a schema with open ruleset\");let t=this.clone();if(\"any\"===this.type&&\"any\"!==e.type){const r=e.clone();for(const e of Object.keys(t))\"type\"!==e&&(r[e]=t[e]);t=r}t._ids.concat(e._ids),t._refs.register(e,p.toSibling),t._preferences=t._preferences?l.preferences(t._preferences,e._preferences):e._preferences,t._valids=b.merge(t._valids,e._valids,e._invalids),t._invalids=b.merge(t._invalids,e._invalids,e._valids);for(const r of e._singleRules.keys())t._singleRules.has(r)&&(t._rules=t._rules.filter((e=>e.keep||e.name!==r)),t._singleRules.delete(r));for(const r of e._rules)e._definition.rules[r.method].multi||t._singleRules.set(r.name,r),t._rules.push(r);if(t._flags.empty&&e._flags.empty){t._flags.empty=t._flags.empty.concat(e._flags.empty);const r=Object.assign({},e._flags);delete r.empty,i(t._flags,r)}else if(e._flags.empty){t._flags.empty=e._flags.empty;const r=Object.assign({},e._flags);delete r.empty,i(t._flags,r)}else i(t._flags,e._flags);for(const r in e.$_terms){const s=e.$_terms[r];s?t.$_terms[r]?t.$_terms[r]=t.$_terms[r].concat(s):t.$_terms[r]=s.slice():t.$_terms[r]||(t.$_terms[r]=s)}return this.$_root._tracer&&this.$_root._tracer._combine(t,[this,e]),t.$_mutateRebuild()}extend(e){return s(!e.base,\"Cannot extend type with another base\"),f.type(this,e)}extract(e){return e=Array.isArray(e)?e:e.split(\".\"),this._ids.reach(e)}fork(e,t){s(!this._inRuleset(),\"Cannot fork inside a ruleset\");let r=this;for(let s of[].concat(e))s=Array.isArray(s)?s:s.split(\".\"),r=r._ids.fork(s,t,r);return r.$_temp.ruleset=!1,r}rule(e){const t=this._definition;l.assertOptions(e,Object.keys(t.modifiers)),s(!1!==this.$_temp.ruleset,\"Cannot apply rules to empty ruleset or the last rule added does not support rule properties\");const r=null===this.$_temp.ruleset?this._rules.length-1:this.$_temp.ruleset;s(r>=0&&r<this._rules.length,\"Cannot apply rules to empty ruleset\");const a=this.clone();for(let i=r;i<a._rules.length;++i){const r=a._rules[i],o=n(r);for(const n in e)t.modifiers[n](o,e[n]),s(o.name===r.name,\"Cannot change rule name\");a._rules[i]=o,a._singleRules.get(o.name)===r&&a._singleRules.set(o.name,o)}return a.$_temp.ruleset=!1,a.$_mutateRebuild()}get ruleset(){s(!this._inRuleset(),\"Cannot start a new ruleset without closing the previous one\");const e=this.clone();return e.$_temp.ruleset=e._rules.length,e}get $(){return this.ruleset}tailor(e){e=[].concat(e),s(!this._inRuleset(),\"Cannot tailor inside a ruleset\");let t=this;if(this.$_terms.alterations)for(const{target:r,adjuster:n}of this.$_terms.alterations)e.includes(r)&&(t=n(t),s(l.isSchema(t),\"Alteration adjuster for\",r,\"failed to return a schema object\"));return t=t.$_modify({each:t=>t.tailor(e),ref:!1}),t.$_temp.ruleset=!1,t.$_mutateRebuild()}tracer(){return g.location?g.location(this):this}validate(e,t){return y.entry(e,this,t)}validateAsync(e,t){return y.entryAsync(e,this,t)}$_addRule(e){\"string\"==typeof e&&(e={name:e}),s(e&&\"object\"==typeof e,\"Invalid options\"),s(e.name&&\"string\"==typeof e.name,\"Invalid rule name\");for(const t in e)s(\"_\"!==t[0],\"Cannot set private rule properties\");const t=Object.assign({},e);t._resolve=[],t.method=t.method||t.name;const r=this._definition.rules[t.method],n=t.args;s(r,\"Unknown rule\",t.method);const a=this.clone();if(n){s(1===Object.keys(n).length||Object.keys(n).length===this._definition.rules[t.name].args.length,\"Invalid rule definition for\",this.type,t.name);for(const e in n){let i=n[e];if(r.argsByName){const o=r.argsByName.get(e);if(o.ref&&l.isResolvable(i))t._resolve.push(e),a.$_mutateRegister(i);else if(o.normalize&&(i=o.normalize(i),n[e]=i),o.assert){const t=l.validateArg(i,e,o);s(!t,t,\"or reference\")}}void 0!==i?n[e]=i:delete n[e]}}return r.multi||(a._ruleRemove(t.name,{clone:!1}),a._singleRules.set(t.name,t)),!1===a.$_temp.ruleset&&(a.$_temp.ruleset=null),r.priority?a._rules.unshift(t):a._rules.push(t),a}$_compile(e,t){return c.schema(this.$_root,e,t)}$_createError(e,t,r,s,n,a={}){const i=!1!==a.flags?this._flags:{},o=a.messages?h.merge(this._definition.messages,a.messages):this._definition.messages;return new u.Report(e,t,r,i,o,s,n)}$_getFlag(e){return this._flags[e]}$_getRule(e){return this._singleRules.get(e)}$_mapLabels(e){return e=Array.isArray(e)?e:e.split(\".\"),this._ids.labels(e)}$_match(e,t,r,s){(r=Object.assign({},r)).abortEarly=!0,r._externals=!1,t.snapshot();const n=!y.validate(e,this,t,r,s).errors;return t.restore(),n}$_modify(e){return l.assertOptions(e,[\"each\",\"once\",\"ref\",\"schema\"]),d.schema(this,e)||this}$_mutateRebuild(){return s(!this._inRuleset(),\"Cannot add this rule inside a ruleset\"),this._refs.reset(),this._ids.reset(),this.$_modify({each:(e,{source:t,name:r,path:s,key:n})=>{const a=this._definition[t][r]&&this._definition[t][r].register;!1!==a&&this.$_mutateRegister(e,{family:a,key:n})}}),this._definition.rebuild&&this._definition.rebuild(this),this.$_temp.ruleset=!1,this}$_mutateRegister(e,{family:t,key:r}={}){this._refs.register(e,t),this._ids.register(e,{key:r})}$_property(e){return this._definition.properties[e]}$_reach(e){return this._ids.reach(e)}$_rootReferences(){return this._refs.roots()}$_setFlag(e,t,r={}){s(\"_\"===e[0]||!this._inRuleset(),\"Cannot set flag inside a ruleset\");const n=this._definition.flags[e]||{};if(a(t,n.default)&&(t=void 0),a(t,this._flags[e]))return this;const i=!1!==r.clone?this.clone():this;return void 0!==t?(i._flags[e]=t,i.$_mutateRegister(t)):delete i._flags[e],\"_\"!==e[0]&&(i.$_temp.ruleset=!1),i}$_parent(e,...t){return this[e][l.symbols.parent].call(this,...t)}$_validate(e,t,r){return y.validate(e,this,t,r)}_assign(e){e.type=this.type,e.$_root=this.$_root,e.$_temp=Object.assign({},this.$_temp),e.$_temp.whens={},e._ids=this._ids.clone(),e._preferences=this._preferences,e._valids=this._valids&&this._valids.clone(),e._invalids=this._invalids&&this._invalids.clone(),e._rules=this._rules.slice(),e._singleRules=n(this._singleRules,{shallow:!0}),e._refs=this._refs.clone(),e._flags=Object.assign({},this._flags),e._cache=null,e.$_terms={};for(const t in this.$_terms)e.$_terms[t]=this.$_terms[t]?this.$_terms[t].slice():null;e.$_super={};for(const t in this.$_super)e.$_super[t]=this._super[t].bind(e);return e}_bare(){const e=this.clone();e._reset();const t=e._definition.terms;for(const r in t){const s=t[r];e.$_terms[r]=s.init}return e.$_mutateRebuild()}_default(e,t,r={}){return l.assertOptions(r,\"literal\"),s(void 0!==t,\"Missing\",e,\"value\"),s(\"function\"==typeof t||!r.literal,\"Only function value supports literal option\"),\"function\"==typeof t&&r.literal&&(t={[l.symbols.literal]:!0,literal:t}),this.$_setFlag(e,t)}_generate(e,t,r){if(!this.$_terms.whens)return{schema:this};const s=[],n=[];for(let a=0;a<this.$_terms.whens.length;++a){const i=this.$_terms.whens[a];if(i.concat){s.push(i.concat),n.push(`${a}.concat`);continue}const o=i.ref?i.ref.resolve(e,t,r):e,l=i.is?[i]:i.switch,c=n.length;for(let c=0;c<l.length;++c){const{is:u,then:f,otherwise:m}=l[c],h=`${a}${i.switch?\".\"+c:\"\"}`;if(u.$_match(o,t.nest(u,`${h}.is`),r)){if(f){const a=t.localize([...t.path,`${h}.then`],t.ancestors,t.schemas),{schema:i,id:o}=f._generate(e,a,r);s.push(i),n.push(`${h}.then${o?`(${o})`:\"\"}`);break}}else if(m){const a=t.localize([...t.path,`${h}.otherwise`],t.ancestors,t.schemas),{schema:i,id:o}=m._generate(e,a,r);s.push(i),n.push(`${h}.otherwise${o?`(${o})`:\"\"}`);break}}if(i.break&&n.length>c)break}const a=n.join(\", \");if(t.mainstay.tracer.debug(t,\"rule\",\"when\",a),!a)return{schema:this};if(!t.mainstay.tracer.active&&this.$_temp.whens[a])return{schema:this.$_temp.whens[a],id:a};let i=this;this._definition.generate&&(i=this._definition.generate(this,e,t,r));for(const e of s)i=i.concat(e);return this.$_root._tracer&&this.$_root._tracer._combine(i,[this,...s]),this.$_temp.whens[a]=i,{schema:i,id:a}}_inner(e,t,r={}){s(!this._inRuleset(),`Cannot set ${e} inside a ruleset`);const n=this.clone();return n.$_terms[e]&&!r.override||(n.$_terms[e]=[]),r.single?n.$_terms[e].push(t):n.$_terms[e].push(...t),n.$_temp.ruleset=!1,n}_inRuleset(){return null!==this.$_temp.ruleset&&!1!==this.$_temp.ruleset}_ruleRemove(e,t={}){if(!this._singleRules.has(e))return this;const r=!1!==t.clone?this.clone():this;r._singleRules.delete(e);const s=[];for(let t=0;t<r._rules.length;++t){const n=r._rules[t];n.name!==e||n.keep?s.push(n):r._inRuleset()&&t<r.$_temp.ruleset&&--r.$_temp.ruleset}return r._rules=s,r}_values(e,t){l.verifyFlat(e,t.slice(1,-1));const r=this.clone(),n=e[0]===l.symbols.override;if(n&&(e=e.slice(1)),!r[t]&&e.length?r[t]=new b:n&&(r[t]=e.length?new b:null,r.$_mutateRebuild()),!r[t])return r;n&&r[t].override();for(const n of e){s(void 0!==n,\"Cannot call allow/valid/invalid with undefined\"),s(n!==l.symbols.override,\"Override must be the first value\");const e=\"_invalids\"===t?\"_valids\":\"_invalids\";r[e]&&(r[e].remove(n),r[e].length||(s(\"_valids\"===t||!r._flags.only,\"Setting invalid value\",n,\"leaves schema rejecting all values due to previous valid rule\"),r[e]=null)),r[t].add(n,r._refs)}return r}}};v.Base.prototype[l.symbols.any]={version:l.version,compile:c.compile,root:\"$_root\"},v.Base.prototype.isImmutable=!0,v.Base.prototype.deny=v.Base.prototype.invalid,v.Base.prototype.disallow=v.Base.prototype.invalid,v.Base.prototype.equal=v.Base.prototype.valid,v.Base.prototype.exist=v.Base.prototype.required,v.Base.prototype.not=v.Base.prototype.invalid,v.Base.prototype.options=v.Base.prototype.prefs,v.Base.prototype.preferences=v.Base.prototype.prefs,e.exports=new v.Base},8652:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(8160),i={max:1e3,supported:new Set([\"undefined\",\"boolean\",\"number\",\"string\"])};t.provider={provision:e=>new i.Cache(e)},i.Cache=class{constructor(e={}){a.assertOptions(e,[\"max\"]),s(void 0===e.max||e.max&&e.max>0&&isFinite(e.max),\"Invalid max cache size\"),this._max=e.max||i.max,this._map=new Map,this._list=new i.List}get length(){return this._map.size}set(e,t){if(null!==e&&!i.supported.has(typeof e))return;let r=this._map.get(e);if(r)return r.value=t,void this._list.first(r);r=this._list.unshift({key:e,value:t}),this._map.set(e,r),this._compact()}get(e){const t=this._map.get(e);if(t)return this._list.first(t),n(t.value)}_compact(){if(this._map.size>this._max){const e=this._list.pop();this._map.delete(e.key)}}},i.List=class{constructor(){this.tail=null,this.head=null}unshift(e){return e.next=null,e.prev=this.head,this.head&&(this.head.next=e),this.head=e,this.tail||(this.tail=e),e}first(e){e!==this.head&&(this._remove(e),this.unshift(e))}pop(){return this._remove(this.tail)}_remove(e){const{next:t,prev:r}=e;return t.prev=r,r&&(r.next=t),e===this.tail&&(this.tail=t),e.prev=null,e.next=null,e}}},8160:(e,t,r)=>{\"use strict\";const s=r(375),n=r(7916),a=r(5934);let i,o;const l={isoDate:/^(?:[-+]\\d{2})?(?:\\d{4}(?!\\d{2}\\b))(?:(-?)(?:(?:0[1-9]|1[0-2])(?:\\1(?:[12]\\d|0[1-9]|3[01]))?|W(?:[0-4]\\d|5[0-2])(?:-?[1-7])?|(?:00[1-9]|0[1-9]\\d|[12]\\d{2}|3(?:[0-5]\\d|6[1-6])))(?![T]$|[T][\\d]+Z$)(?:[T\\s](?:(?:(?:[01]\\d|2[0-3])(?:(:?)[0-5]\\d)?|24\\:?00)(?:[.,]\\d+(?!:))?)(?:\\2[0-5]\\d(?:[.,]\\d+)?)?(?:[Z]|(?:[+-])(?:[01]\\d|2[0-3])(?::?[0-5]\\d)?)?)?)?$/};t.version=a.version,t.defaults={abortEarly:!0,allowUnknown:!1,artifacts:!1,cache:!0,context:null,convert:!0,dateFormat:\"iso\",errors:{escapeHtml:!1,label:\"path\",language:null,render:!0,stack:!1,wrap:{label:'\"',array:\"[]\"}},externals:!0,messages:{},nonEnumerables:!1,noDefaults:!1,presence:\"optional\",skipFunctions:!1,stripUnknown:!1,warnings:!1},t.symbols={any:Symbol.for(\"@hapi/joi/schema\"),arraySingle:Symbol(\"arraySingle\"),deepDefault:Symbol(\"deepDefault\"),errors:Symbol(\"errors\"),literal:Symbol(\"literal\"),override:Symbol(\"override\"),parent:Symbol(\"parent\"),prefs:Symbol(\"prefs\"),ref:Symbol(\"ref\"),template:Symbol(\"template\"),values:Symbol(\"values\")},t.assertOptions=function(e,t,r=\"Options\"){s(e&&\"object\"==typeof e&&!Array.isArray(e),\"Options must be of type object\");const n=Object.keys(e).filter((e=>!t.includes(e)));s(0===n.length,`${r} contain unknown keys: ${n}`)},t.checkPreferences=function(e){o=o||r(3378);const t=o.preferences.validate(e);if(t.error)throw new n([t.error.details[0].message])},t.compare=function(e,t,r){switch(r){case\"=\":return e===t;case\">\":return e>t;case\"<\":return e<t;case\">=\":return e>=t;case\"<=\":return e<=t}},t.default=function(e,t){return void 0===e?t:e},t.isIsoDate=function(e){return l.isoDate.test(e)},t.isNumber=function(e){return\"number\"==typeof e&&!isNaN(e)},t.isResolvable=function(e){return!!e&&(e[t.symbols.ref]||e[t.symbols.template])},t.isSchema=function(e,r={}){const n=e&&e[t.symbols.any];return!!n&&(s(r.legacy||n.version===t.version,\"Cannot mix different versions of joi schemas\"),!0)},t.isValues=function(e){return e[t.symbols.values]},t.limit=function(e){return Number.isSafeInteger(e)&&e>=0},t.preferences=function(e,s){i=i||r(6914),e=e||{},s=s||{};const n=Object.assign({},e,s);return s.errors&&e.errors&&(n.errors=Object.assign({},e.errors,s.errors),n.errors.wrap=Object.assign({},e.errors.wrap,s.errors.wrap)),s.messages&&(n.messages=i.compile(s.messages,e.messages)),delete n[t.symbols.prefs],n},t.tryWithPath=function(e,t,r={}){try{return e()}catch(e){throw void 0!==e.path?e.path=t+\".\"+e.path:e.path=t,r.append&&(e.message=`${e.message} (${e.path})`),e}},t.validateArg=function(e,r,{assert:s,message:n}){if(t.isSchema(s)){const t=s.validate(e);if(!t.error)return;return t.error.message}if(!s(e))return r?`${r} ${n}`:n},t.verifyFlat=function(e,t){for(const r of e)s(!Array.isArray(r),\"Method no longer accepts array arguments:\",t)}},3292:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8160),a=r(6133),i={};t.schema=function(e,t,r={}){n.assertOptions(r,[\"appendPath\",\"override\"]);try{return i.schema(e,t,r)}catch(e){throw r.appendPath&&void 0!==e.path&&(e.message=`${e.message} (${e.path})`),e}},i.schema=function(e,t,r){s(void 0!==t,\"Invalid undefined schema\"),Array.isArray(t)&&(s(t.length,\"Invalid empty array schema\"),1===t.length&&(t=t[0]));const a=(t,...s)=>!1!==r.override?t.valid(e.override,...s):t.valid(...s);if(i.simple(t))return a(e,t);if(\"function\"==typeof t)return e.custom(t);if(s(\"object\"==typeof t,\"Invalid schema content:\",typeof t),n.isResolvable(t))return a(e,t);if(n.isSchema(t))return t;if(Array.isArray(t)){for(const r of t)if(!i.simple(r))return e.alternatives().try(...t);return a(e,...t)}return t instanceof RegExp?e.string().regex(t):t instanceof Date?a(e.date(),t):(s(Object.getPrototypeOf(t)===Object.getPrototypeOf({}),\"Schema can only contain plain objects\"),e.object().keys(t))},t.ref=function(e,t){return a.isRef(e)?e:a.create(e,t)},t.compile=function(e,r,a={}){n.assertOptions(a,[\"legacy\"]);const o=r&&r[n.symbols.any];if(o)return s(a.legacy||o.version===n.version,\"Cannot mix different versions of joi schemas:\",o.version,n.version),r;if(\"object\"!=typeof r||!a.legacy)return t.schema(e,r,{appendPath:!0});const l=i.walk(r);return l?l.compile(l.root,r):t.schema(e,r,{appendPath:!0})},i.walk=function(e){if(\"object\"!=typeof e)return null;if(Array.isArray(e)){for(const t of e){const e=i.walk(t);if(e)return e}return null}const t=e[n.symbols.any];if(t)return{root:e[t.root],compile:t.compile};s(Object.getPrototypeOf(e)===Object.getPrototypeOf({}),\"Schema can only contain plain objects\");for(const t in e){const r=i.walk(e[t]);if(r)return r}return null},i.simple=function(e){return null===e||[\"boolean\",\"string\",\"number\"].includes(typeof e)},t.when=function(e,r,o){if(void 0===o&&(s(r&&\"object\"==typeof r,\"Missing options\"),o=r,r=a.create(\".\")),Array.isArray(o)&&(o={switch:o}),n.assertOptions(o,[\"is\",\"not\",\"then\",\"otherwise\",\"switch\",\"break\"]),n.isSchema(r))return s(void 0===o.is,'\"is\" can not be used with a schema condition'),s(void 0===o.not,'\"not\" can not be used with a schema condition'),s(void 0===o.switch,'\"switch\" can not be used with a schema condition'),i.condition(e,{is:r,then:o.then,otherwise:o.otherwise,break:o.break});if(s(a.isRef(r)||\"string\"==typeof r,\"Invalid condition:\",r),s(void 0===o.not||void 0===o.is,'Cannot combine \"is\" with \"not\"'),void 0===o.switch){let l=o;void 0!==o.not&&(l={is:o.not,then:o.otherwise,otherwise:o.then,break:o.break});let c=void 0!==l.is?e.$_compile(l.is):e.$_root.invalid(null,!1,0,\"\").required();return s(void 0!==l.then||void 0!==l.otherwise,'options must have at least one of \"then\", \"otherwise\", or \"switch\"'),s(void 0===l.break||void 0===l.then||void 0===l.otherwise,\"Cannot specify then, otherwise, and break all together\"),void 0===o.is||a.isRef(o.is)||n.isSchema(o.is)||(c=c.required()),i.condition(e,{ref:t.ref(r),is:c,then:l.then,otherwise:l.otherwise,break:l.break})}s(Array.isArray(o.switch),'\"switch\" must be an array'),s(void 0===o.is,'Cannot combine \"switch\" with \"is\"'),s(void 0===o.not,'Cannot combine \"switch\" with \"not\"'),s(void 0===o.then,'Cannot combine \"switch\" with \"then\"');const l={ref:t.ref(r),switch:[],break:o.break};for(let t=0;t<o.switch.length;++t){const r=o.switch[t],i=t===o.switch.length-1;n.assertOptions(r,i?[\"is\",\"then\",\"otherwise\"]:[\"is\",\"then\"]),s(void 0!==r.is,'Switch statement missing \"is\"'),s(void 0!==r.then,'Switch statement missing \"then\"');const c={is:e.$_compile(r.is),then:e.$_compile(r.then)};if(a.isRef(r.is)||n.isSchema(r.is)||(c.is=c.is.required()),i){s(void 0===o.otherwise||void 0===r.otherwise,'Cannot specify \"otherwise\" inside and outside a \"switch\"');const t=void 0!==o.otherwise?o.otherwise:r.otherwise;void 0!==t&&(s(void 0===l.break,\"Cannot specify both otherwise and break\"),c.otherwise=e.$_compile(t))}l.switch.push(c)}return l},i.condition=function(e,t){for(const r of[\"then\",\"otherwise\"])void 0===t[r]?delete t[r]:t[r]=e.$_compile(t[r]);return t}},6354:(e,t,r)=>{\"use strict\";const s=r(5688),n=r(8160),a=r(3328);t.Report=class{constructor(e,r,s,n,a,i,o){if(this.code=e,this.flags=n,this.messages=a,this.path=i.path,this.prefs=o,this.state=i,this.value=r,this.message=null,this.template=null,this.local=s||{},this.local.label=t.label(this.flags,this.state,this.prefs,this.messages),void 0===this.value||this.local.hasOwnProperty(\"value\")||(this.local.value=this.value),this.path.length){const e=this.path[this.path.length-1];\"object\"!=typeof e&&(this.local.key=e)}}_setTemplate(e){if(this.template=e,!this.flags.label&&0===this.path.length){const e=this._template(this.template,\"root\");e&&(this.local.label=e)}}toString(){if(this.message)return this.message;const e=this.code;if(!this.prefs.errors.render)return this.code;const t=this._template(this.template)||this._template(this.prefs.messages)||this._template(this.messages);return void 0===t?`Error code \"${e}\" is not defined, your custom type is missing the correct messages definition`:(this.message=t.render(this.value,this.state,this.prefs,this.local,{errors:this.prefs.errors,messages:[this.prefs.messages,this.messages]}),this.prefs.errors.label||(this.message=this.message.replace(/^\"\" /,\"\").trim()),this.message)}_template(e,r){return t.template(this.value,e,r||this.code,this.state,this.prefs)}},t.path=function(e){let t=\"\";for(const r of e)\"object\"!=typeof r&&(\"string\"==typeof r?(t&&(t+=\".\"),t+=r):t+=`[${r}]`);return t},t.template=function(e,t,r,s,i){if(!t)return;if(a.isTemplate(t))return\"root\"!==r?t:null;let o=i.errors.language;if(n.isResolvable(o)&&(o=o.resolve(e,s,i)),o&&t[o]){if(void 0!==t[o][r])return t[o][r];if(void 0!==t[o][\"*\"])return t[o][\"*\"]}return t[r]?t[r]:t[\"*\"]},t.label=function(e,r,s,n){if(!s.errors.label)return\"\";if(e.label)return e.label;let a=r.path;\"key\"===s.errors.label&&r.path.length>1&&(a=r.path.slice(-1));return t.path(a)||t.template(null,s.messages,\"root\",r,s)||n&&t.template(null,n,\"root\",r,s)||\"value\"},t.process=function(e,r,s){if(!e)return null;const{override:n,message:a,details:i}=t.details(e);if(n)return n;if(s.errors.stack)return new t.ValidationError(a,i,r);const o=Error.stackTraceLimit;Error.stackTraceLimit=0;const l=new t.ValidationError(a,i,r);return Error.stackTraceLimit=o,l},t.details=function(e,t={}){let r=[];const s=[];for(const n of e){if(n instanceof Error){if(!1!==t.override)return{override:n};const e=n.toString();r.push(e),s.push({message:e,type:\"override\",context:{error:n}});continue}const e=n.toString();r.push(e),s.push({message:e,path:n.path.filter((e=>\"object\"!=typeof e)),type:n.code,context:n.local})}return r.length>1&&(r=[...new Set(r)]),{message:r.join(\". \"),details:s}},t.ValidationError=class extends Error{constructor(e,t,r){super(e),this._original=r,this.details=t}static isError(e){return e instanceof t.ValidationError}},t.ValidationError.prototype.isJoi=!0,t.ValidationError.prototype.name=\"ValidationError\",t.ValidationError.prototype.annotate=s.error},8901:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(8160),i=r(6914),o={};t.type=function(e,t){const r=Object.getPrototypeOf(e),l=n(r),c=e._assign(Object.create(l)),u=Object.assign({},t);delete u.base,l._definition=u;const f=r._definition||{};u.messages=i.merge(f.messages,u.messages),u.properties=Object.assign({},f.properties,u.properties),c.type=u.type,u.flags=Object.assign({},f.flags,u.flags);const m=Object.assign({},f.terms);if(u.terms)for(const e in u.terms){const t=u.terms[e];s(void 0===c.$_terms[e],\"Invalid term override for\",u.type,e),c.$_terms[e]=t.init,m[e]=t}u.terms=m,u.args||(u.args=f.args),u.prepare=o.prepare(u.prepare,f.prepare),u.coerce&&(\"function\"==typeof u.coerce&&(u.coerce={method:u.coerce}),u.coerce.from&&!Array.isArray(u.coerce.from)&&(u.coerce={method:u.coerce.method,from:[].concat(u.coerce.from)})),u.coerce=o.coerce(u.coerce,f.coerce),u.validate=o.validate(u.validate,f.validate);const h=Object.assign({},f.rules);if(u.rules)for(const e in u.rules){const t=u.rules[e];s(\"object\"==typeof t,\"Invalid rule definition for\",u.type,e);let r=t.method;if(void 0===r&&(r=function(){return this.$_addRule(e)}),r&&(s(!l[e],\"Rule conflict in\",u.type,e),l[e]=r),s(!h[e],\"Rule conflict in\",u.type,e),h[e]=t,t.alias){const e=[].concat(t.alias);for(const r of e)l[r]=t.method}t.args&&(t.argsByName=new Map,t.args=t.args.map((e=>(\"string\"==typeof e&&(e={name:e}),s(!t.argsByName.has(e.name),\"Duplicated argument name\",e.name),a.isSchema(e.assert)&&(e.assert=e.assert.strict().label(e.name)),t.argsByName.set(e.name,e),e))))}u.rules=h;const d=Object.assign({},f.modifiers);if(u.modifiers)for(const e in u.modifiers){s(!l[e],\"Rule conflict in\",u.type,e);const t=u.modifiers[e];s(\"function\"==typeof t,\"Invalid modifier definition for\",u.type,e);const r=function(t){return this.rule({[e]:t})};l[e]=r,d[e]=t}if(u.modifiers=d,u.overrides){l._super=r,c.$_super={};for(const e in u.overrides)s(r[e],\"Cannot override missing\",e),u.overrides[e][a.symbols.parent]=r[e],c.$_super[e]=r[e].bind(c);Object.assign(l,u.overrides)}u.cast=Object.assign({},f.cast,u.cast);const p=Object.assign({},f.manifest,u.manifest);return p.build=o.build(u.manifest&&u.manifest.build,f.manifest&&f.manifest.build),u.manifest=p,u.rebuild=o.rebuild(u.rebuild,f.rebuild),c},o.build=function(e,t){return e&&t?function(r,s){return t(e(r,s),s)}:e||t},o.coerce=function(e,t){return e&&t?{from:e.from&&t.from?[...new Set([...e.from,...t.from])]:null,method(r,s){let n;if((!t.from||t.from.includes(typeof r))&&(n=t.method(r,s),n)){if(n.errors||void 0===n.value)return n;r=n.value}if(!e.from||e.from.includes(typeof r)){const t=e.method(r,s);if(t)return t}return n}}:e||t},o.prepare=function(e,t){return e&&t?function(r,s){const n=e(r,s);if(n){if(n.errors||void 0===n.value)return n;r=n.value}return t(r,s)||n}:e||t},o.rebuild=function(e,t){return e&&t?function(r){t(r),e(r)}:e||t},o.validate=function(e,t){return e&&t?function(r,s){const n=t(r,s);if(n){if(n.errors&&(!Array.isArray(n.errors)||n.errors.length))return n;r=n.value}return e(r,s)||n}:e||t}},5107:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(8652),i=r(8160),o=r(3292),l=r(6354),c=r(8901),u=r(9708),f=r(6133),m=r(3328),h=r(1152);let d;const p={types:{alternatives:r(4946),any:r(8068),array:r(546),boolean:r(4937),date:r(7500),function:r(390),link:r(8785),number:r(3832),object:r(8966),string:r(7417),symbol:r(8826)},aliases:{alt:\"alternatives\",bool:\"boolean\",func:\"function\"},root:function(){const e={_types:new Set(Object.keys(p.types))};for(const t of e._types)e[t]=function(...e){return s(!e.length||[\"alternatives\",\"link\",\"object\"].includes(t),\"The\",t,\"type does not allow arguments\"),p.generate(this,p.types[t],e)};for(const t of[\"allow\",\"custom\",\"disallow\",\"equal\",\"exist\",\"forbidden\",\"invalid\",\"not\",\"only\",\"optional\",\"options\",\"prefs\",\"preferences\",\"required\",\"strip\",\"valid\",\"when\"])e[t]=function(...e){return this.any()[t](...e)};Object.assign(e,p.methods);for(const t in p.aliases){const r=p.aliases[t];e[t]=e[r]}return e.x=e.expression,h.setup&&h.setup(e),e}};p.methods={ValidationError:l.ValidationError,version:i.version,cache:a.provider,assert(e,t,...r){p.assert(e,t,!0,r)},attempt:(e,t,...r)=>p.assert(e,t,!1,r),build(e){return s(\"function\"==typeof u.build,\"Manifest functionality disabled\"),u.build(this,e)},checkPreferences(e){i.checkPreferences(e)},compile(e,t){return o.compile(this,e,t)},defaults(e){s(\"function\"==typeof e,\"modifier must be a function\");const t=Object.assign({},this);for(const r of t._types){const n=e(t[r]());s(i.isSchema(n),\"modifier must return a valid schema object\"),t[r]=function(...e){return p.generate(this,n,e)}}return t},expression:(...e)=>new m(...e),extend(...e){i.verifyFlat(e,\"extend\"),d=d||r(3378),s(e.length,\"You need to provide at least one extension\"),this.assert(e,d.extensions);const t=Object.assign({},this);t._types=new Set(t._types);for(let r of e){\"function\"==typeof r&&(r=r(t)),this.assert(r,d.extension);const e=p.expandExtension(r,t);for(const r of e){s(void 0===t[r.type]||t._types.has(r.type),\"Cannot override name\",r.type);const e=r.base||this.any(),n=c.type(e,r);t._types.add(r.type),t[r.type]=function(...e){return p.generate(this,n,e)}}}return t},isError:l.ValidationError.isError,isExpression:m.isTemplate,isRef:f.isRef,isSchema:i.isSchema,in:(...e)=>f.in(...e),override:i.symbols.override,ref:(...e)=>f.create(...e),types(){const e={};for(const t of this._types)e[t]=this[t]();for(const t in p.aliases)e[t]=this[t]();return e}},p.assert=function(e,t,r,s){const a=s[0]instanceof Error||\"string\"==typeof s[0]?s[0]:null,o=null!==a?s[1]:s[0],c=t.validate(e,i.preferences({errors:{stack:!0}},o||{}));let u=c.error;if(!u)return c.value;if(a instanceof Error)throw a;const f=r&&\"function\"==typeof u.annotate?u.annotate():u.message;throw u instanceof l.ValidationError==0&&(u=n(u)),u.message=a?`${a} ${f}`:f,u},p.generate=function(e,t,r){return s(e,\"Must be invoked on a Joi instance.\"),t.$_root=e,t._definition.args&&r.length?t._definition.args(t,...r):t},p.expandExtension=function(e,t){if(\"string\"==typeof e.type)return[e];const r=[];for(const s of t._types)if(e.type.test(s)){const n=Object.assign({},e);n.type=s,n.base=t[s](),r.push(n)}return r},e.exports=p.root()},6914:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(3328);t.compile=function(e,t){if(\"string\"==typeof e)return s(!t,\"Cannot set single message string\"),new a(e);if(a.isTemplate(e))return s(!t,\"Cannot set single message template\"),e;s(\"object\"==typeof e&&!Array.isArray(e),\"Invalid message options\"),t=t?n(t):{};for(let r in e){const n=e[r];if(\"root\"===r||a.isTemplate(n)){t[r]=n;continue}if(\"string\"==typeof n){t[r]=new a(n);continue}s(\"object\"==typeof n&&!Array.isArray(n),\"Invalid message for\",r);const i=r;for(r in t[i]=t[i]||{},n){const e=n[r];\"root\"===r||a.isTemplate(e)?t[i][r]=e:(s(\"string\"==typeof e,\"Invalid message for\",r,\"in\",i),t[i][r]=new a(e))}}return t},t.decompile=function(e){const t={};for(let r in e){const s=e[r];if(\"root\"===r){t.root=s;continue}if(a.isTemplate(s)){t[r]=s.describe({compact:!0});continue}const n=r;for(r in t[n]={},s){const e=s[r];\"root\"!==r?t[n][r]=e.describe({compact:!0}):t[n].root=e}}return t},t.merge=function(e,r){if(!e)return t.compile(r);if(!r)return e;if(\"string\"==typeof r)return new a(r);if(a.isTemplate(r))return r;const i=n(e);for(let e in r){const t=r[e];if(\"root\"===e||a.isTemplate(t)){i[e]=t;continue}if(\"string\"==typeof t){i[e]=new a(t);continue}s(\"object\"==typeof t&&!Array.isArray(t),\"Invalid message for\",e);const n=e;for(e in i[n]=i[n]||{},t){const r=t[e];\"root\"===e||a.isTemplate(r)?i[n][e]=r:(s(\"string\"==typeof r,\"Invalid message for\",e,\"in\",n),i[n][e]=new a(r))}}return i}},2294:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8160),a=r(6133),i={};t.Ids=i.Ids=class{constructor(){this._byId=new Map,this._byKey=new Map,this._schemaChain=!1}clone(){const e=new i.Ids;return e._byId=new Map(this._byId),e._byKey=new Map(this._byKey),e._schemaChain=this._schemaChain,e}concat(e){e._schemaChain&&(this._schemaChain=!0);for(const[t,r]of e._byId.entries())s(!this._byKey.has(t),\"Schema id conflicts with existing key:\",t),this._byId.set(t,r);for(const[t,r]of e._byKey.entries())s(!this._byId.has(t),\"Schema key conflicts with existing id:\",t),this._byKey.set(t,r)}fork(e,t,r){const a=this._collect(e);a.push({schema:r});const o=a.shift();let l={id:o.id,schema:t(o.schema)};s(n.isSchema(l.schema),\"adjuster function failed to return a joi schema type\");for(const e of a)l={id:e.id,schema:i.fork(e.schema,l.id,l.schema)};return l.schema}labels(e,t=[]){const r=e[0],s=this._get(r);if(!s)return[...t,...e].join(\".\");const n=e.slice(1);return t=[...t,s.schema._flags.label||r],n.length?s.schema._ids.labels(n,t):t.join(\".\")}reach(e,t=[]){const r=e[0],n=this._get(r);s(n,\"Schema does not contain path\",[...t,...e].join(\".\"));const a=e.slice(1);return a.length?n.schema._ids.reach(a,[...t,r]):n.schema}register(e,{key:t}={}){if(!e||!n.isSchema(e))return;(e.$_property(\"schemaChain\")||e._ids._schemaChain)&&(this._schemaChain=!0);const r=e._flags.id;if(r){const t=this._byId.get(r);s(!t||t.schema===e,\"Cannot add different schemas with the same id:\",r),s(!this._byKey.has(r),\"Schema id conflicts with existing key:\",r),this._byId.set(r,{schema:e,id:r})}t&&(s(!this._byKey.has(t),\"Schema already contains key:\",t),s(!this._byId.has(t),\"Schema key conflicts with existing id:\",t),this._byKey.set(t,{schema:e,id:t}))}reset(){this._byId=new Map,this._byKey=new Map,this._schemaChain=!1}_collect(e,t=[],r=[]){const n=e[0],a=this._get(n);s(a,\"Schema does not contain path\",[...t,...e].join(\".\")),r=[a,...r];const i=e.slice(1);return i.length?a.schema._ids._collect(i,[...t,n],r):r}_get(e){return this._byId.get(e)||this._byKey.get(e)}},i.fork=function(e,r,s){const n=t.schema(e,{each:(e,{key:t})=>{if(r===(e._flags.id||t))return s},ref:!1});return n?n.$_mutateRebuild():e},t.schema=function(e,t){let r;for(const s in e._flags){if(\"_\"===s[0])continue;const n=i.scan(e._flags[s],{source:\"flags\",name:s},t);void 0!==n&&(r=r||e.clone(),r._flags[s]=n)}for(let s=0;s<e._rules.length;++s){const n=e._rules[s],a=i.scan(n.args,{source:\"rules\",name:n.name},t);if(void 0!==a){r=r||e.clone();const t=Object.assign({},n);t.args=a,r._rules[s]=t,r._singleRules.get(n.name)===n&&r._singleRules.set(n.name,t)}}for(const s in e.$_terms){if(\"_\"===s[0])continue;const n=i.scan(e.$_terms[s],{source:\"terms\",name:s},t);void 0!==n&&(r=r||e.clone(),r.$_terms[s]=n)}return r},i.scan=function(e,t,r,s,o){const l=s||[];if(null===e||\"object\"!=typeof e)return;let c;if(Array.isArray(e)){for(let s=0;s<e.length;++s){const n=\"terms\"===t.source&&\"keys\"===t.name&&e[s].key,a=i.scan(e[s],t,r,[s,...l],n);void 0!==a&&(c=c||e.slice(),c[s]=a)}return c}if(!1!==r.schema&&n.isSchema(e)||!1!==r.ref&&a.isRef(e)){const s=r.each(e,{...t,path:l,key:o});if(s===e)return;return s}for(const s in e){if(\"_\"===s[0])continue;const n=i.scan(e[s],t,r,[s,...l],o);void 0!==n&&(c=c||Object.assign({},e),c[s]=n)}return c}},6133:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(9621),i=r(8160);let o;const l={symbol:Symbol(\"ref\"),defaults:{adjust:null,in:!1,iterables:null,map:null,separator:\".\",type:\"value\"}};t.create=function(e,t={}){s(\"string\"==typeof e,\"Invalid reference key:\",e),i.assertOptions(t,[\"adjust\",\"ancestor\",\"in\",\"iterables\",\"map\",\"prefix\",\"render\",\"separator\"]),s(!t.prefix||\"object\"==typeof t.prefix,\"options.prefix must be of type object\");const r=Object.assign({},l.defaults,t);delete r.prefix;const n=r.separator,a=l.context(e,n,t.prefix);if(r.type=a.type,e=a.key,\"value\"===r.type)if(a.root&&(s(!n||e[0]!==n,\"Cannot specify relative path with root prefix\"),r.ancestor=\"root\",e||(e=null)),n&&n===e)e=null,r.ancestor=0;else if(void 0!==r.ancestor)s(!n||!e||e[0]!==n,\"Cannot combine prefix with ancestor option\");else{const[t,s]=l.ancestor(e,n);s&&\"\"===(e=e.slice(s))&&(e=null),r.ancestor=t}return r.path=n?null===e?[]:e.split(n):[e],new l.Ref(r)},t.in=function(e,r={}){return t.create(e,{...r,in:!0})},t.isRef=function(e){return!!e&&!!e[i.symbols.ref]},l.Ref=class{constructor(e){s(\"object\"==typeof e,\"Invalid reference construction\"),i.assertOptions(e,[\"adjust\",\"ancestor\",\"in\",\"iterables\",\"map\",\"path\",\"render\",\"separator\",\"type\",\"depth\",\"key\",\"root\",\"display\"]),s([!1,void 0].includes(e.separator)||\"string\"==typeof e.separator&&1===e.separator.length,\"Invalid separator\"),s(!e.adjust||\"function\"==typeof e.adjust,\"options.adjust must be a function\"),s(!e.map||Array.isArray(e.map),\"options.map must be an array\"),s(!e.map||!e.adjust,\"Cannot set both map and adjust options\"),Object.assign(this,l.defaults,e),s(\"value\"===this.type||void 0===this.ancestor,\"Non-value references cannot reference ancestors\"),Array.isArray(this.map)&&(this.map=new Map(this.map)),this.depth=this.path.length,this.key=this.path.length?this.path.join(this.separator):null,this.root=this.path[0],this.updateDisplay()}resolve(e,t,r,n,a={}){return s(!this.in||a.in,\"Invalid in() reference usage\"),\"global\"===this.type?this._resolve(r.context,t,a):\"local\"===this.type?this._resolve(n,t,a):this.ancestor?\"root\"===this.ancestor?this._resolve(t.ancestors[t.ancestors.length-1],t,a):(s(this.ancestor<=t.ancestors.length,\"Invalid reference exceeds the schema root:\",this.display),this._resolve(t.ancestors[this.ancestor-1],t,a)):this._resolve(e,t,a)}_resolve(e,t,r){let s;if(\"value\"===this.type&&t.mainstay.shadow&&!1!==r.shadow&&(s=t.mainstay.shadow.get(this.absolute(t))),void 0===s&&(s=a(e,this.path,{iterables:this.iterables,functions:!0})),this.adjust&&(s=this.adjust(s)),this.map){const e=this.map.get(s);void 0!==e&&(s=e)}return t.mainstay&&t.mainstay.tracer.resolve(t,this,s),s}toString(){return this.display}absolute(e){return[...e.path.slice(0,-this.ancestor),...this.path]}clone(){return new l.Ref(this)}describe(){const e={path:this.path};\"value\"!==this.type&&(e.type=this.type),\".\"!==this.separator&&(e.separator=this.separator),\"value\"===this.type&&1!==this.ancestor&&(e.ancestor=this.ancestor),this.map&&(e.map=[...this.map]);for(const t of[\"adjust\",\"iterables\",\"render\"])null!==this[t]&&void 0!==this[t]&&(e[t]=this[t]);return!1!==this.in&&(e.in=!0),{ref:e}}updateDisplay(){const e=null!==this.key?this.key:\"\";if(\"value\"!==this.type)return void(this.display=`ref:${this.type}:${e}`);if(!this.separator)return void(this.display=`ref:${e}`);if(!this.ancestor)return void(this.display=`ref:${this.separator}${e}`);if(\"root\"===this.ancestor)return void(this.display=`ref:root:${e}`);if(1===this.ancestor)return void(this.display=`ref:${e||\"..\"}`);const t=new Array(this.ancestor+1).fill(this.separator).join(\"\");this.display=`ref:${t}${e||\"\"}`}},l.Ref.prototype[i.symbols.ref]=!0,t.build=function(e){return\"value\"===(e=Object.assign({},l.defaults,e)).type&&void 0===e.ancestor&&(e.ancestor=1),new l.Ref(e)},l.context=function(e,t,r={}){if(e=e.trim(),r){const s=void 0===r.global?\"$\":r.global;if(s!==t&&e.startsWith(s))return{key:e.slice(s.length),type:\"global\"};const n=void 0===r.local?\"#\":r.local;if(n!==t&&e.startsWith(n))return{key:e.slice(n.length),type:\"local\"};const a=void 0===r.root?\"/\":r.root;if(a!==t&&e.startsWith(a))return{key:e.slice(a.length),type:\"value\",root:!0}}return{key:e,type:\"value\"}},l.ancestor=function(e,t){if(!t)return[1,0];if(e[0]!==t)return[1,0];if(e[1]!==t)return[0,1];let r=2;for(;e[r]===t;)++r;return[r-1,r]},t.toSibling=0,t.toParent=1,t.Manager=class{constructor(){this.refs=[]}register(e,s){if(e)if(s=void 0===s?t.toParent:s,Array.isArray(e))for(const t of e)this.register(t,s);else if(i.isSchema(e))for(const t of e._refs.refs)t.ancestor-s>=0&&this.refs.push({ancestor:t.ancestor-s,root:t.root});else t.isRef(e)&&\"value\"===e.type&&e.ancestor-s>=0&&this.refs.push({ancestor:e.ancestor-s,root:e.root}),o=o||r(3328),o.isTemplate(e)&&this.register(e.refs(),s)}get length(){return this.refs.length}clone(){const e=new t.Manager;return e.refs=n(this.refs),e}reset(){this.refs=[]}roots(){return this.refs.filter((e=>!e.ancestor)).map((e=>e.root))}}},3378:(e,t,r)=>{\"use strict\";const s=r(5107),n={};n.wrap=s.string().min(1).max(2).allow(!1),t.preferences=s.object({allowUnknown:s.boolean(),abortEarly:s.boolean(),artifacts:s.boolean(),cache:s.boolean(),context:s.object(),convert:s.boolean(),dateFormat:s.valid(\"date\",\"iso\",\"string\",\"time\",\"utc\"),debug:s.boolean(),errors:{escapeHtml:s.boolean(),label:s.valid(\"path\",\"key\",!1),language:[s.string(),s.object().ref()],render:s.boolean(),stack:s.boolean(),wrap:{label:n.wrap,array:n.wrap,string:n.wrap}},externals:s.boolean(),messages:s.object(),noDefaults:s.boolean(),nonEnumerables:s.boolean(),presence:s.valid(\"required\",\"optional\",\"forbidden\"),skipFunctions:s.boolean(),stripUnknown:s.object({arrays:s.boolean(),objects:s.boolean()}).or(\"arrays\",\"objects\").allow(!0,!1),warnings:s.boolean()}).strict(),n.nameRx=/^[a-zA-Z0-9]\\w*$/,n.rule=s.object({alias:s.array().items(s.string().pattern(n.nameRx)).single(),args:s.array().items(s.string(),s.object({name:s.string().pattern(n.nameRx).required(),ref:s.boolean(),assert:s.alternatives([s.function(),s.object().schema()]).conditional(\"ref\",{is:!0,then:s.required()}),normalize:s.function(),message:s.string().when(\"assert\",{is:s.function(),then:s.required()})})),convert:s.boolean(),manifest:s.boolean(),method:s.function().allow(!1),multi:s.boolean(),validate:s.function()}),t.extension=s.object({type:s.alternatives([s.string(),s.object().regex()]).required(),args:s.function(),cast:s.object().pattern(n.nameRx,s.object({from:s.function().maxArity(1).required(),to:s.function().minArity(1).maxArity(2).required()})),base:s.object().schema().when(\"type\",{is:s.object().regex(),then:s.forbidden()}),coerce:[s.function().maxArity(3),s.object({method:s.function().maxArity(3).required(),from:s.array().items(s.string()).single()})],flags:s.object().pattern(n.nameRx,s.object({setter:s.string(),default:s.any()})),manifest:{build:s.function().arity(2)},messages:[s.object(),s.string()],modifiers:s.object().pattern(n.nameRx,s.function().minArity(1).maxArity(2)),overrides:s.object().pattern(n.nameRx,s.function()),prepare:s.function().maxArity(3),rebuild:s.function().arity(1),rules:s.object().pattern(n.nameRx,n.rule),terms:s.object().pattern(n.nameRx,s.object({init:s.array().allow(null).required(),manifest:s.object().pattern(/.+/,[s.valid(\"schema\",\"single\"),s.object({mapped:s.object({from:s.string().required(),to:s.string().required()}).required()})])})),validate:s.function().maxArity(3)}).strict(),t.extensions=s.array().items(s.object(),s.function().arity(1)).strict(),n.desc={buffer:s.object({buffer:s.string()}),func:s.object({function:s.function().required(),options:{literal:!0}}),override:s.object({override:!0}),ref:s.object({ref:s.object({type:s.valid(\"value\",\"global\",\"local\"),path:s.array().required(),separator:s.string().length(1).allow(!1),ancestor:s.number().min(0).integer().allow(\"root\"),map:s.array().items(s.array().length(2)).min(1),adjust:s.function(),iterables:s.boolean(),in:s.boolean(),render:s.boolean()}).required()}),regex:s.object({regex:s.string().min(3)}),special:s.object({special:s.valid(\"deep\").required()}),template:s.object({template:s.string().required(),options:s.object()}),value:s.object({value:s.alternatives([s.object(),s.array()]).required()})},n.desc.entity=s.alternatives([s.array().items(s.link(\"...\")),s.boolean(),s.function(),s.number(),s.string(),n.desc.buffer,n.desc.func,n.desc.ref,n.desc.regex,n.desc.special,n.desc.template,n.desc.value,s.link(\"/\")]),n.desc.values=s.array().items(null,s.boolean(),s.function(),s.number().allow(1/0,-1/0),s.string().allow(\"\"),s.symbol(),n.desc.buffer,n.desc.func,n.desc.override,n.desc.ref,n.desc.regex,n.desc.template,n.desc.value),n.desc.messages=s.object().pattern(/.+/,[s.string(),n.desc.template,s.object().pattern(/.+/,[s.string(),n.desc.template])]),t.description=s.object({type:s.string().required(),flags:s.object({cast:s.string(),default:s.any(),description:s.string(),empty:s.link(\"/\"),failover:n.desc.entity,id:s.string(),label:s.string(),only:!0,presence:[\"optional\",\"required\",\"forbidden\"],result:[\"raw\",\"strip\"],strip:s.boolean(),unit:s.string()}).unknown(),preferences:{allowUnknown:s.boolean(),abortEarly:s.boolean(),artifacts:s.boolean(),cache:s.boolean(),convert:s.boolean(),dateFormat:[\"date\",\"iso\",\"string\",\"time\",\"utc\"],errors:{escapeHtml:s.boolean(),label:[\"path\",\"key\"],language:[s.string(),n.desc.ref],wrap:{label:n.wrap,array:n.wrap}},externals:s.boolean(),messages:n.desc.messages,noDefaults:s.boolean(),nonEnumerables:s.boolean(),presence:[\"required\",\"optional\",\"forbidden\"],skipFunctions:s.boolean(),stripUnknown:s.object({arrays:s.boolean(),objects:s.boolean()}).or(\"arrays\",\"objects\").allow(!0,!1),warnings:s.boolean()},allow:n.desc.values,invalid:n.desc.values,rules:s.array().min(1).items({name:s.string().required(),args:s.object().min(1),keep:s.boolean(),message:[s.string(),n.desc.messages],warn:s.boolean()}),keys:s.object().pattern(/.*/,s.link(\"/\")),link:n.desc.ref}).pattern(/^[a-z]\\w*$/,s.any())},493:(e,t,r)=>{\"use strict\";const s=r(8571),n=r(9621),a=r(8160),i={value:Symbol(\"value\")};e.exports=i.State=class{constructor(e,t,r){this.path=e,this.ancestors=t,this.mainstay=r.mainstay,this.schemas=r.schemas,this.debug=null}localize(e,t=null,r=null){const s=new i.State(e,t,this);return r&&s.schemas&&(s.schemas=[i.schemas(r),...s.schemas]),s}nest(e,t){const r=new i.State(this.path,this.ancestors,this);return r.schemas=r.schemas&&[i.schemas(e),...r.schemas],r.debug=t,r}shadow(e,t){this.mainstay.shadow=this.mainstay.shadow||new i.Shadow,this.mainstay.shadow.set(this.path,e,t)}snapshot(){this.mainstay.shadow&&(this._snapshot=s(this.mainstay.shadow.node(this.path))),this.mainstay.snapshot()}restore(){this.mainstay.shadow&&(this.mainstay.shadow.override(this.path,this._snapshot),this._snapshot=void 0),this.mainstay.restore()}commit(){this.mainstay.shadow&&(this.mainstay.shadow.override(this.path,this._snapshot),this._snapshot=void 0),this.mainstay.commit()}},i.schemas=function(e){return a.isSchema(e)?{schema:e}:e},i.Shadow=class{constructor(){this._values=null}set(e,t,r){if(!e.length)return;if(\"strip\"===r&&\"number\"==typeof e[e.length-1])return;this._values=this._values||new Map;let s=this._values;for(let t=0;t<e.length;++t){const r=e[t];let n=s.get(r);n||(n=new Map,s.set(r,n)),s=n}s[i.value]=t}get(e){const t=this.node(e);if(t)return t[i.value]}node(e){if(this._values)return n(this._values,e,{iterables:!0})}override(e,t){if(!this._values)return;const r=e.slice(0,-1),s=e[e.length-1],a=n(this._values,r,{iterables:!0});t?a.set(s,t):a&&a.delete(s)}}},3328:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(5277),i=r(1447),o=r(8160),l=r(6354),c=r(6133),u={symbol:Symbol(\"template\"),opens:new Array(1e3).join(\"\\0\"),closes:new Array(1e3).join(\"\u0001\"),dateFormat:{date:Date.prototype.toDateString,iso:Date.prototype.toISOString,string:Date.prototype.toString,time:Date.prototype.toTimeString,utc:Date.prototype.toUTCString}};e.exports=u.Template=class{constructor(e,t){if(s(\"string\"==typeof e,\"Template source must be a string\"),s(!e.includes(\"\\0\")&&!e.includes(\"\u0001\"),\"Template source cannot contain reserved control characters\"),this.source=e,this.rendered=e,this._template=null,t){const{functions:e,...r}=t;this._settings=Object.keys(r).length?n(r):void 0,this._functions=e,this._functions&&(s(Object.keys(this._functions).every((e=>\"string\"==typeof e)),\"Functions keys must be strings\"),s(Object.values(this._functions).every((e=>\"function\"==typeof e)),\"Functions values must be functions\"))}else this._settings=void 0,this._functions=void 0;this._parse()}_parse(){if(!this.source.includes(\"{\"))return;const e=u.encode(this.source),t=u.split(e);let r=!1;const s=[],n=t.shift();n&&s.push(n);for(const e of t){const t=\"{\"!==e[0],n=t?\"}\":\"}}\",a=e.indexOf(n);if(-1===a||\"{\"===e[1]){s.push(`{${u.decode(e)}`);continue}let i=e.slice(t?0:1,a);const o=\":\"===i[0];o&&(i=i.slice(1));const l=this._ref(u.decode(i),{raw:t,wrapped:o});s.push(l),\"string\"!=typeof l&&(r=!0);const c=e.slice(a+n.length);c&&s.push(u.decode(c))}r?this._template=s:this.rendered=s.join(\"\")}static date(e,t){return u.dateFormat[t.dateFormat].call(e)}describe(e={}){if(!this._settings&&e.compact)return this.source;const t={template:this.source};return this._settings&&(t.options=this._settings),this._functions&&(t.functions=this._functions),t}static build(e){return new u.Template(e.template,e.options||e.functions?{...e.options,functions:e.functions}:void 0)}isDynamic(){return!!this._template}static isTemplate(e){return!!e&&!!e[o.symbols.template]}refs(){if(!this._template)return;const e=[];for(const t of this._template)\"string\"!=typeof t&&e.push(...t.refs);return e}resolve(e,t,r,s){return this._template&&1===this._template.length?this._part(this._template[0],e,t,r,s,{}):this.render(e,t,r,s)}_part(e,...t){return e.ref?e.ref.resolve(...t):e.formula.evaluate(t)}render(e,t,r,s,n={}){if(!this.isDynamic())return this.rendered;const i=[];for(const o of this._template)if(\"string\"==typeof o)i.push(o);else{const l=this._part(o,e,t,r,s,n),c=u.stringify(l,e,t,r,s,n);if(void 0!==c){const e=o.raw||!1===(n.errors&&n.errors.escapeHtml)?c:a(c);i.push(u.wrap(e,o.wrapped&&r.errors.wrap.label))}}return i.join(\"\")}_ref(e,{raw:t,wrapped:r}){const s=[],n=e=>{const t=c.create(e,this._settings);return s.push(t),e=>{const r=t.resolve(...e);return void 0!==r?r:null}};try{const t=this._functions?{...u.functions,...this._functions}:u.functions;var a=new i.Parser(e,{reference:n,functions:t,constants:u.constants})}catch(t){throw t.message=`Invalid template variable \"${e}\" fails due to: ${t.message}`,t}if(a.single){if(\"reference\"===a.single.type){const e=s[0];return{ref:e,raw:t,refs:s,wrapped:r||\"local\"===e.type&&\"label\"===e.key}}return u.stringify(a.single.value)}return{formula:a,raw:t,refs:s}}toString(){return this.source}},u.Template.prototype[o.symbols.template]=!0,u.Template.prototype.isImmutable=!0,u.encode=function(e){return e.replace(/\\\\(\\{+)/g,((e,t)=>u.opens.slice(0,t.length))).replace(/\\\\(\\}+)/g,((e,t)=>u.closes.slice(0,t.length)))},u.decode=function(e){return e.replace(/\\u0000/g,\"{\").replace(/\\u0001/g,\"}\")},u.split=function(e){const t=[];let r=\"\";for(let s=0;s<e.length;++s){const n=e[s];if(\"{\"===n){let n=\"\";for(;s+1<e.length&&\"{\"===e[s+1];)n+=\"{\",++s;t.push(r),r=n}else r+=n}return t.push(r),t},u.wrap=function(e,t){return t?1===t.length?`${t}${e}${t}`:`${t[0]}${e}${t[1]}`:e},u.stringify=function(e,t,r,s,n,a={}){const i=typeof e,o=s&&s.errors&&s.errors.wrap||{};let l=!1;if(c.isRef(e)&&e.render&&(l=e.in,e=e.resolve(t,r,s,n,{in:e.in,...a})),null===e)return\"null\";if(\"string\"===i)return u.wrap(e,a.arrayItems&&o.string);if(\"number\"===i||\"function\"===i||\"symbol\"===i)return e.toString();if(\"object\"!==i)return JSON.stringify(e);if(e instanceof Date)return u.Template.date(e,s);if(e instanceof Map){const t=[];for(const[r,s]of e.entries())t.push(`${r.toString()} -> ${s.toString()}`);e=t}if(!Array.isArray(e))return e.toString();const f=[];for(const i of e)f.push(u.stringify(i,t,r,s,n,{arrayItems:!0,...a}));return u.wrap(f.join(\", \"),!l&&o.array)},u.constants={true:!0,false:!1,null:null,second:1e3,minute:6e4,hour:36e5,day:864e5},u.functions={if:(e,t,r)=>e?t:r,length:e=>\"string\"==typeof e?e.length:e&&\"object\"==typeof e?Array.isArray(e)?e.length:Object.keys(e).length:null,msg(e){const[t,r,s,n,a]=this,i=a.messages;if(!i)return\"\";const o=l.template(t,i[0],e,r,s)||l.template(t,i[1],e,r,s);return o?o.render(t,r,s,n,a):\"\"},number:e=>\"number\"==typeof e?e:\"string\"==typeof e?parseFloat(e):\"boolean\"==typeof e?e?1:0:e instanceof Date?e.getTime():null}},4946:(e,t,r)=>{\"use strict\";const s=r(375),n=r(1687),a=r(8068),i=r(8160),o=r(3292),l=r(6354),c=r(6133),u={};e.exports=a.extend({type:\"alternatives\",flags:{match:{default:\"any\"}},terms:{matches:{init:[],register:c.toSibling}},args:(e,...t)=>1===t.length&&Array.isArray(t[0])?e.try(...t[0]):e.try(...t),validate(e,t){const{schema:r,error:s,state:a,prefs:i}=t;if(r._flags.match){const t=[],o=[];for(let s=0;s<r.$_terms.matches.length;++s){const n=r.$_terms.matches[s],l=a.nest(n.schema,`match.${s}`);l.snapshot();const c=n.schema.$_validate(e,l,i);c.errors?(o.push(c.errors),l.restore()):(t.push(c.value),l.commit())}if(0===t.length)return{errors:s(\"alternatives.any\",{details:o.map((e=>l.details(e,{override:!1})))})};if(\"one\"===r._flags.match)return 1===t.length?{value:t[0]}:{errors:s(\"alternatives.one\")};if(t.length!==r.$_terms.matches.length)return{errors:s(\"alternatives.all\",{details:o.map((e=>l.details(e,{override:!1})))})};const c=e=>e.$_terms.matches.some((e=>\"object\"===e.schema.type||\"alternatives\"===e.schema.type&&c(e.schema)));return c(r)?{value:t.reduce(((e,t)=>n(e,t,{mergeArrays:!1})))}:{value:t[t.length-1]}}const o=[];for(let t=0;t<r.$_terms.matches.length;++t){const s=r.$_terms.matches[t];if(s.schema){const r=a.nest(s.schema,`match.${t}`);r.snapshot();const n=s.schema.$_validate(e,r,i);if(!n.errors)return r.commit(),n;r.restore(),o.push({schema:s.schema,reports:n.errors});continue}const n=s.ref?s.ref.resolve(e,a,i):e,l=s.is?[s]:s.switch;for(let r=0;r<l.length;++r){const o=l[r],{is:c,then:u,otherwise:f}=o,m=`match.${t}${s.switch?\".\"+r:\"\"}`;if(c.$_match(n,a.nest(c,`${m}.is`),i)){if(u)return u.$_validate(e,a.nest(u,`${m}.then`),i)}else if(f)return f.$_validate(e,a.nest(f,`${m}.otherwise`),i)}}return u.errors(o,t)},rules:{conditional:{method(e,t){s(!this._flags._endedSwitch,\"Unreachable condition\"),s(!this._flags.match,\"Cannot combine match mode\",this._flags.match,\"with conditional rule\"),s(void 0===t.break,\"Cannot use break option with alternatives conditional\");const r=this.clone(),n=o.when(r,e,t),a=n.is?[n]:n.switch;for(const e of a)if(e.then&&e.otherwise){r.$_setFlag(\"_endedSwitch\",!0,{clone:!1});break}return r.$_terms.matches.push(n),r.$_mutateRebuild()}},match:{method(e){if(s([\"any\",\"one\",\"all\"].includes(e),\"Invalid alternatives match mode\",e),\"any\"!==e)for(const t of this.$_terms.matches)s(t.schema,\"Cannot combine match mode\",e,\"with conditional rules\");return this.$_setFlag(\"match\",e)}},try:{method(...e){s(e.length,\"Missing alternative schemas\"),i.verifyFlat(e,\"try\"),s(!this._flags._endedSwitch,\"Unreachable condition\");const t=this.clone();for(const r of e)t.$_terms.matches.push({schema:t.$_compile(r)});return t.$_mutateRebuild()}}},overrides:{label(e){return this.$_parent(\"label\",e).$_modify({each:(t,r)=>\"is\"!==r.path[0]&&\"string\"!=typeof t._flags.label?t.label(e):void 0,ref:!1})}},rebuild(e){e.$_modify({each:t=>{i.isSchema(t)&&\"array\"===t.type&&e.$_setFlag(\"_arrayItems\",!0,{clone:!1})}})},manifest:{build(e,t){if(t.matches)for(const r of t.matches){const{schema:t,ref:s,is:n,not:a,then:i,otherwise:o}=r;e=t?e.try(t):s?e.conditional(s,{is:n,then:i,not:a,otherwise:o,switch:r.switch}):e.conditional(n,{then:i,otherwise:o})}return e}},messages:{\"alternatives.all\":\"{{#label}} does not match all of the required types\",\"alternatives.any\":\"{{#label}} does not match any of the allowed types\",\"alternatives.match\":\"{{#label}} does not match any of the allowed types\",\"alternatives.one\":\"{{#label}} matches more than one allowed type\",\"alternatives.types\":\"{{#label}} must be one of {{#types}}\"}}),u.errors=function(e,{error:t,state:r}){if(!e.length)return{errors:t(\"alternatives.any\")};if(1===e.length)return{errors:e[0].reports};const s=new Set,n=[];for(const{reports:a,schema:i}of e){if(a.length>1)return u.unmatched(e,t);const o=a[0];if(o instanceof l.Report==0)return u.unmatched(e,t);if(o.state.path.length!==r.path.length){n.push({type:i.type,report:o});continue}if(\"any.only\"===o.code){for(const e of o.local.valids)s.add(e);continue}const[c,f]=o.code.split(\".\");\"base\"===f?s.add(c):n.push({type:i.type,report:o})}return n.length?1===n.length?{errors:n[0].report}:u.unmatched(e,t):{errors:t(\"alternatives.types\",{types:[...s]})}},u.unmatched=function(e,t){const r=[];for(const t of e)r.push(...t.reports);return{errors:t(\"alternatives.match\",l.details(r,{override:!1}))}}},8068:(e,t,r)=>{\"use strict\";const s=r(375),n=r(7629),a=r(8160),i=r(6914);e.exports=n.extend({type:\"any\",flags:{only:{default:!1}},terms:{alterations:{init:null},examples:{init:null},externals:{init:null},metas:{init:[]},notes:{init:[]},shared:{init:null},tags:{init:[]},whens:{init:null}},rules:{custom:{method(e,t){return s(\"function\"==typeof e,\"Method must be a function\"),s(void 0===t||t&&\"string\"==typeof t,\"Description must be a non-empty string\"),this.$_addRule({name:\"custom\",args:{method:e,description:t}})},validate(e,t,{method:r}){try{return r(e,t)}catch(e){return t.error(\"any.custom\",{error:e})}},args:[\"method\",\"description\"],multi:!0},messages:{method(e){return this.prefs({messages:e})}},shared:{method(e){s(a.isSchema(e)&&e._flags.id,\"Schema must be a schema with an id\");const t=this.clone();return t.$_terms.shared=t.$_terms.shared||[],t.$_terms.shared.push(e),t.$_mutateRegister(e),t}},warning:{method(e,t){return s(e&&\"string\"==typeof e,\"Invalid warning code\"),this.$_addRule({name:\"warning\",args:{code:e,local:t},warn:!0})},validate:(e,t,{code:r,local:s})=>t.error(r,s),args:[\"code\",\"local\"],multi:!0}},modifiers:{keep(e,t=!0){e.keep=t},message(e,t){e.message=i.compile(t)},warn(e,t=!0){e.warn=t}},manifest:{build(e,t){for(const r in t){const s=t[r];if([\"examples\",\"externals\",\"metas\",\"notes\",\"tags\"].includes(r))for(const t of s)e=e[r.slice(0,-1)](t);else if(\"alterations\"!==r)if(\"whens\"!==r){if(\"shared\"===r)for(const t of s)e=e.shared(t)}else for(const t of s){const{ref:r,is:s,not:n,then:a,otherwise:i,concat:o}=t;e=o?e.concat(o):r?e.when(r,{is:s,not:n,then:a,otherwise:i,switch:t.switch,break:t.break}):e.when(s,{then:a,otherwise:i,break:t.break})}else{const t={};for(const{target:e,adjuster:r}of s)t[e]=r;e=e.alter(t)}}return e}},messages:{\"any.custom\":\"{{#label}} failed custom validation because {{#error.message}}\",\"any.default\":\"{{#label}} threw an error when running default method\",\"any.failover\":\"{{#label}} threw an error when running failover method\",\"any.invalid\":\"{{#label}} contains an invalid value\",\"any.only\":'{{#label}} must be {if(#valids.length == 1, \"\", \"one of \")}{{#valids}}',\"any.ref\":\"{{#label}} {{#arg}} references {{:#ref}} which {{#reason}}\",\"any.required\":\"{{#label}} is required\",\"any.unknown\":\"{{#label}} is not allowed\"}})},546:(e,t,r)=>{\"use strict\";const s=r(375),n=r(9474),a=r(9621),i=r(8068),o=r(8160),l=r(3292),c={};e.exports=i.extend({type:\"array\",flags:{single:{default:!1},sparse:{default:!1}},terms:{items:{init:[],manifest:\"schema\"},ordered:{init:[],manifest:\"schema\"},_exclusions:{init:[]},_inclusions:{init:[]},_requireds:{init:[]}},coerce:{from:\"object\",method(e,{schema:t,state:r,prefs:s}){if(!Array.isArray(e))return;const n=t.$_getRule(\"sort\");return n?c.sort(t,e,n.args.options,r,s):void 0}},validate(e,{schema:t,error:r}){if(!Array.isArray(e)){if(t._flags.single){const t=[e];return t[o.symbols.arraySingle]=!0,{value:t}}return{errors:r(\"array.base\")}}if(t.$_getRule(\"items\")||t.$_terms.externals)return{value:e.slice()}},rules:{has:{method(e){e=this.$_compile(e,{appendPath:!0});const t=this.$_addRule({name:\"has\",args:{schema:e}});return t.$_mutateRegister(e),t},validate(e,{state:t,prefs:r,error:s},{schema:n}){const a=[e,...t.ancestors];for(let s=0;s<e.length;++s){const i=t.localize([...t.path,s],a,n);if(n.$_match(e[s],i,r))return e}const i=n._flags.label;return i?s(\"array.hasKnown\",{patternLabel:i}):s(\"array.hasUnknown\",null)},multi:!0},items:{method(...e){o.verifyFlat(e,\"items\");const t=this.$_addRule(\"items\");for(let r=0;r<e.length;++r){const s=o.tryWithPath((()=>this.$_compile(e[r])),r,{append:!0});t.$_terms.items.push(s)}return t.$_mutateRebuild()},validate(e,{schema:t,error:r,state:s,prefs:n,errorsArray:a}){const i=t.$_terms._requireds.slice(),l=t.$_terms.ordered.slice(),u=[...t.$_terms._inclusions,...i],f=!e[o.symbols.arraySingle];delete e[o.symbols.arraySingle];const m=a();let h=e.length;for(let a=0;a<h;++a){const o=e[a];let d=!1,p=!1;const g=f?a:new Number(a),y=[...s.path,g];if(!t._flags.sparse&&void 0===o){if(m.push(r(\"array.sparse\",{key:g,path:y,pos:a,value:void 0},s.localize(y))),n.abortEarly)return m;l.shift();continue}const b=[e,...s.ancestors];for(const e of t.$_terms._exclusions)if(e.$_match(o,s.localize(y,b,e),n,{presence:\"ignore\"})){if(m.push(r(\"array.excludes\",{pos:a,value:o},s.localize(y))),n.abortEarly)return m;d=!0,l.shift();break}if(d)continue;if(t.$_terms.ordered.length){if(l.length){const i=l.shift(),u=i.$_validate(o,s.localize(y,b,i),n);if(u.errors){if(m.push(...u.errors),n.abortEarly)return m}else if(\"strip\"===i._flags.result)c.fastSplice(e,a),--a,--h;else{if(!t._flags.sparse&&void 0===u.value){if(m.push(r(\"array.sparse\",{key:g,path:y,pos:a,value:void 0},s.localize(y))),n.abortEarly)return m;continue}e[a]=u.value}continue}if(!t.$_terms.items.length){if(m.push(r(\"array.orderedLength\",{pos:a,limit:t.$_terms.ordered.length})),n.abortEarly)return m;break}}const v=[];let _=i.length;for(let l=0;l<_;++l){const u=s.localize(y,b,i[l]);u.snapshot();const f=i[l].$_validate(o,u,n);if(v[l]=f,!f.errors){if(u.commit(),e[a]=f.value,p=!0,c.fastSplice(i,l),--l,--_,!t._flags.sparse&&void 0===f.value&&(m.push(r(\"array.sparse\",{key:g,path:y,pos:a,value:void 0},s.localize(y))),n.abortEarly))return m;break}u.restore()}if(p)continue;const w=n.stripUnknown&&!!n.stripUnknown.arrays||!1;_=u.length;for(const l of u){let u;const f=i.indexOf(l);if(-1!==f)u=v[f];else{const i=s.localize(y,b,l);if(i.snapshot(),u=l.$_validate(o,i,n),!u.errors){i.commit(),\"strip\"===l._flags.result?(c.fastSplice(e,a),--a,--h):t._flags.sparse||void 0!==u.value?e[a]=u.value:(m.push(r(\"array.sparse\",{key:g,path:y,pos:a,value:void 0},s.localize(y))),d=!0),p=!0;break}i.restore()}if(1===_){if(w){c.fastSplice(e,a),--a,--h,p=!0;break}if(m.push(...u.errors),n.abortEarly)return m;d=!0;break}}if(!d&&(t.$_terms._inclusions.length||t.$_terms._requireds.length)&&!p){if(w){c.fastSplice(e,a),--a,--h;continue}if(m.push(r(\"array.includes\",{pos:a,value:o},s.localize(y))),n.abortEarly)return m}}return i.length&&c.fillMissedErrors(t,m,i,e,s,n),l.length&&(c.fillOrderedErrors(t,m,l,e,s,n),m.length||c.fillDefault(l,e,s,n)),m.length?m:e},priority:!0,manifest:!1},length:{method(e){return this.$_addRule({name:\"length\",args:{limit:e},operator:\"=\"})},validate:(e,t,{limit:r},{name:s,operator:n,args:a})=>o.compare(e.length,r,n)?e:t.error(\"array.\"+s,{limit:a.limit,value:e}),args:[{name:\"limit\",ref:!0,assert:o.limit,message:\"must be a positive integer\"}]},max:{method(e){return this.$_addRule({name:\"max\",method:\"length\",args:{limit:e},operator:\"<=\"})}},min:{method(e){return this.$_addRule({name:\"min\",method:\"length\",args:{limit:e},operator:\">=\"})}},ordered:{method(...e){o.verifyFlat(e,\"ordered\");const t=this.$_addRule(\"items\");for(let r=0;r<e.length;++r){const s=o.tryWithPath((()=>this.$_compile(e[r])),r,{append:!0});c.validateSingle(s,t),t.$_mutateRegister(s),t.$_terms.ordered.push(s)}return t.$_mutateRebuild()}},single:{method(e){const t=void 0===e||!!e;return s(!t||!this._flags._arrayItems,\"Cannot specify single rule when array has array items\"),this.$_setFlag(\"single\",t)}},sort:{method(e={}){o.assertOptions(e,[\"by\",\"order\"]);const t={order:e.order||\"ascending\"};return e.by&&(t.by=l.ref(e.by,{ancestor:0}),s(!t.by.ancestor,\"Cannot sort by ancestor\")),this.$_addRule({name:\"sort\",args:{options:t}})},validate(e,{error:t,state:r,prefs:s,schema:n},{options:a}){const{value:i,errors:o}=c.sort(n,e,a,r,s);if(o)return o;for(let r=0;r<e.length;++r)if(e[r]!==i[r])return t(\"array.sort\",{order:a.order,by:a.by?a.by.key:\"value\"});return e},convert:!0},sparse:{method(e){const t=void 0===e||!!e;return this._flags.sparse===t?this:(t?this.clone():this.$_addRule(\"items\")).$_setFlag(\"sparse\",t,{clone:!1})}},unique:{method(e,t={}){s(!e||\"function\"==typeof e||\"string\"==typeof e,\"comparator must be a function or a string\"),o.assertOptions(t,[\"ignoreUndefined\",\"separator\"]);const r={name:\"unique\",args:{options:t,comparator:e}};if(e)if(\"string\"==typeof e){const s=o.default(t.separator,\".\");r.path=s?e.split(s):[e]}else r.comparator=e;return this.$_addRule(r)},validate(e,{state:t,error:r,schema:i},{comparator:o,options:l},{comparator:c,path:u}){const f={string:Object.create(null),number:Object.create(null),undefined:Object.create(null),boolean:Object.create(null),bigint:Object.create(null),object:new Map,function:new Map,custom:new Map},m=c||n,h=l.ignoreUndefined;for(let n=0;n<e.length;++n){const i=u?a(e[n],u):e[n],l=c?f.custom:f[typeof i];if(s(l,\"Failed to find unique map container for type\",typeof i),l instanceof Map){const s=l.entries();let a;for(;!(a=s.next()).done;)if(m(a.value[0],i)){const s=t.localize([...t.path,n],[e,...t.ancestors]),i={pos:n,value:e[n],dupePos:a.value[1],dupeValue:e[a.value[1]]};return u&&(i.path=o),r(\"array.unique\",i,s)}l.set(i,n)}else{if((!h||void 0!==i)&&void 0!==l[i]){const s={pos:n,value:e[n],dupePos:l[i],dupeValue:e[l[i]]};return u&&(s.path=o),r(\"array.unique\",s,t.localize([...t.path,n],[e,...t.ancestors]))}l[i]=n}}return e},args:[\"comparator\",\"options\"],multi:!0}},cast:{set:{from:Array.isArray,to:(e,t)=>new Set(e)}},rebuild(e){e.$_terms._inclusions=[],e.$_terms._exclusions=[],e.$_terms._requireds=[];for(const t of e.$_terms.items)c.validateSingle(t,e),\"required\"===t._flags.presence?e.$_terms._requireds.push(t):\"forbidden\"===t._flags.presence?e.$_terms._exclusions.push(t):e.$_terms._inclusions.push(t);for(const t of e.$_terms.ordered)c.validateSingle(t,e)},manifest:{build:(e,t)=>(t.items&&(e=e.items(...t.items)),t.ordered&&(e=e.ordered(...t.ordered)),e)},messages:{\"array.base\":\"{{#label}} must be an array\",\"array.excludes\":\"{{#label}} contains an excluded value\",\"array.hasKnown\":\"{{#label}} does not contain at least one required match for type {:#patternLabel}\",\"array.hasUnknown\":\"{{#label}} does not contain at least one required match\",\"array.includes\":\"{{#label}} does not match any of the allowed types\",\"array.includesRequiredBoth\":\"{{#label}} does not contain {{#knownMisses}} and {{#unknownMisses}} other required value(s)\",\"array.includesRequiredKnowns\":\"{{#label}} does not contain {{#knownMisses}}\",\"array.includesRequiredUnknowns\":\"{{#label}} does not contain {{#unknownMisses}} required value(s)\",\"array.length\":\"{{#label}} must contain {{#limit}} items\",\"array.max\":\"{{#label}} must contain less than or equal to {{#limit}} items\",\"array.min\":\"{{#label}} must contain at least {{#limit}} items\",\"array.orderedLength\":\"{{#label}} must contain at most {{#limit}} items\",\"array.sort\":\"{{#label}} must be sorted in {#order} order by {{#by}}\",\"array.sort.mismatching\":\"{{#label}} cannot be sorted due to mismatching types\",\"array.sort.unsupported\":\"{{#label}} cannot be sorted due to unsupported type {#type}\",\"array.sparse\":\"{{#label}} must not be a sparse array item\",\"array.unique\":\"{{#label}} contains a duplicate value\"}}),c.fillMissedErrors=function(e,t,r,s,n,a){const i=[];let o=0;for(const e of r){const t=e._flags.label;t?i.push(t):++o}i.length?o?t.push(e.$_createError(\"array.includesRequiredBoth\",s,{knownMisses:i,unknownMisses:o},n,a)):t.push(e.$_createError(\"array.includesRequiredKnowns\",s,{knownMisses:i},n,a)):t.push(e.$_createError(\"array.includesRequiredUnknowns\",s,{unknownMisses:o},n,a))},c.fillOrderedErrors=function(e,t,r,s,n,a){const i=[];for(const e of r)\"required\"===e._flags.presence&&i.push(e);i.length&&c.fillMissedErrors(e,t,i,s,n,a)},c.fillDefault=function(e,t,r,s){const n=[];let a=!0;for(let i=e.length-1;i>=0;--i){const o=e[i],l=[t,...r.ancestors],c=o.$_validate(void 0,r.localize(r.path,l,o),s).value;if(a){if(void 0===c)continue;a=!1}n.unshift(c)}n.length&&t.push(...n)},c.fastSplice=function(e,t){let r=t;for(;r<e.length;)e[r++]=e[r];--e.length},c.validateSingle=function(e,t){(\"array\"===e.type||e._flags._arrayItems)&&(s(!t._flags.single,\"Cannot specify array item with single rule enabled\"),t.$_setFlag(\"_arrayItems\",!0,{clone:!1}))},c.sort=function(e,t,r,s,n){const a=\"ascending\"===r.order?1:-1,i=-1*a,o=a,l=(l,u)=>{let f=c.compare(l,u,i,o);if(null!==f)return f;if(r.by&&(l=r.by.resolve(l,s,n),u=r.by.resolve(u,s,n)),f=c.compare(l,u,i,o),null!==f)return f;const m=typeof l;if(m!==typeof u)throw e.$_createError(\"array.sort.mismatching\",t,null,s,n);if(\"number\"!==m&&\"string\"!==m)throw e.$_createError(\"array.sort.unsupported\",t,{type:m},s,n);return\"number\"===m?(l-u)*a:l<u?i:o};try{return{value:t.slice().sort(l)}}catch(e){return{errors:e}}},c.compare=function(e,t,r,s){return e===t?0:void 0===e?1:void 0===t?-1:null===e?s:null===t?r:null}},4937:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8068),a=r(8160),i=r(2036),o={isBool:function(e){return\"boolean\"==typeof e}};e.exports=n.extend({type:\"boolean\",flags:{sensitive:{default:!1}},terms:{falsy:{init:null,manifest:\"values\"},truthy:{init:null,manifest:\"values\"}},coerce(e,{schema:t}){if(\"boolean\"!=typeof e){if(\"string\"==typeof e){const r=t._flags.sensitive?e:e.toLowerCase();e=\"true\"===r||\"false\"!==r&&e}return\"boolean\"!=typeof e&&(e=t.$_terms.truthy&&t.$_terms.truthy.has(e,null,null,!t._flags.sensitive)||(!t.$_terms.falsy||!t.$_terms.falsy.has(e,null,null,!t._flags.sensitive))&&e),{value:e}}},validate(e,{error:t}){if(\"boolean\"!=typeof e)return{value:e,errors:t(\"boolean.base\")}},rules:{truthy:{method(...e){a.verifyFlat(e,\"truthy\");const t=this.clone();t.$_terms.truthy=t.$_terms.truthy||new i;for(let r=0;r<e.length;++r){const n=e[r];s(void 0!==n,\"Cannot call truthy with undefined\"),t.$_terms.truthy.add(n)}return t}},falsy:{method(...e){a.verifyFlat(e,\"falsy\");const t=this.clone();t.$_terms.falsy=t.$_terms.falsy||new i;for(let r=0;r<e.length;++r){const n=e[r];s(void 0!==n,\"Cannot call falsy with undefined\"),t.$_terms.falsy.add(n)}return t}},sensitive:{method(e=!0){return this.$_setFlag(\"sensitive\",e)}}},cast:{number:{from:o.isBool,to:(e,t)=>e?1:0},string:{from:o.isBool,to:(e,t)=>e?\"true\":\"false\"}},manifest:{build:(e,t)=>(t.truthy&&(e=e.truthy(...t.truthy)),t.falsy&&(e=e.falsy(...t.falsy)),e)},messages:{\"boolean.base\":\"{{#label}} must be a boolean\"}})},7500:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8068),a=r(8160),i=r(3328),o={isDate:function(e){return e instanceof Date}};e.exports=n.extend({type:\"date\",coerce:{from:[\"number\",\"string\"],method:(e,{schema:t})=>({value:o.parse(e,t._flags.format)||e})},validate(e,{schema:t,error:r,prefs:s}){if(e instanceof Date&&!isNaN(e.getTime()))return;const n=t._flags.format;return s.convert&&n&&\"string\"==typeof e?{value:e,errors:r(\"date.format\",{format:n})}:{value:e,errors:r(\"date.base\")}},rules:{compare:{method:!1,validate(e,t,{date:r},{name:s,operator:n,args:i}){const o=\"now\"===r?Date.now():r.getTime();return a.compare(e.getTime(),o,n)?e:t.error(\"date.\"+s,{limit:i.date,value:e})},args:[{name:\"date\",ref:!0,normalize:e=>\"now\"===e?e:o.parse(e),assert:e=>null!==e,message:\"must have a valid date format\"}]},format:{method(e){return s([\"iso\",\"javascript\",\"unix\"].includes(e),\"Unknown date format\",e),this.$_setFlag(\"format\",e)}},greater:{method(e){return this.$_addRule({name:\"greater\",method:\"compare\",args:{date:e},operator:\">\"})}},iso:{method(){return this.format(\"iso\")}},less:{method(e){return this.$_addRule({name:\"less\",method:\"compare\",args:{date:e},operator:\"<\"})}},max:{method(e){return this.$_addRule({name:\"max\",method:\"compare\",args:{date:e},operator:\"<=\"})}},min:{method(e){return this.$_addRule({name:\"min\",method:\"compare\",args:{date:e},operator:\">=\"})}},timestamp:{method(e=\"javascript\"){return s([\"javascript\",\"unix\"].includes(e),'\"type\" must be one of \"javascript, unix\"'),this.format(e)}}},cast:{number:{from:o.isDate,to:(e,t)=>e.getTime()},string:{from:o.isDate,to:(e,{prefs:t})=>i.date(e,t)}},messages:{\"date.base\":\"{{#label}} must be a valid date\",\"date.format\":'{{#label}} must be in {msg(\"date.format.\" + #format) || #format} format',\"date.greater\":\"{{#label}} must be greater than {{:#limit}}\",\"date.less\":\"{{#label}} must be less than {{:#limit}}\",\"date.max\":\"{{#label}} must be less than or equal to {{:#limit}}\",\"date.min\":\"{{#label}} must be greater than or equal to {{:#limit}}\",\"date.format.iso\":\"ISO 8601 date\",\"date.format.javascript\":\"timestamp or number of milliseconds\",\"date.format.unix\":\"timestamp or number of seconds\"}}),o.parse=function(e,t){if(e instanceof Date)return e;if(\"string\"!=typeof e&&(isNaN(e)||!isFinite(e)))return null;if(/^\\s*$/.test(e))return null;if(\"iso\"===t)return a.isIsoDate(e)?o.date(e.toString()):null;const r=e;if(\"string\"==typeof e&&/^[+-]?\\d+(\\.\\d+)?$/.test(e)&&(e=parseFloat(e)),t){if(\"javascript\"===t)return o.date(1*e);if(\"unix\"===t)return o.date(1e3*e);if(\"string\"==typeof r)return null}return o.date(e)},o.date=function(e){const t=new Date(e);return isNaN(t.getTime())?null:t}},390:(e,t,r)=>{\"use strict\";const s=r(375),n=r(7824);e.exports=n.extend({type:\"function\",properties:{typeof:\"function\"},rules:{arity:{method(e){return s(Number.isSafeInteger(e)&&e>=0,\"n must be a positive integer\"),this.$_addRule({name:\"arity\",args:{n:e}})},validate:(e,t,{n:r})=>e.length===r?e:t.error(\"function.arity\",{n:r})},class:{method(){return this.$_addRule(\"class\")},validate:(e,t)=>/^\\s*class\\s/.test(e.toString())?e:t.error(\"function.class\",{value:e})},minArity:{method(e){return s(Number.isSafeInteger(e)&&e>0,\"n must be a strict positive integer\"),this.$_addRule({name:\"minArity\",args:{n:e}})},validate:(e,t,{n:r})=>e.length>=r?e:t.error(\"function.minArity\",{n:r})},maxArity:{method(e){return s(Number.isSafeInteger(e)&&e>=0,\"n must be a positive integer\"),this.$_addRule({name:\"maxArity\",args:{n:e}})},validate:(e,t,{n:r})=>e.length<=r?e:t.error(\"function.maxArity\",{n:r})}},messages:{\"function.arity\":\"{{#label}} must have an arity of {{#n}}\",\"function.class\":\"{{#label}} must be a class\",\"function.maxArity\":\"{{#label}} must have an arity lesser or equal to {{#n}}\",\"function.minArity\":\"{{#label}} must have an arity greater or equal to {{#n}}\"}})},7824:(e,t,r)=>{\"use strict\";const s=r(978),n=r(375),a=r(8571),i=r(3652),o=r(8068),l=r(8160),c=r(3292),u=r(6354),f=r(6133),m=r(3328),h={renameDefaults:{alias:!1,multiple:!1,override:!1}};e.exports=o.extend({type:\"_keys\",properties:{typeof:\"object\"},flags:{unknown:{default:!1}},terms:{dependencies:{init:null},keys:{init:null,manifest:{mapped:{from:\"schema\",to:\"key\"}}},patterns:{init:null},renames:{init:null}},args:(e,t)=>e.keys(t),validate(e,{schema:t,error:r,state:s,prefs:n}){if(!e||typeof e!==t.$_property(\"typeof\")||Array.isArray(e))return{value:e,errors:r(\"object.base\",{type:t.$_property(\"typeof\")})};if(!(t.$_terms.renames||t.$_terms.dependencies||t.$_terms.keys||t.$_terms.patterns||t.$_terms.externals))return;e=h.clone(e,n);const a=[];if(t.$_terms.renames&&!h.rename(t,e,s,n,a))return{value:e,errors:a};if(!t.$_terms.keys&&!t.$_terms.patterns&&!t.$_terms.dependencies)return{value:e,errors:a};const i=new Set(Object.keys(e));if(t.$_terms.keys){const r=[e,...s.ancestors];for(const o of t.$_terms.keys){const t=o.key,l=e[t];i.delete(t);const c=s.localize([...s.path,t],r,o),u=o.schema.$_validate(l,c,n);if(u.errors){if(n.abortEarly)return{value:e,errors:u.errors};void 0!==u.value&&(e[t]=u.value),a.push(...u.errors)}else\"strip\"===o.schema._flags.result||void 0===u.value&&void 0!==l?delete e[t]:void 0!==u.value&&(e[t]=u.value)}}if(i.size||t._flags._hasPatternMatch){const r=h.unknown(t,e,i,a,s,n);if(r)return r}if(t.$_terms.dependencies)for(const r of t.$_terms.dependencies){if(null!==r.key&&!1===h.isPresent(r.options)(r.key.resolve(e,s,n,null,{shadow:!1})))continue;const i=h.dependencies[r.rel](t,r,e,s,n);if(i){const r=t.$_createError(i.code,e,i.context,s,n);if(n.abortEarly)return{value:e,errors:r};a.push(r)}}return{value:e,errors:a}},rules:{and:{method(...e){return l.verifyFlat(e,\"and\"),h.dependency(this,\"and\",null,e)}},append:{method(e){return null==e||0===Object.keys(e).length?this:this.keys(e)}},assert:{method(e,t,r){m.isTemplate(e)||(e=c.ref(e)),n(void 0===r||\"string\"==typeof r,\"Message must be a string\"),t=this.$_compile(t,{appendPath:!0});const s=this.$_addRule({name:\"assert\",args:{subject:e,schema:t,message:r}});return s.$_mutateRegister(e),s.$_mutateRegister(t),s},validate(e,{error:t,prefs:r,state:s},{subject:n,schema:a,message:i}){const o=n.resolve(e,s,r),l=f.isRef(n)?n.absolute(s):[];return a.$_match(o,s.localize(l,[e,...s.ancestors],a),r)?e:t(\"object.assert\",{subject:n,message:i})},args:[\"subject\",\"schema\",\"message\"],multi:!0},instance:{method(e,t){return n(\"function\"==typeof e,\"constructor must be a function\"),t=t||e.name,this.$_addRule({name:\"instance\",args:{constructor:e,name:t}})},validate:(e,t,{constructor:r,name:s})=>e instanceof r?e:t.error(\"object.instance\",{type:s,value:e}),args:[\"constructor\",\"name\"]},keys:{method(e){n(void 0===e||\"object\"==typeof e,\"Object schema must be a valid object\"),n(!l.isSchema(e),\"Object schema cannot be a joi schema\");const t=this.clone();if(e)if(Object.keys(e).length){t.$_terms.keys=t.$_terms.keys?t.$_terms.keys.filter((t=>!e.hasOwnProperty(t.key))):new h.Keys;for(const r in e)l.tryWithPath((()=>t.$_terms.keys.push({key:r,schema:this.$_compile(e[r])})),r)}else t.$_terms.keys=new h.Keys;else t.$_terms.keys=null;return t.$_mutateRebuild()}},length:{method(e){return this.$_addRule({name:\"length\",args:{limit:e},operator:\"=\"})},validate:(e,t,{limit:r},{name:s,operator:n,args:a})=>l.compare(Object.keys(e).length,r,n)?e:t.error(\"object.\"+s,{limit:a.limit,value:e}),args:[{name:\"limit\",ref:!0,assert:l.limit,message:\"must be a positive integer\"}]},max:{method(e){return this.$_addRule({name:\"max\",method:\"length\",args:{limit:e},operator:\"<=\"})}},min:{method(e){return this.$_addRule({name:\"min\",method:\"length\",args:{limit:e},operator:\">=\"})}},nand:{method(...e){return l.verifyFlat(e,\"nand\"),h.dependency(this,\"nand\",null,e)}},or:{method(...e){return l.verifyFlat(e,\"or\"),h.dependency(this,\"or\",null,e)}},oxor:{method(...e){return h.dependency(this,\"oxor\",null,e)}},pattern:{method(e,t,r={}){const s=e instanceof RegExp;s||(e=this.$_compile(e,{appendPath:!0})),n(void 0!==t,\"Invalid rule\"),l.assertOptions(r,[\"fallthrough\",\"matches\"]),s&&n(!e.flags.includes(\"g\")&&!e.flags.includes(\"y\"),\"pattern should not use global or sticky mode\"),t=this.$_compile(t,{appendPath:!0});const a=this.clone();a.$_terms.patterns=a.$_terms.patterns||[];const i={[s?\"regex\":\"schema\"]:e,rule:t};return r.matches&&(i.matches=this.$_compile(r.matches),\"array\"!==i.matches.type&&(i.matches=i.matches.$_root.array().items(i.matches)),a.$_mutateRegister(i.matches),a.$_setFlag(\"_hasPatternMatch\",!0,{clone:!1})),r.fallthrough&&(i.fallthrough=!0),a.$_terms.patterns.push(i),a.$_mutateRegister(t),a}},ref:{method(){return this.$_addRule(\"ref\")},validate:(e,t)=>f.isRef(e)?e:t.error(\"object.refType\",{value:e})},regex:{method(){return this.$_addRule(\"regex\")},validate:(e,t)=>e instanceof RegExp?e:t.error(\"object.regex\",{value:e})},rename:{method(e,t,r={}){n(\"string\"==typeof e||e instanceof RegExp,\"Rename missing the from argument\"),n(\"string\"==typeof t||t instanceof m,\"Invalid rename to argument\"),n(t!==e,\"Cannot rename key to same name:\",e),l.assertOptions(r,[\"alias\",\"ignoreUndefined\",\"override\",\"multiple\"]);const a=this.clone();a.$_terms.renames=a.$_terms.renames||[];for(const t of a.$_terms.renames)n(t.from!==e,\"Cannot rename the same key multiple times\");return t instanceof m&&a.$_mutateRegister(t),a.$_terms.renames.push({from:e,to:t,options:s(h.renameDefaults,r)}),a}},schema:{method(e=\"any\"){return this.$_addRule({name:\"schema\",args:{type:e}})},validate:(e,t,{type:r})=>!l.isSchema(e)||\"any\"!==r&&e.type!==r?t.error(\"object.schema\",{type:r}):e},unknown:{method(e){return this.$_setFlag(\"unknown\",!1!==e)}},with:{method(e,t,r={}){return h.dependency(this,\"with\",e,t,r)}},without:{method(e,t,r={}){return h.dependency(this,\"without\",e,t,r)}},xor:{method(...e){return l.verifyFlat(e,\"xor\"),h.dependency(this,\"xor\",null,e)}}},overrides:{default(e,t){return void 0===e&&(e=l.symbols.deepDefault),this.$_parent(\"default\",e,t)}},rebuild(e){if(e.$_terms.keys){const t=new i.Sorter;for(const r of e.$_terms.keys)l.tryWithPath((()=>t.add(r,{after:r.schema.$_rootReferences(),group:r.key})),r.key);e.$_terms.keys=new h.Keys(...t.nodes)}},manifest:{build(e,t){if(t.keys&&(e=e.keys(t.keys)),t.dependencies)for(const{rel:r,key:s=null,peers:n,options:a}of t.dependencies)e=h.dependency(e,r,s,n,a);if(t.patterns)for(const{regex:r,schema:s,rule:n,fallthrough:a,matches:i}of t.patterns)e=e.pattern(r||s,n,{fallthrough:a,matches:i});if(t.renames)for(const{from:r,to:s,options:n}of t.renames)e=e.rename(r,s,n);return e}},messages:{\"object.and\":\"{{#label}} contains {{#presentWithLabels}} without its required peers {{#missingWithLabels}}\",\"object.assert\":'{{#label}} is invalid because {if(#subject.key, `\"` + #subject.key + `\" failed to ` + (#message || \"pass the assertion test\"), #message || \"the assertion failed\")}',\"object.base\":\"{{#label}} must be of type {{#type}}\",\"object.instance\":\"{{#label}} must be an instance of {{:#type}}\",\"object.length\":'{{#label}} must have {{#limit}} key{if(#limit == 1, \"\", \"s\")}',\"object.max\":'{{#label}} must have less than or equal to {{#limit}} key{if(#limit == 1, \"\", \"s\")}',\"object.min\":'{{#label}} must have at least {{#limit}} key{if(#limit == 1, \"\", \"s\")}',\"object.missing\":\"{{#label}} must contain at least one of {{#peersWithLabels}}\",\"object.nand\":\"{{:#mainWithLabel}} must not exist simultaneously with {{#peersWithLabels}}\",\"object.oxor\":\"{{#label}} contains a conflict between optional exclusive peers {{#peersWithLabels}}\",\"object.pattern.match\":\"{{#label}} keys failed to match pattern requirements\",\"object.refType\":\"{{#label}} must be a Joi reference\",\"object.regex\":\"{{#label}} must be a RegExp object\",\"object.rename.multiple\":\"{{#label}} cannot rename {{:#from}} because multiple renames are disabled and another key was already renamed to {{:#to}}\",\"object.rename.override\":\"{{#label}} cannot rename {{:#from}} because override is disabled and target {{:#to}} exists\",\"object.schema\":\"{{#label}} must be a Joi schema of {{#type}} type\",\"object.unknown\":\"{{#label}} is not allowed\",\"object.with\":\"{{:#mainWithLabel}} missing required peer {{:#peerWithLabel}}\",\"object.without\":\"{{:#mainWithLabel}} conflict with forbidden peer {{:#peerWithLabel}}\",\"object.xor\":\"{{#label}} contains a conflict between exclusive peers {{#peersWithLabels}}\"}}),h.clone=function(e,t){if(\"object\"==typeof e){if(t.nonEnumerables)return a(e,{shallow:!0});const r=Object.create(Object.getPrototypeOf(e));return Object.assign(r,e),r}const r=function(...t){return e.apply(this,t)};return r.prototype=a(e.prototype),Object.defineProperty(r,\"name\",{value:e.name,writable:!1}),Object.defineProperty(r,\"length\",{value:e.length,writable:!1}),Object.assign(r,e),r},h.dependency=function(e,t,r,s,a){n(null===r||\"string\"==typeof r,t,\"key must be a strings\"),a||(a=s.length>1&&\"object\"==typeof s[s.length-1]?s.pop():{}),l.assertOptions(a,[\"separator\",\"isPresent\"]),s=[].concat(s);const i=l.default(a.separator,\".\"),o=[];for(const e of s)n(\"string\"==typeof e,t,\"peers must be strings\"),o.push(c.ref(e,{separator:i,ancestor:0,prefix:!1}));null!==r&&(r=c.ref(r,{separator:i,ancestor:0,prefix:!1}));const u=e.clone();return u.$_terms.dependencies=u.$_terms.dependencies||[],u.$_terms.dependencies.push(new h.Dependency(t,r,o,s,a)),u},h.dependencies={and(e,t,r,s,n){const a=[],i=[],o=t.peers.length,l=h.isPresent(t.options);for(const e of t.peers)!1===l(e.resolve(r,s,n,null,{shadow:!1}))?a.push(e.key):i.push(e.key);if(a.length!==o&&i.length!==o)return{code:\"object.and\",context:{present:i,presentWithLabels:h.keysToLabels(e,i),missing:a,missingWithLabels:h.keysToLabels(e,a)}}},nand(e,t,r,s,n){const a=[],i=h.isPresent(t.options);for(const e of t.peers)i(e.resolve(r,s,n,null,{shadow:!1}))&&a.push(e.key);if(a.length!==t.peers.length)return;const o=t.paths[0],l=t.paths.slice(1);return{code:\"object.nand\",context:{main:o,mainWithLabel:h.keysToLabels(e,o),peers:l,peersWithLabels:h.keysToLabels(e,l)}}},or(e,t,r,s,n){const a=h.isPresent(t.options);for(const e of t.peers)if(a(e.resolve(r,s,n,null,{shadow:!1})))return;return{code:\"object.missing\",context:{peers:t.paths,peersWithLabels:h.keysToLabels(e,t.paths)}}},oxor(e,t,r,s,n){const a=[],i=h.isPresent(t.options);for(const e of t.peers)i(e.resolve(r,s,n,null,{shadow:!1}))&&a.push(e.key);if(!a.length||1===a.length)return;const o={peers:t.paths,peersWithLabels:h.keysToLabels(e,t.paths)};return o.present=a,o.presentWithLabels=h.keysToLabels(e,a),{code:\"object.oxor\",context:o}},with(e,t,r,s,n){const a=h.isPresent(t.options);for(const i of t.peers)if(!1===a(i.resolve(r,s,n,null,{shadow:!1})))return{code:\"object.with\",context:{main:t.key.key,mainWithLabel:h.keysToLabels(e,t.key.key),peer:i.key,peerWithLabel:h.keysToLabels(e,i.key)}}},without(e,t,r,s,n){const a=h.isPresent(t.options);for(const i of t.peers)if(a(i.resolve(r,s,n,null,{shadow:!1})))return{code:\"object.without\",context:{main:t.key.key,mainWithLabel:h.keysToLabels(e,t.key.key),peer:i.key,peerWithLabel:h.keysToLabels(e,i.key)}}},xor(e,t,r,s,n){const a=[],i=h.isPresent(t.options);for(const e of t.peers)i(e.resolve(r,s,n,null,{shadow:!1}))&&a.push(e.key);if(1===a.length)return;const o={peers:t.paths,peersWithLabels:h.keysToLabels(e,t.paths)};return 0===a.length?{code:\"object.missing\",context:o}:(o.present=a,o.presentWithLabels=h.keysToLabels(e,a),{code:\"object.xor\",context:o})}},h.keysToLabels=function(e,t){return Array.isArray(t)?t.map((t=>e.$_mapLabels(t))):e.$_mapLabels(t)},h.isPresent=function(e){return\"function\"==typeof e.isPresent?e.isPresent:e=>void 0!==e},h.rename=function(e,t,r,s,n){const a={};for(const i of e.$_terms.renames){const o=[],l=\"string\"!=typeof i.from;if(l)for(const e in t){if(void 0===t[e]&&i.options.ignoreUndefined)continue;if(e===i.to)continue;const r=i.from.exec(e);r&&o.push({from:e,to:i.to,match:r})}else!Object.prototype.hasOwnProperty.call(t,i.from)||void 0===t[i.from]&&i.options.ignoreUndefined||o.push(i);for(const c of o){const o=c.from;let u=c.to;if(u instanceof m&&(u=u.render(t,r,s,c.match)),o!==u){if(!i.options.multiple&&a[u]&&(n.push(e.$_createError(\"object.rename.multiple\",t,{from:o,to:u,pattern:l},r,s)),s.abortEarly))return!1;if(Object.prototype.hasOwnProperty.call(t,u)&&!i.options.override&&!a[u]&&(n.push(e.$_createError(\"object.rename.override\",t,{from:o,to:u,pattern:l},r,s)),s.abortEarly))return!1;void 0===t[o]?delete t[u]:t[u]=t[o],a[u]=!0,i.options.alias||delete t[o]}}}return!0},h.unknown=function(e,t,r,s,n,a){if(e.$_terms.patterns){let i=!1;const o=e.$_terms.patterns.map((e=>{if(e.matches)return i=!0,[]})),l=[t,...n.ancestors];for(const i of r){const c=t[i],u=[...n.path,i];for(let f=0;f<e.$_terms.patterns.length;++f){const m=e.$_terms.patterns[f];if(m.regex){const e=m.regex.test(i);if(n.mainstay.tracer.debug(n,\"rule\",`pattern.${f}`,e?\"pass\":\"error\"),!e)continue}else if(!m.schema.$_match(i,n.nest(m.schema,`pattern.${f}`),a))continue;r.delete(i);const h=n.localize(u,l,{schema:m.rule,key:i}),d=m.rule.$_validate(c,h,a);if(d.errors){if(a.abortEarly)return{value:t,errors:d.errors};s.push(...d.errors)}if(m.matches&&o[f].push(i),t[i]=d.value,!m.fallthrough)break}}if(i)for(let r=0;r<o.length;++r){const i=o[r];if(!i)continue;const c=e.$_terms.patterns[r].matches,f=n.localize(n.path,l,c),m=c.$_validate(i,f,a);if(m.errors){const r=u.details(m.errors,{override:!1});r.matches=i;const o=e.$_createError(\"object.pattern.match\",t,r,n,a);if(a.abortEarly)return{value:t,errors:o};s.push(o)}}}if(r.size&&(e.$_terms.keys||e.$_terms.patterns)){if(a.stripUnknown&&!e._flags.unknown||a.skipFunctions){const e=!(!a.stripUnknown||!0!==a.stripUnknown&&!a.stripUnknown.objects);for(const s of r)e?(delete t[s],r.delete(s)):\"function\"==typeof t[s]&&r.delete(s)}if(!l.default(e._flags.unknown,a.allowUnknown))for(const i of r){const r=n.localize([...n.path,i],[]),o=e.$_createError(\"object.unknown\",t[i],{child:i},r,a,{flags:!1});if(a.abortEarly)return{value:t,errors:o};s.push(o)}}},h.Dependency=class{constructor(e,t,r,s,n){this.rel=e,this.key=t,this.peers=r,this.paths=s,this.options=n}describe(){const e={rel:this.rel,peers:this.paths};return null!==this.key&&(e.key=this.key.key),\".\"!==this.peers[0].separator&&(e.options={...e.options,separator:this.peers[0].separator}),this.options.isPresent&&(e.options={...e.options,isPresent:this.options.isPresent}),e}},h.Keys=class extends Array{concat(e){const t=this.slice(),r=new Map;for(let e=0;e<t.length;++e)r.set(t[e].key,e);for(const s of e){const e=s.key,n=r.get(e);void 0!==n?t[n]={key:e,schema:t[n].schema.concat(s.schema)}:t.push(s)}return t}}},8785:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8068),a=r(8160),i=r(3292),o=r(6354),l={};e.exports=n.extend({type:\"link\",properties:{schemaChain:!0},terms:{link:{init:null,manifest:\"single\",register:!1}},args:(e,t)=>e.ref(t),validate(e,{schema:t,state:r,prefs:n}){s(t.$_terms.link,\"Uninitialized link schema\");const a=l.generate(t,e,r,n),i=t.$_terms.link[0].ref;return a.$_validate(e,r.nest(a,`link:${i.display}:${a.type}`),n)},generate:(e,t,r,s)=>l.generate(e,t,r,s),rules:{ref:{method(e){s(!this.$_terms.link,\"Cannot reinitialize schema\"),e=i.ref(e),s(\"value\"===e.type||\"local\"===e.type,\"Invalid reference type:\",e.type),s(\"local\"===e.type||\"root\"===e.ancestor||e.ancestor>0,\"Link cannot reference itself\");const t=this.clone();return t.$_terms.link=[{ref:e}],t}},relative:{method(e=!0){return this.$_setFlag(\"relative\",e)}}},overrides:{concat(e){s(this.$_terms.link,\"Uninitialized link schema\"),s(a.isSchema(e),\"Invalid schema object\"),s(\"link\"!==e.type,\"Cannot merge type link with another link\");const t=this.clone();return t.$_terms.whens||(t.$_terms.whens=[]),t.$_terms.whens.push({concat:e}),t.$_mutateRebuild()}},manifest:{build:(e,t)=>(s(t.link,\"Invalid link description missing link\"),e.ref(t.link))}}),l.generate=function(e,t,r,s){let n=r.mainstay.links.get(e);if(n)return n._generate(t,r,s).schema;const a=e.$_terms.link[0].ref,{perspective:i,path:o}=l.perspective(a,r);l.assert(i,\"which is outside of schema boundaries\",a,e,r,s);try{n=o.length?i.$_reach(o):i}catch(t){l.assert(!1,\"to non-existing schema\",a,e,r,s)}return l.assert(\"link\"!==n.type,\"which is another link\",a,e,r,s),e._flags.relative||r.mainstay.links.set(e,n),n._generate(t,r,s).schema},l.perspective=function(e,t){if(\"local\"===e.type){for(const{schema:r,key:s}of t.schemas){if((r._flags.id||s)===e.path[0])return{perspective:r,path:e.path.slice(1)};if(r.$_terms.shared)for(const t of r.$_terms.shared)if(t._flags.id===e.path[0])return{perspective:t,path:e.path.slice(1)}}return{perspective:null,path:null}}return\"root\"===e.ancestor?{perspective:t.schemas[t.schemas.length-1].schema,path:e.path}:{perspective:t.schemas[e.ancestor]&&t.schemas[e.ancestor].schema,path:e.path}},l.assert=function(e,t,r,n,a,i){e||s(!1,`\"${o.label(n._flags,a,i)}\" contains link reference \"${r.display}\" ${t}`)}},3832:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8068),a=r(8160),i={numberRx:/^\\s*[+-]?(?:(?:\\d+(?:\\.\\d*)?)|(?:\\.\\d+))(?:e([+-]?\\d+))?\\s*$/i,precisionRx:/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/,exponentialPartRegex:/[eE][+-]?\\d+$/,leadingSignAndZerosRegex:/^[+-]?(0*)?/,dotRegex:/\\./,trailingZerosRegex:/0+$/,decimalPlaces(e){const t=e.toString(),r=t.indexOf(\".\"),s=t.indexOf(\"e\");return(r<0?0:(s<0?t.length:s)-r-1)+(s<0?0:Math.max(0,-parseInt(t.slice(s+1))))}};e.exports=n.extend({type:\"number\",flags:{unsafe:{default:!1}},coerce:{from:\"string\",method(e,{schema:t,error:r}){if(!e.match(i.numberRx))return;e=e.trim();const s={value:parseFloat(e)};if(0===s.value&&(s.value=0),!t._flags.unsafe)if(e.match(/e/i)){if(i.extractSignificantDigits(e)!==i.extractSignificantDigits(String(s.value)))return s.errors=r(\"number.unsafe\"),s}else{const t=s.value.toString();if(t.match(/e/i))return s;if(t!==i.normalizeDecimal(e))return s.errors=r(\"number.unsafe\"),s}return s}},validate(e,{schema:t,error:r,prefs:s}){if(e===1/0||e===-1/0)return{value:e,errors:r(\"number.infinity\")};if(!a.isNumber(e))return{value:e,errors:r(\"number.base\")};const n={value:e};if(s.convert){const e=t.$_getRule(\"precision\");if(e){const t=Math.pow(10,e.args.limit);n.value=Math.round(n.value*t)/t}}return 0===n.value&&(n.value=0),!t._flags.unsafe&&(e>Number.MAX_SAFE_INTEGER||e<Number.MIN_SAFE_INTEGER)&&(n.errors=r(\"number.unsafe\")),n},rules:{compare:{method:!1,validate:(e,t,{limit:r},{name:s,operator:n,args:i})=>a.compare(e,r,n)?e:t.error(\"number.\"+s,{limit:i.limit,value:e}),args:[{name:\"limit\",ref:!0,assert:a.isNumber,message:\"must be a number\"}]},greater:{method(e){return this.$_addRule({name:\"greater\",method:\"compare\",args:{limit:e},operator:\">\"})}},integer:{method(){return this.$_addRule(\"integer\")},validate:(e,t)=>Math.trunc(e)-e==0?e:t.error(\"number.integer\")},less:{method(e){return this.$_addRule({name:\"less\",method:\"compare\",args:{limit:e},operator:\"<\"})}},max:{method(e){return this.$_addRule({name:\"max\",method:\"compare\",args:{limit:e},operator:\"<=\"})}},min:{method(e){return this.$_addRule({name:\"min\",method:\"compare\",args:{limit:e},operator:\">=\"})}},multiple:{method(e){const t=\"number\"==typeof e?i.decimalPlaces(e):null,r=Math.pow(10,t);return this.$_addRule({name:\"multiple\",args:{base:e,baseDecimalPlace:t,pfactor:r}})},validate:(e,t,{base:r,baseDecimalPlace:s,pfactor:n},a)=>i.decimalPlaces(e)>s?t.error(\"number.multiple\",{multiple:a.args.base,value:e}):Math.round(n*e)%Math.round(n*r)==0?e:t.error(\"number.multiple\",{multiple:a.args.base,value:e}),args:[{name:\"base\",ref:!0,assert:e=>\"number\"==typeof e&&isFinite(e)&&e>0,message:\"must be a positive number\"},\"baseDecimalPlace\",\"pfactor\"],multi:!0},negative:{method(){return this.sign(\"negative\")}},port:{method(){return this.$_addRule(\"port\")},validate:(e,t)=>Number.isSafeInteger(e)&&e>=0&&e<=65535?e:t.error(\"number.port\")},positive:{method(){return this.sign(\"positive\")}},precision:{method(e){return s(Number.isSafeInteger(e),\"limit must be an integer\"),this.$_addRule({name:\"precision\",args:{limit:e}})},validate(e,t,{limit:r}){const s=e.toString().match(i.precisionRx);return Math.max((s[1]?s[1].length:0)-(s[2]?parseInt(s[2],10):0),0)<=r?e:t.error(\"number.precision\",{limit:r,value:e})},convert:!0},sign:{method(e){return s([\"negative\",\"positive\"].includes(e),\"Invalid sign\",e),this.$_addRule({name:\"sign\",args:{sign:e}})},validate:(e,t,{sign:r})=>\"negative\"===r&&e<0||\"positive\"===r&&e>0?e:t.error(`number.${r}`)},unsafe:{method(e=!0){return s(\"boolean\"==typeof e,\"enabled must be a boolean\"),this.$_setFlag(\"unsafe\",e)}}},cast:{string:{from:e=>\"number\"==typeof e,to:(e,t)=>e.toString()}},messages:{\"number.base\":\"{{#label}} must be a number\",\"number.greater\":\"{{#label}} must be greater than {{#limit}}\",\"number.infinity\":\"{{#label}} cannot be infinity\",\"number.integer\":\"{{#label}} must be an integer\",\"number.less\":\"{{#label}} must be less than {{#limit}}\",\"number.max\":\"{{#label}} must be less than or equal to {{#limit}}\",\"number.min\":\"{{#label}} must be greater than or equal to {{#limit}}\",\"number.multiple\":\"{{#label}} must be a multiple of {{#multiple}}\",\"number.negative\":\"{{#label}} must be a negative number\",\"number.port\":\"{{#label}} must be a valid port\",\"number.positive\":\"{{#label}} must be a positive number\",\"number.precision\":\"{{#label}} must have no more than {{#limit}} decimal places\",\"number.unsafe\":\"{{#label}} must be a safe number\"}}),i.extractSignificantDigits=function(e){return e.replace(i.exponentialPartRegex,\"\").replace(i.dotRegex,\"\").replace(i.trailingZerosRegex,\"\").replace(i.leadingSignAndZerosRegex,\"\")},i.normalizeDecimal=function(e){return(e=e.replace(/^\\+/,\"\").replace(/\\.0*$/,\"\").replace(/^(-?)\\.([^\\.]*)$/,\"$10.$2\").replace(/^(-?)0+([0-9])/,\"$1$2\")).includes(\".\")&&e.endsWith(\"0\")&&(e=e.replace(/0+$/,\"\")),\"-0\"===e?\"0\":e}},8966:(e,t,r)=>{\"use strict\";const s=r(7824);e.exports=s.extend({type:\"object\",cast:{map:{from:e=>e&&\"object\"==typeof e,to:(e,t)=>new Map(Object.entries(e))}}})},7417:(e,t,r)=>{\"use strict\";const s=r(375),n=r(5380),a=r(1745),i=r(9959),o=r(6064),l=r(9926),c=r(5752),u=r(8068),f=r(8160),m={tlds:l instanceof Set&&{tlds:{allow:l,deny:null}},base64Regex:{true:{true:/^(?:[\\w\\-]{2}[\\w\\-]{2})*(?:[\\w\\-]{2}==|[\\w\\-]{3}=)?$/,false:/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/},false:{true:/^(?:[\\w\\-]{2}[\\w\\-]{2})*(?:[\\w\\-]{2}(==)?|[\\w\\-]{3}=?)?$/,false:/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}(==)?|[A-Za-z0-9+\\/]{3}=?)?$/}},dataUriRegex:/^data:[\\w+.-]+\\/[\\w+.-]+;((charset=[\\w-]+|base64),)?(.*)$/,hexRegex:{withPrefix:/^0x[0-9a-f]+$/i,withOptionalPrefix:/^(?:0x)?[0-9a-f]+$/i,withoutPrefix:/^[0-9a-f]+$/i},ipRegex:i.regex({cidr:\"forbidden\"}).regex,isoDurationRegex:/^P(?!$)(\\d+Y)?(\\d+M)?(\\d+W)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+S)?)?$/,guidBrackets:{\"{\":\"}\",\"[\":\"]\",\"(\":\")\",\"\":\"\"},guidVersions:{uuidv1:\"1\",uuidv2:\"2\",uuidv3:\"3\",uuidv4:\"4\",uuidv5:\"5\",uuidv6:\"6\",uuidv7:\"7\",uuidv8:\"8\"},guidSeparators:new Set([void 0,!0,!1,\"-\",\":\"]),normalizationForms:[\"NFC\",\"NFD\",\"NFKC\",\"NFKD\"]};e.exports=u.extend({type:\"string\",flags:{insensitive:{default:!1},truncate:{default:!1}},terms:{replacements:{init:null}},coerce:{from:\"string\",method(e,{schema:t,state:r,prefs:s}){const n=t.$_getRule(\"normalize\");n&&(e=e.normalize(n.args.form));const a=t.$_getRule(\"case\");a&&(e=\"upper\"===a.args.direction?e.toLocaleUpperCase():e.toLocaleLowerCase());const i=t.$_getRule(\"trim\");if(i&&i.args.enabled&&(e=e.trim()),t.$_terms.replacements)for(const r of t.$_terms.replacements)e=e.replace(r.pattern,r.replacement);const o=t.$_getRule(\"hex\");if(o&&o.args.options.byteAligned&&e.length%2!=0&&(e=`0${e}`),t.$_getRule(\"isoDate\")){const t=m.isoDate(e);t&&(e=t)}if(t._flags.truncate){const n=t.$_getRule(\"max\");if(n){let a=n.args.limit;if(f.isResolvable(a)&&(a=a.resolve(e,r,s),!f.limit(a)))return{value:e,errors:t.$_createError(\"any.ref\",a,{ref:n.args.limit,arg:\"limit\",reason:\"must be a positive integer\"},r,s)};e=e.slice(0,a)}}return{value:e}}},validate(e,{schema:t,error:r}){if(\"string\"!=typeof e)return{value:e,errors:r(\"string.base\")};if(\"\"===e){const s=t.$_getRule(\"min\");if(s&&0===s.args.limit)return;return{value:e,errors:r(\"string.empty\")}}},rules:{alphanum:{method(){return this.$_addRule(\"alphanum\")},validate:(e,t)=>/^[a-zA-Z0-9]+$/.test(e)?e:t.error(\"string.alphanum\")},base64:{method(e={}){return f.assertOptions(e,[\"paddingRequired\",\"urlSafe\"]),e={urlSafe:!1,paddingRequired:!0,...e},s(\"boolean\"==typeof e.paddingRequired,\"paddingRequired must be boolean\"),s(\"boolean\"==typeof e.urlSafe,\"urlSafe must be boolean\"),this.$_addRule({name:\"base64\",args:{options:e}})},validate:(e,t,{options:r})=>m.base64Regex[r.paddingRequired][r.urlSafe].test(e)?e:t.error(\"string.base64\")},case:{method(e){return s([\"lower\",\"upper\"].includes(e),\"Invalid case:\",e),this.$_addRule({name:\"case\",args:{direction:e}})},validate:(e,t,{direction:r})=>\"lower\"===r&&e===e.toLocaleLowerCase()||\"upper\"===r&&e===e.toLocaleUpperCase()?e:t.error(`string.${r}case`),convert:!0},creditCard:{method(){return this.$_addRule(\"creditCard\")},validate(e,t){let r=e.length,s=0,n=1;for(;r--;){const t=e.charAt(r)*n;s+=t-9*(t>9),n^=3}return s>0&&s%10==0?e:t.error(\"string.creditCard\")}},dataUri:{method(e={}){return f.assertOptions(e,[\"paddingRequired\"]),e={paddingRequired:!0,...e},s(\"boolean\"==typeof e.paddingRequired,\"paddingRequired must be boolean\"),this.$_addRule({name:\"dataUri\",args:{options:e}})},validate(e,t,{options:r}){const s=e.match(m.dataUriRegex);if(s){if(!s[2])return e;if(\"base64\"!==s[2])return e;if(m.base64Regex[r.paddingRequired].false.test(s[3]))return e}return t.error(\"string.dataUri\")}},domain:{method(e){e&&f.assertOptions(e,[\"allowFullyQualified\",\"allowUnicode\",\"maxDomainSegments\",\"minDomainSegments\",\"tlds\"]);const t=m.addressOptions(e);return this.$_addRule({name:\"domain\",args:{options:e},address:t})},validate:(e,t,r,{address:s})=>n.isValid(e,s)?e:t.error(\"string.domain\")},email:{method(e={}){f.assertOptions(e,[\"allowFullyQualified\",\"allowUnicode\",\"ignoreLength\",\"maxDomainSegments\",\"minDomainSegments\",\"multiple\",\"separator\",\"tlds\"]),s(void 0===e.multiple||\"boolean\"==typeof e.multiple,\"multiple option must be an boolean\");const t=m.addressOptions(e),r=new RegExp(`\\\\s*[${e.separator?o(e.separator):\",\"}]\\\\s*`);return this.$_addRule({name:\"email\",args:{options:e},regex:r,address:t})},validate(e,t,{options:r},{regex:s,address:n}){const i=r.multiple?e.split(s):[e],o=[];for(const e of i)a.isValid(e,n)||o.push(e);return o.length?t.error(\"string.email\",{value:e,invalids:o}):e}},guid:{alias:\"uuid\",method(e={}){f.assertOptions(e,[\"version\",\"separator\"]);let t=\"\";if(e.version){const r=[].concat(e.version);s(r.length>=1,\"version must have at least 1 valid version specified\");const n=new Set;for(let e=0;e<r.length;++e){const a=r[e];s(\"string\"==typeof a,\"version at position \"+e+\" must be a string\");const i=m.guidVersions[a.toLowerCase()];s(i,\"version at position \"+e+\" must be one of \"+Object.keys(m.guidVersions).join(\", \")),s(!n.has(i),\"version at position \"+e+\" must not be a duplicate\"),t+=i,n.add(i)}}s(m.guidSeparators.has(e.separator),'separator must be one of true, false, \"-\", or \":\"');const r=void 0===e.separator?\"[:-]?\":!0===e.separator?\"[:-]\":!1===e.separator?\"[]?\":`\\\\${e.separator}`,n=new RegExp(`^([\\\\[{\\\\(]?)[0-9A-F]{8}(${r})[0-9A-F]{4}\\\\2?[${t||\"0-9A-F\"}][0-9A-F]{3}\\\\2?[${t?\"89AB\":\"0-9A-F\"}][0-9A-F]{3}\\\\2?[0-9A-F]{12}([\\\\]}\\\\)]?)$`,\"i\");return this.$_addRule({name:\"guid\",args:{options:e},regex:n})},validate(e,t,r,{regex:s}){const n=s.exec(e);return n?m.guidBrackets[n[1]]!==n[n.length-1]?t.error(\"string.guid\"):e:t.error(\"string.guid\")}},hex:{method(e={}){return f.assertOptions(e,[\"byteAligned\",\"prefix\"]),e={byteAligned:!1,prefix:!1,...e},s(\"boolean\"==typeof e.byteAligned,\"byteAligned must be boolean\"),s(\"boolean\"==typeof e.prefix||\"optional\"===e.prefix,'prefix must be boolean or \"optional\"'),this.$_addRule({name:\"hex\",args:{options:e}})},validate:(e,t,{options:r})=>(\"optional\"===r.prefix?m.hexRegex.withOptionalPrefix:!0===r.prefix?m.hexRegex.withPrefix:m.hexRegex.withoutPrefix).test(e)?r.byteAligned&&e.length%2!=0?t.error(\"string.hexAlign\"):e:t.error(\"string.hex\")},hostname:{method(){return this.$_addRule(\"hostname\")},validate:(e,t)=>n.isValid(e,{minDomainSegments:1})||m.ipRegex.test(e)?e:t.error(\"string.hostname\")},insensitive:{method(){return this.$_setFlag(\"insensitive\",!0)}},ip:{method(e={}){f.assertOptions(e,[\"cidr\",\"version\"]);const{cidr:t,versions:r,regex:s}=i.regex(e),n=e.version?r:void 0;return this.$_addRule({name:\"ip\",args:{options:{cidr:t,version:n}},regex:s})},validate:(e,t,{options:r},{regex:s})=>s.test(e)?e:r.version?t.error(\"string.ipVersion\",{value:e,cidr:r.cidr,version:r.version}):t.error(\"string.ip\",{value:e,cidr:r.cidr})},isoDate:{method(){return this.$_addRule(\"isoDate\")},validate:(e,{error:t})=>m.isoDate(e)?e:t(\"string.isoDate\")},isoDuration:{method(){return this.$_addRule(\"isoDuration\")},validate:(e,t)=>m.isoDurationRegex.test(e)?e:t.error(\"string.isoDuration\")},length:{method(e,t){return m.length(this,\"length\",e,\"=\",t)},validate(e,t,{limit:r,encoding:s},{name:n,operator:a,args:i}){const o=!s&&e.length;return f.compare(o,r,a)?e:t.error(\"string.\"+n,{limit:i.limit,value:e,encoding:s})},args:[{name:\"limit\",ref:!0,assert:f.limit,message:\"must be a positive integer\"},\"encoding\"]},lowercase:{method(){return this.case(\"lower\")}},max:{method(e,t){return m.length(this,\"max\",e,\"<=\",t)},args:[\"limit\",\"encoding\"]},min:{method(e,t){return m.length(this,\"min\",e,\">=\",t)},args:[\"limit\",\"encoding\"]},normalize:{method(e=\"NFC\"){return s(m.normalizationForms.includes(e),\"normalization form must be one of \"+m.normalizationForms.join(\", \")),this.$_addRule({name:\"normalize\",args:{form:e}})},validate:(e,{error:t},{form:r})=>e===e.normalize(r)?e:t(\"string.normalize\",{value:e,form:r}),convert:!0},pattern:{alias:\"regex\",method(e,t={}){s(e instanceof RegExp,\"regex must be a RegExp\"),s(!e.flags.includes(\"g\")&&!e.flags.includes(\"y\"),\"regex should not use global or sticky mode\"),\"string\"==typeof t&&(t={name:t}),f.assertOptions(t,[\"invert\",\"name\"]);const r=[\"string.pattern\",t.invert?\".invert\":\"\",t.name?\".name\":\".base\"].join(\"\");return this.$_addRule({name:\"pattern\",args:{regex:e,options:t},errorCode:r})},validate:(e,t,{regex:r,options:s},{errorCode:n})=>r.test(e)^s.invert?e:t.error(n,{name:s.name,regex:r,value:e}),args:[\"regex\",\"options\"],multi:!0},replace:{method(e,t){\"string\"==typeof e&&(e=new RegExp(o(e),\"g\")),s(e instanceof RegExp,\"pattern must be a RegExp\"),s(\"string\"==typeof t,\"replacement must be a String\");const r=this.clone();return r.$_terms.replacements||(r.$_terms.replacements=[]),r.$_terms.replacements.push({pattern:e,replacement:t}),r}},token:{method(){return this.$_addRule(\"token\")},validate:(e,t)=>/^\\w+$/.test(e)?e:t.error(\"string.token\")},trim:{method(e=!0){return s(\"boolean\"==typeof e,\"enabled must be a boolean\"),this.$_addRule({name:\"trim\",args:{enabled:e}})},validate:(e,t,{enabled:r})=>r&&e!==e.trim()?t.error(\"string.trim\"):e,convert:!0},truncate:{method(e=!0){return s(\"boolean\"==typeof e,\"enabled must be a boolean\"),this.$_setFlag(\"truncate\",e)}},uppercase:{method(){return this.case(\"upper\")}},uri:{method(e={}){f.assertOptions(e,[\"allowRelative\",\"allowQuerySquareBrackets\",\"domain\",\"relativeOnly\",\"scheme\",\"encodeUri\"]),e.domain&&f.assertOptions(e.domain,[\"allowFullyQualified\",\"allowUnicode\",\"maxDomainSegments\",\"minDomainSegments\",\"tlds\"]);const{regex:t,scheme:r}=c.regex(e),s=e.domain?m.addressOptions(e.domain):null;return this.$_addRule({name:\"uri\",args:{options:e},regex:t,domain:s,scheme:r})},validate(e,t,{options:r},{regex:s,domain:a,scheme:i}){if([\"http:/\",\"https:/\"].includes(e))return t.error(\"string.uri\");let o=s.exec(e);if(!o&&t.prefs.convert&&r.encodeUri){const t=encodeURI(e);o=s.exec(t),o&&(e=t)}if(o){const s=o[1]||o[2];return!a||r.allowRelative&&!s||n.isValid(s,a)?e:t.error(\"string.domain\",{value:s})}return r.relativeOnly?t.error(\"string.uriRelativeOnly\"):r.scheme?t.error(\"string.uriCustomScheme\",{scheme:i,value:e}):t.error(\"string.uri\")}}},manifest:{build(e,t){if(t.replacements)for(const{pattern:r,replacement:s}of t.replacements)e=e.replace(r,s);return e}},messages:{\"string.alphanum\":\"{{#label}} must only contain alpha-numeric characters\",\"string.base\":\"{{#label}} must be a string\",\"string.base64\":\"{{#label}} must be a valid base64 string\",\"string.creditCard\":\"{{#label}} must be a credit card\",\"string.dataUri\":\"{{#label}} must be a valid dataUri string\",\"string.domain\":\"{{#label}} must contain a valid domain name\",\"string.email\":\"{{#label}} must be a valid email\",\"string.empty\":\"{{#label}} is not allowed to be empty\",\"string.guid\":\"{{#label}} must be a valid GUID\",\"string.hex\":\"{{#label}} must only contain hexadecimal characters\",\"string.hexAlign\":\"{{#label}} hex decoded representation must be byte aligned\",\"string.hostname\":\"{{#label}} must be a valid hostname\",\"string.ip\":\"{{#label}} must be a valid ip address with a {{#cidr}} CIDR\",\"string.ipVersion\":\"{{#label}} must be a valid ip address of one of the following versions {{#version}} with a {{#cidr}} CIDR\",\"string.isoDate\":\"{{#label}} must be in iso format\",\"string.isoDuration\":\"{{#label}} must be a valid ISO 8601 duration\",\"string.length\":\"{{#label}} length must be {{#limit}} characters long\",\"string.lowercase\":\"{{#label}} must only contain lowercase characters\",\"string.max\":\"{{#label}} length must be less than or equal to {{#limit}} characters long\",\"string.min\":\"{{#label}} length must be at least {{#limit}} characters long\",\"string.normalize\":\"{{#label}} must be unicode normalized in the {{#form}} form\",\"string.token\":\"{{#label}} must only contain alpha-numeric and underscore characters\",\"string.pattern.base\":\"{{#label}} with value {:[.]} fails to match the required pattern: {{#regex}}\",\"string.pattern.name\":\"{{#label}} with value {:[.]} fails to match the {{#name}} pattern\",\"string.pattern.invert.base\":\"{{#label}} with value {:[.]} matches the inverted pattern: {{#regex}}\",\"string.pattern.invert.name\":\"{{#label}} with value {:[.]} matches the inverted {{#name}} pattern\",\"string.trim\":\"{{#label}} must not have leading or trailing whitespace\",\"string.uri\":\"{{#label}} must be a valid uri\",\"string.uriCustomScheme\":\"{{#label}} must be a valid uri with a scheme matching the {{#scheme}} pattern\",\"string.uriRelativeOnly\":\"{{#label}} must be a valid relative uri\",\"string.uppercase\":\"{{#label}} must only contain uppercase characters\"}}),m.addressOptions=function(e){if(!e)return m.tlds||e;if(s(void 0===e.minDomainSegments||Number.isSafeInteger(e.minDomainSegments)&&e.minDomainSegments>0,\"minDomainSegments must be a positive integer\"),s(void 0===e.maxDomainSegments||Number.isSafeInteger(e.maxDomainSegments)&&e.maxDomainSegments>0,\"maxDomainSegments must be a positive integer\"),!1===e.tlds)return e;if(!0===e.tlds||void 0===e.tlds)return s(m.tlds,\"Built-in TLD list disabled\"),Object.assign({},e,m.tlds);s(\"object\"==typeof e.tlds,\"tlds must be true, false, or an object\");const t=e.tlds.deny;if(t)return Array.isArray(t)&&(e=Object.assign({},e,{tlds:{deny:new Set(t)}})),s(e.tlds.deny instanceof Set,\"tlds.deny must be an array, Set, or boolean\"),s(!e.tlds.allow,\"Cannot specify both tlds.allow and tlds.deny lists\"),m.validateTlds(e.tlds.deny,\"tlds.deny\"),e;const r=e.tlds.allow;return r?!0===r?(s(m.tlds,\"Built-in TLD list disabled\"),Object.assign({},e,m.tlds)):(Array.isArray(r)&&(e=Object.assign({},e,{tlds:{allow:new Set(r)}})),s(e.tlds.allow instanceof Set,\"tlds.allow must be an array, Set, or boolean\"),m.validateTlds(e.tlds.allow,\"tlds.allow\"),e):e},m.validateTlds=function(e,t){for(const r of e)s(n.isValid(r,{minDomainSegments:1,maxDomainSegments:1}),`${t} must contain valid top level domain names`)},m.isoDate=function(e){if(!f.isIsoDate(e))return null;/.*T.*[+-]\\d\\d$/.test(e)&&(e+=\"00\");const t=new Date(e);return isNaN(t.getTime())?null:t.toISOString()},m.length=function(e,t,r,n,a){return s(!a||!1,\"Invalid encoding:\",a),e.$_addRule({name:t,method:\"length\",args:{limit:r,encoding:a},operator:n})}},8826:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8068),a={};a.Map=class extends Map{slice(){return new a.Map(this)}},e.exports=n.extend({type:\"symbol\",terms:{map:{init:new a.Map}},coerce:{method(e,{schema:t,error:r}){const s=t.$_terms.map.get(e);return s&&(e=s),t._flags.only&&\"symbol\"!=typeof e?{value:e,errors:r(\"symbol.map\",{map:t.$_terms.map})}:{value:e}}},validate(e,{error:t}){if(\"symbol\"!=typeof e)return{value:e,errors:t(\"symbol.base\")}},rules:{map:{method(e){e&&!e[Symbol.iterator]&&\"object\"==typeof e&&(e=Object.entries(e)),s(e&&e[Symbol.iterator],\"Iterable must be an iterable or object\");const t=this.clone(),r=[];for(const n of e){s(n&&n[Symbol.iterator],\"Entry must be an iterable\");const[e,a]=n;s(\"object\"!=typeof e&&\"function\"!=typeof e&&\"symbol\"!=typeof e,\"Key must not be of type object, function, or Symbol\"),s(\"symbol\"==typeof a,\"Value must be a Symbol\"),t.$_terms.map.set(e,a),r.push(a)}return t.valid(...r)}}},manifest:{build:(e,t)=>(t.map&&(e=e.map(t.map)),e)},messages:{\"symbol.base\":\"{{#label}} must be a symbol\",\"symbol.map\":\"{{#label}} must be one of {{#map}}\"}})},8863:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(738),i=r(9621),o=r(8160),l=r(6354),c=r(493),u={result:Symbol(\"result\")};t.entry=function(e,t,r){let n=o.defaults;r&&(s(void 0===r.warnings,\"Cannot override warnings preference in synchronous validation\"),s(void 0===r.artifacts,\"Cannot override artifacts preference in synchronous validation\"),n=o.preferences(o.defaults,r));const a=u.entry(e,t,n);s(!a.mainstay.externals.length,\"Schema with external rules must use validateAsync()\");const i={value:a.value};return a.error&&(i.error=a.error),a.mainstay.warnings.length&&(i.warning=l.details(a.mainstay.warnings)),a.mainstay.debug&&(i.debug=a.mainstay.debug),a.mainstay.artifacts&&(i.artifacts=a.mainstay.artifacts),i},t.entryAsync=async function(e,t,r){let s=o.defaults;r&&(s=o.preferences(o.defaults,r));const n=u.entry(e,t,s),a=n.mainstay;if(n.error)throw a.debug&&(n.error.debug=a.debug),n.error;if(a.externals.length){let t=n.value;const c=[];for(const n of a.externals){const f=n.state.path,m=\"link\"===n.schema.type?a.links.get(n.schema):null;let h,d,p=t;const g=f.length?[t]:[],y=f.length?i(e,f):e;if(f.length){h=f[f.length-1];let e=t;for(const t of f.slice(0,-1))e=e[t],g.unshift(e);d=g[0],p=d[h]}try{const e=(e,t)=>(m||n.schema).$_createError(e,p,t,n.state,s),i=await n.method(p,{schema:n.schema,linked:m,state:n.state,prefs:r,original:y,error:e,errorsArray:u.errorsArray,warn:(e,t)=>a.warnings.push((m||n.schema).$_createError(e,p,t,n.state,s)),message:(e,t)=>(m||n.schema).$_createError(\"external\",p,t,n.state,s,{messages:e})});if(void 0===i||i===p)continue;if(i instanceof l.Report){if(a.tracer.log(n.schema,n.state,\"rule\",\"external\",\"error\"),c.push(i),s.abortEarly)break;continue}if(Array.isArray(i)&&i[o.symbols.errors]){if(a.tracer.log(n.schema,n.state,\"rule\",\"external\",\"error\"),c.push(...i),s.abortEarly)break;continue}d?(a.tracer.value(n.state,\"rule\",p,i,\"external\"),d[h]=i):(a.tracer.value(n.state,\"rule\",t,i,\"external\"),t=i)}catch(e){throw s.errors.label&&(e.message+=` (${n.label})`),e}}if(n.value=t,c.length)throw n.error=l.process(c,e,s),a.debug&&(n.error.debug=a.debug),n.error}if(!s.warnings&&!s.debug&&!s.artifacts)return n.value;const c={value:n.value};return a.warnings.length&&(c.warning=l.details(a.warnings)),a.debug&&(c.debug=a.debug),a.artifacts&&(c.artifacts=a.artifacts),c},u.Mainstay=class{constructor(e,t,r){this.externals=[],this.warnings=[],this.tracer=e,this.debug=t,this.links=r,this.shadow=null,this.artifacts=null,this._snapshots=[]}snapshot(){this._snapshots.push({externals:this.externals.slice(),warnings:this.warnings.slice()})}restore(){const e=this._snapshots.pop();this.externals=e.externals,this.warnings=e.warnings}commit(){this._snapshots.pop()}},u.entry=function(e,r,s){const{tracer:n,cleanup:a}=u.tracer(r,s),i=s.debug?[]:null,o=r._ids._schemaChain?new Map:null,f=new u.Mainstay(n,i,o),m=r._ids._schemaChain?[{schema:r}]:null,h=new c([],[],{mainstay:f,schemas:m}),d=t.validate(e,r,h,s);a&&r.$_root.untrace();const p=l.process(d.errors,e,s);return{value:d.value,error:p,mainstay:f}},u.tracer=function(e,t){return e.$_root._tracer?{tracer:e.$_root._tracer._register(e)}:t.debug?(s(e.$_root.trace,\"Debug mode not supported\"),{tracer:e.$_root.trace()._register(e),cleanup:!0}):{tracer:u.ignore}},t.validate=function(e,t,r,s,n={}){if(t.$_terms.whens&&(t=t._generate(e,r,s).schema),t._preferences&&(s=u.prefs(t,s)),t._cache&&s.cache){const s=t._cache.get(e);if(r.mainstay.tracer.debug(r,\"validate\",\"cached\",!!s),s)return s}const a=(n,a,i)=>t.$_createError(n,e,a,i||r,s),i={original:e,prefs:s,schema:t,state:r,error:a,errorsArray:u.errorsArray,warn:(e,t,s)=>r.mainstay.warnings.push(a(e,t,s)),message:(n,a)=>t.$_createError(\"custom\",e,a,r,s,{messages:n})};r.mainstay.tracer.entry(t,r);const l=t._definition;if(l.prepare&&void 0!==e&&s.convert){const t=l.prepare(e,i);if(t){if(r.mainstay.tracer.value(r,\"prepare\",e,t.value),t.errors)return u.finalize(t.value,[].concat(t.errors),i);e=t.value}}if(l.coerce&&void 0!==e&&s.convert&&(!l.coerce.from||l.coerce.from.includes(typeof e))){const t=l.coerce.method(e,i);if(t){if(r.mainstay.tracer.value(r,\"coerced\",e,t.value),t.errors)return u.finalize(t.value,[].concat(t.errors),i);e=t.value}}const c=t._flags.empty;c&&c.$_match(u.trim(e,t),r.nest(c),o.defaults)&&(r.mainstay.tracer.value(r,\"empty\",e,void 0),e=void 0);const f=n.presence||t._flags.presence||(t._flags._endedSwitch?null:s.presence);if(void 0===e){if(\"forbidden\"===f)return u.finalize(e,null,i);if(\"required\"===f)return u.finalize(e,[t.$_createError(\"any.required\",e,null,r,s)],i);if(\"optional\"===f){if(t._flags.default!==o.symbols.deepDefault)return u.finalize(e,null,i);r.mainstay.tracer.value(r,\"default\",e,{}),e={}}}else if(\"forbidden\"===f)return u.finalize(e,[t.$_createError(\"any.unknown\",e,null,r,s)],i);const m=[];if(t._valids){const n=t._valids.get(e,r,s,t._flags.insensitive);if(n)return s.convert&&(r.mainstay.tracer.value(r,\"valids\",e,n.value),e=n.value),r.mainstay.tracer.filter(t,r,\"valid\",n),u.finalize(e,null,i);if(t._flags.only){const n=t.$_createError(\"any.only\",e,{valids:t._valids.values({display:!0})},r,s);if(s.abortEarly)return u.finalize(e,[n],i);m.push(n)}}if(t._invalids){const n=t._invalids.get(e,r,s,t._flags.insensitive);if(n){r.mainstay.tracer.filter(t,r,\"invalid\",n);const a=t.$_createError(\"any.invalid\",e,{invalids:t._invalids.values({display:!0})},r,s);if(s.abortEarly)return u.finalize(e,[a],i);m.push(a)}}if(l.validate){const t=l.validate(e,i);if(t&&(r.mainstay.tracer.value(r,\"base\",e,t.value),e=t.value,t.errors)){if(!Array.isArray(t.errors))return m.push(t.errors),u.finalize(e,m,i);if(t.errors.length)return m.push(...t.errors),u.finalize(e,m,i)}}return t._rules.length?u.rules(e,m,i):u.finalize(e,m,i)},u.rules=function(e,t,r){const{schema:s,state:n,prefs:a}=r;for(const i of s._rules){const l=s._definition.rules[i.method];if(l.convert&&a.convert){n.mainstay.tracer.log(s,n,\"rule\",i.name,\"full\");continue}let c,f=i.args;if(i._resolve.length){f=Object.assign({},f);for(const t of i._resolve){const r=l.argsByName.get(t),i=f[t].resolve(e,n,a),u=r.normalize?r.normalize(i):i,m=o.validateArg(u,null,r);if(m){c=s.$_createError(\"any.ref\",i,{arg:t,ref:f[t],reason:m},n,a);break}f[t]=u}}c=c||l.validate(e,r,f,i);const m=u.rule(c,i);if(m.errors){if(n.mainstay.tracer.log(s,n,\"rule\",i.name,\"error\"),i.warn){n.mainstay.warnings.push(...m.errors);continue}if(a.abortEarly)return u.finalize(e,m.errors,r);t.push(...m.errors)}else n.mainstay.tracer.log(s,n,\"rule\",i.name,\"pass\"),n.mainstay.tracer.value(n,\"rule\",e,m.value,i.name),e=m.value}return u.finalize(e,t,r)},u.rule=function(e,t){return e instanceof l.Report?(u.error(e,t),{errors:[e],value:null}):Array.isArray(e)&&e[o.symbols.errors]?(e.forEach((e=>u.error(e,t))),{errors:e,value:null}):{errors:null,value:e}},u.error=function(e,t){return t.message&&e._setTemplate(t.message),e},u.finalize=function(e,t,r){t=t||[];const{schema:n,state:a,prefs:i}=r;if(t.length){const s=u.default(\"failover\",void 0,t,r);void 0!==s&&(a.mainstay.tracer.value(a,\"failover\",e,s),e=s,t=[])}if(t.length&&n._flags.error)if(\"function\"==typeof n._flags.error){t=n._flags.error(t),Array.isArray(t)||(t=[t]);for(const e of t)s(e instanceof Error||e instanceof l.Report,\"error() must return an Error object\")}else t=[n._flags.error];if(void 0===e){const s=u.default(\"default\",e,t,r);a.mainstay.tracer.value(a,\"default\",e,s),e=s}if(n._flags.cast&&void 0!==e){const t=n._definition.cast[n._flags.cast];if(t.from(e)){const s=t.to(e,r);a.mainstay.tracer.value(a,\"cast\",e,s,n._flags.cast),e=s}}if(n.$_terms.externals&&i.externals&&!1!==i._externals)for(const{method:e}of n.$_terms.externals)a.mainstay.externals.push({method:e,schema:n,state:a,label:l.label(n._flags,a,i)});const o={value:e,errors:t.length?t:null};return n._flags.result&&(o.value=\"strip\"===n._flags.result?void 0:r.original,a.mainstay.tracer.value(a,n._flags.result,e,o.value),a.shadow(e,n._flags.result)),n._cache&&!1!==i.cache&&!n._refs.length&&n._cache.set(r.original,o),void 0===e||o.errors||void 0===n._flags.artifact||(a.mainstay.artifacts=a.mainstay.artifacts||new Map,a.mainstay.artifacts.has(n._flags.artifact)||a.mainstay.artifacts.set(n._flags.artifact,[]),a.mainstay.artifacts.get(n._flags.artifact).push(a.path)),o},u.prefs=function(e,t){const r=t===o.defaults;return r&&e._preferences[o.symbols.prefs]?e._preferences[o.symbols.prefs]:(t=o.preferences(t,e._preferences),r&&(e._preferences[o.symbols.prefs]=t),t)},u.default=function(e,t,r,s){const{schema:a,state:i,prefs:l}=s,c=a._flags[e];if(l.noDefaults||void 0===c)return t;if(i.mainstay.tracer.log(a,i,\"rule\",e,\"full\"),!c)return c;if(\"function\"==typeof c){const t=c.length?[n(i.ancestors[0]),s]:[];try{return c(...t)}catch(t){return void r.push(a.$_createError(`any.${e}`,null,{error:t},i,l))}}return\"object\"!=typeof c?c:c[o.symbols.literal]?c.literal:o.isResolvable(c)?c.resolve(t,i,l):n(c)},u.trim=function(e,t){if(\"string\"!=typeof e)return e;const r=t.$_getRule(\"trim\");return r&&r.args.enabled?e.trim():e},u.ignore={active:!1,debug:a,entry:a,filter:a,log:a,resolve:a,value:a},u.errorsArray=function(){const e=[];return e[o.symbols.errors]=!0,e}},2036:(e,t,r)=>{\"use strict\";const s=r(375),n=r(9474),a=r(8160),i={};e.exports=i.Values=class{constructor(e,t){this._values=new Set(e),this._refs=new Set(t),this._lowercase=i.lowercases(e),this._override=!1}get length(){return this._values.size+this._refs.size}add(e,t){a.isResolvable(e)?this._refs.has(e)||(this._refs.add(e),t&&t.register(e)):this.has(e,null,null,!1)||(this._values.add(e),\"string\"==typeof e&&this._lowercase.set(e.toLowerCase(),e))}static merge(e,t,r){if(e=e||new i.Values,t){if(t._override)return t.clone();for(const r of[...t._values,...t._refs])e.add(r)}if(r)for(const t of[...r._values,...r._refs])e.remove(t);return e.length?e:null}remove(e){a.isResolvable(e)?this._refs.delete(e):(this._values.delete(e),\"string\"==typeof e&&this._lowercase.delete(e.toLowerCase()))}has(e,t,r,s){return!!this.get(e,t,r,s)}get(e,t,r,s){if(!this.length)return!1;if(this._values.has(e))return{value:e};if(\"string\"==typeof e&&e&&s){const t=this._lowercase.get(e.toLowerCase());if(t)return{value:t}}if(!this._refs.size&&\"object\"!=typeof e)return!1;if(\"object\"==typeof e)for(const t of this._values)if(n(t,e))return{value:t};if(t)for(const a of this._refs){const i=a.resolve(e,t,r,null,{in:!0});if(void 0===i)continue;const o=a.in&&\"object\"==typeof i?Array.isArray(i)?i:Object.keys(i):[i];for(const t of o)if(typeof t==typeof e)if(s&&e&&\"string\"==typeof e){if(t.toLowerCase()===e.toLowerCase())return{value:t,ref:a}}else if(n(t,e))return{value:t,ref:a}}return!1}override(){this._override=!0}values(e){if(e&&e.display){const e=[];for(const t of[...this._values,...this._refs])void 0!==t&&e.push(t);return e}return Array.from([...this._values,...this._refs])}clone(){const e=new i.Values(this._values,this._refs);return e._override=this._override,e}concat(e){s(!e._override,\"Cannot concat override set of values\");const t=new i.Values([...this._values,...e._values],[...this._refs,...e._refs]);return t._override=this._override,t}describe(){const e=[];this._override&&e.push({override:!0});for(const t of this._values.values())e.push(t&&\"object\"==typeof t?{value:t}:t);for(const t of this._refs.values())e.push(t.describe());return e}},i.Values.prototype[a.symbols.values]=!0,i.Values.prototype.slice=i.Values.prototype.clone,i.lowercases=function(e){const t=new Map;if(e)for(const r of e)\"string\"==typeof r&&t.set(r.toLowerCase(),r);return t}},978:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(1687),i=r(9621),o={};e.exports=function(e,t,r={}){if(s(e&&\"object\"==typeof e,\"Invalid defaults value: must be an object\"),s(!t||!0===t||\"object\"==typeof t,\"Invalid source value: must be true, falsy or an object\"),s(\"object\"==typeof r,\"Invalid options: must be an object\"),!t)return null;if(r.shallow)return o.applyToDefaultsWithShallow(e,t,r);const i=n(e);if(!0===t)return i;const l=void 0!==r.nullOverride&&r.nullOverride;return a(i,t,{nullOverride:l,mergeArrays:!1})},o.applyToDefaultsWithShallow=function(e,t,r){const l=r.shallow;s(Array.isArray(l),\"Invalid keys\");const c=new Map,u=!0===t?null:new Set;for(let r of l){r=Array.isArray(r)?r:r.split(\".\");const s=i(e,r);s&&\"object\"==typeof s?c.set(s,u&&i(t,r)||s):u&&u.add(r)}const f=n(e,{},c);if(!u)return f;for(const e of u)o.reachCopy(f,t,e);const m=void 0!==r.nullOverride&&r.nullOverride;return a(f,t,{nullOverride:m,mergeArrays:!1})},o.reachCopy=function(e,t,r){for(const e of r){if(!(e in t))return;const r=t[e];if(\"object\"!=typeof r||null===r)return;t=r}const s=t;let n=e;for(let e=0;e<r.length-1;++e){const t=r[e];\"object\"!=typeof n[t]&&(n[t]={}),n=n[t]}n[r[r.length-1]]=s}},375:(e,t,r)=>{\"use strict\";const s=r(7916);e.exports=function(e,...t){if(!e){if(1===t.length&&t[0]instanceof Error)throw t[0];throw new s(t)}}},8571:(e,t,r)=>{\"use strict\";const s=r(9621),n=r(4277),a=r(7043),i={needsProtoHack:new Set([n.set,n.map,n.weakSet,n.weakMap])};e.exports=i.clone=function(e,t={},r=null){if(\"object\"!=typeof e||null===e)return e;let s=i.clone,o=r;if(t.shallow){if(!0!==t.shallow)return i.cloneWithShallow(e,t);s=e=>e}else if(o){const t=o.get(e);if(t)return t}else o=new Map;const l=n.getInternalProto(e);if(l===n.buffer)return!1;if(l===n.date)return new Date(e.getTime());if(l===n.regex)return new RegExp(e);const c=i.base(e,l,t);if(c===e)return e;if(o&&o.set(e,c),l===n.set)for(const r of e)c.add(s(r,t,o));else if(l===n.map)for(const[r,n]of e)c.set(r,s(n,t,o));const u=a.keys(e,t);for(const r of u){if(\"__proto__\"===r)continue;if(l===n.array&&\"length\"===r){c.length=e.length;continue}const a=Object.getOwnPropertyDescriptor(e,r);a?a.get||a.set?Object.defineProperty(c,r,a):a.enumerable?c[r]=s(e[r],t,o):Object.defineProperty(c,r,{enumerable:!1,writable:!0,configurable:!0,value:s(e[r],t,o)}):Object.defineProperty(c,r,{enumerable:!0,writable:!0,configurable:!0,value:s(e[r],t,o)})}return c},i.cloneWithShallow=function(e,t){const r=t.shallow;(t=Object.assign({},t)).shallow=!1;const n=new Map;for(const t of r){const r=s(e,t);\"object\"!=typeof r&&\"function\"!=typeof r||n.set(r,r)}return i.clone(e,t,n)},i.base=function(e,t,r){if(!1===r.prototype)return i.needsProtoHack.has(t)?new t.constructor:t===n.array?[]:{};const s=Object.getPrototypeOf(e);if(s&&s.isImmutable)return e;if(t===n.array){const e=[];return s!==t&&Object.setPrototypeOf(e,s),e}if(i.needsProtoHack.has(t)){const e=new s.constructor;return s!==t&&Object.setPrototypeOf(e,s),e}return Object.create(s)}},9474:(e,t,r)=>{\"use strict\";const s=r(4277),n={mismatched:null};e.exports=function(e,t,r){return r=Object.assign({prototype:!0},r),!!n.isDeepEqual(e,t,r,[])},n.isDeepEqual=function(e,t,r,a){if(e===t)return 0!==e||1/e==1/t;const i=typeof e;if(i!==typeof t)return!1;if(null===e||null===t)return!1;if(\"function\"===i){if(!r.deepFunction||e.toString()!==t.toString())return!1}else if(\"object\"!==i)return e!=e&&t!=t;const o=n.getSharedType(e,t,!!r.prototype);switch(o){case s.buffer:return!1;case s.promise:return e===t;case s.regex:return e.toString()===t.toString();case n.mismatched:return!1}for(let r=a.length-1;r>=0;--r)if(a[r].isSame(e,t))return!0;a.push(new n.SeenEntry(e,t));try{return!!n.isDeepEqualObj(o,e,t,r,a)}finally{a.pop()}},n.getSharedType=function(e,t,r){if(r)return Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?n.mismatched:s.getInternalProto(e);const a=s.getInternalProto(e);return a!==s.getInternalProto(t)?n.mismatched:a},n.valueOf=function(e){const t=e.valueOf;if(void 0===t)return e;try{return t.call(e)}catch(e){return e}},n.hasOwnEnumerableProperty=function(e,t){return Object.prototype.propertyIsEnumerable.call(e,t)},n.isSetSimpleEqual=function(e,t){for(const r of Set.prototype.values.call(e))if(!Set.prototype.has.call(t,r))return!1;return!0},n.isDeepEqualObj=function(e,t,r,a,i){const{isDeepEqual:o,valueOf:l,hasOwnEnumerableProperty:c}=n,{keys:u,getOwnPropertySymbols:f}=Object;if(e===s.array){if(!a.part){if(t.length!==r.length)return!1;for(let e=0;e<t.length;++e)if(!o(t[e],r[e],a,i))return!1;return!0}for(const e of t)for(const t of r)if(o(e,t,a,i))return!0}else if(e===s.set){if(t.size!==r.size)return!1;if(!n.isSetSimpleEqual(t,r)){const e=new Set(Set.prototype.values.call(r));for(const r of Set.prototype.values.call(t)){if(e.delete(r))continue;let t=!1;for(const s of e)if(o(r,s,a,i)){e.delete(s),t=!0;break}if(!t)return!1}}}else if(e===s.map){if(t.size!==r.size)return!1;for(const[e,s]of Map.prototype.entries.call(t)){if(void 0===s&&!Map.prototype.has.call(r,e))return!1;if(!o(s,Map.prototype.get.call(r,e),a,i))return!1}}else if(e===s.error&&(t.name!==r.name||t.message!==r.message))return!1;const m=l(t),h=l(r);if((t!==m||r!==h)&&!o(m,h,a,i))return!1;const d=u(t);if(!a.part&&d.length!==u(r).length&&!a.skip)return!1;let p=0;for(const e of d)if(a.skip&&a.skip.includes(e))void 0===r[e]&&++p;else{if(!c(r,e))return!1;if(!o(t[e],r[e],a,i))return!1}if(!a.part&&d.length-p!==u(r).length)return!1;if(!1!==a.symbols){const e=f(t),s=new Set(f(r));for(const n of e){if(!a.skip||!a.skip.includes(n))if(c(t,n)){if(!c(r,n))return!1;if(!o(t[n],r[n],a,i))return!1}else if(c(r,n))return!1;s.delete(n)}for(const e of s)if(c(r,e))return!1}return!0},n.SeenEntry=class{constructor(e,t){this.obj=e,this.ref=t}isSame(e,t){return this.obj===e&&this.ref===t}}},7916:(e,t,r)=>{\"use strict\";const s=r(8761);e.exports=class extends Error{constructor(e){super(e.filter((e=>\"\"!==e)).map((e=>\"string\"==typeof e?e:e instanceof Error?e.message:s(e))).join(\" \")||\"Unknown error\"),\"function\"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t.assert)}}},5277:e=>{\"use strict\";const t={};e.exports=function(e){if(!e)return\"\";let r=\"\";for(let s=0;s<e.length;++s){const n=e.charCodeAt(s);t.isSafe(n)?r+=e[s]:r+=t.escapeHtmlChar(n)}return r},t.escapeHtmlChar=function(e){return t.namedHtml.get(e)||(e>=256?\"&#\"+e+\";\":`&#x${e.toString(16).padStart(2,\"0\")};`)},t.isSafe=function(e){return t.safeCharCodes.has(e)},t.namedHtml=new Map([[38,\"&\"],[60,\"<\"],[62,\">\"],[34,\""\"],[160,\" \"],[162,\"¢\"],[163,\"£\"],[164,\"¤\"],[169,\"©\"],[174,\"®\"]]),t.safeCharCodes=function(){const e=new Set;for(let t=32;t<123;++t)(t>=97||t>=65&&t<=90||t>=48&&t<=57||32===t||46===t||44===t||45===t||58===t||95===t)&&e.add(t);return e}()},6064:e=>{\"use strict\";e.exports=function(e){return e.replace(/[\\^\\$\\.\\*\\+\\-\\?\\=\\!\\:\\|\\\\\\/\\(\\)\\[\\]\\{\\}\\,]/g,\"\\\\$&\")}},738:e=>{\"use strict\";e.exports=function(){}},1687:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(7043),i={};e.exports=i.merge=function(e,t,r){if(s(e&&\"object\"==typeof e,\"Invalid target value: must be an object\"),s(null==t||\"object\"==typeof t,\"Invalid source value: must be null, undefined, or an object\"),!t)return e;if(r=Object.assign({nullOverride:!0,mergeArrays:!0},r),Array.isArray(t)){s(Array.isArray(e),\"Cannot merge array onto an object\"),r.mergeArrays||(e.length=0);for(let s=0;s<t.length;++s)e.push(n(t[s],{symbols:r.symbols}));return e}const o=a.keys(t,r);for(let s=0;s<o.length;++s){const a=o[s];if(\"__proto__\"===a||!Object.prototype.propertyIsEnumerable.call(t,a))continue;const l=t[a];if(l&&\"object\"==typeof l){if(e[a]===l)continue;!e[a]||\"object\"!=typeof e[a]||Array.isArray(e[a])!==Array.isArray(l)||l instanceof Date||l instanceof RegExp?e[a]=n(l,{symbols:r.symbols}):i.merge(e[a],l,r)}else(null!=l||r.nullOverride)&&(e[a]=l)}return e}},9621:(e,t,r)=>{\"use strict\";const s=r(375),n={};e.exports=function(e,t,r){if(!1===t||null==t)return e;\"string\"==typeof(r=r||{})&&(r={separator:r});const a=Array.isArray(t);s(!a||!r.separator,\"Separator option is not valid for array-based chain\");const i=a?t:t.split(r.separator||\".\");let o=e;for(let e=0;e<i.length;++e){let a=i[e];const l=r.iterables&&n.iterables(o);if(Array.isArray(o)||\"set\"===l){const e=Number(a);Number.isInteger(e)&&(a=e<0?o.length+e:e)}if(!o||\"function\"==typeof o&&!1===r.functions||!l&&void 0===o[a]){s(!r.strict||e+1===i.length,\"Missing segment\",a,\"in reach path \",t),s(\"object\"==typeof o||!0===r.functions||\"function\"!=typeof o,\"Invalid segment\",a,\"in reach path \",t),o=r.default;break}o=l?\"set\"===l?[...o][a]:o.get(a):o[a]}return o},n.iterables=function(e){return e instanceof Set?\"set\":e instanceof Map?\"map\":void 0}},8761:e=>{\"use strict\";e.exports=function(...e){try{return JSON.stringify(...e)}catch(e){return\"[Cannot display object: \"+e.message+\"]\"}}},4277:(e,t)=>{\"use strict\";const r={};t=e.exports={array:Array.prototype,buffer:!1,date:Date.prototype,error:Error.prototype,generic:Object.prototype,map:Map.prototype,promise:Promise.prototype,regex:RegExp.prototype,set:Set.prototype,weakMap:WeakMap.prototype,weakSet:WeakSet.prototype},r.typeMap=new Map([[\"[object Error]\",t.error],[\"[object Map]\",t.map],[\"[object Promise]\",t.promise],[\"[object Set]\",t.set],[\"[object WeakMap]\",t.weakMap],[\"[object WeakSet]\",t.weakSet]]),t.getInternalProto=function(e){if(Array.isArray(e))return t.array;if(e instanceof Date)return t.date;if(e instanceof RegExp)return t.regex;if(e instanceof Error)return t.error;const s=Object.prototype.toString.call(e);return r.typeMap.get(s)||t.generic}},7043:(e,t)=>{\"use strict\";t.keys=function(e,t={}){return!1!==t.symbols?Reflect.ownKeys(e):Object.getOwnPropertyNames(e)}},3652:(e,t,r)=>{\"use strict\";const s=r(375),n={};t.Sorter=class{constructor(){this._items=[],this.nodes=[]}add(e,t){const r=[].concat((t=t||{}).before||[]),n=[].concat(t.after||[]),a=t.group||\"?\",i=t.sort||0;s(!r.includes(a),`Item cannot come before itself: ${a}`),s(!r.includes(\"?\"),\"Item cannot come before unassociated items\"),s(!n.includes(a),`Item cannot come after itself: ${a}`),s(!n.includes(\"?\"),\"Item cannot come after unassociated items\"),Array.isArray(e)||(e=[e]);for(const t of e){const e={seq:this._items.length,sort:i,before:r,after:n,group:a,node:t};this._items.push(e)}if(!t.manual){const e=this._sort();s(e,\"item\",\"?\"!==a?`added into group ${a}`:\"\",\"created a dependencies error\")}return this.nodes}merge(e){Array.isArray(e)||(e=[e]);for(const t of e)if(t)for(const e of t._items)this._items.push(Object.assign({},e));this._items.sort(n.mergeSort);for(let e=0;e<this._items.length;++e)this._items[e].seq=e;const t=this._sort();return s(t,\"merge created a dependencies error\"),this.nodes}sort(){const e=this._sort();return s(e,\"sort created a dependencies error\"),this.nodes}_sort(){const e={},t=Object.create(null),r=Object.create(null);for(const s of this._items){const n=s.seq,a=s.group;r[a]=r[a]||[],r[a].push(n),e[n]=s.before;for(const e of s.after)t[e]=t[e]||[],t[e].push(n)}for(const t in e){const s=[];for(const n in e[t]){const a=e[t][n];r[a]=r[a]||[],s.push(...r[a])}e[t]=s}for(const s in t)if(r[s])for(const n of r[s])e[n].push(...t[s]);const s={};for(const t in e){const r=e[t];for(const e of r)s[e]=s[e]||[],s[e].push(t)}const n={},a=[];for(let e=0;e<this._items.length;++e){let t=e;if(s[e]){t=null;for(let e=0;e<this._items.length;++e){if(!0===n[e])continue;s[e]||(s[e]=[]);const r=s[e].length;let a=0;for(let t=0;t<r;++t)n[s[e][t]]&&++a;if(a===r){t=e;break}}}null!==t&&(n[t]=!0,a.push(t))}if(a.length!==this._items.length)return!1;const i={};for(const e of this._items)i[e.seq]=e;this._items=[],this.nodes=[];for(const e of a){const t=i[e];this.nodes.push(t.node),this._items.push(t)}return!0}},n.mergeSort=(e,t)=>e.sort===t.sort?0:e.sort<t.sort?-1:1},5380:(e,t,r)=>{\"use strict\";const s=r(443),n=r(2178),a={minDomainSegments:2,nonAsciiRx:/[^\\x00-\\x7f]/,domainControlRx:/[\\x00-\\x20@\\:\\/\\\\#!\\$&\\'\\(\\)\\*\\+,;=\\?]/,tldSegmentRx:/^[a-zA-Z](?:[a-zA-Z0-9\\-]*[a-zA-Z0-9])?$/,domainSegmentRx:/^[a-zA-Z0-9](?:[a-zA-Z0-9\\-]*[a-zA-Z0-9])?$/,URL:s.URL||URL};t.analyze=function(e,t={}){if(!e)return n.code(\"DOMAIN_NON_EMPTY_STRING\");if(\"string\"!=typeof e)throw new Error(\"Invalid input: domain must be a string\");if(e.length>256)return n.code(\"DOMAIN_TOO_LONG\");if(a.nonAsciiRx.test(e)){if(!1===t.allowUnicode)return n.code(\"DOMAIN_INVALID_UNICODE_CHARS\");e=e.normalize(\"NFC\")}if(a.domainControlRx.test(e))return n.code(\"DOMAIN_INVALID_CHARS\");e=a.punycode(e),t.allowFullyQualified&&\".\"===e[e.length-1]&&(e=e.slice(0,-1));const r=t.minDomainSegments||a.minDomainSegments,s=e.split(\".\");if(s.length<r)return n.code(\"DOMAIN_SEGMENTS_COUNT\");if(t.maxDomainSegments&&s.length>t.maxDomainSegments)return n.code(\"DOMAIN_SEGMENTS_COUNT_MAX\");const i=t.tlds;if(i){const e=s[s.length-1].toLowerCase();if(i.deny&&i.deny.has(e)||i.allow&&!i.allow.has(e))return n.code(\"DOMAIN_FORBIDDEN_TLDS\")}for(let e=0;e<s.length;++e){const t=s[e];if(!t.length)return n.code(\"DOMAIN_EMPTY_SEGMENT\");if(t.length>63)return n.code(\"DOMAIN_LONG_SEGMENT\");if(e<s.length-1){if(!a.domainSegmentRx.test(t))return n.code(\"DOMAIN_INVALID_CHARS\")}else if(!a.tldSegmentRx.test(t))return n.code(\"DOMAIN_INVALID_TLDS_CHARS\")}return null},t.isValid=function(e,r){return!t.analyze(e,r)},a.punycode=function(e){e.includes(\"%\")&&(e=e.replace(/%/g,\"%25\"));try{return new a.URL(`http://${e}`).host}catch(t){return e}}},1745:(e,t,r)=>{\"use strict\";const s=r(9848),n=r(5380),a=r(2178),i={nonAsciiRx:/[^\\x00-\\x7f]/,encoder:new(s.TextEncoder||TextEncoder)};t.analyze=function(e,t){return i.email(e,t)},t.isValid=function(e,t){return!i.email(e,t)},i.email=function(e,t={}){if(\"string\"!=typeof e)throw new Error(\"Invalid input: email must be a string\");if(!e)return a.code(\"EMPTY_STRING\");const r=!i.nonAsciiRx.test(e);if(!r){if(!1===t.allowUnicode)return a.code(\"FORBIDDEN_UNICODE\");e=e.normalize(\"NFC\")}const s=e.split(\"@\");if(2!==s.length)return s.length>2?a.code(\"MULTIPLE_AT_CHAR\"):a.code(\"MISSING_AT_CHAR\");const[o,l]=s;if(!o)return a.code(\"EMPTY_LOCAL\");if(!t.ignoreLength){if(e.length>254)return a.code(\"ADDRESS_TOO_LONG\");if(i.encoder.encode(o).length>64)return a.code(\"LOCAL_TOO_LONG\")}return i.local(o,r)||n.analyze(l,t)},i.local=function(e,t){const r=e.split(\".\");for(const e of r){if(!e.length)return a.code(\"EMPTY_LOCAL_SEGMENT\");if(t){if(!i.atextRx.test(e))return a.code(\"INVALID_LOCAL_CHARS\")}else for(const t of e){if(i.atextRx.test(t))continue;const e=i.binary(t);if(!i.atomRx.test(e))return a.code(\"INVALID_LOCAL_CHARS\")}}},i.binary=function(e){return Array.from(i.encoder.encode(e)).map((e=>String.fromCharCode(e))).join(\"\")},i.atextRx=/^[\\w!#\\$%&'\\*\\+\\-/=\\?\\^`\\{\\|\\}~]+$/,i.atomRx=new RegExp([\"(?:[\\\\xc2-\\\\xdf][\\\\x80-\\\\xbf])\",\"(?:\\\\xe0[\\\\xa0-\\\\xbf][\\\\x80-\\\\xbf])|(?:[\\\\xe1-\\\\xec][\\\\x80-\\\\xbf]{2})|(?:\\\\xed[\\\\x80-\\\\x9f][\\\\x80-\\\\xbf])|(?:[\\\\xee-\\\\xef][\\\\x80-\\\\xbf]{2})\",\"(?:\\\\xf0[\\\\x90-\\\\xbf][\\\\x80-\\\\xbf]{2})|(?:[\\\\xf1-\\\\xf3][\\\\x80-\\\\xbf]{3})|(?:\\\\xf4[\\\\x80-\\\\x8f][\\\\x80-\\\\xbf]{2})\"].join(\"|\"))},2178:(e,t)=>{\"use strict\";t.codes={EMPTY_STRING:\"Address must be a non-empty string\",FORBIDDEN_UNICODE:\"Address contains forbidden Unicode characters\",MULTIPLE_AT_CHAR:\"Address cannot contain more than one @ character\",MISSING_AT_CHAR:\"Address must contain one @ character\",EMPTY_LOCAL:\"Address local part cannot be empty\",ADDRESS_TOO_LONG:\"Address too long\",LOCAL_TOO_LONG:\"Address local part too long\",EMPTY_LOCAL_SEGMENT:\"Address local part contains empty dot-separated segment\",INVALID_LOCAL_CHARS:\"Address local part contains invalid character\",DOMAIN_NON_EMPTY_STRING:\"Domain must be a non-empty string\",DOMAIN_TOO_LONG:\"Domain too long\",DOMAIN_INVALID_UNICODE_CHARS:\"Domain contains forbidden Unicode characters\",DOMAIN_INVALID_CHARS:\"Domain contains invalid character\",DOMAIN_INVALID_TLDS_CHARS:\"Domain contains invalid tld character\",DOMAIN_SEGMENTS_COUNT:\"Domain lacks the minimum required number of segments\",DOMAIN_SEGMENTS_COUNT_MAX:\"Domain contains too many segments\",DOMAIN_FORBIDDEN_TLDS:\"Domain uses forbidden TLD\",DOMAIN_EMPTY_SEGMENT:\"Domain contains empty dot-separated segment\",DOMAIN_LONG_SEGMENT:\"Domain contains dot-separated segment that is too long\"},t.code=function(e){return{code:e,error:t.codes[e]}}},9959:(e,t,r)=>{\"use strict\";const s=r(375),n=r(5752);t.regex=function(e={}){s(void 0===e.cidr||\"string\"==typeof e.cidr,\"options.cidr must be a string\");const t=e.cidr?e.cidr.toLowerCase():\"optional\";s([\"required\",\"optional\",\"forbidden\"].includes(t),\"options.cidr must be one of required, optional, forbidden\"),s(void 0===e.version||\"string\"==typeof e.version||Array.isArray(e.version),\"options.version must be a string or an array of string\");let r=e.version||[\"ipv4\",\"ipv6\",\"ipvfuture\"];Array.isArray(r)||(r=[r]),s(r.length>=1,\"options.version must have at least 1 version specified\");for(let e=0;e<r.length;++e)s(\"string\"==typeof r[e],\"options.version must only contain strings\"),r[e]=r[e].toLowerCase(),s([\"ipv4\",\"ipv6\",\"ipvfuture\"].includes(r[e]),\"options.version contains unknown version \"+r[e]+\" - must be one of ipv4, ipv6, ipvfuture\");r=Array.from(new Set(r));const a=`(?:${r.map((e=>{if(\"forbidden\"===t)return n.ip[e];const r=`\\\\/${\"ipv4\"===e?n.ip.v4Cidr:n.ip.v6Cidr}`;return\"required\"===t?`${n.ip[e]}${r}`:`${n.ip[e]}(?:${r})?`})).join(\"|\")})`,i=new RegExp(`^${a}$`);return{cidr:t,versions:r,regex:i,raw:a}}},5752:(e,t,r)=>{\"use strict\";const s=r(375),n=r(6064),a={generate:function(){const e={},t=\"\\\\dA-Fa-f\",r=\"[\"+t+\"]\",s=\"\\\\w-\\\\.~\",n=\"!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=\",a=\"%\"+t,i=s+a+n+\":@\",o=\"[\"+i+\"]\",l=\"(?:0{0,2}\\\\d|0?[1-9]\\\\d|1\\\\d\\\\d|2[0-4]\\\\d|25[0-5])\";e.ipv4address=\"(?:\"+l+\"\\\\.){3}\"+l;const c=r+\"{1,4}\",u=\"(?:\"+c+\":\"+c+\"|\"+e.ipv4address+\")\",f=\"(?:\"+c+\":){6}\"+u,m=\"::(?:\"+c+\":){5}\"+u,h=\"(?:\"+c+\")?::(?:\"+c+\":){4}\"+u,d=\"(?:(?:\"+c+\":){0,1}\"+c+\")?::(?:\"+c+\":){3}\"+u,p=\"(?:(?:\"+c+\":){0,2}\"+c+\")?::(?:\"+c+\":){2}\"+u,g=\"(?:(?:\"+c+\":){0,3}\"+c+\")?::\"+c+\":\"+u,y=\"(?:(?:\"+c+\":){0,4}\"+c+\")?::\"+u,b=\"(?:(?:\"+c+\":){0,5}\"+c+\")?::\"+c,v=\"(?:(?:\"+c+\":){0,6}\"+c+\")?::\";e.ipv4Cidr=\"(?:\\\\d|[1-2]\\\\d|3[0-2])\",e.ipv6Cidr=\"(?:0{0,2}\\\\d|0?[1-9]\\\\d|1[01]\\\\d|12[0-8])\",e.ipv6address=\"(?:\"+f+\"|\"+m+\"|\"+h+\"|\"+d+\"|\"+p+\"|\"+g+\"|\"+y+\"|\"+b+\"|\"+v+\")\",e.ipvFuture=\"v\"+r+\"+\\\\.[\"+s+n+\":]+\",e.scheme=\"[a-zA-Z][a-zA-Z\\\\d+-\\\\.]*\",e.schemeRegex=new RegExp(e.scheme);const _=\"[\"+s+a+n+\":]*\",w=\"[\"+s+a+n+\"]{1,255}\",$=\"(?:\\\\[(?:\"+e.ipv6address+\"|\"+e.ipvFuture+\")\\\\]|\"+e.ipv4address+\"|\"+w+\")\",x=\"(?:\"+_+\"@)?\"+$+\"(?::\\\\d*)?\",j=\"(?:\"+_+\"@)?(\"+$+\")(?::\\\\d*)?\",k=o+\"*\",R=o+\"+\",S=\"(?:\\\\/\"+k+\")*\",A=\"\\\\/(?:\"+R+S+\")?\",O=R+S,E=\"[\"+s+a+n+\"@]+\"+S,D=\"(?:\\\\/\\\\/\\\\/\"+k+S+\")\";return e.hierPart=\"(?:(?:\\\\/\\\\/\"+x+S+\")|\"+A+\"|\"+O+\"|\"+D+\")\",e.hierPartCapture=\"(?:(?:\\\\/\\\\/\"+j+S+\")|\"+A+\"|\"+O+\")\",e.relativeRef=\"(?:(?:\\\\/\\\\/\"+x+S+\")|\"+A+\"|\"+E+\"|)\",e.relativeRefCapture=\"(?:(?:\\\\/\\\\/\"+j+S+\")|\"+A+\"|\"+E+\"|)\",e.query=\"[\"+i+\"\\\\/\\\\?]*(?=#|$)\",e.queryWithSquareBrackets=\"[\"+i+\"\\\\[\\\\]\\\\/\\\\?]*(?=#|$)\",e.fragment=\"[\"+i+\"\\\\/\\\\?]*\",e}};a.rfc3986=a.generate(),t.ip={v4Cidr:a.rfc3986.ipv4Cidr,v6Cidr:a.rfc3986.ipv6Cidr,ipv4:a.rfc3986.ipv4address,ipv6:a.rfc3986.ipv6address,ipvfuture:a.rfc3986.ipvFuture},a.createRegex=function(e){const t=a.rfc3986,r=\"(?:\\\\?\"+(e.allowQuerySquareBrackets?t.queryWithSquareBrackets:t.query)+\")?(?:#\"+t.fragment+\")?\",i=e.domain?t.relativeRefCapture:t.relativeRef;if(e.relativeOnly)return a.wrap(i+r);let o=\"\";if(e.scheme){s(e.scheme instanceof RegExp||\"string\"==typeof e.scheme||Array.isArray(e.scheme),\"scheme must be a RegExp, String, or Array\");const r=[].concat(e.scheme);s(r.length>=1,\"scheme must have at least 1 scheme specified\");const a=[];for(let e=0;e<r.length;++e){const i=r[e];s(i instanceof RegExp||\"string\"==typeof i,\"scheme at position \"+e+\" must be a RegExp or String\"),i instanceof RegExp?a.push(i.source.toString()):(s(t.schemeRegex.test(i),\"scheme at position \"+e+\" must be a valid scheme\"),a.push(n(i)))}o=a.join(\"|\")}const l=\"(?:\"+(o?\"(?:\"+o+\")\":t.scheme)+\":\"+(e.domain?t.hierPartCapture:t.hierPart)+\")\",c=e.allowRelative?\"(?:\"+l+\"|\"+i+\")\":l;return a.wrap(c+r,o)},a.wrap=function(e,t){return{raw:e=`(?=.)(?!https?:/(?:$|[^/]))(?!https?:///)(?!https?:[^/])${e}`,regex:new RegExp(`^${e}$`),scheme:t}},a.uriRegex=a.createRegex({}),t.regex=function(e={}){return e.scheme||e.allowRelative||e.relativeOnly||e.allowQuerySquareBrackets||e.domain?a.createRegex(e):a.uriRegex}},1447:(e,t)=>{\"use strict\";const r={operators:[\"!\",\"^\",\"*\",\"/\",\"%\",\"+\",\"-\",\"<\",\"<=\",\">\",\">=\",\"==\",\"!=\",\"&&\",\"||\",\"??\"],operatorCharacters:[\"!\",\"^\",\"*\",\"/\",\"%\",\"+\",\"-\",\"<\",\"=\",\">\",\"&\",\"|\",\"?\"],operatorsOrder:[[\"^\"],[\"*\",\"/\",\"%\"],[\"+\",\"-\"],[\"<\",\"<=\",\">\",\">=\"],[\"==\",\"!=\"],[\"&&\"],[\"||\",\"??\"]],operatorsPrefix:[\"!\",\"n\"],literals:{'\"':'\"',\"`\":\"`\",\"'\":\"'\",\"[\":\"]\"},numberRx:/^(?:[0-9]*(\\.[0-9]*)?){1}$/,tokenRx:/^[\\w\\$\\#\\.\\@\\:\\{\\}]+$/,symbol:Symbol(\"formula\"),settings:Symbol(\"settings\")};t.Parser=class{constructor(e,t={}){if(!t[r.settings]&&t.constants)for(const e in t.constants){const r=t.constants[e];if(null!==r&&![\"boolean\",\"number\",\"string\"].includes(typeof r))throw new Error(`Formula constant ${e} contains invalid ${typeof r} value type`)}this.settings=t[r.settings]?t:Object.assign({[r.settings]:!0,constants:{},functions:{}},t),this.single=null,this._parts=null,this._parse(e)}_parse(e){let s=[],n=\"\",a=0,i=!1;const o=e=>{if(a)throw new Error(\"Formula missing closing parenthesis\");const o=s.length?s[s.length-1]:null;if(i||n||e){if(o&&\"reference\"===o.type&&\")\"===e)return o.type=\"function\",o.value=this._subFormula(n,o.value),void(n=\"\");if(\")\"===e){const e=new t.Parser(n,this.settings);s.push({type:\"segment\",value:e})}else if(i){if(\"]\"===i)return s.push({type:\"reference\",value:n}),void(n=\"\");s.push({type:\"literal\",value:n})}else if(r.operatorCharacters.includes(n))o&&\"operator\"===o.type&&r.operators.includes(o.value+n)?o.value+=n:s.push({type:\"operator\",value:n});else if(n.match(r.numberRx))s.push({type:\"constant\",value:parseFloat(n)});else if(void 0!==this.settings.constants[n])s.push({type:\"constant\",value:this.settings.constants[n]});else{if(!n.match(r.tokenRx))throw new Error(`Formula contains invalid token: ${n}`);s.push({type:\"reference\",value:n})}n=\"\"}};for(const t of e)i?t===i?(o(),i=!1):n+=t:a?\"(\"===t?(n+=t,++a):\")\"===t?(--a,a?n+=t:o(t)):n+=t:t in r.literals?i=r.literals[t]:\"(\"===t?(o(),++a):r.operatorCharacters.includes(t)?(o(),n=t,o()):\" \"!==t?n+=t:o();o(),s=s.map(((e,t)=>\"operator\"!==e.type||\"-\"!==e.value||t&&\"operator\"!==s[t-1].type?e:{type:\"operator\",value:\"n\"}));let l=!1;for(const e of s){if(\"operator\"===e.type){if(r.operatorsPrefix.includes(e.value))continue;if(!l)throw new Error(\"Formula contains an operator in invalid position\");if(!r.operators.includes(e.value))throw new Error(`Formula contains an unknown operator ${e.value}`)}else if(l)throw new Error(\"Formula missing expected operator\");l=!l}if(!l)throw new Error(\"Formula contains invalid trailing operator\");1===s.length&&[\"reference\",\"literal\",\"constant\"].includes(s[0].type)&&(this.single={type:\"reference\"===s[0].type?\"reference\":\"value\",value:s[0].value}),this._parts=s.map((e=>{if(\"operator\"===e.type)return r.operatorsPrefix.includes(e.value)?e:e.value;if(\"reference\"!==e.type)return e.value;if(this.settings.tokenRx&&!this.settings.tokenRx.test(e.value))throw new Error(`Formula contains invalid reference ${e.value}`);return this.settings.reference?this.settings.reference(e.value):r.reference(e.value)}))}_subFormula(e,s){const n=this.settings.functions[s];if(\"function\"!=typeof n)throw new Error(`Formula contains unknown function ${s}`);let a=[];if(e){let t=\"\",n=0,i=!1;const o=()=>{if(!t)throw new Error(`Formula contains function ${s} with invalid arguments ${e}`);a.push(t),t=\"\"};for(let s=0;s<e.length;++s){const a=e[s];i?(t+=a,a===i&&(i=!1)):a in r.literals&&!n?(t+=a,i=r.literals[a]):\",\"!==a||n?(t+=a,\"(\"===a?++n:\")\"===a&&--n):o()}o()}return a=a.map((e=>new t.Parser(e,this.settings))),function(e){const t=[];for(const r of a)t.push(r.evaluate(e));return n.call(e,...t)}}evaluate(e){const t=this._parts.slice();for(let s=t.length-2;s>=0;--s){const n=t[s];if(n&&\"operator\"===n.type){const a=t[s+1];t.splice(s+1,1);const i=r.evaluate(a,e);t[s]=r.single(n.value,i)}}return r.operatorsOrder.forEach((s=>{for(let n=1;n<t.length-1;)if(s.includes(t[n])){const s=t[n],a=r.evaluate(t[n-1],e),i=r.evaluate(t[n+1],e);t.splice(n,2);const o=r.calculate(s,a,i);t[n-1]=0===o?0:o}else n+=2})),r.evaluate(t[0],e)}},t.Parser.prototype[r.symbol]=!0,r.reference=function(e){return function(t){return t&&void 0!==t[e]?t[e]:null}},r.evaluate=function(e,t){return null===e?null:\"function\"==typeof e?e(t):e[r.symbol]?e.evaluate(t):e},r.single=function(e,t){if(\"!\"===e)return!t;const r=-t;return 0===r?0:r},r.calculate=function(e,t,s){if(\"??\"===e)return r.exists(t)?t:s;if(\"string\"==typeof t||\"string\"==typeof s){if(\"+\"===e)return(t=r.exists(t)?t:\"\")+(r.exists(s)?s:\"\")}else switch(e){case\"^\":return Math.pow(t,s);case\"*\":return t*s;case\"/\":return t/s;case\"%\":return t%s;case\"+\":return t+s;case\"-\":return t-s}switch(e){case\"<\":return t<s;case\"<=\":return t<=s;case\">\":return t>s;case\">=\":return t>=s;case\"==\":return t===s;case\"!=\":return t!==s;case\"&&\":return t&&s;case\"||\":return t||s}return null},r.exists=function(e){return null!=e}},9926:()=>{},5688:()=>{},9708:()=>{},1152:()=>{},443:()=>{},9848:()=>{},5934:e=>{\"use strict\";e.exports=JSON.parse('{\"version\":\"17.13.1\"}')}},t={},function r(s){var n=t[s];if(void 0!==n)return n.exports;var a=t[s]={exports:{}};return e[s](a,a.exports,r),a.exports}(5107);var e,t}));","/* globals define,module */\n/*\nUsing a Universal Module Loader that should be browser, require, and AMD friendly\nhttp://ricostacruz.com/cheatsheets/umdjs.html\n*/\n;(function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(factory);\n } else if (typeof exports === \"object\") {\n module.exports = factory();\n } else {\n root.jsonLogic = factory();\n }\n}(this, function() {\n \"use strict\";\n /* globals console:false */\n\n if ( ! Array.isArray) {\n Array.isArray = function(arg) {\n return Object.prototype.toString.call(arg) === \"[object Array]\";\n };\n }\n\n /**\n * Return an array that contains no duplicates (original not modified)\n * @param {array} array Original reference array\n * @return {array} New array with no duplicates\n */\n function arrayUnique(array) {\n var a = [];\n for (var i=0, l=array.length; i<l; i++) {\n if (a.indexOf(array[i]) === -1) {\n a.push(array[i]);\n }\n }\n return a;\n }\n\n var jsonLogic = {};\n var operations = {\n \"==\": function(a, b) {\n return a == b;\n },\n \"===\": function(a, b) {\n return a === b;\n },\n \"!=\": function(a, b) {\n return a != b;\n },\n \"!==\": function(a, b) {\n return a !== b;\n },\n \">\": function(a, b) {\n return a > b;\n },\n \">=\": function(a, b) {\n return a >= b;\n },\n \"<\": function(a, b, c) {\n return (c === undefined) ? a < b : (a < b) && (b < c);\n },\n \"<=\": function(a, b, c) {\n return (c === undefined) ? a <= b : (a <= b) && (b <= c);\n },\n \"!!\": function(a) {\n return jsonLogic.truthy(a);\n },\n \"!\": function(a) {\n return !jsonLogic.truthy(a);\n },\n \"%\": function(a, b) {\n return a % b;\n },\n \"log\": function(a) {\n console.log(a); return a;\n },\n \"in\": function(a, b) {\n if (!b || typeof b.indexOf === \"undefined\") return false;\n return (b.indexOf(a) !== -1);\n },\n \"cat\": function() {\n return Array.prototype.join.call(arguments, \"\");\n },\n \"substr\": function(source, start, end) {\n if (end < 0) {\n // JavaScript doesn't support negative end, this emulates PHP behavior\n var temp = String(source).substr(start);\n return temp.substr(0, temp.length + end);\n }\n return String(source).substr(start, end);\n },\n \"+\": function() {\n return Array.prototype.reduce.call(arguments, function(a, b) {\n return parseFloat(a, 10) + parseFloat(b, 10);\n }, 0);\n },\n \"*\": function() {\n return Array.prototype.reduce.call(arguments, function(a, b) {\n return parseFloat(a, 10) * parseFloat(b, 10);\n });\n },\n \"-\": function(a, b) {\n if (b === undefined) {\n return -a;\n } else {\n return a - b;\n }\n },\n \"/\": function(a, b) {\n return a / b;\n },\n \"min\": function() {\n return Math.min.apply(this, arguments);\n },\n \"max\": function() {\n return Math.max.apply(this, arguments);\n },\n \"merge\": function() {\n return Array.prototype.reduce.call(arguments, function(a, b) {\n return a.concat(b);\n }, []);\n },\n \"var\": function(a, b) {\n var not_found = (b === undefined) ? null : b;\n var data = this;\n if (typeof a === \"undefined\" || a===\"\" || a===null) {\n return data;\n }\n var sub_props = String(a).split(\".\");\n for (var i = 0; i < sub_props.length; i++) {\n if (data === null || data === undefined) {\n return not_found;\n }\n // Descending into data\n data = data[sub_props[i]];\n if (data === undefined) {\n return not_found;\n }\n }\n return data;\n },\n \"missing\": function() {\n /*\n Missing can receive many keys as many arguments, like {\"missing:[1,2]}\n Missing can also receive *one* argument that is an array of keys,\n which typically happens if it's actually acting on the output of another command\n (like 'if' or 'merge')\n */\n\n var missing = [];\n var keys = Array.isArray(arguments[0]) ? arguments[0] : arguments;\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = jsonLogic.apply({\"var\": key}, this);\n if (value === null || value === \"\") {\n missing.push(key);\n }\n }\n\n return missing;\n },\n \"missing_some\": function(need_count, options) {\n // missing_some takes two arguments, how many (minimum) items must be present, and an array of keys (just like 'missing') to check for presence.\n var are_missing = jsonLogic.apply({\"missing\": options}, this);\n\n if (options.length - are_missing.length >= need_count) {\n return [];\n } else {\n return are_missing;\n }\n },\n };\n\n jsonLogic.is_logic = function(logic) {\n return (\n typeof logic === \"object\" && // An object\n logic !== null && // but not null\n ! Array.isArray(logic) && // and not an array\n Object.keys(logic).length === 1 // with exactly one key\n );\n };\n\n /*\n This helper will defer to the JsonLogic spec as a tie-breaker when different language interpreters define different behavior for the truthiness of primitives. E.g., PHP considers empty arrays to be falsy, but Javascript considers them to be truthy. JsonLogic, as an ecosystem, needs one consistent answer.\n\n Spec and rationale here: http://jsonlogic.com/truthy\n */\n jsonLogic.truthy = function(value) {\n if (Array.isArray(value) && value.length === 0) {\n return false;\n }\n return !! value;\n };\n\n\n jsonLogic.get_operator = function(logic) {\n return Object.keys(logic)[0];\n };\n\n jsonLogic.get_values = function(logic) {\n return logic[jsonLogic.get_operator(logic)];\n };\n\n jsonLogic.apply = function(logic, data) {\n // Does this array contain logic? Only one way to find out.\n if (Array.isArray(logic)) {\n return logic.map(function(l) {\n return jsonLogic.apply(l, data);\n });\n }\n // You've recursed to a primitive, stop!\n if ( ! jsonLogic.is_logic(logic) ) {\n return logic;\n }\n\n var op = jsonLogic.get_operator(logic);\n var values = logic[op];\n var i;\n var current;\n var scopedLogic;\n var scopedData;\n var initial;\n\n // easy syntax for unary operators, like {\"var\" : \"x\"} instead of strict {\"var\" : [\"x\"]}\n if ( ! Array.isArray(values)) {\n values = [values];\n }\n\n // 'if', 'and', and 'or' violate the normal rule of depth-first calculating consequents, let each manage recursion as needed.\n if (op === \"if\" || op == \"?:\") {\n /* 'if' should be called with a odd number of parameters, 3 or greater\n This works on the pattern:\n if( 0 ){ 1 }else{ 2 };\n if( 0 ){ 1 }else if( 2 ){ 3 }else{ 4 };\n if( 0 ){ 1 }else if( 2 ){ 3 }else if( 4 ){ 5 }else{ 6 };\n\n The implementation is:\n For pairs of values (0,1 then 2,3 then 4,5 etc)\n If the first evaluates truthy, evaluate and return the second\n If the first evaluates falsy, jump to the next pair (e.g, 0,1 to 2,3)\n given one parameter, evaluate and return it. (it's an Else and all the If/ElseIf were false)\n given 0 parameters, return NULL (not great practice, but there was no Else)\n */\n for (i = 0; i < values.length - 1; i += 2) {\n if ( jsonLogic.truthy( jsonLogic.apply(values[i], data) ) ) {\n return jsonLogic.apply(values[i+1], data);\n }\n }\n if (values.length === i+1) {\n return jsonLogic.apply(values[i], data);\n }\n return null;\n } else if (op === \"and\") { // Return first falsy, or last\n for (i=0; i < values.length; i+=1) {\n current = jsonLogic.apply(values[i], data);\n if ( ! jsonLogic.truthy(current)) {\n return current;\n }\n }\n return current; // Last\n } else if (op === \"or\") {// Return first truthy, or last\n for (i=0; i < values.length; i+=1) {\n current = jsonLogic.apply(values[i], data);\n if ( jsonLogic.truthy(current) ) {\n return current;\n }\n }\n return current; // Last\n } else if (op === \"filter\") {\n scopedData = jsonLogic.apply(values[0], data);\n scopedLogic = values[1];\n\n if ( ! Array.isArray(scopedData)) {\n return [];\n }\n // Return only the elements from the array in the first argument,\n // that return truthy when passed to the logic in the second argument.\n // For parity with JavaScript, reindex the returned array\n return scopedData.filter(function(datum) {\n return jsonLogic.truthy( jsonLogic.apply(scopedLogic, datum));\n });\n } else if (op === \"map\") {\n scopedData = jsonLogic.apply(values[0], data);\n scopedLogic = values[1];\n\n if ( ! Array.isArray(scopedData)) {\n return [];\n }\n\n return scopedData.map(function(datum) {\n return jsonLogic.apply(scopedLogic, datum);\n });\n } else if (op === \"reduce\") {\n scopedData = jsonLogic.apply(values[0], data);\n scopedLogic = values[1];\n initial = typeof values[2] !== \"undefined\" ? values[2] : null;\n\n if ( ! Array.isArray(scopedData)) {\n return initial;\n }\n\n return scopedData.reduce(\n function(accumulator, current) {\n return jsonLogic.apply(\n scopedLogic,\n {current: current, accumulator: accumulator}\n );\n },\n initial\n );\n } else if (op === \"all\") {\n scopedData = jsonLogic.apply(values[0], data);\n scopedLogic = values[1];\n // All of an empty set is false. Note, some and none have correct fallback after the for loop\n if ( ! Array.isArray(scopedData) || ! scopedData.length) {\n return false;\n }\n for (i=0; i < scopedData.length; i+=1) {\n if ( ! jsonLogic.truthy( jsonLogic.apply(scopedLogic, scopedData[i]) )) {\n return false; // First falsy, short circuit\n }\n }\n return true; // All were truthy\n } else if (op === \"none\") {\n scopedData = jsonLogic.apply(values[0], data);\n scopedLogic = values[1];\n\n if ( ! Array.isArray(scopedData) || ! scopedData.length) {\n return true;\n }\n for (i=0; i < scopedData.length; i+=1) {\n if ( jsonLogic.truthy( jsonLogic.apply(scopedLogic, scopedData[i]) )) {\n return false; // First truthy, short circuit\n }\n }\n return true; // None were truthy\n } else if (op === \"some\") {\n scopedData = jsonLogic.apply(values[0], data);\n scopedLogic = values[1];\n\n if ( ! Array.isArray(scopedData) || ! scopedData.length) {\n return false;\n }\n for (i=0; i < scopedData.length; i+=1) {\n if ( jsonLogic.truthy( jsonLogic.apply(scopedLogic, scopedData[i]) )) {\n return true; // First truthy, short circuit\n }\n }\n return false; // None were truthy\n }\n\n // Everyone else gets immediate depth-first recursion\n values = values.map(function(val) {\n return jsonLogic.apply(val, data);\n });\n\n\n // The operation is called with \"data\" bound to its \"this\" and \"values\" passed as arguments.\n // Structured commands like % or > can name formal arguments while flexible commands (like missing or merge) can operate on the pseudo-array arguments\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments\n if (operations.hasOwnProperty(op) && typeof operations[op] === \"function\") {\n return operations[op].apply(data, values);\n } else if (op.indexOf(\".\") > 0) { // Contains a dot, and not in the 0th position\n var sub_ops = String(op).split(\".\");\n var operation = operations;\n for (i = 0; i < sub_ops.length; i++) {\n if (!operation.hasOwnProperty(sub_ops[i])) {\n throw new Error(\"Unrecognized operation \" + op +\n \" (failed at \" + sub_ops.slice(0, i+1).join(\".\") + \")\");\n }\n // Descending into operations\n operation = operation[sub_ops[i]];\n }\n\n return operation.apply(data, values);\n }\n\n throw new Error(\"Unrecognized operation \" + op );\n };\n\n jsonLogic.uses_data = function(logic) {\n var collection = [];\n\n if (jsonLogic.is_logic(logic)) {\n var op = jsonLogic.get_operator(logic);\n var values = logic[op];\n\n if ( ! Array.isArray(values)) {\n values = [values];\n }\n\n if (op === \"var\") {\n // This doesn't cover the case where the arg to var is itself a rule.\n collection.push(values[0]);\n } else {\n // Recursion!\n values.forEach(function(val) {\n collection.push.apply(collection, jsonLogic.uses_data(val) );\n });\n }\n }\n\n return arrayUnique(collection);\n };\n\n jsonLogic.add_operation = function(name, code) {\n operations[name] = code;\n };\n\n jsonLogic.rm_operation = function(name) {\n delete operations[name];\n };\n\n jsonLogic.rule_like = function(rule, pattern) {\n // console.log(\"Is \". JSON.stringify(rule) . \" like \" . JSON.stringify(pattern) . \"?\");\n if (pattern === rule) {\n return true;\n } // TODO : Deep object equivalency?\n if (pattern === \"@\") {\n return true;\n } // Wildcard!\n if (pattern === \"number\") {\n return (typeof rule === \"number\");\n }\n if (pattern === \"string\") {\n return (typeof rule === \"string\");\n }\n if (pattern === \"array\") {\n // !logic test might be superfluous in JavaScript\n return Array.isArray(rule) && ! jsonLogic.is_logic(rule);\n }\n\n if (jsonLogic.is_logic(pattern)) {\n if (jsonLogic.is_logic(rule)) {\n var pattern_op = jsonLogic.get_operator(pattern);\n var rule_op = jsonLogic.get_operator(rule);\n\n if (pattern_op === \"@\" || pattern_op === rule_op) {\n // echo \"\\nOperators match, go deeper\\n\";\n return jsonLogic.rule_like(\n jsonLogic.get_values(rule, false),\n jsonLogic.get_values(pattern, false)\n );\n }\n }\n return false; // pattern is logic, rule isn't, can't be eq\n }\n\n if (Array.isArray(pattern)) {\n if (Array.isArray(rule)) {\n if (pattern.length !== rule.length) {\n return false;\n }\n /*\n Note, array order MATTERS, because we're using this array test logic to consider arguments, where order can matter. (e.g., + is commutative, but '-' or 'if' or 'var' are NOT)\n */\n for (var i = 0; i < pattern.length; i += 1) {\n // If any fail, we fail\n if ( ! jsonLogic.rule_like(rule[i], pattern[i])) {\n return false;\n }\n }\n return true; // If they *all* passed, we pass\n } else {\n return false; // Pattern is array, rule isn't\n }\n }\n\n // Not logic, not array, not a === match for rule.\n return false;\n };\n\n return jsonLogic;\n}));\n","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function (feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function (obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature);\n // Add px to dimension features\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n if (index < features.length-1) {\n mq += ' and '\n }\n });\n return mq;\n};\n\nvar json2mq = function (query) {\n var mq = '';\n if (typeof query === 'string') {\n return query;\n }\n // Handling array of media queries\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n if (index < query.length-1) {\n mq += ', '\n }\n });\n return mq;\n }\n // Handling single media query\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n}\n\nmodule.exports = baseClamp;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor;\n\n/**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\nfunction baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n}\n\nmodule.exports = baseRepeat;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseRepeat = require('./_baseRepeat'),\n baseToString = require('./_baseToString'),\n castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringSize = require('./_stringSize'),\n stringToArray = require('./_stringToArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil;\n\n/**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\nfunction createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n}\n\nmodule.exports = createPadding;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var asciiSize = require('./_asciiSize'),\n hasUnicode = require('./_hasUnicode'),\n unicodeSize = require('./_unicodeSize');\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nmodule.exports = stringSize;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nmodule.exports = unicodeSize;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n // and escape the comment, thus injecting code that gets evaled.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/\\s/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Throw an error if a forbidden character was found in `variable`, to prevent\n // potential command injection attacks.\n else if (reForbiddenIdentifierChars.test(variable)) {\n throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n }\n\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.slice(0, trimmedEndIndex(string) + 1);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n *\n * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\nmodule.exports = mergeWith;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var arrayMap = require('./_arrayMap'),\n baseClone = require('./_baseClone'),\n baseUnset = require('./_baseUnset'),\n castPath = require('./_castPath'),\n copyObject = require('./_copyObject'),\n customOmitClone = require('./_customOmitClone'),\n flatRest = require('./_flatRest'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\n","var createPadding = require('./_createPadding'),\n stringSize = require('./_stringSize'),\n toInteger = require('./toInteger'),\n toString = require('./toString');\n\n/**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\nfunction padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n}\n\nmodule.exports = padStart;\n","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","var baseClamp = require('./_baseClamp'),\n baseToString = require('./_baseToString'),\n toInteger = require('./toInteger'),\n toString = require('./toString');\n\n/**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\nfunction startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n}\n\nmodule.exports = startsWith;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","/* eslint-disable-next-line @typescript-eslint/no-explicit-any */\nexport var PersistStoreMap = new Map();\n","export var mpsConfig = {};\nexport var mpsReactionOptions = {};\nexport var configurePersistable = function (config, reactionOptions) {\n if (reactionOptions === void 0) { reactionOptions = {}; }\n mpsConfig = config;\n mpsReactionOptions = reactionOptions;\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { PersistStoreMap } from './PersistStoreMap';\nexport var hydrateStore = function (target) { return __awaiter(void 0, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, ((_a = PersistStoreMap.get(target)) === null || _a === void 0 ? void 0 : _a.hydrateStore())];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n}); };\n","export var buildExpireTimestamp = function (milliseconds) {\n return new Date().getTime() + milliseconds;\n};\nexport var hasTimestampExpired = function (milliseconds) {\n var dateTimeNow = new Date().getTime();\n var dateTimeExpiration = new Date(milliseconds).getTime();\n return dateTimeExpiration <= dateTimeNow;\n};\nexport var isDefined = function (t) { return t != null; };\n/**\n * Check if the data is an object.\n */\nexport var isObject = function (data) {\n return Boolean(data) && Array.isArray(data) === false && typeof data === 'object';\n};\n/**\n * Check the data is an object with properties.\n */\nexport var isObjectWithProperties = function (data) {\n return isObject(data) && Object.keys(data).length > 0;\n};\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport var isFunction = function (functionToCheck) {\n return functionToCheck && functionToCheck instanceof Function;\n};\nexport var isStorageControllerLike = function (value) {\n // \"typeof Storage\" fixes issue with React Native\n if (typeof Storage !== 'undefined' && value instanceof Storage) {\n return true;\n }\n return [\n value === null || value === void 0 ? void 0 : value.hasOwnProperty('getItem'),\n value === null || value === void 0 ? void 0 : value.hasOwnProperty('removeItem'),\n value === null || value === void 0 ? void 0 : value.hasOwnProperty('setItem'),\n isFunction(value === null || value === void 0 ? void 0 : value.getItem),\n isFunction(value === null || value === void 0 ? void 0 : value.removeItem),\n isFunction(value === null || value === void 0 ? void 0 : value.setItem),\n ].every(Boolean);\n};\nvar isBrowser = typeof window !== 'undefined';\nvar isNotProductionBuild = process.env.NODE_ENV !== 'production';\nexport var invalidStorageAdaptorWarningIf = function (storageAdaptor, storageName) {\n if (isBrowser && isNotProductionBuild && !isStorageControllerLike(storageAdaptor)) {\n console.warn(\"mobx-persist-store: \".concat(storageName, \" does not have a valid storage adaptor.\\n\\n* Make sure the storage controller has 'getItem', 'setItem' and 'removeItem' methods.\\\"\"));\n }\n};\nexport var duplicatedStoreWarningIf = function (hasPersistedStoreAlready, storageName) {\n if (isBrowser && isNotProductionBuild && hasPersistedStoreAlready) {\n console.warn(\"mobx-persist-store: 'makePersistable' was called was called with the same storage name \\\"\".concat(storageName, \"\\\".\\n\\n * Make sure you call \\\"stopPersisting\\\" before recreating \\\"\").concat(storageName, \"\\\" to avoid memory leaks. \\n * Or double check you did not have two stores with the same name.\"));\n }\n};\nexport var computedPersistWarningIf = function (isComputedProperty, propertyName) {\n if (isBrowser && isNotProductionBuild && isComputedProperty) {\n console.warn(\"mobx-persist-store: The property '\".concat(propertyName, \"' is computed and will not persist.\"));\n }\n};\nexport var actionPersistWarningIf = function (isComputedProperty, propertyName) {\n if (isBrowser && isNotProductionBuild && isComputedProperty) {\n console.warn(\"mobx-persist-store: The property '\".concat(propertyName, \"' is an action and will not persist.\"));\n }\n};\nexport var consoleDebug = function (isDebugMode, message, content) {\n if (content === void 0) { content = ''; }\n if (isDebugMode && isBrowser && isNotProductionBuild) {\n console.info(\"%c mobx-persist-store: (Debug Mode) \".concat(message, \" \"), 'background: #4B8CC5; color: black; display: block;', content);\n }\n};\nexport var isArrayForMap = function (value) {\n if (Array.isArray(value)) {\n return value.every(function (v) { return Array.isArray(v); });\n }\n return false;\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { buildExpireTimestamp, consoleDebug, hasTimestampExpired } from './utils';\nvar StorageAdapter = /** @class */ (function () {\n function StorageAdapter(options) {\n this.options = options;\n }\n StorageAdapter.prototype.setItem = function (key, item) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var _b, _c, stringify, _d, debugMode, data, content;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _b = this.options, _c = _b.stringify, stringify = _c === void 0 ? true : _c, _d = _b.debugMode, debugMode = _d === void 0 ? false : _d;\n data = this.options.expireIn\n ? Object.assign({}, item, {\n __mps__: {\n expireInTimestamp: buildExpireTimestamp(this.options.expireIn),\n },\n })\n : item;\n content = stringify ? JSON.stringify(data) : data;\n consoleDebug(debugMode, \"\".concat(key, \" - setItem:\"), content);\n return [4 /*yield*/, ((_a = this.options.storage) === null || _a === void 0 ? void 0 : _a.setItem(key, content))];\n case 1:\n _e.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n StorageAdapter.prototype.getItem = function (key) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function () {\n var _c, _d, removeOnExpiration, _e, debugMode, storageData, parsedData, hasExpired;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n _c = this.options, _d = _c.removeOnExpiration, removeOnExpiration = _d === void 0 ? true : _d, _e = _c.debugMode, debugMode = _e === void 0 ? false : _e;\n return [4 /*yield*/, ((_a = this.options.storage) === null || _a === void 0 ? void 0 : _a.getItem(key))];\n case 1:\n storageData = _f.sent();\n try {\n parsedData = JSON.parse(storageData) || {};\n }\n catch (error) {\n parsedData = storageData || {};\n }\n hasExpired = hasTimestampExpired((_b = parsedData.__mps__) === null || _b === void 0 ? void 0 : _b.expireInTimestamp);\n consoleDebug(debugMode, \"\".concat(key, \" - hasExpired\"), hasExpired);\n if (!(hasExpired && removeOnExpiration)) return [3 /*break*/, 3];\n return [4 /*yield*/, this.removeItem(key)];\n case 2:\n _f.sent();\n _f.label = 3;\n case 3:\n parsedData = hasExpired ? {} : parsedData;\n consoleDebug(debugMode, \"\".concat(key, \" - (getItem):\"), parsedData);\n return [2 /*return*/, parsedData];\n }\n });\n });\n };\n StorageAdapter.prototype.removeItem = function (key) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var _b, debugMode;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _b = this.options.debugMode, debugMode = _b === void 0 ? false : _b;\n consoleDebug(debugMode, \"\".concat(key, \" - (removeItem): storage was removed\"));\n return [4 /*yield*/, ((_a = this.options.storage) === null || _a === void 0 ? void 0 : _a.removeItem(key))];\n case 1:\n _c.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return StorageAdapter;\n}());\nexport { StorageAdapter };\n","import { mpsConfig } from './configurePersistable';\nimport { consoleDebug, isObject } from './utils';\nvar isSerializableProperty = function (obj) {\n var keys = ['key', 'serialize', 'deserialize'];\n if (!isObject(obj)) {\n consoleDebug(!!mpsConfig.debugMode, 'passed value is not an object', { obj: obj });\n return false;\n }\n return keys.every(function (key) {\n if (obj.hasOwnProperty(key) && typeof key !== 'undefined') {\n return true;\n }\n consoleDebug(!!mpsConfig.debugMode, \"\".concat(String(key), \" not found in SerializableProperty\"), { key: key, obj: obj });\n return false;\n });\n};\nexport var makeSerializableProperties = function (properties) {\n return properties.reduce(function (acc, curr) {\n if (typeof curr === 'string') {\n acc.push({\n key: curr,\n serialize: function (value) { return value; },\n deserialize: function (value) { return value; },\n });\n return acc;\n }\n if (isSerializableProperty(curr)) {\n acc.push(curr);\n return acc;\n }\n return acc;\n }, []);\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { action, isAction, isComputedProp, makeObservable, observable, ObservableMap, reaction, runInAction, toJS, } from 'mobx';\nimport { PersistStoreMap } from './PersistStoreMap';\nimport { StorageAdapter } from './StorageAdapter';\nimport { mpsConfig, mpsReactionOptions } from './configurePersistable';\nimport { makeSerializableProperties } from './serializableProperty';\nimport { actionPersistWarningIf, computedPersistWarningIf, consoleDebug, invalidStorageAdaptorWarningIf, isArrayForMap, } from './utils';\nvar PersistStore = /** @class */ (function () {\n function PersistStore(target, options, reactionOptions) {\n if (reactionOptions === void 0) { reactionOptions = {}; }\n var _a, _b, _c, _d, _e, _f, _g;\n this.cancelWatch = null;\n this.properties = [];\n this.reactionOptions = {};\n this.storageAdapter = null;\n this.target = null;\n this.debugMode = false;\n this.isHydrated = false;\n this.isPersisting = false;\n this.storageName = '';\n this.target = target;\n this.storageName = options.name;\n this.properties = makeSerializableProperties(options.properties);\n this.reactionOptions = Object.assign({ fireImmediately: true }, mpsReactionOptions, reactionOptions);\n this.debugMode = (_b = (_a = options.debugMode) !== null && _a !== void 0 ? _a : mpsConfig.debugMode) !== null && _b !== void 0 ? _b : false;\n this.storageAdapter = new StorageAdapter({\n expireIn: (_c = options.expireIn) !== null && _c !== void 0 ? _c : mpsConfig.expireIn,\n removeOnExpiration: (_e = (_d = options.removeOnExpiration) !== null && _d !== void 0 ? _d : mpsConfig.removeOnExpiration) !== null && _e !== void 0 ? _e : true,\n stringify: (_g = (_f = options.stringify) !== null && _f !== void 0 ? _f : mpsConfig.stringify) !== null && _g !== void 0 ? _g : true,\n storage: options.storage ? options.storage : mpsConfig.storage,\n debugMode: this.debugMode,\n });\n makeObservable(this, {\n clearPersistedStore: action,\n hydrateStore: action,\n isHydrated: observable,\n isPersisting: observable,\n pausePersisting: action,\n startPersisting: action,\n stopPersisting: action,\n }, { autoBind: true, deep: false });\n invalidStorageAdaptorWarningIf(this.storageAdapter.options.storage, this.storageName);\n consoleDebug(this.debugMode, \"\".concat(this.storageName, \" - (makePersistable)\"), {\n properties: this.properties,\n storageAdapter: this.storageAdapter,\n reactionOptions: this.reactionOptions,\n });\n }\n PersistStore.prototype.init = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.hydrateStore()];\n case 1:\n _a.sent();\n this.startPersisting();\n return [2 /*return*/, this];\n }\n });\n });\n };\n PersistStore.prototype.hydrateStore = function () {\n return __awaiter(this, void 0, void 0, function () {\n var isBeingWatched, data_1, target_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isBeingWatched = Boolean(this.cancelWatch);\n if (this.isPersisting) {\n this.pausePersisting();\n }\n runInAction(function () {\n _this.isHydrated = false;\n consoleDebug(_this.debugMode, \"\".concat(_this.storageName, \" - (hydrateStore) isHydrated:\"), _this.isHydrated);\n });\n if (!(this.storageAdapter && this.target)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.storageAdapter.getItem(this.storageName)];\n case 1:\n data_1 = _a.sent();\n target_1 = this.target;\n if (data_1) {\n runInAction(function () {\n _this.properties.forEach(function (property) {\n var allowPropertyHydration = [\n target_1.hasOwnProperty(property.key),\n typeof data_1[property.key] !== 'undefined',\n ].every(Boolean);\n if (allowPropertyHydration) {\n var propertyData = data_1[property.key];\n if (target_1[property.key] instanceof ObservableMap && isArrayForMap(propertyData)) {\n target_1[property.key] = property.deserialize(new Map(propertyData));\n }\n else {\n target_1[property.key] = property.deserialize(propertyData);\n }\n }\n });\n });\n }\n _a.label = 2;\n case 2:\n runInAction(function () {\n _this.isHydrated = true;\n consoleDebug(_this.debugMode, \"\".concat(_this.storageName, \" - isHydrated:\"), _this.isHydrated);\n });\n if (isBeingWatched) {\n this.startPersisting();\n }\n return [2 /*return*/];\n }\n });\n });\n };\n PersistStore.prototype.startPersisting = function () {\n var _this = this;\n if (!this.storageAdapter || !this.target || this.cancelWatch) {\n return;\n }\n // Reassigning so TypeScript doesn't complain (Object is possibly 'null') about and this.target within reaction\n var target = this.target;\n this.cancelWatch = reaction(function () {\n var propertiesToWatch = {};\n _this.properties.forEach(function (property) {\n var isComputedProperty = isComputedProp(target, property.key);\n var isActionProperty = isAction(target[property.key]);\n computedPersistWarningIf(isComputedProperty, String(property.key));\n actionPersistWarningIf(isActionProperty, String(property.key));\n if (!isComputedProperty && !isActionProperty) {\n var propertyData = property.serialize(target[property.key]);\n if (propertyData instanceof ObservableMap) {\n var mapArray_1 = [];\n propertyData.forEach(function (v, k) {\n mapArray_1.push([k, toJS(v)]);\n });\n propertyData = mapArray_1;\n }\n propertiesToWatch[property.key] = toJS(propertyData);\n }\n });\n return propertiesToWatch;\n }, function (dataToSave) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.storageAdapter) return [3 /*break*/, 2];\n return [4 /*yield*/, this.storageAdapter.setItem(this.storageName, dataToSave)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n }); }, this.reactionOptions);\n this.isPersisting = true;\n consoleDebug(this.debugMode, \"\".concat(this.storageName, \" - (startPersisting) isPersisting:\"), this.isPersisting);\n };\n PersistStore.prototype.pausePersisting = function () {\n this.isPersisting = false;\n consoleDebug(this.debugMode, \"\".concat(this.storageName, \" - pausePersisting (isPersisting):\"), this.isPersisting);\n if (this.cancelWatch) {\n this.cancelWatch();\n this.cancelWatch = null;\n }\n };\n PersistStore.prototype.stopPersisting = function () {\n this.pausePersisting();\n consoleDebug(this.debugMode, \"\".concat(this.storageName, \" - (stopPersisting)\"));\n PersistStoreMap.delete(this.target);\n this.cancelWatch = null;\n this.properties = [];\n this.reactionOptions = {};\n this.storageAdapter = null;\n this.target = null;\n };\n PersistStore.prototype.clearPersistedStore = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.storageAdapter) return [3 /*break*/, 2];\n consoleDebug(this.debugMode, \"\".concat(this.storageName, \" - (clearPersistedStore)\"));\n return [4 /*yield*/, this.storageAdapter.removeItem(this.storageName)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n PersistStore.prototype.getPersistedStore = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (this.storageAdapter) {\n consoleDebug(this.debugMode, \"\".concat(this.storageName, \" - (getPersistedStore)\"));\n // @ts-ignore\n return [2 /*return*/, this.storageAdapter.getItem(this.storageName)];\n }\n return [2 /*return*/, null];\n });\n });\n };\n return PersistStore;\n}());\nexport { PersistStore };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { PersistStore } from './PersistStore';\nimport { PersistStoreMap } from './PersistStoreMap';\nimport { duplicatedStoreWarningIf } from './utils';\nexport var makePersistable = function (target, storageOptions, reactionOptions) { return __awaiter(void 0, void 0, void 0, function () {\n var mobxPersistStore, hasPersistedStoreAlready;\n return __generator(this, function (_a) {\n mobxPersistStore = new PersistStore(target, storageOptions, reactionOptions);\n hasPersistedStoreAlready = Array.from(PersistStoreMap.values())\n .map(function (item) { return item.storageName; })\n .includes(mobxPersistStore.storageName);\n duplicatedStoreWarningIf(hasPersistedStoreAlready, mobxPersistStore.storageName);\n PersistStoreMap.set(target, mobxPersistStore);\n return [2 /*return*/, mobxPersistStore.init()];\n });\n}); };\n","import { makeObservable } from \"mobx\"\nimport { useState } from \"react\"\n\nif (!useState) {\n throw new Error(\"mobx-react-lite requires React with Hooks support\")\n}\nif (!makeObservable) {\n throw new Error(\"mobx-react-lite@3 requires mobx at least version 6 to be available\")\n}\n","import { configure } from \"mobx\"\n\nexport function defaultNoopBatch(callback: () => void) {\n callback()\n}\n\nexport function observerBatching(reactionScheduler: any) {\n if (!reactionScheduler) {\n reactionScheduler = defaultNoopBatch\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\n \"[MobX] Failed to get unstable_batched updates from react-dom / react-native\"\n )\n }\n }\n configure({ reactionScheduler })\n}\n\nexport const isObserverBatched = () => {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[MobX] Deprecated\")\n }\n\n return true\n}\n","import { getDependencyTree, Reaction } from \"mobx\"\n\nexport function printDebugValue(v: Reaction) {\n return getDependencyTree(v)\n}\n","export declare class FinalizationRegistryType<T> {\n constructor(finalize: (value: T) => void)\n register(target: object, value: T, token?: object): void\n unregister(token: object): void\n}\n\ndeclare const FinalizationRegistry: typeof FinalizationRegistryType | undefined\n\nexport const REGISTRY_FINALIZE_AFTER = 10_000\nexport const REGISTRY_SWEEP_INTERVAL = 10_000\n\nexport class TimerBasedFinalizationRegistry<T> implements FinalizationRegistryType<T> {\n private registrations: Map<unknown, { value: T; registeredAt: number }> = new Map()\n private sweepTimeout: ReturnType<typeof setTimeout> | undefined\n\n constructor(private readonly finalize: (value: T) => void) {}\n\n // Token is actually required with this impl\n register(target: object, value: T, token?: object) {\n this.registrations.set(token, {\n value,\n registeredAt: Date.now()\n })\n this.scheduleSweep()\n }\n\n unregister(token: unknown) {\n this.registrations.delete(token)\n }\n\n // Bound so it can be used directly as setTimeout callback.\n sweep = (maxAge = REGISTRY_FINALIZE_AFTER) => {\n // cancel timeout so we can force sweep anytime\n clearTimeout(this.sweepTimeout)\n this.sweepTimeout = undefined\n\n const now = Date.now()\n this.registrations.forEach((registration, token) => {\n if (now - registration.registeredAt >= maxAge) {\n this.finalize(registration.value)\n this.registrations.delete(token)\n }\n })\n\n if (this.registrations.size > 0) {\n this.scheduleSweep()\n }\n }\n\n // Bound so it can be exported directly as clearTimers test utility.\n finalizeAllImmediately = () => {\n this.sweep(0)\n }\n\n private scheduleSweep() {\n if (this.sweepTimeout === undefined) {\n this.sweepTimeout = setTimeout(this.sweep, REGISTRY_SWEEP_INTERVAL)\n }\n }\n}\n\nexport const UniversalFinalizationRegistry =\n typeof FinalizationRegistry !== \"undefined\"\n ? FinalizationRegistry\n : TimerBasedFinalizationRegistry\n","import { Reaction } from \"mobx\"\nimport { UniversalFinalizationRegistry } from \"./UniversalFinalizationRegistry\"\n\nexport const observerFinalizationRegistry = new UniversalFinalizationRegistry(\n (adm: { reaction: Reaction | null }) => {\n adm.reaction?.dispose()\n adm.reaction = null\n }\n)\n","let globalIsUsingStaticRendering = false\n\nexport function enableStaticRendering(enable: boolean) {\n globalIsUsingStaticRendering = enable\n}\n\nexport function isUsingStaticRendering(): boolean {\n return globalIsUsingStaticRendering\n}\n","import { Reaction } from \"mobx\"\nimport React from \"react\"\nimport { printDebugValue } from \"./utils/printDebugValue\"\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\"\nimport { isUsingStaticRendering } from \"./staticRendering\"\n\nfunction observerComponentNameFor(baseComponentName: string) {\n return `observer${baseComponentName}`\n}\n\ntype ObserverAdministration = {\n /** The Reaction created during first render, which may be leaked */\n reaction: Reaction | null\n\n /**\n * Whether the component has yet completed mounting (for us, whether\n * its useEffect has run)\n */\n mounted: boolean\n\n /**\n * Whether the observables that the component is tracking changed between\n * the first render and the first useEffect.\n */\n changedBeforeMount: boolean\n}\n\n/**\n * We use class to make it easier to detect in heap snapshots by name\n */\nclass ObjectToBeRetainedByReact {}\n\nfunction objectToBeRetainedByReactFactory() {\n return new ObjectToBeRetainedByReact()\n}\n\nexport function useObserver<T>(fn: () => T, baseComponentName: string = \"observed\"): T {\n if (isUsingStaticRendering()) {\n return fn()\n }\n\n const [objectRetainedByReact] = React.useState(objectToBeRetainedByReactFactory)\n // Force update, see #2982\n const [, setState] = React.useState()\n const forceUpdate = () => setState([] as any)\n\n // StrictMode/ConcurrentMode/Suspense may mean that our component is\n // rendered and abandoned multiple times, so we need to track leaked\n // Reactions.\n const admRef = React.useRef<ObserverAdministration | null>(null)\n\n if (!admRef.current) {\n // First render\n admRef.current = {\n reaction: null,\n mounted: false,\n changedBeforeMount: false\n }\n }\n\n const adm = admRef.current!\n\n if (!adm.reaction) {\n // First render or component was not committed and reaction was disposed by registry\n adm.reaction = new Reaction(observerComponentNameFor(baseComponentName), () => {\n // Observable has changed, meaning we want to re-render\n // BUT if we're a component that hasn't yet got to the useEffect()\n // stage, we might be a component that _started_ to render, but\n // got dropped, and we don't want to make state changes then.\n // (It triggers warnings in StrictMode, for a start.)\n if (adm.mounted) {\n // We have reached useEffect(), so we're mounted, and can trigger an update\n forceUpdate()\n } else {\n // We haven't yet reached useEffect(), so we'll need to trigger a re-render\n // when (and if) useEffect() arrives.\n adm.changedBeforeMount = true\n }\n })\n\n observerFinalizationRegistry.register(objectRetainedByReact, adm, adm)\n }\n\n React.useDebugValue(adm.reaction, printDebugValue)\n\n React.useEffect(() => {\n observerFinalizationRegistry.unregister(adm)\n\n adm.mounted = true\n\n if (adm.reaction) {\n if (adm.changedBeforeMount) {\n // Got a change before mount, force an update\n adm.changedBeforeMount = false\n forceUpdate()\n }\n } else {\n // The reaction we set up in our render has been disposed.\n // This can be due to bad timings of renderings, e.g. our\n // component was paused for a _very_ long time, and our\n // reaction got cleaned up\n\n // Re-create the reaction\n adm.reaction = new Reaction(observerComponentNameFor(baseComponentName), () => {\n // We've definitely already been mounted at this point\n forceUpdate()\n })\n forceUpdate()\n }\n\n return () => {\n adm.reaction!.dispose()\n adm.reaction = null\n adm.mounted = false\n adm.changedBeforeMount = false\n }\n }, [])\n\n // render the original component, but have the\n // reaction track the observables, so that rendering\n // can be invalidated (see above) once a dependency changes\n let rendering!: T\n let exception\n adm.reaction.track(() => {\n try {\n rendering = fn()\n } catch (e) {\n exception = e\n }\n })\n\n if (exception) {\n throw exception // re-throw any exceptions caught during rendering\n }\n\n return rendering\n}\n","import { forwardRef, memo } from \"react\"\n\nimport { isUsingStaticRendering } from \"./staticRendering\"\nimport { useObserver } from \"./useObserver\"\n\nlet warnObserverOptionsDeprecated = true\n\nconst hasSymbol = typeof Symbol === \"function\" && Symbol.for\n// Using react-is had some issues (and operates on elements, not on types), see #608 / #609\nconst ReactForwardRefSymbol = hasSymbol\n ? Symbol.for(\"react.forward_ref\")\n : typeof forwardRef === \"function\" && forwardRef((props: any) => null)[\"$$typeof\"]\n\nconst ReactMemoSymbol = hasSymbol\n ? Symbol.for(\"react.memo\")\n : typeof memo === \"function\" && memo((props: any) => null)[\"$$typeof\"]\n\nexport interface IObserverOptions {\n readonly forwardRef?: boolean\n}\n\nexport function observer<P extends object, TRef = {}>(\n baseComponent: React.ForwardRefRenderFunction<TRef, P>,\n options: IObserverOptions & { forwardRef: true }\n): React.MemoExoticComponent<\n React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<TRef>>\n>\n\nexport function observer<P extends object, TRef = {}>(\n baseComponent: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<P> & React.RefAttributes<TRef>\n >\n): React.MemoExoticComponent<\n React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<TRef>>\n>\n\nexport function observer<P extends object>(\n baseComponent: React.FunctionComponent<P>,\n options?: IObserverOptions\n): React.FunctionComponent<P>\n\nexport function observer<\n C extends React.FunctionComponent<any> | React.ForwardRefRenderFunction<any>,\n Options extends IObserverOptions\n>(\n baseComponent: C,\n options?: Options\n): Options extends { forwardRef: true }\n ? C extends React.ForwardRefRenderFunction<infer TRef, infer P>\n ? C &\n React.MemoExoticComponent<\n React.ForwardRefExoticComponent<\n React.PropsWithoutRef<P> & React.RefAttributes<TRef>\n >\n >\n : never /* forwardRef set for a non forwarding component */\n : C & { displayName: string }\n\n// n.b. base case is not used for actual typings or exported in the typing files\nexport function observer<P extends object, TRef = {}>(\n baseComponent:\n | React.ForwardRefRenderFunction<TRef, P>\n | React.FunctionComponent<P>\n | React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<TRef>>,\n // TODO remove in next major\n options?: IObserverOptions\n) {\n if (process.env.NODE_ENV !== \"production\" && warnObserverOptionsDeprecated && options) {\n warnObserverOptionsDeprecated = false\n console.warn(\n `[mobx-react-lite] \\`observer(fn, { forwardRef: true })\\` is deprecated, use \\`observer(React.forwardRef(fn))\\``\n )\n }\n\n if (ReactMemoSymbol && baseComponent[\"$$typeof\"] === ReactMemoSymbol) {\n throw new Error(\n `[mobx-react-lite] You are trying to use \\`observer\\` on a function component wrapped in either another \\`observer\\` or \\`React.memo\\`. The observer already applies 'React.memo' for you.`\n )\n }\n\n // The working of observer is explained step by step in this talk: https://www.youtube.com/watch?v=cPF4iBedoF0&feature=youtu.be&t=1307\n if (isUsingStaticRendering()) {\n return baseComponent\n }\n\n let useForwardRef = options?.forwardRef ?? false\n let render = baseComponent\n\n const baseComponentName = baseComponent.displayName || baseComponent.name\n\n // If already wrapped with forwardRef, unwrap,\n // so we can patch render and apply memo\n if (ReactForwardRefSymbol && baseComponent[\"$$typeof\"] === ReactForwardRefSymbol) {\n useForwardRef = true\n render = baseComponent[\"render\"]\n if (typeof render !== \"function\") {\n throw new Error(\n `[mobx-react-lite] \\`render\\` property of ForwardRef was not a function`\n )\n }\n }\n\n let observerComponent = (props: any, ref: React.Ref<TRef>) => {\n return useObserver(() => render(props, ref), baseComponentName)\n }\n\n // Don't set `displayName` for anonymous components,\n // so the `displayName` can be customized by user, see #3192.\n if (baseComponentName !== \"\") {\n ;(observerComponent as React.FunctionComponent).displayName = baseComponentName\n }\n\n // Support legacy context: `contextTypes` must be applied before `memo`\n if ((baseComponent as any).contextTypes) {\n ;(observerComponent as React.FunctionComponent).contextTypes = (\n baseComponent as any\n ).contextTypes\n }\n\n if (useForwardRef) {\n // `forwardRef` must be applied prior `memo`\n // `forwardRef(observer(cmp))` throws:\n // \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))\"\n observerComponent = forwardRef(observerComponent)\n }\n\n // memo; we are not interested in deep updates\n // in props; we assume that if deep objects are changed,\n // this is in observables, which would have been tracked anyway\n observerComponent = memo(observerComponent)\n\n copyStaticProperties(baseComponent, observerComponent)\n\n if (\"production\" !== process.env.NODE_ENV) {\n Object.defineProperty(observerComponent, \"contextTypes\", {\n set() {\n throw new Error(\n `[mobx-react-lite] \\`${\n this.displayName || this.type?.displayName || \"Component\"\n }.contextTypes\\` must be set before applying \\`observer\\`.`\n )\n }\n })\n }\n\n return observerComponent\n}\n\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nconst hoistBlackList: any = {\n $$typeof: true,\n render: true,\n compare: true,\n type: true,\n // Don't redefine `displayName`,\n // it's defined as getter-setter pair on `memo` (see #3192).\n displayName: true\n}\n\nfunction copyStaticProperties(base: any, target: any) {\n Object.keys(base).forEach(key => {\n if (!hoistBlackList[key]) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key)!)\n }\n })\n}\n","import \"./utils/assertEnvironment\"\n\nimport { unstable_batchedUpdates as batch } from \"./utils/reactBatchedUpdates\"\nimport { observerBatching } from \"./utils/observerBatching\"\nimport { useDeprecated } from \"./utils/utils\"\nimport { useObserver as useObserverOriginal } from \"./useObserver\"\nimport { enableStaticRendering } from \"./staticRendering\"\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\"\n\nobserverBatching(batch)\n\nexport { isUsingStaticRendering, enableStaticRendering } from \"./staticRendering\"\nexport { observer, IObserverOptions } from \"./observer\"\nexport { Observer } from \"./ObserverComponent\"\nexport { useLocalObservable } from \"./useLocalObservable\"\nexport { useLocalStore } from \"./useLocalStore\"\nexport { useAsObservableSource } from \"./useAsObservableSource\"\n\nexport const clearTimers = observerFinalizationRegistry[\"finalizeAllImmediately\"] ?? (() => {})\n\nexport function useObserver<T>(fn: () => T, baseComponentName: string = \"observed\"): T {\n if (\"production\" !== process.env.NODE_ENV) {\n useDeprecated(\n \"[mobx-react-lite] 'useObserver(fn)' is deprecated. Use `<Observer>{fn}</Observer>` instead, or wrap the entire component in `observer`.\"\n )\n }\n return useObserverOriginal(fn, baseComponentName)\n}\n\nexport { isObserverBatched, observerBatching } from \"./utils/observerBatching\"\n\nexport function useStaticRendering(enable: boolean) {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\n \"[mobx-react-lite] 'useStaticRendering' is deprecated, use 'enableStaticRendering' instead\"\n )\n }\n enableStaticRendering(enable)\n}\n","let symbolId = 0\nfunction createSymbol(name: string): symbol | string {\n if (typeof Symbol === \"function\") {\n return Symbol(name)\n }\n const symbol = `__$mobx-react ${name} (${symbolId})`\n symbolId++\n return symbol\n}\n\nconst createdSymbols = {}\nexport function newSymbol(name: string): symbol | string {\n if (!createdSymbols[name]) {\n createdSymbols[name] = createSymbol(name)\n }\n return createdSymbols[name]\n}\n\nexport function shallowEqual(objA: any, objB: any): boolean {\n //From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (is(objA, objB)) {\n return true\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false\n }\n const keysA = Object.keys(objA)\n const keysB = Object.keys(objB)\n if (keysA.length !== keysB.length) {\n return false\n }\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false\n }\n }\n return true\n}\n\nfunction is(x: any, y: any): boolean {\n // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y\n } else {\n return x !== x && y !== y\n }\n}\n\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nconst hoistBlackList = {\n $$typeof: 1,\n render: 1,\n compare: 1,\n type: 1,\n childContextTypes: 1,\n contextType: 1,\n contextTypes: 1,\n defaultProps: 1,\n getDefaultProps: 1,\n getDerivedStateFromError: 1,\n getDerivedStateFromProps: 1,\n mixins: 1,\n displayName: 1,\n propTypes: 1\n}\n\nexport function copyStaticProperties(base: object, target: object): void {\n const protoProps = Object.getOwnPropertyNames(Object.getPrototypeOf(base))\n Object.getOwnPropertyNames(base).forEach(key => {\n if (!hoistBlackList[key] && protoProps.indexOf(key) === -1) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key)!)\n }\n })\n}\n\n/**\n * Helper to set `prop` to `this` as non-enumerable (hidden prop)\n * @param target\n * @param prop\n * @param value\n */\nexport function setHiddenProp(target: object, prop: any, value: any): void {\n if (!Object.hasOwnProperty.call(target, prop)) {\n Object.defineProperty(target, prop, {\n enumerable: false,\n configurable: true,\n writable: true,\n value\n })\n } else {\n target[prop] = value\n }\n}\n\n/**\n * Utilities for patching componentWillUnmount, to make sure @disposeOnUnmount works correctly icm with user defined hooks\n * and the handler provided by mobx-react\n */\nconst mobxMixins = newSymbol(\"patchMixins\")\nconst mobxPatchedDefinition = newSymbol(\"patchedDefinition\")\n\nexport interface Mixins extends Record<string, any> {\n locks: number\n methods: Array<Function>\n}\n\nfunction getMixins(target: object, methodName: string): Mixins {\n const mixins = (target[mobxMixins] = target[mobxMixins] || {})\n const methodMixins = (mixins[methodName] = mixins[methodName] || {})\n methodMixins.locks = methodMixins.locks || 0\n methodMixins.methods = methodMixins.methods || []\n return methodMixins\n}\n\nfunction wrapper(realMethod: Function, mixins: Mixins, ...args: Array<any>) {\n // locks are used to ensure that mixins are invoked only once per invocation, even on recursive calls\n mixins.locks++\n\n try {\n let retVal\n if (realMethod !== undefined && realMethod !== null) {\n retVal = realMethod.apply(this, args)\n }\n\n return retVal\n } finally {\n mixins.locks--\n if (mixins.locks === 0) {\n mixins.methods.forEach(mx => {\n mx.apply(this, args)\n })\n }\n }\n}\n\nfunction wrapFunction(realMethod: Function, mixins: Mixins): (...args: Array<any>) => any {\n const fn = function (...args: Array<any>) {\n wrapper.call(this, realMethod, mixins, ...args)\n }\n return fn\n}\n\nexport function patch(target: object, methodName: string, mixinMethod: Function): void {\n const mixins = getMixins(target, methodName)\n\n if (mixins.methods.indexOf(mixinMethod) < 0) {\n mixins.methods.push(mixinMethod)\n }\n\n const oldDefinition = Object.getOwnPropertyDescriptor(target, methodName)\n if (oldDefinition && oldDefinition[mobxPatchedDefinition]) {\n // already patched definition, do not repatch\n return\n }\n\n const originalMethod = target[methodName]\n const newDefinition = createDefinition(\n target,\n methodName,\n oldDefinition ? oldDefinition.enumerable : undefined,\n mixins,\n originalMethod\n )\n\n Object.defineProperty(target, methodName, newDefinition)\n}\n\nfunction createDefinition(\n target: object,\n methodName: string,\n enumerable: any,\n mixins: Mixins,\n originalMethod: Function\n): PropertyDescriptor {\n let wrappedFunc = wrapFunction(originalMethod, mixins)\n\n return {\n [mobxPatchedDefinition]: true,\n get: function () {\n return wrappedFunc\n },\n set: function (value) {\n if (this === target) {\n wrappedFunc = wrapFunction(value, mixins)\n } else {\n // when it is an instance of the prototype/a child prototype patch that particular case again separately\n // since we need to store separate values depending on wether it is the actual instance, the prototype, etc\n // e.g. the method for super might not be the same as the method for the prototype which might be not the same\n // as the method for the instance\n const newDefinition = createDefinition(this, methodName, enumerable, mixins, value)\n Object.defineProperty(this, methodName, newDefinition)\n }\n },\n configurable: true,\n enumerable: enumerable\n }\n}\n","import { PureComponent, Component } from \"react\"\nimport {\n createAtom,\n _allowStateChanges,\n Reaction,\n $mobx,\n _allowStateReadsStart,\n _allowStateReadsEnd\n} from \"mobx\"\nimport { isUsingStaticRendering } from \"mobx-react-lite\"\n\nimport { newSymbol, shallowEqual, setHiddenProp, patch } from \"./utils/utils\"\n\nconst mobxAdminProperty = $mobx || \"$mobx\" // BC\nconst mobxObserverProperty = newSymbol(\"isMobXReactObserver\")\nconst mobxIsUnmounted = newSymbol(\"isUnmounted\")\nconst skipRenderKey = newSymbol(\"skipRender\")\nconst isForcingUpdateKey = newSymbol(\"isForcingUpdate\")\n\nexport function makeClassComponentObserver(\n componentClass: React.ComponentClass<any, any>\n): React.ComponentClass<any, any> {\n const target = componentClass.prototype\n\n if (componentClass[mobxObserverProperty]) {\n const displayName = getDisplayName(target)\n console.warn(\n `The provided component class (${displayName})\n has already been declared as an observer component.`\n )\n } else {\n componentClass[mobxObserverProperty] = true\n }\n\n if (target.componentWillReact) {\n throw new Error(\"The componentWillReact life-cycle event is no longer supported\")\n }\n if (componentClass[\"__proto__\"] !== PureComponent) {\n if (!target.shouldComponentUpdate) {\n target.shouldComponentUpdate = observerSCU\n } else if (target.shouldComponentUpdate !== observerSCU) {\n // n.b. unequal check, instead of existence check, as @observer might be on superclass as well\n throw new Error(\n \"It is not allowed to use shouldComponentUpdate in observer based components.\"\n )\n }\n }\n\n // this.props and this.state are made observable, just to make sure @computed fields that\n // are defined inside the component, and which rely on state or props, re-compute if state or props change\n // (otherwise the computed wouldn't update and become stale on props change, since props are not observable)\n // However, this solution is not without it's own problems: https://github.com/mobxjs/mobx-react/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Aobservable-props-or-not+\n makeObservableProp(target, \"props\")\n makeObservableProp(target, \"state\")\n if (componentClass.contextType) {\n makeObservableProp(target, \"context\")\n }\n\n const originalRender = target.render\n if (typeof originalRender !== \"function\") {\n const displayName = getDisplayName(target)\n throw new Error(\n `[mobx-react] class component (${displayName}) is missing \\`render\\` method.` +\n `\\n\\`observer\\` requires \\`render\\` being a function defined on prototype.` +\n `\\n\\`render = () => {}\\` or \\`render = function() {}\\` is not supported.`\n )\n }\n target.render = function () {\n this.render = isUsingStaticRendering()\n ? originalRender\n : createReactiveRender.call(this, originalRender)\n return this.render()\n }\n patch(target, \"componentDidMount\", function () {\n this[mobxIsUnmounted] = false\n if (!this.render[mobxAdminProperty]) {\n // Reaction is re-created automatically during render, but a component can re-mount and skip render #3395.\n // To re-create the reaction and re-subscribe to relevant observables we have to force an update.\n Component.prototype.forceUpdate.call(this)\n }\n })\n patch(target, \"componentWillUnmount\", function () {\n if (isUsingStaticRendering()) {\n return\n }\n\n const reaction = this.render[mobxAdminProperty]\n if (reaction) {\n reaction.dispose()\n // Forces reaction to be re-created on next render\n this.render[mobxAdminProperty] = null\n } else {\n // Render may have been hot-swapped and/or overridden by a subclass.\n const displayName = getDisplayName(this)\n console.warn(\n `The reactive render of an observer class component (${displayName})\n was overridden after MobX attached. This may result in a memory leak if the\n overridden reactive render was not properly disposed.`\n )\n }\n\n this[mobxIsUnmounted] = true\n })\n return componentClass\n}\n\n// Generates a friendly name for debugging\nfunction getDisplayName(comp: any) {\n return (\n comp.displayName ||\n comp.name ||\n (comp.constructor && (comp.constructor.displayName || comp.constructor.name)) ||\n \"<component>\"\n )\n}\n\nfunction createReactiveRender(originalRender: any) {\n /**\n * If props are shallowly modified, react will render anyway,\n * so atom.reportChanged() should not result in yet another re-render\n */\n setHiddenProp(this, skipRenderKey, false)\n /**\n * forceUpdate will re-assign this.props. We don't want that to cause a loop,\n * so detect these changes\n */\n setHiddenProp(this, isForcingUpdateKey, false)\n\n const initialName = getDisplayName(this)\n const boundOriginalRender = originalRender.bind(this)\n\n let isRenderingPending = false\n\n const createReaction = () => {\n const reaction = new Reaction(`${initialName}.render()`, () => {\n if (!isRenderingPending) {\n // N.B. Getting here *before mounting* means that a component constructor has side effects (see the relevant test in misc.test.tsx)\n // This unidiomatic React usage but React will correctly warn about this so we continue as usual\n // See #85 / Pull #44\n isRenderingPending = true\n if (this[mobxIsUnmounted] !== true) {\n let hasError = true\n try {\n setHiddenProp(this, isForcingUpdateKey, true)\n if (!this[skipRenderKey]) {\n Component.prototype.forceUpdate.call(this)\n }\n hasError = false\n } finally {\n setHiddenProp(this, isForcingUpdateKey, false)\n if (hasError) {\n reaction.dispose()\n // Forces reaction to be re-created on next render\n this.render[mobxAdminProperty] = null\n }\n }\n }\n }\n })\n reaction[\"reactComponent\"] = this\n return reaction\n }\n\n function reactiveRender() {\n isRenderingPending = false\n // Create reaction lazily to support re-mounting #3395\n const reaction = (reactiveRender[mobxAdminProperty] ??= createReaction())\n let exception: unknown = undefined\n let rendering = undefined\n reaction.track(() => {\n try {\n // TODO@major\n // Optimization: replace with _allowStateChangesStart/End (not available in mobx@6.0.0)\n rendering = _allowStateChanges(false, boundOriginalRender)\n } catch (e) {\n exception = e\n }\n })\n if (exception) {\n throw exception\n }\n return rendering\n }\n\n return reactiveRender\n}\n\nfunction observerSCU(nextProps: React.ClassAttributes<any>, nextState: any): boolean {\n if (isUsingStaticRendering()) {\n console.warn(\n \"[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side.\"\n )\n }\n // update on any state changes (as is the default)\n if (this.state !== nextState) {\n return true\n }\n // update if props are shallowly not equal, inspired by PureRenderMixin\n // we could return just 'false' here, and avoid the `skipRender` checks etc\n // however, it is nicer if lifecycle events are triggered like usually,\n // so we return true here if props are shallowly modified.\n return !shallowEqual(this.props, nextProps)\n}\n\nfunction makeObservableProp(target: any, propName: string): void {\n const valueHolderKey = newSymbol(`reactProp_${propName}_valueHolder`)\n const atomHolderKey = newSymbol(`reactProp_${propName}_atomHolder`)\n function getAtom() {\n if (!this[atomHolderKey]) {\n setHiddenProp(this, atomHolderKey, createAtom(\"reactive \" + propName))\n }\n return this[atomHolderKey]\n }\n Object.defineProperty(target, propName, {\n configurable: true,\n enumerable: true,\n get: function () {\n let prevReadState = false\n\n // Why this check? BC?\n // @ts-expect-error\n if (_allowStateReadsStart && _allowStateReadsEnd) {\n prevReadState = _allowStateReadsStart(true)\n }\n getAtom.call(this).reportObserved()\n\n // Why this check? BC?\n // @ts-expect-error\n if (_allowStateReadsStart && _allowStateReadsEnd) {\n _allowStateReadsEnd(prevReadState)\n }\n\n return this[valueHolderKey]\n },\n set: function set(v) {\n if (!this[isForcingUpdateKey] && !shallowEqual(this[valueHolderKey], v)) {\n setHiddenProp(this, valueHolderKey, v)\n setHiddenProp(this, skipRenderKey, true)\n getAtom.call(this).reportChanged()\n setHiddenProp(this, skipRenderKey, false)\n } else {\n setHiddenProp(this, valueHolderKey, v)\n }\n }\n })\n}\n","import * as React from \"react\"\nimport { observer as observerLite } from \"mobx-react-lite\"\n\nimport { makeClassComponentObserver } from \"./observerClass\"\nimport { IReactComponent } from \"./types/IReactComponent\"\n\n/**\n * Observer function / decorator\n */\nexport function observer<T extends IReactComponent>(component: T): T {\n if (component[\"isMobxInjector\"] === true) {\n console.warn(\n \"Mobx observer: You are trying to use `observer` on a component that already has `inject`. Please apply `observer` before applying `inject`\"\n )\n }\n\n if (\n Object.prototype.isPrototypeOf.call(React.Component, component) ||\n Object.prototype.isPrototypeOf.call(React.PureComponent, component)\n ) {\n // Class component\n return makeClassComponentObserver(component as React.ComponentClass<any, any>) as T\n } else {\n // Function component\n return observerLite(component as React.FunctionComponent<any>) as T\n }\n}\n","import { observable } from \"mobx\"\nimport { Component } from \"react\"\n\nif (!Component) throw new Error(\"mobx-react requires React to be available\")\nif (!observable) throw new Error(\"mobx-react requires mobx to be available\")\n\nexport {\n Observer,\n useObserver,\n useAsObservableSource,\n useLocalStore,\n isUsingStaticRendering,\n useStaticRendering,\n enableStaticRendering,\n observerBatching,\n useLocalObservable\n} from \"mobx-react-lite\"\n\nexport { observer } from \"./observer\"\n\nexport { MobXProviderContext, Provider, ProviderProps } from \"./Provider\"\nexport { inject } from \"./inject\"\nexport { disposeOnUnmount } from \"./disposeOnUnmount\"\nexport { PropTypes } from \"./propTypes\"\nexport { IWrappedComponent } from \"./types/IWrappedComponent\"\n","const niceErrors = {\n 0: `Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,\n 1(annotationType, key: PropertyKey) {\n return `Cannot apply '${annotationType}' to '${key.toString()}': Field not found.`\n },\n /*\n 2(prop) {\n return `invalid decorator for '${prop.toString()}'`\n },\n 3(prop) {\n return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\n },\n 4(prop) {\n return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\n },\n */\n 5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n 6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n 7: \"'entries()' can only be used on observable objects, arrays and maps\",\n 8: \"'set()' can only be used on observable objects, arrays and maps\",\n 9: \"'remove()' can only be used on observable objects, arrays and maps\",\n 10: \"'has()' can only be used on observable objects, arrays and maps\",\n 11: \"'get()' can only be used on observable objects, arrays and maps\",\n 12: `Invalid annotation`,\n 13: `Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,\n 14: \"Intercept handlers should return nothing or a change object\",\n 15: `Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,\n 16: `Modification exception: the internal structure of an observable array was changed.`,\n 17(index, length) {\n return `[mobx.array] Index out of bounds, ${index} is larger than ${length}`\n },\n 18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n 19(other) {\n return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name\n },\n 20(other) {\n return \"Cannot initialize map from \" + other\n },\n 21(dataStructure) {\n return `Cannot convert to map from '${dataStructure}'`\n },\n 22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n 23: \"It is not possible to get index atoms from arrays\",\n 24(thing) {\n return \"Cannot obtain administration from \" + thing\n },\n 25(property, name) {\n return `the entry '${property}' does not exist in the observable map '${name}'`\n },\n 26: \"please specify a property\",\n 27(property, name) {\n return `no observable property '${property.toString()}' found on the observable object '${name}'`\n },\n 28(thing) {\n return \"Cannot obtain atom from \" + thing\n },\n 29: \"Expecting some object\",\n 30: \"invalid action stack. did you forget to finish an action?\",\n 31: \"missing option for computed: get\",\n 32(name, derivation) {\n return `Cycle detected in computation ${name}: ${derivation}`\n },\n 33(name) {\n return `The setter of computed value '${name}' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`\n },\n 34(name) {\n return `[ComputedValue '${name}'] It is not possible to assign a new value to a computed value.`\n },\n 35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n 36: \"isolateGlobalState should be called before MobX is running any reactions\",\n 37(method) {\n return `[mobx] \\`observableArray.${method}()\\` mutates the array in-place, which is not allowed inside a derivation. Use \\`array.slice().${method}()\\` instead`\n },\n 38: \"'ownKeys()' can only be used on observable objects\",\n 39: \"'defineProperty()' can only be used on observable objects\"\n} as const\n\nconst errors: typeof niceErrors = __DEV__ ? niceErrors : ({} as any)\n\nexport function die(error: string | keyof typeof errors, ...args: any[]): never {\n if (__DEV__) {\n let e: any = typeof error === \"string\" ? error : errors[error]\n if (typeof e === \"function\") e = e.apply(null, args as any)\n throw new Error(`[MobX] ${e}`)\n }\n throw new Error(\n typeof error === \"number\"\n ? `[MobX] minified error nr: ${error}${\n args.length ? \" \" + args.map(String).join(\",\") : \"\"\n }. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`\n : `[MobX] ${error}`\n )\n}\n","declare const window: any\ndeclare const self: any\n\nconst mockGlobal = {}\n\nexport function getGlobal() {\n if (typeof globalThis !== \"undefined\") {\n return globalThis\n }\n if (typeof window !== \"undefined\") {\n return window\n }\n if (typeof global !== \"undefined\") {\n return global\n }\n if (typeof self !== \"undefined\") {\n return self\n }\n return mockGlobal\n}\n","import { globalState, die } from \"../internal\"\n\n// We shorten anything used > 5 times\nexport const assign = Object.assign\nexport const getDescriptor = Object.getOwnPropertyDescriptor\nexport const defineProperty = Object.defineProperty\nexport const objectPrototype = Object.prototype\n\nexport const EMPTY_ARRAY = []\nObject.freeze(EMPTY_ARRAY)\n\nexport const EMPTY_OBJECT = {}\nObject.freeze(EMPTY_OBJECT)\n\nexport interface Lambda {\n (): void\n name?: string\n}\n\nconst hasProxy = typeof Proxy !== \"undefined\"\nconst plainObjectString = Object.toString()\n\nexport function assertProxies() {\n if (!hasProxy) {\n die(\n __DEV__\n ? \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\"\n : \"Proxy not available\"\n )\n }\n}\n\nexport function warnAboutProxyRequirement(msg: string) {\n if (__DEV__ && globalState.verifyProxies) {\n die(\n \"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" +\n msg\n )\n }\n}\n\nexport function getNextId() {\n return ++globalState.mobxGuid\n}\n\n/**\n * Makes sure that the provided function is invoked at most once.\n */\nexport function once(func: Lambda): Lambda {\n let invoked = false\n return function () {\n if (invoked) {\n return\n }\n invoked = true\n return (func as any).apply(this, arguments)\n }\n}\n\nexport const noop = () => {}\n\nexport function isFunction(fn: any): fn is Function {\n return typeof fn === \"function\"\n}\n\nexport function isString(value: any): value is string {\n return typeof value === \"string\"\n}\n\nexport function isStringish(value: any): value is string | number | symbol {\n const t = typeof value\n switch (t) {\n case \"string\":\n case \"symbol\":\n case \"number\":\n return true\n }\n return false\n}\n\nexport function isObject(value: any): value is Object {\n return value !== null && typeof value === \"object\"\n}\n\nexport function isPlainObject(value: any) {\n if (!isObject(value)) {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n if (proto == null) {\n return true\n }\n const protoConstructor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n return (\n typeof protoConstructor === \"function\" && protoConstructor.toString() === plainObjectString\n )\n}\n\n// https://stackoverflow.com/a/37865170\nexport function isGenerator(obj: any): boolean {\n const constructor = obj?.constructor\n if (!constructor) {\n return false\n }\n if (\n \"GeneratorFunction\" === constructor.name ||\n \"GeneratorFunction\" === constructor.displayName\n ) {\n return true\n }\n return false\n}\n\nexport function addHiddenProp(object: any, propName: PropertyKey, value: any) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value\n })\n}\n\nexport function addHiddenFinalProp(object: any, propName: PropertyKey, value: any) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value\n })\n}\n\nexport function createInstanceofPredicate<T>(\n name: string,\n theClass: new (...args: any[]) => T\n): (x: any) => x is T {\n const propName = \"isMobX\" + name\n theClass.prototype[propName] = true\n return function (x) {\n return isObject(x) && x[propName] === true\n } as any\n}\n\nexport function isES6Map(thing: any): thing is Map<any, any> {\n return thing instanceof Map\n}\n\nexport function isES6Set(thing: any): thing is Set<any> {\n return thing instanceof Set\n}\n\nconst hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\"\n\n/**\n * Returns the following: own enumerable keys and symbols.\n */\nexport function getPlainObjectKeys(object: any) {\n const keys = Object.keys(object)\n // Not supported in IE, so there are not going to be symbol props anyway...\n if (!hasGetOwnPropertySymbols) {\n return keys\n }\n const symbols = Object.getOwnPropertySymbols(object)\n if (!symbols.length) {\n return keys\n }\n return [...keys, ...symbols.filter(s => objectPrototype.propertyIsEnumerable.call(object, s))]\n}\n\n// From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nexport const ownKeys: (target: any) => Array<string | symbol> =\n typeof Reflect !== \"undefined\" && Reflect.ownKeys\n ? Reflect.ownKeys\n : hasGetOwnPropertySymbols\n ? obj => Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj) as any)\n : /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport function stringifyKey(key: any): string {\n if (typeof key === \"string\") {\n return key\n }\n if (typeof key === \"symbol\") {\n return key.toString()\n }\n return new String(key).toString()\n}\n\nexport function toPrimitive(value: any) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value\n}\n\nexport function hasProp(target: Object, prop: PropertyKey): boolean {\n return objectPrototype.hasOwnProperty.call(target, prop)\n}\n\n// From Immer utils\nexport const getOwnPropertyDescriptors =\n Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(target: any) {\n // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n const res: any = {}\n // Note: without polyfill for ownKeys, symbols won't be picked up\n ownKeys(target).forEach(key => {\n res[key] = getDescriptor(target, key)\n })\n return res\n }\n","import { Annotation, addHiddenProp, AnnotationsMap, hasProp, die, isOverride } from \"../internal\"\n\nexport const storedAnnotationsSymbol = Symbol(\"mobx-stored-annotations\")\n\n/**\n * Creates a function that acts as\n * - decorator\n * - annotation object\n */\nexport function createDecoratorAnnotation(annotation: Annotation): PropertyDecorator & Annotation {\n function decorator(target, property) {\n storeAnnotation(target, property, annotation)\n }\n return Object.assign(decorator, annotation)\n}\n\n/**\n * Stores annotation to prototype,\n * so it can be inspected later by `makeObservable` called from constructor\n */\nexport function storeAnnotation(prototype: any, key: PropertyKey, annotation: Annotation) {\n if (!hasProp(prototype, storedAnnotationsSymbol)) {\n addHiddenProp(prototype, storedAnnotationsSymbol, {\n // Inherit annotations\n ...prototype[storedAnnotationsSymbol]\n })\n }\n // @override must override something\n if (__DEV__ && isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n die(\n `'${fieldName}' is decorated with 'override', ` +\n `but no such decorated member was found on prototype.`\n )\n }\n // Cannot re-decorate\n assertNotDecorated(prototype, annotation, key)\n\n // Ignore override\n if (!isOverride(annotation)) {\n prototype[storedAnnotationsSymbol][key] = annotation\n }\n}\n\nfunction assertNotDecorated(prototype: object, annotation: Annotation, key: PropertyKey) {\n if (__DEV__ && !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n const currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_\n const requestedAnnotationType = annotation.annotationType_\n die(\n `Cannot apply '@${requestedAnnotationType}' to '${fieldName}':` +\n `\\nThe field is already decorated with '@${currentAnnotationType}'.` +\n `\\nRe-decorating fields is not allowed.` +\n `\\nUse '@override' decorator for methods overridden by subclass.`\n )\n }\n}\n\n/**\n * Collects annotations from prototypes and stores them on target (instance)\n */\nexport function collectStoredAnnotations(target): AnnotationsMap<any, any> {\n if (!hasProp(target, storedAnnotationsSymbol)) {\n if (__DEV__ && !target[storedAnnotationsSymbol]) {\n die(\n `No annotations were passed to makeObservable, but no decorated members have been found either`\n )\n }\n // We need a copy as we will remove annotation from the list once it's applied.\n addHiddenProp(target, storedAnnotationsSymbol, { ...target[storedAnnotationsSymbol] })\n }\n return target[storedAnnotationsSymbol]\n}\n","import {\n die,\n Annotation,\n hasProp,\n createDecoratorAnnotation,\n ObservableObjectAdministration,\n MakeResult\n} from \"../internal\"\n\nconst OVERRIDE = \"override\"\n\nexport const override: Annotation & PropertyDecorator = createDecoratorAnnotation({\n annotationType_: OVERRIDE,\n make_,\n extend_\n})\n\nexport function isOverride(annotation: Annotation): boolean {\n return annotation.annotationType_ === OVERRIDE\n}\n\nfunction make_(adm: ObservableObjectAdministration, key): MakeResult {\n // Must not be plain object\n if (__DEV__ && adm.isPlainObject_) {\n die(\n `Cannot apply '${this.annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${this.annotationType_}' cannot be used on plain objects.`\n )\n }\n // Must override something\n if (__DEV__ && !hasProp(adm.appliedAnnotations_!, key)) {\n die(\n `'${adm.name_}.${key.toString()}' is annotated with '${this.annotationType_}', ` +\n `but no such annotated member was found on prototype.`\n )\n }\n return MakeResult.Cancel\n}\n\nfunction extend_(adm, key, descriptor, proxyTrap): boolean {\n die(`'${this.annotationType_}' can only be used with 'makeObservable'`)\n}\n","import {\n IDerivationState_,\n IObservable,\n IDerivation,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n noop,\n onBecomeObserved,\n onBecomeUnobserved,\n propagateChanged,\n reportObserved,\n startBatch,\n Lambda,\n globalState\n} from \"../internal\"\n\nexport const $mobx = Symbol(\"mobx administration\")\n\nexport interface IAtom extends IObservable {\n reportObserved(): boolean\n reportChanged()\n}\n\nexport class Atom implements IAtom {\n isPendingUnobservation_ = false // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n isBeingObserved_ = false\n observers_ = new Set<IDerivation>()\n\n diffValue_ = 0\n lastAccessedBy_ = 0\n lowestObserverState_ = IDerivationState_.NOT_TRACKING_\n /**\n * Create a new atom. For debugging purposes it is recommended to give it a name.\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\n */\n constructor(public name_ = __DEV__ ? \"Atom@\" + getNextId() : \"Atom\") {}\n\n // onBecomeObservedListeners\n public onBOL: Set<Lambda> | undefined\n // onBecomeUnobservedListeners\n public onBUOL: Set<Lambda> | undefined\n\n public onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(listener => listener())\n }\n }\n\n public onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(listener => listener())\n }\n }\n\n /**\n * Invoke this method to notify mobx that your atom has been used somehow.\n * Returns true if there is currently a reactive context.\n */\n public reportObserved(): boolean {\n return reportObserved(this)\n }\n\n /**\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\n */\n public reportChanged() {\n startBatch()\n propagateChanged(this)\n // We could update state version only at the end of batch,\n // but we would still have to switch some global flag here to signal a change.\n globalState.stateVersion =\n globalState.stateVersion < Number.MAX_SAFE_INTEGER\n ? globalState.stateVersion + 1\n : Number.MIN_SAFE_INTEGER\n endBatch()\n }\n\n toString() {\n return this.name_\n }\n}\n\nexport const isAtom = createInstanceofPredicate(\"Atom\", Atom)\n\nexport function createAtom(\n name: string,\n onBecomeObservedHandler: () => void = noop,\n onBecomeUnobservedHandler: () => void = noop\n): IAtom {\n const atom = new Atom(name)\n // default `noop` listener will not initialize the hook Set\n if (onBecomeObservedHandler !== noop) {\n onBecomeObserved(atom, onBecomeObservedHandler)\n }\n\n if (onBecomeUnobservedHandler !== noop) {\n onBecomeUnobserved(atom, onBecomeUnobservedHandler)\n }\n return atom\n}\n","import {\n IComputedValue,\n IObservable,\n IObservableArray,\n Lambda,\n ObservableMap,\n getAtom,\n ObservableSet,\n isFunction,\n IObservableValue\n} from \"../internal\"\n\nconst ON_BECOME_OBSERVED = \"onBO\"\nconst ON_BECOME_UNOBSERVED = \"onBUO\"\n\nexport function onBecomeObserved(\n value:\n | IObservable\n | IComputedValue<any>\n | IObservableArray<any>\n | ObservableMap<any, any>\n | ObservableSet<any>\n | IObservableValue<any>,\n listener: Lambda\n): Lambda\nexport function onBecomeObserved<K, V = any>(\n value: ObservableMap<K, V> | Object,\n property: K,\n listener: Lambda\n): Lambda\nexport function onBecomeObserved(thing, arg2, arg3?): Lambda {\n return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3)\n}\n\nexport function onBecomeUnobserved(\n value:\n | IObservable\n | IComputedValue<any>\n | IObservableArray<any>\n | ObservableMap<any, any>\n | ObservableSet<any>\n | IObservableValue<any>,\n listener: Lambda\n): Lambda\nexport function onBecomeUnobserved<K, V = any>(\n value: ObservableMap<K, V> | Object,\n property: K,\n listener: Lambda\n): Lambda\nexport function onBecomeUnobserved(thing, arg2, arg3?): Lambda {\n return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3)\n}\n\nfunction interceptHook(hook: \"onBO\" | \"onBUO\", thing, arg2, arg3) {\n const atom: IObservable =\n typeof arg3 === \"function\" ? getAtom(thing, arg2) : (getAtom(thing) as any)\n const cb = isFunction(arg3) ? arg3 : arg2\n const listenersKey = `${hook}L` as \"onBOL\" | \"onBUOL\"\n\n if (atom[listenersKey]) {\n atom[listenersKey]!.add(cb)\n } else {\n atom[listenersKey] = new Set<Lambda>([cb])\n }\n\n return function () {\n const hookListeners = atom[listenersKey]\n if (hookListeners) {\n hookListeners.delete(cb)\n if (hookListeners.size === 0) {\n delete atom[listenersKey]\n }\n }\n }\n}\n","import { deepEqual } from \"../internal\"\n\nexport interface IEqualsComparer<T> {\n (a: T, b: T): boolean\n}\n\nfunction identityComparer(a: any, b: any): boolean {\n return a === b\n}\n\nfunction structuralComparer(a: any, b: any): boolean {\n return deepEqual(a, b)\n}\n\nfunction shallowComparer(a: any, b: any): boolean {\n return deepEqual(a, b, 1)\n}\n\nfunction defaultComparer(a: any, b: any): boolean {\n if (Object.is) {\n return Object.is(a, b)\n }\n\n return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b\n}\n\nexport const comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n default: defaultComparer,\n shallow: shallowComparer\n}\n","import {\n deepEqual,\n isES6Map,\n isES6Set,\n isObservable,\n isObservableArray,\n isObservableMap,\n isObservableSet,\n isObservableObject,\n isPlainObject,\n observable,\n die,\n isAction,\n autoAction,\n flow,\n isFlow,\n isGenerator\n} from \"../internal\"\n\nexport interface IEnhancer<T> {\n (newValue: T, oldValue: T | undefined, name: string): T\n}\n\nexport function deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v)) {\n return v\n }\n\n // something that can be converted and mutated?\n if (Array.isArray(v)) {\n return observable.array(v, { name })\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, { name })\n }\n if (isES6Map(v)) {\n return observable.map(v, { name })\n }\n if (isES6Set(v)) {\n return observable.set(v, { name })\n }\n if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n if (isGenerator(v)) {\n return flow(v)\n } else {\n return autoAction(name, v)\n }\n }\n return v\n}\n\nexport function shallowEnhancer(v, _, name): any {\n if (v === undefined || v === null) {\n return v\n }\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) {\n return v\n }\n if (Array.isArray(v)) {\n return observable.array(v, { name, deep: false })\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, { name, deep: false })\n }\n if (isES6Map(v)) {\n return observable.map(v, { name, deep: false })\n }\n if (isES6Set(v)) {\n return observable.set(v, { name, deep: false })\n }\n\n if (__DEV__) {\n die(\n \"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\"\n )\n }\n}\n\nexport function referenceEnhancer(newValue?) {\n // never turn into an observable\n return newValue\n}\n\nexport function refStructEnhancer(v, oldValue): any {\n if (__DEV__ && isObservable(v)) {\n die(`observable.struct should not be used with observable values`)\n }\n if (deepEqual(v, oldValue)) {\n return oldValue\n }\n return v\n}\n","import {\n ObservableObjectAdministration,\n createAction,\n isAction,\n defineProperty,\n die,\n isFunction,\n Annotation,\n globalState,\n MakeResult\n} from \"../internal\"\n\nexport function createActionAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // bound\n if (this.options_?.bound) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Break\n }\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // prototype\n if (isAction(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return MakeResult.Break\n }\n const actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false)\n defineProperty(source, key, actionDescriptor)\n return MakeResult.Continue\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n const actionDescriptor = createActionDescriptor(adm, this, key, descriptor)\n return adm.defineProperty_(key, actionDescriptor, proxyTrap)\n}\n\nfunction assertActionDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { value }: PropertyDescriptor\n) {\n if (__DEV__ && !isFunction(value)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on properties with a function value.`\n )\n }\n}\n\nexport function createActionDescriptor(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n // provides ability to disable safeDescriptors for prototypes\n safeDescriptors: boolean = globalState.safeDescriptors\n) {\n assertActionDescriptor(adm, annotation, key, descriptor)\n let { value } = descriptor\n if (annotation.options_?.bound) {\n value = value.bind(adm.proxy_ ?? adm.target_)\n }\n return {\n value: createAction(\n annotation.options_?.name ?? key.toString(),\n value,\n annotation.options_?.autoAction ?? false,\n // https://github.com/mobxjs/mobx/discussions/3140\n annotation.options_?.bound ? adm.proxy_ ?? adm.target_ : undefined\n ),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n }\n}\n","import {\n ObservableObjectAdministration,\n Annotation,\n defineProperty,\n die,\n flow,\n isFlow,\n isFunction,\n globalState,\n MakeResult,\n hasProp\n} from \"../internal\"\n\nexport function createFlowAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // prototype\n // bound - must annotate protos to support super.flow()\n if (this.options_?.bound && (!hasProp(adm.target_, key) || !isFlow(adm.target_[key]))) {\n if (this.extend_(adm, key, descriptor, false) === null) {\n return MakeResult.Cancel\n }\n }\n if (isFlow(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return MakeResult.Break\n }\n const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false)\n defineProperty(source, key, flowDescriptor)\n return MakeResult.Continue\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, this.options_?.bound)\n return adm.defineProperty_(key, flowDescriptor, proxyTrap)\n}\n\nfunction assertFlowDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { value }: PropertyDescriptor\n) {\n if (__DEV__ && !isFunction(value)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on properties with a generator function value.`\n )\n }\n}\n\nfunction createFlowDescriptor(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n bound: boolean,\n // provides ability to disable safeDescriptors for prototypes\n safeDescriptors: boolean = globalState.safeDescriptors\n): PropertyDescriptor {\n assertFlowDescriptor(adm, annotation, key, descriptor)\n let { value } = descriptor\n // In case of flow.bound, the descriptor can be from already annotated prototype\n if (!isFlow(value)) {\n value = flow(value)\n }\n if (bound) {\n // We do not keep original function around, so we bind the existing flow\n value = value.bind(adm.proxy_ ?? adm.target_)\n // This is normally set by `flow`, but `bind` returns new function...\n value.isMobXFlow = true\n }\n return {\n value,\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n }\n}\n","import { ObservableObjectAdministration, die, Annotation, MakeResult } from \"../internal\"\n\nexport function createComputedAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n): MakeResult {\n return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n assertComputedDescriptor(adm, this, key, descriptor)\n return adm.defineComputedProperty_(\n key,\n {\n ...this.options_,\n get: descriptor.get,\n set: descriptor.set\n },\n proxyTrap\n )\n}\n\nfunction assertComputedDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { get }: PropertyDescriptor\n) {\n if (__DEV__ && !get) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on getter(+setter) properties.`\n )\n }\n}\n","import {\n ObservableObjectAdministration,\n deepEnhancer,\n die,\n Annotation,\n MakeResult\n} from \"../internal\"\n\nexport function createObservableAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n): MakeResult {\n return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n assertObservableDescriptor(adm, this, key, descriptor)\n return adm.defineObservableProperty_(\n key,\n descriptor.value,\n this.options_?.enhancer ?? deepEnhancer,\n proxyTrap\n )\n}\n\nfunction assertObservableDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n) {\n if (__DEV__ && !(\"value\" in descriptor)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' cannot be used on getter/setter properties`\n )\n }\n}\n","import {\n ObservableObjectAdministration,\n observable,\n Annotation,\n defineProperty,\n createAction,\n globalState,\n flow,\n computed,\n autoAction,\n isGenerator,\n MakeResult\n} from \"../internal\"\n\nconst AUTO = \"true\"\n\nexport const autoAnnotation: Annotation = createAutoAnnotation()\n\nexport function createAutoAnnotation(options?: object): Annotation {\n return {\n annotationType_: AUTO,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // getter -> computed\n if (descriptor.get) {\n return computed.make_(adm, key, descriptor, source)\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.make_\n const set = createAction(key.toString(), descriptor.set) as (v: any) => void\n // own\n if (source === adm.target_) {\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set\n }) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // proto\n defineProperty(source, key, {\n configurable: true,\n set\n })\n return MakeResult.Continue\n }\n // function on proto -> autoAction/flow\n if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n if (isGenerator(descriptor.value)) {\n const flowAnnotation = this.options_?.autoBind ? flow.bound : flow\n return flowAnnotation.make_(adm, key, descriptor, source)\n }\n const actionAnnotation = this.options_?.autoBind ? autoAction.bound : autoAction\n return actionAnnotation.make_(adm, key, descriptor, source)\n }\n // other -> observable\n // Copy props from proto as well, see test:\n // \"decorate should work with Object.create\"\n let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n }\n return observableAnnotation.make_(adm, key, descriptor, source)\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n // getter -> computed\n if (descriptor.get) {\n return computed.extend_(adm, key, descriptor, proxyTrap)\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.extend_\n return adm.defineProperty_(\n key,\n {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: createAction(key.toString(), descriptor.set) as (v: any) => void\n },\n proxyTrap\n )\n }\n // other -> observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n }\n let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n return observableAnnotation.extend_(adm, key, descriptor, proxyTrap)\n}\n","import {\n IEnhancer,\n IEqualsComparer,\n IObservableArray,\n IObservableMapInitialValues,\n IObservableSetInitialValues,\n IObservableValue,\n ObservableMap,\n ObservableSet,\n ObservableValue,\n asDynamicObservableObject,\n createObservableArray,\n deepEnhancer,\n extendObservable,\n isES6Map,\n isES6Set,\n isObservable,\n isPlainObject,\n referenceEnhancer,\n Annotation,\n shallowEnhancer,\n refStructEnhancer,\n AnnotationsMap,\n asObservableObject,\n storeAnnotation,\n createDecoratorAnnotation,\n createLegacyArray,\n globalState,\n assign,\n isStringish,\n createObservableAnnotation,\n createAutoAnnotation\n} from \"../internal\"\n\nexport const OBSERVABLE = \"observable\"\nexport const OBSERVABLE_REF = \"observable.ref\"\nexport const OBSERVABLE_SHALLOW = \"observable.shallow\"\nexport const OBSERVABLE_STRUCT = \"observable.struct\"\n\nexport type CreateObservableOptions = {\n name?: string\n equals?: IEqualsComparer<any>\n deep?: boolean\n defaultDecorator?: Annotation\n proxy?: boolean\n autoBind?: boolean\n}\n\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nexport const defaultCreateObservableOptions: CreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined,\n proxy: true\n}\nObject.freeze(defaultCreateObservableOptions)\n\nexport function asCreateObservableOptions(thing: any): CreateObservableOptions {\n return thing || defaultCreateObservableOptions\n}\n\nconst observableAnnotation = createObservableAnnotation(OBSERVABLE)\nconst observableRefAnnotation = createObservableAnnotation(OBSERVABLE_REF, {\n enhancer: referenceEnhancer\n})\nconst observableShallowAnnotation = createObservableAnnotation(OBSERVABLE_SHALLOW, {\n enhancer: shallowEnhancer\n})\nconst observableStructAnnotation = createObservableAnnotation(OBSERVABLE_STRUCT, {\n enhancer: refStructEnhancer\n})\nconst observableDecoratorAnnotation = createDecoratorAnnotation(observableAnnotation)\n\nexport function getEnhancerFromOptions(options: CreateObservableOptions): IEnhancer<any> {\n return options.deep === true\n ? deepEnhancer\n : options.deep === false\n ? referenceEnhancer\n : getEnhancerFromAnnotation(options.defaultDecorator)\n}\n\nexport function getAnnotationFromOptions(\n options?: CreateObservableOptions\n): Annotation | undefined {\n return options ? options.defaultDecorator ?? createAutoAnnotation(options) : undefined\n}\n\nexport function getEnhancerFromAnnotation(annotation?: Annotation): IEnhancer<any> {\n return !annotation ? deepEnhancer : annotation.options_?.enhancer ?? deepEnhancer\n}\n\n/**\n * Turns an object, array or function into a reactive structure.\n * @param v the value which should become observable.\n */\nfunction createObservable(v: any, arg2?: any, arg3?: any) {\n // @observable someProp;\n if (isStringish(arg2)) {\n storeAnnotation(v, arg2, observableAnnotation)\n return\n }\n\n // already observable - ignore\n if (isObservable(v)) {\n return v\n }\n\n // plain object\n if (isPlainObject(v)) {\n return observable.object(v, arg2, arg3)\n }\n\n // Array\n if (Array.isArray(v)) {\n return observable.array(v, arg2)\n }\n\n // Map\n if (isES6Map(v)) {\n return observable.map(v, arg2)\n }\n\n // Set\n if (isES6Set(v)) {\n return observable.set(v, arg2)\n }\n\n // other object - ignore\n if (typeof v === \"object\" && v !== null) {\n return v\n }\n\n // anything else\n return observable.box(v, arg2)\n}\nassign(createObservable, observableDecoratorAnnotation)\n\nexport interface IObservableValueFactory {\n <T>(value: T, options?: CreateObservableOptions): IObservableValue<T>\n <T>(value?: T, options?: CreateObservableOptions): IObservableValue<T | undefined>\n}\n\nexport interface IObservableFactory extends Annotation, PropertyDecorator {\n <T = any>(value: T[], options?: CreateObservableOptions): IObservableArray<T>\n <T = any>(value: Set<T>, options?: CreateObservableOptions): ObservableSet<T>\n <K = any, V = any>(value: Map<K, V>, options?: CreateObservableOptions): ObservableMap<K, V>\n <T extends object>(\n value: T,\n decorators?: AnnotationsMap<T, never>,\n options?: CreateObservableOptions\n ): T\n\n box: IObservableValueFactory\n array: <T = any>(initialValues?: T[], options?: CreateObservableOptions) => IObservableArray<T>\n set: <T = any>(\n initialValues?: IObservableSetInitialValues<T>,\n options?: CreateObservableOptions\n ) => ObservableSet<T>\n map: <K = any, V = any>(\n initialValues?: IObservableMapInitialValues<K, V>,\n options?: CreateObservableOptions\n ) => ObservableMap<K, V>\n object: <T = any>(\n props: T,\n decorators?: AnnotationsMap<T, never>,\n options?: CreateObservableOptions\n ) => T\n\n /**\n * Decorator that creates an observable that only observes the references, but doesn't try to turn the assigned value into an observable.ts.\n */\n ref: Annotation & PropertyDecorator\n /**\n * Decorator that creates an observable converts its value (objects, maps or arrays) into a shallow observable structure\n */\n shallow: Annotation & PropertyDecorator\n deep: Annotation & PropertyDecorator\n struct: Annotation & PropertyDecorator\n}\n\nconst observableFactories: IObservableFactory = {\n box<T = any>(value: T, options?: CreateObservableOptions): IObservableValue<T> {\n const o = asCreateObservableOptions(options)\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals)\n },\n array<T = any>(initialValues?: T[], options?: CreateObservableOptions): IObservableArray<T> {\n const o = asCreateObservableOptions(options)\n return (\n globalState.useProxies === false || o.proxy === false\n ? createLegacyArray\n : createObservableArray\n )(initialValues, getEnhancerFromOptions(o), o.name)\n },\n map<K = any, V = any>(\n initialValues?: IObservableMapInitialValues<K, V>,\n options?: CreateObservableOptions\n ): ObservableMap<K, V> {\n const o = asCreateObservableOptions(options)\n return new ObservableMap<K, V>(initialValues, getEnhancerFromOptions(o), o.name)\n },\n set<T = any>(\n initialValues?: IObservableSetInitialValues<T>,\n options?: CreateObservableOptions\n ): ObservableSet<T> {\n const o = asCreateObservableOptions(options)\n return new ObservableSet<T>(initialValues, getEnhancerFromOptions(o), o.name)\n },\n object<T extends object = any>(\n props: T,\n decorators?: AnnotationsMap<T, never>,\n options?: CreateObservableOptions\n ): T {\n return extendObservable(\n globalState.useProxies === false || options?.proxy === false\n ? asObservableObject({}, options)\n : asDynamicObservableObject({}, options),\n props,\n decorators\n )\n },\n ref: createDecoratorAnnotation(observableRefAnnotation),\n shallow: createDecoratorAnnotation(observableShallowAnnotation),\n deep: observableDecoratorAnnotation,\n struct: createDecoratorAnnotation(observableStructAnnotation)\n} as any\n\n// eslint-disable-next-line\nexport var observable: IObservableFactory = assign(createObservable, observableFactories)\n","import {\n $mobx,\n IIsObservableObject,\n ObservableObjectAdministration,\n warnAboutProxyRequirement,\n assertProxies,\n die,\n isStringish,\n globalState,\n CreateObservableOptions,\n asObservableObject\n} from \"../internal\"\n\nfunction getAdm(target): ObservableObjectAdministration {\n return target[$mobx]\n}\n\n// Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nconst objectProxyTraps: ProxyHandler<any> = {\n has(target: IIsObservableObject, name: PropertyKey): boolean {\n if (__DEV__ && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\n \"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\"\n )\n }\n return getAdm(target).has_(name)\n },\n get(target: IIsObservableObject, name: PropertyKey): any {\n return getAdm(target).get_(name)\n },\n set(target: IIsObservableObject, name: PropertyKey, value: any): boolean {\n if (!isStringish(name)) {\n return false\n }\n if (__DEV__ && !getAdm(target).values_.has(name)) {\n warnAboutProxyRequirement(\n \"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\"\n )\n }\n // null (intercepted) -> true (success)\n return getAdm(target).set_(name, value, true) ?? true\n },\n deleteProperty(target: IIsObservableObject, name: PropertyKey): boolean {\n if (__DEV__) {\n warnAboutProxyRequirement(\n \"delete properties from an observable object. Use 'remove' from 'mobx' instead.\"\n )\n }\n if (!isStringish(name)) {\n return false\n }\n // null (intercepted) -> true (success)\n return getAdm(target).delete_(name, true) ?? true\n },\n defineProperty(\n target: IIsObservableObject,\n name: PropertyKey,\n descriptor: PropertyDescriptor\n ): boolean {\n if (__DEV__) {\n warnAboutProxyRequirement(\n \"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\"\n )\n }\n // null (intercepted) -> true (success)\n return getAdm(target).defineProperty_(name, descriptor) ?? true\n },\n ownKeys(target: IIsObservableObject): ArrayLike<string | symbol> {\n if (__DEV__ && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\n \"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\"\n )\n }\n return getAdm(target).ownKeys_()\n },\n preventExtensions(target) {\n die(13)\n }\n}\n\nexport function asDynamicObservableObject(\n target: any,\n options?: CreateObservableOptions\n): IIsObservableObject {\n assertProxies()\n target = asObservableObject(target, options)\n return (target[$mobx].proxy_ ??= new Proxy(target, objectProxyTraps))\n}\n","import {\n ComputedValue,\n IComputedValueOptions,\n Annotation,\n storeAnnotation,\n createDecoratorAnnotation,\n isStringish,\n isPlainObject,\n isFunction,\n die,\n IComputedValue,\n createComputedAnnotation,\n comparer\n} from \"../internal\"\n\nexport const COMPUTED = \"computed\"\nexport const COMPUTED_STRUCT = \"computed.struct\"\n\nexport interface IComputedFactory extends Annotation, PropertyDecorator {\n // @computed(opts)\n <T>(options: IComputedValueOptions<T>): Annotation & PropertyDecorator\n // computed(fn, opts)\n <T>(func: () => T, options?: IComputedValueOptions<T>): IComputedValue<T>\n\n struct: Annotation & PropertyDecorator\n}\n\nconst computedAnnotation = createComputedAnnotation(COMPUTED)\nconst computedStructAnnotation = createComputedAnnotation(COMPUTED_STRUCT, {\n equals: comparer.structural\n})\n\n/**\n * Decorator for class properties: @computed get value() { return expr; }.\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\n */\nexport const computed: IComputedFactory = function computed(arg1, arg2) {\n if (isStringish(arg2)) {\n // @computed\n return storeAnnotation(arg1, arg2, computedAnnotation)\n }\n if (isPlainObject(arg1)) {\n // @computed({ options })\n return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1))\n }\n\n // computed(expr, options?)\n if (__DEV__) {\n if (!isFunction(arg1)) {\n die(\"First argument to `computed` should be an expression.\")\n }\n if (isFunction(arg2)) {\n die(\n \"A setter as second argument is no longer supported, use `{ set: fn }` option instead\"\n )\n }\n }\n const opts: IComputedValueOptions<any> = isPlainObject(arg2) ? arg2 : {}\n opts.get = arg1\n opts.name ||= arg1.name || \"\" /* for generated name */\n\n return new ComputedValue(opts)\n} as any\n\nObject.assign(computed, computedAnnotation)\n\ncomputed.struct = createDecoratorAnnotation(computedStructAnnotation)\n","import {\n IDerivation,\n endBatch,\n globalState,\n isSpyEnabled,\n spyReportEnd,\n spyReportStart,\n startBatch,\n untrackedEnd,\n untrackedStart,\n isFunction,\n allowStateReadsStart,\n allowStateReadsEnd,\n ACTION,\n EMPTY_ARRAY,\n die,\n getDescriptor,\n defineProperty\n} from \"../internal\"\n\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nlet currentActionId = 0\nlet nextActionId = 1\nconst isFunctionNameConfigurable = getDescriptor(() => {}, \"name\")?.configurable ?? false\n\n// we can safely recycle this object\nconst tmpNameDescriptor: PropertyDescriptor = {\n value: \"action\",\n configurable: true,\n writable: false,\n enumerable: false\n}\n\nexport function createAction(\n actionName: string,\n fn: Function,\n autoAction: boolean = false,\n ref?: Object\n): Function {\n if (__DEV__) {\n if (!isFunction(fn)) {\n die(\"`action` can only be invoked on functions\")\n }\n if (typeof actionName !== \"string\" || !actionName) {\n die(`actions should have valid names, got: '${actionName}'`)\n }\n }\n function res() {\n return executeAction(actionName, autoAction, fn, ref || this, arguments)\n }\n res.isMobxAction = true\n if (isFunctionNameConfigurable) {\n tmpNameDescriptor.value = actionName\n defineProperty(res, \"name\", tmpNameDescriptor)\n }\n return res\n}\n\nexport function executeAction(\n actionName: string,\n canRunAsDerivation: boolean,\n fn: Function,\n scope?: any,\n args?: IArguments\n) {\n const runInfo = _startAction(actionName, canRunAsDerivation, scope, args)\n try {\n return fn.apply(scope, args)\n } catch (err) {\n runInfo.error_ = err\n throw err\n } finally {\n _endAction(runInfo)\n }\n}\n\nexport interface IActionRunInfo {\n prevDerivation_: IDerivation | null\n prevAllowStateChanges_: boolean\n prevAllowStateReads_: boolean\n notifySpy_: boolean\n startTime_: number\n error_?: any\n parentActionId_: number\n actionId_: number\n runAsAction_?: boolean\n}\n\nexport function _startAction(\n actionName: string,\n canRunAsDerivation: boolean, // true for autoAction\n scope: any,\n args?: IArguments\n): IActionRunInfo {\n const notifySpy_ = __DEV__ && isSpyEnabled() && !!actionName\n let startTime_: number = 0\n if (__DEV__ && notifySpy_) {\n startTime_ = Date.now()\n const flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY\n spyReportStart({\n type: ACTION,\n name: actionName,\n object: scope,\n arguments: flattenedArgs\n })\n }\n const prevDerivation_ = globalState.trackingDerivation\n const runAsAction = !canRunAsDerivation || !prevDerivation_\n startBatch()\n let prevAllowStateChanges_ = globalState.allowStateChanges // by default preserve previous allow\n if (runAsAction) {\n untrackedStart()\n prevAllowStateChanges_ = allowStateChangesStart(true)\n }\n const prevAllowStateReads_ = allowStateReadsStart(true)\n const runInfo = {\n runAsAction_: runAsAction,\n prevDerivation_,\n prevAllowStateChanges_,\n prevAllowStateReads_,\n notifySpy_,\n startTime_,\n actionId_: nextActionId++,\n parentActionId_: currentActionId\n }\n currentActionId = runInfo.actionId_\n return runInfo\n}\n\nexport function _endAction(runInfo: IActionRunInfo) {\n if (currentActionId !== runInfo.actionId_) {\n die(30)\n }\n currentActionId = runInfo.parentActionId_\n\n if (runInfo.error_ !== undefined) {\n globalState.suppressReactionErrors = true\n }\n allowStateChangesEnd(runInfo.prevAllowStateChanges_)\n allowStateReadsEnd(runInfo.prevAllowStateReads_)\n endBatch()\n if (runInfo.runAsAction_) {\n untrackedEnd(runInfo.prevDerivation_)\n }\n if (__DEV__ && runInfo.notifySpy_) {\n spyReportEnd({ time: Date.now() - runInfo.startTime_ })\n }\n globalState.suppressReactionErrors = false\n}\n\nexport function allowStateChanges<T>(allowStateChanges: boolean, func: () => T): T {\n const prev = allowStateChangesStart(allowStateChanges)\n try {\n return func()\n } finally {\n allowStateChangesEnd(prev)\n }\n}\n\nexport function allowStateChangesStart(allowStateChanges: boolean) {\n const prev = globalState.allowStateChanges\n globalState.allowStateChanges = allowStateChanges\n return prev\n}\n\nexport function allowStateChangesEnd(prev: boolean) {\n globalState.allowStateChanges = prev\n}\n","import {\n Atom,\n IEnhancer,\n IInterceptable,\n IEqualsComparer,\n IInterceptor,\n IListenable,\n Lambda,\n checkIfStateModificationsAreAllowed,\n comparer,\n createInstanceofPredicate,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isSpyEnabled,\n notifyListeners,\n registerInterceptor,\n registerListener,\n spyReport,\n spyReportEnd,\n spyReportStart,\n toPrimitive,\n globalState,\n IUNCHANGED,\n UPDATE\n} from \"../internal\"\n\nexport interface IValueWillChange<T> {\n object: IObservableValue<T>\n type: \"update\"\n newValue: T\n}\n\nexport type IValueDidChange<T = any> = {\n type: \"update\"\n observableKind: \"value\"\n object: IObservableValue<T>\n debugObjectName: string\n newValue: T\n oldValue: T | undefined\n}\nexport type IBoxDidChange<T = any> =\n | {\n type: \"create\"\n observableKind: \"value\"\n object: IObservableValue<T>\n debugObjectName: string\n newValue: T\n }\n | IValueDidChange<T>\n\nexport interface IObservableValue<T> {\n get(): T\n set(value: T): void\n}\n\nconst CREATE = \"create\"\n\nexport class ObservableValue<T>\n extends Atom\n implements IObservableValue<T>, IInterceptable<IValueWillChange<T>>, IListenable\n{\n hasUnreportedChange_ = false\n interceptors_\n changeListeners_\n value_\n dehancer: any\n\n constructor(\n value: T,\n public enhancer: IEnhancer<T>,\n public name_ = __DEV__ ? \"ObservableValue@\" + getNextId() : \"ObservableValue\",\n notifySpy = true,\n private equals: IEqualsComparer<any> = comparer.default\n ) {\n super(name_)\n this.value_ = enhancer(value, undefined, name_)\n if (__DEV__ && notifySpy && isSpyEnabled()) {\n // only notify spy if this is a stand-alone observable\n spyReport({\n type: CREATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue: \"\" + this.value_\n })\n }\n }\n\n private dehanceValue(value: T): T {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n public set(newValue: T) {\n const oldValue = this.value_\n newValue = this.prepareNewValue_(newValue) as any\n if (newValue !== globalState.UNCHANGED) {\n const notifySpy = isSpyEnabled()\n if (__DEV__ && notifySpy) {\n spyReportStart({\n type: UPDATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue,\n oldValue\n })\n }\n this.setNewValue_(newValue)\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n }\n\n private prepareNewValue_(newValue): T | IUNCHANGED {\n checkIfStateModificationsAreAllowed(this)\n if (hasInterceptors(this)) {\n const change = interceptChange<IValueWillChange<T>>(this, {\n object: this,\n type: UPDATE,\n newValue\n })\n if (!change) {\n return globalState.UNCHANGED\n }\n newValue = change.newValue\n }\n // apply modifier\n newValue = this.enhancer(newValue, this.value_, this.name_)\n return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue\n }\n\n setNewValue_(newValue: T) {\n const oldValue = this.value_\n this.value_ = newValue\n this.reportChanged()\n if (hasListeners(this)) {\n notifyListeners(this, {\n type: UPDATE,\n object: this,\n newValue,\n oldValue\n })\n }\n }\n\n public get(): T {\n this.reportObserved()\n return this.dehanceValue(this.value_)\n }\n\n intercept_(handler: IInterceptor<IValueWillChange<T>>): Lambda {\n return registerInterceptor(this, handler)\n }\n\n observe_(listener: (change: IValueDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n if (fireImmediately) {\n listener({\n observableKind: \"value\",\n debugObjectName: this.name_,\n object: this,\n type: UPDATE,\n newValue: this.value_,\n oldValue: undefined\n })\n }\n return registerListener(this, listener)\n }\n\n raw() {\n // used by MST ot get undehanced value\n return this.value_\n }\n\n toJSON() {\n return this.get()\n }\n\n toString() {\n return `${this.name_}[${this.value_}]`\n }\n\n valueOf(): T {\n return toPrimitive(this.get())\n }\n\n [Symbol.toPrimitive]() {\n return this.valueOf()\n }\n}\n\nexport const isObservableValue = createInstanceofPredicate(\"ObservableValue\", ObservableValue) as (\n x: any\n) => x is IObservableValue<any>\n","import {\n CaughtException,\n IDerivation,\n IDerivationState_,\n IEqualsComparer,\n IObservable,\n Lambda,\n TraceMode,\n autorun,\n clearObserving,\n comparer,\n createAction,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n globalState,\n isCaughtException,\n isSpyEnabled,\n propagateChangeConfirmed,\n propagateMaybeChanged,\n reportObserved,\n shouldCompute,\n spyReport,\n startBatch,\n toPrimitive,\n trackDerivedFunction,\n untrackedEnd,\n untrackedStart,\n UPDATE,\n die,\n allowStateChangesStart,\n allowStateChangesEnd\n} from \"../internal\"\n\nexport interface IComputedValue<T> {\n get(): T\n set(value: T): void\n}\n\nexport interface IComputedValueOptions<T> {\n get?: () => T\n set?: (value: T) => void\n name?: string\n equals?: IEqualsComparer<T>\n context?: any\n requiresReaction?: boolean\n keepAlive?: boolean\n}\n\nexport type IComputedDidChange<T = any> = {\n type: \"update\"\n observableKind: \"computed\"\n object: unknown\n debugObjectName: string\n newValue: T\n oldValue: T | undefined\n}\n\n/**\n * A node in the state dependency root that observes other nodes, and can be observed itself.\n *\n * ComputedValue will remember the result of the computation for the duration of the batch, or\n * while being observed.\n *\n * During this time it will recompute only when one of its direct dependencies changed,\n * but only when it is being accessed with `ComputedValue.get()`.\n *\n * Implementation description:\n * 1. First time it's being accessed it will compute and remember result\n * give back remembered result until 2. happens\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\n * 3. When it's being accessed, recompute if any shallow dependency changed.\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\n * go to step 2. either way\n *\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\n */\nexport class ComputedValue<T> implements IObservable, IComputedValue<T>, IDerivation {\n dependenciesState_ = IDerivationState_.NOT_TRACKING_\n observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n newObserving_ = null // during tracking it's an array with new observed observers\n isBeingObserved_ = false\n isPendingUnobservation_: boolean = false\n observers_ = new Set<IDerivation>()\n diffValue_ = 0\n runId_ = 0\n lastAccessedBy_ = 0\n lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n unboundDepsCount_ = 0\n protected value_: T | undefined | CaughtException = new CaughtException(null)\n name_: string\n triggeredBy_?: string\n isComputing_: boolean = false // to check for cycles\n isRunningSetter_: boolean = false\n derivation: () => T // N.B: unminified as it is used by MST\n setter_?: (value: T) => void\n isTracing_: TraceMode = TraceMode.NONE\n scope_: Object | undefined\n private equals_: IEqualsComparer<any>\n private requiresReaction_: boolean | undefined\n keepAlive_: boolean\n\n /**\n * Create a new computed value based on a function expression.\n *\n * The `name` property is for debug purposes only.\n *\n * The `equals` property specifies the comparer function to use to determine if a newly produced\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\n * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\n * Structural comparison can be convenient if you always produce a new aggregated object and\n * don't want to notify observers if it is structurally the same.\n * This is useful for working with vectors, mouse coordinates etc.\n */\n constructor(options: IComputedValueOptions<T>) {\n if (!options.get) {\n die(31)\n }\n this.derivation = options.get!\n this.name_ = options.name || (__DEV__ ? \"ComputedValue@\" + getNextId() : \"ComputedValue\")\n if (options.set) {\n this.setter_ = createAction(\n __DEV__ ? this.name_ + \"-setter\" : \"ComputedValue-setter\",\n options.set\n ) as any\n }\n this.equals_ =\n options.equals ||\n ((options as any).compareStructural || (options as any).struct\n ? comparer.structural\n : comparer.default)\n this.scope_ = options.context\n this.requiresReaction_ = options.requiresReaction\n this.keepAlive_ = !!options.keepAlive\n }\n\n onBecomeStale_() {\n propagateMaybeChanged(this)\n }\n\n public onBOL: Set<Lambda> | undefined\n public onBUOL: Set<Lambda> | undefined\n\n public onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(listener => listener())\n }\n }\n\n public onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(listener => listener())\n }\n }\n\n /**\n * Returns the current value of this computed value.\n * Will evaluate its computation first if needed.\n */\n public get(): T {\n if (this.isComputing_) {\n die(32, this.name_, this.derivation)\n }\n if (\n globalState.inBatch === 0 &&\n // !globalState.trackingDerivatpion &&\n this.observers_.size === 0 &&\n !this.keepAlive_\n ) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead_()\n startBatch() // See perf test 'computed memoization'\n this.value_ = this.computeValue_(false)\n endBatch()\n }\n } else {\n reportObserved(this)\n if (shouldCompute(this)) {\n let prevTrackingContext = globalState.trackingContext\n if (this.keepAlive_ && !prevTrackingContext) {\n globalState.trackingContext = this\n }\n if (this.trackAndCompute()) {\n propagateChangeConfirmed(this)\n }\n globalState.trackingContext = prevTrackingContext\n }\n }\n const result = this.value_!\n\n if (isCaughtException(result)) {\n throw result.cause\n }\n return result\n }\n\n public set(value: T) {\n if (this.setter_) {\n if (this.isRunningSetter_) {\n die(33, this.name_)\n }\n this.isRunningSetter_ = true\n try {\n this.setter_.call(this.scope_, value)\n } finally {\n this.isRunningSetter_ = false\n }\n } else {\n die(34, this.name_)\n }\n }\n\n trackAndCompute(): boolean {\n // N.B: unminified as it is used by MST\n const oldValue = this.value_\n const wasSuspended =\n /* see #1208 */ this.dependenciesState_ === IDerivationState_.NOT_TRACKING_\n const newValue = this.computeValue_(true)\n\n const changed =\n wasSuspended ||\n isCaughtException(oldValue) ||\n isCaughtException(newValue) ||\n !this.equals_(oldValue, newValue)\n\n if (changed) {\n this.value_ = newValue\n\n if (__DEV__ && isSpyEnabled()) {\n spyReport({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n object: this.scope_,\n type: \"update\",\n oldValue,\n newValue\n } as IComputedDidChange)\n }\n }\n\n return changed\n }\n\n computeValue_(track: boolean) {\n this.isComputing_ = true\n // don't allow state changes during computation\n const prev = allowStateChangesStart(false)\n let res: T | CaughtException\n if (track) {\n res = trackDerivedFunction(this, this.derivation, this.scope_)\n } else {\n if (globalState.disableErrorBoundaries === true) {\n res = this.derivation.call(this.scope_)\n } else {\n try {\n res = this.derivation.call(this.scope_)\n } catch (e) {\n res = new CaughtException(e)\n }\n }\n }\n allowStateChangesEnd(prev)\n this.isComputing_ = false\n return res\n }\n\n suspend_() {\n if (!this.keepAlive_) {\n clearObserving(this)\n this.value_ = undefined // don't hold on to computed value!\n if (__DEV__ && this.isTracing_ !== TraceMode.NONE) {\n console.log(\n `[mobx.trace] Computed value '${this.name_}' was suspended and it will recompute on the next access.`\n )\n }\n }\n }\n\n observe_(listener: (change: IComputedDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n let firstTime = true\n let prevValue: T | undefined = undefined\n return autorun(() => {\n // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n let newValue = this.get()\n if (!firstTime || fireImmediately) {\n const prevU = untrackedStart()\n listener({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n newValue,\n oldValue: prevValue\n })\n untrackedEnd(prevU)\n }\n firstTime = false\n prevValue = newValue\n })\n }\n\n warnAboutUntrackedRead_() {\n if (!__DEV__) {\n return\n }\n if (this.isTracing_ !== TraceMode.NONE) {\n console.log(\n `[mobx.trace] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n )\n }\n if (\n typeof this.requiresReaction_ === \"boolean\"\n ? this.requiresReaction_\n : globalState.computedRequiresReaction\n ) {\n console.warn(\n `[mobx] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n )\n }\n }\n\n toString() {\n return `${this.name_}[${this.derivation.toString()}]`\n }\n\n valueOf(): T {\n return toPrimitive(this.get())\n }\n\n [Symbol.toPrimitive]() {\n return this.valueOf()\n }\n}\n\nexport const isComputedValue = createInstanceofPredicate(\"ComputedValue\", ComputedValue)\n","import {\n IAtom,\n IDepTreeNode,\n IObservable,\n addObserver,\n globalState,\n isComputedValue,\n removeObserver\n} from \"../internal\"\n\nexport enum IDerivationState_ {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n NOT_TRACKING_ = -1,\n // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n UP_TO_DATE_ = 0,\n // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n POSSIBLY_STALE_ = 1,\n // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n STALE_ = 2\n}\n\nexport enum TraceMode {\n NONE,\n LOG,\n BREAK\n}\n\n/**\n * A derivation is everything that can be derived from the state (all the atoms) in a pure manner.\n * See https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n */\nexport interface IDerivation extends IDepTreeNode {\n observing_: IObservable[]\n newObserving_: null | IObservable[]\n dependenciesState_: IDerivationState_\n /**\n * Id of the current run of a derivation. Each time the derivation is tracked\n * this number is increased by one. This number is globally unique\n */\n runId_: number\n /**\n * amount of dependencies used by the derivation in this run, which has not been bound yet.\n */\n unboundDepsCount_: number\n onBecomeStale_(): void\n isTracing_: TraceMode\n\n /**\n * warn if the derivation has no dependencies after creation/update\n */\n requiresObservable_?: boolean\n}\n\nexport class CaughtException {\n constructor(public cause: any) {\n // Empty\n }\n}\n\nexport function isCaughtException(e: any): e is CaughtException {\n return e instanceof CaughtException\n}\n\n/**\n * Finds out whether any dependency of the derivation has actually changed.\n * If dependenciesState is 1 then it will recalculate dependencies,\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\n *\n * By iterating over the dependencies in the same order that they were reported and\n * stopping on the first change, all the recalculations are only called for ComputedValues\n * that will be tracked by derivation. That is because we assume that if the first x\n * dependencies of the derivation doesn't change then the derivation should run the same way\n * up until accessing x-th dependency.\n */\nexport function shouldCompute(derivation: IDerivation): boolean {\n switch (derivation.dependenciesState_) {\n case IDerivationState_.UP_TO_DATE_:\n return false\n case IDerivationState_.NOT_TRACKING_:\n case IDerivationState_.STALE_:\n return true\n case IDerivationState_.POSSIBLY_STALE_: {\n // state propagation can occur outside of action/reactive context #2195\n const prevAllowStateReads = allowStateReadsStart(true)\n const prevUntracked = untrackedStart() // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n const obs = derivation.observing_,\n l = obs.length\n for (let i = 0; i < l; i++) {\n const obj = obs[i]\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) {\n obj.get()\n } else {\n try {\n obj.get()\n } catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return true\n }\n }\n // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n if ((derivation.dependenciesState_ as any) === IDerivationState_.STALE_) {\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return true\n }\n }\n }\n changeDependenciesStateTo0(derivation)\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return false\n }\n }\n}\n\nexport function isComputingDerivation() {\n return globalState.trackingDerivation !== null // filter out actions inside computations\n}\n\nexport function checkIfStateModificationsAreAllowed(atom: IAtom) {\n if (!__DEV__) {\n return\n }\n const hasObservers = atom.observers_.size > 0\n // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n if (\n !globalState.allowStateChanges &&\n (hasObservers || globalState.enforceActions === \"always\")\n ) {\n console.warn(\n \"[MobX] \" +\n (globalState.enforceActions\n ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \"\n : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") +\n atom.name_\n )\n }\n}\n\nexport function checkIfStateReadsAreAllowed(observable: IObservable) {\n if (__DEV__ && !globalState.allowStateReads && globalState.observableRequiresReaction) {\n console.warn(\n `[mobx] Observable '${observable.name_}' being read outside a reactive context.`\n )\n }\n}\n\n/**\n * Executes the provided function `f` and tracks which observables are being accessed.\n * The tracking information is stored on the `derivation` object and the derivation is registered\n * as observer of any of the accessed observables.\n */\nexport function trackDerivedFunction<T>(derivation: IDerivation, f: () => T, context: any) {\n const prevAllowStateReads = allowStateReadsStart(true)\n // pre allocate array allocation + room for variation in deps\n // array will be trimmed by bindDependencies\n changeDependenciesStateTo0(derivation)\n derivation.newObserving_ = new Array(derivation.observing_.length + 100)\n derivation.unboundDepsCount_ = 0\n derivation.runId_ = ++globalState.runId\n const prevTracking = globalState.trackingDerivation\n globalState.trackingDerivation = derivation\n globalState.inBatch++\n let result\n if (globalState.disableErrorBoundaries === true) {\n result = f.call(context)\n } else {\n try {\n result = f.call(context)\n } catch (e) {\n result = new CaughtException(e)\n }\n }\n globalState.inBatch--\n globalState.trackingDerivation = prevTracking\n bindDependencies(derivation)\n\n warnAboutDerivationWithoutDependencies(derivation)\n allowStateReadsEnd(prevAllowStateReads)\n return result\n}\n\nfunction warnAboutDerivationWithoutDependencies(derivation: IDerivation) {\n if (!__DEV__) {\n return\n }\n\n if (derivation.observing_.length !== 0) {\n return\n }\n\n if (\n typeof derivation.requiresObservable_ === \"boolean\"\n ? derivation.requiresObservable_\n : globalState.reactionRequiresObservable\n ) {\n console.warn(\n `[mobx] Derivation '${derivation.name_}' is created/updated without reading any observable value.`\n )\n }\n}\n\n/**\n * diffs newObserving with observing.\n * update observing to be newObserving with unique observables\n * notify observers that become observed/unobserved\n */\nfunction bindDependencies(derivation: IDerivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n const prevObserving = derivation.observing_\n const observing = (derivation.observing_ = derivation.newObserving_!)\n let lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_\n\n // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n let i0 = 0,\n l = derivation.unboundDepsCount_\n for (let i = 0; i < l; i++) {\n const dep = observing[i]\n if (dep.diffValue_ === 0) {\n dep.diffValue_ = 1\n if (i0 !== i) {\n observing[i0] = dep\n }\n i0++\n }\n\n // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n if ((dep as any as IDerivation).dependenciesState_ > lowestNewObservingDerivationState) {\n lowestNewObservingDerivationState = (dep as any as IDerivation).dependenciesState_\n }\n }\n observing.length = i0\n\n derivation.newObserving_ = null // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n l = prevObserving.length\n while (l--) {\n const dep = prevObserving[l]\n if (dep.diffValue_ === 0) {\n removeObserver(dep, derivation)\n }\n dep.diffValue_ = 0\n }\n\n // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n while (i0--) {\n const dep = observing[i0]\n if (dep.diffValue_ === 1) {\n dep.diffValue_ = 0\n addObserver(dep, derivation)\n }\n }\n\n // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n derivation.dependenciesState_ = lowestNewObservingDerivationState\n derivation.onBecomeStale_()\n }\n}\n\nexport function clearObserving(derivation: IDerivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n const obs = derivation.observing_\n derivation.observing_ = []\n let i = obs.length\n while (i--) {\n removeObserver(obs[i], derivation)\n }\n\n derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_\n}\n\nexport function untracked<T>(action: () => T): T {\n const prev = untrackedStart()\n try {\n return action()\n } finally {\n untrackedEnd(prev)\n }\n}\n\nexport function untrackedStart(): IDerivation | null {\n const prev = globalState.trackingDerivation\n globalState.trackingDerivation = null\n return prev\n}\n\nexport function untrackedEnd(prev: IDerivation | null) {\n globalState.trackingDerivation = prev\n}\n\nexport function allowStateReadsStart(allowStateReads: boolean) {\n const prev = globalState.allowStateReads\n globalState.allowStateReads = allowStateReads\n return prev\n}\n\nexport function allowStateReadsEnd(prev: boolean) {\n globalState.allowStateReads = prev\n}\n\n/**\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\n *\n */\nexport function changeDependenciesStateTo0(derivation: IDerivation) {\n if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n return\n }\n derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_\n\n const obs = derivation.observing_\n let i = obs.length\n while (i--) {\n obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n }\n}\n","import {\n Lambda,\n ComputedValue,\n IDependencyTree,\n IDerivation,\n IDerivationState_,\n TraceMode,\n getDependencyTree,\n globalState,\n runReactions,\n checkIfStateReadsAreAllowed\n} from \"../internal\"\n\nexport interface IDepTreeNode {\n name_: string\n observing_?: IObservable[]\n}\n\nexport interface IObservable extends IDepTreeNode {\n diffValue_: number\n /**\n * Id of the derivation *run* that last accessed this observable.\n * If this id equals the *run* id of the current derivation,\n * the dependency is already established\n */\n lastAccessedBy_: number\n isBeingObserved_: boolean\n\n lowestObserverState_: IDerivationState_ // Used to avoid redundant propagations\n isPendingUnobservation_: boolean // Used to push itself to global.pendingUnobservations at most once per batch.\n\n observers_: Set<IDerivation>\n\n onBUO(): void\n onBO(): void\n\n onBUOL: Set<Lambda> | undefined\n onBOL: Set<Lambda> | undefined\n}\n\nexport function hasObservers(observable: IObservable): boolean {\n return observable.observers_ && observable.observers_.size > 0\n}\n\nexport function getObservers(observable: IObservable): Set<IDerivation> {\n return observable.observers_\n}\n\n// function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\nexport function addObserver(observable: IObservable, node: IDerivation) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n\n observable.observers_.add(node)\n if (observable.lowestObserverState_ > node.dependenciesState_) {\n observable.lowestObserverState_ = node.dependenciesState_\n }\n\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\n\nexport function removeObserver(observable: IObservable, node: IDerivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n observable.observers_.delete(node)\n if (observable.observers_.size === 0) {\n // deleting last observer\n queueForUnobservation(observable)\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\n\nexport function queueForUnobservation(observable: IObservable) {\n if (observable.isPendingUnobservation_ === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation_ = true\n globalState.pendingUnobservations.push(observable)\n }\n}\n\n/**\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\n * Avoids unnecessary recalculations.\n */\nexport function startBatch() {\n globalState.inBatch++\n}\n\nexport function endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions()\n // the batch is actually about to finish, all unobserving should happen here.\n const list = globalState.pendingUnobservations\n for (let i = 0; i < list.length; i++) {\n const observable = list[i]\n observable.isPendingUnobservation_ = false\n if (observable.observers_.size === 0) {\n if (observable.isBeingObserved_) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved_ = false\n observable.onBUO()\n }\n if (observable instanceof ComputedValue) {\n // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observabe of another, etc..\n observable.suspend_()\n }\n }\n }\n globalState.pendingUnobservations = []\n }\n}\n\nexport function reportObserved(observable: IObservable): boolean {\n checkIfStateReadsAreAllowed(observable)\n\n const derivation = globalState.trackingDerivation\n if (derivation !== null) {\n /**\n * Simple optimization, give each derivation run an unique id (runId)\n * Check if last time this observable was accessed the same runId is used\n * if this is the case, the relation is already known\n */\n if (derivation.runId_ !== observable.lastAccessedBy_) {\n observable.lastAccessedBy_ = derivation.runId_\n // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n derivation.newObserving_![derivation.unboundDepsCount_++] = observable\n if (!observable.isBeingObserved_ && globalState.trackingContext) {\n observable.isBeingObserved_ = true\n observable.onBO()\n }\n }\n return observable.isBeingObserved_\n } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n queueForUnobservation(observable)\n }\n\n return false\n}\n\n// function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n\n/**\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\n * It will propagate changes to observers from previous run\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\n * Hopefully self reruning autoruns aren't a feature people should depend on\n * Also most basic use cases should be ok\n */\n\n// Called by Atom when its value changes\nexport function propagateChanged(observable: IObservable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_\n\n // Ideally we use for..of here, but the downcompiled version is really slow...\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable)\n }\n d.onBecomeStale_()\n }\n d.dependenciesState_ = IDerivationState_.STALE_\n })\n // invariantLOS(observable, \"changed end\");\n}\n\n// Called by ComputedValue when it recalculate and its value changed\nexport function propagateChangeConfirmed(observable: IObservable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_\n\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n d.dependenciesState_ = IDerivationState_.STALE_\n if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable)\n }\n } else if (\n d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n ) {\n observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n }\n })\n // invariantLOS(observable, \"confirmed end\");\n}\n\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nexport function propagateMaybeChanged(observable: IObservable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_\n\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_\n d.onBecomeStale_()\n }\n })\n // invariantLOS(observable, \"maybe end\");\n}\n\nfunction logTraceInfo(derivation: IDerivation, observable: IObservable) {\n console.log(\n `[mobx.trace] '${derivation.name_}' is invalidated due to a change in: '${observable.name_}'`\n )\n if (derivation.isTracing_ === TraceMode.BREAK) {\n const lines = []\n printDepTree(getDependencyTree(derivation), lines, 1)\n\n // prettier-ignore\n new Function(\n`debugger;\n/*\nTracing '${derivation.name_}'\n\nYou are entering this break point because derivation '${derivation.name_}' is being traced and '${observable.name_}' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n${derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\"}\n\nThe dependencies for this derivation are:\n\n${lines.join(\"\\n\")}\n*/\n `)()\n }\n}\n\nfunction printDepTree(tree: IDependencyTree, lines: string[], depth: number) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\")\n return\n }\n lines.push(`${\"\\t\".repeat(depth - 1)}${tree.name}`)\n if (tree.dependencies) {\n tree.dependencies.forEach(child => printDepTree(child, lines, depth + 1))\n }\n}\n","import { IDerivation, IObservable, Reaction, die, getGlobal } from \"../internal\"\nimport { ComputedValue } from \"./computedvalue\"\n\n/**\n * These values will persist if global state is reset\n */\nconst persistentKeys: (keyof MobXGlobals)[] = [\n \"mobxGuid\",\n \"spyListeners\",\n \"enforceActions\",\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"allowStateReads\",\n \"disableErrorBoundaries\",\n \"runId\",\n \"UNCHANGED\",\n \"useProxies\"\n]\n\nexport type IUNCHANGED = {}\n\nexport class MobXGlobals {\n /**\n * MobXGlobals version.\n * MobX compatiblity with other versions loaded in memory as long as this version matches.\n * It indicates that the global state still stores similar information\n *\n * N.B: this version is unrelated to the package version of MobX, and is only the version of the\n * internal state storage of MobX, and can be the same across many different package versions\n */\n version = 6\n\n /**\n * globally unique token to signal unchanged\n */\n UNCHANGED: IUNCHANGED = {}\n\n /**\n * Currently running derivation\n */\n trackingDerivation: IDerivation | null = null\n\n /**\n * Currently running reaction. This determines if we currently have a reactive context.\n * (Tracking derivation is also set for temporal tracking of computed values inside actions,\n * but trackingReaction can only be set by a form of Reaction)\n */\n trackingContext: Reaction | ComputedValue<any> | null = null\n\n /**\n * Each time a derivation is tracked, it is assigned a unique run-id\n */\n runId = 0\n\n /**\n * 'guid' for general purpose. Will be persisted amongst resets.\n */\n mobxGuid = 0\n\n /**\n * Are we in a batch block? (and how many of them)\n */\n inBatch: number = 0\n\n /**\n * Observables that don't have observers anymore, and are about to be\n * suspended, unless somebody else accesses it in the same batch\n *\n * @type {IObservable[]}\n */\n pendingUnobservations: IObservable[] = []\n\n /**\n * List of scheduled, not yet executed, reactions.\n */\n pendingReactions: Reaction[] = []\n\n /**\n * Are we currently processing reactions?\n */\n isRunningReactions = false\n\n /**\n * Is it allowed to change observables at this point?\n * In general, MobX doesn't allow that when running computations and React.render.\n * To ensure that those functions stay pure.\n */\n allowStateChanges = false\n\n /**\n * Is it allowed to read observables at this point?\n * Used to hold the state needed for `observableRequiresReaction`\n */\n allowStateReads = true\n\n /**\n * If strict mode is enabled, state changes are by default not allowed\n */\n enforceActions: boolean | \"always\" = true\n\n /**\n * Spy callbacks\n */\n spyListeners: { (change: any): void }[] = []\n\n /**\n * Globally attached error handlers that react specifically to errors in reactions\n */\n globalReactionErrorHandlers: ((error: any, derivation: IDerivation) => void)[] = []\n\n /**\n * Warn if computed values are accessed outside a reactive context\n */\n computedRequiresReaction = false\n\n /**\n * (Experimental)\n * Warn if you try to create to derivation / reactive context without accessing any observable.\n */\n reactionRequiresObservable = false\n\n /**\n * (Experimental)\n * Warn if observables are accessed outside a reactive context\n */\n observableRequiresReaction = false\n\n /*\n * Don't catch and rethrow exceptions. This is useful for inspecting the state of\n * the stack when an exception occurs while debugging.\n */\n disableErrorBoundaries = false\n\n /*\n * If true, we are already handling an exception in an action. Any errors in reactions should be suppressed, as\n * they are not the cause, see: https://github.com/mobxjs/mobx/issues/1836\n */\n suppressReactionErrors = false\n\n useProxies = true\n /*\n * print warnings about code that would fail if proxies weren't available\n */\n verifyProxies = false\n\n /**\n * False forces all object's descriptors to\n * writable: true\n * configurable: true\n */\n safeDescriptors = true\n\n /**\n * Changes with each state update, used by useSyncExternalStore\n */\n stateVersion = Number.MIN_SAFE_INTEGER\n}\n\nlet canMergeGlobalState = true\nlet isolateCalled = false\n\nexport let globalState: MobXGlobals = (function () {\n let global = getGlobal()\n if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) {\n canMergeGlobalState = false\n }\n if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version) {\n canMergeGlobalState = false\n }\n\n if (!canMergeGlobalState) {\n // Because this is a IIFE we need to let isolateCalled a chance to change\n // so we run it after the event loop completed at least 1 iteration\n setTimeout(() => {\n if (!isolateCalled) {\n die(35)\n }\n }, 1)\n return new MobXGlobals()\n } else if (global.__mobxGlobals) {\n global.__mobxInstanceCount += 1\n if (!global.__mobxGlobals.UNCHANGED) {\n global.__mobxGlobals.UNCHANGED = {}\n } // make merge backward compatible\n return global.__mobxGlobals\n } else {\n global.__mobxInstanceCount = 1\n return (global.__mobxGlobals = new MobXGlobals())\n }\n})()\n\nexport function isolateGlobalState() {\n if (\n globalState.pendingReactions.length ||\n globalState.inBatch ||\n globalState.isRunningReactions\n ) {\n die(36)\n }\n isolateCalled = true\n if (canMergeGlobalState) {\n let global = getGlobal()\n if (--global.__mobxInstanceCount === 0) {\n global.__mobxGlobals = undefined\n }\n globalState = new MobXGlobals()\n }\n}\n\nexport function getGlobalState(): any {\n return globalState\n}\n\n/**\n * For testing purposes only; this will break the internal state of existing observables,\n * but can be used to get back at a stable state after throwing errors\n */\nexport function resetGlobalState() {\n const defaultGlobals = new MobXGlobals()\n for (let key in defaultGlobals) {\n if (persistentKeys.indexOf(key as any) === -1) {\n globalState[key] = defaultGlobals[key]\n }\n }\n globalState.allowStateChanges = !globalState.enforceActions\n}\n","import {\n $mobx,\n IDerivation,\n IDerivationState_,\n IObservable,\n Lambda,\n TraceMode,\n clearObserving,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n globalState,\n isCaughtException,\n isSpyEnabled,\n shouldCompute,\n spyReport,\n spyReportEnd,\n spyReportStart,\n startBatch,\n trace,\n trackDerivedFunction\n} from \"../internal\"\n\n/**\n * Reactions are a special kind of derivations. Several things distinguishes them from normal reactive computations\n *\n * 1) They will always run, whether they are used by other computations or not.\n * This means that they are very suitable for triggering side effects like logging, updating the DOM and making network requests.\n * 2) They are not observable themselves\n * 3) They will always run after any 'normal' derivations\n * 4) They are allowed to change the state and thereby triggering themselves again, as long as they make sure the state propagates to a stable state in a reasonable amount of iterations.\n *\n * The state machine of a Reaction is as follows:\n *\n * 1) after creating, the reaction should be started by calling `runReaction` or by scheduling it (see also `autorun`)\n * 2) the `onInvalidate` handler should somehow result in a call to `this.track(someFunction)`\n * 3) all observables accessed in `someFunction` will be observed by this reaction.\n * 4) as soon as some of the dependencies has changed the Reaction will be rescheduled for another run (after the current mutation or transaction). `isScheduled` will yield true once a dependency is stale and during this period\n * 5) `onInvalidate` will be called, and we are back at step 1.\n *\n */\n\nexport interface IReactionPublic {\n dispose(): void\n trace(enterBreakPoint?: boolean): void\n}\n\nexport interface IReactionDisposer {\n (): void\n $mobx: Reaction\n}\n\nexport class Reaction implements IDerivation, IReactionPublic {\n observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n newObserving_: IObservable[] = []\n dependenciesState_ = IDerivationState_.NOT_TRACKING_\n diffValue_ = 0\n runId_ = 0\n unboundDepsCount_ = 0\n isDisposed_ = false\n isScheduled_ = false\n isTrackPending_ = false\n isRunning_ = false\n isTracing_: TraceMode = TraceMode.NONE\n\n constructor(\n public name_: string = __DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\",\n private onInvalidate_: () => void,\n private errorHandler_?: (error: any, derivation: IDerivation) => void,\n public requiresObservable_?\n ) {}\n\n onBecomeStale_() {\n this.schedule_()\n }\n\n schedule_() {\n if (!this.isScheduled_) {\n this.isScheduled_ = true\n globalState.pendingReactions.push(this)\n runReactions()\n }\n }\n\n isScheduled() {\n return this.isScheduled_\n }\n\n /**\n * internal, use schedule() if you intend to kick off a reaction\n */\n runReaction_() {\n if (!this.isDisposed_) {\n startBatch()\n this.isScheduled_ = false\n const prev = globalState.trackingContext\n globalState.trackingContext = this\n if (shouldCompute(this)) {\n this.isTrackPending_ = true\n\n try {\n this.onInvalidate_()\n if (__DEV__ && this.isTrackPending_ && isSpyEnabled()) {\n // onInvalidate didn't trigger track right away..\n spyReport({\n name: this.name_,\n type: \"scheduled-reaction\"\n })\n }\n } catch (e) {\n this.reportExceptionInDerivation_(e)\n }\n }\n globalState.trackingContext = prev\n endBatch()\n }\n }\n\n track(fn: () => void) {\n if (this.isDisposed_) {\n return\n // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n }\n startBatch()\n const notify = isSpyEnabled()\n let startTime\n if (__DEV__ && notify) {\n startTime = Date.now()\n spyReportStart({\n name: this.name_,\n type: \"reaction\"\n })\n }\n this.isRunning_ = true\n const prevReaction = globalState.trackingContext // reactions could create reactions...\n globalState.trackingContext = this\n const result = trackDerivedFunction(this, fn, undefined)\n globalState.trackingContext = prevReaction\n this.isRunning_ = false\n this.isTrackPending_ = false\n if (this.isDisposed_) {\n // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this)\n }\n if (isCaughtException(result)) {\n this.reportExceptionInDerivation_(result.cause)\n }\n if (__DEV__ && notify) {\n spyReportEnd({\n time: Date.now() - startTime\n })\n }\n endBatch()\n }\n\n reportExceptionInDerivation_(error: any) {\n if (this.errorHandler_) {\n this.errorHandler_(error, this)\n return\n }\n\n if (globalState.disableErrorBoundaries) {\n throw error\n }\n\n const message = __DEV__\n ? `[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '${this}'`\n : `[mobx] uncaught error in '${this}'`\n if (!globalState.suppressReactionErrors) {\n console.error(message, error)\n /** If debugging brought you here, please, read the above message :-). Tnx! */\n } else if (__DEV__) { console.warn(`[mobx] (error in reaction '${this.name_}' suppressed, fix error of causing action below)`) } // prettier-ignore\n\n if (__DEV__ && isSpyEnabled()) {\n spyReport({\n type: \"error\",\n name: this.name_,\n message,\n error: \"\" + error\n })\n }\n\n globalState.globalReactionErrorHandlers.forEach(f => f(error, this))\n }\n\n dispose() {\n if (!this.isDisposed_) {\n this.isDisposed_ = true\n if (!this.isRunning_) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch()\n clearObserving(this)\n endBatch()\n }\n }\n }\n\n getDisposer_(): IReactionDisposer {\n const r = this.dispose.bind(this) as IReactionDisposer\n r[$mobx] = this\n return r\n }\n\n toString() {\n return `Reaction[${this.name_}]`\n }\n\n trace(enterBreakPoint: boolean = false) {\n trace(this, enterBreakPoint)\n }\n}\n\nexport function onReactionError(handler: (error: any, derivation: IDerivation) => void): Lambda {\n globalState.globalReactionErrorHandlers.push(handler)\n return () => {\n const idx = globalState.globalReactionErrorHandlers.indexOf(handler)\n if (idx >= 0) {\n globalState.globalReactionErrorHandlers.splice(idx, 1)\n }\n }\n}\n\n/**\n * Magic number alert!\n * Defines within how many times a reaction is allowed to re-trigger itself\n * until it is assumed that this is gonna be a never ending loop...\n */\nconst MAX_REACTION_ITERATIONS = 100\n\nlet reactionScheduler: (fn: () => void) => void = f => f()\n\nexport function runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions) {\n return\n }\n reactionScheduler(runReactionsHelper)\n}\n\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true\n const allReactions = globalState.pendingReactions\n let iterations = 0\n\n // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n while (allReactions.length > 0) {\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error(\n __DEV__\n ? `Reaction doesn't converge to a stable state after ${MAX_REACTION_ITERATIONS} iterations.` +\n ` Probably there is a cycle in the reactive function: ${allReactions[0]}`\n : `[mobx] cycle in reaction: ${allReactions[0]}`\n )\n allReactions.splice(0) // clear reactions\n }\n let remainingReactions = allReactions.splice(0)\n for (let i = 0, l = remainingReactions.length; i < l; i++) {\n remainingReactions[i].runReaction_()\n }\n }\n globalState.isRunningReactions = false\n}\n\nexport const isReaction = createInstanceofPredicate(\"Reaction\", Reaction)\n\nexport function setReactionScheduler(fn: (f: () => void) => void) {\n const baseScheduler = reactionScheduler\n reactionScheduler = f => fn(() => baseScheduler(f))\n}\n","import { TraceMode, die, getAtom, globalState } from \"../internal\"\n\nexport function trace(thing?: any, prop?: string, enterBreakPoint?: boolean): void\nexport function trace(thing?: any, enterBreakPoint?: boolean): void\nexport function trace(enterBreakPoint?: boolean): void\nexport function trace(...args: any[]): void {\n if (!__DEV__) {\n die(`trace() is not available in production builds`)\n }\n let enterBreakPoint = false\n if (typeof args[args.length - 1] === \"boolean\") {\n enterBreakPoint = args.pop()\n }\n const derivation = getAtomFromArgs(args)\n if (!derivation) {\n return die(\n `'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly`\n )\n }\n if (derivation.isTracing_ === TraceMode.NONE) {\n console.log(`[mobx.trace] '${derivation.name_}' tracing enabled`)\n }\n derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG\n}\n\nfunction getAtomFromArgs(args): any {\n switch (args.length) {\n case 0:\n return globalState.trackingDerivation\n case 1:\n return getAtom(args[0])\n case 2:\n return getAtom(args[0], args[1])\n }\n}\n","import {\n createAction,\n executeAction,\n Annotation,\n storeAnnotation,\n die,\n isFunction,\n isStringish,\n createDecoratorAnnotation,\n createActionAnnotation\n} from \"../internal\"\n\nexport const ACTION = \"action\"\nexport const ACTION_BOUND = \"action.bound\"\nexport const AUTOACTION = \"autoAction\"\nexport const AUTOACTION_BOUND = \"autoAction.bound\"\n\nconst DEFAULT_ACTION_NAME = \"<unnamed action>\"\n\nconst actionAnnotation = createActionAnnotation(ACTION)\nconst actionBoundAnnotation = createActionAnnotation(ACTION_BOUND, {\n bound: true\n})\nconst autoActionAnnotation = createActionAnnotation(AUTOACTION, {\n autoAction: true\n})\nconst autoActionBoundAnnotation = createActionAnnotation(AUTOACTION_BOUND, {\n autoAction: true,\n bound: true\n})\n\nexport interface IActionFactory extends Annotation, PropertyDecorator {\n // nameless actions\n <T extends Function | undefined | null>(fn: T): T\n // named actions\n <T extends Function | undefined | null>(name: string, fn: T): T\n\n // named decorator\n (customName: string): PropertyDecorator & Annotation\n\n // decorator (name no longer supported)\n bound: Annotation & PropertyDecorator\n}\n\nfunction createActionFactory(autoAction: boolean): IActionFactory {\n const res: IActionFactory = function action(arg1, arg2?): any {\n // action(fn() {})\n if (isFunction(arg1)) {\n return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction)\n }\n // action(\"name\", fn() {})\n if (isFunction(arg2)) {\n return createAction(arg1, arg2, autoAction)\n }\n // @action\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation)\n }\n // action(\"name\") & @action(\"name\")\n if (isStringish(arg1)) {\n return createDecoratorAnnotation(\n createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n name: arg1,\n autoAction\n })\n )\n }\n\n if (__DEV__) {\n die(\"Invalid arguments for `action`\")\n }\n } as IActionFactory\n return res\n}\n\nexport const action: IActionFactory = createActionFactory(false)\nObject.assign(action, actionAnnotation)\nexport const autoAction: IActionFactory = createActionFactory(true)\nObject.assign(autoAction, autoActionAnnotation)\n\naction.bound = createDecoratorAnnotation(actionBoundAnnotation)\nautoAction.bound = createDecoratorAnnotation(autoActionBoundAnnotation)\n\nexport function runInAction<T>(fn: () => T): T {\n return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined)\n}\n\nexport function isAction(thing: any) {\n return isFunction(thing) && thing.isMobxAction === true\n}\n","import {\n EMPTY_OBJECT,\n IEqualsComparer,\n IReactionDisposer,\n IReactionPublic,\n Lambda,\n Reaction,\n action,\n comparer,\n getNextId,\n isAction,\n isFunction,\n isPlainObject,\n die,\n allowStateChanges\n} from \"../internal\"\n\nexport interface IAutorunOptions {\n delay?: number\n name?: string\n /**\n * Experimental.\n * Warns if the view doesn't track observables\n */\n requiresObservable?: boolean\n scheduler?: (callback: () => void) => any\n onError?: (error: any) => void\n}\n\n/**\n * Creates a named reactive view and keeps it alive, so that the view is always\n * updated if one of the dependencies changes, even when the view is not further used by something else.\n * @param view The reactive view\n * @returns disposer function, which can be used to stop the view from being updated in the future.\n */\nexport function autorun(\n view: (r: IReactionPublic) => any,\n opts: IAutorunOptions = EMPTY_OBJECT\n): IReactionDisposer {\n if (__DEV__) {\n if (!isFunction(view)) {\n die(\"Autorun expects a function as first argument\")\n }\n if (isAction(view)) {\n die(\"Autorun does not accept actions since actions are untrackable\")\n }\n }\n\n const name: string =\n opts?.name ?? (__DEV__ ? (view as any).name || \"Autorun@\" + getNextId() : \"Autorun\")\n const runSync = !opts.scheduler && !opts.delay\n let reaction: Reaction\n\n if (runSync) {\n // normal autorun\n reaction = new Reaction(\n name,\n function (this: Reaction) {\n this.track(reactionRunner)\n },\n opts.onError,\n opts.requiresObservable\n )\n } else {\n const scheduler = createSchedulerFromOptions(opts)\n // debounced autorun\n let isScheduled = false\n\n reaction = new Reaction(\n name,\n () => {\n if (!isScheduled) {\n isScheduled = true\n scheduler(() => {\n isScheduled = false\n if (!reaction.isDisposed_) {\n reaction.track(reactionRunner)\n }\n })\n }\n },\n opts.onError,\n opts.requiresObservable\n )\n }\n\n function reactionRunner() {\n view(reaction)\n }\n\n reaction.schedule_()\n return reaction.getDisposer_()\n}\n\nexport type IReactionOptions<T, FireImmediately extends boolean> = IAutorunOptions & {\n fireImmediately?: FireImmediately\n equals?: IEqualsComparer<T>\n}\n\nconst run = (f: Lambda) => f()\n\nfunction createSchedulerFromOptions(opts: IAutorunOptions) {\n return opts.scheduler\n ? opts.scheduler\n : opts.delay\n ? (f: Lambda) => setTimeout(f, opts.delay!)\n : run\n}\n\nexport function reaction<T, FireImmediately extends boolean = false>(\n expression: (r: IReactionPublic) => T,\n effect: (\n arg: T,\n prev: FireImmediately extends true ? T | undefined : T,\n r: IReactionPublic\n ) => void,\n opts: IReactionOptions<T, FireImmediately> = EMPTY_OBJECT\n): IReactionDisposer {\n if (__DEV__) {\n if (!isFunction(expression) || !isFunction(effect)) {\n die(\"First and second argument to reaction should be functions\")\n }\n if (!isPlainObject(opts)) {\n die(\"Third argument of reactions should be an object\")\n }\n }\n const name = opts.name ?? (__DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\")\n const effectAction = action(\n name,\n opts.onError ? wrapErrorHandler(opts.onError, effect) : effect\n )\n const runSync = !opts.scheduler && !opts.delay\n const scheduler = createSchedulerFromOptions(opts)\n\n let firstTime = true\n let isScheduled = false\n let value: T\n let oldValue: T | undefined\n\n const equals: IEqualsComparer<T> = (opts as any).compareStructural\n ? comparer.structural\n : opts.equals || comparer.default\n\n const r = new Reaction(\n name,\n () => {\n if (firstTime || runSync) {\n reactionRunner()\n } else if (!isScheduled) {\n isScheduled = true\n scheduler!(reactionRunner)\n }\n },\n opts.onError,\n opts.requiresObservable\n )\n\n function reactionRunner() {\n isScheduled = false\n if (r.isDisposed_) {\n return\n }\n let changed: boolean = false\n r.track(() => {\n const nextValue = allowStateChanges(false, () => expression(r))\n changed = firstTime || !equals(value, nextValue)\n oldValue = value\n value = nextValue\n })\n\n // This casting is nesessary as TS cannot infer proper type in current funciton implementation\n type OldValue = FireImmediately extends true ? T | undefined : T\n if (firstTime && opts.fireImmediately!) {\n effectAction(value, oldValue as OldValue, r)\n } else if (!firstTime && changed) {\n effectAction(value, oldValue as OldValue, r)\n }\n firstTime = false\n }\n\n r.schedule_()\n return r.getDisposer_()\n}\n\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function () {\n try {\n return baseFn.apply(this, arguments)\n } catch (e) {\n errorHandler.call(this, e)\n }\n }\n}\n","import { globalState, isolateGlobalState, setReactionScheduler } from \"../internal\"\n\nconst NEVER = \"never\"\nconst ALWAYS = \"always\"\nconst OBSERVED = \"observed\"\n// const IF_AVAILABLE = \"ifavailable\"\n\nexport function configure(options: {\n enforceActions?: \"never\" | \"always\" | \"observed\"\n computedRequiresReaction?: boolean\n /**\n * Warn if you try to create to derivation / reactive context without accessing any observable.\n */\n reactionRequiresObservable?: boolean\n /**\n * Warn if observables are accessed outside a reactive context\n */\n observableRequiresReaction?: boolean\n isolateGlobalState?: boolean\n disableErrorBoundaries?: boolean\n safeDescriptors?: boolean\n reactionScheduler?: (f: () => void) => void\n useProxies?: \"always\" | \"never\" | \"ifavailable\"\n}): void {\n if (options.isolateGlobalState === true) {\n isolateGlobalState()\n }\n const { useProxies, enforceActions } = options\n if (useProxies !== undefined) {\n globalState.useProxies =\n useProxies === ALWAYS\n ? true\n : useProxies === NEVER\n ? false\n : typeof Proxy !== \"undefined\"\n }\n if (useProxies === \"ifavailable\") {\n globalState.verifyProxies = true\n }\n if (enforceActions !== undefined) {\n const ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED\n globalState.enforceActions = ea\n globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true\n }\n ;[\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"disableErrorBoundaries\",\n \"safeDescriptors\"\n ].forEach(key => {\n if (key in options) {\n globalState[key] = !!options[key]\n }\n })\n globalState.allowStateReads = !globalState.observableRequiresReaction\n if (__DEV__ && globalState.disableErrorBoundaries === true) {\n console.warn(\n \"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\"\n )\n }\n if (options.reactionScheduler) {\n setReactionScheduler(options.reactionScheduler)\n }\n}\n","import {\n CreateObservableOptions,\n isObservableMap,\n AnnotationsMap,\n startBatch,\n endBatch,\n asObservableObject,\n isPlainObject,\n ObservableObjectAdministration,\n isObservable,\n die,\n getOwnPropertyDescriptors,\n $mobx,\n ownKeys\n} from \"../internal\"\n\nexport function extendObservable<A extends Object, B extends Object>(\n target: A,\n properties: B,\n annotations?: AnnotationsMap<B, never>,\n options?: CreateObservableOptions\n): A & B {\n if (__DEV__) {\n if (arguments.length > 4) {\n die(\"'extendObservable' expected 2-4 arguments\")\n }\n if (typeof target !== \"object\") {\n die(\"'extendObservable' expects an object as first argument\")\n }\n if (isObservableMap(target)) {\n die(\"'extendObservable' should not be used on maps, use map.merge instead\")\n }\n if (!isPlainObject(properties)) {\n die(`'extendObservable' only accepts plain objects as second argument`)\n }\n if (isObservable(properties) || isObservable(annotations)) {\n die(`Extending an object with another observable (object) is not supported`)\n }\n }\n // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n const descriptors = getOwnPropertyDescriptors(properties)\n\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n startBatch()\n try {\n ownKeys(descriptors).forEach(key => {\n adm.extend_(\n key,\n descriptors[key as any],\n // must pass \"undefined\" for { key: undefined }\n !annotations ? true : key in annotations ? annotations[key] : true\n )\n })\n } finally {\n endBatch()\n }\n return target as any\n}\n","import { IDepTreeNode, getAtom, getObservers, hasObservers } from \"../internal\"\n\nexport interface IDependencyTree {\n name: string\n dependencies?: IDependencyTree[]\n}\n\nexport interface IObserverTree {\n name: string\n observers?: IObserverTree[]\n}\n\nexport function getDependencyTree(thing: any, property?: string): IDependencyTree {\n return nodeToDependencyTree(getAtom(thing, property))\n}\n\nfunction nodeToDependencyTree(node: IDepTreeNode): IDependencyTree {\n const result: IDependencyTree = {\n name: node.name_\n }\n if (node.observing_ && node.observing_.length > 0) {\n result.dependencies = unique(node.observing_).map(nodeToDependencyTree)\n }\n return result\n}\n\nexport function getObserverTree(thing: any, property?: string): IObserverTree {\n return nodeToObserverTree(getAtom(thing, property))\n}\n\nfunction nodeToObserverTree(node: IDepTreeNode): IObserverTree {\n const result: IObserverTree = {\n name: node.name_\n }\n if (hasObservers(node as any)) {\n result.observers = Array.from(<any>getObservers(node as any)).map(<any>nodeToObserverTree)\n }\n return result\n}\n\nfunction unique<T>(list: T[]): T[] {\n return Array.from(new Set(list))\n}\n","import {\n action,\n noop,\n die,\n isFunction,\n Annotation,\n isStringish,\n storeAnnotation,\n createFlowAnnotation,\n createDecoratorAnnotation\n} from \"../internal\"\n\nexport const FLOW = \"flow\"\n\nlet generatorId = 0\n\nexport function FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\"\n}\nFlowCancellationError.prototype = Object.create(Error.prototype)\n\nexport function isFlowCancellationError(error: Error) {\n return error instanceof FlowCancellationError\n}\n\nexport type CancellablePromise<T> = Promise<T> & { cancel(): void }\n\ninterface Flow extends Annotation, PropertyDecorator {\n <R, Args extends any[]>(\n generator: (...args: Args) => Generator<any, R, any> | AsyncGenerator<any, R, any>\n ): (...args: Args) => CancellablePromise<R>\n bound: Annotation & PropertyDecorator\n}\n\nconst flowAnnotation = createFlowAnnotation(\"flow\")\nconst flowBoundAnnotation = createFlowAnnotation(\"flow.bound\", { bound: true })\n\nexport const flow: Flow = Object.assign(\n function flow(arg1, arg2?) {\n // @flow\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, flowAnnotation)\n }\n // flow(fn)\n if (__DEV__ && arguments.length !== 1) {\n die(`Flow expects single argument with generator function`)\n }\n const generator = arg1\n const name = generator.name || \"<unnamed flow>\"\n\n // Implementation based on https://github.com/tj/co/blob/master/index.js\n const res = function () {\n const ctx = this\n const args = arguments\n const runId = ++generatorId\n const gen = action(`${name} - runid: ${runId} - init`, generator).apply(ctx, args)\n let rejector: (error: any) => void\n let pendingPromise: CancellablePromise<any> | undefined = undefined\n\n const promise = new Promise(function (resolve, reject) {\n let stepId = 0\n rejector = reject\n\n function onFulfilled(res: any) {\n pendingPromise = undefined\n let ret\n try {\n ret = action(\n `${name} - runid: ${runId} - yield ${stepId++}`,\n gen.next\n ).call(gen, res)\n } catch (e) {\n return reject(e)\n }\n\n next(ret)\n }\n\n function onRejected(err: any) {\n pendingPromise = undefined\n let ret\n try {\n ret = action(\n `${name} - runid: ${runId} - yield ${stepId++}`,\n gen.throw!\n ).call(gen, err)\n } catch (e) {\n return reject(e)\n }\n next(ret)\n }\n\n function next(ret: any) {\n if (isFunction(ret?.then)) {\n // an async iterator\n ret.then(next, reject)\n return\n }\n if (ret.done) {\n return resolve(ret.value)\n }\n pendingPromise = Promise.resolve(ret.value) as any\n return pendingPromise!.then(onFulfilled, onRejected)\n }\n\n onFulfilled(undefined) // kick off the process\n }) as any\n\n promise.cancel = action(`${name} - runid: ${runId} - cancel`, function () {\n try {\n if (pendingPromise) {\n cancelPromise(pendingPromise)\n }\n // Finally block can return (or yield) stuff..\n const res = gen.return!(undefined as any)\n // eat anything that promise would do, it's cancelled!\n const yieldedPromise = Promise.resolve(res.value)\n yieldedPromise.then(noop, noop)\n cancelPromise(yieldedPromise) // maybe it can be cancelled :)\n // reject our original promise\n rejector(new FlowCancellationError())\n } catch (e) {\n rejector(e) // there could be a throwing finally block\n }\n })\n return promise\n }\n res.isMobXFlow = true\n return res\n } as any,\n flowAnnotation\n)\n\nflow.bound = createDecoratorAnnotation(flowBoundAnnotation)\n\nfunction cancelPromise(promise) {\n if (isFunction(promise.cancel)) {\n promise.cancel()\n }\n}\n\nexport function flowResult<T>(\n result: T\n): T extends Generator<any, infer R, any>\n ? CancellablePromise<R>\n : T extends CancellablePromise<any>\n ? T\n : never {\n return result as any // just tricking TypeScript :)\n}\n\nexport function isFlow(fn: any): boolean {\n return fn?.isMobXFlow === true\n}\n","import { $mobx, getAtom, isComputedValue, isObservableObject, die, isStringish } from \"../internal\"\n\nexport function _isComputed(value, property?: PropertyKey): boolean {\n if (property === undefined) {\n return isComputedValue(value)\n }\n if (isObservableObject(value) === false) {\n return false\n }\n if (!value[$mobx].values_.has(property)) {\n return false\n }\n const atom = getAtom(value, property)\n return isComputedValue(atom)\n}\n\nexport function isComputed(value: any): boolean {\n if (__DEV__ && arguments.length > 1) {\n return die(\n `isComputed expects only 1 argument. Use isComputedProp to inspect the observability of a property`\n )\n }\n return _isComputed(value)\n}\n\nexport function isComputedProp(value: any, propName: PropertyKey): boolean {\n if (__DEV__ && !isStringish(propName)) {\n return die(`isComputed expected a property name as second argument`)\n }\n return _isComputed(value, propName)\n}\n","import {\n $mobx,\n isAtom,\n isComputedValue,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isReaction,\n die,\n isStringish\n} from \"../internal\"\n\nfunction _isObservable(value, property?: PropertyKey): boolean {\n if (!value) {\n return false\n }\n if (property !== undefined) {\n if (__DEV__ && (isObservableMap(value) || isObservableArray(value))) {\n return die(\n \"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\"\n )\n }\n if (isObservableObject(value)) {\n return value[$mobx].values_.has(property)\n }\n return false\n }\n // For first check, see #701\n return (\n isObservableObject(value) ||\n !!value[$mobx] ||\n isAtom(value) ||\n isReaction(value) ||\n isComputedValue(value)\n )\n}\n\nexport function isObservable(value: any): boolean {\n if (__DEV__ && arguments.length !== 1) {\n die(\n `isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property`\n )\n }\n return _isObservable(value)\n}\n\nexport function isObservableProp(value: any, propName: PropertyKey): boolean {\n if (__DEV__ && !isStringish(propName)) {\n return die(`expected a property name as second argument`)\n }\n return _isObservable(value, propName)\n}\n","import {\n isObservable,\n isObservableArray,\n isObservableValue,\n isObservableMap,\n isObservableSet,\n isComputedValue,\n die,\n apiOwnKeys,\n objectPrototype\n} from \"../internal\"\n\nfunction cache<K, V>(map: Map<any, any>, key: K, value: V): V {\n map.set(key, value)\n return value\n}\n\nfunction toJSHelper(source, __alreadySeen: Map<any, any>) {\n if (\n source == null ||\n typeof source !== \"object\" ||\n source instanceof Date ||\n !isObservable(source)\n ) {\n return source\n }\n\n if (isObservableValue(source) || isComputedValue(source)) {\n return toJSHelper(source.get(), __alreadySeen)\n }\n if (__alreadySeen.has(source)) {\n return __alreadySeen.get(source)\n }\n if (isObservableArray(source)) {\n const res = cache(__alreadySeen, source, new Array(source.length))\n source.forEach((value, idx) => {\n res[idx] = toJSHelper(value, __alreadySeen)\n })\n return res\n }\n if (isObservableSet(source)) {\n const res = cache(__alreadySeen, source, new Set())\n source.forEach(value => {\n res.add(toJSHelper(value, __alreadySeen))\n })\n return res\n }\n if (isObservableMap(source)) {\n const res = cache(__alreadySeen, source, new Map())\n source.forEach((value, key) => {\n res.set(key, toJSHelper(value, __alreadySeen))\n })\n return res\n } else {\n // must be observable object\n const res = cache(__alreadySeen, source, {})\n apiOwnKeys(source).forEach((key: any) => {\n if (objectPrototype.propertyIsEnumerable.call(source, key)) {\n res[key] = toJSHelper(source[key], __alreadySeen)\n }\n })\n return res\n }\n}\n\n/**\n * Recursively converts an observable to it's non-observable native counterpart.\n * It does NOT recurse into non-observables, these are left as they are, even if they contain observables.\n * Computed and other non-enumerable properties are completely ignored.\n * Complex scenarios require custom solution, eg implementing `toJSON` or using `serializr` lib.\n */\nexport function toJS<T>(source: T, options?: any): T {\n if (__DEV__ && options) {\n die(\"toJS no longer supports options\")\n }\n return toJSHelper(source, new Map())\n}\n","import {\n $mobx,\n IIsObservableObject,\n IObservableArray,\n ObservableMap,\n ObservableSet,\n ObservableObjectAdministration,\n endBatch,\n isObservableArray,\n isObservableMap,\n isObservableSet,\n isObservableObject,\n startBatch,\n die\n} from \"../internal\"\n\nexport function keys<K>(map: ObservableMap<K, any>): ReadonlyArray<K>\nexport function keys<T>(ar: IObservableArray<T>): ReadonlyArray<number>\nexport function keys<T>(set: ObservableSet<T>): ReadonlyArray<T>\nexport function keys<T extends Object>(obj: T): ReadonlyArray<PropertyKey>\nexport function keys(obj: any): any {\n if (isObservableObject(obj)) {\n return (\n (obj as any as IIsObservableObject)[$mobx] as ObservableObjectAdministration\n ).keys_()\n }\n if (isObservableMap(obj) || isObservableSet(obj)) {\n return Array.from(obj.keys())\n }\n if (isObservableArray(obj)) {\n return obj.map((_, index) => index)\n }\n die(5)\n}\n\nexport function values<K, T>(map: ObservableMap<K, T>): ReadonlyArray<T>\nexport function values<T>(set: ObservableSet<T>): ReadonlyArray<T>\nexport function values<T>(ar: IObservableArray<T>): ReadonlyArray<T>\nexport function values<T = any>(obj: T): ReadonlyArray<T extends object ? T[keyof T] : any>\nexport function values(obj: any): string[] {\n if (isObservableObject(obj)) {\n return keys(obj).map(key => obj[key])\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(key => obj.get(key))\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.values())\n }\n if (isObservableArray(obj)) {\n return obj.slice()\n }\n die(6)\n}\n\nexport function entries<K, T>(map: ObservableMap<K, T>): ReadonlyArray<[K, T]>\nexport function entries<T>(set: ObservableSet<T>): ReadonlyArray<[T, T]>\nexport function entries<T>(ar: IObservableArray<T>): ReadonlyArray<[number, T]>\nexport function entries<T = any>(\n obj: T\n): ReadonlyArray<[string, T extends object ? T[keyof T] : any]>\nexport function entries(obj: any): any {\n if (isObservableObject(obj)) {\n return keys(obj).map(key => [key, obj[key]])\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(key => [key, obj.get(key)])\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.entries())\n }\n if (isObservableArray(obj)) {\n return obj.map((key, index) => [index, key])\n }\n die(7)\n}\n\nexport function set<V>(obj: ObservableMap<PropertyKey, V>, values: { [key: string]: V })\nexport function set<K, V>(obj: ObservableMap<K, V>, key: K, value: V)\nexport function set<T>(obj: ObservableSet<T>, value: T)\nexport function set<T>(obj: IObservableArray<T>, index: number, value: T)\nexport function set<T extends Object>(obj: T, values: { [key: string]: any })\nexport function set<T extends Object>(obj: T, key: PropertyKey, value: any)\nexport function set(obj: any, key: any, value?: any): void {\n if (arguments.length === 2 && !isObservableSet(obj)) {\n startBatch()\n const values = key\n try {\n for (let key in values) {\n set(obj, key, values[key])\n }\n } finally {\n endBatch()\n }\n return\n }\n if (isObservableObject(obj)) {\n ;(obj as any as IIsObservableObject)[$mobx].set_(key, value)\n } else if (isObservableMap(obj)) {\n obj.set(key, value)\n } else if (isObservableSet(obj)) {\n obj.add(key)\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10)\n }\n if (key < 0) {\n die(`Invalid index: '${key}'`)\n }\n startBatch()\n if (key >= obj.length) {\n obj.length = key + 1\n }\n obj[key] = value\n endBatch()\n } else {\n die(8)\n }\n}\n\nexport function remove<K, V>(obj: ObservableMap<K, V>, key: K)\nexport function remove<T>(obj: ObservableSet<T>, key: T)\nexport function remove<T>(obj: IObservableArray<T>, index: number)\nexport function remove<T extends Object>(obj: T, key: string)\nexport function remove(obj: any, key: any): void {\n if (isObservableObject(obj)) {\n ;(obj as any as IIsObservableObject)[$mobx].delete_(key)\n } else if (isObservableMap(obj)) {\n obj.delete(key)\n } else if (isObservableSet(obj)) {\n obj.delete(key)\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10)\n }\n obj.splice(key, 1)\n } else {\n die(9)\n }\n}\n\nexport function has<K>(obj: ObservableMap<K, any>, key: K): boolean\nexport function has<T>(obj: ObservableSet<T>, key: T): boolean\nexport function has<T>(obj: IObservableArray<T>, index: number): boolean\nexport function has<T extends Object>(obj: T, key: string): boolean\nexport function has(obj: any, key: any): boolean {\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].has_(key)\n } else if (isObservableMap(obj)) {\n return obj.has(key)\n } else if (isObservableSet(obj)) {\n return obj.has(key)\n } else if (isObservableArray(obj)) {\n return key >= 0 && key < obj.length\n }\n die(10)\n}\n\nexport function get<K, V>(obj: ObservableMap<K, V>, key: K): V | undefined\nexport function get<T>(obj: IObservableArray<T>, index: number): T | undefined\nexport function get<T extends Object>(obj: T, key: string): any\nexport function get(obj: any, key: any): any {\n if (!has(obj, key)) {\n return undefined\n }\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].get_(key)\n } else if (isObservableMap(obj)) {\n return obj.get(key)\n } else if (isObservableArray(obj)) {\n return obj[key]\n }\n die(11)\n}\n\nexport function apiDefineProperty(obj: Object, key: PropertyKey, descriptor: PropertyDescriptor) {\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].defineProperty_(key, descriptor)\n }\n die(39)\n}\n\nexport function apiOwnKeys(obj: Object) {\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].ownKeys_()\n }\n die(38)\n}\n","import { endBatch, startBatch } from \"../internal\"\n\n/**\n * During a transaction no views are updated until the end of the transaction.\n * The transaction will be run synchronously nonetheless.\n *\n * @param action a function that updates some reactive state\n * @returns any value that was returned by the 'action' parameter.\n */\nexport function transaction<T>(action: () => T, thisArg = undefined): T {\n startBatch()\n try {\n return action.apply(thisArg)\n } finally {\n endBatch()\n }\n}\n","import { Lambda, once, untrackedEnd, untrackedStart, die } from \"../internal\"\n\nexport type IInterceptor<T> = (change: T) => T | null\n\nexport interface IInterceptable<T> {\n interceptors_: IInterceptor<T>[] | undefined\n}\n\nexport function hasInterceptors(interceptable: IInterceptable<any>) {\n return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0\n}\n\nexport function registerInterceptor<T>(\n interceptable: IInterceptable<T>,\n handler: IInterceptor<T>\n): Lambda {\n const interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = [])\n interceptors.push(handler)\n return once(() => {\n const idx = interceptors.indexOf(handler)\n if (idx !== -1) {\n interceptors.splice(idx, 1)\n }\n })\n}\n\nexport function interceptChange<T>(\n interceptable: IInterceptable<T | null>,\n change: T | null\n): T | null {\n const prevU = untrackedStart()\n try {\n // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n const interceptors = [...(interceptable.interceptors_ || [])]\n for (let i = 0, l = interceptors.length; i < l; i++) {\n change = interceptors[i](change)\n if (change && !(change as any).type) {\n die(14)\n }\n if (!change) {\n break\n }\n }\n return change\n } finally {\n untrackedEnd(prevU)\n }\n}\n","import { Lambda, once, untrackedEnd, untrackedStart } from \"../internal\"\n\nexport interface IListenable {\n changeListeners_: Function[] | undefined\n}\n\nexport function hasListeners(listenable: IListenable) {\n return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0\n}\n\nexport function registerListener(listenable: IListenable, handler: Function): Lambda {\n const listeners = listenable.changeListeners_ || (listenable.changeListeners_ = [])\n listeners.push(handler)\n return once(() => {\n const idx = listeners.indexOf(handler)\n if (idx !== -1) {\n listeners.splice(idx, 1)\n }\n })\n}\n\nexport function notifyListeners<T>(listenable: IListenable, change: T) {\n const prevU = untrackedStart()\n let listeners = listenable.changeListeners_\n if (!listeners) {\n return\n }\n listeners = listeners.slice()\n for (let i = 0, l = listeners.length; i < l; i++) {\n listeners[i](change)\n }\n untrackedEnd(prevU)\n}\n","import {\n $mobx,\n asObservableObject,\n AnnotationsMap,\n endBatch,\n startBatch,\n CreateObservableOptions,\n ObservableObjectAdministration,\n collectStoredAnnotations,\n isPlainObject,\n isObservableObject,\n die,\n ownKeys,\n extendObservable,\n addHiddenProp,\n storedAnnotationsSymbol\n} from \"../internal\"\n\n// Hack based on https://github.com/Microsoft/TypeScript/issues/14829#issuecomment-322267089\n// We need this, because otherwise, AdditionalKeys is going to be inferred to be any\n// set of superfluous keys. But, we rather want to get a compile error unless AdditionalKeys is\n// _explicity_ passed as generic argument\n// Fixes: https://github.com/mobxjs/mobx/issues/2325#issuecomment-691070022\ntype NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport function makeObservable<T extends object, AdditionalKeys extends PropertyKey = never>(\n target: T,\n annotations?: AnnotationsMap<T, NoInfer<AdditionalKeys>>,\n options?: CreateObservableOptions\n): T {\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n startBatch()\n try {\n if (__DEV__ && annotations && target[storedAnnotationsSymbol]) {\n die(\n `makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.`\n )\n }\n // Default to decorators\n annotations ??= collectStoredAnnotations(target)\n\n // Annotate\n ownKeys(annotations).forEach(key => adm.make_(key, annotations![key]))\n } finally {\n endBatch()\n }\n return target\n}\n\n// proto[keysSymbol] = new Set<PropertyKey>()\nconst keysSymbol = Symbol(\"mobx-keys\")\n\nexport function makeAutoObservable<T extends object, AdditionalKeys extends PropertyKey = never>(\n target: T,\n overrides?: AnnotationsMap<T, NoInfer<AdditionalKeys>>,\n options?: CreateObservableOptions\n): T {\n if (__DEV__) {\n if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) {\n die(`'makeAutoObservable' can only be used for classes that don't have a superclass`)\n }\n if (isObservableObject(target)) {\n die(`makeAutoObservable can only be used on objects not already made observable`)\n }\n }\n\n // Optimization: avoid visiting protos\n // Assumes that annotation.make_/.extend_ works the same for plain objects\n if (isPlainObject(target)) {\n return extendObservable(target, target, overrides, options)\n }\n\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n\n // Optimization: cache keys on proto\n // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n if (!target[keysSymbol]) {\n const proto = Object.getPrototypeOf(target)\n const keys = new Set([...ownKeys(target), ...ownKeys(proto)])\n keys.delete(\"constructor\")\n keys.delete($mobx)\n addHiddenProp(proto, keysSymbol, keys)\n }\n\n startBatch()\n try {\n target[keysSymbol].forEach(key =>\n adm.make_(\n key,\n // must pass \"undefined\" for { key: undefined }\n !overrides ? true : key in overrides ? overrides[key] : true\n )\n )\n } finally {\n endBatch()\n }\n return target\n}\n","import {\n $mobx,\n Atom,\n EMPTY_ARRAY,\n IAtom,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n Lambda,\n addHiddenFinalProp,\n checkIfStateModificationsAreAllowed,\n createInstanceofPredicate,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isObject,\n isSpyEnabled,\n notifyListeners,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n allowStateChangesStart,\n allowStateChangesEnd,\n assertProxies,\n reserveArrayBuffer,\n hasProp,\n die,\n globalState\n} from \"../internal\"\n\nconst SPLICE = \"splice\"\nexport const UPDATE = \"update\"\nexport const MAX_SPLICE_SIZE = 10000 // See e.g. https://github.com/mobxjs/mobx/issues/859\n\nexport interface IObservableArray<T = any> extends Array<T> {\n spliceWithArray(index: number, deleteCount?: number, newItems?: T[]): T[]\n clear(): T[]\n replace(newItems: T[]): T[]\n remove(value: T): boolean\n toJSON(): T[]\n}\n\ninterface IArrayBaseChange<T> {\n object: IObservableArray<T>\n observableKind: \"array\"\n debugObjectName: string\n index: number\n}\n\nexport type IArrayDidChange<T = any> = IArrayUpdate<T> | IArraySplice<T>\n\nexport interface IArrayUpdate<T = any> extends IArrayBaseChange<T> {\n type: \"update\"\n newValue: T\n oldValue: T\n}\n\nexport interface IArraySplice<T = any> extends IArrayBaseChange<T> {\n type: \"splice\"\n added: T[]\n addedCount: number\n removed: T[]\n removedCount: number\n}\n\nexport interface IArrayWillChange<T = any> {\n object: IObservableArray<T>\n index: number\n type: \"update\"\n newValue: T\n}\n\nexport interface IArrayWillSplice<T = any> {\n object: IObservableArray<T>\n index: number\n type: \"splice\"\n added: T[]\n removedCount: number\n}\n\nconst arrayTraps = {\n get(target, name) {\n const adm: ObservableArrayAdministration = target[$mobx]\n if (name === $mobx) {\n return adm\n }\n if (name === \"length\") {\n return adm.getArrayLength_()\n }\n if (typeof name === \"string\" && !isNaN(name as any)) {\n return adm.get_(parseInt(name))\n }\n if (hasProp(arrayExtensions, name)) {\n return arrayExtensions[name]\n }\n return target[name]\n },\n set(target, name, value): boolean {\n const adm: ObservableArrayAdministration = target[$mobx]\n if (name === \"length\") {\n adm.setArrayLength_(value)\n }\n if (typeof name === \"symbol\" || isNaN(name)) {\n target[name] = value\n } else {\n // numeric string\n adm.set_(parseInt(name), value)\n }\n return true\n },\n preventExtensions() {\n die(15)\n }\n}\n\nexport class ObservableArrayAdministration\n implements IInterceptable<IArrayWillChange<any> | IArrayWillSplice<any>>, IListenable\n{\n atom_: IAtom\n readonly values_: any[] = [] // this is the prop that gets proxied, so can't replace it!\n interceptors_\n changeListeners_\n enhancer_: (newV: any, oldV: any | undefined) => any\n dehancer: any\n proxy_!: IObservableArray<any>\n lastKnownLength_ = 0\n\n constructor(\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n enhancer: IEnhancer<any>,\n public owned_: boolean,\n public legacyMode_: boolean\n ) {\n this.atom_ = new Atom(name)\n this.enhancer_ = (newV, oldV) =>\n enhancer(newV, oldV, __DEV__ ? name + \"[..]\" : \"ObservableArray[..]\")\n }\n\n dehanceValue_(value: any): any {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n dehanceValues_(values: any[]): any[] {\n if (this.dehancer !== undefined && values.length > 0) {\n return values.map(this.dehancer) as any\n }\n return values\n }\n\n intercept_(handler: IInterceptor<IArrayWillChange<any> | IArrayWillSplice<any>>): Lambda {\n return registerInterceptor<IArrayWillChange<any> | IArrayWillSplice<any>>(this, handler)\n }\n\n observe_(\n listener: (changeData: IArrayDidChange<any>) => void,\n fireImmediately = false\n ): Lambda {\n if (fireImmediately) {\n listener(<IArraySplice<any>>{\n observableKind: \"array\",\n object: this.proxy_ as any,\n debugObjectName: this.atom_.name_,\n type: \"splice\",\n index: 0,\n added: this.values_.slice(),\n addedCount: this.values_.length,\n removed: [],\n removedCount: 0\n })\n }\n return registerListener(this, listener)\n }\n\n getArrayLength_(): number {\n this.atom_.reportObserved()\n return this.values_.length\n }\n\n setArrayLength_(newLength: number) {\n if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) {\n die(\"Out of range: \" + newLength)\n }\n let currentLength = this.values_.length\n if (newLength === currentLength) {\n return\n } else if (newLength > currentLength) {\n const newItems = new Array(newLength - currentLength)\n for (let i = 0; i < newLength - currentLength; i++) {\n newItems[i] = undefined\n } // No Array.fill everywhere...\n this.spliceWithArray_(currentLength, 0, newItems)\n } else {\n this.spliceWithArray_(newLength, currentLength - newLength)\n }\n }\n\n updateArrayLength_(oldLength: number, delta: number) {\n if (oldLength !== this.lastKnownLength_) {\n die(16)\n }\n this.lastKnownLength_ += delta\n if (this.legacyMode_ && delta > 0) {\n reserveArrayBuffer(oldLength + delta + 1)\n }\n }\n\n spliceWithArray_(index: number, deleteCount?: number, newItems?: any[]): any[] {\n checkIfStateModificationsAreAllowed(this.atom_)\n const length = this.values_.length\n\n if (index === undefined) {\n index = 0\n } else if (index > length) {\n index = length\n } else if (index < 0) {\n index = Math.max(0, length + index)\n }\n\n if (arguments.length === 1) {\n deleteCount = length - index\n } else if (deleteCount === undefined || deleteCount === null) {\n deleteCount = 0\n } else {\n deleteCount = Math.max(0, Math.min(deleteCount, length - index))\n }\n\n if (newItems === undefined) {\n newItems = EMPTY_ARRAY\n }\n\n if (hasInterceptors(this)) {\n const change = interceptChange<IArrayWillSplice<any>>(this as any, {\n object: this.proxy_ as any,\n type: SPLICE,\n index,\n removedCount: deleteCount,\n added: newItems\n })\n if (!change) {\n return EMPTY_ARRAY\n }\n deleteCount = change.removedCount\n newItems = change.added\n }\n\n newItems =\n newItems.length === 0 ? newItems : newItems.map(v => this.enhancer_(v, undefined))\n if (this.legacyMode_ || __DEV__) {\n const lengthDelta = newItems.length - deleteCount\n this.updateArrayLength_(length, lengthDelta) // checks if internal array wasn't modified\n }\n const res = this.spliceItemsIntoValues_(index, deleteCount, newItems)\n\n if (deleteCount !== 0 || newItems.length !== 0) {\n this.notifyArraySplice_(index, newItems, res)\n }\n return this.dehanceValues_(res)\n }\n\n spliceItemsIntoValues_(index: number, deleteCount: number, newItems: any[]): any[] {\n if (newItems.length < MAX_SPLICE_SIZE) {\n return this.values_.splice(index, deleteCount, ...newItems)\n } else {\n // The items removed by the splice\n const res = this.values_.slice(index, index + deleteCount)\n // The items that that should remain at the end of the array\n let oldItems = this.values_.slice(index + deleteCount)\n // New length is the previous length + addition count - deletion count\n this.values_.length += newItems.length - deleteCount\n for (let i = 0; i < newItems.length; i++) {\n this.values_[index + i] = newItems[i]\n }\n for (let i = 0; i < oldItems.length; i++) {\n this.values_[index + newItems.length + i] = oldItems[i]\n }\n return res\n }\n }\n\n notifyArrayChildUpdate_(index: number, newValue: any, oldValue: any) {\n const notifySpy = !this.owned_ && isSpyEnabled()\n const notify = hasListeners(this)\n const change: IArrayDidChange | null =\n notify || notifySpy\n ? ({\n observableKind: \"array\",\n object: this.proxy_,\n type: UPDATE,\n debugObjectName: this.atom_.name_,\n index,\n newValue,\n oldValue\n } as const)\n : null\n\n // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n this.atom_.reportChanged()\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n notifyArraySplice_(index: number, added: any[], removed: any[]) {\n const notifySpy = !this.owned_ && isSpyEnabled()\n const notify = hasListeners(this)\n const change: IArraySplice | null =\n notify || notifySpy\n ? ({\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: SPLICE,\n index,\n removed,\n added,\n removedCount: removed.length,\n addedCount: added.length\n } as const)\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n this.atom_.reportChanged()\n // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n get_(index: number): any | undefined {\n if (this.legacyMode_ && index >= this.values_.length) {\n console.warn(\n __DEV__\n ? `[mobx.array] Attempt to read an array index (${index}) that is out of bounds (${this.values_.length}). Please check length first. Out of bound indices will not be tracked by MobX`\n : `[mobx] Out of bounds read: ${index}`\n )\n return undefined\n }\n this.atom_.reportObserved()\n return this.dehanceValue_(this.values_[index])\n }\n\n set_(index: number, newValue: any) {\n const values = this.values_\n if (this.legacyMode_ && index > values.length) {\n // out of bounds\n die(17, index, values.length)\n }\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(this.atom_)\n const oldValue = values[index]\n if (hasInterceptors(this)) {\n const change = interceptChange<IArrayWillChange<any>>(this as any, {\n type: UPDATE,\n object: this.proxy_ as any, // since \"this\" is the real array we need to pass its proxy\n index,\n newValue\n })\n if (!change) {\n return\n }\n newValue = change.newValue\n }\n newValue = this.enhancer_(newValue, oldValue)\n const changed = newValue !== oldValue\n if (changed) {\n values[index] = newValue\n this.notifyArrayChildUpdate_(index, newValue, oldValue)\n }\n } else {\n // For out of bound index, we don't create an actual sparse array,\n // but rather fill the holes with undefined (same as setArrayLength_).\n // This could be considered a bug.\n const newItems = new Array(index + 1 - values.length)\n for (let i = 0; i < newItems.length - 1; i++) {\n newItems[i] = undefined\n } // No Array.fill everywhere...\n newItems[newItems.length - 1] = newValue\n this.spliceWithArray_(values.length, 0, newItems)\n }\n }\n}\n\nexport function createObservableArray<T>(\n initialValues: T[] | undefined,\n enhancer: IEnhancer<T>,\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n owned = false\n): IObservableArray<T> {\n assertProxies()\n const adm = new ObservableArrayAdministration(name, enhancer, owned, false)\n addHiddenFinalProp(adm.values_, $mobx, adm)\n const proxy = new Proxy(adm.values_, arrayTraps) as any\n adm.proxy_ = proxy\n if (initialValues && initialValues.length) {\n const prev = allowStateChangesStart(true)\n adm.spliceWithArray_(0, 0, initialValues)\n allowStateChangesEnd(prev)\n }\n return proxy\n}\n\n// eslint-disable-next-line\nexport var arrayExtensions = {\n clear(): any[] {\n return this.splice(0)\n },\n\n replace(newItems: any[]) {\n const adm: ObservableArrayAdministration = this[$mobx]\n return adm.spliceWithArray_(0, adm.values_.length, newItems)\n },\n\n // Used by JSON.stringify\n toJSON(): any[] {\n return this.slice()\n },\n\n /*\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\n * since these functions alter the inner structure of the array, the have side effects.\n * Because the have side effects, they should not be used in computed function,\n * and for that reason the do not call dependencyState.notifyObserved\n */\n splice(index: number, deleteCount?: number, ...newItems: any[]): any[] {\n const adm: ObservableArrayAdministration = this[$mobx]\n switch (arguments.length) {\n case 0:\n return []\n case 1:\n return adm.spliceWithArray_(index)\n case 2:\n return adm.spliceWithArray_(index, deleteCount)\n }\n return adm.spliceWithArray_(index, deleteCount, newItems)\n },\n\n spliceWithArray(index: number, deleteCount?: number, newItems?: any[]): any[] {\n return (this[$mobx] as ObservableArrayAdministration).spliceWithArray_(\n index,\n deleteCount,\n newItems\n )\n },\n\n push(...items: any[]): number {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.spliceWithArray_(adm.values_.length, 0, items)\n return adm.values_.length\n },\n\n pop() {\n return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0]\n },\n\n shift() {\n return this.splice(0, 1)[0]\n },\n\n unshift(...items: any[]): number {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.spliceWithArray_(0, 0, items)\n return adm.values_.length\n },\n\n reverse(): any[] {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n if (globalState.trackingDerivation) {\n die(37, \"reverse\")\n }\n this.replace(this.slice().reverse())\n return this\n },\n\n sort(): any[] {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n if (globalState.trackingDerivation) {\n die(37, \"sort\")\n }\n const copy = this.slice()\n copy.sort.apply(copy, arguments)\n this.replace(copy)\n return this\n },\n\n remove(value: any): boolean {\n const adm: ObservableArrayAdministration = this[$mobx]\n const idx = adm.dehanceValues_(adm.values_).indexOf(value)\n if (idx > -1) {\n this.splice(idx, 1)\n return true\n }\n return false\n }\n}\n\n/**\n * Wrap function from prototype\n * Without this, everything works as well, but this works\n * faster as everything works on unproxied values\n */\naddArrayExtension(\"concat\", simpleFunc)\naddArrayExtension(\"flat\", simpleFunc)\naddArrayExtension(\"includes\", simpleFunc)\naddArrayExtension(\"indexOf\", simpleFunc)\naddArrayExtension(\"join\", simpleFunc)\naddArrayExtension(\"lastIndexOf\", simpleFunc)\naddArrayExtension(\"slice\", simpleFunc)\naddArrayExtension(\"toString\", simpleFunc)\naddArrayExtension(\"toLocaleString\", simpleFunc)\n// map\naddArrayExtension(\"every\", mapLikeFunc)\naddArrayExtension(\"filter\", mapLikeFunc)\naddArrayExtension(\"find\", mapLikeFunc)\naddArrayExtension(\"findIndex\", mapLikeFunc)\naddArrayExtension(\"flatMap\", mapLikeFunc)\naddArrayExtension(\"forEach\", mapLikeFunc)\naddArrayExtension(\"map\", mapLikeFunc)\naddArrayExtension(\"some\", mapLikeFunc)\n// reduce\naddArrayExtension(\"reduce\", reduceLikeFunc)\naddArrayExtension(\"reduceRight\", reduceLikeFunc)\n\nfunction addArrayExtension(funcName, funcFactory) {\n if (typeof Array.prototype[funcName] === \"function\") {\n arrayExtensions[funcName] = funcFactory(funcName)\n }\n}\n\n// Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n return function () {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n return dehancedValues[funcName].apply(dehancedValues, arguments)\n }\n}\n\n// Make sure callbacks recieve correct array arg #2326\nfunction mapLikeFunc(funcName) {\n return function (callback, thisArg) {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n return dehancedValues[funcName]((element, index) => {\n return callback.call(thisArg, element, index, this)\n })\n }\n}\n\n// Make sure callbacks recieve correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n return function () {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n // #2432 - reduce behavior depends on arguments.length\n const callback = arguments[0]\n arguments[0] = (accumulator, currentValue, index) => {\n return callback(accumulator, currentValue, index, this)\n }\n return dehancedValues[funcName].apply(dehancedValues, arguments)\n }\n}\n\nconst isObservableArrayAdministration = createInstanceofPredicate(\n \"ObservableArrayAdministration\",\n ObservableArrayAdministration\n)\n\nexport function isObservableArray(thing): thing is IObservableArray<any> {\n return isObject(thing) && isObservableArrayAdministration(thing[$mobx])\n}\n","import { IComputedDidChange } from \"./computedvalue\"\nimport { IValueDidChange, IBoxDidChange } from \"./../types/observablevalue\"\nimport { IObjectDidChange } from \"./../types/observableobject\"\nimport { IArrayDidChange } from \"./../types/observablearray\"\nimport { Lambda, globalState, once, ISetDidChange, IMapDidChange } from \"../internal\"\n\nexport function isSpyEnabled() {\n return __DEV__ && !!globalState.spyListeners.length\n}\n\nexport type PureSpyEvent =\n | { type: \"action\"; name: string; object: unknown; arguments: unknown[] }\n | { type: \"scheduled-reaction\"; name: string }\n | { type: \"reaction\"; name: string }\n | { type: \"error\"; name: string; message: string; error: string }\n | IComputedDidChange<unknown>\n | IObjectDidChange<unknown>\n | IArrayDidChange<unknown>\n | IMapDidChange<unknown, unknown>\n | ISetDidChange<unknown>\n | IValueDidChange<unknown>\n | IBoxDidChange<unknown>\n | { type: \"report-end\"; spyReportEnd: true; time?: number }\n\ntype SpyEvent = PureSpyEvent & { spyReportStart?: true }\n\nexport function spyReport(event: SpyEvent) {\n if (!__DEV__) {\n return\n } // dead code elimination can do the rest\n if (!globalState.spyListeners.length) {\n return\n }\n const listeners = globalState.spyListeners\n for (let i = 0, l = listeners.length; i < l; i++) {\n listeners[i](event)\n }\n}\n\nexport function spyReportStart(event: PureSpyEvent) {\n if (!__DEV__) {\n return\n }\n const change = { ...event, spyReportStart: true as const }\n spyReport(change)\n}\n\nconst END_EVENT: SpyEvent = { type: \"report-end\", spyReportEnd: true }\n\nexport function spyReportEnd(change?: { time?: number }) {\n if (!__DEV__) {\n return\n }\n if (change) {\n spyReport({ ...change, type: \"report-end\", spyReportEnd: true })\n } else {\n spyReport(END_EVENT)\n }\n}\n\nexport function spy(listener: (change: SpyEvent) => void): Lambda {\n if (!__DEV__) {\n console.warn(`[mobx.spy] Is a no-op in production builds`)\n return function () {}\n } else {\n globalState.spyListeners.push(listener)\n return once(() => {\n globalState.spyListeners = globalState.spyListeners.filter(l => l !== listener)\n })\n }\n}\n","import {\n $mobx,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n Lambda,\n ObservableValue,\n checkIfStateModificationsAreAllowed,\n createAtom,\n createInstanceofPredicate,\n deepEnhancer,\n getNextId,\n getPlainObjectKeys,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isES6Map,\n isPlainObject,\n isSpyEnabled,\n makeIterable,\n notifyListeners,\n referenceEnhancer,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n stringifyKey,\n transaction,\n untracked,\n onBecomeUnobserved,\n globalState,\n die,\n isFunction,\n UPDATE,\n IAtom,\n PureSpyEvent,\n allowStateChanges\n} from \"../internal\"\n\nexport interface IKeyValueMap<V = any> {\n [key: string]: V\n}\n\nexport type IMapEntry<K = any, V = any> = [K, V]\nexport type IReadonlyMapEntry<K = any, V = any> = readonly [K, V]\nexport type IMapEntries<K = any, V = any> = IMapEntry<K, V>[]\nexport type IReadonlyMapEntries<K = any, V = any> = IReadonlyMapEntry<K, V>[]\n\nexport type IMapDidChange<K = any, V = any> = { observableKind: \"map\"; debugObjectName: string } & (\n | {\n object: ObservableMap<K, V>\n name: K // actual the key or index, but this is based on the ancient .observe proposal for consistency\n type: \"update\"\n newValue: V\n oldValue: V\n }\n | {\n object: ObservableMap<K, V>\n name: K\n type: \"add\"\n newValue: V\n }\n | {\n object: ObservableMap<K, V>\n name: K\n type: \"delete\"\n oldValue: V\n }\n)\n\nexport interface IMapWillChange<K = any, V = any> {\n object: ObservableMap<K, V>\n type: \"update\" | \"add\" | \"delete\"\n name: K\n newValue?: V\n}\n\nconst ObservableMapMarker = {}\n\nexport const ADD = \"add\"\nexport const DELETE = \"delete\"\n\nexport type IObservableMapInitialValues<K = any, V = any> =\n | IMapEntries<K, V>\n | IReadonlyMapEntries<K, V>\n | IKeyValueMap<V>\n | Map<K, V>\n\n// just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\nexport class ObservableMap<K = any, V = any>\n implements Map<K, V>, IInterceptable<IMapWillChange<K, V>>, IListenable {\n [$mobx] = ObservableMapMarker\n data_: Map<K, ObservableValue<V>>\n hasMap_: Map<K, ObservableValue<boolean>> // hasMap, not hashMap >-).\n keysAtom_: IAtom\n interceptors_\n changeListeners_\n dehancer: any\n\n constructor(\n initialData?: IObservableMapInitialValues<K, V>,\n public enhancer_: IEnhancer<V> = deepEnhancer,\n public name_ = __DEV__ ? \"ObservableMap@\" + getNextId() : \"ObservableMap\"\n ) {\n if (!isFunction(Map)) {\n die(18)\n }\n this.keysAtom_ = createAtom(__DEV__ ? `${this.name_}.keys()` : \"ObservableMap.keys()\")\n this.data_ = new Map()\n this.hasMap_ = new Map()\n allowStateChanges(true, () => {\n this.merge(initialData)\n })\n }\n\n private has_(key: K): boolean {\n return this.data_.has(key)\n }\n\n has(key: K): boolean {\n if (!globalState.trackingDerivation) {\n return this.has_(key)\n }\n\n let entry = this.hasMap_.get(key)\n if (!entry) {\n const newEntry = (entry = new ObservableValue(\n this.has_(key),\n referenceEnhancer,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableMap.key?\",\n false\n ))\n this.hasMap_.set(key, newEntry)\n onBecomeUnobserved(newEntry, () => this.hasMap_.delete(key))\n }\n\n return entry.get()\n }\n\n set(key: K, value: V) {\n const hasKey = this.has_(key)\n if (hasInterceptors(this)) {\n const change = interceptChange<IMapWillChange<K, V>>(this, {\n type: hasKey ? UPDATE : ADD,\n object: this,\n newValue: value,\n name: key\n })\n if (!change) {\n return this\n }\n value = change.newValue!\n }\n if (hasKey) {\n this.updateValue_(key, value)\n } else {\n this.addValue_(key, value)\n }\n return this\n }\n\n delete(key: K): boolean {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n if (hasInterceptors(this)) {\n const change = interceptChange<IMapWillChange<K, V>>(this, {\n type: DELETE,\n object: this,\n name: key\n })\n if (!change) {\n return false\n }\n }\n if (this.has_(key)) {\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange<K, V> | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: (<any>this.data_.get(key)).value_,\n name: key\n }\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n transaction(() => {\n this.keysAtom_.reportChanged()\n this.hasMap_.get(key)?.setNewValue_(false)\n const observable = this.data_.get(key)!\n observable.setNewValue_(undefined as any)\n this.data_.delete(key)\n })\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n return true\n }\n return false\n }\n\n private updateValue_(key: K, newValue: V | undefined) {\n const observable = this.data_.get(key)!\n newValue = (observable as any).prepareNewValue_(newValue) as V\n if (newValue !== globalState.UNCHANGED) {\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange<K, V> | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n oldValue: (observable as any).value_,\n name: key,\n newValue\n }\n : null\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n observable.setNewValue_(newValue as V)\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n }\n\n private addValue_(key: K, newValue: V) {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n transaction(() => {\n const observable = new ObservableValue(\n newValue,\n this.enhancer_,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}` : \"ObservableMap.key\",\n false\n )\n this.data_.set(key, observable)\n newValue = (observable as any).value_ // value might have been changed\n this.hasMap_.get(key)?.setNewValue_(true)\n this.keysAtom_.reportChanged()\n })\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange<K, V> | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n name: key,\n newValue\n }\n : null\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n get(key: K): V | undefined {\n if (this.has(key)) {\n return this.dehanceValue_(this.data_.get(key)!.get())\n }\n return this.dehanceValue_(undefined)\n }\n\n private dehanceValue_<X extends V | undefined>(value: X): X {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n keys(): IterableIterator<K> {\n this.keysAtom_.reportObserved()\n return this.data_.keys()\n }\n\n values(): IterableIterator<V> {\n const self = this\n const keys = this.keys()\n return makeIterable({\n next() {\n const { done, value } = keys.next()\n return {\n done,\n value: done ? (undefined as any) : self.get(value)\n }\n }\n })\n }\n\n entries(): IterableIterator<IMapEntry<K, V>> {\n const self = this\n const keys = this.keys()\n return makeIterable({\n next() {\n const { done, value } = keys.next()\n return {\n done,\n value: done ? (undefined as any) : ([value, self.get(value)!] as [K, V])\n }\n }\n })\n }\n\n [Symbol.iterator]() {\n return this.entries()\n }\n\n forEach(callback: (value: V, key: K, object: Map<K, V>) => void, thisArg?) {\n for (const [key, value] of this) {\n callback.call(thisArg, value, key, this)\n }\n }\n\n /** Merge another object into this object, returns this. */\n merge(other?: IObservableMapInitialValues<K, V>): ObservableMap<K, V> {\n if (isObservableMap(other)) {\n other = new Map(other)\n }\n transaction(() => {\n if (isPlainObject(other)) {\n getPlainObjectKeys(other).forEach((key: any) =>\n this.set(key as K, (other as IKeyValueMap)[key])\n )\n } else if (Array.isArray(other)) {\n other.forEach(([key, value]) => this.set(key, value))\n } else if (isES6Map(other)) {\n if (other.constructor !== Map) {\n die(19, other)\n }\n other.forEach((value, key) => this.set(key, value))\n } else if (other !== null && other !== undefined) {\n die(20, other)\n }\n })\n return this\n }\n\n clear() {\n transaction(() => {\n untracked(() => {\n for (const key of this.keys()) {\n this.delete(key)\n }\n })\n })\n }\n\n replace(values: IObservableMapInitialValues<K, V>): ObservableMap<K, V> {\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(() => {\n // Convert to map so we can do quick key lookups\n const replacementMap = convertToMap(values)\n const orderedData = new Map()\n // Used for optimization\n let keysReportChangedCalled = false\n // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n for (const key of this.data_.keys()) {\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n const deleted = this.delete(key)\n // Was the key removed?\n if (deleted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true\n } else {\n // Delete prevented by interceptor\n const value = this.data_.get(key)\n orderedData.set(key, value)\n }\n }\n }\n // Merge entries\n for (const [key, value] of replacementMap.entries()) {\n // We will want to know whether a new key is added\n const keyExisted = this.data_.has(key)\n // Add or update value\n this.set(key, value)\n // The addition could have been prevent by interceptor\n if (this.data_.has(key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n const value = this.data_.get(key)\n orderedData.set(key, value)\n // Was a new key added?\n if (!keyExisted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true\n }\n }\n }\n // Check for possible key order change\n if (!keysReportChangedCalled) {\n if (this.data_.size !== orderedData.size) {\n // If size differs, keys are definitely modified\n this.keysAtom_.reportChanged()\n } else {\n const iter1 = this.data_.keys()\n const iter2 = orderedData.keys()\n let next1 = iter1.next()\n let next2 = iter2.next()\n while (!next1.done) {\n if (next1.value !== next2.value) {\n this.keysAtom_.reportChanged()\n break\n }\n next1 = iter1.next()\n next2 = iter2.next()\n }\n }\n }\n // Use correctly ordered map\n this.data_ = orderedData\n })\n return this\n }\n\n get size(): number {\n this.keysAtom_.reportObserved()\n return this.data_.size\n }\n\n toString(): string {\n return \"[object ObservableMap]\"\n }\n\n toJSON(): [K, V][] {\n return Array.from(this)\n }\n\n get [Symbol.toStringTag]() {\n return \"Map\"\n }\n\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n observe_(listener: (changes: IMapDidChange<K, V>) => void, fireImmediately?: boolean): Lambda {\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with maps.\")\n }\n return registerListener(this, listener)\n }\n\n intercept_(handler: IInterceptor<IMapWillChange<K, V>>): Lambda {\n return registerInterceptor(this, handler)\n }\n}\n\n// eslint-disable-next-line\nexport var isObservableMap = createInstanceofPredicate(\"ObservableMap\", ObservableMap) as (\n thing: any\n) => thing is ObservableMap<any, any>\n\nfunction convertToMap(dataStructure: any): Map<any, any> {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n return dataStructure\n } else if (Array.isArray(dataStructure)) {\n return new Map(dataStructure)\n } else if (isPlainObject(dataStructure)) {\n const map = new Map()\n for (const key in dataStructure) {\n map.set(key, dataStructure[key])\n }\n return map\n } else {\n return die(21, dataStructure)\n }\n}\n","import {\n $mobx,\n createAtom,\n deepEnhancer,\n getNextId,\n IEnhancer,\n isSpyEnabled,\n hasListeners,\n IListenable,\n registerListener,\n Lambda,\n spyReportStart,\n notifyListeners,\n spyReportEnd,\n createInstanceofPredicate,\n hasInterceptors,\n interceptChange,\n IInterceptable,\n IInterceptor,\n registerInterceptor,\n checkIfStateModificationsAreAllowed,\n untracked,\n makeIterable,\n transaction,\n isES6Set,\n IAtom,\n DELETE,\n ADD,\n die,\n isFunction\n} from \"../internal\"\n\nconst ObservableSetMarker = {}\n\nexport type IObservableSetInitialValues<T> = Set<T> | readonly T[]\n\nexport type ISetDidChange<T = any> =\n | {\n object: ObservableSet<T>\n observableKind: \"set\"\n debugObjectName: string\n type: \"add\"\n newValue: T\n }\n | {\n object: ObservableSet<T>\n observableKind: \"set\"\n debugObjectName: string\n type: \"delete\"\n oldValue: T\n }\n\nexport type ISetWillChange<T = any> =\n | {\n type: \"delete\"\n object: ObservableSet<T>\n oldValue: T\n }\n | {\n type: \"add\"\n object: ObservableSet<T>\n newValue: T\n }\n\nexport class ObservableSet<T = any> implements Set<T>, IInterceptable<ISetWillChange>, IListenable {\n [$mobx] = ObservableSetMarker\n private data_: Set<any> = new Set()\n atom_: IAtom\n changeListeners_\n interceptors_\n dehancer: any\n enhancer_: (newV: any, oldV: any | undefined) => any\n\n constructor(\n initialData?: IObservableSetInitialValues<T>,\n enhancer: IEnhancer<T> = deepEnhancer,\n public name_ = __DEV__ ? \"ObservableSet@\" + getNextId() : \"ObservableSet\"\n ) {\n if (!isFunction(Set)) {\n die(22)\n }\n this.atom_ = createAtom(this.name_)\n this.enhancer_ = (newV, oldV) => enhancer(newV, oldV, name_)\n if (initialData) {\n this.replace(initialData)\n }\n }\n\n private dehanceValue_<X extends T | undefined>(value: X): X {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n clear() {\n transaction(() => {\n untracked(() => {\n for (const value of this.data_.values()) {\n this.delete(value)\n }\n })\n })\n }\n\n forEach(callbackFn: (value: T, value2: T, set: Set<T>) => void, thisArg?: any) {\n for (const value of this) {\n callbackFn.call(thisArg, value, value, this)\n }\n }\n\n get size() {\n this.atom_.reportObserved()\n return this.data_.size\n }\n\n add(value: T) {\n checkIfStateModificationsAreAllowed(this.atom_)\n if (hasInterceptors(this)) {\n const change = interceptChange<ISetWillChange<T>>(this, {\n type: ADD,\n object: this,\n newValue: value\n })\n if (!change) {\n return this\n }\n // ideally, value = change.value would be done here, so that values can be\n // changed by interceptor. Same applies for other Set and Map api's.\n }\n if (!this.has(value)) {\n transaction(() => {\n this.data_.add(this.enhancer_(value, undefined))\n this.atom_.reportChanged()\n })\n const notifySpy = __DEV__ && isSpyEnabled()\n const notify = hasListeners(this)\n const change =\n notify || notifySpy\n ? <ISetDidChange<T>>{\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n newValue: value\n }\n : null\n if (notifySpy && __DEV__) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (notifySpy && __DEV__) {\n spyReportEnd()\n }\n }\n\n return this\n }\n\n delete(value: T) {\n if (hasInterceptors(this)) {\n const change = interceptChange<ISetWillChange<T>>(this, {\n type: DELETE,\n object: this,\n oldValue: value\n })\n if (!change) {\n return false\n }\n }\n if (this.has(value)) {\n const notifySpy = __DEV__ && isSpyEnabled()\n const notify = hasListeners(this)\n const change =\n notify || notifySpy\n ? <ISetDidChange<T>>{\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: value\n }\n : null\n\n if (notifySpy && __DEV__) {\n spyReportStart(change!)\n }\n transaction(() => {\n this.atom_.reportChanged()\n this.data_.delete(value)\n })\n if (notify) {\n notifyListeners(this, change)\n }\n if (notifySpy && __DEV__) {\n spyReportEnd()\n }\n return true\n }\n return false\n }\n\n has(value: T) {\n this.atom_.reportObserved()\n return this.data_.has(this.dehanceValue_(value))\n }\n\n entries() {\n let nextIndex = 0\n const keys = Array.from(this.keys())\n const values = Array.from(this.values())\n return makeIterable<[T, T]>({\n next() {\n const index = nextIndex\n nextIndex += 1\n return index < values.length\n ? { value: [keys[index], values[index]], done: false }\n : { done: true }\n }\n } as any)\n }\n\n keys(): IterableIterator<T> {\n return this.values()\n }\n\n values(): IterableIterator<T> {\n this.atom_.reportObserved()\n const self = this\n let nextIndex = 0\n const observableValues = Array.from(this.data_.values())\n return makeIterable<T>({\n next() {\n return nextIndex < observableValues.length\n ? { value: self.dehanceValue_(observableValues[nextIndex++]), done: false }\n : { done: true }\n }\n } as any)\n }\n\n replace(other: ObservableSet<T> | IObservableSetInitialValues<T>): ObservableSet<T> {\n if (isObservableSet(other)) {\n other = new Set(other)\n }\n\n transaction(() => {\n if (Array.isArray(other)) {\n this.clear()\n other.forEach(value => this.add(value))\n } else if (isES6Set(other)) {\n this.clear()\n other.forEach(value => this.add(value))\n } else if (other !== null && other !== undefined) {\n die(\"Cannot initialize set from \" + other)\n }\n })\n\n return this\n }\n observe_(listener: (changes: ISetDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n // ... 'fireImmediately' could also be true?\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with sets.\")\n }\n return registerListener(this, listener)\n }\n\n intercept_(handler: IInterceptor<ISetWillChange<T>>): Lambda {\n return registerInterceptor(this, handler)\n }\n\n toJSON(): T[] {\n return Array.from(this)\n }\n\n toString(): string {\n return \"[object ObservableSet]\"\n }\n\n [Symbol.iterator]() {\n return this.values()\n }\n\n get [Symbol.toStringTag]() {\n return \"Set\"\n }\n}\n\n// eslint-disable-next-line\nexport var isObservableSet = createInstanceofPredicate(\"ObservableSet\", ObservableSet) as (\n thing: any\n) => thing is ObservableSet<any>\n","import {\n CreateObservableOptions,\n getAnnotationFromOptions,\n propagateChanged,\n isAnnotation,\n $mobx,\n Atom,\n Annotation,\n ComputedValue,\n IAtom,\n IComputedValueOptions,\n IEnhancer,\n IInterceptable,\n IListenable,\n Lambda,\n ObservableValue,\n addHiddenProp,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isObject,\n isPlainObject,\n isSpyEnabled,\n notifyListeners,\n referenceEnhancer,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n startBatch,\n stringifyKey,\n globalState,\n ADD,\n UPDATE,\n die,\n hasProp,\n getDescriptor,\n storedAnnotationsSymbol,\n ownKeys,\n isOverride,\n defineProperty,\n autoAnnotation,\n getAdministration,\n getDebugName,\n objectPrototype,\n MakeResult\n} from \"../internal\"\n\nconst descriptorCache = Object.create(null)\n\nexport type IObjectDidChange<T = any> = {\n observableKind: \"object\"\n name: PropertyKey\n object: T\n debugObjectName: string\n} & (\n | {\n type: \"add\"\n newValue: any\n }\n | {\n type: \"update\"\n oldValue: any\n newValue: any\n }\n | {\n type: \"remove\"\n oldValue: any\n }\n)\n\nexport type IObjectWillChange<T = any> =\n | {\n object: T\n type: \"update\" | \"add\"\n name: PropertyKey\n newValue: any\n }\n | {\n object: T\n type: \"remove\"\n name: PropertyKey\n }\n\nconst REMOVE = \"remove\"\n\nexport class ObservableObjectAdministration\n implements IInterceptable<IObjectWillChange>, IListenable\n{\n keysAtom_: IAtom\n changeListeners_\n interceptors_\n proxy_: any\n isPlainObject_: boolean\n appliedAnnotations_?: object\n private pendingKeys_: undefined | Map<PropertyKey, ObservableValue<boolean>>\n\n constructor(\n public target_: any,\n public values_ = new Map<PropertyKey, ObservableValue<any> | ComputedValue<any>>(),\n public name_: string,\n // Used anytime annotation is not explicitely provided\n public defaultAnnotation_: Annotation = autoAnnotation\n ) {\n this.keysAtom_ = new Atom(__DEV__ ? `${this.name_}.keys` : \"ObservableObject.keys\")\n // Optimization: we use this frequently\n this.isPlainObject_ = isPlainObject(this.target_)\n if (__DEV__ && !isAnnotation(this.defaultAnnotation_)) {\n die(`defaultAnnotation must be valid annotation`)\n }\n if (__DEV__) {\n // Prepare structure for tracking which fields were already annotated\n this.appliedAnnotations_ = {}\n }\n }\n\n getObservablePropValue_(key: PropertyKey): any {\n return this.values_.get(key)!.get()\n }\n\n setObservablePropValue_(key: PropertyKey, newValue): boolean | null {\n const observable = this.values_.get(key)\n if (observable instanceof ComputedValue) {\n observable.set(newValue)\n return true\n }\n\n // intercept\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n type: UPDATE,\n object: this.proxy_ || this.target_,\n name: key,\n newValue\n })\n if (!change) {\n return null\n }\n newValue = (change as any).newValue\n }\n newValue = (observable as any).prepareNewValue_(newValue)\n\n // notify spy & observers\n if (newValue !== globalState.UNCHANGED) {\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n const change: IObjectDidChange | null =\n notify || notifySpy\n ? {\n type: UPDATE,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n oldValue: (observable as any).value_,\n name: key,\n newValue\n }\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n ;(observable as ObservableValue<any>).setNewValue_(newValue)\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n return true\n }\n\n get_(key: PropertyKey): any {\n if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n // Key doesn't exist yet, subscribe for it in case it's added later\n this.has_(key)\n }\n return this.target_[key]\n }\n\n /**\n * @param {PropertyKey} key\n * @param {any} value\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n set_(key: PropertyKey, value: any, proxyTrap: boolean = false): boolean | null {\n // Don't use .has(key) - we care about own\n if (hasProp(this.target_, key)) {\n // Existing prop\n if (this.values_.has(key)) {\n // Observable (can be intercepted)\n return this.setObservablePropValue_(key, value)\n } else if (proxyTrap) {\n // Non-observable - proxy\n return Reflect.set(this.target_, key, value)\n } else {\n // Non-observable\n this.target_[key] = value\n return true\n }\n } else {\n // New prop\n return this.extend_(\n key,\n { value, enumerable: true, writable: true, configurable: true },\n this.defaultAnnotation_,\n proxyTrap\n )\n }\n }\n\n // Trap for \"in\"\n has_(key: PropertyKey): boolean {\n if (!globalState.trackingDerivation) {\n // Skip key subscription outside derivation\n return key in this.target_\n }\n this.pendingKeys_ ||= new Map()\n let entry = this.pendingKeys_.get(key)\n if (!entry) {\n entry = new ObservableValue(\n key in this.target_,\n referenceEnhancer,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableObject.key?\",\n false\n )\n this.pendingKeys_.set(key, entry)\n }\n return entry.get()\n }\n\n /**\n * @param {PropertyKey} key\n * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\n */\n make_(key: PropertyKey, annotation: Annotation | boolean): void {\n if (annotation === true) {\n annotation = this.defaultAnnotation_\n }\n if (annotation === false) {\n return\n }\n assertAnnotable(this, annotation, key)\n if (!(key in this.target_)) {\n // Throw on missing key, except for decorators:\n // Decorator annotations are collected from whole prototype chain.\n // When called from super() some props may not exist yet.\n // However we don't have to worry about missing prop,\n // because the decorator must have been applied to something.\n if (this.target_[storedAnnotationsSymbol]?.[key]) {\n return // will be annotated by subclass constructor\n } else {\n die(1, annotation.annotationType_, `${this.name_}.${key.toString()}`)\n }\n }\n let source = this.target_\n while (source && source !== objectPrototype) {\n const descriptor = getDescriptor(source, key)\n if (descriptor) {\n const outcome = annotation.make_(this, key, descriptor, source)\n if (outcome === MakeResult.Cancel) {\n return\n }\n if (outcome === MakeResult.Break) {\n break\n }\n }\n source = Object.getPrototypeOf(source)\n }\n recordAnnotationApplied(this, annotation, key)\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n extend_(\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n annotation: Annotation | boolean,\n proxyTrap: boolean = false\n ): boolean | null {\n if (annotation === true) {\n annotation = this.defaultAnnotation_\n }\n if (annotation === false) {\n return this.defineProperty_(key, descriptor, proxyTrap)\n }\n assertAnnotable(this, annotation, key)\n const outcome = annotation.extend_(this, key, descriptor, proxyTrap)\n if (outcome) {\n recordAnnotationApplied(this, annotation, key)\n }\n return outcome\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n defineProperty_(\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean = false\n ): boolean | null {\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: descriptor.value\n })\n if (!change) {\n return null\n }\n const { newValue } = change as any\n if (descriptor.value !== newValue) {\n descriptor = {\n ...descriptor,\n value: newValue\n }\n }\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n // Notify\n this.notifyPropertyAddition_(key, descriptor.value)\n } finally {\n endBatch()\n }\n return true\n }\n\n // If original descriptor becomes relevant, move this to annotation directly\n defineObservableProperty_(\n key: PropertyKey,\n value: any,\n enhancer: IEnhancer<any>,\n proxyTrap: boolean = false\n ): boolean | null {\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: value\n })\n if (!change) {\n return null\n }\n value = (change as any).newValue\n }\n\n const cachedDescriptor = getCachedObservablePropDescriptor(key)\n const descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: true,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n const observable = new ObservableValue(\n value,\n enhancer,\n __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\",\n false\n )\n\n this.values_.set(key, observable)\n\n // Notify (value possibly changed by ObservableValue)\n this.notifyPropertyAddition_(key, observable.value_)\n } finally {\n endBatch()\n }\n return true\n }\n\n // If original descriptor becomes relevant, move this to annotation directly\n defineComputedProperty_(\n key: PropertyKey,\n options: IComputedValueOptions<any>,\n proxyTrap: boolean = false\n ): boolean | null {\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: undefined\n })\n if (!change) {\n return null\n }\n }\n options.name ||= __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\"\n options.context = this.proxy_ || this.target_\n const cachedDescriptor = getCachedObservablePropDescriptor(key)\n const descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: false,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n this.values_.set(key, new ComputedValue(options))\n\n // Notify\n this.notifyPropertyAddition_(key, undefined)\n } finally {\n endBatch()\n }\n return true\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n delete_(key: PropertyKey, proxyTrap: boolean = false): boolean | null {\n // No such prop\n if (!hasProp(this.target_, key)) {\n return true\n }\n\n // Intercept\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: REMOVE\n })\n // Cancelled\n if (!change) {\n return null\n }\n }\n\n // Delete\n try {\n startBatch()\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n const observable = this.values_.get(key)\n // Value needed for spies/listeners\n let value = undefined\n // Optimization: don't pull the value unless we will need it\n if (!observable && (notify || notifySpy)) {\n value = getDescriptor(this.target_, key)?.value\n }\n // delete prop (do first, may fail)\n if (proxyTrap) {\n if (!Reflect.deleteProperty(this.target_, key)) {\n return false\n }\n } else {\n delete this.target_[key]\n }\n // Allow re-annotating this field\n if (__DEV__) {\n delete this.appliedAnnotations_![key]\n }\n // Clear observable\n if (observable) {\n this.values_.delete(key)\n // for computed, value is undefined\n if (observable instanceof ObservableValue) {\n value = observable.value_\n }\n // Notify: autorun(() => obj[key]), see #1796\n propagateChanged(observable)\n }\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged()\n\n // Notify \"has\" observers\n // \"in\" as it may still exist in proto\n this.pendingKeys_?.get(key)?.set(key in this.target_)\n\n // Notify spies/listeners\n if (notify || notifySpy) {\n const change: IObjectDidChange = {\n type: REMOVE,\n observableKind: \"object\",\n object: this.proxy_ || this.target_,\n debugObjectName: this.name_,\n oldValue: value,\n name: key\n }\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n } finally {\n endBatch()\n }\n return true\n }\n\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n observe_(callback: (changes: IObjectDidChange) => void, fireImmediately?: boolean): Lambda {\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support the fire immediately property for observable objects.\")\n }\n return registerListener(this, callback)\n }\n\n intercept_(handler): Lambda {\n return registerInterceptor(this, handler)\n }\n\n notifyPropertyAddition_(key: PropertyKey, value: any) {\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n if (notify || notifySpy) {\n const change: IObjectDidChange | null =\n notify || notifySpy\n ? ({\n type: ADD,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: value\n } as const)\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n this.pendingKeys_?.get(key)?.set(true)\n\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged()\n }\n\n ownKeys_(): ArrayLike<string | symbol> {\n this.keysAtom_.reportObserved()\n return ownKeys(this.target_)\n }\n\n keys_(): PropertyKey[] {\n // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n // We choose to over-report in Object.keys(object), because:\n // - typically it's used with simple data objects\n // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n this.keysAtom_.reportObserved()\n return Object.keys(this.target_)\n }\n}\n\nexport interface IIsObservableObject {\n $mobx: ObservableObjectAdministration\n}\n\nexport function asObservableObject(\n target: any,\n options?: CreateObservableOptions\n): IIsObservableObject {\n if (__DEV__ && options && isObservableObject(target)) {\n die(`Options can't be provided for already observable objects.`)\n }\n\n if (hasProp(target, $mobx)) {\n if (__DEV__ && !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n die(\n `Cannot convert '${getDebugName(target)}' into observable object:` +\n `\\nThe target is already observable of different type.` +\n `\\nExtending builtins is not supported.`\n )\n }\n return target\n }\n\n if (__DEV__ && !Object.isExtensible(target)) {\n die(\"Cannot make the designated object observable; it is not extensible\")\n }\n\n const name =\n options?.name ??\n (__DEV__\n ? `${\n isPlainObject(target) ? \"ObservableObject\" : target.constructor.name\n }@${getNextId()}`\n : \"ObservableObject\")\n\n const adm = new ObservableObjectAdministration(\n target,\n new Map(),\n String(name),\n getAnnotationFromOptions(options)\n )\n\n addHiddenProp(target, $mobx, adm)\n\n return target\n}\n\nconst isObservableObjectAdministration = createInstanceofPredicate(\n \"ObservableObjectAdministration\",\n ObservableObjectAdministration\n)\n\nfunction getCachedObservablePropDescriptor(key) {\n return (\n descriptorCache[key] ||\n (descriptorCache[key] = {\n get() {\n return this[$mobx].getObservablePropValue_(key)\n },\n set(value) {\n return this[$mobx].setObservablePropValue_(key, value)\n }\n })\n )\n}\n\nexport function isObservableObject(thing: any): boolean {\n if (isObject(thing)) {\n return isObservableObjectAdministration((thing as any)[$mobx])\n }\n return false\n}\n\nexport function recordAnnotationApplied(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey\n) {\n if (__DEV__) {\n adm.appliedAnnotations_![key] = annotation\n }\n // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n delete adm.target_[storedAnnotationsSymbol]?.[key]\n}\n\nfunction assertAnnotable(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey\n) {\n // Valid annotation\n if (__DEV__ && !isAnnotation(annotation)) {\n die(`Cannot annotate '${adm.name_}.${key.toString()}': Invalid annotation.`)\n }\n\n /*\n // Configurable, not sealed, not frozen\n // Possibly not needed, just a little better error then the one thrown by engine.\n // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\n if (__DEV__) {\n const configurable = getDescriptor(adm.target_, key)?.configurable\n const frozen = Object.isFrozen(adm.target_)\n const sealed = Object.isSealed(adm.target_)\n if (!configurable || frozen || sealed) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const requestedAnnotationType = annotation.annotationType_\n let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\n if (frozen) {\n error += `\\nObject is frozen.`\n }\n if (sealed) {\n error += `\\nObject is sealed.`\n }\n if (!configurable) {\n error += `\\nproperty is not configurable.`\n // Mention only if caused by us to avoid confusion\n if (hasProp(adm.appliedAnnotations!, key)) {\n error += `\\nTo prevent accidental re-definition of a field by a subclass, `\n error += `all annotated fields of non-plain objects (classes) are not configurable.`\n }\n }\n die(error)\n }\n }\n */\n\n // Not annotated\n if (__DEV__ && !isOverride(annotation) && hasProp(adm.appliedAnnotations_!, key)) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const currentAnnotationType = adm.appliedAnnotations_![key].annotationType_\n const requestedAnnotationType = annotation.annotationType_\n die(\n `Cannot apply '${requestedAnnotationType}' to '${fieldName}':` +\n `\\nThe field is already annotated with '${currentAnnotationType}'.` +\n `\\nRe-annotating fields is not allowed.` +\n `\\nUse 'override' annotation for methods overridden by subclass.`\n )\n }\n}\n","import {\n getNextId,\n addHiddenFinalProp,\n allowStateChangesStart,\n allowStateChangesEnd,\n makeIterable,\n addHiddenProp,\n ObservableArrayAdministration,\n $mobx,\n arrayExtensions,\n IEnhancer,\n isObservableArray,\n IObservableArray,\n defineProperty\n} from \"../internal\"\n\n// Bug in safari 9.* (or iOS 9 safari mobile). See #364\nconst ENTRY_0 = createArrayEntryDescriptor(0)\n\nconst safariPrototypeSetterInheritanceBug = (() => {\n let v = false\n const p = {}\n Object.defineProperty(p, \"0\", {\n set: () => {\n v = true\n }\n })\n Object.create(p)[\"0\"] = 1\n return v === false\n})()\n\n/**\n * This array buffer contains two lists of properties, so that all arrays\n * can recycle their property definitions, which significantly improves performance of creating\n * properties on the fly.\n */\nlet OBSERVABLE_ARRAY_BUFFER_SIZE = 0\n\n// Typescript workaround to make sure ObservableArray extends Array\nclass StubArray {}\nfunction inherit(ctor, proto) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ctor.prototype, proto)\n } else if (ctor.prototype.__proto__ !== undefined) {\n ctor.prototype.__proto__ = proto\n } else {\n ctor.prototype = proto\n }\n}\ninherit(StubArray, Array.prototype)\n\n// Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\n\nclass LegacyObservableArray<T> extends StubArray {\n constructor(\n initialValues: T[] | undefined,\n enhancer: IEnhancer<T>,\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n owned = false\n ) {\n super()\n\n const adm = new ObservableArrayAdministration(name, enhancer, owned, true)\n adm.proxy_ = this as any\n addHiddenFinalProp(this, $mobx, adm)\n\n if (initialValues && initialValues.length) {\n const prev = allowStateChangesStart(true)\n // @ts-ignore\n this.spliceWithArray(0, 0, initialValues)\n allowStateChangesEnd(prev)\n }\n\n if (safariPrototypeSetterInheritanceBug) {\n // Seems that Safari won't use numeric prototype setter untill any * numeric property is\n // defined on the instance. After that it works fine, even if this property is deleted.\n Object.defineProperty(this, \"0\", ENTRY_0)\n }\n }\n\n concat(...arrays: T[][]): T[] {\n ;(this[$mobx] as ObservableArrayAdministration).atom_.reportObserved()\n return Array.prototype.concat.apply(\n (this as any).slice(),\n //@ts-ignore\n arrays.map(a => (isObservableArray(a) ? a.slice() : a))\n )\n }\n\n get length(): number {\n return (this[$mobx] as ObservableArrayAdministration).getArrayLength_()\n }\n\n set length(newLength: number) {\n ;(this[$mobx] as ObservableArrayAdministration).setArrayLength_(newLength)\n }\n\n get [Symbol.toStringTag]() {\n return \"Array\"\n }\n\n [Symbol.iterator]() {\n const self = this\n let nextIndex = 0\n return makeIterable({\n next() {\n return nextIndex < self.length\n ? { value: self[nextIndex++], done: false }\n : { done: true, value: undefined }\n }\n })\n }\n}\n\nObject.entries(arrayExtensions).forEach(([prop, fn]) => {\n if (prop !== \"concat\") {\n addHiddenProp(LegacyObservableArray.prototype, prop, fn)\n }\n})\n\nfunction createArrayEntryDescriptor(index: number) {\n return {\n enumerable: false,\n configurable: true,\n get: function () {\n return this[$mobx].get_(index)\n },\n set: function (value) {\n this[$mobx].set_(index, value)\n }\n }\n}\n\nfunction createArrayBufferItem(index: number) {\n defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index))\n}\n\nexport function reserveArrayBuffer(max: number) {\n if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n for (let index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++) {\n createArrayBufferItem(index)\n }\n OBSERVABLE_ARRAY_BUFFER_SIZE = max\n }\n}\n\nreserveArrayBuffer(1000)\n\nexport function createLegacyArray<T>(\n initialValues: T[] | undefined,\n enhancer: IEnhancer<T>,\n name?: string\n): IObservableArray<T> {\n return new LegacyObservableArray(initialValues, enhancer, name) as any\n}\n","import { isAction } from \"../api/action\"\nimport {\n $mobx,\n IDepTreeNode,\n isAtom,\n isComputedValue,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isReaction,\n isObservableSet,\n die,\n isFunction\n} from \"../internal\"\n\nexport function getAtom(thing: any, property?: PropertyKey): IDepTreeNode {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined) {\n die(23)\n }\n return (thing as any)[$mobx].atom_\n }\n if (isObservableSet(thing)) {\n return thing.atom_\n }\n if (isObservableMap(thing)) {\n if (property === undefined) {\n return thing.keysAtom_\n }\n const observable = thing.data_.get(property) || thing.hasMap_.get(property)\n if (!observable) {\n die(25, property, getDebugName(thing))\n }\n return observable\n }\n if (property && !thing[$mobx]) {\n thing[property]\n } // See #1072\n if (isObservableObject(thing)) {\n if (!property) {\n return die(26)\n }\n const observable = (thing as any)[$mobx].values_.get(property)\n if (!observable) {\n die(27, property, getDebugName(thing))\n }\n return observable\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing\n }\n } else if (isFunction(thing)) {\n if (isReaction(thing[$mobx])) {\n // disposer function\n return thing[$mobx]\n }\n }\n die(28)\n}\n\nexport function getAdministration(thing: any, property?: string) {\n if (!thing) {\n die(29)\n }\n if (property !== undefined) {\n return getAdministration(getAtom(thing, property))\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing\n }\n if (isObservableMap(thing) || isObservableSet(thing)) {\n return thing\n }\n if (thing[$mobx]) {\n return thing[$mobx]\n }\n die(24, thing)\n}\n\nexport function getDebugName(thing: any, property?: string): string {\n let named\n if (property !== undefined) {\n named = getAtom(thing, property)\n } else if (isAction(thing)) {\n return thing.name\n } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n named = getAdministration(thing)\n } else {\n // valid for arrays as well\n named = getAtom(thing)\n }\n return named.name_\n}\n","import {\n isES6Map,\n isObservableArray,\n isObservableMap,\n isES6Set,\n isObservableSet,\n hasProp,\n isFunction,\n objectPrototype\n} from \"../internal\"\n\ndeclare const Symbol\nconst toString = objectPrototype.toString\n\nexport function deepEqual(a: any, b: any, depth: number = -1): boolean {\n return eq(a, b, depth)\n}\n\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a: any, b: any, depth: number, aStack?: any[], bStack?: any[]) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) {\n return a !== 0 || 1 / a === 1 / b\n }\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) {\n return false\n }\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) {\n return b !== b\n }\n // Exhaust primitive checks\n const type = typeof a\n if (type !== \"function\" && type !== \"object\" && typeof b != \"object\") {\n return false\n }\n\n // Compare `[[Class]]` names.\n const className = toString.call(a)\n if (className !== toString.call(b)) {\n return false\n }\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\":\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) {\n return +b !== +b\n }\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b\n case \"[object Symbol]\":\n return (\n typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b)\n )\n case \"[object Map]\":\n case \"[object Set]\":\n // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n // Hide this extra level by increasing the depth.\n if (depth >= 0) {\n depth++\n }\n break\n }\n // Unwrap any wrapped objects.\n a = unwrap(a)\n b = unwrap(b)\n\n const areArrays = className === \"[object Array]\"\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\") {\n return false\n }\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n const aCtor = a.constructor,\n bCtor = b.constructor\n if (\n aCtor !== bCtor &&\n !(\n isFunction(aCtor) &&\n aCtor instanceof aCtor &&\n isFunction(bCtor) &&\n bCtor instanceof bCtor\n ) &&\n \"constructor\" in a &&\n \"constructor\" in b\n ) {\n return false\n }\n }\n\n if (depth === 0) {\n return false\n } else if (depth < 0) {\n depth = -1\n }\n\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || []\n bStack = bStack || []\n let length = aStack.length\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) {\n return bStack[length] === b\n }\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a)\n bStack.push(b)\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length\n if (length !== b.length) {\n return false\n }\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], depth - 1, aStack, bStack)) {\n return false\n }\n }\n } else {\n // Deep compare objects.\n const keys = Object.keys(a)\n let key\n length = keys.length\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object.keys(b).length !== length) {\n return false\n }\n while (length--) {\n // Deep compare each member\n key = keys[length]\n if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) {\n return false\n }\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop()\n bStack.pop()\n return true\n}\n\nfunction unwrap(a: any) {\n if (isObservableArray(a)) {\n return a.slice()\n }\n if (isES6Map(a) || isObservableMap(a)) {\n return Array.from(a.entries())\n }\n if (isES6Set(a) || isObservableSet(a)) {\n return Array.from(a.entries())\n }\n return a\n}\n","export function makeIterable<T>(iterator: Iterator<T>): IterableIterator<T> {\n iterator[Symbol.iterator] = getSelf\n return iterator as any\n}\n\nfunction getSelf() {\n return this\n}\n","/**\n * (c) Michel Weststrate 2015 - 2020\n * MIT Licensed\n *\n * Welcome to the mobx sources! To get a global overview of how MobX internally works,\n * this is a good place to start:\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n *\n * Source folders:\n * ===============\n *\n * - api/ Most of the public static methods exposed by the module can be found here.\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\n * - utils/ Utility stuff.\n *\n */\nimport { die } from \"./errors\"\nimport { getGlobal } from \"./utils/global\"\n;[\"Symbol\", \"Map\", \"Set\"].forEach(m => {\n let g = getGlobal()\n if (typeof g[m] === \"undefined\") {\n die(`MobX requires global '${m}' to be available or polyfilled`)\n }\n})\n\nimport { spy, getDebugName, $mobx } from \"./internal\"\n\nexport {\n IObservable,\n IDepTreeNode,\n Reaction,\n IReactionPublic,\n IReactionDisposer,\n untracked,\n IAtom,\n createAtom,\n spy,\n IComputedValue,\n IEqualsComparer,\n comparer,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n IObjectWillChange,\n IObjectDidChange,\n isObservableObject,\n IValueDidChange,\n IValueWillChange,\n IObservableValue,\n isObservableValue as isBoxedObservable,\n IObservableArray,\n IArrayWillChange,\n IArrayWillSplice,\n IArraySplice,\n IArrayUpdate,\n IArrayDidChange,\n isObservableArray,\n IKeyValueMap,\n ObservableMap,\n IMapEntries,\n IMapEntry,\n IMapWillChange,\n IMapDidChange,\n isObservableMap,\n IObservableMapInitialValues,\n ObservableSet,\n isObservableSet,\n ISetDidChange,\n ISetWillChange,\n IObservableSetInitialValues,\n transaction,\n observable,\n IObservableFactory,\n CreateObservableOptions,\n computed,\n IComputedFactory,\n isObservable,\n isObservableProp,\n isComputed,\n isComputedProp,\n extendObservable,\n observe,\n intercept,\n autorun,\n IAutorunOptions,\n reaction,\n IReactionOptions,\n when,\n IWhenOptions,\n action,\n isAction,\n runInAction,\n IActionFactory,\n keys,\n values,\n entries,\n set,\n remove,\n has,\n get,\n apiOwnKeys as ownKeys,\n apiDefineProperty as defineProperty,\n configure,\n onBecomeObserved,\n onBecomeUnobserved,\n flow,\n isFlow,\n flowResult,\n FlowCancellationError,\n isFlowCancellationError,\n toJS,\n trace,\n IObserverTree,\n IDependencyTree,\n getDependencyTree,\n getObserverTree,\n resetGlobalState as _resetGlobalState,\n getGlobalState as _getGlobalState,\n getDebugName,\n getAtom,\n getAdministration as _getAdministration,\n allowStateChanges as _allowStateChanges,\n runInAction as _allowStateChangesInsideComputed, // This has become the default behavior in Mobx 6\n Lambda,\n $mobx,\n isComputingDerivation as _isComputingDerivation,\n onReactionError,\n interceptReads as _interceptReads,\n IComputedValueOptions,\n IActionRunInfo,\n _startAction,\n _endAction,\n allowStateReadsStart as _allowStateReadsStart,\n allowStateReadsEnd as _allowStateReadsEnd,\n makeObservable,\n makeAutoObservable,\n autoAction as _autoAction,\n AnnotationsMap,\n AnnotationMapEntry,\n override\n} from \"./internal\"\n\n// Devtools support\ndeclare const __MOBX_DEVTOOLS_GLOBAL_HOOK__: { injectMobx: (any) => void }\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n // See: https://github.com/andykog/mobx-devtools/\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy,\n extras: {\n getDebugName\n },\n $mobx\n })\n}\n","/*! Moment Duration Format v2.2.2\n * https://github.com/jsmreese/moment-duration-format\n * Date: 2018-02-16\n *\n * Duration format plugin function for the Moment.js library\n * http://momentjs.com/\n *\n * Copyright 2018 John Madhavan-Reese\n * Released under the MIT license\n */\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['moment'], factory);\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but only CommonJS-like\n // enviroments that support module.exports, like Node.\n try {\n module.exports = factory(require('moment'));\n } catch (e) {\n // If moment is not available, leave the setup up to the user.\n // Like when using moment-timezone or similar moment-based package.\n module.exports = factory;\n }\n }\n\n if (root) {\n // Globals.\n root.momentDurationFormatSetup = root.moment ? factory(root.moment) : factory;\n }\n})(this, function (moment) {\n // `Number#tolocaleString` is tested on plugin initialization.\n // If the feature test passes, `toLocaleStringWorks` will be set to `true` and the\n // native function will be used to generate formatted output. If the feature\n // test fails, the fallback format function internal to this plugin will be\n // used.\n var toLocaleStringWorks = false;\n\n // `Number#toLocaleString` rounds incorrectly for select numbers in Microsoft\n // environments (Edge, IE11, Windows Phone) and possibly other environments.\n // If the rounding test fails and `toLocaleString` will be used for formatting,\n // the plugin will \"pre-round\" number values using the fallback number format\n // function before passing them to `toLocaleString` for final formatting.\n var toLocaleStringRoundingWorks = false;\n\n // `Intl.NumberFormat#format` is tested on plugin initialization.\n // If the feature test passes, `intlNumberFormatRoundingWorks` will be set to\n // `true` and the native function will be used to generate formatted output.\n // If the feature test fails, either `Number#tolocaleString` (if\n // `toLocaleStringWorks` is `true`), or the fallback format function internal\n // to this plugin will be used.\n var intlNumberFormatWorks = false;\n\n // `Intl.NumberFormat#format` rounds incorrectly for select numbers in Microsoft\n // environments (Edge, IE11, Windows Phone) and possibly other environments.\n // If the rounding test fails and `Intl.NumberFormat#format` will be used for\n // formatting, the plugin will \"pre-round\" number values using the fallback number\n // format function before passing them to `Intl.NumberFormat#format` for final\n // formatting.\n var intlNumberFormatRoundingWorks = false;\n\n // Token type names in order of descending magnitude.\n var types = \"escape years months weeks days hours minutes seconds milliseconds general\".split(\" \");\n\n var bubbles = [\n {\n type: \"seconds\",\n targets: [\n { type: \"minutes\", value: 60 },\n { type: \"hours\", value: 3600 },\n { type: \"days\", value: 86400 },\n { type: \"weeks\", value: 604800 },\n { type: \"months\", value: 2678400 },\n { type: \"years\", value: 31536000 }\n ]\n },\n {\n type: \"minutes\",\n targets: [\n { type: \"hours\", value: 60 },\n { type: \"days\", value: 1440 },\n { type: \"weeks\", value: 10080 },\n { type: \"months\", value: 44640 },\n { type: \"years\", value: 525600 }\n ]\n },\n {\n type: \"hours\",\n targets: [\n { type: \"days\", value: 24 },\n { type: \"weeks\", value: 168 },\n { type: \"months\", value: 744 },\n { type: \"years\", value: 8760 }\n ]\n },\n {\n type: \"days\",\n targets: [\n { type: \"weeks\", value: 7 },\n { type: \"months\", value: 31 },\n { type: \"years\", value: 365 }\n ]\n },\n {\n type: \"months\",\n targets: [\n { type: \"years\", value: 12 }\n ]\n }\n ];\n\n // stringIncludes\n function stringIncludes(str, search) {\n if (search.length > str.length) {\n return false;\n }\n\n return str.indexOf(search) !== -1;\n }\n\n // repeatZero(qty)\n // Returns \"0\" repeated `qty` times.\n // `qty` must be a integer >= 0.\n function repeatZero(qty) {\n var result = \"\";\n\n while (qty) {\n result += \"0\";\n qty -= 1;\n }\n\n return result;\n }\n\n function stringRound(digits) {\n var digitsArray = digits.split(\"\").reverse();\n var i = 0;\n var carry = true;\n\n while (carry && i < digitsArray.length) {\n if (i) {\n if (digitsArray[i] === \"9\") {\n digitsArray[i] = \"0\";\n } else {\n digitsArray[i] = (parseInt(digitsArray[i], 10) + 1).toString();\n carry = false;\n }\n } else {\n if (parseInt(digitsArray[i], 10) < 5) {\n carry = false;\n }\n\n digitsArray[i] = \"0\";\n }\n\n i += 1;\n }\n\n if (carry) {\n digitsArray.push(\"1\");\n }\n\n return digitsArray.reverse().join(\"\");\n }\n\n // cachedNumberFormat\n // Returns an `Intl.NumberFormat` instance for the given locale and configuration.\n // On first use of a particular configuration, the instance is cached for fast\n // repeat access.\n function cachedNumberFormat(locale, options) {\n // Create a sorted, stringified version of `options`\n // for use as part of the cache key\n var optionsString = map(\n keys(options).sort(),\n function(key) {\n return key + ':' + options[key];\n }\n ).join(',');\n\n // Set our cache key\n var cacheKey = locale + '+' + optionsString;\n\n // If we don't have this configuration cached, configure and cache it\n if (!cachedNumberFormat.cache[cacheKey]) {\n cachedNumberFormat.cache[cacheKey] = Intl.NumberFormat(locale, options);\n }\n\n // Return the cached version of this configuration\n return cachedNumberFormat.cache[cacheKey];\n }\n cachedNumberFormat.cache = {};\n\n // formatNumber\n // Formats any number greater than or equal to zero using these options:\n // - userLocale\n // - useToLocaleString\n // - useGrouping\n // - grouping\n // - maximumSignificantDigits\n // - minimumIntegerDigits\n // - fractionDigits\n // - groupingSeparator\n // - decimalSeparator\n //\n // `useToLocaleString` will use `Intl.NumberFormat` or `toLocaleString` for formatting.\n // `userLocale` option is passed through to the formatting function.\n // `fractionDigits` is passed through to `maximumFractionDigits` and `minimumFractionDigits`\n // Using `maximumSignificantDigits` will override `minimumIntegerDigits` and `fractionDigits`.\n function formatNumber(number, options, userLocale) {\n var useToLocaleString = options.useToLocaleString;\n var useGrouping = options.useGrouping;\n var grouping = useGrouping && options.grouping.slice();\n var maximumSignificantDigits = options.maximumSignificantDigits;\n var minimumIntegerDigits = options.minimumIntegerDigits || 1;\n var fractionDigits = options.fractionDigits || 0;\n var groupingSeparator = options.groupingSeparator;\n var decimalSeparator = options.decimalSeparator;\n\n if (useToLocaleString && userLocale) {\n var localeStringOptions = {\n minimumIntegerDigits: minimumIntegerDigits,\n useGrouping: useGrouping\n };\n\n if (fractionDigits) {\n localeStringOptions.maximumFractionDigits = fractionDigits;\n localeStringOptions.minimumFractionDigits = fractionDigits;\n }\n\n // toLocaleString output is \"0.0\" instead of \"0\" for HTC browsers\n // when maximumSignificantDigits is set. See #96.\n if (maximumSignificantDigits && number > 0) {\n localeStringOptions.maximumSignificantDigits = maximumSignificantDigits;\n }\n\n if (intlNumberFormatWorks) {\n if (!intlNumberFormatRoundingWorks) {\n var roundingOptions = extend({}, options);\n roundingOptions.useGrouping = false;\n roundingOptions.decimalSeparator = \".\";\n number = parseFloat(formatNumber(number, roundingOptions), 10);\n }\n\n return cachedNumberFormat(userLocale, localeStringOptions).format(number);\n } else {\n if (!toLocaleStringRoundingWorks) {\n var roundingOptions = extend({}, options);\n roundingOptions.useGrouping = false;\n roundingOptions.decimalSeparator = \".\";\n number = parseFloat(formatNumber(number, roundingOptions), 10);\n }\n\n return number.toLocaleString(userLocale, localeStringOptions);\n }\n }\n\n var numberString;\n\n // Add 1 to digit output length for floating point errors workaround. See below.\n if (maximumSignificantDigits) {\n numberString = number.toPrecision(maximumSignificantDigits + 1);\n } else {\n numberString = number.toFixed(fractionDigits + 1);\n }\n\n var integerString;\n var fractionString;\n var exponentString;\n\n var temp = numberString.split(\"e\");\n\n exponentString = temp[1] || \"\";\n\n temp = temp[0].split(\".\");\n\n fractionString = temp[1] || \"\";\n integerString = temp[0] || \"\";\n\n // Workaround for floating point errors in `toFixed` and `toPrecision`.\n // (3.55).toFixed(1); --> \"3.5\"\n // (123.55 - 120).toPrecision(2); --> \"3.5\"\n // (123.55 - 120); --> 3.549999999999997\n // (123.55 - 120).toFixed(2); --> \"3.55\"\n // Round by examing the string output of the next digit.\n\n // *************** Implement String Rounding here ***********************\n // Check integerString + fractionString length of toPrecision before rounding.\n // Check length of fractionString from toFixed output before rounding.\n var integerLength = integerString.length;\n var fractionLength = fractionString.length;\n var digitCount = integerLength + fractionLength;\n var digits = integerString + fractionString;\n\n if (maximumSignificantDigits && digitCount === (maximumSignificantDigits + 1) || !maximumSignificantDigits && fractionLength === (fractionDigits + 1)) {\n // Round digits.\n digits = stringRound(digits);\n\n if (digits.length === digitCount + 1) {\n integerLength = integerLength + 1;\n }\n\n // Discard final fractionDigit.\n if (fractionLength) {\n digits = digits.slice(0, -1);\n }\n\n // Separate integer and fraction.\n integerString = digits.slice(0, integerLength);\n fractionString = digits.slice(integerLength);\n }\n\n // Trim trailing zeroes from fractionString because toPrecision outputs\n // precision, not significant digits.\n if (maximumSignificantDigits) {\n fractionString = fractionString.replace(/0*$/, \"\");\n }\n\n // Handle exponent.\n var exponent = parseInt(exponentString, 10);\n\n if (exponent > 0) {\n if (fractionString.length <= exponent) {\n fractionString = fractionString + repeatZero(exponent - fractionString.length);\n\n integerString = integerString + fractionString;\n fractionString = \"\";\n } else {\n integerString = integerString + fractionString.slice(0, exponent);\n fractionString = fractionString.slice(exponent);\n }\n } else if (exponent < 0) {\n fractionString = (repeatZero(Math.abs(exponent) - integerString.length) + integerString + fractionString);\n\n integerString = \"0\";\n }\n\n if (!maximumSignificantDigits) {\n // Trim or pad fraction when not using maximumSignificantDigits.\n fractionString = fractionString.slice(0, fractionDigits);\n\n if (fractionString.length < fractionDigits) {\n fractionString = fractionString + repeatZero(fractionDigits - fractionString.length);\n }\n\n // Pad integer when using minimumIntegerDigits\n // and not using maximumSignificantDigits.\n if (integerString.length < minimumIntegerDigits) {\n integerString = repeatZero(minimumIntegerDigits - integerString.length) + integerString;\n }\n }\n\n var formattedString = \"\";\n\n // Handle grouping.\n if (useGrouping) {\n temp = integerString;\n var group;\n\n while (temp.length) {\n if (grouping.length) {\n group = grouping.shift();\n }\n\n if (formattedString) {\n formattedString = groupingSeparator + formattedString;\n }\n\n formattedString = temp.slice(-group) + formattedString;\n\n temp = temp.slice(0, -group);\n }\n } else {\n formattedString = integerString;\n }\n\n // Add decimalSeparator and fraction.\n if (fractionString) {\n formattedString = formattedString + decimalSeparator + fractionString;\n }\n\n return formattedString;\n }\n\n // durationLabelCompare\n function durationLabelCompare(a, b) {\n if (a.label.length > b.label.length) {\n return -1;\n }\n\n if (a.label.length < b.label.length) {\n return 1;\n }\n\n // a must be equal to b\n return 0;\n }\n\n // durationGetLabels\n function durationGetLabels(token, localeData) {\n var labels = [];\n\n each(keys(localeData), function (localeDataKey) {\n if (localeDataKey.slice(0, 15) !== \"_durationLabels\") {\n return;\n }\n\n var labelType = localeDataKey.slice(15).toLowerCase();\n\n each(keys(localeData[localeDataKey]), function (labelKey) {\n if (labelKey.slice(0, 1) === token) {\n labels.push({\n type: labelType,\n key: labelKey,\n label: localeData[localeDataKey][labelKey]\n });\n }\n });\n });\n\n return labels;\n }\n\n // durationPluralKey\n function durationPluralKey(token, integerValue, decimalValue) {\n // Singular for a value of `1`, but not for `1.0`.\n if (integerValue === 1 && decimalValue === null) {\n return token;\n }\n\n return token + token;\n }\n\n var engLocale = {\n durationLabelsStandard: {\n S: 'millisecond',\n SS: 'milliseconds',\n s: 'second',\n ss: 'seconds',\n m: 'minute',\n mm: 'minutes',\n h: 'hour',\n hh: 'hours',\n d: 'day',\n dd: 'days',\n w: 'week',\n ww: 'weeks',\n M: 'month',\n MM: 'months',\n y: 'year',\n yy: 'years'\n },\n durationLabelsShort: {\n S: 'msec',\n SS: 'msecs',\n s: 'sec',\n ss: 'secs',\n m: 'min',\n mm: 'mins',\n h: 'hr',\n hh: 'hrs',\n d: 'dy',\n dd: 'dys',\n w: 'wk',\n ww: 'wks',\n M: 'mo',\n MM: 'mos',\n y: 'yr',\n yy: 'yrs'\n },\n durationTimeTemplates: {\n HMS: 'h:mm:ss',\n HM: 'h:mm',\n MS: 'm:ss'\n },\n durationLabelTypes: [\n { type: \"standard\", string: \"__\" },\n { type: \"short\", string: \"_\" }\n ],\n durationPluralKey: durationPluralKey\n };\n\n // isArray\n function isArray(array) {\n return Object.prototype.toString.call(array) === \"[object Array]\";\n }\n\n // isObject\n function isObject(obj) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n }\n\n // findLast\n function findLast(array, callback) {\n var index = array.length;\n\n while (index -= 1) {\n if (callback(array[index])) { return array[index]; }\n }\n }\n\n // find\n function find(array, callback) {\n var index = 0;\n\n var max = array && array.length || 0;\n\n var match;\n\n if (typeof callback !== \"function\") {\n match = callback;\n callback = function (item) {\n return item === match;\n };\n }\n\n while (index < max) {\n if (callback(array[index])) { return array[index]; }\n index += 1;\n }\n }\n\n // each\n function each(array, callback) {\n var index = 0,\n max = array.length;\n\n if (!array || !max) { return; }\n\n while (index < max) {\n if (callback(array[index], index) === false) { return; }\n index += 1;\n }\n }\n\n // map\n function map(array, callback) {\n var index = 0,\n max = array.length,\n ret = [];\n\n if (!array || !max) { return ret; }\n\n while (index < max) {\n ret[index] = callback(array[index], index);\n index += 1;\n }\n\n return ret;\n }\n\n // pluck\n function pluck(array, prop) {\n return map(array, function (item) {\n return item[prop];\n });\n }\n\n // compact\n function compact(array) {\n var ret = [];\n\n each(array, function (item) {\n if (item) { ret.push(item); }\n });\n\n return ret;\n }\n\n // unique\n function unique(array) {\n var ret = [];\n\n each(array, function (_a) {\n if (!find(ret, _a)) { ret.push(_a); }\n });\n\n return ret;\n }\n\n // intersection\n function intersection(a, b) {\n var ret = [];\n\n each(a, function (_a) {\n each(b, function (_b) {\n if (_a === _b) { ret.push(_a); }\n });\n });\n\n return unique(ret);\n }\n\n // rest\n function rest(array, callback) {\n var ret = [];\n\n each(array, function (item, index) {\n if (!callback(item)) {\n ret = array.slice(index);\n return false;\n }\n });\n\n return ret;\n }\n\n // initial\n function initial(array, callback) {\n var reversed = array.slice().reverse();\n\n return rest(reversed, callback).reverse();\n }\n\n // extend\n function extend(a, b) {\n for (var key in b) {\n if (b.hasOwnProperty(key)) { a[key] = b[key]; }\n }\n\n return a;\n }\n\n // keys\n function keys(a) {\n var ret = [];\n\n for (var key in a) {\n if (a.hasOwnProperty(key)) { ret.push(key); }\n }\n\n return ret;\n }\n\n // any\n function any(array, callback) {\n var index = 0,\n max = array.length;\n\n if (!array || !max) { return false; }\n\n while (index < max) {\n if (callback(array[index], index) === true) { return true; }\n index += 1;\n }\n\n return false;\n }\n\n // flatten\n function flatten(array) {\n var ret = [];\n\n each(array, function(child) {\n ret = ret.concat(child);\n });\n\n return ret;\n }\n\n function toLocaleStringSupportsLocales() {\n var number = 0;\n try {\n number.toLocaleString('i');\n } catch (e) {\n return e.name === 'RangeError';\n }\n return false;\n }\n\n function featureTestFormatterRounding(formatter) {\n return formatter(3.55, \"en\", {\n useGrouping: false,\n minimumIntegerDigits: 1,\n minimumFractionDigits: 1,\n maximumFractionDigits: 1\n }) === \"3.6\";\n }\n\n function featureTestFormatter(formatter) {\n var passed = true;\n\n // Test minimumIntegerDigits.\n passed = passed && formatter(1, \"en\", { minimumIntegerDigits: 1 }) === \"1\";\n passed = passed && formatter(1, \"en\", { minimumIntegerDigits: 2 }) === \"01\";\n passed = passed && formatter(1, \"en\", { minimumIntegerDigits: 3 }) === \"001\";\n if (!passed) { return false; }\n\n // Test maximumFractionDigits and minimumFractionDigits.\n passed = passed && formatter(99.99, \"en\", { maximumFractionDigits: 0, minimumFractionDigits: 0 }) === \"100\";\n passed = passed && formatter(99.99, \"en\", { maximumFractionDigits: 1, minimumFractionDigits: 1 }) === \"100.0\";\n passed = passed && formatter(99.99, \"en\", { maximumFractionDigits: 2, minimumFractionDigits: 2 }) === \"99.99\";\n passed = passed && formatter(99.99, \"en\", { maximumFractionDigits: 3, minimumFractionDigits: 3 }) === \"99.990\";\n if (!passed) { return false; }\n\n // Test maximumSignificantDigits.\n passed = passed && formatter(99.99, \"en\", { maximumSignificantDigits: 1 }) === \"100\";\n passed = passed && formatter(99.99, \"en\", { maximumSignificantDigits: 2 }) === \"100\";\n passed = passed && formatter(99.99, \"en\", { maximumSignificantDigits: 3 }) === \"100\";\n passed = passed && formatter(99.99, \"en\", { maximumSignificantDigits: 4 }) === \"99.99\";\n passed = passed && formatter(99.99, \"en\", { maximumSignificantDigits: 5 }) === \"99.99\";\n if (!passed) { return false; }\n\n // Test grouping.\n passed = passed && formatter(1000, \"en\", { useGrouping: true }) === \"1,000\";\n passed = passed && formatter(1000, \"en\", { useGrouping: false }) === \"1000\";\n if (!passed) { return false; }\n\n return true;\n }\n\n // durationsFormat(durations [, template] [, precision] [, settings])\n function durationsFormat() {\n var args = [].slice.call(arguments);\n var settings = {};\n var durations;\n\n // Parse arguments.\n each(args, function (arg, index) {\n if (!index) {\n if (!isArray(arg)) {\n throw \"Expected array as the first argument to durationsFormat.\";\n }\n\n durations = arg;\n }\n\n if (typeof arg === \"string\" || typeof arg === \"function\") {\n settings.template = arg;\n return;\n }\n\n if (typeof arg === \"number\") {\n settings.precision = arg;\n return;\n }\n\n if (isObject(arg)) {\n extend(settings, arg);\n }\n });\n\n if (!durations || !durations.length) {\n return [];\n }\n\n settings.returnMomentTypes = true;\n\n var formattedDurations = map(durations, function (dur) {\n return dur.format(settings);\n });\n\n // Merge token types from all durations.\n var outputTypes = intersection(types, unique(pluck(flatten(formattedDurations), \"type\")));\n\n var largest = settings.largest;\n\n if (largest) {\n outputTypes = outputTypes.slice(0, largest);\n }\n\n settings.returnMomentTypes = false;\n settings.outputTypes = outputTypes;\n\n return map(durations, function (dur) {\n return dur.format(settings);\n });\n }\n\n // durationFormat([template] [, precision] [, settings])\n function durationFormat() {\n\n var args = [].slice.call(arguments);\n var settings = extend({}, this.format.defaults);\n\n // Keep a shadow copy of this moment for calculating remainders.\n // Perform all calculations on positive duration value, handle negative\n // sign at the very end.\n var asMilliseconds = this.asMilliseconds();\n var asMonths = this.asMonths();\n\n // Treat invalid durations as having a value of 0 milliseconds.\n if (typeof this.isValid === \"function\" && this.isValid() === false) {\n asMilliseconds = 0;\n asMonths = 0;\n }\n\n var isNegative = asMilliseconds < 0;\n\n // Two shadow copies are needed because of the way moment.js handles\n // duration arithmetic for years/months and for weeks/days/hours/minutes/seconds.\n var remainder = moment.duration(Math.abs(asMilliseconds), \"milliseconds\");\n var remainderMonths = moment.duration(Math.abs(asMonths), \"months\");\n\n // Parse arguments.\n each(args, function (arg) {\n if (typeof arg === \"string\" || typeof arg === \"function\") {\n settings.template = arg;\n return;\n }\n\n if (typeof arg === \"number\") {\n settings.precision = arg;\n return;\n }\n\n if (isObject(arg)) {\n extend(settings, arg);\n }\n });\n\n var momentTokens = {\n years: \"y\",\n months: \"M\",\n weeks: \"w\",\n days: \"d\",\n hours: \"h\",\n minutes: \"m\",\n seconds: \"s\",\n milliseconds: \"S\"\n };\n\n var tokenDefs = {\n escape: /\\[(.+?)\\]/,\n years: /\\*?[Yy]+/,\n months: /\\*?M+/,\n weeks: /\\*?[Ww]+/,\n days: /\\*?[Dd]+/,\n hours: /\\*?[Hh]+/,\n minutes: /\\*?m+/,\n seconds: /\\*?s+/,\n milliseconds: /\\*?S+/,\n general: /.+?/\n };\n\n // Types array is available in the template function.\n settings.types = types;\n\n var typeMap = function (token) {\n return find(types, function (type) {\n return tokenDefs[type].test(token);\n });\n };\n\n var tokenizer = new RegExp(map(types, function (type) {\n return tokenDefs[type].source;\n }).join(\"|\"), \"g\");\n\n // Current duration object is available in the template function.\n settings.duration = this;\n\n // Eval template function and cache template string.\n var template = typeof settings.template === \"function\" ? settings.template.apply(settings) : settings.template;\n\n // outputTypes and returnMomentTypes are settings to support durationsFormat().\n\n // outputTypes is an array of moment token types that determines\n // the tokens returned in formatted output. This option overrides\n // trim, largest, stopTrim, etc.\n var outputTypes = settings.outputTypes;\n\n // returnMomentTypes is a boolean that sets durationFormat to return\n // the processed momentTypes instead of formatted output.\n var returnMomentTypes = settings.returnMomentTypes;\n\n var largest = settings.largest;\n\n // Setup stopTrim array of token types.\n var stopTrim = [];\n\n if (!outputTypes) {\n if (isArray(settings.stopTrim)) {\n settings.stopTrim = settings.stopTrim.join(\"\");\n }\n\n // Parse stopTrim string to create token types array.\n if (settings.stopTrim) {\n each(settings.stopTrim.match(tokenizer), function (token) {\n var type = typeMap(token);\n\n if (type === \"escape\" || type === \"general\") {\n return;\n }\n\n stopTrim.push(type);\n });\n }\n }\n\n // Cache moment's locale data.\n var localeData = moment.localeData();\n\n if (!localeData) {\n localeData = {};\n }\n\n // Fall back to this plugin's `eng` extension.\n each(keys(engLocale), function (key) {\n if (typeof engLocale[key] === \"function\") {\n if (!localeData[key]) {\n localeData[key] = engLocale[key];\n }\n\n return;\n }\n\n if (!localeData[\"_\" + key]) {\n localeData[\"_\" + key] = engLocale[key];\n }\n });\n\n // Replace Duration Time Template strings.\n // For locale `eng`: `_HMS_`, `_HM_`, and `_MS_`.\n each(keys(localeData._durationTimeTemplates), function (item) {\n template = template.replace(\"_\" + item + \"_\", localeData._durationTimeTemplates[item]);\n });\n\n // Determine user's locale.\n var userLocale = settings.userLocale || moment.locale();\n\n var useLeftUnits = settings.useLeftUnits;\n var usePlural = settings.usePlural;\n var precision = settings.precision;\n var forceLength = settings.forceLength;\n var useGrouping = settings.useGrouping;\n var trunc = settings.trunc;\n\n // Use significant digits only when precision is greater than 0.\n var useSignificantDigits = settings.useSignificantDigits && precision > 0;\n var significantDigits = useSignificantDigits ? settings.precision : 0;\n var significantDigitsCache = significantDigits;\n\n var minValue = settings.minValue;\n var isMinValue = false;\n\n var maxValue = settings.maxValue;\n var isMaxValue = false;\n\n // formatNumber fallback options.\n var useToLocaleString = settings.useToLocaleString;\n var groupingSeparator = settings.groupingSeparator;\n var decimalSeparator = settings.decimalSeparator;\n var grouping = settings.grouping;\n\n useToLocaleString = useToLocaleString && (toLocaleStringWorks || intlNumberFormatWorks);\n\n // Trim options.\n var trim = settings.trim;\n\n if (isArray(trim)) {\n trim = trim.join(\" \");\n }\n\n if (trim === null && (largest || maxValue || useSignificantDigits)) {\n trim = \"all\";\n }\n\n if (trim === null || trim === true || trim === \"left\" || trim === \"right\") {\n trim = \"large\";\n }\n\n if (trim === false) {\n trim = \"\";\n }\n\n var trimIncludes = function (item) {\n return item.test(trim);\n };\n\n var rLarge = /large/;\n var rSmall = /small/;\n var rBoth = /both/;\n var rMid = /mid/;\n var rAll = /^all|[^sm]all/;\n var rFinal = /final/;\n\n var trimLarge = largest > 0 || any([rLarge, rBoth, rAll], trimIncludes);\n var trimSmall = any([rSmall, rBoth, rAll], trimIncludes);\n var trimMid = any([rMid, rAll], trimIncludes);\n var trimFinal = any([rFinal, rAll], trimIncludes);\n\n // Parse format string to create raw tokens array.\n var rawTokens = map(template.match(tokenizer), function (token, index) {\n var type = typeMap(token);\n\n if (token.slice(0, 1) === \"*\") {\n token = token.slice(1);\n\n if (type !== \"escape\" && type !== \"general\") {\n stopTrim.push(type);\n }\n }\n\n return {\n index: index,\n length: token.length,\n text: \"\",\n\n // Replace escaped tokens with the non-escaped token text.\n token: (type === \"escape\" ? token.replace(tokenDefs.escape, \"$1\") : token),\n\n // Ignore type on non-moment tokens.\n type: ((type === \"escape\" || type === \"general\") ? null : type)\n };\n });\n\n // Associate text tokens with moment tokens.\n var currentToken = {\n index: 0,\n length: 0,\n token: \"\",\n text: \"\",\n type: null\n };\n\n var tokens = [];\n\n if (useLeftUnits) {\n rawTokens.reverse();\n }\n\n each(rawTokens, function (token) {\n if (token.type) {\n if (currentToken.type || currentToken.text) {\n tokens.push(currentToken);\n }\n\n currentToken = token;\n\n return;\n }\n\n if (useLeftUnits) {\n currentToken.text = token.token + currentToken.text;\n } else {\n currentToken.text += token.token;\n }\n });\n\n if (currentToken.type || currentToken.text) {\n tokens.push(currentToken);\n }\n\n if (useLeftUnits) {\n tokens.reverse();\n }\n\n // Find unique moment token types in the template in order of\n // descending magnitude.\n var momentTypes = intersection(types, unique(compact(pluck(tokens, \"type\"))));\n\n // Exit early if there are no moment token types.\n if (!momentTypes.length) {\n return pluck(tokens, \"text\").join(\"\");\n }\n\n // Calculate values for each moment type in the template.\n // For processing the settings, values are associated with moment types.\n // Values will be assigned to tokens at the last step in order to\n // assume nothing about frequency or order of tokens in the template.\n momentTypes = map(momentTypes, function (momentType, index) {\n // Is this the least-magnitude moment token found?\n var isSmallest = ((index + 1) === momentTypes.length);\n\n // Is this the greatest-magnitude moment token found?\n var isLargest = (!index);\n\n // Get the raw value in the current units.\n var rawValue;\n\n if (momentType === \"years\" || momentType === \"months\") {\n rawValue = remainderMonths.as(momentType);\n } else {\n rawValue = remainder.as(momentType);\n }\n\n var wholeValue = Math.floor(rawValue);\n var decimalValue = rawValue - wholeValue;\n\n var token = find(tokens, function (token) {\n return momentType === token.type;\n });\n\n if (isLargest && maxValue && rawValue > maxValue) {\n isMaxValue = true;\n }\n\n if (isSmallest && minValue && Math.abs(settings.duration.as(momentType)) < minValue) {\n isMinValue = true;\n }\n\n // Note the length of the largest-magnitude moment token:\n // if it is greater than one and forceLength is not set,\n // then default forceLength to `true`.\n //\n // Rationale is this: If the template is \"h:mm:ss\" and the\n // moment value is 5 minutes, the user-friendly output is\n // \"5:00\", not \"05:00\". We shouldn't pad the `minutes` token\n // even though it has length of two if the template is \"h:mm:ss\";\n //\n // If the minutes output should always include the leading zero\n // even when the hour is trimmed then set `{ forceLength: true }`\n // to output \"05:00\". If the template is \"hh:mm:ss\", the user\n // clearly wanted everything padded so we should output \"05:00\";\n //\n // If the user wants the full padded output, they can use\n // template \"hh:mm:ss\" and set `{ trim: false }` to output\n // \"00:05:00\".\n if (isLargest && forceLength === null && token.length > 1) {\n forceLength = true;\n }\n\n // Update remainder.\n remainder.subtract(wholeValue, momentType);\n remainderMonths.subtract(wholeValue, momentType);\n\n return {\n rawValue: rawValue,\n wholeValue: wholeValue,\n // Decimal value is only retained for the least-magnitude\n // moment type in the format template.\n decimalValue: isSmallest ? decimalValue : 0,\n isSmallest: isSmallest,\n isLargest: isLargest,\n type: momentType,\n // Tokens can appear multiple times in a template string,\n // but all instances must share the same length.\n tokenLength: token.length\n };\n });\n\n var truncMethod = trunc ? Math.floor : Math.round;\n var truncate = function (value, places) {\n var factor = Math.pow(10, places);\n return truncMethod(value * factor) / factor;\n };\n\n var foundFirst = false;\n var bubbled = false;\n\n var formatValue = function (momentType, index) {\n var formatOptions = {\n useGrouping: useGrouping,\n groupingSeparator: groupingSeparator,\n decimalSeparator: decimalSeparator,\n grouping: grouping,\n useToLocaleString: useToLocaleString\n };\n\n if (useSignificantDigits) {\n if (significantDigits <= 0) {\n momentType.rawValue = 0;\n momentType.wholeValue = 0;\n momentType.decimalValue = 0;\n } else {\n formatOptions.maximumSignificantDigits = significantDigits;\n momentType.significantDigits = significantDigits;\n }\n }\n\n if (isMaxValue && !bubbled) {\n if (momentType.isLargest) {\n momentType.wholeValue = maxValue;\n momentType.decimalValue = 0;\n } else {\n momentType.wholeValue = 0;\n momentType.decimalValue = 0;\n }\n }\n\n if (isMinValue && !bubbled) {\n if (momentType.isSmallest) {\n momentType.wholeValue = minValue;\n momentType.decimalValue = 0;\n } else {\n momentType.wholeValue = 0;\n momentType.decimalValue = 0;\n }\n }\n\n if (momentType.isSmallest || momentType.significantDigits && momentType.significantDigits - momentType.wholeValue.toString().length <= 0) {\n // Apply precision to least significant token value.\n if (precision < 0) {\n momentType.value = truncate(momentType.wholeValue, precision);\n } else if (precision === 0) {\n momentType.value = truncMethod(momentType.wholeValue + momentType.decimalValue);\n } else { // precision > 0\n if (useSignificantDigits) {\n if (trunc) {\n momentType.value = truncate(momentType.rawValue, significantDigits - momentType.wholeValue.toString().length);\n } else {\n momentType.value = momentType.rawValue;\n }\n\n if (momentType.wholeValue) {\n significantDigits -= momentType.wholeValue.toString().length;\n }\n } else {\n formatOptions.fractionDigits = precision;\n\n if (trunc) {\n momentType.value = momentType.wholeValue + truncate(momentType.decimalValue, precision);\n } else {\n momentType.value = momentType.wholeValue + momentType.decimalValue;\n }\n }\n }\n } else {\n if (useSignificantDigits && momentType.wholeValue) {\n // Outer Math.round required here to handle floating point errors.\n momentType.value = Math.round(truncate(momentType.wholeValue, momentType.significantDigits - momentType.wholeValue.toString().length));\n\n significantDigits -= momentType.wholeValue.toString().length;\n } else {\n momentType.value = momentType.wholeValue;\n }\n }\n\n if (momentType.tokenLength > 1 && (forceLength || foundFirst)) {\n formatOptions.minimumIntegerDigits = momentType.tokenLength;\n\n if (bubbled && formatOptions.maximumSignificantDigits < momentType.tokenLength) {\n delete formatOptions.maximumSignificantDigits;\n }\n }\n\n if (!foundFirst && (momentType.value > 0 || trim === \"\" /* trim: false */ || find(stopTrim, momentType.type) || find(outputTypes, momentType.type))) {\n foundFirst = true;\n }\n\n momentType.formattedValue = formatNumber(momentType.value, formatOptions, userLocale);\n\n formatOptions.useGrouping = false;\n formatOptions.decimalSeparator = \".\";\n momentType.formattedValueEn = formatNumber(momentType.value, formatOptions, \"en\");\n\n if (momentType.tokenLength === 2 && momentType.type === \"milliseconds\") {\n momentType.formattedValueMS = formatNumber(momentType.value, {\n minimumIntegerDigits: 3,\n useGrouping: false\n }, \"en\").slice(0, 2);\n }\n\n return momentType;\n };\n\n // Calculate formatted values.\n momentTypes = map(momentTypes, formatValue);\n momentTypes = compact(momentTypes);\n\n // Bubble rounded values.\n if (momentTypes.length > 1) {\n var findType = function (type) {\n return find(momentTypes, function (momentType) {\n return momentType.type === type;\n });\n };\n\n var bubbleTypes = function (bubble) {\n var bubbleMomentType = findType(bubble.type);\n\n if (!bubbleMomentType) {\n return;\n }\n\n each(bubble.targets, function (target) {\n var targetMomentType = findType(target.type);\n\n if (!targetMomentType) {\n return;\n }\n\n if (parseInt(bubbleMomentType.formattedValueEn, 10) === target.value) {\n bubbleMomentType.rawValue = 0;\n bubbleMomentType.wholeValue = 0;\n bubbleMomentType.decimalValue = 0;\n targetMomentType.rawValue += 1;\n targetMomentType.wholeValue += 1;\n targetMomentType.decimalValue = 0;\n targetMomentType.formattedValueEn = targetMomentType.wholeValue.toString();\n bubbled = true;\n }\n });\n };\n\n each(bubbles, bubbleTypes);\n }\n\n // Recalculate formatted values.\n if (bubbled) {\n foundFirst = false;\n significantDigits = significantDigitsCache;\n momentTypes = map(momentTypes, formatValue);\n momentTypes = compact(momentTypes);\n }\n\n if (outputTypes && !(isMaxValue && !settings.trim)) {\n momentTypes = map(momentTypes, function (momentType) {\n if (find(outputTypes, function (outputType) {\n return momentType.type === outputType;\n })) {\n return momentType;\n }\n\n return null;\n });\n\n momentTypes = compact(momentTypes);\n } else {\n // Trim Large.\n if (trimLarge) {\n momentTypes = rest(momentTypes, function (momentType) {\n // Stop trimming on:\n // - the smallest moment type\n // - a type marked for stopTrim\n // - a type that has a whole value\n return !momentType.isSmallest && !momentType.wholeValue && !find(stopTrim, momentType.type);\n });\n }\n\n // Largest.\n if (largest && momentTypes.length) {\n momentTypes = momentTypes.slice(0, largest);\n }\n\n // Trim Small.\n if (trimSmall && momentTypes.length > 1) {\n momentTypes = initial(momentTypes, function (momentType) {\n // Stop trimming on:\n // - a type marked for stopTrim\n // - a type that has a whole value\n // - the largest momentType\n return !momentType.wholeValue && !find(stopTrim, momentType.type) && !momentType.isLargest;\n });\n }\n\n // Trim Mid.\n if (trimMid) {\n momentTypes = map(momentTypes, function (momentType, index) {\n if (index > 0 && index < momentTypes.length - 1 && !momentType.wholeValue) {\n return null;\n }\n\n return momentType;\n });\n\n momentTypes = compact(momentTypes);\n }\n\n // Trim Final.\n if (trimFinal && momentTypes.length === 1 && !momentTypes[0].wholeValue && !(!trunc && momentTypes[0].isSmallest && momentTypes[0].rawValue < minValue)) {\n momentTypes = [];\n }\n }\n\n if (returnMomentTypes) {\n return momentTypes;\n }\n\n // Localize and pluralize unit labels.\n each(tokens, function (token) {\n var key = momentTokens[token.type];\n\n var momentType = find(momentTypes, function (momentType) {\n return momentType.type === token.type;\n });\n\n if (!key || !momentType) {\n return;\n }\n\n var values = momentType.formattedValueEn.split(\".\");\n\n values[0] = parseInt(values[0], 10);\n\n if (values[1]) {\n values[1] = parseFloat(\"0.\" + values[1], 10);\n } else {\n values[1] = null;\n }\n\n var pluralKey = localeData.durationPluralKey(key, values[0], values[1]);\n\n var labels = durationGetLabels(key, localeData);\n\n var autoLocalized = false;\n\n var pluralizedLabels = {};\n\n // Auto-Localized unit labels.\n each(localeData._durationLabelTypes, function (labelType) {\n var label = find(labels, function (label) {\n return label.type === labelType.type && label.key === pluralKey;\n });\n\n if (label) {\n pluralizedLabels[label.type] = label.label;\n\n if (stringIncludes(token.text, labelType.string)) {\n token.text = token.text.replace(labelType.string, label.label);\n autoLocalized = true;\n }\n }\n });\n\n // Auto-pluralized unit labels.\n if (usePlural && !autoLocalized) {\n labels.sort(durationLabelCompare);\n\n each(labels, function (label) {\n if (pluralizedLabels[label.type] === label.label) {\n if (stringIncludes(token.text, label.label)) {\n // Stop checking this token if its label is already\n // correctly pluralized.\n return false;\n }\n\n // Skip this label if it is correct, but not present in\n // the token's text.\n return;\n }\n\n if (stringIncludes(token.text, label.label)) {\n // Replece this token's label and stop checking.\n token.text = token.text.replace(label.label, pluralizedLabels[label.type]);\n return false;\n }\n });\n }\n });\n\n // Build ouptut.\n tokens = map(tokens, function (token) {\n if (!token.type) {\n return token.text;\n }\n\n var momentType = find(momentTypes, function (momentType) {\n return momentType.type === token.type;\n });\n\n if (!momentType) {\n return \"\";\n }\n\n var out = \"\";\n\n if (useLeftUnits) {\n out += token.text;\n }\n\n if (isNegative && isMaxValue || !isNegative && isMinValue) {\n out += \"< \";\n isMaxValue = false;\n isMinValue = false;\n }\n\n if (isNegative && isMinValue || !isNegative && isMaxValue) {\n out += \"> \";\n isMaxValue = false;\n isMinValue = false;\n }\n\n if (isNegative && (momentType.value > 0 || trim === \"\" || find(stopTrim, momentType.type) || find(outputTypes, momentType.type))) {\n out += \"-\";\n isNegative = false;\n }\n\n if (token.type === \"milliseconds\" && momentType.formattedValueMS) {\n out += momentType.formattedValueMS;\n } else {\n out += momentType.formattedValue;\n }\n\n if (!useLeftUnits) {\n out += token.text;\n }\n\n return out;\n });\n\n // Trim leading and trailing comma, space, colon, and dot.\n return tokens.join(\"\").replace(/(,| |:|\\.)*$/, \"\").replace(/^(,| |:|\\.)*/, \"\");\n }\n\n // defaultFormatTemplate\n function defaultFormatTemplate() {\n var dur = this.duration;\n\n var findType = function findType(type) {\n return dur._data[type];\n };\n\n var firstType = find(this.types, findType);\n\n var lastType = findLast(this.types, findType);\n\n // Default template strings for each duration dimension type.\n switch (firstType) {\n case \"milliseconds\":\n return \"S __\";\n case \"seconds\": // Fallthrough.\n case \"minutes\":\n return \"*_MS_\";\n case \"hours\":\n return \"_HMS_\";\n case \"days\": // Possible Fallthrough.\n if (firstType === lastType) {\n return \"d __\";\n }\n case \"weeks\":\n if (firstType === lastType) {\n return \"w __\";\n }\n\n if (this.trim === null) {\n this.trim = \"both\";\n }\n\n return \"w __, d __, h __\";\n case \"months\": // Possible Fallthrough.\n if (firstType === lastType) {\n return \"M __\";\n }\n case \"years\":\n if (firstType === lastType) {\n return \"y __\";\n }\n\n if (this.trim === null) {\n this.trim = \"both\";\n }\n\n return \"y __, M __, d __\";\n default:\n if (this.trim === null) {\n this.trim = \"both\";\n }\n\n return \"y __, d __, h __, m __, s __\";\n }\n }\n\n // init\n function init(context) {\n if (!context) {\n throw \"Moment Duration Format init cannot find moment instance.\";\n }\n\n context.duration.format = durationsFormat;\n context.duration.fn.format = durationFormat;\n\n context.duration.fn.format.defaults = {\n // Many options are defaulted to `null` to distinguish between\n // 'not set' and 'set to `false`'\n\n // trim\n // Can be a string, a delimited list of strings, an array of strings,\n // or a boolean.\n // \"large\" - will trim largest-magnitude zero-value tokens until\n // finding a token with a value, a token identified as 'stopTrim', or\n // the final token of the format string.\n // \"small\" - will trim smallest-magnitude zero-value tokens until\n // finding a token with a value, a token identified as 'stopTrim', or\n // the final token of the format string.\n // \"both\" - will execute \"large\" trim then \"small\" trim.\n // \"mid\" - will trim any zero-value tokens that are not the first or\n // last tokens. Usually used in conjunction with \"large\" or \"both\".\n // e.g. \"large mid\" or \"both mid\".\n // \"final\" - will trim the final token if it is zero-value. Use this\n // option with \"large\" or \"both\" to output an empty string when\n // formatting a zero-value duration. e.g. \"large final\" or \"both final\".\n // \"all\" - Will trim all zero-value tokens. Shorthand for \"both mid final\".\n // \"left\" - maps to \"large\" to support plugin's version 1 API.\n // \"right\" - maps to \"large\" to support plugin's version 1 API.\n // `false` - template tokens are not trimmed.\n // `true` - treated as \"large\".\n // `null` - treated as \"large\".\n trim: null,\n\n // stopTrim\n // A moment token string, a delimited set of moment token strings,\n // or an array of moment token strings. Trimming will stop when a token\n // listed in this option is reached. A \"*\" character in the format\n // template string will also mark a moment token as stopTrim.\n // e.g. \"d [days] *h:mm:ss\" will always stop trimming at the 'hours' token.\n stopTrim: null,\n\n // largest\n // Set to a positive integer to output only the \"n\" largest-magnitude\n // moment tokens that have a value. All lesser-magnitude moment tokens\n // will be ignored. This option takes effect even if `trim` is set\n // to `false`.\n largest: null,\n\n // maxValue\n // Use `maxValue` to render generalized output for large duration values,\n // e.g. `\"> 60 days\"`. `maxValue` must be a positive integer and is\n /// applied to the greatest-magnitude moment token in the format template.\n maxValue: null,\n\n // minValue\n // Use `minValue` to render generalized output for small duration values,\n // e.g. `\"< 5 minutes\"`. `minValue` must be a positive integer and is\n // applied to the least-magnitude moment token in the format template.\n minValue: null,\n\n // precision\n // If a positive integer, number of decimal fraction digits to render.\n // If a negative integer, number of integer place digits to truncate to 0.\n // If `useSignificantDigits` is set to `true` and `precision` is a positive\n // integer, sets the maximum number of significant digits used in the\n // formatted output.\n precision: 0,\n\n // trunc\n // Default behavior rounds final token value. Set to `true` to\n // truncate final token value, which was the default behavior in\n // version 1 of this plugin.\n trunc: false,\n\n // forceLength\n // Force first moment token with a value to render at full length\n // even when template is trimmed and first moment token has length of 1.\n forceLength: null,\n\n // userLocale\n // Formatted numerical output is rendered using `toLocaleString`\n // and the locale of the user's environment. Set this option to render\n // numerical output using a different locale. Unit names are rendered\n // and detected using the locale set in moment.js, which can be different\n // from the locale of user's environment.\n userLocale: null,\n\n // usePlural\n // Will automatically singularize or pluralize unit names when they\n // appear in the text associated with each moment token. Standard and\n // short unit labels are singularized and pluralized, based on locale.\n // e.g. in english, \"1 second\" or \"1 sec\" would be rendered instead\n // of \"1 seconds\" or \"1 secs\". The default pluralization function\n // renders a plural label for a value with decimal precision.\n // e.g. \"1.0 seconds\" is never rendered as \"1.0 second\".\n // Label types and pluralization function are configurable in the\n // localeData extensions.\n usePlural: true,\n\n // useLeftUnits\n // The text to the right of each moment token in a format string\n // is treated as that token's units for the purposes of trimming,\n // singularizing, and auto-localizing.\n // e.g. \"h [hours], m [minutes], s [seconds]\".\n // To properly singularize or localize a format string such as\n // \"[hours] h, [minutes] m, [seconds] s\", where the units appear\n // to the left of each moment token, set useLeftUnits to `true`.\n // This plugin is not tested in the context of rtl text.\n useLeftUnits: false,\n\n // useGrouping\n // Enables locale-based digit grouping in the formatted output. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString\n useGrouping: true,\n\n // useSignificantDigits\n // Treat the `precision` option as the maximum significant digits\n // to be rendered. Precision must be a positive integer. Significant\n // digits extend across unit types,\n // e.g. \"6 hours 37.5 minutes\" represents 4 significant digits.\n // Enabling this option causes token length to be ignored. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString\n useSignificantDigits: false,\n\n // template\n // The template string used to format the duration. May be a function\n // or a string. Template functions are executed with the `this` binding\n // of the settings object so that template strings may be dynamically\n // generated based on the duration object (accessible via `this.duration`)\n // or any of the other settings. Leading and trailing space, comma,\n // period, and colon characters are trimmed from the resulting string.\n template: defaultFormatTemplate,\n\n // useToLocaleString\n // Set this option to `false` to ignore the `toLocaleString` feature\n // test and force the use of the `formatNumber` fallback function\n // included in this plugin.\n useToLocaleString: true,\n\n // formatNumber fallback options.\n // When `toLocaleString` is detected and passes the feature test, the\n // following options will have no effect: `toLocaleString` will be used\n // for formatting and the grouping separator, decimal separator, and\n // integer digit grouping will be determined by the user locale.\n\n // groupingSeparator\n // The integer digit grouping separator used when using the fallback\n // formatNumber function.\n groupingSeparator: \",\",\n\n // decimalSeparator\n // The decimal separator used when using the fallback formatNumber\n // function.\n decimalSeparator: \".\",\n\n // grouping\n // The integer digit grouping used when using the fallback formatNumber\n // function. Must be an array. The default value of `[3]` gives the\n // standard 3-digit thousand/million/billion digit groupings for the\n // \"en\" locale. Setting this option to `[3, 2]` would generate the\n // thousand/lakh/crore digit groupings used in the \"en-IN\" locale.\n grouping: [3]\n };\n\n context.updateLocale('en', engLocale);\n }\n\n // Run feature tests for `Number#toLocaleString`.\n var toLocaleStringFormatter = function(number, locale, options) {\n return number.toLocaleString(locale, options);\n };\n\n toLocaleStringWorks = toLocaleStringSupportsLocales() && featureTestFormatter(toLocaleStringFormatter);\n toLocaleStringRoundingWorks = toLocaleStringWorks && featureTestFormatterRounding(toLocaleStringFormatter);\n\n // Run feature tests for `Intl.NumberFormat#format`.\n var intlNumberFormatFormatter = function(number, locale, options) {\n if (typeof window !== 'undefined' && window && window.Intl && window.Intl.NumberFormat) {\n return window.Intl.NumberFormat(locale, options).format(number);\n }\n };\n\n intlNumberFormatWorks = featureTestFormatter(intlNumberFormatFormatter);\n intlNumberFormatRoundingWorks = intlNumberFormatWorks && featureTestFormatterRounding(intlNumberFormatFormatter);\n\n // Initialize duration format on the global moment instance.\n init(moment);\n\n // Return the init function so that duration format can be\n // initialized on other moment instances.\n return init;\n});\n","var moment = module.exports = require(\"./moment-timezone\");\nmoment.tz.load(require('./data/packed/latest.json'));\n","//! moment-timezone.js\n//! version : 0.5.43\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory); // AMD\n\t} else {\n\t\tfactory(root.moment); // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Resolves es6 module loading issue\n\tif (moment.version === undefined && moment.default) {\n\t\tmoment = moment.default;\n\t}\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.43\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tcountries = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname : data[0],\n\t\t\tabbrs : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets : mapIndices(offsets, indices),\n\t\t\tuntils : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name = unpacked.name;\n\t\t\tthis.abbrs = unpacked.abbrs;\n\t\t\tthis.untils = unpacked.untils;\n\t\t\tthis.offsets = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcountries : function () {\n\t\t\tvar zone_name = this.name;\n\t\t\treturn Object.keys(countries).filter(function (country_code) {\n\t\t\t\treturn countries[country_code].zones.indexOf(zone_name) !== -1;\n\t\t\t});\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils = this.untils,\n\t\t\t\tmax = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCountry object\n\t************************************/\n\n\tfunction Country (country_name, zone_names) {\n\t\tthis.name = country_name;\n\t\tthis.zones = zone_names;\n\t}\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction getCountryNames () {\n\t\treturn Object.keys(countries);\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction addCountries (data) {\n\t\tvar i, country_code, country_zones, split;\n\t\tif (!data || !data.length) return;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tsplit = data[i].split('|');\n\t\t\tcountry_code = split[0].toUpperCase();\n\t\t\tcountry_zones = split[1].split(' ');\n\t\t\tcountries[country_code] = new Country(\n\t\t\t\tcountry_code,\n\t\t\t\tcountry_zones\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction getCountry (name) {\n\t\tname = name.toUpperCase();\n\t\treturn countries[name] || null;\n\t}\n\n\tfunction zonesForCountry(country, with_offset) {\n\t\tcountry = getCountry(country);\n\n\t\tif (!country) return null;\n\n\t\tvar zones = country.zones.sort();\n\n\t\tif (with_offset) {\n\t\t\treturn zones.map(function (zone_name) {\n\t\t\t\tvar zone = getZone(zone_name);\n\t\t\t\treturn {\n\t\t\t\t\tname: zone_name,\n\t\t\t\t\toffset: zone.utcOffset(new Date())\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn zones;\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\taddCountries(data.countries);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version = VERSION;\n\ttz.dataVersion = '';\n\ttz._zones = zones;\n\ttz._links = links;\n\ttz._names = names;\n\ttz._countries\t= countries;\n\ttz.add = addZone;\n\ttz.link = addLink;\n\ttz.load = loadData;\n\ttz.zone = getZone;\n\ttz.zoneExists = zoneExists; // deprecated in 0.1.0\n\ttz.guess = guess;\n\ttz.names = getNames;\n\ttz.Zone = Zone;\n\ttz.unpack = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset = needsOffset;\n\ttz.moveInvalidForward = true;\n\ttz.moveAmbiguousForward = false;\n\ttz.countries = getCountryNames;\n\ttz.zonesForCountry = zonesForCountry;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr = abbrWrap(fn.zoneAbbr);\n\tfn.utc = resetZoneWrap(fn.utc);\n\tfn.local = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\t// INJECT DATA\n\n\treturn moment;\n}));\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","module.exports = require('./src/normalizeWheel.js');\n","/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ExecutionEnvironment\n */\n\n/*jslint evil: true */\n\n'use strict';\n\nvar canUseDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners:\n canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n","/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule UserAgent_DEPRECATED\n */\n\n/**\n * Provides entirely client-side User Agent and OS detection. You should prefer\n * the non-deprecated UserAgent module when possible, which exposes our\n * authoritative server-side PHP-based detection to the client.\n *\n * Usage is straightforward:\n *\n * if (UserAgent_DEPRECATED.ie()) {\n * // IE\n * }\n *\n * You can also do version checks:\n *\n * if (UserAgent_DEPRECATED.ie() >= 7) {\n * // IE7 or better\n * }\n *\n * The browser functions will return NaN if the browser does not match, so\n * you can also do version compares the other way:\n *\n * if (UserAgent_DEPRECATED.ie() < 7) {\n * // IE6 or worse\n * }\n *\n * Note that the version is a float and may include a minor version number,\n * so you should always use range operators to perform comparisons, not\n * strict equality.\n *\n * **Note:** You should **strongly** prefer capability detection to browser\n * version detection where it's reasonable:\n *\n * http://www.quirksmode.org/js/support.html\n *\n * Further, we have a large number of mature wrapper functions and classes\n * which abstract away many browser irregularities. Check the documentation,\n * grep for things, or ask on javascript@lists.facebook.com before writing yet\n * another copy of \"event || window.event\".\n *\n */\n\nvar _populated = false;\n\n// Browsers\nvar _ie, _firefox, _opera, _webkit, _chrome;\n\n// Actual IE browser for compatibility mode\nvar _ie_real_version;\n\n// Platforms\nvar _osx, _windows, _linux, _android;\n\n// Architectures\nvar _win64;\n\n// Devices\nvar _iphone, _ipad, _native;\n\nvar _mobile;\n\nfunction _populate() {\n if (_populated) {\n return;\n }\n\n _populated = true;\n\n // To work around buggy JS libraries that can't handle multi-digit\n // version numbers, Opera 10's user agent string claims it's Opera\n // 9, then later includes a Version/X.Y field:\n //\n // Opera/9.80 (foo) Presto/2.2.15 Version/10.10\n var uas = navigator.userAgent;\n var agent = /(?:MSIE.(\\d+\\.\\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\\d+\\.\\d+))|(?:Opera(?:.+Version.|.)(\\d+\\.\\d+))|(?:AppleWebKit.(\\d+(?:\\.\\d+)?))|(?:Trident\\/\\d+\\.\\d+.*rv:(\\d+\\.\\d+))/.exec(uas);\n var os = /(Mac OS X)|(Windows)|(Linux)/.exec(uas);\n\n _iphone = /\\b(iPhone|iP[ao]d)/.exec(uas);\n _ipad = /\\b(iP[ao]d)/.exec(uas);\n _android = /Android/i.exec(uas);\n _native = /FBAN\\/\\w+;/i.exec(uas);\n _mobile = /Mobile/i.exec(uas);\n\n // Note that the IE team blog would have you believe you should be checking\n // for 'Win64; x64'. But MSDN then reveals that you can actually be coming\n // from either x64 or ia64; so ultimately, you should just check for Win64\n // as in indicator of whether you're in 64-bit IE. 32-bit IE on 64-bit\n // Windows will send 'WOW64' instead.\n _win64 = !!(/Win64/.exec(uas));\n\n if (agent) {\n _ie = agent[1] ? parseFloat(agent[1]) : (\n agent[5] ? parseFloat(agent[5]) : NaN);\n // IE compatibility mode\n if (_ie && document && document.documentMode) {\n _ie = document.documentMode;\n }\n // grab the \"true\" ie version from the trident token if available\n var trident = /(?:Trident\\/(\\d+.\\d+))/.exec(uas);\n _ie_real_version = trident ? parseFloat(trident[1]) + 4 : _ie;\n\n _firefox = agent[2] ? parseFloat(agent[2]) : NaN;\n _opera = agent[3] ? parseFloat(agent[3]) : NaN;\n _webkit = agent[4] ? parseFloat(agent[4]) : NaN;\n if (_webkit) {\n // We do not add the regexp to the above test, because it will always\n // match 'safari' only since 'AppleWebKit' appears before 'Chrome' in\n // the userAgent string.\n agent = /(?:Chrome\\/(\\d+\\.\\d+))/.exec(uas);\n _chrome = agent && agent[1] ? parseFloat(agent[1]) : NaN;\n } else {\n _chrome = NaN;\n }\n } else {\n _ie = _firefox = _opera = _chrome = _webkit = NaN;\n }\n\n if (os) {\n if (os[1]) {\n // Detect OS X version. If no version number matches, set _osx to true.\n // Version examples: 10, 10_6_1, 10.7\n // Parses version number as a float, taking only first two sets of\n // digits. If only one set of digits is found, returns just the major\n // version number.\n var ver = /(?:Mac OS X (\\d+(?:[._]\\d+)?))/.exec(uas);\n\n _osx = ver ? parseFloat(ver[1].replace('_', '.')) : true;\n } else {\n _osx = false;\n }\n _windows = !!os[2];\n _linux = !!os[3];\n } else {\n _osx = _windows = _linux = false;\n }\n}\n\nvar UserAgent_DEPRECATED = {\n\n /**\n * Check if the UA is Internet Explorer.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n ie: function() {\n return _populate() || _ie;\n },\n\n /**\n * Check if we're in Internet Explorer compatibility mode.\n *\n * @return bool true if in compatibility mode, false if\n * not compatibility mode or not ie\n */\n ieCompatibilityMode: function() {\n return _populate() || (_ie_real_version > _ie);\n },\n\n\n /**\n * Whether the browser is 64-bit IE. Really, this is kind of weak sauce; we\n * only need this because Skype can't handle 64-bit IE yet. We need to remove\n * this when we don't need it -- tracked by #601957.\n */\n ie64: function() {\n return UserAgent_DEPRECATED.ie() && _win64;\n },\n\n /**\n * Check if the UA is Firefox.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n firefox: function() {\n return _populate() || _firefox;\n },\n\n\n /**\n * Check if the UA is Opera.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n opera: function() {\n return _populate() || _opera;\n },\n\n\n /**\n * Check if the UA is WebKit.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n webkit: function() {\n return _populate() || _webkit;\n },\n\n /**\n * For Push\n * WILL BE REMOVED VERY SOON. Use UserAgent_DEPRECATED.webkit\n */\n safari: function() {\n return UserAgent_DEPRECATED.webkit();\n },\n\n /**\n * Check if the UA is a Chrome browser.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n chrome : function() {\n return _populate() || _chrome;\n },\n\n\n /**\n * Check if the user is running Windows.\n *\n * @return bool `true' if the user's OS is Windows.\n */\n windows: function() {\n return _populate() || _windows;\n },\n\n\n /**\n * Check if the user is running Mac OS X.\n *\n * @return float|bool Returns a float if a version number is detected,\n * otherwise true/false.\n */\n osx: function() {\n return _populate() || _osx;\n },\n\n /**\n * Check if the user is running Linux.\n *\n * @return bool `true' if the user's OS is some flavor of Linux.\n */\n linux: function() {\n return _populate() || _linux;\n },\n\n /**\n * Check if the user is running on an iPhone or iPod platform.\n *\n * @return bool `true' if the user is running some flavor of the\n * iPhone OS.\n */\n iphone: function() {\n return _populate() || _iphone;\n },\n\n mobile: function() {\n return _populate() || (_iphone || _ipad || _android || _mobile);\n },\n\n nativeApp: function() {\n // webviews inside of the native apps\n return _populate() || _native;\n },\n\n android: function() {\n return _populate() || _android;\n },\n\n ipad: function() {\n return _populate() || _ipad;\n }\n};\n\nmodule.exports = UserAgent_DEPRECATED;\n","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isEventSupported\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature =\n document.implementation &&\n document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM ||\n capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n","/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule normalizeWheel\n * @typechecks\n */\n\n'use strict';\n\nvar UserAgent_DEPRECATED = require('./UserAgent_DEPRECATED');\n\nvar isEventSupported = require('./isEventSupported');\n\n\n// Reasonable defaults\nvar PIXEL_STEP = 10;\nvar LINE_HEIGHT = 40;\nvar PAGE_HEIGHT = 800;\n\n/**\n * Mouse wheel (and 2-finger trackpad) support on the web sucks. It is\n * complicated, thus this doc is long and (hopefully) detailed enough to answer\n * your questions.\n *\n * If you need to react to the mouse wheel in a predictable way, this code is\n * like your bestest friend. * hugs *\n *\n * As of today, there are 4 DOM event types you can listen to:\n *\n * 'wheel' -- Chrome(31+), FF(17+), IE(9+)\n * 'mousewheel' -- Chrome, IE(6+), Opera, Safari\n * 'MozMousePixelScroll' -- FF(3.5 only!) (2010-2013) -- don't bother!\n * 'DOMMouseScroll' -- FF(0.9.7+) since 2003\n *\n * So what to do? The is the best:\n *\n * normalizeWheel.getEventType();\n *\n * In your event callback, use this code to get sane interpretation of the\n * deltas. This code will return an object with properties:\n *\n * spinX -- normalized spin speed (use for zoom) - x plane\n * spinY -- \" - y plane\n * pixelX -- normalized distance (to pixels) - x plane\n * pixelY -- \" - y plane\n *\n * Wheel values are provided by the browser assuming you are using the wheel to\n * scroll a web page by a number of lines or pixels (or pages). Values can vary\n * significantly on different platforms and browsers, forgetting that you can\n * scroll at different speeds. Some devices (like trackpads) emit more events\n * at smaller increments with fine granularity, and some emit massive jumps with\n * linear speed or acceleration.\n *\n * This code does its best to normalize the deltas for you:\n *\n * - spin is trying to normalize how far the wheel was spun (or trackpad\n * dragged). This is super useful for zoom support where you want to\n * throw away the chunky scroll steps on the PC and make those equal to\n * the slow and smooth tiny steps on the Mac. Key data: This code tries to\n * resolve a single slow step on a wheel to 1.\n *\n * - pixel is normalizing the desired scroll delta in pixel units. You'll\n * get the crazy differences between browsers, but at least it'll be in\n * pixels!\n *\n * - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This\n * should translate to positive value zooming IN, negative zooming OUT.\n * This matches the newer 'wheel' event.\n *\n * Why are there spinX, spinY (or pixels)?\n *\n * - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n * with a mouse. It results in side-scrolling in the browser by default.\n *\n * - spinY is what you expect -- it's the classic axis of a mouse wheel.\n *\n * - I dropped spinZ/pixelZ. It is supported by the DOM 3 'wheel' event and\n * probably is by browsers in conjunction with fancy 3D controllers .. but\n * you know.\n *\n * Implementation info:\n *\n * Examples of 'wheel' event if you scroll slowly (down) by one step with an\n * average mouse:\n *\n * OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120)\n * OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12)\n * OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A)\n * Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120)\n * Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120)\n *\n * On the trackpad:\n *\n * OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6)\n * OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A)\n *\n * On other/older browsers.. it's more complicated as there can be multiple and\n * also missing delta values.\n *\n * The 'wheel' event is more standard:\n *\n * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n *\n * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n * deltaX, deltaY and deltaZ. Some browsers provide other values to maintain\n * backward compatibility with older events. Those other values help us\n * better normalize spin speed. Example of what the browsers provide:\n *\n * | event.wheelDelta | event.detail\n * ------------------+------------------+--------------\n * Safari v5/OS X | -120 | 0\n * Safari v5/Win7 | -120 | 0\n * Chrome v17/OS X | -120 | 0\n * Chrome v17/Win7 | -120 | 0\n * IE9/Win7 | -120 | undefined\n * Firefox v4/OS X | undefined | 1\n * Firefox v4/Win7 | undefined | 3\n *\n */\nfunction normalizeWheel(/*object*/ event) /*object*/ {\n var sX = 0, sY = 0, // spinX, spinY\n pX = 0, pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in event) { sY = event.detail; }\n if ('wheelDelta' in event) { sY = -event.wheelDelta / 120; }\n if ('wheelDeltaY' in event) { sY = -event.wheelDeltaY / 120; }\n if ('wheelDeltaX' in event) { sX = -event.wheelDeltaX / 120; }\n\n // side scrolling on FF with DOMMouseScroll\n if ( 'axis' in event && event.axis === event.HORIZONTAL_AXIS ) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in event) { pY = event.deltaY; }\n if ('deltaX' in event) { pX = event.deltaX; }\n\n if ((pX || pY) && event.deltaMode) {\n if (event.deltaMode == 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) { sX = (pX < 1) ? -1 : 1; }\n if (pY && !sY) { sY = (pY < 1) ? -1 : 1; }\n\n return { spinX : sX,\n spinY : sY,\n pixelX : pX,\n pixelY : pY };\n}\n\n\n/**\n * The best combination if you prefer spinX + spinY normalization. It favors\n * the older DOMMouseScroll for Firefox, as FF does not include wheelDelta with\n * 'wheel' event, making spin speed determination impossible.\n */\nnormalizeWheel.getEventType = function() /*string*/ {\n return (UserAgent_DEPRECATED.firefox())\n ? 'DOMMouseScroll'\n : (isEventSupported('wheel'))\n ? 'wheel'\n : 'mousewheel';\n};\n\nmodule.exports = normalizeWheel;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","/**\n * Srcset Parser\n *\n * By Alex Bell | MIT License\n *\n * JS Parser for the string value that appears in markup <img srcset=\"here\">\n *\n * @returns Array [{url: _, d: _, w: _, h:_}, ...]\n *\n * Based super duper closely on the reference algorithm at:\n * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n *\n * Most comments are copied in directly from the spec\n * (except for comments in parens).\n */\n\n(function (root, factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([], factory);\n\t} else if (typeof module === 'object' && module.exports) {\n\t\t// Node. Does not work with strict CommonJS, but\n\t\t// only CommonJS-like environments that support module.exports,\n\t\t// like Node.\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// Browser globals (root is window)\n\t\troot.parseSrcset = factory();\n\t}\n}(this, function () {\n\n\t// 1. Let input be the value passed to this algorithm.\n\treturn function (input) {\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t// Manual is faster than RegEx\n\t\t// http://bjorn.tipling.com/state-and-regular-expressions-in-javascript\n\t\t// http://jsperf.com/whitespace-character/5\n\t\tfunction isSpace(c) {\n\t\t\treturn (c === \"\\u0020\" || // space\n\t\t\tc === \"\\u0009\" || // horizontal tab\n\t\t\tc === \"\\u000A\" || // new line\n\t\t\tc === \"\\u000C\" || // form feed\n\t\t\tc === \"\\u000D\"); // carriage return\n\t\t}\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t\tmatch = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\n\t\t\t// (Don't use \\s, to avoid matching non-breaking space)\n\t\t\tregexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t\t\tregexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t\t\tregexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t\t\tregexTrailingCommas = /[,]+$/,\n\t\t\tregexNonNegativeInteger = /^\\d+$/,\n\n\t\t\t// ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t\t\t// Must include at least one digit.\n\t\t\t// According to spec tests any decimal point must be followed by a digit.\n\t\t\t// No leading plus sign is allowed.)\n\t\t\t// https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t\t\tregexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,\n\n\t\t\turl,\n\t\t\tdescriptors,\n\t\t\tcurrentDescriptor,\n\t\t\tstate,\n\t\t\tc,\n\n\t\t\t// 2. Let position be a pointer into input, initially pointing at the start\n\t\t\t// of the string.\n\t\t\tpos = 0,\n\n\t\t\t// 3. Let candidates be an initially empty source set.\n\t\t\tcandidates = [];\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t// characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t// were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we're done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t// and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t// more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === \",\") {\n\t\t\t\turl = url.replace(regexTrailingCommas, \"\");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\n\t\t/**\n\t\t * Tokenizes descriptor properties prior to parsing\n\t\t * Returns undefined.\n\t\t */\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = \"\";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = \"in descriptor\";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t// Do the following depending on the value of state.\n\t\t\t\t// For the purpose of this step, \"EOF\" is a special character representing\n\t\t\t\t// that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === \"in descriptor\") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t\t// Space character\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors and let current descriptor be the empty string.\n\t\t\t\t\t// Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = \"\";\n\t\t\t\t\t\t\tstate = \"after descriptor\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === \",\") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === \"\\u0028\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in parens\";\n\n\t\t\t\t\t\t// EOF\n\t\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t\t// (end \"in descriptor\"\n\n\t\t\t\t\t// In parens\n\t\t\t\t} else if (state === \"in parens\") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === \")\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in descriptor\";\n\n\t\t\t\t\t\t// EOF\n\t\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === \"after descriptor\") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"in descriptor\";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t/**\n\t\t * Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t * @return undefined\n\t\t */\n\t\t// Declared outside of the while loop so that it's only created once.\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t\t// 10. Let width be absent.\n\t\t\t\t// 11. Let density be absent.\n\t\t\t\t// 12. Let future-compat-h be absent. (We're implementing it now as h)\n\t\t\t\tw, d, h, i,\n\t\t\t\tcandidate = {},\n\t\t\t\tdesc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === \"w\")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === \"x\")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === \"h\")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tcandidates.push(candidate);\n\t\t\t} else if (console && console.log) {\n\t\t\t\tconsole.log(\"Invalid srcset descriptor found in '\" +\n\t\t\t\t\tinput + \"' at '\" + desc + \"'.\");\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t}\n}));\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","'use strict';\n\nvar self = module.exports;\n\nmodule.exports.isNumber = function (x) {\n return (typeof x === 'number');\n};\n\nmodule.exports.findMin = function (arr) {\n if (arr.length === 0) {\n return Infinity;\n }\n\n var curr = arr[0];\n for (var i = 1; i < arr.length; i++) {\n curr = Math.min(curr, arr[i]);\n }\n return curr;\n};\n\nmodule.exports.findMax = function (arr) {\n if (arr.length === 0) {\n return -Infinity;\n }\n\n var curr = arr[0];\n for (var i = 1; i < arr.length; i++) {\n curr = Math.max(curr, arr[i]);\n }\n return curr;\n};\n\nmodule.exports.findMinMulti = function (arr) {\n var curr = self.findMin(arr[0]);\n for (var i = 1; i < arr.length; i++) {\n curr = Math.min(curr, self.findMin(arr[i]));\n }\n return curr;\n};\n\nmodule.exports.findMaxMulti = function (arr) {\n var curr = self.findMax(arr[0]);\n for (var i = 1; i < arr.length; i++) {\n curr = Math.max(curr, self.findMax(arr[i]));\n }\n return curr;\n};\n\nmodule.exports.inside = function (min, max, x) {\n return (min <= x) && (x <= max);\n};\n","'use strict';\n\nvar DEFAULT_SIZE = 50;\nvar DEFAULT_WIDTH = 2;\n\nvar LN_2 = Math.log(2);\nvar self = module.exports;\n\nvar helper = require('./helper');\n\n// Triangle\nfunction kernel(x) {\n return 1 - Math.abs(x);\n}\n\n/**\n * Get min and max value for the pdf, covering all arr data range while respecting options' data\n * @param arr\n * @param options\n * @returns {*}\n */\nmodule.exports.getUnifiedMinMax = function (arr, options) {\n return self.getUnifiedMinMaxMulti([arr], options);\n};\n\nmodule.exports.getUnifiedMinMaxMulti = function (arrMulti, options) {\n options = options || {};\n\n var relaxMin = false;\n var relaxMax = false;\n\n var width = helper.isNumber(options.width) ? options.width : DEFAULT_WIDTH;\n var size = helper.isNumber(options.size) ? options.size : DEFAULT_SIZE;\n var min = helper.isNumber(options.min) ? options.min : (relaxMin = true, helper.findMinMulti(arrMulti));\n var max = helper.isNumber(options.max) ? options.max : (relaxMax = true, helper.findMaxMulti(arrMulti));\n\n var range = max - min;\n var step = range / (size - 1);\n\n // Relax?\n if (relaxMin) {\n min = min - 2 * width * step;\n }\n if (relaxMax) {\n max = max + 2 * width * step;\n }\n\n return {\n min: min,\n max: max\n };\n};\n\nmodule.exports.create = function (arr, options) {\n options = options || {};\n\n if (!arr || (arr.length === 0)) {\n return [];\n }\n\n var size = helper.isNumber(options.size) ? options.size : DEFAULT_SIZE;\n var width = helper.isNumber(options.width) ? options.width : DEFAULT_WIDTH;\n var normalizedMinMax = self.getUnifiedMinMax(arr, {\n size: size,\n width: width,\n min: options.min,\n max: options.max\n });\n\n var min = normalizedMinMax.min;\n var max = normalizedMinMax.max;\n\n var range = max - min;\n var step = range / (size - 1);\n if (range === 0) {\n // Special case...\n return [{x: min, y: 1}];\n }\n\n // Good to go\n\n var buckets = [];\n for (var i = 0; i < size; i++) {\n buckets.push({\n x: min + i * step,\n y: 0\n });\n }\n\n var xToBucket = function (x) {\n return Math.floor((x - min) / step);\n };\n\n var partialArea = generatePartialAreas(kernel, width);\n var fullArea = partialArea[width];\n var c = partialArea[width-1] - partialArea[width-2];\n\n var initalValue = 0;\n arr.forEach(function (x) {\n var bucket = xToBucket(x);\n\n // Totally outside?\n if ((bucket + width < 0) || (bucket - width >= buckets.length)) {\n return;\n }\n\n var start = Math.max(bucket - width, 0);\n var mid = bucket;\n var end = Math.min(bucket + width, buckets.length - 1);\n\n var leftBlockCount = start - (bucket - width);\n var rightBlockCount = (bucket + width) - end;\n var spilledAreaLeft = partialArea[-width-1 + leftBlockCount] || 0;\n var spilledAreaRight = partialArea[-width-1 + rightBlockCount] || 0;\n var weight = fullArea / (fullArea - spilledAreaLeft - spilledAreaRight);\n\n if (leftBlockCount > 0) {\n initalValue += weight * (leftBlockCount - 1) * c;\n }\n\n // Add grads\n var startGradPos = Math.max(0, bucket-width+1);\n if (helper.inside(0, buckets.length-1, startGradPos)) {\n buckets[startGradPos].y += weight * 1 * c;\n }\n if (helper.inside(0, buckets.length-1, mid + 1)) {\n buckets[mid + 1].y -= weight * 2 * c;\n }\n if (helper.inside(0, buckets.length-1, end + 1)) {\n buckets[end + 1].y += weight * 1 * c;\n }\n });\n\n var accumulator = initalValue;\n var gradAccumulator = 0;\n var area = 0;\n buckets.forEach(function (bucket) {\n gradAccumulator += bucket.y;\n accumulator += gradAccumulator;\n\n bucket.y = accumulator;\n area += accumulator;\n });\n\n // Normalize\n if (area > 0) {\n buckets.forEach(function (bucket) {\n bucket.y /= area;\n });\n }\n\n return buckets;\n};\n\nfunction generatePartialAreas(kernel, width) {\n var partialAreas = {};\n\n var accumulator = 0;\n for (var i = -width; i <= width; i++) {\n accumulator += kernel(i/width);\n partialAreas[i] = accumulator;\n }\n\n return partialAreas;\n}\n\nmodule.exports.getExpectedValueFromPdf = function (pdf) {\n if (!pdf || (pdf.length === 0)) {\n return undefined;\n }\n\n var expected = 0;\n\n pdf.forEach(function (obj) {\n expected += obj.x * obj.y;\n });\n\n return expected;\n};\n\nmodule.exports.getXWithLeftTailArea = function (pdf, area) {\n if (!pdf || (pdf.length === 0)) {\n return undefined;\n }\n\n var accumulator = 0;\n var last = 0;\n for (var i = 0; i < pdf.length; i++) {\n last = i;\n accumulator += pdf[i].y;\n\n if (accumulator >= area) {\n break;\n }\n }\n\n return pdf[last].x;\n};\n\nmodule.exports.getPerplexity = function (pdf) {\n if (!pdf || (pdf.length === 0)) {\n return undefined;\n }\n\n var entropy = 0;\n pdf.forEach(function (obj) {\n var ln = Math.log(obj.y);\n\n if (isFinite(ln)) {\n entropy += obj.y * ln;\n }\n });\n entropy = -entropy / LN_2;\n\n return Math.pow(2, entropy);\n};\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","'use strict'\n\nlet Container = require('./container')\n\nclass AtRule extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'atrule'\n }\n\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.append(...children)\n }\n\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.prepend(...children)\n }\n}\n\nmodule.exports = AtRule\nAtRule.default = AtRule\n\nContainer.registerAtRule(AtRule)\n","'use strict'\n\nlet Node = require('./node')\n\nclass Comment extends Node {\n constructor(defaults) {\n super(defaults)\n this.type = 'comment'\n }\n}\n\nmodule.exports = Comment\nComment.default = Comment\n","'use strict'\n\nlet { isClean, my } = require('./symbols')\nlet Declaration = require('./declaration')\nlet Comment = require('./comment')\nlet Node = require('./node')\n\nlet parse, Rule, AtRule, Root\n\nfunction cleanSource(nodes) {\n return nodes.map(i => {\n if (i.nodes) i.nodes = cleanSource(i.nodes)\n delete i.source\n return i\n })\n}\n\nfunction markDirtyUp(node) {\n node[isClean] = false\n if (node.proxyOf.nodes) {\n for (let i of node.proxyOf.nodes) {\n markDirtyUp(i)\n }\n }\n}\n\nclass Container extends Node {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last)\n for (let node of nodes) this.proxyOf.nodes.push(node)\n }\n\n this.markDirty()\n\n return this\n }\n\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween)\n if (this.nodes) {\n for (let node of this.nodes) node.cleanRaws(keepBetween)\n }\n }\n\n each(callback) {\n if (!this.proxyOf.nodes) return undefined\n let iterator = this.getIterator()\n\n let index, result\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index = this.indexes[iterator]\n result = callback(this.proxyOf.nodes[index], index)\n if (result === false) break\n\n this.indexes[iterator] += 1\n }\n\n delete this.indexes[iterator]\n return result\n }\n\n every(condition) {\n return this.nodes.every(condition)\n }\n\n getIterator() {\n if (!this.lastEach) this.lastEach = 0\n if (!this.indexes) this.indexes = {}\n\n this.lastEach += 1\n let iterator = this.lastEach\n this.indexes[iterator] = 0\n\n return iterator\n }\n\n getProxyProcessor() {\n return {\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (!node[prop]) {\n return node[prop]\n } else if (\n prop === 'each' ||\n (typeof prop === 'string' && prop.startsWith('walk'))\n ) {\n return (...args) => {\n return node[prop](\n ...args.map(i => {\n if (typeof i === 'function') {\n return (child, index) => i(child.toProxy(), index)\n } else {\n return i\n }\n })\n )\n }\n } else if (prop === 'every' || prop === 'some') {\n return cb => {\n return node[prop]((child, ...other) =>\n cb(child.toProxy(), ...other)\n )\n }\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else if (prop === 'nodes') {\n return node.nodes.map(i => i.toProxy())\n } else if (prop === 'first' || prop === 'last') {\n return node[prop].toProxy()\n } else {\n return node[prop]\n }\n },\n\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (prop === 'name' || prop === 'params' || prop === 'selector') {\n node.markDirty()\n }\n return true\n }\n }\n }\n\n index(child) {\n if (typeof child === 'number') return child\n if (child.proxyOf) child = child.proxyOf\n return this.proxyOf.nodes.indexOf(child)\n }\n\n insertAfter(exist, add) {\n let existIndex = this.index(exist)\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex < index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n insertBefore(exist, add) {\n let existIndex = this.index(exist)\n let type = existIndex === 0 ? 'prepend' : false\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex <= index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n normalize(nodes, sample) {\n if (typeof nodes === 'string') {\n nodes = cleanSource(parse(nodes).nodes)\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type === 'root' && this.type !== 'document') {\n nodes = nodes.nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type) {\n nodes = [nodes]\n } else if (nodes.prop) {\n if (typeof nodes.value === 'undefined') {\n throw new Error('Value field is missed in node creation')\n } else if (typeof nodes.value !== 'string') {\n nodes.value = String(nodes.value)\n }\n nodes = [new Declaration(nodes)]\n } else if (nodes.selector) {\n nodes = [new Rule(nodes)]\n } else if (nodes.name) {\n nodes = [new AtRule(nodes)]\n } else if (nodes.text) {\n nodes = [new Comment(nodes)]\n } else {\n throw new Error('Unknown node type in node creation')\n }\n\n let processed = nodes.map(i => {\n /* c8 ignore next */\n if (!i[my]) Container.rebuild(i)\n i = i.proxyOf\n if (i.parent) i.parent.removeChild(i)\n if (i[isClean]) markDirtyUp(i)\n if (typeof i.raws.before === 'undefined') {\n if (sample && typeof sample.raws.before !== 'undefined') {\n i.raws.before = sample.raws.before.replace(/\\S/g, '')\n }\n }\n i.parent = this.proxyOf\n return i\n })\n\n return processed\n }\n\n prepend(...children) {\n children = children.reverse()\n for (let child of children) {\n let nodes = this.normalize(child, this.first, 'prepend').reverse()\n for (let node of nodes) this.proxyOf.nodes.unshift(node)\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n push(child) {\n child.parent = this\n this.proxyOf.nodes.push(child)\n return this\n }\n\n removeAll() {\n for (let node of this.proxyOf.nodes) node.parent = undefined\n this.proxyOf.nodes = []\n\n this.markDirty()\n\n return this\n }\n\n removeChild(child) {\n child = this.index(child)\n this.proxyOf.nodes[child].parent = undefined\n this.proxyOf.nodes.splice(child, 1)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (index >= child) {\n this.indexes[id] = index - 1\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts\n opts = {}\n }\n\n this.walkDecls(decl => {\n if (opts.props && !opts.props.includes(decl.prop)) return\n if (opts.fast && !decl.value.includes(opts.fast)) return\n\n decl.value = decl.value.replace(pattern, callback)\n })\n\n this.markDirty()\n\n return this\n }\n\n some(condition) {\n return this.nodes.some(condition)\n }\n\n walk(callback) {\n return this.each((child, i) => {\n let result\n try {\n result = callback(child, i)\n } catch (e) {\n throw child.addToError(e)\n }\n if (result !== false && child.walk) {\n result = child.walk(callback)\n }\n\n return result\n })\n }\n\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name\n return this.walk((child, i) => {\n if (child.type === 'atrule') {\n return callback(child, i)\n }\n })\n }\n if (name instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i)\n }\n })\n }\n\n walkComments(callback) {\n return this.walk((child, i) => {\n if (child.type === 'comment') {\n return callback(child, i)\n }\n })\n }\n\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop\n return this.walk((child, i) => {\n if (child.type === 'decl') {\n return callback(child, i)\n }\n })\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i)\n }\n })\n }\n\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector\n\n return this.walk((child, i) => {\n if (child.type === 'rule') {\n return callback(child, i)\n }\n })\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i)\n }\n })\n }\n\n get first() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[0]\n }\n\n get last() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]\n }\n}\n\nContainer.registerParse = dependant => {\n parse = dependant\n}\n\nContainer.registerRule = dependant => {\n Rule = dependant\n}\n\nContainer.registerAtRule = dependant => {\n AtRule = dependant\n}\n\nContainer.registerRoot = dependant => {\n Root = dependant\n}\n\nmodule.exports = Container\nContainer.default = Container\n\n/* c8 ignore start */\nContainer.rebuild = node => {\n if (node.type === 'atrule') {\n Object.setPrototypeOf(node, AtRule.prototype)\n } else if (node.type === 'rule') {\n Object.setPrototypeOf(node, Rule.prototype)\n } else if (node.type === 'decl') {\n Object.setPrototypeOf(node, Declaration.prototype)\n } else if (node.type === 'comment') {\n Object.setPrototypeOf(node, Comment.prototype)\n } else if (node.type === 'root') {\n Object.setPrototypeOf(node, Root.prototype)\n }\n\n node[my] = true\n\n if (node.nodes) {\n node.nodes.forEach(child => {\n Container.rebuild(child)\n })\n }\n}\n/* c8 ignore stop */\n","'use strict'\n\nlet pico = require('picocolors')\n\nlet terminalHighlight = require('./terminal-highlight')\n\nclass CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin) {\n super(message)\n this.name = 'CssSyntaxError'\n this.reason = message\n\n if (file) {\n this.file = file\n }\n if (source) {\n this.source = source\n }\n if (plugin) {\n this.plugin = plugin\n }\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n if (typeof line === 'number') {\n this.line = line\n this.column = column\n } else {\n this.line = line.line\n this.column = line.column\n this.endLine = column.line\n this.endColumn = column.column\n }\n }\n\n this.setMessage()\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError)\n }\n }\n\n setMessage() {\n this.message = this.plugin ? this.plugin + ': ' : ''\n this.message += this.file ? this.file : '<css input>'\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column\n }\n this.message += ': ' + this.reason\n }\n\n showSourceCode(color) {\n if (!this.source) return ''\n\n let css = this.source\n if (color == null) color = pico.isColorSupported\n if (terminalHighlight) {\n if (color) css = terminalHighlight(css)\n }\n\n let lines = css.split(/\\r?\\n/)\n let start = Math.max(this.line - 3, 0)\n let end = Math.min(this.line + 2, lines.length)\n\n let maxWidth = String(end).length\n\n let mark, aside\n if (color) {\n let { bold, gray, red } = pico.createColors(true)\n mark = text => bold(red(text))\n aside = text => gray(text)\n } else {\n mark = aside = str => str\n }\n\n return lines\n .slice(start, end)\n .map((line, index) => {\n let number = start + 1 + index\n let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '\n if (number === this.line) {\n let spacing =\n aside(gutter.replace(/\\d/g, ' ')) +\n line.slice(0, this.column - 1).replace(/[^\\t]/g, ' ')\n return mark('>') + aside(gutter) + line + '\\n ' + spacing + mark('^')\n }\n return ' ' + aside(gutter) + line\n })\n .join('\\n')\n }\n\n toString() {\n let code = this.showSourceCode()\n if (code) {\n code = '\\n\\n' + code + '\\n'\n }\n return this.name + ': ' + this.message + code\n }\n}\n\nmodule.exports = CssSyntaxError\nCssSyntaxError.default = CssSyntaxError\n","'use strict'\n\nlet Node = require('./node')\n\nclass Declaration extends Node {\n constructor(defaults) {\n if (\n defaults &&\n typeof defaults.value !== 'undefined' &&\n typeof defaults.value !== 'string'\n ) {\n defaults = { ...defaults, value: String(defaults.value) }\n }\n super(defaults)\n this.type = 'decl'\n }\n\n get variable() {\n return this.prop.startsWith('--') || this.prop[0] === '$'\n }\n}\n\nmodule.exports = Declaration\nDeclaration.default = Declaration\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Document extends Container {\n constructor(defaults) {\n // type needs to be passed to super, otherwise child roots won't be normalized correctly\n super({ type: 'document', ...defaults })\n\n if (!this.nodes) {\n this.nodes = []\n }\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n\n return lazy.stringify()\n }\n}\n\nDocument.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nDocument.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Document\nDocument.default = Document\n","'use strict'\n\nlet Declaration = require('./declaration')\nlet PreviousMap = require('./previous-map')\nlet Comment = require('./comment')\nlet AtRule = require('./at-rule')\nlet Input = require('./input')\nlet Root = require('./root')\nlet Rule = require('./rule')\n\nfunction fromJSON(json, inputs) {\n if (Array.isArray(json)) return json.map(n => fromJSON(n))\n\n let { inputs: ownInputs, ...defaults } = json\n if (ownInputs) {\n inputs = []\n for (let input of ownInputs) {\n let inputHydrated = { ...input, __proto__: Input.prototype }\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap.prototype\n }\n }\n inputs.push(inputHydrated)\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map(n => fromJSON(n, inputs))\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source\n defaults.source = source\n if (inputId != null) {\n defaults.source.input = inputs[inputId]\n }\n }\n if (defaults.type === 'root') {\n return new Root(defaults)\n } else if (defaults.type === 'decl') {\n return new Declaration(defaults)\n } else if (defaults.type === 'rule') {\n return new Rule(defaults)\n } else if (defaults.type === 'comment') {\n return new Comment(defaults)\n } else if (defaults.type === 'atrule') {\n return new AtRule(defaults)\n } else {\n throw new Error('Unknown node type: ' + json.type)\n }\n}\n\nmodule.exports = fromJSON\nfromJSON.default = fromJSON\n","'use strict'\n\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { fileURLToPath, pathToFileURL } = require('url')\nlet { isAbsolute, resolve } = require('path')\nlet { nanoid } = require('nanoid/non-secure')\n\nlet terminalHighlight = require('./terminal-highlight')\nlet CssSyntaxError = require('./css-syntax-error')\nlet PreviousMap = require('./previous-map')\n\nlet fromOffsetCache = Symbol('fromOffsetCache')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(resolve && isAbsolute)\n\nclass Input {\n constructor(css, opts = {}) {\n if (\n css === null ||\n typeof css === 'undefined' ||\n (typeof css === 'object' && !css.toString)\n ) {\n throw new Error(`PostCSS received ${css} instead of CSS string`)\n }\n\n this.css = css.toString()\n\n if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n this.hasBOM = true\n this.css = this.css.slice(1)\n } else {\n this.hasBOM = false\n }\n\n if (opts.from) {\n if (\n !pathAvailable ||\n /^\\w+:\\/\\//.test(opts.from) ||\n isAbsolute(opts.from)\n ) {\n this.file = opts.from\n } else {\n this.file = resolve(opts.from)\n }\n }\n\n if (pathAvailable && sourceMapAvailable) {\n let map = new PreviousMap(this.css, opts)\n if (map.text) {\n this.map = map\n let file = map.consumer().file\n if (!this.file && file) this.file = this.mapResolve(file)\n }\n }\n\n if (!this.file) {\n this.id = '<input css ' + nanoid(6) + '>'\n }\n if (this.map) this.map.file = this.from\n }\n\n error(message, line, column, opts = {}) {\n let result, endLine, endColumn\n\n if (line && typeof line === 'object') {\n let start = line\n let end = column\n if (typeof start.offset === 'number') {\n let pos = this.fromOffset(start.offset)\n line = pos.line\n column = pos.col\n } else {\n line = start.line\n column = start.column\n }\n if (typeof end.offset === 'number') {\n let pos = this.fromOffset(end.offset)\n endLine = pos.line\n endColumn = pos.col\n } else {\n endLine = end.line\n endColumn = end.column\n }\n } else if (!column) {\n let pos = this.fromOffset(line)\n line = pos.line\n column = pos.col\n }\n\n let origin = this.origin(line, column, endLine, endColumn)\n if (origin) {\n result = new CssSyntaxError(\n message,\n origin.endLine === undefined\n ? origin.line\n : { column: origin.column, line: origin.line },\n origin.endLine === undefined\n ? origin.column\n : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n )\n } else {\n result = new CssSyntaxError(\n message,\n endLine === undefined ? line : { column, line },\n endLine === undefined ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n )\n }\n\n result.input = { column, endColumn, endLine, line, source: this.css }\n if (this.file) {\n if (pathToFileURL) {\n result.input.url = pathToFileURL(this.file).toString()\n }\n result.input.file = this.file\n }\n\n return result\n }\n\n fromOffset(offset) {\n let lastLine, lineToIndex\n if (!this[fromOffsetCache]) {\n let lines = this.css.split('\\n')\n lineToIndex = new Array(lines.length)\n let prevIndex = 0\n\n for (let i = 0, l = lines.length; i < l; i++) {\n lineToIndex[i] = prevIndex\n prevIndex += lines[i].length + 1\n }\n\n this[fromOffsetCache] = lineToIndex\n } else {\n lineToIndex = this[fromOffsetCache]\n }\n lastLine = lineToIndex[lineToIndex.length - 1]\n\n let min = 0\n if (offset >= lastLine) {\n min = lineToIndex.length - 1\n } else {\n let max = lineToIndex.length - 2\n let mid\n while (min < max) {\n mid = min + ((max - min) >> 1)\n if (offset < lineToIndex[mid]) {\n max = mid - 1\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1\n } else {\n min = mid\n break\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n }\n }\n\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file\n }\n return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file)\n }\n\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false\n let consumer = this.map.consumer()\n\n let from = consumer.originalPositionFor({ column, line })\n if (!from.source) return false\n\n let to\n if (typeof endLine === 'number') {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine })\n }\n\n let fromUrl\n\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL(from.source)\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n )\n }\n\n let result = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n }\n\n if (fromUrl.protocol === 'file:') {\n if (fileURLToPath) {\n result.file = fileURLToPath(fromUrl)\n } else {\n /* c8 ignore next 2 */\n throw new Error(`file: protocol is not available in this PostCSS build`)\n }\n }\n\n let source = consumer.sourceContentFor(from.source)\n if (source) result.source = source\n\n return result\n }\n\n toJSON() {\n let json = {}\n for (let name of ['hasBOM', 'css', 'file', 'id']) {\n if (this[name] != null) {\n json[name] = this[name]\n }\n }\n if (this.map) {\n json.map = { ...this.map }\n if (json.map.consumerCache) {\n json.map.consumerCache = undefined\n }\n }\n return json\n }\n\n get from() {\n return this.file || this.id\n }\n}\n\nmodule.exports = Input\nInput.default = Input\n\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input)\n}\n","'use strict'\n\nlet { isClean, my } = require('./symbols')\nlet MapGenerator = require('./map-generator')\nlet stringify = require('./stringify')\nlet Container = require('./container')\nlet Document = require('./document')\nlet warnOnce = require('./warn-once')\nlet Result = require('./result')\nlet parse = require('./parse')\nlet Root = require('./root')\n\nconst TYPE_TO_CLASS_NAME = {\n atrule: 'AtRule',\n comment: 'Comment',\n decl: 'Declaration',\n document: 'Document',\n root: 'Root',\n rule: 'Rule'\n}\n\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n}\n\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n}\n\nconst CHILDREN = 0\n\nfunction isPromise(obj) {\n return typeof obj === 'object' && typeof obj.then === 'function'\n}\n\nfunction getEvents(node) {\n let key = false\n let type = TYPE_TO_CLASS_NAME[node.type]\n if (node.type === 'decl') {\n key = node.prop.toLowerCase()\n } else if (node.type === 'atrule') {\n key = node.name.toLowerCase()\n }\n\n if (key && node.append) {\n return [\n type,\n type + '-' + key,\n CHILDREN,\n type + 'Exit',\n type + 'Exit-' + key\n ]\n } else if (key) {\n return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]\n } else if (node.append) {\n return [type, CHILDREN, type + 'Exit']\n } else {\n return [type, type + 'Exit']\n }\n}\n\nfunction toStack(node) {\n let events\n if (node.type === 'document') {\n events = ['Document', CHILDREN, 'DocumentExit']\n } else if (node.type === 'root') {\n events = ['Root', CHILDREN, 'RootExit']\n } else {\n events = getEvents(node)\n }\n\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node,\n visitorIndex: 0,\n visitors: []\n }\n}\n\nfunction cleanMarks(node) {\n node[isClean] = false\n if (node.nodes) node.nodes.forEach(i => cleanMarks(i))\n return node\n}\n\nlet postcss = {}\n\nclass LazyResult {\n constructor(processor, css, opts) {\n this.stringified = false\n this.processed = false\n\n let root\n if (\n typeof css === 'object' &&\n css !== null &&\n (css.type === 'root' || css.type === 'document')\n ) {\n root = cleanMarks(css)\n } else if (css instanceof LazyResult || css instanceof Result) {\n root = cleanMarks(css.root)\n if (css.map) {\n if (typeof opts.map === 'undefined') opts.map = {}\n if (!opts.map.inline) opts.map.inline = false\n opts.map.prev = css.map\n }\n } else {\n let parser = parse\n if (opts.syntax) parser = opts.syntax.parse\n if (opts.parser) parser = opts.parser\n if (parser.parse) parser = parser.parse\n\n try {\n root = parser(css, opts)\n } catch (error) {\n this.processed = true\n this.error = error\n }\n\n if (root && !root[my]) {\n /* c8 ignore next 2 */\n Container.rebuild(root)\n }\n }\n\n this.result = new Result(processor, root, opts)\n this.helpers = { ...postcss, postcss, result: this.result }\n this.plugins = this.processor.plugins.map(plugin => {\n if (typeof plugin === 'object' && plugin.prepare) {\n return { ...plugin, ...plugin.prepare(this.result) }\n } else {\n return plugin\n }\n })\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n if (this.processed) return Promise.resolve(this.result)\n if (!this.processing) {\n this.processing = this.runAsync()\n }\n return this.processing\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n getAsyncError() {\n throw new Error('Use process(css).then(cb) to work with async plugins')\n }\n\n handleError(error, node) {\n let plugin = this.result.lastPlugin\n try {\n if (node) node.addToError(error)\n this.error = error\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin\n error.setMessage()\n } else if (plugin.postcssVersion) {\n if (process.env.NODE_ENV !== 'production') {\n let pluginName = plugin.postcssPlugin\n let pluginVer = plugin.postcssVersion\n let runtimeVer = this.result.processor.version\n let a = pluginVer.split('.')\n let b = runtimeVer.split('.')\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n // eslint-disable-next-line no-console\n console.error(\n 'Unknown error from PostCSS plugin. Your current PostCSS ' +\n 'version is ' +\n runtimeVer +\n ', but ' +\n pluginName +\n ' uses ' +\n pluginVer +\n '. Perhaps this is the source of the error below.'\n )\n }\n }\n }\n } catch (err) {\n /* c8 ignore next 3 */\n // eslint-disable-next-line no-console\n if (console && console.error) console.error(err)\n }\n return error\n }\n\n prepareVisitors() {\n this.listeners = {}\n let add = (plugin, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = []\n this.listeners[type].push([plugin, cb])\n }\n for (let plugin of this.plugins) {\n if (typeof plugin === 'object') {\n for (let event in plugin) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin.postcssPlugin}. ` +\n `Try to update PostCSS (${this.processor.version} now).`\n )\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin[event] === 'object') {\n for (let filter in plugin[event]) {\n if (filter === '*') {\n add(plugin, event, plugin[event][filter])\n } else {\n add(\n plugin,\n event + '-' + filter.toLowerCase(),\n plugin[event][filter]\n )\n }\n }\n } else if (typeof plugin[event] === 'function') {\n add(plugin, event, plugin[event])\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0\n }\n\n async runAsync() {\n this.plugin = 0\n for (let i = 0; i < this.plugins.length; i++) {\n let plugin = this.plugins[i]\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (error) {\n throw this.handleError(error)\n }\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n let stack = [toStack(root)]\n while (stack.length > 0) {\n let promise = this.visitTick(stack)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (e) {\n let node = stack[stack.length - 1].node\n throw this.handleError(e, node)\n }\n }\n }\n }\n\n if (this.listeners.OnceExit) {\n for (let [plugin, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin\n try {\n if (root.type === 'document') {\n let roots = root.nodes.map(subRoot =>\n visitor(subRoot, this.helpers)\n )\n\n await Promise.all(roots)\n } else {\n await visitor(root, this.helpers)\n }\n } catch (e) {\n throw this.handleError(e)\n }\n }\n }\n }\n\n this.processed = true\n return this.stringify()\n }\n\n runOnRoot(plugin) {\n this.result.lastPlugin = plugin\n try {\n if (typeof plugin === 'object' && plugin.Once) {\n if (this.result.root.type === 'document') {\n let roots = this.result.root.nodes.map(root =>\n plugin.Once(root, this.helpers)\n )\n\n if (isPromise(roots[0])) {\n return Promise.all(roots)\n }\n\n return roots\n }\n\n return plugin.Once(this.result.root, this.helpers)\n } else if (typeof plugin === 'function') {\n return plugin(this.result.root, this.result)\n }\n } catch (error) {\n throw this.handleError(error)\n }\n }\n\n stringify() {\n if (this.error) throw this.error\n if (this.stringified) return this.result\n this.stringified = true\n\n this.sync()\n\n let opts = this.result.opts\n let str = stringify\n if (opts.syntax) str = opts.syntax.stringify\n if (opts.stringifier) str = opts.stringifier\n if (str.stringify) str = str.stringify\n\n let map = new MapGenerator(str, this.result.root, this.result.opts)\n let data = map.generate()\n this.result.css = data[0]\n this.result.map = data[1]\n\n return this.result\n }\n\n sync() {\n if (this.error) throw this.error\n if (this.processed) return this.result\n this.processed = true\n\n if (this.processing) {\n throw this.getAsyncError()\n }\n\n for (let plugin of this.plugins) {\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n this.walkSync(root)\n }\n if (this.listeners.OnceExit) {\n if (root.type === 'document') {\n for (let subRoot of root.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot)\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root)\n }\n }\n }\n\n return this.result\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this.opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n return this.async().then(onFulfilled, onRejected)\n }\n\n toString() {\n return this.css\n }\n\n visitSync(visitors, node) {\n for (let [plugin, visitor] of visitors) {\n this.result.lastPlugin = plugin\n let promise\n try {\n promise = visitor(node, this.helpers)\n } catch (e) {\n throw this.handleError(e, node.proxyOf)\n }\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n return true\n }\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n }\n\n visitTick(stack) {\n let visit = stack[stack.length - 1]\n let { node, visitors } = visit\n\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n stack.pop()\n return\n }\n\n if (visitors.length > 0 && visit.visitorIndex < visitors.length) {\n let [plugin, visitor] = visitors[visit.visitorIndex]\n visit.visitorIndex += 1\n if (visit.visitorIndex === visitors.length) {\n visit.visitors = []\n visit.visitorIndex = 0\n }\n this.result.lastPlugin = plugin\n try {\n return visitor(node.toProxy(), this.helpers)\n } catch (e) {\n throw this.handleError(e, node)\n }\n }\n\n if (visit.iterator !== 0) {\n let iterator = visit.iterator\n let child\n while ((child = node.nodes[node.indexes[iterator]])) {\n node.indexes[iterator] += 1\n if (!child[isClean]) {\n child[isClean] = true\n stack.push(toStack(child))\n return\n }\n }\n visit.iterator = 0\n delete node.indexes[iterator]\n }\n\n let events = visit.events\n while (visit.eventIndex < events.length) {\n let event = events[visit.eventIndex]\n visit.eventIndex += 1\n if (event === CHILDREN) {\n if (node.nodes && node.nodes.length) {\n node[isClean] = true\n visit.iterator = node.getIterator()\n }\n return\n } else if (this.listeners[event]) {\n visit.visitors = this.listeners[event]\n return\n }\n }\n stack.pop()\n }\n\n walkSync(node) {\n node[isClean] = true\n let events = getEvents(node)\n for (let event of events) {\n if (event === CHILDREN) {\n if (node.nodes) {\n node.each(child => {\n if (!child[isClean]) this.walkSync(child)\n })\n }\n } else {\n let visitors = this.listeners[event]\n if (visitors) {\n if (this.visitSync(visitors, node.toProxy())) return\n }\n }\n }\n }\n\n warnings() {\n return this.sync().warnings()\n }\n\n get content() {\n return this.stringify().content\n }\n\n get css() {\n return this.stringify().css\n }\n\n get map() {\n return this.stringify().map\n }\n\n get messages() {\n return this.sync().messages\n }\n\n get opts() {\n return this.result.opts\n }\n\n get processor() {\n return this.result.processor\n }\n\n get root() {\n return this.sync().root\n }\n\n get [Symbol.toStringTag]() {\n return 'LazyResult'\n }\n}\n\nLazyResult.registerPostcss = dependant => {\n postcss = dependant\n}\n\nmodule.exports = LazyResult\nLazyResult.default = LazyResult\n\nRoot.registerLazyResult(LazyResult)\nDocument.registerLazyResult(LazyResult)\n","'use strict'\n\nlet list = {\n comma(string) {\n return list.split(string, [','], true)\n },\n\n space(string) {\n let spaces = [' ', '\\n', '\\t']\n return list.split(string, spaces)\n },\n\n split(string, separators, last) {\n let array = []\n let current = ''\n let split = false\n\n let func = 0\n let inQuote = false\n let prevQuote = ''\n let escape = false\n\n for (let letter of string) {\n if (escape) {\n escape = false\n } else if (letter === '\\\\') {\n escape = true\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true\n prevQuote = letter\n } else if (letter === '(') {\n func += 1\n } else if (letter === ')') {\n if (func > 0) func -= 1\n } else if (func === 0) {\n if (separators.includes(letter)) split = true\n }\n\n if (split) {\n if (current !== '') array.push(current.trim())\n current = ''\n split = false\n } else {\n current += letter\n }\n }\n\n if (last || current !== '') array.push(current.trim())\n return array\n }\n}\n\nmodule.exports = list\nlist.default = list\n","'use strict'\n\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { dirname, relative, resolve, sep } = require('path')\nlet { pathToFileURL } = require('url')\n\nlet Input = require('./input')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(dirname && resolve && relative && sep)\n\nclass MapGenerator {\n constructor(stringify, root, opts, cssString) {\n this.stringify = stringify\n this.mapOpts = opts.map || {}\n this.root = root\n this.opts = opts\n this.css = cssString\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute\n\n this.memoizedFileURLs = new Map()\n this.memoizedPaths = new Map()\n this.memoizedURLs = new Map()\n }\n\n addAnnotation() {\n let content\n\n if (this.isInline()) {\n content =\n 'data:application/json;base64,' + this.toBase64(this.map.toString())\n } else if (typeof this.mapOpts.annotation === 'string') {\n content = this.mapOpts.annotation\n } else if (typeof this.mapOpts.annotation === 'function') {\n content = this.mapOpts.annotation(this.opts.to, this.root)\n } else {\n content = this.outputFile() + '.map'\n }\n let eol = '\\n'\n if (this.css.includes('\\r\\n')) eol = '\\r\\n'\n\n this.css += eol + '/*# sourceMappingURL=' + content + ' */'\n }\n\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file))\n let root = prev.root || dirname(prev.file)\n let map\n\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text)\n if (map.sourcesContent) {\n map.sourcesContent = map.sourcesContent.map(() => null)\n }\n } else {\n map = prev.consumer()\n }\n\n this.map.applySourceMap(map, from, this.toUrl(this.path(root)))\n }\n }\n\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return\n\n if (this.root) {\n let node\n for (let i = this.root.nodes.length - 1; i >= 0; i--) {\n node = this.root.nodes[i]\n if (node.type !== 'comment') continue\n if (node.text.indexOf('# sourceMappingURL=') === 0) {\n this.root.removeChild(i)\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/(\\n)?\\/\\*#[\\S\\s]*?\\*\\/$/gm, '')\n }\n }\n\n generate() {\n this.clearAnnotation()\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap()\n } else {\n let result = ''\n this.stringify(this.root, i => {\n result += i\n })\n return [result]\n }\n }\n\n generateMap() {\n if (this.root) {\n this.generateString()\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer()\n prev.file = this.outputFile()\n this.map = SourceMapGenerator.fromSourceMap(prev)\n } else {\n this.map = new SourceMapGenerator({ file: this.outputFile() })\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : '<no source>'\n })\n }\n\n if (this.isSourcesContent()) this.setSourcesContent()\n if (this.root && this.previous().length > 0) this.applyPrevMaps()\n if (this.isAnnotation()) this.addAnnotation()\n\n if (this.isInline()) {\n return [this.css]\n } else {\n return [this.css, this.map]\n }\n }\n\n generateString() {\n this.css = ''\n this.map = new SourceMapGenerator({ file: this.outputFile() })\n\n let line = 1\n let column = 1\n\n let noSource = '<no source>'\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: ''\n }\n\n let lines, last\n this.stringify(this.root, (str, node, type) => {\n this.css += str\n\n if (node && type !== 'end') {\n mapping.generated.line = line\n mapping.generated.column = column - 1\n if (node.source && node.source.start) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.start.line\n mapping.original.column = node.source.start.column - 1\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n this.map.addMapping(mapping)\n }\n }\n\n lines = str.match(/\\n/g)\n if (lines) {\n line += lines.length\n last = str.lastIndexOf('\\n')\n column = str.length - last\n } else {\n column += str.length\n }\n\n if (node && type !== 'start') {\n let p = node.parent || { raws: {} }\n let childless =\n node.type === 'decl' || (node.type === 'atrule' && !node.nodes)\n if (!childless || node !== p.last || p.raws.semicolon) {\n if (node.source && node.source.end) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.end.line\n mapping.original.column = node.source.end.column - 1\n mapping.generated.line = line\n mapping.generated.column = column - 2\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n mapping.generated.line = line\n mapping.generated.column = column - 1\n this.map.addMapping(mapping)\n }\n }\n }\n })\n }\n\n isAnnotation() {\n if (this.isInline()) {\n return true\n }\n if (typeof this.mapOpts.annotation !== 'undefined') {\n return this.mapOpts.annotation\n }\n if (this.previous().length) {\n return this.previous().some(i => i.annotation)\n }\n return true\n }\n\n isInline() {\n if (typeof this.mapOpts.inline !== 'undefined') {\n return this.mapOpts.inline\n }\n\n let annotation = this.mapOpts.annotation\n if (typeof annotation !== 'undefined' && annotation !== true) {\n return false\n }\n\n if (this.previous().length) {\n return this.previous().some(i => i.inline)\n }\n return true\n }\n\n isMap() {\n if (typeof this.opts.map !== 'undefined') {\n return !!this.opts.map\n }\n return this.previous().length > 0\n }\n\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n return this.mapOpts.sourcesContent\n }\n if (this.previous().length) {\n return this.previous().some(i => i.withContent())\n }\n return true\n }\n\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to)\n } else if (this.opts.from) {\n return this.path(this.opts.from)\n } else {\n return 'to.css'\n }\n }\n\n path(file) {\n if (this.mapOpts.absolute) return file\n if (file.charCodeAt(0) === 60 /* `<` */) return file\n if (/^\\w+:\\/\\//.test(file)) return file\n let cached = this.memoizedPaths.get(file)\n if (cached) return cached\n\n let from = this.opts.to ? dirname(this.opts.to) : '.'\n\n if (typeof this.mapOpts.annotation === 'string') {\n from = dirname(resolve(from, this.mapOpts.annotation))\n }\n\n let path = relative(from, file)\n this.memoizedPaths.set(file, path)\n\n return path\n }\n\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = []\n if (this.root) {\n this.root.walk(node => {\n if (node.source && node.source.input.map) {\n let map = node.source.input.map\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map)\n }\n }\n })\n } else {\n let input = new Input(this.css, this.opts)\n if (input.map) this.previousMaps.push(input.map)\n }\n }\n\n return this.previousMaps\n }\n\n setSourcesContent() {\n let already = {}\n if (this.root) {\n this.root.walk(node => {\n if (node.source) {\n let from = node.source.input.from\n if (from && !already[from]) {\n already[from] = true\n let fromUrl = this.usesFileUrls\n ? this.toFileUrl(from)\n : this.toUrl(this.path(from))\n this.map.setSourceContent(fromUrl, node.source.input.css)\n }\n }\n })\n } else if (this.css) {\n let from = this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : '<no source>'\n this.map.setSourceContent(from, this.css)\n }\n }\n\n sourcePath(node) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from)\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node.source.input.from)\n } else {\n return this.toUrl(this.path(node.source.input.from))\n }\n }\n\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString('base64')\n } else {\n return window.btoa(unescape(encodeURIComponent(str)))\n }\n }\n\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path)\n if (cached) return cached\n\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString()\n this.memoizedFileURLs.set(path, fileURL)\n\n return fileURL\n } else {\n throw new Error(\n '`map.absolute` option is not available in this PostCSS build'\n )\n }\n }\n\n toUrl(path) {\n let cached = this.memoizedURLs.get(path)\n if (cached) return cached\n\n if (sep === '\\\\') {\n path = path.replace(/\\\\/g, '/')\n }\n\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent)\n this.memoizedURLs.set(path, url)\n\n return url\n }\n}\n\nmodule.exports = MapGenerator\n","'use strict'\n\nlet MapGenerator = require('./map-generator')\nlet stringify = require('./stringify')\nlet warnOnce = require('./warn-once')\nlet parse = require('./parse')\nconst Result = require('./result')\n\nclass NoWorkResult {\n constructor(processor, css, opts) {\n css = css.toString()\n this.stringified = false\n\n this._processor = processor\n this._css = css\n this._opts = opts\n this._map = undefined\n let root\n\n let str = stringify\n this.result = new Result(this._processor, root, this._opts)\n this.result.css = css\n\n let self = this\n Object.defineProperty(this.result, 'root', {\n get() {\n return self.root\n }\n })\n\n let map = new MapGenerator(str, root, this._opts, css)\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate()\n if (generatedCSS) {\n this.result.css = generatedCSS\n }\n if (generatedMap) {\n this.result.map = generatedMap\n }\n }\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n return Promise.resolve(this.result)\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n sync() {\n if (this.error) throw this.error\n return this.result\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this._opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n\n return this.async().then(onFulfilled, onRejected)\n }\n\n toString() {\n return this._css\n }\n\n warnings() {\n return []\n }\n\n get content() {\n return this.result.css\n }\n\n get css() {\n return this.result.css\n }\n\n get map() {\n return this.result.map\n }\n\n get messages() {\n return []\n }\n\n get opts() {\n return this.result.opts\n }\n\n get processor() {\n return this.result.processor\n }\n\n get root() {\n if (this._root) {\n return this._root\n }\n\n let root\n let parser = parse\n\n try {\n root = parser(this._css, this._opts)\n } catch (error) {\n this.error = error\n }\n\n if (this.error) {\n throw this.error\n } else {\n this._root = root\n return root\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'NoWorkResult'\n }\n}\n\nmodule.exports = NoWorkResult\nNoWorkResult.default = NoWorkResult\n","'use strict'\n\nlet { isClean, my } = require('./symbols')\nlet CssSyntaxError = require('./css-syntax-error')\nlet Stringifier = require('./stringifier')\nlet stringify = require('./stringify')\n\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor()\n\n for (let i in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i)) {\n /* c8 ignore next 2 */\n continue\n }\n if (i === 'proxyCache') continue\n let value = obj[i]\n let type = typeof value\n\n if (i === 'parent' && type === 'object') {\n if (parent) cloned[i] = parent\n } else if (i === 'source') {\n cloned[i] = value\n } else if (Array.isArray(value)) {\n cloned[i] = value.map(j => cloneNode(j, cloned))\n } else {\n if (type === 'object' && value !== null) value = cloneNode(value)\n cloned[i] = value\n }\n }\n\n return cloned\n}\n\nclass Node {\n constructor(defaults = {}) {\n this.raws = {}\n this[isClean] = false\n this[my] = true\n\n for (let name in defaults) {\n if (name === 'nodes') {\n this.nodes = []\n for (let node of defaults[name]) {\n if (typeof node.clone === 'function') {\n this.append(node.clone())\n } else {\n this.append(node)\n }\n }\n } else {\n this[name] = defaults[name]\n }\n }\n }\n\n addToError(error) {\n error.postcssNode = this\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s = this.source\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s.input.from}:${s.start.line}:${s.start.column}$&`\n )\n }\n return error\n }\n\n after(add) {\n this.parent.insertAfter(this, add)\n return this\n }\n\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name]\n }\n return this\n }\n\n before(add) {\n this.parent.insertBefore(this, add)\n return this\n }\n\n cleanRaws(keepBetween) {\n delete this.raws.before\n delete this.raws.after\n if (!keepBetween) delete this.raws.between\n }\n\n clone(overrides = {}) {\n let cloned = cloneNode(this)\n for (let name in overrides) {\n cloned[name] = overrides[name]\n }\n return cloned\n }\n\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertAfter(this, cloned)\n return cloned\n }\n\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertBefore(this, cloned)\n return cloned\n }\n\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts)\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n )\n }\n return new CssSyntaxError(message)\n }\n\n getProxyProcessor() {\n return {\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else {\n return node[prop]\n }\n },\n\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (\n prop === 'prop' ||\n prop === 'value' ||\n prop === 'name' ||\n prop === 'params' ||\n prop === 'important' ||\n /* c8 ignore next */\n prop === 'text'\n ) {\n node.markDirty()\n }\n return true\n }\n }\n }\n\n markDirty() {\n if (this[isClean]) {\n this[isClean] = false\n let next = this\n while ((next = next.parent)) {\n next[isClean] = false\n }\n }\n }\n\n next() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index + 1]\n }\n\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation)\n } else if (opts.word) {\n stringRepresentation = this.toString()\n let index = stringRepresentation.indexOf(opts.word)\n if (index !== -1) pos = this.positionInside(index, stringRepresentation)\n }\n return pos\n }\n\n positionInside(index, stringRepresentation) {\n let string = stringRepresentation || this.toString()\n let column = this.source.start.column\n let line = this.source.start.line\n\n for (let i = 0; i < index; i++) {\n if (string[i] === '\\n') {\n column = 1\n line += 1\n } else {\n column += 1\n }\n }\n\n return { column, line }\n }\n\n prev() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index - 1]\n }\n\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n }\n let end = this.source.end\n ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n }\n : {\n column: start.column + 1,\n line: start.line\n }\n\n if (opts.word) {\n let stringRepresentation = this.toString()\n let index = stringRepresentation.indexOf(opts.word)\n if (index !== -1) {\n start = this.positionInside(index, stringRepresentation)\n end = this.positionInside(index + opts.word.length, stringRepresentation)\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n }\n } else if (opts.index) {\n start = this.positionInside(opts.index)\n }\n\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n }\n } else if (opts.endIndex) {\n end = this.positionInside(opts.endIndex)\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1)\n }\n }\n\n if (\n end.line < start.line ||\n (end.line === start.line && end.column <= start.column)\n ) {\n end = { column: start.column + 1, line: start.line }\n }\n\n return { end, start }\n }\n\n raw(prop, defaultType) {\n let str = new Stringifier()\n return str.raw(this, prop, defaultType)\n }\n\n remove() {\n if (this.parent) {\n this.parent.removeChild(this)\n }\n this.parent = undefined\n return this\n }\n\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this\n let foundSelf = false\n for (let node of nodes) {\n if (node === this) {\n foundSelf = true\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node)\n bookmark = node\n } else {\n this.parent.insertBefore(bookmark, node)\n }\n }\n\n if (!foundSelf) {\n this.remove()\n }\n }\n\n return this\n }\n\n root() {\n let result = this\n while (result.parent && result.parent.type !== 'document') {\n result = result.parent\n }\n return result\n }\n\n toJSON(_, inputs) {\n let fixed = {}\n let emitInputs = inputs == null\n inputs = inputs || new Map()\n let inputsNextIndex = 0\n\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n /* c8 ignore next 2 */\n continue\n }\n if (name === 'parent' || name === 'proxyCache') continue\n let value = this[name]\n\n if (Array.isArray(value)) {\n fixed[name] = value.map(i => {\n if (typeof i === 'object' && i.toJSON) {\n return i.toJSON(null, inputs)\n } else {\n return i\n }\n })\n } else if (typeof value === 'object' && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs)\n } else if (name === 'source') {\n let inputId = inputs.get(value.input)\n if (inputId == null) {\n inputId = inputsNextIndex\n inputs.set(value.input, inputsNextIndex)\n inputsNextIndex++\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n }\n } else {\n fixed[name] = value\n }\n }\n\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map(input => input.toJSON())\n }\n\n return fixed\n }\n\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor())\n }\n return this.proxyCache\n }\n\n toString(stringifier = stringify) {\n if (stringifier.stringify) stringifier = stringifier.stringify\n let result = ''\n stringifier(this, i => {\n result += i\n })\n return result\n }\n\n warn(result, text, opts) {\n let data = { node: this }\n for (let i in opts) data[i] = opts[i]\n return result.warn(text, data)\n }\n\n get proxyOf() {\n return this\n }\n}\n\nmodule.exports = Node\nNode.default = Node\n","'use strict'\n\nlet Container = require('./container')\nlet Parser = require('./parser')\nlet Input = require('./input')\n\nfunction parse(css, opts) {\n let input = new Input(css, opts)\n let parser = new Parser(input)\n try {\n parser.parse()\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse SCSS with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-scss parser'\n } else if (/\\.sass/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Sass with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-sass parser'\n } else if (/\\.less$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Less with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-less parser'\n }\n }\n }\n throw e\n }\n\n return parser.root\n}\n\nmodule.exports = parse\nparse.default = parse\n\nContainer.registerParse(parse)\n","'use strict'\n\nlet Declaration = require('./declaration')\nlet tokenizer = require('./tokenize')\nlet Comment = require('./comment')\nlet AtRule = require('./at-rule')\nlet Root = require('./root')\nlet Rule = require('./rule')\n\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n}\n\nfunction findLastWithPosition(tokens) {\n for (let i = tokens.length - 1; i >= 0; i--) {\n let token = tokens[i]\n let pos = token[3] || token[2]\n if (pos) return pos\n }\n}\n\nclass Parser {\n constructor(input) {\n this.input = input\n\n this.root = new Root()\n this.current = this.root\n this.spaces = ''\n this.semicolon = false\n this.customProperty = false\n\n this.createTokenizer()\n this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }\n }\n\n atrule(token) {\n let node = new AtRule()\n node.name = token[1].slice(1)\n if (node.name === '') {\n this.unnamedAtrule(node, token)\n }\n this.init(node, token[2])\n\n let type\n let prev\n let shift\n let last = false\n let open = false\n let params = []\n let brackets = []\n\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n type = token[0]\n\n if (type === '(' || type === '[') {\n brackets.push(type === '(' ? ')' : ']')\n } else if (type === '{' && brackets.length > 0) {\n brackets.push('}')\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n }\n\n if (brackets.length === 0) {\n if (type === ';') {\n node.source.end = this.getPosition(token[2])\n node.source.end.offset++\n this.semicolon = true\n break\n } else if (type === '{') {\n open = true\n break\n } else if (type === '}') {\n if (params.length > 0) {\n shift = params.length - 1\n prev = params[shift]\n while (prev && prev[0] === 'space') {\n prev = params[--shift]\n }\n if (prev) {\n node.source.end = this.getPosition(prev[3] || prev[2])\n node.source.end.offset++\n }\n }\n this.end(token)\n break\n } else {\n params.push(token)\n }\n } else {\n params.push(token)\n }\n\n if (this.tokenizer.endOfFile()) {\n last = true\n break\n }\n }\n\n node.raws.between = this.spacesAndCommentsFromEnd(params)\n if (params.length) {\n node.raws.afterName = this.spacesAndCommentsFromStart(params)\n this.raw(node, 'params', params)\n if (last) {\n token = params[params.length - 1]\n node.source.end = this.getPosition(token[3] || token[2])\n node.source.end.offset++\n this.spaces = node.raws.between\n node.raws.between = ''\n }\n } else {\n node.raws.afterName = ''\n node.params = ''\n }\n\n if (open) {\n node.nodes = []\n this.current = node\n }\n }\n\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens)\n if (colon === false) return\n\n let founded = 0\n let token\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j]\n if (token[0] !== 'space') {\n founded += 1\n if (founded === 2) break\n }\n }\n // If the token is a word, e.g. `!important`, `red` or any other valid property's value.\n // Then we need to return the colon after that word token. [3] is the \"end\" colon of that word.\n // And because we need it after that one we do +1 to get the next one.\n throw this.input.error(\n 'Missed semicolon',\n token[0] === 'word' ? token[3] + 1 : token[2]\n )\n }\n\n colon(tokens) {\n let brackets = 0\n let token, type, prev\n for (let [i, element] of tokens.entries()) {\n token = element\n type = token[0]\n\n if (type === '(') {\n brackets += 1\n }\n if (type === ')') {\n brackets -= 1\n }\n if (brackets === 0 && type === ':') {\n if (!prev) {\n this.doubleColon(token)\n } else if (prev[0] === 'word' && prev[1] === 'progid') {\n continue\n } else {\n return i\n }\n }\n\n prev = token\n }\n return false\n }\n\n comment(token) {\n let node = new Comment()\n this.init(node, token[2])\n node.source.end = this.getPosition(token[3] || token[2])\n node.source.end.offset++\n\n let text = token[1].slice(2, -2)\n if (/^\\s*$/.test(text)) {\n node.text = ''\n node.raws.left = text\n node.raws.right = ''\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/)\n node.text = match[2]\n node.raws.left = match[1]\n node.raws.right = match[3]\n }\n }\n\n createTokenizer() {\n this.tokenizer = tokenizer(this.input)\n }\n\n decl(tokens, customProperty) {\n let node = new Declaration()\n this.init(node, tokens[0][2])\n\n let last = tokens[tokens.length - 1]\n if (last[0] === ';') {\n this.semicolon = true\n tokens.pop()\n }\n\n node.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n )\n node.source.end.offset++\n\n while (tokens[0][0] !== 'word') {\n if (tokens.length === 1) this.unknownWord(tokens)\n node.raws.before += tokens.shift()[1]\n }\n node.source.start = this.getPosition(tokens[0][2])\n\n node.prop = ''\n while (tokens.length) {\n let type = tokens[0][0]\n if (type === ':' || type === 'space' || type === 'comment') {\n break\n }\n node.prop += tokens.shift()[1]\n }\n\n node.raws.between = ''\n\n let token\n while (tokens.length) {\n token = tokens.shift()\n\n if (token[0] === ':') {\n node.raws.between += token[1]\n break\n } else {\n if (token[0] === 'word' && /\\w/.test(token[1])) {\n this.unknownWord([token])\n }\n node.raws.between += token[1]\n }\n }\n\n if (node.prop[0] === '_' || node.prop[0] === '*') {\n node.raws.before += node.prop[0]\n node.prop = node.prop.slice(1)\n }\n\n let firstSpaces = []\n let next\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n firstSpaces.push(tokens.shift())\n }\n\n this.precheckMissedSemicolon(tokens)\n\n for (let i = tokens.length - 1; i >= 0; i--) {\n token = tokens[i]\n if (token[1].toLowerCase() === '!important') {\n node.important = true\n let string = this.stringFrom(tokens, i)\n string = this.spacesFromEnd(tokens) + string\n if (string !== ' !important') node.raws.important = string\n break\n } else if (token[1].toLowerCase() === 'important') {\n let cache = tokens.slice(0)\n let str = ''\n for (let j = i; j > 0; j--) {\n let type = cache[j][0]\n if (str.trim().indexOf('!') === 0 && type !== 'space') {\n break\n }\n str = cache.pop()[1] + str\n }\n if (str.trim().indexOf('!') === 0) {\n node.important = true\n node.raws.important = str\n tokens = cache\n }\n }\n\n if (token[0] !== 'space' && token[0] !== 'comment') {\n break\n }\n }\n\n let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment')\n\n if (hasWord) {\n node.raws.between += firstSpaces.map(i => i[1]).join('')\n firstSpaces = []\n }\n this.raw(node, 'value', firstSpaces.concat(tokens), customProperty)\n\n if (node.value.includes(':') && !customProperty) {\n this.checkMissedSemicolon(tokens)\n }\n }\n\n doubleColon(token) {\n throw this.input.error(\n 'Double colon',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n\n emptyRule(token) {\n let node = new Rule()\n this.init(node, token[2])\n node.selector = ''\n node.raws.between = ''\n this.current = node\n }\n\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.semicolon = false\n\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n this.spaces = ''\n\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2])\n this.current.source.end.offset++\n this.current = this.current.parent\n } else {\n this.unexpectedClose(token)\n }\n }\n\n endFile() {\n if (this.current.parent) this.unclosedBlock()\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n this.root.source.end = this.getPosition(this.tokenizer.position())\n }\n\n freeSemicolon(token) {\n this.spaces += token[1]\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1]\n if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces\n this.spaces = ''\n }\n }\n }\n\n // Helpers\n\n getPosition(offset) {\n let pos = this.input.fromOffset(offset)\n return {\n column: pos.col,\n line: pos.line,\n offset\n }\n }\n\n init(node, offset) {\n this.current.push(node)\n node.source = {\n input: this.input,\n start: this.getPosition(offset)\n }\n node.raws.before = this.spaces\n this.spaces = ''\n if (node.type !== 'comment') this.semicolon = false\n }\n\n other(start) {\n let end = false\n let type = null\n let colon = false\n let bracket = null\n let brackets = []\n let customProperty = start[1].startsWith('--')\n\n let tokens = []\n let token = start\n while (token) {\n type = token[0]\n tokens.push(token)\n\n if (type === '(' || type === '[') {\n if (!bracket) bracket = token\n brackets.push(type === '(' ? ')' : ']')\n } else if (customProperty && colon && type === '{') {\n if (!bracket) bracket = token\n brackets.push('}')\n } else if (brackets.length === 0) {\n if (type === ';') {\n if (colon) {\n this.decl(tokens, customProperty)\n return\n } else {\n break\n }\n } else if (type === '{') {\n this.rule(tokens)\n return\n } else if (type === '}') {\n this.tokenizer.back(tokens.pop())\n end = true\n break\n } else if (type === ':') {\n colon = true\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n if (brackets.length === 0) bracket = null\n }\n\n token = this.tokenizer.nextToken()\n }\n\n if (this.tokenizer.endOfFile()) end = true\n if (brackets.length > 0) this.unclosedBracket(bracket)\n\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0]\n if (token !== 'space' && token !== 'comment') break\n this.tokenizer.back(tokens.pop())\n }\n }\n this.decl(tokens, customProperty)\n } else {\n this.unknownWord(tokens)\n }\n }\n\n parse() {\n let token\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n\n switch (token[0]) {\n case 'space':\n this.spaces += token[1]\n break\n\n case ';':\n this.freeSemicolon(token)\n break\n\n case '}':\n this.end(token)\n break\n\n case 'comment':\n this.comment(token)\n break\n\n case 'at-word':\n this.atrule(token)\n break\n\n case '{':\n this.emptyRule(token)\n break\n\n default:\n this.other(token)\n break\n }\n }\n this.endFile()\n }\n\n precheckMissedSemicolon(/* tokens */) {\n // Hook for Safe Parser\n }\n\n raw(node, prop, tokens, customProperty) {\n let token, type\n let length = tokens.length\n let value = ''\n let clean = true\n let next, prev\n\n for (let i = 0; i < length; i += 1) {\n token = tokens[i]\n type = token[0]\n if (type === 'space' && i === length - 1 && !customProperty) {\n clean = false\n } else if (type === 'comment') {\n prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty'\n next = tokens[i + 1] ? tokens[i + 1][0] : 'empty'\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === ',') {\n clean = false\n } else {\n value += token[1]\n }\n } else {\n clean = false\n }\n } else {\n value += token[1]\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i) => all + i[1], '')\n node.raws[prop] = { raw, value }\n }\n node[prop] = value\n }\n\n rule(tokens) {\n tokens.pop()\n\n let node = new Rule()\n this.init(node, tokens[0][2])\n\n node.raws.between = this.spacesAndCommentsFromEnd(tokens)\n this.raw(node, 'selector', tokens)\n this.current = node\n }\n\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space' && lastTokenType !== 'comment') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n // Errors\n\n spacesAndCommentsFromStart(tokens) {\n let next\n let spaces = ''\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n spaces += tokens.shift()[1]\n }\n return spaces\n }\n\n spacesFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n stringFrom(tokens, from) {\n let result = ''\n for (let i = from; i < tokens.length; i++) {\n result += tokens[i][1]\n }\n tokens.splice(from, tokens.length - from)\n return result\n }\n\n unclosedBlock() {\n let pos = this.current.source.start\n throw this.input.error('Unclosed block', pos.line, pos.column)\n }\n\n unclosedBracket(bracket) {\n throw this.input.error(\n 'Unclosed bracket',\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n )\n }\n\n unexpectedClose(token) {\n throw this.input.error(\n 'Unexpected }',\n { offset: token[2] },\n { offset: token[2] + 1 }\n )\n }\n\n unknownWord(tokens) {\n throw this.input.error(\n 'Unknown word',\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n )\n }\n\n unnamedAtrule(node, token) {\n throw this.input.error(\n 'At-rule without name',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n}\n\nmodule.exports = Parser\n","'use strict'\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet Declaration = require('./declaration')\nlet LazyResult = require('./lazy-result')\nlet Container = require('./container')\nlet Processor = require('./processor')\nlet stringify = require('./stringify')\nlet fromJSON = require('./fromJSON')\nlet Document = require('./document')\nlet Warning = require('./warning')\nlet Comment = require('./comment')\nlet AtRule = require('./at-rule')\nlet Result = require('./result.js')\nlet Input = require('./input')\nlet parse = require('./parse')\nlet list = require('./list')\nlet Rule = require('./rule')\nlet Root = require('./root')\nlet Node = require('./node')\n\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0]\n }\n return new Processor(plugins)\n}\n\npostcss.plugin = function plugin(name, initializer) {\n let warningPrinted = false\n function creator(...args) {\n // eslint-disable-next-line no-console\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': postcss.plugin was deprecated. Migration guide:\\n' +\n 'https://evilmartians.com/chronicles/postcss-8-plugin-migration'\n )\n if (process.env.LANG && process.env.LANG.startsWith('cn')) {\n /* c8 ignore next 7 */\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': 里面 postcss.plugin 被弃用. 迁移指南:\\n' +\n 'https://www.w3ctech.com/topic/2226'\n )\n }\n }\n let transformer = initializer(...args)\n transformer.postcssPlugin = name\n transformer.postcssVersion = new Processor().version\n return transformer\n }\n\n let cache\n Object.defineProperty(creator, 'postcss', {\n get() {\n if (!cache) cache = creator()\n return cache\n }\n })\n\n creator.process = function (css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts)\n }\n\n return creator\n}\n\npostcss.stringify = stringify\npostcss.parse = parse\npostcss.fromJSON = fromJSON\npostcss.list = list\n\npostcss.comment = defaults => new Comment(defaults)\npostcss.atRule = defaults => new AtRule(defaults)\npostcss.decl = defaults => new Declaration(defaults)\npostcss.rule = defaults => new Rule(defaults)\npostcss.root = defaults => new Root(defaults)\npostcss.document = defaults => new Document(defaults)\n\npostcss.CssSyntaxError = CssSyntaxError\npostcss.Declaration = Declaration\npostcss.Container = Container\npostcss.Processor = Processor\npostcss.Document = Document\npostcss.Comment = Comment\npostcss.Warning = Warning\npostcss.AtRule = AtRule\npostcss.Result = Result\npostcss.Input = Input\npostcss.Rule = Rule\npostcss.Root = Root\npostcss.Node = Node\n\nLazyResult.registerPostcss(postcss)\n\nmodule.exports = postcss\npostcss.default = postcss\n","'use strict'\n\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { existsSync, readFileSync } = require('fs')\nlet { dirname, join } = require('path')\n\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, 'base64').toString()\n } else {\n /* c8 ignore next 2 */\n return window.atob(str)\n }\n}\n\nclass PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return\n this.loadAnnotation(css)\n this.inline = this.startWith(this.annotation, 'data:')\n\n let prev = opts.map ? opts.map.prev : undefined\n let text = this.loadMap(opts.from, prev)\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from\n }\n if (this.mapFile) this.root = dirname(this.mapFile)\n if (text) this.text = text\n }\n\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer(this.text)\n }\n return this.consumerCache\n }\n\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/\n let baseUri = /^data:application\\/json;base64,/\n let charsetUri = /^data:application\\/json;charset=utf-?8,/\n let uri = /^data:application\\/json,/\n\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length))\n }\n\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length))\n }\n\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1]\n throw new Error('Unsupported source map encoding ' + encoding)\n }\n\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, '').trim()\n }\n\n isMap(map) {\n if (typeof map !== 'object') return false\n return (\n typeof map.mappings === 'string' ||\n typeof map._mappings === 'string' ||\n Array.isArray(map.sections)\n )\n }\n\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm)\n if (!comments) return\n\n // sourceMappingURLs from comments, strings, etc.\n let start = css.lastIndexOf(comments.pop())\n let end = css.indexOf('*/', start)\n\n if (start > -1 && end > -1) {\n // Locate the last sourceMappingURL to avoid pickin\n this.annotation = this.getAnnotationURL(css.substring(start, end))\n }\n }\n\n loadFile(path) {\n this.root = dirname(path)\n if (existsSync(path)) {\n this.mapFile = path\n return readFileSync(path, 'utf-8').toString().trim()\n }\n }\n\n loadMap(file, prev) {\n if (prev === false) return false\n\n if (prev) {\n if (typeof prev === 'string') {\n return prev\n } else if (typeof prev === 'function') {\n let prevPath = prev(file)\n if (prevPath) {\n let map = this.loadFile(prevPath)\n if (!map) {\n throw new Error(\n 'Unable to load previous source map: ' + prevPath.toString()\n )\n }\n return map\n }\n } else if (prev instanceof SourceMapConsumer) {\n return SourceMapGenerator.fromSourceMap(prev).toString()\n } else if (prev instanceof SourceMapGenerator) {\n return prev.toString()\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev)\n } else {\n throw new Error(\n 'Unsupported previous source map format: ' + prev.toString()\n )\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation)\n } else if (this.annotation) {\n let map = this.annotation\n if (file) map = join(dirname(file), map)\n return this.loadFile(map)\n }\n }\n\n startWith(string, start) {\n if (!string) return false\n return string.substr(0, start.length) === start\n }\n\n withContent() {\n return !!(\n this.consumer().sourcesContent &&\n this.consumer().sourcesContent.length > 0\n )\n }\n}\n\nmodule.exports = PreviousMap\nPreviousMap.default = PreviousMap\n","'use strict'\n\nlet NoWorkResult = require('./no-work-result')\nlet LazyResult = require('./lazy-result')\nlet Document = require('./document')\nlet Root = require('./root')\n\nclass Processor {\n constructor(plugins = []) {\n this.version = '8.4.31'\n this.plugins = this.normalize(plugins)\n }\n\n normalize(plugins) {\n let normalized = []\n for (let i of plugins) {\n if (i.postcss === true) {\n i = i()\n } else if (i.postcss) {\n i = i.postcss\n }\n\n if (typeof i === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins)\n } else if (typeof i === 'object' && i.postcssPlugin) {\n normalized.push(i)\n } else if (typeof i === 'function') {\n normalized.push(i)\n } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n 'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +\n 'one of the syntax/parser/stringifier options as outlined ' +\n 'in your PostCSS runner documentation.'\n )\n }\n } else {\n throw new Error(i + ' is not a PostCSS plugin')\n }\n }\n return normalized\n }\n\n process(css, opts = {}) {\n if (\n this.plugins.length === 0 &&\n typeof opts.parser === 'undefined' &&\n typeof opts.stringifier === 'undefined' &&\n typeof opts.syntax === 'undefined'\n ) {\n return new NoWorkResult(this, css, opts)\n } else {\n return new LazyResult(this, css, opts)\n }\n }\n\n use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]))\n return this\n }\n}\n\nmodule.exports = Processor\nProcessor.default = Processor\n\nRoot.registerProcessor(Processor)\nDocument.registerProcessor(Processor)\n","'use strict'\n\nlet Warning = require('./warning')\n\nclass Result {\n constructor(processor, root, opts) {\n this.processor = processor\n this.messages = []\n this.root = root\n this.opts = opts\n this.css = undefined\n this.map = undefined\n }\n\n toString() {\n return this.css\n }\n\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin\n }\n }\n\n let warning = new Warning(text, opts)\n this.messages.push(warning)\n\n return warning\n }\n\n warnings() {\n return this.messages.filter(i => i.type === 'warning')\n }\n\n get content() {\n return this.css\n }\n}\n\nmodule.exports = Result\nResult.default = Result\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Root extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'root'\n if (!this.nodes) this.nodes = []\n }\n\n normalize(child, sample, type) {\n let nodes = super.normalize(child)\n\n if (sample) {\n if (type === 'prepend') {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before\n } else {\n delete sample.raws.before\n }\n } else if (this.first !== sample) {\n for (let node of nodes) {\n node.raws.before = sample.raws.before\n }\n }\n }\n\n return nodes\n }\n\n removeChild(child, ignore) {\n let index = this.index(child)\n\n if (!ignore && index === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index].raws.before\n }\n\n return super.removeChild(child)\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n return lazy.stringify()\n }\n}\n\nRoot.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nRoot.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Root\nRoot.default = Root\n\nContainer.registerRoot(Root)\n","'use strict'\n\nlet Container = require('./container')\nlet list = require('./list')\n\nclass Rule extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'rule'\n if (!this.nodes) this.nodes = []\n }\n\n get selectors() {\n return list.comma(this.selector)\n }\n\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null\n let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')\n this.selector = values.join(sep)\n }\n}\n\nmodule.exports = Rule\nRule.default = Rule\n\nContainer.registerRule(Rule)\n","'use strict'\n\nconst DEFAULT_RAW = {\n after: '\\n',\n beforeClose: '\\n',\n beforeComment: '\\n',\n beforeDecl: '\\n',\n beforeOpen: ' ',\n beforeRule: '\\n',\n colon: ': ',\n commentLeft: ' ',\n commentRight: ' ',\n emptyBody: '',\n indent: ' ',\n semicolon: false\n}\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1)\n}\n\nclass Stringifier {\n constructor(builder) {\n this.builder = builder\n }\n\n atrule(node, semicolon) {\n let name = '@' + node.name\n let params = node.params ? this.rawValue(node, 'params') : ''\n\n if (typeof node.raws.afterName !== 'undefined') {\n name += node.raws.afterName\n } else if (params) {\n name += ' '\n }\n\n if (node.nodes) {\n this.block(node, name + params)\n } else {\n let end = (node.raws.between || '') + (semicolon ? ';' : '')\n this.builder(name + params + end, node)\n }\n }\n\n beforeAfter(node, detect) {\n let value\n if (node.type === 'decl') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (node.type === 'comment') {\n value = this.raw(node, null, 'beforeComment')\n } else if (detect === 'before') {\n value = this.raw(node, null, 'beforeRule')\n } else {\n value = this.raw(node, null, 'beforeClose')\n }\n\n let buf = node.parent\n let depth = 0\n while (buf && buf.type !== 'root') {\n depth += 1\n buf = buf.parent\n }\n\n if (value.includes('\\n')) {\n let indent = this.raw(node, null, 'indent')\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent\n }\n }\n\n return value\n }\n\n block(node, start) {\n let between = this.raw(node, 'between', 'beforeOpen')\n this.builder(start + between + '{', node, 'start')\n\n let after\n if (node.nodes && node.nodes.length) {\n this.body(node)\n after = this.raw(node, 'after')\n } else {\n after = this.raw(node, 'after', 'emptyBody')\n }\n\n if (after) this.builder(after)\n this.builder('}', node, 'end')\n }\n\n body(node) {\n let last = node.nodes.length - 1\n while (last > 0) {\n if (node.nodes[last].type !== 'comment') break\n last -= 1\n }\n\n let semicolon = this.raw(node, 'semicolon')\n for (let i = 0; i < node.nodes.length; i++) {\n let child = node.nodes[i]\n let before = this.raw(child, 'before')\n if (before) this.builder(before)\n this.stringify(child, last !== i || semicolon)\n }\n }\n\n comment(node) {\n let left = this.raw(node, 'left', 'commentLeft')\n let right = this.raw(node, 'right', 'commentRight')\n this.builder('/*' + left + node.text + right + '*/', node)\n }\n\n decl(node, semicolon) {\n let between = this.raw(node, 'between', 'colon')\n let string = node.prop + between + this.rawValue(node, 'value')\n\n if (node.important) {\n string += node.raws.important || ' !important'\n }\n\n if (semicolon) string += ';'\n this.builder(string, node)\n }\n\n document(node) {\n this.body(node)\n }\n\n raw(node, own, detect) {\n let value\n if (!detect) detect = own\n\n // Already had\n if (own) {\n value = node.raws[own]\n if (typeof value !== 'undefined') return value\n }\n\n let parent = node.parent\n\n if (detect === 'before') {\n // Hack for first rule in CSS\n if (!parent || (parent.type === 'root' && parent.first === node)) {\n return ''\n }\n\n // `root` nodes in `document` should use only their own raws\n if (parent && parent.type === 'document') {\n return ''\n }\n }\n\n // Floating child without parent\n if (!parent) return DEFAULT_RAW[detect]\n\n // Detect style by other nodes\n let root = node.root()\n if (!root.rawCache) root.rawCache = {}\n if (typeof root.rawCache[detect] !== 'undefined') {\n return root.rawCache[detect]\n }\n\n if (detect === 'before' || detect === 'after') {\n return this.beforeAfter(node, detect)\n } else {\n let method = 'raw' + capitalize(detect)\n if (this[method]) {\n value = this[method](root, node)\n } else {\n root.walk(i => {\n value = i.raws[own]\n if (typeof value !== 'undefined') return false\n })\n }\n }\n\n if (typeof value === 'undefined') value = DEFAULT_RAW[detect]\n\n root.rawCache[detect] = value\n return value\n }\n\n rawBeforeClose(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawBeforeComment(root, node) {\n let value\n root.walkComments(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeDecl(root, node) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeOpen(root) {\n let value\n root.walk(i => {\n if (i.type !== 'decl') {\n value = i.raws.between\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawBeforeRule(root) {\n let value\n root.walk(i => {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawColon(root) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.between !== 'undefined') {\n value = i.raws.between.replace(/[^\\s:]/g, '')\n return false\n }\n })\n return value\n }\n\n rawEmptyBody(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawIndent(root) {\n if (root.raws.indent) return root.raws.indent\n let value\n root.walk(i => {\n let p = i.parent\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n let parts = i.raws.before.split('\\n')\n value = parts[parts.length - 1]\n value = value.replace(/\\S/g, '')\n return false\n }\n }\n })\n return value\n }\n\n rawSemicolon(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n value = i.raws.semicolon\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawValue(node, prop) {\n let value = node[prop]\n let raw = node.raws[prop]\n if (raw && raw.value === value) {\n return raw.raw\n }\n\n return value\n }\n\n root(node) {\n this.body(node)\n if (node.raws.after) this.builder(node.raws.after)\n }\n\n rule(node) {\n this.block(node, this.rawValue(node, 'selector'))\n if (node.raws.ownSemicolon) {\n this.builder(node.raws.ownSemicolon, node, 'end')\n }\n }\n\n stringify(node, semicolon) {\n /* c8 ignore start */\n if (!this[node.type]) {\n throw new Error(\n 'Unknown AST node type ' +\n node.type +\n '. ' +\n 'Maybe you need to change PostCSS stringifier.'\n )\n }\n /* c8 ignore stop */\n this[node.type](node, semicolon)\n }\n}\n\nmodule.exports = Stringifier\nStringifier.default = Stringifier\n","'use strict'\n\nlet Stringifier = require('./stringifier')\n\nfunction stringify(node, builder) {\n let str = new Stringifier(builder)\n str.stringify(node)\n}\n\nmodule.exports = stringify\nstringify.default = stringify\n","'use strict'\n\nmodule.exports.isClean = Symbol('isClean')\n\nmodule.exports.my = Symbol('my')\n","'use strict'\n\nconst SINGLE_QUOTE = \"'\".charCodeAt(0)\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0)\nconst BACKSLASH = '\\\\'.charCodeAt(0)\nconst SLASH = '/'.charCodeAt(0)\nconst NEWLINE = '\\n'.charCodeAt(0)\nconst SPACE = ' '.charCodeAt(0)\nconst FEED = '\\f'.charCodeAt(0)\nconst TAB = '\\t'.charCodeAt(0)\nconst CR = '\\r'.charCodeAt(0)\nconst OPEN_SQUARE = '['.charCodeAt(0)\nconst CLOSE_SQUARE = ']'.charCodeAt(0)\nconst OPEN_PARENTHESES = '('.charCodeAt(0)\nconst CLOSE_PARENTHESES = ')'.charCodeAt(0)\nconst OPEN_CURLY = '{'.charCodeAt(0)\nconst CLOSE_CURLY = '}'.charCodeAt(0)\nconst SEMICOLON = ';'.charCodeAt(0)\nconst ASTERISK = '*'.charCodeAt(0)\nconst COLON = ':'.charCodeAt(0)\nconst AT = '@'.charCodeAt(0)\n\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/\nconst RE_HEX_ESCAPE = /[\\da-f]/i\n\nmodule.exports = function tokenizer(input, options = {}) {\n let css = input.css.valueOf()\n let ignore = options.ignoreErrors\n\n let code, next, quote, content, escape\n let escaped, escapePos, prev, n, currentToken\n\n let length = css.length\n let pos = 0\n let buffer = []\n let returned = []\n\n function position() {\n return pos\n }\n\n function unclosed(what) {\n throw input.error('Unclosed ' + what, pos)\n }\n\n function endOfFile() {\n return returned.length === 0 && pos >= length\n }\n\n function nextToken(opts) {\n if (returned.length) return returned.pop()\n if (pos >= length) return\n\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false\n\n code = css.charCodeAt(pos)\n\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos\n do {\n next += 1\n code = css.charCodeAt(next)\n } while (\n code === SPACE ||\n code === NEWLINE ||\n code === TAB ||\n code === CR ||\n code === FEED\n )\n\n currentToken = ['space', css.slice(pos, next)]\n pos = next - 1\n break\n }\n\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code)\n currentToken = [controlChar, controlChar, pos]\n break\n }\n\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : ''\n n = css.charCodeAt(pos + 1)\n if (\n prev === 'url' &&\n n !== SINGLE_QUOTE &&\n n !== DOUBLE_QUOTE &&\n n !== SPACE &&\n n !== NEWLINE &&\n n !== TAB &&\n n !== FEED &&\n n !== CR\n ) {\n next = pos\n do {\n escaped = false\n next = css.indexOf(')', next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos\n break\n } else {\n unclosed('bracket')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['brackets', css.slice(pos, next + 1), pos, next]\n\n pos = next\n } else {\n next = css.indexOf(')', pos + 1)\n content = css.slice(pos, next + 1)\n\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = ['(', '(', pos]\n } else {\n currentToken = ['brackets', content, pos, next]\n pos = next\n }\n }\n\n break\n }\n\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"'\n next = pos\n do {\n escaped = false\n next = css.indexOf(quote, next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1\n break\n } else {\n unclosed('string')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['string', css.slice(pos, next + 1), pos, next]\n pos = next\n break\n }\n\n case AT: {\n RE_AT_END.lastIndex = pos + 1\n RE_AT_END.test(css)\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_AT_END.lastIndex - 2\n }\n\n currentToken = ['at-word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n case BACKSLASH: {\n next = pos\n escape = true\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1\n escape = !escape\n }\n code = css.charCodeAt(next + 1)\n if (\n escape &&\n code !== SLASH &&\n code !== SPACE &&\n code !== NEWLINE &&\n code !== TAB &&\n code !== CR &&\n code !== FEED\n ) {\n next += 1\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1\n }\n }\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf('*/', pos + 2) + 1\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length\n } else {\n unclosed('comment')\n }\n }\n\n currentToken = ['comment', css.slice(pos, next + 1), pos, next]\n pos = next\n } else {\n RE_WORD_END.lastIndex = pos + 1\n RE_WORD_END.test(css)\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_WORD_END.lastIndex - 2\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n buffer.push(currentToken)\n pos = next\n }\n\n break\n }\n }\n\n pos++\n return currentToken\n }\n\n function back(token) {\n returned.push(token)\n }\n\n return {\n back,\n endOfFile,\n nextToken,\n position\n }\n}\n","/* eslint-disable no-console */\n'use strict'\n\nlet printed = {}\n\nmodule.exports = function warnOnce(message) {\n if (printed[message]) return\n printed[message] = true\n\n if (typeof console !== 'undefined' && console.warn) {\n console.warn(message)\n }\n}\n","'use strict'\n\nclass Warning {\n constructor(text, opts = {}) {\n this.type = 'warning'\n this.text = text\n\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts)\n this.line = range.start.line\n this.column = range.start.column\n this.endLine = range.end.line\n this.endColumn = range.end.column\n }\n\n for (let opt in opts) this[opt] = opts[opt]\n }\n\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message\n }\n\n if (this.plugin) {\n return this.plugin + ': ' + this.text\n }\n\n return this.text\n }\n}\n\nmodule.exports = Warning\nWarning.default = Warning\n","import type { recordOptions } from './extensions/replay/types/rrweb'\nimport type { SegmentAnalytics } from './extensions/segment-integration'\nimport { PostHog } from './posthog-core'\n\nexport type Property = any\nexport type Properties = Record<string, Property>\n\nexport const COPY_AUTOCAPTURE_EVENT = '$copy_autocapture'\n\nexport const knownUnsafeEditableEvent = [\n '$snapshot',\n '$pageview',\n '$pageleave',\n '$set',\n 'survey dismissed',\n 'survey sent',\n 'survey shown',\n '$identify',\n '$groupidentify',\n '$create_alias',\n '$$client_ingestion_warning',\n '$web_experiment_applied',\n '$feature_enrollment_update',\n '$feature_flag_called',\n] as const\n\n/**\n * These events can be processed by the `beforeCapture` function\n * but can cause unexpected confusion in data.\n *\n * Some features of PostHog rely on receiving 100% of these events\n */\nexport type KnownUnsafeEditableEvent = (typeof knownUnsafeEditableEvent)[number]\n\n/**\n * These are known events PostHog events that can be processed by the `beforeCapture` function\n * That means PostHog functionality does not rely on receiving 100% of these for calculations\n * So, it is safe to sample them to reduce the volume of events sent to PostHog\n */\nexport type KnownEventName =\n | '$heatmaps_data'\n | '$opt_in'\n | '$exception'\n | '$$heatmap'\n | '$web_vitals'\n | '$dead_click'\n | '$autocapture'\n | typeof COPY_AUTOCAPTURE_EVENT\n | '$rageclick'\n\nexport type EventName =\n | KnownUnsafeEditableEvent\n | KnownEventName\n // magic value so that the type of EventName is a set of known strings or any other string\n // which means you get autocomplete for known strings\n // but no type complaints when you add an arbitrary string\n | (string & {})\n\nexport interface CaptureResult {\n uuid: string\n event: EventName\n properties: Properties\n $set?: Properties\n $set_once?: Properties\n timestamp?: Date\n}\n\nexport type AutocaptureCompatibleElement = 'a' | 'button' | 'form' | 'input' | 'select' | 'textarea' | 'label'\nexport type DomAutocaptureEvents = 'click' | 'change' | 'submit'\n\n/**\n * If an array is passed for an allowlist, autocapture events will only be sent for elements matching\n * at least one of the elements in the array. Multiple allowlists can be used\n */\nexport interface AutocaptureConfig {\n /**\n * List of URLs to allow autocapture on, can be strings to match\n * or regexes e.g. ['https://example.com', 'test.com/.*']\n * this is useful when you want to autocapture on specific pages only\n *\n * if you set both url_allowlist and url_ignorelist,\n * we check the allowlist first and then the ignorelist.\n * the ignorelist can override the allowlist\n */\n url_allowlist?: (string | RegExp)[]\n\n /**\n * List of URLs to not allow autocapture on, can be strings to match\n * or regexes e.g. ['https://example.com', 'test.com/.*']\n * this is useful when you want to autocapture on most pages but not some specific ones\n *\n * if you set both url_allowlist and url_ignorelist,\n * we check the allowlist first and then the ignorelist.\n * the ignorelist can override the allowlist\n */\n url_ignorelist?: (string | RegExp)[]\n\n /**\n * List of DOM events to allow autocapture on e.g. ['click', 'change', 'submit']\n */\n dom_event_allowlist?: DomAutocaptureEvents[]\n\n /**\n * List of DOM elements to allow autocapture on\n * e.g. ['a', 'button', 'form', 'input', 'select', 'textarea', 'label']\n *\n * We consider the tree of elements from the root to the target element of the click event\n * so for the tree `div > div > button > svg`\n * if the allowlist has `button` then we allow the capture when the `button` or the `svg` is the click target\n * but not if either of the `div`s are detected as the click target\n */\n element_allowlist?: AutocaptureCompatibleElement[]\n\n /**\n * List of CSS selectors to allow autocapture on\n * e.g. ['[ph-capture]']\n * we consider the tree of elements from the root to the target element of the click event\n * so for the tree div > div > button > svg\n * and allow list config `['[id]']`\n * we will capture the click if the click-target or its parents has any id\n *\n * Everything is allowed when there's no allowlist\n */\n css_selector_allowlist?: string[]\n\n /**\n * Exclude certain element attributes from autocapture\n * E.g. ['aria-label'] or [data-attr-pii]\n */\n element_attribute_ignorelist?: string[]\n\n /**\n * When set to true, autocapture will capture the text of any element that is cut or copied.\n */\n capture_copied_text?: boolean\n}\n\nexport interface BootstrapConfig {\n distinctID?: string\n isIdentifiedID?: boolean\n featureFlags?: Record<string, boolean | string>\n featureFlagPayloads?: Record<string, JsonType>\n\n /**\n * Optionally provide a sessionID, this is so that you can provide an existing sessionID here to continue a user's session across a domain or device. It MUST be:\n * - unique to this user\n * - a valid UUID v7\n * - the timestamp part must be <= the timestamp of the first event in the session\n * - the timestamp of the last event in the session must be < the timestamp part + 24 hours\n * **/\n sessionID?: string\n}\n\nexport type SupportedWebVitalsMetrics = 'LCP' | 'CLS' | 'FCP' | 'INP'\n\nexport interface PerformanceCaptureConfig {\n /**\n * Works with session replay to use the browser's native performance observer to capture performance metrics\n */\n network_timing?: boolean\n\n /**\n * Use chrome's web vitals library to wrap fetch and capture web vitals\n */\n web_vitals?: boolean\n\n /**\n * We observe very large values reported by the Chrome web vitals library\n * These outliers are likely not real, useful values, and we exclude them\n * You can set this to 0 in order to include all values, NB this is not recommended\n *\n * @default 15 * 60 * 1000 (15 minutes)\n */\n __web_vitals_max_value?: number\n\n /**\n * By default all 4 metrics are captured\n * You can set this config to restrict which metrics are captured\n * e.g. ['CLS', 'FCP'] to only capture those two metrics\n * NB setting this does not override whether the capture is enabled\n *\n * @default ['LCP', 'CLS', 'FCP', 'INP']\n */\n web_vitals_allowed_metrics?: SupportedWebVitalsMetrics[]\n\n /**\n * We delay flushing web vitals metrics to reduce the number of events we send\n * This is the maximum time we will wait before sending the metrics\n *\n * @default 5000\n */\n web_vitals_delayed_flush_ms?: number\n}\n\nexport interface DeadClickCandidate {\n node: Element\n originalEvent: MouseEvent\n timestamp: number\n // time between click and the most recent scroll\n scrollDelayMs?: number\n // time between click and the most recent mutation\n mutationDelayMs?: number\n // time between click and the most recent selection changed event\n selectionChangedDelayMs?: number\n // if neither scroll nor mutation seen before threshold passed\n absoluteDelayMs?: number\n}\n\nexport type DeadClicksAutoCaptureConfig = {\n /**\n * We'll not consider a click to be a dead click, if it's followed by a scroll within `scroll_threshold_ms` milliseconds\n *\n * @default 100\n */\n scroll_threshold_ms?: number\n\n /**\n * We'll not consider a click to be a dead click, if it's followed by a selection change within `selection_change_threshold_ms` milliseconds\n *\n * @default 100\n */\n selection_change_threshold_ms?: number\n\n /**\n * We'll not consider a click to be a dead click, if it's followed by a mutation within `mutation_threshold_ms` milliseconds\n *\n * @default 2500\n */\n mutation_threshold_ms?: number\n\n /**\n * Allows setting behavior for when a dead click is captured.\n * For e.g. to support capture to heatmaps\n *\n * If not provided the default behavior is to auto-capture dead click events\n *\n * Only intended to be provided by our own SDK\n */\n __onCapture?: ((click: DeadClickCandidate, properties: Properties) => void) | undefined\n} & Pick<AutocaptureConfig, 'element_attribute_ignorelist'>\n\nexport interface HeatmapConfig {\n /**\n * How often to send batched data in `$heatmap_data` events\n * If set to 0 or not set, sends using the default interval of 1 second\n *\n * @default 1000\n */\n flush_interval_milliseconds: number\n}\n\nexport type BeforeSendFn = (cr: CaptureResult | null) => CaptureResult | null\n\n/**\n * Configuration options for the PostHog JavaScript SDK.\n * @see https://posthog.com/docs/libraries/js#config\n */\nexport interface PostHogConfig {\n /** URL of your PostHog instance.\n *\n * @default 'https://us.i.posthog.com'\n */\n api_host: string\n\n /**\n * If using a reverse proxy for `api_host` then this should be the actual PostHog app URL (e.g. https://us.posthog.com).\n * This ensures that links to PostHog point to the correct host.\n *\n * @default null\n */\n ui_host: string | null\n\n /**\n * The transport method to use for API requests.\n *\n * @default 'fetch'\n */\n api_transport?: 'XHR' | 'fetch'\n\n /**\n * The token for your PostHog project.\n * It should NOT be provided manually in the config, but rather passed as the first parameter to `posthog.init()`.\n */\n token: string\n\n /**\n * The name this instance will be identified by.\n * You don't need to set this most of the time,\n * but can be useful if you have several Posthog instances running at the same time.\n *\n * @default 'posthog'\n */\n name: string\n\n /**\n * Determines whether PostHog should autocapture events.\n * This setting does not affect capturing pageview events (see `capture_pageview`).\n *\n * @default true\n */\n autocapture: boolean | AutocaptureConfig\n\n /**\n * Determines whether PostHog should capture rage clicks.\n *\n * @default true\n */\n rageclick: boolean\n\n /**\n * Determines if cookie should be set on the top level domain (example.com).\n * If PostHog-js is loaded on a subdomain (test.example.com), and `cross_subdomain_cookie` is set to false,\n * it'll set the cookie on the subdomain only (test.example.com).\n *\n * NOTE: It will be set to `false` if we detect that the domain is a subdomain of a platform that is excluded from cross-subdomain cookie setting.\n * The current list of excluded platforms is `herokuapp.com`, `vercel.app`, and `netlify.app`.\n *\n * @see `isCrossDomainCookie`\n * @default true\n */\n cross_subdomain_cookie: boolean\n\n /**\n * Determines how PostHog stores information about the user. See [persistence](https://posthog.com/docs/libraries/js#persistence) for details.\n *\n * @default 'localStorage+cookie'\n */\n persistence: 'localStorage' | 'cookie' | 'memory' | 'localStorage+cookie' | 'sessionStorage'\n\n /**\n * The name for the super properties persistent store\n *\n * @default ''\n */\n persistence_name: string\n\n /** @deprecated - Use 'persistence_name' instead */\n cookie_name?: string\n\n /**\n * A function to be called once the PostHog scripts have loaded successfully.\n *\n * @param posthog_instance - The PostHog instance that has been loaded.\n */\n loaded: (posthog_instance: PostHog) => void\n\n /**\n * Determines whether PostHog should save referrer information.\n *\n * @default true\n */\n save_referrer: boolean\n\n /**\n * Determines whether PostHog should save marketing parameters.\n * These are `utm_*` paramaters and friends.\n *\n * @see {CAMPAIGN_PARAMS} from './utils/event-utils' - Default campaign parameters like utm_source, utm_medium, etc.\n * @default true\n */\n save_campaign_params: boolean\n\n /** @deprecated - Use `save_campaign_params` instead */\n store_google?: boolean\n\n /**\n * Used to extend the list of campaign parameters that are saved by default.\n *\n * @see {CAMPAIGN_PARAMS} from './utils/event-utils' - Default campaign parameters like utm_source, utm_medium, etc.\n * @default []\n */\n custom_campaign_params: string[]\n\n /**\n * Used to extend the list of user agents that are blocked by default.\n *\n * @see {DEFAULT_BLOCKED_UA_STRS} from './utils/blocked-uas' - Default list of blocked user agents.\n * @default []\n */\n custom_blocked_useragents: string[]\n\n /**\n * Determines whether PostHog should be in debug mode.\n * You can enable this to get more detailed logging.\n *\n * You can also enable this on your website by appending `?__posthog_debug=true` at the end of your URL\n * You can also call `posthog.debug()` in your code to enable debug mode\n *\n * @default false\n */\n debug: boolean\n\n /** @deprecated Use `debug` instead */\n verbose?: boolean\n\n /**\n * Determines whether PostHog should capture pageview events automatically.\n *\n * @default true\n */\n capture_pageview: boolean\n\n /**\n * Determines whether PostHog should capture pageleave events.\n * If set to `true`, it will capture pageleave events for all pages.\n * If set to `'if_capture_pageview'`, it will only capture pageleave events if `capture_pageview` is also set to `true`.\n *\n * @default 'if_capture_pageview'\n */\n capture_pageleave: boolean | 'if_capture_pageview'\n\n /**\n * Determines the number of days to store cookies for.\n *\n * @default 365\n */\n cookie_expiration: number\n\n /**\n * Determines whether PostHog should upgrade old cookies.\n * If set to `true`, the library will check for a cookie from our old js library and import super properties from it, then the old cookie is deleted.\n * This option only works in the initialization, so make sure you set it when you create the library.\n *\n * @default false\n */\n upgrade: boolean\n\n /**\n * Determines whether PostHog should disable session recording.\n *\n * @default false\n */\n disable_session_recording: boolean\n\n /**\n * Determines whether PostHog should disable persistence.\n * If set to `true`, the library will not save any data to the browser. It will also delete any data previously saved to the browser.\n *\n * @default false\n */\n disable_persistence: boolean\n\n /** @deprecated - use `disable_persistence` instead */\n disable_cookie?: boolean\n\n /**\n * Determines whether PostHog should disable surveys.\n *\n * @default false\n */\n disable_surveys: boolean\n\n /**\n * Determines whether PostHog should disable web experiments.\n *\n * Currently disabled while we're in BETA. It will be toggled to `true` in a future release.\n *\n * @default true\n */\n disable_web_experiments: boolean\n\n /**\n * Determines whether PostHog should disable any external dependency loading.\n * This will prevent PostHog from requesting any external scripts such as those needed for Session Replay, Surveys or Site Apps.\n *\n * @default false\n */\n disable_external_dependency_loading: boolean\n\n /**\n * A function to be called when a script is being loaded.\n * This can be used to modify the script before it is loaded.\n * This is useful for adding a nonce to the script, for example.\n *\n * @param script - The script element that is being loaded.\n * @returns The modified script element, or null if the script should not be loaded.\n */\n prepare_external_dependency_script?: (script: HTMLScriptElement) => HTMLScriptElement | null\n\n /**\n * A function to be called when a stylesheet is being loaded.\n * This can be used to modify the stylesheet before it is loaded.\n * This is useful for adding a nonce to the stylesheet, for example.\n *\n * @param stylesheet - The stylesheet element that is being loaded.\n * @returns The modified stylesheet element, or null if the stylesheet should not be loaded.\n */\n prepare_external_dependency_stylesheet?: (stylesheet: HTMLStyleElement) => HTMLStyleElement | null\n\n /**\n * Determines whether PostHog should enable recording console logs.\n * When undefined, it falls back to the remote config setting.\n *\n * @default undefined\n */\n enable_recording_console_log?: boolean\n\n /**\n * Determines whether PostHog should use secure cookies.\n * If this is `true`, PostHog cookies will be marked as secure,\n * meaning they will only be transmitted over HTTPS.\n *\n * @default window.location.protocol === 'https:'\n */\n secure_cookie: boolean\n\n /**\n * Determines whether PostHog should capture IP addresses.\n *\n * @default true\n */\n ip: boolean\n\n /**\n * Determines if users should be opted out of PostHog tracking by default,\n * requiring additional logic to opt them into capturing by calling `posthog.opt_in_capturing()`.\n *\n * @default false\n */\n opt_out_capturing_by_default: boolean\n\n /**\n * Determines where we'll save the information about whether users are opted out of capturing.\n *\n * @default 'localStorage'\n */\n opt_out_capturing_persistence_type: 'localStorage' | 'cookie'\n\n /**\n * Determines if users should be opted out of browser data storage by this PostHog instance by default,\n * requiring additional logic to opt them into capturing by calling `posthog.opt_in_capturing()`.\n *\n * @default false\n */\n opt_out_persistence_by_default?: boolean\n\n /**\n * Determines if users should be opted out of user agent filtering such as googlebot or other bots.\n * If this is set to `true`, PostHog will set `$browser_type` to either `bot` or `browser` for all events,\n * but will process all events as if they were from a browser.\n *\n * @default false\n */\n opt_out_useragent_filter: boolean\n\n /**\n * Determines the prefix for the cookie used to store the information about whether users are opted out of capturing.\n * When `null`, it falls back to the default prefix found in `consent.ts`.\n *\n * @default null\n */\n opt_out_capturing_cookie_prefix: string | null\n\n /**\n * Determines if users should be opted in to site apps.\n *\n * @default false\n */\n opt_in_site_apps: boolean\n\n /**\n * Determines whether PostHog should respect the Do Not Track header when computing\n * consent in `ConsentManager`.\n *\n * @see `ConsentManager`\n * @default false\n */\n respect_dnt: boolean\n\n /**\n * A list of properties that should never be sent with capture calls.\n *\n * @default []\n */\n property_denylist: string[]\n\n /** @deprecated - use `property_denylist` instead */\n property_blacklist?: string[]\n\n /**\n * A list of headers that should be sent with requests to the PostHog API.\n *\n * @default {}\n */\n request_headers: { [header_name: string]: string }\n\n /** @deprecated - use `request_headers` instead */\n xhr_headers?: { [header_name: string]: string }\n\n /**\n * A function that is called when a request to the PostHog API fails.\n *\n * @param error - The `RequestResponse` object that occurred.\n */\n on_request_error?: (error: RequestResponse) => void\n\n /** @deprecated - use `on_request_error` instead */\n on_xhr_error?: (failedRequest: XMLHttpRequest) => void\n\n /**\n * Determines whether PostHog should batch requests to the PostHog API.\n *\n * @default true\n */\n request_batching: boolean\n\n /**\n * Determines the maximum length of the properties string that can be sent with capture calls.\n *\n * @default 65535\n */\n properties_string_max_length: number\n\n /**\n * Determines the session recording options.\n *\n * @see `SessionRecordingOptions`\n * @default {}\n */\n session_recording: SessionRecordingOptions\n\n /**\n * Determines the session idle timeout in seconds.\n * Any new event that's happened after this timeout will create a new session.\n *\n * @default 30 * 60 -- 30 minutes\n */\n session_idle_timeout_seconds: number\n\n /**\n * Prevent autocapture from capturing any attribute names on elements.\n *\n * @default false\n */\n mask_all_element_attributes: boolean\n\n /**\n * Prevent autocapture from capturing `textContent` on elements.\n *\n * @default false\n */\n mask_all_text: boolean\n\n /**\n * Prevent autocapture from capturing personal data properties.\n * These include campaign parameters, UTM parameters, and other parameters that could be considered personal data under e.g. GDPR.\n *\n * @default false\n */\n mask_personal_data_properties: boolean\n\n /**\n * Custom list of personal data properties to mask.\n *\n * @default []\n */\n custom_personal_data_properties: string[]\n\n /**\n * One of the very first things the PostHog library does when init() is called\n * is make a request to the /decide endpoint on PostHog's backend.\n * This endpoint contains information on how to run the PostHog library\n * so events are properly received in the backend.\n *\n * This endpoint is required to run most features of the library.\n * However, if you're not using any of the described features,\n * you may wish to turn off the call completely to avoid an extra request\n * and reduce resource usage on both the client and the server.\n *\n * @default false\n */\n advanced_disable_decide: boolean\n\n /**\n * Will keep /decide running, but without any feature flag requests\n *\n * @default false\n */\n advanced_disable_feature_flags: boolean\n\n /**\n * Stops from firing feature flag requests on first page load.\n * Only requests feature flags when user identity or properties are updated,\n * or you manually request for flags to be loaded.\n *\n * @default false\n */\n advanced_disable_feature_flags_on_first_load: boolean\n\n /**\n * Determines whether PostHog should disable toolbar metrics.\n * This is our internal instrumentation for our toolbar in your website.\n *\n * @default false\n */\n advanced_disable_toolbar_metrics: boolean\n\n /**\n * Sets timeout for fetching feature flags\n *\n * @default 3000\n */\n feature_flag_request_timeout_ms: number\n\n /**\n * Sets timeout for fetching surveys\n *\n * @default 10000\n */\n surveys_request_timeout_ms: number\n\n /**\n * Function to get the device ID.\n * This doesn't usually need to be set, but can be useful if you want to use a custom device ID.\n *\n * @param uuid - The UUID we would use for the device ID.\n * @returns The device ID.\n *\n * @default (uuid) => uuid\n */\n get_device_id: (uuid: string) => string\n\n /**\n * This function or array of functions - if provided - are called immediately before sending data to the server.\n * It allows you to edit data before it is sent, or choose not to send it all.\n * if provided as an array the functions are called in the order they are provided\n * any one function returning null means the event will not be sent\n */\n before_send?: BeforeSendFn | BeforeSendFn[]\n\n /** @deprecated - use `before_send` instead */\n sanitize_properties: ((properties: Properties, event_name: string) => Properties) | null\n\n /** @deprecated - use `before_send` instead */\n _onCapture: (eventName: string, eventData: CaptureResult) => void\n\n /**\n * Determines whether to capture performance metrics.\n * These include Network Timing and Web Vitals.\n *\n * When `undefined`, fallback to the remote configuration.\n * If `false`, neither network timing nor web vitals will work.\n * If an object, that will override the remote configuration.\n *\n * @see {PerformanceCaptureConfig}\n * @default undefined\n */\n capture_performance?: boolean | PerformanceCaptureConfig\n\n /**\n * Determines whether to disable compression when sending events to the server.\n * WARNING: Should only be used for testing. Could negatively impact performance.\n *\n * @default false\n */\n disable_compression: boolean\n\n /**\n * An object containing the `distinctID`, `isIdentifiedID`, and `featureFlags` keys,\n * where `distinctID` is a string, and `featureFlags` is an object of key-value pairs.\n *\n * Since there is a delay between initializing PostHog and fetching feature flags,\n * feature flags are not always available immediately.\n * This makes them unusable if you want to do something like redirecting a user\n * to a different page based on a feature flag.\n *\n * You can, therefore, fetch the feature flags in your server and pre-fill them here,\n * allowing PostHog to know the feature flag values immediately.\n *\n * After the SDK fetches feature flags from PostHog, it will use those flag values instead of bootstrapped ones.\n *\n * @default {}\n */\n bootstrap: BootstrapConfig\n\n /**\n * The segment analytics object.\n *\n * @see https://posthog.com/docs/libraries/segment\n */\n segment?: SegmentAnalytics\n\n /**\n * Determines whether to capture heatmaps.\n *\n * @see {HeatmapConfig}\n * @default undefined\n */\n capture_heatmaps?: boolean | HeatmapConfig\n\n /* @deprecated - use `capture_heatmaps` instead */\n enable_heatmaps?: boolean\n\n /**\n * Determines whether to capture dead clicks.\n *\n * @see {DeadClicksAutoCaptureConfig}\n * @default undefined\n */\n capture_dead_clicks?: boolean | DeadClicksAutoCaptureConfig\n\n /**\n * Determines whether to capture exceptions.\n *\n * @default undefined\n */\n capture_exceptions?: boolean\n\n /**\n * Determines whether to disable scroll properties.\n * These allow you to keep track of how far down someone scrolled in your website.\n *\n * @default false\n */\n disable_scroll_properties?: boolean\n\n /**\n * Let the pageview scroll stats use a custom css selector for the root element, e.g. `main`\n * It will use `window.document.documentElement` if not specified.\n */\n scroll_root_selector?: string | string[]\n\n /**\n * You can control whether events from PostHog-js have person processing enabled with the `person_profiles` config setting.\n * There are three options:\n * - `person_profiles: 'always'` - we will process persons data for all events\n * - `person_profiles: 'never'` - we won't process persons for any event. This means that anonymous users will not be merged once they sign up or login, so you lose the ability to create funnels that track users from anonymous to identified. All events (including `$identify`) will be sent with `$process_person_profile: False`.\n * - `person_profiles: 'identified_only'` _(default)_ - we will only process persons when you call `posthog.identify`, `posthog.alias`, `posthog.setPersonProperties`, `posthog.group`, `posthog.setPersonPropertiesForFlags` or `posthog.setGroupPropertiesForFlags` Anonymous users won't get person profiles.\n *\n * @default 'identified_only'\n */\n person_profiles?: 'always' | 'never' | 'identified_only'\n\n /** @deprecated - use `person_profiles` instead */\n process_person?: 'always' | 'never' | 'identified_only'\n\n /**\n * Client side rate limiting\n */\n rate_limiting?: {\n /**\n * The average number of events per second that should be permitted\n *\n * @default 10\n */\n events_per_second?: number\n\n /**\n * How many events can be captured in a burst. This defaults to 10 times the events_per_second count\n *\n * @default 10 * `events_per_second`\n */\n events_burst_limit?: number\n }\n\n /**\n * Used when sending data via `fetch`, use with care.\n * This is intentionally meant to be used with NextJS `fetch`\n *\n * Incorrect `cache` usage may cause out-of-date data for feature flags, actions tracking, etc.\n * See https://nextjs.org/docs/app/api-reference/functions/fetch#fetchurl-options\n */\n fetch_options?: {\n cache?: RequestInit['cache']\n next_options?: NextOptions\n }\n\n /**\n * Used to change the behavior of the request queue.\n * This is an advanced feature and should be used with caution.\n */\n request_queue_config?: RequestQueueConfig\n\n // ------- PREVIEW CONFIGS -------\n\n /**\n * PREVIEW - MAY CHANGE WITHOUT WARNING - DO NOT USE IN PRODUCTION\n * Whether to wrap fetch and add tracing headers to the request\n * */\n __add_tracing_headers?: boolean\n\n /**\n * PREVIEW - MAY CHANGE WITHOUT WARNING - DO NOT USE IN PRODUCTION\n * Enables the new RemoteConfig approach to loading config instead of decide\n * */\n __preview_remote_config?: boolean\n\n /**\n * PREVIEW - MAY CHANGE WITHOUT WARNING - DO NOT USE IN PRODUCTION\n * Whether to send a sentinel value for distinct id, device id, and session id, which will be replaced server-side by a cookieless hash\n * */\n __preview_experimental_cookieless_mode?: boolean\n\n // ------- RETIRED CONFIGS - NO REPLACEMENT OR USAGE -------\n\n /** @deprecated - NOT USED ANYMORE, kept here for backwards compatibility reasons */\n api_method?: string\n\n /** @deprecated - NOT USED ANYMORE, kept here for backwards compatibility reasons */\n inapp_protocol?: string\n\n /** @deprecated - NOT USED ANYMORE, kept here for backwards compatibility reasons */\n inapp_link_new_window?: boolean\n}\n\nexport interface SessionRecordingOptions {\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default 'ph-nocapture'\n */\n blockClass?: string | RegExp\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default null\n */\n blockSelector?: string | null\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default 'ph-ignore-input'\n */\n ignoreClass?: string\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default 'ph-mask'\n */\n maskTextClass?: string | RegExp\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n */\n maskTextSelector?: string | null\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n */\n maskTextFn?: ((text: string, element?: HTMLElement) => string) | null\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n */\n maskAllInputs?: boolean\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n */\n maskInputOptions?: recordOptions['maskInputOptions']\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n */\n maskInputFn?: ((text: string, element?: HTMLElement) => string) | null\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default {}\n */\n slimDOMOptions?: recordOptions['slimDOMOptions']\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default false\n */\n collectFonts?: boolean\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default true\n */\n inlineStylesheet?: boolean\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default false\n */\n recordCrossOriginIframes?: boolean\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default false\n */\n recordHeaders?: boolean\n\n /**\n * Derived from `rrweb.record` options\n * @see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n * @default false\n */\n recordBody?: boolean\n\n /**\n * Allows local config to override remote canvas recording settings from the decide response\n */\n captureCanvas?: SessionRecordingCanvasOptions\n\n /**\n * Modify the network request before it is captured. Returning null or undefined stops it being captured\n */\n maskCapturedNetworkRequestFn?: ((data: CapturedNetworkRequest) => CapturedNetworkRequest | null | undefined) | null\n\n /** @deprecated - use maskCapturedNetworkRequestFn instead */\n maskNetworkRequestFn?: ((data: NetworkRequest) => NetworkRequest | null | undefined) | null\n\n /**\n * ADVANCED: while a user is active we take a full snapshot of the browser every interval.\n * For very few sites playback performance might be better with different interval.\n * Set to 0 to disable\n *\n * @default 1000 * 60 * 5 (5 minutes)\n */\n full_snapshot_interval_millis?: number\n\n /**\n * ADVANCED: whether to partially compress rrweb events before sending them to the server,\n * defaults to true, can be set to false to disable partial compression\n * NB requests are still compressed when sent to the server regardless of this setting\n *\n * @default true\n */\n compress_events?: boolean\n\n /**\n * ADVANCED: alters the threshold before a recording considers a user has become idle.\n * Normally only altered alongside changes to session_idle_timeout_ms.\n *\n * @default 1000 * 60 * 5 (5 minutes)\n */\n session_idle_threshold_ms?: number\n\n /**\n * ADVANCED: alters the refill rate for the token bucket mutation throttling\n * Normally only altered alongside posthog support guidance.\n * Accepts values between 0 and 100\n *\n * @default 10\n */\n __mutationRateLimiterRefillRate?: number\n\n /**\n * ADVANCED: alters the bucket size for the token bucket mutation throttling\n * Normally only altered alongside posthog support guidance.\n * Accepts values between 0 and 100\n *\n * @default 100\n */\n __mutationRateLimiterBucketSize?: number\n}\n\nexport type SessionIdChangedCallback = (\n sessionId: string,\n windowId: string | null | undefined,\n changeReason?: { noSessionId: boolean; activityTimeout: boolean; sessionPastMaximumLength: boolean }\n) => void\n\nexport enum Compression {\n GZipJS = 'gzip-js',\n Base64 = 'base64',\n}\n\n// Request types - these should be kept minimal to what request.ts needs\n\n// Minimal class to allow interop between different request methods (xhr / fetch)\nexport interface RequestResponse {\n statusCode: number\n text?: string\n json?: any\n}\n\nexport type RequestCallback = (response: RequestResponse) => void\n\n// See https://nextjs.org/docs/app/api-reference/functions/fetch#fetchurl-options\ntype NextOptions = { revalidate: false | 0 | number; tags: string[] }\n\nexport interface RequestWithOptions {\n url: string\n // Data can be a single object or an array of objects when batched\n data?: Record<string, any> | Record<string, any>[]\n headers?: Record<string, any>\n transport?: 'XHR' | 'fetch' | 'sendBeacon'\n method?: 'POST' | 'GET'\n urlQueryArgs?: { compression: Compression }\n callback?: RequestCallback\n timeout?: number\n noRetries?: boolean\n compression?: Compression | 'best-available'\n fetchOptions?: {\n cache?: RequestInit['cache']\n next?: NextOptions\n }\n}\n\n// Queued request types - the same as a request but with additional queueing information\n\nexport interface QueuedRequestWithOptions extends RequestWithOptions {\n /** key of queue, e.g. 'sessionRecording' vs 'event' */\n batchKey?: string\n}\n\n// Used explicitly for retriable requests\nexport interface RetriableRequestWithOptions extends QueuedRequestWithOptions {\n retriesPerformedSoFar?: number\n}\n\n// we used to call a request that was sent to the queue with options attached `RequestQueueOptions`\n// so we can't call the options used to configure the behavior of the RequestQueue that as well,\n// so instead we call them config\nexport interface RequestQueueConfig {\n /**\n * ADVANCED - alters the frequency which PostHog sends events to the server.\n * generally speaking this is only set when apps have automatic page refreshes, or very short visits.\n * Defaults to 3 seconds when not set\n * Allowed values between 250 and 5000\n * */\n flush_interval_ms?: number\n}\n\nexport interface CaptureOptions {\n /**\n * Used when `$identify` is called\n * Will set person properties overriding previous values\n */\n $set?: Properties\n\n /**\n * Used when `$identify` is called\n * Will set person properties but only once, it will NOT override previous values\n */\n $set_once?: Properties\n\n /**\n * Used to override the desired endpoint for the captured event\n */\n _url?: string\n\n /**\n * key of queue, e.g. 'sessionRecording' vs 'event'\n */\n _batchKey?: string\n\n /**\n * If set, overrides and disables config.properties_string_max_length\n */\n _noTruncate?: boolean\n\n /**\n * If set, skips the batched queue\n */\n send_instantly?: boolean\n\n /**\n * If set, skips the client side rate limiting\n */\n skip_client_rate_limiting?: boolean\n\n /**\n * If set, overrides the desired transport method\n */\n transport?: RequestWithOptions['transport']\n\n /**\n * If set, overrides the current timestamp\n */\n timestamp?: Date\n}\n\nexport type FlagVariant = { flag: string; variant: string }\n\nexport type SessionRecordingCanvasOptions = {\n /**\n * If set, records the canvas\n *\n * @default false\n */\n recordCanvas?: boolean | null\n\n /**\n * If set, records the canvas at the given FPS\n * Can be set in the remote configuration\n * Limited between 0 and 12\n * When canvas recording is enabled, if this is not set locally, then remote config sets this as 4\n *\n * @default null-ish\n */\n canvasFps?: number | null\n\n /**\n * If set, records the canvas at the given quality\n * Can be set in the remote configuration\n * Must be a string that is a valid decimal between 0 and 1\n * When canvas recording is enabled, if this is not set locally, then remote config sets this as \"0.4\"\n *\n * @default null-ish\n */\n canvasQuality?: string | null\n}\n\n/**\n * Remote configuration for the PostHog instance\n *\n * All of these settings can be configured directly in your PostHog instance\n * Any configuration set in the client overrides the information from the server\n */\nexport interface RemoteConfig {\n /**\n * Supported compression algorithms\n */\n supportedCompression: Compression[]\n\n /**\n * If set, disables autocapture\n */\n autocapture_opt_out?: boolean\n\n /**\n * originally capturePerformance was replay only and so boolean true\n * is equivalent to { network_timing: true }\n * now capture performance can be separately enabled within replay\n * and as a standalone web vitals tracker\n * people can have them enabled separately\n * they work standalone but enhance each other\n * TODO: deprecate this so we make a new config that doesn't need this explanation\n */\n capturePerformance?: boolean | PerformanceCaptureConfig\n\n /**\n * Whether we should use a custom endpoint for analytics\n *\n * @default { endpoint: \"/e\" }\n */\n analytics?: {\n endpoint?: string\n }\n\n /**\n * Whether the `$elements_chain` property should be sent as a string or as an array\n *\n * @default false\n */\n elementsChainAsString?: boolean\n\n /**\n * This is currently in development and may have breaking changes without a major version bump\n */\n autocaptureExceptions?: boolean | { endpoint?: string }\n\n /**\n * Session recording configuration options\n */\n sessionRecording?: SessionRecordingCanvasOptions & {\n endpoint?: string\n consoleLogRecordingEnabled?: boolean\n // the API returns a decimal between 0 and 1 as a string\n sampleRate?: string | null\n minimumDurationMilliseconds?: number\n linkedFlag?: string | FlagVariant | null\n networkPayloadCapture?: Pick<NetworkRecordOptions, 'recordBody' | 'recordHeaders'>\n urlTriggers?: SessionRecordingUrlTrigger[]\n scriptConfig?: { script?: string | undefined }\n urlBlocklist?: SessionRecordingUrlTrigger[]\n eventTriggers?: string[]\n }\n\n /**\n * Whether surveys are enabled\n */\n surveys?: boolean\n\n /**\n * Parameters for the toolbar\n */\n toolbarParams: ToolbarParams\n\n /**\n * @deprecated renamed to toolbarParams, still present on older API responses\n */\n editorParams?: ToolbarParams\n\n /**\n * @deprecated, moved to toolbarParams\n */\n toolbarVersion: 'toolbar'\n\n /**\n * Whether the user is authenticated\n */\n isAuthenticated: boolean\n\n /**\n * List of site apps with their IDs and URLs\n */\n siteApps: { id: string; url: string }[]\n\n /**\n * Whether heatmaps are enabled\n */\n heatmaps?: boolean\n\n /**\n * Whether to only capture identified users by default\n */\n defaultIdentifiedOnly?: boolean\n\n /**\n * Whether to capture dead clicks\n */\n captureDeadClicks?: boolean\n\n /**\n * Indicates if the team has any flags enabled (if not we don't need to load them)\n */\n hasFeatureFlags?: boolean\n}\n\n/**\n * Decide returns everything we have on the remote config plus feature flags and their payloads\n */\nexport interface DecideResponse extends RemoteConfig {\n featureFlags: Record<string, string | boolean>\n featureFlagPayloads: Record<string, JsonType>\n errorsWhileComputingFlags: boolean\n}\n\nexport type SiteAppGlobals = {\n event: {\n uuid: string\n event: EventName\n properties: Properties\n timestamp?: Date\n elements_chain?: string\n distinct_id?: string\n }\n person: {\n properties: Properties\n }\n groups: Record<string, { id: string; type: string; properties: Properties }>\n}\n\nexport type SiteAppLoader = {\n id: string\n init: (config: { posthog: PostHog; callback: (success: boolean) => void }) => {\n processEvent?: (globals: SiteAppGlobals) => void\n }\n}\n\nexport type SiteApp = {\n id: string\n loaded: boolean\n errored: boolean\n processEvent?: (globals: SiteAppGlobals) => void\n}\n\nexport type FeatureFlagsCallback = (\n flags: string[],\n variants: Record<string, string | boolean>,\n context?: {\n errorsLoading?: boolean\n }\n) => void\n\nexport type RemoteConfigFeatureFlagCallback = (payload: JsonType) => void\n\nexport interface PersistentStore {\n is_supported: () => boolean\n error: (error: any) => void\n parse: (name: string) => any\n get: (name: string) => any\n set: (\n name: string,\n value: any,\n expire_days?: number | null,\n cross_subdomain?: boolean,\n secure?: boolean,\n debug?: boolean\n ) => void\n remove: (name: string, cross_subdomain?: boolean) => void\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport type Breaker = {}\nexport type EventHandler = (event: Event) => boolean | void\n\nexport type ToolbarUserIntent = 'add-action' | 'edit-action'\nexport type ToolbarSource = 'url' | 'localstorage'\nexport type ToolbarVersion = 'toolbar'\n\n/* sync with posthog */\nexport interface ToolbarParams {\n token?: string /** public posthog-js token */\n temporaryToken?: string /** private temporary user token */\n actionId?: number\n userIntent?: ToolbarUserIntent\n source?: ToolbarSource\n toolbarVersion?: ToolbarVersion\n instrument?: boolean\n distinctId?: string\n userEmail?: string\n dataAttributes?: string[]\n featureFlags?: Record<string, string | boolean>\n}\n\nexport type SnippetArrayItem = [method: string, ...args: any[]]\n\nexport type JsonRecord = { [key: string]: JsonType }\nexport type JsonType = string | number | boolean | null | undefined | JsonRecord | Array<JsonType>\n\n/** A feature that isn't publicly available yet.*/\nexport interface EarlyAccessFeature {\n // Sync this with the backend's EarlyAccessFeatureSerializer!\n name: string\n description: string\n stage: 'concept' | 'alpha' | 'beta'\n documentationUrl: string | null\n flagKey: string | null\n}\n\nexport type EarlyAccessFeatureCallback = (earlyAccessFeatures: EarlyAccessFeature[]) => void\n\nexport interface EarlyAccessFeatureResponse {\n earlyAccessFeatures: EarlyAccessFeature[]\n}\n\nexport type Headers = Record<string, string>\n\n/* for rrweb/network@1\n ** when that is released as part of rrweb this can be removed\n ** don't rely on this type, it may change without notice\n */\nexport type InitiatorType =\n | 'audio'\n | 'beacon'\n | 'body'\n | 'css'\n | 'early-hint'\n | 'embed'\n | 'fetch'\n | 'frame'\n | 'iframe'\n | 'icon'\n | 'image'\n | 'img'\n | 'input'\n | 'link'\n | 'navigation'\n | 'object'\n | 'ping'\n | 'script'\n | 'track'\n | 'video'\n | 'xmlhttprequest'\n\nexport type NetworkRecordOptions = {\n initiatorTypes?: InitiatorType[]\n maskRequestFn?: (data: CapturedNetworkRequest) => CapturedNetworkRequest | undefined\n recordHeaders?: boolean | { request: boolean; response: boolean }\n recordBody?: boolean | string[] | { request: boolean | string[]; response: boolean | string[] }\n recordInitialRequests?: boolean\n /**\n * whether to record PerformanceEntry events for network requests\n */\n recordPerformance?: boolean\n /**\n * the PerformanceObserver will only observe these entry types\n */\n performanceEntryTypeToObserve: string[]\n /**\n * the maximum size of the request/response body to record\n * NB this will be at most 1MB even if set larger\n */\n payloadSizeLimitBytes: number\n /**\n * some domains we should never record the payload\n * for example other companies session replay ingestion payloads aren't super useful but are gigantic\n * if this isn't provided we use a default list\n * if this is provided - we add the provided list to the default list\n * i.e. we never record the payloads on the default deny list\n */\n payloadHostDenyList?: string[]\n}\n\n/** @deprecated - use CapturedNetworkRequest instead */\nexport type NetworkRequest = {\n url: string\n}\n\n// In rrweb this is called NetworkRequest, but we already exposed that as having only URL\n// we also want to vary from the rrweb NetworkRequest because we want to include\n// all PerformanceEntry properties too.\n// that has 4 required properties\n// readonly duration: DOMHighResTimeStamp;\n// readonly entryType: string;\n// readonly name: string;\n// readonly startTime: DOMHighResTimeStamp;\n// NB: properties below here are ALPHA, don't rely on them, they may change without notice\n\n// we mirror PerformanceEntry since we read into this type from a PerformanceObserver,\n// but we don't want to inherit its readonly-iness\ntype Writable<T> = { -readonly [P in keyof T]: T[P] }\n\nexport type CapturedNetworkRequest = Writable<Omit<PerformanceEntry, 'toJSON'>> & {\n // properties below here are ALPHA, don't rely on them, they may change without notice\n method?: string\n initiatorType?: InitiatorType\n status?: number\n timeOrigin?: number\n timestamp?: number\n startTime?: number\n endTime?: number\n requestHeaders?: Headers\n requestBody?: string | null\n responseHeaders?: Headers\n responseBody?: string | null\n // was this captured before fetch/xhr could have been wrapped\n isInitial?: boolean\n}\n\nexport type ErrorConversionArgs = {\n event: string | Event\n error?: Error\n}\n\nexport type ErrorEventArgs = [\n event: string | Event,\n source?: string | undefined,\n lineno?: number | undefined,\n colno?: number | undefined,\n error?: Error | undefined,\n]\n\nexport type ErrorMetadata = {\n handled?: boolean\n synthetic?: boolean\n syntheticException?: Error\n overrideExceptionType?: string\n overrideExceptionMessage?: string\n defaultExceptionType?: string\n defaultExceptionMessage?: string\n}\n\n// levels originally copied from Sentry to work with the sentry integration\n// and to avoid relying on a frequently changing @sentry/types dependency\n// but provided as an array of literal types, so we can constrain the level below\nexport const severityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'] as const\nexport declare type SeverityLevel = (typeof severityLevels)[number]\n\nexport interface ErrorProperties {\n $exception_type: string\n $exception_message: string\n $exception_level: SeverityLevel\n $exception_source?: string\n $exception_lineno?: number\n $exception_colno?: number\n $exception_DOMException_code?: string\n $exception_is_synthetic?: boolean\n $exception_stack_trace_raw?: string\n $exception_handled?: boolean\n $exception_personURL?: string\n}\n\nexport interface ErrorConversions {\n errorToProperties: (args: ErrorEventArgs) => ErrorProperties\n unhandledRejectionToProperties: (args: [ev: PromiseRejectionEvent]) => ErrorProperties\n}\n\nexport interface SessionRecordingUrlTrigger {\n url: string\n matching: 'regex'\n}\n","import { ErrorProperties } from '../extensions/exception-autocapture/error-conversion'\nimport type { PostHog } from '../posthog-core'\nimport { SessionIdManager } from '../sessionid'\nimport {\n DeadClicksAutoCaptureConfig,\n ErrorConversionArgs,\n ErrorMetadata,\n Properties,\n RemoteConfig,\n SiteAppLoader,\n} from '../types'\n\n/*\n * Global helpers to protect access to browser globals in a way that is safer for different targets\n * like DOM, SSR, Web workers etc.\n *\n * NOTE: Typically we want the \"window\" but globalThis works for both the typical browser context as\n * well as other contexts such as the web worker context. Window is still exported for any bits that explicitly require it.\n * If in doubt - export the global you need from this file and use that as an optional value. This way the code path is forced\n * to handle the case where the global is not available.\n */\n\n// eslint-disable-next-line no-restricted-globals\nconst win: (Window & typeof globalThis) | undefined = typeof window !== 'undefined' ? window : undefined\n\nexport type AssignableWindow = Window &\n typeof globalThis &\n Record<string, any> & {\n __PosthogExtensions__?: PostHogExtensions\n\n _POSTHOG_REMOTE_CONFIG?: Record<\n string,\n {\n config: RemoteConfig\n siteApps: SiteAppLoader[]\n }\n >\n }\n\n/**\n * This is our contract between (potentially) lazily loaded extensions and the SDK\n * changes to this interface can be breaking changes for users of the SDK\n */\n\nexport type PostHogExtensionKind =\n | 'toolbar'\n | 'exception-autocapture'\n | 'web-vitals'\n | 'recorder'\n | 'tracing-headers'\n | 'surveys'\n | 'dead-clicks-autocapture'\n | 'remote-config'\n\nexport interface LazyLoadedDeadClicksAutocaptureInterface {\n start: (observerTarget: Node) => void\n stop: () => void\n}\n\ninterface PostHogExtensions {\n loadExternalDependency?: (\n posthog: PostHog,\n kind: PostHogExtensionKind,\n callback: (error?: string | Event, event?: Event) => void\n ) => void\n\n loadSiteApp?: (posthog: PostHog, appUrl: string, callback: (error?: string | Event, event?: Event) => void) => void\n\n parseErrorAsProperties?: ({ error, event }: ErrorConversionArgs, metadata?: ErrorMetadata) => ErrorProperties\n errorWrappingFunctions?: {\n wrapOnError: (captureFn: (props: Properties) => void) => () => void\n wrapUnhandledRejection: (captureFn: (props: Properties) => void) => () => void\n }\n rrweb?: { record: any; version: string }\n rrwebPlugins?: { getRecordConsolePlugin: any; getRecordNetworkPlugin?: any }\n canActivateRepeatedly?: (survey: any) => boolean\n generateSurveys?: (posthog: PostHog) => any | undefined\n postHogWebVitalsCallbacks?: {\n onLCP: (metric: any) => void\n onCLS: (metric: any) => void\n onFCP: (metric: any) => void\n onINP: (metric: any) => void\n }\n tracingHeadersPatchFns?: {\n _patchFetch: (sessionManager?: SessionIdManager) => () => void\n _patchXHR: (sessionManager?: SessionIdManager) => () => void\n }\n initDeadClicksAutocapture?: (\n ph: PostHog,\n config: DeadClicksAutoCaptureConfig\n ) => LazyLoadedDeadClicksAutocaptureInterface\n}\n\nconst global: typeof globalThis | undefined = typeof globalThis !== 'undefined' ? globalThis : win\n\nexport const ArrayProto = Array.prototype\nexport const nativeForEach = ArrayProto.forEach\nexport const nativeIndexOf = ArrayProto.indexOf\n\nexport const navigator = global?.navigator\nexport const document = global?.document\nexport const location = global?.location\nexport const fetch = global?.fetch\nexport const XMLHttpRequest =\n global?.XMLHttpRequest && 'withCredentials' in new global.XMLHttpRequest() ? global.XMLHttpRequest : undefined\nexport const AbortController = global?.AbortController\nexport const userAgent = navigator?.userAgent\nexport const assignableWindow: AssignableWindow = win ?? ({} as any)\n\nexport { win as window }\n","import packageInfo from '../package.json'\n\n// overridden in posthog-core,\n// e.g. Config.DEBUG = Config.DEBUG || instance.config.debug\nconst Config = {\n DEBUG: false,\n LIB_VERSION: packageInfo.version,\n}\n\nexport default Config\n","export function includes<T = any>(str: T[] | string, needle: T): boolean {\n return (str as any).indexOf(needle) !== -1\n}\n\n// UNDERSCORE\n// Embed part of the Underscore Library\nexport const trim = function (str: string): string {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '')\n}\nexport const stripLeadingDollar = function (s: string): string {\n return s.replace(/^\\$/, '')\n}\n\nexport function isDistinctIdStringLike(value: string): boolean {\n return ['distinct_id', 'distinctid'].includes(value.toLowerCase())\n}\n","import { window } from './globals'\nimport { knownUnsafeEditableEvent, KnownUnsafeEditableEvent } from '../types'\nimport { includes } from './string-utils'\n\n// eslint-disable-next-line posthog-js/no-direct-array-check\nconst nativeIsArray = Array.isArray\nconst ObjProto = Object.prototype\nexport const hasOwnProperty = ObjProto.hasOwnProperty\nconst toString = ObjProto.toString\n\nexport const isArray =\n nativeIsArray ||\n function (obj: any): obj is any[] {\n return toString.call(obj) === '[object Array]'\n }\n\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// let bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\nexport const isFunction = (x: unknown): x is (...args: any[]) => any => {\n // eslint-disable-next-line posthog-js/no-direct-function-check\n return typeof x === 'function'\n}\n\nexport const isNativeFunction = (x: unknown): x is (...args: any[]) => any =>\n isFunction(x) && x.toString().indexOf('[native code]') !== -1\n\n// When angular patches functions they pass the above `isNativeFunction` check (at least the MutationObserver)\nexport const isAngularZonePresent = (): boolean => {\n return !!(window as any).Zone\n}\n\n// Underscore Addons\nexport const isObject = (x: unknown): x is Record<string, any> => {\n // eslint-disable-next-line posthog-js/no-direct-object-check\n return x === Object(x) && !isArray(x)\n}\nexport const isEmptyObject = (x: unknown) => {\n if (isObject(x)) {\n for (const key in x) {\n if (hasOwnProperty.call(x, key)) {\n return false\n }\n }\n return true\n }\n return false\n}\nexport const isUndefined = (x: unknown): x is undefined => x === void 0\n\nexport const isString = (x: unknown): x is string => {\n // eslint-disable-next-line posthog-js/no-direct-string-check\n return toString.call(x) == '[object String]'\n}\n\nexport const isEmptyString = (x: unknown): boolean => isString(x) && x.trim().length === 0\n\nexport const isNull = (x: unknown): x is null => {\n // eslint-disable-next-line posthog-js/no-direct-null-check\n return x === null\n}\n\n/*\n sometimes you want to check if something is null or undefined\n that's what this is for\n */\nexport const isNullish = (x: unknown): x is null | undefined => isUndefined(x) || isNull(x)\n\nexport const isNumber = (x: unknown): x is number => {\n // eslint-disable-next-line posthog-js/no-direct-number-check\n return toString.call(x) == '[object Number]'\n}\nexport const isBoolean = (x: unknown): x is boolean => {\n // eslint-disable-next-line posthog-js/no-direct-boolean-check\n return toString.call(x) === '[object Boolean]'\n}\n\nexport const isDocument = (x: unknown): x is Document => {\n // eslint-disable-next-line posthog-js/no-direct-document-check\n return x instanceof Document\n}\n\nexport const isFormData = (x: unknown): x is FormData => {\n // eslint-disable-next-line posthog-js/no-direct-form-data-check\n return x instanceof FormData\n}\n\nexport const isFile = (x: unknown): x is File => {\n // eslint-disable-next-line posthog-js/no-direct-file-check\n return x instanceof File\n}\n\nexport const isError = (x: unknown): x is Error => {\n return x instanceof Error\n}\n\nexport const isKnownUnsafeEditableEvent = (x: unknown): x is KnownUnsafeEditableEvent => {\n return includes(knownUnsafeEditableEvent as unknown as string[], x)\n}\n","import Config from '../config'\nimport { isUndefined } from './type-utils'\nimport { assignableWindow, window } from './globals'\n\nexport type Logger = {\n _log: (level: 'log' | 'warn' | 'error', ...args: any[]) => void\n info: (...args: any[]) => void\n warn: (...args: any[]) => void\n error: (...args: any[]) => void\n critical: (...args: any[]) => void\n uninitializedWarning: (methodName: string) => void\n createLogger: (prefix: string) => Logger\n}\n\nconst _createLogger = (prefix: string): Logger => {\n const logger: Logger = {\n _log: (level: 'log' | 'warn' | 'error', ...args: any[]) => {\n if (\n window &&\n (Config.DEBUG || assignableWindow.POSTHOG_DEBUG) &&\n !isUndefined(window.console) &&\n window.console\n ) {\n const consoleLog =\n '__rrweb_original__' in window.console[level]\n ? (window.console[level] as any)['__rrweb_original__']\n : window.console[level]\n\n // eslint-disable-next-line no-console\n consoleLog(prefix, ...args)\n }\n },\n\n info: (...args: any[]) => {\n logger._log('log', ...args)\n },\n\n warn: (...args: any[]) => {\n logger._log('warn', ...args)\n },\n\n error: (...args: any[]) => {\n logger._log('error', ...args)\n },\n\n critical: (...args: any[]) => {\n // Critical errors are always logged to the console\n // eslint-disable-next-line no-console\n console.error(prefix, ...args)\n },\n\n uninitializedWarning: (methodName: string) => {\n logger.error(`You must initialize PostHog before calling ${methodName}`)\n },\n\n createLogger: (additionalPrefix: string) => _createLogger(`${prefix} ${additionalPrefix}`),\n }\n return logger\n}\n\nexport const logger = _createLogger('[PostHog.js]')\n\nexport const createLogger = logger.createLogger\n","import type { PostHog } from '../posthog-core'\nimport { assignableWindow, document, PostHogExtensionKind } from '../utils/globals'\nimport { createLogger } from '../utils/logger'\n\nconst logger = createLogger('[ExternalScriptsLoader]')\n\nconst loadScript = (posthog: PostHog, url: string, callback: (error?: string | Event, event?: Event) => void) => {\n if (posthog.config.disable_external_dependency_loading) {\n logger.warn(`${url} was requested but loading of external scripts is disabled.`)\n return callback('Loading of external scripts is disabled')\n }\n\n const addScript = () => {\n if (!document) {\n return callback('document not found')\n }\n let scriptTag: HTMLScriptElement | null = document.createElement('script')\n scriptTag.type = 'text/javascript'\n scriptTag.crossOrigin = 'anonymous'\n scriptTag.src = url\n scriptTag.onload = (event) => callback(undefined, event)\n scriptTag.onerror = (error) => callback(error)\n\n if (posthog.config.prepare_external_dependency_script) {\n scriptTag = posthog.config.prepare_external_dependency_script(scriptTag)\n }\n\n if (!scriptTag) {\n return callback('prepare_external_dependency_script returned null')\n }\n\n const scripts = document.querySelectorAll('body > script')\n if (scripts.length > 0) {\n scripts[0].parentNode?.insertBefore(scriptTag, scripts[0])\n } else {\n // In exceptional situations this call might load before the DOM is fully ready.\n document.body.appendChild(scriptTag)\n }\n }\n\n if (document?.body) {\n addScript()\n } else {\n // Inlining this because we don't care about `passive: true` here\n // and this saves us ~3% of the bundle size\n // eslint-disable-next-line posthog-js/no-add-event-listener\n document?.addEventListener('DOMContentLoaded', addScript)\n }\n}\n\nassignableWindow.__PosthogExtensions__ = assignableWindow.__PosthogExtensions__ || {}\nassignableWindow.__PosthogExtensions__.loadExternalDependency = (\n posthog: PostHog,\n kind: PostHogExtensionKind,\n callback: (error?: string | Event, event?: Event) => void\n): void => {\n let scriptUrlToLoad = `/static/${kind}.js` + `?v=${posthog.version}`\n\n if (kind === 'remote-config') {\n scriptUrlToLoad = `/array/${posthog.config.token}/config.js`\n }\n\n if (kind === 'toolbar') {\n // toolbar.js is served from the PostHog CDN, this has a TTL of 24 hours.\n // the toolbar asset includes a rotating \"token\" that is valid for 5 minutes.\n const fiveMinutesInMillis = 5 * 60 * 1000\n // this ensures that we bust the cache periodically\n const timestampToNearestFiveMinutes = Math.floor(Date.now() / fiveMinutesInMillis) * fiveMinutesInMillis\n\n scriptUrlToLoad = `${scriptUrlToLoad}&t=${timestampToNearestFiveMinutes}`\n }\n const url = posthog.requestRouter.endpointFor('assets', scriptUrlToLoad)\n\n loadScript(posthog, url, callback)\n}\n\nassignableWindow.__PosthogExtensions__.loadSiteApp = (\n posthog: PostHog,\n url: string,\n callback: (error?: string | Event, event?: Event) => void\n): void => {\n const scriptUrl = posthog.requestRouter.endpointFor('api', url)\n\n loadScript(posthog, scriptUrl, callback)\n}\n","import { Breaker, Properties } from '../types'\nimport { hasOwnProperty, isArray, isFormData, isNull, isNullish, isString } from './type-utils'\nimport { logger } from './logger'\nimport { nativeForEach, nativeIndexOf } from './globals'\n\nconst breaker: Breaker = {}\n\nexport function eachArray<E = any>(\n obj: E[] | null | undefined,\n iterator: (value: E, key: number) => void | Breaker,\n thisArg?: any\n): void {\n if (isArray(obj)) {\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, thisArg)\n } else if ('length' in obj && obj.length === +obj.length) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(thisArg, obj[i], i) === breaker) {\n return\n }\n }\n }\n }\n}\n\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} thisArg\n */\nexport function each(obj: any, iterator: (value: any, key: any) => void | Breaker, thisArg?: any): void {\n if (isNullish(obj)) {\n return\n }\n if (isArray(obj)) {\n return eachArray(obj, iterator, thisArg)\n }\n if (isFormData(obj)) {\n for (const pair of obj.entries()) {\n if (iterator.call(thisArg, pair[1], pair[0]) === breaker) {\n return\n }\n }\n return\n }\n for (const key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n if (iterator.call(thisArg, obj[key], key) === breaker) {\n return\n }\n }\n }\n}\n\nexport const extend = function (obj: Record<string, any>, ...args: Record<string, any>[]): Record<string, any> {\n eachArray(args, function (source) {\n for (const prop in source) {\n if (source[prop] !== void 0) {\n obj[prop] = source[prop]\n }\n }\n })\n return obj\n}\n\nexport const extendArray = function <T>(obj: T[], ...args: T[][]): T[] {\n eachArray(args, function (source) {\n eachArray(source, function (item) {\n obj.push(item)\n })\n })\n return obj\n}\n\nexport const include = function (\n obj: null | string | Array<any> | Record<string, any>,\n target: any\n): boolean | Breaker {\n let found = false\n if (isNull(obj)) {\n return found\n }\n if (nativeIndexOf && obj.indexOf === nativeIndexOf) {\n return obj.indexOf(target) != -1\n }\n each(obj, function (value) {\n if (found || (found = value === target)) {\n return breaker\n }\n return\n })\n return found\n}\n\n/**\n * Object.entries() polyfill\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries\n */\nexport function entries<T = any>(obj: Record<string, T>): [string, T][] {\n const ownProps = Object.keys(obj)\n let i = ownProps.length\n const resArray = new Array(i) // preallocate the Array\n\n while (i--) {\n resArray[i] = [ownProps[i], obj[ownProps[i]]]\n }\n return resArray\n}\n\nexport const trySafe = function <T>(fn: () => T): T | undefined {\n try {\n return fn()\n } catch {\n return undefined\n }\n}\n\nexport const safewrap = function <F extends (...args: any[]) => any = (...args: any[]) => any>(f: F): F {\n return function (...args) {\n try {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return f.apply(this, args)\n } catch (e) {\n logger.critical(\n 'Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A.'\n )\n logger.critical(e)\n }\n } as F\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport const safewrapClass = function (klass: Function, functions: string[]): void {\n for (let i = 0; i < functions.length; i++) {\n klass.prototype[functions[i]] = safewrap(klass.prototype[functions[i]])\n }\n}\n\nexport const stripEmptyProperties = function (p: Properties): Properties {\n const ret: Properties = {}\n each(p, function (v, k) {\n if (isString(v) && v.length > 0) {\n ret[k] = v\n }\n })\n return ret\n}\n\n/**\n * Deep copies an object.\n * It handles cycles by replacing all references to them with `undefined`\n * Also supports customizing native values\n *\n * @param value\n * @param customizer\n * @returns {{}|undefined|*}\n */\nfunction deepCircularCopy<T extends Record<string, any> = Record<string, any>>(\n value: T,\n customizer?: <K extends keyof T = keyof T>(value: T[K], key?: K) => T[K]\n): T | undefined {\n const COPY_IN_PROGRESS_SET = new Set()\n\n function internalDeepCircularCopy(value: T, key?: string): T | undefined {\n if (value !== Object(value)) return customizer ? customizer(value as any, key) : value // primitive value\n\n if (COPY_IN_PROGRESS_SET.has(value)) return undefined\n COPY_IN_PROGRESS_SET.add(value)\n let result: T\n\n if (isArray(value)) {\n result = [] as any as T\n eachArray(value, (it) => {\n result.push(internalDeepCircularCopy(it))\n })\n } else {\n result = {} as T\n each(value, (val, key) => {\n if (!COPY_IN_PROGRESS_SET.has(val)) {\n ;(result as any)[key] = internalDeepCircularCopy(val, key)\n }\n })\n }\n return result\n }\n return internalDeepCircularCopy(value)\n}\n\nexport function _copyAndTruncateStrings<T extends Record<string, any> = Record<string, any>>(\n object: T,\n maxStringLength: number | null\n): T {\n return deepCircularCopy(object, (value: any) => {\n if (isString(value) && !isNull(maxStringLength)) {\n return (value as string).slice(0, maxStringLength)\n }\n return value\n }) as T\n}\n\n// NOTE: Update PostHogConfig docs if you change this list\n// We will not try to catch all bullets here, but we should make an effort to catch the most common ones\n// You should be highly against adding more to this list, because ultimately customers can configure\n// their `cross_subdomain_cookie` setting to anything they want.\nconst EXCLUDED_FROM_CROSS_SUBDOMAIN_COOKIE = ['herokuapp.com', 'vercel.app', 'netlify.app']\nexport function isCrossDomainCookie(documentLocation: Location | undefined) {\n const hostname = documentLocation?.hostname\n\n if (!isString(hostname)) {\n return false\n }\n // split and slice isn't a great way to match arbitrary domains,\n // but it's good enough for ensuring we only match herokuapp.com when it is the TLD\n // for the hostname\n const lastTwoParts = hostname.split('.').slice(-2).join('.')\n\n for (const excluded of EXCLUDED_FROM_CROSS_SUBDOMAIN_COOKIE) {\n if (lastTwoParts === excluded) {\n return false\n }\n }\n\n return true\n}\n\nexport function find<T>(value: T[], predicate: (value: T) => boolean): T | undefined {\n for (let i = 0; i < value.length; i++) {\n if (predicate(value[i])) {\n return value[i]\n }\n }\n return undefined\n}\n\n// Use this instead of element.addEventListener to avoid eslint errors\n// this properly implements the default options for passive event listeners\nexport function addEventListener(\n element: Window | Document | Element | undefined,\n event: string,\n callback: EventListener,\n options?: AddEventListenerOptions\n): void {\n const { capture = false, passive = true } = options ?? {}\n\n // This is the only place where we are allowed to call this function\n // because the whole idea is that we should be calling this instead of the built-in one\n // eslint-disable-next-line posthog-js/no-add-event-listener\n element?.addEventListener(event, callback, { capture, passive })\n}\n","/*\n * Constants\n */\n\n/* PROPERTY KEYS */\n\n// This key is deprecated, but we want to check for it to see whether aliasing is allowed.\nexport const PEOPLE_DISTINCT_ID_KEY = '$people_distinct_id'\nexport const DISTINCT_ID = 'distinct_id'\nexport const ALIAS_ID_KEY = '__alias'\nexport const CAMPAIGN_IDS_KEY = '__cmpns'\nexport const EVENT_TIMERS_KEY = '__timers'\nexport const AUTOCAPTURE_DISABLED_SERVER_SIDE = '$autocapture_disabled_server_side'\nexport const HEATMAPS_ENABLED_SERVER_SIDE = '$heatmaps_enabled_server_side'\nexport const EXCEPTION_CAPTURE_ENABLED_SERVER_SIDE = '$exception_capture_enabled_server_side'\nexport const WEB_VITALS_ENABLED_SERVER_SIDE = '$web_vitals_enabled_server_side'\nexport const DEAD_CLICKS_ENABLED_SERVER_SIDE = '$dead_clicks_enabled_server_side'\nexport const WEB_VITALS_ALLOWED_METRICS = '$web_vitals_allowed_metrics'\nexport const SESSION_RECORDING_ENABLED_SERVER_SIDE = '$session_recording_enabled_server_side'\nexport const CONSOLE_LOG_RECORDING_ENABLED_SERVER_SIDE = '$console_log_recording_enabled_server_side'\nexport const SESSION_RECORDING_NETWORK_PAYLOAD_CAPTURE = '$session_recording_network_payload_capture'\nexport const SESSION_RECORDING_CANVAS_RECORDING = '$session_recording_canvas_recording'\nexport const SESSION_RECORDING_SAMPLE_RATE = '$replay_sample_rate'\nexport const SESSION_RECORDING_MINIMUM_DURATION = '$replay_minimum_duration'\nexport const SESSION_RECORDING_SCRIPT_CONFIG = '$replay_script_config'\nexport const SESSION_ID = '$sesid'\nexport const SESSION_RECORDING_IS_SAMPLED = '$session_is_sampled'\nexport const SESSION_RECORDING_URL_TRIGGER_ACTIVATED_SESSION = '$session_recording_url_trigger_activated_session'\nexport const SESSION_RECORDING_URL_TRIGGER_STATUS = '$session_recording_url_trigger_status'\nexport const SESSION_RECORDING_EVENT_TRIGGER_ACTIVATED_SESSION = '$session_recording_event_trigger_activated_session'\nexport const SESSION_RECORDING_EVENT_TRIGGER_STATUS = '$session_recording_event_trigger_status'\nexport const ENABLED_FEATURE_FLAGS = '$enabled_feature_flags'\nexport const PERSISTENCE_EARLY_ACCESS_FEATURES = '$early_access_features'\nexport const STORED_PERSON_PROPERTIES_KEY = '$stored_person_properties'\nexport const STORED_GROUP_PROPERTIES_KEY = '$stored_group_properties'\nexport const SURVEYS = '$surveys'\nexport const SURVEYS_ACTIVATED = '$surveys_activated'\nexport const FLAG_CALL_REPORTED = '$flag_call_reported'\nexport const USER_STATE = '$user_state'\nexport const CLIENT_SESSION_PROPS = '$client_session_props'\nexport const CAPTURE_RATE_LIMIT = '$capture_rate_limit'\n\n/** @deprecated Delete this when INITIAL_PERSON_INFO has been around for long enough to ignore backwards compat */\nexport const INITIAL_CAMPAIGN_PARAMS = '$initial_campaign_params'\n/** @deprecated Delete this when INITIAL_PERSON_INFO has been around for long enough to ignore backwards compat */\nexport const INITIAL_REFERRER_INFO = '$initial_referrer_info'\nexport const INITIAL_PERSON_INFO = '$initial_person_info'\nexport const ENABLE_PERSON_PROCESSING = '$epp'\nexport const TOOLBAR_ID = '__POSTHOG_TOOLBAR__'\nexport const TOOLBAR_CONTAINER_CLASS = 'toolbar-global-fade-container'\n\n/**\n * PREVIEW - MAY CHANGE WITHOUT WARNING - DO NOT USE IN PRODUCTION\n * Sentinel value for distinct id, device id, session id. Signals that the server should generate the value\n * */\nexport const COOKIELESS_SENTINEL_VALUE = '$posthog_cookieless'\nexport const COOKIELESS_MODE_FLAG_PROPERTY = '$cookieless_mode'\n\nexport const WEB_EXPERIMENTS = '$web_experiments'\n\n// These are properties that are reserved and will not be automatically included in events\nexport const PERSISTENCE_RESERVED_PROPERTIES = [\n PEOPLE_DISTINCT_ID_KEY,\n ALIAS_ID_KEY,\n CAMPAIGN_IDS_KEY,\n EVENT_TIMERS_KEY,\n SESSION_RECORDING_ENABLED_SERVER_SIDE,\n HEATMAPS_ENABLED_SERVER_SIDE,\n SESSION_ID,\n ENABLED_FEATURE_FLAGS,\n USER_STATE,\n PERSISTENCE_EARLY_ACCESS_FEATURES,\n STORED_GROUP_PROPERTIES_KEY,\n STORED_PERSON_PROPERTIES_KEY,\n SURVEYS,\n FLAG_CALL_REPORTED,\n CLIENT_SESSION_PROPS,\n CAPTURE_RATE_LIMIT,\n INITIAL_CAMPAIGN_PARAMS,\n INITIAL_REFERRER_INFO,\n ENABLE_PERSON_PROCESSING,\n]\n\nexport const SURVEYS_REQUEST_TIMEOUT_MS = 10000\n","import { TOOLBAR_CONTAINER_CLASS, TOOLBAR_ID } from '../constants'\n\nexport function isElementInToolbar(el: EventTarget | null): boolean {\n if (el instanceof Element) {\n // closest isn't available in IE11, but we'll polyfill when bundling\n return el.id === TOOLBAR_ID || !!el.closest?.('.' + TOOLBAR_CONTAINER_CLASS)\n }\n return false\n}\n\n/*\n * Check whether an element has nodeType Node.ELEMENT_NODE\n * @param {Element} el - element to check\n * @returns {boolean} whether el is of the correct nodeType\n */\nexport function isElementNode(el: Node | Element | undefined | null): el is Element {\n return !!el && el.nodeType === 1 // Node.ELEMENT_NODE - use integer constant for browser portability\n}\n\n/*\n * Check whether an element is of a given tag type.\n * Due to potential reference discrepancies (such as the webcomponents.js polyfill),\n * we want to match tagNames instead of specific references because something like\n * element === document.body won't always work because element might not be a native\n * element.\n * @param {Element} el - element to check\n * @param {string} tag - tag name (e.g., \"div\")\n * @returns {boolean} whether el is of the given tag type\n */\nexport function isTag(el: Element | undefined | null, tag: string): el is HTMLElement {\n return !!el && !!el.tagName && el.tagName.toLowerCase() === tag.toLowerCase()\n}\n\n/*\n * Check whether an element has nodeType Node.TEXT_NODE\n * @param {Element} el - element to check\n * @returns {boolean} whether el is of the correct nodeType\n */\nexport function isTextNode(el: Element | undefined | null): el is HTMLElement {\n return !!el && el.nodeType === 3 // Node.TEXT_NODE - use integer constant for browser portability\n}\n\n/*\n * Check whether an element has nodeType Node.DOCUMENT_FRAGMENT_NODE\n * @param {Element} el - element to check\n * @returns {boolean} whether el is of the correct nodeType\n */\nexport function isDocumentFragment(el: Element | ParentNode | undefined | null): el is DocumentFragment {\n return !!el && el.nodeType === 11 // Node.DOCUMENT_FRAGMENT_NODE - use integer constant for browser portability\n}\n","import { AutocaptureConfig, Properties } from './types'\nimport { each, entries } from './utils'\n\nimport { isArray, isNullish, isString, isUndefined } from './utils/type-utils'\nimport { logger } from './utils/logger'\nimport { window } from './utils/globals'\nimport { isDocumentFragment, isElementNode, isTag, isTextNode } from './utils/element-utils'\nimport { includes, trim } from './utils/string-utils'\n\nexport function splitClassString(s: string): string[] {\n return s ? trim(s).split(/\\s+/) : []\n}\n\nfunction checkForURLMatches(urlsList: (string | RegExp)[]): boolean {\n const url = window?.location.href\n return !!(url && urlsList && urlsList.some((regex) => url.match(regex)))\n}\n\n/*\n * Get the className of an element, accounting for edge cases where element.className is an object\n *\n * Because this is a string it can contain unexpected characters\n * So, this method safely splits the className and returns that array.\n */\nexport function getClassNames(el: Element): string[] {\n let className = ''\n switch (typeof el.className) {\n case 'string':\n className = el.className\n break\n // TODO: when is this ever used?\n case 'object': // handle cases where className might be SVGAnimatedString or some other type\n className =\n (el.className && 'baseVal' in el.className ? (el.className as any).baseVal : null) ||\n el.getAttribute('class') ||\n ''\n break\n default:\n className = ''\n }\n\n return splitClassString(className)\n}\n\nexport function makeSafeText(s: string | null | undefined): string | null {\n if (isNullish(s)) {\n return null\n }\n\n return (\n trim(s)\n // scrub potentially sensitive values\n .split(/(\\s+)/)\n .filter((s) => shouldCaptureValue(s))\n .join('')\n // normalize whitespace\n .replace(/[\\r\\n]/g, ' ')\n .replace(/[ ]+/g, ' ')\n // truncate\n .substring(0, 255)\n )\n}\n\n/*\n * Get the direct text content of an element, protecting against sensitive data collection.\n * Concats textContent of each of the element's text node children; this avoids potential\n * collection of sensitive data that could happen if we used element.textContent and the\n * element had sensitive child elements, since element.textContent includes child content.\n * Scrubs values that look like they could be sensitive (i.e. cc or ssn number).\n * @param {Element} el - element to get the text of\n * @returns {string} the element's direct text content\n */\nexport function getSafeText(el: Element): string {\n let elText = ''\n\n if (shouldCaptureElement(el) && !isSensitiveElement(el) && el.childNodes && el.childNodes.length) {\n each(el.childNodes, function (child) {\n if (isTextNode(child) && child.textContent) {\n elText += makeSafeText(child.textContent) ?? ''\n }\n })\n }\n\n return trim(elText)\n}\n\nexport function getEventTarget(e: Event): Element | null {\n // https://developer.mozilla.org/en-US/docs/Web/API/Event/target#Compatibility_notes\n if (isUndefined(e.target)) {\n return (e.srcElement as Element) || null\n } else {\n if ((e.target as HTMLElement)?.shadowRoot) {\n return (e.composedPath()[0] as Element) || null\n }\n return (e.target as Element) || null\n }\n}\n\nexport const autocaptureCompatibleElements = ['a', 'button', 'form', 'input', 'select', 'textarea', 'label']\n\n/*\n if there is no config, then all elements are allowed\n if there is a config, and there is an allow list, then only elements in the allow list are allowed\n assumes that some other code is checking this element's parents\n */\nfunction checkIfElementTreePassesElementAllowList(\n elements: Element[],\n autocaptureConfig: AutocaptureConfig | undefined\n): boolean {\n const allowlist = autocaptureConfig?.element_allowlist\n if (isUndefined(allowlist)) {\n // everything is allowed, when there is no allow list\n return true\n }\n\n // check each element in the tree\n // if any of the elements are in the allow list, then the tree is allowed\n for (const el of elements) {\n if (allowlist.some((elementType) => el.tagName.toLowerCase() === elementType)) {\n return true\n }\n }\n\n // otherwise there is an allow list and this element tree didn't match it\n return false\n}\n\n/*\n if there is no config, then all elements are allowed\n if there is a config, and there is an allow list, then\n only elements that match the css selector in the allow list are allowed\n assumes that some other code is checking this element's parents\n */\nfunction checkIfElementTreePassesCSSSelectorAllowList(\n elements: Element[],\n autocaptureConfig: AutocaptureConfig | undefined\n): boolean {\n const allowlist = autocaptureConfig?.css_selector_allowlist\n if (isUndefined(allowlist)) {\n // everything is allowed, when there is no allow list\n return true\n }\n\n // check each element in the tree\n // if any of the elements are in the allow list, then the tree is allowed\n for (const el of elements) {\n if (allowlist.some((selector) => el.matches(selector))) {\n return true\n }\n }\n\n // otherwise there is an allow list and this element tree didn't match it\n return false\n}\n\nexport function getParentElement(curEl: Element): Element | false {\n const parentNode = curEl.parentNode\n if (!parentNode || !isElementNode(parentNode)) return false\n return parentNode\n}\n\n/*\n * Check whether a DOM event should be \"captured\" or if it may contain sentitive data\n * using a variety of heuristics.\n * @param {Element} el - element to check\n * @param {Event} event - event to check\n * @param {Object} autocaptureConfig - autocapture config\n * @param {boolean} captureOnAnyElement - whether to capture on any element, clipboard autocapture doesn't restrict to \"clickable\" elements\n * @param {string[]} allowedEventTypes - event types to capture, normally just 'click', but some autocapture types react to different events, some elements have fixed events (e.g., form has \"submit\")\n * @returns {boolean} whether the event should be captured\n */\nexport function shouldCaptureDomEvent(\n el: Element,\n event: Event,\n autocaptureConfig: AutocaptureConfig | undefined = undefined,\n captureOnAnyElement?: boolean,\n allowedEventTypes?: string[]\n): boolean {\n if (!window || !el || isTag(el, 'html') || !isElementNode(el)) {\n return false\n }\n\n if (autocaptureConfig?.url_allowlist) {\n // if the current URL is not in the allow list, don't capture\n if (!checkForURLMatches(autocaptureConfig.url_allowlist)) {\n return false\n }\n }\n\n if (autocaptureConfig?.url_ignorelist) {\n // if the current URL is in the ignore list, don't capture\n if (checkForURLMatches(autocaptureConfig.url_ignorelist)) {\n return false\n }\n }\n\n if (autocaptureConfig?.dom_event_allowlist) {\n const allowlist = autocaptureConfig.dom_event_allowlist\n if (allowlist && !allowlist.some((eventType) => event.type === eventType)) {\n return false\n }\n }\n\n let parentIsUsefulElement = false\n const targetElementList: Element[] = [el]\n let parentNode: Element | boolean = true\n let curEl: Element = el\n while (curEl.parentNode && !isTag(curEl, 'body')) {\n // If element is a shadow root, we skip it\n if (isDocumentFragment(curEl.parentNode)) {\n targetElementList.push((curEl.parentNode as any).host)\n curEl = (curEl.parentNode as any).host\n continue\n }\n parentNode = getParentElement(curEl)\n if (!parentNode) break\n if (captureOnAnyElement || autocaptureCompatibleElements.indexOf(parentNode.tagName.toLowerCase()) > -1) {\n parentIsUsefulElement = true\n } else {\n const compStyles = window.getComputedStyle(parentNode)\n if (compStyles && compStyles.getPropertyValue('cursor') === 'pointer') {\n parentIsUsefulElement = true\n }\n }\n\n targetElementList.push(parentNode)\n curEl = parentNode\n }\n\n if (!checkIfElementTreePassesElementAllowList(targetElementList, autocaptureConfig)) {\n return false\n }\n\n if (!checkIfElementTreePassesCSSSelectorAllowList(targetElementList, autocaptureConfig)) {\n return false\n }\n\n const compStyles = window.getComputedStyle(el)\n if (compStyles && compStyles.getPropertyValue('cursor') === 'pointer' && event.type === 'click') {\n return true\n }\n\n const tag = el.tagName.toLowerCase()\n switch (tag) {\n case 'html':\n return false\n case 'form':\n return (allowedEventTypes || ['submit']).indexOf(event.type) >= 0\n case 'input':\n case 'select':\n case 'textarea':\n return (allowedEventTypes || ['change', 'click']).indexOf(event.type) >= 0\n default:\n if (parentIsUsefulElement) return (allowedEventTypes || ['click']).indexOf(event.type) >= 0\n return (\n (allowedEventTypes || ['click']).indexOf(event.type) >= 0 &&\n (autocaptureCompatibleElements.indexOf(tag) > -1 || el.getAttribute('contenteditable') === 'true')\n )\n }\n}\n\n/*\n * Check whether a DOM element should be \"captured\" or if it may contain sentitive data\n * using a variety of heuristics.\n * @param {Element} el - element to check\n * @returns {boolean} whether the element should be captured\n */\nexport function shouldCaptureElement(el: Element): boolean {\n for (let curEl = el; curEl.parentNode && !isTag(curEl, 'body'); curEl = curEl.parentNode as Element) {\n const classes = getClassNames(curEl)\n if (includes(classes, 'ph-sensitive') || includes(classes, 'ph-no-capture')) {\n return false\n }\n }\n\n if (includes(getClassNames(el), 'ph-include')) {\n return true\n }\n\n // don't include hidden or password fields\n const type = (el as HTMLInputElement).type || ''\n if (isString(type)) {\n // it's possible for el.type to be a DOM element if el is a form with a child input[name=\"type\"]\n switch (type.toLowerCase()) {\n case 'hidden':\n return false\n case 'password':\n return false\n }\n }\n\n // filter out data from fields that look like sensitive fields\n const name = (el as HTMLInputElement).name || el.id || ''\n // See https://github.com/posthog/posthog-js/issues/165\n // Under specific circumstances a bug caused .replace to be called on a DOM element\n // instead of a string, removing the element from the page. Ensure this issue is mitigated.\n if (isString(name)) {\n // it's possible for el.name or el.id to be a DOM element if el is a form with a child input[name=\"name\"]\n const sensitiveNameRegex =\n /^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i\n if (sensitiveNameRegex.test(name.replace(/[^a-zA-Z0-9]/g, ''))) {\n return false\n }\n }\n\n return true\n}\n\n/*\n * Check whether a DOM element is 'sensitive' and we should only capture limited data\n * @param {Element} el - element to check\n * @returns {boolean} whether the element should be captured\n */\nexport function isSensitiveElement(el: Element): boolean {\n // don't send data from inputs or similar elements since there will always be\n // a risk of clientside javascript placing sensitive data in attributes\n const allowedInputTypes = ['button', 'checkbox', 'submit', 'reset']\n if (\n (isTag(el, 'input') && !allowedInputTypes.includes((el as HTMLInputElement).type)) ||\n isTag(el, 'select') ||\n isTag(el, 'textarea') ||\n el.getAttribute('contenteditable') === 'true'\n ) {\n return true\n }\n return false\n}\n\n// Define the core pattern for matching credit card numbers\nconst coreCCPattern = `(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11})`\n// Create the Anchored version of the regex by adding '^' at the start and '$' at the end\nconst anchoredCCRegex = new RegExp(`^(?:${coreCCPattern})$`)\n// The Unanchored version is essentially the core pattern, usable as is for partial matches\nconst unanchoredCCRegex = new RegExp(coreCCPattern)\n\n// Define the core pattern for matching SSNs with optional dashes\nconst coreSSNPattern = `\\\\d{3}-?\\\\d{2}-?\\\\d{4}`\n// Create the Anchored version of the regex by adding '^' at the start and '$' at the end\nconst anchoredSSNRegex = new RegExp(`^(${coreSSNPattern})$`)\n// The Unanchored version is essentially the core pattern itself, usable for partial matches\nconst unanchoredSSNRegex = new RegExp(`(${coreSSNPattern})`)\n\n/*\n * Check whether a string value should be \"captured\" or if it may contain sensitive data\n * using a variety of heuristics.\n * @param {string} value - string value to check\n * @param {boolean} anchorRegexes - whether to anchor the regexes to the start and end of the string\n * @returns {boolean} whether the element should be captured\n */\nexport function shouldCaptureValue(value: string, anchorRegexes = true): boolean {\n if (isNullish(value)) {\n return false\n }\n\n if (isString(value)) {\n value = trim(value)\n\n // check to see if input value looks like a credit card number\n // see: https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch04s20.html\n const ccRegex = anchorRegexes ? anchoredCCRegex : unanchoredCCRegex\n if (ccRegex.test((value || '').replace(/[- ]/g, ''))) {\n return false\n }\n\n // check to see if input value looks like a social security number\n const ssnRegex = anchorRegexes ? anchoredSSNRegex : unanchoredSSNRegex\n if (ssnRegex.test(value)) {\n return false\n }\n }\n\n return true\n}\n\n/*\n * Check whether an attribute name is an Angular style attr (either _ngcontent or _nghost)\n * These update on each build and lead to noise in the element chain\n * More details on the attributes here: https://angular.io/guide/view-encapsulation\n * @param {string} attributeName - string value to check\n * @returns {boolean} whether the element is an angular tag\n */\nexport function isAngularStyleAttr(attributeName: string): boolean {\n if (isString(attributeName)) {\n return attributeName.substring(0, 10) === '_ngcontent' || attributeName.substring(0, 7) === '_nghost'\n }\n return false\n}\n\n/*\n * Iterate through children of a target element looking for span tags\n * and return the text content of the span tags, separated by spaces,\n * along with the direct text content of the target element\n * @param {Element} target - element to check\n * @returns {string} text content of the target element and its child span tags\n */\nexport function getDirectAndNestedSpanText(target: Element): string {\n let text = getSafeText(target)\n text = `${text} ${getNestedSpanText(target)}`.trim()\n return shouldCaptureValue(text) ? text : ''\n}\n\n/*\n * Iterate through children of a target element looking for span tags\n * and return the text content of the span tags, separated by spaces\n * @param {Element} target - element to check\n * @returns {string} text content of span tags\n */\nexport function getNestedSpanText(target: Element): string {\n let text = ''\n if (target && target.childNodes && target.childNodes.length) {\n each(target.childNodes, function (child) {\n if (child && child.tagName?.toLowerCase() === 'span') {\n try {\n const spanText = getSafeText(child)\n text = `${text} ${spanText}`.trim()\n\n if (child.childNodes && child.childNodes.length) {\n text = `${text} ${getNestedSpanText(child)}`.trim()\n }\n } catch (e) {\n logger.error('[AutoCapture]', e)\n }\n }\n })\n }\n return text\n}\n\n/*\nBack in the day storing events in Postgres we use Elements for autocapture events.\nNow we're using elements_chain. We used to do this parsing/processing during ingestion.\nThis code is just copied over from ingestion, but we should optimize it\nto create elements_chain string directly.\n*/\nexport function getElementsChainString(elements: Properties[]): string {\n return elementsToString(extractElements(elements))\n}\n\n// This interface is called 'Element' in plugin-scaffold https://github.com/PostHog/plugin-scaffold/blob/b07d3b879796ecc7e22deb71bf627694ba05386b/src/types.ts#L200\n// However 'Element' is a DOM Element when run in the browser, so we have to rename it\ninterface PHElement {\n text?: string\n tag_name?: string\n href?: string\n attr_id?: string\n attr_class?: string[]\n nth_child?: number\n nth_of_type?: number\n attributes?: Record<string, any>\n event_id?: number\n order?: number\n group_id?: number\n}\n\nfunction escapeQuotes(input: string): string {\n return input.replace(/\"|\\\\\"/g, '\\\\\"')\n}\n\nfunction elementsToString(elements: PHElement[]): string {\n const ret = elements.map((element) => {\n let el_string = ''\n if (element.tag_name) {\n el_string += element.tag_name\n }\n if (element.attr_class) {\n element.attr_class.sort()\n for (const single_class of element.attr_class) {\n el_string += `.${single_class.replace(/\"/g, '')}`\n }\n }\n const attributes: Record<string, any> = {\n ...(element.text ? { text: element.text } : {}),\n 'nth-child': element.nth_child ?? 0,\n 'nth-of-type': element.nth_of_type ?? 0,\n ...(element.href ? { href: element.href } : {}),\n ...(element.attr_id ? { attr_id: element.attr_id } : {}),\n ...element.attributes,\n }\n const sortedAttributes: Record<string, any> = {}\n entries(attributes)\n .sort(([a], [b]) => a.localeCompare(b))\n .forEach(\n ([key, value]) => (sortedAttributes[escapeQuotes(key.toString())] = escapeQuotes(value.toString()))\n )\n el_string += ':'\n el_string += entries(attributes)\n .map(([key, value]) => `${key}=\"${value}\"`)\n .join('')\n return el_string\n })\n return ret.join(';')\n}\n\nfunction extractElements(elements: Properties[]): PHElement[] {\n return elements.map((el) => {\n const response = {\n text: el['$el_text']?.slice(0, 400),\n tag_name: el['tag_name'],\n href: el['attr__href']?.slice(0, 2048),\n attr_class: extractAttrClass(el),\n attr_id: el['attr__id'],\n nth_child: el['nth_child'],\n nth_of_type: el['nth_of_type'],\n attributes: {} as { [id: string]: any },\n }\n\n entries(el)\n .filter(([key]) => key.indexOf('attr__') === 0)\n .forEach(([key, value]) => (response.attributes[key] = value))\n return response\n })\n}\n\nfunction extractAttrClass(el: Properties): PHElement['attr_class'] {\n const attr_class = el['attr__class']\n if (!attr_class) {\n return undefined\n } else if (isArray(attr_class)) {\n return attr_class\n } else {\n return splitClassString(attr_class)\n }\n}\n","// Naive rage click implementation: If mouse has not moved further than RAGE_CLICK_THRESHOLD_PX\n// over RAGE_CLICK_CLICK_COUNT clicks with max RAGE_CLICK_TIMEOUT_MS between clicks, it's\n// counted as a rage click\n\nconst RAGE_CLICK_THRESHOLD_PX = 30\nconst RAGE_CLICK_TIMEOUT_MS = 1000\nconst RAGE_CLICK_CLICK_COUNT = 3\n\nexport default class RageClick {\n clicks: { x: number; y: number; timestamp: number }[]\n\n constructor() {\n this.clicks = []\n }\n\n isRageClick(x: number, y: number, timestamp: number): boolean {\n const lastClick = this.clicks[this.clicks.length - 1]\n if (\n lastClick &&\n Math.abs(x - lastClick.x) + Math.abs(y - lastClick.y) < RAGE_CLICK_THRESHOLD_PX &&\n timestamp - lastClick.timestamp < RAGE_CLICK_TIMEOUT_MS\n ) {\n this.clicks.push({ x, y, timestamp })\n\n if (this.clicks.length === RAGE_CLICK_CLICK_COUNT) {\n return true\n }\n } else {\n this.clicks = [{ x, y, timestamp }]\n }\n\n return false\n }\n}\n","import { each } from './'\n\nimport { isArray, isFile, isUndefined } from './type-utils'\nimport { logger } from './logger'\nimport { document } from './globals'\n\nconst localDomains = ['localhost', '127.0.0.1']\n\n/**\n * IE11 doesn't support `new URL`\n * so we can create an anchor element and use that to parse the URL\n * there's a lot of overlap between HTMLHyperlinkElementUtils and URL\n * meaning useful properties like `pathname` are available on both\n */\nexport const convertToURL = (url: string): HTMLAnchorElement | null => {\n const location = document?.createElement('a')\n if (isUndefined(location)) {\n return null\n }\n\n location.href = url\n return location\n}\n\nexport const formDataToQuery = function (formdata: Record<string, any> | FormData, arg_separator = '&'): string {\n let use_val: string\n let use_key: string\n const tph_arr: string[] = []\n\n each(formdata, function (val: File | string | undefined, key: string | undefined) {\n // the key might be literally the string undefined for e.g. if {undefined: 'something'}\n if (isUndefined(val) || isUndefined(key) || key === 'undefined') {\n return\n }\n\n use_val = encodeURIComponent(isFile(val) ? val.name : val.toString())\n use_key = encodeURIComponent(key)\n tph_arr[tph_arr.length] = use_key + '=' + use_val\n })\n\n return tph_arr.join(arg_separator)\n}\n\nexport const getQueryParam = function (url: string, param: string): string {\n const withoutHash: string = url.split('#')[0] || ''\n const queryParams: string = withoutHash.split('?')[1] || ''\n\n const queryParts = queryParams.split('&')\n let keyValuePair\n\n for (let i = 0; i < queryParts.length; i++) {\n const parts = queryParts[i].split('=')\n if (parts[0] === param) {\n keyValuePair = parts\n break\n }\n }\n\n if (!isArray(keyValuePair) || keyValuePair.length < 2) {\n return ''\n } else {\n let result = keyValuePair[1]\n try {\n result = decodeURIComponent(result)\n } catch {\n logger.error('Skipping decoding for malformed query param: ' + result)\n }\n return result.replace(/\\+/g, ' ')\n }\n}\n\n// replace any query params in the url with the provided mask value. Tries to keep the URL as instant as possible,\n// including preserving malformed text in most cases\nexport const maskQueryParams = function <T extends string | undefined>(\n url: T,\n maskedParams: string[] | undefined,\n mask: string\n): T extends string ? string : undefined {\n if (!url || !maskedParams || !maskedParams.length) {\n return url as any\n }\n\n const splitHash = url.split('#')\n const withoutHash: string = splitHash[0] || ''\n const hash = splitHash[1]\n\n const splitQuery: string[] = withoutHash.split('?')\n const queryString: string = splitQuery[1]\n const urlWithoutQueryAndHash: string = splitQuery[0]\n const queryParts = (queryString || '').split('&')\n\n // use an array of strings rather than an object to preserve ordering and duplicates\n const paramStrings: string[] = []\n\n for (let i = 0; i < queryParts.length; i++) {\n const keyValuePair = queryParts[i].split('=')\n if (!isArray(keyValuePair)) {\n continue\n } else if (maskedParams.includes(keyValuePair[0])) {\n paramStrings.push(keyValuePair[0] + '=' + mask)\n } else {\n paramStrings.push(queryParts[i])\n }\n }\n\n let result = urlWithoutQueryAndHash\n if (queryString != null) {\n result += '?' + paramStrings.join('&')\n }\n if (hash != null) {\n result += '#' + hash\n }\n\n return result as any\n}\n\nexport const _getHashParam = function (hash: string, param: string): string | null {\n const matches = hash.match(new RegExp(param + '=([^&]*)'))\n return matches ? matches[1] : null\n}\n\nexport const isLocalhost = (): boolean => {\n return localDomains.includes(location.hostname)\n}\n","import { addEventListener, each, extend } from './utils'\nimport {\n autocaptureCompatibleElements,\n getClassNames,\n getDirectAndNestedSpanText,\n getElementsChainString,\n getEventTarget,\n getSafeText,\n isAngularStyleAttr,\n isSensitiveElement,\n makeSafeText,\n shouldCaptureDomEvent,\n shouldCaptureElement,\n shouldCaptureValue,\n splitClassString,\n} from './autocapture-utils'\nimport RageClick from './extensions/rageclick'\nimport { AutocaptureConfig, COPY_AUTOCAPTURE_EVENT, EventName, Properties, RemoteConfig } from './types'\nimport { PostHog } from './posthog-core'\nimport { AUTOCAPTURE_DISABLED_SERVER_SIDE } from './constants'\n\nimport { isBoolean, isFunction, isNull, isObject } from './utils/type-utils'\nimport { createLogger } from './utils/logger'\nimport { document, window } from './utils/globals'\nimport { convertToURL } from './utils/request-utils'\nimport { isDocumentFragment, isElementNode, isTag, isTextNode } from './utils/element-utils'\nimport { includes } from './utils/string-utils'\n\nconst logger = createLogger('[AutoCapture]')\n\nfunction limitText(length: number, text: string): string {\n if (text.length > length) {\n return text.slice(0, length) + '...'\n }\n return text\n}\n\nexport function getAugmentPropertiesFromElement(elem: Element): Properties {\n const shouldCaptureEl = shouldCaptureElement(elem)\n if (!shouldCaptureEl) {\n return {}\n }\n\n const props: Properties = {}\n\n each(elem.attributes, function (attr: Attr) {\n if (attr.name && attr.name.indexOf('data-ph-capture-attribute') === 0) {\n const propertyKey = attr.name.replace('data-ph-capture-attribute-', '')\n const propertyValue = attr.value\n if (propertyKey && propertyValue && shouldCaptureValue(propertyValue)) {\n props[propertyKey] = propertyValue\n }\n }\n })\n\n return props\n}\n\nexport function previousElementSibling(el: Element): Element | null {\n if (el.previousElementSibling) {\n return el.previousElementSibling\n }\n let _el: Element | null = el\n do {\n _el = _el.previousSibling as Element | null // resolves to ChildNode->Node, which is Element's parent class\n } while (_el && !isElementNode(_el))\n return _el\n}\n\nexport function getDefaultProperties(eventType: string): Properties {\n return {\n $event_type: eventType,\n $ce_version: 1,\n }\n}\n\nexport function getPropertiesFromElement(\n elem: Element,\n maskAllAttributes: boolean,\n maskText: boolean,\n elementAttributeIgnorelist: string[] | undefined\n): Properties {\n const tag_name = elem.tagName.toLowerCase()\n const props: Properties = {\n tag_name: tag_name,\n }\n if (autocaptureCompatibleElements.indexOf(tag_name) > -1 && !maskText) {\n if (tag_name.toLowerCase() === 'a' || tag_name.toLowerCase() === 'button') {\n props['$el_text'] = limitText(1024, getDirectAndNestedSpanText(elem))\n } else {\n props['$el_text'] = limitText(1024, getSafeText(elem))\n }\n }\n\n const classes = getClassNames(elem)\n if (classes.length > 0)\n props['classes'] = classes.filter(function (c) {\n return c !== ''\n })\n\n // capture the deny list here because this not-a-class class makes it tricky to use this.config in the function below\n each(elem.attributes, function (attr: Attr) {\n // Only capture attributes we know are safe\n if (isSensitiveElement(elem) && ['name', 'id', 'class', 'aria-label'].indexOf(attr.name) === -1) return\n\n if (elementAttributeIgnorelist?.includes(attr.name)) return\n\n if (!maskAllAttributes && shouldCaptureValue(attr.value) && !isAngularStyleAttr(attr.name)) {\n let value = attr.value\n if (attr.name === 'class') {\n // html attributes can _technically_ contain linebreaks,\n // but we're very intolerant of them in the class string,\n // so we strip them.\n value = splitClassString(value).join(' ')\n }\n props['attr__' + attr.name] = limitText(1024, value)\n }\n })\n\n let nthChild = 1\n let nthOfType = 1\n let currentElem: Element | null = elem\n while ((currentElem = previousElementSibling(currentElem))) {\n // eslint-disable-line no-cond-assign\n nthChild++\n if (currentElem.tagName === elem.tagName) {\n nthOfType++\n }\n }\n props['nth_child'] = nthChild\n props['nth_of_type'] = nthOfType\n\n return props\n}\n\nexport function autocapturePropertiesForElement(\n target: Element,\n {\n e,\n maskAllElementAttributes,\n maskAllText,\n elementAttributeIgnoreList,\n elementsChainAsString,\n }: {\n e: Event\n maskAllElementAttributes: boolean\n maskAllText: boolean\n elementAttributeIgnoreList?: string[] | undefined\n elementsChainAsString: boolean\n }\n): { props: Properties; explicitNoCapture?: boolean } {\n const targetElementList = [target]\n let curEl = target\n while (curEl.parentNode && !isTag(curEl, 'body')) {\n if (isDocumentFragment(curEl.parentNode)) {\n targetElementList.push((curEl.parentNode as any).host)\n curEl = (curEl.parentNode as any).host\n continue\n }\n targetElementList.push(curEl.parentNode as Element)\n curEl = curEl.parentNode as Element\n }\n\n const elementsJson: Properties[] = []\n const autocaptureAugmentProperties: Properties = {}\n let href: string | false = false\n let explicitNoCapture = false\n\n each(targetElementList, (el) => {\n const shouldCaptureEl = shouldCaptureElement(el)\n\n // if the element or a parent element is an anchor tag\n // include the href as a property\n if (el.tagName.toLowerCase() === 'a') {\n href = el.getAttribute('href')\n href = shouldCaptureEl && href && shouldCaptureValue(href) && href\n }\n\n // allow users to programmatically prevent capturing of elements by adding class 'ph-no-capture'\n const classes = getClassNames(el)\n if (includes(classes, 'ph-no-capture')) {\n explicitNoCapture = true\n }\n\n elementsJson.push(\n getPropertiesFromElement(el, maskAllElementAttributes, maskAllText, elementAttributeIgnoreList)\n )\n\n const augmentProperties = getAugmentPropertiesFromElement(el)\n extend(autocaptureAugmentProperties, augmentProperties)\n })\n\n if (explicitNoCapture) {\n return { props: {}, explicitNoCapture }\n }\n\n if (!maskAllText) {\n // if the element is a button or anchor tag get the span text from any\n // children and include it as/with the text property on the parent element\n if (target.tagName.toLowerCase() === 'a' || target.tagName.toLowerCase() === 'button') {\n elementsJson[0]['$el_text'] = getDirectAndNestedSpanText(target)\n } else {\n elementsJson[0]['$el_text'] = getSafeText(target)\n }\n }\n\n let externalHref: string | undefined\n if (href) {\n elementsJson[0]['attr__href'] = href\n const hrefHost = convertToURL(href)?.host\n const locationHost = window?.location?.host\n if (hrefHost && locationHost && hrefHost !== locationHost) {\n externalHref = href\n }\n }\n\n const props = extend(\n getDefaultProperties(e.type),\n // Sending \"$elements\" is deprecated. Only one client on US cloud uses this.\n !elementsChainAsString ? { $elements: elementsJson } : {},\n // Always send $elements_chain, as it's needed downstream in site app filtering\n { $elements_chain: getElementsChainString(elementsJson) },\n elementsJson[0]?.['$el_text'] ? { $el_text: elementsJson[0]?.['$el_text'] } : {},\n externalHref && e.type === 'click' ? { $external_click_url: externalHref } : {},\n autocaptureAugmentProperties\n )\n\n return { props }\n}\n\nexport class Autocapture {\n instance: PostHog\n _initialized: boolean = false\n _isDisabledServerSide: boolean | null = null\n _elementSelectors: Set<string> | null\n rageclicks = new RageClick()\n _elementsChainAsString = false\n\n constructor(instance: PostHog) {\n this.instance = instance\n this._elementSelectors = null\n }\n\n private get config(): AutocaptureConfig {\n const config = isObject(this.instance.config.autocapture) ? this.instance.config.autocapture : {}\n // precompile the regex\n config.url_allowlist = config.url_allowlist?.map((url) => new RegExp(url))\n config.url_ignorelist = config.url_ignorelist?.map((url) => new RegExp(url))\n return config\n }\n\n _addDomEventHandlers(): void {\n if (!this.isBrowserSupported()) {\n logger.info('Disabling Automatic Event Collection because this browser is not supported')\n return\n }\n\n if (!window || !document) {\n return\n }\n\n const handler = (e: Event) => {\n e = e || window?.event\n try {\n this._captureEvent(e)\n } catch (error) {\n logger.error('Failed to capture event', error)\n }\n }\n\n addEventListener(document, 'submit', handler, { capture: true })\n addEventListener(document, 'change', handler, { capture: true })\n addEventListener(document, 'click', handler, { capture: true })\n\n if (this.config.capture_copied_text) {\n const copiedTextHandler = (e: Event) => {\n e = e || window?.event\n this._captureEvent(e, COPY_AUTOCAPTURE_EVENT)\n }\n\n addEventListener(document, 'copy', copiedTextHandler, { capture: true })\n addEventListener(document, 'cut', copiedTextHandler, { capture: true })\n }\n }\n\n public startIfEnabled() {\n if (this.isEnabled && !this._initialized) {\n this._addDomEventHandlers()\n this._initialized = true\n }\n }\n\n public onRemoteConfig(response: RemoteConfig) {\n if (response.elementsChainAsString) {\n this._elementsChainAsString = response.elementsChainAsString\n }\n\n if (this.instance.persistence) {\n this.instance.persistence.register({\n [AUTOCAPTURE_DISABLED_SERVER_SIDE]: !!response['autocapture_opt_out'],\n })\n }\n // store this in-memory in case persistence is disabled\n this._isDisabledServerSide = !!response['autocapture_opt_out']\n this.startIfEnabled()\n }\n\n public setElementSelectors(selectors: Set<string>): void {\n this._elementSelectors = selectors\n }\n\n public getElementSelectors(element: Element | null): string[] | null {\n const elementSelectors: string[] = []\n\n this._elementSelectors?.forEach((selector) => {\n const matchedElements = document?.querySelectorAll(selector)\n matchedElements?.forEach((matchedElement: Element) => {\n if (element === matchedElement) {\n elementSelectors.push(selector)\n }\n })\n })\n\n return elementSelectors\n }\n\n public get isEnabled(): boolean {\n const persistedServerDisabled = this.instance.persistence?.props[AUTOCAPTURE_DISABLED_SERVER_SIDE]\n const memoryDisabled = this._isDisabledServerSide\n\n if (\n isNull(memoryDisabled) &&\n !isBoolean(persistedServerDisabled) &&\n !this.instance.config.advanced_disable_decide\n ) {\n // We only enable if we know that the server has not disabled it (unless decide is disabled)\n return false\n }\n\n const disabledServer = this._isDisabledServerSide ?? !!persistedServerDisabled\n const disabledClient = !this.instance.config.autocapture\n return !disabledClient && !disabledServer\n }\n\n private _captureEvent(e: Event, eventName: EventName = '$autocapture'): boolean | void {\n if (!this.isEnabled) {\n return\n }\n\n /*** Don't mess with this code without running IE8 tests on it ***/\n let target = getEventTarget(e)\n if (isTextNode(target)) {\n // defeat Safari bug (see: http://www.quirksmode.org/js/events_properties.html)\n target = (target.parentNode || null) as Element | null\n }\n\n if (eventName === '$autocapture' && e.type === 'click' && e instanceof MouseEvent) {\n if (\n this.instance.config.rageclick &&\n this.rageclicks?.isRageClick(e.clientX, e.clientY, new Date().getTime())\n ) {\n this._captureEvent(e, '$rageclick')\n }\n }\n\n const isCopyAutocapture = eventName === COPY_AUTOCAPTURE_EVENT\n if (\n target &&\n shouldCaptureDomEvent(\n target,\n e,\n this.config,\n // mostly this method cares about the target element, but in the case of copy events,\n // we want some of the work this check does without insisting on the target element's type\n isCopyAutocapture,\n // we also don't want to restrict copy checks to clicks,\n // so we pass that knowledge in here, rather than add the logic inside the check\n isCopyAutocapture ? ['copy', 'cut'] : undefined\n )\n ) {\n const { props, explicitNoCapture } = autocapturePropertiesForElement(target, {\n e,\n maskAllElementAttributes: this.instance.config.mask_all_element_attributes,\n maskAllText: this.instance.config.mask_all_text,\n elementAttributeIgnoreList: this.config.element_attribute_ignorelist,\n elementsChainAsString: this._elementsChainAsString,\n })\n\n if (explicitNoCapture) {\n return false\n }\n\n const elementSelectors = this.getElementSelectors(target)\n if (elementSelectors && elementSelectors.length > 0) {\n props['$element_selectors'] = elementSelectors\n }\n\n if (eventName === COPY_AUTOCAPTURE_EVENT) {\n // you can't read the data from the clipboard event,\n // but you can guess that you can read it from the window's current selection\n const selectedContent = makeSafeText(window?.getSelection()?.toString())\n const clipType = (e as ClipboardEvent).type || 'clipboard'\n if (!selectedContent) {\n return false\n }\n props['$selected_content'] = selectedContent\n props['$copy_type'] = clipType\n }\n\n this.instance.capture(eventName, props)\n return true\n }\n }\n\n isBrowserSupported(): boolean {\n return isFunction(document?.querySelectorAll)\n }\n}\n","/**\n * uuidv7: An experimental implementation of the proposed UUID Version 7\n *\n * @license Apache-2.0\n * @copyright 2021-2023 LiosK\n * @packageDocumentation\n *\n * from https://github.com/LiosK/uuidv7/blob/e501462ea3d23241de13192ceae726956f9b3b7d/src/index.ts\n */\n\n// polyfill for IE11\nimport { window } from './utils/globals'\n\nimport { isNumber, isUndefined } from './utils/type-utils'\n\nif (!Math.trunc) {\n Math.trunc = function (v) {\n return v < 0 ? Math.ceil(v) : Math.floor(v)\n }\n}\n\n// polyfill for IE11\nif (!Number.isInteger) {\n Number.isInteger = function (value) {\n return isNumber(value) && isFinite(value) && Math.floor(value) === value\n }\n}\n\nconst DIGITS = '0123456789abcdef'\n\n/** Represents a UUID as a 16-byte byte array. */\nexport class UUID {\n /** @param bytes - The 16-byte byte array representation. */\n constructor(readonly bytes: Readonly<Uint8Array>) {\n if (bytes.length !== 16) {\n throw new TypeError('not 128-bit length')\n }\n }\n\n /**\n * Builds a byte array from UUIDv7 field values.\n *\n * @param unixTsMs - A 48-bit `unix_ts_ms` field value.\n * @param randA - A 12-bit `rand_a` field value.\n * @param randBHi - The higher 30 bits of 62-bit `rand_b` field value.\n * @param randBLo - The lower 32 bits of 62-bit `rand_b` field value.\n */\n static fromFieldsV7(unixTsMs: number, randA: number, randBHi: number, randBLo: number): UUID {\n if (\n !Number.isInteger(unixTsMs) ||\n !Number.isInteger(randA) ||\n !Number.isInteger(randBHi) ||\n !Number.isInteger(randBLo) ||\n unixTsMs < 0 ||\n randA < 0 ||\n randBHi < 0 ||\n randBLo < 0 ||\n unixTsMs > 0xffff_ffff_ffff ||\n randA > 0xfff ||\n randBHi > 0x3fff_ffff ||\n randBLo > 0xffff_ffff\n ) {\n throw new RangeError('invalid field value')\n }\n\n const bytes = new Uint8Array(16)\n bytes[0] = unixTsMs / 2 ** 40\n bytes[1] = unixTsMs / 2 ** 32\n bytes[2] = unixTsMs / 2 ** 24\n bytes[3] = unixTsMs / 2 ** 16\n bytes[4] = unixTsMs / 2 ** 8\n bytes[5] = unixTsMs\n bytes[6] = 0x70 | (randA >>> 8)\n bytes[7] = randA\n bytes[8] = 0x80 | (randBHi >>> 24)\n bytes[9] = randBHi >>> 16\n bytes[10] = randBHi >>> 8\n bytes[11] = randBHi\n bytes[12] = randBLo >>> 24\n bytes[13] = randBLo >>> 16\n bytes[14] = randBLo >>> 8\n bytes[15] = randBLo\n return new UUID(bytes)\n }\n\n /** @returns The 8-4-4-4-12 canonical hexadecimal string representation. */\n toString(): string {\n let text = ''\n for (let i = 0; i < this.bytes.length; i++) {\n text = text + DIGITS.charAt(this.bytes[i] >>> 4) + DIGITS.charAt(this.bytes[i] & 0xf)\n if (i === 3 || i === 5 || i === 7 || i === 9) {\n text += '-'\n }\n }\n\n if (text.length !== 36) {\n // We saw one customer whose bundling code was mangling the UUID generation\n // rather than accept a bad UUID, we throw an error here.\n throw new Error('Invalid UUIDv7 was generated')\n }\n return text\n }\n\n /** Creates an object from `this`. */\n clone(): UUID {\n return new UUID(this.bytes.slice(0))\n }\n\n /** Returns true if `this` is equivalent to `other`. */\n equals(other: UUID): boolean {\n return this.compareTo(other) === 0\n }\n\n /**\n * Returns a negative integer, zero, or positive integer if `this` is less\n * than, equal to, or greater than `other`, respectively.\n */\n compareTo(other: UUID): number {\n for (let i = 0; i < 16; i++) {\n const diff = this.bytes[i] - other.bytes[i]\n if (diff !== 0) {\n return Math.sign(diff)\n }\n }\n return 0\n }\n}\n\n/** Encapsulates the monotonic counter state. */\nclass V7Generator {\n private timestamp = 0\n private counter = 0\n private readonly random = new DefaultRandom()\n\n /**\n * Generates a new UUIDv7 object from the current timestamp, or resets the\n * generator upon significant timestamp rollback.\n *\n * This method returns monotonically increasing UUIDs unless the up-to-date\n * timestamp is significantly (by ten seconds or more) smaller than the one\n * embedded in the immediately preceding UUID. If such a significant clock\n * rollback is detected, this method resets the generator and returns a new\n * UUID based on the current timestamp.\n */\n generate(): UUID {\n const value = this.generateOrAbort()\n if (!isUndefined(value)) {\n return value\n } else {\n // reset state and resume\n this.timestamp = 0\n const valueAfterReset = this.generateOrAbort()\n if (isUndefined(valueAfterReset)) {\n throw new Error('Could not generate UUID after timestamp reset')\n }\n return valueAfterReset\n }\n }\n\n /**\n * Generates a new UUIDv7 object from the current timestamp, or returns\n * `undefined` upon significant timestamp rollback.\n *\n * This method returns monotonically increasing UUIDs unless the up-to-date\n * timestamp is significantly (by ten seconds or more) smaller than the one\n * embedded in the immediately preceding UUID. If such a significant clock\n * rollback is detected, this method aborts and returns `undefined`.\n */\n generateOrAbort(): UUID | undefined {\n const MAX_COUNTER = 0x3ff_ffff_ffff\n const ROLLBACK_ALLOWANCE = 10_000 // 10 seconds\n\n const ts = Date.now()\n if (ts > this.timestamp) {\n this.timestamp = ts\n this.resetCounter()\n } else if (ts + ROLLBACK_ALLOWANCE > this.timestamp) {\n // go on with previous timestamp if new one is not much smaller\n this.counter++\n if (this.counter > MAX_COUNTER) {\n // increment timestamp at counter overflow\n this.timestamp++\n this.resetCounter()\n }\n } else {\n // abort if clock went backwards to unbearable extent\n return undefined\n }\n\n return UUID.fromFieldsV7(\n this.timestamp,\n Math.trunc(this.counter / 2 ** 30),\n this.counter & (2 ** 30 - 1),\n this.random.nextUint32()\n )\n }\n\n /** Initializes the counter at a 42-bit random integer. */\n private resetCounter(): void {\n this.counter = this.random.nextUint32() * 0x400 + (this.random.nextUint32() & 0x3ff)\n }\n}\n\n/** A global flag to force use of cryptographically strong RNG. */\ndeclare const UUIDV7_DENY_WEAK_RNG: boolean\n\n/** Stores `crypto.getRandomValues()` available in the environment. */\nlet getRandomValues: <T extends Uint8Array | Uint32Array>(buffer: T) => T = (buffer) => {\n // fall back on Math.random() unless the flag is set to true\n // TRICKY: don't use the isUndefined method here as can't pass the reference\n if (typeof UUIDV7_DENY_WEAK_RNG !== 'undefined' && UUIDV7_DENY_WEAK_RNG) {\n throw new Error('no cryptographically strong RNG available')\n }\n\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] = Math.trunc(Math.random() * 0x1_0000) * 0x1_0000 + Math.trunc(Math.random() * 0x1_0000)\n }\n return buffer\n}\n\n// detect Web Crypto API\nif (window && !isUndefined(window.crypto) && crypto.getRandomValues) {\n getRandomValues = (buffer) => crypto.getRandomValues(buffer)\n}\n\n/**\n * Wraps `crypto.getRandomValues()` and compatibles to enable buffering; this\n * uses a small buffer by default to avoid unbearable throughput decline in some\n * environments as well as the waste of time and space for unused values.\n */\nclass DefaultRandom {\n private readonly buffer = new Uint32Array(8)\n private cursor = Infinity\n nextUint32(): number {\n if (this.cursor >= this.buffer.length) {\n getRandomValues(this.buffer)\n this.cursor = 0\n }\n return this.buffer[this.cursor++]\n }\n}\n\nlet defaultGenerator: V7Generator | undefined\n\n/**\n * Generates a UUIDv7 string.\n *\n * @returns The 8-4-4-4-12 canonical hexadecimal string representation\n * (\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\").\n */\nexport const uuidv7 = (): string => uuidv7obj().toString()\n\n/** Generates a UUIDv7 object. */\nconst uuidv7obj = (): UUID => (defaultGenerator || (defaultGenerator = new V7Generator())).generate()\n\nexport const uuid7ToTimestampMs = (uuid: string): number => {\n // remove hyphens\n const hex = uuid.replace(/-/g, '')\n // ensure that it's a version 7 UUID\n if (hex.length !== 32) {\n throw new Error('Not a valid UUID')\n }\n if (hex[12] !== '7') {\n throw new Error('Not a UUIDv7')\n }\n // the first 6 bytes are the timestamp, which means that we can read only the first 12 hex characters\n return parseInt(hex.substring(0, 12), 16)\n}\n","import { extend } from './utils'\nimport { PersistentStore, Properties } from './types'\nimport {\n DISTINCT_ID,\n ENABLE_PERSON_PROCESSING,\n INITIAL_PERSON_INFO,\n SESSION_ID,\n SESSION_RECORDING_IS_SAMPLED,\n} from './constants'\n\nimport { isNull, isUndefined } from './utils/type-utils'\nimport { logger } from './utils/logger'\nimport { window, document } from './utils/globals'\nimport { uuidv7 } from './uuidv7'\n\nconst Y1970 = 'Thu, 01 Jan 1970 00:00:00 GMT'\n// we store the discovered subdomain in memory because it might be read multiple times\nlet firstNonPublicSubDomain = ''\n\n// helper to allow tests to clear this \"cache\"\nexport const resetSubDomainCache = () => {\n firstNonPublicSubDomain = ''\n}\n\n/**\n * Browsers don't offer a way to check if something is a public suffix\n * e.g. `.com.au`, `.io`, `.org.uk`\n *\n * But they do reject cookies set on public suffixes\n * Setting a cookie on `.co.uk` would mean it was sent for every `.co.uk` site visited\n *\n * So, we can use this to check if a domain is a public suffix\n * by trying to set a cookie on a subdomain of the provided hostname\n * until the browser accepts it\n *\n * inspired by https://github.com/AngusFu/browser-root-domain\n */\nexport function seekFirstNonPublicSubDomain(hostname: string, cookieJar = document): string {\n if (firstNonPublicSubDomain) {\n return firstNonPublicSubDomain\n }\n\n if (!cookieJar) {\n return ''\n }\n if (['localhost', '127.0.0.1'].includes(hostname)) return ''\n\n const list = hostname.split('.')\n let len = Math.min(list.length, 8) // paranoia - we know this number should be small\n const key = 'dmn_chk_' + uuidv7()\n const R = new RegExp('(^|;)\\\\s*' + key + '=1')\n\n while (!firstNonPublicSubDomain && len--) {\n const candidate = list.slice(len).join('.')\n const candidateCookieValue = key + '=1;domain=.' + candidate\n\n // try to set cookie\n cookieJar.cookie = candidateCookieValue\n\n if (R.test(cookieJar.cookie)) {\n // the cookie was accepted by the browser, remove the test cookie\n cookieJar.cookie = candidateCookieValue + ';expires=' + Y1970\n firstNonPublicSubDomain = candidate\n }\n }\n\n return firstNonPublicSubDomain\n}\n\nconst DOMAIN_MATCH_REGEX = /[a-z0-9][a-z0-9-]+\\.[a-z]{2,}$/i\nconst originalCookieDomainFn = (hostname: string): string => {\n const matches = hostname.match(DOMAIN_MATCH_REGEX)\n return matches ? matches[0] : ''\n}\n\nexport function chooseCookieDomain(hostname: string, cross_subdomain: boolean | undefined): string {\n if (cross_subdomain) {\n // NOTE: Could we use this for cross domain tracking?\n let matchedSubDomain = seekFirstNonPublicSubDomain(hostname)\n\n if (!matchedSubDomain) {\n const originalMatch = originalCookieDomainFn(hostname)\n if (originalMatch !== matchedSubDomain) {\n logger.info('Warning: cookie subdomain discovery mismatch', originalMatch, matchedSubDomain)\n }\n matchedSubDomain = originalMatch\n }\n\n return matchedSubDomain ? '; domain=.' + matchedSubDomain : ''\n }\n return ''\n}\n\n// Methods partially borrowed from quirksmode.org/js/cookies.html\nexport const cookieStore: PersistentStore = {\n is_supported: () => !!document,\n\n error: function (msg) {\n logger.error('cookieStore error: ' + msg)\n },\n\n get: function (name) {\n if (!document) {\n return\n }\n\n try {\n const nameEQ = name + '='\n const ca = document.cookie.split(';').filter((x) => x.length)\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i]\n while (c.charAt(0) == ' ') {\n c = c.substring(1, c.length)\n }\n if (c.indexOf(nameEQ) === 0) {\n return decodeURIComponent(c.substring(nameEQ.length, c.length))\n }\n }\n } catch {}\n return null\n },\n\n parse: function (name) {\n let cookie\n try {\n cookie = JSON.parse(cookieStore.get(name)) || {}\n } catch {\n // noop\n }\n return cookie\n },\n\n set: function (name, value, days, cross_subdomain, is_secure) {\n if (!document) {\n return\n }\n try {\n let expires = '',\n secure = ''\n\n const cdomain = chooseCookieDomain(document.location.hostname, cross_subdomain)\n\n if (days) {\n const date = new Date()\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000)\n expires = '; expires=' + date.toUTCString()\n }\n\n if (is_secure) {\n secure = '; secure'\n }\n\n const new_cookie_val =\n name +\n '=' +\n encodeURIComponent(JSON.stringify(value)) +\n expires +\n '; SameSite=Lax; path=/' +\n cdomain +\n secure\n\n // 4096 bytes is the size at which some browsers (e.g. firefox) will not store a cookie, warn slightly before that\n if (new_cookie_val.length > 4096 * 0.9) {\n logger.warn('cookieStore warning: large cookie, len=' + new_cookie_val.length)\n }\n\n document.cookie = new_cookie_val\n return new_cookie_val\n } catch {\n return\n }\n },\n\n remove: function (name, cross_subdomain) {\n try {\n cookieStore.set(name, '', -1, cross_subdomain)\n } catch {\n return\n }\n },\n}\n\nlet _localStorage_supported: boolean | null = null\n\nexport const localStore: PersistentStore = {\n is_supported: function () {\n if (!isNull(_localStorage_supported)) {\n return _localStorage_supported\n }\n\n let supported = true\n if (!isUndefined(window)) {\n try {\n const key = '__mplssupport__',\n val = 'xyz'\n localStore.set(key, val)\n if (localStore.get(key) !== '\"xyz\"') {\n supported = false\n }\n localStore.remove(key)\n } catch {\n supported = false\n }\n } else {\n supported = false\n }\n if (!supported) {\n logger.error('localStorage unsupported; falling back to cookie store')\n }\n\n _localStorage_supported = supported\n return supported\n },\n\n error: function (msg) {\n logger.error('localStorage error: ' + msg)\n },\n\n get: function (name) {\n try {\n return window?.localStorage.getItem(name)\n } catch (err) {\n localStore.error(err)\n }\n return null\n },\n\n parse: function (name) {\n try {\n return JSON.parse(localStore.get(name)) || {}\n } catch {\n // noop\n }\n return null\n },\n\n set: function (name, value) {\n try {\n window?.localStorage.setItem(name, JSON.stringify(value))\n } catch (err) {\n localStore.error(err)\n }\n },\n\n remove: function (name) {\n try {\n window?.localStorage.removeItem(name)\n } catch (err) {\n localStore.error(err)\n }\n },\n}\n\n// Use localstorage for most data but still use cookie for COOKIE_PERSISTED_PROPERTIES\n// This solves issues with cookies having too much data in them causing headers too large\n// Also makes sure we don't have to send a ton of data to the server\nconst COOKIE_PERSISTED_PROPERTIES = [\n DISTINCT_ID,\n SESSION_ID,\n SESSION_RECORDING_IS_SAMPLED,\n ENABLE_PERSON_PROCESSING,\n INITIAL_PERSON_INFO,\n]\n\nexport const localPlusCookieStore: PersistentStore = {\n ...localStore,\n parse: function (name) {\n try {\n let cookieProperties: Properties = {}\n try {\n // See if there's a cookie stored with data.\n cookieProperties = cookieStore.parse(name) || {}\n } catch {}\n const value = extend(cookieProperties, JSON.parse(localStore.get(name) || '{}'))\n localStore.set(name, value)\n return value\n } catch {\n // noop\n }\n return null\n },\n\n set: function (name, value, days, cross_subdomain, is_secure, debug) {\n try {\n localStore.set(name, value, undefined, undefined, debug)\n const cookiePersistedProperties: Record<string, any> = {}\n COOKIE_PERSISTED_PROPERTIES.forEach((key) => {\n if (value[key]) {\n cookiePersistedProperties[key] = value[key]\n }\n })\n\n if (Object.keys(cookiePersistedProperties).length) {\n cookieStore.set(name, cookiePersistedProperties, days, cross_subdomain, is_secure, debug)\n }\n } catch (err) {\n localStore.error(err)\n }\n },\n\n remove: function (name, cross_subdomain) {\n try {\n window?.localStorage.removeItem(name)\n cookieStore.remove(name, cross_subdomain)\n } catch (err) {\n localStore.error(err)\n }\n },\n}\n\nconst memoryStorage: Properties = {}\n\n// Storage that only lasts the length of the pageview if we don't want to use cookies\nexport const memoryStore: PersistentStore = {\n is_supported: function () {\n return true\n },\n\n error: function (msg) {\n logger.error('memoryStorage error: ' + msg)\n },\n\n get: function (name) {\n return memoryStorage[name] || null\n },\n\n parse: function (name) {\n return memoryStorage[name] || null\n },\n\n set: function (name, value) {\n memoryStorage[name] = value\n },\n\n remove: function (name) {\n delete memoryStorage[name]\n },\n}\n\nlet sessionStorageSupported: boolean | null = null\nexport const resetSessionStorageSupported = () => {\n sessionStorageSupported = null\n}\n// Storage that only lasts the length of a tab/window. Survives page refreshes\nexport const sessionStore: PersistentStore = {\n is_supported: function () {\n if (!isNull(sessionStorageSupported)) {\n return sessionStorageSupported\n }\n sessionStorageSupported = true\n if (!isUndefined(window)) {\n try {\n const key = '__support__',\n val = 'xyz'\n sessionStore.set(key, val)\n if (sessionStore.get(key) !== '\"xyz\"') {\n sessionStorageSupported = false\n }\n sessionStore.remove(key)\n } catch {\n sessionStorageSupported = false\n }\n } else {\n sessionStorageSupported = false\n }\n return sessionStorageSupported\n },\n\n error: function (msg) {\n logger.error('sessionStorage error: ', msg)\n },\n\n get: function (name) {\n try {\n return window?.sessionStorage.getItem(name)\n } catch (err) {\n sessionStore.error(err)\n }\n return null\n },\n\n parse: function (name) {\n try {\n return JSON.parse(sessionStore.get(name)) || null\n } catch {\n // noop\n }\n return null\n },\n\n set: function (name, value) {\n try {\n window?.sessionStorage.setItem(name, JSON.stringify(value))\n } catch (err) {\n sessionStore.error(err)\n }\n },\n\n remove: function (name) {\n try {\n window?.sessionStorage.removeItem(name)\n } catch (err) {\n sessionStore.error(err)\n }\n },\n}\n","import { PostHog } from './posthog-core'\nimport { find } from './utils'\nimport { assignableWindow, navigator } from './utils/globals'\nimport { cookieStore, localStore } from './storage'\nimport { PersistentStore } from './types'\nimport { includes } from './utils/string-utils'\n\nconst OPT_OUT_PREFIX = '__ph_opt_in_out_'\n\nexport enum ConsentStatus {\n PENDING = -1,\n DENIED = 0,\n GRANTED = 1,\n}\n\n/**\n * ConsentManager provides tools for managing user consent as configured by the application.\n */\nexport class ConsentManager {\n private _storage?: PersistentStore\n\n constructor(private instance: PostHog) {}\n\n private get config() {\n return this.instance.config\n }\n\n public get consent(): ConsentStatus {\n if (this.getDnt()) {\n return ConsentStatus.DENIED\n }\n\n return this.storedConsent\n }\n\n public isOptedOut() {\n return (\n this.consent === ConsentStatus.DENIED ||\n (this.consent === ConsentStatus.PENDING && this.config.opt_out_capturing_by_default)\n )\n }\n\n public isOptedIn() {\n return !this.isOptedOut()\n }\n\n public optInOut(isOptedIn: boolean) {\n this.storage.set(\n this.storageKey,\n isOptedIn ? 1 : 0,\n this.config.cookie_expiration,\n this.config.cross_subdomain_cookie,\n this.config.secure_cookie\n )\n }\n\n public reset() {\n this.storage.remove(this.storageKey, this.config.cross_subdomain_cookie)\n }\n\n private get storageKey() {\n const { token, opt_out_capturing_cookie_prefix } = this.instance.config\n return (opt_out_capturing_cookie_prefix || OPT_OUT_PREFIX) + token\n }\n\n private get storedConsent(): ConsentStatus {\n const value = this.storage.get(this.storageKey)\n return value === '1' ? ConsentStatus.GRANTED : value === '0' ? ConsentStatus.DENIED : ConsentStatus.PENDING\n }\n\n private get storage() {\n if (!this._storage) {\n const persistenceType = this.config.opt_out_capturing_persistence_type\n this._storage = persistenceType === 'localStorage' ? localStore : cookieStore\n const otherStorage = persistenceType === 'localStorage' ? cookieStore : localStore\n\n if (otherStorage.get(this.storageKey)) {\n if (!this._storage.get(this.storageKey)) {\n // This indicates we have moved to a new storage format so we migrate the value over\n this.optInOut(otherStorage.get(this.storageKey) === '1')\n }\n\n otherStorage.remove(this.storageKey, this.config.cross_subdomain_cookie)\n }\n }\n\n return this._storage\n }\n\n private getDnt(): boolean {\n if (!this.config.respect_dnt) {\n return false\n }\n return !!find(\n [\n navigator?.doNotTrack, // standard\n (navigator as any)?.['msDoNotTrack'],\n assignableWindow['doNotTrack'],\n ],\n (dntValue): boolean => {\n return includes([true, 1, '1', 'yes'], dntValue)\n }\n )\n }\n}\n","import { PostHog } from '../posthog-core'\nimport { DEAD_CLICKS_ENABLED_SERVER_SIDE } from '../constants'\nimport { isBoolean, isObject } from '../utils/type-utils'\nimport { assignableWindow, document, LazyLoadedDeadClicksAutocaptureInterface } from '../utils/globals'\nimport { createLogger } from '../utils/logger'\nimport { DeadClicksAutoCaptureConfig, RemoteConfig } from '../types'\n\nconst logger = createLogger('[Dead Clicks]')\n\nexport const isDeadClicksEnabledForHeatmaps = () => {\n return true\n}\nexport const isDeadClicksEnabledForAutocapture = (instance: DeadClicksAutocapture) => {\n const isRemoteEnabled = !!instance.instance.persistence?.get_property(DEAD_CLICKS_ENABLED_SERVER_SIDE)\n const clientConfig = instance.instance.config.capture_dead_clicks\n return isBoolean(clientConfig) ? clientConfig : isRemoteEnabled\n}\n\nexport class DeadClicksAutocapture {\n get lazyLoadedDeadClicksAutocapture(): LazyLoadedDeadClicksAutocaptureInterface | undefined {\n return this._lazyLoadedDeadClicksAutocapture\n }\n\n private _lazyLoadedDeadClicksAutocapture: LazyLoadedDeadClicksAutocaptureInterface | undefined\n\n constructor(\n readonly instance: PostHog,\n readonly isEnabled: (dca: DeadClicksAutocapture) => boolean,\n readonly onCapture?: DeadClicksAutoCaptureConfig['__onCapture']\n ) {\n this.startIfEnabled()\n }\n\n public onRemoteConfig(response: RemoteConfig) {\n if (this.instance.persistence) {\n this.instance.persistence.register({\n [DEAD_CLICKS_ENABLED_SERVER_SIDE]: response?.captureDeadClicks,\n })\n }\n this.startIfEnabled()\n }\n\n public startIfEnabled() {\n if (this.isEnabled(this)) {\n this.loadScript(() => {\n this.start()\n })\n }\n }\n\n private loadScript(cb: () => void): void {\n if (assignableWindow.__PosthogExtensions__?.initDeadClicksAutocapture) {\n // already loaded\n cb()\n }\n assignableWindow.__PosthogExtensions__?.loadExternalDependency?.(\n this.instance,\n 'dead-clicks-autocapture',\n (err) => {\n if (err) {\n logger.error('failed to load script', err)\n return\n }\n cb()\n }\n )\n }\n\n private start() {\n if (!document) {\n logger.error('`document` not found. Cannot start.')\n return\n }\n\n if (\n !this._lazyLoadedDeadClicksAutocapture &&\n assignableWindow.__PosthogExtensions__?.initDeadClicksAutocapture\n ) {\n const config = isObject(this.instance.config.capture_dead_clicks)\n ? this.instance.config.capture_dead_clicks\n : {}\n config.__onCapture = this.onCapture\n\n this._lazyLoadedDeadClicksAutocapture = assignableWindow.__PosthogExtensions__.initDeadClicksAutocapture(\n this.instance,\n config\n )\n this._lazyLoadedDeadClicksAutocapture.start(document)\n logger.info(`starting...`)\n }\n }\n\n stop() {\n if (this._lazyLoadedDeadClicksAutocapture) {\n this._lazyLoadedDeadClicksAutocapture.stop()\n this._lazyLoadedDeadClicksAutocapture = undefined\n logger.info(`stopping...`)\n }\n }\n}\n","import { assignableWindow, window } from '../../utils/globals'\nimport { PostHog } from '../../posthog-core'\nimport { Properties, RemoteConfig } from '../../types'\n\nimport { createLogger } from '../../utils/logger'\nimport { EXCEPTION_CAPTURE_ENABLED_SERVER_SIDE } from '../../constants'\nimport { isBoolean, isUndefined } from '../../utils/type-utils'\n\nconst logger = createLogger('[ExceptionAutocapture]')\n\nexport class ExceptionObserver {\n instance: PostHog\n remoteEnabled: boolean | undefined\n private unwrapOnError: (() => void) | undefined\n private unwrapUnhandledRejection: (() => void) | undefined\n\n constructor(instance: PostHog) {\n this.instance = instance\n this.remoteEnabled = !!this.instance.persistence?.props[EXCEPTION_CAPTURE_ENABLED_SERVER_SIDE]\n\n this.startIfEnabled()\n }\n\n public get isEnabled(): boolean {\n if (isBoolean(this.instance.config.capture_exceptions)) {\n return this.instance.config.capture_exceptions\n }\n return this.remoteEnabled ?? false\n }\n\n get hasHandlers() {\n return !isUndefined(this.unwrapOnError)\n }\n\n startIfEnabled(): void {\n if (this.isEnabled && !this.hasHandlers) {\n logger.info('enabled, starting...')\n this.loadScript(this.startCapturing)\n }\n }\n\n private loadScript(cb: () => void): void {\n if (this.hasHandlers) {\n // already loaded\n cb()\n }\n\n assignableWindow.__PosthogExtensions__?.loadExternalDependency?.(\n this.instance,\n 'exception-autocapture',\n (err) => {\n if (err) {\n return logger.error('failed to load script', err)\n }\n cb()\n }\n )\n }\n\n private startCapturing = () => {\n if (!window || !this.isEnabled || this.hasHandlers) {\n return\n }\n\n const wrapOnError = assignableWindow.__PosthogExtensions__?.errorWrappingFunctions?.wrapOnError\n const wrapUnhandledRejection =\n assignableWindow.__PosthogExtensions__?.errorWrappingFunctions?.wrapUnhandledRejection\n\n if (!wrapOnError || !wrapUnhandledRejection) {\n logger.error('failed to load error wrapping functions - cannot start')\n return\n }\n\n try {\n this.unwrapOnError = wrapOnError(this.captureException.bind(this))\n this.unwrapUnhandledRejection = wrapUnhandledRejection(this.captureException.bind(this))\n } catch (e) {\n logger.error('failed to start', e)\n this.stopCapturing()\n }\n }\n\n private stopCapturing() {\n this.unwrapOnError?.()\n this.unwrapOnError = undefined\n\n this.unwrapUnhandledRejection?.()\n this.unwrapUnhandledRejection = undefined\n }\n\n onRemoteConfig(response: RemoteConfig) {\n const autocaptureExceptionsResponse = response.autocaptureExceptions\n\n // store this in-memory in case persistence is disabled\n this.remoteEnabled = !!autocaptureExceptionsResponse || false\n\n if (this.instance.persistence) {\n this.instance.persistence.register({\n [EXCEPTION_CAPTURE_ENABLED_SERVER_SIDE]: this.remoteEnabled,\n })\n }\n\n this.startIfEnabled()\n }\n\n captureException(errorProperties: Properties) {\n const posthogHost = this.instance.requestRouter.endpointFor('ui')\n\n errorProperties.$exception_personURL = `${posthogHost}/project/${\n this.instance.config.token\n }/person/${this.instance.get_distinct_id()}`\n\n this.instance.exceptions.sendExceptionEvent(errorProperties)\n }\n}\n","import type { eventWithTime, pluginEvent } from '@rrweb/types'\n\nimport { isObject } from '../../utils/type-utils'\nimport { SnapshotBuffer } from './sessionrecording'\n\n// taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value#circular_references\nexport function circularReferenceReplacer() {\n const ancestors: any[] = []\n return function (this: any, _key: string, value: any) {\n if (isObject(value)) {\n // `this` is the object that value is contained in,\n // i.e., its direct parent.\n while (ancestors.length > 0 && ancestors[ancestors.length - 1] !== this) {\n ancestors.pop()\n }\n if (ancestors.includes(value)) {\n return '[Circular]'\n }\n ancestors.push(value)\n return value\n } else {\n return value\n }\n }\n}\n\nexport function estimateSize(sizeable: unknown): number {\n return JSON.stringify(sizeable, circularReferenceReplacer())?.length || 0\n}\n\nexport const replacementImageURI =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNOCAwSDE2TDAgMTZWOEw4IDBaIiBmaWxsPSIjMkQyRDJEIi8+CjxwYXRoIGQ9Ik0xNiA4VjE2SDhMMTYgOFoiIGZpbGw9IiMyRDJEMkQiLz4KPC9zdmc+Cg=='\n\nexport const FULL_SNAPSHOT_EVENT_TYPE = 2\nexport const META_EVENT_TYPE = 4\nexport const INCREMENTAL_SNAPSHOT_EVENT_TYPE = 3\nexport const PLUGIN_EVENT_TYPE = 6\nexport const MUTATION_SOURCE_TYPE = 0\n\nexport const MAX_MESSAGE_SIZE = 5000000 // ~5mb\n\n/*\n * Check whether a data payload is nearing 5mb. If it is, it checks the data for\n * data URIs (the likely culprit for large payloads). If it finds data URIs, it either replaces\n * it with a generic image (if it's an image) or removes it.\n * @data {object} the rr-web data object\n * @returns {object} the rr-web data object with data uris filtered out\n */\nexport function ensureMaxMessageSize(data: eventWithTime): { event: eventWithTime; size: number } {\n let stringifiedData = JSON.stringify(data)\n // Note: with compression, this limit may be able to be increased\n // but we're assuming most of the size is from a data uri which\n // is unlikely to be compressed further\n\n if (stringifiedData.length > MAX_MESSAGE_SIZE) {\n // Regex that matches the pattern for a dataURI with the shape 'data:{mime type};{encoding},{data}'. It:\n // 1) Checks if the pattern starts with 'data:' (potentially, not at the start of the string)\n // 2) Extracts the mime type of the data uri in the first group\n // 3) Determines when the data URI ends.Depending on if it's used in the src tag or css, it can end with a ) or \"\n const dataURIRegex = /data:([\\w/\\-.]+);(\\w+),([^)\"]*)/gim\n const matches = stringifiedData.matchAll(dataURIRegex)\n for (const match of matches) {\n if (match[1].toLocaleLowerCase().slice(0, 6) === 'image/') {\n stringifiedData = stringifiedData.replace(match[0], replacementImageURI)\n } else {\n stringifiedData = stringifiedData.replace(match[0], '')\n }\n }\n }\n return { event: JSON.parse(stringifiedData), size: stringifiedData.length }\n}\n\nexport const CONSOLE_LOG_PLUGIN_NAME = 'rrweb/console@1' // The name of the rr-web plugin that emits console logs\n\n// Console logs can be really large. This function truncates large logs\n// It's a simple function that just truncates long strings.\n// TODO: Ideally this function would have better handling of objects + lists,\n// so they could still be rendered in a pretty way after truncation.\nexport function truncateLargeConsoleLogs(_event: eventWithTime) {\n const event = _event as pluginEvent<{ payload: string[] }>\n\n const MAX_STRING_SIZE = 2000 // Maximum number of characters allowed in a string\n const MAX_STRINGS_PER_LOG = 10 // A log can consist of multiple strings (e.g. consol.log('string1', 'string2'))\n\n if (\n event &&\n isObject(event) &&\n event.type === PLUGIN_EVENT_TYPE &&\n isObject(event.data) &&\n event.data.plugin === CONSOLE_LOG_PLUGIN_NAME\n ) {\n // Note: event.data.payload.payload comes from rr-web, and is an array of strings\n if (event.data.payload.payload.length > MAX_STRINGS_PER_LOG) {\n event.data.payload.payload = event.data.payload.payload.slice(0, MAX_STRINGS_PER_LOG)\n event.data.payload.payload.push('...[truncated]')\n }\n const updatedPayload = []\n for (let i = 0; i < event.data.payload.payload.length; i++) {\n if (\n event.data.payload.payload[i] && // Value can be null\n event.data.payload.payload[i].length > MAX_STRING_SIZE\n ) {\n updatedPayload.push(event.data.payload.payload[i].slice(0, MAX_STRING_SIZE) + '...[truncated]')\n } else {\n updatedPayload.push(event.data.payload.payload[i])\n }\n }\n event.data.payload.payload = updatedPayload\n // Return original type\n return _event\n }\n return _event\n}\n\nexport const SEVEN_MEGABYTES = 1024 * 1024 * 7 * 0.9 // ~7mb (with some wiggle room)\n\n// recursively splits large buffers into smaller ones\n// uses a pretty high size limit to avoid splitting too much\nexport function splitBuffer(buffer: SnapshotBuffer, sizeLimit: number = SEVEN_MEGABYTES): SnapshotBuffer[] {\n if (buffer.size >= sizeLimit && buffer.data.length > 1) {\n const half = Math.floor(buffer.data.length / 2)\n const firstHalf = buffer.data.slice(0, half)\n const secondHalf = buffer.data.slice(half)\n return [\n splitBuffer({\n size: estimateSize(firstHalf),\n data: firstHalf,\n sessionId: buffer.sessionId,\n windowId: buffer.windowId,\n }),\n splitBuffer({\n size: estimateSize(secondHalf),\n data: secondHalf,\n sessionId: buffer.sessionId,\n windowId: buffer.windowId,\n }),\n ].flatMap((x) => x)\n } else {\n return [buffer]\n }\n}\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\nexport {\n CanvasContext,\n EventType,\n IncrementalSource,\n MediaInteractions,\n MouseInteractions,\n PointerTypes,\n ReplayerEvents\n};\n//# sourceMappingURL=types.js.map\n","import { CapturedNetworkRequest, NetworkRecordOptions, PostHogConfig } from '../../types'\nimport { isFunction, isNullish, isString, isUndefined } from '../../utils/type-utils'\nimport { convertToURL } from '../../utils/request-utils'\nimport { logger } from '../../utils/logger'\nimport { shouldCaptureValue } from '../../autocapture-utils'\nimport { each } from '../../utils'\n\nconst LOGGER_PREFIX = '[SessionRecording]'\n\nconst REDACTED = 'redacted'\n\nexport const defaultNetworkOptions: Required<NetworkRecordOptions> = {\n initiatorTypes: [\n 'audio',\n 'beacon',\n 'body',\n 'css',\n 'early-hint',\n 'embed',\n 'fetch',\n 'frame',\n 'iframe',\n 'icon',\n 'image',\n 'img',\n 'input',\n 'link',\n 'navigation',\n 'object',\n 'ping',\n 'script',\n 'track',\n 'video',\n 'xmlhttprequest',\n ],\n maskRequestFn: (data: CapturedNetworkRequest) => data,\n recordHeaders: false,\n recordBody: false,\n recordInitialRequests: false,\n recordPerformance: false,\n performanceEntryTypeToObserve: [\n // 'event', // This is too noisy as it covers all browser events\n 'first-input',\n // 'mark', // Mark is used too liberally. We would need to filter for specific marks\n // 'measure', // Measure is used too liberally. We would need to filter for specific measures\n 'navigation',\n 'paint',\n 'resource',\n ],\n payloadSizeLimitBytes: 1000000,\n payloadHostDenyList: [\n '.lr-ingest.io',\n '.ingest.sentry.io',\n '.clarity.ms',\n // NB no leading dot here\n 'analytics.google.com',\n ],\n}\n\nconst HEADER_DENY_LIST = [\n 'authorization',\n 'x-forwarded-for',\n 'authorization',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'x-real-ip',\n 'remote-addr',\n 'forwarded',\n 'proxy-authorization',\n 'x-csrf-token',\n 'x-csrftoken',\n 'x-xsrf-token',\n]\n\nconst PAYLOAD_CONTENT_DENY_LIST = [\n 'password',\n 'secret',\n 'passwd',\n 'api_key',\n 'apikey',\n 'auth',\n 'credentials',\n 'mysql_pwd',\n 'privatekey',\n 'private_key',\n 'token',\n]\n\n// we always remove headers on the deny list because we never want to capture this sensitive data\nconst removeAuthorizationHeader = (data: CapturedNetworkRequest): CapturedNetworkRequest => {\n const headers = data.requestHeaders\n if (!isNullish(headers)) {\n each(Object.keys(headers ?? {}), (header) => {\n if (HEADER_DENY_LIST.includes(header.toLowerCase())) {\n headers[header] = REDACTED\n }\n })\n }\n return data\n}\n\nconst POSTHOG_PATHS_TO_IGNORE = ['/s/', '/e/', '/i/']\n// want to ignore posthog paths when capturing requests, or we can get trapped in a loop\n// because calls to PostHog would be reported using a call to PostHog which would be reported....\nconst ignorePostHogPaths = (\n data: CapturedNetworkRequest,\n apiHostConfig: PostHogConfig['api_host']\n): CapturedNetworkRequest | undefined => {\n const url = convertToURL(data.name)\n\n // we need to account for api host config as e.g. pathname could be /ingest/s/ and we want to ignore that\n let replaceValue = apiHostConfig.indexOf('http') === 0 ? convertToURL(apiHostConfig)?.pathname : apiHostConfig\n if (replaceValue === '/') {\n replaceValue = ''\n }\n const pathname = url?.pathname.replace(replaceValue || '', '')\n\n if (url && pathname && POSTHOG_PATHS_TO_IGNORE.some((path) => pathname.indexOf(path) === 0)) {\n return undefined\n }\n return data\n}\n\nfunction estimateBytes(payload: string): number {\n return new Blob([payload]).size\n}\n\nfunction enforcePayloadSizeLimit(\n payload: string | null | undefined,\n headers: Record<string, any> | undefined,\n limit: number,\n description: string\n): string | null | undefined {\n if (isNullish(payload)) {\n return payload\n }\n\n let requestContentLength: string | number = headers?.['content-length'] || estimateBytes(payload)\n if (isString(requestContentLength)) {\n requestContentLength = parseInt(requestContentLength)\n }\n\n if (requestContentLength > limit) {\n return LOGGER_PREFIX + ` ${description} body too large to record (${requestContentLength} bytes)`\n }\n\n return payload\n}\n\n// people can have arbitrarily large payloads on their site, but we don't want to ingest them\nconst limitPayloadSize = (\n options: NetworkRecordOptions\n): ((data: CapturedNetworkRequest | undefined) => CapturedNetworkRequest | undefined) => {\n // the smallest of 1MB or the specified limit if there is one\n const limit = Math.min(1000000, options.payloadSizeLimitBytes ?? 1000000)\n\n return (data) => {\n if (data?.requestBody) {\n data.requestBody = enforcePayloadSizeLimit(data.requestBody, data.requestHeaders, limit, 'Request')\n }\n\n if (data?.responseBody) {\n data.responseBody = enforcePayloadSizeLimit(data.responseBody, data.responseHeaders, limit, 'Response')\n }\n\n return data\n }\n}\n\nfunction scrubPayload(payload: string | null | undefined, label: 'Request' | 'Response'): string | null | undefined {\n if (isNullish(payload)) {\n return payload\n }\n let scrubbed = payload\n\n if (!shouldCaptureValue(scrubbed, false)) {\n scrubbed = LOGGER_PREFIX + ' ' + label + ' body ' + REDACTED\n }\n each(PAYLOAD_CONTENT_DENY_LIST, (text) => {\n if (scrubbed?.length && scrubbed?.indexOf(text) !== -1) {\n scrubbed = LOGGER_PREFIX + ' ' + label + ' body ' + REDACTED + ' as might contain: ' + text\n }\n })\n\n return scrubbed\n}\n\nfunction scrubPayloads(capturedRequest: CapturedNetworkRequest | undefined): CapturedNetworkRequest | undefined {\n if (isUndefined(capturedRequest)) {\n return undefined\n }\n\n capturedRequest.requestBody = scrubPayload(capturedRequest.requestBody, 'Request')\n capturedRequest.responseBody = scrubPayload(capturedRequest.responseBody, 'Response')\n\n return capturedRequest\n}\n\n/**\n * whether a maskRequestFn is provided or not,\n * we ensure that we remove the denied header from requests\n * we _never_ want to record that header by accident\n * if someone complains then we'll add an opt-in to let them override it\n */\nexport const buildNetworkRequestOptions = (\n instanceConfig: PostHogConfig,\n remoteNetworkOptions: Pick<\n NetworkRecordOptions,\n 'recordHeaders' | 'recordBody' | 'recordPerformance' | 'payloadHostDenyList'\n >\n): NetworkRecordOptions => {\n const config: NetworkRecordOptions = {\n payloadSizeLimitBytes: defaultNetworkOptions.payloadSizeLimitBytes,\n performanceEntryTypeToObserve: [...defaultNetworkOptions.performanceEntryTypeToObserve],\n payloadHostDenyList: [\n ...(remoteNetworkOptions.payloadHostDenyList || []),\n ...defaultNetworkOptions.payloadHostDenyList,\n ],\n }\n // client can always disable despite remote options\n const canRecordHeaders =\n instanceConfig.session_recording.recordHeaders === false ? false : remoteNetworkOptions.recordHeaders\n const canRecordBody =\n instanceConfig.session_recording.recordBody === false ? false : remoteNetworkOptions.recordBody\n const canRecordPerformance =\n instanceConfig.capture_performance === false ? false : remoteNetworkOptions.recordPerformance\n\n const payloadLimiter = limitPayloadSize(config)\n\n const enforcedCleaningFn: NetworkRecordOptions['maskRequestFn'] = (d: CapturedNetworkRequest) =>\n payloadLimiter(ignorePostHogPaths(removeAuthorizationHeader(d), instanceConfig.api_host))\n\n const hasDeprecatedMaskFunction = isFunction(instanceConfig.session_recording.maskNetworkRequestFn)\n\n if (hasDeprecatedMaskFunction && isFunction(instanceConfig.session_recording.maskCapturedNetworkRequestFn)) {\n logger.warn(\n 'Both `maskNetworkRequestFn` and `maskCapturedNetworkRequestFn` are defined. `maskNetworkRequestFn` will be ignored.'\n )\n }\n\n if (hasDeprecatedMaskFunction) {\n instanceConfig.session_recording.maskCapturedNetworkRequestFn = (data: CapturedNetworkRequest) => {\n const cleanedURL = instanceConfig.session_recording.maskNetworkRequestFn!({ url: data.name })\n return {\n ...data,\n name: cleanedURL?.url,\n } as CapturedNetworkRequest\n }\n }\n\n config.maskRequestFn = isFunction(instanceConfig.session_recording.maskCapturedNetworkRequestFn)\n ? (data) => {\n const cleanedRequest = enforcedCleaningFn(data)\n return cleanedRequest\n ? (instanceConfig.session_recording.maskCapturedNetworkRequestFn?.(cleanedRequest) ?? undefined)\n : undefined\n }\n : (data) => scrubPayloads(enforcedCleaningFn(data))\n\n return {\n ...defaultNetworkOptions,\n ...config,\n recordHeaders: canRecordHeaders,\n recordBody: canRecordBody,\n recordPerformance: canRecordPerformance,\n recordInitialRequests: canRecordPerformance,\n }\n}\n","import { isNumber } from './type-utils'\nimport { logger } from './logger'\n\n/**\n * Clamps a value to a range.\n * @param value the value to clamp\n * @param min the minimum value\n * @param max the maximum value\n * @param label if provided then enables logging and prefixes all logs with labels\n * @param fallbackValue if provided then returns this value if the value is not a valid number\n */\nexport function clampToRange(value: unknown, min: number, max: number, label?: string, fallbackValue?: number): number {\n if (min > max) {\n logger.warn('min cannot be greater than max.')\n min = max\n }\n\n if (!isNumber(value)) {\n label &&\n logger.warn(\n label + ' must be a number. using max or fallback. max: ' + max + ', fallback: ' + fallbackValue\n )\n return clampToRange(fallbackValue || max, min, max, label)\n } else if (value > max) {\n label && logger.warn(label + ' cannot be greater than max: ' + max + '. Using max value instead.')\n return max\n } else if (value < min) {\n label && logger.warn(label + ' cannot be less than min: ' + min + '. Using min value instead.')\n return min\n } else {\n return value\n }\n}\n","import type { eventWithTime, mutationCallbackParam } from '@rrweb/types'\nimport { INCREMENTAL_SNAPSHOT_EVENT_TYPE, MUTATION_SOURCE_TYPE } from './sessionrecording-utils'\nimport type { rrwebRecord } from './types/rrweb'\n\nimport { clampToRange } from '../../utils/number-utils'\n\nexport class MutationRateLimiter {\n private bucketSize = 100\n private refillRate = 10\n private mutationBuckets: Record<string, number> = {}\n private loggedTracker: Record<string, boolean> = {}\n\n constructor(\n private readonly rrweb: rrwebRecord,\n private readonly options: {\n bucketSize?: number\n refillRate?: number\n onBlockedNode?: (id: number, node: Node | null) => void\n } = {}\n ) {\n this.refillRate = clampToRange(\n this.options.refillRate ?? this.refillRate,\n 0,\n 100,\n 'mutation throttling refill rate'\n )\n this.bucketSize = clampToRange(\n this.options.bucketSize ?? this.bucketSize,\n 0,\n 100,\n 'mutation throttling bucket size'\n )\n setInterval(() => {\n this.refillBuckets()\n }, 1000)\n }\n\n private refillBuckets = () => {\n Object.keys(this.mutationBuckets).forEach((key) => {\n this.mutationBuckets[key] = this.mutationBuckets[key] + this.refillRate\n\n if (this.mutationBuckets[key] >= this.bucketSize) {\n delete this.mutationBuckets[key]\n }\n })\n }\n\n private getNodeOrRelevantParent = (id: number): [number, Node | null] => {\n // For some nodes we know they are part of a larger tree such as an SVG.\n // For those we want to block the entire node, not just the specific attribute\n\n const node = this.rrweb.mirror.getNode(id)\n\n // Check if the node is an Element and then find the closest parent that is an SVG\n if (node?.nodeName !== 'svg' && node instanceof Element) {\n const closestSVG = node.closest('svg')\n\n if (closestSVG) {\n return [this.rrweb.mirror.getId(closestSVG), closestSVG]\n }\n }\n\n return [id, node]\n }\n\n private numberOfChanges = (data: Partial<mutationCallbackParam>) => {\n return (\n (data.removes?.length ?? 0) +\n (data.attributes?.length ?? 0) +\n (data.texts?.length ?? 0) +\n (data.adds?.length ?? 0)\n )\n }\n\n public throttleMutations = (event: eventWithTime) => {\n if (event.type !== INCREMENTAL_SNAPSHOT_EVENT_TYPE || event.data.source !== MUTATION_SOURCE_TYPE) {\n return event\n }\n\n const data = event.data as Partial<mutationCallbackParam>\n const initialMutationCount = this.numberOfChanges(data)\n\n if (data.attributes) {\n // Most problematic mutations come from attrs where the style or minor properties are changed rapidly\n data.attributes = data.attributes.filter((attr) => {\n const [nodeId, node] = this.getNodeOrRelevantParent(attr.id)\n\n if (this.mutationBuckets[nodeId] === 0) {\n return false\n }\n\n this.mutationBuckets[nodeId] = this.mutationBuckets[nodeId] ?? this.bucketSize\n this.mutationBuckets[nodeId] = Math.max(this.mutationBuckets[nodeId] - 1, 0)\n\n if (this.mutationBuckets[nodeId] === 0) {\n if (!this.loggedTracker[nodeId]) {\n this.loggedTracker[nodeId] = true\n this.options.onBlockedNode?.(nodeId, node)\n }\n }\n\n return attr\n })\n }\n\n // Check if every part of the mutation is empty in which case there is nothing to do\n const mutationCount = this.numberOfChanges(data)\n\n if (mutationCount === 0 && initialMutationCount !== mutationCount) {\n // If we have modified the mutation count and the remaining count is 0, then we don't need the event.\n return\n }\n return event\n }\n}\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Much of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// Many optimizations have been made, so the bundle size is ultimately smaller but performance is similar.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var u = ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([c], { type: 'text/javascript' })));\n var w = new Worker(u);\n w.onerror = function (e) { return cb(e.error, null); };\n w.onmessage = function (e) { return cb(null, e.data); };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\n// see fleb note\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new u32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return [b, r];\n};\nvar _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1];\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i)\n ++l[cd[i] - 1];\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 0; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >>> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i)\n co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]);\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) >> 0;\n return ((d[o] | (d[o + 1] << 8)) >>> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) >> 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >>> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p / 8) >> 0) + (p & 7 && 1); };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, buf, st) {\n // source length\n var sl = dat.length;\n // have to estimate size\n var noBuf = !buf || st;\n // no state\n var noSt = !st || st.i;\n if (!st)\n st = {};\n // Assumes roughly 33% compression ratio average\n if (!buf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n st.f = final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n throw 'unexpected EOF';\n break;\n }\n // ensure size\n if (noBuf)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n if (!noSt && pos + tl * (clb + 7) > tbts)\n break;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >>> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n throw 'invalid block type';\n if (pos > tbts)\n throw 'unexpected EOF';\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17;\n if (noBuf)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var mxa = lbt + dbt + 18;\n while (noSt || pos + mxa < tbts) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;\n pos += c & 15;\n if (pos > tbts)\n throw 'unexpected EOF';\n if (!c)\n throw 'invalid length/literal';\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;\n if (!d)\n throw 'invalid distance';\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & ((1 << b) - 1), pos += b;\n }\n if (pos > tbts)\n throw 'unexpected EOF';\n if (noBuf)\n cbuf(bt + 131072);\n var end = bt + add;\n for (; bt < end; bt += 4) {\n buf[bt] = buf[bt - dt];\n buf[bt + 1] = buf[bt + 1 - dt];\n buf[bt + 2] = buf[bt + 2 - dt];\n buf[bt + 3] = buf[bt + 3 - dt];\n }\n bt = end;\n }\n }\n st.l = lm, st.p = pos, st.b = bt;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n return bt == buf.length ? buf : slc(buf, 0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n d[o + 2] |= v >>> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return [new u8(0), 0];\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return [v, 1];\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return [new u8(tr), mbt];\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return [cl.subarray(0, cli), s];\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >>> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a[0], mlb = _a[1];\n var _b = hTree(df, 15), ddt = _b[0], mdb = _b[1];\n var _c = lc(dlt), lclt = _c[0], nlc = _c[1];\n var _d = lc(ddt), lcdt = _d[0], ndc = _d[1];\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n lcfreq[lclt[i] & 31]++;\n for (var i = 0; i < lcdt.length; ++i)\n lcfreq[lcdt[i] & 31]++;\n var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1];\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n if (flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n if (syms[i] > 255) {\n var len = (syms[i] >>> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len];\n var dst = syms[i] & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, lst) {\n var s = dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.floor(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var pos = 0;\n if (!lvl || s < 8) {\n for (var i = 0; i <= s; i += 65535) {\n // end\n var e = i + 65535;\n if (e < s) {\n // write full block\n pos = wfblk(w, pos, dat.subarray(i, e));\n }\n else {\n // write final block\n w[i] = lst;\n pos = wfblk(w, pos, dat.subarray(i, s));\n }\n }\n }\n else {\n var opt = deo[lvl - 1];\n var n = opt >>> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = new u16(32768), head = new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new u32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx bitpos\n var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0;\n for (; i < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768\n var imod = i & 32767;\n // previous index with this value\n var pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && rem > 423) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = (i - dif + j + 32768) & 32767;\n var pti = prev[ti];\n var cd = (ti - pti + 32768) & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += (imod - pimod + 32768) & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one Uint32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n // this is the easiest way to avoid needing to maintain state\n if (!lst)\n pos = wfblk(w, pos, et);\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new u32(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && 0xEDB88320) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = 0xFFFFFFFF;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return c ^ 0xFFFFFFFF; }\n };\n};\n// Alder32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 5552, l);\n for (; i < e; ++i)\n n += d[i], m += n;\n n %= 65521, m %= 65521;\n }\n a = n, b = m;\n },\n d: function () { return ((a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8)) + ((a & 255) << 23) * 2; }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, !st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/ /g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return [fnStr, td];\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k] instanceof u8 || v[k] instanceof u16 || v[k] instanceof u32)\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n var _a;\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n _a = wcln(fns[i], fnStr, td_1), fnStr = _a[0], td_1 = _a[1];\n ch[id] = wcln(fns[m], fnStr, td_1);\n }\n var td = mrg({}, ch[id][1]);\n return wk(ch[id][0] + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, u32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, hMap, max, bits, bits16, shft, slc, inflt, inflateSync, pbf, gu8]; };\nvar bDflt = function () { return [u8, u16, u32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zlv]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get u8\nvar gu8 = function (o) { return o && o.size && new u8(o.size); };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n if (!opts.consume)\n dat = new u8(dat);\n w.postMessage([dat, opts], [dat.buffer]);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) { return strm.push(ev.data[0], ev.data[1]); };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.push = function (d, f) {\n if (t)\n throw 'stream finished';\n if (!strm.ondata)\n throw 'no stream handler';\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16)) + (d[b + 3] << 23) * 2; };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n throw 'invalid gzip data';\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += d[10] | (d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) + (2 * (d[l - 1] << 23));\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + ((o.filename && (o.filename.length + 1)) || 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (fl ? (32 - 2 * fl) : 1);\n};\n// zlib valid\nvar zlv = function (d) {\n if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n throw 'invalid zlib data';\n if (d[1] & 32)\n throw 'invalid zlib data: preset dictionaries not supported';\n};\nfunction AsyncCmpStrm(opts, cb) {\n if (!cb && typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n// zlib footer: -4 to -0 is Adler32\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (!cb && typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, !f), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (this.d)\n throw 'stream finished';\n if (!this.ondata)\n throw 'no stream handler';\n this.d = final;\n this.p(chunk, final || false);\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n if (opts === void 0) { opts = {}; }\n return dopt(data, opts, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n /**\n * Creates an inflation stream\n * @param cb The callback to call whenever data is inflated\n */\n function Inflate(cb) {\n this.s = {};\n this.p = new u8(0);\n this.ondata = cb;\n }\n Inflate.prototype.e = function (c) {\n if (this.d)\n throw 'stream finished';\n if (!this.ondata)\n throw 'no stream handler';\n var l = this.p.length;\n var n = new u8(l + c.length);\n n.set(this.p), n.set(c, l), this.p = n;\n };\n Inflate.prototype.c = function (final) {\n this.d = this.s.i = final || false;\n var bts = this.s.b;\n var dt = inflt(this.p, this.o, this.s);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) >> 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous inflation stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncInflate(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, 0, function () {\n var strm = new Inflate();\n onmessage = astrm(strm);\n }, 7);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gu8(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, out) {\n return inflt(data, out);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n this.c.p(c);\n this.l += c.length;\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, !f);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (opts === void 0) { opts = {}; }\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n /**\n * Creates a GUNZIP stream\n * @param cb The callback to call whenever data is inflated\n */\n function Gunzip(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n var s = gzs(this.p);\n if (s >= this.p.length && !final)\n return;\n this.p = this.p.subarray(s), this.v = 0;\n }\n if (final) {\n if (this.p.length < 8)\n throw 'invalid gzip stream';\n this.p = this.p.subarray(0, -8);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous GUNZIP stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncGunzip(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, 0, function () {\n var strm = new Gunzip();\n onmessage = astrm(strm);\n }, 9);\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param out Where to write the data. GZIP already encodes the output size, so providing this doesn't save memory.\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, out) {\n return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n this.c.p(c);\n var raw = dopt(c, this.o, this.v && 2, f && 4, !f);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (opts === void 0) { opts = {}; }\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n /**\n * Creates a Zlib decompression stream\n * @param cb The callback to call whenever data is inflated\n */\n function Unzlib(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 2 && !final)\n return;\n this.p = this.p.subarray(2), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n throw 'invalid zlib stream';\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous Zlib decompression stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncUnzlib(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, 0, function () {\n var strm = new Unzlib();\n onmessage = astrm(strm);\n }, 11);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gu8(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, out) {\n return inflt((zlv(data), data.subarray(2, -4)), out);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n /**\n * Creates a decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function Decompress(cb) {\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n throw 'no stream handler';\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n var _this_1 = this;\n var cb = function () { _this_1.ondata.apply(_this_1, arguments); };\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(cb)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(cb)\n : new this.Z(cb);\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function AsyncDecompress(cb) {\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, out) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, out)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, out)\n : unzlibSync(data, out);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k;\n if (val instanceof u8)\n t[n] = [val, o];\n else if (Array.isArray(val))\n t[n] = [val[0], mrg(o, val[1])];\n else\n fltn(val, n + '/', t, o);\n }\n};\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n var l = str.length;\n if (!latin1 && typeof TextEncoder != 'undefined')\n return new TextEncoder().encode(str);\n var ar = new u8(str.length + (str.length >>> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >>> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >>> 18)), w(128 | ((c >>> 12) & 63)), w(128 | ((c >>> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >>> 12)), w(128 | ((c >>> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n var r = '';\n if (!latin1 && typeof TextDecoder != 'undefined')\n return new TextDecoder().decode(dat);\n for (var i = 0; i < dat.length;) {\n var c = dat[i++];\n if (c < 128 || latin1)\n r += String.fromCharCode(c);\n else if (c < 224)\n r += String.fromCharCode((c & 31) << 6 | (dat[i++] & 63));\n else if (c < 240)\n r += String.fromCharCode((c & 15) << 12 | (dat[i++] & 63) << 6 | (dat[i++] & 63));\n else\n c = ((c & 15) << 18 | (dat[i++] & 63) << 12 | (dat[i++] & 63) << 6 | (dat[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n return r;\n}\n;\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl;\n var _a = z ? z64e(d, es) : [b4(d, b + 20), b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b4(d, b + 12), b4(d, b + 4), b4(d, b + 20)];\n};\n// write zip header\nvar wzh = function (d, b, c, cmp, su, fn, u, o, ce, t) {\n var fl = fn.length, l = cmp.length;\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b] = 20, b += 2;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (t == 8 && (o.level == 1 ? 6 : o.level < 6 ? 4 : o.level == 9 ? 2 : 0)), d[b++] = u && 8;\n d[b] = t, b += 2;\n var dt = new Date(o.mtime || Date.now()), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n throw 'date not in range 1980-2099';\n wbytes(d, b, ((y << 24) * 2) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >>> 1));\n b += 4;\n wbytes(d, b, c);\n wbytes(d, b + 4, l);\n wbytes(d, b + 8, su);\n wbytes(d, b + 12, fl), b += 16; // skip extra field, comment\n if (ce != null)\n wbytes(d, b += 10, ce), b += 4;\n d.set(fn, b);\n b += fl;\n if (ce == null)\n d.set(cmp, b);\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n throw 'no callback';\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n wzh(out, tot, f.c, f.d, f.m, f.n, f.u, f.p, null, f.t);\n wzh(out, o, f.c, f.d, f.m, f.n, f.u, f.p, tot, f.t), o += 46 + f.n.length, tot += 30 + f.n.length + f.d.length;\n }\n catch (e) {\n return cb(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cb(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), m = file.length;\n c.p(file);\n var n = strToU8(fn), s = n.length;\n var t = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cb(e, null);\n }\n else {\n var l = d.length;\n files[i] = {\n t: t,\n d: d,\n m: m,\n c: c.d(),\n u: fn.length != l,\n n: n,\n p: p\n };\n o += 30 + s + l;\n tot += 76 + 2 * s + l;\n if (!--lft)\n cbf();\n }\n };\n if (n.length > 65535)\n cbl('filename too long', null);\n if (!t)\n cbl(null, file);\n else if (m < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (opts === void 0) { opts = {}; }\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var t = p.level == 0 ? 0 : 8;\n var n = strToU8(fn), s = n.length;\n if (n.length > 65535)\n throw 'filename too long';\n var d = t ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push({\n t: t,\n d: d,\n m: file.length,\n c: c.d(),\n u: fn.length != s,\n n: n,\n o: o,\n p: p\n });\n o += 30 + s + l;\n tot += 76 + 2 * s + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f.c, f.d, f.m, f.n, f.u, f.p, null, f.t);\n wzh(out, o, f.c, f.d, f.m, f.n, f.u, f.p, f.o, f.t), o += 46 + f.n.length;\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Asynchronously decompresses a ZIP archive\n * @param data The raw compressed ZIP file\n * @param cb The callback to call with the decompressed files\n * @returns A function that can be used to immediately terminate the unzipping\n */\nexport function unzip(data, cb) {\n if (typeof cb != 'function')\n throw 'no callback';\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cb('invalid zip file', null);\n return;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (!lft)\n cb(null, {});\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50)\n throw 'invalid zip file';\n c = lft = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n var _loop_2 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cb(e, null);\n }\n else {\n files[fn] = d;\n if (!--lft)\n cb(null, files);\n }\n };\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n if (sc < 320000) {\n try {\n cbl(null, inflateSync(infl, new u8(su)));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl('unknown compression type ' + c_1, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_2(i);\n }\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @returns The decompressed files\n */\nexport function unzipSync(data) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n throw 'invalid zip file';\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50)\n throw 'invalid zip file';\n c = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), new u8(su));\n else\n throw 'unknown compression type ' + c_2;\n }\n return files;\n}\n","import {\n CONSOLE_LOG_RECORDING_ENABLED_SERVER_SIDE,\n SESSION_RECORDING_CANVAS_RECORDING,\n SESSION_RECORDING_ENABLED_SERVER_SIDE,\n SESSION_RECORDING_EVENT_TRIGGER_ACTIVATED_SESSION,\n SESSION_RECORDING_IS_SAMPLED,\n SESSION_RECORDING_MINIMUM_DURATION,\n SESSION_RECORDING_NETWORK_PAYLOAD_CAPTURE,\n SESSION_RECORDING_SAMPLE_RATE,\n SESSION_RECORDING_SCRIPT_CONFIG,\n SESSION_RECORDING_URL_TRIGGER_ACTIVATED_SESSION,\n} from '../../constants'\nimport {\n estimateSize,\n INCREMENTAL_SNAPSHOT_EVENT_TYPE,\n splitBuffer,\n truncateLargeConsoleLogs,\n} from './sessionrecording-utils'\nimport type { recordOptions, rrwebRecord } from './types/rrweb'\nimport { PostHog } from '../../posthog-core'\nimport {\n CaptureResult,\n FlagVariant,\n NetworkRecordOptions,\n NetworkRequest,\n Properties,\n RemoteConfig,\n SessionRecordingUrlTrigger,\n} from '../../types'\nimport {\n type customEvent,\n EventType,\n type eventWithTime,\n IncrementalSource,\n type listenerHandler,\n RecordPlugin,\n} from '@rrweb/types'\n\nimport { isBoolean, isFunction, isNullish, isNumber, isObject, isString, isUndefined } from '../../utils/type-utils'\nimport { createLogger } from '../../utils/logger'\nimport { assignableWindow, document, PostHogExtensionKind, window } from '../../utils/globals'\nimport { buildNetworkRequestOptions } from './config'\nimport { isLocalhost } from '../../utils/request-utils'\nimport { MutationRateLimiter } from './mutation-rate-limiter'\nimport { gzipSync, strFromU8, strToU8 } from 'fflate'\nimport { clampToRange } from '../../utils/number-utils'\nimport Config from '../../config'\nimport { includes } from '../../utils/string-utils'\nimport { addEventListener } from '../../utils'\nimport { sampleOnProperty } from '../sampling'\n\nconst LOGGER_PREFIX = '[SessionRecording]'\nconst logger = createLogger(LOGGER_PREFIX)\n\ntype SessionStartReason =\n | 'sampling_overridden'\n | 'recording_initialized'\n | 'linked_flag_matched'\n | 'linked_flag_overridden'\n | 'sampled'\n | 'session_id_changed'\n | 'url_trigger_matched'\n | 'event_trigger_matched'\n\nconst BASE_ENDPOINT = '/s/'\n\nconst ONE_MINUTE = 1000 * 60\nconst FIVE_MINUTES = ONE_MINUTE * 5\nconst TWO_SECONDS = 2000\nexport const RECORDING_IDLE_THRESHOLD_MS = FIVE_MINUTES\nconst ONE_KB = 1024\nconst PARTIAL_COMPRESSION_THRESHOLD = ONE_KB\nexport const RECORDING_MAX_EVENT_SIZE = ONE_KB * ONE_KB * 0.9 // ~1mb (with some wiggle room)\nexport const RECORDING_BUFFER_TIMEOUT = 2000 // 2 seconds\nexport const SESSION_RECORDING_BATCH_KEY = 'recordings'\nconst DEFAULT_CANVAS_QUALITY = 0.4\nconst DEFAULT_CANVAS_FPS = 4\nconst MAX_CANVAS_FPS = 12\nconst MAX_CANVAS_QUALITY = 1\n\nconst ACTIVE_SOURCES = [\n IncrementalSource.MouseMove,\n IncrementalSource.MouseInteraction,\n IncrementalSource.Scroll,\n IncrementalSource.ViewportResize,\n IncrementalSource.Input,\n IncrementalSource.TouchMove,\n IncrementalSource.MediaInteraction,\n IncrementalSource.Drag,\n]\n\nexport type TriggerType = 'url' | 'event'\ntype TriggerStatus = 'trigger_activated' | 'trigger_pending' | 'trigger_disabled'\n\n/**\n * Session recording starts in buffering mode while waiting for decide response\n * Once the response is received it might be disabled, active or sampled\n * When sampled that means a sample rate is set and the last time the session id was rotated\n * the sample rate determined this session should be sent to the server.\n */\ntype SessionRecordingStatus = 'disabled' | 'sampled' | 'active' | 'buffering' | 'paused'\n\nexport interface SnapshotBuffer {\n size: number\n data: any[]\n sessionId: string\n windowId: string\n}\n\ninterface QueuedRRWebEvent {\n rrwebMethod: () => void\n attempt: number\n // the timestamp this was first put into this queue\n enqueuedAt: number\n}\n\ninterface SessionIdlePayload {\n eventTimestamp: number\n lastActivityTimestamp: number\n threshold: number\n bufferLength: number\n bufferSize: number\n}\n\nconst newQueuedEvent = (rrwebMethod: () => void): QueuedRRWebEvent => ({\n rrwebMethod,\n enqueuedAt: Date.now(),\n attempt: 1,\n})\n\nexport type compressedFullSnapshotEvent = {\n type: EventType.FullSnapshot\n data: string\n}\n\nexport type compressedIncrementalSnapshotEvent = {\n type: EventType.IncrementalSnapshot\n data: {\n source: IncrementalSource\n texts: string\n attributes: string\n removes: string\n adds: string\n }\n}\n\nexport type compressedIncrementalStyleSnapshotEvent = {\n type: EventType.IncrementalSnapshot\n data: {\n source: IncrementalSource.StyleSheetRule\n id?: number\n styleId?: number\n replace?: string\n replaceSync?: string\n adds?: string\n removes?: string\n }\n}\n\nexport type compressedEvent =\n | compressedIncrementalStyleSnapshotEvent\n | compressedFullSnapshotEvent\n | compressedIncrementalSnapshotEvent\nexport type compressedEventWithTime = compressedEvent & {\n timestamp: number\n delay?: number\n // marker for compression version\n cv: '2024-10'\n}\n\nfunction gzipToString(data: unknown): string {\n return strFromU8(gzipSync(strToU8(JSON.stringify(data))), true)\n}\n\n// rrweb's packer takes an event and returns a string or the reverse on unpact,\n// but we want to be able to inspect metadata during ingestion, and don't want to compress the entire event\n// so we have a custom packer that only compresses part of some events\nfunction compressEvent(event: eventWithTime): eventWithTime | compressedEventWithTime {\n const originalSize = estimateSize(event)\n if (originalSize < PARTIAL_COMPRESSION_THRESHOLD) {\n return event\n }\n\n try {\n if (event.type === EventType.FullSnapshot) {\n return {\n ...event,\n data: gzipToString(event.data),\n cv: '2024-10',\n }\n }\n if (event.type === EventType.IncrementalSnapshot && event.data.source === IncrementalSource.Mutation) {\n return {\n ...event,\n cv: '2024-10',\n data: {\n ...event.data,\n texts: gzipToString(event.data.texts),\n attributes: gzipToString(event.data.attributes),\n removes: gzipToString(event.data.removes),\n adds: gzipToString(event.data.adds),\n },\n }\n }\n if (event.type === EventType.IncrementalSnapshot && event.data.source === IncrementalSource.StyleSheetRule) {\n return {\n ...event,\n cv: '2024-10',\n data: {\n ...event.data,\n adds: event.data.adds ? gzipToString(event.data.adds) : undefined,\n removes: event.data.removes ? gzipToString(event.data.removes) : undefined,\n },\n }\n }\n } catch (e) {\n logger.error('could not compress event - will use uncompressed event', e)\n }\n return event\n}\n\nfunction isSessionIdleEvent(e: eventWithTime): e is eventWithTime & customEvent {\n return e.type === EventType.Custom && e.data.tag === 'sessionIdle'\n}\n\nfunction sessionRecordingUrlTriggerMatches(url: string, triggers: SessionRecordingUrlTrigger[]) {\n return triggers.some((trigger) => {\n switch (trigger.matching) {\n case 'regex':\n return new RegExp(trigger.url).test(url)\n default:\n return false\n }\n })\n}\n\n/** When we put the recording into a paused state, we add a custom event.\n * However in the paused state, events are dropped, and never make it to the buffer,\n * so we need to manually let this one through */\nfunction isRecordingPausedEvent(e: eventWithTime) {\n return e.type === EventType.Custom && e.data.tag === 'recording paused'\n}\n\nexport class SessionRecording {\n private _endpoint: string\n private flushBufferTimer?: any\n\n // we have a buffer - that contains PostHog snapshot events ready to be sent to the server\n private buffer: SnapshotBuffer\n // and a queue - that contains rrweb events that we want to send to rrweb, but rrweb wasn't able to accept them yet\n private queuedRRWebEvents: QueuedRRWebEvent[] = []\n\n private mutationRateLimiter?: MutationRateLimiter\n private _captureStarted: boolean\n private stopRrweb: listenerHandler | undefined\n private receivedDecide: boolean\n private isIdle = false\n\n private _linkedFlagSeen: boolean = false\n private _lastActivityTimestamp: number = Date.now()\n private windowId: string\n private sessionId: string\n private _linkedFlag: string | FlagVariant | null = null\n\n private _fullSnapshotTimer?: ReturnType<typeof setInterval>\n\n private _removePageViewCaptureHook: (() => void) | undefined = undefined\n private _onSessionIdListener: (() => void) | undefined = undefined\n private _persistDecideOnSessionListener: (() => void) | undefined = undefined\n private _samplingSessionListener: (() => void) | undefined = undefined\n\n // if pageview capture is disabled\n // then we can manually track href changes\n private _lastHref?: string\n\n private _urlTriggers: SessionRecordingUrlTrigger[] = []\n private _urlBlocklist: SessionRecordingUrlTrigger[] = []\n\n private _urlBlocked: boolean = false\n\n private _eventTriggers: string[] = []\n private _removeEventTriggerCaptureHook: (() => void) | undefined = undefined\n\n // Util to help developers working on this feature manually override\n _forceAllowLocalhostNetworkCapture = false\n\n private get sessionIdleThresholdMilliseconds(): number {\n return this.instance.config.session_recording.session_idle_threshold_ms || RECORDING_IDLE_THRESHOLD_MS\n }\n\n private get rrwebRecord(): rrwebRecord | undefined {\n return assignableWindow?.__PosthogExtensions__?.rrweb?.record\n }\n\n public get started(): boolean {\n // TODO could we use status instead of _captureStarted?\n return this._captureStarted\n }\n\n private get sessionManager() {\n if (!this.instance.sessionManager) {\n throw new Error(LOGGER_PREFIX + ' must be started with a valid sessionManager.')\n }\n\n return this.instance.sessionManager\n }\n\n private get fullSnapshotIntervalMillis(): number {\n if (this.triggerStatus === 'trigger_pending') {\n return ONE_MINUTE\n }\n\n return this.instance.config.session_recording?.full_snapshot_interval_millis ?? FIVE_MINUTES\n }\n\n private get isSampled(): boolean | null {\n const currentValue = this.instance.get_property(SESSION_RECORDING_IS_SAMPLED)\n return isBoolean(currentValue) ? currentValue : null\n }\n\n private get sessionDuration(): number | null {\n const mostRecentSnapshot = this.buffer?.data[this.buffer?.data.length - 1]\n const { sessionStartTimestamp } = this.sessionManager.checkAndGetSessionAndWindowId(true)\n return mostRecentSnapshot ? mostRecentSnapshot.timestamp - sessionStartTimestamp : null\n }\n\n private get isRecordingEnabled() {\n const enabled_server_side = !!this.instance.get_property(SESSION_RECORDING_ENABLED_SERVER_SIDE)\n const enabled_client_side = !this.instance.config.disable_session_recording\n return window && enabled_server_side && enabled_client_side\n }\n\n private get isConsoleLogCaptureEnabled() {\n const enabled_server_side = !!this.instance.get_property(CONSOLE_LOG_RECORDING_ENABLED_SERVER_SIDE)\n const enabled_client_side = this.instance.config.enable_recording_console_log\n return enabled_client_side ?? enabled_server_side\n }\n\n private get canvasRecording(): { enabled: boolean; fps: number; quality: number } {\n const canvasRecording_client_side = this.instance.config.session_recording.captureCanvas\n const canvasRecording_server_side = this.instance.get_property(SESSION_RECORDING_CANVAS_RECORDING)\n\n const enabled: boolean =\n canvasRecording_client_side?.recordCanvas ?? canvasRecording_server_side?.enabled ?? false\n const fps: number =\n canvasRecording_client_side?.canvasFps ?? canvasRecording_server_side?.fps ?? DEFAULT_CANVAS_FPS\n let quality: string | number =\n canvasRecording_client_side?.canvasQuality ?? canvasRecording_server_side?.quality ?? DEFAULT_CANVAS_QUALITY\n if (typeof quality === 'string') {\n const parsed = parseFloat(quality)\n quality = isNaN(parsed) ? 0.4 : parsed\n }\n\n return {\n enabled,\n fps: clampToRange(fps, 0, MAX_CANVAS_FPS, 'canvas recording fps', DEFAULT_CANVAS_FPS),\n quality: clampToRange(quality, 0, MAX_CANVAS_QUALITY, 'canvas recording quality', DEFAULT_CANVAS_QUALITY),\n }\n }\n\n // network payload capture config has three parts\n // each can be configured server side or client side\n private get networkPayloadCapture():\n | Pick<NetworkRecordOptions, 'recordHeaders' | 'recordBody' | 'recordPerformance'>\n | undefined {\n const networkPayloadCapture_server_side = this.instance.get_property(SESSION_RECORDING_NETWORK_PAYLOAD_CAPTURE)\n const networkPayloadCapture_client_side = {\n recordHeaders: this.instance.config.session_recording?.recordHeaders,\n recordBody: this.instance.config.session_recording?.recordBody,\n }\n const headersEnabled =\n networkPayloadCapture_client_side?.recordHeaders || networkPayloadCapture_server_side?.recordHeaders\n const bodyEnabled =\n networkPayloadCapture_client_side?.recordBody || networkPayloadCapture_server_side?.recordBody\n const clientConfigForPerformanceCapture = isObject(this.instance.config.capture_performance)\n ? this.instance.config.capture_performance.network_timing\n : this.instance.config.capture_performance\n const networkTimingEnabled = !!(isBoolean(clientConfigForPerformanceCapture)\n ? clientConfigForPerformanceCapture\n : networkPayloadCapture_server_side?.capturePerformance)\n\n return headersEnabled || bodyEnabled || networkTimingEnabled\n ? { recordHeaders: headersEnabled, recordBody: bodyEnabled, recordPerformance: networkTimingEnabled }\n : undefined\n }\n\n private get sampleRate(): number | null {\n const rate = this.instance.get_property(SESSION_RECORDING_SAMPLE_RATE)\n return isNumber(rate) ? rate : null\n }\n\n private get minimumDuration(): number | null {\n const duration = this.instance.get_property(SESSION_RECORDING_MINIMUM_DURATION)\n return isNumber(duration) ? duration : null\n }\n\n /**\n * defaults to buffering mode until a decide response is received\n * once a decide response is received status can be disabled, active or sampled\n */\n get status(): SessionRecordingStatus {\n if (!this.receivedDecide) {\n return 'buffering'\n }\n\n if (!this.isRecordingEnabled) {\n return 'disabled'\n }\n\n // if sampling is set and the session is already decided to not be sampled\n // then we should never be active\n if (this.isSampled === false) {\n return 'disabled'\n }\n\n if (this._urlBlocked) {\n return 'paused'\n }\n\n if (!isNullish(this._linkedFlag) && !this._linkedFlagSeen) {\n return 'buffering'\n }\n\n if (this.triggerStatus === 'trigger_pending') {\n return 'buffering'\n }\n\n if (isBoolean(this.isSampled)) {\n return this.isSampled ? 'sampled' : 'disabled'\n } else {\n return 'active'\n }\n }\n\n private get urlTriggerStatus(): TriggerStatus {\n if (this._urlTriggers.length === 0) {\n return 'trigger_disabled'\n }\n\n const currentTriggerSession = this.instance?.get_property(SESSION_RECORDING_URL_TRIGGER_ACTIVATED_SESSION)\n return currentTriggerSession === this.sessionId ? 'trigger_activated' : 'trigger_pending'\n }\n\n private get eventTriggerStatus(): TriggerStatus {\n if (this._eventTriggers.length === 0) {\n return 'trigger_disabled'\n }\n\n const currentTriggerSession = this.instance?.get_property(SESSION_RECORDING_EVENT_TRIGGER_ACTIVATED_SESSION)\n return currentTriggerSession === this.sessionId ? 'trigger_activated' : 'trigger_pending'\n }\n\n private get triggerStatus(): TriggerStatus {\n const eitherIsActivated =\n this.eventTriggerStatus === 'trigger_activated' || this.urlTriggerStatus === 'trigger_activated'\n const eitherIsPending =\n this.eventTriggerStatus === 'trigger_pending' || this.urlTriggerStatus === 'trigger_pending'\n return eitherIsActivated ? 'trigger_activated' : eitherIsPending ? 'trigger_pending' : 'trigger_disabled'\n }\n\n constructor(private readonly instance: PostHog) {\n this._captureStarted = false\n this._endpoint = BASE_ENDPOINT\n this.stopRrweb = undefined\n this.receivedDecide = false\n\n if (!this.instance.sessionManager) {\n logger.error('started without valid sessionManager')\n throw new Error(LOGGER_PREFIX + ' started without valid sessionManager. This is a bug.')\n }\n if (this.instance.config.__preview_experimental_cookieless_mode) {\n throw new Error(LOGGER_PREFIX + ' cannot be used with __preview_experimental_cookieless_mode.')\n }\n\n // we know there's a sessionManager, so don't need to start without a session id\n const { sessionId, windowId } = this.sessionManager.checkAndGetSessionAndWindowId()\n this.sessionId = sessionId\n this.windowId = windowId\n\n this.buffer = this.clearBuffer()\n\n if (this.sessionIdleThresholdMilliseconds >= this.sessionManager.sessionTimeoutMs) {\n logger.warn(\n `session_idle_threshold_ms (${this.sessionIdleThresholdMilliseconds}) is greater than the session timeout (${this.sessionManager.sessionTimeoutMs}). Session will never be detected as idle`\n )\n }\n }\n\n private _onBeforeUnload = (): void => {\n this._flushBuffer()\n }\n\n private _onOffline = (): void => {\n this._tryAddCustomEvent('browser offline', {})\n }\n\n private _onOnline = (): void => {\n this._tryAddCustomEvent('browser online', {})\n }\n\n private _onVisibilityChange = (): void => {\n if (document?.visibilityState) {\n const label = 'window ' + document.visibilityState\n this._tryAddCustomEvent(label, {})\n }\n }\n\n startIfEnabledOrStop(startReason?: SessionStartReason) {\n if (this.isRecordingEnabled) {\n this._startCapture(startReason)\n\n // calling addEventListener multiple times is safe and will not add duplicates\n addEventListener(window, 'beforeunload', this._onBeforeUnload)\n addEventListener(window, 'offline', this._onOffline)\n addEventListener(window, 'online', this._onOnline)\n addEventListener(window, 'visibilitychange', this._onVisibilityChange)\n\n // on reload there might be an already sampled session that should be continued before decide response,\n // so we call this here _and_ in the decide response\n this._setupSampling()\n\n this._addEventTriggerListener()\n\n if (isNullish(this._removePageViewCaptureHook)) {\n // :TRICKY: rrweb does not capture navigation within SPA-s, so hook into our $pageview events to get access to all events.\n // Dropping the initial event is fine (it's always captured by rrweb).\n this._removePageViewCaptureHook = this.instance.on('eventCaptured', (event) => {\n // If anything could go wrong here it has the potential to block the main loop,\n // so we catch all errors.\n try {\n if (event.event === '$pageview') {\n const href = event?.properties.$current_url\n ? this._maskUrl(event?.properties.$current_url)\n : ''\n if (!href) {\n return\n }\n this._tryAddCustomEvent('$pageview', { href })\n }\n } catch (e) {\n logger.error('Could not add $pageview to rrweb session', e)\n }\n })\n }\n\n if (!this._onSessionIdListener) {\n this._onSessionIdListener = this.sessionManager.onSessionId((sessionId, windowId, changeReason) => {\n if (changeReason) {\n this._tryAddCustomEvent('$session_id_change', { sessionId, windowId, changeReason })\n\n this.instance?.persistence?.unregister(SESSION_RECORDING_EVENT_TRIGGER_ACTIVATED_SESSION)\n this.instance?.persistence?.unregister(SESSION_RECORDING_URL_TRIGGER_ACTIVATED_SESSION)\n }\n })\n }\n } else {\n this.stopRecording()\n }\n }\n\n stopRecording() {\n if (this._captureStarted && this.stopRrweb) {\n this.stopRrweb()\n this.stopRrweb = undefined\n this._captureStarted = false\n\n window?.removeEventListener('beforeunload', this._onBeforeUnload)\n window?.removeEventListener('offline', this._onOffline)\n window?.removeEventListener('online', this._onOnline)\n window?.removeEventListener('visibilitychange', this._onVisibilityChange)\n\n this.clearBuffer()\n clearInterval(this._fullSnapshotTimer)\n\n this._removePageViewCaptureHook?.()\n this._removePageViewCaptureHook = undefined\n this._removeEventTriggerCaptureHook?.()\n this._removeEventTriggerCaptureHook = undefined\n this._onSessionIdListener?.()\n this._onSessionIdListener = undefined\n this._samplingSessionListener?.()\n this._samplingSessionListener = undefined\n\n logger.info('stopped')\n }\n }\n\n private makeSamplingDecision(sessionId: string): void {\n const sessionIdChanged = this.sessionId !== sessionId\n\n // capture the current sample rate,\n // because it is re-used multiple times\n // and the bundler won't minimise any of the references\n const currentSampleRate = this.sampleRate\n\n if (!isNumber(currentSampleRate)) {\n this.instance.persistence?.register({\n [SESSION_RECORDING_IS_SAMPLED]: null,\n })\n return\n }\n\n const storedIsSampled = this.isSampled\n\n /**\n * if we get this far then we should make a sampling decision.\n * When the session id changes or there is no stored sampling decision for this session id\n * then we should make a new decision.\n *\n * Otherwise, we should use the stored decision.\n */\n const makeDecision = sessionIdChanged || !isBoolean(storedIsSampled)\n const shouldSample = makeDecision ? sampleOnProperty(sessionId, currentSampleRate) : storedIsSampled\n\n if (makeDecision) {\n if (shouldSample) {\n this._reportStarted('sampled')\n } else {\n logger.warn(\n `Sample rate (${currentSampleRate}) has determined that this sessionId (${sessionId}) will not be sent to the server.`\n )\n }\n\n this._tryAddCustomEvent('samplingDecisionMade', {\n sampleRate: currentSampleRate,\n isSampled: shouldSample,\n })\n }\n\n this.instance.persistence?.register({\n [SESSION_RECORDING_IS_SAMPLED]: shouldSample,\n })\n }\n\n onRemoteConfig(response: RemoteConfig) {\n this._tryAddCustomEvent('$remote_config_received', response)\n this._persistRemoteConfig(response)\n\n this._linkedFlag = response.sessionRecording?.linkedFlag || null\n\n if (response.sessionRecording?.endpoint) {\n this._endpoint = response.sessionRecording?.endpoint\n }\n\n this._setupSampling()\n\n if (!isNullish(this._linkedFlag) && !this._linkedFlagSeen) {\n const linkedFlag = isString(this._linkedFlag) ? this._linkedFlag : this._linkedFlag.flag\n const linkedVariant = isString(this._linkedFlag) ? null : this._linkedFlag.variant\n this.instance.onFeatureFlags((_flags, variants) => {\n const flagIsPresent = isObject(variants) && linkedFlag in variants\n const linkedFlagMatches = linkedVariant ? variants[linkedFlag] === linkedVariant : flagIsPresent\n if (linkedFlagMatches) {\n this._reportStarted('linked_flag_matched', {\n linkedFlag,\n linkedVariant,\n })\n }\n this._linkedFlagSeen = linkedFlagMatches\n })\n }\n\n if (response.sessionRecording?.urlTriggers) {\n this._urlTriggers = response.sessionRecording.urlTriggers\n }\n\n if (response.sessionRecording?.urlBlocklist) {\n this._urlBlocklist = response.sessionRecording.urlBlocklist\n }\n\n if (response.sessionRecording?.eventTriggers) {\n this._eventTriggers = response.sessionRecording.eventTriggers\n }\n\n this.receivedDecide = true\n this.startIfEnabledOrStop()\n }\n\n /**\n * This might be called more than once so needs to be idempotent\n */\n private _setupSampling() {\n if (isNumber(this.sampleRate) && isNullish(this._samplingSessionListener)) {\n this._samplingSessionListener = this.sessionManager.onSessionId((sessionId) => {\n this.makeSamplingDecision(sessionId)\n })\n }\n }\n\n private _persistRemoteConfig(response: RemoteConfig): void {\n if (this.instance.persistence) {\n const persistence = this.instance.persistence\n\n const persistResponse = () => {\n const receivedSampleRate = response.sessionRecording?.sampleRate\n\n const parsedSampleRate = isNullish(receivedSampleRate) ? null : parseFloat(receivedSampleRate)\n const receivedMinimumDuration = response.sessionRecording?.minimumDurationMilliseconds\n\n persistence.register({\n [SESSION_RECORDING_ENABLED_SERVER_SIDE]: !!response['sessionRecording'],\n [CONSOLE_LOG_RECORDING_ENABLED_SERVER_SIDE]: response.sessionRecording?.consoleLogRecordingEnabled,\n [SESSION_RECORDING_NETWORK_PAYLOAD_CAPTURE]: {\n capturePerformance: response.capturePerformance,\n ...response.sessionRecording?.networkPayloadCapture,\n },\n [SESSION_RECORDING_CANVAS_RECORDING]: {\n enabled: response.sessionRecording?.recordCanvas,\n fps: response.sessionRecording?.canvasFps,\n quality: response.sessionRecording?.canvasQuality,\n },\n [SESSION_RECORDING_SAMPLE_RATE]: parsedSampleRate,\n [SESSION_RECORDING_MINIMUM_DURATION]: isUndefined(receivedMinimumDuration)\n ? null\n : receivedMinimumDuration,\n [SESSION_RECORDING_SCRIPT_CONFIG]: response.sessionRecording?.scriptConfig,\n })\n }\n\n persistResponse()\n\n // in case we see multiple decide responses, we should only listen with the response from the most recent one\n this._persistDecideOnSessionListener?.()\n this._persistDecideOnSessionListener = this.sessionManager.onSessionId(persistResponse)\n }\n }\n\n log(message: string, level: 'log' | 'warn' | 'error' = 'log') {\n this.instance.sessionRecording?.onRRwebEmit({\n type: 6,\n data: {\n plugin: 'rrweb/console@1',\n payload: {\n level,\n trace: [],\n // Even though it is a string we stringify it as that's what rrweb expects\n payload: [JSON.stringify(message)],\n },\n },\n timestamp: Date.now(),\n })\n }\n\n private _startCapture(startReason?: SessionStartReason) {\n if (isUndefined(Object.assign) || isUndefined(Array.from)) {\n // According to the rrweb docs, rrweb is not supported on IE11 and below:\n // \"rrweb does not support IE11 and below because it uses the MutationObserver API which was supported by these browsers.\"\n // https://github.com/rrweb-io/rrweb/blob/master/guide.md#compatibility-note\n //\n // However, MutationObserver does exist on IE11, it just doesn't work well and does not detect all changes.\n // Instead, when we load \"recorder.js\", the first JS error is about \"Object.assign\" and \"Array.from\" being undefined.\n // Thus instead of MutationObserver, we look for this function and block recording if it's undefined.\n return\n }\n\n // We do not switch recorder versions midway through a recording.\n // do not start if explicitly disabled or if the user has opted out\n if (\n this._captureStarted ||\n this.instance.config.disable_session_recording ||\n this.instance.consent.isOptedOut()\n ) {\n return\n }\n\n this._captureStarted = true\n // We want to ensure the sessionManager is reset if necessary on load of the recorder\n this.sessionManager.checkAndGetSessionAndWindowId()\n\n // If recorder.js is already loaded (if array.full.js snippet is used or posthog-js/dist/recorder is\n // imported), don't load script. Otherwise, remotely import recorder.js from cdn since it hasn't been loaded.\n if (!this.rrwebRecord) {\n assignableWindow.__PosthogExtensions__?.loadExternalDependency?.(this.instance, this.scriptName, (err) => {\n if (err) {\n return logger.error('could not load recorder', err)\n }\n\n this._onScriptLoaded()\n })\n } else {\n this._onScriptLoaded()\n }\n\n logger.info('starting')\n if (this.status === 'active') {\n this._reportStarted(startReason || 'recording_initialized')\n }\n }\n\n private get scriptName(): PostHogExtensionKind {\n return (\n (this.instance?.persistence?.get_property(SESSION_RECORDING_SCRIPT_CONFIG)\n ?.script as PostHogExtensionKind) || 'recorder'\n )\n }\n\n private isInteractiveEvent(event: eventWithTime) {\n return (\n event.type === INCREMENTAL_SNAPSHOT_EVENT_TYPE &&\n ACTIVE_SOURCES.indexOf(event.data?.source as IncrementalSource) !== -1\n )\n }\n\n private _updateWindowAndSessionIds(event: eventWithTime) {\n // Some recording events are triggered by non-user events (e.g. \"X minutes ago\" text updating on the screen).\n // We don't want to extend the session or trigger a new session in these cases. These events are designated by event\n // type -> incremental update, and source -> mutation.\n\n const isUserInteraction = this.isInteractiveEvent(event)\n\n if (!isUserInteraction && !this.isIdle) {\n // We check if the lastActivityTimestamp is old enough to go idle\n const timeSinceLastActivity = event.timestamp - this._lastActivityTimestamp\n if (timeSinceLastActivity > this.sessionIdleThresholdMilliseconds) {\n // we mark as idle right away,\n // or else we get multiple idle events\n // if there are lots of non-user activity events being emitted\n this.isIdle = true\n\n // don't take full snapshots while idle\n clearInterval(this._fullSnapshotTimer)\n\n this._tryAddCustomEvent('sessionIdle', {\n eventTimestamp: event.timestamp,\n lastActivityTimestamp: this._lastActivityTimestamp,\n threshold: this.sessionIdleThresholdMilliseconds,\n bufferLength: this.buffer.data.length,\n bufferSize: this.buffer.size,\n })\n\n // proactively flush the buffer in case the session is idle for a long time\n this._flushBuffer()\n }\n }\n\n let returningFromIdle = false\n if (isUserInteraction) {\n this._lastActivityTimestamp = event.timestamp\n if (this.isIdle) {\n // Remove the idle state\n this.isIdle = false\n this._tryAddCustomEvent('sessionNoLongerIdle', {\n reason: 'user activity',\n type: event.type,\n })\n returningFromIdle = true\n }\n }\n\n if (this.isIdle) {\n return\n }\n\n // We only want to extend the session if it is an interactive event.\n const { windowId, sessionId } = this.sessionManager.checkAndGetSessionAndWindowId(\n !isUserInteraction,\n event.timestamp\n )\n\n const sessionIdChanged = this.sessionId !== sessionId\n const windowIdChanged = this.windowId !== windowId\n\n this.windowId = windowId\n this.sessionId = sessionId\n\n if (sessionIdChanged || windowIdChanged) {\n this.stopRecording()\n this.startIfEnabledOrStop('session_id_changed')\n } else if (returningFromIdle) {\n this._scheduleFullSnapshot()\n }\n }\n\n private _tryRRWebMethod(queuedRRWebEvent: QueuedRRWebEvent): boolean {\n try {\n queuedRRWebEvent.rrwebMethod()\n return true\n } catch (e) {\n // Sometimes a race can occur where the recorder is not fully started yet\n if (this.queuedRRWebEvents.length < 10) {\n this.queuedRRWebEvents.push({\n enqueuedAt: queuedRRWebEvent.enqueuedAt || Date.now(),\n attempt: queuedRRWebEvent.attempt++,\n rrwebMethod: queuedRRWebEvent.rrwebMethod,\n })\n } else {\n logger.warn('could not emit queued rrweb event.', e, queuedRRWebEvent)\n }\n\n return false\n }\n }\n\n private _tryAddCustomEvent(tag: string, payload: any): boolean {\n return this._tryRRWebMethod(newQueuedEvent(() => this.rrwebRecord!.addCustomEvent(tag, payload)))\n }\n\n private _tryTakeFullSnapshot(): boolean {\n return this._tryRRWebMethod(newQueuedEvent(() => this.rrwebRecord!.takeFullSnapshot()))\n }\n\n private _onScriptLoaded() {\n // rrweb config info: https://github.com/rrweb-io/rrweb/blob/7d5d0033258d6c29599fb08412202d9a2c7b9413/src/record/index.ts#L28\n const sessionRecordingOptions: recordOptions = {\n // select set of rrweb config options we expose to our users\n // see https://github.com/rrweb-io/rrweb/blob/master/guide.md\n blockClass: 'ph-no-capture',\n blockSelector: undefined,\n ignoreClass: 'ph-ignore-input',\n maskTextClass: 'ph-mask',\n maskTextSelector: undefined,\n maskTextFn: undefined,\n maskAllInputs: true,\n maskInputOptions: { password: true },\n maskInputFn: undefined,\n slimDOMOptions: {},\n collectFonts: false,\n inlineStylesheet: true,\n recordCrossOriginIframes: false,\n }\n\n // only allows user to set our allow-listed options\n const userSessionRecordingOptions = this.instance.config.session_recording\n for (const [key, value] of Object.entries(userSessionRecordingOptions || {})) {\n if (key in sessionRecordingOptions) {\n if (key === 'maskInputOptions') {\n // ensure password is set if not included\n sessionRecordingOptions.maskInputOptions = { password: true, ...value }\n } else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n sessionRecordingOptions[key] = value\n }\n }\n }\n\n if (this.canvasRecording && this.canvasRecording.enabled) {\n sessionRecordingOptions.recordCanvas = true\n sessionRecordingOptions.sampling = { canvas: this.canvasRecording.fps }\n sessionRecordingOptions.dataURLOptions = { type: 'image/webp', quality: this.canvasRecording.quality }\n }\n\n if (!this.rrwebRecord) {\n logger.error(\n 'onScriptLoaded was called but rrwebRecord is not available. This indicates something has gone wrong.'\n )\n return\n }\n\n this.mutationRateLimiter =\n this.mutationRateLimiter ??\n new MutationRateLimiter(this.rrwebRecord, {\n refillRate: this.instance.config.session_recording.__mutationRateLimiterRefillRate,\n bucketSize: this.instance.config.session_recording.__mutationRateLimiterBucketSize,\n onBlockedNode: (id, node) => {\n const message = `Too many mutations on node '${id}'. Rate limiting. This could be due to SVG animations or something similar`\n logger.info(message, {\n node: node,\n })\n\n this.log(LOGGER_PREFIX + ' ' + message, 'warn')\n },\n })\n\n const activePlugins = this._gatherRRWebPlugins()\n this.stopRrweb = this.rrwebRecord({\n emit: (event) => {\n this.onRRwebEmit(event)\n },\n plugins: activePlugins,\n ...sessionRecordingOptions,\n })\n\n // We reset the last activity timestamp, resetting the idle timer\n this._lastActivityTimestamp = Date.now()\n this.isIdle = false\n\n this._tryAddCustomEvent('$session_options', {\n sessionRecordingOptions,\n activePlugins: activePlugins.map((p) => p?.name),\n })\n\n this._tryAddCustomEvent('$posthog_config', {\n config: this.instance.config,\n })\n }\n\n private _scheduleFullSnapshot(): void {\n if (this._fullSnapshotTimer) {\n clearInterval(this._fullSnapshotTimer)\n }\n // we don't schedule snapshots while idle\n if (this.isIdle) {\n return\n }\n\n const interval = this.fullSnapshotIntervalMillis\n if (!interval) {\n return\n }\n\n this._fullSnapshotTimer = setInterval(() => {\n this._tryTakeFullSnapshot()\n }, interval)\n }\n\n private _gatherRRWebPlugins() {\n const plugins: RecordPlugin<unknown>[] = []\n\n const recordConsolePlugin = assignableWindow.__PosthogExtensions__?.rrwebPlugins?.getRecordConsolePlugin\n if (recordConsolePlugin && this.isConsoleLogCaptureEnabled) {\n plugins.push(recordConsolePlugin())\n }\n\n const networkPlugin = assignableWindow.__PosthogExtensions__?.rrwebPlugins?.getRecordNetworkPlugin\n if (this.networkPayloadCapture && isFunction(networkPlugin)) {\n const canRecordNetwork = !isLocalhost() || this._forceAllowLocalhostNetworkCapture\n\n if (canRecordNetwork) {\n plugins.push(\n networkPlugin(buildNetworkRequestOptions(this.instance.config, this.networkPayloadCapture))\n )\n } else {\n logger.info('NetworkCapture not started because we are on localhost.')\n }\n }\n\n return plugins\n }\n\n onRRwebEmit(rawEvent: eventWithTime) {\n this._processQueuedEvents()\n\n if (!rawEvent || !isObject(rawEvent)) {\n return\n }\n\n if (rawEvent.type === EventType.Meta) {\n const href = this._maskUrl(rawEvent.data.href)\n this._lastHref = href\n if (!href) {\n return\n }\n rawEvent.data.href = href\n } else {\n this._pageViewFallBack()\n }\n\n // Check if the URL matches any trigger patterns\n this._checkUrlTriggerConditions()\n\n if (this._urlBlocked && !isRecordingPausedEvent(rawEvent)) {\n return\n }\n\n // we're processing a full snapshot, so we should reset the timer\n if (rawEvent.type === EventType.FullSnapshot) {\n this._scheduleFullSnapshot()\n }\n\n // Clear the buffer if waiting for a trigger, and only keep data from after the current full snapshot\n if (rawEvent.type === EventType.FullSnapshot && this.triggerStatus === 'trigger_pending') {\n this.clearBuffer()\n }\n\n const throttledEvent = this.mutationRateLimiter\n ? this.mutationRateLimiter.throttleMutations(rawEvent)\n : rawEvent\n\n if (!throttledEvent) {\n return\n }\n\n // TODO: Re-add ensureMaxMessageSize once we are confident in it\n const event = truncateLargeConsoleLogs(throttledEvent)\n\n this._updateWindowAndSessionIds(event)\n\n // When in an idle state we keep recording, but don't capture the events,\n if (this.isIdle && !isSessionIdleEvent(event)) {\n return\n }\n\n if (isSessionIdleEvent(event)) {\n // session idle events have a timestamp when rrweb sees them\n // which can artificially lengthen a session\n // we know when we detected it based on the payload and can correct the timestamp\n const payload = event.data.payload as SessionIdlePayload\n if (payload) {\n const lastActivity = payload.lastActivityTimestamp\n const threshold = payload.threshold\n event.timestamp = lastActivity + threshold\n }\n }\n\n const eventToSend =\n (this.instance.config.session_recording.compress_events ?? true) ? compressEvent(event) : event\n const size = estimateSize(eventToSend)\n\n const properties = {\n $snapshot_bytes: size,\n $snapshot_data: eventToSend,\n $session_id: this.sessionId,\n $window_id: this.windowId,\n }\n\n if (this.status === 'disabled') {\n this.clearBuffer()\n return\n }\n\n this._captureSnapshotBuffered(properties)\n }\n\n private _pageViewFallBack() {\n if (this.instance.config.capture_pageview || !window) {\n return\n }\n const currentUrl = this._maskUrl(window.location.href)\n if (this._lastHref !== currentUrl) {\n this._tryAddCustomEvent('$url_changed', { href: currentUrl })\n this._lastHref = currentUrl\n }\n }\n\n private _processQueuedEvents() {\n if (this.queuedRRWebEvents.length) {\n // if rrweb isn't ready to accept events earlier then we queued them up\n // now that emit has been called rrweb should be ready to accept them\n // so, before we process this event, we try our queued events _once_ each\n // we don't want to risk queuing more things and never exiting this loop!\n // if they fail here, they'll be pushed into a new queue,\n // and tried on the next loop.\n // there is a risk of this queue growing in an uncontrolled manner,\n // so its length is limited elsewhere\n // for now this is to help us ensure we can capture events that happen\n // and try to identify more about when it is failing\n const itemsToProcess = [...this.queuedRRWebEvents]\n this.queuedRRWebEvents = []\n itemsToProcess.forEach((queuedRRWebEvent) => {\n if (Date.now() - queuedRRWebEvent.enqueuedAt <= TWO_SECONDS) {\n this._tryRRWebMethod(queuedRRWebEvent)\n }\n })\n }\n }\n\n private _maskUrl(url: string): string | undefined {\n const userSessionRecordingOptions = this.instance.config.session_recording\n\n if (userSessionRecordingOptions.maskNetworkRequestFn) {\n let networkRequest: NetworkRequest | null | undefined = {\n url,\n }\n\n // TODO we should deprecate this and use the same function for this masking and the rrweb/network plugin\n // TODO or deprecate this and provide a new clearer name so this would be `maskURLPerformanceFn` or similar\n networkRequest = userSessionRecordingOptions.maskNetworkRequestFn(networkRequest)\n\n return networkRequest?.url\n }\n\n return url\n }\n\n private clearBuffer(): SnapshotBuffer {\n this.buffer = {\n size: 0,\n data: [],\n sessionId: this.sessionId,\n windowId: this.windowId,\n }\n return this.buffer\n }\n\n private _flushBuffer(): SnapshotBuffer {\n if (this.flushBufferTimer) {\n clearTimeout(this.flushBufferTimer)\n this.flushBufferTimer = undefined\n }\n\n const minimumDuration = this.minimumDuration\n const sessionDuration = this.sessionDuration\n // if we have old data in the buffer but the session has rotated then the\n // session duration might be negative, in that case we want to flush the buffer\n const isPositiveSessionDuration = isNumber(sessionDuration) && sessionDuration >= 0\n const isBelowMinimumDuration =\n isNumber(minimumDuration) && isPositiveSessionDuration && sessionDuration < minimumDuration\n\n if (\n this.status === 'buffering' ||\n this.status === 'paused' ||\n this.status === 'disabled' ||\n isBelowMinimumDuration\n ) {\n this.flushBufferTimer = setTimeout(() => {\n this._flushBuffer()\n }, RECORDING_BUFFER_TIMEOUT)\n return this.buffer\n }\n\n if (this.buffer.data.length > 0) {\n const snapshotEvents = splitBuffer(this.buffer)\n snapshotEvents.forEach((snapshotBuffer) => {\n this._captureSnapshot({\n $snapshot_bytes: snapshotBuffer.size,\n $snapshot_data: snapshotBuffer.data,\n $session_id: snapshotBuffer.sessionId,\n $window_id: snapshotBuffer.windowId,\n $lib: 'web',\n $lib_version: Config.LIB_VERSION,\n })\n })\n }\n\n // buffer is empty, we clear it in case the session id has changed\n return this.clearBuffer()\n }\n\n private _captureSnapshotBuffered(properties: Properties) {\n const additionalBytes = 2 + (this.buffer?.data.length || 0) // 2 bytes for the array brackets and 1 byte for each comma\n if (\n !this.isIdle && // we never want to flush when idle\n (this.buffer.size + properties.$snapshot_bytes + additionalBytes > RECORDING_MAX_EVENT_SIZE ||\n this.buffer.sessionId !== this.sessionId)\n ) {\n this.buffer = this._flushBuffer()\n }\n\n this.buffer.size += properties.$snapshot_bytes\n this.buffer.data.push(properties.$snapshot_data)\n\n if (!this.flushBufferTimer && !this.isIdle) {\n this.flushBufferTimer = setTimeout(() => {\n this._flushBuffer()\n }, RECORDING_BUFFER_TIMEOUT)\n }\n }\n\n private _captureSnapshot(properties: Properties) {\n // :TRICKY: Make sure we batch these requests, use a custom endpoint and don't truncate the strings.\n this.instance.capture('$snapshot', properties, {\n _url: this.instance.requestRouter.endpointFor('api', this._endpoint),\n _noTruncate: true,\n _batchKey: SESSION_RECORDING_BATCH_KEY,\n skip_client_rate_limiting: true,\n })\n }\n\n private _checkUrlTriggerConditions() {\n if (typeof window === 'undefined' || !window.location.href) {\n return\n }\n\n const url = window.location.href\n\n const wasBlocked = this._urlBlocked\n const isNowBlocked = sessionRecordingUrlTriggerMatches(url, this._urlBlocklist)\n\n if (isNowBlocked && !wasBlocked) {\n this._pauseRecording()\n } else if (!isNowBlocked && wasBlocked) {\n this._resumeRecording()\n }\n\n if (sessionRecordingUrlTriggerMatches(url, this._urlTriggers)) {\n this._activateTrigger('url')\n }\n }\n\n private _activateTrigger(triggerType: TriggerType) {\n if (this.triggerStatus === 'trigger_pending') {\n // status is stored separately for URL and event triggers\n this.instance?.persistence?.register({\n [triggerType === 'url'\n ? SESSION_RECORDING_URL_TRIGGER_ACTIVATED_SESSION\n : SESSION_RECORDING_EVENT_TRIGGER_ACTIVATED_SESSION]: this.sessionId,\n })\n\n this._flushBuffer()\n this._reportStarted((triggerType + '_trigger_matched') as SessionStartReason)\n }\n }\n\n private _pauseRecording() {\n // we check _urlBlocked not status, since more than one thing can affect status\n if (this._urlBlocked) {\n return\n }\n\n // we can't flush the buffer here since someone might be starting on a blocked page,\n // and we need to be sure that we don't record that page\n // so we might not get the below custom event but events will report the paused status\n // which will allow debugging of sessions that start on blocked pages\n this._urlBlocked = true\n\n // Clear the snapshot timer since we don't want new snapshots while paused\n clearInterval(this._fullSnapshotTimer)\n\n logger.info('recording paused due to URL blocker')\n this._tryAddCustomEvent('recording paused', { reason: 'url blocker' })\n }\n\n private _resumeRecording() {\n // we check _urlBlocked not status, since more than one thing can affect status\n if (!this._urlBlocked) {\n return\n }\n\n this._urlBlocked = false\n\n this._tryTakeFullSnapshot()\n this._scheduleFullSnapshot()\n\n this._tryAddCustomEvent('recording resumed', { reason: 'left blocked url' })\n logger.info('recording resumed')\n }\n\n private _addEventTriggerListener() {\n if (this._eventTriggers.length === 0 || !isNullish(this._removeEventTriggerCaptureHook)) {\n return\n }\n\n this._removeEventTriggerCaptureHook = this.instance.on('eventCaptured', (event: CaptureResult) => {\n // If anything could go wrong here it has the potential to block the main loop,\n // so we catch all errors.\n try {\n if (this._eventTriggers.includes(event.event)) {\n this._activateTrigger('event')\n }\n } catch (e) {\n logger.error('Could not activate event trigger', e)\n }\n })\n }\n\n /**\n * this ignores the linked flag config and (if other conditions are met) causes capture to start\n *\n * It is not usual to call this directly,\n * instead call `posthog.startSessionRecording({linked_flag: true})`\n * */\n public overrideLinkedFlag() {\n this._linkedFlagSeen = true\n this._tryTakeFullSnapshot()\n this._reportStarted('linked_flag_overridden')\n }\n\n /**\n * this ignores the sampling config and (if other conditions are met) causes capture to start\n *\n * It is not usual to call this directly,\n * instead call `posthog.startSessionRecording({sampling: true})`\n * */\n public overrideSampling() {\n this.instance.persistence?.register({\n // short-circuits the `makeSamplingDecision` function in the session recording module\n [SESSION_RECORDING_IS_SAMPLED]: true,\n })\n this._tryTakeFullSnapshot()\n this._reportStarted('sampling_overridden')\n }\n\n /**\n * this ignores the URL/Event trigger config and (if other conditions are met) causes capture to start\n *\n * It is not usual to call this directly,\n * instead call `posthog.startSessionRecording({trigger: 'url' | 'event'})`\n * */\n public overrideTrigger(triggerType: TriggerType) {\n this._activateTrigger(triggerType)\n }\n\n private _reportStarted(startReason: SessionStartReason, tagPayload?: Record<string, any>) {\n this.instance.register_for_session({\n $session_recording_start_reason: startReason,\n })\n logger.info(startReason.replace('_', ' '), tagPayload)\n if (!includes(['recording_initialized', 'session_id_changed'], startReason)) {\n this._tryAddCustomEvent(startReason, tagPayload)\n }\n }\n}\n","import { clampToRange } from '../utils/number-utils'\nimport { isArray, isUndefined } from '../utils/type-utils'\n\nexport function appendArray(currentValue: string[] | undefined, sampleType: string | string[]): string[] {\n return [...(currentValue ? currentValue : []), ...(isArray(sampleType) ? sampleType : [sampleType])]\n}\n\nexport function updateThreshold(currentValue: number | undefined, percent: number): number {\n return (isUndefined(currentValue) ? 1 : currentValue) * percent\n}\n\nexport function simpleHash(str: string) {\n let hash = 0\n for (let i = 0; i < str.length; i++) {\n hash = (hash << 5) - hash + str.charCodeAt(i) // (hash * 31) + char code\n hash |= 0 // Convert to 32bit integer\n }\n return Math.abs(hash)\n}\n\n/*\n * receives percent as a number between 0 and 1\n */\nexport function sampleOnProperty(prop: string, percent: number): boolean {\n return simpleHash(prop) % 100 < clampToRange(percent * 100, 0, 100)\n}\n","/**\n * Extend Segment with extra PostHog JS functionality. Required for things like Recordings and feature flags to work correctly.\n *\n * ### Usage\n *\n * ```js\n * // After your standard segment anyalytics install\n * analytics.load(\"GOEDfA21zZTtR7clsBuDvmBKAtAdZ6Np\");\n *\n * analytics.ready(() => {\n * posthog.init('<posthog-api-key>', {\n * capture_pageview: false,\n * segment: window.analytics, // NOTE: Be sure to use window.analytics here!\n * });\n * window.analytics.page();\n * })\n * ```\n */\nimport { PostHog } from '../posthog-core'\nimport { createLogger } from '../utils/logger'\n\nimport { uuidv7 } from '../uuidv7'\nimport { isFunction } from '../utils/type-utils'\nimport { USER_STATE } from '../constants'\n\nconst logger = createLogger('[SegmentIntegration]')\n\nexport type SegmentUser = {\n anonymousId(): string | undefined\n id(): string | undefined\n}\n\nexport type SegmentAnalytics = {\n user: () => SegmentUser | Promise<SegmentUser>\n register: (integration: SegmentPlugin) => Promise<void>\n}\n\n// Loosely based on https://github.com/segmentio/analytics-next/blob/master/packages/core/src/plugins/index.ts\nexport interface SegmentContext {\n event: {\n event: string\n userId?: string\n anonymousId?: string\n properties: any\n }\n}\n\ntype SegmentFunction = (ctx: SegmentContext) => Promise<SegmentContext> | SegmentContext\n\nexport interface SegmentPlugin {\n name: string\n version: string\n type: 'enrichment'\n isLoaded: () => boolean\n load: (ctx: SegmentContext, instance: any, config?: any) => Promise<unknown>\n unload?: (ctx: SegmentContext, instance: any) => Promise<unknown> | unknown\n ready?: () => Promise<unknown>\n track?: SegmentFunction\n identify?: SegmentFunction\n page?: SegmentFunction\n group?: SegmentFunction\n alias?: SegmentFunction\n screen?: SegmentFunction\n}\n\nconst createSegmentIntegration = (posthog: PostHog): SegmentPlugin => {\n if (!Promise || !Promise.resolve) {\n logger.warn('This browser does not have Promise support, and can not use the segment integration')\n }\n\n const enrichEvent = (ctx: SegmentContext, eventName: string | undefined) => {\n if (!eventName) {\n return ctx\n }\n if (!ctx.event.userId && ctx.event.anonymousId !== posthog.get_distinct_id()) {\n // This is our only way of detecting that segment's analytics.reset() has been called so we also call it\n logger.info('No userId set, resetting PostHog')\n posthog.reset()\n }\n if (ctx.event.userId && ctx.event.userId !== posthog.get_distinct_id()) {\n logger.info('UserId set, identifying with PostHog')\n posthog.identify(ctx.event.userId)\n }\n\n const additionalProperties = posthog._calculate_event_properties(\n eventName,\n ctx.event.properties ?? {},\n new Date()\n )\n ctx.event.properties = Object.assign({}, additionalProperties, ctx.event.properties)\n return ctx\n }\n\n return {\n name: 'PostHog JS',\n type: 'enrichment',\n version: '1.0.0',\n isLoaded: () => true,\n // check and early return above\n // eslint-disable-next-line compat/compat\n load: () => Promise.resolve(),\n track: (ctx) => enrichEvent(ctx, ctx.event.event),\n page: (ctx) => enrichEvent(ctx, '$pageview'),\n identify: (ctx) => enrichEvent(ctx, '$identify'),\n screen: (ctx) => enrichEvent(ctx, '$screen'),\n }\n}\n\nfunction setupPostHogFromSegment(posthog: PostHog, done: () => void) {\n const segment = posthog.config.segment\n if (!segment) {\n return done()\n }\n\n const bootstrapUser = (user: SegmentUser) => {\n // Use segments anonymousId instead\n const getSegmentAnonymousId = () => user.anonymousId() || uuidv7()\n posthog.config.get_device_id = getSegmentAnonymousId\n\n // If a segment user ID exists, set it as the distinct_id\n if (user.id()) {\n posthog.register({\n distinct_id: user.id(),\n $device_id: getSegmentAnonymousId(),\n })\n posthog.persistence!.set_property(USER_STATE, 'identified')\n }\n\n done()\n }\n\n const segmentUser = segment.user()\n\n // If segmentUser is a promise then we need to wait for it to resolve\n if ('then' in segmentUser && isFunction(segmentUser.then)) {\n segmentUser.then((user) => bootstrapUser(user))\n } else {\n bootstrapUser(segmentUser as SegmentUser)\n }\n}\n\nexport function setupSegmentIntegration(posthog: PostHog, done: () => void) {\n const segment = posthog.config.segment\n if (!segment) {\n return done()\n }\n\n setupPostHogFromSegment(posthog, () => {\n segment.register(createSegmentIntegration(posthog)).then(() => {\n done()\n })\n })\n}\n","/**\n * Integrate Sentry with PostHog. This will add a direct link to the person in Sentry, and an $exception event in PostHog\n *\n * ### Usage\n *\n * Sentry.init({\n * dsn: 'https://example',\n * integrations: [\n * new posthog.SentryIntegration(posthog)\n * ]\n * })\n *\n * @param {Object} [posthog] The posthog object\n * @param {string} [organization] Optional: The Sentry organization, used to send a direct link from PostHog to Sentry\n * @param {Number} [projectId] Optional: The Sentry project id, used to send a direct link from PostHog to Sentry\n * @param {string} [prefix] Optional: Url of a self-hosted sentry instance (default: https://sentry.io/organizations/)\n * @param {SeverityLevel[] | '*'} [severityAllowList] Optional: send events matching the provided levels. Use '*' to send all events (default: ['error'])\n */\n\nimport { PostHog } from '../posthog-core'\nimport { SeverityLevel } from '../types'\n\n// NOTE - we can't import from @sentry/types because it changes frequently and causes clashes\n// We only use a small subset of the types, so we can just define the integration overall and use any for the rest\n\n// import {\n// Event as _SentryEvent,\n// EventProcessor as _SentryEventProcessor,\n// Hub as _SentryHub,\n// Integration as _SentryIntegration,\n// SeverityLevel as _SeverityLevel,\n// IntegrationClass as _SentryIntegrationClass,\n// } from '@sentry/types'\n\n// Uncomment the above and comment the below to get type checking for development\n\ntype _SentryEvent = any\ntype _SentryException = any\ntype _SentryEventProcessor = any\ntype _SentryHub = any\n\ninterface _SentryIntegration {\n name: string\n processEvent(event: _SentryEvent): _SentryEvent\n}\n\ninterface _SentryIntegrationClass {\n name: string\n setupOnce(addGlobalEventProcessor: (callback: _SentryEventProcessor) => void, getCurrentHub: () => _SentryHub): void\n}\n\ninterface SentryExceptionProperties {\n $sentry_event_id: any\n $sentry_exception: any\n $sentry_exception_message: any\n $sentry_exception_type: any\n $sentry_tags: any\n $sentry_url?: string\n}\n\nexport type SentryIntegrationOptions = {\n organization?: string\n projectId?: number\n prefix?: string\n severityAllowList?: SeverityLevel[] | '*'\n}\n\nconst NAME = 'posthog-js'\n\nexport function createEventProcessor(\n _posthog: PostHog,\n { organization, projectId, prefix, severityAllowList = ['error'] }: SentryIntegrationOptions = {}\n): (event: _SentryEvent) => _SentryEvent {\n return (event) => {\n const shouldProcessLevel = severityAllowList === '*' || severityAllowList.includes(event.level as SeverityLevel)\n if (!shouldProcessLevel || !_posthog.__loaded) return event\n if (!event.tags) event.tags = {}\n\n const personUrl = _posthog.requestRouter.endpointFor(\n 'ui',\n `/project/${_posthog.config.token}/person/${_posthog.get_distinct_id()}`\n )\n event.tags['PostHog Person URL'] = personUrl\n if (_posthog.sessionRecordingStarted()) {\n event.tags['PostHog Recording URL'] = _posthog.get_session_replay_url({ withTimestamp: true })\n }\n\n const exceptions: _SentryException[] = event.exception?.values || []\n\n exceptions.forEach((exception) => {\n if (exception.stacktrace) {\n exception.stacktrace.type = 'raw'\n\n exception.stacktrace.frames.forEach((frame: any) => {\n frame.platform = 'web:javascript'\n })\n }\n })\n\n const data: SentryExceptionProperties & {\n // two properties added to match any exception auto-capture\n // added manually to avoid any dependency on the lazily loaded content\n $exception_message: any\n $exception_type: any\n $exception_list: any\n $exception_personURL: string\n $exception_level: SeverityLevel\n } = {\n // PostHog Exception Properties,\n $exception_message: exceptions[0]?.value || event.message,\n $exception_type: exceptions[0]?.type,\n $exception_personURL: personUrl,\n $exception_level: event.level,\n $exception_list: exceptions,\n // Sentry Exception Properties\n $sentry_event_id: event.event_id,\n $sentry_exception: event.exception,\n $sentry_exception_message: exceptions[0]?.value || event.message,\n $sentry_exception_type: exceptions[0]?.type,\n $sentry_tags: event.tags,\n }\n\n if (organization && projectId) {\n data['$sentry_url'] =\n (prefix || 'https://sentry.io/organizations/') +\n organization +\n '/issues/?project=' +\n projectId +\n '&query=' +\n event.event_id\n }\n\n _posthog.exceptions.sendExceptionEvent(data)\n\n return event\n }\n}\n\n// V8 integration - function based\nexport function sentryIntegration(_posthog: PostHog, options?: SentryIntegrationOptions): _SentryIntegration {\n const processor = createEventProcessor(_posthog, options)\n return {\n name: NAME,\n processEvent(event) {\n return processor(event)\n },\n }\n}\n// V7 integration - class based\nexport class SentryIntegration implements _SentryIntegrationClass {\n name: string\n\n setupOnce: (\n addGlobalEventProcessor: (callback: _SentryEventProcessor) => void,\n getCurrentHub: () => _SentryHub\n ) => void\n\n constructor(\n _posthog: PostHog,\n organization?: string,\n projectId?: number,\n prefix?: string,\n severityAllowList?: SeverityLevel[] | '*'\n ) {\n // setupOnce gets called by Sentry when it intializes the plugin\n this.name = NAME\n this.setupOnce = function (addGlobalEventProcessor: (callback: _SentryEventProcessor) => void) {\n addGlobalEventProcessor(\n createEventProcessor(_posthog, { organization, projectId, prefix, severityAllowList })\n )\n }\n }\n}\n","import { addEventListener, trySafe } from '../utils'\nimport { PostHog } from '../posthog-core'\nimport { ToolbarParams } from '../types'\nimport { _getHashParam } from '../utils/request-utils'\nimport { createLogger } from '../utils/logger'\nimport { window, document, assignableWindow } from '../utils/globals'\nimport { TOOLBAR_ID } from '../constants'\nimport { isFunction, isNullish } from '../utils/type-utils'\n\n// TRICKY: Many web frameworks will modify the route on load, potentially before posthog is initialized.\n// To get ahead of this we grab it as soon as the posthog-js is parsed\nconst STATE_FROM_WINDOW = window?.location\n ? _getHashParam(window.location.hash, '__posthog') || _getHashParam(location.hash, 'state')\n : null\n\nconst LOCALSTORAGE_KEY = '_postHogToolbarParams'\n\nconst logger = createLogger('[Toolbar]')\n\nenum ToolbarState {\n UNINITIALIZED = 0,\n LOADING = 1,\n LOADED = 2,\n}\n\nexport class Toolbar {\n instance: PostHog\n\n constructor(instance: PostHog) {\n this.instance = instance\n }\n\n // NOTE: We store the state of the toolbar in the global scope to avoid multiple instances of the SDK loading the toolbar\n private setToolbarState(state: ToolbarState) {\n assignableWindow['ph_toolbar_state'] = state\n }\n\n private getToolbarState(): ToolbarState {\n return assignableWindow['ph_toolbar_state'] ?? ToolbarState.UNINITIALIZED\n }\n\n /**\n * To load the toolbar, we need an access token and other state. That state comes from one of three places:\n * 1. In the URL hash params\n * 2. From session storage under the key `toolbarParams` if the toolbar was initialized on a previous page\n */\n maybeLoadToolbar(\n location: Location | undefined = undefined,\n localStorage: Storage | undefined = undefined,\n history: History | undefined = undefined\n ): boolean {\n if (!window || !document) {\n return false\n }\n location = location ?? window.location\n history = history ?? window.history\n\n try {\n // Before running the code we check if we can access localStorage, if not we opt-out\n if (!localStorage) {\n try {\n window.localStorage.setItem('test', 'test')\n window.localStorage.removeItem('test')\n } catch {\n return false\n }\n\n // If localStorage was undefined, and localStorage is supported we set the default value\n localStorage = window?.localStorage\n }\n\n /**\n * Info about the state\n * The state is a json object\n * 1. (Legacy) The state can be `state={}` as a urlencoded object of info. In this case\n * 2. The state should now be found in `__posthog={}` and can be base64 encoded or urlencoded.\n * 3. Base64 encoding is preferred and will gradually be rolled out everywhere\n */\n\n const stateHash =\n STATE_FROM_WINDOW || _getHashParam(location.hash, '__posthog') || _getHashParam(location.hash, 'state')\n\n let toolbarParams: ToolbarParams\n const state = stateHash\n ? trySafe(() => JSON.parse(atob(decodeURIComponent(stateHash)))) ||\n trySafe(() => JSON.parse(decodeURIComponent(stateHash)))\n : null\n\n const parseFromUrl = state && state['action'] === 'ph_authorize'\n\n if (parseFromUrl) {\n // happens if they are initializing the toolbar using an old snippet\n toolbarParams = state\n toolbarParams.source = 'url'\n\n if (toolbarParams && Object.keys(toolbarParams).length > 0) {\n if (state['desiredHash']) {\n // hash that was in the url before the redirect\n location.hash = state['desiredHash']\n } else if (history) {\n // second param is unused see https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState\n history.replaceState(history.state, '', location.pathname + location.search) // completely remove hash\n } else {\n location.hash = '' // clear hash (but leaves # unfortunately)\n }\n }\n } else {\n // get credentials from localStorage from a previous initialization\n\n toolbarParams = JSON.parse(localStorage.getItem(LOCALSTORAGE_KEY) || '{}')\n toolbarParams.source = 'localstorage'\n\n // delete \"add-action\" or other intent from toolbarParams, otherwise we'll have the same intent\n // every time we open the page (e.g. you just visiting your own site an hour later)\n delete toolbarParams.userIntent\n }\n\n if (toolbarParams['token'] && this.instance.config.token === toolbarParams['token']) {\n this.loadToolbar(toolbarParams)\n return true\n } else {\n return false\n }\n } catch {\n return false\n }\n }\n\n private _callLoadToolbar(params: ToolbarParams) {\n const loadFn = assignableWindow['ph_load_toolbar'] || assignableWindow['ph_load_editor']\n if (isNullish(loadFn) || !isFunction(loadFn)) {\n logger.warn('No toolbar load function found')\n return\n }\n loadFn(params, this.instance)\n }\n\n loadToolbar(params?: ToolbarParams): boolean {\n const toolbarRunning = !!document?.getElementById(TOOLBAR_ID)\n\n if (!window || toolbarRunning) {\n // The toolbar will clear the localStorage key when it's done with it. If it is present that indicates the toolbar is already open and running\n return false\n }\n\n const disableToolbarMetrics =\n this.instance.requestRouter.region === 'custom' && this.instance.config.advanced_disable_toolbar_metrics\n\n const toolbarParams = {\n token: this.instance.config.token,\n ...params,\n apiURL: this.instance.requestRouter.endpointFor('ui'),\n ...(disableToolbarMetrics ? { instrument: false } : {}),\n }\n window.localStorage.setItem(\n LOCALSTORAGE_KEY,\n JSON.stringify({\n ...toolbarParams,\n source: undefined,\n })\n )\n\n if (this.getToolbarState() === ToolbarState.LOADED) {\n this._callLoadToolbar(toolbarParams)\n } else if (this.getToolbarState() === ToolbarState.UNINITIALIZED) {\n // only load the toolbar once, even if there are multiple instances of PostHogLib\n this.setToolbarState(ToolbarState.LOADING)\n\n assignableWindow.__PosthogExtensions__?.loadExternalDependency?.(this.instance, 'toolbar', (err) => {\n if (err) {\n logger.error('[Toolbar] Failed to load', err)\n this.setToolbarState(ToolbarState.UNINITIALIZED)\n return\n }\n this.setToolbarState(ToolbarState.LOADED)\n this._callLoadToolbar(toolbarParams)\n })\n\n // Turbolinks doesn't fire an onload event but does replace the entire body, including the toolbar.\n // Thus, we ensure the toolbar is only loaded inside the body, and then reloaded on turbolinks:load.\n addEventListener(window, 'turbolinks:load', () => {\n this.setToolbarState(ToolbarState.UNINITIALIZED)\n this.loadToolbar(toolbarParams)\n })\n }\n\n return true\n }\n\n /** @deprecated Use \"loadToolbar\" instead. */\n _loadEditor(params: ToolbarParams): boolean {\n return this.loadToolbar(params)\n }\n\n /** @deprecated Use \"maybeLoadToolbar\" instead. */\n maybeLoadEditor(\n location: Location | undefined = undefined,\n localStorage: Storage | undefined = undefined,\n history: History | undefined = undefined\n ): boolean {\n return this.maybeLoadToolbar(location, localStorage, history)\n }\n}\n","import { PostHog } from '../posthog-core'\nimport { assignableWindow } from '../utils/globals'\nimport { createLogger } from '../utils/logger'\nimport { isUndefined } from '../utils/type-utils'\n\nconst logger = createLogger('[TracingHeaders]')\n\nexport class TracingHeaders {\n private _restoreXHRPatch: (() => void) | undefined = undefined\n private _restoreFetchPatch: (() => void) | undefined = undefined\n\n constructor(private readonly instance: PostHog) {}\n\n private _loadScript(cb: () => void): void {\n if (assignableWindow.__PosthogExtensions__?.tracingHeadersPatchFns) {\n // already loaded\n cb()\n }\n\n assignableWindow.__PosthogExtensions__?.loadExternalDependency?.(this.instance, 'tracing-headers', (err) => {\n if (err) {\n return logger.error('failed to load script', err)\n }\n cb()\n })\n }\n public startIfEnabledOrStop() {\n if (this.instance.config.__add_tracing_headers) {\n this._loadScript(this._startCapturing)\n } else {\n this._restoreXHRPatch?.()\n this._restoreFetchPatch?.()\n // we don't want to call these twice so we reset them\n this._restoreXHRPatch = undefined\n this._restoreFetchPatch = undefined\n }\n }\n\n private _startCapturing = () => {\n if (isUndefined(this._restoreXHRPatch)) {\n assignableWindow.__PosthogExtensions__?.tracingHeadersPatchFns?._patchXHR(this.instance.sessionManager)\n }\n if (isUndefined(this._restoreFetchPatch)) {\n assignableWindow.__PosthogExtensions__?.tracingHeadersPatchFns?._patchFetch(this.instance.sessionManager)\n }\n }\n}\n","import { PostHog } from '../../posthog-core'\nimport { RemoteConfig, SupportedWebVitalsMetrics } from '../../types'\nimport { createLogger } from '../../utils/logger'\nimport { isBoolean, isNullish, isNumber, isObject, isUndefined } from '../../utils/type-utils'\nimport { WEB_VITALS_ALLOWED_METRICS, WEB_VITALS_ENABLED_SERVER_SIDE } from '../../constants'\nimport { assignableWindow, window } from '../../utils/globals'\n\nconst logger = createLogger('[Web Vitals]')\n\ntype WebVitalsMetricCallback = (metric: any) => void\n\nexport const DEFAULT_FLUSH_TO_CAPTURE_TIMEOUT_MILLISECONDS = 5000\nconst ONE_MINUTE_IN_MILLIS = 60 * 1000\nexport const FIFTEEN_MINUTES_IN_MILLIS = 15 * ONE_MINUTE_IN_MILLIS\n\ntype WebVitalsEventBuffer = { url: string | undefined; metrics: any[]; firstMetricTimestamp: number | undefined }\n\nexport class WebVitalsAutocapture {\n private _enabledServerSide: boolean = false\n private _initialized = false\n\n private buffer: WebVitalsEventBuffer = { url: undefined, metrics: [], firstMetricTimestamp: undefined }\n private _delayedFlushTimer: ReturnType<typeof setTimeout> | undefined\n\n constructor(private readonly instance: PostHog) {\n this._enabledServerSide = !!this.instance.persistence?.props[WEB_VITALS_ENABLED_SERVER_SIDE]\n\n this.startIfEnabled()\n }\n\n public get allowedMetrics(): SupportedWebVitalsMetrics[] {\n const clientConfigMetricAllowList: SupportedWebVitalsMetrics[] | undefined = isObject(\n this.instance.config.capture_performance\n )\n ? this.instance.config.capture_performance?.web_vitals_allowed_metrics\n : undefined\n return !isUndefined(clientConfigMetricAllowList)\n ? clientConfigMetricAllowList\n : this.instance.persistence?.props[WEB_VITALS_ALLOWED_METRICS] || ['CLS', 'FCP', 'INP', 'LCP']\n }\n\n public get flushToCaptureTimeoutMs(): number {\n const clientConfig: number | undefined = isObject(this.instance.config.capture_performance)\n ? this.instance.config.capture_performance.web_vitals_delayed_flush_ms\n : undefined\n return clientConfig || DEFAULT_FLUSH_TO_CAPTURE_TIMEOUT_MILLISECONDS\n }\n\n public get _maxAllowedValue(): number {\n const configured =\n isObject(this.instance.config.capture_performance) &&\n isNumber(this.instance.config.capture_performance.__web_vitals_max_value)\n ? this.instance.config.capture_performance.__web_vitals_max_value\n : FIFTEEN_MINUTES_IN_MILLIS\n // you can set to 0 to disable the check or any value over ten seconds\n // 1 milli to 1 minute will be set to 15 minutes, cos that would be a silly low maximum\n return 0 < configured && configured <= ONE_MINUTE_IN_MILLIS ? FIFTEEN_MINUTES_IN_MILLIS : configured\n }\n\n public get isEnabled(): boolean {\n const clientConfig = isObject(this.instance.config.capture_performance)\n ? this.instance.config.capture_performance.web_vitals\n : undefined\n return isBoolean(clientConfig) ? clientConfig : this._enabledServerSide\n }\n\n public startIfEnabled(): void {\n if (this.isEnabled && !this._initialized) {\n logger.info('enabled, starting...')\n this.loadScript(this._startCapturing)\n }\n }\n\n public onRemoteConfig(response: RemoteConfig) {\n const webVitalsOptIn = isObject(response.capturePerformance) && !!response.capturePerformance.web_vitals\n\n const allowedMetrics = isObject(response.capturePerformance)\n ? response.capturePerformance.web_vitals_allowed_metrics\n : undefined\n\n if (this.instance.persistence) {\n this.instance.persistence.register({\n [WEB_VITALS_ENABLED_SERVER_SIDE]: webVitalsOptIn,\n })\n\n this.instance.persistence.register({\n [WEB_VITALS_ALLOWED_METRICS]: allowedMetrics,\n })\n }\n // store this in-memory in case persistence is disabled\n this._enabledServerSide = webVitalsOptIn\n\n this.startIfEnabled()\n }\n\n private loadScript(cb: () => void): void {\n if (assignableWindow.__PosthogExtensions__?.postHogWebVitalsCallbacks) {\n // already loaded\n cb()\n }\n assignableWindow.__PosthogExtensions__?.loadExternalDependency?.(this.instance, 'web-vitals', (err) => {\n if (err) {\n logger.error('failed to load script', err)\n return\n }\n cb()\n })\n }\n\n private _currentURL(): string | undefined {\n // TODO you should be able to mask the URL here\n const href = window ? window.location.href : undefined\n if (!href) {\n logger.error('Could not determine current URL')\n }\n return href\n }\n\n private _flushToCapture = () => {\n clearTimeout(this._delayedFlushTimer)\n if (this.buffer.metrics.length === 0) {\n return\n }\n\n this.instance.capture(\n '$web_vitals',\n this.buffer.metrics.reduce(\n (acc, metric) => ({\n ...acc,\n // the entire event so we can use it in the future e.g. includes google's rating\n [`$web_vitals_${metric.name}_event`]: { ...metric },\n [`$web_vitals_${metric.name}_value`]: metric.value,\n }),\n {}\n )\n )\n this.buffer = { url: undefined, metrics: [], firstMetricTimestamp: undefined }\n }\n\n private _addToBuffer = (metric: any) => {\n const sessionIds = this.instance.sessionManager?.checkAndGetSessionAndWindowId(true)\n if (isUndefined(sessionIds)) {\n logger.error('Could not read session ID. Dropping metrics!')\n return\n }\n\n this.buffer = this.buffer || { url: undefined, metrics: [], firstMetricTimestamp: undefined }\n\n const $currentUrl = this._currentURL()\n if (isUndefined($currentUrl)) {\n return\n }\n\n if (isNullish(metric?.name) || isNullish(metric?.value)) {\n logger.error('Invalid metric received', metric)\n return\n }\n\n // we observe some very large values sometimes, we'll ignore them\n // since the likelihood of LCP > 1 hour being correct is very low\n if (this._maxAllowedValue && metric.value >= this._maxAllowedValue) {\n logger.error('Ignoring metric with value >= ' + this._maxAllowedValue, metric)\n return\n }\n\n const urlHasChanged = this.buffer.url !== $currentUrl\n\n if (urlHasChanged) {\n // we need to send what we have\n this._flushToCapture()\n // poor performance is >4s, we wait twice that time to send\n // this is in case we haven't received all metrics\n // we'll at least gather some\n this._delayedFlushTimer = setTimeout(this._flushToCapture, this.flushToCaptureTimeoutMs)\n }\n\n if (isUndefined(this.buffer.url)) {\n this.buffer.url = $currentUrl\n }\n\n this.buffer.firstMetricTimestamp = isUndefined(this.buffer.firstMetricTimestamp)\n ? Date.now()\n : this.buffer.firstMetricTimestamp\n\n if (metric.attribution && metric.attribution.interactionTargetElement) {\n // we don't want to send the entire element\n // they can be very large\n // TODO we could run this through autocapture code so that we get elements chain info\n // and can display the element in the UI\n metric.attribution.interactionTargetElement = undefined\n }\n\n this.buffer.metrics.push({\n ...metric,\n $current_url: $currentUrl,\n $session_id: sessionIds.sessionId,\n $window_id: sessionIds.windowId,\n timestamp: Date.now(),\n })\n\n if (this.buffer.metrics.length === this.allowedMetrics.length) {\n // we have all allowed metrics\n this._flushToCapture()\n }\n }\n\n private _startCapturing = () => {\n let onLCP: WebVitalsMetricCallback | undefined\n let onCLS: WebVitalsMetricCallback | undefined\n let onFCP: WebVitalsMetricCallback | undefined\n let onINP: WebVitalsMetricCallback | undefined\n\n const posthogExtensions = assignableWindow.__PosthogExtensions__\n if (!isUndefined(posthogExtensions) && !isUndefined(posthogExtensions.postHogWebVitalsCallbacks)) {\n ;({ onLCP, onCLS, onFCP, onINP } = posthogExtensions.postHogWebVitalsCallbacks)\n }\n\n if (!onLCP || !onCLS || !onFCP || !onINP) {\n logger.error('web vitals callbacks not loaded - not starting')\n return\n }\n\n // register performance observers\n if (this.allowedMetrics.indexOf('LCP') > -1) {\n onLCP(this._addToBuffer.bind(this))\n }\n if (this.allowedMetrics.indexOf('CLS') > -1) {\n onCLS(this._addToBuffer.bind(this))\n }\n if (this.allowedMetrics.indexOf('FCP') > -1) {\n onFCP(this._addToBuffer.bind(this))\n }\n if (this.allowedMetrics.indexOf('INP') > -1) {\n onINP(this._addToBuffer.bind(this))\n }\n\n this._initialized = true\n }\n}\n","import RageClick from './extensions/rageclick'\nimport { DeadClickCandidate, Properties, RemoteConfig } from './types'\nimport { PostHog } from './posthog-core'\n\nimport { document, window } from './utils/globals'\nimport { getEventTarget, getParentElement } from './autocapture-utils'\nimport { HEATMAPS_ENABLED_SERVER_SIDE } from './constants'\nimport { isEmptyObject, isNumber, isObject, isUndefined } from './utils/type-utils'\nimport { createLogger } from './utils/logger'\nimport { isElementInToolbar, isElementNode, isTag } from './utils/element-utils'\nimport { DeadClicksAutocapture, isDeadClicksEnabledForHeatmaps } from './extensions/dead-clicks-autocapture'\nimport { includes } from './utils/string-utils'\nimport { addEventListener } from './utils'\n\nconst DEFAULT_FLUSH_INTERVAL = 5000\n\nconst logger = createLogger('[Heatmaps]')\n\ntype HeatmapEventBuffer =\n | {\n [key: string]: Properties[]\n }\n | undefined\n\nfunction elementOrParentPositionMatches(el: Element | null, matches: string[], breakOnElement?: Element): boolean {\n let curEl: Element | null | false = el\n\n while (curEl && isElementNode(curEl) && !isTag(curEl, 'body')) {\n if (curEl === breakOnElement) {\n return false\n }\n\n if (includes(matches, window?.getComputedStyle(curEl).position)) {\n return true\n }\n\n curEl = getParentElement(curEl)\n }\n\n return false\n}\n\nfunction isValidMouseEvent(e: unknown): e is MouseEvent {\n return isObject(e) && 'clientX' in e && 'clientY' in e && isNumber(e.clientX) && isNumber(e.clientY)\n}\n\nexport class Heatmaps {\n instance: PostHog\n rageclicks = new RageClick()\n _enabledServerSide: boolean = false\n _initialized = false\n _mouseMoveTimeout: ReturnType<typeof setTimeout> | undefined\n\n // TODO: Periodically flush this if no other event has taken care of it\n private buffer: HeatmapEventBuffer\n private _flushInterval: ReturnType<typeof setInterval> | null = null\n private deadClicksCapture: DeadClicksAutocapture | undefined\n\n constructor(instance: PostHog) {\n this.instance = instance\n this._enabledServerSide = !!this.instance.persistence?.props[HEATMAPS_ENABLED_SERVER_SIDE]\n }\n\n public get flushIntervalMilliseconds(): number {\n let flushInterval = DEFAULT_FLUSH_INTERVAL\n if (\n isObject(this.instance.config.capture_heatmaps) &&\n this.instance.config.capture_heatmaps.flush_interval_milliseconds\n ) {\n flushInterval = this.instance.config.capture_heatmaps.flush_interval_milliseconds\n }\n return flushInterval\n }\n\n public get isEnabled(): boolean {\n if (!isUndefined(this.instance.config.capture_heatmaps)) {\n return this.instance.config.capture_heatmaps !== false\n }\n if (!isUndefined(this.instance.config.enable_heatmaps)) {\n return this.instance.config.enable_heatmaps\n }\n return this._enabledServerSide\n }\n\n public startIfEnabled(): void {\n if (this.isEnabled) {\n // nested if here since we only want to run the else\n // if this.enabled === false\n // not if this method is called more than once\n if (this._initialized) {\n return\n }\n logger.info('starting...')\n this._setupListeners()\n this._flushInterval = setInterval(this.flush.bind(this), this.flushIntervalMilliseconds)\n } else {\n clearInterval(this._flushInterval ?? undefined)\n this.deadClicksCapture?.stop()\n this.getAndClearBuffer()\n }\n }\n\n public onRemoteConfig(response: RemoteConfig) {\n const optIn = !!response['heatmaps']\n\n if (this.instance.persistence) {\n this.instance.persistence.register({\n [HEATMAPS_ENABLED_SERVER_SIDE]: optIn,\n })\n }\n // store this in-memory in case persistence is disabled\n this._enabledServerSide = optIn\n this.startIfEnabled()\n }\n\n public getAndClearBuffer(): HeatmapEventBuffer {\n const buffer = this.buffer\n this.buffer = undefined\n return buffer\n }\n\n private _onDeadClick(click: DeadClickCandidate): void {\n this._onClick(click.originalEvent, 'deadclick')\n }\n\n private _setupListeners(): void {\n if (!window || !document) {\n return\n }\n\n addEventListener(window, 'beforeunload', this.flush.bind(this))\n\n addEventListener(document, 'click', (e) => this._onClick((e || window?.event) as MouseEvent), { capture: true })\n addEventListener(document, 'mousemove', (e) => this._onMouseMove((e || window?.event) as MouseEvent), {\n capture: true,\n })\n\n this.deadClicksCapture = new DeadClicksAutocapture(\n this.instance,\n isDeadClicksEnabledForHeatmaps,\n this._onDeadClick.bind(this)\n )\n this.deadClicksCapture.startIfEnabled()\n\n this._initialized = true\n }\n\n private _getProperties(e: MouseEvent, type: string): Properties {\n // We need to know if the target element is fixed or not\n // If fixed then we won't account for scrolling\n // If not then we will account for scrolling\n\n const scrollY = this.instance.scrollManager.scrollY()\n const scrollX = this.instance.scrollManager.scrollX()\n const scrollElement = this.instance.scrollManager.scrollElement()\n\n const isFixedOrSticky = elementOrParentPositionMatches(getEventTarget(e), ['fixed', 'sticky'], scrollElement)\n\n return {\n x: e.clientX + (isFixedOrSticky ? 0 : scrollX),\n y: e.clientY + (isFixedOrSticky ? 0 : scrollY),\n target_fixed: isFixedOrSticky,\n type,\n }\n }\n\n private _onClick(e: MouseEvent, type: string = 'click'): void {\n if (isElementInToolbar(e.target) || !isValidMouseEvent(e)) {\n return\n }\n\n const properties = this._getProperties(e, type)\n\n if (this.rageclicks?.isRageClick(e.clientX, e.clientY, new Date().getTime())) {\n this._capture({\n ...properties,\n type: 'rageclick',\n })\n }\n\n this._capture(properties)\n }\n\n private _onMouseMove(e: Event): void {\n if (isElementInToolbar(e.target) || !isValidMouseEvent(e)) {\n return\n }\n\n clearTimeout(this._mouseMoveTimeout)\n\n this._mouseMoveTimeout = setTimeout(() => {\n this._capture(this._getProperties(e as MouseEvent, 'mousemove'))\n }, 500)\n }\n\n private _capture(properties: Properties): void {\n if (!window) {\n return\n }\n\n // TODO we should be able to mask this\n const url = window.location.href\n\n this.buffer = this.buffer || {}\n\n if (!this.buffer[url]) {\n this.buffer[url] = []\n }\n\n this.buffer[url].push(properties)\n }\n\n private flush(): void {\n if (!this.buffer || isEmptyObject(this.buffer)) {\n return\n }\n\n this.instance.capture('$$heatmap', {\n $heatmap_data: this.getAndClearBuffer(),\n })\n }\n}\n","/* eslint camelcase: \"off\" */\n\nimport { each, extend, include, stripEmptyProperties } from './utils'\nimport { cookieStore, localPlusCookieStore, localStore, memoryStore, sessionStore } from './storage'\nimport { PersistentStore, PostHogConfig, Properties } from './types'\nimport {\n ENABLED_FEATURE_FLAGS,\n EVENT_TIMERS_KEY,\n INITIAL_CAMPAIGN_PARAMS,\n INITIAL_PERSON_INFO,\n INITIAL_REFERRER_INFO,\n PERSISTENCE_RESERVED_PROPERTIES,\n} from './constants'\n\nimport { isEmptyObject, isObject, isUndefined } from './utils/type-utils'\nimport { Info } from './utils/event-utils'\nimport { logger } from './utils/logger'\nimport { stripLeadingDollar } from './utils/string-utils'\n\nconst CASE_INSENSITIVE_PERSISTENCE_TYPES: readonly Lowercase<PostHogConfig['persistence']>[] = [\n 'cookie',\n 'localstorage',\n 'localstorage+cookie',\n 'sessionstorage',\n 'memory',\n]\n\nconst parseName = (config: PostHogConfig): string => {\n let token = ''\n if (config['token']) {\n token = config['token'].replace(/\\+/g, 'PL').replace(/\\//g, 'SL').replace(/=/g, 'EQ')\n }\n\n if (config['persistence_name']) {\n return 'ph_' + config['persistence_name']\n } else {\n return 'ph_' + token + '_posthog'\n }\n}\n\n/**\n * PostHog Persistence Object\n * @constructor\n */\nexport class PostHogPersistence {\n private config: PostHogConfig\n props: Properties\n storage: PersistentStore\n campaign_params_saved: boolean\n name: string\n disabled: boolean | undefined\n secure: boolean | undefined\n expire_days: number | undefined\n default_expiry: number | undefined\n cross_subdomain: boolean | undefined\n\n constructor(config: PostHogConfig) {\n this.config = config\n this.props = {}\n this.campaign_params_saved = false\n this.name = parseName(config)\n this.storage = this.buildStorage(config)\n this.load()\n if (config.debug) {\n logger.info('Persistence loaded', config['persistence'], { ...this.props })\n }\n this.update_config(config, config)\n this.save()\n }\n\n private buildStorage(config: PostHogConfig) {\n if (\n CASE_INSENSITIVE_PERSISTENCE_TYPES.indexOf(\n config['persistence'].toLowerCase() as Lowercase<PostHogConfig['persistence']>\n ) === -1\n ) {\n logger.critical(\n 'Unknown persistence type ' + config['persistence'] + '; falling back to localStorage+cookie'\n )\n config['persistence'] = 'localStorage+cookie'\n }\n\n let store: PersistentStore\n // We handle storage type in a case-insensitive way for backwards compatibility\n const storage_type = config['persistence'].toLowerCase() as Lowercase<PostHogConfig['persistence']>\n if (storage_type === 'localstorage' && localStore.is_supported()) {\n store = localStore\n } else if (storage_type === 'localstorage+cookie' && localPlusCookieStore.is_supported()) {\n store = localPlusCookieStore\n } else if (storage_type === 'sessionstorage' && sessionStore.is_supported()) {\n store = sessionStore\n } else if (storage_type === 'memory') {\n store = memoryStore\n } else if (storage_type === 'cookie') {\n store = cookieStore\n } else if (localPlusCookieStore.is_supported()) {\n // selected storage type wasn't supported, fallback to 'localstorage+cookie' if possible\n store = localPlusCookieStore\n } else {\n store = cookieStore\n }\n\n return store\n }\n\n properties(): Properties {\n const p: Properties = {}\n // Filter out reserved properties\n each(this.props, function (v, k) {\n if (k === ENABLED_FEATURE_FLAGS && isObject(v)) {\n const keys = Object.keys(v)\n for (let i = 0; i < keys.length; i++) {\n p[`$feature/${keys[i]}`] = v[keys[i]]\n }\n } else if (!include(PERSISTENCE_RESERVED_PROPERTIES, k)) {\n p[k] = v\n }\n })\n return p\n }\n\n load(): void {\n if (this.disabled) {\n return\n }\n\n const entry = this.storage.parse(this.name)\n\n if (entry) {\n this.props = extend({}, entry)\n }\n }\n\n /**\n * NOTE: Saving frequently causes issues with Recordings and Consent Management Platform (CMP) tools which\n * observe cookie changes, and modify their UI, often causing infinite loops.\n * As such callers of this should ideally check that the data has changed beforehand\n */\n save(): void {\n if (this.disabled) {\n return\n }\n this.storage.set(this.name, this.props, this.expire_days, this.cross_subdomain, this.secure, this.config.debug)\n }\n\n remove(): void {\n // remove both domain and subdomain cookies\n this.storage.remove(this.name, false)\n this.storage.remove(this.name, true)\n }\n\n // removes the storage entry and deletes all loaded data\n // forced name for tests\n\n clear(): void {\n this.remove()\n this.props = {}\n }\n\n /**\n * @param {Object} props\n * @param {*=} default_value\n * @param {number=} days\n */\n\n register_once(props: Properties, default_value: any, days?: number): boolean {\n if (isObject(props)) {\n if (isUndefined(default_value)) {\n default_value = 'None'\n }\n this.expire_days = isUndefined(days) ? this.default_expiry : days\n\n let hasChanges = false\n\n each(props, (val, prop) => {\n if (!this.props.hasOwnProperty(prop) || this.props[prop] === default_value) {\n this.props[prop] = val\n hasChanges = true\n }\n })\n\n if (hasChanges) {\n this.save()\n return true\n }\n }\n return false\n }\n\n /**\n * @param {Object} props\n * @param {number=} days\n */\n\n register(props: Properties, days?: number): boolean {\n if (isObject(props)) {\n this.expire_days = isUndefined(days) ? this.default_expiry : days\n\n let hasChanges = false\n\n each(props, (val, prop) => {\n if (props.hasOwnProperty(prop) && this.props[prop] !== val) {\n this.props[prop] = val\n hasChanges = true\n }\n })\n\n if (hasChanges) {\n this.save()\n return true\n }\n }\n return false\n }\n\n unregister(prop: string): void {\n if (prop in this.props) {\n delete this.props[prop]\n this.save()\n }\n }\n\n update_campaign_params(): void {\n if (!this.campaign_params_saved) {\n const campaignParams = Info.campaignParams({\n customTrackedParams: this.config.custom_campaign_params,\n maskPersonalDataProperties: this.config.mask_personal_data_properties,\n customPersonalDataProperties: this.config.custom_personal_data_properties,\n })\n // only save campaign params if there were any\n if (!isEmptyObject(stripEmptyProperties(campaignParams))) {\n this.register(campaignParams)\n }\n this.campaign_params_saved = true\n }\n }\n update_search_keyword(): void {\n this.register(Info.searchInfo())\n }\n\n update_referrer_info(): void {\n this.register_once(Info.referrerInfo(), undefined)\n }\n\n set_initial_person_info(): void {\n if (this.props[INITIAL_CAMPAIGN_PARAMS] || this.props[INITIAL_REFERRER_INFO]) {\n // the user has initial properties stored the previous way, don't save them again\n return\n }\n\n this.register_once(\n {\n [INITIAL_PERSON_INFO]: Info.personInfo({\n maskPersonalDataProperties: this.config.mask_personal_data_properties,\n customPersonalDataProperties: this.config.custom_personal_data_properties,\n }),\n },\n undefined\n )\n }\n\n get_referrer_info(): Properties {\n return stripEmptyProperties({\n $referrer: this['props']['$referrer'],\n $referring_domain: this['props']['$referring_domain'],\n })\n }\n\n get_initial_props(): Properties {\n const p: Properties = {}\n\n // this section isn't written to anymore, but we should keep reading from it for backwards compatibility\n // for a while\n each([INITIAL_REFERRER_INFO, INITIAL_CAMPAIGN_PARAMS], (key) => {\n const initialReferrerInfo = this.props[key]\n if (initialReferrerInfo) {\n each(initialReferrerInfo, function (v, k) {\n p['$initial_' + stripLeadingDollar(k)] = v\n })\n }\n })\n const initialPersonInfo = this.props[INITIAL_PERSON_INFO]\n if (initialPersonInfo) {\n const initialPersonProps = Info.initialPersonPropsFromInfo(initialPersonInfo)\n extend(p, initialPersonProps)\n }\n\n return p\n }\n\n // safely fills the passed in object with stored properties,\n // does not override any properties defined in both\n // returns the passed in object\n\n safe_merge(props: Properties): Properties {\n each(this.props, function (val, prop) {\n if (!(prop in props)) {\n props[prop] = val\n }\n })\n\n return props\n }\n\n update_config(config: PostHogConfig, oldConfig: PostHogConfig): void {\n this.default_expiry = this.expire_days = config['cookie_expiration']\n this.set_disabled(config['disable_persistence'])\n this.set_cross_subdomain(config['cross_subdomain_cookie'])\n this.set_secure(config['secure_cookie'])\n\n if (config.persistence !== oldConfig.persistence) {\n // If the persistence type has changed, we need to migrate the data.\n const newStore = this.buildStorage(config)\n const props = this.props\n\n // clear the old store\n this.clear()\n this.storage = newStore\n this.props = props\n\n this.save()\n }\n }\n\n set_disabled(disabled: boolean): void {\n this.disabled = disabled\n if (this.disabled) {\n this.remove()\n } else {\n this.save()\n }\n }\n\n set_cross_subdomain(cross_subdomain: boolean): void {\n if (cross_subdomain !== this.cross_subdomain) {\n this.cross_subdomain = cross_subdomain\n this.remove()\n this.save()\n }\n }\n\n get_cross_subdomain(): boolean {\n return !!this.cross_subdomain\n }\n\n set_secure(secure: boolean): void {\n if (secure !== this.secure) {\n this.secure = secure\n this.remove()\n this.save()\n }\n }\n\n set_event_timer(event_name: string, timestamp: number): void {\n const timers = this.props[EVENT_TIMERS_KEY] || {}\n timers[event_name] = timestamp\n this.props[EVENT_TIMERS_KEY] = timers\n this.save()\n }\n\n remove_event_timer(event_name: string): number {\n const timers = this.props[EVENT_TIMERS_KEY] || {}\n const timestamp = timers[event_name]\n if (!isUndefined(timestamp)) {\n delete this.props[EVENT_TIMERS_KEY][event_name]\n this.save()\n }\n return timestamp\n }\n\n get_property(prop: string): any {\n return this.props[prop]\n }\n\n set_property(prop: string, to: any): void {\n this.props[prop] = to\n this.save()\n }\n}\n","/**\n * Having Survey types in types.ts was confusing tsc\n * and generating an invalid module.d.ts\n * See https://github.com/PostHog/posthog-js/issues/698\n */\n\nexport interface SurveyAppearance {\n // keep in sync with frontend/src/types.ts -> SurveyAppearance\n backgroundColor?: string\n submitButtonColor?: string\n // text color is deprecated, use auto contrast text color instead\n textColor?: string\n // deprecate submit button text eventually\n submitButtonText?: string\n submitButtonTextColor?: string\n descriptionTextColor?: string\n ratingButtonColor?: string\n ratingButtonActiveColor?: string\n ratingButtonHoverColor?: string\n whiteLabel?: boolean\n autoDisappear?: boolean\n displayThankYouMessage?: boolean\n thankYouMessageHeader?: string\n thankYouMessageDescription?: string\n thankYouMessageDescriptionContentType?: SurveyQuestionDescriptionContentType\n thankYouMessageCloseButtonText?: string\n borderColor?: string\n position?: 'left' | 'right' | 'center'\n placeholder?: string\n shuffleQuestions?: boolean\n surveyPopupDelaySeconds?: number\n // widget options\n widgetType?: 'button' | 'tab' | 'selector'\n widgetSelector?: string\n widgetLabel?: string\n widgetColor?: string\n fontFamily?: string\n // questionable: Not in frontend/src/types.ts -> SurveyAppearance, but used in site app\n maxWidth?: string\n zIndex?: string\n}\n\nexport enum SurveyType {\n Popover = 'popover',\n API = 'api',\n Widget = 'widget',\n}\n\nexport type SurveyQuestion = BasicSurveyQuestion | LinkSurveyQuestion | RatingSurveyQuestion | MultipleSurveyQuestion\n\nexport type SurveyQuestionDescriptionContentType = 'html' | 'text'\n\ninterface SurveyQuestionBase {\n question: string\n description?: string | null\n descriptionContentType?: SurveyQuestionDescriptionContentType\n optional?: boolean\n buttonText?: string\n originalQuestionIndex: number\n branching?: NextQuestionBranching | EndBranching | ResponseBasedBranching | SpecificQuestionBranching\n}\n\nexport interface BasicSurveyQuestion extends SurveyQuestionBase {\n type: SurveyQuestionType.Open\n}\n\nexport interface LinkSurveyQuestion extends SurveyQuestionBase {\n type: SurveyQuestionType.Link\n link?: string | null\n}\n\nexport interface RatingSurveyQuestion extends SurveyQuestionBase {\n type: SurveyQuestionType.Rating\n display: 'number' | 'emoji'\n scale: 3 | 5 | 7 | 10\n lowerBoundLabel: string\n upperBoundLabel: string\n}\n\nexport interface MultipleSurveyQuestion extends SurveyQuestionBase {\n type: SurveyQuestionType.SingleChoice | SurveyQuestionType.MultipleChoice\n choices: string[]\n hasOpenChoice?: boolean\n shuffleOptions?: boolean\n}\n\nexport enum SurveyQuestionType {\n Open = 'open',\n MultipleChoice = 'multiple_choice',\n SingleChoice = 'single_choice',\n Rating = 'rating',\n Link = 'link',\n}\n\nexport enum SurveyQuestionBranchingType {\n NextQuestion = 'next_question',\n End = 'end',\n ResponseBased = 'response_based',\n SpecificQuestion = 'specific_question',\n}\n\ninterface NextQuestionBranching {\n type: SurveyQuestionBranchingType.NextQuestion\n}\n\ninterface EndBranching {\n type: SurveyQuestionBranchingType.End\n}\n\ninterface ResponseBasedBranching {\n type: SurveyQuestionBranchingType.ResponseBased\n responseValues: Record<string, any>\n}\n\ninterface SpecificQuestionBranching {\n type: SurveyQuestionBranchingType.SpecificQuestion\n index: number\n}\n\nexport interface SurveyResponse {\n surveys: Survey[]\n}\n\nexport type SurveyCallback = (surveys: Survey[]) => void\n\nexport type SurveyMatchType = 'regex' | 'not_regex' | 'exact' | 'is_not' | 'icontains' | 'not_icontains'\n\nexport interface SurveyElement {\n text?: string\n $el_text?: string\n tag_name?: string\n href?: string\n attr_id?: string\n attr_class?: string[]\n nth_child?: number\n nth_of_type?: number\n attributes?: Record<string, any>\n event_id?: number\n order?: number\n group_id?: number\n}\nexport interface SurveyRenderReason {\n visible: boolean\n disabledReason?: string\n}\n\nexport enum SurveySchedule {\n Once = 'once',\n Recurring = 'recurring',\n Always = 'always',\n}\n\nexport interface Survey {\n // Sync this with the backend's SurveyAPISerializer!\n id: string\n name: string\n description: string\n type: SurveyType\n feature_flag_keys:\n | {\n key: string\n value?: string\n }[]\n | null\n linked_flag_key: string | null\n targeting_flag_key: string | null\n internal_targeting_flag_key: string | null\n questions: SurveyQuestion[]\n appearance: SurveyAppearance | null\n conditions: {\n url?: string\n selector?: string\n seenSurveyWaitPeriodInDays?: number\n urlMatchType?: SurveyMatchType\n events: {\n repeatedActivation?: boolean\n values: {\n name: string\n }[]\n } | null\n actions: {\n values: SurveyActionType[]\n } | null\n deviceTypes?: string[]\n deviceTypesMatchType?: SurveyMatchType\n } | null\n start_date: string | null\n end_date: string | null\n current_iteration: number | null\n current_iteration_start_date: string | null\n schedule?: SurveySchedule | null\n}\n\nexport interface SurveyActionType {\n id: number\n name: string | null\n steps?: ActionStepType[]\n}\n\n/** Sync with plugin-server/src/types.ts */\nexport type ActionStepStringMatching = 'contains' | 'exact' | 'regex'\n\nexport interface ActionStepType {\n event?: string | null\n selector?: string | null\n /** @deprecated Only `selector` should be used now. */\n tag_name?: string\n text?: string | null\n /** @default StringMatching.Exact */\n text_matching?: ActionStepStringMatching | null\n href?: string | null\n /** @default ActionStepStringMatching.Exact */\n href_matching?: ActionStepStringMatching | null\n url?: string | null\n /** @default StringMatching.Contains */\n url_matching?: ActionStepStringMatching | null\n}\n","import { window } from './utils/globals'\nimport { PostHog } from './posthog-core'\nimport { isUndefined } from './utils/type-utils'\nimport { clampToRange } from './utils/number-utils'\nimport { extend } from './utils'\n\ninterface PageViewEventProperties {\n $pageview_id?: string\n $prev_pageview_id?: string\n $prev_pageview_pathname?: string\n $prev_pageview_duration?: number // seconds\n $prev_pageview_last_scroll?: number\n $prev_pageview_last_scroll_percentage?: number\n $prev_pageview_max_scroll?: number\n $prev_pageview_max_scroll_percentage?: number\n $prev_pageview_last_content?: number\n $prev_pageview_last_content_percentage?: number\n $prev_pageview_max_content?: number\n $prev_pageview_max_content_percentage?: number\n}\n\n// This keeps track of the PageView state (such as the previous PageView's path, timestamp, id, and scroll properties).\n// We store the state in memory, which means that for non-SPA sites, the state will be lost on page reload. This means\n// that non-SPA sites should always send a $pageleave event on any navigation, before the page unloads. For SPA sites,\n// they only need to send a $pageleave event when the user navigates away from the site, as the information is not lost\n// on an internal navigation, and is included as the $prev_pageview_ properties in the next $pageview event.\n\n// Practically, this means that to find the scroll properties for a given pageview, you need to find the event where\n// event name is $pageview or $pageleave and where $prev_pageview_id matches the original pageview event's id.\n\nexport class PageViewManager {\n _currentPageview?: { timestamp: Date; pageViewId: string | undefined; pathname: string | undefined }\n _instance: PostHog\n\n constructor(instance: PostHog) {\n this._instance = instance\n }\n\n doPageView(timestamp: Date, pageViewId?: string): PageViewEventProperties {\n const response = this._previousPageViewProperties(timestamp, pageViewId)\n\n // On a pageview we reset the contexts\n this._currentPageview = { pathname: window?.location.pathname ?? '', pageViewId, timestamp }\n this._instance.scrollManager.resetContext()\n\n return response\n }\n\n doPageLeave(timestamp: Date): PageViewEventProperties {\n return this._previousPageViewProperties(timestamp, this._currentPageview?.pageViewId)\n }\n\n doEvent(): PageViewEventProperties {\n return { $pageview_id: this._currentPageview?.pageViewId }\n }\n\n private _previousPageViewProperties(timestamp: Date, pageviewId: string | undefined): PageViewEventProperties {\n const previousPageView = this._currentPageview\n\n if (!previousPageView) {\n return { $pageview_id: pageviewId }\n }\n\n let properties: PageViewEventProperties = {\n $pageview_id: pageviewId,\n $prev_pageview_id: previousPageView.pageViewId,\n }\n\n const scrollContext = this._instance.scrollManager.getContext()\n\n if (scrollContext && !this._instance.config.disable_scroll_properties) {\n let { maxScrollHeight, lastScrollY, maxScrollY, maxContentHeight, lastContentY, maxContentY } =\n scrollContext\n\n if (\n !isUndefined(maxScrollHeight) &&\n !isUndefined(lastScrollY) &&\n !isUndefined(maxScrollY) &&\n !isUndefined(maxContentHeight) &&\n !isUndefined(lastContentY) &&\n !isUndefined(maxContentY)\n ) {\n // Use ceil, so that e.g. scrolling 999.5px of a 1000px page is considered 100% scrolled\n maxScrollHeight = Math.ceil(maxScrollHeight)\n lastScrollY = Math.ceil(lastScrollY)\n maxScrollY = Math.ceil(maxScrollY)\n maxContentHeight = Math.ceil(maxContentHeight)\n lastContentY = Math.ceil(lastContentY)\n maxContentY = Math.ceil(maxContentY)\n\n // if the maximum scroll height is near 0, then the percentage is 1\n const lastScrollPercentage =\n maxScrollHeight <= 1 ? 1 : clampToRange(lastScrollY / maxScrollHeight, 0, 1)\n const maxScrollPercentage = maxScrollHeight <= 1 ? 1 : clampToRange(maxScrollY / maxScrollHeight, 0, 1)\n const lastContentPercentage =\n maxContentHeight <= 1 ? 1 : clampToRange(lastContentY / maxContentHeight, 0, 1)\n const maxContentPercentage =\n maxContentHeight <= 1 ? 1 : clampToRange(maxContentY / maxContentHeight, 0, 1)\n\n properties = extend(properties, {\n $prev_pageview_last_scroll: lastScrollY,\n $prev_pageview_last_scroll_percentage: lastScrollPercentage,\n $prev_pageview_max_scroll: maxScrollY,\n $prev_pageview_max_scroll_percentage: maxScrollPercentage,\n $prev_pageview_last_content: lastContentY,\n $prev_pageview_last_content_percentage: lastContentPercentage,\n $prev_pageview_max_content: maxContentY,\n $prev_pageview_max_content_percentage: maxContentPercentage,\n })\n }\n }\n\n if (previousPageView.pathname) {\n properties.$prev_pageview_pathname = previousPageView.pathname\n }\n if (previousPageView.timestamp) {\n // Use seconds, for consistency with our other duration-related properties like $duration\n properties.$prev_pageview_duration = (timestamp.getTime() - previousPageView.timestamp.getTime()) / 1000\n }\n\n return properties\n }\n}\n","import { PostHog } from './posthog-core'\nimport { Properties } from './types'\n\nexport class PostHogExceptions {\n constructor(private readonly instance: PostHog) {}\n\n /**\n * :TRICKY: Make sure we batch these requests\n */\n sendExceptionEvent(properties: Properties) {\n this.instance.capture('$exception', properties, {\n _noTruncate: true,\n _batchKey: 'exceptionEvent',\n })\n }\n}\n","import { entries, extend } from './utils'\nimport { PostHog } from './posthog-core'\nimport {\n DecideResponse,\n FeatureFlagsCallback,\n EarlyAccessFeatureCallback,\n EarlyAccessFeatureResponse,\n Properties,\n JsonType,\n Compression,\n EarlyAccessFeature,\n RemoteConfigFeatureFlagCallback,\n} from './types'\nimport { PostHogPersistence } from './posthog-persistence'\n\nimport {\n PERSISTENCE_EARLY_ACCESS_FEATURES,\n ENABLED_FEATURE_FLAGS,\n STORED_GROUP_PROPERTIES_KEY,\n STORED_PERSON_PROPERTIES_KEY,\n FLAG_CALL_REPORTED,\n} from './constants'\n\nimport { isArray } from './utils/type-utils'\nimport { createLogger } from './utils/logger'\n\nconst logger = createLogger('[FeatureFlags]')\n\nconst PERSISTENCE_ACTIVE_FEATURE_FLAGS = '$active_feature_flags'\nconst PERSISTENCE_OVERRIDE_FEATURE_FLAGS = '$override_feature_flags'\nconst PERSISTENCE_FEATURE_FLAG_PAYLOADS = '$feature_flag_payloads'\nconst PERSISTENCE_OVERRIDE_FEATURE_FLAG_PAYLOADS = '$override_feature_flag_payloads'\n\nexport const filterActiveFeatureFlags = (featureFlags?: Record<string, string | boolean>) => {\n const activeFeatureFlags: Record<string, string | boolean> = {}\n for (const [key, value] of entries(featureFlags || {})) {\n if (value) {\n activeFeatureFlags[key] = value\n }\n }\n return activeFeatureFlags\n}\n\nexport const parseFeatureFlagDecideResponse = (\n response: Partial<DecideResponse>,\n persistence: PostHogPersistence,\n currentFlags: Record<string, string | boolean> = {},\n currentFlagPayloads: Record<string, JsonType> = {}\n) => {\n const flags = response['featureFlags']\n const flagPayloads = response['featureFlagPayloads']\n if (!flags) {\n return\n }\n // using the v1 api\n if (isArray(flags)) {\n const $enabled_feature_flags: Record<string, boolean> = {}\n if (flags) {\n for (let i = 0; i < flags.length; i++) {\n $enabled_feature_flags[flags[i]] = true\n }\n }\n persistence &&\n persistence.register({\n [PERSISTENCE_ACTIVE_FEATURE_FLAGS]: flags,\n [ENABLED_FEATURE_FLAGS]: $enabled_feature_flags,\n })\n return\n }\n\n // using the v2+ api\n let newFeatureFlags = flags\n let newFeatureFlagPayloads = flagPayloads\n if (response.errorsWhileComputingFlags) {\n // if not all flags were computed, we upsert flags instead of replacing them\n newFeatureFlags = { ...currentFlags, ...newFeatureFlags }\n newFeatureFlagPayloads = { ...currentFlagPayloads, ...newFeatureFlagPayloads }\n }\n persistence &&\n persistence.register({\n [PERSISTENCE_ACTIVE_FEATURE_FLAGS]: Object.keys(filterActiveFeatureFlags(newFeatureFlags)),\n [ENABLED_FEATURE_FLAGS]: newFeatureFlags || {},\n [PERSISTENCE_FEATURE_FLAG_PAYLOADS]: newFeatureFlagPayloads || {},\n })\n}\n\ntype FeatureFlagOverrides = {\n [flagName: string]: string | boolean\n}\n\ntype FeatureFlagPayloadOverrides = {\n [flagName: string]: JsonType\n}\n\ntype FeatureFlagOverrideOptions = {\n flags?: boolean | string[] | FeatureFlagOverrides\n payloads?: FeatureFlagPayloadOverrides\n suppressWarning?: boolean\n}\n\ntype OverrideFeatureFlagsOptions =\n | boolean // clear all overrides\n | string[] // enable list of flags\n | FeatureFlagOverrides // set variants directly\n | FeatureFlagOverrideOptions\n\nexport class PostHogFeatureFlags {\n _override_warning: boolean = false\n featureFlagEventHandlers: FeatureFlagsCallback[]\n $anon_distinct_id: string | undefined\n private _hasLoadedFlags: boolean = false\n private _requestInFlight: boolean = false\n private _reloadingDisabled: boolean = false\n private _additionalReloadRequested: boolean = false\n private _reloadDebouncer?: any\n private _decideCalled: boolean = false\n private _flagsLoadedFromRemote: boolean = false\n\n constructor(private instance: PostHog) {\n this.featureFlagEventHandlers = []\n }\n\n decide(): void {\n if (this.instance.config.__preview_remote_config) {\n // If remote config is enabled we don't call decide and we mark it as called so that we don't simulate it\n this._decideCalled = true\n return\n }\n\n // TRICKY: We want to disable flags if we don't have a queued reload, and one of the settings exist for disabling on first load\n const disableFlags =\n !this._reloadDebouncer &&\n (this.instance.config.advanced_disable_feature_flags ||\n this.instance.config.advanced_disable_feature_flags_on_first_load)\n\n this._callDecideEndpoint({\n disableFlags,\n })\n }\n\n get hasLoadedFlags(): boolean {\n return this._hasLoadedFlags\n }\n\n getFlags(): string[] {\n return Object.keys(this.getFlagVariants())\n }\n\n getFlagVariants(): Record<string, string | boolean> {\n const enabledFlags = this.instance.get_property(ENABLED_FEATURE_FLAGS)\n const overriddenFlags = this.instance.get_property(PERSISTENCE_OVERRIDE_FEATURE_FLAGS)\n if (!overriddenFlags) {\n return enabledFlags || {}\n }\n\n const finalFlags = extend({}, enabledFlags)\n const overriddenKeys = Object.keys(overriddenFlags)\n for (let i = 0; i < overriddenKeys.length; i++) {\n finalFlags[overriddenKeys[i]] = overriddenFlags[overriddenKeys[i]]\n }\n if (!this._override_warning) {\n logger.warn(' Overriding feature flags!', {\n enabledFlags,\n overriddenFlags,\n finalFlags,\n })\n this._override_warning = true\n }\n return finalFlags\n }\n\n getFlagPayloads(): Record<string, JsonType> {\n const flagPayloads = this.instance.get_property(PERSISTENCE_FEATURE_FLAG_PAYLOADS)\n const overriddenPayloads = this.instance.get_property(PERSISTENCE_OVERRIDE_FEATURE_FLAG_PAYLOADS)\n\n if (!overriddenPayloads) {\n return flagPayloads || {}\n }\n\n const finalPayloads = extend({}, flagPayloads || {})\n const overriddenKeys = Object.keys(overriddenPayloads)\n for (let i = 0; i < overriddenKeys.length; i++) {\n finalPayloads[overriddenKeys[i]] = overriddenPayloads[overriddenKeys[i]]\n }\n\n if (!this._override_warning) {\n logger.warn(' Overriding feature flag payloads!', {\n flagPayloads,\n overriddenPayloads,\n finalPayloads,\n })\n this._override_warning = true\n }\n return finalPayloads\n }\n\n /**\n * Reloads feature flags asynchronously.\n *\n * Constraints:\n *\n * 1. Avoid parallel requests\n * 2. Delay a few milliseconds after each reloadFeatureFlags call to batch subsequent changes together\n */\n reloadFeatureFlags(): void {\n if (this._reloadingDisabled || this.instance.config.advanced_disable_feature_flags) {\n // If reloading has been explicitly disabled then we don't want to do anything\n // Or if feature flags are disabled\n return\n }\n\n if (this._reloadDebouncer) {\n // If we're already in a debounce then we don't want to do anything\n return\n }\n\n // Debounce multiple calls on the same tick\n this._reloadDebouncer = setTimeout(() => {\n this._callDecideEndpoint()\n }, 5)\n }\n\n private clearDebouncer(): void {\n clearTimeout(this._reloadDebouncer)\n this._reloadDebouncer = undefined\n }\n\n ensureFlagsLoaded(): void {\n if (this._hasLoadedFlags || this._requestInFlight || this._reloadDebouncer) {\n // If we are or have already loaded the flags then we don't want to do anything\n return\n }\n\n this.reloadFeatureFlags()\n }\n\n setAnonymousDistinctId(anon_distinct_id: string): void {\n this.$anon_distinct_id = anon_distinct_id\n }\n\n setReloadingPaused(isPaused: boolean): void {\n this._reloadingDisabled = isPaused\n }\n\n /**\n * NOTE: This is used both for flags and remote config. Once the RemoteConfig is fully released this will essentially only\n * be for flags and can eventually be replaced with the new flags endpoint\n */\n _callDecideEndpoint(options?: { disableFlags?: boolean }): void {\n // Ensure we don't have double queued decide requests\n this.clearDebouncer()\n if (this.instance.config.advanced_disable_decide) {\n // The way this is documented is essentially used to refuse to ever call the decide endpoint.\n return\n }\n if (this._requestInFlight) {\n this._additionalReloadRequested = true\n return\n }\n const token = this.instance.config.token\n const data: Record<string, any> = {\n token: token,\n distinct_id: this.instance.get_distinct_id(),\n groups: this.instance.getGroups(),\n $anon_distinct_id: this.$anon_distinct_id,\n person_properties: this.instance.get_property(STORED_PERSON_PROPERTIES_KEY),\n group_properties: this.instance.get_property(STORED_GROUP_PROPERTIES_KEY),\n }\n\n if (options?.disableFlags || this.instance.config.advanced_disable_feature_flags) {\n data.disable_flags = true\n }\n\n this._requestInFlight = true\n this.instance._send_request({\n method: 'POST',\n url: this.instance.requestRouter.endpointFor('api', '/decide/?v=3'),\n data,\n compression: this.instance.config.disable_compression ? undefined : Compression.Base64,\n timeout: this.instance.config.feature_flag_request_timeout_ms,\n callback: (response) => {\n let errorsLoading = true\n\n if (response.statusCode === 200) {\n // successful request\n // reset anon_distinct_id after at least a single request with it\n // makes it through\n this.$anon_distinct_id = undefined\n errorsLoading = false\n }\n\n this._requestInFlight = false\n\n if (!this._decideCalled) {\n this._decideCalled = true\n this.instance._onRemoteConfig(response.json ?? {})\n }\n\n if (data.disable_flags) {\n // If flags are disabled then there is no need to call decide again (flags are the only thing that may change)\n return\n }\n\n this._flagsLoadedFromRemote = !errorsLoading\n this.receivedFeatureFlags(response.json ?? {}, errorsLoading)\n\n if (this._additionalReloadRequested) {\n this._additionalReloadRequested = false\n this._callDecideEndpoint()\n }\n },\n })\n }\n\n /*\n * Get feature flag's value for user.\n *\n * ### Usage:\n *\n * if(posthog.getFeatureFlag('my-flag') === 'some-variant') { // do something }\n *\n * @param {Object|String} key Key of the feature flag.\n * @param {Object|String} options (optional) If {send_event: false}, we won't send an $feature_flag_call event to PostHog.\n */\n getFeatureFlag(key: string, options: { send_event?: boolean } = {}): boolean | string | undefined {\n if (!this._hasLoadedFlags && !(this.getFlags() && this.getFlags().length > 0)) {\n logger.warn('getFeatureFlag for key \"' + key + '\" failed. Feature flags didn\\'t load in time.')\n return undefined\n }\n const flagValue = this.getFlagVariants()[key]\n const flagReportValue = `${flagValue}`\n const flagCallReported: Record<string, string[]> = this.instance.get_property(FLAG_CALL_REPORTED) || {}\n\n if (options.send_event || !('send_event' in options)) {\n if (!(key in flagCallReported) || !flagCallReported[key].includes(flagReportValue)) {\n if (isArray(flagCallReported[key])) {\n flagCallReported[key].push(flagReportValue)\n } else {\n flagCallReported[key] = [flagReportValue]\n }\n this.instance.persistence?.register({ [FLAG_CALL_REPORTED]: flagCallReported })\n\n this.instance.capture('$feature_flag_called', {\n $feature_flag: key,\n $feature_flag_response: flagValue,\n $feature_flag_payload: this.getFeatureFlagPayload(key) || null,\n $feature_flag_bootstrapped_response: this.instance.config.bootstrap?.featureFlags?.[key] || null,\n $feature_flag_bootstrapped_payload:\n this.instance.config.bootstrap?.featureFlagPayloads?.[key] || null,\n // If we haven't yet received a response from the /decide endpoint, we must have used the bootstrapped value\n $used_bootstrap_value: !this._flagsLoadedFromRemote,\n })\n }\n }\n return flagValue\n }\n\n getFeatureFlagPayload(key: string): JsonType {\n const payloads = this.getFlagPayloads()\n return payloads[key]\n }\n\n /*\n * Fetches the payload for a remote config feature flag. This method will bypass any cached values and fetch the latest\n * value from the PostHog API.\n *\n * Note: Because the posthog-js SDK is primarily used with public project API keys, encrypted remote config payloads will\n * be redacted, never decrypted in the response.\n *\n * ### Usage:\n *\n * getRemoteConfigPayload(\"home-page-welcome-message\", (payload) => console.log(`Fetched remote config: ${payload}`))\n *\n * @param {String} key Key of the feature flag.\n * @param {Function} [callback] The callback function will be called once the remote config feature flag payload has been fetched.\n */\n getRemoteConfigPayload(key: string, callback: RemoteConfigFeatureFlagCallback): void {\n const token = this.instance.config.token\n this.instance._send_request({\n method: 'POST',\n url: this.instance.requestRouter.endpointFor('api', '/decide/?v=3'),\n data: {\n distinct_id: this.instance.get_distinct_id(),\n token,\n },\n compression: this.instance.config.disable_compression ? undefined : Compression.Base64,\n timeout: this.instance.config.feature_flag_request_timeout_ms,\n callback: (response) => {\n const flagPayloads = response.json?.['featureFlagPayloads']\n callback(flagPayloads?.[key] || undefined)\n },\n })\n }\n\n /*\n * See if feature flag is enabled for user.\n *\n * ### Usage:\n *\n * if(posthog.isFeatureEnabled('beta-feature')) { // do something }\n *\n * @param {Object|String} key Key of the feature flag.\n * @param {Object|String} options (optional) If {send_event: false}, we won't send an $feature_flag_call event to PostHog.\n */\n isFeatureEnabled(key: string, options: { send_event?: boolean } = {}): boolean | undefined {\n if (!this._hasLoadedFlags && !(this.getFlags() && this.getFlags().length > 0)) {\n logger.warn('isFeatureEnabled for key \"' + key + '\" failed. Feature flags didn\\'t load in time.')\n return undefined\n }\n return !!this.getFeatureFlag(key, options)\n }\n\n addFeatureFlagsHandler(handler: FeatureFlagsCallback): void {\n this.featureFlagEventHandlers.push(handler)\n }\n\n removeFeatureFlagsHandler(handler: FeatureFlagsCallback): void {\n this.featureFlagEventHandlers = this.featureFlagEventHandlers.filter((h) => h !== handler)\n }\n\n receivedFeatureFlags(response: Partial<DecideResponse>, errorsLoading?: boolean): void {\n if (!this.instance.persistence) {\n return\n }\n this._hasLoadedFlags = true\n\n const currentFlags = this.getFlagVariants()\n const currentFlagPayloads = this.getFlagPayloads()\n parseFeatureFlagDecideResponse(response, this.instance.persistence, currentFlags, currentFlagPayloads)\n this._fireFeatureFlagsCallbacks(errorsLoading)\n }\n\n /**\n * @deprecated Use overrideFeatureFlags instead. This will be removed in a future version.\n */\n override(flags: boolean | string[] | Record<string, string | boolean>, suppressWarning: boolean = false): void {\n logger.warn('override is deprecated. Please use overrideFeatureFlags instead.')\n this.overrideFeatureFlags({\n flags: flags,\n suppressWarning: suppressWarning,\n })\n }\n\n /**\n * Override feature flags on the client-side. Useful for setting non-persistent feature flags,\n * or for testing/debugging feature flags in the PostHog app.\n *\n * ### Usage:\n *\n * - posthog.feature_flags.overrideFeatureFlags(false) // clear all overrides\n * - posthog.feature_flags.overrideFeatureFlags(['beta-feature']) // enable flags\n * - posthog.feature_flags.overrideFeatureFlags({'beta-feature': 'variant'}) // set variants\n * - posthog.feature_flags.overrideFeatureFlags({ // set both flags and payloads\n * flags: {'beta-feature': 'variant'},\n * payloads: { 'beta-feature': { someData: true } }\n * })\n * - posthog.feature_flags.overrideFeatureFlags({ // only override payloads\n * payloads: { 'beta-feature': { someData: true } }\n * })\n */\n overrideFeatureFlags(overrideOptions: OverrideFeatureFlagsOptions): void {\n if (!this.instance.__loaded || !this.instance.persistence) {\n return logger.uninitializedWarning('posthog.feature_flags.overrideFeatureFlags')\n }\n\n // Clear all overrides if false, lets you do something like posthog.feature_flags.overrideFeatureFlags(false)\n if (overrideOptions === false) {\n this.instance.persistence.unregister(PERSISTENCE_OVERRIDE_FEATURE_FLAGS)\n this.instance.persistence.unregister(PERSISTENCE_OVERRIDE_FEATURE_FLAG_PAYLOADS)\n this._fireFeatureFlagsCallbacks()\n return\n }\n\n if (\n overrideOptions &&\n typeof overrideOptions === 'object' &&\n ('flags' in overrideOptions || 'payloads' in overrideOptions)\n ) {\n const options = overrideOptions\n this._override_warning = Boolean(options.suppressWarning ?? false)\n\n // Handle flags if provided, lets you do something like posthog.feature_flags.overrideFeatureFlags({flags: ['beta-feature']})\n if ('flags' in options) {\n if (options.flags === false) {\n this.instance.persistence.unregister(PERSISTENCE_OVERRIDE_FEATURE_FLAGS)\n } else if (options.flags) {\n if (isArray(options.flags)) {\n const flagsObj: Record<string, string | boolean> = {}\n for (let i = 0; i < options.flags.length; i++) {\n flagsObj[options.flags[i]] = true\n }\n this.instance.persistence.register({ [PERSISTENCE_OVERRIDE_FEATURE_FLAGS]: flagsObj })\n } else {\n this.instance.persistence.register({ [PERSISTENCE_OVERRIDE_FEATURE_FLAGS]: options.flags })\n }\n }\n }\n\n // Handle payloads independently, lets you do something like posthog.feature_flags.overrideFeatureFlags({payloads: { 'beta-feature': { someData: true } }})\n if ('payloads' in options) {\n if (options.payloads === false) {\n this.instance.persistence.unregister(PERSISTENCE_OVERRIDE_FEATURE_FLAG_PAYLOADS)\n } else if (options.payloads) {\n this.instance.persistence.register({\n [PERSISTENCE_OVERRIDE_FEATURE_FLAG_PAYLOADS]: options.payloads,\n })\n }\n }\n\n this._fireFeatureFlagsCallbacks()\n return\n }\n\n this._fireFeatureFlagsCallbacks()\n }\n\n /*\n * Register an event listener that runs when feature flags become available or when they change.\n * If there are flags, the listener is called immediately in addition to being called on future changes.\n *\n * ### Usage:\n *\n * posthog.onFeatureFlags(function(featureFlags, featureFlagsVariants, { errorsLoading }) { // do something })\n *\n * @param {Function} [callback] The callback function will be called once the feature flags are ready or when they are updated.\n * It'll return a list of feature flags enabled for the user, the variants,\n * and also a context object indicating whether we succeeded to fetch the flags or not.\n * @returns {Function} A function that can be called to unsubscribe the listener. Used by useEffect when the component unmounts.\n */\n onFeatureFlags(callback: FeatureFlagsCallback): () => void {\n this.addFeatureFlagsHandler(callback)\n if (this._hasLoadedFlags) {\n const { flags, flagVariants } = this._prepareFeatureFlagsForCallbacks()\n callback(flags, flagVariants)\n }\n return () => this.removeFeatureFlagsHandler(callback)\n }\n\n updateEarlyAccessFeatureEnrollment(key: string, isEnrolled: boolean): void {\n const existing_early_access_features: EarlyAccessFeature[] =\n this.instance.get_property(PERSISTENCE_EARLY_ACCESS_FEATURES) || []\n const feature = existing_early_access_features.find((f) => f.flagKey === key)\n\n const enrollmentPersonProp = {\n [`$feature_enrollment/${key}`]: isEnrolled,\n }\n\n const properties: Properties = {\n $feature_flag: key,\n $feature_enrollment: isEnrolled,\n $set: enrollmentPersonProp,\n }\n\n if (feature) {\n properties['$early_access_feature_name'] = feature.name\n }\n\n this.instance.capture('$feature_enrollment_update', properties)\n this.setPersonPropertiesForFlags(enrollmentPersonProp, false)\n\n const newFlags = { ...this.getFlagVariants(), [key]: isEnrolled }\n this.instance.persistence?.register({\n [PERSISTENCE_ACTIVE_FEATURE_FLAGS]: Object.keys(filterActiveFeatureFlags(newFlags)),\n [ENABLED_FEATURE_FLAGS]: newFlags,\n })\n this._fireFeatureFlagsCallbacks()\n }\n\n getEarlyAccessFeatures(callback: EarlyAccessFeatureCallback, force_reload = false): void {\n const existing_early_access_features = this.instance.get_property(PERSISTENCE_EARLY_ACCESS_FEATURES)\n\n if (!existing_early_access_features || force_reload) {\n this.instance._send_request({\n url: this.instance.requestRouter.endpointFor(\n 'api',\n `/api/early_access_features/?token=${this.instance.config.token}`\n ),\n method: 'GET',\n callback: (response) => {\n if (!response.json) {\n return\n }\n const earlyAccessFeatures = (response.json as EarlyAccessFeatureResponse).earlyAccessFeatures\n this.instance.persistence?.register({ [PERSISTENCE_EARLY_ACCESS_FEATURES]: earlyAccessFeatures })\n return callback(earlyAccessFeatures)\n },\n })\n } else {\n return callback(existing_early_access_features)\n }\n }\n\n _prepareFeatureFlagsForCallbacks(): { flags: string[]; flagVariants: Record<string, string | boolean> } {\n const flags = this.getFlags()\n const flagVariants = this.getFlagVariants()\n\n // Return truthy\n const truthyFlags = flags.filter((flag) => flagVariants[flag])\n const truthyFlagVariants = Object.keys(flagVariants)\n .filter((variantKey) => flagVariants[variantKey])\n .reduce((res: Record<string, string | boolean>, key) => {\n res[key] = flagVariants[key]\n return res\n }, {})\n\n return {\n flags: truthyFlags,\n flagVariants: truthyFlagVariants,\n }\n }\n\n _fireFeatureFlagsCallbacks(errorsLoading?: boolean): void {\n const { flags, flagVariants } = this._prepareFeatureFlagsForCallbacks()\n this.featureFlagEventHandlers.forEach((handler) => handler(flags, flagVariants, { errorsLoading }))\n }\n\n /**\n * Set override person properties for feature flags.\n * This is used when dealing with new persons / where you don't want to wait for ingestion\n * to update user properties.\n */\n setPersonPropertiesForFlags(properties: Properties, reloadFeatureFlags = true): void {\n // Get persisted person properties\n const existingProperties = this.instance.get_property(STORED_PERSON_PROPERTIES_KEY) || {}\n\n this.instance.register({\n [STORED_PERSON_PROPERTIES_KEY]: {\n ...existingProperties,\n ...properties,\n },\n })\n\n if (reloadFeatureFlags) {\n this.instance.reloadFeatureFlags()\n }\n }\n\n resetPersonPropertiesForFlags(): void {\n this.instance.unregister(STORED_PERSON_PROPERTIES_KEY)\n }\n\n /**\n * Set override group properties for feature flags.\n * This is used when dealing with new groups / where you don't want to wait for ingestion\n * to update properties.\n * Takes in an object, the key of which is the group type.\n * For example:\n * setGroupPropertiesForFlags({'organization': { name: 'CYZ', employees: '11' } })\n */\n setGroupPropertiesForFlags(properties: { [type: string]: Properties }, reloadFeatureFlags = true): void {\n // Get persisted group properties\n const existingProperties = this.instance.get_property(STORED_GROUP_PROPERTIES_KEY) || {}\n\n if (Object.keys(existingProperties).length !== 0) {\n Object.keys(existingProperties).forEach((groupType) => {\n existingProperties[groupType] = {\n ...existingProperties[groupType],\n ...properties[groupType],\n }\n delete properties[groupType]\n })\n }\n\n this.instance.register({\n [STORED_GROUP_PROPERTIES_KEY]: {\n ...existingProperties,\n ...properties,\n },\n })\n\n if (reloadFeatureFlags) {\n this.instance.reloadFeatureFlags()\n }\n }\n\n resetGroupPropertiesForFlags(group_type?: string): void {\n if (group_type) {\n const existingProperties = this.instance.get_property(STORED_GROUP_PROPERTIES_KEY) || {}\n this.instance.register({\n [STORED_GROUP_PROPERTIES_KEY]: { ...existingProperties, [group_type]: {} },\n })\n } else {\n this.instance.unregister(STORED_GROUP_PROPERTIES_KEY)\n }\n }\n}\n","import { isFunction, isUndefined } from './type-utils'\nimport { includes } from './string-utils'\n\n/**\n * this device detection code is (at time of writing) about 3% of the size of the entire library\n * this is mostly because the identifiers user in regexes and results can't be minified away since\n * they have meaning\n *\n * so, there are some pre-uglifying choices in the code to help reduce the size\n * e.g. many repeated strings are stored as variables and then old-fashioned concatenated together\n *\n * TL;DR here be dragons\n */\nconst FACEBOOK = 'Facebook'\nconst MOBILE = 'Mobile'\nconst IOS = 'iOS'\nconst ANDROID = 'Android'\nconst TABLET = 'Tablet'\nconst ANDROID_TABLET = ANDROID + ' ' + TABLET\nconst IPAD = 'iPad'\nconst APPLE = 'Apple'\nconst APPLE_WATCH = APPLE + ' Watch'\nconst SAFARI = 'Safari'\nconst BLACKBERRY = 'BlackBerry'\nconst SAMSUNG = 'Samsung'\nconst SAMSUNG_BROWSER = SAMSUNG + 'Browser'\nconst SAMSUNG_INTERNET = SAMSUNG + ' Internet'\nconst CHROME = 'Chrome'\nconst CHROME_OS = CHROME + ' OS'\nconst CHROME_IOS = CHROME + ' ' + IOS\nconst INTERNET_EXPLORER = 'Internet Explorer'\nconst INTERNET_EXPLORER_MOBILE = INTERNET_EXPLORER + ' ' + MOBILE\nconst OPERA = 'Opera'\nconst OPERA_MINI = OPERA + ' Mini'\nconst EDGE = 'Edge'\nconst MICROSOFT_EDGE = 'Microsoft ' + EDGE\nconst FIREFOX = 'Firefox'\nconst FIREFOX_IOS = FIREFOX + ' ' + IOS\nconst NINTENDO = 'Nintendo'\nconst PLAYSTATION = 'PlayStation'\nconst XBOX = 'Xbox'\nconst ANDROID_MOBILE = ANDROID + ' ' + MOBILE\nconst MOBILE_SAFARI = MOBILE + ' ' + SAFARI\nconst WINDOWS = 'Windows'\nconst WINDOWS_PHONE = WINDOWS + ' Phone'\nconst NOKIA = 'Nokia'\nconst OUYA = 'Ouya'\nconst GENERIC = 'Generic'\nconst GENERIC_MOBILE = GENERIC + ' ' + MOBILE.toLowerCase()\nconst GENERIC_TABLET = GENERIC + ' ' + TABLET.toLowerCase()\nconst KONQUEROR = 'Konqueror'\n\nconst BROWSER_VERSION_REGEX_SUFFIX = '(\\\\d+(\\\\.\\\\d+)?)'\nconst DEFAULT_BROWSER_VERSION_REGEX = new RegExp('Version/' + BROWSER_VERSION_REGEX_SUFFIX)\n\nconst XBOX_REGEX = new RegExp(XBOX, 'i')\nconst PLAYSTATION_REGEX = new RegExp(PLAYSTATION + ' \\\\w+', 'i')\nconst NINTENDO_REGEX = new RegExp(NINTENDO + ' \\\\w+', 'i')\nconst BLACKBERRY_REGEX = new RegExp(BLACKBERRY + '|PlayBook|BB10', 'i')\n\nconst windowsVersionMap: Record<string, string> = {\n 'NT3.51': 'NT 3.11',\n 'NT4.0': 'NT 4.0',\n '5.0': '2000',\n '5.1': 'XP',\n '5.2': 'XP',\n '6.0': 'Vista',\n '6.1': '7',\n '6.2': '8',\n '6.3': '8.1',\n '6.4': '10',\n '10.0': '10',\n}\n\n/**\n * Safari detection turns out to be complicated. For e.g. https://stackoverflow.com/a/29696509\n * We can be slightly loose because some options have been ruled out (e.g. firefox on iOS)\n * before this check is made\n */\nfunction isSafari(userAgent: string): boolean {\n return includes(userAgent, SAFARI) && !includes(userAgent, CHROME) && !includes(userAgent, ANDROID)\n}\n\nconst safariCheck = (ua: string, vendor?: string) => (vendor && includes(vendor, APPLE)) || isSafari(ua)\n\n/**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include keywords used in later checks.\n */\nexport const detectBrowser = function (user_agent: string, vendor: string | undefined): string {\n vendor = vendor || '' // vendor is undefined for at least IE9\n\n if (includes(user_agent, ' OPR/') && includes(user_agent, 'Mini')) {\n return OPERA_MINI\n } else if (includes(user_agent, ' OPR/')) {\n return OPERA\n } else if (BLACKBERRY_REGEX.test(user_agent)) {\n return BLACKBERRY\n } else if (includes(user_agent, 'IE' + MOBILE) || includes(user_agent, 'WPDesktop')) {\n return INTERNET_EXPLORER_MOBILE\n }\n // https://developer.samsung.com/internet/user-agent-string-format\n else if (includes(user_agent, SAMSUNG_BROWSER)) {\n return SAMSUNG_INTERNET\n } else if (includes(user_agent, EDGE) || includes(user_agent, 'Edg/')) {\n return MICROSOFT_EDGE\n } else if (includes(user_agent, 'FBIOS')) {\n return FACEBOOK + ' ' + MOBILE\n } else if (includes(user_agent, 'UCWEB') || includes(user_agent, 'UCBrowser')) {\n return 'UC Browser'\n } else if (includes(user_agent, 'CriOS')) {\n return CHROME_IOS // why not just Chrome?\n } else if (includes(user_agent, 'CrMo')) {\n return CHROME\n } else if (includes(user_agent, CHROME)) {\n return CHROME\n } else if (includes(user_agent, ANDROID) && includes(user_agent, SAFARI)) {\n return ANDROID_MOBILE\n } else if (includes(user_agent, 'FxiOS')) {\n return FIREFOX_IOS\n } else if (includes(user_agent.toLowerCase(), KONQUEROR.toLowerCase())) {\n return KONQUEROR\n } else if (safariCheck(user_agent, vendor)) {\n return includes(user_agent, MOBILE) ? MOBILE_SAFARI : SAFARI\n } else if (includes(user_agent, FIREFOX)) {\n return FIREFOX\n } else if (includes(user_agent, 'MSIE') || includes(user_agent, 'Trident/')) {\n return INTERNET_EXPLORER\n } else if (includes(user_agent, 'Gecko')) {\n return FIREFOX\n }\n\n return ''\n}\n\nconst versionRegexes: Record<string, RegExp[]> = {\n [INTERNET_EXPLORER_MOBILE]: [new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)],\n [MICROSOFT_EDGE]: [new RegExp(EDGE + '?\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)],\n [CHROME]: [new RegExp('(' + CHROME + '|CrMo)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)],\n [CHROME_IOS]: [new RegExp('CriOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)],\n 'UC Browser': [new RegExp('(UCBrowser|UCWEB)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)],\n [SAFARI]: [DEFAULT_BROWSER_VERSION_REGEX],\n [MOBILE_SAFARI]: [DEFAULT_BROWSER_VERSION_REGEX],\n [OPERA]: [new RegExp('(' + OPERA + '|OPR)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)],\n [FIREFOX]: [new RegExp(FIREFOX + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)],\n [FIREFOX_IOS]: [new RegExp('FxiOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)],\n [KONQUEROR]: [new RegExp('Konqueror[:/]?' + BROWSER_VERSION_REGEX_SUFFIX, 'i')],\n // not every blackberry user agent has the version after the name\n [BLACKBERRY]: [new RegExp(BLACKBERRY + ' ' + BROWSER_VERSION_REGEX_SUFFIX), DEFAULT_BROWSER_VERSION_REGEX],\n [ANDROID_MOBILE]: [new RegExp('android\\\\s' + BROWSER_VERSION_REGEX_SUFFIX, 'i')],\n [SAMSUNG_INTERNET]: [new RegExp(SAMSUNG_BROWSER + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)],\n [INTERNET_EXPLORER]: [new RegExp('(rv:|MSIE )' + BROWSER_VERSION_REGEX_SUFFIX)],\n Mozilla: [new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)],\n}\n\n/**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n *\n * `navigator.vendor` is passed in and used to help with detecting certain browsers\n * NB `navigator.vendor` is deprecated and not present in every browser\n */\nexport const detectBrowserVersion = function (userAgent: string, vendor: string | undefined): number | null {\n const browser = detectBrowser(userAgent, vendor)\n const regexes: RegExp[] | undefined = versionRegexes[browser as keyof typeof versionRegexes]\n if (isUndefined(regexes)) {\n return null\n }\n\n for (let i = 0; i < regexes.length; i++) {\n const regex = regexes[i]\n const matches = userAgent.match(regex)\n if (matches) {\n return parseFloat(matches[matches.length - 2])\n }\n }\n return null\n}\n\n// to avoid repeating regexes or calling them twice, we have an array of matches\n// the first regex that matches uses its matcher function to return the result\nconst osMatchers: [\n RegExp,\n [string, string] | ((match: RegExpMatchArray | null, user_agent: string) => [string, string]),\n][] = [\n [\n new RegExp(XBOX + '; ' + XBOX + ' (.*?)[);]', 'i'),\n (match) => {\n return [XBOX, (match && match[1]) || '']\n },\n ],\n [new RegExp(NINTENDO, 'i'), [NINTENDO, '']],\n [new RegExp(PLAYSTATION, 'i'), [PLAYSTATION, '']],\n [BLACKBERRY_REGEX, [BLACKBERRY, '']],\n [\n new RegExp(WINDOWS, 'i'),\n (_, user_agent) => {\n if (/Phone/.test(user_agent) || /WPDesktop/.test(user_agent)) {\n return [WINDOWS_PHONE, '']\n }\n // not all JS versions support negative lookbehind, so we need two checks here\n if (new RegExp(MOBILE).test(user_agent) && !/IEMobile\\b/.test(user_agent)) {\n return [WINDOWS + ' ' + MOBILE, '']\n }\n const match = /Windows NT ([0-9.]+)/i.exec(user_agent)\n if (match && match[1]) {\n const version = match[1]\n let osVersion = windowsVersionMap[version] || ''\n if (/arm/i.test(user_agent)) {\n osVersion = 'RT'\n }\n return [WINDOWS, osVersion]\n }\n return [WINDOWS, '']\n },\n ],\n [\n /((iPhone|iPad|iPod).*?OS (\\d+)_(\\d+)_?(\\d+)?|iPhone)/,\n (match) => {\n if (match && match[3]) {\n const versionParts = [match[3], match[4], match[5] || '0']\n return [IOS, versionParts.join('.')]\n }\n return [IOS, '']\n },\n ],\n [\n /(watch.*\\/(\\d+\\.\\d+\\.\\d+)|watch os,(\\d+\\.\\d+),)/i,\n (match) => {\n // e.g. Watch4,3/5.3.8 (16U680)\n let version = ''\n if (match && match.length >= 3) {\n version = isUndefined(match[2]) ? match[3] : match[2]\n }\n return ['watchOS', version]\n },\n ],\n [\n new RegExp('(' + ANDROID + ' (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|' + ANDROID + ')', 'i'),\n (match) => {\n if (match && match[2]) {\n const versionParts = [match[2], match[3], match[4] || '0']\n return [ANDROID, versionParts.join('.')]\n }\n return [ANDROID, '']\n },\n ],\n [\n /Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i,\n (match) => {\n const result: [string, string] = ['Mac OS X', '']\n if (match && match[1]) {\n const versionParts = [match[1], match[2], match[3] || '0']\n result[1] = versionParts.join('.')\n }\n return result\n },\n ],\n [\n /Mac/i,\n // mop up a few non-standard UAs that should match mac\n ['Mac OS X', ''],\n ],\n [/CrOS/, [CHROME_OS, '']],\n [/Linux|debian/i, ['Linux', '']],\n]\n\nexport const detectOS = function (user_agent: string): [string, string] {\n for (let i = 0; i < osMatchers.length; i++) {\n const [rgex, resultOrFn] = osMatchers[i]\n const match = rgex.exec(user_agent)\n const result = match && (isFunction(resultOrFn) ? resultOrFn(match, user_agent) : resultOrFn)\n if (result) {\n return result\n }\n }\n return ['', '']\n}\n\nexport const detectDevice = function (user_agent: string): string {\n if (NINTENDO_REGEX.test(user_agent)) {\n return NINTENDO\n } else if (PLAYSTATION_REGEX.test(user_agent)) {\n return PLAYSTATION\n } else if (XBOX_REGEX.test(user_agent)) {\n return XBOX\n } else if (new RegExp(OUYA, 'i').test(user_agent)) {\n return OUYA\n } else if (new RegExp('(' + WINDOWS_PHONE + '|WPDesktop)', 'i').test(user_agent)) {\n return WINDOWS_PHONE\n } else if (/iPad/.test(user_agent)) {\n return IPAD\n } else if (/iPod/.test(user_agent)) {\n return 'iPod Touch'\n } else if (/iPhone/.test(user_agent)) {\n return 'iPhone'\n } else if (/(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(user_agent)) {\n return APPLE_WATCH\n } else if (BLACKBERRY_REGEX.test(user_agent)) {\n return BLACKBERRY\n } else if (/(kobo)\\s(ereader|touch)/i.test(user_agent)) {\n return 'Kobo'\n } else if (new RegExp(NOKIA, 'i').test(user_agent)) {\n return NOKIA\n } else if (\n // Kindle Fire without Silk / Echo Show\n /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i.test(user_agent) ||\n // Kindle Fire HD\n /(kf[a-z]+)( bui|\\)).+silk\\//i.test(user_agent)\n ) {\n return 'Kindle Fire'\n } else if (/(Android|ZTE)/i.test(user_agent)) {\n if (\n !new RegExp(MOBILE).test(user_agent) ||\n /(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(user_agent)\n ) {\n if (\n (/pixel[\\daxl ]{1,6}/i.test(user_agent) && !/pixel c/i.test(user_agent)) ||\n /(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(user_agent) ||\n (/lmy47v/i.test(user_agent) && !/QTAQZ3/i.test(user_agent))\n ) {\n return ANDROID\n }\n return ANDROID_TABLET\n } else {\n return ANDROID\n }\n } else if (new RegExp('(pda|' + MOBILE + ')', 'i').test(user_agent)) {\n return GENERIC_MOBILE\n } else if (new RegExp(TABLET, 'i').test(user_agent) && !new RegExp(TABLET + ' pc', 'i').test(user_agent)) {\n return GENERIC_TABLET\n } else {\n return ''\n }\n}\n\nexport const detectDeviceType = function (user_agent: string): string {\n const device = detectDevice(user_agent)\n if (\n device === IPAD ||\n device === ANDROID_TABLET ||\n device === 'Kobo' ||\n device === 'Kindle Fire' ||\n device === GENERIC_TABLET\n ) {\n return TABLET\n } else if (device === NINTENDO || device === XBOX || device === PLAYSTATION || device === OUYA) {\n return 'Console'\n } else if (device === APPLE_WATCH) {\n return 'Wearable'\n } else if (device) {\n return MOBILE\n } else {\n return 'Desktop'\n }\n}\n","import { getQueryParam, convertToURL, maskQueryParams } from './request-utils'\nimport { isNull } from './type-utils'\nimport { Properties } from '../types'\nimport Config from '../config'\nimport { each, extend, extendArray, stripEmptyProperties } from './index'\nimport { document, location, userAgent, window } from './globals'\nimport { detectBrowser, detectBrowserVersion, detectDevice, detectDeviceType, detectOS } from './user-agent-utils'\nimport { stripLeadingDollar } from './string-utils'\n\nconst URL_REGEX_PREFIX = 'https?://(.*)'\n\n// CAMPAIGN_PARAMS and EVENT_TO_PERSON_PROPERTIES should be kept in sync with\n// https://github.com/PostHog/posthog/blob/master/plugin-server/src/utils/db/utils.ts#L60\n\n// The list of campaign parameters that could be considered personal data under e.g. GDPR.\n// These can be masked in URLs and properties before being sent to posthog.\nexport const PERSONAL_DATA_CAMPAIGN_PARAMS = [\n 'gclid', // google ads\n 'gclsrc', // google ads 360\n 'dclid', // google display ads\n 'gbraid', // google ads, web to app\n 'wbraid', // google ads, app to web\n 'fbclid', // facebook\n 'msclkid', // microsoft\n 'twclid', // twitter\n 'li_fat_id', // linkedin\n 'igshid', // instagram\n 'ttclid', // tiktok\n 'rdt_cid', // reddit\n 'irclid', // impact\n '_kx', // klaviyo\n]\n\nexport const CAMPAIGN_PARAMS = extendArray(\n [\n 'utm_source',\n 'utm_medium',\n 'utm_campaign',\n 'utm_content',\n 'utm_term',\n 'gad_source', // google ads source\n 'mc_cid', // mailchimp campaign id\n ],\n PERSONAL_DATA_CAMPAIGN_PARAMS\n)\n\nexport const EVENT_TO_PERSON_PROPERTIES = [\n // mobile params\n '$app_build',\n '$app_name',\n '$app_namespace',\n '$app_version',\n // web params\n '$browser',\n '$browser_version',\n '$device_type',\n '$current_url',\n '$pathname',\n '$os',\n '$os_name', // $os_name is a special case, it's treated as an alias of $os!\n '$os_version',\n '$referring_domain',\n '$referrer',\n]\n\nexport const MASKED = '<masked>'\n\nexport const Info = {\n campaignParams: function ({\n customTrackedParams,\n maskPersonalDataProperties,\n customPersonalDataProperties,\n }: {\n customTrackedParams?: string[]\n maskPersonalDataProperties?: boolean\n customPersonalDataProperties?: string[] | undefined\n } = {}): Record<string, string> {\n if (!document) {\n return {}\n }\n\n const paramsToMask = maskPersonalDataProperties\n ? extendArray([], PERSONAL_DATA_CAMPAIGN_PARAMS, customPersonalDataProperties || [])\n : []\n\n return this._campaignParamsFromUrl(maskQueryParams(document.URL, paramsToMask, MASKED), customTrackedParams)\n },\n\n _campaignParamsFromUrl: function (url: string, customParams?: string[]): Record<string, string> {\n const campaign_keywords = CAMPAIGN_PARAMS.concat(customParams || [])\n\n const params: Record<string, any> = {}\n each(campaign_keywords, function (kwkey) {\n const kw = getQueryParam(url, kwkey)\n params[kwkey] = kw ? kw : null\n })\n\n return params\n },\n\n _searchEngine: function (referrer: string): string | null {\n if (!referrer) {\n return null\n } else {\n if (referrer.search(URL_REGEX_PREFIX + 'google.([^/?]*)') === 0) {\n return 'google'\n } else if (referrer.search(URL_REGEX_PREFIX + 'bing.com') === 0) {\n return 'bing'\n } else if (referrer.search(URL_REGEX_PREFIX + 'yahoo.com') === 0) {\n return 'yahoo'\n } else if (referrer.search(URL_REGEX_PREFIX + 'duckduckgo.com') === 0) {\n return 'duckduckgo'\n } else {\n return null\n }\n }\n },\n\n _searchInfoFromReferrer: function (referrer: string): Record<string, any> {\n const search = Info._searchEngine(referrer)\n const param = search != 'yahoo' ? 'q' : 'p'\n const ret: Record<string, any> = {}\n\n if (!isNull(search)) {\n ret['$search_engine'] = search\n\n const keyword = document ? getQueryParam(document.referrer, param) : ''\n if (keyword.length) {\n ret['ph_keyword'] = keyword\n }\n }\n\n return ret\n },\n\n searchInfo: function (): Record<string, any> {\n const referrer = document?.referrer\n if (!referrer) {\n return {}\n }\n return this._searchInfoFromReferrer(referrer)\n },\n\n /**\n * This function detects which browser is running this script.\n * The order of the checks are important since many user agents\n * include keywords used in later checks.\n */\n browser: detectBrowser,\n\n /**\n * This function detects which browser version is running this script,\n * parsing major and minor version (e.g., 42.1). User agent strings from:\n * http://www.useragentstring.com/pages/useragentstring.php\n *\n * `navigator.vendor` is passed in and used to help with detecting certain browsers\n * NB `navigator.vendor` is deprecated and not present in every browser\n */\n browserVersion: detectBrowserVersion,\n\n browserLanguage: function (): string | undefined {\n return (\n navigator.language || // Any modern browser\n (navigator as Record<string, any>).userLanguage // IE11\n )\n },\n\n browserLanguagePrefix: function (): string | undefined {\n const browserLanguage = this.browserLanguage()\n return typeof browserLanguage === 'string' ? browserLanguage.split('-')[0] : undefined\n },\n\n os: detectOS,\n\n device: detectDevice,\n\n deviceType: detectDeviceType,\n\n referrer: function (): string {\n return document?.referrer || '$direct'\n },\n\n referringDomain: function (): string {\n if (!document?.referrer) {\n return '$direct'\n }\n return convertToURL(document.referrer)?.host || '$direct'\n },\n\n referrerInfo: function (): Record<string, any> {\n return {\n $referrer: this.referrer(),\n $referring_domain: this.referringDomain(),\n }\n },\n\n personInfo: function ({\n maskPersonalDataProperties,\n customPersonalDataProperties,\n }: {\n maskPersonalDataProperties?: boolean\n customPersonalDataProperties?: string[]\n } = {}) {\n const paramsToMask = maskPersonalDataProperties\n ? extendArray([], PERSONAL_DATA_CAMPAIGN_PARAMS, customPersonalDataProperties || [])\n : []\n const url = location?.href.substring(0, 1000)\n // we're being a bit more economical with bytes here because this is stored in the cookie\n return {\n r: this.referrer().substring(0, 1000),\n u: url ? maskQueryParams(url, paramsToMask, MASKED) : undefined,\n }\n },\n\n personPropsFromInfo: function (info: Record<string, any>): Record<string, any> {\n const { r: referrer, u: url } = info\n const referring_domain =\n referrer == null ? undefined : referrer == '$direct' ? '$direct' : convertToURL(referrer)?.host\n\n const props: Record<string, string | undefined> = {\n $referrer: referrer,\n $referring_domain: referring_domain,\n }\n if (url) {\n props['$current_url'] = url\n const location = convertToURL(url)\n props['$host'] = location?.host\n props['$pathname'] = location?.pathname\n const campaignParams = this._campaignParamsFromUrl(url)\n extend(props, campaignParams)\n }\n if (referrer) {\n const searchInfo = this._searchInfoFromReferrer(referrer)\n extend(props, searchInfo)\n }\n return props\n },\n\n initialPersonPropsFromInfo: function (info: Record<string, any>): Record<string, any> {\n const personProps = this.personPropsFromInfo(info)\n const props: Record<string, any> = {}\n each(personProps, function (val: any, key: string) {\n props[`$initial_${stripLeadingDollar(key)}`] = val\n })\n return props\n },\n\n timezone: function (): string | undefined {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone\n } catch {\n return undefined\n }\n },\n\n timezoneOffset: function (): number | undefined {\n try {\n return new Date().getTimezoneOffset()\n } catch {\n return undefined\n }\n },\n\n properties: function ({\n maskPersonalDataProperties,\n customPersonalDataProperties,\n }: {\n maskPersonalDataProperties?: boolean\n customPersonalDataProperties?: string[]\n } = {}): Properties {\n if (!userAgent) {\n return {}\n }\n const paramsToMask = maskPersonalDataProperties\n ? extendArray([], PERSONAL_DATA_CAMPAIGN_PARAMS, customPersonalDataProperties || [])\n : []\n const [os_name, os_version] = Info.os(userAgent)\n return extend(\n stripEmptyProperties({\n $os: os_name,\n $os_version: os_version,\n $browser: Info.browser(userAgent, navigator.vendor),\n $device: Info.device(userAgent),\n $device_type: Info.deviceType(userAgent),\n $timezone: Info.timezone(),\n $timezone_offset: Info.timezoneOffset(),\n }),\n {\n $current_url: maskQueryParams(location?.href, paramsToMask, MASKED),\n $host: location?.host,\n $pathname: location?.pathname,\n $raw_user_agent: userAgent.length > 1000 ? userAgent.substring(0, 997) + '...' : userAgent,\n $browser_version: Info.browserVersion(userAgent, navigator.vendor),\n $browser_language: Info.browserLanguage(),\n $browser_language_prefix: Info.browserLanguagePrefix(),\n $screen_height: window?.screen.height,\n $screen_width: window?.screen.width,\n $viewport_height: window?.innerHeight,\n $viewport_width: window?.innerWidth,\n $lib: 'web',\n $lib_version: Config.LIB_VERSION,\n $insert_id: Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10),\n $time: Date.now() / 1000, // epoch time in seconds\n }\n )\n },\n\n people_properties: function (): Properties {\n if (!userAgent) {\n return {}\n }\n\n const [os_name, os_version] = Info.os(userAgent)\n return extend(\n stripEmptyProperties({\n $os: os_name,\n $os_version: os_version,\n $browser: Info.browser(userAgent, navigator.vendor),\n }),\n {\n $browser_version: Info.browserVersion(userAgent, navigator.vendor),\n }\n )\n },\n}\n","var n,l,u,t,i,o,r,f,e,c={},s=[],a=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,h=Array.isArray;function v(n,l){for(var u in l)n[u]=l[u];return n}function p(n){var l=n.parentNode;l&&l.removeChild(n)}function y(l,u,t){var i,o,r,f={};for(r in u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return d(l,f,i,o,null)}function d(n,t,i,o,r){var f={type:n,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:null==r?++u:r,__i:-1,__u:0};return null==r&&null!=l.vnode&&l.vnode(f),f}function _(){return{current:null}}function g(n){return n.children}function b(n,l){this.props=n,this.context=l}function m(n,l){if(null==l)return n.__?m(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?m(n):null}function k(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return k(n)}}function w(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!x.__r++||o!==l.debounceRendering)&&((o=l.debounceRendering)||r)(x)}function x(){var n,u,t,o,r,e,c,s,a;for(i.sort(f);n=i.shift();)n.__d&&(u=i.length,o=void 0,e=(r=(t=n).__v).__e,s=[],a=[],(c=t.__P)&&((o=v({},r)).__v=r.__v+1,l.vnode&&l.vnode(o),L(c,o,r,t.__n,void 0!==c.ownerSVGElement,32&r.__u?[e]:null,s,null==e?m(r):e,!!(32&r.__u),a),o.__.__k[o.__i]=o,M(s,o,a),o.__e!=e&&k(o)),i.length>u&&i.sort(f));x.__r=0}function C(n,l,u,t,i,o,r,f,e,a,h){var v,p,y,d,_,g=t&&t.__k||s,b=l.length;for(u.__d=e,P(u,l,g),e=u.__d,v=0;v<b;v++)null!=(y=u.__k[v])&&\"boolean\"!=typeof y&&\"function\"!=typeof y&&(p=-1===y.__i?c:g[y.__i]||c,y.__i=v,L(n,y,p,i,o,r,f,e,a,h),d=y.__e,y.ref&&p.ref!=y.ref&&(p.ref&&z(p.ref,null,y),h.push(y.ref,y.__c||d,y)),null==_&&null!=d&&(_=d),65536&y.__u||p.__k===y.__k?e=S(y,e,n):\"function\"==typeof y.type&&void 0!==y.__d?e=y.__d:d&&(e=d.nextSibling),y.__d=void 0,y.__u&=-196609);u.__d=e,u.__e=_}function P(n,l,u){var t,i,o,r,f,e=l.length,c=u.length,s=c,a=0;for(n.__k=[],t=0;t<e;t++)null!=(i=n.__k[t]=null==(i=l[t])||\"boolean\"==typeof i||\"function\"==typeof i?null:\"string\"==typeof i||\"number\"==typeof i||\"bigint\"==typeof i||i.constructor==String?d(null,i,null,null,i):h(i)?d(g,{children:i},null,null,null):void 0===i.constructor&&i.__b>0?d(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):i)?(i.__=n,i.__b=n.__b+1,f=H(i,u,r=t+a,s),i.__i=f,o=null,-1!==f&&(s--,(o=u[f])&&(o.__u|=131072)),null==o||null===o.__v?(-1==f&&a--,\"function\"!=typeof i.type&&(i.__u|=65536)):f!==r&&(f===r+1?a++:f>r?s>e-r?a+=f-r:a--:a=f<r&&f==r-1?f-r:0,f!==t+a&&(i.__u|=65536))):(o=u[t])&&null==o.key&&o.__e&&(o.__e==n.__d&&(n.__d=m(o)),N(o,o,!1),u[t]=null,s--);if(s)for(t=0;t<c;t++)null!=(o=u[t])&&0==(131072&o.__u)&&(o.__e==n.__d&&(n.__d=m(o)),N(o,o))}function S(n,l,u){var t,i;if(\"function\"==typeof n.type){for(t=n.__k,i=0;t&&i<t.length;i++)t[i]&&(t[i].__=n,l=S(t[i],l,u));return l}return n.__e!=l&&(u.insertBefore(n.__e,l||null),l=n.__e),l&&l.nextSibling}function $(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(h(n)?n.some(function(n){$(n,l)}):l.push(n)),l}function H(n,l,u,t){var i=n.key,o=n.type,r=u-1,f=u+1,e=l[u];if(null===e||e&&i==e.key&&o===e.type)return u;if(t>(null!=e&&0==(131072&e.__u)?1:0))for(;r>=0||f<l.length;){if(r>=0){if((e=l[r])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return r;r--}if(f<l.length){if((e=l[f])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return f;f++}}return-1}function I(n,l,u){\"-\"===l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||a.test(l)?u:u+\"px\"}function T(n,l,u,t,i){var o;n:if(\"style\"===l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||I(n.style,l,\"\");if(u)for(l in u)t&&u[l]===t[l]||I(n.style,l,u[l])}else if(\"o\"===l[0]&&\"n\"===l[1])o=l!==(l=l.replace(/(PointerCapture)$|Capture$/,\"$1\")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+o]=u,u?t?u.u=t.u:(u.u=Date.now(),n.addEventListener(l,o?D:A,o)):n.removeEventListener(l,o?D:A,o);else{if(i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!==l&&\"height\"!==l&&\"href\"!==l&&\"list\"!==l&&\"form\"!==l&&\"tabIndex\"!==l&&\"download\"!==l&&\"rowSpan\"!==l&&\"colSpan\"!==l&&\"role\"!==l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!==l[4]?n.removeAttribute(l):n.setAttribute(l,u))}}function A(n){var u=this.l[n.type+!1];if(n.t){if(n.t<=u.u)return}else n.t=Date.now();return u(l.event?l.event(n):n)}function D(n){return this.l[n.type+!0](l.event?l.event(n):n)}function L(n,u,t,i,o,r,f,e,c,s){var a,p,y,d,_,m,k,w,x,P,S,$,H,I,T,A=u.type;if(void 0!==u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),r=[e=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof A)try{if(w=u.props,x=(a=A.contextType)&&i[a.__c],P=a?x?x.props.value:a.__:i,t.__c?k=(p=u.__c=t.__c).__=p.__E:(\"prototype\"in A&&A.prototype.render?u.__c=p=new A(w,P):(u.__c=p=new b(w,P),p.constructor=A,p.render=O),x&&x.sub(p),p.props=w,p.state||(p.state={}),p.context=P,p.__n=i,y=p.__d=!0,p.__h=[],p._sb=[]),null==p.__s&&(p.__s=p.state),null!=A.getDerivedStateFromProps&&(p.__s==p.state&&(p.__s=v({},p.__s)),v(p.__s,A.getDerivedStateFromProps(w,p.__s))),d=p.props,_=p.state,p.__v=u,y)null==A.getDerivedStateFromProps&&null!=p.componentWillMount&&p.componentWillMount(),null!=p.componentDidMount&&p.__h.push(p.componentDidMount);else{if(null==A.getDerivedStateFromProps&&w!==d&&null!=p.componentWillReceiveProps&&p.componentWillReceiveProps(w,P),!p.__e&&(null!=p.shouldComponentUpdate&&!1===p.shouldComponentUpdate(w,p.__s,P)||u.__v===t.__v)){for(u.__v!==t.__v&&(p.props=w,p.state=p.__s,p.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.forEach(function(n){n&&(n.__=u)}),S=0;S<p._sb.length;S++)p.__h.push(p._sb[S]);p._sb=[],p.__h.length&&f.push(p);break n}null!=p.componentWillUpdate&&p.componentWillUpdate(w,p.__s,P),null!=p.componentDidUpdate&&p.__h.push(function(){p.componentDidUpdate(d,_,m)})}if(p.context=P,p.props=w,p.__P=n,p.__e=!1,$=l.__r,H=0,\"prototype\"in A&&A.prototype.render){for(p.state=p.__s,p.__d=!1,$&&$(u),a=p.render(p.props,p.state,p.context),I=0;I<p._sb.length;I++)p.__h.push(p._sb[I]);p._sb=[]}else do{p.__d=!1,$&&$(u),a=p.render(p.props,p.state,p.context),p.state=p.__s}while(p.__d&&++H<25);p.state=p.__s,null!=p.getChildContext&&(i=v(v({},i),p.getChildContext())),y||null==p.getSnapshotBeforeUpdate||(m=p.getSnapshotBeforeUpdate(d,_)),C(n,h(T=null!=a&&a.type===g&&null==a.key?a.props.children:a)?T:[T],u,t,i,o,r,f,e,c,s),p.base=u.__e,u.__u&=-161,p.__h.length&&f.push(p),k&&(p.__E=p.__=null)}catch(n){u.__v=null,c||null!=r?(u.__e=e,u.__u|=c?160:32,r[r.indexOf(e)]=null):(u.__e=t.__e,u.__k=t.__k),l.__e(n,u,t)}else null==r&&u.__v===t.__v?(u.__k=t.__k,u.__e=t.__e):u.__e=j(t.__e,u,t,i,o,r,f,c,s);(a=l.diffed)&&a(u)}function M(n,u,t){u.__d=void 0;for(var i=0;i<t.length;i++)z(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function j(l,u,t,i,o,r,f,e,s){var a,v,y,d,_,g,b,k=t.props,w=u.props,x=u.type;if(\"svg\"===x&&(o=!0),null!=r)for(a=0;a<r.length;a++)if((_=r[a])&&\"setAttribute\"in _==!!x&&(x?_.localName===x:3===_.nodeType)){l=_,r[a]=null;break}if(null==l){if(null===x)return document.createTextNode(w);l=o?document.createElementNS(\"http://www.w3.org/2000/svg\",x):document.createElement(x,w.is&&w),r=null,e=!1}if(null===x)k===w||e&&l.data===w||(l.data=w);else{if(r=r&&n.call(l.childNodes),k=t.props||c,!e&&null!=r)for(k={},a=0;a<l.attributes.length;a++)k[(_=l.attributes[a]).name]=_.value;for(a in k)_=k[a],\"children\"==a||(\"dangerouslySetInnerHTML\"==a?y=_:\"key\"===a||a in w||T(l,a,null,_,o));for(a in w)_=w[a],\"children\"==a?d=_:\"dangerouslySetInnerHTML\"==a?v=_:\"value\"==a?g=_:\"checked\"==a?b=_:\"key\"===a||e&&\"function\"!=typeof _||k[a]===_||T(l,a,_,k[a],o);if(v)e||y&&(v.__html===y.__html||v.__html===l.innerHTML)||(l.innerHTML=v.__html),u.__k=[];else if(y&&(l.innerHTML=\"\"),C(l,h(d)?d:[d],u,t,i,o&&\"foreignObject\"!==x,r,f,r?r[0]:t.__k&&m(t,0),e,s),null!=r)for(a=r.length;a--;)null!=r[a]&&p(r[a]);e||(a=\"value\",void 0!==g&&(g!==l[a]||\"progress\"===x&&!g||\"option\"===x&&g!==k[a])&&T(l,a,g,k[a],!1),a=\"checked\",void 0!==b&&b!==l[a]&&T(l,a,b,k[a],!1))}return l}function z(n,u,t){try{\"function\"==typeof n?n(u):n.current=u}catch(n){l.__e(n,t)}}function N(n,u,t){var i,o;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!==n.__e||z(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null,n.__c=void 0}if(i=n.__k)for(o=0;o<i.length;o++)i[o]&&N(i[o],u,t||\"function\"!=typeof n.type);t||null==n.__e||p(n.__e),n.__=n.__e=n.__d=void 0}function O(n,l,u){return this.constructor(n,u)}function q(u,t,i){var o,r,f,e;l.__&&l.__(u,t),r=(o=\"function\"==typeof i)?null:i&&i.__k||t.__k,f=[],e=[],L(t,u=(!o&&i||t).__k=y(g,null,[u]),r||c,c,void 0!==t.ownerSVGElement,!o&&i?[i]:r?null:t.firstChild?n.call(t.childNodes):null,f,!o&&i?i:r?r.__e:t.firstChild,o,e),M(f,u,e)}function B(n,l){q(n,l,B)}function E(l,u,t){var i,o,r,f,e=v({},l.props);for(r in l.type&&l.type.defaultProps&&(f=l.type.defaultProps),u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:e[r]=void 0===u[r]&&void 0!==f?f[r]:u[r];return arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),d(l.type,e,i||l.key,o||l.ref,null)}function F(n,l){var u={__c:l=\"__cC\"+e++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,t;return this.getChildContext||(u=[],(t={})[l]=this,this.getChildContext=function(){return t},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,w(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=s.slice,l={__e:function(n,l,u,t){for(var i,o,r;l=l.__;)if((i=l.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(n)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),r=i.__d),r)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},b.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=v({},this.state),\"function\"==typeof n&&(n=n(v({},u),this.props)),n&&v(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),w(this))},b.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),w(this))},b.prototype.render=g,i=[],r=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,f=function(n,l){return n.__v.__b-l.__v.__b},x.__r=0,e=0;export{b as Component,g as Fragment,E as cloneElement,F as createContext,y as createElement,_ as createRef,y as h,B as hydrate,t as isValidElement,l as options,q as render,$ as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import { VNode, cloneElement, createContext } from 'preact'\nimport { PostHog } from '../../posthog-core'\nimport {\n MultipleSurveyQuestion,\n Survey,\n SurveyAppearance,\n SurveyQuestion,\n SurveySchedule,\n SurveyType,\n} from '../../posthog-surveys-types'\nimport { document as _document, window as _window } from '../../utils/globals'\nimport { createLogger } from '../../utils/logger'\n// We cast the types here which is dangerous but protected by the top level generateSurveys call\nconst window = _window as Window & typeof globalThis\nconst document = _document as Document\nconst SurveySeenPrefix = 'seenSurvey_'\n\nconst logger = createLogger('[Surveys]')\n\nexport function getFontFamily(fontFamily?: string): string {\n if (fontFamily === 'inherit') {\n return 'inherit'\n }\n\n const defaultFontStack =\n 'BlinkMacSystemFont, \"Inter\", \"Segoe UI\", \"Roboto\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"'\n return fontFamily ? `${fontFamily}, ${defaultFontStack}` : `-apple-system, ${defaultFontStack}`\n}\n\nexport const style = (appearance: SurveyAppearance | null) => {\n const positions = {\n left: 'left: 30px;',\n right: 'right: 30px;',\n center: `\n left: 50%;\n transform: translateX(-50%);\n `,\n }\n return `\n .survey-form, .thank-you-message {\n position: fixed;\n margin: 0px;\n bottom: 0px;\n color: black;\n font-weight: normal;\n font-family: ${getFontFamily(appearance?.fontFamily)};\n text-align: left;\n max-width: ${parseInt(appearance?.maxWidth || '300')}px;\n width: 100%;\n z-index: ${parseInt(appearance?.zIndex || '99999')};\n border: 1.5px solid ${appearance?.borderColor || '#c9c6c6'};\n border-bottom: 0px;\n ${positions[appearance?.position || 'right'] || 'right: 30px;'}\n flex-direction: column;\n background: ${appearance?.backgroundColor || '#eeeded'};\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n box-shadow: -6px 0 16px -8px rgb(0 0 0 / 8%), -9px 0 28px 0 rgb(0 0 0 / 5%), -12px 0 48px 16px rgb(0 0 0 / 3%);\n }\n\n .survey-box, .thank-you-message-container {\n padding: 20px 25px 10px;\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n }\n\n .thank-you-message {\n text-align: center;\n }\n\n .form-submit[disabled] {\n opacity: 0.6;\n filter: grayscale(50%);\n cursor: not-allowed;\n }\n .survey-form textarea {\n color: #2d2d2d;\n font-size: 14px;\n font-family: ${getFontFamily(appearance?.fontFamily)};\n background: white;\n color: black;\n outline: none;\n padding-left: 10px;\n padding-right: 10px;\n padding-top: 10px;\n border-radius: 6px;\n border-color: ${appearance?.borderColor || '#c9c6c6'};\n margin-top: 14px;\n width: 100%;\n box-sizing: border-box;\n }\n .survey-box:has(.survey-question:empty):not(:has(.survey-question-description)) textarea {\n margin-top: 0;\n }\n .form-submit {\n box-sizing: border-box;\n margin: 0;\n font-family: inherit;\n overflow: visible;\n text-transform: none;\n position: relative;\n display: inline-block;\n font-weight: 700;\n white-space: nowrap;\n text-align: center;\n border: 1.5px solid transparent;\n cursor: pointer;\n user-select: none;\n touch-action: manipulation;\n padding: 12px;\n font-size: 14px;\n border-radius: 6px;\n outline: 0;\n background: ${appearance?.submitButtonColor || 'black'} !important;\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);\n box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\n width: 100%;\n }\n .form-cancel {\n display: flex;\n float: right;\n border: none;\n background: none;\n cursor: pointer;\n }\n .cancel-btn-wrapper {\n position: absolute;\n width: 35px;\n height: 35px;\n border-radius: 100%;\n top: 0;\n right: 0;\n transform: translate(50%, -50%);\n background: white;\n border: 1.5px solid ${appearance?.borderColor || '#c9c6c6'};\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .bolded { font-weight: 600; }\n .buttons {\n display: flex;\n justify-content: center;\n }\n .footer-branding {\n font-size: 11px;\n margin-top: 10px;\n text-align: center;\n display: flex;\n justify-content: center;\n gap: 4px;\n align-items: center;\n font-weight: 500;\n background: ${appearance?.backgroundColor || '#eeeded'};\n text-decoration: none;\n backgroundColor: ${appearance?.backgroundColor || '#eeeded'};\n color: ${getContrastingTextColor(appearance?.backgroundColor || '#eeeded')};\n }\n .survey-question {\n font-weight: 500;\n font-size: 14px;\n background: ${appearance?.backgroundColor || '#eeeded'};\n }\n .question-textarea-wrapper {\n display: flex;\n flex-direction: column;\n }\n .survey-question-description {\n font-size: 13px;\n padding-top: 5px;\n background: ${appearance?.backgroundColor || '#eeeded'};\n }\n .ratings-number {\n font-size: 16px;\n font-weight: 600;\n padding: 8px 0px;\n border: none;\n }\n .ratings-number:hover {\n cursor: pointer;\n }\n .rating-options {\n margin-top: 14px;\n }\n .rating-options-number {\n display: grid;\n border-radius: 6px;\n overflow: hidden;\n border: 1.5px solid ${appearance?.borderColor || '#c9c6c6'};\n }\n .rating-options-number > .ratings-number {\n border-right: 1px solid ${appearance?.borderColor || '#c9c6c6'};\n }\n .rating-options-number > .ratings-number:last-of-type {\n border-right: 0px;\n }\n .rating-options-number .rating-active {\n background: ${appearance?.ratingButtonActiveColor || 'black'};\n }\n .rating-options-emoji {\n display: flex;\n justify-content: space-between;\n }\n .ratings-emoji {\n font-size: 16px;\n background-color: transparent;\n border: none;\n padding: 0px;\n }\n .ratings-emoji:hover {\n cursor: pointer;\n }\n .ratings-emoji.rating-active svg {\n fill: ${appearance?.ratingButtonActiveColor || 'black'};\n }\n .emoji-svg {\n fill: '#939393';\n }\n .rating-text {\n display: flex;\n flex-direction: row;\n font-size: 11px;\n justify-content: space-between;\n margin-top: 6px;\n background: ${appearance?.backgroundColor || '#eeeded'};\n opacity: .60;\n }\n .limit-height {\n max-height: 300px;\n overflow: auto;\n scrollbar-width: thin;\n scrollbar-color: ${appearance?.borderColor || '#c9c6c6'} ${appearance?.backgroundColor || '#eeeded'};\n }\n .multiple-choice-options {\n margin-top: 13px;\n font-size: 14px;\n }\n .survey-box:has(.survey-question:empty):not(:has(.survey-question-description)) .multiple-choice-options {\n margin-top: 0;\n }\n .multiple-choice-options .choice-option {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 13px;\n cursor: pointer;\n margin-bottom: 5px;\n position: relative;\n }\n .multiple-choice-options > .choice-option:last-of-type {\n margin-bottom: 0px;\n }\n .multiple-choice-options input {\n cursor: pointer;\n position: absolute;\n opacity: 0;\n }\n .choice-check {\n position: absolute;\n right: 10px;\n background: white;\n }\n .choice-check svg {\n display: none;\n }\n .multiple-choice-options .choice-option:hover .choice-check svg {\n display: inline-block;\n opacity: .25;\n }\n .multiple-choice-options input:checked + label + .choice-check svg {\n display: inline-block;\n opacity: 100% !important;\n }\n .multiple-choice-options input:checked + label {\n font-weight: bold;\n border: 1.5px solid rgba(0,0,0);\n }\n .multiple-choice-options input:checked + label input {\n font-weight: bold;\n }\n .multiple-choice-options label {\n width: 100%;\n cursor: pointer;\n padding: 10px;\n border: 1.5px solid rgba(0,0,0,.25);\n border-radius: 4px;\n background: white;\n }\n .multiple-choice-options .choice-option-open label {\n padding-right: 30px;\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n max-width: 100%;\n }\n .multiple-choice-options .choice-option-open label span {\n width: 100%;\n }\n .multiple-choice-options .choice-option-open input:disabled + label {\n opacity: 0.6;\n }\n .multiple-choice-options .choice-option-open label input {\n position: relative;\n opacity: 1;\n flex-grow: 1;\n border: 0;\n outline: 0;\n }\n .thank-you-message-body {\n margin-top: 6px;\n font-size: 14px;\n background: ${appearance?.backgroundColor || '#eeeded'};\n }\n .thank-you-message-header {\n margin: 10px 0px 0px;\n background: ${appearance?.backgroundColor || '#eeeded'};\n }\n .thank-you-message-container .form-submit {\n margin-top: 20px;\n margin-bottom: 10px;\n }\n .thank-you-message-countdown {\n margin-left: 6px;\n }\n .bottom-section {\n margin-top: 14px;\n }\n `\n}\n\nfunction nameToHex(name: string) {\n return {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n 'indianred ': '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgrey: '#d3d3d3',\n lightgreen: '#90ee90',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370d8',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#d87093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n }[name.toLowerCase()]\n}\n\nfunction hex2rgb(c: string) {\n if (c[0] === '#') {\n const hexColor = c.replace(/^#/, '')\n const r = parseInt(hexColor.slice(0, 2), 16)\n const g = parseInt(hexColor.slice(2, 4), 16)\n const b = parseInt(hexColor.slice(4, 6), 16)\n return 'rgb(' + r + ',' + g + ',' + b + ')'\n }\n return 'rgb(255, 255, 255)'\n}\n\nexport function getContrastingTextColor(color: string = defaultBackgroundColor) {\n let rgb\n if (color[0] === '#') {\n rgb = hex2rgb(color)\n }\n if (color.startsWith('rgb')) {\n rgb = color\n }\n // otherwise it's a color name\n const nameColorToHex = nameToHex(color)\n if (nameColorToHex) {\n rgb = hex2rgb(nameColorToHex)\n }\n if (!rgb) {\n return 'black'\n }\n const colorMatch = rgb.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)\n if (colorMatch) {\n const r = parseInt(colorMatch[1])\n const g = parseInt(colorMatch[2])\n const b = parseInt(colorMatch[3])\n const hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b))\n return hsp > 127.5 ? 'black' : 'white'\n }\n return 'black'\n}\nexport function getTextColor(el: HTMLElement) {\n const backgroundColor = window.getComputedStyle(el).backgroundColor\n if (backgroundColor === 'rgba(0, 0, 0, 0)') {\n return 'black'\n }\n const colorMatch = backgroundColor.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)\n if (!colorMatch) return 'black'\n\n const r = parseInt(colorMatch[1])\n const g = parseInt(colorMatch[2])\n const b = parseInt(colorMatch[3])\n const hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b))\n return hsp > 127.5 ? 'black' : 'white'\n}\n\nexport const defaultSurveyAppearance: SurveyAppearance = {\n backgroundColor: '#eeeded',\n submitButtonColor: 'black',\n submitButtonTextColor: 'white',\n ratingButtonColor: 'white',\n ratingButtonActiveColor: 'black',\n borderColor: '#c9c6c6',\n placeholder: 'Start typing...',\n whiteLabel: false,\n displayThankYouMessage: true,\n thankYouMessageHeader: 'Thank you for your feedback!',\n position: 'right',\n}\n\nexport const defaultBackgroundColor = '#eeeded'\n\nexport const createShadow = (styleSheet: string, surveyId: string, element?: Element) => {\n const div = document.createElement('div')\n div.className = `PostHogSurvey${surveyId}`\n const shadow = div.attachShadow({ mode: 'open' })\n if (styleSheet) {\n const styleElement = Object.assign(document.createElement('style'), {\n innerText: styleSheet,\n })\n shadow.appendChild(styleElement)\n }\n ;(element ? element : document.body).appendChild(div)\n return shadow\n}\n\nexport const sendSurveyEvent = (\n responses: Record<string, string | number | string[] | null> = {},\n survey: Survey,\n posthog?: PostHog\n) => {\n if (!posthog) {\n logger.error('[survey sent] event not captured, PostHog instance not found.')\n return\n }\n localStorage.setItem(getSurveySeenKey(survey), 'true')\n\n posthog.capture('survey sent', {\n $survey_name: survey.name,\n $survey_id: survey.id,\n $survey_iteration: survey.current_iteration,\n $survey_iteration_start_date: survey.current_iteration_start_date,\n $survey_questions: survey.questions.map((question) => question.question),\n sessionRecordingUrl: posthog.get_session_replay_url?.(),\n ...responses,\n $set: {\n [getSurveyInteractionProperty(survey, 'responded')]: true,\n },\n })\n window.dispatchEvent(new Event('PHSurveySent'))\n}\n\nexport const dismissedSurveyEvent = (survey: Survey, posthog?: PostHog, readOnly?: boolean) => {\n // TODO: state management and unit tests for this would be nice\n if (!posthog) {\n logger.error('[survey dismissed] event not captured, PostHog instance not found.')\n return\n }\n if (readOnly) {\n return\n }\n posthog.capture('survey dismissed', {\n $survey_name: survey.name,\n $survey_id: survey.id,\n $survey_iteration: survey.current_iteration,\n $survey_iteration_start_date: survey.current_iteration_start_date,\n sessionRecordingUrl: posthog.get_session_replay_url?.(),\n $set: {\n [getSurveyInteractionProperty(survey, 'dismissed')]: true,\n },\n })\n localStorage.setItem(getSurveySeenKey(survey), 'true')\n window.dispatchEvent(new Event('PHSurveyClosed'))\n}\n\n// Use the Fisher-yates algorithm to shuffle this array\n// https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle\nexport const shuffle = (array: any[]) => {\n return array\n .map((a) => ({ sort: Math.floor(Math.random() * 10), value: a }))\n .sort((a, b) => a.sort - b.sort)\n .map((a) => a.value)\n}\n\nconst reverseIfUnshuffled = (unshuffled: any[], shuffled: any[]): any[] => {\n if (unshuffled.length === shuffled.length && unshuffled.every((val, index) => val === shuffled[index])) {\n return shuffled.reverse()\n }\n\n return shuffled\n}\n\nexport const getDisplayOrderChoices = (question: MultipleSurveyQuestion): string[] => {\n if (!question.shuffleOptions) {\n return question.choices\n }\n\n const displayOrderChoices = question.choices\n let openEndedChoice = ''\n if (question.hasOpenChoice) {\n // if the question has an open-ended choice, its always the last element in the choices array.\n openEndedChoice = displayOrderChoices.pop()!\n }\n\n const shuffledOptions = reverseIfUnshuffled(displayOrderChoices, shuffle(displayOrderChoices))\n\n if (question.hasOpenChoice) {\n question.choices.push(openEndedChoice)\n shuffledOptions.push(openEndedChoice)\n }\n\n return shuffledOptions\n}\n\nexport const getDisplayOrderQuestions = (survey: Survey): SurveyQuestion[] => {\n // retain the original questionIndex so we can correlate values in the webapp\n survey.questions.forEach((question, idx) => {\n question.originalQuestionIndex = idx\n })\n\n if (!survey.appearance || !survey.appearance.shuffleQuestions) {\n return survey.questions\n }\n\n return reverseIfUnshuffled(survey.questions, shuffle(survey.questions))\n}\n\nexport const hasEvents = (survey: Pick<Survey, 'conditions'>): boolean => {\n return survey.conditions?.events?.values?.length != undefined && survey.conditions?.events?.values?.length > 0\n}\n\nexport const canActivateRepeatedly = (survey: Pick<Survey, 'schedule' | 'type' | 'conditions'>): boolean => {\n if (survey.schedule === SurveySchedule.Always && survey.type === SurveyType.Widget) {\n return true\n }\n\n return !!(survey.conditions?.events?.repeatedActivation && hasEvents(survey))\n}\n\n/**\n * getSurveySeen checks local storage for the surveySeen Key a\n * and overrides this value if the survey can be repeatedly activated by its events.\n * @param survey\n */\nexport const getSurveySeen = (survey: Survey): boolean => {\n const surveySeen = localStorage.getItem(getSurveySeenKey(survey))\n if (surveySeen) {\n // if a survey has already been seen,\n // we will override it with the event repeated activation value.\n return !canActivateRepeatedly(survey)\n }\n\n return false\n}\n\nexport const getSurveySeenKey = (survey: Survey): string => {\n let surveySeenKey = `${SurveySeenPrefix}${survey.id}`\n if (survey.current_iteration && survey.current_iteration > 0) {\n surveySeenKey = `${SurveySeenPrefix}${survey.id}_${survey.current_iteration}`\n }\n\n return surveySeenKey\n}\n\nexport const getSurveySeenStorageKeys = (): string[] => {\n const surveyKeys = []\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i)\n if (key?.startsWith(SurveySeenPrefix)) {\n surveyKeys.push(key)\n }\n }\n\n return surveyKeys\n}\n\nconst getSurveyInteractionProperty = (survey: Survey, action: string): string => {\n let surveyProperty = `$survey_${action}/${survey.id}`\n if (survey.current_iteration && survey.current_iteration > 0) {\n surveyProperty = `$survey_${action}/${survey.id}/${survey.current_iteration}`\n }\n\n return surveyProperty\n}\n\nexport const hasWaitPeriodPassed = (\n lastSeenSurveyDate: string | null,\n waitPeriodInDays: number | undefined\n): boolean => {\n if (!waitPeriodInDays || !lastSeenSurveyDate) {\n return true\n }\n\n const today = new Date()\n const diff = Math.abs(today.getTime() - new Date(lastSeenSurveyDate).getTime())\n const diffDaysFromToday = Math.ceil(diff / (1000 * 3600 * 24))\n return diffDaysFromToday > waitPeriodInDays\n}\n\ninterface SurveyContextProps {\n isPreviewMode: boolean\n previewPageIndex: number | undefined\n handleCloseSurveyPopup: () => void\n isPopup: boolean\n onPreviewSubmit: (res: string | string[] | number | null) => void\n}\n\nexport const SurveyContext = createContext<SurveyContextProps>({\n isPreviewMode: false,\n previewPageIndex: 0,\n handleCloseSurveyPopup: () => {},\n isPopup: true,\n onPreviewSubmit: () => {},\n})\n\ninterface RenderProps {\n component: VNode<{ className: string }>\n children: string\n renderAsHtml?: boolean\n style?: React.CSSProperties\n}\n\nexport const renderChildrenAsTextOrHtml = ({ component, children, renderAsHtml, style }: RenderProps) => {\n return renderAsHtml\n ? cloneElement(component, {\n dangerouslySetInnerHTML: { __html: children },\n style,\n })\n : cloneElement(component, {\n children,\n style,\n })\n}\n","export const isValidRegex = function (str: string): boolean {\n try {\n new RegExp(str)\n } catch {\n return false\n }\n return true\n}\n\nexport const isMatchingRegex = function (value: string, pattern: string): boolean {\n if (!isValidRegex(pattern)) return false\n\n try {\n return new RegExp(pattern).test(value)\n } catch {\n return false\n }\n}\n","export class SimpleEventEmitter {\n private events: { [key: string]: ((...args: any[]) => void)[] } = {}\n\n constructor() {\n this.events = {}\n }\n\n on(event: string, listener: (...args: any[]) => void): () => void {\n if (!this.events[event]) {\n this.events[event] = []\n }\n this.events[event].push(listener)\n\n return () => {\n this.events[event] = this.events[event].filter((x) => x !== listener)\n }\n }\n\n emit(event: string, payload: any): void {\n for (const listener of this.events[event] || []) {\n listener(payload)\n }\n for (const listener of this.events['*'] || []) {\n listener(event, payload)\n }\n }\n}\n","import { PostHog } from '../../posthog-core'\nimport { ActionStepStringMatching, ActionStepType, SurveyActionType, SurveyElement } from '../../posthog-surveys-types'\nimport { SimpleEventEmitter } from '../../utils/simple-event-emitter'\nimport { CaptureResult } from '../../types'\nimport { isUndefined } from '../../utils/type-utils'\nimport { window } from '../../utils/globals'\nimport { isMatchingRegex } from '../../utils/regex-utils'\n\nexport class ActionMatcher {\n private readonly actionRegistry?: Set<SurveyActionType>\n private readonly instance?: PostHog\n private readonly actionEvents: Set<string>\n private _debugEventEmitter = new SimpleEventEmitter()\n\n constructor(instance?: PostHog) {\n this.instance = instance\n this.actionEvents = new Set<string>()\n this.actionRegistry = new Set<SurveyActionType>()\n }\n\n init() {\n if (!isUndefined(this.instance?._addCaptureHook)) {\n const matchEventToAction = (eventName: string, eventPayload: any) => {\n this.on(eventName, eventPayload)\n }\n this.instance?._addCaptureHook(matchEventToAction)\n }\n }\n\n register(actions: SurveyActionType[]): void {\n if (isUndefined(this.instance?._addCaptureHook)) {\n return\n }\n\n actions.forEach((action) => {\n this.actionRegistry?.add(action)\n action.steps?.forEach((step) => {\n this.actionEvents?.add(step?.event || '')\n })\n })\n\n if (this.instance?.autocapture) {\n const selectorsToWatch: Set<string> = new Set<string>()\n actions.forEach((action) => {\n action.steps?.forEach((step) => {\n if (step?.selector) {\n selectorsToWatch.add(step?.selector)\n }\n })\n })\n this.instance?.autocapture.setElementSelectors(selectorsToWatch)\n }\n }\n\n on(eventName: string, eventPayload?: CaptureResult) {\n if (eventPayload == null || eventName.length == 0) {\n return\n }\n\n if (!this.actionEvents.has(eventName) && !this.actionEvents.has(<string>eventPayload?.event)) {\n return\n }\n\n if (this.actionRegistry && this.actionRegistry?.size > 0) {\n this.actionRegistry.forEach((action) => {\n if (this.checkAction(eventPayload, action)) {\n this._debugEventEmitter.emit('actionCaptured', action.name)\n }\n })\n }\n }\n\n _addActionHook(callback: (actionName: string, eventPayload?: any) => void): void {\n this.onAction('actionCaptured', (data) => callback(data))\n }\n\n private checkAction(event?: CaptureResult, action?: SurveyActionType): boolean {\n if (action?.steps == null) {\n return false\n }\n\n for (const step of action.steps) {\n if (this.checkStep(event, step)) {\n return true\n }\n }\n\n return false\n }\n\n onAction(event: 'actionCaptured', cb: (...args: any[]) => void): () => void {\n return this._debugEventEmitter.on(event, cb)\n }\n\n private checkStep = (event?: CaptureResult, step?: ActionStepType): boolean => {\n return this.checkStepEvent(event, step) && this.checkStepUrl(event, step) && this.checkStepElement(event, step)\n }\n\n private checkStepEvent = (event?: CaptureResult, step?: ActionStepType): boolean => {\n // CHECK CONDITIONS, OTHERWISE SKIPPED\n if (step?.event && event?.event !== step?.event) {\n return false // EVENT NAME IS A MISMATCH\n }\n return true\n }\n\n private checkStepUrl(event?: CaptureResult, step?: ActionStepType): boolean {\n // CHECK CONDITIONS, OTHERWISE SKIPPED\n if (step?.url) {\n const eventUrl = event?.properties?.$current_url\n if (!eventUrl || typeof eventUrl !== 'string') {\n return false // URL IS UNKNOWN\n }\n if (!ActionMatcher.matchString(eventUrl, step?.url, step?.url_matching || 'contains')) {\n return false // URL IS A MISMATCH\n }\n }\n return true\n }\n\n private static matchString(url: string, pattern: string, matching: ActionStepStringMatching): boolean {\n switch (matching) {\n case 'regex':\n return !!window && isMatchingRegex(url, pattern)\n case 'exact':\n return pattern === url\n case 'contains':\n // Simulating SQL LIKE behavior (_ = any single character, % = any zero or more characters)\n // eslint-disable-next-line no-case-declarations\n const adjustedRegExpStringPattern = ActionMatcher.escapeStringRegexp(pattern)\n .replace(/_/g, '.')\n .replace(/%/g, '.*')\n return isMatchingRegex(url, adjustedRegExpStringPattern)\n\n default:\n return false\n }\n }\n\n private static escapeStringRegexp(pattern: string): string {\n // Escape characters with special meaning either inside or outside character sets.\n // Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n return pattern.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d')\n }\n\n private checkStepElement(event?: CaptureResult, step?: ActionStepType): boolean {\n // CHECK CONDITIONS, OTHERWISE SKIPPED\n if (step?.href || step?.tag_name || step?.text) {\n const elements = this.getElementsList(event)\n if (\n !elements.some((element) => {\n if (\n step?.href &&\n !ActionMatcher.matchString(element.href || '', step?.href, step?.href_matching || 'exact')\n ) {\n return false // ELEMENT HREF IS A MISMATCH\n }\n if (step?.tag_name && element.tag_name !== step?.tag_name) {\n return false // ELEMENT TAG NAME IS A MISMATCH\n }\n if (\n step?.text &&\n !(\n ActionMatcher.matchString(element.text || '', step?.text, step?.text_matching || 'exact') ||\n ActionMatcher.matchString(\n element.$el_text || '',\n step?.text,\n step?.text_matching || 'exact'\n )\n )\n ) {\n return false // ELEMENT TEXT IS A MISMATCH\n }\n return true\n })\n ) {\n // AT LEAST ONE ELEMENT MUST BE A SUBMATCH\n return false\n }\n }\n\n if (step?.selector) {\n const elementSelectors = event?.properties?.$element_selectors as unknown as string[]\n if (!elementSelectors) {\n return false // SELECTOR IS A MISMATCH\n }\n if (!elementSelectors.includes(step?.selector)) {\n return false // SELECTOR IS A MISMATCH\n }\n }\n\n return true\n }\n\n private getElementsList(event?: CaptureResult): SurveyElement[] {\n if (event?.properties.$elements == null) {\n return []\n }\n\n return event?.properties.$elements as unknown as SurveyElement[]\n }\n}\n","import { Survey } from '../posthog-surveys-types'\nimport { SURVEYS_ACTIVATED } from '../constants'\n\nimport { CaptureResult } from '../types'\nimport { ActionMatcher } from '../extensions/surveys/action-matcher'\nimport { PostHog } from '../posthog-core'\nimport { isUndefined } from './type-utils'\n\nexport class SurveyEventReceiver {\n // eventToSurveys is a mapping of event name to all the surveys that are activated by it\n private readonly eventToSurveys: Map<string, string[]>\n // actionToSurveys is a mapping of action name to all the surveys that are activated by it\n private readonly actionToSurveys: Map<string, string[]>\n // actionMatcher can look at CaptureResult payloads and match an event to its corresponding action.\n private actionMatcher?: ActionMatcher | null\n private readonly instance?: PostHog\n private static SURVEY_SHOWN_EVENT_NAME = 'survey shown'\n\n constructor(instance: PostHog) {\n this.instance = instance\n this.eventToSurveys = new Map<string, string[]>()\n this.actionToSurveys = new Map<string, string[]>()\n }\n\n register(surveys: Survey[]): void {\n if (isUndefined(this.instance?._addCaptureHook)) {\n return\n }\n\n this.setupEventBasedSurveys(surveys)\n this.setupActionBasedSurveys(surveys)\n }\n\n private setupActionBasedSurveys(surveys: Survey[]) {\n const actionBasedSurveys = surveys.filter(\n (survey: Survey) => survey.conditions?.actions && survey.conditions?.actions?.values?.length > 0\n )\n\n if (actionBasedSurveys.length === 0) {\n return\n }\n\n if (this.actionMatcher == null) {\n this.actionMatcher = new ActionMatcher(this.instance)\n this.actionMatcher.init()\n // match any actions to its corresponding survey.\n const matchActionToSurvey = (actionName: string) => {\n this.onAction(actionName)\n }\n\n this.actionMatcher._addActionHook(matchActionToSurvey)\n }\n\n actionBasedSurveys.forEach((survey) => {\n if (\n survey.conditions &&\n survey.conditions?.actions &&\n survey.conditions?.actions?.values &&\n survey.conditions?.actions?.values?.length > 0\n ) {\n // register the known set of actions with\n // the action-matcher so it can match\n // events to actions\n this.actionMatcher?.register(survey.conditions.actions.values)\n\n // maintain a mapping of (Action1) => [Survey1, Survey2, Survey3]\n // where Surveys 1-3 are all activated by Action1\n survey.conditions?.actions?.values?.forEach((action) => {\n if (action && action.name) {\n const knownSurveys: string[] | undefined = this.actionToSurveys.get(action.name)\n if (knownSurveys) {\n knownSurveys.push(survey.id)\n }\n this.actionToSurveys.set(action.name, knownSurveys || [survey.id])\n }\n })\n }\n })\n }\n\n private setupEventBasedSurveys(surveys: Survey[]) {\n const eventBasedSurveys = surveys.filter(\n (survey: Survey) => survey.conditions?.events && survey.conditions?.events?.values?.length > 0\n )\n\n if (eventBasedSurveys.length === 0) {\n return\n }\n\n // match any events to its corresponding survey.\n const matchEventToSurvey = (eventName: string, eventPayload?: CaptureResult) => {\n this.onEvent(eventName, eventPayload)\n }\n this.instance?._addCaptureHook(matchEventToSurvey)\n\n surveys.forEach((survey) => {\n // maintain a mapping of (Event1) => [Survey1, Survey2, Survey3]\n // where Surveys 1-3 are all activated by Event1\n survey.conditions?.events?.values?.forEach((event) => {\n if (event && event.name) {\n const knownSurveys: string[] | undefined = this.eventToSurveys.get(event.name)\n if (knownSurveys) {\n knownSurveys.push(survey.id)\n }\n this.eventToSurveys.set(event.name, knownSurveys || [survey.id])\n }\n })\n })\n }\n\n onEvent(event: string, eventPayload?: CaptureResult): void {\n const existingActivatedSurveys: string[] = this.instance?.persistence?.props[SURVEYS_ACTIVATED] || []\n if (\n SurveyEventReceiver.SURVEY_SHOWN_EVENT_NAME == event &&\n eventPayload &&\n existingActivatedSurveys.length > 0\n ) {\n // remove survey that from activatedSurveys here.\n const surveyId = eventPayload?.properties?.$survey_id\n if (surveyId) {\n const index = existingActivatedSurveys.indexOf(surveyId)\n if (index >= 0) {\n existingActivatedSurveys.splice(index, 1)\n this._updateActivatedSurveys(existingActivatedSurveys)\n }\n }\n } else {\n if (this.eventToSurveys.has(event)) {\n this._updateActivatedSurveys(existingActivatedSurveys.concat(this.eventToSurveys.get(event) || []))\n }\n }\n }\n\n onAction(actionName: string): void {\n const existingActivatedSurveys: string[] = this.instance?.persistence?.props[SURVEYS_ACTIVATED] || []\n if (this.actionToSurveys.has(actionName)) {\n this._updateActivatedSurveys(existingActivatedSurveys.concat(this.actionToSurveys.get(actionName) || []))\n }\n }\n\n private _updateActivatedSurveys(activatedSurveys: string[]) {\n // we use a new Set here to remove duplicates.\n this.instance?.persistence?.register({\n [SURVEYS_ACTIVATED]: [...new Set(activatedSurveys)],\n })\n }\n\n getSurveys(): string[] {\n const existingActivatedSurveys = this.instance?.persistence?.props[SURVEYS_ACTIVATED]\n return existingActivatedSurveys ? existingActivatedSurveys : []\n }\n\n getEventToSurveys(): Map<string, string[]> {\n return this.eventToSurveys\n }\n\n _getActionMatcher(): ActionMatcher | null | undefined {\n return this.actionMatcher\n }\n}\n","import { SURVEYS } from './constants'\nimport { getSurveySeenStorageKeys } from './extensions/surveys/surveys-utils'\nimport { PostHog } from './posthog-core'\nimport { Survey, SurveyCallback, SurveyMatchType } from './posthog-surveys-types'\nimport { RemoteConfig } from './types'\nimport { Info } from './utils/event-utils'\nimport { assignableWindow, document, userAgent, window } from './utils/globals'\nimport { createLogger } from './utils/logger'\nimport { isMatchingRegex } from './utils/regex-utils'\nimport { SurveyEventReceiver } from './utils/survey-event-receiver'\nimport { isNullish } from './utils/type-utils'\n\nconst logger = createLogger('[Surveys]')\n\nexport const surveyValidationMap: Record<SurveyMatchType, (targets: string[], value: string) => boolean> = {\n icontains: (targets, value) => targets.some((target) => value.toLowerCase().includes(target.toLowerCase())),\n\n not_icontains: (targets, value) => targets.every((target) => !value.toLowerCase().includes(target.toLowerCase())),\n\n regex: (targets, value) => targets.some((target) => isMatchingRegex(value, target)),\n\n not_regex: (targets, value) => targets.every((target) => !isMatchingRegex(value, target)),\n\n exact: (targets, value) => targets.some((target) => value === target),\n\n is_not: (targets, value) => targets.every((target) => value !== target),\n}\n\nfunction defaultMatchType(matchType?: SurveyMatchType): SurveyMatchType {\n return matchType ?? 'icontains'\n}\n\n// use urlMatchType to validate url condition, fallback to contains for backwards compatibility\nexport function doesSurveyUrlMatch(survey: Pick<Survey, 'conditions'>): boolean {\n if (!survey.conditions?.url) {\n return true\n }\n // if we dont know the url, assume it is not a match\n const href = window?.location?.href\n if (!href) {\n return false\n }\n\n const targets = [survey.conditions.url]\n return surveyValidationMap[defaultMatchType(survey.conditions?.urlMatchType)](targets, href)\n}\n\nexport function doesSurveyDeviceTypesMatch(survey: Survey): boolean {\n if (!survey.conditions?.deviceTypes || survey.conditions?.deviceTypes.length === 0) {\n return true\n }\n // if we dont know the device type, assume it is not a match\n if (!userAgent) {\n return false\n }\n\n const deviceType = Info.deviceType(userAgent)\n return surveyValidationMap[defaultMatchType(survey.conditions?.deviceTypesMatchType)](\n survey.conditions.deviceTypes,\n deviceType\n )\n}\n\nexport class PostHogSurveys {\n private _decideServerResponse?: boolean\n public _surveyEventReceiver: SurveyEventReceiver | null\n private _surveyManager: any\n private _isFetchingSurveys: boolean = false\n private _isInitializingSurveys: boolean = false\n\n constructor(private readonly instance: PostHog) {\n // we set this to undefined here because we need the persistence storage for this type\n // but that's not initialized until loadIfEnabled is called.\n this._surveyEventReceiver = null\n }\n\n onRemoteConfig(response: RemoteConfig) {\n this._decideServerResponse = !!response['surveys']\n logger.info(`decideServerResponse set to ${this._decideServerResponse}`)\n\n this.loadIfEnabled()\n }\n\n reset(): void {\n localStorage.removeItem('lastSeenSurveyDate')\n const surveyKeys = getSurveySeenStorageKeys()\n surveyKeys.forEach((key) => localStorage.removeItem(key))\n }\n\n loadIfEnabled() {\n if (this._surveyManager) {\n // Surveys already loaded.\n return\n }\n\n if (this._isInitializingSurveys) {\n logger.info('Already initializing surveys, skipping...')\n return\n }\n\n const disableSurveys = this.instance.config.disable_surveys\n\n if (disableSurveys) {\n logger.info('Disabled. Not loading surveys.')\n return\n }\n\n const phExtensions = assignableWindow?.__PosthogExtensions__\n\n if (!phExtensions) {\n logger.error('PostHog Extensions not found.')\n return\n }\n\n if (!this._decideServerResponse) {\n logger.warn('Decide not loaded yet. Not loading surveys.')\n return\n }\n\n this._isInitializingSurveys = true\n\n try {\n const generateSurveys = phExtensions.generateSurveys\n\n if (!generateSurveys) {\n const loadExternalDependency = phExtensions.loadExternalDependency\n\n if (loadExternalDependency) {\n loadExternalDependency(this.instance, 'surveys', (err) => {\n if (err || !phExtensions.generateSurveys) {\n logger.error('Could not load surveys script', err)\n this._isInitializingSurveys = false\n return\n }\n\n this._surveyManager = phExtensions.generateSurveys(this.instance)\n this._isInitializingSurveys = false\n this._surveyEventReceiver = new SurveyEventReceiver(this.instance)\n logger.info('Surveys loaded successfully')\n })\n } else {\n logger.error('PostHog loadExternalDependency extension not found. Cannot load remote config.')\n this._isInitializingSurveys = false\n }\n } else {\n this._surveyManager = generateSurveys(this.instance)\n this._isInitializingSurveys = false\n this._surveyEventReceiver = new SurveyEventReceiver(this.instance)\n logger.info('Surveys loaded successfully')\n }\n } catch (e) {\n logger.error('Error initializing surveys', e)\n this._isInitializingSurveys = false\n throw e\n }\n }\n\n getSurveys(callback: SurveyCallback, forceReload = false) {\n // In case we manage to load the surveys script, but config says not to load surveys\n // then we shouldn't return survey data\n if (this.instance.config.disable_surveys) {\n logger.info('Disabled. Not loading surveys.')\n return callback([])\n }\n\n const existingSurveys = this.instance.get_property(SURVEYS)\n\n if (!existingSurveys || forceReload) {\n // Prevent concurrent API calls\n if (this._isFetchingSurveys) {\n return callback([])\n }\n\n try {\n this._isFetchingSurveys = true\n this.instance._send_request({\n url: this.instance.requestRouter.endpointFor(\n 'api',\n `/api/surveys/?token=${this.instance.config.token}`\n ),\n method: 'GET',\n timeout: this.instance.config.surveys_request_timeout_ms,\n callback: (response) => {\n this._isFetchingSurveys = false\n const statusCode = response.statusCode\n if (statusCode !== 200 || !response.json) {\n logger.error(`Surveys API could not be loaded, status: ${statusCode}`)\n return callback([])\n }\n const surveys = response.json.surveys || []\n\n const eventOrActionBasedSurveys = surveys.filter(\n (survey: Survey) =>\n (survey.conditions?.events &&\n survey.conditions?.events?.values &&\n survey.conditions?.events?.values?.length > 0) ||\n (survey.conditions?.actions &&\n survey.conditions?.actions?.values &&\n survey.conditions?.actions?.values?.length > 0)\n )\n\n if (eventOrActionBasedSurveys.length > 0) {\n this._surveyEventReceiver?.register(eventOrActionBasedSurveys)\n }\n\n this.instance.persistence?.register({ [SURVEYS]: surveys })\n return callback(surveys)\n },\n })\n } catch (e) {\n this._isFetchingSurveys = false\n throw e\n }\n } else {\n return callback(existingSurveys)\n }\n }\n\n private isSurveyFeatureFlagEnabled(flagKey: string | null) {\n if (!flagKey) {\n return true\n }\n return this.instance.featureFlags.isFeatureEnabled(flagKey)\n }\n\n getActiveMatchingSurveys(callback: SurveyCallback, forceReload = false) {\n this.getSurveys((surveys) => {\n const activeSurveys = surveys.filter((survey) => {\n return !!(survey.start_date && !survey.end_date)\n })\n\n const conditionMatchedSurveys = activeSurveys.filter((survey) => {\n if (!survey.conditions) {\n return true\n }\n\n const urlCheck = doesSurveyUrlMatch(survey)\n const selectorCheck = survey.conditions?.selector\n ? document?.querySelector(survey.conditions.selector)\n : true\n const deviceTypeCheck = doesSurveyDeviceTypesMatch(survey)\n return urlCheck && selectorCheck && deviceTypeCheck\n })\n\n // get all the surveys that have been activated so far with user actions.\n const activatedSurveys: string[] | undefined = this._surveyEventReceiver?.getSurveys()\n const targetingMatchedSurveys = conditionMatchedSurveys.filter((survey) => {\n if (\n !survey.linked_flag_key &&\n !survey.targeting_flag_key &&\n !survey.internal_targeting_flag_key &&\n !survey.feature_flag_keys?.length\n ) {\n return true\n }\n const linkedFlagCheck = this.isSurveyFeatureFlagEnabled(survey.linked_flag_key)\n const targetingFlagCheck = this.isSurveyFeatureFlagEnabled(survey.targeting_flag_key)\n\n const hasEvents = (survey.conditions?.events?.values?.length ?? 0) > 0\n const hasActions = (survey.conditions?.actions?.values?.length ?? 0) > 0\n\n const eventBasedTargetingFlagCheck =\n hasEvents || hasActions ? activatedSurveys?.includes(survey.id) : true\n\n const overrideInternalTargetingFlagCheck = this._canActivateRepeatedly(survey)\n const internalTargetingFlagCheck =\n overrideInternalTargetingFlagCheck ||\n this.isSurveyFeatureFlagEnabled(survey.internal_targeting_flag_key)\n\n const flagsCheck = this.checkFlags(survey)\n return (\n linkedFlagCheck &&\n targetingFlagCheck &&\n internalTargetingFlagCheck &&\n eventBasedTargetingFlagCheck &&\n flagsCheck\n )\n })\n\n return callback(targetingMatchedSurveys)\n }, forceReload)\n }\n\n checkFlags(survey: Survey): boolean {\n if (!survey.feature_flag_keys?.length) {\n return true\n }\n\n return survey.feature_flag_keys.every(({ key, value }) => {\n if (!key || !value) {\n return true\n }\n return this.instance.featureFlags.isFeatureEnabled(value)\n })\n }\n\n // this method is lazily loaded onto the window to avoid loading preact and other dependencies if surveys is not enabled\n private _canActivateRepeatedly(survey: Survey) {\n if (isNullish(assignableWindow.__PosthogExtensions__?.canActivateRepeatedly)) {\n logger.warn('init was not called')\n return false // TODO does it make sense to have a default here?\n }\n return assignableWindow.__PosthogExtensions__.canActivateRepeatedly(survey)\n }\n\n canRenderSurvey(surveyId: string) {\n if (isNullish(this._surveyManager)) {\n logger.warn('init was not called')\n return\n }\n this.getSurveys((surveys) => {\n const survey = surveys.filter((x) => x.id === surveyId)[0]\n this._surveyManager.canRenderSurvey(survey)\n })\n }\n\n renderSurvey(surveyId: string, selector: string) {\n if (isNullish(this._surveyManager)) {\n logger.warn('init was not called')\n return\n }\n this.getSurveys((surveys) => {\n const survey = surveys.filter((x) => x.id === surveyId)[0]\n this._surveyManager.renderSurvey(survey, document?.querySelector(selector))\n })\n }\n}\n","import { CAPTURE_RATE_LIMIT } from './constants'\nimport type { PostHog } from './posthog-core'\nimport { RequestResponse } from './types'\nimport { createLogger } from './utils/logger'\n\nconst logger = createLogger('[RateLimiter]')\n\nconst ONE_MINUTE_IN_MILLISECONDS = 60 * 1000\nconst RATE_LIMIT_EVENT = '$$client_ingestion_warning'\n\ninterface CaptureResponse {\n quota_limited?: string[]\n}\n\nexport class RateLimiter {\n instance: PostHog\n serverLimits: Record<string, number> = {}\n\n captureEventsPerSecond: number\n captureEventsBurstLimit: number\n lastEventRateLimited = false\n\n constructor(instance: PostHog) {\n this.instance = instance\n\n this.captureEventsPerSecond = instance.config.rate_limiting?.events_per_second || 10\n this.captureEventsBurstLimit = Math.max(\n instance.config.rate_limiting?.events_burst_limit || this.captureEventsPerSecond * 10,\n this.captureEventsPerSecond\n )\n\n this.lastEventRateLimited = this.clientRateLimitContext(true).isRateLimited\n }\n\n public clientRateLimitContext(checkOnly = false): {\n isRateLimited: boolean\n remainingTokens: number\n } {\n // This is primarily to prevent runaway loops from flooding capture with millions of events for a single user.\n // It's as much for our protection as theirs.\n const now = new Date().getTime()\n const bucket = this.instance.persistence?.get_property(CAPTURE_RATE_LIMIT) ?? {\n tokens: this.captureEventsBurstLimit,\n last: now,\n }\n\n bucket.tokens += ((now - bucket.last) / 1000) * this.captureEventsPerSecond\n bucket.last = now\n\n if (bucket.tokens > this.captureEventsBurstLimit) {\n bucket.tokens = this.captureEventsBurstLimit\n }\n\n const isRateLimited = bucket.tokens < 1\n\n if (!isRateLimited && !checkOnly) {\n bucket.tokens = Math.max(0, bucket.tokens - 1)\n }\n\n if (isRateLimited && !this.lastEventRateLimited && !checkOnly) {\n this.instance.capture(\n RATE_LIMIT_EVENT,\n {\n $$client_ingestion_warning_message: `posthog-js client rate limited. Config is set to ${this.captureEventsPerSecond} events per second and ${this.captureEventsBurstLimit} events burst limit.`,\n },\n {\n skip_client_rate_limiting: true,\n }\n )\n }\n\n this.lastEventRateLimited = isRateLimited\n this.instance.persistence?.set_property(CAPTURE_RATE_LIMIT, bucket)\n\n return {\n isRateLimited,\n remainingTokens: bucket.tokens,\n }\n }\n\n public isServerRateLimited(batchKey: string | undefined): boolean {\n const retryAfter = this.serverLimits[batchKey || 'events'] || false\n\n if (retryAfter === false) {\n return false\n }\n return new Date().getTime() < retryAfter\n }\n\n public checkForLimiting = (httpResponse: RequestResponse): void => {\n const text = httpResponse.text\n\n if (!text || !text.length) {\n return\n }\n\n try {\n const response: CaptureResponse = JSON.parse(text)\n const quotaLimitedProducts = response.quota_limited || []\n quotaLimitedProducts.forEach((batchKey) => {\n logger.info(`${batchKey || 'events'} is quota limited.`)\n this.serverLimits[batchKey] = new Date().getTime() + ONE_MINUTE_IN_MILLISECONDS\n })\n } catch (e: any) {\n logger.warn(`could not rate limit - continuing. Error: \"${e?.message}\"`, { text })\n return\n }\n }\n}\n","import { PostHog } from './posthog-core'\nimport { RemoteConfig } from './types'\n\nimport { createLogger } from './utils/logger'\nimport { assignableWindow } from './utils/globals'\n\nconst logger = createLogger('[RemoteConfig]')\n\nexport class RemoteConfigLoader {\n constructor(private readonly instance: PostHog) {}\n\n get remoteConfig(): RemoteConfig | undefined {\n return assignableWindow._POSTHOG_REMOTE_CONFIG?.[this.instance.config.token]?.config\n }\n\n private _loadRemoteConfigJs(cb: (config?: RemoteConfig) => void): void {\n if (assignableWindow.__PosthogExtensions__?.loadExternalDependency) {\n assignableWindow.__PosthogExtensions__?.loadExternalDependency?.(this.instance, 'remote-config', () => {\n return cb(this.remoteConfig)\n })\n } else {\n logger.error('PostHog Extensions not found. Cannot load remote config.')\n cb()\n }\n }\n\n private _loadRemoteConfigJSON(cb: (config?: RemoteConfig) => void): void {\n this.instance._send_request({\n method: 'GET',\n url: this.instance.requestRouter.endpointFor('assets', `/array/${this.instance.config.token}/config`),\n callback: (response) => {\n cb(response.json as RemoteConfig | undefined)\n },\n })\n }\n\n load(): void {\n try {\n // Attempt 1 - use the pre-loaded config if it came as part of the token-specific array.js\n if (this.remoteConfig) {\n logger.info('Using preloaded remote config', this.remoteConfig)\n this.onRemoteConfig(this.remoteConfig)\n return\n }\n\n if (this.instance.config.advanced_disable_decide) {\n // This setting is essentially saying \"dont call external APIs\" hence we respect it here\n logger.warn('Remote config is disabled. Falling back to local config.')\n return\n }\n\n // Attempt 2 - if we have the external deps loader then lets load the script version of the config that includes site apps\n this._loadRemoteConfigJs((config) => {\n if (!config) {\n logger.info('No config found after loading remote JS config. Falling back to JSON.')\n // Attempt 3 Load the config json instead of the script - we won't get site apps etc. but we will get the config\n this._loadRemoteConfigJSON((config) => {\n this.onRemoteConfig(config)\n })\n return\n }\n\n this.onRemoteConfig(config)\n })\n } catch (error) {\n logger.error('Error loading remote config', error)\n }\n }\n\n private onRemoteConfig(config?: RemoteConfig): void {\n // NOTE: Once this is rolled out we will remove the \"decide\" related code above. Until then the code duplication is fine.\n if (!config) {\n logger.error('Failed to fetch remote config from PostHog.')\n return\n }\n\n if (!this.instance.config.__preview_remote_config) {\n logger.info('__preview_remote_config is disabled. Logging config instead', config)\n return\n }\n\n this.instance._onRemoteConfig(config)\n\n // We only need to reload if we haven't already loaded the flags or if the request is in flight\n if (config.hasFeatureFlags !== false) {\n // If the config has feature flags, we need to call decide to get the feature flags\n // This completely separates it from the config logic which is good in terms of separation of concerns\n this.instance.featureFlags.ensureFlagsLoaded()\n }\n }\n}\n","import { each, find } from './utils'\nimport Config from './config'\nimport { Compression, RequestWithOptions, RequestResponse } from './types'\nimport { formDataToQuery } from './utils/request-utils'\n\nimport { logger } from './utils/logger'\nimport { AbortController, fetch, navigator, XMLHttpRequest } from './utils/globals'\nimport { gzipSync, strToU8 } from 'fflate'\n\nimport { _base64Encode } from './utils/encode-utils'\n\n// eslint-disable-next-line compat/compat\nexport const SUPPORTS_REQUEST = !!XMLHttpRequest || !!fetch\n\nconst CONTENT_TYPE_PLAIN = 'text/plain'\nconst CONTENT_TYPE_JSON = 'application/json'\nconst CONTENT_TYPE_FORM = 'application/x-www-form-urlencoded'\nconst SIXTY_FOUR_KILOBYTES = 64 * 1024\n/*\n fetch will fail if we request keepalive with a body greater than 64kb\n sets the threshold lower than that so that\n any overhead doesn't push over the threshold after checking here\n*/\nconst KEEP_ALIVE_THRESHOLD = SIXTY_FOUR_KILOBYTES * 0.8\ntype EncodedBody = {\n contentType: string\n body: string | BlobPart\n estimatedSize: number\n}\n\nexport const extendURLParams = (url: string, params: Record<string, any>): string => {\n const [baseUrl, search] = url.split('?')\n const newParams = { ...params }\n\n search?.split('&').forEach((pair) => {\n const [key] = pair.split('=')\n delete newParams[key]\n })\n\n let newSearch = formDataToQuery(newParams)\n newSearch = newSearch ? (search ? search + '&' : '') + newSearch : search\n\n return `${baseUrl}?${newSearch}`\n}\n\nexport const jsonStringify = (data: any, space?: string | number): string => {\n // With plain JSON.stringify, we get an exception when a property is a BigInt. This has caused problems for some users,\n // see https://github.com/PostHog/posthog-js/issues/1440\n // To work around this, we convert BigInts to strings before stringifying the data. This is not ideal, as we lose\n // information that this was originally a number, but given ClickHouse doesn't support BigInts, the customer\n // would not be able to operate on these numerically anyway.\n return JSON.stringify(data, (_, value) => (typeof value === 'bigint' ? value.toString() : value), space)\n}\n\nconst encodeToDataString = (data: string | Record<string, any>): string => {\n return 'data=' + encodeURIComponent(typeof data === 'string' ? data : jsonStringify(data))\n}\n\nconst encodePostData = ({ data, compression }: RequestWithOptions): EncodedBody | undefined => {\n if (!data) {\n return\n }\n\n if (compression === Compression.GZipJS) {\n const gzipData = gzipSync(strToU8(jsonStringify(data)), { mtime: 0 })\n const blob = new Blob([gzipData], { type: CONTENT_TYPE_PLAIN })\n return {\n contentType: CONTENT_TYPE_PLAIN,\n body: blob,\n estimatedSize: blob.size,\n }\n }\n\n if (compression === Compression.Base64) {\n const b64data = _base64Encode(jsonStringify(data))\n const encodedBody = encodeToDataString(b64data)\n\n return {\n contentType: CONTENT_TYPE_FORM,\n body: encodedBody,\n estimatedSize: new Blob([encodedBody]).size,\n }\n }\n\n const jsonBody = jsonStringify(data)\n return {\n contentType: CONTENT_TYPE_JSON,\n body: jsonBody,\n estimatedSize: new Blob([jsonBody]).size,\n }\n}\n\nconst xhr = (options: RequestWithOptions) => {\n const req = new XMLHttpRequest!()\n req.open(options.method || 'GET', options.url, true)\n const { contentType, body } = encodePostData(options) ?? {}\n\n each(options.headers, function (headerValue, headerName) {\n req.setRequestHeader(headerName, headerValue)\n })\n\n if (contentType) {\n req.setRequestHeader('Content-Type', contentType)\n }\n\n if (options.timeout) {\n req.timeout = options.timeout\n }\n // send the ph_optout cookie\n // withCredentials cannot be modified until after calling .open on Android and Mobile Safari\n req.withCredentials = true\n req.onreadystatechange = () => {\n // XMLHttpRequest.DONE == 4, except in safari 4\n if (req.readyState === 4) {\n const response: RequestResponse = {\n statusCode: req.status,\n text: req.responseText,\n }\n if (req.status === 200) {\n try {\n response.json = JSON.parse(req.responseText)\n } catch {\n // logger.error(e)\n }\n }\n\n options.callback?.(response)\n }\n }\n req.send(body)\n}\n\nconst _fetch = (options: RequestWithOptions) => {\n const { contentType, body, estimatedSize } = encodePostData(options) ?? {}\n\n // eslint-disable-next-line compat/compat\n const headers = new Headers()\n each(options.headers, function (headerValue, headerName) {\n headers.append(headerName, headerValue)\n })\n\n if (contentType) {\n headers.append('Content-Type', contentType)\n }\n\n const url = options.url\n let aborter: { signal: any; timeout: ReturnType<typeof setTimeout> } | null = null\n\n if (AbortController) {\n const controller = new AbortController()\n aborter = {\n signal: controller.signal,\n timeout: setTimeout(() => controller.abort(), options.timeout),\n }\n }\n\n fetch!(url, {\n method: options?.method || 'GET',\n headers,\n // if body is greater than 64kb, then fetch with keepalive will error\n // see 8:10:5 at https://fetch.spec.whatwg.org/#http-network-or-cache-fetch,\n // but we do want to set keepalive sometimes as it can help with success\n // when e.g. a page is being closed\n // so let's get the best of both worlds and only set keepalive for POST requests\n // where the body is less than 64kb\n // NB this is fetch keepalive and not http keepalive\n keepalive: options.method === 'POST' && (estimatedSize || 0) < KEEP_ALIVE_THRESHOLD,\n body,\n signal: aborter?.signal,\n ...options.fetchOptions,\n })\n .then((response) => {\n return response.text().then((responseText) => {\n const res: RequestResponse = {\n statusCode: response.status,\n text: responseText,\n }\n\n if (response.status === 200) {\n try {\n res.json = JSON.parse(responseText)\n } catch (e) {\n logger.error(e)\n }\n }\n\n options.callback?.(res)\n })\n })\n .catch((error) => {\n logger.error(error)\n options.callback?.({ statusCode: 0, text: error })\n })\n .finally(() => (aborter ? clearTimeout(aborter.timeout) : null))\n\n return\n}\n\nconst _sendBeacon = (options: RequestWithOptions) => {\n // beacon documentation https://w3c.github.io/beacon/\n // beacons format the message and use the type property\n\n const url = extendURLParams(options.url, {\n beacon: '1',\n })\n\n try {\n const { contentType, body } = encodePostData(options) ?? {}\n // sendBeacon requires a blob so we convert it\n const sendBeaconBody = typeof body === 'string' ? new Blob([body], { type: contentType }) : body\n navigator!.sendBeacon!(url, sendBeaconBody)\n } catch {\n // send beacon is a best-effort, fire-and-forget mechanism on page unload,\n // we don't want to throw errors here\n }\n}\n\nconst AVAILABLE_TRANSPORTS: {\n transport: RequestWithOptions['transport']\n method: (options: RequestWithOptions) => void\n}[] = []\n\n// We add the transports in order of preference\nif (fetch) {\n AVAILABLE_TRANSPORTS.push({\n transport: 'fetch',\n method: _fetch,\n })\n}\n\nif (XMLHttpRequest) {\n AVAILABLE_TRANSPORTS.push({\n transport: 'XHR',\n method: xhr,\n })\n}\n\nif (navigator?.sendBeacon) {\n AVAILABLE_TRANSPORTS.push({\n transport: 'sendBeacon',\n method: _sendBeacon,\n })\n}\n\n// This is the entrypoint. It takes care of sanitizing the options and then calls the appropriate request method.\nexport const request = (_options: RequestWithOptions) => {\n // Clone the options so we don't modify the original object\n const options = { ..._options }\n options.timeout = options.timeout || 60000\n\n options.url = extendURLParams(options.url, {\n _: new Date().getTime().toString(),\n ver: Config.LIB_VERSION,\n compression: options.compression,\n })\n\n const transport = options.transport ?? 'fetch'\n\n const transportMethod =\n find(AVAILABLE_TRANSPORTS, (t) => t.transport === transport)?.method ?? AVAILABLE_TRANSPORTS[0].method\n\n if (!transportMethod) {\n throw new Error('No available transport method')\n }\n\n transportMethod(options)\n}\n","import { isNull } from './type-utils'\n\nexport function _base64Encode(data: null): null\nexport function _base64Encode(data: undefined): undefined\nexport function _base64Encode(data: string): string\nexport function _base64Encode(data: string | null | undefined): string | null | undefined {\n const b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n let o1,\n o2,\n o3,\n h1,\n h2,\n h3,\n h4,\n bits,\n i = 0,\n ac = 0,\n enc = ''\n const tmp_arr: string[] = []\n\n if (!data) {\n return data\n }\n\n data = utf8Encode(data)\n\n do {\n // pack three octets into four hexets\n o1 = data.charCodeAt(i++)\n o2 = data.charCodeAt(i++)\n o3 = data.charCodeAt(i++)\n\n bits = (o1 << 16) | (o2 << 8) | o3\n\n h1 = (bits >> 18) & 0x3f\n h2 = (bits >> 12) & 0x3f\n h3 = (bits >> 6) & 0x3f\n h4 = bits & 0x3f\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4)\n } while (i < data.length)\n\n enc = tmp_arr.join('')\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '=='\n break\n case 2:\n enc = enc.slice(0, -1) + '='\n break\n }\n\n return enc\n}\n\nexport const utf8Encode = function (string: string): string {\n string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n')\n\n let utftext = '',\n start,\n end\n let stringl = 0,\n n\n\n start = end = 0\n stringl = string.length\n\n for (n = 0; n < stringl; n++) {\n const c1 = string.charCodeAt(n)\n let enc = null\n\n if (c1 < 128) {\n end++\n } else if (c1 > 127 && c1 < 2048) {\n enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128)\n } else {\n enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128)\n }\n if (!isNull(enc)) {\n if (end > start) {\n utftext += string.substring(start, end)\n }\n utftext += enc\n start = end = n + 1\n }\n }\n\n if (end > start) {\n utftext += string.substring(start, string.length)\n }\n\n return utftext\n}\n","import { PostHog } from '../posthog-core'\n\n/**\n * The request router helps simplify the logic to determine which endpoints should be called for which things\n * The basic idea is that for a given region (US or EU), we have a set of endpoints that we should call depending\n * on the type of request (events, replays, decide, etc.) and handle overrides that may come from configs or the decide endpoint\n */\n\nexport enum RequestRouterRegion {\n US = 'us',\n EU = 'eu',\n CUSTOM = 'custom',\n}\n\nexport type RequestRouterTarget = 'api' | 'ui' | 'assets'\n\nconst ingestionDomain = 'i.posthog.com'\n\nexport class RequestRouter {\n instance: PostHog\n private _regionCache: Record<string, RequestRouterRegion> = {}\n\n constructor(instance: PostHog) {\n this.instance = instance\n }\n\n get apiHost(): string {\n const host = this.instance.config.api_host.trim().replace(/\\/$/, '')\n if (host === 'https://app.posthog.com') {\n return 'https://us.i.posthog.com'\n }\n return host\n }\n get uiHost(): string | undefined {\n let host = this.instance.config.ui_host?.replace(/\\/$/, '')\n\n if (!host) {\n // No ui_host set, get it from the api_host. But api_host differs\n // from the actual UI host, so replace the ingestion subdomain with just posthog.com\n host = this.apiHost.replace(`.${ingestionDomain}`, '.posthog.com')\n }\n\n if (host === 'https://app.posthog.com') {\n return 'https://us.posthog.com'\n }\n\n return host\n }\n\n get region(): RequestRouterRegion {\n // We don't need to compute this every time so we cache the result\n if (!this._regionCache[this.apiHost]) {\n if (/https:\\/\\/(app|us|us-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)) {\n this._regionCache[this.apiHost] = RequestRouterRegion.US\n } else if (/https:\\/\\/(eu|eu-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost)) {\n this._regionCache[this.apiHost] = RequestRouterRegion.EU\n } else {\n this._regionCache[this.apiHost] = RequestRouterRegion.CUSTOM\n }\n }\n return this._regionCache[this.apiHost]\n }\n\n endpointFor(target: RequestRouterTarget, path: string = ''): string {\n if (path) {\n path = path[0] === '/' ? path : `/${path}`\n }\n\n if (target === 'ui') {\n return this.uiHost + path\n }\n\n if (this.region === RequestRouterRegion.CUSTOM) {\n return this.apiHost + path\n }\n\n const suffix = ingestionDomain + path\n\n switch (target) {\n case 'assets':\n return `https://${this.region}-assets.${suffix}`\n case 'api':\n return `https://${this.region}.${suffix}`\n }\n }\n}\n","import { QueuedRequestWithOptions, RequestQueueConfig } from './types'\nimport { each } from './utils'\n\nimport { isArray, isUndefined } from './utils/type-utils'\nimport { clampToRange } from './utils/number-utils'\n\nexport const DEFAULT_FLUSH_INTERVAL_MS = 3000\n\nexport class RequestQueue {\n // We start in a paused state and only start flushing when enabled by the parent\n private isPaused: boolean = true\n private queue: QueuedRequestWithOptions[] = []\n private flushTimeout?: ReturnType<typeof setTimeout>\n private flushTimeoutMs: number\n private sendRequest: (req: QueuedRequestWithOptions) => void\n\n constructor(sendRequest: (req: QueuedRequestWithOptions) => void, config?: RequestQueueConfig) {\n this.flushTimeoutMs = clampToRange(\n config?.flush_interval_ms || DEFAULT_FLUSH_INTERVAL_MS,\n 250,\n 5000,\n 'flush interval',\n DEFAULT_FLUSH_INTERVAL_MS\n )\n this.sendRequest = sendRequest\n }\n\n enqueue(req: QueuedRequestWithOptions): void {\n this.queue.push(req)\n\n if (!this.flushTimeout) {\n this.setFlushTimeout()\n }\n }\n\n unload(): void {\n this.clearFlushTimeout()\n const requests = this.queue.length > 0 ? this.formatQueue() : {}\n const requestValues = Object.values(requests)\n\n // Always force events to be sent before recordings, as events are more important, and recordings are bigger and thus less likely to arrive\n const sortedRequests = [\n ...requestValues.filter((r) => r.url.indexOf('/e') === 0),\n ...requestValues.filter((r) => r.url.indexOf('/e') !== 0),\n ]\n sortedRequests.map((req) => {\n this.sendRequest({ ...req, transport: 'sendBeacon' })\n })\n }\n\n enable(): void {\n this.isPaused = false\n this.setFlushTimeout()\n }\n\n private setFlushTimeout(): void {\n if (this.isPaused) {\n return\n }\n this.flushTimeout = setTimeout(() => {\n this.clearFlushTimeout()\n if (this.queue.length > 0) {\n const requests = this.formatQueue()\n for (const key in requests) {\n const req = requests[key]\n const now = new Date().getTime()\n\n if (req.data && isArray(req.data)) {\n each(req.data, (data) => {\n data['offset'] = Math.abs(data['timestamp'] - now)\n delete data['timestamp']\n })\n }\n this.sendRequest(req)\n }\n }\n }, this.flushTimeoutMs)\n }\n\n private clearFlushTimeout(): void {\n clearTimeout(this.flushTimeout)\n this.flushTimeout = undefined\n }\n\n private formatQueue(): Record<string, QueuedRequestWithOptions> {\n const requests: Record<string, QueuedRequestWithOptions> = {}\n each(this.queue, (request: QueuedRequestWithOptions) => {\n const req = request\n const key = (req ? req.batchKey : null) || req.url\n if (isUndefined(requests[key])) {\n // TODO: What about this -it seems to batch data into an array - do we always want that?\n requests[key] = { ...req, data: [] }\n }\n\n requests[key].data?.push(req.data)\n })\n\n this.queue = []\n return requests\n }\n}\n","import { RetriableRequestWithOptions } from './types'\n\nimport { isNumber, isUndefined } from './utils/type-utils'\nimport { logger } from './utils/logger'\nimport { window } from './utils/globals'\nimport { PostHog } from './posthog-core'\nimport { extendURLParams } from './request'\nimport { addEventListener } from './utils'\n\nconst thirtyMinutes = 30 * 60 * 1000\n\n/**\n * Generates a jitter-ed exponential backoff delay in milliseconds\n *\n * The base value is 6 seconds, which is doubled with each retry\n * up to the maximum of 30 minutes\n *\n * Each value then has +/- 50% jitter\n *\n * Giving a range of 6 seconds up to 45 minutes\n */\nexport function pickNextRetryDelay(retriesPerformedSoFar: number): number {\n const rawBackoffTime = 3000 * 2 ** retriesPerformedSoFar\n const minBackoff = rawBackoffTime / 2\n const cappedBackoffTime = Math.min(thirtyMinutes, rawBackoffTime)\n const jitterFraction = Math.random() - 0.5 // A random number between -0.5 and 0.5\n const jitter = jitterFraction * (cappedBackoffTime - minBackoff)\n return Math.ceil(cappedBackoffTime + jitter)\n}\n\ninterface RetryQueueElement {\n retryAt: number\n requestOptions: RetriableRequestWithOptions\n}\n\nexport class RetryQueue {\n private isPolling: boolean = false // flag to continue to recursively poll or not\n private poller: number | undefined // to become interval for reference to clear later\n private pollIntervalMs: number = 3000\n private queue: RetryQueueElement[] = []\n private areWeOnline: boolean\n\n constructor(private instance: PostHog) {\n this.queue = []\n this.areWeOnline = true\n\n if (!isUndefined(window) && 'onLine' in window.navigator) {\n this.areWeOnline = window.navigator.onLine\n\n addEventListener(window, 'online', () => {\n this.areWeOnline = true\n this.flush()\n })\n\n addEventListener(window, 'offline', () => {\n this.areWeOnline = false\n })\n }\n }\n\n retriableRequest({ retriesPerformedSoFar, ...options }: RetriableRequestWithOptions): void {\n if (isNumber(retriesPerformedSoFar) && retriesPerformedSoFar > 0) {\n options.url = extendURLParams(options.url, { retry_count: retriesPerformedSoFar })\n }\n\n this.instance._send_request({\n ...options,\n callback: (response) => {\n if (response.statusCode !== 200 && (response.statusCode < 400 || response.statusCode >= 500)) {\n if ((retriesPerformedSoFar ?? 0) < 10) {\n this.enqueue({\n retriesPerformedSoFar,\n ...options,\n })\n return\n }\n }\n\n options.callback?.(response)\n },\n })\n }\n\n private enqueue(requestOptions: RetriableRequestWithOptions): void {\n const retriesPerformedSoFar = requestOptions.retriesPerformedSoFar || 0\n requestOptions.retriesPerformedSoFar = retriesPerformedSoFar + 1\n\n const msToNextRetry = pickNextRetryDelay(retriesPerformedSoFar)\n const retryAt = Date.now() + msToNextRetry\n\n this.queue.push({ retryAt, requestOptions })\n\n let logMessage = `Enqueued failed request for retry in ${msToNextRetry}`\n if (!navigator.onLine) {\n logMessage += ' (Browser is offline)'\n }\n logger.warn(logMessage)\n\n if (!this.isPolling) {\n this.isPolling = true\n this.poll()\n }\n }\n\n private poll(): void {\n this.poller && clearTimeout(this.poller)\n this.poller = setTimeout(() => {\n if (this.areWeOnline && this.queue.length > 0) {\n this.flush()\n }\n this.poll()\n }, this.pollIntervalMs) as any as number\n }\n\n private flush(): void {\n const now = Date.now()\n const notToFlush: RetryQueueElement[] = []\n const toFlush = this.queue.filter((item) => {\n if (item.retryAt < now) {\n return true\n }\n notToFlush.push(item)\n return false\n })\n\n this.queue = notToFlush\n\n if (toFlush.length > 0) {\n for (const { requestOptions } of toFlush) {\n this.retriableRequest(requestOptions)\n }\n }\n }\n\n unload(): void {\n if (this.poller) {\n clearTimeout(this.poller)\n this.poller = undefined\n }\n\n for (const { requestOptions } of this.queue) {\n try {\n // we've had send beacon in place for at least 2 years\n // eslint-disable-next-line compat/compat\n this.instance._send_request({\n ...requestOptions,\n transport: 'sendBeacon',\n })\n } catch (e) {\n // Note sendBeacon automatically retries, and after the first retry it will lose reference to contextual `this`.\n // This means in some cases `this.getConfig` will be undefined.\n logger.error(e)\n }\n }\n this.queue = []\n }\n}\n","import { window } from './utils/globals'\nimport { PostHog } from './posthog-core'\nimport { isArray } from './utils/type-utils'\nimport { addEventListener } from './utils'\n\nexport interface ScrollContext {\n // scroll is how far down the page the user has scrolled,\n // content is how far down the page the user can view content\n // (e.g. if the page is 1000 tall, but the user's screen is only 500 tall,\n // and they don't scroll at all, then scroll is 0 and content is 500)\n maxScrollHeight?: number\n maxScrollY?: number\n lastScrollY?: number\n maxContentHeight?: number\n maxContentY?: number\n lastContentY?: number\n}\n\n// This class is responsible for tracking scroll events and maintaining the scroll context\nexport class ScrollManager {\n private context: ScrollContext | undefined\n\n constructor(private instance: PostHog) {}\n\n getContext(): ScrollContext | undefined {\n return this.context\n }\n\n resetContext(): ScrollContext | undefined {\n const ctx = this.context\n\n // update the scroll properties for the new page, but wait until the next tick\n // of the event loop\n setTimeout(this._updateScrollData, 0)\n\n return ctx\n }\n\n private _updateScrollData = () => {\n if (!this.context) {\n this.context = {}\n }\n\n const el = this.scrollElement()\n\n const scrollY = this.scrollY()\n const scrollHeight = el ? Math.max(0, el.scrollHeight - el.clientHeight) : 0\n const contentY = scrollY + (el?.clientHeight || 0)\n const contentHeight = el?.scrollHeight || 0\n\n this.context.lastScrollY = Math.ceil(scrollY)\n this.context.maxScrollY = Math.max(scrollY, this.context.maxScrollY ?? 0)\n this.context.maxScrollHeight = Math.max(scrollHeight, this.context.maxScrollHeight ?? 0)\n\n this.context.lastContentY = contentY\n this.context.maxContentY = Math.max(contentY, this.context.maxContentY ?? 0)\n this.context.maxContentHeight = Math.max(contentHeight, this.context.maxContentHeight ?? 0)\n }\n\n // `capture: true` is required to get scroll events for other scrollable elements\n // on the page, not just the window\n // see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#usecapture\n startMeasuringScrollPosition() {\n addEventListener(window, 'scroll', this._updateScrollData, { capture: true })\n addEventListener(window, 'scrollend', this._updateScrollData, { capture: true })\n addEventListener(window, 'resize', this._updateScrollData)\n }\n\n public scrollElement(): Element | undefined {\n if (this.instance.config.scroll_root_selector) {\n const selectors = isArray(this.instance.config.scroll_root_selector)\n ? this.instance.config.scroll_root_selector\n : [this.instance.config.scroll_root_selector]\n for (const selector of selectors) {\n const element = window?.document.querySelector(selector)\n if (element) {\n return element\n }\n }\n return undefined\n } else {\n return window?.document.documentElement\n }\n }\n\n public scrollY(): number {\n if (this.instance.config.scroll_root_selector) {\n const element = this.scrollElement()\n return (element && element.scrollTop) || 0\n } else {\n return window ? window.scrollY || window.pageYOffset || window.document.documentElement.scrollTop || 0 : 0\n }\n }\n\n public scrollX(): number {\n if (this.instance.config.scroll_root_selector) {\n const element = this.scrollElement()\n return (element && element.scrollLeft) || 0\n } else {\n return window ? window.scrollX || window.pageXOffset || window.document.documentElement.scrollLeft || 0 : 0\n }\n }\n}\n","/* Client-side session parameters. These are primarily used by web analytics,\n * which relies on these for session analytics without the plugin server being\n * available for the person level set-once properties. Obviously not consistent\n * between client-side events and server-side events but this is acceptable\n * as web analytics only uses client-side.\n *\n * These have the same lifespan as a session_id\n */\nimport { Info } from './utils/event-utils'\nimport type { SessionIdManager } from './sessionid'\nimport type { PostHogPersistence } from './posthog-persistence'\nimport { CLIENT_SESSION_PROPS } from './constants'\nimport type { PostHog } from './posthog-core'\n\ninterface LegacySessionSourceProps {\n initialPathName: string\n referringDomain: string // Is actually referring host, but named referring domain for internal consistency. Should contain a port if there is one.\n utm_medium?: string\n utm_source?: string\n utm_campaign?: string\n utm_content?: string\n utm_term?: string\n}\n\ninterface CurrentSessionSourceProps {\n r: string // Referring host\n u: string | undefined // full URL\n}\n\ninterface StoredSessionSourceProps {\n sessionId: string\n props: LegacySessionSourceProps | CurrentSessionSourceProps\n}\n\nconst generateSessionSourceParams = (posthog?: PostHog): LegacySessionSourceProps | CurrentSessionSourceProps => {\n return Info.personInfo({\n maskPersonalDataProperties: posthog?.config.mask_personal_data_properties,\n customPersonalDataProperties: posthog?.config.custom_personal_data_properties,\n })\n}\n\nexport class SessionPropsManager {\n private readonly instance: PostHog\n private readonly _sessionIdManager: SessionIdManager\n private readonly _persistence: PostHogPersistence\n private readonly _sessionSourceParamGenerator: (\n instance?: PostHog\n ) => LegacySessionSourceProps | CurrentSessionSourceProps\n\n constructor(\n instance: PostHog,\n sessionIdManager: SessionIdManager,\n persistence: PostHogPersistence,\n sessionSourceParamGenerator?: (instance?: PostHog) => LegacySessionSourceProps | CurrentSessionSourceProps\n ) {\n this.instance = instance\n this._sessionIdManager = sessionIdManager\n this._persistence = persistence\n this._sessionSourceParamGenerator = sessionSourceParamGenerator || generateSessionSourceParams\n\n this._sessionIdManager.onSessionId(this._onSessionIdCallback)\n }\n\n _getStored(): StoredSessionSourceProps | undefined {\n return this._persistence.props[CLIENT_SESSION_PROPS]\n }\n\n _onSessionIdCallback = (sessionId: string) => {\n const stored = this._getStored()\n if (stored && stored.sessionId === sessionId) {\n return\n }\n\n const newProps: StoredSessionSourceProps = {\n sessionId,\n props: this._sessionSourceParamGenerator(this.instance),\n }\n this._persistence.register({ [CLIENT_SESSION_PROPS]: newProps })\n }\n\n getSetOnceInitialSessionPropsProps() {\n const p = this._getStored()?.props\n if (!p) {\n return {}\n }\n if ('r' in p) {\n return Info.personPropsFromInfo(p)\n } else {\n return {\n $referring_domain: p.referringDomain,\n $pathname: p.initialPathName,\n utm_source: p.utm_source,\n utm_campaign: p.utm_campaign,\n utm_medium: p.utm_medium,\n utm_content: p.utm_content,\n utm_term: p.utm_term,\n }\n }\n }\n}\n","import { PostHogPersistence } from './posthog-persistence'\nimport { SESSION_ID } from './constants'\nimport { sessionStore } from './storage'\nimport { PostHogConfig, SessionIdChangedCallback } from './types'\nimport { uuid7ToTimestampMs, uuidv7 } from './uuidv7'\nimport { window } from './utils/globals'\n\nimport { isArray, isNumber, isUndefined } from './utils/type-utils'\nimport { createLogger } from './utils/logger'\n\nimport { clampToRange } from './utils/number-utils'\nimport { PostHog } from './posthog-core'\nimport { addEventListener } from './utils'\n\nconst logger = createLogger('[SessionId]')\n\nexport const DEFAULT_SESSION_IDLE_TIMEOUT_SECONDS = 30 * 60 // 30 minutes\nexport const MAX_SESSION_IDLE_TIMEOUT_SECONDS = 10 * 60 * 60 // 10 hours\nconst MIN_SESSION_IDLE_TIMEOUT_SECONDS = 60 // 1 minute\nconst SESSION_LENGTH_LIMIT_MILLISECONDS = 24 * 3600 * 1000 // 24 hours\n\nexport class SessionIdManager {\n private readonly _sessionIdGenerator: () => string\n private readonly _windowIdGenerator: () => string\n private config: Partial<PostHogConfig>\n private persistence: PostHogPersistence\n private _windowId: string | null | undefined\n private _sessionId: string | null | undefined\n private readonly _window_id_storage_key: string\n private readonly _primary_window_exists_storage_key: string\n private _sessionStartTimestamp: number | null\n\n private _sessionActivityTimestamp: number | null\n private _sessionIdChangedHandlers: SessionIdChangedCallback[] = []\n private readonly _sessionTimeoutMs: number\n\n // we track activity so we can end the session proactively when it has passed the idle timeout\n private _enforceIdleTimeout: ReturnType<typeof setTimeout> | undefined\n\n constructor(instance: PostHog, sessionIdGenerator?: () => string, windowIdGenerator?: () => string) {\n if (!instance.persistence) {\n throw new Error('SessionIdManager requires a PostHogPersistence instance')\n }\n if (instance.config.__preview_experimental_cookieless_mode) {\n throw new Error('SessionIdManager cannot be used with __preview_experimental_cookieless_mode')\n }\n\n this.config = instance.config\n this.persistence = instance.persistence\n this._windowId = undefined\n this._sessionId = undefined\n this._sessionStartTimestamp = null\n this._sessionActivityTimestamp = null\n this._sessionIdGenerator = sessionIdGenerator || uuidv7\n this._windowIdGenerator = windowIdGenerator || uuidv7\n\n const persistenceName = this.config['persistence_name'] || this.config['token']\n\n const desiredTimeout = this.config['session_idle_timeout_seconds'] || DEFAULT_SESSION_IDLE_TIMEOUT_SECONDS\n this._sessionTimeoutMs =\n clampToRange(\n desiredTimeout,\n MIN_SESSION_IDLE_TIMEOUT_SECONDS,\n MAX_SESSION_IDLE_TIMEOUT_SECONDS,\n 'session_idle_timeout_seconds',\n DEFAULT_SESSION_IDLE_TIMEOUT_SECONDS\n ) * 1000\n\n instance.register({ $configured_session_timeout_ms: this._sessionTimeoutMs })\n this.resetIdleTimer()\n\n this._window_id_storage_key = 'ph_' + persistenceName + '_window_id'\n this._primary_window_exists_storage_key = 'ph_' + persistenceName + '_primary_window_exists'\n\n // primary_window_exists is set when the DOM has been loaded and is cleared on unload\n // if it exists here it means there was no unload which suggests this window is opened as a tab duplication, window.open, etc.\n if (this._canUseSessionStorage()) {\n const lastWindowId = sessionStore.parse(this._window_id_storage_key)\n\n const primaryWindowExists = sessionStore.parse(this._primary_window_exists_storage_key)\n if (lastWindowId && !primaryWindowExists) {\n // Persist window from previous storage state\n this._windowId = lastWindowId\n } else {\n // Wipe any reference to previous window id\n sessionStore.remove(this._window_id_storage_key)\n }\n // Flag this session as having a primary window\n sessionStore.set(this._primary_window_exists_storage_key, true)\n }\n\n if (this.config.bootstrap?.sessionID) {\n try {\n const sessionStartTimestamp = uuid7ToTimestampMs(this.config.bootstrap.sessionID)\n this._setSessionId(this.config.bootstrap.sessionID, new Date().getTime(), sessionStartTimestamp)\n } catch (e) {\n logger.error('Invalid sessionID in bootstrap', e)\n }\n }\n\n this._listenToReloadWindow()\n }\n\n get sessionTimeoutMs(): number {\n return this._sessionTimeoutMs\n }\n\n onSessionId(callback: SessionIdChangedCallback): () => void {\n // KLUDGE: when running in tests the handlers array was always undefined\n // it's yucky but safe to set it here so that it's always definitely available\n if (isUndefined(this._sessionIdChangedHandlers)) {\n this._sessionIdChangedHandlers = []\n }\n\n this._sessionIdChangedHandlers.push(callback)\n if (this._sessionId) {\n callback(this._sessionId, this._windowId)\n }\n return () => {\n this._sessionIdChangedHandlers = this._sessionIdChangedHandlers.filter((h) => h !== callback)\n }\n }\n\n private _canUseSessionStorage(): boolean {\n // We only want to use sessionStorage if persistence is enabled and not memory storage\n return this.config.persistence !== 'memory' && !this.persistence.disabled && sessionStore.is_supported()\n }\n\n // Note: this tries to store the windowId in sessionStorage. SessionStorage is unique to the current window/tab,\n // and persists page loads/reloads. So it's uniquely suited for storing the windowId. This function also respects\n // when persistence is disabled (by user config) and when sessionStorage is not supported (it *should* be supported on all browsers),\n // and in that case, it falls back to memory (which sadly, won't persist page loads)\n private _setWindowId(windowId: string): void {\n if (windowId !== this._windowId) {\n this._windowId = windowId\n if (this._canUseSessionStorage()) {\n sessionStore.set(this._window_id_storage_key, windowId)\n }\n }\n }\n\n private _getWindowId(): string | null {\n if (this._windowId) {\n return this._windowId\n }\n if (this._canUseSessionStorage()) {\n return sessionStore.parse(this._window_id_storage_key)\n }\n // New window id will be generated\n return null\n }\n\n // Note: 'this.persistence.register' can be disabled in the config.\n // In that case, this works by storing sessionId and the timestamp in memory.\n private _setSessionId(\n sessionId: string | null,\n sessionActivityTimestamp: number | null,\n sessionStartTimestamp: number | null\n ): void {\n if (\n sessionId !== this._sessionId ||\n sessionActivityTimestamp !== this._sessionActivityTimestamp ||\n sessionStartTimestamp !== this._sessionStartTimestamp\n ) {\n this._sessionStartTimestamp = sessionStartTimestamp\n this._sessionActivityTimestamp = sessionActivityTimestamp\n this._sessionId = sessionId\n\n this.persistence.register({\n [SESSION_ID]: [sessionActivityTimestamp, sessionId, sessionStartTimestamp],\n })\n }\n }\n\n private _getSessionId(): [number, string, number] {\n if (this._sessionId && this._sessionActivityTimestamp && this._sessionStartTimestamp) {\n return [this._sessionActivityTimestamp, this._sessionId, this._sessionStartTimestamp]\n }\n const sessionIdInfo = this.persistence.props[SESSION_ID]\n\n if (isArray(sessionIdInfo) && sessionIdInfo.length === 2) {\n // Storage does not yet have a session start time. Add the last activity timestamp as the start time\n sessionIdInfo.push(sessionIdInfo[0])\n }\n\n return sessionIdInfo || [0, null, 0]\n }\n\n // Resets the session id by setting it to null. On the subsequent call to checkAndGetSessionAndWindowId,\n // new ids will be generated.\n resetSessionId(): void {\n this._setSessionId(null, null, null)\n }\n\n /*\n * Listens to window unloads and removes the primaryWindowExists key from sessionStorage.\n * Reloaded or fresh tabs created after a DOM unloads (reloading the same tab) WILL NOT have this primaryWindowExists flag in session storage.\n * Cloned sessions (new tab, tab duplication, window.open(), ...) WILL have this primaryWindowExists flag in their copied session storage.\n * We conditionally check the primaryWindowExists value in the constructor to decide if the window id in the last session storage should be carried over.\n */\n private _listenToReloadWindow(): void {\n addEventListener(\n window,\n 'beforeunload',\n () => {\n if (this._canUseSessionStorage()) {\n sessionStore.remove(this._primary_window_exists_storage_key)\n }\n },\n // Not making it passive to try and force the browser to handle this before the page is unloaded\n { capture: false }\n )\n }\n\n /*\n * This function returns the current sessionId and windowId. It should be used to\n * access these values over directly calling `._sessionId` or `._windowId`.\n * In addition to returning the sessionId and windowId, this function also manages cycling the\n * sessionId and windowId when appropriate by doing the following:\n *\n * 1. If the sessionId or windowId is not set, it will generate a new one and store it.\n * 2. If the readOnly param is set to false, it will:\n * a. Check if it has been > SESSION_CHANGE_THRESHOLD since the last call with this flag set.\n * If so, it will generate a new sessionId and store it.\n * b. Update the timestamp stored with the sessionId to ensure the current session is extended\n * for the appropriate amount of time.\n *\n * @param {boolean} readOnly (optional) Defaults to False. Should be set to True when the call to the function should not extend or cycle the session (e.g. being called for non-user generated events)\n * @param {Number} timestamp (optional) Defaults to the current time. The timestamp to be stored with the sessionId (used when determining if a new sessionId should be generated)\n */\n checkAndGetSessionAndWindowId(readOnly = false, _timestamp: number | null = null) {\n if (this.config.__preview_experimental_cookieless_mode) {\n throw new Error(\n 'checkAndGetSessionAndWindowId should not be called in __preview_experimental_cookieless_mode'\n )\n }\n const timestamp = _timestamp || new Date().getTime()\n\n // eslint-disable-next-line prefer-const\n let [lastActivityTimestamp, sessionId, startTimestamp] = this._getSessionId()\n let windowId = this._getWindowId()\n\n const sessionPastMaximumLength =\n isNumber(startTimestamp) &&\n startTimestamp > 0 &&\n Math.abs(timestamp - startTimestamp) > SESSION_LENGTH_LIMIT_MILLISECONDS\n\n let valuesChanged = false\n const noSessionId = !sessionId\n const activityTimeout = !readOnly && Math.abs(timestamp - lastActivityTimestamp) > this.sessionTimeoutMs\n if (noSessionId || activityTimeout || sessionPastMaximumLength) {\n sessionId = this._sessionIdGenerator()\n windowId = this._windowIdGenerator()\n logger.info('new session ID generated', {\n sessionId,\n windowId,\n changeReason: { noSessionId, activityTimeout, sessionPastMaximumLength },\n })\n startTimestamp = timestamp\n valuesChanged = true\n } else if (!windowId) {\n windowId = this._windowIdGenerator()\n valuesChanged = true\n }\n\n const newActivityTimestamp =\n lastActivityTimestamp === 0 || !readOnly || sessionPastMaximumLength ? timestamp : lastActivityTimestamp\n const sessionStartTimestamp = startTimestamp === 0 ? new Date().getTime() : startTimestamp\n\n this._setWindowId(windowId)\n this._setSessionId(sessionId, newActivityTimestamp, sessionStartTimestamp)\n\n if (!readOnly) {\n this.resetIdleTimer()\n }\n\n if (valuesChanged) {\n this._sessionIdChangedHandlers.forEach((handler) =>\n handler(\n sessionId,\n windowId,\n valuesChanged ? { noSessionId, activityTimeout, sessionPastMaximumLength } : undefined\n )\n )\n }\n\n return {\n sessionId,\n windowId,\n sessionStartTimestamp,\n changeReason: valuesChanged ? { noSessionId, activityTimeout, sessionPastMaximumLength } : undefined,\n lastActivityTimestamp: lastActivityTimestamp,\n }\n }\n\n private resetIdleTimer() {\n clearTimeout(this._enforceIdleTimeout)\n this._enforceIdleTimeout = setTimeout(() => {\n // enforce idle timeout a little after the session timeout to ensure the session is reset even without activity\n this.resetSessionId()\n }, this.sessionTimeoutMs * 1.1)\n }\n}\n","import { PostHog } from './posthog-core'\nimport { CaptureResult, Properties, RemoteConfig, SiteApp, SiteAppGlobals, SiteAppLoader } from './types'\nimport { assignableWindow } from './utils/globals'\nimport { createLogger } from './utils/logger'\n\nconst logger = createLogger('[SiteApps]')\n\nexport class SiteApps {\n apps: Record<string, SiteApp>\n\n private stopBuffering?: () => void\n private bufferedInvocations: SiteAppGlobals[]\n\n constructor(private instance: PostHog) {\n // events captured between loading posthog-js and the site app; up to 1000 events\n this.bufferedInvocations = []\n this.apps = {}\n }\n\n public get isEnabled(): boolean {\n return !!this.instance.config.opt_in_site_apps\n }\n\n private eventCollector(_eventName: string, eventPayload?: CaptureResult | undefined) {\n if (!eventPayload) {\n return\n }\n const globals = this.globalsForEvent(eventPayload)\n this.bufferedInvocations.push(globals)\n if (this.bufferedInvocations.length > 1000) {\n this.bufferedInvocations = this.bufferedInvocations.slice(10)\n }\n }\n\n get siteAppLoaders(): SiteAppLoader[] | undefined {\n return assignableWindow._POSTHOG_REMOTE_CONFIG?.[this.instance.config.token]?.siteApps\n }\n\n init() {\n if (this.isEnabled) {\n const stop = this.instance._addCaptureHook(this.eventCollector.bind(this))\n this.stopBuffering = () => {\n stop()\n this.bufferedInvocations = []\n this.stopBuffering = undefined\n }\n }\n }\n\n globalsForEvent(event: CaptureResult): SiteAppGlobals {\n if (!event) {\n throw new Error('Event payload is required')\n }\n const groups: SiteAppGlobals['groups'] = {}\n const groupIds = this.instance.get_property('$groups') || []\n const groupProperties: Record<string, Properties> = this.instance.get_property('$stored_group_properties') || {}\n for (const [type, properties] of Object.entries(groupProperties)) {\n groups[type] = { id: groupIds[type], type, properties }\n }\n const { $set_once, $set, ..._event } = event\n const globals = {\n event: {\n ..._event,\n properties: {\n ...event.properties,\n ...($set ? { $set: { ...(event.properties?.$set ?? {}), ...$set } } : {}),\n ...($set_once ? { $set_once: { ...(event.properties?.$set_once ?? {}), ...$set_once } } : {}),\n },\n elements_chain: event.properties?.['$elements_chain'] ?? '',\n // TODO:\n // - elements_chain_href: '',\n // - elements_chain_texts: [] as string[],\n // - elements_chain_ids: [] as string[],\n // - elements_chain_elements: [] as string[],\n distinct_id: event.properties?.['distinct_id'],\n },\n person: {\n properties: this.instance.get_property('$stored_person_properties'),\n },\n groups,\n }\n return globals\n }\n\n setupSiteApp(loader: SiteAppLoader) {\n const app: SiteApp = {\n id: loader.id,\n loaded: false,\n errored: false,\n }\n this.apps[loader.id] = app\n\n const onLoaded = (success: boolean) => {\n this.apps[loader.id].errored = !success\n this.apps[loader.id].loaded = true\n\n logger.info(`Site app with id ${loader.id} ${success ? 'loaded' : 'errored'}`)\n\n if (success && this.bufferedInvocations.length) {\n logger.info(`Processing ${this.bufferedInvocations.length} events for site app with id ${loader.id}`)\n this.bufferedInvocations.forEach((globals) => app.processEvent?.(globals))\n }\n\n for (const app of Object.values(this.apps)) {\n if (!app.loaded) {\n // If any other apps are not loaded, we don't want to stop buffering\n return\n }\n }\n\n this.stopBuffering?.()\n }\n\n try {\n const { processEvent } = loader.init({\n posthog: this.instance,\n callback: (success) => {\n onLoaded(success)\n },\n })\n\n if (processEvent) {\n app.processEvent = processEvent\n }\n } catch (e) {\n logger.error(`Error while initializing PostHog app with config id ${loader.id}`, e)\n onLoaded(false)\n }\n }\n\n private onCapturedEvent(event: CaptureResult) {\n if (Object.keys(this.apps).length === 0) {\n return\n }\n\n const globals = this.globalsForEvent(event)\n\n for (const app of Object.values(this.apps)) {\n try {\n app.processEvent?.(globals)\n } catch (e) {\n logger.error(`Error while processing event ${event.event} for site app ${app.id}`, e)\n }\n }\n }\n\n onRemoteConfig(response: RemoteConfig): void {\n if (this.siteAppLoaders?.length) {\n if (!this.isEnabled) {\n logger.error(`PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.`)\n return\n }\n\n for (const app of this.siteAppLoaders) {\n this.setupSiteApp(app)\n }\n\n // NOTE: We could improve this to only fire if we actually have listeners for the event\n this.instance.on('eventCaptured', (event) => this.onCapturedEvent(event))\n\n return\n }\n\n // NOTE: Below his is now only the fallback for legacy site app support. Once we have fully removed to the remote config loader we can get rid of this\n\n this.stopBuffering?.()\n\n if (!response['siteApps']?.length) {\n return\n }\n\n if (!this.isEnabled) {\n logger.error(`PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.`)\n return\n }\n\n for (const { id, url } of response['siteApps']) {\n assignableWindow[`__$$ph_site_app_${id}`] = this.instance\n assignableWindow.__PosthogExtensions__?.loadSiteApp?.(this.instance, url, (err) => {\n if (err) {\n return logger.error(`Error while initializing PostHog app with config id ${id}`, err)\n }\n })\n }\n }\n}\n","export const DEFAULT_BLOCKED_UA_STRS = [\n 'ahrefsbot',\n 'ahrefssiteaudit',\n 'applebot',\n 'baiduspider',\n 'better uptime bot',\n 'bingbot',\n 'bingpreview',\n 'bot.htm',\n 'bot.php',\n 'chrome-lighthouse',\n 'crawler',\n 'deepscan',\n 'duckduckbot',\n 'facebookexternal',\n 'facebookcatalog',\n 'http://yandex.com/bots',\n 'hubspot',\n 'ia_archiver',\n 'linkedinbot',\n 'mj12bot',\n 'msnbot',\n 'nessus',\n 'petalbot',\n 'pinterest',\n 'prerender',\n 'rogerbot',\n 'screaming frog',\n 'semrushbot',\n 'sitebulb',\n 'slurp',\n 'turnitin',\n 'twitterbot',\n 'vercelbot',\n 'yahoo! slurp',\n 'yandexbot',\n\n // OpenAI Crawlers\n 'gptbot',\n 'oai-searchbot',\n 'chatgpt-user',\n\n // headless browsers\n 'headlesschrome',\n 'cypress',\n // we don't block electron here, as many customers use posthog-js in electron apps\n\n // a whole bunch of goog-specific crawlers\n // https://developers.google.com/search/docs/advanced/crawling/overview-google-crawlers\n 'Google-HotelAdsVerifier',\n 'adsbot-google',\n 'apis-google',\n 'duplexweb-google',\n 'feedfetcher-google',\n 'google favicon',\n 'google web preview',\n 'google-read-aloud',\n 'googlebot',\n 'googleweblight',\n 'mediapartners-google',\n 'storebot-google',\n 'Bytespider;',\n]\n\n/**\n * Block various web spiders from executing our JS and sending false capturing data\n */\nexport const isBlockedUA = function (ua: string, customBlockedUserAgents: string[]): boolean {\n if (!ua) {\n return false\n }\n\n const uaLower = ua.toLowerCase()\n return DEFAULT_BLOCKED_UA_STRS.concat(customBlockedUserAgents || []).some((blockedUA) => {\n const blockedUaLower = blockedUA.toLowerCase()\n\n // can't use includes because IE 11 :/\n return uaLower.indexOf(blockedUaLower) !== -1\n })\n}\n\n// There's more in the type, but this is all we use. It's currently experimental, see\n// https://developer.mozilla.org/en-US/docs/Web/API/Navigator/userAgentData\n// if you're reading this in the future, when it's no longer experimental, please remove this type and use an official one.\n// Be extremely defensive here to ensure backwards and *forwards* compatibility, and remove this defensiveness in the\n// future when it is safe to do so.\nexport interface NavigatorUAData {\n brands?: {\n brand: string\n version: string\n }[]\n}\ndeclare global {\n interface Navigator {\n userAgentData?: NavigatorUAData\n }\n}\n\nexport const isLikelyBot = function (navigator: Navigator | undefined, customBlockedUserAgents: string[]): boolean {\n if (!navigator) {\n return false\n }\n const ua = navigator.userAgent\n if (ua) {\n if (isBlockedUA(ua, customBlockedUserAgents)) {\n return true\n }\n }\n try {\n // eslint-disable-next-line compat/compat\n const uaData = navigator?.userAgentData as NavigatorUAData\n if (uaData?.brands && uaData.brands.some((brandObj) => isBlockedUA(brandObj?.brand, customBlockedUserAgents))) {\n return true\n }\n } catch {\n // ignore the error, we were using experimental browser features\n }\n\n return !!navigator.webdriver\n\n // There's some more enhancements we could make in this area, e.g. it's possible to check if Chrome dev tools are\n // open, which will detect some bots that are trying to mask themselves and might get past the checks above.\n // However, this would give false positives for actual humans who have dev tools open.\n\n // We could also use the data in navigator.userAgentData.getHighEntropyValues() to detect bots, but we should wait\n // until this stops being experimental. The MDN docs imply that this might eventually require user permission.\n // See https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUAData/getHighEntropyValues\n // It would be very bad if posthog-js caused a permission prompt to appear on every page load.\n}\n","import { jsonStringify } from '../request'\nimport type { Properties } from '../types'\n\nexport function getIdentifyHash(\n distinct_id: string,\n userPropertiesToSet?: Properties,\n userPropertiesToSetOnce?: Properties\n): string {\n return jsonStringify({ distinct_id, userPropertiesToSet, userPropertiesToSetOnce })\n}\n","import { PostHog } from './posthog-core'\nimport { navigator, window } from './utils/globals'\nimport {\n WebExperiment,\n WebExperimentsCallback,\n WebExperimentTransform,\n WebExperimentUrlMatchType,\n WebExperimentVariant,\n} from './web-experiments-types'\nimport { WEB_EXPERIMENTS } from './constants'\nimport { isNullish, isString } from './utils/type-utils'\nimport { getQueryParam } from './utils/request-utils'\nimport { isMatchingRegex } from './utils/regex-utils'\nimport { logger } from './utils/logger'\nimport { Info } from './utils/event-utils'\nimport { isLikelyBot } from './utils/blocked-uas'\n\nexport const webExperimentUrlValidationMap: Record<\n WebExperimentUrlMatchType,\n (conditionsUrl: string, location: Location) => boolean\n> = {\n icontains: (conditionsUrl, location) =>\n !!window && location.href.toLowerCase().indexOf(conditionsUrl.toLowerCase()) > -1,\n not_icontains: (conditionsUrl, location) =>\n !!window && location.href.toLowerCase().indexOf(conditionsUrl.toLowerCase()) === -1,\n regex: (conditionsUrl, location) => !!window && isMatchingRegex(location.href, conditionsUrl),\n not_regex: (conditionsUrl, location) => !!window && !isMatchingRegex(location.href, conditionsUrl),\n exact: (conditionsUrl, location) => location.href === conditionsUrl,\n is_not: (conditionsUrl, location) => location.href !== conditionsUrl,\n}\n\nexport class WebExperiments {\n private _flagToExperiments?: Map<string, WebExperiment>\n\n constructor(private instance: PostHog) {\n this.instance.onFeatureFlags((flags: string[]) => {\n this.onFeatureFlags(flags)\n })\n }\n\n onFeatureFlags(flags: string[]) {\n if (this._is_bot()) {\n WebExperiments.logInfo('Refusing to render web experiment since the viewer is a likely bot')\n return\n }\n\n if (this.instance.config.disable_web_experiments) {\n return\n }\n\n if (isNullish(this._flagToExperiments)) {\n // Indicates first load so we trigger the loaders\n this._flagToExperiments = new Map<string, WebExperiment>()\n this.loadIfEnabled()\n this.previewWebExperiment()\n return\n }\n\n WebExperiments.logInfo('applying feature flags', flags)\n flags.forEach((flag) => {\n if (this._flagToExperiments && this._flagToExperiments?.has(flag)) {\n const selectedVariant = this.instance.getFeatureFlag(flag) as unknown as string\n const webExperiment = this._flagToExperiments?.get(flag)\n if (selectedVariant && webExperiment?.variants[selectedVariant]) {\n this.applyTransforms(\n webExperiment.name,\n selectedVariant,\n webExperiment.variants[selectedVariant].transforms\n )\n }\n }\n })\n }\n\n previewWebExperiment() {\n const location = WebExperiments.getWindowLocation()\n if (location?.search) {\n const experimentID = getQueryParam(location?.search, '__experiment_id')\n const variant = getQueryParam(location?.search, '__experiment_variant')\n if (experimentID && variant) {\n WebExperiments.logInfo(`previewing web experiments ${experimentID} && ${variant}`)\n this.getWebExperiments(\n (webExperiments) => {\n this.showPreviewWebExperiment(parseInt(experimentID), variant, webExperiments)\n },\n false,\n true\n )\n }\n }\n }\n\n loadIfEnabled() {\n if (this.instance.config.disable_web_experiments) {\n return\n }\n\n this.getWebExperimentsAndEvaluateDisplayLogic()\n }\n\n public getWebExperimentsAndEvaluateDisplayLogic = (forceReload: boolean = false): void => {\n this.getWebExperiments((webExperiments) => {\n WebExperiments.logInfo(`retrieved web experiments from the server`)\n this._flagToExperiments = new Map<string, WebExperiment>()\n\n webExperiments.forEach((webExperiment) => {\n if (webExperiment.feature_flag_key) {\n if (this._flagToExperiments) {\n WebExperiments.logInfo(\n `setting flag key `,\n webExperiment.feature_flag_key,\n ` to web experiment `,\n webExperiment\n )\n this._flagToExperiments?.set(webExperiment.feature_flag_key, webExperiment)\n }\n\n const selectedVariant = this.instance.getFeatureFlag(webExperiment.feature_flag_key)\n if (isString(selectedVariant) && webExperiment.variants[selectedVariant]) {\n this.applyTransforms(\n webExperiment.name,\n selectedVariant,\n webExperiment.variants[selectedVariant].transforms\n )\n }\n } else if (webExperiment.variants) {\n for (const variant in webExperiment.variants) {\n const testVariant = webExperiment.variants[variant]\n const matchTest = WebExperiments.matchesTestVariant(testVariant)\n if (matchTest) {\n this.applyTransforms(webExperiment.name, variant, testVariant.transforms)\n }\n }\n }\n })\n }, forceReload)\n }\n\n public getWebExperiments(callback: WebExperimentsCallback, forceReload: boolean, previewing?: boolean) {\n if (this.instance.config.disable_web_experiments && !previewing) {\n return callback([])\n }\n\n const existingWebExperiments = this.instance.get_property(WEB_EXPERIMENTS)\n if (existingWebExperiments && !forceReload) {\n return callback(existingWebExperiments)\n }\n\n this.instance._send_request({\n url: this.instance.requestRouter.endpointFor(\n 'api',\n `/api/web_experiments/?token=${this.instance.config.token}`\n ),\n method: 'GET',\n callback: (response) => {\n if (response.statusCode !== 200 || !response.json) {\n return callback([])\n }\n const webExperiments = response.json.experiments || []\n return callback(webExperiments)\n },\n })\n }\n\n private showPreviewWebExperiment(experimentID: number, variant: string, webExperiments: WebExperiment[]) {\n const previewExperiments = webExperiments.filter((exp) => exp.id === experimentID)\n if (previewExperiments && previewExperiments.length > 0) {\n WebExperiments.logInfo(\n `Previewing web experiment [${previewExperiments[0].name}] with variant [${variant}]`\n )\n this.applyTransforms(\n previewExperiments[0].name,\n variant,\n previewExperiments[0].variants[variant].transforms\n )\n }\n }\n private static matchesTestVariant(testVariant: WebExperimentVariant) {\n if (isNullish(testVariant.conditions)) {\n return false\n }\n return WebExperiments.matchUrlConditions(testVariant) && WebExperiments.matchUTMConditions(testVariant)\n }\n\n private static matchUrlConditions(testVariant: WebExperimentVariant): boolean {\n if (isNullish(testVariant.conditions) || isNullish(testVariant.conditions?.url)) {\n return true\n }\n\n const location = WebExperiments.getWindowLocation()\n if (location) {\n const urlCheck = testVariant.conditions?.url\n ? webExperimentUrlValidationMap[testVariant.conditions?.urlMatchType ?? 'icontains'](\n testVariant.conditions.url,\n location\n )\n : true\n return urlCheck\n }\n\n return false\n }\n\n public static getWindowLocation(): Location | undefined {\n return window?.location\n }\n\n private static matchUTMConditions(testVariant: WebExperimentVariant): boolean {\n if (isNullish(testVariant.conditions) || isNullish(testVariant.conditions?.utm)) {\n return true\n }\n const campaignParams = Info.campaignParams()\n if (campaignParams['utm_source']) {\n // eslint-disable-next-line compat/compat\n const utmCampaignMatched = testVariant.conditions?.utm?.utm_campaign\n ? testVariant.conditions?.utm?.utm_campaign == campaignParams['utm_campaign']\n : true\n\n const utmSourceMatched = testVariant.conditions?.utm?.utm_source\n ? testVariant.conditions?.utm?.utm_source == campaignParams['utm_source']\n : true\n\n const utmMediumMatched = testVariant.conditions?.utm?.utm_medium\n ? testVariant.conditions?.utm?.utm_medium == campaignParams['utm_medium']\n : true\n\n const utmTermMatched = testVariant.conditions?.utm?.utm_term\n ? testVariant.conditions?.utm?.utm_term == campaignParams['utm_term']\n : true\n\n return utmCampaignMatched && utmMediumMatched && utmTermMatched && utmSourceMatched\n }\n\n return false\n }\n\n private static logInfo(msg: string, ...args: any[]) {\n logger.info(`[WebExperiments] ${msg}`, args)\n }\n\n private applyTransforms(experiment: string, variant: string, transforms: WebExperimentTransform[]) {\n if (this._is_bot()) {\n WebExperiments.logInfo('Refusing to render web experiment since the viewer is a likely bot')\n return\n }\n\n if (variant === 'control') {\n WebExperiments.logInfo('Control variants leave the page unmodified.')\n return\n }\n\n transforms.forEach((transform) => {\n if (transform.selector) {\n WebExperiments.logInfo(\n `applying transform of variant ${variant} for experiment ${experiment} `,\n transform\n )\n\n // eslint-disable-next-line no-restricted-globals\n const elements = document?.querySelectorAll(transform.selector)\n elements?.forEach((element) => {\n const htmlElement = element as HTMLElement\n if (transform.html) {\n htmlElement.innerHTML = transform.html\n }\n\n if (transform.css) {\n htmlElement.setAttribute('style', transform.css)\n }\n })\n }\n })\n }\n\n _is_bot(): boolean | undefined {\n if (navigator && this.instance) {\n return isLikelyBot(navigator, this.instance.config.custom_blocked_useragents)\n } else {\n return undefined\n }\n }\n}\n","import { Autocapture } from './autocapture'\nimport Config from './config'\nimport { ConsentManager } from './consent'\nimport {\n ALIAS_ID_KEY,\n COOKIELESS_MODE_FLAG_PROPERTY,\n COOKIELESS_SENTINEL_VALUE,\n ENABLE_PERSON_PROCESSING,\n FLAG_CALL_REPORTED,\n PEOPLE_DISTINCT_ID_KEY,\n SURVEYS_REQUEST_TIMEOUT_MS,\n USER_STATE,\n} from './constants'\nimport { DeadClicksAutocapture, isDeadClicksEnabledForAutocapture } from './extensions/dead-clicks-autocapture'\nimport { ExceptionObserver } from './extensions/exception-autocapture'\nimport { SessionRecording } from './extensions/replay/sessionrecording'\nimport { setupSegmentIntegration } from './extensions/segment-integration'\nimport { SentryIntegration, sentryIntegration, SentryIntegrationOptions } from './extensions/sentry-integration'\nimport { Toolbar } from './extensions/toolbar'\nimport { TracingHeaders } from './extensions/tracing-headers'\nimport { WebVitalsAutocapture } from './extensions/web-vitals'\nimport { Heatmaps } from './heatmaps'\nimport { PageViewManager } from './page-view'\nimport { PostHogExceptions } from './posthog-exceptions'\nimport { PostHogFeatureFlags } from './posthog-featureflags'\nimport { PostHogPersistence } from './posthog-persistence'\nimport { PostHogSurveys } from './posthog-surveys'\nimport { SurveyCallback } from './posthog-surveys-types'\nimport { RateLimiter } from './rate-limiter'\nimport { RemoteConfigLoader } from './remote-config'\nimport { extendURLParams, request, SUPPORTS_REQUEST } from './request'\nimport { DEFAULT_FLUSH_INTERVAL_MS, RequestQueue } from './request-queue'\nimport { RetryQueue } from './retry-queue'\nimport { ScrollManager } from './scroll-manager'\nimport { SessionPropsManager } from './session-props'\nimport { SessionIdManager } from './sessionid'\nimport { SiteApps } from './site-apps'\nimport { localStore } from './storage'\nimport {\n CaptureOptions,\n CaptureResult,\n Compression,\n EarlyAccessFeatureCallback,\n EventName,\n FeatureFlagsCallback,\n JsonType,\n PostHogConfig,\n Properties,\n Property,\n QueuedRequestWithOptions,\n RemoteConfig,\n RequestCallback,\n SessionIdChangedCallback,\n SnippetArrayItem,\n ToolbarParams,\n} from './types'\nimport {\n _copyAndTruncateStrings,\n addEventListener,\n each,\n eachArray,\n extend,\n isCrossDomainCookie,\n safewrapClass,\n} from './utils'\nimport { isLikelyBot } from './utils/blocked-uas'\nimport { Info } from './utils/event-utils'\nimport { assignableWindow, document, location, navigator, userAgent, window } from './utils/globals'\nimport { getIdentifyHash } from './utils/identify-utils'\nimport { logger } from './utils/logger'\nimport { RequestRouter, RequestRouterRegion } from './utils/request-router'\nimport { SimpleEventEmitter } from './utils/simple-event-emitter'\nimport { includes, isDistinctIdStringLike } from './utils/string-utils'\nimport {\n isArray,\n isEmptyObject,\n isEmptyString,\n isError,\n isFunction,\n isKnownUnsafeEditableEvent,\n isNullish,\n isNumber,\n isObject,\n isString,\n isUndefined,\n} from './utils/type-utils'\nimport { uuidv7 } from './uuidv7'\nimport { WebExperiments } from './web-experiments'\n\n/*\nSIMPLE STYLE GUIDE:\n\nthis.x === public function\nthis._x === internal - only use within this file\nthis.__x === private - only use within the class\n\nGlobals should be all caps\n*/\n\n/* posthog.init is called with `Partial<PostHogConfig>`\n * and we want to ensure that only valid keys are passed to the config object.\n * TypeScript does not enforce that the object passed does not have extra keys.\n * So someone can call with { bootstrap: { distinctId: '123'} }\n * which is not a valid key. They should have passed distinctID (upper case D).\n * That's a really tricky mistake to spot.\n * The OnlyValidKeys type ensures that only keys that are valid in the PostHogConfig type are allowed.\n */\ntype OnlyValidKeys<T, Shape> = T extends Shape ? (Exclude<keyof T, keyof Shape> extends never ? T : never) : never\n\nconst instances: Record<string, PostHog> = {}\n\n// some globals for comparisons\nconst __NOOP = () => {}\n\nconst PRIMARY_INSTANCE_NAME = 'posthog'\n\n/*\n * Dynamic... constants? Is that an oxymoron?\n */\n// http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/\n// https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#withCredentials\n\n// IE<10 does not support cross-origin XHR's but script tags\n// with defer won't block window.onload; ENQUEUE_REQUESTS\n// should only be true for Opera<12\nlet ENQUEUE_REQUESTS = !SUPPORTS_REQUEST && userAgent?.indexOf('MSIE') === -1 && userAgent?.indexOf('Mozilla') === -1\n\n// NOTE: Remember to update `types.ts` when changing a default value\n// to guarantee documentation is up to date, make sure to also update our website docs\n// NOTE²: This shouldn't ever change because we try very hard to be backwards-compatible\nexport const defaultConfig = (): PostHogConfig => ({\n api_host: 'https://us.i.posthog.com',\n ui_host: null,\n token: '',\n autocapture: true,\n rageclick: true,\n cross_subdomain_cookie: isCrossDomainCookie(document?.location),\n persistence: 'localStorage+cookie', // up to 1.92.0 this was 'cookie'. It's easy to migrate as 'localStorage+cookie' will migrate data from cookie storage\n persistence_name: '',\n loaded: __NOOP,\n save_campaign_params: true,\n custom_campaign_params: [],\n custom_blocked_useragents: [],\n save_referrer: true,\n capture_pageview: true,\n capture_pageleave: 'if_capture_pageview', // We'll only capture pageleave events if capture_pageview is also true\n debug: (location && isString(location?.search) && location.search.indexOf('__posthog_debug=true') !== -1) || false,\n cookie_expiration: 365,\n upgrade: false,\n disable_session_recording: false,\n disable_persistence: false,\n disable_web_experiments: true, // disabled in beta.\n disable_surveys: false,\n disable_external_dependency_loading: false,\n enable_recording_console_log: undefined, // When undefined, it falls back to the server-side setting\n secure_cookie: window?.location?.protocol === 'https:',\n ip: true,\n opt_out_capturing_by_default: false,\n opt_out_persistence_by_default: false,\n opt_out_useragent_filter: false,\n opt_out_capturing_persistence_type: 'localStorage',\n opt_out_capturing_cookie_prefix: null,\n opt_in_site_apps: false,\n property_denylist: [],\n respect_dnt: false,\n sanitize_properties: null,\n request_headers: {}, // { header: value, header2: value }\n request_batching: true,\n properties_string_max_length: 65535,\n session_recording: {},\n mask_all_element_attributes: false,\n mask_all_text: false,\n mask_personal_data_properties: false,\n custom_personal_data_properties: [],\n advanced_disable_decide: false,\n advanced_disable_feature_flags: false,\n advanced_disable_feature_flags_on_first_load: false,\n advanced_disable_toolbar_metrics: false,\n feature_flag_request_timeout_ms: 3000,\n surveys_request_timeout_ms: SURVEYS_REQUEST_TIMEOUT_MS,\n on_request_error: (res) => {\n const error = 'Bad HTTP status: ' + res.statusCode + ' ' + res.text\n logger.error(error)\n },\n get_device_id: (uuid) => uuid,\n capture_performance: undefined,\n name: 'posthog',\n bootstrap: {},\n disable_compression: false,\n session_idle_timeout_seconds: 30 * 60, // 30 minutes\n person_profiles: 'identified_only',\n before_send: undefined,\n request_queue_config: { flush_interval_ms: DEFAULT_FLUSH_INTERVAL_MS },\n\n // Used for internal testing\n _onCapture: __NOOP,\n})\n\nexport const configRenames = (origConfig: Partial<PostHogConfig>): Partial<PostHogConfig> => {\n const renames: Partial<PostHogConfig> = {}\n if (!isUndefined(origConfig.process_person)) {\n renames.person_profiles = origConfig.process_person\n }\n if (!isUndefined(origConfig.xhr_headers)) {\n renames.request_headers = origConfig.xhr_headers\n }\n if (!isUndefined(origConfig.cookie_name)) {\n renames.persistence_name = origConfig.cookie_name\n }\n if (!isUndefined(origConfig.disable_cookie)) {\n renames.disable_persistence = origConfig.disable_cookie\n }\n if (!isUndefined(origConfig.store_google)) {\n renames.save_campaign_params = origConfig.store_google\n }\n if (!isUndefined(origConfig.verbose)) {\n renames.debug = origConfig.verbose\n }\n // on_xhr_error is not present, as the type is different to on_request_error\n\n // the original config takes priority over the renames\n const newConfig = extend({}, renames, origConfig)\n\n // merge property_blacklist into property_denylist\n if (isArray(origConfig.property_blacklist)) {\n if (isUndefined(origConfig.property_denylist)) {\n newConfig.property_denylist = origConfig.property_blacklist\n } else if (isArray(origConfig.property_denylist)) {\n newConfig.property_denylist = [...origConfig.property_blacklist, ...origConfig.property_denylist]\n } else {\n logger.error('Invalid value for property_denylist config: ' + origConfig.property_denylist)\n }\n }\n\n return newConfig\n}\n\nclass DeprecatedWebPerformanceObserver {\n get _forceAllowLocalhost(): boolean {\n return this.__forceAllowLocalhost\n }\n\n set _forceAllowLocalhost(value: boolean) {\n logger.error(\n 'WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`'\n )\n this.__forceAllowLocalhost = value\n }\n\n private __forceAllowLocalhost: boolean = false\n}\n\n/**\n * PostHog Library Object\n * @constructor\n */\nexport class PostHog {\n __loaded: boolean\n config: PostHogConfig\n\n rateLimiter: RateLimiter\n scrollManager: ScrollManager\n pageViewManager: PageViewManager\n featureFlags: PostHogFeatureFlags\n surveys: PostHogSurveys\n experiments: WebExperiments\n toolbar: Toolbar\n exceptions: PostHogExceptions\n consent: ConsentManager\n\n // These are instance-specific state created after initialisation\n persistence?: PostHogPersistence\n sessionPersistence?: PostHogPersistence\n sessionManager?: SessionIdManager\n sessionPropsManager?: SessionPropsManager\n requestRouter: RequestRouter\n siteApps?: SiteApps\n autocapture?: Autocapture\n heatmaps?: Heatmaps\n webVitalsAutocapture?: WebVitalsAutocapture\n exceptionObserver?: ExceptionObserver\n deadClicksAutocapture?: DeadClicksAutocapture\n\n _requestQueue?: RequestQueue\n _retryQueue?: RetryQueue\n sessionRecording?: SessionRecording\n webPerformance = new DeprecatedWebPerformanceObserver()\n\n _initialPageviewCaptured: boolean\n _personProcessingSetOncePropertiesSent: boolean = false\n _triggered_notifs: any\n compression?: Compression\n __request_queue: QueuedRequestWithOptions[]\n analyticsDefaultEndpoint: string\n version = Config.LIB_VERSION\n _initialPersonProfilesConfig: 'always' | 'never' | 'identified_only' | null\n _cachedIdentify: string | null\n\n SentryIntegration: typeof SentryIntegration\n sentryIntegration: (options?: SentryIntegrationOptions) => ReturnType<typeof sentryIntegration>\n\n private _internalEventEmitter = new SimpleEventEmitter()\n\n // Legacy property to support existing usage - this isn't technically correct but it's what it has always been - a proxy for flags being loaded\n public get decideEndpointWasHit(): boolean {\n return this.featureFlags?.hasLoadedFlags ?? false\n }\n\n /** DEPRECATED: We keep this to support existing usage but now one should just call .setPersonProperties */\n people: {\n set: (prop: string | Properties, to?: string, callback?: RequestCallback) => void\n set_once: (prop: string | Properties, to?: string, callback?: RequestCallback) => void\n }\n\n constructor() {\n this.config = defaultConfig()\n\n this.SentryIntegration = SentryIntegration\n this.sentryIntegration = (options?: SentryIntegrationOptions) => sentryIntegration(this, options)\n this.__request_queue = []\n this.__loaded = false\n this.analyticsDefaultEndpoint = '/e/'\n this._initialPageviewCaptured = false\n this._initialPersonProfilesConfig = null\n this._cachedIdentify = null\n this.featureFlags = new PostHogFeatureFlags(this)\n this.toolbar = new Toolbar(this)\n this.scrollManager = new ScrollManager(this)\n this.pageViewManager = new PageViewManager(this)\n this.surveys = new PostHogSurveys(this)\n this.experiments = new WebExperiments(this)\n this.exceptions = new PostHogExceptions(this)\n this.rateLimiter = new RateLimiter(this)\n this.requestRouter = new RequestRouter(this)\n this.consent = new ConsentManager(this)\n\n // NOTE: See the property definition for deprecation notice\n this.people = {\n set: (prop: string | Properties, to?: string, callback?: RequestCallback) => {\n const setProps = isString(prop) ? { [prop]: to } : prop\n this.setPersonProperties(setProps)\n callback?.({} as any)\n },\n set_once: (prop: string | Properties, to?: string, callback?: RequestCallback) => {\n const setProps = isString(prop) ? { [prop]: to } : prop\n this.setPersonProperties(undefined, setProps)\n callback?.({} as any)\n },\n }\n\n this.on('eventCaptured', (data) => logger.info(`send \"${data?.event}\"`, data))\n }\n\n // Initialization methods\n\n /**\n * This function initializes a new instance of the PostHog capturing object.\n * All new instances are added to the main posthog object as sub properties (such as\n * posthog.library_name) and also returned by this function. To define a\n * second instance on the page, you would call:\n *\n * posthog.init('new token', { your: 'config' }, 'library_name');\n *\n * and use it like so:\n *\n * posthog.library_name.capture(...);\n *\n * @param {String} token Your PostHog API token\n * @param {Object} [config] A dictionary of config options to override. <a href=\"https://github.com/posthog/posthog-js/blob/6e0e873/src/posthog-core.js#L57-L91\">See a list of default config options</a>.\n * @param {String} [name] The name for the new posthog instance that you want created\n */\n init(\n token: string,\n config?: OnlyValidKeys<Partial<PostHogConfig>, Partial<PostHogConfig>>,\n name?: string\n ): PostHog {\n if (!name || name === PRIMARY_INSTANCE_NAME) {\n // This means we are initializing the primary instance (i.e. this)\n return this._init(token, config, name)\n } else {\n const namedPosthog = instances[name] ?? new PostHog()\n namedPosthog._init(token, config, name)\n instances[name] = namedPosthog\n\n // Add as a property to the primary instance (this isn't type-safe but its how it was always done)\n ;(instances[PRIMARY_INSTANCE_NAME] as any)[name] = namedPosthog\n\n return namedPosthog\n }\n }\n\n // posthog._init(token:string, config:object, name:string)\n //\n // This function sets up the current instance of the posthog\n // library. The difference between this method and the init(...)\n // method is this one initializes the actual instance, whereas the\n // init(...) method sets up a new library and calls _init on it.\n //\n // Note that there are operations that can be asynchronous, so we\n // accept a callback that is called when all the asynchronous work\n // is done. Note that we do not use promises because we want to be\n // IE11 compatible. We could use polyfills, which would make the\n // code a bit cleaner, but will add some overhead.\n //\n _init(token: string, config: Partial<PostHogConfig> = {}, name?: string): PostHog {\n if (isUndefined(token) || isEmptyString(token)) {\n logger.critical(\n 'PostHog was initialized without a token. This likely indicates a misconfiguration. Please check the first argument passed to posthog.init()'\n )\n return this\n }\n\n if (this.__loaded) {\n logger.warn('You have already initialized PostHog! Re-initializing is a no-op')\n return this\n }\n\n this.__loaded = true\n this.config = {} as PostHogConfig // will be set right below\n this._triggered_notifs = []\n\n if (config.person_profiles) {\n this._initialPersonProfilesConfig = config.person_profiles\n }\n\n this.set_config(\n extend({}, defaultConfig(), configRenames(config), {\n name: name,\n token: token,\n })\n )\n\n if (this.config.on_xhr_error) {\n logger.error('on_xhr_error is deprecated. Use on_request_error instead')\n }\n\n this.compression = config.disable_compression ? undefined : Compression.GZipJS\n\n this.persistence = new PostHogPersistence(this.config)\n this.sessionPersistence =\n this.config.persistence === 'sessionStorage' || this.config.persistence === 'memory'\n ? this.persistence\n : new PostHogPersistence({ ...this.config, persistence: 'sessionStorage' })\n\n // should I store the initial person profiles config in persistence?\n const initialPersistenceProps = { ...this.persistence.props }\n const initialSessionProps = { ...this.sessionPersistence.props }\n\n this._requestQueue = new RequestQueue(\n (req) => this._send_retriable_request(req),\n this.config.request_queue_config\n )\n this._retryQueue = new RetryQueue(this)\n this.__request_queue = []\n\n if (!this.config.__preview_experimental_cookieless_mode) {\n this.sessionManager = new SessionIdManager(this)\n this.sessionPropsManager = new SessionPropsManager(this, this.sessionManager, this.persistence)\n }\n\n new TracingHeaders(this).startIfEnabledOrStop()\n\n this.siteApps = new SiteApps(this)\n this.siteApps?.init()\n\n if (!this.config.__preview_experimental_cookieless_mode) {\n this.sessionRecording = new SessionRecording(this)\n this.sessionRecording.startIfEnabledOrStop()\n }\n\n if (!this.config.disable_scroll_properties) {\n this.scrollManager.startMeasuringScrollPosition()\n }\n\n this.autocapture = new Autocapture(this)\n this.autocapture.startIfEnabled()\n this.surveys.loadIfEnabled()\n\n this.heatmaps = new Heatmaps(this)\n this.heatmaps.startIfEnabled()\n\n this.webVitalsAutocapture = new WebVitalsAutocapture(this)\n\n this.exceptionObserver = new ExceptionObserver(this)\n this.exceptionObserver.startIfEnabled()\n\n this.deadClicksAutocapture = new DeadClicksAutocapture(this, isDeadClicksEnabledForAutocapture)\n this.deadClicksAutocapture.startIfEnabled()\n\n // if any instance on the page has debug = true, we set the\n // global debug to be true\n Config.DEBUG = Config.DEBUG || this.config.debug\n if (Config.DEBUG) {\n logger.info('Starting in debug mode', {\n this: this,\n config,\n thisC: { ...this.config },\n p: initialPersistenceProps,\n s: initialSessionProps,\n })\n }\n\n this._sync_opt_out_with_persistence()\n\n // isUndefined doesn't provide typehint here so wouldn't reduce bundle as we'd need to assign\n // eslint-disable-next-line posthog-js/no-direct-undefined-check\n if (config.bootstrap?.distinctID !== undefined) {\n const uuid = this.config.get_device_id(uuidv7())\n const deviceID = config.bootstrap?.isIdentifiedID ? uuid : config.bootstrap.distinctID\n this.persistence.set_property(USER_STATE, config.bootstrap?.isIdentifiedID ? 'identified' : 'anonymous')\n this.register({\n distinct_id: config.bootstrap.distinctID,\n $device_id: deviceID,\n })\n }\n\n if (this._hasBootstrappedFeatureFlags()) {\n const activeFlags = Object.keys(config.bootstrap?.featureFlags || {})\n .filter((flag) => !!config.bootstrap?.featureFlags?.[flag])\n .reduce(\n (res: Record<string, string | boolean>, key) => (\n (res[key] = config.bootstrap?.featureFlags?.[key] || false), res\n ),\n {}\n )\n const featureFlagPayloads = Object.keys(config.bootstrap?.featureFlagPayloads || {})\n .filter((key) => activeFlags[key])\n .reduce((res: Record<string, JsonType>, key) => {\n if (config.bootstrap?.featureFlagPayloads?.[key]) {\n res[key] = config.bootstrap?.featureFlagPayloads?.[key]\n }\n return res\n }, {})\n\n this.featureFlags.receivedFeatureFlags({ featureFlags: activeFlags, featureFlagPayloads })\n }\n\n if (this.config.__preview_experimental_cookieless_mode) {\n this.register_once(\n {\n distinct_id: COOKIELESS_SENTINEL_VALUE,\n $device_id: null,\n },\n ''\n )\n } else if (!this.get_distinct_id()) {\n // There is no need to set the distinct id\n // or the device id if something was already stored\n // in the persistence\n const uuid = this.config.get_device_id(uuidv7())\n\n this.register_once(\n {\n distinct_id: uuid,\n $device_id: uuid,\n },\n ''\n )\n // distinct id == $device_id is a proxy for anonymous user\n this.persistence.set_property(USER_STATE, 'anonymous')\n }\n // Set up event handler for pageleave\n // Use `onpagehide` if available, see https://calendar.perfplanet.com/2020/beaconing-in-practice/#beaconing-reliability-avoiding-abandons\n //\n // Not making it passive to try and force the browser to handle this before the page is unloaded\n addEventListener(window, 'onpagehide' in self ? 'pagehide' : 'unload', this._handle_unload.bind(this), {\n passive: false,\n })\n\n this.toolbar.maybeLoadToolbar()\n\n // We want to avoid promises for IE11 compatibility, so we use callbacks here\n if (config.segment) {\n setupSegmentIntegration(this, () => this._loaded())\n } else {\n this._loaded()\n }\n\n if (isFunction(this.config._onCapture) && this.config._onCapture !== __NOOP) {\n logger.warn('onCapture is deprecated. Please use `before_send` instead')\n this.on('eventCaptured', (data) => this.config._onCapture(data.event, data))\n }\n\n return this\n }\n\n _onRemoteConfig(config: RemoteConfig) {\n if (!(document && document.body)) {\n logger.info('document not ready yet, trying again in 500 milliseconds...')\n setTimeout(() => {\n this._onRemoteConfig(config)\n }, 500)\n return\n }\n\n this.compression = undefined\n if (config.supportedCompression && !this.config.disable_compression) {\n this.compression = includes(config['supportedCompression'], Compression.GZipJS)\n ? Compression.GZipJS\n : includes(config['supportedCompression'], Compression.Base64)\n ? Compression.Base64\n : undefined\n }\n\n if (config.analytics?.endpoint) {\n this.analyticsDefaultEndpoint = config.analytics.endpoint\n }\n\n this.set_config({\n person_profiles: this._initialPersonProfilesConfig ? this._initialPersonProfilesConfig : 'identified_only',\n })\n\n this.siteApps?.onRemoteConfig(config)\n this.sessionRecording?.onRemoteConfig(config)\n this.autocapture?.onRemoteConfig(config)\n this.heatmaps?.onRemoteConfig(config)\n this.surveys.onRemoteConfig(config)\n this.webVitalsAutocapture?.onRemoteConfig(config)\n this.exceptionObserver?.onRemoteConfig(config)\n this.deadClicksAutocapture?.onRemoteConfig(config)\n }\n\n _loaded(): void {\n try {\n this.config.loaded(this)\n } catch (err) {\n logger.critical('`loaded` function failed', err)\n }\n\n this._start_queue_if_opted_in()\n\n // this happens after \"loaded\" so a user can call identify or any other things before the pageview fires\n if (this.config.capture_pageview) {\n // NOTE: We want to fire this on the next tick as the previous implementation had this side effect\n // and some clients may rely on it\n setTimeout(() => {\n if (this.consent.isOptedIn()) {\n this._captureInitialPageview()\n }\n }, 1)\n }\n\n new RemoteConfigLoader(this).load()\n this.featureFlags.decide()\n }\n\n _start_queue_if_opted_in(): void {\n if (!this.has_opted_out_capturing()) {\n if (this.config.request_batching) {\n this._requestQueue?.enable()\n }\n }\n }\n\n _dom_loaded(): void {\n if (!this.has_opted_out_capturing()) {\n eachArray(this.__request_queue, (item) => this._send_retriable_request(item))\n }\n\n this.__request_queue = []\n this._start_queue_if_opted_in()\n }\n\n _handle_unload(): void {\n if (!this.config.request_batching) {\n if (this._shouldCapturePageleave()) {\n this.capture('$pageleave', null, { transport: 'sendBeacon' })\n }\n return\n }\n\n if (this._shouldCapturePageleave()) {\n this.capture('$pageleave')\n }\n\n this._requestQueue?.unload()\n this._retryQueue?.unload()\n }\n\n _send_request(options: QueuedRequestWithOptions): void {\n if (!this.__loaded) {\n return\n }\n\n if (ENQUEUE_REQUESTS) {\n this.__request_queue.push(options)\n return\n }\n\n if (this.rateLimiter.isServerRateLimited(options.batchKey)) {\n return\n }\n\n options.transport = options.transport || this.config.api_transport\n options.url = extendURLParams(options.url, {\n // Whether to detect ip info or not\n ip: this.config.ip ? 1 : 0,\n })\n options.headers = {\n ...this.config.request_headers,\n }\n options.compression = options.compression === 'best-available' ? this.compression : options.compression\n\n // Specially useful if you're doing SSR with NextJS\n // Users must be careful when tweaking `cache` because they might get out-of-date feature flags\n options.fetchOptions = options.fetchOptions || this.config.fetch_options\n\n request({\n ...options,\n callback: (response) => {\n this.rateLimiter.checkForLimiting(response)\n\n if (response.statusCode >= 400) {\n this.config.on_request_error?.(response)\n }\n\n options.callback?.(response)\n },\n })\n }\n\n _send_retriable_request(options: QueuedRequestWithOptions): void {\n if (this._retryQueue) {\n this._retryQueue.retriableRequest(options)\n } else {\n this._send_request(options)\n }\n }\n\n /**\n * _execute_array() deals with processing any posthog function\n * calls that were called before the PostHog library were loaded\n * (and are thus stored in an array so they can be called later)\n *\n * Note: we fire off all the posthog function calls && user defined\n * functions BEFORE we fire off posthog capturing calls. This is so\n * identify/register/set_config calls can properly modify early\n * capturing calls.\n *\n * @param {Array} array\n */\n _execute_array(array: SnippetArrayItem[]): void {\n let fn_name\n const alias_calls: SnippetArrayItem[] = []\n const other_calls: SnippetArrayItem[] = []\n const capturing_calls: SnippetArrayItem[] = []\n eachArray(array, (item) => {\n if (item) {\n fn_name = item[0]\n if (isArray(fn_name)) {\n capturing_calls.push(item) // chained call e.g. posthog.get_group().set()\n } else if (isFunction(item)) {\n ;(item as any).call(this)\n } else if (isArray(item) && fn_name === 'alias') {\n alias_calls.push(item)\n } else if (isArray(item) && fn_name.indexOf('capture') !== -1 && isFunction((this as any)[fn_name])) {\n capturing_calls.push(item)\n } else {\n other_calls.push(item)\n }\n }\n })\n\n const execute = function (calls: SnippetArrayItem[], thisArg: any) {\n eachArray(\n calls,\n function (item) {\n if (isArray(item[0])) {\n // chained call\n let caller = thisArg\n each(item, function (call) {\n caller = caller[call[0]].apply(caller, call.slice(1))\n })\n } else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this[item[0]].apply(this, item.slice(1))\n }\n },\n thisArg\n )\n }\n\n execute(alias_calls, this)\n execute(other_calls, this)\n execute(capturing_calls, this)\n }\n\n _hasBootstrappedFeatureFlags(): boolean {\n return (\n (this.config.bootstrap?.featureFlags && Object.keys(this.config.bootstrap?.featureFlags).length > 0) ||\n false\n )\n }\n\n /**\n * push() keeps the standard async-array-push\n * behavior around after the lib is loaded.\n * This is only useful for external integrations that\n * do not wish to rely on our convenience methods\n * (created in the snippet).\n *\n * ### Usage:\n * posthog.push(['register', { a: 'b' }]);\n *\n * @param {Array} item A [function_name, args...] array to be executed\n */\n push(item: SnippetArrayItem): void {\n this._execute_array([item])\n }\n\n /**\n * Capture an event. This is the most important and\n * frequently used PostHog function.\n *\n * ### Usage:\n *\n * // capture an event named 'Registered'\n * posthog.capture('Registered', {'Gender': 'Male', 'Age': 21});\n *\n * // capture an event using navigator.sendBeacon\n * posthog.capture('Left page', {'duration_seconds': 35}, {transport: 'sendBeacon'});\n *\n * @param {String} event_name The name of the event. This can be anything the user does - 'Button Click', 'Sign Up', 'Item Purchased', etc.\n * @param {Object} [properties] A set of properties to include with the event you're sending. These describe the user who did the event or details about the event itself.\n * @param {Object} [config] Optional configuration for this capture request.\n * @param {String} [config.transport] Transport method for network request ('XHR' or 'sendBeacon').\n * @param {Date} [config.timestamp] Timestamp is a Date object. If not set, it'll automatically be set to the current time.\n */\n capture(\n event_name: EventName,\n properties?: Properties | null,\n options?: CaptureOptions\n ): CaptureResult | undefined {\n // While developing, a developer might purposefully _not_ call init(),\n // in this case, we would like capture to be a noop.\n if (!this.__loaded || !this.persistence || !this.sessionPersistence || !this._requestQueue) {\n logger.uninitializedWarning('posthog.capture')\n return\n }\n\n if (this.consent.isOptedOut()) {\n return\n }\n\n // typing doesn't prevent interesting data\n if (isUndefined(event_name) || !isString(event_name)) {\n logger.error('No event name provided to posthog.capture')\n return\n }\n\n if (!this.config.opt_out_useragent_filter && this._is_bot()) {\n return\n }\n\n const clientRateLimitContext = !options?.skip_client_rate_limiting\n ? this.rateLimiter.clientRateLimitContext()\n : undefined\n\n if (clientRateLimitContext?.isRateLimited) {\n logger.critical('This capture call is ignored due to client rate limiting.')\n return\n }\n\n // update persistence\n this.sessionPersistence.update_search_keyword()\n\n // The initial campaign/referrer props need to be stored in the regular persistence, as they are there to mimic\n // the person-initial props. The non-initial versions are stored in the sessionPersistence, as they are sent\n // with every event and used by the session table to create session-initial props.\n if (this.config.save_campaign_params) {\n this.sessionPersistence.update_campaign_params()\n }\n if (this.config.save_referrer) {\n this.sessionPersistence.update_referrer_info()\n }\n\n if (this.config.save_campaign_params || this.config.save_referrer) {\n this.persistence.set_initial_person_info()\n }\n\n const systemTime = new Date()\n const timestamp = options?.timestamp || systemTime\n\n const uuid = uuidv7()\n let data: CaptureResult = {\n uuid,\n event: event_name,\n properties: this._calculate_event_properties(event_name, properties || {}, timestamp, uuid),\n }\n\n if (clientRateLimitContext) {\n data.properties['$lib_rate_limit_remaining_tokens'] = clientRateLimitContext.remainingTokens\n }\n\n const setProperties = options?.$set\n if (setProperties) {\n data.$set = options?.$set\n }\n const setOnceProperties = this._calculate_set_once_properties(options?.$set_once)\n if (setOnceProperties) {\n data.$set_once = setOnceProperties\n }\n\n data = _copyAndTruncateStrings(data, options?._noTruncate ? null : this.config.properties_string_max_length)\n data.timestamp = timestamp\n if (!isUndefined(options?.timestamp)) {\n data.properties['$event_time_override_provided'] = true\n data.properties['$event_time_override_system_time'] = systemTime\n }\n\n // Top-level $set overriding values from the one from properties is taken from the plugin-server normalizeEvent\n // This doesn't handle $set_once, because posthog-people doesn't either\n const finalSet = { ...data.properties['$set'], ...data['$set'] }\n if (!isEmptyObject(finalSet)) {\n this.setPersonPropertiesForFlags(finalSet)\n }\n\n if (!isNullish(this.config.before_send)) {\n const beforeSendResult = this._runBeforeSend(data)\n if (!beforeSendResult) {\n return\n } else {\n data = beforeSendResult\n }\n }\n\n this._internalEventEmitter.emit('eventCaptured', data)\n\n const requestOptions: QueuedRequestWithOptions = {\n method: 'POST',\n url: options?._url ?? this.requestRouter.endpointFor('api', this.analyticsDefaultEndpoint),\n data,\n compression: 'best-available',\n batchKey: options?._batchKey,\n }\n\n if (this.config.request_batching && (!options || options?._batchKey) && !options?.send_instantly) {\n this._requestQueue.enqueue(requestOptions)\n } else {\n this._send_retriable_request(requestOptions)\n }\n\n return data\n }\n\n _addCaptureHook(callback: (eventName: string, eventPayload?: CaptureResult) => void): () => void {\n return this.on('eventCaptured', (data) => callback(data.event, data))\n }\n\n _calculate_event_properties(\n event_name: string,\n event_properties: Properties,\n timestamp?: Date,\n uuid?: string\n ): Properties {\n timestamp = timestamp || new Date()\n if (!this.persistence || !this.sessionPersistence) {\n return event_properties\n }\n\n // set defaults\n const startTimestamp = this.persistence.remove_event_timer(event_name)\n let properties = { ...event_properties }\n properties['token'] = this.config.token\n\n if (this.config.__preview_experimental_cookieless_mode) {\n // Set a flag to tell the plugin server to use cookieless server hash mode\n properties[COOKIELESS_MODE_FLAG_PROPERTY] = true\n }\n\n if (event_name === '$snapshot') {\n const persistenceProps = { ...this.persistence.properties(), ...this.sessionPersistence.properties() }\n properties['distinct_id'] = persistenceProps.distinct_id\n if (\n // we spotted one customer that was managing to send `false` for ~9k events a day\n !(isString(properties['distinct_id']) || isNumber(properties['distinct_id'])) ||\n isEmptyString(properties['distinct_id'])\n ) {\n logger.error('Invalid distinct_id for replay event. This indicates a bug in your implementation')\n }\n return properties\n }\n\n const infoProperties = Info.properties({\n maskPersonalDataProperties: this.config.mask_personal_data_properties,\n customPersonalDataProperties: this.config.custom_personal_data_properties,\n })\n\n if (this.sessionManager) {\n const { sessionId, windowId } = this.sessionManager.checkAndGetSessionAndWindowId()\n properties['$session_id'] = sessionId\n properties['$window_id'] = windowId\n }\n\n try {\n if (this.sessionRecording) {\n properties['$recording_status'] = this.sessionRecording.status\n properties['$sdk_debug_replay_internal_buffer_length'] = this.sessionRecording['buffer'].data.length\n properties['$sdk_debug_replay_internal_buffer_size'] = this.sessionRecording['buffer'].size\n }\n properties['$sdk_debug_retry_queue_size'] = this._retryQueue?.['queue']?.length\n } catch (e: any) {\n properties['$sdk_debug_error_capturing_properties'] = String(e)\n }\n\n if (this.requestRouter.region === RequestRouterRegion.CUSTOM) {\n properties['$lib_custom_api_host'] = this.config.api_host\n }\n\n let pageviewProperties: Record<string, any>\n if (event_name === '$pageview') {\n pageviewProperties = this.pageViewManager.doPageView(timestamp, uuid)\n } else if (event_name === '$pageleave') {\n pageviewProperties = this.pageViewManager.doPageLeave(timestamp)\n } else {\n pageviewProperties = this.pageViewManager.doEvent()\n }\n properties = extend(properties, pageviewProperties)\n\n if (event_name === '$pageview' && document) {\n properties['title'] = document.title\n }\n\n // set $duration if time_event was previously called for this event\n if (!isUndefined(startTimestamp)) {\n const duration_in_ms = timestamp.getTime() - startTimestamp\n properties['$duration'] = parseFloat((duration_in_ms / 1000).toFixed(3))\n }\n\n // this is only added when this.config.opt_out_useragent_filter is true,\n // or it would always add \"browser\"\n if (userAgent && this.config.opt_out_useragent_filter) {\n properties['$browser_type'] = this._is_bot() ? 'bot' : 'browser'\n }\n\n // note: extend writes to the first object, so lets make sure we\n // don't write to the persistence properties object and info\n // properties object by passing in a new object\n\n // update properties with pageview info and super-properties\n properties = extend(\n {},\n infoProperties,\n this.persistence.properties(),\n this.sessionPersistence.properties(),\n properties\n )\n\n properties['$is_identified'] = this._isIdentified()\n\n if (isArray(this.config.property_denylist)) {\n each(this.config.property_denylist, function (denylisted_prop) {\n delete properties[denylisted_prop]\n })\n } else {\n logger.error(\n 'Invalid value for property_denylist config: ' +\n this.config.property_denylist +\n ' or property_blacklist config: ' +\n this.config.property_blacklist\n )\n }\n\n const sanitize_properties = this.config.sanitize_properties\n if (sanitize_properties) {\n logger.error('sanitize_properties is deprecated. Use before_send instead')\n properties = sanitize_properties(properties, event_name)\n }\n\n // add person processing flag as very last step, so it cannot be overridden\n const hasPersonProcessing = this._hasPersonProcessing()\n properties['$process_person_profile'] = hasPersonProcessing\n // if the event has person processing, ensure that all future events will too, even if the setting changes\n if (hasPersonProcessing) {\n this._requirePersonProcessing('_calculate_event_properties')\n }\n\n return properties\n }\n\n /**\n * Add additional set_once properties to the event when creating a person profile. This allows us to create the\n * profile with mostly-accurate properties, despite earlier events not setting them. We do this by storing them in\n * persistence.\n * @param dataSetOnce\n */\n _calculate_set_once_properties(dataSetOnce?: Properties): Properties | undefined {\n if (!this.persistence || !this._hasPersonProcessing()) {\n return dataSetOnce\n }\n\n if (this._personProcessingSetOncePropertiesSent) {\n // We only need to send these properties once. Sending them with later events would be redundant and would\n // just require extra work on the server to process them.\n return dataSetOnce\n }\n // if we're an identified person, send initial params with every event\n const initialProps = this.persistence.get_initial_props()\n const sessionProps = this.sessionPropsManager?.getSetOnceInitialSessionPropsProps()\n let setOnceProperties = extend({}, initialProps, sessionProps || {}, dataSetOnce || {})\n const sanitize_properties = this.config.sanitize_properties\n if (sanitize_properties) {\n logger.error('sanitize_properties is deprecated. Use before_send instead')\n setOnceProperties = sanitize_properties(setOnceProperties, '$set_once')\n }\n this._personProcessingSetOncePropertiesSent = true\n if (isEmptyObject(setOnceProperties)) {\n return undefined\n }\n return setOnceProperties\n }\n\n /**\n * Register a set of super properties, which are included with all\n * events. This will overwrite previous super property values, except\n * for session properties (see `register_for_session(properties)`).\n *\n * ### Usage:\n *\n * // register 'Gender' as a super property\n * posthog.register({'Gender': 'Female'});\n *\n * // register several super properties when a user signs up\n * posthog.register({\n * 'Email': 'jdoe@example.com',\n * 'Account Type': 'Free'\n * });\n *\n * // Display the properties\n * console.log(posthog.persistence.properties())\n *\n * @param {Object} properties properties to store about the user\n * @param {Number} [days] How many days since the user's last visit to store the super properties\n */\n register(properties: Properties, days?: number): void {\n this.persistence?.register(properties, days)\n }\n\n /**\n * Register a set of super properties only once. These will not\n * overwrite previous super property values, unlike register().\n *\n * ### Usage:\n *\n * // register a super property for the first time only\n * posthog.register_once({\n * 'First Login Date': new Date().toISOString()\n * });\n *\n * // Display the properties\n * console.log(posthog.persistence.properties())\n *\n * ### Notes:\n *\n * If default_value is specified, current super properties\n * with that value will be overwritten.\n *\n * @param {Object} properties An associative array of properties to store about the user\n * @param {*} [default_value] Value to override if already set in super properties (ex: 'False') Default: 'None'\n * @param {Number} [days] How many days since the users last visit to store the super properties\n */\n register_once(properties: Properties, default_value?: Property, days?: number): void {\n this.persistence?.register_once(properties, default_value, days)\n }\n\n /**\n * Register a set of super properties, which are included with all events, but only\n * for THIS SESSION. These will overwrite all other super property values.\n *\n * Unlike regular super properties, which last in LocalStorage for a long time,\n * session super properties get cleared after a session ends.\n *\n * ### Usage:\n *\n * // register on all events this session\n * posthog.register_for_session({'referer': customGetReferer()});\n *\n * // register several session super properties when a user signs up\n * posthog.register_for_session({\n * 'selectedPlan': 'pro',\n * 'completedSteps': 4,\n * });\n *\n * // Display the properties\n * console.log(posthog.sessionPersistence.properties())\n *\n * @param {Object} properties An associative array of properties to store about the user\n */\n register_for_session(properties: Properties): void {\n this.sessionPersistence?.register(properties)\n }\n\n /**\n * Delete a super property stored with the current user.\n *\n * @param {String} property The name of the super property to remove\n */\n unregister(property: string): void {\n this.persistence?.unregister(property)\n }\n\n /**\n * Delete a session super property stored with the current user.\n *\n * @param {String} property The name of the session super property to remove\n */\n unregister_for_session(property: string): void {\n this.sessionPersistence?.unregister(property)\n }\n\n _register_single(prop: string, value: Property) {\n this.register({ [prop]: value })\n }\n\n /*\n * Get feature flag value for user (supports multivariate flags).\n *\n * ### Usage:\n *\n * if(posthog.getFeatureFlag('beta-feature') === 'some-value') { // do something }\n *\n * @param {Object|String} prop Key of the feature flag.\n * @param {Object|String} options (optional) If {send_event: false}, we won't send an $feature_flag_call event to PostHog.\n */\n getFeatureFlag(key: string, options?: { send_event?: boolean }): boolean | string | undefined {\n return this.featureFlags.getFeatureFlag(key, options)\n }\n\n /*\n * Get feature flag payload value matching key for user (supports multivariate flags).\n *\n * ### Usage:\n *\n * if(posthog.getFeatureFlag('beta-feature') === 'some-value') {\n * const someValue = posthog.getFeatureFlagPayload('beta-feature')\n * // do something\n * }\n *\n * @param {Object|String} prop Key of the feature flag.\n */\n getFeatureFlagPayload(key: string): JsonType {\n const payload = this.featureFlags.getFeatureFlagPayload(key)\n try {\n return JSON.parse(payload as any)\n } catch {\n return payload\n }\n }\n\n /*\n * See if feature flag is enabled for user.\n *\n * ### Usage:\n *\n * if(posthog.isFeatureEnabled('beta-feature')) { // do something }\n *\n * @param {Object|String} prop Key of the feature flag.\n * @param {Object|String} options (optional) If {send_event: false}, we won't send an $feature_flag_call event to PostHog.\n */\n isFeatureEnabled(key: string, options?: { send_event: boolean }): boolean | undefined {\n return this.featureFlags.isFeatureEnabled(key, options)\n }\n\n reloadFeatureFlags(): void {\n this.featureFlags.reloadFeatureFlags()\n }\n\n /** Opt the user in or out of an early access feature. */\n updateEarlyAccessFeatureEnrollment(key: string, isEnrolled: boolean): void {\n this.featureFlags.updateEarlyAccessFeatureEnrollment(key, isEnrolled)\n }\n\n /** Get the list of early access features. To check enrollment status, use `isFeatureEnabled`. */\n getEarlyAccessFeatures(callback: EarlyAccessFeatureCallback, force_reload = false): void {\n return this.featureFlags.getEarlyAccessFeatures(callback, force_reload)\n }\n\n /**\n * Exposes a set of events that PostHog will emit.\n * e.g. `eventCaptured` is emitted immediately before trying to send an event\n *\n * Unlike `onFeatureFlags` and `onSessionId` these are not called when the\n * listener is registered, the first callback will be the next event\n * _after_ registering a listener\n */\n on(event: 'eventCaptured', cb: (...args: any[]) => void): () => void {\n return this._internalEventEmitter.on(event, cb)\n }\n\n /*\n * Register an event listener that runs when feature flags become available or when they change.\n * If there are flags, the listener is called immediately in addition to being called on future changes.\n * Note that this is not called only when we fetch feature flags from the server, but also when they change in the browser.\n *\n * ### Usage:\n *\n * posthog.onFeatureFlags(function(featureFlags, featureFlagsVariants, { errorsLoading }) { // do something })\n *\n * @param {Function} [callback] The callback function will be called once the feature flags are ready or when they are updated.\n * It'll return a list of feature flags enabled for the user, the variants,\n * and also a context object indicating whether we succeeded to fetch the flags or not.\n * @returns {Function} A function that can be called to unsubscribe the listener. Used by useEffect when the component unmounts.\n */\n onFeatureFlags(callback: FeatureFlagsCallback): () => void {\n return this.featureFlags.onFeatureFlags(callback)\n }\n\n /*\n * Register an event listener that runs whenever the session id or window id change.\n * If there is already a session id, the listener is called immediately in addition to being called on future changes.\n *\n * Can be used, for example, to sync the PostHog session id with a backend session.\n *\n * ### Usage:\n *\n * posthog.onSessionId(function(sessionId, windowId) { // do something })\n *\n * @param {Function} [callback] The callback function will be called once a session id is present or when it or the window id are updated.\n * @returns {Function} A function that can be called to unsubscribe the listener. E.g. Used by useEffect when the component unmounts.\n */\n onSessionId(callback: SessionIdChangedCallback): () => void {\n return this.sessionManager?.onSessionId(callback) ?? (() => {})\n }\n\n /** Get list of all surveys. */\n getSurveys(callback: SurveyCallback, forceReload = false): void {\n this.surveys.getSurveys(callback, forceReload)\n }\n\n /** Get surveys that should be enabled for the current user. */\n getActiveMatchingSurveys(callback: SurveyCallback, forceReload = false): void {\n this.surveys.getActiveMatchingSurveys(callback, forceReload)\n }\n\n /** Render a survey on a specific element. */\n renderSurvey(surveyId: string, selector: string): void {\n this.surveys.renderSurvey(surveyId, selector)\n }\n\n /** Checks the feature flags associated with this Survey to see if the survey can be rendered. */\n canRenderSurvey(surveyId: string): void {\n this.surveys.canRenderSurvey(surveyId)\n }\n\n /**\n * Identify a user with a unique ID instead of a PostHog\n * randomly generated distinct_id. If the method is never called,\n * then unique visitors will be identified by a UUID that is generated\n * the first time they visit the site.\n *\n * If user properties are passed, they are also sent to posthog.\n *\n * ### Usage:\n *\n * posthog.identify('[user unique id]')\n * posthog.identify('[user unique id]', { email: 'john@example.com' })\n * posthog.identify('[user unique id]', {}, { referral_code: '12345' })\n *\n * ### Notes:\n *\n * You can call this function to overwrite a previously set\n * unique ID for the current user.\n *\n * If the user has been identified ($user_state in persistence is set to 'identified'),\n * then capture of $identify is skipped to avoid merging users. For example,\n * if your system allows an admin user to impersonate another user.\n *\n * Then a single browser instance can have:\n *\n * `identify('a') -> capture(1) -> identify('b') -> capture(2)`\n *\n * and capture 1 and capture 2 will have the correct distinct_id.\n * but users a and b will NOT be merged in posthog.\n *\n * However, if reset is called then:\n *\n * `identify('a') -> capture(1) -> reset() -> capture(2) -> identify('b') -> capture(3)`\n *\n * users a and b are not merged.\n * Capture 1 is associated with user a.\n * A new distinct id is generated for capture 2.\n * which is merged with user b.\n * So, capture 2 and 3 are associated with user b.\n *\n * If you want to merge two identified users, you can call posthog.alias\n *\n * @param {String} [new_distinct_id] A string that uniquely identifies a user. If not provided, the distinct_id currently in the persistent store (cookie or localStorage) will be used.\n * @param {Object} [userPropertiesToSet] Optional: An associative array of properties to store about the user. Note: For feature flag evaluations, if the same key is present in the userPropertiesToSetOnce,\n * it will be overwritten by the value in userPropertiesToSet.\n * @param {Object} [userPropertiesToSetOnce] Optional: An associative array of properties to store about the user. If property is previously set, this does not override that value.\n */\n identify(new_distinct_id?: string, userPropertiesToSet?: Properties, userPropertiesToSetOnce?: Properties): void {\n if (!this.__loaded || !this.persistence) {\n return logger.uninitializedWarning('posthog.identify')\n }\n if (isNumber(new_distinct_id)) {\n new_distinct_id = (new_distinct_id as number).toString()\n logger.warn(\n 'The first argument to posthog.identify was a number, but it should be a string. It has been converted to a string.'\n )\n }\n\n //if the new_distinct_id has not been set ignore the identify event\n if (!new_distinct_id) {\n logger.error('Unique user id has not been set in posthog.identify')\n return\n }\n\n if (isDistinctIdStringLike(new_distinct_id)) {\n logger.critical(\n `The string \"${new_distinct_id}\" was set in posthog.identify which indicates an error. This ID should be unique to the user and not a hardcoded string.`\n )\n return\n }\n\n if (!this._requirePersonProcessing('posthog.identify')) {\n return\n }\n\n const previous_distinct_id = this.get_distinct_id()\n this.register({ $user_id: new_distinct_id })\n\n if (!this.get_property('$device_id')) {\n // The persisted distinct id might not actually be a device id at all\n // it might be a distinct id of the user from before\n const device_id = previous_distinct_id\n this.register_once(\n {\n $had_persisted_distinct_id: true,\n $device_id: device_id,\n },\n ''\n )\n }\n\n // if the previous distinct id had an alias stored, then we clear it\n if (new_distinct_id !== previous_distinct_id && new_distinct_id !== this.get_property(ALIAS_ID_KEY)) {\n this.unregister(ALIAS_ID_KEY)\n this.register({ distinct_id: new_distinct_id })\n }\n\n const isKnownAnonymous = (this.persistence.get_property(USER_STATE) || 'anonymous') === 'anonymous'\n\n // send an $identify event any time the distinct_id is changing and the old ID is an anonymous ID\n // - logic on the server will determine whether or not to do anything with it.\n if (new_distinct_id !== previous_distinct_id && isKnownAnonymous) {\n this.persistence.set_property(USER_STATE, 'identified')\n\n // Update current user properties\n this.setPersonPropertiesForFlags(\n { ...(userPropertiesToSetOnce || {}), ...(userPropertiesToSet || {}) },\n false\n )\n\n this.capture(\n '$identify',\n {\n distinct_id: new_distinct_id,\n $anon_distinct_id: previous_distinct_id,\n },\n { $set: userPropertiesToSet || {}, $set_once: userPropertiesToSetOnce || {} }\n )\n // let the reload feature flag request know to send this previous distinct id\n // for flag consistency\n this.featureFlags.setAnonymousDistinctId(previous_distinct_id)\n\n this._cachedIdentify = getIdentifyHash(new_distinct_id, userPropertiesToSet, userPropertiesToSetOnce)\n } else if (userPropertiesToSet || userPropertiesToSetOnce) {\n // If the distinct_id is not changing, but we have user properties to set, we can check if they have changed\n // and if so, send a $set event\n\n if (\n this._cachedIdentify !== getIdentifyHash(new_distinct_id, userPropertiesToSet, userPropertiesToSetOnce)\n ) {\n this.setPersonProperties(userPropertiesToSet, userPropertiesToSetOnce)\n\n this._cachedIdentify = getIdentifyHash(new_distinct_id, userPropertiesToSet, userPropertiesToSetOnce)\n } else {\n logger.info('A duplicate posthog.identify call was made with the same properties. It has been ignored.')\n }\n }\n\n // Reload active feature flags if the user identity changes.\n // Note we don't reload this on property changes as these get processed async\n if (new_distinct_id !== previous_distinct_id) {\n this.reloadFeatureFlags()\n // also clear any stored flag calls\n this.unregister(FLAG_CALL_REPORTED)\n }\n }\n\n /**\n * Sets properties for the Person associated with the current distinct_id. If config.person_profiles is set to\n * identified_only, and a Person profile has not been created yet, this will create one.\n *\n *\n * @param {Object} [userPropertiesToSet] Optional: An associative array of properties to store about the user. Note: For feature flag evaluations, if the same key is present in the userPropertiesToSetOnce,\n * it will be overwritten by the value in userPropertiesToSet.\n * @param {Object} [userPropertiesToSetOnce] Optional: An associative array of properties to store about the user. If property is previously set, this does not override that value.\n */\n setPersonProperties(userPropertiesToSet?: Properties, userPropertiesToSetOnce?: Properties): void {\n if (!userPropertiesToSet && !userPropertiesToSetOnce) {\n return\n }\n\n if (!this._requirePersonProcessing('posthog.setPersonProperties')) {\n return\n }\n\n // Update current user properties\n this.setPersonPropertiesForFlags({ ...(userPropertiesToSetOnce || {}), ...(userPropertiesToSet || {}) })\n\n // if exactly this $set call has been sent before, don't send it again - determine based on hash of properties\n\n this.capture('$set', { $set: userPropertiesToSet || {}, $set_once: userPropertiesToSetOnce || {} })\n }\n\n /**\n * Sets group analytics information for subsequent events and reloads feature flags.\n *\n * @param {String} groupType Group type (example: 'organization')\n * @param {String} groupKey Group key (example: 'org::5')\n * @param {Object} groupPropertiesToSet Optional properties to set for group\n */\n group(groupType: string, groupKey: string, groupPropertiesToSet?: Properties): void {\n if (!groupType || !groupKey) {\n logger.error('posthog.group requires a group type and group key')\n return\n }\n\n if (!this._requirePersonProcessing('posthog.group')) {\n return\n }\n\n const existingGroups = this.getGroups()\n\n // if group key changes, remove stored group properties\n if (existingGroups[groupType] !== groupKey) {\n this.resetGroupPropertiesForFlags(groupType)\n }\n\n this.register({ $groups: { ...existingGroups, [groupType]: groupKey } })\n\n if (groupPropertiesToSet) {\n this.capture('$groupidentify', {\n $group_type: groupType,\n $group_key: groupKey,\n $group_set: groupPropertiesToSet,\n })\n this.setGroupPropertiesForFlags({ [groupType]: groupPropertiesToSet })\n }\n\n // If groups change and no properties change, reload feature flags.\n // The property change reload case is handled in setGroupPropertiesForFlags.\n if (existingGroups[groupType] !== groupKey && !groupPropertiesToSet) {\n this.reloadFeatureFlags()\n }\n }\n\n /**\n * Resets only the group properties of the user currently logged in.\n */\n resetGroups(): void {\n this.register({ $groups: {} })\n this.resetGroupPropertiesForFlags()\n\n // If groups changed, reload feature flags.\n this.reloadFeatureFlags()\n }\n\n /**\n * Set override person properties for feature flags.\n * This is used when dealing with new persons / where you don't want to wait for ingestion\n * to update user properties.\n */\n setPersonPropertiesForFlags(properties: Properties, reloadFeatureFlags = true): void {\n this.featureFlags.setPersonPropertiesForFlags(properties, reloadFeatureFlags)\n }\n\n resetPersonPropertiesForFlags(): void {\n this.featureFlags.resetPersonPropertiesForFlags()\n }\n\n /**\n * Set override group properties for feature flags.\n * This is used when dealing with new groups / where you don't want to wait for ingestion\n * to update properties.\n * Takes in an object, the key of which is the group type.\n * For example:\n * setGroupPropertiesForFlags({'organization': { name: 'CYZ', employees: '11' } })\n */\n setGroupPropertiesForFlags(properties: { [type: string]: Properties }, reloadFeatureFlags = true): void {\n if (!this._requirePersonProcessing('posthog.setGroupPropertiesForFlags')) {\n return\n }\n this.featureFlags.setGroupPropertiesForFlags(properties, reloadFeatureFlags)\n }\n\n resetGroupPropertiesForFlags(group_type?: string): void {\n this.featureFlags.resetGroupPropertiesForFlags(group_type)\n }\n\n /**\n * NB reset is normally only called when a user logs out\n * calling reset at the wrong time can lead to unexpected results\n * like split sessions\n *\n * Resets all info.\n * For example: session id, super properties, sets a random distinct_id and more.\n */\n reset(reset_device_id?: boolean): void {\n logger.info('reset')\n if (!this.__loaded) {\n return logger.uninitializedWarning('posthog.reset')\n }\n const device_id = this.get_property('$device_id')\n this.consent.reset()\n this.persistence?.clear()\n this.sessionPersistence?.clear()\n this.surveys.reset()\n this.persistence?.set_property(USER_STATE, 'anonymous')\n this.sessionManager?.resetSessionId()\n this._cachedIdentify = null\n if (this.config.__preview_experimental_cookieless_mode) {\n this.register_once(\n {\n distinct_id: COOKIELESS_SENTINEL_VALUE,\n $device_id: null,\n },\n ''\n )\n } else {\n const uuid = this.config.get_device_id(uuidv7())\n this.register_once(\n {\n distinct_id: uuid,\n $device_id: reset_device_id ? uuid : device_id,\n },\n ''\n )\n }\n\n this.register(\n {\n $last_posthog_reset: new Date().toISOString(),\n },\n 1\n )\n }\n\n /**\n * Returns the current distinct id of the user. This is either the id automatically\n * generated by the library or the id that has been passed by a call to identify().\n *\n * ### Notes:\n *\n * get_distinct_id() can only be called after the PostHog library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // set distinct_id after the posthog library has loaded\n * posthog.init('YOUR PROJECT TOKEN', {\n * loaded: function(posthog) {\n * distinct_id = posthog.get_distinct_id();\n * }\n * });\n */\n get_distinct_id(): string {\n return this.get_property('distinct_id')\n }\n\n getGroups(): Record<string, any> {\n return this.get_property('$groups') || {}\n }\n\n /**\n * Returns the current session_id.\n *\n * NOTE: This should only be used for informative purposes.\n * Any actual internal use case for the session_id should be handled by the sessionManager.\n */\n\n get_session_id(): string {\n return this.sessionManager?.checkAndGetSessionAndWindowId(true).sessionId ?? ''\n }\n\n /**\n * Returns the Replay url for the current session.\n *\n * @param options Options for the url\n * @param options.withTimestamp Whether to include the timestamp in the url (defaults to false)\n * @param options.timestampLookBack How many seconds to look back for the timestamp (defaults to 10)\n */\n get_session_replay_url(options?: { withTimestamp?: boolean; timestampLookBack?: number }): string {\n if (!this.sessionManager) {\n return ''\n }\n const { sessionId, sessionStartTimestamp } = this.sessionManager.checkAndGetSessionAndWindowId(true)\n let url = this.requestRouter.endpointFor('ui', `/project/${this.config.token}/replay/${sessionId}`)\n if (options?.withTimestamp && sessionStartTimestamp) {\n const LOOK_BACK = options.timestampLookBack ?? 10\n if (!sessionStartTimestamp) {\n return url\n }\n const recordingStartTime = Math.max(\n Math.floor((new Date().getTime() - sessionStartTimestamp) / 1000) - LOOK_BACK,\n 0\n )\n url += `?t=${recordingStartTime}`\n }\n\n return url\n }\n\n /**\n * Create an alias, which PostHog will use to link two distinct_ids going forward (not retroactively).\n * Multiple aliases can map to the same original ID, but not vice-versa. Aliases can also be chained - the\n * following is a valid scenario:\n *\n * posthog.alias('new_id', 'existing_id');\n * ...\n * posthog.alias('newer_id', 'new_id');\n *\n * If the original ID is not passed in, we will use the current distinct_id - probably the auto-generated GUID.\n *\n * ### Notes:\n *\n * The best practice is to call alias() when a unique ID is first created for a user\n * (e.g., when a user first registers for an account and provides an email address).\n * alias() should never be called more than once for a given user, except to\n * chain a newer ID to a previously new ID, as described above.\n *\n * @param {String} alias A unique identifier that you want to use for this user in the future.\n * @param {String} [original] The current identifier being used for this user.\n */\n alias(alias: string, original?: string): CaptureResult | void | number {\n // If the $people_distinct_id key exists in persistence, there has been a previous\n // posthog.people.identify() call made for this user. It is VERY BAD to make an alias with\n // this ID, as it will duplicate users.\n if (alias === this.get_property(PEOPLE_DISTINCT_ID_KEY)) {\n logger.critical('Attempting to create alias for existing People user - aborting.')\n return -2\n }\n if (!this._requirePersonProcessing('posthog.alias')) {\n return\n }\n\n if (isUndefined(original)) {\n original = this.get_distinct_id()\n }\n if (alias !== original) {\n this._register_single(ALIAS_ID_KEY, alias)\n return this.capture('$create_alias', { alias: alias, distinct_id: original })\n } else {\n logger.warn('alias matches current distinct_id - skipping api call.')\n this.identify(alias)\n return -1\n }\n }\n\n /**\n * Update the configuration of a posthog library instance.\n *\n * @param {Partial<PostHogConfig>} config A dictionary of new configuration values to update\n */\n set_config(config: Partial<PostHogConfig>): void {\n const oldConfig = { ...this.config }\n if (isObject(config)) {\n extend(this.config, configRenames(config))\n\n this.persistence?.update_config(this.config, oldConfig)\n this.sessionPersistence =\n this.config.persistence === 'sessionStorage' || this.config.persistence === 'memory'\n ? this.persistence\n : new PostHogPersistence({ ...this.config, persistence: 'sessionStorage' })\n\n if (localStore.is_supported() && localStore.get('ph_debug') === 'true') {\n this.config.debug = true\n }\n if (this.config.debug) {\n Config.DEBUG = true\n logger.info('set_config', {\n config,\n oldConfig,\n newConfig: { ...this.config },\n })\n }\n\n this.sessionRecording?.startIfEnabledOrStop()\n this.autocapture?.startIfEnabled()\n this.heatmaps?.startIfEnabled()\n this.surveys.loadIfEnabled()\n this._sync_opt_out_with_persistence()\n }\n }\n\n /**\n * turns session recording on, and updates the config option `disable_session_recording` to false\n * @param override.sampling - optional boolean to override the default sampling behavior - ensures the next session recording to start will not be skipped by sampling config.\n * @param override.linked_flag - optional boolean to override the default linked_flag behavior - ensures the next session recording to start will not be skipped by linked_flag config.\n * @param override.url_trigger - optional boolean to override the default url_trigger behavior - ensures the next session recording to start will not be skipped by url_trigger config.\n * @param override.event_trigger - optional boolean to override the default event_trigger behavior - ensures the next session recording to start will not be skipped by event_trigger config.\n * @param override - optional boolean to override the default sampling behavior - ensures the next session recording to start will not be skipped by sampling or linked_flag config. `true` is shorthand for { sampling: true, linked_flag: true }\n */\n startSessionRecording(\n override?: { sampling?: boolean; linked_flag?: boolean; url_trigger?: true; event_trigger?: true } | true\n ): void {\n const overrideAll = override === true\n const overrideConfig = {\n sampling: overrideAll || !!override?.sampling,\n linked_flag: overrideAll || !!override?.linked_flag,\n url_trigger: overrideAll || !!override?.url_trigger,\n event_trigger: overrideAll || !!override?.event_trigger,\n }\n\n if (Object.values(overrideConfig).some(Boolean)) {\n // allow the session id check to rotate session id if necessary\n this.sessionManager?.checkAndGetSessionAndWindowId()\n\n if (overrideConfig.sampling) {\n this.sessionRecording?.overrideSampling()\n }\n\n if (overrideConfig.linked_flag) {\n this.sessionRecording?.overrideLinkedFlag()\n }\n\n if (overrideConfig.url_trigger) {\n this.sessionRecording?.overrideTrigger('url')\n }\n\n if (overrideConfig.event_trigger) {\n this.sessionRecording?.overrideTrigger('event')\n }\n }\n\n this.set_config({ disable_session_recording: false })\n }\n\n /**\n * turns session recording off, and updates the config option\n * disable_session_recording to true\n */\n stopSessionRecording(): void {\n this.set_config({ disable_session_recording: true })\n }\n\n /**\n * returns a boolean indicating whether session recording\n * is currently running\n */\n sessionRecordingStarted(): boolean {\n return !!this.sessionRecording?.started\n }\n\n /** Capture a caught exception manually */\n captureException(error: unknown, additionalProperties?: Properties): void {\n const syntheticException = new Error('PostHog syntheticException')\n const properties: Properties = isFunction(assignableWindow.__PosthogExtensions__?.parseErrorAsProperties)\n ? {\n ...assignableWindow.__PosthogExtensions__.parseErrorAsProperties(\n isError(error) ? { error, event: error.message } : { event: error as Event | string },\n // create synthetic error to get stack in cases where user input does not contain one\n // creating the exceptions soon into our code as possible means we should only have to\n // remove a single frame (this 'captureException' method) from the resultant stack\n { syntheticException }\n ),\n ...additionalProperties,\n }\n : {\n $exception_level: 'error',\n $exception_list: [\n {\n type: isError(error) ? error.name : 'Error',\n value: isError(error) ? error.message : error,\n mechanism: {\n handled: true,\n synthetic: false,\n },\n },\n ],\n ...additionalProperties,\n }\n\n this.exceptions.sendExceptionEvent(properties)\n }\n\n /**\n * returns a boolean indicating whether the toolbar loaded\n * @param toolbarParams\n */\n\n loadToolbar(params: ToolbarParams): boolean {\n return this.toolbar.loadToolbar(params)\n }\n\n /**\n * Returns the value of the super property named property_name. If no such\n * property is set, get_property() will return the undefined value.\n *\n * ### Notes:\n *\n * get_property() can only be called after the PostHog library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // grab value for '$user_id' after the posthog library has loaded\n * posthog.init('YOUR PROJECT TOKEN', {\n * loaded: function(posthog) {\n * user_id = posthog.get_property('$user_id');\n * }\n * });\n *\n * @param {String} property_name The name of the super property you want to retrieve\n */\n get_property(property_name: string): Property | undefined {\n return this.persistence?.props[property_name]\n }\n\n /**\n * Returns the value of the session super property named property_name. If no such\n * property is set, getSessionProperty() will return the undefined value.\n *\n * ### Notes:\n *\n * This is based on browser-level `sessionStorage`, NOT the PostHog session.\n * getSessionProperty() can only be called after the PostHog library has finished loading.\n * init() has a loaded function available to handle this automatically. For example:\n *\n * // grab value for 'user_id' after the posthog library has loaded\n * posthog.init('YOUR PROJECT TOKEN', {\n * loaded: function(posthog) {\n * user_id = posthog.getSessionProperty('user_id');\n * }\n * });\n *\n * @param {String} property_name The name of the session super property you want to retrieve\n */\n getSessionProperty(property_name: string): Property | undefined {\n return this.sessionPersistence?.props[property_name]\n }\n\n toString(): string {\n let name = this.config.name ?? PRIMARY_INSTANCE_NAME\n if (name !== PRIMARY_INSTANCE_NAME) {\n name = PRIMARY_INSTANCE_NAME + '.' + name\n }\n return name\n }\n\n _isIdentified(): boolean {\n return (\n this.persistence?.get_property(USER_STATE) === 'identified' ||\n this.sessionPersistence?.get_property(USER_STATE) === 'identified'\n )\n }\n\n _hasPersonProcessing(): boolean {\n return !(\n this.config.person_profiles === 'never' ||\n (this.config.person_profiles === 'identified_only' &&\n !this._isIdentified() &&\n isEmptyObject(this.getGroups()) &&\n !this.persistence?.props?.[ALIAS_ID_KEY] &&\n !this.persistence?.props?.[ENABLE_PERSON_PROCESSING])\n )\n }\n\n _shouldCapturePageleave(): boolean {\n return (\n this.config.capture_pageleave === true ||\n (this.config.capture_pageleave === 'if_capture_pageview' && this.config.capture_pageview)\n )\n }\n\n /**\n * Creates a person profile for the current user, if they don't already have one and config.person_profiles is set\n * to 'identified_only'. Produces a warning and does not create a profile if config.person_profiles is set to\n * 'never'.\n */\n createPersonProfile(): void {\n if (this._hasPersonProcessing()) {\n // if a person profile already exists, don't send an event when we don't need to\n return\n }\n if (!this._requirePersonProcessing('posthog.createPersonProfile')) {\n return\n }\n // sent a $set event. We don't set any properties here, but attribution props will be added later\n this.setPersonProperties({}, {})\n }\n\n /**\n * Enables person processing if possible, returns true if it does so or already enabled, false otherwise\n *\n * @param function_name\n */\n _requirePersonProcessing(function_name: string): boolean {\n if (this.config.person_profiles === 'never') {\n logger.error(\n function_name + ' was called, but process_person is set to \"never\". This call will be ignored.'\n )\n return false\n }\n this._register_single(ENABLE_PERSON_PROCESSING, true)\n return true\n }\n\n private _sync_opt_out_with_persistence(): void {\n const isOptedOut = this.consent.isOptedOut()\n const defaultPersistenceDisabled = this.config.opt_out_persistence_by_default\n\n // TRICKY: We want a deterministic state for persistence so that a new pageload has the same persistence\n const persistenceDisabled = this.config.disable_persistence || (isOptedOut && !!defaultPersistenceDisabled)\n\n if (this.persistence?.disabled !== persistenceDisabled) {\n this.persistence?.set_disabled(persistenceDisabled)\n }\n if (this.sessionPersistence?.disabled !== persistenceDisabled) {\n this.sessionPersistence?.set_disabled(persistenceDisabled)\n }\n }\n\n /**\n * Opt the user in to data capturing and cookies/localstorage for this PostHog instance\n * If the config.opt_out_persistence_by_default is set to false, the SDK persistence will be enabled.\n *\n * ### Usage\n *\n * // opt user in\n * posthog.opt_in_capturing();\n *\n * // opt user in with specific event name, properties, cookie configuration\n * posthog.opt_in_capturing({\n * capture_event_name: 'User opted in',\n * capture_event_properties: {\n * 'email': 'jdoe@example.com'\n * }\n * });\n *\n * @param {Object} [config] A dictionary of config options to override\n * @param {string} [config.capture_event_name=$opt_in] Event name to be used for capturing the opt-in action. Set to `null` or `false` to skip capturing the optin event\n * @param {Object} [config.capture_properties] Set of properties to be captured along with the opt-in action\n */\n opt_in_capturing(options?: {\n captureEventName?: EventName | null | false /** event name to be used for capturing the opt-in action */\n captureProperties?: Properties /** set of properties to be captured along with the opt-in action */\n }): void {\n this.consent.optInOut(true)\n this._sync_opt_out_with_persistence()\n\n // Don't capture if captureEventName is null or false\n if (isUndefined(options?.captureEventName) || options?.captureEventName) {\n this.capture(options?.captureEventName ?? '$opt_in', options?.captureProperties, { send_instantly: true })\n }\n\n if (this.config.capture_pageview) {\n this._captureInitialPageview()\n }\n }\n\n /**\n * Opt the user out of data capturing and cookies/localstorage for this PostHog instance.\n * If the config.opt_out_persistence_by_default is set to true, the SDK persistence will be disabled.\n *\n */\n opt_out_capturing(): void {\n this.consent.optInOut(false)\n this._sync_opt_out_with_persistence()\n }\n\n /**\n * Check whether the user has opted in to data capturing and cookies/localstorage for this PostHog instance\n *\n * @returns {boolean} current opt-in status\n */\n has_opted_in_capturing(): boolean {\n return this.consent.isOptedIn()\n }\n\n /**\n * Check whether the user has opted out of data capturing and cookies/localstorage for this PostHog instance\n *\n * @returns {boolean} current opt-out status\n */\n has_opted_out_capturing(): boolean {\n return this.consent.isOptedOut()\n }\n\n /**\n * Clear the user's opt in/out status of data capturing and cookies/localstorage for this PostHog instance\n */\n clear_opt_in_out_capturing(): void {\n this.consent.reset()\n this._sync_opt_out_with_persistence()\n }\n\n _is_bot(): boolean | undefined {\n if (navigator) {\n return isLikelyBot(navigator, this.config.custom_blocked_useragents)\n } else {\n return undefined\n }\n }\n\n _captureInitialPageview(): void {\n if (document && !this._initialPageviewCaptured) {\n this._initialPageviewCaptured = true\n this.capture('$pageview', { title: document.title }, { send_instantly: true })\n }\n }\n\n /**\n * Enables or disables debug mode.\n * You can also enable debug mode by appending `?__posthog_debug=true` to the URL\n *\n * @param {boolean} [debug] If true, will enable debug mode.\n */\n debug(debug?: boolean): void {\n if (debug === false) {\n window?.console.log(\"You've disabled debug mode.\")\n localStorage && localStorage.removeItem('ph_debug')\n this.set_config({ debug: false })\n } else {\n window?.console.log(\n \"You're now in debug mode. All calls to PostHog will be logged in your console.\\nYou can disable this with `posthog.debug(false)`.\"\n )\n localStorage && localStorage.setItem('ph_debug', 'true')\n this.set_config({ debug: true })\n }\n }\n\n private _runBeforeSend(data: CaptureResult): CaptureResult | null {\n if (isNullish(this.config.before_send)) {\n return data\n }\n\n const fns = isArray(this.config.before_send) ? this.config.before_send : [this.config.before_send]\n let beforeSendResult: CaptureResult | null = data\n for (const fn of fns) {\n beforeSendResult = fn(beforeSendResult)\n if (isNullish(beforeSendResult)) {\n const logMessage = `Event '${data.event}' was rejected in beforeSend function`\n if (isKnownUnsafeEditableEvent(data.event)) {\n logger.warn(`${logMessage}. This can cause unexpected behavior.`)\n } else {\n logger.info(logMessage)\n }\n return null\n }\n if (!beforeSendResult.properties || isEmptyObject(beforeSendResult.properties)) {\n logger.warn(\n `Event '${data.event}' has no properties after beforeSend function, this is likely an error.`\n )\n }\n }\n return beforeSendResult\n }\n\n public getPageViewId(): string | undefined {\n return this.pageViewManager._currentPageview?.pageViewId\n }\n\n /**\n * Capture written user feedback for a LLM trace. Numeric values are converted to strings.\n * @param traceId The trace ID to capture feedback for.\n * @param userFeedback The feedback to capture.\n */\n captureTraceFeedback(traceId: string | number, userFeedback: string) {\n this.capture('$ai_feedback', {\n $ai_trace_id: String(traceId),\n $ai_feedback_text: userFeedback,\n })\n }\n\n /**\n * Capture a metric for a LLM trace. Numeric values are converted to strings.\n * @param traceId The trace ID to capture the metric for.\n * @param metricName The name of the metric to capture.\n * @param metricValue The value of the metric to capture.\n */\n captureTraceMetric(traceId: string | number, metricName: string, metricValue: string | number | boolean) {\n this.capture('$ai_metric', {\n $ai_trace_id: String(traceId),\n $ai_metric_name: metricName,\n $ai_metric_value: String(metricValue),\n })\n }\n}\n\nsafewrapClass(PostHog, ['identify'])\n\nconst add_dom_loaded_handler = function () {\n // Cross browser DOM Loaded support\n function dom_loaded_handler() {\n // function flag since we only want to execute this once\n if ((dom_loaded_handler as any).done) {\n return\n }\n ;(dom_loaded_handler as any).done = true\n\n ENQUEUE_REQUESTS = false\n\n each(instances, function (inst: PostHog) {\n inst._dom_loaded()\n })\n }\n\n if (document?.addEventListener) {\n if (document.readyState === 'complete') {\n // safari 4 can fire the DOMContentLoaded event before loading all\n // external JS (including this file). you will see some copypasta\n // on the internet that checks for 'complete' and 'loaded', but\n // 'loaded' is an IE thing\n dom_loaded_handler()\n } else {\n addEventListener(document, 'DOMContentLoaded', dom_loaded_handler, { capture: false })\n }\n\n return\n }\n\n // Only IE6-8 don't support `document.addEventListener` and we don't support them\n // so let's simply log an error stating PostHog couldn't be initialized\n // We're checking for `window` to avoid erroring out on a SSR context\n if (window) {\n logger.error(\"Browser doesn't support `document.addEventListener` so PostHog couldn't be initialized\")\n }\n}\n\nexport function init_from_snippet(): void {\n const posthogMain = (instances[PRIMARY_INSTANCE_NAME] = new PostHog())\n\n const snippetPostHog = assignableWindow['posthog']\n\n if (snippetPostHog) {\n /**\n * The snippet uses some clever tricks to allow deferred loading of array.js (this code)\n *\n * window.posthog is an array which the queue of calls made before the lib is loaded\n * It has methods attached to it to simulate the posthog object so for instance\n *\n * window.posthog.init(\"TOKEN\", {api_host: \"foo\" })\n * window.posthog.capture(\"my-event\", {foo: \"bar\" })\n *\n * ... will mean that window.posthog will look like this:\n * window.posthog == [\n * [\"my-event\", {foo: \"bar\"}]\n * ]\n *\n * window.posthog[_i] == [\n * [\"TOKEN\", {api_host: \"foo\" }, \"posthog\"]\n * ]\n *\n * If a name is given to the init function then the same as above is true but as a sub-property on the object:\n *\n * window.posthog.init(\"TOKEN\", {}, \"ph2\")\n * window.posthog.ph2.people.set({foo: \"bar\"})\n *\n * window.posthog.ph2 == []\n * window.posthog.people == [\n * [\"set\", {foo: \"bar\"}]\n * ]\n *\n */\n\n // Call all pre-loaded init calls properly\n\n each(snippetPostHog['_i'], function (item: [token: string, config: Partial<PostHogConfig>, name: string]) {\n if (item && isArray(item)) {\n const instance = posthogMain.init(item[0], item[1], item[2])\n\n const instanceSnippet = snippetPostHog[item[2]] || snippetPostHog\n\n if (instance) {\n // Crunch through the people queue first - we queue this data up &\n // flush on identify, so it's better to do all these operations first\n instance._execute_array.call(instance.people, instanceSnippet.people)\n instance._execute_array(instanceSnippet)\n }\n }\n })\n }\n\n assignableWindow['posthog'] = posthogMain\n\n add_dom_loaded_handler()\n}\n\nexport function init_as_module(): PostHog {\n const posthogMain = (instances[PRIMARY_INSTANCE_NAME] = new PostHog())\n\n add_dom_loaded_handler()\n\n return posthogMain\n}\n","import { init_as_module } from '../posthog-core'\nexport { PostHog } from '../posthog-core'\nexport * from '../types'\nexport * from '../posthog-surveys-types'\nexport const posthog = init_as_module()\nexport default posthog\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 * 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","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\nvar decodeComponent = require('decode-uri-component');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nfunction extract(str) {\n\tvar queryStart = str.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\treturn str.slice(queryStart + 1);\n}\n\nfunction parse(str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^[?#&]/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeComponent(val);\n\n\t\tformatter(decodeComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tif (opts.sort === false) {\n\t\topts.sort = function () {};\n\t}\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort(opts.sort).map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n\nexports.parseUrl = function (str, opts) {\n\treturn {\n\t\turl: str.split('?')[0] || '',\n\t\tquery: parse(extract(str), opts)\n\t};\n};\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"className\", \"style\", \"checked\", \"disabled\", \"defaultChecked\", \"type\", \"onChange\"];\nimport classNames from 'classnames';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport * as React from 'react';\nimport { forwardRef, useImperativeHandle, useRef } from 'react';\nexport var Checkbox = /*#__PURE__*/forwardRef(function (props, ref) {\n var _classNames;\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-checkbox' : _props$prefixCls,\n className = props.className,\n style = props.style,\n checked = props.checked,\n disabled = props.disabled,\n _props$defaultChecked = props.defaultChecked,\n defaultChecked = _props$defaultChecked === void 0 ? false : _props$defaultChecked,\n _props$type = props.type,\n type = _props$type === void 0 ? 'checkbox' : _props$type,\n onChange = props.onChange,\n inputProps = _objectWithoutProperties(props, _excluded);\n var inputRef = useRef(null);\n var _useMergedState = useMergedState(defaultChecked, {\n value: checked\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n rawValue = _useMergedState2[0],\n setRawValue = _useMergedState2[1];\n useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n var _inputRef$current;\n (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();\n },\n blur: function blur() {\n var _inputRef$current2;\n (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.blur();\n },\n input: inputRef.current\n };\n });\n var classString = classNames(prefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-checked\"), rawValue), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), disabled), _classNames));\n var handleChange = function handleChange(e) {\n if (disabled) {\n return;\n }\n if (!('checked' in props)) {\n setRawValue(e.target.checked);\n }\n onChange === null || onChange === void 0 ? void 0 : onChange({\n target: _objectSpread(_objectSpread({}, props), {}, {\n type: type,\n checked: e.target.checked\n }),\n stopPropagation: function stopPropagation() {\n e.stopPropagation();\n },\n preventDefault: function preventDefault() {\n e.preventDefault();\n },\n nativeEvent: e.nativeEvent\n });\n };\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classString,\n style: style\n }, /*#__PURE__*/React.createElement(\"input\", _extends({}, inputProps, {\n className: \"\".concat(prefixCls, \"-input\"),\n ref: inputRef,\n onChange: handleChange,\n disabled: disabled,\n checked: !!rawValue,\n type: type\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-inner\")\n }));\n});\nexport default Checkbox;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nfunction getUseId() {\n // We need fully clone React function here to avoid webpack warning React 17 do not export `useId`\n var fullClone = _objectSpread({}, React);\n return fullClone.useId;\n}\nvar uuid = 0;\n\n/** @private Note only worked in develop env. Not work in production. */\nexport function resetUuid() {\n if (process.env.NODE_ENV !== 'production') {\n uuid = 0;\n }\n}\nexport default function useId(id) {\n // Inner id for accessibility usage. Only work in client side\n var _React$useState = React.useState('ssr-id'),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerId = _React$useState2[0],\n setInnerId = _React$useState2[1];\n var useOriginId = getUseId();\n var reactNativeId = useOriginId === null || useOriginId === void 0 ? void 0 : useOriginId();\n React.useEffect(function () {\n if (!useOriginId) {\n var nextId = uuid;\n uuid += 1;\n setInnerId(\"rc_unique_\".concat(nextId));\n }\n }, []);\n\n // Developer passed id is single source of truth\n if (id) {\n return id;\n }\n\n // Test env always return mock id\n if (process.env.NODE_ENV === 'test') {\n return 'test-id';\n }\n\n // Return react native id or inner id\n return reactNativeId || innerId;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nexport default function Mask(props) {\n var prefixCls = props.prefixCls,\n style = props.style,\n visible = props.visible,\n maskProps = props.maskProps,\n motionName = props.motionName;\n return /*#__PURE__*/React.createElement(CSSMotion, {\n key: \"mask\",\n visible: visible,\n motionName: motionName,\n leavedClassName: \"\".concat(prefixCls, \"-mask-hidden\")\n }, function (_ref, ref) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n style: _objectSpread(_objectSpread({}, motionStyle), style),\n className: classNames(\"\".concat(prefixCls, \"-mask\"), motionClassName)\n }, maskProps));\n });\n}","// =============================== Motion ===============================\nexport function getMotionName(prefixCls, transitionName, animationName) {\n var motionName = transitionName;\n if (!motionName && animationName) {\n motionName = \"\".concat(prefixCls, \"-\").concat(animationName);\n }\n return motionName;\n}\n// =============================== Offset ===============================\nfunction getScroll(w, top) {\n var ret = w[\"page\".concat(top ? 'Y' : 'X', \"Offset\")];\n var method = \"scroll\".concat(top ? 'Top' : 'Left');\n if (typeof ret !== 'number') {\n var d = w.document;\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n ret = d.body[method];\n }\n }\n return ret;\n}\nexport function offset(el) {\n var rect = el.getBoundingClientRect();\n var pos = {\n left: rect.left,\n top: rect.top\n };\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScroll(w);\n pos.top += getScroll(w, true);\n return pos;\n}","import * as React from 'react';\nexport default /*#__PURE__*/React.memo(function (_ref) {\n var children = _ref.children;\n return children;\n}, function (_, _ref2) {\n var shouldUpdate = _ref2.shouldUpdate;\n return !shouldUpdate;\n});","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport MemoChildren from './MemoChildren';\nvar sentinelStyle = {\n width: 0,\n height: 0,\n overflow: 'hidden',\n outline: 'none'\n};\nvar Panel = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n title = props.title,\n ariaId = props.ariaId,\n footer = props.footer,\n closable = props.closable,\n closeIcon = props.closeIcon,\n onClose = props.onClose,\n children = props.children,\n bodyStyle = props.bodyStyle,\n bodyProps = props.bodyProps,\n modalRender = props.modalRender,\n onMouseDown = props.onMouseDown,\n onMouseUp = props.onMouseUp,\n holderRef = props.holderRef,\n visible = props.visible,\n forceRender = props.forceRender,\n width = props.width,\n height = props.height;\n // ================================= Refs =================================\n var sentinelStartRef = useRef();\n var sentinelEndRef = useRef();\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n var _sentinelStartRef$cur;\n (_sentinelStartRef$cur = sentinelStartRef.current) === null || _sentinelStartRef$cur === void 0 ? void 0 : _sentinelStartRef$cur.focus();\n },\n changeActive: function changeActive(next) {\n var _document = document,\n activeElement = _document.activeElement;\n if (next && activeElement === sentinelEndRef.current) {\n sentinelStartRef.current.focus();\n } else if (!next && activeElement === sentinelStartRef.current) {\n sentinelEndRef.current.focus();\n }\n }\n };\n });\n // ================================ Style =================================\n var contentStyle = {};\n if (width !== undefined) {\n contentStyle.width = width;\n }\n if (height !== undefined) {\n contentStyle.height = height;\n }\n // ================================ Render ================================\n var footerNode;\n if (footer) {\n footerNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-footer\")\n }, footer);\n }\n var headerNode;\n if (title) {\n headerNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-header\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-title\"),\n id: ariaId\n }, title));\n }\n var closer;\n if (closable) {\n closer = /*#__PURE__*/React.createElement(\"button\", {\n type: \"button\",\n onClick: onClose,\n \"aria-label\": \"Close\",\n className: \"\".concat(prefixCls, \"-close\")\n }, closeIcon || /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-close-x\")\n }));\n }\n var content = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, closer, headerNode, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: \"\".concat(prefixCls, \"-body\"),\n style: bodyStyle\n }, bodyProps), children), footerNode);\n return /*#__PURE__*/React.createElement(\"div\", {\n key: \"dialog-element\",\n role: \"dialog\",\n \"aria-labelledby\": title ? ariaId : null,\n \"aria-modal\": \"true\",\n ref: holderRef,\n style: _objectSpread(_objectSpread({}, style), contentStyle),\n className: classNames(prefixCls, className),\n onMouseDown: onMouseDown,\n onMouseUp: onMouseUp\n }, /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelStartRef,\n style: sentinelStyle,\n \"aria-hidden\": \"true\"\n }), /*#__PURE__*/React.createElement(MemoChildren, {\n shouldUpdate: visible || forceRender\n }, modalRender ? modalRender(content) : content), /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelEndRef,\n style: sentinelStyle,\n \"aria-hidden\": \"true\"\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n Panel.displayName = 'Panel';\n}\nexport default Panel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport { offset } from '../../util';\nimport Panel from './Panel';\nvar Content = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n title = props.title,\n style = props.style,\n className = props.className,\n visible = props.visible,\n forceRender = props.forceRender,\n destroyOnClose = props.destroyOnClose,\n motionName = props.motionName,\n ariaId = props.ariaId,\n onVisibleChanged = props.onVisibleChanged,\n mousePosition = props.mousePosition;\n var dialogRef = useRef();\n // ============================= Style ==============================\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n transformOrigin = _React$useState2[0],\n setTransformOrigin = _React$useState2[1];\n var contentStyle = {};\n if (transformOrigin) {\n contentStyle.transformOrigin = transformOrigin;\n }\n function onPrepare() {\n var elementOffset = offset(dialogRef.current);\n setTransformOrigin(mousePosition ? \"\".concat(mousePosition.x - elementOffset.left, \"px \").concat(mousePosition.y - elementOffset.top, \"px\") : '');\n }\n // ============================= Render =============================\n return /*#__PURE__*/React.createElement(CSSMotion, {\n visible: visible,\n onVisibleChanged: onVisibleChanged,\n onAppearPrepare: onPrepare,\n onEnterPrepare: onPrepare,\n forceRender: forceRender,\n motionName: motionName,\n removeOnLeave: destroyOnClose,\n ref: dialogRef\n }, function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n return /*#__PURE__*/React.createElement(Panel, _extends({}, props, {\n ref: ref,\n title: title,\n ariaId: ariaId,\n prefixCls: prefixCls,\n holderRef: motionRef,\n style: _objectSpread(_objectSpread(_objectSpread({}, motionStyle), style), contentStyle),\n className: classNames(className, motionClassName)\n }));\n });\n});\nContent.displayName = 'Content';\nexport default Content;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useEffect } from 'react';\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport useId from \"rc-util/es/hooks/useId\";\nimport contains from \"rc-util/es/Dom/contains\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport Mask from './Mask';\nimport { getMotionName } from '../util';\nimport Content from './Content';\nexport default function Dialog(props) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-dialog' : _props$prefixCls,\n zIndex = props.zIndex,\n _props$visible = props.visible,\n visible = _props$visible === void 0 ? false : _props$visible,\n _props$keyboard = props.keyboard,\n keyboard = _props$keyboard === void 0 ? true : _props$keyboard,\n _props$focusTriggerAf = props.focusTriggerAfterClose,\n focusTriggerAfterClose = _props$focusTriggerAf === void 0 ? true : _props$focusTriggerAf,\n wrapStyle = props.wrapStyle,\n wrapClassName = props.wrapClassName,\n wrapProps = props.wrapProps,\n onClose = props.onClose,\n afterClose = props.afterClose,\n transitionName = props.transitionName,\n animation = props.animation,\n _props$closable = props.closable,\n closable = _props$closable === void 0 ? true : _props$closable,\n _props$mask = props.mask,\n mask = _props$mask === void 0 ? true : _props$mask,\n maskTransitionName = props.maskTransitionName,\n maskAnimation = props.maskAnimation,\n _props$maskClosable = props.maskClosable,\n maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,\n maskStyle = props.maskStyle,\n maskProps = props.maskProps,\n rootClassName = props.rootClassName;\n var lastOutSideActiveElementRef = useRef();\n var wrapperRef = useRef();\n var contentRef = useRef();\n var _React$useState = React.useState(visible),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n animatedVisible = _React$useState2[0],\n setAnimatedVisible = _React$useState2[1];\n // ========================== Init ==========================\n var ariaId = useId();\n function saveLastOutSideActiveElementRef() {\n if (!contains(wrapperRef.current, document.activeElement)) {\n lastOutSideActiveElementRef.current = document.activeElement;\n }\n }\n function focusDialogContent() {\n if (!contains(wrapperRef.current, document.activeElement)) {\n var _contentRef$current;\n (_contentRef$current = contentRef.current) === null || _contentRef$current === void 0 ? void 0 : _contentRef$current.focus();\n }\n }\n // ========================= Events =========================\n function onDialogVisibleChanged(newVisible) {\n // Try to focus\n if (newVisible) {\n focusDialogContent();\n } else {\n // Clean up scroll bar & focus back\n setAnimatedVisible(false);\n if (mask && lastOutSideActiveElementRef.current && focusTriggerAfterClose) {\n try {\n lastOutSideActiveElementRef.current.focus({\n preventScroll: true\n });\n } catch (e) {\n // Do nothing\n }\n lastOutSideActiveElementRef.current = null;\n }\n // Trigger afterClose only when change visible from true to false\n if (animatedVisible) {\n afterClose === null || afterClose === void 0 ? void 0 : afterClose();\n }\n }\n }\n function onInternalClose(e) {\n onClose === null || onClose === void 0 ? void 0 : onClose(e);\n }\n // >>> Content\n var contentClickRef = useRef(false);\n var contentTimeoutRef = useRef();\n // We need record content click incase content popup out of dialog\n var onContentMouseDown = function onContentMouseDown() {\n clearTimeout(contentTimeoutRef.current);\n contentClickRef.current = true;\n };\n var onContentMouseUp = function onContentMouseUp() {\n contentTimeoutRef.current = setTimeout(function () {\n contentClickRef.current = false;\n });\n };\n // >>> Wrapper\n // Close only when element not on dialog\n var onWrapperClick = null;\n if (maskClosable) {\n onWrapperClick = function onWrapperClick(e) {\n if (contentClickRef.current) {\n contentClickRef.current = false;\n } else if (wrapperRef.current === e.target) {\n onInternalClose(e);\n }\n };\n }\n function onWrapperKeyDown(e) {\n if (keyboard && e.keyCode === KeyCode.ESC) {\n e.stopPropagation();\n onInternalClose(e);\n return;\n }\n // keep focus inside dialog\n if (visible) {\n if (e.keyCode === KeyCode.TAB) {\n contentRef.current.changeActive(!e.shiftKey);\n }\n }\n }\n // ========================= Effect =========================\n useEffect(function () {\n if (visible) {\n setAnimatedVisible(true);\n saveLastOutSideActiveElementRef();\n }\n }, [visible]);\n // Remove direct should also check the scroll bar update\n useEffect(function () {\n return function () {\n clearTimeout(contentTimeoutRef.current);\n };\n }, []);\n // ========================= Render =========================\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classNames(\"\".concat(prefixCls, \"-root\"), rootClassName)\n }, pickAttrs(props, {\n data: true\n })), /*#__PURE__*/React.createElement(Mask, {\n prefixCls: prefixCls,\n visible: mask && visible,\n motionName: getMotionName(prefixCls, maskTransitionName, maskAnimation),\n style: _objectSpread({\n zIndex: zIndex\n }, maskStyle),\n maskProps: maskProps\n }), /*#__PURE__*/React.createElement(\"div\", _extends({\n tabIndex: -1,\n onKeyDown: onWrapperKeyDown,\n className: classNames(\"\".concat(prefixCls, \"-wrap\"), wrapClassName),\n ref: wrapperRef,\n onClick: onWrapperClick,\n style: _objectSpread(_objectSpread({\n zIndex: zIndex\n }, wrapStyle), {}, {\n display: !animatedVisible ? 'none' : null\n })\n }, wrapProps), /*#__PURE__*/React.createElement(Content, _extends({}, props, {\n onMouseDown: onContentMouseDown,\n onMouseUp: onContentMouseUp,\n ref: contentRef,\n closable: closable,\n ariaId: ariaId,\n prefixCls: prefixCls,\n visible: visible && animatedVisible,\n onClose: onInternalClose,\n onVisibleChanged: onDialogVisibleChanged,\n motionName: getMotionName(prefixCls, transitionName, animation)\n }))));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport Portal from '@rc-component/portal';\nimport Dialog from './Dialog';\n// fix issue #10656\n/*\n * getContainer remarks\n * Custom container should not be return, because in the Portal component, it will remove the\n * return container element here, if the custom container is the only child of it's component,\n * like issue #10656, It will has a conflict with removeChild method in react-dom.\n * So here should add a child (div element) to custom container.\n * */\nvar DialogWrap = function DialogWrap(props) {\n var visible = props.visible,\n getContainer = props.getContainer,\n forceRender = props.forceRender,\n _props$destroyOnClose = props.destroyOnClose,\n destroyOnClose = _props$destroyOnClose === void 0 ? false : _props$destroyOnClose,\n _afterClose = props.afterClose;\n var _React$useState = React.useState(visible),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n animatedVisible = _React$useState2[0],\n setAnimatedVisible = _React$useState2[1];\n React.useEffect(function () {\n if (visible) {\n setAnimatedVisible(true);\n }\n }, [visible]);\n // // 渲染在当前 dom 里;\n // if (getContainer === false) {\n // return (\n // <Dialog\n // {...props}\n // getOpenCount={() => 2} // 不对 body 做任何操作。。\n // />\n // );\n // }\n // Destroy on close will remove wrapped div\n if (!forceRender && destroyOnClose && !animatedVisible) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Portal, {\n open: visible || forceRender || animatedVisible,\n autoDestroy: false,\n getContainer: getContainer,\n autoLock: visible || animatedVisible\n }, /*#__PURE__*/React.createElement(Dialog, _extends({}, props, {\n destroyOnClose: destroyOnClose,\n afterClose: function afterClose() {\n _afterClose === null || _afterClose === void 0 ? void 0 : _afterClose();\n setAnimatedVisible(false);\n }\n })));\n};\nDialogWrap.displayName = 'Dialog';\nexport default DialogWrap;","import DialogWrap from './DialogWrap';\nimport Panel from './Dialog/Content/Panel';\nexport { Panel };\nexport default DialogWrap;","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nvar targetOffset = [0, 0];\nvar placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n topCenter: {\n points: ['bc', 'tc'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n bottomCenter: {\n points: ['tc', 'bc'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n }\n};\nexport default placements;","import * as React from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport raf from \"rc-util/es/raf\";\nimport { getFocusNodeList } from \"rc-util/es/Dom/focus\";\nvar ESC = KeyCode.ESC,\n TAB = KeyCode.TAB;\nexport default function useAccessibility(_ref) {\n var visible = _ref.visible,\n setTriggerVisible = _ref.setTriggerVisible,\n triggerRef = _ref.triggerRef,\n onVisibleChange = _ref.onVisibleChange,\n autoFocus = _ref.autoFocus;\n var focusMenuRef = React.useRef(false);\n\n var handleCloseMenuAndReturnFocus = function handleCloseMenuAndReturnFocus() {\n if (visible && triggerRef.current) {\n var _triggerRef$current, _triggerRef$current$t, _triggerRef$current$t2, _triggerRef$current$t3;\n\n (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$t = _triggerRef$current.triggerRef) === null || _triggerRef$current$t === void 0 ? void 0 : (_triggerRef$current$t2 = _triggerRef$current$t.current) === null || _triggerRef$current$t2 === void 0 ? void 0 : (_triggerRef$current$t3 = _triggerRef$current$t2.focus) === null || _triggerRef$current$t3 === void 0 ? void 0 : _triggerRef$current$t3.call(_triggerRef$current$t2);\n setTriggerVisible(false);\n\n if (typeof onVisibleChange === 'function') {\n onVisibleChange(false);\n }\n }\n };\n\n var focusMenu = function focusMenu() {\n var _triggerRef$current2, _triggerRef$current2$, _triggerRef$current2$2, _triggerRef$current2$3;\n\n var elements = getFocusNodeList((_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : (_triggerRef$current2$ = _triggerRef$current2.popupRef) === null || _triggerRef$current2$ === void 0 ? void 0 : (_triggerRef$current2$2 = _triggerRef$current2$.current) === null || _triggerRef$current2$2 === void 0 ? void 0 : (_triggerRef$current2$3 = _triggerRef$current2$2.getElement) === null || _triggerRef$current2$3 === void 0 ? void 0 : _triggerRef$current2$3.call(_triggerRef$current2$2));\n var firstElement = elements[0];\n\n if (firstElement === null || firstElement === void 0 ? void 0 : firstElement.focus) {\n firstElement.focus();\n focusMenuRef.current = true;\n return true;\n }\n\n return false;\n };\n\n var handleKeyDown = function handleKeyDown(event) {\n switch (event.keyCode) {\n case ESC:\n handleCloseMenuAndReturnFocus();\n break;\n\n case TAB:\n {\n var focusResult = false;\n\n if (!focusMenuRef.current) {\n focusResult = focusMenu();\n }\n\n if (focusResult) {\n event.preventDefault();\n } else {\n handleCloseMenuAndReturnFocus();\n }\n\n break;\n }\n }\n };\n\n React.useEffect(function () {\n if (visible) {\n window.addEventListener('keydown', handleKeyDown);\n\n if (autoFocus) {\n // FIXME: hack with raf\n raf(focusMenu, 3);\n }\n\n return function () {\n window.removeEventListener('keydown', handleKeyDown);\n focusMenuRef.current = false;\n };\n }\n\n return function () {\n focusMenuRef.current = false;\n };\n }, [visible]); // eslint-disable-line react-hooks/exhaustive-deps\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"arrow\", \"prefixCls\", \"transitionName\", \"animation\", \"align\", \"placement\", \"placements\", \"getPopupContainer\", \"showAction\", \"hideAction\", \"overlayClassName\", \"overlayStyle\", \"visible\", \"trigger\", \"autoFocus\"];\nimport * as React from 'react';\nimport Trigger from 'rc-trigger';\nimport classNames from 'classnames';\nimport Placements from './placements';\nimport useAccessibility from './hooks/useAccessibility';\n\nfunction Dropdown(props, ref) {\n var _props$arrow = props.arrow,\n arrow = _props$arrow === void 0 ? false : _props$arrow,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-dropdown' : _props$prefixCls,\n transitionName = props.transitionName,\n animation = props.animation,\n align = props.align,\n _props$placement = props.placement,\n placement = _props$placement === void 0 ? 'bottomLeft' : _props$placement,\n _props$placements = props.placements,\n placements = _props$placements === void 0 ? Placements : _props$placements,\n getPopupContainer = props.getPopupContainer,\n showAction = props.showAction,\n hideAction = props.hideAction,\n overlayClassName = props.overlayClassName,\n overlayStyle = props.overlayStyle,\n visible = props.visible,\n _props$trigger = props.trigger,\n trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger,\n autoFocus = props.autoFocus,\n otherProps = _objectWithoutProperties(props, _excluded);\n\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n triggerVisible = _React$useState2[0],\n setTriggerVisible = _React$useState2[1];\n\n var mergedVisible = 'visible' in props ? visible : triggerVisible;\n var triggerRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return triggerRef.current;\n });\n useAccessibility({\n visible: mergedVisible,\n setTriggerVisible: setTriggerVisible,\n triggerRef: triggerRef,\n onVisibleChange: props.onVisibleChange,\n autoFocus: autoFocus\n });\n\n var getOverlayElement = function getOverlayElement() {\n var overlay = props.overlay;\n var overlayElement;\n\n if (typeof overlay === 'function') {\n overlayElement = overlay();\n } else {\n overlayElement = overlay;\n }\n\n return overlayElement;\n };\n\n var onClick = function onClick(e) {\n var onOverlayClick = props.onOverlayClick;\n setTriggerVisible(false);\n\n if (onOverlayClick) {\n onOverlayClick(e);\n }\n };\n\n var onVisibleChange = function onVisibleChange(newVisible) {\n var onVisibleChangeProp = props.onVisibleChange;\n setTriggerVisible(newVisible);\n\n if (typeof onVisibleChangeProp === 'function') {\n onVisibleChangeProp(newVisible);\n }\n };\n\n var getMenuElement = function getMenuElement() {\n var overlayElement = getOverlayElement();\n return /*#__PURE__*/React.createElement(React.Fragment, null, arrow && /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-arrow\")\n }), overlayElement);\n };\n\n var getMenuElementOrLambda = function getMenuElementOrLambda() {\n var overlay = props.overlay;\n\n if (typeof overlay === 'function') {\n return getMenuElement;\n }\n\n return getMenuElement();\n };\n\n var getMinOverlayWidthMatchTrigger = function getMinOverlayWidthMatchTrigger() {\n var minOverlayWidthMatchTrigger = props.minOverlayWidthMatchTrigger,\n alignPoint = props.alignPoint;\n\n if ('minOverlayWidthMatchTrigger' in props) {\n return minOverlayWidthMatchTrigger;\n }\n\n return !alignPoint;\n };\n\n var getOpenClassName = function getOpenClassName() {\n var openClassName = props.openClassName;\n\n if (openClassName !== undefined) {\n return openClassName;\n }\n\n return \"\".concat(prefixCls, \"-open\");\n };\n\n var renderChildren = function renderChildren() {\n var children = props.children;\n var childrenProps = children.props ? children.props : {};\n var childClassName = classNames(childrenProps.className, getOpenClassName());\n return mergedVisible && children ? /*#__PURE__*/React.cloneElement(children, {\n className: childClassName\n }) : children;\n };\n\n var triggerHideAction = hideAction;\n\n if (!triggerHideAction && trigger.indexOf('contextMenu') !== -1) {\n triggerHideAction = ['click'];\n }\n\n return /*#__PURE__*/React.createElement(Trigger, _objectSpread(_objectSpread({\n builtinPlacements: placements\n }, otherProps), {}, {\n prefixCls: prefixCls,\n ref: triggerRef,\n popupClassName: classNames(overlayClassName, _defineProperty({}, \"\".concat(prefixCls, \"-show-arrow\"), arrow)),\n popupStyle: overlayStyle,\n action: trigger,\n showAction: showAction,\n hideAction: triggerHideAction || [],\n popupPlacement: placement,\n popupAlign: align,\n popupTransitionName: transitionName,\n popupAnimation: animation,\n popupVisible: mergedVisible,\n stretch: getMinOverlayWidthMatchTrigger() ? 'minWidth' : '',\n popup: getMenuElementOrLambda(),\n onPopupVisibleChange: onVisibleChange,\n onPopupClick: onClick,\n getPopupContainer: getPopupContainer\n }), renderChildren());\n}\n\nexport default /*#__PURE__*/React.forwardRef(Dropdown);","import Dropdown from './Dropdown';\nexport default Dropdown;","import warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nexport var HOOK_MARK = 'RC_FORM_INTERNAL_HOOKS';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar warningFunc = function warningFunc() {\n warning(false, 'Can not find FormContext. Please make sure you wrap Field under Form.');\n};\nvar Context = /*#__PURE__*/React.createContext({\n getFieldValue: warningFunc,\n getFieldsValue: warningFunc,\n getFieldError: warningFunc,\n getFieldWarning: warningFunc,\n getFieldsError: warningFunc,\n isFieldsTouched: warningFunc,\n isFieldTouched: warningFunc,\n isFieldValidating: warningFunc,\n isFieldsValidating: warningFunc,\n resetFields: warningFunc,\n setFields: warningFunc,\n setFieldValue: warningFunc,\n setFieldsValue: warningFunc,\n validateFields: warningFunc,\n submit: warningFunc,\n getInternalHooks: function getInternalHooks() {\n warningFunc();\n return {\n dispatch: warningFunc,\n initEntityValue: warningFunc,\n registerField: warningFunc,\n useSubscribe: warningFunc,\n setInitialValues: warningFunc,\n destroyForm: warningFunc,\n setCallbacks: warningFunc,\n registerWatch: warningFunc,\n getFields: warningFunc,\n setValidateMessages: warningFunc,\n setPreserve: warningFunc,\n getInitialValue: warningFunc\n };\n }\n});\nexport default Context;","export function toArray(value) {\n if (value === undefined || value === null) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n}","/* eslint no-console:0 */\n\nimport {\n ValidateError,\n ValidateOption,\n RuleValuePackage,\n InternalRuleItem,\n SyncErrorType,\n RuleType,\n Value,\n Values,\n} from './interface';\n\nconst formatRegExp = /%[sdj%]/g;\n\ndeclare var ASYNC_VALIDATOR_NO_WARNING;\n\nexport let warning: (type: string, errors: SyncErrorType[]) => void = () => {};\n\n// don't print warning message when in production env or node runtime\nif (\n typeof process !== 'undefined' &&\n process.env &&\n process.env.NODE_ENV !== 'production' &&\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n) {\n warning = (type, errors) => {\n if (\n typeof console !== 'undefined' &&\n console.warn &&\n typeof ASYNC_VALIDATOR_NO_WARNING === 'undefined'\n ) {\n if (errors.every(e => typeof e === 'string')) {\n console.warn(type, errors);\n }\n }\n };\n}\n\nexport function convertFieldsError(\n errors: ValidateError[],\n): Record<string, ValidateError[]> {\n if (!errors || !errors.length) return null;\n const fields = {};\n errors.forEach(error => {\n const field = error.field;\n fields[field] = fields[field] || [];\n fields[field].push(error);\n });\n return fields;\n}\n\nexport function format(\n template: ((...args: any[]) => string) | string,\n ...args: any[]\n): string {\n let i = 0;\n const len = args.length;\n if (typeof template === 'function') {\n return template.apply(null, args);\n }\n if (typeof template === 'string') {\n let str = template.replace(formatRegExp, x => {\n if (x === '%%') {\n return '%';\n }\n if (i >= len) {\n return x;\n }\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return (Number(args[i++]) as unknown) as string;\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n break;\n default:\n return x;\n }\n });\n return str;\n }\n return template;\n}\n\nfunction isNativeStringType(type: string) {\n return (\n type === 'string' ||\n type === 'url' ||\n type === 'hex' ||\n type === 'email' ||\n type === 'date' ||\n type === 'pattern'\n );\n}\n\nexport function isEmptyValue(value: Value, type?: string) {\n if (value === undefined || value === null) {\n return true;\n }\n if (type === 'array' && Array.isArray(value) && !value.length) {\n return true;\n }\n if (isNativeStringType(type) && typeof value === 'string' && !value) {\n return true;\n }\n return false;\n}\n\nexport function isEmptyObject(obj: object) {\n return Object.keys(obj).length === 0;\n}\n\nfunction asyncParallelArray(\n arr: RuleValuePackage[],\n func: ValidateFunc,\n callback: (errors: ValidateError[]) => void,\n) {\n const results: ValidateError[] = [];\n let total = 0;\n const arrLength = arr.length;\n\n function count(errors: ValidateError[]) {\n results.push(...(errors || []));\n total++;\n if (total === arrLength) {\n callback(results);\n }\n }\n\n arr.forEach(a => {\n func(a, count);\n });\n}\n\nfunction asyncSerialArray(\n arr: RuleValuePackage[],\n func: ValidateFunc,\n callback: (errors: ValidateError[]) => void,\n) {\n let index = 0;\n const arrLength = arr.length;\n\n function next(errors: ValidateError[]) {\n if (errors && errors.length) {\n callback(errors);\n return;\n }\n const original = index;\n index = index + 1;\n if (original < arrLength) {\n func(arr[original], next);\n } else {\n callback([]);\n }\n }\n\n next([]);\n}\n\nfunction flattenObjArr(objArr: Record<string, RuleValuePackage[]>) {\n const ret: RuleValuePackage[] = [];\n Object.keys(objArr).forEach(k => {\n ret.push(...(objArr[k] || []));\n });\n return ret;\n}\n\nexport class AsyncValidationError extends Error {\n errors: ValidateError[];\n fields: Record<string, ValidateError[]>;\n\n constructor(\n errors: ValidateError[],\n fields: Record<string, ValidateError[]>,\n ) {\n super('Async Validation Error');\n this.errors = errors;\n this.fields = fields;\n }\n}\n\ntype ValidateFunc = (\n data: RuleValuePackage,\n doIt: (errors: ValidateError[]) => void,\n) => void;\n\nexport function asyncMap(\n objArr: Record<string, RuleValuePackage[]>,\n option: ValidateOption,\n func: ValidateFunc,\n callback: (errors: ValidateError[]) => void,\n source: Values,\n): Promise<Values> {\n if (option.first) {\n const pending = new Promise<Values>((resolve, reject) => {\n const next = (errors: ValidateError[]) => {\n callback(errors);\n return errors.length\n ? reject(new AsyncValidationError(errors, convertFieldsError(errors)))\n : resolve(source);\n };\n const flattenArr = flattenObjArr(objArr);\n asyncSerialArray(flattenArr, func, next);\n });\n pending.catch(e => e);\n return pending;\n }\n const firstFields =\n option.firstFields === true\n ? Object.keys(objArr)\n : option.firstFields || [];\n\n const objArrKeys = Object.keys(objArr);\n const objArrLength = objArrKeys.length;\n let total = 0;\n const results: ValidateError[] = [];\n const pending = new Promise<Values>((resolve, reject) => {\n const next = (errors: ValidateError[]) => {\n results.push.apply(results, errors);\n total++;\n if (total === objArrLength) {\n callback(results);\n return results.length\n ? reject(\n new AsyncValidationError(results, convertFieldsError(results)),\n )\n : resolve(source);\n }\n };\n if (!objArrKeys.length) {\n callback(results);\n resolve(source);\n }\n objArrKeys.forEach(key => {\n const arr = objArr[key];\n if (firstFields.indexOf(key) !== -1) {\n asyncSerialArray(arr, func, next);\n } else {\n asyncParallelArray(arr, func, next);\n }\n });\n });\n pending.catch(e => e);\n return pending;\n}\n\nfunction isErrorObj(\n obj: ValidateError | string | (() => string),\n): obj is ValidateError {\n return !!(obj && (obj as ValidateError).message !== undefined);\n}\n\nfunction getValue(value: Values, path: string[]) {\n let v = value;\n for (let i = 0; i < path.length; i++) {\n if (v == undefined) {\n return v;\n }\n v = v[path[i]];\n }\n return v;\n}\n\nexport function complementError(rule: InternalRuleItem, source: Values) {\n return (oe: ValidateError | (() => string) | string): ValidateError => {\n let fieldValue;\n if (rule.fullFields) {\n fieldValue = getValue(source, rule.fullFields);\n } else {\n fieldValue = source[(oe as any).field || rule.fullField];\n }\n if (isErrorObj(oe)) {\n oe.field = oe.field || rule.fullField;\n oe.fieldValue = fieldValue;\n return oe;\n }\n return {\n message: typeof oe === 'function' ? oe() : oe,\n fieldValue,\n field: ((oe as unknown) as ValidateError).field || rule.fullField,\n };\n };\n}\n\nexport function deepMerge<T extends object>(target: T, source: Partial<T>): T {\n if (source) {\n for (const s in source) {\n if (source.hasOwnProperty(s)) {\n const value = source[s];\n if (typeof value === 'object' && typeof target[s] === 'object') {\n target[s] = {\n ...target[s],\n ...value,\n };\n } else {\n target[s] = value;\n }\n }\n }\n }\n return target;\n}\n","import { ExecuteRule } from '../interface';\nimport { format, isEmptyValue } from '../util';\n\nconst required: ExecuteRule = (rule, value, source, errors, options, type) => {\n if (\n rule.required &&\n (!source.hasOwnProperty(rule.field) ||\n isEmptyValue(value, type || rule.type))\n ) {\n errors.push(format(options.messages.required, rule.fullField));\n }\n};\n\nexport default required;\n","// https://github.com/kevva/url-regex/blob/master/index.js\nlet urlReg: RegExp;\n\nexport default () => {\n if (urlReg) {\n return urlReg;\n }\n\n const word = '[a-fA-F\\\\d:]';\n const b = options =>\n options && options.includeBoundaries\n ? `(?:(?<=\\\\s|^)(?=${word})|(?<=${word})(?=\\\\s|$))`\n : '';\n\n const v4 =\n '(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}';\n\n const v6seg = '[a-fA-F\\\\d]{1,4}';\n const v6 = `\n(?:\n(?:${v6seg}:){7}(?:${v6seg}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${v6seg}:){6}(?:${v4}|:${v6seg}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${v6seg}:){5}(?::${v4}|(?::${v6seg}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${v6seg}:){4}(?:(?::${v6seg}){0,1}:${v4}|(?::${v6seg}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${v6seg}:){3}(?:(?::${v6seg}){0,2}:${v4}|(?::${v6seg}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${v6seg}:){2}(?:(?::${v6seg}){0,3}:${v4}|(?::${v6seg}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${v6seg}:){1}(?:(?::${v6seg}){0,4}:${v4}|(?::${v6seg}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${v6seg}){0,5}:${v4}|(?::${v6seg}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n`\n .replace(/\\s*\\/\\/.*$/gm, '')\n .replace(/\\n/g, '')\n .trim();\n\n // Pre-compile only the exact regexes because adding a global flag make regexes stateful\n const v46Exact = new RegExp(`(?:^${v4}$)|(?:^${v6}$)`);\n const v4exact = new RegExp(`^${v4}$`);\n const v6exact = new RegExp(`^${v6}$`);\n\n const ip = options =>\n options && options.exact\n ? v46Exact\n : new RegExp(\n `(?:${b(options)}${v4}${b(options)})|(?:${b(options)}${v6}${b(\n options,\n )})`,\n 'g',\n );\n\n ip.v4 = (options?) =>\n options && options.exact\n ? v4exact\n : new RegExp(`${b(options)}${v4}${b(options)}`, 'g');\n ip.v6 = (options?) =>\n options && options.exact\n ? v6exact\n : new RegExp(`${b(options)}${v6}${b(options)}`, 'g');\n\n const protocol = `(?:(?:[a-z]+:)?//)`;\n const auth = '(?:\\\\S+(?::\\\\S*)?@)?';\n const ipv4 = ip.v4().source;\n const ipv6 = ip.v6().source;\n const host = '(?:(?:[a-z\\\\u00a1-\\\\uffff0-9][-_]*)*[a-z\\\\u00a1-\\\\uffff0-9]+)';\n const domain =\n '(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*';\n const tld = `(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))`;\n const port = '(?::\\\\d{2,5})?';\n const path = '(?:[/?#][^\\\\s\"]*)?';\n const regex = `(?:${protocol}|www\\\\.)${auth}(?:localhost|${ipv4}|${ipv6}|${host}${domain}${tld})${port}${path}`;\n urlReg = new RegExp(`(?:^${regex}$)`, 'i');\n return urlReg;\n};\n","import { ExecuteRule, Value } from '../interface';\nimport { format } from '../util';\nimport required from './required';\nimport getUrlRegex from './url';\n/* eslint max-len:0 */\n\nconst pattern = {\n // http://emailregex.com/\n email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+\\.)+[a-zA-Z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}))$/,\n // url: new RegExp(\n // '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n // 'i',\n // ),\n hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,\n};\n\nconst types = {\n integer(value: Value) {\n return types.number(value) && parseInt(value, 10) === value;\n },\n float(value: Value) {\n return types.number(value) && !types.integer(value);\n },\n array(value: Value) {\n return Array.isArray(value);\n },\n regexp(value: Value) {\n if (value instanceof RegExp) {\n return true;\n }\n try {\n return !!new RegExp(value);\n } catch (e) {\n return false;\n }\n },\n date(value: Value) {\n return (\n typeof value.getTime === 'function' &&\n typeof value.getMonth === 'function' &&\n typeof value.getYear === 'function' &&\n !isNaN(value.getTime())\n );\n },\n number(value: Value) {\n if (isNaN(value)) {\n return false;\n }\n return typeof value === 'number';\n },\n object(value: Value) {\n return typeof value === 'object' && !types.array(value);\n },\n method(value: Value) {\n return typeof value === 'function';\n },\n email(value: Value) {\n return (\n typeof value === 'string' &&\n value.length <= 320 &&\n !!value.match(pattern.email)\n );\n },\n url(value: Value) {\n return (\n typeof value === 'string' &&\n value.length <= 2048 &&\n !!value.match(getUrlRegex())\n );\n },\n hex(value: Value) {\n return typeof value === 'string' && !!value.match(pattern.hex);\n },\n};\n\nconst type: ExecuteRule = (rule, value, source, errors, options) => {\n if (rule.required && value === undefined) {\n required(rule, value, source, errors, options);\n return;\n }\n const custom = [\n 'integer',\n 'float',\n 'array',\n 'regexp',\n 'object',\n 'method',\n 'email',\n 'number',\n 'date',\n 'url',\n 'hex',\n ];\n const ruleType = rule.type;\n if (custom.indexOf(ruleType) > -1) {\n if (!types[ruleType](value)) {\n errors.push(\n format(options.messages.types[ruleType], rule.fullField, rule.type),\n );\n }\n // straight typeof check\n } else if (ruleType && typeof value !== rule.type) {\n errors.push(\n format(options.messages.types[ruleType], rule.fullField, rule.type),\n );\n }\n};\n\nexport default type;\n","import { ExecuteRule } from '../interface';\nimport { format } from '../util';\n\nconst ENUM = 'enum' as const;\n\nconst enumerable: ExecuteRule = (rule, value, source, errors, options) => {\n rule[ENUM] = Array.isArray(rule[ENUM]) ? rule[ENUM] : [];\n if (rule[ENUM].indexOf(value) === -1) {\n errors.push(\n format(options.messages[ENUM], rule.fullField, rule[ENUM].join(', ')),\n );\n }\n};\n\nexport default enumerable;\n","import required from './required';\nimport whitespace from './whitespace';\nimport type from './type';\nimport range from './range';\nimport enumRule from './enum';\nimport pattern from './pattern';\n\nexport default {\n required,\n whitespace,\n type,\n range,\n enum: enumRule,\n pattern,\n};\n","import { ExecuteRule } from '../interface';\nimport { format } from '../util';\n\n/**\n * Rule for validating whitespace.\n *\n * @param rule The validation rule.\n * @param value The value of the field on the source object.\n * @param source The source object being validated.\n * @param errors An array of errors that this rule may add\n * validation errors to.\n * @param options The validation options.\n * @param options.messages The validation messages.\n */\nconst whitespace: ExecuteRule = (rule, value, source, errors, options) => {\n if (/^\\s+$/.test(value) || value === '') {\n errors.push(format(options.messages.whitespace, rule.fullField));\n }\n};\n\nexport default whitespace;\n","import { ExecuteRule } from '../interface';\nimport { format } from '../util';\n\nconst range: ExecuteRule = (rule, value, source, errors, options) => {\n const len = typeof rule.len === 'number';\n const min = typeof rule.min === 'number';\n const max = typeof rule.max === 'number';\n // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane)\n const spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n let val = value;\n let key = null;\n const num = typeof value === 'number';\n const str = typeof value === 'string';\n const arr = Array.isArray(value);\n if (num) {\n key = 'number';\n } else if (str) {\n key = 'string';\n } else if (arr) {\n key = 'array';\n }\n // if the value is not of a supported type for range validation\n // the validation rule rule should use the\n // type property to also test for a particular type\n if (!key) {\n return false;\n }\n if (arr) {\n val = value.length;\n }\n if (str) {\n // 处理码点大于U+010000的文字length属性不准确的bug,如\"𠮷𠮷𠮷\".lenght !== 3\n val = value.replace(spRegexp, '_').length;\n }\n if (len) {\n if (val !== rule.len) {\n errors.push(format(options.messages[key].len, rule.fullField, rule.len));\n }\n } else if (min && !max && val < rule.min) {\n errors.push(format(options.messages[key].min, rule.fullField, rule.min));\n } else if (max && !min && val > rule.max) {\n errors.push(format(options.messages[key].max, rule.fullField, rule.max));\n } else if (min && max && (val < rule.min || val > rule.max)) {\n errors.push(\n format(options.messages[key].range, rule.fullField, rule.min, rule.max),\n );\n }\n};\n\nexport default range;\n","import { ExecuteRule } from '../interface';\nimport { format } from '../util';\n\nconst pattern: ExecuteRule = (rule, value, source, errors, options) => {\n if (rule.pattern) {\n if (rule.pattern instanceof RegExp) {\n // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n // flag is accidentally set to `true`, which in a validation scenario\n // is not necessary and the result might be misleading\n rule.pattern.lastIndex = 0;\n if (!rule.pattern.test(value)) {\n errors.push(\n format(\n options.messages.pattern.mismatch,\n rule.fullField,\n value,\n rule.pattern,\n ),\n );\n }\n } else if (typeof rule.pattern === 'string') {\n const _pattern = new RegExp(rule.pattern);\n if (!_pattern.test(value)) {\n errors.push(\n format(\n options.messages.pattern.mismatch,\n rule.fullField,\n value,\n rule.pattern,\n ),\n );\n }\n }\n }\n};\n\nexport default pattern;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst type: ExecuteValidator = (rule, value, callback, source, options) => {\n const ruleType = rule.type;\n const errors: string[] = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value, ruleType) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, ruleType);\n if (!isEmptyValue(value, ruleType)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\n\nexport default type;\n","import string from './string';\nimport method from './method';\nimport number from './number';\nimport boolean from './boolean';\nimport regexp from './regexp';\nimport integer from './integer';\nimport float from './float';\nimport array from './array';\nimport object from './object';\nimport enumValidator from './enum';\nimport pattern from './pattern';\nimport date from './date';\nimport required from './required';\nimport type from './type';\nimport any from './any';\n\nexport default {\n string,\n method,\n number,\n boolean,\n regexp,\n integer,\n float,\n array,\n object,\n enum: enumValidator,\n pattern,\n date,\n url: type,\n hex: type,\n email: type,\n required,\n any,\n};\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst string: ExecuteValidator = (rule, value, callback, source, options) => {\n const errors: string[] = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, 'string');\n if (!isEmptyValue(value, 'string')) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n rules.pattern(rule, value, source, errors, options);\n if (rule.whitespace === true) {\n rules.whitespace(rule, value, source, errors, options);\n }\n }\n }\n callback(errors);\n};\n\nexport default string;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst method: ExecuteValidator = (rule, value, callback, source, options) => {\n const errors: string[] = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\n\nexport default method;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst number: ExecuteValidator = (rule, value, callback, source, options) => {\n const errors: string[] = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (value === '') {\n value = undefined;\n }\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\n\nexport default number;\n","import { isEmptyValue } from '../util';\nimport rules from '../rule';\nimport { ExecuteValidator } from '../interface';\n\nconst boolean: ExecuteValidator = (rule, value, callback, source, options) => {\n const errors: string[] = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\n\nexport default boolean;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst regexp: ExecuteValidator = (rule, value, callback, source, options) => {\n const errors: string[] = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value)) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\n\nexport default regexp;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst integer: ExecuteValidator = (rule, value, callback, source, options) => {\n const errors: string[] = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\n\nexport default integer;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst floatFn: ExecuteValidator = (rule, value, callback, source, options) => {\n const errors: string[] = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\n\nexport default floatFn;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule/index';\n\nconst array: ExecuteValidator = (rule, value, callback, source, options) => {\n const errors: string[] = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if ((value === undefined || value === null) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options, 'array');\n if (value !== undefined && value !== null) {\n rules.type(rule, value, source, errors, options);\n rules.range(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\n\nexport default array;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst object: ExecuteValidator = (rule, value, callback, source, options) => {\n const errors: string[] = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules.type(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\n\nexport default object;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst ENUM = 'enum' as const;\n\nconst enumerable: ExecuteValidator = (\n rule,\n value,\n callback,\n source,\n options,\n) => {\n const errors: string[] = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (value !== undefined) {\n rules[ENUM](rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\n\nexport default enumerable;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst pattern: ExecuteValidator = (rule, value, callback, source, options) => {\n const errors: string[] = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value, 'string') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value, 'string')) {\n rules.pattern(rule, value, source, errors, options);\n }\n }\n callback(errors);\n};\n\nexport default pattern;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst date: ExecuteValidator = (rule, value, callback, source, options) => {\n // console.log('integer rule called %j', rule);\n const errors: string[] = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n // console.log('validate on %s value', value);\n if (validate) {\n if (isEmptyValue(value, 'date') && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n if (!isEmptyValue(value, 'date')) {\n let dateObject;\n\n if (value instanceof Date) {\n dateObject = value;\n } else {\n dateObject = new Date(value);\n }\n\n rules.type(rule, dateObject, source, errors, options);\n if (dateObject) {\n rules.range(rule, dateObject.getTime(), source, errors, options);\n }\n }\n }\n callback(errors);\n};\n\nexport default date;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\n\nconst required: ExecuteValidator = (rule, value, callback, source, options) => {\n const errors: string[] = [];\n const type = Array.isArray(value) ? 'array' : typeof value;\n rules.required(rule, value, source, errors, options, type);\n callback(errors);\n};\n\nexport default required;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst any: ExecuteValidator = (rule, value, callback, source, options) => {\n const errors: string[] = [];\n const validate =\n rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n if (validate) {\n if (isEmptyValue(value) && !rule.required) {\n return callback();\n }\n rules.required(rule, value, source, errors, options);\n }\n callback(errors);\n};\n\nexport default any;\n","import { InternalValidateMessages } from './interface';\n\nexport function newMessages(): InternalValidateMessages {\n return {\n default: 'Validation error on field %s',\n required: '%s is required',\n enum: '%s must be one of %s',\n whitespace: '%s cannot be empty',\n date: {\n format: '%s date %s is invalid for format %s',\n parse: '%s date could not be parsed, %s is invalid ',\n invalid: '%s date %s is invalid',\n },\n types: {\n string: '%s is not a %s',\n method: '%s is not a %s (function)',\n array: '%s is not an %s',\n object: '%s is not an %s',\n number: '%s is not a %s',\n date: '%s is not a %s',\n boolean: '%s is not a %s',\n integer: '%s is not an %s',\n float: '%s is not a %s',\n regexp: '%s is not a valid %s',\n email: '%s is not a valid %s',\n url: '%s is not a valid %s',\n hex: '%s is not a valid %s',\n },\n string: {\n len: '%s must be exactly %s characters',\n min: '%s must be at least %s characters',\n max: '%s cannot be longer than %s characters',\n range: '%s must be between %s and %s characters',\n },\n number: {\n len: '%s must equal %s',\n min: '%s cannot be less than %s',\n max: '%s cannot be greater than %s',\n range: '%s must be between %s and %s',\n },\n array: {\n len: '%s must be exactly %s in length',\n min: '%s cannot be less than %s in length',\n max: '%s cannot be greater than %s in length',\n range: '%s must be between %s and %s in length',\n },\n pattern: {\n mismatch: '%s value %s does not match pattern %s',\n },\n clone() {\n const cloned = JSON.parse(JSON.stringify(this));\n cloned.clone = this.clone;\n return cloned;\n },\n };\n}\n\nexport const messages = newMessages();\n","import {\n format,\n complementError,\n asyncMap,\n warning,\n deepMerge,\n convertFieldsError,\n} from './util';\nimport validators from './validator/index';\nimport { messages as defaultMessages, newMessages } from './messages';\nimport {\n InternalRuleItem,\n InternalValidateMessages,\n Rule,\n RuleItem,\n Rules,\n ValidateCallback,\n ValidateMessages,\n ValidateOption,\n Values,\n RuleValuePackage,\n ValidateError,\n ValidateFieldsError,\n SyncErrorType,\n ValidateResult,\n} from './interface';\n\nexport * from './interface';\n\n/**\n * Encapsulates a validation schema.\n *\n * @param descriptor An object declaring validation rules\n * for this schema.\n */\nclass Schema {\n // ========================= Static =========================\n static register = function register(type: string, validator) {\n if (typeof validator !== 'function') {\n throw new Error(\n 'Cannot register a validator by type, validator is not a function',\n );\n }\n validators[type] = validator;\n };\n\n static warning = warning;\n\n static messages = defaultMessages;\n\n static validators = validators;\n\n // ======================== Instance ========================\n rules: Record<string, RuleItem[]> = null;\n _messages: InternalValidateMessages = defaultMessages;\n\n constructor(descriptor: Rules) {\n this.define(descriptor);\n }\n\n define(rules: Rules) {\n if (!rules) {\n throw new Error('Cannot configure a schema with no rules');\n }\n if (typeof rules !== 'object' || Array.isArray(rules)) {\n throw new Error('Rules must be an object');\n }\n this.rules = {};\n\n Object.keys(rules).forEach(name => {\n const item: Rule = rules[name];\n this.rules[name] = Array.isArray(item) ? item : [item];\n });\n }\n\n messages(messages?: ValidateMessages) {\n if (messages) {\n this._messages = deepMerge(newMessages(), messages);\n }\n return this._messages;\n }\n\n validate(\n source: Values,\n option?: ValidateOption,\n callback?: ValidateCallback,\n ): Promise<Values>;\n validate(source: Values, callback: ValidateCallback): Promise<Values>;\n validate(source: Values): Promise<Values>;\n\n validate(source_: Values, o: any = {}, oc: any = () => {}): Promise<Values> {\n let source: Values = source_;\n let options: ValidateOption = o;\n let callback: ValidateCallback = oc;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!this.rules || Object.keys(this.rules).length === 0) {\n if (callback) {\n callback(null, source);\n }\n return Promise.resolve(source);\n }\n\n function complete(results: (ValidateError | ValidateError[])[]) {\n let errors: ValidateError[] = [];\n let fields: ValidateFieldsError = {};\n\n function add(e: ValidateError | ValidateError[]) {\n if (Array.isArray(e)) {\n errors = errors.concat(...e);\n } else {\n errors.push(e);\n }\n }\n\n for (let i = 0; i < results.length; i++) {\n add(results[i]);\n }\n if (!errors.length) {\n callback(null, source);\n } else {\n fields = convertFieldsError(errors);\n (callback as (\n errors: ValidateError[],\n fields: ValidateFieldsError,\n ) => void)(errors, fields);\n }\n }\n\n if (options.messages) {\n let messages = this.messages();\n if (messages === defaultMessages) {\n messages = newMessages();\n }\n deepMerge(messages, options.messages);\n options.messages = messages;\n } else {\n options.messages = this.messages();\n }\n\n const series: Record<string, RuleValuePackage[]> = {};\n const keys = options.keys || Object.keys(this.rules);\n keys.forEach(z => {\n const arr = this.rules[z];\n let value = source[z];\n arr.forEach(r => {\n let rule: InternalRuleItem = r;\n if (typeof rule.transform === 'function') {\n if (source === source_) {\n source = { ...source };\n }\n value = source[z] = rule.transform(value);\n }\n if (typeof rule === 'function') {\n rule = {\n validator: rule,\n };\n } else {\n rule = { ...rule };\n }\n\n // Fill validator. Skip if nothing need to validate\n rule.validator = this.getValidationMethod(rule);\n if (!rule.validator) {\n return;\n }\n\n rule.field = z;\n rule.fullField = rule.fullField || z;\n rule.type = this.getType(rule);\n series[z] = series[z] || [];\n series[z].push({\n rule,\n value,\n source,\n field: z,\n });\n });\n });\n const errorFields = {};\n return asyncMap(\n series,\n options,\n (data, doIt) => {\n const rule = data.rule;\n let deep =\n (rule.type === 'object' || rule.type === 'array') &&\n (typeof rule.fields === 'object' ||\n typeof rule.defaultField === 'object');\n deep = deep && (rule.required || (!rule.required && data.value));\n rule.field = data.field;\n\n function addFullField(key: string, schema: RuleItem) {\n return {\n ...schema,\n fullField: `${rule.fullField}.${key}`,\n fullFields: rule.fullFields ? [...rule.fullFields, key] : [key],\n };\n }\n\n function cb(e: SyncErrorType | SyncErrorType[] = []) {\n let errorList = Array.isArray(e) ? e : [e];\n if (!options.suppressWarning && errorList.length) {\n Schema.warning('async-validator:', errorList);\n }\n if (errorList.length && rule.message !== undefined) {\n errorList = [].concat(rule.message);\n }\n\n // Fill error info\n let filledErrors = errorList.map(complementError(rule, source));\n\n if (options.first && filledErrors.length) {\n errorFields[rule.field] = 1;\n return doIt(filledErrors);\n }\n if (!deep) {\n doIt(filledErrors);\n } else {\n // if rule is required but the target object\n // does not exist fail at the rule level and don't\n // go deeper\n if (rule.required && !data.value) {\n if (rule.message !== undefined) {\n filledErrors = []\n .concat(rule.message)\n .map(complementError(rule, source));\n } else if (options.error) {\n filledErrors = [\n options.error(\n rule,\n format(options.messages.required, rule.field),\n ),\n ];\n }\n return doIt(filledErrors);\n }\n\n let fieldsSchema: Record<string, Rule> = {};\n if (rule.defaultField) {\n Object.keys(data.value).map(key => {\n fieldsSchema[key] = rule.defaultField;\n });\n }\n fieldsSchema = {\n ...fieldsSchema,\n ...data.rule.fields,\n };\n\n const paredFieldsSchema: Record<string, RuleItem[]> = {};\n\n Object.keys(fieldsSchema).forEach(field => {\n const fieldSchema = fieldsSchema[field];\n const fieldSchemaList = Array.isArray(fieldSchema)\n ? fieldSchema\n : [fieldSchema];\n paredFieldsSchema[field] = fieldSchemaList.map(\n addFullField.bind(null, field),\n );\n });\n const schema = new Schema(paredFieldsSchema);\n schema.messages(options.messages);\n if (data.rule.options) {\n data.rule.options.messages = options.messages;\n data.rule.options.error = options.error;\n }\n schema.validate(data.value, data.rule.options || options, errs => {\n const finalErrors = [];\n if (filledErrors && filledErrors.length) {\n finalErrors.push(...filledErrors);\n }\n if (errs && errs.length) {\n finalErrors.push(...errs);\n }\n doIt(finalErrors.length ? finalErrors : null);\n });\n }\n }\n\n let res: ValidateResult;\n if (rule.asyncValidator) {\n res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n } else if (rule.validator) {\n try {\n res = rule.validator(rule, data.value, cb, data.source, options);\n } catch (error) {\n console.error?.(error);\n // rethrow to report error\n if (!options.suppressValidatorError) {\n setTimeout(() => {\n throw error;\n }, 0);\n }\n cb(error.message);\n }\n if (res === true) {\n cb();\n } else if (res === false) {\n cb(\n typeof rule.message === 'function'\n ? rule.message(rule.fullField || rule.field)\n : rule.message || `${rule.fullField || rule.field} fails`,\n );\n } else if (res instanceof Array) {\n cb(res);\n } else if (res instanceof Error) {\n cb(res.message);\n }\n }\n if (res && (res as Promise<void>).then) {\n (res as Promise<void>).then(\n () => cb(),\n e => cb(e),\n );\n }\n },\n results => {\n complete(results);\n },\n source,\n );\n }\n\n getType(rule: InternalRuleItem) {\n if (rule.type === undefined && rule.pattern instanceof RegExp) {\n rule.type = 'pattern';\n }\n if (\n typeof rule.validator !== 'function' &&\n rule.type &&\n !validators.hasOwnProperty(rule.type)\n ) {\n throw new Error(format('Unknown rule type %s', rule.type));\n }\n return rule.type || 'string';\n }\n\n getValidationMethod(rule: InternalRuleItem) {\n if (typeof rule.validator === 'function') {\n return rule.validator;\n }\n const keys = Object.keys(rule);\n const messageIndex = keys.indexOf('message');\n if (messageIndex !== -1) {\n keys.splice(messageIndex, 1);\n }\n if (keys.length === 1 && keys[0] === 'required') {\n return validators.required;\n }\n return validators[this.getType(rule)] || undefined;\n }\n}\n\nexport default Schema;\n","var typeTemplate = \"'${name}' is not a valid ${type}\";\nexport var defaultValidateMessages = {\n default: \"Validation error on field '${name}'\",\n required: \"'${name}' is required\",\n enum: \"'${name}' must be one of [${enum}]\",\n whitespace: \"'${name}' cannot be empty\",\n date: {\n format: \"'${name}' is invalid for format date\",\n parse: \"'${name}' could not be parsed as date\",\n invalid: \"'${name}' is invalid date\"\n },\n types: {\n string: typeTemplate,\n method: typeTemplate,\n array: typeTemplate,\n object: typeTemplate,\n number: typeTemplate,\n date: typeTemplate,\n boolean: typeTemplate,\n integer: typeTemplate,\n float: typeTemplate,\n regexp: typeTemplate,\n email: typeTemplate,\n url: typeTemplate,\n hex: typeTemplate\n },\n string: {\n len: \"'${name}' must be exactly ${len} characters\",\n min: \"'${name}' must be at least ${min} characters\",\n max: \"'${name}' cannot be longer than ${max} characters\",\n range: \"'${name}' must be between ${min} and ${max} characters\"\n },\n number: {\n len: \"'${name}' must equal ${len}\",\n min: \"'${name}' cannot be less than ${min}\",\n max: \"'${name}' cannot be greater than ${max}\",\n range: \"'${name}' must be between ${min} and ${max}\"\n },\n array: {\n len: \"'${name}' must be exactly ${len} in length\",\n min: \"'${name}' cannot be less than ${min} in length\",\n max: \"'${name}' cannot be greater than ${max} in length\",\n range: \"'${name}' must be between ${min} and ${max} in length\"\n },\n pattern: {\n mismatch: \"'${name}' does not match pattern ${pattern}\"\n }\n};","export default function get(entity, path) {\n var current = entity;\n for (var i = 0; i < path.length; i += 1) {\n if (current === null || current === undefined) {\n return undefined;\n }\n current = current[path[i]];\n }\n return current;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport get from \"./get\";\nfunction internalSet(entity, paths, value, removeIfUndefined) {\n if (!paths.length) {\n return value;\n }\n var _paths = _toArray(paths),\n path = _paths[0],\n restPath = _paths.slice(1);\n var clone;\n if (!entity && typeof path === 'number') {\n clone = [];\n } else if (Array.isArray(entity)) {\n clone = _toConsumableArray(entity);\n } else {\n clone = _objectSpread({}, entity);\n }\n\n // Delete prop if `removeIfUndefined` and value is undefined\n if (removeIfUndefined && value === undefined && restPath.length === 1) {\n delete clone[path][restPath[0]];\n } else {\n clone[path] = internalSet(clone[path], restPath, value, removeIfUndefined);\n }\n return clone;\n}\nexport default function set(entity, paths, value) {\n var removeIfUndefined = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n // Do nothing if `removeIfUndefined` and parent object not exist\n if (paths.length && removeIfUndefined && value === undefined && !get(entity, paths.slice(0, -1))) {\n return entity;\n }\n return internalSet(entity, paths, value, removeIfUndefined);\n}\nfunction isObject(obj) {\n return _typeof(obj) === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype;\n}\nfunction createEmpty(source) {\n return Array.isArray(source) ? [] : {};\n}\n\n/**\n * Merge objects which will create\n */\nexport function merge() {\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n var clone = createEmpty(sources[0]);\n sources.forEach(function (src) {\n var loopSet = new Set();\n function internalMerge(path) {\n var value = get(src, path);\n var isArr = Array.isArray(value);\n if (isArr || isObject(value)) {\n // Only add not loop obj\n if (!loopSet.has(value)) {\n loopSet.add(value);\n var originValue = get(clone, path);\n if (isArr) {\n // Array will always be override\n clone = set(clone, path, []);\n } else if (!originValue || _typeof(originValue) !== 'object') {\n // Init container if not exist\n clone = set(clone, path, createEmpty(value));\n }\n Object.keys(value).forEach(function (key) {\n internalMerge([].concat(_toConsumableArray(path), [key]));\n });\n }\n } else {\n clone = set(clone, path, value);\n }\n }\n internalMerge([]);\n });\n return clone;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nfunction cloneDeep(val) {\n if (Array.isArray(val)) {\n return cloneArrayDeep(val);\n } else if (_typeof(val) === 'object' && val !== null) {\n return cloneObjectDeep(val);\n }\n return val;\n}\nfunction cloneObjectDeep(val) {\n if (Object.getPrototypeOf(val) === Object.prototype) {\n var res = {};\n for (var key in val) {\n res[key] = cloneDeep(val[key]);\n }\n return res;\n }\n return val;\n}\nfunction cloneArrayDeep(val) {\n return val.map(function (item) {\n return cloneDeep(item);\n });\n}\nexport default cloneDeep;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport get from \"rc-util/es/utils/get\";\nimport set from \"rc-util/es/utils/set\";\nimport { toArray } from './typeUtil';\nimport cloneDeep from '../utils/cloneDeep';\n/**\n * Convert name to internal supported format.\n * This function should keep since we still thinking if need support like `a.b.c` format.\n * 'a' => ['a']\n * 123 => [123]\n * ['a', 123] => ['a', 123]\n */\nexport function getNamePath(path) {\n return toArray(path);\n}\nexport function getValue(store, namePath) {\n var value = get(store, namePath);\n return value;\n}\nexport function setValue(store, namePath, value) {\n var removeIfUndefined = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var newStore = set(store, namePath, value, removeIfUndefined);\n return newStore;\n}\nexport function cloneByNamePathList(store, namePathList) {\n var newStore = {};\n namePathList.forEach(function (namePath) {\n var value = getValue(store, namePath);\n newStore = setValue(newStore, namePath, value);\n });\n return newStore;\n}\nexport function containsNamePath(namePathList, namePath) {\n return namePathList && namePathList.some(function (path) {\n return matchNamePath(path, namePath);\n });\n}\nfunction isObject(obj) {\n return _typeof(obj) === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype;\n}\n/**\n * Copy values into store and return a new values object\n * ({ a: 1, b: { c: 2 } }, { a: 4, b: { d: 5 } }) => { a: 4, b: { c: 2, d: 5 } }\n */\nfunction internalSetValues(store, values) {\n var newStore = Array.isArray(store) ? _toConsumableArray(store) : _objectSpread({}, store);\n if (!values) {\n return newStore;\n }\n Object.keys(values).forEach(function (key) {\n var prevValue = newStore[key];\n var value = values[key];\n // If both are object (but target is not array), we use recursion to set deep value\n var recursive = isObject(prevValue) && isObject(value);\n newStore[key] = recursive ? internalSetValues(prevValue, value || {}) : cloneDeep(value); // Clone deep for arrays\n });\n\n return newStore;\n}\nexport function setValues(store) {\n for (var _len = arguments.length, restValues = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n restValues[_key - 1] = arguments[_key];\n }\n return restValues.reduce(function (current, newStore) {\n return internalSetValues(current, newStore);\n }, store);\n}\nexport function matchNamePath(namePath, changedNamePath) {\n if (!namePath || !changedNamePath || namePath.length !== changedNamePath.length) {\n return false;\n }\n return namePath.every(function (nameUnit, i) {\n return changedNamePath[i] === nameUnit;\n });\n}\nexport function isSimilar(source, target) {\n if (source === target) {\n return true;\n }\n if (!source && target || source && !target) {\n return false;\n }\n if (!source || !target || _typeof(source) !== 'object' || _typeof(target) !== 'object') {\n return false;\n }\n var sourceKeys = Object.keys(source);\n var targetKeys = Object.keys(target);\n var keys = new Set([].concat(sourceKeys, targetKeys));\n return _toConsumableArray(keys).every(function (key) {\n var sourceValue = source[key];\n var targetValue = target[key];\n if (typeof sourceValue === 'function' && typeof targetValue === 'function') {\n return true;\n }\n return sourceValue === targetValue;\n });\n}\nexport function defaultGetValueFromEvent(valuePropName) {\n var event = arguments.length <= 1 ? undefined : arguments[1];\n if (event && event.target && _typeof(event.target) === 'object' && valuePropName in event.target) {\n return event.target[valuePropName];\n }\n return event;\n}\n/**\n * Moves an array item from one position in an array to another.\n *\n * Note: This is a pure function so a new array will be returned, instead\n * of altering the array argument.\n *\n * @param array Array in which to move an item. (required)\n * @param moveIndex The index of the item to move. (required)\n * @param toIndex The index to move item at moveIndex to. (required)\n */\nexport function move(array, moveIndex, toIndex) {\n var length = array.length;\n if (moveIndex < 0 || moveIndex >= length || toIndex < 0 || toIndex >= length) {\n return array;\n }\n var item = array[moveIndex];\n var diff = moveIndex - toIndex;\n if (diff > 0) {\n // move left\n return [].concat(_toConsumableArray(array.slice(0, toIndex)), [item], _toConsumableArray(array.slice(toIndex, moveIndex)), _toConsumableArray(array.slice(moveIndex + 1, length)));\n }\n if (diff < 0) {\n // move right\n return [].concat(_toConsumableArray(array.slice(0, moveIndex)), _toConsumableArray(array.slice(moveIndex + 1, toIndex + 1)), [item], _toConsumableArray(array.slice(toIndex + 1, length)));\n }\n return array;\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport RawAsyncValidator from 'async-validator';\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport { defaultValidateMessages } from './messages';\nimport { setValues } from './valueUtil';\n// Remove incorrect original ts define\nvar AsyncValidator = RawAsyncValidator;\n/**\n * Replace with template.\n * `I'm ${name}` + { name: 'bamboo' } = I'm bamboo\n */\nfunction replaceMessage(template, kv) {\n return template.replace(/\\$\\{\\w+\\}/g, function (str) {\n var key = str.slice(2, -1);\n return kv[key];\n });\n}\nvar CODE_LOGIC_ERROR = 'CODE_LOGIC_ERROR';\nfunction validateRule(_x, _x2, _x3, _x4, _x5) {\n return _validateRule.apply(this, arguments);\n}\n/**\n * We use `async-validator` to validate the value.\n * But only check one value in a time to avoid namePath validate issue.\n */\nfunction _validateRule() {\n _validateRule = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(name, value, rule, options, messageVariables) {\n var cloneRule, originValidator, subRuleField, validator, messages, result, subResults, kv, fillVariableResult;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n cloneRule = _objectSpread({}, rule); // Bug of `async-validator`\n // https://github.com/react-component/field-form/issues/316\n // https://github.com/react-component/field-form/issues/313\n delete cloneRule.ruleIndex;\n if (cloneRule.validator) {\n originValidator = cloneRule.validator;\n cloneRule.validator = function () {\n try {\n return originValidator.apply(void 0, arguments);\n } catch (error) {\n console.error(error);\n return Promise.reject(CODE_LOGIC_ERROR);\n }\n };\n }\n // We should special handle array validate\n subRuleField = null;\n if (cloneRule && cloneRule.type === 'array' && cloneRule.defaultField) {\n subRuleField = cloneRule.defaultField;\n delete cloneRule.defaultField;\n }\n validator = new AsyncValidator(_defineProperty({}, name, [cloneRule]));\n messages = setValues({}, defaultValidateMessages, options.validateMessages);\n validator.messages(messages);\n result = [];\n _context2.prev = 9;\n _context2.next = 12;\n return Promise.resolve(validator.validate(_defineProperty({}, name, value), _objectSpread({}, options)));\n case 12:\n _context2.next = 17;\n break;\n case 14:\n _context2.prev = 14;\n _context2.t0 = _context2[\"catch\"](9);\n if (_context2.t0.errors) {\n result = _context2.t0.errors.map(function (_ref4, index) {\n var message = _ref4.message;\n var mergedMessage = message === CODE_LOGIC_ERROR ? messages.default : message;\n return /*#__PURE__*/React.isValidElement(mergedMessage) ?\n /*#__PURE__*/\n // Wrap ReactNode with `key`\n React.cloneElement(mergedMessage, {\n key: \"error_\".concat(index)\n }) : mergedMessage;\n });\n }\n case 17:\n if (!(!result.length && subRuleField)) {\n _context2.next = 22;\n break;\n }\n _context2.next = 20;\n return Promise.all(value.map(function (subValue, i) {\n return validateRule(\"\".concat(name, \".\").concat(i), subValue, subRuleField, options, messageVariables);\n }));\n case 20:\n subResults = _context2.sent;\n return _context2.abrupt(\"return\", subResults.reduce(function (prev, errors) {\n return [].concat(_toConsumableArray(prev), _toConsumableArray(errors));\n }, []));\n case 22:\n // Replace message with variables\n kv = _objectSpread(_objectSpread({}, rule), {}, {\n name: name,\n enum: (rule.enum || []).join(', ')\n }, messageVariables);\n fillVariableResult = result.map(function (error) {\n if (typeof error === 'string') {\n return replaceMessage(error, kv);\n }\n return error;\n });\n return _context2.abrupt(\"return\", fillVariableResult);\n case 25:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[9, 14]]);\n }));\n return _validateRule.apply(this, arguments);\n}\nexport function validateRules(namePath, value, rules, options, validateFirst, messageVariables) {\n var name = namePath.join('.');\n // Fill rule with context\n var filledRules = rules.map(function (currentRule, ruleIndex) {\n var originValidatorFunc = currentRule.validator;\n var cloneRule = _objectSpread(_objectSpread({}, currentRule), {}, {\n ruleIndex: ruleIndex\n });\n // Replace validator if needed\n if (originValidatorFunc) {\n cloneRule.validator = function (rule, val, callback) {\n var hasPromise = false;\n // Wrap callback only accept when promise not provided\n var wrappedCallback = function wrappedCallback() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n // Wait a tick to make sure return type is a promise\n Promise.resolve().then(function () {\n warning(!hasPromise, 'Your validator function has already return a promise. `callback` will be ignored.');\n if (!hasPromise) {\n callback.apply(void 0, args);\n }\n });\n };\n // Get promise\n var promise = originValidatorFunc(rule, val, wrappedCallback);\n hasPromise = promise && typeof promise.then === 'function' && typeof promise.catch === 'function';\n /**\n * 1. Use promise as the first priority.\n * 2. If promise not exist, use callback with warning instead\n */\n warning(hasPromise, '`callback` is deprecated. Please return a promise instead.');\n if (hasPromise) {\n promise.then(function () {\n callback();\n }).catch(function (err) {\n callback(err || ' ');\n });\n }\n };\n }\n return cloneRule;\n }).sort(function (_ref, _ref2) {\n var w1 = _ref.warningOnly,\n i1 = _ref.ruleIndex;\n var w2 = _ref2.warningOnly,\n i2 = _ref2.ruleIndex;\n if (!!w1 === !!w2) {\n // Let keep origin order\n return i1 - i2;\n }\n if (w1) {\n return 1;\n }\n return -1;\n });\n // Do validate rules\n var summaryPromise;\n if (validateFirst === true) {\n // >>>>> Validate by serialization\n summaryPromise = new Promise( /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(resolve, reject) {\n var i, rule, errors;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n i = 0;\n case 1:\n if (!(i < filledRules.length)) {\n _context.next = 12;\n break;\n }\n rule = filledRules[i];\n _context.next = 5;\n return validateRule(name, value, rule, options, messageVariables);\n case 5:\n errors = _context.sent;\n if (!errors.length) {\n _context.next = 9;\n break;\n }\n reject([{\n errors: errors,\n rule: rule\n }]);\n return _context.abrupt(\"return\");\n case 9:\n i += 1;\n _context.next = 1;\n break;\n case 12:\n /* eslint-enable */\n resolve([]);\n case 13:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x6, _x7) {\n return _ref3.apply(this, arguments);\n };\n }());\n } else {\n // >>>>> Validate by parallel\n var rulePromises = filledRules.map(function (rule) {\n return validateRule(name, value, rule, options, messageVariables).then(function (errors) {\n return {\n errors: errors,\n rule: rule\n };\n });\n });\n summaryPromise = (validateFirst ? finishOnFirstFailed(rulePromises) : finishOnAllFailed(rulePromises)).then(function (errors) {\n // Always change to rejection for Field to catch\n return Promise.reject(errors);\n });\n }\n // Internal catch error to avoid console error log.\n summaryPromise.catch(function (e) {\n return e;\n });\n return summaryPromise;\n}\nfunction finishOnAllFailed(_x8) {\n return _finishOnAllFailed.apply(this, arguments);\n}\nfunction _finishOnAllFailed() {\n _finishOnAllFailed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(rulePromises) {\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt(\"return\", Promise.all(rulePromises).then(function (errorsList) {\n var _ref5;\n var errors = (_ref5 = []).concat.apply(_ref5, _toConsumableArray(errorsList));\n return errors;\n }));\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n return _finishOnAllFailed.apply(this, arguments);\n}\nfunction finishOnFirstFailed(_x9) {\n return _finishOnFirstFailed.apply(this, arguments);\n}\nfunction _finishOnFirstFailed() {\n _finishOnFirstFailed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(rulePromises) {\n var count;\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n count = 0;\n return _context4.abrupt(\"return\", new Promise(function (resolve) {\n rulePromises.forEach(function (promise) {\n promise.then(function (ruleError) {\n if (ruleError.errors.length) {\n resolve([ruleError]);\n }\n count += 1;\n if (count === rulePromises.length) {\n resolve([]);\n }\n });\n });\n }));\n case 2:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return _finishOnFirstFailed.apply(this, arguments);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"name\"];\nimport toChildrenArray from \"rc-util/es/Children/toArray\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport FieldContext, { HOOK_MARK } from './FieldContext';\nimport { toArray } from './utils/typeUtil';\nimport { validateRules } from './utils/validateUtil';\nimport { containsNamePath, defaultGetValueFromEvent, getNamePath, getValue } from './utils/valueUtil';\nvar EMPTY_ERRORS = [];\nfunction requireUpdate(shouldUpdate, prev, next, prevValue, nextValue, info) {\n if (typeof shouldUpdate === 'function') {\n return shouldUpdate(prev, next, 'source' in info ? {\n source: info.source\n } : {});\n }\n return prevValue !== nextValue;\n}\n// We use Class instead of Hooks here since it will cost much code by using Hooks.\nvar Field = /*#__PURE__*/function (_React$Component) {\n _inherits(Field, _React$Component);\n var _super = _createSuper(Field);\n /**\n * Follow state should not management in State since it will async update by React.\n * This makes first render of form can not get correct state value.\n */\n\n /**\n * Mark when touched & validated. Currently only used for `dependencies`.\n * Note that we do not think field with `initialValue` is dirty\n * but this will be by `isFieldDirty` func.\n */\n\n // ============================== Subscriptions ==============================\n function Field(props) {\n var _this;\n _classCallCheck(this, Field);\n _this = _super.call(this, props);\n // Register on init\n _this.state = {\n resetCount: 0\n };\n _this.cancelRegisterFunc = null;\n _this.mounted = false;\n _this.touched = false;\n _this.dirty = false;\n _this.validatePromise = null;\n _this.prevValidating = void 0;\n _this.errors = EMPTY_ERRORS;\n _this.warnings = EMPTY_ERRORS;\n _this.cancelRegister = function () {\n var _this$props = _this.props,\n preserve = _this$props.preserve,\n isListField = _this$props.isListField,\n name = _this$props.name;\n if (_this.cancelRegisterFunc) {\n _this.cancelRegisterFunc(isListField, preserve, getNamePath(name));\n }\n _this.cancelRegisterFunc = null;\n };\n _this.getNamePath = function () {\n var _this$props2 = _this.props,\n name = _this$props2.name,\n fieldContext = _this$props2.fieldContext;\n var _fieldContext$prefixN = fieldContext.prefixName,\n prefixName = _fieldContext$prefixN === void 0 ? [] : _fieldContext$prefixN;\n return name !== undefined ? [].concat(_toConsumableArray(prefixName), _toConsumableArray(name)) : [];\n };\n _this.getRules = function () {\n var _this$props3 = _this.props,\n _this$props3$rules = _this$props3.rules,\n rules = _this$props3$rules === void 0 ? [] : _this$props3$rules,\n fieldContext = _this$props3.fieldContext;\n return rules.map(function (rule) {\n if (typeof rule === 'function') {\n return rule(fieldContext);\n }\n return rule;\n });\n };\n _this.refresh = function () {\n if (!_this.mounted) return;\n /**\n * Clean up current node.\n */\n _this.setState(function (_ref) {\n var resetCount = _ref.resetCount;\n return {\n resetCount: resetCount + 1\n };\n });\n };\n _this.triggerMetaEvent = function (destroy) {\n var onMetaChange = _this.props.onMetaChange;\n onMetaChange === null || onMetaChange === void 0 ? void 0 : onMetaChange(_objectSpread(_objectSpread({}, _this.getMeta()), {}, {\n destroy: destroy\n }));\n };\n _this.onStoreChange = function (prevStore, namePathList, info) {\n var _this$props4 = _this.props,\n shouldUpdate = _this$props4.shouldUpdate,\n _this$props4$dependen = _this$props4.dependencies,\n dependencies = _this$props4$dependen === void 0 ? [] : _this$props4$dependen,\n onReset = _this$props4.onReset;\n var store = info.store;\n var namePath = _this.getNamePath();\n var prevValue = _this.getValue(prevStore);\n var curValue = _this.getValue(store);\n var namePathMatch = namePathList && containsNamePath(namePathList, namePath);\n // `setFieldsValue` is a quick access to update related status\n if (info.type === 'valueUpdate' && info.source === 'external' && prevValue !== curValue) {\n _this.touched = true;\n _this.dirty = true;\n _this.validatePromise = null;\n _this.errors = EMPTY_ERRORS;\n _this.warnings = EMPTY_ERRORS;\n _this.triggerMetaEvent();\n }\n switch (info.type) {\n case 'reset':\n if (!namePathList || namePathMatch) {\n // Clean up state\n _this.touched = false;\n _this.dirty = false;\n _this.validatePromise = null;\n _this.errors = EMPTY_ERRORS;\n _this.warnings = EMPTY_ERRORS;\n _this.triggerMetaEvent();\n onReset === null || onReset === void 0 ? void 0 : onReset();\n _this.refresh();\n return;\n }\n break;\n /**\n * In case field with `preserve = false` nest deps like:\n * - A = 1 => show B\n * - B = 1 => show C\n * - Reset A, need clean B, C\n */\n case 'remove':\n {\n if (shouldUpdate) {\n _this.reRender();\n return;\n }\n break;\n }\n case 'setField':\n {\n if (namePathMatch) {\n var data = info.data;\n if ('touched' in data) {\n _this.touched = data.touched;\n }\n if ('validating' in data && !('originRCField' in data)) {\n _this.validatePromise = data.validating ? Promise.resolve([]) : null;\n }\n if ('errors' in data) {\n _this.errors = data.errors || EMPTY_ERRORS;\n }\n if ('warnings' in data) {\n _this.warnings = data.warnings || EMPTY_ERRORS;\n }\n _this.dirty = true;\n _this.triggerMetaEvent();\n _this.reRender();\n return;\n }\n // Handle update by `setField` with `shouldUpdate`\n if (shouldUpdate && !namePath.length && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n _this.reRender();\n return;\n }\n break;\n }\n case 'dependenciesUpdate':\n {\n /**\n * Trigger when marked `dependencies` updated. Related fields will all update\n */\n var dependencyList = dependencies.map(getNamePath);\n // No need for `namePathMath` check and `shouldUpdate` check, since `valueUpdate` will be\n // emitted earlier and they will work there\n // If set it may cause unnecessary twice rerendering\n if (dependencyList.some(function (dependency) {\n return containsNamePath(info.relatedFields, dependency);\n })) {\n _this.reRender();\n return;\n }\n break;\n }\n default:\n // 1. If `namePath` exists in `namePathList`, means it's related value and should update\n // For example <List name=\"list\"><Field name={['list', 0]}></List>\n // If `namePathList` is [['list']] (List value update), Field should be updated\n // If `namePathList` is [['list', 0]] (Field value update), List shouldn't be updated\n // 2.\n // 2.1 If `dependencies` is set, `name` is not set and `shouldUpdate` is not set,\n // don't use `shouldUpdate`. `dependencies` is view as a shortcut if `shouldUpdate`\n // is not provided\n // 2.2 If `shouldUpdate` provided, use customize logic to update the field\n // else to check if value changed\n if (namePathMatch || (!dependencies.length || namePath.length || shouldUpdate) && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n _this.reRender();\n return;\n }\n break;\n }\n if (shouldUpdate === true) {\n _this.reRender();\n }\n };\n _this.validateRules = function (options) {\n // We should fixed namePath & value to avoid developer change then by form function\n var namePath = _this.getNamePath();\n var currentValue = _this.getValue();\n // Force change to async to avoid rule OOD under renderProps field\n var rootPromise = Promise.resolve().then(function () {\n if (!_this.mounted) {\n return [];\n }\n var _this$props5 = _this.props,\n _this$props5$validate = _this$props5.validateFirst,\n validateFirst = _this$props5$validate === void 0 ? false : _this$props5$validate,\n messageVariables = _this$props5.messageVariables;\n var _ref2 = options || {},\n triggerName = _ref2.triggerName;\n var filteredRules = _this.getRules();\n if (triggerName) {\n filteredRules = filteredRules.filter(function (rule) {\n return rule;\n }).filter(function (rule) {\n var validateTrigger = rule.validateTrigger;\n if (!validateTrigger) {\n return true;\n }\n var triggerList = toArray(validateTrigger);\n return triggerList.includes(triggerName);\n });\n }\n var promise = validateRules(namePath, currentValue, filteredRules, options, validateFirst, messageVariables);\n promise.catch(function (e) {\n return e;\n }).then(function () {\n var ruleErrors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : EMPTY_ERRORS;\n if (_this.validatePromise === rootPromise) {\n var _ruleErrors$forEach;\n _this.validatePromise = null;\n // Get errors & warnings\n var nextErrors = [];\n var nextWarnings = [];\n (_ruleErrors$forEach = ruleErrors.forEach) === null || _ruleErrors$forEach === void 0 ? void 0 : _ruleErrors$forEach.call(ruleErrors, function (_ref3) {\n var warningOnly = _ref3.rule.warningOnly,\n _ref3$errors = _ref3.errors,\n errors = _ref3$errors === void 0 ? EMPTY_ERRORS : _ref3$errors;\n if (warningOnly) {\n nextWarnings.push.apply(nextWarnings, _toConsumableArray(errors));\n } else {\n nextErrors.push.apply(nextErrors, _toConsumableArray(errors));\n }\n });\n _this.errors = nextErrors;\n _this.warnings = nextWarnings;\n _this.triggerMetaEvent();\n _this.reRender();\n }\n });\n return promise;\n });\n _this.validatePromise = rootPromise;\n _this.dirty = true;\n _this.errors = EMPTY_ERRORS;\n _this.warnings = EMPTY_ERRORS;\n _this.triggerMetaEvent();\n // Force trigger re-render since we need sync renderProps with new meta\n _this.reRender();\n return rootPromise;\n };\n _this.isFieldValidating = function () {\n return !!_this.validatePromise;\n };\n _this.isFieldTouched = function () {\n return _this.touched;\n };\n _this.isFieldDirty = function () {\n // Touched or validate or has initialValue\n if (_this.dirty || _this.props.initialValue !== undefined) {\n return true;\n }\n // Form set initialValue\n var fieldContext = _this.props.fieldContext;\n var _fieldContext$getInte = fieldContext.getInternalHooks(HOOK_MARK),\n getInitialValue = _fieldContext$getInte.getInitialValue;\n if (getInitialValue(_this.getNamePath()) !== undefined) {\n return true;\n }\n return false;\n };\n _this.getErrors = function () {\n return _this.errors;\n };\n _this.getWarnings = function () {\n return _this.warnings;\n };\n _this.isListField = function () {\n return _this.props.isListField;\n };\n _this.isList = function () {\n return _this.props.isList;\n };\n _this.isPreserve = function () {\n return _this.props.preserve;\n };\n _this.getMeta = function () {\n // Make error & validating in cache to save perf\n _this.prevValidating = _this.isFieldValidating();\n var meta = {\n touched: _this.isFieldTouched(),\n validating: _this.prevValidating,\n errors: _this.errors,\n warnings: _this.warnings,\n name: _this.getNamePath()\n };\n return meta;\n };\n _this.getOnlyChild = function (children) {\n // Support render props\n if (typeof children === 'function') {\n var meta = _this.getMeta();\n return _objectSpread(_objectSpread({}, _this.getOnlyChild(children(_this.getControlled(), meta, _this.props.fieldContext))), {}, {\n isFunction: true\n });\n }\n // Filed element only\n var childList = toChildrenArray(children);\n if (childList.length !== 1 || ! /*#__PURE__*/React.isValidElement(childList[0])) {\n return {\n child: childList,\n isFunction: false\n };\n }\n return {\n child: childList[0],\n isFunction: false\n };\n };\n _this.getValue = function (store) {\n var getFieldsValue = _this.props.fieldContext.getFieldsValue;\n var namePath = _this.getNamePath();\n return getValue(store || getFieldsValue(true), namePath);\n };\n _this.getControlled = function () {\n var childProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _this$props6 = _this.props,\n trigger = _this$props6.trigger,\n validateTrigger = _this$props6.validateTrigger,\n getValueFromEvent = _this$props6.getValueFromEvent,\n normalize = _this$props6.normalize,\n valuePropName = _this$props6.valuePropName,\n getValueProps = _this$props6.getValueProps,\n fieldContext = _this$props6.fieldContext;\n var mergedValidateTrigger = validateTrigger !== undefined ? validateTrigger : fieldContext.validateTrigger;\n var namePath = _this.getNamePath();\n var getInternalHooks = fieldContext.getInternalHooks,\n getFieldsValue = fieldContext.getFieldsValue;\n var _getInternalHooks = getInternalHooks(HOOK_MARK),\n dispatch = _getInternalHooks.dispatch;\n var value = _this.getValue();\n var mergedGetValueProps = getValueProps || function (val) {\n return _defineProperty({}, valuePropName, val);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var originTriggerFunc = childProps[trigger];\n var control = _objectSpread(_objectSpread({}, childProps), mergedGetValueProps(value));\n // Add trigger\n control[trigger] = function () {\n // Mark as touched\n _this.touched = true;\n _this.dirty = true;\n _this.triggerMetaEvent();\n var newValue;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (getValueFromEvent) {\n newValue = getValueFromEvent.apply(void 0, args);\n } else {\n newValue = defaultGetValueFromEvent.apply(void 0, [valuePropName].concat(args));\n }\n if (normalize) {\n newValue = normalize(newValue, value, getFieldsValue(true));\n }\n dispatch({\n type: 'updateValue',\n namePath: namePath,\n value: newValue\n });\n if (originTriggerFunc) {\n originTriggerFunc.apply(void 0, args);\n }\n };\n // Add validateTrigger\n var validateTriggerList = toArray(mergedValidateTrigger || []);\n validateTriggerList.forEach(function (triggerName) {\n // Wrap additional function of component, so that we can get latest value from store\n var originTrigger = control[triggerName];\n control[triggerName] = function () {\n if (originTrigger) {\n originTrigger.apply(void 0, arguments);\n }\n // Always use latest rules\n var rules = _this.props.rules;\n if (rules && rules.length) {\n // We dispatch validate to root,\n // since it will update related data with other field with same name\n dispatch({\n type: 'validateField',\n namePath: namePath,\n triggerName: triggerName\n });\n }\n };\n });\n return control;\n };\n if (props.fieldContext) {\n var getInternalHooks = props.fieldContext.getInternalHooks;\n var _getInternalHooks2 = getInternalHooks(HOOK_MARK),\n initEntityValue = _getInternalHooks2.initEntityValue;\n initEntityValue(_assertThisInitialized(_this));\n }\n return _this;\n }\n _createClass(Field, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props7 = this.props,\n shouldUpdate = _this$props7.shouldUpdate,\n fieldContext = _this$props7.fieldContext;\n this.mounted = true;\n // Register on init\n if (fieldContext) {\n var getInternalHooks = fieldContext.getInternalHooks;\n var _getInternalHooks3 = getInternalHooks(HOOK_MARK),\n registerField = _getInternalHooks3.registerField;\n this.cancelRegisterFunc = registerField(this);\n }\n // One more render for component in case fields not ready\n if (shouldUpdate === true) {\n this.reRender();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.cancelRegister();\n this.triggerMetaEvent(true);\n this.mounted = false;\n }\n }, {\n key: \"reRender\",\n value: function reRender() {\n if (!this.mounted) return;\n this.forceUpdate();\n }\n }, {\n key: \"render\",\n value: function render() {\n var resetCount = this.state.resetCount;\n var children = this.props.children;\n var _this$getOnlyChild = this.getOnlyChild(children),\n child = _this$getOnlyChild.child,\n isFunction = _this$getOnlyChild.isFunction;\n // Not need to `cloneElement` since user can handle this in render function self\n var returnChildNode;\n if (isFunction) {\n returnChildNode = child;\n } else if ( /*#__PURE__*/React.isValidElement(child)) {\n returnChildNode = /*#__PURE__*/React.cloneElement(child, this.getControlled(child.props));\n } else {\n warning(!child, '`children` of Field is not validate ReactElement.');\n returnChildNode = child;\n }\n return /*#__PURE__*/React.createElement(React.Fragment, {\n key: resetCount\n }, returnChildNode);\n }\n }]);\n return Field;\n}(React.Component);\nField.contextType = FieldContext;\nField.defaultProps = {\n trigger: 'onChange',\n valuePropName: 'value'\n};\nfunction WrapperField(_ref5) {\n var name = _ref5.name,\n restProps = _objectWithoutProperties(_ref5, _excluded);\n var fieldContext = React.useContext(FieldContext);\n var namePath = name !== undefined ? getNamePath(name) : undefined;\n var key = 'keep';\n if (!restProps.isListField) {\n key = \"_\".concat((namePath || []).join('_'));\n }\n // Warning if it's a directly list field.\n // We can still support multiple level field preserve.\n if (process.env.NODE_ENV !== 'production' && restProps.preserve === false && restProps.isListField && namePath.length <= 1) {\n warning(false, '`preserve` should not apply on Form.List fields.');\n }\n return /*#__PURE__*/React.createElement(Field, _extends({\n key: key,\n name: namePath\n }, restProps, {\n fieldContext: fieldContext\n }));\n}\nexport default WrapperField;","import * as React from 'react';\nvar ListContext = /*#__PURE__*/React.createContext(null);\nexport default ListContext;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport FieldContext from './FieldContext';\nimport Field from './Field';\nimport { move as _move, getNamePath } from './utils/valueUtil';\nimport ListContext from './ListContext';\nvar List = function List(_ref) {\n var name = _ref.name,\n initialValue = _ref.initialValue,\n children = _ref.children,\n rules = _ref.rules,\n validateTrigger = _ref.validateTrigger;\n var context = React.useContext(FieldContext);\n var keyRef = React.useRef({\n keys: [],\n id: 0\n });\n var keyManager = keyRef.current;\n var prefixName = React.useMemo(function () {\n var parentPrefixName = getNamePath(context.prefixName) || [];\n return [].concat(_toConsumableArray(parentPrefixName), _toConsumableArray(getNamePath(name)));\n }, [context.prefixName, name]);\n var fieldContext = React.useMemo(function () {\n return _objectSpread(_objectSpread({}, context), {}, {\n prefixName: prefixName\n });\n }, [context, prefixName]);\n // List context\n var listContext = React.useMemo(function () {\n return {\n getKey: function getKey(namePath) {\n var len = prefixName.length;\n var pathName = namePath[len];\n return [keyManager.keys[pathName], namePath.slice(len + 1)];\n }\n };\n }, [prefixName]);\n // User should not pass `children` as other type.\n if (typeof children !== 'function') {\n warning(false, 'Form.List only accepts function as children.');\n return null;\n }\n var shouldUpdate = function shouldUpdate(prevValue, nextValue, _ref2) {\n var source = _ref2.source;\n if (source === 'internal') {\n return false;\n }\n return prevValue !== nextValue;\n };\n return /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: listContext\n }, /*#__PURE__*/React.createElement(FieldContext.Provider, {\n value: fieldContext\n }, /*#__PURE__*/React.createElement(Field, {\n name: [],\n shouldUpdate: shouldUpdate,\n rules: rules,\n validateTrigger: validateTrigger,\n initialValue: initialValue,\n isList: true\n }, function (_ref3, meta) {\n var _ref3$value = _ref3.value,\n value = _ref3$value === void 0 ? [] : _ref3$value,\n onChange = _ref3.onChange;\n var getFieldValue = context.getFieldValue;\n var getNewValue = function getNewValue() {\n var values = getFieldValue(prefixName || []);\n return values || [];\n };\n /**\n * Always get latest value in case user update fields by `form` api.\n */\n var operations = {\n add: function add(defaultValue, index) {\n // Mapping keys\n var newValue = getNewValue();\n if (index >= 0 && index <= newValue.length) {\n keyManager.keys = [].concat(_toConsumableArray(keyManager.keys.slice(0, index)), [keyManager.id], _toConsumableArray(keyManager.keys.slice(index)));\n onChange([].concat(_toConsumableArray(newValue.slice(0, index)), [defaultValue], _toConsumableArray(newValue.slice(index))));\n } else {\n if (process.env.NODE_ENV !== 'production' && (index < 0 || index > newValue.length)) {\n warning(false, 'The second parameter of the add function should be a valid positive number.');\n }\n keyManager.keys = [].concat(_toConsumableArray(keyManager.keys), [keyManager.id]);\n onChange([].concat(_toConsumableArray(newValue), [defaultValue]));\n }\n keyManager.id += 1;\n },\n remove: function remove(index) {\n var newValue = getNewValue();\n var indexSet = new Set(Array.isArray(index) ? index : [index]);\n if (indexSet.size <= 0) {\n return;\n }\n keyManager.keys = keyManager.keys.filter(function (_, keysIndex) {\n return !indexSet.has(keysIndex);\n });\n // Trigger store change\n onChange(newValue.filter(function (_, valueIndex) {\n return !indexSet.has(valueIndex);\n }));\n },\n move: function move(from, to) {\n if (from === to) {\n return;\n }\n var newValue = getNewValue();\n // Do not handle out of range\n if (from < 0 || from >= newValue.length || to < 0 || to >= newValue.length) {\n return;\n }\n keyManager.keys = _move(keyManager.keys, from, to);\n // Trigger store change\n onChange(_move(newValue, from, to));\n }\n };\n var listValue = value || [];\n if (!Array.isArray(listValue)) {\n listValue = [];\n if (process.env.NODE_ENV !== 'production') {\n warning(false, \"Current value of '\".concat(prefixName.join(' > '), \"' is not an array type.\"));\n }\n }\n return children(listValue.map(function (__, index) {\n var key = keyManager.keys[index];\n if (key === undefined) {\n keyManager.keys[index] = keyManager.id;\n key = keyManager.keys[index];\n keyManager.id += 1;\n }\n return {\n name: index,\n key: key,\n isListField: true\n };\n }), operations, meta);\n })));\n};\nexport default List;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar SPLIT = '__@field_split__';\n/**\n * Convert name path into string to fast the fetch speed of Map.\n */\nfunction normalize(namePath) {\n return namePath.map(function (cell) {\n return \"\".concat(_typeof(cell), \":\").concat(cell);\n })\n // Magic split\n .join(SPLIT);\n}\n/**\n * NameMap like a `Map` but accepts `string[]` as key.\n */\nvar NameMap = /*#__PURE__*/function () {\n function NameMap() {\n _classCallCheck(this, NameMap);\n this.kvs = new Map();\n }\n _createClass(NameMap, [{\n key: \"set\",\n value: function set(key, value) {\n this.kvs.set(normalize(key), value);\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return this.kvs.get(normalize(key));\n }\n }, {\n key: \"update\",\n value: function update(key, updater) {\n var origin = this.get(key);\n var next = updater(origin);\n if (!next) {\n this.delete(key);\n } else {\n this.set(key, next);\n }\n }\n }, {\n key: \"delete\",\n value: function _delete(key) {\n this.kvs.delete(normalize(key));\n }\n // Since we only use this in test, let simply realize this\n }, {\n key: \"map\",\n value: function map(callback) {\n return _toConsumableArray(this.kvs.entries()).map(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n var cells = key.split(SPLIT);\n return callback({\n key: cells.map(function (cell) {\n var _cell$match = cell.match(/^([^:]*):(.*)$/),\n _cell$match2 = _slicedToArray(_cell$match, 3),\n type = _cell$match2[1],\n unit = _cell$match2[2];\n return type === 'number' ? Number(unit) : unit;\n }),\n value: value\n });\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var json = {};\n this.map(function (_ref3) {\n var key = _ref3.key,\n value = _ref3.value;\n json[key.join('.')] = value;\n return null;\n });\n return json;\n }\n }]);\n return NameMap;\n}();\nexport default NameMap;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nvar _excluded = [\"name\", \"errors\"];\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { HOOK_MARK } from './FieldContext';\nimport { allPromiseFinish } from './utils/asyncUtil';\nimport cloneDeep from './utils/cloneDeep';\nimport { defaultValidateMessages } from './utils/messages';\nimport NameMap from './utils/NameMap';\nimport { cloneByNamePathList, containsNamePath, getNamePath, getValue, matchNamePath, setValue, setValues } from './utils/valueUtil';\nexport var FormStore = /*#__PURE__*/_createClass(function FormStore(forceRootUpdate) {\n var _this = this;\n _classCallCheck(this, FormStore);\n this.formHooked = false;\n this.forceRootUpdate = void 0;\n this.subscribable = true;\n this.store = {};\n this.fieldEntities = [];\n this.initialValues = {};\n this.callbacks = {};\n this.validateMessages = null;\n this.preserve = null;\n this.lastValidatePromise = null;\n this.getForm = function () {\n return {\n getFieldValue: _this.getFieldValue,\n getFieldsValue: _this.getFieldsValue,\n getFieldError: _this.getFieldError,\n getFieldWarning: _this.getFieldWarning,\n getFieldsError: _this.getFieldsError,\n isFieldsTouched: _this.isFieldsTouched,\n isFieldTouched: _this.isFieldTouched,\n isFieldValidating: _this.isFieldValidating,\n isFieldsValidating: _this.isFieldsValidating,\n resetFields: _this.resetFields,\n setFields: _this.setFields,\n setFieldValue: _this.setFieldValue,\n setFieldsValue: _this.setFieldsValue,\n validateFields: _this.validateFields,\n submit: _this.submit,\n _init: true,\n getInternalHooks: _this.getInternalHooks\n };\n };\n this.getInternalHooks = function (key) {\n if (key === HOOK_MARK) {\n _this.formHooked = true;\n return {\n dispatch: _this.dispatch,\n initEntityValue: _this.initEntityValue,\n registerField: _this.registerField,\n useSubscribe: _this.useSubscribe,\n setInitialValues: _this.setInitialValues,\n destroyForm: _this.destroyForm,\n setCallbacks: _this.setCallbacks,\n setValidateMessages: _this.setValidateMessages,\n getFields: _this.getFields,\n setPreserve: _this.setPreserve,\n getInitialValue: _this.getInitialValue,\n registerWatch: _this.registerWatch\n };\n }\n warning(false, '`getInternalHooks` is internal usage. Should not call directly.');\n return null;\n };\n this.useSubscribe = function (subscribable) {\n _this.subscribable = subscribable;\n };\n this.prevWithoutPreserves = null;\n this.setInitialValues = function (initialValues, init) {\n _this.initialValues = initialValues || {};\n if (init) {\n var _this$prevWithoutPres;\n var nextStore = setValues({}, initialValues, _this.store);\n // We will take consider prev form unmount fields.\n // When the field is not `preserve`, we need fill this with initialValues instead of store.\n // eslint-disable-next-line array-callback-return\n (_this$prevWithoutPres = _this.prevWithoutPreserves) === null || _this$prevWithoutPres === void 0 ? void 0 : _this$prevWithoutPres.map(function (_ref) {\n var namePath = _ref.key;\n nextStore = setValue(nextStore, namePath, getValue(initialValues, namePath));\n });\n _this.prevWithoutPreserves = null;\n _this.updateStore(nextStore);\n }\n };\n this.destroyForm = function () {\n var prevWithoutPreserves = new NameMap();\n _this.getFieldEntities(true).forEach(function (entity) {\n if (!_this.isMergedPreserve(entity.isPreserve())) {\n prevWithoutPreserves.set(entity.getNamePath(), true);\n }\n });\n _this.prevWithoutPreserves = prevWithoutPreserves;\n };\n this.getInitialValue = function (namePath) {\n var initValue = getValue(_this.initialValues, namePath);\n // Not cloneDeep when without `namePath`\n return namePath.length ? cloneDeep(initValue) : initValue;\n };\n this.setCallbacks = function (callbacks) {\n _this.callbacks = callbacks;\n };\n this.setValidateMessages = function (validateMessages) {\n _this.validateMessages = validateMessages;\n };\n this.setPreserve = function (preserve) {\n _this.preserve = preserve;\n };\n this.watchList = [];\n this.registerWatch = function (callback) {\n _this.watchList.push(callback);\n return function () {\n _this.watchList = _this.watchList.filter(function (fn) {\n return fn !== callback;\n });\n };\n };\n this.notifyWatch = function () {\n var namePath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n // No need to cost perf when nothing need to watch\n if (_this.watchList.length) {\n var values = _this.getFieldsValue();\n _this.watchList.forEach(function (callback) {\n callback(values, namePath);\n });\n }\n };\n this.timeoutId = null;\n this.warningUnhooked = function () {\n if (process.env.NODE_ENV !== 'production' && !_this.timeoutId && typeof window !== 'undefined') {\n _this.timeoutId = setTimeout(function () {\n _this.timeoutId = null;\n if (!_this.formHooked) {\n warning(false, 'Instance created by `useForm` is not connected to any Form element. Forget to pass `form` prop?');\n }\n });\n }\n };\n this.updateStore = function (nextStore) {\n _this.store = nextStore;\n };\n this.getFieldEntities = function () {\n var pure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n if (!pure) {\n return _this.fieldEntities;\n }\n return _this.fieldEntities.filter(function (field) {\n return field.getNamePath().length;\n });\n };\n this.getFieldsMap = function () {\n var pure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var cache = new NameMap();\n _this.getFieldEntities(pure).forEach(function (field) {\n var namePath = field.getNamePath();\n cache.set(namePath, field);\n });\n return cache;\n };\n this.getFieldEntitiesForNamePathList = function (nameList) {\n if (!nameList) {\n return _this.getFieldEntities(true);\n }\n var cache = _this.getFieldsMap(true);\n return nameList.map(function (name) {\n var namePath = getNamePath(name);\n return cache.get(namePath) || {\n INVALIDATE_NAME_PATH: getNamePath(name)\n };\n });\n };\n this.getFieldsValue = function (nameList, filterFunc) {\n _this.warningUnhooked();\n if (nameList === true && !filterFunc) {\n return _this.store;\n }\n var fieldEntities = _this.getFieldEntitiesForNamePathList(Array.isArray(nameList) ? nameList : null);\n var filteredNameList = [];\n fieldEntities.forEach(function (entity) {\n var _entity$isListField;\n var namePath = 'INVALIDATE_NAME_PATH' in entity ? entity.INVALIDATE_NAME_PATH : entity.getNamePath();\n // Ignore when it's a list item and not specific the namePath,\n // since parent field is already take in count\n if (!nameList && ((_entity$isListField = entity.isListField) === null || _entity$isListField === void 0 ? void 0 : _entity$isListField.call(entity))) {\n return;\n }\n if (!filterFunc) {\n filteredNameList.push(namePath);\n } else {\n var meta = 'getMeta' in entity ? entity.getMeta() : null;\n if (filterFunc(meta)) {\n filteredNameList.push(namePath);\n }\n }\n });\n return cloneByNamePathList(_this.store, filteredNameList.map(getNamePath));\n };\n this.getFieldValue = function (name) {\n _this.warningUnhooked();\n var namePath = getNamePath(name);\n return getValue(_this.store, namePath);\n };\n this.getFieldsError = function (nameList) {\n _this.warningUnhooked();\n var fieldEntities = _this.getFieldEntitiesForNamePathList(nameList);\n return fieldEntities.map(function (entity, index) {\n if (entity && !('INVALIDATE_NAME_PATH' in entity)) {\n return {\n name: entity.getNamePath(),\n errors: entity.getErrors(),\n warnings: entity.getWarnings()\n };\n }\n return {\n name: getNamePath(nameList[index]),\n errors: [],\n warnings: []\n };\n });\n };\n this.getFieldError = function (name) {\n _this.warningUnhooked();\n var namePath = getNamePath(name);\n var fieldError = _this.getFieldsError([namePath])[0];\n return fieldError.errors;\n };\n this.getFieldWarning = function (name) {\n _this.warningUnhooked();\n var namePath = getNamePath(name);\n var fieldError = _this.getFieldsError([namePath])[0];\n return fieldError.warnings;\n };\n this.isFieldsTouched = function () {\n _this.warningUnhooked();\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var arg0 = args[0],\n arg1 = args[1];\n var namePathList;\n var isAllFieldsTouched = false;\n if (args.length === 0) {\n namePathList = null;\n } else if (args.length === 1) {\n if (Array.isArray(arg0)) {\n namePathList = arg0.map(getNamePath);\n isAllFieldsTouched = false;\n } else {\n namePathList = null;\n isAllFieldsTouched = arg0;\n }\n } else {\n namePathList = arg0.map(getNamePath);\n isAllFieldsTouched = arg1;\n }\n var fieldEntities = _this.getFieldEntities(true);\n var isFieldTouched = function isFieldTouched(field) {\n return field.isFieldTouched();\n };\n // ===== Will get fully compare when not config namePathList =====\n if (!namePathList) {\n return isAllFieldsTouched ? fieldEntities.every(isFieldTouched) : fieldEntities.some(isFieldTouched);\n }\n // Generate a nest tree for validate\n var map = new NameMap();\n namePathList.forEach(function (shortNamePath) {\n map.set(shortNamePath, []);\n });\n fieldEntities.forEach(function (field) {\n var fieldNamePath = field.getNamePath();\n // Find matched entity and put into list\n namePathList.forEach(function (shortNamePath) {\n if (shortNamePath.every(function (nameUnit, i) {\n return fieldNamePath[i] === nameUnit;\n })) {\n map.update(shortNamePath, function (list) {\n return [].concat(_toConsumableArray(list), [field]);\n });\n }\n });\n });\n // Check if NameMap value is touched\n var isNamePathListTouched = function isNamePathListTouched(entities) {\n return entities.some(isFieldTouched);\n };\n var namePathListEntities = map.map(function (_ref2) {\n var value = _ref2.value;\n return value;\n });\n return isAllFieldsTouched ? namePathListEntities.every(isNamePathListTouched) : namePathListEntities.some(isNamePathListTouched);\n };\n this.isFieldTouched = function (name) {\n _this.warningUnhooked();\n return _this.isFieldsTouched([name]);\n };\n this.isFieldsValidating = function (nameList) {\n _this.warningUnhooked();\n var fieldEntities = _this.getFieldEntities();\n if (!nameList) {\n return fieldEntities.some(function (testField) {\n return testField.isFieldValidating();\n });\n }\n var namePathList = nameList.map(getNamePath);\n return fieldEntities.some(function (testField) {\n var fieldNamePath = testField.getNamePath();\n return containsNamePath(namePathList, fieldNamePath) && testField.isFieldValidating();\n });\n };\n this.isFieldValidating = function (name) {\n _this.warningUnhooked();\n return _this.isFieldsValidating([name]);\n };\n this.resetWithFieldInitialValue = function () {\n var info = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Create cache\n var cache = new NameMap();\n var fieldEntities = _this.getFieldEntities(true);\n fieldEntities.forEach(function (field) {\n var initialValue = field.props.initialValue;\n var namePath = field.getNamePath();\n // Record only if has `initialValue`\n if (initialValue !== undefined) {\n var records = cache.get(namePath) || new Set();\n records.add({\n entity: field,\n value: initialValue\n });\n cache.set(namePath, records);\n }\n });\n // Reset\n var resetWithFields = function resetWithFields(entities) {\n entities.forEach(function (field) {\n var initialValue = field.props.initialValue;\n if (initialValue !== undefined) {\n var namePath = field.getNamePath();\n var formInitialValue = _this.getInitialValue(namePath);\n if (formInitialValue !== undefined) {\n // Warning if conflict with form initialValues and do not modify value\n warning(false, \"Form already set 'initialValues' with path '\".concat(namePath.join('.'), \"'. Field can not overwrite it.\"));\n } else {\n var records = cache.get(namePath);\n if (records && records.size > 1) {\n // Warning if multiple field set `initialValue`and do not modify value\n warning(false, \"Multiple Field with path '\".concat(namePath.join('.'), \"' set 'initialValue'. Can not decide which one to pick.\"));\n } else if (records) {\n var originValue = _this.getFieldValue(namePath);\n // Set `initialValue`\n if (!info.skipExist || originValue === undefined) {\n _this.updateStore(setValue(_this.store, namePath, _toConsumableArray(records)[0].value));\n }\n }\n }\n }\n });\n };\n var requiredFieldEntities;\n if (info.entities) {\n requiredFieldEntities = info.entities;\n } else if (info.namePathList) {\n requiredFieldEntities = [];\n info.namePathList.forEach(function (namePath) {\n var records = cache.get(namePath);\n if (records) {\n var _requiredFieldEntitie;\n (_requiredFieldEntitie = requiredFieldEntities).push.apply(_requiredFieldEntitie, _toConsumableArray(_toConsumableArray(records).map(function (r) {\n return r.entity;\n })));\n }\n });\n } else {\n requiredFieldEntities = fieldEntities;\n }\n resetWithFields(requiredFieldEntities);\n };\n this.resetFields = function (nameList) {\n _this.warningUnhooked();\n var prevStore = _this.store;\n if (!nameList) {\n _this.updateStore(setValues({}, _this.initialValues));\n _this.resetWithFieldInitialValue();\n _this.notifyObservers(prevStore, null, {\n type: 'reset'\n });\n _this.notifyWatch();\n return;\n }\n // Reset by `nameList`\n var namePathList = nameList.map(getNamePath);\n namePathList.forEach(function (namePath) {\n var initialValue = _this.getInitialValue(namePath);\n _this.updateStore(setValue(_this.store, namePath, initialValue));\n });\n _this.resetWithFieldInitialValue({\n namePathList: namePathList\n });\n _this.notifyObservers(prevStore, namePathList, {\n type: 'reset'\n });\n _this.notifyWatch(namePathList);\n };\n this.setFields = function (fields) {\n _this.warningUnhooked();\n var prevStore = _this.store;\n var namePathList = [];\n fields.forEach(function (fieldData) {\n var name = fieldData.name,\n errors = fieldData.errors,\n data = _objectWithoutProperties(fieldData, _excluded);\n var namePath = getNamePath(name);\n namePathList.push(namePath);\n // Value\n if ('value' in data) {\n _this.updateStore(setValue(_this.store, namePath, data.value));\n }\n _this.notifyObservers(prevStore, [namePath], {\n type: 'setField',\n data: fieldData\n });\n });\n _this.notifyWatch(namePathList);\n };\n this.getFields = function () {\n var entities = _this.getFieldEntities(true);\n var fields = entities.map(function (field) {\n var namePath = field.getNamePath();\n var meta = field.getMeta();\n var fieldData = _objectSpread(_objectSpread({}, meta), {}, {\n name: namePath,\n value: _this.getFieldValue(namePath)\n });\n Object.defineProperty(fieldData, 'originRCField', {\n value: true\n });\n return fieldData;\n });\n return fields;\n };\n this.initEntityValue = function (entity) {\n var initialValue = entity.props.initialValue;\n if (initialValue !== undefined) {\n var namePath = entity.getNamePath();\n var prevValue = getValue(_this.store, namePath);\n if (prevValue === undefined) {\n _this.updateStore(setValue(_this.store, namePath, initialValue));\n }\n }\n };\n this.isMergedPreserve = function (fieldPreserve) {\n var mergedPreserve = fieldPreserve !== undefined ? fieldPreserve : _this.preserve;\n return mergedPreserve !== null && mergedPreserve !== void 0 ? mergedPreserve : true;\n };\n this.registerField = function (entity) {\n _this.fieldEntities.push(entity);\n var namePath = entity.getNamePath();\n _this.notifyWatch([namePath]);\n // Set initial values\n if (entity.props.initialValue !== undefined) {\n var prevStore = _this.store;\n _this.resetWithFieldInitialValue({\n entities: [entity],\n skipExist: true\n });\n _this.notifyObservers(prevStore, [entity.getNamePath()], {\n type: 'valueUpdate',\n source: 'internal'\n });\n }\n // un-register field callback\n return function (isListField, preserve) {\n var subNamePath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n _this.fieldEntities = _this.fieldEntities.filter(function (item) {\n return item !== entity;\n });\n // Clean up store value if not preserve\n if (!_this.isMergedPreserve(preserve) && (!isListField || subNamePath.length > 1)) {\n var defaultValue = isListField ? undefined : _this.getInitialValue(namePath);\n if (namePath.length && _this.getFieldValue(namePath) !== defaultValue && _this.fieldEntities.every(function (field) {\n return (\n // Only reset when no namePath exist\n !matchNamePath(field.getNamePath(), namePath)\n );\n })) {\n var _prevStore = _this.store;\n _this.updateStore(setValue(_prevStore, namePath, defaultValue, true));\n // Notify that field is unmount\n _this.notifyObservers(_prevStore, [namePath], {\n type: 'remove'\n });\n // Dependencies update\n _this.triggerDependenciesUpdate(_prevStore, namePath);\n }\n }\n _this.notifyWatch([namePath]);\n };\n };\n this.dispatch = function (action) {\n switch (action.type) {\n case 'updateValue':\n {\n var namePath = action.namePath,\n value = action.value;\n _this.updateValue(namePath, value);\n break;\n }\n case 'validateField':\n {\n var _namePath = action.namePath,\n triggerName = action.triggerName;\n _this.validateFields([_namePath], {\n triggerName: triggerName\n });\n break;\n }\n default:\n // Currently we don't have other action. Do nothing.\n }\n };\n this.notifyObservers = function (prevStore, namePathList, info) {\n if (_this.subscribable) {\n var mergedInfo = _objectSpread(_objectSpread({}, info), {}, {\n store: _this.getFieldsValue(true)\n });\n _this.getFieldEntities().forEach(function (_ref3) {\n var onStoreChange = _ref3.onStoreChange;\n onStoreChange(prevStore, namePathList, mergedInfo);\n });\n } else {\n _this.forceRootUpdate();\n }\n };\n this.triggerDependenciesUpdate = function (prevStore, namePath) {\n var childrenFields = _this.getDependencyChildrenFields(namePath);\n if (childrenFields.length) {\n _this.validateFields(childrenFields);\n }\n _this.notifyObservers(prevStore, childrenFields, {\n type: 'dependenciesUpdate',\n relatedFields: [namePath].concat(_toConsumableArray(childrenFields))\n });\n return childrenFields;\n };\n this.updateValue = function (name, value) {\n var namePath = getNamePath(name);\n var prevStore = _this.store;\n _this.updateStore(setValue(_this.store, namePath, value));\n _this.notifyObservers(prevStore, [namePath], {\n type: 'valueUpdate',\n source: 'internal'\n });\n _this.notifyWatch([namePath]);\n // Dependencies update\n var childrenFields = _this.triggerDependenciesUpdate(prevStore, namePath);\n // trigger callback function\n var onValuesChange = _this.callbacks.onValuesChange;\n if (onValuesChange) {\n var changedValues = cloneByNamePathList(_this.store, [namePath]);\n onValuesChange(changedValues, _this.getFieldsValue());\n }\n _this.triggerOnFieldsChange([namePath].concat(_toConsumableArray(childrenFields)));\n };\n this.setFieldsValue = function (store) {\n _this.warningUnhooked();\n var prevStore = _this.store;\n if (store) {\n var nextStore = setValues(_this.store, store);\n _this.updateStore(nextStore);\n }\n _this.notifyObservers(prevStore, null, {\n type: 'valueUpdate',\n source: 'external'\n });\n _this.notifyWatch();\n };\n this.setFieldValue = function (name, value) {\n _this.setFields([{\n name: name,\n value: value\n }]);\n };\n this.getDependencyChildrenFields = function (rootNamePath) {\n var children = new Set();\n var childrenFields = [];\n var dependencies2fields = new NameMap();\n /**\n * Generate maps\n * Can use cache to save perf if user report performance issue with this\n */\n _this.getFieldEntities().forEach(function (field) {\n var dependencies = field.props.dependencies;\n (dependencies || []).forEach(function (dependency) {\n var dependencyNamePath = getNamePath(dependency);\n dependencies2fields.update(dependencyNamePath, function () {\n var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Set();\n fields.add(field);\n return fields;\n });\n });\n });\n var fillChildren = function fillChildren(namePath) {\n var fields = dependencies2fields.get(namePath) || new Set();\n fields.forEach(function (field) {\n if (!children.has(field)) {\n children.add(field);\n var fieldNamePath = field.getNamePath();\n if (field.isFieldDirty() && fieldNamePath.length) {\n childrenFields.push(fieldNamePath);\n fillChildren(fieldNamePath);\n }\n }\n });\n };\n fillChildren(rootNamePath);\n return childrenFields;\n };\n this.triggerOnFieldsChange = function (namePathList, filedErrors) {\n var onFieldsChange = _this.callbacks.onFieldsChange;\n if (onFieldsChange) {\n var fields = _this.getFields();\n /**\n * Fill errors since `fields` may be replaced by controlled fields\n */\n if (filedErrors) {\n var cache = new NameMap();\n filedErrors.forEach(function (_ref4) {\n var name = _ref4.name,\n errors = _ref4.errors;\n cache.set(name, errors);\n });\n fields.forEach(function (field) {\n // eslint-disable-next-line no-param-reassign\n field.errors = cache.get(field.name) || field.errors;\n });\n }\n var changedFields = fields.filter(function (_ref5) {\n var fieldName = _ref5.name;\n return containsNamePath(namePathList, fieldName);\n });\n onFieldsChange(changedFields, fields);\n }\n };\n this.validateFields = function (nameList, options) {\n _this.warningUnhooked();\n var provideNameList = !!nameList;\n var namePathList = provideNameList ? nameList.map(getNamePath) : [];\n // Collect result in promise list\n var promiseList = [];\n _this.getFieldEntities(true).forEach(function (field) {\n // Add field if not provide `nameList`\n if (!provideNameList) {\n namePathList.push(field.getNamePath());\n }\n /**\n * Recursive validate if configured.\n * TODO: perf improvement @zombieJ\n */\n if ((options === null || options === void 0 ? void 0 : options.recursive) && provideNameList) {\n var namePath = field.getNamePath();\n if (\n // nameList[i] === undefined 说明是以 nameList 开头的\n // ['name'] -> ['name','list']\n namePath.every(function (nameUnit, i) {\n return nameList[i] === nameUnit || nameList[i] === undefined;\n })) {\n namePathList.push(namePath);\n }\n }\n // Skip if without rule\n if (!field.props.rules || !field.props.rules.length) {\n return;\n }\n var fieldNamePath = field.getNamePath();\n // Add field validate rule in to promise list\n if (!provideNameList || containsNamePath(namePathList, fieldNamePath)) {\n var promise = field.validateRules(_objectSpread({\n validateMessages: _objectSpread(_objectSpread({}, defaultValidateMessages), _this.validateMessages)\n }, options));\n // Wrap promise with field\n promiseList.push(promise.then(function () {\n return {\n name: fieldNamePath,\n errors: [],\n warnings: []\n };\n }).catch(function (ruleErrors) {\n var _ruleErrors$forEach;\n var mergedErrors = [];\n var mergedWarnings = [];\n (_ruleErrors$forEach = ruleErrors.forEach) === null || _ruleErrors$forEach === void 0 ? void 0 : _ruleErrors$forEach.call(ruleErrors, function (_ref6) {\n var warningOnly = _ref6.rule.warningOnly,\n errors = _ref6.errors;\n if (warningOnly) {\n mergedWarnings.push.apply(mergedWarnings, _toConsumableArray(errors));\n } else {\n mergedErrors.push.apply(mergedErrors, _toConsumableArray(errors));\n }\n });\n if (mergedErrors.length) {\n return Promise.reject({\n name: fieldNamePath,\n errors: mergedErrors,\n warnings: mergedWarnings\n });\n }\n return {\n name: fieldNamePath,\n errors: mergedErrors,\n warnings: mergedWarnings\n };\n }));\n }\n });\n var summaryPromise = allPromiseFinish(promiseList);\n _this.lastValidatePromise = summaryPromise;\n // Notify fields with rule that validate has finished and need update\n summaryPromise.catch(function (results) {\n return results;\n }).then(function (results) {\n var resultNamePathList = results.map(function (_ref7) {\n var name = _ref7.name;\n return name;\n });\n _this.notifyObservers(_this.store, resultNamePathList, {\n type: 'validateFinish'\n });\n _this.triggerOnFieldsChange(resultNamePathList, results);\n });\n var returnPromise = summaryPromise.then(function () {\n if (_this.lastValidatePromise === summaryPromise) {\n return Promise.resolve(_this.getFieldsValue(namePathList));\n }\n return Promise.reject([]);\n }).catch(function (results) {\n var errorList = results.filter(function (result) {\n return result && result.errors.length;\n });\n return Promise.reject({\n values: _this.getFieldsValue(namePathList),\n errorFields: errorList,\n outOfDate: _this.lastValidatePromise !== summaryPromise\n });\n });\n // Do not throw in console\n returnPromise.catch(function (e) {\n return e;\n });\n return returnPromise;\n };\n this.submit = function () {\n _this.warningUnhooked();\n _this.validateFields().then(function (values) {\n var onFinish = _this.callbacks.onFinish;\n if (onFinish) {\n try {\n onFinish(values);\n } catch (err) {\n // Should print error if user `onFinish` callback failed\n console.error(err);\n }\n }\n }).catch(function (e) {\n var onFinishFailed = _this.callbacks.onFinishFailed;\n if (onFinishFailed) {\n onFinishFailed(e);\n }\n });\n };\n this.forceRootUpdate = forceRootUpdate;\n});\nfunction useForm(form) {\n var formRef = React.useRef();\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n forceUpdate = _React$useState2[1];\n if (!formRef.current) {\n if (form) {\n formRef.current = form;\n } else {\n // Create a new FormStore if not provided\n var forceReRender = function forceReRender() {\n forceUpdate({});\n };\n var formStore = new FormStore(forceReRender);\n formRef.current = formStore.getForm();\n }\n }\n return [formRef.current];\n}\nexport default useForm;","export function allPromiseFinish(promiseList) {\n var hasError = false;\n var count = promiseList.length;\n var results = [];\n if (!promiseList.length) {\n return Promise.resolve([]);\n }\n return new Promise(function (resolve, reject) {\n promiseList.forEach(function (promise, index) {\n promise.catch(function (e) {\n hasError = true;\n return e;\n }).then(function (result) {\n count -= 1;\n results[index] = result;\n if (count > 0) {\n return;\n }\n if (hasError) {\n reject(results);\n }\n resolve(results);\n });\n });\n });\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nvar FormContext = /*#__PURE__*/React.createContext({\n triggerFormChange: function triggerFormChange() {},\n triggerFormFinish: function triggerFormFinish() {},\n registerForm: function registerForm() {},\n unregisterForm: function unregisterForm() {}\n});\nvar FormProvider = function FormProvider(_ref) {\n var validateMessages = _ref.validateMessages,\n onFormChange = _ref.onFormChange,\n onFormFinish = _ref.onFormFinish,\n children = _ref.children;\n var formContext = React.useContext(FormContext);\n var formsRef = React.useRef({});\n return /*#__PURE__*/React.createElement(FormContext.Provider, {\n value: _objectSpread(_objectSpread({}, formContext), {}, {\n validateMessages: _objectSpread(_objectSpread({}, formContext.validateMessages), validateMessages),\n // =========================================================\n // = Global Form Control =\n // =========================================================\n triggerFormChange: function triggerFormChange(name, changedFields) {\n if (onFormChange) {\n onFormChange(name, {\n changedFields: changedFields,\n forms: formsRef.current\n });\n }\n formContext.triggerFormChange(name, changedFields);\n },\n triggerFormFinish: function triggerFormFinish(name, values) {\n if (onFormFinish) {\n onFormFinish(name, {\n values: values,\n forms: formsRef.current\n });\n }\n formContext.triggerFormFinish(name, values);\n },\n registerForm: function registerForm(name, form) {\n if (name) {\n formsRef.current = _objectSpread(_objectSpread({}, formsRef.current), {}, _defineProperty({}, name, form));\n }\n formContext.registerForm(name, form);\n },\n unregisterForm: function unregisterForm(name) {\n var newForms = _objectSpread({}, formsRef.current);\n delete newForms[name];\n formsRef.current = newForms;\n formContext.unregisterForm(name);\n }\n })\n }, children);\n};\nexport { FormProvider };\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"name\", \"initialValues\", \"fields\", \"form\", \"preserve\", \"children\", \"component\", \"validateMessages\", \"validateTrigger\", \"onValuesChange\", \"onFieldsChange\", \"onFinish\", \"onFinishFailed\"];\nimport * as React from 'react';\nimport useForm from './useForm';\nimport FieldContext, { HOOK_MARK } from './FieldContext';\nimport FormContext from './FormContext';\nimport { isSimilar } from './utils/valueUtil';\nvar Form = function Form(_ref, ref) {\n var name = _ref.name,\n initialValues = _ref.initialValues,\n fields = _ref.fields,\n form = _ref.form,\n preserve = _ref.preserve,\n children = _ref.children,\n _ref$component = _ref.component,\n Component = _ref$component === void 0 ? 'form' : _ref$component,\n validateMessages = _ref.validateMessages,\n _ref$validateTrigger = _ref.validateTrigger,\n validateTrigger = _ref$validateTrigger === void 0 ? 'onChange' : _ref$validateTrigger,\n onValuesChange = _ref.onValuesChange,\n _onFieldsChange = _ref.onFieldsChange,\n _onFinish = _ref.onFinish,\n onFinishFailed = _ref.onFinishFailed,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var formContext = React.useContext(FormContext);\n // We customize handle event since Context will makes all the consumer re-render:\n // https://reactjs.org/docs/context.html#contextprovider\n var _useForm = useForm(form),\n _useForm2 = _slicedToArray(_useForm, 1),\n formInstance = _useForm2[0];\n var _formInstance$getInte = formInstance.getInternalHooks(HOOK_MARK),\n useSubscribe = _formInstance$getInte.useSubscribe,\n setInitialValues = _formInstance$getInte.setInitialValues,\n setCallbacks = _formInstance$getInte.setCallbacks,\n setValidateMessages = _formInstance$getInte.setValidateMessages,\n setPreserve = _formInstance$getInte.setPreserve,\n destroyForm = _formInstance$getInte.destroyForm;\n // Pass ref with form instance\n React.useImperativeHandle(ref, function () {\n return formInstance;\n });\n // Register form into Context\n React.useEffect(function () {\n formContext.registerForm(name, formInstance);\n return function () {\n formContext.unregisterForm(name);\n };\n }, [formContext, formInstance, name]);\n // Pass props to store\n setValidateMessages(_objectSpread(_objectSpread({}, formContext.validateMessages), validateMessages));\n setCallbacks({\n onValuesChange: onValuesChange,\n onFieldsChange: function onFieldsChange(changedFields) {\n formContext.triggerFormChange(name, changedFields);\n if (_onFieldsChange) {\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n _onFieldsChange.apply(void 0, [changedFields].concat(rest));\n }\n },\n onFinish: function onFinish(values) {\n formContext.triggerFormFinish(name, values);\n if (_onFinish) {\n _onFinish(values);\n }\n },\n onFinishFailed: onFinishFailed\n });\n setPreserve(preserve);\n // Set initial value, init store value when first mount\n var mountRef = React.useRef(null);\n setInitialValues(initialValues, !mountRef.current);\n if (!mountRef.current) {\n mountRef.current = true;\n }\n React.useEffect(function () {\n return destroyForm;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n // Prepare children by `children` type\n var childrenNode;\n var childrenRenderProps = typeof children === 'function';\n if (childrenRenderProps) {\n var values = formInstance.getFieldsValue(true);\n childrenNode = children(values, formInstance);\n } else {\n childrenNode = children;\n }\n // Not use subscribe when using render props\n useSubscribe(!childrenRenderProps);\n // Listen if fields provided. We use ref to save prev data here to avoid additional render\n var prevFieldsRef = React.useRef();\n React.useEffect(function () {\n if (!isSimilar(prevFieldsRef.current || [], fields || [])) {\n formInstance.setFields(fields || []);\n }\n prevFieldsRef.current = fields;\n }, [fields, formInstance]);\n var formContextValue = React.useMemo(function () {\n return _objectSpread(_objectSpread({}, formInstance), {}, {\n validateTrigger: validateTrigger\n });\n }, [formInstance, validateTrigger]);\n var wrapperNode = /*#__PURE__*/React.createElement(FieldContext.Provider, {\n value: formContextValue\n }, childrenNode);\n if (Component === false) {\n return wrapperNode;\n }\n return /*#__PURE__*/React.createElement(Component, _extends({}, restProps, {\n onSubmit: function onSubmit(event) {\n event.preventDefault();\n event.stopPropagation();\n formInstance.submit();\n },\n onReset: function onReset(event) {\n var _restProps$onReset;\n event.preventDefault();\n formInstance.resetFields();\n (_restProps$onReset = restProps.onReset) === null || _restProps$onReset === void 0 ? void 0 : _restProps$onReset.call(restProps, event);\n }\n }), wrapperNode);\n};\nexport default Form;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { FieldContext } from '.';\nimport warning from \"rc-util/es/warning\";\nimport { HOOK_MARK } from './FieldContext';\nimport { useState, useContext, useEffect, useRef, useMemo } from 'react';\nimport { getNamePath, getValue } from './utils/valueUtil';\nexport function stringify(value) {\n try {\n return JSON.stringify(value);\n } catch (err) {\n return Math.random();\n }\n}\nvar useWatchWarning = process.env.NODE_ENV !== 'production' ? function (namePath) {\n var fullyStr = namePath.join('__RC_FIELD_FORM_SPLIT__');\n var nameStrRef = useRef(fullyStr);\n warning(nameStrRef.current === fullyStr, '`useWatch` is not support dynamic `namePath`. Please provide static instead.');\n} : function () {};\nfunction useWatch() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var _args$ = args[0],\n dependencies = _args$ === void 0 ? [] : _args$,\n form = args[1];\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n value = _useState2[0],\n setValue = _useState2[1];\n var valueStr = useMemo(function () {\n return stringify(value);\n }, [value]);\n var valueStrRef = useRef(valueStr);\n valueStrRef.current = valueStr;\n var fieldContext = useContext(FieldContext);\n var formInstance = form || fieldContext;\n var isValidForm = formInstance && formInstance._init;\n // Warning if not exist form instance\n if (process.env.NODE_ENV !== 'production') {\n warning(args.length === 2 ? form ? isValidForm : true : isValidForm, 'useWatch requires a form instance since it can not auto detect from context.');\n }\n var namePath = getNamePath(dependencies);\n var namePathRef = useRef(namePath);\n namePathRef.current = namePath;\n useWatchWarning(namePath);\n useEffect(function () {\n // Skip if not exist form instance\n if (!isValidForm) {\n return;\n }\n var getFieldsValue = formInstance.getFieldsValue,\n getInternalHooks = formInstance.getInternalHooks;\n var _getInternalHooks = getInternalHooks(HOOK_MARK),\n registerWatch = _getInternalHooks.registerWatch;\n var cancelRegister = registerWatch(function (store) {\n var newValue = getValue(store, namePathRef.current);\n var nextValueStr = stringify(newValue);\n // Compare stringify in case it's nest object\n if (valueStrRef.current !== nextValueStr) {\n valueStrRef.current = nextValueStr;\n setValue(newValue);\n }\n });\n // TODO: We can improve this perf in future\n var initialValue = getValue(getFieldsValue(), namePathRef.current);\n setValue(initialValue);\n return cancelRegister;\n },\n // We do not need re-register since namePath content is the same\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isValidForm]);\n return value;\n}\nexport default useWatch;","import * as React from 'react';\nimport Field from './Field';\nimport List from './List';\nimport useForm from './useForm';\nimport FieldForm from './Form';\nimport { FormProvider } from './FormContext';\nimport FieldContext from './FieldContext';\nimport ListContext from './ListContext';\nimport useWatch from './useWatch';\nvar InternalForm = /*#__PURE__*/React.forwardRef(FieldForm);\nvar RefForm = InternalForm;\nRefForm.FormProvider = FormProvider;\nRefForm.Field = Field;\nRefForm.List = List;\nRefForm.useForm = useForm;\nRefForm.useWatch = useWatch;\nexport { Field, List, useForm, FormProvider, FieldContext, ListContext, useWatch };\nexport default RefForm;","import * as React from 'react';\nexport var IdContext = /*#__PURE__*/React.createContext(null);\nexport function getMenuId(uuid, eventKey) {\n if (uuid === undefined) {\n return null;\n }\n return \"\".concat(uuid, \"-\").concat(eventKey);\n}\n\n/**\n * Get `data-menu-id`\n */\nexport function useMenuId(eventKey) {\n var id = React.useContext(IdContext);\n return getMenuId(id, eventKey);\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar _excluded = [\"children\", \"locked\"];\nimport * as React from 'react';\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport isEqual from \"rc-util/es/isEqual\";\nexport var MenuContext = /*#__PURE__*/React.createContext(null);\nfunction mergeProps(origin, target) {\n var clone = _objectSpread({}, origin);\n Object.keys(target).forEach(function (key) {\n var value = target[key];\n if (value !== undefined) {\n clone[key] = value;\n }\n });\n return clone;\n}\nexport default function InheritableContextProvider(_ref) {\n var children = _ref.children,\n locked = _ref.locked,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var context = React.useContext(MenuContext);\n var inheritableContext = useMemo(function () {\n return mergeProps(context, restProps);\n }, [context, restProps], function (prev, next) {\n return !locked && (prev[0] !== next[0] || !isEqual(prev[1], next[1], true));\n });\n return /*#__PURE__*/React.createElement(MenuContext.Provider, {\n value: inheritableContext\n }, children);\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nvar EmptyList = [];\n\n// ========================= Path Register =========================\n\nexport var PathRegisterContext = /*#__PURE__*/React.createContext(null);\nexport function useMeasure() {\n return React.useContext(PathRegisterContext);\n}\n\n// ========================= Path Tracker ==========================\nexport var PathTrackerContext = /*#__PURE__*/React.createContext(EmptyList);\nexport function useFullPath(eventKey) {\n var parentKeyPath = React.useContext(PathTrackerContext);\n return React.useMemo(function () {\n return eventKey !== undefined ? [].concat(_toConsumableArray(parentKeyPath), [eventKey]) : parentKeyPath;\n }, [parentKeyPath, eventKey]);\n}\n\n// =========================== Path User ===========================\n\nexport var PathUserContext = /*#__PURE__*/React.createContext(null);","import * as React from 'react';\nvar PrivateContext = /*#__PURE__*/React.createContext({});\nexport default PrivateContext;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport raf from \"rc-util/es/raf\";\nimport { getFocusNodeList } from \"rc-util/es/Dom/focus\";\nimport { getMenuId } from \"../context/IdContext\";\n\n// destruct to reduce minify size\nvar LEFT = KeyCode.LEFT,\n RIGHT = KeyCode.RIGHT,\n UP = KeyCode.UP,\n DOWN = KeyCode.DOWN,\n ENTER = KeyCode.ENTER,\n ESC = KeyCode.ESC,\n HOME = KeyCode.HOME,\n END = KeyCode.END;\nvar ArrowKeys = [UP, DOWN, LEFT, RIGHT];\nfunction getOffset(mode, isRootLevel, isRtl, which) {\n var _inline, _horizontal, _vertical, _offsets;\n var prev = 'prev';\n var next = 'next';\n var children = 'children';\n var parent = 'parent';\n\n // Inline enter is special that we use unique operation\n if (mode === 'inline' && which === ENTER) {\n return {\n inlineTrigger: true\n };\n }\n var inline = (_inline = {}, _defineProperty(_inline, UP, prev), _defineProperty(_inline, DOWN, next), _inline);\n var horizontal = (_horizontal = {}, _defineProperty(_horizontal, LEFT, isRtl ? next : prev), _defineProperty(_horizontal, RIGHT, isRtl ? prev : next), _defineProperty(_horizontal, DOWN, children), _defineProperty(_horizontal, ENTER, children), _horizontal);\n var vertical = (_vertical = {}, _defineProperty(_vertical, UP, prev), _defineProperty(_vertical, DOWN, next), _defineProperty(_vertical, ENTER, children), _defineProperty(_vertical, ESC, parent), _defineProperty(_vertical, LEFT, isRtl ? children : parent), _defineProperty(_vertical, RIGHT, isRtl ? parent : children), _vertical);\n var offsets = {\n inline: inline,\n horizontal: horizontal,\n vertical: vertical,\n inlineSub: inline,\n horizontalSub: vertical,\n verticalSub: vertical\n };\n var type = (_offsets = offsets[\"\".concat(mode).concat(isRootLevel ? '' : 'Sub')]) === null || _offsets === void 0 ? void 0 : _offsets[which];\n switch (type) {\n case prev:\n return {\n offset: -1,\n sibling: true\n };\n case next:\n return {\n offset: 1,\n sibling: true\n };\n case parent:\n return {\n offset: -1,\n sibling: false\n };\n case children:\n return {\n offset: 1,\n sibling: false\n };\n default:\n return null;\n }\n}\nfunction findContainerUL(element) {\n var current = element;\n while (current) {\n if (current.getAttribute('data-menu-list')) {\n return current;\n }\n current = current.parentElement;\n }\n\n // Normally should not reach this line\n /* istanbul ignore next */\n return null;\n}\n\n/**\n * Find focused element within element set provided\n */\nfunction getFocusElement(activeElement, elements) {\n var current = activeElement || document.activeElement;\n while (current) {\n if (elements.has(current)) {\n return current;\n }\n current = current.parentElement;\n }\n return null;\n}\n\n/**\n * Get focusable elements from the element set under provided container\n */\nfunction getFocusableElements(container, elements) {\n var list = getFocusNodeList(container, true);\n return list.filter(function (ele) {\n return elements.has(ele);\n });\n}\nfunction getNextFocusElement(parentQueryContainer, elements, focusMenuElement) {\n var offset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n // Key on the menu item will not get validate parent container\n if (!parentQueryContainer) {\n return null;\n }\n\n // List current level menu item elements\n var sameLevelFocusableMenuElementList = getFocusableElements(parentQueryContainer, elements);\n\n // Find next focus index\n var count = sameLevelFocusableMenuElementList.length;\n var focusIndex = sameLevelFocusableMenuElementList.findIndex(function (ele) {\n return focusMenuElement === ele;\n });\n if (offset < 0) {\n if (focusIndex === -1) {\n focusIndex = count - 1;\n } else {\n focusIndex -= 1;\n }\n } else if (offset > 0) {\n focusIndex += 1;\n }\n focusIndex = (focusIndex + count) % count;\n\n // Focus menu item\n return sameLevelFocusableMenuElementList[focusIndex];\n}\nexport default function useAccessibility(mode, activeKey, isRtl, id, containerRef, getKeys, getKeyPath, triggerActiveKey, triggerAccessibilityOpen, originOnKeyDown) {\n var rafRef = React.useRef();\n var activeRef = React.useRef();\n activeRef.current = activeKey;\n var cleanRaf = function cleanRaf() {\n raf.cancel(rafRef.current);\n };\n React.useEffect(function () {\n return function () {\n cleanRaf();\n };\n }, []);\n return function (e) {\n var which = e.which;\n if ([].concat(ArrowKeys, [ENTER, ESC, HOME, END]).includes(which)) {\n // Convert key to elements\n var elements;\n var key2element;\n var element2key;\n\n // >>> Wrap as function since we use raf for some case\n var refreshElements = function refreshElements() {\n elements = new Set();\n key2element = new Map();\n element2key = new Map();\n var keys = getKeys();\n keys.forEach(function (key) {\n var element = document.querySelector(\"[data-menu-id='\".concat(getMenuId(id, key), \"']\"));\n if (element) {\n elements.add(element);\n element2key.set(element, key);\n key2element.set(key, element);\n }\n });\n return elements;\n };\n refreshElements();\n\n // First we should find current focused MenuItem/SubMenu element\n var activeElement = key2element.get(activeKey);\n var focusMenuElement = getFocusElement(activeElement, elements);\n var focusMenuKey = element2key.get(focusMenuElement);\n var offsetObj = getOffset(mode, getKeyPath(focusMenuKey, true).length === 1, isRtl, which);\n\n // Some mode do not have fully arrow operation like inline\n if (!offsetObj && which !== HOME && which !== END) {\n return;\n }\n\n // Arrow prevent default to avoid page scroll\n if (ArrowKeys.includes(which) || [HOME, END].includes(which)) {\n e.preventDefault();\n }\n var tryFocus = function tryFocus(menuElement) {\n if (menuElement) {\n var focusTargetElement = menuElement;\n\n // Focus to link instead of menu item if possible\n var link = menuElement.querySelector('a');\n if (link !== null && link !== void 0 && link.getAttribute('href')) {\n focusTargetElement = link;\n }\n var targetKey = element2key.get(menuElement);\n triggerActiveKey(targetKey);\n\n /**\n * Do not `useEffect` here since `tryFocus` may trigger async\n * which makes React sync update the `activeKey`\n * that force render before `useRef` set the next activeKey\n */\n cleanRaf();\n rafRef.current = raf(function () {\n if (activeRef.current === targetKey) {\n focusTargetElement.focus();\n }\n });\n }\n };\n if ([HOME, END].includes(which) || offsetObj.sibling || !focusMenuElement) {\n // ========================== Sibling ==========================\n // Find walkable focus menu element container\n var parentQueryContainer;\n if (!focusMenuElement || mode === 'inline') {\n parentQueryContainer = containerRef.current;\n } else {\n parentQueryContainer = findContainerUL(focusMenuElement);\n }\n\n // Get next focus element\n var targetElement;\n var focusableElements = getFocusableElements(parentQueryContainer, elements);\n if (which === HOME) {\n targetElement = focusableElements[0];\n } else if (which === END) {\n targetElement = focusableElements[focusableElements.length - 1];\n } else {\n targetElement = getNextFocusElement(parentQueryContainer, elements, focusMenuElement, offsetObj.offset);\n }\n // Focus menu item\n tryFocus(targetElement);\n\n // ======================= InlineTrigger =======================\n } else if (offsetObj.inlineTrigger) {\n // Inline trigger no need switch to sub menu item\n triggerAccessibilityOpen(focusMenuKey);\n // =========================== Level ===========================\n } else if (offsetObj.offset > 0) {\n triggerAccessibilityOpen(focusMenuKey, true);\n cleanRaf();\n rafRef.current = raf(function () {\n // Async should resync elements\n refreshElements();\n var controlId = focusMenuElement.getAttribute('aria-controls');\n var subQueryContainer = document.getElementById(controlId);\n\n // Get sub focusable menu item\n var targetElement = getNextFocusElement(subQueryContainer, elements);\n\n // Focus menu item\n tryFocus(targetElement);\n }, 5);\n } else if (offsetObj.offset < 0) {\n var keyPath = getKeyPath(focusMenuKey, true);\n var parentKey = keyPath[keyPath.length - 2];\n var parentMenuElement = key2element.get(parentKey);\n\n // Focus menu item\n triggerAccessibilityOpen(parentKey, false);\n tryFocus(parentMenuElement);\n }\n }\n\n // Pass origin key down event\n originOnKeyDown === null || originOnKeyDown === void 0 ? void 0 : originOnKeyDown(e);\n };\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useCallback } from 'react';\nimport warning from \"rc-util/es/warning\";\nimport { nextSlice } from \"../utils/timeUtil\";\nvar PATH_SPLIT = '__RC_UTIL_PATH_SPLIT__';\nvar getPathStr = function getPathStr(keyPath) {\n return keyPath.join(PATH_SPLIT);\n};\nvar getPathKeys = function getPathKeys(keyPathStr) {\n return keyPathStr.split(PATH_SPLIT);\n};\nexport var OVERFLOW_KEY = 'rc-menu-more';\nexport default function useKeyRecords() {\n var _React$useState = React.useState({}),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n internalForceUpdate = _React$useState2[1];\n var key2pathRef = useRef(new Map());\n var path2keyRef = useRef(new Map());\n var _React$useState3 = React.useState([]),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n overflowKeys = _React$useState4[0],\n setOverflowKeys = _React$useState4[1];\n var updateRef = useRef(0);\n var destroyRef = useRef(false);\n var forceUpdate = function forceUpdate() {\n if (!destroyRef.current) {\n internalForceUpdate({});\n }\n };\n var registerPath = useCallback(function (key, keyPath) {\n // Warning for invalidate or duplicated `key`\n if (process.env.NODE_ENV !== 'production') {\n warning(!key2pathRef.current.has(key), \"Duplicated key '\".concat(key, \"' used in Menu by path [\").concat(keyPath.join(' > '), \"]\"));\n }\n\n // Fill map\n var connectedPath = getPathStr(keyPath);\n path2keyRef.current.set(connectedPath, key);\n key2pathRef.current.set(key, connectedPath);\n updateRef.current += 1;\n var id = updateRef.current;\n nextSlice(function () {\n if (id === updateRef.current) {\n forceUpdate();\n }\n });\n }, []);\n var unregisterPath = useCallback(function (key, keyPath) {\n var connectedPath = getPathStr(keyPath);\n path2keyRef.current.delete(connectedPath);\n key2pathRef.current.delete(key);\n }, []);\n var refreshOverflowKeys = useCallback(function (keys) {\n setOverflowKeys(keys);\n }, []);\n var getKeyPath = useCallback(function (eventKey, includeOverflow) {\n var fullPath = key2pathRef.current.get(eventKey) || '';\n var keys = getPathKeys(fullPath);\n if (includeOverflow && overflowKeys.includes(keys[0])) {\n keys.unshift(OVERFLOW_KEY);\n }\n return keys;\n }, [overflowKeys]);\n var isSubPathKey = useCallback(function (pathKeys, eventKey) {\n return pathKeys.some(function (pathKey) {\n var pathKeyList = getKeyPath(pathKey, true);\n return pathKeyList.includes(eventKey);\n });\n }, [getKeyPath]);\n var getKeys = function getKeys() {\n var keys = _toConsumableArray(key2pathRef.current.keys());\n if (overflowKeys.length) {\n keys.push(OVERFLOW_KEY);\n }\n return keys;\n };\n\n /**\n * Find current key related child path keys\n */\n var getSubPathKeys = useCallback(function (key) {\n var connectedPath = \"\".concat(key2pathRef.current.get(key)).concat(PATH_SPLIT);\n var pathKeys = new Set();\n _toConsumableArray(path2keyRef.current.keys()).forEach(function (pathKey) {\n if (pathKey.startsWith(connectedPath)) {\n pathKeys.add(path2keyRef.current.get(pathKey));\n }\n });\n return pathKeys;\n }, []);\n React.useEffect(function () {\n return function () {\n destroyRef.current = true;\n };\n }, []);\n return {\n // Register\n registerPath: registerPath,\n unregisterPath: unregisterPath,\n refreshOverflowKeys: refreshOverflowKeys,\n // Util\n isSubPathKey: isSubPathKey,\n getKeyPath: getKeyPath,\n getKeys: getKeys,\n getSubPathKeys: getSubPathKeys\n };\n}","export function nextSlice(callback) {\n /* istanbul ignore next */\n Promise.resolve().then(callback);\n}","import * as React from 'react';\n\n/**\n * Cache callback function that always return same ref instead.\n * This is used for context optimization.\n */\nexport default function useMemoCallback(func) {\n var funRef = React.useRef(func);\n funRef.current = func;\n var callback = React.useCallback(function () {\n var _funRef$current;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_funRef$current = funRef.current) === null || _funRef$current === void 0 ? void 0 : _funRef$current.call.apply(_funRef$current, [funRef].concat(args));\n }, []);\n return func ? callback : undefined;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nvar uniquePrefix = Math.random().toFixed(5).toString().slice(2);\nvar internalId = 0;\nexport default function useUUID(id) {\n var _useMergedState = useMergedState(id, {\n value: id\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n uuid = _useMergedState2[0],\n setUUID = _useMergedState2[1];\n React.useEffect(function () {\n internalId += 1;\n var newId = process.env.NODE_ENV === 'test' ? 'test' : \"\".concat(uniquePrefix, \"-\").concat(internalId);\n setUUID(\"rc-menu-uuid-\".concat(newId));\n }, []);\n return uuid;\n}","import * as React from 'react';\nimport { MenuContext } from \"../context/MenuContext\";\nexport default function useActive(eventKey, disabled, onMouseEnter, onMouseLeave) {\n var _React$useContext = React.useContext(MenuContext),\n activeKey = _React$useContext.activeKey,\n onActive = _React$useContext.onActive,\n onInactive = _React$useContext.onInactive;\n var ret = {\n active: activeKey === eventKey\n };\n\n // Skip when disabled\n if (!disabled) {\n ret.onMouseEnter = function (domEvent) {\n onMouseEnter === null || onMouseEnter === void 0 ? void 0 : onMouseEnter({\n key: eventKey,\n domEvent: domEvent\n });\n onActive(eventKey);\n };\n ret.onMouseLeave = function (domEvent) {\n onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave({\n key: eventKey,\n domEvent: domEvent\n });\n onInactive(eventKey);\n };\n }\n return ret;\n}","import * as React from 'react';\nimport { MenuContext } from \"../context/MenuContext\";\nexport default function useDirectionStyle(level) {\n var _React$useContext = React.useContext(MenuContext),\n mode = _React$useContext.mode,\n rtl = _React$useContext.rtl,\n inlineIndent = _React$useContext.inlineIndent;\n if (mode !== 'inline') {\n return null;\n }\n var len = level;\n return rtl ? {\n paddingRight: len * inlineIndent\n } : {\n paddingLeft: len * inlineIndent\n };\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nexport default function Icon(_ref) {\n var icon = _ref.icon,\n props = _ref.props,\n children = _ref.children;\n var iconNode;\n if (typeof icon === 'function') {\n iconNode = /*#__PURE__*/React.createElement(icon, _objectSpread({}, props));\n } else {\n // Compatible for origin definition\n iconNode = icon;\n }\n return iconNode || children || null;\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"item\"];\nimport warning from \"rc-util/es/warning\";\n\n/**\n * `onClick` event return `info.item` which point to react node directly.\n * We should warning this since it will not work on FC.\n */\nexport function warnItemProp(_ref) {\n var item = _ref.item,\n restInfo = _objectWithoutProperties(_ref, _excluded);\n Object.defineProperty(restInfo, 'item', {\n get: function get() {\n warning(false, '`info.item` is deprecated since we will move to function component that not provides React Node instance in future.');\n return item;\n }\n });\n return restInfo;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"title\", \"attribute\", \"elementRef\"],\n _excluded2 = [\"style\", \"className\", \"eventKey\", \"warnKey\", \"disabled\", \"itemIcon\", \"children\", \"role\", \"onMouseEnter\", \"onMouseLeave\", \"onClick\", \"onKeyDown\", \"onFocus\"],\n _excluded3 = [\"active\"];\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport omit from \"rc-util/es/omit\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { useMenuId } from \"./context/IdContext\";\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useFullPath, useMeasure } from \"./context/PathContext\";\nimport PrivateContext from \"./context/PrivateContext\";\nimport useActive from \"./hooks/useActive\";\nimport useDirectionStyle from \"./hooks/useDirectionStyle\";\nimport Icon from \"./Icon\";\nimport { warnItemProp } from \"./utils/warnUtil\";\n// Since Menu event provide the `info.item` which point to the MenuItem node instance.\n// We have to use class component here.\n// This should be removed from doc & api in future.\nvar LegacyMenuItem = /*#__PURE__*/function (_React$Component) {\n _inherits(LegacyMenuItem, _React$Component);\n var _super = _createSuper(LegacyMenuItem);\n function LegacyMenuItem() {\n _classCallCheck(this, LegacyMenuItem);\n return _super.apply(this, arguments);\n }\n _createClass(LegacyMenuItem, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n title = _this$props.title,\n attribute = _this$props.attribute,\n elementRef = _this$props.elementRef,\n restProps = _objectWithoutProperties(_this$props, _excluded);\n\n // Here the props are eventually passed to the DOM element.\n // React does not recognize non-standard attributes.\n // Therefore, remove the props that is not used here.\n // ref: https://github.com/ant-design/ant-design/issues/41395\n var passedProps = omit(restProps, ['eventKey', 'popupClassName', 'popupOffset', 'onTitleClick']);\n warning(!attribute, '`attribute` of Menu.Item is deprecated. Please pass attribute directly.');\n return /*#__PURE__*/React.createElement(Overflow.Item, _extends({}, attribute, {\n title: typeof title === 'string' ? title : undefined\n }, passedProps, {\n ref: elementRef\n }));\n }\n }]);\n return LegacyMenuItem;\n}(React.Component);\n/**\n * Real Menu Item component\n */\nvar InternalMenuItem = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _classNames;\n var style = props.style,\n className = props.className,\n eventKey = props.eventKey,\n warnKey = props.warnKey,\n disabled = props.disabled,\n itemIcon = props.itemIcon,\n children = props.children,\n role = props.role,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onClick = props.onClick,\n onKeyDown = props.onKeyDown,\n onFocus = props.onFocus,\n restProps = _objectWithoutProperties(props, _excluded2);\n var domDataId = useMenuId(eventKey);\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n onItemClick = _React$useContext.onItemClick,\n contextDisabled = _React$useContext.disabled,\n overflowDisabled = _React$useContext.overflowDisabled,\n contextItemIcon = _React$useContext.itemIcon,\n selectedKeys = _React$useContext.selectedKeys,\n onActive = _React$useContext.onActive;\n var _React$useContext2 = React.useContext(PrivateContext),\n _internalRenderMenuItem = _React$useContext2._internalRenderMenuItem;\n var itemCls = \"\".concat(prefixCls, \"-item\");\n var legacyMenuItemRef = React.useRef();\n var elementRef = React.useRef();\n var mergedDisabled = contextDisabled || disabled;\n var mergedEleRef = useComposeRef(ref, elementRef);\n var connectedKeys = useFullPath(eventKey);\n\n // ================================ Warn ================================\n if (process.env.NODE_ENV !== 'production' && warnKey) {\n warning(false, 'MenuItem should not leave undefined `key`.');\n }\n\n // ============================= Info =============================\n var getEventInfo = function getEventInfo(e) {\n return {\n key: eventKey,\n // Note: For legacy code is reversed which not like other antd component\n keyPath: _toConsumableArray(connectedKeys).reverse(),\n item: legacyMenuItemRef.current,\n domEvent: e\n };\n };\n\n // ============================= Icon =============================\n var mergedItemIcon = itemIcon || contextItemIcon;\n\n // ============================ Active ============================\n var _useActive = useActive(eventKey, mergedDisabled, onMouseEnter, onMouseLeave),\n active = _useActive.active,\n activeProps = _objectWithoutProperties(_useActive, _excluded3);\n\n // ============================ Select ============================\n var selected = selectedKeys.includes(eventKey);\n\n // ======================== DirectionStyle ========================\n var directionStyle = useDirectionStyle(connectedKeys.length);\n\n // ============================ Events ============================\n var onInternalClick = function onInternalClick(e) {\n if (mergedDisabled) {\n return;\n }\n var info = getEventInfo(e);\n onClick === null || onClick === void 0 ? void 0 : onClick(warnItemProp(info));\n onItemClick(info);\n };\n var onInternalKeyDown = function onInternalKeyDown(e) {\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);\n if (e.which === KeyCode.ENTER) {\n var info = getEventInfo(e);\n\n // Legacy. Key will also trigger click event\n onClick === null || onClick === void 0 ? void 0 : onClick(warnItemProp(info));\n onItemClick(info);\n }\n };\n\n /**\n * Used for accessibility. Helper will focus element without key board.\n * We should manually trigger an active\n */\n var onInternalFocus = function onInternalFocus(e) {\n onActive(eventKey);\n onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);\n };\n\n // ============================ Render ============================\n var optionRoleProps = {};\n if (props.role === 'option') {\n optionRoleProps['aria-selected'] = selected;\n }\n var renderNode = /*#__PURE__*/React.createElement(LegacyMenuItem, _extends({\n ref: legacyMenuItemRef,\n elementRef: mergedEleRef,\n role: role === null ? 'none' : role || 'menuitem',\n tabIndex: disabled ? null : -1,\n \"data-menu-id\": overflowDisabled && domDataId ? null : domDataId\n }, restProps, activeProps, optionRoleProps, {\n component: \"li\",\n \"aria-disabled\": disabled,\n style: _objectSpread(_objectSpread({}, directionStyle), style),\n className: classNames(itemCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(itemCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(itemCls, \"-selected\"), selected), _defineProperty(_classNames, \"\".concat(itemCls, \"-disabled\"), mergedDisabled), _classNames), className),\n onClick: onInternalClick,\n onKeyDown: onInternalKeyDown,\n onFocus: onInternalFocus\n }), children, /*#__PURE__*/React.createElement(Icon, {\n props: _objectSpread(_objectSpread({}, props), {}, {\n isSelected: selected\n }),\n icon: mergedItemIcon\n }));\n if (_internalRenderMenuItem) {\n renderNode = _internalRenderMenuItem(renderNode, props, {\n selected: selected\n });\n }\n return renderNode;\n});\nfunction MenuItem(props, ref) {\n var eventKey = props.eventKey;\n\n // ==================== Record KeyPath ====================\n var measure = useMeasure();\n var connectedKeyPath = useFullPath(eventKey);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(function () {\n if (measure) {\n measure.registerPath(eventKey, connectedKeyPath);\n return function () {\n measure.unregisterPath(eventKey, connectedKeyPath);\n };\n }\n }, [connectedKeyPath]);\n if (measure) {\n return null;\n }\n\n // ======================== Render ========================\n return /*#__PURE__*/React.createElement(InternalMenuItem, _extends({}, props, {\n ref: ref\n }));\n}\nexport default /*#__PURE__*/React.forwardRef(MenuItem);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"children\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { MenuContext } from \"../context/MenuContext\";\nvar InternalSubMenuList = function InternalSubMenuList(_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n mode = _React$useContext.mode,\n rtl = _React$useContext.rtl;\n return /*#__PURE__*/React.createElement(\"ul\", _extends({\n className: classNames(prefixCls, rtl && \"\".concat(prefixCls, \"-rtl\"), \"\".concat(prefixCls, \"-sub\"), \"\".concat(prefixCls, \"-\").concat(mode === 'inline' ? 'inline' : 'vertical'), className),\n role: \"menu\"\n }, restProps, {\n \"data-menu-list\": true,\n ref: ref\n }), children);\n};\nvar SubMenuList = /*#__PURE__*/React.forwardRef(InternalSubMenuList);\nSubMenuList.displayName = 'SubMenuList';\nexport default SubMenuList;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nvar _excluded = [\"label\", \"children\", \"key\", \"type\"];\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { Divider, MenuItem, MenuItemGroup, SubMenu } from '..';\nexport function parseChildren(children, keyPath) {\n return toArray(children).map(function (child, index) {\n if ( /*#__PURE__*/React.isValidElement(child)) {\n var _eventKey, _child$props;\n var key = child.key;\n var eventKey = (_eventKey = (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.eventKey) !== null && _eventKey !== void 0 ? _eventKey : key;\n var emptyKey = eventKey === null || eventKey === undefined;\n if (emptyKey) {\n eventKey = \"tmp_key-\".concat([].concat(_toConsumableArray(keyPath), [index]).join('-'));\n }\n var cloneProps = {\n key: eventKey,\n eventKey: eventKey\n };\n if (process.env.NODE_ENV !== 'production' && emptyKey) {\n cloneProps.warnKey = true;\n }\n return /*#__PURE__*/React.cloneElement(child, cloneProps);\n }\n return child;\n });\n}\nfunction convertItemsToNodes(list) {\n return (list || []).map(function (opt, index) {\n if (opt && _typeof(opt) === 'object') {\n var _ref = opt,\n label = _ref.label,\n children = _ref.children,\n key = _ref.key,\n type = _ref.type,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var mergedKey = key !== null && key !== void 0 ? key : \"tmp-\".concat(index);\n\n // MenuItemGroup & SubMenuItem\n if (children || type === 'group') {\n if (type === 'group') {\n // Group\n return /*#__PURE__*/React.createElement(MenuItemGroup, _extends({\n key: mergedKey\n }, restProps, {\n title: label\n }), convertItemsToNodes(children));\n }\n\n // Sub Menu\n return /*#__PURE__*/React.createElement(SubMenu, _extends({\n key: mergedKey\n }, restProps, {\n title: label\n }), convertItemsToNodes(children));\n }\n\n // MenuItem & Divider\n if (type === 'divider') {\n return /*#__PURE__*/React.createElement(Divider, _extends({\n key: mergedKey\n }, restProps));\n }\n return /*#__PURE__*/React.createElement(MenuItem, _extends({\n key: mergedKey\n }, restProps), label);\n }\n return null;\n }).filter(function (opt) {\n return opt;\n });\n}\nexport function parseItems(children, items, keyPath) {\n var childNodes = children;\n if (items) {\n childNodes = convertItemsToNodes(items);\n }\n return parseChildren(childNodes, keyPath);\n}","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nexport var placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -7]\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 7]\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0]\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0]\n }\n};\nexport var placementsRtl = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -7]\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 7]\n },\n rightTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0]\n },\n leftTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0]\n }\n};\nexport default placements;","export function getMotion(mode, motion, defaultMotions) {\n if (motion) {\n return motion;\n }\n if (defaultMotions) {\n return defaultMotions[mode] || defaultMotions.other;\n }\n return undefined;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport Trigger from 'rc-trigger';\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nimport { MenuContext } from \"../context/MenuContext\";\nimport { placements, placementsRtl } from \"../placements\";\nimport { getMotion } from \"../utils/motionUtil\";\nvar popupPlacementMap = {\n horizontal: 'bottomLeft',\n vertical: 'rightTop',\n 'vertical-left': 'rightTop',\n 'vertical-right': 'leftTop'\n};\nexport default function PopupTrigger(_ref) {\n var prefixCls = _ref.prefixCls,\n visible = _ref.visible,\n children = _ref.children,\n popup = _ref.popup,\n popupClassName = _ref.popupClassName,\n popupOffset = _ref.popupOffset,\n disabled = _ref.disabled,\n mode = _ref.mode,\n onVisibleChange = _ref.onVisibleChange;\n var _React$useContext = React.useContext(MenuContext),\n getPopupContainer = _React$useContext.getPopupContainer,\n rtl = _React$useContext.rtl,\n subMenuOpenDelay = _React$useContext.subMenuOpenDelay,\n subMenuCloseDelay = _React$useContext.subMenuCloseDelay,\n builtinPlacements = _React$useContext.builtinPlacements,\n triggerSubMenuAction = _React$useContext.triggerSubMenuAction,\n forceSubMenuRender = _React$useContext.forceSubMenuRender,\n rootClassName = _React$useContext.rootClassName,\n motion = _React$useContext.motion,\n defaultMotions = _React$useContext.defaultMotions;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerVisible = _React$useState2[0],\n setInnerVisible = _React$useState2[1];\n var placement = rtl ? _objectSpread(_objectSpread({}, placementsRtl), builtinPlacements) : _objectSpread(_objectSpread({}, placements), builtinPlacements);\n var popupPlacement = popupPlacementMap[mode];\n var targetMotion = getMotion(mode, motion, defaultMotions);\n var targetMotionRef = React.useRef(targetMotion);\n if (mode !== 'inline') {\n /**\n * PopupTrigger is only used for vertical and horizontal types.\n * When collapsed is unfolded, the inline animation will destroy the vertical animation.\n */\n targetMotionRef.current = targetMotion;\n }\n var mergedMotion = _objectSpread(_objectSpread({}, targetMotionRef.current), {}, {\n leavedClassName: \"\".concat(prefixCls, \"-hidden\"),\n removeOnLeave: false,\n motionAppear: true\n });\n\n // Delay to change visible\n var visibleRef = React.useRef();\n React.useEffect(function () {\n visibleRef.current = raf(function () {\n setInnerVisible(visible);\n });\n return function () {\n raf.cancel(visibleRef.current);\n };\n }, [visible]);\n return /*#__PURE__*/React.createElement(Trigger, {\n prefixCls: prefixCls,\n popupClassName: classNames(\"\".concat(prefixCls, \"-popup\"), _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), rtl), popupClassName, rootClassName),\n stretch: mode === 'horizontal' ? 'minWidth' : null,\n getPopupContainer: getPopupContainer,\n builtinPlacements: placement,\n popupPlacement: popupPlacement,\n popupVisible: innerVisible,\n popup: popup,\n popupAlign: popupOffset && {\n offset: popupOffset\n },\n action: disabled ? [] : [triggerSubMenuAction],\n mouseEnterDelay: subMenuOpenDelay,\n mouseLeaveDelay: subMenuCloseDelay,\n onPopupVisibleChange: onVisibleChange,\n forceRender: forceSubMenuRender,\n popupMotion: mergedMotion\n }, children);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport CSSMotion from 'rc-motion';\nimport { getMotion } from \"../utils/motionUtil\";\nimport MenuContextProvider, { MenuContext } from \"../context/MenuContext\";\nimport SubMenuList from \"./SubMenuList\";\nexport default function InlineSubMenuList(_ref) {\n var id = _ref.id,\n open = _ref.open,\n keyPath = _ref.keyPath,\n children = _ref.children;\n var fixedMode = 'inline';\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n forceSubMenuRender = _React$useContext.forceSubMenuRender,\n motion = _React$useContext.motion,\n defaultMotions = _React$useContext.defaultMotions,\n mode = _React$useContext.mode;\n\n // Always use latest mode check\n var sameModeRef = React.useRef(false);\n sameModeRef.current = mode === fixedMode;\n\n // We record `destroy` mark here since when mode change from `inline` to others.\n // The inline list should remove when motion end.\n var _React$useState = React.useState(!sameModeRef.current),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n destroy = _React$useState2[0],\n setDestroy = _React$useState2[1];\n var mergedOpen = sameModeRef.current ? open : false;\n\n // ================================= Effect =================================\n // Reset destroy state when mode change back\n React.useEffect(function () {\n if (sameModeRef.current) {\n setDestroy(false);\n }\n }, [mode]);\n\n // ================================= Render =================================\n var mergedMotion = _objectSpread({}, getMotion(fixedMode, motion, defaultMotions));\n\n // No need appear since nest inlineCollapse changed\n if (keyPath.length > 1) {\n mergedMotion.motionAppear = false;\n }\n\n // Hide inline list when mode changed and motion end\n var originOnVisibleChanged = mergedMotion.onVisibleChanged;\n mergedMotion.onVisibleChanged = function (newVisible) {\n if (!sameModeRef.current && !newVisible) {\n setDestroy(true);\n }\n return originOnVisibleChanged === null || originOnVisibleChanged === void 0 ? void 0 : originOnVisibleChanged(newVisible);\n };\n if (destroy) {\n return null;\n }\n return /*#__PURE__*/React.createElement(MenuContextProvider, {\n mode: fixedMode,\n locked: !sameModeRef.current\n }, /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: mergedOpen\n }, mergedMotion, {\n forceRender: forceSubMenuRender,\n removeOnLeave: false,\n leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n }), function (_ref2) {\n var motionClassName = _ref2.className,\n motionStyle = _ref2.style;\n return /*#__PURE__*/React.createElement(SubMenuList, {\n id: id,\n className: motionClassName,\n style: motionStyle\n }, children);\n }));\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"style\", \"className\", \"title\", \"eventKey\", \"warnKey\", \"disabled\", \"internalPopupClose\", \"children\", \"itemIcon\", \"expandIcon\", \"popupClassName\", \"popupOffset\", \"onClick\", \"onMouseEnter\", \"onMouseLeave\", \"onTitleClick\", \"onTitleMouseEnter\", \"onTitleMouseLeave\"],\n _excluded2 = [\"active\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport warning from \"rc-util/es/warning\";\nimport SubMenuList from \"./SubMenuList\";\nimport { parseChildren } from \"../utils/nodeUtil\";\nimport MenuContextProvider, { MenuContext } from \"../context/MenuContext\";\nimport useMemoCallback from \"../hooks/useMemoCallback\";\nimport PopupTrigger from \"./PopupTrigger\";\nimport Icon from \"../Icon\";\nimport useActive from \"../hooks/useActive\";\nimport { warnItemProp } from \"../utils/warnUtil\";\nimport useDirectionStyle from \"../hooks/useDirectionStyle\";\nimport InlineSubMenuList from \"./InlineSubMenuList\";\nimport { PathTrackerContext, PathUserContext, useFullPath, useMeasure } from \"../context/PathContext\";\nimport { useMenuId } from \"../context/IdContext\";\nimport PrivateContext from \"../context/PrivateContext\";\nvar InternalSubMenu = function InternalSubMenu(props) {\n var _classNames;\n var style = props.style,\n className = props.className,\n title = props.title,\n eventKey = props.eventKey,\n warnKey = props.warnKey,\n disabled = props.disabled,\n internalPopupClose = props.internalPopupClose,\n children = props.children,\n itemIcon = props.itemIcon,\n expandIcon = props.expandIcon,\n popupClassName = props.popupClassName,\n popupOffset = props.popupOffset,\n onClick = props.onClick,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onTitleClick = props.onTitleClick,\n onTitleMouseEnter = props.onTitleMouseEnter,\n onTitleMouseLeave = props.onTitleMouseLeave,\n restProps = _objectWithoutProperties(props, _excluded);\n var domDataId = useMenuId(eventKey);\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls,\n mode = _React$useContext.mode,\n openKeys = _React$useContext.openKeys,\n contextDisabled = _React$useContext.disabled,\n overflowDisabled = _React$useContext.overflowDisabled,\n activeKey = _React$useContext.activeKey,\n selectedKeys = _React$useContext.selectedKeys,\n contextItemIcon = _React$useContext.itemIcon,\n contextExpandIcon = _React$useContext.expandIcon,\n onItemClick = _React$useContext.onItemClick,\n onOpenChange = _React$useContext.onOpenChange,\n onActive = _React$useContext.onActive;\n var _React$useContext2 = React.useContext(PrivateContext),\n _internalRenderSubMenuItem = _React$useContext2._internalRenderSubMenuItem;\n var _React$useContext3 = React.useContext(PathUserContext),\n isSubPathKey = _React$useContext3.isSubPathKey;\n var connectedPath = useFullPath();\n var subMenuPrefixCls = \"\".concat(prefixCls, \"-submenu\");\n var mergedDisabled = contextDisabled || disabled;\n var elementRef = React.useRef();\n var popupRef = React.useRef();\n\n // ================================ Warn ================================\n if (process.env.NODE_ENV !== 'production' && warnKey) {\n warning(false, 'SubMenu should not leave undefined `key`.');\n }\n\n // ================================ Icon ================================\n var mergedItemIcon = itemIcon || contextItemIcon;\n var mergedExpandIcon = expandIcon || contextExpandIcon;\n\n // ================================ Open ================================\n var originOpen = openKeys.includes(eventKey);\n var open = !overflowDisabled && originOpen;\n\n // =============================== Select ===============================\n var childrenSelected = isSubPathKey(selectedKeys, eventKey);\n\n // =============================== Active ===============================\n var _useActive = useActive(eventKey, mergedDisabled, onTitleMouseEnter, onTitleMouseLeave),\n active = _useActive.active,\n activeProps = _objectWithoutProperties(_useActive, _excluded2);\n\n // Fallback of active check to avoid hover on menu title or disabled item\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n childrenActive = _React$useState2[0],\n setChildrenActive = _React$useState2[1];\n var triggerChildrenActive = function triggerChildrenActive(newActive) {\n if (!mergedDisabled) {\n setChildrenActive(newActive);\n }\n };\n var onInternalMouseEnter = function onInternalMouseEnter(domEvent) {\n triggerChildrenActive(true);\n onMouseEnter === null || onMouseEnter === void 0 ? void 0 : onMouseEnter({\n key: eventKey,\n domEvent: domEvent\n });\n };\n var onInternalMouseLeave = function onInternalMouseLeave(domEvent) {\n triggerChildrenActive(false);\n onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave({\n key: eventKey,\n domEvent: domEvent\n });\n };\n var mergedActive = React.useMemo(function () {\n if (active) {\n return active;\n }\n if (mode !== 'inline') {\n return childrenActive || isSubPathKey([activeKey], eventKey);\n }\n return false;\n }, [mode, active, activeKey, childrenActive, eventKey, isSubPathKey]);\n\n // ========================== DirectionStyle ==========================\n var directionStyle = useDirectionStyle(connectedPath.length);\n\n // =============================== Events ===============================\n // >>>> Title click\n var onInternalTitleClick = function onInternalTitleClick(e) {\n // Skip if disabled\n if (mergedDisabled) {\n return;\n }\n onTitleClick === null || onTitleClick === void 0 ? void 0 : onTitleClick({\n key: eventKey,\n domEvent: e\n });\n\n // Trigger open by click when mode is `inline`\n if (mode === 'inline') {\n onOpenChange(eventKey, !originOpen);\n }\n };\n\n // >>>> Context for children click\n var onMergedItemClick = useMemoCallback(function (info) {\n onClick === null || onClick === void 0 ? void 0 : onClick(warnItemProp(info));\n onItemClick(info);\n });\n\n // >>>>> Visible change\n var onPopupVisibleChange = function onPopupVisibleChange(newVisible) {\n if (mode !== 'inline') {\n onOpenChange(eventKey, newVisible);\n }\n };\n\n /**\n * Used for accessibility. Helper will focus element without key board.\n * We should manually trigger an active\n */\n var onInternalFocus = function onInternalFocus() {\n onActive(eventKey);\n };\n\n // =============================== Render ===============================\n var popupId = domDataId && \"\".concat(domDataId, \"-popup\");\n\n // >>>>> Title\n var titleNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n role: \"menuitem\",\n style: directionStyle,\n className: \"\".concat(subMenuPrefixCls, \"-title\"),\n tabIndex: mergedDisabled ? null : -1,\n ref: elementRef,\n title: typeof title === 'string' ? title : null,\n \"data-menu-id\": overflowDisabled && domDataId ? null : domDataId,\n \"aria-expanded\": open,\n \"aria-haspopup\": true,\n \"aria-controls\": popupId,\n \"aria-disabled\": mergedDisabled,\n onClick: onInternalTitleClick,\n onFocus: onInternalFocus\n }, activeProps), title, /*#__PURE__*/React.createElement(Icon, {\n icon: mode !== 'horizontal' ? mergedExpandIcon : null,\n props: _objectSpread(_objectSpread({}, props), {}, {\n isOpen: open,\n // [Legacy] Not sure why need this mark\n isSubMenu: true\n })\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: \"\".concat(subMenuPrefixCls, \"-arrow\")\n })));\n\n // Cache mode if it change to `inline` which do not have popup motion\n var triggerModeRef = React.useRef(mode);\n if (mode !== 'inline' && connectedPath.length > 1) {\n triggerModeRef.current = 'vertical';\n } else {\n triggerModeRef.current = mode;\n }\n if (!overflowDisabled) {\n var triggerMode = triggerModeRef.current;\n\n // Still wrap with Trigger here since we need avoid react re-mount dom node\n // Which makes motion failed\n titleNode = /*#__PURE__*/React.createElement(PopupTrigger, {\n mode: triggerMode,\n prefixCls: subMenuPrefixCls,\n visible: !internalPopupClose && open && mode !== 'inline',\n popupClassName: popupClassName,\n popupOffset: popupOffset,\n popup: /*#__PURE__*/React.createElement(MenuContextProvider\n // Special handle of horizontal mode\n , {\n mode: triggerMode === 'horizontal' ? 'vertical' : triggerMode\n }, /*#__PURE__*/React.createElement(SubMenuList, {\n id: popupId,\n ref: popupRef\n }, children)),\n disabled: mergedDisabled,\n onVisibleChange: onPopupVisibleChange\n }, titleNode);\n }\n\n // >>>>> List node\n var listNode = /*#__PURE__*/React.createElement(Overflow.Item, _extends({\n role: \"none\"\n }, restProps, {\n component: \"li\",\n style: style,\n className: classNames(subMenuPrefixCls, \"\".concat(subMenuPrefixCls, \"-\").concat(mode), className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-open\"), open), _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-active\"), mergedActive), _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-selected\"), childrenSelected), _defineProperty(_classNames, \"\".concat(subMenuPrefixCls, \"-disabled\"), mergedDisabled), _classNames)),\n onMouseEnter: onInternalMouseEnter,\n onMouseLeave: onInternalMouseLeave\n }), titleNode, !overflowDisabled && /*#__PURE__*/React.createElement(InlineSubMenuList, {\n id: popupId,\n open: open,\n keyPath: connectedPath\n }, children));\n if (_internalRenderSubMenuItem) {\n listNode = _internalRenderSubMenuItem(listNode, props, {\n selected: childrenSelected,\n active: mergedActive,\n open: open,\n disabled: mergedDisabled\n });\n }\n\n // >>>>> Render\n return /*#__PURE__*/React.createElement(MenuContextProvider, {\n onItemClick: onMergedItemClick,\n mode: mode === 'horizontal' ? 'vertical' : mode,\n itemIcon: mergedItemIcon,\n expandIcon: mergedExpandIcon\n }, listNode);\n};\nexport default function SubMenu(props) {\n var eventKey = props.eventKey,\n children = props.children;\n var connectedKeyPath = useFullPath(eventKey);\n var childList = parseChildren(children, connectedKeyPath);\n\n // ==================== Record KeyPath ====================\n var measure = useMeasure();\n\n // eslint-disable-next-line consistent-return\n React.useEffect(function () {\n if (measure) {\n measure.registerPath(eventKey, connectedKeyPath);\n return function () {\n measure.unregisterPath(eventKey, connectedKeyPath);\n };\n }\n }, [connectedKeyPath]);\n var renderNode;\n\n // ======================== Render ========================\n if (measure) {\n renderNode = childList;\n } else {\n renderNode = /*#__PURE__*/React.createElement(InternalSubMenu, props, childList);\n }\n return /*#__PURE__*/React.createElement(PathTrackerContext.Provider, {\n value: connectedKeyPath\n }, renderNode);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"rootClassName\", \"style\", \"className\", \"tabIndex\", \"items\", \"children\", \"direction\", \"id\", \"mode\", \"inlineCollapsed\", \"disabled\", \"disabledOverflow\", \"subMenuOpenDelay\", \"subMenuCloseDelay\", \"forceSubMenuRender\", \"defaultOpenKeys\", \"openKeys\", \"activeKey\", \"defaultActiveFirst\", \"selectable\", \"multiple\", \"defaultSelectedKeys\", \"selectedKeys\", \"onSelect\", \"onDeselect\", \"inlineIndent\", \"motion\", \"defaultMotions\", \"triggerSubMenuAction\", \"builtinPlacements\", \"itemIcon\", \"expandIcon\", \"overflowedIndicator\", \"overflowedIndicatorPopupClassName\", \"getPopupContainer\", \"onClick\", \"onOpenChange\", \"onKeyDown\", \"openAnimation\", \"openTransitionName\", \"_internalRenderMenuItem\", \"_internalRenderSubMenuItem\"];\nimport classNames from 'classnames';\nimport Overflow from 'rc-overflow';\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { useImperativeHandle } from 'react';\nimport { flushSync } from 'react-dom';\nimport isEqual from \"rc-util/es/isEqual\";\nimport { getMenuId, IdContext } from \"./context/IdContext\";\nimport MenuContextProvider from \"./context/MenuContext\";\nimport { PathRegisterContext, PathUserContext } from \"./context/PathContext\";\nimport PrivateContext from \"./context/PrivateContext\";\nimport useAccessibility from \"./hooks/useAccessibility\";\nimport useKeyRecords, { OVERFLOW_KEY } from \"./hooks/useKeyRecords\";\nimport useMemoCallback from \"./hooks/useMemoCallback\";\nimport useUUID from \"./hooks/useUUID\";\nimport MenuItem from \"./MenuItem\";\nimport SubMenu from \"./SubMenu\";\nimport { parseItems } from \"./utils/nodeUtil\";\nimport { warnItemProp } from \"./utils/warnUtil\";\n\n/**\n * Menu modify after refactor:\n * ## Add\n * - disabled\n *\n * ## Remove\n * - openTransitionName\n * - openAnimation\n * - onDestroy\n * - siderCollapsed: Seems antd do not use this prop (Need test in antd)\n * - collapsedWidth: Seems this logic should be handle by antd Layout.Sider\n */\n\n// optimize for render\nvar EMPTY_LIST = [];\nvar Menu = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _childList$, _classNames;\n var _ref = props,\n _ref$prefixCls = _ref.prefixCls,\n prefixCls = _ref$prefixCls === void 0 ? 'rc-menu' : _ref$prefixCls,\n rootClassName = _ref.rootClassName,\n style = _ref.style,\n className = _ref.className,\n _ref$tabIndex = _ref.tabIndex,\n tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex,\n items = _ref.items,\n children = _ref.children,\n direction = _ref.direction,\n id = _ref.id,\n _ref$mode = _ref.mode,\n mode = _ref$mode === void 0 ? 'vertical' : _ref$mode,\n inlineCollapsed = _ref.inlineCollapsed,\n disabled = _ref.disabled,\n disabledOverflow = _ref.disabledOverflow,\n _ref$subMenuOpenDelay = _ref.subMenuOpenDelay,\n subMenuOpenDelay = _ref$subMenuOpenDelay === void 0 ? 0.1 : _ref$subMenuOpenDelay,\n _ref$subMenuCloseDela = _ref.subMenuCloseDelay,\n subMenuCloseDelay = _ref$subMenuCloseDela === void 0 ? 0.1 : _ref$subMenuCloseDela,\n forceSubMenuRender = _ref.forceSubMenuRender,\n defaultOpenKeys = _ref.defaultOpenKeys,\n openKeys = _ref.openKeys,\n activeKey = _ref.activeKey,\n defaultActiveFirst = _ref.defaultActiveFirst,\n _ref$selectable = _ref.selectable,\n selectable = _ref$selectable === void 0 ? true : _ref$selectable,\n _ref$multiple = _ref.multiple,\n multiple = _ref$multiple === void 0 ? false : _ref$multiple,\n defaultSelectedKeys = _ref.defaultSelectedKeys,\n selectedKeys = _ref.selectedKeys,\n onSelect = _ref.onSelect,\n onDeselect = _ref.onDeselect,\n _ref$inlineIndent = _ref.inlineIndent,\n inlineIndent = _ref$inlineIndent === void 0 ? 24 : _ref$inlineIndent,\n motion = _ref.motion,\n defaultMotions = _ref.defaultMotions,\n _ref$triggerSubMenuAc = _ref.triggerSubMenuAction,\n triggerSubMenuAction = _ref$triggerSubMenuAc === void 0 ? 'hover' : _ref$triggerSubMenuAc,\n builtinPlacements = _ref.builtinPlacements,\n itemIcon = _ref.itemIcon,\n expandIcon = _ref.expandIcon,\n _ref$overflowedIndica = _ref.overflowedIndicator,\n overflowedIndicator = _ref$overflowedIndica === void 0 ? '...' : _ref$overflowedIndica,\n overflowedIndicatorPopupClassName = _ref.overflowedIndicatorPopupClassName,\n getPopupContainer = _ref.getPopupContainer,\n onClick = _ref.onClick,\n onOpenChange = _ref.onOpenChange,\n onKeyDown = _ref.onKeyDown,\n openAnimation = _ref.openAnimation,\n openTransitionName = _ref.openTransitionName,\n _internalRenderMenuItem = _ref._internalRenderMenuItem,\n _internalRenderSubMenuItem = _ref._internalRenderSubMenuItem,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var childList = React.useMemo(function () {\n return parseItems(children, items, EMPTY_LIST);\n }, [children, items]);\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mounted = _React$useState2[0],\n setMounted = _React$useState2[1];\n var containerRef = React.useRef();\n var uuid = useUUID(id);\n var isRtl = direction === 'rtl';\n\n // ========================= Warn =========================\n if (process.env.NODE_ENV !== 'production') {\n warning(!openAnimation && !openTransitionName, '`openAnimation` and `openTransitionName` is removed. Please use `motion` or `defaultMotion` instead.');\n }\n\n // ========================= Open =========================\n var _useMergedState = useMergedState(defaultOpenKeys, {\n value: openKeys,\n postState: function postState(keys) {\n return keys || EMPTY_LIST;\n }\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedOpenKeys = _useMergedState2[0],\n setMergedOpenKeys = _useMergedState2[1];\n\n // React 18 will merge mouse event which means we open key will not sync\n // ref: https://github.com/ant-design/ant-design/issues/38818\n var triggerOpenKeys = function triggerOpenKeys(keys) {\n var forceFlush = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n function doUpdate() {\n setMergedOpenKeys(keys);\n onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(keys);\n }\n if (forceFlush) {\n flushSync(doUpdate);\n } else {\n doUpdate();\n }\n };\n\n // >>>>> Cache & Reset open keys when inlineCollapsed changed\n var _React$useState3 = React.useState(mergedOpenKeys),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n inlineCacheOpenKeys = _React$useState4[0],\n setInlineCacheOpenKeys = _React$useState4[1];\n var mountRef = React.useRef(false);\n\n // ========================= Mode =========================\n var _React$useMemo = React.useMemo(function () {\n if ((mode === 'inline' || mode === 'vertical') && inlineCollapsed) {\n return ['vertical', inlineCollapsed];\n }\n return [mode, false];\n }, [mode, inlineCollapsed]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n mergedMode = _React$useMemo2[0],\n mergedInlineCollapsed = _React$useMemo2[1];\n var isInlineMode = mergedMode === 'inline';\n var _React$useState5 = React.useState(mergedMode),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n internalMode = _React$useState6[0],\n setInternalMode = _React$useState6[1];\n var _React$useState7 = React.useState(mergedInlineCollapsed),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n internalInlineCollapsed = _React$useState8[0],\n setInternalInlineCollapsed = _React$useState8[1];\n React.useEffect(function () {\n setInternalMode(mergedMode);\n setInternalInlineCollapsed(mergedInlineCollapsed);\n if (!mountRef.current) {\n return;\n }\n // Synchronously update MergedOpenKeys\n if (isInlineMode) {\n setMergedOpenKeys(inlineCacheOpenKeys);\n } else {\n // Trigger open event in case its in control\n triggerOpenKeys(EMPTY_LIST);\n }\n }, [mergedMode, mergedInlineCollapsed]);\n\n // ====================== Responsive ======================\n var _React$useState9 = React.useState(0),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n lastVisibleIndex = _React$useState10[0],\n setLastVisibleIndex = _React$useState10[1];\n var allVisible = lastVisibleIndex >= childList.length - 1 || internalMode !== 'horizontal' || disabledOverflow;\n\n // Cache\n React.useEffect(function () {\n if (isInlineMode) {\n setInlineCacheOpenKeys(mergedOpenKeys);\n }\n }, [mergedOpenKeys]);\n React.useEffect(function () {\n mountRef.current = true;\n return function () {\n mountRef.current = false;\n };\n }, []);\n\n // ========================= Path =========================\n var _useKeyRecords = useKeyRecords(),\n registerPath = _useKeyRecords.registerPath,\n unregisterPath = _useKeyRecords.unregisterPath,\n refreshOverflowKeys = _useKeyRecords.refreshOverflowKeys,\n isSubPathKey = _useKeyRecords.isSubPathKey,\n getKeyPath = _useKeyRecords.getKeyPath,\n getKeys = _useKeyRecords.getKeys,\n getSubPathKeys = _useKeyRecords.getSubPathKeys;\n var registerPathContext = React.useMemo(function () {\n return {\n registerPath: registerPath,\n unregisterPath: unregisterPath\n };\n }, [registerPath, unregisterPath]);\n var pathUserContext = React.useMemo(function () {\n return {\n isSubPathKey: isSubPathKey\n };\n }, [isSubPathKey]);\n React.useEffect(function () {\n refreshOverflowKeys(allVisible ? EMPTY_LIST : childList.slice(lastVisibleIndex + 1).map(function (child) {\n return child.key;\n }));\n }, [lastVisibleIndex, allVisible]);\n\n // ======================== Active ========================\n var _useMergedState3 = useMergedState(activeKey || defaultActiveFirst && ((_childList$ = childList[0]) === null || _childList$ === void 0 ? void 0 : _childList$.key), {\n value: activeKey\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n mergedActiveKey = _useMergedState4[0],\n setMergedActiveKey = _useMergedState4[1];\n var onActive = useMemoCallback(function (key) {\n setMergedActiveKey(key);\n });\n var onInactive = useMemoCallback(function () {\n setMergedActiveKey(undefined);\n });\n useImperativeHandle(ref, function () {\n return {\n list: containerRef.current,\n focus: function focus(options) {\n var _childList$find;\n var shouldFocusKey = mergedActiveKey !== null && mergedActiveKey !== void 0 ? mergedActiveKey : (_childList$find = childList.find(function (node) {\n return !node.props.disabled;\n })) === null || _childList$find === void 0 ? void 0 : _childList$find.key;\n if (shouldFocusKey) {\n var _containerRef$current, _containerRef$current2, _containerRef$current3;\n (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : (_containerRef$current2 = _containerRef$current.querySelector(\"li[data-menu-id='\".concat(getMenuId(uuid, shouldFocusKey), \"']\"))) === null || _containerRef$current2 === void 0 ? void 0 : (_containerRef$current3 = _containerRef$current2.focus) === null || _containerRef$current3 === void 0 ? void 0 : _containerRef$current3.call(_containerRef$current2, options);\n }\n }\n };\n });\n\n // ======================== Select ========================\n // >>>>> Select keys\n var _useMergedState5 = useMergedState(defaultSelectedKeys || [], {\n value: selectedKeys,\n // Legacy convert key to array\n postState: function postState(keys) {\n if (Array.isArray(keys)) {\n return keys;\n }\n if (keys === null || keys === undefined) {\n return EMPTY_LIST;\n }\n return [keys];\n }\n }),\n _useMergedState6 = _slicedToArray(_useMergedState5, 2),\n mergedSelectKeys = _useMergedState6[0],\n setMergedSelectKeys = _useMergedState6[1];\n\n // >>>>> Trigger select\n var triggerSelection = function triggerSelection(info) {\n if (selectable) {\n // Insert or Remove\n var targetKey = info.key;\n var exist = mergedSelectKeys.includes(targetKey);\n var newSelectKeys;\n if (multiple) {\n if (exist) {\n newSelectKeys = mergedSelectKeys.filter(function (key) {\n return key !== targetKey;\n });\n } else {\n newSelectKeys = [].concat(_toConsumableArray(mergedSelectKeys), [targetKey]);\n }\n } else {\n newSelectKeys = [targetKey];\n }\n setMergedSelectKeys(newSelectKeys);\n\n // Trigger event\n var selectInfo = _objectSpread(_objectSpread({}, info), {}, {\n selectedKeys: newSelectKeys\n });\n if (exist) {\n onDeselect === null || onDeselect === void 0 ? void 0 : onDeselect(selectInfo);\n } else {\n onSelect === null || onSelect === void 0 ? void 0 : onSelect(selectInfo);\n }\n }\n\n // Whatever selectable, always close it\n if (!multiple && mergedOpenKeys.length && internalMode !== 'inline') {\n triggerOpenKeys(EMPTY_LIST);\n }\n };\n\n // ========================= Open =========================\n /**\n * Click for item. SubMenu do not have selection status\n */\n var onInternalClick = useMemoCallback(function (info) {\n onClick === null || onClick === void 0 ? void 0 : onClick(warnItemProp(info));\n triggerSelection(info);\n });\n var onInternalOpenChange = useMemoCallback(function (key, open) {\n var newOpenKeys = mergedOpenKeys.filter(function (k) {\n return k !== key;\n });\n if (open) {\n newOpenKeys.push(key);\n } else if (internalMode !== 'inline') {\n // We need find all related popup to close\n var subPathKeys = getSubPathKeys(key);\n newOpenKeys = newOpenKeys.filter(function (k) {\n return !subPathKeys.has(k);\n });\n }\n if (!isEqual(mergedOpenKeys, newOpenKeys, true)) {\n triggerOpenKeys(newOpenKeys, true);\n }\n });\n var getInternalPopupContainer = useMemoCallback(getPopupContainer);\n\n // ==================== Accessibility =====================\n var triggerAccessibilityOpen = function triggerAccessibilityOpen(key, open) {\n var nextOpen = open !== null && open !== void 0 ? open : !mergedOpenKeys.includes(key);\n onInternalOpenChange(key, nextOpen);\n };\n var onInternalKeyDown = useAccessibility(internalMode, mergedActiveKey, isRtl, uuid, containerRef, getKeys, getKeyPath, setMergedActiveKey, triggerAccessibilityOpen, onKeyDown);\n\n // ======================== Effect ========================\n React.useEffect(function () {\n setMounted(true);\n }, []);\n\n // ======================= Context ========================\n var privateContext = React.useMemo(function () {\n return {\n _internalRenderMenuItem: _internalRenderMenuItem,\n _internalRenderSubMenuItem: _internalRenderSubMenuItem\n };\n }, [_internalRenderMenuItem, _internalRenderSubMenuItem]);\n\n // ======================== Render ========================\n\n // >>>>> Children\n var wrappedChildList = internalMode !== 'horizontal' || disabledOverflow ? childList :\n // Need wrap for overflow dropdown that do not response for open\n childList.map(function (child, index) {\n return (\n /*#__PURE__*/\n // Always wrap provider to avoid sub node re-mount\n React.createElement(MenuContextProvider, {\n key: child.key,\n overflowDisabled: index > lastVisibleIndex\n }, child)\n );\n });\n\n // >>>>> Container\n var container = /*#__PURE__*/React.createElement(Overflow, _extends({\n id: id,\n ref: containerRef,\n prefixCls: \"\".concat(prefixCls, \"-overflow\"),\n component: \"ul\",\n itemComponent: MenuItem,\n className: classNames(prefixCls, \"\".concat(prefixCls, \"-root\"), \"\".concat(prefixCls, \"-\").concat(internalMode), className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-inline-collapsed\"), internalInlineCollapsed), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), isRtl), _classNames), rootClassName),\n dir: direction,\n style: style,\n role: \"menu\",\n tabIndex: tabIndex,\n data: wrappedChildList,\n renderRawItem: function renderRawItem(node) {\n return node;\n },\n renderRawRest: function renderRawRest(omitItems) {\n // We use origin list since wrapped list use context to prevent open\n var len = omitItems.length;\n var originOmitItems = len ? childList.slice(-len) : null;\n return /*#__PURE__*/React.createElement(SubMenu, {\n eventKey: OVERFLOW_KEY,\n title: overflowedIndicator,\n disabled: allVisible,\n internalPopupClose: len === 0,\n popupClassName: overflowedIndicatorPopupClassName\n }, originOmitItems);\n },\n maxCount: internalMode !== 'horizontal' || disabledOverflow ? Overflow.INVALIDATE : Overflow.RESPONSIVE,\n ssr: \"full\",\n \"data-menu-list\": true,\n onVisibleChange: function onVisibleChange(newLastIndex) {\n setLastVisibleIndex(newLastIndex);\n },\n onKeyDown: onInternalKeyDown\n }, restProps));\n\n // >>>>> Render\n return /*#__PURE__*/React.createElement(PrivateContext.Provider, {\n value: privateContext\n }, /*#__PURE__*/React.createElement(IdContext.Provider, {\n value: uuid\n }, /*#__PURE__*/React.createElement(MenuContextProvider, {\n prefixCls: prefixCls,\n rootClassName: rootClassName,\n mode: internalMode,\n openKeys: mergedOpenKeys,\n rtl: isRtl\n // Disabled\n ,\n disabled: disabled\n // Motion\n ,\n motion: mounted ? motion : null,\n defaultMotions: mounted ? defaultMotions : null\n // Active\n ,\n activeKey: mergedActiveKey,\n onActive: onActive,\n onInactive: onInactive\n // Selection\n ,\n selectedKeys: mergedSelectKeys\n // Level\n ,\n inlineIndent: inlineIndent\n // Popup\n ,\n subMenuOpenDelay: subMenuOpenDelay,\n subMenuCloseDelay: subMenuCloseDelay,\n forceSubMenuRender: forceSubMenuRender,\n builtinPlacements: builtinPlacements,\n triggerSubMenuAction: triggerSubMenuAction,\n getPopupContainer: getInternalPopupContainer\n // Icon\n ,\n itemIcon: itemIcon,\n expandIcon: expandIcon\n // Events\n ,\n onItemClick: onInternalClick,\n onOpenChange: onInternalOpenChange\n }, /*#__PURE__*/React.createElement(PathUserContext.Provider, {\n value: pathUserContext\n }, container), /*#__PURE__*/React.createElement(\"div\", {\n style: {\n display: 'none'\n },\n \"aria-hidden\": true\n }, /*#__PURE__*/React.createElement(PathRegisterContext.Provider, {\n value: registerPathContext\n }, childList)))));\n});\nexport default Menu;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"title\", \"eventKey\", \"children\"],\n _excluded2 = [\"children\"];\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useFullPath, useMeasure } from \"./context/PathContext\";\nimport { parseChildren } from \"./utils/nodeUtil\";\nvar InternalMenuItemGroup = function InternalMenuItemGroup(_ref) {\n var className = _ref.className,\n title = _ref.title,\n eventKey = _ref.eventKey,\n children = _ref.children,\n restProps = _objectWithoutProperties(_ref, _excluded);\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls;\n var groupPrefixCls = \"\".concat(prefixCls, \"-item-group\");\n return /*#__PURE__*/React.createElement(\"li\", _extends({\n role: \"presentation\"\n }, restProps, {\n onClick: function onClick(e) {\n return e.stopPropagation();\n },\n className: classNames(groupPrefixCls, className)\n }), /*#__PURE__*/React.createElement(\"div\", {\n role: \"presentation\",\n className: \"\".concat(groupPrefixCls, \"-title\"),\n title: typeof title === 'string' ? title : undefined\n }, title), /*#__PURE__*/React.createElement(\"ul\", {\n role: \"group\",\n className: \"\".concat(groupPrefixCls, \"-list\")\n }, children));\n};\nexport default function MenuItemGroup(_ref2) {\n var children = _ref2.children,\n props = _objectWithoutProperties(_ref2, _excluded2);\n var connectedKeyPath = useFullPath(props.eventKey);\n var childList = parseChildren(children, connectedKeyPath);\n var measure = useMeasure();\n if (measure) {\n return childList;\n }\n return /*#__PURE__*/React.createElement(InternalMenuItemGroup, omit(props, ['warnKey']), childList);\n}","import * as React from 'react';\nimport classNames from 'classnames';\nimport { MenuContext } from \"./context/MenuContext\";\nimport { useMeasure } from \"./context/PathContext\";\nexport default function Divider(_ref) {\n var className = _ref.className,\n style = _ref.style;\n var _React$useContext = React.useContext(MenuContext),\n prefixCls = _React$useContext.prefixCls;\n var measure = useMeasure();\n if (measure) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"li\", {\n className: classNames(\"\".concat(prefixCls, \"-item-divider\"), className),\n style: style\n });\n}","import Menu from \"./Menu\";\nimport MenuItem from \"./MenuItem\";\nimport SubMenu from \"./SubMenu\";\nimport MenuItemGroup from \"./MenuItemGroup\";\nimport { useFullPath } from \"./context/PathContext\";\nimport Divider from \"./Divider\";\nexport { SubMenu, MenuItem as Item, MenuItem, MenuItemGroup, MenuItemGroup as ItemGroup, Divider, /** @private Only used for antd internal. Do not use in your production. */\nuseFullPath };\nvar ExportMenu = Menu;\nExportMenu.Item = MenuItem;\nExportMenu.SubMenu = SubMenu;\nExportMenu.ItemGroup = MenuItemGroup;\nExportMenu.Divider = Divider;\nexport default ExportMenu;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport * as React from 'react';\nexport var Context = /*#__PURE__*/React.createContext({});\nexport default function MotionProvider(_ref) {\n var children = _ref.children,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: props\n }, children);\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nvar DomWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(DomWrapper, _React$Component);\n var _super = _createSuper(DomWrapper);\n function DomWrapper() {\n _classCallCheck(this, DomWrapper);\n return _super.apply(this, arguments);\n }\n _createClass(DomWrapper, [{\n key: \"render\",\n value: function render() {\n return this.props.children;\n }\n }]);\n return DomWrapper;\n}(React.Component);\nexport default DomWrapper;","export var STATUS_NONE = 'none';\nexport var STATUS_APPEAR = 'appear';\nexport var STATUS_ENTER = 'enter';\nexport var STATUS_LEAVE = 'leave';\nexport var STEP_NONE = 'none';\nexport var STEP_PREPARE = 'prepare';\nexport var STEP_START = 'start';\nexport var STEP_ACTIVE = 'active';\nexport var STEP_ACTIVATED = 'end';\n/**\n * Used for disabled motion case.\n * Prepare stage will still work but start & active will be skipped.\n */\nexport var STEP_PREPARED = 'prepared';","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport canUseDOM from \"rc-util/es/Dom/canUseDom\";\n// ================= Transition =================\n// Event wrapper. Copy from react source code\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes[\"Webkit\".concat(styleProp)] = \"webkit\".concat(eventName);\n prefixes[\"Moz\".concat(styleProp)] = \"moz\".concat(eventName);\n prefixes[\"ms\".concat(styleProp)] = \"MS\".concat(eventName);\n prefixes[\"O\".concat(styleProp)] = \"o\".concat(eventName.toLowerCase());\n return prefixes;\n}\nexport function getVendorPrefixes(domSupport, win) {\n var prefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n };\n if (domSupport) {\n if (!('AnimationEvent' in win)) {\n delete prefixes.animationend.animation;\n }\n if (!('TransitionEvent' in win)) {\n delete prefixes.transitionend.transition;\n }\n }\n return prefixes;\n}\nvar vendorPrefixes = getVendorPrefixes(canUseDOM(), typeof window !== 'undefined' ? window : {});\nvar style = {};\nif (canUseDOM()) {\n var _document$createEleme = document.createElement('div');\n style = _document$createEleme.style;\n}\nvar prefixedEventNames = {};\nexport function getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n }\n var prefixMap = vendorPrefixes[eventName];\n if (prefixMap) {\n var stylePropList = Object.keys(prefixMap);\n var len = stylePropList.length;\n for (var i = 0; i < len; i += 1) {\n var styleProp = stylePropList[i];\n if (Object.prototype.hasOwnProperty.call(prefixMap, styleProp) && styleProp in style) {\n prefixedEventNames[eventName] = prefixMap[styleProp];\n return prefixedEventNames[eventName];\n }\n }\n }\n return '';\n}\nvar internalAnimationEndName = getVendorPrefixedEventName('animationend');\nvar internalTransitionEndName = getVendorPrefixedEventName('transitionend');\nexport var supportTransition = !!(internalAnimationEndName && internalTransitionEndName);\nexport var animationEndName = internalAnimationEndName || 'animationend';\nexport var transitionEndName = internalTransitionEndName || 'transitionend';\nexport function getTransitionName(transitionName, transitionType) {\n if (!transitionName) return null;\n if (_typeof(transitionName) === 'object') {\n var type = transitionType.replace(/-\\w/g, function (match) {\n return match[1].toUpperCase();\n });\n return transitionName[type];\n }\n return \"\".concat(transitionName, \"-\").concat(transitionType);\n}","import * as React from 'react';\nimport { useRef } from 'react';\nimport { animationEndName, transitionEndName } from \"../util/motion\";\nexport default (function (callback) {\n var cacheElementRef = useRef();\n\n // Cache callback\n var callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n // Internal motion event handler\n var onInternalMotionEnd = React.useCallback(function (event) {\n callbackRef.current(event);\n }, []);\n\n // Remove events\n function removeMotionEvents(element) {\n if (element) {\n element.removeEventListener(transitionEndName, onInternalMotionEnd);\n element.removeEventListener(animationEndName, onInternalMotionEnd);\n }\n }\n\n // Patch events\n function patchMotionEvents(element) {\n if (cacheElementRef.current && cacheElementRef.current !== element) {\n removeMotionEvents(cacheElementRef.current);\n }\n if (element && element !== cacheElementRef.current) {\n element.addEventListener(transitionEndName, onInternalMotionEnd);\n element.addEventListener(animationEndName, onInternalMotionEnd);\n\n // Save as cache in case dom removed trigger by `motionDeadline`\n cacheElementRef.current = element;\n }\n }\n\n // Clean up when removed\n React.useEffect(function () {\n return function () {\n removeMotionEvents(cacheElementRef.current);\n };\n }, []);\n return [patchMotionEvents, removeMotionEvents];\n});","import { useEffect, useLayoutEffect } from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\n\n// It's safe to use `useLayoutEffect` but the warning is annoying\nvar useIsomorphicLayoutEffect = canUseDom() ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useState from \"rc-util/es/hooks/useState\";\nimport * as React from 'react';\nimport { STEP_ACTIVATED, STEP_ACTIVE, STEP_NONE, STEP_PREPARE, STEP_PREPARED, STEP_START } from \"../interface\";\nimport useIsomorphicLayoutEffect from \"./useIsomorphicLayoutEffect\";\nimport useNextFrame from \"./useNextFrame\";\nvar FULL_STEP_QUEUE = [STEP_PREPARE, STEP_START, STEP_ACTIVE, STEP_ACTIVATED];\nvar SIMPLE_STEP_QUEUE = [STEP_PREPARE, STEP_PREPARED];\n\n/** Skip current step */\nexport var SkipStep = false;\n/** Current step should be update in */\nexport var DoStep = true;\nexport function isActive(step) {\n return step === STEP_ACTIVE || step === STEP_ACTIVATED;\n}\nexport default (function (status, prepareOnly, callback) {\n var _useState = useState(STEP_NONE),\n _useState2 = _slicedToArray(_useState, 2),\n step = _useState2[0],\n setStep = _useState2[1];\n var _useNextFrame = useNextFrame(),\n _useNextFrame2 = _slicedToArray(_useNextFrame, 2),\n nextFrame = _useNextFrame2[0],\n cancelNextFrame = _useNextFrame2[1];\n function startQueue() {\n setStep(STEP_PREPARE, true);\n }\n var STEP_QUEUE = prepareOnly ? SIMPLE_STEP_QUEUE : FULL_STEP_QUEUE;\n useIsomorphicLayoutEffect(function () {\n if (step !== STEP_NONE && step !== STEP_ACTIVATED) {\n var index = STEP_QUEUE.indexOf(step);\n var nextStep = STEP_QUEUE[index + 1];\n var result = callback(step);\n if (result === SkipStep) {\n // Skip when no needed\n setStep(nextStep, true);\n } else if (nextStep) {\n // Do as frame for step update\n nextFrame(function (info) {\n function doNext() {\n // Skip since current queue is ood\n if (info.isCanceled()) return;\n setStep(nextStep, true);\n }\n if (result === true) {\n doNext();\n } else {\n // Only promise should be async\n Promise.resolve(result).then(doNext);\n }\n });\n }\n }\n }, [status, step]);\n React.useEffect(function () {\n return function () {\n cancelNextFrame();\n };\n }, []);\n return [startQueue, step];\n});","import * as React from 'react';\nimport raf from \"rc-util/es/raf\";\nexport default (function () {\n var nextFrameRef = React.useRef(null);\n function cancelNextFrame() {\n raf.cancel(nextFrameRef.current);\n }\n function nextFrame(callback) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n cancelNextFrame();\n var nextFrameId = raf(function () {\n if (delay <= 1) {\n callback({\n isCanceled: function isCanceled() {\n return nextFrameId !== nextFrameRef.current;\n }\n });\n } else {\n nextFrame(callback, delay - 1);\n }\n });\n nextFrameRef.current = nextFrameId;\n }\n React.useEffect(function () {\n return function () {\n cancelNextFrame();\n };\n }, []);\n return [nextFrame, cancelNextFrame];\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n/* eslint-disable react/default-props-match-prop-types, react/no-multi-comp, react/prop-types */\nimport classNames from 'classnames';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { fillRef, supportRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport { Context } from \"./context\";\nimport DomWrapper from \"./DomWrapper\";\nimport useStatus from \"./hooks/useStatus\";\nimport { isActive } from \"./hooks/useStepQueue\";\nimport { STATUS_NONE, STEP_PREPARE, STEP_START } from \"./interface\";\nimport { getTransitionName, supportTransition } from \"./util/motion\";\n/**\n * `transitionSupport` is used for none transition test case.\n * Default we use browser transition event support check.\n */\nexport function genCSSMotion(config) {\n var transitionSupport = config;\n if (_typeof(config) === 'object') {\n transitionSupport = config.transitionSupport;\n }\n function isSupportTransition(props, contextMotion) {\n return !!(props.motionName && transitionSupport && contextMotion !== false);\n }\n var CSSMotion = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$visible = props.visible,\n visible = _props$visible === void 0 ? true : _props$visible,\n _props$removeOnLeave = props.removeOnLeave,\n removeOnLeave = _props$removeOnLeave === void 0 ? true : _props$removeOnLeave,\n forceRender = props.forceRender,\n children = props.children,\n motionName = props.motionName,\n leavedClassName = props.leavedClassName,\n eventProps = props.eventProps;\n var _React$useContext = React.useContext(Context),\n contextMotion = _React$useContext.motion;\n var supportMotion = isSupportTransition(props, contextMotion);\n\n // Ref to the react node, it may be a HTMLElement\n var nodeRef = useRef();\n // Ref to the dom wrapper in case ref can not pass to HTMLElement\n var wrapperNodeRef = useRef();\n function getDomElement() {\n try {\n // Here we're avoiding call for findDOMNode since it's deprecated\n // in strict mode. We're calling it only when node ref is not\n // an instance of DOM HTMLElement. Otherwise use\n // findDOMNode as a final resort\n return nodeRef.current instanceof HTMLElement ? nodeRef.current : findDOMNode(wrapperNodeRef.current);\n } catch (e) {\n // Only happen when `motionDeadline` trigger but element removed.\n return null;\n }\n }\n var _useStatus = useStatus(supportMotion, visible, getDomElement, props),\n _useStatus2 = _slicedToArray(_useStatus, 4),\n status = _useStatus2[0],\n statusStep = _useStatus2[1],\n statusStyle = _useStatus2[2],\n mergedVisible = _useStatus2[3];\n\n // Record whether content has rendered\n // Will return null for un-rendered even when `removeOnLeave={false}`\n var renderedRef = React.useRef(mergedVisible);\n if (mergedVisible) {\n renderedRef.current = true;\n }\n\n // ====================== Refs ======================\n var setNodeRef = React.useCallback(function (node) {\n nodeRef.current = node;\n fillRef(ref, node);\n }, [ref]);\n\n // ===================== Render =====================\n var motionChildren;\n var mergedProps = _objectSpread(_objectSpread({}, eventProps), {}, {\n visible: visible\n });\n if (!children) {\n // No children\n motionChildren = null;\n } else if (status === STATUS_NONE) {\n // Stable children\n if (mergedVisible) {\n motionChildren = children(_objectSpread({}, mergedProps), setNodeRef);\n } else if (!removeOnLeave && renderedRef.current && leavedClassName) {\n motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n className: leavedClassName\n }), setNodeRef);\n } else if (forceRender || !removeOnLeave && !leavedClassName) {\n motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n style: {\n display: 'none'\n }\n }), setNodeRef);\n } else {\n motionChildren = null;\n }\n } else {\n var _classNames;\n // In motion\n var statusSuffix;\n if (statusStep === STEP_PREPARE) {\n statusSuffix = 'prepare';\n } else if (isActive(statusStep)) {\n statusSuffix = 'active';\n } else if (statusStep === STEP_START) {\n statusSuffix = 'start';\n }\n var motionCls = getTransitionName(motionName, \"\".concat(status, \"-\").concat(statusSuffix));\n motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n className: classNames(getTransitionName(motionName, status), (_classNames = {}, _defineProperty(_classNames, motionCls, motionCls && statusSuffix), _defineProperty(_classNames, motionName, typeof motionName === 'string'), _classNames)),\n style: statusStyle\n }), setNodeRef);\n }\n\n // Auto inject ref if child node not have `ref` props\n if ( /*#__PURE__*/React.isValidElement(motionChildren) && supportRef(motionChildren)) {\n var _ref = motionChildren,\n originNodeRef = _ref.ref;\n if (!originNodeRef) {\n motionChildren = /*#__PURE__*/React.cloneElement(motionChildren, {\n ref: setNodeRef\n });\n }\n }\n return /*#__PURE__*/React.createElement(DomWrapper, {\n ref: wrapperNodeRef\n }, motionChildren);\n });\n CSSMotion.displayName = 'CSSMotion';\n return CSSMotion;\n}\nexport default genCSSMotion(supportTransition);","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useState from \"rc-util/es/hooks/useState\";\nimport * as React from 'react';\nimport { useEffect, useRef } from 'react';\nimport { STATUS_APPEAR, STATUS_ENTER, STATUS_LEAVE, STATUS_NONE, STEP_ACTIVE, STEP_PREPARE, STEP_PREPARED, STEP_START } from \"../interface\";\nimport useDomMotionEvents from \"./useDomMotionEvents\";\nimport useIsomorphicLayoutEffect from \"./useIsomorphicLayoutEffect\";\nimport useStepQueue, { DoStep, isActive, SkipStep } from \"./useStepQueue\";\nexport default function useStatus(supportMotion, visible, getElement, _ref) {\n var _ref$motionEnter = _ref.motionEnter,\n motionEnter = _ref$motionEnter === void 0 ? true : _ref$motionEnter,\n _ref$motionAppear = _ref.motionAppear,\n motionAppear = _ref$motionAppear === void 0 ? true : _ref$motionAppear,\n _ref$motionLeave = _ref.motionLeave,\n motionLeave = _ref$motionLeave === void 0 ? true : _ref$motionLeave,\n motionDeadline = _ref.motionDeadline,\n motionLeaveImmediately = _ref.motionLeaveImmediately,\n onAppearPrepare = _ref.onAppearPrepare,\n onEnterPrepare = _ref.onEnterPrepare,\n onLeavePrepare = _ref.onLeavePrepare,\n onAppearStart = _ref.onAppearStart,\n onEnterStart = _ref.onEnterStart,\n onLeaveStart = _ref.onLeaveStart,\n onAppearActive = _ref.onAppearActive,\n onEnterActive = _ref.onEnterActive,\n onLeaveActive = _ref.onLeaveActive,\n onAppearEnd = _ref.onAppearEnd,\n onEnterEnd = _ref.onEnterEnd,\n onLeaveEnd = _ref.onLeaveEnd,\n onVisibleChanged = _ref.onVisibleChanged;\n // Used for outer render usage to avoid `visible: false & status: none` to render nothing\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n asyncVisible = _useState2[0],\n setAsyncVisible = _useState2[1];\n var _useState3 = useState(STATUS_NONE),\n _useState4 = _slicedToArray(_useState3, 2),\n status = _useState4[0],\n setStatus = _useState4[1];\n var _useState5 = useState(null),\n _useState6 = _slicedToArray(_useState5, 2),\n style = _useState6[0],\n setStyle = _useState6[1];\n var mountedRef = useRef(false);\n var deadlineRef = useRef(null);\n\n // =========================== Dom Node ===========================\n function getDomElement() {\n return getElement();\n }\n\n // ========================== Motion End ==========================\n var activeRef = useRef(false);\n\n /**\n * Clean up status & style\n */\n function updateMotionEndStatus() {\n setStatus(STATUS_NONE, true);\n setStyle(null, true);\n }\n function onInternalMotionEnd(event) {\n var element = getDomElement();\n if (event && !event.deadline && event.target !== element) {\n // event exists\n // not initiated by deadline\n // transitionEnd not fired by inner elements\n return;\n }\n var currentActive = activeRef.current;\n var canEnd;\n if (status === STATUS_APPEAR && currentActive) {\n canEnd = onAppearEnd === null || onAppearEnd === void 0 ? void 0 : onAppearEnd(element, event);\n } else if (status === STATUS_ENTER && currentActive) {\n canEnd = onEnterEnd === null || onEnterEnd === void 0 ? void 0 : onEnterEnd(element, event);\n } else if (status === STATUS_LEAVE && currentActive) {\n canEnd = onLeaveEnd === null || onLeaveEnd === void 0 ? void 0 : onLeaveEnd(element, event);\n }\n\n // Only update status when `canEnd` and not destroyed\n if (status !== STATUS_NONE && currentActive && canEnd !== false) {\n updateMotionEndStatus();\n }\n }\n var _useDomMotionEvents = useDomMotionEvents(onInternalMotionEnd),\n _useDomMotionEvents2 = _slicedToArray(_useDomMotionEvents, 1),\n patchMotionEvents = _useDomMotionEvents2[0];\n\n // ============================= Step =============================\n var getEventHandlers = function getEventHandlers(targetStatus) {\n var _ref2, _ref3, _ref4;\n switch (targetStatus) {\n case STATUS_APPEAR:\n return _ref2 = {}, _defineProperty(_ref2, STEP_PREPARE, onAppearPrepare), _defineProperty(_ref2, STEP_START, onAppearStart), _defineProperty(_ref2, STEP_ACTIVE, onAppearActive), _ref2;\n case STATUS_ENTER:\n return _ref3 = {}, _defineProperty(_ref3, STEP_PREPARE, onEnterPrepare), _defineProperty(_ref3, STEP_START, onEnterStart), _defineProperty(_ref3, STEP_ACTIVE, onEnterActive), _ref3;\n case STATUS_LEAVE:\n return _ref4 = {}, _defineProperty(_ref4, STEP_PREPARE, onLeavePrepare), _defineProperty(_ref4, STEP_START, onLeaveStart), _defineProperty(_ref4, STEP_ACTIVE, onLeaveActive), _ref4;\n default:\n return {};\n }\n };\n var eventHandlers = React.useMemo(function () {\n return getEventHandlers(status);\n }, [status]);\n var _useStepQueue = useStepQueue(status, !supportMotion, function (newStep) {\n // Only prepare step can be skip\n if (newStep === STEP_PREPARE) {\n var onPrepare = eventHandlers[STEP_PREPARE];\n if (!onPrepare) {\n return SkipStep;\n }\n return onPrepare(getDomElement());\n }\n\n // Rest step is sync update\n if (step in eventHandlers) {\n var _eventHandlers$step;\n setStyle(((_eventHandlers$step = eventHandlers[step]) === null || _eventHandlers$step === void 0 ? void 0 : _eventHandlers$step.call(eventHandlers, getDomElement(), null)) || null);\n }\n if (step === STEP_ACTIVE) {\n // Patch events when motion needed\n patchMotionEvents(getDomElement());\n if (motionDeadline > 0) {\n clearTimeout(deadlineRef.current);\n deadlineRef.current = setTimeout(function () {\n onInternalMotionEnd({\n deadline: true\n });\n }, motionDeadline);\n }\n }\n if (step === STEP_PREPARED) {\n updateMotionEndStatus();\n }\n return DoStep;\n }),\n _useStepQueue2 = _slicedToArray(_useStepQueue, 2),\n startStep = _useStepQueue2[0],\n step = _useStepQueue2[1];\n var active = isActive(step);\n activeRef.current = active;\n\n // ============================ Status ============================\n // Update with new status\n useIsomorphicLayoutEffect(function () {\n setAsyncVisible(visible);\n var isMounted = mountedRef.current;\n mountedRef.current = true;\n\n // if (!supportMotion) {\n // return;\n // }\n\n var nextStatus;\n\n // Appear\n if (!isMounted && visible && motionAppear) {\n nextStatus = STATUS_APPEAR;\n }\n\n // Enter\n if (isMounted && visible && motionEnter) {\n nextStatus = STATUS_ENTER;\n }\n\n // Leave\n if (isMounted && !visible && motionLeave || !isMounted && motionLeaveImmediately && !visible && motionLeave) {\n nextStatus = STATUS_LEAVE;\n }\n var nextEventHandlers = getEventHandlers(nextStatus);\n\n // Update to next status\n if (nextStatus && (supportMotion || nextEventHandlers[STEP_PREPARE])) {\n setStatus(nextStatus);\n startStep();\n } else {\n // Set back in case no motion but prev status has prepare step\n setStatus(STATUS_NONE);\n }\n }, [visible]);\n\n // ============================ Effect ============================\n // Reset when motion changed\n useEffect(function () {\n if (\n // Cancel appear\n status === STATUS_APPEAR && !motionAppear ||\n // Cancel enter\n status === STATUS_ENTER && !motionEnter ||\n // Cancel leave\n status === STATUS_LEAVE && !motionLeave) {\n setStatus(STATUS_NONE);\n }\n }, [motionAppear, motionEnter, motionLeave]);\n useEffect(function () {\n return function () {\n mountedRef.current = false;\n clearTimeout(deadlineRef.current);\n };\n }, []);\n\n // Trigger `onVisibleChanged`\n var firstMountChangeRef = React.useRef(false);\n useEffect(function () {\n // [visible & motion not end] => [!visible & motion end] still need trigger onVisibleChanged\n if (asyncVisible) {\n firstMountChangeRef.current = true;\n }\n if (asyncVisible !== undefined && status === STATUS_NONE) {\n // Skip first render is invisible since it's nothing changed\n if (firstMountChangeRef.current || asyncVisible) {\n onVisibleChanged === null || onVisibleChanged === void 0 ? void 0 : onVisibleChanged(asyncVisible);\n }\n firstMountChangeRef.current = true;\n }\n }, [asyncVisible, status]);\n\n // ============================ Styles ============================\n var mergedStyle = style;\n if (eventHandlers[STEP_PREPARE] && step === STEP_START) {\n mergedStyle = _objectSpread({\n transition: 'none'\n }, mergedStyle);\n }\n return [status, step, mergedStyle, asyncVisible !== null && asyncVisible !== void 0 ? asyncVisible : visible];\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport var STATUS_ADD = 'add';\nexport var STATUS_KEEP = 'keep';\nexport var STATUS_REMOVE = 'remove';\nexport var STATUS_REMOVED = 'removed';\nexport function wrapKeyToObject(key) {\n var keyObj;\n if (key && _typeof(key) === 'object' && 'key' in key) {\n keyObj = key;\n } else {\n keyObj = {\n key: key\n };\n }\n return _objectSpread(_objectSpread({}, keyObj), {}, {\n key: String(keyObj.key)\n });\n}\nexport function parseKeys() {\n var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return keys.map(wrapKeyToObject);\n}\nexport function diffKeys() {\n var prevKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var currentKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var list = [];\n var currentIndex = 0;\n var currentLen = currentKeys.length;\n var prevKeyObjects = parseKeys(prevKeys);\n var currentKeyObjects = parseKeys(currentKeys);\n\n // Check prev keys to insert or keep\n prevKeyObjects.forEach(function (keyObj) {\n var hit = false;\n for (var i = currentIndex; i < currentLen; i += 1) {\n var currentKeyObj = currentKeyObjects[i];\n if (currentKeyObj.key === keyObj.key) {\n // New added keys should add before current key\n if (currentIndex < i) {\n list = list.concat(currentKeyObjects.slice(currentIndex, i).map(function (obj) {\n return _objectSpread(_objectSpread({}, obj), {}, {\n status: STATUS_ADD\n });\n }));\n currentIndex = i;\n }\n list.push(_objectSpread(_objectSpread({}, currentKeyObj), {}, {\n status: STATUS_KEEP\n }));\n currentIndex += 1;\n hit = true;\n break;\n }\n }\n\n // If not hit, it means key is removed\n if (!hit) {\n list.push(_objectSpread(_objectSpread({}, keyObj), {}, {\n status: STATUS_REMOVE\n }));\n }\n });\n\n // Add rest to the list\n if (currentIndex < currentLen) {\n list = list.concat(currentKeyObjects.slice(currentIndex).map(function (obj) {\n return _objectSpread(_objectSpread({}, obj), {}, {\n status: STATUS_ADD\n });\n }));\n }\n\n /**\n * Merge same key when it remove and add again:\n * [1 - add, 2 - keep, 1 - remove] -> [1 - keep, 2 - keep]\n */\n var keys = {};\n list.forEach(function (_ref) {\n var key = _ref.key;\n keys[key] = (keys[key] || 0) + 1;\n });\n var duplicatedKeys = Object.keys(keys).filter(function (key) {\n return keys[key] > 1;\n });\n duplicatedKeys.forEach(function (matchKey) {\n // Remove `STATUS_REMOVE` node.\n list = list.filter(function (_ref2) {\n var key = _ref2.key,\n status = _ref2.status;\n return key !== matchKey || status !== STATUS_REMOVE;\n });\n\n // Update `STATUS_ADD` to `STATUS_KEEP`\n list.forEach(function (node) {\n if (node.key === matchKey) {\n // eslint-disable-next-line no-param-reassign\n node.status = STATUS_KEEP;\n }\n });\n });\n return list;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"component\", \"children\", \"onVisibleChanged\", \"onAllRemoved\"],\n _excluded2 = [\"status\"];\n/* eslint react/prop-types: 0 */\nimport * as React from 'react';\nimport OriginCSSMotion from \"./CSSMotion\";\nimport { supportTransition } from \"./util/motion\";\nimport { STATUS_ADD, STATUS_KEEP, STATUS_REMOVE, STATUS_REMOVED, diffKeys, parseKeys } from \"./util/diff\";\nvar MOTION_PROP_NAMES = ['eventProps', 'visible', 'children', 'motionName', 'motionAppear', 'motionEnter', 'motionLeave', 'motionLeaveImmediately', 'motionDeadline', 'removeOnLeave', 'leavedClassName', 'onAppearStart', 'onAppearActive', 'onAppearEnd', 'onEnterStart', 'onEnterActive', 'onEnterEnd', 'onLeaveStart', 'onLeaveActive', 'onLeaveEnd'];\n/**\n * Generate a CSSMotionList component with config\n * @param transitionSupport No need since CSSMotionList no longer depends on transition support\n * @param CSSMotion CSSMotion component\n */\nexport function genCSSMotionList(transitionSupport) {\n var CSSMotion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : OriginCSSMotion;\n var CSSMotionList = /*#__PURE__*/function (_React$Component) {\n _inherits(CSSMotionList, _React$Component);\n var _super = _createSuper(CSSMotionList);\n function CSSMotionList() {\n var _this;\n _classCallCheck(this, CSSMotionList);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n keyEntities: []\n });\n _defineProperty(_assertThisInitialized(_this), \"removeKey\", function (removeKey) {\n var keyEntities = _this.state.keyEntities;\n var nextKeyEntities = keyEntities.map(function (entity) {\n if (entity.key !== removeKey) return entity;\n return _objectSpread(_objectSpread({}, entity), {}, {\n status: STATUS_REMOVED\n });\n });\n _this.setState({\n keyEntities: nextKeyEntities\n });\n return nextKeyEntities.filter(function (_ref) {\n var status = _ref.status;\n return status !== STATUS_REMOVED;\n }).length;\n });\n return _this;\n }\n _createClass(CSSMotionList, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var keyEntities = this.state.keyEntities;\n var _this$props = this.props,\n component = _this$props.component,\n children = _this$props.children,\n _onVisibleChanged = _this$props.onVisibleChanged,\n onAllRemoved = _this$props.onAllRemoved,\n restProps = _objectWithoutProperties(_this$props, _excluded);\n var Component = component || React.Fragment;\n var motionProps = {};\n MOTION_PROP_NAMES.forEach(function (prop) {\n motionProps[prop] = restProps[prop];\n delete restProps[prop];\n });\n delete restProps.keys;\n return /*#__PURE__*/React.createElement(Component, restProps, keyEntities.map(function (_ref2) {\n var status = _ref2.status,\n eventProps = _objectWithoutProperties(_ref2, _excluded2);\n var visible = status === STATUS_ADD || status === STATUS_KEEP;\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motionProps, {\n key: eventProps.key,\n visible: visible,\n eventProps: eventProps,\n onVisibleChanged: function onVisibleChanged(changedVisible) {\n _onVisibleChanged === null || _onVisibleChanged === void 0 ? void 0 : _onVisibleChanged(changedVisible, {\n key: eventProps.key\n });\n if (!changedVisible) {\n var restKeysCount = _this2.removeKey(eventProps.key);\n if (restKeysCount === 0 && onAllRemoved) {\n onAllRemoved();\n }\n }\n }\n }), children);\n }));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref3, _ref4) {\n var keys = _ref3.keys;\n var keyEntities = _ref4.keyEntities;\n var parsedKeyObjects = parseKeys(keys);\n var mixedKeyEntities = diffKeys(keyEntities, parsedKeyObjects);\n return {\n keyEntities: mixedKeyEntities.filter(function (entity) {\n var prevEntity = keyEntities.find(function (_ref5) {\n var key = _ref5.key;\n return entity.key === key;\n });\n\n // Remove if already mark as removed\n if (prevEntity && prevEntity.status === STATUS_REMOVED && entity.status === STATUS_REMOVE) {\n return false;\n }\n return true;\n })\n };\n }\n\n // ZombieJ: Return the count of rest keys. It's safe to refactor if need more info.\n }]);\n return CSSMotionList;\n }(React.Component);\n _defineProperty(CSSMotionList, \"defaultProps\", {\n component: 'div'\n });\n return CSSMotionList;\n}\nexport default genCSSMotionList(supportTransition);","import CSSMotion from \"./CSSMotion\";\nimport CSSMotionList from \"./CSSMotionList\";\nexport { default as Provider } from \"./context\";\nexport { CSSMotionList };\nexport default CSSMotion;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport { Component } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nvar Notice = /*#__PURE__*/function (_Component) {\n _inherits(Notice, _Component);\n var _super = _createSuper(Notice);\n function Notice() {\n var _this;\n _classCallCheck(this, Notice);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.closeTimer = null;\n _this.close = function (e) {\n if (e) {\n e.stopPropagation();\n }\n _this.clearCloseTimer();\n var _this$props = _this.props,\n onClose = _this$props.onClose,\n noticeKey = _this$props.noticeKey;\n if (onClose) {\n onClose(noticeKey);\n }\n };\n _this.startCloseTimer = function () {\n if (_this.props.duration) {\n _this.closeTimer = window.setTimeout(function () {\n _this.close();\n }, _this.props.duration * 1000);\n }\n };\n _this.clearCloseTimer = function () {\n if (_this.closeTimer) {\n clearTimeout(_this.closeTimer);\n _this.closeTimer = null;\n }\n };\n return _this;\n }\n _createClass(Notice, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startCloseTimer();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.props.duration !== prevProps.duration || this.props.updateMark !== prevProps.updateMark ||\n // Visible again need reset timer\n this.props.visible !== prevProps.visible && this.props.visible) {\n this.restartCloseTimer();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.clearCloseTimer();\n }\n }, {\n key: \"restartCloseTimer\",\n value: function restartCloseTimer() {\n this.clearCloseTimer();\n this.startCloseTimer();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props2 = this.props,\n prefixCls = _this$props2.prefixCls,\n className = _this$props2.className,\n closable = _this$props2.closable,\n closeIcon = _this$props2.closeIcon,\n style = _this$props2.style,\n onClick = _this$props2.onClick,\n children = _this$props2.children,\n holder = _this$props2.holder;\n var componentClass = \"\".concat(prefixCls, \"-notice\");\n var dataOrAriaAttributeProps = Object.keys(this.props).reduce(function (acc, key) {\n if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-' || key === 'role') {\n acc[key] = _this2.props[key];\n }\n return acc;\n }, {});\n var node = /*#__PURE__*/React.createElement(\"div\", _extends({\n className: classNames(componentClass, className, _defineProperty({}, \"\".concat(componentClass, \"-closable\"), closable)),\n style: style,\n onMouseEnter: this.clearCloseTimer,\n onMouseLeave: this.startCloseTimer,\n onClick: onClick\n }, dataOrAriaAttributeProps), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(componentClass, \"-content\")\n }, children), closable ? /*#__PURE__*/React.createElement(\"a\", {\n tabIndex: 0,\n onClick: this.close,\n className: \"\".concat(componentClass, \"-close\")\n }, closeIcon || /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(componentClass, \"-close-x\")\n })) : null);\n if (holder) {\n return /*#__PURE__*/ReactDOM.createPortal(node, holder);\n }\n return node;\n }\n }]);\n return Notice;\n}(Component);\nNotice.defaultProps = {\n onClose: function onClose() {},\n duration: 1.5\n};\nexport { Notice as default };","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"getContainer\"];\nimport * as React from 'react';\nimport { Component } from 'react';\nimport { render, unmount } from \"rc-util/es/React/render\";\nimport classNames from 'classnames';\nimport { CSSMotionList } from 'rc-motion';\nimport Notice from './Notice';\nimport _useNotification from './useNotification';\nvar seed = 0;\nvar now = Date.now();\nfunction getUuid() {\n var id = seed;\n seed += 1;\n return \"rcNotification_\".concat(now, \"_\").concat(id);\n}\nvar Notification = /*#__PURE__*/function (_Component) {\n _inherits(Notification, _Component);\n var _super = _createSuper(Notification);\n function Notification() {\n var _this;\n _classCallCheck(this, Notification);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n notices: []\n };\n _this.hookRefs = new Map();\n _this.add = function (originNotice, holderCallback) {\n var _originNotice$key;\n var key = (_originNotice$key = originNotice.key) !== null && _originNotice$key !== void 0 ? _originNotice$key : getUuid();\n var notice = _objectSpread(_objectSpread({}, originNotice), {}, {\n key: key\n });\n var maxCount = _this.props.maxCount;\n _this.setState(function (previousState) {\n var notices = previousState.notices;\n var noticeIndex = notices.map(function (v) {\n return v.notice.key;\n }).indexOf(key);\n var updatedNotices = notices.concat();\n if (noticeIndex !== -1) {\n updatedNotices.splice(noticeIndex, 1, {\n notice: notice,\n holderCallback: holderCallback\n });\n } else {\n if (maxCount && notices.length >= maxCount) {\n // XXX, use key of first item to update new added (let React to move exsiting\n // instead of remove and mount). Same key was used before for both a) external\n // manual control and b) internal react 'key' prop , which is not that good.\n // eslint-disable-next-line no-param-reassign\n // zombieJ: Not know why use `updateKey`. This makes Notice infinite loop in jest.\n // Change to `updateMark` for compare instead.\n // https://github.com/react-component/notification/commit/32299e6be396f94040bfa82517eea940db947ece\n notice.key = updatedNotices[0].notice.key;\n notice.updateMark = getUuid();\n // zombieJ: That's why. User may close by key directly.\n // We need record this but not re-render to avoid upper issue\n // https://github.com/react-component/notification/issues/129\n notice.userPassKey = key;\n updatedNotices.shift();\n }\n updatedNotices.push({\n notice: notice,\n holderCallback: holderCallback\n });\n }\n return {\n notices: updatedNotices\n };\n });\n };\n _this.remove = function (removeKey) {\n _this.setState(function (_ref) {\n var notices = _ref.notices;\n return {\n notices: notices.filter(function (_ref2) {\n var _ref2$notice = _ref2.notice,\n key = _ref2$notice.key,\n userPassKey = _ref2$notice.userPassKey;\n var mergedKey = userPassKey !== null && userPassKey !== void 0 ? userPassKey : key;\n return mergedKey !== removeKey;\n })\n };\n });\n };\n _this.noticePropsMap = {};\n return _this;\n }\n _createClass(Notification, [{\n key: \"getTransitionName\",\n value: function getTransitionName() {\n var _this$props = this.props,\n prefixCls = _this$props.prefixCls,\n animation = _this$props.animation;\n var transitionName = this.props.transitionName;\n if (!transitionName && animation) {\n transitionName = \"\".concat(prefixCls, \"-\").concat(animation);\n }\n return transitionName;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var notices = this.state.notices;\n var _this$props2 = this.props,\n prefixCls = _this$props2.prefixCls,\n className = _this$props2.className,\n closeIcon = _this$props2.closeIcon,\n style = _this$props2.style;\n var noticeKeys = [];\n notices.forEach(function (_ref3, index) {\n var notice = _ref3.notice,\n holderCallback = _ref3.holderCallback;\n var updateMark = index === notices.length - 1 ? notice.updateMark : undefined;\n var key = notice.key,\n userPassKey = notice.userPassKey;\n var noticeProps = _objectSpread(_objectSpread(_objectSpread({\n prefixCls: prefixCls,\n closeIcon: closeIcon\n }, notice), notice.props), {}, {\n key: key,\n noticeKey: userPassKey || key,\n updateMark: updateMark,\n onClose: function onClose(noticeKey) {\n var _notice$onClose;\n _this2.remove(noticeKey);\n (_notice$onClose = notice.onClose) === null || _notice$onClose === void 0 ? void 0 : _notice$onClose.call(notice);\n },\n onClick: notice.onClick,\n children: notice.content\n });\n // Give to motion\n noticeKeys.push(key);\n _this2.noticePropsMap[key] = {\n props: noticeProps,\n holderCallback: holderCallback\n };\n });\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(prefixCls, className),\n style: style\n }, /*#__PURE__*/React.createElement(CSSMotionList, {\n keys: noticeKeys,\n motionName: this.getTransitionName(),\n onVisibleChanged: function onVisibleChanged(changedVisible, _ref4) {\n var key = _ref4.key;\n if (!changedVisible) {\n delete _this2.noticePropsMap[key];\n }\n }\n }, function (_ref5) {\n var key = _ref5.key,\n motionClassName = _ref5.className,\n motionStyle = _ref5.style,\n visible = _ref5.visible;\n var _this2$noticePropsMap = _this2.noticePropsMap[key],\n noticeProps = _this2$noticePropsMap.props,\n holderCallback = _this2$noticePropsMap.holderCallback;\n if (holderCallback) {\n return /*#__PURE__*/React.createElement(\"div\", {\n key: key,\n className: classNames(motionClassName, \"\".concat(prefixCls, \"-hook-holder\")),\n style: _objectSpread({}, motionStyle),\n ref: function ref(div) {\n if (typeof key === 'undefined') {\n return;\n }\n if (div) {\n _this2.hookRefs.set(key, div);\n holderCallback(div, noticeProps);\n } else {\n _this2.hookRefs.delete(key);\n }\n }\n });\n }\n return /*#__PURE__*/React.createElement(Notice, _extends({}, noticeProps, {\n className: classNames(motionClassName, noticeProps === null || noticeProps === void 0 ? void 0 : noticeProps.className),\n style: _objectSpread(_objectSpread({}, motionStyle), noticeProps === null || noticeProps === void 0 ? void 0 : noticeProps.style),\n visible: visible\n }));\n }));\n }\n }]);\n return Notification;\n}(Component);\nNotification.newInstance = void 0;\nNotification.defaultProps = {\n prefixCls: 'rc-notification',\n animation: 'fade',\n style: {\n top: 65,\n left: '50%'\n }\n};\nNotification.newInstance = function newNotificationInstance(properties, callback) {\n var _ref6 = properties || {},\n getContainer = _ref6.getContainer,\n props = _objectWithoutProperties(_ref6, _excluded);\n var div = document.createElement('div');\n if (getContainer) {\n var root = getContainer();\n root.appendChild(div);\n } else {\n document.body.appendChild(div);\n }\n var called = false;\n function ref(notification) {\n if (called) {\n return;\n }\n called = true;\n callback({\n notice: function notice(noticeProps) {\n notification.add(noticeProps);\n },\n removeNotice: function removeNotice(key) {\n notification.remove(key);\n },\n component: notification,\n destroy: function destroy() {\n unmount(div);\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n },\n // Hooks\n useNotification: function useNotification() {\n return _useNotification(notification);\n }\n });\n }\n // Only used for test case usage\n if (process.env.NODE_ENV === 'test' && properties.TEST_RENDER) {\n properties.TEST_RENDER( /*#__PURE__*/React.createElement(Notification, _extends({}, props, {\n ref: ref\n })));\n return;\n }\n render( /*#__PURE__*/React.createElement(Notification, _extends({}, props, {\n ref: ref\n })), div);\n};\nexport default Notification;","import Notification from './Notification';\nexport default Notification;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport Notice from './Notice';\nexport default function useNotification(notificationInstance) {\n var createdRef = React.useRef({});\n var _React$useState = React.useState([]),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n elements = _React$useState2[0],\n setElements = _React$useState2[1];\n function notify(noticeProps) {\n var firstMount = true;\n notificationInstance.add(noticeProps, function (div, props) {\n var key = props.key;\n if (div && (!createdRef.current[key] || firstMount)) {\n var noticeEle = /*#__PURE__*/React.createElement(Notice, _extends({}, props, {\n holder: div\n }));\n createdRef.current[key] = noticeEle;\n setElements(function (originElements) {\n var index = originElements.findIndex(function (ele) {\n return ele.key === props.key;\n });\n if (index === -1) {\n return [].concat(_toConsumableArray(originElements), [noticeEle]);\n }\n var cloneList = _toConsumableArray(originElements);\n cloneList[index] = noticeEle;\n return cloneList;\n });\n }\n firstMount = false;\n });\n }\n return [notify, /*#__PURE__*/React.createElement(React.Fragment, null, elements)];\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"invalidate\", \"item\", \"renderItem\", \"responsive\", \"responsiveDisabled\", \"registerSize\", \"itemKey\", \"className\", \"style\", \"children\", \"display\", \"order\", \"component\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\n// Use shared variable to save bundle size\nvar UNDEFINED = undefined;\nfunction InternalItem(props, ref) {\n var prefixCls = props.prefixCls,\n invalidate = props.invalidate,\n item = props.item,\n renderItem = props.renderItem,\n responsive = props.responsive,\n responsiveDisabled = props.responsiveDisabled,\n registerSize = props.registerSize,\n itemKey = props.itemKey,\n className = props.className,\n style = props.style,\n children = props.children,\n display = props.display,\n order = props.order,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n restProps = _objectWithoutProperties(props, _excluded);\n var mergedHidden = responsive && !display;\n // ================================ Effect ================================\n function internalRegisterSize(width) {\n registerSize(itemKey, width);\n }\n React.useEffect(function () {\n return function () {\n internalRegisterSize(null);\n };\n }, []);\n // ================================ Render ================================\n var childNode = renderItem && item !== UNDEFINED ? renderItem(item) : children;\n var overflowStyle;\n if (!invalidate) {\n overflowStyle = {\n opacity: mergedHidden ? 0 : 1,\n height: mergedHidden ? 0 : UNDEFINED,\n overflowY: mergedHidden ? 'hidden' : UNDEFINED,\n order: responsive ? order : UNDEFINED,\n pointerEvents: mergedHidden ? 'none' : UNDEFINED,\n position: mergedHidden ? 'absolute' : UNDEFINED\n };\n }\n var overflowProps = {};\n if (mergedHidden) {\n overflowProps['aria-hidden'] = true;\n }\n var itemNode = /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(!invalidate && prefixCls, className),\n style: _objectSpread(_objectSpread({}, overflowStyle), style)\n }, overflowProps, restProps, {\n ref: ref\n }), childNode);\n if (responsive) {\n itemNode = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: function onResize(_ref) {\n var offsetWidth = _ref.offsetWidth;\n internalRegisterSize(offsetWidth);\n },\n disabled: responsiveDisabled\n }, itemNode);\n }\n return itemNode;\n}\nvar Item = /*#__PURE__*/React.forwardRef(InternalItem);\nItem.displayName = 'Item';\nexport default Item;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport * as React from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport channelUpdate from './channelUpdate';\n/**\n * Batcher for record any `useEffectState` need update.\n */\nexport function useBatcher() {\n // Updater Trigger\n var updateFuncRef = React.useRef(null);\n // Notify update\n var notifyEffectUpdate = function notifyEffectUpdate(callback) {\n if (!updateFuncRef.current) {\n updateFuncRef.current = [];\n channelUpdate(function () {\n unstable_batchedUpdates(function () {\n updateFuncRef.current.forEach(function (fn) {\n fn();\n });\n updateFuncRef.current = null;\n });\n });\n }\n updateFuncRef.current.push(callback);\n };\n return notifyEffectUpdate;\n}\n/**\n * Trigger state update by `useLayoutEffect` to save perf.\n */\nexport default function useEffectState(notifyEffectUpdate, defaultValue) {\n // Value\n var _React$useState = React.useState(defaultValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n stateValue = _React$useState2[0],\n setStateValue = _React$useState2[1];\n // Set State\n var setEffectVal = useEvent(function (nextValue) {\n notifyEffectUpdate(function () {\n setStateValue(nextValue);\n });\n });\n return [stateValue, setEffectVal];\n}","import raf from \"rc-util/es/raf\";\nexport default function channelUpdate(callback) {\n if (typeof MessageChannel === 'undefined') {\n raf(callback);\n } else {\n var channel = new MessageChannel();\n channel.port1.onmessage = function () {\n return callback();\n };\n channel.port2.postMessage(undefined);\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"component\"],\n _excluded2 = [\"className\"],\n _excluded3 = [\"className\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Item from './Item';\nimport { OverflowContext } from './Overflow';\nvar InternalRawItem = function InternalRawItem(props, ref) {\n var context = React.useContext(OverflowContext);\n // Render directly when context not provided\n if (!context) {\n var _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _restProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/React.createElement(Component, _extends({}, _restProps, {\n ref: ref\n }));\n }\n var contextClassName = context.className,\n restContext = _objectWithoutProperties(context, _excluded2);\n var className = props.className,\n restProps = _objectWithoutProperties(props, _excluded3);\n // Do not pass context to sub item to avoid multiple measure\n return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(Item, _extends({\n ref: ref,\n className: classNames(contextClassName, className)\n }, restContext, restProps)));\n};\nvar RawItem = /*#__PURE__*/React.forwardRef(InternalRawItem);\nRawItem.displayName = 'RawItem';\nexport default RawItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"data\", \"renderItem\", \"renderRawItem\", \"itemKey\", \"itemWidth\", \"ssr\", \"style\", \"className\", \"maxCount\", \"renderRest\", \"renderRawRest\", \"suffix\", \"component\", \"itemComponent\", \"onVisibleChange\"];\nimport * as React from 'react';\nimport { useState, useMemo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport Item from './Item';\nimport useEffectState, { useBatcher } from './hooks/useEffectState';\nimport RawItem from './RawItem';\nexport var OverflowContext = /*#__PURE__*/React.createContext(null);\nvar RESPONSIVE = 'responsive';\nvar INVALIDATE = 'invalidate';\nfunction defaultRenderRest(omittedItems) {\n return \"+ \".concat(omittedItems.length, \" ...\");\n}\nfunction Overflow(props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-overflow' : _props$prefixCls,\n _props$data = props.data,\n data = _props$data === void 0 ? [] : _props$data,\n renderItem = props.renderItem,\n renderRawItem = props.renderRawItem,\n itemKey = props.itemKey,\n _props$itemWidth = props.itemWidth,\n itemWidth = _props$itemWidth === void 0 ? 10 : _props$itemWidth,\n ssr = props.ssr,\n style = props.style,\n className = props.className,\n maxCount = props.maxCount,\n renderRest = props.renderRest,\n renderRawRest = props.renderRawRest,\n suffix = props.suffix,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n itemComponent = props.itemComponent,\n onVisibleChange = props.onVisibleChange,\n restProps = _objectWithoutProperties(props, _excluded);\n var fullySSR = ssr === 'full';\n var notifyEffectUpdate = useBatcher();\n var _useEffectState = useEffectState(notifyEffectUpdate, null),\n _useEffectState2 = _slicedToArray(_useEffectState, 2),\n containerWidth = _useEffectState2[0],\n setContainerWidth = _useEffectState2[1];\n var mergedContainerWidth = containerWidth || 0;\n var _useEffectState3 = useEffectState(notifyEffectUpdate, new Map()),\n _useEffectState4 = _slicedToArray(_useEffectState3, 2),\n itemWidths = _useEffectState4[0],\n setItemWidths = _useEffectState4[1];\n var _useEffectState5 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState6 = _slicedToArray(_useEffectState5, 2),\n prevRestWidth = _useEffectState6[0],\n setPrevRestWidth = _useEffectState6[1];\n var _useEffectState7 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState8 = _slicedToArray(_useEffectState7, 2),\n restWidth = _useEffectState8[0],\n setRestWidth = _useEffectState8[1];\n var _useEffectState9 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState10 = _slicedToArray(_useEffectState9, 2),\n suffixWidth = _useEffectState10[0],\n setSuffixWidth = _useEffectState10[1];\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n suffixFixedStart = _useState2[0],\n setSuffixFixedStart = _useState2[1];\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n displayCount = _useState4[0],\n setDisplayCount = _useState4[1];\n var mergedDisplayCount = React.useMemo(function () {\n if (displayCount === null && fullySSR) {\n return Number.MAX_SAFE_INTEGER;\n }\n return displayCount || 0;\n }, [displayCount, containerWidth]);\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n restReady = _useState6[0],\n setRestReady = _useState6[1];\n var itemPrefixCls = \"\".concat(prefixCls, \"-item\");\n // Always use the max width to avoid blink\n var mergedRestWidth = Math.max(prevRestWidth, restWidth);\n // ================================= Data =================================\n var isResponsive = maxCount === RESPONSIVE;\n var shouldResponsive = data.length && isResponsive;\n var invalidate = maxCount === INVALIDATE;\n /**\n * When is `responsive`, we will always render rest node to get the real width of it for calculation\n */\n var showRest = shouldResponsive || typeof maxCount === 'number' && data.length > maxCount;\n var mergedData = useMemo(function () {\n var items = data;\n if (shouldResponsive) {\n if (containerWidth === null && fullySSR) {\n items = data;\n } else {\n items = data.slice(0, Math.min(data.length, mergedContainerWidth / itemWidth));\n }\n } else if (typeof maxCount === 'number') {\n items = data.slice(0, maxCount);\n }\n return items;\n }, [data, itemWidth, containerWidth, maxCount, shouldResponsive]);\n var omittedItems = useMemo(function () {\n if (shouldResponsive) {\n return data.slice(mergedDisplayCount + 1);\n }\n return data.slice(mergedData.length);\n }, [data, mergedData, shouldResponsive, mergedDisplayCount]);\n // ================================= Item =================================\n var getKey = useCallback(function (item, index) {\n var _ref;\n if (typeof itemKey === 'function') {\n return itemKey(item);\n }\n return (_ref = itemKey && (item === null || item === void 0 ? void 0 : item[itemKey])) !== null && _ref !== void 0 ? _ref : index;\n }, [itemKey]);\n var mergedRenderItem = useCallback(renderItem || function (item) {\n return item;\n }, [renderItem]);\n function updateDisplayCount(count, suffixFixedStartVal, notReady) {\n // React 18 will sync render even when the value is same in some case.\n // We take `mergedData` as deps which may cause dead loop if it's dynamic generate.\n // ref: https://github.com/ant-design/ant-design/issues/36559\n if (displayCount === count && (suffixFixedStartVal === undefined || suffixFixedStartVal === suffixFixedStart)) {\n return;\n }\n setDisplayCount(count);\n if (!notReady) {\n setRestReady(count < data.length - 1);\n onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(count);\n }\n if (suffixFixedStartVal !== undefined) {\n setSuffixFixedStart(suffixFixedStartVal);\n }\n }\n // ================================= Size =================================\n function onOverflowResize(_, element) {\n setContainerWidth(element.clientWidth);\n }\n function registerSize(key, width) {\n setItemWidths(function (origin) {\n var clone = new Map(origin);\n if (width === null) {\n clone.delete(key);\n } else {\n clone.set(key, width);\n }\n return clone;\n });\n }\n function registerOverflowSize(_, width) {\n setRestWidth(width);\n setPrevRestWidth(restWidth);\n }\n function registerSuffixSize(_, width) {\n setSuffixWidth(width);\n }\n // ================================ Effect ================================\n function getItemWidth(index) {\n return itemWidths.get(getKey(mergedData[index], index));\n }\n useLayoutEffect(function () {\n if (mergedContainerWidth && typeof mergedRestWidth === 'number' && mergedData) {\n var totalWidth = suffixWidth;\n var len = mergedData.length;\n var lastIndex = len - 1;\n // When data count change to 0, reset this since not loop will reach\n if (!len) {\n updateDisplayCount(0, null);\n return;\n }\n for (var i = 0; i < len; i += 1) {\n var currentItemWidth = getItemWidth(i);\n // Fully will always render\n if (fullySSR) {\n currentItemWidth = currentItemWidth || 0;\n }\n // Break since data not ready\n if (currentItemWidth === undefined) {\n updateDisplayCount(i - 1, undefined, true);\n break;\n }\n // Find best match\n totalWidth += currentItemWidth;\n if (\n // Only one means `totalWidth` is the final width\n lastIndex === 0 && totalWidth <= mergedContainerWidth ||\n // Last two width will be the final width\n i === lastIndex - 1 && totalWidth + getItemWidth(lastIndex) <= mergedContainerWidth) {\n // Additional check if match the end\n updateDisplayCount(lastIndex, null);\n break;\n } else if (totalWidth + mergedRestWidth > mergedContainerWidth) {\n // Can not hold all the content to show rest\n updateDisplayCount(i - 1, totalWidth - currentItemWidth - suffixWidth + restWidth);\n break;\n }\n }\n if (suffix && getItemWidth(0) + suffixWidth > mergedContainerWidth) {\n setSuffixFixedStart(null);\n }\n }\n }, [mergedContainerWidth, itemWidths, restWidth, suffixWidth, getKey, mergedData]);\n // ================================ Render ================================\n var displayRest = restReady && !!omittedItems.length;\n var suffixStyle = {};\n if (suffixFixedStart !== null && shouldResponsive) {\n suffixStyle = {\n position: 'absolute',\n left: suffixFixedStart,\n top: 0\n };\n }\n var itemSharedProps = {\n prefixCls: itemPrefixCls,\n responsive: shouldResponsive,\n component: itemComponent,\n invalidate: invalidate\n };\n // >>>>> Choice render fun by `renderRawItem`\n var internalRenderItemNode = renderRawItem ? function (item, index) {\n var key = getKey(item, index);\n return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n key: key,\n value: _objectSpread(_objectSpread({}, itemSharedProps), {}, {\n order: index,\n item: item,\n itemKey: key,\n registerSize: registerSize,\n display: index <= mergedDisplayCount\n })\n }, renderRawItem(item, index));\n } : function (item, index) {\n var key = getKey(item, index);\n return /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n order: index,\n key: key,\n item: item,\n renderItem: mergedRenderItem,\n itemKey: key,\n registerSize: registerSize,\n display: index <= mergedDisplayCount\n }));\n };\n // >>>>> Rest node\n var restNode;\n var restContextProps = {\n order: displayRest ? mergedDisplayCount : Number.MAX_SAFE_INTEGER,\n className: \"\".concat(itemPrefixCls, \"-rest\"),\n registerSize: registerOverflowSize,\n display: displayRest\n };\n if (!renderRawRest) {\n var mergedRenderRest = renderRest || defaultRenderRest;\n restNode = /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, restContextProps), typeof mergedRenderRest === 'function' ? mergedRenderRest(omittedItems) : mergedRenderRest);\n } else if (renderRawRest) {\n restNode = /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n value: _objectSpread(_objectSpread({}, itemSharedProps), restContextProps)\n }, renderRawRest(omittedItems));\n }\n var overflowNode = /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(!invalidate && prefixCls, className),\n style: style,\n ref: ref\n }, restProps), mergedData.map(internalRenderItemNode), showRest ? restNode : null, suffix && /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n responsive: isResponsive,\n responsiveDisabled: !shouldResponsive,\n order: mergedDisplayCount,\n className: \"\".concat(itemPrefixCls, \"-suffix\"),\n registerSize: registerSuffixSize,\n display: true,\n style: suffixStyle\n }), suffix));\n if (isResponsive) {\n overflowNode = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onOverflowResize,\n disabled: !shouldResponsive\n }, overflowNode);\n }\n return overflowNode;\n}\nvar ForwardOverflow = /*#__PURE__*/React.forwardRef(Overflow);\nForwardOverflow.displayName = 'Overflow';\nForwardOverflow.Item = RawItem;\nForwardOverflow.RESPONSIVE = RESPONSIVE;\nForwardOverflow.INVALIDATE = INVALIDATE;\n// Convert to generic type\nexport default ForwardOverflow;","import Overflow from './Overflow';\nexport default Overflow;","export default {\n // Options.jsx\n items_per_page: '/ page',\n jump_to: 'Go to',\n jump_to_confirm: 'confirm',\n page: 'Page',\n // Pagination.jsx\n prev_page: 'Previous Page',\n next_page: 'Next Page',\n prev_5: 'Previous 5 Pages',\n next_5: 'Next 5 Pages',\n prev_3: 'Previous 3 Pages',\n next_3: 'Next 3 Pages',\n page_size: 'Page Size'\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _moment = _interopRequireDefault(require(\"moment\"));\nvar _warning = require(\"rc-util/lib/warning\");\nvar generateConfig = {\n // get\n getNow: function getNow() {\n return (0, _moment.default)();\n },\n getFixedDate: function getFixedDate(string) {\n return (0, _moment.default)(string, 'YYYY-MM-DD');\n },\n getEndDate: function getEndDate(date) {\n var clone = date.clone();\n return clone.endOf('month');\n },\n getWeekDay: function getWeekDay(date) {\n var clone = date.clone().locale('en_US');\n return clone.weekday() + clone.localeData().firstDayOfWeek();\n },\n getYear: function getYear(date) {\n return date.year();\n },\n getMonth: function getMonth(date) {\n return date.month();\n },\n getDate: function getDate(date) {\n return date.date();\n },\n getHour: function getHour(date) {\n return date.hour();\n },\n getMinute: function getMinute(date) {\n return date.minute();\n },\n getSecond: function getSecond(date) {\n return date.second();\n },\n // set\n addYear: function addYear(date, diff) {\n var clone = date.clone();\n return clone.add(diff, 'year');\n },\n addMonth: function addMonth(date, diff) {\n var clone = date.clone();\n return clone.add(diff, 'month');\n },\n addDate: function addDate(date, diff) {\n var clone = date.clone();\n return clone.add(diff, 'day');\n },\n setYear: function setYear(date, year) {\n var clone = date.clone();\n return clone.year(year);\n },\n setMonth: function setMonth(date, month) {\n var clone = date.clone();\n return clone.month(month);\n },\n setDate: function setDate(date, num) {\n var clone = date.clone();\n return clone.date(num);\n },\n setHour: function setHour(date, hour) {\n var clone = date.clone();\n return clone.hour(hour);\n },\n setMinute: function setMinute(date, minute) {\n var clone = date.clone();\n return clone.minute(minute);\n },\n setSecond: function setSecond(date, second) {\n var clone = date.clone();\n return clone.second(second);\n },\n // Compare\n isAfter: function isAfter(date1, date2) {\n return date1.isAfter(date2);\n },\n isValidate: function isValidate(date) {\n return date.isValid();\n },\n locale: {\n getWeekFirstDay: function getWeekFirstDay(locale) {\n var date = (0, _moment.default)().locale(locale);\n return date.localeData().firstDayOfWeek();\n },\n getWeekFirstDate: function getWeekFirstDate(locale, date) {\n var clone = date.clone();\n var result = clone.locale(locale);\n return result.weekday(0);\n },\n getWeek: function getWeek(locale, date) {\n var clone = date.clone();\n var result = clone.locale(locale);\n return result.week();\n },\n getShortWeekDays: function getShortWeekDays(locale) {\n var date = (0, _moment.default)().locale(locale);\n return date.localeData().weekdaysMin();\n },\n getShortMonths: function getShortMonths(locale) {\n var date = (0, _moment.default)().locale(locale);\n return date.localeData().monthsShort();\n },\n format: function format(locale, date, _format) {\n var clone = date.clone();\n var result = clone.locale(locale);\n return result.format(_format);\n },\n parse: function parse(locale, text, formats) {\n var fallbackFormatList = [];\n for (var i = 0; i < formats.length; i += 1) {\n var format = formats[i];\n var formatText = text;\n if (format.includes('wo') || format.includes('Wo')) {\n format = format.replace(/wo/g, 'w').replace(/Wo/g, 'W');\n var matchFormat = format.match(/[-YyMmDdHhSsWwGg]+/g);\n var matchText = formatText.match(/[-\\d]+/g);\n if (matchFormat && matchText) {\n format = matchFormat.join('');\n formatText = matchText.join('');\n } else {\n fallbackFormatList.push(format.replace(/o/g, ''));\n }\n }\n var date = (0, _moment.default)(formatText, format, locale, true);\n if (date.isValid()) {\n return date;\n }\n }\n\n // Fallback to fuzzy matching, this should always not reach match or need fire a issue\n for (var _i = 0; _i < fallbackFormatList.length; _i += 1) {\n var _date = (0, _moment.default)(text, fallbackFormatList[_i], locale, false);\n\n /* istanbul ignore next */\n if (_date.isValid()) {\n (0, _warning.noteOnce)(false, 'Not match any format strictly and fallback to fuzzy match. Please help to fire a issue about this.');\n return _date;\n }\n }\n return null;\n }\n }\n};\nvar _default = generateConfig;\nexports.default = _default;","import ResizeObserver from 'resize-observer-polyfill';\n// =============================== Const ===============================\nvar elementListeners = new Map();\nfunction onResize(entities) {\n entities.forEach(function (entity) {\n var _elementListeners$get;\n var target = entity.target;\n (_elementListeners$get = elementListeners.get(target)) === null || _elementListeners$get === void 0 ? void 0 : _elementListeners$get.forEach(function (listener) {\n return listener(target);\n });\n });\n}\n// Note: ResizeObserver polyfill not support option to measure border-box resize\nvar resizeObserver = new ResizeObserver(onResize);\n// Dev env only\nexport var _el = process.env.NODE_ENV !== 'production' ? elementListeners : null; // eslint-disable-line\nexport var _rs = process.env.NODE_ENV !== 'production' ? onResize : null; // eslint-disable-line\n// ============================== Observe ==============================\nexport function observe(element, callback) {\n if (!elementListeners.has(element)) {\n elementListeners.set(element, new Set());\n resizeObserver.observe(element);\n }\n elementListeners.get(element).add(callback);\n}\nexport function unobserve(element, callback) {\n if (elementListeners.has(element)) {\n elementListeners.get(element).delete(callback);\n if (!elementListeners.get(element).size) {\n resizeObserver.unobserve(element);\n elementListeners.delete(element);\n }\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\n/**\n * Fallback to findDOMNode if origin ref do not provide any dom element\n */\nvar DomWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(DomWrapper, _React$Component);\n var _super = _createSuper(DomWrapper);\n function DomWrapper() {\n _classCallCheck(this, DomWrapper);\n return _super.apply(this, arguments);\n }\n _createClass(DomWrapper, [{\n key: \"render\",\n value: function render() {\n return this.props.children;\n }\n }]);\n return DomWrapper;\n}(React.Component);\nexport { DomWrapper as default };","import * as React from 'react';\nexport var CollectionContext = /*#__PURE__*/React.createContext(null);\n/**\n * Collect all the resize event from children ResizeObserver\n */\nexport function Collection(_ref) {\n var children = _ref.children,\n onBatchResize = _ref.onBatchResize;\n var resizeIdRef = React.useRef(0);\n var resizeInfosRef = React.useRef([]);\n var onCollectionResize = React.useContext(CollectionContext);\n var onResize = React.useCallback(function (size, element, data) {\n resizeIdRef.current += 1;\n var currentId = resizeIdRef.current;\n resizeInfosRef.current.push({\n size: size,\n element: element,\n data: data\n });\n Promise.resolve().then(function () {\n if (currentId === resizeIdRef.current) {\n onBatchResize === null || onBatchResize === void 0 ? void 0 : onBatchResize(resizeInfosRef.current);\n resizeInfosRef.current = [];\n }\n });\n // Continue bubbling if parent exist\n onCollectionResize === null || onCollectionResize === void 0 ? void 0 : onCollectionResize(size, element, data);\n }, [onBatchResize, onCollectionResize]);\n return /*#__PURE__*/React.createElement(CollectionContext.Provider, {\n value: onResize\n }, children);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { observe, unobserve } from '../utils/observerUtil';\nimport DomWrapper from './DomWrapper';\nimport { CollectionContext } from '../Collection';\nfunction SingleObserver(props, ref) {\n var children = props.children,\n disabled = props.disabled;\n var elementRef = React.useRef(null);\n var wrapperRef = React.useRef(null);\n var onCollectionResize = React.useContext(CollectionContext);\n // =========================== Children ===========================\n var isRenderProps = typeof children === 'function';\n var mergedChildren = isRenderProps ? children(elementRef) : children;\n // ============================= Size =============================\n var sizeRef = React.useRef({\n width: -1,\n height: -1,\n offsetWidth: -1,\n offsetHeight: -1\n });\n // ============================= Ref ==============================\n var canRef = !isRenderProps && /*#__PURE__*/React.isValidElement(mergedChildren) && supportRef(mergedChildren);\n var originRef = canRef ? mergedChildren.ref : null;\n var mergedRef = React.useMemo(function () {\n return composeRef(originRef, elementRef);\n }, [originRef, elementRef]);\n var getDom = function getDom() {\n return findDOMNode(elementRef.current) || findDOMNode(wrapperRef.current);\n };\n React.useImperativeHandle(ref, function () {\n return getDom();\n });\n // =========================== Observe ============================\n var propsRef = React.useRef(props);\n propsRef.current = props;\n // Handler\n var onInternalResize = React.useCallback(function (target) {\n var _propsRef$current = propsRef.current,\n onResize = _propsRef$current.onResize,\n data = _propsRef$current.data;\n var _target$getBoundingCl = target.getBoundingClientRect(),\n width = _target$getBoundingCl.width,\n height = _target$getBoundingCl.height;\n var offsetWidth = target.offsetWidth,\n offsetHeight = target.offsetHeight;\n /**\n * Resize observer trigger when content size changed.\n * In most case we just care about element size,\n * let's use `boundary` instead of `contentRect` here to avoid shaking.\n */\n var fixedWidth = Math.floor(width);\n var fixedHeight = Math.floor(height);\n if (sizeRef.current.width !== fixedWidth || sizeRef.current.height !== fixedHeight || sizeRef.current.offsetWidth !== offsetWidth || sizeRef.current.offsetHeight !== offsetHeight) {\n var size = {\n width: fixedWidth,\n height: fixedHeight,\n offsetWidth: offsetWidth,\n offsetHeight: offsetHeight\n };\n sizeRef.current = size;\n // IE is strange, right?\n var mergedOffsetWidth = offsetWidth === Math.round(width) ? width : offsetWidth;\n var mergedOffsetHeight = offsetHeight === Math.round(height) ? height : offsetHeight;\n var sizeInfo = _objectSpread(_objectSpread({}, size), {}, {\n offsetWidth: mergedOffsetWidth,\n offsetHeight: mergedOffsetHeight\n });\n // Let collection know what happened\n onCollectionResize === null || onCollectionResize === void 0 ? void 0 : onCollectionResize(sizeInfo, target, data);\n if (onResize) {\n // defer the callback but not defer to next frame\n Promise.resolve().then(function () {\n onResize(sizeInfo, target);\n });\n }\n }\n }, []);\n // Dynamic observe\n React.useEffect(function () {\n var currentElement = getDom();\n if (currentElement && !disabled) {\n observe(currentElement, onInternalResize);\n }\n return function () {\n return unobserve(currentElement, onInternalResize);\n };\n }, [elementRef.current, disabled]);\n // ============================ Render ============================\n return /*#__PURE__*/React.createElement(DomWrapper, {\n ref: wrapperRef\n }, canRef ? /*#__PURE__*/React.cloneElement(mergedChildren, {\n ref: mergedRef\n }) : mergedChildren);\n}\nvar RefSingleObserver = /*#__PURE__*/React.forwardRef(SingleObserver);\nif (process.env.NODE_ENV !== 'production') {\n RefSingleObserver.displayName = 'SingleObserver';\n}\nexport default RefSingleObserver;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { warning } from \"rc-util/es/warning\";\nimport SingleObserver from './SingleObserver';\nimport { Collection } from './Collection';\nvar INTERNAL_PREFIX_KEY = 'rc-observer-key';\nimport { _rs } from './utils/observerUtil';\nexport { /** @private Test only for mock trigger resize event */\n_rs };\nfunction ResizeObserver(props, ref) {\n var children = props.children;\n var childNodes = typeof children === 'function' ? [children] : toArray(children);\n if (process.env.NODE_ENV !== 'production') {\n if (childNodes.length > 1) {\n warning(false, 'Find more than one child node with `children` in ResizeObserver. Please use ResizeObserver.Collection instead.');\n } else if (childNodes.length === 0) {\n warning(false, '`children` of ResizeObserver is empty. Nothing is in observe.');\n }\n }\n return childNodes.map(function (child, index) {\n var key = (child === null || child === void 0 ? void 0 : child.key) || \"\".concat(INTERNAL_PREFIX_KEY, \"-\").concat(index);\n return /*#__PURE__*/React.createElement(SingleObserver, _extends({}, props, {\n key: key,\n ref: index === 0 ? ref : undefined\n }), child);\n });\n}\nvar RefResizeObserver = /*#__PURE__*/React.forwardRef(ResizeObserver);\nif (process.env.NODE_ENV !== 'production') {\n RefResizeObserver.displayName = 'ResizeObserver';\n}\nRefResizeObserver.Collection = Collection;\nexport default RefResizeObserver;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nvar uuid = 0;\n\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && canUseDom();\n\n/** Get unique id for accessibility usage */\nexport function getUUID() {\n var retId;\n\n // Test never reach\n /* istanbul ignore if */\n if (isBrowserClient) {\n retId = uuid;\n uuid += 1;\n } else {\n retId = 'TEST_OR_SSR';\n }\n return retId;\n}\nexport default function useId(id) {\n // Inner id for accessibility usage. Only work in client side\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerId = _React$useState2[0],\n setInnerId = _React$useState2[1];\n React.useEffect(function () {\n setInnerId(\"rc_select_\".concat(getUUID()));\n }, []);\n return id || innerId;\n}","/**\n * BaseSelect provide some parsed data into context.\n * You can use this hooks to get them.\n */\n\nimport * as React from 'react';\nexport var BaseSelectContext = /*#__PURE__*/React.createContext(null);\nexport default function useBaseProps() {\n return React.useContext(BaseSelectContext);\n}","import * as React from 'react';\n\n/**\n * Locker return cached mark.\n * If set to `true`, will return `true` in a short time even if set `false`.\n * If set to `false` and then set to `true`, will change to `true`.\n * And after time duration, it will back to `null` automatically.\n */\nexport default function useLock() {\n var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 250;\n var lockRef = React.useRef(null);\n var timeoutRef = React.useRef(null);\n\n // Clean up\n React.useEffect(function () {\n return function () {\n window.clearTimeout(timeoutRef.current);\n };\n }, []);\n function doLock(locked) {\n if (locked || lockRef.current === null) {\n lockRef.current = locked;\n }\n window.clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(function () {\n lockRef.current = null;\n }, duration);\n }\n return [function () {\n return lockRef.current;\n }, doLock];\n}","import * as React from 'react';\nimport classNames from 'classnames';\nvar TransBtn = function TransBtn(_ref) {\n var className = _ref.className,\n customizeIcon = _ref.customizeIcon,\n customizeIconProps = _ref.customizeIconProps,\n _onMouseDown = _ref.onMouseDown,\n onClick = _ref.onClick,\n children = _ref.children;\n var icon;\n if (typeof customizeIcon === 'function') {\n icon = customizeIcon(customizeIconProps);\n } else {\n icon = customizeIcon;\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: className,\n onMouseDown: function onMouseDown(event) {\n event.preventDefault();\n if (_onMouseDown) {\n _onMouseDown(event);\n }\n },\n style: {\n userSelect: 'none',\n WebkitUserSelect: 'none'\n },\n unselectable: \"on\",\n onClick: onClick,\n \"aria-hidden\": true\n }, icon !== undefined ? icon : /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(className.split(/\\s+/).map(function (cls) {\n return \"\".concat(cls, \"-icon\");\n }))\n }, children));\n};\nexport default TransBtn;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { composeRef } from \"rc-util/es/ref\";\nimport { warning } from \"rc-util/es/warning\";\nvar Input = function Input(_ref, ref) {\n var _inputNode2, _inputNode2$props;\n var prefixCls = _ref.prefixCls,\n id = _ref.id,\n inputElement = _ref.inputElement,\n disabled = _ref.disabled,\n tabIndex = _ref.tabIndex,\n autoFocus = _ref.autoFocus,\n autoComplete = _ref.autoComplete,\n editable = _ref.editable,\n activeDescendantId = _ref.activeDescendantId,\n value = _ref.value,\n maxLength = _ref.maxLength,\n _onKeyDown = _ref.onKeyDown,\n _onMouseDown = _ref.onMouseDown,\n _onChange = _ref.onChange,\n onPaste = _ref.onPaste,\n _onCompositionStart = _ref.onCompositionStart,\n _onCompositionEnd = _ref.onCompositionEnd,\n open = _ref.open,\n attrs = _ref.attrs;\n var inputNode = inputElement || /*#__PURE__*/React.createElement(\"input\", null);\n var _inputNode = inputNode,\n originRef = _inputNode.ref,\n originProps = _inputNode.props;\n var onOriginKeyDown = originProps.onKeyDown,\n onOriginChange = originProps.onChange,\n onOriginMouseDown = originProps.onMouseDown,\n onOriginCompositionStart = originProps.onCompositionStart,\n onOriginCompositionEnd = originProps.onCompositionEnd,\n style = originProps.style;\n warning(!('maxLength' in inputNode.props), \"Passing 'maxLength' to input element directly may not work because input in BaseSelect is controlled.\");\n inputNode = /*#__PURE__*/React.cloneElement(inputNode, _objectSpread(_objectSpread(_objectSpread({\n type: 'search'\n }, originProps), {}, {\n // Override over origin props\n id: id,\n ref: composeRef(ref, originRef),\n disabled: disabled,\n tabIndex: tabIndex,\n autoComplete: autoComplete || 'off',\n autoFocus: autoFocus,\n className: classNames(\"\".concat(prefixCls, \"-selection-search-input\"), (_inputNode2 = inputNode) === null || _inputNode2 === void 0 ? void 0 : (_inputNode2$props = _inputNode2.props) === null || _inputNode2$props === void 0 ? void 0 : _inputNode2$props.className),\n role: 'combobox',\n 'aria-expanded': open,\n 'aria-haspopup': 'listbox',\n 'aria-owns': \"\".concat(id, \"_list\"),\n 'aria-autocomplete': 'list',\n 'aria-controls': \"\".concat(id, \"_list\"),\n 'aria-activedescendant': activeDescendantId\n }, attrs), {}, {\n value: editable ? value : '',\n maxLength: maxLength,\n readOnly: !editable,\n unselectable: !editable ? 'on' : null,\n style: _objectSpread(_objectSpread({}, style), {}, {\n opacity: editable ? null : 0\n }),\n onKeyDown: function onKeyDown(event) {\n _onKeyDown(event);\n if (onOriginKeyDown) {\n onOriginKeyDown(event);\n }\n },\n onMouseDown: function onMouseDown(event) {\n _onMouseDown(event);\n if (onOriginMouseDown) {\n onOriginMouseDown(event);\n }\n },\n onChange: function onChange(event) {\n _onChange(event);\n if (onOriginChange) {\n onOriginChange(event);\n }\n },\n onCompositionStart: function onCompositionStart(event) {\n _onCompositionStart(event);\n if (onOriginCompositionStart) {\n onOriginCompositionStart(event);\n }\n },\n onCompositionEnd: function onCompositionEnd(event) {\n _onCompositionEnd(event);\n if (onOriginCompositionEnd) {\n onOriginCompositionEnd(event);\n }\n },\n onPaste: onPaste\n }));\n return inputNode;\n};\nvar RefInput = /*#__PURE__*/React.forwardRef(Input);\nRefInput.displayName = 'Input';\nexport default RefInput;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport function toArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n return value !== undefined ? [value] : [];\n}\nexport var isClient = typeof window !== 'undefined' && window.document && window.document.documentElement;\n\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && isClient;\nexport function hasValue(value) {\n return value !== undefined && value !== null;\n}\nfunction isTitleType(title) {\n return ['string', 'number'].includes(_typeof(title));\n}\nexport function getTitle(item) {\n var title = undefined;\n if (item) {\n if (isTitleType(item.title)) {\n title = item.title.toString();\n } else if (isTitleType(item.label)) {\n title = item.label.toString();\n }\n }\n return title;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useState } from 'react';\nimport classNames from 'classnames';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport Overflow from 'rc-overflow';\nimport TransBtn from \"../TransBtn\";\nimport Input from \"./Input\";\nimport useLayoutEffect from \"../hooks/useLayoutEffect\";\nimport { getTitle } from \"../utils/commonUtil\";\nfunction itemKey(value) {\n var _value$key;\n return (_value$key = value.key) !== null && _value$key !== void 0 ? _value$key : value.value;\n}\nvar onPreventMouseDown = function onPreventMouseDown(event) {\n event.preventDefault();\n event.stopPropagation();\n};\nvar SelectSelector = function SelectSelector(props) {\n var id = props.id,\n prefixCls = props.prefixCls,\n values = props.values,\n open = props.open,\n searchValue = props.searchValue,\n autoClearSearchValue = props.autoClearSearchValue,\n inputRef = props.inputRef,\n placeholder = props.placeholder,\n disabled = props.disabled,\n mode = props.mode,\n showSearch = props.showSearch,\n autoFocus = props.autoFocus,\n autoComplete = props.autoComplete,\n activeDescendantId = props.activeDescendantId,\n tabIndex = props.tabIndex,\n removeIcon = props.removeIcon,\n maxTagCount = props.maxTagCount,\n maxTagTextLength = props.maxTagTextLength,\n _props$maxTagPlacehol = props.maxTagPlaceholder,\n maxTagPlaceholder = _props$maxTagPlacehol === void 0 ? function (omittedValues) {\n return \"+ \".concat(omittedValues.length, \" ...\");\n } : _props$maxTagPlacehol,\n tagRender = props.tagRender,\n onToggleOpen = props.onToggleOpen,\n onRemove = props.onRemove,\n onInputChange = props.onInputChange,\n onInputPaste = props.onInputPaste,\n onInputKeyDown = props.onInputKeyDown,\n onInputMouseDown = props.onInputMouseDown,\n onInputCompositionStart = props.onInputCompositionStart,\n onInputCompositionEnd = props.onInputCompositionEnd;\n var measureRef = React.useRef(null);\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n inputWidth = _useState2[0],\n setInputWidth = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n focused = _useState4[0],\n setFocused = _useState4[1];\n var selectionPrefixCls = \"\".concat(prefixCls, \"-selection\");\n\n // ===================== Search ======================\n var inputValue = open || mode === \"multiple\" && autoClearSearchValue === false || mode === 'tags' ? searchValue : '';\n var inputEditable = mode === 'tags' || mode === \"multiple\" && autoClearSearchValue === false || showSearch && (open || focused);\n\n // We measure width and set to the input immediately\n useLayoutEffect(function () {\n setInputWidth(measureRef.current.scrollWidth);\n }, [inputValue]);\n\n // ===================== Render ======================\n // >>> Render Selector Node. Includes Item & Rest\n function defaultRenderSelector(item, content, itemDisabled, closable, onClose) {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(selectionPrefixCls, \"-item\"), _defineProperty({}, \"\".concat(selectionPrefixCls, \"-item-disabled\"), itemDisabled)),\n title: getTitle(item)\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(selectionPrefixCls, \"-item-content\")\n }, content), closable && /*#__PURE__*/React.createElement(TransBtn, {\n className: \"\".concat(selectionPrefixCls, \"-item-remove\"),\n onMouseDown: onPreventMouseDown,\n onClick: onClose,\n customizeIcon: removeIcon\n }, \"\\xD7\"));\n }\n function customizeRenderSelector(value, content, itemDisabled, closable, onClose) {\n var onMouseDown = function onMouseDown(e) {\n onPreventMouseDown(e);\n onToggleOpen(!open);\n };\n return /*#__PURE__*/React.createElement(\"span\", {\n onMouseDown: onMouseDown\n }, tagRender({\n label: content,\n value: value,\n disabled: itemDisabled,\n closable: closable,\n onClose: onClose\n }));\n }\n function renderItem(valueItem) {\n var itemDisabled = valueItem.disabled,\n label = valueItem.label,\n value = valueItem.value;\n var closable = !disabled && !itemDisabled;\n var displayLabel = label;\n if (typeof maxTagTextLength === 'number') {\n if (typeof label === 'string' || typeof label === 'number') {\n var strLabel = String(displayLabel);\n if (strLabel.length > maxTagTextLength) {\n displayLabel = \"\".concat(strLabel.slice(0, maxTagTextLength), \"...\");\n }\n }\n }\n var onClose = function onClose(event) {\n if (event) event.stopPropagation();\n onRemove(valueItem);\n };\n return typeof tagRender === 'function' ? customizeRenderSelector(value, displayLabel, itemDisabled, closable, onClose) : defaultRenderSelector(valueItem, displayLabel, itemDisabled, closable, onClose);\n }\n function renderRest(omittedValues) {\n var content = typeof maxTagPlaceholder === 'function' ? maxTagPlaceholder(omittedValues) : maxTagPlaceholder;\n return defaultRenderSelector({\n title: content\n }, content, false);\n }\n\n // >>> Input Node\n var inputNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(selectionPrefixCls, \"-search\"),\n style: {\n width: inputWidth\n },\n onFocus: function onFocus() {\n setFocused(true);\n },\n onBlur: function onBlur() {\n setFocused(false);\n }\n }, /*#__PURE__*/React.createElement(Input, {\n ref: inputRef,\n open: open,\n prefixCls: prefixCls,\n id: id,\n inputElement: null,\n disabled: disabled,\n autoFocus: autoFocus,\n autoComplete: autoComplete,\n editable: inputEditable,\n activeDescendantId: activeDescendantId,\n value: inputValue,\n onKeyDown: onInputKeyDown,\n onMouseDown: onInputMouseDown,\n onChange: onInputChange,\n onPaste: onInputPaste,\n onCompositionStart: onInputCompositionStart,\n onCompositionEnd: onInputCompositionEnd,\n tabIndex: tabIndex,\n attrs: pickAttrs(props, true)\n }), /*#__PURE__*/React.createElement(\"span\", {\n ref: measureRef,\n className: \"\".concat(selectionPrefixCls, \"-search-mirror\"),\n \"aria-hidden\": true\n }, inputValue, \"\\xA0\"));\n\n // >>> Selections\n var selectionNode = /*#__PURE__*/React.createElement(Overflow, {\n prefixCls: \"\".concat(selectionPrefixCls, \"-overflow\"),\n data: values,\n renderItem: renderItem,\n renderRest: renderRest,\n suffix: inputNode,\n itemKey: itemKey,\n maxCount: maxTagCount\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, selectionNode, !values.length && !inputValue && /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(selectionPrefixCls, \"-placeholder\")\n }, placeholder));\n};\nexport default SelectSelector;","/* eslint-disable react-hooks/rules-of-hooks */\nimport * as React from 'react';\nimport { isBrowserClient } from \"../utils/commonUtil\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nexport default function useLayoutEffect(effect, deps) {\n // Never happen in test env\n if (isBrowserClient) {\n /* istanbul ignore next */\n React.useLayoutEffect(effect, deps);\n } else {\n React.useEffect(effect, deps);\n }\n}\n/* eslint-enable */","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport Input from \"./Input\";\nimport { getTitle } from \"../utils/commonUtil\";\nvar SingleSelector = function SingleSelector(props) {\n var inputElement = props.inputElement,\n prefixCls = props.prefixCls,\n id = props.id,\n inputRef = props.inputRef,\n disabled = props.disabled,\n autoFocus = props.autoFocus,\n autoComplete = props.autoComplete,\n activeDescendantId = props.activeDescendantId,\n mode = props.mode,\n open = props.open,\n values = props.values,\n placeholder = props.placeholder,\n tabIndex = props.tabIndex,\n showSearch = props.showSearch,\n searchValue = props.searchValue,\n activeValue = props.activeValue,\n maxLength = props.maxLength,\n onInputKeyDown = props.onInputKeyDown,\n onInputMouseDown = props.onInputMouseDown,\n onInputChange = props.onInputChange,\n onInputPaste = props.onInputPaste,\n onInputCompositionStart = props.onInputCompositionStart,\n onInputCompositionEnd = props.onInputCompositionEnd;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n inputChanged = _React$useState2[0],\n setInputChanged = _React$useState2[1];\n var combobox = mode === 'combobox';\n var inputEditable = combobox || showSearch;\n var item = values[0];\n var inputValue = searchValue || '';\n if (combobox && activeValue && !inputChanged) {\n inputValue = activeValue;\n }\n React.useEffect(function () {\n if (combobox) {\n setInputChanged(false);\n }\n }, [combobox, activeValue]);\n\n // Not show text when closed expect combobox mode\n var hasTextInput = mode !== 'combobox' && !open && !showSearch ? false : !!inputValue;\n\n // Get title\n var title = getTitle(item);\n var renderPlaceholder = function renderPlaceholder() {\n if (item) {\n return null;\n }\n var hiddenStyle = hasTextInput ? {\n visibility: 'hidden'\n } : undefined;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-selection-placeholder\"),\n style: hiddenStyle\n }, placeholder);\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-selection-search\")\n }, /*#__PURE__*/React.createElement(Input, {\n ref: inputRef,\n prefixCls: prefixCls,\n id: id,\n open: open,\n inputElement: inputElement,\n disabled: disabled,\n autoFocus: autoFocus,\n autoComplete: autoComplete,\n editable: inputEditable,\n activeDescendantId: activeDescendantId,\n value: inputValue,\n onKeyDown: onInputKeyDown,\n onMouseDown: onInputMouseDown,\n onChange: function onChange(e) {\n setInputChanged(true);\n onInputChange(e);\n },\n onPaste: onInputPaste,\n onCompositionStart: onInputCompositionStart,\n onCompositionEnd: onInputCompositionEnd,\n tabIndex: tabIndex,\n attrs: pickAttrs(props, true),\n maxLength: combobox ? maxLength : undefined\n })), !combobox && item ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-selection-item\"),\n title: title\n // 当 Select 已经选中选项时,还需 selection 隐藏但留在原地占位\n // https://github.com/ant-design/ant-design/issues/27688\n // https://github.com/ant-design/ant-design/issues/41530\n ,\n style: hasTextInput ? {\n visibility: 'hidden'\n } : undefined\n }, item.label) : null, renderPlaceholder());\n};\nexport default SingleSelector;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/**\n * Cursor rule:\n * 1. Only `showSearch` enabled\n * 2. Only `open` is `true`\n * 3. When typing, set `open` to `true` which hit rule of 2\n *\n * Accessibility:\n * - https://www.w3.org/TR/wai-aria-practices/examples/combobox/aria1.1pattern/listbox-combo.html\n */\n\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport MultipleSelector from \"./MultipleSelector\";\nimport SingleSelector from \"./SingleSelector\";\nimport useLock from \"../hooks/useLock\";\nimport { isValidateOpenKey } from \"../utils/keyUtil\";\nvar Selector = function Selector(props, ref) {\n var inputRef = useRef(null);\n var compositionStatusRef = useRef(false);\n var prefixCls = props.prefixCls,\n open = props.open,\n mode = props.mode,\n showSearch = props.showSearch,\n tokenWithEnter = props.tokenWithEnter,\n autoClearSearchValue = props.autoClearSearchValue,\n onSearch = props.onSearch,\n onSearchSubmit = props.onSearchSubmit,\n onToggleOpen = props.onToggleOpen,\n onInputKeyDown = props.onInputKeyDown,\n domRef = props.domRef;\n\n // ======================= Ref =======================\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus() {\n inputRef.current.focus();\n },\n blur: function blur() {\n inputRef.current.blur();\n }\n };\n });\n\n // ====================== Input ======================\n var _useLock = useLock(0),\n _useLock2 = _slicedToArray(_useLock, 2),\n getInputMouseDown = _useLock2[0],\n setInputMouseDown = _useLock2[1];\n var onInternalInputKeyDown = function onInternalInputKeyDown(event) {\n var which = event.which;\n if (which === KeyCode.UP || which === KeyCode.DOWN) {\n event.preventDefault();\n }\n if (onInputKeyDown) {\n onInputKeyDown(event);\n }\n if (which === KeyCode.ENTER && mode === 'tags' && !compositionStatusRef.current && !open) {\n // When menu isn't open, OptionList won't trigger a value change\n // So when enter is pressed, the tag's input value should be emitted here to let selector know\n onSearchSubmit === null || onSearchSubmit === void 0 ? void 0 : onSearchSubmit(event.target.value);\n }\n if (isValidateOpenKey(which)) {\n onToggleOpen(true);\n }\n };\n\n /**\n * We can not use `findDOMNode` sine it will get warning,\n * have to use timer to check if is input element.\n */\n var onInternalInputMouseDown = function onInternalInputMouseDown() {\n setInputMouseDown(true);\n };\n\n // When paste come, ignore next onChange\n var pastedTextRef = useRef(null);\n var triggerOnSearch = function triggerOnSearch(value) {\n if (onSearch(value, true, compositionStatusRef.current) !== false) {\n onToggleOpen(true);\n }\n };\n var onInputCompositionStart = function onInputCompositionStart() {\n compositionStatusRef.current = true;\n };\n var onInputCompositionEnd = function onInputCompositionEnd(e) {\n compositionStatusRef.current = false;\n\n // Trigger search again to support `tokenSeparators` with typewriting\n if (mode !== 'combobox') {\n triggerOnSearch(e.target.value);\n }\n };\n var onInputChange = function onInputChange(event) {\n var value = event.target.value;\n\n // Pasted text should replace back to origin content\n if (tokenWithEnter && pastedTextRef.current && /[\\r\\n]/.test(pastedTextRef.current)) {\n // CRLF will be treated as a single space for input element\n var replacedText = pastedTextRef.current.replace(/[\\r\\n]+$/, '').replace(/\\r\\n/g, ' ').replace(/[\\r\\n]/g, ' ');\n value = value.replace(replacedText, pastedTextRef.current);\n }\n pastedTextRef.current = null;\n triggerOnSearch(value);\n };\n var onInputPaste = function onInputPaste(e) {\n var clipboardData = e.clipboardData;\n var value = clipboardData.getData('text');\n pastedTextRef.current = value;\n };\n var onClick = function onClick(_ref) {\n var target = _ref.target;\n if (target !== inputRef.current) {\n // Should focus input if click the selector\n var isIE = document.body.style.msTouchAction !== undefined;\n if (isIE) {\n setTimeout(function () {\n inputRef.current.focus();\n });\n } else {\n inputRef.current.focus();\n }\n }\n };\n var onMouseDown = function onMouseDown(event) {\n var inputMouseDown = getInputMouseDown();\n\n // when mode is combobox, don't prevent default behavior\n // https://github.com/ant-design/ant-design/issues/37320\n if (event.target !== inputRef.current && !inputMouseDown && mode !== 'combobox') {\n event.preventDefault();\n }\n if (mode !== 'combobox' && (!showSearch || !inputMouseDown) || !open) {\n if (open && autoClearSearchValue !== false) {\n onSearch('', true, false);\n }\n onToggleOpen();\n }\n };\n\n // ================= Inner Selector ==================\n var sharedProps = {\n inputRef: inputRef,\n onInputKeyDown: onInternalInputKeyDown,\n onInputMouseDown: onInternalInputMouseDown,\n onInputChange: onInputChange,\n onInputPaste: onInputPaste,\n onInputCompositionStart: onInputCompositionStart,\n onInputCompositionEnd: onInputCompositionEnd\n };\n var selectNode = mode === 'multiple' || mode === 'tags' ? /*#__PURE__*/React.createElement(MultipleSelector, _extends({}, props, sharedProps)) : /*#__PURE__*/React.createElement(SingleSelector, _extends({}, props, sharedProps));\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: domRef,\n className: \"\".concat(prefixCls, \"-selector\"),\n onClick: onClick,\n onMouseDown: onMouseDown\n }, selectNode);\n};\nvar ForwardSelector = /*#__PURE__*/React.forwardRef(Selector);\nForwardSelector.displayName = 'Selector';\nexport default ForwardSelector;","import KeyCode from \"rc-util/es/KeyCode\";\n\n/** keyCode Judgment function */\nexport function isValidateOpenKey(currentKeyCode) {\n return ![\n // System function button\n KeyCode.ESC, KeyCode.SHIFT, KeyCode.BACKSPACE, KeyCode.TAB, KeyCode.WIN_KEY, KeyCode.ALT, KeyCode.META, KeyCode.WIN_KEY_RIGHT, KeyCode.CTRL, KeyCode.SEMICOLON, KeyCode.EQUALS, KeyCode.CAPS_LOCK, KeyCode.CONTEXT_MENU,\n // F1-F12\n KeyCode.F1, KeyCode.F2, KeyCode.F3, KeyCode.F4, KeyCode.F5, KeyCode.F6, KeyCode.F7, KeyCode.F8, KeyCode.F9, KeyCode.F10, KeyCode.F11, KeyCode.F12].includes(currentKeyCode);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"disabled\", \"visible\", \"children\", \"popupElement\", \"containerWidth\", \"animation\", \"transitionName\", \"dropdownStyle\", \"dropdownClassName\", \"direction\", \"placement\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"getPopupContainer\", \"empty\", \"getTriggerDOMNode\", \"onPopupVisibleChange\", \"onPopupMouseEnter\"];\nimport * as React from 'react';\nimport Trigger from 'rc-trigger';\nimport classNames from 'classnames';\nvar getBuiltInPlacements = function getBuiltInPlacements(dropdownMatchSelectWidth) {\n // Enable horizontal overflow auto-adjustment when a custom dropdown width is provided\n var adjustX = dropdownMatchSelectWidth === true ? 0 : 1;\n return {\n bottomLeft: {\n points: ['tl', 'bl'],\n offset: [0, 4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n }\n },\n bottomRight: {\n points: ['tr', 'br'],\n offset: [0, 4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n }\n },\n topLeft: {\n points: ['bl', 'tl'],\n offset: [0, -4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n }\n },\n topRight: {\n points: ['br', 'tr'],\n offset: [0, -4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n }\n }\n };\n};\nvar SelectTrigger = function SelectTrigger(props, ref) {\n var prefixCls = props.prefixCls,\n disabled = props.disabled,\n visible = props.visible,\n children = props.children,\n popupElement = props.popupElement,\n containerWidth = props.containerWidth,\n animation = props.animation,\n transitionName = props.transitionName,\n dropdownStyle = props.dropdownStyle,\n dropdownClassName = props.dropdownClassName,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? 'ltr' : _props$direction,\n placement = props.placement,\n dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n dropdownRender = props.dropdownRender,\n dropdownAlign = props.dropdownAlign,\n getPopupContainer = props.getPopupContainer,\n empty = props.empty,\n getTriggerDOMNode = props.getTriggerDOMNode,\n onPopupVisibleChange = props.onPopupVisibleChange,\n onPopupMouseEnter = props.onPopupMouseEnter,\n restProps = _objectWithoutProperties(props, _excluded);\n var dropdownPrefixCls = \"\".concat(prefixCls, \"-dropdown\");\n var popupNode = popupElement;\n if (dropdownRender) {\n popupNode = dropdownRender(popupElement);\n }\n var builtInPlacements = React.useMemo(function () {\n return getBuiltInPlacements(dropdownMatchSelectWidth);\n }, [dropdownMatchSelectWidth]);\n\n // ===================== Motion ======================\n var mergedTransitionName = animation ? \"\".concat(dropdownPrefixCls, \"-\").concat(animation) : transitionName;\n\n // ======================= Ref =======================\n var popupRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return {\n getPopupElement: function getPopupElement() {\n return popupRef.current;\n }\n };\n });\n var popupStyle = _objectSpread({\n minWidth: containerWidth\n }, dropdownStyle);\n if (typeof dropdownMatchSelectWidth === 'number') {\n popupStyle.width = dropdownMatchSelectWidth;\n } else if (dropdownMatchSelectWidth) {\n popupStyle.width = containerWidth;\n }\n return /*#__PURE__*/React.createElement(Trigger, _extends({}, restProps, {\n showAction: onPopupVisibleChange ? ['click'] : [],\n hideAction: onPopupVisibleChange ? ['click'] : [],\n popupPlacement: placement || (direction === 'rtl' ? 'bottomRight' : 'bottomLeft'),\n builtinPlacements: builtInPlacements,\n prefixCls: dropdownPrefixCls,\n popupTransitionName: mergedTransitionName,\n popup: /*#__PURE__*/React.createElement(\"div\", {\n ref: popupRef,\n onMouseEnter: onPopupMouseEnter\n }, popupNode),\n popupAlign: dropdownAlign,\n popupVisible: visible,\n getPopupContainer: getPopupContainer,\n popupClassName: classNames(dropdownClassName, _defineProperty({}, \"\".concat(dropdownPrefixCls, \"-empty\"), empty)),\n popupStyle: popupStyle,\n getTriggerDOMNode: getTriggerDOMNode,\n onPopupVisibleChange: onPopupVisibleChange\n }), children);\n};\nvar RefSelectTrigger = /*#__PURE__*/React.forwardRef(SelectTrigger);\nRefSelectTrigger.displayName = 'SelectTrigger';\nexport default RefSelectTrigger;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport warning from \"rc-util/es/warning\";\nfunction getKey(data, index) {\n var key = data.key;\n var value;\n if ('value' in data) {\n value = data.value;\n }\n if (key !== null && key !== undefined) {\n return key;\n }\n if (value !== undefined) {\n return value;\n }\n return \"rc-index-key-\".concat(index);\n}\nexport function fillFieldNames(fieldNames, childrenAsData) {\n var _ref = fieldNames || {},\n label = _ref.label,\n value = _ref.value,\n options = _ref.options;\n return {\n label: label || (childrenAsData ? 'children' : 'label'),\n value: value || 'value',\n options: options || 'options'\n };\n}\n\n/**\n * Flat options into flatten list.\n * We use `optionOnly` here is aim to avoid user use nested option group.\n * Here is simply set `key` to the index if not provided.\n */\nexport function flattenOptions(options) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n fieldNames = _ref2.fieldNames,\n childrenAsData = _ref2.childrenAsData;\n var flattenList = [];\n var _fillFieldNames = fillFieldNames(fieldNames, false),\n fieldLabel = _fillFieldNames.label,\n fieldValue = _fillFieldNames.value,\n fieldOptions = _fillFieldNames.options;\n function dig(list, isGroupOption) {\n list.forEach(function (data) {\n var label = data[fieldLabel];\n if (isGroupOption || !(fieldOptions in data)) {\n var value = data[fieldValue];\n\n // Option\n flattenList.push({\n key: getKey(data, flattenList.length),\n groupOption: isGroupOption,\n data: data,\n label: label,\n value: value\n });\n } else {\n var grpLabel = label;\n if (grpLabel === undefined && childrenAsData) {\n grpLabel = data.label;\n }\n\n // Option Group\n flattenList.push({\n key: getKey(data, flattenList.length),\n group: true,\n data: data,\n label: grpLabel\n });\n dig(data[fieldOptions], true);\n }\n });\n }\n dig(options, false);\n return flattenList;\n}\n\n/**\n * Inject `props` into `option` for legacy usage\n */\nexport function injectPropsWithOption(option) {\n var newOption = _objectSpread({}, option);\n if (!('props' in newOption)) {\n Object.defineProperty(newOption, 'props', {\n get: function get() {\n warning(false, 'Return type is option instead of Option instance. Please read value directly instead of reading from `props`.');\n return newOption;\n }\n });\n }\n return newOption;\n}\nexport function getSeparatedContent(text, tokens) {\n if (!tokens || !tokens.length) {\n return null;\n }\n var match = false;\n function separate(str, _ref3) {\n var _ref4 = _toArray(_ref3),\n token = _ref4[0],\n restTokens = _ref4.slice(1);\n if (!token) {\n return [str];\n }\n var list = str.split(token);\n match = match || list.length > 1;\n return list.reduce(function (prevList, unitStr) {\n return [].concat(_toConsumableArray(prevList), _toConsumableArray(separate(unitStr, restTokens)));\n }, []).filter(function (unit) {\n return unit;\n });\n }\n var list = separate(text, tokens);\n return match ? list : null;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"id\", \"prefixCls\", \"className\", \"showSearch\", \"tagRender\", \"direction\", \"omitDomProps\", \"displayValues\", \"onDisplayValuesChange\", \"emptyOptions\", \"notFoundContent\", \"onClear\", \"mode\", \"disabled\", \"loading\", \"getInputElement\", \"getRawInputElement\", \"open\", \"defaultOpen\", \"onDropdownVisibleChange\", \"activeValue\", \"onActiveValueChange\", \"activeDescendantId\", \"searchValue\", \"autoClearSearchValue\", \"onSearch\", \"onSearchSplit\", \"tokenSeparators\", \"allowClear\", \"showArrow\", \"inputIcon\", \"clearIcon\", \"OptionList\", \"animation\", \"transitionName\", \"dropdownStyle\", \"dropdownClassName\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"placement\", \"getPopupContainer\", \"showAction\", \"onFocus\", \"onBlur\", \"onKeyUp\", \"onKeyDown\", \"onMouseDown\"];\nimport classNames from 'classnames';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport isMobile from \"rc-util/es/isMobile\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { BaseSelectContext } from \"./hooks/useBaseProps\";\nimport useDelayReset from \"./hooks/useDelayReset\";\nimport useLock from \"./hooks/useLock\";\nimport useSelectTriggerControl from \"./hooks/useSelectTriggerControl\";\nimport Selector from \"./Selector\";\nimport SelectTrigger from \"./SelectTrigger\";\nimport TransBtn from \"./TransBtn\";\nimport { getSeparatedContent } from \"./utils/valueUtil\";\nvar DEFAULT_OMIT_PROPS = ['value', 'onChange', 'removeIcon', 'placeholder', 'autoFocus', 'maxTagCount', 'maxTagTextLength', 'maxTagPlaceholder', 'choiceTransitionName', 'onInputKeyDown', 'onPopupScroll', 'tabIndex'];\nexport function isMultiple(mode) {\n return mode === 'tags' || mode === 'multiple';\n}\nvar BaseSelect = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _customizeRawInputEle, _classNames2;\n var id = props.id,\n prefixCls = props.prefixCls,\n className = props.className,\n showSearch = props.showSearch,\n tagRender = props.tagRender,\n direction = props.direction,\n omitDomProps = props.omitDomProps,\n displayValues = props.displayValues,\n onDisplayValuesChange = props.onDisplayValuesChange,\n emptyOptions = props.emptyOptions,\n _props$notFoundConten = props.notFoundContent,\n notFoundContent = _props$notFoundConten === void 0 ? 'Not Found' : _props$notFoundConten,\n onClear = props.onClear,\n mode = props.mode,\n disabled = props.disabled,\n loading = props.loading,\n getInputElement = props.getInputElement,\n getRawInputElement = props.getRawInputElement,\n open = props.open,\n defaultOpen = props.defaultOpen,\n onDropdownVisibleChange = props.onDropdownVisibleChange,\n activeValue = props.activeValue,\n onActiveValueChange = props.onActiveValueChange,\n activeDescendantId = props.activeDescendantId,\n searchValue = props.searchValue,\n autoClearSearchValue = props.autoClearSearchValue,\n onSearch = props.onSearch,\n onSearchSplit = props.onSearchSplit,\n tokenSeparators = props.tokenSeparators,\n allowClear = props.allowClear,\n showArrow = props.showArrow,\n inputIcon = props.inputIcon,\n clearIcon = props.clearIcon,\n OptionList = props.OptionList,\n animation = props.animation,\n transitionName = props.transitionName,\n dropdownStyle = props.dropdownStyle,\n dropdownClassName = props.dropdownClassName,\n dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n dropdownRender = props.dropdownRender,\n dropdownAlign = props.dropdownAlign,\n placement = props.placement,\n getPopupContainer = props.getPopupContainer,\n _props$showAction = props.showAction,\n showAction = _props$showAction === void 0 ? [] : _props$showAction,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n onKeyUp = props.onKeyUp,\n onKeyDown = props.onKeyDown,\n onMouseDown = props.onMouseDown,\n restProps = _objectWithoutProperties(props, _excluded);\n\n // ============================== MISC ==============================\n var multiple = isMultiple(mode);\n var mergedShowSearch = (showSearch !== undefined ? showSearch : multiple) || mode === 'combobox';\n var domProps = _objectSpread({}, restProps);\n DEFAULT_OMIT_PROPS.forEach(function (propName) {\n delete domProps[propName];\n });\n omitDomProps === null || omitDomProps === void 0 ? void 0 : omitDomProps.forEach(function (propName) {\n delete domProps[propName];\n });\n\n // ============================= Mobile =============================\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mobile = _React$useState2[0],\n setMobile = _React$useState2[1];\n React.useEffect(function () {\n // Only update on the client side\n setMobile(isMobile());\n }, []);\n\n // ============================== Refs ==============================\n var containerRef = React.useRef(null);\n var selectorDomRef = React.useRef(null);\n var triggerRef = React.useRef(null);\n var selectorRef = React.useRef(null);\n var listRef = React.useRef(null);\n\n /** Used for component focused management */\n var _useDelayReset = useDelayReset(),\n _useDelayReset2 = _slicedToArray(_useDelayReset, 3),\n mockFocused = _useDelayReset2[0],\n setMockFocused = _useDelayReset2[1],\n cancelSetMockFocused = _useDelayReset2[2];\n\n // =========================== Imperative ===========================\n React.useImperativeHandle(ref, function () {\n var _selectorRef$current, _selectorRef$current2;\n return {\n focus: (_selectorRef$current = selectorRef.current) === null || _selectorRef$current === void 0 ? void 0 : _selectorRef$current.focus,\n blur: (_selectorRef$current2 = selectorRef.current) === null || _selectorRef$current2 === void 0 ? void 0 : _selectorRef$current2.blur,\n scrollTo: function scrollTo(arg) {\n var _listRef$current;\n return (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollTo(arg);\n }\n };\n });\n\n // ========================== Search Value ==========================\n var mergedSearchValue = React.useMemo(function () {\n var _displayValues$;\n if (mode !== 'combobox') {\n return searchValue;\n }\n var val = (_displayValues$ = displayValues[0]) === null || _displayValues$ === void 0 ? void 0 : _displayValues$.value;\n return typeof val === 'string' || typeof val === 'number' ? String(val) : '';\n }, [searchValue, mode, displayValues]);\n\n // ========================== Custom Input ==========================\n // Only works in `combobox`\n var customizeInputElement = mode === 'combobox' && typeof getInputElement === 'function' && getInputElement() || null;\n\n // Used for customize replacement for `rc-cascader`\n var customizeRawInputElement = typeof getRawInputElement === 'function' && getRawInputElement();\n var customizeRawInputRef = useComposeRef(selectorDomRef, customizeRawInputElement === null || customizeRawInputElement === void 0 ? void 0 : (_customizeRawInputEle = customizeRawInputElement.props) === null || _customizeRawInputEle === void 0 ? void 0 : _customizeRawInputEle.ref);\n\n // ============================== Open ==============================\n var _useMergedState = useMergedState(undefined, {\n defaultValue: defaultOpen,\n value: open\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n innerOpen = _useMergedState2[0],\n setInnerOpen = _useMergedState2[1];\n var mergedOpen = innerOpen;\n\n // Not trigger `open` in `combobox` when `notFoundContent` is empty\n var emptyListContent = !notFoundContent && emptyOptions;\n if (disabled || emptyListContent && mergedOpen && mode === 'combobox') {\n mergedOpen = false;\n }\n var triggerOpen = emptyListContent ? false : mergedOpen;\n var onToggleOpen = React.useCallback(function (newOpen) {\n var nextOpen = newOpen !== undefined ? newOpen : !mergedOpen;\n if (!disabled) {\n setInnerOpen(nextOpen);\n if (mergedOpen !== nextOpen) {\n onDropdownVisibleChange === null || onDropdownVisibleChange === void 0 ? void 0 : onDropdownVisibleChange(nextOpen);\n }\n }\n }, [disabled, mergedOpen, setInnerOpen, onDropdownVisibleChange]);\n\n // ============================= Search =============================\n var tokenWithEnter = React.useMemo(function () {\n return (tokenSeparators || []).some(function (tokenSeparator) {\n return ['\\n', '\\r\\n'].includes(tokenSeparator);\n });\n }, [tokenSeparators]);\n var onInternalSearch = function onInternalSearch(searchText, fromTyping, isCompositing) {\n var ret = true;\n var newSearchText = searchText;\n onActiveValueChange === null || onActiveValueChange === void 0 ? void 0 : onActiveValueChange(null);\n\n // Check if match the `tokenSeparators`\n var patchLabels = isCompositing ? null : getSeparatedContent(searchText, tokenSeparators);\n\n // Ignore combobox since it's not split-able\n if (mode !== 'combobox' && patchLabels) {\n newSearchText = '';\n onSearchSplit === null || onSearchSplit === void 0 ? void 0 : onSearchSplit(patchLabels);\n\n // Should close when paste finish\n onToggleOpen(false);\n\n // Tell Selector that break next actions\n ret = false;\n }\n if (onSearch && mergedSearchValue !== newSearchText) {\n onSearch(newSearchText, {\n source: fromTyping ? 'typing' : 'effect'\n });\n }\n return ret;\n };\n\n // Only triggered when menu is closed & mode is tags\n // If menu is open, OptionList will take charge\n // If mode isn't tags, press enter is not meaningful when you can't see any option\n var onInternalSearchSubmit = function onInternalSearchSubmit(searchText) {\n // prevent empty tags from appearing when you click the Enter button\n if (!searchText || !searchText.trim()) {\n return;\n }\n onSearch(searchText, {\n source: 'submit'\n });\n };\n\n // Close will clean up single mode search text\n React.useEffect(function () {\n if (!mergedOpen && !multiple && mode !== 'combobox') {\n onInternalSearch('', false, false);\n }\n }, [mergedOpen]);\n\n // ============================ Disabled ============================\n // Close dropdown & remove focus state when disabled change\n React.useEffect(function () {\n if (innerOpen && disabled) {\n setInnerOpen(false);\n }\n if (disabled) {\n setMockFocused(false);\n }\n }, [disabled]);\n\n // ============================ Keyboard ============================\n /**\n * We record input value here to check if can press to clean up by backspace\n * - null: Key is not down, this is reset by key up\n * - true: Search text is empty when first time backspace down\n * - false: Search text is not empty when first time backspace down\n */\n var _useLock = useLock(),\n _useLock2 = _slicedToArray(_useLock, 2),\n getClearLock = _useLock2[0],\n setClearLock = _useLock2[1];\n\n // KeyDown\n var onInternalKeyDown = function onInternalKeyDown(event) {\n var clearLock = getClearLock();\n var which = event.which;\n if (which === KeyCode.ENTER) {\n // Do not submit form when type in the input\n if (mode !== 'combobox') {\n event.preventDefault();\n }\n\n // We only manage open state here, close logic should handle by list component\n if (!mergedOpen) {\n onToggleOpen(true);\n }\n }\n setClearLock(!!mergedSearchValue);\n\n // Remove value by `backspace`\n if (which === KeyCode.BACKSPACE && !clearLock && multiple && !mergedSearchValue && displayValues.length) {\n var cloneDisplayValues = _toConsumableArray(displayValues);\n var removedDisplayValue = null;\n for (var i = cloneDisplayValues.length - 1; i >= 0; i -= 1) {\n var current = cloneDisplayValues[i];\n if (!current.disabled) {\n cloneDisplayValues.splice(i, 1);\n removedDisplayValue = current;\n break;\n }\n }\n if (removedDisplayValue) {\n onDisplayValuesChange(cloneDisplayValues, {\n type: 'remove',\n values: [removedDisplayValue]\n });\n }\n }\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n if (mergedOpen && listRef.current) {\n var _listRef$current2;\n (_listRef$current2 = listRef.current).onKeyDown.apply(_listRef$current2, [event].concat(rest));\n }\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown.apply(void 0, [event].concat(rest));\n };\n\n // KeyUp\n var onInternalKeyUp = function onInternalKeyUp(event) {\n for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n rest[_key2 - 1] = arguments[_key2];\n }\n if (mergedOpen && listRef.current) {\n var _listRef$current3;\n (_listRef$current3 = listRef.current).onKeyUp.apply(_listRef$current3, [event].concat(rest));\n }\n onKeyUp === null || onKeyUp === void 0 ? void 0 : onKeyUp.apply(void 0, [event].concat(rest));\n };\n\n // ============================ Selector ============================\n var onSelectorRemove = function onSelectorRemove(val) {\n var newValues = displayValues.filter(function (i) {\n return i !== val;\n });\n onDisplayValuesChange(newValues, {\n type: 'remove',\n values: [val]\n });\n };\n\n // ========================== Focus / Blur ==========================\n /** Record real focus status */\n var focusRef = React.useRef(false);\n var onContainerFocus = function onContainerFocus() {\n setMockFocused(true);\n if (!disabled) {\n if (onFocus && !focusRef.current) {\n onFocus.apply(void 0, arguments);\n }\n\n // `showAction` should handle `focus` if set\n if (showAction.includes('focus')) {\n onToggleOpen(true);\n }\n }\n focusRef.current = true;\n };\n var onContainerBlur = function onContainerBlur() {\n setMockFocused(false, function () {\n focusRef.current = false;\n onToggleOpen(false);\n });\n if (disabled) {\n return;\n }\n if (mergedSearchValue) {\n // `tags` mode should move `searchValue` into values\n if (mode === 'tags') {\n onSearch(mergedSearchValue, {\n source: 'submit'\n });\n } else if (mode === 'multiple') {\n // `multiple` mode only clean the search value but not trigger event\n onSearch('', {\n source: 'blur'\n });\n }\n }\n if (onBlur) {\n onBlur.apply(void 0, arguments);\n }\n };\n\n // Give focus back of Select\n var activeTimeoutIds = [];\n React.useEffect(function () {\n return function () {\n activeTimeoutIds.forEach(function (timeoutId) {\n return clearTimeout(timeoutId);\n });\n activeTimeoutIds.splice(0, activeTimeoutIds.length);\n };\n }, []);\n var onInternalMouseDown = function onInternalMouseDown(event) {\n var _triggerRef$current;\n var target = event.target;\n var popupElement = (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.getPopupElement();\n\n // We should give focus back to selector if clicked item is not focusable\n if (popupElement && popupElement.contains(target)) {\n var timeoutId = setTimeout(function () {\n var index = activeTimeoutIds.indexOf(timeoutId);\n if (index !== -1) {\n activeTimeoutIds.splice(index, 1);\n }\n cancelSetMockFocused();\n if (!mobile && !popupElement.contains(document.activeElement)) {\n var _selectorRef$current3;\n (_selectorRef$current3 = selectorRef.current) === null || _selectorRef$current3 === void 0 ? void 0 : _selectorRef$current3.focus();\n }\n });\n activeTimeoutIds.push(timeoutId);\n }\n for (var _len3 = arguments.length, restArgs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n restArgs[_key3 - 1] = arguments[_key3];\n }\n onMouseDown === null || onMouseDown === void 0 ? void 0 : onMouseDown.apply(void 0, [event].concat(restArgs));\n };\n\n // ============================ Dropdown ============================\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n containerWidth = _React$useState4[0],\n setContainerWidth = _React$useState4[1];\n var _React$useState5 = React.useState({}),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n forceUpdate = _React$useState6[1];\n // We need force update here since popup dom is render async\n function onPopupMouseEnter() {\n forceUpdate({});\n }\n useLayoutEffect(function () {\n if (triggerOpen) {\n var _containerRef$current;\n var newWidth = Math.ceil((_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.offsetWidth);\n if (containerWidth !== newWidth && !Number.isNaN(newWidth)) {\n setContainerWidth(newWidth);\n }\n }\n }, [triggerOpen]);\n\n // Used for raw custom input trigger\n var onTriggerVisibleChange;\n if (customizeRawInputElement) {\n onTriggerVisibleChange = function onTriggerVisibleChange(newOpen) {\n onToggleOpen(newOpen);\n };\n }\n\n // Close when click on non-select element\n useSelectTriggerControl(function () {\n var _triggerRef$current2;\n return [containerRef.current, (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : _triggerRef$current2.getPopupElement()];\n }, triggerOpen, onToggleOpen, !!customizeRawInputElement);\n\n // ============================ Context =============================\n var baseSelectContext = React.useMemo(function () {\n return _objectSpread(_objectSpread({}, props), {}, {\n notFoundContent: notFoundContent,\n open: mergedOpen,\n triggerOpen: triggerOpen,\n id: id,\n showSearch: mergedShowSearch,\n multiple: multiple,\n toggleOpen: onToggleOpen\n });\n }, [props, notFoundContent, triggerOpen, mergedOpen, id, mergedShowSearch, multiple, onToggleOpen]);\n\n // ==================================================================\n // == Render ==\n // ==================================================================\n\n // ============================= Arrow ==============================\n var mergedShowArrow = showArrow !== undefined ? showArrow : loading || !multiple && mode !== 'combobox';\n var arrowNode;\n if (mergedShowArrow) {\n arrowNode = /*#__PURE__*/React.createElement(TransBtn, {\n className: classNames(\"\".concat(prefixCls, \"-arrow\"), _defineProperty({}, \"\".concat(prefixCls, \"-arrow-loading\"), loading)),\n customizeIcon: inputIcon,\n customizeIconProps: {\n loading: loading,\n searchValue: mergedSearchValue,\n open: mergedOpen,\n focused: mockFocused,\n showSearch: mergedShowSearch\n }\n });\n }\n\n // ============================= Clear ==============================\n var clearNode;\n var onClearMouseDown = function onClearMouseDown() {\n var _selectorRef$current4;\n onClear === null || onClear === void 0 ? void 0 : onClear();\n (_selectorRef$current4 = selectorRef.current) === null || _selectorRef$current4 === void 0 ? void 0 : _selectorRef$current4.focus();\n onDisplayValuesChange([], {\n type: 'clear',\n values: displayValues\n });\n onInternalSearch('', false, false);\n };\n if (!disabled && allowClear && (displayValues.length || mergedSearchValue) && !(mode === 'combobox' && mergedSearchValue === '')) {\n clearNode = /*#__PURE__*/React.createElement(TransBtn, {\n className: \"\".concat(prefixCls, \"-clear\"),\n onMouseDown: onClearMouseDown,\n customizeIcon: clearIcon\n }, \"\\xD7\");\n }\n\n // =========================== OptionList ===========================\n var optionList = /*#__PURE__*/React.createElement(OptionList, {\n ref: listRef\n });\n\n // ============================= Select =============================\n var mergedClassName = classNames(prefixCls, className, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-focused\"), mockFocused), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-multiple\"), multiple), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-single\"), !multiple), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-allow-clear\"), allowClear), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-show-arrow\"), mergedShowArrow), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-loading\"), loading), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-open\"), mergedOpen), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-customize-input\"), customizeInputElement), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-show-search\"), mergedShowSearch), _classNames2));\n\n // >>> Selector\n var selectorNode = /*#__PURE__*/React.createElement(SelectTrigger, {\n ref: triggerRef,\n disabled: disabled,\n prefixCls: prefixCls,\n visible: triggerOpen,\n popupElement: optionList,\n containerWidth: containerWidth,\n animation: animation,\n transitionName: transitionName,\n dropdownStyle: dropdownStyle,\n dropdownClassName: dropdownClassName,\n direction: direction,\n dropdownMatchSelectWidth: dropdownMatchSelectWidth,\n dropdownRender: dropdownRender,\n dropdownAlign: dropdownAlign,\n placement: placement,\n getPopupContainer: getPopupContainer,\n empty: emptyOptions,\n getTriggerDOMNode: function getTriggerDOMNode() {\n return selectorDomRef.current;\n },\n onPopupVisibleChange: onTriggerVisibleChange,\n onPopupMouseEnter: onPopupMouseEnter\n }, customizeRawInputElement ? /*#__PURE__*/React.cloneElement(customizeRawInputElement, {\n ref: customizeRawInputRef\n }) : /*#__PURE__*/React.createElement(Selector, _extends({}, props, {\n domRef: selectorDomRef,\n prefixCls: prefixCls,\n inputElement: customizeInputElement,\n ref: selectorRef,\n id: id,\n showSearch: mergedShowSearch,\n autoClearSearchValue: autoClearSearchValue,\n mode: mode,\n activeDescendantId: activeDescendantId,\n tagRender: tagRender,\n values: displayValues,\n open: mergedOpen,\n onToggleOpen: onToggleOpen,\n activeValue: activeValue,\n searchValue: mergedSearchValue,\n onSearch: onInternalSearch,\n onSearchSubmit: onInternalSearchSubmit,\n onRemove: onSelectorRemove,\n tokenWithEnter: tokenWithEnter\n })));\n\n // >>> Render\n var renderNode;\n\n // Render raw\n if (customizeRawInputElement) {\n renderNode = selectorNode;\n } else {\n renderNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n className: mergedClassName\n }, domProps, {\n ref: containerRef,\n onMouseDown: onInternalMouseDown,\n onKeyDown: onInternalKeyDown,\n onKeyUp: onInternalKeyUp,\n onFocus: onContainerFocus,\n onBlur: onContainerBlur\n }), mockFocused && !mergedOpen && /*#__PURE__*/React.createElement(\"span\", {\n style: {\n width: 0,\n height: 0,\n position: 'absolute',\n overflow: 'hidden',\n opacity: 0\n },\n \"aria-live\": \"polite\"\n }, \"\".concat(displayValues.map(function (_ref) {\n var label = _ref.label,\n value = _ref.value;\n return ['number', 'string'].includes(_typeof(label)) ? label : value;\n }).join(', '))), selectorNode, arrowNode, clearNode);\n }\n return /*#__PURE__*/React.createElement(BaseSelectContext.Provider, {\n value: baseSelectContext\n }, renderNode);\n});\n\n// Set display name for dev\nif (process.env.NODE_ENV !== 'production') {\n BaseSelect.displayName = 'BaseSelect';\n}\nexport default BaseSelect;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n\n/**\n * Similar with `useLock`, but this hook will always execute last value.\n * When set to `true`, it will keep `true` for a short time even if `false` is set.\n */\nexport default function useDelayReset() {\n var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n bool = _React$useState2[0],\n setBool = _React$useState2[1];\n var delayRef = React.useRef(null);\n var cancelLatest = function cancelLatest() {\n window.clearTimeout(delayRef.current);\n };\n React.useEffect(function () {\n return cancelLatest;\n }, []);\n var delaySetBool = function delaySetBool(value, callback) {\n cancelLatest();\n delayRef.current = window.setTimeout(function () {\n setBool(value);\n if (callback) {\n callback();\n }\n }, timeout);\n };\n return [bool, delaySetBool, cancelLatest];\n}","import * as React from 'react';\nexport default function useSelectTriggerControl(elements, open, triggerOpen, customizedTrigger) {\n var propsRef = React.useRef(null);\n propsRef.current = {\n open: open,\n triggerOpen: triggerOpen,\n customizedTrigger: customizedTrigger\n };\n React.useEffect(function () {\n function onGlobalMouseDown(event) {\n var _propsRef$current;\n // If trigger is customized, Trigger will take control of popupVisible\n if ((_propsRef$current = propsRef.current) !== null && _propsRef$current !== void 0 && _propsRef$current.customizedTrigger) {\n return;\n }\n var target = event.target;\n if (target.shadowRoot && event.composed) {\n target = event.composedPath()[0] || target;\n }\n if (propsRef.current.open && elements().filter(function (element) {\n return element;\n }).every(function (element) {\n return !element.contains(target) && element !== target;\n })) {\n // Should trigger close\n propsRef.current.triggerOpen(false);\n }\n }\n window.addEventListener('mousedown', onGlobalMouseDown);\n return function () {\n return window.removeEventListener('mousedown', onGlobalMouseDown);\n };\n }, []);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport { toArray } from \"../utils/commonUtil\";\nimport { injectPropsWithOption } from \"../utils/valueUtil\";\nfunction includes(test, search) {\n return toArray(test).join('').toUpperCase().includes(search);\n}\nexport default (function (options, fieldNames, searchValue, filterOption, optionFilterProp) {\n return React.useMemo(function () {\n if (!searchValue || filterOption === false) {\n return options;\n }\n var fieldOptions = fieldNames.options,\n fieldLabel = fieldNames.label,\n fieldValue = fieldNames.value;\n var filteredOptions = [];\n var customizeFilter = typeof filterOption === 'function';\n var upperSearch = searchValue.toUpperCase();\n var filterFunc = customizeFilter ? filterOption : function (_, option) {\n // Use provided `optionFilterProp`\n if (optionFilterProp) {\n return includes(option[optionFilterProp], upperSearch);\n }\n\n // Auto select `label` or `value` by option type\n if (option[fieldOptions]) {\n // hack `fieldLabel` since `OptionGroup` children is not `label`\n return includes(option[fieldLabel !== 'children' ? fieldLabel : 'label'], upperSearch);\n }\n return includes(option[fieldValue], upperSearch);\n };\n var wrapOption = customizeFilter ? function (opt) {\n return injectPropsWithOption(opt);\n } : function (opt) {\n return opt;\n };\n options.forEach(function (item) {\n // Group should check child options\n if (item[fieldOptions]) {\n // Check group first\n var matchGroup = filterFunc(searchValue, wrapOption(item));\n if (matchGroup) {\n filteredOptions.push(item);\n } else {\n // Check option\n var subOptions = item[fieldOptions].filter(function (subItem) {\n return filterFunc(searchValue, wrapOption(subItem));\n });\n if (subOptions.length) {\n filteredOptions.push(_objectSpread(_objectSpread({}, item), {}, _defineProperty({}, fieldOptions, subOptions)));\n }\n }\n return;\n }\n if (filterFunc(searchValue, wrapOption(item))) {\n filteredOptions.push(item);\n }\n });\n return filteredOptions;\n }, [options, filterOption, optionFilterProp, searchValue, fieldNames]);\n});","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\", \"value\"],\n _excluded2 = [\"children\"];\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nfunction convertNodeToOption(node) {\n var _ref = node,\n key = _ref.key,\n _ref$props = _ref.props,\n children = _ref$props.children,\n value = _ref$props.value,\n restProps = _objectWithoutProperties(_ref$props, _excluded);\n return _objectSpread({\n key: key,\n value: value !== undefined ? value : key,\n children: children\n }, restProps);\n}\nexport function convertChildrenToData(nodes) {\n var optionOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return toArray(nodes).map(function (node, index) {\n if (! /*#__PURE__*/React.isValidElement(node) || !node.type) {\n return null;\n }\n var _ref2 = node,\n isSelectOptGroup = _ref2.type.isSelectOptGroup,\n key = _ref2.key,\n _ref2$props = _ref2.props,\n children = _ref2$props.children,\n restProps = _objectWithoutProperties(_ref2$props, _excluded2);\n if (optionOnly || !isSelectOptGroup) {\n return convertNodeToOption(node);\n }\n return _objectSpread(_objectSpread({\n key: \"__RC_SELECT_GRP__\".concat(key === null ? index : key, \"__\"),\n label: key\n }, restProps), {}, {\n options: convertChildrenToData(children)\n });\n }).filter(function (data) {\n return data;\n });\n}","import * as React from 'react';\n\n/**\n * Same as `React.useCallback` but always return a memoized function\n * but redirect to real function.\n */\nexport default function useRefFunc(callback) {\n var funcRef = React.useRef();\n funcRef.current = callback;\n var cacheFn = React.useCallback(function () {\n return funcRef.current.apply(funcRef, arguments);\n }, []);\n return cacheFn;\n}","/* istanbul ignore file */\n\n/** This is a placeholder, not real render in dom */\nvar OptGroup = function OptGroup() {\n return null;\n};\nOptGroup.isSelectOptGroup = true;\nexport default OptGroup;","/* istanbul ignore file */\n\n/** This is a placeholder, not real render in dom */\nvar Option = function Option() {\n return null;\n};\nOption.isSelectOption = true;\nexport default Option;","import * as React from 'react';\nvar SelectContext = /*#__PURE__*/React.createContext(null);\nexport default SelectContext;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar _excluded = [\"disabled\", \"title\", \"children\", \"style\", \"className\"];\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport omit from \"rc-util/es/omit\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport classNames from 'classnames';\nimport List from 'rc-virtual-list';\nimport TransBtn from \"./TransBtn\";\nimport { isPlatformMac } from \"./utils/platformUtil\";\nimport useBaseProps from \"./hooks/useBaseProps\";\nimport SelectContext from \"./SelectContext\";\nfunction isTitleType(content) {\n return typeof content === 'string' || typeof content === 'number';\n}\n\n/**\n * Using virtual list of option display.\n * Will fallback to dom if use customize render.\n */\nvar OptionList = function OptionList(_, ref) {\n var _useBaseProps = useBaseProps(),\n prefixCls = _useBaseProps.prefixCls,\n id = _useBaseProps.id,\n open = _useBaseProps.open,\n multiple = _useBaseProps.multiple,\n mode = _useBaseProps.mode,\n searchValue = _useBaseProps.searchValue,\n toggleOpen = _useBaseProps.toggleOpen,\n notFoundContent = _useBaseProps.notFoundContent,\n onPopupScroll = _useBaseProps.onPopupScroll;\n var _React$useContext = React.useContext(SelectContext),\n flattenOptions = _React$useContext.flattenOptions,\n onActiveValue = _React$useContext.onActiveValue,\n defaultActiveFirstOption = _React$useContext.defaultActiveFirstOption,\n onSelect = _React$useContext.onSelect,\n menuItemSelectedIcon = _React$useContext.menuItemSelectedIcon,\n rawValues = _React$useContext.rawValues,\n fieldNames = _React$useContext.fieldNames,\n virtual = _React$useContext.virtual,\n listHeight = _React$useContext.listHeight,\n listItemHeight = _React$useContext.listItemHeight;\n var itemPrefixCls = \"\".concat(prefixCls, \"-item\");\n var memoFlattenOptions = useMemo(function () {\n return flattenOptions;\n }, [open, flattenOptions], function (prev, next) {\n return next[0] && prev[1] !== next[1];\n });\n\n // =========================== List ===========================\n var listRef = React.useRef(null);\n var onListMouseDown = function onListMouseDown(event) {\n event.preventDefault();\n };\n var scrollIntoView = function scrollIntoView(args) {\n if (listRef.current) {\n listRef.current.scrollTo(typeof args === 'number' ? {\n index: args\n } : args);\n }\n };\n\n // ========================== Active ==========================\n var getEnabledActiveIndex = function getEnabledActiveIndex(index) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var len = memoFlattenOptions.length;\n for (var i = 0; i < len; i += 1) {\n var current = (index + i * offset + len) % len;\n var _memoFlattenOptions$c = memoFlattenOptions[current],\n group = _memoFlattenOptions$c.group,\n data = _memoFlattenOptions$c.data;\n if (!group && !data.disabled) {\n return current;\n }\n }\n return -1;\n };\n var _React$useState = React.useState(function () {\n return getEnabledActiveIndex(0);\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n activeIndex = _React$useState2[0],\n setActiveIndex = _React$useState2[1];\n var setActive = function setActive(index) {\n var fromKeyboard = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n setActiveIndex(index);\n var info = {\n source: fromKeyboard ? 'keyboard' : 'mouse'\n };\n\n // Trigger active event\n var flattenItem = memoFlattenOptions[index];\n if (!flattenItem) {\n onActiveValue(null, -1, info);\n return;\n }\n onActiveValue(flattenItem.value, index, info);\n };\n\n // Auto active first item when list length or searchValue changed\n useEffect(function () {\n setActive(defaultActiveFirstOption !== false ? getEnabledActiveIndex(0) : -1);\n }, [memoFlattenOptions.length, searchValue]);\n\n // https://github.com/ant-design/ant-design/issues/34975\n var isSelected = React.useCallback(function (value) {\n return rawValues.has(value) && mode !== 'combobox';\n }, [mode, _toConsumableArray(rawValues).toString(), rawValues.size]);\n\n // Auto scroll to item position in single mode\n useEffect(function () {\n /**\n * React will skip `onChange` when component update.\n * `setActive` function will call root accessibility state update which makes re-render.\n * So we need to delay to let Input component trigger onChange first.\n */\n var timeoutId = setTimeout(function () {\n if (!multiple && open && rawValues.size === 1) {\n var value = Array.from(rawValues)[0];\n var index = memoFlattenOptions.findIndex(function (_ref) {\n var data = _ref.data;\n return data.value === value;\n });\n if (index !== -1) {\n setActive(index);\n scrollIntoView(index);\n }\n }\n });\n\n // Force trigger scrollbar visible when open\n if (open) {\n var _listRef$current;\n (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollTo(undefined);\n }\n return function () {\n return clearTimeout(timeoutId);\n };\n }, [open, searchValue]);\n\n // ========================== Values ==========================\n var onSelectValue = function onSelectValue(value) {\n if (value !== undefined) {\n onSelect(value, {\n selected: !rawValues.has(value)\n });\n }\n\n // Single mode should always close by select\n if (!multiple) {\n toggleOpen(false);\n }\n };\n\n // ========================= Keyboard =========================\n React.useImperativeHandle(ref, function () {\n return {\n onKeyDown: function onKeyDown(event) {\n var which = event.which,\n ctrlKey = event.ctrlKey;\n switch (which) {\n // >>> Arrow keys & ctrl + n/p on Mac\n case KeyCode.N:\n case KeyCode.P:\n case KeyCode.UP:\n case KeyCode.DOWN:\n {\n var offset = 0;\n if (which === KeyCode.UP) {\n offset = -1;\n } else if (which === KeyCode.DOWN) {\n offset = 1;\n } else if (isPlatformMac() && ctrlKey) {\n if (which === KeyCode.N) {\n offset = 1;\n } else if (which === KeyCode.P) {\n offset = -1;\n }\n }\n if (offset !== 0) {\n var nextActiveIndex = getEnabledActiveIndex(activeIndex + offset, offset);\n scrollIntoView(nextActiveIndex);\n setActive(nextActiveIndex, true);\n }\n break;\n }\n\n // >>> Select\n case KeyCode.ENTER:\n {\n // value\n var item = memoFlattenOptions[activeIndex];\n if (item && !item.data.disabled) {\n onSelectValue(item.value);\n } else {\n onSelectValue(undefined);\n }\n if (open) {\n event.preventDefault();\n }\n break;\n }\n\n // >>> Close\n case KeyCode.ESC:\n {\n toggleOpen(false);\n if (open) {\n event.stopPropagation();\n }\n }\n }\n },\n onKeyUp: function onKeyUp() {},\n scrollTo: function scrollTo(index) {\n scrollIntoView(index);\n }\n };\n });\n\n // ========================== Render ==========================\n if (memoFlattenOptions.length === 0) {\n return /*#__PURE__*/React.createElement(\"div\", {\n role: \"listbox\",\n id: \"\".concat(id, \"_list\"),\n className: \"\".concat(itemPrefixCls, \"-empty\"),\n onMouseDown: onListMouseDown\n }, notFoundContent);\n }\n var omitFieldNameList = Object.keys(fieldNames).map(function (key) {\n return fieldNames[key];\n });\n var getLabel = function getLabel(item) {\n return item.label;\n };\n var renderItem = function renderItem(index) {\n var item = memoFlattenOptions[index];\n if (!item) return null;\n var itemData = item.data || {};\n var value = itemData.value;\n var group = item.group;\n var attrs = pickAttrs(itemData, true);\n var mergedLabel = getLabel(item);\n return item ? /*#__PURE__*/React.createElement(\"div\", _extends({\n \"aria-label\": typeof mergedLabel === 'string' && !group ? mergedLabel : null\n }, attrs, {\n key: index,\n role: group ? 'presentation' : 'option',\n id: \"\".concat(id, \"_list_\").concat(index),\n \"aria-selected\": isSelected(value)\n }), value) : null;\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n role: \"listbox\",\n id: \"\".concat(id, \"_list\"),\n style: {\n height: 0,\n width: 0,\n overflow: 'hidden'\n }\n }, renderItem(activeIndex - 1), renderItem(activeIndex), renderItem(activeIndex + 1)), /*#__PURE__*/React.createElement(List, {\n itemKey: \"key\",\n ref: listRef,\n data: memoFlattenOptions,\n height: listHeight,\n itemHeight: listItemHeight,\n fullHeight: false,\n onMouseDown: onListMouseDown,\n onScroll: onPopupScroll,\n virtual: virtual\n }, function (item, itemIndex) {\n var _classNames;\n var group = item.group,\n groupOption = item.groupOption,\n data = item.data,\n label = item.label,\n value = item.value;\n var key = data.key;\n\n // Group\n if (group) {\n var _data$title;\n var groupTitle = (_data$title = data.title) !== null && _data$title !== void 0 ? _data$title : isTitleType(label) ? label.toString() : undefined;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(itemPrefixCls, \"\".concat(itemPrefixCls, \"-group\")),\n title: groupTitle\n }, label !== undefined ? label : key);\n }\n var disabled = data.disabled,\n title = data.title,\n children = data.children,\n style = data.style,\n className = data.className,\n otherProps = _objectWithoutProperties(data, _excluded);\n var passedProps = omit(otherProps, omitFieldNameList);\n\n // Option\n var selected = isSelected(value);\n var optionPrefixCls = \"\".concat(itemPrefixCls, \"-option\");\n var optionClassName = classNames(itemPrefixCls, optionPrefixCls, className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(optionPrefixCls, \"-grouped\"), groupOption), _defineProperty(_classNames, \"\".concat(optionPrefixCls, \"-active\"), activeIndex === itemIndex && !disabled), _defineProperty(_classNames, \"\".concat(optionPrefixCls, \"-disabled\"), disabled), _defineProperty(_classNames, \"\".concat(optionPrefixCls, \"-selected\"), selected), _classNames));\n var mergedLabel = getLabel(item);\n var iconVisible = !menuItemSelectedIcon || typeof menuItemSelectedIcon === 'function' || selected;\n\n // https://github.com/ant-design/ant-design/issues/34145\n var content = typeof mergedLabel === 'number' ? mergedLabel : mergedLabel || value;\n // https://github.com/ant-design/ant-design/issues/26717\n var optionTitle = isTitleType(content) ? content.toString() : undefined;\n if (title !== undefined) {\n optionTitle = title;\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, pickAttrs(passedProps), {\n \"aria-selected\": selected,\n className: optionClassName,\n title: optionTitle,\n onMouseMove: function onMouseMove() {\n if (activeIndex === itemIndex || disabled) {\n return;\n }\n setActive(itemIndex);\n },\n onClick: function onClick() {\n if (!disabled) {\n onSelectValue(value);\n }\n },\n style: style\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(optionPrefixCls, \"-content\")\n }, content), /*#__PURE__*/React.isValidElement(menuItemSelectedIcon) || selected, iconVisible && /*#__PURE__*/React.createElement(TransBtn, {\n className: \"\".concat(itemPrefixCls, \"-option-state\"),\n customizeIcon: menuItemSelectedIcon,\n customizeIconProps: {\n isSelected: selected\n }\n }, selected ? '✓' : null));\n }));\n};\nvar RefOptionList = /*#__PURE__*/React.forwardRef(OptionList);\nRefOptionList.displayName = 'OptionList';\nexport default RefOptionList;","/* istanbul ignore file */\nexport function isPlatformMac() {\n return /(mac\\sos|macintosh)/i.test(navigator.appVersion);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"id\", \"mode\", \"prefixCls\", \"backfill\", \"fieldNames\", \"inputValue\", \"searchValue\", \"onSearch\", \"autoClearSearchValue\", \"onSelect\", \"onDeselect\", \"dropdownMatchSelectWidth\", \"filterOption\", \"filterSort\", \"optionFilterProp\", \"optionLabelProp\", \"options\", \"children\", \"defaultActiveFirstOption\", \"menuItemSelectedIcon\", \"virtual\", \"listHeight\", \"listItemHeight\", \"value\", \"defaultValue\", \"labelInValue\", \"onChange\"];\n/**\n * To match accessibility requirement, we always provide an input in the component.\n * Other element will not set `tabIndex` to avoid `onBlur` sequence problem.\n * For focused select, we set `aria-live=\"polite\"` to update the accessibility content.\n *\n * ref:\n * - keyboard: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#Keyboard_interactions\n *\n * New api:\n * - listHeight\n * - listItemHeight\n * - component\n *\n * Remove deprecated api:\n * - multiple\n * - tags\n * - combobox\n * - firstActiveValue\n * - dropdownMenuStyle\n * - openClassName (Not list in api)\n *\n * Update:\n * - `backfill` only support `combobox` mode\n * - `combobox` mode not support `labelInValue` since it's meaningless\n * - `getInputElement` only support `combobox` mode\n * - `onChange` return OptionData instead of ReactNode\n * - `filterOption` `onChange` `onSelect` accept OptionData instead of ReactNode\n * - `combobox` mode trigger `onChange` will get `undefined` if no `value` match in Option\n * - `combobox` mode not support `optionLabelProp`\n */\n\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport BaseSelect, { isMultiple } from \"./BaseSelect\";\nimport useCache from \"./hooks/useCache\";\nimport useFilterOptions from \"./hooks/useFilterOptions\";\nimport useId from \"./hooks/useId\";\nimport useOptions from \"./hooks/useOptions\";\nimport useRefFunc from \"./hooks/useRefFunc\";\nimport OptGroup from \"./OptGroup\";\nimport Option from \"./Option\";\nimport OptionList from \"./OptionList\";\nimport SelectContext from \"./SelectContext\";\nimport { hasValue, toArray } from \"./utils/commonUtil\";\nimport { fillFieldNames, flattenOptions, injectPropsWithOption } from \"./utils/valueUtil\";\nimport warningProps, { warningNullOptions } from \"./utils/warningPropsUtil\";\nvar OMIT_DOM_PROPS = ['inputValue'];\nfunction isRawValue(value) {\n return !value || _typeof(value) !== 'object';\n}\nvar Select = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var id = props.id,\n mode = props.mode,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-select' : _props$prefixCls,\n backfill = props.backfill,\n fieldNames = props.fieldNames,\n inputValue = props.inputValue,\n searchValue = props.searchValue,\n onSearch = props.onSearch,\n _props$autoClearSearc = props.autoClearSearchValue,\n autoClearSearchValue = _props$autoClearSearc === void 0 ? true : _props$autoClearSearc,\n onSelect = props.onSelect,\n onDeselect = props.onDeselect,\n _props$dropdownMatchS = props.dropdownMatchSelectWidth,\n dropdownMatchSelectWidth = _props$dropdownMatchS === void 0 ? true : _props$dropdownMatchS,\n filterOption = props.filterOption,\n filterSort = props.filterSort,\n optionFilterProp = props.optionFilterProp,\n optionLabelProp = props.optionLabelProp,\n options = props.options,\n children = props.children,\n defaultActiveFirstOption = props.defaultActiveFirstOption,\n menuItemSelectedIcon = props.menuItemSelectedIcon,\n virtual = props.virtual,\n _props$listHeight = props.listHeight,\n listHeight = _props$listHeight === void 0 ? 200 : _props$listHeight,\n _props$listItemHeight = props.listItemHeight,\n listItemHeight = _props$listItemHeight === void 0 ? 20 : _props$listItemHeight,\n value = props.value,\n defaultValue = props.defaultValue,\n labelInValue = props.labelInValue,\n onChange = props.onChange,\n restProps = _objectWithoutProperties(props, _excluded);\n var mergedId = useId(id);\n var multiple = isMultiple(mode);\n var childrenAsData = !!(!options && children);\n var mergedFilterOption = React.useMemo(function () {\n if (filterOption === undefined && mode === 'combobox') {\n return false;\n }\n return filterOption;\n }, [filterOption, mode]);\n\n // ========================= FieldNames =========================\n var mergedFieldNames = React.useMemo(function () {\n return fillFieldNames(fieldNames, childrenAsData);\n }, /* eslint-disable react-hooks/exhaustive-deps */\n [\n // We stringify fieldNames to avoid unnecessary re-renders.\n JSON.stringify(fieldNames), childrenAsData]\n /* eslint-enable react-hooks/exhaustive-deps */);\n\n // =========================== Search ===========================\n var _useMergedState = useMergedState('', {\n value: searchValue !== undefined ? searchValue : inputValue,\n postState: function postState(search) {\n return search || '';\n }\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedSearchValue = _useMergedState2[0],\n setSearchValue = _useMergedState2[1];\n\n // =========================== Option ===========================\n var parsedOptions = useOptions(options, children, mergedFieldNames, optionFilterProp, optionLabelProp);\n var valueOptions = parsedOptions.valueOptions,\n labelOptions = parsedOptions.labelOptions,\n mergedOptions = parsedOptions.options;\n\n // ========================= Wrap Value =========================\n var convert2LabelValues = React.useCallback(function (draftValues) {\n // Convert to array\n var valueList = toArray(draftValues);\n\n // Convert to labelInValue type\n return valueList.map(function (val) {\n var rawValue;\n var rawLabel;\n var rawKey;\n var rawDisabled;\n var rawTitle;\n\n // Fill label & value\n if (isRawValue(val)) {\n rawValue = val;\n } else {\n var _val$value;\n rawKey = val.key;\n rawLabel = val.label;\n rawValue = (_val$value = val.value) !== null && _val$value !== void 0 ? _val$value : rawKey;\n }\n var option = valueOptions.get(rawValue);\n if (option) {\n var _option$key;\n // Fill missing props\n if (rawLabel === undefined) rawLabel = option === null || option === void 0 ? void 0 : option[optionLabelProp || mergedFieldNames.label];\n if (rawKey === undefined) rawKey = (_option$key = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key !== void 0 ? _option$key : rawValue;\n rawDisabled = option === null || option === void 0 ? void 0 : option.disabled;\n rawTitle = option === null || option === void 0 ? void 0 : option.title;\n\n // Warning if label not same as provided\n if (process.env.NODE_ENV !== 'production' && !optionLabelProp) {\n var optionLabel = option === null || option === void 0 ? void 0 : option[mergedFieldNames.label];\n if (optionLabel !== undefined && optionLabel !== rawLabel) {\n warning(false, '`label` of `value` is not same as `label` in Select options.');\n }\n }\n }\n return {\n label: rawLabel,\n value: rawValue,\n key: rawKey,\n disabled: rawDisabled,\n title: rawTitle\n };\n });\n }, [mergedFieldNames, optionLabelProp, valueOptions]);\n\n // =========================== Values ===========================\n var _useMergedState3 = useMergedState(defaultValue, {\n value: value\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n internalValue = _useMergedState4[0],\n setInternalValue = _useMergedState4[1];\n\n // Merged value with LabelValueType\n var rawLabeledValues = React.useMemo(function () {\n var _values$;\n var values = convert2LabelValues(internalValue);\n\n // combobox no need save value when it's no value\n if (mode === 'combobox' && !((_values$ = values[0]) !== null && _values$ !== void 0 && _values$.value)) {\n return [];\n }\n return values;\n }, [internalValue, convert2LabelValues, mode]);\n\n // Fill label with cache to avoid option remove\n var _useCache = useCache(rawLabeledValues, valueOptions),\n _useCache2 = _slicedToArray(_useCache, 2),\n mergedValues = _useCache2[0],\n getMixedOption = _useCache2[1];\n var displayValues = React.useMemo(function () {\n // `null` need show as placeholder instead\n // https://github.com/ant-design/ant-design/issues/25057\n if (!mode && mergedValues.length === 1) {\n var firstValue = mergedValues[0];\n if (firstValue.value === null && (firstValue.label === null || firstValue.label === undefined)) {\n return [];\n }\n }\n return mergedValues.map(function (item) {\n var _item$label;\n return _objectSpread(_objectSpread({}, item), {}, {\n label: (_item$label = item.label) !== null && _item$label !== void 0 ? _item$label : item.value\n });\n });\n }, [mode, mergedValues]);\n\n /** Convert `displayValues` to raw value type set */\n var rawValues = React.useMemo(function () {\n return new Set(mergedValues.map(function (val) {\n return val.value;\n }));\n }, [mergedValues]);\n React.useEffect(function () {\n if (mode === 'combobox') {\n var _mergedValues$;\n var strValue = (_mergedValues$ = mergedValues[0]) === null || _mergedValues$ === void 0 ? void 0 : _mergedValues$.value;\n setSearchValue(hasValue(strValue) ? String(strValue) : '');\n }\n }, [mergedValues]);\n\n // ======================= Display Option =======================\n // Create a placeholder item if not exist in `options`\n var createTagOption = useRefFunc(function (val, label) {\n var _ref;\n var mergedLabel = label !== null && label !== void 0 ? label : val;\n return _ref = {}, _defineProperty(_ref, mergedFieldNames.value, val), _defineProperty(_ref, mergedFieldNames.label, mergedLabel), _ref;\n });\n\n // Fill tag as option if mode is `tags`\n var filledTagOptions = React.useMemo(function () {\n if (mode !== 'tags') {\n return mergedOptions;\n }\n\n // >>> Tag mode\n var cloneOptions = _toConsumableArray(mergedOptions);\n\n // Check if value exist in options (include new patch item)\n var existOptions = function existOptions(val) {\n return valueOptions.has(val);\n };\n\n // Fill current value as option\n _toConsumableArray(mergedValues).sort(function (a, b) {\n return a.value < b.value ? -1 : 1;\n }).forEach(function (item) {\n var val = item.value;\n if (!existOptions(val)) {\n cloneOptions.push(createTagOption(val, item.label));\n }\n });\n return cloneOptions;\n }, [createTagOption, mergedOptions, valueOptions, mergedValues, mode]);\n var filteredOptions = useFilterOptions(filledTagOptions, mergedFieldNames, mergedSearchValue, mergedFilterOption, optionFilterProp);\n\n // Fill options with search value if needed\n var filledSearchOptions = React.useMemo(function () {\n if (mode !== 'tags' || !mergedSearchValue || filteredOptions.some(function (item) {\n return item[optionFilterProp || 'value'] === mergedSearchValue;\n })) {\n return filteredOptions;\n }\n\n // Fill search value as option\n return [createTagOption(mergedSearchValue)].concat(_toConsumableArray(filteredOptions));\n }, [createTagOption, optionFilterProp, mode, filteredOptions, mergedSearchValue]);\n var orderedFilteredOptions = React.useMemo(function () {\n if (!filterSort) {\n return filledSearchOptions;\n }\n return _toConsumableArray(filledSearchOptions).sort(function (a, b) {\n return filterSort(a, b);\n });\n }, [filledSearchOptions, filterSort]);\n var displayOptions = React.useMemo(function () {\n return flattenOptions(orderedFilteredOptions, {\n fieldNames: mergedFieldNames,\n childrenAsData: childrenAsData\n });\n }, [orderedFilteredOptions, mergedFieldNames, childrenAsData]);\n\n // =========================== Change ===========================\n var triggerChange = function triggerChange(values) {\n var labeledValues = convert2LabelValues(values);\n setInternalValue(labeledValues);\n if (onChange && (\n // Trigger event only when value changed\n labeledValues.length !== mergedValues.length || labeledValues.some(function (newVal, index) {\n var _mergedValues$index;\n return ((_mergedValues$index = mergedValues[index]) === null || _mergedValues$index === void 0 ? void 0 : _mergedValues$index.value) !== (newVal === null || newVal === void 0 ? void 0 : newVal.value);\n }))) {\n var returnValues = labelInValue ? labeledValues : labeledValues.map(function (v) {\n return v.value;\n });\n var returnOptions = labeledValues.map(function (v) {\n return injectPropsWithOption(getMixedOption(v.value));\n });\n onChange(\n // Value\n multiple ? returnValues : returnValues[0],\n // Option\n multiple ? returnOptions : returnOptions[0]);\n }\n };\n\n // ======================= Accessibility ========================\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n activeValue = _React$useState2[0],\n setActiveValue = _React$useState2[1];\n var _React$useState3 = React.useState(0),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n accessibilityIndex = _React$useState4[0],\n setAccessibilityIndex = _React$useState4[1];\n var mergedDefaultActiveFirstOption = defaultActiveFirstOption !== undefined ? defaultActiveFirstOption : mode !== 'combobox';\n var onActiveValue = React.useCallback(function (active, index) {\n var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref2$source = _ref2.source,\n source = _ref2$source === void 0 ? 'keyboard' : _ref2$source;\n setAccessibilityIndex(index);\n if (backfill && mode === 'combobox' && active !== null && source === 'keyboard') {\n setActiveValue(String(active));\n }\n }, [backfill, mode]);\n\n // ========================= OptionList =========================\n var triggerSelect = function triggerSelect(val, selected, type) {\n var getSelectEnt = function getSelectEnt() {\n var _option$key2;\n var option = getMixedOption(val);\n return [labelInValue ? {\n label: option === null || option === void 0 ? void 0 : option[mergedFieldNames.label],\n value: val,\n key: (_option$key2 = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key2 !== void 0 ? _option$key2 : val\n } : val, injectPropsWithOption(option)];\n };\n if (selected && onSelect) {\n var _getSelectEnt = getSelectEnt(),\n _getSelectEnt2 = _slicedToArray(_getSelectEnt, 2),\n wrappedValue = _getSelectEnt2[0],\n _option = _getSelectEnt2[1];\n onSelect(wrappedValue, _option);\n } else if (!selected && onDeselect && type !== 'clear') {\n var _getSelectEnt3 = getSelectEnt(),\n _getSelectEnt4 = _slicedToArray(_getSelectEnt3, 2),\n _wrappedValue = _getSelectEnt4[0],\n _option2 = _getSelectEnt4[1];\n onDeselect(_wrappedValue, _option2);\n }\n };\n\n // Used for OptionList selection\n var onInternalSelect = useRefFunc(function (val, info) {\n var cloneValues;\n\n // Single mode always trigger select only with option list\n var mergedSelect = multiple ? info.selected : true;\n if (mergedSelect) {\n cloneValues = multiple ? [].concat(_toConsumableArray(mergedValues), [val]) : [val];\n } else {\n cloneValues = mergedValues.filter(function (v) {\n return v.value !== val;\n });\n }\n triggerChange(cloneValues);\n triggerSelect(val, mergedSelect);\n\n // Clean search value if single or configured\n if (mode === 'combobox') {\n // setSearchValue(String(val));\n setActiveValue('');\n } else if (!isMultiple || autoClearSearchValue) {\n setSearchValue('');\n setActiveValue('');\n }\n });\n\n // ======================= Display Change =======================\n // BaseSelect display values change\n var onDisplayValuesChange = function onDisplayValuesChange(nextValues, info) {\n triggerChange(nextValues);\n var type = info.type,\n values = info.values;\n if (type === 'remove' || type === 'clear') {\n values.forEach(function (item) {\n triggerSelect(item.value, false, type);\n });\n }\n };\n\n // =========================== Search ===========================\n var onInternalSearch = function onInternalSearch(searchText, info) {\n setSearchValue(searchText);\n setActiveValue(null);\n\n // [Submit] Tag mode should flush input\n if (info.source === 'submit') {\n var formatted = (searchText || '').trim();\n // prevent empty tags from appearing when you click the Enter button\n if (formatted) {\n var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), [formatted])));\n triggerChange(newRawValues);\n triggerSelect(formatted, true);\n setSearchValue('');\n }\n return;\n }\n if (info.source !== 'blur') {\n if (mode === 'combobox') {\n triggerChange(searchText);\n }\n onSearch === null || onSearch === void 0 ? void 0 : onSearch(searchText);\n }\n };\n var onInternalSearchSplit = function onInternalSearchSplit(words) {\n var patchValues = words;\n if (mode !== 'tags') {\n patchValues = words.map(function (word) {\n var opt = labelOptions.get(word);\n return opt === null || opt === void 0 ? void 0 : opt.value;\n }).filter(function (val) {\n return val !== undefined;\n });\n }\n var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), _toConsumableArray(patchValues))));\n triggerChange(newRawValues);\n newRawValues.forEach(function (newRawValue) {\n triggerSelect(newRawValue, true);\n });\n };\n\n // ========================== Context ===========================\n var selectContext = React.useMemo(function () {\n var realVirtual = virtual !== false && dropdownMatchSelectWidth !== false;\n return _objectSpread(_objectSpread({}, parsedOptions), {}, {\n flattenOptions: displayOptions,\n onActiveValue: onActiveValue,\n defaultActiveFirstOption: mergedDefaultActiveFirstOption,\n onSelect: onInternalSelect,\n menuItemSelectedIcon: menuItemSelectedIcon,\n rawValues: rawValues,\n fieldNames: mergedFieldNames,\n virtual: realVirtual,\n listHeight: listHeight,\n listItemHeight: listItemHeight,\n childrenAsData: childrenAsData\n });\n }, [parsedOptions, displayOptions, onActiveValue, mergedDefaultActiveFirstOption, onInternalSelect, menuItemSelectedIcon, rawValues, mergedFieldNames, virtual, dropdownMatchSelectWidth, listHeight, listItemHeight, childrenAsData]);\n\n // ========================== Warning ===========================\n if (process.env.NODE_ENV !== 'production') {\n warningProps(props);\n warningNullOptions(mergedOptions, mergedFieldNames);\n }\n\n // ==============================================================\n // == Render ==\n // ==============================================================\n return /*#__PURE__*/React.createElement(SelectContext.Provider, {\n value: selectContext\n }, /*#__PURE__*/React.createElement(BaseSelect, _extends({}, restProps, {\n // >>> MISC\n id: mergedId,\n prefixCls: prefixCls,\n ref: ref,\n omitDomProps: OMIT_DOM_PROPS,\n mode: mode\n // >>> Values\n ,\n displayValues: displayValues,\n onDisplayValuesChange: onDisplayValuesChange\n // >>> Search\n ,\n searchValue: mergedSearchValue,\n onSearch: onInternalSearch,\n autoClearSearchValue: autoClearSearchValue,\n onSearchSplit: onInternalSearchSplit,\n dropdownMatchSelectWidth: dropdownMatchSelectWidth\n // >>> OptionList\n ,\n OptionList: OptionList,\n emptyOptions: !displayOptions.length\n // >>> Accessibility\n ,\n activeValue: activeValue,\n activeDescendantId: \"\".concat(mergedId, \"_list_\").concat(accessibilityIndex)\n })));\n});\nif (process.env.NODE_ENV !== 'production') {\n Select.displayName = 'Select';\n}\nvar TypedSelect = Select;\nTypedSelect.Option = Option;\nTypedSelect.OptGroup = OptGroup;\nexport default TypedSelect;","import * as React from 'react';\nimport { convertChildrenToData } from \"../utils/legacyUtil\";\n\n/**\n * Parse `children` to `options` if `options` is not provided.\n * Then flatten the `options`.\n */\nexport default function useOptions(options, children, fieldNames, optionFilterProp, optionLabelProp) {\n return React.useMemo(function () {\n var mergedOptions = options;\n var childrenAsData = !options;\n if (childrenAsData) {\n mergedOptions = convertChildrenToData(children);\n }\n var valueOptions = new Map();\n var labelOptions = new Map();\n var setLabelOptions = function setLabelOptions(labelOptionsMap, option, key) {\n if (key && typeof key === 'string') {\n labelOptionsMap.set(option[key], option);\n }\n };\n function dig(optionList) {\n var isChildren = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n // for loop to speed up collection speed\n for (var i = 0; i < optionList.length; i += 1) {\n var option = optionList[i];\n if (!option[fieldNames.options] || isChildren) {\n valueOptions.set(option[fieldNames.value], option);\n setLabelOptions(labelOptions, option, fieldNames.label);\n // https://github.com/ant-design/ant-design/issues/35304\n setLabelOptions(labelOptions, option, optionFilterProp);\n setLabelOptions(labelOptions, option, optionLabelProp);\n } else {\n dig(option[fieldNames.options], true);\n }\n }\n }\n dig(mergedOptions);\n return {\n options: mergedOptions,\n valueOptions: valueOptions,\n labelOptions: labelOptions\n };\n }, [options, children, fieldNames, optionFilterProp, optionLabelProp]);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\n/**\n * Cache `value` related LabeledValue & options.\n */\nexport default (function (labeledValues, valueOptions) {\n var cacheRef = React.useRef({\n values: new Map(),\n options: new Map()\n });\n var filledLabeledValues = React.useMemo(function () {\n var _cacheRef$current = cacheRef.current,\n prevValueCache = _cacheRef$current.values,\n prevOptionCache = _cacheRef$current.options;\n\n // Fill label by cache\n var patchedValues = labeledValues.map(function (item) {\n if (item.label === undefined) {\n var _prevValueCache$get;\n return _objectSpread(_objectSpread({}, item), {}, {\n label: (_prevValueCache$get = prevValueCache.get(item.value)) === null || _prevValueCache$get === void 0 ? void 0 : _prevValueCache$get.label\n });\n }\n return item;\n });\n\n // Refresh cache\n var valueCache = new Map();\n var optionCache = new Map();\n patchedValues.forEach(function (item) {\n valueCache.set(item.value, item);\n optionCache.set(item.value, valueOptions.get(item.value) || prevOptionCache.get(item.value));\n });\n cacheRef.current.values = valueCache;\n cacheRef.current.options = optionCache;\n return patchedValues;\n }, [labeledValues, valueOptions]);\n var getOption = React.useCallback(function (val) {\n return valueOptions.get(val) || cacheRef.current.options.get(val);\n }, [valueOptions]);\n return [filledLabeledValues, getOption];\n});","import Select from \"./Select\";\nimport Option from \"./Option\";\nimport OptGroup from \"./OptGroup\";\nimport BaseSelect from \"./BaseSelect\";\nimport useBaseProps from \"./hooks/useBaseProps\";\nexport { Option, OptGroup, BaseSelect, useBaseProps };\nexport default Select;","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\nvar targetOffset = [0, 0];\nexport var placements = {\n left: {\n points: ['cr', 'cl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset: targetOffset\n },\n right: {\n points: ['cl', 'cr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n top: {\n points: ['bc', 'tc'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n bottom: {\n points: ['tc', 'bc'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n rightBottom: {\n points: ['bl', 'br'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n leftBottom: {\n points: ['br', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset: targetOffset\n }\n};\nexport default placements;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nvar Indent = function Indent(_ref) {\n var prefixCls = _ref.prefixCls,\n level = _ref.level,\n isStart = _ref.isStart,\n isEnd = _ref.isEnd;\n var baseClassName = \"\".concat(prefixCls, \"-indent-unit\");\n var list = [];\n for (var i = 0; i < level; i += 1) {\n var _classNames;\n list.push( /*#__PURE__*/React.createElement(\"span\", {\n key: i,\n className: classNames(baseClassName, (_classNames = {}, _defineProperty(_classNames, \"\".concat(baseClassName, \"-start\"), isStart[i]), _defineProperty(_classNames, \"\".concat(baseClassName, \"-end\"), isEnd[i]), _classNames))\n }));\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": \"true\",\n className: \"\".concat(prefixCls, \"-indent\")\n }, list);\n};\nexport default /*#__PURE__*/React.memo(Indent);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"eventKey\", \"className\", \"style\", \"dragOver\", \"dragOverGapTop\", \"dragOverGapBottom\", \"isLeaf\", \"isStart\", \"isEnd\", \"expanded\", \"selected\", \"checked\", \"halfChecked\", \"loading\", \"domRef\", \"active\", \"data\", \"onMouseMove\", \"selectable\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\n// @ts-ignore\nimport { TreeContext } from './contextTypes';\nimport Indent from './Indent';\nimport { convertNodePropsToEventData } from './utils/treeUtil';\nvar ICON_OPEN = 'open';\nvar ICON_CLOSE = 'close';\nvar defaultTitle = '---';\nvar InternalTreeNode = /*#__PURE__*/function (_React$Component) {\n _inherits(InternalTreeNode, _React$Component);\n var _super = _createSuper(InternalTreeNode);\n function InternalTreeNode() {\n var _this;\n _classCallCheck(this, InternalTreeNode);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.state = {\n dragNodeHighlight: false\n };\n _this.selectHandle = void 0;\n _this.onSelectorClick = function (e) {\n // Click trigger before select/check operation\n var onNodeClick = _this.props.context.onNodeClick;\n onNodeClick(e, convertNodePropsToEventData(_this.props));\n if (_this.isSelectable()) {\n _this.onSelect(e);\n } else {\n _this.onCheck(e);\n }\n };\n _this.onSelectorDoubleClick = function (e) {\n var onNodeDoubleClick = _this.props.context.onNodeDoubleClick;\n onNodeDoubleClick(e, convertNodePropsToEventData(_this.props));\n };\n _this.onSelect = function (e) {\n if (_this.isDisabled()) return;\n var onNodeSelect = _this.props.context.onNodeSelect;\n e.preventDefault();\n onNodeSelect(e, convertNodePropsToEventData(_this.props));\n };\n _this.onCheck = function (e) {\n if (_this.isDisabled()) return;\n var _this$props = _this.props,\n disableCheckbox = _this$props.disableCheckbox,\n checked = _this$props.checked;\n var onNodeCheck = _this.props.context.onNodeCheck;\n if (!_this.isCheckable() || disableCheckbox) return;\n e.preventDefault();\n var targetChecked = !checked;\n onNodeCheck(e, convertNodePropsToEventData(_this.props), targetChecked);\n };\n _this.onMouseEnter = function (e) {\n var onNodeMouseEnter = _this.props.context.onNodeMouseEnter;\n onNodeMouseEnter(e, convertNodePropsToEventData(_this.props));\n };\n _this.onMouseLeave = function (e) {\n var onNodeMouseLeave = _this.props.context.onNodeMouseLeave;\n onNodeMouseLeave(e, convertNodePropsToEventData(_this.props));\n };\n _this.onContextMenu = function (e) {\n var onNodeContextMenu = _this.props.context.onNodeContextMenu;\n onNodeContextMenu(e, convertNodePropsToEventData(_this.props));\n };\n _this.onDragStart = function (e) {\n var onNodeDragStart = _this.props.context.onNodeDragStart;\n e.stopPropagation();\n _this.setState({\n dragNodeHighlight: true\n });\n onNodeDragStart(e, _assertThisInitialized(_this));\n try {\n // ie throw error\n // firefox-need-it\n e.dataTransfer.setData('text/plain', '');\n } catch (error) {\n // empty\n }\n };\n _this.onDragEnter = function (e) {\n var onNodeDragEnter = _this.props.context.onNodeDragEnter;\n e.preventDefault();\n e.stopPropagation();\n onNodeDragEnter(e, _assertThisInitialized(_this));\n };\n _this.onDragOver = function (e) {\n var onNodeDragOver = _this.props.context.onNodeDragOver;\n e.preventDefault();\n e.stopPropagation();\n onNodeDragOver(e, _assertThisInitialized(_this));\n };\n _this.onDragLeave = function (e) {\n var onNodeDragLeave = _this.props.context.onNodeDragLeave;\n e.stopPropagation();\n onNodeDragLeave(e, _assertThisInitialized(_this));\n };\n _this.onDragEnd = function (e) {\n var onNodeDragEnd = _this.props.context.onNodeDragEnd;\n e.stopPropagation();\n _this.setState({\n dragNodeHighlight: false\n });\n onNodeDragEnd(e, _assertThisInitialized(_this));\n };\n _this.onDrop = function (e) {\n var onNodeDrop = _this.props.context.onNodeDrop;\n e.preventDefault();\n e.stopPropagation();\n _this.setState({\n dragNodeHighlight: false\n });\n onNodeDrop(e, _assertThisInitialized(_this));\n };\n // Disabled item still can be switch\n _this.onExpand = function (e) {\n var _this$props2 = _this.props,\n loading = _this$props2.loading,\n onNodeExpand = _this$props2.context.onNodeExpand;\n if (loading) return;\n onNodeExpand(e, convertNodePropsToEventData(_this.props));\n };\n // Drag usage\n _this.setSelectHandle = function (node) {\n _this.selectHandle = node;\n };\n _this.getNodeState = function () {\n var expanded = _this.props.expanded;\n if (_this.isLeaf()) {\n return null;\n }\n return expanded ? ICON_OPEN : ICON_CLOSE;\n };\n _this.hasChildren = function () {\n var eventKey = _this.props.eventKey;\n var keyEntities = _this.props.context.keyEntities;\n var _ref = keyEntities[eventKey] || {},\n children = _ref.children;\n return !!(children || []).length;\n };\n _this.isLeaf = function () {\n var _this$props3 = _this.props,\n isLeaf = _this$props3.isLeaf,\n loaded = _this$props3.loaded;\n var loadData = _this.props.context.loadData;\n var hasChildren = _this.hasChildren();\n if (isLeaf === false) {\n return false;\n }\n return isLeaf || !loadData && !hasChildren || loadData && loaded && !hasChildren;\n };\n _this.isDisabled = function () {\n var disabled = _this.props.disabled;\n var treeDisabled = _this.props.context.disabled;\n return !!(treeDisabled || disabled);\n };\n _this.isCheckable = function () {\n var checkable = _this.props.checkable;\n var treeCheckable = _this.props.context.checkable;\n // Return false if tree or treeNode is not checkable\n if (!treeCheckable || checkable === false) return false;\n return treeCheckable;\n };\n // Load data to avoid default expanded tree without data\n _this.syncLoadData = function (props) {\n var expanded = props.expanded,\n loading = props.loading,\n loaded = props.loaded;\n var _this$props$context = _this.props.context,\n loadData = _this$props$context.loadData,\n onNodeLoad = _this$props$context.onNodeLoad;\n if (loading) {\n return;\n }\n // read from state to avoid loadData at same time\n if (loadData && expanded && !_this.isLeaf()) {\n // We needn't reload data when has children in sync logic\n // It's only needed in node expanded\n if (!_this.hasChildren() && !loaded) {\n onNodeLoad(convertNodePropsToEventData(_this.props));\n }\n }\n };\n _this.isDraggable = function () {\n var _this$props4 = _this.props,\n data = _this$props4.data,\n draggable = _this$props4.context.draggable;\n return !!(draggable && (!draggable.nodeDraggable || draggable.nodeDraggable(data)));\n };\n // ==================== Render: Drag Handler ====================\n _this.renderDragHandler = function () {\n var _this$props$context2 = _this.props.context,\n draggable = _this$props$context2.draggable,\n prefixCls = _this$props$context2.prefixCls;\n return (draggable === null || draggable === void 0 ? void 0 : draggable.icon) ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-draggable-icon\")\n }, draggable.icon) : null;\n };\n // ====================== Render: Switcher ======================\n _this.renderSwitcherIconDom = function (isLeaf) {\n var switcherIconFromProps = _this.props.switcherIcon;\n var switcherIconFromCtx = _this.props.context.switcherIcon;\n var switcherIcon = switcherIconFromProps || switcherIconFromCtx;\n // if switcherIconDom is null, no render switcher span\n if (typeof switcherIcon === 'function') {\n return switcherIcon(_objectSpread(_objectSpread({}, _this.props), {}, {\n isLeaf: isLeaf\n }));\n }\n return switcherIcon;\n };\n // Switcher\n _this.renderSwitcher = function () {\n var expanded = _this.props.expanded;\n var prefixCls = _this.props.context.prefixCls;\n if (_this.isLeaf()) {\n // if switcherIconDom is null, no render switcher span\n var _switcherIconDom = _this.renderSwitcherIconDom(true);\n return _switcherIconDom !== false ? /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-switcher\"), \"\".concat(prefixCls, \"-switcher-noop\"))\n }, _switcherIconDom) : null;\n }\n var switcherCls = classNames(\"\".concat(prefixCls, \"-switcher\"), \"\".concat(prefixCls, \"-switcher_\").concat(expanded ? ICON_OPEN : ICON_CLOSE));\n var switcherIconDom = _this.renderSwitcherIconDom(false);\n return switcherIconDom !== false ? /*#__PURE__*/React.createElement(\"span\", {\n onClick: _this.onExpand,\n className: switcherCls\n }, switcherIconDom) : null;\n };\n // ====================== Render: Checkbox ======================\n // Checkbox\n _this.renderCheckbox = function () {\n var _this$props5 = _this.props,\n checked = _this$props5.checked,\n halfChecked = _this$props5.halfChecked,\n disableCheckbox = _this$props5.disableCheckbox;\n var prefixCls = _this.props.context.prefixCls;\n var disabled = _this.isDisabled();\n var checkable = _this.isCheckable();\n if (!checkable) return null;\n // [Legacy] Custom element should be separate with `checkable` in future\n var $custom = typeof checkable !== 'boolean' ? checkable : null;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-checkbox\"), checked && \"\".concat(prefixCls, \"-checkbox-checked\"), !checked && halfChecked && \"\".concat(prefixCls, \"-checkbox-indeterminate\"), (disabled || disableCheckbox) && \"\".concat(prefixCls, \"-checkbox-disabled\")),\n onClick: _this.onCheck\n }, $custom);\n };\n // ==================== Render: Title + Icon ====================\n _this.renderIcon = function () {\n var loading = _this.props.loading;\n var prefixCls = _this.props.context.prefixCls;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-iconEle\"), \"\".concat(prefixCls, \"-icon__\").concat(_this.getNodeState() || 'docu'), loading && \"\".concat(prefixCls, \"-icon_loading\"))\n });\n };\n // Icon + Title\n _this.renderSelector = function () {\n var dragNodeHighlight = _this.state.dragNodeHighlight;\n var _this$props6 = _this.props,\n _this$props6$title = _this$props6.title,\n title = _this$props6$title === void 0 ? defaultTitle : _this$props6$title,\n selected = _this$props6.selected,\n icon = _this$props6.icon,\n loading = _this$props6.loading,\n data = _this$props6.data;\n var _this$props$context3 = _this.props.context,\n prefixCls = _this$props$context3.prefixCls,\n showIcon = _this$props$context3.showIcon,\n treeIcon = _this$props$context3.icon,\n loadData = _this$props$context3.loadData,\n titleRender = _this$props$context3.titleRender;\n var disabled = _this.isDisabled();\n var wrapClass = \"\".concat(prefixCls, \"-node-content-wrapper\");\n // Icon - Still show loading icon when loading without showIcon\n var $icon;\n if (showIcon) {\n var currentIcon = icon || treeIcon;\n $icon = currentIcon ? /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(\"\".concat(prefixCls, \"-iconEle\"), \"\".concat(prefixCls, \"-icon__customize\"))\n }, typeof currentIcon === 'function' ? currentIcon(_this.props) : currentIcon) : _this.renderIcon();\n } else if (loadData && loading) {\n $icon = _this.renderIcon();\n }\n // Title\n var titleNode;\n if (typeof title === 'function') {\n titleNode = title(data);\n } else if (titleRender) {\n titleNode = titleRender(data);\n } else {\n titleNode = title;\n }\n var $title = /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-title\")\n }, titleNode);\n return /*#__PURE__*/React.createElement(\"span\", {\n ref: _this.setSelectHandle,\n title: typeof title === 'string' ? title : '',\n className: classNames(\"\".concat(wrapClass), \"\".concat(wrapClass, \"-\").concat(_this.getNodeState() || 'normal'), !disabled && (selected || dragNodeHighlight) && \"\".concat(prefixCls, \"-node-selected\")),\n onMouseEnter: _this.onMouseEnter,\n onMouseLeave: _this.onMouseLeave,\n onContextMenu: _this.onContextMenu,\n onClick: _this.onSelectorClick,\n onDoubleClick: _this.onSelectorDoubleClick\n }, $icon, $title, _this.renderDropIndicator());\n };\n // =================== Render: Drop Indicator ===================\n _this.renderDropIndicator = function () {\n var _this$props7 = _this.props,\n disabled = _this$props7.disabled,\n eventKey = _this$props7.eventKey;\n var _this$props$context4 = _this.props.context,\n draggable = _this$props$context4.draggable,\n dropLevelOffset = _this$props$context4.dropLevelOffset,\n dropPosition = _this$props$context4.dropPosition,\n prefixCls = _this$props$context4.prefixCls,\n indent = _this$props$context4.indent,\n dropIndicatorRender = _this$props$context4.dropIndicatorRender,\n dragOverNodeKey = _this$props$context4.dragOverNodeKey,\n direction = _this$props$context4.direction;\n var rootDraggable = !!draggable;\n // allowDrop is calculated in Tree.tsx, there is no need for calc it here\n var showIndicator = !disabled && rootDraggable && dragOverNodeKey === eventKey;\n return showIndicator ? dropIndicatorRender({\n dropPosition: dropPosition,\n dropLevelOffset: dropLevelOffset,\n indent: indent,\n prefixCls: prefixCls,\n direction: direction\n }) : null;\n };\n return _this;\n }\n _createClass(InternalTreeNode, [{\n key: \"componentDidMount\",\n value:\n // Isomorphic needn't load data in server side\n function componentDidMount() {\n this.syncLoadData(this.props);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.syncLoadData(this.props);\n }\n }, {\n key: \"isSelectable\",\n value: function isSelectable() {\n var selectable = this.props.selectable;\n var treeSelectable = this.props.context.selectable;\n // Ignore when selectable is undefined or null\n if (typeof selectable === 'boolean') {\n return selectable;\n }\n return treeSelectable;\n }\n }, {\n key: \"render\",\n value:\n // =========================== Render ===========================\n function render() {\n var _classNames;\n var _this$props8 = this.props,\n eventKey = _this$props8.eventKey,\n className = _this$props8.className,\n style = _this$props8.style,\n dragOver = _this$props8.dragOver,\n dragOverGapTop = _this$props8.dragOverGapTop,\n dragOverGapBottom = _this$props8.dragOverGapBottom,\n isLeaf = _this$props8.isLeaf,\n isStart = _this$props8.isStart,\n isEnd = _this$props8.isEnd,\n expanded = _this$props8.expanded,\n selected = _this$props8.selected,\n checked = _this$props8.checked,\n halfChecked = _this$props8.halfChecked,\n loading = _this$props8.loading,\n domRef = _this$props8.domRef,\n active = _this$props8.active,\n data = _this$props8.data,\n onMouseMove = _this$props8.onMouseMove,\n selectable = _this$props8.selectable,\n otherProps = _objectWithoutProperties(_this$props8, _excluded);\n var _this$props$context5 = this.props.context,\n prefixCls = _this$props$context5.prefixCls,\n filterTreeNode = _this$props$context5.filterTreeNode,\n keyEntities = _this$props$context5.keyEntities,\n dropContainerKey = _this$props$context5.dropContainerKey,\n dropTargetKey = _this$props$context5.dropTargetKey,\n draggingNodeKey = _this$props$context5.draggingNodeKey;\n var disabled = this.isDisabled();\n var dataOrAriaAttributeProps = pickAttrs(otherProps, {\n aria: true,\n data: true\n });\n var _ref2 = keyEntities[eventKey] || {},\n level = _ref2.level;\n var isEndNode = isEnd[isEnd.length - 1];\n var mergedDraggable = this.isDraggable();\n var draggableWithoutDisabled = !disabled && mergedDraggable;\n var dragging = draggingNodeKey === eventKey;\n var ariaSelected = selectable !== undefined ? {\n 'aria-selected': !!selectable\n } : undefined;\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: domRef,\n className: classNames(className, \"\".concat(prefixCls, \"-treenode\"), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-disabled\"), disabled), _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-switcher-\").concat(expanded ? 'open' : 'close'), !isLeaf), _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-checkbox-checked\"), checked), _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-checkbox-indeterminate\"), halfChecked), _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-selected\"), selected), _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-loading\"), loading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-active\"), active), _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-leaf-last\"), isEndNode), _defineProperty(_classNames, \"\".concat(prefixCls, \"-treenode-draggable\"), mergedDraggable), _defineProperty(_classNames, \"dragging\", dragging), _defineProperty(_classNames, 'drop-target', dropTargetKey === eventKey), _defineProperty(_classNames, 'drop-container', dropContainerKey === eventKey), _defineProperty(_classNames, 'drag-over', !disabled && dragOver), _defineProperty(_classNames, 'drag-over-gap-top', !disabled && dragOverGapTop), _defineProperty(_classNames, 'drag-over-gap-bottom', !disabled && dragOverGapBottom), _defineProperty(_classNames, 'filter-node', filterTreeNode && filterTreeNode(convertNodePropsToEventData(this.props))), _classNames)),\n style: style\n // Draggable config\n ,\n draggable: draggableWithoutDisabled,\n \"aria-grabbed\": dragging,\n onDragStart: draggableWithoutDisabled ? this.onDragStart : undefined\n // Drop config\n ,\n onDragEnter: mergedDraggable ? this.onDragEnter : undefined,\n onDragOver: mergedDraggable ? this.onDragOver : undefined,\n onDragLeave: mergedDraggable ? this.onDragLeave : undefined,\n onDrop: mergedDraggable ? this.onDrop : undefined,\n onDragEnd: mergedDraggable ? this.onDragEnd : undefined,\n onMouseMove: onMouseMove\n }, ariaSelected, dataOrAriaAttributeProps), /*#__PURE__*/React.createElement(Indent, {\n prefixCls: prefixCls,\n level: level,\n isStart: isStart,\n isEnd: isEnd\n }), this.renderDragHandler(), this.renderSwitcher(), this.renderCheckbox(), this.renderSelector());\n }\n }]);\n return InternalTreeNode;\n}(React.Component);\nvar ContextTreeNode = function ContextTreeNode(props) {\n return /*#__PURE__*/React.createElement(TreeContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(InternalTreeNode, _extends({}, props, {\n context: context\n }));\n });\n};\nContextTreeNode.displayName = 'TreeNode';\nContextTreeNode.isTreeNode = 1;\nexport { InternalTreeNode };\nexport default ContextTreeNode;","/**\n * Webpack has bug for import loop, which is not the same behavior as ES module.\n * When util.js imports the TreeNode for tree generate will cause treeContextTypes be empty.\n */\nimport * as React from 'react';\nexport var TreeContext = /*#__PURE__*/React.createContext(null);","export default function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure \" + obj);\n}","import _objectDestructuringEmpty from \"@babel/runtime/helpers/esm/objectDestructuringEmpty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"style\", \"motion\", \"motionNodes\", \"motionType\", \"onMotionStart\", \"onMotionEnd\", \"active\", \"treeNodeRequiredProps\"];\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport TreeNode from './TreeNode';\nimport { getTreeNodeProps } from './utils/treeUtil';\nimport { TreeContext } from './contextTypes';\nvar MotionTreeNode = function MotionTreeNode(_ref, ref) {\n var className = _ref.className,\n style = _ref.style,\n motion = _ref.motion,\n motionNodes = _ref.motionNodes,\n motionType = _ref.motionType,\n onOriginMotionStart = _ref.onMotionStart,\n onOriginMotionEnd = _ref.onMotionEnd,\n active = _ref.active,\n treeNodeRequiredProps = _ref.treeNodeRequiredProps,\n props = _objectWithoutProperties(_ref, _excluded);\n var _React$useState = React.useState(true),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n visible = _React$useState2[0],\n setVisible = _React$useState2[1];\n var _React$useContext = React.useContext(TreeContext),\n prefixCls = _React$useContext.prefixCls;\n var motionedRef = React.useRef(false);\n var onMotionEnd = function onMotionEnd() {\n if (!motionedRef.current) {\n onOriginMotionEnd();\n }\n motionedRef.current = true;\n };\n useEffect(function () {\n if (motionNodes && motionType === 'hide' && visible) {\n setVisible(false);\n }\n }, [motionNodes]);\n var reruningEffectFlag = null;\n useEffect(function () {\n // Trigger motion only when patched\n if (motionNodes) {\n if (reruningEffectFlag === null) {\n onOriginMotionStart();\n } else {\n clearTimeout(reruningEffectFlag);\n }\n }\n return function () {\n if (motionNodes) {\n reruningEffectFlag = setTimeout(onMotionEnd, 0);\n }\n };\n }, []);\n if (motionNodes) {\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n ref: ref,\n visible: visible\n }, motion, {\n motionAppear: motionType === 'show',\n onAppearEnd: onMotionEnd,\n onLeaveEnd: onMotionEnd\n }), function (_ref2, motionRef) {\n var motionClassName = _ref2.className,\n motionStyle = _ref2.style;\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: motionRef,\n className: classNames(\"\".concat(prefixCls, \"-treenode-motion\"), motionClassName),\n style: motionStyle\n }, motionNodes.map(function (treeNode) {\n var restProps = _extends({}, (_objectDestructuringEmpty(treeNode.data), treeNode.data)),\n title = treeNode.title,\n key = treeNode.key,\n isStart = treeNode.isStart,\n isEnd = treeNode.isEnd;\n delete restProps.children;\n var treeNodeProps = getTreeNodeProps(key, treeNodeRequiredProps);\n return /*#__PURE__*/React.createElement(TreeNode, _extends({}, restProps, treeNodeProps, {\n title: title,\n active: active,\n data: treeNode.data,\n key: key,\n isStart: isStart,\n isEnd: isEnd\n }));\n }));\n });\n }\n return /*#__PURE__*/React.createElement(TreeNode, _extends({\n domRef: ref,\n className: className,\n style: style\n }, props, {\n active: active\n }));\n};\nMotionTreeNode.displayName = 'MotionTreeNode';\nvar RefMotionTreeNode = /*#__PURE__*/React.forwardRef(MotionTreeNode);\nexport default RefMotionTreeNode;","export function findExpandedKeys() {\n var prev = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var next = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var prevLen = prev.length;\n var nextLen = next.length;\n if (Math.abs(prevLen - nextLen) !== 1) {\n return {\n add: false,\n key: null\n };\n }\n function find(shorter, longer) {\n var cache = new Map();\n shorter.forEach(function (key) {\n cache.set(key, true);\n });\n var keys = longer.filter(function (key) {\n return !cache.has(key);\n });\n return keys.length === 1 ? keys[0] : null;\n }\n if (prevLen < nextLen) {\n return {\n add: true,\n key: find(prev, next)\n };\n }\n return {\n add: false,\n key: find(next, prev)\n };\n}\nexport function getExpandRange(shorter, longer, key) {\n var shorterStartIndex = shorter.findIndex(function (data) {\n return data.key === key;\n });\n var shorterEndNode = shorter[shorterStartIndex + 1];\n var longerStartIndex = longer.findIndex(function (data) {\n return data.key === key;\n });\n if (shorterEndNode) {\n var longerEndIndex = longer.findIndex(function (data) {\n return data.key === shorterEndNode.key;\n });\n return longer.slice(longerStartIndex + 1, longerEndIndex);\n }\n return longer.slice(longerStartIndex + 1);\n}","import _objectDestructuringEmpty from \"@babel/runtime/helpers/esm/objectDestructuringEmpty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"data\", \"selectable\", \"checkable\", \"expandedKeys\", \"selectedKeys\", \"checkedKeys\", \"loadedKeys\", \"loadingKeys\", \"halfCheckedKeys\", \"keyEntities\", \"disabled\", \"dragging\", \"dragOverNodeKey\", \"dropPosition\", \"motion\", \"height\", \"itemHeight\", \"virtual\", \"focusable\", \"activeItem\", \"focused\", \"tabIndex\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onActiveChange\", \"onListChangeStart\", \"onListChangeEnd\"];\n/**\n * Handle virtual list of the TreeNodes.\n */\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport VirtualList from 'rc-virtual-list';\nimport * as React from 'react';\nimport MotionTreeNode from './MotionTreeNode';\nimport { findExpandedKeys, getExpandRange } from './utils/diffUtil';\nimport { getKey, getTreeNodeProps } from './utils/treeUtil';\nvar HIDDEN_STYLE = {\n width: 0,\n height: 0,\n display: 'flex',\n overflow: 'hidden',\n opacity: 0,\n border: 0,\n padding: 0,\n margin: 0\n};\nvar noop = function noop() {};\nexport var MOTION_KEY = \"RC_TREE_MOTION_\".concat(Math.random());\nvar MotionNode = {\n key: MOTION_KEY\n};\nexport var MotionEntity = {\n key: MOTION_KEY,\n level: 0,\n index: 0,\n pos: '0',\n node: MotionNode,\n nodes: [MotionNode]\n};\nvar MotionFlattenData = {\n parent: null,\n children: [],\n pos: MotionEntity.pos,\n data: MotionNode,\n title: null,\n key: MOTION_KEY,\n /** Hold empty list here since we do not use it */\n isStart: [],\n isEnd: []\n};\n/**\n * We only need get visible content items to play the animation.\n */\nexport function getMinimumRangeTransitionRange(list, virtual, height, itemHeight) {\n if (virtual === false || !height) {\n return list;\n }\n return list.slice(0, Math.ceil(height / itemHeight) + 1);\n}\nfunction itemKey(item) {\n var key = item.key,\n pos = item.pos;\n return getKey(key, pos);\n}\nfunction getAccessibilityPath(item) {\n var path = String(item.data.key);\n var current = item;\n while (current.parent) {\n current = current.parent;\n path = \"\".concat(current.data.key, \" > \").concat(path);\n }\n return path;\n}\nvar NodeList = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n data = props.data,\n selectable = props.selectable,\n checkable = props.checkable,\n expandedKeys = props.expandedKeys,\n selectedKeys = props.selectedKeys,\n checkedKeys = props.checkedKeys,\n loadedKeys = props.loadedKeys,\n loadingKeys = props.loadingKeys,\n halfCheckedKeys = props.halfCheckedKeys,\n keyEntities = props.keyEntities,\n disabled = props.disabled,\n dragging = props.dragging,\n dragOverNodeKey = props.dragOverNodeKey,\n dropPosition = props.dropPosition,\n motion = props.motion,\n height = props.height,\n itemHeight = props.itemHeight,\n virtual = props.virtual,\n focusable = props.focusable,\n activeItem = props.activeItem,\n focused = props.focused,\n tabIndex = props.tabIndex,\n onKeyDown = props.onKeyDown,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n onActiveChange = props.onActiveChange,\n onListChangeStart = props.onListChangeStart,\n onListChangeEnd = props.onListChangeEnd,\n domProps = _objectWithoutProperties(props, _excluded);\n // =============================== Ref ================================\n var listRef = React.useRef(null);\n var indentMeasurerRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return {\n scrollTo: function scrollTo(scroll) {\n listRef.current.scrollTo(scroll);\n },\n getIndentWidth: function getIndentWidth() {\n return indentMeasurerRef.current.offsetWidth;\n }\n };\n });\n // ============================== Motion ==============================\n var _React$useState = React.useState(expandedKeys),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n prevExpandedKeys = _React$useState2[0],\n setPrevExpandedKeys = _React$useState2[1];\n var _React$useState3 = React.useState(data),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n prevData = _React$useState4[0],\n setPrevData = _React$useState4[1];\n var _React$useState5 = React.useState(data),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n transitionData = _React$useState6[0],\n setTransitionData = _React$useState6[1];\n var _React$useState7 = React.useState([]),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n transitionRange = _React$useState8[0],\n setTransitionRange = _React$useState8[1];\n var _React$useState9 = React.useState(null),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n motionType = _React$useState10[0],\n setMotionType = _React$useState10[1];\n // When motion end but data change, this will makes data back to previous one\n var dataRef = React.useRef(data);\n dataRef.current = data;\n function onMotionEnd() {\n var latestData = dataRef.current;\n setPrevData(latestData);\n setTransitionData(latestData);\n setTransitionRange([]);\n setMotionType(null);\n onListChangeEnd();\n }\n // Do animation if expanded keys changed\n // layoutEffect here to avoid blink of node removing\n useLayoutEffect(function () {\n setPrevExpandedKeys(expandedKeys);\n var diffExpanded = findExpandedKeys(prevExpandedKeys, expandedKeys);\n if (diffExpanded.key !== null) {\n if (diffExpanded.add) {\n var keyIndex = prevData.findIndex(function (_ref) {\n var key = _ref.key;\n return key === diffExpanded.key;\n });\n var rangeNodes = getMinimumRangeTransitionRange(getExpandRange(prevData, data, diffExpanded.key), virtual, height, itemHeight);\n var newTransitionData = prevData.slice();\n newTransitionData.splice(keyIndex + 1, 0, MotionFlattenData);\n setTransitionData(newTransitionData);\n setTransitionRange(rangeNodes);\n setMotionType('show');\n } else {\n var _keyIndex = data.findIndex(function (_ref2) {\n var key = _ref2.key;\n return key === diffExpanded.key;\n });\n var _rangeNodes = getMinimumRangeTransitionRange(getExpandRange(data, prevData, diffExpanded.key), virtual, height, itemHeight);\n var _newTransitionData = data.slice();\n _newTransitionData.splice(_keyIndex + 1, 0, MotionFlattenData);\n setTransitionData(_newTransitionData);\n setTransitionRange(_rangeNodes);\n setMotionType('hide');\n }\n } else if (prevData !== data) {\n // If whole data changed, we just refresh the list\n setPrevData(data);\n setTransitionData(data);\n }\n }, [expandedKeys, data]);\n // We should clean up motion if is changed by dragging\n React.useEffect(function () {\n if (!dragging) {\n onMotionEnd();\n }\n }, [dragging]);\n var mergedData = motion ? transitionData : data;\n var treeNodeRequiredProps = {\n expandedKeys: expandedKeys,\n selectedKeys: selectedKeys,\n loadedKeys: loadedKeys,\n loadingKeys: loadingKeys,\n checkedKeys: checkedKeys,\n halfCheckedKeys: halfCheckedKeys,\n dragOverNodeKey: dragOverNodeKey,\n dropPosition: dropPosition,\n keyEntities: keyEntities\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, focused && activeItem && /*#__PURE__*/React.createElement(\"span\", {\n style: HIDDEN_STYLE,\n \"aria-live\": \"assertive\"\n }, getAccessibilityPath(activeItem)), /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(\"input\", {\n style: HIDDEN_STYLE,\n disabled: focusable === false || disabled,\n tabIndex: focusable !== false ? tabIndex : null,\n onKeyDown: onKeyDown,\n onFocus: onFocus,\n onBlur: onBlur,\n value: \"\",\n onChange: noop,\n \"aria-label\": \"for screen reader\"\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-treenode\"),\n \"aria-hidden\": true,\n style: {\n position: 'absolute',\n pointerEvents: 'none',\n visibility: 'hidden',\n height: 0,\n overflow: 'hidden',\n border: 0,\n padding: 0\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-indent\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: indentMeasurerRef,\n className: \"\".concat(prefixCls, \"-indent-unit\")\n }))), /*#__PURE__*/React.createElement(VirtualList, _extends({}, domProps, {\n data: mergedData,\n itemKey: itemKey,\n height: height,\n fullHeight: false,\n virtual: virtual,\n itemHeight: itemHeight,\n prefixCls: \"\".concat(prefixCls, \"-list\"),\n ref: listRef,\n onVisibleChange: function onVisibleChange(originList, fullList) {\n var originSet = new Set(originList);\n var restList = fullList.filter(function (item) {\n return !originSet.has(item);\n });\n // Motion node is not render. Skip motion\n if (restList.some(function (item) {\n return itemKey(item) === MOTION_KEY;\n })) {\n onMotionEnd();\n }\n }\n }), function (treeNode) {\n var pos = treeNode.pos,\n restProps = _extends({}, (_objectDestructuringEmpty(treeNode.data), treeNode.data)),\n title = treeNode.title,\n key = treeNode.key,\n isStart = treeNode.isStart,\n isEnd = treeNode.isEnd;\n var mergedKey = getKey(key, pos);\n delete restProps.key;\n delete restProps.children;\n var treeNodeProps = getTreeNodeProps(mergedKey, treeNodeRequiredProps);\n return /*#__PURE__*/React.createElement(MotionTreeNode, _extends({}, restProps, treeNodeProps, {\n title: title,\n active: !!activeItem && key === activeItem.key,\n pos: pos,\n data: treeNode.data,\n isStart: isStart,\n isEnd: isEnd,\n motion: motion,\n motionNodes: key === MOTION_KEY ? transitionRange : null,\n motionType: motionType,\n onMotionStart: onListChangeStart,\n onMotionEnd: onMotionEnd,\n treeNodeRequiredProps: treeNodeRequiredProps,\n onMouseMove: function onMouseMove() {\n onActiveChange(null);\n }\n }));\n }));\n});\nNodeList.displayName = 'NodeList';\nexport default NodeList;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\n// TODO: https://www.w3.org/TR/2017/NOTE-wai-aria-practices-1.1-20171214/examples/treeview/treeview-2/treeview-2a.html\n// Fully accessibility support\nimport * as React from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport warning from \"rc-util/es/warning\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport classNames from 'classnames';\nimport { TreeContext } from './contextTypes';\nimport { getDragChildrenKeys, parseCheckedKeys, conductExpandParent, calcSelectedKeys, calcDropPosition, arrAdd, arrDel, posToArr } from './util';\nimport { flattenTreeData, convertTreeToData, convertDataToEntities, warningWithoutKey, convertNodePropsToEventData, getTreeNodeProps, fillFieldNames } from './utils/treeUtil';\nimport NodeList, { MOTION_KEY, MotionEntity } from './NodeList';\nimport TreeNode from './TreeNode';\nimport { conductCheck } from './utils/conductUtil';\nimport DropIndicator from './DropIndicator';\nvar MAX_RETRY_TIMES = 10;\nvar Tree = /*#__PURE__*/function (_React$Component) {\n _inherits(Tree, _React$Component);\n var _super = _createSuper(Tree);\n function Tree() {\n var _this;\n _classCallCheck(this, Tree);\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(_args));\n _this.destroyed = false;\n _this.delayedDragEnterLogic = void 0;\n _this.loadingRetryTimes = {};\n _this.state = {\n keyEntities: {},\n indent: null,\n selectedKeys: [],\n checkedKeys: [],\n halfCheckedKeys: [],\n loadedKeys: [],\n loadingKeys: [],\n expandedKeys: [],\n draggingNodeKey: null,\n dragChildrenKeys: [],\n // dropTargetKey is the key of abstract-drop-node\n // the abstract-drop-node is the real drop node when drag and drop\n // not the DOM drag over node\n dropTargetKey: null,\n dropPosition: null,\n dropContainerKey: null,\n dropLevelOffset: null,\n dropTargetPos: null,\n dropAllowed: true,\n // the abstract-drag-over-node\n // if mouse is on the bottom of top dom node or no the top of the bottom dom node\n // abstract-drag-over-node is the top node\n dragOverNodeKey: null,\n treeData: [],\n flattenNodes: [],\n focused: false,\n activeKey: null,\n listChanging: false,\n prevProps: null,\n fieldNames: fillFieldNames()\n };\n _this.dragStartMousePosition = null;\n _this.dragNode = void 0;\n _this.currentMouseOverDroppableNodeKey = null;\n _this.listRef = /*#__PURE__*/React.createRef();\n _this.onNodeDragStart = function (event, node) {\n var _this$state = _this.state,\n expandedKeys = _this$state.expandedKeys,\n keyEntities = _this$state.keyEntities;\n var onDragStart = _this.props.onDragStart;\n var eventKey = node.props.eventKey;\n _this.dragNode = node;\n _this.dragStartMousePosition = {\n x: event.clientX,\n y: event.clientY\n };\n var newExpandedKeys = arrDel(expandedKeys, eventKey);\n _this.setState({\n draggingNodeKey: eventKey,\n dragChildrenKeys: getDragChildrenKeys(eventKey, keyEntities),\n indent: _this.listRef.current.getIndentWidth()\n });\n _this.setExpandedKeys(newExpandedKeys);\n window.addEventListener('dragend', _this.onWindowDragEnd);\n onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart({\n event: event,\n node: convertNodePropsToEventData(node.props)\n });\n };\n /**\n * [Legacy] Select handler is smaller than node,\n * so that this will trigger when drag enter node or select handler.\n * This is a little tricky if customize css without padding.\n * Better for use mouse move event to refresh drag state.\n * But let's just keep it to avoid event trigger logic change.\n */\n _this.onNodeDragEnter = function (event, node) {\n var _this$state2 = _this.state,\n expandedKeys = _this$state2.expandedKeys,\n keyEntities = _this$state2.keyEntities,\n dragChildrenKeys = _this$state2.dragChildrenKeys,\n flattenNodes = _this$state2.flattenNodes,\n indent = _this$state2.indent;\n var _this$props = _this.props,\n onDragEnter = _this$props.onDragEnter,\n onExpand = _this$props.onExpand,\n allowDrop = _this$props.allowDrop,\n direction = _this$props.direction;\n var _node$props = node.props,\n pos = _node$props.pos,\n eventKey = _node$props.eventKey;\n var _assertThisInitialize = _assertThisInitialized(_this),\n dragNode = _assertThisInitialize.dragNode;\n // record the key of node which is latest entered, used in dragleave event.\n if (_this.currentMouseOverDroppableNodeKey !== eventKey) {\n _this.currentMouseOverDroppableNodeKey = eventKey;\n }\n if (!dragNode) {\n _this.resetDragState();\n return;\n }\n var _calcDropPosition = calcDropPosition(event, dragNode, node, indent, _this.dragStartMousePosition, allowDrop, flattenNodes, keyEntities, expandedKeys, direction),\n dropPosition = _calcDropPosition.dropPosition,\n dropLevelOffset = _calcDropPosition.dropLevelOffset,\n dropTargetKey = _calcDropPosition.dropTargetKey,\n dropContainerKey = _calcDropPosition.dropContainerKey,\n dropTargetPos = _calcDropPosition.dropTargetPos,\n dropAllowed = _calcDropPosition.dropAllowed,\n dragOverNodeKey = _calcDropPosition.dragOverNodeKey;\n if (\n // don't allow drop inside its children\n dragChildrenKeys.indexOf(dropTargetKey) !== -1 ||\n // don't allow drop when drop is not allowed caculated by calcDropPosition\n !dropAllowed) {\n _this.resetDragState();\n return;\n }\n // Side effect for delay drag\n if (!_this.delayedDragEnterLogic) {\n _this.delayedDragEnterLogic = {};\n }\n Object.keys(_this.delayedDragEnterLogic).forEach(function (key) {\n clearTimeout(_this.delayedDragEnterLogic[key]);\n });\n if (dragNode.props.eventKey !== node.props.eventKey) {\n // hoist expand logic here\n // since if logic is on the bottom\n // it will be blocked by abstract dragover node check\n // => if you dragenter from top, you mouse will still be consider as in the top node\n event.persist();\n _this.delayedDragEnterLogic[pos] = window.setTimeout(function () {\n if (_this.state.draggingNodeKey === null) return;\n var newExpandedKeys = _toConsumableArray(expandedKeys);\n var entity = keyEntities[node.props.eventKey];\n if (entity && (entity.children || []).length) {\n newExpandedKeys = arrAdd(expandedKeys, node.props.eventKey);\n }\n if (!('expandedKeys' in _this.props)) {\n _this.setExpandedKeys(newExpandedKeys);\n }\n onExpand === null || onExpand === void 0 ? void 0 : onExpand(newExpandedKeys, {\n node: convertNodePropsToEventData(node.props),\n expanded: true,\n nativeEvent: event.nativeEvent\n });\n }, 800);\n }\n // Skip if drag node is self\n if (dragNode.props.eventKey === dropTargetKey && dropLevelOffset === 0) {\n _this.resetDragState();\n return;\n }\n // Update drag over node and drag state\n _this.setState({\n dragOverNodeKey: dragOverNodeKey,\n dropPosition: dropPosition,\n dropLevelOffset: dropLevelOffset,\n dropTargetKey: dropTargetKey,\n dropContainerKey: dropContainerKey,\n dropTargetPos: dropTargetPos,\n dropAllowed: dropAllowed\n });\n onDragEnter === null || onDragEnter === void 0 ? void 0 : onDragEnter({\n event: event,\n node: convertNodePropsToEventData(node.props),\n expandedKeys: expandedKeys\n });\n };\n _this.onNodeDragOver = function (event, node) {\n var _this$state3 = _this.state,\n dragChildrenKeys = _this$state3.dragChildrenKeys,\n flattenNodes = _this$state3.flattenNodes,\n keyEntities = _this$state3.keyEntities,\n expandedKeys = _this$state3.expandedKeys,\n indent = _this$state3.indent;\n var _this$props2 = _this.props,\n onDragOver = _this$props2.onDragOver,\n allowDrop = _this$props2.allowDrop,\n direction = _this$props2.direction;\n var _assertThisInitialize2 = _assertThisInitialized(_this),\n dragNode = _assertThisInitialize2.dragNode;\n if (!dragNode) {\n return;\n }\n var _calcDropPosition2 = calcDropPosition(event, dragNode, node, indent, _this.dragStartMousePosition, allowDrop, flattenNodes, keyEntities, expandedKeys, direction),\n dropPosition = _calcDropPosition2.dropPosition,\n dropLevelOffset = _calcDropPosition2.dropLevelOffset,\n dropTargetKey = _calcDropPosition2.dropTargetKey,\n dropContainerKey = _calcDropPosition2.dropContainerKey,\n dropAllowed = _calcDropPosition2.dropAllowed,\n dropTargetPos = _calcDropPosition2.dropTargetPos,\n dragOverNodeKey = _calcDropPosition2.dragOverNodeKey;\n if (dragChildrenKeys.indexOf(dropTargetKey) !== -1 || !dropAllowed) {\n // don't allow drop inside its children\n // don't allow drop when drop is not allowed caculated by calcDropPosition\n return;\n }\n // Update drag position\n if (dragNode.props.eventKey === dropTargetKey && dropLevelOffset === 0) {\n if (!(_this.state.dropPosition === null && _this.state.dropLevelOffset === null && _this.state.dropTargetKey === null && _this.state.dropContainerKey === null && _this.state.dropTargetPos === null && _this.state.dropAllowed === false && _this.state.dragOverNodeKey === null)) {\n _this.resetDragState();\n }\n } else if (!(dropPosition === _this.state.dropPosition && dropLevelOffset === _this.state.dropLevelOffset && dropTargetKey === _this.state.dropTargetKey && dropContainerKey === _this.state.dropContainerKey && dropTargetPos === _this.state.dropTargetPos && dropAllowed === _this.state.dropAllowed && dragOverNodeKey === _this.state.dragOverNodeKey)) {\n _this.setState({\n dropPosition: dropPosition,\n dropLevelOffset: dropLevelOffset,\n dropTargetKey: dropTargetKey,\n dropContainerKey: dropContainerKey,\n dropTargetPos: dropTargetPos,\n dropAllowed: dropAllowed,\n dragOverNodeKey: dragOverNodeKey\n });\n }\n onDragOver === null || onDragOver === void 0 ? void 0 : onDragOver({\n event: event,\n node: convertNodePropsToEventData(node.props)\n });\n };\n _this.onNodeDragLeave = function (event, node) {\n // if it is outside the droppable area\n // currentMouseOverDroppableNodeKey will be updated in dragenter event when into another droppable receiver.\n if (_this.currentMouseOverDroppableNodeKey === node.props.eventKey && !event.currentTarget.contains(event.relatedTarget)) {\n _this.resetDragState();\n _this.currentMouseOverDroppableNodeKey = null;\n }\n var onDragLeave = _this.props.onDragLeave;\n onDragLeave === null || onDragLeave === void 0 ? void 0 : onDragLeave({\n event: event,\n node: convertNodePropsToEventData(node.props)\n });\n };\n // since stopPropagation() is called in treeNode\n // if onWindowDrag is called, whice means state is keeped, drag state should be cleared\n _this.onWindowDragEnd = function (event) {\n _this.onNodeDragEnd(event, null, true);\n window.removeEventListener('dragend', _this.onWindowDragEnd);\n };\n // if onNodeDragEnd is called, onWindowDragEnd won't be called since stopPropagation() is called\n _this.onNodeDragEnd = function (event, node) {\n var onDragEnd = _this.props.onDragEnd;\n _this.setState({\n dragOverNodeKey: null\n });\n _this.cleanDragState();\n onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd({\n event: event,\n node: convertNodePropsToEventData(node.props)\n });\n _this.dragNode = null;\n window.removeEventListener('dragend', _this.onWindowDragEnd);\n };\n _this.onNodeDrop = function (event, node) {\n var _this$getActiveItem;\n var outsideTree = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var _this$state4 = _this.state,\n dragChildrenKeys = _this$state4.dragChildrenKeys,\n dropPosition = _this$state4.dropPosition,\n dropTargetKey = _this$state4.dropTargetKey,\n dropTargetPos = _this$state4.dropTargetPos,\n dropAllowed = _this$state4.dropAllowed;\n if (!dropAllowed) return;\n var onDrop = _this.props.onDrop;\n _this.setState({\n dragOverNodeKey: null\n });\n _this.cleanDragState();\n if (dropTargetKey === null) return;\n var abstractDropNodeProps = _objectSpread(_objectSpread({}, getTreeNodeProps(dropTargetKey, _this.getTreeNodeRequiredProps())), {}, {\n active: ((_this$getActiveItem = _this.getActiveItem()) === null || _this$getActiveItem === void 0 ? void 0 : _this$getActiveItem.key) === dropTargetKey,\n data: _this.state.keyEntities[dropTargetKey].node\n });\n var dropToChild = dragChildrenKeys.indexOf(dropTargetKey) !== -1;\n warning(!dropToChild, \"Can not drop to dragNode's children node. This is a bug of rc-tree. Please report an issue.\");\n var posArr = posToArr(dropTargetPos);\n var dropResult = {\n event: event,\n node: convertNodePropsToEventData(abstractDropNodeProps),\n dragNode: _this.dragNode ? convertNodePropsToEventData(_this.dragNode.props) : null,\n dragNodesKeys: [_this.dragNode.props.eventKey].concat(dragChildrenKeys),\n dropToGap: dropPosition !== 0,\n dropPosition: dropPosition + Number(posArr[posArr.length - 1])\n };\n if (!outsideTree) {\n onDrop === null || onDrop === void 0 ? void 0 : onDrop(dropResult);\n }\n _this.dragNode = null;\n };\n _this.cleanDragState = function () {\n var draggingNodeKey = _this.state.draggingNodeKey;\n if (draggingNodeKey !== null) {\n _this.setState({\n draggingNodeKey: null,\n dropPosition: null,\n dropContainerKey: null,\n dropTargetKey: null,\n dropLevelOffset: null,\n dropAllowed: true,\n dragOverNodeKey: null\n });\n }\n _this.dragStartMousePosition = null;\n _this.currentMouseOverDroppableNodeKey = null;\n };\n _this.triggerExpandActionExpand = function (e, treeNode) {\n var _this$state5 = _this.state,\n expandedKeys = _this$state5.expandedKeys,\n flattenNodes = _this$state5.flattenNodes;\n var expanded = treeNode.expanded,\n key = treeNode.key,\n isLeaf = treeNode.isLeaf;\n if (isLeaf || e.shiftKey || e.metaKey || e.ctrlKey) {\n return;\n }\n var node = flattenNodes.filter(function (nodeItem) {\n return nodeItem.key === key;\n })[0];\n var eventNode = convertNodePropsToEventData(_objectSpread(_objectSpread({}, getTreeNodeProps(key, _this.getTreeNodeRequiredProps())), {}, {\n data: node.data\n }));\n _this.setExpandedKeys(expanded ? arrDel(expandedKeys, key) : arrAdd(expandedKeys, key));\n _this.onNodeExpand(e, eventNode);\n };\n _this.onNodeClick = function (e, treeNode) {\n var _this$props3 = _this.props,\n onClick = _this$props3.onClick,\n expandAction = _this$props3.expandAction;\n if (expandAction === 'click') {\n _this.triggerExpandActionExpand(e, treeNode);\n }\n onClick === null || onClick === void 0 ? void 0 : onClick(e, treeNode);\n };\n _this.onNodeDoubleClick = function (e, treeNode) {\n var _this$props4 = _this.props,\n onDoubleClick = _this$props4.onDoubleClick,\n expandAction = _this$props4.expandAction;\n if (expandAction === 'doubleClick') {\n _this.triggerExpandActionExpand(e, treeNode);\n }\n onDoubleClick === null || onDoubleClick === void 0 ? void 0 : onDoubleClick(e, treeNode);\n };\n _this.onNodeSelect = function (e, treeNode) {\n var selectedKeys = _this.state.selectedKeys;\n var _this$state6 = _this.state,\n keyEntities = _this$state6.keyEntities,\n fieldNames = _this$state6.fieldNames;\n var _this$props5 = _this.props,\n onSelect = _this$props5.onSelect,\n multiple = _this$props5.multiple;\n var selected = treeNode.selected;\n var key = treeNode[fieldNames.key];\n var targetSelected = !selected;\n // Update selected keys\n if (!targetSelected) {\n selectedKeys = arrDel(selectedKeys, key);\n } else if (!multiple) {\n selectedKeys = [key];\n } else {\n selectedKeys = arrAdd(selectedKeys, key);\n }\n // [Legacy] Not found related usage in doc or upper libs\n var selectedNodes = selectedKeys.map(function (selectedKey) {\n var entity = keyEntities[selectedKey];\n if (!entity) return null;\n return entity.node;\n }).filter(function (node) {\n return node;\n });\n _this.setUncontrolledState({\n selectedKeys: selectedKeys\n });\n onSelect === null || onSelect === void 0 ? void 0 : onSelect(selectedKeys, {\n event: 'select',\n selected: targetSelected,\n node: treeNode,\n selectedNodes: selectedNodes,\n nativeEvent: e.nativeEvent\n });\n };\n _this.onNodeCheck = function (e, treeNode, checked) {\n var _this$state7 = _this.state,\n keyEntities = _this$state7.keyEntities,\n oriCheckedKeys = _this$state7.checkedKeys,\n oriHalfCheckedKeys = _this$state7.halfCheckedKeys;\n var _this$props6 = _this.props,\n checkStrictly = _this$props6.checkStrictly,\n onCheck = _this$props6.onCheck;\n var key = treeNode.key;\n // Prepare trigger arguments\n var checkedObj;\n var eventObj = {\n event: 'check',\n node: treeNode,\n checked: checked,\n nativeEvent: e.nativeEvent\n };\n if (checkStrictly) {\n var checkedKeys = checked ? arrAdd(oriCheckedKeys, key) : arrDel(oriCheckedKeys, key);\n var halfCheckedKeys = arrDel(oriHalfCheckedKeys, key);\n checkedObj = {\n checked: checkedKeys,\n halfChecked: halfCheckedKeys\n };\n eventObj.checkedNodes = checkedKeys.map(function (checkedKey) {\n return keyEntities[checkedKey];\n }).filter(function (entity) {\n return entity;\n }).map(function (entity) {\n return entity.node;\n });\n _this.setUncontrolledState({\n checkedKeys: checkedKeys\n });\n } else {\n // Always fill first\n var _conductCheck = conductCheck([].concat(_toConsumableArray(oriCheckedKeys), [key]), true, keyEntities),\n _checkedKeys = _conductCheck.checkedKeys,\n _halfCheckedKeys = _conductCheck.halfCheckedKeys;\n // If remove, we do it again to correction\n if (!checked) {\n var keySet = new Set(_checkedKeys);\n keySet.delete(key);\n var _conductCheck2 = conductCheck(Array.from(keySet), {\n checked: false,\n halfCheckedKeys: _halfCheckedKeys\n }, keyEntities);\n _checkedKeys = _conductCheck2.checkedKeys;\n _halfCheckedKeys = _conductCheck2.halfCheckedKeys;\n }\n checkedObj = _checkedKeys;\n // [Legacy] This is used for `rc-tree-select`\n eventObj.checkedNodes = [];\n eventObj.checkedNodesPositions = [];\n eventObj.halfCheckedKeys = _halfCheckedKeys;\n _checkedKeys.forEach(function (checkedKey) {\n var entity = keyEntities[checkedKey];\n if (!entity) return;\n var node = entity.node,\n pos = entity.pos;\n eventObj.checkedNodes.push(node);\n eventObj.checkedNodesPositions.push({\n node: node,\n pos: pos\n });\n });\n _this.setUncontrolledState({\n checkedKeys: _checkedKeys\n }, false, {\n halfCheckedKeys: _halfCheckedKeys\n });\n }\n onCheck === null || onCheck === void 0 ? void 0 : onCheck(checkedObj, eventObj);\n };\n _this.onNodeLoad = function (treeNode) {\n var key = treeNode.key;\n var loadPromise = new Promise(function (resolve, reject) {\n // We need to get the latest state of loading/loaded keys\n _this.setState(function (_ref) {\n var _ref$loadedKeys = _ref.loadedKeys,\n loadedKeys = _ref$loadedKeys === void 0 ? [] : _ref$loadedKeys,\n _ref$loadingKeys = _ref.loadingKeys,\n loadingKeys = _ref$loadingKeys === void 0 ? [] : _ref$loadingKeys;\n var _this$props7 = _this.props,\n loadData = _this$props7.loadData,\n onLoad = _this$props7.onLoad;\n if (!loadData || loadedKeys.indexOf(key) !== -1 || loadingKeys.indexOf(key) !== -1) {\n return null;\n }\n // Process load data\n var promise = loadData(treeNode);\n promise.then(function () {\n var currentLoadedKeys = _this.state.loadedKeys;\n var newLoadedKeys = arrAdd(currentLoadedKeys, key);\n // onLoad should trigger before internal setState to avoid `loadData` trigger twice.\n // https://github.com/ant-design/ant-design/issues/12464\n onLoad === null || onLoad === void 0 ? void 0 : onLoad(newLoadedKeys, {\n event: 'load',\n node: treeNode\n });\n _this.setUncontrolledState({\n loadedKeys: newLoadedKeys\n });\n _this.setState(function (prevState) {\n return {\n loadingKeys: arrDel(prevState.loadingKeys, key)\n };\n });\n resolve();\n }).catch(function (e) {\n _this.setState(function (prevState) {\n return {\n loadingKeys: arrDel(prevState.loadingKeys, key)\n };\n });\n // If exceed max retry times, we give up retry\n _this.loadingRetryTimes[key] = (_this.loadingRetryTimes[key] || 0) + 1;\n if (_this.loadingRetryTimes[key] >= MAX_RETRY_TIMES) {\n var currentLoadedKeys = _this.state.loadedKeys;\n warning(false, 'Retry for `loadData` many times but still failed. No more retry.');\n _this.setUncontrolledState({\n loadedKeys: arrAdd(currentLoadedKeys, key)\n });\n resolve();\n }\n reject(e);\n });\n return {\n loadingKeys: arrAdd(loadingKeys, key)\n };\n });\n });\n // Not care warning if we ignore this\n loadPromise.catch(function () {});\n return loadPromise;\n };\n _this.onNodeMouseEnter = function (event, node) {\n var onMouseEnter = _this.props.onMouseEnter;\n onMouseEnter === null || onMouseEnter === void 0 ? void 0 : onMouseEnter({\n event: event,\n node: node\n });\n };\n _this.onNodeMouseLeave = function (event, node) {\n var onMouseLeave = _this.props.onMouseLeave;\n onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave({\n event: event,\n node: node\n });\n };\n _this.onNodeContextMenu = function (event, node) {\n var onRightClick = _this.props.onRightClick;\n if (onRightClick) {\n event.preventDefault();\n onRightClick({\n event: event,\n node: node\n });\n }\n };\n _this.onFocus = function () {\n var onFocus = _this.props.onFocus;\n _this.setState({\n focused: true\n });\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n onFocus === null || onFocus === void 0 ? void 0 : onFocus.apply(void 0, args);\n };\n _this.onBlur = function () {\n var onBlur = _this.props.onBlur;\n _this.setState({\n focused: false\n });\n _this.onActiveChange(null);\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n onBlur === null || onBlur === void 0 ? void 0 : onBlur.apply(void 0, args);\n };\n _this.getTreeNodeRequiredProps = function () {\n var _this$state8 = _this.state,\n expandedKeys = _this$state8.expandedKeys,\n selectedKeys = _this$state8.selectedKeys,\n loadedKeys = _this$state8.loadedKeys,\n loadingKeys = _this$state8.loadingKeys,\n checkedKeys = _this$state8.checkedKeys,\n halfCheckedKeys = _this$state8.halfCheckedKeys,\n dragOverNodeKey = _this$state8.dragOverNodeKey,\n dropPosition = _this$state8.dropPosition,\n keyEntities = _this$state8.keyEntities;\n return {\n expandedKeys: expandedKeys || [],\n selectedKeys: selectedKeys || [],\n loadedKeys: loadedKeys || [],\n loadingKeys: loadingKeys || [],\n checkedKeys: checkedKeys || [],\n halfCheckedKeys: halfCheckedKeys || [],\n dragOverNodeKey: dragOverNodeKey,\n dropPosition: dropPosition,\n keyEntities: keyEntities\n };\n };\n // =========================== Expanded ===========================\n /** Set uncontrolled `expandedKeys`. This will also auto update `flattenNodes`. */\n _this.setExpandedKeys = function (expandedKeys) {\n var _this$state9 = _this.state,\n treeData = _this$state9.treeData,\n fieldNames = _this$state9.fieldNames;\n var flattenNodes = flattenTreeData(treeData, expandedKeys, fieldNames);\n _this.setUncontrolledState({\n expandedKeys: expandedKeys,\n flattenNodes: flattenNodes\n }, true);\n };\n _this.onNodeExpand = function (e, treeNode) {\n var expandedKeys = _this.state.expandedKeys;\n var _this$state10 = _this.state,\n listChanging = _this$state10.listChanging,\n fieldNames = _this$state10.fieldNames;\n var _this$props8 = _this.props,\n onExpand = _this$props8.onExpand,\n loadData = _this$props8.loadData;\n var expanded = treeNode.expanded;\n var key = treeNode[fieldNames.key];\n // Do nothing when motion is in progress\n if (listChanging) {\n return;\n }\n // Update selected keys\n var index = expandedKeys.indexOf(key);\n var targetExpanded = !expanded;\n warning(expanded && index !== -1 || !expanded && index === -1, 'Expand state not sync with index check');\n if (targetExpanded) {\n expandedKeys = arrAdd(expandedKeys, key);\n } else {\n expandedKeys = arrDel(expandedKeys, key);\n }\n _this.setExpandedKeys(expandedKeys);\n onExpand === null || onExpand === void 0 ? void 0 : onExpand(expandedKeys, {\n node: treeNode,\n expanded: targetExpanded,\n nativeEvent: e.nativeEvent\n });\n // Async Load data\n if (targetExpanded && loadData) {\n var loadPromise = _this.onNodeLoad(treeNode);\n if (loadPromise) {\n loadPromise.then(function () {\n // [Legacy] Refresh logic\n var newFlattenTreeData = flattenTreeData(_this.state.treeData, expandedKeys, fieldNames);\n _this.setUncontrolledState({\n flattenNodes: newFlattenTreeData\n });\n }).catch(function () {\n var currentExpandedKeys = _this.state.expandedKeys;\n var expandedKeysToRestore = arrDel(currentExpandedKeys, key);\n _this.setExpandedKeys(expandedKeysToRestore);\n });\n }\n }\n };\n _this.onListChangeStart = function () {\n _this.setUncontrolledState({\n listChanging: true\n });\n };\n _this.onListChangeEnd = function () {\n setTimeout(function () {\n _this.setUncontrolledState({\n listChanging: false\n });\n });\n };\n // =========================== Keyboard ===========================\n _this.onActiveChange = function (newActiveKey) {\n var activeKey = _this.state.activeKey;\n var onActiveChange = _this.props.onActiveChange;\n if (activeKey === newActiveKey) {\n return;\n }\n _this.setState({\n activeKey: newActiveKey\n });\n if (newActiveKey !== null) {\n _this.scrollTo({\n key: newActiveKey\n });\n }\n onActiveChange === null || onActiveChange === void 0 ? void 0 : onActiveChange(newActiveKey);\n };\n _this.getActiveItem = function () {\n var _this$state11 = _this.state,\n activeKey = _this$state11.activeKey,\n flattenNodes = _this$state11.flattenNodes;\n if (activeKey === null) {\n return null;\n }\n return flattenNodes.find(function (_ref2) {\n var key = _ref2.key;\n return key === activeKey;\n }) || null;\n };\n _this.offsetActiveKey = function (offset) {\n var _this$state12 = _this.state,\n flattenNodes = _this$state12.flattenNodes,\n activeKey = _this$state12.activeKey;\n var index = flattenNodes.findIndex(function (_ref3) {\n var key = _ref3.key;\n return key === activeKey;\n });\n // Align with index\n if (index === -1 && offset < 0) {\n index = flattenNodes.length;\n }\n index = (index + offset + flattenNodes.length) % flattenNodes.length;\n var item = flattenNodes[index];\n if (item) {\n var key = item.key;\n _this.onActiveChange(key);\n } else {\n _this.onActiveChange(null);\n }\n };\n _this.onKeyDown = function (event) {\n var _this$state13 = _this.state,\n activeKey = _this$state13.activeKey,\n expandedKeys = _this$state13.expandedKeys,\n checkedKeys = _this$state13.checkedKeys,\n fieldNames = _this$state13.fieldNames;\n var _this$props9 = _this.props,\n onKeyDown = _this$props9.onKeyDown,\n checkable = _this$props9.checkable,\n selectable = _this$props9.selectable;\n // >>>>>>>>>> Direction\n switch (event.which) {\n case KeyCode.UP:\n {\n _this.offsetActiveKey(-1);\n event.preventDefault();\n break;\n }\n case KeyCode.DOWN:\n {\n _this.offsetActiveKey(1);\n event.preventDefault();\n break;\n }\n }\n // >>>>>>>>>> Expand & Selection\n var activeItem = _this.getActiveItem();\n if (activeItem && activeItem.data) {\n var treeNodeRequiredProps = _this.getTreeNodeRequiredProps();\n var expandable = activeItem.data.isLeaf === false || !!(activeItem.data[fieldNames.children] || []).length;\n var eventNode = convertNodePropsToEventData(_objectSpread(_objectSpread({}, getTreeNodeProps(activeKey, treeNodeRequiredProps)), {}, {\n data: activeItem.data,\n active: true\n }));\n switch (event.which) {\n // >>> Expand\n case KeyCode.LEFT:\n {\n // Collapse if possible\n if (expandable && expandedKeys.includes(activeKey)) {\n _this.onNodeExpand({}, eventNode);\n } else if (activeItem.parent) {\n _this.onActiveChange(activeItem.parent.key);\n }\n event.preventDefault();\n break;\n }\n case KeyCode.RIGHT:\n {\n // Expand if possible\n if (expandable && !expandedKeys.includes(activeKey)) {\n _this.onNodeExpand({}, eventNode);\n } else if (activeItem.children && activeItem.children.length) {\n _this.onActiveChange(activeItem.children[0].key);\n }\n event.preventDefault();\n break;\n }\n // Selection\n case KeyCode.ENTER:\n case KeyCode.SPACE:\n {\n if (checkable && !eventNode.disabled && eventNode.checkable !== false && !eventNode.disableCheckbox) {\n _this.onNodeCheck({}, eventNode, !checkedKeys.includes(activeKey));\n } else if (!checkable && selectable && !eventNode.disabled && eventNode.selectable !== false) {\n _this.onNodeSelect({}, eventNode);\n }\n break;\n }\n }\n }\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);\n };\n /**\n * Only update the value which is not in props\n */\n _this.setUncontrolledState = function (state) {\n var atomic = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var forceState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n if (!_this.destroyed) {\n var needSync = false;\n var allPassed = true;\n var newState = {};\n Object.keys(state).forEach(function (name) {\n if (name in _this.props) {\n allPassed = false;\n return;\n }\n needSync = true;\n newState[name] = state[name];\n });\n if (needSync && (!atomic || allPassed)) {\n _this.setState(_objectSpread(_objectSpread({}, newState), forceState));\n }\n }\n };\n _this.scrollTo = function (scroll) {\n _this.listRef.current.scrollTo(scroll);\n };\n return _this;\n }\n _createClass(Tree, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.destroyed = false;\n this.onUpdated();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.onUpdated();\n }\n }, {\n key: \"onUpdated\",\n value: function onUpdated() {\n var activeKey = this.props.activeKey;\n if (activeKey !== undefined && activeKey !== this.state.activeKey) {\n this.setState({\n activeKey: activeKey\n });\n if (activeKey !== null) {\n this.scrollTo({\n key: activeKey\n });\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener('dragend', this.onWindowDragEnd);\n this.destroyed = true;\n }\n }, {\n key: \"resetDragState\",\n value: function resetDragState() {\n this.setState({\n dragOverNodeKey: null,\n dropPosition: null,\n dropLevelOffset: null,\n dropTargetKey: null,\n dropContainerKey: null,\n dropTargetPos: null,\n dropAllowed: false\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames;\n var _this$state14 = this.state,\n focused = _this$state14.focused,\n flattenNodes = _this$state14.flattenNodes,\n keyEntities = _this$state14.keyEntities,\n draggingNodeKey = _this$state14.draggingNodeKey,\n activeKey = _this$state14.activeKey,\n dropLevelOffset = _this$state14.dropLevelOffset,\n dropContainerKey = _this$state14.dropContainerKey,\n dropTargetKey = _this$state14.dropTargetKey,\n dropPosition = _this$state14.dropPosition,\n dragOverNodeKey = _this$state14.dragOverNodeKey,\n indent = _this$state14.indent;\n var _this$props10 = this.props,\n prefixCls = _this$props10.prefixCls,\n className = _this$props10.className,\n style = _this$props10.style,\n showLine = _this$props10.showLine,\n focusable = _this$props10.focusable,\n _this$props10$tabInde = _this$props10.tabIndex,\n tabIndex = _this$props10$tabInde === void 0 ? 0 : _this$props10$tabInde,\n selectable = _this$props10.selectable,\n showIcon = _this$props10.showIcon,\n icon = _this$props10.icon,\n switcherIcon = _this$props10.switcherIcon,\n draggable = _this$props10.draggable,\n checkable = _this$props10.checkable,\n checkStrictly = _this$props10.checkStrictly,\n disabled = _this$props10.disabled,\n motion = _this$props10.motion,\n loadData = _this$props10.loadData,\n filterTreeNode = _this$props10.filterTreeNode,\n height = _this$props10.height,\n itemHeight = _this$props10.itemHeight,\n virtual = _this$props10.virtual,\n titleRender = _this$props10.titleRender,\n dropIndicatorRender = _this$props10.dropIndicatorRender,\n onContextMenu = _this$props10.onContextMenu,\n onScroll = _this$props10.onScroll,\n direction = _this$props10.direction,\n rootClassName = _this$props10.rootClassName,\n rootStyle = _this$props10.rootStyle;\n var domProps = pickAttrs(this.props, {\n aria: true,\n data: true\n });\n // It's better move to hooks but we just simply keep here\n var draggableConfig;\n if (draggable) {\n if (_typeof(draggable) === 'object') {\n draggableConfig = draggable;\n } else if (typeof draggable === 'function') {\n draggableConfig = {\n nodeDraggable: draggable\n };\n } else {\n draggableConfig = {};\n }\n }\n return /*#__PURE__*/React.createElement(TreeContext.Provider, {\n value: {\n prefixCls: prefixCls,\n selectable: selectable,\n showIcon: showIcon,\n icon: icon,\n switcherIcon: switcherIcon,\n draggable: draggableConfig,\n draggingNodeKey: draggingNodeKey,\n checkable: checkable,\n checkStrictly: checkStrictly,\n disabled: disabled,\n keyEntities: keyEntities,\n dropLevelOffset: dropLevelOffset,\n dropContainerKey: dropContainerKey,\n dropTargetKey: dropTargetKey,\n dropPosition: dropPosition,\n dragOverNodeKey: dragOverNodeKey,\n indent: indent,\n direction: direction,\n dropIndicatorRender: dropIndicatorRender,\n loadData: loadData,\n filterTreeNode: filterTreeNode,\n titleRender: titleRender,\n onNodeClick: this.onNodeClick,\n onNodeDoubleClick: this.onNodeDoubleClick,\n onNodeExpand: this.onNodeExpand,\n onNodeSelect: this.onNodeSelect,\n onNodeCheck: this.onNodeCheck,\n onNodeLoad: this.onNodeLoad,\n onNodeMouseEnter: this.onNodeMouseEnter,\n onNodeMouseLeave: this.onNodeMouseLeave,\n onNodeContextMenu: this.onNodeContextMenu,\n onNodeDragStart: this.onNodeDragStart,\n onNodeDragEnter: this.onNodeDragEnter,\n onNodeDragOver: this.onNodeDragOver,\n onNodeDragLeave: this.onNodeDragLeave,\n onNodeDragEnd: this.onNodeDragEnd,\n onNodeDrop: this.onNodeDrop\n }\n }, /*#__PURE__*/React.createElement(\"div\", {\n role: \"tree\",\n className: classNames(prefixCls, className, rootClassName, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-show-line\"), showLine), _defineProperty(_classNames, \"\".concat(prefixCls, \"-focused\"), focused), _defineProperty(_classNames, \"\".concat(prefixCls, \"-active-focused\"), activeKey !== null), _classNames)),\n style: rootStyle\n }, /*#__PURE__*/React.createElement(NodeList, _extends({\n ref: this.listRef,\n prefixCls: prefixCls,\n style: style,\n data: flattenNodes,\n disabled: disabled,\n selectable: selectable,\n checkable: !!checkable,\n motion: motion,\n dragging: draggingNodeKey !== null,\n height: height,\n itemHeight: itemHeight,\n virtual: virtual,\n focusable: focusable,\n focused: focused,\n tabIndex: tabIndex,\n activeItem: this.getActiveItem(),\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onKeyDown: this.onKeyDown,\n onActiveChange: this.onActiveChange,\n onListChangeStart: this.onListChangeStart,\n onListChangeEnd: this.onListChangeEnd,\n onContextMenu: onContextMenu,\n onScroll: onScroll\n }, this.getTreeNodeRequiredProps(), domProps))));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, prevState) {\n var prevProps = prevState.prevProps;\n var newState = {\n prevProps: props\n };\n function needSync(name) {\n return !prevProps && name in props || prevProps && prevProps[name] !== props[name];\n }\n // ================== Tree Node ==================\n var treeData;\n // fieldNames\n var fieldNames = prevState.fieldNames;\n if (needSync('fieldNames')) {\n fieldNames = fillFieldNames(props.fieldNames);\n newState.fieldNames = fieldNames;\n }\n // Check if `treeData` or `children` changed and save into the state.\n if (needSync('treeData')) {\n treeData = props.treeData;\n } else if (needSync('children')) {\n warning(false, '`children` of Tree is deprecated. Please use `treeData` instead.');\n treeData = convertTreeToData(props.children);\n }\n // Save flatten nodes info and convert `treeData` into keyEntities\n if (treeData) {\n newState.treeData = treeData;\n var entitiesMap = convertDataToEntities(treeData, {\n fieldNames: fieldNames\n });\n newState.keyEntities = _objectSpread(_defineProperty({}, MOTION_KEY, MotionEntity), entitiesMap.keyEntities);\n // Warning if treeNode not provide key\n if (process.env.NODE_ENV !== 'production') {\n warningWithoutKey(treeData, fieldNames);\n }\n }\n var keyEntities = newState.keyEntities || prevState.keyEntities;\n // ================ expandedKeys =================\n if (needSync('expandedKeys') || prevProps && needSync('autoExpandParent')) {\n newState.expandedKeys = props.autoExpandParent || !prevProps && props.defaultExpandParent ? conductExpandParent(props.expandedKeys, keyEntities) : props.expandedKeys;\n } else if (!prevProps && props.defaultExpandAll) {\n var cloneKeyEntities = _objectSpread({}, keyEntities);\n delete cloneKeyEntities[MOTION_KEY];\n newState.expandedKeys = Object.keys(cloneKeyEntities).map(function (key) {\n return cloneKeyEntities[key].key;\n });\n } else if (!prevProps && props.defaultExpandedKeys) {\n newState.expandedKeys = props.autoExpandParent || props.defaultExpandParent ? conductExpandParent(props.defaultExpandedKeys, keyEntities) : props.defaultExpandedKeys;\n }\n if (!newState.expandedKeys) {\n delete newState.expandedKeys;\n }\n // ================ flattenNodes =================\n if (treeData || newState.expandedKeys) {\n var flattenNodes = flattenTreeData(treeData || prevState.treeData, newState.expandedKeys || prevState.expandedKeys, fieldNames);\n newState.flattenNodes = flattenNodes;\n }\n // ================ selectedKeys =================\n if (props.selectable) {\n if (needSync('selectedKeys')) {\n newState.selectedKeys = calcSelectedKeys(props.selectedKeys, props);\n } else if (!prevProps && props.defaultSelectedKeys) {\n newState.selectedKeys = calcSelectedKeys(props.defaultSelectedKeys, props);\n }\n }\n // ================= checkedKeys =================\n if (props.checkable) {\n var checkedKeyEntity;\n if (needSync('checkedKeys')) {\n checkedKeyEntity = parseCheckedKeys(props.checkedKeys) || {};\n } else if (!prevProps && props.defaultCheckedKeys) {\n checkedKeyEntity = parseCheckedKeys(props.defaultCheckedKeys) || {};\n } else if (treeData) {\n // If `treeData` changed, we also need check it\n checkedKeyEntity = parseCheckedKeys(props.checkedKeys) || {\n checkedKeys: prevState.checkedKeys,\n halfCheckedKeys: prevState.halfCheckedKeys\n };\n }\n if (checkedKeyEntity) {\n var _checkedKeyEntity = checkedKeyEntity,\n _checkedKeyEntity$che = _checkedKeyEntity.checkedKeys,\n checkedKeys = _checkedKeyEntity$che === void 0 ? [] : _checkedKeyEntity$che,\n _checkedKeyEntity$hal = _checkedKeyEntity.halfCheckedKeys,\n halfCheckedKeys = _checkedKeyEntity$hal === void 0 ? [] : _checkedKeyEntity$hal;\n if (!props.checkStrictly) {\n var conductKeys = conductCheck(checkedKeys, true, keyEntities);\n checkedKeys = conductKeys.checkedKeys;\n halfCheckedKeys = conductKeys.halfCheckedKeys;\n }\n newState.checkedKeys = checkedKeys;\n newState.halfCheckedKeys = halfCheckedKeys;\n }\n }\n // ================= loadedKeys ==================\n if (needSync('loadedKeys')) {\n newState.loadedKeys = props.loadedKeys;\n }\n return newState;\n }\n }]);\n return Tree;\n}(React.Component);\nTree.defaultProps = {\n prefixCls: 'rc-tree',\n showLine: false,\n showIcon: true,\n selectable: true,\n multiple: false,\n checkable: false,\n disabled: false,\n checkStrictly: false,\n draggable: false,\n defaultExpandParent: true,\n autoExpandParent: false,\n defaultExpandAll: false,\n defaultExpandedKeys: [],\n defaultCheckedKeys: [],\n defaultSelectedKeys: [],\n dropIndicatorRender: DropIndicator,\n allowDrop: function allowDrop() {\n return true;\n },\n expandAction: false\n};\nTree.TreeNode = TreeNode;\nexport default Tree;","import * as React from 'react';\nexport default function DropIndicator(_ref) {\n var dropPosition = _ref.dropPosition,\n dropLevelOffset = _ref.dropLevelOffset,\n indent = _ref.indent;\n var style = {\n pointerEvents: 'none',\n position: 'absolute',\n right: 0,\n backgroundColor: 'red',\n height: 2\n };\n switch (dropPosition) {\n case -1:\n style.top = 0;\n style.left = -dropLevelOffset * indent;\n break;\n case 1:\n style.bottom = 0;\n style.left = -dropLevelOffset * indent;\n break;\n case 0:\n style.bottom = 0;\n style.left = indent;\n break;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n style: style\n });\n}","import Tree from './Tree';\nimport TreeNode from './TreeNode';\nexport { TreeNode };\nexport default Tree;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\"];\n/* eslint-disable no-lonely-if */\n/**\n * Legacy code. Should avoid to use if you are new to import these code.\n */\nimport React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport TreeNode from './TreeNode';\nexport function arrDel(list, value) {\n if (!list) return [];\n var clone = list.slice();\n var index = clone.indexOf(value);\n if (index >= 0) {\n clone.splice(index, 1);\n }\n return clone;\n}\nexport function arrAdd(list, value) {\n var clone = (list || []).slice();\n if (clone.indexOf(value) === -1) {\n clone.push(value);\n }\n return clone;\n}\nexport function posToArr(pos) {\n return pos.split('-');\n}\nexport function getPosition(level, index) {\n return \"\".concat(level, \"-\").concat(index);\n}\nexport function isTreeNode(node) {\n return node && node.type && node.type.isTreeNode;\n}\nexport function getDragChildrenKeys(dragNodeKey, keyEntities) {\n // not contains self\n // self for left or right drag\n var dragChildrenKeys = [];\n var entity = keyEntities[dragNodeKey];\n function dig() {\n var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n list.forEach(function (_ref) {\n var key = _ref.key,\n children = _ref.children;\n dragChildrenKeys.push(key);\n dig(children);\n });\n }\n dig(entity.children);\n return dragChildrenKeys;\n}\nexport function isLastChild(treeNodeEntity) {\n if (treeNodeEntity.parent) {\n var posArr = posToArr(treeNodeEntity.pos);\n return Number(posArr[posArr.length - 1]) === treeNodeEntity.parent.children.length - 1;\n }\n return false;\n}\nexport function isFirstChild(treeNodeEntity) {\n var posArr = posToArr(treeNodeEntity.pos);\n return Number(posArr[posArr.length - 1]) === 0;\n}\n// Only used when drag, not affect SSR.\nexport function calcDropPosition(event, dragNode, targetNode, indent, startMousePosition, allowDrop, flattenedNodes, keyEntities, expandKeys, direction) {\n var _abstractDropNodeEnti;\n var clientX = event.clientX,\n clientY = event.clientY;\n var _event$target$getBoun = event.target.getBoundingClientRect(),\n top = _event$target$getBoun.top,\n height = _event$target$getBoun.height;\n // optional chain for testing\n var horizontalMouseOffset = (direction === 'rtl' ? -1 : 1) * (((startMousePosition === null || startMousePosition === void 0 ? void 0 : startMousePosition.x) || 0) - clientX);\n var rawDropLevelOffset = (horizontalMouseOffset - 12) / indent;\n // find abstract drop node by horizontal offset\n var abstractDropNodeEntity = keyEntities[targetNode.props.eventKey];\n if (clientY < top + height / 2) {\n // first half, set abstract drop node to previous node\n var nodeIndex = flattenedNodes.findIndex(function (flattenedNode) {\n return flattenedNode.key === abstractDropNodeEntity.key;\n });\n var prevNodeIndex = nodeIndex <= 0 ? 0 : nodeIndex - 1;\n var prevNodeKey = flattenedNodes[prevNodeIndex].key;\n abstractDropNodeEntity = keyEntities[prevNodeKey];\n }\n var initialAbstractDropNodeKey = abstractDropNodeEntity.key;\n var abstractDragOverEntity = abstractDropNodeEntity;\n var dragOverNodeKey = abstractDropNodeEntity.key;\n var dropPosition = 0;\n var dropLevelOffset = 0;\n // Only allow cross level drop when dragging on a non-expanded node\n if (!expandKeys.includes(initialAbstractDropNodeKey)) {\n for (var i = 0; i < rawDropLevelOffset; i += 1) {\n if (isLastChild(abstractDropNodeEntity)) {\n abstractDropNodeEntity = abstractDropNodeEntity.parent;\n dropLevelOffset += 1;\n } else {\n break;\n }\n }\n }\n var abstractDragDataNode = dragNode.props.data;\n var abstractDropDataNode = abstractDropNodeEntity.node;\n var dropAllowed = true;\n if (isFirstChild(abstractDropNodeEntity) && abstractDropNodeEntity.level === 0 && clientY < top + height / 2 && allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: -1\n }) && abstractDropNodeEntity.key === targetNode.props.eventKey) {\n // first half of first node in first level\n dropPosition = -1;\n } else if ((abstractDragOverEntity.children || []).length && expandKeys.includes(dragOverNodeKey)) {\n // drop on expanded node\n // only allow drop inside\n if (allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: 0\n })) {\n dropPosition = 0;\n } else {\n dropAllowed = false;\n }\n } else if (dropLevelOffset === 0) {\n if (rawDropLevelOffset > -1.5) {\n // | Node | <- abstractDropNode\n // | -^-===== | <- mousePosition\n // 1. try drop after\n // 2. do not allow drop\n if (allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: 1\n })) {\n dropPosition = 1;\n } else {\n dropAllowed = false;\n }\n } else {\n // | Node | <- abstractDropNode\n // | ---==^== | <- mousePosition\n // whether it has children or doesn't has children\n // always\n // 1. try drop inside\n // 2. try drop after\n // 3. do not allow drop\n if (allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: 0\n })) {\n dropPosition = 0;\n } else if (allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: 1\n })) {\n dropPosition = 1;\n } else {\n dropAllowed = false;\n }\n }\n } else {\n // | Node1 | <- abstractDropNode\n // | Node2 |\n // --^--|----=====| <- mousePosition\n // 1. try insert after Node1\n // 2. do not allow drop\n if (allowDrop({\n dragNode: abstractDragDataNode,\n dropNode: abstractDropDataNode,\n dropPosition: 1\n })) {\n dropPosition = 1;\n } else {\n dropAllowed = false;\n }\n }\n return {\n dropPosition: dropPosition,\n dropLevelOffset: dropLevelOffset,\n dropTargetKey: abstractDropNodeEntity.key,\n dropTargetPos: abstractDropNodeEntity.pos,\n dragOverNodeKey: dragOverNodeKey,\n dropContainerKey: dropPosition === 0 ? null : ((_abstractDropNodeEnti = abstractDropNodeEntity.parent) === null || _abstractDropNodeEnti === void 0 ? void 0 : _abstractDropNodeEnti.key) || null,\n dropAllowed: dropAllowed\n };\n}\n/**\n * Return selectedKeys according with multiple prop\n * @param selectedKeys\n * @param props\n * @returns [string]\n */\nexport function calcSelectedKeys(selectedKeys, props) {\n if (!selectedKeys) return undefined;\n var multiple = props.multiple;\n if (multiple) {\n return selectedKeys.slice();\n }\n if (selectedKeys.length) {\n return [selectedKeys[0]];\n }\n return selectedKeys;\n}\nvar internalProcessProps = function internalProcessProps(props) {\n return props;\n};\nexport function convertDataToTree(treeData, processor) {\n if (!treeData) return [];\n var _ref2 = processor || {},\n _ref2$processProps = _ref2.processProps,\n processProps = _ref2$processProps === void 0 ? internalProcessProps : _ref2$processProps;\n var list = Array.isArray(treeData) ? treeData : [treeData];\n return list.map(function (_ref3) {\n var children = _ref3.children,\n props = _objectWithoutProperties(_ref3, _excluded);\n var childrenNodes = convertDataToTree(children, processor);\n return /*#__PURE__*/React.createElement(TreeNode, _extends({\n key: props.key\n }, processProps(props)), childrenNodes);\n });\n}\n/**\n * Parse `checkedKeys` to { checkedKeys, halfCheckedKeys } style\n */\nexport function parseCheckedKeys(keys) {\n if (!keys) {\n return null;\n }\n // Convert keys to object format\n var keyProps;\n if (Array.isArray(keys)) {\n // [Legacy] Follow the api doc\n keyProps = {\n checkedKeys: keys,\n halfCheckedKeys: undefined\n };\n } else if (_typeof(keys) === 'object') {\n keyProps = {\n checkedKeys: keys.checked || undefined,\n halfCheckedKeys: keys.halfChecked || undefined\n };\n } else {\n warning(false, '`checkedKeys` is not an array or an object');\n return null;\n }\n return keyProps;\n}\n/**\n * If user use `autoExpandParent` we should get the list of parent node\n * @param keyList\n * @param keyEntities\n */\nexport function conductExpandParent(keyList, keyEntities) {\n var expandedKeys = new Set();\n function conductUp(key) {\n if (expandedKeys.has(key)) return;\n var entity = keyEntities[key];\n if (!entity) return;\n expandedKeys.add(key);\n var parent = entity.parent,\n node = entity.node;\n if (node.disabled) return;\n if (parent) {\n conductUp(parent.key);\n }\n }\n (keyList || []).forEach(function (key) {\n conductUp(key);\n });\n return _toConsumableArray(expandedKeys);\n}","import warning from \"rc-util/es/warning\";\nfunction removeFromCheckedKeys(halfCheckedKeys, checkedKeys) {\n var filteredKeys = new Set();\n halfCheckedKeys.forEach(function (key) {\n if (!checkedKeys.has(key)) {\n filteredKeys.add(key);\n }\n });\n return filteredKeys;\n}\nexport function isCheckDisabled(node) {\n var _ref = node || {},\n disabled = _ref.disabled,\n disableCheckbox = _ref.disableCheckbox,\n checkable = _ref.checkable;\n return !!(disabled || disableCheckbox) || checkable === false;\n}\n// Fill miss keys\nfunction fillConductCheck(keys, levelEntities, maxLevel, syntheticGetCheckDisabled) {\n var checkedKeys = new Set(keys);\n var halfCheckedKeys = new Set();\n // Add checked keys top to bottom\n for (var level = 0; level <= maxLevel; level += 1) {\n var entities = levelEntities.get(level) || new Set();\n entities.forEach(function (entity) {\n var key = entity.key,\n node = entity.node,\n _entity$children = entity.children,\n children = _entity$children === void 0 ? [] : _entity$children;\n if (checkedKeys.has(key) && !syntheticGetCheckDisabled(node)) {\n children.filter(function (childEntity) {\n return !syntheticGetCheckDisabled(childEntity.node);\n }).forEach(function (childEntity) {\n checkedKeys.add(childEntity.key);\n });\n }\n });\n }\n // Add checked keys from bottom to top\n var visitedKeys = new Set();\n for (var _level = maxLevel; _level >= 0; _level -= 1) {\n var _entities = levelEntities.get(_level) || new Set();\n _entities.forEach(function (entity) {\n var parent = entity.parent,\n node = entity.node;\n // Skip if no need to check\n if (syntheticGetCheckDisabled(node) || !entity.parent || visitedKeys.has(entity.parent.key)) {\n return;\n }\n // Skip if parent is disabled\n if (syntheticGetCheckDisabled(entity.parent.node)) {\n visitedKeys.add(parent.key);\n return;\n }\n var allChecked = true;\n var partialChecked = false;\n (parent.children || []).filter(function (childEntity) {\n return !syntheticGetCheckDisabled(childEntity.node);\n }).forEach(function (_ref2) {\n var key = _ref2.key;\n var checked = checkedKeys.has(key);\n if (allChecked && !checked) {\n allChecked = false;\n }\n if (!partialChecked && (checked || halfCheckedKeys.has(key))) {\n partialChecked = true;\n }\n });\n if (allChecked) {\n checkedKeys.add(parent.key);\n }\n if (partialChecked) {\n halfCheckedKeys.add(parent.key);\n }\n visitedKeys.add(parent.key);\n });\n }\n return {\n checkedKeys: Array.from(checkedKeys),\n halfCheckedKeys: Array.from(removeFromCheckedKeys(halfCheckedKeys, checkedKeys))\n };\n}\n// Remove useless key\nfunction cleanConductCheck(keys, halfKeys, levelEntities, maxLevel, syntheticGetCheckDisabled) {\n var checkedKeys = new Set(keys);\n var halfCheckedKeys = new Set(halfKeys);\n // Remove checked keys from top to bottom\n for (var level = 0; level <= maxLevel; level += 1) {\n var entities = levelEntities.get(level) || new Set();\n entities.forEach(function (entity) {\n var key = entity.key,\n node = entity.node,\n _entity$children2 = entity.children,\n children = _entity$children2 === void 0 ? [] : _entity$children2;\n if (!checkedKeys.has(key) && !halfCheckedKeys.has(key) && !syntheticGetCheckDisabled(node)) {\n children.filter(function (childEntity) {\n return !syntheticGetCheckDisabled(childEntity.node);\n }).forEach(function (childEntity) {\n checkedKeys.delete(childEntity.key);\n });\n }\n });\n }\n // Remove checked keys form bottom to top\n halfCheckedKeys = new Set();\n var visitedKeys = new Set();\n for (var _level2 = maxLevel; _level2 >= 0; _level2 -= 1) {\n var _entities2 = levelEntities.get(_level2) || new Set();\n _entities2.forEach(function (entity) {\n var parent = entity.parent,\n node = entity.node;\n // Skip if no need to check\n if (syntheticGetCheckDisabled(node) || !entity.parent || visitedKeys.has(entity.parent.key)) {\n return;\n }\n // Skip if parent is disabled\n if (syntheticGetCheckDisabled(entity.parent.node)) {\n visitedKeys.add(parent.key);\n return;\n }\n var allChecked = true;\n var partialChecked = false;\n (parent.children || []).filter(function (childEntity) {\n return !syntheticGetCheckDisabled(childEntity.node);\n }).forEach(function (_ref3) {\n var key = _ref3.key;\n var checked = checkedKeys.has(key);\n if (allChecked && !checked) {\n allChecked = false;\n }\n if (!partialChecked && (checked || halfCheckedKeys.has(key))) {\n partialChecked = true;\n }\n });\n if (!allChecked) {\n checkedKeys.delete(parent.key);\n }\n if (partialChecked) {\n halfCheckedKeys.add(parent.key);\n }\n visitedKeys.add(parent.key);\n });\n }\n return {\n checkedKeys: Array.from(checkedKeys),\n halfCheckedKeys: Array.from(removeFromCheckedKeys(halfCheckedKeys, checkedKeys))\n };\n}\n/**\n * Conduct with keys.\n * @param keyList current key list\n * @param keyEntities key - dataEntity map\n * @param mode `fill` to fill missing key, `clean` to remove useless key\n */\nexport function conductCheck(keyList, checked, keyEntities, getCheckDisabled) {\n var warningMissKeys = [];\n var syntheticGetCheckDisabled;\n if (getCheckDisabled) {\n syntheticGetCheckDisabled = getCheckDisabled;\n } else {\n syntheticGetCheckDisabled = isCheckDisabled;\n }\n // We only handle exist keys\n var keys = new Set(keyList.filter(function (key) {\n var hasEntity = !!keyEntities[key];\n if (!hasEntity) {\n warningMissKeys.push(key);\n }\n return hasEntity;\n }));\n var levelEntities = new Map();\n var maxLevel = 0;\n // Convert entities by level for calculation\n Object.keys(keyEntities).forEach(function (key) {\n var entity = keyEntities[key];\n var level = entity.level;\n var levelSet = levelEntities.get(level);\n if (!levelSet) {\n levelSet = new Set();\n levelEntities.set(level, levelSet);\n }\n levelSet.add(entity);\n maxLevel = Math.max(maxLevel, level);\n });\n warning(!warningMissKeys.length, \"Tree missing follow keys: \".concat(warningMissKeys.slice(0, 100).map(function (key) {\n return \"'\".concat(key, \"'\");\n }).join(', ')));\n var result;\n if (checked === true) {\n result = fillConductCheck(keys, levelEntities, maxLevel, syntheticGetCheckDisabled);\n } else {\n result = cleanConductCheck(keys, checked.halfCheckedKeys, levelEntities, maxLevel, syntheticGetCheckDisabled);\n }\n return result;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport omit from \"rc-util/es/omit\";\nimport toArray from \"rc-util/es/Children/toArray\";\nimport warning from \"rc-util/es/warning\";\nimport { getPosition, isTreeNode } from '../util';\nexport function getKey(key, pos) {\n if (key !== null && key !== undefined) {\n return key;\n }\n return pos;\n}\nexport function fillFieldNames(fieldNames) {\n var _ref = fieldNames || {},\n title = _ref.title,\n _title = _ref._title,\n key = _ref.key,\n children = _ref.children;\n var mergedTitle = title || 'title';\n return {\n title: mergedTitle,\n _title: _title || [mergedTitle],\n key: key || 'key',\n children: children || 'children'\n };\n}\n/**\n * Warning if TreeNode do not provides key\n */\nexport function warningWithoutKey(treeData, fieldNames) {\n var keys = new Map();\n function dig(list) {\n var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (list || []).forEach(function (treeNode) {\n var key = treeNode[fieldNames.key];\n var children = treeNode[fieldNames.children];\n warning(key !== null && key !== undefined, \"Tree node must have a certain key: [\".concat(path).concat(key, \"]\"));\n var recordKey = String(key);\n warning(!keys.has(recordKey) || key === null || key === undefined, \"Same 'key' exist in the Tree: \".concat(recordKey));\n keys.set(recordKey, true);\n dig(children, \"\".concat(path).concat(recordKey, \" > \"));\n });\n }\n dig(treeData);\n}\n/**\n * Convert `children` of Tree into `treeData` structure.\n */\nexport function convertTreeToData(rootNodes) {\n function dig(node) {\n var treeNodes = toArray(node);\n return treeNodes.map(function (treeNode) {\n // Filter invalidate node\n if (!isTreeNode(treeNode)) {\n warning(!treeNode, 'Tree/TreeNode can only accept TreeNode as children.');\n return null;\n }\n var key = treeNode.key;\n var _treeNode$props = treeNode.props,\n children = _treeNode$props.children,\n rest = _objectWithoutProperties(_treeNode$props, _excluded);\n var dataNode = _objectSpread({\n key: key\n }, rest);\n var parsedChildren = dig(children);\n if (parsedChildren.length) {\n dataNode.children = parsedChildren;\n }\n return dataNode;\n }).filter(function (dataNode) {\n return dataNode;\n });\n }\n return dig(rootNodes);\n}\n/**\n * Flat nest tree data into flatten list. This is used for virtual list render.\n * @param treeNodeList Origin data node list\n * @param expandedKeys\n * need expanded keys, provides `true` means all expanded (used in `rc-tree-select`).\n */\nexport function flattenTreeData(treeNodeList, expandedKeys, fieldNames) {\n var _fillFieldNames = fillFieldNames(fieldNames),\n fieldTitles = _fillFieldNames._title,\n fieldKey = _fillFieldNames.key,\n fieldChildren = _fillFieldNames.children;\n var expandedKeySet = new Set(expandedKeys === true ? [] : expandedKeys);\n var flattenList = [];\n function dig(list) {\n var parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n return list.map(function (treeNode, index) {\n var pos = getPosition(parent ? parent.pos : '0', index);\n var mergedKey = getKey(treeNode[fieldKey], pos);\n // Pick matched title in field title list\n var mergedTitle;\n for (var i = 0; i < fieldTitles.length; i += 1) {\n var fieldTitle = fieldTitles[i];\n if (treeNode[fieldTitle] !== undefined) {\n mergedTitle = treeNode[fieldTitle];\n break;\n }\n }\n // Add FlattenDataNode into list\n var flattenNode = _objectSpread(_objectSpread({}, omit(treeNode, [].concat(_toConsumableArray(fieldTitles), [fieldKey, fieldChildren]))), {}, {\n title: mergedTitle,\n key: mergedKey,\n parent: parent,\n pos: pos,\n children: null,\n data: treeNode,\n isStart: [].concat(_toConsumableArray(parent ? parent.isStart : []), [index === 0]),\n isEnd: [].concat(_toConsumableArray(parent ? parent.isEnd : []), [index === list.length - 1])\n });\n flattenList.push(flattenNode);\n // Loop treeNode children\n if (expandedKeys === true || expandedKeySet.has(mergedKey)) {\n flattenNode.children = dig(treeNode[fieldChildren] || [], flattenNode);\n } else {\n flattenNode.children = [];\n }\n return flattenNode;\n });\n }\n dig(treeNodeList);\n return flattenList;\n}\n/**\n * Traverse all the data by `treeData`.\n * Please not use it out of the `rc-tree` since we may refactor this code.\n */\nexport function traverseDataNodes(dataNodes, callback,\n// To avoid too many params, let use config instead of origin param\nconfig) {\n var mergedConfig = {};\n if (_typeof(config) === 'object') {\n mergedConfig = config;\n } else {\n mergedConfig = {\n externalGetKey: config\n };\n }\n mergedConfig = mergedConfig || {};\n // Init config\n var _mergedConfig = mergedConfig,\n childrenPropName = _mergedConfig.childrenPropName,\n externalGetKey = _mergedConfig.externalGetKey,\n fieldNames = _mergedConfig.fieldNames;\n var _fillFieldNames2 = fillFieldNames(fieldNames),\n fieldKey = _fillFieldNames2.key,\n fieldChildren = _fillFieldNames2.children;\n var mergeChildrenPropName = childrenPropName || fieldChildren;\n // Get keys\n var syntheticGetKey;\n if (externalGetKey) {\n if (typeof externalGetKey === 'string') {\n syntheticGetKey = function syntheticGetKey(node) {\n return node[externalGetKey];\n };\n } else if (typeof externalGetKey === 'function') {\n syntheticGetKey = function syntheticGetKey(node) {\n return externalGetKey(node);\n };\n }\n } else {\n syntheticGetKey = function syntheticGetKey(node, pos) {\n return getKey(node[fieldKey], pos);\n };\n }\n // Process\n function processNode(node, index, parent, pathNodes) {\n var children = node ? node[mergeChildrenPropName] : dataNodes;\n var pos = node ? getPosition(parent.pos, index) : '0';\n var connectNodes = node ? [].concat(_toConsumableArray(pathNodes), [node]) : [];\n // Process node if is not root\n if (node) {\n var key = syntheticGetKey(node, pos);\n var data = {\n node: node,\n index: index,\n pos: pos,\n key: key,\n parentPos: parent.node ? parent.pos : null,\n level: parent.level + 1,\n nodes: connectNodes\n };\n callback(data);\n }\n // Process children node\n if (children) {\n children.forEach(function (subNode, subIndex) {\n processNode(subNode, subIndex, {\n node: node,\n pos: pos,\n level: parent ? parent.level + 1 : -1\n }, connectNodes);\n });\n }\n }\n processNode(null);\n}\n/**\n * Convert `treeData` into entity records.\n */\nexport function convertDataToEntities(dataNodes) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n initWrapper = _ref2.initWrapper,\n processEntity = _ref2.processEntity,\n onProcessFinished = _ref2.onProcessFinished,\n externalGetKey = _ref2.externalGetKey,\n childrenPropName = _ref2.childrenPropName,\n fieldNames = _ref2.fieldNames;\n var /** @deprecated Use `config.externalGetKey` instead */\n legacyExternalGetKey = arguments.length > 2 ? arguments[2] : undefined;\n // Init config\n var mergedExternalGetKey = externalGetKey || legacyExternalGetKey;\n var posEntities = {};\n var keyEntities = {};\n var wrapper = {\n posEntities: posEntities,\n keyEntities: keyEntities\n };\n if (initWrapper) {\n wrapper = initWrapper(wrapper) || wrapper;\n }\n traverseDataNodes(dataNodes, function (item) {\n var node = item.node,\n index = item.index,\n pos = item.pos,\n key = item.key,\n parentPos = item.parentPos,\n level = item.level,\n nodes = item.nodes;\n var entity = {\n node: node,\n nodes: nodes,\n index: index,\n key: key,\n pos: pos,\n level: level\n };\n var mergedKey = getKey(key, pos);\n posEntities[pos] = entity;\n keyEntities[mergedKey] = entity;\n // Fill children\n entity.parent = posEntities[parentPos];\n if (entity.parent) {\n entity.parent.children = entity.parent.children || [];\n entity.parent.children.push(entity);\n }\n if (processEntity) {\n processEntity(entity, wrapper);\n }\n }, {\n externalGetKey: mergedExternalGetKey,\n childrenPropName: childrenPropName,\n fieldNames: fieldNames\n });\n if (onProcessFinished) {\n onProcessFinished(wrapper);\n }\n return wrapper;\n}\n/**\n * Get TreeNode props with Tree props.\n */\nexport function getTreeNodeProps(key, _ref3) {\n var expandedKeys = _ref3.expandedKeys,\n selectedKeys = _ref3.selectedKeys,\n loadedKeys = _ref3.loadedKeys,\n loadingKeys = _ref3.loadingKeys,\n checkedKeys = _ref3.checkedKeys,\n halfCheckedKeys = _ref3.halfCheckedKeys,\n dragOverNodeKey = _ref3.dragOverNodeKey,\n dropPosition = _ref3.dropPosition,\n keyEntities = _ref3.keyEntities;\n var entity = keyEntities[key];\n var treeNodeProps = {\n eventKey: key,\n expanded: expandedKeys.indexOf(key) !== -1,\n selected: selectedKeys.indexOf(key) !== -1,\n loaded: loadedKeys.indexOf(key) !== -1,\n loading: loadingKeys.indexOf(key) !== -1,\n checked: checkedKeys.indexOf(key) !== -1,\n halfChecked: halfCheckedKeys.indexOf(key) !== -1,\n pos: String(entity ? entity.pos : ''),\n // [Legacy] Drag props\n // Since the interaction of drag is changed, the semantic of the props are\n // not accuracy, I think it should be finally removed\n dragOver: dragOverNodeKey === key && dropPosition === 0,\n dragOverGapTop: dragOverNodeKey === key && dropPosition === -1,\n dragOverGapBottom: dragOverNodeKey === key && dropPosition === 1\n };\n return treeNodeProps;\n}\nexport function convertNodePropsToEventData(props) {\n var data = props.data,\n expanded = props.expanded,\n selected = props.selected,\n checked = props.checked,\n loaded = props.loaded,\n loading = props.loading,\n halfChecked = props.halfChecked,\n dragOver = props.dragOver,\n dragOverGapTop = props.dragOverGapTop,\n dragOverGapBottom = props.dragOverGapBottom,\n pos = props.pos,\n active = props.active,\n eventKey = props.eventKey;\n var eventData = _objectSpread(_objectSpread({}, data), {}, {\n expanded: expanded,\n selected: selected,\n checked: checked,\n loaded: loaded,\n loading: loading,\n halfChecked: halfChecked,\n dragOver: dragOver,\n dragOverGapTop: dragOverGapTop,\n dragOverGapBottom: dragOverGapBottom,\n pos: pos,\n active: active,\n key: eventKey\n });\n if (!('props' in eventData)) {\n Object.defineProperty(eventData, 'props', {\n get: function get() {\n warning(false, 'Second param return from event is node data instead of TreeNode instance. Please read value directly instead of reading from `props`.');\n return props;\n }\n });\n }\n return eventData;\n}","import { useRef, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport ReactDOM from 'react-dom';\nimport canUseDom from \"./Dom/canUseDom\";\nvar Portal = /*#__PURE__*/forwardRef(function (props, ref) {\n var didUpdate = props.didUpdate,\n getContainer = props.getContainer,\n children = props.children;\n var parentRef = useRef();\n var containerRef = useRef();\n\n // Ref return nothing, only for wrapper check exist\n useImperativeHandle(ref, function () {\n return {};\n });\n\n // Create container in client side with sync to avoid useEffect not get ref\n var initRef = useRef(false);\n if (!initRef.current && canUseDom()) {\n containerRef.current = getContainer();\n parentRef.current = containerRef.current.parentNode;\n initRef.current = true;\n }\n\n // [Legacy] Used by `rc-trigger`\n useEffect(function () {\n didUpdate === null || didUpdate === void 0 ? void 0 : didUpdate(props);\n });\n useEffect(function () {\n // Restore container to original place\n // React 18 StrictMode will unmount first and mount back for effect test:\n // https://reactjs.org/blog/2022/03/29/react-v18.html#new-strict-mode-behaviors\n if (containerRef.current.parentNode === null && parentRef.current !== null) {\n parentRef.current.appendChild(containerRef.current);\n }\n return function () {\n var _containerRef$current, _containerRef$current2;\n // [Legacy] This should not be handle by Portal but parent PortalWrapper instead.\n // Since some component use `Portal` directly, we have to keep the logic here.\n (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : (_containerRef$current2 = _containerRef$current.parentNode) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.removeChild(containerRef.current);\n };\n }, []);\n return containerRef.current ? /*#__PURE__*/ReactDOM.createPortal(children, containerRef.current) : null;\n});\nexport default Portal;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n\nfunction isPointsEq(a1, a2, isAlignPoint) {\n if (isAlignPoint) {\n return a1[0] === a2[0];\n }\n\n return a1[0] === a2[0] && a1[1] === a2[1];\n}\n\nexport function getAlignFromPlacement(builtinPlacements, placementStr, align) {\n var baseAlign = builtinPlacements[placementStr] || {};\n return _objectSpread(_objectSpread({}, baseAlign), align);\n}\nexport function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {\n var points = align.points;\n var placements = Object.keys(builtinPlacements);\n\n for (var i = 0; i < placements.length; i += 1) {\n var placement = placements[i];\n\n if (isPointsEq(builtinPlacements[placement].points, points, isAlignPoint)) {\n return \"\".concat(prefixCls, \"-placement-\").concat(placement);\n }\n }\n\n return '';\n}","export function getMotion(_ref) {\n var prefixCls = _ref.prefixCls,\n motion = _ref.motion,\n animation = _ref.animation,\n transitionName = _ref.transitionName;\n\n if (motion) {\n return motion;\n }\n\n if (animation) {\n return {\n motionName: \"\".concat(prefixCls, \"-\").concat(animation)\n };\n }\n\n if (transitionName) {\n return {\n motionName: transitionName\n };\n }\n\n return null;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport { getMotion } from \"../utils/legacyUtil\";\nexport default function Mask(props) {\n var prefixCls = props.prefixCls,\n visible = props.visible,\n zIndex = props.zIndex,\n mask = props.mask,\n maskMotion = props.maskMotion,\n maskAnimation = props.maskAnimation,\n maskTransitionName = props.maskTransitionName;\n\n if (!mask) {\n return null;\n }\n\n var motion = {};\n\n if (maskMotion || maskTransitionName || maskAnimation) {\n motion = _objectSpread({\n motionAppear: true\n }, getMotion({\n motion: maskMotion,\n prefixCls: prefixCls,\n transitionName: maskTransitionName,\n animation: maskAnimation\n }));\n }\n\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motion, {\n visible: visible,\n removeOnLeave: true\n }), function (_ref) {\n var className = _ref.className;\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n zIndex: zIndex\n },\n className: classNames(\"\".concat(prefixCls, \"-mask\"), className)\n });\n });\n}","let vendorPrefix;\n\nconst jsCssMap = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n // IE did it wrong again ...\n ms: '-ms-',\n O: '-o-',\n};\n\nfunction getVendorPrefix() {\n if (vendorPrefix !== undefined) {\n return vendorPrefix;\n }\n vendorPrefix = '';\n const style = document.createElement('p').style;\n const testProp = 'Transform';\n for (const key in jsCssMap) {\n if (key + testProp in style) {\n vendorPrefix = key;\n }\n }\n return vendorPrefix;\n}\n\nfunction getTransitionName() {\n return getVendorPrefix()\n ? `${getVendorPrefix()}TransitionProperty`\n : 'transitionProperty';\n}\n\nexport function getTransformName() {\n return getVendorPrefix() ? `${getVendorPrefix()}Transform` : 'transform';\n}\n\nexport function setTransitionProperty(node, value) {\n const name = getTransitionName();\n if (name) {\n node.style[name] = value;\n if (name !== 'transitionProperty') {\n node.style.transitionProperty = value;\n }\n }\n}\n\nfunction setTransform(node, value) {\n const name = getTransformName();\n if (name) {\n node.style[name] = value;\n if (name !== 'transform') {\n node.style.transform = value;\n }\n }\n}\n\nexport function getTransitionProperty(node) {\n return node.style.transitionProperty || node.style[getTransitionName()];\n}\n\nexport function getTransformXY(node) {\n const style = window.getComputedStyle(node, null);\n const transform =\n style.getPropertyValue('transform') ||\n style.getPropertyValue(getTransformName());\n if (transform && transform !== 'none') {\n const matrix = transform.replace(/[^0-9\\-.,]/g, '').split(',');\n return {\n x: parseFloat(matrix[12] || matrix[4], 0),\n y: parseFloat(matrix[13] || matrix[5], 0),\n };\n }\n return {\n x: 0,\n y: 0,\n };\n}\n\nconst matrix2d = /matrix\\((.*)\\)/;\nconst matrix3d = /matrix3d\\((.*)\\)/;\n\nexport function setTransformXY(node, xy) {\n const style = window.getComputedStyle(node, null);\n const transform =\n style.getPropertyValue('transform') ||\n style.getPropertyValue(getTransformName());\n if (transform && transform !== 'none') {\n let arr;\n let match2d = transform.match(matrix2d);\n if (match2d) {\n match2d = match2d[1];\n arr = match2d.split(',').map(item => {\n return parseFloat(item, 10);\n });\n arr[4] = xy.x;\n arr[5] = xy.y;\n setTransform(node, `matrix(${arr.join(',')})`);\n } else {\n const match3d = transform.match(matrix3d)[1];\n arr = match3d.split(',').map(item => {\n return parseFloat(item, 10);\n });\n arr[12] = xy.x;\n arr[13] = xy.y;\n setTransform(node, `matrix3d(${arr.join(',')})`);\n }\n } else {\n setTransform(\n node,\n `translateX(${xy.x}px) translateY(${xy.y}px) translateZ(0)`,\n );\n }\n}\n","import {\n setTransitionProperty,\n getTransitionProperty,\n getTransformXY,\n setTransformXY,\n getTransformName,\n} from './propertyUtils';\n\nconst RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\n\nlet getComputedStyleX;\n\n// https://stackoverflow.com/a/3485654/3040605\nfunction forceRelayout(elem) {\n const originalStyle = elem.style.display;\n elem.style.display = 'none';\n elem.offsetHeight; // eslint-disable-line\n elem.style.display = originalStyle;\n}\n\nfunction css(el, name, v) {\n let value = v;\n if (typeof name === 'object') {\n for (const i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n return undefined;\n }\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value = `${value}px`;\n }\n el.style[name] = value;\n return undefined;\n }\n return getComputedStyleX(el, name);\n}\n\nfunction getClientPosition(elem) {\n let box;\n let x;\n let y;\n const doc = elem.ownerDocument;\n const body = doc.body;\n const docElem = doc && doc.documentElement;\n // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n box = elem.getBoundingClientRect();\n\n // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = Math.floor(box.left);\n y = Math.floor(box.top);\n\n // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n\n return {\n left: x,\n top: y,\n };\n}\n\nfunction getScroll(w, top) {\n let ret = w[`page${top ? 'Y' : 'X'}Offset`];\n const method = `scroll${top ? 'Top' : 'Left'}`;\n if (typeof ret !== 'number') {\n const d = w.document;\n // ie6,7,8 standard mode\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n const pos = getClientPosition(el);\n const doc = el.ownerDocument;\n const w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\n\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\nfunction isWindow(obj) {\n // must use == for ie8\n /* eslint eqeqeq:0 */\n return obj !== null && obj !== undefined && obj == obj.window;\n}\n\nfunction getDocument(node) {\n if (isWindow(node)) {\n return node.document;\n }\n if (node.nodeType === 9) {\n return node;\n }\n return node.ownerDocument;\n}\n\nfunction _getComputedStyle(elem, name, cs) {\n let computedStyle = cs;\n let val = '';\n const d = getDocument(elem);\n computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null);\n\n // https://github.com/kissyteam/kissy/issues/61\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nconst _RE_NUM_NO_PX = new RegExp(`^(${RE_NUM})(?!px)[a-z%]+$`, 'i');\nconst RE_POS = /^(top|right|bottom|left)$/;\nconst CURRENT_STYLE = 'currentStyle';\nconst RUNTIME_STYLE = 'runtimeStyle';\nconst LEFT = 'left';\nconst PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n let ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];\n\n // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n const style = elem.style;\n const left = style[LEFT];\n const rsLeft = elem[RUNTIME_STYLE][LEFT];\n\n // prevent flashing of content\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];\n\n // Put in the new values to get a computed value out\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX;\n\n // Revert the changed values\n style[LEFT] = left;\n\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n return ret === '' ? 'auto' : ret;\n}\n\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle\n ? _getComputedStyle\n : _getComputedStyleIE;\n}\n\nfunction getOffsetDirection(dir, option) {\n if (dir === 'left') {\n return option.useCssRight ? 'right' : dir;\n }\n return option.useCssBottom ? 'bottom' : dir;\n}\n\nfunction oppositeOffsetDirection(dir) {\n if (dir === 'left') {\n return 'right';\n } else if (dir === 'right') {\n return 'left';\n } else if (dir === 'top') {\n return 'bottom';\n } else if (dir === 'bottom') {\n return 'top';\n }\n}\n\n// 设置 elem 相对 elem.ownerDocument 的坐标\nfunction setLeftTop(elem, offset, option) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n let presetH = -999;\n let presetV = -999;\n const horizontalProperty = getOffsetDirection('left', option);\n const verticalProperty = getOffsetDirection('top', option);\n const oppositeHorizontalProperty = oppositeOffsetDirection(\n horizontalProperty,\n );\n const oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);\n\n if (horizontalProperty !== 'left') {\n presetH = 999;\n }\n\n if (verticalProperty !== 'top') {\n presetV = 999;\n }\n let originalTransition = '';\n const originalOffset = getOffset(elem);\n if ('left' in offset || 'top' in offset) {\n originalTransition = getTransitionProperty(elem) || '';\n setTransitionProperty(elem, 'none');\n }\n if ('left' in offset) {\n elem.style[oppositeHorizontalProperty] = '';\n elem.style[horizontalProperty] = `${presetH}px`;\n }\n if ('top' in offset) {\n elem.style[oppositeVerticalProperty] = '';\n elem.style[verticalProperty] = `${presetV}px`;\n }\n // force relayout\n forceRelayout(elem);\n const old = getOffset(elem);\n const originalStyle = {};\n for (const key in offset) {\n if (offset.hasOwnProperty(key)) {\n const dir = getOffsetDirection(key, option);\n const preset = key === 'left' ? presetH : presetV;\n const off = originalOffset[key] - old[key];\n if (dir === key) {\n originalStyle[dir] = preset + off;\n } else {\n originalStyle[dir] = preset - off;\n }\n }\n }\n css(elem, originalStyle);\n // force relayout\n forceRelayout(elem);\n if ('left' in offset || 'top' in offset) {\n setTransitionProperty(elem, originalTransition);\n }\n const ret = {};\n for (const key in offset) {\n if (offset.hasOwnProperty(key)) {\n const dir = getOffsetDirection(key, option);\n const off = offset[key] - originalOffset[key];\n if (key === dir) {\n ret[dir] = originalStyle[dir] + off;\n } else {\n ret[dir] = originalStyle[dir] - off;\n }\n }\n }\n css(elem, ret);\n}\n\nfunction setTransform(elem, offset) {\n const originalOffset = getOffset(elem);\n const originalXY = getTransformXY(elem);\n const resultXY = { x: originalXY.x, y: originalXY.y };\n if ('left' in offset) {\n resultXY.x = originalXY.x + offset.left - originalOffset.left;\n }\n if ('top' in offset) {\n resultXY.y = originalXY.y + offset.top - originalOffset.top;\n }\n setTransformXY(elem, resultXY);\n}\n\nfunction setOffset(elem, offset, option) {\n if (option.ignoreShake) {\n const oriOffset = getOffset(elem);\n\n const oLeft = oriOffset.left.toFixed(0);\n const oTop = oriOffset.top.toFixed(0);\n const tLeft = offset.left.toFixed(0);\n const tTop = offset.top.toFixed(0);\n\n if (oLeft === tLeft && oTop === tTop) {\n return;\n }\n }\n\n if (option.useCssRight || option.useCssBottom) {\n setLeftTop(elem, offset, option);\n } else if (\n option.useCssTransform &&\n getTransformName() in document.body.style\n ) {\n setTransform(elem, offset, option);\n } else {\n setLeftTop(elem, offset, option);\n }\n}\n\nfunction each(arr, fn) {\n for (let i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nconst BOX_MODELS = ['margin', 'border', 'padding'];\nconst CONTENT_INDEX = -1;\nconst PADDING_INDEX = 2;\nconst BORDER_INDEX = 1;\nconst MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n const old = {};\n const style = elem.style;\n let name;\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n let value = 0;\n let prop;\n let j;\n let i;\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n if (prop) {\n for (i = 0; i < which.length; i++) {\n let cssProp;\n if (prop === 'border') {\n cssProp = `${prop}${which[i]}Width`;\n } else {\n cssProp = prop + which[i];\n }\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n return value;\n}\n\nconst domUtils = {\n getParent(element) {\n let parent = element;\n do {\n if (parent.nodeType === 11 && parent.host) {\n parent = parent.host;\n } else {\n parent = parent.parentNode;\n }\n } while (parent && parent.nodeType !== 1 && parent.nodeType !== 9);\n return parent;\n },\n};\n\neach(['Width', 'Height'], name => {\n domUtils[`doc${name}`] = refWin => {\n const d = refWin.document;\n return Math.max(\n // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement[`scroll${name}`],\n // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body[`scroll${name}`],\n domUtils[`viewport${name}`](d),\n );\n };\n\n domUtils[`viewport${name}`] = win => {\n // pc browser includes scrollbar in window.innerWidth\n const prop = `client${name}`;\n const doc = win.document;\n const body = doc.body;\n const documentElement = doc.documentElement;\n const documentElementProp = documentElement[prop];\n // 标准模式取 documentElement\n // backcompat 取 body\n return (\n (doc.compatMode === 'CSS1Compat' && documentElementProp) ||\n (body && body[prop]) ||\n documentElementProp\n );\n };\n});\n\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\nfunction getWH(elem, name, ex) {\n let extra = ex;\n if (isWindow(elem)) {\n return name === 'width'\n ? domUtils.viewportWidth(elem)\n : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width'\n ? domUtils.docWidth(elem)\n : domUtils.docHeight(elem);\n }\n const which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n let borderBoxValue =\n name === 'width'\n ? Math.floor(elem.getBoundingClientRect().width)\n : Math.floor(elem.getBoundingClientRect().height);\n const isBorderBox = isBorderBoxFn(elem);\n let cssBoxValue = 0;\n if (\n borderBoxValue === null ||\n borderBoxValue === undefined ||\n borderBoxValue <= 0\n ) {\n borderBoxValue = undefined;\n // Fall back to computed then un computed css if necessary\n cssBoxValue = getComputedStyleX(elem, name);\n if (\n cssBoxValue === null ||\n cssBoxValue === undefined ||\n Number(cssBoxValue) < 0\n ) {\n cssBoxValue = elem.style[name] || 0;\n }\n // Normalize '', auto, and prepare for extra\n cssBoxValue = Math.floor(parseFloat(cssBoxValue)) || 0;\n }\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n const borderBoxValueOrIsBorderBox =\n borderBoxValue !== undefined || isBorderBox;\n const val = borderBoxValue || cssBoxValue;\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which);\n }\n return cssBoxValue;\n } else if (borderBoxValueOrIsBorderBox) {\n if (extra === BORDER_INDEX) {\n return val;\n }\n return (\n val +\n (extra === PADDING_INDEX\n ? -getPBMWidth(elem, ['border'], which)\n : getPBMWidth(elem, ['margin'], which))\n );\n }\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);\n}\n\nconst cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block',\n};\n\n// fix #119 : https://github.com/kissyteam/kissy/issues/119\nfunction getWHIgnoreDisplay(...args) {\n let val;\n const elem = args[0];\n // in case elem is window\n // elem.offsetWidth === undefined\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, () => {\n val = getWH.apply(undefined, args);\n });\n }\n return val;\n}\n\neach(['width', 'height'], name => {\n const first = name.charAt(0).toUpperCase() + name.slice(1);\n domUtils[`outer${first}`] = (el, includeMargin) => {\n return (\n el &&\n getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX)\n );\n };\n const which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = (elem, v) => {\n let val = v;\n if (val !== undefined) {\n if (elem) {\n const isBorderBox = isBorderBoxFn(elem);\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which);\n }\n return css(elem, name, val);\n }\n return undefined;\n }\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\nfunction mix(to, from) {\n for (const i in from) {\n if (from.hasOwnProperty(i)) {\n to[i] = from[i];\n }\n }\n return to;\n}\n\nconst utils = {\n getWindow(node) {\n if (node && node.document && node.setTimeout) {\n return node;\n }\n const doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n getDocument,\n offset(el, value, option) {\n if (typeof value !== 'undefined') {\n setOffset(el, value, option || {});\n } else {\n return getOffset(el);\n }\n },\n isWindow,\n each,\n css,\n clone(obj) {\n let i;\n const ret = {};\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n const overflow = obj.overflow;\n if (overflow) {\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n }\n return ret;\n },\n mix,\n getWindowScrollLeft(w) {\n return getScrollLeft(w);\n },\n getWindowScrollTop(w) {\n return getScrollTop(w);\n },\n merge(...args) {\n const ret = {};\n for (let i = 0; i < args.length; i++) {\n utils.mix(ret, args[i]);\n }\n return ret;\n },\n viewportWidth: 0,\n viewportHeight: 0,\n};\n\nmix(utils, domUtils);\n\nexport default utils;\n","import utils from './utils';\n\n/**\n * 得到会导致元素显示不全的祖先元素\n */\nconst { getParent } = utils;\n\nfunction getOffsetParent(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return null;\n }\n // ie 这个也不是完全可行\n /*\n <div style=\"width: 50px;height: 100px;overflow: hidden\">\n <div style=\"width: 50px;height: 100px;position: relative;\" id=\"d6\">\n 元素 6 高 100px 宽 50px<br/>\n </div>\n </div>\n */\n // element.offsetParent does the right thing in ie7 and below. Return parent with layout!\n // In other browsers it only includes elements with position absolute, relative or\n // fixed, not elements with overflow set to auto or scroll.\n // if (UA.ie && ieMode < 8) {\n // return element.offsetParent;\n // }\n // 统一的 offsetParent 方法\n const doc = utils.getDocument(element);\n const body = doc.body;\n let parent;\n let positionStyle = utils.css(element, 'position');\n const skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';\n\n if (!skipStatic) {\n return element.nodeName.toLowerCase() === 'html'\n ? null\n : getParent(element);\n }\n\n for (\n parent = getParent(element);\n parent && parent !== body && parent.nodeType !== 9;\n parent = getParent(parent)\n ) {\n positionStyle = utils.css(parent, 'position');\n if (positionStyle !== 'static') {\n return parent;\n }\n }\n return null;\n}\n\nexport default getOffsetParent;\n","import utils from './utils';\n\nconst { getParent } = utils;\n\nexport default function isAncestorFixed(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return false;\n }\n\n const doc = utils.getDocument(element);\n const body = doc.body;\n let parent = null;\n for (\n parent = getParent(element);\n // 修复元素位于 document.documentElement 下导致崩溃问题\n parent && parent !== body && parent !== doc;\n parent = getParent(parent)\n ) {\n const positionStyle = utils.css(parent, 'position');\n if (positionStyle === 'fixed') {\n return true;\n }\n }\n return false;\n}\n","import utils from './utils';\nimport getOffsetParent from './getOffsetParent';\nimport isAncestorFixed from './isAncestorFixed';\n\n/**\n * 获得元素的显示部分的区域\n */\nfunction getVisibleRectForElement(element, alwaysByViewport) {\n const visibleRect = {\n left: 0,\n right: Infinity,\n top: 0,\n bottom: Infinity,\n };\n let el = getOffsetParent(element);\n const doc = utils.getDocument(element);\n const win = doc.defaultView || doc.parentWindow;\n const body = doc.body;\n const documentElement = doc.documentElement;\n\n // Determine the size of the visible rect by climbing the dom accounting for\n // all scrollable containers.\n while (el) {\n // clientWidth is zero for inline block elements in ie.\n if (\n (navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) &&\n // body may have overflow set on it, yet we still get the entire\n // viewport. In some browsers, el.offsetParent may be\n // document.documentElement, so check for that too.\n (el !== body &&\n el !== documentElement &&\n utils.css(el, 'overflow') !== 'visible')\n ) {\n const pos = utils.offset(el);\n // add border\n pos.left += el.clientLeft;\n pos.top += el.clientTop;\n visibleRect.top = Math.max(visibleRect.top, pos.top);\n visibleRect.right = Math.min(\n visibleRect.right,\n // consider area without scrollBar\n pos.left + el.clientWidth,\n );\n visibleRect.bottom = Math.min(\n visibleRect.bottom,\n pos.top + el.clientHeight,\n );\n visibleRect.left = Math.max(visibleRect.left, pos.left);\n } else if (el === body || el === documentElement) {\n break;\n }\n el = getOffsetParent(el);\n }\n\n // Set element position to fixed\n // make sure absolute element itself don't affect it's visible area\n // https://github.com/ant-design/ant-design/issues/7601\n let originalPosition = null;\n if (!utils.isWindow(element) && element.nodeType !== 9) {\n originalPosition = element.style.position;\n const position = utils.css(element, 'position');\n if (position === 'absolute') {\n element.style.position = 'fixed';\n }\n }\n\n const scrollX = utils.getWindowScrollLeft(win);\n const scrollY = utils.getWindowScrollTop(win);\n const viewportWidth = utils.viewportWidth(win);\n const viewportHeight = utils.viewportHeight(win);\n let documentWidth = documentElement.scrollWidth;\n let documentHeight = documentElement.scrollHeight;\n\n // scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.\n // We should cut this ourself.\n const bodyStyle = window.getComputedStyle(body);\n if (bodyStyle.overflowX === 'hidden') {\n documentWidth = win.innerWidth;\n }\n if (bodyStyle.overflowY === 'hidden') {\n documentHeight = win.innerHeight;\n }\n\n // Reset element position after calculate the visible area\n if (element.style) {\n element.style.position = originalPosition;\n }\n\n if (alwaysByViewport || isAncestorFixed(element)) {\n // Clip by viewport's size.\n visibleRect.left = Math.max(visibleRect.left, scrollX);\n visibleRect.top = Math.max(visibleRect.top, scrollY);\n visibleRect.right = Math.min(visibleRect.right, scrollX + viewportWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + viewportHeight);\n } else {\n // Clip by document's size.\n const maxVisibleWidth = Math.max(documentWidth, scrollX + viewportWidth);\n visibleRect.right = Math.min(visibleRect.right, maxVisibleWidth);\n\n const maxVisibleHeight = Math.max(documentHeight, scrollY + viewportHeight);\n visibleRect.bottom = Math.min(visibleRect.bottom, maxVisibleHeight);\n }\n\n return visibleRect.top >= 0 &&\n visibleRect.left >= 0 &&\n visibleRect.bottom > visibleRect.top &&\n visibleRect.right > visibleRect.left\n ? visibleRect\n : null;\n}\n\nexport default getVisibleRectForElement;\n","import utils from './utils';\n\nfunction getRegion(node) {\n let offset;\n let w;\n let h;\n if (!utils.isWindow(node) && node.nodeType !== 9) {\n offset = utils.offset(node);\n w = utils.outerWidth(node);\n h = utils.outerHeight(node);\n } else {\n const win = utils.getWindow(node);\n offset = {\n left: utils.getWindowScrollLeft(win),\n top: utils.getWindowScrollTop(win),\n };\n w = utils.viewportWidth(win);\n h = utils.viewportHeight(win);\n }\n offset.width = w;\n offset.height = h;\n return offset;\n}\n\nexport default getRegion;\n","/**\n * 获取 node 上的 align 对齐点 相对于页面的坐标\n */\n\nfunction getAlignOffset(region, align) {\n const V = align.charAt(0);\n const H = align.charAt(1);\n const w = region.width;\n const h = region.height;\n\n let x = region.left;\n let y = region.top;\n\n if (V === 'c') {\n y += h / 2;\n } else if (V === 'b') {\n y += h;\n }\n\n if (H === 'c') {\n x += w / 2;\n } else if (H === 'r') {\n x += w;\n }\n\n return {\n left: x,\n top: y,\n };\n}\n\nexport default getAlignOffset;\n","import getAlignOffset from './getAlignOffset';\n\nfunction getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset) {\n const p1 = getAlignOffset(refNodeRegion, points[1]);\n const p2 = getAlignOffset(elRegion, points[0]);\n const diff = [p2.left - p1.left, p2.top - p1.top];\n\n return {\n left: Math.round(elRegion.left - diff[0] + offset[0] - targetOffset[0]),\n top: Math.round(elRegion.top - diff[1] + offset[1] - targetOffset[1]),\n };\n}\n\nexport default getElFuturePos;\n","/**\n * align dom node flexibly\n * @author yiminghe@gmail.com\n */\n\nimport utils from '../utils';\nimport getVisibleRectForElement from '../getVisibleRectForElement';\nimport adjustForViewport from '../adjustForViewport';\nimport getRegion from '../getRegion';\nimport getElFuturePos from '../getElFuturePos';\n\n// http://yiminghe.iteye.com/blog/1124720\n\nfunction isFailX(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.left < visibleRect.left ||\n elFuturePos.left + elRegion.width > visibleRect.right\n );\n}\n\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.top < visibleRect.top ||\n elFuturePos.top + elRegion.height > visibleRect.bottom\n );\n}\n\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.left > visibleRect.right ||\n elFuturePos.left + elRegion.width < visibleRect.left\n );\n}\n\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.top > visibleRect.bottom ||\n elFuturePos.top + elRegion.height < visibleRect.top\n );\n}\n\nfunction flip(points, reg, map) {\n const ret = [];\n utils.each(points, p => {\n ret.push(\n p.replace(reg, m => {\n return map[m];\n }),\n );\n });\n return ret;\n}\n\nfunction flipOffset(offset, index) {\n offset[index] = -offset[index];\n return offset;\n}\n\nfunction convertOffset(str, offsetLen) {\n let n;\n if (/%$/.test(str)) {\n n = (parseInt(str.substring(0, str.length - 1), 10) / 100) * offsetLen;\n } else {\n n = parseInt(str, 10);\n }\n return n || 0;\n}\n\nfunction normalizeOffset(offset, el) {\n offset[0] = convertOffset(offset[0], el.width);\n offset[1] = convertOffset(offset[1], el.height);\n}\n\n/**\n * @param el\n * @param tgtRegion 参照节点所占的区域: { left, top, width, height }\n * @param align\n */\nfunction doAlign(el, tgtRegion, align, isTgtRegionVisible) {\n let points = align.points;\n let offset = align.offset || [0, 0];\n let targetOffset = align.targetOffset || [0, 0];\n let overflow = align.overflow;\n const source = align.source || el;\n offset = [].concat(offset);\n targetOffset = [].concat(targetOffset);\n overflow = overflow || {};\n const newOverflowCfg = {};\n let fail = 0;\n const alwaysByViewport = !!(overflow && overflow.alwaysByViewport);\n // 当前节点可以被放置的显示区域\n const visibleRect = getVisibleRectForElement(source, alwaysByViewport);\n // 当前节点所占的区域, left/top/width/height\n const elRegion = getRegion(source);\n // 将 offset 转换成数值,支持百分比\n normalizeOffset(offset, elRegion);\n normalizeOffset(targetOffset, tgtRegion);\n // 当前节点将要被放置的位置\n let elFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n points,\n offset,\n targetOffset,\n );\n // 当前节点将要所处的区域\n let newElRegion = utils.merge(elRegion, elFuturePos);\n\n // 如果可视区域不能完全放置当前节点时允许调整\n if (\n visibleRect &&\n (overflow.adjustX || overflow.adjustY) &&\n isTgtRegionVisible\n ) {\n if (overflow.adjustX) {\n // 如果横向不能放下\n if (isFailX(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n const newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l',\n });\n // 偏移量也反下\n const newOffset = flipOffset(offset, 0);\n const newTargetOffset = flipOffset(targetOffset, 0);\n const newElFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n newPoints,\n newOffset,\n newTargetOffset,\n );\n\n if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n if (overflow.adjustY) {\n // 如果纵向不能放下\n if (isFailY(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n const newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't',\n });\n // 偏移量也反下\n const newOffset = flipOffset(offset, 1);\n const newTargetOffset = flipOffset(targetOffset, 1);\n const newElFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n newPoints,\n newOffset,\n newTargetOffset,\n );\n\n if (!isCompleteFailY(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n // 如果失败,重新计算当前节点将要被放置的位置\n if (fail) {\n elFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n points,\n offset,\n targetOffset,\n );\n utils.mix(newElRegion, elFuturePos);\n }\n const isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);\n const isStillFailY = isFailY(elFuturePos, elRegion, visibleRect);\n // 检查反下后的位置是否可以放下了,如果仍然放不下:\n // 1. 复原修改过的定位参数\n if (isStillFailX || isStillFailY) {\n let newPoints = points;\n\n // 重置对应部分的翻转逻辑\n if (isStillFailX) {\n newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l',\n });\n }\n if (isStillFailY) {\n newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't',\n });\n }\n\n points = newPoints;\n\n offset = align.offset || [0, 0];\n targetOffset = align.targetOffset || [0, 0];\n }\n // 2. 只有指定了可以调整当前方向才调整\n newOverflowCfg.adjustX = overflow.adjustX && isStillFailX;\n newOverflowCfg.adjustY = overflow.adjustY && isStillFailY;\n\n // 确实要调整,甚至可能会调整高度宽度\n if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {\n newElRegion = adjustForViewport(\n elFuturePos,\n elRegion,\n visibleRect,\n newOverflowCfg,\n );\n }\n }\n\n // need judge to in case set fixed with in css on height auto element\n if (newElRegion.width !== elRegion.width) {\n utils.css(\n source,\n 'width',\n utils.width(source) + newElRegion.width - elRegion.width,\n );\n }\n\n if (newElRegion.height !== elRegion.height) {\n utils.css(\n source,\n 'height',\n utils.height(source) + newElRegion.height - elRegion.height,\n );\n }\n\n // https://github.com/kissyteam/kissy/issues/190\n // 相对于屏幕位置没变,而 left/top 变了\n // 例如 <div 'relative'><el absolute></div>\n utils.offset(\n source,\n {\n left: newElRegion.left,\n top: newElRegion.top,\n },\n {\n useCssRight: align.useCssRight,\n useCssBottom: align.useCssBottom,\n useCssTransform: align.useCssTransform,\n ignoreShake: align.ignoreShake,\n },\n );\n\n return {\n points,\n offset,\n targetOffset,\n overflow: newOverflowCfg,\n };\n}\n\nexport default doAlign;\n/**\n * 2012-04-26 yiminghe@gmail.com\n * - 优化智能对齐算法\n * - 慎用 resizeXX\n *\n * 2011-07-13 yiminghe@gmail.com note:\n * - 增加智能对齐,以及大小调整选项\n **/\n","import utils from './utils';\n\nfunction adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) {\n const pos = utils.clone(elFuturePos);\n const size = {\n width: elRegion.width,\n height: elRegion.height,\n };\n\n if (overflow.adjustX && pos.left < visibleRect.left) {\n pos.left = visibleRect.left;\n }\n\n // Left edge inside and right edge outside viewport, try to resize it.\n if (\n overflow.resizeWidth &&\n pos.left >= visibleRect.left &&\n pos.left + size.width > visibleRect.right\n ) {\n size.width -= pos.left + size.width - visibleRect.right;\n }\n\n // Right edge outside viewport, try to move it.\n if (overflow.adjustX && pos.left + size.width > visibleRect.right) {\n // 保证左边界和可视区域左边界对齐\n pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);\n }\n\n // Top edge outside viewport, try to move it.\n if (overflow.adjustY && pos.top < visibleRect.top) {\n pos.top = visibleRect.top;\n }\n\n // Top edge inside and bottom edge outside viewport, try to resize it.\n if (\n overflow.resizeHeight &&\n pos.top >= visibleRect.top &&\n pos.top + size.height > visibleRect.bottom\n ) {\n size.height -= pos.top + size.height - visibleRect.bottom;\n }\n\n // Bottom edge outside viewport, try to move it.\n if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {\n // 保证上边界和可视区域上边界对齐\n pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top);\n }\n\n return utils.mix(pos, size);\n}\n\nexport default adjustForViewport;\n","import doAlign from './align';\nimport getOffsetParent from '../getOffsetParent';\nimport getVisibleRectForElement from '../getVisibleRectForElement';\nimport getRegion from '../getRegion';\n\nfunction isOutOfVisibleRect(target, alwaysByViewport) {\n const visibleRect = getVisibleRectForElement(target, alwaysByViewport);\n const targetRegion = getRegion(target);\n\n return (\n !visibleRect ||\n targetRegion.left + targetRegion.width <= visibleRect.left ||\n targetRegion.top + targetRegion.height <= visibleRect.top ||\n targetRegion.left >= visibleRect.right ||\n targetRegion.top >= visibleRect.bottom\n );\n}\n\nfunction alignElement(el, refNode, align) {\n const target = align.target || refNode;\n const refNodeRegion = getRegion(target);\n\n const isTargetNotOutOfVisible = !isOutOfVisibleRect(\n target,\n align.overflow && align.overflow.alwaysByViewport,\n );\n\n return doAlign(el, refNodeRegion, align, isTargetNotOutOfVisible);\n}\n\nalignElement.__getOffsetParent = getOffsetParent;\n\nalignElement.__getVisibleRectForElement = getVisibleRectForElement;\n\nexport default alignElement;\n","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport ResizeObserver from 'resize-observer-polyfill';\nimport contains from \"rc-util/es/Dom/contains\";\nexport function isSamePoint(prev, next) {\n if (prev === next) return true;\n if (!prev || !next) return false;\n\n if ('pageX' in next && 'pageY' in next) {\n return prev.pageX === next.pageX && prev.pageY === next.pageY;\n }\n\n if ('clientX' in next && 'clientY' in next) {\n return prev.clientX === next.clientX && prev.clientY === next.clientY;\n }\n\n return false;\n}\nexport function restoreFocus(activeElement, container) {\n // Focus back if is in the container\n if (activeElement !== document.activeElement && contains(container, activeElement) && typeof activeElement.focus === 'function') {\n activeElement.focus();\n }\n}\nexport function monitorResize(element, callback) {\n var prevWidth = null;\n var prevHeight = null;\n\n function onResize(_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n target = _ref2[0].target;\n\n if (!document.documentElement.contains(target)) return;\n\n var _target$getBoundingCl = target.getBoundingClientRect(),\n width = _target$getBoundingCl.width,\n height = _target$getBoundingCl.height;\n\n var fixedWidth = Math.floor(width);\n var fixedHeight = Math.floor(height);\n\n if (prevWidth !== fixedWidth || prevHeight !== fixedHeight) {\n // https://webkit.org/blog/9997/resizeobserver-in-webkit/\n Promise.resolve().then(function () {\n callback({\n width: fixedWidth,\n height: fixedHeight\n });\n });\n }\n\n prevWidth = fixedWidth;\n prevHeight = fixedHeight;\n }\n\n var resizeObserver = new ResizeObserver(onResize);\n\n if (element) {\n resizeObserver.observe(element);\n }\n\n return function () {\n resizeObserver.disconnect();\n };\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\n/**\n * Removed props:\n * - childrenProps\n */\nimport { alignElement, alignPoint } from 'dom-align';\nimport isEqual from \"rc-util/es/isEqual\";\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport React from 'react';\nimport useBuffer from \"./hooks/useBuffer\";\nimport { isSamePoint, monitorResize, restoreFocus } from \"./util\";\n\nfunction getElement(func) {\n if (typeof func !== 'function') return null;\n return func();\n}\n\nfunction getPoint(point) {\n if (_typeof(point) !== 'object' || !point) return null;\n return point;\n}\n\nvar Align = function Align(_ref, ref) {\n var children = _ref.children,\n disabled = _ref.disabled,\n target = _ref.target,\n align = _ref.align,\n onAlign = _ref.onAlign,\n monitorWindowResize = _ref.monitorWindowResize,\n _ref$monitorBufferTim = _ref.monitorBufferTime,\n monitorBufferTime = _ref$monitorBufferTim === void 0 ? 0 : _ref$monitorBufferTim;\n var cacheRef = React.useRef({});\n /** Popup node ref */\n\n var nodeRef = React.useRef();\n var childNode = React.Children.only(children); // ===================== Align ======================\n // We save the props here to avoid closure makes props ood\n\n var forceAlignPropsRef = React.useRef({});\n forceAlignPropsRef.current.disabled = disabled;\n forceAlignPropsRef.current.target = target;\n forceAlignPropsRef.current.align = align;\n forceAlignPropsRef.current.onAlign = onAlign;\n\n var _useBuffer = useBuffer(function () {\n var _forceAlignPropsRef$c = forceAlignPropsRef.current,\n latestDisabled = _forceAlignPropsRef$c.disabled,\n latestTarget = _forceAlignPropsRef$c.target,\n latestAlign = _forceAlignPropsRef$c.align,\n latestOnAlign = _forceAlignPropsRef$c.onAlign;\n var source = nodeRef.current;\n\n if (!latestDisabled && latestTarget && source) {\n var _result;\n\n var _element = getElement(latestTarget);\n\n var _point = getPoint(latestTarget);\n\n cacheRef.current.element = _element;\n cacheRef.current.point = _point;\n cacheRef.current.align = latestAlign; // IE lose focus after element realign\n // We should record activeElement and restore later\n\n var _document = document,\n activeElement = _document.activeElement; // We only align when element is visible\n\n if (_element && isVisible(_element)) {\n _result = alignElement(source, _element, latestAlign);\n } else if (_point) {\n _result = alignPoint(source, _point, latestAlign);\n }\n\n restoreFocus(activeElement, source);\n\n if (latestOnAlign && _result) {\n latestOnAlign(source, _result);\n }\n\n return true;\n }\n\n return false;\n }, monitorBufferTime),\n _useBuffer2 = _slicedToArray(_useBuffer, 2),\n _forceAlign = _useBuffer2[0],\n cancelForceAlign = _useBuffer2[1]; // ===================== Effect =====================\n // Handle props change\n\n\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n element = _React$useState2[0],\n setElement = _React$useState2[1];\n\n var _React$useState3 = React.useState(),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n point = _React$useState4[0],\n setPoint = _React$useState4[1];\n\n useLayoutEffect(function () {\n setElement(getElement(target));\n setPoint(getPoint(target));\n });\n React.useEffect(function () {\n if (cacheRef.current.element !== element || !isSamePoint(cacheRef.current.point, point) || !isEqual(cacheRef.current.align, align)) {\n _forceAlign();\n }\n }); // Watch popup element resize\n\n React.useEffect(function () {\n var cancelFn = monitorResize(nodeRef.current, _forceAlign);\n return cancelFn;\n }, [nodeRef.current]); // Watch target element resize\n\n React.useEffect(function () {\n var cancelFn = monitorResize(element, _forceAlign);\n return cancelFn;\n }, [element]); // Listen for disabled change\n\n React.useEffect(function () {\n if (!disabled) {\n _forceAlign();\n } else {\n cancelForceAlign();\n }\n }, [disabled]); // Listen for window resize\n\n React.useEffect(function () {\n if (monitorWindowResize) {\n var cancelFn = addEventListener(window, 'resize', _forceAlign);\n return cancelFn.remove;\n }\n }, [monitorWindowResize]); // Clear all if unmount\n\n React.useEffect(function () {\n return function () {\n cancelForceAlign();\n };\n }, []); // ====================== Ref =======================\n\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: function forceAlign() {\n return _forceAlign(true);\n }\n };\n }); // ===================== Render =====================\n\n if ( /*#__PURE__*/React.isValidElement(childNode)) {\n childNode = /*#__PURE__*/React.cloneElement(childNode, {\n ref: composeRef(childNode.ref, nodeRef)\n });\n }\n\n return childNode;\n};\n\nvar RcAlign = /*#__PURE__*/React.forwardRef(Align);\nRcAlign.displayName = 'Align';\nexport default RcAlign;","import React from 'react';\nexport default (function (callback, buffer) {\n var calledRef = React.useRef(false);\n var timeoutRef = React.useRef(null);\n\n function cancelTrigger() {\n window.clearTimeout(timeoutRef.current);\n }\n\n function trigger(force) {\n cancelTrigger();\n\n if (!calledRef.current || force === true) {\n if (callback(force) === false) {\n // Not delay since callback cancelled self\n return;\n }\n\n calledRef.current = true;\n timeoutRef.current = window.setTimeout(function () {\n calledRef.current = false;\n }, buffer);\n } else {\n timeoutRef.current = window.setTimeout(function () {\n calledRef.current = false;\n trigger();\n }, buffer);\n }\n }\n\n return [trigger, function () {\n calledRef.current = false;\n cancelTrigger();\n }];\n});","import utils from '../utils';\nimport doAlign from './align';\n\n/**\n * `tgtPoint`: { pageX, pageY } or { clientX, clientY }.\n * If client position provided, will internal convert to page position.\n */\n\nfunction alignPoint(el, tgtPoint, align) {\n let pageX;\n let pageY;\n\n const doc = utils.getDocument(el);\n const win = doc.defaultView || doc.parentWindow;\n\n const scrollX = utils.getWindowScrollLeft(win);\n const scrollY = utils.getWindowScrollTop(win);\n const viewportWidth = utils.viewportWidth(win);\n const viewportHeight = utils.viewportHeight(win);\n\n if ('pageX' in tgtPoint) {\n pageX = tgtPoint.pageX;\n } else {\n pageX = scrollX + tgtPoint.clientX;\n }\n\n if ('pageY' in tgtPoint) {\n pageY = tgtPoint.pageY;\n } else {\n pageY = scrollY + tgtPoint.clientY;\n }\n\n const tgtRegion = {\n left: pageX,\n top: pageY,\n width: 0,\n height: 0,\n };\n\n const pointInView =\n pageX >= 0 &&\n pageX <= scrollX + viewportWidth &&\n (pageY >= 0 && pageY <= scrollY + viewportHeight);\n\n // Provide default target point\n const points = [align.points[0], 'cc'];\n\n return doAlign(el, tgtRegion, { ...align, points }, pointInView);\n}\n\nexport default alignPoint;\n","// export this package's api\nimport Align from \"./Align\";\nexport default Align;","import _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEffect, useRef } from 'react';\nimport raf from \"rc-util/es/raf\";\nimport useState from \"rc-util/es/hooks/useState\";\n/**\n * Popup should follow the steps for each component work correctly:\n * measure - check for the current stretch size\n * align - let component align the position\n * aligned - re-align again in case additional className changed the size\n * afterAlign - choice next step is trigger motion or finished\n * beforeMotion - should reset motion to invisible so that CSSMotion can do normal motion\n * motion - play the motion\n * stable - everything is done\n */\n\nvar StatusQueue = ['measure', 'alignPre', 'align', null, 'motion'];\nexport default (function (visible, doMeasure) {\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n status = _useState2[0],\n setInternalStatus = _useState2[1];\n\n var rafRef = useRef();\n\n function setStatus(nextStatus) {\n setInternalStatus(nextStatus, true);\n }\n\n function cancelRaf() {\n raf.cancel(rafRef.current);\n }\n\n function goNextStatus(callback) {\n cancelRaf();\n rafRef.current = raf(function () {\n // Only align should be manually trigger\n setStatus(function (prev) {\n switch (status) {\n case 'align':\n return 'motion';\n\n case 'motion':\n return 'stable';\n\n default:\n }\n\n return prev;\n });\n callback === null || callback === void 0 ? void 0 : callback();\n });\n } // Init status\n\n\n useEffect(function () {\n setStatus('measure');\n }, [visible]); // Go next status\n\n useEffect(function () {\n switch (status) {\n case 'measure':\n doMeasure();\n break;\n\n default:\n }\n\n if (status) {\n rafRef.current = raf( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n var index, nextStatus;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n index = StatusQueue.indexOf(status);\n nextStatus = StatusQueue[index + 1];\n\n if (nextStatus && index !== -1) {\n setStatus(nextStatus);\n }\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n })));\n }\n }, [status]);\n useEffect(function () {\n return function () {\n cancelRaf();\n };\n }, []);\n return [status, goNextStatus];\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport Align from 'rc-align';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport CSSMotion from 'rc-motion';\nimport classNames from 'classnames';\nimport useVisibleStatus from \"./useVisibleStatus\";\nimport { getMotion } from \"../utils/legacyUtil\";\nimport useStretchStyle from \"./useStretchStyle\";\nvar PopupInner = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var visible = props.visible,\n prefixCls = props.prefixCls,\n className = props.className,\n style = props.style,\n children = props.children,\n zIndex = props.zIndex,\n stretch = props.stretch,\n destroyPopupOnHide = props.destroyPopupOnHide,\n forceRender = props.forceRender,\n align = props.align,\n point = props.point,\n getRootDomNode = props.getRootDomNode,\n getClassNameFromAlign = props.getClassNameFromAlign,\n onAlign = props.onAlign,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onMouseDown = props.onMouseDown,\n onTouchStart = props.onTouchStart,\n onClick = props.onClick;\n var alignRef = useRef();\n var elementRef = useRef();\n\n var _useState = useState(),\n _useState2 = _slicedToArray(_useState, 2),\n alignedClassName = _useState2[0],\n setAlignedClassName = _useState2[1]; // ======================= Measure ========================\n\n\n var _useStretchStyle = useStretchStyle(stretch),\n _useStretchStyle2 = _slicedToArray(_useStretchStyle, 2),\n stretchStyle = _useStretchStyle2[0],\n measureStretchStyle = _useStretchStyle2[1];\n\n function doMeasure() {\n if (stretch) {\n measureStretchStyle(getRootDomNode());\n }\n } // ======================== Status ========================\n\n\n var _useVisibleStatus = useVisibleStatus(visible, doMeasure),\n _useVisibleStatus2 = _slicedToArray(_useVisibleStatus, 2),\n status = _useVisibleStatus2[0],\n goNextStatus = _useVisibleStatus2[1]; // ======================== Aligns ========================\n\n /**\n * `alignedClassName` may modify `source` size,\n * which means one time align may not move to the correct position at once.\n *\n * We will reset `alignTimes` for each status switch to `alignPre`\n * and let `rc-align` to align for multiple times to ensure get final stable place.\n * Currently we mark `alignTimes < 2` repeat align, it will increase if user report for align issue.\n * \n * Update:\n * In React 18. `rc-align` effect of align may faster than ref called trigger `forceAlign`.\n * We adjust this to `alignTimes < 2`.\n * We need refactor `rc-align` to support mark of `forceAlign` call if this still happen.\n */\n\n\n var _useState3 = useState(0),\n _useState4 = _slicedToArray(_useState3, 2),\n alignTimes = _useState4[0],\n setAlignTimes = _useState4[1];\n\n var prepareResolveRef = useRef();\n useLayoutEffect(function () {\n if (status === 'alignPre') {\n setAlignTimes(0);\n }\n }, [status]); // `target` on `rc-align` can accept as a function to get the bind element or a point.\n // ref: https://www.npmjs.com/package/rc-align\n\n function getAlignTarget() {\n if (point) {\n return point;\n }\n\n return getRootDomNode;\n }\n\n function forceAlign() {\n var _alignRef$current;\n\n (_alignRef$current = alignRef.current) === null || _alignRef$current === void 0 ? void 0 : _alignRef$current.forceAlign();\n }\n\n function onInternalAlign(popupDomNode, matchAlign) {\n var nextAlignedClassName = getClassNameFromAlign(matchAlign);\n\n if (alignedClassName !== nextAlignedClassName) {\n setAlignedClassName(nextAlignedClassName);\n } // We will retry multi times to make sure that the element has been align in the right position.\n\n\n setAlignTimes(function (val) {\n return val + 1;\n });\n\n if (status === 'align') {\n onAlign === null || onAlign === void 0 ? void 0 : onAlign(popupDomNode, matchAlign);\n }\n } // Delay to go to next status\n\n\n useLayoutEffect(function () {\n if (status === 'align') {\n // Repeat until not more align needed\n if (alignTimes < 3) {\n forceAlign();\n } else {\n goNextStatus(function () {\n var _prepareResolveRef$cu;\n\n (_prepareResolveRef$cu = prepareResolveRef.current) === null || _prepareResolveRef$cu === void 0 ? void 0 : _prepareResolveRef$cu.call(prepareResolveRef);\n });\n }\n }\n }, [alignTimes]); // ======================== Motion ========================\n\n var motion = _objectSpread({}, getMotion(props));\n\n ['onAppearEnd', 'onEnterEnd', 'onLeaveEnd'].forEach(function (eventName) {\n var originHandler = motion[eventName];\n\n motion[eventName] = function (element, event) {\n goNextStatus();\n return originHandler === null || originHandler === void 0 ? void 0 : originHandler(element, event);\n };\n });\n\n function onShowPrepare() {\n return new Promise(function (resolve) {\n prepareResolveRef.current = resolve;\n });\n } // Go to stable directly when motion not provided\n\n\n React.useEffect(function () {\n if (!motion.motionName && status === 'motion') {\n goNextStatus();\n }\n }, [motion.motionName, status]); // ========================= Refs =========================\n\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: forceAlign,\n getElement: function getElement() {\n return elementRef.current;\n }\n };\n }); // ======================== Render ========================\n\n var mergedStyle = _objectSpread(_objectSpread({}, stretchStyle), {}, {\n zIndex: zIndex,\n opacity: status === 'motion' || status === 'stable' || !visible ? undefined : 0,\n // Cannot interact with disappearing elements\n // https://github.com/ant-design/ant-design/issues/35051#issuecomment-1101340714\n pointerEvents: !visible && status !== 'stable' ? 'none' : undefined\n }, style); // Align status\n\n\n var alignDisabled = true;\n\n if (align !== null && align !== void 0 && align.points && (status === 'align' || status === 'stable')) {\n alignDisabled = false;\n }\n\n var childNode = children; // Wrapper when multiple children\n\n if (React.Children.count(children) > 1) {\n childNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: visible,\n ref: elementRef,\n leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n }, motion, {\n onAppearPrepare: onShowPrepare,\n onEnterPrepare: onShowPrepare,\n removeOnLeave: destroyPopupOnHide,\n forceRender: forceRender\n }), function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n var mergedClassName = classNames(prefixCls, className, alignedClassName, motionClassName);\n return /*#__PURE__*/React.createElement(Align, {\n target: getAlignTarget(),\n key: \"popup\",\n ref: alignRef,\n monitorWindowResize: true,\n disabled: alignDisabled,\n align: align,\n onAlign: onInternalAlign\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: motionRef,\n className: mergedClassName,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseDownCapture: onMouseDown,\n onTouchStartCapture: onTouchStart,\n onClick: onClick,\n style: _objectSpread(_objectSpread({}, motionStyle), mergedStyle)\n }, childNode));\n });\n});\nPopupInner.displayName = 'PopupInner';\nexport default PopupInner;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default (function (stretch) {\n var _React$useState = React.useState({\n width: 0,\n height: 0\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n targetSize = _React$useState2[0],\n setTargetSize = _React$useState2[1];\n\n function measureStretch(element) {\n var tgtWidth = element.offsetWidth,\n tgtHeight = element.offsetHeight;\n\n var _element$getBoundingC = element.getBoundingClientRect(),\n width = _element$getBoundingC.width,\n height = _element$getBoundingC.height; // Rect is more accurate than offset, use if near\n\n\n if (Math.abs(tgtWidth - width) < 1 && Math.abs(tgtHeight - height) < 1) {\n tgtWidth = width;\n tgtHeight = height;\n }\n\n setTargetSize({\n width: tgtWidth,\n height: tgtHeight\n });\n } // Merge stretch style\n\n\n var style = React.useMemo(function () {\n var sizeStyle = {};\n\n if (stretch) {\n var width = targetSize.width,\n height = targetSize.height; // Stretch with target\n\n if (stretch.indexOf('height') !== -1 && height) {\n sizeStyle.height = height;\n } else if (stretch.indexOf('minHeight') !== -1 && height) {\n sizeStyle.minHeight = height;\n }\n\n if (stretch.indexOf('width') !== -1 && width) {\n sizeStyle.width = width;\n } else if (stretch.indexOf('minWidth') !== -1 && width) {\n sizeStyle.minWidth = width;\n }\n }\n\n return sizeStyle;\n }, [stretch, targetSize]);\n return [style, measureStretch];\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport CSSMotion from 'rc-motion';\nimport classNames from 'classnames';\nvar MobilePopupInner = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n visible = props.visible,\n zIndex = props.zIndex,\n children = props.children,\n _props$mobile = props.mobile;\n _props$mobile = _props$mobile === void 0 ? {} : _props$mobile;\n var popupClassName = _props$mobile.popupClassName,\n popupStyle = _props$mobile.popupStyle,\n _props$mobile$popupMo = _props$mobile.popupMotion,\n popupMotion = _props$mobile$popupMo === void 0 ? {} : _props$mobile$popupMo,\n popupRender = _props$mobile.popupRender,\n onClick = props.onClick;\n var elementRef = React.useRef(); // ========================= Refs =========================\n\n React.useImperativeHandle(ref, function () {\n return {\n forceAlign: function forceAlign() {},\n getElement: function getElement() {\n return elementRef.current;\n }\n };\n }); // ======================== Render ========================\n\n var mergedStyle = _objectSpread({\n zIndex: zIndex\n }, popupStyle);\n\n var childNode = children; // Wrapper when multiple children\n\n if (React.Children.count(children) > 1) {\n childNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(prefixCls, \"-content\")\n }, children);\n } // Mobile support additional render\n\n\n if (popupRender) {\n childNode = popupRender(childNode);\n }\n\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n visible: visible,\n ref: elementRef,\n removeOnLeave: true\n }, popupMotion), function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n var mergedClassName = classNames(prefixCls, popupClassName, motionClassName);\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: motionRef,\n className: mergedClassName,\n onClick: onClick,\n style: _objectSpread(_objectSpread({}, motionStyle), mergedStyle)\n }, childNode);\n });\n});\nMobilePopupInner.displayName = 'MobilePopupInner';\nexport default MobilePopupInner;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"visible\", \"mobile\"];\nimport * as React from 'react';\nimport { useState, useEffect } from 'react';\nimport isMobile from \"rc-util/es/isMobile\";\nimport Mask from \"./Mask\";\nimport PopupInner from \"./PopupInner\";\nimport MobilePopupInner from \"./MobilePopupInner\";\nvar Popup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var visible = _ref.visible,\n mobile = _ref.mobile,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _useState = useState(visible),\n _useState2 = _slicedToArray(_useState, 2),\n innerVisible = _useState2[0],\n serInnerVisible = _useState2[1];\n\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n inMobile = _useState4[0],\n setInMobile = _useState4[1];\n\n var cloneProps = _objectSpread(_objectSpread({}, props), {}, {\n visible: innerVisible\n }); // We check mobile in visible changed here.\n // And this also delay set `innerVisible` to avoid popup component render flash\n\n\n useEffect(function () {\n serInnerVisible(visible);\n\n if (visible && mobile) {\n setInMobile(isMobile());\n }\n }, [visible, mobile]);\n var popupNode = inMobile ? /*#__PURE__*/React.createElement(MobilePopupInner, _extends({}, cloneProps, {\n mobile: mobile,\n ref: ref\n })) : /*#__PURE__*/React.createElement(PopupInner, _extends({}, cloneProps, {\n ref: ref\n })); // We can use fragment directly but this may failed some selector usage. Keep as origin logic\n\n return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(Mask, cloneProps), popupNode);\n});\nPopup.displayName = 'Popup';\nexport default Popup;","import * as React from 'react';\nvar TriggerContext = /*#__PURE__*/React.createContext(null);\nexport default TriggerContext;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport raf from \"rc-util/es/raf\";\nimport contains from \"rc-util/es/Dom/contains\";\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport Portal from \"rc-util/es/Portal\";\nimport classNames from 'classnames';\nimport { getAlignFromPlacement, getAlignPopupClassName } from \"./utils/alignUtil\";\nimport Popup from \"./Popup\";\nimport TriggerContext from \"./context\";\n\nfunction noop() {}\n\nfunction returnEmptyString() {\n return '';\n}\n\nfunction returnDocument(element) {\n if (element) {\n return element.ownerDocument;\n }\n\n return window.document;\n}\n\nvar ALL_HANDLERS = ['onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur', 'onContextMenu'];\n\n/**\n * Internal usage. Do not use in your code since this will be removed.\n */\nexport function generateTrigger(PortalComponent) {\n var Trigger = /*#__PURE__*/function (_React$Component) {\n _inherits(Trigger, _React$Component);\n\n var _super = _createSuper(Trigger);\n\n // ensure `getContainer` will be called only once\n function Trigger(props) {\n var _this;\n\n _classCallCheck(this, Trigger);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"popupRef\", /*#__PURE__*/React.createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"triggerRef\", /*#__PURE__*/React.createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"portalContainer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"attachId\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"clickOutsideHandler\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"touchOutsideHandler\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"contextMenuOutsideHandler1\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"contextMenuOutsideHandler2\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"mouseDownTimeout\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"focusTime\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"preClickTime\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"preTouchTime\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"delayTimer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"hasPopupMouseDown\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseEnter\", function (e) {\n var mouseEnterDelay = _this.props.mouseEnterDelay;\n\n _this.fireEvents('onMouseEnter', e);\n\n _this.delaySetPopupVisible(true, mouseEnterDelay, mouseEnterDelay ? null : e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseMove\", function (e) {\n _this.fireEvents('onMouseMove', e);\n\n _this.setPoint(e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function (e) {\n _this.fireEvents('onMouseLeave', e);\n\n _this.delaySetPopupVisible(false, _this.props.mouseLeaveDelay);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPopupMouseEnter\", function () {\n _this.clearDelayTimer();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPopupMouseLeave\", function (e) {\n var _this$popupRef$curren;\n\n // https://github.com/react-component/trigger/pull/13\n // react bug?\n if (e.relatedTarget && !e.relatedTarget.setTimeout && contains((_this$popupRef$curren = _this.popupRef.current) === null || _this$popupRef$curren === void 0 ? void 0 : _this$popupRef$curren.getElement(), e.relatedTarget)) {\n return;\n }\n\n _this.delaySetPopupVisible(false, _this.props.mouseLeaveDelay);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onFocus\", function (e) {\n _this.fireEvents('onFocus', e); // incase focusin and focusout\n\n\n _this.clearDelayTimer();\n\n if (_this.isFocusToShow()) {\n _this.focusTime = Date.now();\n\n _this.delaySetPopupVisible(true, _this.props.focusDelay);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function (e) {\n _this.fireEvents('onMouseDown', e);\n\n _this.preClickTime = Date.now();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTouchStart\", function (e) {\n _this.fireEvents('onTouchStart', e);\n\n _this.preTouchTime = Date.now();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onBlur\", function (e) {\n _this.fireEvents('onBlur', e);\n\n _this.clearDelayTimer();\n\n if (_this.isBlurToHide()) {\n _this.delaySetPopupVisible(false, _this.props.blurDelay);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onContextMenu\", function (e) {\n e.preventDefault();\n\n _this.fireEvents('onContextMenu', e);\n\n _this.setPopupVisible(true, e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onContextMenuClose\", function () {\n if (_this.isContextMenuToShow()) {\n _this.close();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n _this.fireEvents('onClick', event); // focus will trigger click\n\n\n if (_this.focusTime) {\n var preTime;\n\n if (_this.preClickTime && _this.preTouchTime) {\n preTime = Math.min(_this.preClickTime, _this.preTouchTime);\n } else if (_this.preClickTime) {\n preTime = _this.preClickTime;\n } else if (_this.preTouchTime) {\n preTime = _this.preTouchTime;\n }\n\n if (Math.abs(preTime - _this.focusTime) < 20) {\n return;\n }\n\n _this.focusTime = 0;\n }\n\n _this.preClickTime = 0;\n _this.preTouchTime = 0; // Only prevent default when all the action is click.\n // https://github.com/ant-design/ant-design/issues/17043\n // https://github.com/ant-design/ant-design/issues/17291\n\n if (_this.isClickToShow() && (_this.isClickToHide() || _this.isBlurToHide()) && event && event.preventDefault) {\n event.preventDefault();\n }\n\n var nextVisible = !_this.state.popupVisible;\n\n if (_this.isClickToHide() && !nextVisible || nextVisible && _this.isClickToShow()) {\n _this.setPopupVisible(!_this.state.popupVisible, event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onPopupMouseDown\", function () {\n _this.hasPopupMouseDown = true;\n clearTimeout(_this.mouseDownTimeout);\n _this.mouseDownTimeout = window.setTimeout(function () {\n _this.hasPopupMouseDown = false;\n }, 0);\n\n if (_this.context) {\n var _this$context;\n\n (_this$context = _this.context).onPopupMouseDown.apply(_this$context, arguments);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDocumentClick\", function (event) {\n if (_this.props.mask && !_this.props.maskClosable) {\n return;\n }\n\n var target = event.target;\n\n var root = _this.getRootDomNode();\n\n var popupNode = _this.getPopupDomNode();\n\n if ( // mousedown on the target should also close popup when action is contextMenu.\n // https://github.com/ant-design/ant-design/issues/29853\n (!contains(root, target) || _this.isContextMenuOnly()) && !contains(popupNode, target) && !_this.hasPopupMouseDown) {\n _this.close();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getRootDomNode\", function () {\n var getTriggerDOMNode = _this.props.getTriggerDOMNode;\n\n if (getTriggerDOMNode) {\n return getTriggerDOMNode(_this.triggerRef.current);\n }\n\n try {\n var domNode = findDOMNode(_this.triggerRef.current);\n\n if (domNode) {\n return domNode;\n }\n } catch (err) {// Do nothing\n }\n\n return ReactDOM.findDOMNode(_assertThisInitialized(_this));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getPopupClassNameFromAlign\", function (align) {\n var className = [];\n var _this$props = _this.props,\n popupPlacement = _this$props.popupPlacement,\n builtinPlacements = _this$props.builtinPlacements,\n prefixCls = _this$props.prefixCls,\n alignPoint = _this$props.alignPoint,\n getPopupClassNameFromAlign = _this$props.getPopupClassNameFromAlign;\n\n if (popupPlacement && builtinPlacements) {\n className.push(getAlignPopupClassName(builtinPlacements, prefixCls, align, alignPoint));\n }\n\n if (getPopupClassNameFromAlign) {\n className.push(getPopupClassNameFromAlign(align));\n }\n\n return className.join(' ');\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getComponent\", function () {\n var _this$props2 = _this.props,\n prefixCls = _this$props2.prefixCls,\n destroyPopupOnHide = _this$props2.destroyPopupOnHide,\n popupClassName = _this$props2.popupClassName,\n onPopupAlign = _this$props2.onPopupAlign,\n popupMotion = _this$props2.popupMotion,\n popupAnimation = _this$props2.popupAnimation,\n popupTransitionName = _this$props2.popupTransitionName,\n popupStyle = _this$props2.popupStyle,\n mask = _this$props2.mask,\n maskAnimation = _this$props2.maskAnimation,\n maskTransitionName = _this$props2.maskTransitionName,\n maskMotion = _this$props2.maskMotion,\n zIndex = _this$props2.zIndex,\n popup = _this$props2.popup,\n stretch = _this$props2.stretch,\n alignPoint = _this$props2.alignPoint,\n mobile = _this$props2.mobile,\n forceRender = _this$props2.forceRender,\n onPopupClick = _this$props2.onPopupClick;\n var _this$state = _this.state,\n popupVisible = _this$state.popupVisible,\n point = _this$state.point;\n\n var align = _this.getPopupAlign();\n\n var mouseProps = {};\n\n if (_this.isMouseEnterToShow()) {\n mouseProps.onMouseEnter = _this.onPopupMouseEnter;\n }\n\n if (_this.isMouseLeaveToHide()) {\n mouseProps.onMouseLeave = _this.onPopupMouseLeave;\n }\n\n mouseProps.onMouseDown = _this.onPopupMouseDown;\n mouseProps.onTouchStart = _this.onPopupMouseDown;\n return /*#__PURE__*/React.createElement(Popup, _extends({\n prefixCls: prefixCls,\n destroyPopupOnHide: destroyPopupOnHide,\n visible: popupVisible,\n point: alignPoint && point,\n className: popupClassName,\n align: align,\n onAlign: onPopupAlign,\n animation: popupAnimation,\n getClassNameFromAlign: _this.getPopupClassNameFromAlign\n }, mouseProps, {\n stretch: stretch,\n getRootDomNode: _this.getRootDomNode,\n style: popupStyle,\n mask: mask,\n zIndex: zIndex,\n transitionName: popupTransitionName,\n maskAnimation: maskAnimation,\n maskTransitionName: maskTransitionName,\n maskMotion: maskMotion,\n ref: _this.popupRef,\n motion: popupMotion,\n mobile: mobile,\n forceRender: forceRender,\n onClick: onPopupClick\n }), typeof popup === 'function' ? popup() : popup);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"attachParent\", function (popupContainer) {\n raf.cancel(_this.attachId);\n var _this$props3 = _this.props,\n getPopupContainer = _this$props3.getPopupContainer,\n getDocument = _this$props3.getDocument;\n\n var domNode = _this.getRootDomNode();\n\n var mountNode;\n\n if (!getPopupContainer) {\n mountNode = getDocument(_this.getRootDomNode()).body;\n } else if (domNode || getPopupContainer.length === 0) {\n // Compatible for legacy getPopupContainer with domNode argument.\n // If no need `domNode` argument, will call directly.\n // https://codesandbox.io/s/eloquent-mclean-ss93m?file=/src/App.js\n mountNode = getPopupContainer(domNode);\n }\n\n if (mountNode) {\n mountNode.appendChild(popupContainer);\n } else {\n // Retry after frame render in case parent not ready\n _this.attachId = raf(function () {\n _this.attachParent(popupContainer);\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getContainer\", function () {\n if (!_this.portalContainer) {\n // In React.StrictMode component will call render multiple time in first mount.\n // When you want to refactor with FC, useRef will also init multiple time and\n // point to different useRef instance which will create multiple element\n // (This multiple render will not trigger effect so you can not clean up this\n // in effect). But this is safe with class component since it always point to same class instance.\n var getDocument = _this.props.getDocument;\n var popupContainer = getDocument(_this.getRootDomNode()).createElement('div'); // Make sure default popup container will never cause scrollbar appearing\n // https://github.com/react-component/trigger/issues/41\n\n popupContainer.style.position = 'absolute';\n popupContainer.style.top = '0';\n popupContainer.style.left = '0';\n popupContainer.style.width = '100%';\n _this.portalContainer = popupContainer;\n }\n\n _this.attachParent(_this.portalContainer);\n\n return _this.portalContainer;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setPoint\", function (point) {\n var alignPoint = _this.props.alignPoint;\n if (!alignPoint || !point) return;\n\n _this.setState({\n point: {\n pageX: point.pageX,\n pageY: point.pageY\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handlePortalUpdate\", function () {\n if (_this.state.prevPopupVisible !== _this.state.popupVisible) {\n _this.props.afterPopupVisibleChange(_this.state.popupVisible);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"triggerContextValue\", {\n onPopupMouseDown: _this.onPopupMouseDown\n });\n\n var _popupVisible;\n\n if ('popupVisible' in props) {\n _popupVisible = !!props.popupVisible;\n } else {\n _popupVisible = !!props.defaultPopupVisible;\n }\n\n _this.state = {\n prevPopupVisible: _popupVisible,\n popupVisible: _popupVisible\n };\n ALL_HANDLERS.forEach(function (h) {\n _this[\"fire\".concat(h)] = function (e) {\n _this.fireEvents(h, e);\n };\n });\n return _this;\n }\n\n _createClass(Trigger, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.componentDidUpdate();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var props = this.props;\n var state = this.state; // We must listen to `mousedown` or `touchstart`, edge case:\n // https://github.com/ant-design/ant-design/issues/5804\n // https://github.com/react-component/calendar/issues/250\n // https://github.com/react-component/trigger/issues/50\n\n if (state.popupVisible) {\n var currentDocument;\n\n if (!this.clickOutsideHandler && (this.isClickToHide() || this.isContextMenuToShow())) {\n currentDocument = props.getDocument(this.getRootDomNode());\n this.clickOutsideHandler = addEventListener(currentDocument, 'mousedown', this.onDocumentClick);\n } // always hide on mobile\n\n\n if (!this.touchOutsideHandler) {\n currentDocument = currentDocument || props.getDocument(this.getRootDomNode());\n this.touchOutsideHandler = addEventListener(currentDocument, 'touchstart', this.onDocumentClick);\n } // close popup when trigger type contains 'onContextMenu' and document is scrolling.\n\n\n if (!this.contextMenuOutsideHandler1 && this.isContextMenuToShow()) {\n currentDocument = currentDocument || props.getDocument(this.getRootDomNode());\n this.contextMenuOutsideHandler1 = addEventListener(currentDocument, 'scroll', this.onContextMenuClose);\n } // close popup when trigger type contains 'onContextMenu' and window is blur.\n\n\n if (!this.contextMenuOutsideHandler2 && this.isContextMenuToShow()) {\n this.contextMenuOutsideHandler2 = addEventListener(window, 'blur', this.onContextMenuClose);\n }\n\n return;\n }\n\n this.clearOutsideHandler();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.clearDelayTimer();\n this.clearOutsideHandler();\n clearTimeout(this.mouseDownTimeout);\n raf.cancel(this.attachId);\n }\n }, {\n key: \"getPopupDomNode\",\n value: function getPopupDomNode() {\n var _this$popupRef$curren2;\n\n // for test\n return ((_this$popupRef$curren2 = this.popupRef.current) === null || _this$popupRef$curren2 === void 0 ? void 0 : _this$popupRef$curren2.getElement()) || null;\n }\n }, {\n key: \"getPopupAlign\",\n value: function getPopupAlign() {\n var props = this.props;\n var popupPlacement = props.popupPlacement,\n popupAlign = props.popupAlign,\n builtinPlacements = props.builtinPlacements;\n\n if (popupPlacement && builtinPlacements) {\n return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign);\n }\n\n return popupAlign;\n }\n }, {\n key: \"setPopupVisible\",\n value:\n /**\n * @param popupVisible Show or not the popup element\n * @param event SyntheticEvent, used for `pointAlign`\n */\n function setPopupVisible(popupVisible, event) {\n var alignPoint = this.props.alignPoint;\n var prevPopupVisible = this.state.popupVisible;\n this.clearDelayTimer();\n\n if (prevPopupVisible !== popupVisible) {\n if (!('popupVisible' in this.props)) {\n this.setState({\n popupVisible: popupVisible,\n prevPopupVisible: prevPopupVisible\n });\n }\n\n this.props.onPopupVisibleChange(popupVisible);\n } // Always record the point position since mouseEnterDelay will delay the show\n\n\n if (alignPoint && event && popupVisible) {\n this.setPoint(event);\n }\n }\n }, {\n key: \"delaySetPopupVisible\",\n value: function delaySetPopupVisible(visible, delayS, event) {\n var _this2 = this;\n\n var delay = delayS * 1000;\n this.clearDelayTimer();\n\n if (delay) {\n var point = event ? {\n pageX: event.pageX,\n pageY: event.pageY\n } : null;\n this.delayTimer = window.setTimeout(function () {\n _this2.setPopupVisible(visible, point);\n\n _this2.clearDelayTimer();\n }, delay);\n } else {\n this.setPopupVisible(visible, event);\n }\n }\n }, {\n key: \"clearDelayTimer\",\n value: function clearDelayTimer() {\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = null;\n }\n }\n }, {\n key: \"clearOutsideHandler\",\n value: function clearOutsideHandler() {\n if (this.clickOutsideHandler) {\n this.clickOutsideHandler.remove();\n this.clickOutsideHandler = null;\n }\n\n if (this.contextMenuOutsideHandler1) {\n this.contextMenuOutsideHandler1.remove();\n this.contextMenuOutsideHandler1 = null;\n }\n\n if (this.contextMenuOutsideHandler2) {\n this.contextMenuOutsideHandler2.remove();\n this.contextMenuOutsideHandler2 = null;\n }\n\n if (this.touchOutsideHandler) {\n this.touchOutsideHandler.remove();\n this.touchOutsideHandler = null;\n }\n }\n }, {\n key: \"createTwoChains\",\n value: function createTwoChains(event) {\n var childPros = this.props.children.props;\n var props = this.props;\n\n if (childPros[event] && props[event]) {\n return this[\"fire\".concat(event)];\n }\n\n return childPros[event] || props[event];\n }\n }, {\n key: \"isClickToShow\",\n value: function isClickToShow() {\n var _this$props4 = this.props,\n action = _this$props4.action,\n showAction = _this$props4.showAction;\n return action.indexOf('click') !== -1 || showAction.indexOf('click') !== -1;\n }\n }, {\n key: \"isContextMenuOnly\",\n value: function isContextMenuOnly() {\n var action = this.props.action;\n return action === 'contextMenu' || action.length === 1 && action[0] === 'contextMenu';\n }\n }, {\n key: \"isContextMenuToShow\",\n value: function isContextMenuToShow() {\n var _this$props5 = this.props,\n action = _this$props5.action,\n showAction = _this$props5.showAction;\n return action.indexOf('contextMenu') !== -1 || showAction.indexOf('contextMenu') !== -1;\n }\n }, {\n key: \"isClickToHide\",\n value: function isClickToHide() {\n var _this$props6 = this.props,\n action = _this$props6.action,\n hideAction = _this$props6.hideAction;\n return action.indexOf('click') !== -1 || hideAction.indexOf('click') !== -1;\n }\n }, {\n key: \"isMouseEnterToShow\",\n value: function isMouseEnterToShow() {\n var _this$props7 = this.props,\n action = _this$props7.action,\n showAction = _this$props7.showAction;\n return action.indexOf('hover') !== -1 || showAction.indexOf('mouseEnter') !== -1;\n }\n }, {\n key: \"isMouseLeaveToHide\",\n value: function isMouseLeaveToHide() {\n var _this$props8 = this.props,\n action = _this$props8.action,\n hideAction = _this$props8.hideAction;\n return action.indexOf('hover') !== -1 || hideAction.indexOf('mouseLeave') !== -1;\n }\n }, {\n key: \"isFocusToShow\",\n value: function isFocusToShow() {\n var _this$props9 = this.props,\n action = _this$props9.action,\n showAction = _this$props9.showAction;\n return action.indexOf('focus') !== -1 || showAction.indexOf('focus') !== -1;\n }\n }, {\n key: \"isBlurToHide\",\n value: function isBlurToHide() {\n var _this$props10 = this.props,\n action = _this$props10.action,\n hideAction = _this$props10.hideAction;\n return action.indexOf('focus') !== -1 || hideAction.indexOf('blur') !== -1;\n }\n }, {\n key: \"forcePopupAlign\",\n value: function forcePopupAlign() {\n if (this.state.popupVisible) {\n var _this$popupRef$curren3;\n\n (_this$popupRef$curren3 = this.popupRef.current) === null || _this$popupRef$curren3 === void 0 ? void 0 : _this$popupRef$curren3.forceAlign();\n }\n }\n }, {\n key: \"fireEvents\",\n value: function fireEvents(type, e) {\n var childCallback = this.props.children.props[type];\n\n if (childCallback) {\n childCallback(e);\n }\n\n var callback = this.props[type];\n\n if (callback) {\n callback(e);\n }\n }\n }, {\n key: \"close\",\n value: function close() {\n this.setPopupVisible(false);\n }\n }, {\n key: \"render\",\n value: function render() {\n var popupVisible = this.state.popupVisible;\n var _this$props11 = this.props,\n children = _this$props11.children,\n forceRender = _this$props11.forceRender,\n alignPoint = _this$props11.alignPoint,\n className = _this$props11.className,\n autoDestroy = _this$props11.autoDestroy;\n var child = React.Children.only(children);\n var newChildProps = {\n key: 'trigger'\n }; // ============================== Visible Handlers ==============================\n // >>> ContextMenu\n\n if (this.isContextMenuToShow()) {\n newChildProps.onContextMenu = this.onContextMenu;\n } else {\n newChildProps.onContextMenu = this.createTwoChains('onContextMenu');\n } // >>> Click\n\n\n if (this.isClickToHide() || this.isClickToShow()) {\n newChildProps.onClick = this.onClick;\n newChildProps.onMouseDown = this.onMouseDown;\n newChildProps.onTouchStart = this.onTouchStart;\n } else {\n newChildProps.onClick = this.createTwoChains('onClick');\n newChildProps.onMouseDown = this.createTwoChains('onMouseDown');\n newChildProps.onTouchStart = this.createTwoChains('onTouchStart');\n } // >>> Hover(enter)\n\n\n if (this.isMouseEnterToShow()) {\n newChildProps.onMouseEnter = this.onMouseEnter; // Point align\n\n if (alignPoint) {\n newChildProps.onMouseMove = this.onMouseMove;\n }\n } else {\n newChildProps.onMouseEnter = this.createTwoChains('onMouseEnter');\n } // >>> Hover(leave)\n\n\n if (this.isMouseLeaveToHide()) {\n newChildProps.onMouseLeave = this.onMouseLeave;\n } else {\n newChildProps.onMouseLeave = this.createTwoChains('onMouseLeave');\n } // >>> Focus\n\n\n if (this.isFocusToShow() || this.isBlurToHide()) {\n newChildProps.onFocus = this.onFocus;\n newChildProps.onBlur = this.onBlur;\n } else {\n newChildProps.onFocus = this.createTwoChains('onFocus');\n newChildProps.onBlur = this.createTwoChains('onBlur');\n } // =================================== Render ===================================\n\n\n var childrenClassName = classNames(child && child.props && child.props.className, className);\n\n if (childrenClassName) {\n newChildProps.className = childrenClassName;\n }\n\n var cloneProps = _objectSpread({}, newChildProps);\n\n if (supportRef(child)) {\n cloneProps.ref = composeRef(this.triggerRef, child.ref);\n }\n\n var trigger = /*#__PURE__*/React.cloneElement(child, cloneProps);\n var portal; // prevent unmounting after it's rendered\n\n if (popupVisible || this.popupRef.current || forceRender) {\n portal = /*#__PURE__*/React.createElement(PortalComponent, {\n key: \"portal\",\n getContainer: this.getContainer,\n didUpdate: this.handlePortalUpdate\n }, this.getComponent());\n }\n\n if (!popupVisible && autoDestroy) {\n portal = null;\n }\n\n return /*#__PURE__*/React.createElement(TriggerContext.Provider, {\n value: this.triggerContextValue\n }, trigger, portal);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, prevState) {\n var popupVisible = _ref.popupVisible;\n var newState = {};\n\n if (popupVisible !== undefined && prevState.popupVisible !== popupVisible) {\n newState.popupVisible = popupVisible;\n newState.prevPopupVisible = prevState.popupVisible;\n }\n\n return newState;\n }\n }]);\n\n return Trigger;\n }(React.Component);\n\n _defineProperty(Trigger, \"contextType\", TriggerContext);\n\n _defineProperty(Trigger, \"defaultProps\", {\n prefixCls: 'rc-trigger-popup',\n getPopupClassNameFromAlign: returnEmptyString,\n getDocument: returnDocument,\n onPopupVisibleChange: noop,\n afterPopupVisibleChange: noop,\n onPopupAlign: noop,\n popupClassName: '',\n mouseEnterDelay: 0,\n mouseLeaveDelay: 0.1,\n focusDelay: 0,\n blurDelay: 0.15,\n popupStyle: {},\n destroyPopupOnHide: false,\n popupAlign: {},\n defaultPopupVisible: false,\n mask: false,\n maskClosable: true,\n action: [],\n showAction: [],\n hideAction: [],\n autoDestroy: false\n });\n\n return Trigger;\n}\nexport default generateTrigger(Portal);","import React from 'react';\nimport { isFragment } from 'react-is';\nexport default function toArray(children) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var ret = [];\n React.Children.forEach(children, function (child) {\n if ((child === undefined || child === null) && !option.keepEmpty) {\n return;\n }\n if (Array.isArray(child)) {\n ret = ret.concat(toArray(child));\n } else if (isFragment(child) && child.props) {\n ret = ret.concat(toArray(child.props.children, option));\n } else {\n ret.push(child);\n }\n });\n return ret;\n}","import ReactDOM from 'react-dom';\nexport default function addEventListenerWrap(target, eventType, cb, option) {\n /* eslint camelcase: 2 */\n var callback = ReactDOM.unstable_batchedUpdates ? function run(e) {\n ReactDOM.unstable_batchedUpdates(cb, e);\n } : cb;\n if (target !== null && target !== void 0 && target.addEventListener) {\n target.addEventListener(eventType, callback, option);\n }\n return {\n remove: function remove() {\n if (target !== null && target !== void 0 && target.removeEventListener) {\n target.removeEventListener(eventType, callback, option);\n }\n }\n };\n}","export default function canUseDom() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}","export default function contains(root, n) {\n if (!root) {\n return false;\n }\n\n // Use native if support\n if (root.contains) {\n return root.contains(n);\n }\n\n // `document.contains` not support with IE11\n var node = n;\n while (node) {\n if (node === root) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}","/* eslint-disable no-nested-ternary */\nvar PIXEL_PATTERN = /margin|padding|width|height|max|min|offset/;\nvar removePixel = {\n left: true,\n top: true\n};\nvar floatMap = {\n cssFloat: 1,\n styleFloat: 1,\n float: 1\n};\nfunction getComputedStyle(node) {\n return node.nodeType === 1 ? node.ownerDocument.defaultView.getComputedStyle(node, null) : {};\n}\nfunction getStyleValue(node, type, value) {\n type = type.toLowerCase();\n if (value === 'auto') {\n if (type === 'height') {\n return node.offsetHeight;\n }\n if (type === 'width') {\n return node.offsetWidth;\n }\n }\n if (!(type in removePixel)) {\n removePixel[type] = PIXEL_PATTERN.test(type);\n }\n return removePixel[type] ? parseFloat(value) || 0 : value;\n}\nexport function get(node, name) {\n var length = arguments.length;\n var style = getComputedStyle(node);\n name = floatMap[name] ? 'cssFloat' in node.style ? 'cssFloat' : 'styleFloat' : name;\n return length === 1 ? style : getStyleValue(node, name, style[name] || node.style[name]);\n}\nexport function set(node, name, value) {\n var length = arguments.length;\n name = floatMap[name] ? 'cssFloat' in node.style ? 'cssFloat' : 'styleFloat' : name;\n if (length === 3) {\n if (typeof value === 'number' && PIXEL_PATTERN.test(name)) {\n value = \"\".concat(value, \"px\");\n }\n node.style[name] = value; // Number\n return value;\n }\n for (var x in name) {\n if (name.hasOwnProperty(x)) {\n set(node, x, name[x]);\n }\n }\n return getComputedStyle(node);\n}\nexport function getOuterWidth(el) {\n if (el === document.body) {\n return document.documentElement.clientWidth;\n }\n return el.offsetWidth;\n}\nexport function getOuterHeight(el) {\n if (el === document.body) {\n return window.innerHeight || document.documentElement.clientHeight;\n }\n return el.offsetHeight;\n}\nexport function getDocSize() {\n var width = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);\n var height = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n return {\n width: width,\n height: height\n };\n}\nexport function getClientSize() {\n var width = document.documentElement.clientWidth;\n var height = window.innerHeight || document.documentElement.clientHeight;\n return {\n width: width,\n height: height\n };\n}\nexport function getScroll() {\n return {\n scrollLeft: Math.max(document.documentElement.scrollLeft, document.body.scrollLeft),\n scrollTop: Math.max(document.documentElement.scrollTop, document.body.scrollTop)\n };\n}\nexport function getOffset(node) {\n var box = node.getBoundingClientRect();\n var docElem = document.documentElement;\n\n // < ie8 不支持 win.pageXOffset, 则使用 docElem.scrollLeft\n return {\n left: box.left + (window.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || document.body.clientLeft || 0),\n top: box.top + (window.pageYOffset || docElem.scrollTop) - (docElem.clientTop || document.body.clientTop || 0)\n };\n}","import canUseDom from \"./canUseDom\";\nimport contains from \"./contains\";\nvar APPEND_ORDER = 'data-rc-order';\nvar MARK_KEY = \"rc-util-key\";\nvar containerCache = new Map();\nfunction getMark() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n mark = _ref.mark;\n if (mark) {\n return mark.startsWith('data-') ? mark : \"data-\".concat(mark);\n }\n return MARK_KEY;\n}\nfunction getContainer(option) {\n if (option.attachTo) {\n return option.attachTo;\n }\n var head = document.querySelector('head');\n return head || document.body;\n}\nfunction getOrder(prepend) {\n if (prepend === 'queue') {\n return 'prependQueue';\n }\n return prepend ? 'prepend' : 'append';\n}\n\n/**\n * Find style which inject by rc-util\n */\nfunction findStyles(container) {\n return Array.from((containerCache.get(container) || container).children).filter(function (node) {\n return node.tagName === 'STYLE';\n });\n}\nexport function injectCSS(css) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!canUseDom()) {\n return null;\n }\n var csp = option.csp,\n prepend = option.prepend;\n var styleNode = document.createElement('style');\n styleNode.setAttribute(APPEND_ORDER, getOrder(prepend));\n if (csp !== null && csp !== void 0 && csp.nonce) {\n styleNode.nonce = csp === null || csp === void 0 ? void 0 : csp.nonce;\n }\n styleNode.innerHTML = css;\n var container = getContainer(option);\n var firstChild = container.firstChild;\n if (prepend) {\n // If is queue `prepend`, it will prepend first style and then append rest style\n if (prepend === 'queue') {\n var existStyle = findStyles(container).filter(function (node) {\n return ['prepend', 'prependQueue'].includes(node.getAttribute(APPEND_ORDER));\n });\n if (existStyle.length) {\n container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling);\n return styleNode;\n }\n }\n\n // Use `insertBefore` as `prepend`\n container.insertBefore(styleNode, firstChild);\n } else {\n container.appendChild(styleNode);\n }\n return styleNode;\n}\nfunction findExistNode(key) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var container = getContainer(option);\n return findStyles(container).find(function (node) {\n return node.getAttribute(getMark(option)) === key;\n });\n}\nexport function removeCSS(key) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var existNode = findExistNode(key, option);\n if (existNode) {\n var container = getContainer(option);\n container.removeChild(existNode);\n }\n}\n\n/**\n * qiankun will inject `appendChild` to insert into other\n */\nfunction syncRealContainer(container, option) {\n var cachedRealContainer = containerCache.get(container);\n\n // Find real container when not cached or cached container removed\n if (!cachedRealContainer || !contains(document, cachedRealContainer)) {\n var placeholderStyle = injectCSS('', option);\n var parentNode = placeholderStyle.parentNode;\n containerCache.set(container, parentNode);\n container.removeChild(placeholderStyle);\n }\n}\n\n/**\n * manually clear container cache to avoid global cache in unit testes\n */\nexport function clearContainerCache() {\n containerCache.clear();\n}\nexport function updateCSS(css, key) {\n var option = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var container = getContainer(option);\n\n // Sync real parent\n syncRealContainer(container, option);\n var existNode = findExistNode(key, option);\n if (existNode) {\n var _option$csp, _option$csp2;\n if ((_option$csp = option.csp) !== null && _option$csp !== void 0 && _option$csp.nonce && existNode.nonce !== ((_option$csp2 = option.csp) === null || _option$csp2 === void 0 ? void 0 : _option$csp2.nonce)) {\n var _option$csp3;\n existNode.nonce = (_option$csp3 = option.csp) === null || _option$csp3 === void 0 ? void 0 : _option$csp3.nonce;\n }\n if (existNode.innerHTML !== css) {\n existNode.innerHTML = css;\n }\n return existNode;\n }\n var newNode = injectCSS(css, option);\n newNode.setAttribute(getMark(option), key);\n return newNode;\n}","import React from 'react';\nimport ReactDOM from 'react-dom';\nexport function isDOM(node) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Element\n // Since XULElement is also subclass of Element, we only need HTMLElement and SVGElement\n return node instanceof HTMLElement || node instanceof SVGElement;\n}\n\n/**\n * Return if a node is a DOM node. Else will return by `findDOMNode`\n */\nexport default function findDOMNode(node) {\n if (isDOM(node)) {\n return node;\n }\n if (node instanceof React.Component) {\n return ReactDOM.findDOMNode(node);\n }\n return null;\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport isVisible from \"./isVisible\";\nfunction focusable(node) {\n var includePositive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (isVisible(node)) {\n var nodeName = node.nodeName.toLowerCase();\n var isFocusableElement =\n // Focusable element\n ['input', 'select', 'textarea', 'button'].includes(nodeName) ||\n // Editable element\n node.isContentEditable ||\n // Anchor with href element\n nodeName === 'a' && !!node.getAttribute('href');\n\n // Get tabIndex\n var tabIndexAttr = node.getAttribute('tabindex');\n var tabIndexNum = Number(tabIndexAttr);\n\n // Parse as number if validate\n var tabIndex = null;\n if (tabIndexAttr && !Number.isNaN(tabIndexNum)) {\n tabIndex = tabIndexNum;\n } else if (isFocusableElement && tabIndex === null) {\n tabIndex = 0;\n }\n\n // Block focusable if disabled\n if (isFocusableElement && node.disabled) {\n tabIndex = null;\n }\n return tabIndex !== null && (tabIndex >= 0 || includePositive && tabIndex < 0);\n }\n return false;\n}\nexport function getFocusNodeList(node) {\n var includePositive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var res = _toConsumableArray(node.querySelectorAll('*')).filter(function (child) {\n return focusable(child, includePositive);\n });\n if (focusable(node, includePositive)) {\n res.unshift(node);\n }\n return res;\n}\nvar lastFocusElement = null;\n\n/** @deprecated Do not use since this may failed when used in async */\nexport function saveLastFocusNode() {\n lastFocusElement = document.activeElement;\n}\n\n/** @deprecated Do not use since this may failed when used in async */\nexport function clearLastFocusNode() {\n lastFocusElement = null;\n}\n\n/** @deprecated Do not use since this may failed when used in async */\nexport function backLastFocusNode() {\n if (lastFocusElement) {\n try {\n // 元素可能已经被移动了\n lastFocusElement.focus();\n\n /* eslint-disable no-empty */\n } catch (e) {\n // empty\n }\n /* eslint-enable no-empty */\n }\n}\n\nexport function limitTabRange(node, e) {\n if (e.keyCode === 9) {\n var tabNodeList = getFocusNodeList(node);\n var lastTabNode = tabNodeList[e.shiftKey ? 0 : tabNodeList.length - 1];\n var leavingTab = lastTabNode === document.activeElement || node === document.activeElement;\n if (leavingTab) {\n var target = tabNodeList[e.shiftKey ? tabNodeList.length - 1 : 0];\n target.focus();\n e.preventDefault();\n }\n }\n}","export default (function (element) {\n if (!element) {\n return false;\n }\n if (element instanceof Element) {\n if (element.offsetParent) {\n return true;\n }\n if (element.getBBox) {\n var _getBBox = element.getBBox(),\n width = _getBBox.width,\n height = _getBBox.height;\n if (width || height) {\n return true;\n }\n }\n if (element.getBoundingClientRect) {\n var _element$getBoundingC = element.getBoundingClientRect(),\n _width = _element$getBoundingC.width,\n _height = _element$getBoundingC.height;\n if (_width || _height) {\n return true;\n }\n }\n }\n return false;\n});","import canUseDom from \"./canUseDom\";\nvar isStyleNameSupport = function isStyleNameSupport(styleName) {\n if (canUseDom() && window.document.documentElement) {\n var styleNameList = Array.isArray(styleName) ? styleName : [styleName];\n var documentElement = window.document.documentElement;\n return styleNameList.some(function (name) {\n return name in documentElement.style;\n });\n }\n return false;\n};\nvar isStyleValueSupport = function isStyleValueSupport(styleName, value) {\n if (!isStyleNameSupport(styleName)) {\n return false;\n }\n var ele = document.createElement('div');\n var origin = ele.style[styleName];\n ele.style[styleName] = value;\n return ele.style[styleName] !== origin;\n};\nexport function isStyleSupport(styleName, styleValue) {\n if (!Array.isArray(styleName) && styleValue !== undefined) {\n return isStyleValueSupport(styleName, styleValue);\n }\n return isStyleNameSupport(styleName);\n}","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\n\nvar KeyCode = {\n /**\n * MAC_ENTER\n */\n MAC_ENTER: 3,\n /**\n * BACKSPACE\n */\n BACKSPACE: 8,\n /**\n * TAB\n */\n TAB: 9,\n /**\n * NUMLOCK on FF/Safari Mac\n */\n NUM_CENTER: 12,\n // NUMLOCK on FF/Safari Mac\n /**\n * ENTER\n */\n ENTER: 13,\n /**\n * SHIFT\n */\n SHIFT: 16,\n /**\n * CTRL\n */\n CTRL: 17,\n /**\n * ALT\n */\n ALT: 18,\n /**\n * PAUSE\n */\n PAUSE: 19,\n /**\n * CAPS_LOCK\n */\n CAPS_LOCK: 20,\n /**\n * ESC\n */\n ESC: 27,\n /**\n * SPACE\n */\n SPACE: 32,\n /**\n * PAGE_UP\n */\n PAGE_UP: 33,\n // also NUM_NORTH_EAST\n /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34,\n // also NUM_SOUTH_EAST\n /**\n * END\n */\n END: 35,\n // also NUM_SOUTH_WEST\n /**\n * HOME\n */\n HOME: 36,\n // also NUM_NORTH_WEST\n /**\n * LEFT\n */\n LEFT: 37,\n // also NUM_WEST\n /**\n * UP\n */\n UP: 38,\n // also NUM_NORTH\n /**\n * RIGHT\n */\n RIGHT: 39,\n // also NUM_EAST\n /**\n * DOWN\n */\n DOWN: 40,\n // also NUM_SOUTH\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n /**\n * INSERT\n */\n INSERT: 45,\n // also NUM_INSERT\n /**\n * DELETE\n */\n DELETE: 46,\n // also NUM_DELETE\n /**\n * ZERO\n */\n ZERO: 48,\n /**\n * ONE\n */\n ONE: 49,\n /**\n * TWO\n */\n TWO: 50,\n /**\n * THREE\n */\n THREE: 51,\n /**\n * FOUR\n */\n FOUR: 52,\n /**\n * FIVE\n */\n FIVE: 53,\n /**\n * SIX\n */\n SIX: 54,\n /**\n * SEVEN\n */\n SEVEN: 55,\n /**\n * EIGHT\n */\n EIGHT: 56,\n /**\n * NINE\n */\n NINE: 57,\n /**\n * QUESTION_MARK\n */\n QUESTION_MARK: 63,\n // needs localization\n /**\n * A\n */\n A: 65,\n /**\n * B\n */\n B: 66,\n /**\n * C\n */\n C: 67,\n /**\n * D\n */\n D: 68,\n /**\n * E\n */\n E: 69,\n /**\n * F\n */\n F: 70,\n /**\n * G\n */\n G: 71,\n /**\n * H\n */\n H: 72,\n /**\n * I\n */\n I: 73,\n /**\n * J\n */\n J: 74,\n /**\n * K\n */\n K: 75,\n /**\n * L\n */\n L: 76,\n /**\n * M\n */\n M: 77,\n /**\n * N\n */\n N: 78,\n /**\n * O\n */\n O: 79,\n /**\n * P\n */\n P: 80,\n /**\n * Q\n */\n Q: 81,\n /**\n * R\n */\n R: 82,\n /**\n * S\n */\n S: 83,\n /**\n * T\n */\n T: 84,\n /**\n * U\n */\n U: 85,\n /**\n * V\n */\n V: 86,\n /**\n * W\n */\n W: 87,\n /**\n * X\n */\n X: 88,\n /**\n * Y\n */\n Y: 89,\n /**\n * Z\n */\n Z: 90,\n /**\n * META\n */\n META: 91,\n // WIN_KEY_LEFT\n /**\n * WIN_KEY_RIGHT\n */\n WIN_KEY_RIGHT: 92,\n /**\n * CONTEXT_MENU\n */\n CONTEXT_MENU: 93,\n /**\n * NUM_ZERO\n */\n NUM_ZERO: 96,\n /**\n * NUM_ONE\n */\n NUM_ONE: 97,\n /**\n * NUM_TWO\n */\n NUM_TWO: 98,\n /**\n * NUM_THREE\n */\n NUM_THREE: 99,\n /**\n * NUM_FOUR\n */\n NUM_FOUR: 100,\n /**\n * NUM_FIVE\n */\n NUM_FIVE: 101,\n /**\n * NUM_SIX\n */\n NUM_SIX: 102,\n /**\n * NUM_SEVEN\n */\n NUM_SEVEN: 103,\n /**\n * NUM_EIGHT\n */\n NUM_EIGHT: 104,\n /**\n * NUM_NINE\n */\n NUM_NINE: 105,\n /**\n * NUM_MULTIPLY\n */\n NUM_MULTIPLY: 106,\n /**\n * NUM_PLUS\n */\n NUM_PLUS: 107,\n /**\n * NUM_MINUS\n */\n NUM_MINUS: 109,\n /**\n * NUM_PERIOD\n */\n NUM_PERIOD: 110,\n /**\n * NUM_DIVISION\n */\n NUM_DIVISION: 111,\n /**\n * F1\n */\n F1: 112,\n /**\n * F2\n */\n F2: 113,\n /**\n * F3\n */\n F3: 114,\n /**\n * F4\n */\n F4: 115,\n /**\n * F5\n */\n F5: 116,\n /**\n * F6\n */\n F6: 117,\n /**\n * F7\n */\n F7: 118,\n /**\n * F8\n */\n F8: 119,\n /**\n * F9\n */\n F9: 120,\n /**\n * F10\n */\n F10: 121,\n /**\n * F11\n */\n F11: 122,\n /**\n * F12\n */\n F12: 123,\n /**\n * NUMLOCK\n */\n NUMLOCK: 144,\n /**\n * SEMICOLON\n */\n SEMICOLON: 186,\n // needs localization\n /**\n * DASH\n */\n DASH: 189,\n // needs localization\n /**\n * EQUALS\n */\n EQUALS: 187,\n // needs localization\n /**\n * COMMA\n */\n COMMA: 188,\n // needs localization\n /**\n * PERIOD\n */\n PERIOD: 190,\n // needs localization\n /**\n * SLASH\n */\n SLASH: 191,\n // needs localization\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192,\n // needs localization\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222,\n // needs localization\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219,\n // needs localization\n /**\n * BACKSLASH\n */\n BACKSLASH: 220,\n // needs localization\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221,\n // needs localization\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224,\n // Firefox (Gecko) fires this for the meta key instead of 91\n /**\n * WIN_IME\n */\n WIN_IME: 229,\n // ======================== Function ========================\n /**\n * whether text and modified key is entered at the same time.\n */\n isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n var keyCode = e.keyCode;\n if (e.altKey && !e.ctrlKey || e.metaKey ||\n // Function keys don't generate text\n keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n return false;\n }\n\n // The following keys are quite harmless, even in combination with\n // CTRL, ALT or SHIFT.\n switch (keyCode) {\n case KeyCode.ALT:\n case KeyCode.CAPS_LOCK:\n case KeyCode.CONTEXT_MENU:\n case KeyCode.CTRL:\n case KeyCode.DOWN:\n case KeyCode.END:\n case KeyCode.ESC:\n case KeyCode.HOME:\n case KeyCode.INSERT:\n case KeyCode.LEFT:\n case KeyCode.MAC_FF_META:\n case KeyCode.META:\n case KeyCode.NUMLOCK:\n case KeyCode.NUM_CENTER:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAUSE:\n case KeyCode.PRINT_SCREEN:\n case KeyCode.RIGHT:\n case KeyCode.SHIFT:\n case KeyCode.UP:\n case KeyCode.WIN_KEY:\n case KeyCode.WIN_KEY_RIGHT:\n return false;\n default:\n return true;\n }\n },\n /**\n * whether character is entered.\n */\n isCharacterKey: function isCharacterKey(keyCode) {\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n return true;\n }\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n return true;\n }\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n return true;\n }\n\n // Safari sends zero key code for non-latin characters.\n if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n return true;\n }\n switch (keyCode) {\n case KeyCode.SPACE:\n case KeyCode.QUESTION_MARK:\n case KeyCode.NUM_PLUS:\n case KeyCode.NUM_MINUS:\n case KeyCode.NUM_PERIOD:\n case KeyCode.NUM_DIVISION:\n case KeyCode.SEMICOLON:\n case KeyCode.DASH:\n case KeyCode.EQUALS:\n case KeyCode.COMMA:\n case KeyCode.PERIOD:\n case KeyCode.SLASH:\n case KeyCode.APOSTROPHE:\n case KeyCode.SINGLE_QUOTE:\n case KeyCode.OPEN_SQUARE_BRACKET:\n case KeyCode.BACKSLASH:\n case KeyCode.CLOSE_SQUARE_BRACKET:\n return true;\n default:\n return false;\n }\n }\n};\nexport default KeyCode;","import _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as ReactDOM from 'react-dom';\n// Let compiler not to search module usage\nvar fullClone = _objectSpread({}, ReactDOM);\nvar version = fullClone.version,\n reactRender = fullClone.render,\n unmountComponentAtNode = fullClone.unmountComponentAtNode;\nvar createRoot;\ntry {\n var mainVersion = Number((version || '').split('.')[0]);\n if (mainVersion >= 18) {\n createRoot = fullClone.createRoot;\n }\n} catch (e) {\n // Do nothing;\n}\nfunction toggleWarning(skip) {\n var __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = fullClone.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n if (__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED && _typeof(__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === 'object') {\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.usingClientEntryPoint = skip;\n }\n}\nvar MARK = '__rc_react_root__';\n\n// ========================== Render ==========================\n\nfunction modernRender(node, container) {\n toggleWarning(true);\n var root = container[MARK] || createRoot(container);\n toggleWarning(false);\n root.render(node);\n container[MARK] = root;\n}\nfunction legacyRender(node, container) {\n reactRender(node, container);\n}\n\n/** @private Test usage. Not work in prod */\nexport function _r(node, container) {\n if (process.env.NODE_ENV !== 'production') {\n return legacyRender(node, container);\n }\n}\nexport function render(node, container) {\n if (createRoot) {\n modernRender(node, container);\n return;\n }\n legacyRender(node, container);\n}\n\n// ========================= Unmount ==========================\nfunction modernUnmount(_x) {\n return _modernUnmount.apply(this, arguments);\n}\nfunction _modernUnmount() {\n _modernUnmount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(container) {\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", Promise.resolve().then(function () {\n var _container$MARK;\n (_container$MARK = container[MARK]) === null || _container$MARK === void 0 ? void 0 : _container$MARK.unmount();\n delete container[MARK];\n }));\n case 1:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return _modernUnmount.apply(this, arguments);\n}\nfunction legacyUnmount(container) {\n unmountComponentAtNode(container);\n}\n\n/** @private Test usage. Not work in prod */\nexport function _u(container) {\n if (process.env.NODE_ENV !== 'production') {\n return legacyUnmount(container);\n }\n}\nexport function unmount(_x2) {\n return _unmount.apply(this, arguments);\n}\nfunction _unmount() {\n _unmount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(container) {\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (!(createRoot !== undefined)) {\n _context2.next = 2;\n break;\n }\n return _context2.abrupt(\"return\", modernUnmount(container));\n case 2:\n legacyUnmount(container);\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return _unmount.apply(this, arguments);\n}","/* eslint-disable no-param-reassign */\n\nvar cached;\nexport default function getScrollBarSize(fresh) {\n if (typeof document === 'undefined') {\n return 0;\n }\n if (fresh || cached === undefined) {\n var inner = document.createElement('div');\n inner.style.width = '100%';\n inner.style.height = '200px';\n var outer = document.createElement('div');\n var outerStyle = outer.style;\n outerStyle.position = 'absolute';\n outerStyle.top = '0';\n outerStyle.left = '0';\n outerStyle.pointerEvents = 'none';\n outerStyle.visibility = 'hidden';\n outerStyle.width = '200px';\n outerStyle.height = '150px';\n outerStyle.overflow = 'hidden';\n outer.appendChild(inner);\n document.body.appendChild(outer);\n var widthContained = inner.offsetWidth;\n outer.style.overflow = 'scroll';\n var widthScroll = inner.offsetWidth;\n if (widthContained === widthScroll) {\n widthScroll = outer.clientWidth;\n }\n document.body.removeChild(outer);\n cached = widthContained - widthScroll;\n }\n return cached;\n}\nfunction ensureSize(str) {\n var match = str.match(/^(.*)px$/);\n var value = Number(match === null || match === void 0 ? void 0 : match[1]);\n return Number.isNaN(value) ? getScrollBarSize() : value;\n}\nexport function getTargetScrollBarSize(target) {\n if (typeof document === 'undefined' || !target || !(target instanceof Element)) {\n return {\n width: 0,\n height: 0\n };\n }\n var _getComputedStyle = getComputedStyle(target, '::-webkit-scrollbar'),\n width = _getComputedStyle.width,\n height = _getComputedStyle.height;\n return {\n width: ensureSize(width),\n height: ensureSize(height)\n };\n}","import * as React from 'react';\nexport default function useEvent(callback) {\n var fnRef = React.useRef();\n fnRef.current = callback;\n var memoFn = React.useCallback(function () {\n var _fnRef$current;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args));\n }, []);\n return memoFn;\n}","import * as React from 'react';\nimport canUseDom from \"../Dom/canUseDom\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nvar useInternalLayoutEffect = process.env.NODE_ENV !== 'test' && canUseDom() ? React.useLayoutEffect : React.useEffect;\nvar useLayoutEffect = function useLayoutEffect(callback, deps) {\n var firstMountRef = React.useRef(true);\n useInternalLayoutEffect(function () {\n return callback(firstMountRef.current);\n }, deps);\n\n // We tell react that first mount has passed\n useInternalLayoutEffect(function () {\n firstMountRef.current = false;\n return function () {\n firstMountRef.current = true;\n };\n }, []);\n};\nexport var useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) {\n useLayoutEffect(function (firstMount) {\n if (!firstMount) {\n return callback();\n }\n }, deps);\n};\nexport default useLayoutEffect;","import * as React from 'react';\nexport default function useMemo(getValue, condition, shouldUpdate) {\n var cacheRef = React.useRef({});\n if (!('value' in cacheRef.current) || shouldUpdate(cacheRef.current.condition, condition)) {\n cacheRef.current.value = getValue();\n cacheRef.current.condition = condition;\n }\n return cacheRef.current.value;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"./useEvent\";\nimport { useLayoutUpdateEffect } from \"./useLayoutEffect\";\nimport useState from \"./useState\";\n/** We only think `undefined` is empty */\nfunction hasValue(value) {\n return value !== undefined;\n}\n\n/**\n * Similar to `useState` but will use props value if provided.\n * Note that internal use rc-util `useState` hook.\n */\nexport default function useMergedState(defaultStateValue, option) {\n var _ref = option || {},\n defaultValue = _ref.defaultValue,\n value = _ref.value,\n onChange = _ref.onChange,\n postState = _ref.postState;\n\n // ======================= Init =======================\n var _useState = useState(function () {\n if (hasValue(value)) {\n return value;\n } else if (hasValue(defaultValue)) {\n return typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n } else {\n return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;\n }\n }),\n _useState2 = _slicedToArray(_useState, 2),\n innerValue = _useState2[0],\n setInnerValue = _useState2[1];\n var mergedValue = value !== undefined ? value : innerValue;\n var postMergedValue = postState ? postState(mergedValue) : mergedValue;\n\n // ====================== Change ======================\n var onChangeFn = useEvent(onChange);\n var _useState3 = useState([mergedValue]),\n _useState4 = _slicedToArray(_useState3, 2),\n prevValue = _useState4[0],\n setPrevValue = _useState4[1];\n useLayoutUpdateEffect(function () {\n var prev = prevValue[0];\n if (innerValue !== prev) {\n onChangeFn(innerValue, prev);\n }\n }, [prevValue]);\n\n // Sync value back to `undefined` when it from control to un-control\n useLayoutUpdateEffect(function () {\n if (!hasValue(value)) {\n setInnerValue(value);\n }\n }, [value]);\n\n // ====================== Update ======================\n var triggerChange = useEvent(function (updater, ignoreDestroy) {\n setInnerValue(updater, ignoreDestroy);\n setPrevValue([mergedValue], ignoreDestroy);\n });\n return [postMergedValue, triggerChange];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n/**\n * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.\n * We do not make this auto is to avoid real memory leak.\n * Developer should confirm it's safe to ignore themselves.\n */\nexport default function useSafeState(defaultValue) {\n var destroyRef = React.useRef(false);\n var _React$useState = React.useState(defaultValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n value = _React$useState2[0],\n setValue = _React$useState2[1];\n React.useEffect(function () {\n destroyRef.current = false;\n return function () {\n destroyRef.current = true;\n };\n }, []);\n function safeSetState(updater, ignoreDestroy) {\n if (ignoreDestroy && destroyRef.current) {\n return;\n }\n setValue(updater);\n }\n return [value, safeSetState];\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport warning from \"./warning\";\n\n/**\n * Deeply compares two object literals.\n * @param obj1 object 1\n * @param obj2 object 2\n * @param shallow shallow compare\n * @returns\n */\nfunction isEqual(obj1, obj2) {\n var shallow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // https://github.com/mapbox/mapbox-gl-js/pull/5979/files#diff-fde7145050c47cc3a306856efd5f9c3016e86e859de9afbd02c879be5067e58f\n var refSet = new Set();\n function deepEqual(a, b) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var circular = refSet.has(a);\n warning(!circular, 'Warning: There may be circular references');\n if (circular) {\n return false;\n }\n if (a === b) {\n return true;\n }\n if (shallow && level > 1) {\n return false;\n }\n refSet.add(a);\n var newLevel = level + 1;\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i], newLevel)) {\n return false;\n }\n }\n return true;\n }\n if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {\n var keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) {\n return false;\n }\n return keys.every(function (key) {\n return deepEqual(a[key], b[key], newLevel);\n });\n }\n // other\n return false;\n }\n return deepEqual(obj1, obj2);\n}\nexport default isEqual;","export default (function () {\n if (typeof navigator === 'undefined' || typeof window === 'undefined') {\n return false;\n }\n var agent = navigator.userAgent || navigator.vendor || window.opera;\n return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substr(0, 4));\n});","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nexport default function omit(obj, fields) {\n var clone = _objectSpread({}, obj);\n if (Array.isArray(fields)) {\n fields.forEach(function (key) {\n delete clone[key];\n });\n }\n return clone;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar attributes = \"accept acceptCharset accessKey action allowFullScreen allowTransparency\\n alt async autoComplete autoFocus autoPlay capture cellPadding cellSpacing challenge\\n charSet checked classID className colSpan cols content contentEditable contextMenu\\n controls coords crossOrigin data dateTime default defer dir disabled download draggable\\n encType form formAction formEncType formMethod formNoValidate formTarget frameBorder\\n headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity\\n is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media\\n mediaGroup method min minLength multiple muted name noValidate nonce open\\n optimum pattern placeholder poster preload radioGroup readOnly rel required\\n reversed role rowSpan rows sandbox scope scoped scrolling seamless selected\\n shape size sizes span spellCheck src srcDoc srcLang srcSet start step style\\n summary tabIndex target title type useMap value width wmode wrap\";\nvar eventsName = \"onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown\\n onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onClick onContextMenu onDoubleClick\\n onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown\\n onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel\\n onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough\\n onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata\\n onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onError\";\nvar propList = \"\".concat(attributes, \" \").concat(eventsName).split(/[\\s\\n]+/);\n\n/* eslint-enable max-len */\nvar ariaPrefix = 'aria-';\nvar dataPrefix = 'data-';\nfunction match(key, prefix) {\n return key.indexOf(prefix) === 0;\n}\n/**\n * Picker props from exist props with filter\n * @param props Passed props\n * @param ariaOnly boolean | { aria?: boolean; data?: boolean; attr?: boolean; } filter config\n */\nexport default function pickAttrs(props) {\n var ariaOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var mergedConfig;\n if (ariaOnly === false) {\n mergedConfig = {\n aria: true,\n data: true,\n attr: true\n };\n } else if (ariaOnly === true) {\n mergedConfig = {\n aria: true\n };\n } else {\n mergedConfig = _objectSpread({}, ariaOnly);\n }\n var attrs = {};\n Object.keys(props).forEach(function (key) {\n if (\n // Aria\n mergedConfig.aria && (key === 'role' || match(key, ariaPrefix)) ||\n // Data\n mergedConfig.data && match(key, dataPrefix) ||\n // Attr\n mergedConfig.attr && propList.includes(key)) {\n attrs[key] = props[key];\n }\n });\n return attrs;\n}","var raf = function raf(callback) {\n return +setTimeout(callback, 16);\n};\nvar caf = function caf(num) {\n return clearTimeout(num);\n};\nif (typeof window !== 'undefined' && 'requestAnimationFrame' in window) {\n raf = function raf(callback) {\n return window.requestAnimationFrame(callback);\n };\n caf = function caf(handle) {\n return window.cancelAnimationFrame(handle);\n };\n}\nvar rafUUID = 0;\nvar rafIds = new Map();\nfunction cleanup(id) {\n rafIds.delete(id);\n}\nvar wrapperRaf = function wrapperRaf(callback) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n rafUUID += 1;\n var id = rafUUID;\n function callRef(leftTimes) {\n if (leftTimes === 0) {\n // Clean up\n cleanup(id);\n\n // Trigger\n callback();\n } else {\n // Next raf\n var realId = raf(function () {\n callRef(leftTimes - 1);\n });\n\n // Bind real raf id\n rafIds.set(id, realId);\n }\n }\n callRef(times);\n return id;\n};\nwrapperRaf.cancel = function (id) {\n var realId = rafIds.get(id);\n cleanup(realId);\n return caf(realId);\n};\nexport default wrapperRaf;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\n/* eslint-disable no-param-reassign */\n\nimport { isMemo } from 'react-is';\nimport useMemo from \"./hooks/useMemo\";\nexport function fillRef(ref, node) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (_typeof(ref) === 'object' && ref && 'current' in ref) {\n ref.current = node;\n }\n}\n\n/**\n * Merge refs into one ref function to support ref passing.\n */\nexport function composeRef() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n var refList = refs.filter(function (ref) {\n return ref;\n });\n if (refList.length <= 1) {\n return refList[0];\n }\n return function (node) {\n refs.forEach(function (ref) {\n fillRef(ref, node);\n });\n };\n}\nexport function useComposeRef() {\n for (var _len2 = arguments.length, refs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n refs[_key2] = arguments[_key2];\n }\n return useMemo(function () {\n return composeRef.apply(void 0, refs);\n }, refs, function (prev, next) {\n return prev.length === next.length && prev.every(function (ref, i) {\n return ref === next[i];\n });\n });\n}\nexport function supportRef(nodeOrComponent) {\n var _type$prototype, _nodeOrComponent$prot;\n var type = isMemo(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type;\n\n // Function component node\n if (typeof type === 'function' && !((_type$prototype = type.prototype) !== null && _type$prototype !== void 0 && _type$prototype.render)) {\n return false;\n }\n\n // Class component\n if (typeof nodeOrComponent === 'function' && !((_nodeOrComponent$prot = nodeOrComponent.prototype) !== null && _nodeOrComponent$prot !== void 0 && _nodeOrComponent$prot.render)) {\n return false;\n }\n return true;\n}\n/* eslint-enable */","/* eslint-disable no-console */\nvar warned = {};\nvar preWarningFns = [];\n\n/**\n * Pre warning enable you to parse content before console.error.\n * Modify to null will prevent warning.\n */\nexport var preMessage = function preMessage(fn) {\n preWarningFns.push(fn);\n};\nexport function warning(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'warning');\n }, message);\n if (finalMessage) {\n console.error(\"Warning: \".concat(finalMessage));\n }\n }\n}\nexport function note(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'note');\n }, message);\n if (finalMessage) {\n console.warn(\"Note: \".concat(finalMessage));\n }\n }\n}\nexport function resetWarned() {\n warned = {};\n}\nexport function call(method, valid, message) {\n if (!valid && !warned[message]) {\n method(false, message);\n warned[message] = true;\n }\n}\nexport function warningOnce(valid, message) {\n call(warning, valid, message);\n}\nexport function noteOnce(valid, message) {\n call(note, valid, message);\n}\nwarningOnce.preMessage = preMessage;\nwarningOnce.resetWarned = resetWarned;\nwarningOnce.noteOnce = noteOnce;\nexport default warningOnce;\n/* eslint-enable */","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.call = call;\nexports.default = void 0;\nexports.note = note;\nexports.noteOnce = noteOnce;\nexports.preMessage = void 0;\nexports.resetWarned = resetWarned;\nexports.warning = warning;\nexports.warningOnce = warningOnce;\n/* eslint-disable no-console */\nvar warned = {};\nvar preWarningFns = [];\n\n/**\n * Pre warning enable you to parse content before console.error.\n * Modify to null will prevent warning.\n */\nvar preMessage = function preMessage(fn) {\n preWarningFns.push(fn);\n};\nexports.preMessage = preMessage;\nfunction warning(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'warning');\n }, message);\n if (finalMessage) {\n console.error(\"Warning: \".concat(finalMessage));\n }\n }\n}\nfunction note(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'note');\n }, message);\n if (finalMessage) {\n console.warn(\"Note: \".concat(finalMessage));\n }\n }\n}\nfunction resetWarned() {\n warned = {};\n}\nfunction call(method, valid, message) {\n if (!valid && !warned[message]) {\n method(false, message);\n warned[message] = true;\n }\n}\nfunction warningOnce(valid, message) {\n call(warning, valid, message);\n}\nfunction noteOnce(valid, message) {\n call(note, valid, message);\n}\nwarningOnce.preMessage = preMessage;\nwarningOnce.resetWarned = resetWarned;\nwarningOnce.noteOnce = noteOnce;\nvar _default = warningOnce;\n/* eslint-enable */\nexports.default = _default;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport ResizeObserver from 'rc-resize-observer';\nimport classNames from 'classnames';\n/**\n * Fill component to provided the scroll content real height.\n */\nvar Filler = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var height = _ref.height,\n offset = _ref.offset,\n children = _ref.children,\n prefixCls = _ref.prefixCls,\n onInnerResize = _ref.onInnerResize,\n innerProps = _ref.innerProps;\n var outerStyle = {};\n var innerStyle = {\n display: 'flex',\n flexDirection: 'column'\n };\n if (offset !== undefined) {\n outerStyle = {\n height: height,\n position: 'relative',\n overflow: 'hidden'\n };\n innerStyle = _objectSpread(_objectSpread({}, innerStyle), {}, {\n transform: \"translateY(\".concat(offset, \"px)\"),\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0\n });\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n style: outerStyle\n }, /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: function onResize(_ref2) {\n var offsetHeight = _ref2.offsetHeight;\n if (offsetHeight && onInnerResize) {\n onInnerResize();\n }\n }\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n style: innerStyle,\n className: classNames(_defineProperty({}, \"\".concat(prefixCls, \"-holder-inner\"), prefixCls)),\n ref: ref\n }, innerProps), children)));\n});\nFiller.displayName = 'Filler';\nexport default Filler;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nvar MIN_SIZE = 20;\nfunction getPageY(e) {\n return 'touches' in e ? e.touches[0].pageY : e.pageY;\n}\nvar ScrollBar = /*#__PURE__*/function (_React$Component) {\n _inherits(ScrollBar, _React$Component);\n var _super = _createSuper(ScrollBar);\n function ScrollBar() {\n var _this;\n _classCallCheck(this, ScrollBar);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _this.moveRaf = null;\n _this.scrollbarRef = /*#__PURE__*/React.createRef();\n _this.thumbRef = /*#__PURE__*/React.createRef();\n _this.visibleTimeout = null;\n _this.state = {\n dragging: false,\n pageY: null,\n startTop: null,\n visible: false\n };\n _this.delayHidden = function () {\n clearTimeout(_this.visibleTimeout);\n _this.setState({\n visible: true\n });\n _this.visibleTimeout = setTimeout(function () {\n _this.setState({\n visible: false\n });\n }, 2000);\n };\n _this.onScrollbarTouchStart = function (e) {\n e.preventDefault();\n };\n _this.onContainerMouseDown = function (e) {\n e.stopPropagation();\n e.preventDefault();\n };\n // ======================= Clean =======================\n _this.patchEvents = function () {\n window.addEventListener('mousemove', _this.onMouseMove);\n window.addEventListener('mouseup', _this.onMouseUp);\n _this.thumbRef.current.addEventListener('touchmove', _this.onMouseMove);\n _this.thumbRef.current.addEventListener('touchend', _this.onMouseUp);\n };\n _this.removeEvents = function () {\n var _this$scrollbarRef$cu;\n window.removeEventListener('mousemove', _this.onMouseMove);\n window.removeEventListener('mouseup', _this.onMouseUp);\n (_this$scrollbarRef$cu = _this.scrollbarRef.current) === null || _this$scrollbarRef$cu === void 0 ? void 0 : _this$scrollbarRef$cu.removeEventListener('touchstart', _this.onScrollbarTouchStart);\n if (_this.thumbRef.current) {\n _this.thumbRef.current.removeEventListener('touchstart', _this.onMouseDown);\n _this.thumbRef.current.removeEventListener('touchmove', _this.onMouseMove);\n _this.thumbRef.current.removeEventListener('touchend', _this.onMouseUp);\n }\n raf.cancel(_this.moveRaf);\n };\n // ======================= Thumb =======================\n _this.onMouseDown = function (e) {\n var onStartMove = _this.props.onStartMove;\n _this.setState({\n dragging: true,\n pageY: getPageY(e),\n startTop: _this.getTop()\n });\n onStartMove();\n _this.patchEvents();\n e.stopPropagation();\n e.preventDefault();\n };\n _this.onMouseMove = function (e) {\n var _this$state = _this.state,\n dragging = _this$state.dragging,\n pageY = _this$state.pageY,\n startTop = _this$state.startTop;\n var onScroll = _this.props.onScroll;\n raf.cancel(_this.moveRaf);\n if (dragging) {\n var offsetY = getPageY(e) - pageY;\n var newTop = startTop + offsetY;\n var enableScrollRange = _this.getEnableScrollRange();\n var enableHeightRange = _this.getEnableHeightRange();\n var ptg = enableHeightRange ? newTop / enableHeightRange : 0;\n var newScrollTop = Math.ceil(ptg * enableScrollRange);\n _this.moveRaf = raf(function () {\n onScroll(newScrollTop);\n });\n }\n };\n _this.onMouseUp = function () {\n var onStopMove = _this.props.onStopMove;\n _this.setState({\n dragging: false\n });\n onStopMove();\n _this.removeEvents();\n };\n // ===================== Calculate =====================\n _this.getSpinHeight = function () {\n var _this$props = _this.props,\n height = _this$props.height,\n count = _this$props.count;\n var baseHeight = height / count * 10;\n baseHeight = Math.max(baseHeight, MIN_SIZE);\n baseHeight = Math.min(baseHeight, height / 2);\n return Math.floor(baseHeight);\n };\n _this.getEnableScrollRange = function () {\n var _this$props2 = _this.props,\n scrollHeight = _this$props2.scrollHeight,\n height = _this$props2.height;\n return scrollHeight - height || 0;\n };\n _this.getEnableHeightRange = function () {\n var height = _this.props.height;\n var spinHeight = _this.getSpinHeight();\n return height - spinHeight || 0;\n };\n _this.getTop = function () {\n var scrollTop = _this.props.scrollTop;\n var enableScrollRange = _this.getEnableScrollRange();\n var enableHeightRange = _this.getEnableHeightRange();\n if (scrollTop === 0 || enableScrollRange === 0) {\n return 0;\n }\n var ptg = scrollTop / enableScrollRange;\n return ptg * enableHeightRange;\n };\n // Not show scrollbar when height is large than scrollHeight\n _this.showScroll = function () {\n var _this$props3 = _this.props,\n height = _this$props3.height,\n scrollHeight = _this$props3.scrollHeight;\n return scrollHeight > height;\n };\n return _this;\n }\n _createClass(ScrollBar, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.scrollbarRef.current.addEventListener('touchstart', this.onScrollbarTouchStart);\n this.thumbRef.current.addEventListener('touchstart', this.onMouseDown);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (prevProps.scrollTop !== this.props.scrollTop) {\n this.delayHidden();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.removeEvents();\n clearTimeout(this.visibleTimeout);\n }\n }, {\n key: \"render\",\n value:\n // ====================== Render =======================\n function render() {\n var _this$state2 = this.state,\n dragging = _this$state2.dragging,\n visible = _this$state2.visible;\n var _this$props4 = this.props,\n prefixCls = _this$props4.prefixCls,\n direction = _this$props4.direction;\n var spinHeight = this.getSpinHeight();\n var top = this.getTop();\n var canScroll = this.showScroll();\n var mergedVisible = canScroll && visible;\n var scrollBarDirection = direction === 'rtl' ? {\n left: 0\n } : {\n right: 0\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: this.scrollbarRef,\n className: classNames(\"\".concat(prefixCls, \"-scrollbar\"), _defineProperty({}, \"\".concat(prefixCls, \"-scrollbar-show\"), canScroll)),\n style: _objectSpread(_objectSpread({\n width: 8,\n top: 0,\n bottom: 0\n }, scrollBarDirection), {}, {\n position: 'absolute',\n display: mergedVisible ? null : 'none'\n }),\n onMouseDown: this.onContainerMouseDown,\n onMouseMove: this.delayHidden\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: this.thumbRef,\n className: classNames(\"\".concat(prefixCls, \"-scrollbar-thumb\"), _defineProperty({}, \"\".concat(prefixCls, \"-scrollbar-thumb-moving\"), dragging)),\n style: {\n width: '100%',\n height: spinHeight,\n top: top,\n left: 0,\n position: 'absolute',\n background: 'rgba(0, 0, 0, 0.5)',\n borderRadius: 99,\n cursor: 'pointer',\n userSelect: 'none'\n },\n onMouseDown: this.onMouseDown\n }));\n }\n }]);\n return ScrollBar;\n}(React.Component);\nexport { ScrollBar as default };","import * as React from 'react';\nexport function Item(_ref) {\n var children = _ref.children,\n setRef = _ref.setRef;\n var refFunc = React.useCallback(function (node) {\n setRef(node);\n }, []);\n return /*#__PURE__*/React.cloneElement(children, {\n ref: refFunc\n });\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\n// Firefox has low performance of map.\nvar CacheMap = /*#__PURE__*/function () {\n function CacheMap() {\n _classCallCheck(this, CacheMap);\n this.maps = void 0;\n this.maps = Object.create(null);\n }\n _createClass(CacheMap, [{\n key: \"set\",\n value: function set(key, value) {\n this.maps[key] = value;\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return this.maps[key];\n }\n }]);\n return CacheMap;\n}();\nexport default CacheMap;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { findListDiffIndex } from '../utils/algorithmUtil';\nexport default function useDiffItem(data, getKey, onDiff) {\n var _React$useState = React.useState(data),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n prevData = _React$useState2[0],\n setPrevData = _React$useState2[1];\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n diffItem = _React$useState4[0],\n setDiffItem = _React$useState4[1];\n React.useEffect(function () {\n var diff = findListDiffIndex(prevData || [], data || [], getKey);\n if ((diff === null || diff === void 0 ? void 0 : diff.index) !== undefined) {\n onDiff === null || onDiff === void 0 ? void 0 : onDiff(diff.index);\n setDiffItem(data[diff.index]);\n }\n setPrevData(data);\n }, [data]);\n return [diffItem];\n}","/**\n * Get index with specific start index one by one. e.g.\n * min: 3, max: 9, start: 6\n *\n * Return index is:\n * [0]: 6\n * [1]: 7\n * [2]: 5\n * [3]: 8\n * [4]: 4\n * [5]: 9\n * [6]: 3\n */\nexport function getIndexByStartLoc(min, max, start, index) {\n var beforeCount = start - min;\n var afterCount = max - start;\n var balanceCount = Math.min(beforeCount, afterCount) * 2;\n // Balance\n if (index <= balanceCount) {\n var stepIndex = Math.floor(index / 2);\n if (index % 2) {\n return start + stepIndex + 1;\n }\n return start - stepIndex;\n }\n // One is out of range\n if (beforeCount > afterCount) {\n return start - (index - afterCount);\n }\n return start + (index - beforeCount);\n}\n/**\n * We assume that 2 list has only 1 item diff and others keeping the order.\n * So we can use dichotomy algorithm to find changed one.\n */\nexport function findListDiffIndex(originList, targetList, getKey) {\n var originLen = originList.length;\n var targetLen = targetList.length;\n var shortList;\n var longList;\n if (originLen === 0 && targetLen === 0) {\n return null;\n }\n if (originLen < targetLen) {\n shortList = originList;\n longList = targetList;\n } else {\n shortList = targetList;\n longList = originList;\n }\n var notExistKey = {\n __EMPTY_ITEM__: true\n };\n function getItemKey(item) {\n if (item !== undefined) {\n return getKey(item);\n }\n return notExistKey;\n }\n // Loop to find diff one\n var diffIndex = null;\n var multiple = Math.abs(originLen - targetLen) !== 1;\n for (var i = 0; i < longList.length; i += 1) {\n var shortKey = getItemKey(shortList[i]);\n var longKey = getItemKey(longList[i]);\n if (shortKey !== longKey) {\n diffIndex = i;\n multiple = multiple || shortKey !== getItemKey(longList[i + 1]);\n break;\n }\n }\n return diffIndex === null ? null : {\n index: diffIndex,\n multiple: multiple\n };\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar isFF = (typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) === 'object' && /Firefox/i.test(navigator.userAgent);\nexport default isFF;","import { useRef } from 'react';\nexport default (function (isScrollAtTop, isScrollAtBottom) {\n // Do lock for a wheel when scrolling\n var lockRef = useRef(false);\n var lockTimeoutRef = useRef(null);\n function lockScroll() {\n clearTimeout(lockTimeoutRef.current);\n lockRef.current = true;\n lockTimeoutRef.current = setTimeout(function () {\n lockRef.current = false;\n }, 50);\n }\n // Pass to ref since global add is in closure\n var scrollPingRef = useRef({\n top: isScrollAtTop,\n bottom: isScrollAtBottom\n });\n scrollPingRef.current.top = isScrollAtTop;\n scrollPingRef.current.bottom = isScrollAtBottom;\n return function (deltaY) {\n var smoothOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var originScroll =\n // Pass origin wheel when on the top\n deltaY < 0 && scrollPingRef.current.top ||\n // Pass origin wheel when on the bottom\n deltaY > 0 && scrollPingRef.current.bottom;\n if (smoothOffset && originScroll) {\n // No need lock anymore when it's smooth offset from touchMove interval\n clearTimeout(lockTimeoutRef.current);\n lockRef.current = false;\n } else if (!originScroll || lockRef.current) {\n lockScroll();\n }\n return !lockRef.current && originScroll;\n };\n});","import { useRef } from 'react';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nvar SMOOTH_PTG = 14 / 15;\nexport default function useMobileTouchMove(inVirtual, listRef, callback) {\n var touchedRef = useRef(false);\n var touchYRef = useRef(0);\n var elementRef = useRef(null);\n // Smooth scroll\n var intervalRef = useRef(null);\n /* eslint-disable prefer-const */\n var cleanUpEvents;\n var onTouchMove = function onTouchMove(e) {\n if (touchedRef.current) {\n var currentY = Math.ceil(e.touches[0].pageY);\n var offsetY = touchYRef.current - currentY;\n touchYRef.current = currentY;\n if (callback(offsetY)) {\n e.preventDefault();\n }\n // Smooth interval\n clearInterval(intervalRef.current);\n intervalRef.current = setInterval(function () {\n offsetY *= SMOOTH_PTG;\n if (!callback(offsetY, true) || Math.abs(offsetY) <= 0.1) {\n clearInterval(intervalRef.current);\n }\n }, 16);\n }\n };\n var onTouchEnd = function onTouchEnd() {\n touchedRef.current = false;\n cleanUpEvents();\n };\n var onTouchStart = function onTouchStart(e) {\n cleanUpEvents();\n if (e.touches.length === 1 && !touchedRef.current) {\n touchedRef.current = true;\n touchYRef.current = Math.ceil(e.touches[0].pageY);\n elementRef.current = e.target;\n elementRef.current.addEventListener('touchmove', onTouchMove);\n elementRef.current.addEventListener('touchend', onTouchEnd);\n }\n };\n cleanUpEvents = function cleanUpEvents() {\n if (elementRef.current) {\n elementRef.current.removeEventListener('touchmove', onTouchMove);\n elementRef.current.removeEventListener('touchend', onTouchEnd);\n }\n };\n useLayoutEffect(function () {\n if (inVirtual) {\n listRef.current.addEventListener('touchstart', onTouchStart);\n }\n return function () {\n var _listRef$current;\n (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.removeEventListener('touchstart', onTouchStart);\n cleanUpEvents();\n clearInterval(intervalRef.current);\n };\n }, [inVirtual]);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"className\", \"height\", \"itemHeight\", \"fullHeight\", \"style\", \"data\", \"children\", \"itemKey\", \"virtual\", \"direction\", \"component\", \"onScroll\", \"onVisibleChange\", \"innerProps\"];\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport Filler from './Filler';\nimport ScrollBar from './ScrollBar';\nimport useChildren from './hooks/useChildren';\nimport useHeights from './hooks/useHeights';\nimport useScrollTo from './hooks/useScrollTo';\nimport useDiffItem from './hooks/useDiffItem';\nimport useFrameWheel from './hooks/useFrameWheel';\nimport useMobileTouchMove from './hooks/useMobileTouchMove';\nimport useOriginScroll from './hooks/useOriginScroll';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nvar EMPTY_DATA = [];\nvar ScrollStyle = {\n overflowY: 'auto',\n overflowAnchor: 'none'\n};\nexport function RawList(props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-virtual-list' : _props$prefixCls,\n className = props.className,\n height = props.height,\n itemHeight = props.itemHeight,\n _props$fullHeight = props.fullHeight,\n fullHeight = _props$fullHeight === void 0 ? true : _props$fullHeight,\n style = props.style,\n data = props.data,\n children = props.children,\n itemKey = props.itemKey,\n virtual = props.virtual,\n direction = props.direction,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n onScroll = props.onScroll,\n onVisibleChange = props.onVisibleChange,\n innerProps = props.innerProps,\n restProps = _objectWithoutProperties(props, _excluded);\n // ================================= MISC =================================\n var useVirtual = !!(virtual !== false && height && itemHeight);\n var inVirtual = useVirtual && data && itemHeight * data.length > height;\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n scrollTop = _useState2[0],\n setScrollTop = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n scrollMoving = _useState4[0],\n setScrollMoving = _useState4[1];\n var mergedClassName = classNames(prefixCls, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), className);\n var mergedData = data || EMPTY_DATA;\n var componentRef = useRef();\n var fillerInnerRef = useRef();\n var scrollBarRef = useRef(); // Hack on scrollbar to enable flash call\n // =============================== Item Key ===============================\n var getKey = React.useCallback(function (item) {\n if (typeof itemKey === 'function') {\n return itemKey(item);\n }\n return item === null || item === void 0 ? void 0 : item[itemKey];\n }, [itemKey]);\n var sharedConfig = {\n getKey: getKey\n };\n // ================================ Scroll ================================\n function syncScrollTop(newTop) {\n setScrollTop(function (origin) {\n var value;\n if (typeof newTop === 'function') {\n value = newTop(origin);\n } else {\n value = newTop;\n }\n var alignedTop = keepInRange(value);\n componentRef.current.scrollTop = alignedTop;\n return alignedTop;\n });\n }\n // ================================ Legacy ================================\n // Put ref here since the range is generate by follow\n var rangeRef = useRef({\n start: 0,\n end: mergedData.length\n });\n var diffItemRef = useRef();\n var _useDiffItem = useDiffItem(mergedData, getKey),\n _useDiffItem2 = _slicedToArray(_useDiffItem, 1),\n diffItem = _useDiffItem2[0];\n diffItemRef.current = diffItem;\n // ================================ Height ================================\n var _useHeights = useHeights(getKey, null, null),\n _useHeights2 = _slicedToArray(_useHeights, 4),\n setInstanceRef = _useHeights2[0],\n collectHeight = _useHeights2[1],\n heights = _useHeights2[2],\n heightUpdatedMark = _useHeights2[3];\n // ========================== Visible Calculation =========================\n var _React$useMemo = React.useMemo(function () {\n if (!useVirtual) {\n return {\n scrollHeight: undefined,\n start: 0,\n end: mergedData.length - 1,\n offset: undefined\n };\n }\n // Always use virtual scroll bar in avoid shaking\n if (!inVirtual) {\n var _fillerInnerRef$curre;\n return {\n scrollHeight: ((_fillerInnerRef$curre = fillerInnerRef.current) === null || _fillerInnerRef$curre === void 0 ? void 0 : _fillerInnerRef$curre.offsetHeight) || 0,\n start: 0,\n end: mergedData.length - 1,\n offset: undefined\n };\n }\n var itemTop = 0;\n var startIndex;\n var startOffset;\n var endIndex;\n var dataLen = mergedData.length;\n for (var i = 0; i < dataLen; i += 1) {\n var item = mergedData[i];\n var key = getKey(item);\n var cacheHeight = heights.get(key);\n var currentItemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n // Check item top in the range\n if (currentItemBottom >= scrollTop && startIndex === undefined) {\n startIndex = i;\n startOffset = itemTop;\n }\n // Check item bottom in the range. We will render additional one item for motion usage\n if (currentItemBottom > scrollTop + height && endIndex === undefined) {\n endIndex = i;\n }\n itemTop = currentItemBottom;\n }\n // When scrollTop at the end but data cut to small count will reach this\n if (startIndex === undefined) {\n startIndex = 0;\n startOffset = 0;\n endIndex = Math.ceil(height / itemHeight);\n }\n if (endIndex === undefined) {\n endIndex = mergedData.length - 1;\n }\n // Give cache to improve scroll experience\n endIndex = Math.min(endIndex + 1, mergedData.length);\n return {\n scrollHeight: itemTop,\n start: startIndex,\n end: endIndex,\n offset: startOffset\n };\n }, [inVirtual, useVirtual, scrollTop, mergedData, heightUpdatedMark, height]),\n scrollHeight = _React$useMemo.scrollHeight,\n start = _React$useMemo.start,\n end = _React$useMemo.end,\n offset = _React$useMemo.offset;\n rangeRef.current.start = start;\n rangeRef.current.end = end;\n // =============================== In Range ===============================\n var maxScrollHeight = scrollHeight - height;\n var maxScrollHeightRef = useRef(maxScrollHeight);\n maxScrollHeightRef.current = maxScrollHeight;\n function keepInRange(newScrollTop) {\n var newTop = newScrollTop;\n if (!Number.isNaN(maxScrollHeightRef.current)) {\n newTop = Math.min(newTop, maxScrollHeightRef.current);\n }\n newTop = Math.max(newTop, 0);\n return newTop;\n }\n var isScrollAtTop = scrollTop <= 0;\n var isScrollAtBottom = scrollTop >= maxScrollHeight;\n var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);\n // ================================ Scroll ================================\n function onScrollBar(newScrollTop) {\n var newTop = newScrollTop;\n syncScrollTop(newTop);\n }\n // When data size reduce. It may trigger native scroll event back to fit scroll position\n function onFallbackScroll(e) {\n var newScrollTop = e.currentTarget.scrollTop;\n if (newScrollTop !== scrollTop) {\n syncScrollTop(newScrollTop);\n }\n // Trigger origin onScroll\n onScroll === null || onScroll === void 0 ? void 0 : onScroll(e);\n }\n // Since this added in global,should use ref to keep update\n var _useFrameWheel = useFrameWheel(useVirtual, isScrollAtTop, isScrollAtBottom, function (offsetY) {\n syncScrollTop(function (top) {\n var newTop = top + offsetY;\n return newTop;\n });\n }),\n _useFrameWheel2 = _slicedToArray(_useFrameWheel, 2),\n onRawWheel = _useFrameWheel2[0],\n onFireFoxScroll = _useFrameWheel2[1];\n // Mobile touch move\n useMobileTouchMove(useVirtual, componentRef, function (deltaY, smoothOffset) {\n if (originScroll(deltaY, smoothOffset)) {\n return false;\n }\n onRawWheel({\n preventDefault: function preventDefault() {},\n deltaY: deltaY\n });\n return true;\n });\n useLayoutEffect(function () {\n // Firefox only\n function onMozMousePixelScroll(e) {\n if (useVirtual) {\n e.preventDefault();\n }\n }\n componentRef.current.addEventListener('wheel', onRawWheel);\n componentRef.current.addEventListener('DOMMouseScroll', onFireFoxScroll);\n componentRef.current.addEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n return function () {\n if (componentRef.current) {\n componentRef.current.removeEventListener('wheel', onRawWheel);\n componentRef.current.removeEventListener('DOMMouseScroll', onFireFoxScroll);\n componentRef.current.removeEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n }\n };\n }, [useVirtual]);\n // ================================= Ref ==================================\n var scrollTo = useScrollTo(componentRef, mergedData, heights, itemHeight, getKey, collectHeight, syncScrollTop, function () {\n var _scrollBarRef$current;\n (_scrollBarRef$current = scrollBarRef.current) === null || _scrollBarRef$current === void 0 ? void 0 : _scrollBarRef$current.delayHidden();\n });\n React.useImperativeHandle(ref, function () {\n return {\n scrollTo: scrollTo\n };\n });\n // ================================ Effect ================================\n /** We need told outside that some list not rendered */\n useLayoutEffect(function () {\n if (onVisibleChange) {\n var renderList = mergedData.slice(start, end + 1);\n onVisibleChange(renderList, mergedData);\n }\n }, [start, end, mergedData]);\n // ================================ Render ================================\n var listChildren = useChildren(mergedData, start, end, setInstanceRef, children, sharedConfig);\n var componentStyle = null;\n if (height) {\n componentStyle = _objectSpread(_defineProperty({}, fullHeight ? 'height' : 'maxHeight', height), ScrollStyle);\n if (useVirtual) {\n componentStyle.overflowY = 'hidden';\n if (scrollMoving) {\n componentStyle.pointerEvents = 'none';\n }\n }\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n style: _objectSpread(_objectSpread({}, style), {}, {\n position: 'relative'\n }),\n className: mergedClassName\n }, restProps), /*#__PURE__*/React.createElement(Component, {\n className: \"\".concat(prefixCls, \"-holder\"),\n style: componentStyle,\n ref: componentRef,\n onScroll: onFallbackScroll\n }, /*#__PURE__*/React.createElement(Filler, {\n prefixCls: prefixCls,\n height: scrollHeight,\n offset: offset,\n onInnerResize: collectHeight,\n ref: fillerInnerRef,\n innerProps: innerProps\n }, listChildren)), useVirtual && /*#__PURE__*/React.createElement(ScrollBar, {\n ref: scrollBarRef,\n prefixCls: prefixCls,\n scrollTop: scrollTop,\n height: height,\n scrollHeight: scrollHeight,\n count: mergedData.length,\n direction: direction,\n onScroll: onScrollBar,\n onStartMove: function onStartMove() {\n setScrollMoving(true);\n },\n onStopMove: function onStopMove() {\n setScrollMoving(false);\n }\n }));\n}\nvar List = /*#__PURE__*/React.forwardRef(RawList);\nList.displayName = 'List';\nexport default List;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useEffect } from 'react';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport raf from \"rc-util/es/raf\";\nimport CacheMap from '../utils/CacheMap';\nexport default function useHeights(getKey, onItemAdd, onItemRemove) {\n var _React$useState = React.useState(0),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n updatedMark = _React$useState2[0],\n setUpdatedMark = _React$useState2[1];\n var instanceRef = useRef(new Map());\n var heightsRef = useRef(new CacheMap());\n var collectRafRef = useRef();\n function cancelRaf() {\n raf.cancel(collectRafRef.current);\n }\n function collectHeight() {\n cancelRaf();\n collectRafRef.current = raf(function () {\n instanceRef.current.forEach(function (element, key) {\n if (element && element.offsetParent) {\n var htmlElement = findDOMNode(element);\n var offsetHeight = htmlElement.offsetHeight;\n if (heightsRef.current.get(key) !== offsetHeight) {\n heightsRef.current.set(key, htmlElement.offsetHeight);\n }\n }\n });\n // Always trigger update mark to tell parent that should re-calculate heights when resized\n setUpdatedMark(function (c) {\n return c + 1;\n });\n });\n }\n function setInstanceRef(item, instance) {\n var key = getKey(item);\n var origin = instanceRef.current.get(key);\n if (instance) {\n instanceRef.current.set(key, instance);\n collectHeight();\n } else {\n instanceRef.current.delete(key);\n }\n // Instance changed\n if (!origin !== !instance) {\n if (instance) {\n onItemAdd === null || onItemAdd === void 0 ? void 0 : onItemAdd(item);\n } else {\n onItemRemove === null || onItemRemove === void 0 ? void 0 : onItemRemove(item);\n }\n }\n }\n useEffect(function () {\n return cancelRaf;\n }, []);\n return [setInstanceRef, collectHeight, heightsRef.current, updatedMark];\n}","import { useRef } from 'react';\nimport raf from \"rc-util/es/raf\";\nimport isFF from '../utils/isFirefox';\nimport useOriginScroll from './useOriginScroll';\nexport default function useFrameWheel(inVirtual, isScrollAtTop, isScrollAtBottom, onWheelDelta) {\n var offsetRef = useRef(0);\n var nextFrameRef = useRef(null);\n // Firefox patch\n var wheelValueRef = useRef(null);\n var isMouseScrollRef = useRef(false);\n // Scroll status sync\n var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom);\n function onWheel(event) {\n if (!inVirtual) return;\n raf.cancel(nextFrameRef.current);\n var deltaY = event.deltaY;\n offsetRef.current += deltaY;\n wheelValueRef.current = deltaY;\n // Do nothing when scroll at the edge, Skip check when is in scroll\n if (originScroll(deltaY)) return;\n // Proxy of scroll events\n if (!isFF) {\n event.preventDefault();\n }\n nextFrameRef.current = raf(function () {\n // Patch a multiple for Firefox to fix wheel number too small\n // ref: https://github.com/ant-design/ant-design/issues/26372#issuecomment-679460266\n var patchMultiple = isMouseScrollRef.current ? 10 : 1;\n onWheelDelta(offsetRef.current * patchMultiple);\n offsetRef.current = 0;\n });\n }\n // A patch for firefox\n function onFireFoxScroll(event) {\n if (!inVirtual) return;\n isMouseScrollRef.current = event.detail === wheelValueRef.current;\n }\n return [onWheel, onFireFoxScroll];\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\n/* eslint-disable no-param-reassign */\nimport * as React from 'react';\nimport raf from \"rc-util/es/raf\";\nexport default function useScrollTo(containerRef, data, heights, itemHeight, getKey, collectHeight, syncScrollTop, triggerFlash) {\n var scrollRef = React.useRef();\n return function (arg) {\n // When not argument provided, we think dev may want to show the scrollbar\n if (arg === null || arg === undefined) {\n triggerFlash();\n return;\n }\n // Normal scroll logic\n raf.cancel(scrollRef.current);\n if (typeof arg === 'number') {\n syncScrollTop(arg);\n } else if (arg && _typeof(arg) === 'object') {\n var index;\n var align = arg.align;\n if ('index' in arg) {\n index = arg.index;\n } else {\n index = data.findIndex(function (item) {\n return getKey(item) === arg.key;\n });\n }\n var _arg$offset = arg.offset,\n offset = _arg$offset === void 0 ? 0 : _arg$offset;\n // We will retry 3 times in case dynamic height shaking\n var syncScroll = function syncScroll(times, targetAlign) {\n if (times < 0 || !containerRef.current) return;\n var height = containerRef.current.clientHeight;\n var needCollectHeight = false;\n var newTargetAlign = targetAlign;\n // Go to next frame if height not exist\n if (height) {\n var mergedAlign = targetAlign || align;\n // Get top & bottom\n var stackTop = 0;\n var itemTop = 0;\n var itemBottom = 0;\n var maxLen = Math.min(data.length, index);\n for (var i = 0; i <= maxLen; i += 1) {\n var key = getKey(data[i]);\n itemTop = stackTop;\n var cacheHeight = heights.get(key);\n itemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n stackTop = itemBottom;\n if (i === index && cacheHeight === undefined) {\n needCollectHeight = true;\n }\n }\n // Scroll to\n var targetTop = null;\n switch (mergedAlign) {\n case 'top':\n targetTop = itemTop - offset;\n break;\n case 'bottom':\n targetTop = itemBottom - height + offset;\n break;\n default:\n {\n var scrollTop = containerRef.current.scrollTop;\n var scrollBottom = scrollTop + height;\n if (itemTop < scrollTop) {\n newTargetAlign = 'top';\n } else if (itemBottom > scrollBottom) {\n newTargetAlign = 'bottom';\n }\n }\n }\n if (targetTop !== null && targetTop !== containerRef.current.scrollTop) {\n syncScrollTop(targetTop);\n }\n }\n // We will retry since element may not sync height as it described\n scrollRef.current = raf(function () {\n if (needCollectHeight) {\n collectHeight();\n }\n syncScroll(times - 1, newTargetAlign);\n }, 2); // Delay 2 to wait for List collect heights\n };\n\n syncScroll(3);\n }\n };\n}","import * as React from 'react';\nimport { Item } from '../Item';\nexport default function useChildren(list, startIndex, endIndex, setNodeRef, renderFunc, _ref) {\n var getKey = _ref.getKey;\n return list.slice(startIndex, endIndex + 1).map(function (item, index) {\n var eleIndex = startIndex + index;\n var node = renderFunc(item, eleIndex, {\n // style: status === 'MEASURE_START' ? { visibility: 'hidden' } : {},\n });\n var key = getKey(item);\n return /*#__PURE__*/React.createElement(Item, {\n key: key,\n setRef: function setRef(ele) {\n return setNodeRef(item, ele);\n }\n }, node);\n });\n}","import List from './List';\nexport default List;","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactConfetti\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"ReactConfetti\"] = factory(root[\"React\"]);\n})(typeof self !== \"undefined\" ? self : this, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","'use strict';\n\n// t: current time, b: beginning value, _c: final value, d: total duration\nvar tweenFunctions = {\n linear: function(t, b, _c, d) {\n var c = _c - b;\n return c * t / d + b;\n },\n easeInQuad: function(t, b, _c, d) {\n var c = _c - b;\n return c * (t /= d) * t + b;\n },\n easeOutQuad: function(t, b, _c, d) {\n var c = _c - b;\n return -c * (t /= d) * (t - 2) + b;\n },\n easeInOutQuad: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t + b;\n } else {\n return -c / 2 * ((--t) * (t - 2) - 1) + b;\n }\n },\n easeInCubic: function(t, b, _c, d) {\n var c = _c - b;\n return c * (t /= d) * t * t + b;\n },\n easeOutCubic: function(t, b, _c, d) {\n var c = _c - b;\n return c * ((t = t / d - 1) * t * t + 1) + b;\n },\n easeInOutCubic: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t * t + b;\n } else {\n return c / 2 * ((t -= 2) * t * t + 2) + b;\n }\n },\n easeInQuart: function(t, b, _c, d) {\n var c = _c - b;\n return c * (t /= d) * t * t * t + b;\n },\n easeOutQuart: function(t, b, _c, d) {\n var c = _c - b;\n return -c * ((t = t / d - 1) * t * t * t - 1) + b;\n },\n easeInOutQuart: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t * t * t + b;\n } else {\n return -c / 2 * ((t -= 2) * t * t * t - 2) + b;\n }\n },\n easeInQuint: function(t, b, _c, d) {\n var c = _c - b;\n return c * (t /= d) * t * t * t * t + b;\n },\n easeOutQuint: function(t, b, _c, d) {\n var c = _c - b;\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n },\n easeInOutQuint: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t * t * t * t + b;\n } else {\n return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;\n }\n },\n easeInSine: function(t, b, _c, d) {\n var c = _c - b;\n return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n },\n easeOutSine: function(t, b, _c, d) {\n var c = _c - b;\n return c * Math.sin(t / d * (Math.PI / 2)) + b;\n },\n easeInOutSine: function(t, b, _c, d) {\n var c = _c - b;\n return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;\n },\n easeInExpo: function(t, b, _c, d) {\n var c = _c - b;\n return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\n },\n easeOutExpo: function(t, b, _c, d) {\n var c = _c - b;\n return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\n },\n easeInOutExpo: function(t, b, _c, d) {\n var c = _c - b;\n if (t === 0) {\n return b;\n }\n if (t === d) {\n return b + c;\n }\n if ((t /= d / 2) < 1) {\n return c / 2 * Math.pow(2, 10 * (t - 1)) + b;\n } else {\n return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;\n }\n },\n easeInCirc: function(t, b, _c, d) {\n var c = _c - b;\n return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;\n },\n easeOutCirc: function(t, b, _c, d) {\n var c = _c - b;\n return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;\n },\n easeInOutCirc: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;\n } else {\n return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;\n }\n },\n easeInElastic: function(t, b, _c, d) {\n var c = _c - b;\n var a, p, s;\n s = 1.70158;\n p = 0;\n a = c;\n if (t === 0) {\n return b;\n } else if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;\n },\n easeOutElastic: function(t, b, _c, d) {\n var c = _c - b;\n var a, p, s;\n s = 1.70158;\n p = 0;\n a = c;\n if (t === 0) {\n return b;\n } else if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;\n },\n easeInOutElastic: function(t, b, _c, d) {\n var c = _c - b;\n var a, p, s;\n s = 1.70158;\n p = 0;\n a = c;\n if (t === 0) {\n return b;\n } else if ((t /= d / 2) === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n if (t < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;\n } else {\n return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * 0.5 + c + b;\n }\n },\n easeInBack: function(t, b, _c, d, s) {\n var c = _c - b;\n if (s === void 0) {\n s = 1.70158;\n }\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n },\n easeOutBack: function(t, b, _c, d, s) {\n var c = _c - b;\n if (s === void 0) {\n s = 1.70158;\n }\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n },\n easeInOutBack: function(t, b, _c, d, s) {\n var c = _c - b;\n if (s === void 0) {\n s = 1.70158;\n }\n if ((t /= d / 2) < 1) {\n return c / 2 * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\n } else {\n return c / 2 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\n }\n },\n easeInBounce: function(t, b, _c, d) {\n var c = _c - b;\n var v;\n v = tweenFunctions.easeOutBounce(d - t, 0, c, d);\n return c - v + b;\n },\n easeOutBounce: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d) < 1 / 2.75) {\n return c * (7.5625 * t * t) + b;\n } else if (t < 2 / 2.75) {\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;\n } else if (t < 2.5 / 2.75) {\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;\n } else {\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;\n }\n },\n easeInOutBounce: function(t, b, _c, d) {\n var c = _c - b;\n var v;\n if (t < d / 2) {\n v = tweenFunctions.easeInBounce(t * 2, 0, c, d);\n return v * 0.5 + b;\n } else {\n v = tweenFunctions.easeOutBounce(t * 2 - d, 0, c, d);\n return v * 0.5 + c * 0.5 + b;\n }\n }\n};\n\nmodule.exports = tweenFunctions;\n","import { randomRange, randomInt, degreesToRads } from './utils'\nimport { IConfettiOptions } from './Confetti'\n\nexport enum ParticleShape {\n Circle = 0,\n Square,\n Strip,\n}\n\nenum RotationDirection {\n Positive = 1,\n Negative = -1,\n}\n\nexport default class Particle {\n constructor(context: CanvasRenderingContext2D, getOptions: () => IConfettiOptions, x: number, y: number) {\n this.getOptions = getOptions\n const {\n colors,\n initialVelocityX,\n initialVelocityY,\n } = this.getOptions()\n this.context = context\n this.x = x\n this.y = y\n this.w = randomRange(5, 20)\n this.h = randomRange(5, 20)\n this.radius = randomRange(5, 10)\n this.vx = typeof initialVelocityX === 'number' ? randomRange(-initialVelocityX, initialVelocityX) : randomRange(initialVelocityX.min, initialVelocityX.max)\n this.vy = typeof initialVelocityY === 'number' ? randomRange(-initialVelocityY, 0) : randomRange(initialVelocityY.min, initialVelocityY.max)\n this.shape = randomInt(0, 2)\n this.angle = degreesToRads(randomRange(0, 360))\n this.angularSpin = randomRange(-0.2, 0.2)\n this.color = colors[Math.floor(Math.random() * colors.length)]\n this.rotateY = randomRange(0, 1)\n this.rotationDirection = randomRange(0, 1) ? RotationDirection.Positive : RotationDirection.Negative\n }\n\n context: CanvasRenderingContext2D\n\n radius: number\n\n x: number\n\n y: number\n\n w: number\n\n h: number\n\n vx: number\n\n vy: number\n\n shape: ParticleShape\n\n angle: number\n\n angularSpin: number\n\n color: string\n\n // Actually used as scaleY to simulate rotation cheaply\n rotateY: number\n\n rotationDirection: RotationDirection\n\n getOptions: () => IConfettiOptions\n\n update() {\n const {\n gravity,\n wind,\n friction,\n opacity,\n drawShape,\n } = this.getOptions()\n this.x += this.vx\n this.y += this.vy\n this.vy += gravity\n this.vx += wind\n this.vx *= friction\n this.vy *= friction\n if(this.rotateY >= 1 && this.rotationDirection === RotationDirection.Positive) {\n this.rotationDirection = RotationDirection.Negative\n } else if(this.rotateY <= -1 && this.rotationDirection === RotationDirection.Negative) {\n this.rotationDirection = RotationDirection.Positive\n }\n\n const rotateDelta = 0.1 * this.rotationDirection\n\n this.rotateY += rotateDelta\n this.angle += this.angularSpin\n this.context.save()\n this.context.translate(this.x, this.y)\n this.context.rotate(this.angle)\n this.context.scale(1, this.rotateY)\n this.context.rotate(this.angle)\n this.context.beginPath()\n this.context.fillStyle = this.color\n this.context.strokeStyle = this.color\n this.context.globalAlpha = opacity\n this.context.lineCap = 'round'\n this.context.lineWidth = 2\n if(drawShape && typeof drawShape === 'function') {\n drawShape.call(this, this.context)\n } else {\n switch(this.shape) {\n case ParticleShape.Circle: {\n this.context.beginPath()\n this.context.arc(0, 0, this.radius, 0, 2 * Math.PI)\n this.context.fill()\n break\n }\n case ParticleShape.Square: {\n this.context.fillRect(-this.w / 2, -this.h / 2, this.w, this.h)\n break\n }\n case ParticleShape.Strip: {\n this.context.fillRect(-this.w / 6, -this.h / 2, this.w / 3, this.h)\n break\n }\n }\n }\n this.context.closePath()\n this.context.restore()\n }\n}\n","import { IPoint } from './Point'\nimport { IRect } from './Rect'\nimport { ICircle } from './Circle'\n\nexport function norm(value: number, min:number, max: number) {\n return (value - min) / (max - min)\n}\n\nexport function lerp(lnorm: number, min: number, max: number) {\n return ((max - min) * lnorm) + min\n}\n\nexport function map(value: number, sourceMin: number, sourceMax: number, destMin: number, destMax: number) {\n return lerp(norm(value, sourceMin, sourceMax), destMin, destMax)\n}\n\nexport function clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, Math.min(min, max)), Math.max(min, max))\n}\n\nexport function distance(p0: IPoint, p1: IPoint) {\n const dx = p1.x - p0.x\n const dy = p1.y - p0.y\n return Math.sqrt((dx * dx) + (dy * dy))\n}\n\nexport function distanceXY(x0: number, y0: number, x1: number, y1: number) {\n const dx = x1 - x0\n const dy = y1 - y0\n return Math.sqrt((dx * dx) + (dy * dy))\n}\n\nexport function circleCollision(c0: ICircle, c1: ICircle) {\n return distance(c0, c1) <= c0.radius + c1.radius\n}\n\nexport function circlePointCollision(x: number, y:number, circle: ICircle) {\n return distanceXY(x, y, circle.x, circle.y) < circle.radius\n}\n\nexport function inRange(value: number, min: number, max: number) {\n return value >= Math.min(min, max) && value <= Math.max(min, max)\n}\n\nexport function pointInRect(p: IPoint, rect: IRect) {\n return inRange(p.x, rect.x, rect.x + rect.w) &&\n inRange(p.y, rect.y, rect.y + rect.h)\n}\n\nexport function rangeIntersect(min0: number, max0: number, min1: number, max1: number) {\n return Math.max(min0, max0) >= Math.min(min1, max1) &&\n Math.min(min0, max0) <= Math.max(min1, max1)\n}\n\nexport function rectIntersect(r0: IRect, r1: IRect) {\n return rangeIntersect(r0.x, r0.x + r0.w, r1.x, r1.x + r1.w) &&\n rangeIntersect(r0.y, r0.y + r0.h, r1.y, r1.y + r1.h)\n}\n\nexport function degreesToRads(degrees: number) {\n return degrees * Math.PI / 180\n}\n\nexport function radsToDegrees(radians: number) {\n return (radians * 180) / Math.PI\n}\n\nexport function randomRange(min: number, max: number) {\n return min + (Math.random() * (max - min))\n}\n\nexport function randomInt(min: number, max: number) {\n return Math.floor(min + (Math.random() * ((max - min) + 1)))\n}\n","import { IConfettiOptions } from './Confetti'\nimport { IRect } from './Rect'\nimport Particle from './Particle'\nimport { randomRange } from './utils'\n\nexport interface IParticleGenerator extends IRect {\n removeParticleAt: (index: number) => void\n getParticle: () => void\n animate: () => boolean\n particles: Particle[]\n particlesGenerated: number\n}\n\nexport default class ParticleGenerator implements IParticleGenerator {\n constructor(canvas: HTMLCanvasElement, getOptions: () => IConfettiOptions) {\n this.canvas = canvas\n const ctx = this.canvas.getContext('2d')\n if(!ctx) {\n throw new Error('Could not get canvas context')\n }\n this.context = ctx\n this.getOptions = getOptions\n }\n\n canvas: HTMLCanvasElement\n\n context: CanvasRenderingContext2D\n\n getOptions: () => IConfettiOptions\n\n x: number = 0\n\n y: number = 0\n\n w: number = 0\n\n h: number = 0\n\n lastNumberOfPieces: number = 0\n\n tweenInitTime: number = Date.now()\n\n particles: Particle[] = []\n\n particlesGenerated: number = 0\n\n removeParticleAt = (i: number) => {\n this.particles.splice(i, 1)\n }\n\n getParticle = () => {\n const newParticleX = randomRange(this.x, this.w + this.x)\n const newParticleY = randomRange(this.y, this.h + this.y)\n return new Particle(this.context, this.getOptions, newParticleX, newParticleY)\n }\n\n animate = (): boolean => {\n const {\n canvas,\n context,\n particlesGenerated,\n lastNumberOfPieces,\n } = this\n const {\n run,\n recycle,\n numberOfPieces,\n debug,\n tweenFunction,\n tweenDuration,\n } = this.getOptions()\n if(!run) {\n return false\n }\n\n const nP = this.particles.length\n const activeCount = recycle ? nP : particlesGenerated\n\n const now = Date.now()\n\n // Initial population\n if(activeCount < numberOfPieces) {\n // Use the numberOfPieces prop as a key to reset the easing timing\n if(lastNumberOfPieces !== numberOfPieces) {\n this.tweenInitTime = now\n this.lastNumberOfPieces = numberOfPieces\n }\n const { tweenInitTime } = this\n // Add more than one piece per loop, otherwise the number of pieces would\n // be limitted by the RAF framerate\n const progressTime = now - tweenInitTime > tweenDuration\n ? tweenDuration\n : Math.max(0, now - tweenInitTime)\n const tweenedVal = tweenFunction(progressTime, activeCount, numberOfPieces, tweenDuration)\n const numToAdd = Math.round(tweenedVal - activeCount)\n for(let i = 0; i < numToAdd; i++) {\n this.particles.push(this.getParticle())\n }\n this.particlesGenerated += numToAdd\n }\n if(debug) {\n // Draw debug text\n context.font = '12px sans-serif'\n context.fillStyle = '#333'\n context.textAlign = 'right'\n context.fillText(`Particles: ${nP}`, canvas.width - 10, canvas.height - 20)\n }\n\n // Maintain the population\n this.particles.forEach((p, i) => {\n // Update each particle's position\n p.update()\n // Prune the off-canvas particles\n if(p.y > canvas.height || p.y < -100 || p.x > canvas.width + 100 || p.x < -100) {\n if(recycle && activeCount <= numberOfPieces) {\n // Replace the particle with a brand new one\n this.particles[i] = this.getParticle()\n } else {\n this.removeParticleAt(i)\n }\n }\n })\n return nP > 0 || activeCount < numberOfPieces\n }\n}\n","import tweens from 'tween-functions'\nimport { IRect } from './Rect'\nimport ParticleGenerator from './ParticleGenerator'\n\nexport interface IConfettiOptions {\n /**\n * Width of the component\n * @default window.width\n */\n width: number\n /**\n * Height of the component\n * @default window.height\n */\n height: number\n /**\n * Max number of confetti pieces to render.\n * @default 200\n */\n numberOfPieces: number\n /**\n * Slows movement of pieces. (lower number = slower confetti)\n * @default 0.99\n */\n friction: number\n /**\n * Blows confetti along the X axis.\n * @default 0\n */\n wind: number\n /**\n * How fast it falls (pixels per frame)\n * @default 0.1\n */\n gravity: number\n /**\n * How fast the confetti is emitted horizontally\n * @default 4\n */\n initialVelocityX: {min: number, max: number} | number\n /**\n * How fast the confetti is emitted vertically\n * @default 10\n */\n initialVelocityY: {min: number, max: number} | number\n /**\n * Array of colors to choose from.\n */\n colors: string[]\n /**\n * Opacity of the confetti.\n * @default 1\n */\n opacity: number\n /**\n * If false, only numberOfPieces will be emitted and then stops. If true, when a confetto goes offscreen, a new one will be emitted.\n * @default true\n */\n recycle: boolean\n /**\n * If false, stops the requestAnimationFrame loop.\n * @default true\n */\n run: boolean\n /**\n * Renders some debug text on the canvas.\n * @default false\n */\n debug: boolean\n /**\n * A Rect defining the area where the confetti will spawn.\n * @default {\n * x: 0,\n * y: 0,\n * w: canvas.width,\n * h: 0\n * }\n */\n confettiSource: IRect\n /**\n * Controls the rate at which confetti is spawned.\n * @default easeInOutQuad\n */\n tweenFunction: (currentTime: number, currentValue: number, targetValue: number, duration: number, s?: number) => number\n /**\n * Number of milliseconds it should take to spawn numberOfPieces.\n * @default 5000\n */\n tweenDuration: number\n /**\n * Function to draw your own confetti shapes.\n */\n drawShape?: (context: CanvasRenderingContext2D) => void\n /**\n * Function called when all confetti has fallen off-canvas.\n */\n onConfettiComplete?: (confettiInstance?: Confetti) => void\n}\n\nexport const confettiDefaults: Pick<IConfettiOptions, Exclude<keyof IConfettiOptions, 'confettiSource'>> = {\n width: typeof window !== 'undefined' ? window.innerWidth : 300,\n height: typeof window !== 'undefined' ? window.innerHeight : 200,\n numberOfPieces: 200,\n friction: 0.99,\n wind: 0,\n gravity: 0.1,\n initialVelocityX: 4,\n initialVelocityY: 10,\n colors: [\n '#f44336', '#e91e63', '#9c27b0', '#673ab7', '#3f51b5',\n '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#4CAF50',\n '#8BC34A', '#CDDC39', '#FFEB3B', '#FFC107', '#FF9800',\n '#FF5722', '#795548',\n ],\n opacity: 1.0,\n debug: false,\n tweenFunction: tweens.easeInOutQuad,\n tweenDuration: 5000,\n recycle: true,\n run: true,\n}\n\nexport class Confetti {\n constructor(canvas: HTMLCanvasElement, opts: Partial<IConfettiOptions>) {\n this.canvas = canvas\n const ctx = this.canvas.getContext('2d')\n if(!ctx) {\n throw new Error('Could not get canvas context')\n }\n this.context = ctx\n\n this.generator = new ParticleGenerator(this.canvas, () => (this.options as IConfettiOptions))\n this.options = opts\n this.update()\n }\n\n canvas: HTMLCanvasElement\n\n context: CanvasRenderingContext2D\n\n _options!: IConfettiOptions\n\n generator: ParticleGenerator\n\n rafId?: number\n\n get options(): Partial<IConfettiOptions> {\n return this._options\n }\n\n set options(opts: Partial<IConfettiOptions>) {\n const lastRunState = this._options && this._options.run\n const lastRecycleState = this._options && this._options.recycle\n this.setOptionsWithDefaults(opts)\n if(this.generator) {\n Object.assign(this.generator, this.options.confettiSource)\n if(typeof opts.recycle === 'boolean' && opts.recycle && lastRecycleState === false) {\n this.generator.lastNumberOfPieces = this.generator.particles.length\n }\n }\n if(typeof opts.run === 'boolean' && opts.run && lastRunState === false) {\n this.update()\n }\n }\n\n setOptionsWithDefaults = (opts: Partial<IConfettiOptions>) => {\n const computedConfettiDefaults = {\n confettiSource: {\n x: 0,\n y: 0,\n w: this.canvas.width,\n h: 0,\n },\n }\n this._options = { ...computedConfettiDefaults, ...confettiDefaults, ...opts }\n Object.assign(this, opts.confettiSource)\n }\n\n update = () => {\n const {\n options: {\n run,\n onConfettiComplete,\n },\n canvas,\n context,\n } = this\n if(run) {\n context.fillStyle = 'white'\n context.clearRect(0, 0, canvas.width, canvas.height)\n }\n if(this.generator.animate()) {\n this.rafId = requestAnimationFrame(this.update)\n } else {\n if(onConfettiComplete && typeof onConfettiComplete === 'function' && this.generator.particlesGenerated > 0) {\n onConfettiComplete.call(this, this)\n }\n this._options.run = false\n }\n }\n\n reset = () => {\n if(this.generator && this.generator.particlesGenerated > 0) {\n this.generator.particlesGenerated = 0\n this.generator.particles = []\n this.generator.lastNumberOfPieces = 0\n }\n }\n\n stop = () => {\n this.options = { run: false }\n if(this.rafId) {\n cancelAnimationFrame(this.rafId)\n this.rafId = undefined\n }\n }\n}\n\nexport default Confetti\n","import React, { Component, CanvasHTMLAttributes } from 'react'\nimport Confetti, { IConfettiOptions, confettiDefaults } from './Confetti'\n\nconst ref = React.createRef<HTMLCanvasElement>()\n\nexport type Props = Partial<IConfettiOptions> & CanvasHTMLAttributes<HTMLCanvasElement> & { canvasRef?: React.Ref<HTMLCanvasElement> }\n\nclass ReactConfettiInternal extends Component<Props> {\n static readonly defaultProps = {\n ...confettiDefaults,\n }\n\n static readonly displayName = 'ReactConfetti'\n\n constructor(props: Props, ...rest: any[]) {\n super(props, ...rest)\n this.canvas = props.canvasRef as React.RefObject<HTMLCanvasElement> || ref\n }\n\n canvas: React.RefObject<HTMLCanvasElement> = React.createRef()\n\n confetti?: Confetti\n\n componentDidMount() {\n if(this.canvas.current) {\n const opts = extractCanvasProps(this.props)[0]\n this.confetti = new Confetti(this.canvas.current, opts)\n }\n }\n\n componentDidUpdate() {\n const confettiOptions = extractCanvasProps(this.props)[0]\n if(this.confetti) {\n this.confetti.options = confettiOptions as IConfettiOptions\n }\n }\n\n componentWillUnmount() {\n if(this.confetti) {\n this.confetti.stop()\n }\n this.confetti = undefined\n }\n\n render() {\n const [confettiOptions, passedProps] = extractCanvasProps(this.props)\n const canvasStyles = {\n zIndex: 2,\n position: 'absolute' as 'absolute',\n pointerEvents: 'none' as 'none',\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n ...passedProps.style,\n }\n return (\n <canvas\n width={confettiOptions.width}\n height={confettiOptions.height}\n ref={this.canvas}\n {...passedProps}\n style={canvasStyles}\n />\n )\n }\n}\n\ninterface Refs {\n [key: string]: React.Ref<HTMLElement>\n}\nfunction extractCanvasProps(props: Partial<IConfettiOptions> | any): [Partial<IConfettiOptions>, Partial<CanvasHTMLAttributes<HTMLCanvasElement>>, Refs] {\n const confettiOptions: Partial<IConfettiOptions> = {}\n const refs: Refs = {}\n const rest: any = {}\n const confettiOptionKeys = [...Object.keys(confettiDefaults), 'confettiSource', 'drawShape', 'onConfettiComplete']\n const refProps = ['canvasRef']\n for(const prop in props) {\n const val = props[prop as string]\n if(confettiOptionKeys.includes(prop)) {\n confettiOptions[prop as keyof IConfettiOptions] = val\n } else if(refProps.includes(prop)) {\n refProps[prop as any] = val\n } else {\n rest[prop] = val\n }\n }\n return [confettiOptions, rest, refs]\n}\n\nexport const ReactConfetti = React.forwardRef<HTMLCanvasElement, Props>((props, ref) => (\n <ReactConfettiInternal canvasRef={ref} {...props} />\n))\n\nexport default ReactConfetti\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;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}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||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",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<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";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<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){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;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 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 b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;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<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=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.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=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<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=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\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(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<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}\nfunction Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Tg(a,b){Ng=a;Pg=Og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(Ug=!0),a.firstContext=null)}\nfunction Vg(a){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;return Zg(a,d)}\nfunction Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction bh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction fh(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}\nfunction ih(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=\nlh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction qh(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&nh.enqueueReplaceState(b,b.state,null)}\nfunction rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kh(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}\nfunction sh(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function uh(a){var b=a._init;return b(a._payload)}\nfunction vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=xh(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),\nc.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>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(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(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;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}\nfunction ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction ei(a,b){return\"function\"===typeof b?b(a):b}\nfunction fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(Ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function hi(){}\nfunction ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}\nfunction qi(a){var b=ci();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}\nfunction li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}\nfunction ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}\nfunction yi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?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<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Vh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},\nuseDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===\nO?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}\nfunction Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}\nfunction Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);\"function\"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}\nfunction Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}\nfunction aj(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}\nfunction ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}\nfunction ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=Vg(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?(\"function\"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?(\"function\"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}\nfunction kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}\nfunction mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction rj(a,b){b=qj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:\"visible\",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;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:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}\nfunction xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(M,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case \"together\":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;\nAj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Bj=function(){};\nCj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Ej(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\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;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),\nBj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Hj&&(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;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}\nfunction ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,\na),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}\nfunction jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}\nfunction lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}\nfunction lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}\nfunction Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(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(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}\nfunction Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}\nfunction Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}\nfunction Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}\nfunction Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=\n0;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}\nfunction Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}\nfunction uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}\nfunction Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}\nfunction Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;\nvar g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}\nfunction Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?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;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}\nfunction W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}\nfunction Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-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<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}\nfunction hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}\nnl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}\nnl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}\nfunction rl(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}\nfunction sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};\nFc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;\nvar tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};\nvar vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||\nkl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d=\"\",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version=\"18.2.0-next-9e3b772b8-20220608\";\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a)\n , arrB = isArray(b)\n , i\n , length\n , key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length)\n return false;\n\n for (i = length; i-- !== 0;)\n if (!hasProp.call(b, keys[i])) return false;\n // end fast-deep-equal\n\n // start react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element && b instanceof Element)\n return a === b;\n\n // custom handling for React\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n }\n // end react-fast-compare\n\n // fast-deep-equal index.js 2.0.1\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message && error.message.match(/stack|recursion/i)) || (error.number === -2146828260)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar AlertCircle = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"10\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"8\",\n x2: \"12\",\n y2: \"12\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"16\",\n x2: \"12.01\",\n y2: \"16\"\n }));\n});\nAlertCircle.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nAlertCircle.displayName = 'AlertCircle';\nexport default AlertCircle;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Archive = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"21 8 21 21 3 21 3 8\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"1\",\n y: \"3\",\n width: \"22\",\n height: \"5\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"10\",\n y1: \"12\",\n x2: \"14\",\n y2: \"12\"\n }));\n});\nArchive.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nArchive.displayName = 'Archive';\nexport default Archive;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar ArrowLeft = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"19\",\n y1: \"12\",\n x2: \"5\",\n y2: \"12\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"12 19 5 12 12 5\"\n }));\n});\nArrowLeft.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nArrowLeft.displayName = 'ArrowLeft';\nexport default ArrowLeft;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar ArrowRight = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"5\",\n y1: \"12\",\n x2: \"19\",\n y2: \"12\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"12 5 19 12 12 19\"\n }));\n});\nArrowRight.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nArrowRight.displayName = 'ArrowRight';\nexport default ArrowRight;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar ArrowUp = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"19\",\n x2: \"12\",\n y2: \"5\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"5 12 12 5 19 12\"\n }));\n});\nArrowUp.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nArrowUp.displayName = 'ArrowUp';\nexport default ArrowUp;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar BarChart2 = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"18\",\n y1: \"20\",\n x2: \"18\",\n y2: \"10\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"20\",\n x2: \"12\",\n y2: \"4\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"6\",\n y1: \"20\",\n x2: \"6\",\n y2: \"14\"\n }));\n});\nBarChart2.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nBarChart2.displayName = 'BarChart2';\nexport default BarChart2;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Bell = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.73 21a2 2 0 0 1-3.46 0\"\n }));\n});\nBell.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nBell.displayName = 'Bell';\nexport default Bell;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar BookOpen = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"\n }));\n});\nBookOpen.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nBookOpen.displayName = 'BookOpen';\nexport default BookOpen;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Box = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"3.27 6.96 12 12.01 20.73 6.96\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"22.08\",\n x2: \"12\",\n y2: \"12\"\n }));\n});\nBox.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nBox.displayName = 'Box';\nexport default Box;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Briefcase = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"2\",\n y: \"7\",\n width: \"20\",\n height: \"14\",\n rx: \"2\",\n ry: \"2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"\n }));\n});\nBriefcase.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nBriefcase.displayName = 'Briefcase';\nexport default Briefcase;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar CheckCircle = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22 11.08V12a10 10 0 1 1-5.93-9.14\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"22 4 12 14.01 9 11.01\"\n }));\n});\nCheckCircle.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nCheckCircle.displayName = 'CheckCircle';\nexport default CheckCircle;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar CheckSquare = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"9 11 12 14 22 4\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\"\n }));\n});\nCheckSquare.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nCheckSquare.displayName = 'CheckSquare';\nexport default CheckSquare;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Check = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"20 6 9 17 4 12\"\n }));\n});\nCheck.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nCheck.displayName = 'Check';\nexport default Check;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar ChevronDown = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"6 9 12 15 18 9\"\n }));\n});\nChevronDown.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nChevronDown.displayName = 'ChevronDown';\nexport default ChevronDown;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar ChevronRight = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"9 18 15 12 9 6\"\n }));\n});\nChevronRight.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nChevronRight.displayName = 'ChevronRight';\nexport default ChevronRight;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar ChevronsRight = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"13 17 18 12 13 7\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"6 17 11 12 6 7\"\n }));\n});\nChevronsRight.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nChevronsRight.displayName = 'ChevronsRight';\nexport default ChevronsRight;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Clipboard = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"8\",\n y: \"2\",\n width: \"8\",\n height: \"4\",\n rx: \"1\",\n ry: \"1\"\n }));\n});\nClipboard.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nClipboard.displayName = 'Clipboard';\nexport default Clipboard;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Clock = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"10\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"12 6 12 12 16 14\"\n }));\n});\nClock.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nClock.displayName = 'Clock';\nexport default Clock;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Columns = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18\"\n }));\n});\nColumns.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nColumns.displayName = 'Columns';\nexport default Columns;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Copy = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"9\",\n y: \"9\",\n width: \"13\",\n height: \"13\",\n rx: \"2\",\n ry: \"2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"\n }));\n});\nCopy.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nCopy.displayName = 'Copy';\nexport default Copy;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar CornerUpRight = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"15 14 20 9 15 4\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 20v-7a4 4 0 0 1 4-4h12\"\n }));\n});\nCornerUpRight.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nCornerUpRight.displayName = 'CornerUpRight';\nexport default CornerUpRight;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Download = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"7 10 12 15 17 10\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"15\",\n x2: \"12\",\n y2: \"3\"\n }));\n});\nDownload.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nDownload.displayName = 'Download';\nexport default Download;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Edit3 = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 20h9\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z\"\n }));\n});\nEdit3.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nEdit3.displayName = 'Edit3';\nexport default Edit3;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Edit = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"\n }));\n});\nEdit.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nEdit.displayName = 'Edit';\nexport default Edit;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar ExternalLink = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"15 3 21 3 21 9\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"10\",\n y1: \"14\",\n x2: \"21\",\n y2: \"3\"\n }));\n});\nExternalLink.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nExternalLink.displayName = 'ExternalLink';\nexport default ExternalLink;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar EyeOff = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"1\",\n y1: \"1\",\n x2: \"23\",\n y2: \"23\"\n }));\n});\nEyeOff.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nEyeOff.displayName = 'EyeOff';\nexport default EyeOff;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Eye = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"3\"\n }));\n});\nEye.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nEye.displayName = 'Eye';\nexport default Eye;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar FastForward = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"13 19 22 12 13 5 13 19\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"2 19 11 12 2 5 2 19\"\n }));\n});\nFastForward.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nFastForward.displayName = 'FastForward';\nexport default FastForward;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar File = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"13 2 13 9 20 9\"\n }));\n});\nFile.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nFile.displayName = 'File';\nexport default File;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Filter = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\"\n }));\n});\nFilter.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nFilter.displayName = 'Filter';\nexport default Filter;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Flag = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"4\",\n y1: \"22\",\n x2: \"4\",\n y2: \"15\"\n }));\n});\nFlag.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nFlag.displayName = 'Flag';\nexport default Flag;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Folder = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"\n }));\n});\nFolder.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nFolder.displayName = 'Folder';\nexport default Folder;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Globe = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"10\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"2\",\n y1: \"12\",\n x2: \"22\",\n y2: \"12\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"\n }));\n});\nGlobe.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nGlobe.displayName = 'Globe';\nexport default Globe;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Grid = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"3\",\n y: \"3\",\n width: \"7\",\n height: \"7\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"14\",\n y: \"3\",\n width: \"7\",\n height: \"7\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"14\",\n y: \"14\",\n width: \"7\",\n height: \"7\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"3\",\n y: \"14\",\n width: \"7\",\n height: \"7\"\n }));\n});\nGrid.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nGrid.displayName = 'Grid';\nexport default Grid;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar HelpCircle = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"10\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"17\",\n x2: \"12.01\",\n y2: \"17\"\n }));\n});\nHelpCircle.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nHelpCircle.displayName = 'HelpCircle';\nexport default HelpCircle;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Hexagon = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"\n }));\n});\nHexagon.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nHexagon.displayName = 'Hexagon';\nexport default Hexagon;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Home = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"9 22 9 12 15 12 15 22\"\n }));\n});\nHome.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nHome.displayName = 'Home';\nexport default Home;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Info = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"10\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"16\",\n x2: \"12\",\n y2: \"12\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"8\",\n x2: \"12.01\",\n y2: \"8\"\n }));\n});\nInfo.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nInfo.displayName = 'Info';\nexport default Info;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Layers = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"12 2 2 7 12 12 22 7 12 2\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"2 17 12 22 22 17\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"2 12 12 17 22 12\"\n }));\n});\nLayers.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nLayers.displayName = 'Layers';\nexport default Layers;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Layout = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"3\",\n y: \"3\",\n width: \"18\",\n height: \"18\",\n rx: \"2\",\n ry: \"2\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"3\",\n y1: \"9\",\n x2: \"21\",\n y2: \"9\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"9\",\n y1: \"21\",\n x2: \"9\",\n y2: \"9\"\n }));\n});\nLayout.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nLayout.displayName = 'Layout';\nexport default Layout;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Link2 = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"8\",\n y1: \"12\",\n x2: \"16\",\n y2: \"12\"\n }));\n});\nLink2.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nLink2.displayName = 'Link2';\nexport default Link2;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Link = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"\n }));\n});\nLink.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nLink.displayName = 'Link';\nexport default Link;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar List = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"8\",\n y1: \"6\",\n x2: \"21\",\n y2: \"6\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"8\",\n y1: \"12\",\n x2: \"21\",\n y2: \"12\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"8\",\n y1: \"18\",\n x2: \"21\",\n y2: \"18\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"3\",\n y1: \"6\",\n x2: \"3.01\",\n y2: \"6\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"3\",\n y1: \"12\",\n x2: \"3.01\",\n y2: \"12\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"3\",\n y1: \"18\",\n x2: \"3.01\",\n y2: \"18\"\n }));\n});\nList.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nList.displayName = 'List';\nexport default List;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Lock = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"3\",\n y: \"11\",\n width: \"18\",\n height: \"11\",\n rx: \"2\",\n ry: \"2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 11V7a5 5 0 0 1 10 0v4\"\n }));\n});\nLock.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nLock.displayName = 'Lock';\nexport default Lock;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar LogOut = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"16 17 21 12 16 7\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"21\",\n y1: \"12\",\n x2: \"9\",\n y2: \"12\"\n }));\n});\nLogOut.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nLogOut.displayName = 'LogOut';\nexport default LogOut;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Menu = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"3\",\n y1: \"12\",\n x2: \"21\",\n y2: \"12\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"3\",\n y1: \"6\",\n x2: \"21\",\n y2: \"6\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"3\",\n y1: \"18\",\n x2: \"21\",\n y2: \"18\"\n }));\n});\nMenu.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nMenu.displayName = 'Menu';\nexport default Menu;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar MessageCircle = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\"\n }));\n});\nMessageCircle.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nMessageCircle.displayName = 'MessageCircle';\nexport default MessageCircle;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar MoreHorizontal = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"1\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"19\",\n cy: \"12\",\n r: \"1\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"5\",\n cy: \"12\",\n r: \"1\"\n }));\n});\nMoreHorizontal.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nMoreHorizontal.displayName = 'MoreHorizontal';\nexport default MoreHorizontal;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Pause = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"6\",\n y: \"4\",\n width: \"4\",\n height: \"16\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"14\",\n y: \"4\",\n width: \"4\",\n height: \"16\"\n }));\n});\nPause.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nPause.displayName = 'Pause';\nexport default Pause;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Phone = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"\n }));\n});\nPhone.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nPhone.displayName = 'Phone';\nexport default Phone;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar PlayCircle = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"10\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"10 8 16 12 10 16 10 8\"\n }));\n});\nPlayCircle.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nPlayCircle.displayName = 'PlayCircle';\nexport default PlayCircle;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Play = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"5 3 19 12 5 21 5 3\"\n }));\n});\nPlay.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nPlay.displayName = 'Play';\nexport default Play;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Plus = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"5\",\n x2: \"12\",\n y2: \"19\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"5\",\n y1: \"12\",\n x2: \"19\",\n y2: \"12\"\n }));\n});\nPlus.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nPlus.displayName = 'Plus';\nexport default Plus;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar RefreshCw = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"23 4 23 10 17 10\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"1 20 1 14 7 14\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\"\n }));\n});\nRefreshCw.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nRefreshCw.displayName = 'RefreshCw';\nexport default RefreshCw;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Search = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"11\",\n cy: \"11\",\n r: \"8\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"21\",\n y1: \"21\",\n x2: \"16.65\",\n y2: \"16.65\"\n }));\n});\nSearch.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nSearch.displayName = 'Search';\nexport default Search;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Send = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"22\",\n y1: \"2\",\n x2: \"11\",\n y2: \"13\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"22 2 15 22 11 13 2 9 22 2\"\n }));\n});\nSend.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nSend.displayName = 'Send';\nexport default Send;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Server = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"2\",\n y: \"2\",\n width: \"20\",\n height: \"8\",\n rx: \"2\",\n ry: \"2\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"2\",\n y: \"14\",\n width: \"20\",\n height: \"8\",\n rx: \"2\",\n ry: \"2\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"6\",\n y1: \"6\",\n x2: \"6.01\",\n y2: \"6\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"6\",\n y1: \"18\",\n x2: \"6.01\",\n y2: \"18\"\n }));\n});\nServer.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nServer.displayName = 'Server';\nexport default Server;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Settings = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"3\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\"\n }));\n});\nSettings.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nSettings.displayName = 'Settings';\nexport default Settings;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Share2 = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"18\",\n cy: \"5\",\n r: \"3\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"6\",\n cy: \"12\",\n r: \"3\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"18\",\n cy: \"19\",\n r: \"3\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"8.59\",\n y1: \"13.51\",\n x2: \"15.42\",\n y2: \"17.49\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"15.41\",\n y1: \"6.51\",\n x2: \"8.59\",\n y2: \"10.49\"\n }));\n});\nShare2.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nShare2.displayName = 'Share2';\nexport default Share2;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Share = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"16 6 12 2 8 6\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"2\",\n x2: \"12\",\n y2: \"15\"\n }));\n});\nShare.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nShare.displayName = 'Share';\nexport default Share;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Shield = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\n }));\n});\nShield.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nShield.displayName = 'Shield';\nexport default Shield;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Star = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"\n }));\n});\nStar.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nStar.displayName = 'Star';\nexport default Star;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Target = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"10\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"6\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"2\"\n }));\n});\nTarget.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nTarget.displayName = 'Target';\nexport default Target;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar ThumbsDown = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"\n }));\n});\nThumbsDown.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nThumbsDown.displayName = 'ThumbsDown';\nexport default ThumbsDown;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar ThumbsUp = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"\n }));\n});\nThumbsUp.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nThumbsUp.displayName = 'ThumbsUp';\nexport default ThumbsUp;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Trash2 = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"3 6 5 6 21 6\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"10\",\n y1: \"11\",\n x2: \"10\",\n y2: \"17\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"14\",\n y1: \"11\",\n x2: \"14\",\n y2: \"17\"\n }));\n});\nTrash2.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nTrash2.displayName = 'Trash2';\nexport default Trash2;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Trash = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"3 6 5 6 21 6\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"\n }));\n});\nTrash.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nTrash.displayName = 'Trash';\nexport default Trash;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar TrendingUp = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"23 6 13.5 15.5 8.5 10.5 1 18\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"17 6 23 6 23 12\"\n }));\n});\nTrendingUp.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nTrendingUp.displayName = 'TrendingUp';\nexport default TrendingUp;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar UserCheck = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"8.5\",\n cy: \"7\",\n r: \"4\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n points: \"17 11 19 13 23 9\"\n }));\n});\nUserCheck.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nUserCheck.displayName = 'UserCheck';\nexport default UserCheck;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar User = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"7\",\n r: \"4\"\n }));\n});\nUser.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nUser.displayName = 'User';\nexport default User;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Users = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"9\",\n cy: \"7\",\n r: \"4\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23 21v-2a4 4 0 0 0-3-3.87\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 3.13a4 4 0 0 1 0 7.75\"\n }));\n});\nUsers.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nUsers.displayName = 'Users';\nexport default Users;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Video = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"23 7 16 12 23 17 23 7\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"1\",\n y: \"5\",\n width: \"15\",\n height: \"14\",\n rx: \"2\",\n ry: \"2\"\n }));\n});\nVideo.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nVideo.displayName = 'Video';\nexport default Video;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar XCircle = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"10\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"15\",\n y1: \"9\",\n x2: \"9\",\n y2: \"15\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"9\",\n y1: \"9\",\n x2: \"15\",\n y2: \"15\"\n }));\n});\nXCircle.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nXCircle.displayName = 'XCircle';\nexport default XCircle;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar X = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"18\",\n y1: \"6\",\n x2: \"6\",\n y2: \"18\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"6\",\n y1: \"6\",\n x2: \"18\",\n y2: \"18\"\n }));\n});\nX.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nX.displayName = 'X';\nexport default X;","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Zap = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"polygon\", {\n points: \"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\n }));\n});\nZap.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nZap.displayName = 'Zap';\nexport default Zap;",null,null,null,"exports.__esModule = true;\nexports.Helmet = undefined;\n\nvar _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; };\n\nvar _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\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactSideEffect = require(\"react-side-effect\");\n\nvar _reactSideEffect2 = _interopRequireDefault(_reactSideEffect);\n\nvar _reactFastCompare = require(\"react-fast-compare\");\n\nvar _reactFastCompare2 = _interopRequireDefault(_reactFastCompare);\n\nvar _HelmetUtils = require(\"./HelmetUtils.js\");\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\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 Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n _inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n _classCallCheck(this, HelmetWrapper);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !(0, _reactFastCompare2.default)(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.SCRIPT:\n case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case _HelmetConstants.TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _extends2;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n\n return _extends({}, arrayTypeChildren, (_extends2 = {}, _extends2[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _extends2));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _extends3, _extends4;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.TITLE:\n return _extends({}, newProps, (_extends3 = {}, _extends3[child.type] = nestedChildren, _extends3.titleAttributes = _extends({}, newChildProps), _extends3));\n\n case _HelmetConstants.TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case _HelmetConstants.TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_extends4 = {}, _extends4[child.type] = _extends({}, newChildProps), _extends4));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _extends5;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_extends5 = {}, _extends5[arrayChildName] = arrayTypeChildren[arrayChildName], _extends5));\n });\n\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!_HelmetConstants.VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return (0, _HelmetUtils.warn)(\"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return (0, _HelmetUtils.warn)(\"Only elements types \" + _HelmetConstants.VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}</\" + child.type + \"> ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n _react2.default.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = _objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = (0, _HelmetUtils.convertReactPropstoHtmlAttributes)(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.LINK:\n case _HelmetConstants.TAG_NAMES.META:\n case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n case _HelmetConstants.TAG_NAMES.SCRIPT:\n case _HelmetConstants.TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = _objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return _react2.default.createElement(Component, newProps);\n };\n\n _createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n\n return HelmetWrapper;\n }(_react2.default.Component), _class.propTypes = {\n base: _propTypes2.default.object,\n bodyAttributes: _propTypes2.default.object,\n children: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.node), _propTypes2.default.node]),\n defaultTitle: _propTypes2.default.string,\n defer: _propTypes2.default.bool,\n encodeSpecialCharacters: _propTypes2.default.bool,\n htmlAttributes: _propTypes2.default.object,\n link: _propTypes2.default.arrayOf(_propTypes2.default.object),\n meta: _propTypes2.default.arrayOf(_propTypes2.default.object),\n noscript: _propTypes2.default.arrayOf(_propTypes2.default.object),\n onChangeClientState: _propTypes2.default.func,\n script: _propTypes2.default.arrayOf(_propTypes2.default.object),\n style: _propTypes2.default.arrayOf(_propTypes2.default.object),\n title: _propTypes2.default.string,\n titleAttributes: _propTypes2.default.object,\n titleTemplate: _propTypes2.default.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = (0, _HelmetUtils.mapStateOnServer)({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = (0, _reactSideEffect2.default)(_HelmetUtils.reducePropsToState, _HelmetUtils.handleClientStateChange, _HelmetUtils.mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexports.Helmet = HelmetExport;\nexports.default = HelmetExport;","exports.__esModule = true;\nvar ATTRIBUTE_NAMES = exports.ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = exports.TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = exports.VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = exports.TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\"\n};\n\nvar REACT_TAG_MAP = exports.REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = exports.HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = exports.HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = exports.SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = exports.HELMET_ATTRIBUTE = \"data-react-helmet\";","exports.__esModule = true;\nexports.warn = exports.requestAnimationFrame = exports.reducePropsToState = exports.mapStateOnServer = exports.handleClientStateChange = exports.convertReactPropstoHtmlAttributes = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _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; };\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _objectAssign = require(\"object-assign\");\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, _HelmetConstants.TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[_HelmetConstants.TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[_HelmetConstants.TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attributeKey === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT || attributeKey === _HelmetConstants.TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = (0, _objectAssign2.default)({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([_HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n bodyAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.LINK, [_HelmetConstants.TAG_PROPERTIES.REL, _HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.META, [_HelmetConstants.TAG_PROPERTIES.NAME, _HelmetConstants.TAG_PROPERTIES.CHARSET, _HelmetConstants.TAG_PROPERTIES.HTTPEQUIV, _HelmetConstants.TAG_PROPERTIES.PROPERTY, _HelmetConstants.TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.NOSCRIPT, [_HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.SCRIPT, [_HelmetConstants.TAG_PROPERTIES.SRC, _HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.STYLE, [_HelmetConstants.TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n\n updateAttributes(_HelmetConstants.TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(_HelmetConstants.TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(_HelmetConstants.TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(_HelmetConstants.TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(_HelmetConstants.TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(_HelmetConstants.TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n cb && cb();\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(_HelmetConstants.TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(_HelmetConstants.TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + _HelmetConstants.HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\" : \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = _HelmetConstants.SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"</\" + type + \">\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[_HelmetConstants.REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(props).reduce(function (obj, key) {\n obj[_HelmetConstants.HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[_HelmetConstants.HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n\n return [_react2.default.createElement(_HelmetConstants.TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[_HelmetConstants.HELMET_ATTRIBUTE] = true, _mappedTag);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = _HelmetConstants.REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || mappedAttribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return _react2.default.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case _HelmetConstants.TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case _HelmetConstants.ATTRIBUTE_NAMES.BODY:\n case _HelmetConstants.ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(_HelmetConstants.TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(_HelmetConstants.TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(_HelmetConstants.TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(_HelmetConstants.TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(_HelmetConstants.TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n };\n};\n\nexports.convertReactPropstoHtmlAttributes = convertReactPropstoHtmlAttributes;\nexports.handleClientStateChange = handleClientStateChange;\nexports.mapStateOnServer = mapStateOnServer;\nexports.reducePropsToState = reducePropsToState;\nexports.requestAnimationFrame = requestAnimationFrame;\nexports.warn = warn;","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\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 __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 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) : new P(function (resolve) { resolve(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 (_) 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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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\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\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 __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: n === \"return\" } : 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\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = 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","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {Number} delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Boolean} [noTrailing] Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the\n * throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time\n * after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,\n * the internal counter is reset)\n * @param {Function} callback A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the throttled-function is executed.\n * @param {Boolean} [debounceMode] If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),\n * schedule `callback` to execute after `delay` ms.\n *\n * @return {Function} A new, throttled, function.\n */\nfunction throttle (delay, noTrailing, callback, debounceMode) {\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel() {\n clearExistingTimeout();\n cancelled = true;\n } // `noTrailing` defaults to falsy.\n\n\n if (typeof noTrailing !== 'boolean') {\n debounceMode = callback;\n callback = noTrailing;\n noTrailing = undefined;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n var self = this;\n var elapsed = Date.now() - lastExec;\n var args = arguments;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, args);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n /*\n * In throttle mode, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {Number} delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Boolean} [atBegin] Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n * @param {Function} callback A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n *\n * @return {Function} A new, debounced function.\n */\n\nfunction debounce (delay, atBegin, callback) {\n return callback === undefined ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);\n}\n\nexport { throttle, debounce };\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","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 React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nvar getPopupPositionProperties = function getPopupPositionProperties(_ref) {\n var _ref$width = _ref.width,\n width = _ref$width === undefined ? 600 : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === undefined ? 600 : _ref$height;\n\n var left = screen.width / 2 - width / 2;\n var top = screen.height / 2 - height / 2;\n return 'left=' + left + ',top=' + top + ',width=' + width + ',height=' + height;\n};\n\nvar generateRandomString = function generateRandomString() {\n var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 20;\n\n var result = '';\n var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n var charactersLength = characters.length;\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n};\n\nvar LINKEDIN_OAUTH2_STATE = 'linkedin_oauth2_state';\n\nexport var LinkedIn = function (_Component) {\n _inherits(LinkedIn, _Component);\n\n function LinkedIn() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, LinkedIn);\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.getUrl = function () {\n var _this$props = _this.props,\n redirectUri = _this$props.redirectUri,\n clientId = _this$props.clientId,\n scope = _this$props.scope,\n supportIE = _this$props.supportIE,\n redirectPath = _this$props.redirectPath;\n\n var scopeParam = '&scope=' + (supportIE ? scope : encodeURI(scope));\n var state = generateRandomString();\n localStorage.setItem(LINKEDIN_OAUTH2_STATE, state);\n var linkedInAuthenLink = 'https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=' + clientId + '&redirect_uri=' + redirectUri + scopeParam + '&state=' + state;\n if (supportIE) {\n var redirectLink = '' + window.location.origin + redirectPath + '?linkedin_redirect_url=' + encodeURIComponent(linkedInAuthenLink);\n return redirectLink;\n }\n return linkedInAuthenLink;\n }, _this.receiveMessage = function (event) {\n var state = localStorage.getItem(LINKEDIN_OAUTH2_STATE);\n if (event.origin === window.location.origin) {\n if (event.data.errorMessage && event.data.from === 'Linked In') {\n // Prevent CSRF attack by testing state\n if (event.data.state !== state) {\n _this.popup && _this.popup.close();\n return;\n }\n _this.props.onFailure(event.data);\n _this.popup && _this.popup.close();\n } else if (event.data.code && event.data.from === 'Linked In') {\n // Prevent CSRF attack by testing state\n if (event.data.state !== state) {\n console.error('State does not match');\n _this.popup && _this.popup.close();\n return;\n }\n _this.props.onSuccess({ code: event.data.code });\n _this.popup && _this.popup.close();\n }\n }\n }, _this.handleConnectLinkedInClick = function (e) {\n if (e) {\n e.preventDefault();\n }\n _this.props.onClick && _this.props.onClick();\n _this.popup = window.open(_this.getUrl(), '_blank', getPopupPositionProperties({ width: 600, height: 600 }));\n window.removeEventListener('message', _this.receiveMessage, false);\n window.addEventListener('message', _this.receiveMessage, false);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n LinkedIn.prototype.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener('message', this.receiveMessage, false);\n if (this.popup && !this.popup.closed) this.popup.close();\n };\n\n LinkedIn.prototype.render = function render() {\n var _props = this.props,\n className = _props.className,\n disabled = _props.disabled,\n children = _props.children,\n renderElement = _props.renderElement,\n style = _props.style;\n\n if (renderElement) {\n return renderElement({ onClick: this.handleConnectLinkedInClick, disabled: disabled });\n }\n return React.createElement(\n 'button',\n {\n type: 'button',\n onClick: this.handleConnectLinkedInClick,\n className: className,\n disabled: disabled,\n style: style ? style : {\n background: 'none',\n color: 'inherit',\n border: 'none',\n padding: 0,\n cursor: 'pointer',\n font: 'inherit',\n outline: 'inherit'\n }\n },\n children\n );\n };\n\n return LinkedIn;\n}(Component);\n\nLinkedIn.propTypes = process.env.NODE_ENV !== \"production\" ? {\n className: PropTypes.string,\n onFailure: PropTypes.func.isRequired,\n onSuccess: PropTypes.func.isRequired,\n onClick: PropTypes.func,\n disabled: PropTypes.bool,\n clientId: PropTypes.string.isRequired,\n redirectUri: PropTypes.string.isRequired,\n renderElement: PropTypes.func\n} : {};\nLinkedIn.defaultProps = {\n disabled: false,\n children: React.createElement('img', { src: require('../assets/linkedin.png'), alt: 'Log in with Linked In', style: { maxWidth: '180px' } }),\n supportIE: false,\n redirectPath: '/linkedin',\n scope: 'r_emailaddress'\n};\nexport default LinkedIn;","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 { Component } from 'react';\nimport QueryString from 'query-string';\n\nvar LinkedInPopUp = function (_Component) {\n _inherits(LinkedInPopUp, _Component);\n\n function LinkedInPopUp() {\n _classCallCheck(this, LinkedInPopUp);\n\n return _possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n LinkedInPopUp.prototype.componentDidMount = function componentDidMount() {\n var params = QueryString.parse(window.location.search);\n if (params.error) {\n var errorMessage = params.error_description || 'Login failed. Please try again.';\n window.opener && window.opener.postMessage({ error: params.error, state: params.state, errorMessage: errorMessage, from: 'Linked In' }, window.location.origin);\n // Close tab if user cancelled login\n if (params.error === 'user_cancelled_login') {\n window.close();\n }\n }\n if (params.code) {\n window.opener && window.opener.postMessage({ code: params.code, state: params.state, from: 'Linked In' }, window.location.origin);\n }\n if (params.linkedin_redirect_url) {\n window.location.href = params.linkedin_redirect_url;\n }\n };\n\n LinkedInPopUp.prototype.render = function render() {\n return null;\n };\n\n return LinkedInPopUp;\n}(Component);\n\nexport default LinkedInPopUp;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_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\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// A reserved attribute.\n// It is handled by React separately and shouldn't be written to the DOM.\nvar RESERVED = 0; // A simple string attribute.\n// Attributes that aren't in the filter are presumed to have this type.\n\nvar STRING = 1; // A string attribute that accepts booleans in React. In HTML, these are called\n// \"enumerated\" attributes with \"true\" and \"false\" as possible values.\n// When true, it should be set to a \"true\" string.\n// When false, it should be set to a \"false\" string.\n\nvar BOOLEANISH_STRING = 2; // A real boolean attribute.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n\nvar BOOLEAN = 3; // An attribute that can be used as a flag as well as with a value.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n// For any other value, should be present with that value.\n\nvar OVERLOADED_BOOLEAN = 4; // An attribute that must be numeric or parse as a numeric.\n// When falsy, it should be removed.\n\nvar NUMERIC = 5; // An attribute that must be positive numeric or parse as a positive numeric.\n// When falsy, it should be removed.\n\nvar POSITIVE_NUMERIC = 6;\nfunction getPropertyInfo(name) {\n return properties.hasOwnProperty(name) ? properties[name] : null;\n}\n\nfunction PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL, removeEmptyString) {\n this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN;\n this.attributeName = attributeName;\n this.attributeNamespace = attributeNamespace;\n this.mustUseProperty = mustUseProperty;\n this.propertyName = name;\n this.type = type;\n this.sanitizeURL = sanitizeURL;\n this.removeEmptyString = removeEmptyString;\n} // When adding attributes to this list, be sure to also add them to\n// the `possibleStandardNames` module to ensure casing and incorrect\n// name warnings.\n\n\nvar properties = {}; // These props are reserved by React. They shouldn't be written to the DOM.\n\nvar reservedProps = ['children', 'dangerouslySetInnerHTML', // TODO: This prevents the assignment of defaultValue to regular\n// elements (not just inputs). Now that ReactDOMInput assigns to the\n// defaultValue property -- do we need this?\n'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style'];\nreservedProps.forEach(function (name) {\n properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty\n name, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // A few React string attributes have a different name.\n// This is a mapping from React prop names to the attribute names.\n\n[['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n name = _ref2[0],\n attributeName = _ref2[1];\n\n properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n attributeName, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // These are \"enumerated\" HTML attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n\n['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) {\n properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n name.toLowerCase(), // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // These are \"enumerated\" SVG attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n// Since these are SVG attributes, their attribute names are case-sensitive.\n\n['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach(function (name) {\n properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n name, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // These are HTML boolean attributes.\n\n['allowFullScreen', 'async', // Note: there is a special case that prevents it from being written to the DOM\n// on the client side because the browsers are inconsistent. Instead we call focus().\n'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'disablePictureInPicture', 'disableRemotePlayback', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless', // Microdata\n'itemScope'].forEach(function (name) {\n properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty\n name.toLowerCase(), // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // These are the few React props that we set as DOM properties\n// rather than attributes. These are all booleans.\n\n['checked', // Note: `option.selected` is not updated if `select.multiple` is\n// disabled with `removeAttribute`. We have special logic for handling this.\n'multiple', 'muted', 'selected' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty\n name, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // These are HTML attributes that are \"overloaded booleans\": they behave like\n// booleans, but can also accept a string value.\n\n['capture', 'download' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty\n name, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // These are HTML attributes that must be positive numbers.\n\n['cols', 'rows', 'size', 'span' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty\n name, // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // These are HTML attributes that must be numbers.\n\n['rowSpan', 'start'].forEach(function (name) {\n properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty\n name.toLowerCase(), // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n});\nvar CAMELIZE = /[\\-\\:]([a-z])/g;\n\nvar capitalize = function capitalize(token) {\n return token[1].toUpperCase();\n}; // This is a list of all SVG attributes that need special casing, namespacing,\n// or boolean value assignment. Regular attributes that just accept strings\n// and have the same names are omitted, just like in the HTML attribute filter.\n// Some of these attributes can be hard to find. This list was created by\n// scraping the MDN documentation.\n\n\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' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n var name = attributeName.replace(CAMELIZE, capitalize);\n properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n attributeName, null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // String SVG attributes with the xlink namespace.\n\n['xlink:actuate', 'xlink:arcrole', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n var name = attributeName.replace(CAMELIZE, capitalize);\n properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n attributeName, 'http://www.w3.org/1999/xlink', false, // sanitizeURL\n false);\n}); // String SVG attributes with the xml namespace.\n\n['xml:base', 'xml:lang', 'xml:space' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n var name = attributeName.replace(CAMELIZE, capitalize);\n properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n attributeName, 'http://www.w3.org/XML/1998/namespace', false, // sanitizeURL\n false);\n}); // These attribute exists both in HTML and SVG.\n// The attribute name is case-sensitive in SVG so we can't just use\n// the React name like we do for attributes that exist only in HTML.\n\n['tabIndex', 'crossOrigin'].forEach(function (attributeName) {\n properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty\n attributeName.toLowerCase(), // attributeName\n null, // attributeNamespace\n false, // sanitizeURL\n false);\n}); // These attributes accept URLs. These must not allow javascript: URLS.\n// These will also need to accept Trusted Types object in the future.\n\nvar xlinkHref = 'xlinkHref';\nproperties[xlinkHref] = new PropertyInfoRecord('xlinkHref', STRING, false, // mustUseProperty\n'xlink:href', 'http://www.w3.org/1999/xlink', true, // sanitizeURL\nfalse);\n['src', 'href', 'action', 'formAction'].forEach(function (attributeName) {\n properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty\n attributeName.toLowerCase(), // attributeName\n null, // attributeNamespace\n true, // sanitizeURL\n true);\n});\n\nvar _require = require('../lib/possibleStandardNamesOptimized'),\n CAMELCASE = _require.CAMELCASE,\n SAME = _require.SAME,\n possibleStandardNamesOptimized = _require.possibleStandardNames;\n\nvar ATTRIBUTE_NAME_START_CHAR = \":A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\nvar ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + \"\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n/**\n * Checks whether a property name is a custom attribute.\n *\n * @see {@link https://github.com/facebook/react/blob/15-stable/src/renderers/dom/shared/HTMLDOMPropertyConfig.js#L23-L25}\n *\n * @param {string}\n * @return {boolean}\n */\n\nvar isCustomAttribute = RegExp.prototype.test.bind( // eslint-disable-next-line no-misleading-character-class\nnew RegExp('^(data|aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'));\nvar possibleStandardNames = Object.keys(possibleStandardNamesOptimized).reduce(function (accumulator, standardName) {\n var propName = possibleStandardNamesOptimized[standardName];\n\n if (propName === SAME) {\n accumulator[standardName] = standardName;\n } else if (propName === CAMELCASE) {\n accumulator[standardName.toLowerCase()] = standardName;\n } else {\n accumulator[standardName] = propName;\n }\n\n return accumulator;\n}, {});\n\nexports.BOOLEAN = BOOLEAN;\nexports.BOOLEANISH_STRING = BOOLEANISH_STRING;\nexports.NUMERIC = NUMERIC;\nexports.OVERLOADED_BOOLEAN = OVERLOADED_BOOLEAN;\nexports.POSITIVE_NUMERIC = POSITIVE_NUMERIC;\nexports.RESERVED = RESERVED;\nexports.STRING = STRING;\nexports.getPropertyInfo = getPropertyInfo;\nexports.isCustomAttribute = isCustomAttribute;\nexports.possibleStandardNames = possibleStandardNames;\n","// An attribute in which the DOM/SVG standard name is the same as the React prop name (e.g., 'accept').\nvar SAME = 0;\nexports.SAME = SAME;\n\n// An attribute in which the React prop name is the camelcased version of the DOM/SVG standard name (e.g., 'acceptCharset').\nvar CAMELCASE = 1;\nexports.CAMELCASE = CAMELCASE;\n\nexports.possibleStandardNames = {\n accept: 0,\n acceptCharset: 1,\n 'accept-charset': 'acceptCharset',\n accessKey: 1,\n action: 0,\n allowFullScreen: 1,\n alt: 0,\n as: 0,\n async: 0,\n autoCapitalize: 1,\n autoComplete: 1,\n autoCorrect: 1,\n autoFocus: 1,\n autoPlay: 1,\n autoSave: 1,\n capture: 0,\n cellPadding: 1,\n cellSpacing: 1,\n challenge: 0,\n charSet: 1,\n checked: 0,\n children: 0,\n cite: 0,\n class: 'className',\n classID: 1,\n className: 1,\n cols: 0,\n colSpan: 1,\n content: 0,\n contentEditable: 1,\n contextMenu: 1,\n controls: 0,\n controlsList: 1,\n coords: 0,\n crossOrigin: 1,\n dangerouslySetInnerHTML: 1,\n data: 0,\n dateTime: 1,\n default: 0,\n defaultChecked: 1,\n defaultValue: 1,\n defer: 0,\n dir: 0,\n disabled: 0,\n disablePictureInPicture: 1,\n disableRemotePlayback: 1,\n download: 0,\n draggable: 0,\n encType: 1,\n enterKeyHint: 1,\n for: 'htmlFor',\n form: 0,\n formMethod: 1,\n formAction: 1,\n formEncType: 1,\n formNoValidate: 1,\n formTarget: 1,\n frameBorder: 1,\n headers: 0,\n height: 0,\n hidden: 0,\n high: 0,\n href: 0,\n hrefLang: 1,\n htmlFor: 1,\n httpEquiv: 1,\n 'http-equiv': 'httpEquiv',\n icon: 0,\n id: 0,\n innerHTML: 1,\n inputMode: 1,\n integrity: 0,\n is: 0,\n itemID: 1,\n itemProp: 1,\n itemRef: 1,\n itemScope: 1,\n itemType: 1,\n keyParams: 1,\n keyType: 1,\n kind: 0,\n label: 0,\n lang: 0,\n list: 0,\n loop: 0,\n low: 0,\n manifest: 0,\n marginWidth: 1,\n marginHeight: 1,\n max: 0,\n maxLength: 1,\n media: 0,\n mediaGroup: 1,\n method: 0,\n min: 0,\n minLength: 1,\n multiple: 0,\n muted: 0,\n name: 0,\n noModule: 1,\n nonce: 0,\n noValidate: 1,\n open: 0,\n optimum: 0,\n pattern: 0,\n placeholder: 0,\n playsInline: 1,\n poster: 0,\n preload: 0,\n profile: 0,\n radioGroup: 1,\n readOnly: 1,\n referrerPolicy: 1,\n rel: 0,\n required: 0,\n reversed: 0,\n role: 0,\n rows: 0,\n rowSpan: 1,\n sandbox: 0,\n scope: 0,\n scoped: 0,\n scrolling: 0,\n seamless: 0,\n selected: 0,\n shape: 0,\n size: 0,\n sizes: 0,\n span: 0,\n spellCheck: 1,\n src: 0,\n srcDoc: 1,\n srcLang: 1,\n srcSet: 1,\n start: 0,\n step: 0,\n style: 0,\n summary: 0,\n tabIndex: 1,\n target: 0,\n title: 0,\n type: 0,\n useMap: 1,\n value: 0,\n width: 0,\n wmode: 0,\n wrap: 0,\n about: 0,\n accentHeight: 1,\n 'accent-height': 'accentHeight',\n accumulate: 0,\n additive: 0,\n alignmentBaseline: 1,\n 'alignment-baseline': 'alignmentBaseline',\n allowReorder: 1,\n alphabetic: 0,\n amplitude: 0,\n arabicForm: 1,\n 'arabic-form': 'arabicForm',\n ascent: 0,\n attributeName: 1,\n attributeType: 1,\n autoReverse: 1,\n azimuth: 0,\n baseFrequency: 1,\n baselineShift: 1,\n 'baseline-shift': 'baselineShift',\n baseProfile: 1,\n bbox: 0,\n begin: 0,\n bias: 0,\n by: 0,\n calcMode: 1,\n capHeight: 1,\n 'cap-height': 'capHeight',\n clip: 0,\n clipPath: 1,\n 'clip-path': 'clipPath',\n clipPathUnits: 1,\n clipRule: 1,\n 'clip-rule': 'clipRule',\n color: 0,\n colorInterpolation: 1,\n 'color-interpolation': 'colorInterpolation',\n colorInterpolationFilters: 1,\n 'color-interpolation-filters': 'colorInterpolationFilters',\n colorProfile: 1,\n 'color-profile': 'colorProfile',\n colorRendering: 1,\n 'color-rendering': 'colorRendering',\n contentScriptType: 1,\n contentStyleType: 1,\n cursor: 0,\n cx: 0,\n cy: 0,\n d: 0,\n datatype: 0,\n decelerate: 0,\n descent: 0,\n diffuseConstant: 1,\n direction: 0,\n display: 0,\n divisor: 0,\n dominantBaseline: 1,\n 'dominant-baseline': 'dominantBaseline',\n dur: 0,\n dx: 0,\n dy: 0,\n edgeMode: 1,\n elevation: 0,\n enableBackground: 1,\n 'enable-background': 'enableBackground',\n end: 0,\n exponent: 0,\n externalResourcesRequired: 1,\n fill: 0,\n fillOpacity: 1,\n 'fill-opacity': 'fillOpacity',\n fillRule: 1,\n 'fill-rule': 'fillRule',\n filter: 0,\n filterRes: 1,\n filterUnits: 1,\n floodOpacity: 1,\n 'flood-opacity': 'floodOpacity',\n floodColor: 1,\n 'flood-color': 'floodColor',\n focusable: 0,\n fontFamily: 1,\n 'font-family': 'fontFamily',\n fontSize: 1,\n 'font-size': 'fontSize',\n fontSizeAdjust: 1,\n 'font-size-adjust': 'fontSizeAdjust',\n fontStretch: 1,\n 'font-stretch': 'fontStretch',\n fontStyle: 1,\n 'font-style': 'fontStyle',\n fontVariant: 1,\n 'font-variant': 'fontVariant',\n fontWeight: 1,\n 'font-weight': 'fontWeight',\n format: 0,\n from: 0,\n fx: 0,\n fy: 0,\n g1: 0,\n g2: 0,\n glyphName: 1,\n 'glyph-name': 'glyphName',\n glyphOrientationHorizontal: 1,\n 'glyph-orientation-horizontal': 'glyphOrientationHorizontal',\n glyphOrientationVertical: 1,\n 'glyph-orientation-vertical': 'glyphOrientationVertical',\n glyphRef: 1,\n gradientTransform: 1,\n gradientUnits: 1,\n hanging: 0,\n horizAdvX: 1,\n 'horiz-adv-x': 'horizAdvX',\n horizOriginX: 1,\n 'horiz-origin-x': 'horizOriginX',\n ideographic: 0,\n imageRendering: 1,\n 'image-rendering': 'imageRendering',\n in2: 0,\n in: 0,\n inlist: 0,\n intercept: 0,\n k1: 0,\n k2: 0,\n k3: 0,\n k4: 0,\n k: 0,\n kernelMatrix: 1,\n kernelUnitLength: 1,\n kerning: 0,\n keyPoints: 1,\n keySplines: 1,\n keyTimes: 1,\n lengthAdjust: 1,\n letterSpacing: 1,\n 'letter-spacing': 'letterSpacing',\n lightingColor: 1,\n 'lighting-color': 'lightingColor',\n limitingConeAngle: 1,\n local: 0,\n markerEnd: 1,\n 'marker-end': 'markerEnd',\n markerHeight: 1,\n markerMid: 1,\n 'marker-mid': 'markerMid',\n markerStart: 1,\n 'marker-start': 'markerStart',\n markerUnits: 1,\n markerWidth: 1,\n mask: 0,\n maskContentUnits: 1,\n maskUnits: 1,\n mathematical: 0,\n mode: 0,\n numOctaves: 1,\n offset: 0,\n opacity: 0,\n operator: 0,\n order: 0,\n orient: 0,\n orientation: 0,\n origin: 0,\n overflow: 0,\n overlinePosition: 1,\n 'overline-position': 'overlinePosition',\n overlineThickness: 1,\n 'overline-thickness': 'overlineThickness',\n paintOrder: 1,\n 'paint-order': 'paintOrder',\n panose1: 0,\n 'panose-1': 'panose1',\n pathLength: 1,\n patternContentUnits: 1,\n patternTransform: 1,\n patternUnits: 1,\n pointerEvents: 1,\n 'pointer-events': 'pointerEvents',\n points: 0,\n pointsAtX: 1,\n pointsAtY: 1,\n pointsAtZ: 1,\n prefix: 0,\n preserveAlpha: 1,\n preserveAspectRatio: 1,\n primitiveUnits: 1,\n property: 0,\n r: 0,\n radius: 0,\n refX: 1,\n refY: 1,\n renderingIntent: 1,\n 'rendering-intent': 'renderingIntent',\n repeatCount: 1,\n repeatDur: 1,\n requiredExtensions: 1,\n requiredFeatures: 1,\n resource: 0,\n restart: 0,\n result: 0,\n results: 0,\n rotate: 0,\n rx: 0,\n ry: 0,\n scale: 0,\n security: 0,\n seed: 0,\n shapeRendering: 1,\n 'shape-rendering': 'shapeRendering',\n slope: 0,\n spacing: 0,\n specularConstant: 1,\n specularExponent: 1,\n speed: 0,\n spreadMethod: 1,\n startOffset: 1,\n stdDeviation: 1,\n stemh: 0,\n stemv: 0,\n stitchTiles: 1,\n stopColor: 1,\n 'stop-color': 'stopColor',\n stopOpacity: 1,\n 'stop-opacity': 'stopOpacity',\n strikethroughPosition: 1,\n 'strikethrough-position': 'strikethroughPosition',\n strikethroughThickness: 1,\n 'strikethrough-thickness': 'strikethroughThickness',\n string: 0,\n stroke: 0,\n strokeDasharray: 1,\n 'stroke-dasharray': 'strokeDasharray',\n strokeDashoffset: 1,\n 'stroke-dashoffset': 'strokeDashoffset',\n strokeLinecap: 1,\n 'stroke-linecap': 'strokeLinecap',\n strokeLinejoin: 1,\n 'stroke-linejoin': 'strokeLinejoin',\n strokeMiterlimit: 1,\n 'stroke-miterlimit': 'strokeMiterlimit',\n strokeWidth: 1,\n 'stroke-width': 'strokeWidth',\n strokeOpacity: 1,\n 'stroke-opacity': 'strokeOpacity',\n suppressContentEditableWarning: 1,\n suppressHydrationWarning: 1,\n surfaceScale: 1,\n systemLanguage: 1,\n tableValues: 1,\n targetX: 1,\n targetY: 1,\n textAnchor: 1,\n 'text-anchor': 'textAnchor',\n textDecoration: 1,\n 'text-decoration': 'textDecoration',\n textLength: 1,\n textRendering: 1,\n 'text-rendering': 'textRendering',\n to: 0,\n transform: 0,\n typeof: 0,\n u1: 0,\n u2: 0,\n underlinePosition: 1,\n 'underline-position': 'underlinePosition',\n underlineThickness: 1,\n 'underline-thickness': 'underlineThickness',\n unicode: 0,\n unicodeBidi: 1,\n 'unicode-bidi': 'unicodeBidi',\n unicodeRange: 1,\n 'unicode-range': 'unicodeRange',\n unitsPerEm: 1,\n 'units-per-em': 'unitsPerEm',\n unselectable: 0,\n vAlphabetic: 1,\n 'v-alphabetic': 'vAlphabetic',\n values: 0,\n vectorEffect: 1,\n 'vector-effect': 'vectorEffect',\n version: 0,\n vertAdvY: 1,\n 'vert-adv-y': 'vertAdvY',\n vertOriginX: 1,\n 'vert-origin-x': 'vertOriginX',\n vertOriginY: 1,\n 'vert-origin-y': 'vertOriginY',\n vHanging: 1,\n 'v-hanging': 'vHanging',\n vIdeographic: 1,\n 'v-ideographic': 'vIdeographic',\n viewBox: 1,\n viewTarget: 1,\n visibility: 0,\n vMathematical: 1,\n 'v-mathematical': 'vMathematical',\n vocab: 0,\n widths: 0,\n wordSpacing: 1,\n 'word-spacing': 'wordSpacing',\n writingMode: 1,\n 'writing-mode': 'writingMode',\n x1: 0,\n x2: 0,\n x: 0,\n xChannelSelector: 1,\n xHeight: 1,\n 'x-height': 'xHeight',\n xlinkActuate: 1,\n 'xlink:actuate': 'xlinkActuate',\n xlinkArcrole: 1,\n 'xlink:arcrole': 'xlinkArcrole',\n xlinkHref: 1,\n 'xlink:href': 'xlinkHref',\n xlinkRole: 1,\n 'xlink:role': 'xlinkRole',\n xlinkShow: 1,\n 'xlink:show': 'xlinkShow',\n xlinkTitle: 1,\n 'xlink:title': 'xlinkTitle',\n xlinkType: 1,\n 'xlink:type': 'xlinkType',\n xmlBase: 1,\n 'xml:base': 'xmlBase',\n xmlLang: 1,\n 'xml:lang': 'xmlLang',\n xmlns: 0,\n 'xml:space': 'xmlSpace',\n xmlnsXlink: 1,\n 'xmlns:xlink': 'xmlnsXlink',\n xmlSpace: 1,\n y1: 0,\n y2: 0,\n y: 0,\n yChannelSelector: 1,\n z: 0,\n zoomAndPan: 1\n};\n","/** @license React v17.0.2\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=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\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",null,"import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<BrowserRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<HashRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return <a {...props} />;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Link> outside a <Router>\");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <NavLink> outside a <Router>\");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return <Link {...props} />;\n }}\n </RouterContext.Consumer>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n typeof globalThis !== \"undefined\" // 'global proper'\n ? // eslint-disable-next-line no-undef\n globalThis\n : typeof window !== \"undefined\"\n ? window // Browser\n : typeof global !== \"undefined\"\n ? global // node.js\n : {};\n\nfunction getUniqueId() {\n let key = \"__global_unique_id__\";\n return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\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 // eslint-disable-next-line no-self-compare\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n let handlers = [];\n return {\n on(handler) {\n handlers.push(handler);\n },\n\n off(handler) {\n handlers = handlers.filter(h => h !== handler);\n },\n\n get() {\n return value;\n },\n\n set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(handler => handler(value, changedBits));\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n class Provider extends React.Component {\n emitter = createEventEmitter(this.props.value);\n\n static childContextTypes = {\n [contextProp]: PropTypes.object.isRequired\n };\n\n getChildContext() {\n return {\n [contextProp]: this.emitter\n };\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n let oldValue = this.props.value;\n let newValue = nextProps.value;\n let changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits =\n typeof calculateChangedBits === \"function\"\n ? calculateChangedBits(oldValue, newValue)\n : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== \"production\") {\n warning(\n (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n \"calculateChangedBits: Expected the return value to be a \" +\n \"31-bit integer. Instead received: \" +\n changedBits\n );\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n }\n\n render() {\n return this.props.children;\n }\n }\n\n class Consumer extends React.Component {\n static contextTypes = {\n [contextProp]: PropTypes.object\n };\n\n observedBits;\n\n state = {\n value: this.getValue()\n };\n\n componentWillReceiveProps(nextProps) {\n let { observedBits } = nextProps;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n let { observedBits } = this.props;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n }\n\n getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n }\n\n onUpdate = (newValue, changedBits) => {\n const observedBits = this.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n this.setState({ value: this.getValue() });\n }\n };\n\n render() {\n return onlyChild(this.props.children)(this.state.value);\n }\n }\n\n return {\n Provider,\n Consumer\n };\n}\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any <Redirect>s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the <Router> is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n this._pendingLocation = location;\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n <RouterContext.Provider\n value={{\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }}\n >\n <HistoryContext.Provider\n children={this.props.children || null}\n value={this.props.history}\n />\n </RouterContext.Provider>\n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change <Router history>\"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Redirect> outside a <Router>\");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n <Lifecycle\n onMount={() => {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Route> outside a <Router>\");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // <Switch> already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n <RouterContext.Provider value={props}>\n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n </RouterContext.Provider>\n );\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return <Router {...rest} history={history} staticContext={context} />;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two <Route>s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n const displayName = `withRouter(${Component.displayName || Component.name})`;\n const C = props => {\n const { wrappedComponentRef, ...remainingProps } = props;\n\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(\n context,\n `You should not use <${displayName} /> outside a <Router>`\n );\n return (\n <Component\n {...remainingProps}\n {...context}\n ref={wrappedComponentRef}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (__DEV__) {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.object\n ])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\nvar shallowEqual = _interopDefault(require('shallowequal'));\n\nfunction _defineProperty(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\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(SideEffect, _Component);\n\n function SideEffect() {\n return _Component.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !shallowEqual(nextProps, this.props);\n };\n\n _proto.componentWillMount = function componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.Component);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n","import defineProperty from \"./defineProperty.js\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n return target;\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport { createRef, createElement, Component, createContext } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport invariant from 'invariant';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport PropTypes from 'prop-types';\n\nvar Manager = function () {\n function Manager() {\n _classCallCheck(this, Manager);\n\n _defineProperty(this, \"refs\", {});\n }\n\n _createClass(Manager, [{\n key: \"add\",\n value: function add(collection, ref) {\n if (!this.refs[collection]) {\n this.refs[collection] = [];\n }\n\n this.refs[collection].push(ref);\n }\n }, {\n key: \"remove\",\n value: function remove(collection, ref) {\n var index = this.getIndex(collection, ref);\n\n if (index !== -1) {\n this.refs[collection].splice(index, 1);\n }\n }\n }, {\n key: \"isActive\",\n value: function isActive() {\n return this.active;\n }\n }, {\n key: \"getActive\",\n value: function getActive() {\n var _this = this;\n\n return this.refs[this.active.collection].find(function (_ref) {\n var node = _ref.node;\n return node.sortableInfo.index == _this.active.index;\n });\n }\n }, {\n key: \"getIndex\",\n value: function getIndex(collection, ref) {\n return this.refs[collection].indexOf(ref);\n }\n }, {\n key: \"getOrderedRefs\",\n value: function getOrderedRefs() {\n var collection = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.active.collection;\n return this.refs[collection].sort(sortByIndex);\n }\n }]);\n\n return Manager;\n}();\n\nfunction sortByIndex(_ref2, _ref3) {\n var index1 = _ref2.node.sortableInfo.index;\n var index2 = _ref3.node.sortableInfo.index;\n return index1 - index2;\n}\n\nfunction arrayMove(array, from, to) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof console !== 'undefined') {\n console.warn(\"Deprecation warning: arrayMove will no longer be exported by 'react-sortable-hoc' in the next major release. Please install the `array-move` package locally instead. https://www.npmjs.com/package/array-move\");\n }\n }\n\n array = array.slice();\n array.splice(to < 0 ? array.length + to : to, 0, array.splice(from, 1)[0]);\n return array;\n}\nfunction omit(obj, keysToOmit) {\n return Object.keys(obj).reduce(function (acc, key) {\n if (keysToOmit.indexOf(key) === -1) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\nvar events = {\n end: ['touchend', 'touchcancel', 'mouseup'],\n move: ['touchmove', 'mousemove'],\n start: ['touchstart', 'mousedown']\n};\nvar vendorPrefix = function () {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return '';\n }\n\n var styles = window.getComputedStyle(document.documentElement, '') || ['-moz-hidden-iframe'];\n var pre = (Array.prototype.slice.call(styles).join('').match(/-(moz|webkit|ms)-/) || styles.OLink === '' && ['', 'o'])[1];\n\n switch (pre) {\n case 'ms':\n return 'ms';\n\n default:\n return pre && pre.length ? pre[0].toUpperCase() + pre.substr(1) : '';\n }\n}();\nfunction setInlineStyles(node, styles) {\n Object.keys(styles).forEach(function (key) {\n node.style[key] = styles[key];\n });\n}\nfunction setTranslate3d(node, translate) {\n node.style[\"\".concat(vendorPrefix, \"Transform\")] = translate == null ? '' : \"translate3d(\".concat(translate.x, \"px,\").concat(translate.y, \"px,0)\");\n}\nfunction setTransitionDuration(node, duration) {\n node.style[\"\".concat(vendorPrefix, \"TransitionDuration\")] = duration == null ? '' : \"\".concat(duration, \"ms\");\n}\nfunction closest(el, fn) {\n while (el) {\n if (fn(el)) {\n return el;\n }\n\n el = el.parentNode;\n }\n\n return null;\n}\nfunction limit(min, max, value) {\n return Math.max(min, Math.min(value, max));\n}\n\nfunction getPixelValue(stringValue) {\n if (stringValue.substr(-2) === 'px') {\n return parseFloat(stringValue);\n }\n\n return 0;\n}\n\nfunction getElementMargin(element) {\n var style = window.getComputedStyle(element);\n return {\n bottom: getPixelValue(style.marginBottom),\n left: getPixelValue(style.marginLeft),\n right: getPixelValue(style.marginRight),\n top: getPixelValue(style.marginTop)\n };\n}\nfunction provideDisplayName(prefix, Component$$1) {\n var componentName = Component$$1.displayName || Component$$1.name;\n return componentName ? \"\".concat(prefix, \"(\").concat(componentName, \")\") : prefix;\n}\nfunction getScrollAdjustedBoundingClientRect(node, scrollDelta) {\n var boundingClientRect = node.getBoundingClientRect();\n return {\n top: boundingClientRect.top + scrollDelta.top,\n left: boundingClientRect.left + scrollDelta.left\n };\n}\nfunction getPosition(event) {\n if (event.touches && event.touches.length) {\n return {\n x: event.touches[0].pageX,\n y: event.touches[0].pageY\n };\n } else if (event.changedTouches && event.changedTouches.length) {\n return {\n x: event.changedTouches[0].pageX,\n y: event.changedTouches[0].pageY\n };\n } else {\n return {\n x: event.pageX,\n y: event.pageY\n };\n }\n}\nfunction isTouchEvent(event) {\n return event.touches && event.touches.length || event.changedTouches && event.changedTouches.length;\n}\nfunction getEdgeOffset(node, parent) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n left: 0,\n top: 0\n };\n\n if (!node) {\n return undefined;\n }\n\n var nodeOffset = {\n left: offset.left + node.offsetLeft,\n top: offset.top + node.offsetTop\n };\n\n if (node.parentNode === parent) {\n return nodeOffset;\n }\n\n return getEdgeOffset(node.parentNode, parent, nodeOffset);\n}\nfunction getTargetIndex(newIndex, prevIndex, oldIndex) {\n if (newIndex < oldIndex && newIndex > prevIndex) {\n return newIndex - 1;\n } else if (newIndex > oldIndex && newIndex < prevIndex) {\n return newIndex + 1;\n } else {\n return newIndex;\n }\n}\nfunction getLockPixelOffset(_ref) {\n var lockOffset = _ref.lockOffset,\n width = _ref.width,\n height = _ref.height;\n var offsetX = lockOffset;\n var offsetY = lockOffset;\n var unit = 'px';\n\n if (typeof lockOffset === 'string') {\n var match = /^[+-]?\\d*(?:\\.\\d*)?(px|%)$/.exec(lockOffset);\n invariant(match !== null, 'lockOffset value should be a number or a string of a ' + 'number followed by \"px\" or \"%\". Given %s', lockOffset);\n offsetX = parseFloat(lockOffset);\n offsetY = parseFloat(lockOffset);\n unit = match[1];\n }\n\n invariant(isFinite(offsetX) && isFinite(offsetY), 'lockOffset value should be a finite. Given %s', lockOffset);\n\n if (unit === '%') {\n offsetX = offsetX * width / 100;\n offsetY = offsetY * height / 100;\n }\n\n return {\n x: offsetX,\n y: offsetY\n };\n}\nfunction getLockPixelOffsets(_ref2) {\n var height = _ref2.height,\n width = _ref2.width,\n lockOffset = _ref2.lockOffset;\n var offsets = Array.isArray(lockOffset) ? lockOffset : [lockOffset, lockOffset];\n invariant(offsets.length === 2, 'lockOffset prop of SortableContainer should be a single ' + 'value or an array of exactly two values. Given %s', lockOffset);\n\n var _offsets = _slicedToArray(offsets, 2),\n minLockOffset = _offsets[0],\n maxLockOffset = _offsets[1];\n\n return [getLockPixelOffset({\n height: height,\n lockOffset: minLockOffset,\n width: width\n }), getLockPixelOffset({\n height: height,\n lockOffset: maxLockOffset,\n width: width\n })];\n}\n\nfunction isScrollable(el) {\n var computedStyle = window.getComputedStyle(el);\n var overflowRegex = /(auto|scroll)/;\n var properties = ['overflow', 'overflowX', 'overflowY'];\n return properties.find(function (property) {\n return overflowRegex.test(computedStyle[property]);\n });\n}\n\nfunction getScrollingParent(el) {\n if (!(el instanceof HTMLElement)) {\n return null;\n } else if (isScrollable(el)) {\n return el;\n } else {\n return getScrollingParent(el.parentNode);\n }\n}\nfunction getContainerGridGap(element) {\n var style = window.getComputedStyle(element);\n\n if (style.display === 'grid') {\n return {\n x: getPixelValue(style.gridColumnGap),\n y: getPixelValue(style.gridRowGap)\n };\n }\n\n return {\n x: 0,\n y: 0\n };\n}\nvar KEYCODE = {\n TAB: 9,\n ESC: 27,\n SPACE: 32,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n};\nvar NodeType = {\n Anchor: 'A',\n Button: 'BUTTON',\n Canvas: 'CANVAS',\n Input: 'INPUT',\n Option: 'OPTION',\n Textarea: 'TEXTAREA',\n Select: 'SELECT'\n};\nfunction cloneNode(node) {\n var selector = 'input, textarea, select, canvas, [contenteditable]';\n var fields = node.querySelectorAll(selector);\n var clonedNode = node.cloneNode(true);\n\n var clonedFields = _toConsumableArray(clonedNode.querySelectorAll(selector));\n\n clonedFields.forEach(function (field, i) {\n if (field.type !== 'file') {\n field.value = fields[i].value;\n }\n\n if (field.type === 'radio' && field.name) {\n field.name = \"__sortableClone__\".concat(field.name);\n }\n\n if (field.tagName === NodeType.Canvas && fields[i].width > 0 && fields[i].height > 0) {\n var destCtx = field.getContext('2d');\n destCtx.drawImage(fields[i], 0, 0);\n }\n });\n return clonedNode;\n}\n\nfunction sortableHandle(WrappedComponent) {\n var _class, _temp;\n\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n withRef: false\n };\n return _temp = _class = function (_React$Component) {\n _inherits(WithSortableHandle, _React$Component);\n\n function WithSortableHandle() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, WithSortableHandle);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(WithSortableHandle)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"wrappedInstance\", createRef());\n\n return _this;\n }\n\n _createClass(WithSortableHandle, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var node = findDOMNode(this);\n node.sortableHandle = true;\n }\n }, {\n key: \"getWrappedInstance\",\n value: function getWrappedInstance() {\n invariant(config.withRef, 'To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableHandle() call');\n return this.wrappedInstance.current;\n }\n }, {\n key: \"render\",\n value: function render() {\n var ref = config.withRef ? this.wrappedInstance : null;\n return createElement(WrappedComponent, _extends({\n ref: ref\n }, this.props));\n }\n }]);\n\n return WithSortableHandle;\n }(Component), _defineProperty(_class, \"displayName\", provideDisplayName('sortableHandle', WrappedComponent)), _temp;\n}\nfunction isSortableHandle(node) {\n return node.sortableHandle != null;\n}\n\nvar AutoScroller = function () {\n function AutoScroller(container, onScrollCallback) {\n _classCallCheck(this, AutoScroller);\n\n this.container = container;\n this.onScrollCallback = onScrollCallback;\n }\n\n _createClass(AutoScroller, [{\n key: \"clear\",\n value: function clear() {\n if (this.interval == null) {\n return;\n }\n\n clearInterval(this.interval);\n this.interval = null;\n }\n }, {\n key: \"update\",\n value: function update(_ref) {\n var _this = this;\n\n var translate = _ref.translate,\n minTranslate = _ref.minTranslate,\n maxTranslate = _ref.maxTranslate,\n width = _ref.width,\n height = _ref.height;\n var direction = {\n x: 0,\n y: 0\n };\n var speed = {\n x: 1,\n y: 1\n };\n var acceleration = {\n x: 10,\n y: 10\n };\n var _this$container = this.container,\n scrollTop = _this$container.scrollTop,\n scrollLeft = _this$container.scrollLeft,\n scrollHeight = _this$container.scrollHeight,\n scrollWidth = _this$container.scrollWidth,\n clientHeight = _this$container.clientHeight,\n clientWidth = _this$container.clientWidth;\n var isTop = scrollTop === 0;\n var isBottom = scrollHeight - scrollTop - clientHeight === 0;\n var isLeft = scrollLeft === 0;\n var isRight = scrollWidth - scrollLeft - clientWidth === 0;\n\n if (translate.y >= maxTranslate.y - height / 2 && !isBottom) {\n direction.y = 1;\n speed.y = acceleration.y * Math.abs((maxTranslate.y - height / 2 - translate.y) / height);\n } else if (translate.x >= maxTranslate.x - width / 2 && !isRight) {\n direction.x = 1;\n speed.x = acceleration.x * Math.abs((maxTranslate.x - width / 2 - translate.x) / width);\n } else if (translate.y <= minTranslate.y + height / 2 && !isTop) {\n direction.y = -1;\n speed.y = acceleration.y * Math.abs((translate.y - height / 2 - minTranslate.y) / height);\n } else if (translate.x <= minTranslate.x + width / 2 && !isLeft) {\n direction.x = -1;\n speed.x = acceleration.x * Math.abs((translate.x - width / 2 - minTranslate.x) / width);\n }\n\n if (this.interval) {\n this.clear();\n this.isAutoScrolling = false;\n }\n\n if (direction.x !== 0 || direction.y !== 0) {\n this.interval = setInterval(function () {\n _this.isAutoScrolling = true;\n var offset = {\n left: speed.x * direction.x,\n top: speed.y * direction.y\n };\n _this.container.scrollTop += offset.top;\n _this.container.scrollLeft += offset.left;\n\n _this.onScrollCallback(offset);\n }, 5);\n }\n }\n }]);\n\n return AutoScroller;\n}();\n\nfunction defaultGetHelperDimensions(_ref) {\n var node = _ref.node;\n return {\n height: node.offsetHeight,\n width: node.offsetWidth\n };\n}\n\nfunction defaultShouldCancelStart(event) {\n var interactiveElements = [NodeType.Input, NodeType.Textarea, NodeType.Select, NodeType.Option, NodeType.Button];\n\n if (interactiveElements.indexOf(event.target.tagName) !== -1) {\n return true;\n }\n\n if (closest(event.target, function (el) {\n return el.contentEditable === 'true';\n })) {\n return true;\n }\n\n return false;\n}\n\nvar propTypes = {\n axis: PropTypes.oneOf(['x', 'y', 'xy']),\n contentWindow: PropTypes.any,\n disableAutoscroll: PropTypes.bool,\n distance: PropTypes.number,\n getContainer: PropTypes.func,\n getHelperDimensions: PropTypes.func,\n helperClass: PropTypes.string,\n helperContainer: PropTypes.oneOfType([PropTypes.func, typeof HTMLElement === 'undefined' ? PropTypes.any : PropTypes.instanceOf(HTMLElement)]),\n hideSortableGhost: PropTypes.bool,\n keyboardSortingTransitionDuration: PropTypes.number,\n lockAxis: PropTypes.string,\n lockOffset: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string]))]),\n lockToContainerEdges: PropTypes.bool,\n onSortEnd: PropTypes.func,\n onSortMove: PropTypes.func,\n onSortOver: PropTypes.func,\n onSortStart: PropTypes.func,\n pressDelay: PropTypes.number,\n pressThreshold: PropTypes.number,\n keyCodes: PropTypes.shape({\n lift: PropTypes.arrayOf(PropTypes.number),\n drop: PropTypes.arrayOf(PropTypes.number),\n cancel: PropTypes.arrayOf(PropTypes.number),\n up: PropTypes.arrayOf(PropTypes.number),\n down: PropTypes.arrayOf(PropTypes.number)\n }),\n shouldCancelStart: PropTypes.func,\n transitionDuration: PropTypes.number,\n updateBeforeSortStart: PropTypes.func,\n useDragHandle: PropTypes.bool,\n useWindowAsScrollContainer: PropTypes.bool\n};\nvar defaultKeyCodes = {\n lift: [KEYCODE.SPACE],\n drop: [KEYCODE.SPACE],\n cancel: [KEYCODE.ESC],\n up: [KEYCODE.UP, KEYCODE.LEFT],\n down: [KEYCODE.DOWN, KEYCODE.RIGHT]\n};\nvar defaultProps = {\n axis: 'y',\n disableAutoscroll: false,\n distance: 0,\n getHelperDimensions: defaultGetHelperDimensions,\n hideSortableGhost: true,\n lockOffset: '50%',\n lockToContainerEdges: false,\n pressDelay: 0,\n pressThreshold: 5,\n keyCodes: defaultKeyCodes,\n shouldCancelStart: defaultShouldCancelStart,\n transitionDuration: 300,\n useWindowAsScrollContainer: false\n};\nvar omittedProps = Object.keys(propTypes);\nfunction validateProps(props) {\n invariant(!(props.distance && props.pressDelay), 'Attempted to set both `pressDelay` and `distance` on SortableContainer, you may only use one or the other, not both at the same time.');\n}\n\nfunction _finallyRethrows(body, finalizer) {\n try {\n var result = body();\n } catch (e) {\n return finalizer(true, e);\n }\n\n if (result && result.then) {\n return result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n }\n\n return finalizer(false, value);\n}\nvar SortableContext = createContext({\n manager: {}\n});\nfunction sortableContainer(WrappedComponent) {\n var _class, _temp;\n\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n withRef: false\n };\n return _temp = _class = function (_React$Component) {\n _inherits(WithSortableContainer, _React$Component);\n\n function WithSortableContainer(props) {\n var _this;\n\n _classCallCheck(this, WithSortableContainer);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(WithSortableContainer).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {});\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleStart\", function (event) {\n var _this$props = _this.props,\n distance = _this$props.distance,\n shouldCancelStart = _this$props.shouldCancelStart;\n\n if (event.button === 2 || shouldCancelStart(event)) {\n return;\n }\n\n _this.touched = true;\n _this.position = getPosition(event);\n var node = closest(event.target, function (el) {\n return el.sortableInfo != null;\n });\n\n if (node && node.sortableInfo && _this.nodeIsChild(node) && !_this.state.sorting) {\n var useDragHandle = _this.props.useDragHandle;\n var _node$sortableInfo = node.sortableInfo,\n index = _node$sortableInfo.index,\n collection = _node$sortableInfo.collection,\n disabled = _node$sortableInfo.disabled;\n\n if (disabled) {\n return;\n }\n\n if (useDragHandle && !closest(event.target, isSortableHandle)) {\n return;\n }\n\n _this.manager.active = {\n collection: collection,\n index: index\n };\n\n if (!isTouchEvent(event) && event.target.tagName === NodeType.Anchor) {\n event.preventDefault();\n }\n\n if (!distance) {\n if (_this.props.pressDelay === 0) {\n _this.handlePress(event);\n } else {\n _this.pressTimer = setTimeout(function () {\n return _this.handlePress(event);\n }, _this.props.pressDelay);\n }\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"nodeIsChild\", function (node) {\n return node.sortableInfo.manager === _this.manager;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleMove\", function (event) {\n var _this$props2 = _this.props,\n distance = _this$props2.distance,\n pressThreshold = _this$props2.pressThreshold;\n\n if (!_this.state.sorting && _this.touched && !_this._awaitingUpdateBeforeSortStart) {\n var position = getPosition(event);\n var delta = {\n x: _this.position.x - position.x,\n y: _this.position.y - position.y\n };\n var combinedDelta = Math.abs(delta.x) + Math.abs(delta.y);\n _this.delta = delta;\n\n if (!distance && (!pressThreshold || combinedDelta >= pressThreshold)) {\n clearTimeout(_this.cancelTimer);\n _this.cancelTimer = setTimeout(_this.cancel, 0);\n } else if (distance && combinedDelta >= distance && _this.manager.isActive()) {\n _this.handlePress(event);\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleEnd\", function () {\n _this.touched = false;\n\n _this.cancel();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cancel\", function () {\n var distance = _this.props.distance;\n var sorting = _this.state.sorting;\n\n if (!sorting) {\n if (!distance) {\n clearTimeout(_this.pressTimer);\n }\n\n _this.manager.active = null;\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handlePress\", function (event) {\n try {\n var active = _this.manager.getActive();\n\n var _temp6 = function () {\n if (active) {\n var _temp7 = function _temp7() {\n var index = _node.sortableInfo.index;\n var margin = getElementMargin(_node);\n var gridGap = getContainerGridGap(_this.container);\n\n var containerBoundingRect = _this.scrollContainer.getBoundingClientRect();\n\n var dimensions = _getHelperDimensions({\n index: index,\n node: _node,\n collection: _collection\n });\n\n _this.node = _node;\n _this.margin = margin;\n _this.gridGap = gridGap;\n _this.width = dimensions.width;\n _this.height = dimensions.height;\n _this.marginOffset = {\n x: _this.margin.left + _this.margin.right + _this.gridGap.x,\n y: Math.max(_this.margin.top, _this.margin.bottom, _this.gridGap.y)\n };\n _this.boundingClientRect = _node.getBoundingClientRect();\n _this.containerBoundingRect = containerBoundingRect;\n _this.index = index;\n _this.newIndex = index;\n _this.axis = {\n x: _axis.indexOf('x') >= 0,\n y: _axis.indexOf('y') >= 0\n };\n _this.offsetEdge = getEdgeOffset(_node, _this.container);\n\n if (_isKeySorting) {\n _this.initialOffset = getPosition(_objectSpread({}, event, {\n pageX: _this.boundingClientRect.left,\n pageY: _this.boundingClientRect.top\n }));\n } else {\n _this.initialOffset = getPosition(event);\n }\n\n _this.initialScroll = {\n left: _this.scrollContainer.scrollLeft,\n top: _this.scrollContainer.scrollTop\n };\n _this.initialWindowScroll = {\n left: window.pageXOffset,\n top: window.pageYOffset\n };\n _this.helper = _this.helperContainer.appendChild(cloneNode(_node));\n setInlineStyles(_this.helper, {\n boxSizing: 'border-box',\n height: \"\".concat(_this.height, \"px\"),\n left: \"\".concat(_this.boundingClientRect.left - margin.left, \"px\"),\n pointerEvents: 'none',\n position: 'fixed',\n top: \"\".concat(_this.boundingClientRect.top - margin.top, \"px\"),\n width: \"\".concat(_this.width, \"px\")\n });\n\n if (_isKeySorting) {\n _this.helper.focus();\n }\n\n if (_hideSortableGhost) {\n _this.sortableGhost = _node;\n setInlineStyles(_node, {\n opacity: 0,\n visibility: 'hidden'\n });\n }\n\n _this.minTranslate = {};\n _this.maxTranslate = {};\n\n if (_isKeySorting) {\n var _ref = _useWindowAsScrollContainer ? {\n top: 0,\n left: 0,\n width: _this.contentWindow.innerWidth,\n height: _this.contentWindow.innerHeight\n } : _this.containerBoundingRect,\n containerTop = _ref.top,\n containerLeft = _ref.left,\n containerWidth = _ref.width,\n containerHeight = _ref.height;\n\n var containerBottom = containerTop + containerHeight;\n var containerRight = containerLeft + containerWidth;\n\n if (_this.axis.x) {\n _this.minTranslate.x = containerLeft - _this.boundingClientRect.left;\n _this.maxTranslate.x = containerRight - (_this.boundingClientRect.left + _this.width);\n }\n\n if (_this.axis.y) {\n _this.minTranslate.y = containerTop - _this.boundingClientRect.top;\n _this.maxTranslate.y = containerBottom - (_this.boundingClientRect.top + _this.height);\n }\n } else {\n if (_this.axis.x) {\n _this.minTranslate.x = (_useWindowAsScrollContainer ? 0 : containerBoundingRect.left) - _this.boundingClientRect.left - _this.width / 2;\n _this.maxTranslate.x = (_useWindowAsScrollContainer ? _this.contentWindow.innerWidth : containerBoundingRect.left + containerBoundingRect.width) - _this.boundingClientRect.left - _this.width / 2;\n }\n\n if (_this.axis.y) {\n _this.minTranslate.y = (_useWindowAsScrollContainer ? 0 : containerBoundingRect.top) - _this.boundingClientRect.top - _this.height / 2;\n _this.maxTranslate.y = (_useWindowAsScrollContainer ? _this.contentWindow.innerHeight : containerBoundingRect.top + containerBoundingRect.height) - _this.boundingClientRect.top - _this.height / 2;\n }\n }\n\n if (_helperClass) {\n _helperClass.split(' ').forEach(function (className) {\n return _this.helper.classList.add(className);\n });\n }\n\n _this.listenerNode = event.touches ? event.target : _this.contentWindow;\n\n if (_isKeySorting) {\n _this.listenerNode.addEventListener('wheel', _this.handleKeyEnd, true);\n\n _this.listenerNode.addEventListener('mousedown', _this.handleKeyEnd, true);\n\n _this.listenerNode.addEventListener('keydown', _this.handleKeyDown);\n } else {\n events.move.forEach(function (eventName) {\n return _this.listenerNode.addEventListener(eventName, _this.handleSortMove, false);\n });\n events.end.forEach(function (eventName) {\n return _this.listenerNode.addEventListener(eventName, _this.handleSortEnd, false);\n });\n }\n\n _this.setState({\n sorting: true,\n sortingIndex: index\n });\n\n if (_onSortStart) {\n _onSortStart({\n node: _node,\n index: index,\n collection: _collection,\n isKeySorting: _isKeySorting,\n nodes: _this.manager.getOrderedRefs(),\n helper: _this.helper\n }, event);\n }\n\n if (_isKeySorting) {\n _this.keyMove(0);\n }\n };\n\n var _this$props3 = _this.props,\n _axis = _this$props3.axis,\n _getHelperDimensions = _this$props3.getHelperDimensions,\n _helperClass = _this$props3.helperClass,\n _hideSortableGhost = _this$props3.hideSortableGhost,\n updateBeforeSortStart = _this$props3.updateBeforeSortStart,\n _onSortStart = _this$props3.onSortStart,\n _useWindowAsScrollContainer = _this$props3.useWindowAsScrollContainer;\n var _node = active.node,\n _collection = active.collection;\n var _isKeySorting = _this.manager.isKeySorting;\n\n var _temp8 = function () {\n if (typeof updateBeforeSortStart === 'function') {\n _this._awaitingUpdateBeforeSortStart = true;\n\n var _temp9 = _finallyRethrows(function () {\n var index = _node.sortableInfo.index;\n return Promise.resolve(updateBeforeSortStart({\n collection: _collection,\n index: index,\n node: _node,\n isKeySorting: _isKeySorting\n }, event)).then(function () {});\n }, function (_wasThrown, _result) {\n _this._awaitingUpdateBeforeSortStart = false;\n if (_wasThrown) throw _result;\n return _result;\n });\n\n if (_temp9 && _temp9.then) return _temp9.then(function () {});\n }\n }();\n\n return _temp8 && _temp8.then ? _temp8.then(_temp7) : _temp7(_temp8);\n }\n }();\n\n return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);\n } catch (e) {\n return Promise.reject(e);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleSortMove\", function (event) {\n var onSortMove = _this.props.onSortMove;\n\n if (typeof event.preventDefault === 'function' && event.cancelable) {\n event.preventDefault();\n }\n\n _this.updateHelperPosition(event);\n\n _this.animateNodes();\n\n _this.autoscroll();\n\n if (onSortMove) {\n onSortMove(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleSortEnd\", function (event) {\n var _this$props4 = _this.props,\n hideSortableGhost = _this$props4.hideSortableGhost,\n onSortEnd = _this$props4.onSortEnd;\n var _this$manager = _this.manager,\n collection = _this$manager.active.collection,\n isKeySorting = _this$manager.isKeySorting;\n\n var nodes = _this.manager.getOrderedRefs();\n\n if (_this.listenerNode) {\n if (isKeySorting) {\n _this.listenerNode.removeEventListener('wheel', _this.handleKeyEnd, true);\n\n _this.listenerNode.removeEventListener('mousedown', _this.handleKeyEnd, true);\n\n _this.listenerNode.removeEventListener('keydown', _this.handleKeyDown);\n } else {\n events.move.forEach(function (eventName) {\n return _this.listenerNode.removeEventListener(eventName, _this.handleSortMove);\n });\n events.end.forEach(function (eventName) {\n return _this.listenerNode.removeEventListener(eventName, _this.handleSortEnd);\n });\n }\n }\n\n _this.helper.parentNode.removeChild(_this.helper);\n\n if (hideSortableGhost && _this.sortableGhost) {\n setInlineStyles(_this.sortableGhost, {\n opacity: '',\n visibility: ''\n });\n }\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n var _node2 = nodes[i];\n var el = _node2.node;\n _node2.edgeOffset = null;\n _node2.boundingClientRect = null;\n setTranslate3d(el, null);\n setTransitionDuration(el, null);\n _node2.translate = null;\n }\n\n _this.autoScroller.clear();\n\n _this.manager.active = null;\n _this.manager.isKeySorting = false;\n\n _this.setState({\n sorting: false,\n sortingIndex: null\n });\n\n if (typeof onSortEnd === 'function') {\n onSortEnd({\n collection: collection,\n newIndex: _this.newIndex,\n oldIndex: _this.index,\n isKeySorting: isKeySorting,\n nodes: nodes\n }, event);\n }\n\n _this.touched = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"autoscroll\", function () {\n var disableAutoscroll = _this.props.disableAutoscroll;\n var isKeySorting = _this.manager.isKeySorting;\n\n if (disableAutoscroll) {\n _this.autoScroller.clear();\n\n return;\n }\n\n if (isKeySorting) {\n var translate = _objectSpread({}, _this.translate);\n\n var scrollX = 0;\n var scrollY = 0;\n\n if (_this.axis.x) {\n translate.x = Math.min(_this.maxTranslate.x, Math.max(_this.minTranslate.x, _this.translate.x));\n scrollX = _this.translate.x - translate.x;\n }\n\n if (_this.axis.y) {\n translate.y = Math.min(_this.maxTranslate.y, Math.max(_this.minTranslate.y, _this.translate.y));\n scrollY = _this.translate.y - translate.y;\n }\n\n _this.translate = translate;\n setTranslate3d(_this.helper, _this.translate);\n _this.scrollContainer.scrollLeft += scrollX;\n _this.scrollContainer.scrollTop += scrollY;\n return;\n }\n\n _this.autoScroller.update({\n height: _this.height,\n maxTranslate: _this.maxTranslate,\n minTranslate: _this.minTranslate,\n translate: _this.translate,\n width: _this.width\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onAutoScroll\", function (offset) {\n _this.translate.x += offset.left;\n _this.translate.y += offset.top;\n\n _this.animateNodes();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleKeyDown\", function (event) {\n var keyCode = event.keyCode;\n var _this$props5 = _this.props,\n shouldCancelStart = _this$props5.shouldCancelStart,\n _this$props5$keyCodes = _this$props5.keyCodes,\n customKeyCodes = _this$props5$keyCodes === void 0 ? {} : _this$props5$keyCodes;\n\n var keyCodes = _objectSpread({}, defaultKeyCodes, customKeyCodes);\n\n if (_this.manager.active && !_this.manager.isKeySorting || !_this.manager.active && (!keyCodes.lift.includes(keyCode) || shouldCancelStart(event) || !_this.isValidSortingTarget(event))) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n if (keyCodes.lift.includes(keyCode) && !_this.manager.active) {\n _this.keyLift(event);\n } else if (keyCodes.drop.includes(keyCode) && _this.manager.active) {\n _this.keyDrop(event);\n } else if (keyCodes.cancel.includes(keyCode)) {\n _this.newIndex = _this.manager.active.index;\n\n _this.keyDrop(event);\n } else if (keyCodes.up.includes(keyCode)) {\n _this.keyMove(-1);\n } else if (keyCodes.down.includes(keyCode)) {\n _this.keyMove(1);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"keyLift\", function (event) {\n var target = event.target;\n var node = closest(target, function (el) {\n return el.sortableInfo != null;\n });\n var _node$sortableInfo2 = node.sortableInfo,\n index = _node$sortableInfo2.index,\n collection = _node$sortableInfo2.collection;\n _this.initialFocusedNode = target;\n _this.manager.isKeySorting = true;\n _this.manager.active = {\n index: index,\n collection: collection\n };\n\n _this.handlePress(event);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"keyMove\", function (shift) {\n var nodes = _this.manager.getOrderedRefs();\n\n var lastIndex = nodes[nodes.length - 1].node.sortableInfo.index;\n var newIndex = _this.newIndex + shift;\n var prevIndex = _this.newIndex;\n\n if (newIndex < 0 || newIndex > lastIndex) {\n return;\n }\n\n _this.prevIndex = prevIndex;\n _this.newIndex = newIndex;\n var targetIndex = getTargetIndex(_this.newIndex, _this.prevIndex, _this.index);\n var target = nodes.find(function (_ref2) {\n var node = _ref2.node;\n return node.sortableInfo.index === targetIndex;\n });\n var targetNode = target.node;\n var scrollDelta = _this.containerScrollDelta;\n var targetBoundingClientRect = target.boundingClientRect || getScrollAdjustedBoundingClientRect(targetNode, scrollDelta);\n var targetTranslate = target.translate || {\n x: 0,\n y: 0\n };\n var targetPosition = {\n top: targetBoundingClientRect.top + targetTranslate.y - scrollDelta.top,\n left: targetBoundingClientRect.left + targetTranslate.x - scrollDelta.left\n };\n var shouldAdjustForSize = prevIndex < newIndex;\n var sizeAdjustment = {\n x: shouldAdjustForSize && _this.axis.x ? targetNode.offsetWidth - _this.width : 0,\n y: shouldAdjustForSize && _this.axis.y ? targetNode.offsetHeight - _this.height : 0\n };\n\n _this.handleSortMove({\n pageX: targetPosition.left + sizeAdjustment.x,\n pageY: targetPosition.top + sizeAdjustment.y,\n ignoreTransition: shift === 0\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"keyDrop\", function (event) {\n _this.handleSortEnd(event);\n\n if (_this.initialFocusedNode) {\n _this.initialFocusedNode.focus();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleKeyEnd\", function (event) {\n if (_this.manager.active) {\n _this.keyDrop(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isValidSortingTarget\", function (event) {\n var useDragHandle = _this.props.useDragHandle;\n var target = event.target;\n var node = closest(target, function (el) {\n return el.sortableInfo != null;\n });\n return node && node.sortableInfo && !node.sortableInfo.disabled && (useDragHandle ? isSortableHandle(target) : target.sortableInfo);\n });\n\n var manager = new Manager();\n validateProps(props);\n _this.manager = manager;\n _this.wrappedInstance = createRef();\n _this.sortableContextValue = {\n manager: manager\n };\n _this.events = {\n end: _this.handleEnd,\n move: _this.handleMove,\n start: _this.handleStart\n };\n return _this;\n }\n\n _createClass(WithSortableContainer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n var useWindowAsScrollContainer = this.props.useWindowAsScrollContainer;\n var container = this.getContainer();\n Promise.resolve(container).then(function (containerNode) {\n _this2.container = containerNode;\n _this2.document = _this2.container.ownerDocument || document;\n var contentWindow = _this2.props.contentWindow || _this2.document.defaultView || window;\n _this2.contentWindow = typeof contentWindow === 'function' ? contentWindow() : contentWindow;\n _this2.scrollContainer = useWindowAsScrollContainer ? _this2.document.scrollingElement || _this2.document.documentElement : getScrollingParent(_this2.container) || _this2.container;\n _this2.autoScroller = new AutoScroller(_this2.scrollContainer, _this2.onAutoScroll);\n Object.keys(_this2.events).forEach(function (key) {\n return events[key].forEach(function (eventName) {\n return _this2.container.addEventListener(eventName, _this2.events[key], false);\n });\n });\n\n _this2.container.addEventListener('keydown', _this2.handleKeyDown);\n });\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this3 = this;\n\n if (this.helper && this.helper.parentNode) {\n this.helper.parentNode.removeChild(this.helper);\n }\n\n if (!this.container) {\n return;\n }\n\n Object.keys(this.events).forEach(function (key) {\n return events[key].forEach(function (eventName) {\n return _this3.container.removeEventListener(eventName, _this3.events[key]);\n });\n });\n this.container.removeEventListener('keydown', this.handleKeyDown);\n }\n }, {\n key: \"updateHelperPosition\",\n value: function updateHelperPosition(event) {\n var _this$props6 = this.props,\n lockAxis = _this$props6.lockAxis,\n lockOffset = _this$props6.lockOffset,\n lockToContainerEdges = _this$props6.lockToContainerEdges,\n transitionDuration = _this$props6.transitionDuration,\n _this$props6$keyboard = _this$props6.keyboardSortingTransitionDuration,\n keyboardSortingTransitionDuration = _this$props6$keyboard === void 0 ? transitionDuration : _this$props6$keyboard;\n var isKeySorting = this.manager.isKeySorting;\n var ignoreTransition = event.ignoreTransition;\n var offset = getPosition(event);\n var translate = {\n x: offset.x - this.initialOffset.x,\n y: offset.y - this.initialOffset.y\n };\n translate.y -= window.pageYOffset - this.initialWindowScroll.top;\n translate.x -= window.pageXOffset - this.initialWindowScroll.left;\n this.translate = translate;\n\n if (lockToContainerEdges) {\n var _getLockPixelOffsets = getLockPixelOffsets({\n height: this.height,\n lockOffset: lockOffset,\n width: this.width\n }),\n _getLockPixelOffsets2 = _slicedToArray(_getLockPixelOffsets, 2),\n minLockOffset = _getLockPixelOffsets2[0],\n maxLockOffset = _getLockPixelOffsets2[1];\n\n var minOffset = {\n x: this.width / 2 - minLockOffset.x,\n y: this.height / 2 - minLockOffset.y\n };\n var maxOffset = {\n x: this.width / 2 - maxLockOffset.x,\n y: this.height / 2 - maxLockOffset.y\n };\n translate.x = limit(this.minTranslate.x + minOffset.x, this.maxTranslate.x - maxOffset.x, translate.x);\n translate.y = limit(this.minTranslate.y + minOffset.y, this.maxTranslate.y - maxOffset.y, translate.y);\n }\n\n if (lockAxis === 'x') {\n translate.y = 0;\n } else if (lockAxis === 'y') {\n translate.x = 0;\n }\n\n if (isKeySorting && keyboardSortingTransitionDuration && !ignoreTransition) {\n setTransitionDuration(this.helper, keyboardSortingTransitionDuration);\n }\n\n setTranslate3d(this.helper, translate);\n }\n }, {\n key: \"animateNodes\",\n value: function animateNodes() {\n var _this$props7 = this.props,\n transitionDuration = _this$props7.transitionDuration,\n hideSortableGhost = _this$props7.hideSortableGhost,\n onSortOver = _this$props7.onSortOver;\n var containerScrollDelta = this.containerScrollDelta,\n windowScrollDelta = this.windowScrollDelta;\n var nodes = this.manager.getOrderedRefs();\n var sortingOffset = {\n left: this.offsetEdge.left + this.translate.x + containerScrollDelta.left,\n top: this.offsetEdge.top + this.translate.y + containerScrollDelta.top\n };\n var isKeySorting = this.manager.isKeySorting;\n var prevIndex = this.newIndex;\n this.newIndex = null;\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n var _node3 = nodes[i].node;\n var index = _node3.sortableInfo.index;\n var width = _node3.offsetWidth;\n var height = _node3.offsetHeight;\n var offset = {\n height: this.height > height ? height / 2 : this.height / 2,\n width: this.width > width ? width / 2 : this.width / 2\n };\n var mustShiftBackward = isKeySorting && index > this.index && index <= prevIndex;\n var mustShiftForward = isKeySorting && index < this.index && index >= prevIndex;\n var translate = {\n x: 0,\n y: 0\n };\n var edgeOffset = nodes[i].edgeOffset;\n\n if (!edgeOffset) {\n edgeOffset = getEdgeOffset(_node3, this.container);\n nodes[i].edgeOffset = edgeOffset;\n\n if (isKeySorting) {\n nodes[i].boundingClientRect = getScrollAdjustedBoundingClientRect(_node3, containerScrollDelta);\n }\n }\n\n var nextNode = i < nodes.length - 1 && nodes[i + 1];\n var prevNode = i > 0 && nodes[i - 1];\n\n if (nextNode && !nextNode.edgeOffset) {\n nextNode.edgeOffset = getEdgeOffset(nextNode.node, this.container);\n\n if (isKeySorting) {\n nextNode.boundingClientRect = getScrollAdjustedBoundingClientRect(nextNode.node, containerScrollDelta);\n }\n }\n\n if (index === this.index) {\n if (hideSortableGhost) {\n this.sortableGhost = _node3;\n setInlineStyles(_node3, {\n opacity: 0,\n visibility: 'hidden'\n });\n }\n\n continue;\n }\n\n if (transitionDuration) {\n setTransitionDuration(_node3, transitionDuration);\n }\n\n if (this.axis.x) {\n if (this.axis.y) {\n if (mustShiftForward || index < this.index && (sortingOffset.left + windowScrollDelta.left - offset.width <= edgeOffset.left && sortingOffset.top + windowScrollDelta.top <= edgeOffset.top + offset.height || sortingOffset.top + windowScrollDelta.top + offset.height <= edgeOffset.top)) {\n translate.x = this.width + this.marginOffset.x;\n\n if (edgeOffset.left + translate.x > this.containerBoundingRect.width - offset.width) {\n if (nextNode) {\n translate.x = nextNode.edgeOffset.left - edgeOffset.left;\n translate.y = nextNode.edgeOffset.top - edgeOffset.top;\n }\n }\n\n if (this.newIndex === null) {\n this.newIndex = index;\n }\n } else if (mustShiftBackward || index > this.index && (sortingOffset.left + windowScrollDelta.left + offset.width >= edgeOffset.left && sortingOffset.top + windowScrollDelta.top + offset.height >= edgeOffset.top || sortingOffset.top + windowScrollDelta.top + offset.height >= edgeOffset.top + height)) {\n translate.x = -(this.width + this.marginOffset.x);\n\n if (edgeOffset.left + translate.x < this.containerBoundingRect.left + offset.width) {\n if (prevNode) {\n translate.x = prevNode.edgeOffset.left - edgeOffset.left;\n translate.y = prevNode.edgeOffset.top - edgeOffset.top;\n }\n }\n\n this.newIndex = index;\n }\n } else {\n if (mustShiftBackward || index > this.index && sortingOffset.left + windowScrollDelta.left + offset.width >= edgeOffset.left) {\n translate.x = -(this.width + this.marginOffset.x);\n this.newIndex = index;\n } else if (mustShiftForward || index < this.index && sortingOffset.left + windowScrollDelta.left <= edgeOffset.left + offset.width) {\n translate.x = this.width + this.marginOffset.x;\n\n if (this.newIndex == null) {\n this.newIndex = index;\n }\n }\n }\n } else if (this.axis.y) {\n if (mustShiftBackward || index > this.index && sortingOffset.top + windowScrollDelta.top + offset.height >= edgeOffset.top) {\n translate.y = -(this.height + this.marginOffset.y);\n this.newIndex = index;\n } else if (mustShiftForward || index < this.index && sortingOffset.top + windowScrollDelta.top <= edgeOffset.top + offset.height) {\n translate.y = this.height + this.marginOffset.y;\n\n if (this.newIndex == null) {\n this.newIndex = index;\n }\n }\n }\n\n setTranslate3d(_node3, translate);\n nodes[i].translate = translate;\n }\n\n if (this.newIndex == null) {\n this.newIndex = this.index;\n }\n\n if (isKeySorting) {\n this.newIndex = prevIndex;\n }\n\n var oldIndex = isKeySorting ? this.prevIndex : prevIndex;\n\n if (onSortOver && this.newIndex !== oldIndex) {\n onSortOver({\n collection: this.manager.active.collection,\n index: this.index,\n newIndex: this.newIndex,\n oldIndex: oldIndex,\n isKeySorting: isKeySorting,\n nodes: nodes,\n helper: this.helper\n });\n }\n }\n }, {\n key: \"getWrappedInstance\",\n value: function getWrappedInstance() {\n invariant(config.withRef, 'To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableContainer() call');\n return this.wrappedInstance.current;\n }\n }, {\n key: \"getContainer\",\n value: function getContainer() {\n var getContainer = this.props.getContainer;\n\n if (typeof getContainer !== 'function') {\n return findDOMNode(this);\n }\n\n return getContainer(config.withRef ? this.getWrappedInstance() : undefined);\n }\n }, {\n key: \"render\",\n value: function render() {\n var ref = config.withRef ? this.wrappedInstance : null;\n return createElement(SortableContext.Provider, {\n value: this.sortableContextValue\n }, createElement(WrappedComponent, _extends({\n ref: ref\n }, omit(this.props, omittedProps))));\n }\n }, {\n key: \"helperContainer\",\n get: function get() {\n var helperContainer = this.props.helperContainer;\n\n if (typeof helperContainer === 'function') {\n return helperContainer();\n }\n\n return this.props.helperContainer || this.document.body;\n }\n }, {\n key: \"containerScrollDelta\",\n get: function get() {\n var useWindowAsScrollContainer = this.props.useWindowAsScrollContainer;\n\n if (useWindowAsScrollContainer) {\n return {\n left: 0,\n top: 0\n };\n }\n\n return {\n left: this.scrollContainer.scrollLeft - this.initialScroll.left,\n top: this.scrollContainer.scrollTop - this.initialScroll.top\n };\n }\n }, {\n key: \"windowScrollDelta\",\n get: function get() {\n return {\n left: this.contentWindow.pageXOffset - this.initialWindowScroll.left,\n top: this.contentWindow.pageYOffset - this.initialWindowScroll.top\n };\n }\n }]);\n\n return WithSortableContainer;\n }(Component), _defineProperty(_class, \"displayName\", provideDisplayName('sortableList', WrappedComponent)), _defineProperty(_class, \"defaultProps\", defaultProps), _defineProperty(_class, \"propTypes\", propTypes), _temp;\n}\n\nvar propTypes$1 = {\n index: PropTypes.number.isRequired,\n collection: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n disabled: PropTypes.bool\n};\nvar omittedProps$1 = Object.keys(propTypes$1);\nfunction sortableElement(WrappedComponent) {\n var _class, _temp;\n\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n withRef: false\n };\n return _temp = _class = function (_React$Component) {\n _inherits(WithSortableElement, _React$Component);\n\n function WithSortableElement() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, WithSortableElement);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(WithSortableElement)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"wrappedInstance\", createRef());\n\n return _this;\n }\n\n _createClass(WithSortableElement, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.register();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.node) {\n if (prevProps.index !== this.props.index) {\n this.node.sortableInfo.index = this.props.index;\n }\n\n if (prevProps.disabled !== this.props.disabled) {\n this.node.sortableInfo.disabled = this.props.disabled;\n }\n }\n\n if (prevProps.collection !== this.props.collection) {\n this.unregister(prevProps.collection);\n this.register();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.unregister();\n }\n }, {\n key: \"register\",\n value: function register() {\n var _this$props = this.props,\n collection = _this$props.collection,\n disabled = _this$props.disabled,\n index = _this$props.index;\n var node = findDOMNode(this);\n node.sortableInfo = {\n collection: collection,\n disabled: disabled,\n index: index,\n manager: this.context.manager\n };\n this.node = node;\n this.ref = {\n node: node\n };\n this.context.manager.add(collection, this.ref);\n }\n }, {\n key: \"unregister\",\n value: function unregister() {\n var collection = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.collection;\n this.context.manager.remove(collection, this.ref);\n }\n }, {\n key: \"getWrappedInstance\",\n value: function getWrappedInstance() {\n invariant(config.withRef, 'To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableElement() call');\n return this.wrappedInstance.current;\n }\n }, {\n key: \"render\",\n value: function render() {\n var ref = config.withRef ? this.wrappedInstance : null;\n return createElement(WrappedComponent, _extends({\n ref: ref\n }, omit(this.props, omittedProps$1)));\n }\n }]);\n\n return WithSortableElement;\n }(Component), _defineProperty(_class, \"displayName\", provideDisplayName('sortableElement', WrappedComponent)), _defineProperty(_class, \"contextType\", SortableContext), _defineProperty(_class, \"propTypes\", propTypes$1), _defineProperty(_class, \"defaultProps\", {\n collection: 0\n }), _temp;\n}\n\nexport { sortableContainer as SortableContainer, sortableContainer, sortableElement as SortableElement, sortableElement, sortableHandle as SortableHandle, sortableHandle, arrayMove };\n","export var UpdateStatus;\n(function (UpdateStatus) {\n UpdateStatus[\"checking\"] = \"checking\";\n UpdateStatus[\"current\"] = \"current\";\n UpdateStatus[\"available\"] = \"available\";\n})(UpdateStatus || (UpdateStatus = {}));\n","import { useCallback, useEffect, useState } from 'react';\nimport { UpdateStatus, } from './types';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nvar reloadPage = function () { return window.location.reload(true); };\nvar currentVersion = window.__APP_VERSION__;\nexport var useUpdateCheck = function (_a) {\n var interval = _a.interval, type = _a.type, ignoreServerCache = _a.ignoreServerCache;\n var _b = useState(UpdateStatus.checking), status = _b[0], setStatus = _b[1];\n var checkUpdate = useCallback(function () {\n if (typeof currentVersion === 'undefined') {\n setStatus(UpdateStatus.current);\n return;\n }\n setStatus(UpdateStatus.checking);\n var requestStr = \"/\".concat(window.__APP_VERSION_FILE__);\n if (ignoreServerCache) {\n requestStr += \"?v=\".concat(Date.now());\n }\n fetch(requestStr)\n .then(function (res) { return res.json(); })\n .then(function (data) {\n if (data.version === currentVersion) {\n setStatus(UpdateStatus.current);\n }\n else {\n setStatus(UpdateStatus.available);\n }\n })\n .catch(function () {\n setStatus(UpdateStatus.current);\n });\n }, [ignoreServerCache]);\n useEffect(function () {\n if (type !== 'manual') {\n checkUpdate();\n }\n }, [checkUpdate, type]);\n useEffect(function () {\n if (status !== UpdateStatus.current) {\n return;\n }\n if (type === 'interval') {\n var timeoutId_1 = window.setTimeout(function () { return checkUpdate(); }, interval || 10000);\n return function () {\n window.clearTimeout(timeoutId_1);\n };\n }\n }, [type, interval, status, checkUpdate]);\n return { status: status, reloadPage: reloadPage, checkUpdate: checkUpdate };\n};\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","/**\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<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\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","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array<ResizeObserverSPI>}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the <html> itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","const htmlparser = require('htmlparser2');\nconst escapeStringRegexp = require('escape-string-regexp');\nconst { isPlainObject } = require('is-plain-object');\nconst deepmerge = require('deepmerge');\nconst parseSrcset = require('parse-srcset');\nconst { parse: postcssParse } = require('postcss');\n// Tags that can conceivably represent stand-alone media.\nconst mediaTags = [\n 'img', 'audio', 'video', 'picture', 'svg',\n 'object', 'map', 'iframe', 'embed'\n];\n// Tags that are inherently vulnerable to being used in XSS attacks.\nconst vulnerableTags = [ 'script', 'style' ];\n\nfunction each(obj, cb) {\n if (obj) {\n Object.keys(obj).forEach(function (key) {\n cb(obj[key], key);\n });\n }\n}\n\n// Avoid false positives with .__proto__, .hasOwnProperty, etc.\nfunction has(obj, key) {\n return ({}).hasOwnProperty.call(obj, key);\n}\n\n// Returns those elements of `a` for which `cb(a)` returns truthy\nfunction filter(a, cb) {\n const n = [];\n each(a, function(v) {\n if (cb(v)) {\n n.push(v);\n }\n });\n return n;\n}\n\nfunction isEmptyObject(obj) {\n for (const key in obj) {\n if (has(obj, key)) {\n return false;\n }\n }\n return true;\n}\n\nfunction stringifySrcset(parsedSrcset) {\n return parsedSrcset.map(function(part) {\n if (!part.url) {\n throw new Error('URL missing');\n }\n\n return (\n part.url +\n (part.w ? ` ${part.w}w` : '') +\n (part.h ? ` ${part.h}h` : '') +\n (part.d ? ` ${part.d}x` : '')\n );\n }).join(', ');\n}\n\nmodule.exports = sanitizeHtml;\n\n// A valid attribute name.\n// We use a tolerant definition based on the set of strings defined by\n// html.spec.whatwg.org/multipage/parsing.html#before-attribute-name-state\n// and html.spec.whatwg.org/multipage/parsing.html#attribute-name-state .\n// The characters accepted are ones which can be appended to the attribute\n// name buffer without triggering a parse error:\n// * unexpected-equals-sign-before-attribute-name\n// * unexpected-null-character\n// * unexpected-character-in-attribute-name\n// We exclude the empty string because it's impossible to get to the after\n// attribute name state with an empty attribute name buffer.\nconst VALID_HTML_ATTRIBUTE_NAME = /^[^\\0\\t\\n\\f\\r /<=>]+$/;\n\n// Ignore the _recursing flag; it's there for recursive\n// invocation as a guard against this exploit:\n// https://github.com/fb55/htmlparser2/issues/105\n\nfunction sanitizeHtml(html, options, _recursing) {\n if (html == null) {\n return '';\n }\n if (typeof html === 'number') {\n html = html.toString();\n }\n\n let result = '';\n // Used for hot swapping the result variable with an empty string in order to \"capture\" the text written to it.\n let tempResult = '';\n\n function Frame(tag, attribs) {\n const that = this;\n this.tag = tag;\n this.attribs = attribs || {};\n this.tagPosition = result.length;\n this.text = ''; // Node inner text\n this.mediaChildren = [];\n\n this.updateParentNodeText = function() {\n if (stack.length) {\n const parentFrame = stack[stack.length - 1];\n parentFrame.text += that.text;\n }\n };\n\n this.updateParentNodeMediaChildren = function() {\n if (stack.length && mediaTags.includes(this.tag)) {\n const parentFrame = stack[stack.length - 1];\n parentFrame.mediaChildren.push(this.tag);\n }\n };\n }\n\n options = Object.assign({}, sanitizeHtml.defaults, options);\n options.parser = Object.assign({}, htmlParserDefaults, options.parser);\n\n const tagAllowed = function (name) {\n return options.allowedTags === false || (options.allowedTags || []).indexOf(name) > -1;\n };\n\n // vulnerableTags\n vulnerableTags.forEach(function (tag) {\n if (tagAllowed(tag) && !options.allowVulnerableTags) {\n console.warn(`\\n\\n⚠️ Your \\`allowedTags\\` option includes, \\`${tag}\\`, which is inherently\\nvulnerable to XSS attacks. Please remove it from \\`allowedTags\\`.\\nOr, to disable this warning, add the \\`allowVulnerableTags\\` option\\nand ensure you are accounting for this risk.\\n\\n`);\n }\n });\n\n // Tags that contain something other than HTML, or where discarding\n // the text when the tag is disallowed makes sense for other reasons.\n // If we are not allowing these tags, we should drop their content too.\n // For other tags you would drop the tag but keep its content.\n const nonTextTagsArray = options.nonTextTags || [\n 'script',\n 'style',\n 'textarea',\n 'option'\n ];\n let allowedAttributesMap;\n let allowedAttributesGlobMap;\n if (options.allowedAttributes) {\n allowedAttributesMap = {};\n allowedAttributesGlobMap = {};\n each(options.allowedAttributes, function(attributes, tag) {\n allowedAttributesMap[tag] = [];\n const globRegex = [];\n attributes.forEach(function(obj) {\n if (typeof obj === 'string' && obj.indexOf('*') >= 0) {\n globRegex.push(escapeStringRegexp(obj).replace(/\\\\\\*/g, '.*'));\n } else {\n allowedAttributesMap[tag].push(obj);\n }\n });\n if (globRegex.length) {\n allowedAttributesGlobMap[tag] = new RegExp('^(' + globRegex.join('|') + ')$');\n }\n });\n }\n const allowedClassesMap = {};\n const allowedClassesGlobMap = {};\n const allowedClassesRegexMap = {};\n each(options.allowedClasses, function(classes, tag) {\n // Implicitly allows the class attribute\n if (allowedAttributesMap) {\n if (!has(allowedAttributesMap, tag)) {\n allowedAttributesMap[tag] = [];\n }\n allowedAttributesMap[tag].push('class');\n }\n\n allowedClassesMap[tag] = classes;\n\n if (Array.isArray(classes)) {\n const globRegex = [];\n allowedClassesMap[tag] = [];\n allowedClassesRegexMap[tag] = [];\n classes.forEach(function(obj) {\n if (typeof obj === 'string' && obj.indexOf('*') >= 0) {\n globRegex.push(escapeStringRegexp(obj).replace(/\\\\\\*/g, '.*'));\n } else if (obj instanceof RegExp) {\n allowedClassesRegexMap[tag].push(obj);\n } else {\n allowedClassesMap[tag].push(obj);\n }\n });\n if (globRegex.length) {\n allowedClassesGlobMap[tag] = new RegExp('^(' + globRegex.join('|') + ')$');\n }\n }\n });\n\n const transformTagsMap = {};\n let transformTagsAll;\n each(options.transformTags, function(transform, tag) {\n let transFun;\n if (typeof transform === 'function') {\n transFun = transform;\n } else if (typeof transform === 'string') {\n transFun = sanitizeHtml.simpleTransform(transform);\n }\n if (tag === '*') {\n transformTagsAll = transFun;\n } else {\n transformTagsMap[tag] = transFun;\n }\n });\n\n let depth;\n let stack;\n let skipMap;\n let transformMap;\n let skipText;\n let skipTextDepth;\n let addedText = false;\n\n initializeState();\n\n const parser = new htmlparser.Parser({\n onopentag: function(name, attribs) {\n // If `enforceHtmlBoundary` is `true` and this has found the opening\n // `html` tag, reset the state.\n if (options.enforceHtmlBoundary && name === 'html') {\n initializeState();\n }\n\n if (skipText) {\n skipTextDepth++;\n return;\n }\n const frame = new Frame(name, attribs);\n stack.push(frame);\n\n let skip = false;\n const hasText = !!frame.text;\n let transformedTag;\n if (has(transformTagsMap, name)) {\n transformedTag = transformTagsMap[name](name, attribs);\n\n frame.attribs = attribs = transformedTag.attribs;\n\n if (transformedTag.text !== undefined) {\n frame.innerText = transformedTag.text;\n }\n\n if (name !== transformedTag.tagName) {\n frame.name = name = transformedTag.tagName;\n transformMap[depth] = transformedTag.tagName;\n }\n }\n if (transformTagsAll) {\n transformedTag = transformTagsAll(name, attribs);\n\n frame.attribs = attribs = transformedTag.attribs;\n if (name !== transformedTag.tagName) {\n frame.name = name = transformedTag.tagName;\n transformMap[depth] = transformedTag.tagName;\n }\n }\n\n if (!tagAllowed(name) || (options.disallowedTagsMode === 'recursiveEscape' && !isEmptyObject(skipMap)) || (options.nestingLimit != null && depth >= options.nestingLimit)) {\n skip = true;\n skipMap[depth] = true;\n if (options.disallowedTagsMode === 'discard') {\n if (nonTextTagsArray.indexOf(name) !== -1) {\n skipText = true;\n skipTextDepth = 1;\n }\n }\n skipMap[depth] = true;\n }\n depth++;\n if (skip) {\n if (options.disallowedTagsMode === 'discard') {\n // We want the contents but not this tag\n return;\n }\n tempResult = result;\n result = '';\n }\n result += '<' + name;\n\n if (name === 'script') {\n if (options.allowedScriptHostnames || options.allowedScriptDomains) {\n frame.innerText = '';\n }\n }\n\n if (!allowedAttributesMap || has(allowedAttributesMap, name) || allowedAttributesMap['*']) {\n each(attribs, function(value, a) {\n if (!VALID_HTML_ATTRIBUTE_NAME.test(a)) {\n // This prevents part of an attribute name in the output from being\n // interpreted as the end of an attribute, or end of a tag.\n delete frame.attribs[a];\n return;\n }\n // If the value is empty, check if the attribute is in the allowedEmptyAttributes array.\n // If it is not in the allowedEmptyAttributes array, and it is a known non-boolean attribute, delete it\n // List taken from https://html.spec.whatwg.org/multipage/indices.html#attributes-3\n if (value === '' && (!options.allowedEmptyAttributes.includes(a)) &&\n (options.nonBooleanAttributes.includes(a) || options.nonBooleanAttributes.includes('*'))) {\n delete frame.attribs[a];\n return;\n }\n // check allowedAttributesMap for the element and attribute and modify the value\n // as necessary if there are specific values defined.\n let passedAllowedAttributesMapCheck = false;\n if (!allowedAttributesMap ||\n (has(allowedAttributesMap, name) && allowedAttributesMap[name].indexOf(a) !== -1) ||\n (allowedAttributesMap['*'] && allowedAttributesMap['*'].indexOf(a) !== -1) ||\n (has(allowedAttributesGlobMap, name) && allowedAttributesGlobMap[name].test(a)) ||\n (allowedAttributesGlobMap['*'] && allowedAttributesGlobMap['*'].test(a))) {\n passedAllowedAttributesMapCheck = true;\n } else if (allowedAttributesMap && allowedAttributesMap[name]) {\n for (const o of allowedAttributesMap[name]) {\n if (isPlainObject(o) && o.name && (o.name === a)) {\n passedAllowedAttributesMapCheck = true;\n let newValue = '';\n if (o.multiple === true) {\n // verify the values that are allowed\n const splitStrArray = value.split(' ');\n for (const s of splitStrArray) {\n if (o.values.indexOf(s) !== -1) {\n if (newValue === '') {\n newValue = s;\n } else {\n newValue += ' ' + s;\n }\n }\n }\n } else if (o.values.indexOf(value) >= 0) {\n // verified an allowed value matches the entire attribute value\n newValue = value;\n }\n value = newValue;\n }\n }\n }\n if (passedAllowedAttributesMapCheck) {\n if (options.allowedSchemesAppliedToAttributes.indexOf(a) !== -1) {\n if (naughtyHref(name, value)) {\n delete frame.attribs[a];\n return;\n }\n }\n\n if (name === 'script' && a === 'src') {\n\n let allowed = true;\n\n try {\n const parsed = parseUrl(value);\n\n if (options.allowedScriptHostnames || options.allowedScriptDomains) {\n const allowedHostname = (options.allowedScriptHostnames || []).find(function (hostname) {\n return hostname === parsed.url.hostname;\n });\n const allowedDomain = (options.allowedScriptDomains || []).find(function(domain) {\n return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);\n });\n allowed = allowedHostname || allowedDomain;\n }\n } catch (e) {\n allowed = false;\n }\n\n if (!allowed) {\n delete frame.attribs[a];\n return;\n }\n }\n\n if (name === 'iframe' && a === 'src') {\n let allowed = true;\n try {\n const parsed = parseUrl(value);\n\n if (parsed.isRelativeUrl) {\n // default value of allowIframeRelativeUrls is true\n // unless allowedIframeHostnames or allowedIframeDomains specified\n allowed = has(options, 'allowIframeRelativeUrls')\n ? options.allowIframeRelativeUrls\n : (!options.allowedIframeHostnames && !options.allowedIframeDomains);\n } else if (options.allowedIframeHostnames || options.allowedIframeDomains) {\n const allowedHostname = (options.allowedIframeHostnames || []).find(function (hostname) {\n return hostname === parsed.url.hostname;\n });\n const allowedDomain = (options.allowedIframeDomains || []).find(function(domain) {\n return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);\n });\n allowed = allowedHostname || allowedDomain;\n }\n } catch (e) {\n // Unparseable iframe src\n allowed = false;\n }\n if (!allowed) {\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'srcset') {\n try {\n let parsed = parseSrcset(value);\n parsed.forEach(function(value) {\n if (naughtyHref('srcset', value.url)) {\n value.evil = true;\n }\n });\n parsed = filter(parsed, function(v) {\n return !v.evil;\n });\n if (!parsed.length) {\n delete frame.attribs[a];\n return;\n } else {\n value = stringifySrcset(filter(parsed, function(v) {\n return !v.evil;\n }));\n frame.attribs[a] = value;\n }\n } catch (e) {\n // Unparseable srcset\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'class') {\n const allowedSpecificClasses = allowedClassesMap[name];\n const allowedWildcardClasses = allowedClassesMap['*'];\n const allowedSpecificClassesGlob = allowedClassesGlobMap[name];\n const allowedSpecificClassesRegex = allowedClassesRegexMap[name];\n const allowedWildcardClassesGlob = allowedClassesGlobMap['*'];\n const allowedClassesGlobs = [\n allowedSpecificClassesGlob,\n allowedWildcardClassesGlob\n ]\n .concat(allowedSpecificClassesRegex)\n .filter(function (t) {\n return t;\n });\n if (allowedSpecificClasses && allowedWildcardClasses) {\n value = filterClasses(value, deepmerge(allowedSpecificClasses, allowedWildcardClasses), allowedClassesGlobs);\n } else {\n value = filterClasses(value, allowedSpecificClasses || allowedWildcardClasses, allowedClassesGlobs);\n }\n if (!value.length) {\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'style') {\n if (options.parseStyleAttributes) {\n try {\n const abstractSyntaxTree = postcssParse(name + ' {' + value + '}', { map: false });\n const filteredAST = filterCss(abstractSyntaxTree, options.allowedStyles);\n\n value = stringifyStyleAttributes(filteredAST);\n\n if (value.length === 0) {\n delete frame.attribs[a];\n return;\n }\n } catch (e) {\n if (typeof window !== 'undefined') {\n console.warn('Failed to parse \"' + name + ' {' + value + '}' + '\", If you\\'re running this in a browser, we recommend to disable style parsing: options.parseStyleAttributes: false, since this only works in a node environment due to a postcss dependency, More info: https://github.com/apostrophecms/sanitize-html/issues/547');\n }\n delete frame.attribs[a];\n return;\n }\n } else if (options.allowedStyles) {\n throw new Error('allowedStyles option cannot be used together with parseStyleAttributes: false.');\n }\n }\n result += ' ' + a;\n if (value && value.length) {\n result += '=\"' + escapeHtml(value, true) + '\"';\n } else if (options.allowedEmptyAttributes.includes(a)) {\n result += '=\"\"';\n }\n } else {\n delete frame.attribs[a];\n }\n });\n }\n if (options.selfClosing.indexOf(name) !== -1) {\n result += ' />';\n } else {\n result += '>';\n if (frame.innerText && !hasText && !options.textFilter) {\n result += escapeHtml(frame.innerText);\n addedText = true;\n }\n }\n if (skip) {\n result = tempResult + escapeHtml(result);\n tempResult = '';\n }\n },\n ontext: function(text) {\n if (skipText) {\n return;\n }\n const lastFrame = stack[stack.length - 1];\n let tag;\n\n if (lastFrame) {\n tag = lastFrame.tag;\n // If inner text was set by transform function then let's use it\n text = lastFrame.innerText !== undefined ? lastFrame.innerText : text;\n }\n\n if (options.disallowedTagsMode === 'discard' && ((tag === 'script') || (tag === 'style'))) {\n // htmlparser2 gives us these as-is. Escaping them ruins the content. Allowing\n // script tags is, by definition, game over for XSS protection, so if that's\n // your concern, don't allow them. The same is essentially true for style tags\n // which have their own collection of XSS vectors.\n result += text;\n } else {\n const escaped = escapeHtml(text, false);\n if (options.textFilter && !addedText) {\n result += options.textFilter(escaped, tag);\n } else if (!addedText) {\n result += escaped;\n }\n }\n if (stack.length) {\n const frame = stack[stack.length - 1];\n frame.text += text;\n }\n },\n onclosetag: function(name, isImplied) {\n\n if (skipText) {\n skipTextDepth--;\n if (!skipTextDepth) {\n skipText = false;\n } else {\n return;\n }\n }\n\n const frame = stack.pop();\n if (!frame) {\n // Do not crash on bad markup\n return;\n }\n\n if (frame.tag !== name) {\n // Another case of bad markup.\n // Push to stack, so that it will be used in future closing tags.\n stack.push(frame);\n return;\n }\n\n skipText = options.enforceHtmlBoundary ? name === 'html' : false;\n depth--;\n const skip = skipMap[depth];\n if (skip) {\n delete skipMap[depth];\n if (options.disallowedTagsMode === 'discard') {\n frame.updateParentNodeText();\n return;\n }\n tempResult = result;\n result = '';\n }\n\n if (transformMap[depth]) {\n name = transformMap[depth];\n delete transformMap[depth];\n }\n\n if (options.exclusiveFilter && options.exclusiveFilter(frame)) {\n result = result.substr(0, frame.tagPosition);\n return;\n }\n\n frame.updateParentNodeMediaChildren();\n frame.updateParentNodeText();\n\n if (\n // Already output />\n options.selfClosing.indexOf(name) !== -1 ||\n // Escaped tag, closing tag is implied\n (isImplied && !tagAllowed(name) && [ 'escape', 'recursiveEscape' ].indexOf(options.disallowedTagsMode) >= 0)\n ) {\n if (skip) {\n result = tempResult;\n tempResult = '';\n }\n return;\n }\n\n result += '</' + name + '>';\n if (skip) {\n result = tempResult + escapeHtml(result);\n tempResult = '';\n }\n addedText = false;\n }\n }, options.parser);\n parser.write(html);\n parser.end();\n\n return result;\n\n function initializeState() {\n result = '';\n depth = 0;\n stack = [];\n skipMap = {};\n transformMap = {};\n skipText = false;\n skipTextDepth = 0;\n }\n\n function escapeHtml(s, quote) {\n if (typeof (s) !== 'string') {\n s = s + '';\n }\n if (options.parser.decodeEntities) {\n s = s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n if (quote) {\n s = s.replace(/\"/g, '"');\n }\n }\n // TODO: this is inadequate because it will pass `&0;`. This approach\n // will not work, each & must be considered with regard to whether it\n // is followed by a 100% syntactically valid entity or not, and escaped\n // if it is not. If this bothers you, don't set parser.decodeEntities\n // to false. (The default is true.)\n s = s.replace(/&(?![a-zA-Z0-9#]{1,20};)/g, '&') // Match ampersands not part of existing HTML entity\n .replace(/</g, '<')\n .replace(/>/g, '>');\n if (quote) {\n s = s.replace(/\"/g, '"');\n }\n return s;\n }\n\n function naughtyHref(name, href) {\n // Browsers ignore character codes of 32 (space) and below in a surprising\n // number of situations. Start reading here:\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#Embedded_tab\n // eslint-disable-next-line no-control-regex\n href = href.replace(/[\\x00-\\x20]+/g, '');\n // Clobber any comments in URLs, which the browser might\n // interpret inside an XML data island, allowing\n // a javascript: URL to be snuck through\n while (true) {\n const firstIndex = href.indexOf('<!--');\n if (firstIndex === -1) {\n break;\n }\n const lastIndex = href.indexOf('-->', firstIndex + 4);\n if (lastIndex === -1) {\n break;\n }\n href = href.substring(0, firstIndex) + href.substring(lastIndex + 3);\n }\n // Case insensitive so we don't get faked out by JAVASCRIPT #1\n // Allow more characters after the first so we don't get faked\n // out by certain schemes browsers accept\n const matches = href.match(/^([a-zA-Z][a-zA-Z0-9.\\-+]*):/);\n if (!matches) {\n // Protocol-relative URL starting with any combination of '/' and '\\'\n if (href.match(/^[/\\\\]{2}/)) {\n return !options.allowProtocolRelative;\n }\n\n // No scheme\n return false;\n }\n const scheme = matches[1].toLowerCase();\n\n if (has(options.allowedSchemesByTag, name)) {\n return options.allowedSchemesByTag[name].indexOf(scheme) === -1;\n }\n\n return !options.allowedSchemes || options.allowedSchemes.indexOf(scheme) === -1;\n }\n\n function parseUrl(value) {\n value = value.replace(/^(\\w+:)?\\s*[\\\\/]\\s*[\\\\/]/, '$1//');\n if (value.startsWith('relative:')) {\n // An attempt to exploit our workaround for base URLs being\n // mandatory for relative URL validation in the WHATWG\n // URL parser, reject it\n throw new Error('relative: exploit attempt');\n }\n // naughtyHref is in charge of whether protocol relative URLs\n // are cool. Here we are concerned just with allowed hostnames and\n // whether to allow relative URLs.\n //\n // Build a placeholder \"base URL\" against which any reasonable\n // relative URL may be parsed successfully\n let base = 'relative://relative-site';\n for (let i = 0; (i < 100); i++) {\n base += `/${i}`;\n }\n\n const parsed = new URL(value, base);\n\n const isRelativeUrl = parsed && parsed.hostname === 'relative-site' && parsed.protocol === 'relative:';\n return {\n isRelativeUrl,\n url: parsed\n };\n }\n /**\n * Filters user input css properties by allowlisted regex attributes.\n * Modifies the abstractSyntaxTree object.\n *\n * @param {object} abstractSyntaxTree - Object representation of CSS attributes.\n * @property {array[Declaration]} abstractSyntaxTree.nodes[0] - Each object cointains prop and value key, i.e { prop: 'color', value: 'red' }.\n * @param {object} allowedStyles - Keys are properties (i.e color), value is list of permitted regex rules (i.e /green/i).\n * @return {object} - The modified tree.\n */\n function filterCss(abstractSyntaxTree, allowedStyles) {\n if (!allowedStyles) {\n return abstractSyntaxTree;\n }\n\n const astRules = abstractSyntaxTree.nodes[0];\n let selectedRule;\n\n // Merge global and tag-specific styles into new AST.\n if (allowedStyles[astRules.selector] && allowedStyles['*']) {\n selectedRule = deepmerge(\n allowedStyles[astRules.selector],\n allowedStyles['*']\n );\n } else {\n selectedRule = allowedStyles[astRules.selector] || allowedStyles['*'];\n }\n\n if (selectedRule) {\n abstractSyntaxTree.nodes[0].nodes = astRules.nodes.reduce(filterDeclarations(selectedRule), []);\n }\n\n return abstractSyntaxTree;\n }\n\n /**\n * Extracts the style attributes from an AbstractSyntaxTree and formats those\n * values in the inline style attribute format.\n *\n * @param {AbstractSyntaxTree} filteredAST\n * @return {string} - Example: \"color:yellow;text-align:center !important;font-family:helvetica;\"\n */\n function stringifyStyleAttributes(filteredAST) {\n return filteredAST.nodes[0].nodes\n .reduce(function(extractedAttributes, attrObject) {\n extractedAttributes.push(\n `${attrObject.prop}:${attrObject.value}${attrObject.important ? ' !important' : ''}`\n );\n return extractedAttributes;\n }, [])\n .join(';');\n }\n\n /**\n * Filters the existing attributes for the given property. Discards any attributes\n * which don't match the allowlist.\n *\n * @param {object} selectedRule - Example: { color: red, font-family: helvetica }\n * @param {array} allowedDeclarationsList - List of declarations which pass the allowlist.\n * @param {object} attributeObject - Object representing the current css property.\n * @property {string} attributeObject.type - Typically 'declaration'.\n * @property {string} attributeObject.prop - The CSS property, i.e 'color'.\n * @property {string} attributeObject.value - The corresponding value to the css property, i.e 'red'.\n * @return {function} - When used in Array.reduce, will return an array of Declaration objects\n */\n function filterDeclarations(selectedRule) {\n return function (allowedDeclarationsList, attributeObject) {\n // If this property is allowlisted...\n if (has(selectedRule, attributeObject.prop)) {\n const matchesRegex = selectedRule[attributeObject.prop].some(function(regularExpression) {\n return regularExpression.test(attributeObject.value);\n });\n\n if (matchesRegex) {\n allowedDeclarationsList.push(attributeObject);\n }\n }\n return allowedDeclarationsList;\n };\n }\n\n function filterClasses(classes, allowed, allowedGlobs) {\n if (!allowed) {\n // The class attribute is allowed without filtering on this tag\n return classes;\n }\n classes = classes.split(/\\s+/);\n return classes.filter(function(clss) {\n return allowed.indexOf(clss) !== -1 || allowedGlobs.some(function(glob) {\n return glob.test(clss);\n });\n }).join(' ');\n }\n}\n\n// Defaults are accessible to you so that you can use them as a starting point\n// programmatically if you wish\n\nconst htmlParserDefaults = {\n decodeEntities: true\n};\nsanitizeHtml.defaults = {\n allowedTags: [\n // Sections derived from MDN element categories and limited to the more\n // benign categories.\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element\n // Content sectioning\n 'address', 'article', 'aside', 'footer', 'header',\n 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hgroup',\n 'main', 'nav', 'section',\n // Text content\n 'blockquote', 'dd', 'div', 'dl', 'dt', 'figcaption', 'figure',\n 'hr', 'li', 'main', 'ol', 'p', 'pre', 'ul',\n // Inline text semantics\n 'a', 'abbr', 'b', 'bdi', 'bdo', 'br', 'cite', 'code', 'data', 'dfn',\n 'em', 'i', 'kbd', 'mark', 'q',\n 'rb', 'rp', 'rt', 'rtc', 'ruby',\n 's', 'samp', 'small', 'span', 'strong', 'sub', 'sup', 'time', 'u', 'var', 'wbr',\n // Table content\n 'caption', 'col', 'colgroup', 'table', 'tbody', 'td', 'tfoot', 'th',\n 'thead', 'tr'\n ],\n // Tags that cannot be boolean\n nonBooleanAttributes: [\n 'abbr', 'accept', 'accept-charset', 'accesskey', 'action',\n 'allow', 'alt', 'as', 'autocapitalize', 'autocomplete',\n 'blocking', 'charset', 'cite', 'class', 'color', 'cols',\n 'colspan', 'content', 'contenteditable', 'coords', 'crossorigin',\n 'data', 'datetime', 'decoding', 'dir', 'dirname', 'download',\n 'draggable', 'enctype', 'enterkeyhint', 'fetchpriority', 'for',\n 'form', 'formaction', 'formenctype', 'formmethod', 'formtarget',\n 'headers', 'height', 'hidden', 'high', 'href', 'hreflang',\n 'http-equiv', 'id', 'imagesizes', 'imagesrcset', 'inputmode',\n 'integrity', 'is', 'itemid', 'itemprop', 'itemref', 'itemtype',\n 'kind', 'label', 'lang', 'list', 'loading', 'low', 'max',\n 'maxlength', 'media', 'method', 'min', 'minlength', 'name',\n 'nonce', 'optimum', 'pattern', 'ping', 'placeholder', 'popover',\n 'popovertarget', 'popovertargetaction', 'poster', 'preload',\n 'referrerpolicy', 'rel', 'rows', 'rowspan', 'sandbox', 'scope',\n 'shape', 'size', 'sizes', 'slot', 'span', 'spellcheck', 'src',\n 'srcdoc', 'srclang', 'srcset', 'start', 'step', 'style',\n 'tabindex', 'target', 'title', 'translate', 'type', 'usemap',\n 'value', 'width', 'wrap',\n // Event handlers\n 'onauxclick', 'onafterprint', 'onbeforematch', 'onbeforeprint',\n 'onbeforeunload', 'onbeforetoggle', 'onblur', 'oncancel',\n 'oncanplay', 'oncanplaythrough', 'onchange', 'onclick', 'onclose',\n 'oncontextlost', 'oncontextmenu', 'oncontextrestored', 'oncopy',\n 'oncuechange', 'oncut', 'ondblclick', 'ondrag', 'ondragend',\n 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart',\n 'ondrop', 'ondurationchange', 'onemptied', 'onended',\n 'onerror', 'onfocus', 'onformdata', 'onhashchange', 'oninput',\n 'oninvalid', 'onkeydown', 'onkeypress', 'onkeyup',\n 'onlanguagechange', 'onload', 'onloadeddata', 'onloadedmetadata',\n 'onloadstart', 'onmessage', 'onmessageerror', 'onmousedown',\n 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout',\n 'onmouseover', 'onmouseup', 'onoffline', 'ononline', 'onpagehide',\n 'onpageshow', 'onpaste', 'onpause', 'onplay', 'onplaying',\n 'onpopstate', 'onprogress', 'onratechange', 'onreset', 'onresize',\n 'onrejectionhandled', 'onscroll', 'onscrollend',\n 'onsecuritypolicyviolation', 'onseeked', 'onseeking', 'onselect',\n 'onslotchange', 'onstalled', 'onstorage', 'onsubmit', 'onsuspend',\n 'ontimeupdate', 'ontoggle', 'onunhandledrejection', 'onunload',\n 'onvolumechange', 'onwaiting', 'onwheel'\n ],\n disallowedTagsMode: 'discard',\n allowedAttributes: {\n a: [ 'href', 'name', 'target' ],\n // We don't currently allow img itself by default, but\n // these attributes would make sense if we did.\n img: [ 'src', 'srcset', 'alt', 'title', 'width', 'height', 'loading' ]\n },\n allowedEmptyAttributes: [\n 'alt'\n ],\n // Lots of these won't come up by default because we don't allow them\n selfClosing: [ 'img', 'br', 'hr', 'area', 'base', 'basefont', 'input', 'link', 'meta' ],\n // URL schemes we permit\n allowedSchemes: [ 'http', 'https', 'ftp', 'mailto', 'tel' ],\n allowedSchemesByTag: {},\n allowedSchemesAppliedToAttributes: [ 'href', 'src', 'cite' ],\n allowProtocolRelative: true,\n enforceHtmlBoundary: false,\n parseStyleAttributes: true\n};\n\nsanitizeHtml.simpleTransform = function(newTagName, newAttribs, merge) {\n merge = (merge === undefined) ? true : merge;\n newAttribs = newAttribs || {};\n\n return function(tagName, attribs) {\n let attrib;\n if (merge) {\n for (attrib in newAttribs) {\n attribs[attrib] = newAttribs[attrib];\n }\n } else {\n attribs = newAttribs;\n }\n\n return {\n tagName: newTagName,\n attribs: attribs\n };\n };\n};\n","'use strict';\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a \\unnnn escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n};\n","/**\n * @license React\n * scheduler.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';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(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()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(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","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","/**\n * Created by Tivie on 13-07-2015.\n */\n\nfunction getDefaultOpts (simple) {\n 'use strict';\n\n var defaultOptions = {\n omitExtraWLInCodeBlocks: {\n defaultValue: false,\n describe: 'Omit the default extra whiteline added to code blocks',\n type: 'boolean'\n },\n noHeaderId: {\n defaultValue: false,\n describe: 'Turn on/off generated header id',\n type: 'boolean'\n },\n prefixHeaderId: {\n defaultValue: false,\n describe: 'Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic \\'section-\\' prefix',\n type: 'string'\n },\n rawPrefixHeaderId: {\n defaultValue: false,\n describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the \" char is used in the prefix)',\n type: 'boolean'\n },\n ghCompatibleHeaderId: {\n defaultValue: false,\n describe: 'Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)',\n type: 'boolean'\n },\n rawHeaderId: {\n defaultValue: false,\n describe: 'Remove only spaces, \\' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids',\n type: 'boolean'\n },\n headerLevelStart: {\n defaultValue: false,\n describe: 'The header blocks level start',\n type: 'integer'\n },\n parseImgDimensions: {\n defaultValue: false,\n describe: 'Turn on/off image dimension parsing',\n type: 'boolean'\n },\n simplifiedAutoLink: {\n defaultValue: false,\n describe: 'Turn on/off GFM autolink style',\n type: 'boolean'\n },\n excludeTrailingPunctuationFromURLs: {\n defaultValue: false,\n describe: 'Excludes trailing punctuation from links generated with autoLinking',\n type: 'boolean'\n },\n literalMidWordUnderscores: {\n defaultValue: false,\n describe: 'Parse midword underscores as literal underscores',\n type: 'boolean'\n },\n literalMidWordAsterisks: {\n defaultValue: false,\n describe: 'Parse midword asterisks as literal asterisks',\n type: 'boolean'\n },\n strikethrough: {\n defaultValue: false,\n describe: 'Turn on/off strikethrough support',\n type: 'boolean'\n },\n tables: {\n defaultValue: false,\n describe: 'Turn on/off tables support',\n type: 'boolean'\n },\n tablesHeaderId: {\n defaultValue: false,\n describe: 'Add an id to table headers',\n type: 'boolean'\n },\n ghCodeBlocks: {\n defaultValue: true,\n describe: 'Turn on/off GFM fenced code blocks support',\n type: 'boolean'\n },\n tasklists: {\n defaultValue: false,\n describe: 'Turn on/off GFM tasklist support',\n type: 'boolean'\n },\n smoothLivePreview: {\n defaultValue: false,\n describe: 'Prevents weird effects in live previews due to incomplete input',\n type: 'boolean'\n },\n smartIndentationFix: {\n defaultValue: false,\n describe: 'Tries to smartly fix indentation in es6 strings',\n type: 'boolean'\n },\n disableForced4SpacesIndentedSublists: {\n defaultValue: false,\n describe: 'Disables the requirement of indenting nested sublists by 4 spaces',\n type: 'boolean'\n },\n simpleLineBreaks: {\n defaultValue: false,\n describe: 'Parses simple line breaks as <br> (GFM Style)',\n type: 'boolean'\n },\n requireSpaceBeforeHeadingText: {\n defaultValue: false,\n describe: 'Makes adding a space between `#` and the header text mandatory (GFM Style)',\n type: 'boolean'\n },\n ghMentions: {\n defaultValue: false,\n describe: 'Enables github @mentions',\n type: 'boolean'\n },\n ghMentionsLink: {\n defaultValue: 'https://github.com/{u}',\n describe: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.',\n type: 'string'\n },\n encodeEmails: {\n defaultValue: true,\n describe: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities',\n type: 'boolean'\n },\n openLinksInNewWindow: {\n defaultValue: false,\n describe: 'Open all links in new windows',\n type: 'boolean'\n },\n backslashEscapesHTMLTags: {\n defaultValue: false,\n describe: 'Support for HTML Tag escaping. ex: \\<div>foo\\</div>',\n type: 'boolean'\n },\n emoji: {\n defaultValue: false,\n describe: 'Enable emoji support. Ex: `this is a :smile: emoji`',\n type: 'boolean'\n },\n underline: {\n defaultValue: false,\n describe: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`',\n type: 'boolean'\n },\n ellipsis: {\n defaultValue: true,\n describe: 'Replaces three dots with the ellipsis unicode character',\n type: 'boolean'\n },\n completeHTMLDocument: {\n defaultValue: false,\n describe: 'Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags',\n type: 'boolean'\n },\n metadata: {\n defaultValue: false,\n describe: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).',\n type: 'boolean'\n },\n splitAdjacentBlockquotes: {\n defaultValue: false,\n describe: 'Split adjacent blockquote blocks',\n type: 'boolean'\n }\n };\n if (simple === false) {\n return JSON.parse(JSON.stringify(defaultOptions));\n }\n var ret = {};\n for (var opt in defaultOptions) {\n if (defaultOptions.hasOwnProperty(opt)) {\n ret[opt] = defaultOptions[opt].defaultValue;\n }\n }\n return ret;\n}\n\nfunction allOptionsOn () {\n 'use strict';\n var options = getDefaultOpts(true),\n ret = {};\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n ret[opt] = true;\n }\n }\n return ret;\n}\n","/**\n * Created by Tivie on 06-01-2015.\n */\n\n// Private properties\nvar showdown = {},\n parsers = {},\n extensions = {},\n globalOptions = getDefaultOpts(true),\n setFlavor = 'vanilla',\n flavor = {\n github: {\n omitExtraWLInCodeBlocks: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n disableForced4SpacesIndentedSublists: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghCompatibleHeaderId: true,\n ghMentions: true,\n backslashEscapesHTMLTags: true,\n emoji: true,\n splitAdjacentBlockquotes: true\n },\n original: {\n noHeaderId: true,\n ghCodeBlocks: false\n },\n ghost: {\n omitExtraWLInCodeBlocks: true,\n parseImgDimensions: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n smoothLivePreview: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghMentions: false,\n encodeEmails: true\n },\n vanilla: getDefaultOpts(true),\n allOn: allOptionsOn()\n };\n\n/**\n * helper namespace\n * @type {{}}\n */\nshowdown.helper = {};\n\n/**\n * TODO LEGACY SUPPORT CODE\n * @type {{}}\n */\nshowdown.extensions = {};\n\n/**\n * Set a global option\n * @static\n * @param {string} key\n * @param {*} value\n * @returns {showdown}\n */\nshowdown.setOption = function (key, value) {\n 'use strict';\n globalOptions[key] = value;\n return this;\n};\n\n/**\n * Get a global option\n * @static\n * @param {string} key\n * @returns {*}\n */\nshowdown.getOption = function (key) {\n 'use strict';\n return globalOptions[key];\n};\n\n/**\n * Get the global options\n * @static\n * @returns {{}}\n */\nshowdown.getOptions = function () {\n 'use strict';\n return globalOptions;\n};\n\n/**\n * Reset global options to the default values\n * @static\n */\nshowdown.resetOptions = function () {\n 'use strict';\n globalOptions = getDefaultOpts(true);\n};\n\n/**\n * Set the flavor showdown should use as default\n * @param {string} name\n */\nshowdown.setFlavor = function (name) {\n 'use strict';\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n showdown.resetOptions();\n var preset = flavor[name];\n setFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n globalOptions[option] = preset[option];\n }\n }\n};\n\n/**\n * Get the currently set flavor\n * @returns {string}\n */\nshowdown.getFlavor = function () {\n 'use strict';\n return setFlavor;\n};\n\n/**\n * Get the options of a specified flavor. Returns undefined if the flavor was not found\n * @param {string} name Name of the flavor\n * @returns {{}|undefined}\n */\nshowdown.getFlavorOptions = function (name) {\n 'use strict';\n if (flavor.hasOwnProperty(name)) {\n return flavor[name];\n }\n};\n\n/**\n * Get the default options\n * @static\n * @param {boolean} [simple=true]\n * @returns {{}}\n */\nshowdown.getDefaultOptions = function (simple) {\n 'use strict';\n return getDefaultOpts(simple);\n};\n\n/**\n * Get or set a subParser\n *\n * subParser(name) - Get a registered subParser\n * subParser(name, func) - Register a subParser\n * @static\n * @param {string} name\n * @param {function} [func]\n * @returns {*}\n */\nshowdown.subParser = function (name, func) {\n 'use strict';\n if (showdown.helper.isString(name)) {\n if (typeof func !== 'undefined') {\n parsers[name] = func;\n } else {\n if (parsers.hasOwnProperty(name)) {\n return parsers[name];\n } else {\n throw Error('SubParser named ' + name + ' not registered!');\n }\n }\n }\n};\n\n/**\n * Gets or registers an extension\n * @static\n * @param {string} name\n * @param {object|object[]|function=} ext\n * @returns {*}\n */\nshowdown.extension = function (name, ext) {\n 'use strict';\n\n if (!showdown.helper.isString(name)) {\n throw Error('Extension \\'name\\' must be a string');\n }\n\n name = showdown.helper.stdExtName(name);\n\n // Getter\n if (showdown.helper.isUndefined(ext)) {\n if (!extensions.hasOwnProperty(name)) {\n throw Error('Extension named ' + name + ' is not registered!');\n }\n return extensions[name];\n\n // Setter\n } else {\n // Expand extension if it's wrapped in a function\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n // Ensure extension is an array\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExtension = validate(ext, name);\n\n if (validExtension.valid) {\n extensions[name] = ext;\n } else {\n throw Error(validExtension.error);\n }\n }\n};\n\n/**\n * Gets all extensions registered\n * @returns {{}}\n */\nshowdown.getAllExtensions = function () {\n 'use strict';\n return extensions;\n};\n\n/**\n * Remove an extension\n * @param {string} name\n */\nshowdown.removeExtension = function (name) {\n 'use strict';\n delete extensions[name];\n};\n\n/**\n * Removes all extensions\n */\nshowdown.resetExtensions = function () {\n 'use strict';\n extensions = {};\n};\n\n/**\n * Validate extension\n * @param {array} extension\n * @param {string} name\n * @returns {{valid: boolean, error: string}}\n */\nfunction validate (extension, name) {\n 'use strict';\n\n var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',\n ret = {\n valid: true,\n error: ''\n };\n\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n\n for (var i = 0; i < extension.length; ++i) {\n var baseMsg = errMsg + ' sub-extension ' + i + ': ',\n ext = extension[i];\n if (typeof ext !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n return ret;\n }\n\n if (!showdown.helper.isString(ext.type)) {\n ret.valid = false;\n ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n return ret;\n }\n\n var type = ext.type = ext.type.toLowerCase();\n\n // normalize extension type\n if (type === 'language') {\n type = ext.type = 'lang';\n }\n\n if (type === 'html') {\n type = ext.type = 'output';\n }\n\n if (type !== 'lang' && type !== 'output' && type !== 'listener') {\n ret.valid = false;\n ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"';\n return ret;\n }\n\n if (type === 'listener') {\n if (showdown.helper.isUndefined(ext.listeners)) {\n ret.valid = false;\n ret.error = baseMsg + '. Extensions of type \"listener\" must have a property called \"listeners\"';\n return ret;\n }\n } else {\n if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n ret.valid = false;\n ret.error = baseMsg + type + ' extensions must define either a \"regex\" property or a \"filter\" method';\n return ret;\n }\n }\n\n if (ext.listeners) {\n if (typeof ext.listeners !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an object but ' + typeof ext.listeners + ' given';\n return ret;\n }\n for (var ln in ext.listeners) {\n if (ext.listeners.hasOwnProperty(ln)) {\n if (typeof ext.listeners[ln] !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an hash of [event name]: [callback]. listeners.' + ln +\n ' must be a function but ' + typeof ext.listeners[ln] + ' given';\n return ret;\n }\n }\n }\n }\n\n if (ext.filter) {\n if (typeof ext.filter !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n return ret;\n }\n } else if (ext.regex) {\n if (showdown.helper.isString(ext.regex)) {\n ext.regex = new RegExp(ext.regex, 'g');\n }\n if (!(ext.regex instanceof RegExp)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given';\n return ret;\n }\n if (showdown.helper.isUndefined(ext.replace)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n return ret;\n }\n }\n }\n return ret;\n}\n\n/**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\nshowdown.validateExtension = function (ext) {\n 'use strict';\n\n var validateExtension = validate(ext, null);\n if (!validateExtension.valid) {\n console.warn(validateExtension.error);\n return false;\n }\n return true;\n};\n","/**\n * showdownjs helper functions\n */\n\nif (!showdown.hasOwnProperty('helper')) {\n showdown.helper = {};\n}\n\n/**\n * Check if var is string\n * @static\n * @param {string} a\n * @returns {boolean}\n */\nshowdown.helper.isString = function (a) {\n 'use strict';\n return (typeof a === 'string' || a instanceof String);\n};\n\n/**\n * Check if var is a function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isFunction = function (a) {\n 'use strict';\n var getType = {};\n return a && getType.toString.call(a) === '[object Function]';\n};\n\n/**\n * isArray helper function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isArray = function (a) {\n 'use strict';\n return Array.isArray(a);\n};\n\n/**\n * Check if value is undefined\n * @static\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n */\nshowdown.helper.isUndefined = function (value) {\n 'use strict';\n return typeof value === 'undefined';\n};\n\n/**\n * ForEach helper function\n * Iterates over Arrays and Objects (own properties only)\n * @static\n * @param {*} obj\n * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object\n */\nshowdown.helper.forEach = function (obj, callback) {\n 'use strict';\n // check if obj is defined\n if (showdown.helper.isUndefined(obj)) {\n throw new Error('obj param is required');\n }\n\n if (showdown.helper.isUndefined(callback)) {\n throw new Error('callback param is required');\n }\n\n if (!showdown.helper.isFunction(callback)) {\n throw new Error('callback param must be a function/closure');\n }\n\n if (typeof obj.forEach === 'function') {\n obj.forEach(callback);\n } else if (showdown.helper.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n callback(obj[i], i, obj);\n }\n } else if (typeof (obj) === 'object') {\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n callback(obj[prop], prop, obj);\n }\n }\n } else {\n throw new Error('obj does not seem to be an array or an iterable object');\n }\n};\n\n/**\n * Standardidize extension name\n * @static\n * @param {string} s extension name\n * @returns {string}\n */\nshowdown.helper.stdExtName = function (s) {\n 'use strict';\n return s.replace(/[_?*+\\/\\\\.^-]/g, '').replace(/\\s/g, '').toLowerCase();\n};\n\nfunction escapeCharactersCallback (wholeMatch, m1) {\n 'use strict';\n var charCodeToEscape = m1.charCodeAt(0);\n return '¨E' + charCodeToEscape + 'E';\n}\n\n/**\n * Callback used to escape characters when passing through String.replace\n * @static\n * @param {string} wholeMatch\n * @param {string} m1\n * @returns {string}\n */\nshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\n\n/**\n * Escape characters in a string\n * @static\n * @param {string} text\n * @param {string} charsToEscape\n * @param {boolean} afterBackslash\n * @returns {XML|string|void|*}\n */\nshowdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash) {\n 'use strict';\n // First we have to escape the escape characters so that\n // we can build a character class out of them\n var regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\n\n if (afterBackslash) {\n regexString = '\\\\\\\\' + regexString;\n }\n\n var regex = new RegExp(regexString, 'g');\n text = text.replace(regex, escapeCharactersCallback);\n\n return text;\n};\n\n/**\n * Unescape HTML entities\n * @param txt\n * @returns {string}\n */\nshowdown.helper.unescapeHTMLEntities = function (txt) {\n 'use strict';\n\n return txt\n .replace(/"/g, '\"')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&');\n};\n\nvar rgxFindMatchPos = function (str, left, right, flags) {\n 'use strict';\n var f = flags || '',\n g = f.indexOf('g') > -1,\n x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')),\n l = new RegExp(left, f.replace(/g/g, '')),\n pos = [],\n t, s, m, start, end;\n\n do {\n t = 0;\n while ((m = x.exec(str))) {\n if (l.test(m[0])) {\n if (!(t++)) {\n s = x.lastIndex;\n start = s - m[0].length;\n }\n } else if (t) {\n if (!--t) {\n end = m.index + m[0].length;\n var obj = {\n left: {start: start, end: s},\n match: {start: s, end: m.index},\n right: {start: m.index, end: end},\n wholeMatch: {start: start, end: end}\n };\n pos.push(obj);\n if (!g) {\n return pos;\n }\n }\n }\n }\n } while (t && (x.lastIndex = s));\n\n return pos;\n};\n\n/**\n * matchRecursiveRegExp\n *\n * (c) 2007 Steven Levithan <stevenlevithan.com>\n * MIT License\n *\n * Accepts a string to search, a left and right format delimiter\n * as regex patterns, and optional regex flags. Returns an array\n * of matches, allowing nested instances of left/right delimiters.\n * Use the \"g\" flag to return all matches, otherwise only the\n * first is returned. Be careful to ensure that the left and\n * right format delimiters produce mutually exclusive matches.\n * Backreferences are not supported within the right delimiter\n * due to how it is internally combined with the left delimiter.\n * When matching strings whose format delimiters are unbalanced\n * to the left or right, the output is intentionally as a\n * conventional regex library with recursion support would\n * produce, e.g. \"<<x>\" and \"<x>>\" both produce [\"x\"] when using\n * \"<\" and \">\" as the delimiters (both strings contain a single,\n * balanced instance of \"<x>\").\n *\n * examples:\n * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n * returns: []\n * matchRecursiveRegExp(\"<t<<e>><s>>t<>\", \"<\", \">\", \"g\")\n * returns: [\"t<<e>><s>\", \"\"]\n * matchRecursiveRegExp(\"<div id=\\\"x\\\">test</div>\", \"<div\\\\b[^>]*>\", \"</div>\", \"gi\")\n * returns: [\"test\"]\n */\nshowdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {\n 'use strict';\n\n var matchPos = rgxFindMatchPos (str, left, right, flags),\n results = [];\n\n for (var i = 0; i < matchPos.length; ++i) {\n results.push([\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n ]);\n }\n return results;\n};\n\n/**\n *\n * @param {string} str\n * @param {string|function} replacement\n * @param {string} left\n * @param {string} right\n * @param {string} flags\n * @returns {string}\n */\nshowdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) {\n 'use strict';\n\n if (!showdown.helper.isFunction(replacement)) {\n var repStr = replacement;\n replacement = function () {\n return repStr;\n };\n }\n\n var matchPos = rgxFindMatchPos(str, left, right, flags),\n finalStr = str,\n lng = matchPos.length;\n\n if (lng > 0) {\n var bits = [];\n if (matchPos[0].wholeMatch.start !== 0) {\n bits.push(str.slice(0, matchPos[0].wholeMatch.start));\n }\n for (var i = 0; i < lng; ++i) {\n bits.push(\n replacement(\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n )\n );\n if (i < lng - 1) {\n bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start));\n }\n }\n if (matchPos[lng - 1].wholeMatch.end < str.length) {\n bits.push(str.slice(matchPos[lng - 1].wholeMatch.end));\n }\n finalStr = bits.join('');\n }\n return finalStr;\n};\n\n/**\n * Returns the index within the passed String object of the first occurrence of the specified regex,\n * starting the search at fromIndex. Returns -1 if the value is not found.\n *\n * @param {string} str string to search\n * @param {RegExp} regex Regular expression to search\n * @param {int} [fromIndex = 0] Index to start the search\n * @returns {Number}\n * @throws InvalidArgumentError\n */\nshowdown.helper.regexIndexOf = function (str, regex, fromIndex) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n if (regex instanceof RegExp === false) {\n throw 'InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp';\n }\n var indexOf = str.substring(fromIndex || 0).search(regex);\n return (indexOf >= 0) ? (indexOf + (fromIndex || 0)) : indexOf;\n};\n\n/**\n * Splits the passed string object at the defined index, and returns an array composed of the two substrings\n * @param {string} str string to split\n * @param {int} index index to split string at\n * @returns {[string,string]}\n * @throws InvalidArgumentError\n */\nshowdown.helper.splitAtIndex = function (str, index) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n return [str.substring(0, index), str.substring(index)];\n};\n\n/**\n * Obfuscate an e-mail address through the use of Character Entities,\n * transforming ASCII characters into their equivalent decimal or hex entities.\n *\n * Since it has a random component, subsequent calls to this function produce different results\n *\n * @param {string} mail\n * @returns {string}\n */\nshowdown.helper.encodeEmailAddress = function (mail) {\n 'use strict';\n var encode = [\n function (ch) {\n return '&#' + ch.charCodeAt(0) + ';';\n },\n function (ch) {\n return '&#x' + ch.charCodeAt(0).toString(16) + ';';\n },\n function (ch) {\n return ch;\n }\n ];\n\n mail = mail.replace(/./g, function (ch) {\n if (ch === '@') {\n // this *must* be encoded. I insist.\n ch = encode[Math.floor(Math.random() * 2)](ch);\n } else {\n var r = Math.random();\n // roughly 10% raw, 45% hex, 45% dec\n ch = (\n r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)\n );\n }\n return ch;\n });\n\n return mail;\n};\n\n/**\n *\n * @param str\n * @param targetLength\n * @param padString\n * @returns {string}\n */\nshowdown.helper.padEnd = function padEnd (str, targetLength, padString) {\n 'use strict';\n /*jshint bitwise: false*/\n // eslint-disable-next-line space-infix-ops\n targetLength = targetLength>>0; //floor if number or convert non-number to 0;\n /*jshint bitwise: true*/\n padString = String(padString || ' ');\n if (str.length > targetLength) {\n return String(str);\n } else {\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n return String(str) + padString.slice(0,targetLength);\n }\n};\n\n/**\n * POLYFILLS\n */\n// use this instead of builtin is undefined for IE8 compatibility\nif (typeof (console) === 'undefined') {\n console = {\n warn: function (msg) {\n 'use strict';\n alert(msg);\n },\n log: function (msg) {\n 'use strict';\n alert(msg);\n },\n error: function (msg) {\n 'use strict';\n throw msg;\n }\n };\n}\n\n/**\n * Common regexes.\n * We declare some common regexes to improve performance\n */\nshowdown.helper.regexes = {\n asteriskDashAndColon: /([*_:~])/g\n};\n\n/**\n * EMOJIS LIST\n */\nshowdown.helper.emojis = {\n '+1':'\\ud83d\\udc4d',\n '-1':'\\ud83d\\udc4e',\n '100':'\\ud83d\\udcaf',\n '1234':'\\ud83d\\udd22',\n '1st_place_medal':'\\ud83e\\udd47',\n '2nd_place_medal':'\\ud83e\\udd48',\n '3rd_place_medal':'\\ud83e\\udd49',\n '8ball':'\\ud83c\\udfb1',\n 'a':'\\ud83c\\udd70\\ufe0f',\n 'ab':'\\ud83c\\udd8e',\n 'abc':'\\ud83d\\udd24',\n 'abcd':'\\ud83d\\udd21',\n 'accept':'\\ud83c\\ude51',\n 'aerial_tramway':'\\ud83d\\udea1',\n 'airplane':'\\u2708\\ufe0f',\n 'alarm_clock':'\\u23f0',\n 'alembic':'\\u2697\\ufe0f',\n 'alien':'\\ud83d\\udc7d',\n 'ambulance':'\\ud83d\\ude91',\n 'amphora':'\\ud83c\\udffa',\n 'anchor':'\\u2693\\ufe0f',\n 'angel':'\\ud83d\\udc7c',\n 'anger':'\\ud83d\\udca2',\n 'angry':'\\ud83d\\ude20',\n 'anguished':'\\ud83d\\ude27',\n 'ant':'\\ud83d\\udc1c',\n 'apple':'\\ud83c\\udf4e',\n 'aquarius':'\\u2652\\ufe0f',\n 'aries':'\\u2648\\ufe0f',\n 'arrow_backward':'\\u25c0\\ufe0f',\n 'arrow_double_down':'\\u23ec',\n 'arrow_double_up':'\\u23eb',\n 'arrow_down':'\\u2b07\\ufe0f',\n 'arrow_down_small':'\\ud83d\\udd3d',\n 'arrow_forward':'\\u25b6\\ufe0f',\n 'arrow_heading_down':'\\u2935\\ufe0f',\n 'arrow_heading_up':'\\u2934\\ufe0f',\n 'arrow_left':'\\u2b05\\ufe0f',\n 'arrow_lower_left':'\\u2199\\ufe0f',\n 'arrow_lower_right':'\\u2198\\ufe0f',\n 'arrow_right':'\\u27a1\\ufe0f',\n 'arrow_right_hook':'\\u21aa\\ufe0f',\n 'arrow_up':'\\u2b06\\ufe0f',\n 'arrow_up_down':'\\u2195\\ufe0f',\n 'arrow_up_small':'\\ud83d\\udd3c',\n 'arrow_upper_left':'\\u2196\\ufe0f',\n 'arrow_upper_right':'\\u2197\\ufe0f',\n 'arrows_clockwise':'\\ud83d\\udd03',\n 'arrows_counterclockwise':'\\ud83d\\udd04',\n 'art':'\\ud83c\\udfa8',\n 'articulated_lorry':'\\ud83d\\ude9b',\n 'artificial_satellite':'\\ud83d\\udef0',\n 'astonished':'\\ud83d\\ude32',\n 'athletic_shoe':'\\ud83d\\udc5f',\n 'atm':'\\ud83c\\udfe7',\n 'atom_symbol':'\\u269b\\ufe0f',\n 'avocado':'\\ud83e\\udd51',\n 'b':'\\ud83c\\udd71\\ufe0f',\n 'baby':'\\ud83d\\udc76',\n 'baby_bottle':'\\ud83c\\udf7c',\n 'baby_chick':'\\ud83d\\udc24',\n 'baby_symbol':'\\ud83d\\udebc',\n 'back':'\\ud83d\\udd19',\n 'bacon':'\\ud83e\\udd53',\n 'badminton':'\\ud83c\\udff8',\n 'baggage_claim':'\\ud83d\\udec4',\n 'baguette_bread':'\\ud83e\\udd56',\n 'balance_scale':'\\u2696\\ufe0f',\n 'balloon':'\\ud83c\\udf88',\n 'ballot_box':'\\ud83d\\uddf3',\n 'ballot_box_with_check':'\\u2611\\ufe0f',\n 'bamboo':'\\ud83c\\udf8d',\n 'banana':'\\ud83c\\udf4c',\n 'bangbang':'\\u203c\\ufe0f',\n 'bank':'\\ud83c\\udfe6',\n 'bar_chart':'\\ud83d\\udcca',\n 'barber':'\\ud83d\\udc88',\n 'baseball':'\\u26be\\ufe0f',\n 'basketball':'\\ud83c\\udfc0',\n 'basketball_man':'\\u26f9\\ufe0f',\n 'basketball_woman':'\\u26f9\\ufe0f‍\\u2640\\ufe0f',\n 'bat':'\\ud83e\\udd87',\n 'bath':'\\ud83d\\udec0',\n 'bathtub':'\\ud83d\\udec1',\n 'battery':'\\ud83d\\udd0b',\n 'beach_umbrella':'\\ud83c\\udfd6',\n 'bear':'\\ud83d\\udc3b',\n 'bed':'\\ud83d\\udecf',\n 'bee':'\\ud83d\\udc1d',\n 'beer':'\\ud83c\\udf7a',\n 'beers':'\\ud83c\\udf7b',\n 'beetle':'\\ud83d\\udc1e',\n 'beginner':'\\ud83d\\udd30',\n 'bell':'\\ud83d\\udd14',\n 'bellhop_bell':'\\ud83d\\udece',\n 'bento':'\\ud83c\\udf71',\n 'biking_man':'\\ud83d\\udeb4',\n 'bike':'\\ud83d\\udeb2',\n 'biking_woman':'\\ud83d\\udeb4‍\\u2640\\ufe0f',\n 'bikini':'\\ud83d\\udc59',\n 'biohazard':'\\u2623\\ufe0f',\n 'bird':'\\ud83d\\udc26',\n 'birthday':'\\ud83c\\udf82',\n 'black_circle':'\\u26ab\\ufe0f',\n 'black_flag':'\\ud83c\\udff4',\n 'black_heart':'\\ud83d\\udda4',\n 'black_joker':'\\ud83c\\udccf',\n 'black_large_square':'\\u2b1b\\ufe0f',\n 'black_medium_small_square':'\\u25fe\\ufe0f',\n 'black_medium_square':'\\u25fc\\ufe0f',\n 'black_nib':'\\u2712\\ufe0f',\n 'black_small_square':'\\u25aa\\ufe0f',\n 'black_square_button':'\\ud83d\\udd32',\n 'blonde_man':'\\ud83d\\udc71',\n 'blonde_woman':'\\ud83d\\udc71‍\\u2640\\ufe0f',\n 'blossom':'\\ud83c\\udf3c',\n 'blowfish':'\\ud83d\\udc21',\n 'blue_book':'\\ud83d\\udcd8',\n 'blue_car':'\\ud83d\\ude99',\n 'blue_heart':'\\ud83d\\udc99',\n 'blush':'\\ud83d\\ude0a',\n 'boar':'\\ud83d\\udc17',\n 'boat':'\\u26f5\\ufe0f',\n 'bomb':'\\ud83d\\udca3',\n 'book':'\\ud83d\\udcd6',\n 'bookmark':'\\ud83d\\udd16',\n 'bookmark_tabs':'\\ud83d\\udcd1',\n 'books':'\\ud83d\\udcda',\n 'boom':'\\ud83d\\udca5',\n 'boot':'\\ud83d\\udc62',\n 'bouquet':'\\ud83d\\udc90',\n 'bowing_man':'\\ud83d\\ude47',\n 'bow_and_arrow':'\\ud83c\\udff9',\n 'bowing_woman':'\\ud83d\\ude47‍\\u2640\\ufe0f',\n 'bowling':'\\ud83c\\udfb3',\n 'boxing_glove':'\\ud83e\\udd4a',\n 'boy':'\\ud83d\\udc66',\n 'bread':'\\ud83c\\udf5e',\n 'bride_with_veil':'\\ud83d\\udc70',\n 'bridge_at_night':'\\ud83c\\udf09',\n 'briefcase':'\\ud83d\\udcbc',\n 'broken_heart':'\\ud83d\\udc94',\n 'bug':'\\ud83d\\udc1b',\n 'building_construction':'\\ud83c\\udfd7',\n 'bulb':'\\ud83d\\udca1',\n 'bullettrain_front':'\\ud83d\\ude85',\n 'bullettrain_side':'\\ud83d\\ude84',\n 'burrito':'\\ud83c\\udf2f',\n 'bus':'\\ud83d\\ude8c',\n 'business_suit_levitating':'\\ud83d\\udd74',\n 'busstop':'\\ud83d\\ude8f',\n 'bust_in_silhouette':'\\ud83d\\udc64',\n 'busts_in_silhouette':'\\ud83d\\udc65',\n 'butterfly':'\\ud83e\\udd8b',\n 'cactus':'\\ud83c\\udf35',\n 'cake':'\\ud83c\\udf70',\n 'calendar':'\\ud83d\\udcc6',\n 'call_me_hand':'\\ud83e\\udd19',\n 'calling':'\\ud83d\\udcf2',\n 'camel':'\\ud83d\\udc2b',\n 'camera':'\\ud83d\\udcf7',\n 'camera_flash':'\\ud83d\\udcf8',\n 'camping':'\\ud83c\\udfd5',\n 'cancer':'\\u264b\\ufe0f',\n 'candle':'\\ud83d\\udd6f',\n 'candy':'\\ud83c\\udf6c',\n 'canoe':'\\ud83d\\udef6',\n 'capital_abcd':'\\ud83d\\udd20',\n 'capricorn':'\\u2651\\ufe0f',\n 'car':'\\ud83d\\ude97',\n 'card_file_box':'\\ud83d\\uddc3',\n 'card_index':'\\ud83d\\udcc7',\n 'card_index_dividers':'\\ud83d\\uddc2',\n 'carousel_horse':'\\ud83c\\udfa0',\n 'carrot':'\\ud83e\\udd55',\n 'cat':'\\ud83d\\udc31',\n 'cat2':'\\ud83d\\udc08',\n 'cd':'\\ud83d\\udcbf',\n 'chains':'\\u26d3',\n 'champagne':'\\ud83c\\udf7e',\n 'chart':'\\ud83d\\udcb9',\n 'chart_with_downwards_trend':'\\ud83d\\udcc9',\n 'chart_with_upwards_trend':'\\ud83d\\udcc8',\n 'checkered_flag':'\\ud83c\\udfc1',\n 'cheese':'\\ud83e\\uddc0',\n 'cherries':'\\ud83c\\udf52',\n 'cherry_blossom':'\\ud83c\\udf38',\n 'chestnut':'\\ud83c\\udf30',\n 'chicken':'\\ud83d\\udc14',\n 'children_crossing':'\\ud83d\\udeb8',\n 'chipmunk':'\\ud83d\\udc3f',\n 'chocolate_bar':'\\ud83c\\udf6b',\n 'christmas_tree':'\\ud83c\\udf84',\n 'church':'\\u26ea\\ufe0f',\n 'cinema':'\\ud83c\\udfa6',\n 'circus_tent':'\\ud83c\\udfaa',\n 'city_sunrise':'\\ud83c\\udf07',\n 'city_sunset':'\\ud83c\\udf06',\n 'cityscape':'\\ud83c\\udfd9',\n 'cl':'\\ud83c\\udd91',\n 'clamp':'\\ud83d\\udddc',\n 'clap':'\\ud83d\\udc4f',\n 'clapper':'\\ud83c\\udfac',\n 'classical_building':'\\ud83c\\udfdb',\n 'clinking_glasses':'\\ud83e\\udd42',\n 'clipboard':'\\ud83d\\udccb',\n 'clock1':'\\ud83d\\udd50',\n 'clock10':'\\ud83d\\udd59',\n 'clock1030':'\\ud83d\\udd65',\n 'clock11':'\\ud83d\\udd5a',\n 'clock1130':'\\ud83d\\udd66',\n 'clock12':'\\ud83d\\udd5b',\n 'clock1230':'\\ud83d\\udd67',\n 'clock130':'\\ud83d\\udd5c',\n 'clock2':'\\ud83d\\udd51',\n 'clock230':'\\ud83d\\udd5d',\n 'clock3':'\\ud83d\\udd52',\n 'clock330':'\\ud83d\\udd5e',\n 'clock4':'\\ud83d\\udd53',\n 'clock430':'\\ud83d\\udd5f',\n 'clock5':'\\ud83d\\udd54',\n 'clock530':'\\ud83d\\udd60',\n 'clock6':'\\ud83d\\udd55',\n 'clock630':'\\ud83d\\udd61',\n 'clock7':'\\ud83d\\udd56',\n 'clock730':'\\ud83d\\udd62',\n 'clock8':'\\ud83d\\udd57',\n 'clock830':'\\ud83d\\udd63',\n 'clock9':'\\ud83d\\udd58',\n 'clock930':'\\ud83d\\udd64',\n 'closed_book':'\\ud83d\\udcd5',\n 'closed_lock_with_key':'\\ud83d\\udd10',\n 'closed_umbrella':'\\ud83c\\udf02',\n 'cloud':'\\u2601\\ufe0f',\n 'cloud_with_lightning':'\\ud83c\\udf29',\n 'cloud_with_lightning_and_rain':'\\u26c8',\n 'cloud_with_rain':'\\ud83c\\udf27',\n 'cloud_with_snow':'\\ud83c\\udf28',\n 'clown_face':'\\ud83e\\udd21',\n 'clubs':'\\u2663\\ufe0f',\n 'cocktail':'\\ud83c\\udf78',\n 'coffee':'\\u2615\\ufe0f',\n 'coffin':'\\u26b0\\ufe0f',\n 'cold_sweat':'\\ud83d\\ude30',\n 'comet':'\\u2604\\ufe0f',\n 'computer':'\\ud83d\\udcbb',\n 'computer_mouse':'\\ud83d\\uddb1',\n 'confetti_ball':'\\ud83c\\udf8a',\n 'confounded':'\\ud83d\\ude16',\n 'confused':'\\ud83d\\ude15',\n 'congratulations':'\\u3297\\ufe0f',\n 'construction':'\\ud83d\\udea7',\n 'construction_worker_man':'\\ud83d\\udc77',\n 'construction_worker_woman':'\\ud83d\\udc77‍\\u2640\\ufe0f',\n 'control_knobs':'\\ud83c\\udf9b',\n 'convenience_store':'\\ud83c\\udfea',\n 'cookie':'\\ud83c\\udf6a',\n 'cool':'\\ud83c\\udd92',\n 'policeman':'\\ud83d\\udc6e',\n 'copyright':'\\u00a9\\ufe0f',\n 'corn':'\\ud83c\\udf3d',\n 'couch_and_lamp':'\\ud83d\\udecb',\n 'couple':'\\ud83d\\udc6b',\n 'couple_with_heart_woman_man':'\\ud83d\\udc91',\n 'couple_with_heart_man_man':'\\ud83d\\udc68‍\\u2764\\ufe0f‍\\ud83d\\udc68',\n 'couple_with_heart_woman_woman':'\\ud83d\\udc69‍\\u2764\\ufe0f‍\\ud83d\\udc69',\n 'couplekiss_man_man':'\\ud83d\\udc68‍\\u2764\\ufe0f‍\\ud83d\\udc8b‍\\ud83d\\udc68',\n 'couplekiss_man_woman':'\\ud83d\\udc8f',\n 'couplekiss_woman_woman':'\\ud83d\\udc69‍\\u2764\\ufe0f‍\\ud83d\\udc8b‍\\ud83d\\udc69',\n 'cow':'\\ud83d\\udc2e',\n 'cow2':'\\ud83d\\udc04',\n 'cowboy_hat_face':'\\ud83e\\udd20',\n 'crab':'\\ud83e\\udd80',\n 'crayon':'\\ud83d\\udd8d',\n 'credit_card':'\\ud83d\\udcb3',\n 'crescent_moon':'\\ud83c\\udf19',\n 'cricket':'\\ud83c\\udfcf',\n 'crocodile':'\\ud83d\\udc0a',\n 'croissant':'\\ud83e\\udd50',\n 'crossed_fingers':'\\ud83e\\udd1e',\n 'crossed_flags':'\\ud83c\\udf8c',\n 'crossed_swords':'\\u2694\\ufe0f',\n 'crown':'\\ud83d\\udc51',\n 'cry':'\\ud83d\\ude22',\n 'crying_cat_face':'\\ud83d\\ude3f',\n 'crystal_ball':'\\ud83d\\udd2e',\n 'cucumber':'\\ud83e\\udd52',\n 'cupid':'\\ud83d\\udc98',\n 'curly_loop':'\\u27b0',\n 'currency_exchange':'\\ud83d\\udcb1',\n 'curry':'\\ud83c\\udf5b',\n 'custard':'\\ud83c\\udf6e',\n 'customs':'\\ud83d\\udec3',\n 'cyclone':'\\ud83c\\udf00',\n 'dagger':'\\ud83d\\udde1',\n 'dancer':'\\ud83d\\udc83',\n 'dancing_women':'\\ud83d\\udc6f',\n 'dancing_men':'\\ud83d\\udc6f‍\\u2642\\ufe0f',\n 'dango':'\\ud83c\\udf61',\n 'dark_sunglasses':'\\ud83d\\udd76',\n 'dart':'\\ud83c\\udfaf',\n 'dash':'\\ud83d\\udca8',\n 'date':'\\ud83d\\udcc5',\n 'deciduous_tree':'\\ud83c\\udf33',\n 'deer':'\\ud83e\\udd8c',\n 'department_store':'\\ud83c\\udfec',\n 'derelict_house':'\\ud83c\\udfda',\n 'desert':'\\ud83c\\udfdc',\n 'desert_island':'\\ud83c\\udfdd',\n 'desktop_computer':'\\ud83d\\udda5',\n 'male_detective':'\\ud83d\\udd75\\ufe0f',\n 'diamond_shape_with_a_dot_inside':'\\ud83d\\udca0',\n 'diamonds':'\\u2666\\ufe0f',\n 'disappointed':'\\ud83d\\ude1e',\n 'disappointed_relieved':'\\ud83d\\ude25',\n 'dizzy':'\\ud83d\\udcab',\n 'dizzy_face':'\\ud83d\\ude35',\n 'do_not_litter':'\\ud83d\\udeaf',\n 'dog':'\\ud83d\\udc36',\n 'dog2':'\\ud83d\\udc15',\n 'dollar':'\\ud83d\\udcb5',\n 'dolls':'\\ud83c\\udf8e',\n 'dolphin':'\\ud83d\\udc2c',\n 'door':'\\ud83d\\udeaa',\n 'doughnut':'\\ud83c\\udf69',\n 'dove':'\\ud83d\\udd4a',\n 'dragon':'\\ud83d\\udc09',\n 'dragon_face':'\\ud83d\\udc32',\n 'dress':'\\ud83d\\udc57',\n 'dromedary_camel':'\\ud83d\\udc2a',\n 'drooling_face':'\\ud83e\\udd24',\n 'droplet':'\\ud83d\\udca7',\n 'drum':'\\ud83e\\udd41',\n 'duck':'\\ud83e\\udd86',\n 'dvd':'\\ud83d\\udcc0',\n 'e-mail':'\\ud83d\\udce7',\n 'eagle':'\\ud83e\\udd85',\n 'ear':'\\ud83d\\udc42',\n 'ear_of_rice':'\\ud83c\\udf3e',\n 'earth_africa':'\\ud83c\\udf0d',\n 'earth_americas':'\\ud83c\\udf0e',\n 'earth_asia':'\\ud83c\\udf0f',\n 'egg':'\\ud83e\\udd5a',\n 'eggplant':'\\ud83c\\udf46',\n 'eight_pointed_black_star':'\\u2734\\ufe0f',\n 'eight_spoked_asterisk':'\\u2733\\ufe0f',\n 'electric_plug':'\\ud83d\\udd0c',\n 'elephant':'\\ud83d\\udc18',\n 'email':'\\u2709\\ufe0f',\n 'end':'\\ud83d\\udd1a',\n 'envelope_with_arrow':'\\ud83d\\udce9',\n 'euro':'\\ud83d\\udcb6',\n 'european_castle':'\\ud83c\\udff0',\n 'european_post_office':'\\ud83c\\udfe4',\n 'evergreen_tree':'\\ud83c\\udf32',\n 'exclamation':'\\u2757\\ufe0f',\n 'expressionless':'\\ud83d\\ude11',\n 'eye':'\\ud83d\\udc41',\n 'eye_speech_bubble':'\\ud83d\\udc41‍\\ud83d\\udde8',\n 'eyeglasses':'\\ud83d\\udc53',\n 'eyes':'\\ud83d\\udc40',\n 'face_with_head_bandage':'\\ud83e\\udd15',\n 'face_with_thermometer':'\\ud83e\\udd12',\n 'fist_oncoming':'\\ud83d\\udc4a',\n 'factory':'\\ud83c\\udfed',\n 'fallen_leaf':'\\ud83c\\udf42',\n 'family_man_woman_boy':'\\ud83d\\udc6a',\n 'family_man_boy':'\\ud83d\\udc68‍\\ud83d\\udc66',\n 'family_man_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_girl':'\\ud83d\\udc68‍\\ud83d\\udc67',\n 'family_man_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_man_man_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc66',\n 'family_man_man_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_man_girl':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67',\n 'family_man_man_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_man_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_man_woman_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_woman_girl':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_man_woman_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_woman_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_woman_boy':'\\ud83d\\udc69‍\\ud83d\\udc66',\n 'family_woman_boy_boy':'\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_woman_girl':'\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_woman_girl_boy':'\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_woman_girl_girl':'\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_woman_woman_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc66',\n 'family_woman_woman_boy_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_woman_woman_girl':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_woman_woman_girl_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_woman_woman_girl_girl':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'fast_forward':'\\u23e9',\n 'fax':'\\ud83d\\udce0',\n 'fearful':'\\ud83d\\ude28',\n 'feet':'\\ud83d\\udc3e',\n 'female_detective':'\\ud83d\\udd75\\ufe0f‍\\u2640\\ufe0f',\n 'ferris_wheel':'\\ud83c\\udfa1',\n 'ferry':'\\u26f4',\n 'field_hockey':'\\ud83c\\udfd1',\n 'file_cabinet':'\\ud83d\\uddc4',\n 'file_folder':'\\ud83d\\udcc1',\n 'film_projector':'\\ud83d\\udcfd',\n 'film_strip':'\\ud83c\\udf9e',\n 'fire':'\\ud83d\\udd25',\n 'fire_engine':'\\ud83d\\ude92',\n 'fireworks':'\\ud83c\\udf86',\n 'first_quarter_moon':'\\ud83c\\udf13',\n 'first_quarter_moon_with_face':'\\ud83c\\udf1b',\n 'fish':'\\ud83d\\udc1f',\n 'fish_cake':'\\ud83c\\udf65',\n 'fishing_pole_and_fish':'\\ud83c\\udfa3',\n 'fist_raised':'\\u270a',\n 'fist_left':'\\ud83e\\udd1b',\n 'fist_right':'\\ud83e\\udd1c',\n 'flags':'\\ud83c\\udf8f',\n 'flashlight':'\\ud83d\\udd26',\n 'fleur_de_lis':'\\u269c\\ufe0f',\n 'flight_arrival':'\\ud83d\\udeec',\n 'flight_departure':'\\ud83d\\udeeb',\n 'floppy_disk':'\\ud83d\\udcbe',\n 'flower_playing_cards':'\\ud83c\\udfb4',\n 'flushed':'\\ud83d\\ude33',\n 'fog':'\\ud83c\\udf2b',\n 'foggy':'\\ud83c\\udf01',\n 'football':'\\ud83c\\udfc8',\n 'footprints':'\\ud83d\\udc63',\n 'fork_and_knife':'\\ud83c\\udf74',\n 'fountain':'\\u26f2\\ufe0f',\n 'fountain_pen':'\\ud83d\\udd8b',\n 'four_leaf_clover':'\\ud83c\\udf40',\n 'fox_face':'\\ud83e\\udd8a',\n 'framed_picture':'\\ud83d\\uddbc',\n 'free':'\\ud83c\\udd93',\n 'fried_egg':'\\ud83c\\udf73',\n 'fried_shrimp':'\\ud83c\\udf64',\n 'fries':'\\ud83c\\udf5f',\n 'frog':'\\ud83d\\udc38',\n 'frowning':'\\ud83d\\ude26',\n 'frowning_face':'\\u2639\\ufe0f',\n 'frowning_man':'\\ud83d\\ude4d‍\\u2642\\ufe0f',\n 'frowning_woman':'\\ud83d\\ude4d',\n 'middle_finger':'\\ud83d\\udd95',\n 'fuelpump':'\\u26fd\\ufe0f',\n 'full_moon':'\\ud83c\\udf15',\n 'full_moon_with_face':'\\ud83c\\udf1d',\n 'funeral_urn':'\\u26b1\\ufe0f',\n 'game_die':'\\ud83c\\udfb2',\n 'gear':'\\u2699\\ufe0f',\n 'gem':'\\ud83d\\udc8e',\n 'gemini':'\\u264a\\ufe0f',\n 'ghost':'\\ud83d\\udc7b',\n 'gift':'\\ud83c\\udf81',\n 'gift_heart':'\\ud83d\\udc9d',\n 'girl':'\\ud83d\\udc67',\n 'globe_with_meridians':'\\ud83c\\udf10',\n 'goal_net':'\\ud83e\\udd45',\n 'goat':'\\ud83d\\udc10',\n 'golf':'\\u26f3\\ufe0f',\n 'golfing_man':'\\ud83c\\udfcc\\ufe0f',\n 'golfing_woman':'\\ud83c\\udfcc\\ufe0f‍\\u2640\\ufe0f',\n 'gorilla':'\\ud83e\\udd8d',\n 'grapes':'\\ud83c\\udf47',\n 'green_apple':'\\ud83c\\udf4f',\n 'green_book':'\\ud83d\\udcd7',\n 'green_heart':'\\ud83d\\udc9a',\n 'green_salad':'\\ud83e\\udd57',\n 'grey_exclamation':'\\u2755',\n 'grey_question':'\\u2754',\n 'grimacing':'\\ud83d\\ude2c',\n 'grin':'\\ud83d\\ude01',\n 'grinning':'\\ud83d\\ude00',\n 'guardsman':'\\ud83d\\udc82',\n 'guardswoman':'\\ud83d\\udc82‍\\u2640\\ufe0f',\n 'guitar':'\\ud83c\\udfb8',\n 'gun':'\\ud83d\\udd2b',\n 'haircut_woman':'\\ud83d\\udc87',\n 'haircut_man':'\\ud83d\\udc87‍\\u2642\\ufe0f',\n 'hamburger':'\\ud83c\\udf54',\n 'hammer':'\\ud83d\\udd28',\n 'hammer_and_pick':'\\u2692',\n 'hammer_and_wrench':'\\ud83d\\udee0',\n 'hamster':'\\ud83d\\udc39',\n 'hand':'\\u270b',\n 'handbag':'\\ud83d\\udc5c',\n 'handshake':'\\ud83e\\udd1d',\n 'hankey':'\\ud83d\\udca9',\n 'hatched_chick':'\\ud83d\\udc25',\n 'hatching_chick':'\\ud83d\\udc23',\n 'headphones':'\\ud83c\\udfa7',\n 'hear_no_evil':'\\ud83d\\ude49',\n 'heart':'\\u2764\\ufe0f',\n 'heart_decoration':'\\ud83d\\udc9f',\n 'heart_eyes':'\\ud83d\\ude0d',\n 'heart_eyes_cat':'\\ud83d\\ude3b',\n 'heartbeat':'\\ud83d\\udc93',\n 'heartpulse':'\\ud83d\\udc97',\n 'hearts':'\\u2665\\ufe0f',\n 'heavy_check_mark':'\\u2714\\ufe0f',\n 'heavy_division_sign':'\\u2797',\n 'heavy_dollar_sign':'\\ud83d\\udcb2',\n 'heavy_heart_exclamation':'\\u2763\\ufe0f',\n 'heavy_minus_sign':'\\u2796',\n 'heavy_multiplication_x':'\\u2716\\ufe0f',\n 'heavy_plus_sign':'\\u2795',\n 'helicopter':'\\ud83d\\ude81',\n 'herb':'\\ud83c\\udf3f',\n 'hibiscus':'\\ud83c\\udf3a',\n 'high_brightness':'\\ud83d\\udd06',\n 'high_heel':'\\ud83d\\udc60',\n 'hocho':'\\ud83d\\udd2a',\n 'hole':'\\ud83d\\udd73',\n 'honey_pot':'\\ud83c\\udf6f',\n 'horse':'\\ud83d\\udc34',\n 'horse_racing':'\\ud83c\\udfc7',\n 'hospital':'\\ud83c\\udfe5',\n 'hot_pepper':'\\ud83c\\udf36',\n 'hotdog':'\\ud83c\\udf2d',\n 'hotel':'\\ud83c\\udfe8',\n 'hotsprings':'\\u2668\\ufe0f',\n 'hourglass':'\\u231b\\ufe0f',\n 'hourglass_flowing_sand':'\\u23f3',\n 'house':'\\ud83c\\udfe0',\n 'house_with_garden':'\\ud83c\\udfe1',\n 'houses':'\\ud83c\\udfd8',\n 'hugs':'\\ud83e\\udd17',\n 'hushed':'\\ud83d\\ude2f',\n 'ice_cream':'\\ud83c\\udf68',\n 'ice_hockey':'\\ud83c\\udfd2',\n 'ice_skate':'\\u26f8',\n 'icecream':'\\ud83c\\udf66',\n 'id':'\\ud83c\\udd94',\n 'ideograph_advantage':'\\ud83c\\ude50',\n 'imp':'\\ud83d\\udc7f',\n 'inbox_tray':'\\ud83d\\udce5',\n 'incoming_envelope':'\\ud83d\\udce8',\n 'tipping_hand_woman':'\\ud83d\\udc81',\n 'information_source':'\\u2139\\ufe0f',\n 'innocent':'\\ud83d\\ude07',\n 'interrobang':'\\u2049\\ufe0f',\n 'iphone':'\\ud83d\\udcf1',\n 'izakaya_lantern':'\\ud83c\\udfee',\n 'jack_o_lantern':'\\ud83c\\udf83',\n 'japan':'\\ud83d\\uddfe',\n 'japanese_castle':'\\ud83c\\udfef',\n 'japanese_goblin':'\\ud83d\\udc7a',\n 'japanese_ogre':'\\ud83d\\udc79',\n 'jeans':'\\ud83d\\udc56',\n 'joy':'\\ud83d\\ude02',\n 'joy_cat':'\\ud83d\\ude39',\n 'joystick':'\\ud83d\\udd79',\n 'kaaba':'\\ud83d\\udd4b',\n 'key':'\\ud83d\\udd11',\n 'keyboard':'\\u2328\\ufe0f',\n 'keycap_ten':'\\ud83d\\udd1f',\n 'kick_scooter':'\\ud83d\\udef4',\n 'kimono':'\\ud83d\\udc58',\n 'kiss':'\\ud83d\\udc8b',\n 'kissing':'\\ud83d\\ude17',\n 'kissing_cat':'\\ud83d\\ude3d',\n 'kissing_closed_eyes':'\\ud83d\\ude1a',\n 'kissing_heart':'\\ud83d\\ude18',\n 'kissing_smiling_eyes':'\\ud83d\\ude19',\n 'kiwi_fruit':'\\ud83e\\udd5d',\n 'koala':'\\ud83d\\udc28',\n 'koko':'\\ud83c\\ude01',\n 'label':'\\ud83c\\udff7',\n 'large_blue_circle':'\\ud83d\\udd35',\n 'large_blue_diamond':'\\ud83d\\udd37',\n 'large_orange_diamond':'\\ud83d\\udd36',\n 'last_quarter_moon':'\\ud83c\\udf17',\n 'last_quarter_moon_with_face':'\\ud83c\\udf1c',\n 'latin_cross':'\\u271d\\ufe0f',\n 'laughing':'\\ud83d\\ude06',\n 'leaves':'\\ud83c\\udf43',\n 'ledger':'\\ud83d\\udcd2',\n 'left_luggage':'\\ud83d\\udec5',\n 'left_right_arrow':'\\u2194\\ufe0f',\n 'leftwards_arrow_with_hook':'\\u21a9\\ufe0f',\n 'lemon':'\\ud83c\\udf4b',\n 'leo':'\\u264c\\ufe0f',\n 'leopard':'\\ud83d\\udc06',\n 'level_slider':'\\ud83c\\udf9a',\n 'libra':'\\u264e\\ufe0f',\n 'light_rail':'\\ud83d\\ude88',\n 'link':'\\ud83d\\udd17',\n 'lion':'\\ud83e\\udd81',\n 'lips':'\\ud83d\\udc44',\n 'lipstick':'\\ud83d\\udc84',\n 'lizard':'\\ud83e\\udd8e',\n 'lock':'\\ud83d\\udd12',\n 'lock_with_ink_pen':'\\ud83d\\udd0f',\n 'lollipop':'\\ud83c\\udf6d',\n 'loop':'\\u27bf',\n 'loud_sound':'\\ud83d\\udd0a',\n 'loudspeaker':'\\ud83d\\udce2',\n 'love_hotel':'\\ud83c\\udfe9',\n 'love_letter':'\\ud83d\\udc8c',\n 'low_brightness':'\\ud83d\\udd05',\n 'lying_face':'\\ud83e\\udd25',\n 'm':'\\u24c2\\ufe0f',\n 'mag':'\\ud83d\\udd0d',\n 'mag_right':'\\ud83d\\udd0e',\n 'mahjong':'\\ud83c\\udc04\\ufe0f',\n 'mailbox':'\\ud83d\\udceb',\n 'mailbox_closed':'\\ud83d\\udcea',\n 'mailbox_with_mail':'\\ud83d\\udcec',\n 'mailbox_with_no_mail':'\\ud83d\\udced',\n 'man':'\\ud83d\\udc68',\n 'man_artist':'\\ud83d\\udc68‍\\ud83c\\udfa8',\n 'man_astronaut':'\\ud83d\\udc68‍\\ud83d\\ude80',\n 'man_cartwheeling':'\\ud83e\\udd38‍\\u2642\\ufe0f',\n 'man_cook':'\\ud83d\\udc68‍\\ud83c\\udf73',\n 'man_dancing':'\\ud83d\\udd7a',\n 'man_facepalming':'\\ud83e\\udd26‍\\u2642\\ufe0f',\n 'man_factory_worker':'\\ud83d\\udc68‍\\ud83c\\udfed',\n 'man_farmer':'\\ud83d\\udc68‍\\ud83c\\udf3e',\n 'man_firefighter':'\\ud83d\\udc68‍\\ud83d\\ude92',\n 'man_health_worker':'\\ud83d\\udc68‍\\u2695\\ufe0f',\n 'man_in_tuxedo':'\\ud83e\\udd35',\n 'man_judge':'\\ud83d\\udc68‍\\u2696\\ufe0f',\n 'man_juggling':'\\ud83e\\udd39‍\\u2642\\ufe0f',\n 'man_mechanic':'\\ud83d\\udc68‍\\ud83d\\udd27',\n 'man_office_worker':'\\ud83d\\udc68‍\\ud83d\\udcbc',\n 'man_pilot':'\\ud83d\\udc68‍\\u2708\\ufe0f',\n 'man_playing_handball':'\\ud83e\\udd3e‍\\u2642\\ufe0f',\n 'man_playing_water_polo':'\\ud83e\\udd3d‍\\u2642\\ufe0f',\n 'man_scientist':'\\ud83d\\udc68‍\\ud83d\\udd2c',\n 'man_shrugging':'\\ud83e\\udd37‍\\u2642\\ufe0f',\n 'man_singer':'\\ud83d\\udc68‍\\ud83c\\udfa4',\n 'man_student':'\\ud83d\\udc68‍\\ud83c\\udf93',\n 'man_teacher':'\\ud83d\\udc68‍\\ud83c\\udfeb',\n 'man_technologist':'\\ud83d\\udc68‍\\ud83d\\udcbb',\n 'man_with_gua_pi_mao':'\\ud83d\\udc72',\n 'man_with_turban':'\\ud83d\\udc73',\n 'tangerine':'\\ud83c\\udf4a',\n 'mans_shoe':'\\ud83d\\udc5e',\n 'mantelpiece_clock':'\\ud83d\\udd70',\n 'maple_leaf':'\\ud83c\\udf41',\n 'martial_arts_uniform':'\\ud83e\\udd4b',\n 'mask':'\\ud83d\\ude37',\n 'massage_woman':'\\ud83d\\udc86',\n 'massage_man':'\\ud83d\\udc86‍\\u2642\\ufe0f',\n 'meat_on_bone':'\\ud83c\\udf56',\n 'medal_military':'\\ud83c\\udf96',\n 'medal_sports':'\\ud83c\\udfc5',\n 'mega':'\\ud83d\\udce3',\n 'melon':'\\ud83c\\udf48',\n 'memo':'\\ud83d\\udcdd',\n 'men_wrestling':'\\ud83e\\udd3c‍\\u2642\\ufe0f',\n 'menorah':'\\ud83d\\udd4e',\n 'mens':'\\ud83d\\udeb9',\n 'metal':'\\ud83e\\udd18',\n 'metro':'\\ud83d\\ude87',\n 'microphone':'\\ud83c\\udfa4',\n 'microscope':'\\ud83d\\udd2c',\n 'milk_glass':'\\ud83e\\udd5b',\n 'milky_way':'\\ud83c\\udf0c',\n 'minibus':'\\ud83d\\ude90',\n 'minidisc':'\\ud83d\\udcbd',\n 'mobile_phone_off':'\\ud83d\\udcf4',\n 'money_mouth_face':'\\ud83e\\udd11',\n 'money_with_wings':'\\ud83d\\udcb8',\n 'moneybag':'\\ud83d\\udcb0',\n 'monkey':'\\ud83d\\udc12',\n 'monkey_face':'\\ud83d\\udc35',\n 'monorail':'\\ud83d\\ude9d',\n 'moon':'\\ud83c\\udf14',\n 'mortar_board':'\\ud83c\\udf93',\n 'mosque':'\\ud83d\\udd4c',\n 'motor_boat':'\\ud83d\\udee5',\n 'motor_scooter':'\\ud83d\\udef5',\n 'motorcycle':'\\ud83c\\udfcd',\n 'motorway':'\\ud83d\\udee3',\n 'mount_fuji':'\\ud83d\\uddfb',\n 'mountain':'\\u26f0',\n 'mountain_biking_man':'\\ud83d\\udeb5',\n 'mountain_biking_woman':'\\ud83d\\udeb5‍\\u2640\\ufe0f',\n 'mountain_cableway':'\\ud83d\\udea0',\n 'mountain_railway':'\\ud83d\\ude9e',\n 'mountain_snow':'\\ud83c\\udfd4',\n 'mouse':'\\ud83d\\udc2d',\n 'mouse2':'\\ud83d\\udc01',\n 'movie_camera':'\\ud83c\\udfa5',\n 'moyai':'\\ud83d\\uddff',\n 'mrs_claus':'\\ud83e\\udd36',\n 'muscle':'\\ud83d\\udcaa',\n 'mushroom':'\\ud83c\\udf44',\n 'musical_keyboard':'\\ud83c\\udfb9',\n 'musical_note':'\\ud83c\\udfb5',\n 'musical_score':'\\ud83c\\udfbc',\n 'mute':'\\ud83d\\udd07',\n 'nail_care':'\\ud83d\\udc85',\n 'name_badge':'\\ud83d\\udcdb',\n 'national_park':'\\ud83c\\udfde',\n 'nauseated_face':'\\ud83e\\udd22',\n 'necktie':'\\ud83d\\udc54',\n 'negative_squared_cross_mark':'\\u274e',\n 'nerd_face':'\\ud83e\\udd13',\n 'neutral_face':'\\ud83d\\ude10',\n 'new':'\\ud83c\\udd95',\n 'new_moon':'\\ud83c\\udf11',\n 'new_moon_with_face':'\\ud83c\\udf1a',\n 'newspaper':'\\ud83d\\udcf0',\n 'newspaper_roll':'\\ud83d\\uddde',\n 'next_track_button':'\\u23ed',\n 'ng':'\\ud83c\\udd96',\n 'no_good_man':'\\ud83d\\ude45‍\\u2642\\ufe0f',\n 'no_good_woman':'\\ud83d\\ude45',\n 'night_with_stars':'\\ud83c\\udf03',\n 'no_bell':'\\ud83d\\udd15',\n 'no_bicycles':'\\ud83d\\udeb3',\n 'no_entry':'\\u26d4\\ufe0f',\n 'no_entry_sign':'\\ud83d\\udeab',\n 'no_mobile_phones':'\\ud83d\\udcf5',\n 'no_mouth':'\\ud83d\\ude36',\n 'no_pedestrians':'\\ud83d\\udeb7',\n 'no_smoking':'\\ud83d\\udead',\n 'non-potable_water':'\\ud83d\\udeb1',\n 'nose':'\\ud83d\\udc43',\n 'notebook':'\\ud83d\\udcd3',\n 'notebook_with_decorative_cover':'\\ud83d\\udcd4',\n 'notes':'\\ud83c\\udfb6',\n 'nut_and_bolt':'\\ud83d\\udd29',\n 'o':'\\u2b55\\ufe0f',\n 'o2':'\\ud83c\\udd7e\\ufe0f',\n 'ocean':'\\ud83c\\udf0a',\n 'octopus':'\\ud83d\\udc19',\n 'oden':'\\ud83c\\udf62',\n 'office':'\\ud83c\\udfe2',\n 'oil_drum':'\\ud83d\\udee2',\n 'ok':'\\ud83c\\udd97',\n 'ok_hand':'\\ud83d\\udc4c',\n 'ok_man':'\\ud83d\\ude46‍\\u2642\\ufe0f',\n 'ok_woman':'\\ud83d\\ude46',\n 'old_key':'\\ud83d\\udddd',\n 'older_man':'\\ud83d\\udc74',\n 'older_woman':'\\ud83d\\udc75',\n 'om':'\\ud83d\\udd49',\n 'on':'\\ud83d\\udd1b',\n 'oncoming_automobile':'\\ud83d\\ude98',\n 'oncoming_bus':'\\ud83d\\ude8d',\n 'oncoming_police_car':'\\ud83d\\ude94',\n 'oncoming_taxi':'\\ud83d\\ude96',\n 'open_file_folder':'\\ud83d\\udcc2',\n 'open_hands':'\\ud83d\\udc50',\n 'open_mouth':'\\ud83d\\ude2e',\n 'open_umbrella':'\\u2602\\ufe0f',\n 'ophiuchus':'\\u26ce',\n 'orange_book':'\\ud83d\\udcd9',\n 'orthodox_cross':'\\u2626\\ufe0f',\n 'outbox_tray':'\\ud83d\\udce4',\n 'owl':'\\ud83e\\udd89',\n 'ox':'\\ud83d\\udc02',\n 'package':'\\ud83d\\udce6',\n 'page_facing_up':'\\ud83d\\udcc4',\n 'page_with_curl':'\\ud83d\\udcc3',\n 'pager':'\\ud83d\\udcdf',\n 'paintbrush':'\\ud83d\\udd8c',\n 'palm_tree':'\\ud83c\\udf34',\n 'pancakes':'\\ud83e\\udd5e',\n 'panda_face':'\\ud83d\\udc3c',\n 'paperclip':'\\ud83d\\udcce',\n 'paperclips':'\\ud83d\\udd87',\n 'parasol_on_ground':'\\u26f1',\n 'parking':'\\ud83c\\udd7f\\ufe0f',\n 'part_alternation_mark':'\\u303d\\ufe0f',\n 'partly_sunny':'\\u26c5\\ufe0f',\n 'passenger_ship':'\\ud83d\\udef3',\n 'passport_control':'\\ud83d\\udec2',\n 'pause_button':'\\u23f8',\n 'peace_symbol':'\\u262e\\ufe0f',\n 'peach':'\\ud83c\\udf51',\n 'peanuts':'\\ud83e\\udd5c',\n 'pear':'\\ud83c\\udf50',\n 'pen':'\\ud83d\\udd8a',\n 'pencil2':'\\u270f\\ufe0f',\n 'penguin':'\\ud83d\\udc27',\n 'pensive':'\\ud83d\\ude14',\n 'performing_arts':'\\ud83c\\udfad',\n 'persevere':'\\ud83d\\ude23',\n 'person_fencing':'\\ud83e\\udd3a',\n 'pouting_woman':'\\ud83d\\ude4e',\n 'phone':'\\u260e\\ufe0f',\n 'pick':'\\u26cf',\n 'pig':'\\ud83d\\udc37',\n 'pig2':'\\ud83d\\udc16',\n 'pig_nose':'\\ud83d\\udc3d',\n 'pill':'\\ud83d\\udc8a',\n 'pineapple':'\\ud83c\\udf4d',\n 'ping_pong':'\\ud83c\\udfd3',\n 'pisces':'\\u2653\\ufe0f',\n 'pizza':'\\ud83c\\udf55',\n 'place_of_worship':'\\ud83d\\uded0',\n 'plate_with_cutlery':'\\ud83c\\udf7d',\n 'play_or_pause_button':'\\u23ef',\n 'point_down':'\\ud83d\\udc47',\n 'point_left':'\\ud83d\\udc48',\n 'point_right':'\\ud83d\\udc49',\n 'point_up':'\\u261d\\ufe0f',\n 'point_up_2':'\\ud83d\\udc46',\n 'police_car':'\\ud83d\\ude93',\n 'policewoman':'\\ud83d\\udc6e‍\\u2640\\ufe0f',\n 'poodle':'\\ud83d\\udc29',\n 'popcorn':'\\ud83c\\udf7f',\n 'post_office':'\\ud83c\\udfe3',\n 'postal_horn':'\\ud83d\\udcef',\n 'postbox':'\\ud83d\\udcee',\n 'potable_water':'\\ud83d\\udeb0',\n 'potato':'\\ud83e\\udd54',\n 'pouch':'\\ud83d\\udc5d',\n 'poultry_leg':'\\ud83c\\udf57',\n 'pound':'\\ud83d\\udcb7',\n 'rage':'\\ud83d\\ude21',\n 'pouting_cat':'\\ud83d\\ude3e',\n 'pouting_man':'\\ud83d\\ude4e‍\\u2642\\ufe0f',\n 'pray':'\\ud83d\\ude4f',\n 'prayer_beads':'\\ud83d\\udcff',\n 'pregnant_woman':'\\ud83e\\udd30',\n 'previous_track_button':'\\u23ee',\n 'prince':'\\ud83e\\udd34',\n 'princess':'\\ud83d\\udc78',\n 'printer':'\\ud83d\\udda8',\n 'purple_heart':'\\ud83d\\udc9c',\n 'purse':'\\ud83d\\udc5b',\n 'pushpin':'\\ud83d\\udccc',\n 'put_litter_in_its_place':'\\ud83d\\udeae',\n 'question':'\\u2753',\n 'rabbit':'\\ud83d\\udc30',\n 'rabbit2':'\\ud83d\\udc07',\n 'racehorse':'\\ud83d\\udc0e',\n 'racing_car':'\\ud83c\\udfce',\n 'radio':'\\ud83d\\udcfb',\n 'radio_button':'\\ud83d\\udd18',\n 'radioactive':'\\u2622\\ufe0f',\n 'railway_car':'\\ud83d\\ude83',\n 'railway_track':'\\ud83d\\udee4',\n 'rainbow':'\\ud83c\\udf08',\n 'rainbow_flag':'\\ud83c\\udff3\\ufe0f‍\\ud83c\\udf08',\n 'raised_back_of_hand':'\\ud83e\\udd1a',\n 'raised_hand_with_fingers_splayed':'\\ud83d\\udd90',\n 'raised_hands':'\\ud83d\\ude4c',\n 'raising_hand_woman':'\\ud83d\\ude4b',\n 'raising_hand_man':'\\ud83d\\ude4b‍\\u2642\\ufe0f',\n 'ram':'\\ud83d\\udc0f',\n 'ramen':'\\ud83c\\udf5c',\n 'rat':'\\ud83d\\udc00',\n 'record_button':'\\u23fa',\n 'recycle':'\\u267b\\ufe0f',\n 'red_circle':'\\ud83d\\udd34',\n 'registered':'\\u00ae\\ufe0f',\n 'relaxed':'\\u263a\\ufe0f',\n 'relieved':'\\ud83d\\ude0c',\n 'reminder_ribbon':'\\ud83c\\udf97',\n 'repeat':'\\ud83d\\udd01',\n 'repeat_one':'\\ud83d\\udd02',\n 'rescue_worker_helmet':'\\u26d1',\n 'restroom':'\\ud83d\\udebb',\n 'revolving_hearts':'\\ud83d\\udc9e',\n 'rewind':'\\u23ea',\n 'rhinoceros':'\\ud83e\\udd8f',\n 'ribbon':'\\ud83c\\udf80',\n 'rice':'\\ud83c\\udf5a',\n 'rice_ball':'\\ud83c\\udf59',\n 'rice_cracker':'\\ud83c\\udf58',\n 'rice_scene':'\\ud83c\\udf91',\n 'right_anger_bubble':'\\ud83d\\uddef',\n 'ring':'\\ud83d\\udc8d',\n 'robot':'\\ud83e\\udd16',\n 'rocket':'\\ud83d\\ude80',\n 'rofl':'\\ud83e\\udd23',\n 'roll_eyes':'\\ud83d\\ude44',\n 'roller_coaster':'\\ud83c\\udfa2',\n 'rooster':'\\ud83d\\udc13',\n 'rose':'\\ud83c\\udf39',\n 'rosette':'\\ud83c\\udff5',\n 'rotating_light':'\\ud83d\\udea8',\n 'round_pushpin':'\\ud83d\\udccd',\n 'rowing_man':'\\ud83d\\udea3',\n 'rowing_woman':'\\ud83d\\udea3‍\\u2640\\ufe0f',\n 'rugby_football':'\\ud83c\\udfc9',\n 'running_man':'\\ud83c\\udfc3',\n 'running_shirt_with_sash':'\\ud83c\\udfbd',\n 'running_woman':'\\ud83c\\udfc3‍\\u2640\\ufe0f',\n 'sa':'\\ud83c\\ude02\\ufe0f',\n 'sagittarius':'\\u2650\\ufe0f',\n 'sake':'\\ud83c\\udf76',\n 'sandal':'\\ud83d\\udc61',\n 'santa':'\\ud83c\\udf85',\n 'satellite':'\\ud83d\\udce1',\n 'saxophone':'\\ud83c\\udfb7',\n 'school':'\\ud83c\\udfeb',\n 'school_satchel':'\\ud83c\\udf92',\n 'scissors':'\\u2702\\ufe0f',\n 'scorpion':'\\ud83e\\udd82',\n 'scorpius':'\\u264f\\ufe0f',\n 'scream':'\\ud83d\\ude31',\n 'scream_cat':'\\ud83d\\ude40',\n 'scroll':'\\ud83d\\udcdc',\n 'seat':'\\ud83d\\udcba',\n 'secret':'\\u3299\\ufe0f',\n 'see_no_evil':'\\ud83d\\ude48',\n 'seedling':'\\ud83c\\udf31',\n 'selfie':'\\ud83e\\udd33',\n 'shallow_pan_of_food':'\\ud83e\\udd58',\n 'shamrock':'\\u2618\\ufe0f',\n 'shark':'\\ud83e\\udd88',\n 'shaved_ice':'\\ud83c\\udf67',\n 'sheep':'\\ud83d\\udc11',\n 'shell':'\\ud83d\\udc1a',\n 'shield':'\\ud83d\\udee1',\n 'shinto_shrine':'\\u26e9',\n 'ship':'\\ud83d\\udea2',\n 'shirt':'\\ud83d\\udc55',\n 'shopping':'\\ud83d\\udecd',\n 'shopping_cart':'\\ud83d\\uded2',\n 'shower':'\\ud83d\\udebf',\n 'shrimp':'\\ud83e\\udd90',\n 'signal_strength':'\\ud83d\\udcf6',\n 'six_pointed_star':'\\ud83d\\udd2f',\n 'ski':'\\ud83c\\udfbf',\n 'skier':'\\u26f7',\n 'skull':'\\ud83d\\udc80',\n 'skull_and_crossbones':'\\u2620\\ufe0f',\n 'sleeping':'\\ud83d\\ude34',\n 'sleeping_bed':'\\ud83d\\udecc',\n 'sleepy':'\\ud83d\\ude2a',\n 'slightly_frowning_face':'\\ud83d\\ude41',\n 'slightly_smiling_face':'\\ud83d\\ude42',\n 'slot_machine':'\\ud83c\\udfb0',\n 'small_airplane':'\\ud83d\\udee9',\n 'small_blue_diamond':'\\ud83d\\udd39',\n 'small_orange_diamond':'\\ud83d\\udd38',\n 'small_red_triangle':'\\ud83d\\udd3a',\n 'small_red_triangle_down':'\\ud83d\\udd3b',\n 'smile':'\\ud83d\\ude04',\n 'smile_cat':'\\ud83d\\ude38',\n 'smiley':'\\ud83d\\ude03',\n 'smiley_cat':'\\ud83d\\ude3a',\n 'smiling_imp':'\\ud83d\\ude08',\n 'smirk':'\\ud83d\\ude0f',\n 'smirk_cat':'\\ud83d\\ude3c',\n 'smoking':'\\ud83d\\udeac',\n 'snail':'\\ud83d\\udc0c',\n 'snake':'\\ud83d\\udc0d',\n 'sneezing_face':'\\ud83e\\udd27',\n 'snowboarder':'\\ud83c\\udfc2',\n 'snowflake':'\\u2744\\ufe0f',\n 'snowman':'\\u26c4\\ufe0f',\n 'snowman_with_snow':'\\u2603\\ufe0f',\n 'sob':'\\ud83d\\ude2d',\n 'soccer':'\\u26bd\\ufe0f',\n 'soon':'\\ud83d\\udd1c',\n 'sos':'\\ud83c\\udd98',\n 'sound':'\\ud83d\\udd09',\n 'space_invader':'\\ud83d\\udc7e',\n 'spades':'\\u2660\\ufe0f',\n 'spaghetti':'\\ud83c\\udf5d',\n 'sparkle':'\\u2747\\ufe0f',\n 'sparkler':'\\ud83c\\udf87',\n 'sparkles':'\\u2728',\n 'sparkling_heart':'\\ud83d\\udc96',\n 'speak_no_evil':'\\ud83d\\ude4a',\n 'speaker':'\\ud83d\\udd08',\n 'speaking_head':'\\ud83d\\udde3',\n 'speech_balloon':'\\ud83d\\udcac',\n 'speedboat':'\\ud83d\\udea4',\n 'spider':'\\ud83d\\udd77',\n 'spider_web':'\\ud83d\\udd78',\n 'spiral_calendar':'\\ud83d\\uddd3',\n 'spiral_notepad':'\\ud83d\\uddd2',\n 'spoon':'\\ud83e\\udd44',\n 'squid':'\\ud83e\\udd91',\n 'stadium':'\\ud83c\\udfdf',\n 'star':'\\u2b50\\ufe0f',\n 'star2':'\\ud83c\\udf1f',\n 'star_and_crescent':'\\u262a\\ufe0f',\n 'star_of_david':'\\u2721\\ufe0f',\n 'stars':'\\ud83c\\udf20',\n 'station':'\\ud83d\\ude89',\n 'statue_of_liberty':'\\ud83d\\uddfd',\n 'steam_locomotive':'\\ud83d\\ude82',\n 'stew':'\\ud83c\\udf72',\n 'stop_button':'\\u23f9',\n 'stop_sign':'\\ud83d\\uded1',\n 'stopwatch':'\\u23f1',\n 'straight_ruler':'\\ud83d\\udccf',\n 'strawberry':'\\ud83c\\udf53',\n 'stuck_out_tongue':'\\ud83d\\ude1b',\n 'stuck_out_tongue_closed_eyes':'\\ud83d\\ude1d',\n 'stuck_out_tongue_winking_eye':'\\ud83d\\ude1c',\n 'studio_microphone':'\\ud83c\\udf99',\n 'stuffed_flatbread':'\\ud83e\\udd59',\n 'sun_behind_large_cloud':'\\ud83c\\udf25',\n 'sun_behind_rain_cloud':'\\ud83c\\udf26',\n 'sun_behind_small_cloud':'\\ud83c\\udf24',\n 'sun_with_face':'\\ud83c\\udf1e',\n 'sunflower':'\\ud83c\\udf3b',\n 'sunglasses':'\\ud83d\\ude0e',\n 'sunny':'\\u2600\\ufe0f',\n 'sunrise':'\\ud83c\\udf05',\n 'sunrise_over_mountains':'\\ud83c\\udf04',\n 'surfing_man':'\\ud83c\\udfc4',\n 'surfing_woman':'\\ud83c\\udfc4‍\\u2640\\ufe0f',\n 'sushi':'\\ud83c\\udf63',\n 'suspension_railway':'\\ud83d\\ude9f',\n 'sweat':'\\ud83d\\ude13',\n 'sweat_drops':'\\ud83d\\udca6',\n 'sweat_smile':'\\ud83d\\ude05',\n 'sweet_potato':'\\ud83c\\udf60',\n 'swimming_man':'\\ud83c\\udfca',\n 'swimming_woman':'\\ud83c\\udfca‍\\u2640\\ufe0f',\n 'symbols':'\\ud83d\\udd23',\n 'synagogue':'\\ud83d\\udd4d',\n 'syringe':'\\ud83d\\udc89',\n 'taco':'\\ud83c\\udf2e',\n 'tada':'\\ud83c\\udf89',\n 'tanabata_tree':'\\ud83c\\udf8b',\n 'taurus':'\\u2649\\ufe0f',\n 'taxi':'\\ud83d\\ude95',\n 'tea':'\\ud83c\\udf75',\n 'telephone_receiver':'\\ud83d\\udcde',\n 'telescope':'\\ud83d\\udd2d',\n 'tennis':'\\ud83c\\udfbe',\n 'tent':'\\u26fa\\ufe0f',\n 'thermometer':'\\ud83c\\udf21',\n 'thinking':'\\ud83e\\udd14',\n 'thought_balloon':'\\ud83d\\udcad',\n 'ticket':'\\ud83c\\udfab',\n 'tickets':'\\ud83c\\udf9f',\n 'tiger':'\\ud83d\\udc2f',\n 'tiger2':'\\ud83d\\udc05',\n 'timer_clock':'\\u23f2',\n 'tipping_hand_man':'\\ud83d\\udc81‍\\u2642\\ufe0f',\n 'tired_face':'\\ud83d\\ude2b',\n 'tm':'\\u2122\\ufe0f',\n 'toilet':'\\ud83d\\udebd',\n 'tokyo_tower':'\\ud83d\\uddfc',\n 'tomato':'\\ud83c\\udf45',\n 'tongue':'\\ud83d\\udc45',\n 'top':'\\ud83d\\udd1d',\n 'tophat':'\\ud83c\\udfa9',\n 'tornado':'\\ud83c\\udf2a',\n 'trackball':'\\ud83d\\uddb2',\n 'tractor':'\\ud83d\\ude9c',\n 'traffic_light':'\\ud83d\\udea5',\n 'train':'\\ud83d\\ude8b',\n 'train2':'\\ud83d\\ude86',\n 'tram':'\\ud83d\\ude8a',\n 'triangular_flag_on_post':'\\ud83d\\udea9',\n 'triangular_ruler':'\\ud83d\\udcd0',\n 'trident':'\\ud83d\\udd31',\n 'triumph':'\\ud83d\\ude24',\n 'trolleybus':'\\ud83d\\ude8e',\n 'trophy':'\\ud83c\\udfc6',\n 'tropical_drink':'\\ud83c\\udf79',\n 'tropical_fish':'\\ud83d\\udc20',\n 'truck':'\\ud83d\\ude9a',\n 'trumpet':'\\ud83c\\udfba',\n 'tulip':'\\ud83c\\udf37',\n 'tumbler_glass':'\\ud83e\\udd43',\n 'turkey':'\\ud83e\\udd83',\n 'turtle':'\\ud83d\\udc22',\n 'tv':'\\ud83d\\udcfa',\n 'twisted_rightwards_arrows':'\\ud83d\\udd00',\n 'two_hearts':'\\ud83d\\udc95',\n 'two_men_holding_hands':'\\ud83d\\udc6c',\n 'two_women_holding_hands':'\\ud83d\\udc6d',\n 'u5272':'\\ud83c\\ude39',\n 'u5408':'\\ud83c\\ude34',\n 'u55b6':'\\ud83c\\ude3a',\n 'u6307':'\\ud83c\\ude2f\\ufe0f',\n 'u6708':'\\ud83c\\ude37\\ufe0f',\n 'u6709':'\\ud83c\\ude36',\n 'u6e80':'\\ud83c\\ude35',\n 'u7121':'\\ud83c\\ude1a\\ufe0f',\n 'u7533':'\\ud83c\\ude38',\n 'u7981':'\\ud83c\\ude32',\n 'u7a7a':'\\ud83c\\ude33',\n 'umbrella':'\\u2614\\ufe0f',\n 'unamused':'\\ud83d\\ude12',\n 'underage':'\\ud83d\\udd1e',\n 'unicorn':'\\ud83e\\udd84',\n 'unlock':'\\ud83d\\udd13',\n 'up':'\\ud83c\\udd99',\n 'upside_down_face':'\\ud83d\\ude43',\n 'v':'\\u270c\\ufe0f',\n 'vertical_traffic_light':'\\ud83d\\udea6',\n 'vhs':'\\ud83d\\udcfc',\n 'vibration_mode':'\\ud83d\\udcf3',\n 'video_camera':'\\ud83d\\udcf9',\n 'video_game':'\\ud83c\\udfae',\n 'violin':'\\ud83c\\udfbb',\n 'virgo':'\\u264d\\ufe0f',\n 'volcano':'\\ud83c\\udf0b',\n 'volleyball':'\\ud83c\\udfd0',\n 'vs':'\\ud83c\\udd9a',\n 'vulcan_salute':'\\ud83d\\udd96',\n 'walking_man':'\\ud83d\\udeb6',\n 'walking_woman':'\\ud83d\\udeb6‍\\u2640\\ufe0f',\n 'waning_crescent_moon':'\\ud83c\\udf18',\n 'waning_gibbous_moon':'\\ud83c\\udf16',\n 'warning':'\\u26a0\\ufe0f',\n 'wastebasket':'\\ud83d\\uddd1',\n 'watch':'\\u231a\\ufe0f',\n 'water_buffalo':'\\ud83d\\udc03',\n 'watermelon':'\\ud83c\\udf49',\n 'wave':'\\ud83d\\udc4b',\n 'wavy_dash':'\\u3030\\ufe0f',\n 'waxing_crescent_moon':'\\ud83c\\udf12',\n 'wc':'\\ud83d\\udebe',\n 'weary':'\\ud83d\\ude29',\n 'wedding':'\\ud83d\\udc92',\n 'weight_lifting_man':'\\ud83c\\udfcb\\ufe0f',\n 'weight_lifting_woman':'\\ud83c\\udfcb\\ufe0f‍\\u2640\\ufe0f',\n 'whale':'\\ud83d\\udc33',\n 'whale2':'\\ud83d\\udc0b',\n 'wheel_of_dharma':'\\u2638\\ufe0f',\n 'wheelchair':'\\u267f\\ufe0f',\n 'white_check_mark':'\\u2705',\n 'white_circle':'\\u26aa\\ufe0f',\n 'white_flag':'\\ud83c\\udff3\\ufe0f',\n 'white_flower':'\\ud83d\\udcae',\n 'white_large_square':'\\u2b1c\\ufe0f',\n 'white_medium_small_square':'\\u25fd\\ufe0f',\n 'white_medium_square':'\\u25fb\\ufe0f',\n 'white_small_square':'\\u25ab\\ufe0f',\n 'white_square_button':'\\ud83d\\udd33',\n 'wilted_flower':'\\ud83e\\udd40',\n 'wind_chime':'\\ud83c\\udf90',\n 'wind_face':'\\ud83c\\udf2c',\n 'wine_glass':'\\ud83c\\udf77',\n 'wink':'\\ud83d\\ude09',\n 'wolf':'\\ud83d\\udc3a',\n 'woman':'\\ud83d\\udc69',\n 'woman_artist':'\\ud83d\\udc69‍\\ud83c\\udfa8',\n 'woman_astronaut':'\\ud83d\\udc69‍\\ud83d\\ude80',\n 'woman_cartwheeling':'\\ud83e\\udd38‍\\u2640\\ufe0f',\n 'woman_cook':'\\ud83d\\udc69‍\\ud83c\\udf73',\n 'woman_facepalming':'\\ud83e\\udd26‍\\u2640\\ufe0f',\n 'woman_factory_worker':'\\ud83d\\udc69‍\\ud83c\\udfed',\n 'woman_farmer':'\\ud83d\\udc69‍\\ud83c\\udf3e',\n 'woman_firefighter':'\\ud83d\\udc69‍\\ud83d\\ude92',\n 'woman_health_worker':'\\ud83d\\udc69‍\\u2695\\ufe0f',\n 'woman_judge':'\\ud83d\\udc69‍\\u2696\\ufe0f',\n 'woman_juggling':'\\ud83e\\udd39‍\\u2640\\ufe0f',\n 'woman_mechanic':'\\ud83d\\udc69‍\\ud83d\\udd27',\n 'woman_office_worker':'\\ud83d\\udc69‍\\ud83d\\udcbc',\n 'woman_pilot':'\\ud83d\\udc69‍\\u2708\\ufe0f',\n 'woman_playing_handball':'\\ud83e\\udd3e‍\\u2640\\ufe0f',\n 'woman_playing_water_polo':'\\ud83e\\udd3d‍\\u2640\\ufe0f',\n 'woman_scientist':'\\ud83d\\udc69‍\\ud83d\\udd2c',\n 'woman_shrugging':'\\ud83e\\udd37‍\\u2640\\ufe0f',\n 'woman_singer':'\\ud83d\\udc69‍\\ud83c\\udfa4',\n 'woman_student':'\\ud83d\\udc69‍\\ud83c\\udf93',\n 'woman_teacher':'\\ud83d\\udc69‍\\ud83c\\udfeb',\n 'woman_technologist':'\\ud83d\\udc69‍\\ud83d\\udcbb',\n 'woman_with_turban':'\\ud83d\\udc73‍\\u2640\\ufe0f',\n 'womans_clothes':'\\ud83d\\udc5a',\n 'womans_hat':'\\ud83d\\udc52',\n 'women_wrestling':'\\ud83e\\udd3c‍\\u2640\\ufe0f',\n 'womens':'\\ud83d\\udeba',\n 'world_map':'\\ud83d\\uddfa',\n 'worried':'\\ud83d\\ude1f',\n 'wrench':'\\ud83d\\udd27',\n 'writing_hand':'\\u270d\\ufe0f',\n 'x':'\\u274c',\n 'yellow_heart':'\\ud83d\\udc9b',\n 'yen':'\\ud83d\\udcb4',\n 'yin_yang':'\\u262f\\ufe0f',\n 'yum':'\\ud83d\\ude0b',\n 'zap':'\\u26a1\\ufe0f',\n 'zipper_mouth_face':'\\ud83e\\udd10',\n 'zzz':'\\ud83d\\udca4',\n\n /* special emojis :P */\n 'octocat': '<img alt=\":octocat:\" height=\"20\" width=\"20\" align=\"absmiddle\" src=\"https://assets-cdn.github.com/images/icons/emoji/octocat.png\">',\n 'showdown': '<span style=\"font-family: \\'Anonymous Pro\\', monospace; text-decoration: underline; text-decoration-style: dashed; text-decoration-color: #3e8b8a;text-underline-position: under;\">S</span>'\n};\n","/**\n * Created by Estevao on 31-05-2015.\n */\n\n/**\n * Showdown Converter class\n * @class\n * @param {object} [converterOptions]\n * @returns {Converter}\n */\nshowdown.Converter = function (converterOptions) {\n 'use strict';\n\n var\n /**\n * Options used by this converter\n * @private\n * @type {{}}\n */\n options = {},\n\n /**\n * Language extensions used by this converter\n * @private\n * @type {Array}\n */\n langExtensions = [],\n\n /**\n * Output modifiers extensions used by this converter\n * @private\n * @type {Array}\n */\n outputModifiers = [],\n\n /**\n * Event listeners\n * @private\n * @type {{}}\n */\n listeners = {},\n\n /**\n * The flavor set in this converter\n */\n setConvFlavor = setFlavor,\n\n /**\n * Metadata of the document\n * @type {{parsed: {}, raw: string, format: string}}\n */\n metadata = {\n parsed: {},\n raw: '',\n format: ''\n };\n\n _constructor();\n\n /**\n * Converter constructor\n * @private\n */\n function _constructor () {\n converterOptions = converterOptions || {};\n\n for (var gOpt in globalOptions) {\n if (globalOptions.hasOwnProperty(gOpt)) {\n options[gOpt] = globalOptions[gOpt];\n }\n }\n\n // Merge options\n if (typeof converterOptions === 'object') {\n for (var opt in converterOptions) {\n if (converterOptions.hasOwnProperty(opt)) {\n options[opt] = converterOptions[opt];\n }\n }\n } else {\n throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +\n ' was passed instead.');\n }\n\n if (options.extensions) {\n showdown.helper.forEach(options.extensions, _parseExtension);\n }\n }\n\n /**\n * Parse extension\n * @param {*} ext\n * @param {string} [name='']\n * @private\n */\n function _parseExtension (ext, name) {\n\n name = name || null;\n // If it's a string, the extension was previously loaded\n if (showdown.helper.isString(ext)) {\n ext = showdown.helper.stdExtName(ext);\n name = ext;\n\n // LEGACY_SUPPORT CODE\n if (showdown.extensions[ext]) {\n console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +\n 'Please inform the developer that the extension should be updated!');\n legacyExtensionLoading(showdown.extensions[ext], ext);\n return;\n // END LEGACY SUPPORT CODE\n\n } else if (!showdown.helper.isUndefined(extensions[ext])) {\n ext = extensions[ext];\n\n } else {\n throw Error('Extension \"' + ext + '\" could not be loaded. It was either not found or is not a valid extension.');\n }\n }\n\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExt = validate(ext, name);\n if (!validExt.valid) {\n throw Error(validExt.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n }\n if (ext[i].hasOwnProperty('listeners')) {\n for (var ln in ext[i].listeners) {\n if (ext[i].listeners.hasOwnProperty(ln)) {\n listen(ln, ext[i].listeners[ln]);\n }\n }\n }\n }\n\n }\n\n /**\n * LEGACY_SUPPORT\n * @param {*} ext\n * @param {string} name\n */\n function legacyExtensionLoading (ext, name) {\n if (typeof ext === 'function') {\n ext = ext(new showdown.Converter());\n }\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n var valid = validate(ext, name);\n\n if (!valid.valid) {\n throw Error(valid.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n default:// should never reach here\n throw Error('Extension loader error: Type unrecognized!!!');\n }\n }\n }\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n */\n function listen (name, callback) {\n if (!showdown.helper.isString(name)) {\n throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given');\n }\n\n if (typeof callback !== 'function') {\n throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given');\n }\n\n if (!listeners.hasOwnProperty(name)) {\n listeners[name] = [];\n }\n listeners[name].push(callback);\n }\n\n function rTrimInputText (text) {\n var rsp = text.match(/^\\s*/)[0].length,\n rgx = new RegExp('^\\\\s{0,' + rsp + '}', 'gm');\n return text.replace(rgx, '');\n }\n\n /**\n * Dispatch an event\n * @private\n * @param {string} evtName Event name\n * @param {string} text Text\n * @param {{}} options Converter Options\n * @param {{}} globals\n * @returns {string}\n */\n this._dispatch = function dispatch (evtName, text, options, globals) {\n if (listeners.hasOwnProperty(evtName)) {\n for (var ei = 0; ei < listeners[evtName].length; ++ei) {\n var nText = listeners[evtName][ei](evtName, text, this, options, globals);\n if (nText && typeof nText !== 'undefined') {\n text = nText;\n }\n }\n }\n return text;\n };\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n * @returns {showdown.Converter}\n */\n this.listen = function (name, callback) {\n listen(name, callback);\n return this;\n };\n\n /**\n * Converts a markdown string into HTML\n * @param {string} text\n * @returns {*}\n */\n this.makeHtml = function (text) {\n //check if text is not falsy\n if (!text) {\n return text;\n }\n\n var globals = {\n gHtmlBlocks: [],\n gHtmlMdBlocks: [],\n gHtmlSpans: [],\n gUrls: {},\n gTitles: {},\n gDimensions: {},\n gListLevel: 0,\n hashLinkCounts: {},\n langExtensions: langExtensions,\n outputModifiers: outputModifiers,\n converter: this,\n ghCodeBlocks: [],\n metadata: {\n parsed: {},\n raw: '',\n format: ''\n }\n };\n\n // This lets us use ¨ trema as an escape char to avoid md5 hashes\n // The choice of character is arbitrary; anything that isn't\n // magic in Markdown will work.\n text = text.replace(/¨/g, '¨T');\n\n // Replace $ with ¨D\n // RegExp interprets $ as a special character\n // when it's in a replacement string\n text = text.replace(/\\$/g, '¨D');\n\n // Standardize line endings\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\n\n // Stardardize line spaces\n text = text.replace(/\\u00A0/g, ' ');\n\n if (options.smartIndentationFix) {\n text = rTrimInputText(text);\n }\n\n // Make sure text begins and ends with a couple of newlines:\n text = '\\n\\n' + text + '\\n\\n';\n\n // detab\n text = showdown.subParser('detab')(text, options, globals);\n\n /**\n * Strip any lines consisting only of spaces and tabs.\n * This makes subsequent regexs easier to write, because we can\n * match consecutive blank lines with /\\n+/ instead of something\n * contorted like /[ \\t]*\\n+/\n */\n text = text.replace(/^[ \\t]+$/mg, '');\n\n //run languageExtensions\n showdown.helper.forEach(langExtensions, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // run the sub parsers\n text = showdown.subParser('metadata')(text, options, globals);\n text = showdown.subParser('hashPreCodeTags')(text, options, globals);\n text = showdown.subParser('githubCodeBlocks')(text, options, globals);\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('hashCodeTags')(text, options, globals);\n text = showdown.subParser('stripLinkDefinitions')(text, options, globals);\n text = showdown.subParser('blockGamut')(text, options, globals);\n text = showdown.subParser('unhashHTMLSpans')(text, options, globals);\n text = showdown.subParser('unescapeSpecialChars')(text, options, globals);\n\n // attacklab: Restore dollar signs\n text = text.replace(/¨D/g, '$$');\n\n // attacklab: Restore tremas\n text = text.replace(/¨T/g, '¨');\n\n // render a complete html document instead of a partial if the option is enabled\n text = showdown.subParser('completeHTMLDocument')(text, options, globals);\n\n // Run output modifiers\n showdown.helper.forEach(outputModifiers, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // update metadata\n metadata = globals.metadata;\n return text;\n };\n\n /**\n * Converts an HTML string into a markdown string\n * @param src\n * @param [HTMLParser] A WHATWG DOM and HTML parser, such as JSDOM. If none is supplied, window.document will be used.\n * @returns {string}\n */\n this.makeMarkdown = this.makeMd = function (src, HTMLParser) {\n\n // replace \\r\\n with \\n\n src = src.replace(/\\r\\n/g, '\\n');\n src = src.replace(/\\r/g, '\\n'); // old macs\n\n // due to an edge case, we need to find this: > <\n // to prevent removing of non silent white spaces\n // ex: <em>this is</em> <strong>sparta</strong>\n src = src.replace(/>[ \\t]+</, '>¨NBSP;<');\n\n if (!HTMLParser) {\n if (window && window.document) {\n HTMLParser = window.document;\n } else {\n throw new Error('HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM');\n }\n }\n\n var doc = HTMLParser.createElement('div');\n doc.innerHTML = src;\n\n var globals = {\n preList: substitutePreCodeTags(doc)\n };\n\n // remove all newlines and collapse spaces\n clean(doc);\n\n // some stuff, like accidental reference links must now be escaped\n // TODO\n // doc.innerHTML = doc.innerHTML.replace(/\\[[\\S\\t ]]/);\n\n var nodes = doc.childNodes,\n mdDoc = '';\n\n for (var i = 0; i < nodes.length; i++) {\n mdDoc += showdown.subParser('makeMarkdown.node')(nodes[i], globals);\n }\n\n function clean (node) {\n for (var n = 0; n < node.childNodes.length; ++n) {\n var child = node.childNodes[n];\n if (child.nodeType === 3) {\n if (!/\\S/.test(child.nodeValue) && !/^[ ]+$/.test(child.nodeValue)) {\n node.removeChild(child);\n --n;\n } else {\n child.nodeValue = child.nodeValue.split('\\n').join(' ');\n child.nodeValue = child.nodeValue.replace(/(\\s)+/g, '$1');\n }\n } else if (child.nodeType === 1) {\n clean(child);\n }\n }\n }\n\n // find all pre tags and replace contents with placeholder\n // we need this so that we can remove all indentation from html\n // to ease up parsing\n function substitutePreCodeTags (doc) {\n\n var pres = doc.querySelectorAll('pre'),\n presPH = [];\n\n for (var i = 0; i < pres.length; ++i) {\n\n if (pres[i].childElementCount === 1 && pres[i].firstChild.tagName.toLowerCase() === 'code') {\n var content = pres[i].firstChild.innerHTML.trim(),\n language = pres[i].firstChild.getAttribute('data-language') || '';\n\n // if data-language attribute is not defined, then we look for class language-*\n if (language === '') {\n var classes = pres[i].firstChild.className.split(' ');\n for (var c = 0; c < classes.length; ++c) {\n var matches = classes[c].match(/^language-(.+)$/);\n if (matches !== null) {\n language = matches[1];\n break;\n }\n }\n }\n\n // unescape html entities in content\n content = showdown.helper.unescapeHTMLEntities(content);\n\n presPH.push(content);\n pres[i].outerHTML = '<precode language=\"' + language + '\" precodenum=\"' + i.toString() + '\"></precode>';\n } else {\n presPH.push(pres[i].innerHTML);\n pres[i].innerHTML = '';\n pres[i].setAttribute('prenum', i.toString());\n }\n }\n return presPH;\n }\n\n return mdDoc;\n };\n\n /**\n * Set an option of this Converter instance\n * @param {string} key\n * @param {*} value\n */\n this.setOption = function (key, value) {\n options[key] = value;\n };\n\n /**\n * Get the option of this Converter instance\n * @param {string} key\n * @returns {*}\n */\n this.getOption = function (key) {\n return options[key];\n };\n\n /**\n * Get the options of this Converter instance\n * @returns {{}}\n */\n this.getOptions = function () {\n return options;\n };\n\n /**\n * Add extension to THIS converter\n * @param {{}} extension\n * @param {string} [name=null]\n */\n this.addExtension = function (extension, name) {\n name = name || null;\n _parseExtension(extension, name);\n };\n\n /**\n * Use a global registered extension with THIS converter\n * @param {string} extensionName Name of the previously registered extension\n */\n this.useExtension = function (extensionName) {\n _parseExtension(extensionName);\n };\n\n /**\n * Set the flavor THIS converter should use\n * @param {string} name\n */\n this.setFlavor = function (name) {\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n var preset = flavor[name];\n setConvFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n options[option] = preset[option];\n }\n }\n };\n\n /**\n * Get the currently set flavor of this converter\n * @returns {string}\n */\n this.getFlavor = function () {\n return setConvFlavor;\n };\n\n /**\n * Remove an extension from THIS converter.\n * Note: This is a costly operation. It's better to initialize a new converter\n * and specify the extensions you wish to use\n * @param {Array} extension\n */\n this.removeExtension = function (extension) {\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n for (var a = 0; a < extension.length; ++a) {\n var ext = extension[a];\n for (var i = 0; i < langExtensions.length; ++i) {\n if (langExtensions[i] === ext) {\n langExtensions.splice(i, 1);\n }\n }\n for (var ii = 0; ii < outputModifiers.length; ++ii) {\n if (outputModifiers[ii] === ext) {\n outputModifiers.splice(ii, 1);\n }\n }\n }\n };\n\n /**\n * Get all extension of THIS converter\n * @returns {{language: Array, output: Array}}\n */\n this.getAllExtensions = function () {\n return {\n language: langExtensions,\n output: outputModifiers\n };\n };\n\n /**\n * Get the metadata of the previously parsed document\n * @param raw\n * @returns {string|{}}\n */\n this.getMetadata = function (raw) {\n if (raw) {\n return metadata.raw;\n } else {\n return metadata.parsed;\n }\n };\n\n /**\n * Get the metadata format of the previously parsed document\n * @returns {string}\n */\n this.getMetadataFormat = function () {\n return metadata.format;\n };\n\n /**\n * Private: set a single key, value metadata pair\n * @param {string} key\n * @param {string} value\n */\n this._setMetadataPair = function (key, value) {\n metadata.parsed[key] = value;\n };\n\n /**\n * Private: set metadata format\n * @param {string} format\n */\n this._setMetadataFormat = function (format) {\n metadata.format = format;\n };\n\n /**\n * Private: set metadata raw text\n * @param {string} raw\n */\n this._setMetadataRaw = function (raw) {\n metadata.raw = raw;\n };\n};\n","/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('anchors', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('anchors.before', text, options, globals);\n\n var writeAnchorTag = function (wholeMatch, linkText, linkId, url, m5, m6, title) {\n if (showdown.helper.isUndefined(title)) {\n title = '';\n }\n linkId = linkId.toLowerCase();\n\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n } else if (!url) {\n if (!linkId) {\n // lower-case and turn embedded newlines into spaces\n linkId = linkText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\n url = globals.gUrls[linkId];\n if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\n title = globals.gTitles[linkId];\n }\n } else {\n return wholeMatch;\n }\n }\n\n //url = showdown.helper.escapeCharacters(url, '*_', false); // replaced line to improve performance\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n\n var result = '<a href=\"' + url + '\"';\n\n if (title !== '' && title !== null) {\n title = title.replace(/\"/g, '"');\n //title = showdown.helper.escapeCharacters(title, '*_', false); // replaced line to improve performance\n title = title.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n // optionLinksInNewWindow only applies\n // to external links. Hash links (#) open in same page\n if (options.openLinksInNewWindow && !/^#/.test(url)) {\n // escaped _\n result += ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n\n result += '>' + linkText + '</a>';\n\n return result;\n };\n\n // First, handle reference-style links: [link text] [id]\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)] ?(?:\\n *)?\\[(.*?)]()()()()/g, writeAnchorTag);\n\n // Next, inline-style links: [link text](url \"optional title\")\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<([^>]*)>(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // normal cases\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // handle reference-style shortcuts: [link text]\n // These must come last in case you've also got [link test][1]\n // or [link test](/foo)\n text = text.replace(/\\[([^\\[\\]]+)]()()()()()/g, writeAnchorTag);\n\n // Lastly handle GithubMentions if option is enabled\n if (options.ghMentions) {\n text = text.replace(/(^|\\s)(\\\\)?(@([a-z\\d]+(?:[a-z\\d.-]+?[a-z\\d]+)*))/gmi, function (wm, st, escape, mentions, username) {\n if (escape === '\\\\') {\n return st + mentions;\n }\n\n //check if options.ghMentionsLink is a string\n if (!showdown.helper.isString(options.ghMentionsLink)) {\n throw new Error('ghMentionsLink option must be a string');\n }\n var lnk = options.ghMentionsLink.replace(/\\{u}/g, username),\n target = '';\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return st + '<a href=\"' + lnk + '\"' + target + '>' + mentions + '</a>';\n });\n }\n\n text = globals.converter._dispatch('anchors.after', text, options, globals);\n return text;\n});\n","// url allowed chars [a-z\\d_.~:/?#[]@!$&'()*+,;=-]\n\nvar simpleURLRegex = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+?\\.[^'\">\\s]+?)()(\\1)?(?=\\s|$)(?![\"<>])/gi,\n simpleURLRegex2 = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+?)([.!?,()\\[\\]])?(\\1)?(?=\\s|$)(?![\"<>])/gi,\n delimUrlRegex = /()<(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+)()>()/gi,\n simpleMailRegex = /(^|\\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(?=$|\\s)/gmi,\n delimMailRegex = /<()(?:mailto:)?([-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\n\n replaceLink = function (options) {\n 'use strict';\n return function (wm, leadingMagicChars, link, m2, m3, trailingPunctuation, trailingMagicChars) {\n link = link.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var lnkTxt = link,\n append = '',\n target = '',\n lmc = leadingMagicChars || '',\n tmc = trailingMagicChars || '';\n if (/^www\\./i.test(link)) {\n link = link.replace(/^www\\./i, 'http://www.');\n }\n if (options.excludeTrailingPunctuationFromURLs && trailingPunctuation) {\n append = trailingPunctuation;\n }\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return lmc + '<a href=\"' + link + '\"' + target + '>' + lnkTxt + '</a>' + append + tmc;\n };\n },\n\n replaceMail = function (options, globals) {\n 'use strict';\n return function (wholeMatch, b, mail) {\n var href = 'mailto:';\n b = b || '';\n mail = showdown.subParser('unescapeSpecialChars')(mail, options, globals);\n if (options.encodeEmails) {\n href = showdown.helper.encodeEmailAddress(href + mail);\n mail = showdown.helper.encodeEmailAddress(mail);\n } else {\n href = href + mail;\n }\n return b + '<a href=\"' + href + '\">' + mail + '</a>';\n };\n };\n\nshowdown.subParser('autoLinks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('autoLinks.before', text, options, globals);\n\n text = text.replace(delimUrlRegex, replaceLink(options));\n text = text.replace(delimMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('autoLinks.after', text, options, globals);\n\n return text;\n});\n\nshowdown.subParser('simplifiedAutoLinks', function (text, options, globals) {\n 'use strict';\n\n if (!options.simplifiedAutoLink) {\n return text;\n }\n\n text = globals.converter._dispatch('simplifiedAutoLinks.before', text, options, globals);\n\n if (options.excludeTrailingPunctuationFromURLs) {\n text = text.replace(simpleURLRegex2, replaceLink(options));\n } else {\n text = text.replace(simpleURLRegex, replaceLink(options));\n }\n text = text.replace(simpleMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('simplifiedAutoLinks.after', text, options, globals);\n\n return text;\n});\n","/**\n * These are all the transformations that form block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('blockGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockGamut.before', text, options, globals);\n\n // we parse blockquotes first so that we can have headings and hrs\n // inside blockquotes\n text = showdown.subParser('blockQuotes')(text, options, globals);\n text = showdown.subParser('headers')(text, options, globals);\n\n // Do Horizontal Rules:\n text = showdown.subParser('horizontalRule')(text, options, globals);\n\n text = showdown.subParser('lists')(text, options, globals);\n text = showdown.subParser('codeBlocks')(text, options, globals);\n text = showdown.subParser('tables')(text, options, globals);\n\n // We already ran _HashHTMLBlocks() before, in Markdown(), but that\n // was to escape raw HTML in the original Markdown source. This time,\n // we're escaping the markup we've just created, so that we don't wrap\n // <p> tags around block-level tags.\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('paragraphs')(text, options, globals);\n\n text = globals.converter._dispatch('blockGamut.after', text, options, globals);\n\n return text;\n});\n","showdown.subParser('blockQuotes', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockQuotes.before', text, options, globals);\n\n // add a couple extra lines after the text and endtext mark\n text = text + '\\n\\n';\n\n var rgx = /(^ {0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+/gm;\n\n if (options.splitAdjacentBlockquotes) {\n rgx = /^ {0,3}>[\\s\\S]*?(?:\\n\\n)/gm;\n }\n\n text = text.replace(rgx, function (bq) {\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, ''); // trim one level of quoting\n\n // attacklab: clean up hack\n bq = bq.replace(/¨0/g, '');\n\n bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\n bq = showdown.subParser('githubCodeBlocks')(bq, options, globals);\n bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse\n\n bq = bq.replace(/(^|\\n)/g, '$1 ');\n // These leading spaces screw with <pre> content, so we need to fix that:\n bq = bq.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\n var pre = m1;\n // attacklab: hack around Konqueror 3.5.4 bug:\n pre = pre.replace(/^ /mg, '¨0');\n pre = pre.replace(/¨0/g, '');\n return pre;\n });\n\n return showdown.subParser('hashBlock')('<blockquote>\\n' + bq + '\\n</blockquote>', options, globals);\n });\n\n text = globals.converter._dispatch('blockQuotes.after', text, options, globals);\n return text;\n});\n","/**\n * Process Markdown `<pre><code>` blocks.\n */\nshowdown.subParser('codeBlocks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeBlocks.before', text, options, globals);\n\n // sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=¨0))/g;\n text = text.replace(pattern, function (wholeMatch, m1, m2) {\n var codeblock = m1,\n nextChar = m2,\n end = '\\n';\n\n codeblock = showdown.subParser('outdent')(codeblock, options, globals);\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\n\n if (options.omitExtraWLInCodeBlocks) {\n end = '';\n }\n\n codeblock = '<pre><code>' + codeblock + end + '</code></pre>';\n\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\n });\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n\n text = globals.converter._dispatch('codeBlocks.after', text, options, globals);\n return text;\n});\n","/**\n *\n * * Backtick quotes are used for <code></code> spans.\n *\n * * You can use multiple backticks as the delimiters if you want to\n * include literal backticks in the code span. So, this input:\n *\n * Just type ``foo `bar` baz`` at the prompt.\n *\n * Will translate to:\n *\n * <p>Just type <code>foo `bar` baz</code> at the prompt.</p>\n *\n * There's no arbitrary limit to the number of backticks you\n * can use as delimters. If you need three consecutive backticks\n * in your code, use four for delimiters, etc.\n *\n * * You can use spaces to get literal backticks at the edges:\n *\n * ... type `` `bar` `` ...\n *\n * Turns to:\n *\n * ... type <code>`bar`</code> ...\n */\nshowdown.subParser('codeSpans', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeSpans.before', text, options, globals);\n\n if (typeof (text) === 'undefined') {\n text = '';\n }\n text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,\n function (wholeMatch, m1, m2, m3) {\n var c = m3;\n c = c.replace(/^([ \\t]*)/g, '');\t// leading whitespace\n c = c.replace(/[ \\t]*$/g, '');\t// trailing whitespace\n c = showdown.subParser('encodeCode')(c, options, globals);\n c = m1 + '<code>' + c + '</code>';\n c = showdown.subParser('hashHTMLSpans')(c, options, globals);\n return c;\n }\n );\n\n text = globals.converter._dispatch('codeSpans.after', text, options, globals);\n return text;\n});\n","/**\n * Create a full HTML document from the processed markdown\n */\nshowdown.subParser('completeHTMLDocument', function (text, options, globals) {\n 'use strict';\n\n if (!options.completeHTMLDocument) {\n return text;\n }\n\n text = globals.converter._dispatch('completeHTMLDocument.before', text, options, globals);\n\n var doctype = 'html',\n doctypeParsed = '<!DOCTYPE HTML>\\n',\n title = '',\n charset = '<meta charset=\"utf-8\">\\n',\n lang = '',\n metadata = '';\n\n if (typeof globals.metadata.parsed.doctype !== 'undefined') {\n doctypeParsed = '<!DOCTYPE ' + globals.metadata.parsed.doctype + '>\\n';\n doctype = globals.metadata.parsed.doctype.toString().toLowerCase();\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"utf-8\">';\n }\n }\n\n for (var meta in globals.metadata.parsed) {\n if (globals.metadata.parsed.hasOwnProperty(meta)) {\n switch (meta.toLowerCase()) {\n case 'doctype':\n break;\n\n case 'title':\n title = '<title>' + globals.metadata.parsed.title + '\\n';\n break;\n\n case 'charset':\n if (doctype === 'html' || doctype === 'html5') {\n charset = '\\n';\n } else {\n charset = '\\n';\n }\n break;\n\n case 'language':\n case 'lang':\n lang = ' lang=\"' + globals.metadata.parsed[meta] + '\"';\n metadata += '\\n';\n break;\n\n default:\n metadata += '\\n';\n }\n }\n }\n\n text = doctypeParsed + '\\n\\n' + title + charset + metadata + '\\n\\n' + text.trim() + '\\n\\n';\n\n text = globals.converter._dispatch('completeHTMLDocument.after', text, options, globals);\n return text;\n});\n","/**\n * Convert all tabs to spaces\n */\nshowdown.subParser('detab', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('detab.before', text, options, globals);\n\n // expand first n-1 tabs\n text = text.replace(/\\t(?=\\t)/g, ' '); // g_tab_width\n\n // replace the nth with two sentinels\n text = text.replace(/\\t/g, '¨A¨B');\n\n // use the sentinel to anchor our regex so it doesn't explode\n text = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) {\n var leadingText = m1,\n numSpaces = 4 - leadingText.length % 4; // g_tab_width\n\n // there *must* be a better way to do this:\n for (var i = 0; i < numSpaces; i++) {\n leadingText += ' ';\n }\n\n return leadingText;\n });\n\n // clean up sentinels\n text = text.replace(/¨A/g, ' '); // g_tab_width\n text = text.replace(/¨B/g, '');\n\n text = globals.converter._dispatch('detab.after', text, options, globals);\n return text;\n});\n","showdown.subParser('ellipsis', function (text, options, globals) {\n 'use strict';\n\n if (!options.ellipsis) {\n return text;\n }\n\n text = globals.converter._dispatch('ellipsis.before', text, options, globals);\n\n text = text.replace(/\\.\\.\\./g, '…');\n\n text = globals.converter._dispatch('ellipsis.after', text, options, globals);\n\n return text;\n});\n","/**\n * Turn emoji codes into emojis\n *\n * List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis\n */\nshowdown.subParser('emoji', function (text, options, globals) {\n 'use strict';\n\n if (!options.emoji) {\n return text;\n }\n\n text = globals.converter._dispatch('emoji.before', text, options, globals);\n\n var emojiRgx = /:([\\S]+?):/g;\n\n text = text.replace(emojiRgx, function (wm, emojiCode) {\n if (showdown.helper.emojis.hasOwnProperty(emojiCode)) {\n return showdown.helper.emojis[emojiCode];\n }\n return wm;\n });\n\n text = globals.converter._dispatch('emoji.after', text, options, globals);\n\n return text;\n});\n","/**\n * Smart processing for ampersands and angle brackets that need to be encoded.\n */\nshowdown.subParser('encodeAmpsAndAngles', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeAmpsAndAngles.before', text, options, globals);\n\n // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\n // http://bumppo.net/projects/amputator/\n text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, '&');\n\n // Encode naked <'s\n text = text.replace(/<(?![a-z\\/?$!])/gi, '<');\n\n // Encode <\n text = text.replace(/\n text = text.replace(/>/g, '>');\n\n text = globals.converter._dispatch('encodeAmpsAndAngles.after', text, options, globals);\n return text;\n});\n","/**\n * Returns the string, with after processing the following backslash escape sequences.\n *\n * attacklab: The polite way to do this is with the new escapeCharacters() function:\n *\n * text = escapeCharacters(text,\"\\\\\",true);\n * text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\n *\n * ...but we're sidestepping its use of the (slow) RegExp constructor\n * as an optimization for Firefox. This function gets called a LOT.\n */\nshowdown.subParser('encodeBackslashEscapes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeBackslashEscapes.before', text, options, globals);\n\n text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\n text = text.replace(/\\\\([`*_{}\\[\\]()>#+.!~=|:-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeBackslashEscapes.after', text, options, globals);\n return text;\n});\n","/**\n * Encode/escape certain characters inside Markdown code runs.\n * The point is that in code, these characters are literals,\n * and lose their special Markdown meanings.\n */\nshowdown.subParser('encodeCode', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('encodeCode.before', text, options, globals);\n\n // Encode all ampersands; HTML entities are not\n // entities within a Markdown code span.\n text = text\n .replace(/&/g, '&')\n // Do the angle bracket song and dance:\n .replace(//g, '>')\n // Now, escape characters that are magic in Markdown:\n .replace(/([*_{}\\[\\]\\\\=~-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeCode.after', text, options, globals);\n return text;\n});\n","/**\n * Within tags -- meaning between < and > -- encode [\\ ` * _ ~ =] so they\n * don't conflict with their use in Markdown for code, italics and strong.\n */\nshowdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.before', text, options, globals);\n\n // Build a regex to find HTML tags.\n var tags = /<\\/?[a-z\\d_:-]+(?:[\\s]+[\\s\\S]+?)?>/gi,\n comments = /-]|-[^>])(?:[^-]|-[^-])*)--)>/gi;\n\n text = text.replace(tags, function (wholeMatch) {\n return wholeMatch\n .replace(/(.)<\\/?code>(?=.)/g, '$1`')\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = text.replace(comments, function (wholeMatch) {\n return wholeMatch\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.after', text, options, globals);\n return text;\n});\n","/**\n * Handle github codeblocks prior to running HashHTML so that\n * HTML contained within the codeblock gets escaped properly\n * Example:\n * ```ruby\n * def hello_world(x)\n * puts \"Hello, #{x}\"\n * end\n * ```\n */\nshowdown.subParser('githubCodeBlocks', function (text, options, globals) {\n 'use strict';\n\n // early exit if option is not enabled\n if (!options.ghCodeBlocks) {\n return text;\n }\n\n text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals);\n\n text += '¨0';\n\n text = text.replace(/(?:^|\\n)(?: {0,3})(```+|~~~+)(?: *)([^\\s`~]*)\\n([\\s\\S]*?)\\n(?: {0,3})\\1/g, function (wholeMatch, delim, language, codeblock) {\n var end = (options.omitExtraWLInCodeBlocks) ? '' : '\\n';\n\n // First parse the github code block\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing whitespace\n\n codeblock = '
' + codeblock + end + '
';\n\n codeblock = showdown.subParser('hashBlock')(codeblock, options, globals);\n\n // Since GHCodeblocks can be false positives, we need to\n // store the primitive text and the parsed text in a global var,\n // and then return a token\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n });\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals);\n});\n","showdown.subParser('hashBlock', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashBlock.before', text, options, globals);\n text = text.replace(/(^\\n+|\\n+$)/g, '');\n text = '\\n\\n¨K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\n text = globals.converter._dispatch('hashBlock.after', text, options, globals);\n return text;\n});\n","/**\n * Hash and escape elements that should not be parsed as markdown\n */\nshowdown.subParser('hashCodeTags', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashCodeTags.before', text, options, globals);\n\n var repFunc = function (wholeMatch, match, left, right) {\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C';\n };\n\n // Hash naked \n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, ']*>', '', 'gim');\n\n text = globals.converter._dispatch('hashCodeTags.after', text, options, globals);\n return text;\n});\n","showdown.subParser('hashElement', function (text, options, globals) {\n 'use strict';\n\n return function (wholeMatch, m1) {\n var blockText = m1;\n\n // Undo double lines\n blockText = blockText.replace(/\\n\\n/g, '\\n');\n blockText = blockText.replace(/^\\n/, '');\n\n // strip trailing blank lines\n blockText = blockText.replace(/\\n+$/g, '');\n\n // Replace the element text with a marker (\"¨KxK\" where x is its key)\n blockText = '\\n\\n¨K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\n\n return blockText;\n };\n});\n","showdown.subParser('hashHTMLBlocks', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLBlocks.before', text, options, globals);\n\n var blockTags = [\n 'pre',\n 'div',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'table',\n 'dl',\n 'ol',\n 'ul',\n 'script',\n 'noscript',\n 'form',\n 'fieldset',\n 'iframe',\n 'math',\n 'style',\n 'section',\n 'header',\n 'footer',\n 'nav',\n 'article',\n 'aside',\n 'address',\n 'audio',\n 'canvas',\n 'figure',\n 'hgroup',\n 'output',\n 'video',\n 'p'\n ],\n repFunc = function (wholeMatch, match, left, right) {\n var txt = wholeMatch;\n // check if this html element is marked as markdown\n // if so, it's contents should be parsed as markdown\n if (left.search(/\\bmarkdown\\b/) !== -1) {\n txt = left + globals.converter.makeHtml(match) + right;\n }\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n };\n\n if (options.backslashEscapesHTMLTags) {\n // encode backslash escaped HTML tags\n text = text.replace(/\\\\<(\\/?[^>]+?)>/g, function (wm, inside) {\n return '<' + inside + '>';\n });\n }\n\n // hash HTML Blocks\n for (var i = 0; i < blockTags.length; ++i) {\n\n var opTagPos,\n rgx1 = new RegExp('^ {0,3}(<' + blockTags[i] + '\\\\b[^>]*>)', 'im'),\n patLeft = '<' + blockTags[i] + '\\\\b[^>]*>',\n patRight = '';\n // 1. Look for the first position of the first opening HTML tag in the text\n while ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) {\n\n // if the HTML tag is \\ escaped, we need to escape it and break\n\n\n //2. Split the text in that position\n var subTexts = showdown.helper.splitAtIndex(text, opTagPos),\n //3. Match recursively\n newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im');\n\n // prevent an infinite loop\n if (newSubText1 === subTexts[1]) {\n break;\n }\n text = subTexts[0].concat(newSubText1);\n }\n }\n // HR SPECIAL CASE\n text = text.replace(/(\\n {0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n // Special case for standalone HTML comments\n text = showdown.helper.replaceRecursiveRegExp(text, function (txt) {\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n }, '^ {0,3}', 'gm');\n\n // PHP and ASP-style processor instructions ( and <%...%>)\n text = text.replace(/(?:\\n\\n)( {0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n text = globals.converter._dispatch('hashHTMLBlocks.after', text, options, globals);\n return text;\n});\n","/**\n * Hash span elements that should not be parsed as markdown\n */\nshowdown.subParser('hashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLSpans.before', text, options, globals);\n\n function hashHTMLSpan (html) {\n return '¨C' + (globals.gHtmlSpans.push(html) - 1) + 'C';\n }\n\n // Hash Self Closing tags\n text = text.replace(/<[^>]+?\\/>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags without properties\n text = text.replace(/<([^>]+?)>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags with properties\n text = text.replace(/<([^>]+?)\\s[^>]+?>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash self closing tags without />\n text = text.replace(/<[^>]+?>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n /*showdown.helper.matchRecursiveRegExp(text, ']*>', '', 'gi');*/\n\n text = globals.converter._dispatch('hashHTMLSpans.after', text, options, globals);\n return text;\n});\n\n/**\n * Unhash HTML spans\n */\nshowdown.subParser('unhashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unhashHTMLSpans.before', text, options, globals);\n\n for (var i = 0; i < globals.gHtmlSpans.length; ++i) {\n var repText = globals.gHtmlSpans[i],\n // limiter to prevent infinite loop (assume 10 as limit for recurse)\n limit = 0;\n\n while (/¨C(\\d+)C/.test(repText)) {\n var num = RegExp.$1;\n repText = repText.replace('¨C' + num + 'C', globals.gHtmlSpans[num]);\n if (limit === 10) {\n console.error('maximum nesting of 10 spans reached!!!');\n break;\n }\n ++limit;\n }\n text = text.replace('¨C' + i + 'C', repText);\n }\n\n text = globals.converter._dispatch('unhashHTMLSpans.after', text, options, globals);\n return text;\n});\n","/**\n * Hash and escape
 elements that should not be parsed as markdown\n */\nshowdown.subParser('hashPreCodeTags', function (text, options, globals) {\n  'use strict';\n  text = globals.converter._dispatch('hashPreCodeTags.before', text, options, globals);\n\n  var repFunc = function (wholeMatch, match, left, right) {\n    // encode html entities\n    var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n    return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n  };\n\n  // Hash 
\n  text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}]*>\\\\s*]*>', '^ {0,3}\\\\s*
', 'gim');\n\n text = globals.converter._dispatch('hashPreCodeTags.after', text, options, globals);\n return text;\n});\n","showdown.subParser('headers', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('headers.before', text, options, globals);\n\n var headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart),\n\n // Set text-style headers:\n //\tHeader 1\n //\t========\n //\n //\tHeader 2\n //\t--------\n //\n setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\n setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm;\n\n text = text.replace(setextRegexH1, function (wholeMatch, m1) {\n\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart,\n hashBlock = '' + spanGamut + '';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n text = text.replace(setextRegexH2, function (matchFound, m1) {\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart + 1,\n hashBlock = '' + spanGamut + '';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n // atx-style headers:\n // # Header 1\n // ## Header 2\n // ## Header 2 with closing hashes ##\n // ...\n // ###### Header 6\n //\n var atxStyle = (options.requireSpaceBeforeHeadingText) ? /^(#{1,6})[ \\t]+(.+?)[ \\t]*#*\\n+/gm : /^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm;\n\n text = text.replace(atxStyle, function (wholeMatch, m1, m2) {\n var hText = m2;\n if (options.customizedHeaderId) {\n hText = m2.replace(/\\s?\\{([^{]+?)}\\s*$/, '');\n }\n\n var span = showdown.subParser('spanGamut')(hText, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m2) + '\"',\n hLevel = headerLevelStart - 1 + m1.length,\n header = '' + span + '';\n\n return showdown.subParser('hashBlock')(header, options, globals);\n });\n\n function headerId (m) {\n var title,\n prefix;\n\n // It is separate from other options to allow combining prefix and customized\n if (options.customizedHeaderId) {\n var match = m.match(/\\{([^{]+?)}\\s*$/);\n if (match && match[1]) {\n m = match[1];\n }\n }\n\n title = m;\n\n // Prefix id to prevent causing inadvertent pre-existing style matches.\n if (showdown.helper.isString(options.prefixHeaderId)) {\n prefix = options.prefixHeaderId;\n } else if (options.prefixHeaderId === true) {\n prefix = 'section-';\n } else {\n prefix = '';\n }\n\n if (!options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (options.ghCompatibleHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&/g, '')\n .replace(/¨T/g, '')\n .replace(/¨D/g, '')\n // replace rest of the chars (&~$ are repeated as they might have been escaped)\n // borrowed from github's redcarpet (some they should produce similar results)\n .replace(/[&+$,\\/:;=?@\"#{}|^¨~\\[\\]`\\\\*)(%.!'<>]/g, '')\n .toLowerCase();\n } else if (options.rawHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&/g, '&')\n .replace(/¨T/g, '¨')\n .replace(/¨D/g, '$')\n // replace \" and '\n .replace(/[\"']/g, '-')\n .toLowerCase();\n } else {\n title = title\n .replace(/[^\\w]/g, '')\n .toLowerCase();\n }\n\n if (options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (globals.hashLinkCounts[title]) {\n title = title + '-' + (globals.hashLinkCounts[title]++);\n } else {\n globals.hashLinkCounts[title] = 1;\n }\n return title;\n }\n\n text = globals.converter._dispatch('headers.after', text, options, globals);\n return text;\n});\n","/**\n * Turn Markdown link shortcuts into XHTML tags.\n */\nshowdown.subParser('horizontalRule', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('horizontalRule.before', text, options, globals);\n\n var key = showdown.subParser('hashBlock')('
', options, globals);\n text = text.replace(/^ {0,2}( ?-){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?\\*){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?_){3,}[ \\t]*$/gm, key);\n\n text = globals.converter._dispatch('horizontalRule.after', text, options, globals);\n return text;\n});\n","/**\n * Turn Markdown image shortcuts into tags.\n */\nshowdown.subParser('images', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('images.before', text, options, globals);\n\n var inlineRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]??(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n crazyRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<([^>]*)>(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:(?:([\"'])([^\"]*?)\\6))?[ \\t]?\\)/g,\n base64RegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]??(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n referenceRegExp = /!\\[([^\\]]*?)] ?(?:\\n *)?\\[([\\s\\S]*?)]()()()()()/g,\n refShortcutRegExp = /!\\[([^\\[\\]]+)]()()()()()/g;\n\n function writeImageTagBase64 (wholeMatch, altText, linkId, url, width, height, m5, title) {\n url = url.replace(/\\s/g, '');\n return writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title);\n }\n\n function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) {\n\n var gUrls = globals.gUrls,\n gTitles = globals.gTitles,\n gDims = globals.gDimensions;\n\n linkId = linkId.toLowerCase();\n\n if (!title) {\n title = '';\n }\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n\n } else if (url === '' || url === null) {\n if (linkId === '' || linkId === null) {\n // lower-case and turn embedded newlines into spaces\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(gUrls[linkId])) {\n url = gUrls[linkId];\n if (!showdown.helper.isUndefined(gTitles[linkId])) {\n title = gTitles[linkId];\n }\n if (!showdown.helper.isUndefined(gDims[linkId])) {\n width = gDims[linkId].width;\n height = gDims[linkId].height;\n }\n } else {\n return wholeMatch;\n }\n }\n\n altText = altText\n .replace(/\"/g, '"')\n //altText = showdown.helper.escapeCharacters(altText, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n //url = showdown.helper.escapeCharacters(url, '*_', false);\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var result = '\"'x \"optional title\")\n\n // base64 encoded images\n text = text.replace(base64RegExp, writeImageTagBase64);\n\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(crazyRegExp, writeImageTag);\n\n // normal cases\n text = text.replace(inlineRegExp, writeImageTag);\n\n // handle reference-style shortcuts: ![img text]\n text = text.replace(refShortcutRegExp, writeImageTag);\n\n text = globals.converter._dispatch('images.after', text, options, globals);\n return text;\n});\n","showdown.subParser('italicsAndBold', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('italicsAndBold.before', text, options, globals);\n\n // it's faster to have 3 separate regexes for each case than have just one\n // because of backtracing, in some cases, it could lead to an exponential effect\n // called \"catastrophic backtrace\". Ominous!\n\n function parseInside (txt, left, right) {\n /*\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n */\n return left + txt + right;\n }\n\n // Parse underscores\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return parseInside (txt, '', '');\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return parseInside (txt, '', '');\n });\n text = text.replace(/\\b_(\\S[\\s\\S]*?)_\\b/g, function (wm, txt) {\n return parseInside (txt, '', '');\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '', '') : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '', '') : wm;\n });\n text = text.replace(/_([^\\s_][\\s\\S]*?)_/g, function (wm, m) {\n // !/^_[^_]/.test(m) - test if it doesn't start with __ (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '', '') : wm;\n });\n }\n\n // Now parse asterisks\n if (options.literalMidWordAsterisks) {\n text = text.replace(/([^*]|^)\\B\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '', '');\n });\n text = text.replace(/([^*]|^)\\B\\*\\*(\\S[\\s\\S]*?)\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '', '');\n });\n text = text.replace(/([^*]|^)\\B\\*(\\S[\\s\\S]*?)\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '', '');\n });\n } else {\n text = text.replace(/\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '', '') : wm;\n });\n text = text.replace(/\\*\\*(\\S[\\s\\S]*?)\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '', '') : wm;\n });\n text = text.replace(/\\*([^\\s*][\\s\\S]*?)\\*/g, function (wm, m) {\n // !/^\\*[^*]/.test(m) - test if it doesn't start with ** (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '', '') : wm;\n });\n }\n\n\n text = globals.converter._dispatch('italicsAndBold.after', text, options, globals);\n return text;\n});\n","/**\n * Form HTML ordered (numbered) and unordered (bulleted) lists.\n */\nshowdown.subParser('lists', function (text, options, globals) {\n 'use strict';\n\n /**\n * Process the contents of a single ordered or unordered list, splitting it\n * into individual list items.\n * @param {string} listStr\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function processListItems (listStr, trimTrailing) {\n // The $g_list_level global keeps track of when we're inside a list.\n // Each time we enter a list, we increment it; when we leave a list,\n // we decrement. If it's zero, we're not in a list anymore.\n //\n // We do this because when we're not inside a list, we want to treat\n // something like this:\n //\n // I recommend upgrading to version\n // 8. Oops, now this line is treated\n // as a sub-list.\n //\n // As a single paragraph, despite the fact that the second line starts\n // with a digit-period-space sequence.\n //\n // Whereas when we're inside a list (or sub-list), that line will be\n // treated as the start of a sub-list. What a kludge, huh? This is\n // an aspect of Markdown's syntax that's hard to parse perfectly\n // without resorting to mind-reading. Perhaps the solution is to\n // change the syntax rules such that sub-lists must start with a\n // starting cardinal number; e.g. \"1.\" or \"a.\".\n globals.gListLevel++;\n\n // trim trailing blank lines:\n listStr = listStr.replace(/\\n{2,}$/, '\\n');\n\n // attacklab: add sentinel to emulate \\z\n listStr += '¨0';\n\n var rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0| {0,3}([*+-]|\\d+[.])[ \\t]+))/gm,\n isParagraphed = (/\\n[ \\t]*\\n(?!¨0)/.test(listStr));\n\n // Since version 1.5, nesting sublists requires 4 spaces (or 1 tab) indentation,\n // which is a syntax breaking change\n // activating this option reverts to old behavior\n if (options.disableForced4SpacesIndentedSublists) {\n rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0|\\2([*+-]|\\d+[.])[ \\t]+))/gm;\n }\n\n listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) {\n checked = (checked && checked.trim() !== '');\n\n var item = showdown.subParser('outdent')(m4, options, globals),\n bulletStyle = '';\n\n // Support for github tasklists\n if (taskbtn && options.tasklists) {\n bulletStyle = ' class=\"task-list-item\" style=\"list-style-type: none;\"';\n item = item.replace(/^[ \\t]*\\[(x|X| )?]/m, function () {\n var otp = '
  • a
  • \n // instead of:\n //
    • - - a
    \n // So, to prevent it, we will put a marker (¨A)in the beginning of the line\n // Kind of hackish/monkey patching, but seems more effective than overcomplicating the list parser\n item = item.replace(/^([-*+]|\\d\\.)[ \\t]+[\\S\\n ]*/g, function (wm2) {\n return '¨A' + wm2;\n });\n\n // m1 - Leading line or\n // Has a double return (multi paragraph) or\n // Has sublist\n if (m1 || (item.search(/\\n{2,}/) > -1)) {\n item = showdown.subParser('githubCodeBlocks')(item, options, globals);\n item = showdown.subParser('blockGamut')(item, options, globals);\n } else {\n // Recursion for sub-lists:\n item = showdown.subParser('lists')(item, options, globals);\n item = item.replace(/\\n$/, ''); // chomp(item)\n item = showdown.subParser('hashHTMLBlocks')(item, options, globals);\n\n // Colapse double linebreaks\n item = item.replace(/\\n\\n+/g, '\\n\\n');\n if (isParagraphed) {\n item = showdown.subParser('paragraphs')(item, options, globals);\n } else {\n item = showdown.subParser('spanGamut')(item, options, globals);\n }\n }\n\n // now we need to remove the marker (¨A)\n item = item.replace('¨A', '');\n // we can finally wrap the line in list item tags\n item = '' + item + '\\n';\n\n return item;\n });\n\n // attacklab: strip sentinel\n listStr = listStr.replace(/¨0/g, '');\n\n globals.gListLevel--;\n\n if (trimTrailing) {\n listStr = listStr.replace(/\\s+$/, '');\n }\n\n return listStr;\n }\n\n function styleStartNumber (list, listType) {\n // check if ol and starts by a number different than 1\n if (listType === 'ol') {\n var res = list.match(/^ *(\\d+)\\./);\n if (res && res[1] !== '1') {\n return ' start=\"' + res[1] + '\"';\n }\n }\n return '';\n }\n\n /**\n * Check and parse consecutive lists (better fix for issue #142)\n * @param {string} list\n * @param {string} listType\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function parseConsecutiveLists (list, listType, trimTrailing) {\n // check if we caught 2 or more consecutive lists by mistake\n // we use the counterRgx, meaning if listType is UL we look for OL and vice versa\n var olRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?\\d+\\.[ \\t]/gm : /^ {0,3}\\d+\\.[ \\t]/gm,\n ulRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?[*+-][ \\t]/gm : /^ {0,3}[*+-][ \\t]/gm,\n counterRxg = (listType === 'ul') ? olRgx : ulRgx,\n result = '';\n\n if (list.search(counterRxg) !== -1) {\n (function parseCL (txt) {\n var pos = txt.search(counterRxg),\n style = styleStartNumber(list, listType);\n if (pos !== -1) {\n // slice\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt.slice(0, pos), !!trimTrailing) + '\\n';\n\n // invert counterType and listType\n listType = (listType === 'ul') ? 'ol' : 'ul';\n counterRxg = (listType === 'ul') ? olRgx : ulRgx;\n\n //recurse\n parseCL(txt.slice(pos));\n } else {\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt, !!trimTrailing) + '\\n';\n }\n })(list);\n } else {\n var style = styleStartNumber(list, listType);\n result = '\\n\\n<' + listType + style + '>\\n' + processListItems(list, !!trimTrailing) + '\\n';\n }\n\n return result;\n }\n\n /** Start of list parsing **/\n text = globals.converter._dispatch('lists.before', text, options, globals);\n // add sentinel to hack around khtml/safari bug:\n // http://bugs.webkit.org/show_bug.cgi?id=11231\n text += '¨0';\n\n if (globals.gListLevel) {\n text = text.replace(/^(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n function (wholeMatch, list, m2) {\n var listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, true);\n }\n );\n } else {\n text = text.replace(/(\\n\\n|^\\n?)(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n function (wholeMatch, m1, list, m3) {\n var listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, false);\n }\n );\n }\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n text = globals.converter._dispatch('lists.after', text, options, globals);\n return text;\n});\n","/**\n * Parse metadata at the top of the document\n */\nshowdown.subParser('metadata', function (text, options, globals) {\n 'use strict';\n\n if (!options.metadata) {\n return text;\n }\n\n text = globals.converter._dispatch('metadata.before', text, options, globals);\n\n function parseMetadataContents (content) {\n // raw is raw so it's not changed in any way\n globals.metadata.raw = content;\n\n // escape chars forbidden in html attributes\n // double quotes\n content = content\n // ampersand first\n .replace(/&/g, '&')\n // double quotes\n .replace(/\"/g, '"');\n\n content = content.replace(/\\n {4}/g, ' ');\n content.replace(/^([\\S ]+): +([\\s\\S]+?)$/gm, function (wm, key, value) {\n globals.metadata.parsed[key] = value;\n return '';\n });\n }\n\n text = text.replace(/^\\s*«««+(\\S*?)\\n([\\s\\S]+?)\\n»»»+\\n/, function (wholematch, format, content) {\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/^\\s*---+(\\S*?)\\n([\\s\\S]+?)\\n---+\\n/, function (wholematch, format, content) {\n if (format) {\n globals.metadata.format = format;\n }\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/¨M/g, '');\n\n text = globals.converter._dispatch('metadata.after', text, options, globals);\n return text;\n});\n","/**\n * Remove one level of line-leading tabs or spaces\n */\nshowdown.subParser('outdent', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('outdent.before', text, options, globals);\n\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n text = text.replace(/^(\\t|[ ]{1,4})/gm, '¨0'); // attacklab: g_tab_width\n\n // attacklab: clean up hack\n text = text.replace(/¨0/g, '');\n\n text = globals.converter._dispatch('outdent.after', text, options, globals);\n return text;\n});\n","/**\n *\n */\nshowdown.subParser('paragraphs', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('paragraphs.before', text, options, globals);\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n\n var grafs = text.split(/\\n{2,}/g),\n grafsOut = [],\n end = grafs.length; // Wrap

    tags\n\n for (var i = 0; i < end; i++) {\n var str = grafs[i];\n // if this is an HTML marker, copy it\n if (str.search(/¨(K|G)(\\d+)\\1/g) >= 0) {\n grafsOut.push(str);\n\n // test for presence of characters to prevent empty lines being parsed\n // as paragraphs (resulting in undesired extra empty paragraphs)\n } else if (str.search(/\\S/) >= 0) {\n str = showdown.subParser('spanGamut')(str, options, globals);\n str = str.replace(/^([ \\t]*)/g, '

    ');\n str += '

    ';\n grafsOut.push(str);\n }\n }\n\n /** Unhashify HTML blocks */\n end = grafsOut.length;\n for (i = 0; i < end; i++) {\n var blockText = '',\n grafsOutIt = grafsOut[i],\n codeFlag = false;\n // if this is a marker for an html block...\n // use RegExp.test instead of string.search because of QML bug\n while (/¨(K|G)(\\d+)\\1/.test(grafsOutIt)) {\n var delim = RegExp.$1,\n num = RegExp.$2;\n\n if (delim === 'K') {\n blockText = globals.gHtmlBlocks[num];\n } else {\n // we need to check if ghBlock is a false positive\n if (codeFlag) {\n // use encoded version of all text\n blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text, options, globals);\n } else {\n blockText = globals.ghCodeBlocks[num].codeblock;\n }\n }\n blockText = blockText.replace(/\\$/g, '$$$$'); // Escape any dollar signs\n\n grafsOutIt = grafsOutIt.replace(/(\\n\\n)?¨(K|G)\\d+\\2(\\n\\n)?/, blockText);\n // Check if grafsOutIt is a pre->code\n if (/^]*>\\s*]*>/.test(grafsOutIt)) {\n codeFlag = true;\n }\n }\n grafsOut[i] = grafsOutIt;\n }\n text = grafsOut.join('\\n');\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n return globals.converter._dispatch('paragraphs.after', text, options, globals);\n});\n","/**\n * Run extension\n */\nshowdown.subParser('runExtension', function (ext, text, options, globals) {\n 'use strict';\n\n if (ext.filter) {\n text = ext.filter(text, globals.converter, options);\n\n } else if (ext.regex) {\n // TODO remove this when old extension loading mechanism is deprecated\n var re = ext.regex;\n if (!(re instanceof RegExp)) {\n re = new RegExp(re, 'g');\n }\n text = text.replace(re, ext.replace);\n }\n\n return text;\n});\n","/**\n * These are all the transformations that occur *within* block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('spanGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('spanGamut.before', text, options, globals);\n text = showdown.subParser('codeSpans')(text, options, globals);\n text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);\n text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);\n\n // Process anchor and image tags. Images must come first,\n // because ![foo][f] looks like an anchor.\n text = showdown.subParser('images')(text, options, globals);\n text = showdown.subParser('anchors')(text, options, globals);\n\n // Make links out of things like ``\n // Must come after anchors, because you can use < and >\n // delimiters in inline links like [this]().\n text = showdown.subParser('autoLinks')(text, options, globals);\n text = showdown.subParser('simplifiedAutoLinks')(text, options, globals);\n text = showdown.subParser('emoji')(text, options, globals);\n text = showdown.subParser('underline')(text, options, globals);\n text = showdown.subParser('italicsAndBold')(text, options, globals);\n text = showdown.subParser('strikethrough')(text, options, globals);\n text = showdown.subParser('ellipsis')(text, options, globals);\n\n // we need to hash HTML tags inside spans\n text = showdown.subParser('hashHTMLSpans')(text, options, globals);\n\n // now we encode amps and angles\n text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);\n\n // Do hard breaks\n if (options.simpleLineBreaks) {\n // GFM style hard breaks\n // only add line breaks if the text does not contain a block (special case for lists)\n if (!/\\n\\n¨K/.test(text)) {\n text = text.replace(/\\n+/g, '
    \\n');\n }\n } else {\n // Vanilla hard breaks\n text = text.replace(/ +\\n/g, '
    \\n');\n }\n\n text = globals.converter._dispatch('spanGamut.after', text, options, globals);\n return text;\n});\n","showdown.subParser('strikethrough', function (text, options, globals) {\n 'use strict';\n\n function parseInside (txt) {\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n return '' + txt + '';\n }\n\n if (options.strikethrough) {\n text = globals.converter._dispatch('strikethrough.before', text, options, globals);\n text = text.replace(/(?:~){2}([\\s\\S]+?)(?:~){2}/g, function (wm, txt) { return parseInside(txt); });\n text = globals.converter._dispatch('strikethrough.after', text, options, globals);\n }\n\n return text;\n});\n","/**\n * Strips link definitions from text, stores the URLs and titles in\n * hash references.\n * Link defs are in the form: ^[id]: url \"optional title\"\n */\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\n 'use strict';\n\n var regex = /^ {0,3}\\[([^\\]]+)]:[ \\t]*\\n?[ \\t]*\\s]+)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n+|(?=¨0))/gm,\n base64Regex = /^ {0,3}\\[([^\\]]+)]:[ \\t]*\\n?[ \\t]*?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n\\n|(?=¨0)|(?=\\n\\[))/gm;\n\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var replaceFunc = function (wholeMatch, linkId, url, width, height, blankLines, title) {\n\n // if there aren't two instances of linkId it must not be a reference link so back out\n linkId = linkId.toLowerCase();\n if (text.toLowerCase().split(linkId).length - 1 < 2) {\n return wholeMatch;\n }\n if (url.match(/^data:.+?\\/.+?;base64,/)) {\n // remove newlines\n globals.gUrls[linkId] = url.replace(/\\s/g, '');\n } else {\n globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url, options, globals); // Link IDs are case-insensitive\n }\n\n if (blankLines) {\n // Oops, found blank lines, so it's not a title.\n // Put back the parenthetical statement we stole.\n return blankLines + title;\n\n } else {\n if (title) {\n globals.gTitles[linkId] = title.replace(/\"|'/g, '"');\n }\n if (options.parseImgDimensions && width && height) {\n globals.gDimensions[linkId] = {\n width: width,\n height: height\n };\n }\n }\n // Completely remove the definition from the text\n return '';\n };\n\n // first we try to find base64 link references\n text = text.replace(base64Regex, replaceFunc);\n\n text = text.replace(regex, replaceFunc);\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return text;\n});\n","showdown.subParser('tables', function (text, options, globals) {\n 'use strict';\n\n if (!options.tables) {\n return text;\n }\n\n var tableRgx = /^ {0,3}\\|?.+\\|.+\\n {0,3}\\|?[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[\\s\\S]+?(?:\\n\\n|¨0)/gm,\n //singeColTblRgx = /^ {0,3}\\|.+\\|\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n(?: {0,3}\\|.+\\|\\n)+(?:\\n\\n|¨0)/gm;\n singeColTblRgx = /^ {0,3}\\|.+\\|[ \\t]*\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n( {0,3}\\|.+\\|[ \\t]*\\n)*(?:\\n|¨0)/gm;\n\n function parseStyles (sLine) {\n if (/^:[ \\t]*--*$/.test(sLine)) {\n return ' style=\"text-align:left;\"';\n } else if (/^--*[ \\t]*:[ \\t]*$/.test(sLine)) {\n return ' style=\"text-align:right;\"';\n } else if (/^:[ \\t]*--*[ \\t]*:$/.test(sLine)) {\n return ' style=\"text-align:center;\"';\n } else {\n return '';\n }\n }\n\n function parseHeaders (header, style) {\n var id = '';\n header = header.trim();\n // support both tablesHeaderId and tableHeaderId due to error in documentation so we don't break backwards compatibility\n if (options.tablesHeaderId || options.tableHeaderId) {\n id = ' id=\"' + header.replace(/ /g, '_').toLowerCase() + '\"';\n }\n header = showdown.subParser('spanGamut')(header, options, globals);\n\n return '' + header + '\\n';\n }\n\n function parseCells (cell, style) {\n var subText = showdown.subParser('spanGamut')(cell, options, globals);\n return '' + subText + '\\n';\n }\n\n function buildTable (headers, cells) {\n var tb = '\\n\\n\\n',\n tblLgn = headers.length;\n\n for (var i = 0; i < tblLgn; ++i) {\n tb += headers[i];\n }\n tb += '\\n\\n\\n';\n\n for (i = 0; i < cells.length; ++i) {\n tb += '\\n';\n for (var ii = 0; ii < tblLgn; ++ii) {\n tb += cells[i][ii];\n }\n tb += '\\n';\n }\n tb += '\\n
    \\n';\n return tb;\n }\n\n function parseTable (rawTable) {\n var i, tableLines = rawTable.split('\\n');\n\n for (i = 0; i < tableLines.length; ++i) {\n // strip wrong first and last column if wrapped tables are used\n if (/^ {0,3}\\|/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/^ {0,3}\\|/, '');\n }\n if (/\\|[ \\t]*$/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/\\|[ \\t]*$/, '');\n }\n // parse code spans first, but we only support one line code spans\n tableLines[i] = showdown.subParser('codeSpans')(tableLines[i], options, globals);\n }\n\n var rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}),\n rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}),\n rawCells = [],\n headers = [],\n styles = [],\n cells = [];\n\n tableLines.shift();\n tableLines.shift();\n\n for (i = 0; i < tableLines.length; ++i) {\n if (tableLines[i].trim() === '') {\n continue;\n }\n rawCells.push(\n tableLines[i]\n .split('|')\n .map(function (s) {\n return s.trim();\n })\n );\n }\n\n if (rawHeaders.length < rawStyles.length) {\n return rawTable;\n }\n\n for (i = 0; i < rawStyles.length; ++i) {\n styles.push(parseStyles(rawStyles[i]));\n }\n\n for (i = 0; i < rawHeaders.length; ++i) {\n if (showdown.helper.isUndefined(styles[i])) {\n styles[i] = '';\n }\n headers.push(parseHeaders(rawHeaders[i], styles[i]));\n }\n\n for (i = 0; i < rawCells.length; ++i) {\n var row = [];\n for (var ii = 0; ii < headers.length; ++ii) {\n if (showdown.helper.isUndefined(rawCells[i][ii])) {\n\n }\n row.push(parseCells(rawCells[i][ii], styles[ii]));\n }\n cells.push(row);\n }\n\n return buildTable(headers, cells);\n }\n\n text = globals.converter._dispatch('tables.before', text, options, globals);\n\n // find escaped pipe characters\n text = text.replace(/\\\\(\\|)/g, showdown.helper.escapeCharactersCallback);\n\n // parse multi column tables\n text = text.replace(tableRgx, parseTable);\n\n // parse one column tables\n text = text.replace(singeColTblRgx, parseTable);\n\n text = globals.converter._dispatch('tables.after', text, options, globals);\n\n return text;\n});\n","showdown.subParser('underline', function (text, options, globals) {\n 'use strict';\n\n if (!options.underline) {\n return text;\n }\n\n text = globals.converter._dispatch('underline.before', text, options, globals);\n\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return '' + txt + '';\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return '' + txt + '';\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '' + m + '' : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '' + m + '' : wm;\n });\n }\n\n // escape remaining underscores to prevent them being parsed by italic and bold\n text = text.replace(/(_)/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('underline.after', text, options, globals);\n\n return text;\n});\n","/**\n * Swap back in all the special characters we've hidden.\n */\nshowdown.subParser('unescapeSpecialChars', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unescapeSpecialChars.before', text, options, globals);\n\n text = text.replace(/¨E(\\d+)E/g, function (wholeMatch, m1) {\n var charCodeToReplace = parseInt(m1);\n return String.fromCharCode(charCodeToReplace);\n });\n\n text = globals.converter._dispatch('unescapeSpecialChars.after', text, options, globals);\n return text;\n});\n","showdown.subParser('makeMarkdown.blockquote', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n var innerTxt = showdown.subParser('makeMarkdown.node')(children[i], globals);\n\n if (innerTxt === '') {\n continue;\n }\n txt += innerTxt;\n }\n }\n // cleanup\n txt = txt.trim();\n txt = '> ' + txt.split('\\n').join('\\n> ');\n return txt;\n});\n","showdown.subParser('makeMarkdown.codeBlock', function (node, globals) {\n 'use strict';\n\n var lang = node.getAttribute('language'),\n num = node.getAttribute('precodenum');\n return '```' + lang + '\\n' + globals.preList[num] + '\\n```';\n});\n","showdown.subParser('makeMarkdown.codeSpan', function (node) {\n 'use strict';\n\n return '`' + node.innerHTML + '`';\n});\n","showdown.subParser('makeMarkdown.emphasis', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '*';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '*';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.header', function (node, globals, headerLevel) {\n 'use strict';\n\n var headerMark = new Array(headerLevel + 1).join('#'),\n txt = '';\n\n if (node.hasChildNodes()) {\n txt = headerMark + ' ';\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.hr', function () {\n 'use strict';\n\n return '---';\n});\n","showdown.subParser('makeMarkdown.image', function (node) {\n 'use strict';\n\n var txt = '';\n if (node.hasAttribute('src')) {\n txt += '![' + node.getAttribute('alt') + '](';\n txt += '<' + node.getAttribute('src') + '>';\n if (node.hasAttribute('width') && node.hasAttribute('height')) {\n txt += ' =' + node.getAttribute('width') + 'x' + node.getAttribute('height');\n }\n\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.links', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes() && node.hasAttribute('href')) {\n var children = node.childNodes,\n childrenLength = children.length;\n txt = '[';\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '](';\n txt += '<' + node.getAttribute('href') + '>';\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.list', function (node, globals, type) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var listItems = node.childNodes,\n listItemsLenght = listItems.length,\n listNum = node.getAttribute('start') || 1;\n\n for (var i = 0; i < listItemsLenght; ++i) {\n if (typeof listItems[i].tagName === 'undefined' || listItems[i].tagName.toLowerCase() !== 'li') {\n continue;\n }\n\n // define the bullet to use in list\n var bullet = '';\n if (type === 'ol') {\n bullet = listNum.toString() + '. ';\n } else {\n bullet = '- ';\n }\n\n // parse list item\n txt += bullet + showdown.subParser('makeMarkdown.listItem')(listItems[i], globals);\n ++listNum;\n }\n\n // add comment at the end to prevent consecutive lists to be parsed as one\n txt += '\\n\\n';\n return txt.trim();\n});\n","showdown.subParser('makeMarkdown.listItem', function (node, globals) {\n 'use strict';\n\n var listItemTxt = '';\n\n var children = node.childNodes,\n childrenLenght = children.length;\n\n for (var i = 0; i < childrenLenght; ++i) {\n listItemTxt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n // if it's only one liner, we need to add a newline at the end\n if (!/\\n$/.test(listItemTxt)) {\n listItemTxt += '\\n';\n } else {\n // it's multiparagraph, so we need to indent\n listItemTxt = listItemTxt\n .split('\\n')\n .join('\\n ')\n .replace(/^ {4}$/gm, '')\n .replace(/\\n\\n+/g, '\\n\\n');\n }\n\n return listItemTxt;\n});\n","\n\nshowdown.subParser('makeMarkdown.node', function (node, globals, spansOnly) {\n 'use strict';\n\n spansOnly = spansOnly || false;\n\n var txt = '';\n\n // edge case of text without wrapper paragraph\n if (node.nodeType === 3) {\n return showdown.subParser('makeMarkdown.txt')(node, globals);\n }\n\n // HTML comment\n if (node.nodeType === 8) {\n return '\\n\\n';\n }\n\n // process only node elements\n if (node.nodeType !== 1) {\n return '';\n }\n\n var tagName = node.tagName.toLowerCase();\n\n switch (tagName) {\n\n //\n // BLOCKS\n //\n case 'h1':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 1) + '\\n\\n'; }\n break;\n case 'h2':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 2) + '\\n\\n'; }\n break;\n case 'h3':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 3) + '\\n\\n'; }\n break;\n case 'h4':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 4) + '\\n\\n'; }\n break;\n case 'h5':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 5) + '\\n\\n'; }\n break;\n case 'h6':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 6) + '\\n\\n'; }\n break;\n\n case 'p':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.paragraph')(node, globals) + '\\n\\n'; }\n break;\n\n case 'blockquote':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.blockquote')(node, globals) + '\\n\\n'; }\n break;\n\n case 'hr':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.hr')(node, globals) + '\\n\\n'; }\n break;\n\n case 'ol':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ol') + '\\n\\n'; }\n break;\n\n case 'ul':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ul') + '\\n\\n'; }\n break;\n\n case 'precode':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.codeBlock')(node, globals) + '\\n\\n'; }\n break;\n\n case 'pre':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.pre')(node, globals) + '\\n\\n'; }\n break;\n\n case 'table':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.table')(node, globals) + '\\n\\n'; }\n break;\n\n //\n // SPANS\n //\n case 'code':\n txt = showdown.subParser('makeMarkdown.codeSpan')(node, globals);\n break;\n\n case 'em':\n case 'i':\n txt = showdown.subParser('makeMarkdown.emphasis')(node, globals);\n break;\n\n case 'strong':\n case 'b':\n txt = showdown.subParser('makeMarkdown.strong')(node, globals);\n break;\n\n case 'del':\n txt = showdown.subParser('makeMarkdown.strikethrough')(node, globals);\n break;\n\n case 'a':\n txt = showdown.subParser('makeMarkdown.links')(node, globals);\n break;\n\n case 'img':\n txt = showdown.subParser('makeMarkdown.image')(node, globals);\n break;\n\n default:\n txt = node.outerHTML + '\\n\\n';\n }\n\n // common normalization\n // TODO eventually\n\n return txt;\n});\n","showdown.subParser('makeMarkdown.paragraph', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n\n // some text normalization\n txt = txt.trim();\n\n return txt;\n});\n","showdown.subParser('makeMarkdown.pre', function (node, globals) {\n 'use strict';\n\n var num = node.getAttribute('prenum');\n return '
    ' + globals.preList[num] + '
    ';\n});\n","showdown.subParser('makeMarkdown.strikethrough', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '~~';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '~~';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.strong', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '**';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '**';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.table', function (node, globals) {\n 'use strict';\n\n var txt = '',\n tableArray = [[], []],\n headings = node.querySelectorAll('thead>tr>th'),\n rows = node.querySelectorAll('tbody>tr'),\n i, ii;\n for (i = 0; i < headings.length; ++i) {\n var headContent = showdown.subParser('makeMarkdown.tableCell')(headings[i], globals),\n allign = '---';\n\n if (headings[i].hasAttribute('style')) {\n var style = headings[i].getAttribute('style').toLowerCase().replace(/\\s/g, '');\n switch (style) {\n case 'text-align:left;':\n allign = ':---';\n break;\n case 'text-align:right;':\n allign = '---:';\n break;\n case 'text-align:center;':\n allign = ':---:';\n break;\n }\n }\n tableArray[0][i] = headContent.trim();\n tableArray[1][i] = allign;\n }\n\n for (i = 0; i < rows.length; ++i) {\n var r = tableArray.push([]) - 1,\n cols = rows[i].getElementsByTagName('td');\n\n for (ii = 0; ii < headings.length; ++ii) {\n var cellContent = ' ';\n if (typeof cols[ii] !== 'undefined') {\n cellContent = showdown.subParser('makeMarkdown.tableCell')(cols[ii], globals);\n }\n tableArray[r].push(cellContent);\n }\n }\n\n var cellSpacesCount = 3;\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n var strLen = tableArray[i][ii].length;\n if (strLen > cellSpacesCount) {\n cellSpacesCount = strLen;\n }\n }\n }\n\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n if (i === 1) {\n if (tableArray[i][ii].slice(-1) === ':') {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii].slice(-1), cellSpacesCount - 1, '-') + ':';\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount, '-');\n }\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount);\n }\n }\n txt += '| ' + tableArray[i].join(' | ') + ' |\\n';\n }\n\n return txt.trim();\n});\n","showdown.subParser('makeMarkdown.tableCell', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals, true);\n }\n return txt.trim();\n});\n","showdown.subParser('makeMarkdown.txt', function (node) {\n 'use strict';\n\n var txt = node.nodeValue;\n\n // multiple spaces are collapsed\n txt = txt.replace(/ +/g, ' ');\n\n // replace the custom ¨NBSP; with a space\n txt = txt.replace(/¨NBSP;/g, ' ');\n\n // \", <, > and & should replace escaped html entities\n txt = showdown.helper.unescapeHTMLEntities(txt);\n\n // escape markdown magic characters\n // emphasis, strong and strikethrough - can appear everywhere\n // we also escape pipe (|) because of tables\n // and escape ` because of code blocks and spans\n txt = txt.replace(/([*_~|`])/g, '\\\\$1');\n\n // escape > because of blockquotes\n txt = txt.replace(/^(\\s*)>/g, '\\\\$1>');\n\n // hash character, only troublesome at the beginning of a line because of headers\n txt = txt.replace(/^#/gm, '\\\\#');\n\n // horizontal rules\n txt = txt.replace(/^(\\s*)([-=]{3,})(\\s*)$/, '$1\\\\$2$3');\n\n // dot, because of ordered lists, only troublesome at the beginning of a line when preceded by an integer\n txt = txt.replace(/^( {0,3}\\d+)\\./gm, '$1\\\\.');\n\n // +, * and -, at the beginning of a line becomes a list, so we need to escape them also (asterisk was already escaped)\n txt = txt.replace(/^( {0,3})([+-])/gm, '$1\\\\$2');\n\n // images and links, ] followed by ( is problematic, so we escape it\n txt = txt.replace(/]([\\s]*)\\(/g, '\\\\]$1\\\\(');\n\n // reference URIs must also be escaped\n txt = txt.replace(/^ {0,3}\\[([\\S \\t]*?)]:/gm, '\\\\[$1]:');\n\n return txt;\n});\n","var root = this;\n\n// AMD Loader\nif (typeof define === 'function' && define.amd) {\n define(function () {\n 'use strict';\n return showdown;\n });\n\n// CommonJS/nodeJS Loader\n} else if (typeof module !== 'undefined' && module.exports) {\n module.exports = showdown;\n\n// Regular Browser loader\n} else {\n root.showdown = showdown;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SensorTabIndex = exports.SensorClassName = exports.SizeSensorId = void 0;\n\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\nvar SizeSensorId = 'size-sensor-id';\nexports.SizeSensorId = SizeSensorId;\nvar SensorClassName = 'size-sensor-object';\nexports.SensorClassName = SensorClassName;\nvar SensorTabIndex = '-1';\nexports.SensorTabIndex = SensorTabIndex;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\nvar _default = function _default(fn) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 60;\n var timer = null;\n return function () {\n var _this = 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 clearTimeout(timer);\n timer = setTimeout(function () {\n fn.apply(_this, args);\n }, delay);\n };\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\nvar id = 1;\n/**\n * generate unique id in application\n * @return {string}\n */\n\nvar _default = function _default() {\n return \"\".concat(id++);\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ver = exports.clear = exports.bind = void 0;\n\nvar _sensorPool = require(\"./sensorPool\");\n\n/**\n * Created by hustcc on 18/6/9.[高考时间]\n * Contract: i@hust.cc\n */\n\n/**\n * bind an element with resize callback function\n * @param {*} element\n * @param {*} cb\n */\nvar bind = function bind(element, cb) {\n var sensor = (0, _sensorPool.getSensor)(element); // listen with callback\n\n sensor.bind(cb); // return unbind function\n\n return function () {\n sensor.unbind(cb);\n };\n};\n/**\n * clear all the listener and sensor of an element\n * @param element\n */\n\n\nexports.bind = bind;\n\nvar clear = function clear(element) {\n var sensor = (0, _sensorPool.getSensor)(element);\n (0, _sensorPool.removeSensor)(sensor);\n};\n\nexports.clear = clear;\nvar ver = \"1.0.1\";\nexports.ver = ver;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.removeSensor = exports.getSensor = void 0;\n\nvar _id = _interopRequireDefault(require(\"./id\"));\n\nvar _sensors = require(\"./sensors\");\n\nvar _constant = require(\"./constant\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\n\n/**\n * all the sensor objects.\n * sensor pool\n */\nvar Sensors = {};\n/**\n * get one sensor\n * @param element\n * @returns {*}\n */\n\nvar getSensor = function getSensor(element) {\n var sensorId = element.getAttribute(_constant.SizeSensorId); // 1. if the sensor exists, then use it\n\n if (sensorId && Sensors[sensorId]) {\n return Sensors[sensorId];\n } // 2. not exist, then create one\n\n\n var newId = (0, _id[\"default\"])();\n element.setAttribute(_constant.SizeSensorId, newId);\n var sensor = (0, _sensors.createSensor)(element); // add sensor into pool\n\n Sensors[newId] = sensor;\n return sensor;\n};\n/**\n * 移除 sensor\n * @param sensor\n */\n\n\nexports.getSensor = getSensor;\n\nvar removeSensor = function removeSensor(sensor) {\n var sensorId = sensor.element.getAttribute(_constant.SizeSensorId); // remove attribute\n\n sensor.element.removeAttribute(_constant.SizeSensorId); // remove event, dom of the sensor used\n\n sensor.destroy(); // exist, then remove from pool\n\n if (sensorId && Sensors[sensorId]) {\n delete Sensors[sensorId];\n }\n};\n\nexports.removeSensor = removeSensor;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createSensor = void 0;\n\nvar _object = require(\"./object\");\n\nvar _resizeObserver = require(\"./resizeObserver\");\n\n/**\n * Created by hustcc on 18/7/5.\n * Contract: i@hust.cc\n */\n\n/**\n * sensor strategies\n */\n// export const createSensor = createObjectSensor;\nvar createSensor = typeof ResizeObserver !== 'undefined' ? _resizeObserver.createSensor : _object.createSensor;\nexports.createSensor = createSensor;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createSensor = void 0;\n\nvar _debounce = _interopRequireDefault(require(\"../debounce\"));\n\nvar _constant = require(\"../constant\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\nvar createSensor = function createSensor(element) {\n var sensor = undefined; // callback\n\n var listeners = [];\n /**\n * create object DOM of sensor\n * @returns {HTMLObjectElement}\n */\n\n var newSensor = function newSensor() {\n // adjust style\n if (getComputedStyle(element).position === 'static') {\n element.style.position = 'relative';\n }\n\n var obj = document.createElement('object');\n\n obj.onload = function () {\n obj.contentDocument.defaultView.addEventListener('resize', resizeListener); // 直接触发一次 resize\n\n resizeListener();\n };\n\n obj.style.display = 'block';\n obj.style.position = 'absolute';\n obj.style.top = '0';\n obj.style.left = '0';\n obj.style.height = '100%';\n obj.style.width = '100%';\n obj.style.overflow = 'hidden';\n obj.style.pointerEvents = 'none';\n obj.style.zIndex = '-1';\n obj.style.opacity = '0';\n obj.setAttribute('class', _constant.SensorClassName);\n obj.setAttribute('tabindex', _constant.SensorTabIndex);\n obj.type = 'text/html'; // append into dom\n\n element.appendChild(obj); // for ie, should set data attribute delay, or will be white screen\n\n obj.data = 'about:blank';\n return obj;\n };\n /**\n * trigger listeners\n */\n\n\n var resizeListener = (0, _debounce[\"default\"])(function () {\n // trigger all listener\n listeners.forEach(function (listener) {\n listener(element);\n });\n });\n /**\n * listen with one callback function\n * @param cb\n */\n\n var bind = function bind(cb) {\n // if not exist sensor, then create one\n if (!sensor) {\n sensor = newSensor();\n }\n\n if (listeners.indexOf(cb) === -1) {\n listeners.push(cb);\n }\n };\n /**\n * destroy all\n */\n\n\n var destroy = function destroy() {\n if (sensor && sensor.parentNode) {\n if (sensor.contentDocument) {\n // remote event\n sensor.contentDocument.defaultView.removeEventListener('resize', resizeListener);\n } // remove dom\n\n\n sensor.parentNode.removeChild(sensor); // initial variable\n\n sensor = undefined;\n listeners = [];\n }\n };\n /**\n * cancel listener bind\n * @param cb\n */\n\n\n var unbind = function unbind(cb) {\n var idx = listeners.indexOf(cb);\n\n if (idx !== -1) {\n listeners.splice(idx, 1);\n } // no listener, and sensor is exist\n // then destroy the sensor\n\n\n if (listeners.length === 0 && sensor) {\n destroy();\n }\n };\n\n return {\n element: element,\n bind: bind,\n destroy: destroy,\n unbind: unbind\n };\n};\n\nexports.createSensor = createSensor;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createSensor = void 0;\n\nvar _debounce = _interopRequireDefault(require(\"../debounce\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\n * Created by hustcc on 18/7/5.\n * Contract: i@hust.cc\n */\nvar createSensor = function createSensor(element) {\n var sensor = undefined; // callback\n\n var listeners = [];\n /**\n * trigger listeners\n */\n\n var resizeListener = (0, _debounce[\"default\"])(function () {\n // trigger all\n listeners.forEach(function (listener) {\n listener(element);\n });\n });\n /**\n * create ResizeObserver sensor\n * @returns\n */\n\n var newSensor = function newSensor() {\n var s = new ResizeObserver(resizeListener); // listen element\n\n s.observe(element); // trigger once\n\n resizeListener();\n return s;\n };\n /**\n * listen with callback\n * @param cb\n */\n\n\n var bind = function bind(cb) {\n if (!sensor) {\n sensor = newSensor();\n }\n\n if (listeners.indexOf(cb) === -1) {\n listeners.push(cb);\n }\n };\n /**\n * destroy\n */\n\n\n var destroy = function destroy() {\n sensor.disconnect();\n listeners = [];\n sensor = undefined;\n };\n /**\n * cancel bind\n * @param cb\n */\n\n\n var unbind = function unbind(cb) {\n var idx = listeners.indexOf(cb);\n\n if (idx !== -1) {\n listeners.splice(idx, 1);\n } // no listener, and sensor is exist\n // then destroy the sensor\n\n\n if (listeners.length === 0 && sensor) {\n destroy();\n }\n };\n\n return {\n element: element,\n bind: bind,\n destroy: destroy,\n unbind: unbind\n };\n};\n\nexports.createSensor = createSensor;","/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\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[\"spel2js\"] = factory();\n\telse\n\t\troot[\"spel2js\"] = 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/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 3);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The common supertype of all AST nodes in a parsed Spring Expression Language\n * format expression.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createSpelNode(nodeType, position) {\n var node = {},\n type = nodeType || 'Abstract',\n children = [],\n parent = null,\n activeContext;\n\n node._type = type;\n\n node.getType = function () {\n return type;\n };\n node.setType = function (nodeType) {\n type = nodeType;\n };\n\n node.getChildren = function () {\n return children;\n };\n node.addChild = function (childNode) {\n if (!childNode) {\n // See OpMinus and OpPlus: right node can be null for unary mode\n return;\n }\n if (!childNode.setParent) {\n throw {\n name: 'Error',\n message: 'Trying to add a child which is not a node: ' + JSON.stringify(childNode)\n };\n }\n childNode.setParent(node);\n children.push(childNode);\n };\n\n node.getParent = function () {\n return parent;\n };\n node.setParent = function (parentNode) {\n parent = parentNode;\n };\n\n node.getContext = function (state) {\n return activeContext || state.activeContext.peek();\n };\n node.setContext = function (nodeContext) {\n activeContext = nodeContext;\n };\n\n node.getStartPosition = function () {\n return position >> 16;\n };\n\n node.getEndPosition = function () {\n return position & 0xffff;\n };\n\n //must override\n node.getValue = function () {\n throw {\n name: 'MethodNotImplementedException',\n message: 'SpelNode#getValue() must be overridden.'\n };\n };\n\n node.toString = function () {\n var s = 'Kind: ' + node.getType();\n //s += ', Value: ' + node.getValue();\n s += ', Children: [';\n for (var i = 0, l = node.getChildren().length; i < l; i += 1) {\n s += '{' + node.getChildren()[i] + '}, ';\n }\n s += ']';\n return s;\n };\n\n //constructor\n if (position === 0) {\n throw {\n name: 'Error',\n message: 'Position cannot be 0'\n };\n }\n\n for (var _len = arguments.length, operands = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n operands[_key - 2] = arguments[_key];\n }\n\n if (operands) {\n operands.forEach(function (operand) {\n node.addChild(operand);\n });\n }\n\n return node;\n}\n\nvar SpelNode = exports.SpelNode = {\n create: createSpelNode\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Stack = Stack;\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction Stack(startingElements) {\n this.elements = startingElements || [];\n}\n\nStack.prototype.push = function (el) {\n this.elements.push(el);\n return el;\n};\n\nStack.prototype.pop = function () {\n return this.elements.pop();\n};\n\nStack.prototype.peek = function () {\n return this.elements[this.elements.length - 1];\n};\n\nStack.prototype.empty = function () {\n return this.elements.length > 0;\n};\n\nStack.prototype.search = function (el) {\n return this.elements.length - this.elements.indexOf(el);\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nvar types = {\n\n LITERAL_INT: 1, //tested\n\n LITERAL_LONG: 2, //tested\n\n LITERAL_HEXINT: 3, //tested\n\n LITERAL_HEXLONG: 4, //tested\n\n LITERAL_STRING: 5, //tested\n\n LITERAL_REAL: 6, //tested\n\n LITERAL_REAL_FLOAT: 7, //tested\n\n LPAREN: '(', //tested\n\n RPAREN: ')', //tested\n\n COMMA: ',', //tested\n\n IDENTIFIER: 0, //tested\n\n COLON: ':', //tested\n\n HASH: '#', //tested\n\n RSQUARE: ']', //tested\n\n LSQUARE: '[', //tested\n\n LCURLY: '{', //tested\n\n RCURLY: '}', //tested\n\n DOT: '.', //tested\n\n PLUS: '+', //tested\n\n STAR: '*', //tested\n\n MINUS: '-', //tested\n\n SELECT_FIRST: '^[', //tested\n\n SELECT_LAST: '$[', //tested\n\n QMARK: '?', //tested\n\n PROJECT: '![', //tested\n\n DIV: '/', //tested\n\n GE: '>=', //tested\n\n GT: '>', //tested\n\n LE: '<=', //tested\n\n LT: '<', //tested\n\n EQ: '==', //tested\n\n NE: '!=', //tested\n\n MOD: '%', //tested\n\n NOT: '!', //tested\n\n ASSIGN: '=', //tested\n\n INSTANCEOF: 'instanceof', //test fails\n\n MATCHES: 'matches', //test fails\n\n BETWEEN: 'between', //test fails\n\n SELECT: '?[', //tested\n\n POWER: '^', //tested\n\n ELVIS: '?:', //tested\n\n SAFE_NAVI: '?.', //tested\n\n BEAN_REF: '@', //tested\n\n SYMBOLIC_OR: '||', //tested\n\n SYMBOLIC_AND: '&&', //tested\n\n INC: '++', //tested\n\n DEC: '--' //tested\n};\n\nfunction TokenKind(type) {\n this.type = type;\n this.tokenChars = types[type];\n this._hasPayload = typeof types[type] !== 'string';\n if (typeof types[type] === 'number') {\n this._ordinal = types[type];\n }\n}\n\n//create enum\nfor (var t in types) {\n if (types.hasOwnProperty(t)) {\n TokenKind[t] = new TokenKind(t);\n }\n}\n\nTokenKind.prototype.toString = function () {\n return this.type + (this.tokenChars.length !== 0 ? '(' + this.tokenChars + ')' : '');\n};\n\nTokenKind.prototype.getLength = function () {\n return this.tokenChars.length;\n};\n\nTokenKind.prototype.hasPayload = function () {\n return this._hasPayload;\n};\n\nTokenKind.prototype.valueOf = function (id) {\n for (var t in types) {\n if (types.hasOwnProperty(t) && types[t] === id) {\n return TokenKind[t];\n }\n }\n};\n\nTokenKind.prototype.ordinal = function () {\n return this._ordinal;\n};\n\nexports.TokenKind = TokenKind;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StandardContext = exports.SpelExpressionEvaluator = undefined;\n\nvar _SpelExpressionEvaluator = __webpack_require__(4);\n\nvar _StandardContext = __webpack_require__(50);\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Ben March\n * @since 0.2.0\n */\n\nexports.SpelExpressionEvaluator = _SpelExpressionEvaluator.SpelExpressionEvaluator;\nexports.StandardContext = _StandardContext.StandardContext;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SpelExpressionEvaluator = undefined;\n\nvar _SpelExpressionParser = __webpack_require__(5);\n\nvar _Stack = __webpack_require__(1);\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Ben March\n * @since 0.2.0\n */\n\nvar spelExpressionEvaluator = {};\n\nfunction evalCompiled(compiledExpression, context, locals) {\n var activeContext = new _Stack.Stack(),\n state;\n\n if (!context) {\n context = {};\n }\n\n activeContext.push(context);\n\n state = {\n rootContext: context,\n activeContext: activeContext,\n locals: locals\n };\n return compiledExpression.getValue(state);\n}\n\nspelExpressionEvaluator.compile = function (expression) {\n var compiledExpression = (0, _SpelExpressionParser.SpelExpressionParser)().parse(expression);\n return {\n eval: function _eval(context, locals) {\n return evalCompiled(compiledExpression, context, locals);\n },\n _compiledExpression: compiledExpression\n };\n};\n\nspelExpressionEvaluator.eval = function (expression, context, locals) {\n return spelExpressionEvaluator.compile(expression).eval(context, locals);\n};\n\nexports.SpelExpressionEvaluator = spelExpressionEvaluator;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SpelExpressionParser = undefined;\n\nvar _TokenKind = __webpack_require__(2);\n\nvar _Tokenizer = __webpack_require__(6);\n\nvar _BooleanLiteral = __webpack_require__(8);\n\nvar _NumberLiteral = __webpack_require__(9);\n\nvar _StringLiteral = __webpack_require__(10);\n\nvar _NullLiteral = __webpack_require__(11);\n\nvar _FunctionReference = __webpack_require__(12);\n\nvar _MethodReference = __webpack_require__(13);\n\nvar _PropertyReference = __webpack_require__(14);\n\nvar _VariableReference = __webpack_require__(15);\n\nvar _CompoundExpression = __webpack_require__(16);\n\nvar _Indexer = __webpack_require__(17);\n\nvar _Assign = __webpack_require__(18);\n\nvar _OpEQ = __webpack_require__(19);\n\nvar _OpNE = __webpack_require__(20);\n\nvar _OpGE = __webpack_require__(21);\n\nvar _OpGT = __webpack_require__(22);\n\nvar _OpLE = __webpack_require__(23);\n\nvar _OpLT = __webpack_require__(24);\n\nvar _OpPlus = __webpack_require__(25);\n\nvar _OpMinus = __webpack_require__(26);\n\nvar _OpMultiply = __webpack_require__(27);\n\nvar _OpDivide = __webpack_require__(28);\n\nvar _OpModulus = __webpack_require__(29);\n\nvar _OpPower = __webpack_require__(30);\n\nvar _OpInc = __webpack_require__(31);\n\nvar _OpDec = __webpack_require__(32);\n\nvar _OpNot = __webpack_require__(33);\n\nvar _OpAnd = __webpack_require__(34);\n\nvar _OpOr = __webpack_require__(35);\n\nvar _OpMatches = __webpack_require__(36);\n\nvar _Ternary = __webpack_require__(37);\n\nvar _Elvis = __webpack_require__(38);\n\nvar _InlineList = __webpack_require__(39);\n\nvar _InlineMap = __webpack_require__(40);\n\nvar _Selection = __webpack_require__(41);\n\nvar _Projection = __webpack_require__(42);\n\nvar _OpInstanceof = __webpack_require__(43);\n\nvar _OpBetween = __webpack_require__(44);\n\nvar _TypeReference = __webpack_require__(45);\n\nvar _BeanReference = __webpack_require__(46);\n\nvar _Identifier = __webpack_require__(47);\n\nvar _QualifiedIdentifier = __webpack_require__(48);\n\nvar _ConstructorReference = __webpack_require__(49);\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n *\n */\n\nvar SpelExpressionParser = exports.SpelExpressionParser = function SpelExpressionParser() {\n\n var VALID_QUALIFIED_ID_PATTERN = new RegExp('[\\\\p{L}\\\\p{N}_$]+');\n\n var configuration;\n\n // For rules that build nodes, they are stacked here for return\n var constructedNodes = [];\n\n // The expression being parsed\n var expressionString;\n\n // The token stream constructed from that expression string\n var tokenStream;\n\n // length of a populated token stream\n var tokenStreamLength;\n\n // Current location in the token stream when processing tokens\n var tokenStreamPointer;\n\n /**\n * Create a parser with some configured behavior.\n * @param config custom configuration options\n */\n function setConfiguration(config) {\n configuration = config;\n }\n\n function parse(expression, context) {\n try {\n expressionString = expression;\n tokenStream = _Tokenizer.Tokenizer.tokenize(expression);\n tokenStreamLength = tokenStream.length;\n tokenStreamPointer = 0;\n constructedNodes = [];\n var ast = eatExpression();\n if (moreTokens()) {\n raiseInternalException(peekToken().startPos, 'MORE_INPUT', nextToken().toString());\n }\n //Assert.isTrue(this.constructedNodes.isEmpty());\n return ast;\n } catch (e) {\n throw e.message;\n }\n }\n\n //\texpression\n // : logicalOrExpression\n // ( (ASSIGN^ logicalOrExpression)\n //\t | (DEFAULT^ logicalOrExpression)\n //\t | (QMARK^ expression COLON! expression)\n // | (ELVIS^ expression))?;\n function eatExpression() {\n var expr = eatLogicalOrExpression();\n if (moreTokens()) {\n var token = peekToken();\n if (token.getKind() === _TokenKind.TokenKind.ASSIGN) {\n // a=b\n if (expr === null) {\n expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 1));\n }\n nextToken();\n var assignedValue = eatLogicalOrExpression();\n return _Assign.Assign.create(toPosToken(token), expr, assignedValue);\n }\n\n if (token.getKind() === _TokenKind.TokenKind.ELVIS) {\n // a?:b (a if it isn't null, otherwise b)\n if (expr === null) {\n expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 2));\n }\n nextToken(); // elvis has left the building\n var valueIfNull = eatExpression();\n if (valueIfNull === null) {\n valueIfNull = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos + 1, token.endPos + 1));\n }\n return _Elvis.Elvis.create(toPosToken(token), expr, valueIfNull);\n }\n\n if (token.getKind() === _TokenKind.TokenKind.QMARK) {\n // a?b:c\n if (expr === null) {\n expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 1));\n }\n nextToken();\n var ifTrueExprValue = eatExpression();\n eatToken(_TokenKind.TokenKind.COLON);\n var ifFalseExprValue = eatExpression();\n return _Ternary.Ternary.create(toPosToken(token), expr, ifTrueExprValue, ifFalseExprValue);\n }\n }\n return expr;\n }\n\n //logicalOrExpression : logicalAndExpression (OR^ logicalAndExpression)*;\n function eatLogicalOrExpression() {\n var expr = eatLogicalAndExpression();\n while (peekIdentifierToken('or') || peekTokenOne(_TokenKind.TokenKind.SYMBOLIC_OR)) {\n var token = nextToken(); //consume OR\n var rhExpr = eatLogicalAndExpression();\n checkOperands(token, expr, rhExpr);\n expr = _OpOr.OpOr.create(toPosToken(token), expr, rhExpr);\n }\n return expr;\n }\n\n // logicalAndExpression : relationalExpression (AND^ relationalExpression)*;\n function eatLogicalAndExpression() {\n var expr = eatRelationalExpression();\n while (peekIdentifierToken('and') || peekTokenOne(_TokenKind.TokenKind.SYMBOLIC_AND)) {\n var token = nextToken(); // consume 'AND'\n var rhExpr = eatRelationalExpression();\n checkOperands(token, expr, rhExpr);\n expr = _OpAnd.OpAnd.create(toPosToken(token), expr, rhExpr);\n }\n return expr;\n }\n\n // relationalExpression : sumExpression (relationalOperator^ sumExpression)?;\n function eatRelationalExpression() {\n var expr = eatSumExpression();\n var relationalOperatorToken = maybeEatRelationalOperator();\n if (relationalOperatorToken !== null) {\n var token = nextToken(); // consume relational operator token\n var rhExpr = eatSumExpression();\n checkOperands(token, expr, rhExpr);\n var tk = relationalOperatorToken.kind;\n\n if (relationalOperatorToken.isNumericRelationalOperator()) {\n var pos = toPosToken(token);\n if (tk === _TokenKind.TokenKind.GT) {\n return _OpGT.OpGT.create(pos, expr, rhExpr);\n }\n if (tk === _TokenKind.TokenKind.LT) {\n return _OpLT.OpLT.create(pos, expr, rhExpr);\n }\n if (tk === _TokenKind.TokenKind.LE) {\n return _OpLE.OpLE.create(pos, expr, rhExpr);\n }\n if (tk === _TokenKind.TokenKind.GE) {\n return _OpGE.OpGE.create(pos, expr, rhExpr);\n }\n if (tk === _TokenKind.TokenKind.EQ) {\n return _OpEQ.OpEQ.create(pos, expr, rhExpr);\n }\n //Assert.isTrue(tk === TokenKind.NE);\n return _OpNE.OpNE.create(pos, expr, rhExpr);\n }\n\n if (tk === _TokenKind.TokenKind.INSTANCEOF) {\n return _OpInstanceof.OpInstanceof.create(toPosToken(token), expr, rhExpr);\n }\n\n if (tk === _TokenKind.TokenKind.MATCHES) {\n return _OpMatches.OpMatches.create(toPosToken(token), expr, rhExpr);\n }\n\n //Assert.isTrue(tk === TokenKind.BETWEEN);\n return _OpBetween.OpBetween.create(toPosToken(token), expr, rhExpr);\n }\n return expr;\n }\n\n //sumExpression: productExpression ( (PLUS^ | MINUS^) productExpression)*;\n function eatSumExpression() {\n var expr = eatProductExpression();\n while (peekTokenAny(_TokenKind.TokenKind.PLUS, _TokenKind.TokenKind.MINUS, _TokenKind.TokenKind.INC)) {\n var token = nextToken(); //consume PLUS or MINUS or INC\n var rhExpr = eatProductExpression();\n checkRightOperand(token, rhExpr);\n if (token.getKind() === _TokenKind.TokenKind.PLUS) {\n expr = _OpPlus.OpPlus.create(toPosToken(token), expr, rhExpr);\n } else if (token.getKind() === _TokenKind.TokenKind.MINUS) {\n expr = _OpMinus.OpMinus.create(toPosToken(token), expr, rhExpr);\n }\n }\n return expr;\n }\n\n // productExpression: powerExpr ((STAR^ | DIV^| MOD^) powerExpr)* ;\n function eatProductExpression() {\n var expr = eatPowerIncDecExpression();\n while (peekTokenAny(_TokenKind.TokenKind.STAR, _TokenKind.TokenKind.DIV, _TokenKind.TokenKind.MOD)) {\n var token = nextToken(); // consume STAR/DIV/MOD\n var rhExpr = eatPowerIncDecExpression();\n checkOperands(token, expr, rhExpr);\n if (token.getKind() === _TokenKind.TokenKind.STAR) {\n expr = _OpMultiply.OpMultiply.create(toPosToken(token), expr, rhExpr);\n } else if (token.getKind() === _TokenKind.TokenKind.DIV) {\n expr = _OpDivide.OpDivide.create(toPosToken(token), expr, rhExpr);\n } else {\n //Assert.isTrue(token.getKind() === TokenKind.MOD);\n expr = _OpModulus.OpModulus.create(toPosToken(token), expr, rhExpr);\n }\n }\n return expr;\n }\n\n // powerExpr : unaryExpression (POWER^ unaryExpression)? (INC || DEC) ;\n function eatPowerIncDecExpression() {\n var expr = eatUnaryExpression(),\n token;\n\n if (peekTokenOne(_TokenKind.TokenKind.POWER)) {\n token = nextToken(); //consume POWER\n var rhExpr = eatUnaryExpression();\n checkRightOperand(token, rhExpr);\n return _OpPower.OpPower.create(toPosToken(token), expr, rhExpr);\n }\n\n if (expr !== null && peekTokenAny(_TokenKind.TokenKind.INC, _TokenKind.TokenKind.DEC)) {\n token = nextToken(); //consume INC/DEC\n if (token.getKind() === _TokenKind.TokenKind.INC) {\n return _OpInc.OpInc.create(toPosToken(token), true, expr);\n }\n return _OpDec.OpDec.create(toPosToken(token), true, expr);\n }\n\n return expr;\n }\n\n // unaryExpression: (PLUS^ | MINUS^ | BANG^ | INC^ | DEC^) unaryExpression | primaryExpression ;\n function eatUnaryExpression() {\n var token, expr;\n\n if (peekTokenAny(_TokenKind.TokenKind.PLUS, _TokenKind.TokenKind.MINUS, _TokenKind.TokenKind.NOT)) {\n token = nextToken();\n expr = eatUnaryExpression();\n if (token.getKind() === _TokenKind.TokenKind.NOT) {\n return _OpNot.OpNot.create(toPosToken(token), expr);\n }\n\n if (token.getKind() === _TokenKind.TokenKind.PLUS) {\n return _OpPlus.OpPlus.create(toPosToken(token), expr);\n }\n //Assert.isTrue(token.getKind() === TokenKind.MINUS);\n return _OpMinus.OpMinus.create(toPosToken(token), expr);\n }\n if (peekTokenAny(_TokenKind.TokenKind.INC, _TokenKind.TokenKind.DEC)) {\n token = nextToken();\n expr = eatUnaryExpression();\n if (token.getKind() === _TokenKind.TokenKind.INC) {\n return _OpInc.OpInc.create(toPosToken(token), false, expr);\n }\n return _OpDec.OpDec.create(toPosToken(token), false, expr);\n }\n\n return eatPrimaryExpression();\n }\n\n // primaryExpression : startNode (node)? -> ^(EXPRESSION startNode (node)?);\n function eatPrimaryExpression() {\n var nodes = [];\n var start = eatStartNode(); // always a start node\n nodes.push(start);\n while (maybeEatNode()) {\n nodes.push(pop());\n }\n if (nodes.length === 1) {\n return nodes[0];\n }\n return _CompoundExpression.CompoundExpression.create(toPosBounds(start.getStartPosition(), nodes[nodes.length - 1].getEndPosition()), nodes);\n }\n\n // node : ((DOT dottedNode) | (SAFE_NAVI dottedNode) | nonDottedNode)+;\n function maybeEatNode() {\n var expr = null;\n if (peekTokenAny(_TokenKind.TokenKind.DOT, _TokenKind.TokenKind.SAFE_NAVI)) {\n expr = eatDottedNode();\n } else {\n expr = maybeEatNonDottedNode();\n }\n\n if (expr === null) {\n return false;\n } else {\n push(expr);\n return true;\n }\n }\n\n // nonDottedNode: indexer;\n function maybeEatNonDottedNode() {\n if (peekTokenOne(_TokenKind.TokenKind.LSQUARE)) {\n if (maybeEatIndexer()) {\n return pop();\n }\n }\n return null;\n }\n\n //dottedNode\n // : ((methodOrProperty\n //\t | functionOrVar\n // | projection\n // | selection\n // | firstSelection\n // | lastSelection\n // ))\n //\t;\n function eatDottedNode() {\n var token = nextToken(); // it was a '.' or a '?.'\n var nullSafeNavigation = token.getKind() === _TokenKind.TokenKind.SAFE_NAVI;\n if (maybeEatMethodOrProperty(nullSafeNavigation) || maybeEatFunctionOrVar() || maybeEatProjection(nullSafeNavigation) || maybeEatSelection(nullSafeNavigation)) {\n return pop();\n }\n if (peekToken() === null) {\n // unexpectedly ran out of data\n raiseInternalException(token.startPos, 'OOD');\n } else {\n raiseInternalException(token.startPos, 'UNEXPECTED_DATA_AFTER_DOT', toString(peekToken()));\n }\n return null;\n }\n\n // functionOrVar\n // : (POUND ID LPAREN) => function\n // | var\n //\n // function : POUND id=ID methodArgs -> ^(FUNCTIONREF[$id] methodArgs);\n // var : POUND id=ID -> ^(VARIABLEREF[$id]);\n function maybeEatFunctionOrVar() {\n if (!peekTokenOne(_TokenKind.TokenKind.HASH)) {\n return false;\n }\n var token = nextToken();\n var functionOrVariableName = eatToken(_TokenKind.TokenKind.IDENTIFIER);\n var args = maybeEatMethodArgs();\n if (args === null) {\n push(_VariableReference.VariableReference.create(functionOrVariableName.data, toPosBounds(token.startPos, functionOrVariableName.endPos)));\n return true;\n }\n\n push(_FunctionReference.FunctionReference.create(functionOrVariableName.data, toPosBounds(token.startPos, functionOrVariableName.endPos), args));\n return true;\n }\n\n // methodArgs : LPAREN! (argument (COMMA! argument)* (COMMA!)?)? RPAREN!;\n function maybeEatMethodArgs() {\n if (!peekTokenOne(_TokenKind.TokenKind.LPAREN)) {\n return null;\n }\n var args = [];\n consumeArguments(args);\n eatToken(_TokenKind.TokenKind.RPAREN);\n return args;\n }\n\n function eatConstructorArgs(accumulatedArguments) {\n if (!peekTokenOne(_TokenKind.TokenKind.LPAREN)) {\n raiseInternalException(toPosToken(peekToken()), 'MISSING_CONSTRUCTOR_ARGS');\n }\n consumeArguments(accumulatedArguments);\n eatToken(_TokenKind.TokenKind.RPAREN);\n }\n\n /**\n * Used for consuming arguments for either a method or a constructor call\n */\n function consumeArguments(accumulatedArguments) {\n var pos = peekToken().startPos;\n var next;\n do {\n nextToken(); // consume ( (first time through) or comma (subsequent times)\n var token = peekToken();\n if (token === null) {\n raiseInternalException(pos, 'RUN_OUT_OF_ARGUMENTS');\n }\n if (token.getKind() !== _TokenKind.TokenKind.RPAREN) {\n accumulatedArguments.push(eatExpression());\n }\n next = peekToken();\n } while (next !== null && next.kind === _TokenKind.TokenKind.COMMA);\n\n if (next === null) {\n raiseInternalException(pos, 'RUN_OUT_OF_ARGUMENTS');\n }\n }\n\n function positionOf(token) {\n if (token === null) {\n // if null assume the problem is because the right token was\n // not found at the end of the expression\n return expressionString.length;\n }\n return token.startPos;\n }\n\n //startNode\n // : parenExpr | literal\n //\t | type\n //\t | methodOrProperty\n //\t | functionOrVar\n //\t | projection\n //\t | selection\n //\t | firstSelection\n //\t | lastSelection\n //\t | indexer\n //\t | constructor\n function eatStartNode() {\n if (maybeEatLiteral()) {\n return pop();\n } else if (maybeEatParenExpression()) {\n return pop();\n } else if (maybeEatTypeReference() || maybeEatNullReference() || maybeEatConstructorReference() || maybeEatMethodOrProperty(false) || maybeEatFunctionOrVar()) {\n return pop();\n } else if (maybeEatBeanReference()) {\n return pop();\n } else if (maybeEatProjection(false) || maybeEatSelection(false) || maybeEatIndexer()) {\n return pop();\n } else if (maybeEatInlineListOrMap()) {\n return pop();\n } else {\n return null;\n }\n }\n\n // parse: @beanname @'bean.name'\n // quoted if dotted\n function maybeEatBeanReference() {\n if (peekTokenOne(_TokenKind.TokenKind.BEAN_REF)) {\n var beanRefToken = nextToken();\n var beanNameToken = null;\n var beanName = null;\n if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {\n beanNameToken = eatToken(_TokenKind.TokenKind.IDENTIFIER);\n beanName = beanNameToken.data;\n } else if (peekTokenOne(_TokenKind.TokenKind.LITERAL_STRING)) {\n beanNameToken = eatToken(_TokenKind.TokenKind.LITERAL_STRING);\n beanName = beanNameToken.stringValue();\n beanName = beanName.substring(1, beanName.length() - 1);\n } else {\n raiseInternalException(beanRefToken.startPos, 'INVALID_BEAN_REFERENCE');\n }\n\n var beanReference = _BeanReference.BeanReference.create(toPosToken(beanNameToken), beanName);\n push(beanReference);\n return true;\n }\n return false;\n }\n\n function maybeEatTypeReference() {\n if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {\n var typeName = peekToken();\n if (typeName.stringValue() !== 'T') {\n return false;\n }\n // It looks like a type reference but is T being used as a map key?\n var token = nextToken();\n if (peekTokenOne(_TokenKind.TokenKind.RSQUARE)) {\n // looks like 'T]' (T is map key)\n push(_PropertyReference.PropertyReference.create(token.stringValue(), toPosToken(token)));\n return true;\n }\n eatToken(_TokenKind.TokenKind.LPAREN);\n var node = eatPossiblyQualifiedId();\n // dotted qualified id\n // Are there array dimensions?\n var dims = 0;\n while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) {\n eatToken(_TokenKind.TokenKind.RSQUARE);\n dims++;\n }\n eatToken(_TokenKind.TokenKind.RPAREN);\n push(_TypeReference.TypeReference.create(toPosToken(typeName), node, dims));\n return true;\n }\n return false;\n }\n\n function maybeEatNullReference() {\n if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {\n var nullToken = peekToken();\n if (nullToken.stringValue().toLowerCase() !== 'null') {\n return false;\n }\n nextToken();\n push(_NullLiteral.NullLiteral.create(toPosToken(nullToken)));\n return true;\n }\n return false;\n }\n\n //projection: PROJECT^ expression RCURLY!;\n function maybeEatProjection(nullSafeNavigation) {\n var token = peekToken();\n if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.PROJECT, true)) {\n return false;\n }\n var expr = eatExpression();\n eatToken(_TokenKind.TokenKind.RSQUARE);\n push(_Projection.Projection.create(nullSafeNavigation, toPosToken(token), expr));\n return true;\n }\n\n // list = LCURLY (element (COMMA element)*) RCURLY\n // map = LCURLY (key ':' value (COMMA key ':' value)*) RCURLY\n function maybeEatInlineListOrMap() {\n var token = peekToken(),\n listElements = [];\n\n if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.LCURLY, true)) {\n return false;\n }\n var expr = null;\n var closingCurly = peekToken();\n if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.RCURLY, true)) {\n // empty list '{}'\n expr = _InlineList.InlineList.create(toPosBounds(token.startPos, closingCurly.endPos));\n } else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COLON, true)) {\n closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);\n // empty map '{:}'\n expr = _InlineMap.InlineMap.create(toPosBounds(token.startPos, closingCurly.endPos));\n } else {\n var firstExpression = eatExpression();\n // Next is either:\n // '}' - end of list\n // ',' - more expressions in this list\n // ':' - this is a map!\n\n if (peekTokenOne(_TokenKind.TokenKind.RCURLY)) {\n // list with one item in it\n listElements.push(firstExpression);\n closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);\n expr = _InlineList.InlineList.create(toPosBounds(token.startPos, closingCurly.endPos), listElements);\n } else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true)) {\n // multi item list\n listElements.push(firstExpression);\n do {\n listElements.push(eatExpression());\n } while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true));\n closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);\n expr = _InlineList.InlineList.create(toPosToken(token.startPos, closingCurly.endPos), listElements);\n } else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COLON, true)) {\n // map!\n var mapElements = [];\n mapElements.push(firstExpression);\n mapElements.push(eatExpression());\n while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true)) {\n mapElements.push(eatExpression());\n eatToken(_TokenKind.TokenKind.COLON);\n mapElements.push(eatExpression());\n }\n closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);\n expr = _InlineMap.InlineMap.create(toPosBounds(token.startPos, closingCurly.endPos), mapElements);\n } else {\n raiseInternalException(token.startPos, 'OOD');\n }\n }\n push(expr);\n return true;\n }\n\n function maybeEatIndexer() {\n var token = peekToken();\n if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) {\n return false;\n }\n var expr = eatExpression();\n eatToken(_TokenKind.TokenKind.RSQUARE);\n push(_Indexer.Indexer.create(toPosToken(token), expr));\n return true;\n }\n\n function maybeEatSelection(nullSafeNavigation) {\n var token = peekToken();\n if (!peekSelectToken()) {\n return false;\n }\n nextToken();\n var expr = eatExpression();\n if (expr === null) {\n raiseInternalException(toPosToken(token), 'MISSING_SELECTION_EXPRESSION');\n }\n eatToken(_TokenKind.TokenKind.RSQUARE);\n if (token.getKind() === _TokenKind.TokenKind.SELECT_FIRST) {\n push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.FIRST, toPosToken(token), expr));\n } else if (token.getKind() === _TokenKind.TokenKind.SELECT_LAST) {\n push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.LAST, toPosToken(token), expr));\n } else {\n push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.ALL, toPosToken(token), expr));\n }\n return true;\n }\n\n /**\n * Eat an identifier, possibly qualified (meaning that it is dotted).\n * TODO AndyC Could create complete identifiers (a.b.c) here rather than a sequence of them? (a, b, c)\n */\n function eatPossiblyQualifiedId() {\n var qualifiedIdPieces = [];\n var node = peekToken();\n while (isValidQualifiedId(node)) {\n nextToken();\n if (node.kind !== _TokenKind.TokenKind.DOT) {\n qualifiedIdPieces.push(_Identifier.Identifier.create(node.stringValue(), toPosToken(node)));\n }\n node = peekToken();\n }\n if (!qualifiedIdPieces.length) {\n if (node === null) {\n raiseInternalException(expressionString.length(), 'OOD');\n }\n raiseInternalException(node.startPos, 'NOT_EXPECTED_TOKEN', 'qualified ID', node.getKind().toString().toLowerCase());\n }\n var pos = toPosBounds(qualifiedIdPieces[0].getStartPosition(), qualifiedIdPieces[qualifiedIdPieces.length - 1].getEndPosition());\n return _QualifiedIdentifier.QualifiedIdentifier.create(pos, qualifiedIdPieces);\n }\n\n function isValidQualifiedId(node) {\n if (node === null || node.kind === _TokenKind.TokenKind.LITERAL_STRING) {\n return false;\n }\n if (node.kind === _TokenKind.TokenKind.DOT || node.kind === _TokenKind.TokenKind.IDENTIFIER) {\n return true;\n }\n var value = node.stringValue();\n return value && value.length && VALID_QUALIFIED_ID_PATTERN.test(value);\n }\n\n // This is complicated due to the support for dollars in identifiers. Dollars are normally separate tokens but\n // there we want to combine a series of identifiers and dollars into a single identifier\n function maybeEatMethodOrProperty(nullSafeNavigation) {\n if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {\n var methodOrPropertyName = nextToken();\n var args = maybeEatMethodArgs();\n if (args === null) {\n // property\n push(_PropertyReference.PropertyReference.create(nullSafeNavigation, methodOrPropertyName.stringValue(), toPosToken(methodOrPropertyName)));\n return true;\n }\n // methodreference\n push(_MethodReference.MethodReference.create(nullSafeNavigation, methodOrPropertyName.stringValue(), toPosToken(methodOrPropertyName), args));\n // TODO what is the end position for a method reference? the name or the last arg?\n return true;\n }\n return false;\n }\n\n //constructor\n //:\t('new' qualifiedId LPAREN) => 'new' qualifiedId ctorArgs -> ^(CONSTRUCTOR qualifiedId ctorArgs)\n function maybeEatConstructorReference() {\n if (peekIdentifierToken('new')) {\n var newToken = nextToken();\n // It looks like a constructor reference but is NEW being used as a map key?\n if (peekTokenOne(_TokenKind.TokenKind.RSQUARE)) {\n // looks like 'NEW]' (so NEW used as map key)\n push(_PropertyReference.PropertyReference.create(newToken.stringValue(), toPosToken(newToken)));\n return true;\n }\n var possiblyQualifiedConstructorName = eatPossiblyQualifiedId();\n var nodes = [];\n nodes.push(possiblyQualifiedConstructorName);\n if (peekTokenOne(_TokenKind.TokenKind.LSQUARE)) {\n // array initializer\n var dimensions = [];\n while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) {\n if (!peekTokenOne(_TokenKind.TokenKind.RSQUARE)) {\n dimensions.push(eatExpression());\n } else {\n dimensions.push(null);\n }\n eatToken(_TokenKind.TokenKind.RSQUARE);\n }\n if (maybeEatInlineListOrMap()) {\n nodes.push(pop());\n }\n push(_ConstructorReference.ConstructorReference.create(toPosToken(newToken), dimensions, nodes));\n } else {\n // regular constructor invocation\n eatConstructorArgs(nodes);\n // TODO correct end position?\n push(_ConstructorReference.ConstructorReference.create(toPosToken(newToken), nodes));\n }\n return true;\n }\n return false;\n }\n\n function push(newNode) {\n constructedNodes.push(newNode);\n }\n\n function pop() {\n return constructedNodes.pop();\n }\n\n //\tliteral\n // : INTEGER_LITERAL\n //\t| boolLiteral\n //\t| STRING_LITERAL\n // | HEXADECIMAL_INTEGER_LITERAL\n // | REAL_LITERAL\n //\t| DQ_STRING_LITERAL\n //\t| NULL_LITERAL\n function maybeEatLiteral() {\n var token = peekToken();\n if (token === null) {\n return false;\n }\n if (token.getKind() === _TokenKind.TokenKind.LITERAL_INT || token.getKind() === _TokenKind.TokenKind.LITERAL_LONG) {\n push(_NumberLiteral.NumberLiteral.create(parseInt(token.stringValue(), 10), toPosToken(token)));\n } else if (token.getKind() === _TokenKind.TokenKind.LITERAL_REAL || token.getKind() === _TokenKind.TokenKind.LITERAL_REAL_FLOAT) {\n push(_NumberLiteral.NumberLiteral.create(parseFloat(token.stringValue()), toPosToken(token)));\n } else if (token.getKind() === _TokenKind.TokenKind.LITERAL_HEXINT || token.getKind() === _TokenKind.TokenKind.LITERAL_HEXLONG) {\n push(_NumberLiteral.NumberLiteral.create(parseInt(token.stringValue(), 16), toPosToken(token)));\n } else if (peekIdentifierToken('true')) {\n push(_BooleanLiteral.BooleanLiteral.create(true, toPosToken(token)));\n } else if (peekIdentifierToken('false')) {\n push(_BooleanLiteral.BooleanLiteral.create(false, toPosToken(token)));\n } else if (token.getKind() === _TokenKind.TokenKind.LITERAL_STRING) {\n push(_StringLiteral.StringLiteral.create(token.stringValue(), toPosToken(token)));\n } else {\n return false;\n }\n nextToken();\n return true;\n }\n\n //parenExpr : LPAREN! expression RPAREN!;\n function maybeEatParenExpression() {\n if (peekTokenOne(_TokenKind.TokenKind.LPAREN)) {\n nextToken();\n var expr = eatExpression();\n eatToken(_TokenKind.TokenKind.RPAREN);\n push(expr);\n return true;\n } else {\n return false;\n }\n }\n\n // relationalOperator\n // : EQUAL | NOT_EQUAL | LESS_THAN | LESS_THAN_OR_EQUAL | GREATER_THAN\n // | GREATER_THAN_OR_EQUAL | INSTANCEOF | BETWEEN | MATCHES\n function maybeEatRelationalOperator() {\n var token = peekToken();\n if (token === null) {\n return null;\n }\n if (token.isNumericRelationalOperator()) {\n return token;\n }\n if (token.isIdentifier()) {\n var idString = token.stringValue();\n if (idString.toLowerCase() === 'instanceof') {\n return token.asInstanceOfToken();\n }\n if (idString.toLowerCase() === 'matches') {\n return token.asMatchesToken();\n }\n if (idString.toLowerCase() === 'between') {\n return token.asBetweenToken();\n }\n }\n return null;\n }\n\n function eatToken(expectedKind) {\n var token = nextToken();\n if (token === null) {\n raiseInternalException(expressionString.length, 'OOD');\n }\n if (token.getKind() !== expectedKind) {\n raiseInternalException(token.startPos, 'NOT_EXPECTED_TOKEN', expectedKind.toString().toLowerCase(), token.getKind().toString().toLowerCase());\n }\n return token;\n }\n\n function peekTokenOne(desiredTokenKind) {\n return peekTokenConsumeIfMatched(desiredTokenKind, false);\n }\n\n function peekTokenConsumeIfMatched(desiredTokenKind, consumeIfMatched) {\n if (!moreTokens()) {\n return false;\n }\n var token = peekToken();\n if (token.getKind() === desiredTokenKind) {\n if (consumeIfMatched) {\n tokenStreamPointer++;\n }\n return true;\n }\n\n if (desiredTokenKind === _TokenKind.TokenKind.IDENTIFIER) {\n // might be one of the textual forms of the operators (e.g. NE for !== ) - in which case we can treat it as an identifier\n // The list is represented here: Tokenizer.alternativeOperatorNames and those ones are in order in the TokenKind enum\n if (token.getKind().ordinal() >= _TokenKind.TokenKind.DIV.ordinal() && token.getKind().ordinal() <= _TokenKind.TokenKind.NOT.ordinal() && token.data !== null) {\n // if token.data were null, we'd know it wasn'token the textual form, it was the symbol form\n return true;\n }\n }\n return false;\n }\n\n function peekTokenAny() {\n if (!moreTokens()) {\n return false;\n }\n var token = peekToken();\n var args = Array.prototype.slice.call(arguments);\n for (var i = 0, l = args.length; i < l; i += 1) {\n if (token.getKind() === args[i]) {\n return true;\n }\n }\n return false;\n }\n\n function peekIdentifierToken(identifierString) {\n if (!moreTokens()) {\n return false;\n }\n var token = peekToken();\n return token.getKind() === _TokenKind.TokenKind.IDENTIFIER && token.stringValue().toLowerCase() === identifierString.toLowerCase();\n }\n\n function peekSelectToken() {\n if (!moreTokens()) {\n return false;\n }\n var token = peekToken();\n return token.getKind() === _TokenKind.TokenKind.SELECT || token.getKind() === _TokenKind.TokenKind.SELECT_FIRST || token.getKind() === _TokenKind.TokenKind.SELECT_LAST;\n }\n\n function moreTokens() {\n return tokenStreamPointer < tokenStream.length;\n }\n\n function nextToken() {\n if (tokenStreamPointer >= tokenStreamLength) {\n return null;\n }\n return tokenStream[tokenStreamPointer++];\n }\n\n function peekToken() {\n if (tokenStreamPointer >= tokenStreamLength) {\n return null;\n }\n return tokenStream[tokenStreamPointer];\n }\n\n function raiseInternalException(pos, message, expected, actual) {\n if (expected) {\n message += '\\nExpected: ' + expected;\n }\n if (actual) {\n message += '\\nActual: ' + actual;\n }\n throw {\n name: 'InternalParseException',\n message: 'Error occurred while attempting to parse expression \\'' + expressionString + '\\' at position ' + pos + '. Message: ' + message\n };\n }\n\n function toString(token) {\n if (token.getKind().hasPayload()) {\n return token.stringValue();\n }\n return token.getKind().toString().toLowerCase();\n }\n\n function checkOperands(token, left, right) {\n checkLeftOperand(token, left);\n checkRightOperand(token, right);\n }\n\n function checkLeftOperand(token, operandExpression) {\n if (operandExpression === null) {\n raiseInternalException(token.startPos, 'LEFT_OPERAND_PROBLEM');\n }\n }\n\n function checkRightOperand(token, operandExpression) {\n if (operandExpression === null) {\n raiseInternalException(token.startPos, 'RIGHT_OPERAND_PROBLEM');\n }\n }\n\n /**\n * Compress the start and end of a token into a single int.\n */\n function toPosToken(token) {\n return (token.startPos << 16) + token.endPos;\n }\n\n function toPosBounds(start, end) {\n return (start << 16) + end;\n }\n\n return {\n setConfiguration: setConfiguration,\n parse: parse\n };\n};\n\n//not yet implemented\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Tokenizer = undefined;\n\nvar _Token = __webpack_require__(7);\n\nvar _TokenKind = __webpack_require__(2);\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Andy Clement\n * @author Phillip Webb\n * @author Ben March\n * @since 0.2.0\n */\n\nvar ALTERNATIVE_OPERATOR_NAMES = ['DIV', 'EQ', 'GE', 'GT', 'LE', 'LT', 'MOD', 'NE', 'NOT'],\n FLAGS = [],\n IS_DIGIT = 1,\n IS_HEXDIGIT = 2,\n IS_ALPHA = 4;\n\nfunction init() {\n var ch;\n\n for (ch = '0'.charCodeAt(0); ch <= '9'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_DIGIT | IS_HEXDIGIT;\n }\n for (ch = 'A'.charCodeAt(0); ch <= 'F'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_HEXDIGIT;\n }\n for (ch = 'a'.charCodeAt(0); ch <= 'f'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_HEXDIGIT;\n }\n for (ch = 'A'.charCodeAt(0); ch <= 'Z'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_ALPHA;\n }\n for (ch = 'a'.charCodeAt(0); ch <= 'z'.charCodeAt(0); ch += 1) {\n FLAGS[ch] |= IS_ALPHA;\n }\n}\n\ninit();\n\nfunction tokenize(inputData) {\n var expressionString = inputData,\n toProcess = inputData + '\\0',\n max = toProcess.length,\n pos = 0,\n tokens = [];\n\n function process() {\n var ch;\n\n while (pos < max) {\n ch = toProcess[pos];\n if (isAlphabetic(ch)) {\n lexIdentifier();\n } else {\n switch (ch) {\n case '+':\n if (isTwoCharToken(_TokenKind.TokenKind.INC)) {\n pushPairToken(_TokenKind.TokenKind.INC);\n } else {\n pushCharToken(_TokenKind.TokenKind.PLUS);\n }\n break;\n case '_':\n // the other way to start an identifier\n lexIdentifier();\n break;\n case '-':\n if (isTwoCharToken(_TokenKind.TokenKind.DEC)) {\n pushPairToken(_TokenKind.TokenKind.DEC);\n } else {\n pushCharToken(_TokenKind.TokenKind.MINUS);\n }\n break;\n case ':':\n pushCharToken(_TokenKind.TokenKind.COLON);\n break;\n case '.':\n pushCharToken(_TokenKind.TokenKind.DOT);\n break;\n case ',':\n pushCharToken(_TokenKind.TokenKind.COMMA);\n break;\n case '*':\n pushCharToken(_TokenKind.TokenKind.STAR);\n break;\n case '/':\n pushCharToken(_TokenKind.TokenKind.DIV);\n break;\n case '%':\n pushCharToken(_TokenKind.TokenKind.MOD);\n break;\n case '(':\n pushCharToken(_TokenKind.TokenKind.LPAREN);\n break;\n case ')':\n pushCharToken(_TokenKind.TokenKind.RPAREN);\n break;\n case '[':\n pushCharToken(_TokenKind.TokenKind.LSQUARE);\n break;\n case '#':\n pushCharToken(_TokenKind.TokenKind.HASH);\n break;\n case ']':\n pushCharToken(_TokenKind.TokenKind.RSQUARE);\n break;\n case '{':\n pushCharToken(_TokenKind.TokenKind.LCURLY);\n break;\n case '}':\n pushCharToken(_TokenKind.TokenKind.RCURLY);\n break;\n case '@':\n pushCharToken(_TokenKind.TokenKind.BEAN_REF);\n break;\n case '^':\n if (isTwoCharToken(_TokenKind.TokenKind.SELECT_FIRST)) {\n pushPairToken(_TokenKind.TokenKind.SELECT_FIRST);\n } else {\n pushCharToken(_TokenKind.TokenKind.POWER);\n }\n break;\n case '!':\n if (isTwoCharToken(_TokenKind.TokenKind.NE)) {\n pushPairToken(_TokenKind.TokenKind.NE);\n } else if (isTwoCharToken(_TokenKind.TokenKind.PROJECT)) {\n pushPairToken(_TokenKind.TokenKind.PROJECT);\n } else {\n pushCharToken(_TokenKind.TokenKind.NOT);\n }\n break;\n case '=':\n if (isTwoCharToken(_TokenKind.TokenKind.EQ)) {\n pushPairToken(_TokenKind.TokenKind.EQ);\n } else {\n pushCharToken(_TokenKind.TokenKind.ASSIGN);\n }\n break;\n case '&':\n if (!isTwoCharToken(_TokenKind.TokenKind.SYMBOLIC_AND)) {\n throw {\n name: 'SpelParseException',\n message: 'Missing character \\'&\\' in expression (' + expressionString + ') at position ' + pos\n };\n }\n pushPairToken(_TokenKind.TokenKind.SYMBOLIC_AND);\n break;\n case '|':\n if (!isTwoCharToken(_TokenKind.TokenKind.SYMBOLIC_OR)) {\n throw {\n name: 'SpelParseException',\n message: 'Missing character \\'|\\' in expression (' + expressionString + ') at position ' + pos\n };\n }\n pushPairToken(_TokenKind.TokenKind.SYMBOLIC_OR);\n break;\n case '?':\n if (isTwoCharToken(_TokenKind.TokenKind.SELECT)) {\n pushPairToken(_TokenKind.TokenKind.SELECT);\n } else if (isTwoCharToken(_TokenKind.TokenKind.ELVIS)) {\n pushPairToken(_TokenKind.TokenKind.ELVIS);\n } else if (isTwoCharToken(_TokenKind.TokenKind.SAFE_NAVI)) {\n pushPairToken(_TokenKind.TokenKind.SAFE_NAVI);\n } else {\n pushCharToken(_TokenKind.TokenKind.QMARK);\n }\n break;\n case '$':\n if (isTwoCharToken(_TokenKind.TokenKind.SELECT_LAST)) {\n pushPairToken(_TokenKind.TokenKind.SELECT_LAST);\n } else {\n lexIdentifier();\n }\n break;\n case '>':\n if (isTwoCharToken(_TokenKind.TokenKind.GE)) {\n pushPairToken(_TokenKind.TokenKind.GE);\n } else {\n pushCharToken(_TokenKind.TokenKind.GT);\n }\n break;\n case '<':\n if (isTwoCharToken(_TokenKind.TokenKind.LE)) {\n pushPairToken(_TokenKind.TokenKind.LE);\n } else {\n pushCharToken(_TokenKind.TokenKind.LT);\n }\n break;\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n lexNumericLiteral(ch === '0');\n break;\n case ' ':\n case '\\t':\n case '\\r':\n case '\\n':\n // drift over white space\n pos += 1;\n break;\n case '\\'':\n lexQuotedStringLiteral();\n break;\n case '\"':\n lexDoubleQuotedStringLiteral();\n break;\n case '\\0':\n // hit sentinel at end of value\n pos += 1; // will take us to the end\n break;\n case '\\\\':\n throw {\n name: 'SpelParseException',\n message: 'Unexpected escape character in expression (' + expressionString + ') at position ' + pos\n };\n default:\n throw {\n name: 'SpelParseException',\n message: 'Cannot handle character \\'' + ch + '\\' in expression (' + expressionString + ') at position ' + pos\n };\n }\n }\n }\n }\n\n function lexQuotedStringLiteral() {\n var start = pos,\n terminated = false,\n ch;\n\n while (!terminated) {\n pos += 1;\n ch = toProcess[pos];\n if (ch === '\\'') {\n // may not be the end if the char after is also a '\n if (toProcess[pos + 1] === '\\'') {\n pos += 1; // skip over that too, and continue\n } else {\n terminated = true;\n }\n }\n if (ch.charCodeAt(0) === 0) {\n throw {\n name: 'SpelParseException',\n message: 'Non-terminating quoted string in expression (' + expressionString + ') at position ' + pos\n };\n }\n }\n pos += 1;\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_STRING, subarray(start, pos), start, pos));\n }\n function lexDoubleQuotedStringLiteral() {\n var start = pos,\n terminated = false,\n ch;\n\n while (!terminated) {\n pos += 1;\n ch = toProcess[pos];\n if (ch === '\"') {\n // may not be the end if the char after is also a '\n if (toProcess[pos + 1] === '\"') {\n pos += 1; // skip over that too, and continue\n } else {\n terminated = true;\n }\n }\n if (ch.charCodeAt(0) === 0) {\n throw {\n name: 'SpelParseException',\n message: 'Non-terminating double-quoted string in expression (' + expressionString + ') at position ' + pos\n };\n }\n }\n pos += 1;\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_STRING, subarray(start, pos), start, pos));\n }\n\n // REAL_LITERAL :\n // ('.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |\n // ((DECIMAL_DIGIT)+ '.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |\n // ((DECIMAL_DIGIT)+ (EXPONENT_PART) (REAL_TYPE_SUFFIX)?) |\n // ((DECIMAL_DIGIT)+ (REAL_TYPE_SUFFIX));\n // fragment INTEGER_TYPE_SUFFIX : ( 'L' | 'l' );\n // fragment HEX_DIGIT :\n // '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'A'|'B'|'C'|'D'|'E'|'F'|'a'|'b'|'c'|'d'|'e'|'f';\n //\n // fragment EXPONENT_PART : 'e' (SIGN)* (DECIMAL_DIGIT)+ | 'E' (SIGN)*\n // (DECIMAL_DIGIT)+ ;\n // fragment SIGN : '+' | '-' ;\n // fragment REAL_TYPE_SUFFIX : 'F' | 'f' | 'D' | 'd';\n // INTEGER_LITERAL\n // : (DECIMAL_DIGIT)+ (INTEGER_TYPE_SUFFIX)?;\n\n function lexNumericLiteral(firstCharIsZero) {\n var isReal = false,\n start = pos,\n ch = toProcess[pos + 1],\n isHex = ch === 'x' || ch === 'X',\n dotpos,\n endOfNumber,\n possibleSign,\n isFloat;\n\n // deal with hexadecimal\n if (firstCharIsZero && isHex) {\n pos = pos + 1;\n do {\n pos += 1;\n } while (isHexadecimalDigit(toProcess[pos]));\n if (isChar('L', 'l')) {\n pushHexIntToken(subarray(start + 2, pos), true, start, pos);\n pos += 1;\n } else {\n pushHexIntToken(subarray(start + 2, pos), false, start, pos);\n }\n return;\n }\n\n // real numbers must have leading digits\n\n // Consume first part of number\n do {\n pos += 1;\n } while (isDigit(toProcess[pos]));\n\n // a '.' indicates this number is a real\n ch = toProcess[pos];\n if (ch === '.') {\n isReal = true;\n dotpos = pos;\n // carry on consuming digits\n do {\n pos += 1;\n } while (isDigit(toProcess[pos]));\n if (pos === dotpos + 1) {\n // the number is something like '3.'. It is really an int but may be\n // part of something like '3.toString()'. In this case process it as\n // an int and leave the dot as a separate token.\n pos = dotpos;\n pushIntToken(subarray(start, pos), false, start, pos);\n return;\n }\n }\n\n endOfNumber = pos;\n\n // Now there may or may not be an exponent\n\n // is it a long ?\n if (isChar('L', 'l')) {\n if (isReal) {\n // 3.4L - not allowed\n throw {\n name: 'SpelParseException',\n message: 'Real cannot be long in expression (' + expressionString + ') at position ' + pos\n };\n }\n pushIntToken(subarray(start, endOfNumber), true, start, endOfNumber);\n pos += 1;\n } else if (isExponentChar(toProcess[pos])) {\n isReal = true; // if it wasn't before, it is now\n pos += 1;\n possibleSign = toProcess[pos];\n if (isSign(possibleSign)) {\n pos += 1;\n }\n\n // exponent digits\n do {\n pos += 1;\n } while (isDigit(toProcess[pos]));\n isFloat = false;\n if (isFloatSuffix(toProcess[pos])) {\n isFloat = true;\n pos += 1;\n endOfNumber = pos;\n } else if (isDoubleSuffix(toProcess[pos])) {\n pos += 1;\n endOfNumber = pos;\n }\n pushRealToken(subarray(start, pos), isFloat, start, pos);\n } else {\n ch = toProcess[pos];\n isFloat = false;\n if (isFloatSuffix(ch)) {\n isReal = true;\n isFloat = true;\n pos += 1;\n endOfNumber = pos;\n } else if (isDoubleSuffix(ch)) {\n isReal = true;\n pos += 1;\n endOfNumber = pos;\n }\n if (isReal) {\n pushRealToken(subarray(start, endOfNumber), isFloat, start, endOfNumber);\n } else {\n pushIntToken(subarray(start, endOfNumber), false, start, endOfNumber);\n }\n }\n }\n\n function lexIdentifier() {\n var start = pos,\n substring,\n asString,\n idx;\n do {\n pos += 1;\n } while (isIdentifier(toProcess[pos]));\n substring = subarray(start, pos);\n\n // Check if this is the alternative (textual) representation of an operator (see\n // alternativeOperatorNames)\n if (pos - start === 2 || pos - start === 3) {\n asString = substring.toUpperCase();\n idx = ALTERNATIVE_OPERATOR_NAMES.indexOf(asString);\n if (idx >= 0) {\n pushOneCharOrTwoCharToken(_TokenKind.TokenKind.valueOf(asString), start, substring);\n return;\n }\n }\n tokens.push(new _Token.Token(_TokenKind.TokenKind.IDENTIFIER, substring.replace('\\0', ''), start, pos));\n }\n\n function pushIntToken(data, isLong, start, end) {\n if (isLong) {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_LONG, data, start, end));\n } else {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_INT, data, start, end));\n }\n }\n\n function pushHexIntToken(data, isLong, start, end) {\n if (data.length === 0) {\n if (isLong) {\n throw {\n name: 'SpelParseException',\n message: 'Not a long in expression (' + expressionString + ') at position ' + pos\n };\n } else {\n throw {\n name: 'SpelParseException',\n message: 'Not an int in expression (' + expressionString + ') at position ' + pos\n };\n }\n }\n if (isLong) {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_HEXLONG, data, start, end));\n } else {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_HEXINT, data, start, end));\n }\n }\n\n function pushRealToken(data, isFloat, start, end) {\n if (isFloat) {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_REAL_FLOAT, data, start, end));\n } else {\n tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_REAL, data, start, end));\n }\n }\n\n function subarray(start, end) {\n return toProcess.substring(start, end);\n }\n\n /**\n * Check if this might be a two character token.\n */\n function isTwoCharToken(kind) {\n if (kind.tokenChars.length === 2 && toProcess[pos] === kind.tokenChars[0]) {\n return toProcess[pos + 1] === kind.tokenChars[1];\n }\n return false;\n }\n\n /**\n * Push a token of just one character in length.\n */\n function pushCharToken(kind) {\n tokens.push(new _Token.Token(kind, null, pos, pos + 1));\n pos += 1;\n }\n\n /**\n * Push a token of two characters in length.\n */\n function pushPairToken(kind) {\n tokens.push(new _Token.Token(kind, null, pos, pos + 2));\n pos += 2;\n }\n\n function pushOneCharOrTwoCharToken(kind, pos, data) {\n tokens.push(new _Token.Token(kind, data, pos, pos + kind.getLength()));\n }\n\n // ID: ('a'..'z'|'A'..'Z'|'_'|'$') ('a'..'z'|'A'..'Z'|'_'|'$'|'0'..'9'|DOT_ESCAPED)*;\n function isIdentifier(ch) {\n return isAlphabetic(ch) || isDigit(ch) || ch === '_' || ch === '$';\n }\n\n function isChar(a, b) {\n var ch = toProcess[pos];\n return ch === a || ch === b;\n }\n\n function isExponentChar(ch) {\n return ch === 'e' || ch === 'E';\n }\n\n function isFloatSuffix(ch) {\n return ch === 'f' || ch === 'F';\n }\n\n function isDoubleSuffix(ch) {\n return ch === 'd' || ch === 'D';\n }\n\n function isSign(ch) {\n return ch === '+' || ch === '-';\n }\n\n function isDigit(ch) {\n if (ch.charCodeAt(0) > 255) {\n return false;\n }\n return (FLAGS[ch.charCodeAt(0)] & IS_DIGIT) !== 0;\n }\n\n function isAlphabetic(ch) {\n if (ch.charCodeAt(0) > 255) {\n return false;\n }\n return (FLAGS[ch.charCodeAt(0)] & IS_ALPHA) !== 0;\n }\n\n function isHexadecimalDigit(ch) {\n if (ch.charCodeAt(0) > 255) {\n return false;\n }\n return (FLAGS[ch.charCodeAt(0)] & IS_HEXDIGIT) !== 0;\n }\n\n process();\n\n return tokens;\n}\n\nvar Tokenizer = exports.Tokenizer = {\n tokenize: tokenize\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Token = undefined;\n\nvar _TokenKind = __webpack_require__(2);\n\nfunction Token(tokenKind, tokenData, startPos, endPos) {\n this.kind = tokenKind;\n this.startPos = startPos;\n this.endPos = endPos;\n if (tokenData) {\n this.data = tokenData;\n }\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nToken.prototype.getKind = function () {\n return this.kind;\n};\n\nToken.prototype.toString = function () {\n var s = '[';\n s += this.kind.toString();\n if (this.kind.hasPayload()) {\n s += ':' + this.data;\n }\n s += ']';\n s += '(' + this.startPos + ',' + this.endPos + ')';\n return s;\n};\n\nToken.prototype.isIdentifier = function () {\n return this.kind === _TokenKind.TokenKind.IDENTIFIER;\n};\n\nToken.prototype.isNumericRelationalOperator = function () {\n return this.kind === _TokenKind.TokenKind.GT || this.kind === _TokenKind.TokenKind.GE || this.kind === _TokenKind.TokenKind.LT || this.kind === _TokenKind.TokenKind.LE || this.kind === _TokenKind.TokenKind.EQ || this.kind === _TokenKind.TokenKind.NE;\n};\n\nToken.prototype.stringValue = function () {\n return this.data;\n};\n\nToken.prototype.asInstanceOfToken = function () {\n return new Token(_TokenKind.TokenKind.INSTANCEOF, this.startPos, this.endPos);\n};\n\nToken.prototype.asMatchesToken = function () {\n return new Token(_TokenKind.TokenKind.MATCHES, this.startPos, this.endPos);\n};\n\nToken.prototype.asBetweenToken = function () {\n return new Token(_TokenKind.TokenKind.BETWEEN, this.startPos, this.endPos);\n};\n\nToken.prototype.getStartPosition = function () {\n return this.startPos;\n};\n\nToken.prototype.getEndPosition = function () {\n return this.endPos;\n};\n\nexports.Token = Token;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BooleanLiteral = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the literal values TRUE and FALSE.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(value, position) {\n var node = _SpelNode.SpelNode.create('boolean', position);\n\n node.getValue = function () {\n return value;\n };\n\n node.setValue = function (newValue) {\n /*jshint -W093 */\n return value = newValue;\n /*jshint +W093 */\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar BooleanLiteral = exports.BooleanLiteral = {\n create: createNode\n};\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NumberLiteral = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Expression language AST node that represents a literal number of any kind (since JavaScript only supports doubles anyway)\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(value, position) {\n var node = _SpelNode.SpelNode.create('number', position);\n\n node.getValue = function () {\n return value;\n };\n\n node.setValue = function (newValue) {\n /*jshint -W093 */\n return value = newValue;\n /*jshint +W093 */\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar NumberLiteral = exports.NumberLiteral = {\n create: createNode\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StringLiteral = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Expression language AST node that represents a string literal.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(value, position) {\n var node = _SpelNode.SpelNode.create('string', position);\n\n function stripQuotes(value) {\n if (value[0] === '\\'' && value[value.length - 1] === '\\'' || value[0] === '\"' && value[value.length - 1] === '\"') {\n value = value.substring(1, value.length - 1);\n }\n\n return value.replace(/''/g, '\\'').replace(/\"\"/g, '\"');\n }\n\n //value cannot be null so no check\n value = stripQuotes(value);\n\n node.getValue = function () {\n return value;\n };\n\n node.setValue = function (newValue) {\n /*jshint -W093 */\n return value = newValue;\n /*jshint +W093 */\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar StringLiteral = exports.StringLiteral = {\n create: createNode\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NullLiteral = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Expression language AST node that represents null.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(value, position) {\n var node = _SpelNode.SpelNode.create('null', position);\n\n node.getValue = function () {\n return null;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar NullLiteral = exports.NullLiteral = {\n create: createNode\n};\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FunctionReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nvar _Stack = __webpack_require__(1);\n\n/**\n * A function reference is of the form \"#someFunction(a,b,c)\". Functions may be defined in\n * the context prior to the expression being evaluated or within the expression itself\n * using a lambda function definition. For example: Lambda function definition in an\n * expression: \"(#max = {|x,y|$x>$y?$x:$y};max(2,3))\" Calling context defined function:\n * \"#isEven(37)\". Functions may also be static java methods, registered in the context\n * prior to invocation of the expression.\n *\n *

    Functions are very simplistic, the arguments are not part of the definition (right\n * now), so the names must be unique.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nfunction createNode(functionName, position, args) {\n var node = _SpelNode.SpelNode.create('function', position);\n\n node.getRaw = function () {\n return {\n functionName: functionName,\n args: args\n };\n };\n\n node.getValue = function (state) {\n var locals = state.locals || {},\n context = state.rootContext,\n compiledArgs = [];\n\n //populate arguments\n args.forEach(function (arg) {\n // reset the active context to root context for evaluating argument\n var currentActiveContext = state.activeContext;\n state.activeContext = new _Stack.Stack();\n state.activeContext.push(state.rootContext);\n\n // evaluate argument\n compiledArgs.push(arg.getValue(state));\n\n // reset the active context\n state.activeContext = currentActiveContext;\n });\n\n if (locals[functionName]) {\n return locals[functionName].apply(context, compiledArgs);\n }\n\n throw {\n name: 'FunctionDoesNotExistException',\n message: 'Function \\'' + functionName + '\\' does not exist.'\n };\n };\n\n return node;\n}\n\nvar FunctionReference = exports.FunctionReference = {\n create: createNode\n};\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MethodReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nvar _Stack = __webpack_require__(1);\n\n/**\n * Expression language AST node that represents a method reference.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n */\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nfunction createNode(nullSafeNavigation, methodName, position, args) {\n var node = _SpelNode.SpelNode.create('method', position);\n\n node.getRaw = function () {\n return {\n methodName: methodName,\n args: args\n };\n };\n\n node.getValue = function (state) {\n var context = state.activeContext.peek(),\n compiledArgs = [],\n method;\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to look up property \\'' + methodName + '\\' for an undefined context.'\n };\n }\n\n //handle safe navigation\n function maybeHandleNullSafeNavigation(member) {\n if (member === undefined || member === null) {\n if (nullSafeNavigation) {\n return null;\n }\n\n throw {\n name: 'NullPointerException',\n message: 'Method ' + methodName + ' does not exist.'\n };\n }\n\n return member;\n }\n\n //populate arguments\n args.forEach(function (arg) {\n // reset the active context to root context for evaluating argument\n var currentActiveContext = state.activeContext;\n state.activeContext = new _Stack.Stack();\n state.activeContext.push(state.rootContext);\n\n // evaluate argument\n compiledArgs.push(arg.getValue(state));\n\n // reset the active context\n state.activeContext = currentActiveContext;\n });\n\n //accessors might not be available\n if (methodName.substr(0, 3) === 'get' && !context[methodName]) {\n return maybeHandleNullSafeNavigation(context[methodName.charAt(3).toLowerCase() + methodName.substring(4)]);\n }\n if (methodName.substr(0, 3) === 'set' && !context[methodName]) {\n /*jshint -W093 */\n return context[methodName.charAt(3).toLowerCase() + methodName.substring(4)] = compiledArgs[0];\n /*jshint +W093 */\n }\n\n //array methods\n if (Array.isArray(context)) {\n //size() -> length\n if (methodName === 'size') {\n return context.length;\n }\n\n if (methodName === 'contains') {\n return context.includes(compiledArgs[0]);\n }\n }\n\n method = maybeHandleNullSafeNavigation(context[methodName]);\n if (method) {\n return method.apply(context, compiledArgs);\n }\n return null;\n };\n\n return node;\n}\n\nvar MethodReference = exports.MethodReference = {\n create: createNode\n};\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PropertyReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a simple property or field reference.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Clark Duplichien\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(nullSafeNavigation, propertyName, position) {\n var node = _SpelNode.SpelNode.create('property', position);\n\n node.getRaw = function () {\n return propertyName;\n };\n\n node.getValue = function (state) {\n var context = state.activeContext.peek();\n\n if (!context) {\n if (nullSafeNavigation) {\n return null;\n }\n\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to look up property \\'' + propertyName + '\\' for an undefined context.'\n };\n }\n\n if (context[propertyName] === undefined || context[propertyName] === null) {\n //handle safe navigation\n if (nullSafeNavigation) {\n return null;\n }\n\n //handle conversion of Java properties to JavaScript properties\n if (propertyName === 'size' && Array.isArray(context)) {\n return context.length;\n }\n\n throw {\n name: 'NullPointerException',\n message: 'Property \\'' + propertyName + '\\' does not exist.'\n };\n }\n\n return context[propertyName];\n };\n\n node.setValue = function (value, state) {\n var context = state.activeContext.peek();\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to assign property \\'' + propertyName + '\\' for an undefined context.'\n };\n }\n\n /*jshint -W093 */\n return context[propertyName] = value;\n /*jshint +W093 */\n };\n\n node.getName = function () {\n return propertyName;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar PropertyReference = exports.PropertyReference = {\n create: createNode\n};\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VariableReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a variable reference, eg. #someVar. Note this is different to a *local*\n * variable like $someVar\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(variableName, position) {\n var node = _SpelNode.SpelNode.create('variable', position);\n\n node.getRaw = function () {\n return variableName;\n };\n\n node.getValue = function (state) {\n var context = state.activeContext.peek(),\n locals = state.locals;\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to look up variable \\'' + variableName + '\\' for an undefined context.'\n };\n }\n\n //there are 2 keywords (root, this) that need to be dealt with\n if (variableName === 'this') {\n return context;\n }\n if (variableName === 'root') {\n return state.rootContext;\n }\n\n return locals[variableName];\n };\n\n node.setValue = function (value, state) {\n var locals = state.locals;\n\n /*jshint -W093 */\n return locals[variableName] = value;\n /*jshint +W093 */\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar VariableReference = exports.VariableReference = {\n create: createNode\n};\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CompoundExpression = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a DOT separated expression sequence, such as 'property1.property2.methodOne()'\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, expressionComponents) {\n var node = _SpelNode.SpelNode.create.apply(null, ['compound', position].concat(expressionComponents));\n\n function buildContextStack(state) {\n var childrenCount = node.getChildren().length,\n i;\n\n for (i = 0; i < childrenCount; i += 1) {\n if (node.getChildren()[i].getType() === 'indexer') {\n state.activeContext.push(state.activeContext.peek()[node.getChildren()[i].getValue(state)]);\n } else {\n state.activeContext.push(node.getChildren()[i].getValue(state));\n }\n }\n\n return function unbuildContextStack() {\n for (i = 0; i < childrenCount; i += 1) {\n state.activeContext.pop();\n }\n };\n }\n\n node.getValue = function (state) {\n var context = state.activeContext.peek(),\n value;\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to evaluate compound expression with an undefined context.'\n };\n }\n\n var unbuildContextStack = buildContextStack(state);\n\n value = state.activeContext.peek();\n\n unbuildContextStack();\n\n return value;\n };\n\n node.setValue = function (value, state) {\n var unbuildContextStack = buildContextStack(state),\n childCount = node.getChildren().length;\n\n state.activeContext.pop();\n\n value = node.getChildren()[childCount - 1].setValue(value, state);\n\n state.activeContext.push(null);\n\n unbuildContextStack();\n\n return value;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar CompoundExpression = exports.CompoundExpression = {\n create: createNode\n};\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Indexer = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nvar _Stack = __webpack_require__(1);\n\n/**\n * An Indexer can index into some proceeding structure to access a particular piece of it.\n * Supported structures are: strings / collections (lists/sets) / arrays.\n *\n * @author Andy Clement\n * @author Phillip Webb\n * @author Stephane Nicoll\n * @author Ben March\n * @since 0.2.0\n */\n\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nfunction createNode(position, expressionComponents) {\n var node = _SpelNode.SpelNode.create.apply(null, ['indexer', position].concat(expressionComponents));\n\n node.getValue = function (state) {\n var activeContext = state.activeContext,\n context,\n childrenCount = node.getChildren().length,\n i,\n value;\n\n state.activeContext = new _Stack.Stack();\n state.activeContext.push(state.rootContext);\n\n context = state.activeContext.peek();\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to evaluate compound expression with an undefined context.'\n };\n }\n\n for (i = 0; i < childrenCount; i += 1) {\n state.activeContext.push(node.getChildren()[i].getValue(state));\n }\n\n value = state.activeContext.peek();\n\n for (i = 0; i < childrenCount; i += 1) {\n state.activeContext.pop();\n }\n\n state.activeContext = activeContext;\n\n return value;\n };\n\n //node.setContext(node.getValue());\n\n return node;\n}\n\nvar Indexer = exports.Indexer = {\n create: createNode\n};\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Assign = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents assignment. An alternative to calling setValue() for an expression is to use\n * an assign.\n *\n *

    Example: 'someNumberProperty=42'\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, property, assignedValue) {\n var node = _SpelNode.SpelNode.create('assign', position, property, assignedValue);\n\n node.getValue = function (state) {\n var context = state.activeContext.peek();\n\n if (!context) {\n throw {\n name: 'ContextDoesNotExistException',\n message: 'Attempting to assign property \\'' + property.getValue(state) + '\\' for an undefined context.'\n };\n }\n\n return property.setValue(assignedValue.getValue(state), state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Assign = exports.Assign = {\n create: createNode\n};\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpEQ = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the equality operator.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-eq', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) === right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpEQ = exports.OpEQ = {\n create: createNode\n};\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpNE = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the not-equal operator.\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-ne', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) !== right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpNE = exports.OpNE = {\n create: createNode\n};\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpGE = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements greater-than-or-equal operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-ge', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) >= right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpGE = exports.OpGE = {\n create: createNode\n};\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpGT = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the greater-than operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-gt', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) > right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpGT = exports.OpGT = {\n create: createNode\n};\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpLE = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the less-than-or-equal operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-le', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) <= right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpLE = exports.OpLE = {\n create: createNode\n};\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpLT = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the less-than operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-lt', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) < right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpLT = exports.OpLT = {\n create: createNode\n};\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpPlus = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * The plus operator will:\n *

      \n *
    • add numbers\n *
    • concatenate strings\n *
    \n *\n *

    It can be used as a unary operator for numbers.\n * The standard promotions are performed when the operand types vary (double+int=double).\n * For other options it defers to the registered overloader.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ivo Smid\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-plus', position, left, right);\n\n node.getValue = function (state) {\n if (!right) {\n return +left.getValue(state);\n }\n //javascript will handle string concatenation or addition depending on types\n return left.getValue(state) + right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpPlus = exports.OpPlus = {\n create: createNode\n};\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpMinus = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * The minus operator supports:\n *

      \n *
    • subtraction of numbers\n *
    • subtraction of an int from a string of one character\n * (effectively decreasing that character), so 'd'-3='a'\n *
    \n *\n *

    It can be used as a unary operator for numbers.\n * The standard promotions are performed when the operand types vary (double-int=double).\n * For other options it defers to the registered overloader.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-minus', position, left, right);\n\n node.getValue = function (state) {\n if (!right) {\n return -left.getValue(state);\n }\n return left.getValue(state) - right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpMinus = exports.OpMinus = {\n create: createNode\n};\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpMultiply = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the {@code multiply} operator.\n *\n *

    Conversions and promotions are handled as defined in\n * Section 5.6.2 of the\n * Java Language Specification, with the addiction of {@code BigDecimal}/{@code BigInteger} management:\n *\n *

    If any of the operands is of a reference type, unboxing conversion (Section 5.1.8)\n * is performed. Then:
    \n * If either operand is of type {@code BigDecimal}, the other is converted to {@code BigDecimal}.
    \n * If either operand is of type double, the other is converted to double.
    \n * Otherwise, if either operand is of type float, the other is converted to float.
    \n * If either operand is of type {@code BigInteger}, the other is converted to {@code BigInteger}.
    \n * Otherwise, if either operand is of type long, the other is converted to long.
    \n * Otherwise, both operands are converted to type int.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Sam Brannen\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-multiply', position, left, right);\n\n node.getValue = function (state) {\n var leftValue = left.getValue(state),\n rightValue = right.getValue(state);\n\n if (typeof leftValue === 'number' && typeof rightValue === 'number') {\n return leftValue * rightValue;\n }\n\n //repeats (ex. 'abc' * 2 = 'abcabc')\n if (typeof leftValue === 'string' && typeof rightValue === 'number') {\n var s = '',\n i = 0;\n for (; i < rightValue; i += 1) {\n s += leftValue;\n }\n return s;\n }\n\n return null;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpMultiply = exports.OpMultiply = {\n create: createNode\n};\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpDivide = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements division operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-divide', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) / right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpDivide = exports.OpDivide = {\n create: createNode\n};\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpModulus = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the modulus operator.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-modulus', position, left, right);\n\n node.getValue = function (state) {\n return left.getValue(state) % right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpModulus = exports.OpModulus = {\n create: createNode\n};\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpPower = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * The power operator.\n *\n * @author Andy Clement\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, base, exp) {\n var node = _SpelNode.SpelNode.create('op-power', position, base, exp);\n\n node.getValue = function (state) {\n return Math.pow(base.getValue(state), exp.getValue(state));\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpPower = exports.OpPower = {\n create: createNode\n};\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpInc = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Increment operator. Can be used in a prefix or postfix form. This will throw\n * appropriate exceptions if the operand in question does not support increment.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, postfix, int) {\n var node = _SpelNode.SpelNode.create('op-inc', position, int);\n\n node.getValue = function (state) {\n var cur = int.getValue(state);\n int.setValue(cur + 1, state);\n if (postfix) {\n return cur;\n }\n return cur + 1;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpInc = exports.OpInc = {\n create: createNode\n};\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpDec = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Decrement operator. Can be used in a prefix or postfix form. This will throw\n * appropriate exceptions if the operand in question does not support decrement.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Giovanni Dall'Oglio Risso\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, postfix, int) {\n var node = _SpelNode.SpelNode.create('op-dec', position, int);\n\n node.getValue = function (state) {\n var cur = int.getValue(state);\n int.setValue(cur - 1, state);\n if (postfix) {\n return cur;\n }\n return cur - 1;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpDec = exports.OpDec = {\n create: createNode\n};\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpNot = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a NOT operation.\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Oliver Becker\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, expr) {\n var node = _SpelNode.SpelNode.create('op-not', position, expr);\n\n node.getValue = function (state) {\n return !expr.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpNot = exports.OpNot = {\n create: createNode\n};\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpAnd = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the boolean AND operation.\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Oliver Becker\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-and', position, left, right);\n\n node.getValue = function (state) {\n //double bang for javascript\n return !!left.getValue(state) && !!right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpAnd = exports.OpAnd = {\n create: createNode\n};\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpOr = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the boolean OR operation.\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Oliver Becker\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('op-or', position, left, right);\n\n node.getValue = function (state) {\n //double bang for javascript\n return !!left.getValue(state) || !!right.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpOr = exports.OpOr = {\n create: createNode\n};\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpMatches = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Implements the matches operator. Matches takes two operands:\n * The first is a String and the second is a Java regex.\n * It will return {@code true} when {@link #getValue} is called\n * if the first operand matches the regex.\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Chris Thielen\n * @since 3.0\n */\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('matches', position, left, right);\n\n /**\n * Check the first operand matches the regex specified as the second operand.\n * @param state the expression state\n * @return {@code true} if the first operand matches the regex specified as the\n * second operand, otherwise {@code false}\n * @throws EvaluationException if there is a problem evaluating the expression\n * (e.g. the regex is invalid)\n */\n node.getValue = function (state) {\n var data = left.getValue(state);\n var regexpString = right.getValue(state);\n\n try {\n var regexp = new RegExp(regexpString);\n return !!regexp.exec(data);\n } catch (error) {\n throw {\n name: 'EvaluationException',\n message: error.toString()\n };\n }\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpMatches = exports.OpMatches = {\n create: createNode\n};\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Ternary = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a ternary expression, for example: \"someCheck()?true:false\".\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, expression, ifTrue, ifFalse) {\n var node = _SpelNode.SpelNode.create('ternary', position, expression, ifTrue, ifFalse);\n\n node.getValue = function (state) {\n return expression.getValue(state) ? ifTrue.getValue(state) : ifFalse.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Ternary = exports.Ternary = {\n create: createNode\n};\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Elvis = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the elvis operator ?:. For an expression \"a?:b\" if a is not null, the value\n * of the expression is \"a\", if a is null then the value of the expression is \"b\".\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, expression, ifFalse) {\n var node = _SpelNode.SpelNode.create('elvis', position, expression, ifFalse);\n\n node.getValue = function (state) {\n return expression.getValue(state) !== null ? expression.getValue(state) : ifFalse.getValue(state);\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Elvis = exports.Elvis = {\n create: createNode\n};\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InlineList = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represent a list in an expression, e.g. '{1,2,3}'\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, elements) {\n var node = _SpelNode.SpelNode.create('list', position),\n list = [].concat(elements || []);\n\n node.getRaw = function () {\n return list;\n };\n\n node.getValue = function (state) {\n return list.map(function (element) {\n return element.getValue(state);\n });\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar InlineList = exports.InlineList = {\n create: createNode\n};\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InlineMap = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represent a map in an expression, e.g. '{name:'foo',age:12}'\n *\n * @author Andy Clement\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction createNode(position, elements) {\n var node = _SpelNode.SpelNode.create('map', position),\n mapPieces = [].concat(elements || []);\n\n node.getValue = function (state) {\n var key = true,\n keyValue = null,\n map = {};\n\n mapPieces.forEach(function (piece) {\n if (key) {\n //unquoted property names come as type \"property\" but should be treated as strings\n if (piece.getType() === 'property') {\n keyValue = piece.getName();\n } else {\n keyValue = piece.getValue(state);\n }\n } else {\n map[keyValue] = piece.getValue(state);\n }\n key = !key;\n });\n\n return map;\n };\n\n return node;\n} /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar InlineMap = exports.InlineMap = {\n create: createNode\n};\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Selection = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents selection over a map or collection.\n * For example: {1,2,3,4,5,6,7,8,9,10}.?{#isEven(#this) == 'y'} returns [2, 4, 6, 8, 10]\n *\n *

    Basically a subset of the input data is returned based on the\n * evaluation of the expression supplied as selection criteria.\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Sam Brannen\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction matches(element, expr, state) {\n var doesMatch = false;\n state.activeContext.push(element);\n doesMatch = expr.getValue(state);\n state.activeContext.pop();\n return doesMatch;\n}\n\nfunction selectFromArray(collection, whichElement, expr, state) {\n var newCollection = collection.filter(function (element) {\n return matches(element, expr, state);\n });\n\n switch (whichElement) {\n case 'ALL':\n return newCollection;\n case 'FIRST':\n return newCollection[0] || null;\n case 'LAST':\n if (newCollection.length) {\n return newCollection[newCollection.length - 1];\n }\n return null;\n }\n}\n\nfunction selectFromMap(collection, whichElement, expr, state) {\n var newCollection = {},\n entry,\n key,\n entries = [],\n returnValue = {};\n\n for (key in collection) {\n if (collection.hasOwnProperty(key)) {\n entry = {\n key: key,\n value: collection[key]\n };\n if (matches(entry, expr, state)) {\n entries.push(entry);\n }\n }\n }\n\n switch (whichElement) {\n case 'ALL':\n entries.forEach(function (entry) {\n newCollection[entry.key] = entry.value;\n });\n return newCollection;\n case 'FIRST':\n if (entries.length) {\n returnValue[entries[0].key] = entries[0].value;\n return returnValue;\n }\n return null;\n case 'LAST':\n if (entries.length) {\n returnValue[entries[entries.length - 1].key] = entries[entries.length - 1].value;\n return returnValue;\n }\n return null;\n }\n\n entries.forEach(function (entry) {\n newCollection[entry.key] = entry.value;\n });\n}\n\nfunction createNode(nullSafeNavigation, whichElement, position, expr) {\n var node = _SpelNode.SpelNode.create('selection', position, expr);\n\n node.getValue = function (state) {\n var collection = state.activeContext.peek();\n\n if (collection) {\n if (Array.isArray(collection)) {\n return selectFromArray(collection, whichElement, expr, state);\n } else if ((typeof collection === 'undefined' ? 'undefined' : _typeof(collection)) === 'object') {\n return selectFromMap(collection, whichElement, expr, state);\n }\n }\n\n return null;\n };\n\n return node;\n}\n\nvar Selection = exports.Selection = {\n create: createNode,\n FIRST: 'FIRST',\n LAST: 'LAST',\n ALL: 'ALL'\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Projection = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; /*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents projection, where a given operation is performed on all elements in some\n * input sequence, returning a new sequence of the same size. For example:\n * \"{1,2,3,4,5,6,7,8,9,10}.!{#isEven(#this)}\" returns \"[n, y, n, y, n, y, n, y, n, y]\"\n *\n * @author Andy Clement\n * @author Mark Fisher\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction projectCollection(collection, expr, state) {\n return collection.map(function (element) {\n var matches;\n state.activeContext.push(element);\n matches = expr.getValue(state);\n state.activeContext.pop();\n return matches;\n });\n}\n\nfunction createNode(nullSafeNavigation, position, expr) {\n var node = _SpelNode.SpelNode.create('projection', position, expr);\n\n node.getValue = function (state) {\n var collection = state.activeContext.peek(),\n entries = [],\n key;\n\n if (Array.isArray(collection)) {\n return projectCollection(collection, expr, state);\n } else if ((typeof collection === 'undefined' ? 'undefined' : _typeof(collection)) === 'object') {\n for (key in collection) {\n if (collection.hasOwnProperty(key)) {\n entries.push(collection[key]);\n }\n }\n return projectCollection(entries, expr, state);\n }\n\n return null;\n };\n\n return node;\n}\n\nvar Projection = exports.Projection = {\n create: createNode\n};\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpInstanceof = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * The operator 'instanceof' checks if an object is of the class specified in the right\n * hand operand, in the same way that {@code instanceof} does in Java.\n *\n * THIS OPERATOR IS NOT IMPLEMENTED AND WILL THROW AN EXCEPTION\n *\n * @author Andy Clement\n * @since 3.0\n */\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('instanceof', position, left, right);\n\n /**\n * Compare the left operand to see it is an instance of the type specified as the\n * right operand. The right operand must be a class.\n * @param state the expression state\n * @return {@code true} if the left operand is an instanceof of the right operand,\n * otherwise {@code false}\n * @throws EvaluationException if there is a problem evaluating the expression\n */\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'OpInstanceOf: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpInstanceof = exports.OpInstanceof = {\n create: createNode\n};\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OpBetween = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents the between operator. The left operand to between must be a single value and\n * the right operand must be a list - this operator returns true if the left operand is\n * between (using the registered comparator) the two elements in the list. The definition\n * of between being inclusive follows the SQL BETWEEN definition.\n *\n * @author Andy Clement\n * @since 3.0\n */\nfunction createNode(position, left, right) {\n var node = _SpelNode.SpelNode.create('between', position, left, right);\n\n /**\n * Returns a boolean based on whether a value is in the range expressed. The first\n * operand is any value whilst the second is a list of two values - those two values\n * being the bounds allowed for the first operand (inclusive).\n * @param state the expression state\n * @return true if the left operand is in the range specified, false otherwise\n * @throws EvaluationException if there is a problem evaluating the expression\n */\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'OpBetween: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar OpBetween = exports.OpBetween = {\n create: createNode\n};\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TypeReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a reference to a type, for example\n * {@code \"T(String)\" or \"T(com.somewhere.Foo)\"}.\n *\n * @author Andy Clement\n */\nfunction createNode(position, node, _dims) {\n var node = _SpelNode.SpelNode.create('typeref', position, node);\n\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'TypeReference: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar TypeReference = exports.TypeReference = {\n create: createNode\n};\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BeanReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * Represents a bean reference to a type, for example @foo or @'foo.bar'.\n * For a FactoryBean the syntax &foo can be used to access the factory itself.\n *\n * @author Andy Clement\n */\nfunction createNode(position, beanName) {\n var node = _SpelNode.SpelNode.create('beanref', position);\n\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'BeanReference: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar BeanReference = exports.BeanReference = {\n create: createNode\n};\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Identifier = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\n/**\n * An 'identifier' {@link SpelNode}.\n *\n * @author Andy Clement\n * @since 3.0\n */\nfunction createNode(identifierName, position) {\n var node = _SpelNode.SpelNode.create('identifier', position);\n\n node.getRaw = function () {\n return identifierName;\n };\n\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'Identifier: Not implemented'\n };\n };\n\n return node;\n} /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar Identifier = exports.Identifier = {\n create: createNode\n};\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.QualifiedIdentifier = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents a dot separated sequence of strings that indicate a package qualified type\n * reference.\n *\n *

    Example: \"java.lang.String\" as in the expression \"new java.lang.String('hello')\"\n *\n * @author Andy Clement\n * @since 3.0\n */\nfunction createNode(position, pieces) {\n var node = _SpelNode.SpelNode.create.apply(_SpelNode.SpelNode, ['qualifiedidentifier', position].concat(_toConsumableArray(pieces)));\n\n node.getRaw = function () {\n return pieces.map(function (p) {\n return p.getRaw();\n });\n };\n\n node.getValue = function (state) {\n throw {\n name: 'MethodNotImplementedException',\n message: 'QualifiedIdentifier: Not implemented'\n };\n };\n\n return node;\n}\n\nvar QualifiedIdentifier = exports.QualifiedIdentifier = {\n create: createNode\n};\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ConstructorReference = undefined;\n\nvar _SpelNode = __webpack_require__(0);\n\nvar _Stack = __webpack_require__(1);\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); } /*\n * Copyright 2002-2019 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents the invocation of a constructor. Either a constructor on a regular type or\n * construction of an array. When an array is constructed, an initializer can be specified.\n *\n *

    Examples:
    \n * new String('hello world')
    \n * new int[]{1,2,3,4}
    \n * new int[3] new int[3]{1,2,3}\n *\n * @author Andy Clement\n * @author Juergen Hoeller\n * @since 3.0\n */\nfunction createNode(position, dimensions, nodes) {\n var isArray = nodes !== undefined;\n var dimension;\n if (isArray) {\n dimension = dimensions.length && dimensions[0] && dimensions[0].getType() === 'number' ? dimensions[0].getValue() : null;\n } else {\n nodes = dimensions;\n dimensions = undefined;\n }\n\n var _nodes = nodes,\n _nodes2 = _toArray(_nodes),\n _qualifiedIdentifier = _nodes2[0],\n args = _nodes2.slice(1);\n\n var node = _SpelNode.SpelNode.create.apply(_SpelNode.SpelNode, ['constructorref', position].concat(_toConsumableArray(nodes)));\n\n node.getRaw = function () {\n return dimension;\n };\n\n node.getValue = function (state) {\n if (isArray && args.length <= 1) {\n var compiledArgs = [];\n\n //populate arguments\n args.forEach(function (arg) {\n // reset the active context to root context for evaluating argument\n var currentActiveContext = state.activeContext;\n state.activeContext = new _Stack.Stack();\n state.activeContext.push(state.rootContext);\n\n // evaluate argument\n compiledArgs.push(arg.getValue(state));\n\n // reset the active context\n state.activeContext = currentActiveContext;\n });\n\n if (args.length === 1) {\n return compiledArgs[0];\n } else {\n return dimension ? new Array(dimension) : [];\n }\n }\n\n throw {\n name: 'MethodNotImplementedException',\n message: 'ConstructorReference: Not implemented'\n };\n };\n\n return node;\n}\n\nvar ConstructorReference = exports.ConstructorReference = {\n create: createNode\n};\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\n * Copyright 2002-2015 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @author Ben March\n * @since 0.2.0\n */\n\nfunction create(authentication, principal) {\n var context = {};\n\n context.authentication = authentication || {};\n context.principal = principal || {};\n\n context.hasRole = function (role) {\n var hasRole = false;\n\n if (!role) {\n return false;\n }\n if (!context.authentication && !Array.isArray(context.authentication.authorities)) {\n return false;\n }\n\n context.authentication.authorities.forEach(function (grantedAuthority) {\n if (grantedAuthority.authority.toLowerCase() === role.toLowerCase()) {\n hasRole = true;\n }\n });\n\n return hasRole;\n };\n\n context.hasPermission = function () /*variable arguments*/{\n var args = Array.prototype.slice.call(arguments);\n\n if (args.length === 1) {\n return context.hasRole(args[0]);\n }\n };\n\n return context;\n}\n\nvar StandardContext = exports.StandardContext = {\n create: create\n};\n\n/***/ })\n/******/ ]);\n});","module.exports = require('./lib/SqlString');\n","var SqlString = exports;\n\nvar ID_GLOBAL_REGEXP = /`/g;\nvar QUAL_GLOBAL_REGEXP = /\\./g;\nvar CHARS_GLOBAL_REGEXP = /[\\0\\b\\t\\n\\r\\x1a\\\"\\'\\\\]/g; // eslint-disable-line no-control-regex\nvar CHARS_ESCAPE_MAP = {\n '\\0' : '\\\\0',\n '\\b' : '\\\\b',\n '\\t' : '\\\\t',\n '\\n' : '\\\\n',\n '\\r' : '\\\\r',\n '\\x1a' : '\\\\Z',\n '\"' : '\\\\\"',\n '\\'' : '\\\\\\'',\n '\\\\' : '\\\\\\\\'\n};\n\nSqlString.escapeId = function escapeId(val, forbidQualified) {\n if (Array.isArray(val)) {\n var sql = '';\n\n for (var i = 0; i < val.length; i++) {\n sql += (i === 0 ? '' : ', ') + SqlString.escapeId(val[i], forbidQualified);\n }\n\n return sql;\n } else if (forbidQualified) {\n return '`' + String(val).replace(ID_GLOBAL_REGEXP, '``') + '`';\n } else {\n return '`' + String(val).replace(ID_GLOBAL_REGEXP, '``').replace(QUAL_GLOBAL_REGEXP, '`.`') + '`';\n }\n};\n\nSqlString.escape = function escape(val, stringifyObjects, timeZone) {\n if (val === undefined || val === null) {\n return 'NULL';\n }\n\n switch (typeof val) {\n case 'boolean': return (val) ? 'true' : 'false';\n case 'number': return val + '';\n case 'object':\n if (Object.prototype.toString.call(val) === '[object Date]') {\n return SqlString.dateToString(val, timeZone || 'local');\n } else if (Array.isArray(val)) {\n return SqlString.arrayToList(val, timeZone);\n } else if (Buffer.isBuffer(val)) {\n return SqlString.bufferToString(val);\n } else if (typeof val.toSqlString === 'function') {\n return String(val.toSqlString());\n } else if (stringifyObjects) {\n return escapeString(val.toString());\n } else {\n return SqlString.objectToValues(val, timeZone);\n }\n default: return escapeString(val);\n }\n};\n\nSqlString.arrayToList = function arrayToList(array, timeZone) {\n var sql = '';\n\n for (var i = 0; i < array.length; i++) {\n var val = array[i];\n\n if (Array.isArray(val)) {\n sql += (i === 0 ? '' : ', ') + '(' + SqlString.arrayToList(val, timeZone) + ')';\n } else {\n sql += (i === 0 ? '' : ', ') + SqlString.escape(val, true, timeZone);\n }\n }\n\n return sql;\n};\n\nSqlString.format = function format(sql, values, stringifyObjects, timeZone) {\n if (values == null) {\n return sql;\n }\n\n if (!Array.isArray(values)) {\n values = [values];\n }\n\n var chunkIndex = 0;\n var placeholdersRegex = /\\?+/g;\n var result = '';\n var valuesIndex = 0;\n var match;\n\n while (valuesIndex < values.length && (match = placeholdersRegex.exec(sql))) {\n var len = match[0].length;\n\n if (len > 2) {\n continue;\n }\n\n var value = len === 2\n ? SqlString.escapeId(values[valuesIndex])\n : SqlString.escape(values[valuesIndex], stringifyObjects, timeZone);\n\n result += sql.slice(chunkIndex, match.index) + value;\n chunkIndex = placeholdersRegex.lastIndex;\n valuesIndex++;\n }\n\n if (chunkIndex === 0) {\n // Nothing was replaced\n return sql;\n }\n\n if (chunkIndex < sql.length) {\n return result + sql.slice(chunkIndex);\n }\n\n return result;\n};\n\nSqlString.dateToString = function dateToString(date, timeZone) {\n var dt = new Date(date);\n\n if (isNaN(dt.getTime())) {\n return 'NULL';\n }\n\n var year;\n var month;\n var day;\n var hour;\n var minute;\n var second;\n var millisecond;\n\n if (timeZone === 'local') {\n year = dt.getFullYear();\n month = dt.getMonth() + 1;\n day = dt.getDate();\n hour = dt.getHours();\n minute = dt.getMinutes();\n second = dt.getSeconds();\n millisecond = dt.getMilliseconds();\n } else {\n var tz = convertTimezone(timeZone);\n\n if (tz !== false && tz !== 0) {\n dt.setTime(dt.getTime() + (tz * 60000));\n }\n\n year = dt.getUTCFullYear();\n month = dt.getUTCMonth() + 1;\n day = dt.getUTCDate();\n hour = dt.getUTCHours();\n minute = dt.getUTCMinutes();\n second = dt.getUTCSeconds();\n millisecond = dt.getUTCMilliseconds();\n }\n\n // YYYY-MM-DD HH:mm:ss.mmm\n var str = zeroPad(year, 4) + '-' + zeroPad(month, 2) + '-' + zeroPad(day, 2) + ' ' +\n zeroPad(hour, 2) + ':' + zeroPad(minute, 2) + ':' + zeroPad(second, 2) + '.' +\n zeroPad(millisecond, 3);\n\n return escapeString(str);\n};\n\nSqlString.bufferToString = function bufferToString(buffer) {\n return 'X' + escapeString(buffer.toString('hex'));\n};\n\nSqlString.objectToValues = function objectToValues(object, timeZone) {\n var sql = '';\n\n for (var key in object) {\n var val = object[key];\n\n if (typeof val === 'function') {\n continue;\n }\n\n sql += (sql.length === 0 ? '' : ', ') + SqlString.escapeId(key) + ' = ' + SqlString.escape(val, true, timeZone);\n }\n\n return sql;\n};\n\nSqlString.raw = function raw(sql) {\n if (typeof sql !== 'string') {\n throw new TypeError('argument sql must be a string');\n }\n\n return {\n toSqlString: function toSqlString() { return sql; }\n };\n};\n\nfunction escapeString(val) {\n var chunkIndex = CHARS_GLOBAL_REGEXP.lastIndex = 0;\n var escapedVal = '';\n var match;\n\n while ((match = CHARS_GLOBAL_REGEXP.exec(val))) {\n escapedVal += val.slice(chunkIndex, match.index) + CHARS_ESCAPE_MAP[match[0]];\n chunkIndex = CHARS_GLOBAL_REGEXP.lastIndex;\n }\n\n if (chunkIndex === 0) {\n // Nothing was escaped\n return \"'\" + val + \"'\";\n }\n\n if (chunkIndex < val.length) {\n return \"'\" + escapedVal + val.slice(chunkIndex) + \"'\";\n }\n\n return \"'\" + escapedVal + \"'\";\n}\n\nfunction zeroPad(number, length) {\n number = number.toString();\n while (number.length < length) {\n number = '0' + number;\n }\n\n return number;\n}\n\nfunction convertTimezone(tz) {\n if (tz === 'Z') {\n return 0;\n }\n\n var m = tz.match(/([\\+\\-\\s])(\\d\\d):?(\\d\\d)?/);\n if (m) {\n return (m[1] === '-' ? -1 : 1) * (parseInt(m[2], 10) + ((m[3] ? parseInt(m[3], 10) : 0) / 60)) * 60;\n }\n return false;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n","var camel2hyphen = function (str) {\n return str\n .replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n })\n .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nexports.__esModule = true;\nvar style_to_object_1 = __importDefault(require(\"style-to-object\"));\nvar utilities_1 = require(\"./utilities\");\nfunction StyleToJS(style, options) {\n var output = {};\n if (!style || typeof style !== 'string') {\n return output;\n }\n (0, style_to_object_1[\"default\"])(style, function (property, value) {\n if (property && value) {\n output[(0, utilities_1.camelCase)(property, options)] = value;\n }\n });\n return output;\n}\nexports[\"default\"] = StyleToJS;\n","\"use strict\";\nexports.__esModule = true;\nexports.camelCase = void 0;\nvar CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9-]+$/;\nvar HYPHEN_REGEX = /-([a-z])/g;\nvar NO_HYPHEN_REGEX = /^[^-]+$/;\nvar VENDOR_PREFIX_REGEX = /^-(webkit|moz|ms|o|khtml)-/;\nvar MS_VENDOR_PREFIX_REGEX = /^-(ms)-/;\nvar skipCamelCase = function (property) {\n return !property ||\n NO_HYPHEN_REGEX.test(property) ||\n CUSTOM_PROPERTY_REGEX.test(property);\n};\nvar capitalize = function (match, character) {\n return character.toUpperCase();\n};\nvar trimHyphen = function (match, prefix) { return \"\".concat(prefix, \"-\"); };\nvar camelCase = function (property, options) {\n if (options === void 0) { options = {}; }\n if (skipCamelCase(property)) {\n return property;\n }\n property = property.toLowerCase();\n if (options.reactCompat) {\n property = property.replace(MS_VENDOR_PREFIX_REGEX, trimHyphen);\n }\n else {\n property = property.replace(VENDOR_PREFIX_REGEX, trimHyphen);\n }\n return property.replace(HYPHEN_REGEX, capitalize);\n};\nexports.camelCase = camelCase;\n","var parse = require('inline-style-parser');\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param {String} style - The inline style.\n * @param {Function} [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n var output = null;\n if (!style || typeof style !== 'string') {\n return output;\n }\n\n var declaration;\n var declarations = parse(style);\n var hasIterator = typeof iterator === 'function';\n var property;\n var value;\n\n for (var i = 0, len = declarations.length; i < len; i++) {\n declaration = declarations[i];\n property = declaration.property;\n value = declaration.value;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n output || (output = {});\n output[property] = value;\n }\n }\n\n return output;\n}\n\nmodule.exports = StyleToObject;\nmodule.exports.default = StyleToObject; // ESM support\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","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 memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|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|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|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|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 index = 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 index;\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","/**\r\n * Returns the object type of the given payload\r\n *\r\n * @param {*} payload\r\n * @returns {string}\r\n */\r\nfunction getType(payload) {\r\n return Object.prototype.toString.call(payload).slice(8, -1);\r\n}\r\n/**\r\n * Returns whether the payload is undefined\r\n *\r\n * @param {*} payload\r\n * @returns {payload is undefined}\r\n */\r\nfunction isUndefined(payload) {\r\n return getType(payload) === 'Undefined';\r\n}\r\n/**\r\n * Returns whether the payload is null\r\n *\r\n * @param {*} payload\r\n * @returns {payload is null}\r\n */\r\nfunction isNull(payload) {\r\n return getType(payload) === 'Null';\r\n}\r\n/**\r\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isPlainObject(payload) {\r\n if (getType(payload) !== 'Object')\r\n return false;\r\n return payload.constructor === Object && Object.getPrototypeOf(payload) === Object.prototype;\r\n}\r\n/**\r\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isObject(payload) {\r\n return isPlainObject(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is { [K in any]: never }}\r\n */\r\nfunction isEmptyObject(payload) {\r\n return isPlainObject(payload) && Object.keys(payload).length === 0;\r\n}\r\n/**\r\n * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isFullObject(payload) {\r\n return isPlainObject(payload) && Object.keys(payload).length > 0;\r\n}\r\n/**\r\n * Returns whether the payload is an any kind of object (including special classes or objects with different prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isAnyObject(payload) {\r\n return getType(payload) === 'Object';\r\n}\r\n/**\r\n * Returns whether the payload is an object like a type passed in < >\r\n *\r\n * Usage: isObjectLike<{id: any}>(payload) // will make sure it's an object and has an `id` prop.\r\n *\r\n * @template T this must be passed in < >\r\n * @param {*} payload\r\n * @returns {payload is T}\r\n */\r\nfunction isObjectLike(payload) {\r\n return isAnyObject(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a function (regular or async)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is AnyFunction}\r\n */\r\nfunction isFunction(payload) {\r\n return typeof payload === 'function';\r\n}\r\n/**\r\n * Returns whether the payload is an array\r\n *\r\n * @param {any} payload\r\n * @returns {payload is any[]}\r\n */\r\nfunction isArray(payload) {\r\n return getType(payload) === 'Array';\r\n}\r\n/**\r\n * Returns whether the payload is a an array with at least 1 item\r\n *\r\n * @param {*} payload\r\n * @returns {payload is any[]}\r\n */\r\nfunction isFullArray(payload) {\r\n return isArray(payload) && payload.length > 0;\r\n}\r\n/**\r\n * Returns whether the payload is a an empty array\r\n *\r\n * @param {*} payload\r\n * @returns {payload is []}\r\n */\r\nfunction isEmptyArray(payload) {\r\n return isArray(payload) && payload.length === 0;\r\n}\r\n/**\r\n * Returns whether the payload is a string\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isString(payload) {\r\n return getType(payload) === 'String';\r\n}\r\n/**\r\n * Returns whether the payload is a string, BUT returns false for ''\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isFullString(payload) {\r\n return isString(payload) && payload !== '';\r\n}\r\n/**\r\n * Returns whether the payload is ''\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isEmptyString(payload) {\r\n return payload === '';\r\n}\r\n/**\r\n * Returns whether the payload is a number (but not NaN)\r\n *\r\n * This will return `false` for `NaN`!!\r\n *\r\n * @param {*} payload\r\n * @returns {payload is number}\r\n */\r\nfunction isNumber(payload) {\r\n return getType(payload) === 'Number' && !isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a boolean\r\n *\r\n * @param {*} payload\r\n * @returns {payload is boolean}\r\n */\r\nfunction isBoolean(payload) {\r\n return getType(payload) === 'Boolean';\r\n}\r\n/**\r\n * Returns whether the payload is a regular expression (RegExp)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is RegExp}\r\n */\r\nfunction isRegExp(payload) {\r\n return getType(payload) === 'RegExp';\r\n}\r\n/**\r\n * Returns whether the payload is a Map\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Map}\r\n */\r\nfunction isMap(payload) {\r\n return getType(payload) === 'Map';\r\n}\r\n/**\r\n * Returns whether the payload is a WeakMap\r\n *\r\n * @param {*} payload\r\n * @returns {payload is WeakMap}\r\n */\r\nfunction isWeakMap(payload) {\r\n return getType(payload) === 'WeakMap';\r\n}\r\n/**\r\n * Returns whether the payload is a Set\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Set}\r\n */\r\nfunction isSet(payload) {\r\n return getType(payload) === 'Set';\r\n}\r\n/**\r\n * Returns whether the payload is a WeakSet\r\n *\r\n * @param {*} payload\r\n * @returns {payload is WeakSet}\r\n */\r\nfunction isWeakSet(payload) {\r\n return getType(payload) === 'WeakSet';\r\n}\r\n/**\r\n * Returns whether the payload is a Symbol\r\n *\r\n * @param {*} payload\r\n * @returns {payload is symbol}\r\n */\r\nfunction isSymbol(payload) {\r\n return getType(payload) === 'Symbol';\r\n}\r\n/**\r\n * Returns whether the payload is a Date, and that the date is valid\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Date}\r\n */\r\nfunction isDate(payload) {\r\n return getType(payload) === 'Date' && !isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a Blob\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Blob}\r\n */\r\nfunction isBlob(payload) {\r\n return getType(payload) === 'Blob';\r\n}\r\n/**\r\n * Returns whether the payload is a File\r\n *\r\n * @param {*} payload\r\n * @returns {payload is File}\r\n */\r\nfunction isFile(payload) {\r\n return getType(payload) === 'File';\r\n}\r\n/**\r\n * Returns whether the payload is a Promise\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Promise}\r\n */\r\nfunction isPromise(payload) {\r\n return getType(payload) === 'Promise';\r\n}\r\n/**\r\n * Returns whether the payload is an Error\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Error}\r\n */\r\nfunction isError(payload) {\r\n return getType(payload) === 'Error';\r\n}\r\n/**\r\n * Returns whether the payload is literally the value `NaN` (it's `NaN` and also a `number`)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is typeof NaN}\r\n */\r\nfunction isNaNValue(payload) {\r\n return getType(payload) === 'Number' && isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)\r\n *\r\n * @param {*} payload\r\n * @returns {(payload is boolean | null | undefined | number | string | symbol)}\r\n */\r\nfunction isPrimitive(payload) {\r\n return (isBoolean(payload) ||\r\n isNull(payload) ||\r\n isUndefined(payload) ||\r\n isNumber(payload) ||\r\n isString(payload) ||\r\n isSymbol(payload));\r\n}\r\n/**\r\n * Returns true whether the payload is null or undefined\r\n *\r\n * @param {*} payload\r\n * @returns {(payload is null | undefined)}\r\n */\r\nvar isNullOrUndefined = isOneOf(isNull, isUndefined);\r\nfunction isOneOf(a, b, c, d, e) {\r\n return function (value) {\r\n return a(value) || b(value) || (!!c && c(value)) || (!!d && d(value)) || (!!e && e(value));\r\n };\r\n}\r\n/**\r\n * Does a generic check to check that the given payload is of a given type.\r\n * In cases like Number, it will return true for NaN as NaN is a Number (thanks javascript!);\r\n * It will, however, differentiate between object and null\r\n *\r\n * @template T\r\n * @param {*} payload\r\n * @param {T} type\r\n * @throws {TypeError} Will throw type error if type is an invalid type\r\n * @returns {payload is T}\r\n */\r\nfunction isType(payload, type) {\r\n if (!(type instanceof Function)) {\r\n throw new TypeError('Type must be a function');\r\n }\r\n if (!Object.prototype.hasOwnProperty.call(type, 'prototype')) {\r\n throw new TypeError('Type is not a class');\r\n }\r\n // Classes usually have names (as functions usually have names)\r\n var name = type.name;\r\n return getType(payload) === name || Boolean(payload && payload.constructor === type);\r\n}\n\nexport { getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyArray, isEmptyObject, isEmptyString, isError, isFile, isFullArray, isFullObject, isFullString, isFunction, isMap, isNaNValue, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isOneOf, isPlainObject, isPrimitive, isPromise, isRegExp, isSet, isString, isSymbol, isType, isUndefined, isWeakMap, isWeakSet };\n","import { isPlainObject, isArray, isSymbol } from 'is-what';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __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}\n\nfunction assignProp(carry, key, newVal, originalObject) {\r\n var propType = originalObject.propertyIsEnumerable(key)\r\n ? 'enumerable'\r\n : 'nonenumerable';\r\n if (propType === 'enumerable')\r\n carry[key] = newVal;\r\n if (propType === 'nonenumerable') {\r\n Object.defineProperty(carry, key, {\r\n value: newVal,\r\n enumerable: false,\r\n writable: true,\r\n configurable: true\r\n });\r\n }\r\n}\r\nfunction mergeRecursively(origin, newComer, extensions) {\r\n // work directly on newComer if its not an object\r\n if (!isPlainObject(newComer)) {\r\n // extend merge rules\r\n if (extensions && isArray(extensions)) {\r\n extensions.forEach(function (extend) {\r\n newComer = extend(origin, newComer);\r\n });\r\n }\r\n return newComer;\r\n }\r\n // define newObject to merge all values upon\r\n var newObject = {};\r\n if (isPlainObject(origin)) {\r\n var props_1 = Object.getOwnPropertyNames(origin);\r\n var symbols_1 = Object.getOwnPropertySymbols(origin);\r\n newObject = __spreadArrays(props_1, symbols_1).reduce(function (carry, key) {\r\n // @ts-ignore\r\n var targetVal = origin[key];\r\n if ((!isSymbol(key) && !Object.getOwnPropertyNames(newComer).includes(key)) ||\r\n (isSymbol(key) && !Object.getOwnPropertySymbols(newComer).includes(key))) {\r\n assignProp(carry, key, targetVal, origin);\r\n }\r\n return carry;\r\n }, {});\r\n }\r\n var props = Object.getOwnPropertyNames(newComer);\r\n var symbols = Object.getOwnPropertySymbols(newComer);\r\n var result = __spreadArrays(props, symbols).reduce(function (carry, key) {\r\n // re-define the origin and newComer as targetVal and newVal\r\n var newVal = newComer[key];\r\n var targetVal = (isPlainObject(origin))\r\n // @ts-ignore\r\n ? origin[key]\r\n : undefined;\r\n // extend merge rules\r\n if (extensions && isArray(extensions)) {\r\n extensions.forEach(function (extend) {\r\n newVal = extend(targetVal, newVal);\r\n });\r\n }\r\n // When newVal is an object do the merge recursively\r\n if (targetVal !== undefined && isPlainObject(newVal)) {\r\n newVal = mergeRecursively(targetVal, newVal, extensions);\r\n }\r\n assignProp(carry, key, newVal, newComer);\r\n return carry;\r\n }, newObject);\r\n return result;\r\n}\r\n/**\r\n * Merge anything recursively.\r\n * Objects get merged, special objects (classes etc.) are re-assigned \"as is\".\r\n * Basic types overwrite objects or other basic types.\r\n *\r\n * @param {(IConfig | any)} origin\r\n * @param {...any[]} newComers\r\n * @returns the result\r\n */\r\nfunction merge(origin) {\r\n var newComers = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n newComers[_i - 1] = arguments[_i];\r\n }\r\n var extensions = null;\r\n var base = origin;\r\n if (isPlainObject(origin) && origin.extensions && Object.keys(origin).length === 1) {\r\n base = {};\r\n extensions = origin.extensions;\r\n }\r\n return newComers.reduce(function (result, newComer) {\r\n return mergeRecursively(result, newComer, extensions);\r\n }, base);\r\n}\n\nfunction concatArrays(originVal, newVal) {\r\n if (isArray(originVal) && isArray(newVal)) {\r\n // concat logic\r\n return originVal.concat(newVal);\r\n }\r\n return newVal; // always return newVal as fallback!!\r\n}\n\nexport default merge;\nexport { concatArrays, merge };\n","// @flow\n/* eslint-disable flowtype/object-type-delimiter */\n/* eslint-disable react/prop-types */\n\nimport React, { type Element } from 'react';\nimport { IS_BROWSER, DISABLE_SPEEDY, SC_ATTR, SC_VERSION_ATTR } from '../constants';\nimport StyledError from '../utils/error';\nimport { type ExtractedComp } from '../utils/extractCompsFromCSS';\nimport { splitByRules } from '../utils/stringifyRules';\nimport getNonce from '../utils/nonce';\n\nimport {\n type Names,\n addNameForId,\n resetIdNames,\n hasNameForId,\n stringifyNames,\n cloneNames,\n} from '../utils/styleNames';\n\nimport { sheetForTag, safeInsertRule, deleteRules } from '../utils/insertRuleHelpers';\n\ndeclare var __VERSION__: string;\n\nexport interface Tag {\n // $FlowFixMe: Doesn't seem to accept any combination w/ HTMLStyleElement for some reason\n styleTag: HTMLStyleElement | null;\n /* lists all ids of the tag */\n getIds(): string[];\n /* checks whether `name` is already injected for `id` */\n hasNameForId(id: string, name: string): boolean;\n /* inserts a marker to ensure the id's correct position in the sheet */\n insertMarker(id: string): T;\n /* inserts rules according to the ids markers */\n insertRules(id: string, cssRules: string[], name: ?string): void;\n /* removes all rules belonging to the id, keeping the marker around */\n removeRules(id: string): void;\n css(): string;\n toHTML(additionalAttrs: ?string): string;\n toElement(): Element<*>;\n clone(): Tag;\n /* used in server side rendering to indicate that the rules in the tag have been flushed to HTML */\n sealed: boolean;\n}\n\n/* this marker separates component styles and is important for rehydration */\nconst makeTextMarker = id => `\\n/* sc-component-id: ${id} */\\n`;\n\n/* add up all numbers in array up until and including the index */\nconst addUpUntilIndex = (sizes: number[], index: number): number => {\n let totalUpToIndex = 0;\n for (let i = 0; i <= index; i += 1) {\n totalUpToIndex += sizes[i];\n }\n\n return totalUpToIndex;\n};\n\n/* create a new style tag after lastEl */\nconst makeStyleTag = (target: ?HTMLElement, tagEl: ?Node, insertBefore: ?boolean) => {\n let targetDocument = document;\n if(target) targetDocument = target.ownerDocument;\n else if(tagEl) targetDocument = tagEl.ownerDocument;\n\n const el = targetDocument.createElement('style');\n el.setAttribute(SC_ATTR, '');\n el.setAttribute(SC_VERSION_ATTR, __VERSION__);\n\n const nonce = getNonce();\n if (nonce) {\n el.setAttribute('nonce', nonce);\n }\n\n /* Work around insertRule quirk in EdgeHTML */\n el.appendChild(targetDocument.createTextNode(''));\n\n if (target && !tagEl) {\n /* Append to target when no previous element was passed */\n target.appendChild(el);\n } else {\n if (!tagEl || !target || !tagEl.parentNode) {\n throw new StyledError(6);\n }\n\n /* Insert new style tag after the previous one */\n tagEl.parentNode.insertBefore(el, insertBefore ? tagEl : tagEl.nextSibling);\n }\n\n return el;\n};\n\n/* takes a css factory function and outputs an html styled tag factory */\nconst wrapAsHtmlTag = (css: () => string, names: Names) => (additionalAttrs: ?string): string => {\n const nonce = getNonce();\n const attrs = [\n nonce && `nonce=\"${nonce}\"`,\n `${SC_ATTR}=\"${stringifyNames(names)}\"`,\n `${SC_VERSION_ATTR}=\"${__VERSION__}\"`,\n additionalAttrs,\n ];\n\n const htmlAttr = attrs.filter(Boolean).join(' ');\n return ``;\n};\n\n/* takes a css factory function and outputs an element factory */\nconst wrapAsElement = (css: () => string, names: Names) => () => {\n const props = {\n [SC_ATTR]: stringifyNames(names),\n [SC_VERSION_ATTR]: __VERSION__,\n };\n\n const nonce = getNonce();\n if (nonce) {\n // $FlowFixMe\n props.nonce = nonce;\n }\n\n // eslint-disable-next-line react/no-danger\n return